本連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。
これまでIntel 4004の命令仕様を細かく見てきたので、次に、Faggin氏になった積もりで4004の設計を追体験してみようと思う。但し、当時のPMOS 2相ダイナミック回路は昨今はやらないので、今風のCMOSで、かつ、あまり回路テクニックを使わないごく一般的なゲートやFFを使った分かり易い設計をしてみようと思う。
なお、Faggin氏は論理設計と回路設計だけでなく、LSIを製造するマスク設計までやったのであるが、この部分については追体験から割愛する。
論理設計に入る前に
論理設計に入る前に、使用する部品であるトランジスタや論理ゲート、ラッチやFFなどについて簡単におさらいをしておこう。
MOSトランジスタのソースとドレインは一般には同じに作られており、Pチャネル(P-ch)トランジスタでは電位の高い(より正)の方がソースになり、反対側がドレインになる。CMOS論理回路に一般的に用いられるエンハンスメント型のP-chトランジスタは、ゲートがソースと同電位かより正の電位(より正確にはスレッショルド電圧以下の負の電位)になるとオフ状態となる。逆にゲートがソースに対して(スレッショルド電圧を超えて)十分に負になるとオン状態となり抵抗となる。
一方、Nチャネル(N-ch)トランジスタは、P-chトランジスタの逆で、電位の低い方がソースになり、高い方がドレインとなる。そしてゲートの電位がソースと同じか負の電位(より正確にはスレッショルド電圧以下の正の電位)になるとオフ状態となる。逆にゲートがソースに対して(スレッショルド電圧を超えて)十分に正になるとオン状態となり抵抗となる。
これらのトランジスタの性質から、インバータ回路では、入力がVdd(正の電位)になるとN-chトランジスタが抵抗になり、P-chトランジスタがオフになるので、出力はN-chトランジスタの抵抗を通してVss(グランド)に接続されるので、出力(Out)は"0"(Vssレベル)となる。反対に入力がグランドになるとN-chトランジスタはオフ、P-chトランジスタは抵抗となるので、出力は1(Vddレベル)となる。
2入力NAND回路では、出力が"0"になるのは両方の入力が"1"(Vddレベル)の場合であり、N-chトランジスタは両方とも抵抗となりOutとVssの間に直列に接続される。一方、P-ch側はその逆で、両方の入力が"1"の場合にはVddと出力の間は切断される。その他の入力では、Outは抵抗状態のP-chトランジスタを通してVddに接続され、Vssとの接続は切断する必要がある。この関係を実現するには、上図のようにP-chトランジスタを2個並列に接続し、2個のN-chトランジスタを直列に接続すれば良い。このようにN-chが直列ならP-chは並列という接続は相補的(Complementary)と呼ばれる。
同様にして、更に複雑な回路を作ったのが次の図である。
図が煩雑になるのでC、D、E入力はP-chとN-chのトランジスタのゲート間の配線は記入していないが、対応する名称のラインを接続する。この回路図では、N-chトランジスタはA、Bが入力されるトランジスタが並列に接続された部分とC、D、Eが並列に接続された部分が直列になっており、出力がVssに接続されるのは、上側のA、Bいずれかのトランジスタがオンになり、かつ、下側のC、D、Eのいずれかのトランジスタがオンになった場合である。従って、論理機能は(A+B)・(C+D+E)の否定となる。また、P-ch側は相補的に構成する必要があり、A、Bを直列に接続した部分とC、D、Eを直列に接続した部分を並列に接続する。
以上のように、トランジスタの並列、直列接続で、原理的には任意のサイズのOR-AND-Inverter、あるいはAND-OR-Inverter回路を構成することが出来る。しかし、トランジスタを直列に接続すると、オンした状態での抵抗が直列になるので負荷容量の充放電電流が減り、スイッチする時間が長くなってしまうので、高速の論理回路では、P-chは2~3個の直列、N-chは4個の直列程度が上限となる。