Intel 4004の回路図を読む
4. 演算装置
omiokone
回路図3枚目左下が演算関係で、下からデータバス入力のバッファレジスタ、加算器、アキュムレータである。
下図(a)は加算器1bit分で、Ciは下の桁からのキャリ(桁上がり)、Aはアキュムレータからの入力、Bはバッファレジスタからの入力(いずれもL=1)。下半分はキャリ生成で、Ci=0ではQ1がないと考えてA=B=1の時のみCo=1(実際の出力はCoの反転)、Ci=1ではQ1で左右がつながってA=1またはB=1の時Co=1。上半分はCoを利用して和Sを計算する。
Coは反転しているが、上の桁は(b)のようにCi A B全て反転したものを入力すると全く同じ回路で反転した和と非反転のキャリが得られる。さらに上位2bitはこれと同じ繰り返しである。和の反転は加算器出力のバッファアンプで吸収している。全体を見るとキャリ生成を最短にするくふうがされている。
加算器はインデクスレジスタのインクリメントにも使われるため、出力を直接内部バスに取り出す経路がある。
アキュムレータはダイナミックレジスタで、M1サイクルで自身の出力を書き戻してリフレッシュする。入力側に加算器出力そのままと左右シフトの3:1のマルチプレクサ、出力から加算器へは非反転/反転の2:1マルチプレクサがつく。これらの制御信号は例えば前章のADD命令の信号線3は、タイミング信号とANDをとってACC→ADA(アキュムレータ→加算器)となる。これに対しACC→ADACはアキュムレータの反転を加算器に送る信号。
加算器のA入力もダイナミックレジスタとして機能し、左右シフトなどは加算器経由で行う。この時B入力は0にされる。逆にLD命令ではA入力を0にしてデータバス値をバッファレジスタ→加算器経由で取り込む。加算器のA入力はM1サイクルでクリアされ、以後転送がなければ0を保持することに注意されたい。
アキュムレータの上にはアキュムレータ操作命令で使う定数表がある。コード1111 0XXXの命令では0→IB信号により0が内部バスに出され、加算器のバッファレジスタがクリアされる。他はDAA TCS KBPの回路。9→IBに対応する出力信号線が見当たらないが、回路図2枚目のTCSであろう。
<3 | Intel 4004 |
5>