丁孝超,楊 媛,陳 福
(西安理工大學 自動化與信息工程學院,陜西 西安 710048)
現今高鐵迅速發展,高鐵無縫長軌負荷量不斷增加,在役鋼軌在承受負荷時受到交變彎曲應力和橫向應力而產生磨損、塑性變形及疲勞損傷,鋼軌性能逐漸劣化,導致鋼軌斷裂失效和斷軌事故時有發生,因此對軌道進行損傷監測成為保障列車行車安全的重要手段[1]。隨著超聲無損檢測技術的發展,為全面完整地評估鋼軌的健康狀況,需以不同的入射角發射超聲波,來增大對待檢測缺陷的覆蓋范圍,這就使得多通道損傷檢測系統越來越多地應用到在役鋼軌的損傷檢測研究中[2]。傳統的超聲波數據采集完成后是通過串行總線將數據傳輸到處理單元,但是針對多路超聲波信號仍采用該方式,將會使數據傳輸成為檢測系統實現實時性的瓶頸,導致超聲波換能器的重復頻率降低,檢測速度變慢[3-4]。
本文在考慮可實現性和高效率數據傳輸的前提下,采用ARM+FPGA的架構完成對2通道超聲波信號的采集,為以后更多通道的數據采集提供解決方案,同時采用FPGA對數據進行FIR濾波,最后通過FSMC接口將處理后的數據傳輸到ARM完成算法處理。
本文以2通道超聲波為例進行數據采集系統設計,該框架可以支持更多通道的數據采集,系統框架設計如圖1所示。由ARM控制FPGA進行數據采集和數據傳輸,FPGA在接收到ARM的控制信號后,通過判斷交替產生激勵脈沖激勵探頭1和探頭2,然后將接收到的回波數據經過限幅、帶通濾波、增益放大和偏置后送到高速AD處,由FPGA產生控制信號使能高速AD完成數據采集并將數據緩存到FPGA內部FIFO中。為保證數據的正確性,本文通過FIR濾波器對數據進行預處理,并將處理后的數據緩存到RAM中,最后在ARM的控制下通過靈活的靜態存儲器控制器[5-6](Flexible Static Memory Controller,FSMC)接口將濾波后的數據發送給ARM進行算法運算。

圖1 系統框圖
本文所涉及的硬件電路主要包括激勵電路、信號調理電路、數據采集等,此處只給出其中一路的硬件電路設計,其他通路結構相同。由于本文采用的是收發一體的超聲波換能器,其接收到的回波信號受到激勵的影響具有較大的振幅,因此調理電路使用一對高頻二極管對回波信號進行限幅處理。限幅后的信號經過信號放大后,進行帶通濾波,本文采用的超聲波換能器中心頻率是2.5 MHz。為取得較好的濾波效果,本文設計了一個中心頻率為2.5 MHz、上下限截止頻率分別是2.7 MHz和2.3 MHz、通帶增益為1的二階濾波器。AD采集采用高速ADC芯片AD9226,它采用單端輸入和輸出誤差校正邏輯的多級差分流水線架構,在65 MS/s數據速率下具有12位精度。
數字濾波器是通過數字運算器件對輸入的數字信號進行處理,改變信號頻譜,以得到期望的響應特性的離散時間系統。根據數字濾波器的功能特征,可以將其分為低通、高通、帶通、帶阻以及全通類型,根據沖擊響應特性的不同,又可以分為IIR和FIR數字濾波器,其中FIR濾波器有其自身的優點,成為信號處理中濾波器的一種常用電路[7-8]。本文采用具有線性相位的FIR濾波器,以M為奇數、單位取樣響應為偶對稱的FIR濾波器為例,其傳遞函數如下:

(1)

(2)

(3)

(4)
式(4)即為FIR的傳遞函數,實現該傳遞函數的方式有串行結構、并行結構、分布式結構以及IP核,本文通過調用IP核的方式實現FIR濾波器。根據前面所述,本文涉及的超聲波信號中心頻率是2.5 MHz,為了更好地得到該處信號,設計數字帶通濾波器。系統的采樣率Fs為25 MHz,截止頻率為2.3 MHz和2.7 MHz,阻帶衰減為-40 dB,通帶不衰減,通過MATLAB的FDAtool工具得到濾波器系數,并將該系數進行12 bit的位寬量化,作為最終的FIR濾波器的系數。
目前FPGA與ARM的通信方式很多,按數據傳輸方式分為兩類:一類是串行傳輸,此類方式接口簡單,傳輸速率較低,不利于高速數據采集,常見的如UART、USART、I2C、SPI等[9-10];另一類是并行傳輸,顧名思義可以一次傳輸多位寬信號,配合相應的時序控制即可。本文為滿足高速數據采集及傳輸,采用FSMC總線實現并行傳輸。
FSMC是STM32采用的一種新型存儲器控制技術,支持多種類型的外部存儲器,其主要包含四個模塊:AHB接口、NOR閃存和PSRAM 控制器、NAND閃存和PC卡控制器、外部設備接口。所有的外部存儲器共享地址、數據和控制信號,但有各自的片選信號,FSMC 一次只能訪問一個外部器件。FSMC提供了4個Bank用于連接不同的外部存儲器,其中Bank1又被劃分為4個NOR /PSRAM區域,FSMC為每個存儲區域輸出唯一的片選信號NE[4: 1]。FPGA連接在Bank1的第三區域,FSMC_NOE和FSMC_NWE分別是接口讀寫信號,根據應用需求,設計接口數據寬度為16 bit,地址線為1 bit,將數據線FSMC_D[15: 0]和地址線FSMC_A[15: 0]連接到FPGA的I/O端口,尋址空間為64 KB。因此FPGA就作為STM32的外設被連接到系統中,通過存儲器讀寫指令就可以訪問FPGA,其實質就是將FPGA通過FSMC總線映射為STM32的一個SRAM。FPGA與STM32的接口電路連接如圖2所示。

圖2 FPGA與STM32接口電路
在STM32內部,FSMC的一端通過內部高速總線(Advanced High performance Bus,AHB)連接到Cortex-M4內核上,另一端則是面向擴展存儲器的外部總線。內部AHB總線的地址HADDR與FSMC總線地址存在一定的映射關系,具體如下。HADDR總共有28根地址線(HADDR[27:0]),其中HADDR[27:26]用于對Bank1的4個區域進行尋址,當FPGA使用第三區時,對應的HADDR[27:26]為10。
Bank1在外接16 bit存儲器時,FSMC將在內部使用HADDR[25:1]產生外部存儲器的地址FSMC_ADDR[24:0],即在進行地址讀寫操作時,HADDR[0]并未使用,實際上對應關系HADDR[25:1]變為FSMC_ADDR[24:0]。知道該對應關系后,接口地址FSMC_ADDR[15:0]對應的HADDR的地址為0x68000000~0x6801FFFE,具體如表1所示。

表1 STM32中FSMC有關的地址映射
本文軟件實現主要包括兩部分內容:FPGA軟件實現和STM32軟件實現。主要目的是:(1)通過設置FPGA內部的各個狀態寄存器的讀寫,完成對高速AD的控制和采集通道的選擇以及各時延要求;(2)將接收到的數據完成FIR濾波并緩存;(3)通過FSMC接口完成對數據的傳輸。
FPGA主要是接收來自STM32的指令,然后控制高速AD完成數據采集,并將采集到的數據經過FIR濾波(可選)后,通過FSMC接口將數據傳輸到STM32中進行后級處理,程序流程圖如圖3所示。

圖3 FPGA程序流程圖
系統上電后,FPGA通過PS(被動模式)方式完成配置,然后偵測STM32發送的信號STM32_en1和STM32_en2是否存在指定寬度的脈沖,若存在,則記錄該脈沖來源并產生與其對應的指定寬度的脈沖,該脈沖寬度由激勵電路中電容充放電的時間常數τ決定,本文根據電路參數,計算得到該脈沖寬度為200 ns。產生完激勵信號后,將進行高速AD采集,在此之前需要延時以等到超聲回波信號。打開AD使能,并以AD采集時鐘作為異步FIFO的寫時鐘,將采集到的數據寫入到FIFO中。根據實際需要,決定是否打開FIR濾波器,然后將濾波器輸出的數據通過FSMC發送給STM32,具體過程是利用異步FIFO的“空”標志,向STM32產生FSMC通信請求,STM32通過拉低片選信號(片選信號低有效)來響應本次數據傳輸請求,并通過控制FSMC讀使能信號完成FSMC的數據傳輸,當STM32接收到既定數據量時,將拉高片選信號結束本次數據傳輸。由于FPGA的內部各模塊是并行執行,因此上述程序流程只是描述了一次數據采集及傳輸流程,FPGA隨時都在偵測STM32的使能信號,以進行下次數據采集,提高整個系統的效率。
STM32在本文中的主要功能是控制FPGA并完成數據的接收,為后期算法處理提供可靠的數據,其程序流程圖如4所示。

圖4 STM32程序流程圖
首先配置STM32需要用到的端口及FSMC接口寄存器,然后產生STM32_en1使能信號并判斷是否有FSMC通信請求信號,若接收到請求信號,則拉低片選信號和使能FSMC讀信號,接收完既定數據后,使能STM32_en2,激勵另一個超聲波換能器,并開始執行其他操作,等到FSMC通信請求信號到來時,開始響應FSMC通信,重復上述操作,即可完成兩路數據交替采集和數據傳輸,并且可以十分方便地擴展成多路數據采集及傳輸。程序流程圖中的其他操作主要是用于數據處理。
本文采用自制的硬件平臺進行超聲波激勵和數據采集及傳輸,其中控制器采用STM32F407ZGT6,該芯片是基于Cortex-M4內核,具有極其豐富的外設資源,其主頻是168 MHz,內存是1 MB,Flash是1 MB,支持FSMC接口;本文采用的FPGA是Altera的EP4CE6E22C8N,其時鐘頻率最大可達200 MHz,具有6272LUT,270 Kbit的EBR等豐富資源。本文將對前面所述的超聲波激勵、FIR濾波設計以及FSMC通信進行驗證。
在本文的硬件平臺上,給激勵電路施加400 V直流電源,測得激勵電路產生的尖負脈沖激勵信號如圖5所示,負脈沖峰值絕對值為396 V,脈沖寬度為160 ns,脈沖下降時間為35.6 ns。利用該激勵信號激勵超聲波換能器并將接收到的回波信號經過放大和帶通濾波得到的信號如圖6所示。

圖5 激勵信號

圖6 超聲波回波信號
本文通過調用IP核來實現FIR濾波器的設計,將采集到的超聲波信號經過FIR濾波器后,通過MATLAB將處理后的數據進行頻譜分析,如圖7所示。

圖7 FIR濾波前后波形及頻譜
從圖7可以看到FIR濾波前信號主要集中在2.5 MHz附近,但是仍存在較多其他頻率分量;濾波后使得信號在2.5 MHz處更加集中,對帶外信號進行抑制。從圖中可以看出FIR濾波具有明顯的效果。
本文通過在FPGA內部實現計數器,然后通過FSMC將計數器值發送到STM32,然后通過串口將數據打印出來以判斷傳輸是否正確。圖8是通過示波器抓取波形,其中①是FSMC的讀信號,②是數據的最低位信號線,從圖中可以看到當FSMC的讀信號拉低時,數據的最低位信號由低變到高,通過配置FSMC的控制寄存器,可以設置地址和數據的建立和保持時間(都是以STM32的AHB時鐘HCLK為參考),保證在FSMC讀信號有效期間數據能夠被正確傳輸。

圖8 FSMC讀使能與數據信號圖
為驗證采用FSMC通信方式相較于SPI通信方式在傳輸效率上的變化,本文通過將STM32作為主機,FPGA作為從機進行SPI通信測試,實驗中SPI的時鐘最大能達到APB時鐘的8分頻即10.5MHz。數據位寬16bit,分別對同樣數據量下不同通信方式耗時量進行比較,結果如表2所示。

表2 FSMC與SPI對比 (ms)
通過表2可以看到隨著數據量的增加,FSMC通信方式優勢更加明顯,并且對于實時大量數據處理的系統,采用FSMC通信將大量縮短數據傳輸的時間,給數據處理部分留出更多的時間。
本文設計的多通道超聲波數據采集與傳輸方案采用ARM與FPGA相結合的硬件架構,分別利用了ARM運算控制能力強和FPGA速度快的優勢,設計了超聲波激勵與調理電路,通過繪制PCB板完成了數據的采集與傳輸。在FPGA內部增加可選的FIR濾波器,對高速AD采集到的數據進行預處理,最后通過在自制的硬件平臺上完成驗證。與SPI通信方式進行了對比,結果表明FSMC通信方式在大量數據傳輸中優勢明顯,為后期實施大量數據處理節約了更多時間。本文方案適合常見的多通道數據采集與傳輸系統,具有很好的擴展與移植特性。
[1] 趙揚, 陳建偉, 孫繼華,等. 在役鋼軌無損檢測技術與系統的應用與發展[J]. 無損檢測, 2014, 36(3):58-64.
[2] LAD P, PAWAR M. Evolution of railway track crack detection system[C]// IEEE International Symposium on Robotics and Manufacturing Automation. IEEE, 2017:1-6.
[3] CHEN Z, JIA Y, JIANG G, et al. A multi-channel ultrasonic non-destructive testing system-based on ethernet[C]// IEEE International Conference on Control and Automation. IEEE, 2007:385-388.
[4] 辛光, 伍川輝. 基于STM32的列車噪聲數據采集系統[J].兵器裝備工程學報, 2012, 33(1):90-92.
[5] 宋雅琪, 韓曉軍, 榮鋒,等. 基于ARM和FPGA的多通道振動信號采集儀的設計[J]. 儀表技術與傳感器, 2016(5):25-28.
[6] 王晨, 喬旭興, 閆文奇, 等. Graphic display terminal for FSMC (flexible static memory controller) bus architecture:中國, 204009859 U[P]. 2014-07-22.
[7] Liu Hao, Miao Changyun, Feng Yongmao, et al. Design and realization of integrated ultrasound transmitting circuit[J]. Instrumentation Measurement Circuits & Systems, 2012, 127:137-144.
[8] SINGH G, PRAKASH N R. FPGA implementation of higher order FIR filter[J]. International Journal of Electrical & Computer Engineering, 2017, 7(4):1874.
[9] 朱望純, 張碩, 蔣漢林. 基于ARM與FPGA高速數據通信接口設計[J]. 桂林電子科技大學學報, 2017(4):293-297.
[10] 趙星. STM32基于FSMC的SRAM擴展技術[J]. 工業控制計算機, 2015, 28(6):102-103.