1、连续赋值,例,assign a=b;不能在过程块中使用。
2、过程阻塞性赋值,例,always@(*) a=b;只能在过程块中使用。
3、过程非阻塞性赋值,例,always@(posedge clk) a<=b;同样只能在过程块中使用。
例:
module top_module(
input clk,
input a,
input b,
output wire out_assign,
output reg out_always_comb,
output reg out_always_ff );
assign out_assign = a ^ b;
always@(*) out_always_comb = a ^ b;
always@(posedge clk) out_always_ff <= a ^ b;
endmodule
仿真结果如下图
out_always_ff慢了一个时钟周期是因为上升沿才触发赋值