第二章:CDR系统架构——锁相环(PLL)基础与基本组成
各位好,欢迎来到第二章。上一章我们聊了CDR为什么重要,说白了就是让接收端能准确找到数据的“节拍”。那这个节拍怎么找?核心就是锁相环(PLL)。我个人觉得,搞懂PLL是理解CDR的第一步,也是最重要的一步。
2.1 锁相环(PLL)基础
锁相环,名字听着挺唬人,其实原理不复杂。它就是一个闭环控制系统,能让输出信号的频率和相位,精确地跟踪输入参考信号。嗯,你可以把它想象成一个“自动对焦”的过程——不断调整,直到对上为止。
我在项目中遇到过一种情况:系统刚上电时,PLL输出频率乱跳,锁定时间太长。后来发现是环路带宽没设好。你想想看,带宽太窄,锁定就慢;带宽太宽,噪声又大。这是个典型的trade-off。
核心指标:锁定时间、相位噪声、抖动传递特性。这三个指标往往互相制约,设计时得权衡。
PLL的基本结构,我习惯用下面这张图来理解。它包含了四个核心模块:
这张图我画了很多遍,每次给新人讲PLL,我都会先让他们看这张图。记住这个结构,后面CDR的架构就很好理解了。
2.2 CDR的基本组成
CDR本质上就是一个PLL,只不过它的参考信号不是时钟,而是数据流。所以它的核心模块和PLL一样,但每个模块都有特殊之处。
2.2.1 鉴相器(PD)
鉴相器的作用,就是比较输入数据和本地时钟的相位差。在CDR里,我们用的不是普通的PD,而是所谓的“鉴频鉴相器”(PFD)或者“Hogge鉴相器”。
为什么?因为数据流不像时钟那样有固定的边沿。我曾经踩过一个坑:用简单的异或门做PD,结果数据流连续出现多个“0”或“1”时,相位信息就丢了。后来换成Hogge结构才解决问题。
小技巧:在高速CDR设计中,我建议用“bang-bang”鉴相器。它虽然只有1比特的输出分辨率,但结构简单、速度快,非常适合10Gbps以上的应用。
鉴相器的输出,说白了就是两个信号:
- UP信号:本地时钟相位滞后于数据,需要提前
- DOWN信号:本地时钟相位超前于数据,需要推迟
2.2.2 电荷泵(CP)
电荷泵把鉴相器的数字输出,转换成模拟电流。它的作用很直接:UP信号来了就充电,DOWN信号来了就放电。
这里有个关键点:电荷泵的电流源必须匹配。我记得有一次仿真时发现锁定点有静态相位误差,查了半天,原来是电荷泵的上拉和下拉电流差了5%。嗯,这个误差在低频时还能忍,高频时直接导致误码率飙升。
| 参数 | 理想值 | 实际容忍范围 | 我的建议 |
|---|---|---|---|
| 上拉/下拉电流匹配 | 100% | ±2% | 版图设计时注意对称 |
| 开关时间 | 0 ps | < 20% UI | 用高速开关管 |
| 漏电流 | 0 A | < 1% Icp | 加屏蔽环 |
2.2.3 环路滤波器(LF)
环路滤波器,说白了就是个低通滤波器。它把电荷泵输出的脉冲电流,平滑成稳定的控制电压。最常见的结构是二阶RC滤波器。
你想想看,如果没有这个滤波器,VCO的控制电压会跟着每个数据边沿剧烈抖动,输出时钟的抖动会非常大。所以滤波器的设计很关键。
注意:环路滤波器的带宽决定了CDR的锁定速度和抖动容忍度。带宽越窄,抖动越小,但锁定越慢。我一般建议带宽取数据速率的1/1000到1/100之间。
环路滤波器的传递函数可以写成:
H(s) = (R + 1/sC) (一阶无源滤波器)
或者
H(s) = (R1 + 1/sC1) || (R2 + 1/sC2) (二阶有源滤波器)
实际项目中,我更喜欢用二阶无源滤波器。为什么?因为它没有运放,功耗低、噪声小。当然,代价是面积大一点。
2.2.4 压控振荡器(VCO)/数控振荡器(DCO)
VCO或DCO是CDR的“心脏”。它根据控制电压(或数字控制字),产生本地时钟。VCO是模拟的,DCO是数字的。
我个人习惯在低频CDR(< 1Gbps)中用VCO,高频CDR(> 10Gbps)中用DCO。为什么?因为高频VCO的LC谐振腔很难做,而DCO可以用数字电路实现,工艺迁移性好。
VCO的关键指标:
- 调谐范围:一般需要覆盖工艺偏差的±20%
- 相位噪声:直接影响CDR的抖动性能
- 线性度:Kvco(增益)越线性越好
DCO的关键指标:
- 频率分辨率:决定了锁定精度
- 锁定时间:受数字算法影响
- 功耗:数字电路功耗随频率线性增加
避坑指南:我曾经设计过一个DCO,频率分辨率设得太粗,结果锁定后相位误差一直在±0.5UI之间跳,导致误码率下不来。后来把分辨率从10ps降到2ps,问题才解决。所以,DCO的分辨率一定要根据系统要求仔细算。
2.3 各模块的协同工作
这四个模块不是孤立的。它们通过反馈环路协同工作,形成一个完整的CDR系统。我画个简单的流程图来说明:
这个环路的工作过程是这样的:
- 数据输入和本地时钟进入鉴相器,比较相位差
- 鉴相器输出UP/DOWN信号给电荷泵
- 电荷泵产生电流脉冲,环路滤波器将其平滑成控制电压
- 控制电压调整VCO/DCO的频率,使本地时钟跟踪数据
- 本地时钟反馈回鉴相器,形成闭环
说白了,这就是一个不断“比较-调整-再比较”的过程。直到本地时钟的边沿和数据眼图的中心对齐,环路就锁定了。
经验之谈:在仿真CDR时,我建议先单独仿真每个模块,确认功能正确后再联调。特别是鉴相器和电荷泵的接口,最容易出问题。我曾经因为一个UP/DOWN信号的时序没对齐,折腾了整整两天。
好了,这一章的内容就到这里。PLL和CDR的基本架构,说白了就是这四个模块的闭环控制。下一章我们会深入每个模块的电路实现,特别是鉴相器的各种变种。嗯,到时候我会分享更多实战中的坑和技巧。
公众号:蓝海资料掘金营,微信deep3321