【Nand2tetirs】名著『コンピュータシステムの理論と実装』を読んで、実際にコンピュータシステムを構築してみる #3
今回の内容
↓前回
前回設計したNANDをブロック化して、NOT, AND, OR, XORを構築します。
最初はNANDのみ使用可能な状態ですが、論理ゲートを構築できたらブロック化して手駒を徐々に増やして行こうと思います。
徐々に仲間(Component)が増えて最後に魔王(CPU)を倒すRPGのような感覚です。
構築した回路はGithubのcircuitsリポジトリに順次アップしています。
NAND回路のブロック化
前回MOSFETを用いて設計したNAND回路を簡略化のためブロック化します。
ブロック化の方法についてはこちらのサイトを参考にさせていただきました。
電圧源とGNDはブロックの端子として出したいので、Labelに置き換えます。
回路図(.asc)を一部修正後、[Hieraruchy]->[open this Sheet's Symbol]でSymbol(.asy)を作成します。[Draw]からLineやArc、Circleを駆使してそれっぽいシンボルを作成します。
大きさはアバウトですが完成しました。
実際に作成したComponentが所望の動作するか確認します。
前回のNANDシミュレーション回路を置き換えたところ、同じ出力結果が得られたためブロック化が成功したことが分かります。
Nand to NOT
Notは前回MOSFETレベルで設計しましたが、NANDから再構築します。
2入力の論理がTrueの時に出力がFalseになるNANDの特性を利用して、2入力をshortすればNOTが完成します。
NANDのようにNOTもブロック化して、今後簡単に使用できるようにします。
正常にブロック化できたことが確認できました。
Nand to AND
ANDの記号と真理値表は以下の通りです。
ANDは2入力の積をとります。
NANDの出力を反転させることでANDは構築できます。
直前にパーティに入れたNOTが早速活躍しました。
MOSFETは合計8個使用されています。
ANDをブロック化して…パーティに仲間が加わりました。
Nand to OR
ORの記号と真理値表は以下の通りです。
ORは2入力の和をとります。
2入力いずれも反転してNANDに入力する構成でORは実現できました。
トランジスタは12個使用されています。
ORがパーティに加わりました。
Symbolの出力部分がもう少し尖がった方が見栄えが良いですが、本質的ではないのでこれで良しとします。
Nand to XOR
最後はXORを構築します。
これまでに比べると複雑ですが、NOT, NAND, ORを駆使して実現できました。
トランジスタは24個使用されています。
最後の論理ゲートXORが加わりました。
まとめ
NANDからNOT, AND, OR, XORの各論理ゲートが構築できることが確認できました。
次回は1段階ボトムアップしてMux, DMuxをパーティ総力を挙げて構築します。
構築した回路はGithubのcircuitsリポジトリに順次アップしています。