微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FIFO IP核最后一个数据读不完,怎么回事?

FIFO IP核最后一个数据读不完,怎么回事?

时间:10-02 整理:3721RD 点击:
RT今天有同事跟我说,他调用了ise里面异步FIFO核,但是每次总是读不出最后一个数据,要等下一次才能读出来,仿真时发现empty标志提前一个周期出现,他说FIFO之前的模块绝对没有问题,于是我也想不通,请问各位大侠这是怎么一回事。

FIFO设置有问题?我在12.1版本里面使用FIFO的时候,满标志不正常,还有最好不要使用异步FIFO,最好是同一个时钟,然后通过wr和rd信号写入读取。

是否是你的读使能信号提前拉低,导致最后一个数据没有读出,等到下次有新的数据写入后才能再次读出?

感谢楼上二位,顺便弱弱问一句,ISE的ip核应该都是没问题的吧?我同事怀疑是ip核问题,我又不敢妄下论断



   你使用的fifo肯定是 read width > write width 。是不是?

IP没有问题,空满的设置可以改下条件看看,试试program empty,设置的深度为0或1再看看,

read width = write width,program empty空满条件只能变大,没法变小了,默认已经是最小了。

我也遇到同样问题,只不过我是第一个数读不出来,总是从我写入的第二数开始读出。
软件没问题,在cycloneII时正常的,但在cycloneIII时就不行了。
有遇到过并解决的吗?



    你好,我也遇到你这个问题,不知道最后你是怎么解决的

谁说xilinx没有bug的,本身FIFO generater这个东西,有些版本就是有bug,建议小编换成vivado,如果还有问题,建议去找个FAE问问,他们对这些基础模块的问题很重视的,毕竟是丢脸的事情



   我现在也遇到了同样的问题,是怎么解决的啊

Ise的fifo bug还是有的,不要太奇怪

也遇到这个问题了,第一次总是读不出来,而下一次读出的总是上一次没读出的那个最后一个数据,请问什么原因?

不要连续读,试试隔一个周期读一次

用过ISE12.4版本的异步FIFO,完全没问题。


你这个应该是第一个数没有写进去,FIFO复位延时会有2个或者3个时钟周期,你可以看一下IP核的参数,可以在复位后延长2~3个时钟周期再使能写信号,这样看下结果。

你好,我也遇到这个问题,把读使能延后几个时钟周期也不行,最后一个数据还是在下一次的读数中读出,请问当时怎么解决的。



   您好,看到您之前碰到过这个问题,当时怎么解决的呢?

学习了!

可能是ip core的配置问题,你们用了almost empty而不是empty,且almost_empty_depth = 1, 所以里面实际上还有最后一个数,只有当后面的数push进fifo后,才能读出后面的数



   确实有这个问题,我也遇到过

关注中!

同步fifo和异步fifo能写进去的实际大小不一样,相差一个

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top