KZ80 1MRSAM REV3 - kuninet/Z80_1MRAMB GitHub Wiki

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

概要

REV2からREV3への変更点概要

  • アドレスデコード回路を改良してI/Oアドレス20h単位での設定が可能となりました。
  • ROMの16kB/32kB切り替えジャンパ(JP2)を装備しました。(ROMカートリッジ対応は未実装です。)

基板製造データなど

基板写真

メモリーマップについて

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

メモリーマップ

アドレス 説明
0000h-3FFFh 16kB ROM領域・28C256(32kBx8)の半分をROM領域として使用します。☆16kB/32kB切り替えジャンパ(JP2)の設定により0000h〜7FFFhまで(32kB)をROM領域とすることが可能です。
4000h-7FFFh 固定RAMバンク切り替え対象外のRAM領域です
8000h-FFFFh バンクメモリー領域バンクメモリー切り替えI/O番地へバンク番号を出力して切り替えるバンクRAM領域です。
  • REV2/3基板ではバンク番号を00に設定すると64k FullRAMになります。

回路について

回路図

SBC8080バスとの接続

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

ROMとRAMの切り替えについて

  • ROMとRAMの切り替えは74HC139のBユニットを使ってアドレスバスA15=0、A14=0をデコードしたものを使用しています。(アドレス0000h〜3FFFFhの場合に"L"レベル)
    • 上記のデコードした信号を、ROMの#CS(負論理)へ、RAMはCS2(正論理)端子へつないでいます。
    • 16kB/32kB切り替えジャンパ(JP2)の設定によりROM領域を切り替え可能です。32kの場合はアドレス信号線A14をGNDへ落としています。

バンク切り替えについて

  • バンク切り替えのためI/O番地 のデコードは、2SC1815トランジスタによるNOT回路と74HC139のAユニットを使ってアドレスバスA7、A6、A5の信号線をデコードしています。
    • REV3基板ではジャンパで00h、20h、40h....E0hと20h単位で設定可能です。
  • 2SC1815トランジスタによるNOT回路のベース入力のコンデンサはスピードアップコンデンサです。

バンクレジスタ

  • 上記アドレスをデコードしたものとSBC8080バスの#IOW(I/O書き込み)の信号線をNORゲート(74HC02)であわせて2つのDフリップフロップ(74HC74)のCK端子へ入れています。電源投入時のRESETパルスによりフリップフロップの初期値を設定しています。(バンク1に初期設定)
    • Dフリップフロップ(74HC74)にはデータバス(D0、D1)をつないでいますので、CPUのOUT命令で出力したデータ(バンク番号)を保持します。
    • Dフリップフロップ(74HC74)の出力側は1Q,2Q(2ビット分)のみ使用してバンク番号保持レジスタとして使用しています。

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

  • 2ビット分のバンク番号信号を使って128kB SRAMのアドレスバスA16、A15をコントロールしています。
    • REV2基板ではバンク番号0(ゼロ)に設定すると常に128kSRAMが選択されるようになり 64kB フルRAM構成になります。

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

  • 128kB SRAMはHM628128同等品を使用してください。
    • 秋月電子で販売されている SOPタイプの128kB SRAMをDIP変換して使用するなどの場合、ピンアサインが異なるタイプもあるようですのでご注意ください。
  • ROMはEEPROM 28C256タイプのうち16kBを使用します。ROM書き込みの際16kBを超えた部分はアクセスできませんのでご注意ください。
  • ロジックICは74HCタイプを使用してください。
  • バンク番号表示LEDは色を変える(青+赤にするなど)と状況確認がわかりやすくなると思います。
部品番号 部品名 個数 備考
U1 74HC02 1 代替:74HCT02
U2 74HC74 1 代替:74HCT74
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、D3 LED 3 LED
R1、R2、R3、R5 1kΩ 4 カーボン抵抗器
R4 100kΩ 1 カーボン抵抗器
Q1 2SC1815 1 NPNトランジスター
J1 HIF3FC-40PA-2.54DS 1 40 ピン L 型ボックスヘッダ
J2 2x04ピンヘッダ 1 2列2.54mm垂直ピンヘッダ
JP1、JP2 1x03ピンヘッダ 2 1列2.54mm垂直ピンヘッダ
C1〜C7 0.1uF 7 積層セラミックコンデンサ
C8 10uF 1 電解/タンタルコンデンサ
C9 22pF 1 積層セラミックコンデンサ

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

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

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

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

参考URL