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