📄 spll.m
字号:
%software PLL
clear all;clc;close all;
fs=100;
ts=1/fs;
t=0:ts:2;
n=length(t);
bs_signal=(-1).^floor(t*2);
% figure;stairs(bs_signal)
fin=5;
vin=bs_signal.*sin(2*pi*fin.*t);
figure;plot(t,vin);grid;
floc=5;
vout=cos(2*pi*floc.*t);
zeta=0.7;
omiga=2*pi*10;%关于自然谐振频率
uf=zeros(1,n);
mix=zeros(1,n);
vd=zeros(1,n);
Thetao=zeros(1,n);
w1=0;w2=0;
for i=2:n-1
mix(i)=vin(i).*vout(i);
in=mix(i);%混频后进行低通滤波
w1=in+w2;
w2=in+w1;
out=w1/2/fs;
vd(i)=out;
uf(i)=uf(i-1)+(2*zeta/omiga+ts/2)*vd(i)-(2*zeta/omiga-ts/2)*vd(i-1);%环路滤波器
Thetao(i+1)=Thetao(i)+omiga^2*ts/2*(uf(i)+uf(i-1));%VCO积分
vout(i+1)=cos(2*pi*floc.*t(i+1)+Thetao(i+1));
end
figure;plot(t,mix,t,vd,'r:',t,uf,'g.-')
figure;plot(t,vin,t,vout,'r:');grid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -