1、在使用异步fifo的时候会有延时的问题的出现
调用一个DCFIFO,输入和输出的数据位宽是一致的,输入和输出的使用使用同一个时钟(方便验证延时);
然后使用modelsim开始仿真给fifo灌数据,观测波形:
从仿真图可以看出wr_req到wr_usedw时钟间隔是2个wr_clk,wr_req到rd_usedw是6个wr-wrclk。
2、延时的计算方式
首先根据intel官方给出的FIFO的手册,可以看见延时的计算方式:
可以看见有一个变量名为following n,那么这个n是怎么得出来的呢
其实这个n就是我们在调用DCFIFO的时候自己设置的(我使用的quartus是18.1pro的,所以可能界面有点区别)。
这个n是代表什么意思呢,官方给出的解释如下:表示的是总延时。
自己总结之后觉得就是FIFO放入这个信号进入内部空间的时候要多少拍才能够很好的消除掉亚稳态。上图选项里面有一个best 最好的延时,我觉得看自己的需求来调用就可也以了。
综上所述:
可以看见我们设置的是3,所以最后wr_req到rd_usedw是6个wr_wrclk = 2 + 3 + 1 = 6;
注意:以上计算都是在wr_clk和rd_clk一致的情况下进行的计算。