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