二者定義
在夏語聞老師《verilog數字系統設計教程》中對二者給出如下定義:
非阻塞賦值(b<=a):所賦的變數值不能立刻為下面語句所用,塊結束才能完成賦值操作,且所賦變數值是上一次賦值得到的
阻塞賦值(b=a):賦值語句執行完後塊才能結束,b的值在賦值語句執行完後立刻改變
一般在時序邏輯中使用非阻塞賦值<=,而在組合邏輯中使用阻塞賦值=
簡單例子說明
非阻塞賦值
波形模擬:
可以看到,在第一個上升沿時,雖然y的值立刻被賦值為a+b,但新的y的值並不能馬上參與到x的賦值中,x所賦值的y+a中的y依然是前一個時刻的y的值,直到第二個上升沿x的賦值中才為新的y值。
這也正好印證了上面所說,非阻塞賦值的變數不能馬上為下面所用!
阻塞賦值
tb同上
波形模擬:
這個現象就非常明顯了,當上升沿到來是,x、y的值立刻發生變化,且是新變化的y值參與到x的賦值中