レジスタ
概要
- 目的: レジスタは、複数ビットのバイナリデータを格納するデジタルストレージコンポーネントです。1ビットを格納する単一のフリップフロップとは異なり、レジスタは完全なバイナリワードを格納するために複数のフリップフロップで構成されています。
- シンボル: レジスタは、4つのデータ入力(D0-D3)、クロック入力(CLK)、ロードイネーブル(LD)、クリア(CLR)、4つのデータ出力(Q0-Q3)を持つ矩形ブロックで表されます。
- DigiSim.ioでの役割: デジタルシステムにおける基本的な順序論理ビルディングブロックとして機能し、処理操作中のバイナリ情報の一時的な格納を提供します。

機能説明
論理動作
レジスタは、クロック信号によってトリガーされたとき、データ入力に存在する値をキャプチャして格納します。格納された値は、次のクロックトリガーまたはリセット/クリア信号が適用されるまで変更されません。
真理値表(4ビットレジスタ):
| CLR | LD | CLK | D[3:0] | Q[3:0] (次の状態) | 動作 |
|---|---|---|---|---|---|
| 1 | X | X | xxxx | 0000 | 非同期クリア |
| 0 | 1 | ↑ | abcd | abcd | 同期ロード |
| 0 | 0 | ↑ | xxxx | Q (prev) | 保持(ロードなし) |
| 0 | X | 0 | xxxx | Q (prev) | 保持(クロックエッジなし) |
注: ↑は立ち上がりクロックエッジ、Xは「ドントケア」、"prev"は前の状態を意味します。CLRはアクティブHIGHかつ非同期で、CLKに関係なく即座にレジスタをリセットします。データはLD=1の立ち上がりクロックエッジでのみロードされます。
入力と出力
入力(合計7):
- D0: Pin 0。データ入力ビット0(LSB)。
- D1: Pin 1。データ入力ビット1。
- D2: Pin 2。データ入力ビット2。
- D3: Pin 3。データ入力ビット3(MSB)。
- CLK: Pin 4。クロック入力 — LDがHIGHのとき立ち上がりエッジでデータがロードされます。
- LD(ロード): Pin 5。ロードイネーブル — 立ち上がりクロックエッジでHIGHのとき、データ入力がレジスタにラッチされます。
- CLR(クリア): Pin 6。非同期クリア — クロックに関係なくHIGHのとき全格納ビットをゼロにリセットします。
出力(合計4):
- Q0: Pin 0。出力ビット0(LSB)。
- Q1: Pin 1。出力ビット1。
- Q2: Pin 2。出力ビット2。
- Q3: Pin 3。出力ビット3(MSB)。
設定可能なパラメータ
- ビット幅: レジスタが格納できるビット数(通常4、8、16など)。
- クロックエッジ感度: レジスタが立ち上がりまたは立ち下がりクロックエッジに応答するかどうか。
- 非同期と同期制御: クリアおよびその他の制御信号がクロックに対してどのように動作するか。
- 伝搬遅延: トリガーイベント後に出力が変化するまでの時間。
DigiSim.ioでの視覚的表現
レジスタは、左側にラベル付き入力(D[n:0]、CLK、CLRなど)、右側に出力(Q[n:0])を持つ矩形ブロックとして表示されます。クロック入力は通常、エッジ感度を示す三角形のシンボルで示されます。回路に接続すると、出力に表示される値と接続ワイヤの色の変化を通じて現在の状態を視覚的に示します。
教育的価値
主要概念
- データ格納: デジタル回路が複数ビットの情報を格納する方法を実証します。
- 同期動作: クロック信号によってトリガーされる動作の概念を示します。
- 記憶素子: コンピュータメモリシステムの基本的なビルディングブロックを紹介します。
- バイナリワード処理: コンピュータが個々のビットではなくマルチビットデータワードを処理する方法を示します。
- 状態保持: デジタルシステムがクロックサイクル間で状態を維持する方法を実証します。
学習目標
- レジスタがクロックサイクルにわたってバイナリデータを格納・維持する方法を理解する。
- 順序回路におけるクロック信号とデータキャプチャの関係を学ぶ。
- データ処理および一時格納におけるレジスタの役割を認識する。
- カウンタやシフトレジスタのようなより複雑な順序回路の設計にレジスタの概念を適用する。
- 組合せ論理(記憶なし)と順序論理(状態を保持する)の違いを理解する。
使用例/シナリオ
- データ格納: CPUにおける計算結果の一時的な保持。
- アドレスレジスタ: フェッチ実行サイクル中のメモリアドレスの格納。
- データバッファ: 異なる速度で動作するシステム間のインターフェース境界でのデータ保持。
- 命令レジスタ: CPUにおける現在の命令の格納。
- パイプラインステージ: パイプラインアーキテクチャにおける逐次処理ステージの作成。
- パラレル-シリアル変換: ビット単位のシリアル伝送のためのパラレルデータ格納。
技術ノート
- レジスタは通常Dフリップフロップを使用して実装され、格納ビットあたり1つのフリップフロップを持ちます。
- 構成フリップフロップのセットアップ時間とホールド時間の要件が、信頼性の高いレジスタ動作のタイミング制約を決定します。
- DigiSim.ioでは、レジスタは状態遷移の明確な視覚的フィードバックを備えた典型的なエッジトリガ動作をモデル化します。
- レジスタは、シフトレジスタ、カウンタ、メモリアレイなどのより複雑な順序コンポーネントの基礎を形成します。
- 特殊用途レジスタには、アキュムレータ(算術演算用)、ステータスレジスタ(条件フラグ用)、インデックスレジスタ(メモリアドレッシング用)があります。
特性
- ワードサイズ: 通常4、8、16、32、または64ビット(任意の数が可能)
- 格納容量: レジスタ内のビット数(フリップフロップ数)に等しい
- 動作モード:
- ロード(書き込み): レジスタに新しいデータを格納
- 読み出し: 現在格納されているデータを出力
- クリア/リセット: 全ビットを0に設定
- セット: 全ビットを1に設定
- シフト: レジスタ内のデータを左右に移動
- タイミング制御: 通常クロック信号と同期
- 速度: フリップフロップの伝搬遅延により決定(一般的なセットアップ時間: 2-5ns)
- 消費電力: フリップフロップ数とスイッチング周波数に比例
レジスタの種類
- データレジスタ: 汎用データ値を格納
- シフトレジスタ: データを左右にシフト可能
- SISO(シリアル入力、シリアル出力)
- SIPO(シリアル入力、パラレル出力)
- PISO(パラレル入力、シリアル出力)
- PIPO(パラレル入力、パラレル出力)
- バッファレジスタ: システムコンポーネント間の一時格納
- アドレスレジスタ: メモリアドレスを保持
- 命令レジスタ: プロセッサ命令を保持
- ステータスレジスタ: 条件フラグとステータス情報を格納
- アキュムレータレジスタ: 算術演算用の特殊レジスタ
アプリケーション
- マイクロプロセッサおよびマイクロコントローラ: CPUレジスタ用
- メモリシステム: アドレスおよびデータレジスタとして
- I/Oインターフェース: 異なる速度領域間のバッファリング
- 演算論理装置(ALU): オペランド格納用
- データ変換: ADCおよびDAC内
- 信号処理: データバッファリングおよびパイプライン用
- 通信システム: パラレル-シリアルおよびシリアル-パラレル変換
- カウンタ: バイナリカウンタの格納素子として
- ステートマシン: 順序回路の状態格納用
- ディスプレイドライバ: ディスプレイデータの保持
実装
レジスタは以下を使用して実装できます:
フリップフロップ:
- Dフリップフロップ(最も一般的)
- JKフリップフロップ
- Tフリップフロップ
集積回路:
- 74174/74175: ヘキサ/クワッドDタイプフリップフロップ
- 74273: クリア付きオクタルDタイプフリップフロップ
- 74377/74378: クロックイネーブル付きオクタルDタイプフリップフロップ
- 74595: 出力ラッチ付き8ビットシフトレジスタ
- 74299: 8ビットユニバーサルシフトレジスタ
メモリ技術:
- スタティックRAMセル
- ダイナミックRAMセル(リフレッシュ付き)
- FPGA内のフリップフロップアレイ
回路実装
Dフリップフロップを使用した基本的な4ビットレジスタ:
graph LR
D0[D bit 0] --> FF0[D Flip-Flop 0]
D1[D bit 1] --> FF1[D Flip-Flop 1]
D2[D bit 2] --> FF2[D Flip-Flop 2]
D3[D bit 3] --> FF3[D Flip-Flop 3]
CLK[Clock] --> FF0
CLK --> FF1
CLK --> FF2
CLK --> FF3
FF0 --> Q0[Q bit 0]
FF1 --> Q1[Q bit 1]
FF2 --> Q2[Q bit 2]
FF3 --> Q3[Q bit 3]
構造: 全フリップフロップが同期動作のための共通クロック信号を共有します。
関連コンポーネント
- フリップフロップ: レジスタの基本的なビルディングブロック(D、JK、T)
- ラッチ: レジスタに類似だが、エッジトリガではなくレベルトリガ
- カウンタ: レジスタを使用してパルスをカウントする順序回路
- シフトレジスタ: シフト動作に特化したレジスタ
- メモリモジュール: より大規模な格納素子のアレイ(RAM、ROM)
- マルチプレクサ: データ選択のためにレジスタと共に使用されることが多い
- バスシステム: データ転送のために複数のレジスタを接続
- マイクロプロセッサ: 各種用途のための複数のレジスタを含む
- メモリバッファ: メモリシステムとのインターフェース用の特殊レジスタ
- I/Oコントローラ: 異なるシステム間のデータバッファリングにレジスタを使用