申博亚洲娱乐:FPGA与GPS-OEM板的串行通讯系统设计

日期:2016-08-07 16:27:06编辑作者:申博亚洲
全球定位系统(Global Positioning System简称GPS)是美国第二代卫星导航系统。它是在子午仪卫星导航系统的基础上发展起来的,GPS能提供全天候、连续、实时高精度导航参数,可实现三维定位,并可提供精确的时间信息。GPS系统由空间部分、地面监控部分和地面接收机部分组成。GPS定位技术的基本原理是利用测距交会定位的方法。用户接收机接收到卫星发播的信号并利用本机产生的伪随机噪声码取得距离观测量和导航电文:再根据导航电文提供的卫星位置和钟差改正信息来计算接收机的位置。由于GPS具有全球覆盖以及精度高、定位速度快、实时性好、抗干扰能力强等特点。近年来,GPS在国内外得到广泛的应用,并在各个领域发挥了极大的作用,已成为信息时代不可缺少的一部分。然而,GPS定位接收机价格比较昂贵,而且难以满足特定条件下的应用需求。因此,众多用户期望按照自己的使用环境和性能要求来设计和使用个性化的GPS定位接收机。出于电路面积、占用空间以及电路稳定性和可靠性等因素的考虑,本设计选择现场可编程门阵列(FPGA)来实现GPS信号的接收、提取以及存储。

  1、OEM板的工作原理和通讯协议

  1.1 OEM板的工作原理

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

  GPS-OEM板是GPS接收机的核心部件。该电路板具有接收GPS信号、处理信号、输出观测信号和定位结果等功能。用户利用OEM板进行二次硬件开发可研制成各种应用的GPS接收机。现以GARMIN公司的GPS25 OEM板为例,该板作为GPS接收机的主要组成部分,可接收来自天线单元的信号,并通过变频、放大、滤波等一系列处理过程,从而实现对GPS卫星信号的跟踪、锁定、测量,最后产生计算位置的数据信息(包括:纬度、经度、高度、速度、日期、时间、航向、卫星状况等),并由RS-232标准串口输出串行数据,该OEM板为12通道的GPS接收机,可以同时跟踪多达12颗GPS卫星,并可连续追踪GPS卫星,以实现快速定位。

  最终用户可以使OEM板工作在出厂设定的默认状态,此时无需设置输入语句。但要使用GPS的信息,则必须通过输出语句来获得。

  1.2 GPS-OEM板通信协议

  GPS-OEM板的型号甚多、性能各异,但它们的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、串行通信系统的设计

  2.1 系统通信原理

  由于FPGA接口采用TTL电平,而OEM板的串行通信采用RS-232标准电平,故需电平转换,电平转换接口可以通过MAX202芯片来实现。GPS25有两个串行口,其端口1可用来输入差分修正信息和输出卫星的原始测量信息,而端口2则用来输入设定语句和输出定位语句,因此,只需将FPGA接口与GPS25串行口2对应连接即可.其接口电路如图l所示。FPGA的全局时钟Global_clk由24 MHz的晶振产生。

  

  2.2 OEM板的个性配置

  当FPGA完成开机上电后.其中的异步串行发送电路将发送用户制定的配置语句,以对OEM板进行个性化的设置。

  由于GPS25的默认波特率是4800 bit/s。故应将FPGA中异步串行发送电路的波特率时钟也设置为此值,具体可通过对系统的全局时钟进行分频来实现,发送完结束标志符后,FPGA中的定位信息接收读取电路即可开始工作,并等待数据的接收。本例用$GPRMC语句接收OEM板的定位信息,如果应用系统有特殊要求,还需要进行初始化、配置以及对输出语句进行选择。应该注意的是,NMEA-0183格式中的校验和无需发送。

  初始化可用$GRMI语句来实现,其结果是:

  

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

  OEM板的配置可利用$PGRMC语句来完成。该语句共有14个有效项,其中第<10>项选择波特率,1~7分别代表标准波特率300~19200,配置时,可以用空项表明保持原配置项不变。例如,配置为9600波特、输出秒脉冲时,其则语句为:

  

  GPS25的输出语句共有10多条,默认的输出语句为$GPGGA等5条。用户对输出信息的设定可以通过$PGRMO语句实现。其结构是:

  

  其中,<1>为合法语句名,如GPRMC;<2>为语句状态,1表示禁止该语句输出,2表示允许该语句输出,3表示禁止所有语句输出,4表示允许所有语句输出。

  例如,下列输入语句只允许OEM板输出$GPRMC语句:

  $PGRMO,3;禁止所有语句输出。

  $PGRMO,GPRMC,2;允许$GPRMC语输出。

  3、定位信息的接收与读取

  3.1 接收模块的设计

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

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

  

  3.2 数据校验和存储设计

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

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

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

  

  4、结束语

  本文结合PFGA和GPS-25型OEM板的硬件特点,分析了FPGA和OEM板的串行通讯问题,同时重点分析了读取GPS定位信息的设计问题。

相关文章

http://www.jinyuankj.com/cxtx/20160807/30.html

基于串口通讯的PROFIBUS性能分析诊断软件

随着越来越多工业控制系统采用了PROFIBUS现场总线技术,对这些控制系统进行具体的、直观的和实时的在线分析与诊断成为了最基本的要求,要想 ..

发布日期:2016-08-07 详细>>

http://www.jinyuankj.com/cxtx/20160807/25.html

HMS首款EtherNet/IP连接设备实现罗克韦尔自动化PLCs和串行设备间的通信

HMS工业网络现在推出其新的EtherNet IP连接设备系列中的首款产品。这款新的EtherNet IP串行连接设备能让用户将任何串行设备连接至罗克韦尔C ..

发布日期:2016-08-07 详细>>

http://www.jinyuankj.com/cxtx/20160807/22.html

Pb6中的串行通信(MSCOMM32.OCX)完全解答版

本文给出一个在PB6中如何采集串行口数据的实例及MSCOMM32 OCX控件的一些基本知识。一:问题描述本文解决的是采集磅房的磅值读取问题。磅秤 ..

发布日期:2016-08-07 详细>>

如何实现(电脑)PC机与单片机AT89C51的串行通信

在Windows95下使用串口API函数实现PC机与单片机AT89C51的串口通信,重点介绍计算机采用事件驱动I O方式的函数编程及单片机串口中断发送、接 ..

发布日期:2016-08-07 详细>>

http://www.jinyuankj.com/cxtx/20160807/27.html

基于FPGA的串行通信控制系统的设计[图]

在Altera Cyclone II平台上采用自顶向下的模块化设计思想及VHDL硬件描述语言,设计了串行通信控制系统。在Quartus II软件上编译、仿真后 ..

发布日期:2016-08-07 详细>>