經(jīng)典異步FIFO設(shè)計方案的深入解讀_第1頁
經(jīng)典異步FIFO設(shè)計方案的深入解讀_第2頁
經(jīng)典異步FIFO設(shè)計方案的深入解讀_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

【W(wǎng)ord版本下載可任意編輯】經(jīng)典異步FIFO設(shè)計方案的深入解讀無論是數(shù)據(jù)通訊或者SOC(包括FPGA或者ASIC設(shè)計)設(shè)計,跨時鐘域(clockdomaincrossing)處理都是一件讓人很頭疼的事情,無論是在設(shè)計的前端或者步入設(shè)計的后端,都沒有很好的工具去做保證,只能靠設(shè)計人員的經(jīng)驗開展的保證,然而這個問題如果處理不好,你的整個設(shè)計可能就完全報廢,而怕的是你的設(shè)計時好時壞,有時穩(wěn)定,有時出錯,這個時候你甚至很難開展定位(尤其是上了FPGA開發(fā)板或者芯片已經(jīng)tapout了)。

一般而言,處理跨時鐘域的方法有這么幾種(大家在網(wǎng)上也都能找到資料,這些資料大都來自幾篇經(jīng)典的論文,中文方面的資料大都是翻譯過著理解這幾篇論文而來):少量的數(shù)據(jù)用邊沿檢測電路,或者脈沖檢測電路,或者電平檢測電路,或者兩級觸發(fā)器;比較多的數(shù)據(jù)時用異步FIFO。

本文側(cè)重講解本人對異步FIFO的深入理解,講解兩種經(jīng)典的異步FIFO的設(shè)計方案,這兩種方案來自一篇文章《simulationandsynthesistechniquesforasynchronousFIFOdesign》,大家可自行,設(shè)計思路這篇文章里面介紹的很詳細(xì),解釋的也很出色,我更多的是談?wù)勎业牟糠掷斫狻?/p>

1、異步FIFO設(shè)計的難點在哪里

1)寫地址和讀地址處于不同的時鐘域,如何比對寫地址和讀地址才能正確的產(chǎn)生空滿信號;

2)當(dāng)讀寫地址相同時,終究是讀空了還是寫滿了(因為存在你追我趕的情況,類似于一個圓環(huán))。

2、處理思路

1)對于難點1大家自然想到采用同步處理的方式,具體為將寫地址或者讀地址同步(例如利用兩級觸發(fā)器)到對方的時鐘域中,在相同的時鐘域中開展地址的比對,但是由于寫地址和讀地址很多時候并不止1bit,同時開展同步處理會增大錯誤的概率(如地址按0111->1000跳變,此時4bit都在變化,DFF開展同步時就很容易出錯),因而可以先將地址(二進制的)轉(zhuǎn)換為格雷碼(相鄰數(shù)據(jù)之間只有一個bit在變化),然后再開展同步,開展比照,這樣會大大減少錯誤的概率。

2)對于難點2可以在地址前面添加1bit用于標(biāo)志位開展區(qū)分,例如復(fù)位時,讀寫地址的標(biāo)志位都是0,如果寫完1輪而開始新的一輪時就將寫地址的標(biāo)志位換為1(讀也同樣道理變換),這樣可以通過判斷標(biāo)志位加上比照地址判斷是空還是滿,具體為當(dāng)讀寫地址的標(biāo)志位相同讀寫地址相同時為讀空,具體為當(dāng)讀寫地址的標(biāo)志位不同讀寫地址相同時為寫滿;另外也可以利用格雷碼的兩位00->01->10->11開展相位的區(qū)分,具體參考我給出的文章或者網(wǎng)絡(luò)資料,其實本質(zhì)上和上面的是一個道理。

3、經(jīng)典FIFO設(shè)計方案的解讀

1)同步讀寫地址(經(jīng)格雷碼轉(zhuǎn)換后)到對方的時鐘域

相比于直接同步二信號進制地址(先用握手,然后同步二進制地址)好處是格雷碼相鄰數(shù)據(jù)之間只有一個bit在變化,而二進制由于寫地址和讀地址很多時候并不止1bit,同時開展同步處理會增大錯誤的概率(如地址按0111->1000跳變,此時4bit都在變化,DFF開展同步時就很容易出錯);利用格雷碼開展同步,即使發(fā)生同步的時出錯也不會造成overrun和underrun的情況(因為同步后的數(shù)據(jù)必定小于等于同步前的數(shù)據(jù),即只可能1被同步為0,而不可能0被同步為1),例如當(dāng)前的讀地址到了6,寫地址到了8,地址8經(jīng)過同步后出錯而變成了6,這時會出現(xiàn)地址相同而判斷為讀空,不過沒關(guān)系,讀空則不讀,至少不會出現(xiàn)underrun的情況,隨著時間的推移地址8總會被采樣到;然而格雷碼也有缺點,只能連續(xù)變化遞增或者遞減(如果間隔變化就不符合格雷碼的特點了),所以設(shè)計的深度必須是2的n次冪,如果不是的話,需要重新產(chǎn)生編碼格雷碼,否則也會出現(xiàn)間隔變化不符合相鄰之間只有1bit變化的特點。

2)將讀寫地址(經(jīng)格雷碼轉(zhuǎn)換后)同步到一個組合邏輯電路中(異步比較)直接比較空滿,然后將空滿信號同步到各自對應(yīng)的模塊中

雖然這種電路會給fifo帶來不好的狀態(tài),例如已經(jīng)滿了wfull==1,但是這個時候讀走一個數(shù)據(jù),由于同步的延時性,導(dǎo)致這一段時間內(nèi)wfull==1一直不變(如果沒有同步帶來的延時應(yīng)該變?yōu)?的),rempty也會遇到同樣的問題,但是這種電路不會出現(xiàn)underrun和overrun的情況。

溫馨提示

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

評論

0/150

提交評論