一種基于ASIC的高速異步FIFO設(shè)計(jì)
摘 要: 分析了異步FIFO的結(jié)構(gòu)和關(guān)鍵技術(shù),在與利用格雷碼作為異步FIFO指針編碼對(duì)比的基礎(chǔ)上,提出了一種采用移位碼編碼方式的FIFO,不僅減小了亞穩(wěn)態(tài)出現(xiàn)的概率,也簡(jiǎn)化了電路結(jié)構(gòu),降低了電路面積和功耗,在此基礎(chǔ)上也縮短了電路的關(guān)鍵路徑,工作頻率明顯提升。根據(jù)仿真和綜合結(jié)果顯示,本文設(shè)計(jì)的FIFO工作性能穩(wěn)定可靠。
關(guān)鍵詞: 專用集成電路(ASIC);異步FIFO;移位碼;亞穩(wěn)態(tài)
在現(xiàn)代集成電路設(shè)計(jì)中,隨著集成度的不斷提升,常常會(huì)遇到數(shù)據(jù)緩存與不同時(shí)鐘域之間數(shù)據(jù)傳遞的問題,在不同系統(tǒng)間如不能設(shè)計(jì)出有效的接口單元,將會(huì)產(chǎn)生數(shù)據(jù)傳輸過程中的復(fù)寫、丟失和無效數(shù)據(jù)的讀入等錯(cuò)誤,同時(shí)亞穩(wěn)態(tài)現(xiàn)象也會(huì)出現(xiàn)在不同時(shí)鐘域之間的數(shù)據(jù)傳遞過程中。此時(shí),如何實(shí)現(xiàn)數(shù)據(jù)高速有效的傳輸并克服跨時(shí)鐘域間數(shù)據(jù)傳遞時(shí)的亞穩(wěn)態(tài)成為一個(gè)關(guān)鍵點(diǎn)問題。由于異步FIFO(First In First Out)能夠有效解決不同傳輸速度和不同時(shí)鐘域之間數(shù)據(jù)傳遞的問題,異步FIFO在實(shí)際電路中得到廣泛的運(yùn)用。本文介紹一種基于ASIC的高速異步FIFO的設(shè)計(jì)和實(shí)現(xiàn)方案。
1 異步FIFO的基本功能和結(jié)構(gòu)
異步FIFO指在不同時(shí)鐘域之間,由一個(gè)時(shí)鐘域?qū)懭?,待寫入?shù)據(jù)穩(wěn)定之后,由另一個(gè)時(shí)鐘域讀出。圖1為異步FIFO的基本結(jié)構(gòu)框圖,F(xiàn)IFO的存儲(chǔ)單元采用雙端口RAM的解決方式,同步模塊SYNC完成異步讀寫時(shí)鐘域之間指針信號(hào)的同步過程,將同步前后的指針?biāo)偷絯rfull、rdempty模塊,產(chǎn)生wrfull、rdempty信號(hào),從而構(gòu)成一個(gè)完整的FIFO。
表1所示為圖1中各信號(hào)的具體意義。
2 異步信號(hào)同步的關(guān)鍵問題
在不同時(shí)鐘域之間傳遞的信號(hào),由于兩個(gè)時(shí)鐘之間沒有清楚的相位和頻率關(guān)系,很容易出現(xiàn)亞穩(wěn)態(tài)現(xiàn)象。亞穩(wěn)態(tài)是指觸發(fā)器無法在某個(gè)規(guī)定的時(shí)間段內(nèi)達(dá)到一個(gè)可以確認(rèn)的狀態(tài)。當(dāng)一個(gè)觸發(fā)器進(jìn)入亞穩(wěn)態(tài)時(shí),觸發(fā)器會(huì)輸出一些中間電平,或者可能處于振蕩狀態(tài)。在數(shù)字電路中,如果將亞穩(wěn)態(tài)信號(hào)直接應(yīng)用于后續(xù)的組合邏輯,將會(huì)產(chǎn)生難以預(yù)測(cè)的結(jié)果。圖2所示為異步時(shí)鐘的亞穩(wěn)態(tài)現(xiàn)象,圖中CLK_A和CLK_B為異步時(shí)鐘。
亞穩(wěn)態(tài)是不可避免的,但可以采用合適的方法將其降低到一個(gè)合適的低概率水平。
首先可以從讀寫地址指針的編碼入手。若采用傳統(tǒng)的二進(jìn)制計(jì)數(shù),地址指針的每次增加,則有可能出現(xiàn)從全1到全0的所有位的同時(shí)跳變,這種情況使得出現(xiàn)亞穩(wěn)態(tài)的概率大大增加。本文將采用一種特殊的編碼方式,使得地址指針的每次增加只會(huì)出現(xiàn)一位改變,從而減小亞穩(wěn)態(tài)發(fā)生的概率。
其次可以采用兩級(jí)鎖存的辦法。如圖3所示,在一個(gè)信號(hào)進(jìn)入另一個(gè)時(shí)鐘域前,將該信號(hào)用兩級(jí)觸發(fā)器進(jìn)行鎖存,即使第一級(jí)觸發(fā)器的輸出出現(xiàn)亞穩(wěn)態(tài),經(jīng)過一個(gè)時(shí)鐘周期之后,進(jìn)入第二級(jí)觸發(fā)器的信號(hào)已經(jīng)穩(wěn)定到一個(gè)確定的電平,從而兩級(jí)鎖存的輸出可以有效減小亞穩(wěn)態(tài)發(fā)生的概率。
3 異步FIFO的具體結(jié)構(gòu)
3.1 讀寫指針