アフィリエイト広告
アフィリエイト広告

論理回路 / Dフリップフロップ

前回は、プライマリ・レプリカ型 RS フリップフロップを作ってみました。

ここまで、RS フリップフロップについておさらいしてきましたが、今回は D フリップフロップについてみていこうと思います。

D フリップフロップ

D フリップフロップとは、入力 D を読み込み、その値を保持する回路です。ん? RS フリップフロップと何が違うん?
RS フリップフロップは、S の押しボタンを押すと Q の LED が点灯し、R を押すと LED が消灯する。つまり、S がオンの押しボタンで、R がオフの押しボタン。
D フリップフロップは、押しボタンを 1 個にして、押しているあいだ LED がオン、離すとオフする回路。それだけじゃ芸がないので、クロックに同期させます。

D フリップフロップの基本回路

中心となるのは、やっぱり RS フリップフロップ。この場合は「RS ラッチ」と呼ぶのがお作法らしいです。

図 1 RS ラッチを使った D フリップフロップ

図 2 NAND ゲートのみの D フリップフロップ

RS ラッチの S と R に、たがいに反転した入力を与えることで D フリップフロップになります (図 1)。

RS ラッチの入力は D=S=R なので、D=0 のとき Q=0、D=1 のとき Q=1 となります。クロックで入力ゲートを制御していますので、クロックが “1” のときに出力が変化するバイステーブル・ラッチです。

ところで、ネットでみかける D フリップフロップは図 2 のような回路です。これは入力 R として、入力ゲート U4 の出力を利用したものです。

ここで、入力を D、クロックを CLK、入力ゲート U4 の出力を Si、U1 の出力を Ri とします。
図 1 の回路では、

同様に図 2 では、

となって、両者は同じであることがわかります。

実験回路図

今回実験してみた D フリップフロップの回路図です (図 3)。

図 3 D フリップフロップ実験回路

CLKDQQ
0XQnQn
1001
1110
図 4 D フリップフロップ真理値表

入力の押しボタンは 1 個だけになります。出力の LED は、Q と Q の 2 つ、もうひとつの LED はクロックを表示します。いずれも正理論です。
クロックは、インバータを使った矩形波発振回路です。周期 1000ms のクロックを出力します。

この回路は、真理値表に示すように、クロックが “1” のとき、入力 D に応じて出力 Q が変化します。クロックが “0” のときは、D が変化しても、出力は変化しません。
このようなバイステーブル・ラッチは、74HC75 が相当します。また、一般には「D ラッチ」と呼ぶようです。

プライマリ・レプリカ型 D フリップフロップ

クロックのエッジに同期させるために、プライマリ・レプリカ型に構成してみましょう。

図 5 プライマリ・レプリカ型 D フリップフロップ 実験回路

CLKDQQ
0XQnQn
1XQnQn
XQnQn
001
110
図 6 プライマリ・レプリカ型 D-FF 真理値表

前回作ったプライマリ・レプリカ型 RS フリップフロップと同じように、D ラッチをプライマリとレプリカとして連結し、それぞれに反転したクロックを与えます。

クロックが “0” のときにプライマリが入力 D を読み取り、出力を保持。クロックが “1” になると、プライマリの出力をレプリカが読み取り、出力が決まります。

これで、クロックのエッジに同期する D フリップフロップができました。内部のタイプは異なるのですが、74HC シリーズでは 74HC74 が相当します。

エッジトリガ型 D フリップフロップ

D フリップフロップには、「エッジトリガ型」というタイプもあります (図 7)。

NAND ゲート 6 個で構成されているのですが、ゲート G3 は 3 入力なので、G3-a、G3-b、G3-c の3つの2入力NANDゲートを組み合わせています。こういうのは、厳密には、遅延が起きたりするのでやめたほうがいい。でもまぁ、押しボタンをポチポチする実験ですから m(_ _;)m

動作的には、プライマリ・レプリカ型と同じように、クロックのエッジに同期します。真理値表は図 6 と同じです。

図 7 エッジトリガ型 D フリップフロップ 実験回路

エッジトリガ型 D フリップフロップの動作

ちょっと動作が難しい。頭痛くなります。 (;´Д`)

クロック CLK=0 のとき、G2、G3 の出力は 1 です。G2、G3 の出力は後段の RS ラッチの入力ですから、ともに 1 ということは、入力 D がなんであれ、出力は変化しないということ。

D=0 のとき、G4 の出力は 1。このとき CLK=1 になると、G3 出力が 0 になって、Q=0 になる。CLK=0 に戻っても、G2 出力が 1 なので、RS ラッチは保持されている。

D=1 のとき、G4 出力が 0、G1 出力が 1 になる。G1 出力は G2 の入力、ここも 1。このとき CLK=1 になると、G2 出力が 0 になるので、Q=1 になる。CLK=0 に戻っても、G3 出力が 1 なので、RS ラッチは保持される。

CLK=1 のとき、D が変化しても、G4 出力は変化するが、G1、G3 に阻止されて RS ラッチは変化しない。

って感じです。

後記

図 8 分周回路

図 9 分周回路の波形

図 8 は D フリップフロップの回路記号です。上の NAND で作ったような D フリップフロップがブラックボックスになっている。

で、図 8 がなにやってるかというと、出力 Q を、自分自身の入力 D に戻している。D=0 のとき クロックが入ると Q=1 になる。それが D に入力されるので、次のクロックで Q=0 になる。結果、クロックが入るたびに Q はオンオフを繰り返すことになります。

そのときの波形が、図 9 です。黄色がクロック、青色が出力 Q。
クロックの周期が 1 秒なのに対して、Q の周期が 2 秒になってる。つまり、周期が倍になった (周波数が半分になった) ということ。
これを「分周回路」と呼びます。

フリップフロップを使っていろいろな動きをする回路が作れる。こうした回路については、またあらためて試してみたいと思います。

ところで、入力の押しボタンとか、出力の LED とか、クロックの発振回路とかは「デジタル回路」の範疇じゃないんだとか? いろいろな論理回路をみて、どんな動きするのか考えるのは、それはそれで楽しい。だけど、なんの信号入れて、出てきた信号をどこへ持っていくのか、そんなことももっと知りたいですね。

タイトルとURLをコピーしました