鄭爭兵
(陜西理工學院物理與電信工程學院,陜西 漢中 723003)
數(shù)字濾波器根據(jù)其單位沖擊響應函數(shù)的時域特性可分為兩類:無限沖擊響應(Infinite Impulse Response,IIR)濾波器和有限沖擊響應(Finite Impulse Response,F(xiàn)IR)濾波器。與IIR濾波器相比,F(xiàn)IR濾波器具有精確的線性相位、易于硬件實現(xiàn)和系統(tǒng)穩(wěn)定等優(yōu)點,在數(shù)字音頻、圖像處理、衛(wèi)星導航和軍事通信等領域得到了廣泛應用[1-3]。
目前,F(xiàn)IR數(shù)字濾波器的主要實現(xiàn)方法有許多種?;贒SP芯片的設計方法采用內(nèi)部特有的硬件結構實現(xiàn)濾波算法,需要進行指令編程同時還必須在DSP硬件上進行實時的在線仿真調(diào)試,開發(fā)流程復雜[4];基于MATLAB和DSP硬件的設計方法利用MATLAB進行輔助設計提取濾波器系數(shù),但是需要在DSP上編寫專門適合數(shù)字信號處理的指令代碼,指令對硬件的依賴性強,可移植性差;基于FPGA芯片的設計方法采用VHDL語言進行算法設計,具有硬件可修改性且代碼不依賴于芯片,但是代碼仿真和調(diào)試相對復雜,開發(fā)周期相對較長[5-6]。因此,提出了一種基于DSP Builder工具的設計方法。該方法在MATLAB軟件的Simulink環(huán)境下,采用Altera公司的DSP Builder工具箱,實現(xiàn)系統(tǒng)級的圖形化模型仿真,并生成最終用于FPGA下載的VHDL代碼。該方法能夠靈活地設計濾波器結構,開發(fā)容易,易于進行功能的擴展和升級。
DSP Builder是Altera公司推出的FPGA的系統(tǒng)級設計開發(fā)工具,將MATLAB/Simulink系統(tǒng)級設計工具的算法開發(fā)、仿真和驗證功能與VHDL綜合,仿真和實現(xiàn)結合在一起,簡化設計過程,提高設計效率,進一步推動了FPGA在數(shù)字信號處理領域的應用。DSP Builder在Simulink環(huán)境中以Simulink的圖形模塊形式出現(xiàn),利用自身Altera DSP Builder模塊和已有的MATLAB函數(shù)和Simulink模塊進行圖形化模型設計和仿真。另外,DSP Builder利用 SignalCompiler模塊把MATLAB/Simulink中的設計算法模型轉換為QuartusⅡ軟件工具可編譯的VHDL文件?;贒SP Builder工具設計FIR濾波器的過程如圖1所示。
首先根據(jù)FIR濾波器設計指標確定濾波器結構,在MATLAB/Simulink環(huán)境中建立一個模型文件(后綴mdl文件),用圖形方式調(diào)用Altera DSP Builder模塊和其它Simulink庫中的模塊,構成算法級設計框圖;接著使用MATLAB中使用濾波器設計工具箱FDATool獲取濾波器的設計參數(shù),對圖形模塊進行參數(shù)配置,利用Simulink的圖形化仿真、分析功能,分析此設計模型的正確性,完成模型仿真;然后SignalCompiler工具將Simulink的模型文件轉化為寄存器傳輸級的VHDL文件;最后在QuartusⅡ9.0中編譯VHDL文件,下載FPGA硬件進行功能測試驗證。
圖1 基于DSP Builder設計FIR濾波器流程圖
FIR濾波器的差分方程表達式為
其中,N是濾波器的階數(shù),單位脈沖響應h(n)是濾波器系數(shù),x(n)是輸入信號,y(n)是濾波后的輸出信號。由(1)式可見,F(xiàn)IR濾波算法實質(zhì)是一種乘累加運算。據(jù)此可知FIR濾波器采用直接型的結構來實現(xiàn)較為簡單。如圖2所示,輸入信號x(n)經(jīng)過不同的延遲因子z-1與適當?shù)南禂?shù)h(k)加權,然后將所得乘積相加就得到輸出信號y(n)。x(n)是經(jīng)A/D轉換后得到的數(shù)字采樣序列,y(n)是經(jīng)過濾波器后的輸出數(shù)字序列。該結構中,F(xiàn)IR濾波器的實現(xiàn)關鍵是系數(shù)h(k)的確定和延遲因子z-1的實現(xiàn)[7]。
圖2 FIR濾波器的結構
FIR濾波器設計方法主要有窗函數(shù)法、頻率采樣法和等波紋最佳逼近法,這里采用窗函數(shù)法。本文以設計FIR低通濾波器為例,說明基于Altera DSP Builder的FIR數(shù)字濾波器的實現(xiàn)方法。設計的FIR低通濾波器具體指標為:階數(shù)8,通帶截止頻率1000 Hz,采樣頻率8000 Hz,采用漢明窗,10位輸入數(shù)據(jù)寬度,8位系數(shù)數(shù)據(jù)寬度,直接型I型結構。
MATLAB中的濾波器設計工具箱FDATool具有良好的操作界面,能夠完成濾波器的設計,實現(xiàn)參數(shù)提取和性能分析功能。首先打開MATLAB,在命令窗口中輸入FDAtool,設置當前設計的濾波器參數(shù),其FDAtool設計濾波器的界面如圖3所示。
根據(jù)設計的要求,濾波器的類型指定為Lowpass(低通),濾波器的設計方法為FIR(Window),Window窗函數(shù)選為 Hamming,指定濾波器階數(shù)設置為7[8],采樣頻率 Fs為8000 Hz,截止頻率 Fc為1000 Hz,濾波器結構選為直接I型。指定完成這些濾波器設計參數(shù)后,點擊DesignFilter,開始生成濾波器系數(shù)。由于浮點小數(shù)在FPGA中實現(xiàn)比較困難,因而需要將濾波器的系數(shù)轉化為整數(shù)。在菜單File→Export→Variable Numbers中導出生成濾波器系數(shù)數(shù)值Num,利用函數(shù)round(Num*(2^10))得到10位的整數(shù)系數(shù)數(shù)值如下:
圖3 FDAtool設計濾波器的界面
Simulink是MATLAB中一個專門用于對動態(tài)系統(tǒng)進行建模、仿真和分析的軟件包[9]。通過調(diào)用Altera DSP Builder和Simulink庫中的圖形模塊,構成FIR數(shù)字濾波器的系統(tǒng)結構框圖(圖4)。該模型主要由8階直接型FIR濾波器模塊和測試輸入信號模塊組成。8階直接型FIR濾波器模塊主要通過延時模塊、系數(shù)增益模塊和累加模塊完成濾波功能。測試輸入信號模塊主要由掃頻電路產(chǎn)生一個包含任意頻率的掃頻信號,該信號用來驗證FIR濾波器模塊的正確性。為了便于觀察,通過示波器模塊獲取仿真結果。
在設計的過程,關鍵是對圖形模塊的參數(shù)配置。增益 Gain模塊:(Gain0,Gain1,Gain2,Gain3,Gain4,Gain5,Gain6,Gain7)在庫 Altera DSP Builder中 Ahmetic庫,參數(shù)“Gain Value”分別設為“3,30,129,238,238,129,30,3”,參數(shù)“Gain Value number of bit”設為“10”,參數(shù)“Number of Pipeline Levels”設為“0”,不選擇Use LPM;延時器Delay模塊的延時參數(shù)“Number of Pipeline Stages”設置為“1”;加法減法器Parrallel Adder Subtractor模塊的輸入信號路數(shù)“Number of Inputs”設置為“8”,“Add(+)Sub(-)”設置為“+”,其他模塊均要進行相應的設置。
在Simulink中建立好基于DSP Builder的FIR濾波器模型后,直接進行系統(tǒng)級的功能仿真驗證。為了便于觀察結果,設置示波器Scope模塊的仿真時間參數(shù)要合理。選中其中的“Data history”,把Limit data points to tast:設為100000。選擇Simulation菜單下的Start項,或按下“Ctrl+T”鍵開始啟動仿真,得到的仿真波形如圖5所示。
從圖5可以看到,測試輸入信號模塊產(chǎn)生一個周期等幅的掃頻測試信號,信號頻率從低頻變化到高頻。等幅的掃頻測試信號經(jīng)FIR濾波器濾波后,信號的幅度隨頻率增加衰減增大,最終衰減至0,高頻信號得到了有效抑制,F(xiàn)IR濾波器模型滿足低通的濾波特性,達到了設計要求。
圖4 FIR濾波器模型頂層圖
圖5 FIR濾波器的仿真波形圖
在Simulink中,對基于DSP Builder的FIR濾波器模型進行系統(tǒng)驗證仿真,還需要在QuartusⅡ環(huán)境進行VHDL代碼的時序仿真。SignalCompiler工具為系統(tǒng)仿真到硬件實現(xiàn)提供了一種有效的代碼轉換接口。在系統(tǒng)功能驗證成功后,將FIR濾波器模型中的測試輸入信號模塊去掉,使用SignalCompiler工具生成QuartusⅡ的FIR濾波器工程文件和相應的VHDL文件,進行FPGA硬件測試驗證。
基于DSP Builder的FIR濾波器的設計方法運用Altera DSP Builder和Simulink庫中的圖形模塊進行模塊化設計,配置圖形模塊參數(shù),有效地完成了FIR濾波器模型和模型仿真。該方法操作方便,極大地縮短了濾波器的開發(fā)周期,避免了繁瑣的VHDL語言編程,仿真驗證過程簡單,提高了數(shù)學信號處理算法的開發(fā)效率。該方法將為FPGA芯片在信號處理領域的應用提供更為廣闊的空間。
[1]鄭爭兵.一種適用于電視頻段的接收系統(tǒng)[J].電視技術,2011,35(19):62-64.
[2]陳正濤.光纖HFBR-1414發(fā)射器的驅(qū)動電路設計[J].國外電子測量技術,2010,29(5):79-80.
[3]鄭爭兵.開放式通信教學實驗系統(tǒng)設計[J].實驗室研究與探索,2012,31(3):55-58.
[4]鄭爭兵.基于MATLAB和DSP的數(shù)字濾波器設計[J].電子質(zhì)量,2011(10):30-31.
[5]韓團軍.基于VHDL步進電機控制器研制[J].電腦知識與技術,2009,25(5):7300-7302.
[6]鄭爭兵.基于FPGA的FSK調(diào)制解調(diào)系統(tǒng)設計[J].陜西理工學院學報:自然科學版,2012,28(5):20-21.
[7]鄭爭兵.基于FPGA的FIR濾波器的設計[J].通信電源技術,2008,25(3):45-46.
[8]羅韓君,劉明偉,王成.基于DSP Builder的FIR濾波器設計與實現(xiàn)[J].微計算機信息,2009,25(1):148-149.
[9]彭雪峰,汪臨偉,許建平.基于 MATLAB與 QUARTUSⅡ的 FIR濾波器設計與驗證[J].電子設計工程,2009,17(11):118-119.