云计算百科
云计算领域专业知识百科平台

FPGA SERDES 通用基础(十二)RX CDR:鉴相与恢复时钟

高速串行链路只传输串行数据,不会额外传输一条与每个比特同步的采样时钟。RX 可以由本地参考时钟和 PLL 建立满足线路速率要求的高速时钟,但如果发送端与接收端使用各自的时钟源,两者之间没有固定的相位关系,也可能存在微小的频率偏差。因此,本地生成的高速时钟虽然频率满足要求,其边沿却不一定落在合适的采样位置,不能直接用于可靠的数据判决。

RX CDR 的作用是从输入数据的跳变中获得相位信息,并通过反馈环路不断调整采样时钟。边沿采样点需要跟随数据跳变,真正用于判决 0/1 的数据采样点则应位于相邻跳变之间。经过 CDR 调整后的恢复时钟既用于串行数据判决,也为后续串并转换和并行时钟分频提供基础。本文从 RX 数据与采样时钟的关系出发,依次说明鉴相、相位插值、连续跟踪以及恢复时钟的分频路径。

1. CDR 在 RX 数据通路中的位置

RX CDR 位于接收模拟前端之后、SIPO 之前。RXP/RXN 输入经过端接和接收均衡后,仍然是随时间连续变化的高速模拟波形;CDR 在这一位置恢复并跟踪采样相位,采样器完成 0/1 判决后,数据再进入串并转换和 RX PCS。

RXP/RXN → RX 模拟前端与均衡 → RX CDR → SIPO → RX PCS → FPGA RX Interface

└→ Recovered Clock

这一位置决定了 CDR 同时连接两条路径。数据路径把串行波形判决为 0/1,并送往 SIPO;时钟路径则产生与输入数据边沿保持确定相位关系的 Recovered Clock(恢复时钟),作为 RX PMA 串并转换和后续并行分频的时钟基础。

CPLL/QPLL 与 CDR 的分工也需要在这里区分。CPLL/QPLL 根据参考时钟和分频配置建立目标线路速率所需的高速基础时钟,解决“频率范围是否正确”;CDR 观察实际输入数据的边沿位置并调节采样相位,解决“在一个 UI 内何时采样”。因此,CPLL/QPLL 锁定只能说明基础时钟已经建立,不能直接证明接收数据已经被正确采样。

2. Bang-Bang 鉴相与 CDR 闭环

RX CDR 使用 Bang-Bang Phase Detector(BBPD) 判断边沿采样位置相对数据跳变是偏早还是偏晚。Bang-Bang 源于控制理论中的二值控制:鉴相器只输出 Early 或 Late 两种方向信息,不给出连续的相位误差大小。这里的 Early/Late 表示采样相位偏早或偏晚,下文将这种判决方式简称为 Bang-Bang 鉴相。

当边沿采样点早于数据跳变时,鉴相器输出 Early,CDR FSM 控制 Phase Interpolator 将采样相位向较晚方向移动;采样点晚于数据跳变时,则输出 Late,并向较早方向调整。数据没有发生跳变时,当前样本不能提供新的相位方向信息。采样相位接近数据边沿后,Early 和 Late 通常会交替出现,相位插值器围绕目标位置进行小范围双向修正。

图中数据由左向右传输。RXP/RXN 经过 Linear EQ 和 DFE 后,同时进入 Edge Sampler(也称 Crossing Sampler)与 Data Sampler;CPLL/QPLL 的输出从图下方进入 Phase Interpolator,为两组采样器提供可调相位。采样结果经 DEMUX 送入 CDR FSM,状态机再控制 PI(X) 和 PI(D),形成闭环相位跟踪。

UG476 将该结构称为 Phase-Rotator CDR。Bang-Bang 描述鉴相逻辑只判断调整方向,Phase-Rotator 描述相位插值器根据判决结果移动采样相位,两者分别对应闭环中的判定与执行。

PLL 提供满足线路速率要求的基础时钟。它决定 CDR 从哪个频率附近开始工作,但不会自动把采样边沿放到输入数据的正确位置。

PI(X) 与 PI(D) 是两组相位插值路径。Phase Interpolator 在 PLL 输出相位的基础上进行插值,使采样相位可以按较小步进向前或向后移动。PI(X) 驱动边沿采样路径,PI(D) 驱动数据采样路径,两者由同一个 CDR FSM 协调,并保持对应的相位间隔。

Edge Sampler(Crossing Sampler) 观察数据跳变附近的电平,用于判断当前采样相位相对实际数据边沿偏向哪一侧。它提供的是相位调整依据,不直接作为最终接收数据输出。

Data Sampler 位于相邻边沿之间,完成实际的 0/1 判决。其输出一方面送往 RX DATA,另一方面也参与 CDR FSM 的相位判断。状态机需要结合边沿采样与数据采样结果,才能判断当前数据是否发生跳变以及相位应向哪个方向调整。

CDR FSM 根据连续的 Data/Edge 样本形成 Bang-Bang 鉴相结果,并控制相位插值器逐步修正采样位置。某一次判断只给出调整方向,不给出相位误差大小;完整的相位跟踪建立在后续数据不断提供的新判决之上。

图中的 DEMUX 表明,高速采样结果会先转换为较低速率的并行样本,再进入数字 CDR 状态机。后文使用 D0、E1、D1 三个点说明一次 Bang-Bang 鉴相,是为了便于理解基本关系;在 GTX/GTH 硬核内部,状态机会对多组 Data/Edge 样本进行并行处理。具体并行度、判决处理方式和步进门限属于内部配置,UG476 不展开这些实现细节。

沿控制方向观察,闭环关系可以概括为:

输入数据边沿 → Data/Edge Sampler → Bang-Bang 鉴相 → CDR FSM
↑ │
└──────── Phase Interpolator 调整后的采样相位 ───────┘

CDR 的输出不是一个与数据无关的自由运行时钟,而是经过上述闭环校正、与输入数据保持相位关系的采样时钟。

3. 根据数据跳变理解 Bang-Bang 鉴相

图中的 E0、E1、E2 表示 Edge Sampler 的采样位置,位于相邻 UI 的交界处;D0、D1 表示 Data Sampler 的采样位置,位于两个边沿采样点之间。UI(Unit Interval)是一个串行比特占用的时间,数值等于线路速率的倒数。

以 10 Gb/s 线路速率为例:

TUI=110 Gb/s=100 ps
T_{UI}=\\frac{1}{10\\ \\mathrm{Gb/s}}=100\\ \\mathrm{ps}
TUI=10 Gb/s1=100 ps

理想情况下,数据采样点位于相邻边沿之间,距离前后边沿各约半个 UI,也就是约 50 ps。这里的半个 UI 表示两类采样位置的目标关系,并不是要求输入波形每次都在完全相同的时刻跳变。

Bang-Bang 鉴相可以沿 D0、E1、D1 三个采样点理解。D0 和 D1 是相邻的数据样本,E1 是位于两者之间的边沿样本;三者按照 Data、Edge、Data 的顺序每隔半个 UI 采样一次,形成相对于线路比特率的二倍过采样。D0 与 D1 用于确认相邻 UI 之间是否出现数据跳变,E1 则用于判断边沿采样点落在真实跳变之前还是之后。

下图上半部分按照 E0、D0、E1、D1、E2 的顺序标出二倍过采样位置:E0/E1/E2 对应数据轨迹的交叉点,D0/D1 位于相邻交叉点之间、眼开度最大的中心。下半部分再使用 D0、E1、D1 展开四种有效跳变组合:

对于 001 和 110,E1 仍然保持 D0 的跳变前电平,说明真实跳变发生在 E1 与 D1 之间。此时边沿采样点位于真实跳变之前,判决为 Clock Early,PI 需要把采样相位向较晚方向移动。

对于 011 和 100,E1 已经变为 D1 的跳变后电平,说明真实跳变发生在 D0 与 E1 之间。此时边沿采样点位于真实跳变之后,判决为 Clock Late,PI 需要把采样相位向较早方向移动。上升沿与下降沿的电平极性不同,但判断依据相同:E1 与 D0 相同表示偏早,E1 与 D1 相同表示偏晚。

手绘图用于观察四种有效跳变的波形关系,完整的八种采样组合可由下表查阅:

D0E1D1数据与采样关系鉴相结果PI 调整方向
0 0 0 保持低电平,无数据跳变 无新的相位信息 不调整
0 0 1 上升沿,E1 仍为跳变前电平 边沿采样相位偏早(Early) 向较晚方向调整
0 1 0 D0、D1 相同而 E1 相反 无可靠鉴相结论 不作为有效方向
0 1 1 上升沿,E1 已为跳变后电平 边沿采样相位偏晚(Late) 向较早方向调整
1 0 0 下降沿,E1 已为跳变后电平 边沿采样相位偏晚(Late) 向较早方向调整
1 0 1 D0、D1 相同而 E1 相反 无可靠鉴相结论 不作为有效方向
1 1 0 下降沿,E1 仍为跳变前电平 边沿采样相位偏早(Early) 向较晚方向调整
1 1 1 保持高电平,无数据跳变 无新的相位信息 不调整

000 和 111 表示相邻数据样本之间没有跳变,无法提供新的相位信息。010 和 101 则不能用相邻数据采样之间的一次正常跳变解释,因此不能形成可靠的偏早或偏晚结论。这里的不可靠只针对当前三点组合的鉴相方向,并不表示 FPGA 业务数据或整条链路已经失效;CDR 会继续结合后续 Data/Edge 样本进行判断。

图中的“较早”和“较晚”描述边沿采样点相对真实数据跳变的位置,控制目标是使 Edge Sampler 靠近数据交叉点。它表示物理采样相位的调整方向,不等同于 PI 控制码固定地增加或减小。

Bang-Bang 鉴相的单次结果只包含调整方向,不包含连续的相位误差值。若某一方向的判决持续占优,CDR FSM 就控制 PI 沿对应方向移动;当 E1 接近真实数据交叉点后,Early 与 Late 判决通常会交替出现,PI 围绕数据边沿进行小范围修正。PI(X) 与 PI(D) 同步调整,使 Edge Sampler 持续跟随数据跳变,同时让 Data Sampler 保持在相邻边沿之间。

4. 从初始相位捕获到连续跟踪

RX 通路启动时,CDR 需要先获得可用的基础时钟和输入数据。CPLL/QPLL 锁定后,高速时钟频率已经进入目标范围,但其相位与远端发送数据之间没有固定关系。CDR 从当前相位开始观察数据跳变,根据连续出现的偏早或偏晚判决驱动 PI 向占优方向步进,直至 Edge Sampler 到达 UI 边界附近、Data Sampler 落在相邻边沿之间,这一过程构成初始相位捕获。

进入稳定跟踪后,相位插值器仍会继续调整。即使本地参考时钟的标称频率与发送端一致,两端独立时钟源也可能存在一定频率偏差。若接收数据略快于本地基础时钟,数据边沿会相对当前采样相位持续向一个方向移动,Bang-Bang 鉴相结果也会长期偏向同一方向,CDR FSM 因而反复驱动 Phase Interpolator 沿对应方向旋转相位。数据略慢时,判决偏向和调整方向相反。

因此,CDR 对频率偏差的跟踪最终表现为连续的相位移动:

无频差:采样相位围绕稳定位置小范围调整
数据偏快:Phase Interpolator 持续向一个方向推进
数据偏慢:Phase Interpolator 持续向相反方向推进

相位插值器完成一个相位周期后可以继续循环旋转,CDR 由此在本地 PLL 频率附近跟随输入数据。它能够跟踪的频率偏差范围并非无限,具体边界应由对应器件数据手册中的 RXPPMTOL 等指标确认。

相位判断还依赖输入数据发生跳变。连续相同比特期间没有新的边沿可供比较,CDR 只能维持此前建立的控制状态,等待下一次有效跳变继续修正。合适的编码或扰码通常能够提高跳变密度,不只是为了改善频谱,也为时钟恢复提供持续的相位观测。链路能够容忍的最大连续相同比特长度,还需要结合器件数据手册和所用编码方式判断。

5. 恢复时钟与 RX 分频路径

这张图以 GTXE2_CHANNEL 为例,把参考时钟、PLL、CDR、SIPO 和 RXOUTCLK 连接到同一条时钟路径中。阅读时可以从左下方的参考时钟开始,沿 PLL 和 CDR 向上进入 RX PMA,再沿分频链向右观察并行时钟。

MGTREFCLK 经 IBUFDS_GTE2 和 REFCLK Distribution 进入参考时钟选择网络,随后送往 Channel 内部的 CPLL,或者通过 GTXE2_COMMON 进入 QPLL。RXSYSCLKSEL 在 CPLL 与 QPLL 的高速时钟之间选择一路,送入 CDR 中的 Phase Interpolator。

CDR 调整后的高速采样时钟直接驱动串行数据判决和 SIPO。完成串并转换后,该时钟依次经过 /D、/4 或 /5、/2 或 /4 等内部级联分频,与 RX PMA 的并行数据宽度和工作模式匹配。分频链输出构成 PMA 并行侧的 XCLK,并继续连接 RX PCS 数据通路。

图中需要区分三类相关但位置不同的时钟:

时钟所在位置主要作用
RX Serial Clock CDR 与 SIPO 的高速串行侧 对输入串行数据进行采样和串并转换
XCLK RX PMA 并行侧 承接 SIPO 之后的并行数据,并连接 RX PCS
RXOUTCLK GTXE2_CHANNEL 输出时钟端口 将选定的 PMA、PCS 或参考时钟路径送往 FPGA 时钟资源

RXOUTCLKSEL 决定 RXOUTCLK 的来源。选择 RXOUTCLKPMA 时,输出来自 CDR 恢复时钟的 PMA 分频路径;选择 RXOUTCLKPCS 时,输出来自 PCS 并行时钟路径;另外还可以选择所用 PLL 参考时钟的直通或二分频路径。RXOUTCLK 因此只是一个可配置的输出端口,不能脱离 RXOUTCLKSEL 直接称为“恢复时钟”。

RX Elastic Buffer 旁路时,RXOUTCLKSEL 应选择 RXOUTCLKPMA,使 RXOUTCLK 输出恢复时钟,再由 RXOUTCLK 驱动 RXUSRCLK。启用 RX Elastic Buffer 后,恢复侧 XCLK 与本地 RXUSRCLK 可以通过缓冲器隔离,RXUSRCLK 的来源具有更大的选择空间。缓冲器只改变并行时钟域的衔接方式,不改变 CDR 在 SIPO 之前完成串行采样的职责。

6. RX CDR 实战配置:以 GTX 5.0 Gb/s、8B/10B 为例

RXCDR_CFG 是 GTXE2_CHANNEL 中宽度为 72 bit 的配置属性,用于设置 CDR 内部控制环路。该属性不需要根据内部位域逐项推导,UG476 已经按照接收数据类型、SSC、线路速率、RXOUT_DIV、参考时钟频偏和均衡模式给出了推荐取值。本节直接通过一个 GTX 配置完成一次查表过程。

数据类型与 SSC → 线路速率 → RXOUT_DIV → REFCLK PPM → LPM/DFE → RXCDR_CFG

以一条 5.0 Gb/s 的 GTX 接收通道为例,配置条件如下:

配置项本例取值
收发器类型 GTX
线路速率 5.0 Gb/s
参考时钟 125 MHz,精度 ±100 ppm,不使用 SSC
PLL CPLL
RXOUT_DIV 1
线路编码 8B/10B
RX 均衡模式 LPM

具体选择可以分为三步:

  • 确定数据类型。 本例使用 8B/10B 编码且不使用 SSC,因此选择 UG476 Table 4-19;Table 4-17 对应的是 Scrambled/PRBS Data 且不使用 SSC 的情况。
  • 确定速率与分频。 5.0 Gb/s 属于表中的 Data Rate ≤ 6.6G,当前 RXOUT_DIV = 1,因此进入对应的速率和分频行。
  • 确定参考时钟频偏。 参考时钟精度为 ±100 ppm,落在表中的 ±200 ppm 档位。
  • Table 4-19 的读取方向是从左向右逐列收敛配置条件。该表对 CPLL/QPLL 以及 LPM/DFE 使用同一组取值;继续定位 Data Rate ≤ 6.6G、RXOUT_DIV = 1 和 REFCLK PPM = ±200 对应的行,即可得到 RXCDR_CFG = 72’h03_0000_23FF_1040_0020。

    将查表结果写入 GTXE2_CHANNEL:

    GTXE2_CHANNEL #(
    .RXOUT_DIV (1),
    .RXCDR_CFG (72'h03_0000_23FF_1040_0020)
    ) u_gtxe2_channel (
    // 其余端口与属性按工程配置连接
    );

    这里选择 CPLL 是为了给出完整的工程条件;Table 4-19 对 CPLL 和 QPLL 使用同一组推荐值。表下注释同时指出,8B/10B 编码数据推荐使用 LPM。若工程采用特定协议配置,仍应以 Transceivers Wizard 或相应的协议特性报告生成值为准。

    如果同一条 5.0 Gb/s 链路传输的是 Scrambled/PRBS Data,则应改查 Table 4-17:

    查表条件仍然是 Data Rate ≤ 6.6G、RXOUT_DIV = 1 和 REFCLK PPM = ±200,但 Table 4-17 还需要区分 LPM 与 DFE。沿 LPM 行读取,RXCDR_CFG 为 72’h03_0000_23FF_1020_0020;沿 DFE 行读取,则为 72’h03_0000_23FF_2040_0020。与前面的 8B/10B 配置相比,线路速率和时钟条件都没有变化,仅数据类型和均衡模式不同,最终配置值已经发生改变。

    实际工程可以沿“数据类型与 SSC → 线路速率 → RXOUT_DIV → REFCLK PPM → LPM/DFE”的顺序,在 UG476 对应表格中得到推荐值,再与 Transceivers Wizard 生成的 RXCDR_CFG 交叉核对。Table 4-17 和 Table 4-19 均为 GTX 配置,不能直接用于 GTH;GTH 的 RXCDR_CFG 为 83 bit,应在 UG476 中查取与数据类型和 SSC 条件对应的 GTH CDR 推荐配置。任一配置条件发生变化后,都需要重新查表。

    遇到疑似 CDR 问题时,除了检查参考时钟、输入波形和 CPLLLOCK/QPLLLOCK,还应回查 RXCDR_CFG 的选择条件:当前线路数据究竟是 Scrambled/PRBS、8B/10B 还是带 SSC 的协议数据,实际线路速率与 RXOUT_DIV 是否落在同一行,参考时钟频偏档位和 LPM/DFE 模式是否匹配,工程中的属性值是否与 UG476 或 Wizard 生成结果一致。若这些条件中有一项不匹配,即使 CPLLLOCK/QPLLLOCK 和 RXRESETDONE 已经拉高,CDR 仍可能无法稳定跟踪输入数据。

    修改 RXCDR_CFG 等 RX PMA 属性后,还应按照器件规定重新执行 RX 复位流程。最终接收状态需要结合 PRBS、8B/10B 错误指示或协议训练结果确认,不能只用 RXRESETDONE 判断 CDR 已经稳定。

    7. 总结

    在 7 系列 GTX/GTH 中,RX CDR 以 CPLL/QPLL 输出为高速时钟基础,通过 Data Sampler 与 Edge Sampler 完成 Bang-Bang 鉴相,再由 CDR FSM 控制 PI(D) 和 PI(X) 调整采样相位。Bang-Bang 鉴相只给出偏早或偏晚方向,连续判决使 Edge Sampler 跟随 UI 边界,并让 Data Sampler 保持在相邻边沿之间。恢复后的高速时钟继续驱动 SIPO,并经 RX PMA 分频形成 XCLK;RXOUTCLK 则可根据 RXOUTCLKSEL 输出恢复时钟或其他候选时钟。

    工程配置 RX CDR 时,需要把收发器类型、数据类型、SSC、线路速率、RXOUT_DIV、参考时钟频偏和均衡模式作为一组条件选择 RXCDR_CFG。配置完成后,再分别检查 CPLLLOCK/QPLLLOCK、RXRESETDONE 与接收数据状态,才能区分基础时钟、硬核复位、CDR 相位跟踪和后级数据处理中的问题。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » FPGA SERDES 通用基础(十二)RX CDR:鉴相与恢复时钟
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!