一種節(jié)能型可升級異步FIFO的FPGA實現(xiàn)
現(xiàn)代數(shù)字系統(tǒng)中,異步FIFO是一種被廣泛應用于跨時鐘域進行數(shù)據(jù)傳輸?shù)挠行Х绞健.惒?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/FIFO">FIFO主要應用于兩種不同時鐘域的數(shù)據(jù)傳輸,這意味著數(shù)據(jù)的寫入在一個時鐘域,而數(shù)據(jù)的讀出卻在另一個時鐘域,兩個時鐘完全異步[1]。現(xiàn)代通信系統(tǒng)中,特別是在移動通信系統(tǒng)中,人們對于節(jié)能型的產(chǎn)品提出了更高的要求。隨著技術(shù)的發(fā)展,FPGA的技術(shù)、性能、穩(wěn)定性等指標已經(jīng)得到很大提高,同時FPGA廠商為不同的應用開發(fā)提供了各種IP核,大大減少了產(chǎn)品的開發(fā)周期,在各大FPGA廠商中,Xilinx的IP核應用比較廣泛。但其IP核卻沒有關(guān)于異步FIFO節(jié)能方面的設計。在文獻[2]中對于FIFO的設計有節(jié)能方面的改進,由于其主要應用于ASIC設計,對于FPGA中的應用并不完全適用。
本文引用地址:http://butianyuan.cn/article/265945.htm本文提出了一種更加節(jié)能而且能應用于高速應用的FPGA設計,同時本文提出一種改進的格雷碼二進制碼轉(zhuǎn)換結(jié)構(gòu),在此基礎上利用Xilinx的FPGA芯片現(xiàn)有的數(shù)字時鐘管理模塊實現(xiàn)節(jié)能方面改進。本文所提出的結(jié)構(gòu)不依賴于現(xiàn)有的IP核,而且可以容易地建立自己的IP核。實際應用中,通過FPGA與DSP進行數(shù)據(jù)傳輸可工作于高達100/153.6 MHz讀/寫時鐘域。
1 FIFO的主要結(jié)構(gòu)
1.1 主要的FIFO結(jié)構(gòu)
在所有FIFO結(jié)構(gòu)中,首先要提到的是單時鐘域的同步FIFO,雖然同步FIFO在現(xiàn)在的實際應用中很少被使用,但是其結(jié)構(gòu)將有助于理解兩個時鐘域的異步FIFO的實現(xiàn)。主要有線性結(jié)構(gòu)的FIFO和線性可調(diào)結(jié)構(gòu)的FIFO[2]。其結(jié)構(gòu)圖如圖1。
線性可調(diào)FIFO只是在線性FIFO的基礎上增加了控制信號以便于容量擴展。從圖1中可以看出,無論線性的FIFO還是線性可調(diào)結(jié)構(gòu)的FIFO,都是由一些移位寄存器所組成,其主要優(yōu)點是結(jié)構(gòu)簡單容易實現(xiàn)。從數(shù)據(jù)的輸入到輸出這一過程看,數(shù)據(jù)都要經(jīng)過每個寄存器,當FIFO容量變大時,這類結(jié)構(gòu)的缺點也很突出,如數(shù)據(jù)從輸入到輸出的延時時間長,而且能耗比較大。
為了克服以上FIFO結(jié)構(gòu)的缺點,人們提出了很多改善的結(jié)構(gòu),其中有并行的FIFO、樹型FIFO、折疊型的FIFO[2]、環(huán)型結(jié)構(gòu)的FIFO[1]。在這些結(jié)構(gòu)中,由于環(huán)型的FIFO結(jié)構(gòu)設計相對容易而被廣泛采用。本文實現(xiàn)的是基于環(huán)型的FIFO結(jié)構(gòu),并在此基礎上進行了節(jié)能型的設計改進,使之應用于現(xiàn)代FPGA中。環(huán)型結(jié)構(gòu)的FIFO是一種雙時鐘域的FIFO結(jié)構(gòu),數(shù)據(jù)在不同的時鐘域中傳輸時需要考慮數(shù)據(jù)傳輸?shù)挠行?,同時必需克服數(shù)據(jù)在不同的時鐘中傳輸時而產(chǎn)生的亞穩(wěn)態(tài)。
1.2 亞穩(wěn)態(tài)
數(shù)據(jù)在傳輸?shù)倪^程中,接收寄存器收到變化的數(shù)據(jù)時,數(shù)據(jù)的改變發(fā)生在時鐘觸發(fā)沿而導致接受數(shù)據(jù)出現(xiàn)不穩(wěn)定的狀態(tài)[3]稱為亞穩(wěn)態(tài),如圖2上部分所示。因此在異步時鐘之間進行數(shù)據(jù)傳輸常常會用到同步單元。單字節(jié)同步單元比較簡單,而其常用的同步單元的結(jié)構(gòu)如圖2下半部分所示。在多位的跨時鐘域數(shù)據(jù)傳輸中,情況比單比特的數(shù)據(jù)傳輸復雜得多,由于存在多位數(shù)據(jù)同時變化的情況,為了提高數(shù)據(jù)傳輸?shù)姆€(wěn)定性,采用將二進制碼轉(zhuǎn)化為格雷碼[2]后傳輸。
2 主體結(jié)構(gòu)與具體實現(xiàn)
本文所采用的結(jié)構(gòu)是基于環(huán)型FIFO結(jié)構(gòu)[1],其整體結(jié)構(gòu)如圖3所示。在圖3中,總線用粗實線表示,其中總線上的數(shù)字(如m)表示總線位寬;控制線用虛線表示,輸入、輸出的信號(如FIFO空/滿信號)用細的實線表示,箭頭表示輸入/出方向。從圖3中可以清楚地看出,整個異步FIFO的結(jié)構(gòu)由讀/寫控制模塊、讀/寫同步模塊、讀/寫時鐘控制模塊以及雙口的RAM七個模塊組成。由于采用模塊化的設計結(jié)構(gòu),以上的結(jié)構(gòu)并不局限于具體的應用,可以很容易設計成實際應用需求的IP核,而且容易升級,相對于傳統(tǒng)的設計,增加的時鐘控制模塊能有效提高能效。
fpga相關(guān)文章:fpga是什么
評論