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

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

前回は基本的なゲート回路についておさらいしました。

今回も、もう少しおさらいを続けてみます。

RS フリップフロップ

フリップフロップは、1 ビットの情報を記憶することができる論理回路。
RS フリップフロップは、リセット (Reset) とセット (Set) の2つの入力があるフリップフロップです。74HC シリーズでは 74HC279 が相当すると思います。

SRQQ
00QnQn
0101
1010
11
図 1 RS-FFの真理値表

入力 S に “1” が入力されると出力 Q が “1” となり、S が “0” に戻っても Q は “1” のまま保持されます。入力 R に “1” が入力されると Q は “0” になり、同様にこの状態が保持されます。「保持」しているということは、その値を「記憶」しているということになるわけね。

S と R がともに “1” になることは、一般に禁止されているといわれますが、74HC279 では S が優先され、Q が “1” になるようです。

Q は Q の反転した出力です。

実験回路

残念ながら 74HC279 なんて IC は部品箱にないので、NAND ゲート 74HC00 で作ってみました (図 2)。

図 2 RS-FFの実験回路

右側の論理回路が、NAND で作った RS フリップフロップです。
左上は入力回路、左下は出力回路で、入出力が “1” のときに LED が点灯します。

電源投入時に、出力の LED3 (Q)、LED4 (Q) のどちらが点灯するかは不定です。実験回路では、常に LED3 (Q) が点灯しましたが、それは個性でしょう。
押しボタン SW1 を押すと、入力の LED1 (S) と出力の LED3 (Q) が点灯します。 SW1 を離すと LED1 (S) は消灯しますが、LED3 (Q) は点灯したままです。つぎに SW2 を押すと、 LED3 (Q) が消灯し、入力の LED2 (R) と出力の LED4 (Q) が点灯、離すと LED2 (R) は消灯、LED4 (Q) は点灯のままです。

2 つの入力が “1” の「禁止」とは

禁止されているという 2 つの入力を “1” にしたとき、実験回路では Q も Q も “1” になります。

たとえば、Q が “1” のときに S を “1” にすると、NAND ゲート U4 の A 入力は “0” になります。NAND ゲートでは入力のどちらかが “0” なら出力は “1” ですから、Q は “1” で変化ありません。ここで、R も “1” にすると、U3 の B 入力が “0” になるので Q が “1” に変化します。しかし、U4 の A 入力は “0” のままなので、Q も “1” のままです。
結果、Q も Q も “1” になります。

なぜ「禁止」なのでしょう?

第 1 には、これでは「Q の反転したものが Q である」という規則に違反します。Q を利用するときには注意が必要。まぁ、そんな規則、なくしてしまえば問題はなくなるとゆー、それだけの話。

第 2 に。そこで、2 つの押しボタンを同時に離したら、LED3 (Q) と LED4 (Q) のどちらが点灯するでしょうか? 瞬間でも離すのが遅れたほうが点灯します。万が一同時だったら? Q と Q が一瞬 “0” になろうとするかもしれませんが、すぐにどっちかへ転びます。この「どっちかへ転ぶ」ってところが不定といわれる所以で、要注意なポイント。
遷移した状態が不定だから、そうなる前の状態を「禁止」している、わけ。

ところで、「離すのが遅れたほうが点灯する」ってことは、早押しボタンに応用できません?

早押しボタン回路

作っちゃいましょ (^_^;)

図 4 早押しボタンの回路

SW1 と SW2 が競技者の押しボタン、SW3 はリセットボタンです。
回路は負理論になっていますので、LED は “0” で点灯、”1″ で消灯します。

リセットボタンを押すと、入力側 (中央 U1~U4) の 2 つの RS フリップフロップがリセットされ、それぞれの出力は “0” になります。
出力側 (右 U5~U6) のフリップフロップの入力は、S も R も “0” なので、出力はどちらも “1” で LED は消灯しています。
いわゆる「禁止」の状態になっています。

SW1 を押すと、入力の上側 RS フリップフロップ U4 の出力が “1” になり、U5 の出力が “0” となって LED1 が点灯。その後に SW2 を押しても、LED2 は点灯しません。
同様に、SW2 を先に押すと LED2 が点灯。その後 SW1 を押しても変化はありません。

ってことで、早押しボタン回路ができました。あー、この回路でなにか勝負でもして損害被っても、俺は責任持ちませんので、そこんとこよろしく (;´Д`)

ブレッドボード

図 5 ブレッドボードの早押しボタン回路

左の 2 つの押しボタンが競技者用ボタン。
変換基板に載った IC は、次回利用しようと試作したクロック回路で、今回の早押しボタン回路には使っていません。
次がリセットボタンで、2 つの DIP が 74HC00 。その右が出力 LED です。
右端は 5V 電源回路です。

製作後記

74HC279 という RS フリップフロップ (RS ラッチ) IC は、S と R を同時に “1” にしたとき S が優先され、出力 Q が “1” になるそうです。じつは、この IC には Q という出力がありません。なので、「Q の反転したものが Q である」という規則が存在しません。ということです。
同時に “0” にしたときは前の状態を保持するのですから、Q は “1” ですね。これは、どこかでタイミングをずらすとか、バランスを崩すとかしてやって、優先的に Q が “1” になるような個性を与えればよいのだろうと思います。じっさいのところは、しりません m(_ _;)m

もちろん、IC によって、回路によって、さまざまな構成や条件や規則があるので一概にはいえませんが、今回作ってみた早押しボタン回路のように、積極的にその状態を利用することもアリですね。

RS フリップフロップの入力 S と R を同時に “1” にするのは、「不定」だとか「禁止」だとか。なんとなくそんなもんだと思っていましたが、再確認してみるのも必要なことかもしれません。

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