赋值语句

非阻塞赋值:b <= a

  • 所赋的变量值不能立即为下面的语句所用
  • 块结束后才能完成此次赋值操作,所赋的变量值是==上一次赋值==得到的
  • 常用于可综合时序逻辑模块

always @ (posedge clk) begin
    b <= a;
    c <= b;
end
此时always块结束后,c更新为b原来的值

阻塞赋值:b = a

  • 赋值语句执行完后,块才结束
  • b的值在赋值语句执行完后立刻改变
  • 在时序逻辑中使用时会产生意想不到的结果

always @ (posedge clk) begin
    b = a;
    c = b;
end
此时clk上升沿到来时b马上取a的值,c马上取b的值(=a)