一、阻塞赋值(b=a):顺序执行
- 赋值语句执行完,块才结束
- b的值在赋值语句执行完后立刻改变
always@(posedge clk)
begin
b=a;
c=b;
end
clk上升沿到来时:b马上取a的值,c马上取b的值(即等于a)
效果:b=a; c=a
二、非阻塞赋值(b<=a):并行执行
- 上面语句所赋的变量值不能立即就为下面的语句所用
- 块结束后才能完成这次赋值操作,所赋的变量值是上一次赋值得到的
always@(posedge clk)
begin
b<=a;
c<=b;
end
定义了两个reg信号b和c,用到两个触发器;
clk信号的上升沿到来时,b就等于a,c就等于b
效果:b=a; c=b
总结:
组合逻辑的always块采用阻塞赋值;
时序逻辑的always块采用非阻塞赋值。