原创 【博客大赛】关于FIFO的“读空”

2013-6-18 11:36 4578 15 18 分类: FPGA/CPLD 文集: ALTERA FPGA

FIFO的控制本来应该比较简单,只是我们的系统中需要将FIFO读空,同时又要防止读空的FIFO。所以这里所谓的“读空”有两层含义。

 

为了将FIFO读空,所以逻辑判断一旦FIFO的空标志empty为0,就立即产生一个FIFO读有效信号rdreq。

 

前面笔者另一篇博文里有介绍,如果仅安照上述方法控制FIFO的读,就有可能会错误地读一次“空”的FIFO。笔者在那篇博文介绍了如何防止读空的FIFO的方法,即在产生FIFO读有效信号的条件是empty为0的同时usedw要大于1。但是经过实际调试发现这样控制FIFO读的后果是FIFO里总是有一个数据无法读出,所以就达不到项目要求的将FIFO读空的目的了。

 

所以通过判决usedw大于1是无法读空FIFO的,所以正确的方法只能采取那篇博文介绍的第三种方法。即:

 

第一步根据空标志“empty”信号产生一个读操作的中间信号(其实就是将empty取反打一拍);

第二步是将此中间信号和empty的反相与产生最终的读信号。


-------------------------------------分割线2013.06.18----------------------------------------------

其实这个问题的根源是为了解决这样两种情况:


第一种情况:假如FIFO里有很多数据,比如一个已满的FIFO,这时候FIFO一段时间没有数据需要写入,只是需要将FIFO里的所有数据读出,注意这里只是假设一种极端情况,就像电影里的慢放一样。那么当读到FIFO只剩下一个数据的时候,上述第二种方法能确保将这最后一个数据读出后不会再误发一个读,即读空的FIFO这样误操作。

 

第二种情况:系统上电后FIFO必然是空的,假如这时候有一个数据满足条件被写入到了FIFO,但是后面很长时间没有满足条件的数据了,我们的系统要求,一旦FIFO里有数据就得立即将数据读出来。如果是这种情况那么上述第二种方法是不会产生读FIFO的控制的,因为控制条件是需要usedw大于1,而这时候usedw=1,不符合条件。所以为了及时将FIFO读空,就需要使用第三种方法。

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

coyoo 2015-8-21 08:53

不太明白你说的“相或”是指什么?谁与谁相或;你可以翻看我的博客,有ModelSim仿真出来的对于时序关系图,一看就明白了。

用户452520 2015-8-20 23:47

前辈您好,这个方法中 “第一步根据空标志“empty”信号产生一个读操作的中间信号(其实就是将empty取反打一拍); 第二步是将此中间信号和empty的反相与产生最终的读信号。” 相与产生最终的信号,是否为相或产生最终的读信号? 另外,我也理解这种处理的用意,因为读空信号总是在最后一个数据被读出之前就产生了,所以相或之后,可以使读空信号延长一周期,但现在问题是,我这么做的,但还是读不出最后一个数据, 总是下一次FIFO又写入数据后,读出的第一个数据才是上次存入的最后一个数据,这是为什么呢?

coyoo 2013-6-20 11:39

关于FIFO为什么要读空,这是一种比较特殊的应用,在我们遇到的大部分数字电路设计中一般不需要有这种读空FIFO的要求。有些场合,比如高能物理等需要测量每个核子hit的时间信息的时候,即每一个“事件”都被打上了时间标签(timestamp),也即是时间戳。而每一个时间都是随机发生,如果不及时处理已经发生的事件,那么该事件就会随着时间流逝而“老化”,这样在符合的时候产生麻烦。
相关推荐阅读
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
EE直播间
更多
我要评论
3
15
关闭 站长推荐上一条 /3 下一条