《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > IIR數(shù)字濾波器的FPGA仿真與實(shí)現(xiàn)

IIR數(shù)字濾波器的FPGA仿真與實(shí)現(xiàn)

2009-09-25
作者:許金龍,蘇武潯

  摘 要: 采用自頂向下的模塊化設(shè)計(jì)思想,介紹了一種采用級(jí)聯(lián)結(jié)構(gòu)在FPGA上實(shí)現(xiàn)IIR數(shù)字濾波器的設(shè)計(jì)方案。設(shè)計(jì)IIR數(shù)字濾波器的二階節(jié),將二階節(jié)IIR數(shù)字濾波器級(jí)聯(lián)實(shí)現(xiàn)高階IIR數(shù)字濾波器,從而實(shí)現(xiàn)通過(guò)修改外圍參數(shù)來(lái)改變?yōu)V波器的頻率響應(yīng),根據(jù)不同的要求在不同規(guī)模的FPGA上加以實(shí)現(xiàn)。
  關(guān)鍵詞: IIR數(shù)字濾波器;FPGA;QuartusII;級(jí)聯(lián)結(jié)構(gòu)

?

  數(shù)字濾波器是實(shí)現(xiàn)數(shù)字濾波的核心器件。常用的數(shù)字濾波器有FIR數(shù)字濾波器和IIR數(shù)字濾波器。文章介紹了一種基于EDA技術(shù)中的模塊化設(shè)計(jì)思想,采用VHDL硬件描述語(yǔ)言對(duì)IIR數(shù)字濾波器中的一些關(guān)鍵電路模塊進(jìn)行設(shè)計(jì),最終在FPGA上實(shí)現(xiàn)IIR 數(shù)字濾波器的方法[1]。
1 IIR數(shù)字濾波器硬件設(shè)計(jì)原理
1.1? 數(shù)字濾波器的原理
??? 數(shù)字濾波器的功能是完成信號(hào)濾波處理,是用有限精度算法實(shí)現(xiàn)離散時(shí)間線性非時(shí)變系統(tǒng)[2]。一個(gè)數(shù)字濾波器的系統(tǒng)函數(shù)H(z)可以表示為:
  

  直接由H(z)得出表示輸入輸出關(guān)系的常系數(shù)線性差分方程為:
????
式中ai、bj-1為濾波系數(shù),當(dāng)bj-1均為零時(shí),該濾波器為FIR數(shù)字濾波器,當(dāng)bj-1不均為零時(shí),則為IIR數(shù)字濾波器。
1.2? IIR數(shù)字濾波器的硬件實(shí)現(xiàn)方案比較
  濾波器的實(shí)現(xiàn)主要包括兩大類(lèi):采用TMS320系列DSP芯片實(shí)現(xiàn)和采用PLD器件實(shí)現(xiàn)(主要包括FPGA和CPLD)。利用PLD器件實(shí)現(xiàn)時(shí),可以采用硬件乘加模塊,從而使其運(yùn)算速度比采用DSP器件快很多。因此基于FPGA的自編程實(shí)現(xiàn)方式成了濾波器實(shí)現(xiàn)的首選[3]。以下簡(jiǎn)要介紹IIR數(shù)字濾波器的設(shè)計(jì)方案和基于FPGA的實(shí)現(xiàn)方法[4]。
  方案一:直接相乘累加式
  對(duì)于二階的IIR數(shù)字濾波器,其差分方程為:

  因此可用5個(gè)硬件乘法器和4個(gè)硬件加法器來(lái)實(shí)現(xiàn),采用這種方法對(duì)于高階的IIR數(shù)字濾波器的FPGA的設(shè)計(jì)來(lái)說(shuō)是比較耗費(fèi)資源的。
  方案二:基于ROM查找表的VHDL結(jié)構(gòu)化設(shè)計(jì)[5]
  濾波器實(shí)現(xiàn)的主要任務(wù)是完成乘累加運(yùn)算,采用ROM查找表方法可以避免使用硬件乘法器。由二階IIR濾波器的差分方程可以看出:yn僅取決于變量xn、xn-1、xn-2、yn-1和yn-2,因此可將a0、a1、a2、b0、b1的所有部分積存儲(chǔ)在ROM中,而以變量xn、xn-1、xn-2、yn-1和yn-2作為ROM的地址,從中選出對(duì)應(yīng)的值,從而得到y(tǒng)n。
  此方法避免了占主要運(yùn)算量的乘法運(yùn)算,節(jié)省了FPGA硬件資源,但使用不夠靈活。特別是當(dāng)階數(shù)比較大時(shí),更改ROM內(nèi)的數(shù)據(jù)十分不便。
  方案三:改進(jìn)型設(shè)計(jì)
  結(jié)合直接相乘累加式和ROM查表法的優(yōu)點(diǎn),用1個(gè)5路8位×1位的乘法器在8個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)。其實(shí)現(xiàn)結(jié)構(gòu)如圖1所示。

?

?

  圖1中的X(n)與各自的系數(shù)的最高位相乘后,送入累加器相加后將和左移一位,以實(shí)現(xiàn)乘2運(yùn)算。下一個(gè)時(shí)鐘,寄存器內(nèi)數(shù)據(jù)與系數(shù)的次高位相乘,再送入累加器,然后再左移一位。接下來(lái)的6個(gè)時(shí)鐘進(jìn)行類(lèi)似的操作。第8個(gè)時(shí)鐘后,將累加器所得數(shù)據(jù)輸出即得到y(tǒng)(n),對(duì)累加器清零,接著再進(jìn)行下一次運(yùn)算。
  比較3種方案,方案三實(shí)現(xiàn)較為方便簡(jiǎn)潔,在節(jié)省了FPGA硬件資源的同時(shí),使得設(shè)計(jì)靈活,設(shè)計(jì)周期大為縮短,本設(shè)計(jì)即采用方案三來(lái)實(shí)現(xiàn)IIR數(shù)字濾波器。
2?IIR數(shù)字濾波器的具體實(shí)現(xiàn)和仿真
  二階級(jí)聯(lián)法用于實(shí)現(xiàn)IIR數(shù)字濾波器硬件電路的應(yīng)用是極為廣泛的,為此本文首先實(shí)現(xiàn)數(shù)字濾波器的二階節(jié),然后用二階節(jié)的級(jí)聯(lián)實(shí)現(xiàn)更高階的濾波器。
2.1?IIR數(shù)字濾波器二階節(jié)的FPGA實(shí)現(xiàn)
  IIR數(shù)字濾波器的二階節(jié)電路采用模塊化設(shè)計(jì),把二階節(jié)分為延時(shí)模塊和補(bǔ)碼乘加模塊,其中補(bǔ)碼乘加模塊是設(shè)計(jì)的核心。
2.1.1? 延遲模塊
  延遲模塊功能是在clk時(shí)鐘作用下將差分方程的各x、y值延遲一個(gè)時(shí)鐘以實(shí)現(xiàn)一次延時(shí)運(yùn)算,即當(dāng)延時(shí)模塊輸入為x(n)和y(n)時(shí),經(jīng)過(guò)延時(shí)后輸出x(n)、x(n-1)、x(n-2)、y(n-1)和y(n-2) ,然后將輸出送到補(bǔ)碼乘加模塊運(yùn)算。
2.1.2? 補(bǔ)碼乘加模塊
  補(bǔ)碼乘加模塊主要是用方案三的方法實(shí)現(xiàn)輸入序列{x(n)}、{y(n)}與系數(shù)ai、bi分別相乘后再相加的過(guò)程,即實(shí)現(xiàn)。為了避免過(guò)多地使用乘法器,本設(shè)計(jì)中乘加單元(MAC)的乘法器采用陣列乘法器,以提高運(yùn)算速度。
2.1.3? 二階節(jié)的頂層模塊設(shè)計(jì)
  頂層模塊設(shè)計(jì)采用原理圖輸入方法,將延遲模塊和補(bǔ)碼乘加模塊加入到系統(tǒng)中,并加入相應(yīng)的輸入輸出引腳構(gòu)成IIR濾波器的二階節(jié)。
2.1.4? 二階節(jié)的系統(tǒng)仿真與結(jié)果分析
  本次設(shè)計(jì)的二階節(jié)的輸入端x(n)寬為8位,可接8位AD轉(zhuǎn)換輸出的數(shù)據(jù),輸出y(n)為16位數(shù)據(jù)。將實(shí)現(xiàn)的二階節(jié)在QuartusII中進(jìn)行編譯綜合后,在波形圖中分別給定不同的濾波器系數(shù)和輸入不同的序列時(shí),進(jìn)行了波形仿真,這里給出其中的一個(gè)仿真波形如圖2所示(圖2是實(shí)現(xiàn)系統(tǒng)函數(shù)為:H(z)=(5+5z-1+5z-2)/(1-z-1-z-2) 的二階節(jié)的波形圖,其中a0、a1、a2、b0、b1為濾波器系數(shù),xn為輸入序列,yn為輸出序列)。

?

?


  下面將對(duì)用FPGA實(shí)現(xiàn)的二階節(jié)時(shí)序波形仿真值和用Matlab對(duì)二階節(jié)的仿真結(jié)果相比較,分別對(duì)在輸入序列相同、但濾波器系數(shù)不同和濾波器系數(shù)相同、但輸入序列不同等幾種情況分別進(jìn)行了比較,比較結(jié)果如表1所示。

?

  由表1可以看出所設(shè)計(jì)的二階節(jié)在不同系數(shù)和不同輸入情況下的FPGA仿真值和由Matlab計(jì)算值基本一致,說(shuō)明采用方案三設(shè)計(jì)的二階節(jié)達(dá)到了設(shè)計(jì)要求。此外,表中仿真值與計(jì)算值有所偏差,而且隨著值的增大偏差越來(lái)越大,這是由于輸入位寬僅為8位的有限精度運(yùn)算所引起的截?cái)嗾`差所致,要解決這一問(wèn)題可以通過(guò)增加二進(jìn)制位數(shù)來(lái)提高系統(tǒng)運(yùn)算精度。
2.2 高階IIR數(shù)字濾波器的FPGA實(shí)現(xiàn)
  要實(shí)現(xiàn)一個(gè)高階IIR數(shù)字濾波器,如果采用直接型結(jié)構(gòu)實(shí)現(xiàn),需要的乘法器和延遲單元相對(duì)較多,而且分子和分母的系數(shù)相差很大,因此需要較多的二進(jìn)制位數(shù)才能實(shí)現(xiàn)相應(yīng)的精度要求。而采用二階節(jié)級(jí)聯(lián)實(shí)現(xiàn),一方面各基本節(jié)的零極點(diǎn)可以很方便地單獨(dú)進(jìn)行調(diào)整,另一方面可以降低對(duì)二進(jìn)制位數(shù)的要求,因此選用級(jí)聯(lián)結(jié)構(gòu)。下面以四階IIR數(shù)字濾波器為例來(lái)說(shuō)明高階濾波器的實(shí)現(xiàn)。
2.2.1? 四階IIR濾波器的實(shí)現(xiàn)
  四階IIR數(shù)字濾波器需要采用2個(gè)二階節(jié)級(jí)聯(lián)構(gòu)成。其系統(tǒng)構(gòu)成原理圖如圖3所示。圖中busconv模塊為總線轉(zhuǎn)換模塊,作用是將16位數(shù)據(jù)轉(zhuǎn)換為8位數(shù)據(jù)輸出。

?


2.2.2? 四階IIR濾波器的仿真波形和結(jié)果分析
  四階濾波器輸入端x(n)寬為8位,輸出y(n)為16位數(shù)據(jù)。與二階節(jié)一樣將四階濾波器在QuartusII中進(jìn)行編譯綜合并進(jìn)行了時(shí)序波形仿真。在仿真中,設(shè)定的輸入序列xn為{1,2,3,4,5},輸出為YN。第1個(gè)二階節(jié)IIR2(1)的系數(shù)為:A00=1,A01=2,A02=1,B00=1,B01=1,第2個(gè)二階節(jié)IIR2(2)系數(shù)為:A10=1,A11=1,A12=2,B10=1,B11=2,即實(shí)現(xiàn)的四階濾波器的系統(tǒng)函數(shù)為:
  
  同樣將用FPGA實(shí)現(xiàn)的四階IIR濾波器時(shí)序仿真值與用Matlab仿真值進(jìn)行了比較,如表2所示。因?yàn)椴捎枚A節(jié)級(jí)聯(lián),這里僅給出一組比較,其他情況與二階節(jié)相同。

?

  由表2可見(jiàn)仿真結(jié)果與計(jì)算結(jié)果一致,且在不同的濾波器系數(shù)和不同輸入序列時(shí)所得出的結(jié)果與Matlab仿真值都一致,說(shuō)明采用2個(gè)二階節(jié)級(jí)聯(lián)實(shí)現(xiàn)四階IIR數(shù)字濾波器達(dá)到了設(shè)計(jì)要求。同樣由于二階節(jié)存在有限精度引起的截?cái)嗾`差,四階濾波器也存在截?cái)嗾`差。
  本文采用改進(jìn)型方法在FPGA上成功實(shí)現(xiàn)了IIR數(shù)字濾波器,這種方法優(yōu)點(diǎn)是不但減少了硬件乘法器的數(shù)量,節(jié)省了硬件資源,而且避免了系數(shù)發(fā)生變化時(shí)ROM中數(shù)據(jù)更改不方便的問(wèn)題。缺點(diǎn)是在時(shí)間上付出了一定代價(jià)。在實(shí)際應(yīng)用中可根據(jù)不同的階數(shù)、精度等要求,通過(guò)修改IIR數(shù)字濾波器外圍參數(shù)改變?yōu)V波器的頻率響應(yīng)以實(shí)現(xiàn)任意階數(shù)濾波器,并且可以根據(jù)不同要求選擇在不同規(guī)模的FPGA上加以實(shí)現(xiàn)。


參考文獻(xiàn)
[1]?UWE M B.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].劉凌,胡永生譯.北京:清華大學(xué)出版社,2003.
[2]?丁玉美,高西全.?dāng)?shù)字信號(hào)處理[M].西安:西安電子科技大學(xué)出版社,2004.
[3]?潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2000.
[4]?潘松,王國(guó)棟.VHDL實(shí)用教程[M].成都:電子科技大學(xué)出版社,2001.
[5] 李香萍.基于FPGA的IIR低通數(shù)字濾波器的實(shí)現(xiàn)[J].天津工程師范學(xué)院學(xué)報(bào),2005,9(03):45-49.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。