非同期式のフリップフロップを用いて同期式のフリップフロップを 設計してみましょう。
非同期SR-flipflop回路図 | 特性表 | 励起表 | 記号 | ||||||||||||||||||||||||||||||||||||
|
|
非同期式のSRフリップフロップは上記のように書けるので、下図の"?"の 部分の回路を設計すればよいことになります。
特性表を用いて、「セット」「リセット」の部分に接続する回路の カルノーマップを書くと以下のようになります。
$C$ | $S$ | $R$ | $Q_n$ | $Q_{n+1}$ | セット | リセット |
$0$ | $0$ | $0$ | $0$ | $0$ | $0$ | $\phi$ |
$0$ | $0$ | $0$ | $1$ | $1$ | $\phi$ | $0$ |
$0$ | $0$ | $1$ | $0$ | $0$ | $0$ | $\phi$ |
$0$ | $0$ | $1$ | $1$ | $1$ | $\phi$ | $0$ |
$0$ | $1$ | $0$ | $0$ | $0$ | $0$ | $\phi$ |
$0$ | $1$ | $0$ | $1$ | $1$ | $\phi$ | $0$ |
$0$ | $1$ | $1$ | $0$ | $0$ | $0$ | $\phi$ |
$0$ | $1$ | $1$ | $1$ | $1$ | $\phi$ | $0$ |
$1$ | $0$ | $0$ | $0$ | $0$ | $0$ | $\phi$ |
$1$ | $0$ | $0$ | $1$ | $1$ | $\phi$ | $0$ |
$1$ | $0$ | $1$ | $0$ | $0$ | $0$ | $\phi$ |
$1$ | $0$ | $1$ | $1$ | $0$ | $0$ | $1$ |
$1$ | $1$ | $0$ | $0$ | $1$ | $1$ | $0$ |
$1$ | $1$ | $0$ | $1$ | $1$ | $\phi$ | $0$ |
$1$ | $1$ | $1$ | $0$ | ($\phi$) | $\phi$ | $\phi$ |
$1$ | $1$ | $1$ | $1$ | ($\phi$) | $\phi$ | $\phi$ |
フリップフロップの入力に適切な変換回路を設けることによって、 フリップフロップの相互変換を行なうことができます。
変換回路は励起表を書くことによって得られます。
これも同様に変換回路は励起表を書くことによって得られます。
カルノーマップを用いて、以下のような変換回路をつけると SR フリップフロップから Tフリップフロップが得られることがわかります。
このように、フリップフロップは相互に変換可能であり、このような変換回路の 設計法は順序回路設計の最も簡単な例となります。
(クロックが1の間状態が変更することができる)パルストリガー形の フリップフロップでは、不都合が起きることがあります。
上の図の回路で、
これまでに示した、各種の同期式フリップフロップではいずれも この問題が起きます。 この問題を避けるには、クロックのパルス幅を十分小さくすればよいのですが、 もっと確実な方法としては、フリップフロップを2段設けて、 クロックの立ち上がりで第1のフリップフロップ(マスター・セル) をセットし、クロックの立ち下がりで第2のフリップフロップ (スレーブ・セル)に信号を渡すようにします。 このようにしたのがマスタースレーブ形のフリップフロップです。
上に示した「マスタースレーブ形のJKフリップフロップ」の回路では クロックによって第1のセルに入力を与え、これを反転したクロックで 第2のセルに入力を与えています。 したがって、Qの出力情報が現れるのはクロックの立ち下がり時です。 クロックの立ち下がりで動作するという意味でクロックに負論理の記号を 付けて表します。
マスタースレーブ型のフリップフロップではクロックが1のとき、
入力信号は変化してはいけません。クロックが1→0に変化するとき
出力に変化が現れますから、伝搬遅延はクロックの立ち下がりから
出力の立ち上がりの間の遅延として定義されます。
クロック幅に等しい遅延が生じますがこれは普通は問題にはなりません。
クロック幅に等しい遅延が生ずることが望ましくない場合は、
エッジトリガ(edge trigger)形のフリップフロップを使います。
エッジトリガ形フリップフロップではクロックパルスの立上がり
または立下がり時における入力にフリップフロップが応答します。
エッジトリガ形Dフリップフロップの例を示します。
D入力以外に ~clear 端子があり、普段はこれは 1 ですが、
リセットしたいときには ~clear を 0 にします。