基于FPGA的IIR數(shù)字濾波器硬件模塊的設(shè)計
關(guān)鍵詞: IIR 數(shù)字濾波器, 級聯(lián)結(jié)構(gòu), FPGA
Abstract:The introduction of this paper is in height of the method of the high-step IIR digital adopting cascade structure of wave filter in realizing on FPGA . the wave filter of Matlab design of in signal handling tool case are used to design the IIR wave filter that does not be quantified in accordance with application requirement very conveniently, and it is further described with VHDL language, through compiling, function emulatation, synthesis and can be realized on FPGA after sequential emulatation. This design development is good, and in actual use, the proper modificaion of peripheral parameter frequency that changes wave filter respondence can be realized according to different requirements on the FPGA of different scales.
Keywords: IIR digital wave filter; cascade structure; FPGA
1 引言
近年來由于半導(dǎo)體技術(shù)、計算機技術(shù)的成熟與迅速發(fā)展,使得科技與生活的密切結(jié)合,尤其是數(shù)字信號處理的突飛猛進(jìn),以及許多組件得以數(shù)字化及一體化,提供了小型、多功能、低成本與低功率消耗的特性。由于數(shù)字信號先天上優(yōu)于模擬信號,因此數(shù)字信號對噪聲的免疫力遠(yuǎn)較模擬信號來得好,使得數(shù)字信號能長時間的保存或長距離的傳輸且比較不容易產(chǎn)生失真現(xiàn)象。數(shù)字信號處理(Digital Signal Processing DSP)在通信與信息系統(tǒng)、信號與信息系統(tǒng)、自動控制、雷達(dá)、軍事、航空航天、醫(yī)療和家用電器等眾多領(lǐng)域得到了廣泛應(yīng)用。本設(shè)計是基于數(shù)字信號處理的基礎(chǔ)上,實現(xiàn)的IIR數(shù)字濾波,對于采集信號精度的提高,具有借鑒意義。
2 硬件系統(tǒng)介紹
2.1 系統(tǒng)框圖
系統(tǒng)硬件框圖如圖2.1所示。主要由A/D轉(zhuǎn)換、FPGA、存儲器和D/A轉(zhuǎn)換四部分組成。
2.2部分芯片介紹
一個電路的性能與元器件的選擇是密切相關(guān)的,下面將從控制芯片、存儲器、A/D轉(zhuǎn)換和D/A轉(zhuǎn)換四個方面介紹系統(tǒng)硬件設(shè)計。
數(shù)字信號處理芯片,我們選用采用Xilinx公司的XC2S50型號的FPGA芯片。用FPGA進(jìn)行數(shù)據(jù)采集存儲的有以下優(yōu)點:(1)FPGA采取有多少數(shù)據(jù)轉(zhuǎn)換芯片用多少控制單元模塊的策略,功能控制模塊與數(shù)據(jù)轉(zhuǎn)換芯片是一一對應(yīng)的關(guān)系,在硬件上保證了數(shù)據(jù)采集的完全并行性;(2)XC2S50芯片內(nèi)有RAM塊,可以設(shè)計為數(shù)據(jù)緩沖,方便解決數(shù)據(jù)流阻塞的問題;(3)FPGA芯片讀寫速度較高,在采集和存儲速度都上不會存在任何問題;(4)FPGA的設(shè)計采用在線編程的方式進(jìn)行,修改和調(diào)試都相當(dāng)快捷、方便;(5)FPGA的外圍電路除了一塊配置芯片外,不再需要其他任何外圍器件,集成度高,可靠性強。
對于A/D和D/A轉(zhuǎn)換芯片,我們選用高精度的16位轉(zhuǎn)換芯片ADS8402和MAX5631,有利于提高所測數(shù)據(jù)的精度。
2.3 硬件工作過程
傳感器采集的模擬信號,經(jīng)過ADS8402芯片以后轉(zhuǎn)換為數(shù)字信號,將數(shù)字信號輸入FPGA芯片中,F(xiàn)PGA芯片采用IIR數(shù)字濾波算法對輸入信號進(jìn)行處理,將處理后的信號一方面可以通過數(shù)字接口進(jìn)行傳輸,另一方面可以經(jīng)AD變換以模擬量的形式輸出,通過前后輸出和輸入信號的對比,我們就可以直觀的分析濾波效果。
3 IIR數(shù)字濾波器的原理和設(shè)計
數(shù)字濾波器是實現(xiàn)數(shù)字濾波的核心器件,按類型分為2大類:無限沖激響應(yīng) IIR和有限沖激響應(yīng)FIR數(shù)字濾波器。IIR數(shù)字濾波器在很多領(lǐng)域中有著廣闊的應(yīng)用前景,與FIR數(shù)字濾波器相比,它可以用較低的階數(shù)獲得高選擇性,所要求的階用存儲單元少,且成本低、信號延遲小,同時還可以利用模擬濾波器設(shè)計成果,設(shè)計工作量相對較小。
3.1 IIR 數(shù)字濾波器的結(jié)構(gòu)
高階IIR濾波器可通過傳遞函數(shù), 表示為:
(3.1-1)
由于高階IIR濾波器可以用若干個二階網(wǎng)絡(luò)級聯(lián)起來構(gòu)成。對于每一個二階基本節(jié),
它可以用轉(zhuǎn)置直接II型結(jié)構(gòu)加以實現(xiàn), 如圖3.1所示。
圖 3.1 標(biāo)準(zhǔn)二階部分的轉(zhuǎn)換
3.2 濾波器系數(shù)的計算
該系統(tǒng)的設(shè)計指標(biāo)為:模擬信號采樣頻率為2MHZ,每周期最少采樣20點,即模擬信號的通帶邊緣頻率為fp = 100KHZ,阻帶邊緣頻率fs = 1MHz,通帶波動RP不大于0.1dB(通帶誤差不大于5%),阻帶衰減AS不小于32dB。
本系統(tǒng)函數(shù)H(z)的計算采用MATLAB軟件中數(shù)字信號處理工具箱比較方便,其中有兩個現(xiàn)成的函數(shù)可以使用:ellipord(Fp/π,F(xiàn)s/π,Rp,As)函數(shù)用來計算數(shù)字橢圓濾波器的階次N和3dB截止頻率Fn,而 ellip(N,Rp,As,F(xiàn)n)函數(shù)可以求得直接型橢圓IIR濾波器的各個系數(shù)。利用MATLAB軟件進(jìn)行計算,可得:b =(0.0271 -0.0724 0.0984 -0.0724 0.0271),a =(1.0000 -3.3553 4.3439 -2.5578 0.5771)。
通過調(diào)用以上兩個函數(shù)計算得到的系統(tǒng)函數(shù) :
(3.2-1)
上面的式子是直接型結(jié)構(gòu),它的實現(xiàn)需用的乘法器和延遲單元相對較多,而且分子和分母的系數(shù)相差較大,需要較多的二進(jìn)制位數(shù)才能實現(xiàn)相應(yīng)的精度要求。如果采用二階節(jié)級聯(lián)實現(xiàn),一來各個基本節(jié)的零點、極點可以很方便地單獨進(jìn)行調(diào)整,二來可以降低對二進(jìn)制數(shù)位數(shù)的要求。下面給出了一個直接型結(jié)構(gòu)轉(zhuǎn)為級聯(lián)型結(jié)構(gòu)的 文件,即利用[b0,b,a]=dir2cas(b,a) ,可得b0 = 0.0271。對該系數(shù)進(jìn)行合理安排后可得式(3.2-2):
為了使設(shè)計簡便以及資源得充分利用,我們應(yīng)該對系數(shù)進(jìn)行進(jìn)一步的量化,將系數(shù)由小數(shù)轉(zhuǎn)化為整數(shù),根據(jù)需要主要考慮量化精度和系統(tǒng)資源兩方面,將二階網(wǎng)絡(luò)的系數(shù)同時擴大N倍后作為新的系數(shù),然后再將輸出網(wǎng)絡(luò)的系數(shù)縮小N倍,并用二進(jìn)制數(shù)進(jìn)行表示,如下表3.1所示:
表3.1濾波器系數(shù)擴大
系數(shù) |
a0 |
a1 |
a2 |
b0 |
b1 | |
IIR1 |
原數(shù)據(jù) |
0.11 |
0.1041 |
0.11 |
1.58 |
0.6469 |
擴大1024 后的系數(shù) |
113 |
107 |
113 |
1618 |
662 | |
IIR2 |
原系數(shù) |
0.2464 |
0.426 |
0.2464 |
1.7753 |
0.892 |
擴大1024 后的系數(shù) |
252 |
436 |
252 |
1818 |
913 |
經(jīng)過系數(shù)擴大后的系統(tǒng)函數(shù)級聯(lián)表達(dá)式為:
(3.2-3)
以下為用VHDL語言所編寫濾波器級聯(lián)結(jié)構(gòu)的部分源程序
第一級乘累加器的源程序如下:
entity mac is
Port (clk:in std_logic;
x0:in bits8;
x1:in bits8;
x2:in bits8;
y0:in bits8;
y1:in bits8;
y2:out bits8
);
end mac;
architecture flex of mac is
begin
process
begin
wait until clk='1';
y2<=(113*x2-107*x1+113*x0+1618*y1-662*y0)/1024;
end process;
end flex;
其中第二級乘累加器的源程序與第一級基本相似,第一級的乘累加器輸出為第二級乘累加器的一個輸入,其余輸入為第一級輸出經(jīng)過寄存器后的輸出,或為反饋回來的信號,輸入時鐘和復(fù)位信號相同,第二級乘累加器的輸出,也為總的輸出,。
4 結(jié)束語
該驗證過程的輸入信號是一個正弦100HZ信號,在信號輸出穩(wěn)定后加上一個高脈沖200,一個低脈沖50,在初始狀態(tài)時,信號的值初始化為0,當(dāng)X信號經(jīng)過連續(xù)的輸入,信號逐漸穩(wěn)定,并輸入IIR濾波器的差分方程進(jìn)行濾波,將干擾脈沖濾掉,輸出100HZ穩(wěn)定的正弦信號,該信號的通帶衰減為0.09 dB,阻帶衰減為32.7 dB,滿足設(shè)計要求。
參考文獻(xiàn)
[1] .羅鵬飛、楊世海、朱國富翻譯.[英]EmmanuelC.I feachor,BarrieW Jervis.數(shù)字信號處理實踐方法.[M]北京:電子工業(yè)出版社.2004;5:82~84
[2]雪倪,向東.基于FPGA的四階IIR數(shù)字濾波器,重慶師范學(xué)院信息技術(shù)系。4:71~75
[3]任勇峰,莊新敏.VHDL與硬件實現(xiàn)速成,國防工業(yè)出版社.2005;5:158~159
[4]王世一.數(shù)字信號處理[M],北京:北京理工大學(xué)出版社.1997;3:50~52
[5] 陳志高,李樹廣. 基于TMS320F2812的有源濾波器的設(shè)計.微計算機信息.2007;21(2):158~159