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