(12)非阻塞賦值與阻塞賦值區別(以簡單例子說明)

xuxuxu69發表於2024-09-04

二者定義

在夏語聞老師《verilog數字系統設計教程》中對二者給出如下定義:

非阻塞賦值(b<=a):所賦的變數值不能立刻為下面語句所用,塊結束才能完成賦值操作,且所賦變數值是上一次賦值得到的

阻塞賦值(b=a):賦值語句執行完後塊才能結束,b的值在賦值語句執行完後立刻改變

一般在時序邏輯中使用非阻塞賦值<=,而在組合邏輯中使用阻塞賦值=

簡單例子說明

非阻塞賦值



波形模擬:

可以看到,在第一個上升沿時,雖然y的值立刻被賦值為a+b,但新的y的值並不能馬上參與到x的賦值中,x所賦值的y+a中的y依然是前一個時刻的y的值,直到第二個上升沿x的賦值中才為新的y值。
這也正好印證了上面所說,非阻塞賦值的變數不能馬上為下面所用!

阻塞賦值


tb同上
波形模擬:

這個現象就非常明顯了,當上升沿到來是,x、y的值立刻發生變化,且是新變化的y值參與到x的賦值中

相關文章