標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第108回]

●テスト用回路の構成

今までは「つくるCPU」の内部の回路についてだけ説明をしてきました。
もちろん内部の回路だけでは何も動作させることはできません。
当然のことながらメモリが必要ですし、そこにプログラムを書き込むツールも必要です。
命令ごとにステップ動作の写真を撮ってきましたが、そのための回路も必要になってきます。

今回は、「つくるCPU」をテストするための回路の全体図を紹介いたします。
前回お見せした写真の全回路です。



回路図の右側にあるのが「つくるCPU」です。
上側にあるのが、今回新たに接続したI/O(82C55)のボードです。
左側にあるのが、当社のBASIC制御ボード「ZB25K」です。
下側にあるのが、メモリボードです。
32KBのRAM、62256の回路です。

「つくるCPU」と「ZB25K」と「メモリボード」はアドレスバスラインA7〜A0、データバスラインD7〜D0でつながっています。
「ZB25K」の側はバスラインではなくて、I/Oポート82C55の出力になっています。
「ZB25K」からは「メモリボード」は「メモリ」ではなくて「I/O」として見えています。

メモリのリード、ライトのための端子も、「つくるCPU」からは、MEMRD、MEMWRが接続されていますが、「ZB25K」からは、82C55の出力が接続されています。

「ZB25K」がRAM62256にプログラムを書くときは、「つくるCPU」のRESETをアクティブにした(82C55のPC6をLにする)状態で、アドレスラインのA7〜A0(82C55のAポートの出力)とデータラインのD7〜D0(82C55のBポートの出力)をセットしながら書き込んでいきます。
必要なプログラムを書き込んだら、RESETを解除して、EXCLKにパルスを出力することでステップ動作をさせています。

●メモリアドレスは下位8ビットだけ?

よく見ると、そうなっています。
RAMのA14〜A8はGNDに接続されています。
「ZB25K」からも「つくるCPU」からも、アドレスバスのA15〜A8は出ていません。
RAM62256は32KB(キロバイト)ですから、0000〜7FFF(または8000〜FFFF)の32KBのはずですが、これでは256バイト(0000〜00FF)しかアクセスできません。

あれえ?
確か、PUSH、POPの動作の説明では、スタックは0800に設定していたはずでしたけど…。
SHLDとLHLDの動作の説明では、1234番地なんていう、適当なメモリアドレスにHLレジスタの値を保存しましたけれど、そういえば、ちゃんとアクセスできていたようでした([第105回])。

こういうのをイメージといいます。
上の回路図のメモリボードのRAMはアドレスラインの下位8ビットA7〜A0しか接続されていません。
ということは、上位アドレスのA15〜A8がどのような値になっていても、つねに下位8ビットで選択される0000〜00FFの256バイトの範囲のメモリがアクセスされるのです。
ですから1234番地をアクセスしていても、じつはRAMの0034番地をアクセスしていることになります。
これではとてもまともなプログラムを実行することはできません。
しかし今のところは、各命令ごとの動作が正しく実行されるかどうかの確認をするだけの、短いプログラムしか実行しませんから、こういう簡単な回路でも十分なのです。

メモリにはプログラムを書き込まなくてはいけませんから、「ZB25K」の82C55の出力がメモリのリード、ライトのラインにも接続してあります。
しかし回路図の上側にあるI/Oボードには、リード、ライトのラインは「ZB25K」からはつながっていません。
このI/Oボードは「つくるCPU」のIN、OUT命令の動作テストのためにだけ接続してありますから、「つくるCPU」からしか制御できません。

「つくるCPU」がIN命令、OUT命令を実行することで、I/Oボードの82C55を制御する様子については、次回にまたクロックごとの写真で紹介します。
2008.11.8upload

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