原创 Altera FIFO使用注意事项

2009-12-5 21:07 8997 2 8 分类: FPGA/CPLD
                         

Altera FIFO使用注意事项 (by Wind330)

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

 

文章评论6条评论)

登录后参与讨论

shijin330_417441176 2011-5-23 10:43

邮箱在博客公告里有,请发邮件!

xiaqingnuaa 2011-5-22 19:31

你好,我最近刚刚接触FIFO,使用QuartusII中自带的FIFO时,感到很费解,想向你请教下,可以告诉我你qq号吗?

shijin330_417441176 2010-2-5 11:14

这种方法我也想过,问题就是在usedw[]=1或者其他值时,无法判断FIFO是在等待读信号rdreq中还是已经响应rdreq信号,而usedw[]的变化被延迟了,后来觉得最保险方法还是舍弃empty或者full信息。

ash_riple_768180695 2010-2-5 09:43

FIFO有一个usedw[]的信号,可以用这个信号进行预判。比如usdw[]==‘d0的时候,empty信号拉高;我们就可以利用usdw[]=='d1这个信息,进行empty的预判,停止读取。这样,就可以正好在empty信号拉高的那一拍同时停止读取,防止FIFO出现“下溢出”。另外,这一问题我在RTL仿真中也遇到过,不一定非要用综合后网表仿真。

shijin330_417441176 2009-12-18 10:35

预判,通过什么信号?我也想过,觉得基于FIFO输出的信号预判是不可能的,只能根据自己工程的特点判断。

ilove314_323192455 2009-12-16 18:58

对于这两个时钟周期的延时,写入或读出电路中有所预判就好了,我都这么干的。也不会出什么大问题

zhihuili00_954210871 2006-11-18 14:06

值得去探索

相关推荐阅读
shijin330_417441176 2015-12-20 21:29
在Emacs中应用Ctags
适宜人群 具备Emacs使用经验的程序员 什么是Tag? Tag,即标记,记录了程序重要信息(如函数、变量、宏定义等)的位置和相应的文件,方便程序浏览器进行跳转。 ...
shijin330_417441176 2015-12-13 22:23
可综合的SystemVerilog:命名空间
关键名词解释: 编译单元(compilation unit):SystemVerilog 源代码的集合 编译单元域(compilation-unit scope):即编...
shijin330_417441176 2015-12-13 22:15
可综合的SystemVerilog:参数化函数/任务
在Verilog中,参数化模块被广泛应用。参数可重新定义保证模块的可配置性及可复用性。但是,函数及任务并无法像模块一样被参数化,减弱了Verilog的描述化能力。 SystemVer...
shijin330_417441176 2010-10-28 11:34
基于SOPC下RapidIO调试方法
RapidIO的一个难点在于地址转换方法,即将远端的Memory映射到当前Avalon-MM总线,所以地址需要一个转换过程——Local Avalon-MM<->RapidIO Addr&...
shijin330_417441176 2010-08-24 14:22
西行重庆
八月初时离开生活并工作四年的深圳,来到求学四年的重庆。已经过去三周时间,对自己的将来也随之变的不可琢磨。重庆的生活水平并不如想象的低,除了房价不像沿海城市高企,其他诸如公共交通,生活日常用品基本都是一...
shijin330_417441176 2010-07-07 18:05
Tcl用后感
                    Tcl用后感 (by Wind330)    Tcl - Tool Command Language近期做了一个Tcl脚本用于Modelsim仿真,完成如下功能...
我要评论
6
2
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条