FIFO使用技巧

2021-07-29 12:51:10 字數 976 閱讀 7027

fifo使用技巧

標籤: fpga it 分類: fpga

fifo是在fpga設計中使用的非常頻繁,也是影響fpga設計**穩定性以及效率等得關鍵因素。我總結一下我在使用fifo過程中的一些心得,與大家分享。

在資料連續讀取時,為了能不間斷的讀出資料而又不導致fifo為空後還錯誤的讀出資料。可以將fifo的empty和almost_empty以及讀使能配合起來使用,來保證能夠連續讀,並準確的判斷fifo空滿狀態,提前決定是否能啟動讀使能。具體的實施辦法是:當empty為1,立即停止讀;當empty為0,almost_empty為0時,可以放心讀;當empty為0,但是almost_empty為1時,如果上一拍讀使能read也為1,那麼不能讀;當empty為0,但是almost_empty為1時,如果上一拍讀使能read為0,可以讀最後一拍。

在fifo使用時,使用到almost_full訊號以及讀寫counter來控制fifo的讀滿預警,如果資料不是在空滿判斷的下一拍寫入fifo,則設計fifo的滿預警時要小心。如果你不確定判斷滿預警之後要延遲多少拍才能真正寫入fifo,那麼盡量讓fifo有足夠滿預警裕量。例如,在wr_data_count為128才是真的滿了,你可以設成wr_data_count為120的時候就給出滿預警,可以保證設計的可靠和安全。當然,如果你能準確的算出判斷滿預警與真正寫入fifo的延遲,可以用精確的滿預警閾值。

當需要使用到資料位寬轉換時,如將128位的資料轉換成64位的資料,最好不要用xilinx自己生成的位寬轉換fifo。可以例化兩個64位的fifo,自己控制128轉64。這樣可以大大的節省資源,是xilinx core生成的fifo資源的一半。

另外,當需要使用到位寬大於18bits,且深度小於等於512的fifo時,建議使用xilinx coregenerator來產生,它可以將乙個36bits位寬512深度的fifo在乙個18×1024的block ram中實現。如果我們自己用block ram來實現乙個fifo,那只能例化乙個36×1024的block ram基元,造成浪費。

使用open開啟FIFO檔案

include include include include include include include define fifo name tmp my fifo int main int argc,char argv argv if strncmp argv,o rdonly 8 0 ope...

Xilinx IP核使用 一 FIFO

今天在將srio的資料存入fifo後,然後把fifo中的資料不斷送入fft進行運算時,對於幾個控制訊號總產生問題。所以單獨對fifo進行了 原來感覺fifo的幾個引數埠一目了然啊,還需要什麼深入了解嗎,在實驗發生問題才知道當時的想法多麼幼稚啊。下面對xilixn fifo核進行下簡單說明,配上 時序...

VPP使用心得(十四)FIFO

這裡只研究了部分基於共享記憶體的fifo,大致了解了一下其結構。fif segment main t負責總管理,其下有多個fifo segment t fs 每個fs對應乙個共享記憶體檔案,其虛位址通過mmap對映,為了方便管理,這些fs的虛位址va是連續的。fs有乙個ssvm private t ...