基于STM32+FPGA的数据采集系统的设计与实现

FPGA/ASIC技术

201人已加入

描述

引言

由于火控系统工作环境特殊,所需采集信号复杂多样,传统的以微控制器或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阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_27080007 2023-03-25
0 回复 举报
有例程吗 收起回复
卡夫. 2022-09-08
0 回复 举报
博主写的太好了,解答了我的困惑 收起回复
全部评论

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分