資源描述:
《基于fpga的異步fifo設(shè)計與實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、基于FPGA的異步FIFO設(shè)計與實現(xiàn)AsynchronousFIFODesignandImplementationBasedonFPGA(1.清華大學電子工程系;2.中國科學院電子學研究所)熊紅兵1陳琦2Xiong,HongbingChen,Qi摘要:異步FIFO是用來適配不同時鐘域之間的相位差和頻率飄移的重要模塊。本文設(shè)計的異步FIFO采用了格雷(GRAY)變換技術(shù)和雙端口RAM實現(xiàn)了不同時鐘域之間的數(shù)據(jù)無損傳輸。該結(jié)構(gòu)利用了GRAY變換的特點,使得整個系統(tǒng)可靠性高和抗干擾能力強,系統(tǒng)可以工作在讀寫時鐘頻率漂移達到正負300PPM的惡劣
2、環(huán)境。并且由于采用了模塊化結(jié)構(gòu),使得系統(tǒng)具有良好的可擴充性。關(guān)鍵字:FIFO;雙口RAM;格雷碼;指針解釋;指針生成Abstract:AsynchronousFIFOisanimportantmodulewhichalwaysusedtoabsorbthephaseandfrequencyoffsetbetweendifferentclockdomainincommunicationarea.Inthispaper,anFIFOmoduleisdesignedusingGrayconverttechnologyanddual-portra
3、m,whichrealizingscathelesstransmitbetweendifferentclockdomain.TheadvancesofGray(Onlyonebitchangesbetweenneighboringtwoclock)improvesthereliabilityandanti-jammingcapabilityofthesystem.Andthesystemcanworknormallyinthebadconditionwhichthephaseandfrequencyoffsettargetto300PPM
4、.ItisprovedbyworkthattheFIFOmodulecanfulfillthedemandsofreal-timeofdatatransmittingsystem,andthemoduleispowerfulenoughformoredataprocessinthefuture.Keywards:FIFO;Dual-portRAM;Gray;Pointerinterpreter;Pointergenerator1.引言FIFO(先進先出隊列)是一種在電子系統(tǒng)得到廣泛應(yīng)用的器件,通常用于數(shù)據(jù)的緩存和用于容納異步信號的頻率或相
5、位的差異。該器件用在SDH設(shè)備上時,處于指針解釋和指針生成之間,用來緩沖數(shù)據(jù)流,以實現(xiàn)不同時鐘速度的匹配。經(jīng)過指針解釋(PI)的凈荷數(shù)據(jù)流進入FIFO中,包括8位數(shù)據(jù)位和一位J1字節(jié)標志位;指針生成(PG)部分根據(jù)PG部分的payload信號將數(shù)據(jù)從FIFO讀出,并生成新的指針。FIFO可以根據(jù)其內(nèi)部數(shù)據(jù)的空滿程度,決定是否向PG發(fā)出正/負調(diào)整申請信號。FIFO主要實現(xiàn)如下功能:l處理AU3級數(shù)據(jù)流的緩沖;l提供級聯(lián)模式;l給出指針正/負調(diào)整申請信號,閾值可設(shè);l可以插入fullscan,保證較高的可測試性。2.FIFO工作原理圖1FIF
6、O工作原理示意圖5FIFO的工作原理可用圖1來表示。整個系統(tǒng)分為兩個完全獨立的時鐘域,即讀時鐘域和寫時間域。FIFO的存儲介質(zhì)為一塊雙端口RAM,F(xiàn)IFO深度為64個字節(jié)??梢酝瑫r進行讀寫操作。為避免對同一個地址進行讀寫操作,復(fù)位或者溢出時將讀寫地址錯開。由圖1可以看出,寫地址產(chǎn)生模塊根據(jù)寫時鐘和寫有效信號產(chǎn)生遞增的寫地址,讀地址產(chǎn)生模塊根據(jù)讀時鐘和讀有效信號產(chǎn)生遞增的讀地址。FIFO的操作如下:在寫時鐘wr_clk的升沿,當wren有效時,將wr_data寫入雙口RAM中寫地址對應(yīng)的位置中;始終將讀地址對應(yīng)的雙口RAM中的數(shù)據(jù)輸出到讀數(shù)
7、據(jù)總線上。這樣就實現(xiàn)了先進先出的功能。由于空標志和滿標志控制了FIFO的操作,因此標志錯誤會引起操作的錯誤。如上所述,標志的產(chǎn)生是通過對讀寫地址的比較產(chǎn)生的,當讀寫時鐘完全異步時,對讀寫地址進行比較時,可能得出錯誤的結(jié)果。例如,在讀地址變化過程中,由于讀地址的各位變化并不同步,計算讀寫地址的差值,可能產(chǎn)生錯誤的差值,導(dǎo)致產(chǎn)生錯誤的滿標志信號。若將未滿標志置為滿標志時,可能降低了應(yīng)用的性能,降低寫數(shù)據(jù)速率;而將滿置標志置為未滿時,執(zhí)行一次寫操作,則可能產(chǎn)生溢出錯誤,這對于實際應(yīng)用來說是絕對應(yīng)該避免的??諛酥拘盘柕漠a(chǎn)生也可能產(chǎn)生類似的錯誤。從
8、以上分析中可以看出,異步FIFO之所以會發(fā)生錯誤是國為在地址變化時,由于多位地址各位變化時間不同,異步時鐘對其進行采樣時數(shù)值可能為不同于地址變化喪后數(shù)值的其他值,異步產(chǎn)生錯誤的空標志和滿標志,