基于翻转位检测的DBZP微弱GPS信号捕获算法

2017-09-08 06:53张迎新李春鹏林菡施键兰
电子技术与软件工程 2017年14期
关键词:数据位运算量分块

文/张迎新李春鹏林菡施键兰

基于翻转位检测的DBZP微弱GPS信号捕获算法

文/张迎新1李春鹏2林菡1施键兰1

微弱GPS卫星信号的捕获通常需要延长相干积分时间来提高信噪比增益,但由此也带来运算量大幅增加以及相关运算结果易受导航数据位翻转影响这两个问题。为此,本文提出了一种基于翻转位检测的DBZP捕获算法,采用DBZP方法在相关运算之前对数据进行分块处理,减少了进行FFT/IFFT的数据点数,从而大大降低运算量,同时,该算法还在相关运算之前检测出导航数据位翻转发生的大概位置,并舍弃翻转块,从而避免相关运算结果衰减。仿真结果显示,该算法能高效的捕获到信噪比低至-48dB的信号,可有效的提高GPS接收机的捕获灵敏度和捕获效率。

微弱信号捕获翻转位检测 DBZP GPS

GPS(Global Position System)是基于人造卫星,面向海、陆、空三大领域的实时、全天候、全球性导航定位系统。GPS卫星信号捕获的目的是搜索当前接收机所在位置的可见卫星,并计算可见卫星的载波频率和伪随机码(C/ A码)的相位信息,捕获是GPS接收机实现导航定位功能的第一步和关键,其性能直接影响接收机的整体定位效果。

GPS卫星信号的捕获是三维搜索的过程,即产生某颗卫星的C/A码,并假定一组载波频率值和C/A码相位值,由假定的这组值产生对应该卫星的本地信号,并将接收卫星信号与本地信号进行相关运算,由C/A码的自相关特性和互相关特性可知,若相关值大于阈值,说明假定的这组载波频率值和C/A码相位值就是实际接收信号的载波频率值和C/A码相位值,捕获成功;若相关值小于阈值,说明假定的这组值不正确,需要调整载波频率值和C/A码相位值重新产生本地信号与接收卫星信号进行相关。若遍历了所有可能的载波频率和C/A码相位依然捕获不到信号,则说明该颗卫星不可见,需采用同样的方法搜索其他卫星。

图1:接收卫星信号和本地信号分块图

图2:DBZP算法原理图

随着导航接收机在人们日常生活中的应用越来越广泛,对GPS导航定位技术也提出了更高的要求,人们迫切需要在各种复杂条件下使用GPS接收机,特别是在隧道、森林等信号微弱的条件下。正常情况下,接收机能够接收到信噪比为-20dB的卫星信号,但在信号微弱的环境下,信噪比可下降至-40dB左右,常规接收机难以捕获到信号,无法实现定位功能,因此研究针对微弱GPS信号的高灵敏度捕获算法很有必要。

传统高灵敏度GPS信号捕获多采用基于循环相关的并行码相位捕获算法,该方法通过延长相干积分时间来提高信噪比增益,对微弱信号的捕获效果良好,但由于该方法需要对大量的数据进行离散傅里叶变换,运算量很高。双块零拓展DBZP(Double Block Zero Padding)方法是一种利用离散傅里叶变换和圆周相关的关系将连续长时间数据分块进行相关运算的方法,与传统基于循环相关的并行码相位捕获算法相比,运算量大大减小。但由于导航数据位长度为20ms,且导航数据位翻转会造成相关运算结果严重衰减,引起捕获失败,为此,本文拟采用基于翻转位检测的微弱信号捕获算法检测出导航数据位翻转边缘,然后再结合DBZP算法进行捕获。

1 传统DBZP算法分析

DBZP算法可对长时间数据进行相关运算,因此能有效捕获微弱GPS卫星信号,同时,由于在相关运算之前对数据进行了分块处理,使得每次进行离散傅里叶变换的数据点数大大减少,因此可极大地降低运算量。

DBZP算法在对接收卫星信号和本地产生信号进行相关运算之前,需对接收信号和本地信号进行分块,分块方法如图1所示,取(N+1) ms接收卫星信号,每毫秒信号分成包含Ns个采样点的Nb块,共分成(N*Nb+1)块,同时取1ms本地信号,将其分成包含Ns个采样点的Nb块。这里,由于C/A码具有周期性,因此只需产生1个C/A码周期(即1ms)的本地信号即可。

本地信号的产生方法为:

式中,li(m)为本地信号,fIF为下变频后的中频信号的载波的频率,fdi表示第i个搜索多普勒频率值,m代表不同的码相位,C(m)为本地C/A码,ts为采样间隔。

假设需要搜索n个多普勒频率,则信号长度N与每毫秒信号分成的块数Nb还应满足如下关系:

DBZP算法流程可描述如下:

(1)将接收卫星信号相邻的两个子块组合成一个包含2*Ns个采样点的双块,共得到N*Nb个双块。同时,将每个本地信号子块用零元素拓展成一个包含2*Ns个采样点的双块。

(2)按照图2的方法将对应的双块进行相关运算,即:

式中,Ri,j(m)表示第i行第j列双块的相关运算结果,Si,i+1(m)表示接收卫星信号子块S(i)和S(i+1)构成的双块,Li,p(m)表示对应第i个多普勒频率的本地信号第p个子块Li(p)拓展成的双块,其中p与i和j的关系满足式(1.4),%表示取余:

(3)由于前面对本地信号子块进行了零元素拓展,因此相关运算结果Ri,j(m)中只有前面一个子块包含有用信息,舍弃后面一个子块,并将前一个子块的相关运算结果保存到矩阵Rc中,如图3所示。

(4)矩阵Rc中最大模值对应的列号即为接收卫星信号的C/A码相位,而最大模值对应的列号则标定了多普勒频率的大小。

2 改进算法

2.1 翻转位检测

传统DBZP算法用于微弱信号捕获时,往往需要对连续长时间数据进行积分运算,但若这些数据中间存在导航数据位翻转,数据位符号的变化将造成相关运算结果严重衰减,甚至捕获不到信号。为防止该情况的出现,可采用一种方法检测出导航数据位翻转的边缘,然后从该边缘位置开始,取若干组20ms的数据用于捕获。本文拟采用一种基于数据块差分相干的数据位翻转检测算法,下面对该算法进行简要介绍。

数据块差分相干,简单来说,就是将相邻两个数据块的相关运算结果进行共轭相乘,然后再进行累加。与传统的直接将数据块的相关运算结果平方累加的方法相比,数据块差分相干积分算法可有效的降低相关运算结果的平方损耗。对M块数据进行差分相干,其数学模型可表示为:

表1:本文算法与传统分块相关积分算法运算量对比

式(5)中,R(m)表示M块数据的相关运算结果,代表第n块数据的相关运算结果,表示对第(n+1)块数据的相关运算结果取复共轭。

由于导航数据位的长度为20ms,因此翻转只可能发生在间隔20ms的地方。前文提到,若对连续长时间数据进行积分运算,导航数据位的翻转将会造成相关运算结果严重衰减,因此,通过比较多组数据块的相关运算结果可粗略的检测出导航数据位翻转发生的位置。本文将20ms的数据分成4块,哪一块数据的最大相关值最小,则数据位翻转就很可能发生在该块数据中间,但由于导航数据位在20ms内也可能不发生翻转,因此,可取连续的若干组20ms数据进行检测,本文取3组,即60ms的数据,并将各组数据按照图4进行分块,计算出各块数据的相关值。

得到各块数据的相关值后按照式(6)的方法得到每块数据的相关运算结果。方便起见,用Rn代表第n块数据的相关运算结果,用代表第q组数据第p块数据的相干积分结果。

接下来比较各块数据的最大相关值,值最小的即为包含翻转位的数据块,以下称该数据块为翻转块,在之后的捕获中舍弃每组20ms数据中的翻转块。假设第i块数据为翻转块,则捕获数据从接收数据的第(4i+1)ms开始选取,即选取第N*(4i+1) ms至第N*(4i+15) ms共N块连续15ms的数据进行捕获,N为选取的以20ms为单位的数据块数,这里取N=8,即选取160ms的数据。

2.2 基于翻转位检测的DBZP算法流程

本文先采用上文所述的翻转位检测算法检测出翻转块,然后从翻转块之后重新选取8组连续15ms的接收卫星信号,采用DBZP算法进行捕获。

图3:相关运算结果矩阵

图4:翻转位检测数据分组图

本文设置fIF=1.25MHz,采样频率为5MHz,即1ms数据包含5000个采样点,相应的,码相位m的取值范围应为1~5000。多普勒频率搜索范围可设为±5kHz,多普勒搜获间隔不超过1kHz。

该算法的具体过程可描述如下:

(1)取60ms接收卫星信号,按图4所示将数据进行分组,每组数据长度为5ms,采用DBZP算法计算每组数据的相关值。为满足式(2),可设置搜索多普勒频率数n=20,多普勒搜索间隔为500 Hz,则搜索的第i个多普勒频率值为fdi=i*500-5000(i=1,2,…,20),每毫秒数据分成4块,每块包含1250个数据点,即Nb=4,Ns=1250。

(2)根据式(6)计算各块数据的相关运算结果,最大相关值最小的数据块即为翻转块。

(3)从翻转块之后取8组间隔为20ms的连续15ms接收卫星信号(舍弃每组5ms的翻转块),并对每组数据采用DBZP算法计算相关运算结果。设置搜索多普勒频率数n=30,多普勒搜索间隔为340Hz,则搜索的第i个多普勒频率值为fdi=i*340-5100(i=1,2,…,30),每毫秒数据分成2块,每块包含2500个数据点,即Nb=4,Ns=1250。

(4)将各组数据的相关运算结果进行累加得到总的相关运算结果。

(5)最大相关值所在的行号就代表了多普勒频率的大小,所在的列号就代表了C/A码相位的大小。假设最大相关值出现在第p行第q列,则搜索到的多普勒频率即为fd=p*340-5100,码相位为m=5000-q。

图5:-35dB信噪比下分块相关积分算法和本文算法的捕获效果

图6:-45dB信噪比下分块相干积分算法和本文算法的捕获效果

3 算法分析与仿真

该算法采用基于DBZP的捕获方法代替传统的基于循环相关的捕获方法,在对接收卫星信号和本地信号进行相关运算之前进行了分块处理,使得每次进行FFT/IFFT的数据点数大大减少,对于n点复数傅里叶变换,其运算量包含(n/2)log2(n)个复数乘法运算和(n) log2(n)个复数加法运算,本文算法与采用相同数据长度的传统分块相干积分算法的运算量如表1所示,从表中可以看出,采用本文算法可将运算量降低3.69倍,大大提高了程序的运行效率。

为验证本文算法的捕获效果,现在Matlab环境下对其进行仿真。仿真首先产生数字中频信号,设置码头位于第500个码片处,采样后真实码相位约为2443.79,多普勒频率设为1000Hz,信号中加入均值为0,方差为1的高斯白噪声,处理数据采用5号卫星的数据,长度为160ms。

为突出效果,用同一组数字中频信号在相同信噪比条件下对本文算法和分块相干积分算法进行对比,结果如图5所示,其中(a)为分块相关积分算法的捕获效果图,(b)为本文算法的捕获效果图,图中横轴表示码相位,纵轴为相关峰值。可以看出,在信噪比-35dB的情况下,两种算法均能轻松捕获到信号,且本文算法的捕获效果要优于半比特算法。

图6给出了信噪比为-45dB的情况下以上两种算法的捕获效果对比图,从图中可以看出在信噪比-45dB的情况下,分块相干积分算法已完全捕获不到信号了,而本文算法仍能捕获到信号。仿真证明,本文算法最多能捕获到低至-48dB的信号。

4 结论

本文提出了一种基于翻转位检测的DBZP微弱GPS卫星信号捕获算法,采用DBZP方法代替传统的基于循环相关的方法,通过将长数据分成多块进行相关运算,有效减少了进行FFT/IFFT的数据点数,从而大大降低运算量,同时,采用基于数据块差分相干积分的翻转位检测算法检测出翻转位,有效避免了数据位翻转造成的相关运算结果衰减。仿真实验效果表明,该算法可以捕获信噪比低至-48dB的信号,有效的提高了GPS软件接收机的捕获灵敏度,是一种综合性能良好的算法。

[1]焦瑞祥,茅旭初.基于DBZP方法的微弱GPS信号快速捕获[J].电子学报,2008,36(12):2285-2288.

[2]李源明,李晶,张朋等.应用延迟累加的微弱GPS信号捕获算法[J].测绘学报,2016,45(01):44-49.

[3]裘勋,卢艳娥,庞春雷.改进的GPS弱信号差分捕获方法研究[J].现代防御技术,2011,39(06):126-130

[4]黎山,易清明,陈庆等.适用于GPS软件接收机的弱信号捕获方法[J].计算机应用,2012,32(03):816-822.

[5]苗剑峰,周贵荣,赵媛媛.基于GPS软件接收机平台的弱信号捕获算法研究[J].现代电子技术,2012,35(17):63-65.

作者单位
1.福建农林大学东方学院计算机系 福建省福州市 350017
2.国网福建省南平市供电公司 福建省南平市 353000

张迎新(1989-),女,河南省新郑市人。硕士学位。现为福建农林大学东方学院助教。研究方向为模式识别。

李春鹏(1988-),男,山东省济南市人。硕士学位。现为国网福建省南平市供电公司中级工程师。研究方向为电力系统。

林菡(1984-),女,福建省福州市人。硕士学位。现为福建农林大学东方学院讲师。研究方向为物联网技术。

施键兰(1984-),女,福建省福州市人。大学本科学历。现为福建农林大学东方学院讲师。研究方向为算法与数据结构。

福建省中青年教师教育科研项目(JA15648)。

猜你喜欢
数据位运算量分块
A320飞机大气数据的采集和计算在排故中的应用
分块矩阵在线性代数中的应用
用平面几何知识解平面解析几何题
减少运算量的途径
一种用于FPGA的片上可配置SRAM设计
让抛物线动起来吧,为运算量“瘦身”
一种适用于FPGA系统中的变速箱电路设计
反三角分块矩阵Drazin逆新的表示
减少调度自动化设备通讯串口丢包率的措施
基于自适应中值滤波的分块压缩感知人脸识别