4、电荷泵与环路滤波器:基本原理、传递函数、对锁定时间的影响

好,咱们进入这个章节。电荷泵(Charge Pump)加环路滤波器(Loop Filter),说实话就是CDR锁相环的“心脏”。前面聊了鉴频鉴相器,它只管输出“上拉”或“下拉”的脉冲,但真正决定环路怎么走、走多快的,是后面这两个家伙。今天我就把这个组合拆开来,跟你聊聊它们到底怎么玩。

4.1 电荷泵的基本原理

电荷泵说白了就是一个受控的电流源。它听PFD的话:PFD说“相位超前了,频率高了,往下降”,它就灌电流(Sink);PFD说“相位落后了,频率低了,往上升”,它就抽电流(Source)。你想想看,这不就是一个数字信号到模拟电流的转换器吗?

我在项目中遇到过这么一个坑:刚开始做CDR时,总觉得电荷泵就是一对简单的开关管和电流镜。结果第一次流片回来,锁定时间忽长忽短,抖动也压不下去。后来一查,原来是电荷泵的匹配出问题了——灌电流和抽电流差了好几个百分点。嗯,这里要注意,电荷泵的电流源必须精确匹配。不匹配会导致什么?会导致静念相位偏移(Static Phase Offset),也就是即使锁定了,VCO控制电压上还有纹波,抖动自然就上来了。

核心指标:电荷泵电流(Icp)通常设为50µA~2mA。这个值直接决定环路增益。电流越大,锁定越快,但噪声也越明显。

我建议你先把电荷泵理解成一个“电流开关”。它有三个状态:上拉(充电)、下拉(放电)、高阻(三态)。理想情况下,三个状态切换无缝,但实际总有毛刺。我见过最头疼的,是开关瞬间的电荷注入(Charge Injection)和时钟馈通(Clock Feedthrough)问题。这部分我们以后讲抖动时会细聊。

4.2 环路滤波器的角色

环路滤波器(LF)看起来就是一个RC网络,但别小看它。它把电荷泵的电流脉冲转变成平滑的电压,再去控制VCO的频率。你想想看,如果没有它,VCO的控制电压会一直跳来跳去,频率根本无法稳定。

最简单的环路滤波器是一个电容。但我可以明确告诉你,只用电容是不够的。原因很简单:纯电容会导致环路不稳定。环路中会有一个位于原点的极点,加上VCO本身也是积分器(另一个原点极点),整个系统就是二阶以上的,跑起来容易振荡。

我起初做PLL的时候,老师傅丢给我一句话:“加个电阻串在电容前面。”这就是最基本的RC滤波器。但这个电阻会引入一个零点,用来补偿相位裕度。环路滤波器最常用的结构是二阶无源滤波器:一个电容和电阻串联,再并联一个小电容。

类型 极点数量 面积 噪声 常用场景
无源二阶 2个极+1个零点 小 好 电荷泵PLL为主流
有源三阶 3个极+1个零点 大 稍差 高频或低电压环境
片上有源 同上 中 差些 全集成CDR

我个人习惯用无源二阶滤波器。为什么?简单、可靠、噪声小。有源滤波器虽然能提供更高的增益,但它自己会引入运放的噪声和失调。在CDR这种对抖动敏感的应用里,能省则省。

4.3 传递函数分析

好了,我们来硬核一点的东西:传递函数。知道这个你才能真正理解闭环行为。

电荷泵的传递函数很简单:它是一个增益模块,增益就是 Icp / 2π。单位是 [A/rad]。PFD输入是相位差,输出是电流脉冲的平均值。

环路滤波器的传递函数取决于结构。以常用的二阶无源滤波器为例:

用一个串联的R 和 C1,再并联一个 C2(用于抑制高频纹波)。则阻抗为:

Z(s) = (1 + s·R·C1) / ( s·(C1 + C2) · (1 + s·R·C1·C2/(C1+C2)) )

看上去有点乱,但你记住: 分子有一个零点(从R和C1来),分母有一个极点(串联等效电容),再加一个原点极点。我们定性地看,这个零点对环路稳定性至关重要。

开环传递函数:

G(s) = (Icp / 2π) · Z(s) · (Kvco / s)

其中Kvco是VCO的增益,单位是 rad/(s·V)。注意VCO自己也是一个积分器(1/s),所以整个环路是三阶系统。

参数 符号 影响
电荷泵电流 Icp 增大→增益↑→锁定变快→但抖动噪声↑
环路滤波器电阻 R 增大→零点频率移动→相位裕度变差
环路滤波器电容 C1,C2 影响带宽与高频抑制
VCO增益 Kvco 增大→环路带宽↑→锁定快→但噪声容忍度下降

这里有一个公式我个人非常喜欢用:环路带宽 ωbw 约等于 (Icp·R·Kvco) / (2π·N),其中 N 是分频比(CDR中常为1或2)。你看,带宽与 R 和 Icp 直接相关。

4.4 对锁定时间的影响

锁定时间是最实际的话题。产品送你的时候,会问:“你这CDR多长时间能锁上?” 客户可不希望等几十微秒才看到数据。

锁定时间受三个东西支配:
1. 环路带宽
2. 相位裕度
3. 频率初始差

我通常用 ζ (阻尼系数) 和 ωn (自然频率) 来估算锁定时间。二阶近似下:

ζ ≈ (R·C1·ωn) / 2
ωn = sqrt( (Icp·Kvco) / (2π·N·C) )

其中 C 是环路总电容。当 ζ ≈ 0.7 左右时,锁定时问最短,超调也小。我一般会把相位裕度设在50°~70°之间。

我曾经为了一款28Gbps的SerDes CDR调试锁定时间。设计时选的带宽太窄了(约500kHz),导致锁定要花将近20µs,根本没办法满足协议要求。后来把Icp翻了一倍,同时微调了R,让带宽升到2MHz,锁定时间一下就降到了6µs左右。代价是什么?抖动稍微大了点,但还在容忍范围内。所以,这是一个平衡。

调参建议:要是锁定太慢,先检查 Icp 和 R。加大 Icp 效果最明显,但要留意噪声。移动 R 也可以,但会影响零点和相位裕度,调完记得跑一下稳定性的波特图验证。

4.5 核心逻辑结构图

下面我把这一章的核心关系整理成了 SVG 图。你可以看到,电荷泵和环路滤波器把PFD的脉冲信号转换成控制电压,中间的各个参数环环相扣,直接决定锁定时间和抖动特性。

电荷泵与环路滤波器核心结构 鉴频鉴相器 电荷泵 环路滤波器 VCO 电荷泵电流 Icp 增益↑ → 锁定快,但噪声↑ 环路电阻 R 影响零点位置与相位裕度 环路电容 C1/C2 决定带宽与纹波抑制 结果:锁定时间 ↑↓ 抖动容忍度 三者参数权衡影响最终锁定速度与动态特性 注意:温度、工艺角会使 Icp 偏移 5-20%

4.6 锁定时问与抖动容忍度的权衡

你是不是想问:能不能又锁定快,又抖动小?答案是:理论上可以,但要牺牲其他。我设计时有一条原则:先定带宽,再调参数。

锁定时间近似公式(经验值):

锁定时间 ≈ 2π / ωbw  (简单估计)

也就是说,带宽10MHz的环路,理论上锁定时问约0.6µs。但如果你的CDR要跟踪大量抖动,这个带宽太大了,等于把高频噪声也放进了VCO控制端。那你抖动容忍度就会下来。反之,如果把带宽做得很窄,压制了噪声,但是锁定时间会拉长。这就成了一个死结。

我见过一个很经典的商用CDR芯片,它采用自适应带宽策略:初始锁定时,把Icp提高到最大值,同时把R调大,让环路快速锁频——这个过程大概2~3µs。一旦锁定后,内部逻辑把Icp降下来,带宽也降下来,进入低抖动模式。这是一个非常实用的电路技巧。

你可以把这个思路延伸成:

  • 锁定阶段:高Icp、大带宽 → 快速锁定
  • 跟踪阶段:低Icp、小带宽 → 低抖动、优良容忍度

但注意,这个切换不能粗暴。如果切换瞬间控制电压突变,输出频率一下跳出去,就前功尽弃了。我当年的电路里专门加了一个“软切换”电路,让参数在几个时钟周期内渐变。

避坑提醒:如果R和C的比值不合理,会导致相位裕度低于45°,环路会出现严重的振荡,甚至无法锁定。调参数时一定要用波特图检查相位裕度。我曾经吃过这个亏,拿示波器一看VCO控制电压:一直在跳,怎么都锁不住。最后发现是R太大了,零点跑到了极点外面,相位裕度只有30°,就基本没法用了。

好了,这一部分咱们把电荷泵跟环路滤波器的关系讲得比较透了。你记住了:这两个是直接决定锁定时间和抖动容忍度的关键,也是你调参时的第一站。