阻塞與非阻塞賦值的區別,看完就理解了

2021-09-19 18:58:26 字數 774 閱讀 4279

阻塞賦值:前面語句執行完,才可執行下一條語句;即:前面語句的執行(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:時序邏輯,使用「非阻塞賦值」。

阻塞與非阻塞賦值

李秋鳳,華清遠見嵌入式學院 講師。稍微接觸過verilog hdl的都對阻塞與非阻塞賦值略知一二,也是我們經常強調的重點之一,在課堂上還是有學員問什麼不一樣呢,為什麼我用阻塞賦值也能得出正確的結果呢?在編寫可綜合 的時候,建議大家不要忘了開啟rtl網表檢視器看看我們自己綜合出來的電路是不是自己想要的...

阻塞與非阻塞的區別

簡單點說 阻塞就是幹不完不准回來,非阻塞就是你先乾,我現看看有其他事沒有,完了告訴我一聲 我們拿最常用的send和recv兩個函式來說吧.比如你呼叫send函式傳送一定的byte,在系統內部send做的工作其實只是把資料傳輸 copy 到tcp ip協議棧的輸出緩衝區,它執行成功並不代表資料已經成功...

阻塞與非阻塞的區別

簡單點說 阻塞就是幹不完不准回來,非阻塞就是你先乾,我現看看有其他事沒有,完了告訴我一聲 我們拿最常用的send和recv兩個函式來說吧.比如你呼叫send函式傳送一定的byte,在系統內部send做的工作其實只是把資料傳輸 copy 到tcp ip協議棧的輸出緩衝區,它執行成功並不代表資料已經成功...