Altera FIFO使用注意事项

来源:互联网 发布:jpeg标准量化算法 编辑:程序博客网 时间:2024/04/28 18:12
使用两年多的Altera器件,总觉得自己对FIFO这类简单的Core已经是熟悉不能再熟悉了,到现在的结果是花了三个星期时间解决一个FIFO时序问题。

现象

   点击看大图
FIFO实际读写情况上述图是从SignalTap中保存的.vcd文件,其中avm_clock为读时钟,rdreq在图中都处于无效状态,而写数据一直在进行(wrreq高电平有效,写时钟未示意),但是rdusedw却随着数据写入逐渐减少,到最后直至wrfull有效,rdusedw为零。

分析

Altera提供的FIFO Megacore中有rdusedw和rdempty两中信号,分别用于描述FIFO内的可读数据量和FIFO内部为空,但是当你读完FIFO内数据的同时,并不会马上响应,即rdusedw不会在紧接的时钟为0,rdempty不会高电平有效。如果此时,你需要根据rdempty信号是否进行下一次读进程,则会发生上述描述的现象。   

点击看大图
错误读时序如上图所示,读完13个数据后,FIFO已经为空。但是rdusedw在两个时钟后才为零,由于FIFO有读保护逻辑,rdusedw一直为零。错误已经造成   


总结

首先,wind330希望看过本文的同学不对这种错误费解。然后,尽量不利用Altera FIFO的wrfull和rdempty信号判断是否读写FIFO,而是利用自己工程中其他信息判断FIFO是否为满或空。最后,这种问题无法用行为仿真得出结果。

 
0 0