锁相环倍频小结

1. 锁相环(PLL)

原理:锁相环是一种利用反馈控制原理实现相位和频率同步的技术,一般由鉴相器,滤波器,压控震荡器和分频器构成,它的作用是将电路输出的时钟与其外部的参考时钟保持同步。
Screenshot from 2019-09-09 11-39-27.png
应用:在通信机等所使用的振荡电路,其所要求的频率范围要广,且频率的稳定度要高。无论多好的LC振荡电路,其频率的稳定度,都无法与晶体振荡电路比较。但是,晶体振荡器除了可以使用数字电路分频以外,其频率几乎无法改变。如果采用PLL(PhaseLockedLoop)技术,除了可以得到较广的振荡频率范围以外,其频率的稳定性也很高。

  1. 鉴相鉴频器PFD(Phase Frequency Detector):对输入的基准信号(来自频率稳定的晶振)和反馈回路的信号进行频率的比较,输出一个代表两者差异的信号。
    低通滤波器LPF(Low-Pass Filter):将PFD中生成的差异信号的高频成分滤除,保留直流部分。
  2. 压控振荡器VCO(Voltage Controlled Oscillator):根据输入电压,输出对应频率的周期信号。利用变容二极管(偏置电压的变化会改变耗尽层的厚度,从而影响电容大小)与电容构成的LC谐振电路构成,提高变容二极管的逆向偏压,二极管内耗尽层变大,带内容变小,LC电路的谐振频率提高,反之,降低逆向偏压时,二极管内电容变大,频率降低。
  3. 反馈回路FL(Feedback Loop):通常由一个分频器实现,将VCO的输出降低到与基准信号相同级别的频率才能在PFD中比较。
  4. PLL工作的基本原理就是将压控振荡器的输出经过分频后与基准信号输入PFD,PFD通过比较这两个信号的频率差,输出一个代表两者差异的信号,再经过低通滤波器转变成一个直流脉冲电压去控制VCO使它的频率改变。这样经过一个很短的时间,VCO的输出就会稳定下来。所以:PLL并不是直接对晶振进行倍频,而是将频率稳定的晶振作为基准信号,与PLL内部振荡电路生成的信号分频后进行比较,使PLL输出的信号频率稳定
    小结:
    使用的基准信号为稳定度很高的晶体振荡电路信号

1.1 PLL与倍频器

由上面可以知道,晶振由于其频率的稳定性,一般作为系统的外部时钟源。但是晶振的频率虽然稳定,但是频率无法做到很高(成本与工艺限制),由此芯片中高频时钟就需要压控振荡器,但是压控振荡器也有问题,其频率不够稳定,而且变化时很难快速稳定频率。这就是标准开环系统所出现的问题,解决办法就是接入反馈,使开环系统变成闭环系统,并且加入稳定的基准信号,与反馈比较,以便生成正确的控制。

2. 压控震荡器

原理:指输出频率与输入控制电压有对应关系的振荡电路,常以符号(VCO)(Voltage Controlled Oscillator)。其特性用输出角频率ω0与 输入控制电压uc之间的关系曲线(图1)来表示.图1中,uc为零时的角频率ω0,0称为自由振荡角频率;曲线在ω0,0处的斜率K0称为控制灵敏度。
Screenshot from 2019-09-09 14-51-36.png
应用:
1、讯号产生器。
2、电子音乐中用来制造变调。
3、锁相回路。
4、通讯设备中的频率合成器。
小结:压控震荡器的核心元器件是压控可变电抗元件,早期是一个电抗管,后来大都使用变容二极管

3. 倍频器的种类

  1. 锁相倍频器
    在锁相环路中插入分频器,改变分频次数就可实现任何倍数的倍频。
  2. 三极管倍频器
    在短波和超短波段,采用由晶体三极管构成的三极管倍频器。由于晶体三极管在输入信号作用下产生的集电极电流脉冲,其各次谐波电流的幅度总是随着谐波次数增加而迅速减小。因此,倍频次数越高,倍频效率就越低;

4. 举例

比如我基频是10MHz,需要100MHz的频率,那就得用VCO产生一个100MHz的频率后10分频,用鉴相器与基频比较,输出一个比较的波形后经过低通滤波,用输出电压控制VCO的输出。
2. 两个模块分别需要50M和100M的时钟,问系统时钟是采用100M还是50M
答:采用100M时钟,因为分频的得到时钟比倍频产生的时钟质量好,稳定性高;其次分频电路比较简单,容易实现,而倍频电路需要鉴频鉴相器(PD),低通滤波器(LF),压控振荡器(VCO),分频器等电路,因此倍频电路实现复杂。

以下是一个简单的 DSP 锁相环倍频的代码示例,代码中使用的是 TMS320C6x DSP: ```c #include <stdio.h> #include <math.h> // 定义锁相环参数 #define N 32 #define K 5 #define ALPHA 0.01 // 初始化锁相环参数 float phase = 0; float freq = 0; float error = 0; float filter_out = 0; float phase_out = 0; // 定义输入信号和本地参考信号 float input[N]; float ref[N]; // 定义低通滤波器参数 float u_out = 0; float u_in = 0; float b0 = ALPHA; float a1 = 1 - ALPHA; // 定义计数器 int cnt = 0; int main(void) { // 生成输入信号和本地参考信号 for(int i = 0; i < N; i++) { input[i] = sin(2 * M_PI * K * i / N + M_PI / 4); ref[i] = sin(2 * M_PI * i / N); } // 循环处理每个输入样本 for(int i = 0; i < N; i++) { // 计算相位误差 error = atan2(ref[i], input[i]) - phase; // 低通滤波 u_in = error * freq; u_out = b0 * u_in + a1 * u_out; filter_out = u_out / freq; // 更新本地参考信号相位 phase_out = phase + filter_out; // 更新本地参考信号频率 freq = freq + ALPHA * error; // 更新本地参考信号相位 phase = phase_out; // 输出本地参考信号 printf("Phase: %f\n", phase_out); // 更新计数器 cnt++; } return 0; } ``` 在以上代码中,首先定义了锁相环的参数,包括采样点数、倍频系数以及增益系数等。然后生成了输入信号和本地参考信号,并在循环中逐个处理每个输入样本。对于每个样本,首先计算相位误差,然后通过低通滤波器对误差进行滤波,得到滤波器输出,并更新本地参考信号的相位和频率。最后输出本地参考信号的相位,并更新计数器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值