トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第396回]
●MYCPU4TR回路図(5)ALU回路(2)
前回はMYCPU4TRのALU回路(実はFull Adder回路)について説明をしました。
しかしADD命令やSUB命令を実行するにはFull Adder回路だけでは足りません。
その後ろに必要な回路があります。
前回と同じHCMOSIC版MYCPU4のレジスタ/ALU/PC回路の回路図を下に再掲します。
IC10(74HC283)が前回説明しましたFull Adderですが、74HC283には演算結果をラッチする機能はありません。
その意味では実質的には前回お見せしたロジックゲートで構成したFull Adder回路と全く同じで入力が変化するとそれに伴って出力も変化してしまいます。
そのままでは都合が悪いので74HC283の後ろにはその出力をラッチして必要に応じてそのラッチしたデータを内部バスに出力するためのICとしてWレジスタと同じ74HC173(IC15)を置いています。
下はMYCPU4TRの74HC173相当の回路です。
図の上半分が1ビット分のデータラッチ回路です。
これと同じ回路が4ビット分あります。
下半分の回路は全ビット共通ですからこの1回路のみです。
回路としてはWレジスタ([第393回])と同じですがラッチデータを表示するLEDはありません。
上のMYCPU4の回路図に戻ります。
Full Adderの後ろには演算後のキャリーの状態をラッチするための回路も必要です。
Full Adderの最上位ビットからはキャリーが出力されますが、演算がADDの場合とSUBの場合でキャリーの有無が異なります。
それを補正するためにEXOR(IC17、74HC86)を置いています。
そして74HC86の後ろにその値をラッチするためフリップフロップ(IC13、74HC74)を置いています。
この出力はJNC命令で使われます。
今気が付きました。
この回路図は最終図面ではありませんでした。
実際の回路ではキャリーが発生していることを示すLEDを74HC74のpin9につけています。
下はMYCPU4TRの74HC86相当の回路です。
こちらは74HC74相当の回路です。
MYCPU4にはADD命令やSUB命令を実行した結果の値が0ではないときに実行されるJNZ命令があります。
MYCPU4では74HC32(2入力OR)を3ゲート使って計算結果が0のときにゲートの出力が0になる回路にしています。
その信号を74HC74でラッチします。
HCMOSIC版MYCPU4のレジスタ/ALU/PC回路の回路図でIC14の74HC32とIC13の74HC74がその回路です。
下はMYCPU4TRの回路です。
上に書きましたようにMYCPU4では74HC32(2入力OR)の3ゲートで構成していますが、トランジスタ回路では多入力回路が簡単に作れるので、MYCPU4TRでは4入力NOR回路にしています。
入力がすべて0のときに出力が1になります。
下は4入力NOR回路に続くラッチ回路です。
トランジスタでCPUをつくろう![第396回]
2021.9.4upload
前へ
次へ
ホームページトップへ戻る