1樓
wangxinxin 發(fā)表于:2010-11-13 12:15:50
DSP Builder是Altera推出的一個數(shù)字信號處理(DSP)開發(fā)工具,它在Quartus Ⅱ FPGA設(shè)計環(huán)境中集成了MathWorks的Matlab和Simulink DSP開發(fā)軟件。Altera的DSP系統(tǒng)體系解決方案是一項具有開創(chuàng)性的解決方案,它將FPGA的應(yīng)用領(lǐng)域從多通道高性能信號處理擴(kuò)展到很廣泛的基于主流DSP的應(yīng)用,是Altera第一款基于C代碼的可編程邏輯設(shè)計流程。
在Altera基于C代碼的DSP設(shè)計流程中,設(shè)計者編寫在Nios Ⅱ嵌入處理器上運行的C代碼。為了優(yōu)化DSP算法的實現(xiàn),設(shè)計者可以使用由Matlab和Simulink工具開發(fā)的專用DSP指令。這些專用指令通過Altera的DSP Builder和SOPC Builder工具集成到可重配置的DSP設(shè)計中。對DSP設(shè)計者而言,與以往FPGA廠商所需的傳統(tǒng)的基于硬件描述語言(HDL)的設(shè)計相比,這種流程會更快、更容易。
除了全新的具有軟件和硬件開發(fā)優(yōu)勢的設(shè)計流程之外,Altera DSP系統(tǒng)體系解決方案還引入了先進(jìn)的Stratix和Stratix Ⅱ系列FPGA開發(fā)平臺。Stratix器件是Altera第一款提供嵌入式DSP塊的FPGA,其中包括能夠有效完成高性能DSP功能的乘法累加器(MAC)結(jié)構(gòu)。Stratix Ⅱ FPGA能夠提供比Stratix器件高四倍的DSP帶寬,更適合于超高性能DSP應(yīng)用。
6.1 DSP Builder安裝
6.1.1 軟件要求
使用DSP Builder創(chuàng)建HDL設(shè)計需要有下面的軟件支持:
? Matlab 6.1或6.5版本;
? Simulink4.1或5.0版本;
? Quartus Ⅱ 2.0以上版本;
? Synplify 7.2以上版本或LeonardoSpectrum 2002c以上版本(綜合工具);
? ModelSim5.5以上版本(仿真工具)。
6.1.2 DSP Builder軟件的安裝
在安裝DSP Builder之前,首先安裝Matlab和Simulink軟件以及Quartus Ⅱ軟件。如果要使用第三方EDA綜合和仿真工具,需要安裝綜合工具LeonardoSpectrum或Synplify以及仿真工具M(jìn)odelSim。
在Windows 98/NT/2000操作系統(tǒng)上安裝DSP Builder,其操作步驟如下:
(1) 關(guān)閉以下應(yīng)用軟件:Quartus Ⅱ、MAX+PLUS Ⅱ、LeonardoSpectrum、Synplify、Matlab和Simulink以及ModelSim。
(2) 找到軟件所在目錄,雙擊DSPBuilder-v2.1.3.exe文件。
(3) 在出現(xiàn)的安裝向?qū)е校鶕?jù)提示操作即可完成DSP Builder的安裝。
如果在安裝DSP Builder之前還沒有安裝Matlab軟件,則在DSP Builder安裝向?qū)У淖詈髮棾鋈鐖D6.1所示的對話框。
完成DSP Builder安裝之后,依據(jù)下面的操作步驟在Matlab軟件中查看DSP Builder的庫:
(1) 啟動Matlab軟件。
(2) 點擊Matlab工具條上的Simulink快捷按鈕,或在Matlab命令窗口輸入Simulink命令,打開Simulink Library Browser界面,如圖6.2所示。
(3) 在Simulink Library Browser界面中打開Altera DSP Builder文件夾。
DSP Builder安裝程序在磁盤上的目錄結(jié)構(gòu)如圖6.3所示。
6.1.3 授權(quán)文件的安裝
在使用DSP Builder之前,必須得到Altera的授權(quán)文件。如果沒有安裝DSP Builder的授權(quán)文件,用戶只能用DSP Builder模塊建立Simulink模型,但不能生成硬件描述語言(HDL)文件或Tcl腳本文件。
注意:在安裝DSP Builder授權(quán)之前,必須已經(jīng)安裝了授權(quán)的Quartus Ⅱ軟件。
1. 授權(quán)文件安裝
得到DSP Builder授權(quán)文件后,可以直接將授權(quán)文件的內(nèi)容粘貼到Quartus Ⅱ授權(quán)文件(license.dat)中,或在Quartus Ⅱ軟件中單獨指定DSP Builder授權(quán)文件。
方法一:粘貼授權(quán)內(nèi)容到Quartus Ⅱ授權(quán)文件中,其操作步驟如下:
(1) 關(guān)閉運行的下列應(yīng)用軟件:Quartus Ⅱ、MAX+PLUS Ⅱ、LeonardoSpectrum、Synplify、Matlab和Simulink以及ModelSim。
(2) 在文本編輯器中打開DSP Builder授權(quán)文件,其中包含F(xiàn)EATURE行。
(3) 在文本編輯器中打開Quartus Ⅱ授權(quán)文件license.dat。
(4) 從DSP Builder授權(quán)文件中拷貝FEATURE行內(nèi)容并粘貼到Quartus Ⅱ授權(quán)文件中。
(5) 保存Quartus Ⅱ授權(quán)文件。
更新后的Quartus Ⅱ授權(quán)文件如圖6.4所示。
方法二:在Quartus Ⅱ軟件中指定DSP Builder授權(quán)文件,其操作步驟如下:
(1) 將DSP Builder的授權(quán)文件以一個不同的文件名單獨保存,如dsp_builder_license.dat。
(2) 啟動Quartus Ⅱ軟件。
(3) 選擇Tools→License Setup命令,彈出Options對話框的License Setup頁面。
(4) 在License File欄中,在已經(jīng)存在的Quartus Ⅱ授權(quán)文件后面加一個分號“;”,在分號后面輸入DSP Builder授權(quán)文件所在的目錄及文件名。
(5) 點擊0K按鈕保存設(shè)置。
2. 授權(quán)有效性檢查
安裝好DSP Builder授權(quán)文件以后,可以在Matlab軟件中驗證授權(quán)的功能是否有效。
1) 單機(jī)版授權(quán)
在Matlab命令窗口輸入下面的命令:
dos(`lmutil lmdiag C4D5_5l2A`)
如果授權(quán)文件安裝正確,則該命令產(chǎn)生的DsP Builder授權(quán)狀態(tài)輸出如圖6.5所示。
2) 網(wǎng)絡(luò)版授權(quán)
如果在授權(quán)文件中存在SERVER,在Matlab命令窗口輸入下面的命令:
dos(`lmutil lmstat-a`)
如果網(wǎng)絡(luò)版授權(quán)文件安裝正確,則該命令產(chǎn)生的DSP Buildel授權(quán)狀態(tài)輸出如圖6.6所示。
6.2 嵌入式DSP設(shè)計流程
為使信號處理設(shè)計者直接領(lǐng)悟可編程邏輯的優(yōu)點,無需學(xué)習(xí)新的設(shè)計流程或編程語言, Altera提出了一套新穎的設(shè)計流程。
6.2.1 DSP設(shè)計流程
Altera DSP設(shè)計流程提供了系統(tǒng)級綜合,并且為DSP系統(tǒng)的軟、硬件分離設(shè)計提供了靈活性。另外,Altera支持基于硬件描述語言(HDL)和基于C/C++的設(shè)計流程。Altera的整套開發(fā)工具提供了完整的設(shè)計平臺,包括DSP Buildel、SOPC Builder和Quartus Ⅱ軟件,允許用戶在系統(tǒng)設(shè)計中提高性能,并獲得軟、硬件綜合設(shè)計的靈活性。圖6.7給出了Altera DSP設(shè)計的總體流程圖。
6.2.2 DSP Builder設(shè)計流程
DSP設(shè)計者可以使用DSP Builder和Quartus Ⅱ軟件單獨進(jìn)行硬件設(shè)計。DSP Builder提供了一個無縫鏈接的設(shè)計流程,允許設(shè)計者在Matlab軟件中完成算法設(shè)計,在Simulink軟件中完成系統(tǒng)集成,然后通過SignalCompiler模塊生成在Quartus Ⅱ軟件中可以使用的硬件描述語言文件。使用DSP Builder工具,設(shè)計者可以生成寄存器傳輸級(RTL)設(shè)計,并且在Simulink中自動生成RTL測試文件。這些文件是已經(jīng)被優(yōu)化的預(yù)驗證RTL輸出文件,可以直接用于Altera Quartus Ⅱ軟件中進(jìn)行時序仿真比較。這種開發(fā)流程對于沒有豐富可編程邏輯設(shè)計軟件開發(fā)經(jīng)驗的設(shè)計者來說非常直觀、易學(xué)。
DSP Builder具備一個友好的開發(fā)環(huán)境,它可以通過幫助設(shè)計帥創(chuàng)建一個DSP設(shè)計的硬件表示來縮短DSP開發(fā)的周期。現(xiàn)有的Matlab功能和Simulink塊與Altera的DSP Builder塊和Altera的知識產(chǎn)權(quán)(IP)MegaCore功能塊組合在一起,從而把系統(tǒng)級的設(shè)計和DSP算法的實現(xiàn)連接在一起。DSP Builder允許系統(tǒng)、算法和硬件設(shè)計共享一個通用的開發(fā)平臺。
在DSP Builder中,設(shè)計者可以使用DSP Builder中的塊來為Simulink中的系統(tǒng)模型創(chuàng)建一個硬件。DSP Builder中包含了按位和按周期精確的Simulink塊,這些塊覆蓋了最基本的操作,例如運算和存儲功能。通過使用MageCore功能,復(fù)雜的功能也可以被集成進(jìn)來。MegaCore功能支持Altera的IP評估特性,用戶在購買授權(quán)之前可以進(jìn)行功能和時序上的驗證。
(1) OpenCore使工程師能夠不用任何花費在Quartus Ⅱ軟件中測試IP核,但不能生成器件的編程文件,從而無法在硬件上測試IP核。
(2) OpenCore Plus是增強(qiáng)的OpenCore,可以支持免費在硬件上對IP進(jìn)行評估。這個特性允許用戶為包含了Altera MageCore功能的設(shè)計產(chǎn)生一個有時間限制的編程文件。通過這個文件,設(shè)計者可以在購買授權(quán)許可之前就在板級對MegaCore功能進(jìn)行驗證。
DSP Builder的SignalCompiler塊讀入Simulink模型文件(.mdl),該模型文件是用DSP Builder和MegaCore塊生成的,然后生成VHDI文件和Tcl腳本文件,用于綜合、硬件的實現(xiàn)以及仿真。
圖6.8所示為DSP Builder的設(shè)計流程。
6.3 DSP Builder設(shè)計過程
本節(jié)利用DSP Builder軟件提供的一個幅度調(diào)制設(shè)計實例來說明DSP Builder設(shè)計過程。該設(shè)計實例文件在
\DesignExamples\GettingStarted\SinMdl文件夾中,設(shè)計中包括正弦波發(fā)生器模塊、積分乘法器模塊和延時單元,每個模塊都是參數(shù)可變的。
6.3.1 創(chuàng)建Simulink設(shè)計模型
1. 創(chuàng)建新模型
創(chuàng)建新模型的步驟如下:
(1) 啟動Matlab軟件。
(2) 點擊Matlab工具條上的Simulink快捷按鈕,或在Matlab命令窗口輸入Simulink命令,打開Simulink Library Browser界面,如圖6.2所示。
(3) 選擇File→New→Model命令,建立一個新的模型文件。
(4) 選擇File→Save命令,保存文件到指定文件夾中,在文件名欄中輸入Singen.mdl。
2.加入SignalCompiler模塊
(1) 在Simulink Library Browser界面中,打開Altera DSP Builder文件夾。
(2) 在Altera DSP Builder文件夾中選擇AltLab庫。
(3) 拖動SignalCompiler模塊到新建的模型文件中。
(4) 用鼠標(biāo)左鍵雙擊SignalCompiler模塊,在彈出的對話框中點擊Analyze按鈕,彈出Signal Compiler Version 2.1.3對話框,如圖6.9所示。
(5) 在Signal Compiler Version 2.1.3對話框中選擇目標(biāo)器件類型;指定綜合工具,可選LeonardoSpectrum、Synplify或Quartus Ⅱ;選擇優(yōu)化條件,可選Speed或Area。
(6) 點擊OK按鈕。
(7) 選擇File→Save命令保存文件。
3.為SignalCompiler指定綜合軟件路徑信息
在設(shè)計模型文件中加入SignalCompiler模塊以后,需要指定綜合工具軟件,如LeonardoSpectrum、Synplify或Quartus Ⅱ。默認(rèn)情況下,SignalCompiler在執(zhí)行綜合過程中從PC機(jī)的注冊表中查找指定綜合軟件所在的安裝路徑。如果綜合過程中SignalCompiler找不到綜合軟件所在的路徑,在Message欄中將提示綜合失敗。
DSP Builder 2.0以上版本允許用戶為SignalCompiler指定綜合工具路徑。在\Altlib文件夾中包含一個XML配置文件edaconfig.xml,其中包含SignalCompiler綜合工具的路徑信息。通過文本編輯器或任何XML編輯器可以修改這個配置文件。
XML配置文件中每個EDA工具有三種配置信息:
?</GetPathFromRegistry>
?<安裝路徑></ForcedPath>
?<版本號></ToolVersion>
其中部分可設(shè)置為on或off。默認(rèn)為on,表示SignalCompiler從注冊表文件中讀取路徑。當(dāng)設(shè)為off時,SignalCompiler讀取部分所指定的路徑。
edaconfig.xml配置文件的內(nèi)容如圖6.10所示。
圖6.10 edaconfig.xml配置文件
4.加入正弦波產(chǎn)生模塊
(1) 在SimulinkLibraryBrowser界面點擊Simulink中的Sources庫,從中找到SineWave模塊。
(2) 將Sine Wave模塊拖動到Singen.mdl文件中。
(3) 在Sine Wave模塊上雙擊鼠標(biāo)左鍵,彈出模塊屬性對話框,如圖6.11所示。
(4) 設(shè)置正弦波模塊參數(shù),點擊OK確定。
5.加入總線端口模塊AitBus
(1) 在Altera DSP Builder文件夾中選擇Bus Manipulation庫。
(2) 從庫中選擇AltBus模塊,拖動到Singen.mdl文件中。
(3) 點擊AltBus模塊下面的文本,將AltBus改為Sinln。
(4) 雙擊SinIn模塊,彈出模塊參數(shù)對話框,如圖6.12所示,在該對話框中可以設(shè)置6位整型輸入總線。
(5) 設(shè)置模塊參數(shù),點擊OK按鈕確定。
圖6.12 模塊參數(shù)對話框
6.加入延時模塊
(1) 在Altera DSP Builder文件夾中選擇Storage庫。
(2) 選擇Delay模塊,拖動到Singen.mdl文件中。
(3) 雙擊Delay模塊,在彈出的模塊參數(shù)對話框中指定延時深度,如圖6.13所示。
(4) 點擊OK按鈕確認(rèn)。
7.加入正弦波延時輸出總線模塊
(1) 在Altera DSP Builder文件夾中選擇BusManipulation庫。
(2) 選擇AltBus模塊,將其拖動到Singen.mdl文件中。
(3) 修改AltBus模塊的名稱為SinDelay。
(4) 雙擊SinDelay模塊,在模塊參數(shù)對話框中選擇Node Type為Output Port。
(5) 選擇[number of bits]為16位,并點擊OK按鈕確定。
8.加入多路復(fù)用MUX模塊
(1) 在Simulink Library Browser界面中選擇Simulink下面的Signal Routing庫。
(2) 選擇Mux模塊,將其拖動到Singen.mdl文件中。
(3) 雙擊Mux模塊,設(shè)置模塊參數(shù),如圖6.14所示。
(4) 點擊OK按鈕確定。
圖6.14 加入Mux模塊并設(shè)置其參數(shù)
9.加入隨機(jī)數(shù)模塊
(1) 在Simulink Library Browser界面中選擇Simulink下面的Sources庫。
(2) 選擇Random Number模塊,將其拖動到Singen.mdl文件中。
(3) 雙擊Random Number模塊,設(shè)置模塊參數(shù),如圖6.15所示,并點擊OK確定。
圖6.15 設(shè)置隨機(jī)數(shù)模塊參數(shù)
10.加入噪聲總線模塊
(1) 在Altera DSP Builder文件夾中選擇Bus Manipulation庫。
(2) 選擇AltBus模塊,將其拖動到Singen.mdl文件中。
(3) 修改AltBus模塊的名稱為Noise。
(4) 雙擊Noise模塊,在模塊參數(shù)對話框中選擇Bus TVpe為Single Bit。
(5) 選擇[number of bits]為l位,并點擊OK按鈕確定。
11.加入BusBuild總線模塊
(1) 在Altera DSP Builder文件夾中選擇Bus Manipulation庫。
(2) 選擇BusBuild模塊,將其拖動到Singen.mdl文件中。
(3) 雙擊BusBuild模塊,設(shè)置模塊參數(shù),如圖6.16所示,點擊OK按鈕確定。
圖6.16 BusBuild總線模塊參數(shù)設(shè)置
12.加入GND模塊
(1) 在Altera DSP Builder文件夾中選擇BusManipulation庫。
(2) 選擇GND模塊,將其拖動到Singen.mdl文件中。
13.加入乘法器(Product)模塊
(1) 在Altera DSP Builder文件夾中選擇Arithmetic庫。
(2) 選擇Product模塊,將其拖動到Singen.mdl文件中。
(3) 雙擊Product模塊,設(shè)置模塊參數(shù),如圖6.17所示,點擊OK按鈕確定。
圖6.17 乘法器模塊參數(shù)設(shè)置
14.加入乘法器輸出總線模塊
(1) 在Altera DSP Builder文件夾中選擇Bus Manipulation庫。
(2) 選擇AltBus模塊,將其拖動到Singen.mdl文件中。
(3) 修改AltBus模塊的名稱為StreamMod。
(4) 雙擊StreamMod模塊,在模塊參數(shù)對話框中選擇Bus Xype為Signed Integer,NodeType為Output Port,[number of bits]為19位,并點擊OK按鈕確定。
15.加入示波器模塊
(1) 在Simulink Library Browser界面中選擇Simulink下面的Sinks庫。
(2) 選擇Scope模塊,將其拖動到Singen.mdl文件中。
(3) 雙擊Scope模塊,彈出Scope波形顯示對話框。
(4) 點擊參數(shù)設(shè)置快捷按鈕,在General標(biāo)簽頁的Number of axes框中輸入3,即以同一時間軸同時顯示3個信號波形,如圖6.18所示,點擊OK按鈕確定。
圖6.18 示波器顯示模塊設(shè)置
16.連線
將所有模塊全部插入Singen.mdl模型文件后,按照圖6.19所示連接模塊,完成模型文件的設(shè)計。
圖6.19幅度調(diào)制設(shè)計實例的模型文件
為了在示波器顯示模塊中區(qū)分信號波形,在引入Scope模塊的信號線上雙擊鼠標(biāo)左鍵,分別鍵入SinWave、Modulated BitStream和BitsStream作為信號名。
6.3.2 Simulink設(shè)計模型仿真
連接好整個設(shè)計模型以后,可以在Simulink軟件中仿真設(shè)計模型。
(1) 選擇Simulation→Simulation Parameters命令,彈出仿真參數(shù)設(shè)置對話框。
(2) 在Simulation time欄中的Stop time框中輸入0.00004(或4e-6),顯示2個信號周期(160個采樣點),其他參數(shù)采用默認(rèn)設(shè)置,如圖6.20所示。
圖6.20 仿真參數(shù)設(shè)置
(3) 點擊OK按鈕退出仿真參數(shù)設(shè)置對話框。
(4) 選擇Simulation→Start命令,或按下Ctrl+T鍵啟動仿真。
(5) 雙擊模型文件中的Scope模塊,打開示波器顯示窗口。
(6) 點擊示波器顯示窗口工具條上的自動范圍按鈕,則波形顯示如圖6.2l所示。
圖6.12 Sinfen.mdl 實例仿真波形
6.3.3 完成RTL級仿真
完成Simulink軟件中的模型設(shè)計,仿真成功以后,雙擊模型設(shè)計文件中的SignalCompiler模塊,彈出Signal Compiler Version 2.1.3對話框,點擊Analyze按鈕,彈出如圖6.22所示的塒話框。
為了生成模型設(shè)計文件的RTL級仿真文件,應(yīng)完成下面的步驟:
(1) 在圖6.22所示的對話框中,點擊1-Convert MDL to VHDL按鈕,在Messages框中將出現(xiàn)以下提示信息:
>Generated top level'singen.vhd'files
>See'singen_DspBuilder_Report.html'report file for additional information
(2) 在可選擇的標(biāo)簽頁中選擇Testbench標(biāo)簽頁,選中Generate Stimuli for VHDLTestbench選項,如圖6.22所示。
(3) 點擊OK按鈕確認(rèn)以上操作。
(4) 在Simulink軟件中啟動仿真,Signal Compiler生成一個仿真腳本文件和一個VHDL測試臺文件,分別為Tb_SinGen.tcl和Tb_SinGen.vhd。
在ModelSim軟件中完成RTL仿真,操作步驟如下:
(1) 啟動ModelSim軟件。
(2) 選擇File→Change Directiory命令,指定工作目錄。