陳仲源 廈門市專用通信局
數字濾波器根據其沖激響應函數的時域特性,分無限長沖激響應(IIR)濾波器和有限長沖激響應(FIR)濾波器。FIR濾波器在保證幅度特性滿足技術要求的同時,很容易做到有嚴格的線性相位特性。穩定和線性相位特性是FIR濾波器突出的優點。
用窗函數法設計一線性相位數字低通濾波器,其技術指標為:3dB截止頻率為:0.2 PI;阻帶截止頻率為:0.4PI;阻帶最小衰減為40dB;并編程用DSP實現。
由數字信號處理知識可知:有限長單位脈沖響應(FIR)濾波器的系統函數為的N-1階多項式,顯然系數即是該系統的的單位脈沖響應。
線性相位FIR濾波器通常采用窗函數法和頻率采樣法來設計。本設計采用窗函數法中的凱塞(Kaiser)窗,對于凱塞(Kaiser)窗,可以在主瓣寬度與旁瓣寬度衰減之間自由地選擇。由濾波器的過渡帶寬為,阻帶最小衰減為,這時的參數和濾波器長度N可由下列經驗公式求得:

2.2.1 產生輸入信號序列
利用MATLAB產生一輸入信號序列,該序列所含頻譜有直流的頻率分量,同時將生成的數字序列保存,導入到CCS5000里。
2.2.2 濾波器設計
根據指標要求其邊界頻率應為

利用MATLAB編寫程序,設計并計算出系數表。
由定點的知識可見,定點的選擇很重要,此處選擇Q14格式,若選Q15形式,由于所選的DSP芯片為16位字長的定點DSP芯片,而由MATLAB濾波運行結果可發現一些計算量已超出了動態范圍,所以MATLAB中x=x*16383, b2=b1*16383,實現十進制數轉換為定點數。
在TMS320C54x中,提供了一個用于對稱有限沖擊響應濾波器設計的專用指令FIRS 其操作如下:

FIRS指令在同一個機器周期內,通過C和D總線讀2次數據存儲器,同時通過D總線讀一個系數。
本設計采用循環尋址方式。在TI的DSP中,循環尋址通過如下方法實現。
①設定BK(寄存器塊大小)值,以確定循環尋址緩沖區的大小,也可將它看作是循環的周期。
②設定緩沖區的底部地址。必須注意:其低N位為零,其中N為滿足式(1)的最小N值。
2 N>BK (1)
③用輔助寄存器間接尋址循環緩沖區。
由于一個N(設N為偶數)階的FIR濾波器具有系數對稱特性,其輸出方程可以寫為:

所以可建立如下實現算法:
①在數據存儲中開辟兩個循環緩沖區,New循環緩沖區存放新數據,O1d循環緩沖區中存放老數據。循環緩沖區的長度為N/2。
②設置循環緩沖區指針,AR2指向New緩沖區中最新的數據,AR3指向O1d緩沖區中最老的數據。
③在程序存儲器中設置系數表。即導入先前由MATLAB生成的系數表(FIR_table.dat)。
④(AR2)+(AR3)→AH(累加器 A 的高位);(AR2)-1→AR2;(AR3)-1→AR3。
⑤將累加器B清零,重復執行下列操作N/2次:(AH)*系數ai+(B)→B,系數指針(PAR)加1,(AR2)+(AR3)→AH,AR2和 AR3減 1。
⑥保存和輸出結果。
⑦修正數據指針,讓AR2和AR3分別指向New緩沖區最新數據和O1d緩沖區中最老的數據。
⑧用New緩沖區中最老的數據替代O1d緩沖區中最老的數據。O1d緩沖區指針減1。
⑨輸入一個新數據替代New緩沖區中最老的數據。
重復執行第④~⑨步。
根據上述算法編寫DSP程序,輸入數據x_in, 輸出x_out的頻譜,如圖1,圖2所示

圖1:輸入信號序列x_in的頻譜(上)和相位譜(下)

圖2:濾波后輸出信號序列x_out的頻譜(上)和相位譜(下)
分析:由圖可見,輸入序列中所含頻譜分量分別為直流, 經過DSP所設計的系數對稱的FIR濾波器后,只剩直流, 的頻率分量,而 的頻率分量已被濾除,設計符合要求。
數字濾波器的應用十分廣泛,運行MATLAB語言,能很容易地設計出具有嚴格要求(如線性相位等)的濾波器。用定點DSP實現濾波器要考慮DSP的定標、誤差、循環尋址等幾個關鍵問題。