版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第11章仿真◆系統(tǒng)任務(wù)與系統(tǒng)函數(shù)◆用戶自定義元件◆延時(shí)模型的表示◆數(shù)字電路的仿真內(nèi)容第11章仿真11.1系統(tǒng)任務(wù)與系統(tǒng)函數(shù)
概述1)系統(tǒng)任務(wù)和系統(tǒng)函數(shù)主要是用于仿真的;2)系統(tǒng)任務(wù)和系統(tǒng)函數(shù)一般以符號(hào)“$”開頭。例如:
$monitor,$readmemh等。3)使用不同的Verilog仿真工具(如:VCS、Verilog-XL、
ModelSim等)進(jìn)行仿真時(shí),這些系統(tǒng)任務(wù)和系統(tǒng)函數(shù)在使用方法上可能存在差異,應(yīng)根據(jù)使用手冊(cè)來使用。4)一般在intial或always過程塊中,調(diào)用系統(tǒng)任務(wù)和系統(tǒng)函數(shù)。5)用戶可以通過編程語言接口(PLI)將自己定義的系統(tǒng)任務(wù)和系統(tǒng)函數(shù)加到語言中,以進(jìn)行仿真和調(diào)試。$display和$write是兩個(gè)系統(tǒng)任務(wù),兩者的功能相同,都用于顯示仿真結(jié)果,其區(qū)別是$display在輸出結(jié)束后能自動(dòng)換行,而$write不能。$display和$write的使用格式為:$display(“格式控制符”,輸出變量名列表);$write(“格式控制符”,輸出變量名列表);格式控制符:控制顯示信號(hào)的格式輸出變量名列表:要顯示的信號(hào)的名稱。1.$display與$write格式控制符說明%h或%H以16進(jìn)制形式顯示%d或%D以10進(jìn)制形式顯示%o或%O以8進(jìn)制形式顯示%b或%B以2進(jìn)制形式顯示%c或%C以ASCII字符形式顯示%v或%V顯示net型數(shù)據(jù)的驅(qū)動(dòng)強(qiáng)度%m或%M顯示層次名%s或%S以字符串形式輸出%t或%T以當(dāng)前的時(shí)間格式顯示轉(zhuǎn)義字符說明\n換行\(zhòng)tTAB鍵\\符號(hào)\\“符號(hào)“\ddd
八進(jìn)制數(shù)ddd對(duì)應(yīng)的ASCII字符%%符號(hào)%格式控制符轉(zhuǎn)義字符1.$display與$write1)用于仿真結(jié)果的輸出`timescale1ns/1nsmodulewytest;reg
a,b,c;initialbegina=0;b=1;c=0;#100c=1;
$display($time,,,"a=%db=%dc=%d",a,b,c);b=0;
$display($time,,,"a=%db=%dc=%d",a,b,c);#100a=1;b=1;endendmodule100a=0b=1c=1100a=0b=0c=1
$write($time,,,"a=%db=%dc=%d",a,b,c);
$write($time,,,"a=%db=%dc=%d",a,b,c);
100a=0b=1c=1100a=0b=0c=1賦值方式都改為非阻塞型賦值`timescale1ns/1nsmodulewytest;reg
a,b,c;initialbegina<=0;b<=1;c<=0;#100c<=1;
$display($time,,,"a=%db=%dc=%d",a,b,c);b<=0;
$display($time,,,"a=%db=%dc=%d",a,b,c);#100a<=1;b<=1;endendmodule100a=0b=1c=0100a=0b=1c=0
2)用display可以顯示字符串
$display(“itisaexamplefordisplay!\n”)轉(zhuǎn)義字符的顯示:moduledisp;initialbegin
$display(“\\\t\\\n\”\123”);end顯示結(jié)果:\\“s//八進(jìn)制數(shù)123對(duì)應(yīng)的ASCII的字符為S$monitor、$strobe與$display、$write一樣也是屬于輸出控制類的系統(tǒng)任務(wù),$monitor與$strobe都提供了監(jiān)控和輸出參數(shù)列表中字符或變量的值的功能.使用格式為:$monitor(“格式控制符”,輸出變量名列表);$strobe(“格式控制符”,輸出變量名列表);
這里的格式控制符、輸出變量名列表與$display和$write中定義的完全相同。運(yùn)行機(jī)制:$monitor:相當(dāng)于一個(gè)實(shí)時(shí)監(jiān)控器,只要輸出變量列表中的任何變量發(fā)生了變化,則系統(tǒng)按$monitor中指定的格式將結(jié)果輸出一次。$strobe:只有當(dāng)仿真模擬時(shí)間發(fā)生變化時(shí),并且在該時(shí)刻的所有事件都處理完成了,才輸出結(jié)果2.$monitor與$strobe0a=0b=1c=0100a=1b=1c=1200a=1b=0c=1300a=0b=1c=0400a=1b=0c=1`timescale1ns/1nsmodulewytest;reg
a,b,c;initialbegina<=0;b<=1;c<=0;#100a<=1;b<=1;c<=1;#100a<=1;b<=0;c<=1;#100a<=0;b<=1;c<=0;#100a<=1;b<=0;c<=1;endinitialbegin$monitor($time,,,"a=%db=%dc=%d",a,b,c);endendmodule`timescale1ns/1nsmodulewytest;reg
a,b,c;initialbegina=0;b=1;c=0;#100a=1;
$strobe($time,,,"a=%db=%dc=%d",a,b,c);b=1;c=1;#100a=1;b=0;
$strobe($time,,,"a=%db=%dc=%d",a,b,c);c=1;endendmodule100a=1b=1c=1200a=1b=0c=1100a=1b=1c=0200a=1b=0c=1
$display($time,,,"a=%db=%dc=%d",a,b,c);
$display($time,,,"a=%db=%dc=%d",a,b,c);
`timescale1ns/1nsmodulewytest;reg
a,b,c;initialbegina<=0;b<=1;c<=0;#100a<=1;b<=1;c<=1;
$strobe($time,,,"a=%db=%dc=%d",a,b,c);
#100a<=1;b<=0;c<=1;
$strobe($time,,,"a=%db=%dc=%d",a,b,c);
endendmodule#100a=1b=1c=1#200a=1b=0c=1
$display($time,,,"a=%db=%dc=%d",a,b,c);
$display($time,,,"a=%db=%dc=%d",a,b,c);
#100a=0b=1c=0#200a=1b=1c=1$time、$realtime是屬于顯示仿真時(shí)間標(biāo)度的系統(tǒng)函數(shù)。這兩個(gè)函數(shù)被調(diào)用時(shí),都返回當(dāng)前時(shí)刻距離仿真開始時(shí)刻的時(shí)間量值,$time函數(shù)以64位整數(shù)值的形式返回模擬時(shí)間(基本仿真時(shí)間的個(gè)數(shù),而不是絕對(duì)的時(shí)間值);$realtime
函數(shù)則以實(shí)數(shù)型數(shù)據(jù)返回模擬時(shí)間(基本仿真時(shí)間的個(gè)數(shù),而不是絕對(duì)的時(shí)間值)。
3.$time與$realtime`timescale10ns/1nsmodulewytest;reg
ts;parameterdelay=2.6;initialbegin#delayts=1;#delayts=0;#delayts=1;#delayts=0;endinitial$monitor($time,,,"ts=%b",ts);endmodule3.$time與$realtime#0ts=x#3ts=1#5ts=0#8ts=1#10ts=0($realtime,,,"ts=%b",ts);#0ts=x#2.6ts=1#5.2ts=0#7.8ts=1#10.4ts=0系統(tǒng)任務(wù)$finish與$stop用于對(duì)仿真過程進(jìn)行控制,分別表示結(jié)束仿真和中斷仿真。$finish與$stop的使用格式如下:$stop;$stop(n);$finish;$finish(n);n是$finish和$stop的參數(shù),n可以是0、1、2等值,分別表示如下含義。0:不輸出任何信息;1:給出仿真時(shí)間和位置;2:給出仿真時(shí)間和位置,還有其他一些運(yùn)行統(tǒng)計(jì)數(shù)據(jù)。$stop、$finish不帶參數(shù),則默認(rèn)參數(shù)值為1.4.$finish與$stop4.$finish與$stop`timescale10ns/1nsmodulewytest;reg
ts;parameterdelay=2.6;initialbegin#delayts=1;#delayts=0;#delayts=1;#delayts=0;#delay$stop(2);endinitial$monitor($realtime,,,"ts=%b",ts);endmodule#$stop:C:/modeltech_6.5/examples/wytest.v(11)#Time:130nsIteration:0Instance:/wytest#BreakinModulewytestatC:/modeltech_6.5/examples/wytest.vline11vsim28>quit作用:$readmemh與$readmemb是屬于文件讀寫控制的系統(tǒng)任務(wù),其都是從外部文件中讀取數(shù)據(jù)并
放入存儲(chǔ)器中。區(qū)別:讀取數(shù)據(jù)的格式不同,$readmemh為讀取十六進(jìn)制數(shù)據(jù),而$readmemb為讀取二進(jìn)制數(shù)據(jù)。使用格式:$readmemh("數(shù)據(jù)文件名",存儲(chǔ)器名,起始地址,結(jié)束地址);$readmemb("數(shù)據(jù)文件名",存儲(chǔ)器名,起始地址,結(jié)束地址);其中,起始地址和結(jié)束地址均可以缺省,如果缺省起始地址,表示從存儲(chǔ)器的首地址開始存儲(chǔ);如果缺省結(jié)束地址,表示一直存儲(chǔ)到存儲(chǔ)器的結(jié)束地址。5.$readmemh與$readmembreg[7:0]my_mem[0:255];//定義一個(gè)256個(gè)地址的存儲(chǔ)器initialbegin$readmemh(“mem.hex”,my_mem);end//將mem.hex的數(shù)據(jù)裝載到存儲(chǔ)器my_mem,從起始地址0
一直裝到存儲(chǔ)器結(jié)束地址。initialbegin$readmemh(“mem.hex”,my_mem,80);end//將mem.hex的數(shù)據(jù)裝載到存儲(chǔ)器my_mem,從起始地址80
一直裝到存儲(chǔ)器結(jié)束地址。5.$readmemh與$readmemb$random是產(chǎn)生隨機(jī)數(shù)的系統(tǒng)函數(shù),每次調(diào)用該函數(shù)將返回一個(gè)32位的隨機(jī)數(shù),該隨機(jī)數(shù)是一個(gè)帶符號(hào)的整數(shù)。6.$random#10data=00010010000101010011010100100100#20data=11000000100010010101111010000001#30data=10000100100001001101011000001001#40data=10110001111100000101011001100011#50data=00000110101110010111101100001101#60data=01000110110111111001100110001101`timescale10ns/1nsmodulewytest;integerdata;integeri;parameterdelay=10;initialbegin$monitor($time,,,"data=%b",data);endinitialbegin
for(i=0;i<=5;i=i+1)#delaydata=$random;endendmodule與c語言類似,Verilog也提供了很多文件輸出類的系統(tǒng)任務(wù),可將結(jié)果輸出到文件中。這類任務(wù)有:$fdisplay、$fwrite、$fmonitor、$fstrobe、$fopen和$fclose等。$fopen用于打開某個(gè)文件并準(zhǔn)備寫操作,$fclose用于關(guān)閉文件,$fdisplay、$fwrite、$fmonitor等系統(tǒng)任務(wù)則用于把文本寫入文件。7.文件輸出11.3延時(shí)模型的表示
延時(shí):包括門延時(shí)、assign賦值延時(shí)和連線延時(shí)等。門延時(shí):門輸入端發(fā)生變化到輸出端發(fā)生變化的延遲時(shí)間;assign賦值延時(shí):等號(hào)右端某個(gè)值發(fā)生變化到等號(hào)左端發(fā)生相應(yīng)變化的延遲時(shí)間;連線延時(shí):信號(hào)在連線上的傳輸延時(shí)。如果沒有定義時(shí)延值,缺省時(shí)延為0。11.3.1時(shí)間標(biāo)尺定義’timescale
`timescale語句用途:用于定義模塊的時(shí)間單位和時(shí)間精度。使用格式:
`timescale<時(shí)間單位>/<時(shí)間精度>
其中用來表示時(shí)間度量的符號(hào)有:
smsusnsps
fs
秒10-3秒10-6秒10-9秒10-12秒10-15秒例如:`timescale1ns/100ps
表示延時(shí)單位為1ns,時(shí)延精度為100ps(即精確到0.1ns)。
`timescale編譯器指令在模塊說明外部出現(xiàn),并且影響后面所有的時(shí)延值。11.3.1時(shí)間標(biāo)尺定義’timescale
例:`timescale1ns/1nsmodulewytest;reg
a,b,c;initialbegina<=0;b<=1;c<=0;#50.8a<=1;b<=1;c<=1;#100.4a<=1;b<=0;c<=1;endendmodule#50.851ns#100.4100ns1ns/100ps#50.850.8ns#100.4100.4ns11.3.2延時(shí)的表示與延時(shí)說明塊
1.延時(shí)的表示方法延時(shí)的表示方法有下面幾種:
#delaytime#(d1,d2)#(d1,d2,d3)
#delaytime表示延遲時(shí)間為delaytime,,為一個(gè)常數(shù)。
d1表示上升延遲,d2表示下降延遲,d3則表示轉(zhuǎn)換到高阻態(tài)z的延遲,這些延遲的具體時(shí)間由時(shí)間定義語句‘timescale規(guī)定的時(shí)間刻度所決定。
如果沒有定義時(shí)延值,缺省時(shí)延為0。例:
not#4gate1(out,in);//延時(shí)時(shí)間為4的非門
and#(5,7)gate2(out,a,b)//與門的上升延時(shí)為5,下降延時(shí)為7or#5gate3(out,a,b)//或門的上升、下降延時(shí)都為5
bufif0#(3,4,6)gate(out,in,enable)
//三態(tài)門的上升時(shí)延為3,下降時(shí)延為4,高阻時(shí)延為6
assign#(50)out=a+b;//a或b發(fā)生變化,到out發(fā)生變化的時(shí)間為5011.3.2延時(shí)的表示與延時(shí)說明塊
Verilog可對(duì)程序模塊中某一指定的路徑進(jìn)行延遲定義。
這一路徑連接模塊的輸入端口(或inout端口)與輸出端口(或inout端口)。在延遲定義塊中要描述模塊中的不同路徑并給這些路徑賦值。延遲定義塊的內(nèi)容應(yīng)放在關(guān)鍵字specify與endspecify之間,且必須放在一個(gè)模塊中。2.延時(shí)說明塊(specify塊)例:moduledelay(out,a,b,c);inputa,b,c;outputout;anda1(n1,a,b);oro1(out,c,n1);
specify(a=>out)=2;(b=>out)=3;(c=>out)=1;
endspecify
endmodule
2.延時(shí)說明塊(specify塊)cabout11.4數(shù)字電路的仿真
11.4.1測(cè)試平臺(tái)(TestBanch)1.概念
為測(cè)試或仿真一個(gè)verilog程序而搭建的一個(gè)平臺(tái)。平臺(tái)的核心是一個(gè)用于產(chǎn)生仿真激勵(lì)信號(hào)給被測(cè)程序模塊,同時(shí)調(diào)用系統(tǒng)函數(shù)顯示仿真結(jié)果的verilog仿真測(cè)試程序。配合仿真軟件提供的環(huán)境和其他工具,構(gòu)成一個(gè)仿真測(cè)試的平臺(tái)。11.4.1測(cè)試平臺(tái)(TestBanch)測(cè)試平臺(tái)仿真程序被測(cè)模塊激勵(lì)信號(hào)(reg)激勵(lì)向量輸入端口輸出端口顯示信號(hào)(wire)輸出顯示波形或打印顯示2.仿真測(cè)試程序的特點(diǎn)及要求◆測(cè)試模塊只有模塊名字,沒有端口列表;◆輸入信號(hào)(激勵(lì)信號(hào))必須定義為reg型,以保持信號(hào)值;輸出信號(hào)(顯示信號(hào))必須定義為wire型;◆在測(cè)試模塊中調(diào)用被測(cè)試模塊,在調(diào)用時(shí),應(yīng)注意端口排列的順序與模塊定義時(shí)一致;◆一般用initial、always過程塊來定義激勵(lì)信號(hào)波形;使用系統(tǒng)任務(wù)和系統(tǒng)函數(shù)來定義輸出顯示格式;◆在激勵(lì)信號(hào)的定義中,可使用如下一些控制語句:
if-else,for,forever,case,while,repeat,
wait,disable,force,release,begin-end,
fork-join等,這些控制語句一般只用在always、
initial、function、task等過程塊中。
11.4.1測(cè)試平臺(tái)(TestBanch)11.4.1測(cè)試平臺(tái)(TestBench)測(cè)試程序的一般結(jié)構(gòu)數(shù)據(jù)類型說明//激勵(lì)信號(hào)reg型//輸出顯示信號(hào)wire型intergerparameter調(diào)用被測(cè)試模塊激勵(lì)信號(hào)定義(always、initial等)顯示格式定義($monitor等)module仿真模塊名//無端口列表激勵(lì)波形的產(chǎn)生例11.13用initial語句產(chǎn)生激勵(lì)波形`timescale1ns/1nsmodulewytest;reg
a,b,c;initialbegina=0;b=1;c=0;#100c=1;#100a=1;b=0;#100a=0;#100c=0;#100$finish;endinitial$monitor($time,,,"a=%db=%dc=%d",a,b,c);endmodule例11.14用always語句產(chǎn)生時(shí)鐘波形激勵(lì)波形的產(chǎn)生`timescale1ns/1nsmodulewytest;reg
clk;parameterCYCLE=100;always#(CYCLE/2)clk=~clk;initialclk=1;endmodule11.4.2組合電路的仿真
`timescale10ns/1nsmodulemult_tp;//測(cè)試模塊的名字reg[7:0]a,b; //測(cè)試輸入信號(hào)定義為reg型wire[15:0]out; //測(cè)試輸出信號(hào)定義為wire型integeri,j;mult8m1(out,a,b); //調(diào)用測(cè)試對(duì)象initial //激勵(lì)波形設(shè)定begin a=0;b=0;for(i=1;i<255;i=i+1)#10a=i;end
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- XX區(qū)關(guān)于2025年度非物質(zhì)文化遺產(chǎn)保護(hù)工作的總結(jié)報(bào)告
- 深度解析(2026)《GBT 20564.1-2017汽車用高強(qiáng)度冷連軋鋼板及鋼帶 第1部分:烘烤硬化鋼》
- 生活質(zhì)量核心維度的多學(xué)科干預(yù)策略
- 深度解析(2026)《GBT 19713-2025網(wǎng)絡(luò)安全技術(shù) 公鑰基礎(chǔ)設(shè)施 在線證書狀態(tài)協(xié)議》
- 深度解析(2026)《GBT 19481-2004飯店業(yè)職業(yè)經(jīng)理人執(zhí)業(yè)資格條件》
- 生命末期兒童譫妄癥狀的倫理控制方案
- 深度解析(2026)《GBT 19368-2003草坪草種子生產(chǎn)技術(shù)規(guī)程》
- 天然氣項(xiàng)目負(fù)責(zé)人面試考核要點(diǎn)詳解
- 營銷活動(dòng)策劃面試題及答案
- 政府機(jī)構(gòu)財(cái)務(wù)部門主任職務(wù)簡介及面試題分析
- JJG 270-2008血壓計(jì)和血壓表
- 檢驗(yàn)檢測(cè)行業(yè)市場(chǎng)概況分析報(bào)告
- 蘇科版物理八年級(jí)上冊(cè)同步練習(xí)
- 節(jié)溫器的工作原理與檢修課件
- 注冊(cè)會(huì)計(jì)師CPA2022年《審計(jì)》科目考試真題與答案解析
- 《家國情懷》的主題班會(huì)
- petrel操作指南精講
- 高效能人士提高辦事效率七個(gè)習(xí)慣學(xué)員
- 2019國家安全知識(shí)競(jìng)賽試題試題及答案大全(共471題)
- 高中英語語法專項(xiàng) 詞性轉(zhuǎn)換(構(gòu)詞法)練習(xí)試題高考例句
- 合成生物學(xué)與基因回路課件
評(píng)論
0/150
提交評(píng)論