第二章:CDR系统架构——锁相环(PLL)基础与基本组成

各位好,欢迎来到第二章。上一章我们聊了CDR为什么重要,说白了就是让接收端能准确找到数据的“节拍”。那这个节拍怎么找?核心就是锁相环(PLL)。我个人觉得,搞懂PLL是理解CDR的第一步,也是最重要的一步。

2.1 锁相环(PLL)基础

锁相环,名字听着挺唬人,其实原理不复杂。它就是一个闭环控制系统,能让输出信号的频率和相位,精确地跟踪输入参考信号。嗯,你可以把它想象成一个“自动对焦”的过程——不断调整,直到对上为止。

我在项目中遇到过一种情况:系统刚上电时,PLL输出频率乱跳,锁定时间太长。后来发现是环路带宽没设好。你想想看,带宽太窄,锁定就慢;带宽太宽,噪声又大。这是个典型的trade-off。

核心指标:锁定时间、相位噪声、抖动传递特性。这三个指标往往互相制约,设计时得权衡。

PLL的基本结构,我习惯用下面这张图来理解。它包含了四个核心模块:

鉴相器(PD) 电荷泵(CP) 环路滤波器(LF) VCO/DCO 反馈路径(分频器) 输入参考时钟 输出时钟

这张图我画了很多遍,每次给新人讲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系统。我画个简单的流程图来说明:

数据输入 鉴相器(PD) 电荷泵+滤波器 VCO/DCO 时钟输出 反馈控制

这个环路的工作过程是这样的:

  1. 数据输入和本地时钟进入鉴相器,比较相位差
  2. 鉴相器输出UP/DOWN信号给电荷泵
  3. 电荷泵产生电流脉冲,环路滤波器将其平滑成控制电压
  4. 控制电压调整VCO/DCO的频率,使本地时钟跟踪数据
  5. 本地时钟反馈回鉴相器,形成闭环

说白了,这就是一个不断“比较-调整-再比较”的过程。直到本地时钟的边沿和数据眼图的中心对齐,环路就锁定了。

经验之谈:在仿真CDR时,我建议先单独仿真每个模块,确认功能正确后再联调。特别是鉴相器和电荷泵的接口,最容易出问题。我曾经因为一个UP/DOWN信号的时序没对齐,折腾了整整两天。

好了,这一章的内容就到这里。PLL和CDR的基本架构,说白了就是这四个模块的闭环控制。下一章我们会深入每个模块的电路实现,特别是鉴相器的各种变种。嗯,到时候我会分享更多实战中的坑和技巧。


公众号:蓝海资料掘金营,微信deep3321