38 / 63 · 概念
シフトレジスタの状態方程式
ビット移動をベクトルの状態遷移で表し、記憶長と出力遅延を結び付けます。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
複数のフリップフロップを一緒に読む
N ビットシフトレジスタレジスタ 複数ビットの状態を記憶する回路です。このコースの同期式レジスタは、クロックエッジで定められた入力を記憶します。 詳しく見るで新しい入力 d を bit 0 に入れると、次状態は次のようになります。
中括弧は RTL の連結演算連結演算 ビット列を横につなげる演算です。結果幅はオペランド幅の合計で、数値の足し算とは異なります。 詳しく見るです。各ビットは同じ以前の状態を読むので、一エッジで d がレジスタ全体を通過しません。enable=0 ならベクトル全体を保持し、reset なら指定した初期ベクトルへ変えます。
下の各列は立上りエッジ立上りエッジ クロックが 0 から 1 に変わる瞬間です。CLK=1 の区間全体を指すレベルとは区別します。 詳しく見るの記録です。入力はエッジ直前、「更新後」の状態は更新直後です。並びはサンプル順で、物理的な伝搬遅延伝搬遅延 入力が変わってから、出力が正しい値に安定するまでの時間です。論理式の等価性と時間特性は別の性質です。 詳しく見るではありません。初期 q=000 から din=1 を一回、0 を三回入れます。1 のビットが q0→q1→q2 と移り、その後消えます。
波形データを表示
| 信号 | 波形 | バスの値 |
|---|---|---|
| din | 10.. | |
| 更新後 q2 | 0.10 | |
| 更新後 q1 | 010. | |
| 更新後 q0 | 10.. | |
| 更新後 q | 2345 | 001 → 010 → 100 → 000 |
din=1 で一回進め、その後 din=0 で三回進めてください。001→010→100→000 を確認できます。入力を変えた瞬間には現在の q は変わらず、次のエッジの期待値だけが変わります。
同期 reset は enable より優先されます。enable=0 なら保持中の値を維持します。 q=000; q_next = (2q + din) mod 8
連結式を数値式にして確認する
unsignedunsigned ビット列を非負整数として解釈する規則です。n ビットの範囲は 0 から 2^n−1 で、同じビット列の signed 解釈と異なる場合があります。 詳しく見る ベクトルとして解釈すると、同じ遷移は次の式です。
N=3、Q=5(101)、d=1 なら 、 なので次は 011 です。この数値式は連結式とは別形式の参照モデルになり、実装検証に役立ちます。
何を記憶しているか
古いビットは最大インデックスへ移り、新しいビットは最小インデックスに入ります。十分な有効入力の後には「現在と直前 N-1 個の入力」を保持します。同じ構造をパターン検出・簡単な遅延線・シリアル/パラレル変換に使えます。
記憶長を増やしても、一サイクルに処理できるビット数は増えません。この構造は一つの有効エッジで一ビットを受け入れます。並列入力・複数ビットの移動・ready/validハンドシェイク 送信側の valid と受信側の ready が同じエッジでともに 1 のときに転送を確定する取り決めです。待機中のデータ保持規則も含みます。 詳しく見る の停止には、それぞれ別のデータパスと制御条件が必要です。
自分で考えてみましょう
N=4、現在 Q=1101、入力 d=0 です。連結式と数値式で次の Q を計算してください。
解説を見る
連結式は {101,0}=1010 です。数値式は で同じ結果です。以前の最上位ビット 1 は記憶範囲の外へ出ます。