目前,卫星定位系统的应用越来越广泛,中国、欧盟和日本等国都在积极发展自己独立的卫星定位系统。自1980年第一台商品GPS信号接收机问世以来,GPS信号接收机不断更新换代,目前的卫星导航接收机主要由专用集成芯片(ASIC)搭建而成,拥有集成度高、速度快的优点。但随着卫星导航系统现代化的开展,在轨飞行的导航卫星日渐增多,卫星导航应用趋于多样化,固定的硬件结构难以完成快速系统更新,暴露出硬件接收灵活度低、升级昂贵的弱点。而软件接收机通常是通过下变频芯片将卫星导航信号降到较低的中频,然后通过模数转换器对信号进行数字化,接收机的捕获、跟踪、定位等功能则由软件在通用的信号处理平台上实现,易于在现有系统的基础上进行性能升级和功能扩展。
从目前研究现状来看,软件接收机的实现大多基于PC机或FPGA/DSP组合平台。而FPGA平台虽然是一个可编程的平台,但其灵活性和扩展性与纯软件相比仍然有所欠缺,而DSP通常在此平台中仅实现定位解算功能。因此,实现基于独立DSP平台的通用卫星导航接收机是一项十分有意义的工作,可以极大程度地扩展软件接收机的灵活性。本文主要探讨基于独立DSP的软件接收机平台结构设计,讨论如何在现有DSP平台上提供多星座卫星导航软件接收机支持,同时分析系统自举引导功能的实现和基于DSP/BIOS操作系统的软件接收机任务调度管理。
1 接收机平台结构设计
GNSS软件接收机平台采用模块化设计,可以分为中频数据采集模块、数据存储模块、结果输出模块和电源及复位模块。本文所设计的卫星导航接收机硬件系统原理框图如图1所示。
基本的工作原理:由射频前端GP2015对天线接收的信号进行下变频,输出模拟中频信号,ADC对中频信号进行采样和量化,然后传输到TMS320C6416 DSP进行相关的运算处理,完成卫星信号的捕获、跟踪和定位解算等功能,最后将解算的结果通过输出模块传送到显示终端显示定位结果及相关信息。
1.1 TMS320C6416简介
TMS320C6416是TI公司推出的高性能定点DSP,其时钟频率可达1 GHz,最高处理能力为8 000 MIPS,软件与C62X完全兼容,采用先进的甚长指令结构(VLIW)的DSP内核有6个ALU(32/40 bit),每个时钟周期可以执行8条指令,所有指令都可以条件执行。该DSP采用二级缓存结构,一级缓存(L1)由128 Kbit的程序缓存和128 Kbit的数据缓存组成,二级缓存(L2)为8 Mbit,有2个扩展存储器接口(EMIF),1个为64 bit(EMIFA),1个为16 bit(EMIFB),可以提供64条独立的DMA通道。
本系统使用50 MHz有源晶振作为DSP的外部输入时钟,内部锁相环使用×20模式(CLKMODE1=1,CLKMODE0=0),系统的主频为1 GHz。
1.2 多星座数据采集模块
为了使软件接收机能够支持多卫星导航星座的中频数据采集与处理功能,本系统同时提供了模拟中频采集接口和数字中频采集接口,2个接口可以同时使用,也可以任选其一,从而使系统具备较高的软件可扩展性。多星座中频数据采集模块的原理框图如图2所示。
在本系统的设计中,采用ADI公司的高速A/D转换器AD9283实现模拟中频信号到数字中频信号的转化。由于接收到的卫星导航信号能量比噪声信号能量低约为20 dB,因此量化位数的高低对检测卫星导航信号的影响是有限的,若采用高位数量化会增加数据运算量和系统的复杂度,通常的商用接收机大多采用1 bit或2 bit量化。本设计中量化位数为1 bit和2 bit可选配置。经过ADC数字化的中频信号送到DSP的McBSP0和McBSP2端口,并随后触发EDMA事件,完成数据拷贝和缓存。与此同时,采样时钟作为McBSP口的外部时钟同步输入信号,将8 bit同步减法计数器74HC40103D设计成32进制计数器对采样时钟进行分频来产生帧同步信号,实现串并数据转换。为避免因负载过多时钟驱动能力不足,采用了可配置时钟驱动芯片CY2308作为时钟驱动。图3所示为多星座数据采集的硬件连接原理图。
为避免数据丢失,采用乒乓缓存的方法缓冲采集到的数据流,在DSP的片上内存为每个McBSP通道开设乒缓冲区和乓缓冲区。以12 MHz、1 bit采样为例,在片上内存开辟2个30 KB的数据缓冲区,即每个缓冲区能够存放20 ms的数据。系统运行后,EDMA控制器先将McBSP0采集到的数据写入乒缓冲区,20 ms后乒缓冲区满,EDMA控制器向CPU发出中断请求,对缓冲区数据进行运算处理。同时,EDMA向乓缓冲区写数据,这样通过不断的乒乓切换完成数据的缓冲存储。
1.3 查找表数据存储管理
在捕获、跟踪中需要用到大量查找表,为了降低接收机的启动时间,直接把这些数据表格作为固件烧入到Flash中,而不用每次都由DSP通过程序重新生成。所有查找表需要约15 MB的空间,为了降低存储空间,使用LZW无损压缩算法进行压缩至约2 MB。系统初始化时,DSP先读取Flash中的数据表格,然后执行解压程序对其解压,并存于片外的SDRAM中提供给接收机做运算时调用。
本设计中使用了2片4 MB×32位的SDRAM芯片MT48LC4M32并联连接到DSP的EMIFA口,把程序运行过程中对实时性要求较低的数据段和查找表分配到SDRAM中。总线运行在166 MHz的高速状态,由专用的可配置的时钟芯片ICS525对50 MHz的时钟倍频产生。
1.4 定位结果输出模块
卫星导航接收机需要周期性地输出定位结果以及其他相关信息,通常输出速率为1 Hz“5 Hz,DSP的串行接口McBSP即可满足要求。为了能够将结果在显示设备上显示,数据的输出需要兼容NMEA0183协议,因此需要将McBSP口扩展成符合RS-232标准的异步串行接口。
将DSP的McBSP端口的工作模式设为SPI模式作为主设备,直接与MAX3111进行连接,DSP通过执行相关的指令,设置MAX3111的相关控制字,完成波特率、数据位、奇偶校验等的设定,然后向MAX3111输出有效信息,利用其片内的转换器实现UART到RS-232格式及电平的转换,从而实现DSP与RS-232设备进行异步数据传输。
2 系统软件结构设计
2.1多星座接收机软件设计
在多星座软件接收机中,对于来自多个不同星座的中频数据的一部分软件处理模块可能是相同的。例如,对于GPS导航接收机和Galileo导航接收机可以采用共同的定位模块。与单星座的软件接收机相比,多星座的软件接收机可能会有多个EDMA/McBSP的中断处理程序和信号跟踪处理模块。因此,在针对多星座接收机的软件设计中,对这些模块的处理需要额外进行。软件接收机的结果输出如图4所示。
2.2 自举引导功能的实现
为了保证接收机能够脱离主机独立工作,本设计采用ROM自举加载模式,接收机程序作为固件存储在外部的非易失存储器Flash中,DSP复位后,先把外部存储的程序加载到片上高速内存中,然后顺序执行片上RAM中的程序。由于C64x只自动复制1 KB到片上内存,而接收机的程序远远大于这个数量,所以需要采用二级程序加载的方法。二级程序加载按照如下方式进行:
编写二次引导程序代码,然后烧写到Flash中。系统复位后,DSP将通过EDMA控制器按照默认的时序自动二次引导代码加载到片上内存的首地址中,传输完成后CPU从首地址开始执行这段二次引导程序。二次引导代码首先配置EMIFB的相关寄存器,使其工作在16 bit总线时序下,然后将卫星导航接收机相关程序加载到CPU的片上指定空间。当二次引导程序执行完毕后自动跳转到主程序的入口处,开始执行软件接收机的相关程序。
值得注意的是本设计中Flash采用16 bit数据线,所以EMIFB的地址线的最低位BEA1没有连接到Flash芯片地址线的最低位A-1,而C64x在ROM加载模式下是使用默认时序8 bit加载,即在自加载情况下EMIFB不能访问本设计中Flash的奇地址。为了保证自加载成功,需要对二次引导程序生成的二进制(.bin)文件进行修改,将有效数据存放在偶地址单元,在奇地址单元填充任意数据。图5所示为16 bit Flash与DSP的连接及自举示意图。
2.3 接收机任务调度设计
软件接收机程序是在CCS3.1开发环境下用C语言开发移植完成的。由于DSP平台资源有限,为了满足实时性,TI公司的DSP/BIOS操作系统将应用程序按线程结构化设计,每个线程完成1个模块化的功能,并允许高优先级线程抢占低优先级线程以及线程间的同步和通信。把接收机的跟踪、捕获、定位等功能模块设置成相互独立的线程,线程之间的切换通过硬件中断或软件中断来实现,并根据实时性要求为各个线程分配优先级,其中跟踪优先级最高,捕获优先级最低,定位线程通过周期(PRD)函数来实现,优先级介于跟踪和捕获之间。软件接收机各个线程的功能以及它们之间的关系如下:
(1) 数据采集硬件中断
EDMA触发的硬件中断具有最高优先级。该中断由McBSP端口产生,并通过EDMA中断触发,每20 ms中断1次。中断响应程序中主要完成乒乓缓冲区的切换和数据拷贝工作。中断处理完成后,会立刻触发跟踪软中断,以保证及时完成卫星信号的跟踪。
(2) 信号处理软中断
跟踪线程软中断处理程序如果发现有需要跟踪的导航卫星,则对缓冲区中的数据进行跟踪运算。跟踪线程结束后,会根据当前DSP处理器占用情况分时隙调用捕获软中断。跟踪线程具有最高的软中断优先级。该中断执行时间与同时跟踪的卫星数量有关。
捕获线程中断处理程序可被所有其他线程抢占,当所有高优先级的线程执行完毕后,捕获才能继续执行。捕获线程对缓冲区数据进行捕获处理,将已捕获的卫星信息告知系统,以在下一次硬件中断后对其进行跟踪,在DSP平台的平均执行时间为50 ms。
(3) 定位线程周期中断
定位周期线程执行1次定位解算任务,并将定位结果写入专门开辟的缓冲区中,随后EDMA控制器会自动将结果通过McBSP1端口传输到显示设备。该中断的优先级高于捕获线程,但低于跟踪线程,在DSP平台的平均执行时间为3 ms。
图6所示为软件接收机各线程之间的调度流程框图。
3 实验结果
在实验中,将接收机平台设置为12 MHz,1 bit采样,通过射频前端与GPS天线相连,实时接收GPS卫星信号,利用RTDX技术通过JTAG口将结果传输到主机进行显示。根据对各线程运算量的分析和实验验证可知,基于独立DSP的卫星导航接收机平台可以很好地完成6”10颗卫星的实时跟踪,并能准确定位。图7所示为对应的电子地图结果。除此之外,本文所提到的多星座软件接收机也开展了仿真试验测试,目前能够对每个星座系统实现4“5颗卫星的实时跟踪,其性能仍需进一步提高。
本文详细介绍了基于单颗高速定点DSP的实时卫星导航软件接收机平台的设计实现。提供了详细的硬件平台结构设计方案,阐述了系统上电自加载功能的实现方法以及接收机软件任务调度流程。根据本方案实现的卫星导航软件接收机具有低成本、低功耗、通用性好、功能可升级扩展等优点。
目前,卫星定位系统的应用越来越广泛,中国、欧盟和日本等国都在积极发展自己独立的卫星定位系统。自1980年第一台商品GPS信号接收机问世以来,GPS信号接收机不断更新换代,目前的卫星导航接收机主要由专用集成芯片(ASIC)搭建而成,拥有集成度高、速度快的优点。但随着卫星导航系统现代化的开展,在轨飞行的导航卫星日渐增多,卫星导航应用趋于多样化,固定的硬件结构难以完成快速系统更新,暴露出硬件接收灵活度低、升级昂贵的弱点。而软件接收机通常是通过下变频芯片将卫星导航信号降到较低的中频,然后通过模数转换器对信号进行数字化,接收机的捕获、跟踪、定位等功能则由软件在通用的信号处理平台上实现,易于在现有系统的基础上进行性能升级和功能扩展。
从目前研究现状来看,软件接收机的实现大多基于PC机或FPGA/DSP组合平台。而FPGA平台虽然是一个可编程的平台,但其灵活性和扩展性与纯软件相比仍然有所欠缺,而DSP通常在此平台中仅实现定位解算功能。因此,实现基于独立DSP平台的通用卫星导航接收机是一项十分有意义的工作,可以极大程度地扩展软件接收机的灵活性。本文主要探讨基于独立DSP的软件接收机平台结构设计,讨论如何在现有DSP平台上提供多星座卫星导航软件接收机支持,同时分析系统自举引导功能的实现和基于DSP/BIOS操作系统的软件接收机任务调度管理。
1 接收机平台结构设计
GNSS软件接收机平台采用模块化设计,可以分为中频数据采集模块、数据存储模块、结果输出模块和电源及复位模块。本文所设计的卫星导航接收机硬件系统原理框图如图1所示。
基本的工作原理:由射频前端GP2015对天线接收的信号进行下变频,输出模拟中频信号,ADC对中频信号进行采样和量化,然后传输到TMS320C6416 DSP进行相关的运算处理,完成卫星信号的捕获、跟踪和定位解算等功能,最后将解算的结果通过输出模块传送到显示终端显示定位结果及相关信息。
1.1 TMS320C6416简介
TMS320C6416是TI公司推出的高性能定点DSP,其时钟频率可达1 GHz,最高处理能力为8 000 MIPS,软件与C62X完全兼容,采用先进的甚长指令结构(VLIW)的DSP内核有6个ALU(32/40 bit),每个时钟周期可以执行8条指令,所有指令都可以条件执行。该DSP采用二级缓存结构,一级缓存(L1)由128 Kbit的程序缓存和128 Kbit的数据缓存组成,二级缓存(L2)为8 Mbit,有2个扩展存储器接口(EMIF),1个为64 bit(EMIFA),1个为16 bit(EMIFB),可以提供64条独立的DMA通道。
本系统使用50 MHz有源晶振作为DSP的外部输入时钟,内部锁相环使用×20模式(CLKMODE1=1,CLKMODE0=0),系统的主频为1 GHz。
1.2 多星座数据采集模块
为了使软件接收机能够支持多卫星导航星座的中频数据采集与处理功能,本系统同时提供了模拟中频采集接口和数字中频采集接口,2个接口可以同时使用,也可以任选其一,从而使系统具备较高的软件可扩展性。多星座中频数据采集模块的原理框图如图2所示。
在本系统的设计中,采用ADI公司的高速A/D转换器AD9283实现模拟中频信号到数字中频信号的转化。由于接收到的卫星导航信号能量比噪声信号能量低约为20 dB,因此量化位数的高低对检测卫星导航信号的影响是有限的,若采用高位数量化会增加数据运算量和系统的复杂度,通常的商用接收机大多采用1 bit或2 bit量化。本设计中量化位数为1 bit和2 bit可选配置。经过ADC数字化的中频信号送到DSP的McBSP0和McBSP2端口,并随后触发EDMA事件,完成数据拷贝和缓存。与此同时,采样时钟作为McBSP口的外部时钟同步输入信号,将8 bit同步减法计数器74HC40103D设计成32进制计数器对采样时钟进行分频来产生帧同步信号,实现串并数据转换。为避免因负载过多时钟驱动能力不足,采用了可配置时钟驱动芯片CY2308作为时钟驱动。图3所示为多星座数据采集的硬件连接原理图。
为避免数据丢失,采用乒乓缓存的方法缓冲采集到的数据流,在DSP的片上内存为每个McBSP通道开设乒缓冲区和乓缓冲区。以12 MHz、1 bit采样为例,在片上内存开辟2个30 KB的数据缓冲区,即每个缓冲区能够存放20 ms的数据。系统运行后,EDMA控制器先将McBSP0采集到的数据写入乒缓冲区,20 ms后乒缓冲区满,EDMA控制器向CPU发出中断请求,对缓冲区数据进行运算处理。同时,EDMA向乓缓冲区写数据,这样通过不断的乒乓切换完成数据的缓冲存储。
1.3 查找表数据存储管理
在捕获、跟踪中需要用到大量查找表,为了降低接收机的启动时间,直接把这些数据表格作为固件烧入到Flash中,而不用每次都由DSP通过程序重新生成。所有查找表需要约15 MB的空间,为了降低存储空间,使用LZW无损压缩算法进行压缩至约2 MB。系统初始化时,DSP先读取Flash中的数据表格,然后执行解压程序对其解压,并存于片外的SDRAM中提供给接收机做运算时调用。
本设计中使用了2片4 MB×32位的SDRAM芯片MT48LC4M32并联连接到DSP的EMIFA口,把程序运行过程中对实时性要求较低的数据段和查找表分配到SDRAM中。总线运行在166 MHz的高速状态,由专用的可配置的时钟芯片ICS525对50 MHz的时钟倍频产生。
1.4 定位结果输出模块
卫星导航接收机需要周期性地输出定位结果以及其他相关信息,通常输出速率为1 Hz“5 Hz,DSP的串行接口McBSP即可满足要求。为了能够将结果在显示设备上显示,数据的输出需要兼容NMEA0183协议,因此需要将McBSP口扩展成符合RS-232标准的异步串行接口。
将DSP的McBSP端口的工作模式设为SPI模式作为主设备,直接与MAX3111进行连接,DSP通过执行相关的指令,设置MAX3111的相关控制字,完成波特率、数据位、奇偶校验等的设定,然后向MAX3111输出有效信息,利用其片内的转换器实现UART到RS-232格式及电平的转换,从而实现DSP与RS-232设备进行异步数据传输。
2 系统软件结构设计
2.1多星座接收机软件设计
在多星座软件接收机中,对于来自多个不同星座的中频数据的一部分软件处理模块可能是相同的。例如,对于GPS导航接收机和Galileo导航接收机可以采用共同的定位模块。与单星座的软件接收机相比,多星座的软件接收机可能会有多个EDMA/McBSP的中断处理程序和信号跟踪处理模块。因此,在针对多星座接收机的软件设计中,对这些模块的处理需要额外进行。软件接收机的结果输出如图4所示。
2.2 自举引导功能的实现
为了保证接收机能够脱离主机独立工作,本设计采用ROM自举加载模式,接收机程序作为固件存储在外部的非易失存储器Flash中,DSP复位后,先把外部存储的程序加载到片上高速内存中,然后顺序执行片上RAM中的程序。由于C64x只自动复制1 KB到片上内存,而接收机的程序远远大于这个数量,所以需要采用二级程序加载的方法。二级程序加载按照如下方式进行:
编写二次引导程序代码,然后烧写到Flash中。系统复位后,DSP将通过EDMA控制器按照默认的时序自动二次引导代码加载到片上内存的首地址中,传输完成后CPU从首地址开始执行这段二次引导程序。二次引导代码首先配置EMIFB的相关寄存器,使其工作在16 bit总线时序下,然后将卫星导航接收机相关程序加载到CPU的片上指定空间。当二次引导程序执行完毕后自动跳转到主程序的入口处,开始执行软件接收机的相关程序。
值得注意的是本设计中Flash采用16 bit数据线,所以EMIFB的地址线的最低位BEA1没有连接到Flash芯片地址线的最低位A-1,而C64x在ROM加载模式下是使用默认时序8 bit加载,即在自加载情况下EMIFB不能访问本设计中Flash的奇地址。为了保证自加载成功,需要对二次引导程序生成的二进制(.bin)文件进行修改,将有效数据存放在偶地址单元,在奇地址单元填充任意数据。图5所示为16 bit Flash与DSP的连接及自举示意图。
2.3 接收机任务调度设计
软件接收机程序是在CCS3.1开发环境下用C语言开发移植完成的。由于DSP平台资源有限,为了满足实时性,TI公司的DSP/BIOS操作系统将应用程序按线程结构化设计,每个线程完成1个模块化的功能,并允许高优先级线程抢占低优先级线程以及线程间的同步和通信。把接收机的跟踪、捕获、定位等功能模块设置成相互独立的线程,线程之间的切换通过硬件中断或软件中断来实现,并根据实时性要求为各个线程分配优先级,其中跟踪优先级最高,捕获优先级最低,定位线程通过周期(PRD)函数来实现,优先级介于跟踪和捕获之间。软件接收机各个线程的功能以及它们之间的关系如下:
(1) 数据采集硬件中断
EDMA触发的硬件中断具有最高优先级。该中断由McBSP端口产生,并通过EDMA中断触发,每20 ms中断1次。中断响应程序中主要完成乒乓缓冲区的切换和数据拷贝工作。中断处理完成后,会立刻触发跟踪软中断,以保证及时完成卫星信号的跟踪。
(2) 信号处理软中断
跟踪线程软中断处理程序如果发现有需要跟踪的导航卫星,则对缓冲区中的数据进行跟踪运算。跟踪线程结束后,会根据当前DSP处理器占用情况分时隙调用捕获软中断。跟踪线程具有最高的软中断优先级。该中断执行时间与同时跟踪的卫星数量有关。
捕获线程中断处理程序可被所有其他线程抢占,当所有高优先级的线程执行完毕后,捕获才能继续执行。捕获线程对缓冲区数据进行捕获处理,将已捕获的卫星信息告知系统,以在下一次硬件中断后对其进行跟踪,在DSP平台的平均执行时间为50 ms。
(3) 定位线程周期中断
定位周期线程执行1次定位解算任务,并将定位结果写入专门开辟的缓冲区中,随后EDMA控制器会自动将结果通过McBSP1端口传输到显示设备。该中断的优先级高于捕获线程,但低于跟踪线程,在DSP平台的平均执行时间为3 ms。
图6所示为软件接收机各线程之间的调度流程框图。
3 实验结果
在实验中,将接收机平台设置为12 MHz,1 bit采样,通过射频前端与GPS天线相连,实时接收GPS卫星信号,利用RTDX技术通过JTAG口将结果传输到主机进行显示。根据对各线程运算量的分析和实验验证可知,基于独立DSP的卫星导航接收机平台可以很好地完成6”10颗卫星的实时跟踪,并能准确定位。图7所示为对应的电子地图结果。除此之外,本文所提到的多星座软件接收机也开展了仿真试验测试,目前能够对每个星座系统实现4“5颗卫星的实时跟踪,其性能仍需进一步提高。
本文详细介绍了基于单颗高速定点DSP的实时卫星导航软件接收机平台的设计实现。提供了详细的硬件平台结构设计方案,阐述了系统上电自加载功能的实现方法以及接收机软件任务调度流程。根据本方案实现的卫星导航软件接收机具有低成本、低功耗、通用性好、功能可升级扩展等优点。
举报