FIFO為什么不能正常工作?復位信號有效長度不夠,接口時序不匹配,可看下面這篇文章。
本文將介紹:
非DFX工程如何確保異步FIFO自帶的set_max_delay生效?
DFX工程如何確保異步FIFO自帶的set_max_delay生效?
對于異步FIFO,復位信號的使用要特別注意,如下圖所示。復位信號必須和wr_clk同步,如果異步,要在wr_clk時鐘下同步釋放,否則會出現數據無法寫入FIFO的情形。

在FPGA設計中,我們會經常用到異步FIFO進行跨時鐘域隔離。作為已經非常成熟的設計,AMD提供了兩種使用方式:一種是使用IP,一種是使用XPM_FIFO。無論是使用哪種方式,都會生成自帶的約束,如下圖所示。可以看到使用了set_max_delay和set_bus_skew,這是因為異步FIFO的控制邏輯涉及到二進制碼和隔離碼的轉換,本質上是讀/寫指針的跨時鐘域傳遞,這兩個約束正是針對這部分邏輯電路。

從上圖中還可以看到,圖中紅色方框標記的約束來自于xpm_cdc_gray.tcl文件。該文件可在Vivado安裝目錄下找到,這里我們給出該文件的部分內容,如下圖所示。從圖中代碼第2行和第3行可以看到,該約束文件在執行前需要獲取兩個時鐘src_clk和dest_clk,第5行和第6行則會分別獲取這兩個時鐘的時鐘周期。從這里我們可以判斷該文件是在用戶約束文件之后編譯的。

我們可以打開綜合后的設計,通過命令report_compile_order -constraints查看約束文件的編譯順序,會生成如下圖所示的報告,在其中的Processing_Order列可以看到用戶約束文件的值為NORMAL,而FIFO自帶約束文件的值為LATE,這就表明FIFO自帶約束文件是在用戶約束文件之后進行編譯的。原因就是FIFO自帶的約束文件依賴于用戶約束文件提供的時鐘周期。
-
FPGA
+關注
關注
1660文章
22408瀏覽量
636210 -
FPGA設計
+關注
關注
9文章
431瀏覽量
28137 -
fifo
+關注
關注
3文章
407瀏覽量
45742 -
時序
+關注
關注
5文章
406瀏覽量
38851 -
異步FIFO
+關注
關注
0文章
20瀏覽量
8711
原文標題:你的FIFO為什么不能正常工作?
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
VIPM不能正常工作
不能從FIFO引腳獲得輸出數據
BurnRead函數不能正常工作
Slave fifo無法正常工作
ASCII不能正常工作
如何處理電腦不能正常關機故障
為什么有時候FIF不能正常工作?
IAR 的 Go to Definition of不能正常使用
同步FIFO和異步FIFO區別介紹
FIFO為什么不能正常工作?
評論