トランジスタで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
前へ
次へ
ホームページトップへ戻る