在FPGA設計中,內(nèi)部的FIFO設計是 個不可或缺的內(nèi)容,其設計的質(zhì)師會直接影響FPGA的邏輯容量和時序。在Xilinx中的某些高端器件是內(nèi)置的FIFO控制器,在coregen中可以直接產(chǎn)生這的硬FIFO控制器, 強烈建議能夠使用硬的HFO控制器的場合,直接的好處足節(jié)省邏輯資源和提高邏輯速度,對于絕大部分的HFO設計,推薦使用Xili coregm產(chǎn)生。這樣可以保證功能正確,對于需要定制FIFO控制器的場合請小心。
下面將結(jié)合coregn來說明如何設計一個FIFO
產(chǎn)生FIFO時應使用coregen的FIFO generator,打開后顯示如圖1所示的對話框。
圖1 FIFO cenerator對話框
注意其中選項的意義在左邊的(Read/Wfik 0ock Donmm)中選擇同步FIFO或異步FIFO,即囪寫時鐘是否是同-個。
在( Memory Type)中選擇是使用內(nèi)部的塊RAM或分布式RAM,或者移位寄存器或者內(nèi)置的FIFO(目前Virtex ̄4和Virtex-5的器件有內(nèi)置FIFO)。選擇時根據(jù)具體應用決定,一般來說,當需要的RAM較小時選擇分布式RAM;當使用有內(nèi)置FIFO的器件時優(yōu)選內(nèi)置FIFO;較大的RAM且沒有內(nèi)置FIFO的器件時選擇塊RAM。
(Supported Features)列的第1個功能是對不對稱的位寬的支持,指FIFO的讀/寫位寬可以不一致;第2個功能是First-Word Fall-Through,當需要看見FIFO內(nèi)的第1個數(shù),而又不想進行讀操作時使用,一般用做需要根據(jù)FIFO內(nèi)數(shù)據(jù)決定是否需要對FIFO進行操作的場合;第3個功能是說是否使用內(nèi)部的內(nèi)置FIFO控制器,當選擇內(nèi)置FIFO的應用時會有這個功能;第4個是ECO的支持,指內(nèi)置的Error Correcti。n Checking的功能,目前只有Virtex-5的塊RAM和內(nèi)置FIFO有此功能。
單擊【下一步】按鈕進入(Fifo Generator)對話框2,如圖2所示。
圖2 (Fifo Generator)對話框2
在其中設置詳細的屬性,從上往下一是是否標準FIFO,還是需要支持First-WordFall-Through:二是對于內(nèi)置FIFO的應用,還需要設置讀/寫時鐘的頻率;三是設置讀/寫位寬和深度;四是是否需要內(nèi)置的ECO;五是是否要使用塊RAM或FIFO內(nèi)的寄存器。注意選擇了使用內(nèi)部寄存器,下面顯示的Read Latency會增加。通常塊RAM或者FIFO是輸入寄存,鎖存器輸出,所以不選使用內(nèi)部寄存器。Read Latency是一個時鐘周期,選擇時會是兩個時鐘周期。在設計時需要根據(jù)時鐘頻率和時序要求決定是否選這個選項,不選的話,RAM會有一個較大的Tco。當然也可以不選擇這個選項而多增加一級寄存器在代碼中,這樣處理的優(yōu)點是可以抵消一些線延時;缺點是無法使用RAM內(nèi)置的寄存器,從而浪費了資源。
單擊【下一步】按鈕將出現(xiàn)如圖3所示的對話框3。
從上往下一是是否需要幾乎空滿標志;二是是否需要產(chǎn)生讀/寫響應信號;三是是否需要產(chǎn)生讀/寫錯誤標志;四是是否需要產(chǎn)生復位及復位是同步的還是異步的;五是復位時滿標志的值。上面的讀/寫錯誤就是overflow和underflow,是指當FIFO滿時仍在寫,空時仍在讀的標志,可以用來監(jiān)控FIFO是否出現(xiàn)了錯誤操作。RAM的復位指復位RAM的輸入輸出寄存器,而不會復位RAM內(nèi)部的內(nèi)容。
圖3 Fifo Generator 對話框
單擊【下一步】按鈕打開如圖4所示的對話框4。
圖4 Fifo Generator對話框4
在其中可以設置FIFO的空滿標志的閾值。
單擊【下一步】按鈕打開如圖5所示的對話框5。
在其中可以設置將FIFO內(nèi)部的數(shù)據(jù)的個數(shù)通過接口開放給用戶邏輯可見。
單擊【下一步】按鈕打開對話框如圖6所示的對話框6,可以看到所有的設置,并仔細檢查設置是否正確。
單擊(Finish)按鈕,會產(chǎn)生.V的原文件和.edn或。ngc的網(wǎng)表。綜合和仿真可以用。Ⅴ的源文件,布局布線時需要將.edn的文件放在mlcro search path的目錄或工程目錄中。另外,還會產(chǎn)生.xco的文件,這是產(chǎn)生的∏FO時的配置文件,下次可以在coregen中import這個文件產(chǎn)生一個和這次配置相同的FIFO。
如本節(jié)所示,在coregen中產(chǎn)生FIFO是一個較簡單的操作,推薦能用coregen時盡量使用。手動定制FIFO不屬于本節(jié)的內(nèi)容,在此不講述。
圖5 Fifo Generator對話框5
圖6 Fifo Generator對話框6
參考文獻:
[1].Throughdatasheethttp://www.dzsc.com/datasheet/Through_1177452.html.
[2].ECOdatasheethttp://www.dzsc.com/datasheet/ECO_2043505.html.
[3].Virtex-5datasheethttp://www.dzsc.com/datasheet/Virtex-5_1706996.html.
來源:ks991次