news 2026/8/21 6:22:52

FPGA SERDES 通用基础(七)Xilinx 7 系列 GTX TX Buffer 与 RX Elastic Buffer

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FPGA SERDES 通用基础(七)Xilinx 7 系列 GTX TX Buffer 与 RX Elastic Buffer

GTX 的 TX 和 RX 数据通路都跨越两个内部并行时钟域。发送方向需要从 TXUSRCLK 域进入 XCLK 域,接收方向需要从 XCLK 域进入 RXUSRCLK 域。如果两个时钟域之间的相位关系没有得到处理,PCS 与 PMA 之间就无法稳定传递并行数据。

7 系列 GTX 为此提供了两种实现方式:保留 Buffer,由缓冲器吸收时钟域之间的相位差;或者旁路 Buffer,改用 Phase Alignment 电路建立相位关系。本文重点说明默认 Buffer 模式,结合 UG476 的时钟域框图、模式对比表和端口表,分析 TX Buffer 与 RX Elastic Buffer 的位置、配置关系、状态监测和工程取舍。

1. 缓冲器在收发通路中的位置

TX 与 RX 的缓冲器都位于 PCS 内部,但两侧的数据方向和时钟边界相反:

TX:FPGA TX Interface → TX PCS(TXUSRCLK)→ TX Buffer → TX PMA(XCLK)→ PISO RX:SIPO → RX PMA 并行侧(XCLK)→ RX Elastic Buffer → RX PCS(RXUSRCLK)→ FPGA RX Interface

TX架构使用时钟域划分,虚线将发送通路划分为四个时钟区域。最右侧的 FPGA TX Interface 工作在 TXUSRCLK2 域,负责接收 FPGA 逻辑提供的并行数据和控制信号;进入 TX PCS 后,8B/10B Encoder、TX Gearbox 等模块主要工作在 TXUSRCLK 域。继续向左,数据跨过 Phase Adjust FIFO 后进入 PMA Parallel Clock,也就是 XCLK 域,随后由 PISO 完成并串转换,最终进入 TX Serial Clock 域。

图中的 Phase Adjust FIFO 就是 TX Buffer 在数据通路中的核心位置。它处于 TXUSRCLK 与 XCLK 的交界处,写入侧按 TXUSRCLK 接收 PCS 并行数据,读出侧按 XCLK 将数据送往 PMA。Buffer 不改变字符内容、编码格式或并行位宽,只处理两个同频时钟域之间的相位关系。

Phase Adjust FIFO 上下两条路径和相邻多路选择器还表明,TX Buffer 并不是不可替代的固定级。使用 Buffer 时,数据通过 FIFO 完成时钟域衔接;旁路 Buffer 时,数据绕过 FIFO,但必须由 TX Phase Alignment 电路建立 TXUSRCLK 与 XCLK 的相位关系。两种方式解决的是同一个边界问题,不能同时省略。

RX架构使用时钟域划分,接收模拟前端和 CDR 工作在 RX Serial Clock 域,SIPO 将串行码流转换成并行数据后,数据进入 PMA Parallel Clock,也就是 XCLK 域。Polarity、Comma Detect and Align、8B/10B Decoder 位于 Elastic Buffer 之前,因此这些模块处理的仍是恢复时钟体系下的并行数据。

RX Elastic Buffer 正好跨在 XCLK 与 RXUSRCLK 的边界上。写指针跟随恢复时钟侧的 XCLK,读指针跟随用户侧的 RXUSRCLK;通过在存储空间中保持一定读写间隔,Buffer 可以隔离两侧的相位差。数据离开 Buffer 后,RX Gearbox 等后级逻辑工作在 RXUSRCLK 域,最右侧 FPGA RX Interface 则使用 RXUSRCLK2 与用户逻辑交换数据。

RXUSRCLK2 是 FPGA Interface 的主要同步时钟,但它不是 RX Elastic Buffer 的读时钟。图中虚线边界清楚表明,Elastic Buffer 直接连接的是 XCLK 与 RXUSRCLK,RXUSRCLK 到 RXUSRCLK2 的频率关系由接口位宽组织决定。图中绕过 Elastic Buffer 的支路用于 Buffer Bypass;选择该支路后,存储缓冲不再承担跨域作用,必须改由 RX Phase Alignment 完成 XCLK 与 RXUSRCLK 的相位匹配。

UG476 对 Buffer 模式与 Phase Alignment 模式的取舍分别给出了 TX、RX 两张对比表。

从易用性、时延和多 Lane 去偏斜三个维度比较 TX Buffer 与 TX Phase Alignment。

在易用性方面,TX Buffer 是 UG476 推荐的默认方案。Buffer 能容纳两个时钟域的初始相位差,初始化时不需要用户逻辑执行额外的相位对齐序列。Phase Alignment 则要求 TXOUTCLKSEL 选择 GTX 参考时钟作为 TXOUTCLK 的来源,并由 TXOUTCLK 驱动 TXUSRCLK,同时增加对齐控制逻辑和相应的时钟约束,因此属于更高阶的使用方式。

在时延方面,Buffer 内部的存储和读写控制会增加数据通路延迟。旁路 Buffer 后,数据通过更少的寄存级进入 PMA,并由专用相位对齐电路维持时钟关系,因此能够获得更低、可重复的发送时延。

在多 Lane 应用中,各 Channel 的时钟树和内部路径可能产生 Lane 间偏斜。TX Buffer 本身不负责让多个 Lane 的输出同时到达;需要减小发送端 Lane 间偏斜时,可以使用 TX Phase Alignment,使参与对齐的 Channel 在相同线路速率下建立统一的相位关系。

RX Elastic Buffer 不只处理相位差,还参与接收端的频差补偿和多 Lane 对齐。

在时钟选择方面,保留 Elastic Buffer 时,RXUSRCLK 可以来自恢复时钟,也可以来自频率接近的本地时钟。若使用本地时钟,收发两端参考源的 ppm 偏差会使 Buffer 占用量缓慢移动,需要 Clock Correction 通过插入或删除规定的校正序列,把读写间隔维持在允许范围内。旁路 Buffer 后不再有空间吸收这种长期频差,因此 RXUSRCLK 必须使用 RX 恢复时钟派生。

在初始化方面,Elastic Buffer 随 RX 数据通路完成复位后即可建立读写关系;Phase Alignment 必须等恢复时钟和用户时钟稳定,再执行相位与延迟对齐过程。其优势是移除了缓冲存储,能够获得更低且更确定的接收时延。

Clock Correction 与 Channel Bonding 都依赖 Elastic Buffer 的可变占用空间。前者利用缓冲深度吸收收发两端的频率误差,后者通过调节各 Lane 的读出位置补偿 Lane 间到达偏斜。旁路 RX Buffer 后,这两项功能不能继续由 GTX 内部完成,如系统仍然需要它们,就必须在用户逻辑中重新实现。

2. TX Buffer:连接 TXUSRCLK 与 XCLK

TX Buffer 的写侧接收 TXUSRCLK 域数据,读侧向 XCLK 域输出数据。两侧时钟必须保持相同的平均数据处理速率,Buffer 只负责吸收相位差,不用于补偿长期频率偏差。

启用 TX Buffer 时,两个关键属性是配套关系:

配置关系设置作用
启用 TX BufferTXBUF_EN = TRUE数据通过 TX Buffer 连接两个时钟域
选择 Buffer 模式的 XCLKTX_XCLK_SEL = TXOUT使用 TXOUTCLK 作为 PMA 并行时钟域 XCLK 的来源

TX_XCLK_SEL=TXOUT 是使用 TX Buffer 时的模式要求。TXBUF_EN 选择是否经过缓冲器,TX_XCLK_SEL 则确定 PMA 并行侧 XCLK 的来源,两者共同建立 Buffer 模式的数据与时钟路径。

TXBUF_RESET_ON_RATE_CHANGE 不属于固定的启用条件。设置为 TRUE 时,GTX 在线速率变化后内部复位 TX Buffer;设置为 FALSE 时,需要由外部控制逻辑保证速率切换后的缓冲区重新初始化。是否启用取决于设计是否支持运行期速率切换及其复位方案。

TXBUFSTATUS[1:0] 报告 Buffer 状态。

TXBUFSTATUS[0] 是容量指示位。其值为 0 时,FIFO 占用量小于一半;为 1 时,FIFO 至少达到半满。该位适合观察复位后建立的初始读写间隔,不代表已经发生错误,也不要求仅因半满而执行复位。

TXBUFSTATUS[1] 是上溢或下溢汇总错误位。读指针追上写指针会导致下溢,写指针追上尚未读取的数据则会导致上溢,端口本身不进一步区分两种原因。该错误位具有 Sticky 特性,一旦拉高会保持到 TX Buffer 被复位,因此即使异常只出现了一个瞬间,用户逻辑仍能在随后读到故障记录。

正常配置下,TXUSRCLK 与 XCLK 的频率相同,Buffer 内部读写指针保持稳定间隔。二者之间允许存在相位差,这部分差异由 Buffer 深度吸收。如果时钟频率、接口位宽或复位过程配置错误,读写指针会持续靠近,最终触发上溢或下溢。

3. RX Elastic Buffer:连接 XCLK 与 RXUSRCLK

RX Elastic Buffer 的写侧由 XCLK 驱动,接收 SIPO 输出的并行数据;读侧由 RXUSRCLK 驱动,将数据送往 RX PCS 后段。RX 的 XCLK 通常由恢复时钟分频得到,而 RXUSRCLK 既可以由 RXOUTCLK 派生,也可以来自频率相近的本地时钟,因此两侧除了相位差,还可能存在 ppm(百万分之一)级频率偏差。

启用 RX Elastic Buffer 时,对应的模式关系如下:

配置关系设置作用
启用 RX Elastic BufferRXBUF_EN = TRUE数据通过 Elastic Buffer 进入 RXUSRCLK 域
选择 Buffer 模式的 XCLKRX_XCLK_SEL = RXREC使用 RX 恢复时钟作为 XCLK 来源

RXBUF_EN=TRUE 与 RX_XCLK_SEL=RXREC 共同构成 RX Buffer 模式。若旁路 Elastic Buffer,则应将 RX_XCLK_SEL 改为 RXUSR,并执行 RX Phase Alignment,不能只关闭 RXBUF_EN 而保持原来的时钟关系。

RXBUF_ADDR_MODE 用于进一步选择缓冲器的工作范围。FULL 模式使用完整地址空间,支持 Clock Correction 与 Channel Bonding;FAST 模式只进行相位补偿,不提供这两项功能。它属于功能选择,不应与 RXBUF_EN、RX_XCLK_SEL 的基本启用关系混在同一个“默认配置”概念中。

RXBUFSTATUS[2:0] 用于监测RX Elastic Buffer占用状态。

RXBUFSTATUS=000 表示 Buffer 占用量处于正常范围。001 表示有效字节数低于 CLK_COR_MIN_LAT,010 表示有效字节数高于 CLK_COR_MAX_LAT;这两种状态说明读写间隔已经偏离设定的目标区间,但尚未发生数据丢失。Table 4-40 还特别说明,在关闭 Clock Correction 时,将 RXBUF_ADDR_MODE 设为 FULL,仍可利用 001 和 010 观察缓冲区是否向低水位或高水位移动。

RXBUFSTATUS=101 表示下溢,110 表示上溢。与 TXBUFSTATUS[1] 不同,这两个 RX 错误码不是 Sticky 状态,异常条件消失后端口可能重新回到 000。因此 RX 侧不能只依赖软件偶尔读取一次状态,工程中通常需要在 RXUSRCLK2 域锁存错误、累计次数,或者通过 ILA 捕获故障前后的占用变化。出现 101 或 110 后,即使状态随后恢复,已受影响的数据也不能继续作为有效数据使用,应重新初始化 RX Elastic Buffer 或 RX 数据通路。

4. 两类缓冲器的功能

TX Buffer 与 RX Elastic Buffer 都用于处理 PCS 内部并行时钟域之间的关系,但二者并不对称。

对比项TX BufferRX Elastic Buffer
时钟边界TXUSRCLK → XCLKXCLK → RXUSRCLK
基本功能吸收同频时钟之间的相位差吸收相位差并隔离恢复时钟与用户时钟
长期频差补偿不支持可配合 Clock Correction
多 Lane 对齐不支持可配合 Channel Bonding
状态端口TXBUFSTATUS[1:0]RXBUFSTATUS[2:0]

TX 侧能够要求 TXUSRCLK 与 XCLK 同频,是因为两个时钟都属于本地发送时钟体系。Buffer 模式下,TX_XCLK_SEL=TXOUT,使 XCLK 由 TXOUTCLK 路径产生;工程中通常也使用 TXOUTCLK 经 FPGA 时钟资源生成 TXUSRCLK 和 TXUSRCLK2,因此它们具有共同的时钟根源和确定的频率关系。

这并不表示 TXUSRCLK 在所有设计中都必须直接由 TXOUTCLK 生成。用户也可以提供独立的 TXUSRCLK,但其频率必须与 TXOUTCLK/XCLK 严格匹配。TX Buffer 只能容纳缓冲深度范围内的相位差,不能像异步 FIFO 一样承受持续累积的频率误差。

RX 的情况不同。XCLK 跟随远端串行数据恢复出来的时钟,而 RXUSRCLK 可能来自本地时钟网络。若两端由独立晶振提供参考时钟,即使标称频率相同,也会存在容差与温漂。RX Elastic Buffer 因而需要保留可调节的读写间隔,并通过 Clock Correction 周期性修正长期频差。

5. 缓冲区状态与复位处理

TXBUFSTATUS[1] 拉高表示 TX Buffer 已经发生上溢或下溢。该状态为 Sticky,必须通过 GTTXRESET、TXPCSRESET,或者启用速率变化内部复位后重新初始化 TX Buffer。复位前应先检查 TXUSRCLK 与 XCLK 的频率、TX_DATA_WIDTH/TX_INT_DATAWIDTH 对应的用户时钟关系,以及 TX_XCLK_SEL 是否与 Buffer 模式一致。

RXBUFSTATUS 的上溢、下溢状态不是 Sticky,错误消失后可能返回 000,但发生异常时缓冲区数据已经失效。设计可以使用 RXBUFRESET 只重新初始化 Elastic Buffer,也可以通过 GTRXRESET 或 RXPCSRESET 重建更完整的 RX 数据通路。调试时应使用 ILA 或错误计数器捕获瞬态状态,不能只读取某一时刻的 RXBUFSTATUS。

缓冲区异常的定位顺序可以归纳为:

  1. 确认 CPLL/QPLL 锁定,TXOUTCLK/RXOUTCLK 持续输出;
  2. 核对 USRCLK、USRCLK2 与接口位宽的频率关系;
  3. 检查 BUF_EN 与 XCLK_SEL 是否采用同一工作模式;
  4. 观察 TXBUFSTATUS、RXBUFSTATUS 的具体编码;
  5. 修正时钟或配置问题后,再执行对应方向的 Buffer 或数据通路复位。

如果错误在初始化后立即出现,应优先检查时钟频率、位宽组合和模式属性;如果 RX 运行较长时间后才逐步接近上溢或下溢,则需要检查恢复时钟与本地 RXUSRCLK 的频差,以及 Clock Correction 是否获得了有效校正机会。

6. 缓冲与时延的工程取舍

保留 Buffer 的主要价值是实现稳健。缓冲器隔离了 PCS 与 PMA 并行时钟域,复位后的相位变化和时钟树偏斜不会直接破坏数据采样。TX Buffer 适合绝大多数发送配置,RX Elastic Buffer 则是使用本地 RXUSRCLK、Clock Correction 或 Channel Bonding 时的必要基础。

Buffer 的代价是增加数据通路时延。RX Elastic Buffer 的实际延迟还会受初始读写位置、Clock Correction 和 Channel Bonding 调整影响,因此不适合要求每次复位后时延完全一致的场景。

Buffer Bypass 移除缓冲存储,通过专用 Phase Alignment 电路匹配 XCLK 与 USRCLK,可获得更低、可重复的通路时延。相应代价是时钟来源受限、初始化流程更复杂,并需要额外的对齐控制与时序约束。RX 旁路 Buffer 后还会失去 GTX 内部的 Clock Correction 和 Channel Bonding。这部分将在第九篇结合自动与手动相位对齐流程展开。

7. 总结

TX Buffer 与 RX Elastic Buffer 都位于 PCS 内部并行时钟域的交界处。TX Buffer 连接 TXUSRCLK 与 XCLK,主要吸收本地同频时钟之间的相位差;RX Elastic Buffer 连接 XCLK 与 RXUSRCLK,除相位隔离外,还为频差补偿和多 Lane 对齐提供缓冲空间。

配置时应把 BUF_EN 与 XCLK_SEL 视为成对的模式选择,而不是互不相关的典型参数。调试则应从时钟频率、位宽关系和模式属性入手,再结合 TXBUFSTATUS、RXBUFSTATUS 判断读写关系是否稳定。只有在固定时延成为明确要求,并且系统能够承担更严格的时钟与对齐约束时,才需要进一步采用 Buffer Bypass。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 6:19:03

剪映找不到牛来模板怎么办?从入口核对到照片视频排障

目标问题:剪映里找不到牛来同款入口,怎样继续做照片视频?先别把旧教程里的按钮位置当成固定路径。当前页面截图里曾出现“你的牛,来了!一键生成同款图&视频”和“你的牛,来了!一键生成建模”…

作者头像 李华
网站建设 2026/8/21 6:18:54

掌机畅玩PC大作:Moonlight-Switch游戏串流5分钟上手指南

掌机畅玩PC大作:Moonlight-Switch游戏串流5分钟上手指南 【免费下载链接】Moonlight-Switch Moonlight port for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/mo/Moonlight-Switch 深夜到家,你瘫在沙发上掏出 Switch,却…

作者头像 李华
网站建设 2026/8/21 6:18:08

电容电阻销毁品牌大盘点:2026年8月Top5优缺点评价,哪个环保更安全?

当下, 电子废弃物处理正成为备受关注的环保议题品类之一, 你知晓不? 于我们日常普遍可见的电子相关元件当中, 电容以及电阻尽管体积特别微小, 然而一旦处理的操作方式不恰当, 却极有可能对环境形成长期的污染状况。就在今天, 我们要深入地去了解电容电阻销毁这一事情主体, 瞧瞧…

作者头像 李华
网站建设 2026/8/21 6:16:54

商汤日日新(SenseNova)大模型介绍及TRAE集成完全指南

商汤日日新(SenseNova)大模型介绍及TRAE集成完全指南 一、日日新(SenseNova)介绍 日日新(SenseNova)是商汤科技推出的原生多模态通用大模型系列。其名称取自《礼记大学》“苟日新,日日新&…

作者头像 李华
网站建设 2026/8/21 6:15:22

从零手写Transformer、KMP与AI Agent:深度理解算法与架构的实践指南

在实际技术学习和工程实践中,我们常常面临一个困境:面对复杂的数学公式、抽象的算法逻辑和庞大的系统架构,仅靠阅读论文、文档或观看视频,总感觉隔着一层纱,难以真正内化并建立深刻的理解。这种“一看就会,…

作者头像 李华
网站建设 2026/8/21 6:14:52

CT系统标定实战:从几何建模到FBP重建全流程

1. 这不是“套模板”的数模论文,而是一套可复现的CT系统标定实战方法论如果你翻过2017年高教社杯A题原始赛题,第一眼看到“CT系统参数标定及成像”这十个字,大概率会本能地联想到医学影像、放射物理、或者一堆抽象的Radon变换公式。但实话讲—…

作者头像 李华