1. ** 阻塞賦值(=)** :阻塞賦值操作實質上是一次性連續完成的,即計算等號右邊變量(或表達式)的值(RHS)并立即賦值給等號左邊的變量(LHS)。其中阻塞的含義為在同一個always塊中,當前賦值語句正在執行時禁止其后的所有其他賦值語句的執行。只有當前賦值語句執行完成后,其后的賦值語句才能被執行。
*****
2. ** 非阻塞賦值(<=)** :非阻塞賦值操作實質上是分兩步完成的,
第一步:在敏感事件開始時刻(如clk正跳變沿開始時刻)開始計算等號右邊變量(或表達式)的值RHS;
第二步:在敏感事件結束時刻(如clk正跳變沿結束時刻)將等號右邊的值賦給等號左邊的變量LHS。其中非阻塞的含義為在執行當前的非阻塞賦值語句的同時允許其他的語句執行。
由以上執行過程知,二者主要區別為:等號右邊的變量值是否立即得到更新;賦值語句執行期間是否允許其他語句執行。
**阻塞賦值可能帶來電路的競爭冒險從而使輸出不確定**