一种兼容的GNSS星历实时解析方法
2016-09-22张建伟
张建伟,谢 松
(1.卫星导航系统与装备技术国家重点实验室,河北 石家庄 050081;2.中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
一种兼容的GNSS星历实时解析方法
张建伟1,2,谢松1,2
(1.卫星导航系统与装备技术国家重点实验室,河北 石家庄 050081;2.中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
全球卫星导航系统(GNSS)发展对用户设备的信息兼容性提出了更高的要求,同时对设备存储空间以及运算能力的需求增加,而受成本和功耗等因素影响,处理资源不可能无限制地扩充。针对该问题,在GNSS设备信息层设计了一种兼容的卫星星历解析方法,并在微型嵌入式平台上进行了验证。该方法能够提高嵌入式系统的RAM资源利用率,节省CPU的运算资源。便于GNSS接收机程序开发与后续升级,满足兼容性要求。
GNSS;星历解析;数据结构;位段;嵌入式
0 引言
当前,GNSS现代化进程逐渐深入,导航卫星数目不断增加,信号类型也在逐渐完善。兼容性和互操作性成为GNSS系统现代化的主要考虑因素,它可以使GNSS接收机设计简化,能够让用户受益于接收机的低成本和高性能[1]。由于不同GNSS之间有着相近的信号结构层次和相同的定位原理,所以GNSS接收机在结构与设计上不存在很大差异[2]。由此,GNSS接收机设计的兼容性成为评估产品优劣的重要标准。这要求开发者能够利用有限资源,实现更多的跟踪卫星数以及更强的信息处理能力。本文基于兼容性思想,结合GNSS接收机开发的实际经验,提出了一种新的GNSS星历实时解析方法。该方法能充分利用微型嵌入式平台,以C语言为程序载体,合理利用数据结构转换,实现多通道GNSS卫星电文的快速解析并存储,为后续卫星位置解算以及接口设计提供数据源。
1 GNSS电文及解析流程
GNSS卫星信号至少包括3个层次:载波、伪码和导航电文数据码[3]。接收机经过捕获和跟踪处理,实现对载波频率的稳定估计以及对伪码的解扩,从而剥离出数据码,即GNSS卫星导航电文。
导航电文主要由同步标志、时间标志、即时轨道参数(星历)、非即时轨道参数(历书)以及校验码构成,以数据帧的格式进行播发[4]。同步标志用于接收机解析过程中数据同步,实现数据帧起始位置识别。若干数据帧信息组合拼接成完整的星历或历书信息。时间标志为用户提供周期性时间信息。GNSS导航卫星电文虽然在帧结构方面存在一定的差异,但其处理方式基本相同。
以GPS卫星导航系统导航电文为例,说明GNSS电文的特点以及解析过程。GPS导航电文民码子帧1的部分结构[4]如图1所示。
图1 GPS电文子帧1的基本结构
分析得出,GPS导航电文以字为基本单位,字内包含电文基本信息以及校验信息。子帧由10个字组合而成,若干子帧组合即构成全部的导航电文。导航电文比特流是以位段数据连续拼接的形式提供给用户。当导航电文数据码由微处理器获取时,又会将被分解到若干个CPU能够识别并操作的存储单元(字节或字)。这样位段和存储单元间就建立了某种固定的关系。电文的位段提取以及拼接就是基于这种固定关系执行的[5-6]。
针对上述单一的GPS电文解析,可采用编写针对性的解析程序的方法,通过映射执行对各存储单元的移位和比特提取,最终完成电文信息的有效输出。完整的解析方法流程如图2所示。
图2 常规解析方法流程
图2所示的方法逻辑简单、容易理解,且通过满足要求的程序设计即可提取出导航信息。该方法存在以下不足:
① 需要为所有信息建立位置关系映射,当进行多系统GNSS程序设计时,浪费较多存储资源;
② 信息关联性较小,在获取连续信息字段时,执行重复查找索引操作,浪费处理器运算资源;
③ 移位逻辑设计繁琐,处理能力取决于所编写程序的执行效率,浪费处理器运算资源;
④ 代码量与信息提取量成正比,兼容性较差。
2 兼容的电文解析方法
本文提出的方法继承了常规解析的处理流程,同时利用数据结构间的合理重构,直接定义与存储单元相匹配的信息位段逻辑[7]。相对于建立索引,新方法能够存储单元内位段的物理意义明晰,运算更为简易。
文献[8-10]分别介绍了GLONASS、GALILEO以及BDS导航电文的详细构成。分析得出,GNSS导航电文信息是以子帧或字符串为基本单位进行同步和处理的。考虑到嵌入式系统资源约束,本文提出的方法同样以子帧或字符串为单位进行处理。
新方法充分考虑了GNSS导航信号数据码的共性以及程序设计兼容性,利用C程序设计中位段以及共用体概念,实现多系统卫星电文信息的存储并转换。位段声明和共用体声明规则参照文献[5]。
微处理器作为芯片或其他基带设备的信息受体,首先要为电文接收开辟一定的存储空间。因涉及多系统信息类型,需要定义子帧或字符串的最大占用资源空间为接收缓冲。假设嵌入式系统的存储单位为1个字(32 bit),GPS/BDS/GALILEO子帧占用10个字存储空间,GLONASS仅占用3个字存储空间,同样可将其分配在10个字的存储空间内,以便于程序设计。
首先设计原始电文的接收缓冲BitNavMsg,定义如下:
typedef union
{
GPSSubFrame1Type gf1;
……
GPSSubFrame5Type gf5;
BDSubFrame1Type bf1;
……
BDSubFrame5Type bf5;
GLSString1Typegs1;
……
GLSString15Type gs15;
GALFnavFrame1Type ga1;
……
GALFnavFrame1Type ga12;
unsigned int data[10];
}BitNavMsg;
可以看出,BitNavMsg实体对象为一个共用体变量。内部各成员变量占用同一存储空间。在明确输入的条件下,data字段内数据,可被转义成GPS的子帧,也可理解为BDS子帧,从而保证信息层兼容。假设BitNavMsg中的GNSS子帧和字符串的变量占用空间都不大于10个字,则实体对象最大占用空间是10个字,即data域的大小。
继续定义公用体内出现的GNSS结构体变量,限于篇幅,本文仅列出GPSSubFrame1Type的相关定义,其他变量采用类似的设计方式。
typedef struct
{
unsigned int Pre1:6;
unsigned int :2;
unsigned int TLM:22;
unsigned int:0;
unsigned int Pre2:6;
unsigned int :2;
unsigned int Frmnum:3;
unsigned int :2;
unsigned int TOW:17;
……
unsigned int Pre10:6;
unsigned int :2;
unsigned int a_f0:22;
} GPSSubFrame1Type;
GPSSubFrame1Type变量的字段详细含义请参照文献[4]。这里强调,子帧结构体变量的定义采用特定位数的位段域,而不是以整字节或字为单位,方便地实现了结构体与电文信息的一一映射,意义更加清晰明确。
除定义电文接收缓冲外,在保存星历时,可设计解析完整电文的结构体变量,定义所示。
typedef struct
{
BitNavMsg Frm1;
BitNavMsg Frm2;
BitNavMsg Frm3;
BitNavMsg Frm4;
BitNavMsg Frm5;
}GPSBitEphemeris;
GPSBitEphemeris结构体定义充分利用数据结构的特点,可将相应的单帧电文直接复制保存,便于后续轨道参数提取和转换。
3 应用示例
本文提出的方法可充分利用GNSS导航电文子帧或字符串信息的一些共同特点,比如GPS/GLONASS/BDS/GALILEO的子帧号或字符串串号都位于子帧或字符串的固定位段,即该位段相对于帧头位置不变。在明确卫星导航系统前提下,对子帧号或字符串号提取时可不区分接收到的信息类别。这些特性对正确解析星历起到了很重要的作用。以GPS为例,当电文解析任务开始后,需要执行的操作如下。
BitNavMsg navmsg;//对象声明
for(idx=0;idx<10;idx++)
{
nav_msg.data[idx]=*(int*)(ADDR_NAV+idx);
//ADDR_NAV为电文寄存器的基地址
}//从基带中获取GPS导航电文的子帧数据
//识别子帧号,同系统位段位置相同
switch(nav_msg.gf1.Frmnum)
{
case 1://对子帧1的处理
……x1=(nav_msg.gf1.a_f0);……
case 2://对子帧2的处理
……x2=(nav_msg.gf2.toe);……
case 3://对子帧3的处理
……x3=(nav_msg.gf3.idot);……
case 4:……//对子帧4的处理
case 5:……//对子帧5的处理
}
经过共用体变量的转义功能,可方便地将电文信息按照一定的逻辑进行处理或者按照子帧结构定义直接提取相应的信息位段,无需再编写针对性的移位操作函数。
同样,在获知系统类型和卫星号的通道信息前提下,可以方便地将程序移植至其他GNSS导航电文解析,BDS可利用nav_msg.bf1-bf5进行解析;GLONASS,则对nav_msg.gs1-gs15进行解析;而GALILEO用ga1-ga12进行解析处理,从根本上避免了繁复的移位和拼接操作,便于程序维护和状态管理。
4 性能分析
根据本文提出的解析方法,编写示例代码,通过在TMS320C2000系列DSP嵌入式平台上编译运行,分析该方法在嵌入式系统应用中的优点。示例代码经过TMS320C2000系列DSP编译后的C代码以及对应汇编语句如图3所示。
图3 微处理器的编译结果示例
分析图3汇编语句可知,嵌入式设计软件编译器能够自动识别结构体的位段定义,并充分利用EXTU以及LDBU等位操作指令,进行归并处理,指令执行简单快捷,执行效率大大提高。
而位段作为数据结构的基本组成部分,使得本文提出的方法在GNSS导航电文解析层面具有普遍性意义,即嵌入式开发平台编译器均包含相应的库函数操作,避免了开发者额外编写代码实现功能。通过与常规解析方法比较并统计程序优化量,本文提出的解析方法在运算代码量和存储空间占比均不超过常规方法的50%,从而大大节省了资源。
5 结束语
本文在分析了常规的GNSS电文解析方法基础上,提出了一种兼容性更好的电文解析方法。通过对比本文方法与常规方法的优劣,证明了本文提出的方法可操作性好,对程序代码简化、存储空间优化以及对多系统处理流程都具备很好的适应能力,便于系统扩展和升级,可直接应用于GNSS嵌入式系统的工程设计中。
[1]谢钢.全球导航卫星系统原理-GPS、GLONASS和伽利略系统[M].北京:电子工业出版社,2013.
[2]段召亮,杨文津,魏亮.一种基于软件仿真的GNSS信号性能评估技术[J].无线电工程,2014,44(10):39-42.
[3]黄智刚,王陆潇,梁宵.导航电文设计与评估技术研究综述[J].数据采集与处理,2015,30(4):747-759.
[4]The Navstar GPS Wing.IS-GPS-200,Navstar GPS Space Segment Navigation User Interfaces (Revision D) [S],2006.
[5]谭浩强.C语言程序设计(第3版)[M].北京:机械工业出版社,2009.
[6]方兴,王步云.基于Bit Fields的AIS报文解析及实现[J].舰船电子工程,2014,34(7):125-129.
[7]孙伟杰,张晓欣,毕嘉鸿.C程序代码结构审查算法的研究与实现[J].无线电通信技术,2013,39(3):89-92.
[8]Russian Space Agency.Glonass Interface Control Document(Ver 5.1)[S],2008.
[9]European GNSS (Galileo) Open Service Signal in Space Interface Control Document (Issue.1) [S],2010.
[10]中国卫星导航系统管理办公室.北斗卫星导航系统空间信号接口控制文件公开服务信号(2.0版)[S],2013.
张建伟男,(1986—),硕士,工程师。主要研究方向:GNSS接收机设计。
谢松男,(1982—),硕士,工程师。主要研究方向:GNSS接收机设计。
A Compatible Method of GNSS Ephemeris Real-time Decoding
ZHANG Jian-wei1,2,XIE Song1,2
(1.StateKeyLaboratoryofSatelliteNavigationSystemandEquipmentTechnology,ShijiazhuangHebei050081,China;2.The54thResearchInstituteofCETC,ShijiazhuangHebei050081,China)
The development of GNSS requires more compatibility for popular facilities.And more demanding requirement on memory and computing velocity has been needed for various applications.Limited by factors such as cost and power consumption,resources would never be expanded for all time.Therefore,a novel realization method is designed for GNSS ephemeris real-time decoding.And it is validated on embedded platform.The method can enhance the utilization of RAM and save the time resource of CPU in embedded system.Users can conveniently achieve the GNSS receiver program and expand interface and satisfy the compatibility of GNSS receivers.
GNSS;ephemeris decoding;data framework;bit field;union
10.3969/j.issn.1003-3106.2016.09.14
2016-05-16
国家高技术研究发展计划(“863”计划)基金资助项目(2015AA124001)。
TP391.4
A
1003-3106(2016)09-0055-04
引用格式:张建伟,谢松.一种兼容的GNSS星历实时解析方法[J].无线电工程,2016,46(9):55-58.