引言

由于火控系统工作环境特殊,所需采集信号复杂多样,传统的以微控制器或PC为主的采集系统往往难以胜任。针对上述问题,提出了一种基于STM32+FPGA的数据采集系统的设计方案,该方案不仅能够完成对多路多样信号实时、精确地采集,而且具有高速信号处理和数据传输能力,具有集成化程度高、体积小、资源丰富、价格便宜等优点。

1、系统总体设计

在实际应用中,所采集的信号既有模拟信号,也有数字差分信号,并且有多通道、串并混合、数据量大等特点。为了满足需求,本文设计了图1所示的数据采集系统,它能根据需求进行6路±10V模拟信号,18路数字差分信号的采集、处理和实时传输。系统采用STM32+FPGA的组合方式,FPGA为ALTER公司的EP1K50TC144器件,由STM32417给FPGA发送控制命令,通过FPGA内部的地址译码、逻辑控制以及数据缓冲实现信号采集,并通知STM32417对数据进行读取,最后,由STM32417对得到的数据进行处理和传输。

图1  总体设计

其中,STM32F417是意法半导体公司生产的基于ARM-CoRTEX-M4架构的微控制器,内核架构先进,性能优越,主频可达168MHz,执行效率高,具有较高的运算能力及数据处理能力,拥有丰富的外设接口和扩展功能。在图1中,STM32F417与上位机之间的以太网通信,就是MII外接DP83848物理层芯片,通过相关配置后扩展实现的。

2、STM32与FPGA的接口设计

STM32F417与FPGA的接口方式有很多种,可以是串行的,也可以是并行的,考虑到FPGA在多路并行数据处理方面有明显优势[5,6],设计采用STM32F417的可变静态存储控制器(FLEXIBLESTATICMEMoRyCoNTRoLLER,FSMC)并行总线接口实现与FPGA的连接。

2.1、接口电路设计

FSMC是STM32系列采用的一种新型的存储器扩展技术,支持不同的外部存储器类型,其中就包括多种类型的静态存储器,因此,可将FPGA当成STM32F417的外部SRAM来配置,通过扩展出的数据/地址/控制三总线来实现操作,这样既能保证较快的操作速度,又具有很高的灵活性。接口电路硬件连接如图2所示。

图2  STM32F417与FPGA接口连接电路

将FPGA直接连接在STM32F417的FSMC总线上,FSMC提供了4个BANK用于连接外部不同的存储器,每个BANK有独立的片选信号,FSMC_NE3是BANK1第三区的片选信号,FSMC_NOE和FSMC_NEW分别是接口读写信号,根据应用需求,设计接口数据宽度为16位,地址线为10位,将数据线FSMC_D[15~0],地址线FSMC_A[9~0]连接到FPGA的I/O端口,寻址空间为1K字。除此之外,还有一些中断信号(INT),用于FPGA向STM32F417发送中断请求。这样FPGA就作为STM32F417的外设连接在了系统中,通过存储器读写指令就可以访问FPGA。

2.2、关于接口地址的STM32软件设计

在STM32F417内部,FSMC的一端通过内部高速总线AHB连接到内核CoRTEX-M4,另一端则是面向扩展存储器的外部总线,内部AHB总线的地址HADDR与FSMC总线地址存在一定的映射关系。FPGA连接在FSMC的BANK1第三区,HADDR总共有28根地址线(HADDR[27~0]),其中HADDR[26~27]用来对BANK1的4个区进行寻址。当PFGA使用第三区时,对应的HADDR[27∶26]等于10。当BANK1在外接16位宽度存储器时候,只有HADDR[25∶1]是有效的,对应关系变为:HADDR[25∶1](FSMC[24∶0],由此可知,接口地址FSMC_A[9~0]对应的HADDR的地址为0X68000000~0X680007FE,在进行地址读写操作时,HADDR[0]并没有用到,相当于地址右移了1位,使得每次读写操作时,函数中的地址增量都为2。

3、数据采集的FPGA实现

3.1、模拟信号采集

根据应用需求,模拟信号采集选用MAXIN公司的12位AD转换芯片MAX196。该芯片有6个单端模拟输入通道,并且其量程范围、通道选择、工作方式均编程可控,转换时间为6μS,采样速率为100KSPS,具有精度高、功耗低、开发方便等特点。

由于MAX196芯片是5V电压供电,为了解决逻辑电压匹配的问题,设计使用电压转换芯片SN74AHCT245PWLE来实现FPGA与AD的连接。由FP-GA控制AD进行信号采集,使用其内部逻辑,完成芯片的配置、中断的响应以及转换结果的缓存,FPGA内部逻辑电路如图3所示。此逻辑电路主要由AD控制模块、写缓存控制模块和双口RAM缓存3部分组成。

图3  AD采集内部逻辑电路

3.1.1、AD控制模块

AD控制模块用来完成MAX196的采集时序的控制,为了确保时序控制的准确性和连续性,设计一个状态机,如图4所示,从STATE0~STATE3依次变化,整个过程对应一次完整的采集周期,系统中所有的系统时序由外部40M有源晶振产生。

图4  AD采集控制状态机

状态机的初始状态为STATE3,控制端口默认置高,在FPGA在收到STM32F417发出的采集命令EN后,转入STATE0,输出脉冲(wR+CS)启动AD转换,并且向AD芯片写入8位控制字,完成初始化,然后,STATE1等待AD完成数据转换,转换结束时,AD产生中断信号INT,接着进入STATE2,进而输出脉冲信号(RD+CS),读取转换的结果。该过程使用VERILoGHDL语言来描述,时序仿真如图5所示。

图5  AD控制时序仿真

在实际应用中,AD的转换量程选择为±10V,双极性,使用内部转换模式,控制字后3位选择输入通道。由MAX196用户文档可知,通道0采集的控制字为0X58,假设得到的转换结果为0X3EF,为了下一步数据存储的需求,设计将数据缓存在寄存器DATA[11∶0]中,并产生一个oVER中断信号用于后期处理。

3.1.2数据缓存

缓存的设置主要是解决AD连续高速的数据采集与STM32F417数据处理周期不匹配的问题,当AD完成一个通道的数据采集时,需要对数据进行缓存,考虑到FSMC总线接口的特点,在设计中,使用FPGA内部的双口RAM完成数据缓存[10],由QUARTUSII自带的IP核生成,其中RAM的读取端连接FSMC接口,而写入端连接AD,写缓存的地址通过写缓存控制模块进行控制。

信号EN在启动AD控制模块的同时,将写缓存控制模块的地址清0,在oVER信号的触发下,地址加1,并且产生RAM写信号RAM_wE,寄存器DATA[11∶0]的数据写入RAM里,在连续6路的采集中,每一路的数据对应不同的地址,进而完成数据的缓存。时序仿真如图6所示。

图6  缓存读写时序

采集结束后,STM32F417通过读取存储地址分别得到6个通道的采集数据,进而完成下一步的数据处理和传输。

3.2、数字差分信号采集

数字差分信号的采集首先需要将差分电平转换成数字电平,选用MAXIN公司的MAX3362作为数字差分信号收发器。数字信号既有并行数据,也有串行数据,在同步触发脉冲的作用下,可通过FPGA内部逻辑电路对数据进行处理。对于15路并行数据,通过集成电路74373+74541的逻辑组合模块进行采集,在同步时钟SyNC1置高时将数据锁存至74373,而对于1路串行数据,则通过74164+74541的逻辑组合,在触发脉冲SyNC2的上升沿将数据由串行转为并行,STM32F417向对应的地址发出读指令,地址经译码后,选通缓冲器74541,从而得到相应数据。

4、系统总体流程和结果测试

系统上电后,STM32和FPGA首先进行硬件初始化,其中FPGA通过PS的方式完成配置。STM32启动定时器产生定时中断,在中断响应中,发送开始采集命令,进而启动FPGA内部逻辑电路进行信号采集控制和数据缓存,在采集结束后,STM32响应FPGA发出的结束中断请求、读取数据、处理数据并将处理后的结果打包发送至上位机,最后,上位机接收数据并显示结果。系统工作流程如下图7所示。

图7  数据采集系统流程

STM32F417通过网口将结果发送至上位机,其以太网通信是基于LwIP协议栈,利用改进后的UDP协议,实现数据实时可靠的传输。PC上位机则通过C++BULIDER平台上的TNMUDP控件完成数据的接收。采集系统在实际实验中,控制MAX196完成6个通道采集的时间为约40μS,加上读取、处理、传输和显示的时间,系统可在50μS内完成全部采集和处理,设置定时器TIM1,使其50μS中断一次,并在中断响应中再次发送采集命令,实现精确时间间隔的连续采集。

通过信号发生器,产生50Hz的正弦波,连续采集波形如图8所示。

图8  50Hz正弦信号采集

模拟通道和数字信号端口分别对给定值连续测试5000次,统计结果的误差和误码率见表1。

表1  测试误差统计

测试的结果表明,模拟通道测量误差在10MV之内,数字信号端误码率为0,系统采集精度满足设计要求。

5、结束语

本系统很好地结合了STM32微控制器和FPGA可编程器件两者的长处,利用STM32硬件中的FSMC、ETHERNETMAC、定时器等外设功能,以及FPGA灵活的逻辑可操控性,解决了系统接口设计、时序控制、组网传输等复杂问题,实现了火控系统信息多通道、多类型信号的实时采集,保证了精度高、传输快,实时处理的采集要求,为后续应用打下了良好的基础。同时,简化系统硬件设计,缩小了系统体积和开发周期,具有极高的性价比。本系统还保留了很大的灵活性,可轻松进行二次开发,组合架构可应用于不同的信号采集领域,有广阔的应用前景和参考价值。

打开APP精彩内容

点击阅读全文

stm32采集脉冲信号_基于STM32+FPGA的数据采集系统的设计与实现相关推荐

  1. stm32车牌识别_基于STM32单片机的车牌识别

    系统介绍    使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...

  2. stm32超声波扫频_基于STM32的脉冲式及扫频式超声波除垢信号源设计

    基于 STM32 的脉冲式及扫频式超声波除垢信号源设计 李连通 , 张伟光 *, 李金博 [摘 要] [摘 要] 介绍了一种基于 STM32 主控芯片产生两种不同信号源的实 现 ] 脉冲信号源可以产生 ...

  3. stm32捕获占空比_基于STM32超声波避障小车

    不管是对于初学者还是对于一个玩过单片机的电子爱好者来说,或多或少都接触到过小车项目,今天给大家介绍的的一个项目基于STM32超声波避障小车.这也是我曾经的一个课设,在此开源分享给大家,全文5000多字 ...

  4. stm32万年历流程图_基于STM32的电子万年历系统设计

    龙源期刊网 http://www.qikan.com.cn 基于 STM32 的电子万年历系统设计 作者:刘磊 来源:<科技资讯> 2015 年第 01 期 摘 要:电子万年历是集时间.日 ...

  5. stm32超声波扫频_基于STM32的超声波发生器扫频信号源的实现

    基于 STM32 的超声波发生器扫频信号源的实现 张加岭,李善波,侯颖钊,赵 杰 [摘 要] 摘要:扫频信号源采用以 STM32F103 单片机为核心,实现高精度锯 齿波扫频.由于超声波电源换能器串联 ...

  6. 基于FPGA多通道数据采集系统verilog设计

    本设计实现多通道数据采集系统,该系统包括多通道数据采集和数据传输,使用verilog语言设计. 本设计实现功能:采集8路16位的AD数据,并发送到串口助手. 该设计架构图如下: 顶层模块代码如下: m ...

  7. stm32采集脉冲信号_随机脉冲信号采集卡的设计

    在雷达.声纳及工业控制领域中的故障监测系统中,往往需要采集雷达.声纳的回波信号或故障监测系统中的故障信号.由于这些信号是随机出现的,并且这些信号的幅度.脉宽及形状相差较大.有些信号脉宽可能很窄,有的可 ...

  8. stm32的语音识别_基于STM32的嵌入式语音识别模块设计实现

    介绍了一种以ARM为核心的嵌入式语音识别模块的设计与实现.模块的核心处理单元选用ST公司的基于ARM Cortex-M3内核的32位处理器STM32F103C8T6.本模块以对话管理单元为中心,通过以 ...

  9. stm32 交换机芯片_基于STM32的全链路语音交互 - stm32/stm8 - 电子工程世界

    硬件平台:STM32F746G-DISC开发板 编译软件:KEIL 5.31 操作系统:RTX5 TCP/IP协议栈:Cyclone-TCP 语音交互平台:思必驰DUI开放平台 这里说一下使用的TCP ...

最新文章

  1. Prometheus 对比 Zabbix
  2. 一个交换程序的通用版本
  3. 机器人焊枪动作与编程实验_机器人编程实验报告.pdf
  4. JPA_@Table 注解详解
  5. 巧用词语角色:基于目标自适应图的跨目标立场检测
  6. 2010.8.12 CString最大可以多大?
  7. shell脚本每日一练(一)
  8. 视图中获取控制器中数据的方式
  9. linux查看都哪口状态,linux c 查看网口状态
  10. 联想Y9000P安装Ubuntu20.04记录
  11. java text to speech_Java TextToSpeech.speak方法代码示例
  12. 运维分级发布_运维必备制度:故障分级和处罚规范
  13. Unity UGUI-Canvas
  14. mysql show processlist整理
  15. android 实现返回键执行home键方法
  16. 微信小程序:缓存wx.getStorage
  17. sinon.stub_JavaScript测试工具对决:Sinon.js vs testdouble.js
  18. 门禁服务器故障怎样修复,门禁常见故障及解决方法
  19. pytorch版本用自己数据集复现Yolov4检测
  20. linux怎么清除防火墙规则,linux怎么查看防火墙是否开启并清除防火墙规则?

热门文章

  1. 小米回应暴力裁员;报告称安卓手机贬值速度是 iPhone 两倍;Ant Design 4.0.1 发布| 极客头条...
  2. 亚马逊的现代应用程序为何这么强大?
  3. 官宣!VS Code Python 全新功能全球首发!
  4. Visual Basic 终于要衰落了吗?
  5. 频遭黑客攻击的物联网,这里有妙招!
  6. 从初级程序员逆袭为技术大牛,你需要懂这 10 项技术!
  7. @程序员,京东面试官让你谈谈注册中心的问题!
  8. SQLite 被曝存在漏洞,数千应用受影响
  9. 威逼司机二选一,是滴滴垄断,还是嘀嗒碰瓷?
  10. 并发编程应用场景_linux网络编程之select函数的并发限制和poll函数应用举例