Verilog HDL提供了兩種類型的顯式時序控制:一種是延遲控制,即定義執行語句的延遲時間;另一種是事件控制,只有當某一事件發生時才允許該語句繼續向下執行。
Verilog仿真時,仿真時間由以下四種形式進行控制:
(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
執行結果如下:
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、事件控制
一個事件可以通過運行表達式:-》event變量來被激發。
事件變量的聲明:
event var;
event觸發為:
-》var;
捕獲觸發為:
@(var);
在賦值語句中使用:
current_state=@(posedge clock) next_state;
3、等待語句
wait(expression)
當等待的表達式為假則中斷運行,知道表達式變為真。
4、延遲定義模塊
Verilog可以對模塊中某一指定的路徑進行延遲定義,延遲定義塊內容要放在specify和endspecify之間,延遲定義塊是一個獨立的塊結構,不在任何其他模塊(如initial或always)內出現,在定義塊內使用specparam關鍵字定義參數。
(1)并行連接:每條路徑都有一個源域和一個目標域,每一位對應相連(向量位數相同)。
(source=》destination)=《delay_value》;
(2)全連接:位對位連接,源和目標位數不必相同(源域的每一位和目標域的每一位分別相連)。
(source*》destination)=《delay_vaule》;
編輯:jq
-
仿真
+關注
關注
50文章
4124瀏覽量
133878 -
Verilog
+關注
關注
28文章
1351瀏覽量
110268 -
HDL
+關注
關注
8文章
328瀏覽量
47433
原文標題:Verilog HDL語言(4):時序控制
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論