我正在尝试使用下面的代码在verilog中生成波形,但结果不符合预期。
initial begin
d = 1'b0;
#8 d <= 1'b1;
#15 d <= 1'b0;
end
它的初始值为0(OK),在t = 8时为1(OK),但在t = 23时为0。相反,我希望相对于t = 0而不是t = 8,在t = 15时它为0。 (即先前的陈述)。
有办法吗?我尝试过交换阻塞和非阻塞分配,但是没有运气!
谢谢,
开发人员
您可以这样做:
initial fork
d = 1'b0;
#8 d = 1'b1;
#15 d = 1'b0;
join
所有的语句内fork join
将被执行并行。
或者,您可以这样做:
initial d = 1'b0;
initial #8 d = 1'b1;
initial #15 d = 1'b0;
显然,这三个初始块将同时执行。
如果您确实想从过程(顺序)代码中安排3个事件,则可以执行以下操作:
initial begin
d = 1'b0;
d <= #8 1'b1;
d <= #15 1'b0;
end
这将内部分配延迟与非阻塞分配一起使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句