28 / 36 · 概念
スライスと連結
連結したビットが新しいレジスタに入る順を追います。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
学習目標
- 連結したビットが新しいレジスタに入る順を追います。
中括弧は加算ではなく連結
q<={q[1:0],din}はビットを横に並べます。スライス01とdin=1なら011です。右辺はすべて古いqを読み、一つのエッジで新しいdinを何段も先へコピーするわけではありません。
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]は使いません。
✓ 学習済み