今天在將SRIO的數據存入FIFO后,然后把FIFO中的數據不斷送入FFT進行運算時,對於幾個控制信號總產生問題。所以單獨對FIFO進行了仿真。原來感覺FIFO的幾個參數端口一目了然啊,還需要什么深入了解嗎,在實驗發生問題才知道當時的想法多么幼稚啊。
下面對xilixn FIFO核進行下簡單說明,配上仿真時序圖和源代碼,描述的還是比較清晰的。希望對和我一樣剛接觸FPGA不久的同學能有一點點幫助^_^
這個仿真的功能是要實現向FIFO256存入1到256個數,再將1-256讀出。注意這里選的是FULL FLAGS RESET VALUE OF 1
這是我想當然的仿真結果:這里可以看到數據1丟失了,第一個讀出的數據是2。再看圖1的data_count,這里先說下data_count的含義,當前時鍾進行寫操作,則下一時鍾data_count加1,當前時鍾進行讀操作,則下一時鍾data_count減1。因此由圖隱約可以知道為什么數據1丟失了。
查看了下XILIXN FIFO的官方文檔,說在進行寫復位后,要延遲3個時鍾周期才能進行寫操作。因此我在寫復位以后,通過count引入了3個時鍾的延遲,如下圖,發現數據沒有發生的丟失的情況了。
FIFO核非常好用,在讀操作的時候,我們可以通過data_count來知道還有多少個數據將要讀出,這對於后面的FFT參數控制很關鍵。當我加上FFT模塊時,又出問題了,上面寫復位的FULL高電平對信號的控制產生了的影響,即數據並沒有傳入FIFO,FULL就已經拉高了。重新回到FIFO文檔,看到了答案FULL FLAGS RESET VALUE OF 0,在選了這個選項后,異步寫復位將用最少的時間來完成。話不多說看仿真圖一目了然。
轉載:http://blog.csdn.net/xz_rabbit/article/details/19208075