我了解了 Verilog 中阻塞语句和非阻塞语句之间的基本区别。但我仍然无法理解&何时何地使用阻塞和非阻塞语句会发生什么。例如,考虑简单的 d ff 代码:
module dff (clk, reset,d, q, qb);
input clk;
input reset;
input d;
output q;
output qb;
reg q;
assign qb = ~q;
always @(posedge clk or posedge reset)
begin
if (reset) begin
// Asynchronous reset when reset goes high
q <= 1'b0;
end else begin
// Assign D to Q on positive clock edge
q <= d;
end
end
endmodule
Run Code Online (Sandbox Code Playgroud)
但是如果我使用两段编码技术编写完全相同的逻辑:
module dff(input wire d,
clk,
reset,
en,
output wire q);
reg …Run Code Online (Sandbox Code Playgroud)