在 verilog 中生成自定义波形
Generate custom waveform in verilog
我正在尝试使用下面的代码在 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=15 时相对于 t=0 为 0,并且不是 t=8(即之前的声明)。
有办法吗?我试过交换阻塞和非阻塞分配,但没有成功!
谢谢,
开发
你可以这样做:
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
这将 内部分配延迟 与非阻塞分配一起使用。
我正在尝试使用下面的代码在 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=15 时相对于 t=0 为 0,并且不是 t=8(即之前的声明)。
有办法吗?我试过交换阻塞和非阻塞分配,但没有成功!
谢谢,
开发
你可以这样做:
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
这将 内部分配延迟 与非阻塞分配一起使用。