楊 旭,徐巧玉,王軍委,周新穩(wěn)
(1.河南科技大學 機電工程學院,河南 洛陽 471003;2.洛陽銀杏科技有限公司,河南 洛陽 471003)
在電壓信號采集過程中,由于電路設計、工作環(huán)境等原因,采集到的信號中通常包含著與信號無關的高頻噪聲。在多種數(shù)字濾波器中,有限長單位沖激響應(finite impulse response,F(xiàn)IR)數(shù)字濾波由于性能穩(wěn)定和線性相位的特點,能夠很好地應用于高頻噪聲的濾除[1-7]。目前,F(xiàn)IR濾波器的設計通常依賴MATLAB軟件,首先由MATLAB軟件根據(jù)濾波參數(shù)生成濾波器系數(shù),然后在嵌入式系統(tǒng)中實現(xiàn)濾波運算[8-14]。該方式能夠在設計濾波器的同時,對濾波器的性能進行很好地分析和仿真,但對MATLAB軟件有著很強的依賴性,一旦采集的信號或者濾波要求發(fā)生改變時,需要重新生成濾波器系數(shù),因此降低了現(xiàn)場應用的靈活性?,F(xiàn)場可編程門陣列(field programmable gate array,FPGA)具有并行執(zhí)行、運算速度快的特點,越來越多的FIR濾波器通過FPGA實現(xiàn)[15-20]。FPGA能夠在不影響其他模塊的情況下對數(shù)據(jù)進行濾波,大幅提高了濾波效率,但是存在濾波器階數(shù)固定、參數(shù)不易更新、靈活性較差的問題。
針對以上問題,本文提出了一種基于FIR濾波參數(shù)可調(diào)的電壓信號采集模塊設計方案。該方案采用高級精簡指令集微處理器(advanced RISC machine,ARM)+FPGA的硬件架構(gòu),由ARM完成消息處理、采樣配置、濾波器系數(shù)生成、數(shù)據(jù)管理等工作,F(xiàn)PGA完成模數(shù)(analog-digital,A/D)轉(zhuǎn)換控制、FIR數(shù)字濾波、數(shù)據(jù)緩存等工作。為提高FIR低通數(shù)字濾波器使用的靈活性和方便性,由ARM根據(jù)采樣頻率、截止頻率等濾波參數(shù)計算生成濾波器系數(shù)并發(fā)送給FPGA。FPGA在直接型FIR濾波器的基礎上,通過增加數(shù)據(jù)輸出的方式改進濾波器結(jié)構(gòu),實現(xiàn)濾波器階數(shù)的可調(diào)。利用FPGA并行執(zhí)行的優(yōu)勢,在不影響8個電壓輸入通道的信號采集速率的情況下,實現(xiàn)了對采集數(shù)據(jù)參數(shù)可調(diào)的FIR低通數(shù)字濾波。
為了實現(xiàn)電壓信號采集和參數(shù)可調(diào)的FIR低通濾波,本文采用ARM+FPGA的架構(gòu)。電壓采集模塊系統(tǒng)框圖如圖1所示。電壓采集模塊主要包括AD7606單元、FPGA單元、ARM單元、以太網(wǎng)單元和SD卡單元5個硬件單元,ARM和FPGA通過可變靜態(tài)存儲控制器(flexible static memory controller, FSMC)總線進行數(shù)據(jù)交互。
圖1 電壓采集模塊系統(tǒng)框圖
AD7606單元:采用最高采樣率為200 kHz的AD7606芯片作為模數(shù)轉(zhuǎn)換器,具有8個模擬量輸入通道,通過FPGA控制將±10 V/±5 V電壓的模擬信號轉(zhuǎn)換為數(shù)字信號。
FPGA單元:FPGA模塊采用Altera公司的EP4CE15F23C8N芯片,主要實現(xiàn)模數(shù)轉(zhuǎn)換控制、FIR低通濾波、數(shù)據(jù)緩存和采集管理等功能。
ARM單元:ARM模塊采用STM32F767IGT6芯片,主要負責通信消息處理、采集參數(shù)配置、濾波器系數(shù)生成和數(shù)據(jù)管理等工作。通過FSMC總線與FPGA進行通信,用于控制FPGA程序運行,進而實現(xiàn)對電壓信號采集參數(shù)配置及數(shù)據(jù)讀取。
以太網(wǎng)單元:實現(xiàn)采集模塊與上位機的通信,用于上位機對采集模塊的參數(shù)設置、數(shù)據(jù)讀取和采樣控制。
SD卡單元:將Micro SD卡作為數(shù)據(jù)存儲,將采集的電壓信號數(shù)據(jù)保存為數(shù)據(jù)文件。
工作流程:本模塊由上位機控制,采集模塊通過以太網(wǎng)單元接收上位機的命令消息,并從消息中提取采樣頻率、采樣通道、濾波器參數(shù)等配置參數(shù)?;贏RM的濾波器系數(shù)生成單元,根據(jù)FIR濾波器參數(shù),計算得到濾波器系數(shù),并發(fā)送給FPGA,由其根據(jù)濾波器系數(shù)及階數(shù)完成FIR數(shù)字低通濾波運算。FPGA根據(jù)ARM發(fā)送的配置參數(shù)運行程序,實現(xiàn)對電壓信號采集參數(shù)配置。ARM讀取FPGA中的采集數(shù)據(jù),保存到SD卡或者通過以太網(wǎng)上傳至上位機。
電壓信號的模數(shù)轉(zhuǎn)換由FPGA驅(qū)動AD7606實現(xiàn),分為AD7606驅(qū)動和數(shù)據(jù)分離兩部分,如圖2所示。AD7606驅(qū)動部分根據(jù)芯片時序要求,控制AD7606進行模數(shù)轉(zhuǎn)換并完成數(shù)據(jù)的讀取,數(shù)據(jù)分離部分從AD7606輸出數(shù)據(jù)中分離出每個模擬通道的數(shù)據(jù),便于對每個通道數(shù)據(jù)進行單獨的濾波和緩存。
AD7606模式轉(zhuǎn)換和數(shù)據(jù)讀取時序如圖3所示。首先將CONVSTA和CONVSTB信號拉低后再拉高,開啟本次模數(shù)轉(zhuǎn)換,CONVSTA和CONVSTB拉高后開始監(jiān)測BUSY信號線的平狀態(tài),當監(jiān)測到BUSY由高電平拉低時,表示本次模數(shù)轉(zhuǎn)換完成,開始進行數(shù)據(jù)的讀取。讀取數(shù)據(jù)時,首先拉低CS信號,然后將RD信號先拉低后拉高,在RD信號的上升沿鎖存數(shù)據(jù)線DB[15∶0]上的數(shù)據(jù),對RD信號按照以上步驟操作8次,將通道1到通道8的數(shù)據(jù)依次讀出,讀取結(jié)束后拉高CS信號。
圖2 模數(shù)轉(zhuǎn)換模塊結(jié)構(gòu)圖
圖3 AD7606模式轉(zhuǎn)換及數(shù)據(jù)讀取時序圖
從AD7606讀取的數(shù)據(jù)是以通道為單位的串行數(shù)據(jù),為了對每個通道的數(shù)據(jù)進行單獨的數(shù)字濾波,需要將數(shù)據(jù)轉(zhuǎn)換為以通道為單位的并行數(shù)據(jù)。數(shù)據(jù)分離部分收到數(shù)據(jù)后,按照通道1到通道8的順序,將數(shù)據(jù)及數(shù)據(jù)輸出時鐘信號分配到對應的輸出口,便于后續(xù)各個通道數(shù)據(jù)的濾波處理。
參數(shù)可調(diào)FIR低通濾波器的實現(xiàn)由ARM和FPGA兩部分協(xié)同完成,ARM根據(jù)窗函數(shù)、濾波器階數(shù)、采樣頻率、截止頻率等濾波器參數(shù)計算生成濾波器系數(shù),并通過FSMC總線將濾波器系數(shù)和階數(shù)發(fā)送給FPGA。FPGA將采集數(shù)據(jù)與濾波器系數(shù)進行對應階數(shù)的濾波運算,實現(xiàn)對電壓采集數(shù)據(jù)參數(shù)可調(diào)的FIR低通濾波。
針對窗函數(shù)法設計FIR濾波器時的浮點數(shù)運算問題,ARM芯片采用STM32F767IGT6,該芯片內(nèi)部集成的浮點數(shù)運算單元對單精度浮點數(shù)和雙精度浮點數(shù)的運算都具有良好的支持性,能夠很好地用于濾波器設計時的浮點數(shù)運算。FIR濾波器系數(shù)計算步驟如下:
(Ⅳ)將濾波器階數(shù)Order代入所選擇的窗函數(shù)ω(n)中,計算得到窗函數(shù)序列。
(Ⅴ)將hd(n)與選擇的窗函數(shù)ω(n)相乘,得到單位脈沖響應h(n)=ω(n)hd(n)。
由于計算得到的濾波器系數(shù)為浮點數(shù),F(xiàn)PGA直接對這些系數(shù)運算會耗費大量的邏輯單元,將影響濾波運算的效率,因此需要對系數(shù)進行量化。系數(shù)量化時,首先對所有濾波器系數(shù)乘以(215-1),將處理后的系數(shù)取整數(shù),然后將整數(shù)濾波器系數(shù)轉(zhuǎn)換成二進制補碼數(shù)據(jù)。ARM在完成對濾波器系數(shù)的計算和量化后,通過FSMC總線將濾波器系數(shù)和階數(shù)發(fā)送給FPGA,由FPGA完成FIR低通濾波運算。
為了實現(xiàn)FIR濾波器階數(shù)可調(diào),本文在直接型FIR濾波器的基礎上,設計了一種多輸出口的濾波器結(jié)構(gòu)。FIR直接型濾波器結(jié)構(gòu)系統(tǒng)函數(shù)[21]如式(1)所示。
(1)
由式(1)可知:直接型FIR濾波器能夠通過數(shù)據(jù)延遲、乘法、加法運算實現(xiàn)。在FPGA中采用這種結(jié)構(gòu)進行設計,不僅能夠?qū)崿F(xiàn)快速濾波運算,還能夠使濾波模塊與模數(shù)轉(zhuǎn)換模塊數(shù)據(jù)輸出保持時鐘同步。這種同步能夠保證數(shù)據(jù)在采樣、濾波和緩存之間的流水線傳輸,數(shù)字濾波不會影響采集速度和數(shù)據(jù)緩存,在長時間采樣時具有很大的優(yōu)勢。
通過對直接型結(jié)構(gòu)的傳遞函數(shù)進行變換,可以將式(1)所示傳遞函數(shù)分為兩部分,得到等價傳遞函數(shù):
(2)
由式(2)可知:對于直接型結(jié)構(gòu)的FIR濾波器,在低階濾波器后加入延遲單元、乘法單元和加法單元得到高階濾波器;低階濾波器可通過去除掉高階濾波器的部分延遲單元、乘法單元和加法單元的方式獲得。同理,還可以在此基礎上繼續(xù)對濾波器進行拆分,從而在一個高階濾波器中獲得若干個低階濾波器。根據(jù)此原理,本文在直接型FIR濾波器的基礎上,通過對濾波器拆分組合的方式,設計了一種多數(shù)據(jù)輸出口的網(wǎng)絡結(jié)構(gòu),如圖4所示。
由圖4可知:在不同的數(shù)據(jù)輸出點上數(shù)據(jù)參與的延遲、乘法、加法運算是不同的,在傳遞函數(shù)H(z)上體現(xiàn)為N值不同,因此每個數(shù)據(jù)輸出點對應不同階數(shù)的濾波運算,可通過選擇數(shù)據(jù)輸出點的方式選擇濾波器階數(shù),從而實現(xiàn)濾波器階數(shù)的可調(diào)。
本文設計的FIR濾波器模塊具有6個數(shù)據(jù)輸出口,分別對應15~20共6種階數(shù)的濾波。FIR濾波模塊框圖如圖5所示。在濾波器參數(shù)改變時,ARM將濾波器階數(shù)和濾波器系數(shù)通過FSMC總線發(fā)送給FPGA,F(xiàn)PGA更新濾波器系數(shù)寄存器,并進行濾波運算。在FIR濾波運算后,根據(jù)濾波器階數(shù)選擇對應的數(shù)據(jù)輸出口輸出數(shù)據(jù)。
圖4 多數(shù)據(jù)輸出口FIR濾波器結(jié)構(gòu)圖
圖5 FIR濾波模塊框圖
電壓采集模塊共有8個電壓信號輸入通道,為了能夠?qū)γ總€通道的數(shù)據(jù)進行緩存,在FPGA內(nèi)部建立了8個深度為1 024、寬度為32的隨機存取存儲器(radom access memory,RAM),編號為RAM1~RAM8,分別對應通道1到通道8的數(shù)據(jù)存儲,如圖6所示,圖6中輸入數(shù)據(jù)為濾波后數(shù)據(jù)。
圖6 數(shù)據(jù)濾波和緩沖結(jié)構(gòu)圖
在電壓信號采集過程中,模數(shù)轉(zhuǎn)換和FIR濾波模塊一直運行,通過控制數(shù)據(jù)緩存單元數(shù)據(jù)的寫入與讀取,控制電壓信號采集。采集開始后,數(shù)據(jù)開始寫入緩存區(qū),由于FSMC總線的通信速度遠大于AD7606的采集速度,可在不影響數(shù)據(jù)采集的情況下完成數(shù)據(jù)的讀取。采集結(jié)束后,數(shù)據(jù)停止寫入緩存區(qū),ARM停止讀取數(shù)據(jù)。讀取數(shù)據(jù)時,ARM通過FSMC總線對數(shù)據(jù)進行讀取,讀取時根據(jù)指定的通道,讀邏輯控制單元切換RAM數(shù)據(jù)輸出接口,輸出對應RAM中的數(shù)據(jù)。ARM在讀取到數(shù)據(jù)后,根據(jù)設置的參數(shù)選擇將數(shù)據(jù)以文件的形式保存至SD卡或者直接上傳至上位機。
為了對本方案進行驗證,分別從電壓采集精度和FIR濾波效果兩個方面進行測試。
電壓采集精度測試主要通過采集福祿克5502A校準器輸出的電壓信號,并將采集值與輸出值進行對比,從而獲得電壓采集模塊的采集精度。
采用福祿克5502A校準器,輸出0~5 V多種幅值的直流信號,然后對電壓信號進行采集,采集數(shù)據(jù)量為1 000,實驗測量結(jié)果如表1所示。
由表1可知:采集模塊采集的相對誤差絕對值最大為0.22%,并且每組1 000點采集數(shù)據(jù)標準差值很小,采集模塊具有很高的電壓采集精度。
表1 電壓采集精度測量表
FIR濾波測試實驗將峰峰值為5 V、頻率為250 Hz正弦波信號作為采集對象,并在信號中疊加20 dB信噪比的白色高斯噪聲,作為濾波器濾除目標。電壓采集模塊以100 kHz的頻率采集信號,并采用不同參數(shù)的濾波器對信號濾波,通過分析濾波后的數(shù)據(jù)波形判斷濾波器的濾波效果。
電壓采集模塊在未加濾波模式下,采集的原始信號如圖7a所示。由圖7a可以看出:采集的正弦波數(shù)據(jù)中存在著大量的噪聲信號聲。
為了對本文設計的濾波器濾波功能進行驗證,以100 kHz采樣頻率,采用漢明窗作為窗函數(shù),分別采用20階10 kHz截止頻率、20階2 kHz截止頻率和15階2 kHz截止頻率,對疊加了噪聲的原始信號進行FIR低通濾波,濾波后的數(shù)據(jù)波形如圖7b~圖7d所示。
(a) 原始信號
(b) 20階10 kHz截止頻率濾波效果圖
(c) 20階2 kHz截止頻率濾波效果圖
由圖7b~圖7d可知:濾波器的截止頻率越低,信號的濾波效果越好,但是對有效信號的衰減也較大,在同一截止頻率下,高階數(shù)濾波相對于低階數(shù)具有更好的濾波效果。因此,本電壓采集模塊的FIR數(shù)字低通濾波器根據(jù)設置參數(shù)對濾波器進行調(diào)整,并濾除信號中的高頻噪聲。
本文提出了一種FIR濾波參數(shù)可調(diào)的電壓采集模塊,該模塊采用ARM+FPGA的硬件架構(gòu),能夠在實現(xiàn)電壓采集的同時,完成參數(shù)可以調(diào)整的FIR低通濾波運算。本采集模塊能夠完成電壓采集功能,采集相對誤差絕對值最大為0.22%,具有較高的電壓采集精度。設置濾波參數(shù)可以完成FIR低通濾波器系數(shù)生成和濾波器結(jié)構(gòu)調(diào)整,濾除電壓信號中的高頻干擾噪聲。