MULTLAB DSPbuilder硬件模塊設(shè)計(jì)_第1頁(yè)
MULTLAB DSPbuilder硬件模塊設(shè)計(jì)_第2頁(yè)
MULTLAB DSPbuilder硬件模塊設(shè)計(jì)_第3頁(yè)
MULTLAB DSPbuilder硬件模塊設(shè)計(jì)_第4頁(yè)
MULTLAB DSPbuilder硬件模塊設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第六章 Matlab/Dsp builder硬件模塊設(shè)計(jì)Matlab是國(guó)內(nèi)強(qiáng)大的數(shù)學(xué)分析工具,廣泛用于科學(xué)計(jì)算和工程計(jì)算,還可以進(jìn)行復(fù)雜的數(shù)字信號(hào)處理系統(tǒng)的建模、參數(shù)估計(jì)及性能分析。Simulink是Matlab的一個(gè)組成部分,用于圖形化建模仿真。DSP Builder是Altera公司推出的一個(gè)面向DSP開(kāi)發(fā)的系統(tǒng)級(jí)工具,它構(gòu)架在多個(gè)軟件工具之上,并把系統(tǒng)級(jí)(算法級(jí)建模)和RTL級(jí)(硬件實(shí)現(xiàn))兩個(gè)設(shè)計(jì)領(lǐng)域的設(shè)計(jì)工具連接起來(lái)放在Matlab/Simulink平臺(tái)上,而將Quartrs作為底層設(shè)計(jì)工具置于后臺(tái),從而最大程度地發(fā)揮了這三種工具的優(yōu)勢(shì)。DSP Builder作為Simulink中的一

2、個(gè)工具箱,使得用FPGA設(shè)計(jì)DSP系統(tǒng)完全可以通過(guò)Simulink的圖形化界面進(jìn)行,只要簡(jiǎn)單地進(jìn)行DSP Builder工具箱中的模塊調(diào)用即可。Matlab/DSP Builder尤其適用于一些在Quartus上不方便完成或不能完成的設(shè)計(jì)項(xiàng)目(如涉及算法類及模擬信號(hào)處理與生產(chǎn)方面的系統(tǒng)處理)。DSP Builder還可以自動(dòng)完成大部分的設(shè)計(jì)過(guò)程和仿真,直到把設(shè)計(jì)文件下載到FPGA中。DSP Builder提供了Quartus® II軟件和MATLAB/Simulink工具之間的接口。其具有如下特性: 1.用于連接Mathwork的MATLAB(信號(hào)處理工具箱和濾波器設(shè)計(jì)工具箱),Si

3、mulink環(huán)境和Altera® 的Quartus II設(shè)計(jì)軟件環(huán)境。 2.支持Altera 的DSP核,這些核均可以從Altera的網(wǎng)站上下載(例如:FIR Compiler、Reed-Solomon Compiler等等)。 3.可以利用Altera的DSP開(kāi)發(fā)板來(lái)快速的實(shí)現(xiàn)設(shè)計(jì)的原型。 4.支持SignalTap® II邏輯分析儀(一種嵌入式的信號(hào)分析儀,它可以探測(cè)到DSP開(kāi)發(fā)板上Altera器件內(nèi)部的信號(hào),并把數(shù)據(jù)引入到MATLAB的工作區(qū)以便于進(jìn)行可視化的分析)。 5.包括了用戶可以創(chuàng)建的定制的邏輯,用于配合SOPC Builder和Nios® II嵌入

4、式處理器設(shè)計(jì)。 6.包括了PLL塊,用于多時(shí)鐘設(shè)計(jì)。 7.包括了狀態(tài)機(jī)塊。 8.針對(duì)DSP系統(tǒng)的算法和實(shí)現(xiàn),支持統(tǒng)一的表示方法。 9.根據(jù)MATLAB和Simulink的測(cè)試矢量,可以自動(dòng)生成VHDL測(cè)試激勵(lì)或Quartus II矢量文件(.vec)。 10.自動(dòng)調(diào)用VHDL綜合器和Quartus II編譯器。 11.仿真可以設(shè)定為比特或周期精度。 12.提供多種的定點(diǎn)運(yùn)算和邏輯操作,用于配合使用Simulink 軟件。 13.支持多種Altera 的器件: Stratix、Stratix II 和 Stratix GX 器件; Cyclone 和 Cyclone II 器件; APEXII、

5、APEX 20KC 和 APEX 20KE 器件; Mercury器件; ACEX® 1K 器件; FLEX® 10K 和 FLEX 6000 器件。 利用Matlab和DSP Builder進(jìn)行模塊設(shè)計(jì)也是SOPC技術(shù)的一個(gè)組成部分。這是由于利用Matlab/DSP Builder/Quartrs可完成純硬件的DSP算法模型及實(shí)現(xiàn),從而構(gòu)成嵌入式系統(tǒng)外圍接口的協(xié)處理模塊,再進(jìn)一步構(gòu)成軟件程序中的精簡(jiǎn)指令,DSP模塊或其他功能模塊可以成為單片F(xiàn)PGA電路系統(tǒng)中的一個(gè)組成部分,而且通過(guò)Matlab/DSP Builder,可以直接為Nios嵌入式處理器設(shè)計(jì)各類加速器,并以指令

6、的形式加入到Nios的指令系統(tǒng),從而成為Nios系統(tǒng)的一個(gè)接口設(shè)備,與整個(gè)片內(nèi)嵌入式系統(tǒng)融為一體。即利用DSP Builder和基本的Nios CPU,用戶可以根據(jù)項(xiàng)目的要求,自己構(gòu)建自己需要的DSP處理系統(tǒng)。本章主要介紹利用Matlab/ DSP Builder/Quartrs三個(gè)工具軟件聯(lián)合開(kāi)發(fā)的設(shè)計(jì)流程。圖61為Matlab/DSP Builder/Quartrs聯(lián)合應(yīng)用框圖。由圖61可見(jiàn),設(shè)計(jì)流程從利用建立DSP電路模型開(kāi)始,電路模型的建立可以是圖形化的,利用Simulink和DSP Builder中提供的豐富的功能模塊和IP核進(jìn)行設(shè)計(jì)。DSP Builder中包含了算術(shù)和存儲(chǔ)功能等設(shè)

7、計(jì)模塊以及IP庫(kù)中的許多復(fù)雜功能模塊。電路中的功能模塊和IP的技術(shù)參數(shù)、數(shù)據(jù)格式、數(shù)據(jù)類型和總線寬度等都可以直接設(shè)置。電路模型設(shè)計(jì)完成后,可以進(jìn)行系統(tǒng)級(jí)的模型仿真,這與目標(biāo)器件和硬件系統(tǒng)沒(méi)有關(guān)系,是基于算法的仿真。下個(gè)步驟是利用置于Simulink電路模型界面的DSP Builder的SignalCompiler,將電路模型文件,即Simulink電路模塊文件(.mdl)轉(zhuǎn)換成RTL級(jí)的VHDL代碼表述和工具命令語(yǔ)言(Tcl)腳本。一旦獲得轉(zhuǎn)換好的VHDL描述,在Simulink中即可調(diào)用VHDL綜合器了,目前可選用的綜合器有Quartrs、LeonardoSpectru、和Synplify。

8、由它們生成底層網(wǎng)表文件。在Quartrs進(jìn)行編譯優(yōu)化的過(guò)程中,會(huì)產(chǎn)生兩種詳細(xì)記錄電路硬件特點(diǎn)和優(yōu)化方式的底層電路描述的中間網(wǎng)表文件,即ATOM Netlist。然后調(diào)用Quartrs中的編譯器,根據(jù)網(wǎng)表文件及設(shè)置的優(yōu)化約束條件進(jìn)行布線布局和優(yōu)化設(shè)計(jì)的適配操作,最后生成編程文件和仿真文件(.pdf和.sof),它們可用于對(duì)目標(biāo)器件的編程配置和硬件實(shí)現(xiàn);與此同時(shí)可生成分別用于Quartrs的門級(jí)仿真文件和ModelSim的VHDL時(shí)序仿真文件,以及相應(yīng)的VHDL仿真激勵(lì)文件,以用于實(shí)時(shí)測(cè)試DSP系統(tǒng)的工作性能。圖61 基于 Matlab/Dsp builder/Quartrs等工具 6.1 DSP

9、 Builder元件庫(kù)簡(jiǎn)介 打開(kāi)Matlab環(huán)境??梢钥吹組atlab的主窗口界面被分割成三個(gè)窗口:命令窗口(Command Window)、工作區(qū)(Workspace)、命令歷史(Command History)。使Matlab的Current Directory指向所安裝的DSPBuilder的Altlib文件夾,點(diǎn)擊旁邊的simulink圖標(biāo)打開(kāi)simulink庫(kù),如下圖62所示。圖62 Matlab的Current Directory 在Simulink Library Browser的左面展開(kāi)Altera DSP Builder可以看見(jiàn)DSP Builder的元件庫(kù)如圖63所示,元件

10、庫(kù)可以分為若干部分。其中有主控元件庫(kù)(AltLab)、算術(shù)元件庫(kù)(Arithmetic)、開(kāi)發(fā)板庫(kù)(Boards)、復(fù)元件庫(kù)(Complex Type)、組合元件庫(kù)(Gate Control)、總線元件庫(kù)(IOBus)、時(shí)鐘元件庫(kù)(Rate Change)、SOPC元件庫(kù)(SOPC Builder Links)、狀態(tài)機(jī)功能元件庫(kù)(State Machine Functions)、時(shí)序元件和存儲(chǔ)器元件庫(kù)(Storage)、IP核元件庫(kù)(MegaCore Function)、視頻和圖象處理元件庫(kù)(Video and Image Processing)圖63 DSP Builder元件庫(kù)1、主控元件

11、庫(kù)(AltLab),包含一些用于控制的模塊。主要有:數(shù)據(jù)觀察窗(BP)、FPGA編程器(Device programmer)、HDL引入模塊(HDL Import)、HDL子系統(tǒng)元件模塊(HDL SubSystem)、HIL硬件環(huán)境模塊(HIL)、邏輯分析儀探頭(Node)、硬件工程參數(shù)設(shè)置模塊(Quartus Global Project Assignment)、FPGA引腳鎖定模塊(Quartus Poinout Assignment)、MatLab模型至VHDL轉(zhuǎn)換器(SignalCompiler)、邏輯分析儀(SignalTap Analysis)。2、算術(shù)元件庫(kù)(Arithmetic

12、),包含一些與運(yùn)算相關(guān)聯(lián)的器件。主要有比較器(Comparator)、計(jì)數(shù)器(Counter)、差分器(Differentiator)、除法器(Divider)、增益乘法器(Gain)、地址發(fā)生器(Incerement Decrement)、積分器(Integrator)、乘法器(Multiplier)、乘法累加器(Multiply Accumulate)。如圖64所示。圖64 算術(shù)元件庫(kù)3、SOPC元件庫(kù)(SOPC Builder Links),在左側(cè)展開(kāi)加號(hào)分別是SOPC AVALON總線模塊、SOPC AVALON總線端口模塊和SOPC用戶自定制指令端口。如圖65。圖65 SOPC元件庫(kù)

13、4、IP核元件庫(kù)(MegaCore Function),包含Altera公司設(shè)計(jì)好的IP核??梢允挂话愕脑O(shè)計(jì)者在不用全面了解所用IP核相關(guān)技術(shù)過(guò)多細(xì)節(jié)的情況下,在短期內(nèi)設(shè)計(jì)符合要求的系統(tǒng)。MegaCore是Altera的IP Core計(jì)劃中的一個(gè)組成部分,IP核元件庫(kù)所包含的IP核不附帶在DSP Builder和Quartus中,需要單獨(dú)購(gòu)買。如圖66所示,IP核元件庫(kù)主要有CIC IP核(cic)、FFT IP核(fft)、FIR IP核(fir)、NCO IP核(noc)、RS IP核、VITERBI IP核(viterbi)。圖66 MegaCore Function元件庫(kù)6.2 FSK

14、調(diào)制器設(shè)計(jì) 二進(jìn)制頻率調(diào)制(2FSK),是利用二進(jìn)制數(shù)字基帶信號(hào)控制載波進(jìn)行頻譜變換的過(guò)程。在發(fā)送端產(chǎn)生不同頻率的載波震蕩來(lái)傳輸數(shù)字信號(hào)“0”、“1”,在接收端,把不同頻率的載波振蕩還原成相應(yīng)的數(shù)字基帶信號(hào)。FSK調(diào)制的方法有兩種:1、 直接調(diào)頻法用數(shù)字基帶矩形脈沖控制一個(gè)振蕩器的某些參數(shù),直接改變振蕩頻率,輸出不同的頻率信號(hào)。2、 頻率鍵控法用數(shù)字矩形脈沖控制電子開(kāi)關(guān)在兩個(gè)振蕩器之間進(jìn)行轉(zhuǎn)換,從而輸出不同頻率的信號(hào)。 建立設(shè)計(jì)模型1、 們需要建立一個(gè)工作庫(kù),所以先新建一個(gè)文件夾FSK。2、 使Matlab的Current Directory指向所安裝的DSPBuilder的Altlib文件夾

15、點(diǎn)擊上方的simulink圖標(biāo)打開(kāi)simulink庫(kù),如下圖67所示。圖67 Matlab的Current Directory3、 在Simulink Library Browser 窗口中選擇File菜單,在出現(xiàn)的菜單中選擇New,在彈出的子菜單中選擇新建模型model。如圖68圖68 新建Model4、放置SignalCompilder。點(diǎn)擊simulink庫(kù)管理器左側(cè)的數(shù)形列表中的Altera DSP Builder條,使之展開(kāi)DSPBuilder庫(kù),這時(shí)會(huì)出現(xiàn)一串樹(shù)形列表,對(duì)DSPBuider的子模塊(Block)進(jìn)行分組,展開(kāi)其中的Altlab,選擇庫(kù)管理器右側(cè)的SignalComp

16、ilder,拖動(dòng)到新的模型窗口。如圖69圖69 Simulink庫(kù)中的DspBuilder5、圖65,為所需最終連接的Modle圖形。參照?qǐng)D610先放置Input2,Input2在DSPBuilder庫(kù)中的IOBus模塊中,選擇Input拖動(dòng)到新Model中,點(diǎn)擊圖形下面的文字Input可以更改名稱。雙擊打開(kāi)參數(shù)設(shè)置窗口,Bus type可設(shè)為Unsigned Integer(無(wú)符號(hào)整數(shù)),number of bits設(shè)為2。如圖611圖610 FSK調(diào)制模型圖611 input2參數(shù)設(shè)置 Constant也同樣在IOBus模塊中,constant1設(shè)置為無(wú)符號(hào)整數(shù),number of bit

17、s 設(shè)為8,常數(shù)值(Constant Value)設(shè)置為9,抽樣時(shí)間(Sample time)為1,如圖6-12。 Constant2除了 Constant value設(shè)置為3外,其余設(shè)置同Constant1,這樣可以使數(shù)字基帶矩形脈沖的峰峰值在3到9之間。圖6-12 constant1參數(shù)設(shè)置6 、n-to-1 Multiplexer和LUT同在GateControl模塊下,將它們拖到新建Model中將LUT改名為ROM10X10S,如圖6-13圖6-13 LUE和n-to-1Multiplexer模塊其中n-to-1Multiplexer的數(shù)據(jù)輸入線(Number of input Dat

18、a Line)設(shè)為2,pipeline設(shè)為1。ROM10X10S的bus Type設(shè)為signed Integer(有符號(hào)整數(shù)),輸出位number of bits為8位,LUT Address Width(查找表地址線位寬)設(shè)為8。在MATLAB Array編輯框中輸入計(jì)算查找表內(nèi)容的計(jì)算式。在此可以直接使用正弦(sin)函數(shù),在這里sin函數(shù)的調(diào)用格式為sin(起始值:步進(jìn)值:結(jié)束值)。 ROM10X10S為一個(gè)輸入地址為8位,輸出地址為8位的正弦查找表模塊,輸入地址總線位有符號(hào)整數(shù)(Signed Interger)??梢栽O(shè)定起始值為0、結(jié)束值為2,步進(jìn)值為2/28。計(jì)算式可以寫(xiě)成127*

19、sin( 0:2*pi/(28):2*pi ),其中pi即位常數(shù)。在Use LPM處打勾,表示允許Quartus利用目標(biāo)器件中的嵌入式RAM(在EAB、ESB或M4K模塊中)來(lái)構(gòu)成ROM10X10S,即將生成的正弦波數(shù)據(jù)放在嵌入式RAM構(gòu)成的ROM中,這樣可以節(jié)省大量的邏輯資源。如圖6-14。圖6-14 ROM10X10S參數(shù)設(shè)置7、在Arithmetic模塊下找到Parallel Adder Subtractor,改名為ADDER4,將輸入設(shè)為2,Add(+)Sub(-)設(shè)為+,其余不變,如圖6-15。圖6-15 設(shè)置ADDER4 8、放置Delay模塊。在Storage庫(kù)下的Delay,放

20、置到新建模型窗口并改名為Dly2 。Delay是一個(gè)延時(shí)環(huán)節(jié)。在這里不修改其默認(rèn)參數(shù)設(shè)置。9、Bus7和Out8在IOBus庫(kù)下。找到AltBus,和output分別改名為Bus7 和Out8。Bus7的Bus Type為Signed Integer,Node Type為Internal Node,number of bit 為8位。如圖6-16。圖6-16 設(shè)置Bus7Out8的Bus Type也為Signed integer類型8位。如圖6-17。圖6-17 設(shè)置Out810、放置完所需的模塊后,按照?qǐng)D6-5連接好。這樣就完成了FSK調(diào)制模型的設(shè)計(jì)。在進(jìn)行仿真驗(yàn)證和SignalCompil

21、er編譯前,先對(duì)文件進(jìn)行存盤操作:點(diǎn)擊新建模型窗口的File菜單,選擇Save項(xiàng)。取名并保存在自己所建的文件夾FSK中。在本例中,新建模型取名為fsk,模型文件為fsk.mdl。保存完畢后,新建模型窗口的標(biāo)題欄會(huì)顯示模型的名稱,對(duì)模型取名后就可以使用SignalCompiler進(jìn)行編譯了。在編譯前還需要進(jìn)行仿真驗(yàn)證。 Simulink模型仿真 用DSP Builder模塊設(shè)計(jì)好一個(gè)新的模型后,可以直接在simulink中進(jìn)行算法級(jí)、系統(tǒng)級(jí)仿真驗(yàn)證。對(duì)一個(gè)模型進(jìn)行仿真,需要施加合適的激勵(lì)、一定的仿真步進(jìn)和仿真周期,添加合適的觀察點(diǎn)和觀察方式。需要強(qiáng)調(diào)的是:凡是來(lái)自Altera DSP Build

22、er庫(kù)以外的模塊,SignalCompiler都不能將其變成硬件電路,即不會(huì)影響生成的VHDL程序,但在啟動(dòng)Simulink仿真后能影響后面產(chǎn)生的仿真激勵(lì)文件,Pulse Generator模塊的情況正是如此。1、加入一個(gè)Pulse Generator模塊,在Simulink庫(kù)管理器中,展開(kāi)simulink庫(kù),選中Sources庫(kù),把Sources庫(kù)中的Pulse Generator模塊拖放到FSK模型窗口中。2、添加波形觀察模塊。在simulink的庫(kù)管理器中,展開(kāi)simulink庫(kù),選中其中的Sinks庫(kù),把Scope模塊拖放到FSK模型窗口中。雙擊該模塊,打開(kāi)的是一個(gè)Scope窗口。用鼠

23、標(biāo)點(diǎn)擊Scope模塊窗口上側(cè)工具欄的第二個(gè)工具按鈕:Parameters參數(shù)設(shè)置。打開(kāi)Scope參數(shù)設(shè)置對(duì)話框,在Scope對(duì)話框中有兩個(gè)選項(xiàng)頁(yè):Gerneral和Data History。在Gerneral選項(xiàng)頁(yè)中,改變Number of axes參數(shù)為2。點(diǎn)擊“OK”后可以看到Scope窗口增加了兩個(gè)波形觀察窗。每個(gè)觀察窗都可以分別觀察信號(hào)波形,而且相對(duì)獨(dú)立。如圖6-18。圖6-18 Scope設(shè)置3、按圖6-10連接FSK模型的全圖。先設(shè)置模型的仿真激勵(lì)。需要設(shè)置與此相連的模塊:Pulse Generator。雙擊放置在FSK模型窗口中的Pulse Generator模塊,設(shè)置對(duì)輸入端口

24、施加的激勵(lì)。在打開(kāi)的Pulse Generator模塊參數(shù)設(shè)置對(duì)話框中,可以看到下列參數(shù)如圖6-19。圖6-19 Pulse Generator參數(shù)設(shè)置 其中脈沖類型(Pulse Type)是基于時(shí)間的(Time based),振幅(Amplitude)為1,周期(period)是1500秒,占空比(Pulse Width)為50%,相位延遲(Phase delay)為0。4、點(diǎn)擊Simulation菜單,在下拉菜單中選擇configuration parameters如圖(620),將Stop time設(shè)置成10000。FSK模型編輯窗中,在Simulation菜單下,選Start項(xiàng),開(kāi)始仿

25、真。等待仿真結(jié)束,雙擊Scope模塊,打開(kāi)scope觀察窗。在Scope觀察窗中,可以使用工具欄中的按鈕來(lái)放大縮小波形,也可以使用工具欄上的“Autoscale”,使波形自動(dòng)適配波形觀察窗,用鼠標(biāo)左鍵,可以放大波形。圖6-21為FSK的仿真圖形。圖620 FSK仿真停止時(shí)間圖6-21 FSK仿真圖圖中可以清晰的看到在脈沖值為1和0時(shí),載波信號(hào)頻率隨脈沖信號(hào)值變化而變化,從而實(shí)現(xiàn)了2FSK。 SignalCompiler使用方法下面進(jìn)行設(shè)計(jì)流程中最為關(guān)鍵的一步,就是把DSP Builder的設(shè)計(jì)轉(zhuǎn)到硬件上加以實(shí)現(xiàn)。在這一步,可以獲得針對(duì)特定FPGA芯片的VHDL代碼。1、雙擊FSK模型中的Sig

26、nalCompiler模塊,將出現(xiàn)如圖622所示的對(duì)話框,點(diǎn)擊Analyze(分析)按鈕后,SignalCompiler就會(huì)對(duì)FSK模型進(jìn)行分析,檢查模型有無(wú)錯(cuò)誤,并在Matlab主窗口彈出對(duì)話框,并給出相關(guān)信息。圖622 雙擊SignalCompiler2、 圖621中顯示了Signal Compiler窗口,左側(cè)是項(xiàng)目設(shè)置選項(xiàng)Project Setting Options,可以設(shè)置器件類型(Device)、綜合工具(Synthesis Tool)以及優(yōu)化項(xiàng)目(Opimization);右側(cè)是硬件編譯流程Hardware Compilation;下方是信息框Messages。SignalCo

27、mpiler的設(shè)置都集中在項(xiàng)目設(shè)置選項(xiàng)部分。在Device下拉選擇框中選擇需要的器件系列,在此選為Cyclone系列。其具體的器件型號(hào),需由QuartusII自動(dòng)決定使用該器件系列中的某一個(gè)具體型號(hào)的器件,或在手動(dòng)流程中由用戶指定。圖621 SignalCompiler設(shè)置對(duì)話框3、當(dāng)設(shè)置好Device和Synthesis后,右側(cè)的硬件編譯Hardware Compilation部分就會(huì)列出一個(gè)操作流程,見(jiàn)圖621。分別為:轉(zhuǎn)換MDL文件為VHDL文件(Convert MDL to VHDL)綜合(Synthesis)編譯適配(QuartusIIQuartus) 先點(diǎn)擊步驟1的圖標(biāo),完成sim

28、ulink文件(*.mdl)到VHDL文件的轉(zhuǎn)換。轉(zhuǎn)換完成后,在“Messages”信息提示框中,會(huì)顯示“Generated top level “fsk.vhd” files”,即頂層文件fsk.vhd完成轉(zhuǎn)換(圖4-34)。fsk模型生成的VHDL文件4、點(diǎn)擊步驟2的圖標(biāo),完成綜合過(guò)程。因?yàn)樽髠?cè)的設(shè)置,本例用QuartusII來(lái)完成綜合過(guò)程的,在綜合后生成原子網(wǎng)表供適配器使用,并自動(dòng)生成QuartusII可直接調(diào)用的工程。5、點(diǎn)擊步驟3的圖標(biāo),調(diào)用QuartusII完成編譯適配過(guò)程,生成編程文件:pof文件和sof文件(圖4-36)。編程文件可以直接用于FPGA的編程配置。如果想知道詳細(xì)的

29、報(bào)告,點(diǎn)擊下面的Report File按鈕進(jìn)行查看。Fsk 模型對(duì)應(yīng)的報(bào)告文件為fsk_DspBuilder_Report.html。 使用QuartusII實(shí)現(xiàn)時(shí)序仿真雖然已經(jīng)進(jìn)行了算法級(jí)、系統(tǒng)級(jí)仿真驗(yàn)證,然而進(jìn)行門級(jí)的時(shí)序仿真仍然是十分重要的,SignalCompiler已將MATLAB上的仿真信息轉(zhuǎn)變成了可用于QuartusII進(jìn)行時(shí)序仿真的激勵(lì)信息及相關(guān)仿真文件fsk_quartus.tcl,因此能容易地完成此項(xiàng)任務(wù)。1、打開(kāi)QuartusII環(huán)境,選擇菜單FileOpen Project ,定位到fsk模型所在路徑目錄,打開(kāi)DSP Builder建立的QuartusII工程文件:fs

30、k.quartus。2、上文中提到,在SignalCompiler中的QuartusII編譯,具體的器件由QuartusII自動(dòng)決定,可實(shí)際使用中,器件往往不是QuartusII自動(dòng)選定的那個(gè)型號(hào),管腳也不是QuartusII自動(dòng)分配的管腳。這些都需要在QuartusII中進(jìn)行修改。所以這里須按照前面章節(jié)中敘述的方法選擇具體器件型號(hào),本例中使用的是EP1C6Q240C8,然后啟動(dòng)全程編譯,即執(zhí)行Start Compilation 。3、執(zhí)行菜單ProcessingStart Simulation。圖622即為時(shí)序仿真波形,在圖中可以清楚的看到輸出數(shù)據(jù)隨著時(shí)鐘的變換交替的進(jìn)行頻率變換。如果這時(shí)看

31、不到輸出的波形數(shù)據(jù),應(yīng)該回到MATLAB設(shè)計(jì)文件檢查,仿真、變換(注意這時(shí)只按SignalCompiler中的第一按鈕?。?。圖6-22 時(shí)序仿真波形圖 使用QuartusII硬件測(cè)試與硬件實(shí)現(xiàn)在此按照前面章節(jié)中介紹的方法鎖定管腳。打開(kāi)fsk工程文件fsk.vhd,了解端口情況,選擇合適的電路模式。然后進(jìn)行編譯,完成適配過(guò)程。最后是進(jìn)行硬件的下載,連接好FPGA開(kāi)發(fā)板。然后將實(shí)測(cè)結(jié)果與在計(jì)算機(jī)上進(jìn)行的時(shí)序仿真結(jié)果進(jìn)行比較。若再想改動(dòng)Simulink中的fsk.mdl圖,應(yīng)該注意兩點(diǎn):第一,內(nèi)部電路結(jié)構(gòu)和設(shè)置可以改,但端口信號(hào)名不要改,如輸入input2、out8,因?yàn)榇诵盘?hào)的引腳已被鎖定,不便改

32、變第二,改動(dòng)out.mdl圖后只宜作系統(tǒng)仿真和VHDL文件轉(zhuǎn)換,不宜作綜合,即最多只能對(duì)圖617所示的界面執(zhí)行第1個(gè)按紐,否則將可能把原來(lái)設(shè)定好的引腳全部沖掉。 為了保存引腳信息,綜合與適配兩項(xiàng)操作必須在進(jìn)入QuartusII后進(jìn)行。圖623為硬件實(shí)現(xiàn)后的輸出波形。圖623 FSK調(diào)制波形6.3 直接數(shù)字合成DDS設(shè)計(jì) 直接數(shù)字合成DDS基本原理對(duì)于正弦信號(hào)發(fā)生器,它的輸出可以用下式來(lái)描述。 (61)其中是指該信號(hào)發(fā)生器的輸出信號(hào)波形,指輸出信號(hào)對(duì)應(yīng)的頻率。上式的表述對(duì)于t式連續(xù)的,為了用數(shù)字邏輯實(shí)現(xiàn)該表達(dá)式,必須進(jìn)行離散化處理,用基準(zhǔn)時(shí)鐘clk進(jìn)行抽樣,令正弦信號(hào)的相位: (62)在一個(gè)cl

33、k周期,相位的變化量為: (63)其中指clk的頻率對(duì)于2可以理解成“滿”相位,為了對(duì)進(jìn)行數(shù)字量化,把2切割成份,由此每個(gè)clk周期的相位增量用量化值來(lái)表述:,且為整數(shù)。與(63)式聯(lián)立,可得: (64) 顯然,信號(hào)發(fā)生器的輸出可描述為: (65) 其中指前一個(gè)clk周期的相位值,同樣得出 (66) 圖624為DDS的基本結(jié)構(gòu)圖圖624 基本DDS結(jié)構(gòu)用DSPBuilder設(shè)計(jì)DDS DDS采用了層次化的設(shè)計(jì)方法,即使用了Simulink的子系統(tǒng)(SubSystem)來(lái)完成DSP模型的層次化設(shè)計(jì)。我們可以用上面的例子進(jìn)行簡(jiǎn)單的介紹:在已經(jīng)建好的模型上進(jìn)行簡(jiǎn)單修改后,選擇除SignalCompi

34、ler、Pulse Generator以外的模塊,單擊右鍵選擇Create Subsystem如圖(625)。圖625 FSK輸出的修改 圖626為創(chuàng)建子系統(tǒng)模塊后的FSK圖形。用鼠標(biāo)雙擊Subsystem子系統(tǒng)模塊后,就會(huì)彈出fsk/Subsystem窗口,顯示子系統(tǒng)模塊封裝的原理圖。值得注意的是,有些DSPBuilder庫(kù)的模塊只能放在頂層原理圖中,如SignalCompiler模塊。如果子系統(tǒng)中放置了SignalCompiler模塊,只可以進(jìn)行Simulink仿真,而不能使用SignalCompiler來(lái)生成相應(yīng)的VHDL代碼。圖626 生成子系統(tǒng)后的FSK圖6-23為DDS的頂層設(shè)計(jì)圖

35、,而圖624為其子系統(tǒng)Subsystem的結(jié)構(gòu)圖。圖624 DDS頂層設(shè)計(jì)圖其中AMPL、PHASE、FREQ是simulink-Sources庫(kù)下的constant元件,Constant value分別為67、456、11456789,勾選Interpret vector parameters as 1-D選項(xiàng),Sample time為inf;Input、input1、input2在Altera DSP builder-IOBus庫(kù)下,Bus Type為Unsigned interger,number of bits分別為32、10、8;Output也在Altera DSP builder-

36、IOBus庫(kù)下,輸出位為10位有符號(hào)整數(shù)。圖625 DDS子系統(tǒng) 仿真時(shí)間為10000;ROM10X10S為Altera DSP builder-storage庫(kù)下的LUT元件,Bus Type為有符號(hào)整數(shù),輸出為10位,LUT Address Width寬為10位,MATLAB Array的輸出公式是511*sin( 0:2*pi/(210):2*pi ), 并勾選Use LPM和Register Address選項(xiàng);Pdt2為Altera DSP builder-Arithmetic庫(kù)的Product元件,Pipeline值為0,勾選Use LPM選項(xiàng);Bus1在Altera DSP bu

37、ilder-IOBus庫(kù),是BusConversion元件,為有符號(hào)整數(shù),輸入18位,輸出10位,Input Bit to Output LSB為8。 Bus7為Altera DSP builder-IOBus下的AltBus元件,總線類型是有符號(hào)整數(shù),節(jié)點(diǎn)類型是內(nèi)部節(jié)點(diǎn)(Internal Node),32位;Adder4和Adder3設(shè)置相同,為在Altera DSP builder-Arithmetic下的Parallel Adder Subtractor元件,Number of Inputs是2,Add(+)Sub(-)設(shè)為“”,勾選Pipeline選項(xiàng),Clock Phase Sele

38、ction設(shè)置為1;Dly2是Altera DSP builder-Storage下Delay元件,默認(rèn)設(shè)置;BusConversion在Altera DSP builder-IOBus元件庫(kù),Bus Type為Signed Interger輸入為32位,輸出10位,Input Bit to Output LSB為22。 圖6-26為DDS信號(hào)輸出波形。圖6-26 DDS信號(hào)輸出6.4 AM調(diào)制器設(shè)計(jì)6.4.1 AM調(diào)制原理 AM的調(diào)制原理是將要傳送的信息裝載到某一高頻(載波)信號(hào)上去的過(guò)程,幅度調(diào)制是用調(diào)制信號(hào)去控制載波的振幅,使其隨調(diào)制信號(hào)線型變化,而保持載波的頻率不變。圖627為在Mal

39、tlab下完成的AM全圖,主要分為4個(gè)區(qū)域:區(qū)和區(qū)為兩個(gè)正弦信號(hào)發(fā)生器,分別為調(diào)制信號(hào)和載波信號(hào);區(qū)為控制區(qū),主要控制調(diào)制信號(hào)的幅度。當(dāng)Cnt9選擇不同值時(shí),區(qū)輸出不同的參數(shù)調(diào)整區(qū)輸出正弦信號(hào)的幅度,使調(diào)制信號(hào)的輸出具有不同的幅度(如圖6-27)。圖628為Con9選擇1、3、6時(shí)輸出的調(diào)制信號(hào)。區(qū)主要作用是將調(diào)制信號(hào)裝載到載波信號(hào)上去,實(shí)現(xiàn)信號(hào)的調(diào)制。圖627 AM調(diào)制原理圖圖6-28 受控的調(diào)制信號(hào)圖6-29 AM調(diào)制信號(hào)6.4.2 AM調(diào)制器參數(shù)設(shè)置仿真時(shí)間設(shè)為100000,其它設(shè)置如下:1、區(qū)正弦信號(hào)發(fā)生器的設(shè)置:Cst15:Altera DSP Builder-IOBus-Const

40、antBus Type:Unsigned Integernumber of bits:16Constant:20Sample time:1 Bus3:Altera DSP Builder-IOBus-AltBusBus Type:Unsigned IntegerNode Type:Internal Nodenumber of bits:16Adder1:Altera DSP Builder-Arithmetic-Parallel Adder Subtractor number of input:2 Add(+)Sub(-):+ Clock Phase Selection:1Dly:Altera

41、 DSP Builder-Storage-Delay 默認(rèn)設(shè)置Bus5:Altera DSP Builder-IOBus-BusConversion Bus Type:Signed Integer Inputnumber of bits:16Outputnumber of bits:8Input Bit Connected to Output LSB:8ROM8X8S:Altera DSP Builder-Storage-LUT Bus Type:Signed Integer Outputnumber of bits:8 LUT Address Width:8 MATLAB Array:127

42、*sin( 0:2*pi/(28):2*pi ) 勾選 Use LPM 和Register Address項(xiàng) 2、區(qū)控制端參數(shù)設(shè)置: Mux41:Altera DSP Builder-GateControl-n to 1 Multiplexer Number of Input Data Line:8 Pipeline:0 SL:Altera DSP Builder-IOBus-input Bus Type:Unsigned IntegerNode Type:Input Portnumber of bits:3 Cnt9:Simulink-sources-Constant Constant va

43、lue:6 勾選Interpret vector parameters as 1-D Sample time:inf Cst8-14:Altera DSP Builder-IOBus-Constant Bus Type:Signed Fractionnumber of bits.:8.number of bits:8Sample time:13、區(qū)調(diào)制區(qū)參數(shù)設(shè)置 Pdt1、Pdt2:Altera DSP Builder-Arithmetic-Product Pipeline:0 勾選Use LPM ADDER2、Adder3:Altera DSP Builder-Arithmetic-Para

44、llel Adder Subtractor number of input:2 Add(+)Sub(-):+ Clock Phase Selection:1 勾選Pipeline選項(xiàng)。 Bus1:Altera DSP Builder-IOBus-BusConversion Bus Type:Signed Integer Inputnumber of bits:18Outputnumber of bits:10Input Bit Connected to Output LSB:8 Cst3:Altera DSP Builder-IOBus-ConstantBus Type:Unsigned In

45、tegernumber of bits:8Constant:128Sample time:1 Cst4:Altera DSP Builder-IOBus-ConstantBus Type:Unsigned Integernumber of bits:10Constant:512Sample time:1 Adder2:Altera DSP Builder-Arithmetic-Parallel Adder Subtractor number of input:2 Add(+)Sub(-):+ Clock Phase Selection:1AM_OUT:Altera DSP Builder-IO

46、Bus-output Bus Type:Unsigned IntegerNode Type:Output Portnumber of bits:104、區(qū)正弦信號(hào)發(fā)生器的設(shè)置:Cst16:Altera DSP Builder-IOBus-ConstantBus Type:Unsigned Integernumber of bits:32Constant:88234567Sample time:1 Bus7:Altera DSP Builder-IOBus-AltBusBus Type:Unsigned IntegerNode Type:Internal Nodenumber of bits:3

47、2Adder4:Altera DSP Builder-Arithmetic-Parallel Adder Subtractor number of input:2 Add(+)Sub(-):+ Clock Phase Selection:1 勾選PipelineDly2:Altera DSP Builder-Storage-Delay 默認(rèn)設(shè)置BusConversion:Altera DSP Builder-IOBus-BusConversion Bus Type:Signed Integer Inputnumber of bits:32Outputnumber of bits:10Input

48、 Bit Connected to Output LSB:22ROM10X10S:Altera DSP Builder-Storage-LUT Bus Type:Signed Integer Outputnumber of bits:10 LUT Address Width:10 MATLAB Array:511*sin( 0:2*pi/(210):2*pi ) 勾選 Use LPM 和Register Address項(xiàng)6.5FSK硬件環(huán)HIL仿真設(shè)計(jì)前面提到的在Simulink平臺(tái)上的仿真都屬于算法級(jí)仿真,是軟件仿真。如果想要求仿真結(jié)果能反映模塊的硬件特性,在Simulink平臺(tái)上的仿真就不

49、能滿足要求。在Quartus平臺(tái)上的仿真盡管獲得了全硬件的仿真結(jié)果,但沒(méi)有Matlab提供的大量功能強(qiáng)大的仿真工具,一些特定功能的激勵(lì)信號(hào)難以獲得。因此最理想的方法是直接在Simulink平臺(tái)上將設(shè)計(jì)模型下載進(jìn)FPGA,利用Simulink提供的各類仿真工具進(jìn)行仿真。Altera的DSP Builder提供的HIL(Hardware in the Loop)模塊能很好的完成這類仿真。HIL可以在Simulink模型與FPGA開(kāi)發(fā)板間通過(guò)JTAG通信口建立一種聯(lián)系,從而實(shí)現(xiàn)基于Matlab/DSP Builder平臺(tái)的硬件仿真。我們利用上文建立的FSK模型來(lái)舉例說(shuō)明基于HIL模塊的仿真流程。1、

50、 調(diào)出前面完成的FSK模型。將信號(hào)源Pulse Generator的參數(shù)和修改如下圖630。圖630 Pulse Generator參數(shù)設(shè)置圖631 FSK的仿真參數(shù)設(shè)置窗2、用SignalCompiler對(duì)FSK模型進(jìn)行轉(zhuǎn)換、綜合和適配。按照?qǐng)D621的步驟,分別按動(dòng)對(duì)話框按鈕1、2、3,使fsk_HIL.mdl轉(zhuǎn)換成為一個(gè)Quartus工程。3、如圖632所示,刪去FSK圖中所有Altera DSP Builder庫(kù)元件構(gòu)成的電路,再引入HIL模塊(Altera DSP BuilderAltlabHIL)。為穩(wěn)妥起見(jiàn),將設(shè)計(jì)另存。圖632 加入HIL模塊的FSK4、將PC機(jī)與FPGA開(kāi)發(fā)板連

51、接好,打開(kāi)電源。雙擊圖632的HIL模塊,將彈出圖633所示的HIL參數(shù)設(shè)置對(duì)話框。首先在1.Select Quartus Project加入前面生成的FSK工程;然后在2.Select the clock pin欄選擇clock;根據(jù)電路圖輸入輸出端口的數(shù)據(jù)類型確定3.Identity the signed port中各端口的數(shù)據(jù)類型在右欄的Burst Mode處打勾;在Burst length處鍵入1024(默認(rèn));在Frame Mode處打勾,下面參數(shù)默認(rèn),點(diǎn)擊Next page按鈕,進(jìn)入下一頁(yè)進(jìn)入圖634界面。圖633 HIL參數(shù)設(shè)置在圖634的FPGA device欄輸入你所應(yīng)用的F

52、PGA型號(hào),如本書(shū)應(yīng)用的類型為EP1C6Q240C8。如果PC機(jī)與FPGA的JTAG口通信正常,則在Program the FPGA 欄下的JTAG Cable欄將自動(dòng)顯示編程器類型;而Device in chain欄將自動(dòng)顯示已經(jīng)從FPGA板上測(cè)得的FPGA型號(hào)。點(diǎn)擊Compile with Quartus按鈕,進(jìn)行編譯,即將原來(lái)圖FSK模型已經(jīng)生成的工程文件與HIL模塊中輸入輸出信號(hào)緩沖模塊一起編譯成一個(gè)下載文件。以便進(jìn)行基于HIL第硬件仿真。如果編譯成功,會(huì)產(chǎn)生一個(gè)“.sof”文件,在圖6-34下方的信息欄出現(xiàn)文字:Created fsd_HIL.sof.。下面點(diǎn)擊圖6-34的Confi

53、gure FPGA按鈕,通過(guò)JTAG口將此文件下載到FPGA中。如果下載無(wú)誤,會(huì)在信息欄出現(xiàn)文字:Programming successful。圖6-34 HIL模塊編輯與編程窗 5、如圖6-35,將HIL模塊與外圍電路接好,運(yùn)行Simulink仿真。圖6-36為加入HIL模塊的FSK模型仿真波形。如圖所示,輸入波形與輸出波形有一定的相位差,這個(gè)相位差說(shuō)明信號(hào)在FPGA里有了延時(shí)。圖6-35 加入HIL的FSK模塊圖6-36 加入HIL后的FSK仿真6、利用Altera DSP Builder-Altlab-Device programmer,也可以進(jìn)行模塊編成,下載流程同上。如圖6-37。圖

54、6-37 利用編成模塊向FPGA下載6.6 使用FIR IP Core 設(shè)計(jì)FIR濾波器 Altera為了使設(shè)計(jì)者也能在盡可能短的時(shí)間內(nèi)快速高效的設(shè)計(jì)出符合設(shè)計(jì)要求的項(xiàng)目,給設(shè)計(jì)者提供了大量的IP Core,使設(shè)計(jì)者在不用全面了解有關(guān)器件的情況下達(dá)到理想的設(shè)計(jì)效果。MegaCore是Altera的IP Core計(jì)劃中的一部分,F(xiàn)IR Compiler作為一個(gè)MegaCore,不附帶在DSP Builder和Quartus中,需要向Altera公司單獨(dú)購(gòu)買。Altera 提供的FIR Compiler是一個(gè)結(jié)合AlteraFPGA器件的FIR Filter Filter Core,DSP Builder與FIR Compiler可以緊密結(jié)合起來(lái),DSP Builder提供了一個(gè)FIR Core的應(yīng)用環(huán)境和仿真驗(yàn)證環(huán)境。使用FIR Core之前,首先必須驗(yàn)證MatLab、DSP Builder、Quartus以及IP核本身即FIR Compiler等

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論