2020.11.9
前へ
次へ
ホームページトップへ戻る

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第261回]



●動作テスト(5)LD A,d、LD B,d、ADD A,B、OUT A、HLT(前回の続き)

今回も前回からの続きです。
前回はADD A,Bまで実行したところで終りました。

下はZB3BASICのマシン語モニタコマンドでその次の4ステップ(1マシンクロック)を実行したところの画像です。

OUT A(マシン語コード10000000)の実行です。

CLK1の写真です。

左下のRAM/CLOCK基板のアドレスA7〜A0(青色LED)が03(00000011)、データD7〜D0(赤色LED)は80(10000000)になりました。
左上のDECODE回路基板のAout(青色LED)が点灯しています。
REGISTER回路基板の内部バス(青色LED)にAレジスタの値(1000)が出力されています。
OUT AもCLK1とCLK2の状態は同じなのでCLK2の写真は省略します。

CLK3の写真です。

DECODE回路基板の下部にあるOUTwr(赤色LED)が点灯しています。
OUTwrはOUTレジスタ(外部出力レジスタ)に内部バスのデータをラッチする信号です。
OUTwrがLのときにLEDが点灯します。
OUTwrの上がりエッジでデータがラッチされ、外部に出力されます。

CLK4の写真です。

OUTwr(赤色LED)が消灯し右上のREGISTER回路基板のOUTレジスタ(赤色LED)が1000になって内部バスの値が書き込まれたことを示しています。

次の4ステップ(1マシンクロック)を実行しました。

最後のHLT(マシン語コード11110000)の実行です。

CLK1の写真です。

左下のRAM/CLOCK基板のアドレスA7〜A0(青色LED)が04(00000100)になり、データD7〜D0(赤色LED)はF0(11110000)になりました。
HLT命令はレジスタ回路の動作には関係しないのですがデコードの関係で左上のデコード回路基板のBdsel(青色LED)とBdout(青色LED)が点灯しています。
その結果右上のREGISTER回路基板のB/d(赤色LED)と内部バス(青色LED)は外部データバスの下位4ビット(0000)と同じ値になるため全消灯しました。
ALUからはAレジスタの値(1000)とB/dの値(0000)の加算値(1000)が出力されていますが他のレジスタには影響ありません。
HLTもCLK1とCLK2の状態は同じなのでCLK2の写真は省略します。

CLK3の写真です。

左上のDECODE基板下部のHLT(赤LED)が点灯しました。
HLT命令が実行された結果PC(プログラムカウンタ)がロックされるためこれ以後はCLKを変化させてもこの先には進みません。
HLT命令ではCLK3のあとは状態は変化しないのでCLK4の写真は省略します。

以上でやっとLD A,d、LD B,d、ADD A,B、OUT A、HLTのテストが終りました。

トランジスタでCPUをつくろう![第261回]
2020.11.9upload

前へ
次へ
ホームページトップへ戻る