コンピュータ・アーキテクチャ 第5回


フリップフロップの設計

非同期式のフリップフロップを用いて同期式のフリップフロップを 設計してみましょう。

非同期SR-flipflop回路図特性表励起表記号
$S$$R$$Q_{n+1}$
$0$$0$$Q_{n}$
$0$$1$$0$
$1$$0$$1$
$1$$1$定義されず
$Q_n$$\rightarrow$$Q_{n+1}$$S$$R$
$0$$0$$0$$\phi$
$0$$1$$1$$0$
$1$$0$$0$$1$
$1$$1$$\phi$$0$

非同期式の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-FFからD-FFへの変換

変換回路は励起表を書くことによって得られます。




SR-FFからT-FFへの変換

これも同様に変換回路は励起表を書くことによって得られます。


カルノーマップを用いて、以下のような変換回路をつけると SR フリップフロップから Tフリップフロップが得られることがわかります。


$(訂正)図中のR=T \cdot Q_n$ は右下の領域。

このように、フリップフロップは相互に変換可能であり、このような変換回路の 設計法は順序回路設計の最も簡単な例となります。

SR-FF から JK-FF への変換

Sr-FF_to_JK-FF.pdf

マスタスレーブ形とエッジトリガ形

(クロックが1の間状態が変更することができる)パルストリガー形の フリップフロップでは、不都合が起きることがあります。

上の図の回路で、

と仮定します。
  1. 初期状態は Q=0 です。
  2. クロックが与えられた時点でS入力が 1 となり、t1 後に フリップフロップがセットされます(Q=1となります)
  3. t2 (組合せ回路の遅延時間)後には R=1 となり、Q=0 に変化します。
  4. t1 後に S=1 となり、Q=1に変化します。
  5. 3, 4 を繰り返します(クロックが1の間 Q の値は変化し続けます)。

これまでに示した、各種の同期式フリップフロップではいずれも この問題が起きます。 この問題を避けるには、クロックのパルス幅を十分小さくすればよいのですが、 もっと確実な方法としては、フリップフロップを2段設けて、 クロックの立ち上がりで第1のフリップフロップ(マスター・セル) をセットし、クロックの立ち下がりで第2のフリップフロップ (スレーブ・セル)に信号を渡すようにします。 このようにしたのがマスタースレーブ形のフリップフロップです。


上に示した「マスタースレーブ形のJKフリップフロップ」の回路では クロックによって第1のセルに入力を与え、これを反転したクロックで 第2のセルに入力を与えています。 したがって、Qの出力情報が現れるのはクロックの立ち下がり時です。 クロックの立ち下がりで動作するという意味でクロックに負論理の記号を 付けて表します。

マスタースレーブ型のフリップフロップではクロックが1のとき、 入力信号は変化してはいけません。クロックが1→0に変化するとき 出力に変化が現れますから、伝搬遅延はクロックの立ち下がりから 出力の立ち上がりの間の遅延として定義されます。
クロック幅に等しい遅延が生じますがこれは普通は問題にはなりません。

クロック幅に等しい遅延が生ずることが望ましくない場合は、 エッジトリガ(edge trigger)形のフリップフロップを使います。 エッジトリガ形フリップフロップではクロックパルスの立上がり または立下がり時における入力にフリップフロップが応答します。 エッジトリガ形Dフリップフロップの例を示します。

D入力以外に ~clear 端子があり、普段はこれは 1 ですが、 リセットしたいときには ~clear を 0 にします。

EdgeTrigger-DFF-StateTransition.pdf