3. 线性CDR与非线性(Bang-Bang)CDR的对比
做CDR设计这么多年,我经常被问到的一个问题就是:“到底该选线性还是Bang-Bang?”
说实话,没有的好坏。但选错了,后面调试起来真的很痛苦。
这两种架构的本质区别,在于鉴相器(PD)的输出特性。一个是模拟的、连续的;另一个是数字的、二值的。你想,连输出信号都不一样,整个环路的“脾气”肯定差很多。
3.1 基本原理:一个“模拟表”,一个“数字开关”
线性CDR:鉴相器输出一个与相位误差成正比的模拟电压(或电流)。
比如常见的Hogge鉴相器,或者乘法型鉴相器。误差大,输出电压高;误差小,输出电压低。环路滤波器就是一个低通滤波器,把误差信号平滑成控制电压。
我个人习惯把线性CDR看成“连续调整”:相位偏差一点,就调一点。
Bang-Bang CDR:鉴相器只输出+1或-1(或者“早”和“晚”)。
它只告诉你相位是超前还是滞后,不告诉你超前了多少。所以环路滤波器需要积分作用,把这个二值信号累加成控制量。
说白了,Bang-Bang CDR就像个“开关”:要么往前跳一步,要么往后跳一步。步长是固定的。
为什么会这样?因为Bang-Bang鉴相器(例如Alexander鉴相器)只是在时钟沿对数据采样,判断边沿位置。它没有线性区,只有过零比较。
3.2 关键差异:一张表说清楚
我在项目中遇到过两个看起来很相似的接收机,一个用了线性,一个用了Bang-Bang,结果眼图开度差了10%。下表是我自己总结的对比,你参考一下:
| 对比项 | 线性CDR | Bang-Bang (非线性) CDR |
|---|---|---|
| 鉴相器输出 | 模拟电压,与误差成正比 | 二值:+1 或 -1 |
| 增益特性 | 有限增益,有线性区 | 无限增益(过零处斜率无穷大) |
| 锁定行为 | 渐进收敛,无过冲或很小 | 存在极限环(Limit Cycle),抖动较大 |
| 抖动传递 | 低通特性,可预测 | 非线性,高频抖动可能混叠 |
| 输入抖动容限 | 较高,因为有比例控制 | 较低,但可通过增加环路带宽改善 |
| 功耗 | 模拟电路偏大,尤其高速 | 数字电路为主,可随工艺缩放 |
| 集成度 | 需模拟模块,工艺迁移成本高 | 全数字实现,容易移植 |
关键领悟:线性CDR适合“精度优先”的场景,Bang-Bang CDR适合“集成与功耗优先”的场景。这是工程上的取舍。
3.3 应用场景分析
线性CDR常见于:
- 超高速串行链路(25Gb/s以上),比如400G/800G光模块
- 对抖动传递有严格要求的系统(如SONET/SDH)
- 需要低输出抖动、高信噪比的场合
嗯,这里要注意:线性CDR的模拟部分对工艺和温度很敏感。我早年做过一个10G的线性CDR,流片后发现鉴相器增益随温度漂了30%,锁相环变得不稳定。后来不得不加了温度补偿。
Bang-Bang CDR常见于:
- 消费电子接口,如USB 3.x / PCIe / HDMI
- 多通道集成SoC,需要可复用的数字库
- 对功耗和面积敏感的移动设备
你想想,Bang-Bang CDR几乎可以全部用标准单元实现,布局布线都省心。我在一个28nm的PCIe Gen4项目中,用Bang-Bang CDR只花了两个月就完成验证,而另一个同事的线性CDR扛了半年……
小技巧:如果你不确定选哪种,先看对抖动传递函数的要求。如果是“掩码测试”很严格,选线性;如果只是误码率达标,Bang-Bang往往更省事。
3.4 实战经验:我踩过的坑
我曾经……在一个16Gbps背板项目中,方案定了Bang-Bang CDR。结果信号经过长走线,片内抖动很大。Bang-Bang环形极限环抖动叠加到输出,眼图闭合严重。后来发现,Bang-Bang的环路滤波器带宽得比线性CDR选得更窄,才能抑制极限环。
这个教训:Bang-Bang CDR的环路带宽设计不能直接套用线性模型。需要仿真它的非线性动态。
另一个坑:线性CDR的鉴相器如果有死区(Dead Zone),锁相时会出现静差。我建议在仿真中一定要扫描相位偏移,确认线性区覆盖整个数据眼宽。
最后,放一张两种架构的核心对比图,帮你建立直观印象:
上面这张图,左边是线性CDR的基本结构,右边是Bang-Bang。你可以把两者想象成汽车驾驶:线性CDR像精确控制方向盘转角,Bang-Bang像只打左灯或右灯,然后微调修正。
警告:千万不要在设计之初就“觉得哪个更高级”。线性CDR的模拟电路设计门槛高,Bang-Bang的数字设计虽然容易,但高频锁相时极限环抖动可能吃掉你的整个抖动预算。选型前先做一笔抖动预算表(Jitter Budget)。
好了,这一章就讲到这里。我要说的全在表和图里了。你品,你细品。