verilog 非阻塞分配


本文向大家介绍verilog 非阻塞分配,包括了verilog 非阻塞分配的使用技巧和注意事项,需要的朋友参考一下

示例

非阻塞分配(<=)用于边缘敏感always块内部的分配。在一个块内,新值只有在处理完整个块后才可见。例如:

module flip(
    input clk,
    input reset
)
reg f1;
reg f2;

always @ (posedge clk) begin
  if (reset) begin // 同步复位
    f1 <= 0;
    f2 <= 1;
  end
  else begin
    f1 <= f2;
    f2 <= f1;
  end
end
endmodule

请注意<=此处使用了非阻塞()分配。由于第一个赋值直到在程序块之后才真正生效,因此第二个赋值会按预期执行并实际上交换两个变量-与阻塞赋值(=)或其他语言的赋值不同;f1仍在块中第二个赋值的右侧保留其原始值。