@锁相环及其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.结果

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

578

被折叠的 条评论
为什么被折叠?



