クロックの立ち上がりで入力Dの値をそのまま記憶するフリップフロップ。
Dフリップフロップとは、クロック(=一定間隔で0と1を繰り返す合図の信号)のタイミングで、入力Dの値をそのまま記憶する回路のことです。データ(Data)の頭文字をとってD型と呼びます。
身近な例で考えると、カメラのシャッターに似ています。シャッターが切れた瞬間(クロックの合図)の景色(D)だけが写真(Q)として記録され、その後に景色が変わっても写真はそのまま残ります。合図のタイミングだけ値を写し取るのがポイントです。
上のツールで▶ボタンを押すと、Dを変えてもクロックの立ち上がりが来るまでQが変わらず、立ち上がりの瞬間にDの値がQへコピーされる流れをタイムチャートで確認できます。
Dフリップフロップが値を取り込むのは、クロックの「エッジ(端)」の瞬間だけです。エッジとは信号が切り替わる瞬間のことで、特に0から1へ変わる瞬間を立ち上がりエッジと呼びます(多くのD型はこのタイミングで動きます)。
動作の流れは次のとおりです。
・立ち上がりを待つ:その間にDが変わってもQは反応しない
・立ち上がりの瞬間:そのときのDの値をQにコピー(ラッチ=かんぬきで固定)
・次の立ち上がりまで保持:Qは取り込んだ値を覚え続ける
このように「Q = D(クロックエッジで更新)」という関係が成り立ちます。決まったタイミングでだけ値を取り込むので、たくさんの回路の足並みをそろえて動かすことができます。上のツールで、立ち上がりの区間だけQが更新される様子を確認してください。
Dフリップフロップは入力が1本(D)だけで値をそのまま記憶できるシンプルさから、コンピュータの中で「データを覚えておく」あらゆる場面で使われます。
代表的な用途は次のとおりです。
・レジスタ:D-FFを複数個横に並べると、数ビットのデータをまとめて保持できる記憶素子(=レジスタ)になる
・シフトレジスタ:D-FFを数珠つなぎにすると、クロックごとに値を隣へ送れる
・タイミング合わせ:信号をクロックにそろえて取り込み、回路全体の歩調をそろえる
たとえば8ビットのデータを覚えるレジスタは、D-FFを8個横に並べ、同じクロックで一斉に取り込ませて作ります。CPUの内部にあるレジスタも、もとをたどればこのD-FFの集まりです。地味な部品ですが、コンピュータの記憶を支える土台になっています。