




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、生成代碼前準(zhǔn)備工作在從模型生成HDL代碼前,你應(yīng)該作如下工作:· 在生成代碼前,用hdlsetup功能(詳見(jiàn) Initializing Model Parameters with hdlsetup)來(lái)對(duì)你要生成HDL代碼的模型進(jìn)行設(shè)置。· 用hdllib功能來(lái)創(chuàng)建目前支持HDL代碼生成的模塊庫(kù)(詳見(jiàn) Show Blocks Supported for HDL Code Generation)通過(guò)用這個(gè)庫(kù)里的模塊來(lái)構(gòu)建模型,你的模型就會(huì)兼容HDL。支持的模塊集合在今后的版本會(huì)改變,所以你每次安裝新版本的本產(chǎn)品時(shí)應(yīng)該重建支持的模塊庫(kù)。· 用
2、0;Run Compatibility Checker選項(xiàng)(詳見(jiàn) Selecting and Checking a Subsystem for HDL Compatibility)來(lái)檢查你模型或者DUT的HDL兼容性并生成HDL Code Check Report。你也可以調(diào)用chekhdl函數(shù)(見(jiàn)checkhdl)來(lái)運(yùn)行兼容性檢查器。練習(xí)簡(jiǎn)介 HDL Coder支持生成代碼,用戶可以選擇以下環(huán)境:1. MATLAB命令窗口支持用makehdl,makehdltb和其他函數(shù)生成代碼2. Simulink GUI (配置參數(shù)對(duì)話框和/或模型瀏覽器) 提供模型仿真參數(shù)/代碼生成參數(shù)和函數(shù)
3、的集成視圖這個(gè)實(shí)踐練習(xí)通過(guò)在以上兩種環(huán)境使用中相同的模型,介紹HDL代碼的生成和仿真機(jī)制。在這一系列步驟中,你將:1. 構(gòu)建一個(gè)簡(jiǎn)單模型用于生成代碼2. 從模型中的子系統(tǒng)生成代碼3. 生成適用于Mentor Graphics ModelSim仿真器的VHDL測(cè)試臺(tái)來(lái)實(shí)現(xiàn)模型的仿真4. 在仿真器中編譯和執(zhí)行模型和測(cè)試臺(tái)5. 用同樣的模型生成并仿真Verilog代碼6. 檢查模型和HDL Coder的兼容性stir_fixed模型 這些練習(xí)用sfir_fixed模型作為HDL代碼生成源。該模型模擬一對(duì)稱有限脈沖響應(yīng)濾波器算法,通過(guò)定點(diǎn)數(shù)計(jì)算實(shí)現(xiàn)。 該模型里的模塊支持HDL代碼生成,并且模型參數(shù)已進(jìn)
4、行配置以適于代碼生成。想了解更多關(guān)于模型準(zhǔn)備以進(jìn)行代碼生成,參考Prepare Simulink Model For HDL Code Generation. 下圖為模型的頂層級(jí)別描述。 該模型采用了任務(wù)分解,有助于HDL設(shè)計(jì):· 用于執(zhí)行濾波算法的symmetric_fir子系統(tǒng)是被測(cè)器件。一個(gè)HDL實(shí)體將從這個(gè)子系統(tǒng)被創(chuàng)建、測(cè)試,最終綜合。· 驅(qū)動(dòng)該子系統(tǒng)的頂層模型元件是測(cè)試臺(tái)。 頂層模型生成symmetric_fir子系統(tǒng)的16位定點(diǎn)輸入信號(hào)。Signal From Workspace模塊生成一個(gè)用于濾波器的測(cè)試輸入(激勵(lì))信號(hào)。四個(gè)常數(shù)模塊提供濾波器系數(shù)。Scope
5、模塊僅用來(lái)仿真,這些虛擬的模塊不會(huì)生成HDL代碼。下圖描述了symmetric_fir子系統(tǒng)。 定點(diǎn)數(shù)數(shù)據(jù)類型在子系統(tǒng)里傳遞。輸入繼承了被送過(guò)來(lái)的信號(hào)的數(shù)據(jù)類型。在需要的地方,給定輸入的數(shù)據(jù)類型并采取操作后,模塊的內(nèi)部規(guī)則決定了輸出的數(shù)據(jù)類型。 濾波器在y_out管腳輸出一個(gè)定點(diǎn)數(shù)結(jié)果,并在delayed_x_out復(fù)制其輸入(在經(jīng)過(guò)若干個(gè)延遲階段后)。 在接下來(lái)的例程里,你將會(huì)生成將symmetric_fir當(dāng)成一個(gè)實(shí)體實(shí)現(xiàn)的VHDL代碼。然后你會(huì)從頂層級(jí)別模型生成一個(gè)測(cè)試臺(tái)。這個(gè)測(cè)試臺(tái)用從Signal From Workspace產(chǎn)生的激勵(lì)數(shù)據(jù)驅(qū)動(dòng)生成的實(shí)體完成指定的時(shí)鐘步數(shù)。用HDL W
6、orkflow Advisor生成代碼(該法不能生成測(cè)試臺(tái)代碼) 這個(gè)例程展示了如何用HDL Workflow Advisor從Simulink模型生成HDL代碼。 本例程中的模型,stir_fixed已經(jīng)被準(zhǔn)備好用于代碼生成。 本例程采用Xilinx ISE綜合工具,我們假設(shè)你的工具路徑已設(shè)置好。你也可以用Altera Quartus II來(lái)進(jìn)行本例程。· 創(chuàng)建工作文件夾并復(fù)制模型· 用HDL Workflow Advisor生成代碼· 執(zhí)行FPGA綜合和分析創(chuàng)建工作文件夾并復(fù)制模型1. 啟動(dòng)MATLAB2. 創(chuàng)建一名為sl_hdlcoder_work的文件夾。
7、比如:sl_hdlcoder_work文件夾將被用于保存例程中模型的拷貝和HDL Coder生成的文件夾及代碼。這個(gè)文件夾的位置不重要,但是不能在MATLAB的文件夾樹(shù)下。3. 將sl_hdlcoder_work文件夾設(shè)置為工作文件夾。比如:4. 打開(kāi)sfir_fixed模型。5. 將sfir_fixed復(fù)制到sl_hdlcoder_work文件夾下。用HDL Workflow Advisor生成代碼1. 右鍵點(diǎn)擊symmetric_fir子系統(tǒng),選擇HDL Code > HDL Workflow Advisor。2. 在步驟Set Target > Set Target Devi
8、ce and Synthesis Tool, 在Synthesis tool 選擇Xilinx ISE并點(diǎn)擊 Run This Task。3. 右鍵點(diǎn)擊Prepare Model For HDL Code Generation并選擇Run All,HDL Workflow Advisor檢查模型的代碼生成兼容性。4. 在步驟HDL Code Generation > Set Code Generation Options > Set Basic Options,選擇如下選項(xiàng),然后點(diǎn)擊Apply: 在 Language, 選擇Verilog. 使能 Generate traceabi
9、lity report. 使能Generate resource utilization report.5. 瀏覽Optimization和Coding style 標(biāo)簽下的可用選項(xiàng)。這些選項(xiàng)可以用來(lái)修改所生成代碼的實(shí)現(xiàn)和格式。6. 右鍵點(diǎn)擊HDL Code Generation > Generate RTL Code and Testbench step,選擇Run to Selected Task。 代碼生成報(bào)告自動(dòng)被打開(kāi),它包括資源使用和可追溯性報(bào)告。資源使用報(bào)告描述你的設(shè)計(jì)對(duì)硬件資源的使用情況??勺匪菪詧?bào)告允許你在模型和生成的代碼之間操作。執(zhí)行FPGA綜合和分析1. 在 FPGA
10、 Synthesis and Analysis > Perform Synthesis and P/R > Perform Place and Route任務(wù)下,取消對(duì)Skip this task的勾選并點(diǎn)擊Apply。2. 右鍵點(diǎn)擊Annotate Model with Synthesis Result并選擇Run to Selected Task。3. 觀察模型中被注釋的關(guān)鍵步驟。關(guān)鍵步驟以青色顯示。 用命令行生成代碼· 概覽· 創(chuàng)建一文件夾和本地模型文件· 用hdlsetup 初始化模型參數(shù)· 從子系統(tǒng)生成VHDL實(shí)體(VHDL Ent
11、ity)· 生成VHDL測(cè)試臺(tái)代碼(Test Bench Code)· 檢驗(yàn)生成的代碼· 生成一個(gè)Verilog Module 和測(cè)試臺(tái)概覽 這一例程提供代碼和測(cè)試臺(tái)生成指令、其參數(shù)和代碼生成器創(chuàng)建的文件的詳細(xì)步驟介紹。該例程假設(shè)讀者已經(jīng)熟悉了例程模型(參見(jiàn)The sfir_fixed Model)。創(chuàng)建一文件夾和本地模型文件 創(chuàng)建案例模型的一本地拷貝并將其保存在工作文件夾下,如下所示:1. 啟動(dòng)MATLAB。2. 創(chuàng)建一名為sl_hdlcoder_work的文件夾。比如:mkdir C:worksl_hdlcoder_work sl_hdlcoder_work文
12、件夾將被用于保存例程中模型的拷貝和HDL Coder生成的文件夾及代碼。這個(gè)文件夾的位置不重要,但是不能在MATLAB的文件夾樹(shù)下。3. 將sl_hdlcoder_work文件夾設(shè)置為工作文件夾。比如:cd C:worksl_hdlcoder_work4. 打開(kāi)例程模型,在MATLAB命令行下輸入如下指令:sfir_fixed5. 在Simulink中,選擇File>Save As,將sfir_fixed模型另存一本地拷貝到工作文件夾中。6. 保持sfir_fixed打開(kāi),繼續(xù)下面的進(jìn)程。用hdlsetup 初始化模型參數(shù) 在生成代碼前,模型必須進(jìn)行配置。你可以使用hdlsetup指令從
13、而避免手動(dòng)配置模型。Hdlsetup指令使用set_param函數(shù)來(lái)配置模型以快速并可靠地生成HDL代碼。配置模型以進(jìn)行代碼生成:1. 在MATLAB命令行,輸入:hdlsetup('sfir_fixed')2. 在File菜單下選擇Save,從而保存模型及其新的設(shè)置。在繼續(xù)進(jìn)行代碼生成前,考慮hdlsetup在模型中應(yīng)用的設(shè)置。Hdlsetup配置HDL Coder推薦或要求的求解器(Solver)選項(xiàng),它們是:· 類型(Type): 固定步長(zhǎng)(Fixed-step)。 (HDL Coder目前支持特定條件下的可變步長(zhǎng)求解器。參見(jiàn) hdlsetup)· 求
14、解器(Solver): 離散(Discrete,無(wú)連續(xù)狀態(tài))。也可以選擇其他的固定步長(zhǎng)求解器,但用于仿真離散系統(tǒng)這一選項(xiàng)通常是最佳的。· 任務(wù)模式(Tasking mode): 單任務(wù)(SingleTasking)。 HDL Coder目前不支持執(zhí)行多任務(wù)的模型。不要將Tasking mode 設(shè)置為Auto。Hdlsetup也配置模型開(kāi)始和結(jié)束時(shí)間以及固定步長(zhǎng),如下所示:· 開(kāi)始時(shí)間(Start Time): 0.0 s· 結(jié)束時(shí)間(Stop Time): 10 s· 固定步長(zhǎng)(Fixed step size) (基本采樣周期時(shí)間): auto 如果F
15、ixed step size被設(shè)置為自動(dòng)(auto),步長(zhǎng)大小就根據(jù)模型中指定的采樣時(shí)間被自動(dòng)選擇 。在示例模型中,只有Signal From Workspace模塊指定了明確的采樣時(shí)間(1s);其余模塊繼承這一采樣時(shí)間。 模型的開(kāi)始和結(jié)束時(shí)間決定了測(cè)試臺(tái)仿真總時(shí)長(zhǎng)。這也進(jìn)一步?jīng)Q定了產(chǎn)生的用于為生成的測(cè)試臺(tái)提供激勵(lì)和輸出數(shù)據(jù)的數(shù)據(jù)陣列的大小。對(duì)于例程模型,10秒的測(cè)試數(shù)據(jù)計(jì)算不會(huì)花費(fèi)很多時(shí)間。更加復(fù)雜的模型的采樣值的計(jì)算可能很費(fèi)時(shí)間。在這種情況下,就需要考慮減少仿真時(shí)間。經(jīng)hdlsetup配置的其余參數(shù)控制錯(cuò)誤嚴(yán)重性級(jí)別,數(shù)據(jù)紀(jì)錄和模型顯示選項(xiàng)。如果想查閱與hdlsetup有關(guān)的完整模型參數(shù)集
16、合,在MATLAB Editor中打開(kāi)hdlsetup.m 。由hdlsetup提供的模型參數(shù)默認(rèn)值是有用的,但對(duì)用戶的模型來(lái)說(shuō)并不一定是最優(yōu)的。比如,hdlsetup設(shè)置的Simulation stop time 默認(rèn)值為10s。對(duì)例程模型sfir_fixed的測(cè)試 來(lái)說(shuō),1000s的仿真時(shí)間會(huì)更加現(xiàn)實(shí)。如果想修改仿真時(shí)間,在Simulink窗口中Simulation stop time 區(qū)域輸入目標(biāo)值。模型參數(shù)概要請(qǐng)參照Smulink資料中Model and Block Parameters區(qū)域的Model Parameters 表格。從子系統(tǒng)生成VHDL實(shí)體(VHDL Entity) 在
17、這一部分,你將使用makehdl函數(shù)從例程模型的symmetric_fir子系統(tǒng)生成VHDL實(shí)體的代碼。makehdl也生成用于第三方HDL仿真和綜合工具的腳本文件。 makehdl 允許你指定多種特征用以控制生成的代碼的各種特性。在這一例程中,你將使用makehdl默認(rèn)的特征參數(shù)。 在生成代碼前,請(qǐng)確定已完成了創(chuàng)建一文件夾和本地模型文件及用hdlsetup 初始化模型參數(shù)的步驟。生成代碼:1. 在MATLAB窗口下的桌面菜單選擇Current Folder。這樣會(huì)顯示Matlab的Current Folder browser,使你能快速打開(kāi)工作文件夾和將要在其中生成的文件。2. 在Matla
18、b命令行,輸入指令:makehdl('sfir_fixed/symmetric_fir')這條指令命令HDL Coder從sfir_fixed模型下的symmetric_fir子系統(tǒng)用默認(rèn)參數(shù)生成代碼。3. 在代碼生成時(shí),HDL Coder顯示進(jìn)程消息。這個(gè)進(jìn)程應(yīng)該以下面的信息結(jié)束:# HDL Code Generation Complete.觀察到進(jìn)程消息中生成的文件的名字被超鏈接。在代碼生成完成時(shí),你可以點(diǎn)擊這些超鏈接來(lái)查看MATLAB Editor里的文件。Makehdl在代碼生成前編譯模型。代碼生成后模型的外觀可能發(fā)生改變,這取決于模型的顯示選項(xiàng)(比如端口數(shù)據(jù)類型等)。
19、4. Makehdl默認(rèn)生成VHDL代碼。代碼文件和腳本被寫(xiě)入目標(biāo)文件夾。默認(rèn)的目標(biāo)文件夾是工作文件夾下的子文件夾,名稱為hdlsrc。在Current Folder browser中可以看到一個(gè)hdlsrc文件的文件夾圖標(biāo)。要看生成的代碼和腳本文件,雙擊這個(gè)hdlsrc文件夾圖標(biāo)。5. Makehdl在hdlsrc文件夾下生成的文件有:· symmetric_fir.vhd:VHDL代碼。該文件包含一個(gè)entity定義和一個(gè)用于執(zhí)行symmetric_fir 濾波器的RTL架構(gòu)。· symmetric_fir_compile.do:Mentor Graphics Mode
20、lSim編譯腳本(vcom command)用于編譯生成的VHDL代碼。· symmetric_fir_synplify.tcl:Synplify綜合腳本。· symmetric_fir_map.txt:映射文件。這個(gè)報(bào)告文件將生成的實(shí)體(或模塊)映射到用于生成它們的子系統(tǒng)(參照 Trace Code Using the Mapping File)。6. 要在Matlab Editor中查看生成的VHDL代碼,在Current Folder browser中雙擊symmetric_fir.vhd文件夾圖標(biāo)。7. 在進(jìn)行下一步之前,關(guān)閉在編輯器中打開(kāi)的文件。然后,點(diǎn)
21、擊Current Folder browser中的Go Up One Level按鈕來(lái)將當(dāng)前文件夾重新設(shè)置為sl_hdlcoder_work文件夾。8. 保持sfir_fixed model處于打開(kāi)狀態(tài),進(jìn)行下面的步驟。生成VHDL測(cè)試臺(tái)代碼 在這一部分,你使用測(cè)試臺(tái)生成函數(shù)makehdltb來(lái)生成VHDL測(cè)試臺(tái)代碼。這個(gè)測(cè)試臺(tái)的目的是驅(qū)動(dòng)和驗(yàn)證上一部分生成的symmetric_fir 實(shí)體的運(yùn)行。生成的測(cè)試臺(tái)包括:· 由信號(hào)源產(chǎn)生的連接到被測(cè)entity源激勵(lì)數(shù)據(jù)。· 由被測(cè)entity生成的輸出數(shù)據(jù)。當(dāng)測(cè)試臺(tái)運(yùn)行時(shí),該數(shù)據(jù)與VHDL模型比較來(lái)實(shí)現(xiàn)驗(yàn)證目的。·
22、用于驅(qū)動(dòng)被測(cè)entity的時(shí)鐘,復(fù)位和信號(hào)使能。· 一個(gè)被測(cè)entity的部件例示· 用于驅(qū)動(dòng)被測(cè)entity和比較其輸出與期望輸出的代碼 另外,makehdltb生成Mentor Graphics ModelSim腳本來(lái)編譯和執(zhí)行測(cè)試臺(tái)。 這個(gè)練習(xí)假設(shè)你的工作文件夾和上一部分使用的相同。這個(gè)文件夾現(xiàn)在包含一個(gè)之前生成的代碼的文件夾hdlsrc。 生成測(cè)試臺(tái):1. 在Matlab命令行輸入指令:makehdltb('sfir_fixed/symmetric_fir')這個(gè)指令生成一個(gè)測(cè)試臺(tái),該測(cè)試臺(tái)用來(lái)連接并驗(yàn)證從symmetric_fir(或從有著相同功能
23、接口接口的子系統(tǒng))生成的代碼。默認(rèn)地,VHDL測(cè)試臺(tái)代碼和腳本一樣是在hdlsrs目標(biāo)文件夾里被生成。2. 在測(cè)試臺(tái)的生成進(jìn)行時(shí),HDL Coder顯示進(jìn)程信息。這一進(jìn)程應(yīng)以下面的信息結(jié)束:# HDL TestBench Generation Complete.3. 要查看生成的測(cè)試臺(tái)和腳本文件,在Current Folder browser雙擊hdlsrc文件夾。作為另外一種選擇,你也可以點(diǎn)擊code test bench generation progress messages下的被超鏈接的生成的文件名。這些被makehdltb生成的文件是:· symmetric_fir_tb.
24、vhd: VHDL測(cè)試臺(tái)代碼和生成的測(cè)試和輸出數(shù)據(jù)。· symmetric_fir_tb_compile.do: Mentor Graphics ModelSim編譯腳本(vcom指令)。這個(gè)腳本編譯并加載要測(cè)試的entity(symmetric_fir.vhd)和測(cè)試臺(tái)代碼(symmetric_fir_tb.vhd)。· symmetric_fir_tb_sim.do: Mentor Graphics ModelSim腳本,用于初始化仿真器,設(shè)置波形窗口信號(hào)顯示和運(yùn)行仿真。4. 如果你想要在Matlab Editor中查看生成的測(cè)試臺(tái)代碼,雙擊Current Folder
25、 browser 中的symmetric_fir_tb.vhd文件圖標(biāo)。你在查閱makehdltb參考文件(reference documentation)時(shí)可能想了解代碼,這個(gè)參考文件介紹了測(cè)試臺(tái)生成器的默認(rèn)操作。5. 在進(jìn)行下一步以前,關(guān)閉你在editor中打開(kāi)的文件。然后,點(diǎn)擊Current Folder browser中的Go Up One Level按鈕來(lái)將當(dāng)前文件夾重新設(shè)置為sl_hdlcoder_work文件夾。驗(yàn)證生成的代碼 你現(xiàn)在可以將之前生成的代碼和測(cè)試臺(tái)放到一個(gè)HDL仿真來(lái)進(jìn)行仿真并驗(yàn)證結(jié)果。參考 Simulating and Verifying Generat
26、ed HDL Code(即下文部分)來(lái)查看一個(gè)怎么在Mentor Graphics ModelSim仿真器中用生成的測(cè)試臺(tái)代碼和腳本文件的例子。生成一個(gè)Verilog模塊和測(cè)試臺(tái) 生成Verilog的步驟和生成VHDL的步驟僅有輕微差別。這一部分提供了指令語(yǔ)法和生成的文件的概述。 生成一個(gè)Verilog模塊。默認(rèn)地,makehdl生成VHDL代碼。要修改默認(rèn)值并生成Verilog代碼,你必須向makehdl傳遞一特性/數(shù)值對(duì),從而將TargetLanguage特性設(shè)置成verilog,如下例所示。makehdl('sfir_fixed/symmetric_fir','T
27、argetLanguage','verilog') 這條指令在默認(rèn)目標(biāo)文件夾hdlsrc下生成Verilog源代碼和用于仿真及綜合工具的腳本。生成的這些文件是:· symmetric_fir.v: Verilog代碼。這個(gè)文件包括一個(gè)Verilog模塊用于執(zhí)行symmetric_fir子系統(tǒng)。· symmetric_fir_compile.do: Mentor Graphics ModelSim編譯腳本(vlog command)用于編譯生成的Verilog代碼。· symmetric_fir_synplify.tcl: Synplify綜
28、合腳本。· symmetric_fir_map.txt: 這個(gè)報(bào)告文件將生成的實(shí)體(或模塊)映射到用于生成它們的子系統(tǒng)(參照 Trace Code Using the Mapping File)。生成和執(zhí)行一個(gè)Verilog測(cè)試臺(tái)。用于修改目標(biāo)語(yǔ)言的makehdltb句法和makehdl完全一樣。下面這個(gè)例子在默認(rèn)目標(biāo)文件夾下生成Verilog測(cè)試臺(tái)代碼來(lái)驅(qū)動(dòng)Verilog模塊symmetric_fir。makehdltb('sfir_fixed/symmetric_fir','TargetLanguage','verilog'
29、;) 這些生成的文件是:· symmetric_fir_tb.v: Verilog測(cè)試臺(tái)代碼和生成的測(cè)試和輸出數(shù)據(jù)。· symmetric_fir_tb_compile.do: Mentor Graphics ModelSim編譯腳本(vlog指令)。這個(gè)腳本編譯并加載要測(cè)試的entity(symmetric_fir.v)和測(cè)試臺(tái)代碼(symmetric_fir_tb.v)。· symmetric_fir_tb_sim.do: Mentor Graphics ModelSim腳本,用于初始化仿真器,設(shè)置波形窗口信號(hào)顯示和運(yùn)行仿真。The following lis
30、ting shows the commands and responses from a test bench session using the generated scripts:ModelSim> do symmetric_fir_tb_compile.do# Model Technology ModelSim SE vlog 6.0 Compiler 2004.08 Aug 19 2004# - Compiling module symmetric_fir# # Top level modules:# symmetric_fir# Model Technology ModelSi
31、m SE vlog 6.0 Compiler 2004.08 Aug 19 2004# - Compiling module symmetric_fir_tb# # Top level modules:# symmetric_fir_tbModelSim>do symmetric_fir_tb_sim.do# vsim work.symmetric_fir_tb # Loading work.symmetric_fir_tb# Loading work.symmetric_fir# * Test Complete. *# Break at C:/work/sl_hdlcoder_work
32、/vlog_code/symmetric_fir_tb.v line 142# Simulation Breakpoint:Break atC:/work/sl_hdlcoder_work/vlog_code/symmetric_fir_tb.v line 142# MACRO ./symmetric_fir_tb_sim.do PAUSED at line 14用配置參數(shù)對(duì)話框生成HDL代碼HDL Coder GUI概述 你可以在配置參數(shù)對(duì)話框或在模型瀏覽器(Model Explorer)中編輯影響HDL代碼生成的選項(xiàng)和參數(shù)。 下面的圖展示了配置參數(shù)對(duì)話框中的第一級(jí)HDL Code Gene
33、ration面板。 下面的圖展示了模型瀏覽器(Model Explorer)中第一級(jí)HDL Code Generation選項(xiàng)。 在下面的代碼生成練習(xí)中,你使用配制參數(shù)對(duì)話框來(lái)查看和設(shè)置HDL Coder選項(xiàng)和控制。這個(gè)練習(xí)在基本代碼生成和驗(yàn)證步驟使用sfir_fixed模型。創(chuàng)建一個(gè)文件夾和本地模型文件 在這部分中你將設(shè)置文件夾和例程模型的本地拷貝。創(chuàng)建一個(gè)文件夾。首先設(shè)置工作文件夾。1. 啟動(dòng)Matlab。2. 創(chuàng)建一個(gè)名為sl_hdlcoder_work的文件夾,如:mkdir C:worksl_hdlcoder_work你將使用sl_hdlcoder_work文件夾來(lái)保存例程模型的本地
34、拷貝以及HDL Coder生成的文件夾和代碼。這個(gè)文件夾的位置不重要,但不能在Matlab的文件夾樹(shù)下。3. 將sl_hdlcoder_work設(shè)置為工作文件夾,如:cd C:worksl_hdlcoder_work創(chuàng)建例程模型的本地拷貝。接著,拷貝sfir_fixed模型:1. 在Matlab命令行輸入下面指令以打開(kāi)模型:sfir_fixed2. 將sfir_fixed模型另存為一本地拷貝到工作文件夾中。3. 保持sfir_fixed打開(kāi)狀態(tài)然后進(jìn)行下面的部分。在配制參數(shù)對(duì)話框中查看代碼選項(xiàng) HDL Coder選項(xiàng)設(shè)置在模型的激活的配置設(shè)置中以一個(gè)類別顯示。你可以在配置參數(shù)對(duì)話或Model
35、Explorer中查看并編輯這些選項(xiàng)。這個(gè)例程采用配置參數(shù)對(duì)話框。 打開(kāi)HDL Coder設(shè)置:1. 打開(kāi)配置參數(shù)對(duì)話框。2. 選擇HDL Code Generation面板。HDL Code Generation面板包括用于控制HDL 代碼生成進(jìn)程的第一級(jí)選項(xiàng)和按鈕。在HDL Code入口中還有可用的好幾個(gè)其他的選項(xiàng)類別。這個(gè)練習(xí)用這些選項(xiàng)的一小部分,其他的采用默認(rèn)設(shè)置。用hdlsetup初始化模型參數(shù) 在生成代碼前,你必須設(shè)置模型的一些參數(shù)。用hdlsetup指令來(lái)避免手動(dòng)設(shè)置。Hdlsetup指令用set_param函數(shù)來(lái)快速可靠地設(shè)置模型用于HDL代碼生成。 設(shè)置模型參數(shù):1. 在Ma
36、tlab命令行,輸入:hdlsetup('sfir_fixed')2. 保存模型及其新的設(shè)置。在繼續(xù)進(jìn)行代碼生成前,考慮hdlsetup在模型中應(yīng)用的設(shè)置。Hdlsetup配置HDL Coder推薦或要求的求解器(Solver)選項(xiàng),它們是:· 類型(Type): 固定步長(zhǎng)(Fixed-step)。 (HDL Coder目前支持特定條件下的可變步長(zhǎng)求解器。參見(jiàn) hdlsetup)· 求解器(Solver): 離散(Discrete,無(wú)連續(xù)狀態(tài))。也可以選擇其他的固定步長(zhǎng)求解器,但用于仿真離散系統(tǒng)這一選項(xiàng)通常是最佳的。· 任務(wù)模式(Tasking m
37、ode): 單任務(wù)(SingleTasking)。 HDL Coder目前不支持執(zhí)行多任務(wù)的模型。不要將Tasking mode 設(shè)置為Auto。Hdlsetup也配置模型開(kāi)始和結(jié)束時(shí)間以及固定步長(zhǎng),如下所示:· 開(kāi)始時(shí)間(Start Time): 0.0 s· 結(jié)束時(shí)間(Stop Time): 10 s· 固定步長(zhǎng)(Fixed step size) (基本采樣周期時(shí)間): auto 如果Fixed step size被設(shè)置為自動(dòng)(auto),步長(zhǎng)大小就根據(jù)模型中指定的采樣時(shí)間被自動(dòng)選擇 。在示例模型中,只有Signal From Workspace模塊指定了明確
38、的采樣時(shí)間(1s);其余模塊繼承這一采樣時(shí)間。 模型的開(kāi)始和結(jié)束時(shí)間決定了測(cè)試臺(tái)仿真總時(shí)長(zhǎng)。這也進(jìn)一步?jīng)Q定了產(chǎn)生的用于為生成的測(cè)試臺(tái)提供激勵(lì)和輸出數(shù)據(jù)的數(shù)據(jù)陣列的大小。對(duì)于例程模型,10秒的測(cè)試數(shù)據(jù)計(jì)算不會(huì)花費(fèi)很多時(shí)間。更加復(fù)雜的模型的采樣值的計(jì)算可能很費(fèi)時(shí)間。在這種情況下,就需要考慮減少仿真時(shí)間。經(jīng)hdlsetup配置的其余參數(shù)控制錯(cuò)誤嚴(yán)重性級(jí)別,數(shù)據(jù)紀(jì)錄和模型顯示選項(xiàng)。如果想查閱與hdlsetup有關(guān)的完整模型參數(shù)集合,在MATLAB Editor中打開(kāi)hdlsetup.m 。由hdlsetup提供的模型參數(shù)默認(rèn)值是有用的,但對(duì)用戶的模型來(lái)說(shuō)并不一定是最優(yōu)的。比如,hdlsetup設(shè)置的S
39、imulation stop time 默認(rèn)值為10s。對(duì)例程模型sfir_fixed的測(cè)試 來(lái)說(shuō),1000s的仿真時(shí)間會(huì)更加現(xiàn)實(shí)。如果想修改仿真時(shí)間,在Simulink窗口中Simulation stop time 區(qū)域輸入目標(biāo)值。模型參數(shù)概要請(qǐng)參照Smulink資料中Model and Block Parameters區(qū)域的Model Parameters 表格。選擇和檢查子系統(tǒng)的HDL兼容性 HDL Coder要么為當(dāng)前的模型生成代碼,要么為當(dāng)前模型的根級(jí)別的子系統(tǒng)生成代碼。使用Generate HDL for來(lái)選擇為要生成代碼的模型或子系統(tǒng)。菜單中的每個(gè)入口顯示模型或其某一子部件的完整
40、路徑。 sfir_fixed模型已經(jīng)配置好選擇其sfir_fixed/symmetric用于代碼生成。如果不是這種情況,確保symmetric_fir被選擇用于代碼生成,如下所示:1. 從Generate HDL for菜單選擇sfir_fixed/symmetric_fir。2. 點(diǎn)擊Apply。檢查該子系統(tǒng)的HDL兼容性。1. 點(diǎn)擊Run Compatibility Checker按鈕。2. HDL兼容性檢查器檢查Generate HDL for菜單選擇的系統(tǒng)的兼容性問(wèn)題。在該例程中,選擇的子系統(tǒng)完全兼容HDL。兼容性檢查器顯示如下消息:# Starting HDL Check.# HDL
41、 Check Complete with 0 errors, warnings and messages.兼容性檢查器也在新窗口中顯示一個(gè)報(bào)告。生成VHDL代碼 第一級(jí)HDL Code Generation選項(xiàng)被設(shè)置為如下所示:· Generate HDL for部分指定sfir_fixed/symmetric_fir子系統(tǒng)用于代碼生成。· Language部分指定生成(默認(rèn))VHDL代碼。· Folder指定一個(gè)用于存儲(chǔ)生成的代碼和對(duì)腳本的目標(biāo)文件夾。默認(rèn)的文件夾是工作文件下的一個(gè)名為hdlsrc的子文件夾。在生成代碼前,選擇Matlab窗口中的Desktop菜
42、單下的Current Folder。這將顯示Current Folder browser,使你可以進(jìn)入工作文件夾以及在其中生成的文件。生成代碼:1. 點(diǎn)擊Generate按鈕。2. 在代碼生成時(shí),HDL Coder顯示進(jìn)程消息。這個(gè)進(jìn)程應(yīng)該以下面的信息結(jié)束:# HDL Code Generation Complete. 觀察到進(jìn)程消息中生成的文件的名字被超鏈接。在代碼生成完成時(shí),你可以點(diǎn)擊這些超鏈接來(lái)查看MATLAB Editor里的文件。 Makehdl在代碼生成前編譯模型。代碼生成后模型的外觀可能發(fā)生改變,這取決于模型的顯示選項(xiàng)(比如端口數(shù)據(jù)類型等)。3. 在Current Folder
43、browser中可以看到一個(gè)hdlsrc文件的文件夾圖標(biāo)。要看生成的代碼和腳本文件,雙擊這個(gè)hdlsrc文件夾圖標(biāo)。4. Makehdl在hdlsrc文件夾下生成的文件有:· symmetric_fir.vhd:VHDL代碼。該文件包含一個(gè)entity定義和一個(gè)用于執(zhí)行symmetric_fir 濾波器的RTL架構(gòu)。· symmetric_fir_compile.do:Mentor Graphics ModelSim編譯腳本(vcom command)用于編譯生成的VHDL代碼。· symmetric_fir_synplify.tcl:Synplify綜合腳本。&
44、#183; symmetric_fir_map.txt:映射文件。這個(gè)報(bào)告文件將生成的實(shí)體(或模塊)映射到用于生成它們的子系統(tǒng)(參照 Trace Code Using the Mapping File)。5. 要在Matlab Editor中查看生成的VHDL代碼,在Current Folder browser中雙擊symmetric_fir.vhd文件夾圖標(biāo)。6. 在進(jìn)行下一步之前,關(guān)閉在編輯器中打開(kāi)的文件。然后,點(diǎn)擊Current Folder browser中的Go Up One Level按鈕來(lái)將當(dāng)前文件夾重新設(shè)置為sl_hdlcoder_work文件夾。生成VHDL測(cè)試臺(tái)代
45、碼 在這一部分,Generate HDL for, Language和Folder選項(xiàng)都和上一部分的設(shè)置相同。相應(yīng)地,你現(xiàn)在可以生成用于驅(qū)動(dòng)之前生成的sfir_fixed/symmetric_fir子系統(tǒng)的VHDL代碼的VHDL測(cè)試臺(tái)代碼。該代碼會(huì)被寫(xiě)入同一目標(biāo)文件夾。 生成VHDL測(cè)試臺(tái):1. 選擇HDL Code Generation > Test Bench面板。2. 選擇HDL test bench。3. 點(diǎn)擊Generate Test Bench按舊。4. 在測(cè)試臺(tái)的生成進(jìn)行時(shí),HDL Coder顯示進(jìn)程信息。這一進(jìn)程應(yīng)以下面的信息結(jié)束:# HDL
46、 TestBench Generation Complete.5. 這些在hdlsrc文件夾中生成的文件是:· symmetric_fir_tb.vhd: VHDL測(cè)試臺(tái)代碼和生成的測(cè)試和輸出數(shù)據(jù)。· symmetric_fir_tb_compile.do: Mentor Graphics ModelSim編譯腳本(vcom指令)。這個(gè)腳本編譯并加載要測(cè)試的entity(symmetric_fir.vhd)和測(cè)試臺(tái)代碼(symmetric_fir_tb.vhd)。· symmetric_fir_tb_sim.do: Mentor Graphics ModelSim
47、腳本,用于初始化仿真器,設(shè)置波形窗口信號(hào)顯示和運(yùn)行仿真。驗(yàn)證生成的代碼 你現(xiàn)在可以將之前生成的代碼和測(cè)試臺(tái)放到一個(gè)HDL仿真來(lái)進(jìn)行仿真并驗(yàn)證結(jié)果。參考 Simulating and Verifying Generated HDL Code(即下文部分)來(lái)查看一個(gè)怎么在Mentor Graphics ModelSim仿真器中用生成的測(cè)試臺(tái)代碼和腳本文件的例子。生成Verilog模型和測(cè)試臺(tái)代碼 生成Verilog代碼和生成VHDL代碼一樣(看 Generating a VHDL Entity from a Subsystem 和Generating VHDL Test Ben
48、ch Code),除了在HDL Code Generation 選項(xiàng)下的Language選擇Verilog。仿真和驗(yàn)證生成的HDL代碼 注意:這部分需要使用Mentor Graphics ModelSim仿真器。 這部分假設(shè)你已經(jīng)從下面任意一個(gè)練習(xí)中用sfir_fixed模型中生成了代碼:· Generate HDL Code Using the Command Line· Generate HDL Code Using the Configuration Parameters Dialog Box 在這個(gè)部分你將編譯并運(yùn)行之前生成的模型和測(cè)試臺(tái)代碼的仿真。HDL
49、 Coder生成的腳本允許你通過(guò)幾條指令實(shí)現(xiàn)完成這個(gè)步驟。不管你是從命令行還是GUI環(huán)境中生成的代碼,這一步驟都是相同的。 運(yùn)行仿真:1. 啟動(dòng)Mentor Graphics ModelSim軟件。2. 將之前生成代碼的文件夾設(shè)置為工作空間:ModelSim>cd C:/work/sl_hdlcoder_work/hdlsrc3. 用生成的編譯腳本來(lái)編譯和加載生成的模型和。下面的列表展示了命令和響應(yīng)。ModelSim>do symmetric_fir_tb_compile.do# Model Technology ModelSim SE vcom 6.0 Compiler 2004.08 Aug 19 2004# - Loading
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年02月聊城臨清市事業(yè)單位初級(jí)綜合類崗位人員(20人)筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 高中語(yǔ)文情感美文想家
- 銷售中的語(yǔ)言藝術(shù)策略與實(shí)踐
- 浙江專版2025版高考生物一輪復(fù)習(xí)第21講內(nèi)環(huán)境高等動(dòng)物內(nèi)分泌系統(tǒng)與體液調(diào)節(jié)教案
- 高中語(yǔ)文作文尋找的路上……
- 跨境電商平臺(tái)上的智能衣柜銷售前景
- 質(zhì)量管理體系在醫(yī)療護(hù)理教育中的應(yīng)用
- 財(cái)務(wù)透明度與決策分析的關(guān)聯(lián)
- 浙江鴨2025版高考生物二輪復(fù)習(xí)第19講酶的應(yīng)用和植物的組織培養(yǎng)教案
- 跨境醫(yī)療旅游的服務(wù)模式與運(yùn)營(yíng)管理
- 語(yǔ)文教學(xué)設(shè)計(jì)(教案目標(biāo))
- 工程造價(jià)三級(jí)復(fù)核
- 皮膚性病學(xué)課件:濕疹皮炎
- 綠化養(yǎng)護(hù)重點(diǎn)難點(diǎn)分析及解決措施
- 醫(yī)療垃圾管理及手衛(wèi)生培訓(xùn)PPT課件
- 一體化學(xué)工服務(wù)平臺(tái)、人事管理系統(tǒng)、科研管理系統(tǒng)建設(shè)方案
- 市場(chǎng)營(yíng)銷學(xué)課后習(xí)題與答案
- 嚇數(shù)基礎(chǔ)知識(shí)共20
- 常暗之廂(7規(guī)則-簡(jiǎn)體修正)
- 10kV變電所設(shè)備檢修內(nèi)容與周期表
- 井控系統(tǒng)操作維護(hù)與保養(yǎng)規(guī)程
評(píng)論
0/150
提交評(píng)論