Verilog HDL 中的惯性延迟
Inertial delay in Verilog HDL
我找到了两个不同的来源,它们以两种不同的方式解释了 Verilog HDL 中的惯性延迟。
1) 第一个表示任何短于指定延迟的输入信号都将被忽略。
2) 第二个表示,如果输入之一发生变化,将在预定时间使用 that[=29= 处的输入信号值评估输出信号] 时间。
例如:考虑延迟缓冲区
assign #4 out = in;
initial
begin
in = 0;
#5 in = 1;
#1 in = 0;
#1 in = 1;
end
如果我们监控信号,这将导致
0 5 6 7 8 9 10 11
| | | | | | | |
__ _________________
in _________| |__|
_____
out1) XXXXXXX____________________|
___________
out2) XXXXXXX______________|
out1)忽略了"up"中输入的(5,6)脉冲和"down"状态中的(6,7)脉冲时间太短,只有1个时间单位。但是后来 "in" 熬夜了足够长的时间 (7,11),因此在 11 点时发生了变化。
out2) 计划在时间步 9 进行评估,因为输入在时间 5 发生变化。类似地,在时间 10 和 11 时 "in" 分别在时间 6 和 7 发生变化。因此,在第 9、10 和 11 时刻,"out" 在这些时刻取 "in" 的当前值,在这种情况下始终是 "up"。
哪个评价是对的?
我找到了两个不同的来源,它们以两种不同的方式解释了 Verilog HDL 中的惯性延迟。
1) 第一个表示任何短于指定延迟的输入信号都将被忽略。
2) 第二个表示,如果输入之一发生变化,将在预定时间使用 that[=29= 处的输入信号值评估输出信号] 时间。
例如:考虑延迟缓冲区
assign #4 out = in;
initial
begin
in = 0;
#5 in = 1;
#1 in = 0;
#1 in = 1;
end
如果我们监控信号,这将导致
0 5 6 7 8 9 10 11
| | | | | | | |
__ _________________
in _________| |__|
_____
out1) XXXXXXX____________________|
___________
out2) XXXXXXX______________|
out1)忽略了"up"中输入的(5,6)脉冲和"down"状态中的(6,7)脉冲时间太短,只有1个时间单位。但是后来 "in" 熬夜了足够长的时间 (7,11),因此在 11 点时发生了变化。
out2) 计划在时间步 9 进行评估,因为输入在时间 5 发生变化。类似地,在时间 10 和 11 时 "in" 分别在时间 6 和 7 发生变化。因此,在第 9、10 和 11 时刻,"out" 在这些时刻取 "in" 的当前值,在这种情况下始终是 "up"。
哪个评价是对的?