曾菊容
(宜賓學(xué)院物理與電子工程學(xué)院,四川宜賓644000)
數(shù)字濾波器是數(shù)字信號處理中最為廣泛使用的一種基本線性處理模塊,其功能本質(zhì)上是將一組輸入的序列通過一定的運算后轉(zhuǎn)化為另一組數(shù)字序列。它可以實現(xiàn)模擬器件很難達(dá)到的準(zhǔn)確線性相位特性。其實現(xiàn)方法主要有有限沖擊響應(yīng)數(shù)字濾波器(Finite Impulse Response,F(xiàn)IR)和無限沖擊響應(yīng)數(shù)字濾波器(Infinite Impuse Response,IIR)兩種。在相同技術(shù)指標(biāo)下,與FIR濾波器相比,IIR濾波器可以用較少的階數(shù)來滿足指標(biāo)的要求,這是因為IIR濾波器引入了反饋機(jī)制,并且能夠取得比較好的通帶和阻帶衰減特性。本文以實現(xiàn)的濾波器速度要快和硬件規(guī)模要小的目標(biāo)來討論了高階IIR濾波器的FPGA實現(xiàn)。
直接型結(jié)構(gòu)的優(yōu)點是簡單直觀,所使用的延時器數(shù)量少。缺點是改變某一個系數(shù){ak}將影響所有的極點,改變某一個系數(shù){bk}將影響所有的零點。更嚴(yán)重的是這種結(jié)構(gòu)的極點位置靈敏度太大,對有限字長效應(yīng)太敏感,容易出現(xiàn)不穩(wěn)定現(xiàn)象和產(chǎn)生較大誤差。對于三階以上的高階IIR濾波器,幾乎不采用直接型結(jié)構(gòu),而是采用級聯(lián)型、并聯(lián)型等其他形式的結(jié)構(gòu)。
級聯(lián)型結(jié)構(gòu)的一個重要優(yōu)點是存儲單元需要較少,硬件實現(xiàn)時,可以用一個二階節(jié)進(jìn)行時分復(fù)用。級聯(lián)型結(jié)構(gòu)的另一個特點是每一個基本節(jié)系數(shù)變化只影響該子系統(tǒng)的零極點,因此便于準(zhǔn)確地實現(xiàn)濾波器的零、極點,也便于調(diào)整濾波器的頻率特性。此外,級聯(lián)型結(jié)構(gòu)對系數(shù)變化的敏感度小,受有限字長的影響比直接型低,而且改變每一個二階節(jié)級聯(lián)的先后順序,可以使濾波器特性得到優(yōu)化,運算誤差最小。
并聯(lián)型結(jié)構(gòu)運算速度快,各基本節(jié)的誤差互不影響,還可以單獨調(diào)整極點的位置,但不能像級聯(lián)型那樣直接調(diào)整零點,因為子系統(tǒng)零點不是整個系統(tǒng)的零點。因此,當(dāng)要求準(zhǔn)確傳輸零點時,以級聯(lián)型為宜。綜合考慮以上3種結(jié)構(gòu)形式的優(yōu)缺點,本論文采用級聯(lián)結(jié)構(gòu)形式。圖2為高階IIR濾波器的二階節(jié)級聯(lián)形式。
因為數(shù)字濾波器涉及到大量的卷積運算,所以在使用硬件實現(xiàn)時將會占用大量的資源。為了避免這種情況的實現(xiàn),可以利用FPGA芯片所具有的查找表結(jié)構(gòu),將卷積運算轉(zhuǎn)化為查表移位求和運算。該算法結(jié)構(gòu)有串行和并行兩種,串行結(jié)構(gòu)處理速度慢,并行結(jié)構(gòu)處理速度快,但是硬件規(guī)模增大了,它是以增加額外的LUT、寄存器和加法器為代價來提高速度的。本論文對兩種結(jié)構(gòu)方式進(jìn)行這種,提出一種串并結(jié)合的分布式算法,其基本思路是將輸入數(shù)據(jù)分段,各小段再查表移位相加,這些小段的處理是并行的,可提高運算速度,然后再將小段運算后的部分和再移位相加。其具體結(jié)構(gòu)如圖3所示,該圖為一個基本二階節(jié)DA算法結(jié)構(gòu),其中輸入信號和反饋信號具有同樣數(shù)據(jù)寬度,均為16位。圖中,DAl,DAll是4位DA算法模塊,其中DAll是最高4位DA算法模塊,DA2是高4位和低4位DA結(jié)果相加模塊,DA3為高8位和低8位DA結(jié)果相加模塊,加法器是將輸入部分和反饋部分計算結(jié)果相加。
圖3 基本二階節(jié)串并結(jié)合的DA算法結(jié)構(gòu)Fig.3DA arithmetic structure combined the cascade and parallel for the basic 2 order
本文設(shè)計的IIR濾波器抽樣率為Fs=10 MHz的低通濾波器,其通帶截止頻率Fp=500 kHz,阻帶截止頻率Fs=550 kHz,通帶最大衰減Ap=0.1 dB,阻帶最小衰減Ap=60 dB。由于橢圓型濾波器相比巴特沃斯型和切比雪夫型實現(xiàn)時所需要的階數(shù)最少,所以文中采用橢圓型濾波器來實現(xiàn)。利用Matlab軟件計算系統(tǒng)函數(shù),先利用函數(shù)ellipord(Wp,Ws,Rp,Rs)計算出橢圓濾波器的階數(shù)N和3 dB截止頻率Wn,再利用函數(shù)ellip(N,Rp,Rs,Wn)可以求得直接型橢圓IIR濾波器的各個系數(shù)。通過調(diào)用以上兩個函數(shù)計算得到的傳遞函數(shù)H(Z)為[2]:
由傳遞函數(shù)可見這是一個10階IIR濾波系統(tǒng)。借助Matlab信號處理工具箱中函數(shù)tf2sos可實現(xiàn)將傳遞函數(shù)轉(zhuǎn)換為二階節(jié)級聯(lián)形式。
數(shù)字濾波器在硬件實現(xiàn)時,需要把由理論設(shè)計出的理想數(shù)字濾波器傳遞函數(shù)的各系數(shù)加以量化。由傳遞函數(shù)可以知道,系數(shù)直接決定了零、極點的位置,并且極點的位置對系統(tǒng)特性影響最大。由于系數(shù)的量化,使系統(tǒng)函數(shù)的零、極點會偏離原來的準(zhǔn)確位置。這樣實際的傳遞函數(shù)將與原來設(shè)計的有所不同,也就是系統(tǒng)的實際頻率響應(yīng)與設(shè)計的濾波器的頻率響應(yīng)有偏離,如果系數(shù)量化使零、極點的移動太大,就會使濾波器的性能指標(biāo)達(dá)不到設(shè)計的技術(shù)要求。甚至可能使原來在單位圓內(nèi)的極點移至單位圓外,穩(wěn)定系統(tǒng)成為不穩(wěn)定系統(tǒng)。
圖4 濾波器系數(shù)量化前后的幅頻特性Fig.4Amplitude frequency characteristic of filter coefficient before and after quantification
圖4比較了在本設(shè)計中系數(shù)用不同位數(shù)的二進(jìn)制數(shù)表示的幅頻特性仿真圖,其中用虛線表示的曲線是系數(shù)用10位二進(jìn)制數(shù)表示的系統(tǒng)的幅頻特性,用實線表示的曲線是系數(shù)用16位二進(jìn)制數(shù)表示的系統(tǒng)的幅頻特性和理論計算出的幅頻特性(二者基本重合在一起)。通過仿真圖可以看出用10位二進(jìn)制數(shù)對系數(shù)進(jìn)行量化后幅頻特性曲線嚴(yán)重偏離理論設(shè)計值,而16位二進(jìn)制數(shù)量化則基本與理論計算出的幅頻特性曲線重合,能達(dá)到預(yù)定的指標(biāo)。通過討論系數(shù)的量化誤差對極點位置的影響,本文確定濾波器系數(shù)的數(shù)據(jù)位數(shù)為16位,精度14位,輸入數(shù)據(jù)寬度為12位符號數(shù),反饋數(shù)據(jù)寬度為16位,輸出數(shù)據(jù)寬度為14位。
設(shè)計中采用了原理圖輸入方式和文本輸入方式,在QuartusⅡ中完成了上述10階IIR濾波器的設(shè)計,為了檢測該濾波器是否正確工作,手動輸入周期數(shù)據(jù)(10個-511,10個511),相當(dāng)于周期方波信號(頻率為500 kHz,采樣率為10 MHz)一個周期的采樣數(shù)據(jù),Matlab的計算值與QuartusⅡ的仿真值如表1所示。由信號理論分析可知,周期方波信號沒有偶次諧波,所以對三次及以上的諧波衰減經(jīng)過IIR濾波器后輸出僅有基波(頻率為500 kHz)正弦信號,理論計算給出的方波周期信號基波幅度650.95,由表1可見,Matlab軟件計算出的基波幅度為:(625.7-(-663.4))/2=644.55,與理論值的誤差為:(644.55-650.95)/650.95=-0.98%,QuartusⅡ軟件仿真輸出的基波幅度為:(600-(-652))/2=626,與理論值的誤差為:(626-650.95)/650.95=-3.83%,仿真值與理論值誤差較大是由于有限精度算法所引起的誤差,可以通過增加二進(jìn)制位數(shù)來提高系統(tǒng)的精度。
表1 濾波后輸出的數(shù)據(jù)Tab.1Output data after filter
測試系統(tǒng)包括了3個部分:信源、實驗電路和示波器。信源可由信號發(fā)生器提供,本次實驗中是通過對系統(tǒng)時鐘分頻得到的周期方波信號,因為周期方波信號含有豐富的諧波分量,便于用FFT圖觀測。實驗電路主要包括A/D轉(zhuǎn)換電路、IIR濾波器和D/A轉(zhuǎn)換電路。在實驗電路中,輸入的信號先經(jīng)過A/D轉(zhuǎn)換電路,轉(zhuǎn)換后的數(shù)字信號送入用FPGA實現(xiàn)的IIR濾波器電路進(jìn)行濾波處理,濾波后的數(shù)據(jù)仍然是數(shù)字信號,因此再通過A/D轉(zhuǎn)換電路將其還原為模擬信號。測試中采用雙蹤數(shù)字示波器DSll02C來觀測濾波前后的結(jié)果。測試結(jié)果如圖6所示。
圖5 測試系統(tǒng)組成框圖Fig.5The block diagram of test system
圖6 頻率為200 kHz方波濾波前后的效果圖Fig.6The signal before and after filter of square wave which frequency is 200 kHz
由信號理論分析可知,周期方波信號不含有偶次諧波,又由于所設(shè)計低通濾波器的通帶截止頻率為500 kHz,所以當(dāng)輸入為200 kHz時,高次諧波都被濾除了,只剩下基波,測試結(jié)果與理論分析一致。
本文完成了基于FPGA的高階IIR濾波器的設(shè)計與實現(xiàn)。首先結(jié)合IIR濾波器的基本結(jié)構(gòu),針對分布式算法中查找表規(guī)模過大的缺點,采用級聯(lián)或并聯(lián)結(jié)構(gòu),利用多塊查找表使得硬件規(guī)模極大地減小,提出了并行和串行相結(jié)合的設(shè)計方案,然后在QuartusⅡ軟件平臺上,對設(shè)計的濾波器進(jìn)行了仿真驗證,然后對Matlab理論值和仿真值進(jìn)行了比較分析,驗證了設(shè)計的IIR濾波器的正確性。最后還做了硬件測試,測試結(jié)果表明,本文所設(shè)計的濾波器硬件規(guī)模較小,系統(tǒng)最高時鐘頻率達(dá)到了80 MHz以上,體現(xiàn)了設(shè)計的實時性。同時,只要將查找表進(jìn)行相應(yīng)的改動,就能分別實現(xiàn)低通、高通、帶通IIR濾波器,體現(xiàn)了設(shè)計的靈活性。
[1]胡廣書.?dāng)?shù)字信號處理——理論、算法與實現(xiàn)[M].北京:清華大學(xué)出版社,2003.
[2]趙紅怡,張常年.?dāng)?shù)字信號處理及其MATLAB實現(xiàn)[M].北京:化學(xué)工業(yè)出版社,2002.
[3]鄒彥,莊嚴(yán).EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2008.
[4]黃曉紅,蔡江利.基于FPGA的改進(jìn)型FIR濾波器的實現(xiàn)[J].電子技術(shù)應(yīng)用,2009(5):32-34.HUANG Xiao-hong,CAI Jiang-li.Design of improved FIR filter based on FPGA[J].Application of Electronic Technique,2009(5):32-34.
[5]屈星,唐寧,等.基于FPGA的IIR數(shù)字濾波器的設(shè)計與仿真[J].計算機(jī)仿真,2009,26(8):304-307.QU Xing,TANG Ning et al.Design of IIR digital filter based on FPGA[J].Computer Simulate,2009,26(8):304-307.
[6]魏靈,楊日杰,等.基于分布式算法的數(shù)字濾波器設(shè)計[J].儀器儀表學(xué)報,2008,29(10):2100-2104.WEI Ling,YANG Ri-jie,et al.Design of FIR filter based on distributedarithmeticanditsFPGAimplementation[J].Chinese Journal of ScientificInstrument,2008,29(10):2100-2104.