王小娟
【摘要】 簡單的介紹了FPGA和異步FIFO的特點(diǎn),針對在跨時鐘域傳遞數(shù)據(jù)的系統(tǒng)中亞穩(wěn)態(tài)的產(chǎn)生,采用異步FIFO(First In First Out,先進(jìn)先出隊(duì)列)口來緩沖傳輸?shù)臄?shù)據(jù),以克服亞穩(wěn)態(tài),保證數(shù)據(jù)的正確傳輸。由于常規(guī)異步FIFO模塊中的RAM存儲器讀寫尋址指針常采用格雷碼計(jì)數(shù)器以及“空滿”控制邏輯的存在,將使通過這兩個模塊的信號通路延時對整個模塊的工作頻率造成制約。提出了一種在FPGA內(nèi)實(shí)現(xiàn)高速異步FIFO的方法.使模塊的工作頻率得到一定提高。
【關(guān)鍵字】 FPGA FIFO
一、FPGA簡介
FPGA(Field-Programmable Gate Array)[1],即現(xiàn)場可編程門陣列,是專用集成電路(ASIC)中集成度最高的一種,用戶可對FPGA內(nèi)部的邏輯模塊和I/O模塊重新配置,以實(shí)現(xiàn)用戶的邏輯,因而也被用于對CPU的模擬。
用戶對FPGA的編程數(shù)據(jù)放在Flash芯片中,通過上電加載到FPGA中,對其進(jìn)行初始化。也可在線對其編程,實(shí)現(xiàn)系統(tǒng)在線重構(gòu),這一特性可以構(gòu)建一個根據(jù)計(jì)算任務(wù)不同而實(shí)時定制的CPU,這是當(dāng)今研究的熱門領(lǐng)域。既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
二、異步FIFO簡介
FIFO ( First In FirstOut)[2],使用在需要產(chǎn)時數(shù)據(jù)接口的部分,用來存儲、緩沖在兩個異步時鐘之間的數(shù)據(jù)傳輸在現(xiàn)代的集成電路芯片中,隨著設(shè)計(jì)規(guī)模的不斷擴(kuò)大,一個系統(tǒng)中往往含有數(shù)個時鐘,因而出現(xiàn)了跨不同時鐘區(qū)域進(jìn)行異步數(shù)據(jù)傳輸?shù)囊蟆?/p>
異步FIFO ( First In FirstOut)是解決這個問題一種簡便、快捷的解決方案。根據(jù)FIFO的工作時鐘,可將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘,在時鐘沿來臨時同時進(jìn)行讀寫操作;異步FIFO是指讀寫時鐘不是同一個時鐘,而是相互獨(dú)立的。實(shí)際上,工作在同一時鐘的FIFO很少用到,多數(shù)都是讀寫時鐘獨(dú)立的異步FIFO。
本文設(shè)計(jì)的異步FIFO (First In First Out,先進(jìn)先出隊(duì)列)是一種先進(jìn)先出的電路,使用在需要實(shí)時數(shù)據(jù)接口的部分[3],用來存儲、緩沖在兩個異步時鐘之間的數(shù)據(jù)傳輸。在異步電路中,由于時鐘之間周期和相位完全獨(dú)立,因而數(shù)據(jù)的丟失概率不為零。
三、異步FIFO的工作原理
常規(guī)的FIFO包括:雙口RAM存儲器,“空滿”控制邏輯,存儲器讀寫尋址指針等。訪問FIFO時不需要地址線,只需要數(shù)據(jù)線和讀寫控制信號線,且數(shù)據(jù)地址由內(nèi)部讀寫指針自動加1完成,因此利用FIFO實(shí)現(xiàn)數(shù)據(jù)的緩存具有接口簡單、讀寫方便的優(yōu)點(diǎn)。
異步FIFO一般可以分為4個模塊[4]:寫地址模塊、讀地址模塊、數(shù)據(jù)存儲模塊以及空/滿標(biāo)志位產(chǎn)生模塊。數(shù)據(jù)存儲模塊在FPGA中是一個雙口RAM,可以同時進(jìn)行讀寫操作。
四、異步FIFO設(shè)計(jì)方案
在數(shù)字集成電路中,觸發(fā)器要滿足setup/hold的時間要求。當(dāng)一個信號被寄存器鎖存時,如果信號和時鐘之間不滿足這個要求,Q端的值是不確定的,并且在未知的時刻會固定到高電平或低電平。
這個過程稱為亞穩(wěn)態(tài)(Metastability) [5]。亞穩(wěn)態(tài)對會使異步FIFO的讀寫地址發(fā)生錯誤,產(chǎn)生誤讀或者誤寫。為此異步FIFO設(shè)計(jì)中亞穩(wěn)態(tài)問題也是一個比較重要的問題。亞穩(wěn)態(tài)不可能完全消除,只能使其出現(xiàn)的概減小具體方法如下:對寫地址/讀地址采用格雷碼,同步多個異步輸入信號出現(xiàn)亞穩(wěn)態(tài)的概率遠(yuǎn)遠(yuǎn)大于同步一個異步信號的概率。對多個觸發(fā)器的輸出所組成的寫地址/讀地址可以采用格雷碼。由格雷碼每次只變化一位,采用格雷碼[6]可以有效地減少亞穩(wěn)態(tài)的產(chǎn)生。
五、結(jié)論
通過以上實(shí)驗(yàn)測試結(jié)果表明,在高速的圖像數(shù)據(jù)采集系統(tǒng)中,F(xiàn)IFO既滿足高速采集的需要,同時也減少了亞穩(wěn)態(tài)此模型實(shí)現(xiàn)了高可靠性、高速的異步FIFO存儲器,同時由于基于verilog語言實(shí)現(xiàn),使用者可以根據(jù)不同的設(shè)計(jì)要求,靈活的修改參數(shù)生成各種模式,以及不同大小的異步FIFO存儲器,所以這種設(shè)計(jì)方法也具備較高的可移植性、可重構(gòu)性.以上實(shí)驗(yàn)研究表明,采用基于FPGA的異步FIFO存儲器能很好地解決在異步數(shù)字系統(tǒng)設(shè)計(jì)中高可靠性及高速的要求,提高了系統(tǒng)的效率,其思想和方法,具有一定的應(yīng)用價值和應(yīng)用前景。
參 考 文 獻(xiàn)
[1]郭錚 ;劉文怡;馮妮. 基于FPGA多通道高速數(shù)據(jù)采集存儲器設(shè)計(jì).電視技術(shù)2012 36(17): 55-57
[2]王凱;孫鋒 FIFO的設(shè)計(jì)分析[J]. 電子器件 2014 37( 3): 431-434
[3]朱東杰 ;邵根富 ;黃國輝;葉曉平 ;游張平;李培遠(yuǎn).基于FIFO的GPRSDTU設(shè)計(jì). 工業(yè)控制計(jì)算機(jī). 2015 0(10):59-60
[4]張玉平 ;葉圣江. 基于FPGA的虛擬FIFO改進(jìn)設(shè)計(jì).沈陽工業(yè)大學(xué)學(xué)報. 2016 38(3): 298-303
[5]劉亞兵 ;馬瑞卿;張慶超;張震;白浩.基于FIFO的串口通信模式研究.計(jì)算機(jī)測量與控制.2014 22(7):2301-2303
[6]馬志剛 ;劉欣;劉文怡 ;翟成瑞. 基于高速FIFO的遠(yuǎn)程圖像數(shù)據(jù)采集存儲系統(tǒng).電子器件 2015 38(1): 152-155