SerDes 时钟恢复 CDR:高速串行链路怎样从数据跳变沿里抠出时钟
SerDes 时钟恢复 CDR(Clock and Data Recovery,时钟数据恢复)是高速串行收发器(SerDes,Serializer/Deserializer,并串/串并转换器)接收端的核心功能:发送端只把数据送上线路、不单独传时钟,接收端依靠数据本身的电平跳变,把采样所需要的时钟重新「抠」出来。它与低速设计里熟悉的做法形成鲜明对照——时钟与复位一文中,片内触发器用的是同一棵时钟树分发的全局时钟;而跨芯片、跨板卡的高速链路上,时钟被「嵌入」数据之中。这一选择不是随意的,理解它需要同时回答四个问题:时钟为什么不上线、恢复电路怎样锁相、线路编码为什么要保证跳变密度,以及什么情况下恢复会失败。
本文要回答的问题
- 高速串行链路为什么不随数据单独拉一根时钟线?
- CDR 怎样用电荷泵锁相环(PLL)和压控振荡器(VCO)从跳变沿恢复出时钟?
- 恢复时钟的相位凭什么能对准每个 bit 的中心,而不是对准跳变沿?
- 8b/10b 和 64b/66b 为什么要保证跳变密度,二者开销差在哪里?
- 什么是失锁(LOL)、锁定时间和抖动容限,误码是怎么发生的?
一、起点:时钟一旦单独上线,在高速下反而更不可靠
低速并行总线可以让数据和时钟走不同的线,接收端按时钟沿采样数据,源同步的 SDR 与 DDR IO 就是这种思路的典型。它成立的前提是:时钟线与数据线的传播延迟差异足够小,时钟沿到达接收端时仍落在数据有效的窗口内。数据率到了每秒数吉比特、单位间隔(UI,Unit Interval,一个 bit 所占时间)只有几百皮秒之后,这个前提迅速崩塌。
这张概念卡的四组理由里,最本质的是第一组:当时钟周期缩短到与走线延迟差同一个量级,「另一根线上的时钟」在相位上已经不再可信。第四组理由常被忽略却同样关键——收发两端用的是两颗独立晶振,哪怕都标着 100 MHz,实际频率也会有 ±几十 ppm(百万分之一)的偏差;数据在接收端写入本地弹性缓冲的速率与读出速率长期不等,必须由 CDR 先跟踪出真实的瞬时比特率,再配合缓冲与跳字处理容差。Manchester 与 NRZI 自时钟编码已经展示了「时钟藏进跳变」的低速形态,SerDes 面对的是同样的思想在吉比特速率上的工程实现。
二、CDR 在做什么:从跳变沿提取相位信息,再重建一条周期时钟
数据线上的信号是 NRZ(Non-Return-to-Zero,不归零)波形:高电平代表 1、低电平代表 0,电平可以连续多个 UI 保持不变。它不携带显式时钟,但每一次 0 与 1 之间的电平翻转,都精确地发生在两个 bit 的边界上——跳变沿就是免费、且与数据同源的相位标记。CDR 的全部工作可以概括成两步:从跳变沿中估计「现在相位在哪」,再驱动本地振荡器把采样时钟的相位贴上去。
为什么不直接用跳变沿当采样沿?因为跳变沿恰恰是数据最不稳定的时刻:边沿有斜率、有抖动,信号正在穿越判决门限。正确的做法是让恢复时钟的采样沿落在每个 UI 的中心,那里电平已经稳定、距离前后两个跳变沿最远,时序裕量最大。这正是静态时序分析里建立时间与保持时间所保护的「采样窗口」概念在链路上的延伸——采样沿要躲开数据变化的瞬间。
读这张环路框图抓住一条闭合回路:蓝色是输入数据,红色鉴相器把数据跳变沿与橙色 VCO 反馈回来的时钟沿做比较,灰色低通滤波器把离散的误差脉冲平均成平滑控制电压,再去微调 VCO;绿色采样触发器用这条恢复时钟在 UI 中心判决数据。这是一个负反馈锁相环(PLL,Phase-Locked Loop)——时钟沿超前了就把 VCO 拉慢一点,滞后了就推快一点,稳态时恢复时钟与数据沿保持约半个 UI 的固定相位关系。滤波器的带宽是核心折中:带宽宽则跟踪快、能跟上低频抖动,但会把跳变沿的随机噪声也吃进去;带宽窄则时钟干净,但遇到频率漂移或低频抖动会跟不上。
三、锁定过程:从频率牵引到相位锁定,不是一上电就对齐
CDR 上电时 VCO 工作在自身的自由振荡频率附近,与线路比特率可能相差数千 ppm,鉴相器输出连续的「失配」信息,控制电压被慢慢推向正确区间,频率差逐步收敛,这一阶段叫频率牵引(frequency acquisition)。频率接近后,环路进入相位捕获,时钟沿与跳变沿的平均相位差稳定在目标值,锁定指示(Lock Detect)置位。从有效输入到允许可靠采样之间的时间称为锁定时间,通常为微秒到数十微秒量级,这也是协议帧必须安排训练序列或同步头的原因——接收端需要一段跳变丰富的前导码来完成锁定。
下面这张时序图描述一次跳变到来时环路各环节的协作关系:鉴相器并不在每个 UI 都能工作,只有当数据真的发生翻转时才有相位信息可用。

这张图有两个值得停留的细节。其一,长 0 或长 1 区间里鉴相器「沉默」,环路只能凭滤波电容上的电压保持相位——保持时间越长,累积的相位漂移越大,这正是下一节编码必须限制连续相同 bit 长度的直接原因。其二,发送端并不发送任何独立时钟信息,接收端所有的相位判断都来自数据沿;因此「数据沿是否足够密」和「沿是否足够干净」决定了 CDR 能否工作。抖动(jitter,信号边沿相对理想位置的短期偏移)过大时,沿本身提供的就是错误的相位标记,环路会被带偏。
四、跳变密度:8b/10b 与 64b/66b 给 CDR 喂足够的沿
CDR 对线路编码提出两个硬要求:直流平衡(长期 0 和 1 数量近似相等,避免交流耦合电容后基线漂移)和足够的跳变密度(限制连续相同 bit 的最大长度,保证鉴相器定期获得相位更新)。裸的用户数据两条都不保证——一个全 0 计数器可能连续输出几十位不变电平。两代主流编码用不同方式解决这个问题,开销也因此不同。
| 对比维度 | 8b/10b 编码 | 64b/66b 编码加扰 |
|---|---|---|
| 基本做法 | 每 8 bit 数据编成 10 bit 符号,查 RD 正负不一致表选码 | 每 64 bit 数据加 2 bit 同步头,数据体经自同步扰码 |
| 线路开销 | 25%(8/10) | 约 3.125%(2/66),另有同步头提供确定跳变 |
| 最大连续相同 bit | 码表保证,通常不超过 5 位 | 扰码统计上压到很短,同步头每 66 bit 强制翻转 |
| 直流平衡 | 码表逐符号保证运行差异 RD 有界 | 靠扰码随机性统计平衡,不逐块保证 |
| 典型速率与协议 | 1–10 Gbps:PCIe 1/2 代、SATA、千兆/万兆 XAUI、HDMI | 10 Gbps 以上:PCIe 3/4/5 代、10G/25G/100G 以太网 |
| 设计取向 | 用确定的码表性质换简单可靠的接收端 | 用扰码概率性质换效率,把复杂度留给逻辑 |
读这张表的关键不是记住码表细节,而是理解开销换什么。8b/10b 把约束做进码表:任何合法符号的运行差异(Running Disparity)都有界,连续相同电平长度有硬上限,CDR 每隔极短时间必然遇到跳变,直流平衡也是逐符号强制的——代价是每 4 个 bit 就有 1 个纯粹为传输特性服务。速率翻到 10 Gbps 以上后,25% 的额外带宽和对应串行器功耗难以接受,64b/66b 改为 2 bit 同步头加扰码:同步头是 01 或 10,每 66 bit 必现一次跳变并兼作块定界,扰码器则让数据体的统计性质近似随机,长零长一的概率被压到极低。代价是平衡与跳变不再是逐块确定的保证,接收端的均衡、锁相环和定界逻辑要更强。两种编码与自时钟思想一脉相承,更基础的曼彻斯特编码甚至在每个 bit 中间强制跳变,代价是带宽翻倍,因此只留在低速场景。
五、失锁与抖动容限:CDR 的能力边界如何测量
CDR 正常工作时是一个动态平衡:恢复时钟持续做小幅相位调整,跟踪数据沿的缓慢漂移。当输入条件超出环路能力,跟踪断裂,称为失锁(LOL,Loss of Lock)。常见触发原因有三类:输入信号消失或误码率骤增导致长时间没有可信跳变沿;频差超出 VCO 与环路的牵引范围(两端时钟 ppm 偏差、或参考时钟配置错误);输入抖动超过环路能跟踪的幅度。失锁后接收端通常置位状态位、触发字节重对齐或协议层重同步,恢复同样需要锁定时间。
**抖动容限(jitter tolerance)**是衡量 CDR 抗抖动能力的规范指标:在保证误码率(BER,Bit Error Ratio)不超过规定门限(常见为 10⁻¹²)的前提下,接收端能承受的、施加在输入数据上的抖动幅度。它随抖动频率变化,画成一条曲线:低频抖动环路跟得上,容限较大;频率高于环路带宽后环路来不及跟,只能靠眼图余量硬扛,容限下降。协议一致性测试会给一条最低容限模板(如 PCIe、以太网各自的 compliance 模板),芯片实测曲线必须整体位于模板上方才算合格。与抖动容限并列的另外两个抖动指标是抖动传递(jitter transfer,恢复时钟输出了多少输入抖动)和抖动生成(jitter generation,CDR 自身产生多少抖动),三者合起来描述 CDR 的抖动行为。
| 失锁诱因 | 物理机理 | 典型应对 |
|---|---|---|
| 长连 0/连 1 或信号中断 | 鉴相器长期无沿可鉴,保持电压漂移 | 编码限长、信号检测 LOS、重同步流程 |
| 频差超牵引范围 | VCO 控制电压到轨仍跟不上 | 校验参考时钟、扩频时钟 SSC 设计、加大频率捕获辅助 |
| 抖动超过容限 | 相位误差越界,采样沿滑出眼图 | 更好的锁相环带宽设计、发送端去抖、改善信道与均衡 |
采样最终失败的形式是具体的:恢复时钟沿一旦因相位漂移滑到跳变区附近,就可能在电平尚未稳定时采样,触发器进入亚稳或直接判错 bit。时序分析中的建立/保持违例在板级链路上的对应物就是采样点撞上闭合的眼图——信道损耗、串扰、抖动共同把「可以安全采样的时间区间」压窄,CDR 的职责正是让采样沿始终站在这个区间正中央。工程上观察这一过程的直观工具是眼图与浴缸曲线,后续文章会专门展开;差分传输(如 LVDS 类电气标准)如何提供干净沿、抖动如何分类测量,也各有后续姊妹篇承接。
这一篇在知识体系里的位置
本篇属于芯片接口与高速串行通信的入门概念:上游是时钟与复位给出的同步采样基本思想,以及源同步 SDR/DDR 代表的「时钟随数据走」方案;编码侧的自时钟传统由Manchester、NRZI 与自时钟编码承接,8b/10b 与 64b/66b 是同一思想在高速率下的高效率版本;采样裕量与时序约束的语言则与静态时序分析相通。继续往下,差分电气标准、眼图与抖动测量、信道均衡(CTLE/DFE)会分别回答「沿从物理上怎么变干净」「怎么看见采样余量」「损耗如何补偿」三个后续问题。
总结
SerDes 时钟恢复 CDR 让高速串行链路只传数据不传时钟:单独时钟线在吉比特速率下偏斜不可控、成本高且无法消除两端晶振频差,而数据跳变沿天然携带 bit 边界的相位信息。CDR 以鉴相器、环路滤波器和 VCO 构成负反馈锁相环,从沿中提取相位误差,把恢复时钟的采样沿稳定在每个 UI 中心,并经历频率牵引、相位锁定两个阶段;无跳变区间环路只能保持相位,所以线路编码必须保证跳变密度——8b/10b 以 25% 开销换取逐符号确定的直流平衡与限长,64b/66b 以同步头加扰码把开销降到约 3%,支撑 10 Gbps 以上链路。失锁发生在无沿、频差超限或抖动超过容限时,工程上用锁定时间、抖动容限曲线和误码率门限刻画 CDR 的能力边界,采样沿滑出眼图即产生误码。