目录

前言

问题分析

解决方案

后记


前言

最近在使用Aurora核进行数据传输时遇到了如下问题:

1、Aurora核输出的tx_dst_rdy信号会不定时的拉低,拉低之后不定时进行恢复。tx_dst_rdy信号拉低后,Aurora将不再接收数据。如图1所示。

图1 tx_dst_rdy不定时拉低

2、环境:本文所述的测试环境为数据经过位宽转换FIFO之后,输出给Aurora核。

问题分析

因为tx_dst_rdy信号会不定时拉低在之前的工程中也遇到过,所以再次遇到这个问题的时候,采用和原来处理方法相同的方式,但是出现了如图2所示的问题。

图2 

由图3可以看出,虽然我对FIFO的读使能进行了相应的控制,但是在tx_dst_rdy拉低之后,仍然将数据读出,导致整个数据帧的发送错误。经过对信号的分析,最终检查到如图3所示的问题:

tx_dst_rdy信号与其产生的时钟clk_rd之间有100ps的时延(此处FIFO的读时钟即为Aurora输出的use_clk,下文统称为clk_rd)。如图3所示。

图3 tx_dst_rdy与时钟信号相差100ps

由于tx_dst_rdy信号和clk_rd信号都是由Aurora核内部产生的,在这块产生了100ps的延迟,应该为其内部时延造成的。因此,我对tx_dst_rdy信号进行进一步的追踪,发现其在Aurora核内部产生中进行了1ns的延迟,如图4所示:

图4 tx_dst_rdy产生加入了1ns的时延

那么,为什么在这里要进行1ns的延迟呢?有什么理论支持呢?为了寻找理论支持,我把Aurora协议又看了一遍,最终在时钟补偿这块找到了相应的理论支持。

时钟补偿序列由6组时钟补偿指令/CC/组成,至少每隔10000个字码组发送一次,而不顾当前是否有其他的数据包或者码组在传输。当发送时钟补偿序列时,Aurora核将自动中断数据传输。每发送10000个字节,时钟补偿序列在每个线路(lane)上加12个字节的额外开销。时钟补偿应用于系统收发端使用独立的参考时钟资源的情况,它允许收发端使用的参考时钟频率的不同最大为100PPM。

图5 Aurora中对时钟补偿的描述

由此可以得知,tx_dst_rdy信号拉低的原因是:Aurora核内部需要发送时钟补偿序列,所以需要中断链路数据的传输。至于为什么要进行1ns的延迟,我的猜测如下:因为Aurora内部允许收发端的参考时钟频率不同最大为100PPM(PPM为时钟精度单位,是百万分之一),根据Aurora和最低工作频率计算出来的由于时钟频率不同造成的时延不超过1ns,故在tx_dst_rdy信号产生时,对其进行1ns的延迟,从而适应频率不同的情况。

为什么要延迟1ns的事情搞清楚之后,又遇到了另外一个问题,既然在这里延迟了1ns,为什么在用户接口那块延迟又变成了100ps?再次对该信号进行追踪,最后发现在AXI转LL模块中,输出的时钟延迟由1ns变化为100ps,为什么会出现这个结果,我暂时还没有考虑到,如果有大佬知道这个问题,希望能够告诉我。

解决方案

针对对时延产生的原因分析,最终我采用将Aurora核输出的时钟,人为进行1ns的延迟,然后用延迟之后的时钟再去进行数据的读取,这样就可以解决该问题。

图6 对时钟进行1ns的延迟

图7 测试结果

后记

虽然采用将时钟信号延迟1ns,最终解决了这个问题,但是解决方法仍然缺乏理论研究的支持,并不知道这种解决方法是否正确,是否会对数据的正常传输产生影响。这些仍需要后续验证。如果有人对这方面有更深入的研究,希望能够和您进行探讨。我的联系方式:邮箱Melvin_Dong@126.com,QQ:179212934(备注CSDN,谢谢!)。

Aurora核使用中tx_dst_rdy信号拉低问题相关推荐

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

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

  2. I2C总线时序以及ACK和NACK(NAK),SCL被从机拉低?

    1.I2C协议详解及裸机程序分析 - 简书(通俗易懂) 根据上图,我们首先设置IICCON(来设置时钟),时钟源是PCLK(是50MHZ)太快了我们需要设置这个分频系数,把时钟降低,降低到我们想要的S ...

  3. 微信正拉低中国社会的总体智商

    微信正拉低中国社会的总体智商 编者按:互联网的存在让这样的"宗教"的创立更加便捷.成为"神"必须经过精心的策划和包装后被推上舞台站在聚光灯下,其一言一行都须要满 ...

  4. 美国德州光伏装机可能拉低当地峰值电价

    目前,电厂级光伏项目现已登陆美国德克萨斯州的ERCOT(德州电力可靠性委员会)电网.得益于德克萨斯州的分时电价机制,光伏项目的峰值发电产品效益相当不错,但前赴后继的新建项目可能很快将这种"好 ...

  5. 5G iPhone若推迟至10月发布 将会拉低苹果两个财季营收

    据国外媒体报道,爆料人士近日表示,由于疫情对生产周期造成影响,备受关注的苹果首批支持5G网络连接的iPhone 12,将推迟至10月发布. 外媒在报道中还表示,这一爆料人士曾多次爆料苹果产品的消息,并 ...

  6. 【解决】SX1308无法升压、升压后接上负载电压就被拉低解决办法

    一.无法升压? SX1308  能不能正常升压,很大原因取决你的PCB布线!!!我前面画了3次板,都无法正常升压,后面将这些器件经可能放在一起,按照稳定 电容 和器件引脚靠近,SW靠近电感.二极管,布 ...

  7. 住建部专家解读不动产登记:不会大幅拉低房价

    住建部专家解读不动产登记:不会大幅拉低房价 行业动态中国广播网[微博]2014-12-03 07:19 我要分享 19 [摘要]"影响房价的因素很多,最主要的是市场供求关系,还有税收法律.国 ...

  8. LM2576HV调节负压输出拉低输入电压

    LM25x6xx正压转负压的应用中,经常出现拉低输入电压到3v左右并伴有巨大的电流, 芯片发热的情况发生.一般有如下三个原因: 1 芯片的散热焊盘PAD接错, 在生成负压的电路中PAD一般接负电压而不 ...

  9. amd锐龙笔记本cpu怎么样_AMD锐龙处理器+GTX 16XX显卡或拉低游戏本价格

    根据目前掌握的消息,搭载AMD锐龙7 3750H.锐龙5 3550H处理器的游戏本预计很快就要上市了,宏碁Nitro.华硕TUF Gaming.惠普Pavilion/OMEN等都会在第一时间推出.作为 ...

最新文章

  1. [原创]Coding4Fun检测你的网络,用C#获取本机TCP、UDP状态及连接(二)
  2. Python语言学习:python语言的特点、入门、基础用法之详细攻略
  3. AOSP 源码整编单编
  4. 看尽SLAM、ReID和文字识别等技术进展!15位视觉技术大咖齐聚一堂
  5. 网络编程(part4)--刷新缓冲区
  6. 工作262:HBuilderX常见快捷键
  7. celery-04-操作b-执行人的一方
  8. 微软托管服务器,微软 GitHub 推出新政策,允许托管以安全研究为目的的恶意软件...
  9. js 表单设计器_准备迎接Vue3,使用Vue Composition API生成干净可扩展的表单
  10. 作为字节跳动的研发面试官,有些话我不得不说!
  11. shell脚本命令行参数里的空白符
  12. idea安装Scala插件
  13. MT6739充电IC集成步骤
  14. blowfish java_Java语言实现Blowfish加密算法完整代码分享
  15. openwrt 使用ebtables限制设备访问外网或内网
  16. 扫宽、分辨率和扫描时间
  17. 成功解决ThinkPad T14 高负载下CPU降频问题
  18. 记录一次canvas小白做相册功能的过程
  19. 知乎上48个神回复,真心值得一看!
  20. maven学习笔记(四)profile的使用

热门文章

  1. 学 Python 的乐园,坚持一年,值了!
  2. no transaction is in progresss
  3. 微信公众号开发之(21)视频
  4. HSB/HSL 滤镜
  5. 获取tinyMCE编辑器中的内容
  6. 8086芯片寄存器简介
  7. 如何获取一个基因家族的所有小麦基因
  8. linux的input命令,认识linux input子系统(一)
  9. B站国外大学公开课(持续更新)
  10. 中南大学计算机学硕毕业要求,中南大学研究生发表学术论文的规定