每個人都曾試圖在平淡的學習、工作和生活中寫一篇文章,。寫作是培養(yǎng)人的觀察,、聯(lián)想、想象,、思維和記憶的重要手段。相信許多人會覺得范文很難寫,?下面我給大家整理了一些優(yōu)秀范文,,希望能夠幫助到大家,我們一起來看一看吧,。
modelsim 腳本篇一
modelsim的基本仿真流程大致分以下幾個步驟:建庫,、編譯工程,、前后仿真、調(diào)試等,。modelsim仿真既可以在modelsim界面操作,,也可以用do文件實現(xiàn),這里結(jié)合學習的教程,、網(wǎng)上看到的資料,,和實際遇到的一些問題,分別做一整理小結(jié),。
1.建庫
建庫包括altera庫和xilinx庫,,同時都包括verilog和vhdl。這里只建了verilog庫,,vhdl和verilog步驟相同,。
對于altera庫主要包括lpm元件庫、mega_function庫atera_mf,、altera原語庫altera_primitive和各器件系列模型庫,。前三種是調(diào)用altera模塊的必備庫,第四種是進行綜合后功能仿真和布線后時序仿真需要的庫,,和器件系列有關(guān),,只選對應(yīng)系列即可。
altera庫創(chuàng)建和編譯步驟如下:
a)在modelsim安裝目錄下新建文件夾,,命名altera_lib,,以存放編譯后的庫文件,可以在altera_lib下新建verilog和vhdl兩個子文件夾,,分別存放verilog和vhdl庫,。b)打開modelsim,新建library,,file->new->library..c)如下圖,,創(chuàng)建lpm庫,路徑e:modeltech_10.1aaltera_libveriloglpm
d)添加庫文件,,并編譯,,compile-> compile …,出現(xiàn)compile source files窗口,,library 指定到lpm下,,查找范圍,選quartus安裝目錄下… edasim_lib目錄里的仿真原型文件:220model.v,,點compile,,點done。
到此,lpm庫建立完畢,。
e)同理,,建立altera_mf庫添加 altera_mf.v,建立primitive庫添加altera_primitive.v 建立各系列的模型庫,,命名可用系列名加_ver“xxx_ver”,,也可隨意吧,添加各系列的xxx_atoms.v,。
這里,,也可以把以上庫放在一個文件夾,這樣做簡單,,一次就搞定,,分開也就是條理清楚,沒人去看,,所以沒必要,。
f)文件,為的是讓modelsim能自動map到已經(jīng)編譯的這些庫上,。先去掉只讀屬性,,在[library]和[vcom]之間加上:庫名=庫路徑[絕對路徑或者相對路徑],相對路徑是相對于modelsim安裝路徑,,modelsim安裝路徑用$model_tech表示,。
這里所有庫都放在e:modeltech_10.1aaltera_lib下,庫名是altera_lib,,這里只添加一句: altera_lib = e:modeltech_10.1aaltera_lib
g)保存退出,,只讀屬性,防止亂改,。至此altera庫建立完畢,。
xlinx庫創(chuàng)建和編譯步驟如下:
相比altera,xilinx建庫很方便,。xilinx有批處理命令,,直接在console命令窗口,輸入compxlib命令,,調(diào)出編譯庫的窗口,只讀屬性,。設(shè)置如下圖:
next,,選擇語言:
next,選擇需要編譯的器件:
netx-> next,選擇輸出路徑,,launch compile process,,等待編譯完成。只讀屬性。至此xilinx庫建立完畢,。
2.編譯工程
編譯工程主要包括:code,、testbench、建立工程,、建立工程庫,、映射、編譯等,。code主要有code思想和風格,,在verilog部分涉及。testbench,,下邊給出一個公用模板,,基于這個方便修改,可以根據(jù)自己的習慣建一個temp_tb.v,。
modelsim界面編譯工程:
a)新建工程:打開modelsim,,file-> new-> project..,指定工程名,、路徑,、工程庫。
b)add existing file
c)add testbench file ….d)編譯,,compile –> complie all
e)編譯語法查錯,,直到編譯通過。至此編譯完畢,。
3.功能和時序仿真
仿真是在編譯的基礎(chǔ)上,,進行的功能調(diào)試,包括綜合前功能仿真,、綜合后功能仿真和布局布線后時序仿真,。
modelsim界面綜合前仿真:
a)指定頂層,開始仿真;simulation-> start simulation …,,在work 庫中,,指定testbench,ok,,開始仿真,。
b)查看仿真結(jié)果,打開wave,,信號,,加入wave
c)運行,查看波形,。run-> run all ….至此,,簡單的modelsim界面綜合前仿真介紹完畢。
modelsim界面綜合后仿真:
綜合后仿真需要quartus綜合后的網(wǎng)表文件(以altera為例),a)綜合后的網(wǎng)表的生成: quartus工程名右鍵-> setting –> eda tool setting, 雙擊simulation,,選擇eda軟件modelsim,,選擇輸出網(wǎng)表路徑,如圖
b)more settings ….將 generate netlist for functional simulation only 設(shè)置為on
c)保存,,全編譯,。
d)
檢查一下?/modelsim/psyth/source 里面,可以發(fā)現(xiàn),,已經(jīng)生成了一個*.vo 文件,。這個就是需要的網(wǎng)表文件。(vhdl 的輸出網(wǎng)表是*.vho 后綴名的)
e)將vo文件添加到工程,,指定testbench 文件top_tb.v,,同前邊一樣進行仿真。
e)得到的仿真結(jié)果
modelsim界面布局布線后仿真:
布局布線后仿真需要綜合網(wǎng)表文件和添延時文件*.sdo(verilog)或*(vhdl);
a)quartusii 里面設(shè)置重新把generate netlist for functional simulation only 設(shè)置成off,。
b)指定延時文件
這里,,region要為頂層文件在tb里的例化名。c)運行,,查看波形,,波形帶有延時
進行modelsim仿真
在modelsim中使用do文件是非常方便的進行仿真的一種方法,的項目比較大,,特別是幾個人分開做的時候,,前后模塊的聯(lián)合仿真比較重要,查看的信號比較多,,使用了do文件可以自動仿真,,省去很多體力活。
下面是編寫do文件的一般步驟:
a).quit-sim : 首先退出原來仿真的工程,。
b).cd : 設(shè)置工作目錄的路徑,,就是你所要建立的工作目錄work要放在哪里。
c).vlib work
: 在工作目錄下建立一個work目錄,,請注意不要用操作系統(tǒng)直接新建一 個work的文件夾,,因為用操作系統(tǒng)建立的work文件夾并沒有modelsim se自動生成的_info文件。還有個問題是,,當你的軟件工程里需要用到軟核時,,可能會需要一些庫,但這些庫ise軟件中是沒有的,,此時就需要我們自己新建庫了,,并映射到當前目錄下。我們只自己新建的庫一般放在work庫前面建立,。
d).vmap work : 將新建的work庫映射到當前工作目錄下(當前目錄就是第一步中的目錄了)。其他新建的庫也要這樣的方法映射。
e).vlog +acc –work work “file_path/*.v” : 編譯“file_path”目錄下所有.v文件,,并將 其添加進工作庫(work)中,,包括ip生成的v文件也要編譯的?;蛘撸簐log-f top_tb.f,,top_tb.f是.v的列表文件。編譯時可以分開單獨編譯,,但是一定要注意順序,,先編譯被調(diào)用的文件。在綜合后仿真和布局布線后仿真的時候,,這里添加綜合后網(wǎng)表和tb即可,。vhdl 用vcom編譯。
對于xilinx工程在仿真的時候還需要用到一個文件,,那就是glbl.v這個庫文件,。它是存放在xilinx安裝目錄下,我們直接編譯它并添加時工作庫(work)就可以了,。特別需要說明的是,,在仿真軟核的時候,在xps軟件里點擊simulation-> generate simulation hdl files會在工程目錄中生成一個simulaton文件夾,,這個文件夾里的東西就是軟核仿真時所需要的仿真文件了,。所以我們需把simulaton里所以的v文件都編譯一次,這樣才能仿真軟核,。
f).vsim-l altera_lib-novopt _tb : 這是沒有調(diào)用ip core時的仿真命令,,注意后面的參數(shù)top_tb必須為testbench中的模塊名。布局布線后仿真是這里要指定延時文件,,vsim-l altera_lib-novopt-sdfmax /top_tb/top= _tb g).do 運行添加wave tcl,,這里可以給信號分組,添加顏色,,設(shè)置波形屬性等,。h).run –all 設(shè)定運行時間,run 1000ms等,。
i).在do里可以用file copy/file delete 來對臨時文件進行操作,。
至此,modelsim仿真總結(jié)完畢,。這里僅為了簡單記錄仿真方法和流程,,旨在簡單明了,對更深入的和更詳細的有待進一步補充,。
附件 一,、testbench 模板
//////////////////////////////////////////////////////////////////////////////// // company:
// engineer:
// // create date:
// design name:
// module name:
// target device:
// tool versions:
// description: //
// dependencies: //
// revision: //
// additional comments: //
////////////////////////////////////////////////////////////////////////////////
`timescale 1ns / 1ps module top_tb;//*************************parameter declarations****************************** parameter
clk_period = 20;//clk = 50mhz
//************************internal declarations*********************** //************************** register declarations ****************************
reg
clk;reg
reset;
//********************************wire declarations************************** //******************************main body of code*************************** //--initial reg data--initial begin
end //----------generate reference clock input to tb----------------
initial
begin
clk = 1'b1;end
always
#(clk_period/2)clk =!clk;
//--resets--
initial
begin
rst_n = 1'b1;
#(10*clk_period)rst_n = 1'b0;
#(100*clk_period)rst_n = 1'b1;
end
//-----------------------------data transfer--
initial begin
#(10*clk_period);@(negedge data)
begin
end end
//-----------------------------simulation end--
initial begin #(10*clk_period);if()
//end sign
begin
$display(“-------test passed-------”);
end else begin
$display(“
error: test failed!
”);end $stop;end
//------------------------instantiate top module------------------------
top #(.parameter1
(1),,//.parameter2
(0)
//)top_inst(.a(a),);
endmodule ////////////////////////////////////////////////////////////////////////////////
附件二,、do 模板
//////////////////////////////////////////////////////////////////////////////// #!/bin/bash #this bash shell document is used to verilog project simulation #author:iyoyoo
echo “***************** end pre-project ********************************” quit-sim
echo “***************** go to work dir ********************************” #cd / #cd d:/quartus/ep4ce15f/lcd/simulation
echo “***************** start to setup work lib************************” vlib work echo “***************** start to compile ******************************” vlog-f top_tb.f
echo “***************** set up reference library ***********************” vmap altera_lib e:/modeltech_10.1a/altera_lib
echo “***************** delet pre-temp files *************************” #file delete../simulation/ #file delete../simulation/modelsim/
echo “***************** copy temp file *********************************” #file copy../source/../simulation/ #file copy../simulation/modelsim/../simulation/
echo “***************** start to simulation **************************” #-pli
---for debussy #-sdfmax /top_tb/top=
-----for post synthesis sim
vsim-l altera_lib-novopt _tb
echo “***************** add signal to vawe **************************” do
echo “***************** start to run
******************************” run-all
echo “***************** delete temp files ***************************” #file delete../simulation/ #file delete../simulation/modelsim/ ////////////////////////////////////////////////////////////////////////////////
附件三,、file.f模板
//////////////////////////////////////////////////////////////////////////////// +licq_all+ +access+r
//../simulation/modelsim/
-for post synthesis simulation
../source/top.v
../simulation/top_tb.v
+libext+vmd+.v-y $quartus_rootdir/eda/sim_lib ////////////////////////////////////////////////////////////////////////////////
附件三、file.f模板
////////////////////////////////////////////////////////////////////////////////
view signals stucture wave onerror {resume} quietly waveactivatenextpane {} 0
#-color green for all signal is green #-color green blue yellow pink orchid red salmon orange
# top_tb group add wave-itemcolor blue-noupdate-expand-group top_tb-format logic-radix hexadecimal /top_tb/*
# sub group add wave-itemcolor green-noupdate-expand-group sub-format logic-radix hexadecimal /top_tb/sub/*
treeupdate [setdefaulttree] waverestorecursors {{cursor 1} {10000 ns} 0} configure wave-namecolwidth 364 configure wave-valuecolwidth 100 configure wave-justifyvalue left configure wave-signalnamewidth 0 configure wave-snapdistance 10 configure wave-datasetprefix 0 configure wave-rowmargin 4 configure wave-childrowmargin 2 configure wave-gridoffset 0 configure wave-gridperiod 1 configure wave-griddelta 40 configure wave-timeline 0 configure wave-timelineunits ps update waverestorezoom {10000 ns} {10000 ns}
////////////////////////////////////////////////////////////////////////////////
modelsim 腳本篇二
modelsim的自動化腳本仿真平臺
自動化仿真平臺由tcl語言搭建,,大規(guī)模設(shè)計使用此平臺讓仿真便捷不少,。大體上用tcl語言進行modelsim仿真的流程如下:
1.建立庫
2.映射庫到物理目錄 3.編譯源代碼 4.啟動仿真器 5.執(zhí)行仿真 tcl語言的語法
vlib :建立庫。格式 vlib
,。庫名缺省值是work vmap:映射邏輯庫名,,將邏輯庫名映射到庫路徑。語法格式vmap work
vdir:顯示指定庫內(nèi)容,。語法格式vdir –lib
vlog:編譯verilog源代碼,,庫名缺省時編譯到work,文件按順序編譯,。語法格式vlog –work
.v
.v vcom:編譯vhdl源代碼,,庫名缺省時編譯到work,文件按順序編譯,。語法格式 vcom –work
.vhd
.vhd vsim: 啟動仿真器,。語法格式vsim –lib
vhdl vsim top_entity top_architecture 仿真entity/architecture對也能選擇一個結(jié)構(gòu) verilog vsim top_levela top_level2 仿真多個top級模塊 vsim命令的參數(shù)
-l:后面跟上仿真的庫名
-t:指定仿真的時間分辨率;單位可以是{fs,ps,ns,ms,sec,min,hr}如果用了verilong的`timescale指令,,將使用這個設(shè)計中的最小時間精度,;時間進度可選項(缺省是ns)-sdfmin |-sdftyp|-sdfmax
=
:注釋sdf文件;是可選項,;使用實例名也是可選項,;如果沒有使用,sdf用于頂級
add wave /tb/ * :該命令作用是將tb.v中模塊tb下所有的信號加到波形文件中,,注意*前要加空格 run: 執(zhí)行命令,。語法格式run
按照timesteps指定的時間長度執(zhí)行仿真 run命令的參數(shù):-
指定運行的timesteps數(shù)量,單位可用{ fs,ps,ns,ms,sec }-step :到下一個hdl狀態(tài)的的步驟-continue:繼續(xù)上次在-step或斷點后的仿真-all:一直運行 所需文件
除了本身的設(shè)計文件之外,,此仿真平臺還要有以下文件:tb.v: 測試激勵文件
glbl.v: 使用xilinx ipcore的就需要此文件 define.v: 定義了全局變量
: 腳本文件,,文件 : 主要的控制文件 src.f: 設(shè)計文件的路徑列表
cfg.f: ise安裝目錄下verilog庫文件的路徑
下面為各個文件的內(nèi)容
vsim-do “do ;” 2. quit-sim vlib work vlog-f src.f-f cfg.f../src/tb.v vsim-t ps-l xilinxcorelib_ver-l unisims_ver-l secureip-l simprims_ver-l unimacro_ver-l simprim-l unimacro-l unisim-l xilinxcorelib log-r /* view signals wave # do add wave/top/ * run –all
.f(不需要)
+licq_all+ +access+r-o0-work work +libext+.vmd+.v-y g:/iselib14_5/secureip-y g:/iselib14_5/simprims_ver-y g:/iselib14_5/unimacro_ver-y g:/iselib14_5/unisims_ver-y g:/iselib14_5/xilinxcorelib_ver-y g:/iselib14_5/simprim-y g:/iselib14_5/unimacro-y g:/iselib14_5/unisim-y g:/iselib14_5/xilinxcorelib /* included files containing parameters and definitions */ +incdir+../src
.f /* source code */../src/define.v../src/tb.v../src/glbl.v../src/top.v../src/rx/bit_align_machine.v../src/rx/rx.v../src/rx/rx_dut.v../src/rx/rx_top.v../src/tx/ctl.v../src/tx/tx.v../src/tx/tx_dut.v../src/tx/tx_top.v
遇到的問題 error1
這是因為沒有仿真glbl.v文件,解決方法vsim中加入glbl,。vsim-t ps error 2 是因為編譯仿真沒有添加glbl.v error 3.因為沒有關(guān)閉仿真優(yōu)化,,解決方法如下2: 文件的修改
1,添加庫的路徑
2.關(guān)掉自動優(yōu)化選項
error 4
原因是 文件中沒有添加庫文件,。原來的文件如下
文件如下
error 5
原因:不需要編譯cfg.f文件,。文件中刪除掉 –f cfg.f
modelsim 腳本篇三
modelsim 仿真方法總結(jié)
modeling 仿真工具是model公司開發(fā)的。它支持verilog,、vhdl以及他們的混合仿真,。modelsim各版本的使用方法大體一致,,modelsim仿真主要分為前仿真和后仿真。下面來具體介紹modelsim的仿真方法,,涉及quartus-modelsim聯(lián)合(使用)仿真的差異會特別提示,。
前仿真與后仿真說明 1.1 前仿真
前仿真也稱為功能仿真、行為仿真,。旨在驗證電路的功能是否符合設(shè)計要求,其特點是不考慮延遲(包括門延遲與線延遲),,主要驗證電路與理想情況是否一致,。前仿真需要用到rtl級代碼(由源代碼經(jīng)過綜合后產(chǎn)生)與testbench。
1.2)后仿真
后仿真也稱為時序仿真或者布局布線仿真,。是指在電路已經(jīng)映射到特定的工藝環(huán)境以后,,綜合考慮門延遲與線延遲的影響,驗證電路在一定的時序條件下是否存在時序違規(guī)以及能否滿足設(shè)計構(gòu)想的過程,。需要用到的文件是——從布局布線結(jié)果中抽象出來的門級網(wǎng)表,、testbench和后綴名為sdo或者sdf的標準時延文件。
注:擴展名為sdo和sdf的標準時延文件包含門延遲與實際布線延遲,,能較好的反應(yīng)芯片的實際工作情況,。
二)modelsim仿真主要有以下幾個步驟:
(1)建立庫并映射庫到物理目錄;(2)編譯源代碼(包括testbench),;(3)執(zhí)行仿真,; 解釋: ①庫:modelsim中有兩類仿真庫。一種是工作庫,,默認名為work;另一種是資源庫,。work庫中存放當前工程下所有已經(jīng)編譯過的文件,所以編譯前一定要建立一個work庫,。資源庫存放work庫中已經(jīng)編譯文件所要調(diào)用的資源,,這樣的資源可能有很多,它們被存放在不同的資源庫內(nèi),。(例如要想對綜合在cyclone芯片中的設(shè)計做后仿真,,就需要有一個名為cyclone_ver的資源庫。)
映射庫用于將已經(jīng)預(yù)編譯好的文件所在目錄映射為一個modelsim可識別的庫,。(此即是為仿真庫建立一個邏輯映像的行為過程,,后面會提到,在modelsim中新建庫時,,create a new library and a logical mapping to it或a map to an existing libraryd的提示)
上述三個步驟是大的框架,,前仿真和后仿真均是按照這個框架進行的,建立modelsim工程對前后仿真來說都不是必須的,。下面分別介紹每一步的操作,。
2.1)建立庫
在執(zhí)行一個仿真前先建立一個單獨的文件夾,,將操作對象文件放在該文件夾下面。然后啟動modelsim軟件將modelsim當前路徑改動到此文件下,。修改方法是file>change directory,。
注意:上面說的是獨立運行modelsim仿真的情況。當采用quartus聯(lián)合modelsim仿真時,,在quartus里面設(shè)置第三方eda仿真工具后,,編譯成功會自動在quartus工程目錄下面創(chuàng)建一個simulationmodelsim的文件夾,此文件夾等同于獨立運行moddelsim仿真時最先建立的文件夾,。另quartus聯(lián)合modelsim仿真,,modelsim默認路徑即為其自動創(chuàng)建文件夾simulationmodelsim下,不必人為更改,。
啟動modelsim后,,建立仿真庫。點擊file>new>library,出現(xiàn)對話框,,選擇a new library and a logical mapping to it(已默認),,在library name 中輸入要創(chuàng)建庫的名稱。
總結(jié)步驟為:啟動modelsim-->點擊file-->chang directory(如需更改路徑的話),;再file-->new-->(project)-->library,,進行相關(guān)設(shè)置。即可,。
2.2)編寫源代碼及testbench;在編寫目標測試文件(testbench)之前,,我們先寫完目標文件(既可在quartus中編寫,也可以在modelsim中編寫),,把它編譯進工作庫,。(當然此步也可以等到和測試文件寫完以后一起編譯)。源代碼的編寫就不用介紹了,,下面介紹編寫testbench的兩種方法,。
a)可以在modelsim內(nèi)直接編寫測試文件,而且modelsim提供各種testbench模板,,我們只需更改其中小部分即可,。在modelsim中執(zhí)行file>new>source>library或者直接點新建文件,會出現(xiàn)一個verilog(或vhdl)文本編輯頁面,,編輯測試文件即可,。另modelsim中提供各種測試文件模板,直接拿過來用會減少工作量,。在verilog文本編輯頁面空白處右鍵點擊show language templates,然后會出現(xiàn)一個加載工程,,接著在剛才文本編輯窗口左邊出現(xiàn)一個language templates窗口,雙擊creat testbench會出現(xiàn)一個創(chuàng)建向?qū)?,選擇specify design unit工作庫下,,work工作庫中的目標文件(即為目標文件配套testbench),點next,。可以指定testbench的名稱以及要編譯到的庫等,,此處我們使用默認設(shè)置直接點finish,。這時在testbench內(nèi)會出現(xiàn)對目標文件的各個端口的定義還有調(diào)用函數(shù)接下來,設(shè)計者可以自己往testbench內(nèi)添加內(nèi)容了,,我們只需更改其中的少量部分,,即可完成testbench,然后保存為.v格式即可。按照前面的方法(點中文件后右鍵,,選中compile即進行該文件的編譯,,或者點擊菜單欄中的compile菜單,然后選中要編譯的文件)把testbench文件也編譯到工作庫中,。
b)在 quartus內(nèi)編寫并編譯 testbench,之后將testbench 和目標文件放在同一個文件夾下,,按照前面的方法把 testbench 文件和目標文件都編譯到工作庫中之后,。
另如果在工作庫中沒有該文件(在testbench文件沒有端口的情況下),則在simulate——>start simulate卡片中去掉優(yōu)化選項enable optimization之后再重新編譯,,即可在工作庫中找到該文件,。
三)執(zhí)行仿真(分別說明前仿真和后仿真)3.1)前仿真
前仿真相對來說簡單些,在執(zhí)行到上面一步,,把需要的文件編譯到作庫后,,我們只需點simulation>start simulation或快捷按鈕。會出現(xiàn)startsimulation對話框,,點擊design標簽選擇work庫(工作庫)中的測試文件然后點ok既可以,。在主界面中會多出來一個objects窗口,里面顯示 testbench 里定義的所信號引腳,在workspace里也會多出來一個sim標簽,。右鍵點測試文件,,選擇add->add to wave,然后將出現(xiàn)wave窗口,,現(xiàn)在就可以仿真了,。3.2)后仿真
后仿真與前仿真步驟大體相同,只不過中間需要添加仿真庫(和所選器件資源庫,,例如在原理圖文件中用到ip core,我們這里就要把相關(guān)的_mf.v庫加進來,。)網(wǎng)表和延時文件的步驟。
后仿真的前提是quartus已經(jīng)對要仿真的目標文件進行編譯,,注意引腳的分派,。文件(網(wǎng)表文件)文件(時延文件)。具體操作過程又有兩種方法,,一種是通過quartus調(diào)用modelsim,,文件以及需要的仿真庫加到modelsim中,,操作簡單;一種是手動將需要的文件和庫加入modelsim進行仿真,,這種方法可以增加主觀能動性,,充分發(fā)揮modelsim的強大仿真功能。
a)通過quartus調(diào)用modelsim;使用這種方法時首先要對quartus進行設(shè)置,。先運行quartus,,打開要仿真的工程,點菜單欄的assignments,,點eda tool settings,,選中左邊category中的simulation.,在右邊的tool name中選modelsim(verilog),選中下面的run gate level simulation automatically after complication,。
quartus中的工程準備好之后點擊start complication按鈕,,此時modelsim會自動啟動,,而quartus處于等待狀態(tài)(前提是系統(tǒng)環(huán)境變量中用戶變量中path要設(shè)置好modelsim安裝路徑)。而且work庫中出現(xiàn)了需要仿真的文件。文件編譯到work庫,,并建立相應(yīng)的資源庫,。
編寫測試臺程序,,文件所在的目錄,,以方便在需要手動仿真時使用。點compile在出現(xiàn)的對話框中選中剛寫好的測試文件,,然后點compile按鈕,編譯結(jié)束后點done,,這時在work庫中會出現(xiàn)測試臺文件。
點擊simulate->start simulation或快捷按鈕 會出現(xiàn)start simulate對話框,。點擊design標簽選擇work庫下的測試文件,,然后點擊libraries標簽在search library中點擊add按鈕,選擇仿真所需要的資源庫(如果不知道需要選擇哪個庫,,可以先直接點compile看出現(xiàn)的錯誤提示中說需要的庫名,,然后再重復(fù)上述步驟)。
再點start simulate對話框的sdf標簽,。在出現(xiàn)的對話框的sdf 時延文件路徑,。在apply to region框內(nèi)有一個“/”,在“/”的前面輸入測試臺文件名,,在它的后面輸入測試臺程序中調(diào)用被測試程序時給被測試程序起的名稱,。(一般為dut)
b)手動仿真;
手動仿真需要自己添加文件和編譯庫,,但可以充分發(fā)揮modelsim強大的仿真功能,。操作時也要先對quartus進行設(shè)置,設(shè)置與前面相同只是不要選中run gate level simulation automatically after complication。然后啟動modelsim,,將當前路徑改到“工程文件夾simulationmodelsim”下,。向該文件夾中手動添加所需要的仿真文件,文件,、相關(guān)芯片資源庫(后綴_atoms.v)以及原理圖情況下的ip core相關(guān)資源(后綴-mf.v),。然后在modelsim中點編譯,將這些文件編譯到工作庫下,,點擊simulate->start simulation或快捷按鈕 會出現(xiàn)start simulate對話框,。這里和a情況相比只有l(wèi)ibraries標簽在search library時不一樣,其余2項都一樣,。libraries標簽在search library下選中simulationmodelsim下work庫,。后面觀察波形與前面方法一致。
兩種方法的區(qū)別在于,,文件,,和資源庫的建立方法不同,手動仿真需要自己添加這些文件到工作庫下,。建議使用手動添加的方式,,有利于我們對軟件使用的更好理解。
以上方法可供參考,,modelsim軟件自帶的教程也是一個不錯的學習路徑,在help>se pdf documentation>tutorial里面有詳細的功能講解,,使用時可以看看,。
modelsim 腳本篇四
verilog大作業(yè)
系名信息工程系 專業(yè)電子科學與技術(shù) 6010202036-李貝 6010202043-王玉斌 6010202034-解海洋 6010202035-冷健 指導教師史再峰
2012年 10 月 27 日
bmp(全稱bitmap)是window操作系統(tǒng)中的標準圖像文件格式,可以分成兩類:設(shè)備相關(guān)位圖(ddb)和設(shè)備無關(guān)位圖(dib),,使用非常廣,。它采用位映射存儲格式,除了圖像深度可選以外,,不采用其他任何壓縮,,因此,bmp文件所占用的空間很大,。bmp文件的圖 像深度可選lbit,、4bit、8bit及24bit,。bmp文件存儲數(shù)據(jù)時,,圖像的掃描方式是按從左到右、從下到上的順序,。由于bmp文件格式是windows環(huán)境中交換與圖有關(guān)的數(shù)據(jù)的一種標準,,因此在windows環(huán)境中運行的圖形圖像軟件都支持bmp圖像格式。組成
典型的bmp圖像文件由四部分組成:
1:位圖頭文件數(shù)據(jù)結(jié)構(gòu),它包含bmp圖像文件的類型,、顯示內(nèi)容等信息,;
2:位圖信息數(shù)據(jù)結(jié)構(gòu),它包含有bmp圖像的寬,、高,、壓縮方法,以及定義顏色等信息,;
3:調(diào)色板,,這個部分是可選的,有些位圖需要調(diào)色板,,有些位圖,,比如真彩色圖(24位的bmp)就不需要調(diào)色板;
4:位圖數(shù)據(jù),,這部分的內(nèi)容根據(jù)bmp位圖使用的位數(shù)不同而不同,,在24位圖中直接使用rgb,而其他的小于24位的使用調(diào)色板中顏色索引值,。對應(yīng)的數(shù)據(jù)結(jié)構(gòu)
1:bmp文件組成
bmp文件由文件頭,、位圖信息頭、顏色信息和圖形數(shù)據(jù)四部分組成,。
圖像文件頭
1)1-2:(這里的數(shù)字代表的是“字”,即兩個字節(jié),,下同)圖像文件頭。
0x4d42=’bm’,,表示是windows支持的bmp格式,。(注意:查ascii表b 0x42,m0x4d,bftype 為兩個字節(jié),b為low字節(jié),,m為high字節(jié)所以bftype=0x4d42,,而不
是0x424d,但注意)2)3-6:整個文件大小,。4690 0000,,為00009046h=36934。
3)7-8:保留,,必須設(shè)置為0,。4)9-10:保留,必須設(shè)置為0,。
5)11-14:從文件開始到位圖數(shù)據(jù)之間的偏移量(14+40+4*(2^bibitcount)),。4600 0000,為00000046h=70,,上面的文件頭就是35字=70字節(jié),。
位圖信息頭
6)15-18:位圖圖信息頭長度,。
7)19-22:位圖寬度,以像素為單位,。8000 0000,,為00000080h=128。
8)23-26:位圖高度,,以像素為單位,。9000 0000,為00000090h=144,。
9)27-28:位圖的位面數(shù),,該值
總是1。0100,,為0001h=1,。
10)29-30:每個像素的位數(shù)。有1(單色),,4(16色),,8(256色),16(64k色,,高彩色),,24(16m色,真彩色),,32(4096m色,,增強型真彩色)。1000為0010h=16,。
11)31-34:壓縮說明:有0(不壓縮),,1(rle 8,8位rle壓縮),,2(rle 4,4位rle壓縮,,3(bitfields,,位域存放)。rle簡單地說是采用像素數(shù)+像素值的方式進行壓縮,。t408采用的是位域存放方式,,用兩個字節(jié)表示一個像素,位域分配為r5b6g5,。圖中0300 0000為00000003h=3,。12)35-38:用字節(jié)數(shù)表示的位圖數(shù)據(jù)的大小,該數(shù)必須是4的倍數(shù),,數(shù)值上等于(≥位圖寬度的最小的4的倍數(shù))×位圖高度×每個像素位數(shù),。0090 0000為00009000h=80×90×2h=36864。
13)39-42:用象素/米表示的水平分辨率。a00f 0000為0000 0fa0h=4000,。
14)43-46:用象素/米表示的垂直分辨率,。a00f 0000為0000 0fa0h=4000。
15)47-50:位圖使用的顏色索引數(shù),。設(shè)為0的話,,則說明使用所有調(diào)色板項。
16)51-54:對圖象顯示有重要影響的顏色索引的數(shù)目,。如果是0,,表示都重要。彩色板
17)(55+0)到(50-1+2^bibitcount):彩色板規(guī)范,。對于調(diào)色板中的每個表項,,用下述方法
來描述rgb的值: 1字節(jié)用于藍色分量 1字節(jié)用于綠色分量 1字節(jié)用于紅色分量
1字節(jié)用于填充符(設(shè)置為0)對于24-位真彩色圖像就不使用彩色板,因為位圖中的rgb值就代表了每個象素的顏色,。
如,,彩色板為00f8 0000 e007 0000 1f00 0000 0000 0000,其中:
00f8為f800h = 1111 1000 0000 0000(二進制),,是藍色分量的掩碼,。
e007 為 07e0h = 0000 0111 1110 0000(二進制),是綠色分量的掩碼,。
1f00為001fh = 0000 0000 0001 1111(二進制),,是紅色分量的掩碼。
0000 總設(shè)置為0,。
將掩碼跟像素值進行“與”運算再進行移位操作就可以得到各色分量值,。看看掩碼,,就可以明白事實上在每個像素值的兩個字節(jié)16位中,,按從高到低取5、6,、5位分別就是r,、g、b分量值,。取出分量值后把r,、g、b值分別乘以8,、4,、8就可以補齊第個分量為一個字節(jié),再把這三個字節(jié)按rgb組合,,放入存儲器(同樣要反序),,就可以轉(zhuǎn)換為24位標準bmp格式
了,。圖像數(shù)據(jù)陣列
18)55(無調(diào)色板)-bfsize:每兩個字節(jié)表示一個像素。陣列中的第一個字節(jié)表示位圖左下角的象素,,而最后一個字節(jié)表示位圖右上角的象素,。
存儲算法
bmp文件通常是不壓縮的,所以它們通常比同一幅圖像的壓縮圖像文件格式要大很多,。例如,,一個800×600的24位幾乎占據(jù)1.4mb空間。因此它們通常不適合在因特網(wǎng)或者其它低速或者有容量限制的媒介上進行傳輸,。根據(jù)顏色深度的不同,,圖像上的一個像素可以用一個或者多個字節(jié)表示,它由n/8所確定(n是位深度,,1字節(jié)包含8個數(shù)據(jù)位),。圖片瀏覽器等基于字節(jié)的ascii值計算像素的顏色,然后從調(diào)色板中讀出相應(yīng)的值,。更為詳細的信息請參閱下面關(guān)于位圖文件的部分,。n位2n種顏色的位圖近似字節(jié)數(shù)可以用下面的公式計算:bmp文件大小約等于 54+4*2的n次方+(w*h*n)/8,其中高度和寬度都是像素數(shù),。需要注意的是上面公式中的54是位圖文件的文件頭,,是彩色調(diào)色板的大小。另外需要注意的是這是一個近似值,,對于n位的位圖圖像來說,,3 [1] 盡管可能有最多2n中顏色,一個特定的圖像可能并不會使用這些所有的顏色,。由于彩色調(diào)色板僅僅定義了圖像所用的顏色,,所以實際的彩色調(diào)色板將小于。如果想知道這些值是如何得到的,,請參考下面文件格式的部分,。由于存儲算法本身決定的因素,根據(jù)幾個圖像參數(shù)的不同計算出的大小與實際的文件大小將會有一些細小的差別,。源代碼:
`timescale 1ns/100ps module transport;parameter longsize=65554;reg [24:1] meme[longsize:1],b;
integer e,m,n,i,j,w,clk;
always@(*)begin initial fork begin w=$fopen(“”,“rb”);
e=$fread(meme,w);
$fclose(w);end always #50 clk=~clk;
join always begin
m=$fopen(“”);
n=0;
always@(posedge clk)
begin repeat(18)begin
n=n+1;b=meme[n];
$fwrite(m,“%h”,b);
end end
always@(posedge clk)
begin
for(j=0;j<=255;j=j+1)for(i=1;i<=256;i=i+1)
begin n=18+256*i-j;b=meme[n];
$fwrite(m,“%h”,b);end end
$fclose(m);
end
end endmodule
仿真后objects中的數(shù)值:
仿真后波型:
中的數(shù)值:
使用到的軟件:
在winhex中的數(shù)值:
原圖
經(jīng)verilog轉(zhuǎn)換后的圖:
設(shè)計說明書: 首先用$fread系統(tǒng)任務(wù)將bmp圖片的二進制代碼讀入存儲器meme中,;由initial子語句產(chǎn)生clk時鐘信號;由于讀出的二進制代碼的前54個字節(jié)是bmp位圖的基本代碼,因此在對圖片進行翻轉(zhuǎn)時前54個字節(jié)的位置不變,。由于文件格式為256*256*24bit文件,所以后面為256*256個像素,每24位代表一個像素,,因為bmp文件的數(shù)據(jù)是從左到右,,從下到上的。也就是說,,從文件中最先讀到的是圖象最下面一行的左邊第一個象素,,然后是左邊第二個象素??接下來是倒數(shù)第二行左邊第一個象素,,左邊第二個象素??依次類推,最后得到的是最上面一行的最右一個象素,。所以要實現(xiàn)圖片的順時針旋轉(zhuǎn)應(yīng)該把meme中像素逆時針旋轉(zhuǎn)90
度,。
其次,中。然后用for語句在每一個clk信號上升沿來臨時把翻轉(zhuǎn)后256*256
中,。
文件即可得到翻轉(zhuǎn)
后的圖片,。李貝大作業(yè)工作總結(jié)
這次的大作業(yè)對我們每一個人都是一個挑戰(zhàn),以前,我們學得知識很死,總不會學以致用,每天都感覺無所事事。通過這次大作業(yè)的完成,,鍛煉了自己的解決問題能力,。
剛接觸這個大作業(yè)的時候,給人一種很高端的感覺,,但也意味著一切都待從頭開始,,首先就是對bmp文件的理解,經(jīng)過大量的查閱資料,,知道了bmp文件的構(gòu)成,,了解了對于256*256*24bit文件,其大小應(yīng)該為256*256*3+54=196662字節(jié),;自此豁然開朗,;對于bmp文件和2進制之間轉(zhuǎn)化的問題,經(jīng)過許多曲折,,終于得到了winhex,,經(jīng)過親手應(yīng)用,逐漸掌握了這個軟件,,完成了2進制與bmp文件之間的轉(zhuǎn)化,;在編寫程序時,同樣遇到了很大的阻力,,感覺課堂上學的東西完全不夠用,,通過自己以及團隊對verilog語言的進一步學習,知道了其系統(tǒng)函數(shù)$fread可以從bmp文件中讀取二進制數(shù)字,,在對時鐘信號處理時,,對周期的大小也進行了考慮,通過這次大作業(yè),,使我更加熟悉了硬件描述語言,,對modelsim這款軟件的操作也更加熟練啦,懂得了團隊合作的重要性,!總之,,收獲很大!
冷健大作業(yè)工作總結(jié)
終于完成了這次verilog大作業(yè),。在完成大作業(yè)的過程中,,我們小組遇見了不少的難題,。遇到很多不會的東西,但是通過我與小組隊員的通力合作,,通過請教專業(yè)的同學,,通過上網(wǎng) 7 搜索資料。我們還是完成了,。雖然有點不盡如人意,。通過這次的大作業(yè),讓我們更加深刻的了解了合作的意義,。組員之間相互合作,,那就無論什么困難都可以解決。這就是團隊力量的重要性,。還有一點感想就是打鐵還需自身硬,。自己沒有點真功夫是不行的。所以平時一定要多積累,,多看書,,平時多看書,那么實際生活中就多一條解決途徑,。就可以少走些彎路,,少吃些苦。?還有一點,,我們需要仔細和耐性,,由于在編寫程序的過程中,有一些疏忽和遺漏,,總是個別字符出錯或者符號出錯,。回頭又得花時間去檢查去糾正,。所以就必須特別強調(diào)細心
和耐心,。以上就是我的心得。解海洋大作業(yè)工作總結(jié)
在這次的大作業(yè),,使我懂得了,,知識與實踐動手能力的不同,雖然經(jīng)過一段時間的verilog的學習,,對語法知識有一定的了解,,但真正要自己動手還是有所能力的欠缺。而且還不知道從何入手,,還是參考了前輩一些經(jīng)驗,,知道了怎么做,按什么順序做。首先了解bmp位圖的格式,,還要想到怎么把圖讀進去等等很多的問題。不過在這次的鍛煉中,,我對verilog語言有了更深的理解,,同時也學到小組合作的精神。
王玉斌大作業(yè)工作總結(jié)
這次verilog大作業(yè)是四個人一起完成的作品,,在這次大作業(yè)中學到了很多,,雖然有些地方和老師的要求,但是在考試的緊張復(fù)習中還是完成了大作業(yè),。讓我學到了很多關(guān)于verilog圖像相位的知識,,對于以后的學習有很大幫助。
在完成作業(yè)過程中遇到了很多困難:
首先,,我們不知道bmp圖片能直接轉(zhuǎn)換為二進制代碼,,后來跟同學交流了解了可以直接轉(zhuǎn)換為二進制代碼,bmp圖片輸入的時候出現(xiàn)了輸入不進去的問題,。還有在處理256*256的圖片時,,我們誤認為把一張圖片壓縮成256*256就可以,后來才發(fā)現(xiàn)是剪切,,二不是壓縮,,這樣導致后來讀出的文件中含有不確定值x。
其次是起初我們仿真不出波形,,開始不知道從何下手,,通過我們共同努力,從網(wǎng)上,,課本,,資料查找,發(fā)現(xiàn)我們的仿真時間選擇過小,。導致波形無法顯示,,最后增大了仿真時間,得到
了波形,。
最后,,個人覺得有些地方用matlab可以更簡便,比如把程序直接導入matlab函數(shù)中,,方便以后調(diào)用,。總之,,大作業(yè)的成功是我們四個人共同努力的成果,,讓我們學到了很多課堂上沒學到的東西,同時也遇到了很多困難,,也有很多分歧,,但是最終在一起的努力下我們完成大
作業(yè),。
modelsim 腳本篇五
煤礦安全生產(chǎn)仿真培訓平臺
全面提高煤礦職工隊伍的安全素質(zhì),增強依法自我安全保護的意識,,堅持“安全第一,、預(yù)防為主”的生產(chǎn)方針,促進全國煤礦安全生產(chǎn)狀況的穩(wěn)定好轉(zhuǎn)和優(yōu)化煤礦生產(chǎn),,北京金視和科技股份有限公司致力于vr技術(shù)在礦業(yè)領(lǐng)域的研發(fā),,結(jié)合煤礦領(lǐng)域的實際情況,并聯(lián)合煤礦開發(fā)和安全生產(chǎn)方面的相關(guān)高校專家共同研發(fā)制成煤礦安全生產(chǎn)仿真培訓平臺,。煤礦安全生產(chǎn)仿真培訓平臺以煤礦職工安全生產(chǎn),、優(yōu)化技術(shù)設(shè)計、安全技能培訓和提高礦產(chǎn)效益作為主要目的,。利用國際領(lǐng)先的虛擬現(xiàn)實和三維仿真技術(shù)開發(fā)而成,。煤礦安全生產(chǎn)仿真培訓平臺緊緊圍繞著煤礦安全生產(chǎn),搭建了完整的,、系統(tǒng)的,、可視化的應(yīng)用平臺。該系統(tǒng)由兩大部分構(gòu)成,,分別為理論培訓和實戰(zhàn)操作培訓,,提供基于虛擬現(xiàn)實的人機交互演練,大幅度提升學員的實際操作能力和安全防范意識,。
產(chǎn)品特點
1,、真實準確,知識庫豐富
煤礦安全生產(chǎn)仿真培訓平臺以國家統(tǒng)一的煤礦培訓教材《煤礦新工人崗前安全培訓教材》為基礎(chǔ),,整個系統(tǒng)不但客觀的復(fù)原教材中的關(guān)鍵知識點,,而且還將實際生產(chǎn)操作進行了深度擴展結(jié)合,從而提高了系統(tǒng)知識的豐富性,,提高了學員對相關(guān)操作規(guī)程的理解和認識,。系統(tǒng)內(nèi)置的數(shù)據(jù)庫管理模塊,可以詳細準確的記錄所有學員的學習,、訓練以及考核數(shù)據(jù),,具有安全生產(chǎn)的規(guī)范性和準確性。
2,、三維交互
煤礦安全生產(chǎn)仿真培訓平臺以獨特的三維仿真技術(shù)將煤礦井下環(huán)境完整的呈現(xiàn),,全新的三維仿真交互操作突破了以往傳統(tǒng)的教學方式,讓學員能夠以多種視角對井下環(huán)境進行多維度的學習和認識,。
3,、立體可視化
煤礦安全生產(chǎn)仿真培訓平臺以國際先進的三維仿真技術(shù)為基礎(chǔ)平臺,搭載定制化開發(fā)的立體顯示設(shè)備,讓用戶佩戴液晶快門立體眼鏡即可在任意環(huán)境下呈現(xiàn)井下立體畫面,。立體顯示設(shè)備堅固穩(wěn)定,,精致便攜,且不受場地限制即可沉浸式體驗立體畫面,。自由操作,,煤礦安全生產(chǎn)仿真培訓平臺包含兩種學習模式:順序模式和自由模式。分別為初級學習和強化訓練提供人性化的學習方式,。順序模式可以根據(jù)煤礦安全生產(chǎn)的工序流程進行逐步學習,在每項工序開始前會彈出提示框,,提示下一步應(yīng)該執(zhí)行哪項任務(wù),,這樣可以幫助學員快速了解相關(guān)開采及預(yù)防的流程。自由模式可按照學員自身需求,,有針對性的對某項任務(wù)進行深入學習,,而不需要每次都從新開始學習整個工序流程。
4,、在線式多人協(xié)同
煤礦安全生產(chǎn)仿真培訓平臺支持多人在線式協(xié)同作業(yè),,學員通過了解井下相關(guān)任務(wù)流程后,可同時在線扮演各個工種的角色,,通過班長的指揮或者工序的流程完成各自的任務(wù),。在沒有下井之前便可以在虛擬的環(huán)境中進行開采訓練,積累開采經(jīng)驗,,提前發(fā)現(xiàn)問題并及時解決,,有效的防止因人為因素引發(fā)的礦難事故。