【Nand2tetirs】名著『コンピュータシステムの理論と実装』を読んで、実際にコンピュータシステムを構築してみる #2
今回の内容
今回から論理ゲートの動作について復習するとともに、トランジスタレベルから設計を行って本と講義の内容より1段階理解を深めようと思います。
シミュレーション上とはいえ、Nand2tetrisならぬFET2tetris。
シミュレーション環境構築は、東京大学生産技術研究所のチュートリアル資料を参考にさせていただきました。
回路図データはGithubにも順次アップしています。
シミュレーション環境:
・シミュレータ: LTspice
・CMOSプロセス:0.18um
正しく0.18umプロセスのライブラリが読み込めているか確認するため、下図のNMOSを制御するだけの超シンプルな回路を作成して、DC解析を行いました。
ゲート電圧を線形的に上げていくと、閾値電圧Vth≒0.4V付近でNMOSがON(強反転領域にシフト)して電流が流れ始めていることが分かります。
ライブラリ内で設定されている各種パラメータをMOSFETの電流式に当てはめれば整合性が確認できると思いますが、ここでは一旦ライブラリが正しく読み込めていることを確認できたので論理ゲートの設計を進めます。各論理ゲートの記号と真理値表を示して、トランジスタレベルで構築&シミュレーションにかけて所望の動作になっているか確認します。
電源電圧および、入出力電圧はIO電圧としてよく用いられる1.8Vに定めました。
FET to NOT (Inverter)
まず、一番シンプルなNotゲートから設計しました。
Notは1入力の否定を出力します。
所謂Inverterです。PMOSとNMOSで実現できます。
確かNMOSのチャネル移動度はPMOSの1/3だったので、(W/L)は反比例の関係になるようにWのサイズ調整しています。
FET to Nand
続いて、最も"primitive"な要素であるNandゲートを構築しました。
大学で習いますが論理ゲートは全てNandから構築可能なので、本書ではNandからボトムアップでCPUを構築しています。
Nandは2入力1出力です。入力がどちらも1(True)の場合のみ、0(False)を出力します。
Notより複雑ですが、PMOS, NMOSの違いに注意しながら机上で単純なスイッチに置き換えた等価回路を書いてみると、真理値表を満足する動作が得られることが理解できます。
今回はここまで。
次回はNANDを部品化(ブロック化)して、AND, OR, XORを構築します。