微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > FPGA与GPS-OEM板的串行通讯系统设计

FPGA与GPS-OEM板的串行通讯系统设计

时间:11-08 来源:互联网 点击:
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<CR><LF>;禁止所有语句输出。

$PGRMO,GPRMC,2<CR><LF>;允许$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"与实际异或值是否相等。若相等,即所接收的数据正确;若不等,则所接收数据无效,系统随之复位存储设备,并等待检测下一组数据。当检测到结束符<CR><LF>时,标志数据读取结束,系统向FIFO发出结束标志,并等待下一次数据检测。其系统校验流程图如图4所示。



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top