摘 要: 采用并行分布式算法和MAC算法給出了FIR濾波器的FPGA實(shí)現(xiàn),。以32階FIR濾波器的設(shè)計為例,,采用Altera公司Cyclone II系列的EP2C35F672C8 FPGA作為硬件平臺,通過Modelsim,、Quartus II,、MATLAB軟件平臺對設(shè)計進(jìn)行了聯(lián)合仿真測試分析及驗(yàn)證。結(jié)果顯示,,該設(shè)計達(dá)到了指標(biāo)要求,,功能正確,資源占用及處理速度均得到了優(yōu)化,。
關(guān)鍵詞: FPGA,;分布式算法;FIR濾波器
現(xiàn)場可編程門陣列FPGA(Field-Programmable Gate Array)在器件密度,、處理速度等達(dá)到片上系統(tǒng)的要求后,,其具有系統(tǒng)內(nèi)可重構(gòu)的特性成為實(shí)現(xiàn)DSP應(yīng)用的優(yōu)選方案之一。而且國外有許多院校和科研機(jī)構(gòu)都在研究FPGA與DSP的應(yīng)用,,實(shí)現(xiàn)了FPGA在電機(jī)轉(zhuǎn)子控制設(shè)備[1],、三相數(shù)字信號處理[2]、宇宙射線射頻干擾[3]等研究上的突破,。FPGA的DSP解決方案為數(shù)字信號處理開創(chuàng)了新的領(lǐng)域,,使得構(gòu)造的數(shù)字信號處理系統(tǒng)既能夠保持基于軟件解決方案的靈活性,又能接近ASIC的性能,。數(shù)字濾波器是數(shù)字信號處理的重要組成部分,,其實(shí)質(zhì)是用有限精度算法實(shí)現(xiàn)的離散線性時不變系統(tǒng)對數(shù)字信號進(jìn)行濾波處理[4]。數(shù)字濾波器根據(jù)其單位沖激響應(yīng)函數(shù)的時域特性可分為無限沖激響應(yīng)(IIR)濾波器和有限沖激響應(yīng)(FIR)濾波器兩類,。FIR濾波器是有限長單位沖激響應(yīng)非遞歸型濾波器,。它可以在幅度特性隨意設(shè)計的同時,,保證精確嚴(yán)格的線性相位,,廣泛應(yīng)用于數(shù)字信號處理系統(tǒng)中。
1 FIR濾波器基本原理
FIR濾波器是數(shù)字信號處理系統(tǒng)中最基本的元件,,它可以在保證任意幅頻特性的同時具有嚴(yán)格的線性相頻特性,,同時其單位抽樣響應(yīng)是有限長的,其具有以下特點(diǎn),。
?。?)系統(tǒng)的單位沖激響應(yīng)h(n)在有限個n值處不為零,。
(2)系統(tǒng)函數(shù)H(z)在|z|>0處收斂,,極點(diǎn)全部在z=0處(因果系統(tǒng)),。
(3)結(jié)構(gòu)上主要是非遞歸結(jié)構(gòu),,沒有輸出到輸入的反饋,,但有些結(jié)構(gòu)中(例如頻率抽樣結(jié)構(gòu))也包含有反饋的遞歸部分。
本文基于MAC的FIR濾波器采用了32個寄存器,,分別寄存輸入的32個8位寬數(shù)據(jù),,然后通過MAC結(jié)構(gòu)將數(shù)據(jù)與MATLAB計算的H(n)系數(shù)進(jìn)行乘法運(yùn)算,將結(jié)果累加,,輸出累加和數(shù)據(jù)并向右移動7位,,舍棄后7位,即縮小128倍,。出于FPGA不便于處理浮點(diǎn)型數(shù)據(jù),,在濾波器的參數(shù)上擴(kuò)大了128倍,而使得最終的MAC結(jié)構(gòu)輸出的數(shù)據(jù)都擴(kuò)大了相同的倍數(shù),,于是在這里舍棄后7位數(shù)據(jù),,從而實(shí)現(xiàn)縮小128倍的效果,使得輸出正確的輸出信號,。
通過Modelsim導(dǎo)入在濾波器設(shè)計中MATLAB自動產(chǎn)生的Modelsim的通用Testbench文件,,利用這個Testbench文件作為本文設(shè)計的FIR低通濾波器的測試激勵文件。仿真結(jié)果如圖4所示,,高頻部分被濾除,,保留了低頻信號部分。
通過綜合測試可知,,在資源占用方面,,本FIR濾波器僅占用556個邏輯單元(LE),216個寄存器資源以及203 bit的存儲資源,。資源占用皆不到5%,,占用面積極小。同時在速度方面,,本FIR濾波器能夠工作的最高頻率Fmax為195.73 MHz,,工作速度也能夠達(dá)到設(shè)計要求。
3 基于并行分布式算法的FIR濾波器
基于分布式算法(DA)的計算最顯然而直接的形式是位串行,,對基本算法的擴(kuò)展可消除這一潛在的吞吐能力限制[5],。位串行處理數(shù)據(jù)可得到適中的運(yùn)算速度。若輸入變量長度為N位,則需要N個時鐘周期來完成一次內(nèi)積計算,。提高運(yùn)算速度常見方法是將輸入字段分割成L個子字段,,然后并行處理這些子字段。該方法需要L倍的存儲查找表,,從而導(dǎo)致存儲需求和成本的直線上升,。通過將輸入變量分解為一位子字段可獲得最大速度。通過這種分解,,每一時鐘周期就可計算出一個新的輸出采樣,。采用MATLAB的Filter Design HDL CODER工具箱的數(shù)字濾波器設(shè)計軟件模塊FDATool(Filter Design & Analysis Tool)進(jìn)行設(shè)計,設(shè)定指標(biāo)如下:Beta值為0.5的Kaiser窗函數(shù),,采樣頻率為5 MHz,,截止頻率為1.5 MHz,階數(shù)為32階,。得到FIR的濾波器系數(shù)H(n),,將H(n)擴(kuò)大128倍,再表示為8位二進(jìn)制補(bǔ)碼,,以便于作為該低通濾波器的系數(shù),,同時在濾波器的輸出,將輸出結(jié)果向右移動7位,,以縮小128倍,,達(dá)到正確輸出結(jié)果。
采用MATLAB平臺,,對FIR濾波器進(jìn)行建模,,并配置相應(yīng)濾波器參數(shù)。采用頻率為0.5 MHz的正弦波和一個隨機(jī)噪聲,,通過疊加合成后輸入到設(shè)計的FIR濾波器,,得到輸入輸出波形,該FIR濾波器能夠很好地去除高頻部分,,保留低頻信號,,其結(jié)構(gòu)如圖5所示。
通過DSP Builder的交叉編譯平臺,,在經(jīng)過分析綜合,、編譯仿真等流程后得到本設(shè)計的32階FIR濾波器在FPGA上的具體實(shí)現(xiàn)結(jié)構(gòu)。
編譯綜合后,,再次加入兩正弦波,,頻率分別為0.5 MHz和2 MHz,疊加合成后通過實(shí)例化后的FIR濾波器,,濾波結(jié)果如圖6所示,??梢?,本FIR濾波器成功濾除高頻信號成分,,保留了低頻信號。
通過Quartus II布局布線及綜合仿真,,F(xiàn)IR濾波器最終適配到FPGA中,,系統(tǒng)占用1 042個邏輯單元(LE),寄存器為274個,??蛇_(dá)到的最大工作頻率Fmax為236.13 MHz,設(shè)計占用邏輯資源較少,,工作頻率較高,,完全符合設(shè)計目標(biāo)。
本文設(shè)計的FIR濾波器的兩種方案中,,濾波器的階數(shù)均為32階,,兩種方案均在Altera公司的Cyclone II系列EP2C35F672C8 FPGA芯片上實(shí)現(xiàn),采用Quartus II 11.1綜合布局布線后,,所占用的硬件資源總結(jié)如表1所示,。
從表1可知,本文與參考文獻(xiàn)[6]相比,,MAC結(jié)構(gòu)的硬件資源上要減少約29%,,DA算法的也減少了約73%;與參考文獻(xiàn)[7]相比,,MAC硬件資源減少約47%,,DA減少約9%,而在運(yùn)行速度方面,,MAC的增加了約8%,,DA的也增加了約25%;與參考文獻(xiàn)[8]相比,,MAC的硬件資源減少約13%,,DA的減少約43%。
本文采用FPGA平臺實(shí)現(xiàn)了FIR數(shù)字低通濾波器,,同一個濾波器,,實(shí)現(xiàn)結(jié)構(gòu)不同,所耗費(fèi)的資源和所能夠達(dá)到的速度完全不同,。本文采用流水線技術(shù)提高了濾波器的運(yùn)行速率,,同時運(yùn)用邏輯單元實(shí)現(xiàn)乘法運(yùn)算并復(fù)用該模塊以達(dá)到減少邏輯單元消耗,并通過適當(dāng)時序約束,,對布局布線進(jìn)行控制,,通過手動布局,,提高資源運(yùn)用率。與其他同類型的濾波器相比,,本文的MAC結(jié)構(gòu)濾波器硬件資源占用減少了約30%,,且運(yùn)行速度增加了約19%;DA算法濾波器也減少了約41%,,運(yùn)行速度增加了約25%,,不僅節(jié)約的硬件資源,而且提高了系統(tǒng)處理速度,。
參考文獻(xiàn)
[1] MORALES-CAPORAL R,, BONILLA-HUERTA E, HERNANDEZ C,, et al. Transducerless acquisition of the rotor position for predictive torque controlled PM synchronous machines based on a DSP-FPGA digital system[C]. IEEE Transactions on Industrial Informatics,, 2013,9(2): 799-807.
[2] NASCIMENTO P S B,, NEVES F A S,, DOMINGUES M A O. FPGA design methodology for DSP industrial applications A case study of a three phase positive sequence detector[C]. 2012 25th Symposium on Integrated Circuits and Systems Design (SBCCI), 2012:1-6.
[3] SZADKOWSKI Z,, FRAENKEL E D. FPGA/NIOS implementation of an adaptive FIR filter using linear prediction to reduce narrow band RFI for radio detection of cosmic rays[C]. Real Time Conference(RT),, 2012 18th IEEE-NPSS, 2012:1-8.
[4] 史明泉.基于DSP的FIR濾波器的C語言算法實(shí)現(xiàn)[J].無線電工程,,2011,,41(1):13-14.
[5] 岑光.基于FPGA的FIR數(shù)字濾波器研究與設(shè)計[D].西安:西安電子科技大學(xué),2011.
[6] 崔亮,,張芝賢.基于FPGA設(shè)計的FIR濾波器的實(shí)現(xiàn)與對比[J].電子設(shè)計工程,,2012,20(20):168-170.
[7] 李仙琴,,周盛,,計建軍,等.基于FPGA的兩種高速高階FIR濾波器的設(shè)計與比較[J].國際生物醫(yī)學(xué)工程雜志,,2008,,31(6):325-329.
[8] 李飛.低資源高速度FIR濾波器設(shè)計及其FPGA實(shí)現(xiàn)[D].湘潭:湘潭大學(xué),2011.