用于阻塞分配的verilog硬件解释
硬件是否以相同的方式解释两个verilog代码 非阻塞代码:用于阻塞分配的verilog硬件解释,verilog,Verilog,硬件是否以相同的方式解释两个verilog代码 非阻塞代码: module nonblock (input logic clock); logic a, b, c; always @(posedge clock) begin a <= b; b <= c; end endmodule module block (input logic clock); logic a, b, c; always @(posedge clock) begi
module nonblock (input logic clock);
logic a, b, c;
always @(posedge clock)
begin
a <= b;
b <= c;
end
endmodule
module block (input logic clock);
logic a, b, c;
always @(posedge clock)
begin
a = b;
b = c;
end
endmodule
它们不会以同样的方式合成。使用阻塞分配的代码将在一行中创建两个触发器。使用非阻塞分配的代码只会在一个时钟周期内将a分配给c。您可以在模拟中验证这一点
这里有更多关于的信息,在这种情况下,您可能会得到相同的硬件,因为您用verilog描述的模型在这两种情况下的结果是相同的。在HDL中,您描述了一种应该发生的理想模型-您不是告诉合成器“使硬件像这样”,而是说“使硬件像我的模型那样工作”。如果你翻转a=b的顺序;b=c;然后,您将从每个硬件描述中获得不同的行为,因此不同的硬件“…将在一个时钟内将a分配给c…”不是。如果赋值顺序为b=c,则为;a=b;