基于DSP Builder數(shù)字信號(hào)處理器的FPGA設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
DSP技術(shù)廣泛應(yīng)用于各個(gè)領(lǐng)域,但傳統(tǒng)的數(shù)字信號(hào)處理器由于以順序方式工作使得數(shù)據(jù)處理速度較低,且在功能重構(gòu)及應(yīng)用目標(biāo)的修改方面缺乏靈活性。而使用具有并行處理特性的FPGA實(shí)現(xiàn)數(shù)字信號(hào)處理系統(tǒng),具有很強(qiáng)的實(shí)時(shí)性和靈活性,因此利用FPGA實(shí)現(xiàn)數(shù)字信號(hào)處理成為數(shù)字信號(hào)處理領(lǐng)域的一種新的趨勢(shì)。
以往基于FPGA的數(shù)字信號(hào)處理系統(tǒng)的模型及算法采用VHDL或VerilogHDL等硬件描述語(yǔ)言描述。但這些硬件描述語(yǔ)言往往比較復(fù)雜,而采用Altera公司推出的專(zhuān)門(mén)針對(duì)數(shù)字信號(hào)處理器設(shè)計(jì)工具DSP BuildIer則可大大簡(jiǎn)化設(shè)計(jì)過(guò)程,提高設(shè)計(jì)效率。
1 基于DSP Builder的數(shù)字信號(hào)處理器設(shè)計(jì)流程
DSP Builder是一個(gè)系統(tǒng)級(jí)(或者說(shuō)算法級(jí))設(shè)計(jì)工具,它架構(gòu)在多個(gè)軟件工具之上,并連接系統(tǒng)級(jí)的算法仿真建模和RTL級(jí)的硬件實(shí)現(xiàn)兩個(gè)設(shè)計(jì)領(lǐng)域的設(shè)計(jì)工具,最大程度地發(fā)揮了這兩種工具的優(yōu)勢(shì)。
DSP Builder依賴(lài)于Math-Works公司的數(shù)學(xué)分析工具M(jìn)atlab/Simulink,以Simulink的Blockset出現(xiàn),可在simulink中進(jìn)行圖形化設(shè)計(jì)和仿真,同時(shí)又通過(guò)signal Compiler把Maltlab/Simulink/DSP Builder的設(shè)計(jì)文件轉(zhuǎn)成相應(yīng)的VHDL設(shè)計(jì)文件,以及用控制綜合與編譯的tcl腳本。而對(duì)后者的處理可以由FPGA/CPLD開(kāi)發(fā)工具QuartusⅡ完成。其設(shè)計(jì)流程如下:
Step1:在Simulink環(huán)境中調(diào)用Altera DSP庫(kù)(非MATLAB自帶的DSP庫(kù))中的塊,進(jìn)行數(shù)學(xué)模型設(shè)計(jì)。
Step2:在MATLAB中進(jìn)行純數(shù)學(xué)上的仿真、驗(yàn)證及修改。
Step3:當(dāng)仿真符合設(shè)計(jì)要求后,再加入并運(yùn)行Signal Compiler模塊,將.mdl文件自動(dòng)轉(zhuǎn)成.vhd文件,進(jìn)行RTL級(jí)的功能仿真和邏輯綜合。
Step4:在QuartusⅡ中進(jìn)行編譯設(shè)計(jì)并進(jìn)行時(shí)序仿真。
Step5:下載到一個(gè)硬件開(kāi)發(fā)板上并測(cè)試。
2 設(shè)計(jì)實(shí)例
FIR和IIR濾波器是當(dāng)前數(shù)字信號(hào)處理巾最常用的2種濾波器,其中FIR因其具有精確的線性相位特性而得到廣泛應(yīng)用。下面以截止頻率為5 kHz,采樣頻率為32 kHz,輸入序列位寬為9位(最高位為符號(hào)位)的12階FIR低通數(shù)字濾波器為例,闡述基于DSP Builder的數(shù)字信號(hào)處理器設(shè)計(jì)方案。
2.1 FIR數(shù)字濾波器結(jié)構(gòu)模型
對(duì)于N階FIR數(shù)字濾波系統(tǒng),其沖擊響應(yīng)總是有限長(zhǎng)的,系統(tǒng)函數(shù)為:
濾波器的差分方程為:
式中,x(n)是輸入采樣序列,h(n)是濾波器系數(shù),N是濾波器的階數(shù),y(n)表示濾波器的輸出序列。
設(shè)計(jì)濾波器的任務(wù)就是尋找一個(gè)因果、物理上可實(shí)現(xiàn)的系統(tǒng)函數(shù)H(z),使其頻率響應(yīng)滿足所希望的頻域指標(biāo)。圖1為階FIR數(shù)字濾波器的結(jié)構(gòu)圖。可見(jiàn),F(xiàn)IR的數(shù)字濾波過(guò)程就是一個(gè)信號(hào)逐級(jí)延遲的過(guò)程,將各級(jí)的延遲輸出加權(quán)累計(jì),即得到FIR的輸出。
2.2 濾波器系數(shù)的確定
濾波器系數(shù)使用Matlab的FDNTool設(shè)計(jì)工具獲得。FDATool即為Filter Design&Analysys Tool,可以完成多種濾波器的設(shè)計(jì)、分析和性能評(píng)估。
啟動(dòng)FDATool后就是濾波器的設(shè)計(jì)界面,設(shè)置相應(yīng)參數(shù),便可生成所需的系數(shù)。由于得到的系數(shù)均為介于[-1,1]區(qū)間的浮點(diǎn)數(shù),而在DSP Builder下建立的FIR濾波器模型需要一個(gè)整數(shù)(有符號(hào)整數(shù)類(lèi)型)作為濾波器系數(shù),故需將其量化為整數(shù)。量化后濾波器系數(shù)為:
2.3 濾波器模型的建立
在DSP Builder平臺(tái)上設(shè)計(jì)FIR濾波器,首先在Matlab的Simulink中建立一個(gè).MDL模型文件,即根據(jù)所要設(shè)計(jì)FIR濾波器的結(jié)構(gòu)調(diào)用Al-tera DSP Builder和其他Simulink庫(kù)中的圖形模塊,構(gòu)成設(shè)計(jì)框圖文件。
如果把所有的模塊放在一個(gè)Simulink圖中,設(shè)計(jì)圖會(huì)顯得非常復(fù)雜、龐大,不利于閱讀或排錯(cuò),這時(shí)可以利用層次設(shè)計(jì)方法設(shè)計(jì)。對(duì)于12階FIR數(shù)字濾波器,可以先設(shè)計(jì)一個(gè)3階FIR濾波器子模塊fir3(圖2),然后調(diào)用3個(gè)fir3子模塊構(gòu)造成12階nR數(shù)字濾波器。使用。DSPBuilder工具箱建立的12階FIR數(shù)字濾波器模型,如圖3所示。[!--empirenews.page--]
2.4 基于Simnlink的系統(tǒng)VHDL代碼生成
完成模型設(shè)計(jì)后,先在Simulink中對(duì)模型進(jìn)行系統(tǒng)仿真,即通過(guò)Simulink中的2通道示波器Scope模塊查看仿真結(jié)果。DSP Builder可提供QuartusⅡ軟件和MATLAB/Simulink工具之間的接口,即Signal Compiler模塊。
若通過(guò)系統(tǒng)仿真,該系統(tǒng)已達(dá)到設(shè)計(jì)要求,雙擊SignalCompiler模塊,設(shè)置好相關(guān)參數(shù)后,即可將模型文件.mdl轉(zhuǎn)化為硬件描述語(yǔ)言文件.vhd,并可對(duì)其進(jìn)行綜合。之后在OuartusⅡ環(huán)境中,打開(kāi)DSP Builder,建立的QuartusⅡ工程文件,就可以對(duì)生成的VHDL代碼進(jìn)行器件配置、引腳設(shè)定、編譯、時(shí)序仿真、硬件下載等工作。
2.5 基于QuartusⅡ的時(shí)序仿真
在Simulink中進(jìn)行的系統(tǒng)仿真是針對(duì)算法實(shí)現(xiàn)的,與目標(biāo)器件和硬件系統(tǒng)沒(méi)有關(guān)系,其仿真結(jié)果并不能精確反映電路的全部硬件特性,因此,需要對(duì)設(shè)計(jì)進(jìn)行時(shí)序仿真。
在QuartusⅡ環(huán)境中,打開(kāi)DSP Builder建立的QuartusⅡ工程文件,對(duì)上述的VHDL代碼進(jìn)行時(shí)序仿真。圖4為在OuartusⅡ7.O環(huán)境下FIR數(shù)字濾波器時(shí)序仿真圖。圖4中clock為系統(tǒng)時(shí)鐘,sclrp為清零信號(hào),xin為輸入數(shù)據(jù),yout為濾波器的輸出結(jié)果。
由式(2)知:若xin{1,-5},h(n)={-22,-33,-13,41,108,154,154,108,41,-13,-33,-22},則濾波器的輸出yout的理論結(jié)果為:yout=xinh(n)={-14,-56,-14,53,128,180,178,124,42,-31,-64,-56,-14,28}。可見(jiàn),所設(shè)計(jì)的FIR數(shù)字濾波器在QuarmsII 7.0中進(jìn)行時(shí)序仿真得到的輸出結(jié)果和理論上計(jì)算得到的結(jié)果是完全一致的。
3 實(shí)際硬件測(cè)試
只進(jìn)行工程軟件仿真遠(yuǎn)遠(yuǎn)不夠,還必須進(jìn)行硬件實(shí)時(shí)測(cè)試。在硬件實(shí)際運(yùn)行時(shí),可以從外部信號(hào)源接入器件內(nèi)部或者在其內(nèi)部存儲(chǔ)正弦波數(shù)據(jù)。這里采用后者,即在頂層文件中引入LPM_ROM宏模塊,在其中存入頻率分別為0.5和8 kHz2個(gè)正弦波迭加信號(hào)數(shù)據(jù)的.hex文件.FIR濾波器模塊直接從ROM中讀取數(shù)據(jù),測(cè)試電路如圖5所示。
在QuartusⅡ環(huán)境中,對(duì)測(cè)試電路進(jìn)行編譯,下載到cyclone系列EP1C12Q240C8器件后,就可以對(duì)硬件進(jìn)行測(cè)試。采用Ahem公司的Signal-TapⅡ嵌入式邏輯分析儀進(jìn)行芯片測(cè)試,用戶(hù)無(wú)需外接專(zhuān)用儀器,就可以通過(guò)FPGA器件內(nèi)部所有信號(hào)和節(jié)點(diǎn)的捕獲對(duì)系統(tǒng)故障進(jìn)行分析和判斷,而又不影響原硬件系統(tǒng)的正常工作。
經(jīng)嵌入式邏輯分析儀得到的實(shí)時(shí)波形如圖6所示。實(shí)際測(cè)試發(fā)現(xiàn),經(jīng)過(guò)設(shè)計(jì)的低通濾波器后,高頻信號(hào)被濾除,只有低頻信號(hào)輸出,濾波效果滿足系統(tǒng)要求。需要注意的是,SignalTapⅡ嵌入式邏輯分析需工作在JTAG方式,在調(diào)試完成后,需將SignalTapⅡ移除設(shè)計(jì),以免浪費(fèi)資源。
4 結(jié)束語(yǔ)
由以上設(shè)計(jì)過(guò)程可知,基于Matlab/Simulink/DSP Builder/OuartusⅡ的設(shè)計(jì)流程,可以幫助設(shè)計(jì)者完成基于FPGA的數(shù)字信號(hào)處理系統(tǒng)設(shè)計(jì)。使用相對(duì)獨(dú)立功能的電路模塊和子系統(tǒng)進(jìn)行模塊化的設(shè)計(jì),避免了繁瑣的VHDL語(yǔ)言編程;設(shè)計(jì)者只要對(duì)DSP Builder模塊庫(kù)中相應(yīng)模塊的基本參數(shù)進(jìn)行簡(jiǎn)單設(shè)置,而不需要對(duì)各模塊具體的實(shí)現(xiàn)過(guò)程進(jìn)行詳細(xì)了解,甚至不需要了解FPGA本身和硬件描述語(yǔ)言,極大縮短了開(kāi)發(fā)周期。而且隨著技術(shù)的發(fā)展,F(xiàn)PGA的性能越來(lái)越高,價(jià)格則逐步降低,芯片的處理速度更快,片內(nèi)資源更大,這將給FPGA在信號(hào)處理領(lǐng)域的應(yīng)用提供更為廣闊的空間。