1、锁相环仿真基于MATLAB锁相环仿真1.锁相环的理论分析 1. 1锁相环的基本组成锁相环路是一种反馈控制电路,简称锁相环(PLL,Phase-Locked Loop )。锁相 环的特点是:利用外部输入的参考信号控制环路内部振荡信号的频率和相位。 因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于 闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相 等时,输出电压与输入电压保持固定的相位差值, 即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。锁相环通常由鉴相器(PD,Phase Detector八 环路滤波器(LF,Loop Filter )和
2、压控振荡器(VCO,Voltage Con trolled Oscillator )三部分组成,锁相环组成的原理框图如图示:UD( t )电压信号输出,该信号经低通滤 Uc( t ),对振荡器输出信号的频率实施锁相环中的鉴相器又称为相位比较器,它的作用是检测输入信号和输出信号的相 位差,并将检测出的相位差信号转换成 波器滤波后形成压控振荡器的控制电压 控制。1. 2锁相环的工作原理 1.2.1鉴相器X/1锁相环中的鉴相器(PD通常由模拟乘法器组成,利用模拟乘法器组成的鉴相器 电路如图示:鉴相器的工作原理是:设外界输入的信号电压和压控振荡式中的CD 0为压控振荡器在输入控制电压为零或为直流电压时
3、的振荡角频率,称 为电路的固有振荡角频率。则模拟乘法器的输出电压 UD为:喘沪劭1 (f沟0 (f)=疋 % 血叫+耳(胡C xqV +恥)亠一疋耳 J 阿呼+耳W -叫+吒1.2.2低通滤波器 低通滤波器(LF)的将上式中的和频分量滤掉,剩下的差频分量作为压控振荡器 的输入控制电压Uc(t )。即Uc(t )为:心)二-耳S Einf呼十耳-琢十址=% 泗(吗-珂+包()-曲,()式中的3 i为输入信号的瞬时振荡角频率,0 i ( t )和0 O ( t )分别为输入信号 和输出信号的瞬时位相,根据相量的关系可得瞬时频率和瞬时位相的关系为:at贝U,瞬时相位差0 d为E =-讪+确)召0对两
4、边求微分,可得频差的关系式为肝改 -田D址型仇 -恥)1 = + 上式等于零,说明锁相环进入相位锁定的状态,此时输出和输入信号的频率和相 位保持恒定不变的状态,Uc( t )为恒定值。当上式不等于零时,说明锁相环的 相位还未锁定,输入信号和输出信号的频率不等, Uc( t )随时间而变。1.2.3压控振荡器压控振荡器(VCO的压控特性如图示上式说明当uc ( t )随时间而变时,压控振荡器(VCO的振荡频率3 u也随时间 而变,锁相环进入“频率牵引”,自动跟踪捕捉输入信号的频率,使锁相环进入 锁定的状态,并保持 3 0=3 i的状态不变。2.信号流程图 锁相环的原理框图如下:其工作过程如下:(
5、1)(2)(3)(4)(5)(6)T ; lT 阴 hjT压控振荡器的输出Uo经过采集并分频; 输出和基准信号同时输入鉴相器; 鉴相器通过比较上述两个信号的频率差,然后输出一个直流脉冲电压 Ud ;Ud进入到滤波器里面,滤除高频成分后得到信息 Ue ;Ue进入到压控震荡器VCO里面,控制频率随输入电压线性地变化; 这样经过一个很短的时间,VCO勺输出就会稳定于某一期望值。3二阶环仿真源程序代码及仿真结果% second integrator - step 1% second integrator - step 2 % second integrator output % build dy/dt
6、 vector % build y(t) vector % end of simulation loop% plot phase plane% label x axis% label y zxisw1c=yd+w2c; w2c=yd+w1c; y=w1c/(2*fs); ydv(1,i) = yd; yv(1,i) = y;endplot(yv,ydv) xlabel(y(t) ylabel(dy/dt) % End of script file. % File: pllpost.m % kk = 0; while kk = 0 k = menu(Phase Lock Loop Postpro
7、cessor,.Input Frequency and VCO Frequency,. Input Phase and VCO Phase,.Frequency Error,Phase Error,Phase Plane Plot,. Phase Plane and Time Domain Plots,Exit Program); if k = 1plot(t,fin,k,t,fvco,k) title(Input Frequency and VCO Freqeuncy) xlabel(Time - Seconds);ylabel(Frequency - Hertz);pause elseif
8、 k =2pvco=phin-phierror;plot(t,phin,t,pvco) title(Input Phase and VCO Phase) xlabel(Time - Seconds);ylabel(Phase - Radians);pause elseif k = 3plot(t,freqerror);title(Frequency Error) xlabel(Time - Seconds);ylabel(Frequency Error - Hertz);pause elseif k = 4plot(t,phierror);title(Phase Error) xlabel(T
9、ime - Seconds);ylabel(Phase Error - Radians);pause elseif k = 5 ppplot elseif k = 6subplot(211);phierrn = phierror/pi; plot(phierrn,freqerror,k);grid; title(Phase Plane Plot);xlabel(Phase Error /Pi); ylabel(Frequency Error - Hertz);subplot(212) plot(t,fin,k,t,fvco,k);grid title(Input Frequency and V
10、CO Freqeuncy) xlabel(Time - Seconds);ylabel(Frequency - Hertz);subplot(111) elseif k = 7% End of script file.% be safe% insert blank linekk = 1; end end % File: pllpre.m % clear all disp( ) fdel = input(Enter the size of the frequency step in Hertz ); fn = input(Enter the loop natural frequency in H
11、ertz ); lambda = input(Enter lambda, the relative pole offset ); disp( ) disp(Accept default values:) disp( zeta = 1/sqrt(2) = 0.707,) disp( fs = 200*fn, and) disp( tstop = 1) dtype = input(Enter y for yes or n for no ,s); if dtype = yzeta = 1/sqrt(2); fs = 200*fn; tstop = 1;% number of simulation p
12、oints % default time vector % set nsettle time as 0.1*npts % set tsettleelse zeta = input(Enter zeta, the loop damping factor ); fs = input(Enter the sampling frequency in Hertz ); tstop = input(Enter tstop, the simulation runtime ); end npts = fs*tstop+1; t = (0:(npts-1)/fs; nsettle = fix(npts/10);
13、 tsettle = nsettle/fs;% The next two lines establish the loop input frequency and phase % deviations.fin = zeros(1,nsettle),fdel*ones(1,npts-nsettle); phin = zeros(1,nsettle),2*pi*fdel*t(1:(npts-nsettle); disp( ) % insert blank line% end of script% File: pll2sin.mw2b=0; w2c=0; s5=0; phivco=0; %initi
14、alizetwopi=2*pi; % define 2*pitwofs=2*fs; % define 2*fs% set filter parameter% define constants % initialize vector% initialize vectorG=2*pi*fn*(zeta+sqrt(zeta*zeta-lambda); % set loop gain a=2*pi*fn/(zeta+sqrt(zeta*zeta-lambda); a1=a*(1-lambda); a2 = a*lambda;phierror = zeros(1,npts); fvco=zeros(1,
15、npts);% beginning of simulation loopend% build frequency error vector% end of simulation loop freqerror=fin-fvco; % End of script file. function = pplane(x,y,nsettle) % Plots the phase plane with phase in the range (-pi,pi) ln = length(x); maxfreq = max(y); minfreq = min(y);% Old figure discarded% E
16、stablish scale% Collect info for new figclose axis(-1 1 1.1*minfreq 1.1*maxfreq); hold on j = nsettle; while j lni = 1; while x(j) pi & j inr| Tim riomin PlnliExit Phase Plane MenuE il RrngrrtmG=30 时的仿真图形:Accept the tentative values:输入环路增益为the first loop freque ncy is 5 En ter y for yes or n for no
17、y En ter the loop gain 30 30En ter the samp li ng freque ncy in Hertz 1200Si H A Z Z谭器七Vi DI US mb OF Wmfl SturdiIII冋Frtqu叮门ri d冷8 h “匕山门0频率差图D $ B5 貞丿/ -脚亡FrMMM护d V2CIF:电抽_1曰3113)innpf(3nsT3 ? 24 5 j5IfTir S就汕魄VGDHlIJDyIBDIDD30JDTfT-r -決TIEhZCH Tim SerancEzInUlQ Diun朗 刊 m H 蛊工 N匸山 &lalbaldMu芒 AUEnL
18、严 (fed m隹汀DEH占卡A #八富吕相平面图输入相位和vco相位图Fliab* Ck J相位差图3 2 1 u 订 卫 上占二3b45 5Cl Oi Ob Q.r Ob Tlrnp- SBQiPriE y En ter the loop gain 40 益为40En ter the samp li ng freque ncy in Hertz 1200En ter tsto p, the simulatio n run time 5 仿真时间为 5秒输入环路增相平面图输入频率和VCO频率图*:冲 $;、 ;T 中: J: 总八 Z :_ .DiTii甘I 厂i ; / Ek相位差图aDPtaw Flarr Flit 4,十. Xvji1 VK ; ;i oft 0( 0 忖 32 OS 0P貝診(Eiii Fl036a A z ZFtitB &1I0I01 0: 05 0# 财 06 馆Tira=场% D14 - - 署丄一二hi* i亠频率差图.rxvi til 1 3 B 4 kA/#| 淨用 aSr -Jeuu JwoFtfqiitrcj Errai输入频率和vco频率图输入相位和VCO相位图pi Fftercy mJ VCD Freqeuncf01 02 09 14 05 l.b or 00Trw SKcndtn X n
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1