Altifigence Academy

20 / 36 · 概念

以舊值計算新值

解讀非阻塞賦值及重設優先順序。

學習目標

  • 解讀非阻塞賦值及重設優先順序。

從舊狀態計算新狀態

count<=count+2'b01 的右側是更新前的值,若為 01,下一值為 10。非阻塞賦值 <= 將已計算的值排入非阻塞更新階段;多個暫存器同時更新時,也應分開舊值與新值。

RTL 程式碼節錄
always_ff @(posedge clk)
    if (rst) count <= 2'b00;
    else count <= count + 2'b01;

每個邊緣只走一個分支

if/else 只選一個分支。rst=1 就存 00,不會同一邊緣重設後再走增加分支成 01。手算表應列目前 count、rst、所選分支及下一 count,檢查優先順序與回繞。

自己試試看

count=11、rst=1 的上升緣結果為 00 還是 01?

查看解說

00,已選重設分支,不執行增加分支。

此選擇適用於本瀏覽器,隨時可從頁尾變更。