Dラッチ
概要
- 目的: Dラッチ(データラッチ)は、1ビットの情報を格納するレベルセンシティブなメモリ回路です。単一のデータ入力(D)を使用して無効状態を排除することでSRラッチを改良し、イネーブル入力がラッチが新しいデータを受け入れるタイミングを制御します。
- シンボル: Dラッチは、D(データ)とEN(イネーブル)の入力、および相補出力QとQ̅を持つ長方形のブロックで表されます。
- DigiSim.ioでの役割: デジタル回路におけるメモリストレージの基本的なビルディングブロックとして機能し、一時的なデータ保持を提供し、エッジトリガー動作とは対照的なレベルセンシティブ動作を実演します。

機能説明
ロジック動作
Dラッチは、イネーブル時にトランスペアレント(透過的)になり、D入力の値をQ出力に通過させます。ディセーブル時には、D入力の変化に関係なく、最後の状態を保持(ラッチ)します。
真理値表:
| Enable (EN) | Data (D) | Q (next) | 動作 |
|---|---|---|---|
| 0 | X | Q (prev) | 状態保持 |
| 1 | 0 | 0 | リセット(0をロード) |
| 1 | 1 | 1 | セット(1をロード) |
注: Xは「ドントケア」条件、「prev」は前の状態を意味します
入力と出力
入力:
- D(データ): ラッチがイネーブルの時に格納される値を提供する1ビット入力。
- EN(イネーブル): ラッチがトランスペアレント(EN=1)かホールド中(EN=0)かを決定する1ビット制御入力。
出力:
- Q: 格納された値を表す1ビット出力。
- Q̅: 格納された値の逆を表す1ビット相補出力。
設定可能なパラメータ
- アクティブレベル: イネーブル入力がアクティブハイかアクティブローか。
- 伝搬遅延: 入力またはイネーブルの変化後に出力が変化するまでの時間。
DigiSim.ioでの視覚表現
Dラッチは、左側にラベル付き入力(DとEN)、右側に出力(QとQ̅)を持つ長方形のブロックとして表示されます。回路に接続すると、出力に表示される値と接続ワイヤーの色の変化を通じて現在の状態を視覚的に示します。イネーブル入力の状態が変化すると、トランスペアレントまたはホールド動作も視覚的に表示されます。
教育的価値
主要概念
- レベル感度: 回路がエッジではなく信号レベルにどのように応答するかを実演します。
- トランスペアレンシーとラッチング: トランスペアレント(パススルー)モードとメモリ(ホールド)モードの概念を説明します。
- メモリストレージ: デジタル回路が一時的に情報をどのように格納できるかを示します。
- 信号タイミング: デジタルメモリ要素におけるセットアップ時間とホールド時間の重要性を紹介します。
- データ同期: 同期目的で特定のタイミングでデータをキャプチャする方法を実演します。
学習目標
- レベルセンシティブラッチとエッジトリガーフリップフロップの違いを理解する。
- イネーブル入力がデータのキャプチャと維持のタイミングをどのように制御するかを学ぶ。
- ラッチでの信頼性の高いデータキャプチャのためのタイミング上の考慮事項を認識する。
- Dラッチを使用して、シンプルなメモリ回路とデータ保持レジスタを設計する。
- 2フェーズクロッキングスキームとトランスペアレントレジスタでラッチがどのように使用されるかを理解する。
使用例/シナリオ
- データレジスタ: イネーブルがアクティブ化された時にマルチビットデータ値を一時的に格納。
- 入力キャプチャ: イネーブル信号を制御して特定の時刻に入力データをサンプリング。
- バスインターフェース: バス転送中にアドレスまたはデータ値を安定させて保持。
- 2フェーズクロッキング: 交互ラッチシステムでパイプラインステージを作成。
- タイムボロウイング: パイプラインシステムでクロック境界をまたいだ演算の延長を許可。
- レベルセンシティブスキャンデザイン: 制御可能なスキャンチェーンを作成して回路テストをサポート。
技術ノート
- エッジトリガーフリップフロップとは異なり、Dラッチはイネーブル入力がアクティブの間トランスペアレントであるため、タイミング制御がより重要になります。
- イネーブルがアクティブの間にD入力で複数の遷移が発生すると、出力でも複数の遷移が発生し、特定の設計でレースコンディションにつながる可能性があります。
- ラッチの「トランスペアレンシーウィンドウ」は、パイプライン設計でのタイムボロウイングに有利ですが、慎重なタイミング解析が必要です。
- Dラッチは通常、エッジトリガーフリップフロップよりも少ないロジックで済み、より高速な動作が可能ですが、タイミング制約がより多くなります。
- DigiSim.ioでは、Dラッチはレベルセンシティブとエッジトリガー動作の違いを明確に実演します。これはデジタル設計における重要な概念です。
特性
- メモリ特性:
- Enableがハイからローに遷移する時にD入力に存在する値を格納
- Enableがハイの時にトランスペアレント(レベルセンシティブ)
- 伝搬遅延:
- データからQ遅延(イネーブル時): 通常5-15ns(技術依存)
- イネーブルから出力遅延: 通常5-15ns(技術依存)
- セットアップ時間とホールド時間:
- セットアップ時間: Enableがローになる前にDが安定している必要がある時間
- ホールド時間: Enableがローになった後にDが安定している必要がある時間
- 消費電力:
- 静的: 低(主にリーク電流)
- 動的: 状態変化中は中程度
- ファンアウト:
- 通常10-50ゲート(技術依存)
- 回路複雑性:
- 中程度(SRラッチと入力ゲーティングロジックが必要)
- 速度:
- エッジトリガーフリップフロップより高速だが、セットアップ時間とホールド時間が長い
- ノイズマージン:
- 中程度(ゲート技術に依存)
- 動作モード:
- トランスペアレントモード(Enableがハイの時)
- メモリモード(Enableがローの時)
実装方法
- 入力ゲーティング付きSRラッチの使用
graph TB
D[D Input] --> AND1[AND Gate]
EN[Enable] --> AND1
EN --> AND2[AND Gate]
D --> NOT[NOT Gate]
NOT --> AND2
AND1 -->|S| SR[SR Latch]
AND2 -->|R| SR
SR --> Q[Q Output]
SR --> QB[Q̅ Output]
動作: Enable=1の場合、Dがセット(D=1の場合)またはリセット(D=0の場合)に通過します。Enable=0の場合、ラッチは状態を保持します。
- NANDゲートの使用
graph TB
D[D Input] --> NAND1[NAND Gate]
EN[Enable] --> NAND1
EN --> NAND2[NAND Gate]
D --> NOT[NOT Gate]
NOT --> NAND2
NAND1 --> NAND3[NAND Latch]
NAND2 --> NAND4[NAND Latch]
NAND3 --> Q[Q Output]
NAND3 --> NAND4
NAND4 --> QB[Q̅ Output]
NAND4 --> NAND3
動作: メモリ用の交差結合フィードバックを備えたNANDベースの実装。
トランジスタレベル実装
- CMOS: トランスミッションゲートとインバータを使用
- TTL: バイポーラジャンクショントランジスタを使用
- 電力、速度、または面積の最適化が可能
集積回路
- 74xxシリーズロジックファミリーで利用可能(例: 74HC75、74LS373)
- 多くの場合、クアッドまたはオクタルラッチが1パッケージに収容
アプリケーション
データストレージ
- データパスの一時ストレージレジスタ
- マイクロプロセッサのI/Oポートラッチ
- メモリシステムのアドレスラッチ
データ同期
- 非同期ドメイン間でデータを安定させて保持
- データ取得システムでの入力キャプチャ
レベルセンシティブスキャンデザイン(LSSD)
- デジタルシステムのテスタビリティ設計
- 故障検出用スキャンチェーン
パイプラインレジスタ
- 2フェーズクロッキングシステムのトランスペアレントラッチ
- パイプラインステージ間のタイムボロウイング
データデマルチプレクシング
- 時分割システムでデマルチプレクスされたデータの保持
- デジタルシステムのサンプルアンドホールド回路
バスインターフェース回路
- データバスラッチ
- メモリインターフェースのアドレスラッチ
制限事項
トランスペアレンシーウィンドウ
- イネーブルハイ期間中の複数の遷移に対して脆弱
- 短いパルスを確実にキャプチャできない
レベル感度
- イネーブルハイ期間中の入力変化が出力に通過
- 不要なフィードバックと発振の可能性
タイミング制約
- セットアップ時間とホールド時間の要件が困難な場合がある
- イネーブル遷移近辺でデータが変化するとメタスタビリティのリスク
クロックスキュー感度
- マルチラッチシステムでイネーブルスキューがレースコンディションを引き起こす可能性
- エッジトリガー回路よりも複雑なシステムでの管理が困難
ノイズに対する保護の制限
- イネーブルハイ期間中のデータグリッチが出力に伝搬
- エッジトリガーフリップフロップよりもノイズの影響を受けやすい
回路実装の詳細
SRラッチからのDラッチ
Dラッチは、SおよびR入力が同時に両方ともハイにならないようにすることで、SRラッチから構築できます:
S = D · EN
R = (¬D) · EN
ENがハイの場合、Dに応じてSまたはRのいずれかがハイになります(ただし両方が同時にはなりません)。ENがローの場合、SとRの両方がローになり、SRラッチはホールド状態になります。
ゲーテッドDラッチの動作
EN = 0の場合:
- 内部SRラッチへのSおよびR入力は共に0
- ラッチは前の状態を維持
EN = 1の場合:
- D = 1の場合: S = 1、R = 0、ラッチはQを1にセット
- D = 0の場合: S = 0、R = 1、ラッチはQを0にリセット
- 出力はD入力に追従(トランスペアレントモード)
関連コンポーネント
- SRラッチ: Dラッチの基礎となるラッチ
- Dフリップフロップ: 同期システム用のDラッチのエッジトリガー版
- JKフリップフロップ: セット、リセット、トグル機能を備えたより汎用的なフリップフロップ
- Tフリップフロップ: クロックエッジで状態を変更するトグルフリップフロップ
- トランスペアレントラッチ: その動作を強調するDラッチの別名
- レジスタ: マルチビット値を格納するために組織化された複数のラッチ
- マスター・スレーブフリップフロップ: エッジトリガー動作を生成する直列接続の2つのラッチ