在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2062|回复: 7

[求助] Xinlinx Aurora IP使用及FPGA二次烧录的问题

[复制链接]
发表于 2023-2-20 17:43:54 | 显示全部楼层 |阅读模式
500资产
本帖最后由 TUJzzz 于 2023-2-21 15:51 编辑

用AURORA ip完成两块FPGA之间的通信,物理链路通过光纤实现。FPGA1:IP配置成TX/RX Simplex(TX0,RX0);FPGA2:IP配置成RX Simplex(RX1)。全部采用streaming 格式。数据从RX0收下来,给到TX0发送出去,最后通过RX1接收下来。

问题描述:第一次烧录时,通过ila抓取的波形正常,但是用相同的BIT文件第二次烧录FPGA2时,RX1采到的的波形出现异常:RX1_TVALID会不正常的来回多次拉低,但是接收的数据却是正常的没有缺失的。
疑问:所有的时钟,线速率配置都是一样的。为什么会出现第二次烧录,波形不一样的情况,如果RX1采到的波形没有问题,那意味着RX1的数据吞吐量只有tx0的一半?,但是两个aurora配置是一样的,不然也不可能建链,而且数据连续没有确实。这也解释不了二次烧录波形不一致的问题。
补充:1.两块FPGA不论烧写先后顺序,只要FPGA2第二次烧程序,RX1波形就会出现这种情况,在其他电脑上也是如此。、
          2.vivado2018.3
          3.lia的时钟都是来自aurora产生的user_clk
更新:可能是给进去的数据量超过了核的吞吐量,没有匹配。 aurora.png
          数据吞吐量是匹配的,没有问题,(3.125x4x1000/256=48.828125),user_clk_out就是这个频率。

第一次烧录TX0波形:

第一次烧录TX0波形

第一次烧录TX0波形

第一次烧录RX1波形:

第一次烧录RX0波形

第一次烧录RX0波形

第二次烧录TX0波形:

第一次烧录TX0波形

第一次烧录TX0波形

第二次烧录RX1波形:
4.png






 楼主| 发表于 2023-2-20 17:48:25 | 显示全部楼层
补充说明:断电或者擦除FPGA2中的程序之后,第一次烧录,结果是正常的
发表于 2023-2-20 18:20:13 | 显示全部楼层
首先数据不知道从哪给到RX0的,你没有说明,数据从RX0到TX0,这部分数据搬移都是在FPGA1内部实现,然后FPGA1把数据通过TX0给到FPGA2的RX1,也就是FPGA1的RX1只做了接收,按理说不应该会影响到FPGA1的RX0,建议还是检查RX0的数据来源
发表于 2023-2-20 18:21:59 | 显示全部楼层
而且按你说,RX0的数据给到TX0,RX0的数据都是异常的,TX0的数据不应该是连续的,所以要么是抓的信号不对,要么是你表述有问题
 楼主| 发表于 2023-2-21 09:30:36 | 显示全部楼层


senasdf 发表于 2023-2-20 18:20
首先数据不知道从哪给到RX0的,你没有说明,数据从RX0到TX0,这部分数据搬移都是在FPGA1内部实现,然后FPGA ...


真是不好意思,文本编辑错了,前后烧录数据有误的图应该是RX1的数据,已修正。RX0的数据来源也是光纤,这部分数据核验没问题,所以没有提及。问题在于二次烧录导致的,TX0--->RX1的数据,在ila上不匹配的问题。因为从来没碰到过类似问题,可以提供一些思考方向的话不胜感激。
发表于 2023-2-21 09:42:57 | 显示全部楼层
抓数据看一下channel_up和lane_up这两个信号,看看是不是异常,我之前2块板子用Aurora通讯时就发现过上电后这2个信号异常,需要重新复位IP才行
 楼主| 发表于 2023-2-21 10:30:39 | 显示全部楼层


jinj198908 发表于 2023-2-21 09:42
抓数据看一下channel_up和lane_up这两个信号,看看是不是异常,我之前2块板子用Aurora通讯时就发现过上电后 ...


这两个信号都是正常拉高的,添加了手动复位,多次试验也是相同的结果。现在发现我没匹配核的数据吞吐量,可能是这方面导致的问题。然后user_data 256比特的位宽我只给了0~200的累加循环数据,这也可能导致了一些问题没有被发现出来。另外有一个问题:aurora ip Tx Simplex的模式下,选择streaming接口,控制user_data有三个信号,data,valid,tready。我的控制逻辑一直是,tvalid直接拉高,tready信号有效时,data累加,来达到向aurora中传送累加数据的目的。同事指出这样的控制存在问题,valid不能一直拉高,我理解的一直是,tvalid和ready同时有效,数据才会给进去,所以tvald直接给1,tready有效时,数据累加给进去,想向您请教。
发表于 2023-2-21 13:01:51 | 显示全部楼层


TUJzzz 发表于 2023-2-21 10:30
这两个信号都是正常拉高的,添加了手动复位,多次试验也是相同的结果。现在发现我没匹配核的数据吞吐量, ...


文档里没有严格要求在ready信号无效时能否拉高valid,个人不建议这样使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-15 11:07 , Processed in 0.022780 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表