曹振吉 何敏
摘 要: 為了滿足信號處理快速和靈活的要求,基于FPGA實現(xiàn)的FIR濾波器有這兩方面的優(yōu)勢,使用Matlab中的FDATool計算出濾波器系數(shù)并分析其幅頻特性,利用FPGA分別設計實現(xiàn)串行結(jié)構(gòu)、全并行結(jié)構(gòu)以及基于IP核的FIR數(shù)字濾波器。利用Matlab軟件進行FIR濾波器仿真,并與基于FPGA實現(xiàn)濾波器的Modelsim仿真輸出數(shù)據(jù)進行比較,結(jié)果表明,設計的FIR濾波器功能正確、濾波性能良好。通過對不同結(jié)構(gòu)濾波器的資源占用情況和數(shù)據(jù)處理速度進行分析,得出不同應用場合可選擇不同的濾波器結(jié)構(gòu)的結(jié)論。
關鍵詞: FIR; FPGA; 串行結(jié)構(gòu); 并行結(jié)構(gòu); IP核
中圖分類號: TN713?34 文獻標識碼: A 文章編號: 1004?373X(2015)19?0098?04
Abstract: Since the actual signal processing has the requirements of real?time response and flexibility, the implementation of FPGA?based FIR filter has the two advantages. The filter coefficient is calculated and the magnitude?frequency characteristic is analyzed by FDATool in Matlab. The FIR digital filters of serial structure, parallel structure and IP core based were designed and realized respectively by FPGA. FIR filters are simulated by Matlab, and compared with the data output by Modelsim simulation of the filter implemented by FPGA, the results show that functions of the designed FIR filters are correct, and filtering performance is better. The resource occupation situation and data processing speed of different structure filters are analyzed, and the conclusion of filters with different structures can be chosen to apply to suitable situation was obtained.
Keywords: FIR; FPGA; serial structure; parallel structure; IP core
0 引 言
數(shù)字濾波器是一個按預定的有限精度算法實現(xiàn)的、將輸入的數(shù)字信號轉(zhuǎn)換為所要求的輸出數(shù)字信號的線性時不變系統(tǒng)[1?2]。由于FPGA的并行處理特性和自上到下的編程思想,所以其實現(xiàn)的數(shù)字濾波器能夠兼顧系統(tǒng)實時性和靈活性的要求[3?4]。
根據(jù)系統(tǒng)時域性能,數(shù)字濾波器分為有限長單位脈沖響應(Finite Impulse Response,F(xiàn)IR)數(shù)字濾波器和無限長單位脈沖響應(Infinite Impulse Response,IIR)數(shù)字濾波器。相對于IIR數(shù)字濾波器,F(xiàn)IR濾波器有較大的優(yōu)越性[5?6],所以本文將對FIR濾波器進行設計。FIR濾波器系數(shù)的設計方法主要有3種,包括窗函數(shù)法、頻率采樣法和最優(yōu)化方法[5]。
本文借助Matlab中的FDATool工具,針對濾波要求設置合適的參數(shù),可以方便地求解出濾波器系數(shù)和響應曲線,然后利用FPGA分別設計實現(xiàn)串行結(jié)構(gòu)、全并行結(jié)構(gòu)以及基于IP核的FIR數(shù)字濾波器,利用Matlab軟件進行FIR濾波器仿真,并與基于FPGA實現(xiàn)濾波器的Modelsim輸出數(shù)據(jù)進行對比,以此判斷3種結(jié)構(gòu)濾波器設計的正確性。
1 基于Matlab的FIR數(shù)字濾波器的設計
1.1 FIR濾波器基本原理及結(jié)構(gòu)
根據(jù)FIR濾波器硬件實現(xiàn)結(jié)構(gòu)的不同,可將其分為直接型、級聯(lián)型、頻率采樣型和快速卷積型[6]等4種形式。本文主要討論直接型結(jié)構(gòu)。根據(jù)直接型FIR濾波器的原理,以長度[N]為例,輸出一個濾波數(shù)據(jù),需要完成[N]次乘法和[N-1]次加法運算。
依據(jù)FIR濾波器嚴格的線性相位特點,得到濾波器系數(shù)具有對稱性,因此能夠采用線性相位結(jié)構(gòu),如圖1所示[7],可以減少運算次數(shù)和節(jié)約硬件資源。因為[h(n)]關于[n=(N-1)2]對稱[7],可以先將位置上對稱的兩個數(shù)據(jù)加起來,再與相應的濾波器系數(shù)相乘,然后經(jīng)過累加得到最終的結(jié)果。采用這種結(jié)構(gòu),每得到一個輸出數(shù)據(jù),要完成[N2]次乘法和[N-1]次加法,與之前相比,可以減少[N2]次乘法運算。
1.2 基于Matlab的FIR數(shù)字濾波器的設計
調(diào)用Matlab軟件中的FDATool工具,設置相應參數(shù)。求解濾波器系數(shù)時,F(xiàn)DATool可方便地選擇系數(shù)的量化位數(shù)。完成濾波器設計參數(shù)設置后,可直接生成FPGA所需的濾波器系數(shù)配置文件。
本文要設計的FIR濾波器參數(shù)為:低通濾波器,采樣頻率為50 kHz;過渡帶為12~15 kHz,通帶紋波最大為0.1,阻帶紋波最大為0.001。通過Matlab編程,分別對濾波器系數(shù)未量化、10位、12位、14位量化的濾波器幅頻響應結(jié)果進行比較,如圖2所示。從圖2中可以看出,量化位數(shù)對濾波器的阻帶紋波有較大的影響,且量化位數(shù)越高影響越小,故采用14位量化。endprint
2 基于FPGA的FIR數(shù)字濾波器的設計
以低通濾波器為例,本文分別對全串行結(jié)構(gòu)、全并行結(jié)構(gòu)以及基于FIR核的FIR數(shù)字濾波器進行設計和仿真。
2.1 全串行結(jié)構(gòu)的FIR濾波器
全串行結(jié)構(gòu)是指只用一個加法器串行實現(xiàn)濾波器對稱系數(shù)的加法運算。設計一個低通FIR濾波器,采用凱塞窗函數(shù),其他參數(shù)同上,長度為16,F(xiàn)PGA的系統(tǒng)時鐘為50 MHz,輸入12 b數(shù)據(jù),輸出29 b濾波結(jié)果。
首先采用Matlab軟件求得14位量化后的濾波器系數(shù),然后根據(jù)圖1所示的結(jié)構(gòu)采用VHDL語言完成濾波器的編程。在Matlab軟件中仿真出由9.765 kHz和18 kHz兩種頻率信號疊加的輸入信號,經(jīng)Matlab編寫的FIR濾波前后的頻譜如圖3所示。
從圖3,圖4可以看出,F(xiàn)PGA實現(xiàn)的濾波器輸出信號頻譜與Matlab直接仿真的結(jié)果幾乎相同。從圖5可以看出,疊加輸入信號濾波后形成頻率為9.765 kHz的單頻信號,即將18 kHz的信號濾除掉了。因此,從仿真結(jié)果來看,通過FPGA設計實現(xiàn)的全串行結(jié)構(gòu)的FIR濾波器滿足濾波要求。
2.2 全并行結(jié)構(gòu)的FIR濾波器
全并行結(jié)構(gòu)濾波器的思想就是將一次濾波運算內(nèi)的乘法同時執(zhí)行,通過硬件資源換取運行速度。這種結(jié)構(gòu)可以采用直接型、轉(zhuǎn)置型和脈動方式實現(xiàn)[5,8?9]。
基于加法樹直接型結(jié)構(gòu)的全并行FIR低通濾波器的設計過程與串行結(jié)構(gòu)濾波器相同,直接給出仿真結(jié)果。Matlab仿真的信號濾波前后的頻譜如圖6所示,F(xiàn)PGA仿真的信號濾波前后的頻譜如圖7所示,F(xiàn)PGA仿真的信號濾波前后的時域波形如圖8所示。
從圖6,圖7可以看出,F(xiàn)PGA實現(xiàn)的濾波器輸出信號頻譜與Matlab仿真的結(jié)果幾乎相同。從圖8可以看出,合成單頻信號濾波后,已經(jīng)形成規(guī)則的頻率為9.765 kHz的單頻信號。從仿真結(jié)果來看,使用FPGA設計全并行結(jié)構(gòu)的濾波器是正確有效的。
2.3 基于IP核的FIR濾波器
采用IP核設計一個低通最優(yōu)FIR濾波器,過渡帶為12~15 kHz,采樣頻率為50 kHz,通帶紋波最大為0.1,阻帶紋波最大為0.001。系統(tǒng)時鐘頻率為50 MHz,輸入和輸出數(shù)據(jù)位寬均為10 b。
從圖9,圖10可以看出,F(xiàn)PGA實現(xiàn)后的濾波器輸出信號頻譜與Matlab直接仿真的結(jié)果幾乎相同。從圖11可以看出,合成信號濾波后將18 kHz的高頻信號濾除掉了。因此,從仿真結(jié)果來看,基于IP核實現(xiàn)的FIR濾波器功能正確,滿足設計要求。
3 性能比較
從資源占用情況來看,為了便于對比,選用Xilinx公司的Spartan?6系列的XC6SLX45?CSG484?3芯片,從ISE的Design Summary獲得3種結(jié)構(gòu)FIR濾波器分別占用邏輯資源的數(shù)量,如表1所示。顯然,全并行結(jié)構(gòu)的濾波器使用的寄存器(Registers)、查找表(LUTs)和乘法器(DSP48A1s)的數(shù)量大于另外兩種結(jié)構(gòu)濾波器的使用數(shù)量,而全串行結(jié)構(gòu)的濾波器是占用硬件資源最少的。
從數(shù)據(jù)處理速度來看,全并行結(jié)構(gòu)具有很高的數(shù)據(jù)處理速度,其系統(tǒng)頻率與數(shù)據(jù)速率相同;全串行結(jié)構(gòu)的數(shù)據(jù)速率是系統(tǒng)頻率的[1N](N為乘加運算的次數(shù))[6],特別在乘加次數(shù)[N]較大時,與并行結(jié)構(gòu)濾波器的數(shù)據(jù)速率有較大差距。
基于IP核實現(xiàn)的FIR濾波器比較靈活,可以根據(jù)參數(shù)設置選擇合適的硬件資源占用數(shù)量與數(shù)據(jù)處理速率。所以,在速度作為最重要考量的因素時,選擇全并行結(jié)構(gòu)能收到較好的效果,比如可以將其應用于高速測量系統(tǒng)中;全串行結(jié)構(gòu)濾波器占用硬件資源少,但是處理數(shù)據(jù)的速率較慢,可以用于速度要求不高且硬件成本較低的系統(tǒng)中。若是在一般應用場合,使用IP核設計濾波器方便靈活,可以兼顧占用資源與速度兩方面的要求。
4 結(jié) 語
本文借助Matlab計算出濾波器系數(shù),然后利用FPGA分別設計實現(xiàn)串行結(jié)構(gòu)、全并行結(jié)構(gòu)以及基于IP核的FIR數(shù)字濾波器。其中,串行結(jié)構(gòu)和并行結(jié)構(gòu)的FIR濾波器性能各有優(yōu)勢[10],串行結(jié)構(gòu)濾波器占用資源少,但運算速度較并行結(jié)構(gòu)慢,并行結(jié)構(gòu)濾波器運算速度快,但占用資源多;而基于IP核的數(shù)字濾波器則能夠兼具兩者的優(yōu)勢,占用資源少,運算速度快,具有非常好的靈活性。利用Matlab軟件進行FIR濾波器仿真,并與基于FPGA實現(xiàn)的濾波器的輸出結(jié)果進行比較,仿真結(jié)果表明,本文設計的3種FIR濾波器功能正確,濾波性能良好,選擇不同的結(jié)構(gòu)設計濾波器可以滿足不同的系統(tǒng)要求。
參考文獻
[1] 江志紅.深入淺出數(shù)字信號處理[M].北京:北京航空航天大學出版社,2012.
[2] 程佩清.數(shù)字信號處理教程[M].北京:清華大學出版社,2003.
[3] 孫耀奇,高火濤,熊超,等.基于Matlab和FPGA的FIR數(shù)字濾波器設計和實現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(11):89?92.
[4] 高耀紅.基于FPGA的FIR低通濾波器[D].長沙:湖南大學,2012.
[5] 高亞軍.基于FPGA的數(shù)字信號處理[M].北京:電子工業(yè)出版社,2012.
[6] 杜勇,路建功,李元洲.數(shù)字濾波器的Matlab與FPGA實現(xiàn)[M].北京:電子工業(yè)出版社,2012.
[7] 蔣立平,譚雪琴,王建新.一種基于FPGA的高效FIR濾波器的設計與實現(xiàn)[J].南京理工大學學報,2007,31(1):125?128.
[8] 鄭運冬.基于FPGA的FIR濾波器設計與實現(xiàn)[D].上海:復旦大學,2013.
[9] 謝海霞,孫志雄.可編程FIR濾波器的FPGA實現(xiàn)[J].電子器件,2012,35(2):232?235.
[10] 馬駿,何敏,楊鳴.基于FPGA的電磁金屬探傷系統(tǒng)及其微弱信號處理[J].測試技術(shù)學報,2014,28(5):425?430.
[11] 單文軍,周雪純,李文華.基于FPGA的FIR數(shù)字濾波器設計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(14):123?126.endprint