锁相环仿真基于MATLABWord文档下载推荐.docx
- 文档编号:21293571
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:14
- 大小:186.05KB
锁相环仿真基于MATLABWord文档下载推荐.docx
《锁相环仿真基于MATLABWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《锁相环仿真基于MATLABWord文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
上式说明当uc(t)随时间而变时,压控振荡器(VCO)的振荡频率ωu也随时间而变,锁相环进入“频率牵引”,自动跟踪捕捉输入信号的频率,使锁相环进入锁定的状态,并保持ω0=ωi的状态不变。
2.信号流程图
锁相环的原理框图如下:
其工作过程如下:
(1)压控振荡器的输出Uo经过采集并分频;
(2)输出和基准信号同时输入鉴相器;
(3)鉴相器通过比较上述两个信号的频率差,然后输出一个直流脉冲电压Ud;
(4)Ud进入到滤波器里面,滤除高频成分后得到信息Ue;
(5)Ue进入到压控震荡器VCO里面,控制频率随输入电压线性地变化;
(6)这样经过一个很短的时间,VCO的输出就会稳定于某一期望值。
3.二阶环仿真源程序代码及仿真结果
3.1程序代码:
%File:
c6_nltvde.m
w2b=0;
w2c=0;
%initializeintegrators
yd=0;
y=0;
%initializedifferentialequation
tfinal=50;
%simulationtime
fs=100;
%samplingfrequency
delt=1/fs;
%samplingperiod
npts=1+fs*tfinal;
%numberofsamplessimulated
ydv=zeros(1,npts);
%vectorofdy/dtsamples
yv=zeros(1,npts);
%vectorofy(t)samples
%
%beginningofsimulationloop
fori=1:
npts
t=(i-1)*delt;
%time
ift<
20
ydd=4*exp(-t/2)-3*yd*abs(y)-9*y;
%defort<
else
ydd=4*exp(-t/2)-3*yd-9*y;
%defort>
=20
end
w1b=ydd+w2b;
%firstintegrator-step1
w2b=ydd+w1b;
%firstintegrator-step2
yd=w1b/(2*fs);
%firstintegratoroutput
w1c=yd+w2c;
%secondintegrator-step1
w2c=yd+w1c;
%secondintegrator-step2
y=w1c/(2*fs);
%secondintegratoroutput
ydv(1,i)=yd;
%builddy/dtvector
yv(1,i)=y;
%buildy(t)vector
end%endofsimulationloop
plot(yv,ydv)%plotphaseplane
xlabel('
y(t)'
)%labelxaxis
ylabel('
dy/dt'
)%labelyzxis
%Endofscriptfile.
pllpost.m
kk=0;
whilekk==0
k=menu('
PhaseLockLoopPostprocessor'
...
'
InputFrequencyandVCOFrequency'
InputPhaseandVCOPhase'
FrequencyError'
'
PhaseError'
PhasePlanePlot'
PhasePlaneandTimeDomainPlots'
ExitProgram'
);
ifk==1
plot(t,fin,'
k'
t,fvco,'
)
title('
InputFrequencyandVCOFreqeuncy'
xlabel('
Time-Seconds'
Frequency-Hertz'
pause
elseifk==2
pvco=phin-phierror;
plot(t,phin,t,pvco)
Phase-Radians'
elseifk==3
plot(t,freqerror);
title('
FrequencyError-Hertz'
elseifk==4
plot(t,phierror);
PhaseError-Radians'
elseifk==5
ppplot
elseifk==6
subplot(211);
phierrn=phierror/pi;
plot(phierrn,freqerror,'
grid;
PhaseError/Pi'
ylabel('
subplot(212)
grid
subplot(111)
elseifk==7
kk=1;
endend%Endofscriptfile.
pllpre.m
clearall%besafe
disp('
)%insertblankline
fdel=input('
EnterthesizeofthefrequencystepinHertz>
fn=input('
EntertheloopnaturalfrequencyinHertz>
lambda=input('
Enterlambda,therelativepoleoffset>
Acceptdefaultvalues:
'
zeta=1/sqrt
(2)=0.707,'
fs=200*fn,and'
tstop=1'
dtype=input('
Enteryforyesornforno>
s'
ifdtype=='
y'
zeta=1/sqrt
(2);
fs=200*fn;
tstop=1;
else
zeta=input('
Enterzeta,theloopdampingfactor>
fs=input('
EnterthesamplingfrequencyinHertz>
tstop=input('
Entertstop,thesimulationruntime>
end%
npts=fs*tstop+1;
%numberofsimulationpoints
t=(0:
(npts-1))/fs;
%defaulttimevector
nsettle=fix(npts/10);
%setnsettletimeas0.1*npts
tsettle=nsettle/fs;
%settsettle
%Thenexttwolinesestablishtheloopinputfrequencyandphase
%deviations.
fin=[zeros(1,nsettle),fdel*ones(1,npts-nsettle)];
phin=[zeros(1,nsettle),2*pi*fdel*t(1:
(npts-nsettle))];
)%insertblankline
%endofscriptfilepllpre.m
pll2sin.m
s5=0;
phivco=0;
%initialize
twopi=2*pi;
%define2*pi
twofs=2*fs;
%define2*fs
G=2*pi*fn*(zeta+sqrt(zeta*zeta-lambda));
%setloopgain
a=2*pi*fn/(zeta+sqrt(zeta*zeta-lambda));
%setfilterparameter
a1=a*(1-lambda);
a2=a*lambda;
%defineconstants
phierror=zeros(1,npts);
%initializevector
fvco=zeros(1,npts);
%initializevector
s1=phin(i)-phivco;
%phaseerror
s2=sin(s1);
%sinusoidalphasedetector
s3=G*s2;
s4=a1*s3;
s4a=s4-a2*s5;
%loopfilterintegratorinput
w1b=s4a+w2b;
%filterintegrator(step1)
w2b=s4a+w1b;
%filterintegrator(step2)
s5=w1b/twofs;
%generatefiteroutput
s6=s3+s5;
%VCOintegratorinput
w1c=s6+w2c;
%VCOintegrator(step1)
w2c=s6+w1c;
%VCOintegrator(step2)
phivco=w1c/twofs;
%generateVCOoutput
phierror(i)=s1;
%buildphaseerrorvector
fvco(i)=s6/twopi;
%buildVCOinputvector
end
%endofsimulationloop
freqerror=fin-fvco;
%buildfrequencyerrorvector
function[]=pplane(x,y,nsettle)
%Plotsthephaseplanewithphaseintherange(-pi,pi)
ln=length(x);
maxfreq=max(y);
minfreq=min(y);
close%Oldfigurediscarded
axis([-111.1*minfreq1.1*maxfreq]);
%Establishscale
holdon%Collectinfofornewfig
j=nsettle;
whilej<
ln
i=1;
whilex(j)<
pi&
j<
a(i)=x(j)/pi;
b(i)=y(j);
j=j+1;
i=i+1;
plot(a,b,'
a=[];
b=[];
x=x-2*pi;
holdoff
Phase-PlanePlot'
PhaseError/Pi'
FrequencyErrorinHertz'
grid%Endofscriptfile.
ppplot.m
%ppplot.misthescriptfileforplottingphaseplaneplots.Ifthe
%phaseplaneisconstrainedto(-pi,pi)ppplot.mcallspplane.m.
kz=0;
whilekz==0
k=menu('
PhasePlaneOptions'
ExtendedPhasePlane'
PhasePlanemod(2pi)'
ExitPhasePlaneMenu'
phierrn=phierrn/pi;
grid
pause
elseifk==2
pplane(phierrn,freqerror,nsettle+1)
kz=1;
end
end%Endofscriptfile.
3.2仿真结果:
G=30时的仿真图形:
Acceptthetentativevalues:
thefirstloopfrequencyis5
y
Entertheloopgain>
30输入环路增益为30
1200
5仿真时间为5秒
相平面图输入频率和VCO频率图
输入相位和VCO相位图频率差图
相位差图
G=40时的仿真图形:
40输入环路增益为40
相位差图频率差图
输入频率和VCO频率图输入相位和VCO相位图
THANKS!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 锁相环 仿真 基于 MATLAB