劉 康,彭樂(lè)鋒,劉 繼
渦流檢傷信號(hào)高速實(shí)時(shí)采集系統(tǒng)的研究
劉 康,彭樂(lè)鋒,劉 繼
(同濟(jì)大學(xué)鐵道與城市軌道交通研究院,上海201800)
渦流無(wú)損檢測(cè)在近年來(lái)取得了很大的發(fā)展,在工業(yè)檢測(cè)領(lǐng)域有著重要的應(yīng)用。作為渦流探傷設(shè)備的重要環(huán)節(jié),高速信號(hào)實(shí)時(shí)采集傳輸模塊的速度的穩(wěn)定性通常是設(shè)備的瓶頸所在。硬件平臺(tái)采用Xilinx公司的Zynq SoC,同時(shí)集成軟件平臺(tái)基于Linux操作系統(tǒng),通過(guò)AXI DMA傳輸FIFO的渦流檢傷數(shù)據(jù)到DDR內(nèi)存,供上位機(jī)用戶程序使用。比較輪詢和中斷兩種機(jī)制啟動(dòng)AXI DMA,確定中斷方式可以實(shí)現(xiàn)實(shí)時(shí)采集和處理而無(wú)數(shù)據(jù)丟失情況。同時(shí)Linux驅(qū)動(dòng)中斷處理程序采用Netlink消息機(jī)制通知用戶程序啟動(dòng)AXI DMA。經(jīng)測(cè)試,該渦流信號(hào)采集系統(tǒng)傳輸速度和穩(wěn)定性滿足性能要求。
渦流檢測(cè);Zynq片上系統(tǒng);片內(nèi)擴(kuò)展總線;直接內(nèi)存存??;中斷;Netlink套接字
電磁渦流檢測(cè)是一種重要的無(wú)損檢測(cè)技術(shù),已廣泛用于現(xiàn)代工業(yè)領(lǐng)域,具有結(jié)構(gòu)簡(jiǎn)單、靈敏度高、頻率特性好、可非接觸性測(cè)量和易于實(shí)現(xiàn)自動(dòng)化等特點(diǎn)[1]。針對(duì)電磁渦流檢測(cè)中數(shù)據(jù)采集量大、實(shí)時(shí)性要求高的特點(diǎn),設(shè)計(jì)一個(gè)新型渦流信號(hào)高速實(shí)時(shí)采集系統(tǒng)十分必要。
目前的渦流無(wú)損探傷設(shè)備的設(shè)計(jì)方案大都基于FPGA+ARM+上位機(jī)架構(gòu)方案,F(xiàn)PGA實(shí)現(xiàn)DDS輸出激勵(lì)信號(hào),并承擔(dān)渦流數(shù)據(jù)采集的任務(wù),ARM承擔(dān)缺陷評(píng)估和IO模塊控制功能并通過(guò)TCP協(xié)議和上位機(jī)通信,而上位機(jī)承擔(dān)人機(jī)交互,離線數(shù)據(jù)存儲(chǔ)的功能[2];或者加入DSP芯片,用來(lái)實(shí)現(xiàn)數(shù)據(jù)濾波的功能[3]。這些方案都面臨著研發(fā)周期長(zhǎng),底層硬件方案復(fù)雜,ARM或者DSP和FPGA之間數(shù)據(jù)傳輸慢、不穩(wěn)定等問(wèn)題。隨著工業(yè)自動(dòng)化水平不斷提高,對(duì)渦流探傷設(shè)備的高速實(shí)時(shí)采集和處理要求也不斷提高,提出一種基于Zynq SoC的渦流信號(hào)高速實(shí)時(shí)采集系統(tǒng)。Zynq SoC同時(shí)集成雙核ARM和FPGA,打破了傳統(tǒng)的ARM/DSP+FPGA核架構(gòu),提供一種新型解決方案[4]。
Xilinx Zynq-7000 SoC集成兩個(gè)主頻高達(dá)1GHz的ARM Cortex-A9內(nèi)核和FPGA,每個(gè)內(nèi)核都配有NEON高性能媒體引擎進(jìn)行浮點(diǎn)運(yùn)算,可用于數(shù)學(xué)運(yùn)算或者視頻編碼解碼。ARM配有AMBA開(kāi)放總線互聯(lián)端口,可以通過(guò)AXI片內(nèi)高速總線互聯(lián)和FPGA通信,帶寬速度高達(dá)100Gbps。ARM帶有DDR內(nèi)存控制器硬核,支持最大1GB地址空間,支持64MB的TrustZone安全認(rèn)證區(qū)域,支持DDR3、DDR3L、DDR2等多種內(nèi)存,適合用作系統(tǒng)的高速存儲(chǔ)[5]。
AXI(Advanced eXtensible Interface)是一種總線協(xié)議,是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0協(xié)議中最重要的部分,是一種面向高性能、高帶寬、低延遲的片內(nèi)總線。隨后ARM公司推出的升級(jí)版本AMBA 4.0總線包括AXI、AXI-Lite、AXI-Stream三種標(biāo)準(zhǔn)。其中 AXI-Lite是AXI的簡(jiǎn)化版本,用于訪問(wèn)低速外設(shè),AXI-Stream進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候不需要地址,適用于視頻,高速AD,PCIe等需要高速流數(shù)據(jù)傳輸?shù)膱?chǎng)合[6]。
AXI3,AXI4和AXI4-Lite基于內(nèi)存映射協(xié)議,所有的傳輸都是在系統(tǒng)內(nèi)存空間實(shí)現(xiàn)的。由于內(nèi)存映射系統(tǒng)的一致性,通過(guò)AXI-GP或者AXI-HP端口連接到PS系統(tǒng)總線的IP核,它的控制寄存器直接映射到指定的PS系統(tǒng)內(nèi)存地址上。這也是ZYNQ實(shí)現(xiàn)PS(Process System)控制PL(Programmable Logic)的根本原因。系統(tǒng)整體框架如圖1所示,由AXI總線在其中的地位可知,它是連接PS和PL的核心技術(shù)。
圖1 渦流信號(hào)高速采樣系統(tǒng)整體框架
從圖1可見(jiàn),A/D轉(zhuǎn)換器采集到的渦流信號(hào),經(jīng)過(guò)相敏檢波后進(jìn)入FIFO,AXIDMA通過(guò)AXI-HP0端口將FIFO數(shù)據(jù)送到DDR,ARM從DDR獲取數(shù)據(jù),進(jìn)行進(jìn)一步處理。
軟件流程步驟:
1.用戶空間啟動(dòng)程序,CPU向FIFO控制IP核發(fā)送開(kāi)啟指令,經(jīng)過(guò)相敏檢波后的渦流數(shù)據(jù)被允許進(jìn)入FIFO,同時(shí)FIFO累加器開(kāi)始累加進(jìn)入FIFO的數(shù)據(jù)量;
2.當(dāng)累加器的值達(dá)到預(yù)先設(shè)置的閾值時(shí),F(xiàn)IFO控制IP核發(fā)通過(guò)gic(通用中斷控制器)向CPU發(fā)送中斷,并自動(dòng)清空自身累加的值,但FIFO內(nèi)的數(shù)據(jù)仍然存在;
3.CPU接收到中斷時(shí),啟動(dòng)AXIDMA傳輸,將FIFO數(shù)據(jù)遷移到指定DDR內(nèi)存地址;
4.傳輸結(jié)束后,處理DDR內(nèi)存對(duì)應(yīng)地址的數(shù)據(jù),應(yīng)用程序進(jìn)行數(shù)據(jù)濾波后顯示阻抗平面圖;
5.關(guān)閉程序時(shí),CPU向FIFO控制IP核發(fā)送關(guān)閉指令,禁止數(shù)據(jù)流進(jìn)入FIFO。
AXI DMA是Xilinx官方提出的用于高速數(shù)據(jù)傳輸?shù)腎P核,可以實(shí)現(xiàn)雙向數(shù)據(jù)傳輸,最大傳輸速度可以達(dá)到300 MB/s[7]。同時(shí)ARM可以通過(guò)AXI-Lite端口控制AXIDMA的運(yùn)行并獲取傳輸狀態(tài)。
用戶空間初始化AXIDMA步驟:
1.打開(kāi)設(shè)備文件;
2.使用mmap()進(jìn)行內(nèi)存映射,底層驅(qū)動(dòng)會(huì)將驅(qū)動(dòng)初始化申請(qǐng)的內(nèi)存地址傳遞給用戶空間;
3.探測(cè)AXIDMA的通道數(shù)目,發(fā)送通道和接收通道視為不同的通道;
4.設(shè)置AXI DMA-0接收通道的基本參數(shù),比如傳輸方向,延時(shí)時(shí)間,復(fù)位狀態(tài)。
用戶空間在接收到Netlink消息后,啟動(dòng)DMA傳輸步驟:
1.設(shè)置緩存的信息,比如緩存長(zhǎng)度,起始偏移,傳輸方向,緩存對(duì)應(yīng)的通道;
2.啟動(dòng)AXIDMA-0的接收通道,在接收完成后發(fā)送完成信號(hào)。
內(nèi)核態(tài)AXIDMA驅(qū)動(dòng)啟動(dòng)一次傳輸?shù)牟襟E如圖4所示。
圖2 AXIDMA驅(qū)動(dòng)傳輸步驟
在滿負(fù)荷狀態(tài)下,進(jìn)行AXIDMA自收自發(fā)測(cè)試,可以看到滿載傳輸速度為250MB/s。在測(cè)試渦流數(shù)據(jù)傳輸時(shí),設(shè)置數(shù)據(jù)量分別為64KB、1MB以及4MB,檢測(cè)到傳輸速度分別為285MB/s、279MB/s和269MB/s。同時(shí)程序持續(xù)運(yùn)行6h沒(méi)有崩潰,滿足渦流數(shù)據(jù)高速傳輸和穩(wěn)定性的要求。
AXIDMA的啟動(dòng)有兩種方案:PL端FIFO中斷通知用戶程序啟動(dòng)AXIDMA或者用戶程序定時(shí)查詢中斷狀態(tài)位寄存器并啟動(dòng)AXIDMA。由于相敏檢波數(shù)據(jù)量的大小會(huì)根據(jù)用戶設(shè)置的參數(shù)變化,輪詢機(jī)制無(wú)法準(zhǔn)確判斷FIFO中斷狀態(tài)寄存器的狀態(tài),可能導(dǎo)致FIFO溢出,數(shù)據(jù)丟失。而中斷機(jī)制可以保證用戶程序及時(shí)收到通知。如圖3所示為分別使用中斷和輪詢方案進(jìn)行渦流探傷曲線。
圖3 輪詢和中斷方案渦流探傷曲線
中斷方案需要在驅(qū)動(dòng)的中斷處理函數(shù)中通知用戶程序。由于中斷上下文不能允許引起阻塞的函數(shù),因此傳統(tǒng)的copy_from_user()和copy_to_user()不能使用,因?yàn)檎{(diào)用might_sleep(),可能導(dǎo)致睡眠。Netlink是一種在內(nèi)核與用戶程序之間進(jìn)行雙向數(shù)據(jù)傳輸?shù)姆浅:玫姆绞?,用戶態(tài)使用標(biāo)準(zhǔn)的socket API就可以使用Netlink提供的強(qiáng)大功能;內(nèi)核態(tài)需要使用專(zhuān)門(mén)的API來(lái)使用Netlink。
Netlink套接字的通信依據(jù)是一個(gè)對(duì)應(yīng)于進(jìn)程的標(biāo)識(shí),一般定為該進(jìn)程的ID。Netlink通信最大的特點(diǎn)是對(duì)中斷過(guò)程的支持,它在內(nèi)核空間接收用戶空間數(shù)據(jù)時(shí)不再需要用戶自行啟動(dòng)一個(gè)內(nèi)核線程,而是通過(guò)另一個(gè)軟中斷調(diào)用用戶事先指定的接收函數(shù)。通過(guò)軟中斷而不是自行啟動(dòng)內(nèi)核線程保證了數(shù)據(jù)傳輸?shù)募皶r(shí)性[8]。
和其他通信機(jī)制相比,Netlink有如下優(yōu)點(diǎn):
1.支持全雙工通信,由于套接字的全雙工特性,一條Netlink連接可以同時(shí)用于用戶空間和內(nèi)核空間的互傳消息;
2.Netlink支持多播,屬于一個(gè)Netlink組的模塊和進(jìn)程都能獲得該多播消息;
3.采用異步通信機(jī)制,基于socket緩存隊(duì)列;
4.內(nèi)核可以使用Netlink首先發(fā)起會(huì)話,而系統(tǒng)調(diào)用和ioctl只能由用戶程序發(fā)起調(diào)用。
如圖4所示為利用Netlink通信通知AXIDMA啟動(dòng)一次傳輸?shù)牟襟E。
圖4 Netlink通信啟動(dòng)AXIDMA傳輸
通過(guò)比較內(nèi)核發(fā)送消息的時(shí)間和用戶程序接收到消息的時(shí)間,可以得到Netlink通信的延遲時(shí)間。經(jīng)測(cè)試,采用Netlink通信的延遲在1ms以內(nèi),滿足通信實(shí)時(shí)性的要求。
基于ZYNQSoC的高速實(shí)時(shí)采集系統(tǒng),完全可以代替?zhèn)鹘y(tǒng)的DSP/ARM+FPGA架構(gòu)。將ZYNQSoC運(yùn)用到渦流探傷設(shè)備上,PL端實(shí)現(xiàn)DDS激勵(lì)信號(hào)發(fā)生器,數(shù)據(jù)采集和相敏檢波等功能,PS端實(shí)現(xiàn)數(shù)據(jù)濾波,阻抗平面圖繪制,數(shù)據(jù)傳輸通過(guò)AXIDMA實(shí)現(xiàn),傳輸速度達(dá)到250MB/s,滿足高速渦流信號(hào)的傳輸要求,同時(shí)基于Netlink的異步通信機(jī)制滿足實(shí)時(shí)性要求,實(shí)現(xiàn)了更高效、更節(jié)省的解決方案。
[1] 張俊哲.無(wú)損檢測(cè)技術(shù)及其應(yīng)用:第2版[M].北京:科學(xué)出版社,2010.Zhang Junzhe.The Nondestructive Testing and Its Application:2nd Edition[M].Beijing:China Science Publishing Media,2010.
[2] 呂世磊.高速在線渦流探傷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].華東理工大學(xué),2015.Lv Shilei.Design and Implementation of High-speed Online Eddy Current Testing System [D].East China University of Scienceand Technology,2015.
[3]劉增.嵌入式雙CPU脈沖渦流檢測(cè)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].江蘇科技大學(xué),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—),男,湖北省黃石市人,碩士研究生在讀,主研方向:無(wú)損檢測(cè)。
2017-09-18