基于FPGA高階FIR濾波器的實(shí)現(xiàn)
摘要:從FIR數(shù)字濾波器的基本結(jié)構(gòu)模型出發(fā),分析了FIR濾波器的設(shè)計(jì)思路及具體實(shí)現(xiàn)方法,詳細(xì)介紹了FIR濾波器的分布式算法(DA)結(jié)構(gòu)。通過分析計(jì)算,得到普通DA結(jié)構(gòu)實(shí)現(xiàn)高階濾波器會(huì)消耗大量的查找表資源,這樣的資源消耗甚至令硬件資源不可接受。針對(duì)普通DA的不足,提出了改進(jìn)型DA結(jié)構(gòu)。并利用FPGA仿真軟件分別時(shí)64階FIR帶通濾波器的兩種改進(jìn)型DA結(jié)構(gòu)進(jìn)行仿真,結(jié)果表明改進(jìn)型DA結(jié)構(gòu)所消耗的資源大幅度降低。從而驗(yàn)證了改進(jìn)型DA結(jié)構(gòu)在降低運(yùn)算資源和提高性能等方面的優(yōu)越性。
關(guān)鍵詞:FIR數(shù)字濾波器;分布式算法結(jié)構(gòu);改進(jìn)型分布式算法結(jié)構(gòu);FPGA
在航天航空系統(tǒng)、雷達(dá)系統(tǒng)、遙感遙測(cè)系統(tǒng)等領(lǐng)域都涉及到如何在較強(qiáng)的背景噪聲和干擾信號(hào)下提取真正的信號(hào),并隨著系統(tǒng)對(duì)寬帶、高速、實(shí)時(shí)信號(hào)處理要求越來越高,對(duì)濾波器的處理速度、帶寬等性能要求也隨之提高。數(shù)字濾波器的硬件實(shí)現(xiàn)方法主要有:DSP、專用芯片和FPGA。用DSP實(shí)現(xiàn)濾波器,其程序順序執(zhí)行,因此運(yùn)算速度隨濾波器階數(shù)的增加迅速下降;專用芯片實(shí)現(xiàn)的濾波器功能相對(duì)單一,靈活性?。欢鳩PGA具有靈活的可編程邏輯和并行處理等優(yōu)點(diǎn),可很好地實(shí)現(xiàn)信號(hào)處理的實(shí)時(shí)性,同時(shí),開發(fā)程序的可移植性好,可以縮短開發(fā)周期,因此FPGA實(shí)現(xiàn)數(shù)字濾波器的設(shè)計(jì)越來越受到重視和廣泛應(yīng)用,本文數(shù)字濾波器的設(shè)計(jì)就是基于FPGA硬件實(shí)現(xiàn)。
1 FIR濾波器的基本模型
數(shù)字濾波器分為無限沖激響應(yīng)濾波器(IIR)和有限沖激響應(yīng)濾波器(FIR),IIR濾波器與FIR濾波器相比,IIR濾波器容易取得較好的通帶和阻帶特性,F(xiàn)IR濾波器系統(tǒng)穩(wěn)定且容易實(shí)現(xiàn)線性相位。系統(tǒng)穩(wěn)定和線性相位對(duì)系統(tǒng)的設(shè)計(jì)至關(guān)重要,故對(duì)FIR濾波器的普通分布式(DA)算法結(jié)構(gòu)進(jìn)行了分析探討與改進(jìn)。FIR濾波器的網(wǎng)絡(luò)傳輸公式可由式(1)表示:
式中:x(k)為輸入函數(shù);y(n)為輸出函數(shù);h(n-k)為濾波器系數(shù);N為濾波器的階數(shù)。根據(jù)式(1),F(xiàn)IR濾波器的結(jié)構(gòu)如圖1所示。
2 FIR濾波器的設(shè)計(jì)及實(shí)現(xiàn)
2.1 FIR濾波器設(shè)計(jì)
FIR濾波器的設(shè)計(jì)方法有:窗函數(shù)法、頻率抽樣法和最佳一致逼近法。本文以窗函數(shù)法為例介紹一下濾波器設(shè)計(jì)。設(shè)窗函數(shù)為凱賽窗,通帶截至頻率fc、阻帶起始頻率fa、通帶紋波δp和阻帶紋波δa,則濾波器階數(shù)N的計(jì)算如式(2)所示:
式中fs為抽樣頻率。由式(2)可見,通帶和阻帶的紋波系數(shù)越小,濾波器的階數(shù)越高。因此在設(shè)計(jì)FIR濾波器時(shí),需要在階數(shù),紋波系數(shù)和過渡帶之間進(jìn)行權(quán)衡,選出合適的模型。
2.2 FIR濾波器具體買現(xiàn)
相比用DSP實(shí)現(xiàn)FIR數(shù)字濾波器,采用FPGA實(shí)現(xiàn)可以獲得更快的速度,同時(shí)還可采取各種算法降低運(yùn)算資源,提高性能,分布式算法(DA)就是其中一種。隨著大規(guī)模集成電路的發(fā)展,特別是可編程邏輯器件的發(fā)展,DA算法在數(shù)字濾波器硬件設(shè)計(jì)中的研究進(jìn)一步加強(qiáng)。
2.2.1 DA算法結(jié)構(gòu)
DA算法結(jié)構(gòu)是將乘法運(yùn)算轉(zhuǎn)換成基于查找表的加法運(yùn)算,其基本原理為通過比特串行運(yùn)算產(chǎn)生兩組內(nèi)積結(jié)果代替乘法器結(jié)構(gòu),如式(3)所示:
式中:Ak為濾波器系數(shù);xk為濾波器輸入;N為濾波器階數(shù);y為濾波器輸出。對(duì)于無符號(hào)數(shù)和有符號(hào)數(shù)xk的二進(jìn)制表示式分別為式(4)和式(5):
式中:xk,i為xk的每位二進(jìn)制數(shù),值為0或1;B為xk的二進(jìn)制位數(shù)。將式(4)和式(5)分別帶入式(3)中,可得式(6)和式(7):
在濾波器設(shè)計(jì)中,一般采用有符號(hào)數(shù),由式(6)和式(7)可知,有符號(hào)數(shù)的計(jì)算公式含有了無符號(hào)數(shù)的計(jì)算,因此本文以有符號(hào)數(shù)為例來介紹DA算法的具體實(shí)現(xiàn)。DA算法結(jié)構(gòu)的實(shí)現(xiàn)過程如圖2所示。
對(duì)于FIR濾波器來說,A0至AN-1為常數(shù),因此由式(8),式(9)和式(10)可看出,y的值僅與系數(shù)的各種組合有關(guān),這種結(jié)構(gòu)可以利用查找表來實(shí)現(xiàn)。設(shè)FIR濾波器階數(shù)為N,系數(shù)的量化位數(shù)為M為,則需要存儲(chǔ)器(ROM)深度和寬度的計(jì)算公式分別為式(11)和式(12)所示:
[!--empirenews.page--]
式中。ceil代表向上取整。存儲(chǔ)器的結(jié)構(gòu)如圖3所示。
由圖3得到fi(i=0,1,2,…,N-1)的值,可直接進(jìn)行后續(xù)的累加,在很大程度上節(jié)省累加器資源。由式(11)可知查找表的深度以2的冪指數(shù)增加,即濾波器的階數(shù)增加n位,則ROM深度增加2n倍,若濾波器的階數(shù)N很大,就會(huì)消耗很多的查找表資源。這種以2的冪指數(shù)遞增的資源消耗是硬件資源不可接受的。為了克服DA算法的缺點(diǎn),提出了改進(jìn)型DA算法結(jié)構(gòu)。
2.2.2 改進(jìn)型DA結(jié)構(gòu)
改進(jìn)型DA結(jié)構(gòu)是將濾波器系數(shù)平均放到多個(gè)存儲(chǔ)器中,每個(gè)存儲(chǔ)器形成一個(gè)LUT,然后將多個(gè)LUT的結(jié)果相加,并通過流水線寄存器來實(shí)現(xiàn)。圖4為改進(jìn)型DA結(jié)構(gòu)圖。
設(shè)濾波器的階數(shù)N=PQ,則fi可變形為式(13):
根據(jù)式(13),fi的實(shí)現(xiàn)只需要P個(gè)深度為2Q的查找表,在很大程度上減少了存儲(chǔ)器的地址空間,LUT的規(guī)模也隨地址空間的減小而呈現(xiàn)指數(shù)減小。
由于FPGA的查找表結(jié)構(gòu)一般為4輸入,為了提高濾波器系統(tǒng)設(shè)計(jì)的效率,濾波器的階數(shù)N為4的整數(shù)倍。假設(shè)濾波器系數(shù)N取64,將64個(gè)系數(shù)按不同的組合相加作為查找表的數(shù)據(jù),數(shù)據(jù)用16 b有符號(hào)數(shù)表示。采用DA結(jié)構(gòu),需要的存儲(chǔ)器地址空間為16×264b,顯然這樣規(guī)模的存儲(chǔ)單元消耗是系統(tǒng)無法承受的。而采用改進(jìn)型DA結(jié)構(gòu),若存儲(chǔ)器的個(gè)數(shù)P=4,所需總的存儲(chǔ)器地址空間為16×4×216=416 Mb。若存儲(chǔ)器的個(gè)數(shù)P=8,所需總的存儲(chǔ)器地址空間為16×8×28=32 Mb。由此可見,采用改進(jìn)型DA結(jié)構(gòu)可使設(shè)計(jì)規(guī)模顯著減小,有效降低資源的消耗。
3 FIR濾波器的FPGA實(shí)現(xiàn)
設(shè)濾波器為帶通濾波器,窗函數(shù)為凱賽窗(Kaiser),通帶截止頻率為0.65,0.75,阻帶起始頻率為0.55,0.85,通帶和阻帶的紋波系數(shù)為0.001,利用窗函數(shù)法設(shè)計(jì),濾波器的階數(shù)為64階,其系數(shù)如圖5所示,幅頻及相頻特性如圖6所示。
[!--empirenews.page--]
3.1 量化位數(shù)對(duì)濾波器影響
濾波器系數(shù)的量化位數(shù)與濾波器精度和消耗的硬件資源緊密聯(lián)系,利用式(14)計(jì)算量化位數(shù)對(duì)濾波器精度的影響,量化誤差如圖7所示。
err(ω)=(f(ω)-f0(ω))2 (14)
式中:f(ω)為經(jīng)過量化后的頻譜特性;f0(ω)為標(biāo)準(zhǔn)的頻譜特性。
由圖7可看出,濾波器系數(shù)的量化位數(shù)越多,濾波器精度越高。當(dāng)量化位數(shù)低于14位時(shí)會(huì)引入較大的誤差;當(dāng)量化位數(shù)高于16位時(shí),通帶內(nèi)的量化誤差約為0,阻帶的量化誤差的均值小于0.1能夠滿足設(shè)計(jì)的需求;當(dāng)量化位數(shù)高于24位時(shí),量化誤差基本不變。綜合頻率精度,資源消耗和查找表的輸出端口為4,設(shè)計(jì)濾波器系數(shù)的量化位數(shù)為16位。
3.2 濾波器具體實(shí)現(xiàn)
FIR濾波器的輸入信號(hào)帶寬為10 MHz,調(diào)制頻率為70 MHz,調(diào)制系數(shù)為0.7的連續(xù)相位頻率鍵控(cpfsk)信號(hào),根據(jù)中頻采樣定理,采樣頻率為100 MHz,則輸入信號(hào)的幅頻和相頻特性如圖8所示。
以Xilinx公司‘-10’的xc4vsx55芯片為FIR濾波器的硬件支持,應(yīng)用Xilinx ISE 9.2i軟件分析存儲(chǔ)器個(gè)數(shù)P=4的改進(jìn)型DA算法結(jié)構(gòu)及存儲(chǔ)器個(gè)數(shù)P=8的改進(jìn)型DA算法結(jié)構(gòu)設(shè)計(jì)的濾波器性能,其達(dá)到最高速度分別為237.206MHz和264.589 MHz,資源消耗分別如圖9和圖10所示。由圖9和圖10比較可看出,P=4的改進(jìn)型DA算法結(jié)構(gòu)所消耗的資源比P=8的改進(jìn)型DA算法結(jié)構(gòu)所消耗的資源高很多。圖11和圖12為兩種改進(jìn)型DA結(jié)構(gòu)的仿真時(shí)序圖,圖中dout代表輸出信號(hào),cnt代表時(shí)延計(jì)算信號(hào)。從圖11及圖12可看出,P=8的改進(jìn)型DA結(jié)構(gòu)時(shí)延為24個(gè)時(shí)鐘周期(470 ns);P=4的改進(jìn)型DA算法結(jié)構(gòu)的時(shí)延為11個(gè)時(shí)鐘周期(210 ns)。綜上所述,與P=4的改進(jìn)型DA算法結(jié)構(gòu)相比,雖然P=8的改進(jìn)型DA算法結(jié)構(gòu)在時(shí)延方面存在不足,但其在資源消耗和速度等方面有明顯優(yōu)勢(shì)。
[!--empirenews.page--]
將經(jīng)過兩種改進(jìn)型DA算法結(jié)構(gòu)濾波未經(jīng)截取的38位輸出數(shù)據(jù),及經(jīng)截取的32.24位的輸出數(shù)據(jù)寫入文本,用Matlab讀取數(shù)據(jù)并進(jìn)行幅頻和相頻特性仿真,得到此改進(jìn)型DA算法結(jié)構(gòu)的濾波器效果一致。圖13為經(jīng)過改進(jìn)型DA算法結(jié)構(gòu)濾波后的三組數(shù)據(jù)幅頻和相頻特性以及Matlab未經(jīng)量化的幅頻和相頻特性,由圖13可知,經(jīng)過濾波器后的輸出數(shù)據(jù)的相頻和幅頻特性明顯優(yōu)于輸入信號(hào);且輸出的四組數(shù)據(jù)的幅頻和相頻特性幾乎是相同的,但資源消耗得到了優(yōu)化。
4 結(jié)語
本文詳細(xì)介紹了FIR數(shù)字濾波器普通DA算法的實(shí)現(xiàn)結(jié)構(gòu),進(jìn)而提出了改進(jìn)型DA算法的實(shí)現(xiàn)結(jié)構(gòu)。利用Matlab軟件分析了濾波器的精度隨濾波器系數(shù)量化位數(shù)的變化關(guān)系,在濾波器系數(shù)的量化位數(shù)為16時(shí),濾波器精度和所消耗資源達(dá)到最優(yōu)。并采用Xilinx公司的‘-10’的xc4vsx55芯片,對(duì)64階FIR濾波器的兩種改進(jìn)型DA算法結(jié)構(gòu)進(jìn)行FPGA仿真,仿真結(jié)果表明在高階濾波器方面,改進(jìn)型DA算法結(jié)構(gòu)在資源消耗、速度以及性能等方面具有較大優(yōu)勢(shì)。最后,利用Matlab軟件對(duì)輸出數(shù)據(jù)以及經(jīng)過截取的數(shù)據(jù)進(jìn)行仿真,得到對(duì)濾波器的輸出數(shù)據(jù)進(jìn)行適當(dāng)?shù)慕厝。粫?huì)影響輸出數(shù)據(jù)的幅頻和相頻特性,但可以提高整個(gè)系統(tǒng)的頻率和減少后級(jí)的資源消耗。