https://blog.csdn.net/fzr_en/article/details/89552323 侵刪
阻塞賦值:前面語句執行完,纔可執行下一條語句;即:前面語句的執行(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:時序邏輯,使用“非阻塞賦值”。