基于FPGA內(nèi)部的FIFO設(shè)計(jì)
發(fā)布時(shí)間:2008/9/16 0:00:00 訪問次數(shù):2252
在fpga設(shè)計(jì)中,內(nèi)部的fifo設(shè)計(jì)是 個(gè)不可或缺的內(nèi)容,其設(shè)計(jì)的質(zhì)師會(huì)直接影響fpga的邏輯容量和時(shí)序。在xilinx中的某些高端器件是內(nèi)置的fifo控制器,在coregen中可以直接產(chǎn)生這的硬fifo控制器, 強(qiáng)烈建議能夠使用硬的hfo控制器的場合,直接的好處足節(jié)省邏輯資源和提高邏輯速度,對于絕大部分的hfo設(shè)計(jì),推薦使用xili coregm產(chǎn)生。這樣可以保證功能正確,對于需要定制fifo控制器的場合請小心。
下面將結(jié)合coregn來說明如何設(shè)計(jì)一個(gè)fifo
產(chǎn)生fifo時(shí)應(yīng)使用coregen的fifo generator,打開后顯示如圖1所示的對話框。
圖1 fifo cenerator對話框
注意其中選項(xiàng)的意義在左邊的(read/wfik 0ock donmm)中選擇同步fifo或異步fifo,即囪寫時(shí)鐘是否是同-個(gè)。
在( memory type)中選擇是使用內(nèi)部的塊ram或分布式ram,或者移位寄存器或者內(nèi)置的fifo(目前virtex ̄4和virtex-5的器件有內(nèi)置fifo)。選擇時(shí)根據(jù)具體應(yīng)用決定,一般來說,當(dāng)需要的ram較小時(shí)選擇分布式ram;當(dāng)使用有內(nèi)置fifo的器件時(shí)優(yōu)選內(nèi)置fifo;較大的ram且沒有內(nèi)置fifo的器件時(shí)選擇塊ram。
(supported features)列的第1個(gè)功能是對不對稱的位寬的支持,指fifo的讀/寫位寬可以不一致;第2個(gè)功能是first-word fall-through,當(dāng)需要看見fifo內(nèi)的第1個(gè)數(shù),而又不想進(jìn)行讀操作時(shí)使用,一般用做需要根據(jù)fifo內(nèi)數(shù)據(jù)決定是否需要對fifo進(jìn)行操作的場合;第3個(gè)功能是說是否使用內(nèi)部的內(nèi)置fifo控制器,當(dāng)選擇內(nèi)置fifo的應(yīng)用時(shí)會(huì)有這個(gè)功能;第4個(gè)是eco的支持,指內(nèi)置的error correcti。n checking的功能,目前只有virtex-5的塊ram和內(nèi)置fifo有此功能。
單擊【下一步】按鈕進(jìn)入(fifo generator)對話框2,如圖2所示。
圖2 (fifo generator)對話框2
在其中設(shè)置詳細(xì)的屬性,從上往下一是是否標(biāo)準(zhǔn)fifo,還是需要支持first-wordfall-through:二是對于內(nèi)置fifo的應(yīng)用,還需要設(shè)置讀/寫時(shí)鐘的頻率;三是設(shè)置讀/寫位寬和深度;四是是否需要內(nèi)置的eco;五是是否要使用塊ram或fifo內(nèi)的寄存器。注意選擇了使用內(nèi)部寄存器,下面顯示的read latency會(huì)增加。通常塊ram或者fifo是輸入寄存,鎖存器輸出,所以不選使用內(nèi)部寄存器。read latency是一個(gè)時(shí)鐘周期,選擇時(shí)會(huì)是兩個(gè)時(shí)鐘周期。在設(shè)計(jì)時(shí)需要根據(jù)時(shí)鐘頻率和時(shí)序要求決定是否選這個(gè)選項(xiàng),不選的話,ram會(huì)有一個(gè)較大的tco。當(dāng)然也可以不選擇這個(gè)選項(xiàng)而多增加一級寄存器在代碼中,這樣處理的優(yōu)點(diǎn)是可以抵消一些線延時(shí);缺點(diǎn)是無法使用ram內(nèi)置的寄存器,從而浪費(fèi)了資源。
單擊【下一步】按鈕將出現(xiàn)如圖3所示的對話框3。
從上往下一是是否需要幾乎空滿標(biāo)志;二是是否需要產(chǎn)生讀/寫響應(yīng)信號;三是是否需要產(chǎn)生讀/寫錯(cuò)誤標(biāo)志;四是是否需要產(chǎn)生復(fù)位及復(fù)位是同步的還是異步的;五是復(fù)位時(shí)滿標(biāo)志的值。上面的讀/寫錯(cuò)誤就是overflow和underflow,是指當(dāng)fifo滿時(shí)仍在寫,空時(shí)仍在讀的標(biāo)志,可以用來監(jiān)控fifo是否出現(xiàn)了錯(cuò)誤操作。ram的復(fù)位指復(fù)位ram的輸入\輸出寄存器,而不會(huì)復(fù)位ram內(nèi)部的內(nèi)容。
圖3 fifo generator 對話框
單擊【下一步】按鈕打開如圖4所示的對話框4。
圖4 fifo generator對話框4
在其中可以設(shè)置fifo的空滿標(biāo)志的閾值。
單擊【下一步】按鈕打開如圖5所示的對話框5。
在其中可以設(shè)置將fifo內(nèi)部的數(shù)據(jù)的個(gè)數(shù)通過接口開放給用戶邏輯可見。
單擊【下一步】按鈕打開對話框如圖6所示的對話框6,可以看到所有的設(shè)置,并仔細(xì)檢查設(shè)置是否正確。
單擊(finish)按鈕,會(huì)產(chǎn)生.v的原文件和.edn或。ngc的網(wǎng)表。綜合和仿真可以用。ⅴ的源文件,布局布線時(shí)需要將.edn的文件放在mlcro search path的目錄或工程目錄中。另外,還會(huì)產(chǎn)生.xco的文件,這是產(chǎn)生的∏fo時(shí)的配置文件,下次可以在coregen中import這個(gè)文件產(chǎn)生一個(gè)和這次配置相同的fifo。
如本節(jié)所示,在coregen中產(chǎn)生fifo是一個(gè)較簡單的操作,推薦能用coregen時(shí)盡量使用。手動(dòng)定制fifo不屬于本節(jié)的內(nèi)容,在此不講述。
圖5 fifo generator對話框5
在fpga設(shè)計(jì)中,內(nèi)部的fifo設(shè)計(jì)是 個(gè)不可或缺的內(nèi)容,其設(shè)計(jì)的質(zhì)師會(huì)直接影響fpga的邏輯容量和時(shí)序。在xilinx中的某些高端器件是內(nèi)置的fifo控制器,在coregen中可以直接產(chǎn)生這的硬fifo控制器, 強(qiáng)烈建議能夠使用硬的hfo控制器的場合,直接的好處足節(jié)省邏輯資源和提高邏輯速度,對于絕大部分的hfo設(shè)計(jì),推薦使用xili coregm產(chǎn)生。這樣可以保證功能正確,對于需要定制fifo控制器的場合請小心。
下面將結(jié)合coregn來說明如何設(shè)計(jì)一個(gè)fifo
產(chǎn)生fifo時(shí)應(yīng)使用coregen的fifo generator,打開后顯示如圖1所示的對話框。
圖1 fifo cenerator對話框
注意其中選項(xiàng)的意義在左邊的(read/wfik 0ock donmm)中選擇同步fifo或異步fifo,即囪寫時(shí)鐘是否是同-個(gè)。
在( memory type)中選擇是使用內(nèi)部的塊ram或分布式ram,或者移位寄存器或者內(nèi)置的fifo(目前virtex ̄4和virtex-5的器件有內(nèi)置fifo)。選擇時(shí)根據(jù)具體應(yīng)用決定,一般來說,當(dāng)需要的ram較小時(shí)選擇分布式ram;當(dāng)使用有內(nèi)置fifo的器件時(shí)優(yōu)選內(nèi)置fifo;較大的ram且沒有內(nèi)置fifo的器件時(shí)選擇塊ram。
(supported features)列的第1個(gè)功能是對不對稱的位寬的支持,指fifo的讀/寫位寬可以不一致;第2個(gè)功能是first-word fall-through,當(dāng)需要看見fifo內(nèi)的第1個(gè)數(shù),而又不想進(jìn)行讀操作時(shí)使用,一般用做需要根據(jù)fifo內(nèi)數(shù)據(jù)決定是否需要對fifo進(jìn)行操作的場合;第3個(gè)功能是說是否使用內(nèi)部的內(nèi)置fifo控制器,當(dāng)選擇內(nèi)置fifo的應(yīng)用時(shí)會(huì)有這個(gè)功能;第4個(gè)是eco的支持,指內(nèi)置的error correcti。n checking的功能,目前只有virtex-5的塊ram和內(nèi)置fifo有此功能。
單擊【下一步】按鈕進(jìn)入(fifo generator)對話框2,如圖2所示。
圖2 (fifo generator)對話框2
在其中設(shè)置詳細(xì)的屬性,從上往下一是是否標(biāo)準(zhǔn)fifo,還是需要支持first-wordfall-through:二是對于內(nèi)置fifo的應(yīng)用,還需要設(shè)置讀/寫時(shí)鐘的頻率;三是設(shè)置讀/寫位寬和深度;四是是否需要內(nèi)置的eco;五是是否要使用塊ram或fifo內(nèi)的寄存器。注意選擇了使用內(nèi)部寄存器,下面顯示的read latency會(huì)增加。通常塊ram或者fifo是輸入寄存,鎖存器輸出,所以不選使用內(nèi)部寄存器。read latency是一個(gè)時(shí)鐘周期,選擇時(shí)會(huì)是兩個(gè)時(shí)鐘周期。在設(shè)計(jì)時(shí)需要根據(jù)時(shí)鐘頻率和時(shí)序要求決定是否選這個(gè)選項(xiàng),不選的話,ram會(huì)有一個(gè)較大的tco。當(dāng)然也可以不選擇這個(gè)選項(xiàng)而多增加一級寄存器在代碼中,這樣處理的優(yōu)點(diǎn)是可以抵消一些線延時(shí);缺點(diǎn)是無法使用ram內(nèi)置的寄存器,從而浪費(fèi)了資源。
單擊【下一步】按鈕將出現(xiàn)如圖3所示的對話框3。
從上往下一是是否需要幾乎空滿標(biāo)志;二是是否需要產(chǎn)生讀/寫響應(yīng)信號;三是是否需要產(chǎn)生讀/寫錯(cuò)誤標(biāo)志;四是是否需要產(chǎn)生復(fù)位及復(fù)位是同步的還是異步的;五是復(fù)位時(shí)滿標(biāo)志的值。上面的讀/寫錯(cuò)誤就是overflow和underflow,是指當(dāng)fifo滿時(shí)仍在寫,空時(shí)仍在讀的標(biāo)志,可以用來監(jiān)控fifo是否出現(xiàn)了錯(cuò)誤操作。ram的復(fù)位指復(fù)位ram的輸入\輸出寄存器,而不會(huì)復(fù)位ram內(nèi)部的內(nèi)容。
圖3 fifo generator 對話框
單擊【下一步】按鈕打開如圖4所示的對話框4。
圖4 fifo generator對話框4
在其中可以設(shè)置fifo的空滿標(biāo)志的閾值。
單擊【下一步】按鈕打開如圖5所示的對話框5。
在其中可以設(shè)置將fifo內(nèi)部的數(shù)據(jù)的個(gè)數(shù)通過接口開放給用戶邏輯可見。
單擊【下一步】按鈕打開對話框如圖6所示的對話框6,可以看到所有的設(shè)置,并仔細(xì)檢查設(shè)置是否正確。
單擊(finish)按鈕,會(huì)產(chǎn)生.v的原文件和.edn或。ngc的網(wǎng)表。綜合和仿真可以用。ⅴ的源文件,布局布線時(shí)需要將.edn的文件放在mlcro search path的目錄或工程目錄中。另外,還會(huì)產(chǎn)生.xco的文件,這是產(chǎn)生的∏fo時(shí)的配置文件,下次可以在coregen中import這個(gè)文件產(chǎn)生一個(gè)和這次配置相同的fifo。
如本節(jié)所示,在coregen中產(chǎn)生fifo是一個(gè)較簡單的操作,推薦能用coregen時(shí)盡量使用。手動(dòng)定制fifo不屬于本節(jié)的內(nèi)容,在此不講述。
圖5 fifo generator對話框5
熱門點(diǎn)擊
- FPGA中增加SPI和BPI配置模式
- 基于FPGA內(nèi)部的FIFO設(shè)計(jì)
- 可編程邏輯器件PLA乘積項(xiàng)陣列
- SmartXplorer技術(shù)
- FPGA器件配置電平和接口標(biāo)準(zhǔn)
- XMD軟件的調(diào)試設(shè)計(jì)
- 特定約束FROM TO
- 什么是C語言中的寬字符與多字節(jié)字符
- 周期約束分析
- 新款高性能硬件仿真器——Wind River
推薦技術(shù)資料
- 聲道前級設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級不同,EP9307-CRZ這臺分... [詳細(xì)]
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車用精準(zhǔn)定位
- 高效先進(jìn)封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究