3、锁相环(PLL)基础:PLL的三大组成部分,线性模型与传递函数

锁相环这东西,说白了就是光通信系统里的“心脏起搏器”。没有它,接收端的数据就跟没头苍蝇似的,完全对不上节奏。我当年刚接触光模块时,总觉得PLL是个黑盒子,直到自己动手调了一次,才明白里面的门道。

今天咱们就把它拆开看看。PLL的核心就三个部分:鉴相器、环路滤波器、压控振荡器。搞懂了它们,你就掌握了时钟恢复的命门。

3.1 三大组成部分:各司其职

先看一张整体框图,我习惯用这个结构来理解PLL的闭环工作流程:

鉴相器 PD 环路滤波器 LF 压控振荡器 VCO 输入 误差电压 控制电压 输出 反馈路径(分频器可选) PLL基本结构框图

嗯,这张图很直观。输入信号进来,先跟反馈信号在鉴相器里“掐架”,比出相位差。然后误差信号被环路滤波器“捋顺”,变成平滑的控制电压。最后VCO根据这个电压调整输出频率。闭环一锁,输出就跟输入同步了。

3.2 鉴相器(PD)

鉴相器的作用,就是比较输入信号和反馈信号的相位。我习惯把它想象成“相位差探测器”。

常见的鉴相器有两种:

  • 乘法器型鉴相器:把两个信号相乘,输出包含直流分量和倍频分量。滤掉高频,剩下的直流分量就正比于相位差。
  • 数字鉴相器:比如异或门、JK触发器。输出脉冲宽度反映相位差,简单粗暴。

线性模型:在锁定状态下,鉴相器的输出可以近似为:

Vd(t) = Kd · Δθ(t)

其中Kd是鉴相增益,单位是V/rad。Δθ是相位差。

我在项目中遇到过一个问题:鉴相器的增益Kd选小了,导致锁定时间特别长。后来我把增益调大了一倍,锁定速度明显改善。但也不能太大,否则噪声会被放大,输出抖动反而变差。这里有个平衡点,得根据系统要求来调。

3.3 环路滤波器(LF)

环路滤波器,说白了就是个低通滤波器。它把鉴相器输出的高频噪声和纹波滤掉,只留下直流控制分量。

我个人最常用的是二阶有源滤波器,结构简单,性能稳定。它的传递函数是:

F(s) = (1 + s·τ₂) / (s·τ₁)

其中:
τ₁ = R₁·C
τ₂ = R₂·C

为什么用这个?因为它在低频段提供高增益,能保证锁定精度;在高频段增益滚降,抑制噪声。你想想看,如果滤波器带宽太宽,噪声会串进VCO,输出抖动就大。带宽太窄呢?锁定又慢,而且对频率变化反应迟钝。

我的经验:环路带宽一般取参考频率的1/10到1/20。比如参考时钟是100MHz,环路带宽设在5-10MHz比较合适。这个经验值我用了很多年,基本没出过问题。

3.4 压控振荡器(VCO)

VCO是PLL的执行机构。控制电压进来,它输出对应的频率。理想情况下,频率与控制电压成线性关系:

ωout(t) = ω₀ + Kv · Vc(t)

其中:
ω₀ 是自由振荡频率
Kv 是VCO增益,单位是rad/(s·V)

VCO的相位模型更常用。因为PLL锁的是相位,不是频率。相位是频率的积分:

θout(t) = Kv · ∫ Vc(τ) dτ

在拉普拉斯域里,VCO的传递函数就是Kv/s。这个积分特性很重要——它让PLL成为一个一阶系统,配合环路滤波器可以构成二阶系统。

注意:VCO的线性范围是有限的。如果控制电压超出范围,VCO会进入非线性区,增益Kv会变化,导致环路特性改变。我曾经因为没注意这个,在高速率下PLL突然失锁,查了半天才发现是VCO饱和了。

3.5 线性模型与传递函数

把三个部分串起来,就得到PLL的线性模型。我习惯用这个框图来推导传递函数:

+ Kd F(s) Kv/s θout θin

从框图可以推导出开环传递函数和闭环传递函数。这里直接给结果:

传递函数 表达式 说明
开环 G(s) = Kd · F(s) · Kv / s 环路增益
闭环 H(s) = G(s) / [1 + G(s)] 输入到输出的响应
误差 E(s) = 1 / [1 + G(s)] 相位误差的传递

对于二阶PLL(一阶滤波器 + VCO积分),闭环传递函数是标准的二阶系统:

H(s) = (2ζωₙ·s + ωₙ²) / (s² + 2ζωₙ·s + ωₙ²)

其中:
ωₙ = √(Kd·Kv / τ₁)   —— 自然频率
ζ  = (τ₂·ωₙ) / 2            —— 阻尼系数

关键参数

  • ωₙ决定PLL的响应速度,ωₙ越大,锁定越快
  • ζ决定系统的稳定性,ζ=0.7左右时,超调量和锁定时间综合最优
  • 环路带宽≈ωₙ,决定了PLL能跟踪的频率变化范围

我记得有一次调试40Gbps的光接收机,PLL的阻尼系数设成了0.3,结果锁定过程中输出抖动特别大,眼图都睁不开。后来把ζ调到0.7,波形立马就稳了。所以这个参数真的很关键,别随便设。

3.6 设计中的几个坑

最后分享几个我踩过的坑,希望能帮你少走弯路:

  • 环路带宽与数据速率要匹配:带宽太宽,噪声大;太窄,跟不上频率变化。一般取数据速率的1/100到1/1000。
  • VCO的相位噪声:这是PLL输出抖动的最大来源。选VCO时,一定要看它的相位噪声指标,尤其是在偏移频率1MHz处的值。
  • 鉴相器的死区:有些数字鉴相器在相位差很小时会进入死区,输出不变化。这会导致PLL锁定后仍有静态相位误差。解决办法是加一个很小的偏置电流,让鉴相器始终工作在活跃区。

我的习惯:设计PLL时,先用Matlab或Python把传递函数仿真一遍,看看阶跃响应和噪声带宽。确认参数合理了,再去做电路。这样能省下不少调试时间。

好了,PLL的基础就聊到这儿。这三个部分——鉴相器、环路滤波器、VCO——是时钟恢复的基石。搞懂了它们的线性模型和传递函数,后面再看具体的时钟恢复架构,就会轻松很多。


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