葛爱学1,2,罗大成,廖守亿,刘志国
(1.清华大学 计算机系,北京 100084;2.第二炮兵装备研究院,北京100085;3第二炮兵工程学院,西安 710025)
GPS软件接收机主要基于软件无线电(Software Defined Radio,SDR)思想,即将硬件作为无线通信基本平台,而把尽可能多的无线及个人通信功能用软件来实现。GPS软件接收机可以采用通用开放性的可编程数字信号处理平台,通过加载不同的算法程序实现不同的功能,方便升级和实现新的处理算法。
GPS软件接收机自James Bao-Yen Tsui[1]于2000年出版的第一本基于软件无线电概念论述GPS接收机设计基础的著作发展至今,经历了由最初的单一通道到现在最多12通道,由L1频段C/A码信号到L1/L2双频段卫星信号,由本地数字中频信号后处理到GPS卫星信号实时处理的过程。同时,国内外诸多研究院所及公司进行了GPS软件接收机的研究工作:国外代表性的有美国的NAVSYS公司、Stanford大学、瑞典Lule科技大学、欧洲GJU(Galileo Joint Undertaking)、德国FAF Munich大学和加拿大Calgary大学等对GPS软件接收机技术进行了研究和开发;国内代表性的有北京航空航天大学、国防科技大学、浙江大学等。GPS软件接收机还方便与其它定位方式进行组合,多通道、多频段及实时化的GPS软件接收机仍是GPS接收机的发展方向。
由于美国对GPS L2载波上的P码采用了严格的保密措施,因此本文所设计的GPS软件接收机主要针对L1载波上的C/A码信号。
设卫星i的C/A码信号ACCi(t)Di(t)sin (ω1t+φ1)为所需要的信号(式中φ1=ωdt+φ1,ωd为多普勒频率,φ1为初相),而其它卫星的信号被视为干扰信号,用Sj表示,噪声和其它干扰信号用n(t)表示,这样天线接收到的混合信号S(t)为
(1)
式中,ωL1=2πfL1,fL1=1 575.42 MHz,m为接收到信号的卫星数目。
从天线接收到的GPS导航信息需要通过射频模块转换为GPS软件接收机的输入信号源,即数字中频信号。一种基于GP2010的射频前端模型如图1所示,主要由三级下变频电路、低通滤波器、A/D转换电路和自动增益控制器(AGC)组成[1,2]。
图1 射频前端模型Fig.1 Generic GPS RF front end model
数字中频信号在GPS软件接收机中的流程如图2所示。
图2 GPS软件接收机信号流程Fig.2 Signal flow graph of software GPS receiver
由图2可知,GPS软件接收机主要由捕获算法、跟踪算法、解调算法、基带信号处理和导航解算算法等组成,故GPS软件接收机的设计也围绕这几方面展开。
GPS卫星信号捕获的目的主要有两个[3]:首先是使本地产生的伪码与调制在卫星信号上的伪码粗同步,使两者的码相位差在一个码片以内,实现卫星信号的相关解扩,为码跟踪算法提供初始相位;其次是粗估计卫星信号的多普勒频率,为载波跟踪算法提供频率初始值。
GPS卫星信号的捕获主要基于信号中伪随机码的良好相关性,即只有当本地复制载波的频率和卫星信号中的某颗卫星下变频后的频率相同,且本地复制C/A的码相位和该颗卫星对应C/A码的码相位在一个码片内,本地复制信号和卫星信号的相关值才会出现峰值。因此,GPS信号的捕获过程为:调整接收机本地信号发生器的码相位和多普勒频率估计值,使信号对准某一搜索单元,若信号捕获成功,则搜索停止而码跟踪启动;若信号被否决,则码相位步进一单元,直到整个码域搜索完毕。若信号仍未捕获,则多普勒频率步进一单元,重复上述过程。
由于本地复制载波和输入GPS数字中频信号的相关计算可以转换为快速傅里叶变换(FFT)来完成[9],因此目前GPS信号捕获算法大多基于FFT,其主要优点是可大大减小运算量,缩短捕获时间。由于数据码的一个码元的长度为20 ms,因此在捕获用的GPS信号长度不大于10 ms的情况下,连续两组捕获长度的GPS信号中必然有一组不存在数据码的跳变,因此可以选取连续两组捕获长度的数据进行捕获。同时,当本地复制C/A码的码相位和卫星信号的码相位之差大于1个码片时,相关峰值将小于最大峰值的1/2,因此可以选取相关峰值和码相位相差一个码片时的相关最大值的比值作为门限值。一种基于FFT的GPS卫星信号捕获算法如图3所示。
图3 基于FFT的GPS信号快速捕获算法Fig.3 Block diagram of the fast GPS code acquisition by FFT
采用一组基于GP2015得到GPS数字中频信号为数据源,对设计捕获算法的性能进行验算。该数据源的数字中频为1.405 MHz,采样频率为5.714 285 MHz。根据经验选取门限值为3,捕获结果如图4所示。
由图4可以看出,用于捕获的该段GPS数字中频信号包含有7、8、24、28、29、31共6颗卫星的信号。
图4 卫星信号捕获结果Fig.4 Acquisiton result of GPS signal
文献[2]给出了一种通用C/A码信号跟踪算法的结构图,如图5所示。由图5可以看出,卫星信号跟踪环路主要由码跟踪环和载波跟踪环两大部分组成,其中码跟踪环常用的有延时锁定环(DLL),载波跟踪环常用的有锁频环(FLL)、锁相环(PLL)、四相鉴频器(FQFD)等。
图5 载波跟踪原理图Fig.5 Block diagram of carrier tracking algorithm
载波跟踪的通常作法为采用四相鉴频对输入信号进行牵引,保证本地复制载波的频率和输入信号的频率之差在锁频环或锁相环工作的允许误差内,在通过锁频环或锁相环完成对输入信号频率及相位的跟踪,通过码跟踪环保持对C/A码码相位的跟踪。载波跟踪环和码跟踪环同时进行,完成对输入信号的跟踪,达到解调数据码(D码)的功能。
本文采用一种基于归一化超前减滞后功率鉴相器的码跟踪环[2,4]和一种基于四相鉴频器、二阶锁频环和三阶锁相环组成的混合载波跟踪环[5]组成的GPS卫星信号跟踪算法。
采用所设计的跟踪算法对捕获算法所用的数字中频信号进行跟踪,跟踪结果的前4 s数据如图6所示。其中图6(a)为早码、即时码和迟码每毫秒相干积分后对应的模值,图6(b)为跟踪环中同相即时码对应的幅值。由图6(b)可以看出,即时码的幅值对应于数据码。
图6 卫星信号跟踪结果Fig.6 Tracking result of GPS signal
解调算法(比特同步算法)的功能是从输入数字中频信号中提取出二进制的数据码。由于数据码是频率为50 Hz的二进制码,其每个码元的长度为20 ms,因此只要找到跟踪算法中得到同相即时码每20 ms处的比特跳变沿即可完成二进制数据码的提取。具体做法为:找到处理数据中所有跳变沿的位置,在跳变沿位置中寻找3个之间相差20 ms整数倍长度的跳变沿,则认为这3个跳变沿所在的位置就是真正的比特边沿,继而所有和3个跳变沿相差20 ms长度的位置均为比特边沿,从而完成了二进制数据码的提取。
当完成了导航数据的位同步后,下一步的工作是找到导航数据中子帧1的起始点,然后根据电文的内容进行校验,检验电文的正确性,最后按照电文的固定格式解调出有用的电文信息,这个过程统称为帧同步。由模拟器中电文生成算法可以看出,每一帧电文的导言均为“10001011”。在进行位同步的过程中,首先将解调出导航数据中的“0”转换为“-1”,然后将得到的导航数据和导言“1 -1 -1 -1 1 -1 1 1”作相关,当每子帧头和导言作相关时,其相关值的绝对值应为8。由于导航数据中也可能存在和导言相同的数据位,从而出现子帧头的误判断,因此需要多判断几个子帧头。具体做法为:首先和导言作相关找到绝对值大于7.9的相关值对应的导航数据,如果该数据点是子帧头,那么该数据点加上300位(一个子帧的长度)应该也为子帧头,该数据点后的8位导航数据和导航数据作相关其绝对值也应该大于7.9;反之如果该相关值小于7.9,则说明找到的导航数据位不是子帧头。如此连续检验3个子帧头,如果满足上述大于7.9的相关值,则认为找到的导航数位为子帧头。找到子帧头后,再将导航数据中的“-1”还原为“0”。子帧头后的连续8个数据位应该为导言位,如果为“10001011”,则说明该帧电文不存在数据位翻转,反之如果为“01110100”,则说明该帧电文存在数据位翻转,需要将该帧电文中的“0”转换为“1”,“1”转换为“0”。找到子帧头后,下一步的工作是找到子帧1的起始位,则导航电文的结构可知,每帧电文的第63~68位共6位为子帧号,将该6位数据转换为十进制数据,由于子帧号最大为5,则该数据应该大于0而小于等于5,否则认为该帧电文数据存在错误。然后找子帧号为1的子帧头,则该子帧头即为子帧1的起始位。
找到子帧1的起始位后,需要对电文进行校验,判断电文的可用性。首先将判断电文的第59位、第60位是否为“0”,如果不为“0”,说明电文存在错误,该帧电文不可用;如果均为“0”,则对该帧电文进行奇偶校验,如果奇偶校验正确,说明该帧电文可用,反之不可用。子帧2~5的校验算法同子帧1的校验算法。奇偶校验算法的原理及流程详见文献[7]。
当所得到的二进制数据码通过奇偶校验算法时,余下的工作是从该数据码中提出有用的星历信息。卫星星历是描述卫星运动轨道的信息,包含一组对应于某一时刻的卫星轨道参数及其变化率。根据卫星星历可以计算出任意时刻的卫星位置及速度。导航电文的基本单位是一个主帧,每个主帧的长度为1 500 bit,由5个子帧组成,每个子帧含有10个字,每个字含有30 bit电文。对C/A码接收机而言,主要用到了前3帧的星历电文。星历电文的格式及卫星位置、速度计算的公式详见文献[8]。卫星星历查看界面及卫星状态查看界面的设计分别如图8和图9所示。
图7 卫星星历数据查看界面Fig.7 Frame to show ephemeris data
图8 卫星状态查看界面Fig.8 Frame to show status of a satellite
由于GPS软件接收机处理的数字中频信号没有绝对的时间参考,唯一的时间参考是采样频率,因此采用相对的方法测量伪距。如果不考虑每颗卫星的时钟修正项,所有卫星的子帧1的起始点都是在同一时刻发射的。子帧1每30 s出现一次,而两颗卫星之间的最大时间差约为19 ms,这就说明如果两颗卫星的时间差在几十毫秒之内,那么这两个子帧必定是同一时刻发射的。由于传播距离的不同,各个子帧的起始点在处理GPS数字中频信号中的位置并不相同,而这些位置之间的时间差就代表不同卫星到接收机的距离差,称之为相对伪距。相对伪距的测量原理如图9所示。
图9 伪距测量原理Fig.9 Principle of pseudorang measurement
相对伪距的测量过程为:在跟踪算法中找到某颗卫星子帧1的起始点,并从第一子帧中读出该子帧离开卫星的时刻,记为How,然后启动C/A码计数器和D码计数器,C/A码计数器的计数范围为0~19,当处理数据的长度够一个D码的长度时,D码计数器加1,C/A码计数器归0。D码计数器的长度为一个子帧的长度,即0~300。当D码计数器至300时,表明处理完一个子帧,D码计数器归0,How值加6。进行导航解算数据点对C/A码的码相位可由跟踪算法得到。设第i颗卫星的D码计数器为n1,C/A码计数器为n2,C/A码码相位为n3,1个C/A码的最大码相位为MaxPhase,则进行导航解算数据点对应卫星信号离开第i颗卫星的GPS时为
假定输入GPS数字中频信号一共含有n颗卫星,导航解算数据点对应卫星信号离开第i颗卫星的GPS时分别为T1,T2,…,Tn,由于卫星到用户时间延迟的范围为67~86 ms,因此可以选择导航解算时刻对应的本地接收机时间为
Tlocal=70+max (T1,T2,…,Tn)
(3)
则各颗卫星的测量伪距可以表示为
(4)
由提取出的星历数据和式(2),可以求出各颗卫星在Ti时刻卫星的位置。在根据式(4),可以得到一组导航定位解算的方程:
式中,xi,yi,zi,(i=1,2,3,…,n)分别为第i颗卫星在Ti时刻的坐标,xu,yu,zu为Tlocal时刻接收机的坐标,c为光速,tu为接收机时钟与GPS系统时钟之间的偏移。根据式(5),采用最小二乘法或卡尔曼滤波法可以求出xu,yu,zu,tu。至此完成了Tlocal时刻的导航解算。
GPS软件接收机的导航信号处理和导航解算功能是在Microsoft Visual C++ 6.0软件中实现的。GPS软件接收机的软件采用面向对象的设计方法,将软件接收机的各个模块功能分别进行封装。该软件接收机主要由两个线程组成,一个线程通过定时器完成软件接收机人机交互各个界面中参数的更新,另一个线程完成GPS软件接收机的所有功能。所设计的软件接收机的主界面如图10所示。
图10 软件接收机主界面Fig.10 Main frame of GPS software receiver
在计算机中对该数字中频信号用本文的捕获、跟踪及解调算法对该数据进行了处理,再利用3.3节中提到的算法对导航数据进行解算处理,在计算出卫星位置和伪距后采用扩展卡尔曼滤波(EKF)方法进行定位解算,得到一组定位结果如图11所示。
图11 软件接收机定位结果图Fig.11 Positioning results of GPS software receiver
由定位结果可以看出,本软件接收机的定位结果稳定性较好。由测量点的实际位置和本文的定位结果相比较可知,该定位结果和实际位置基本上一致。由此可以得出结论,本软件接收机的设计是有效的。
该软件接收机的特色是采用纯软件的方法,实现了射频前端输出数字中频信号后的所有硬件功能,并且修改灵活方便。同时兼容GPS L1/L2双频段卫星信号、实时性良好的GPS软件接收机由于信号结构的限制,同时涉及到的技术难点较多,是GPS软件接收机的研究难点及重点。
参考文献:
[1] Tsui J B Y. Fundamentals of Global Positioning System Receivers: A Software Approach [M]. New York: John Wiley & Sons Inc., 2000:133-190.
[2] Kaplan E D.Understanding GPS Principles and Applications[M].Norwood:Artech House,1996:153-199.
[3] 罗大成,王仕成,曾洪贵,等.一种GPS软件接收机的设计[J].仪器仪表学报,2008,29(9):1856-1861.
LUO Da-cheng,WANG Shi-cheng,ZENG Hong-gui,et al.Design of a software GPS receiver[J].Chinese Journal of Scientific Instrument,2008,29(9):1856-1861.(in Chinese)
[4] Ping Lian. Improving Tracking Performance of PLL in High Dynamic Application [D]. Canada: the University of Calgary, 2004:35-55.
[5] 罗大成,王仕成,刘志国,等.一种基于FQFD/FLL/PLL的混合载波跟踪算法[J].航天控制, 2009,27(1):10-14.
LUO Dacheng,WANG Shi-cheng,LIU Zhi-guo,et al.A Hybrid Carrier Tracking Algorithm Based on FQFD,FLL and PLL[J].Aerospace Control,2009,27(1):10-14.(in Chinese)
[6] 王惠南.GPS导航原理与应用[M].北京:科学出版社,2003:74-89.
WANG Hui-nan.Principles and Applications of GPS Navigation [M].Beijing:Science Press,2003:74-89.(in Chinese)
[7] IRN-200C-001,ICD-GPS-200C[S].
[8] 杨俊,武奇生.GPS基本原理及其Matlab仿真[M].西安:西安电子科技大学出版社,2006:164-180.
YANG Jun,WU Qi-sheng.GPS Principles and Its Matlab Simulation[M].Xi′an:Xidian University Press,2006:164-180.(in Chinese)
[9] 张博,杨春,解楠,等.FFT快速捕获算法在GPS C/A码与P(Y)码中的应用[J].电讯技术,2008,48(12):34-38.
ZHANG Bo, YANG Chun,XIE Nan,et al.Application of Fast FFT Acquisition Algorithm in GPS C/A and P(Y)Codes [J].Telecommunication Engineering,2008,48(12):34-38.(in Chinese)