Xilinx FIFO 仿真总结

本文总结了在Xilinx FPGA中使用FIFO进行仿真时遇到的数据丢失问题。当设置Reset并在传感器数据输入时,FIFO会丢失数据1、2、3。目前针对这种丢数据的现象,作者尚未找到有效的解决方案。

 这篇文章的起因是想用FIFO去解决异步时钟源的问题。因为想用Spartan-6去从图像传感器采集图像,所以想直接用pclk做为FIFO的写时钟,传感器的行同步信号HS作为FIFO写是能输入,这样可以省去好多coding的工作。然而,事情往往不会那么顺利,我发现pclk的时钟是只有在有数据的时候才会从传感器输出,当传感器不输出数据时,pclk也就不会跳动了。具体时序可参考仿真图的wr_clk. 

Xilinx自带仿真器,仿真结果截图:
FIFO复位后,经过两个wr_clk,Full 和almost_full信号才会复位, 

当初始不去reset时,会丢失第一个数据

下图为设置了Reset, 丢失了数据1,2,3

   
从仿真结果看,这个写入过程,需要wr_clk比实际数据数要多1或跟多,不然,最后一个数据时写进不到FIFO里面的。
从下图可以发现,实际写入的最后一个数为150,但是由于写时钟写完最后一个数后就停止跳动,当去读FIFO时,无论rd_en和rd_clk一直是有效状态,在FIFO中始终读不出来150这个数

结论:对于只当有数据才会有数据始终跟随输出的传感器,如果用FPGA中的FIFO直接读取,会出现丢数据的情况,现在我还没有解决办法 180605

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值