异步fifo设计总结

时间:2024-04-02 15:11:11

背景

问题

解决

altera fifo

通过对异步FIFO在读写时钟同频不同相、读时钟快于写时钟、读时钟慢于写时钟的程序仿真,我发现要想不让FIFO出现数据没成功写入和读出无效数据的情况。可以用以下方法:

开始读FIFO时刻用rdusedw控制,停止读FIFO时刻用rdusedw控制,在rd_clk时钟域下,去看rdusedw是否满足条件。
开始写FIFO时刻用wrusedw控制,停止写FIFO时刻用wrusedw控制,在wr_clk时钟域下,去看wrusedw是否满足条件。
在wr_clk时钟域,根据wrusedw控制wrreq。
在rd_clk时钟域,根据rdusedw控制rdreq。
无论同步还是异步FIFO都不要用它的xxempty和xxfull端口来作控制信号,但同步FIFO中可以用almost_empty和almost_full。
在用xxusedw作为控制信号时,无论读写频率相差多少倍,裕值留10个数据深度就够了。

xilinx fifo

1、异步FIFO的读写计数不准,经常可以碰见FIFO的空标志拉高,但是计数器显示FIFO中还有数据的情况,所以使用FIFO自带的计数器时,一定要小心,只可以使用大概范围,不可以使用精确范围。
2、异步FIFO在复位一段时间后,才可以继续操作,不可以复位后立马把读写使能拉高,因为异步FIFO需要一定的时间进行同步操作。
上面的两点一定要注意,否则很容易跳入一个大坑。当然,同步FIFO没有上述的问题。

总结探讨

异步fifo设计总结
欢迎FPGA初学者、爱好者,加群一起探讨哈