GTX/GTH 的 TX Phase Adjust FIFO 和 RX Elastic Buffer 位于 PCS 数据通路中,用于隔离内部并行时钟域。启用 Buffer 时,收发器可以利用缓冲区吸收相位差;关闭 Buffer 后,数据通路缩短,但原来由缓冲区承担的时钟域衔接必须由 Phase Alignment 和 Delay Alignment 完成。
因此,Buffer Bypass 不是简单地关闭一个 FIFO。它同时改变数据经过的路径、用户时钟的来源以及初始化控制流程。本文结合 UG476 的支持模式表、时钟连接图和对齐时序,分别说明 GTX/GTH 的 TX、RX Buffer Bypass,并给出多 Lane 与确定性时延设计中的使用边界。
全文主线:关闭 Buffer → 建立同源用户时钟 → 执行 Phase Alignment → 持续进行 Delay Alignment → 获得较低且可重复的收发器内部时延。
1. Buffer Bypass 的数据与时钟边界
1.1 Buffer 模式与 Bypass 模式
TX 和 RX 两侧的缓冲器并不完全相同。TX Phase Adjust FIFO 主要连接 TXUSRCLK 与 TX XCLK;RX Elastic Buffer 除了连接 RX XCLK 与 RXUSRCLK,还可以承担 Clock Correction 和 Channel Bonding。两者关闭后都需要相位对齐,但 RX 侧同时会失去弹性缓冲区提供的频差补偿和多 Lane 去偏斜能力。
| 数据通路 | 数据经过 TX Phase Adjust FIFO 或 RX Elastic Buffer | 数据绕过对应缓冲器 |
| 时钟域衔接 | 由缓冲器吸收相位差 | 由 Phase/Delay Alignment 建立并维持关系 |
| 时延 | 包含缓冲深度及指针位置带来的时延 | 通路更短,GT 内部时延更容易重复 |
| RX Clock Correction | 可使用 | 不可依赖 RX Elastic Buffer 完成 |
| RX Channel Bonding | 可使用 | 不可依赖 RX Elastic Buffer 完成 |
| 控制复杂度 | 初始化流程相对简单 | 必须正确生成用户时钟并执行对齐流程 |
从数据方向看,两条旁路路径可以概括为:
TX:FPGA TX Interface → TX PCS → 绕过 TX Phase Adjust FIFO → TX PMA/PISO
RX:RX PMA/SIPO → RX PCS → 绕过 RX Elastic Buffer → FPGA RX Interface
Bypass 只移除了缓冲级,并没有移除 PCS、PMA 或串并转换。此时数据仍在内部并行时钟域与用户时钟域之间传递,只是两个时钟域之间不再存在可吸收相位差的存储空间。
1.2 Phase Alignment 与 Delay Alignment
UG476 将 Bypass 后的时钟调整分为两个相互衔接的过程。
Phase Alignment 用于初始化阶段。TX 侧建立 PISO 并行时钟域与 TX XCLK 之间的相位关系,RX 侧建立 SIPO 并行时钟域与 RX XCLK 之间的相位关系。该过程解决上电、复位或速率切换后未知的初始相位差。
Delay Alignment 用于运行阶段。温度、电压及器件内部延迟变化会使已经建立的相位关系缓慢漂移,Delay Alignment 持续调节用户时钟延迟,使数据采样位置保持在允许范围内。它不是重新搬移业务数据,也不是额外的弹性缓存。
两者的关系可以概括为:
Phase Alignment:建立初始相位关系
Delay Alignment:运行期间跟踪并维持该关系
1.3 用户时钟必须来自对应的 OUTCLK
Buffer Bypass 要求用户时钟与收发器内部并行时钟同源。仅保证频率相同并不够,两个独立时钟源即使标称频率一致,也可能存在无法控制的相位和长期频差。
TX 通常从选定 Channel 的 TXOUTCLK 出发,经 BUFG、MMCM 或 PLL 生成 TXUSRCLK 和 TXUSRCLK2;RX 则从恢复时钟对应的 RXOUTCLK 出发,生成 RXUSRCLK 和 RXUSRCLK2。
TXOUTCLK → 低偏斜时钟资源 → TXUSRCLK / TXUSRCLK2
RXOUTCLK → 低偏斜时钟资源 → RXUSRCLK / RXUSRCLK2
TXOUTCLK 和 RXOUTCLK 提供的是时钟来源,USRCLK/USRCLK2 负责驱动 PCS 内部通路及 FPGA 并行接口。对齐电路在这条同源时钟链上补偿相位,而不是让两个无关时钟强行同步。
2. GTX/GTH 支持模式
Buffer Bypass 的实现方式不能只按“单 Lane 使用自动、多 Lane 使用手动”概括。GTX 与 GTH、TX 与 RX 的支持范围并不完全相同,应先依据 UG476 的模式表确定控制方式。

TX 侧的支持关系如下:
- GTX 单 Lane 支持自动或手动模式;
- GTH 单 Lane 使用手动模式;
- GTX/GTH 多 Lane 均使用手动模式。

RX 侧的支持范围不同:
- GTX 与 GTH 单 Lane 均支持自动模式,但两者的控制接口和完成条件不同;
- GTX 多 Lane 使用手动模式;
- GTH 多 Lane 既可以使用手动模式,也可以使用自动模式。
表中 Auto 和 Manual 描述的是对齐流程由 GT 内部控制逻辑自动编排,还是由用户逻辑按规定时序驱动,并不表示 Manual 模式缺少相位调整硬件。特别需要注意,GTX 与 GTH 的 RX 单 Lane 自动模式并非相同接口的直接替换,跨器件迁移时必须重新检查 Wizard 生成的端口连接和完成信号。
3. TX Buffer Bypass
3.1 GTX 单 Lane 自动模式
GTX 单 Lane 自动模式把多步相位初始化封装在 GT 内部。用户发出一次 TXDLYSRESET,请求重新初始化 TX 延迟与相位对齐电路,随后依据完成反馈判断流程是否结束。

自动对齐应在 PLL 锁定、TXOUTCLK 路径有效且 TXUSRCLK/TXUSRCLK2 稳定后启动。TX 或 PLL 复位、参考时钟变化以及线路速率变化都会使原有相位关系失效,此时将 TXDLYSRESET 拉高以重新对齐 XCLK 与 TXUSRCLK,其高电平时间应小于 50 ns。TXDLYSRESETDONE 拉高表示延迟与相位调整电路完成复位,该信号至少保持 100 ns,但并不代表整个对齐过程已经结束。
随后需要观察 TXPHALIGNDONE 的变化。第一次高电平脉冲至少保持 100 ns,第二个上升沿才表示初始 Phase Alignment 完成;此后 TXPHALIGNDONE 保持为高,直到下一次重新启动对齐。Delay Alignment 则继续调整 TXUSRCLK 的延迟,以补偿温度和电压变化造成的内部时延漂移。如果 TXPHALIGNDONE 没有按照图示顺序变化,UG476 要求重新拉高并释放 GTTXRESET,再重新执行对齐流程。
3.2 GTX/GTH 单 Lane 手动模式
手动模式把自动流程中的关键阶段开放给用户控制。GTX 可以选择手动模式,GTH TX 单 Lane 则必须采用手动模式。

手动模式下,TXPHDLYRESET 与 TXDLYBYPASS 保持为低,TXPHALIGNEN 保持为高。控制逻辑先拉高 TXDLYSRESET,并保持到 TXDLYSRESETDONE 返回;释放 TXDLYSRESET 后再拉高 TXPHINIT,等待 TXPHINITDONE 上升沿完成相位初始化。随后释放 TXPHINIT、拉高 TXPHALIGN,等到 TXPHALIGNDONE 上升沿后再释放 TXPHALIGN。
此时拉高 TXDLYEN 会使 TXPHALIGNDONE 先拉低,TXDLYEN 需要保持为高,直到 TXPHALIGNDONE 再次出现上升沿。该上升沿表示 Phase Alignment 已经转入持续的 Delay Alignment,之后 TXDLYEN 继续保持为高,用于补偿 TXUSRCLK 随温度和电压产生的延迟变化。整组信号是严格的握手链,工程状态机应同时记录当前控制信号、对应完成反馈和超时计数,不能脱离执行位置单独判断某个 DONE 信号。
3.3 多 Lane 手动相位对齐
多 Lane TX Bypass 的目标不是让各 Lane 各自找到一个局部可用相位,而是让它们在同一用户时钟体系下完成一致的相位关系。UG476 先给出了对齐前后的时钟变化。

对齐前,各 Lane 内部 XCLK 相位可能不同;对齐后,它们相对于共享 TXUSRCLK 建立一致关系。残余偏差主要来自公共时钟分配和器件内部路径,而不是由各 Lane 的独立 FIFO 指针决定。
多 Lane 设计通常选择一个 Master Channel 输出 TXOUTCLK,再由低偏斜时钟资源生成所有参与 Lane 共用的 TXUSRCLK 和 TXUSRCLK2。

图中的 Master 不是数据协议主节点,而是共享用户时钟的来源及相位对齐次序的基准。所有 Slave 必须使用与 Master 同源的用户时钟;如果每条 Lane 独立生成 TXUSRCLK,即使频率相同,也无法依靠手动对齐建立稳定的跨 Lane 关系。

图中 M_ 前缀表示 Master Lane,S_ 前缀表示一个或多个 Slave Lane。控制逻辑先同时拉高所有 Lane 的 TXDLYSRESET,并根据各自的 TXDLYSRESETDONE 分别释放复位。所有 Lane 完成该握手后,Master 依次执行 TXPHINIT、TXPHALIGN 和一次 TXDLYEN 握手,建立公共用户时钟的相位基准;随后各 Slave 再执行 TXPHINIT 和 TXPHALIGN,使其内部并行时钟对齐到同一个 TXUSRCLK。
Slave 全部完成后,控制逻辑再次拉高并保持 Master 的 TXDLYEN。该动作使 Master 的 TXPHALIGNDONE 先拉低,待其重新拉高后,多 Lane Phase/Delay Alignment 才算完成;运行期间继续保持 Master TXDLYEN 为高,由 Master 的延迟调整路径补偿公共 TXUSRCLK 的温度和电压漂移。工程状态机应保存每条 Lane 的完成状态,任何一个 Slave 未返回反馈都不能被汇总完成信号掩盖。
4. RX Buffer Bypass
4.1 RX 相位对齐的基本关系
RX Buffer Bypass 比 TX 更依赖接收链路状态。RXOUTCLK 来自接收恢复时钟路径,CDR 尚未稳定时,RXOUTCLK 及其派生的 RXUSRCLK 不具备可靠的频率和相位基础,因此不能过早启动对齐。

图中可以分出三层时钟关系:SIPO 使用恢复得到的内部并行时钟输出数据;RX XCLK 在 PCS 内承接这组并行数据;RXUSRCLK/RXUSRCLK2 则由 RXOUTCLK 经低偏斜资源生成。关闭 RX Elastic Buffer 后,Phase Alignment 负责建立 SIPO 并行侧与 RX XCLK 的初始相位关系,Delay Alignment 负责在运行期间维持该关系。
因此,RX 对齐至少需要满足三个前置条件:接收端退出电气空闲,CDR 已经获得稳定恢复时钟,RXOUTCLK 派生的用户时钟已经稳定。若在这些条件满足前启动,对齐完成信号即使发生变化,也不代表数据通路已经具备可靠采样条件。
4.2 GTX 与 GTH 单 Lane 自动模式
GTX 单 Lane RX 自动模式由 RXDLYSRESET 启动,并通过 RXDLYSRESETDONE 和 RXPHALIGNDONE 判断执行进度。

执行前必须确认 RXELECIDLE 已经撤销、RX CDR 已锁定,并且由 RXOUTCLK 生成的 RXUSRCLK/RXUSRCLK2 已经稳定。随后将 RXDLYSRESET 拉高且保持时间小于 50 ns,RXDLYSRESETDONE 至少保持 100 ns;RXPHALIGNDONE 的第一次高电平脉冲同样至少保持 100 ns,其第二个上升沿才表示初始相位对齐完成,并保持为高直至下一次启动。完成后,RX Delay Alignment 持续调整 RXUSRCLK,以补偿温度和电压变化。若 GTX 复位或速率切换后 FPGA 接口数据仍然无效,应在 CDR 锁定条件下重新执行该流程。
GTH 单 Lane 同样支持自动模式,但使用 RXSYNC 接口组织同步过程。端口连接和时序如下。

单 Lane 中,RXSYNCMODE 选择自动同步方式,RXSYNCALLIN 汇总本 Lane 的相位对齐状态,内部同步控制最终通过 RXSYNCDONE 给出流程完成结果。

GTH 单 Lane 自动对齐同样要求 RXELECIDLE 撤销、RX CDR 锁定以及用户时钟稳定。RXDLYSRESET 的高电平时间应小于 50 ns,随后 RXDLYSRESETDONE 至少保持 100 ns。内部相位调整通过 RXPHALIGNDONE 反映状态,但整个 RXSYNC 自动流程以 RXSYNCDONE 拉高作为完成判据;RXSYNCDONE 会保持为高,直到下一次重新启动对齐。完成后,RXPHALIGNDONE 用于指示当前相位关系是否已经建立并得到维持,RX Delay Alignment 则继续调整 RXUSRCLK 以补偿温度和电压变化。因此,设计从 GTX 迁移到 GTH 时,不能只替换原语名称并沿用 GTX 的第二个 RXPHALIGNDONE 上升沿作为最终判据。
4.3 GTX/GTH 多 Lane 手动模式
GTX 与 GTH 均支持 RX 多 Lane 手动对齐。与 TX 一样,多 Lane 需要公共用户时钟,但 RX 时钟来源必须选自参与对齐的某个 Master Channel 的恢复时钟路径。

Master RXOUTCLK 经 BUFG、MMCM/PLL 等低偏斜资源生成共享 RXUSRCLK 和 RXUSRCLK2,再分配给 Master 与所有 Slave。这里的关键不是简单地把端口连接在一起,而是确保所有 Lane 的用户时钟来自同一恢复时钟基准,并满足对应线路速率和接口位宽所要求的频率关系。

手动流程应在任一 Lane 退出 RXELECIDLE、且所有参与 Lane 的 RX CDR 均已锁定后启动。控制逻辑同时拉高各 Lane 的 RXDLYSRESET,并在对应 RXDLYSRESETDONE 返回后分别释放复位;随后先拉高 Master 的 RXPHALIGN,等待 Master RXPHALIGNDONE 上升沿后释放 RXPHALIGN,再通过一次 RXDLYEN 握手完成 Master 的相位和延迟对齐。Master 建立基准后,各 Slave 同时执行 RXPHALIGN,并依据各自的 RXPHALIGNDONE 分别结束握手。
所有 Slave 完成后,控制逻辑再次拉高并保持 Master RXDLYEN,使 Master RXPHALIGNDONE 先拉低再重新拉高。该重新上升表示多 Lane 对齐完成,此后由 Master Delay Alignment 持续调整共享 RXUSRCLK。这里没有 TX 手动流程中的 PHINIT 步骤;控制器仍需保存每条 Lane 的完成反馈,若任一 Lane 在复位或速率切换后数据无效,应等待全部 CDR 重新锁定,再对整个 Lane 组重新执行对齐。
需要区分的是,RX Phase Alignment 解决的是各 Lane 内部恢复时钟、XCLK 与共享用户时钟之间的相位关系;它不分析协议中的对齐字符,也不等同于 Channel Bonding 对线路传播偏斜的补偿。
4.4 GTH 多 Lane 自动模式
GTH RX 额外支持多 Lane 自动模式。它以一条 Lane 作为 Master,通过 RXSYNCOUT、RXSYNCIN、RXSYNCALLIN 和 RXSYNCDONE 在 Lane 之间传递同步状态。

Master 使用自动同步模式,Slave 接收 Master 发出的同步控制。各 Lane 的 RXPHALIGNDONE 被汇总到 RXSYNCALLIN,只有所有参与 Lane 都完成相位对齐后,Master 才能给出整体完成结果。该结构将多 Lane 协调逻辑放入 GTH 的 RXSYNC 机制中,减少用户状态机逐 Lane 编排手动握手的工作量。

多 Lane 自动模式应在任一 Lane 退出 RXELECIDLE、所有 Lane 的 RX CDR 均已锁定且共享 RXUSRCLK 稳定后启动。Master 与 Slave 分别接收持续时间小于 50 ns 的 RXDLYSRESET,各自的 RXDLYSRESETDONE 至少保持 100 ns;随后各 Lane 通过 RXPHALIGNDONE 报告本地相位调整状态,RXSYNCOUT/RXSYNCIN 则在 Master 与 Slave 之间传递同步过程。只有汇总到 RXSYNCALLIN 的 Lane 状态全部满足要求,Master RXSYNCDONE 才会拉高,表示整个 Lane 组完成自动对齐,并保持到下一次重新启动。
Master RXSYNCDONE 拉高后,Master RXPHALIGNDONE 用于反映相位关系是否已经建立并持续保持,RX Delay Alignment 继续调节共享 RXUSRCLK 以补偿温度和电压变化。自动模式减少了外部逐 Lane 编排握手的工作量,但没有取消公共用户时钟、CDR 锁定和重新对齐要求;其中任一 Lane 复位、失锁或改变速率后,都应重新评估并启动整个 Lane 组的同步流程。
5. 多 Lane 与确定性时延的边界
Buffer Bypass 常用于低时延或确定性时延设计,但“确定性”需要明确范围。
首先,Bypass 改善的是 GT 内部并行通路时延的可重复性。 缓冲器启用时,写指针、读指针和初始化时刻会影响缓冲深度;Bypass 后,这部分可变因素被移除,并由相位对齐建立可重复关系。它不意味着链路时延为零。
其次,Phase Alignment 不等同于多 Lane 数据去偏斜。 相位对齐处理内部时钟域关系;PCB 走线、连接器、远端发送时刻以及 CDR 获取过程造成的 Lane 间数据偏斜,仍需协议或用户逻辑处理。若系统需要 GTX/GTH 内建的 Channel Bonding,应保留 RX Elastic Buffer,或在外部逻辑中设计等效的对齐机制。
最后,确定性必须按整条链路验证。 GT 内部时延可重复,并不能自动保证 FPGA 逻辑、跨时钟处理、协议训练和远端设备都具有固定时延。工程验收应在多次上电、复位、失锁恢复和速率切换后重复测量端到端延迟,而不是只观察一次对齐完成信号。
对于 SSI 器件,多 Lane Bypass 还受到 SLR 边界和时钟分配的限制。跨 SLR 的 Lane 组不能直接套用同一区域内的公共时钟连接,需要额外的时钟设计与器件级验证;UG476 模式表中的脚注应作为架构约束处理,而不是实现结束后的附加检查。
6. 配置与调试路径
是否关闭 Buffer,应从功能需求而不是“时延越小越好”出发。
| 优先保证链路易用性,需要 RX Clock Correction 或 Channel Bonding | 保留 RX Elastic Buffer |
| 单 Lane、同源时钟、要求降低并固定 GT 内部时延 | 可采用 Buffer Bypass |
| 多 Lane 且已建立公共用户时钟,需要可重复的内部时延 | 按器件支持表选择手动或自动多 Lane 对齐 |
| Lane 跨 SLR、恢复时钟路径复杂或端到端时延尚未定义 | 先完成时钟与时延预算,再决定是否 Bypass |
配置阶段应先确定器件类型、收发方向和 Lane 数,再选择模式。用户时钟连接、Buffer 属性以及 Wizard 生成的辅助逻辑应作为一个整体检查,不能只把 TXBUF_EN 或 RXBUF_EN 改为 FALSE 就认为旁路已经完成。
调试时建议沿状态依赖逐级观察:
PLL/CDR 稳定
↓
TXOUTCLK 或 RXOUTCLK 有效
↓
USRCLK / USRCLK2 稳定且频率正确
↓
DLYSRESET 与 DLYSRESETDONE 握手
↓
PHINIT / PHALIGN 或 RXSYNC 流程完成
↓
运行期 Delay Alignment 保持有效
常见现象可以据此定位:
| DLYSRESETDONE 不返回 | PLL/CDR、OUTCLK、用户时钟及复位释放顺序 |
| PHINITDONE 或 PHALIGNDONE 超时 | 手动时序是否按顺序执行,属性与模式是否匹配 |
| 单 Lane 可用,多 Lane 无法整体完成 | Master 时钟来源、共享 USRCLK、逐 Lane 完成状态和 RXSYNC 连接 |
| 完成信号正常但数据不稳定 | 用户时钟频率、CDR 状态、位宽配置及外部数据对齐 |
| 复位后时延偶尔变化 | 是否遗漏重新对齐,是否仍存在未受控的跨时钟或协议缓冲级 |
调试的核心不是孤立地等待某个 DONE 信号,而是确认该信号出现时,其所有前置时钟与状态条件均已满足。对多 Lane 设计,还应保留每条 Lane 的当前阶段和超时计数,避免一个汇总信号掩盖局部故障。
7. 总结
GTX/GTH Buffer Bypass 通过绕过 TX Phase Adjust FIFO 或 RX Elastic Buffer,缩短 PCS 内部数据路径,并移除缓冲指针对时延的影响。关闭缓冲器后,TXOUTCLK/RXOUTCLK 与用户时钟必须保持同源,再由 Phase Alignment 建立初始相位关系、由 Delay Alignment 持续补偿运行期间的延迟漂移。
不同器件和收发方向支持的控制模式并不相同:TX 侧除 GTX 单 Lane 外主要采用手动模式;RX 侧 GTX/GTH 单 Lane 支持自动模式,GTX 多 Lane 采用手动模式,GTH 多 Lane 还支持 RXSYNC 自动模式。工程设计应先依据模式表确定实现方式,再围绕公共用户时钟、完成反馈、超时重试和重新对齐条件构建控制状态机。对于需要 Clock Correction、Channel Bonding 或跨 SLR 时钟分配的系统,还必须把 Buffer Bypass 与整条链路的功能和时延边界一并权衡。

