Altifigence Academy

28 / 36 · 概念

スライスと連結

連結したビットが新しいレジスタに入る順を追います。

学習目標

  • 連結したビットが新しいレジスタに入る順を追います。

中括弧は加算ではなく連結

q<={q[1:0],din}はビットを横に並べます。スライス01とdin=1なら011です。右辺はすべて古いqを読み、一つのエッジで新しいdinを何段も先へコピーするわけではありません。

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]は使いません。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。