锁相环原理及其matlab仿真

该文章已生成可运行项目,

@锁相环及其matlab仿真

一、锁相环原理

1.问题描述

  接收机中同步解调方法依赖于载波的恢复,锁相环用于使输出信号的相位和频率与输入信号保持一致。

2.模型

  锁相环由鉴相器、控制器和振荡器三部分组成,其原理框图如下所示:
  其中,x(t)为输入信号,s(t)为振荡器输出信号,c(t)为相位输出。
在这里插入图片描述

锁相环原理框图

e(t)=x(t)∗s(t)e(t) = x(t) *s(t)e(t)=x(t)s(t)r(t)=LPF[e(t)]r(t) = LPF[e(t)]r(t)=LPF[e(t)]c(t)=kα+kβ∫dtc(t) = k\alpha + k\beta\int dtc(t)=kα+kβdt

二、matlab仿真

1.代码

%-----------------FUNC:PLL Simulation------------------
%-----------------REMARK:One Order PLL-----------------
%-----------------AUTHOR:Clemence----------------------
%-----------------DATE:2025.10.31----------------------

%---1.Clear Environment--------------------------------

clc;close all;clear all;

%---2.PLL Paras Set------------------------------------

fs = 100e3; %Sample Rate
T = 0.1;    %Sample Time
t = 0:1/fs:T-1/fs;   %Sample Vector

f_ref = 1e3; %Ref Signal Freq
f_vco = 1.1e3;  %VCO Freq
k_vco = 5e3; %VCO Gain
k_pd = 0.25; %PD Gain
alpha = 0.001; % LP Para

%---3.Init--------------------------------------------

ref_signal = sin(2*pi*f_ref*t);  %Input Signal
vco_out = zeros(1,length(t));   %VCO Output
vco_phase = zeros(1,length(t)); %VCO phase
control_voltage = zeros(1,length(t));  %Control Voltage
phase_error = zeros(1,length(t));   %Phase Error
instantaneous_freq = zeros(1,length(t)); %Instantaneous Freq

for i = 2:length(t)
    %3.1 PD error
    phase_error(i) = ref_signal(i)*vco_out(i-1)*k_pd;
    %3.2 LP output
    control_voltage(i) = (1-alpha)*control_voltage(i-1)+alpha*phase_error(i);
    %3.3 VCO Instantaneous Freq
    instantaneous_freq(i) = f_vco + k_vco*control_voltage(i);
    %3.4 Instantaneous Freq to Phase
    vco_phase(i) = vco_phase(i-1) + 2*pi*instantaneous_freq(i)/fs;
    %3.5 VCO Output
    vco_out(i) = sin(vco_phase(i));
end

%---4.plot figure----------------------
figure('position',[100,100,1200,800]);

%time signal
subplot(3,2,1)
plot(t(1:2000),ref_signal(1:2000),'b','LineWidth',1.5);
hold on;
plot(t(1:2000),vco_out(1:2000),'r--','LineWidth',1.5);
legend('ref signal','vco output');
title('signal compare');
xlabel('time(s)');
ylabel('amp');
grid on;

%phase error
subplot(3,2,2)
plot(t,phase_error);
title('phase error');
xlabel('time(s)');
ylabel('err(v)');
grid on;

%control voltage
subplot(3,2,3)
plot(t,control_voltage);
title('control_voltage');
xlabel('time(s)');
ylabel('vol(v)');

%vco instantaneous freq
subplot(3,2,4)
plot(t,instantaneous_freq,'g','LineWidth',1.5);
hold on;
yline(f_ref,'r--','LineWidth',2,'Label','goal freq');
title('vco inst freq');
xlabel('time(s)');
ylabel('freq(Hz)');
legend('vco freq','ref freq');
grid on;

%phase 
subplot(3,2,5)
plot(ref_signal(5000:5400),vco_out(5000:5400))
title('phase track');
xlabel('ref signal');
ylabel('vco output');
axis equal;
grid on;

% frequency
subplot(3,2,6)
nfft = 2^nextpow2(length(vco_out));
f = fs/2 * linspace(0,1,nfft/2+1);
y = fft(vco_out,nfft)/length(vco_out);
plot(f,2*abs(y(1:nfft/2+1)));
title('vco output freq');
grid on;

2.结果

在这里插入图片描述

PLL Simulation Result

三、总结

  从仿真结果可以看出,锁相环vco的输出频率为1000.98Hz,与参考频率的误差为0.98Hz.经过0.06s后,锁相环进入锁定状态。

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值