北斗MEO/IGSO卫星B1频点弱信号捕获方法
2018-08-23翟红英齐建中
翟红英,齐建中,宋 鹏
(北方工业大学 电子信息工程学院,北京 100144)
0 引言
随着我国自主研制的“北斗二代”卫星导航系统成功投入运营,用户设备部分即北斗卫星导航接收机的研制也蓬勃发展,其中信号捕获是接收机研制过程中至关重要的第一步。
高灵敏度捕获技术针对微弱信号进行捕获处理,方法主要包括加长相干积分时间和增加非相干累加次数。一般而言,加长相干积分时间提高信噪比的效果要好于增加非相干累加次数的效果,然而相干积分时间的加长需要相应地减小捕获搜索频率步长,增加搜索次数,大大消耗了捕获所需的时间。在实际应用中需要综合考虑捕获时间和捕获灵敏度的问题。由于传统的GPS信号中导航电文每20 ms可能产生一次极性变化[1],这种较长的间隔时间使得相干积分、非相干积分和差分相干积分等弱信号捕获技术得以有效实施[2],而北斗信号中NH码的调制使得这种极性翻转更为频繁[3],直接采用上述积分方式极有可能带来很大的能量损失,因此必须深入研究NH码调制对捕获的影响,以便采用合适的处理方式,提高弱信号环境下的北斗信号处理增益。
基于此,本文以实际应用为背景,提出并实现了一种基于FPGA+DSP的北斗MEO/IGSO卫星B1频点弱信号捕获方法。该方法首先对20位NH码采样,再对低通滤波后的数据进行去NH码运算,之后采用相干积分以获得较高的信噪比增益,采用FFT-IFFT(FFT循环相关)进行信号自相关处理[4],在此基础上,采用可变长度非相干累加进一步提高信噪比增益,在成功捕获该信号后即停止非相干累加。这样在既保证了捕获灵敏度的同时又尽量减少捕获所需时间。同时通过一定捕获控制策略,保证成功捕获时的多普勒频率接近真实多普勒频率,从而实现北斗MEO/IGSO卫星B1频点弱信号的捕获及后续处理。
1 北斗MEO/IGSO卫星B1信号模型
由于GPS信号调制的载波频率较高,一般不适合直接进行处理。因此通过下变频将接收天线收到的北斗MEO/IGSO卫星B1频点弱信号下变频为3.098 MHz的中频信号,然后对中频模拟信号进行数字量化,提供给FPGA进行捕获处理[5]。因此,本文中的信号模型指输入到FPGA的数字信号,其表达式为:
S(t)=AC(t-τ)D(t-τ)NH(t-τ)·
cos(2πfIFt+f)(t)+n(t),
(1)
式中,A为指信号功率;C(t)为C/A码;D(t)为北斗卫星的导航数据码;NH(t)为北斗信号的NH编码;fIF为信号的载波频率;φ(t)为初始相位;n(t)为均值为0的高斯白噪声。
2 信号捕获
2.1 捕获算法流程
对FPGA输入的数字信号首先要进行载波剥离,即将输入信号与本地产生的载波相乘,并保留低频成分。本地载波发生器输出同相、正交两路信号,其表达式为:
I(t)=cos(2π(fIF+Δf)t+φ0),
(2)
Q(t)=sin(2π(fIF+Δf)t+φ0),
(3)
经过相乘和低通滤波之后的结果为:
I(t)=AC(t-τ)D(t-τ)NH(t-τ)cos(φ(t)-
2πΔft-φ0),
(4)
Q(t)=AC(t-τ)D(t-τ)NH(t-τ)sin(φ(t)-
2πΔft-φ0),
(5)
上式中不包含噪声分量。
然后进行去NH码运算,对20 ms长的20位NH码一个码片采样2点,循环产生40路NH码序列,去NH码运算表达式为:
cos(φ(t)-2πΔft-φ0),
(6)
sin(φ(t)-2πΔft-φ0)。
(7)
正确去NH码之后的结果为:
I(t)=AC(t-τ)D(t-τ)cos(φ(t)-2πΔft-φ0),
(8)
Q(t)=AC(t-τ)D(t-τ)sin(φ(t)-2πΔft-φ0),
(9)
完成去NH码运算之后信号被送入捕获处理单元[6]。
信号的捕获单元采用FFT-IFFT完成伪码自相关运算。在对数字信号进行FFT循环相关之前,首先进行相干积分,即数字信号的相干累加过程[7]。在FFT之前进行相关积分可以减小资源占用率。相干累加对每1 ms的数据对应相位处进行累加,相干累加Tcohms之后便进行FFT循环相关。相干积分的表达式为:
(10)
(11)
式中,N取10 ms对应采样点数。
对自相关后的数据取模进行非相干累加,非相干累加值体现了多个时刻相关结果的平均。非相干累加最大次数可通过外部配置,合理地选取最大次数可以有效减少捕获时间[8]。非相干累加的表达式为:
(12)
式中,i,q为自相关后的结果,非相干累加次数M本文中取5。
图1 算法流程
完成非相干累加后查找相关峰,通过门限比较判断捕获是否成功。判断捕获是否成功的方法除了门限比较外还可以选取比值法,即通过比较最大值和次大值的比值来判断是否捕获成功。本文中的方法采用比值法进行判断,在比值较大时可以停止捕获,减少捕获时间;而在比值不明显时同一频点搜索次数超过40次(与产生NH码序列数相同)即停止捕获,保证了捕获灵敏度。捕获流程如图1所示。
为了配合后续信号跟踪,本文的算法在信号成功捕获某个频点后,减小步进,继续搜索附近频点,通过比较捕获的结果,取比值较大者对应的频点作为成功捕获的频点,这样就减小了与真实多普勒的频率误差,从而提高捕获精度。
2.2 NH码特性及剥离方法
由于“北斗二代”B1信号的在D1导航电文上调制的Neumann-Hoffman码导致“北斗二代”弱信号捕获有其特殊性。由于NH码二次调制的存在导致“北斗二代”B1信号的相关周期变为20 ms,即每20 ms出现一次相关峰值。
NH码Matlab仿真自相关结果如图2。
图2 NH码自相关结果
可以发现,NH码自相关最大值比其他值大87%左右,且最大值之外的结果相差不明显,可见,NH码自相关性比C/A码弱很多[9]。
利用20 ms的数据剥离NH码,即先将由中频降到基频的信号数据,依次每1 ms乘以一个NH码,然后与本地1 ms的伪随机码相关,之后将20个1 ms的相关结果直接累加得20 ms的相干积分结果,最后寻找最大值[10]。为了取得更高的相干积分幅度增益,最理想的情况是将接收信号包含的NH码与相乘的NH码完全对齐,并保持一致[11]。由于未知接收信号的码相位起始位置,也未知当前码元对应的NH码(共有20种可能),因此要估计码元起始位置的同时也要估计当前码元对应的NH码[12]。因此,需要对NH码进行不同精度的采样,寻找最优的采样精度,使得捕获峰值大且时间短,经测试,选择一个NH码片采样2点。
2.3 半比特积分算法
由于北斗MEO/IGSO卫星B1频点信号1 bit数据长20 ms[3],因此运用半比特积分算法[13],可以选取10 ms相干积分时间。这样做的好处是:由于该频点信号数据一个比特长度是20 ms,相邻2个10 ms分组一定有一个不受比特跳变影响。把每间隔一组数据进行非相干累加,共获得2组累加数据,在这2组数据中取比值较大者作为有效结果进行捕获判断[14]。半比特积分算法原理图如图3所示。
图3 半比特法原理
将数据分组标记为Yi(i=1,2,3...2n),记非相干累加结果为S0和S1,即
S0=Y1+Y3+Y5+...+Y2n-1,
(13)
S1=Y2+Y4+Y6+...+Y2n,
(14)
通过比较S0和S1结果中的数据,将比值较大者送至捕获判决器。
该方法的缺点是:每组10 ms数据在相干积分时,首先对每1 ms进行积分,然后累加成10 ms数据,算法计算量大;由于数据分成了10 ms,积分时间受到固定,当数据比特存在连0或连1时,反而限制了积分时间的增长[15]。
对半比特法存在的一些不足,提出了一种改进方法。改进后的方法采用“先累加后相关”的思想,即将10 ms数据分成连续10个1 ms数据,对这10个1 ms数据对应相加后形成1 ms累加数据,即进行半比特相干积分之后再进行一次相干积分,针对累加后的1 ms数据进行FFT循环相关,这样就大大减少了计算量[16]。
2.4 处理增益分析
提高处理增益是实现弱信号捕获的关键,它是对弱信号进行捕获处理的一个非常重要的指标[2]。
经过时间为Tcoh的相干积分后可以获得的相关积分处理增益为:
Gcoh=10·lg(Tcoh)。
(15)
经过Nnc次非相干累加后,可以获得的非相干处理增益为:
Gnc=10·lgNnc-LSQ,
(16)
式中,LSQ是由对噪声进行非相干累加引起的平方损耗。
因此,经过Tcoh的相干积分和Nnc次非相干累加后,可以获得的总处理增益为:
Gtot=Gcoh+Gnc。
(17)
3 算法测试与结果分析
算法验证采用自主研发的GNSS三系统接收机,包括GPS、GLONASS和BDS。接收机硬件FPGA使用XILINX公司的ARTIX-7系列芯片,型号为XC7A200T。该型号的FPGA芯片具有丰富的逻辑资源,能够处理的数据量大,并配备有丰富的IP核可供调用,适合用于弱信号的捕获处理。接收机实物图如图4所示。
图4 接收机实物
北斗MEO/IGSO卫星B1频点弱信号的生成采用SPIRENT公司的GSS6700 Multi-GNSS Simulator信号模拟器生成。该模拟源性能稳定,配备了相对应的控制软件,通过软件界面就可以模拟不同场景,实现对信号的配置,输出强度可调的卫星信号。信号配置界面图如图5所示。
图5 信号配置界面
调节模拟源输出低强度的北斗MEO/IGSO卫星B1频点信号让接收机进行捕获,使用ChipScope采样经过捕获后得到的不同伪码相位处的自相关结果,FPGA实际捕获效果如图6~图10所示。可以发现,去NH码后捕获到的比值更大,更容易捕获成功。
没有进行去NH码运算的结果如图6所示,此时并没有明显峰值出现,无法进行捕获判断。
图6 捕获结果(1)
经过去NH码运算,NH码一个码片采样2点,10 ms数据累加为1 ms,5次非相干累加后的结果如图7所示,此时已经有了较明显的相关峰出现,可以很容易判断捕获成功。
图7 捕获结果(2)
经过去NH码运算,NH码一个码片采样1点,10 ms数据累加为1 ms,5次非相干累加后的结果如图8所示,此时也有较明显的相关峰出现,但最大值与次大值的比值与图7相比较小,可以发现,随着NH码采样点数的增加,更容易捕获成功,但一个频点的搜索次数成倍增加,增加了捕获时间[1]。
图8 捕获结果(3)
经过去NH码运算,NH码一个码片采样2点,10 ms数据累加为2 ms,5次非相干累加后的结果如图9所示,此时也有较明显的相关峰出现,但最大值与次大值的比值与图7相比仍较小,可以发现,随着相干累加次数的增加,更容易捕获成功[1]。
图9 捕获结果(4)
经过去NH码运算,NH码一个码片采样2点,10 ms数据累加为1 ms,2次非相干累加后的结果如图10所示,可以看出此时也有较明显的相关峰出现,但最大值与次大值的比值与图7相比仍较小,可以发现,随着非相干累加次数的增加,更容易捕获成功[1]。
图10 捕获结果(5)
经过一段时间之后,接收机对所有北斗MEO/IGSO卫星B1频点信号的捕获结果如表1所示。
表1 实测结果
系统卫星号高度/(°)方位角/(°)信噪比/dB∙Hz多普勒/Hz伪距/m状态BD26*73306321 38736 038 215CPBFBD28*3521331-55438 188 056CPBFBD27*3494312 64438 250 939CPBFBD29*36271311 78838 092 071CPBFBD212*27313313 51024 420 444CPBFBD21400002 147 483 6474
4 结束语
本文以实际应用为背景,提出了一种基于FPGA+DSP实现的北斗MEO/IGSO卫星B1频点信号捕获方法。该方法经过大量实际测试,效果稳定,信号捕获灵敏度可达-142 dBm,平均一个频点捕获最长时间为4 s,实际中能够较快速地实现对北斗MEO/IGSO卫星B1频点弱信号的捕获。