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