やってみよう!論理回路-基本編-
始めまして。ハズレです。そういう名前です。
今回は、私の専門、というか趣味の論理回路ゲートだけでいろいろなど動作を実現してみるというものの実演をしてみる記事になります。基礎編ですので、論理回路ゲートについてもう知ってるという方は次回の記事までお楽しみに…
※画像サイズ変更方法がわからず、一部画像が巨大なまま表示されます。ご了承ください。
サイズ変更法がわかる方はご教授願いたく存じます
1.そもそも論理回路って?
真理値の真偽、つまり0と1を入出力としている回路の分野のことです。
普段このブログに載っている回路はアナログ回路で、100Aの電流が流れて80Aに加工されたり波になったりしますが、そういうのはありません。0と1だけです。入力が全て1なら出力1とか。そのため複雑な方程式や微積も登場しないので、未経験の人もすぐに入門できることと、そんな単純な回路の組み合わせで複雑な動きが実現できるパズル的な楽しさが魅力です。
2.なぜ論理回路をやるの?
第一に楽しいからですが、論理回路を組んでいくということは、実現したい動作を工程ごとに分解し、本質的な意図を見つめることになります。
回路ゲートでできることは本当に単純な動作だけなので、単純な動作単位までやりたいことを分解していくのはなかなかロジカルシンキングが必要になります。
そしてこれは、実際のアナログ回路、またプログラミングで非常に重要なスキルにもなります。つまり基礎鍛練的にも楽しく学べるというわけです。早速次項から早速論理回路をはじめてみましょう。
3.基本のゲートたち
回路とつきますが基本的に論理回路はサーキットになっていません。Inがあって、論理回路ゲートがなにかしら加工を加え、最終的にoutが出ます。
例として、以下の図をご覧ください。これは、「2つある入力がどちらも1のとき1を出力する」というものです。あくまで入出力は01であることにも注目してください。入出力の表は以下の通り。
out |
in2=0 |
in2=1 |
in1=0 |
0 |
0 |
in1=1 |
0 |
1 |
この時、「いくつかの入力を基にいくつかの出力を出すもの」を論理ゲートといいます。いくつかの入力がゲートをくぐって変化するイメージです。
そして、この回路ゲートには基本となる4種類があります。逆に言えば、4種の組み合わせでほとんどすべての回路を実現できるわけです。暗記要素が少ないのは論理回路のいいところです。
そして、回路ゲートについて「いくつかある入力がいくつかある出力に」といいましたが、これも2つある入力が1つの出力に、と統一してしまいます。5つの入力が3つの出力に、のような形も2つある入力が1つの出力に、の回路ゲートの組み合わせで実現できてしまうので、このパターンだけをパーツとして認識していれば問題ないからです。
では早速紹介していきます。
3.1 OR
まずはORゲート。ORの名の通り、2つの入力のうちどれかが1なら出力として1を出します。誰かがスイッチを押していればオンになる電灯、といった感じでしょうか。
in1 |
in2 |
out |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
回路図上の図はこんな感じ。
3.2 AND
次にAND。そのまま、二つの入力が1なら1になります。先ほどの例えで言うなら二人がスイッチを押していないとオンにならない電灯です。
in1 |
in2 |
out |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
回路図上の図はこんな感じ。
3.3 XOR
XORは少しだけ複雑で、片方が1の時しか1を出力しません。一階と二階それぞれで切り替えられる階段の電灯といったところでしょうか。
in1 |
in2 |
out |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
回路図上の図はこんな感じ。
3.4 NOT
NOTだけ例外で、入力が1つのみです。効果もNOTの名の通り、0が入れば1、1が入れば0が出力されます。
OR、AND、XORの出力にNOTをつけた形はよく使われるので、頭にNをつけてNOR、NAND,XNORと呼び、回路図の頭に〇をつけます。
in |
out |
0 |
1 |
1 |
0 |
回路図上の図はこんな感じ。
4.簡単な回路をつくってみる
ここまでの話で基本パーツを把握しましたので、次は早速これで簡単な回路を作ってみましょう。
「そもそもどこで作ればいいんだ」という疑問に関しては、以下のサービスを使ってみてください。
https://lecture.ecc.u-tokyo.ac.jp/johzu/joho/Data/NewLogicSimulator/blank.html
これはSimcirJSというブラウザで動作する簡単な回路シミュレータで、無料で手軽に再現できます。使い方はこちら→https://lecture.ecc.u-tokyo.ac.jp/johzu/joho/Y2019/LogicSimulator/LogicSimulator/01.html
例えば、「スイッチ1~3があり、スイッチ3が押されていないときはスイッチ1、2を押しても出力0だが、スイッチ3が押されているときはスイッチ1,2のいずれかが押されると出力が1になる」というものはどうでしょうか。
制作のコツは何が起きているのか?を分析するということです。
スイッチ3が~の部分から、「スイッチ1と2のOR」と「スイッチ3」のANDだな、ということが分かります。なので…?
↓
↓
↓
↓
↓
↓
↓
答えは以下です。できたでしょうか?
なお、toggleは単に切り替え式スイッチで、DCは電源、コンセントのようなもので本質的には気にする必要はありません。
次回の記事では本格的な回路として2進数の足し算を目指す予定ですので、そちらもお読みいただければ幸いです。