Dフリップフロップ
概要
- 目的: Dフリップフロップは、1ビットのデータを格納するシーケンシャルデジタル回路です。クロック信号によってトリガーされた時に、データ入力(D)の論理状態をキャプチャします。
- シンボル: Dフリップフロップは、D、CLK、PRE、CLR入力とQおよびQ̅出力を持つ長方形のブロックで表されます。
- DigiSim.ioでの役割: レジスタ、カウンタ、有限ステートマシンなどのシーケンシャル回路を構築するための基本メモリ要素として機能します。

機能説明
ロジック動作
Dフリップフロップは、クロックエッジ(立ち上がりエッジ)によってトリガーされた時にD入力の値をキャプチャし、次のクロックエッジまでその値を保持します。通常の動作をオーバーライドできる非同期プリセットおよびクリア入力を備えています。
ピンレイアウト:
- Pin 0: D(データ入力)
- Pin 1: CLK(クロック入力)
- Pin 2: PRE(プリセット - 非同期セット)
- Pin 3: CLR(クリア - 非同期リセット)
- Output 0: Q(格納値)
- Output 1: Q̅(相補出力)
真理値表:
| PRE | CLR | CLK | D | Q (next) | Q̅ (next) | 動作 |
|---|---|---|---|---|---|---|
| X | 1 | X | X | 0 | 1 | 非同期クリア |
| 1 | 0 | X | X | 1 | 0 | 非同期プリセット |
| 0 | 0 | ↑ | 0 | 0 | 1 | クロックで0をキャプチャ |
| 0 | 0 | ↑ | 1 | 1 | 0 | クロックで1をキャプチャ |
| 0 | 0 | 0 | X | Q (prev) | Q̅ (prev) | 前の状態を保持 |
| 0 | 0 | ↓ | X | Q (prev) | Q̅ (prev) | 前の状態を保持 |
注: ↑はクロックの立ち上がりエッジ、↓は立ち下がりエッジ、Xは「ドントケア」、0 = 非アクティブ(LOW)、1 = アクティブ(HIGH)を示します
動作優先順位(最高から最低):
- CLR(クリア): CLR=1の場合、他の入力に関係なくQは0に強制されます
- PRE(プリセット): PRE=1かつCLR=0の場合、他の入力に関係なくQは1に強制されます
- クロックエッジ: PRE=0かつCLR=0の場合、立ち上がりクロックエッジでQがDをキャプチャします
入力と出力
入力:
- D(データ) [Pin 0]: 次のクロックエッジで格納される値を決定する1ビット入力。
- CLK(クロック) [Pin 1]: D値がサンプリングされるタイミングを制御する1ビットのポジティブエッジトリガー入力。
- PRE(プリセット) [Pin 2]: アクティブHIGH時にQを1に強制する1ビット非同期入力。
- CLR(クリア) [Pin 3]: アクティブHIGH時にQを0に強制する1ビット非同期入力(最高優先度)。
出力:
- Q: 格納された値を表す1ビット出力。
- Q̅: 格納された値の相補(反転)出力。
設定可能なパラメータ
- 伝搬遅延: クロックエッジから対応する出力変化までの時間遅延。
DigiSim.ioでの視覚表現
Dフリップフロップは、左側に入力(D、CLK、PRE、CLR、上から下へ)、右側に出力(Q、Q̅)を持つ長方形のブロックとして表示されます。コンポーネントは「D FF」とラベル付けされ、Dフリップフロップであることを識別します。クロック入力はポジティブエッジ感度を示す三角形のシンボルでマークされています。回路に接続すると、ワイヤーの色と値を通じて出力の論理状態を視覚的に示します。
教育的価値
主要概念
- シーケンシャルロジック: 出力が現在の入力と前の状態の両方にどのように依存するかを実演します。
- エッジトリガー: クロック制御の状態遷移の概念を説明します。
- 状態ストレージ: デジタルシステムが状態情報をどのように格納し維持するかを示します。
- 同期: データがクロック信号とどのように同期できるかを実演します。
学習目標
- Dフリップフロップがバイナリデータをどのようにキャプチャし格納するかを理解する。
- エッジトリガー動作とシーケンシャル回路におけるその重要性を学ぶ。
- 同期動作と非同期動作の違いを認識する。
- Dフリップフロップを使用してレジスタ、カウンタ、ステートマシンを構築する。
- セットアップ時間やホールド時間などのタイミング要件を理解する。
使用例/シナリオ
- データストレージ: デジタルシステムにおける個々のビット情報の格納。
- レジスタ: 複数のDフリップフロップでマルチビット値を格納するレジスタを作成。
- 周波数分割: 特定の構成により、Dフリップフロップでクロック周波数を分割可能。
- エッジ検出: 入力信号のエッジを検出するために使用可能。
- ステートマシン: シーケンシャル制御用の有限ステートマシンの状態要素として使用。
技術ノート
- メタスタビリティ: セットアップ時間とホールド時間が違反された場合、フリップフロップは出力が予測不能なメタステーブル状態に入る可能性があります。
- エッジトリガー: DigiSim.ioでは、Dフリップフロップはポジティブエッジトリガーであり、クロック信号の立ち上がりエッジでデータをキャプチャします。
- 非同期制御: PREおよびCLR入力はアクティブHIGHであり、同期クロックおよびデータ入力に優先します。CLRはPREより高い優先度を持ちます。
- 制御信号の優先順位: CLR入力は常にPREと同期入力をオーバーライドします。CLR=1の場合、出力は0に強制されます。PRE=1かつCLR=0の場合、出力は1に強制されます。
- 通常動作: PREとCLRの両方が0(非アクティブ)の場合、フリップフロップは立ち上がりクロックエッジでD入力をキャプチャして正常に動作します。
実装方法
マスター・スレーブ構成
- 2つのカスケード接続されたラッチ(マスターとスレーブ)
- マスターがデータをキャプチャし、スレーブが出力を更新
- パルストリガー動作を持つレベルセンシティブ
- クロック遷移中の不要なフィードバックを防止
- 古いまたはシンプルな設計で一般的
- 信頼性の高い動作にはオーバーラップしないクロック位相が必要
- 単純なラッチよりもクロックグリッチに対する耐性が高い
- 初期のTTL実装に典型的
エッジトリガー設計
- クロックエッジ(立ち上がりまたは立ち下がり)への直接応答
- 内部パルス生成回路を使用
- 複雑な同期システムでより信頼性が高い
- クロック遷移時のデータの正確なサンプリング
- ほとんどのデジタルシステムにおける現代の標準
- より複雑な内部回路
- 入力ノイズに対する耐性が向上
- 現代のCMOS実装で主流
CMOSトランスミッションゲート実装
- トランスミッションゲートをスイッチとして使用
- 低消費電力
- 通常エッジトリガー
- バランスの取れた伝搬遅延
- 現代のCMOSプロセスで効率的
- 低消費電力アプリケーションに適している
- 良好なノイズ耐性
- 現代の集積回路で一般的
集積回路実装
- 専用フリップフロップIC
- 例: 7474(デュアルDフリップフロップ)、74175(クアッドDフリップフロップ)
- 各種機能: クリア、プリセット、パッケージあたり複数ユニット
- さまざまなロジックファミリーで利用可能
- よく特性が把握されたタイミングと負荷
- 標準インターフェースとピン配置
- ブレッドボードおよびプロトタイピングで使用
- 指定条件下での信頼性の高い動作
FPGA/ASIC実装
- FPGAロジックセルおよびASICライブラリに組み込み
- ターゲット技術に最適化
- 追加機能(クロックイネーブルなど)を含む可能性
- 専用ハードウェアリソースを活用
- 特殊な要件に容易に構成可能
- 組み合わせ論理と統合
- 複雑なデジタルシステムの現代的アプローチ
- 設計ツールによるタイミングの慎重な管理
差動信号実装
- クロックと場合によってはデータに差動信号を使用
- 高いノイズ耐性
- 高周波数でのより良いパフォーマンス
- 高速アプリケーションで一般的
- より複雑だがより信頼性が高い
- 特殊な高性能システムで使用
- 内部的にカレントモードロジックを使用する場合あり
- 慎重な信号インテグリティ管理が必要
低消費電力バリアント
- 最小消費電力に特化
- クロックゲーティング機能
- 内部スイッチング活動の削減
- パワーダウンまたはリテンションモード
- バッテリー駆動デバイスで使用
- 電力効率のために速度を犠牲にする場合あり
- 特別な電力ドメインを含む実装の可能性
- エネルギー制約のあるアプリケーションに不可欠
アプリケーション
データストレージとレジスタ
- 一時的なデータストレージ
- データ移動用シフトレジスタ
- パラレルデータレジスタ
- 入出力ポートラッチング
- パラメータストレージ
- 構成レジスタ
- ステータスフラグ
同期
- クロックドメインクロッシング
- メタスタビリティ解消
- 信号アライメント
- 非同期ソースからのデータキャプチャ
- バス同期
- インターフェースタイミング管理
- パルス同期
カウンタとタイマー
- イベントカウント用バイナリカウンタ
- 周波数分周器
- ステートシーケンサ
- タイミング生成
- 遅延要素
- プロセス制御タイミング
- タイムアウト監視
ステートマシン
- シーケンシャル制御ロジック
- プロトコル実装
- アルゴリズムシーケンシング
- 命令デコーディング
- システム制御ユニット
- イベント駆動シーケンサ
- アルゴリズミックステートマシン
メモリ要素
- SRAMメモリセル
- キャッシュメモリストレージ
- レジスタファイル
- 連想メモリ
- LUT(ルックアップテーブル)構成
- FIFO(先入れ先出し)メモリ
- バッファリングアプリケーション
信号処理
- パイプラインステージ
- デジタルフィルタ
- サンプルアンドホールド回路
- データシリアライザ/デシリアライザ
- 周波数合成
- デジタル変調
- 信号遅延ライン
インターフェースと通信
- シリアル通信(UART、SPI、I²C)
- データフレーミングとアライメント
- バスアービトレーション
- ハンドシェイクプロトコル
- パケット同期
- クロックリカバリ
- データバッファリング
制限事項
タイミング制約
- セットアップ時間とホールド時間の要件
- クロックスキュー感度
- 最大動作周波数
- 最小パルス幅要件
- 伝搬遅延のばらつき
- タイミング違反時のメタスタビリティ
- リカバリ時間とリムーバル時間の要件
- ダウンストリームロジックに影響するクロック-出力遅延
メタスタビリティの問題
- タイミング違反時のメタステーブル状態の可能性
- 予測不能な解決時間
- クロック周波数の増加に伴い確率が上昇
- 非同期インターフェースでクリティカル
- シンクロナイザ回路が必要
- システム障害を引き起こす可能性
- デバッグが困難
- 発生の統計的性質
電力に関する考慮事項
- 周波数に伴い増加する動的消費電力
- クロック遷移中の電流スパイク
- ほとんどの設計で常時オン動作
- 大規模設計でシステム電力への大きな寄与
- クロック分配ネットワークの消費電力
- 高周波数での発熱
- 電力インテグリティの要件
- パワーダウンシーケンスの必要性
クロック分配
- 複数のフリップフロップ間のクロックスキュー
- クロックジッターの影響
- ファンアウト制限
- クロックバッファの要件
- クロックツリー合成の複雑さ
- 位相関係の管理
- クロックドメイン管理
- タイミングクロージャの課題
物理的制限
- 消費されるシリコン面積
- 高密度設計における配線の混雑
- 温度感度
- 電圧感度
- 経年劣化効果
- 環境への感受性
- 放射線感度
- 製造ばらつき
回路実装の詳細
NANDゲートを使用した基本的なDフリップフロップ
graph LR
InputD[D Input] --> MasterLatch[Master Latch]
Clock[Clock] --> MasterLatch
Clock --> Inverter[Inverter]
Inverter --> SlaveLatch[Slave Latch]
MasterLatch --> SlaveLatch
SlaveLatch --> OutputQ[Q Output]
SlaveLatch --> OutputQBar[Q̅ Output]
動作: マスター・スレーブ構成。マスターラッチはクロックHigh時にデータをキャプチャし、スレーブラッチはクロックLow時に転送します(エッジトリガー動作)。
7474デュアルDフリップフロップIC
ピン構成:
| ピン | 信号 | 説明 | ピン | 信号 | 説明 |
|---|---|---|---|---|---|
| 1 | PRE1 | フリップフロップ1のプリセット | 14 | VCC | 電源(+5V) |
| 2 | D1 | データ入力1 | 13 | PRE2 | フリップフロップ2のプリセット |
| 3 | CLK1 | クロック入力1 | 12 | D2 | データ入力2 |
| 4 | CLR1 | フリップフロップ1のクリア | 11 | CLK2 | クロック入力2 |
| 5 | Q1 | 出力1 | 10 | CLR2 | フリップフロップ2のクリア |
| 6 | Q̅1 | 反転出力1 | 9 | Q2 | 出力2 |
| 7 | GND | グランド(0V) | 8 | Q̅2 | 反転出力2 |
特徴: プリセットおよびクリア付きデュアルポジティブエッジトリガーDフリップフロップ。
エッジトリガーDフリップフロップの実装
マスター・スレーブアーキテクチャ:
エッジトリガーDフリップフロップは、2つのラッチを使用したマスター・スレーブ構成を使用します:
- マスターラッチ: クロックがHIGHの時にイネーブルされ、入力Dをキャプチャ
- スレーブラッチ: クロックがLOW(反転)の時にイネーブルされ、マスターの出力をQに転送
- エッジトリガー: クロック遷移(立ち上がりまたは立ち下がりエッジ)でのみ出力が変化
- 内部フィードバック: 交差結合されたNAND/NORゲートが双安定ストレージを作成
このアーキテクチャにより、出力がクロックサイクルあたり1回のみ変化し、同期デジタルシステムにおける安定した予測可能な動作を提供します。
関連コンポーネント
- Dラッチ: Dフリップフロップのレベルセンシティブ版
- JKフリップフロップ: セット、リセット、トグル機能を備えたより汎用的なフリップフロップ
- Tフリップフロップ: イネーブル時に各クロックで状態を変更するトグルフリップフロップ
- SRフリップフロップ: セット-リセットフリップフロップ、基本的な双安定要素
- レジスタ: マルチビットストレージ用のフリップフロップグループ
- シフトレジスタ: データをシリアルにシフトする接続されたフリップフロップ
- カウンタ: カウント用のフィードバック付き接続されたフリップフロップ
- マスター・スレーブフリップフロップ: 2段パルストリガーフリップフロップ
- エッジトリガーフリップフロップ: クロックエッジにのみ応答
- シュミットトリガー: ノイズの多いクロック信号にクリーンな遷移を提供