摘 要:介绍了GPS的定位原理及算法,在此基础上,提出了一种基于ARM微处理器的GPS接收机的设计方案。该GPS接收机采用Atmel公司生产的ATR0600芯片作为接收机的射频前端,内嵌ARM7核的ATR0620芯片作为接收机的数字基带处理器, 并阐述了外围扩展电路及软件设计。该GPS接收机具有体积小、功耗低、性能高的特点。
关键词:GPS接收机;ATR0600;ARM;ATR0620
全球定位系统(GPS)作为一种成熟的导航定位技术,以其全天候、高精度、自动化、高效率等显著特点及所独具的定位导航、授时授频、精密测量等多方面的强大功能,使其用途越来越广泛。但传统的使用8 bit单片机设计的GPS接收机,在数据处理、系统性能提升以及功能扩展等方面存在较大的不足。随着嵌入式技术的发展,以ARM为代表的32 bit微处理器凭借其高性能、低功耗、低成本、体积小等优点,在现实中获得了广泛的应用。
本文介绍了一种GPS接收机的整体设计方案,该方案采用Atmel公司生产的ATR0600和ATR0620芯片。其中ATR0600芯片作为接收机的射频前端,内嵌ARM7TDMI处理器核的ATR0620芯片作为接收机的数字基带处理器。该方案具有低功耗、高性能、尺寸小、成本低的特点。
1 GPS定位原理
GPS由21颗工作卫星和3颗备用卫星组成,分布在高度为20 200 km的6个轨道平面上,运行周期为ll h 58 min,其在空间的轨道分布保证了在地球上任何地方、任一时刻都能接收到至少4颗GPS卫星的信号[1-3]。
为了确定接收机在地球上的位置,首先要得到卫星的瞬时空间位置,即接收机根据接收到的导航卫星的星历参数,通过计算得到当前卫星在地球坐标系中的瞬时位置坐标。星历参数是描述卫星运行轨道的一组数据,由卫星以导航电文的形式连续不断地向地面用户接收机播发。其中包括星历参数的参考历元、参考历元的开普勒轨道参数和轨道摄动改正项。其中,除真近点角f是时间的函数外,其余均为独立的常数。因此,计算卫星任一瞬时位置的关键就在于计算参数f。
为了确定接收机在地球上的位置,还需通过测量获得接收机对卫星的相对距离,结合该卫星在空间的瞬时位置坐标,确定观测点的定位参数所对应的圆面,由3个或3个以上的圆面在三维空间内相交而得出自己在地球上的位置,实现高精度的定位和导航。
但是,由于接收机时钟与卫星时钟不能达到完全同步,接收机通信链路得到的接收机到卫星的距离应记为伪距?籽,它包含从卫星到接收机的几何距离和由接收机时钟与卫星时钟之间的差异而造成的偏移,其中接收机时钟偏移tu也是未知数。因此,确定接收机位置需解算4个未知数,即位置坐标的3个分量(x,y,z)和时钟偏移tu,至少需要4个方程式,即至少需要观测到4颗卫星。
3个坐标分量的系数是近似用户位置指向第s号卫星的矢量的方向余弦。第一次计算定位时,如无近似位置可用,可将(0,0,0)作为初始值,也可由用户手动输入接收机的近似位置坐标作为初始值代入以减少迭代次数。如果在不久以前的工作中已获得位置,则可用所存储的位置作为初始值进行迭代,从而减少迭代次数,缩短解算时间。
如果这样计算出的结果不够精确,则将解算出的点坐标作为新的初始估计值代入,再重新按上述步骤求解,一般迭代2~3次便可达到可接受的精度要求。
当仅观测到4颗卫星时,采用上述算法即可获得用户位置和时间偏移的单点解。若在观测过程中跟踪到4颗以上的卫星,则出现了冗余观测量,可用最小二乘法平差求解获得用户位置和时间偏移的估值,还可采用动态滤波等抗干扰手段平滑导航解,进一步提高导航定位的精度及连续性。
2 GPS接收机的硬件设计
卫星信号由天线接收,直接进入射频前端。射频前端具有变频作用,将射频信号转换为中频信号。中频信号经采样信号采样、量化后,转换为数字中频信号。数字中频信号进入基带数字处理器,基带数字处理器完成卫星信号的处理后,解调出导航电文,进行相应的处理后给出所需的定位信息或提供特定的应用服务。
GPS接收机的基本组成如图1所示[4-6]。
2.1 基于ATR0600的射频前端电路设计
射频(RF)前端模块位于接收机天线与基带数字信号处理模块之间,它通过天线接收所有可见GPS卫星信号,经前置滤波器和前置放大器的滤波放大后,再与本机振荡器产生的正弦波本振信号进行混频而下变频成中频(IF)信号,最后经模数转换器将中频信号离散成包含GPS信号成分的、频率较低的数字中频信号,并在此过程中进行必要的滤波和增益控制。
本设计中射频前端主要由Atmel公司生产的ATR0600芯片及外围滤波电路构成,它是一个GPS接收机射频前端IC芯片,采用单IF结构,芯片上包含有混频器、IF放大器、2 bit的模数转换器、晶体振荡器等电路,芯片具有极高的集成度和很小的功耗(约50 W)。
ATR0600通过外部天线接收1 575.42 MHz的L1 GPS信号,经过一个无源带通滤波器和LNA(低噪声放大器)进行第1级滤波、放大后,被外部SAW滤波器进行镜像抑制并对1 800 MHz GSM频带信号进行隔离。该信号与基准频率为23.104 MHz的本振信号进行混频,混频器将GPS信号下变频到97.76 MHz中频。混频后,该信号经过LC带通滤波器和可变益放大器(VGA),与片上集成的中频带通滤波器组合,完成对GSM干扰信号的滤波。VGA输出驱动集成的1.5 bit A/D转换器,将中频信号转化成4.35 MHz的数字中频信号。
2.2 基于ATR0620的基带处理器电路
基带数字信号处理模块是GPS接收机的核心部分,它通过处理射频前端所输出的数字中频信号,复制出与接收到的卫星信号相一致的本地载波和本地伪码信号,从而实现对GPS信号的捕获与跟踪,并且从中获得GPS伪距和载波相位等测量值以及解调出导航电文。
基带数字信号处理模块通常是硬件与软件相结合的有机体,其中载波解调和C/A码解扩通常是由ASIC硬件形式的数字信号处理器来完成的,而在微处理器中运行的跟踪环路控制软件通过计算来调节数字信号处理器的各种操作。由Atmel公司生产的ATR0620芯片包含有一个基于ARM7TDMI处理核的16通道相关器,它具有高性能的32 bit RISC结构,使用16 bit指令系统,能利用ARM7TDMI微控制器核与片上RAM完成GPS16通道相关器和外围设备接口功能。利用芯片内部大量的功能寄存器可以满足实时控制应用需求。
2.3 GPS接收机的电路设计
ATR0600射频前端为ATR0620提供卫星信号、主时钟信号和其他一些控制信号,而ATR0620为ATR0600提供采样信号。图2为利用ATR0600和ATR0620芯片设计的GPS接收机方框图。
2.4 存储模块及通信接口
选用Cypress公司生产的CY7C1041,由片选信号NSCS[I]选通来扩展SRAM,容量为4 MB。Flash则选用ST公司的4 MB容量的SST39VF400芯片,由片选信号NSCS[0]选通。
接收机中设计了两种通信接口:一种是JTAG调试接口,连接JTAG仿真器进行开发调试,下载用户程序;另一种是RS232通信串口,用于与主机通信。
3 GPS接收机的软件设计
GPS的用户设备主要由接收机硬件和处理软件组成。用户通过用户设备接收GPS卫星信号,经信号处理而获得用户位置、速度等信息,最终达到利用GPS进行导航和定位的目的。GPS接收机软件的处理流程如图3所示。程序包含汇编语言程序(用于引导和系统初始化)和C语言应用程序(用于主要的导航定位计算)两部分。软件整体采用并行任务结构,由相关器产生的累加数据IRQ中断信号进行任务切换的驱动,在中断服务程序中更新伪码、载波和数据解调环路。
GPS接收机的应用软件根据不同的用途而有所区别,主要包括数据采集与分析、卫星位置计算、时间推算、差分定位和动态定位等程序。本文设计的GPS接收机上的程序主要在ARM—μCLinux交叉编译环境下用C语言进行编写,通过ARM7 JTAG接口连接JAG仿真器进行调试和移植。
3.1 初始化/清除模块
在初始化程序段中要完成对GPS设备的注册,设备节点的创建和对串口相关寄存器的初始化。部分代码如下:
if((register_chrdev(GPS_MAJOR,GPS_NAME,&gps_fops))<0)
{//注册GPS字符设备
printk(KERN_INFO“[registering of“GPS”is failed]\n”);
return ret;}
devfs_GPS_dir=devfs_mk_dir(NULL,“GPS”,NULL);
devfs_handle=devfs_register(devfs_GPS_dir,“GPS”DEVFS_FL_
DEFAULT,GPS_MAJOR,0,S_IFCHR|S_IRUSR|S_IWUSR,
&GPS_fops,NULL);
printk(“GPS suecessfully initialized\n”);
*UCONO=Ox0211;//串口工作模式定义
*UBDRO=Ox0017;//波特率的选择相反,清除模块函数
//GPS_Cleanup(),完成注销字符设备
devfs_unregister_chrdev(GPS_MAJOR,GPS_NAME);
printk(“GPSmoduleremoved\n”);
3.2 两个数据结构定义
模块驱动的最终目的就是取得GPS信息,因此规范GPS数据对数据传递的可靠性和速率都是有益的。
struct GPS_DATA{
unsigned int hour;//小时,24小时制
unsigned int minute;//分
unsigned long Second;//秒,精度小数点后三位
unsigned long latitude;//纬度
unsigned char southornorth;//纬度属于南北的标志码
unsigned long longitude;//经度
unsigned char eastorwest;//经度属于东西的标志码
};//其中包括了在导航系统中所需的几个重要数据
另外还有对驱动模块文件操作结构的定义。即:
static struct file_operations gps_fops={
ead:gps_read,
rite:gps_write,
octl:gps_ioctl,
open:gps_open,
elease:gps_release
};//定义了设备操作映射函数结构
3.3 驱动程序的模块操作
在导航系统进入GPS导航模式时,系统首先将GPS模块注册到操作系统中,实现初始化过程,再通过gps_open函数打开设备。此过程中完成对中断、缓冲区以及定时器等资源的申请,为GPS数据读取做准备。通过gps_write()向模块写命令字来自主地选择工作模式,gps_ioctl()则是选择串口传输模式,使之与GPS模块传输模式相匹配。之后的应用程序将创立一个独立的进程gps_read()来读取GPS数据,该进程没有数据时将一直处于睡眠状态等待数据,有数据时进入中断处理模块,完成数据的分析,生成GPS_DATA数据结构,供导航使用。这个进程是随着导航模式的切换而终止的,此时除了关闭进程外,还需调用gps_release()释放申请的所有资源,并关闭设备。
4 性能测试
本设计的GPS接收机采用内嵌ARM7核的GP4020芯片作为接收机的数字基带处理器。通过实验调试,消除了以往微处理器的瓶颈效应,具有体积小、功耗低、性能高的特点。其主要性能指标如下:
(1)最大数据更新速率4 Hz;
(2)定位精度3 m CEP;
(3)功率消耗<0.1 W;
(4)信号重新捕获时间<1 s;
(5)动态范围<4 g;
(6)首次定位时间:热启动时间为2.5 s;冷启动时间为41 s;“暖”启动时间为31 s。
利用Atmel公司生产的ATR06XX芯片组和ARM的高效处理控制技术精心设计的超外差式GPS接收机可达到很高的接收灵敏度、频率选择性和较大的动态范围,并具有结构简单、体积小、重量轻、省电等优点。最后经整机测试,指标达到设计要求。如在此基础上对硬件中的天线部分和软件中的程序设计等加以修改,此方案可应用于我国的“北斗一号”卫星导航定位系统。因此,本设计具有广阔的应用范围。
参考文献
[1] 谢钢.GPS原理与接收机设计[M].北京:电子工业出版社,2009.
[2] 黄智伟.GPS接收机电路设计[M].北京:国防工业出版社,2006.
[3] 黄继海,杨凯.ARM系统应用设计[M].郑州:防空兵指挥学院,2007.
[4] 刘基余.GPS卫星导航定位原理与方法[M].北京:科学出版社,2003.
[5] 李洪涛,许国昌.GPS应用程序设计[M].北京:科学出版社,2000.
[6] 周立功.ARM微控制器基础与实践[M].北京:北京航空航天大学出版社,2003.