FIFO學習筆記: FIFO的英文全稱是First In First Out,即先進先出。FPGA使用的FIFO一般指的是對數據的存儲具有先進先出特性的一個緩存器,常被用于數據的緩存,或者高速異步數據的交互也即所謂的跨時鐘域信t傳遞。它與FPGA內部的RAM和ROM的區別是沒有外部讀寫地址線,采取順序寫入數據,順序讀出數據的方式,使用起來簡單方便,由此帶來的缺點就是不能像RAM和ROM那樣可以由地址線決定讀取或寫入某個指定的地址。 1. 用于兩個module時鐘,位寬不同的情況 2. 緩存 3. 先寫入數據,(先入先出)上圖的如果是異步時鐘的話則用到了clka:用于寫數據的時鐘,clkb用于讀數據的時鐘。同步時鐘的話讀寫則用的一個時鐘 4. 當寫入的數據數據速度大于讀出的數據的時候,會讓寫入等待
JR]LE(A9COWR2)L(7AN5]4K.png (122.03 KB, 下載次數: 69)
下載附件
2021-5-30 22:46 上傳
5. Ram資源:::bram資源(block):這個是支持讀寫位寬不一樣的,常用的就是bram。而dram資源是不支持讀寫位寬不一致的。 6. Prog_full:自定義的一個多少個的個數的數,當寫進去這莫多的時候,則拉高的他。對應的讀也是、 7. Wr_ack:寫使能成功之后給應答。 8. Overflow:寫溢出標志, 9. valid:讀出的數據有效標志, 10. underflow:讀空標志。 11. Wr_data_count:表示fifo有多少個寫進去的數據, Rd_data_count表示還有多少個可以讀出的數據。同步fifo的時候特們相等,但是異步的時候:他們的(計數*位寬)相等的。 12. Prog_full_thresh_assert:對你想要寫入的預設值得動態修改:上邊的Prog_full。對應的讀:Prog_empty_thresh也是 13. Prog_full_thresh_negate:12的文獻值失效 14. Prog_full_thresh是具體的寫什么值 (12.13.14配合使用的)
|