論理ゲートをシミュレータで地味に作る

Sat Mar 5 23:08:46 JST 2016 (modified: Tue Sep 19 13:17:34 JST 2017)
views: 1524, keywords:マイコン,123D,ディジタル回路,寝る この記事は最終更新日が6年以上前のものです。

本日は訳あって123D CIRCUITSでちまちまと論理ゲートを作っていました。論理ゲートというのは2進数を電圧の高低で入力すると、同じく電圧の高低で2進数を出力する回路で、コンピュータとかはこれでできています。ネット上で動くサンプルというものも少ないので、NOTとNAND、NANDでできたANDとORの例を置いておきます。

NOTゲート

まず最初に作ったのは、下のNOTゲートと呼ばれるものです。NOTゲートはブレッドボードの上の回路で、左に電源と入力信号用の電池とスライドスイッチ、右に出力確認用のLEDがおまけで付いています。NOTゲートは信号の入出力をひっくり返すものです。信号の入力(黄色の線)が1(正の電圧)の時は出力(緑の線)が0(電圧がゼロ)、入力が0(電圧がゼロ)の時は出力が1(正の電圧)になります。

左上の再生ボタンを押すと動きます。重たいけど。

この回路のPMOSとNMOSというのは電解効果トランジスタの一種のMOSFET(のシミュレートされたもの)で、要はスイッチです。手でスイッチを入れる代わりに3本足の真ん中(ゲート)に電圧をかけたりかけなかったりして操作します。真ん中の足に電圧がかかると両側の足に電流が流れる方がNMOS、電圧がかからないと電流が流れる方がPMOSです。本当は両側の足には違いがあるのですが、ここではあまり本質的な話ではありません。

両方のトランジスタのゲートには、黄色の線を伝ってスイッチのつまみが上にあるときには3V、下にあるときには0Vの電圧がかかります。で、3Vの時は上のPMOSが絶縁、下のNMOSが通電して緑の線の電位が黒い線と同じになり、つまみが下にあるときは逆に上の赤い線と電位が同じになります。ということで、黄色と緑の線は逆の出力になることになります。

NANDゲート

次に挙げるのはNANDゲートです。NANDゲートというのは二つの入力を受け入れ、その両方が0なら出力が1、それ以外なら出力が0になるという、直感的にはさっぱり分からんものですが、後で示すようにNANDゲートだけを組み合わせて他のゲートを作ることができるので、コンピュータの中でよく使われています。

作ったのは次のような回路で、黄色とオレンジの線からそれぞれ電圧を入力すると、緑の線から出力が出てきます。スライドスイッチを操作すると、NANDになっていることが分かるはずです。

回路を簡単に説明すると、上の二つのPMOSは並列に赤い線にぶら下がり、下の二つのNMOSは直列に黒い線にぶら下がっています。黄色、オレンジ色の線の両方の電圧が高いときだけ、下のNMOS直列つなぎが通電して、緑の線と黒い線の電位が同じになります。

ANDゲート

ANDはNANDの出力をNOTゲートで反転すれば作れます。ただ、NANDゲートの黄色とオレンジの線を短絡してもNOTゲートになるので、下のようにNANDを二つ使っても作れます。NOTと組み合わせる場合よりトランジスタが2個多くなってしまいますが、同じもので作った方が単純で良いこともあるそうです。

ORゲート

ORはNANDゲート3個で下の例のように作れます。入力側の2つのNANDは黄色の線とオレンジの線が短絡されてNOTになっています。NANDの「入力が両方1の時だけ出力が0」というのの二つの入力をひっくり返して、「入力が両方0の時だけ出力が0」にしてORを実現しているわけです。

終わりに

NAND回路を丸ごとコピーしたら、絵面はそのままで基盤にトランジスタが刺さってない状態になってしまい、デバッグに1時間かかりました・・・。ソフトウェアのデバッグの何億倍も効率が悪いです・・・。

それから、たかだか数ビットの計算をネットやらグラフィックやらシミュレータやら使ってやってるのって、どう考えても贅沢すぎじゃないのか??

寝る。

ノート   このエントリーをはてなブックマークに追加 
 

prev:GitHubのWikiの変更をHubot経由でSlackに通知 next:近況: 日経Linux、RoboCup2016(世界大会)出る、投稿論文通った他

やり散らかし一覧

記事いろいろ