ハードウェアエンジニアの守破離

国内電機メーカーに勤務しているハードウェアエンジニア

【Nand2tetirs】名著『コンピュータシステムの理論と実装』を読んで、実際にコンピュータシステムを構築してみる #2

今回の内容

↓前回
subarukun.hatenablog.com


今回から論理ゲートの動作について復習するとともに、トランジスタレベルから設計を行って本と講義の内容より1段階理解を深めようと思います。

シミュレーション上とはいえ、Nand2tetrisならぬFET2tetris。

シミュレーション環境構築は、東京大学生産技術研究所のチュートリアル資料を参考にさせていただきました。

回路図データはGithubにも順次アップしています。

シミュレーション環境:

・シミュレータ: LTspice

CMOSプロセス:0.18um

正しく0.18umプロセスのライブラリが読み込めているか確認するため、下図のNMOSを制御するだけの超シンプルな回路を作成して、DC解析を行いました。

ゲート電圧を線形的に上げていくと、閾値電圧Vth≒0.4V付近でNMOSがON(強反転領域にシフト)して電流が流れ始めていることが分かります。

f:id:Subarukun:20220305142838p:plain

ライブラリ内で設定されている各種パラメータをMOSFETの電流式に当てはめれば整合性が確認できると思いますが、ここでは一旦ライブラリが正しく読み込めていることを確認できたので論理ゲートの設計を進めます。各論理ゲートの記号と真理値表を示して、トランジスタレベルで構築&シミュレーションにかけて所望の動作になっているか確認します。

電源電圧および、入出力電圧はIO電圧としてよく用いられる1.8Vに定めました。

FET to NOT (Inverter)

まず、一番シンプルなNotゲートから設計しました。
Notは1入力の否定を出力します。

f:id:Subarukun:20220305213140p:plain

所謂Inverterです。PMOSとNMOSで実現できます。

確かNMOSのチャネル移動度はPMOSの1/3だったので、(W/L)は反比例の関係になるようにWのサイズ調整しています。

f:id:Subarukun:20220306224024p:plain

FET to Nand

続いて、最も"primitive"な要素であるNandゲートを構築しました。

大学で習いますが論理ゲートは全てNandから構築可能なので、本書ではNandからボトムアップでCPUを構築しています。

Nandは2入力1出力です。入力がどちらも1(True)の場合のみ、0(False)を出力します。

f:id:Subarukun:20220306220921p:plain

Notより複雑ですが、PMOS, NMOSの違いに注意しながら机上で単純なスイッチに置き換えた等価回路を書いてみると、真理値表を満足する動作が得られることが理解できます。

f:id:Subarukun:20220306224054p:plain

 

今回はここまで。

次回はNANDを部品化(ブロック化)して、AND, OR, XORを構築します。

subarukun.hatenablog.com