基于FPGA的FIR濾波器的性能研究
摘要:目前FIR濾波器的一般設計方法比較繁瑣,開發(fā)周期長,如果采用設計好的FIR濾波器的IP核,則開發(fā)效率大為提高。本方案基于Altera公司的CycloneⅡ系列芯片EP2C8Q208C8N,首先利用MATLAB中的濾波器函數(shù)fir2得出需產(chǎn)生的FIR濾波器的系數(shù),再導入FIR IP Core,成功完成了FIR數(shù)字濾波器的設計。另外分析了階數(shù)與不均勻采樣數(shù)據(jù)對FPGA資源的影響和時生成FIR濾波器的輸出性能的影響,并將實際輸出的幅頻特性圖與我們需要的幅頻特性圖相比較,驗證生成的FIR數(shù)字濾波器的性能。
關鍵詞:FIR IP Core;FIR數(shù)字濾波器;濾波器系數(shù);幅頻特性圖;EP2C8Q208C8N
在信號處理領域中,常常需要對信號進行加工處理,處理的本質(zhì)就是信息的變換和提取,是將信息從各種噪聲、干擾的環(huán)境中提取出來,變換成我們需要的形式。數(shù)字濾波器是由乘法器、加法器和延時單元組成的一種裝置,是一個離散時間系統(tǒng)按預定的算法,將輸入離散時間信號轉(zhuǎn)換為所要求的輸出離散時間信號的特定功能裝置。在一般情況下,圖像處理及數(shù)據(jù)傳輸都要求信道具有線性相位特性。有限沖擊響應(FIR)數(shù)字濾波器就可以做成具有嚴格的線性相位,同時又可以具有任意的幅度特性。此外,F(xiàn)IR濾波器的單位抽樣響應是有限長的,因而濾波器一定是穩(wěn)定的。故FIR濾波器廣泛應用于數(shù)字系統(tǒng)處理領域。但目前FIR濾波器的設計方法比較繁瑣,開發(fā)周期長,本文則介紹了一種簡潔有效的設計方法,并且注重它的資源及性能分析。
隨著IC(Integrated Circuit)技術的發(fā)展和EDA(Electronic Design Automatic)工具的完善,各大FPGA器件廠商及第三方都陸續(xù)推廣專門的信號處理IP(Intellectual Property)Core,使得基于FPGA的數(shù)字信號處理DSP(Digital Signal Processing)系統(tǒng)的開發(fā)更加便捷,利用IP Core設計FIR濾波器,設計周期短,占用邏輯資源少,其運算速度相比DSP處理器有很大的提高,故IP核也逐漸成為數(shù)字信號處理實現(xiàn)高
速實時的一種方式。
在設計一個FIR濾波器之前,首先要確定濾波器的技術指標。本文是通過MATLAB算出濾波器的系數(shù),導入IP核,就可通過FPGA實現(xiàn)任意的我們需要產(chǎn)生的濾波器。
1 FIR數(shù)字濾波器的設計
1.1 FIR數(shù)字帶通濾波器的系數(shù)設計原理
本文以設計帶通濾波器為例介紹如何設計基于IP核的FIR數(shù)字濾波器。現(xiàn)有一雙T帶阻濾波電路如圖1所示,測量一系列不同頻率對應的幅值,根據(jù)測量的幅頻特性關系,我們可通過MATLAB算出需要設計的帶通濾波器的系數(shù)。其帶阻網(wǎng)絡的中心頻率計算公式:
圖2為實際中用毫伏表逐點采樣法測量帶阻網(wǎng)絡的幅頻特性圖,用MATLAB軟件繪制出其幅頻特性圖。由于電阻電容的標稱誤差,實際中測量帶阻電路,其中心頻率點f0在3.7 kHz,衰減31.2133dB。
FIR數(shù)字帶通濾波器的系數(shù)設計原理是:設帶阻網(wǎng)絡的幅頻特性為H1(jw),F(xiàn)IR帶通網(wǎng)絡的幅頻特性為H2(jw),要實現(xiàn)數(shù)字幅頻均衡,則要滿足:
由以上分析知:將帶阻網(wǎng)絡進行頻率采樣,測量帶阻網(wǎng)絡的頻率值和對應的幅度值,則帶通濾波器的幅度值實際可認為是帶阻網(wǎng)絡的幅度值的倒數(shù)。由帶阻網(wǎng)絡的幅頻特性,可推算出需要產(chǎn)生的FIR帶通濾波器的性能指標,如圖3所示。
[!--empirenews.page--]
1.2 基于MATLAB的FIR數(shù)字濾波器的系數(shù)設計
最基本的FIR濾波器可用下式表示:
式(3)中x(n-i)是輸入采樣序列,h(i)是濾波器系數(shù),N是濾波器的階數(shù),y(n)表示濾波器的輸出序列。FIR數(shù)字濾波器設計的核心思想就是求出有限的脈沖響應來逼近給定的頻率響應即求出這N個系數(shù)h(i)。
在MATLAB中提供了一些濾波器的函數(shù),使FIR濾波器的運算更加方便和快速。
函數(shù)fir1是實現(xiàn)加窗線性相位FIR數(shù)字濾波器的經(jīng)典設計方法,可以設計出低通、高通、帶通和帶阻濾波器。
函數(shù)fir2是基于頻率取樣的FIR濾波器設計方法,其濾波器的頻率特性由矢量f和a決定,f和a分別為濾波器的頻率向量和幅值向量??紤]到驗證方法是采用數(shù)字幅頻均衡,所設計的FIR帶通濾波器是由帶阻網(wǎng)絡的幅頻特性決定的,所以本文是采用函數(shù)fir2()設計的。
函數(shù)fircls是多波段有限最小二乘FIR濾波器設計。
函數(shù)rids是最小二乘線性相位FIR濾波器設計。
函數(shù)firpm是Parks-McClellan最優(yōu)化FIR濾波器設計。
函數(shù)firreos是升余弦FIR濾波器設計。
函數(shù)kaiserord是用Kaiser窗進行設計的FIR濾波器的參數(shù)估計。
fir2()以頻率取樣為基礎可設計出任意形狀的FIR濾波器的頻率響應,最基本的調(diào)用形式如下:
其中返回的行向量b是一個包含n+1個n階FIR數(shù)字濾波器的系數(shù),此FIR濾波器的頻率特性是由頻率向量f和幅值向量a決定的。
調(diào)用程序代碼如下:
綜上所述,我們只需要知道幅值與頻率的關系,我們就可計算出任意階數(shù)的FIR濾波器的系數(shù)。
1.3 基于FIR IP Core設計FIR數(shù)字濾波器
Mtera提供的FIR Compiler是一個結合Altera FPGA器件的FIR Filter Core,使得基于FPGA的數(shù)字信號處理DSP(Digital Signal Proce-ssing)系統(tǒng)的開發(fā)更加便捷,如果采用設計好的FIR濾波器的IP核,設計周期短,占用邏輯資源少,其運算速度相比DSP處理器有很大的提高。
使用FIR Core之前,首先必須保證MATLAB、Ouartus II及IP核本身,即FIR Compiler等工具安裝正確。如果一切正常,打開QuanusⅡ,在MegaWizard Plug-In Manager庫中的DSP子庫中選擇FIR Compiler,選擇應用器件和輸出文件名。再點擊Next,則生成一個FIR Compiler功能模塊,如圖4所示。
單擊Parameterize按鈕,打開FIR濾波器核的參數(shù)設置窗口,進行FIR濾波器參數(shù)的配置。注意在Parameter Settings中,如果選擇的是從文件中導入系數(shù),則需要注意導入文件的格式,F(xiàn)IR Compiler支持的格式是一行只有一個數(shù)據(jù),且文件最后不能有回車。所以在MATLAB生成濾波器系數(shù)時,對其進行列處理,再將濾波器系數(shù)復制到一個(.txt)文件,將(txt)文件導入。
再按照圖4完成Step2、Step3,生成FIR模塊如圖5所示。此時只需要在頂層文件調(diào)用,編寫其輸入輸出引腳。再編寫外圍模塊AD、DA的程序,上電下載程序即可驗證產(chǎn)生的FIR帶通濾波器。[!--empirenews.page--]
2 基于FPGA的FIR數(shù)字帶通濾波器的系統(tǒng)測試
2.1 階數(shù)對FIR數(shù)字濾波器的性能影響
采用EP2C8Q208C8N這款FPGA,邏輯資源數(shù)為8 256,能做到的FIR帶通濾波器的最高階數(shù)為310階,AD轉(zhuǎn)換芯片是采用8位模擬數(shù)字轉(zhuǎn)換芯片、采樣速率高達40 MSPS的TLC5540,基準電壓選5 V,DA轉(zhuǎn)換芯片是采用10位轉(zhuǎn)換速率為165 MSPS的DAC9000。對FIR帶通濾波器的實際輸
出進行采樣,再將采樣的幅值和頻率值導入MATLAB,得到的幅頻特性曲線如圖6所示。
階數(shù)越高,其通頻帶越小,衰減特性也越尖銳,越接近我們需要設計的FIR帶通濾波器,但不足之處就是耗費資源,其資源利用情況如表1所示。
2.2 不均勻采樣數(shù)據(jù)對FIR數(shù)字濾波器的性能影響
不均勻采樣,就是在幅度衰減劇烈的頻率附近多選取數(shù)據(jù)采樣點,而在其它幅度變化不劇烈的頻段少選取采樣點。在保持FIR濾波器階數(shù)不變的前提下,改變每組采樣數(shù)據(jù)的采樣點個數(shù),每組采樣數(shù)據(jù)均采用不均勻采樣,可以得到不同的頻率向量f與幅度向量a,利用函數(shù)fir2()就可以得到不同的FIR濾波器特性系數(shù)。再將系數(shù)導入IP核,對產(chǎn)生的FIR帶通濾波器的實際輸出進行采樣,再將采樣的幅值和頻率值導入MATLAB,得出的幅頻特性曲線如圖7所示。
知道采樣數(shù)據(jù)的多少對FPGA的資源利用率無多大影響,但是會影響FIR帶通輸出波形的抖動,采樣數(shù)據(jù)越密集,越能得出我們需要的幅頻特性圖。
3 結論
以上實驗表明,在FPGA上用FIR IP Core實現(xiàn)FIR數(shù)字濾波器是一種很簡潔有效的方法。如果FPGA資源比較大時,我們盡量選取高階的FIR濾波器,這樣能實現(xiàn)較好的濾波器性能;如果FPGA資源有限時,我們只能盡可能的選稍微高階的濾波器,但是可以通過細化采樣數(shù)據(jù)來達到較好的性能。