謝玲芳,孟令軍
(中北大學,電子測試技術(shù)國防科技重點實驗室,山西太原 030051)
Zynq-7000可擴展處理平臺由ARM處理器和7系列FPGA資源構(gòu)成,分別叫做PS(processing system)和PL(programmable logic)[1]。PS包含雙核Cortex-A9,其啟動和操作系統(tǒng)的運行不依賴可編程邏輯單元,PL包含F(xiàn)PGA邏輯單元,在該部分完成的各個功能模塊可以封裝為獨立的IP核掛載在內(nèi)部總線上,由ARM選擇驅(qū)動與調(diào)度。這一架構(gòu)充分發(fā)揮FPGA并行運算的優(yōu)勢,同時利用處理器系統(tǒng)的靈活性,增強了實時數(shù)據(jù)傳輸?shù)姆€(wěn)定性,為高速信號的采集與處理提供一種新的設(shè)計方案。通過軟硬件協(xié)同設(shè)計實現(xiàn)多路振動信號采集及頻譜分析,提取信號的頻譜信息,分析特征完成振動故障分析。
系統(tǒng)選擇Zynq-7000 SOC平臺作為控制核心,經(jīng)過前端信號調(diào)理后,由可編程A/D轉(zhuǎn)換、DMA傳輸、FFT變換和以太網(wǎng)傳輸來實現(xiàn)振動信號的采集和頻譜分析。系統(tǒng)框架如圖1所示。
圖1 系統(tǒng)整體框架圖
振動傳感器采集的模擬信號作為前端輸入信號。Zynq-7000的PL部分控制AD7606進行模數(shù)轉(zhuǎn)換、FFT變換,通過AXI4總線協(xié)議進行DMA傳輸,將數(shù)據(jù)傳輸?shù)教幚砥鳎?jīng)過 DDR3緩存,PS部分實現(xiàn)串口、千兆以太網(wǎng)的控制,完成PS端到PC端的數(shù)據(jù)傳輸以及PC端到PS端的指令傳輸。
在本設(shè)計中,信號輸入頻率最大為50 kHz,即fmax=50 kHz。為了保證信號被完整復(fù)原,采樣頻率需滿足fs≥2fmax,實際應(yīng)用中,常選取2.5倍,因此fs至少取125 kHz,而且對采樣精度有較高的要求[2]。綜上所述,采用AD7606,具備 200 Ksps 的采樣率,16 bit 采樣精度,8路同步采樣,靈活的串行并行接口,并且內(nèi)部配有可設(shè)置的 FIR 濾波器[3]。A/D電路采用5 V單電源供電。AD7606與Zynq接口如圖2所示。
圖2 AD7606與Zynq硬件接口圖
A/D控制模塊首先進行AD7606初始化,OS信號接低電平設(shè)置為無過采樣;RANG引腳接地用來設(shè)定模擬輸入電壓范圍是±5 V;V1~V8共8路模擬輸入信號為調(diào)理后的輸出電壓;PAR/SER/ BYTESEL引腳接地設(shè)置A/D為并行工作模式。其控制流程如圖3所示,仿真結(jié)果如圖4所示。
圖3 AD7606控制流程圖
由圖4可知,在轉(zhuǎn)換開始信號ad_con- vsta/b的上升沿開始進行模數(shù)轉(zhuǎn)換,隨后轉(zhuǎn)換忙碌標志ad_busy跳轉(zhuǎn)為高電平,等待8個通道均完成轉(zhuǎn)換再恢復(fù)低電平。此時等到片選信號ad_cs和讀取使能ad_rd有效時,依次讀出所有通道新的轉(zhuǎn)換結(jié)果(圖4列出了2個通道ad_ch1和ad_ch2)?;蛘呖梢栽赼d_busy為高電平時讀取數(shù)據(jù),此時讀取的為上一次轉(zhuǎn)換的舊數(shù)據(jù)。
圖4 AD7606時序仿真波形
如何將PL端采集的數(shù)據(jù)傳輸?shù)絇S端是系統(tǒng)設(shè)計的關(guān)鍵部分。Zynq 內(nèi)部 PS 和 PL 之間的接口包括AXI總線接口、EMIO接口、中斷、DMA、時鐘和調(diào)試接口[4]以及配置接口。其中,AXI 互聯(lián)總線是 PS 與 PL進行數(shù)據(jù)傳輸?shù)闹饕ǖ繹5]。PS部分配置DMA中斷系統(tǒng),控制流程如圖5所示。
為了方便PL與DDR進行高速數(shù)據(jù)交互,選擇PS內(nèi)部 AXI-HP接口以及DMA傳輸通道。DMA是一種快速數(shù)據(jù)交換技術(shù),數(shù)據(jù)吞吐率達到1 200 MB/s,滿足實時數(shù)據(jù)處理中高速傳輸?shù)囊骩6]。
圖5 DMA傳輸流程
由于控制命令傳輸部分對數(shù)據(jù)量及數(shù)據(jù)吞吐率要求不高,所以選擇AXI-GP 接口,通過 AXI-Lite總線連接到PL其他外設(shè)接口,由 PS 向外發(fā)送控制信息;AXI-HP0和AXI-HP1分別連接2個數(shù)據(jù)傳輸通路。這樣能夠?qū)⒏髂K的數(shù)據(jù)傳輸效率發(fā)揮到最大,保證PS與PL之間數(shù)據(jù)傳輸更加高效[7]。PS與PL數(shù)據(jù)交互框圖如圖6所示。
圖6 PS與PL數(shù)據(jù)交互框圖
FFT(快速傅里葉變換),是離散傅里葉變換的快速算法[8]。系統(tǒng)采用 FFT IP 核進行FFT變換,處理器負責接收DMA傳輸?shù)臄?shù)據(jù)并控制PL部分的FFT模塊,F(xiàn)FT與DMA之間的數(shù)據(jù)傳輸符合AXI-Stream流傳輸。使用IP核可以選擇占用不同的底層資源,提高可編程邏輯資源的利用率,使Zynq資源利用與速度達到最優(yōu)。
FFT IP核最大可工作在500 MHz頻率下,100、500 MHz工作頻率下不同點數(shù)對應(yīng)的處理速度如表1所示。
表1 不同點數(shù)與延遲時間對比表
為了驗證 FFT 這個模塊的設(shè)計結(jié)果是否正確,首先對采樣的位寬為16 bit 的1 024個數(shù)據(jù)點進行FFT變換。調(diào)用IP核,采用Radix-2,BurstI/O結(jié)構(gòu),輸出數(shù)據(jù)精度由相位因子決定,相位因子選擇16 bit,占用6個DSP48,5個塊RAM。在100 MHz的工作頻率下,變換周期為7 351,延遲時間為73 μs,數(shù)據(jù)吞吐率為50 Msps。
采集到的振動波形近似正弦波,由于信號帶來的雜波比較多,所以示波器測量的幅值和頻率不準。數(shù)據(jù)采集模塊對振動信號進行濾波、放大,把信號調(diào)理到AD7606的輸入電壓范圍,再進行低通抗混疊濾波,如圖7所示,波形頻率為2 kHz,幅值為3 V。
圖7 濾波放大后的振動信號
啟動SDK,連接串口,設(shè)置網(wǎng)絡(luò)IP地址,以及網(wǎng)絡(luò)端口號,由網(wǎng)絡(luò)調(diào)試助手發(fā)送啟動傳輸命令,數(shù)據(jù)開始傳輸。信號通過數(shù)據(jù)采集板完成模數(shù)轉(zhuǎn)換過程,再通過 FEP高速擴展接口連接至主控板,添加ILA(在線調(diào)試工具),以模擬波形的形式觀察通道ad_ch1和ad_ch2,時域波形如圖8所示。
圖8 采集的2路振動信號
由圖8可知,經(jīng)過調(diào)理后的信號呈現(xiàn)正弦波,沒有噪聲干擾,并且未出現(xiàn)信號失真等問題,證明了A/D采集轉(zhuǎn)換電路設(shè)計合理,芯片正常工作。
主控板PL部分利用一個異步FIFO完成跨時鐘域的數(shù)據(jù)傳輸。通過在AXIS總線添加System ILA IP核,可以觀測PL接收端AXIS-Stream流數(shù)據(jù)[9],仿真波形如圖9所示。
圖9 AXIS-Stream 流數(shù)據(jù)仿真
由圖9可知,AXI4協(xié)議是通過數(shù)據(jù)發(fā)送端TVALID信號和數(shù)據(jù)接收端TREADY信號之間的握手協(xié)議來傳輸數(shù)據(jù)的。本設(shè)計中保持TVALID信號有效,當TREADY為高電平時(圖9中TREADY一直為高電平)表示PL準備好接收數(shù)據(jù),在二者均有效時主從設(shè)備之間進行數(shù)據(jù)通信[10]。
在SDK調(diào)試界面可以添加內(nèi)存地址來查詢相應(yīng)地址處的數(shù)據(jù)。添加寫(讀)內(nèi)存初始地址0x1032(0)0000,如圖10和圖11所示。寫(讀)內(nèi)存地址0x1032(0)0000~0x1032(0)0007處8字節(jié)數(shù)據(jù)為包頭,代表數(shù)據(jù)包開始。0x1032(0)0008~0x1032(0)000B處4字節(jié)為包序列號。0x1032(0)000C~0x1032(0)000F處4字節(jié)為本包數(shù)據(jù)長度。0x1032(0)0010之后為A/D轉(zhuǎn)換后的數(shù)據(jù)。
圖10 查詢寫內(nèi)存數(shù)據(jù)
圖11 查詢讀內(nèi)存數(shù)據(jù)
100 MHz工作頻率下,對16 bit 數(shù)據(jù)進行1 024點FFT 變換,仿真結(jié)果如圖12所示。IP核輸入端口s_axis_data_tdata為原始數(shù)據(jù),變量i表示1 024個數(shù)據(jù);FFT核處理結(jié)果為復(fù)數(shù),輸出端口m_ax- is_data_tdata位寬為64 bit,其中高32位為虛部,低32位為實部,分別對應(yīng)信號data_im、data_re。將復(fù)數(shù)實部虛部結(jié)果導入MATLAB進行頻譜圖繪制,并與MATLAB計算的FFT結(jié)果相比較,如圖13所示。
圖12 FFT IP核仿真波形
(b)MATLAB FFT處理結(jié)果
由圖13可知,信號主要頻率為2 kHz,幅度為3 V,2 kHz以外的信號基本沒有。IP核處理結(jié)果與MATLAB處理結(jié)果一致,實際應(yīng)用工程中,可根據(jù)需要對FFT變換點數(shù)進行調(diào)整。
設(shè)計了一種以Zynq-7000 SOC芯片為核心的數(shù)據(jù)采集及頻譜分析系統(tǒng),由振動傳感器采集振動信號,進行信號調(diào)理后通過A/D轉(zhuǎn)換芯片說明了振動信號采集的正確性,通過驗證PL與PS之間的DMA通信、AXI4協(xié)議,設(shè)計達到了高的吞吐率,采用官方IP核進行了1 024點FFT變換,精度速度滿足系統(tǒng)要求;根據(jù)頻譜特征可得知機械振動并無故障。