APP下载

基于FPGA的GPS时统设计

2014-01-13龚鑫

科技致富向导 2013年24期
关键词:串口

龚鑫

【摘 要】近年来,GPS在国内外得到广泛的应用,并在各个领域发挥了极大的作用,已成为信息时代不可缺少的一部分。出于电路面积、占用空间以及电路稳定性和可靠性等因素的考虑,本设计选择现场可编程门阵列(FPGA)来实现GPS信号的接收、提取以及存储、转发。

【关键词】GPS;FPGA;FIFO;串口

0.引言

全球定位系统(Global Positioning System简称GPS)是美国第二代卫星导航系统。它是在子午仪卫星导航系统的基础上发展起来的,GPS能提供全天候、连续、实时高精度导航参数,可实现三维定位,并可提供精确的时间信息。因此,众多用户期望按照自己的使用环境和性能要求来设计和使用个性化的GPS定位接收机。

1.GPS时统系统组成、原理

1.1 GPS时统系统基本组成

GPS时统同步系统由授时型GPS模块、FPGA、1PPS信号输出电路、时间及定位信息输出电路组成,其原理框图如图1所示。GPS模块是系统的核心模块,其精度、可靠性等性能决定系统的性能。

图1 GPS时统系统基本组成

1.2 GPS时统系统工作原理

GPS模块的信号输出到FPGA,FPGA从码流中提取时间信息。以GPS模块输出的lpps秒信号为基准,得到标准时间和钟面,用FPGA做一个串行口再将标准时间和钟面送给待授时设备。在正常工作情况下(能正常接收GPS信号),FPGA传送给外部的串行口数据为GPS提供的信息,也就是标准时间。在非正常工作情况下(不能正常接收GPS信号),FPGA送给外部的数据,为根据标频频率信号经过综合后,自己产生的时间信息。回到正常状态时,FPGA输出立即转为标准时间。

1.3 GPS模块的工作原理和通讯协议

1.3.1 GPS模块的工作原理

GPS信号接收机的任务是捕获按一定卫星高度截止角所选择的若干待测卫星的信号,并跟踪这些卫星的运行。然后对所接收到的GPS信号进行变换、放大和处理,以便测量出GPS信号从卫星到接收机天线的传播时间,再解译出GPS卫星所发送的导航电文.最后实时计算出观测站的三维位置、三维速度和时间等。

GPS模块是GPS接收机的核心部件。该电路板具有接收GPS信号、处理信号、输出观测信号和定位结果等功能。我们选用GARMIN公司的GPS15L模块,于该板作为GPS接收机的主要组成部分,接收来自天线单元的信号,并通过变频、放大、滤波等一系列处理过程,从而实现对GPS卫星信号的跟踪、锁定、测量,最后产生计算位置的数据信息(包括:纬度、经度、高度、速度、日期、时间、航向、卫星状况等),并由RS-232标准串口输出串行数据,该GPS模块为12通道的GPS接收机,可以同时跟踪多达12颗GPS卫星,并可连续追踪GPS卫星,以实现快速定位、授时。可以使GPS模块工作在出厂设定的默认状态,此时无需设置输入语句。但要使用GPS的信息,则必须通过输出语句来获得。

1.3.2 GPS模块通信协议

GARMIN公司的GPS15L模块的GPS定位信息串行输出格式采用美国国家海洋电子协会制定的NMEA-0183通信标准格式。其输出数据采用的是ASCII码,数据格式设置为1个起始位,8个数据位,1个停止位,无奇偶校验。输出默认波特率为4800 baud。内容包含纬度、经度、高度、速度、日期、时间、航向以及卫星状况等信息.常用语句有6种,包括GGA、GLL、GSA、GSV、RMC和VTG。我们只关心其时间、经纬度、地面速度信息等,因此,采用GPRMC最小定位信息来获得所需信息。不过要注意,这些设置信息只在系统本次上电,并进行设置后才有效。每次重新上电时均需重新设置。NMEA-0183通信标准格式如下:$<地址区>,<数据区>,<数据区>,…<校验区>, 其中:"$"为语句起始标志;"地址区"为识别符;"数据区"为发送数据内容;","为数据区分隔符;"校验区"内为校验和;为语句结束符。

下面以GPRMC语句为例来介绍。该语句包含时间、日期、方位、速度和磁偏角等信息,基本上可以满足一般的导航需求。GPRMC语句的结构为:$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,,<11>,*hh。其中,"GP"为交谈识别符,"RMC"为语句识别符;"*"是检验和识别符。"hh"是校验和,它们代表了"$"与"*"之间所有字符的按位异或值(不包括这两个字符)。

$GPRMC语句数据区的内容如下:

(1)UTC时间,hhmmss(时分秒)格式。

(2)定位状态,A=有效定位,V=无效定位。

(3)纬度ddmm.mmmm(度分)格式(前面的0也将被传输)。

(4)纬度半球N(北半球)或S(南半球)。

(5)经度dddmm.mmmm(度分)格式(前面的0也将被传输)。

(6)经度半球E(东经)或W(西经)。

(7)地面速率(000.0~999.9节,前面的0也将被传输)。

(8)地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)。

(9)UTC日期,ddmmyy(日月年)格式。

(10)磁偏角(000.0~180.0度,前面的0也将被传输)。

(11)磁偏角方向,E(东)或W(西)。

实际应用中,我们只需提取时间和位置信息,并对定位数据的有效性进行验证。

2.串行通信及GPS模块的配置

由于FPGA接口采用TTL电平,而GPS模块的串行通信采用RS-232标准电平,故需电平转换,电平转换接口可以通过MAX3232芯片来实现。GPS15L有两个串行口,其端口1可用来输入差分修正信息和输出卫星的原始测量信息,而端口2则用来输入设定语句和输出定位语句,因此,只需将FPGA接口与GPS15L串行口2对应连接即可.其接口电路如图1所示。FPGA的时钟clk由外部标频提供。

由于GPS15L的默认波特率是4800 bit/s。故应将FPGA中异步串行发送电路的波特率时钟也设置为此值,具体可通过对系统的时钟进行分频来实现,发送完结束标志符后,FPGA中的定位信息接收读取电路即可开始工作,并等待数据的接收。我们用$GPRMC语句接收GPS模块的定位信息,如果应用系统还有其它特殊要求,还需要进行初始化、配置以及对输出语句进行选择。初始化可用$PGRMI语句来实现,其结果是:

$PGRMI,<1>,<2>,<3>,<4>,<5>,<6>,<7>*hh;其中,<1>~<4>项用以设置地理位置,它们的格式与$GPGGA语句的对应项相同,第<5>项为UTC日期,格式为"日日月月年年",第<6>项为UTC时间,格式与$GPGGA语句相同,第<7>项中,A=自动定位,R=设备复位。

GPS模块的配置可利用$PGRMC语句来完成。该语句共有14个有效项,其中第<10>项选择波特率,1~7分别代表标准波特率300~19200,配置时,可以用空项表明保持原配置项不变。例如,配置为9600波特、输出秒脉冲是,其语句为:$PGRMC,,,,,,,,,,,6,,2,,**hh;GPS15L的输出语句共有10多条,默认的输出语句为$GPGGA等5条。用户对输出信息的设定可以通过$PGRMO语句实现。其结构是:$PGRMO,<1>,<2>*hh;其中,<1>为合法语句名,如GPRMC;<2>为语句状态,1表示禁止该语句输出,2表示允许该语句输出,3表示禁止所有语句输出,4表示允许所有语句输出。例如,下列输入语句只允许GPS模块输出$GPRMC语句:

$PGRMO,3;禁止所有语句输出。$PGRMO,GPRMC,2;允许$GPRMC语输出。

3.时间及定位信息的接收与读取

3.1接收模块的设计

本设计中的接收模块主要负责接收由GPS模块串口2输出的导航定位信号。该模块包括对TXD端的起始位检测电路,采样电路,波特率发生器和异步FIFO缓存设计等。本设计中的波特率发生器实际上是一个时钟分频器,所产生的分频时钟是波特率时钟的16倍,目的是为了在接收时进行精确的采样,以提出异步串行数据,同时,也可为异步FIFO提供写时钟。

接收之前应对从GPS模块直接输出的RXD信号进行同步处理,以滤除输出中的干扰,降低异步时域数据传输中亚稳态产生的概率,提高系统的稳定性和可靠性。本设计采用两级D触发器来实现信号同步。根据异步传输的通讯协议,当电路检测到GPS模块同步后的输出端syn_TXD发生负跳变时,整个接收采样电路开始工作。为了避免干扰和得到正确的起始位,在波特率时钟检测过程中,至少必须有一半属于逻辑0,即8个时钟周期后,才可认定收到是可靠的起始位。当接收到正确的起始位后.接着的数据位将每隔16个采样周期被采样一次。即取每一位的第8次的波特率时钟采样值来确保采样正确。图2所示是本系统的串口接收状态图。连续采样8次后,即一个字节数据接收完成之后,便可设置位结束标志。每采样一个字节数据,都先放入FIFO中缓存。由于GPRMC格式数据所传输的最大字节数是72Byte,故当接收完一组数据之后,都要对FIFO的满信号置位,并由外部的全局时钟控制将里面缓存的数据读出,以供后续部分处理。读完之后,即可接收到后续模块的结束标志,然后复位读使能,以等待下一组数据的到来。

图2 串口接收的状态图

3.2数据校验和存储设计

要正确读取GPS模块的输出语句,首先是判断语句类型,其次是存放数据,然后再确定语句的结束标志。本例中将接收的数据存放在FPGA内部设定的RAM中,而对时间,位置等信息的提取和处理则在其它部分完成。

数据校验模块由FIFO的满信号启动。当检测到满信号有效时,校验模块连续的读取数据并进行处理。当检测到起始标志"$"后,即进入数据读取和检测。输出数据是以语句的形式出现的,每条语句代表一种数据,每种数据都有它自己的识别码,所以,要根据收到的语句识别码来判断该语句是否为所需要的内容(如GPRMC中,"GP"为识别符,"RMC"为语句名)。

根据NMEA-0183通信标准格式的内容,可对所接收到的数据进行检验。即对接收到的信息逐字节异或。当接收到"*"时,比较下一字符"hh"与实际异或值是否相等。若相等,即所接收的数据正确;若不等,则所接收数据无效,系统随之复位存储设备,并等待检测下一组数据。当检测到结束符时,标志数据读取结束,系统向FIFO发出结束标志,并等待下一次数据检测。其系统校验流程图如图3所示。

图3 校验部分流程图

4.守时系统设计

当有GPS信号时,FPGA根据1PPS信号不断检测外标频的频率,根据检测结果控制匹配寄存器的匹配值。FPGA内部32位定时计数器T0一直对外标频频率计数,捕获寄存器T1在1PPS信号触发下装入当前计数器T0的计数值;32位计数器T0一直连续计数。当1PPS信号到来时,产生中断,捕获寄存器T1装入T0当前的计数值CT1并保存下来;当下一个1PPS信号到来时,T1装入T0的计值CT2,标频频率为(CT2-CT1)或(CT1+2^32-CT2)T0计数溢出时的情况。FPGA采用对本地时钟的计数来分别产生各同步时间。如图4所示。例如:TX时刻对应的计数值CTX:

CTX=CT1+TX×(CT2-CT1)/外标频的频率f

当没有GPS信号时,FPGA根据外部标频频率及有GPS信号时,定时计数器的计数值产生1PPS信号、各种同步时间及时间信息,送给待授时设备。

图4

5.结束语

本文结合PFGA和GPS-15L模块的硬件特点,分析了FPGA和GPS模块的串行通讯问题,同时重点分析了读取GPS定位信息的设计问题。 [科]

【参考文献】

[1]王诚,吴继华,范丽珍,薛宁,薛小刚.Altera FPGA/CPLD 设计.人民邮电出版社,2005.

[2]褚振勇,齐亮,田红心,高揩娟.FPGA设计及应用.西安电子科技大学出版社,2006.

[3]张亮.数字电路设计与Verilog HDL.人民邮电出版社,2000.

猜你喜欢

串口
MCS—51单片机中的多串口通讯技术的应用
全国计算机等级考试机房准备工作探讨
微机串口的测试诊断
基于VC串口通信的实现