一種異步FIFO的設(shè)計(jì)方法
3 保守的滿(mǎn)空判斷本文引用地址:http://butianyuan.cn/article/161677.htm
對(duì)于異步FIFO設(shè)計(jì),無(wú)論是采用握手還是直接同步的方法來(lái)獲取對(duì)方時(shí)鐘域的指針,對(duì)滿(mǎn)空信號(hào)的判斷總是“保守”的。
(1)滿(mǎn)空信號(hào)的復(fù)位(滿(mǎn)信號(hào)復(fù)位表示FIFO非滿(mǎn),空信號(hào)復(fù)位表示FIFO非空)和實(shí)際FIFO的情況相比有一定的延遲。例如,空信號(hào)是由讀者用讀指針與同步或握手后得到的寫(xiě)指針進(jìn)行比較產(chǎn)生的。由于同步或握手需要一定的時(shí)間,在這段時(shí)間,寫(xiě)者可能向FIFO寫(xiě)入新的數(shù)據(jù),寫(xiě)指針發(fā)生了變化,此時(shí)FIFO已經(jīng)非空,但此刻空信號(hào)仍然沒(méi)有復(fù)位。對(duì)于寫(xiě)者而言,滿(mǎn)信號(hào)的復(fù)位也會(huì)遇到相同的問(wèn)題。不過(guò),在通常情況下,F(xiàn)IFO只要確保不會(huì)向下溢出或向上溢出,復(fù)位的延遲就不會(huì)導(dǎo)致向下溢出或向上溢出,是可以接受的。
(2)滿(mǎn)空信號(hào)的置位(滿(mǎn)信號(hào)置位表示FIFO滿(mǎn),空信號(hào)置位表示FIFO空)和FIFO的實(shí)際情況相比沒(méi)有延遲。例如,同樣考慮FIFO為空的情況,讀者使用讀指針和同步或握手后的寫(xiě)指針進(jìn)行比較,由于FIFO為空,寫(xiě)動(dòng)作不會(huì)發(fā)生,相應(yīng)的寫(xiě)指針也保持不變,因此讀者獲得的就是當(dāng)時(shí)的寫(xiě)指針值。這樣就能馬上對(duì)空信號(hào)置位。同樣地,在FIFO滿(mǎn)的情況下,由于讀指針不發(fā)生變化,寫(xiě)者得到的是當(dāng)前的讀指針值,能夠馬上判斷FIFO為滿(mǎn)。
從以上兩點(diǎn)的討論可以得出結(jié)論,F(xiàn)IFO滿(mǎn)空判斷是保守的,寫(xiě)者可能在FIFO還有一定空間時(shí)停止寫(xiě)數(shù)據(jù),但不會(huì)在FIFO已經(jīng)滿(mǎn)了的情況下繼續(xù)寫(xiě)數(shù)據(jù);讀者可能在FIFO還有一些有效的數(shù)據(jù)時(shí)停止讀數(shù)據(jù),但是不會(huì)在FIFO已經(jīng)空的情況下繼續(xù)讀數(shù)據(jù)。保守的滿(mǎn)空判斷能夠滿(mǎn)足FIFO的功能要求。
4 二進(jìn)制指針和格雷碼指針的比較
二進(jìn)制指針和格雷碼指針兩者各有優(yōu)缺點(diǎn):
(1)由于通過(guò)握手同步,指針可以有多位同時(shí)變化,二進(jìn)制指針每次移動(dòng)可以跳躍過(guò)任意的長(zhǎng)度,這樣給FIFO的某些功能的實(shí)現(xiàn)帶來(lái)了方便(例如,硬件直接控制FIFO從緩存的數(shù)據(jù)流中丟棄一個(gè)出錯(cuò)的包);而格雷碼指針一般只能做遞增或遞減的移動(dòng)。
(3) 與直接同步相比,通過(guò)握手同步需要多時(shí)鐘周期,因此二進(jìn)制指針的滿(mǎn)空判斷比格雷碼指針的滿(mǎn)空判斷更“保守”;對(duì)于設(shè)計(jì)一個(gè)容量很大且由內(nèi)存構(gòu)成的FIFO來(lái)說(shuō),由于保守判斷而損失的空間可以忽略;但對(duì)于一個(gè)容量較小的FIFO而言,這種“保守”可能是無(wú)法接受的。例如,一個(gè)由8個(gè)寄存器組成的FIFO,對(duì)于格雷碼編碼的指針,最壞情況下,F(xiàn)IFO被寫(xiě)者判斷為滿(mǎn)時(shí),里面實(shí)際只存有五個(gè)數(shù)據(jù)(使用兩級(jí)同步器,可能需要三個(gè)周期同步,而在這三個(gè)周期內(nèi)都有讀動(dòng)作發(fā)生);而對(duì)與二進(jìn)制編碼的指針,F(xiàn)IFO被判為滿(mǎn)時(shí),F(xiàn)IFO里可能只有三個(gè)數(shù)據(jù)或更少(使用兩級(jí)同步器,最好的情況下,需要五個(gè)周期握手,而在這五個(gè)周期里都有讀動(dòng)作發(fā)生)。
設(shè)計(jì)者在兩種方法的比較選擇上應(yīng)該考慮到以上的幾點(diǎn)。
本文介紹的異步FIFO的設(shè)計(jì)方法的兩種不同盡路都能夠?qū)崿F(xiàn)功能正確的異步FIFO。對(duì)這兩種方法設(shè)計(jì)的FIFO的優(yōu)缺點(diǎn)所做的簡(jiǎn)要分析,對(duì)FIFO的設(shè)計(jì)具有指導(dǎo)意義。
評(píng)論