KZ80 1MRSAM REV1 - kuninet/Z80_1MRAMB GitHub Wiki

Z80 128kB RAM/16k ROM ボード (KZ80_1MSRAM REV1)

概要

メモリーマップについて

  • メモリーマップは以下の通りです。
    • 通常はZ80等のスタックポインタを最上位アドレス付近(FFFFh番地)に設定することが多いと思いますが、本ボードでは8000h-FFFFhをバンク切り替えRAM領域としているため、スタックポインタは固定RAM領域の7FFFhあたりに設定してください。

メモリーマップ

アドレス 説明
0000h-3FFFh 16kB ROM領域・28C256(32kBx8)の半分をROM領域として使用します。
4000h-7FFFh 固定RAMバンク切り替え対象外のRAM領域です
8000h-FFFFh バンクメモリー領域I/O番地 80hへバンク番号を出力して切り替えるバンクRAM領域です。

バンク切り替えについて

  • バンク切り替え操作はバンク切り替えレジスタI/Oアドレスへバンク番号を出力することで実施します。

    • バンク0(ゼロ)は無効です。バンク1として扱われます。
  • バンク2への切り替え例

    LD A,2
    OUT (80h),A

回路について

  • REV1基板の回路図はこちらです。

回路図

SBC8080バスとの接続

  • SBC8080バスとの接続は、アドレスバス(A0〜A14)、データバス(D0〜D7)、#MEMR/#MEMW(メモリー読み/書き)信号線をROM/RAMと直結しています。
    • 128kB RAMのアドレスバスA15、A16の2本の信号線のコントロールは「バンク切り替え」の項で詳しく記述します。

バンク切り替え回路について

  • バンク切り替えのためI/O番地 のデコードは74HC139のAユニットを使ってアドレスバスA7、A6の信号線をデコードしています。
    • REV1基板ではI/Oアドレスは80h固定です。
  • 上記アドレスをデコードしたものとSBC8080バスの#IOW(I/O書き込み)の信号線をNORゲート(74HC02)であわせて8ビットラッチ(74HC573)のラッチイネーブル端子(LE)へ入れています。
    • 8ビットラッチ(74HC573)にはデータバス(D0〜D7)をつないでいますので、CPUのOUT命令で80h番地へ出力したデータ(バンク番号)を保持します。
    • 8ビットラッチ(74HC573)の出力側はQ0,Q1(2ビット分)のみ使用してバンク番号保持レジスタとして使用しています。
  • 注意 : バンク番号は電源投入時には不定ですので、モニターROMの初期設定ルーチン等で必ずバンク1等をバンクレジスタへ出力して初期設定してください。

128kB SRAMのコントロールについて

  • 2ビット分のバンク番号ビット分のバンク番号信号を使って128kB SRAMのアドレスバスA16、A15をコントロールしています。ただし、バンク番号0(ゼロ)を指定された場合はバンク1へと読み替えるようにゲートIC(74HC00、74HC04)を組んでいます。

組み付けする部品等について

  • 128kB SRAMはHM628128同等品を使用してください。
    • 秋月電子で販売されている SOPタイプの128kB SRAMをDIP変換して使用するなどの場合、ピンアサインが異なるタイプもあるようですのでご注意ください。
  • ROMはEEPROM 28C256タイプのうち16kBを使用します。ROM書き込みの際16kBを超えた部分はアクセスできませんのでご注意ください。
  • ロジックICは74HCタイプを使用してください。
  • バンク番号表示LEDは色を変える(青+赤にするなど)と状況確認がわかりやすくなると思います。
部品番号 部品名 個数 備考
U1 74HC02 1 代替:74HCT02
U2 74HC573 1 代替:74HCT573
U3 74HC139 1 代替:74HCT139
U4 74HC04 1 代替:74HCT04
U5 74HC00 1 代替:74HCT00
U6 HM628128ALP-7 1 128kB SRAM
U7 ATC28C256 1 32kB EEPROM
D1、D2 LED 2 発光ダイオード
R1、R2 1k 2 カーボン抵抗器
J1 40pinボックスヘッダ 1 代替:L型ピンヘッダ
C1〜C7 0.1u 7 積層セラミックコンデンサ

機械語モニターなどのプログラムについて

SBC8080データパックのモニター+TinyBASIC

  • SBC8080データパック付属の機械語モニター+TinyBASICをそのまま使用するとバンク切り替えの際にスタック情報がとんで暴走します。本プロジェクト中にスタックポインタ等を固定RAM領域へ変更したソース/ROM焼き用のインテルHEXファイルを添付しました。お使いください。

  • https://github.com/kuninet/Z80_1MRAMB/tree/master/MON-TB

参考URL