辉煌 发表于 2017-7-20 10:00:32

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

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

       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所示。

4结束语


         本文结合PFGA和GPS-25型OEM板的硬件特点,分析了FPGA和OEM板的串行通讯问题,同时重点分析了读取GPS定位信息的设计问题。
页: [1]
查看完整版本: FPGA与GPS-OEM板的串行通讯系统设计之二