AD连续采集,fifo缓存,读频率大于写频率,千兆以太网传输,
labview接收显示,大致在4K个点左右数据开始无规律漏包;如果从ROM中连续写入fifo,labview接收数据就是正确的。请问有人知道到底是什么原因吗?为什么总是在4K个点后呢?PS:signal tapii 里观察数据无丢失。
补充内容 (2017-8-30 15:30):
连续不停采集的数据能利用verilog编写的UDP协议传上labview而不漏包吗?总是感觉理论可行,但实际上就有问题!
补充内容 (2017-8-31 15:15):
我使用两个fifo交替存储,存到一定数据,才开始传输,写的频率远小于读的频率。理论上是不会有溢出情况的。但后来发现,程序运行过程中,有时该读取fifo数据,但并没有读出。可是条件成立,读使能,也有数据。它为什么不正确运行?
后来发现,读ROM也是有问题的,和AD同样的问题。
我一直采数据,两个fifo交替存储,一个fifo存够数据后,才一次性读空,并传输。写fifo的频率很慢,如果正常运行是不会溢出的。
后来发现,程序有时并没有正常运行,条件到了,本应该读数了,但它读了一个就过了。
感觉像时序错乱了。labview里的结果就是4K个点后数据错乱。如果时序约束没约束好,会有这种错误吗?
”程序有时并没有正常运行,条件到了,本应该读数了,但它读了一个就过了“,是读了一个字节就退出了么,如果是低速的话,时序一般还好,可以看下时序报告,然后检查一下读fifo这一块的逻辑
fifo的读写就是你说的这样的;
有时是读了一个字节就退出了,
写频率是20M左右,读是62.5M。
时序报告是有问题的
现在看signal tapii已经没有异常,fifo的写、读也换了好几种方式,理论分析都没什么问题。但是labview始终是在4K个点后异常,想不通啊。
FIFO深度最大只能设置为4K
一周热门 更多>