Z80ブレッドボードマイコンで8251シリアルLSIが動いたので、次はユニバーサル基板で組んでみようと思います。
ただ、ちょっとズルをしてROM/RAMや8251はSBC8080のSUBボードを使ってみたい…
Z80 CPUボード回路の検討
Z80 CPUボードですが、SBC8080のSUBボードとつなぐことに特化した回路として検討してみました。
本来ならフラットケーブルにアドレスバス、データバスを直結せずバッファをつけるところだと思いますが….そのままいけるかなと。^^)
(ちなみにTwitterでいろいろと意見を頂いたり、実際に組んでみたら失敗に気づいたりしたところを直した版です…)
- リセット回路は一般的なR/Cの回路にシュミットトリガインバータ(74HC14)を2つ接続しました。SBC8080 SUBボードへRESET(正論理)信号も出したかったので…
- メモリーREAD/WRITE、I/O READ/WRITEは74HC32で構成しました。
- クロックは水晶発振子を74HC04で発振させます。
- SUBボードの8251からの割り込みはインバータ(74HC04)を通してZ80のINTつないでいます。
- データバスは10kΩでプルアップしておいて、8251からの割り込みが来た時に RST 38h(0xff)が発動するようにしてます。(Twitterで教えていただきました。この対応をするとSBC8080用ソフトが無改造で動きます!!)
御察しの通りです。あと、データバス8本をプルアップしておきましょう。SBC8080CPU基板は、INT割り込みが来るとRST7命令を実行するように組んであります。というか、割り込みの際にフェッチする命令がRST7になるように8228を設定してある。(続く)
— Norihiro Kumagai (@tendai22plus) July 22, 2018
配線〜動かない
回路図通りに秋月Bタイプ両面ユニバーサル基板で回路を組みました。
配線は主にAWG28サイズのラッピングワイヤ(単芯)で実施。細いので取り回しがらくちんです。
各配線についてテスターで導通検査してZ80やロジックICを挿入し、作ったボードとSBC8080 SUBボードをフラットケーブルでつないでから電源をつないでみましたが動きませんでした。
- 水晶発振子が50kHzぐらいしか発信しない
- 写真をみていただくとロジックICが1つ少ないのですが….当初ロジックICをけちって74HC14で水晶発信できると思いこんで組んでました。これは失敗でテスターの周波数カウンタで確認したところ50kHzぐらいでしか発振してませんでした。74HC04へ変更しました。
- リセット回路はやっぱシュミットトリガで….
- こちらは必須ではなかったかもしれませんが、C/Rのリセット回路からZ80のリセット端子へつなぐところのインバータはシュミットトリガが良いと思いICを追加しました。
ここまで変更してみましたがどうも、シリアルコンソールにはうんともすんとも反応がありません。
ためしに、CPUボードをSBC8080へ戻すとちゃんと動きます。(あたりまえですが….)
ロジアナで波形を確認
データがフラットケーブル上流れているのかを見てみたくて、Analog Discovery 2のロジアナ機能で状況を観測してみました。
フラットケーブルは3階建てにするために秋月40pinフラットケーブルに1つ追加でコネクタを圧着していましたので、そこへロジアナ用のケーブルをブレットボードワイヤで中継して接続しました。
観測した波形はこんな感じでした。以外ちゃんとした波形が出ている雰囲気….
配線をいろいろといじっているうちに….発見
実はいろいろと試していると、ごくまれにシリアルコンソールにTinyBASICの起動メッセージが出ます。
いまいち発生条件がわからず….
これはノイズか接触不良か電源の関係でふらつき??、リセット回路がイマイチ?のあたりが原因と思って、SUBボードの電源配線を独立させて太い線へ変更したり、ラッピングワイヤ・ケーブルでジャンパして+5Vのラインを遠くのロジックICにつないでいるところを太いケーブルへ変更したりしていたところ….
40pinボックスヘッダにつないでいたアドレスバス A12のケーブルが外れました ….. orz
このケーブルを再度 しっかりとはんだ付けしたところ、SBC8080用TinyBASICがZ80 CPUで動きました!!
恒例の動作確認
最終的な基板の状態はこんな感じです。
というわけで恒例の動作確認です。最初はBASICで1から10まで足し算を….
続いて、8255基板経由で LEDチカチカ確認ボードのLEDを光らせてみます。
今回はSBC8080のモニターが持っている1ラインアセンブラ機能で確認しました。
LED点灯のためのASMソースはこんな感じです。(16進数に”h”とか付けないんですね…)
MVI A,80 OUT 83 MVI A,AA OUT 81 RET
無事 Z80 CPUボードが稼働することが確認できました!!!
コメント
[…] 先日作成したZ80 CPUボードのようにSBC8080バスにつながる 128kB SRAMメモリーボードを作ってみたいと思います。 […]
[…] SBC80系バスにつながるZ80マイコン(10MHz)でもチャレンジしてみまして…. 11分16秒ぐらいで描画できました。(下はさきほどとほとんど同じ画像ですな…^^) ) MZ-2000とおなじぐらいのスピードが出ました。 […]
[…] ユニバーサル基板で作った Z80 CPUボード(SBC8080バス直結) […]