FIFO是在FPGA設(shè)計(jì)中使用的非常頻繁,也是影響FPGA設(shè)計(jì)代碼穩(wěn)定性以及效率等得關(guān)鍵因素。在數(shù)據(jù)連續(xù)讀取時(shí),為了能不間斷的讀出數(shù)據(jù)而又不導(dǎo)致FIFO為空后還錯(cuò)誤的讀出數(shù)據(jù)??梢詫IFO的Empty和Almost_empty以及讀使能配合起來(lái)使用,來(lái)保證能夠連續(xù)讀,并準(zhǔn)確的判斷FIFO空滿(mǎn)狀態(tài),提前決定是否能啟動(dòng)讀使能。
具體的實(shí)施辦法是:當(dāng)Empty為1,立即停止讀;當(dāng)Empty為0,Almost_empty為0時(shí),可以放心讀;當(dāng)Empty為0,但是Almost_empty為1時(shí),如果上一拍讀使能Read也為1,那么不能讀;當(dāng)Empty為0,但是Almost_empty為1時(shí),如果上一拍讀使能Read為0,可以讀最后一拍。
在FIFO使用時(shí),使用到Almost_full信號(hào)以及讀寫(xiě)counter來(lái)控制FIFO的讀滿(mǎn)預(yù)警,如果數(shù)據(jù)不是在空滿(mǎn)判斷的下一拍寫(xiě)入FIFO,則設(shè)計(jì)FIFO的滿(mǎn)預(yù)警時(shí)要小心。如果你不確定判斷滿(mǎn)預(yù)警之后要延遲多少拍才能真正寫(xiě)入FIFO,那么盡量讓FIFO有足夠滿(mǎn)預(yù)警裕量。
例如,在wr_data_count為128才是真的滿(mǎn)了,你可以設(shè)成wr_data_count為120的時(shí)候就給出滿(mǎn)預(yù)警,可以保證設(shè)計(jì)的可靠和安全。當(dāng)然,如果你能準(zhǔn)確的算出判斷滿(mǎn)預(yù)警與真正寫(xiě)入FIFO的延遲,可以用精確的滿(mǎn)預(yù)警閾值。
當(dāng)需要使用到數(shù)據(jù)位寬轉(zhuǎn)換時(shí),如將128位的數(shù)據(jù)轉(zhuǎn)換成64位的數(shù)據(jù),最好不要用XILINX自己生成的位寬轉(zhuǎn)換FIFO??梢岳瘍蓚€(gè)64位的FIFO,自己控制128轉(zhuǎn)64。這樣可以大大的節(jié)省資源,是XILINX CORE生成的FIFO資源的一半。
另外,當(dāng)需要使用到位寬大于18bits,且深度小于等于512的FIFO時(shí),建議使用XILINX COREGenerator來(lái)產(chǎn)生,它可以將一個(gè)36bits位寬512深度的FIFO在一個(gè)18×1024的BLOCK RAM中實(shí)現(xiàn)。如果我們自己用BLOCK RAM來(lái)實(shí)現(xiàn)一個(gè)FIFO,那只能例化一個(gè)36×1024的BLOCK RAM基元,造成浪費(fèi)。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1630文章
21800瀏覽量
606272 -
Xilinx
+關(guān)注
關(guān)注
71文章
2171瀏覽量
122204 -
fifo
+關(guān)注
關(guān)注
3文章
390瀏覽量
43882
原文標(biāo)題:FIFO使用技巧
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
FIFO IP核的使用教程
![<b class='flag-5'>FIFO</b> IP核的使用教程](https://file1.elecfans.com/web3/M00/04/B1/wKgZO2d3P2uAblqKAAAtoGm7-54931.png)
FPGA 在人工智能中的應(yīng)用
AFE4960如何正確的從FIFO中讀取樣本呢?
FIFO Generator的Xilinx官方手冊(cè)
![<b class='flag-5'>FIFO</b> Generator的Xilinx官方手冊(cè)](https://file1.elecfans.com/web1/M00/F4/CF/wKgaoWcyw0uAFsglAAAmkjNjX48160.png)
FIFO的深度應(yīng)該怎么計(jì)算
![<b class='flag-5'>FIFO</b>的深度應(yīng)該怎么計(jì)算](https://file1.elecfans.com/web2/M00/0B/1F/wKgaomcbRw6AYR7aAAA5PisLH4s903.png)
FPGA在物聯(lián)網(wǎng)中的應(yīng)用前景
Efinity FIFO IP仿真問(wèn)題 -v1
![Efinity <b class='flag-5'>FIFO</b> IP仿真問(wèn)題 -v1](https://file1.elecfans.com/web2/M00/0A/C7/wKgaomcVzXSAJAskAAAY6WDHRZE641.png)
FPGA在人工智能中的應(yīng)用有哪些?
如何使用FX3同步從屬fifo模式通過(guò)FPGA傳輸傳感器數(shù)據(jù)?
如何獲取FIFO中接收的字節(jié)數(shù)?
同步FIFO和異步FIFO區(qū)別介紹
![同步<b class='flag-5'>FIFO</b>和異步<b class='flag-5'>FIFO</b>區(qū)別介紹](https://file1.elecfans.com/web2/M00/EB/91/wKgZomZetI6ACXETAAAiwkYcoTM829.png)
評(píng)論