Learning logic circuits by Minecraft (part 9).
前回に続き、マイクラで論理回路(ろんりかいろ)を学ぼう、の第 9回目です。今回は、フリップフロップという面白い回路を勉強しましょう。
シリーズの記事一覧は、こちらです。
このページをふりがな付きで読みたいときは、こちらをクリックしてください!(「ひらひらのひらがなめがね」さんのサービスを使わせて頂いています。)
組み合わせ(くみあわせ)回路と順序(じゅんじょ)回路
いきなり難しい言葉が出てきましたが、頑張りましょう。
今回のシリーズで、これまで出てきた論理回路は、全て「組み合わせ(論理)回路」というものでした。論理回路には、入力信号(0 や 1 の信号が入ってくるところ)と出力信号(出て行くところ)があります。前回までに真理値表(しんりちひょう)というものも習いました。真理値表は、すべての入力の組み合わせに対して、出力がどうなりますよ、ということを、表にまとめたものです。
組み合わせ回路では、入力の組み合わせが決まると、出力が必ず決まります。例えば AND(アンド)回路では、入力信号の全てが 1 であれば、出力は必ず 1 になります。そうでないときは、出力は必ず 0 になります。
ところが、今回紹介する順序(論理)回路では、入力が決まっても、出力が決まらない(分からない)ことがあるのです!
順序回路の考え方を正しく説明するには、高校生くらいの数学の勉強が必要になってきますので、今回は、「SR フリップフロップ回路は、順序回路の一つなんだ。入力が同じでも、出力がいつも同じとは限らないんだ」ということだけ、覚えて貰えばだいじょうぶです。
SR フリップフロップ
SR(エスアール)フリップフロップは、略して SR-FF(エスアール・エフエフ)と呼ぶこともあります。
補足: フリップフロップ以外に「ラッチ」という技術もありますが、分かりやすさのため、ここでは全てフリップフロップという用語に統一します。
フリップフロップ(flip-flop)とは、英語で「とんぼ返り」「宙返り」といった意味だそうです。パタン、パタンとひっくり返るもの、といったところでしょうか。あるいは、公園にある遊具のシーソー(ぎったん・ばっこん)をイメージして貰えば分かりやすいと思います。
SR フリップフロップの SR とは、Set(セット), Reset(リセット)の略です。「セット(S)」と「リセット(R)」という 2つの入力信号があり、それらに真(しん)あるいは 1 を入力するたびに、回路をセットしたりリセットしたりすることができます。一度セットしたり、リセットしたりした SR フリップフロップは、S と R がいずれも偽(ぎ)あるいは 0 のときは、回路の「状態」が変化せず、ずっと同じ状態を保ち続ける働きがあります。
ちょっと難しいですね。図を書いて説明しましょう。
タイミング図について
組み合わせ回路のタイミング図
以下で示す図は、タイミング図(timing diagram)と呼ばれるものです。時間が経つに連れて、論理回路の信号がどのように変化するのかを示すものです。
まずは、AND 回路を使ってタイミング図を見方を学びましょう。AND 回路は、こんな記号で表す基本的な論理回路でした。
入力 A と B に 0 や 1 を入れたときに、出力 X がどのように変化するかを示してみましょう。
この入力は、このように入力しなくてはいけない、という意味ではなく、もしこのように入力したら、という意味だと考えてください。図の横軸は時間になっていて、左から右に時間が進んでいきます。
図の左端では、入力の A と B がいずれも 0 であることを示しています。(図では、0 のときは低い線、1 のときに高い線になります。)
AND 回路では、このような入力のとき、出力が 0 になることを習いましたね。ですので、この部分は正しい図になっています。
さて、縦線一つ分だけ右を見てください。時間が少し進んで、入力 A が 1 になりました。ここでも、出力 X は 0 のままです。さらに一つ時間が進んで入力 B も 1 になりました。そうすると、AND 回路の決まりにより、出力 X は 1 になります。 最後に、もう一つ時間が進んで入力 A が 0 になると、出力 X は 0 になります。
なお、組み合わせ回路では入力が決まれば出力が決まるので、実は、このようなタイミング図がなくても、真理値表だけで回路を理解することができます。ところが、SR フリップフロップでは、そうはいかないのです!
SR フリップフロップのタイミング図
SR フリップフロップは、回路図では次のような記号で表します。
S(セット)と R(リセット)が入力で、出力は一般に Q と Q バー(上線)で表します。Q バーは、通常は Q の NOT になるので、使わなければ書く必要はありません。今回も、Q バーは使いません。
SR フリップフロップのタイミング図の例を示します。
これも左側から見ていきます。
最初に、出力 Q の波形に斜線が引かれていますが、これは「不定(ふてい)」という意味です。つまり、0 でも 1 でも良い、あるいは、0 か 1 か分からない、という意味です。
時間が一つ進んで、S が 1 になりました。S はセットの信号なので、ここで Q がセットされて 1 になります。Q がもともと 1 だった場合は、ここでは Q は変化しません。
さらに時間が一つ進んで、S が 0 になりました。S も R も 0 のときには、SR フリップフロップの状態に変化がなく、前の状態が続きます。
さらに時間が一つ進んで、今度は R が 1 になりました。R はリセットの信号なので、ここで Q はリセットされて 0 になります。
次に、R が 0 になりますが、ここでも Q の状態は変わりません。
さらに時間が進んで、もう一度 S が 1 になりました。すると、ここでも Q は 1 に変化します。
さて、皆さん、ここまで分かりましたでしょうか?
SR フリップフロップが順序回路だよ、という意味
さて。ここまで読んで頂いて、ふーん、組み合わせ回路と順序回路と何が違うの? と思われた方もあるでしょう。それでは、説明しましょう。
SR フリップフロップの、上のタイミング図をもう一度見てください。左から 3マス目のところで、S と R がどちらも 0 になっている部分がありますね。このとき、Q は 1 になっています。もう少し右の 6マス目のところでも、S と R がどちらも 0 である部分がありますが、このときは Q は 0 になっています。
これが、SR フリップフロップが組み合わせ回路ではなく、順序回路だというポイントなのです。つまり、入力の組み合わせが同じでも、あるときは Q が 1 であり、あるときは Q が 0 なので、簡単な真理値表では SR フリップフロップを書き表せない、ということなのです!
ところで、SR フリップフロップでは S と R を同時に 1 にしてはいけません。回路が壊れてしまう、ということはないのですが、SR フリップフロップでは、S と R を同時に 1 にすることを「組み合わせ禁止」(違反した使い方)としています。つまり、そのような使い方をした場合、「Q と Q バーがどうなるかは知らないからね。たまたま、ある動きをするかも知れないけど、いつもそうなるとは限らないからね」ということになります。
最後に、SR フリップフロップは記憶回路の一種です。記憶回路というのは、以前のことを覚えていることのできる回路のことです。よく、パソコンやスマートフォンの話で、RAM(メモリ)が何ギガバイト、というようなことを言いますが、この「RAM」というのは記憶回路で作られています。正確には少し違うのですが、パソコンにメモリが 1ギガバイトあるとき、1バイトはフリップフロップ 8つ(8ビットと言います)で作れるので、そのパソコンにはフリップフロップが 8,000,000,000(80億)個入っている、ということになります。フリップフロップは、電子回路の中で大活躍しているのです!
マイクラで SR フリップフロップを作ってみよう
さて、お待たせしました。Minecraft(マイクラ)のレッドストーン回路で SR フリップフロップを作ってみましょう。
下のビデオを見てもらったほうが楽しいと思うのですが、少しだけ、技術的なことを説明しておきましょう。
ポイントの一つ目は、レッドストーンリピーターを使い、その出力を入力に戻してあげると(これを、技術の世界ではフィードバック、あるいは難しい日本語で「帰還」といいます)、その回路は S フリップフロップ(R なし)になります。
ポイントの二つ目は、この回路に R(リセット)端子を用意するために、以前に説明した「レッドストーンコンパレーターの基本回路」が使えるということです。この「基本回路」は、入力 A が 1 で、入力 B が 0 のときだけ、出力が 1 になります。これをどうやって使うと SR フリップフロップを作れるのでしょう? この辺は、ぜひ、ビデオを見ながら皆さんも考えてみてくださいね。
今日はここまで! 次回からは、さらに別のフリップフロップである、D フリップフロップ、T フリップフロップという回路を勉強していきたいと思います。なお、以下の YouTube チャネルに御登録頂くと、新しい教材が公開された際にすぐ御覧頂けます。よろしくお願いいたします!