第4章 Retimer 工作原理:CDR 与重新定时

大家做高速串行链路的时候,总会在某个节点被一个问题卡住:信号经过一段 PCB 走线后,眼图闭合了。这时候你加个 Repeater 不行,必须上 Retimer。为什么?因为 Retimer 不只是把信号推一把,它把时钟和数据一起“洗干净”了。

这一章我重点讲 Retimer 最核心的两个能力:

  • 时钟数据恢复(CDR) – 从数据流里把时钟捞出来。
  • 重新定时 – 用恢复出来的干净时钟,把数据重新对齐,再发出去。

说白了就是:Retimer 不光修幅度,还修相位和时序。这就是它跟 Repeater 本质的区别。

4.1 为什么要同时恢复幅度和相位?

我们先想一个问题。信号从发送端经过通道,到接收端这一路,会受到哪些损伤?

  • 幅度衰减 – 高频成分被板子上的损耗吃掉,眼高缩水。
  • 相位抖动 – 走线的不同路径、串扰、电源噪声,让数据过零点前后偏移。
  • 时序偏移 – 比特周期不再均匀,眼图左右晃动。

Repeater 做的事情只是均衡+放大,它不知道什么时候是一个 bit 的边界。所以它处理的信号,幅度可能恢复了,但抖动和漂移还在。眼图看起来“开口”没变宽,只是更亮了。

而 Retimer 不同。它先通过 CDR 锁定数据流的频率和相位,然后重新生成一个干净的本地时钟,用这个时钟对齐数据采样点。等价于在链路中间插入一个“重新整形”的节点——幅度、相位、时序全部重置。

记住这句话: Retimer 不是信号的搬运工,是信号的“格式工厂”。

4.2 CDR 是怎么工作的?

CDR 的全称是 Clock and Data Recovery。它的任务不复杂:从一串没有独立时钟线的数据流里,恢复出与数据同步的时钟。然后拿这个时钟去判断每个 bit 的值。

实现 CDR 的主流方案有两种:

  • 基于 PLL 的 CDR – 最常见的方案。用 PLL 锁定输入数据的频率和相位,VCO 输出恢复时钟。
  • 基于延时锁定环(DLL)的 CDR – 通过调整延时链来对齐时钟边沿,适合短距离或低速应用。

我工作这么多年,绝大部分 10Gbps 以上的 Retimer 用的都是 PLL 型 CDR。原因很简单:PLL 能灵活跟踪抖动,还能提供不同速率下的多相时钟。DLL 在低频还行,到了 25Gbps 以上,相位噪声和锁定范围都不够。

个人一个小经验: 在 28Gbps NRZ 项目里,我曾经遇到 PLL 锁定后眼图依然很“毛”。排查到最后发现是 VCO 的电源纹波太大。给 PLL 的供电加了一路低噪 LDO 之后,眼图瞬间干净了。做 Retimer 设计,电源是 CDR 的命脉。

4.2.1 CDR 工作流程

  1. 相位检测 – 对比输入数据边沿与本地 VCO 时钟的相位差。
  2. 环路滤波 – 把相位误差信号滤成稳定的电压控制信号。
  3. VCO 调整 – 控制电压改变 VCO 频率,使时钟跟踪数据。
  4. 数据采样 – 用恢复出的时钟在最佳采样点抓取数据。

这四步在 Retimer 芯片里是连续闭环的。你看不到单个步骤,它每秒钟要跑几十亿次调整。

4.3 重新定时机制:怎么解决相位问题?

CDR 恢复出时钟之后,接下来就是“重新定时”登场。这一步也叫做 re-timing 或 re-shaping。

核心动作只有两个:

  • 用恢复时钟重新采样输入数据。
  • 用本地干净时钟把采样后的数据传到输出端。

看起来简单,对吧?但实际实现时要处理一个问题:

输入数据的相位和恢复时钟的相位不可能完全同步。 CDR 只能跟踪相位变化,不可能消除所有动态抖动。所以 Retimer 内部一般有一个弹性缓冲(或者叫 FIFO),用来吸收瞬时相位漂移。

注意: 弹性缓冲不能太大。太大会引入额外的延迟,同时会让 Retimer 的 "确定性延迟" 特征变差。很多 SerDes 应用对延迟的确定性有严格的要求。我记得有一个 PCIe Gen4 项目,客户要求链路总延迟抖动 < 10 UI。如果 FIFO 深度选大了,怎么调都过不了 compliance 测试。

4.3.1 什么是确定性延迟?

确定性延迟是指:数据经过 Retimer 后,从输入到输出的延迟是固定的、可以预测的。Repeater 没有这个问题,因为它没有存储单元。但 Retimer 因为有 CDR 和 FIFO,延迟会随输入数据和恢复时钟的相位关系而变化。

现代高速 Retimer 通常都支持延迟锁定模式,通过固定跳过或对齐的方式,让延迟保持恒定。选型的时候一定要看 Datasheet 里是否支持 Deterministic Latency 或者 Low Latency Mode。

4.4 幅度恢复:不是重点,但不能忽略

很多人以为 Retimer 只管时钟和数据,幅度问题交给均衡器就行。实际上,Retimer 内部集成了 CTLE 和 DFE,负责把闭合的眼图掰开。幅度恢复是 CDR 能够正常工作的前提——CDR 需要看到数据边沿,眼图如果完全闭合,边沿都找不到,CDR 就无法锁定。

所以 Retimer 的典型信号路径是这样的:

  1. 输入信号 → CTLE(连续时间线性均衡) → 增益调整
  2. 均衡后的信号 → CDR 相位检测
  3. CDR 恢复时钟 → 采样判决器(Slicer)
  4. 判决结果 → 输出驱动器 → 送出去

这里面第 2 步和第 3 步同时在做幅度和相位的恢复。幅度恢复通过 CTLE/DFE 实现,相位恢复通过 CDR 实现。 二者不能分家,必须协同工作。

关键点: 如果一个链路信号衰减太大(超过 30dB),单靠 Retimer 内部的 CTLE 可能不够。解决方案是用一个 Repeater 先做前置均衡,再进 Retimer。这也是为什么有些高速长距离链路会选用 “Repeater + Retimer” 级联的方式。

4.5 本章知识结构

下面这张图总结了 Retimer 内部的工作原理和信号流。大家可以对照着捋一遍流程。

Retimer 工作原理:CDR 与重新定时 输入信号 CTLE/DFE 幅度恢复 CDR 相位检测 VCO 重新定时 + 弹性缓冲 吸收相位差,确定延迟 输出驱动器 恢复时钟 输出信号:干净的眼图

可以看到,CDR 在幅度恢复之后才开始工作。如果 CTLE 给不出可用的眼图,CDR 就是盲人摸象。而重新定时环节依赖 CDR 恢复的时钟和弹性缓冲,最后把干净的数据送到输出端。

4.6 实战选型要点

了解了原理之后,我们回头看看选型 Retimer 时应该关注什么:

参数 影响 我踩过的坑
CDR 抖动容限 决定 Retimer 能跟踪多严重的抖动 曾经选了一款 25G 芯片,抖动容限只有 0.3 UI,遇到链路较差时频繁失锁
PLL 带宽 低带宽滤高频抖动但跟踪慢,高带宽反之 建议根据上游时钟源噪声来定,一般选 5~10 MHz
弹性缓冲深度 影响确定性延迟和延迟范围 不要盲目选大的,够用就好,不然延迟抖动会超标
CTLE 增益范围 影响 Retimer 能处理的信道损耗上限 超过 25dB 损耗必须前置 Repeater 或者选更高级的 Retimer
延迟锁定模式 是否有确定延迟模式 很多国产 Retimer 不标注这一项,需要咨询 FAE

额外提示: 在实际项目中,如果你发现 CDR 无法锁定,别急着怀疑芯片。先量一下输入信号的眼图是否还有打开的迹象。如果眼图完全闭合(比如 BER 测试看不到任何 error-free 窗口),那 CDR 确实锁不住。这种时候可以考虑在 Retimer 之前加一个 Repeater 先做均衡。

4.7 小结

Retimer 的核心价值就是同时恢复幅度和相位。幅度恢复靠 CTLE/DFE,相位恢复靠 CDR,重新定时靠弹性缓冲和本地时钟。这三个环节缺一不可。

你想想看,如果你的系统链路要求 10G 以上,并且你希望在每个中继点都“重置”信号质量,Retimer 是不二之选。但记住,它的延迟比 Repeater 大好几个 ns,而且对电源质量更敏感。咱们在实际布局时,Retimer 的电源滤波电容必须紧贴管教放,远一点就可能是灾难。