www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]在我們用ModelSim仿真的時候經(jīng)常是修改一點一點修改代碼,這樣會造成一個無奈的操作循環(huán):修改代碼--->編譯代碼--->仿真設(shè)置--->進入仿真頁面--->添加需要觀察的波形--->運

在我們用ModelSim仿真的時候經(jīng)常是修改一點一點修改代碼,這樣會造成一個無奈的操作循環(huán):修改代碼--->編譯代碼--->仿真設(shè)置--->進入仿真頁面--->添加需要觀察的波形--->運行仿真。如果仿真結(jié)果不理想,還得需要重新修改代碼,重復上述的操作。

計算機擅長做重復的事情,為什么不讓計算機代勞呢?

我們可以參照Xilinx ISE是如何調(diào)用ModelSim進行仿真的,尤其是腳本的編寫。

下面一個腳本是我用ISE10.1建立了一個AES256的工程,然后在調(diào)用ModelSim6.5的時候,ISE會生成這幾個腳本文件,AES256_tb.fdo, AES256_tb_wave.fdo 和 AES256_tb.udo。

下面的代碼是AES256_tb.fdo文件的內(nèi)容。

1: vlib work #創(chuàng)建名字是work的庫,這個仿真之前必須做的

2: vcom -explicit -93 "SBOX_ROM.vhd" #編譯vhd代碼

3: vcom -explicit -93 "Inv_SBOX_ROM.vhd"

4: vcom -explicit -93 "AES_package.vhd"

5: vcom -explicit -93 "subbytes.vhd"

6: vcom -explicit -93 "SBOX_ROM_reg.vhd"

7: vcom -explicit -93 "round_key_BRAM.vhd"

8: vcom -explicit -93 "Inv_subbytes.vhd"

9: vcom -explicit -93 "Keyexpansion_Yao.vhd"

10: vcom -explicit -93 "AES256_ENC_DEC.vhd"

11: vcom -explicit -93 "AES256_TOP.vhd"

12: vcom -explicit -93 "AES256_tb.vhd"

13: vsim -t 1ps -lib work AES256_tb #進入仿真設(shè)置,時間單位為1ps,庫指定為work,AES256_tb就是指你的top層設(shè)計的名字

14: do {AES256_tb_wave.fdo} #執(zhí)行*.fdo文件,用來添加信號和變量或者內(nèi)部的寄存器到波形(WAVE)窗口

15: view wave #打開波形窗口

16: view structure #打開架構(gòu)(structure)窗口

17: view signals #打開信號列表窗口

18: run 1000ns #運行1000ns

19: do {AES256_tb.udo} #運行用戶定義的腳本

只要編譯的時候沒有出現(xiàn)語法錯誤或者是找不到定義的庫文件等錯誤提示,一般會很容易的看到仿真的波形,而不用手動進行操作。這樣方便了仿真的整個過程,而無需用很多鼠標點擊操作。

現(xiàn)在通過一個具體的實例來說明如何運用腳本來實現(xiàn)ModelSim的仿真。

工具版本:ISE10.1 ,ModelSim 6.5a

1. 創(chuàng)建ISE工程

首先通過ISE創(chuàng)建test.vhd 和test_tb.vhd文件并添加到工程中,這里不細說如何創(chuàng)建HDL源代碼。

然后配置ISE的仿真器,右鍵選中FPGA芯片,點擊properTIes,然后在Simulator選擇Modelsim-SE VHDL。

 


圖1. 工程屬性

在source窗口選擇“Behavioral SimulaTIon”,可以看到工程中的test_tb.vhd(testbench文件)。選中test_tb.vhd文件,在Process窗口中雙擊Simulate Behavioral Model,ISE開始調(diào)用ModelSim,這是ISE自動生成了三個腳本文件:test_tb.fdo, test_tb_wave.fdo和test_tb.udo。

 


圖2. Behavioral SimulaTIon 窗口

看看三個腳本文件的內(nèi)容吧。

test_tb.fdo內(nèi)容如下:

1: vlib work #添加library

2: vcom -explicit -93 "test.vhd" #編譯test的頂層文件

3: vcom -explicit -93 "test_tb.vhd" #編譯test_tb的testbench文件

4: vsim -t 1ps -lib work test_tb #進入仿真,時間單位1ps,仿真test_tb

5: do {test_tb_wave.fdo} #執(zhí)行*.fdo腳本文件,用于添加仿真波形

6: view wave #打開波形窗口

7: view structure #打開structure窗口

8: view signals #打開信號窗口

9: run 1000ns #仿真運行1000ns

10: do {test_tb.udo} #執(zhí)行*.udo腳本文件,用于執(zhí)行用戶定義的腳本命令

test_tb_wave.fdo內(nèi)容如下():

1: ## Project Navigator simulaTIon template: test_tb_wave.fdo

2: ## You may edit this file to control your simulation.

3: add wave * ##添加Top層所有的端口信號

test_tb.ufo內(nèi)容為空白,是留著給用戶自己添加。

對我們來說最有用的就是test_tb.fdo文件了,只要稍微修改就可以成為一個針對這個工程的很好的用于仿真的腳本。當然我們可以自己手動來編寫類似的腳本,用ISE自動生成主要是為了涂個省事。

2.調(diào)用ModelSim進行仿真

在圖2中,Process窗口中雙擊Simulate Behavioral Model,進入ModelSim仿真環(huán)境。請仔細觀察ModelSim Transcript窗口中消息的輸出。內(nèi)容如下:

1: # do {test_tb.fdo} #<-------執(zhí)行腳本文件

2: # ** Warning: (vlib-34) Library already exists at "work".

3: # Model Technology ModelSim SE vcom 6.5 Compiler 2009.01 Jan 22 2009 #<-----編譯test.vhd得到的message

4: # -- Loading package standard

5: # -- Loading package std_logic_1164

6: # -- Loading package std_logic_arith

7: # -- Loading package std_logic_unsigned

8: # -- Compiling entity test

9: # -- Compiling architecture test of test

10: # Model Technology ModelSim SE vcom 6.5 Compiler 2009.01 Jan 22 2009 #<-----編譯test.vhd得到的message

11: # -- Loading package standard

12: # -- Loading package std_logic_1164

13: # -- Loading package std_logic_arith

14: # -- Loading package std_logic_unsigned[!--empirenews.page--]

15: # -- Compiling entity test_tb

16: # -- Compiling architecture behavior of test_tb

17: # vsim -lib work -t 1ps test_tb #仿真設(shè)置命令行

18: # Loading std.standard

19: # Loading ieee.std_logic_1164(body)

20: # Loading ieee.std_logic_arith(body)

21: # Loading ieee.std_logic_unsigned(body)

22: # Loading work.test_tb(behavior)#1 #加載test_tb

23: # .main_pane.wave.interior.cs.body.pw.wf #打開wave窗口

24: # .main_pane.structure.interior.cs.body.struct #列出structure

25: # .main_pane.objects.interior.cs.body

注:在test_tb.fdo的每一行都可以在ModelSim Transcript窗口中分開一行一行執(zhí)行。

然后可以觀察到仿真波形文件。

3. 調(diào)試代碼

或許仿真出來的結(jié)果不是我們想要的,必須的修改代碼,然后再仿真。那我們應該怎么辦呢?

在trasncript窗口輸入:

1: quit -sim #退出仿真

2: do test_tb.fdo #修改代碼完成后重新執(zhí)行該腳本進行仿真

在仿真的波形的時候,我們不僅僅希望看到Top層設(shè)計的端口信號的波形,還希望能觀察到內(nèi)部信號是如何變化的,所以我們在Sim窗口中找到內(nèi)部的信號放到wave中進行觀察。但是如果我們重新運行當初test_tb.fdo文件,我們又再一次只能看到Top層設(shè)計的端口信號的波形,而內(nèi)部信號的波形已經(jīng)被刪除。那我們應該如何保存和運用我們仿真波形文件呢?

我現(xiàn)在需要觀察內(nèi)部的一個寄存器輸出:tmp信號,見圖4。Ctrl+S,保存波形文件。默認保存為工程目錄下/wave.do,但是我們將用波形文件保存為test_tb_wave.fdo文件,這樣做的好處可以不用修test_tb.fdo文件。

 


圖4.內(nèi)部信號觀察

我們重新運行test_tb.fdo腳本文件之后,輸出的波形是圖4,而不是圖3。

差不多常用的VHDL仿真命令都用上了,我相信這樣做肯定會提高仿真的效率。如果想要熟悉更多的ModelSim的仿真命令,請查看ModelSim的用書手冊。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉