コンピュータは論理回路で構成されています。その論理回路の一つ一つは思いのほか単純です。
上の図のは基本的な論理回路をあらわす図で左からAND回路、OR回路、NOT回路と呼ばれます。この図は世界共通でMIL記号(military standard specification)と呼ばれます。
回路が実際にこのような形をしているわけではなく、人間にとって分かりやすいように決めた抽象的な形です。
論理回路は論理演算を行う回路です。論理演算はすでに学習しているはずですのでここではおさらい程度に説明します。
これらの回路は電圧の高さで入力や出力を決めます。具体的な電圧は回路によって異なりますが(たとえば3V)、電圧が高いとき1低いとき0と見ることにします。
X,Yを入力、Zを出力とするとその関係は以下の表のようになります。
X | Y | Z |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
この表を見ると入力がすべて1のときだけ出力が1になりそれ以外は出力が0になります。 この説明ではたまたま入力が2つですが、3入力でも4入力でも同じです。
X,Yを入力、Zを出力とするとその関係は以下の表のようになります。
X | Y | Z |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
上の表を見ると入力がすべて0のときだけ出力が0になり、それ以外は出力が1になります。つまり、入力の一つでも1があると出力は1になります。
この演算は入力が1つです。Xを入力Yを出力とするとその関係は以下の表のようになります。
X | Y |
1 | 0 |
0 | 1 |
このように入力と出力が逆になります。このことからNOT演算を行う回路はインバータとも呼ばれます。
このほかにもあります。
X,Yを入力、Zを出力とするとその関係は以下の表のようになります。
X | Y | Z |
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
これは、AND演算の出力をNOT演算で反転した結果になっています。
X,Yを入力、Zを出力とするとその関係は以下の表のようになります。
X | Y | Z |
0 | 0 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 0 |
これはOR演算の出力をNOT演算で反転した結果になっています。
X,Yを入力、Zを出力とするとその関係は以下の表のようになります。この演算はXとYの入力が異なるとき出力Zが1になります。
X | Y | Z |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
回路はいろいろありますが、結局は入力に対してどのように出力されるかが異なるだけです。その違う動きをする回路に異なる記号を割り当てて表しているのです。
これらの回路をJavaを使って説明したHPがありますので
http://www.infonet.co.jp/ueyama/ip/logic/gate.html
を必ず参照して入力と出力の関係を理解してください。
次に源内CADを使って論理回路をシミュレーションして見ましょう。
上の図のようにボタンをクリックし「素子の配置」を選択します。
するとこのようなシステムシンボルとタイトルのついたウィンドウが現れます。ここでは2入力のAND回路(and2)をクリックしましょう。
クリックするとシステムシンボルウィンドウは消え、回路を配置するモードになります。
適当な場所でクリックして配置します。
次に、再び「素子の配置」ボタンをクリックし今度は下の図の素子を選択し配置します。
inと書かれた素子です。
上の図のように2つ配置します。
次に、上の図のように「信号線の配線」ボタンをクリックします。
入力端子とAND回路の入力端子をそれぞれクリックして配線します。
このようになります。
さらに下の図のような出力端子も配置しAND回路の出力端子と接続します。
すると、以下のような図になります。
つぎに、シミュレーションで入力したり値を見たするために入力端子と出力端子にそれぞれ名前をつけます。
上の図のように「素子、信号線の名前の設定」ボタンをクリックします。
書く素子をクリックして名前をつけます。
名前は自由に付けることができますが、ここでは、入力素子にi1, i2、出力素子にoとつけます。
上の図が名前をつけた状態です。これでシミュレーションする準備ができました。
未設定の部分は赤くなります。赤い部分が無くなり、全てが黒くなったら正しく設定されています。
赤い部分が残っている場合は、何らかの理由で設定が正しく行われていない可能性があります。
ここで、名前をつけて保存します。すでに名前をつけている場合は上書き保存します。
ここではsample1.gdrという名前にしています。
つぎに、図のボタンをクリックして波形エディターを起動します。
先ほど名前をつけたi1とi2という名前があります。ここに、信号を設定します。
上の図のようにマウスポインタや緑のバーがある部分をクリックや右クリックして上の図と同じようにしてください。
この図の意味ですが、縦軸が電圧で横軸が時間になっています。緑の部分が電圧がかかっていることを表し、つまり1をあらわします。白い部分は0を表します。
この設定では入力端子i1は1,0,0,1,1,1・・・と設定していることになります。
同様に入力端子i2は0,1,0,1,1,1・・・・と設定していることになります。
上の図は信号を数字に読み替えたときのイメージです。実際には数字は表示されません。
パターンが設定できたら、
上の図のようにボタンをクリックしてシミュレーションを実行します。
すると、下に出力端子oの出力が出てきます。sample1.oが出力端子のことです。これはJavaなどの名前のつけ方に似ていて、ファイルsample1中のoという意味です。
上の図を見るとi1とi2のいずれも1のときだけoも1になっていて確かにAND回路の出力になっていることがわかります。
ここまでで、源内CADの最低限の操作ができるようになりました。
(practice1)
上の図のような回路を書いて
このようにそれぞれの回路の出力を確認しましょう。
ここで教員のチェックを受けましょう!
ヒント:
線同士をつなぐときは、注意が必要です。線は端しか繋がりません。
上の図では3本の線があります。線の途中ではなくて必ず端で繋がっていることに注意してください。
また、上の図は下へ延びる線を追加途中の状態なので赤くなっています。
上の図は、一本だけ繋がっていない状態です。正しくつながると黒い丸が出来ます。
左下の縦に伸びる線は横の線と交差していますが、黒丸が無いのでどの線とも繋がっていません。
それでは、これからが本番です。