《数字锁相环MATLAB代码》由会员分享,可在线阅读,更多相关《数字锁相环MATLAB代码(10页珍藏版)》请在金锄头文库上搜索。
1、奈奎斯特型全数字锁相环(NR-DPLL注:本文截取于通信原理课程综合设计,载波提取部分中的锁相环解调部分中的基础锁相环。MATLAB程仿真实现,想要 simulink实现的同学要失望啦。代码在本文末,抱歉未加注释。 理解本文需要的知识:信号与系统,数字信号处理,同步技术。2.7载波的同步提取提取载波信息可用锁相环进行跟踪载波或调制信息。本文采用奈奎斯特型全 数字锁相环(NR-DPLL )对接收信号进行载波同步提取,并用于相干解调。2.7.1 NR-DPLL结构介绍数字锁相环的基本组成如下图2-6数字锁相环的组成NR-DPLL是基于奈奎斯特采样鉴相器、数字环路滤波器、数字控制振荡器 的一种数字锁
2、相环。下面分别对各部分作简要介绍。2.7.2奈奎斯特采样鉴相器奈奎斯特采样鉴相器的组成框图如图 2-7所示。前這带通1变换器数字乘法滤波器器/低通厂图2-7奈奎斯特采样鉴相器的组成框图为了表述方便,设数字控制振荡器(NCO )输出的本振数字信号为%仏)=叽85細严日2仏)(2.7-1)输入信号Ui(t) =UiSin( ot 齐)(2.7-2)其中= (t) = .J ot =(t),二0 = j - -o输入信号经A/D采样后,第k个采样时刻采样量化后的数字信号为*(tk) =UjSin( ptk “(tk)(2.7-3)对输入信号进行A/D变换的采样速率由带通信号奈奎斯特采样定理确定, 但
3、为防止信号频谱混叠并保证信号相位信息的有效抽取,采样速率一般选取前置 带通滤波器的两倍带宽以上。令Ui(tQ =Ui(k),u(tk) =u(k),即u(k)和Uo (k)相乘后,经低通滤波得到的数 字误差信号Ud(k)= Ud sig k )(2.7-4)式中4(k) J(k)-以k)(2.7-5)2.7.3数字环路滤波器数字环路滤波器与模拟环路中环路滤波器的作用是一样的,都是为了抑制高频 分量及噪声,且滤波器的参数直接影响环路的性能。 在实际应用中一阶数字环路 滤波器的实现形式如图2-8所示。其Z域传递函数:F( z)=9澤(2.7-6)按照图2-8中所实现的数字滤波器,其频率特性与理想积
4、分滤波器的频率特 性一致;两种滤波器参数之间也有着一定的对应关系。对理想积分滤波器的传递函数式采用双线性变换,即令S = 2 1z:,得到Ts 1+z,F(z)2 2 f TsTs112.1*i 1 - zG2式中,Ts为采样周期,GG2(2.7-7)(2.7-8)(2.7-9)式(2.7-8)和式(2.7-9)表明了两种滤波器参数之间的对应关系,也可以说明图2-8所示的一阶数字滤波器就是模拟理想积分滤波器的数字化表示形式。二阶数字滤波器可由两个一阶数字滤波器串联得到。2.7.4数字控制振荡器(NCO)NCO采用直接数字相位综合技术(DDS),该技术主要是由时钟驱动读取三 角函数表,功能框图如
5、图2-8所示。* #Nsin 址 Qt)相位累加Uh三角函数表Th 龙 T取样时钟图2-9 基于DDS的NCO结构Ok,截取结束。接下来是编程中必须的参数计算以及思路分析。首先是参数选择,时域响应最好取E =0.707,根据经验“=10.2令NCO相位控制增益Ko=1,鉴相灵敏度Kd ,则K。二fs,环路增益K 二 Ko再由理想二阶环路中2于是,G212002 2 - Ts2i=0.1-2 =0.09752以上两个参数同时缩小相同的倍数, 捕获带也缩小相同的倍数。而扩 大时,最大到两倍,大于两倍时捕获带不再变化,只是捕获时间短一 些。环路的3Db带宽接下来是编程思想,离散信号过系统实际是系统冲
6、击响应与信号 卷积,所谓卷积就是错位相加,于是引申出一种叫做重叠保留法的计 算方法,即信号可分段计算。鉴相器输入的两个信号每次分别都仅是 一个点,相乘后进入滤波器,此处就得用到这个所谓的重叠保留法。 输入一个点输出一个点,其他点保留与下次错位相加,再输出一个点鉴相器输出的信号过环路滤波器,通过 Z域传递函数计算。最后是DDS,网上有很多相关文档,自己看看,注意输入相位 要累积,所谓驱动嘛,当然每次依然是输出一个点,这个点作为下次 鉴相器输入信号之一。仿真结果如下:上图中输入频率是27Hz,锁相环自然频率为32Hz。鉴相器误差电压环路滤波器误差电压搞懂了这些编程思想,以及 DDS后,自然谐振频率
7、,输入信号 频率自己去做调整。但注意锁相环的参数限制。到这里,NR-DPLL就完成了。在此基础上平方环,科斯塔斯环, 判决反馈环等等都很容易编程仿真实现。仿真代码:锁相环:% fun cti on uo二pll(ui,Fs)clear allclcfo=32;fi=27;% fi=le ngth(ui)*1/( n*fo);g仁0.005*2;g2=0.0975*2;n=64;t=0:1/( n*fo):0.5-1/( n*fo);ui=sin(2*pi*fi*t);% 输入信号uo=zeros(1,le ngth(ui);uo(1)=dds_sin(10,n*fo,fo,0,1);%Nco
8、输出初始信号 uo1(1)=dds_si n(10, n*fo,fo,0,1);% erro二ph(ui(1),uo(1);% 鉴相器输出sig(1)=ui(1)*uo(1);1=30;hn二 fir1(l,0.2*fo/( n*fo);temp二c on v(h n,sig(1);tempi二temp(2:e nd);erro(1)=temp(16);lpu1(1)=erro(1)*(g1+g2);Ipu2(1)=lpu1(1)*(g1+g2);m=2*pi*fo/2048*(1:le ngth(t);for i=1:le ngth(ui)-1uo(i+1)=dds_si n(10, n*f
9、o,fo,m(i)+lpu2(i)*1,1);uo1(i+1)=dds_si n(10, n*fo,fo,m(i)+lpu2(i)*1-m(14),1); sig(i+1)=ui(i+1)*uo(i+1);temp=c on v(sig(i+1),h n);temp(1:l)=temp(1:e nd-1)+temp1;temp1=temp(2:e nd);erro(i+1)=temp(16);lpu1(i+1)=g1*erro(i+1)+g2*erro(i+1)+g2*erro(i); lpu2(i+1)=g1*lpu1(i+1)+g2*lpu1(i+1)+g2*lpu1(i)+lpu2(i)
10、;end% endDDS代码function A = dds_sin(N,fs,f,phi0,Nig)% % 返回参数(传递参数)% f=8;% N=8;%频率信号字长N:表示频率信号样点的字长% fs=256;%采样频率fs:DDS内部采样频率(输出频率信号的采样频率)% phi0=0;%初始相位phi0:输出信号的初始相位% % df=1;%最小频率间隔df:DDS输出信号的最小频率间隔(频谱分辨率)%输出频率信号样点个数Nsig 输出信号频率%这么多样点表示一个周期正弦信号% Nsig=256;% % f0Nperiod=2AN; n=0:(Nperiod-1);s00llsin(2*pi*n/Npel10dx%*(2(NvAsinusroadph2*pi/NpelioaMHf_00(2NfsxMoufoor(pho/dphi)八 % Auzeros?Nsig)八 % AHASin(x)八 for 耳 NgXHmod(M0+l+(H)*Mzpel1od)八if XHHOendA(一)HASin(x)八end% Al haend% XHmod(M0+(L)*Mzpel1odx% XAHpl/fs 人 Nsigl)/fs 八% pof(XAA)%s_e(oDS Rwa一abe三 t/s)% end