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