基于FFT的P码直接捕获算法及其FPGA实现
2014-12-18赵金磊
赵金磊
(西安电子科技大学电子工程学院,陕西西安 710071)
20世纪70年代,美国国防部组织创建GPS导航系统(Navigation Satellite Timing and Ranging/Global Position System,授时与测距导航系统)。目前,GPS导航定位技术已被应用于美国军队的自动化系统(C4ISR)中,此系统集通信、指挥、情报、控制、杀伤、监视和侦察于一体,广泛应用于美国陆海空三军的舰船、战车、飞机和士兵的导航与定位、调遣和综合管理中,其为美军的作战系统提供时间坐标基准同步以及空间坐标基准同步,并对整个作战指挥系统的运转起着关键的协调作用[1]。
GPS是一个直接序列扩频系统(DSSS)。直序列扩频技术是扩频通信中应用较为广泛的一种。GPS系统中常采用两种测距码:C/A码(Coarse/Acquisition Code)和P码(Precision Code),分别提供标准定位服务SPS(Standard Positioning Service)和精密定位服务PPS(Precise Positioning Service)[2]。
P码(周期约为7天,码速率为10.23 Mbit·s-1)具有周期长、码速率高等特点,一般不易于直接捕获,因此相应的测距误差较小,定位精度高,具有更好的抗干扰和抗欺骗性能。随着目前实际应用的需求即测距精度要求的提高,应用P码进行测距成为目前研究的热点。同时P码直接捕获方法的研究也为未来战场复杂环境下GPS定位提供了解决方案。故美国国防部规定P码为军用码。美国出于对国家安全的保障和军事强国的维护,在有关GPS高动态方面的技术对我国实施封锁政策,但为了给我国的卫星导航定位系统(北斗)积累经验,则必须研究和掌握这一领域的技术。
传统的P码捕获是利用C/A码来进行辅助捕获,但C/A码的码长较短、码速率低、易受敌方的干扰和欺骗。而在干扰和欺骗的战争环境下,想借助C/A码的辅助来进行P码捕获难以实现。因此,对P码直接捕获的方法研究显得尤为重要。
伪随机码的捕获一般通过能量检测和相关运算来完成,成功捕获伪随机码首先要获得准确的输入扩频信号载波,因此整个信号的搜索捕获过程是一个载波频率域和伪随机码相位搜索捕获的二维搜索捕获过程[3],此二维过程使需要检测的不确定空间和捕获时间成倍增加,而将时域、频域二维串行扫描变成并行扫描的方法虽减少了时间复杂度,但却提高了硬件的难度。在高动态的条件下,由于GPS接收机与卫星之间相对运动而产生的多普勒频移可以长达几十甚至几百kHz,此多普勒频移会引起相关能量的损失,而导致相关峰的急剧下降,从而降低扩频码的捕获性能。对于P码的捕获,由于P码的码周期较长,若采用传统的相关检测捕获方法,整个捕获过程较为困难,捕获时间过长[4-6],因此需改变思路提出新的捕获方案。近年来,随着数字器件性能的大幅提高以及高精度、高稳定时钟技术的发展,对P码进行直接捕获已成为可能。
1 基于FFT的P码直接捕获算法
(1)信号的互相关。信号x和信号h的互相关函数定义为
L点的互相关函数表示为
(2)信号的线性卷积。对于线性时不变系统,线性卷积定义为
(3)相关函数与线性卷积的关系为
(4)循环卷积。L点循环卷积Rxh(k)是线性卷积rxh(k)以为周期的延拓序列主值序列。循环卷积定义为
信号的相关运算可通过信号的循环卷积实现,而信号的循环卷积运算则可通过信号的频域处理进行快速高效的实现。由式(1)~式(2)、式(4)~式(5)得出信号相关与其FFT关系为
式(6)为基于FFT直接捕获P码算法[7]提供了理论基础。
由于截短的P码周期仍较长,因此无法将整个P码周期内的本地P码来与接收信号进行循环相关取相关结果。因此,可将P码[8]的捕获过程看作非周期的PN码捕获问题,但两路非周期的PN码相关过程并不等于循环卷积,因此无法直接采用常规的FFT算法求实现。
为了能利用FFT算法实现相关过程,将P码进行分段截取,把每小段的P码作为一个周期序列来处理。但和周期序列相比,利用FFT实现无周期的P码相关,存在以下3种情况:
(1)若输入的P码序列和本地的P码序列完全相关,此时可将P码序列当作周期序列来处理。
(2)不论怎样对本地的P码序列进行循环移位,输入的P码序列和本地的P码序列均无相关部分,这说明本地P码序列和输入P码序列的时间维偏移过大,此时需对本地的P码序列进行调整。这种情况,也可将P码的片段当作周期序列处理,原因是算法对结果不会造成影响。
(3)通过对本地P码序列的循环移位,输入的P码序列和本地的P码序列部分相关。当此部分相关的程度高时,可视作情况(1)处理。当此部分相关的程度低时,可视作情况(2)处理。因此,情况(3)仍可当作周期序列来处理。
2 基于FFT的P码直接捕获算法的原理
对捕获到的GPSP信号伪码序列做补零处理构成新序列,同样对本地P码[9]信号做补零处理构成新序列,然后将两个新序列做相关。并对相关处理的结果进行峰值检测处理以获得峰值检测序列,接着对该峰值检测序列进行门限判决,当出现高于判决门限的相关峰值时,就可判断出接收信号中码元所在的具体位置,即信号捕获成功。否则,捕获失败,使偏移本地码序列进行新的检测直到捕获成功为止。基于FFT直接捕获P码算法原理如图1所示。
图1 基于FFT的P码直接捕获原理图
由于P码的码速率较高,即使本地接收机的时钟和GPS卫星上的时钟相差1 s,本地P码也将与卫星产生的P码相差107个码片,对如此长的信号直接采用基于FFT法的P码捕获算法来实现P码的直接捕获需较长的时间,因此仍需探索新的算法。
3 基于FFT的P码直接捕获算法仿真
综上所述,由于P码序列较长,要全部搜索较为困难,因此在直接捕获P码前,需先通过本地时钟信息获取GPS一周的相对时间t。要求P码发生器能将各移位寄存器和计数器调整到GPS一周的相对时间t时刻附近的某一时刻,即产生接收到P码附近时刻的本地复现码,在这一小段的P码范围内进行搜索。
在Windows的平台下,使用Matlab仿真工具按照基于FFT的P码直接捕获算法流程如图1所示,进行仿真实验。仿真中,设捕获到的信号长度为0.05 ms,本地P码信号长度为1 s,在这1 s的数据中对捕获信号进行搜索,搜索时向后滑动的步长为0.05 ms,得到如图2所示的仿真结果。从图中可读出,在0.2 s处出现峰值,此时捕获的信号与本地伪码对齐,即P码捕获成功。
图2 FFT法直接捕获P码结果
4 FFT法直接捕获P码的FPGA实现及仿真
采用基于FFT法的P码直接捕获算法的硬件实现电路主要由模拟接收P码信号模块、本地P码信号生成模块、FFT处理模块、IFFT处理模块、共轭乘法器模块、延迟补偿模块组成,其顶层电路如图3所示。
图3 FFT法直接捕获P码的FPGA顶层实现电路图
FPGA实现基于FFT法直接捕获P码的功能仿真结果如图4所示,该仿真的输入信号参数值与Matlab仿真中相同。同时仿真在出现峰值处P码捕获成功,其与在Matlab中的仿真结果一致。
图4 基于FFT法直接捕获P码的硬件仿真结果
5 结束语
在复杂电磁波环境下,GPS P码直接捕获技术的研究对目前导航战具有重要意义。本文研究基于FFT的P码直接捕获方法,运用Matlab仿真了所介绍的内容,采用Cyclone III EP3C120F80C8芯片完成了基于FFT的P码直接捕获算法的硬件实现。同时,探索新的P码直接捕获算法以及对算法的实际硬件实现仍将是今后工作的主要方向。
[1]ELLIOTTD K,CHRISTOPHERJH.GPS原理与应用[M].2版.北京:电子工业出版社,2008.
[2]孙铭芳.直扩信号检测和PN码参数估计的研究[D].哈尔滨:哈尔滨工业大学,2006.
[3]邓洪军.高动态导航接收机P码捕获及载波跟踪技术研究[D].成都:电子科技大学,2008.
[4]WOLFERTR,CHENS,KOHLIS,et al.Rapid direct P(Y)-code acquisition in a hostile environment GPS[D].Nashville:the Institute of Navigation,1998.
[5]CANDIDA L S,SASCHA M S,GORDON J R P.A serialparallel FFT correlator for PN code acquisition from LEOsatellites[C].Sun City,South Africa:ISSSTA,1998.
[6]SCOTT L,JOVANCEVIC A,GANGULY S.Rapid signal acquisition techniques for civilian and military user equipments using DSP based FFT processing ION GPS 2001[C].Salt Lake City,UT:ION,2001:2418 -2427.
[7]胡娟.一种基于并行FFT的PN码快速捕获算法实现[J].电子科技,2011,24(7):109 -111,116.
[8]曹进,李荣冰,徐昭,等.GPS P码并行矩阵式直接捕获方法[J].航空计算技术,2012,42(5):111 -114.
[9]王永庆,吴嗣亮.一种新的P码直接捕获算法[J].北京理工大学学报,2010,30(11):1345-1349.