異步FIFO的設(shè)計(jì)分析及詳細(xì)代碼_第1頁
異步FIFO的設(shè)計(jì)分析及詳細(xì)代碼_第2頁
異步FIFO的設(shè)計(jì)分析及詳細(xì)代碼_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

異步FIFO的設(shè)計(jì)分析及詳細(xì)代碼本文首先對(duì)異步FIFO設(shè)計(jì)的重點(diǎn)難點(diǎn)進(jìn)行分析,最后給出詳細(xì)代碼。一、FIFO簡單講解FIFO的本質(zhì)是RAM,先進(jìn)先出

重要參數(shù):fifo深度(簡單來說就是需要存多少個(gè)數(shù)據(jù))

fifo位寬(每個(gè)數(shù)據(jù)的位寬)FIFO有同步和異步兩種,同步即讀寫時(shí)鐘相同,異步即讀寫時(shí)鐘不相同同步FIFO用的少,可以作為數(shù)據(jù)緩存異步FIFO可以解決跨時(shí)鐘域的問題,在應(yīng)用時(shí)需根據(jù)實(shí)際情況考慮好fifo深度即可本次要設(shè)計(jì)一個(gè)異步FIFO,深度為8,位寬也是8.代碼是學(xué)習(xí)SimulationandSynthesisTechniquesforAsynchronousFIFODesignCliffordE.Cummings,SunburstDesign,Inc.這篇文章的,百度搜搜很容易找到,雖然是英文的但是寫的確實(shí)值得研究。下面我會(huì)對(duì)設(shè)計(jì)的要點(diǎn)進(jìn)行分析,也是對(duì)自己學(xué)習(xí)過程的一個(gè)總結(jié),希望能和大家交流共同進(jìn)步。二、設(shè)計(jì)要點(diǎn)解析1、讀空信號(hào)如何產(chǎn)生?寫滿信號(hào)如何產(chǎn)生?

讀空信號(hào):復(fù)位的時(shí)候,讀指針和寫指針相等,讀空信號(hào)有效(這里所說的指針其實(shí)就是讀地址、寫地址)

當(dāng)讀指針趕上寫指針的時(shí)候,寫指針等于讀指針意味著最后一個(gè)數(shù)據(jù)被讀完,此時(shí)讀空信號(hào)有效寫滿信號(hào):當(dāng)寫指針比讀指針多一圈時(shí),寫指針等于讀指針意味著寫滿了,此時(shí)寫滿信號(hào)有效

我們會(huì)發(fā)現(xiàn)讀空的條件是寫指針等于讀指針,寫滿的條件也是寫指針等于讀指針,到底如何區(qū)分呢?解決方法:將指針的位寬多定義一位

舉個(gè)例子說明:假設(shè)要設(shè)計(jì)深度為8的異步FIFO,此時(shí)定義讀寫指針只需要3位(2^3=8)就夠用了,

但是我們?cè)谠O(shè)計(jì)時(shí)將指針的位寬設(shè)計(jì)成4位,最高位的作用就是區(qū)分是讀空還是寫滿,具體理論1如下

當(dāng)最高位相同,其余位相同認(rèn)為是讀空

當(dāng)最高位不同,其余位相同認(rèn)為是寫滿注意:理論1試用的是二進(jìn)制數(shù)之間的空滿比較判斷。但是這篇文章中確不是這樣比較的,而是用的理論2,這里我解釋一下由于文章在設(shè)計(jì)中判斷是讀指針是否等于寫指針的時(shí)候,用的是讀寫指針的格雷碼形式(為什么用格雷碼后面解釋),此時(shí)若用上面的理論1就會(huì)出問題,因?yàn)楦窭状a是鏡像對(duì)稱的,若只根據(jù)最高位是否相同來區(qū)分是讀空還是寫滿是有問題的,詳情我會(huì)慢慢說,請(qǐng)看圖1綠色框起來的是0--15的格雷碼,用紅線將格雷碼分為上下兩部分通過觀察格雷碼相鄰位每次只有1位發(fā)生變化,且上下兩部分,除了最高位相反,其余位全都關(guān)于紅線鏡像對(duì)稱,

7-->8,格雷碼從0100-->1100,只有最高位發(fā)生變化其余位相同

6-->9,格雷碼從0101-->1101,只有最高位發(fā)生變化其余位相同以此類推,為什么要說鏡像對(duì)稱呢?試想如果讀指針指向8,寫指針指向7,我們可以知道此時(shí)此刻并不是讀空狀態(tài)也不是寫滿狀態(tài)但是如果在此刻套用理論1來判斷,看會(huì)出現(xiàn)什么情況,我們來套一下7的格雷碼與8的格雷碼的最高位不同,其余位相同,所以判斷出為寫滿。這就出現(xiàn)誤判了,同樣套用在6和9,5和10等也會(huì)出現(xiàn)誤判。因此用格雷碼判斷是否為讀空或?qū)憹M時(shí)應(yīng)使用理論2,看最高位和次高位是否相等,具體如下:

當(dāng)最高位和次高位相同,其余位相同認(rèn)為是讀空

當(dāng)最高位和次高位不同,其余位相同認(rèn)為是寫滿補(bǔ):理論2這個(gè)判斷方法適用于用格雷碼判斷比較空滿在實(shí)際設(shè)計(jì)中如果不想用格雷碼比較,就可以利用格雷碼將讀寫地址同步到一個(gè)時(shí)鐘域后再將格雷碼再次轉(zhuǎn)化成二進(jìn)制數(shù)再用理論1進(jìn)行比較就好了。。圖12、由于是異步FIFO的設(shè)計(jì),讀寫時(shí)鐘不一樣,在產(chǎn)生讀空信號(hào)和寫滿信號(hào)時(shí),會(huì)涉及到跨時(shí)鐘域的問題,如何解決?跨時(shí)鐘域的問題:上面我們已經(jīng)提到要通過比較讀寫指針來判斷產(chǎn)生讀空和寫滿信號(hào)

但是讀指針是屬于讀時(shí)鐘域的,寫指針是屬于寫時(shí)鐘域的,而異步FIFO的讀寫時(shí)鐘域不同,是異步的,

要是將讀時(shí)鐘域的讀指針與寫時(shí)鐘域的寫指針不做任何處理直接比較肯定是錯(cuò)誤的,因此我們需要進(jìn)行同步處理以后仔進(jìn)行比較

解決方法:兩級(jí)寄存器同步+格雷碼同步的過程有兩個(gè):

(1)將

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論