Aurora核使用中tx_dst_rdy信号拉低问题(续)

前言

 

上次说到采用“将Aurora核输出的时钟,人为进行1ns的延迟,然后用延迟之后的时钟再去进行数据的读取”这个方法解决了Aurora核仿真出现的问题,但在上板中遇到了其他的问题,现在这篇文章中进行讨论。

问题提出

在上次仿真正确无误之后,我将工程放入到实际环境中去测试,果然没有那么顺利。通过mark_debug发现在上板过程中自己写的FIFO满,然后导致Aurora核存在丢帧现象,那么是什么原因导致FIFO满信号拉高了呢?

问题分析

由于丢帧现象是在几百万帧的时候才会出现,因此仿真无法重现问题,只好通过上板抓信号的方式进行分析解决。(由于当时调试的时候,笔者在外出差,因此暂时没有实例的截图,后期再补)

最终发现,不光是有丢帧问题,更有错帧问题。每一帧的帧数据会出现某64bit(采用的是64/66B编码的Aurora核)重复发两次的现象,经过多次仿真与上板,最终确定是由于之前加入了100ps的时延导致出错(这时已接近崩溃)。此时,通过仿真去观察tx_dst_rdy信号与其产生的时钟clk_rd,发现两者之间的100ps的延时竟然不复存在!!!!所以,一切的罪魁祸首都在这个tx_dst_rdy信号中!!!

问题解决

为了解决这个问题,删除掉原来所有的做的工作(心疼啊),重新生成一个Aurora核的example design,花了一整天的时间去研究官方例程中对rdy信号的处理流程,最后发现其处理流程相当于是一个异步FIFO的时序!!!!

因此,将原来所有需要Aurora核发送的数据,全部存储到异步FIFO中,该异步FIFO的读使能采用tx_dst_rdy信号,经过上板测试完美解决之前所遇到的问题。

后记

这次调试虽说走了很多的弯路,但是也学习到了很多东西。足以见得吃透官方的example design是有多么重要,以后还是要多去理解官方的例程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值