3210塊5個時間單位的下一個操作。它會阻止監控下一個@(in)
,直到5個時間單位過去。如果您在分配前後添加$display
聲明,則會看到5個時間單位已過。
always @(in) begin
$display("enter @ %0t",$realtime);
out = #5 in;
$display("exit @ %0t",$realtime);
end
/*******************
* Example output:
* enter @ time 10
* exit @ time 15
*******************/
out <= #5 in;
時間表的分配發生在未來的5個時間單位,並允許下一個操作開始,而無需等待任務完成。
always @(in) begin
$display("enter @ %0t",$realtime);
out <= #5 in;
$display("exit @ %0t",$realtime);
end
/*******************
* Example output:
* enter @ time 10
* exit @ time 10
*******************/
工作示例在EDA遊樂場:http://www.edaplayground.com/s/6/114
謝謝你的解釋,它幫助!相關問題:#5 out = in;'與'#5 out <= in;'完全相同嗎?我用你的edaplayground的例子試了一下,他們似乎給出了相同的入口 - 出口時間(也是'out'的相同波形)。不過,我想知道是否還有其他差異。 – dhrumeel
語句的延遲前面總是被視爲阻塞語句。基本上Verilog推斷分號; '#5 out ...'與#5相同;出... ...。阻塞('=')和非阻塞('<=')差異仍然適用:http://stackoverflow.com/questions/4653284/how-to-interpret-blocking-vs-non-blocking-assignments-in-的Verilog – Greg