锁相环的原理和作用——基础补充(五)

锁相环一直在被提起,在我心中一直都是一个词,没有概念,现在FPGA内必须要学会用到,在此做下记录。

1 为什么要用锁相环?

对于现在的数字控制系统,对于外部信号的解析都是基于芯片内部的时钟的,系统内部的时钟有其独自的频率和相位。而外部输入的信号,同样具有其自有的频率和相位。假如外部输入信号恰好在内部时钟的1/2个周期时候输入,如果不加任何处理,那么输入信号的相位永远都和内部时钟信号差半个周期。这半个周期的空白会导致信号解析出错,甚至无法检测外部信号的严重后果。尤其在通信领域,一些小的信号的错误解析会导致整个系统瘫痪。

机理类比:大家都在跟着音乐跳舞,有一个舞蹈教练发现大家的动作节奏跟不上音乐了,慢了半个拍子(类似于有了相位差),于是换了一个缓慢一点的音乐,以便大家能跟得上节奏。

所以我们就需要用到一种能够使得外部信号和内部独立时钟同步的功能模块,锁相环就在这种需求下产生。

2 锁相环的原理

锁相环一般由三部分组成压控振荡器、滤波器和鉴相器。

鉴相器:检测输出信号和输入信号的相位差

环路滤波器:它的作用是滤除掉来自PLL电路中鉴相器输出电压Vd(t)中的高频成分和噪声分量,得到一个干净的控制电压Vc(t)去控制压控振荡器的频率输出。

压控振荡器:输出频率与输入控制电压有对应关系的振荡电路(VCO),频率是输入信号电压的函数,振荡器的工作状态或振荡回路的元件参数受输入控制电压的控制,就可构成一个压控振荡器。

通过鉴相器检测输出信号和输入信号之间的相位差,并转化为电压输出,经过低通环路滤波器形成压控振荡器的控制电压,控制压控振荡器输出和输出信号相同相位的信号。

 

3 锁相环的应用基础补充

锁相跟踪,锁相分频,锁相倍频

我这里只是初步的学习,这是个介绍锁相环比较详细的链接,大家可以看看。

http://www.360doc.com/content/16/0601/20/33813117_564266468.shtml

Vivado内PLL的IP核的调用

https://jingyan.baidu.com/article/2fb0ba40ffeafe00f3ec5f77.html

### 锁相环PLL)的工作原理作用 锁相环PLL, Phase-Locked Loop)是一种反馈控制系统,其核心功能在于使输出信号的频率相位与输入信号同步。这种技术广泛应用于通信、信号处理以及电力电子等领域。 #### 工作原理 锁相环的主要组成部分包括鉴相器(PD)、环滤波器(LF)压控振荡器(VCO)。以下是各部分的功能及其协同工作方式: 1. **鉴相器(PD)** 鉴相器接收两个输入信号:一个是外部参考信号,另一个是由压控振荡器产生的内部信号。鉴相器比较这两个信号的相位差异,并输出一个误差电压,该电压反映了两者的相位偏差[^4]。 2. **环滤波器(LF)** 环滤波器对鉴相器输出的误差电压进行平滑处理,去除高频噪声成分,从而得到稳定的直流控制电压。这一过程对于提高系统的稳定性抗干扰能力至关重要。 3. **压控振荡器(VCO)** 压控振荡器根据环滤波器提供的控制电压调整自身的振荡频率。当控制电压变化时,VCO会相应改变其输出信号的频率相位,直到达到与输入信号完全同步的状态。 整个系统通过负反馈机制不断调整,直至输出信号的频率相位与输入信号一致。此时,系统进入锁定状态,即所谓的“锁相”。 --- #### 作用 锁相环的核心作用可以概括为以下几个方面: 1. **频率合成** PLL能够基于单一参考频率生成多个倍频或分频后的信号。这在无线通信领域尤为重要,因为可以通过简单的硬件设计实现复杂的多频段操作[^2]。 2. **信号恢复与再生** 在存在噪声或其他失真因素的情况下,PLL可以从受损的输入信号中提取纯净的载波信号并加以重建。这对于数据传输中的误码率降低具有重要意义[^1]。 3. **相位校正** 对于需要精确时间基准的应用场景(如数字电中的时钟分配),PLL可通过动态调整确保各个模块之间的相对定时关系始终保持一致性[^3]。 4. **调制解调支持** 在现代通信系统中,PLL常作为混频器的一部分参与AM/FM等类型的调幅/调频信号处理流程。借助其强大的跟踪性能,即使面对快速变动的目标参数也能维持良好的适应性[^5]。 --- ```python # 示例代码展示如何构建基础的离散时间锁相环模型 import numpy as np def pll_model(input_signal, kp=0.1, ki=0.01): phase_error = [] output_phase = [] integral_term = 0 for i in range(len(input_signal)): current_error = input_signal[i] - output_phase[-1] if output_phase else input_signal[i] # 更新积分项 integral_term += ki * current_error # 计算新的输出相位 new_output_phase = sum(output_phase) + (kp * current_error + integral_term) output_phase.append(new_output_phase) phase_error.append(current_error) return np.array(phase_error), np.array(output_phase) input_signal = np.sin(2 * np.pi * 0.1 * np.arange(0, 100)) phase_errors, phases = pll_model(input_signal) print(phases[:10]) # 输出前十个样本的结果 ``` 上述Python脚本展示了简化版离散时间锁相环的行为特性模拟方法。其中`kp`代表比例增益系数;`ki`则表示积分增益因子。两者共同决定了算法收敛速度平稳程度之间权衡取舍的关系。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值