一、FIFO Generator IP的引腳信號含義
1. almost full 和 almost empty flags用來指示只剩一個字了。
2. Programmable full and empty status flags可以由用戶自定義內容設定或者用專用的輸入口進行設定。
3. 對於V5的block RAM和built-in FIFO可以使用內嵌的寄存器。使用這個寄存器可以提高FIFO的性能,但是增加延遲。
4. FIFO常用於:跨時鐘域操作和數據位寬轉換。例如:兩個獨立的時鐘域,獨立的數據位寬,可以利用一個FIFO進行連接,如下圖所示:
FIFO可以自動完成數據位寬的轉換。
5. 當需要用到大塊的FIFO時,可以使用V5 built-in FIFO
6. First-Word Fall-Through(FWFT)特性是指,可以在沒有進行讀操作的時候,就可以提前知道下一個數據是什麼,並且自動將這個數據放到輸出數據線(DOUT)上。FWFT在要求低訪問延遲時,很有用。
這幾種FIFO支持FWFT特性:block RAM, distributed RAM, V5 built-in FIFO
7. FIFO接口信號
在寫操作時,注意一下幾個信號:
(1)FULL:當FULL有效時,所有的寫操作都將被忽略,並且這時對FIFO的寫操作不會對FIFO造成損壞。
(2)ALMOST_FULL:當這個信號有效時,說明還可以再進行一次寫操作
(3)FROG_FULL:當FIFO得數據大於或者等於設定的門限時,這個信號有效;當FIFO得數據小於這個設定的門限時,這個信號無效。
(4)OVERFLOW:這個信號用來指示在前一個時鐘週期的寫請求(WR_EN)被拒絕,因爲FIFO已經滿了。
(5)PROG_FULL_THRESH:用來設定PROG_FULL的有效時的數據數目,和無效時的數據數目
在讀操作時,注意一下幾個信號:
(1)FROG_EMPTY:當FIFO的數據數量小於等於設定的門限時,這個信號有效。
(2)RD_DATA_COUNT[C:0]:這個值表明FIFO中可以讀取的數據的數目,在讀操作的時候,通過對這個數據進行判斷,可以保證當FIFO中沒有數據的時候,停止讀操作。當發生一次讀操作時,會在下一個時鐘的上升沿對RD_DATA_COUNT進行改變。即寫入一個數據的時候rd_data_count+1,當讀出一個數據的時候,rd_data_count-1。
(3)UNDERFLOW:表明前一次讀操作被拒絕了,因爲FIFO已經空了。
二、FIFO Generator IP的使用