喬俊松 李琪 陳誠
摘要:在大型吊裝設(shè)備工作時,需要采集設(shè)備的振動信號和電機轉(zhuǎn)速信號作為故障診斷的數(shù)據(jù)來源,但由于不同電機轉(zhuǎn)速下混入的高頻噪聲信號頻率不相同,導(dǎo)致傳統(tǒng)低通濾波器無法得到信噪比較高的信號,對故障診斷準確率造成影響,急需設(shè)計可靈活修改各種參數(shù)的低通濾波器。使用MATLAB設(shè)計了FIR數(shù)字低通濾波器,而后使用QuartusⅡ軟件在FPGA上實現(xiàn)該濾波器。使用Modelsim軟件對FIR濾波器進行波形仿真,并把數(shù)據(jù)導(dǎo)出至MATLAB分析。結(jié)果表明,所設(shè)計的FIR低通濾波器具有良好的濾波效果,滿足了預(yù)期的設(shè)計要求,也可方便修改各種濾波參數(shù),達到了預(yù)期的設(shè)計目的。
關(guān)鍵詞:低通濾波;FIR數(shù)字濾波器;FPGA;MATLAB
中圖分類號:TU745
文獻標識碼:A
DOI: 10.15913/j.cnki.kjycx.2019.09.001
1 引言
軍事裝備中常用各種大型吊裝設(shè)備來完成武器裝備的吊裝和安放,設(shè)備的工作運行狀態(tài)需要實時監(jiān)控,通過狀態(tài)監(jiān)控和故障診斷預(yù)判提高識別問題的概率,確保武器裝備的安全。傳統(tǒng)故障診斷設(shè)備采集設(shè)備開車后的電機轉(zhuǎn)速和振動信號,通過故障診斷算法完成判斷,而采集到的振動信號包含大量的高頻干擾信號,傳統(tǒng)濾波器設(shè)置10倍工頻作為截止頻率,在轉(zhuǎn)速達到6 000 r/min以上時可較好地濾除高頻干擾,而在轉(zhuǎn)速在2 000 -6 000 r/min時由于截止頻率過高,無法達到濾除效果。而數(shù)字FIR濾波器如能方便修改參數(shù)矩陣,就可以實現(xiàn)改變各項濾波參數(shù)靈活配置濾波器的要求,為達到濾波要求,本文摸索出一種方便利用MATLAB和QUARTUS II設(shè)計FIR濾波器的方法和流程,實踐證明,能夠改善振動信號去噪能力,可提高信噪比。
2 FIR濾波器的原理及設(shè)計方法
2.1 FIR濾波器數(shù)學(xué)模型
數(shù)字濾波是將輸入的信號序列按規(guī)定的算法處理,得到所期望的輸出序列。一個線性時不變系統(tǒng)的輸出序列v(n)與輸入序列x(n)之間應(yīng)滿足常系數(shù)線性差分方程:窗、Kaiser窗等,前三種窗函數(shù)都是以增加主瓣寬度為代價換取一定程度的旁瓣抑制。只有Kaiser窗是通過調(diào)整參數(shù)值來折中選擇主瓣寬度和旁瓣衰減,因此具有很高的靈活性。
3 基于MATLAB&QUARTUS¨的FIR濾波器設(shè)計
3.1
數(shù)字濾波器總體設(shè)計方案 FIR濾波器設(shè)計流程如圖2所示。
MATLAB數(shù)學(xué)工具優(yōu)勢在于不僅可以完成基本的數(shù)學(xué)運算,對信號進行處理,而且根據(jù)各專門領(lǐng)域中的特殊需要提供了許多可選的工具箱,本文采用其設(shè)計濾波器專用的Filter Design& Analysis To01( FDA)工具箱,該工具箱使用方便,操作簡單,可輸出需要的濾波器參數(shù)數(shù)組。
QUARTUSⅡ是Altera公司的綜合性FPGA開發(fā)軟件,內(nèi)嵌自帶的綜合器和仿真器,可以完成從設(shè)計輸入到硬件配置的完整FPGA設(shè)計流程。QUARIUSⅡ支持Altera的IP核,用戶可以充分利用成熟的模塊,簡化設(shè)計的復(fù)雜性,加快設(shè)計速度。
設(shè)計時將二者結(jié)合使用,發(fā)揮各自的優(yōu)勢,先利用MATLAB的Filter Design& Analysis To01( FDA)工具箱進行數(shù)字低通濾波器的設(shè)計,再將濾波器參數(shù)導(dǎo)人QUARTUSⅡ中進行編程,整個設(shè)計流程如圖2所示。
3.2 基于MATLAB的數(shù)字低通濾波器參數(shù)設(shè)計
利用MATLAB中的數(shù)字濾波器設(shè)計模塊FDATOOL進行低通濾波器的設(shè)計,步驟如下。在MATLAB指令窗口中輸入“FDATOOL”,彈出窗口如圖3所示。
根據(jù)整體設(shè)計要求,將濾波器參數(shù)設(shè)置如下。
類型(Filer Type):低通(Low Pass)。
設(shè)計方法(Design Method): FIR。
采用窗函數(shù)法( Window):Kaiser窗。
采樣頻率Fs為2 000 Hz。
截止頻率Fc為500 Hz。
濾波器的階數(shù)取16,因此Filter order取15。
阻帶衰減不小于50 dB,beta值取4.5。
數(shù)字濾波器分析方面,F(xiàn)IR濾波器幅頻響應(yīng)如圖4所示。
設(shè)計好濾波器后,通過FDA工具中的Analysis按鈕進行濾波器分析,啟動幅頻響應(yīng)分析如圖4所示,其中x軸為頻率,y軸為幅度值(單位為dB)。
由圖4可以得到,頻率在200 Hz以下的信號基本沒有發(fā)生衰減,而頻率在500 Hz及以上的信號則發(fā)生了較大幅度的衰減,并且不小于50 dB。指標達到了濾波器的設(shè)計要求。FIR濾波器相頻響應(yīng)分析如圖5所示。由圖5可知設(shè)計的FIR濾波器在通帶內(nèi)為線性相位響應(yīng),即該濾波器是一個線性相位的濾波器。線性相位意味著通帶信號保真,滿足了設(shè)計要求。
導(dǎo)出濾波器系數(shù)方面,利用MATLAB的FDA工具箱設(shè)計完成FIR低通濾波器并且滿足設(shè)計要求后,再將濾波器系數(shù),即一個包含16個濾波器參數(shù)的數(shù)組導(dǎo)出到TXT文本中供QUARTUSⅡ在設(shè)計FIR IP核時調(diào)用。
3.3 基于FPGA的數(shù)字低通濾波器設(shè)計
在完成MATLAB軟件仿真及數(shù)據(jù)準備之后,開始進行FPGA設(shè)計工作,流程如圖6所示。
建立工程,設(shè)置FIR核參數(shù),如圖7所示。根據(jù)需要將FIR核的參數(shù)設(shè)置濾波器系數(shù)位寬(Bit Width)為12 bit,目標器件( Device Family)為CycloneⅣE,流水線級數(shù)( Pipline Level)為1,輸入數(shù)據(jù)及濾波器系數(shù)的存儲資源保持默認值為Logic Cells,濾波器結(jié)構(gòu)(Structure)為DistributedArithmetic:Fully parallel。濾波器系數(shù)通過外部文件(FirCoe.txt)導(dǎo)人,如圖8所示。
編寫Verilog HDL程序,實現(xiàn)濾波功能,主要程序如下:
module FirIPDa (reset_n, clk, Sin, S_out);
input reset_n;
//復(fù)位信號,低電平有效
input
clk; //FPGA系統(tǒng)時鐘2kHz
input signed [11:0]S_in; //數(shù)據(jù)輸入頻率為2kHz
output signed [24:0]S_out.//濾波后的輸出數(shù)據(jù)
wire ast sink_valid, astsourceready,
wire ast_ source_valid;
wire[1:0]ast_sourceerror;
wire [1:0]ast_sink_error;
assign astsink_valid-1fb1;
assign ast_sourceread~l'bl;
assign astsink_error2'd0;
fir firinst(.clk(clk), .reset_n(reset_n),
.ast sink data(S_in),
.ast_ sink valid(ast_sink_valid),
.ast_ sourceready(ast_sourceready),
.ast sink_ error(ast_sink_error),
.ast source_data(Sout),
.ast sink ready(ast_sink_ready),
.ast_ source_valid(astsource_valid),
.ast_ sourceerror(ast_sourceerror》;
endmodule
利用Modelsim進行仿真并將仿真結(jié)果輸出至外部文件中,再使用MATLAB軟件對測試結(jié)果進行分析對比,對比情況如圖9.圖10所示。
圖10輸入信號與輸出信號的時域波形對比
從圖9中可以看出,800 Hz附近的噪聲信號衰減都大于50 dB,而200 Hz附近的信號幾乎沒有改變,滿足了設(shè)計要求。從圖10中可以看出,輸入信號有兩個峰值,經(jīng)過濾波后變?yōu)榱藛畏?,并且保留下來那個信號的幅度也有所加強,滿足了設(shè)計要求。
4 結(jié)束語
本文完整地論述了基于MATLAB和FPGA的FIR低通濾波器的設(shè)計思路和仿真,達到了對FIR濾波器設(shè)計的要求,仿真實驗驗證了設(shè)計的正確性,使得設(shè)備故障診斷信號源的信噪比大大提高,為后期故障診斷算法運行提供高質(zhì)量的信號。這一方法可以應(yīng)用到各種采用FIR濾波器的數(shù)字系統(tǒng)中,提高信號濾波效果。
參考文獻:
[l]何蘊良,耿淑琴,汪金輝.基于Verilog的FIR數(shù)字濾波器設(shè)計與仿真[J].現(xiàn)代電子技術(shù),2016( 10): 1-4.
[2]解亞南.基于FPGA的數(shù)字濾波器的設(shè)計研究[D].青島:青島大學(xué),2016.
[3]楊峰.基于FPGA的FIR數(shù)字濾波器設(shè)計與仿真[J].四川文理學(xué)院學(xué)報,2016,26 (5): 33-35.
[4]杜勇.數(shù)字濾波器的MATLAB與FPGA實現(xiàn)(Altera/Verilog版)[M].北京:電子工業(yè)出版社,2015.
[5]曹振吉,何敏.基于FPGA和Matlab的FIR數(shù)字濾波器[J].現(xiàn)代電子技術(shù),2015,38 (1): 98-102.
[6]劉東華.Altera系列FPGA芯片口核詳解[M].北京:電子工業(yè)出版社,2014.
[7]汪麗娜.音頻信號采集系統(tǒng)中數(shù)字濾波器的研究與設(shè)計[D].蘭州:蘭州交通大學(xué),2014.
[8]王香,張莉莉.基于FPGA的16階FIR數(shù)字濾波器的設(shè)計[J].電子世界,2013( 16): 148-149。
[9]單文軍,周雪純,李文華.基于FPGA的FIR數(shù)字濾波器設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(14): 123-126.
[10]張景芝.基于FPGA的數(shù)字濾波器設(shè)計與實現(xiàn)[D].石家莊:河北經(jīng)貿(mào)大學(xué),2012.
[11]劉慶良,盧榮軍,李建清.FIR數(shù)字濾波器的FPGA實現(xiàn)研究[J].電子設(shè)計工程,2010(3):59-61,64.