胡安民 魯少軻 邢玉鵬 李瑞 王宇
摘 要:在數(shù)字濾波器設(shè)計(jì)與應(yīng)用當(dāng)中,相比于以犧牲線(xiàn)性相位頻率特性為代價(jià)的無(wú)限沖擊響應(yīng)(IIR)數(shù)字濾波器,有限沖擊響應(yīng)(FIR)數(shù)字濾波器不僅保證了精確嚴(yán)格的線(xiàn)性相位特性,并且結(jié)構(gòu)簡(jiǎn)單穩(wěn)定。但在實(shí)現(xiàn)相同的設(shè)計(jì)指標(biāo)時(shí),有限沖擊響應(yīng)需要更高的階數(shù),為滿(mǎn)足高速高階數(shù)字濾波器設(shè)計(jì),文章提出一種改進(jìn)的分布式算法。該算法利用主流現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(FPGA)芯片的多相分解結(jié)構(gòu)和流水線(xiàn)技術(shù),采用多路復(fù)用加法器對(duì)數(shù)據(jù)進(jìn)行預(yù)相加,減少傳統(tǒng)分布式結(jié)構(gòu)的查找表規(guī)模。利用Matalb仿真設(shè)計(jì),Quartus II編譯測(cè)試,并下載到現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)中進(jìn)行運(yùn)行分析,結(jié)果顯示文章的方法有效地減少了濾波器對(duì)硬件資源的消耗,能夠較好地實(shí)現(xiàn)高階的FIR濾波器。
關(guān)鍵詞:FIR數(shù)字濾波器;分布式算法;現(xiàn)場(chǎng)可編程門(mén)陣列;數(shù)字信號(hào)處理
數(shù)字濾波器[ 1 ]在數(shù)字信號(hào)處理中有著信號(hào)分離和信號(hào)重建的功能,是數(shù)字信號(hào)處理的重要組成部分,隨著現(xiàn)代信號(hào)處理的高速發(fā)展,對(duì)數(shù)字濾波器的要求也越來(lái)越高,其中通過(guò)卷積實(shí)現(xiàn)的濾波器稱(chēng)為有限沖擊響應(yīng)(FIR)濾波器,它是一種結(jié)構(gòu)簡(jiǎn)單且總是穩(wěn)定的濾波器,嚴(yán)格意義上也只有FIR濾波器可以實(shí)現(xiàn)線(xiàn)性相位,滿(mǎn)足了大部分線(xiàn)性系統(tǒng)的需求。
誕生于20世紀(jì)80年代的現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(Field Programmable Gate Array, FPGA)和數(shù)字信號(hào)處理技術(shù)密切相關(guān),特別是在需要大量乘累加運(yùn)算的濾波器實(shí)現(xiàn)中有著一定的優(yōu)勢(shì),分布式算法[3](Distribute Algorithm,DA)因其充分利用了FPGA內(nèi)部豐富的組合邏輯資源,能將乘積運(yùn)算轉(zhuǎn)換為查表操作而得到了廣泛的應(yīng)用。
本文對(duì)比傳統(tǒng)的DA算法提出一種改進(jìn)的分布式算法,完成高速高階FIR數(shù)字濾波器設(shè)計(jì),并對(duì)比給出測(cè)試結(jié)果。
1 FIR濾波器基本理論
FIR濾波器[4 - 6],其脈沖響應(yīng)由有限個(gè)采樣值構(gòu)成。抽頭數(shù)為N,階數(shù)為N-1的FIR系統(tǒng)轉(zhuǎn)移函數(shù)、差分方程和單位脈沖響應(yīng)如下:
由表達(dá)式可以看出乘累加運(yùn)算由N次乘法運(yùn)算和N-1次加法運(yùn)算構(gòu)成。因此常規(guī)的數(shù)字濾波器設(shè)計(jì)都是將乘累加運(yùn)算分解為乘法運(yùn)算和加法運(yùn)算,數(shù)字濾波器的效率由硬件加法器乘法器的性能所決定,實(shí)現(xiàn)結(jié)構(gòu)如圖1所示,其中:×為硬件乘法器,+為硬件累加器,D為硬件流水線(xiàn)寄存器。
在使用FPGA芯片實(shí)現(xiàn)FIR濾波器時(shí)直接使用硬件乘法器十分耗費(fèi)資源,一般是借助分布式算法利用FPGA豐富的存儲(chǔ)資源進(jìn)行查表不直接使用硬件乘法器。
2 分布式算法原理
分布式算[7- 8](Distributed Algorithm,DA)廣泛應(yīng)用在數(shù)字濾波器傅里葉變換的乘累加運(yùn)算之中,它的主要特點(diǎn)是將需要進(jìn)行乘累加運(yùn)算的數(shù)據(jù)進(jìn)行二進(jìn)制位分解,構(gòu)成新的查找表(DALUT),而查找表中按地址索引存儲(chǔ)著相應(yīng)的乘積結(jié)果,用此方法完成乘累加中的乘法運(yùn)算,通過(guò)移位、累加等操作得到最終的結(jié)果。分布式算法的優(yōu)勢(shì)在于充分利用FPGA芯片內(nèi)部豐富的存儲(chǔ)資源,如分布式的查找表內(nèi)部的嵌入式RAM等,不必直接使用硬件乘法器,這對(duì)資源的折中是行之有效的。
對(duì)于線(xiàn)性系統(tǒng)乘累加結(jié)構(gòu)可以簡(jiǎn)單描述為:
其中xb(n)表示二進(jìn)制數(shù)表示的x(n)的第b位,為0或者1,為了進(jìn)一步計(jì)算提取式(9)中的公因子并進(jìn)行位重組:
對(duì)于有輸入信號(hào)為有符號(hào)數(shù),則同理x(n),y(n)可以表示為:
傳統(tǒng)分布式算法以速度優(yōu)先實(shí)現(xiàn)全并行分布式FIR數(shù)字濾波器[10],可以在一個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)一次濾波,硬件結(jié)構(gòu)原理圖如圖2所示。
3 基于FPGA特性改進(jìn)分布式算法
傳統(tǒng)分布式算法的實(shí)現(xiàn)結(jié)構(gòu),雖然并行結(jié)構(gòu)不需要通用乘法器,加快了處理速度,但查找表(DALUT)的規(guī)模深度會(huì)隨著階數(shù)的增高而變大,如實(shí)現(xiàn)一個(gè)32階的數(shù)字濾波器,深度為232(4294967296),對(duì)于存儲(chǔ)資源有限的FPGA芯片可實(shí)現(xiàn)的濾波器最高階數(shù)就受到了限制。
為了提高FPGA芯片的利用率,實(shí)現(xiàn)高速高階的FIR數(shù)字濾波器,本文提出如下的改進(jìn)分布式算法:
將濾波器系數(shù)進(jìn)行分組,利用查找表分別進(jìn)行部分查表,并將結(jié)果相加,同時(shí)利用FPGA流水線(xiàn)寄存器,極大的減小了設(shè)計(jì)規(guī)模。
設(shè)將線(xiàn)性系統(tǒng)乘累加結(jié)構(gòu)的系數(shù)分為C組則公式7可以表示如下:
其中N=C*M。
由此將可以將一個(gè)N階數(shù)字濾波器用C個(gè)M階并行的查找表(DALUT)實(shí)現(xiàn)。因此如公式10和12可以將與y(n)表示為如下的公式(14):
由公式(14)可知要實(shí)現(xiàn)C個(gè)M階分布式乘累加結(jié)構(gòu),需要C-1個(gè)輔助加法器。
相比于傳統(tǒng)分布式算法,假設(shè)輸入信號(hào)A(0)的量化位寬為Bqua則傳統(tǒng)分布式實(shí)現(xiàn)一個(gè)N階數(shù)字濾波器查找表的大小需要(Bqua+log2N)·2N bit的RAM來(lái)存儲(chǔ)二進(jìn)制數(shù)據(jù),并且傳統(tǒng)的全并行分布式算法需要多個(gè)查找表,而改進(jìn)的分布式算法結(jié)構(gòu)對(duì)查找表的結(jié)構(gòu)進(jìn)行了分組優(yōu)化,實(shí)現(xiàn)結(jié)構(gòu)如圖3所示,該結(jié)構(gòu)與傳統(tǒng)并行分布式算法有著的區(qū)別,為了具體說(shuō)明可作如下的舉例:
利用改進(jìn)的分布式算法設(shè)計(jì)一個(gè)32階數(shù)字濾波器,由32=2×16=4×8可以將32階拆分為C=16組2階乘累加或者C=8組4階乘累加:C=8時(shí),需要的查找表LUT個(gè)數(shù)8×24=128,C=16時(shí),需要的查找表LUT個(gè)數(shù)16×22= 64。
由此可知改進(jìn)的分布式算法分組越多,所需的查找表個(gè)數(shù)就越少,每個(gè)查表所占的存儲(chǔ)資源也越少,但同時(shí)需要增加輔助加法器,在實(shí)際的工程應(yīng)用中需要根據(jù)實(shí)際情況進(jìn)行分組。
4 高速高階FIR濾波器仿真與測(cè)試
首先借助Matlab工具箱Fdatool采用等波紋逼近法設(shè)計(jì)一個(gè)32階低通濾波器,仿真分析后,編譯VHDL語(yǔ)言下載到Altera公司的FPGA仿真平臺(tái)(采用Cyclone IV代的EP4CE75)進(jìn)一步驗(yàn)證本文改進(jìn)的分布式算法,同時(shí)和傳統(tǒng)分布式算法形成對(duì)比(見(jiàn)表1)。
數(shù)字濾波器等波紋最佳逼近法是一種優(yōu)化設(shè)計(jì)方法,它克服了窗函數(shù)法和頻率采樣法的缺點(diǎn),使最大誤差最小化并且整個(gè)逼近頻段上均勻分布。用等波紋最佳逼近法設(shè)計(jì)的FIR數(shù)字濾波器的幅頻響應(yīng)在通帶和阻帶都是等波紋的如圖4所示。
通過(guò)FDAtool獲取32階濾波器系數(shù),并轉(zhuǎn)換位定點(diǎn)整數(shù),利用仿真軟件Quarus II 編譯VHDL程序仿真濾波器同時(shí)將MATLAB 產(chǎn)生的需要仿真數(shù)據(jù)量化為32bit的補(bǔ)碼數(shù)據(jù)后下載到平臺(tái)仿真測(cè)試。借助Quarus II的時(shí)序仿真工具modelsim仿真分析。其仿真結(jié)果如圖5所示。從圖中可以看出FPGA的運(yùn)行結(jié)果與MATLAB結(jié)果相符。
同上改進(jìn)VHDL語(yǔ)言下載到芯片實(shí)現(xiàn)不同的階數(shù),通過(guò)對(duì)Quartus II編譯結(jié)果報(bào)告可以得到如表1所示的硬件資源消耗情況,本文提出的改進(jìn)分布式的算法占用更少的硬件資源,在Cyclone IV EP4CE75平臺(tái)下更高階的FIR數(shù)字濾波器。
5 結(jié)論與總結(jié)
從FPGA芯片仿真運(yùn)行的結(jié)果分析,本文所提出的改進(jìn)的分布式算法相比傳統(tǒng)全并行分布式算法結(jié)構(gòu)更加節(jié)省內(nèi)部存儲(chǔ)器資源,在超大規(guī)模集成電路和高階濾波器的要求下更加有效地提高硬件效率,但本文的算法只對(duì)無(wú)符號(hào)定點(diǎn)數(shù)的分布式算法進(jìn)行了重點(diǎn)改進(jìn)和仿真測(cè)試,對(duì)于有符號(hào)浮點(diǎn)數(shù)出現(xiàn)的更大的FPGA資源功率的消耗仍需更進(jìn)一步的研究。
[參考文獻(xiàn)]
[1]周先春,石蘭芳.數(shù)字信號(hào)處理[M].北京:清華大學(xué)出版社,2015.
[2]Uwe Mary-Baese.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].劉凌,譯.3版.北京:清華大學(xué)大學(xué)出版社,2011.
[3]曲仕茹,彭紀(jì)昌.一種在FPGA上實(shí)現(xiàn)的FIR濾波器的資源優(yōu)化算法[J].電子設(shè)計(jì)工程,2013(14):147-150.
[4]趙岸,顏毅華,陳林杰,等.基于FPGA高速FIR數(shù)字濾波器設(shè)計(jì)的改進(jìn)方法[J].天文研究與技術(shù),2015(1):109-116.
[5]李澤明,李錦明,楊燕姣.基于FPGA的高階FIR濾波器設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2013(23):6903-6906.
[6]崔亮,張芝賢.基于FPGA設(shè)計(jì)的FIR濾波器的實(shí)現(xiàn)與對(duì)比[J].電子設(shè)計(jì)工程,2012(20):168-170.
[7]MEHER P K.Hardware-efficient systemization of DA-based calculation of finite digital convolution[J].IEEE Transactions on Circuits-Ⅱ:Express briefs,2006(8):707-711.
[8]朱武,張佳民,張智明.基于并行結(jié)構(gòu)分布式算法的FIR濾波器設(shè)計(jì)[J].電子測(cè)量與儀器學(xué)報(bào),2007(4):87-92.
[9]袁江南,徐敏.基于DSP Builder的LMS自適應(yīng)濾波器設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2009(12):2100-2104.
[10]王法棟,劉宇.高階數(shù)字濾波器分布式算法結(jié)構(gòu)比較[J].聲學(xué)技術(shù),2009(3):307-311.
Design of High-Speed and High-Order Digital FIR Filter Based on FPGA
Hu Anmin, Lu Shaoke, Xing Yupeng, Li Rui, Wang Yu
(College of Computer and Information Engineering, Henan Normal University, Xinxiang 453007, China)
Abstract:Compared with the expense of the linear phase frequency characteristic of Infinite Impulse Response (IIR) digital filter, Finite Impulse Response (FIR) digital filter not only ensures the accurate strict linear phase characteristic, simple structure and stable in the design and application of digital filter. But the FIR need higher order when complete the same design index, this paper proposes an improved distributed algorithm in order to meet the design of high-speed and high-order digital FIR filter. The algorithm uses the Polyphase decomposition and pipeline technology and multiplexing adder pre-add the data to reduce the Look up Table (LUT) size of the traditional distribute algorithm of mainstream Field Programmable Gate Array (FPGA) chip . The paper makes use of Matlab simulation design, Quartus II compile testing and downloads to the Field Programmable Gate Array(FPGA) to analysis, the results show that the method effectively reduces the filter to the consumption of hardware resources, can realize the high-order FIR filter in a more appropriate way.
Key words:finite impulse response filter; distribute algorithm; field programmable gate array; digital signal processing