目前,大部分对于基于Linux的GPS接收机的相关研究,都是直接使用现成的GPS模块,而Linux只是简单地用于位置信息的采集,例如文献[1-5]所描述的GPS接收机;文献[6]中虽然设计了GNSS中频数据采集系统,但是其将系统分成了中频采集模块与Linux操作系统两个独立模块,且该文献中并未提及接收机基带部分对系统的实时性要求. 此外,类似于文献[7-9]所描述的基于FPGA+ARM/DSP的卫星导航接收机也存在硬件设计难度大、芯片间通信易受干扰等缺点. 为此本文提出了一种由单个SoCFPGA芯片实现的基于Xenomai实时Linux的北斗/GPS导航接收机.
Linux是一款免费的基于UNIX和POSIX的多任务、支持多线程、多CPU和多用户的操作系统,而且还具有跨平台的硬件支持、完善的网络功能和良好的稳定性等众多优势[10]. 因此,本文将北斗/GPS导航接收机的软件部分置于Linux操作系统上进行实现. 另外,该接收机基带部分需要具备并行处理数据的能力,所以北斗/GPS导航接收机的基带部分采用具有高速并行处理能力的FPGA来实现. 综合考虑,使用Altera所开发的SoCFPGA芯片作为主要的硬件载体,该芯片在FPGA架构中集成了硬核处理器系统HPS,包括双核ARM Cortex-A9 MPCore处理器、存储器控制器及丰富的外设等,该芯片结构如图1所示. 在SoCFPGA上HPS和FPGA既能够独立工作,也能够采用高速宽带互联AXI总线实现数据通信,这使得该接收机成为一个单芯片的解决方案.
|
图 1 SoCFPGA芯片结构图 Figure 1 Structure of SoCFPGA |
北斗/GPS导航接收机的基带部分对系统的实时性要求较高,属于分时操作系统的Linux,却无法满足该实时性能要求. 因此,必须增强Linux内核的实时性能. 目前,Linux上实时改进技术已有多种,一般采用直接修改Linux内核和采用多内核机制两种方法. 本文采用的Xenomai方案就是属于多内核方法,实时任务交由Xenomai实时微内核处理,而非实时任务则交由Linux内核处理. 基于Xenomai的实时Linux操作系统则在SoCFPGA上运行.
1 基于Xenomai实时Linux的北斗/GPS卫星导航接收机总体结构传统的卫星导航定位接收机架构如图2所示. 卫星导航定位接收机通常包括天线与射频前端部分、基带处理部分、微处理器与通信接口. 基带处理部分负责基带信号处理捕获和跟踪的相关运算,微处理器从基带处理部分输出的相关输出结果得到的导航数据,从而获得卫星星历及伪距,最终根据卫星的位置及伪距解算出用户位置等信息.
|
图 2 传统的卫星导航定位接收机架构 Figure 2 Architecture of traditional satellite navigation and positioning receiver |
根据卫星导航接收机的架构,并结合SoCFPGA芯片的优点,北斗/GPS卫星导航接收机的数据采集、卫星信号的捕获和跟踪由SoCFPGA芯片FPGA部分负责,利用FPGA的高速并行性实现多个卫星信号的并行捕获和跟踪. 系统任务的调度、捕获和跟踪环路的控制、位同步和帧同步处理、导航电文处理以及定位解算等软件部分则由HPS上的基于Xenomai实时Linux操作系统负责,FPGA和HPS之间采用AXI通信总线进行数据交互. 基于Xenomai实时Linux的北斗/GPS卫星导航接收机整体原理如图3所示.
|
图 3 北斗/GPS导航接收机整体原理图 Figure 3 Schematic diagram of Beidou/GPS navigation receiver |
射频前端的主要任务是对卫星信号进行混频、下变频、滤波、放大及模数转换,本接收机的射频前端电路部分的设计采用了MAX2112,其电路框图如图4所示. MAX2112工作频率范围能够保证该接收机可以接收到GPS L1频点及北斗B1频点的信号. 由于MAX2112并未集成ADC和AGC,所以采用双通道的低功耗模数转换器MAX1003对MAX2112输出的I、Q支路差分信号进行模数转换,并通过MAX2112芯片内部的基带可变增益放大器和采用数模转换芯片AD5314对射频可变增益低噪声放大器进行自动增益控制.
|
图 4 射频前端框图 Figure 4 RF front-end circuit |
北斗/GPS导航接收机基带中的卫星信号捕获和跟踪主要由FPGA负责,由于捕获和跟踪的实时性高、计算量大、多通道运行,所以可以利用FPGA的高速并行性特点对多个卫星信号进行捕获和跟踪,其中包括GPS、北斗GEO、北斗MEO/ISGO 3个捕获通道. 跟踪通道有32个,主要实现对捕获到的卫星信号进行跟踪,不同的跟踪通道中除了码发生器的模块不同外,其余可以进行复用,所以每个跟踪通道可以灵活地配置成对应卫星信号的跟踪通道. 捕获和跟踪通道在FPGA内部都是独立的逻辑模块,采用双口RAM对交互数据的跨时域操作,并通过AXI总线传输到HPS,再由HPS进行控制并读取通道状态和结果信息. 北斗/GPS导航接收机基带框图如图5所示.
|
图 5 北斗/GPS导航接收机基带框图 Figure 5 Baseband of Beidou/GPS navigation receiver |
Xenomai是一个采用双内核机制的Linux内核的强实时扩展[11],并为用户程序提供了用户态和内核态两种模式. Xenomai实时微内核为开发强实时应用提供了实时线程调度与管理、用户空间实时任务支持、中断服务、实时对象注册服务和动态内存申请等丰富的功能[12].
Xenomai是基于Adeos (Adaptive Domain Environment for Operating System)实现双内核机制的[11]. Xenomai和Linux在Adeos提供灵活且可扩展的自适应环境下共存与共享硬件资源. Adeos的主要工作是根据域的优先级管理中断,使用中断管道机制对中断的管理和域之间的优先级进行控制[13]. 在基于Adeos的系统中,每个操作系统都是在独立的域内运行,每个域可以有独立且可共享的地址空间和类似于进程、虚拟内存等的软件抽象层[11]. 另外,Xenomai域的优先级要高于Linux域的优先级,实时任务由Xenomai实时微内核处理,非实时任务交由Linux去处理,在保证实时性的同时,又能保证非实时任务得到及时的处理[14]. 基于Xenomai实时Linux操作系统结构如图6所示.
|
图 6 基于Xenomai实时Linux操作系统结构 Figure 6 Architecture of real time Linux operating system based on Xenomai |
Xenomai的核心技术是使用一个实时微内核来构建如RTAI、Vxworks等其他传统RTOS的客户API,这些实时API使得不需要完全改写原先运行在Linux上的程序就能实现软件的移植[15].
3.2 北斗/GPS导航接收机软件部分接收机软件部分可分为:系统初始化、捕获模块、跟踪模块、位同步、帧同步、电文解析与定位解算等部分. 完成软件的设计后,将其全部封装成模块并移植到基于Xenomai的实时Linux操作系统的用户态空间进行运行. 软件部分工作流程如图7所示.
3.2.1 系统初始化程序开始首先对接收机进行相应的初始化,其中主要包括系统初始化与射频前端驱动. 系统初始化包括对捕获和跟踪中断初始化、捕获配置、初始位置和钟差初始估计值的设置等,射频前端驱动包括对MAX2112和AD5314配置.
|
图 7 软件部分工作流程 Figure 7 Software workflow |
系统初始化完成后,程序开始控制捕获卫星信号. 捕获模块程序流程如图8所示. 当捕获中断响应后,读取捕获的成功标志位,如果捕获成功则读取捕获模块中的捕获卫星号、码相位、相关值最大值及其对应行列值,求出卫星多普勒频率,并将卫星号、捕获成功标志、卫星类型(GPS、BDS)、卫星码相位粗估略值以及卫星多普勒频偏粗估略值等结果信息缓存到捕获数据缓存双口RAM的后半部分,并向HPS申请中断,在HPS响应中断后,通过AXI读取捕获结果信息,最后清除捕获中断标志位;如果捕获不成功首先判断该卫星所有频点是否搜索完毕,如果没搜索完毕则搜索下一个频点,搜索完成某一卫星的所有频点后,则进行下一个卫星的捕获.
|
图 8 捕获模块程序流程 Figure 8 Processing flow of capture module |
在卫星信号捕获成功后,程序进行卫星信号跟踪. 载波跟踪环路中的鉴相器、鉴频器和环路滤波器,以及伪码跟踪环路中的鉴相器和环路滤波器采样均由软件实现,对不同的跟踪子通道进行分时复用控制下,HPS在1 ms中断时读取跟踪子通道的I、Q支路超前、即时以及滞后1 ms相关积分,并在中断处理函数中,通过跟踪环路的鉴别器和环路滤波器进行处理. 首先,在跟踪中断有效时读取跟踪数据缓存双口RAM中的载波环以及伪码环路的跟踪结果信息,包括各个跟踪子通道的相干积分值、卫星星历、卫星码相位、卫星多普勒频偏、1 ms积分结果,根据当前支路的I、Q积分结果计算出当前通道的载噪比并进行通道失锁检测. 如果跟踪通道失锁,则释放跟踪子通道并对该卫星重新进行捕获,如果未失锁,则将计算出的载波NCO频率控制值和伪码NCO频率控制值反馈回对应的跟踪子通道,然后锁存各个跟踪子通道的结果数据. 其流程如图9所示.
|
图 9 跟踪模块程序流程图 Figure 9 Processing flow of tracking module |
当锁定卫星信号后,则进行位同步与帧同步. 使用直方图法判断当前跟踪环输出数据比特流的位同步情况,如果位同步成功,根据直方计数器最大值对应的编号提取出比特边沿;若位同步失败,则需重新进行位同步. 帧同步主要是将20 ms的数据比特流与同步码和和其反相值进行匹配,找出子帧帧头,从而将数据比特组合成一帧帧的导航数据.
3.2.5 导航电文解析与定位解算在完成位同步与帧同步后,解析出卫星星历,根据跟踪到的卫星数量及卫星星历的收集情况判断是否进行位置解算,如果未达到解算条件,则继续进行星历收集;如果达到解算条件:至少有4个卫星帧同步成功并收集完星历(采用北斗/GPS双模定位则至少需要有不同系统的5颗卫星星历参数和伪距才能进行定位),接着计算出伪距、卫星轨道,然后根据卫星定位原理和最小二乘法对接收机位置进行解算,最后根据NMEA标准规范输出定位结果. 导航电文解析与定位解算流程图如图10所示.
|
图 10 导航电文解析与定位解算流程图 Figure 10 Navigation message analysis and positioning process |
该接收机在SoCKit开发板上进行测试,首先将设计好的基带部分下载到FPGA上,然后将软件部分移植到事先构建并安装在SoCKit开发板上的基于Xenomai实时Linux操作系统上,GPS/北斗接收机实物如图11所示,图中左边为SoCKit开发板,右边为射频前端板卡.
|
图 11 北斗/GPS接收机实物图 Figure 11 Beidou/GPS receiver |
任务响应延迟时间是评价一个实时操作系统的主要性能指标,由于系统时钟执行粒度的固定,任务响应时间越长则留给任务本身的处理时间就越短[16].
对于系统的任务响应延迟时间是采用cyclictest工具进行测试的,为了对比系统性能,本文中对未修改的Linux操作系统和基于Xenomai的Linux操作系统均做了测试,测试结果如图12所示.
|
图 12 实时性能测试结果 Figure 12 Results of real time performance test |
由图12可知基于Xenomai的Linux操作系统的任务响应延迟明显小于标准的Linux操作系统,在测试期间内任务响应延迟均在15 μs以内,能够满足北斗/GPS导航接收机的实时性要求.
4.2 北斗/GPS导航接收机性能测试使用接收机接收实际信号进行定位功能的测试,接收机在成功定位之后每秒输出一次定位信息,经过一段时间的定位得到坐标平均值为:113.392 862、23.037 484,接收机CEP测试结果达到2.290 4 m,如图13所示,能够满足定位需求.
|
图 13 接收机定位结果 Figure 13 Results of receiver positioning |
此外,经测试该北斗/GPS导航接收机的捕获灵敏度–144 dBm,跟踪灵敏度–153 dBm,且采用的快速冷启动方法使冷启动时间在最优情况下可达到27 s.
5 结束语本文描述了一种基于Xenomai实时Linux的北斗/GPS导航接收机. 介绍了接收机的硬件与软件的结构,同时介绍了基于Xenomai实时Linux操作系统的构建. 最后给出了该北斗/GPS导航接收机的性能测试结果,CEP测试结果达到2.290 4 m. 实验结果表明该北斗/GPS导航接收机能够满足定位需求. 此外,该接收机支持输出原始测量值,可用于后续的差分定位研究. 另外,该接收机不仅可支持冷、温及热启动多种启动方式,还可支持扩展组合导航以及进一步的数据处理,为进一步的组合导航研究打下了基础,有利于今后对于组合导航研究.
| [1] | ZHOU Y, WU Y. The Application of embedded Linux system in GPS trade terminal device[C]//International Conference on Management, Education, Information and Control. [S.l.]: [s.n.], 2015. |
| [2] | SHINDE P A, MANE Y B, TARANGE P H. Real time vehicle monitoring and tracking system based on embedded Linux board and android application[C]// International Conference on Circuit, Power and Computing Technologies. India Nagercoil: IEEE, 2015: 1-7. |
| [3] |
陈雪小. 基于Linux的GPS的应用[J].
传感器世界, 2012, 18(2): 18-20.
CHEN X X. Vehicle location monitoring system based on GPS[J]. Sensor World, 2012, 18(2): 18-20. |
| [4] |
任晓莉. 基于GPS的车辆定位监控系统[J].
计算机测量与控制, 2016, 24(2): 74-76.
REN X L. Vehicle positioning and monitoring sys-tem based on GPS[J]. Computer Measurement & Control, 2016, 24(2): 74-76. |
| [5] | SKOGLUND M, PETIG T, VEDDER B. Static and dynamic performance evaluation of low-cost RTK GPS receivers[C]//International Conference on Intelligent Vehicles Symposium Sweden, Gothenburg: IEEE, 2016. |
| [6] |
杨宇, 杨长林, 胡建宇, 等. Linux下GNSS中频信号采集系统及接收机设计[J].
电光与控制, 2015, 22(7): 75-78.
YANG Y, YANG C L, HU J Y, et al. Design of GNSS IF signal acquisition system and receiver based on Linux[J]. Electronics Optics & Control, 2015, 22(7): 75-78. |
| [7] | 陈文江. 基于FPGA的北斗卫星导航系统接收机基带信号处理器设计[D]. 南京: 南京理工大学瞬态物理国家重点实验室, 2015. |
| [8] | 李超. 基于DSP+FPGA的北斗卫星导航接收机的研究与设计[D]. 南京: 南京理工大学瞬态物理国家重点实验室, 2015. |
| [9] | 丁小明. 基于FPGA+ARM的GPS/BDⅡ接收机设计与实现[D]. 成都: 电子科技大学通信与信息工程学院, 2015. |
| [10] |
陈先财, 孙俊杰, 张久鹏, 等. 基于物联网的实时语音通信研究及其应用[J].
物联网技术, 2014(2): 75-77.
CHEN X C, SUN J J, ZHANG J P, et al. Research and application of real time voice communication based on Internet of things[J]. Internet of Things Technologies, 2014(2): 75-77. |
| [11] | 赵永久. 基于Xenomai的操作系统移植及其在软PLC中的应用[D]. 北京: 北京工业大学软件学院, 2013. |
| [12] |
苏宇, 张涛, 孙黎. 基于Xenomai的实时Linux系统的研究[J].
计算机技术与发展, 2013(10): 1-5.
SU Y, ZHANG T, SUN L. Research on real-time linux system based on Xenomai[J]. Computer Technology and Development, 2013(10): 1-5. |
| [13] | 王帅华. 基于ARM的嵌入式实时系统关键技术的研究[D]. 沈阳: 中国科学院研究生院沈阳计算技术研究所, 2015. |
| [14] |
杨丰瑞, 王兵. 基于Adeos的Linux实时性改造的研究与实现[J].
微电子学与计算机, 2015, 32(3): 50-53.
YANG F R, WANG B. Research and implementa-tion of Linux real-time transformation based on adaptive domain environment for operating sys-tem[J]. Microelectronics & Computer, 2015, 32(3): 50-53. |
| [15] |
赵明印, 黄道平, 刘少君. 基于Xenomai的嵌入式Linux数控系统平台研究[J].
测控技术, 2013, 32(8): 119-122.
ZHAO M Y, HUANG D P, LIU S J. Research on numerical control platform based on Xenomai[J]. Measurement & Control Technology, 2013, 32(8): 119-122. |
| [16] |
韩守谦, 裴海龙. 基于Xenomai的实时嵌入式Linux操作系统的构建[J].
计算机工程与设计, 2011, 32(1): 96-98.
HAN S Q, PEI H L WANG Q Y. Construction re-al-time embedded Linux operating system based on Xenomai[J]. Computer Engineering and Design, 2011, 32(1): 96-98. |
2018, Vol. 35

