3、锁相环(PLL)基本模型

锁相环,说白了就是让一个振荡器的频率和相位,死死咬住参考信号。

我刚开始接触PLL时,就觉得这东西挺玄乎。后来调试得多了,发现它没那么神秘。你只要吃透三个核心部件,再搞清楚它们之间怎么配合,基本上就通了一半。

3.1 PLL的三大部件

一个最基本的PLL,由三个部分组成:鉴相器(PFD)、环路滤波器(LF)、压控振荡器(VCO)。我习惯把这三个部件比作三个人:

  • 鉴相器 — 一个兢兢业业的哨兵,它的任务只有一个:比对输入信号和VCO反馈回来的信号,看看它们谁快谁慢,相位差了多少。
  • 环路滤波器 — 一个冷静的参谋。它把哨兵送来的“偏差”信息过滤掉高频噪声,只留下低频的、有用的控制电压。
  • VCO — 一个年轻的执行者。它听参谋的话,调节自己的输出频率,直到反馈回去的信号和输入信号完全同步。

关键理念: PLL是一个负反馈系统。它不追求瞬间完美,而是通过不断的“检测→调整→再检测”循环来逼近锁定状态。我经常在项目里跟新人说,别指望VCO一步到位,它需要时间稳定下来。

3.1.1 鉴相器(PFD)

PFD的核心功能是输出一个与相位差成比例的电压(或电流)。

我以前用过一种最简单的类型,叫异或门鉴相器。它能工作,但有一个致命问题:当PLL锁定时,它输出的脉宽会很大,导致控制电压纹波大,相位噪声也跟着变差。

后来我主力用的是三态鉴频鉴相器。这东西好在哪里?

  • 它能同时识别频率差和相位差。
  • 锁定时,它的输出是“高阻”态,几乎不引入纹波。
  • 它不会出现“死区”问题,尤其是在窄带PLL中。
鉴相器类型 输出方式 锁定特性 典型应用场景
异或门鉴相器 电压 存在纹波,相位噪声较大 低频、对噪声要求不高的场景
电荷泵鉴相器 电流 锁定后高阻,噪声低 高频、低抖动场景

我的小建议: 在Retimer设计中,我强烈推荐使用电荷泵PFD。它对抖动和噪声的容忍度更高,调试起来也省心。

3.1.2 环路滤波器

环路滤波器主要是决定PLL的动态性能。它的阶数、带宽、零点/极点位置,直接决定了PLL是快还是稳,是跳频快还是噪声低。

我记得第一次做窄带PLL时,滤波器带宽压得很低,以为这样噪声肯定漂亮。结果呢?锁定时间慢得像蜗牛爬。后来才明白,滤波器带宽必须和参考时钟频率、环路增益匹配。选窄了,噪声好但锁定慢;选宽了,锁定快但噪声差。这本身就是个权衡问题。

3.1.3 压控振荡器(VCO)

VCO就是那个把控制电压转换成频率的家伙。它的关键指标是调谐灵敏度(KVCO),单位是MHz/V。KVCO越大,意味着电压变化一点点,频率就能跳很大。这在宽带PLL里是好事,但在窄带PLL里,会放大电路板的噪声,导致相位噪声劣化。

我在做一款25Gbps的Retimer时,用的VCO是LC压控振荡器。它的相位噪声远优于环形振荡器,但缺点是锁相范围窄。设计时要是找不到兼容的频率范围,你就得换方案。

// 一个简单的VCO线性化模型
// K_vco 单位:Hz/V
// Vctrl 单位:V
// f_out = f_center + K_vco * Vctrl
double f_out = f_center + K_vco * Vctrl;

3.2 线性化分析与传递函数

为什么要做线性化?因为PLL本质上是一个非线性系统。但在锁定状态下,相位变化很小,我们可以用线性模型来近似它,从而写出它的传递函数。这件事是我个人觉得最难但也是最有用的部分。

3.2.1 怎么把PLL拉直了看

我习惯画一个S域模型来梳理思路。每个模块用拉普拉斯变换表示,最后把输出/输入的相位比写出来。

  • 鉴相器:把相位误差转为电压(或电流)。在S域里,它就是一个比例环节(KPFD)。
  • 环路滤波器:用它的转移函数表示。一阶RC是1/(1+sRC),有源滤波器会复杂一些。
  • VCO:它的相位输出是对频率的积分。所以它的传递函数是KVCO/s,这是一个纯积分环节。

当我把这三个环节串起来,再加上反馈路径,就能写出闭环传递函数了。

开环传递函数:
G(s) = K_PFD * F(s) * (K_VCO / s)

闭环传递函数:
H(s) = G(s) / (1 + G(s))

我建议你常备这几种传递函数的形式,尤其是二阶PLL的。调试的时候,你能感性理解一个极点加在哪里能改善噪声,还是能提高稳定性。

3.2.2 传递函数表格速查

PLL类型 环路滤波器阶数 典型传递函数 主要考虑指标
一阶PLL 0(无滤波器) K/(s+K) 锁定快,但噪声大
二阶PLL 1(一阶RC) (Kωn²)/(s²+2ζωns+ωn²) 噪声与锁定时间的平衡点
三阶PLL 2(二阶滤波器) 分子有s的项 参考杂散抑制更好

避坑指南: 我曾经在一个项目中,把三阶PLL的阻尼因子设得太低(小于0.5)。结果系统在锁定过程中出现过冲,导致相位抖动超标。所以,ζ最好设置在0.7到1.0之间,这是经验值。

3.3 我个人理解的PLL核心逻辑图

下面这张图,是我自己整理出的PLL系统思维框架。你看一眼,就能把刚才讲的三个组件和它们的连接关系看清楚。

PLL 三大部件与传递函数核心逻辑 输入信号 (Ref) 鉴相器 (PFD) 环路滤波器 (LF) 压控振荡器 (VCO) 输出 (Out) S域模型每个模块都是一个传递函数

3.4 从原理到实战:怎么用

你光知道三大部件和传递函数,还不够。我教你一个实际调试时的思路:

  1. 先确认VCO工作在它的线性区。 不管是LC VCO还是环形VCO,都有个线性调谐范围。你测一下输入控制电压和输出频率的关系,确保没拐点。
  2. 再算自然角频率和阻尼因子。 我通常先用公式把二阶PLL的ωn和ζ算出来,然后对照表格查看响应的过冲量和锁定时间。如果过冲超过20%,我就调整环路滤波器的电阻/电容值。
  3. 最后用锁相环分析仪实测。 我常看的是相位噪声曲线和锁定时间。如果在锁定过程中有长时间振荡,那就是环路增益太高或者阻尼因子太小。

一个实测小技巧: 用频谱仪看PLL输出,如果在偏离载波几kHz的地方有尖峰,通常就是环路滤波器带宽太窄导致的振荡。这时我一般先把滤波器电容减小一半试试。

好了,这就是我对PLL基本模型的理解。它不是理论堆砌,而是真真正正能帮助我解决日常调测问题的工具。