1.什么是锁相环
锁相环是一种利用相位同步产生电压,去调谐压控振荡器以产生目标频率的负反馈控制系统。
锁相环就是通过负反馈控制系统,让压控振荡器的固有振荡频率fo 和输入的参考信号fi 的相位保持在误差允许范围内,从而让振荡频率fo达到和参考信号fi 同步相位频率的目的。一般来说,参考信号fi 的信号特性更好,通过锁相系统提高振荡频率fo的信号特性,同时还可以将参考信号fi 转化为你想要的任意(最好整数倍)频率信号。
2.工作原理
最基础的锁相环系统主要包含三个基本模块:鉴相器(Phase Detector:PD)、环路滤波器(L00P Filter:LF)其实也就是低通滤波器,和压控振荡器(Voltage Controlled Oscillator:VCO)。有了这三个模块的话,最基本的锁相环就可以运行了。但我们实际使用过程中,锁相环系统还会加一些分频器、倍频器、混频器等模块。(这一点可以类比STM32的最小系统和我们实际使用STM32的开发板)
图1 锁相环基本模块
图2 输入信号和输出信号存在相位差
从锁相系统开始运行的那一刻进行分析,这个时候鉴相器有两个输入信号,一个是输入的参考信号Vin,另一个是压控振荡器的固有振荡信号Vout。这个时候由于两个信号的频率不相同,会因为频差而产生相位差,如果不对压控振荡器进行任何操作,那么相位差会不断累积,从而跨越2Π角度,从零重新开始测相位,如图3所示。这便是测量死区,明明相位在不断变大,但鉴相器只能测出0~2Π的范围,测出的相位差最大便是2Π,这样就导致了鉴相器的输出电压只能在一定的范围内波动。理想状态是让这两个信号的相位差一直保持在2Π的范围内,不进入测量死区。那么在系统刚开始的时候,鉴相器测出两个信号的相位差,将相位差时间信号转化为误差电压信号输出(具体转化过程见鉴相器讲解)。通过环路滤波器转化为压控电压加到压控振荡器上,使压控振荡器的输出频率Vout逐步同步于输入信号Vin,直到两个信号的频率逐渐同步,相位差也在测量误差范围内,那么整个系统就稳定下来了。两个信号的相位差不会累积变大,而是保持相对固定的相位差。(不是常规意义上的固定不变,而是在误差允许范围内的微小波动)。
图3 相位规律变化
3.鉴相器(PD)
鉴相器的作用就是将相位差信号转化为误差电压信号。那么它的传递关系理想上是图4所示,最好有一定的线性关系。
图4 鉴相器传递关系图
那么鉴相器可以鉴别两个信号的相位差,它是如何实现的?其实很简单,异或门就可以实现,如图5,6所示。鉴相器的输入端是两个信号,只要两个信号异或不为零,就说明有相位差,异或出来的信号就是含有它们相位差信息的电压信号。
图5 异或门构成的鉴相器
图6 鉴相器鉴相过程
实际使用的鉴相器不是简单的异或门,有非时钟PD、预充电PD等多种形式,
一款锁相芯片AD9517,这款芯片是带电荷泵的鉴相鉴频器,如图7所示。为什么使用的是鉴相鉴频器呢?是因为PLL刚开始工作的时候,它的VCO的工作频率可能和输入频率偏差很大,仅仅检查相位偏差,捕获范围较小,PLL需要很长的时间才能进入锁定状态。所以为了提高PLL的响应速度,提高捕获范围,使用鉴相鉴频器。
图7 带电荷泵的鉴相鉴频器
两个D触发器的D端都是接电源端,当A信号相位超前于B信号,那么它的高电平先到来,则A的D触发器输出高电平,S1开关闭合,上面电荷泵开始灌电流。当B信号高电平到来,则B的D触发器输出高电平,而QA和QB一旦同时为高,则中间的与门就会输出高电平,就会使两个D触发器复位,从而都输出低电平,两个门都处于断开状态。同理,当B信号相位超前于A信号,那么它的高电平先到来,则B的D触发器输出高电平,S2开关闭合,下面电荷泵开始拉电流。当A的信号高电平到来,则A的D触发器输出高电平,而QA和QB一旦同时为高,则中间的与门就会输出高电平,就会使两个D触发器复位,从而都输出低电平,两个门都处于断开状态。(一般中间的与门和RESET端中间会加DELAY电路,这样是为了避免实际使用中两个信号都出现高电平,而由于电路的延时不确定性,导致到复位端的电平不确定而形成毛刺干扰的问题)
这样就把相位差信号通过电荷泵充电时间长短,转化电流的大小,这里简单的推一下它的线性模型。如图8所示。由相位差
图8 线性模型
相位差为
则相位差对应的时间为
-----相位差除以2π圆,可以知道相位差的占比,然后乘T,可知对应的时间
那么在这段时间内输出电压增加(恒流充放电的常用公式:⊿Vc=I*⊿t/C,其出自公式:Vc=Q/C=I*t/C)
基于此我们可以计算出(Vc=Q/C)
那么输出的电荷表示为
有了电荷,我们就可以计算输出电流,我们可以看到这是一个相位差和输出电流的关系式,鉴相鉴频器就可以看作是一个相位差为输入,电荷泵输出电流为输出的器件,我们就可以计算出该传输函数为
这个值我们也可以看作是鉴相鉴频器的增益。那么鉴相鉴频器就介绍到这里了,总的来说,鉴相鉴频器就是将相位差数据转化为了和它有线性关系的输出电流。但压控振荡器是受电压变化来改变输出频率的,所以还需要在鉴相鉴频器和压控振荡器之间加一个环路滤波器,将电流信号转化为电压信号,同时还可以滤除鉴相鉴频器中电荷泵的开关打开关闭所带来的纹波噪声以及毛刺,让压控电压更加平滑。
4.环路滤波器(LF)
为了提升系统稳定性和减小输出控制电压的纹波,会在鉴相鉴频器后加一个环路滤波器。一阶的环路滤波器只是一个电容,见图7的Cp,一阶的易使整个系统不稳定,现在基本看不到了,这里详细介绍二阶环路滤波器。
图9 二阶环路滤波器
这里详细推导一下它的传递关系式,电阻电容电感的阻抗计算为:
那么根据这个我们计算出它的传递函数
二阶环路滤波器传递关系式推导:
令函数S=jw,则得到如下传递函数:
5.压控振荡器(VCO)
压控振荡器是一个受压控电压控制改变输出频率的器件,有一个参数为压控灵敏度,就是压控电压和输出频率的转换系数。
我们现在使用的都是现成做好的振荡器,所以不用考虑起振条件这些。但想要自己搭一个振荡器,还是要学好多东西,我只知道起振条件为输出反馈到输入的相位差为360°,且增益大于1(必要条件)。这儿就不班门弄斧了。
我详细介绍一下VCO的传递函数,传输模型如图12所示,输入为压控电压,输出为频率,它们之间存在关系式wout=w0+KvcoVcont,
Kvco为压控灵敏度,也可以看作是VCO的增益。
图12 VCO传输模型
压控振荡器输出的是频率,鉴频鉴相器输入的是相位差,还需要将输出频率转化为相位。对于一个交流信号,其相位变化的速度即为频率,因此
所以VCO输出信号的相位为∅out=∫woutdt+∅0=w0+Kvco∫Vcont+∅0 。我们关注的参数是盈出相位∅ex=Kvco∫Vcontdt这是受压控 电压控制的,是我们可以调整的相位。那这样的话,VCO就可以看作是一个输入为压控电压Vcont,输出为盈出相位的系统,是一个理想的积分器,它的传输函数为
到这儿的话,锁相环的三个基本元件都介绍完了,传递函数也都推导完了。那既然这三个传递函数都有了,那整个锁相环的传递函数我们也就可以推导出来了。
6.锁相环线性模型传输函数
鉴相鉴频器的传输函数
环路滤波器的传输函数
压控振荡器的传输函数
AD9517芯片,在基础的模型上还加入了分频模块,这样的锁相环的线性模型为图13所示。
图13 锁相环模型
这样的话,PLL的环路增益传输函数为
PLL系统的闭环传输函数为
学过自动控制的同学是不是看到这里就觉得比较亲切了。既然是环路控制的话,少不了要分析PLL整个系统是否稳定,要计算伯德图,要计算整个系统的相位裕度,要对系统的零点和极点分析,它直接影响了整个环路是否稳定。这就是为什么现在环路滤波器基本不用一阶的,最起码都是二阶的,就是因为加入了一个极点和一个零点,增加了相位裕度,让整个环路愈加稳定了。三阶的话比二阶再多一个极点和一个零点,更加有利于系统的稳定性,还可以适当的提高PLL的响应速度。继续分析的话会更加复杂,篇幅更长,所以这里就不介绍了,总结介绍一种简单的办法,直接计算出电阻电容的值。
环路滤波器电阻电容值的计算,我推荐使用ADI公司的SimPLL、SimCLK这两个软件直接计算,会根据你的设计要求,直接计算出电阻电容的值,好的工具也可以使我们节省很多时间。
以上是PLL的简单理解。
编辑:黄飞
评论
查看更多