今回はSBC8080バスにつながる128kBメモリーボードの回路を検討して、ユニバーサル基板で試作するところまでをまとめます。
シリアルLSIは搭載するか?
当初の目論見では、128kメモリーボードにシリアルLSI 8251を搭載しようと考えていました。
しかし、ターゲットのユニバーサル基板をいつもの秋月電子タイプB基板にするつもりで部品配置を考えたところスペース的に載らないという結論となり断念しました。
よって、シリアル通信のためにSBC8080 SUBボードからRAM/ROMを外して使用します。
ROM/RAM切り替えとI/Oアドレス切り替え
アドレス0000h〜3FFFhの 16kB ROMと 128k RAMの切り替えについては A15、A14を74HC139でデコードできそうです。(出力が4つなのでうまいこと16kBづつデコードできそう)
ちなみに、ROMには負論理のCS端子、128kB RAMには正論理の CS1端子があるのでそれぞれ74HC139の同じ出力をつないで上げれば切り替えができそうです。
(最初は74HC04のNOTゲートでひっくり返そうと思ってました…^^)>)
バンクレジスタ部分のI/Oアドレスですが、もともとのSBC8080 SUBボードでも74HC139でデコードしていますので、メモリーデコードで使用した74HC139の余った部分のデコーダで40hへデコードできそうです。
その後は前回の回路図同様 IO書き込み信号(IOWR)と NORゲート(74HC02)を通してラッチ(74HC573)のラッチイネーブル(LE)端子へつなぎます。
回路図全体
回路図の全体図はこちらです。
- バンク切り替えの状況を目で見て確認したかったのでNOTゲート(74HC04)をつなげた先にLEDをつけました。
- メモリーのA16,A15のコントロールは前回検討した回路そのままです。
ユニバーサル基板での試作
この回路図に従って、秋月電子ユニバーサル基板タイプBへ 試作を実施します。
引き回したケーブルはマルツパーツでたたき売りしていたAWG28サイズの単芯ラッピングワイヤ(赤)と 地元部品店で購入したAWG28サイズの青、緑、白のラッピングワイヤです。
こちらは、データバス、アドレスバスまで配線して力尽きた写真…
裏面の電源関係は0.5mmのスズメッキ線で配線しました。
完成記念写真がこちらです。
以前作ったZ80 CPUボード、SBC8080 SUBボード(ROM/RAM外し)と一緒に稼働させます。
無事 機械語モニタも起動して RAM領域の 4000hや8000hに書き込みができました。
また、下記のような機械語プログラムでバンク切り替えの稼働も確認できました
4000 MVI A,1 ← バンク番号を指定 OUT 40h RET EXEC 4000 8000 DEFINE 01,02,03 ← 適当な値を入力して 別々のRAMが選択されていることを確認 DUMP 8000
SBC8080でもメモリーボードが稼働
ちなみに、CPUボードをSBC8080へ繋ぎ変えてみて稼働することを確認しています。
余談 : KiCADの74HC139シンボルに惑わされ…
スムーズにいったように書いてますが、実はKiCADの74HC139シンボルに惑わされて痛恨の配線ミスをしています。
以下は配線するときに作っていた回路図で、74HC139へつなぐアドレスバス A7,A6とA15,A14の線をつなぐ場所が反転しています。よく見るとKiCADのシンボルでは端子名がA、BではなくA1、A0となっていて デコード表との関係がわかりやすくなっているようです。これだとI/Oアドレスのデコードは80hになりまして…最初は「バンク切り替えが動かん!!」と悩みました…orz
ちゃんとデータシートを確認して端子番号を確認しなきゃという教訓でした….
コメント
[…] Z80/8080 CPU用に128kB メモリーボードを作成して動いたので、次はSBC68系の128kB メモリーボードを作ってみたいと思います。 […]