Tフリップフロップ
概要
- 目的: Tフリップフロップ(トグルフリップフロップ)は、T入力がHIGHの状態でクロックエッジによってトリガーされると出力状態を変化させる順序回路です。カウンタや分周器のトグル動作を実装するためのシンプルで効率的な方法を提供します。
- シンボル: Tフリップフロップは、T(トグル)入力、クロック(CLK)入力、オプションの非同期SETおよびRESET入力、相補出力QおよびQ̅を持つ矩形ブロックで表されます。
- DigiSim.ioでの役割: デジタル回路においてバイナリカウンタ、分周器、ステートマシンを作成するための基本的なビルディングブロックとして機能します。

機能説明
論理動作
Tフリップフロップは、正のクロックエッジ(立ち上がりエッジ)でT入力がHIGH(1)のとき出力状態をトグルし、T入力がLOW(0)のとき現在の状態を維持します。通常の動作をオーバーライドできる非同期クリア入力を備えています。
ピン配置:
- Pin 0: T(トグル制御入力)
- Pin 1: CLK(クロック入力)
- Pin 2: CLR(クリア - 非同期リセット)
- Output 0: Q(格納値)
- Output 1: Q̅(相補出力)
真理値表(正エッジトリガ型Tフリップフロップ):
| CLR | T | CLK | Q (next) | Q̅ (next) | 動作 |
|---|---|---|---|---|---|
| 1 | X | X | 0 | 1 | 非同期クリア |
| 0 | 0 | ↑ | Q (prev) | Q̅ (prev) | 状態保持(変化なし) |
| 0 | 1 | ↑ | Q̅ (prev) | Q (prev) | トグル(反転) |
| 0 | X | 0 | Q (prev) | Q̅ (prev) | 状態保持(変化なし) |
| 0 | X | ↓ | Q (prev) | Q̅ (prev) | 状態保持(変化なし) |
注: ↑はクロックの立ち上がりエッジ、↓は立ち下がりエッジ、Xは「ドントケア」、0 = 非アクティブ(LOW)、1 = アクティブ(HIGH)、"prev"は前の状態を意味します
動作優先順位(高い順):
- CLR(クリア): CLR=1のとき、他の入力に関係なくQは強制的に0になります
- クロックエッジ: CLR=0のとき、T入力が立ち上がりクロックエッジでのトグル動作を制御します
注意: この実装にはPRE(プリセット)ピンは含まれていません。プリセット機能が必要な場合は、JKまたはDフリップフロップコンポーネントを使用してください。
入力と出力
入力:
- T(トグル) [Pin 0]: フリップフロップがクロックエッジでトグルするか状態を維持するかを決定する1ビット入力。
- CLK(クロック) [Pin 1]: 状態変化をトリガーする1ビットの正エッジタイミング信号。
- CLR(クリア) [Pin 2]: アクティブHIGHのとき、Qを強制的に0にする1ビットの非同期入力。
出力:
- Q: 格納値(現在の状態)を表す1ビット出力。
- Q̅: 格納値の補数を表す1ビット出力。
設定可能なパラメータ
- クロックエッジ感度: フリップフロップが立ち上がりまたは立ち下がりクロックエッジに応答するかどうか。
- 非同期入力: プリセットおよびクリア入力の有無とアクティブHIGHまたはアクティブLOWの設定。
- 伝搬遅延: トリガーイベント後に出力が変化するまでの時間。
DigiSim.ioでの視覚的表現
Tフリップフロップは、左側にラベル付き入力(T、CLK、CLRが上から下へ)、右側に出力(QおよびQ̅)を持つ矩形ブロックとして表示されます。コンポーネントはTフリップフロップであることを示すために「T FF」と明確にラベル付けされています。クロック入力は通常、正エッジ感度を示す三角形のシンボルで示されます。回路に接続すると、出力に表示される値と接続ワイヤの色の変化を通じて現在の状態を視覚的に示します。
教育的価値
主要概念
- トグル動作: バイナリ状態トグルの基本概念を実証します。
- 順序論理: タイミング信号に基づいて回路がどのように状態を格納・変更できるかを示します。
- エッジトリガ動作: デジタル回路がレベルではなく信号遷移に応答する方法を示します。
- 分周: トグル動作を使用した周波数分割の概念を紹介します。
- バイナリカウント: バイナリカウンタの基本的なビルディングブロックを実証します。
学習目標
- Tフリップフロップが入力条件に基づいてどのように状態間をトグルするかを理解する。
- Tフリップフロップを使用した分周回路の作成方法を学ぶ。
- バイナリカウンタ設計におけるTフリップフロップの役割を認識する。
- タイミングおよびシーケンス生成回路の作成にTフリップフロップを適用する。
- Tフリップフロップが他のフリップフロップタイプ(D、JK、SR)とどのように関連するかを理解する。
使用例/シナリオ
- バイナリカウンタ: Tフリップフロップを直列に接続してカウンタを作成。
- 分周: タイミングアプリケーション向けにクロック周波数を2の倍数で分割。
- 方形波生成: 入力の正確に半分の周波数で方形波を生成。
- ステートマシン: 制御システムにおける交互状態シーケンスの実装。
- パリティ生成: データ伝送のエラー検出用パリティビットの作成。
- イベントカウント: 状態間のトグルによるイベント数の集計。
技術ノート
- T入力を恒久的にHIGH(1)に接続したTフリップフロップは分周器として機能し、入力クロック周波数の半分の出力周波数を生成します。
- Tフリップフロップは他のフリップフロップタイプから構成できます:
- JKフリップフロップのJ入力とK入力をTとして結合して使用
- Dフリップフロップに、T入力と現在のQ出力を組み合わせるXORゲートを使用
- 正エッジトリガ型Tフリップフロップは、信頼性の高い動作のために特定のセットアップ時間とホールド時間の要件があります。
- 非同期制御: この実装にはアクティブHIGHのCLR(クリア)入力のみが含まれています。CLR=1のとき、他の入力に関係なく出力は即座に0に強制されます。
- プリセットピンなし: JKおよびDフリップフロップとは異なり、このTフリップフロップ実装にはPRE(プリセット)入力が含まれていません。プリセット機能が必要なアプリケーションでは、JKまたはDフリップフロップコンポーネントを使用してください。
- カスケード配置(カウンタなど)では、各Tフリップフロップは通常、前段の半分の周波数でトグルします。
- DigiSim.ioでは、Tフリップフロップはトグル動作の視覚的フィードバックを提供し、バイナリカウント概念のデモンストレーションに優れています。
特性
- クロック駆動動作:
- エッジトリガ(通常は立ち上がりエッジ)
- アクティブクロック遷移時のみ状態変化
- トグル機能:
- T=1のとき: 各クロックエッジで出力がトグル
- T=0のとき: 出力が現在の状態を維持
- 伝搬遅延:
- クロックからQ遅延: 通常5-15ns(技術依存)
- セットアップ時間: クロックエッジ前にTが安定している必要がある時間
- ホールド時間: クロックエッジ後にTが安定している必要がある時間
- 消費電力:
- 静的: 低(主にリーク電流)
- 動的: 状態遷移時に中程度
- ファンアウト:
- 通常10-50ゲート(技術依存)
- 動作モード:
- トグルモード(T=1)
- ホールドモード(T=0)
- 非同期プリセット/クリア(提供される場合)
- 分周:
- Tがハイに保持されると、入力クロック周波数を2で割る
- 準安定性耐性:
- エッジトリガ動作によりラッチよりも優れている
- 内部マスタースレーブ構造が準安定性の可能性を低減
実装方法
- JKフリップフロップを使用
- J入力とK入力の両方をTに接続
- JKフリップフロップのエッジトリガ特性を継承
graph LR
T[T Input] --> J[J Input]
T --> K[K Input]
CLK[Clock] --> JKFF[JK Flip-Flop]
J --> JKFF
K --> JKFF
JKFF --> Q[Q Output]
JKFF --> QB[Q̅ Output]
動作: T=1でクロックがトリガーされるとフリップフロップがトグルします。T=0のときフリップフロップは状態を保持します。
- フィードバック付きDフリップフロップを使用
- XORゲートがT入力と現在のQ出力を組み合わせる
- 出力がD入力にフィードバックされる
graph LR
T[T Input] --> XOR[XOR Gate]
Q[Q Output] --> XOR
XOR --> D[D Input]
D --> DFF[D Flip-Flop]
CLK[Clock] --> DFF
DFF --> Q
DFF --> QB[Q̅ Output]
動作: XORがトグル論理を作成します。T=1のとき、D = Q XOR 1 = NOT Q(トグル)。T=0のとき、D = Q XOR 0 = Q(保持)。
マスタースレーブ構造による直接実装
- マスタースレーブ構成の2つのDラッチ
- トグル機能のための追加論理
集積回路
- 74xxシリーズ論理ファミリで利用可能(例: 74LS73、74HC73)
- パッケージあたりデュアルまたはクワッドフリップフロップとして実装されることが多い
アプリケーション
バイナリカウンタ
- 分周器(T=1のとき2分周)
- リプルカウンタおよび同期カウンタ
- デジタルクロック生成
分周
- タイミングアプリケーション向けクロック信号分割
- レートマルチプライヤおよびプログラマブル分周器
ステートマシン
- 順序論理回路
- 交互状態を持つ制御システム
パリティ生成/検査
- 偶数/奇数パリティビット生成
- データ伝送のエラー検出
パルス生成
- 方形波生成器
- タイミングおよび同期信号
イベントカウント
- 外部イベントまたはパルスのカウント
- センサー入力処理
記憶素子
- デジタルシステムにおける1ビット記憶
- シフトレジスタおよびデータバッファ
制限事項
入力タイミング制約
- セットアップ時間とホールド時間の要件を満たす必要がある
- 高速システムでのタイミング違反の可能性
限定的な機能
- トグルまたはホールド動作のみ
- より複雑な動作には追加論理が必要
トグル中の消費電力
- 連続トグル(T=1)は消費電力が増加
- バッテリー駆動アプリケーションでは懸念となる場合がある
クロックスキュー感度
- クロック配信品質がパフォーマンスに影響
- 複雑なシステムでは慎重なクロックツリー設計が必要な場合がある
準安定性リスク
- ラッチよりは優れているが、準安定性の影響を受ける可能性がある
- 非同期システム間のインターフェースでは重要
回路実装の詳細
JKフリップフロップを使用したTフリップフロップ
Tフリップフロップの最も簡単な実装は、J入力とK入力の両方をT入力に結合したJKフリップフロップを使用します:
J = T
K = T
T=0のとき、J=K=0で、JKフリップフロップの「保持」条件です。 T=1のとき、J=K=1で、JKフリップフロップの「トグル」条件です。
Dフリップフロップを使用したTフリップフロップ
Tフリップフロップは、XORゲート付きのDフリップフロップを使用しても構成できます:
D = T ⊕ Q
T=0のとき、D=Qで、現在の状態を維持します。 T=1のとき、D=¬Qで、状態がトグルします。
関連コンポーネント
- Dフリップフロップ: 入力データを直接ロードするエッジトリガ型フリップフロップ
- JKフリップフロップ: セット、リセット、トグル機能を持つ汎用フリップフロップ
- SRフリップフロップ: セットおよびリセット入力を持つ基本的なフリップフロップ
- バイナリカウンタ: カウント用のTフリップフロップの直列接続
- 分周器: クロック周波数を分割するためのTフリップフロップの応用
- ジョンソンカウンタ: 反転フィードバック付きTフリップフロップを使用した特殊カウンタ
- リングカウンタ: 循環データパスを持つフリップフロップの直列接続