FIFO為什么不能正常工作?復(fù)位信號(hào)有效長(zhǎng)度不夠,接口時(shí)序不匹配,可看下面這篇文章。
本文將介紹:
非DFX工程如何確保異步FIFO自帶的set_max_delay生效?
DFX工程如何確保異步FIFO自帶的set_max_delay生效?
對(duì)于異步FIFO,復(fù)位信號(hào)的使用要特別注意,如下圖所示。復(fù)位信號(hào)必須和wr_clk同步,如果異步,要在wr_clk時(shí)鐘下同步釋放,否則會(huì)出現(xiàn)數(shù)據(jù)無(wú)法寫入FIFO的情形。
在FPGA設(shè)計(jì)中,我們會(huì)經(jīng)常用到異步FIFO進(jìn)行跨時(shí)鐘域隔離。作為已經(jīng)非常成熟的設(shè)計(jì),AMD提供了兩種使用方式:一種是使用IP,一種是使用XPM_FIFO。無(wú)論是使用哪種方式,都會(huì)生成自帶的約束,如下圖所示??梢钥吹绞褂昧藄et_max_delay和set_bus_skew,這是因?yàn)楫惒紽IFO的控制邏輯涉及到二進(jìn)制碼和隔離碼的轉(zhuǎn)換,本質(zhì)上是讀/寫指針的跨時(shí)鐘域傳遞,這兩個(gè)約束正是針對(duì)這部分邏輯電路。
從上圖中還可以看到,圖中紅色方框標(biāo)記的約束來(lái)自于xpm_cdc_gray.tcl文件。該文件可在Vivado安裝目錄下找到,這里我們給出該文件的部分內(nèi)容,如下圖所示。從圖中代碼第2行和第3行可以看到,該約束文件在執(zhí)行前需要獲取兩個(gè)時(shí)鐘src_clk和dest_clk,第5行和第6行則會(huì)分別獲取這兩個(gè)時(shí)鐘的時(shí)鐘周期。從這里我們可以判斷該文件是在用戶約束文件之后編譯的。
我們可以打開(kāi)綜合后的設(shè)計(jì),通過(guò)命令report_compile_order -constraints查看約束文件的編譯順序,會(huì)生成如下圖所示的報(bào)告,在其中的Processing_Order列可以看到用戶約束文件的值為NORMAL,而FIFO自帶約束文件的值為L(zhǎng)ATE,這就表明FIFO自帶約束文件是在用戶約束文件之后進(jìn)行編譯的。原因就是FIFO自帶的約束文件依賴于用戶約束文件提供的時(shí)鐘周期。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618517 -
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
27357 -
fifo
+關(guān)注
關(guān)注
3文章
402瀏覽量
44815 -
時(shí)序
+關(guān)注
關(guān)注
5文章
398瀏覽量
37955 -
異步FIFO
+關(guān)注
關(guān)注
0文章
20瀏覽量
8572
原文標(biāo)題:你的FIFO為什么不能正常工作?
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
VIPM不能正常工作
不能從FIFO引腳獲得輸出數(shù)據(jù)
BurnRead函數(shù)不能正常工作
Slave fifo無(wú)法正常工作
ASCII不能正常工作
如何處理電腦不能正常關(guān)機(jī)故障
氨泵不能正常工作_風(fēng)機(jī)故障的現(xiàn)象及處理

單片機(jī)正常工作的三大條件
為什么有時(shí)候FIF不能正常工作?

IAR 的 Go to Definition of不能正常使用

單片機(jī)不能正常工作的原因
同步FIFO和異步FIFO區(qū)別介紹

評(píng)論