基于DSP的FIR數(shù)字濾波器的設(shè)計與實現(xiàn)
0 引言
數(shù)字信號處理現(xiàn)已在通信與信息系統(tǒng)、信號與信息系統(tǒng)、自動控制、需達、軍事、航空航天、醫(yī)療和家用電器等眾多領(lǐng)域得到了廣泛的應(yīng)用。在數(shù)字信號處理應(yīng)用中, 濾波占有十分重要的地位, 如對信號的過濾、檢測、預(yù)測等, 都要廣泛地用到濾波器。IIR數(shù)字濾波器的設(shè)計保留了一些典型模擬濾波器優(yōu)良的幅度特性, 但所涉及的濾波器相位特性一般是非線性的, 而FIR濾波器則可在保證幅度特性并滿足技術(shù)要求的同時, 也很容易做到嚴格的線性相位特性。
1 基于窗函數(shù)法的FIR濾波器設(shè)計
1.1 單位沖激響應(yīng)
首先應(yīng)根據(jù)技術(shù)要求確定待求濾波器的單位沖激響應(yīng)hd (n)。如果給出待求濾波器的頻率為Hd (ej), 那么單位取樣響應(yīng)則可用下式求出:
如果給出通帶阻帶衰減和邊界頻率的要求,則可選用理想濾波器作為逼近函數(shù), 從而用理想濾波器的特性作傅立葉逆變換, 以求出hd (n)。若理想低通濾波器為:
1.2 過渡帶及阻帶衰減
根據(jù)對過渡帶及阻帶衰減的要求, 設(shè)計時可選擇窗函數(shù)的形狀, 并估計窗口長度N。設(shè)待求濾波器的過渡帶用Δω表示, 它近似等于窗函數(shù)的主瓣寬度。由于過渡帶Δω近似與窗口長度N成反比。即N=A/Δω, 其中A決定于窗口形式, 例如, 矩形窗A=4π, 哈明窗A=8π等。按照過渡帶及阻帶衰減情況, 選擇窗函數(shù)形式。其設(shè)計原則是在保證阻帶衰減的情況下, 盡量選擇主瓣比較窄的窗函數(shù)。
1.3 單位取樣響應(yīng)的計算:
計算濾波器的單位取樣響應(yīng)h (n) 時, 可按正式進行:
驗算技術(shù)指標(biāo)是否滿足要求時其設(shè)計出的濾波器頻率響應(yīng)可采用下式進行計算:
計算上式時, 可使用FFT算法。如果H (ejω)不能滿足要求, 那么, 根據(jù)具體情況, 可重復(fù)上述設(shè)計, 直到滿足要求為止。
2 基于DSP的FIR數(shù)字濾波器實現(xiàn)方案
2.1 濾波系統(tǒng)的差分方程
2.2 實現(xiàn)方案
由于在卷積運算之前, h (n) 的N個數(shù)值是已知的, 因此, 可先在程序存儲器中開辟N個單元來存放h (n)。由于輸入序列x (n) 是不斷變化的,因此, 在數(shù)據(jù)存儲器中可開辟N個存儲單元并對其進行移位寄存, 其初始值分別為x (n)、x (n-1)……x (n-N-1), 然后采用循環(huán)尋址的方法對其進行訪問。每次輸入新的樣本時, 可以以新樣本改寫滑窗中的最老的數(shù)據(jù), 而滑窗中的其他數(shù)據(jù)則不需要移動。利用片內(nèi)8 kB (循環(huán)緩沖區(qū)長度)寄存器可對滑窗進行間接尋址, 循環(huán)緩沖區(qū)地址首尾相鄰。8級循環(huán)緩沖區(qū)的結(jié)構(gòu)如圖1所示, 其中頂部為低地址, 圖1中的(a) (b) (c) 分別為初始狀態(tài)、輸入1個和2個樣本后的存儲情況。
圖1 8級循環(huán)緩沖區(qū)結(jié)構(gòu)。
3 仿真結(jié)果
下面是一組信號采樣序列樣本x (n), 其中存在有高頻干擾。現(xiàn)以x (n) 作為輸入序列, 然后濾除其中的干擾成分。
{x (n)} = {-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,*,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0}
本設(shè)計的線性相位低通FIR數(shù)字濾波器的截止頻率ωc為0.2πrad, 窗口長度N為11。根據(jù)上述原理及實現(xiàn)方案, 若采用漢寧窗來實現(xiàn), 則可依據(jù)算式計算出用漢寧窗設(shè)計時的各h (n) 的系數(shù):
{h (n)} = {0, 0.0045, 0.0349, 0.0991, 0.1692,0.2, 0.1692, 0.0991,0.0349, 0.0045, 0}
在CCS2.0軟件中觀察x (n) 的輸入曲線如圖2所示, 圖3所示是其y (n) 輸出曲線。
由圖2和圖3兩圖對比可見, 經(jīng)過濾波后, 其輸入曲線變平滑了。并且, 根據(jù)計算所得:
{y (n)} = {0, -0.018, -0.1486, -0.4662, -0.893, -1.305, -1.7006, -2.1548, -2.6372, -3.0062, -3.1918, -3.3098, -3.5296, -3.8198,-4.009, -4.0482, -3.9514, -3.4596, -2.0672, 0.3162, 2.7908, 3.*8, 0.9464, -6.2018, -17.6736, -31.8884, -45.5584, -54.1796, -54.044, -44.916, -30.6*, -16.6756, -6.3676, 0.058,4.037, 6.5272, 7.5976, 7.318, 6.2854, 5.0906, 3.8896, 2.*2, 1.5078, 0.6238, 0.0788, -0.3198, -0.7348, -1.0768, -1.1474, -0.9538,-0.7342, -0.6852, -0.7*, -0.8172, -0.8136,-0.8834} 上面一共56個值。
圖2 x (n) 輸入曲線
圖3 y (n) 輸出曲線
4 結(jié)束語
通過實驗結(jié)果可見, 本設(shè)計用DSP設(shè)計的FIR數(shù)字濾波器的輸出曲線對應(yīng)值與計算所得值完全相符, 由此證明, 本設(shè)計的程序是正確的。
評論