Altifigence Academy

28 / 36 · 概念

切片與串接

追蹤串接位元如何對應至新暫存器。

學習目標

  • 追蹤串接位元如何對應至新暫存器。

大括號表示串接而非加法

q<={q[1:0],din} 將位元並排。切片 01 與 din=1 得 011,不是數值 1+1。右側皆讀取舊 q,一個邊緣不會先寫 q[0],再把新值連續複製至 q[1]、q[2]。

RTL 程式碼節錄
always_ff @(posedge clk)
    if (rst) q <= 3'b000;
    else q <= {q[1:0], din};
新位置來源
q[2]舊 q[1]
q[1]舊 q[0]
q[0]邊緣時的 din

順序改變就改變方向

{din,q[2:1]} 將輸入放最高位。寬度相同但方向不同,語法有效不代表電路等價。代入 q=101、din=1,原式得 011,反向式得 110,可用手算案例找出方向錯誤。

自己試試看

q=010、din=0,{q[1:0],din} 是什麼?

查看解說

在切片 10 後接 0,得到 100;舊 q[2] 不被使用。

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