FIR數(shù)字濾波的FPGA實現(xiàn)
摘要: 隨著數(shù)字技術(shù)的發(fā)展,數(shù)字濾波器的功能越來越受到人們的注意和廣泛應(yīng)用,它有精度高、靈活性大等突出特點(diǎn)。FIR數(shù)字濾波具有穩(wěn)定性高,嚴(yán)格的線性相位,能用FFT算法實現(xiàn)等特點(diǎn)。通過FPGA實現(xiàn)FIR數(shù)字濾波具有實時性高、處理速度快、精度高的特點(diǎn)。文章先通過Matlab DSP Builder 設(shè)計出FIR濾波器模型,然后利用Simulink進(jìn)行模型仿真,再用ModelSim進(jìn)行功能仿真,最后用Quartus II進(jìn)行時序仿真。仿真結(jié)束后下載到選定的FPGA上,在FGPA上實現(xiàn)FIR數(shù)字濾波。
關(guān)鍵詞:數(shù)字濾波;FIR濾波器;FPGA; Matlab
0 引言
隨著科技的發(fā)展,數(shù)字信號處理在通信、自動控制、雷達(dá)、軍事、航空航天、醫(yī)療、家用電器等眾多領(lǐng)域得到了廣泛的應(yīng)用。而在數(shù)字信號處理的應(yīng)用中,數(shù)字濾波器是相當(dāng)重要的一部分。其中無限沖擊響應(yīng)(IIR)數(shù)字濾波器和有限沖擊響應(yīng)(FIR)數(shù)字濾波器是目前人們使用較多的兩種。與IIR數(shù)字濾波器相比較,F(xiàn)IR數(shù)字濾波器具有穩(wěn)定性高,速度快的特點(diǎn)。
FIR數(shù)字濾波器可以通過軟件或者硬件來實現(xiàn)。所謂軟件實現(xiàn)就是利用通用計算機(jī)實現(xiàn)。而硬件實現(xiàn)就是設(shè)計專門的數(shù)字濾波硬件,有以下幾種實現(xiàn)方法,1)使用單片通用數(shù)字濾波器集成電路;2)采用DSP器件實現(xiàn);3)采用可編程邏輯器件實現(xiàn)[4]。比較普遍的有DSP、ASIC、FPGA等。與FPGA相比較,DSP的順序執(zhí)行使得其速度較慢,而ASIC的設(shè)計成本又比較高,所以用FPGA實現(xiàn)FIR數(shù)字濾波,具有實時性強(qiáng)、靈活性高、處理速度快以及小批量生產(chǎn)成本低等特點(diǎn)。
1 FIR數(shù)字濾波器設(shè)計要求與結(jié)構(gòu)選擇
FIR濾波器實現(xiàn)的基本結(jié)構(gòu)有:直接型、級聯(lián)型、頻率抽樣型、快速卷積型結(jié)構(gòu)幾種[3],這里以直接型為例。設(shè)計一個16階的FIR低通濾波器(h(0)=0),采樣頻率Fs=200Hz,濾波器截止頻率Fc=40Hz,輸入序列位寬為9位(最高位為符號位)。
2 FPGA的選擇
考慮到價格以及芯片內(nèi)部嵌入式乘法器對數(shù)字信號處理的支持性,這里選用的是Altera公司出品的低端FPGA芯片Cyclone II EP2C35F672C6,它主要由邏輯陣列、M4K存儲器塊、數(shù)字[1]鎖相環(huán)、嵌入式乘法器幾部分組成。
3 FIR設(shè)計軟件平臺
3.1 基于Matlab和DSP Builder的模型設(shè)計
3.1.1 Matlab
Matlab可以進(jìn)行科學(xué)計算、圖像處理、聲音處理等,有良好的用戶界面和幫助功能。其中的Simulink軟件包可以對動態(tài)系統(tǒng)進(jìn)行建模、仿真和分析,支持連續(xù)、離散及混合的線性、非線性系統(tǒng),同時支持具有多種采樣頻率的系統(tǒng)。在Simulink環(huán)境中,在模型窗口中可以用鼠標(biāo)直觀地“畫”出系統(tǒng)模型,然后直接進(jìn)行仿真。采用Scope模塊和其它的畫圖模塊,還可以在進(jìn)行仿真的同時看到仿真結(jié)果[1]。
3.1.2 DSP Builder
DSP Builder 是一種系統(tǒng)級的專門設(shè)計DSP處理器及系統(tǒng)的工具,它架構(gòu)在多個軟件工具如Matlab、QuartusII、Synplify之上,把系統(tǒng)級和RTL級的設(shè)計工具連接起來,最大程度地發(fā)揮多種工具的優(yōu)勢。DSP Builder可以幫助設(shè)計者完成基于FPGA的DSP系統(tǒng)設(shè)計,它以Matlab中Simulink 的工具箱出現(xiàn),可以在Simulink 中進(jìn)行圖形化設(shè)計和仿真,同時通過Signal Compiler可以把設(shè)計文件轉(zhuǎn)成相應(yīng)的硬件描述語言設(shè)計文件,以及用于控制綜合與編譯的TCL腳本[1]。
3.1.3 基于Matlab、DSP Builder的FIR數(shù)字濾波器設(shè)計
利用直接型濾波器可以級聯(lián)的特性,我們可以調(diào)用4個4階FIR濾波器來實現(xiàn)一個16階的低通濾波器。如圖1所示,其中每個firtap都是一個4階FIR濾波器。
圖1 直接I型16階FIR濾波器
Fig.1 16-step Direct I Type FIR Digital Filter
利用Matlab里的濾波器設(shè)計工具獲得各種濾波器設(shè)計參數(shù),選擇濾波器類型為低通FIR,設(shè)計方法為窗口法,15階,Kaiser窗,Beta=0.5,F(xiàn)S為200Hz,F(xiàn)C為40Hz。利用FDATool分析所設(shè)計出的濾波器的幅頻、相頻特性,沖激、階躍響應(yīng),零極點(diǎn)等,導(dǎo)出濾波器系數(shù)并對其進(jìn)行量化及優(yōu)化,得到整型的濾波器參數(shù)并分別填入到FIR濾波器模型中,完成設(shè)計。
3.2 模型仿真調(diào)試
3.2.1 Simulink 模型仿真
模型設(shè)計好后,即可在Simulink中進(jìn)行算法級、系統(tǒng)級仿真驗證。在模型的輸入端加入一個疊加信號,驗證FIR低通濾波器模型設(shè)計的正確性。如圖2所示,自上而下四個波形分別是58Hz、30Hz輸入波形,二者的混合波形,輸出波形??梢姙V波器模型正確。
圖2 模型仿真結(jié)果
Fig.2 the Result of Model Compilation
3.2.2將模型轉(zhuǎn)成VHDL文件
Simulink仿真完成后就可以在硬件上實現(xiàn)設(shè)計,以獲得針對特定FPGA芯片的VHDL代碼。
用SignalCompiler對模型進(jìn)行分析,檢查其正確性。選擇對應(yīng)的器件系列并對SignalCompiler 進(jìn)行相應(yīng)的設(shè)置,把MDL文件轉(zhuǎn)換成VHDL文件。
3.2.2 ModelSim功能仿真
Simulink算法級、系統(tǒng)級仿真后還要用ModelSim對生成的RTL級VHDL代碼進(jìn)行功能仿真。仿真波形見圖3。
圖3 ModelSim仿真波形
Fig.3 Simulation wave shape of ModelSim
3.2.3 QuartusII時序仿真
RTL級仿真完成后還要進(jìn)行門級時序仿真。SignalCompiler已將Matlab上的仿真信息轉(zhuǎn)變?yōu)榭捎门cQuartusII 進(jìn)行時序仿真的激勵信息及相關(guān)的仿真文件,因此可以很容易地完成此項仿真任務(wù)[2]。
QuartusII仿真編譯結(jié)果 顯示了仿真編譯的各項參數(shù),由圖4可得FPGA的器件型號、邏輯元件及引腳的使用數(shù)目和占用資源百分比等情況。
圖4 QuartusII仿真編譯結(jié)果
Fig.4 the Result of Compilation & Simulation
4 硬件實現(xiàn)
經(jīng)過Matlab、ModelSim、QuartusII聯(lián)合仿真驗證后,最后把VHDL燒寫到基于Cyclone II EP2C35F672C6 FPGA 芯片的開發(fā)板中,完成FIR濾波器在FPGA上的硬件實現(xiàn)。
5 結(jié)論
本文通過利用DSP Builder設(shè)計建模電子模塊來代替編寫VHDL 程序,設(shè)計效率大為提高。然后通過Matlab的Simulink環(huán)境的圖形化仿真驗證功能配合ModelSim RTL級仿真與QuartusII門級時序仿真功能對設(shè)計的程序功能進(jìn)行全面驗證,確保功能正確。通過SignalCompiler轉(zhuǎn)換為VHDL語言實現(xiàn),還可以在不同公司的FPGA器件之間移植,給設(shè)計帶來很大的靈活性。同時,參數(shù)化結(jié)構(gòu)設(shè)計,可根據(jù)情況調(diào)整設(shè)計規(guī)模在FPGA上實現(xiàn)FIR數(shù)字濾波。
FIR濾波器以其優(yōu)越的性能在數(shù)字信號處理領(lǐng)域中占有很重要的地位。利用FPGA實現(xiàn)FIR數(shù)字濾波器,具有實時性、靈活性以及執(zhí)行速度快等特點(diǎn),大大提高了濾波器設(shè)計、計算、調(diào)試的速度。
本文作者創(chuàng)新點(diǎn),拋棄傳統(tǒng)的通用數(shù)字濾波集成電路,選用FPGA來實現(xiàn)FIR數(shù)字濾波。用FPGA實現(xiàn)數(shù)字濾波具有靈活性強(qiáng)、精度高、處理速度快、成本低等多種特點(diǎn),提高了工作效率,降低了生產(chǎn)成本,有一定的市場前景。