KZ80 1MRSAM REV2 - kuninet/Z80_1MRAMB GitHub Wiki
Z80 128kB RAM/16k ROM ボード (KZ80_1MSRAM) REV2
概要
- Z80 CPUボード(KZ80-CPUB)やSBC8080 CPUルーズキットと組み合わせて使用できる 128kB SRAM+16k ROMボードです。
REV1からREV2への変更点概要
- バンク切り替えI/Oアドレスがジャンパで00h、40h、80h、C0hへ設定可能となりました。
- バンク切り替えレジスタ用ICが変更となりました。
- バンク0を指定した場合、ROMが無効となり64kBフルRAM化が可能となりました。
部品組み付け例
- REV2基板の組み付け例は以下のとおりです。
- 1Mbitメモリーは秋月電子で販売されているM68AF127BをDIP変換基板で装着しています。通常はHM628128等をご使用ください。
メモリーマップについて
- メモリーマップは以下の通りです。
- 通常はZ80等のスタックポインタを最上位アドレス付近(FFFFh番地)に設定することが多いと思いますが、本ボードでは8000h-FFFFhをバンク切り替えRAM領域としているため、スタックポインタは固定RAM領域の7FFFhあたりに設定してください。
アドレス | 説明 |
---|---|
0000h-3FFFh | 16kB ROM領域・28C256(32kBx8)の半分をROM領域として使用します。 |
4000h-7FFFh | 固定RAMバンク切り替え対象外のRAM領域です |
8000h-FFFFh | バンクメモリー領域バンクメモリー切り替えI/O番地へバンク番号を出力して切り替えるバンクRAM領域です。(REV2基板ではジャンパで00h、40h、80h、C0hへ設定可能です) |
- REV2基板ではバンク番号を00に設定すると64k FullRAMになります。
回路について
- REV2基板の回路図はこちら
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(正論理)端子へつないでいます。
バンク切り替えについて
- バンク切り替えのためI/O番地 のデコードは74HC139のAユニットを使ってアドレスバスA7、A6の信号線をデコードしています。
- REV2基板ではジャンパで00h、40h、80h、C0hへ設定可能です。
REV2基板のバンクレジスタ
- 上記アドレスをデコードしたものと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 | 1kΩ | 3 | カーボン抵抗器 |
J1 | HIF3FC-40PA-2.54DS | 1 | 40 ピン L 型ボックスヘッダ |
J2 | 2x04ピンヘッダ | 1 | 2列2.54mm垂直ピンヘッダ |
C1〜C7 | 0.1uF | 7 | 積層セラミックコンデンサ |
C8 | 10uF | 1 | 電解/タンタルコンデンサ |
機械語モニターなどのプログラムについて
SBC8080データパックのモニター+TinyBASIC
-
SBC8080データパック付属の機械語モニター+TinyBASICをそのまま使用するとバンク切り替えの際にスタック情報がとんで暴走します。本プロジェクト中にスタックポインタ等を固定RAM領域へ変更したソース/ROM焼き用のインテルHEXファイルを添付しました。お使いください。
参考URL
-
- 【注意】上記のBLOGの試作記事ではI/Oアドレスを40hにしていますが、当基板では80hへ変更しています。