当前位置:文档之家› 北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序)

北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序)

. . 页脚 北斗卫星导航信号串行捕获算法MATLAB仿真报告

一、 原理 卫星导航信号的串行捕获算法如图1所示。 ×

×∑∫

( )2

本地PRN发生器∫( )2

本地载波发生器

GPS中频信号×

判决

检波器≥VT?

Yes 转跟踪

NO 继续搜索图1 卫星导航信号的串行捕获算法 接收机始终在本地不停地产生对应某特定卫星的本地伪码,并且接收机知道产生的伪码的相位,这个伪码按一定速率抽样后与接收的GPS中频信号相乘,然后再与同样知晓频率的本地产生的载波相乘。GPS中频信号由接收机的射频前端将接收到的高频信号下边频得到。实际产生对应相位相互正交的两个本地载波,分别称为同相载波和正交载波,信号与本地载波相乘后的信号分别成为,产生同相I支路信号和正交的Q 支路信号。 两支路信号分别经过一个码周期时间的积分后,平方相加。分成两路是因为C/A码调制和P码支路正交的支路上,假设是I支路。当然由于信号传输过程中引入了相位差,解调时的I支路不一定是调制时的I支路,Q支路也一样,二者不一定一一对应,因此为了确定是否检测到接收信号,需要同时对两支路信号进行研究。相关后的积分是为了获取所有相关数据长度的值的相加结果,平方则是为了获得信号的功率。最后将两个支路的功率相加,只有当本地伪码和本地载波的频率相位都与中频信号相同时,最后得到的功率才很大,否则结果近似为零。根据这个结论考虑到噪声的干扰,在实际设计时应该设定一个判定门限,当两路信号功率和大于设定的门限时则判定为捕获成功,转入跟踪过程,否则继续扫描. . 页脚 其它的频率或相位。 二、 MATLAB仿真过程及结果 仿真条件设置:抽样频率16MHz,中频5MHz,采样时间1ms,频率搜索步进1khz,相位搜索步进1chip,信号功率-200dBW,载噪比55dB (1) 中频信号产生 卫星导航信号采用数字nco的方式产生,如图2所示。 载波nco控制字为:carrier_nco_word=round(f_carrier*2^N/fs); 伪码nco控制字为:code_nco_word=round(f_code*2^N/fs);

32位Adder12位载波rom

模2046计数器伪码rom32位Adder

Divide by 2^20溢出时输出脉冲

carrier_nco_word

code_nco_wordfsample××+

幅度加性噪声

图 2 其中载波rom存储的是正弦信号的2^12个采样点,伪码rom存储长度为2046的卫星伪码。

这样伪码采用2psk的方式调制到射频,加性噪声很小是理想接收中频信号如图3所示。

020406080100120140160180200-1.5-1-0.500.511.5x 10-10

图3 理想中频信号 (2)噪声功率估计

实际接收机接收到的导航信号淹没在噪声中,本程序对接收到的信号进行了. . 页脚 噪声估计并进行了放大。采用滑动平均估计法估计噪声功率,滑动平均估计法原理如图4所示。

图4 噪声功率滑动平均估计法原理 迭代滤波器因子取0.8.功率估计结果是-191.48dBW。仿真中将接收中频信号放大到了signal_power_dB=-4.94dBW。 这个功率与后面的判决门限有关系。 (2) 检测门限的确定 常见的检测方法有幅度检波、平方检波和平方律检波。幅度检波器的输出为

在H0假设下,z(k) 服从瑞利分布,其概率密度函数为: 在H(1)假设下,z(k)服从莱斯分布,其概率密度函数为 式中, 为零阶修正的贝塞尔函数。 平方律检波输出为:

在H0假设下,z(k)服从自由度为 2M的 伽马分布,其概率密度函数为 在H1假设下,z(k)服从自由度为 2M的 卡方分布,其概率密度函数为

幅度检波器

NQiNnniQN12

1迭代低通

滤波器标度

因子

比较器

+

-

TV比较结果

XpsIpsQ

2210222000(/)exp[]() 02kkkkkkkZZDDZfZHI Z



0 )2exp()()2(1)/(201200kkMkMkZZZMHZf. . 页脚

当 M=1时,平方检波累积器就变成平方律检波器 ,可以计算出当归一化门限为Vt时其虚警概率为:

其中 采用恒虚警率检测,设虚警率为pfa,本仿真取0.1 ,采用平方律检波,归一化判决门限为Vt=(-2*log2(pfa))^0.5,实际判决门限为VT=Vt*signal_power (3) 判决算法 常见判决算法有单次判决、M/N判决、(M/N+1)判决和Tong判决,采用单次判决,虚警率为pfa=0.1 . 归一化检测门限为Vt=2.5776,判决门限为VT=0.8248; (5)仿真结果 搜索21个多普勒频点和40和相位点,仿真设置接收中频为4.991MHz ,相位为2,结果如图5所示。

4.994.99555.0055.01x 106010203040050100150

dopplercodephase 图中最大处的相关结果是144,其他非峰值最大的约为1.约21dB。部分相关值如下表:

11/22112220001()(/)()exp()() 022MkkkkMkZZZfZHIZ



022001(/)exp[]221exp2TTkfakkkVV

t

ZPfZHdZdZV







20tTVV. .

页脚 可以看出绝大部分数值都在门限之下,但也存在若干个在门限之上的数值,这些点可能造成虚警。 . .

页脚 附 :仿真主程序 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%´®Ðв¶»ñËã·¨·ÂÕæ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear all; clc; % f_doppe=5000; fsample=21e6; f_m=5e6; t_sim=1e-3/1; df=1/t_sim; cnt_det=1; %Åоö´ÎÊý

f_carrier=f_m-9*df; %½ÓÊÕÔØ²¨ÆµÂÊ f_code=2.046e6; %αÂëËÙÂÊ code_phase_init=2; %Ê×´ÎËÑË÷ʱ½ÓÊÕÂëÏàλ code_phase_init_cmp=code_phase_init;

f_local_init=f_m-10*df; %±¾µØÔز¨nco³õʼƵÂÊ local_code_phase=3; %%%%±¾µØÎ±ÂëÏàλ

cnt_doppler=21; cnt_phase=40;

dot_num=t_sim*fsample; %·ÂÕæÒ»¸öαÂëÖÜÆÚµÄµãÊý dBW_signal_pow=-200; dB_C_I=60; Am=10^(dBW_signal_pow/20)*2^0.5;

pre_noise_power=dBW_signal_pow-dB_C_I+(10*log10(f_carrier)); corr_result1=zeros(cnt_doppler,cnt_phase); for dect_num=1:cnt_det %Åоö´ÎÊý for num_phase=1:cnt_phase %²éÕÒÏàλµãµã for num_doppeler=1:cnt_doppler %µ¥´Î²éÕÒ¶àÆÕÀÕµã if num_doppeler==1 f_local=f_local_init; else f_local=f_local+df; end

signal_r=signal_gen(fsample,f_carrier,f_code,code_phase_init,dBW_signal_pow,dB_C_I,dot_num); %%%%%ÕâÀïÔØ²¨Ö¸ÏÂ±ßÆµºóµÄÖÐÆµ,ÊÕµ½ºó´

相关主题