Retimer 工作原理:时钟数据恢复、重新定时与信号再生

好,咱们进入 Retimer 的核心。你要理解 Retimer,就得先明白它到底在干什么。说白了,它不仅仅是个信号放大器——它把进来的数据重新“洗”一遍,再干干净净地送出去。这个过程有三个关键步骤:时钟数据恢复(CDR)、重新定时、信号再生。咱们一个一个拆开讲。

时钟数据恢复(CDR)

CDR 是 Retimer 的“耳朵”。高速信号从 PCB 走线过来时,时钟信息是嵌入在数据流里的,没有单独的时钟线。Retimer 必须先把时钟揪出来,才能决定什么时候采样数据。

我遇到过一种情况:项目用了一颗国产 Retimer,CDR 环路带宽设得太宽,结果锁相环把链路上的时钟抖动当成了有效跳变,恢复出来的时钟全是毛刺。后来我让软件把带宽回调到 2MHz 左右,眼图才恢复正常。

CDR 内部通常是一个锁相环(PLL)或者延迟锁定环(DLL),配合一个鉴相器。它做两件事:

  • 从数据边沿提取时钟频率和相位
  • 生成一个干净的、与发送端同源的采样时钟
关键点: CDR 的环路带宽决定了它能跟踪多少抖动。带宽太窄,低频抖动滤不掉;带宽太宽,高频噪声会污染时钟。实际项目中我会先看协议规范(比如 PCIe 要求 CDR 带宽在 1~10MHz),再根据通道损耗调整。

重新定时(Retiming)

时钟恢复出来了,下一步就是用这个时钟对数据重新采样。你想想看:进来的数据因为线缆损耗、ISI 干扰,边沿位置已经歪了。如果直接用这个歪数据去触发下一级,时序肯定崩。重新定时就是拿一个“干净的本地时钟”把数据拍整齐。

我习惯把 Retimer 的采样点看成是在眼图中央的一个小窗口。CDR 先把窗口对齐到眼图中心,然后在每个时钟沿对数据做一次判决。这就是“重新定时”——把数据对齐到一个新的、干净的时钟域。

项目RepeaterRetimer
是否恢复时钟否是(CDR)
数据重采样不处理用本地时钟重新采样
抖动积累放大已有抖动切断抖动传播

注意,重新定时会引入 1~2 个比特的延迟,因为要对齐时钟沿。这在某些对延迟敏感的总线(比如 I²C 的延伸协议)里要小心,但对于 PCIe、SAS、USB 这些高速串行总线,这点延迟根本不是问题。

避坑指南: 我曾经在某款 Retimer 上没留意重新定时的 latency 变化——它会在链式级联时累加。如果你级联了 4 颗 Retimer,总延迟可能超过协议要求的最大值。所以设计多跳链路时,一定要逐级算好延迟预算。

信号再生(Signal Regeneration)

最后一步,信号再生。CDR 和数据重采样之后,Retimer 内部其实已经得到了一个“干净的数字比特流”。信号再生就是把这个数字比特流再变成差分电压信号,推出去驱动下一段通道。

这里的输出幅度和预加重(或去加重)参数是可以配置的。我在调试一个 25Gbps 背板时发现,Retimer 的 swing 设到 800mV 还是 500mV,对链路余量影响很大。后来我配合板端的通道插损,把发射端摆幅调到 650mV,再加了一档去加重,眼图高度直接提升了 15%。

信号再生的本质就是:用全新的驱动电路重发一遍数据。所以它不受前端信号质量影响——前端哪怕已经有一半闭眼的信号,Retimer 仍能吐出完美的方波。这就是 Retimer 能“打破噪声累积链”的根本原因。

个人小技巧: 在量产测试时,我习惯把 Retimer 的条样扫描打开,先看一眼眼图是否在中垂线附近张开,再调整 CDR 锁定位置。很多 Retimer 芯片支持回读 CDR 锁定状态寄存器——这个寄存器能在调试时帮你快速判断链路稳定性。

三者如何协同?一张图看明白

下面这张图把 Retimer 的三个环节串起来。瞧仔细了,数据从左进来,先经过 CDR 恢复时钟,再经过重新定时把数据拍平,最后信号再生输出干净的波形。

Retimer 工作原理流程图 输入信号 含抖动/噪声 CDR 时钟数据恢复 提取时钟 & 数据 重新定时 本地时钟采样 对齐比特边界 信号再生 重构差分电压 去加重/摆幅控制 干净信号输出 核心思想 CDR 恢复时钟 → 重新定时消除抖动 → 信号再生输出全新波形,完全阻断噪声累积

你看,数据从左侧流入,经过 CDR 把时钟和比特边界找回来,然后在重新定时阶段用干净时钟重新采样,最后通过信号再生输出。每一步都不可或缺。如果缺了 CDR,重新定时根本没法对齐;如果缺了重新定时,信号再生只是放大噪声。三个环节串起来,才是 Retimer 的真本事。

嗯,这一章的内容就到这里。记住我刚才说的:CDR 是耳朵,重新定时是大脑,信号再生是嘴巴。理解了这个比喻,你就能把 Retimer 和 Repeater 彻底分清了。