阻塞賦值:前面語句執行完,才可執行下一條語句;即:前面語句的執行(b=a)阻塞了后面語句的執行(c=b)。即:always塊內,2條語句順序執行。
```
always @(posedge i_clk)
begin
b = a;
c = b;
end
```
注意:a的值賦給b,b的值賦給c,是在同一個時鐘上升沿完成,如下圖仿真結果。

非阻塞賦值:always塊內,2條語句同時執行。即:前面語句的執行(b=a)不會阻塞后面語句的執行(c=b)。
```
always @(posedge i_clk)
begin
b <= a;
c <= b;
end
```
注意:第1個clk上升沿a的值賦給b,此時b的值還沒有更新;第2個clk上升沿,b的值賦給c,此時c才能獲得b更新后的值。所以c獲得a的值,需要2個clk完成。如下圖仿真結果。
總結:
1:組合邏輯,使用 “阻塞賦值”。
2:時序邏輯,使用“非阻塞賦值”。