在FPGA設(shè)計中,內(nèi)部的FIFO設(shè)計是 個不可或缺的內(nèi)容,其設(shè)計的質(zhì)師會直接影響FPGA的邏輯容量和時序。在Xilinx中的某些高端器件是內(nèi)置的FIFO控制器,在coregen中可以直接產(chǎn)生這的硬FIFO控制器, 強烈建議能夠使用硬的HFO控制器的場合,直接的好處足節(jié)省邏輯資源和提高邏輯速度,對于絕大部分的HFO設(shè)計,推薦使用Xili coregm產(chǎn)生。這樣可以保證功能正確,對于需要定制FIFO控制器的場合請小心。
下面將結(jié)合coregn來說明如何設(shè)計一個FIFO
產(chǎn)生FIFO時應(yīng)使用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ù)具體應(yīng)用決定,一般來說,當需要的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的應(yīng)用時會有這個功能;第4個是ECO的支持,指內(nèi)置的Error Correcti。n Checking的功能,目前只有Virtex-5的塊RAM和內(nèi)置FIFO有此功能。
單擊【下一步】按鈕進入(Fifo Generator)對話框2,如圖2所示。
圖2 (Fifo Generator)對話框2
在其中設(shè)置詳細的屬性,從上往下一是是否標準FIFO,還是需要支持First-WordFall-Through:二是對于內(nèi)置FIFO的應(yīng)用,還需要設(shè)置讀/寫時鐘的頻率;三是設(shè)置讀/寫位寬和深度;四是是否需要內(nèi)置的ECO;五是是否要使用塊RAM或FIFO內(nèi)的寄存器。注意選擇了使用內(nèi)部寄存器,下面顯示的Read Latency會增加。通常塊RAM或者FIFO是輸入寄存,鎖存器輸出,所以不選使用內(nèi)部寄存器。Read Latency是一個時鐘周期,選擇時會是兩個時鐘周期。在設(shè)計時需要根據(jù)時鐘頻率和時序要求決定是否選這個選項,不選的話,RAM會有一個較大的Tco。當然也可以不選擇這個選項而多增加一級寄存器在代碼中,這樣處理的優(yōu)點是可以抵消一些線延時;缺點是無法使用RAM內(nèi)置的寄存器,從而浪費了資源。
單擊【下一步】按鈕將出現(xiàn)如圖3所示的對話框3。
從上往下一是是否需要幾乎空滿標志;二是是否需要產(chǎn)生讀/寫響應(yīng)信號;三是是否需要產(chǎn)生讀/寫錯誤標志;四是是否需要產(chǎn)生復(fù)位及復(fù)位是同步的還是異步的;五是復(fù)位時滿標志的值。上面的讀/寫錯誤就是overflow和underflow,是指當FIFO滿時仍在寫,空時仍在讀的標志,可以用來監(jiān)控FIFO是否出現(xiàn)了錯誤操作。RAM的復(fù)位指復(fù)位RAM的輸入輸出寄存器,而不會復(fù)位RAM內(nèi)部的內(nèi)容。
圖3 Fifo Generator 對話框
單擊【下一步】按鈕打開如圖4所示的對話框4。
圖4 Fifo Generator對話框4
在其中可以設(shè)置FIFO的空滿標志的閾值。
單擊【下一步】按鈕打開如圖5所示的對話框5。
在其中可以設(shè)置將FIFO內(nèi)部的數(shù)據(jù)的個數(shù)通過接口開放給用戶邏輯可見。
單擊【下一步】按鈕打開對話框如圖6所示的對話框6,可以看到所有的設(shè)置,并仔細檢查設(shè)置是否正確。
單擊(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次