FM信号的锁相环解调
时间: 2024-06-13 18:09:09 浏览: 340
Fm_signal_FM调制解调_FM锁相环_锁相环_同步跟踪_
5星 · 资源好评率100%
锁相环(PLL)是一种常用的FM解调电路,其基本原理是将输入的调频信号与本地振荡器产生的信号进行相位比较,然后将相位误差信号经过滤波放大后控制本地振荡器的频率,使其与输入信号同步,从而实现解调。具体步骤如下:
1.将输入的FM信号与本地振荡器产生的信号混频,得到中频信号。
2.将中频信号输入相位比较器,与本地振荡器产生的信号进行相位比较,得到相位误差信号。
3.将相位误差信号经过低通滤波器滤波,得到控制信号。
4.将控制信号输入到本地振荡器中,控制其频率,使其与输入信号同步,从而实现解调。
下面是一个简单的Python代码实现锁相环解调:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成调频信号
fs = 1000 # 采样率
t = np.arange(0, 1, 1/fs)
fc = 10 # 载波频率
fm = 2 # 调制频率
kf = 10 # 调制系数
phi = 0 # 初始相位
x = np.cos(2*np.pi*fc*t + kf*np.sin(2*np.pi*fm*t + phi))
# 生成本地振荡器信号
f0 = fc + 5 # 初始频率
y = np.cos(2*np.pi*f0*t)
# 锁相环解调
f1 = 0 # 初始频率误差
Kp = 0.1 # 比例增益
Ki = 0.01 # 积分增益
e = np.zeros(len(t)) # 相位误差
for i in range(1, len(t)):
phi = np.angle(np.conj(x[i])*y[i]) # 相位比较
e[i] = phi/(2*np.pi) # 相位误差
f1 = f1 + Kp*e[i] + Ki*np.sum(e[:i]) # 频率误差积分
y[i] = np.cos(2*np.pi*(f0+f1)*t[i]) # 本地振荡器输出
# 绘制结果
plt.subplot(2, 1, 1)
plt.plot(t, x)
plt.title('FM Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.subplot(2, 1, 2)
plt.plot(t, y)
plt.title('Demodulated Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.tight_layout()
plt.show()
```
阅读全文