陳 櫻 楊培消 文申平 凌佳俊
(1.91668部隊 上海 200000)(2.海軍工程大學 武漢 430033)(3.91878部隊 湛江 524000)(4.91917部隊 北京 100000)
在這個信息化時代,數(shù)字信號處理技術(shù)越來越受到人們的關(guān)注[1],隨著計算機相關(guān)技術(shù)和微電子技術(shù)飛速地發(fā)展,其相關(guān)的理論和算法被廣泛應用于數(shù)字通信、模式識別、語音圖像信號處理以及自動控制等領(lǐng)域[2~4]。作為數(shù)字信號處理技術(shù)中非常重要的一環(huán),數(shù)字濾波器的應用幾乎遍布所有的數(shù)字信號處理系統(tǒng)中[5]。數(shù)字濾波器由加法器、數(shù)字乘法器以及相關(guān)延時單元組成的一種算法或裝置。它的主要功能是在數(shù)字域?qū)斎氲碾x散信號進行運算處理,從而達到濾除雜波得到目標信號的目的[6~8]。相比于傳統(tǒng)的模擬濾波器,數(shù)字濾波器沒有模擬器件的溫度和電壓漂移,性能更加可靠且能夠達到很高的精度,同時濾波器參數(shù)容易修改[9]。由于數(shù)字器件的規(guī)范性,數(shù)字濾波器能夠進行大規(guī)模的集成,通過DSP數(shù)字處理芯片可以實現(xiàn)并行操作處理[10]。
數(shù)字濾波器根據(jù)沖激響應的不同,能夠分為有限沖激響應(FIR)濾波器和無限沖激響應(IIR)濾波器。對于FIR濾波器,沖激響應在有限時間內(nèi)衰減為零,其輸出僅取決于當前和過去的輸入信號值[11]。對于IIR濾波器,沖激響應理論上應會無限持續(xù),其輸出不僅取決于當前和過去的輸入信號值,也取決于過去的信號輸出值[12]。本文主要在DSP TMS320C54x系列芯片上實現(xiàn)FIR濾波器。
對于一個FIR濾波器,假定其沖激響應為bi(i=0,1,2,…N-1),輸入信號為x(n),則有以下差分方程:

其對應的濾波器傳遞函數(shù)為

可以用橫截型(又稱直接型或卷積型)FIR數(shù)字濾波器的結(jié)構(gòu)圖表示[13],如圖1所示。

圖1 橫截型FIR濾波器的結(jié)構(gòu)圖
由上面的公式和結(jié)構(gòu)圖可知,F(xiàn)IR濾波算法實際上是一種乘法累加運算。它不斷地從輸入端讀入樣本值x(n),經(jīng)延時(z-1),做乘法累加,再輸出濾波結(jié)果y(n)。
在實際編程中,z-1的實現(xiàn)方法有兩種:線性緩沖區(qū)法和循環(huán)緩沖區(qū)法。下面進行分別介紹。
2.2.1 線性緩沖區(qū)法
線性緩沖區(qū)法的主要特點:對于N級FIR濾波器,在存儲器中開辟一個大小為N的緩沖區(qū),存放最新的N個數(shù)據(jù)樣本值。每次輸入新的樣本值時,新的樣本值總是放在緩沖區(qū)的頂部,其他數(shù)據(jù)都要下移一位。如圖2所示,圖中假定N=5。

圖2 利用線性緩存區(qū)法實現(xiàn)
每次從緩沖區(qū)的底部向上讀取數(shù)據(jù),每讀取一個數(shù)據(jù)后,要將此數(shù)據(jù)下移一位。
2.2.2 循環(huán)緩沖區(qū)法
循環(huán)緩沖區(qū)法的主要特點是:對于N級FIR濾波器,在數(shù)據(jù)存儲區(qū)開辟一個稱為滑窗的具有N個單元的緩沖區(qū),滑窗中存放最新的N個輸入樣本值。每次輸入新的樣本時,新的樣本將改寫滑窗中最老的數(shù)據(jù),其它數(shù)據(jù)則不需要移動。編寫程序時利用片內(nèi)BK(循環(huán)緩沖區(qū)長度)寄存器對滑窗進行間接尋址,因而循環(huán)緩沖區(qū)地址是首尾相鄰的,如圖2所示,圖中假定N=6。

圖3 利用循環(huán)緩沖區(qū)法實現(xiàn)
利用循環(huán)緩沖區(qū)法的主要優(yōu)點是:不需要移動數(shù)據(jù),可將循環(huán)緩沖區(qū)定位在數(shù)據(jù)存儲器的任何位置(而線性緩沖區(qū)則要求必須定位在DARAM中)。
本文在DSP實現(xiàn)中采用循環(huán)緩沖區(qū)法。
下面設計實現(xiàn)一個FIR低通濾波器,通帶邊界頻率為1500Hz,通帶波紋小于1dB;阻帶邊界頻率為2000Hz,阻帶衰減大于40dB;采樣頻率為8000Hz。
1)采用Matlab計算濾波器參數(shù)
在Matlab中使用窗函數(shù)法計算FIR濾波器,例如選擇Hamming窗,其程序為
b=fir1(16,1500/8000*2)。得到下表中FIR數(shù)字濾波器系數(shù)。

表1 FIR濾波器系數(shù)
將上述系數(shù)存盤,建立一個數(shù)據(jù)文件(如fir01.txt)。
2)建立DSP匯編程序的FIR濾波器系數(shù)文件
上述系數(shù)必須轉(zhuǎn)換成Q15格式,并放置在DSP匯編程序的。inc文件中,進行FIR濾波器的匯編程序的匯編、鏈接時,inc文件將被自動地加入到工程中去。
從Matlab中產(chǎn)生的fir01.txt文件,通過執(zhí)行轉(zhuǎn)換命令,將自動變換為firdata.inc濾波器系數(shù)文件。轉(zhuǎn)換命令為(在Matlab下):!firdat fir01.txt將產(chǎn)生firdata.inc文件。
其內(nèi)容如下:

3)產(chǎn)生濾波器輸入信號的文件
在使用CCS的Simulator進行濾波器特性的測試時,需要輸入時間信號x(n)。以下是一個產(chǎn)生輸入信號的C語言程序,這個信號是頻率為1000Hz和2500Hz的正弦波合成的波形。文件名為firin?put.c。


該程序?qū)a(chǎn)生名為firin.inc的輸入信號程序。
4)實現(xiàn)FIR數(shù)字濾波器的匯編程序


按照上述步奏操作,便能在DSP上實現(xiàn)數(shù)字濾波器,完成對混合信號高頻分量的濾波功能。
濾波之前生成的DSP混合信號波形:

圖4 濾波前DSP時域波形

圖5 濾波前DSP頻域波形
將信號輸入數(shù)字濾波器進行濾波,得到濾波后的信號。

圖6 FIR濾波器頻域特性

圖7 濾波前DSP時域波形

圖8 濾波前DSP頻域波形
從上面的波形圖可以看出,經(jīng)過低通FIR濾波器后,高頻信號被有效地濾除,得到所需的目標信號。實驗結(jié)果證明FIR低通濾波器在DSP中得到實現(xiàn)。
隨著技術(shù)的飛速發(fā)展,數(shù)字濾波器的應用不僅僅局限于數(shù)字信息處理和過濾干擾,它在生物學、指揮控制和醫(yī)療事業(yè)等相關(guān)方面也有廣泛的應用,并且功能也變得多樣化。DSP芯片的普及使數(shù)字濾波器越來越容易實現(xiàn),不但輸出精度較傳統(tǒng)濾波器有了大的提高,其執(zhí)行速度和實用性也有大的提升。