基于FPGA与STM32的超声波数字信号双芯处理系统及方法与流程

文档序号:11514844阅读:962来源:国知局
基于FPGA与STM32的超声波数字信号双芯处理系统及方法与流程
本发明具体涉及一种基于fpga与stm32的超声波数字信号双芯处理系统及方法,属于超声波探测
技术领域

背景技术
:在超声波数字信号的接收系统中,现有技术中有这样几种方案:(1)纯单片机型该种技术采用c08051f340单片机作为主控芯片,其具体结构如图2-2所示,由于单片机功能有限,该方案外接了大量了计数器芯片,锁存器芯片,还有sram芯片等。纯单片机的方案的主要缺点为:1.普通单片机引脚有限,大约为40左右,其中主要包括有时钟,电源,复位,i/o端口等,用这些端口来产生控制外围设备所需要的数据和控制线,其数量往往不能满足要求,于是需要在外部添加译码和锁存电路来扩展i/o口,整个系统会变得十分臃肿,设备的体积也会增加。2.系统硬件连线复杂,可靠性低。由于添加了大量的分立元件来扩展i/o口,使得硬件连线变得复杂,信号之间的干扰增大,可靠性低,系统功耗也随之增大。3.处理速度慢,一般单片机的处理速度比较慢,资源有限,难以实现液晶屏显示等人机交互功能。(2)纯cpld/fpga型cpld和fpga内部的基本结构是一些基本的宏单元或逻辑块,芯片中有成百上千个这种单元,芯片端口资源十分丰富,可以快速的完成各种逻辑功能的数字电路。同时其具备并行的工作机制,运行信号在多个逻辑块中同时流动,这种能力可以提高系统工作效率,而单片机实际上是顺序执行的。但纯cpld/fpga也有一定的缺点,首先其时序控制能力不如单片机,因为其具备并行执行,一方面使得其可以进行高效的运行,但另一方面也使得其时序困难需要考虑方方面面的问题。设计者需要充分考虑执行过程中时序关系对信号的影响。cpld/fpga的设计必须遵循真实存在的电路,所以当使用cpld/fpga来生成运算单元时十分麻烦,需要构建大量的硬件运算电路,会浪费其内部的资源,各种数据处理的算法实现也较为困难。技术实现要素:因此,本发明的目的是为克服现有技术中的上述问题,提供一种基于fpga与stm32的超声波数字信号双芯处理系统及方法。具体的,基于fpga与stm32的超声波数字信号双芯处理系统,包括前置电路、a/d转换芯片,系统还包括fpga芯片、stm32芯片,所述fpga芯片包括控制单元、时序产生单元、串口发送器、fifo缓存单元,控制单元分别连接串口发送器、时序产生单元、fifo缓存单元、前置电路,时序产生单元还连接串口发送器、a/d转换芯片,fifo缓存单元还连接串口发送器、a/d转换芯片,a/d转换芯片还连接前置电路,stm32芯片连接串口发送器。进一步的,所述fpga芯片型号为xc6slx9-2ftg256c。进一步的,所述系统还包括上位机,stm32芯片通过stm32相关接口电路连接上位机。进一步的,所述系统还包括人机对话模块,所述人机对话模块包括功能键盘及液晶显示模块,功能键盘连接控制单元及stm32芯片,液晶显示模块连接stm32芯片。根据上述系统实现的基于fpga与stm32的超声波数字信号双芯处理方法,其特征在于,所述方法为:外部接收到的超声波信号经过前置电路处理后进入a/d转换芯片,fpga中的时序产生单元为a/d转换芯片提供转换时钟,a/d转换芯片的输出结果送到fifo缓存单元的输入端,fifo缓存单元的时钟与a/d转换芯片的转换时钟同步,当控制单元检测到fifo缓存单元的内容写满时,控制单元控制时序产生单元为a/d转换芯片提供时钟,串口发送器向fifo缓存单元提供与串口波特率相匹配的读取时钟,并同时禁止数据写入fifo缓存单元,然后开启串口发送器读取fifo缓存单元中的内容,通过串口通信的方式将所有数据发送给stm32芯片,发送结束后,fpga芯片中的控制单元重新允许fifo缓存单元写入,禁止读取,并允许时序产生单元为a/d转换芯片提供时钟。进一步的,所述方法还包括:stm32芯片接收到所有数据后,首先对数据进行数字滤波处理,进行波形分析,通过液晶显示模块将结果显示出来,或将波形数据上传至上位机进行进一步的数据处理。本发明的有益效果在于:本发明的基于fpga与stm32的超声波数字信号双芯处理系统及方法,克服了现有技术中的缺陷。采用fpga与stm32相结合的方式,相互取长补短,利用fpga的高效率及可编程等特点避免了过多的硬件连线。利用stm32对数据进行处理,可以利用现有的程序库对外设进行操作,十分方便。附图说明图1为本发明实施例1基于fpga与stm32的超声波数字信号双芯处理系统的结构示意图;图2是fifo存储器引脚示意图;图3是uart传输时序示意图;图4是串口发送器的整体框架图。具体实施方式下面结合附图对本发明的具体实施方式进行说明:针对现有技术的缺点,我们发现cpld/fpga与单片机直接有很强的互补性,于是采用了fpga+单片机的模式,同时针对普通单片机运算能力的不足,我们使用stm32代替普通的51单片机。系统的结构图如图1所示,图1中粗线为数据信号线,细线为170控制信号线。fpga芯片选用xilinx公司spartan6系列的xc6slx9-2ftg256c,拥有256个引脚。开发环境是xilinx公司的fpga开发平台ise。使用的语言是verilog。处理方法具体如下:外部接收到的超声波信号经过前置电路处理后进入a/d转换芯片,fpga中的时序产生单元为a/d转换芯片提供转换时钟,a/d转换芯片的输出结果送到fifo缓存单元的输入端,fifo缓存单元的时钟与a/d转换芯片的转换时钟同步,当控制单元检测到fifo缓存单元的内容写满时,控制单元控制时序产生单元为a/d转换芯片提供时钟,串口发送器向fifo缓存单元提供与串口波特率相匹配的读取时钟,并同时禁止数据写入fifo缓存单元,然后开启串口发送器读取fifo缓存单元中的内容,通过串口通信的方式将所有数据发送给stm32芯片,发送结束后,fpga芯片中的控制单元重新允许fifo缓存单元写入,禁止读取,并允许时序产生单元为a/d转换芯片提供时钟。stm32芯片接收到所有数据后,首先对数据进行数字滤波处理,进行波形分析,通过液晶显示模块将结果显示出来,或将波形数据上传至上位机进行进一步的数据处理。功能键盘用于超声波检测参数的设定,如发射脉冲宽度,间隔等。具体功能实现:fifo存储器:fifo存储器fifo是英文firstinfirstout的缩写,是一种先进先出的数据缓存器,先进入fifo的数据最先被读取出来。他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单。在传统的纯单片机方案中,fifo芯片都是外接的,而在本设计中则是直接调用xilinx公司提供的ip核,直接在fpga中生成fifo芯片。该单元引脚如图2所示,功能说明如表1所示。表1引脚名称io类型功能din[7,0]inputa/d数据的并行输入clkinput数据写入时钟(与ad采样频率一致)rstinput复位信号(高电平有效),复位后3个周期内无法进行写操作。wreninput缓存工作使能信号(高电平有效)dout[7,0]output数据输出引脚rdclkinput数据读出时钟rdeninput数据读取使能(拉高后的下个时钟周期开始工作)emptyoutput缓存可读状态标准位。低电平表示可读。高电平表示已无数据可读时序产生单元:该单元可以调用ise中的pll锁相环来实现。串口发送器:uart通信uart首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是7个或8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶校验,uart就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。在接收过程中,uart从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。uart传输时序如图3所示:串口发送器共分为3个模块:1.用于产生波特率的分频器单元。2.用于发送数据的数据发送单元3.进行全局控制的串口控制单元整体框架图如图4所示:工作流程为:发射电路发射脉冲结束,数据全部存入fifo芯片后。1.串口控制单元的请求端(req)向stm32发出请求传输信号,若stm32处于空闲可接收数据时,则通过允许传送端(allow)发出允许传送指令。2.串口控制单元通过txdata[7,0]获得fifo中的一个单元的数据,然后把数据通过outdata[7,0]送到串口发送单元,同时wrsig(传输允许端)发出一个上升沿信号。3.串口发送单元在接收到wrsig端的上升沿信号后开始将接收到的一帧数据按照波特率一位一位的移到tx端。同时将线路繁忙端(ri)置1表示繁忙。4.传输完成后,线路繁忙端(ri)置0表示空闲,而stm32接收到数据后进行数据校验,校验结果通过error端送给串口控制器。串口控制器根据ri和error信号判断是通过rdclk端更新数据,或者是命令串口发送单元重发一次数据。具体单元设计:分频器单元波特率的定义是传输的数据位与位之间间隔的时间的倒数,同时考虑到以后可能会用到串口接收单元,所以分频器将晶振50m输入时钟分频为所需波特率的16倍。设计中采用波特率为9600,所以分频系数为325。串口发送单元检测到发送命令有效并且线路空闲时将要传输的数据装入内部移位寄存器中,同时设定一个计数器,每计满16次则让移位寄存器往tx口移一位。(包括产生起始位和停止位以及奇偶校验位)。串口控制单元控制单元内部分为3个并行执行的部分。stm32相关部分负责req信号的发出,以及allow信号的判断。数据缓存部分负责更新fifo输出数据,以及将fifo中的数据取到串口控制单元中的寄存器里。串口相关部分则是接收ri以及error信号判断是否更新fifo数据到数据缓存部分中,并且发送串口发送开始信号(wrsig)。顶层文件最后将以三个模块在一个顶层文件中调用出来,并连接好相应的线就可以实现一个串口通信单元。以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1