张建伟,郑迎春
(卫星导航系统与装备技术国家重点实验室,河北 石家庄 050081)
GNSS快速捕获控制模块研究与设计实现
张建伟,郑迎春
(卫星导航系统与装备技术国家重点实验室,河北 石家庄 050081)
GNSS信号类型的增加以及技术要求的提升使GNSS基带处理部分各模块的控制逻辑设计更加复杂。对GNSS信号快速捕获技术的控制模块进行了研究和分析。对涉及捕获控制的启动策略优化、重捕以及P码直捕等关键路径进行综合分析,设计了一种基于数据链表的GNSS快速捕获控制单元。通过对捕获模块的接口封装和任务排序,有效地缩短了因捕获策略切换造成的时间延迟,实时地控制捕获模块完成指定任务。
GNSS;数据链表;快速捕获;捕获策略
快速捕获是GNSS接收设备的关键技术之一。捕获用时多少、搜索的载波和码相位准确度对后续信号跟踪处理产生较大影响,并最终反馈到如首次定位时间、失锁重捕时间和P码直捕时间等一系列用户关心的性能指标中来[1]。很多文献已经对快速捕获算法进行了研究和分析。文献[2-3]从基带信号处理角度对兼容型捕获和长码快速捕获算法进行分析,从捕获时间和消耗资源等方面进行优化。文献[4-5]则根据提前获知或推算得到的附加信息出发对快速捕获或快速定位进行了阐述,对快速定位延时进行了优化。综合以上研究成果得到的结论和实际接收机设计的工程经验,本文设计了一种适合于GNSS快速捕获任务的控制逻辑,通过对捕获模块的接口封装和任务排序,有效解决各种捕获策略的兼容性问题,并使策略简单明了,方便可控。
GNSS接收机捕获分为2个层面:周期性盲捕和指定卫星捕获[1]。这里,周期性盲捕既可理解为GNSS接收机通过对历书等非即时参数进行周期性计算进而捕获可能的空间可见导航卫星,也可认为是没有任何辅助信息的周期性轮询捕获[6]。指定卫星捕获是GNSS接收机中重要的设计内容[2],它贯穿于GNSS接收机的整个工作过程,如授权信号类型(P码)引导捕获与直接捕获策略控制[3]、开机时的冷/温/热启动策略的实现[4]、失锁重捕时辅助捕获信息注入以及由用户发起的信号切换[5]等。接收机工作时,周期性盲捕实现对可能的空间可见卫星的即时捕获,指定卫星捕获则保证对确知可见卫星在失锁或信号切换时的及时处理。二者相辅相承,共同实现对空间可见卫星的捕获。
GNSS接收机捕获部分的信息处理框图如图1所示。GNSS接收机捕获处理可划分为3个层次:捕获任务驱动、捕获队列控制逻辑以及进行相关运算的基带逻辑。
图1 GNSS捕获处理的信息处理
捕获任务驱动列举出GNSS接收机在工作过程中能够下发捕获命令的所有控制逻辑。包括开机启动策略中的冷/温/热启动捕获列表的处理(不同启动方式的捕获参数及信息类型存在差异[5]),快速重捕处理(信号失锁后的重新捕获、C/P码间切换和多频信号直接跟踪[7]等)以及长时间工作过程中所必需的周期性盲捕处理。在工作过程中,3种任务之间并不具有互斥性,相反必须能够通过相互切换和无缝配合来提高接收机的性能。以北斗用户机启动时P码捕获为例,说明各策略之间的相互转换关系,切换流程如图2所示,虚线箭头处表示策略间的切换。
捕获队列控制逻辑作为捕获任务驱动和捕获基带逻辑的枢纽,承担着信息收集、优先级设定以及任务队列管理的职能。在捕获基带逻辑功能和接口确定的情况下(基带芯片或自定制FPGA捕获逻辑),捕获队列控制模块设计的优劣将直接影响捕获的反应快慢以及接收机的总体性能。本文以该控制模块的设计为研究重点,提出一种适用性很强的捕获模块控制逻辑。
捕获基带逻辑一般由基带芯片内的硬件逻辑或者定制的FPGA内相关器逻辑实现。基带逻辑具备一些可用于模块控制的寄存器组,作为与捕获控制逻辑的接口,用于捕获参数配置。基带逻辑经过相关运算将捕获得到的结果反馈至相关的任务驱动,为后续卫星的跟踪处理提供初始频率和码相位。
图2 捕获策略切换流程
由图1可知,捕获控制模块在实现卫星快速捕获以及各捕获任务驱动无缝切换策略中起到至关重要的作用。这就要求必须有一个高效的数据结构在后台能够实时处理来自不同任务、不同配置参数的捕获控制逻辑,满足信号快速恢复和跟踪切换的要求。并且该数据结构动态更新的效率很大程度上决定着快速捕获的最终性能。
经过充分论证,本文认为基于双向数据链表的数据结构最适合于存储动态更新的捕获队列实现。相比于数组,链表只需移动指针即可实现对队列数据的遍历。相比于队列,链表在实现失锁重捕以及信号切换方面保留了其配置灵活的优势。而相对于单链表,双向链表在节点插入和删除处理上使程序设计更加简易。通过合理的策略和链表构造,能够实现对捕获基带逻辑实时精细化配置,从而实现对卫星自适应捕获,缩短捕获时间。
首先构造双向数据链表的节点数据类型[8]:
typede fstruct CapLinkednode{
CapLinkednode *next,prev;/*链表指针*/
int CAPmode;/*捕获任务标识*/
int PRN;/*捕获卫星ID/
int Channel;/*指定捕获通道*/
int Freq;/*指定捕获频点*/
int Code;/*码类型可与Freq合并*/
int NHcnt;/*非相干积分次数*/
int dopplermin;/*多普勒搜索下限*/
int dopplermax;/*多普勒搜索上限*/
int timebias;/*时间不确定度*/
} Capnode,*pCapnode;
其中,prev和next指针是双向链表的构成要素。CAPmode要求能够标识该捕获节点来自于哪一个任务策略。PRN标识捕获的卫星ID。Channel在捕获模式为信号类型切换时,标识重新捕获的通道。Freq标识捕获的频率信息,可设置为GPS L1/L2/L5、BDS B1/B2/B3(I/Q)以及GLONASS和GALILEO频点等。NHcnt标识捕获基带逻辑的非相干次数,通过配置可改善捕获灵敏度。dopplermin/dopplermax标识本次捕获所对应的多普勒偏移范围,包含接收机时钟频率偏移引入的误差。timebias用于标识P码捕获时的时间不确定度,通过缩小时间不确定区间实现P码的快速捕获。节点类型定义与具体基带模块选择有关。设计者需要根据具体环境进行调整。
在定义双向链表节点类型的同时定义插入节点和删除节点的函数。本文仅给出函数名称NodeAdd(pCapnode)和NodeDel(pCapnode),涉及函数具体操作,参考文献[9-10]中的链表章节。
基于上述设计思想,图3描述了与图1捕获处理对应的启动策略处理流程[3]。捕获任务处理需要注意,针对不同的启动方式或者捕获类型,对Capnode节点初始化参数的深度是不同的。以热启动为例,捕获类型标识为热启动,可使捕获控制逻辑判断哪些参数可用于辅助快速捕获;捕获卫星ID和频点信息标识了需要捕获的卫星和信号类型;非相干积分次数可参考当前捕获卫星的先验载噪比信息通过转换生成基带捕获逻辑的控制指令[5]。多普勒信息和时间偏移参数则依赖于热启动过程中的信号的稳定性和时间的准确度。上述参数在不同的启动模式下,其有效性是不同的。故在温启动过程中,涉及频率稳定性和时间稳定性的参数失去了参考价值,而非相干积分次数的确定也变成了由历书等非即时参数计算得到的仰角信息。冷启动过程可作为周期性盲捕处理,也可进行默认的捕获卫星列表初始化。
图3 开机启动捕获任务处理
对失锁重捕和信号切换的捕获处理流程如图4所示。
图4 失锁重捕/信号切换任务处理
图4中失锁重捕/信号切换链表操作的头指针定义为RecapListHead。区别于图3中的头指针,目的是使失锁重捕和信号切换的捕获驱动独立于常规捕获队列[11],这样能够在周期性盲捕与快速重捕发生时间冲突时,通过捕获控制,保证快速重捕的优先级和实时性要求[12]。图3中的捕获链表头指针在启动策略完成之后自动转换为周期性盲捕的捕获链表。
通过上述对控制模块的结构设计和双向数据链表构造可知,图1所示捕获队列事实上通过常规捕获链表和快速重捕链表二者共同实现。获取的捕获参数即从这2个链表队列中提取相应的节点数据。
本节着重对常规捕获链表和快速捕获链表在具体捕获操作时的优先级设计进行分析。一般情况下,控制模块对基带捕获逻辑的控制是通过周期性任务或者硬件中断实现。控制模块在CPU空闲时查询捕获队列中是否有需要捕获的参数。本文可将该操作抽象出来,构成一个while循环任务,以充分说明本文方法的执行过程。
GNSS接收机处理捕获队列的源程序示例如图5所示。
图5 捕获链表处理源程序
其中第1~2行首先对2个链表的头节点进行赋值,然后进入周期性捕获操作。第4~12行为常规捕获链表的处理过程,包含命令发送函数,实现对捕获基带逻辑参数化配置并返回捕获成功/失败的结果。需要注意第5行的条件,只有在重捕链表节点都为空的情况下常规捕获才会执行,否则进行重捕/信号切换操作,从而实现了链表优先级的配置。另外,第12行和第21行对每个捕获节点都设置超时处理,要求捕获次数超过阈值后,自动从链表中删除,从而保证任务的周期性逻辑和链表节点的有效管理。
将以实际嵌入式平台为例,分别对数组、队列和本文设计捕获模块在启动捕获和卫星重捕时所需时间进行比较。采用TMS320C6747处理器作为嵌入式开发平台,工作频率300 MHz。任务框架采用TI DSP/BIOS,根据需要设置GNSS任务优先级,节拍器周期为1 ms,捕获优先级适中。
以GPS 10可见卫星的捕获耗时为统计依据,基带捕获卫星所需时间约为50 ms,捕获任务周期为10 ms,周期内设定捕获16颗卫星。数组、队列和本文方法的平均时间统计结果如表1所示。
表1 GNSS捕获延时统计结果
表1中,启动捕获时,3种方法所用时间基本相同,原因是在启动捕获时,其他任务还未得到执行,系统只执行单一进程,时间的差异仅包含数据操作带来的延时。在卫星重捕时数组和队列耗时产生了明显变化,原因是盲捕和重捕卫星在数据和队列中混合,重捕卫星并不能及时进入捕获,本文方法受影响较小,充分验证了采用本文设计的模块在捕获控制的即时性。
更需强调的是,通过链表可在程序中任何地方进行节点插入和删除,能够大大减少数组操作带来的程序复杂性,同时避免队列产生的顺序性,简化程序流程,使控制模块设计更加明晰。
本文从信息处理的角度对GNSS快速捕获控制模块进行了研究和分析,并给出了基于双向数据链表的具体实现过程。从实际工程实现和程序流程设计角度说明基于双向数据链表的捕获控制模块在捕获驱动配置、捕获参数提取以及捕获状态管理等方面都具有很好的效果,能够缩短捕获策略切换引入的时间延迟,方便、实时地控制捕获模块完成指定任务,便于程序设计与系统扩展。
[1] 谢 钢.GPS原理与接收机设计[M].北京:电子工业出版社,2009:349-375.
[2] 伍蔡伦,孙一雄.GNSS兼容型快速捕获模块设计[J].无线电工程,2015,45(8):91-93.
[3] 赵 胜,刘琳琳,刘 洋,等.GNSS接收机长码快速直捕技术研究与实现[J].无线电工程,2013,43(5):13-15.
[4] 施荣华,叶 睿,董 建,等.一种导航接收机启动策略的优化方案[J].计算机技术与自动化,2013,32(2):86-90.
[5] 王西夺,孙晓峰,李春祎.一种GPS 信号的快速捕获方法[J].无线电工程,2012,42(3):34-37.
[6] 谢 钢.全球导航卫星系统原理(GPS、GLONASS和伽利略系统)[M].北京:电子工业出版社,2013:279-355.
[7] 马英昌,谢 松.GPS L5接收机的设计与实现[J].无线电通信技术,2013,39(6):94-96.
[8] 谢金石,冯晓超,董 峥.基于点积差分的弱信号捕获方法性能分析[J].无线电通信技术,2010,36(3):14-16.
[9] 严蔚敏.数据结构(C语言版)[M].北京:清华大学出版社,2005:263-490.
[10] 谭浩强.C语言程序设计(第3版)[M].北京:机械工业出版社,2009:422-490.
[11] 秦 奋,杨 军,刘新宁.GPS 接收机快速热启动的分析与设计[J].现代电子技术,2009(1):11-13.
[12] 施 行,肖练刚,陈 怡.失锁重捕情况下的GPS接收机快速帧同步方法[J].测控技术,2012,31(4):125-129.
张建伟 男,(1986—),硕士,工程师。主要研究方向:GNSS接收机设计。
郑迎春 女,(1987—),硕士,工程师。主要研究方向:位置服务。
Research and Implement on GNSS Fast Acquisition Control Module
ZHANG Jian-wei,ZHENG Ying-chun
(StateKeyLaboratoryofSatelliteNavigationSystemandEquipmentTechnology,ShijiazhuangHebei050081,China)
The improvement of GNSS signal type and the technique requirement makes the design of GNSS baseband modules and control modules more complicated.This paper studies GNSS fast acquisition control module,and analyzes such key paths as start strategy optimization,re-acquisition strategy and P-code acquisition concerning acquisition control.A novel fast acquisition control component is designed based on the datalink list structure.By using interface Encapsulation and task sorting of acquisition module,the time delay caused by acquisition strategy switch is effectively decreased,and the acquisition module is controlled in real time to achieve the specified tacks.
GNSS;datalink list;fast acquisition;acquisition strategy
10.3969/j.issn.1003-3106.2017.05.24
张建伟,郑迎春.GNSS快速捕获控制模块研究与设计实现[J].无线电工程,2017,47(5):98-101,105.[ZHANG Jianwei,ZHENG Yingchun.Research and Implement on GNSS Fast Acquisition Control Module[J].Radio Engineering,2017,47(5):98-101,105.]
2017-02-09
国家高技术研究发展计划(“863”计划)基金资助项目(2015AA124001)。
TP391.4
A
1003-3106(2017)05-0098-04