本文作者:AMD 工程师 Zhang Cheng
AMD Versal™ XPHY 的输入延时(Input delay)可将输入的串行数据延迟最多 512 个 Tap(0–511),单级至少可提供约 625 ps 的延迟范围,输出延时(Output delay)同样为 512 个 Tap、约 625 ps。这些延时线是校准型的,由 XPHY nibble 的 BISC/VTC 自动校准,并通过 RIU 及 CASCADE_<0-5> 属性控制。当单级输入延时不够用时,可将该 NIBBLESLICE 的输出延时级联到其输入延时之后,把输入延时扩展至 1024 个 Tap(0–1023),从而获得约 1250 ps 的总延迟范围。需要注意的是,这种级联只能用于扩展输入路径(即延迟输入缓冲),输出路径的延时无法通过级联加长。
由于截至 2026.1 版本,Advanced IO Wizard 未提供直接配置 XPHY 的延时级联的选项,本文将介绍 XPHY 的延时级联的实现方法,并在 VPK180 开发板上进行验证。
级联规则与使能方法
首先,了解一下 XPHY 的 IODELAY 的级联规则,主要是以下 3 条:
1. 只有 IDELAY 可以级联使用 ODELAY 增加输入延时
2. ODELAY 无法使用 IDELAY 实现级联
3. XPIO 单个 IODELAY 可实现 625ps 的延时,级联后为1.25ns
设置 IODELAY 级联属性的方法:综合完成后打开原理图,找到 RX 端口的 XPHY 模块,可以看到 XPHY 有 CASCADE_0 - CASCADE_5 的属性,分别对应 XPHY 的 6 个外部 DATAIN 输入端口,把使用到的输入端口属性设置为 TRUE,参考下图:

也可以通过下面的命令也设置属性:

注意黄色部分需要按照实际工程修改
为了方便测试,把用于控制延时的 LD、CE、RXTX_SEL、CNTVALUEIN 和 INC 等管脚连接到 VIO 的输出端口,把 CNTVALUEOUT 连接到输入端口,用于判断延时是否生效,通过 ILA 观察接收数据的变化规律。同时,使用 2 个工程分别使能了级联模式和未使能级联模式来做对比。
硬件连接
为了适配 VPK180 和 XM-107 的硬件,需要按照 XM-107 Loopback 卡的连接关系约束管脚,下图是 XM-107 的物理连接。

图中可以看到,LA[00:16] 与 LA[17:33] 通过 PCB 走线直接连接,可用于 DC 耦合的场景,而 DP[0:9]_M2C 和- DP[0:9]_C2M 通过电容连接,适用于 AC 耦合的场景。本工程中采用 DC 耦合,TX 和 RX 各 10 组数据线以及一路 Strobe 信号,这里将 RX [0:9] 管脚约束到 LA [00:09] ,TX [0:9] 管脚约束到 LA [17:26] ,RX Strobe 和 TX Strobe 分别约束到 LA [10] 和 LA [27] 。
在 VPK180 的原理图上找到相关的网表,其中 LA[00:10] 分布在 Bank710,LA[17:26] 分布在 Bank709,当 XM107 插在 VPK180 的 FMCP 接口时,等同于将下图蓝色虚线框中的管脚通过导线连在了一起。

上板验证
1. 生成 PDI。
2. 将 XM-107 插入 VPK180 的 FMCP 接口上,如下图所示:

3. 插上 JTAG 线,识别器件下载 PDI。
结果对比
1. 没有级联的工程
TX固定发送高 8 位 AA,外部环回到 RX,RX 端设置为 RXTX_SEL=0(使用IDELAY),控制 CE=1 INC=0,此时可以看到 CNTVALUEOUT 会变化,并且 RX 端的并行数据会周期性变化。

TX 固定发送高 8 位 AA,外部环回到 RX,RX 端设置为RXTX_SEL=1(使用ODELAY),控制CE=1 INC=0,此时可以看到 CNTVALUEOUT 会变化,ILA 设置触发条件为 RX 并行数据不等于 0xAA,从图中可以看到 ILA 一直在等待中,RX 端的并行数据不会周期性化。
这就说明没有使能级联属性的工程,IDELAY 生效,而 ODELAY 不生效。
2. 有级联的工程
TX 固定发送高 8 位 AA,外部环回到 RX,RX 端设置为 RXTX_SEL=1(使用ODELAY),控制 CE=1 INC=0,此时可以看到 CNTVALUEOUT 会变化,RX 端的并行数据也会周期性变化。
这就说明在使能了级联模式后,ODELAY 也已经生效。
文章来源:Xilinx开发者社区