トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第249回]
●命令DECODE回路真理値表
前回ご紹介しましたHCMOSIC版4ビットCPU(MYCPU4)に限って考えますと、その命令のほとんどはレジスタにアクセスする命令です。
命令コードをデコードするということは、その命令がどのレジスタにアクセスするのかということを明らかにして、そのレジスタにアクセスする信号線をアクティブにするということです。
下は各命令がどの信号線をアクティブにするのかということを整理した真理値表です。
この表にしたがって命令コードを入力して各信号線を出力とする回路を作ればそれが命令デコード回路になります。
ところでHCMOSIC版MYCPU4では「トランジスタ技術」2020年5月号のトランジスタ版4ビットCPUの命令およびその命令コードをそのまま踏襲していますが、少し機能追加しているところがあります。
「トランジスタ技術」誌のCPU回路にはAレジスタとBレジスタのみあってワークレジスタがありません。
そこで同誌のCPUではワークレジスタの代わりに4ビットの出力ポートを使って、その出力ポートと入力ポートを外部で接続することでワークレジスタの代用にしています。
しかしそれではワークレジスタを使うプログラムではI/Oポートが使えません。
もっとも考えてみればわずか16バイトのプログラムしか組めない同誌のCPUではそれでもよいということかも知れません。
でもやっぱりどうせ作るならばワークレジスタも加えたいじゃありませんか。
しかしそうするとワークレジスタ用の命令が必要になります。
すでに4ビットの命令コードは0000から1111まで全部割り当てられていますから、新たな命令を追加することができません。
そこでLD A,BとLD B,Aの命令コードでは使われていない下位4ビットのうちの1ビットを使って、LD A,WとLD W,Aのための命令コードを作りました。
上の真理値表にありますように
LD A,Wの命令コードは0010XXX1
LD W,Aは0011XXX1
としました。
そのためLD A,BとLD B,Aの命令コードは
LD A,Bは0010XXX0
LD B,Aは0011XXX0
になります。
このところだけが「トランジスタ技術」誌のCPUのプログラムに対して厳密には互換ではありませんが、LD A,Bはコード20、LD B,Aはコード30を使うのが自然ですから実際には互換と考えてもよいでしょう。
本日は時間がありませんからここまでで終ります。
次回はHCMOSIC版MYCPU4の回路図をお見せする予定です。
トランジスタでCPUをつくろう![第249回]
2020.10.17upload
前へ
次へ
ホームページトップへ戻る