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仍在块中第二个赋值的右侧保留其原始值。