主题中讨论的其他器件: DS280DF810
工具/软件:
您好的团队、
我们在其中一种设计中使用 DS250DF410重定时器、其中重定时器保持在两个 AMD Zynq UltraScale+ SoC 之间。 连接如下所示:
MPSoC1 Gty_TXN >> PCB 布线第1部分 >> DS250DF410 >> PCB 布线第2部分 >> MPSoC2 GTYx_RXn 。
我们有多个与上面所示相似的链接、我们 在数据速率 为24.33024Gbps 的 MPSoC 之间使用 Aurora 协议。 在启动过程中、MPSoC1最初启动、然后配置重定时器、然后启动 MPSoC 2。
我们注意到 一些链路存在问题、即在接收端 MPSoC (两个 MPSoC 随机)接收的帧中存在错误。 请参阅下面的观察结果:
-我们观察到错误( 在 Aurora 中的软错误)在受影响的链路中不断增加,而其他的工作正常。
-这个问题不是一直观察到,但它发生的概率大约是5次启动中的1次。
-我们尝试重新配置重定时器(它也重新建立了 Aurora 链路),这阻止了错误的增加。
-同样,我们通过在 MPSoC2也启动后配置重定时器来更改顺序,这也可以正常工作,并且链路没有任何错误。
-完成上述步骤后(没有错误),我们重新启动了两个 MPSoC ,使重定时器保持在配置状态。 但是、这种情况会像以前一样导致误差递增。
-我们在启动后在两个 SoC 中重新发送了 Aurora IP ,这也阻止了错误的增加。
从上述意见可以明显看出、重新建立 联系似乎正在解决这个问题。 但是、 由于我们只在我们的几个电路板中观察到这个问题、而其他电路板(以及同一电路板中的其他链路)中的链路运行正常、因此我们怀疑这些电路板是否存在任何潜在的信号完整性、元件或时序问题。 因此、我们正在进行分析以找出根本原因。 我们已在这些链路上运行 Vivado IBERT 测试、结果良好、与其他链路类似。
您能谈谈对于我们可以在重定时器侧进行的任何调试的看法吗?
-你能帮助如何捕获眼睛,只使用 I2C 接口,我们可以通过 MPSoC 处理器子部分(pertalinux)访问?
-是否有任何与通道相关的调整(如均衡)由重定时器进行,这可能会导致这种情况? 请分享您的想法。
-我们将尝试一次 RAW 模式选项。 原始模式是否完全绕过重定时器?
-请检查重定时器配置
请参阅我们在 Petalinux (OSC:25MHz)中运行的重定时器配置脚本的相关部分:
i2cset -y -m 0x01 -r 1 $SLAVE_ADDR 0xff 0x01
i2cset -y -m 0xFF -r 1 $SLAVE_ADDR 0xFC 0x01
i2cset -y -m 0x03 -r 1 $SLAVE_ADDR 0xff 0x03
i2cset -y -m 0x04 -r 1 $SLAVE_ADDR 0x00 0x04
i2cset -y -m 0x0c -r 1 $SLAVE_ADDR 0x0a 0x0c
i2cset -y -m 0xFF -r 1 $SLAVE_ADDR 0x60 0xD3
i2cset -y -m 0xFF -r 1 $SLAVE_ADDR 0x61 0xBC
i2cset -y -m 0xFF -r 1 $SLAVE_ADDR 0x62 0xD3
i2cset -y -m 0xFF -r 1 $SLAVE_ADDR 0x63 0xBC
i2cset -y -m 0xFF -r 1 $SLAVE_ADDR 0x64 0xFF
i2cset -y -m 0x04 -r 1 $SLAVE_ADDR 0x09 0x04
i2cset -y -m 0x70 -r 1 $SLAVE_ADDR 0x18 0x00
i2cset -y -m 0x0C -r 1 $SLAVE_ADDR 0x0A 0x0C
i2cset -y -m 0x0C -r 1 $SLAVE_ADDR 0x0A 0x00
i2cset -y -m 0x60 -r 1 $SLAVE_ADDR 0x31 0x20
i2cset -y -m 0x08 -r 1 $SLAVE_ADDR 0x1E 0x08
i2cset -y -m 0x80 -r 1 $SLAVE_ADDR 0x3D 0x80
i2cset -y -m 0x40 -r 1 $SLAVE_ADDR 0x3D 0x00
i2cset -y -m 0x40 -r 1 $SLAVE_ADDR 0x3f 0x40
i2cset -y -m 0x40 -r 1 $SLAVE_ADDR 0x3e 0x40
i2cset -y -m 0x1F -r 1 $SLAVE_ADDR 0x3D 0x0F
i2cset -y -m 0x0F -r 1 $SLAVE_ADDR 0x3f 0x00
i2cset -y -m 0x0F -r 1 $SLAVE_ADDR 0x3e 0x03
i2cset -y -m 0x0C -r 1 $SLAVE_ADDR 0x0a 0x00