【正文】
are design simulation and verification as an example by the realization of 24step lowpass digital FIR filter.Through simulation and verification, the system of the digital filter designed can run successfully, and the designed filter has good stability, high accuracy, less susceptible to environmental impacts. In the use of FPGA for the development of digital filters using Matlabbased environment as a design tool for DSP Builder can be more convenient to create models, and to plete the whole design. Key words: MATLAB。 DSP Builder。常用的濾波器有無限長單位脈沖響應(yīng)(IIR)濾波器和有限長單位脈沖響應(yīng)(FIR)濾波器兩種。采用一種基于DSP Builder 的FPGA設(shè)計(jì)方法,使FIR濾波器設(shè)計(jì)較為簡單易行,并能滿足設(shè)計(jì)要求。因此,永遠(yuǎn)穩(wěn)定。(二)FIR和IIR濾波器的比較在很多實(shí)際應(yīng)用中如語音和音頻信號(hào)處理中,數(shù)字濾波器來實(shí)現(xiàn)選頻功能。在通帶中,通常希望具有線性相位響應(yīng)。在IIR濾波器中通常的相位是不可能得到的,因此主要考慮幅度指標(biāo)。通常要設(shè)計(jì)出適當(dāng)?shù)哪M濾波器,再通過一定的頻帶變換把它轉(zhuǎn)換成所需要的數(shù)字IIR濾波器。FIR濾波器的設(shè)計(jì)方法和IIR濾波器的設(shè)計(jì)方法有很大的不同。在設(shè)計(jì)和實(shí)現(xiàn)上FIR濾波器具有如下優(yōu)越性:(1) 相應(yīng)相位可為嚴(yán)格線性,因此它不存在延遲失真,只有固定的時(shí)間延遲;(2) 由于不存在穩(wěn)定性問題,所以設(shè)計(jì)相對(duì)簡單;(3) 只包含實(shí)數(shù)算法,不涉及復(fù)數(shù)算法,不需要遞推運(yùn)算,長度為M的濾波器(階數(shù)為M1)它的計(jì)算值約為M/2。 最基本的FIR濾波器可用下式表示: (22)其中是輸入采樣序列,是濾波器系數(shù),L是濾波器的系數(shù)長度,表示濾波器的輸出序列。 (23)圖21中顯示了一個(gè)典型的直接I型4階FIR濾波器,其輸出序列滿足下列等式: (24)圖21 4階FIR濾波器結(jié)構(gòu)在這個(gè)FIR濾波器中,總共存在3個(gè)延時(shí)節(jié),4個(gè)乘法單元,一個(gè)4輸入的加法器。但是,如果采用FPGA來實(shí)現(xiàn),就可以采用并行結(jié)構(gòu),在一個(gè)時(shí)鐘周期內(nèi)得到一個(gè)FIR濾波器的輸出。DSP Builder依賴于Math Works公司數(shù)學(xué)分析工具M(jìn)atlab/Simulink,以Simulink的Blockset出現(xiàn),可以在Simulink中進(jìn)行圖形化設(shè)計(jì)和仿真,同時(shí)又通過SignalCompiler可以把Matlab/Simulink的設(shè)計(jì)文件(.mdl)轉(zhuǎn)成相應(yīng)的硬件描述語言VHDL設(shè)計(jì)文件(.vhd),以及用于控制綜合與編譯的TCL腳本。圖61是利用DSP Builder進(jìn)行DSP設(shè)計(jì)的流程框圖。第二步是利用Simulink強(qiáng)大的圖形化仿真、分析功能,分析此設(shè)計(jì)模型的正確性,完成模型仿真。圖61 DSP Builder設(shè)計(jì)流程為了針對(duì)不同用戶的設(shè)計(jì)目的和設(shè)計(jì)要求,DSP Builder提供了兩種不同的設(shè)計(jì)流程,主要可以分為自動(dòng)流程和手動(dòng)流程。不過,需要手動(dòng)的調(diào)用VHDL綜合器進(jìn)行綜合,調(diào)用Quartus進(jìn)行適配,調(diào)用ModelSim或者Quartus進(jìn)行仿真,最后用Quartus產(chǎn)生相應(yīng)的編程文件用于FPGA的配置。由上一步的DSP Builder設(shè)計(jì)流程得到VHDL文件(),送入綜合器進(jìn)行綜合。在綜合時(shí),可能需要對(duì)綜合器進(jìn)行配置或者提供綜合的約束條件。綜合器在綜合操作后會(huì)產(chǎn)生一個(gè)網(wǎng)表文件,以供下一個(gè)流程使用。如果用DSP Builder產(chǎn)生的DSP模型只是龐大設(shè)計(jì)中的一個(gè)子模塊,則可以在設(shè)計(jì)中調(diào)用DSP Builder產(chǎn)生的VHDL文件,以構(gòu)成完整的設(shè)計(jì)。在圖61的流程中,其中有個(gè)流程在DSP設(shè)計(jì)中是不可或缺的,那就是HDL仿真。DSP Builder在生成VHDL代碼時(shí),可以同時(shí)生成用于測(cè)試DSP模塊的TestBench(測(cè)試平臺(tái))文件,DSP Builder生成的TestBench文件采用VHDL 語言,測(cè)試向量與該DSP模塊在Simulink中的仿真激勵(lì)相一致。另外,DSP Builder在產(chǎn)生TestBench的同時(shí),還產(chǎn)生了針對(duì)ModelSim仿真的Rcl腳本來簡化用戶的操作,掩蓋ModelSim仿真時(shí)的復(fù)雜性。如果采用普通的數(shù)字信號(hào)處理器(DSP Processor)來實(shí)現(xiàn),只能用串行的方式順序地執(zhí)行延時(shí),乘加工作,這不可能在一個(gè)DSP(指數(shù)字信號(hào)處理器)指令周期內(nèi)完成,必須用多個(gè)指令周期來完成。使用DSP Builder可以方便地在圖形化環(huán)境中設(shè)計(jì)FIR數(shù)字濾波器,而且濾波器系數(shù)的計(jì)算可以幫助Matlab強(qiáng)大的計(jì)算能力和現(xiàn)成的濾波器設(shè)計(jì)工具來完成。假定一個(gè)3階的FIR濾波器,其可以表示為: 其中:,是量化時(shí)附加的因子。設(shè)計(jì)好的3階直接I型FIR濾波器模型圖可以參見圖72。由于FIR濾波器的系數(shù)已經(jīng)給定,是一個(gè)常數(shù),從圖中看到,在DSP Builder中可以用Gain(增益)模塊來實(shí)現(xiàn)的運(yùn)算,用延時(shí)Delay模塊來實(shí)現(xiàn)輸入信號(hào)序列的延時(shí)。圖73 帶仿真模塊的3階濾波器模型新增的仿真模塊的參數(shù)作如下設(shè)置: Chirp Signal:模塊:(Chirp Signal) 庫:Simulink中Sources庫 參數(shù)“Initial Frequency(Hz)”設(shè)為“1” 參數(shù)“Target time”設(shè)為“10”參數(shù)“Frequency at target time(Hz)”設(shè)為“1” 參數(shù)“Interpret vectors parameter as 1D ”選中 Gain 模塊:(Gain) 庫:Simulink中Math Operations 庫 參數(shù)“Gain”設(shè)為“Element wise(K.*Vu)” Scope模塊:(Scope) 庫:Simulink中sinks庫參數(shù)“Number of Axes”為“2”其中,Chirp Signal模塊為線性調(diào)頻信號(hào)發(fā)生模塊,~1Hz。