gpt4 book ai didi

verilog - 具有内部分配延迟的阻塞语句和非阻塞语句之间的区别

转载 作者:行者123 更新时间:2023-12-04 02:47:58 24 4
gpt4 key购买 nike

以下 2 段 verilog 代码有什么区别?

1)

always@(in)
out = #5 in;

2)

 always@(in)
out <= #5 in;

考虑到 always block 中没有其他行,输出会有什么不同吗?问题引用幻灯片 16(见 o5 和 o6 输出) http://www.sutherland-hdl.com/papers/1996-CUG-presentation_nonblocking_assigns.pdf

最佳答案

out = #5 in;阻塞下一个操作 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 Playground 的工作示例:http://www.edaplayground.com/s/6/114

关于verilog - 具有内部分配延迟的阻塞语句和非阻塞语句之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18455750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com