デジタル回路入門3回目となる今回は、「順序回路」とその動作の要となるフリップフロップについて解説します。

順序回路とは?

前回学んだ「組み合わせ回路」は、現在、どのような信号が入力されているかにより、出力が1つに決まる回路でした。

言い換えると、過去の入力に現在の出力が左右されない回路、過去の入力状態を現在の出力に反映することができない回路とも言えるでしょう。

今回解説する「順序回路」は、「組み合わせ回路」ではできない、現在の入力に加えて、過去の入力により出力を決定する論理回路です。

 

「順序回路」が、過去の入力を現在の出力に反映させるために必要とするものは何でしょう。それは、私たち人間が、過去に基づいて行動するために要するもの・・・記憶です。この記憶の機能を実現するものをフリップフロップと呼びます。

フリップフロップは、構造と機能によってRS型、JK型、D型、T型といった種類があります。ここではその代表格、RS型とD型を解説します。

 

フリップフロップはシーソー

フリップフロップとは、日本語の「ギッタンバッコン」と同様の意味を持つ英語の擬音から名づけられました。ギッタンバッコンと言えば、公園にあるシーソーを思い出しませんか。

RSフリップフロップの動作をシーソーに例えてみていきましょう。

 

最初に、下の図2のようなシーソーを思い浮かべてください。このシーソーは、少し錆びてしまっていて、誰も乗っていなくても水平に戻ることはありません。傾いたままが保持されると考えてください。

図1:RSフリップフロップの回路図

図1 RSフリップフロップの回路図

  • シーソーの両端がQとQ#の出力を表しています
  • 左右のR君とS君が入力を表しています、シーソーに乗ることが論理のHに対応し、降りた状態がLに対応します。
    (R君とS君は同時に1人しかシーソーには乗りません。)

図2:シーソーの初期状態(Q=L、Q#=H、R=L、S=L)

図2 シーソーの初期状態(Q=L、Q#=H、R=L、S=L)

シーソーにS君が乗ると(S=H)、QがH(Q#がL)になります(図3)。

図3 シーソーにS君が乗った状態(Q=H、Q#=L、R=L、S=H)

図3 シーソーにS君が乗った状態(Q=H、Q#=L、R=L、S=H)

シーソーの動きが悪いのでS君が降りても(S=L)、Q#がLのままです(図4)。

図4:シーソーにS君が乗り、その後、降りた状態(Q=H、Q#=L、R=L、S=L)

図4 シーソーにS君が乗り、その後、降りた状態(Q=H、Q#=L、R=L、S=L)

S君に代わり、R君がシーソーに乗った場合は、QがL(Q#がH)になり、降りても同様に保持することとなります。このようなシーソーの動きは、以前に乗った人を覚えている(記憶している)と言えるでしょう。

 

RSフリップフロップの動作を、真理値表を用いて表します(図5)。表中のQ0、Q0#は、入力が変化する以前の出力を意味します。

RSフリップフロップは、最も簡単なフリップフロップです。主に、機械式スイッチの誤動作を防止する機能などに用いられます。

機能 S R Q Q#
セット H L H L
リセット L H L H
保持 L L Q0 Q0#
禁止 H H L L

図5 RSフリップフロップの真理値表

クロック変化に合わせて記憶する、Dフリップフロップ

Dフリップフロップは、クロック信号(CK)の立ち上がり(信号がL→Hに変化すること)や立ち下り(信号がH→Lに変化すること)のタイミングで入力信号の状態を保持し、出力を変化させるフリップフロップです。

図6 Dフリップフロップ

図6 Dフリップフロップ

入力 出力
CK D Q Q#
L L H
H H L
↑以外 x Q0 Q0#

Q0:入力が変化する前の出力
x:HでもLでもよい
↑:LからHへの遷移
図7 RSフリップフロップの真理値表

Dフリップフロップを先ほどのシーソーで説明します。初期状態を図8とします。D君がシーソーに乗ると入力がH、降りるとLです。シーソーの反対側には、D君より軽い重りが乗っています。また、このシーソーは一般的なシーソーと異なり、傾きが変化するのはCKが立ち上がった時だけです。

図8:Dフリップフロップの初期状態(CK=L、D=H、Q=L、Q#=H)

図8 Dフリップフロップの初期状態(CK=L、D=H、Q=L、Q#=H)

図8を見て、少し変だと思いませんか。この図では、D君が乗ってもシーソーが変化していません。本来であればD君は重りより重いので、D君側(Q#)が下がるべきですが、CKがLのままなのでシーソーが傾きません。

この状態で、CKがHに変化(CKが立ち上がった)すると、シーソーが動くようになり、D君側にシーソーが傾きます(図9)。

図9:DフリップフロップのCKが立ち上がった状態(D=H、Q=H、Q#=L)

図9 DフリップフロップのCKが立ち上がった状態(D=H、Q=H、Q#=L)

その後、CKがHに安定した状態でD君がシーソーから降りたり、再度乗ったりしてもシーソーは傾きません。CKが立ち上がりの状態にならなければ以前の状態が保持されます。

 

このような動作をするフリップフロップが、Dフリップフロップと呼ばれています。クロックが立ち上がった瞬間の入力状態を保持する(記憶する)機能をもった、クロック同期の順序回路です。

Dフリップフロップは順序回路の基本となり、用途の広い回路です。Dフリップフロップを多段につなげることで、シフトレジスタや分周回路などが作成できます。また、CPU内部のレジスタなどにも用いられています。

クロック同期回路の必要性

前回の「組み合わせ回路」と今回の「順序回路」、2回にわたり論理回路の基礎を解説してきました。実際に、論理回路を設計しようとすると、注意すべきことが数多くあります。その中でも特に重要なクロック同期回路についてお話をしましょう。

「組み合わせ回路」では、微妙な信号伝達の遅延により、出力にグリッチと呼ばれる極めて短期間の信号が出力されることがあります。このグリッチは、論理回路の誤動作を引き起こすため、この問題を回避するためにクロック同期回路が用いられます。

図10:クロック同期回路の考え方

図10 クロック同期回路の考え方

上の図10は、クロック同期回路の概要を表しています。この図を見てわかるように、「組み合わせ回路」がFF(フリップフロップ)に挟まれている構造をしています。

グリッチは「組み合わせ回路」の出力が安定するまでの短時間に出力される信号です。従って、「組み合わせ回路」の出力が安定してから、クロックを変化させてフリップフロップでその出力を保持すれば、誤動作を回避することができます。

 

今回でデジタル回路入門の全3回は終了です。「デジタルとは?」から始めて、「基本論理回路」、「デジタルICの基礎」、「組み合わせ回路」、「順序回路」を駆け足で解説してきました。

実際に回路を設計するには、まだまだ、たくさんのことを学ばなければなりません、ぜひ時間を設けてご自分で勉強を続けてください。