|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 findbo 于 2015-6-23 22:28 编辑
最近研究导航信号跟踪,下面是通过nco累加产生一个单载波,并进行跟踪,积分时间为1ms,初始误差设置得很小,可是下面的代码始终无法锁定信号。而将锁相环鉴相器改为锁频环鉴频器就能锁定。不明白数据激励不对还是环路滤波器的问题,请指教。
for loop_cnt = 1:len
% sig_nco = nco_max/len*(loop_cnt-1) - nco_max/2;
for samp_cnt = 1:ms_samp
sig(samp_cnt) = sin(2*pi*sig_nco/nco_max);
sig_nco = sig_nco + sig_fcw;
if sig_nco >= nco_max
sig_nco = sig_nco - nco_max;
end
loc_sin(samp_cnt) = sin(2*pi*loc_nco/nco_max);
loc_cos(samp_cnt) = cos(2*pi*loc_nco/nco_max);
loc_nco = loc_nco + loc_fcw;
if loc_nco >= nco_max
loc_nco = loc_nco - nco_max;
end
end
integral_i = sum(loc_sin.*sig);
integral_q = sum(loc_cos.*sig);
% pll_err(loop_cnt) = atan(integral_q/integral_i)/pi*180/360/0.001;
% pll_s1 = pll_err(loop_cnt)*0.001^2*w^2 + pll_s1;
% pll_s2(loop_cnt) = pll_err(loop_cnt)*0.001*1.414*w + pll_s1 ;
pll_err(loop_cnt) = atan(integral_q/integral_i);
pll_s1 = 0.001*pll_err(loop_cnt)*w^3 + pll_s1;
pll_s2 = 0.001*(pll_err(loop_cnt)*1.1*w^2 + pll_s1) + pll_s2;
pll_s3 = pll_err(loop_cnt)*2.4*w + pll_s2;
loc_fcw_adj(loop_cnt) = pll_s3*nco_gain;
loc_fcw = loc_fcw + loc_fcw_adj(loop_cnt);
end
loc_fcw_adj图如下:
|
|