4. Bang‑Bang 型 CDR:从架构到实战,我在项目中踩过的坑
Bang‑Bang 型 CDR,名字挺硬,其实工作方式很「粗暴」——它不盯着相位差有多小,只看「早」还是「晚」。早了就推一把,晚了就拉一把。嗯,就像开车时只打方向盘不盯角度,只要不偏就猛拧一下。我最早接触这玩意儿是在一个 USB 2.0 的片子调试中,当时被抖动折腾得够呛,后来才算摸透它的脾气。
4.1 架构:三个基本模块,一台二进制决策机器
说白了,Bang‑Bang CDR 的核心就三块:鉴相器(BBPD)、环路滤波器(LF) 和 可控振荡器(VCO/DCO)。没有复杂的模拟乘法器,全是二进制判决,所以特别适合数字工艺。
- BBPD(Bang‑Bang 鉴相器):只输出 +1 或 -1,表示时钟相位偏晚或偏早。常见结构是 Alexander 型,用三个触发器采样过零点。
- 环路滤波器:通常就是累加器+比例路径,对二进制序列做积分和比例缩放。我习惯在数字域实现,省面积。
- 可控振荡器:可以是模拟 VCO,也可以是数字 DCO。数字域常用 LC 或环形振荡器,配合小数分频。
整个环路像一台见风就是雨的决策机器——每次相位比较只有「正」或「负」,然后立即矫正。你想想看,如果一个系统只带两位信息,设计能复杂到哪去?
4.2 工作原理:一步到位,永远在振荡
Bang‑Bang CDR 的工作过程就是一个二进制搜索。每次数据跳变沿到来,BBPD 检查本地时钟采样点的位置:如果采样点在数据眼图中心偏右(即数据跳变先于时钟),输出 -1;如果采样点偏左(时钟先于数据),输出 +1。环路滤波器把这 +1/-1 累加,控制 VCO 调频。
为什么叫 Bang‑Bang?因为控制量只有两个方向,没有中间状态。好比开关电源里的 bang‑bang 控制,也是±1 切换。我曾经在一个 10Gbps 的 SerDes 项目中,看到环路稳定后时钟相位依然在有规律地「来回撞墙」——左右各一个采样点附近震荡,这就是极限环现象。
关键概念:极限环
由于反馈只改变方向,锁定后相位误差会围绕 0 电平整荡,幅度由环路零延迟和量化步长决定。这是 Bang‑Bang 型 CDR 的固有问题,不是 bug。
4.3 优缺点分析:简单粗暴的代价
| 优点 | 缺点 |
|---|---|
|
|
💡 我个人的经验:如果项目对抖动预算要求低于 0.3UI(峰峰值),而且串扰不强,Bang‑Bang 型够用。千万别在光纤通信 OIF 标准那种超低抖动场景硬上。
4.4 实际项目中的选型考量
选不选 Bang‑Bang CDR,我通常会问自己三个问题:
- 数据速率有多高? 超过 5Gbps 时,线性 CDR 的模拟鉴相器会功耗剧增,Bang‑Bang 型优势明显。
- 抖动容忍度是否宽松? 如果系统允许 0.5UI 以上抖动,Bang‑Bang 没问题;若要求 0.1UI,还是考虑线性或混合型。
- 面积和功耗压力大吗? 消费电子、IoT 芯片经常为省面积选 Bang‑Bang——整个 CDR 可以写在一千门左右的 RTL 里。
另外,游程长度(run length)是个坑。我记得有一次调试 PCIe Gen3 的 CDR,数据流中出现连续 24 个相同 bit 后锁相环直接失锁。后来加了 DC 平衡编码(8B/10B),问题才解决。所以,如果你的链路没有保证最密跳变间隔(比如每 5 个 bit 至少有一次跳变),就要慎用 Bang‑Bang 型。
⚠️ 注意:环路滤波器的时间常数要做成可编程的。我遇到过在量产时因为 PVT 变异导致环路带宽漂移,锁定时间从 1μs 跳到 10μs。后来在寄存器里留了四位带宽配置位才搞定。
4.5 与线性 CDR 的对比:什么时候换赛道?
| 维度 | Bang‑Bang 型 | 线性型 |
|---|---|---|
| 鉴相器输出 | ±1(二进制) | 模拟相位差(连续) |
| 抖动性能 | 劣(极限环) | 优(可逼近噪声基限) |
| 功耗 | 低 | 中/高 |
| 设计复杂度 | 简单,全数字友好 | 需要模拟设计经验 |
| 适用场景 | USB、HDMI、SATA、以太网多速率 | 光纤通信、数据中心、超低抖动链路 |
我个人习惯是:如果目标应用是消费类(比如 Type-C DP),闭眼选 Bang‑Bang;如果是 400G 光模块或者背板长距离,果断线性型。中间模糊地带(如 25Gbps 左右带重定时器)可以选混合型——既有 Bang‑Bang 的低功耗,又通过双路径抑制极限环。
总结一句话:Bang‑Bang CDR 是性价比之选,但别在抖动和锁定时间上太贪心。设计时留足余量,跑仿真看极限环幅度,再把环路延迟控制在 2 个时钟周期以内——这是我从三次流片失败中换来的教训。