Dフリップフロップ

概要

Dラッチは、入力Gが1になっている間入力D(データ)の値を出力Qに出し続ける。一方入力Gにクロックパルスが与えられる場合、入力データの値をクロックパルスの立ち上がりで一度だけ記憶・出力して、次のクロックの立ち上がりまでその出力を保持したいときには、Dラッチではうまくいかない。

Dフリップフロップはこのような場合に使う。Dフリップフロップ回路は、以下の様にDラッチを2つ連ねた形をしている。

この回路は、CLKの入力が0→1に立ち上がった時のDの値を保持し、次に再びCLKが0→1に立ち上がるまでその値を保持し続ける。

基本的なDフリップフロップは以下のようなシンボルで表される。

仕組み

前段・後段それぞれのラッチのGに与える信号を反転させているのがミソで、以下のような流れになる。

  • クロックレベルが0のときは前段のラッチが入力状態、後段のラッチが保持状態となる
    • 前段のラッチは入力の値を出力し続ける
    • 後段のラッチは前段の値に関わらず保持内容を出力し続ける
  • クロックレベルが1になると、前段のラッチが保持状態、後段のラッチが出力状態になる
    • 前段のラッチはそれまでの入力内容を保持する
    • 後段のラッチは前段の保持内容を出力し始める
  • 再びクロックレベルが0になっても、後段のラッチは前のステップで入力された値を保持し続ける

イメージで図にすると以下の様になるだろうか。

回路図での確認

Dフリップフロップの動作を回路図で確認すると以下の流れになる。

初期状態として、すべての端子の信号レベルが0の状態とする。このとき前段のG1への入力のみ反転して1となり、前段のラッチは出力状態、後段のラッチは保持状態となっている。

その状態で入力が1となった場合。前段が出力状態となり1を出力するが、後段は保持状態のため、最後の出力は変化しない。

ここでクロックが1となると、前段が保持状態、後段が出力状態となり、最後の出力が1に変わる。クロックが1の間に入力値が変化しても、立ち上がり時の値が前段で保持されているので、出力は変わらない。

その後クロックが0となると、後段が保持状態となり、最後の出力が維持される。

その後入力信号が0となっても、後段で保持されている値が出力され続ける。

タイミングチャート

Dフリップフロップの動作をタイミングチャートで見てみた。下図の緑/オレンジの色がついている部分が前段/後段がSetの状態、色がついていない部分がそれぞれのHoldの状態。

各ステップでの状態は以下の様に推移する。

Step CLK 入力 前段の状態 前段の出力 後段の状態 後段の出力
a 0 0 Set 0 Hold 0
b 0 1 Set 1 Hold 0
c 1 1 Hold 1 Set 1
d 0 1 Set 1 Hold 1
e 0 0 Set 0 Hold 1
f 1 0 Hold 0 Set 0
g 1 1 Hold 0 Set 0
h 0 1 Set 1 Hold 0

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です