關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計(jì)應(yīng)用 > 一種異步FIFO的設(shè)計(jì)方法

一種異步FIFO的設(shè)計(jì)方法

作者: 時(shí)間:2011-08-01 來源:網(wǎng)絡(luò) 收藏

3 保守的滿空判斷

本文引用地址:http://2s4d.com/article/161677.htm

對于,無論是采用握手還是直接同步的來獲取對方時(shí)鐘域的指針,對滿空信號的判斷總是“保守”的。

(1)滿空信號的復(fù)位(滿信號復(fù)位表示非滿,空信號復(fù)位表示非空)和實(shí)際FIFO的情況相比有一定的延遲。例如,空信號是由讀者用讀指針與同步或握手后得到的寫指針進(jìn)行比較產(chǎn)生的。由于同步或握手需要一定的時(shí)間,在這段時(shí)間,寫者可能向FIFO寫入新的數(shù)據(jù),寫指針發(fā)生了變化,此時(shí)FIFO已經(jīng)非空,但此刻空信號仍然沒有復(fù)位。對于寫者而言,滿信號的復(fù)位也會遇到相同的問題。不過,在通常情況下,F(xiàn)IFO只要確保不會向下溢出或向上溢出,復(fù)位的延遲就不會導(dǎo)致向下溢出或向上溢出,是可以接受的。

(2)滿空信號的置位(滿信號置位表示FIFO滿,空信號置位表示FIFO空)和FIFO的實(shí)際情況相比沒有延遲。例如,同樣考慮FIFO為空的情況,讀者使用讀指針和同步或握手后的寫指針進(jìn)行比較,由于FIFO為空,寫動作不會發(fā)生,相應(yīng)的寫指針也保持不變,因此讀者獲得的就是當(dāng)時(shí)的寫指針值。這樣就能馬上對空信號置位。同樣地,在FIFO滿的情況下,由于讀指針不發(fā)生變化,寫者得到的是當(dāng)前的讀指針值,能夠馬上判斷FIFO為滿。

從以上兩點(diǎn)的討論可以得出結(jié)論,F(xiàn)IFO滿空判斷是保守的,寫者可能在FIFO還有一定空間時(shí)停止寫數(shù)據(jù),但不會在FIFO已經(jīng)滿了的情況下繼續(xù)寫數(shù)據(jù);讀者可能在FIFO還有一些有效的數(shù)據(jù)時(shí)停止讀數(shù)據(jù),但是不會在FIFO已經(jīng)空的情況下繼續(xù)讀數(shù)據(jù)。保守的滿空判斷能夠滿足FIFO的功能要求。

4 二進(jìn)制指針和格雷碼指針的比較

二進(jìn)制指針和格雷碼指針兩者各有優(yōu)缺點(diǎn):

(1)由于通過握手同步,指針可以有多位同時(shí)變化,二進(jìn)制指針每次移動可以跳躍過任意的長度,這樣給FIFO的某些功能的實(shí)現(xiàn)帶來了方便(例如,硬件直接控制FIFO從緩存的數(shù)據(jù)流中丟棄一個出錯的包);而格雷碼指針一般只能做遞增或遞減的移動。

(3) 與直接同步相比,通過握手同步需要多時(shí)鐘周期,因此二進(jìn)制指針的滿空判斷比格雷碼指針的滿空判斷更“保守”;對于一個容量很大且由內(nèi)存構(gòu)成的FIFO來說,由于保守判斷而損失的空間可以忽略;但對于一個容量較小的FIFO而言,這種“保守”可能是無法接受的。例如,一個由8個寄存器組成的FIFO,對于格雷碼編碼的指針,最壞情況下,F(xiàn)IFO被寫者判斷為滿時(shí),里面實(shí)際只存有五個數(shù)據(jù)(使用兩級同步器,可能需要三個周期同步,而在這三個周期內(nèi)都有讀動作發(fā)生);而對與二進(jìn)制編碼的指針,F(xiàn)IFO被判為滿時(shí),F(xiàn)IFO里可能只有三個數(shù)據(jù)或更少(使用兩級同步器,最好的情況下,需要五個周期握手,而在這五個周期里都有讀動作發(fā)生)。

者在兩種的比較選擇上應(yīng)該考慮到以上的幾點(diǎn)。

本文介紹的FIFO的設(shè)計(jì)的兩種不同盡路都能夠?qū)崿F(xiàn)功能正確的FIFO。對這兩種方法設(shè)計(jì)的FIFO的優(yōu)缺點(diǎn)所做的簡要分析,對FIFO的設(shè)計(jì)具有指導(dǎo)意義。


上一頁 1 2 下一頁

關(guān)鍵詞: 方法 設(shè)計(jì) FIFO 異步

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉