CDR——时钟数据恢复
串行光链路不携带独立的时钟:接收端必须直接从数据流本身恢复出时钟,再依据该时钟对比特重新采样(即“retime”)。完成这一工作的电路就是 CDR(时钟数据恢复)。CDR 位于主机侧还是模块内部,是不同封装形式之间的一项根本区别,其控制位也是 CodingBox 读取和编码的存储器内容的一部分。
CDR 的作用
- 提取时钟:通过锁相环从输入的比特跳变中提取时钟。
- 重新定时:在恢复出的时钟边沿对每个比特重新采样,从而消除传输途中累积的定时噪声(抖动,jitter)。
- 再生:向下一级(Tx 侧的激光驱动器、Rx 侧的主机 SerDes)输出干净的边沿信号。
因此,CDR 相当于一个抖动复位点。每条链路的抖动预算由主机 PCB 走线、连接器和模块共同分摊;模块内置 retimer 后,主机侧就可以更宽松地使用自己的那部分预算。
主机侧还是模块侧
| 封装形式 | CDR 位置 | 影响 |
|---|---|---|
| XFP | 在模块内(XFI 接口) | 主机简单,模块与协议无关;模块更大更热 |
| SFP+ | 在主机上(SFI 接口) | 模块小、凉、便宜;主机需要 CDR/EDC;可以做成线性(LRM)模块 |
| SFP28 | 通常在模块内 | 25G 的抖动预算太紧,仅靠主机不够 |
| QSFP+ 40G | 模块内通常没有 | 由主机对 4×10G 重新定时 |
| QSFP28 100G | 典型情况下 Tx 和 Rx 的 CDR 都在模块内 | 支持逐通道开关控制;通过 CDR-present 位对外声明 |
| PAM4 模块(QSFP56 / QSFP-DD / OSFP) | DSP:具备均衡和 FEC 感知能力的 CDR | 功耗高;LPO 又将其去掉 |
这正是 SFP+ 在高密度 10G 交换场景中胜过 XFP 的原因,也是 100G 模块比 40G 模块更热的原因。
在模块存储器中的位置
SFF-8636(QSFP+/QSFP28),参见 SFF-8636:
| 字节 | 字段 | 含义 |
|---|---|---|
| 129(upper page 00h) | Extended Identifier,bit 3 / 2 | Tx / Rx 是否存在 CDR(CDR present) |
| 98(lower page) | CDR control | bit 7–4 逐通道使能 Tx CDR,bit 3–0 逐通道使能 Rx CDR |
| 5(lower page) | LOL flags | bit 7–4 为每通道 Tx 失锁(loss of lock),bit 3–0 为每通道 Rx LOL |
| 194(upper page 00h) | Options | 是否实现了 CDR 开关控制和 LOL 标志位 |
CMIS(QSFP-DD、OSFP、QSFP112):Page 01h 声明 Tx/Rx 是否支持 CDR,以及 bypass 是否可控;Page 10h 保存逐通道的 Tx/Rx CDR 使能(bypass)控制位,如果所需的 CDR 无法锁定,数据通路状态机就无法进入 activated 状态(参见 CMIS 问题排查)。
SFF-8472(SFP/SFP+/SFP28):没有标准化的 CDR 控制;模块的 CDR(如果有)由内部自行管理。与之相关、主机侧可见的机制是 速率选择,用于在不同速率组之间切换接收机带宽。
实际影响
- 多速率模块。 CDR 只能锁定某个速率范围。把 25G 模块用在 10G 上,或者把 100G 的 QSFP28 拆分成 4×10G,都要求 CDR 支持较低的速率,否则主机必须将其 bypass (byte 98 / CMIS)。“25G 能跑,10G 就不通”通常就是这个原因。
- 失锁作为诊断依据。 LOL 标志位表示 CDR 无法恢复时钟:可能是信号劣化过多、速率设置错误,或者根本没有信号,怀疑模块之前应先检查 Rx 功率和速率设置(参见 DDM 数值解读)。
- 功耗与时延。 每颗 retimer 都要消耗功率(25G 下为几十到几百 mW,PAM4 DSP 则要几瓦)并增加时延。短距 DAC 链路和对时延敏感的网络结构常常把 CDR 直接 bypass。
- 编码一致性。 重新编码 QSFP28 时,CDR-present 位(byte 129)必须与硬件实际情况一致:如果主机以为 CDR 存在,就可能在缺失或不同的 CDR 无法支持的速率下仍将其保持使能。参见 QSFP 系列硬件规格。
在 CodingBox 中
EEPROM editor 会按 SFF-8636 或 CMIS 的定义,在鼠标悬停时显示这些字段的名称(CDR present、CDR control、LOL flags、Options),因此你可以读出模块的 CDR 配置,查看是否有通道失锁,并在编码身份信息时让 CDR 位与硬件保持一致。
“25G 能连通,10G 却不行”以及其他速率锁定相关的症状,在 速率与模式问题 中有详细排查方法。
CDR 在驱动器、TIA 和控制器之间处于什么位置,以及 PAM4 模块如何将其纳入带均衡和 gearbox 功能的 DSP:参见 模块电子学、调制与 DSP。
哪些主机接口要求模块经过重定时(XFI、CAUI-4 C2M、PAM4 AUI),哪些可以容忍线性模块(SFI、LPO):参见 XGMII、XAUI 与 AUI 家族。