Verilog HDL提供了兩種類型的顯式時(shí)序控制:一種是延遲控制,即定義執(zhí)行語(yǔ)句的延遲時(shí)間;另一種是事件控制,只有當(dāng)某一事件發(fā)生時(shí)才允許該語(yǔ)句繼續(xù)向下執(zhí)行。
Verilog仿真時(shí),仿真時(shí)間由以下四種形式進(jìn)行控制:
(1)定義過的門級(jí)或線傳輸延遲
(2)由#符號(hào)引入的延遲控制
(3)由@符號(hào)引入的事件控制
(4)等待語(yǔ)句
其中形式1是由門級(jí)器件來決定的,無須討論。
1、延遲控制#
Verilog延遲控制格式為:
# expression
延遲時(shí)間由expression的值確定。
example1:
module delay; reg[1:0] r; initial #70 $stop; initial begin : b1 #10 r=1; #20 r=1; #30 r=1; end initial begin : b2 #5 r=2; #20 r=2; #30 r=2; end always @r begin $display(“r=%0d at time %0d”,r,$time); end endmodule
執(zhí)行結(jié)果如下:
r=2 at time 5 r=1 at time 10 r=2 at time 25r=1 at time 30 r=2 at time 55 r=1 at time 60
在賦值語(yǔ)句中使用:
current_state=#clock_period next_state;
2、事件控制
一個(gè)事件可以通過運(yùn)行表達(dá)式:-》event變量來被激發(fā)。
事件變量的聲明:
event var;
event觸發(fā)為:
-》var;
捕獲觸發(fā)為:
@(var);
在賦值語(yǔ)句中使用:
current_state=@(posedge clock) next_state;
3、等待語(yǔ)句
wait(expression)
當(dāng)?shù)却谋磉_(dá)式為假則中斷運(yùn)行,知道表達(dá)式變?yōu)檎妗?/p>
4、延遲定義模塊
Verilog可以對(duì)模塊中某一指定的路徑進(jìn)行延遲定義,延遲定義塊內(nèi)容要放在specify和endspecify之間,延遲定義塊是一個(gè)獨(dú)立的塊結(jié)構(gòu),不在任何其他模塊(如initial或always)內(nèi)出現(xiàn),在定義塊內(nèi)使用specparam關(guān)鍵字定義參數(shù)。
(1)并行連接:每條路徑都有一個(gè)源域和一個(gè)目標(biāo)域,每一位對(duì)應(yīng)相連(向量位數(shù)相同)。
(source=》destination)=《delay_value》;
(2)全連接:位對(duì)位連接,源和目標(biāo)位數(shù)不必相同(源域的每一位和目標(biāo)域的每一位分別相連)。
(source*》destination)=《delay_vaule》;
編輯:jq
-
仿真
+關(guān)注
關(guān)注
52文章
4252瀏覽量
135511 -
Verilog
+關(guān)注
關(guān)注
29文章
1366瀏覽量
112018 -
HDL
+關(guān)注
關(guān)注
8文章
330瀏覽量
47916
原文標(biāo)題:Verilog HDL語(yǔ)言(4):時(shí)序控制
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

一文詳解Verilog HDL

淺談Verilog和VHDL的區(qū)別

Verilog與VHDL的比較 Verilog HDL編程技巧
數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL
Verilog HDL的基礎(chǔ)知識(shí)

FPGA Verilog HDL代碼如何debug?
防雷器件一般有哪兩種類型
FPGA Verilog HDL有什么奇技巧?
如何在兩種類型的SOT663封裝之間進(jìn)行協(xié)同布局

評(píng)論