Verilog 具有内部分配延迟的阻塞语句和非阻塞语句之间的差异
以下两段verilog代码之间有什么区别 (一) 及 (二)Verilog 具有内部分配延迟的阻塞语句和非阻塞语句之间的差异,verilog,blocking,nonblocking,Verilog,Blocking,Nonblocking,以下两段verilog代码之间有什么区别 (一) 及 (二) 始终@(在中) out在#5延迟启动之前,当in切换时,它们产生不同的输出。无论中的切换速度有多快,非阻塞分配始终会将中的延迟#5 操场上的例子。请注意sim卡输出中的差异 out=#5英寸在5个时间单位内阻止下一个操作。它将阻止监控下一个@(in),直到5个时间单位过去。如果在分配前后添加$display语句,您将看到5个时间单位已过去 always @(in) begin $display("enter @ %0t"
始终@(在中)
out在#5
延迟启动之前,当in
切换时,它们产生不同的输出。无论
中的切换速度有多快,非阻塞分配始终会将中的延迟#5
操场上的例子。请注意sim卡输出中的差异
out=#5英寸代码>在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 out=in
与#5完全相同,语句前面的延迟始终被视为阻塞语句。基本上Verilog推断出分号<代码>#5 out…
与#5相同;输出…
。阻塞(=
)和非阻塞(
always@(in)
out <= #5 in;
always @(in) begin
$display("enter @ %0t",$realtime);
out = #5 in;
$display("exit @ %0t",$realtime);
end
/*******************
* Example output:
* enter @ time 10
* exit @ time 15
*******************/
always @(in) begin
$display("enter @ %0t",$realtime);
out <= #5 in;
$display("exit @ %0t",$realtime);
end
/*******************
* Example output:
* enter @ time 10
* exit @ time 10
*******************/