一种基于FPGA软核采集ASCII形式数据的系统的制作方法

文档序号:12122778阅读:854来源:国知局

本发明属于电气工程技术领域,涉及一种基于FPGA软核采集ASCII形式数据的系统。



背景技术:

由于FPGA在组合逻辑与时序控制方面比较擅长,在解析ASCII协议方面不如用C语言解析方便。因此希望通过FPGA的软核(microblaze)解决该问题,microblaze作为FPGA的一种嵌入式处理器,可以采用C语言编写程序避开FPGA在这方面的弱点。

然而ASCII为8位数据形式,与FPGA软核所能处理的32位数据位形式以及数字信号处理器的16为数据位形式均不同,因此采用FPGA芯片处理ASCII数据具备一定的困难,目前尚未有有效的解决方法。



技术实现要素:

有鉴于此,本发明提供了一种基于FPGA软核采集ASCII形式数据的系统,能够实现FPGA对ASCII形式数据的快速解析。

为了达到上述目的,本发明的技术方案为:一种基于FPGA软核采集ASCII形式数据的系统,该系统包括一块数字信号处理芯片和FPGA芯片。

FPGA芯片中包括串口数据接收模块、先入先出缓冲区FIFO、软核microblaze、数据转换模块和第一双口RAM。

串口数据接收模块为在FPGA中创建的软件模块,用于接收外部输入的ASCII形式数据,并将该ASCII形式数据发送至FIFO中。

FIFO在FPGA的IP核中创建,FIFO数据类型为8位,FIFO输出接口包括8位输出数据线、1位读数据线和1位非空数据线。

microblaze具有10根GPIO口分别与FIFO的10根数据线一一对应连接;在microblaze中创建第二双口RAM,第二双口RAM数据位为32位;microblaze读取FIFO的非空数据线中电位,当FIFO中有数据时,FIFO非空数据线变为低电位,该低电位由microblaze获取后,microblzae通过对FIFO的读数据线进行置位,FIFO的读数据线置位后,microblaze通过FIFO的8位输出数据线读取FIFO中数据,microblaze将读取的数据进行解析,提取其中所需信息,将该所需信息发送到microblaze中的第二双口RAM中。

数据转换模块将所需信息从第二双口RAM中读取出来,并将第二双口RAM中的所需信息进行数据位转换将32位数据转换为16位,将转换结果存入第一双口RAM中。

第一双口RAM在FPGA的IP核中创建,第一双口RAM的数据位为16位;第一双口RAM与数字信号处理芯片相连接;数字信号处理芯片从第一双口RAM中读取上述转换结果,实现数字信号处理芯片对ASCII形式数据的接收。

有益效果:

本系统的核心数据处理板由一块数字信号处理芯片(OMAPL138)与FPGA组成,系统运行需要两块芯片协同工作。采用FPGA作为与外界数据交互的接口,配合OMAPL138工作。当对外串口通讯数据协议为ASCII方式时,FPGA能够进行快速解析。

附图说明

图1为系统框图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

该系统的系统框图如图1所示,包括一块数字信号处理芯片和FPGA,FPGA中包括串口数据接收模块(采用代码实现),FIFO(可以在IP核中创建,FIFO数据类型为8位,FIFO数据输出包括8位输出数据线,1位读数据线,1位非空数据线),嵌入式处理器(microblaze,嵌入式处理器具有10根GPIO口分别于FIFO的10根数据线连接;在嵌入式处理器中需要添加双口RAM控制器以及双口RAM,该双口RAM数据默认为32位),数据转换模块(采用代码来实现将32位数据转换为16位),双口RAM(可以在IP核中创建,双口RAM数据类型为16位)。

ASCII形式的串口数据进入到串口数据接收模块,串口数据接收模块将接受到的数据发送至FIFO中,当FIFO中有数据时,FIFO非空标志数据线(empty)变为低电位,该低电位由microblaze获取后,microblzae通过控制FIFO的读数据线,microblaze通过FIFO的8位输出数据线读取FIFO中数据,microblaze将读取的数据进行解析,提取其中所需信息,将该所需信息发送到microblazede的双口RAM中,由数据转换模块将该信息从双口RAM中读取出来,并进行出具转换,将转换结果存入16位的双口RAM中,该16位的双口RAM与数字信号处理芯片相连接。数字信号处理芯片可以从该双口RAM中读取上述转换结果。

实施例1:

以深水罗经系统(其核心板由数字信号处理器OMAPL138及FPGA组成)为例,深水罗经在水面上工作时需要接受GPS信息。GPS提供位置速度等信息,通过串口将数据发送给深水罗经系统,具体串口协议如下:

$GPRMC,010006.00,A,3650.1230000,N,11250.0000345,E,12.000,40.0,16,0.0,W,N*3F其中$GPRMC为数据头,010006.00为时间,A为数据有效,3650.1230000为纬度,11250.0000345为经度。

深水罗经系统串口接收引脚(RX)与GPS的发送引脚(TX)相连接,当GPS通过串口向外发送数据时,深水罗经系统的FPGA检测到接收引脚信号,FPGA通过串口接收模块将数据转换为字符型数据存储到FIFO中,当FIFO中有数据时标志数据线(empty)拉低。由于empty引脚与microblaze连接,microblaze检测到empty的低电平后通过控制与FIFO连接的读信号RD发送读信号,通过数据线获取FIFO中数据。通过以上操作,microblaze中获取了一包GPS的完成数据。在microblzae中,我们通过编写C语言程序提取其中的位置信息(例如上面的纬度3650.1230000,经度11250.0000345),将位置信息存储在自身的双口RAM中,数据转换模块将microblaze的RAM数据转换后存储到与数字信号处理器(omapl138)向连接的双口RAM中,供数字信号处理器读取使用。

综上,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1