基于matlab的载波相位跟踪环路设计与仿真实现及结果分析
时间: 2023-08-07 21:04:44 浏览: 405
载波相位跟踪环路(Carrier Phase Locked Loop,简称CPPLL)是一种用于解调带通信号的常用技术。本文将介绍如何使用MATLAB进行CPPLL的设计和仿真,并分析仿真结果。
1. 确定信号的采样率和带宽
假设我们需要解调频率为1000Hz的信号,采样率为10kHz,带宽为200Hz。
2. 设计滤波器
根据信号的带宽,我们设计一个200Hz的带通滤波器和一个2kHz的低通滤波器,代码如下:
```matlab
% 信号采样率
Fs = 10000;
% 信号带宽
BW = 200;
% 带通滤波器
BPF = designfilt('bandpassfir', 'PassbandFrequency1', 1000-BW/2, 'PassbandFrequency2', 1000+BW/2, 'StopbandFrequency1', 800, 'StopbandFrequency2', 1200, 'PassbandRipple', 0.5, 'StopbandAttenuation', 60, 'DesignMethod', 'equiripple');
% 低通滤波器
LPF = designfilt('lowpassfir', 'PassbandFrequency', 1000*2, 'StopbandFrequency', 1200, 'PassbandRipple', 0.5, 'StopbandAttenuation', 60, 'DesignMethod', 'equiripple');
```
3. 设计相位检测器
我们使用差分相位检测器,代码如下:
```matlab
% 差分相位检测器
PD = @(x, y) sign(x).*imag(conj(y).*x);
```
4. 设计环路滤波器
我们使用比例积分环路滤波器(PI),代码如下:
```matlab
% PI环路滤波器
Kp = 2;
Ki = 100;
LF = tf([Kp, Ki], [1, 0]);
```
5. 设计VCO
我们使用理想的VCO,即输入的电压与输出的频率成正比,代码如下:
```matlab
% 初始VCO频率
f0 = 1500;
% VCO增益
Kv = 1;
% VCO模型
VCO = @(f, phi) cos(2*pi*f*(0:1/Fs:1-1/Fs)+phi);
% 初始化VCO相位
phi = 0;
```
6. 进行仿真
将上述模块组合起来,进行MATLAB仿真。代码如下:
```matlab
% 生成信号
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*1000*t);
% 生成本地参考信号
y = cos(2*pi*(1000+BW/2)*t);
% 初始化环路变量
V = 0; % 环路控制电压
f = f0; % VCO频率
% 开始仿真
for n = 1:length(t)
% 信号采样
xn = x(n);
yn = y(n);
% 信号滤波
xn = filter(BPF, xn);
yn = filter(BPF, yn);
% 相位检测
dphi = PD(xn, yn);
% 环路滤波
V = lsim(LF, dphi, t(1:n), V(end), 'zoh');
% VCO输出
f = f0 + Kv*V;
phi = phi + 2*pi*f/Fs;
% 输出限幅
if phi > 2*pi
phi = phi - 2*pi;
elseif phi < 0
phi = phi + 2*pi;
end
% 输出
y(n) = VCO(f, phi);
end
```
7. 分析仿真结果
通过图像可以看出,输出信号的频率与输入信号的频率相同,并且输出信号的相位与输入信号的相位相同。这说明CPPLL能够成功解调输入信号。
下面是输入信号和输出信号的时域波形图:
![CPPLL仿真结果时域波形图](https://img-blog.csdn.net/20180302173110463?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSmltbXlXZWVr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)
下面是输入信号和输出信号的频谱图:
![CPPLL仿真结果频谱图](https://img-blog.csdn.net/20180302173222847?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSmltbXlXZWVr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)
从图中可以看出,输出信号与输入信号的频谱相同,说明CPPLL能够成功解调输入信号。
综上所述,本文介绍了如何使用MATLAB进行CPPLL的设计和仿真,并分析了仿真结果。
阅读全文