シフトレジスタ
概要
- 目的: シフトレジスタは、バイナリデータを格納し、各クロックパルスで内容を1ビット位置ずつシフトする順序論理回路です。データを左右に移動でき、逐次的なデータ操作と格納を可能にします。
- シンボル: シフトレジスタは、データ(シリアルおよび場合によってはパラレル)、クロック、リセット、モード制御の入力と、格納/シフトされたデータの出力を持つ矩形ブロックで表されます。
- DigiSim.ioでの役割: デジタル回路設計において、シリアルとパラレル形式間のデータ変換、データ格納、信号処理アプリケーションに不可欠なコンポーネントとして機能します。

機能説明
論理動作
シフトレジスタは、各クロックパルスで指定された方向に格納ビットをシフトすることにより、バイナリデータを格納・操作します。タイプに応じて、シリアル(1ビットずつ)またはパラレル(全ビット同時)でデータをロードでき、シリアルまたはパラレル形式でデータを出力できます。
典型的な動作モード:
| モード制御 | 機能 | 説明 |
|---|---|---|
| 00 | 保持 | 現在の状態を維持 |
| 01 | 右シフト | ビットを右に移動、新ビットが左から入る |
| 10 | 左シフト | ビットを左に移動、新ビットが右から入る |
| 11 | パラレルロード | 全ビットを同時にロード |
真理値表の例(4ビットユニバーサルシフトレジスタ):
| CLK | DIR | S/L | SI | D3 | D2 | D1 | D0 | Q3 (Next) | Q2 (Next) | Q1 (Next) | Q0 (Next) | 備考 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | X | 1 | X | d3 | d2 | d1 | d0 | d3 | d2 | d1 | d0 | パラレルロード |
| ↑ | 0 | 0 | si | X | X | X | X | si | Q3 | Q2 | Q1 | 右シフト |
| ↑ | 1 | 0 | si | X | X | X | X | Q2 | Q1 | Q0 | si | 左シフト |
| ↓ | X | X | X | X | X | X | X | Q3 | Q2 | Q1 | Q0 | 変化なし |
注: ↑は立ち上がりクロックエッジ、↓は立ち下がりエッジ、Xはドントケア、siはシリアル入力、dnはパラレルデータ入力。Qnは現在の状態。
入力と出力
入力(合計8):
- SI(シリアル入力): シリアルデータ入力用の1ビット入力。
- CLK(クロック): 1ビット入力; 操作は立ち上がりエッジで発生。
- DIR(方向): 1ビット入力; S/Lが0のときシフト方向を制御(0 = 右、1 = 左)。
- S/L(シフト/ロード): 1ビット入力; モード制御(0 = シフト、1 = パラレルロード)。
- D0、D1、D2、D3: S/Lが1のときデータを同時にロードするための4つの1ビットパラレルデータ入力。
出力(合計5):
- Q0、Q1、Q2、Q3: レジスタの現在格納ビットを表す4つの1ビットパラレル出力。
- SO(シリアル出力): 1ビット出力。動作はシフト方向に依存:
- 右シフト時(DIR=0): SOは通常Q0を反映。
- 左シフト時(DIR=1): SOは通常Q3を反映。
設定可能なパラメータ
- ビット幅: シフトレジスタが格納できるビット数(通常4、8、16など)。
- シフト方向: レジスタが左、右、または双方向にシフトするかどうか。
- タイプ: レジスタの構成(SISO、SIPO、PISO、PIPO、またはユニバーサル)。
- クロックエッジ感度: レジスタが立ち上がりまたは立ち下がりクロックエッジに応答するかどうか。
- 伝搬遅延: トリガーイベント後に出力が変化するまでの時間。
DigiSim.ioでの視覚的表現
シフトレジスタは、左側にラベル付き入力(SI、D0-D3、CLK、DIR、S/L)、右側に出力(Q0-Q3、SO)を持つ矩形ブロックとして表示されます。クロック入力は通常、エッジ感度を示す三角形のシンボルで示されます。回路に接続すると、出力に表示される値と接続ワイヤの色の変化を通じて現在の状態を視覚的に示します。
教育的価値
主要概念
- 逐次データ処理: データをシーケンスで1ビットずつ処理する方法を実証します。
- シリアル-パラレル変換: 逐次データ形式と同時データ形式間の変換を示します。
- 時間的格納: デジタルシステムが時間経過とともにデータを格納・遅延する方法を示します。
- クロック動作: 同期デジタルシステムの理解を強化します。
- デジタル通信: デジタルデータ伝送の基本概念を紹介します。
学習目標
- 逐次データ格納と操作の原理を理解する。
- デジタルシステムがシリアルとパラレルデータ形式間でどのように変換するかを学ぶ。
- シフトレジスタの種類とそのアプリケーションを認識する。
- デジタル回路におけるデータ処理問題の解決にシフトレジスタの概念を適用する。
- デジタル通信プロトコルにおけるシフトレジスタの役割を理解する。
使用例/シナリオ
- シリアル通信: マイクロプロセッサのパラレルデータと伝送用シリアルデータ間の変換。
- 遅延線: 信号処理アプリケーション向けの精密なデジタル遅延の作成。
- データバッファリング: 処理前のデータビットの一時格納。
- パターン生成: テストやディスプレイ用の繰り返しビットパターンの作成。
- デジタルフィルタ: 信号処理用の有限インパルス応答(FIR)フィルタの実装。
- ディスプレイドライバ: 限られた制御線でLED/LCDマトリクスディスプレイを制御。
技術ノート
- シフトレジスタは通常Dフリップフロップを使用して実装され、格納ビットあたり1つのフリップフロップを持ちます。
- 最大動作周波数はフリップフロップチェーンの伝搬遅延によって制限されます。
- ユニバーサルシフトレジスタは最大の柔軟性を提供しますが、より多くの制御入力と内部論理が必要です。
- リニアフィードバックシフトレジスタ(LFSR)は、擬似乱数生成およびCRC計算に使用される特殊構成です。
- DigiSim.ioでは、シフトレジスタはシフト操作の明確な視覚的フィードバックを備えた典型的なエッジトリガ動作をモデル化します。
- 複数のシフトレジスタをカスケード接続して、単一コンポーネントが提供するよりも大きなデータ幅を処理できます。
シフトレジスタの種類
シリアル入力、シリアル出力(SISO)
- データが1ビットずつ入力され、1ビットずつ出力される
- 遅延線またはデジタルメモリ素子として機能
シリアル入力、パラレル出力(SIPO)
- データがシリアルで入力されるが、パラレルでアクセス可能
- シリアルからパラレルへの変換に使用
- 通信インターフェース(UART、SPI)で一般的
パラレル入力、シリアル出力(PISO)
- データがパラレルでロードされ、シリアルでシフトアウトされる
- パラレルからシリアルへの変換に使用
- データ伝送システムに不可欠
パラレル入力、パラレル出力(PIPO)
- データがパラレルで入出力される
- 一時格納を提供し、データをシフト可能
- システム間のデータバッファリングに使用
双方向シフトレジスタ
- データを左右にシフト可能
- 柔軟なデータ操作を実現
ユニバーサルシフトレジスタ
- 複数の動作モードをサポート(上記すべて)
- 制御入力により設定可能
- 最大の柔軟性を提供
動作モード
| モード制御 (S/L, DIR) | 機能 | 説明 |
|---|---|---|
| 1, X | パラレルロード | Q[3:0] = D[3:0] |
| 0, 0 | 右シフト | SI → Q3, Q3 → Q2, Q2 → Q1, Q1 → Q0 |
| 0, 1 | 左シフト | Q2 → Q3, Q1 → Q2, Q0 → Q1, SI → Q0 |
真理値表(4ビットユニバーサルシフトレジスタ)
| CLK | DIR | S/L | SI | D3 | D2 | D1 | D0 | Q3 (Next) | Q2 (Next) | Q1 (Next) | Q0 (Next) | 備考 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | X | 1 | X | d3 | d2 | d1 | d0 | d3 | d2 | d1 | d0 | パラレルロード |
| ↑ | 0 | 0 | si | X | X | X | X | si | Q3 | Q2 | Q1 | 右シフト |
| ↑ | 1 | 0 | si | X | X | X | X | Q2 | Q1 | Q0 | si | 左シフト |
| ↓ | X | X | X | X | X | X | X | Q3 | Q2 | Q1 | Q0 | 変化なし |
注: ↑は立ち上がりクロックエッジ、↓は立ち下がりエッジ、Xはドントケア、siはシリアル入力、dnはパラレルデータ入力。Qnは現在の状態。
特性
- ビット容量: 通常4、8、または16ビット(任意の長さが可能)
- シフト方向: 構成に応じて左/右/双方向
- クロック要件: クロックエッジでの同期動作
- タイミング: 伝搬遅延が最大シフト周波数を制限
- サンプリング: アクティブクロックエッジで入力データをサンプリング
- リセット動作: 通常全ビットをゼロにクリア
- プリセットオプション: 初期値への設定が可能なレジスタもある
- データフロー制御: イネーブル/ディセーブル機能を含む場合がある
- 電力要件: フリップフロップ数とクロック周波数に比例
アプリケーション
データ変換
- シリアルからパラレルおよびパラレルからシリアルへの変換
- シリアルバスとパラレルプロセッサ間のインターフェース
デジタル通信
- UART、SPI、I2Cインターフェース
- エンコード/デコード操作
- ビットフレーミングとデータフォーマット
信号処理
- デジタルフィルタ(FIRフィルタ)
- デジタル信号処理の遅延線
- 相関および畳み込み演算
データ格納
- 一時的なバッファ格納
- ビットパターン生成と認識
コンピューティングシステム
- CPUシフト/ローテート演算
- CRC生成と検査
- 擬似乱数シーケンス生成
ディスプレイシステム
- LED/LCDディスプレイ多重化
- スクロールディスプレイ
- ディスプレイパネルデータ配信
タイミングと制御
- シーケンス生成
- イベントタイミングと制御
実装
シフトレジスタは以下を使用して実装できます:
フリップフロップチェーン:
- Dフリップフロップ(最も一般的)
- JKフリップフロップ
- マスタースレーブ構成
集積回路:
- 74xxシリーズ:
- 7491: 8ビットSISO
- 74164: 8ビットSIPO
- 74165: 8ビットPISO
- 74194/74195: 4ビットユニバーサル/4ビットパラレルアクセス
- 74299: 8ビットユニバーサル
- 74xxシリーズ:
メモリベース:
- FIFOメモリ構成
- リングバッファ実装
- FPGAのシフトレジスタLUT
回路実装
基本的な4ビットシリアル入力、シリアル出力シフトレジスタ:
### シリアル入力シリアル出力(SISO)シフトレジスタ
```mermaid
graph LR
SIN[Serial In] --> FF0[D FF0]
CLK[Clock CLK] --> FF0
FF0 -->|Q0| FF1[D FF1]
CLK --> FF1
FF1 -->|Q1| FF2[D FF2]
CLK --> FF2
FF2 -->|Q2| FF3[D FF3]
CLK --> FF3
FF3 -->|Q3| SOUT[Serial Out]
関連コンポーネント
- レジスタ: 汎用データ格納
- カウンタ: パルスをカウントする順序回路
- フリップフロップ: シフトレジスタの基本的なビルディングブロック(D、JK)
- マルチプレクサ: ユニバーサルシフトレジスタ設計でよく使用される
- シリアル通信インターフェース: UART、SPI、I2C
- リニアフィードバックシフトレジスタ: 擬似乱数シーケンス生成用
- バレルシフタ: 1サイクルでのマルチビットシフト用
- FIFO/LIFOバッファ: 高度なデータ格納構造
- デジタルフィルタ: 遅延線実装にシフトレジスタを使用
- シーケンス検出器: パターン認識回路