尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

FPGA SERDES 通用基础(九)Xilinx 7 系列 GTX/GTH Buffer Bypass 与相位对齐

FPGA SERDES 通用基础(九)Xilinx 7 系列 GTX/GTH Buffer Bypass 与相位对齐 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 XCLKRX Elastic Buffer 除了连接 RX XCLK 与 RXUSRCLK还可以承担 Clock Correction 和 Channel Bonding。两者关闭后都需要相位对齐但 RX 侧同时会失去弹性缓冲区提供的频差补偿和多 Lane 去偏斜能力。对比项Buffer 模式Buffer Bypass 模式数据通路数据经过 TX Phase Adjust FIFO 或 RX Elastic Buffer数据绕过对应缓冲器时钟域衔接由缓冲器吸收相位差由 Phase/Delay Alignment 建立并维持关系时延包含缓冲深度及指针位置带来的时延通路更短GT 内部时延更容易重复RX Clock Correction可使用不可依赖 RX Elastic Buffer 完成RX Channel Bonding可使用不可依赖 RX Elastic Buffer 完成控制复杂度初始化流程相对简单必须正确生成用户时钟并执行对齐流程从数据方向看两条旁路路径可以概括为TXFPGA TX Interface → TX PCS → 绕过 TX Phase Adjust FIFO → TX PMA/PISO RXRX PMA/SIPO → RX PCS → 绕过 RX Elastic Buffer → FPGA RX InterfaceBypass 只移除了缓冲级并没有移除 PCS、PMA 或串并转换。此时数据仍在内部并行时钟域与用户时钟域之间传递只是两个时钟域之间不再存在可吸收相位差的存储空间。1.2 Phase Alignment 与 Delay AlignmentUG476 将 Bypass 后的时钟调整分为两个相互衔接的过程。Phase Alignment用于初始化阶段。TX 侧建立 PISO 并行时钟域与 TX XCLK 之间的相位关系RX 侧建立 SIPO 并行时钟域与 RX XCLK 之间的相位关系。该过程解决上电、复位或速率切换后未知的初始相位差。Delay Alignment用于运行阶段。温度、电压及器件内部延迟变化会使已经建立的相位关系缓慢漂移Delay Alignment 持续调节用户时钟延迟使数据采样位置保持在允许范围内。它不是重新搬移业务数据也不是额外的弹性缓存。两者的关系可以概括为Phase Alignment建立初始相位关系 Delay Alignment运行期间跟踪并维持该关系1.3 用户时钟必须来自对应的 OUTCLKBuffer Bypass 要求用户时钟与收发器内部并行时钟同源。仅保证频率相同并不够两个独立时钟源即使标称频率一致也可能存在无法控制的相位和长期频差。TX 通常从选定 Channel 的 TXOUTCLK 出发经 BUFG、MMCM 或 PLL 生成 TXUSRCLK 和 TXUSRCLK2RX 则从恢复时钟对应的 RXOUTCLK 出发生成 RXUSRCLK 和 RXUSRCLK2。TXOUTCLK → 低偏斜时钟资源 → TXUSRCLK / TXUSRCLK2 RXOUTCLK → 低偏斜时钟资源 → RXUSRCLK / RXUSRCLK2TXOUTCLK 和 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 Bypass3.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 LaneS_ 前缀表示一个或多个 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 Bypass4.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 nsRXDLYSRESETDONE 至少保持 100 nsRXPHALIGNDONE 的第一次高电平脉冲同样至少保持 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 与整条链路的功能和时延边界一并权衡。
返回列表