武建诚,吴国东,王志军,吉元峰,郝志伟
(中北大学机电工程学院,山西 太原 030051)
随着军事力量的不断发展,各种新型弹药不断问世,武器不再仅仅依靠破片杀伤目标,更多依靠爆炸生成的冲击波超压杀伤敌人[1]。准确测量炸药爆炸产生的冲击波超压和冲量,可以为武器研发中的爆炸类型判别、威力对比、毁伤效能以及地面防护提供重要依据[2]。由于在该领域中目前还不能通过解析方法和数值模拟方法精确计算冲击波超压值[3],因此通过实测方法得到冲击波参数值是最为重要和有效的途径[4]。
传统的冲击波测试主要是通过物理学(如靶板法、压力罐法、生物试验法等)方法将事先标定好的物品或特定的生物体放入爆炸场中,等试验结束后通过观察被测物品的损伤程度来确定冲击波的毁伤效应[5-6],但是该方法只能得出冲击波压力的大体范围,不能准确地给出冲击波的压力峰值及其持续时间。引线电测法组建系统简单易行,得到了较为普遍的应用[7],但因传感器和后续记录仪表分离,其间的长电线成为测试系统防护的薄弱环节,被弹片击中或信号漂移等因素致使测试失效的现象时有发生,数据捕获率低[8],且在复杂的试验环境中会遇到调试、安装不便以及人员安全性的问题[9]。针对当前测试方法的不足,设计了基于FPGA+ARM的冲击波超压测试系统。
当进行战斗部爆破试验时,安全风险较大,整个过程中操作人员需撤离到距待测点数公里外的安全区域,无法近距离对数据采集设备进行操作,因此本文提出基于FPGA+ARM的冲击波超压测试系统。该系统可对信号进行实时监测,获得准确的冲击波超压信号,并进行数据的在线传输与保存,实现在线与离线两种采集方式。
选用RTL8211EG设计以太网接口,在线采集时FPGA控制千兆网卡进行原始数据的实时传输。选用USB3300芯片设计USB2.0接口,离线采集时,系统采集的数据存储在ARM端的SD卡,采集结束后可通过USB2.0接口导出作后续处理,为进一步的毁伤效能研究提供数据支撑。离线采集功能使得试验安全性更高,保证了操作者的安全,可以应对复杂的试验环境。
该系统采用模块化进行设计,后续可以根据试验要求进行系统扩展,设计中选择江苏联能型号为CY-YD-205的传感器负责冲击波超压信号的采集。压力灵敏度为100 pC/MPa,测压范围0~30 MPa(0~60 MPa可选)。传感器信号送交AD9226进行模数转换,转换速度可达65 Ms/s。FPGA采用SPARTAN6系列的XC6SLX16-2CSG324,并加入128 MB的DDR3 SDRAM作为数据缓冲器。ARM主芯片选择STM32F407,FPGA与STM32通过可变静态存储控制器(FSMC)接口连接。整体结构框图如图1所示。
图1 系统硬件总体框图Fig.1 Overall block diagram of system hardware
根据设计要求和目的,该系统的整体功能有:
1) FPGA具有高度并行数据处理能力,丰富的接口资源,可保证对冲击波超压采集的并行性和实用性,选用其作为主控制器可实现对A/D转换,千兆网卡数据传输, FSMC接口与ARM端进行数据交换的逻辑控制。
2) 为了保证数据传输的高速可靠,选用DDR3 SDRAM大容量高速缓存设备,可以解决数据存储容量不足以及速度过慢问题,同时解决与千兆网卡进行数据传输时的丢包问题。
3) ARM具有强大的数据处理及进程运行能力,负责利用FSMC接口读取FPGA采集到的多路数据并进行存储。
AD9226的芯片电压范围为1~3 V,信号输入端的电压范围为-5~+5 V,为使芯片正常工作,在A/D模块加入高性能运算放大器AD8065设计信号调理电路[10]。作为电压反馈型的单路放大器,电路设计方便,工作时产生的噪声干扰很低,性能出色,性价比高[11]。信号调理电路的转换公式如下:
Vout=(1/5)Vin+2,
(1)
式(1)中,当输入电压为-5 V时,计算可得输出电压为1 V;同理,输入电压为5 V时,输出电压为3 V;1~3 V的输入电压可以保证系统芯片的正常运行。
系统在进行冲击波超压信号采集时,如果将数据直接传递给上位机,数据溢出以及丢失的问题会相当严重,FPGA利用其I/O接口众多的优势,连接高速DDR3 SDRAM作为外部缓存设备,型号为MT41J64M16LA-187E,拥有128 MB的存储容量,16 b总线。
由于前端数据采集和后端数据存储的时钟域不同,数据在不同的时钟域间传递容易引起亚稳态问题,同时为了在读写时无需操作复杂时序,设计异步FIFO来缓冲数据。在系统进行数据采集时,多通道的数据信号首先在异步FIFO中进行缓存,然后通过FPGA的数据读写控制模块,最后经过DDR3 SDRAM的内存控制器IP核将数据缓存到DDR3 SDRAM的相应地址区域,当收到数据读取命令时,从DDR3 SDRAM中读取所需数据,通过相应的FIFO将数据读出。DDR3 SDRAM的数据读写逻辑方案如图2所示。
图2 DDR3 SDRAM的系统逻辑方案Fig.2 System logic scheme of DDR3 SDRAM
FPGA与STM32间的数据交换需要很高的传输速度,并尽可能要求配置灵活,采用新型存储器扩展技术——FSMC可以很好地满足这样的接口要求。在FSMC中,外接存储器被划分为4个大小均为256 MB的区域,不同的控制管理器负责不同的BANK区域,根据不同的存储设备类型选择相应的映射位置。FPGA与ARM进行数据通信时,将FPGA看作Bank1中的一段内存,起始地址为0x60 000 000,通过扩展出的数据/地址/控制三总线来实现操作。STM32与FPGA的硬件连接如图3所示。FPGA作为STM32的外设接入,通过存储器读写指令访问FPGA。
图3 FPGA与STM32连接原理图Fig.3 Connection schematic between FPGA and STM32
FSMC作为衔接CPU与外部存储的桥梁,往相应的地址里写数据时,不需要软件来模拟外部存储芯片的读写时序,只需对FSMC相关时序寄存器进行配置,就可以进行相关的数据读写,操作灵活方便。以STM32的控制信号为基础,进行FPGA端的时序设计。对于STM32,FSMC有四种扩展模式:A、B、C和D,读写操作可以通过混合这四种模式来执行。在进行程序设计时,采用A模式用于读写。如图4所示,图4(a)是读取时序图,图4(b)是写入时序图。
图4 模式A读写时序图Fig.4 Pattern A read-write timing diagram
系统选用RTL8211EG芯片设计以太网接口用于将FPGA采集到的数据实时传输至上位机,与FPGA之间采用并行通讯,接收时钟信号由网卡芯片提供,发送时钟信号由FPGA芯片提供,时钟上升沿触发采样进行数据的接收和发送。系统进行在线采集时,FPGA与千兆网卡通过GMII总线和网卡芯片进行数据交互,最后将数据通过网线传递到上位机。采集启动后,先发送预设的UDP数据到网络,如果FPGA检测到从网络端口发送的UDP数据包,接收到的数据包会通过写FIFO将数据存储到FPGA内部的DDR3 SDRAM中,然后通过网络端口将DDR3 SDRAM中的数据包连续发送回以太网。千兆以太网与上位机数据传输的逻辑框图如图5所示。
收到发送指令后,数据首先从DDR3 SDRAM存储器中发送到异步FIFO中,并进行存储;其次经过MAC层,进行UDP信息,以太帧信息和CRC信息的添加,使数据转换为符合以太网标准的以太帧数据;最后转换为GMII接口数据,传递到PHY端,通过千兆网线将上位机与RJ45接口进行连接,便可以进行数据的传输。数据接收时,GMII 接口接收的数据在MAC层进行数据帧CRC校验以及UDP的接收,将数据进行筛选,获得有效数据后,将数据传输到FIFO中缓存,最后存入DDR3 SDRAM。
图5 千兆网卡数据传输逻辑图Fig.5 Gigabit network card data transmission logic diagram
对于采集的大量数据需要可靠的存储器将其存储,便于进一步的数据导出与分析。
SD存储卡作为常用的存储设备,具有体积小、传输速度快、存储容量大等优点,满足冲击波超压数据采集系统的内存需求。离线采集结束后,数据被保存在ARM中的SD卡,设计UART和USB2.0两个接口与上位机进行数据传输。该设计使数据采集系统更加完善,提高了数据采集系统应用的广泛性与灵活性。
USB接口是目前较为常用的通讯接口方式,USB2.0的传输速度远远高于串口的传输速度,且在上位机软件开发方面对于开发者有着极大的便利,如API接口技术成熟、操作系统支持、资料齐全等。目前Windows操作系统已经装有HID类设备的驱动程序,当USB设备与电脑主机进行连接后,主机会向设备请求各种描述符来识别设备。STM32通过外接高速USB芯片USB3300芯片实现高速数据传输。
程序设计中,STM32模块作为一个受PC机控制的HID设备,与主机配合完成设备的枚举和数据传输的方向和大小。STM32的 USB 程序主要包含三个部分:USB 控制器初始化、主机请求响应和通讯数据收发。其中 USB控制初始化包括端点的使能、中断方式、数据缓存设置等,至少需要响应获取描述符、设置地址、设置配置、设置闲置四种请求; 通讯数据收发主要是以中断的方式向数据缓冲区读写数据。
完成系统初步设计之后,对相关模块进行测试,主要包括A/D数据采集模块测试、DDR3 SDRAM时序分析,然后将各模块进行系统连接,并进行在线与离线采集试验,以验证该系统的可靠性。
以ISE作为FPGA芯片仿真环境,将编译生成的bit文件烧写到FPGA芯片进行编译运行,信号发生器与A/D模块的一个采集通道相连接,输入频率2 kHz,峰-峰值4 V的正弦波形信号,打开Chipscope查看通道1的波形显示如图6所示。AD9226数据采集准确,该设计可以完成数据采集任务。
图6 Chipscope波形显示Fig.6 Chipscope waveform display
将DDR3 SDRAM的读写程序烧写完成后,使用 Chipscope在线调试工具对数据的读写结果进行验证,结果如图7所示。DDR3 SDRAM的读写状态稳定,可以很好地实现数据的写入与读出,满足系统的设计要求。
图7 DDR3 SDRAM数据读写Fig.7 DDR3 SDRAM data read and write
将系统各模块拼装,进行在线采集功能测试,将程序通过仿真器烧写完成以后,断开仿真器,信号发生器与A/D模块相连接,输入正弦波形,峰-峰值设置为4 V(-2~2 V), 正弦波频率为1 kHz,通过网线将千兆网卡与PC端相连接,移动电源进行供电,打开PC端的示波软件,波形显示与信号发生器的波形相同,证明数据采集系统的在线采集功能可靠。具体实验过程如图8所示。
图8 在线采集功能测试Fig.8 Online acquisition function test
为了验证系统离线采集功能,采集系统与PCB恒流源放至于坚固的外壳中,置于试验场挖掘的土坑中,将采集程序提前烧写,系统可以实时监测信号,并进行数据的保存。试验结束后,使用USB接口将ARM中的数据导出,系统的采集结果部分曲线如图9所示。可以看出,该系统可以完成冲击波超压的离线采集,符合设计需求。
图9 冲击波超压测试结果曲线Fig.9 Curve of shock wave overpressure test results
本文提出基于FPGA+ARM的冲击波超压测试系统。该系统采用模块化进行设计, FPGA控制A/D模块并行采集,将数据通过千兆以太网实时传输至上位机,同时设计USB2.0接口进行数据导出,实现对冲击波超压的在线与离线采集。测试验证结果表明,该系统的在线与离线采集功能可靠,可以实现对冲击波超压数据的实时采集与存储。