【什么是PLL锁相环】

PLL锁相环原理解析

解决一个单片机需要多个晶振的问题

它有一个电压或者电流驱动的振荡器

可以不断调整来匹配输入信号的相位

所以PLL用来进行频率控制

可以配置成频率乘法、除法、解调器戚、跟踪生成器或者时钟恢复电路

实现一共晶振达到等多种频率的效果 随时可变/稳定的效果
在这里插入图片描述

在这里插入图片描述

工作原理:

  1. 晶体输出 Fin 到鉴相器;
  2. VCO 输出 Fout,同时反馈回鉴相器;
  3. 鉴相器比较 Fin 和反馈的 Fout,若存在相位 / 频率差,就输出控制信号调整 VCO;
  4. 最终让 Fout 的频率锁定到 Fin(图中 Fout = Fin),实现精准的频率同步。

在这里插入图片描述

  1. VCO 输出 Fout,并送入 1/N 分频器,得到 Fout/N 的反馈信号;
    在这里插入图片描述

2.将晶体输出的 Fin 进行 1/M 分频,得到 Fin/M 的信号

3.最终让 Fin/M = Fout/N(锁相环的 “锁定” 条件),因此推导得 Fout = Fin * N/M,实现了输入频率的 N/M 倍调节(可倍频、分频或保持频率,取决于 NM 的数值关系)。

在这里插入图片描述

  • Loop Filter(环路滤波器):对鉴相器输出的误差信号进行滤波和整形,去除高频噪声和毛刺,输出平滑的控制电压 / 电流给 VCO。它是保障 PLL 稳定性的
### 概念 锁相环(Phase-Locked Loop,简称PLL)是一种广泛应用于电子工程中的电路技术,主要用于信号的频率同步、相位同步以及信号调制与解调等领域。它通过反馈机制使输出信号的相位与输入参考信号的相位保持锁定,从而实现频率的精确控制[^1]。 ### 工作原理 锁相环的核心功能是通过反馈机制来调整输出信号的相位,使其与输入参考信号的相位保持一致。具体来说,锁相环由三个主要部分组成:相位比较器、低通滤波器和电压控制振荡器(VCO)。 1. **相位比较器**:相位比较器的作用是将输入参考信号与VCO输出信号的相位进行比较,产生一个与相位差成比例的误差电压。如果两个信号之间存在相位差,相位比较器会生成一个相位误差信号输出[^3]。 2. **低通滤波器**:相位比较器输出的误差电压通常包含高频成分,低通滤波器的作用是滤除这些高频成分,保留低频部分,从而得到一个稳定的直流电压。这个直流电压反映了输入信号与VCO输出信号之间的相位差[^2]。 3. **电压控制振荡器(VCO)**:VCO根据低通滤波器输出的直流电压调整其振荡频率。当输入信号的频率发生变化时,VCO的频率也会相应调整,直到其输出信号的相位与输入参考信号的相位一致。此时,锁相环进入锁定状态,输出信号的频率和相位与输入信号保持同步[^1]。 ### 应用 锁相环的应用非常广泛,包括但不限于以下方面: - **频率合成**:锁相环可以将输入的频率放大或缩小到所需的频率,例如在集成电路中,晶振提供的频率可能只有100MHz,但系统需要500MHz的时钟信号,这时就可以利用锁相环实现频率的倍频。 - **信号调制与解调**:锁相环可用于提取调制信号中的载波成分,实现信号的解调。 - **减少电磁干扰(EMI)**:锁相环可以通过调整输出信号的频率来减少电磁干扰,提高系统的稳定性[^2]。 - **时钟恢复**:在数据通信中,锁相环可以从接收到的数据流中恢复出时钟信号,确保数据的正确传输。 ### 示例代码 以下是一个简单的Python代码示例,用于模拟锁相环的基本工作原理: ```python import numpy as np import matplotlib.pyplot as plt # 生成输入参考信号 fs = 1000 # 采样率 t = np.linspace(0, 1, fs, endpoint=False) # 时间向量 f_ref = 10 # 参考信号频率 ref_signal = np.sin(2 * np.pi * f_ref * t) # 生成初始VCO信号 f_vco = 9 # VCO初始频率 vco_signal = np.sin(2 * np.pi * f_vco * t) # 相位比较器 phase_error = np.zeros_like(t) for i in range(1, len(t)): phase_error[i] = ref_signal[i] - vco_signal[i] # 低通滤波器 alpha = 0.01 # 滤波器系数 filtered_error = np.zeros_like(t) for i in range(1, len(t)): filtered_error[i] = alpha * phase_error[i] + (1 - alpha) * filtered_error[i - 1] # VCO调整 K_vco = 100 # VCO增益 adjusted_vco = np.zeros_like(t) adjusted_vco[0] = f_vco for i in range(1, len(t)): adjusted_vco[i] = adjusted_vco[i - 1] + K_vco * filtered_error[i] # 绘制结果 plt.figure(figsize=(12, 6)) plt.plot(t, ref_signal, label='Reference Signal') plt.plot(t, vco_signal, label='VCO Signal') plt.plot(t, adjusted_vco, label='Adjusted VCO Frequency') plt.legend() plt.xlabel('Time (s)') plt.ylabel('Amplitude / Frequency') plt.title('PLL Simulation') plt.grid(True) plt.show() ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式学不会不改名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值