Altera FIFO使用注意事项

使用两年多的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是否为满或空。最后,这种问题无法用行为仿真得出结果。

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值