Instant Engineering

エンジニアの仕事効率を上げる知識をシェアするWeb記事/機械設計/TPS/QC品質管理

フリップフロップとは?RS・D・JKの違い

「スイッチを一度押しただけなのに、回路がその状態を覚え続ける」のはなぜでしょうか。

デジタル回路は0と1だけで動きますが、現在の入力だけでは過去の操作や計数結果を記憶できません。

そこで使われるのが、回路に1ビットの内部状態を安定して持たせる基本回路であるフリップフロップです。

RS型・D型・JK型は入力の意味と動作タイミングが異なり、用途を間違えると不定状態や誤カウントの原因になります。

本記事では、フリップフロップの仕組み、真理値表、クロック、レジスタやカウンタでの使い分けまで実務目線で解説します。

 

1. フリップフロップとは:1ビットを保持する順序回路

フリップフロップとは、0または1のどちらか一方の状態を保持できる記憶回路です。

記憶できる量は2進数の1桁であり、デジタル回路では1ビットと呼ばれます。

この1ビットの記憶素子を横に並べると、4ビット、8ビット、16ビットのレジスタを構成できます。

フリップフロップは、現在の入力だけでなく過去の状態を扱える点が最大の特徴です。

CPUやマイコン内部のレジスタ、カウンタ、制御状態の保持など、デジタル機器の根幹で使われます。

マイコン内部でCPU・メモリ・I/Oがどう連携するかは、マイコンとは?CPU・メモリ・IOの基本を解説も参考になります。

 

組合せ回路と順序回路の違い

デジタル回路は、組合せ回路と順序回路に大きく分けられます。

組合せ回路は、その瞬間の入力だけで出力が決まる回路です。

AND、OR、NOT、加算器、デコーダなどは、過去の入力を記憶しません。

たとえばAND回路なら、入力が1と1のときだけ出力が1になります。

入力が変われば、出力もただちにその論理式どおりに変わります。

これに対して順序回路は、現在の入力に加えて、前に保持していた状態も出力に影響します。

カウンタが「前回の値に1を足す」動作をできるのは、前回の値を内部に保持しているからです。

この内部状態を担う基本素子が、フリップフロップです。

組込み機器では、センサ入力、通信状態、制御モードなどを順序回路的に扱います。

こうした組込み機器全体の構成は、組込みシステムとは?特徴と開発・用途を解説で整理しています。

 

ラッチとフリップフロップの違い

フリップフロップとよく混同される回路に、ラッチがあります。

ラッチは、イネーブル信号が有効な間、入力の変化が出力へ伝わるレベル制御型の記憶回路です。

イネーブルが1の間ずっと開いた扉のように働き、入力が動けば出力も追従します。

一方、フリップフロップはクロックの立ち上がりまたは立ち下がりの瞬間だけ入力を取り込みます。

このように、信号レベルで動くか、変化の瞬間で動くかが大きな違いです。

同期式のデジタル回路では、すべての記憶素子を同じクロックでそろえることが重要です。

そのため、実務ではエッジトリガのDフリップフロップが標準的に使われます。

ただし、低消費電力や高速化を狙うASIC設計では、ラッチを意図的に使う場合もあります。

初心者がまず押さえるべきなのは、ラッチは「開いている間に通す」、フリップフロップは「瞬間に取り込む」という違いです。

 

2. 基本原理:帰還とクロックで状態を決める

フリップフロップが記憶できる理由は、出力を入力側へ戻す帰還にあります。

二つの論理ゲートを互いに接続すると、一度決まった状態を自分自身で支えられます。

ただし、帰還だけでは「いつ値を取り込むか」が曖昧になります。

そこでクロックを使い、回路全体が同じタイミングで状態を更新するようにします。

フリップフロップは、帰還による保持とクロックによる更新を組み合わせた回路です。

この考え方を理解すると、RS型、D型、JK型、T型の違いも自然に整理できます。

 

帰還による自己保持の考え方

帰還とは、出力の一部を入力側へ戻す接続のことです。

フリップフロップでは、出力Qと反転出力の状態が互いに影響し合います。

Qが1になると、その状態を保つ方向に内部の論理ゲートが働きます。

Qが0になった場合も同様に、0の状態を保つように回路が安定します。

この二つの安定状態を持つ性質を、双安定と呼びます。

双安定回路は、外部からセットまたはリセットを与えない限り、前の状態を保持します。

記憶といっても、内部に小さな文字が保存されるわけではありません。

電圧が高い状態と低い状態のどちらかを、回路の帰還で維持しているだけです。

デジタル回路では、この高低の状態を論理1と論理0に対応させています。

この単純な仕組みを大量に並べることで、複雑なプロセッサやメモリの制御回路が成り立ちます。

 

クロックエッジで値を取り込む理由

多数のフリップフロップを同時に使う回路では、値を取り込むタイミングの統一が不可欠です。

それぞれが勝手なタイミングで動くと、ある部分は古い値、別の部分は新しい値を見てしまいます。

このズレは、誤動作や一時的な不正状態の原因になります。

そこで同期回路では、クロックという周期信号を全体の合図として使います。

代表的なDフリップフロップは、クロックの立ち上がりエッジでD入力を取り込みます。

取り込んだ後は、次のクロックエッジが来るまでQ出力を保持します。

立ち下がりエッジで動作する品種もあり、どちらで動くかはデータシートで確認します。

クロック周期、伝搬遅延、セットアップ時間、ホールド時間を満たすことが、同期回路設計の基本です。

PLCや産業制御の世界でも、周期的に入力を読み、処理し、出力する考え方が重要になります。

周期処理のイメージは、PLCスキャンタイムとは?応答遅れと短縮方法ともつながります。

 

3. RSフリップフロップ:セットとリセットの基本

RSフリップフロップは、セットとリセットで1ビットの状態を決める基本回路です。

RはReset、SはSetを意味し、Qを0にする入力と1にする入力を別々に持ちます。

教科書では、NORゲートを二つ交差接続した正論理のRSラッチとして説明されることが多いです。

ただし、NANDゲートで構成する負論理タイプでは、入力の有効レベルが反対になります。

ここでは、初心者が理解しやすい正論理のNOR型を基準に説明します。

 

NOR型RS回路と真理値表

NOR型RS回路では、Sを1にするとセット、Rを1にするとリセットが行われます。

SとRがともに0の場合は、外部から状態変更の指示がないため前の値を保持します。

Sが1、Rが0ならQは1になり、Rが1、Sが0ならQは0になります。

この動きだけを見ると非常に単純ですが、両方を同時に1にする入力だけは問題です。

セットとリセットを同時に命令するため、出力Qと反転出力の関係が崩れてしまいます。

S R Qの動作 意味
0 0 保持 前の状態をそのまま保つ
1 0 1 セットする
0 1 0 リセットする
1 1 禁止 同時指示となり不定の原因になる

RS型の役割は、1ビットを「明示的に1へする」「明示的に0へする」「そのまま保つ」の三つです。

この単純さが、フリップフロップ全体を理解する出発点になります。

 

禁止入力とチャタリング除去

RS型で最も注意すべきなのは、SとRを同時に有効にしないことです。

禁止入力を与えると、出力の相補関係が崩れたり、解除後にどちらへ落ち着くか読めなくなったりします。

この不定状態は、机上の真理値表では小さな注意書きに見えます。

しかし実機では、初期化不良や一瞬だけ出る異常パルスの原因になります。

RS回路は一方で、機械式スイッチのチャタリング除去にも使われます。

機械接点は押した瞬間に微小に跳ね、数ms程度の短い時間でON/OFFを繰り返すことがあります。

そのままカウンタへ入れると、1回押しただけなのに複数回押されたように見えます。

RS回路やソフトウェア処理で最初の状態変化だけを採用すれば、安定した入力に整えられます。

産業機器の入力信号でチャタリング対策を考える場合は、デバウンス処理とは?チャタリング対策の基本も押さえておきましょう。

 

4. Dフリップフロップ:レジスタに使う標準型

Dフリップフロップは、D入力の値をクロックエッジで取り込む型です。

DはDataを意味し、Dが1ならQは1、Dが0ならQは0になります。

RS型のようにセットとリセットを別入力で考える必要がなく、入力は基本的に1本です。

実務の同期回路では、Dフリップフロップが最も標準的な記憶素子です。

レジスタ、パイプライン、状態機械、同期化回路など、用途は非常に広いです。

複数ビットのデータをどのアドレスへ対応させるかは、メモリマップとは?I/Oとファイルで解説の考え方にもつながります。

 

D入力と真理値表

Dフリップフロップの動作は、クロックエッジの瞬間だけを見ると非常に単純です。

立ち上がりエッジ型なら、クロックが0から1へ変わる瞬間のD入力を読み込みます。

その瞬間にDが0ならQは0になり、Dが1ならQは1になります。

クロックエッジ以外の時間にDが変化しても、すぐにはQへ反映されません。

このため、入力側の組合せ回路が多少遅れて変化しても、次のクロックまでに安定すれば問題ありません。

クロック D 次のQ 動作
立ち上がり 0 0 0を取り込む
立ち上がり 1 1 1を取り込む
エッジ以外 0または1 前のQ 保持する

D型は、禁止入力がないことも大きな利点です。

入力が1本なので、RS型のように「セットとリセットを同時に押す」矛盾が起こりません。

この扱いやすさにより、D型はCPU内部のレジスタやFPGAの基本セルとして広く使われます。

 

セットアップ時間・ホールド時間・準安定

Dフリップフロップを正しく動かすには、データをクロック付近で安定させる必要があります。

クロックエッジより前にD入力を安定させておく最小時間を、セットアップ時間と呼びます。

クロックエッジの後もD入力を変えずに保つ最小時間を、ホールド時間と呼びます。

この二つを破ると、フリップフロップは0とも1とも言い切れない中間状態へ入ることがあります。

この現象が準安定で、英語ではメタステーブル状態と呼ばれます。

準安定は永久に続くわけではありませんが、解消に通常より長い時間がかかることがあります。

その結果、次段回路が不確定な値を読み取り、まれな誤動作として現れます。

外部スイッチ、別クロック領域の信号、通信入力などは、クロックと無関係に変化します。

そのため、実務では2段以上のDフリップフロップを直列に置く同期化回路がよく使われます。

セットアップ時間とホールド時間を守ることは、フリップフロップ設計の最低条件です。

 

5. JK・Tフリップフロップ:反転とカウンタの考え方

JKフリップフロップは、RS型の禁止入力を解消した発展型です。

Jはセット方向、Kはリセット方向の入力として考えると理解しやすくなります。

JとKが両方1のとき、JK型では禁止ではなく、出力を反転させます。

この反転動作を専用化したものが、Tフリップフロップです。

JK型とT型を理解すると、カウンタや分周回路の仕組みが見通しやすくなります。

 

JKフリップフロップの動作

JK型は、保持、セット、リセット、反転の四つの動作をすべて扱えます。

JとKが0なら保持、Jだけが1ならセット、Kだけが1ならリセットになります。

JとKが両方1なら、クロックごとにQが0から1、1から0へ反転します。

この反転動作により、RS型で禁止だった入力の組み合わせにも意味を持たせています。

古いレベル動作型のJK回路では、クロックが有効な間に何度も反転するレーシングが問題になります。

そのため、実用のJKフリップフロップではエッジトリガやマスタースレーブ構成で一度だけ反転させます。

J K 次のQ 動作
0 0 前のQ 保持する
1 0 1 セットする
0 1 0 リセットする
1 1 前のQの反転 トグルする

現在のFPGAやCPU設計ではD型が主流ですが、JK型はフリップフロップの動作理解に非常に有効です。

特に「反転する状態」を真理値表として扱えるため、カウンタ学習の橋渡しになります。

 

Tフリップフロップと分周回路

Tフリップフロップは、Toggleの名前どおり、反転に特化した型です。

Tが0なら前の状態を保持し、Tが1ならクロックごとにQを反転させます。

JK型のJとKをどちらもTへ接続すれば、Tフリップフロップとして動かせます。

D型を使う場合でも、D入力へQの反転信号を戻せば、同じ反転動作を作れます。

反転の重要な応用が、周波数を半分にする分周回路です。

入力クロックが1周期進むたびに出力が反転するため、出力が元の状態に戻るには2周期かかります。

したがって、1段のTフリップフロップで周波数は2分の1になります。

n段を直列に接続した2進カウンタでは、理想的には次の関係になります。

 f_{\text{out}} = \dfrac{f_{\text{clk}}}{2^n}

rac{f_{ ext{clk}}}{2^n}]

たとえば1kHzのクロックを3段のT型で分周すると、出力は125Hzになります。

この性質は、簡易タイマ、イベントカウンタ、デジタル時計の基礎で使われます。

設備データの時刻やクロック同期を扱う場合は、タイムスタンプとは?設備データ時刻同期の基本も関連知識になります。

 

6. RS・D・JK・Tの違い:用途別に選ぶ

フリップフロップの種類は、入力の意味と得意な用途で整理すると分かりやすいです。

RS型はセットとリセットの基本を学ぶには最適ですが、禁止入力に注意が必要です。

D型は入力値をそのまま取り込むため、レジスタや状態保持に向いています。

JK型は万能ですが、実務の論理設計ではD型へ置き換えて考える場面が多くなります。

T型は反転に特化しており、分周やカウンタの理解に役立ちます。

 

比較表で見る種類ごとの特徴

次の表は、4種類の違いを設計目線で整理したものです。

「どれが一番優れているか」ではなく、「何をさせたいか」で選ぶことが重要です。

種類 入力 主な動作 向いている用途 注意点
RS型 S、R セット、リセット、保持 基本記憶、チャタリング除去 禁止入力がある
D型 D データを取り込んで保持 レジスタ、状態機械、同期化 タイミング制約が重要
JK型 J、K 保持、セット、リセット、反転 学習用、汎用カウンタ レーシング理解が必要
T型 T 保持、反転 分周、2進カウンタ 単独のデータ保持には不向き

実務で「データを覚える」目的なら、まずD型を選ぶと考えて問題ありません。

スイッチ入力の安定化ならRS型、クロック回数を数えるならT型またはD型で作るカウンタが候補になります。

JK型は万能に見えますが、現在のデジタル設計ではD型を組み合わせて同等動作を作ることが多いです。

 

設計用途から見た選び方

レジスタを作りたい場合は、複数のDフリップフロップを同じクロックで並べます。

8個並べれば8ビット、32個並べれば32ビットの値を同時に保持できます。

状態機械を作る場合も、現在状態をDフリップフロップで保持し、次状態を組合せ回路で計算します。

この形はPLCや組込み制御でも頻繁に現れる基本構成です。

順序に従って機械を動かす考え方は、シーケンス制御とは?PLC・ラダー図・資格までとも共通しています。

スイッチやセンサの立ち上がり回数を数えたい場合は、カウンタ構成を使います。

単純な非同期カウンタならリプルカウンタ、厳密なタイミングが必要なら同期カウンタを選びます。

別クロック領域から来た信号を受ける場合は、カウンタより前に同期化回路を入れることが重要です。

通信のように、周期的に状態を確認する設計では、ポーリングとは?通信方式とイベント通知の違いの考え方も関係します。

 

7. 実務での設計注意点:初期化・同期化・タイミング

フリップフロップは単純な素子ですが、実務では周辺条件で失敗することが多いです。

特に注意すべきなのは、電源投入時の初期化、非同期信号の取り込み、タイミング制約です。

真理値表だけを見ていると、すべての入力が理想的に変化するように見えます。

実際の回路では、信号には遅延があり、ノイズがあり、電源投入直後の状態も一定ではありません。

そのため、データシートのタイミング条件とシステム全体の動作順序を合わせて確認する必要があります。

 

プリセット・クリアと初期状態

多くのフリップフロップには、クロックとは別にプリセットやクリアの入力があります。

プリセットはQを強制的に1へ、クリアはQを強制的に0へするための入力です。

これらはクロックを待たずに動くことが多く、非同期セット、非同期リセットと呼ばれます。

電源投入直後に状態が不定のままだと、モータが勝手に動いたり、通信状態が誤って開始されたりします。

そのため、起動時には全フリップフロップを既知の状態へ初期化する設計が重要です。

ただし、非同期リセットの解除タイミングにも注意が必要です。

リセット解除がクロック付近でばらつくと、一部のフリップフロップだけが先に動き出すことがあります。

安全側の設計では、リセットの投入は非同期、解除はクロックに同期させる構成がよく使われます。

この考え方は、PLCや装置制御で「既知の初期状態から始める」考え方と同じです。

 

クロックドメイン越えと同期化

実務で見落としやすいのが、異なるクロック領域をまたぐ信号です。

たとえば、外部センサ、通信IC、別基板から来る信号は、内部クロックと同期していません。

その信号をいきなりDフリップフロップへ入れると、セットアップ時間やホールド時間を偶然破る可能性があります。

その結果として準安定が発生し、まれに誤った状態が次段へ伝わります。

完全にゼロにはできませんが、2段同期化回路を使うと誤動作確率を大きく下げられます。

1段目で不安定になっても、2段目が読み取るまでに解消する時間を確保できるからです。

複数ビットのバスを別クロック領域へ渡す場合は、単純な2段同期では不十分なことがあります。

その場合は、ハンドシェイク、FIFO、グレイコードカウンタなどを検討します。

フリップフロップは小さな素子ですが、システム全体の信頼性はこの周辺設計で決まります。

 

8. よくある質問

Q1. フリップフロップとラッチは同じものですか?

厳密には同じではありません。

ラッチは制御信号が有効な間に入力を通すレベル制御型で、フリップフロップはクロックエッジで入力を取り込むエッジ制御型です。

ただし、広い意味ではどちらも1ビットを保持する順序回路の仲間です。

初心者は、ラッチは「期間で動く」、フリップフロップは「瞬間で動く」と覚えると混乱しにくくなります。

同期式のCPUやFPGA設計では、タイミングをそろえやすいDフリップフロップが中心になります。

 

Q2. RS型の禁止入力はなぜ危険ですか?

RS型の禁止入力は、セットとリセットを同時に命じる矛盾した状態だからです。

NOR型の正論理RS回路では、SとRを同時に1にするとQと反転出力の関係が崩れます。

さらに、その入力を同時に解除した瞬間、どちらの状態へ落ち着くかが遅延差やノイズに左右されます。

そのため、設計では禁止入力が論理的に発生しないようにインターロックを作ります。

単に「使わないつもり」ではなく、回路として同時成立しない条件にすることが重要です。

 

Q3. 実務ではなぜDフリップフロップが多いのですか?

Dフリップフロップは、入力がDの1本で、クロックエッジの値をそのまま保持できるためです。

RS型のような禁止入力がなく、JK型のように複数の動作を同時に考える必要もありません。

状態機械では「次に保持したい値」を組合せ回路で作り、それをD入力へ与えれば済みます。

この構造は合成ツールやFPGAとの相性がよく、大規模な同期回路を設計しやすくします。

カウンタやT型相当の動作も、D入力へ適切な論理を入れれば再現できます。

 

Q4. Tフリップフロップを使うと本当に周波数が半分になりますか?

T入力を1に固定し、クロックごとに必ず反転させる条件なら、出力周波数は半分になります。

出力Qが0から1へ変わり、次のクロックで1から0へ戻るため、出力1周期に入力2周期が必要です。

したがって、1段で2分周、2段で4分周、3段で8分周になります。

ただし、リプルカウンタでは段ごとに伝搬遅延が積み重なるため、高速用途では同期カウンタを検討します。

周波数だけでなく、許容遅延と出力の一時的なグリッチも確認する必要があります。

 

9. まとめ

フリップフロップは、0または1の状態を保持できる1ビットの記憶回路です。

組合せ回路と違い、過去の状態を内部に持つため、順序回路の中核になります。

RS型はセットとリセットの基本を学べますが、禁止入力を必ず避ける必要があります。

D型は入力をそのまま保持でき、レジスタ、状態機械、同期化回路で最も広く使われます。

JK型はRS型の禁止入力を反転動作に置き換え、T型はその反転動作を分周やカウンタに使います。

実務では、真理値表だけでなく、セットアップ時間、ホールド時間、初期化、非同期信号の同期化まで確認します。

フリップフロップを正しく理解すると、レジスタ、カウンタ、PLC、マイコン内部の状態保持が一段と読み解きやすくなります。