陶炳坤,陳鵬宇,李 楠,濮 霞
(軍械工程學院 河北 石家莊 050003)
隨著計算機和信息技術的快速發展,數字信號處理技術在通信與電子技術、航空航天、儀器儀表等諸多領域得到了廣泛應用,數字濾波器作為數字信號處理技術的一個重要工具,可用來過濾時間離散信號和數字信號。在數字信號處理中,數字濾波器占有極其重要的地位,濾波器可以用軟件濾波或專用的硬件濾波兩種方法實現。硬件濾波器穩定性差,易老化,精度低。用軟件來實現數字濾波器的優點是隨著濾波器參數的改變,很容易改變濾波器性能,從而滿足設計需求。
本設計采用具有嚴格線性相位、穩定性好的FIR數字濾波器來實現濾波器的設計。MATLAB作為設計FIR濾波器的強有力工具,為設計應用提供了相應的工具箱,從而將復雜的程序設計簡單化為函數調用,簡化難度的同時還提高了效率。TMS320F2812DSP是TI公司推出的一款用于控制和數字信號處理領域的多功能、高性價比的芯片,其優良的性價比使其在數字信號的實時處理中得到了廣泛的應用。本文介紹了采用MATLAB仿真技術和DSP來設計實現FIR數字濾波器。
對于數字濾波器,描述系統特性用差分方程。設其輸入序列為 x(k),輸出序列為 y(k),則它們之間的關系可以用差分方程來表示:

其中,y(k)系數一般取 1;b1,…bM及 a0,…aN為常系數;對于特定的系統,M和N為常數,分別代表輸出最高階數和輸入最高階數。
對上式兩邊作z變換,并化簡得數字濾波器的傳遞函數為

其差分方程為

反之,當數字濾波器的傳遞函數已知時,對于任意輸入序列可由上式求得數字濾波器的輸出序列

其中,Z-1[·]表示逆 z變換[1]。
數字濾波器的設計有無限沖激響應濾波器(IIR)和有限沖激響應濾波器(FIR)兩種選擇。無限沖激響應濾波器的設計是借助模擬濾波器轉換的設計方法,一般有公式和圖表可查詢,另外還有一些典型模擬濾波器可供選擇,這種方法相對比較簡單[2]。有限沖激響應濾波器主要采用非遞歸結構,可以保證絕對的穩定,這有利于對諧波相位的分析。
在數字濾波器差分方程的基礎上,如果全部ak=0(k=0,1,…,N),此時系統的輸出只和輸入 x(n-k)有關系,則以上公式成為沒有反饋的遞歸結構。設FIR濾波器的單位沖激響應h(r)為一個 N 點有限長序列,其中 0≤r≤N-1。
則FIR數字濾波器的傳遞函數可以表示為

從FIR數字濾波器傳遞函數表達式可以看出,其傳遞函數是一個Z-1的N-1次多項式,它在z平面上有N-1個零點,沒有極點(有時認為在原點上有N-1個重極點)。其傳遞函數實際上就是單位抽樣序列的z變換。
當數字濾波器的技術指標確定后,可以用一定的方法去逼近,目前FIR濾波器設計主要有3種方法:窗函數法、頻率抽樣法和切比雪夫最佳一致逼近法。
FIR濾波器的設計任務是根據給定的技術指標確定一個傳遞函數H(z),使其頻率響應滿足給定的要求。這些方法設計出的濾波器特性都是在不同意義上對理想頻率特性的逼近。
若信號高頻分量很小,信號大部分能量集中在低頻處,那么諧波測量儀只要求測到20次諧波就可以了,截止頻率為1 000 Hz左右,20次以上的諧波需要由濾波器濾除,為了達到更好的濾波效果,在硬件濾波的基礎上又增加了數字濾波器。這里以有閉合公式可循的窗函數法為例來介紹FIR濾波器設計。
首先,各技術指標如下:

阻帶衰減小于50 dB。
對應的數字頻率如下:

理想低通濾波器的截止頻率為

FIR濾波器的設計采用MATLAB數字信號處理軟件包提供的專用函數來直接求取FIR濾波器系數[3]。在MATLAB中,提供了設計濾波器的函數。采用窗函數方法的函數fir1,調用格式為:b=fir1(n,ωn,window)或 b=fir1(n,ωn),其中 n 是濾波器階數,ωn是 0~1 的數,ωn=ωc/2π=0.25,window 為窗函數類型。由于濾波器長度N為34,因此階數n=N-1=33,則求取濾波系數的表達式為b=fir1(33,0.25)。表1為利用MATLAB計算所得的濾波系數表。

表1 濾波器系數表Tab.1 Filter coefficient
在滿足各技術指標的前提下,經MATLAB仿真,圖1為頻率響應曲線,阻帶衰減小于50 dB。圖2為S=S1+S2+S3的波形,其中 S1=sin(50×2×π×t),S2=0.15×sin(25×50×2×π×t),S3=0.1×sin(20×50×2×π×t)。 圖 3 為濾除掉 25 次諧波 S2和 20 次諧波S3后的波形圖。

圖1 頻率響應曲線Fig.1 Frequency response curve

圖2 濾波前波形Fig.2 Before filter

圖3 濾波后波形Fig.3 After filter
由濾波前后兩個波形對比可以看出,該濾波器對20次以上諧波的濾除效果比較理想。
實現FIR濾波的核心器件是美國德州儀器公司生產的TMS320F2812DSP芯片。芯片內12位精度的A/D轉換單元對輸入的模擬信號進行采樣,DSP讀取采樣值后對每一點進行FIR濾波處理,將數據存入內部存儲器,為下一步進行FFT運算做準備[4]。以下為FIR濾波器流程圖。

圖4 FIR濾波器流程圖Fig.4 FIR filter flow chart
下面對程序流程作詳細說明:
首先初始化DSP寄存器,分配存儲單元,并定義一些變量名稱,接著在數據存儲區中開辟一個N單元的緩沖區,存放由MATLAB設計出的N個濾波系數[5]。接下來讀入采樣值,并存入相應存儲器A,然后開始濾波運算。具體運算步驟如下:
1)累加器ACC清零,初始化兩個準備相乘的存儲單元A與B的計數值K和L;
2)將第K個采樣值AK與濾波器系數序列第L個數BL相乘(K+L=N+1),
并將乘積送入累加器進行累加;
3)將第 K-1個采樣值 AK-1存入 AK單元,此時 AK中的原數值被覆蓋;
4)重復(2)~(3)直至共完成 N 次乘加運算;
5)輸出處理結果。
濾波運算采用FFT算法。DSP控制器特有的反序間接尋址,為FFT算法的實現提供了方便。間接尋址方式還可以實現增/減1或增/減一個變址量,這就很容易實現各種查表方法。
介紹了采用窗函數設計法用Matlab仿真技術和DSP技術來實現FIR濾波器的設計過程。Matlab仿真非常方便設計出具有嚴格線性相位要求的濾波器,在應用中只需對程序中濾波器的起始頻率、截止頻率、采樣頻率和窗函數等參數進行修改就可實現需要的濾波功能,實用性強[7]。采用DSP控制器來實現FFT運算從而使設計實現實時控制。利用Matlab輔助DSP實現FIR濾波器的設計是解決濾波器從設計到實現的有效辦法,這個方法可以大大縮短DSP應用程序的開發時間,提高了設計效率,具有很強的實用性。
[1]宋壽鵬.數字濾波器設計及工程應用[M].江蘇:江蘇大學出版社,2009.
[2]程佩青.數字信號處理教程 [M].北京:清華大學出版社,2007.
[3]伍永鋒.FIR數字濾波器的MATLAB設計及DSP的實現[J].計算機光盤軟件與應用,2010(6):153-154.WU Yong-feng.MATLAB design and DSP realization of FIR digital filter[J].Computer CD Software and Applications,2010(6):153-154.
[4]鄧婷.基于Matlab和DSP數字濾波器的設計與實現[J].科學技術與工程,2011(7):4597-4601.DENG Ting.Digital filter design and implementation based on Matlab and DSP chip [J].Science Technology and Engineering,2011(7):4597-4601.
[5]尹玉興,劉振堅,項止武.基于Matlab的FIR數字濾波器設計與仿真[J].工礦自動化,2011(12):60-62.YIN Yu-xing,LIU Zhen-jian,XIANG Zhi-wu.Design and simulation of FIR digital filter based on matlab[J].Industry and Mine Automation,2011(12):60-62.
[6]趙秀鳥,仲佳嘉.一種FIR數字濾波器的快速算法及DSP實現[J].數字技術,2011(6):131-132 ZHAO Xiu-niao,ZHONG Jia-jia.Afast algorithm for FIR digital filters and DSP implementation[J].Digital Technology,2011(6):131-132.
[7]凌生強,廖柏林,丁亮,等.基于于Matlab的FIR帶通濾波器設計及DSP實現[J].現代電子技術,2012(5):176-178.LIN Sheng-qiang,LIAO Bai-lin,DING Liang,et al.Design of FIR band-pass filter based on Matlab and its implementation with DSP[J].Modern Electronics Technique,2012(5):176-178.