涡流检伤信号高速实时采集系统的研究
2018-01-04彭乐锋
刘 康,彭乐锋,刘 继
涡流检伤信号高速实时采集系统的研究
刘 康,彭乐锋,刘 继
(同济大学铁道与城市轨道交通研究院,上海201800)
涡流无损检测在近年来取得了很大的发展,在工业检测领域有着重要的应用。作为涡流探伤设备的重要环节,高速信号实时采集传输模块的速度的稳定性通常是设备的瓶颈所在。硬件平台采用Xilinx公司的Zynq SoC,同时集成软件平台基于Linux操作系统,通过AXI DMA传输FIFO的涡流检伤数据到DDR内存,供上位机用户程序使用。比较轮询和中断两种机制启动AXI DMA,确定中断方式可以实现实时采集和处理而无数据丢失情况。同时Linux驱动中断处理程序采用Netlink消息机制通知用户程序启动AXI DMA。经测试,该涡流信号采集系统传输速度和稳定性满足性能要求。
涡流检测;Zynq片上系统;片内扩展总线;直接内存存取;中断;Netlink套接字
1 引 言
电磁涡流检测是一种重要的无损检测技术,已广泛用于现代工业领域,具有结构简单、灵敏度高、频率特性好、可非接触性测量和易于实现自动化等特点[1]。针对电磁涡流检测中数据采集量大、实时性要求高的特点,设计一个新型涡流信号高速实时采集系统十分必要。
目前的涡流无损探伤设备的设计方案大都基于FPGA+ARM+上位机架构方案,FPGA实现DDS输出激励信号,并承担涡流数据采集的任务,ARM承担缺陷评估和IO模块控制功能并通过TCP协议和上位机通信,而上位机承担人机交互,离线数据存储的功能[2];或者加入DSP芯片,用来实现数据滤波的功能[3]。这些方案都面临着研发周期长,底层硬件方案复杂,ARM或者DSP和FPGA之间数据传输慢、不稳定等问题。随着工业自动化水平不断提高,对涡流探伤设备的高速实时采集和处理要求也不断提高,提出一种基于Zynq SoC的涡流信号高速实时采集系统。Zynq SoC同时集成双核ARM和FPGA,打破了传统的ARM/DSP+FPGA核架构,提供一种新型解决方案[4]。
2 平台设计
2.1 Xilinx Zynq-7000 SoC
Xilinx Zynq-7000 SoC集成两个主频高达1GHz的ARM Cortex-A9内核和FPGA,每个内核都配有NEON高性能媒体引擎进行浮点运算,可用于数学运算或者视频编码解码。ARM配有AMBA开放总线互联端口,可以通过AXI片内高速总线互联和FPGA通信,带宽速度高达100Gbps。ARM带有DDR内存控制器硬核,支持最大1GB地址空间,支持64MB的TrustZone安全认证区域,支持DDR3、DDR3L、DDR2等多种内存,适合用作系统的高速存储[5]。
2.2 AXI总线
AXI(Advanced eXtensible Interface)是一种总线协议,是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。随后ARM公司推出的升级版本AMBA 4.0总线包括AXI、AXI-Lite、AXI-Stream三种标准。其中 AXI-Lite是AXI的简化版本,用于访问低速外设,AXI-Stream进行数据传输的时候不需要地址,适用于视频,高速AD,PCIe等需要高速流数据传输的场合[6]。
AXI3,AXI4和AXI4-Lite基于内存映射协议,所有的传输都是在系统内存空间实现的。由于内存映射系统的一致性,通过AXI-GP或者AXI-HP端口连接到PS系统总线的IP核,它的控制寄存器直接映射到指定的PS系统内存地址上。这也是ZYNQ实现PS(Process System)控制PL(Programmable Logic)的根本原因。系统整体框架如图1所示,由AXI总线在其中的地位可知,它是连接PS和PL的核心技术。
图1 涡流信号高速采样系统整体框架
2.3 系统框架
从图1可见,A/D转换器采集到的涡流信号,经过相敏检波后进入FIFO,AXIDMA通过AXI-HP0端口将FIFO数据送到DDR,ARM从DDR获取数据,进行进一步处理。
软件流程步骤:
1.用户空间启动程序,CPU向FIFO控制IP核发送开启指令,经过相敏检波后的涡流数据被允许进入FIFO,同时FIFO累加器开始累加进入FIFO的数据量;
2.当累加器的值达到预先设置的阈值时,FIFO控制IP核发通过gic(通用中断控制器)向CPU发送中断,并自动清空自身累加的值,但FIFO内的数据仍然存在;
3.CPU接收到中断时,启动AXIDMA传输,将FIFO数据迁移到指定DDR内存地址;
4.传输结束后,处理DDR内存对应地址的数据,应用程序进行数据滤波后显示阻抗平面图;
5.关闭程序时,CPU向FIFO控制IP核发送关闭指令,禁止数据流进入FIFO。
3 AXIDMA高速传输流程
AXI DMA是Xilinx官方提出的用于高速数据传输的IP核,可以实现双向数据传输,最大传输速度可以达到300 MB/s[7]。同时ARM可以通过AXI-Lite端口控制AXIDMA的运行并获取传输状态。
用户空间初始化AXIDMA步骤:
1.打开设备文件;
2.使用mmap()进行内存映射,底层驱动会将驱动初始化申请的内存地址传递给用户空间;
3.探测AXIDMA的通道数目,发送通道和接收通道视为不同的通道;
4.设置AXI DMA-0接收通道的基本参数,比如传输方向,延时时间,复位状态。
用户空间在接收到Netlink消息后,启动DMA传输步骤:
1.设置缓存的信息,比如缓存长度,起始偏移,传输方向,缓存对应的通道;
2.启动AXIDMA-0的接收通道,在接收完成后发送完成信号。
内核态AXIDMA驱动启动一次传输的步骤如图4所示。
图2 AXIDMA驱动传输步骤
在满负荷状态下,进行AXIDMA自收自发测试,可以看到满载传输速度为250MB/s。在测试涡流数据传输时,设置数据量分别为64KB、1MB以及4MB,检测到传输速度分别为285MB/s、279MB/s和269MB/s。同时程序持续运行6h没有崩溃,满足涡流数据高速传输和稳定性的要求。
4 中断和轮询方案实时性比较
AXIDMA的启动有两种方案:PL端FIFO中断通知用户程序启动AXIDMA或者用户程序定时查询中断状态位寄存器并启动AXIDMA。由于相敏检波数据量的大小会根据用户设置的参数变化,轮询机制无法准确判断FIFO中断状态寄存器的状态,可能导致FIFO溢出,数据丢失。而中断机制可以保证用户程序及时收到通知。如图3所示为分别使用中断和轮询方案进行涡流探伤曲线。
图3 轮询和中断方案涡流探伤曲线
5 异步通信机制Netlink
中断方案需要在驱动的中断处理函数中通知用户程序。由于中断上下文不能允许引起阻塞的函数,因此传统的copy_from_user()和copy_to_user()不能使用,因为调用might_sleep(),可能导致睡眠。Netlink是一种在内核与用户程序之间进行双向数据传输的非常好的方式,用户态使用标准的socket API就可以使用Netlink提供的强大功能;内核态需要使用专门的API来使用Netlink。
Netlink套接字的通信依据是一个对应于进程的标识,一般定为该进程的ID。Netlink通信最大的特点是对中断过程的支持,它在内核空间接收用户空间数据时不再需要用户自行启动一个内核线程,而是通过另一个软中断调用用户事先指定的接收函数。通过软中断而不是自行启动内核线程保证了数据传输的及时性[8]。
和其他通信机制相比,Netlink有如下优点:
1.支持全双工通信,由于套接字的全双工特性,一条Netlink连接可以同时用于用户空间和内核空间的互传消息;
2.Netlink支持多播,属于一个Netlink组的模块和进程都能获得该多播消息;
3.采用异步通信机制,基于socket缓存队列;
4.内核可以使用Netlink首先发起会话,而系统调用和ioctl只能由用户程序发起调用。
如图4所示为利用Netlink通信通知AXIDMA启动一次传输的步骤。
图4 Netlink通信启动AXIDMA传输
通过比较内核发送消息的时间和用户程序接收到消息的时间,可以得到Netlink通信的延迟时间。经测试,采用Netlink通信的延迟在1ms以内,满足通信实时性的要求。
6 结束语
基于ZYNQSoC的高速实时采集系统,完全可以代替传统的DSP/ARM+FPGA架构。将ZYNQSoC运用到涡流探伤设备上,PL端实现DDS激励信号发生器,数据采集和相敏检波等功能,PS端实现数据滤波,阻抗平面图绘制,数据传输通过AXIDMA实现,传输速度达到250MB/s,满足高速涡流信号的传输要求,同时基于Netlink的异步通信机制满足实时性要求,实现了更高效、更节省的解决方案。
[1] 张俊哲.无损检测技术及其应用:第2版[M].北京:科学出版社,2010.Zhang Junzhe.The Nondestructive Testing and Its Application:2nd Edition[M].Beijing:China Science Publishing Media,2010.
[2] 吕世磊.高速在线涡流探伤系统的设计与实现[D].华东理工大学,2015.Lv Shilei.Design and Implementation of High-speed Online Eddy Current Testing System [D].East China University of Scienceand Technology,2015.
[3]刘增.嵌入式双CPU脉冲涡流检测数据采集系统的设计与实现[D].江苏科技大学,2012.Liu Zeng.Design and Implementation of Pulse Eddy Current Testing Data Acquisition System Based on Embedded Dual-CPU[D].Jiangsu Universityof Scienceand Technology,2012.
[4] Louise Crockett,Ross Elliot,Martin Enderwitz.The ZYNQ Book:1st Edition[M].UK :Strathclyde Academic Media,2014.[5] Xilinx Inc.ug585-Zynq-7000-TRM(EB/OL).http://www.origin.xilinx-china.com/.2016.09.27.
[6] Xilinx Inc.ug1037-vivado-axi-reference-guide(EB/OL).http://www.origin.xilinx-china.com/.2105.06.24.
[7] Xilinx Inc.pg021_axi_dma(EB/OL).http://www.origin.xilinx-china.com/.2106.10.05.
[8]Campbell J,Comer D.Software:Practiceand Experience[M].John Wiley&Sons,1991.
Research on High-speed and Real-time Eddy Current Data Acquisition System
In recent years,eddy current nondestructive testing has made great progress,and has an important application in the industrial inspection field.As an important part of eddy current testing instrument,the speed stability of high-speed signal real-time acquisition and transmission module is usually the bottleneck of the equipment operation.Zynq SoC from Xilinx Company is chosen as the hardware platform,while the software platform is based on Linux operation system,and through AXI DMA,FIFO eddy current test data is transferred to DDR memory to supply upper computer user program for use.By comparing the two mechanism of polling and interrupt to start AXI DMA,it is determined that the interrupt method can anchieve the real-time acquistion and disposal without data loss.At the same time,Netlink message mechanism is chosen by Linux diver interrupt disposal program to inform user program to start AXI DMA.After test,it is proved that the speed and stability of this eddy current signal acquisition system can meet the performance requirement.
Eddy current testing;Zynq SoC;AXI;DMA;Interrupt;Netlink socket
10.3969/j.issn.1002-2279.2017.06.020
TP277
A
1002-2279-(2017)06-0086-04
刘康(1994—),男,湖北省黄石市人,硕士研究生在读,主研方向:无损检测。
2017-09-18