鄭州輕工業(yè)學(xué)院計算機與通信工程學(xué)院 李祖賀 陳慶南
基于MATLAB-FDATool的數(shù)字濾波器FPGA實現(xiàn)
鄭州輕工業(yè)學(xué)院計算機與通信工程學(xué)院 李祖賀 陳慶南
隨著數(shù)字技術(shù)的不斷發(fā)展,數(shù)字信號處理技術(shù)(DSP,DigitalSignalProcessing)已飛速擴展到移動通信、雷達衛(wèi)星通信、多媒體系統(tǒng)、圖像識別與處理系統(tǒng)等諸多應(yīng)用領(lǐng)域。不同領(lǐng)域?qū)δ軐崿F(xiàn)、性能指標與成本方面的要求也在不斷增加。DSP處理器(如TI的TMS320系列)曾經(jīng)是系統(tǒng)核心器件的唯一選擇,但由于當(dāng)今DSP應(yīng)用市場的迅速變化,它已不能滿足全部的要求。隨著現(xiàn)代FPGA(FieldProgrammableGateArray,現(xiàn)場可編程門陣列)的出現(xiàn),彌補了DSP處理器的一些不足。用FPGA來實現(xiàn)數(shù)字信號的處理就很好地解決了并行性和速度的問題,而且由FPGA構(gòu)成的DSP系統(tǒng)非常易于修改、測試和升級。FPGA已經(jīng)廣泛地應(yīng)用于信息通信、自動控制等諸多領(lǐng)域。但是傳統(tǒng)的DSP開發(fā)者只能直接使用VHDL或VerilogHDL語言進行FPGA的設(shè)計,因而開發(fā)難度較大。
現(xiàn)在已經(jīng)出現(xiàn)了許多新的基于FPGA的DSP開發(fā)工具,工作效率大為提高。本文就是在這種背景下,以在語音、圖像處理和數(shù)字通信等各種系統(tǒng)中起作用的數(shù)字濾波器為切入點,嘗試利用MATLAB信號處理工具箱下的濾波器設(shè)計工具FDATool進行數(shù)字濾波器的設(shè)計及FPGA實現(xiàn)。
FDATool(FilterDesign&AnalysisTool)是MATLAB軟件信號處理工具箱里的濾波器設(shè)計分析工具,它幾乎可以設(shè)計所有的常規(guī)濾波器,包含F(xiàn)IR和IIR的各種設(shè)計方法,操作簡單方便。
FDATool設(shè)計界面可分為2大部分:一部分是Design Filter,位于界面下半部,用于設(shè)置濾波器的各項設(shè)計參數(shù);另一部分則是特性區(qū),位于界面的上半部,用于顯示濾波器的各項特性,如幅頻、相頻特性等,且在設(shè)計過程中實時顯示,方便參數(shù)的選擇。DesignFilter部分主要分為:FilterType(濾波器類型)選項,DesignMethod(設(shè)計方法)選項,F(xiàn)ilterOrder(濾波器階數(shù))選項,F(xiàn)renquencySpecifications選項,MagnitudeSpecifications選項,WindowSpecifications選項。
數(shù)字濾波器是輸入輸出均為數(shù)字信號,經(jīng)過一定運算關(guān)系改變輸入信號所含頻率成分的相對比例或者濾除某些頻率成分的器件。數(shù)字濾波器根據(jù)其沖激響應(yīng)函數(shù)的時域特性,分為無限長沖激響應(yīng)(IIR)和有限長沖激響應(yīng)(FIR)濾波器。IIR濾波器具有無限持續(xù)時間沖激響應(yīng),一般需要用遞歸模型來實現(xiàn)。FIR濾波器的沖激響應(yīng)只能延續(xù)一定時間,在工程實際中可以采用遞歸的方式來實現(xiàn),也可以采用非遞歸的方式來實現(xiàn)。數(shù)字濾波器的設(shè)計方法有多種,如雙線性變換法、窗函數(shù)設(shè)計法、插值逼近法等。
數(shù)字濾波器的實現(xiàn)分為軟件實現(xiàn)和硬件實現(xiàn)2種方式,硬件主要利用通用數(shù)字濾波器集成電路、DSP處理器和FPGA來實現(xiàn)。由于現(xiàn)代實時性信號處理系統(tǒng),特別是圖像、視頻系統(tǒng),對處理速度的要求非常高,因此FPGA以其運算速度高的特點成為首選。傳統(tǒng)方法實現(xiàn)FPGA有一定難度。然而在用FPGA進行DSP系統(tǒng)開發(fā)應(yīng)用的已有全新的設(shè)計工具和設(shè)計流程,給開發(fā)人員提供了很大的便利。
基于FDATool的濾波器設(shè)計方法真正實現(xiàn)了從參數(shù)設(shè)計到硬件FPGA實現(xiàn)的完全自動化,這也是真正意義上的EDA。
下面以Equiripple法設(shè)計FIR低通濾波器為例說明,該濾波器參數(shù)為:采樣頻率20KHz,通帶截止頻率4KHz,阻帶截止頻率5KHz,通帶最大衰減0.1dB,阻帶最小衰減80dB。
在MATLAB命令窗鍵入fdatool命令啟動設(shè)計向?qū)Ы缑?,對其各項參?shù)進行設(shè)置。完成設(shè)計后可在特性區(qū)查看各項性能指標。見圖1。
圖1 濾波器幅頻性能
然后進行量化設(shè)置,點擊界面左側(cè)的量化參數(shù)設(shè)置按鈕,進入量化參數(shù)設(shè)置界面。設(shè)置Filterarithmetic為Fixed-point,F(xiàn)ilterprecision設(shè)置為Specifyall,量化參數(shù)設(shè)置見表1。
表1 量化參數(shù)設(shè)置
在FDATool界面菜單下點擊Targets>GenerateHDL進入HDL代碼生成界面,選擇相應(yīng)參數(shù),在work目錄下生成濾波器及其測試向量的VHDL代碼。其定義主要端口為:數(shù)據(jù)輸入—data_in,數(shù)據(jù)輸出—data_out,時鐘—clk,使能輸入—clk_enable,復(fù)位輸入—reset。
這里我們選擇利用Modelsim軟件進行驗證,當(dāng)然也可以選擇QuartusⅡ等軟件。ModelSim是優(yōu)秀的HDL語言仿真器,它提供最友好的調(diào)試環(huán)境,是唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器,是作FPGA/ASIC設(shè)計RTL級和門級電路仿真的首選。
選擇前面濾波器代碼的生成路徑,進行編譯仿真,圖2為wave窗口下仿真波形的部分解圖,使端clk_enable為1時濾波器工作,data_in和data_out為16位并行數(shù)據(jù)。可以進行下載實現(xiàn),并可進行硬件調(diào)試。
圖2 Modelsim下的仿真波形
本文以FIR數(shù)字濾波器為例,進行了基于FDATool的濾波器設(shè)計及其FPGA自動實現(xiàn)。在后續(xù)驗證滿足性能指標的前提下,該設(shè)計流程實現(xiàn)了整個設(shè)計的自動化,大大縮短了開發(fā)周期,提高了開發(fā)效率。隨著現(xiàn)代基于FPGA的DSP開發(fā)工具如DSP Builder、SOPCBuilder、SystemGenerator等的出現(xiàn),設(shè)計者可以按照流程化軟件設(shè)計的開發(fā)方法進行FPGA的設(shè)計。