韓 建 魏運鋒 談卿瑕 趙曉丹
(1.東北石油大學電子科學學院,黑龍江 大慶 163318;2.大慶油田公司,黑龍江 大慶 163318)
數字濾波器主要有無限沖激響應數字濾波器(Infinite Impulse Response Digital Filter,IIR數字濾波器)和有限沖激響應數字濾波器(Finite Impulse Response Digital Filter,FIR數字濾波器)[1]。與FIR數字濾波器相比,要實現同樣的衰減特性,IIR數字濾波器的階數比FIR濾波器要低,通常也消耗較少的硬件資源,對于不要求線性相位的場合,IIR濾波器則更為適合[2]。
筆者采用FPGA技術,應用硬件描述語言實現IIR數字濾波器的設計。基于其串聯網絡結構的特點,先實現低階數字濾波器,再串聯實現高階數字濾波器。根據設計的數字濾波器系數,結合研究算法,在Quartus II軟件環境下,對程序進行了仿真,仿真結果初步說明了算法程序的有效性。
實現高階的IIR數字濾波器,可通過實現低階的IIR數字濾波器,然后串聯得到高階IIR數字濾波器的方法。筆者設計是六階IIR數字濾波器,要實現該濾波器,可根據系數先實現二階IIR數字濾波器[3]。一個二階的IIR濾波器的系統函數如下:
為了編程方便,把a0化為1,并且采用二階IIR濾波器的轉置網絡結構,如圖1所示。

圖1 二階IIR濾波器的轉置網絡結構
筆者實現IIR數字濾波器采用定點數制。為了避免計算中數據溢出和數據截短造成的計算錯誤,對數據的表示和處理進行了如下規定。
輸入和輸出數據用17位定點數表示,最高位為符號位,最后4位為小數部分,中間的12位為整數部分[4]。
系數用14位定點數來表示,由于最小量化單位為1/4096,定點數的格式是最高位為符號位,接下來一位為整數位,剩下的12位為小數位,該格式可以表示的數的范圍是-2~2。
運算過程中需要將系數和數據相乘,兩個不同格式定點數相乘會發生小數點移位。因此運算過程中的數據用30位定點數表示,格式為最高位為符號位,接下來的13位為整數位,剩下16位為小數位。
反饋數據與輸入、輸出數據格式相同。反饋數據是通過運算過程中的數據截短而來的,反饋數據取運算中間數據的符號位和第28位到13位組成[5]。如需實現其他指標的數字濾波器,數量表示可以靈活調整。
IIR濾波器由有符號乘法器、延時器和加法器組成,其電路結構如圖2所示。

圖2 IIR濾波器的硬件結構
有符號乘法器。有符號乘法器乘數必須為原碼,且由3個部分組成。首先是無符號的乘法器,用于計算輸入乘數除開符號位的部分的乘積。第二部分是將兩個乘數的符號位異或,得到輸出數的符號位。最后一個部分是把前兩部分的輸出合
并轉換為補碼[6]。根據數制規定,圖中的5個乘法器輸入數據分別為述的17位和14位定點數,輸出為30位定點數。
有符號加法器。有符號加法器的兩個加數都為補碼。這些加法器的輸入、輸出均為30位。
延時器。延時器是30位的上升沿D觸發器。
實現六階IIR數字濾波器,可將3個二階濾波器串聯在一起。但是兩個二階濾波器之間要接一個轉換器。文中模擬信號量化數據均為8位,所以在處理前,先把這些數據轉換為規定的17位定點數。由于二階IIR濾波器的輸入、輸出均為17位定點數補碼,而有符號乘法器要對源碼進行運算,因此兩個二階濾波器用一轉換器連接,其作用是將補碼轉換為源碼,以便下個濾波器的乘法器使用。另外一方面,處理結束后,送入D/A的數據只能有8位,所以在最后一個二階濾波器的輸出數據須轉換為8位[7]。六階IIR濾波器的實現如圖3所示。

圖3 六階IIR濾波器的實現框圖
根據FDAtool所設計的IIR數字濾波器系數,用Verilog HDL結合算法編寫數字濾波器IIR程序。以下是對實現的IIR濾波器的仿真,輸入是正弦信號,頻率分別100、200、2 000、4 000、5 000Hz。IIR濾波器指標為六階Butterworth帶通濾波器,采樣頻率為44 100Hz,下截止頻率為200Hz,上截止頻率為4 000Hz。仿真結果如圖4所示。

a. f=100Hz

b. f=200Hz

c. f=2000Hz

d. f=4000Hz

e. f=5000Hz
圖4中,輸入和輸出波形均符合正弦函數。輸入正弦頻率為100Hz和5 000Hz時,輸出波形均有明顯的衰減,輸入正弦頻率為200Hz和4 000Hz時,輸出波形有輕微衰減,輸入正弦頻率為2 000Hz時基本無衰減,這說明濾波器已經顯現出了帶通特性。表1列出了濾波器輸入、輸出波形的幅度和衰減與FDAtool所設計出的理論值的比較。

表1 IIR濾波器仿真與理論設計幅度數據的比較
從表1可以看出,用硬件描述語言實現的濾波器和FDAtool設計出的濾波器的衰減基本一致,只存在微小的偏差。這種偏差是由濾波器系數和輸入數據的有限字長效應造成的,但是沒有嚴重影響。仿真初步說明算法和程序均有效。
數字濾波器是現代數字信號處理系統的重要組成部分,IIR數字濾波器以其成本低、信號延遲小的特點得到了廣泛的應用。筆者以FPGA為硬件平臺完成了IIR數字濾波器的實現和測試分析,通過測試分析進一步證明了算法和程序的有效性,為IIR數字濾波器的發展前景和研究方向打下了基礎。