Z80でマイコンをつくる (6)残りの配線〜動かない〜動いた!!

電源ラインはスズメッキ線で配線

ブレッドボードで稼働したZ80マイコン を秋月電子の片面ユニバーサル基板で作ってみよう作戦。
電源ラインは、古式ゆかしく0.5mmぐらいのスズメッキ線でVcc側、GND側を配線しました。
ここはGrant氏の回路図には出ていません。(一言、電源などはちゃんと配線やっといてね、みたいな記載があります)
シリアルICのHD63A50やZ80 CPUは普通のICと違う電源ピンなので配線もちょっと違いますが….

残りの配線を実施

各IC間の配線ですが、ポリウレタン被覆線によるデータバスx8本の一筆書き配線につづいて、アドレスバスx16本の配線・ハンダ付けを実施しました。念のため1本づつ各ICソケットの該当ポートが疎通しているか地味にチェックを実施。大丈夫そうです。ハンダ付けしてあちこち間違うと直すのが大変そうだったので(途中のICに線材を巻きつけたりしてましたし…) 地味にチェックしつつ進みました。

続いてシリアルチップ HD63A50のあたりの配線と、RAM/ROMのCE(Chip Enable)、OE(OutputEnable)、WE(WriteEnable)、あたりの配線を実施。
ROMのCE(Chip Enable)について元の回路図(32kB RAM版)ではROMが8kBなので真面目にA13〜15のアドレス線をOR回路でデコードしてましたが、今回はATC28C256 (256kbit / 32kB)にしたのでA15をCEに直接入れるように回路を変更しました。(アドレス0000h〜7FFFhはROMで、8000h〜FFFFhはRAMという感じでアドレスの頭1ビットで判定です。)

リセット回路と水晶発振子回路、ロジックICの未使用入力

ちょっと忘れていたのがリセットボタンで タクトスイッチを装備する場所をあまり真面目に検討していませんでした。
今回はCPUクロックとシリアルクロックはちゃんと水晶発振子+74HCT04で発振回路を組もうと思っていたので、そちらも抵抗器やらセラミックコンデンサやらけっこう場所をとります。頑張って部品を配置したので、ちょっと窮屈な配置&配線になっちゃいました。

またリセット回路はちゃんと電解コンデンサ+抵抗器でジワジワと電圧が立ち上がるようにした方が本当は良いのですが、ここはGrant氏の回路図のままです。電源のACアダプタを接続したあとリセットスイッチを押すと起動する仕組みです。
ロジックICの未使用入力端子は、ユニバーサル基板版ではすべてGNDへ落とすことにしました。

配線が終わってスイッチON 〜 動かず

配線終了してテスターで各所の配線を再確認した後、74HCT04だけ装着してクロック発振の確認を実施。テスターの周波数カウンターでちゃんと7.3728MHzあたりで発振していることが確認できました。
一つ深呼吸して Z80 CPU、ROM、RAM、シリアルチップ、ロジックICを装着してスイッチON! してみましたがシリアル端末には無応答でした。
Z80 CPUは追加購入したものだっので、例の 1Hzフリーランボードで動作確認したところ正常稼働することが確認できました。

作業後 寝る直前まで 虫めがねで基板裏の配線をチェックしたところ、1箇所配線漏れをみつけました。
EEPROMの27番ピン(WE)です。元回路図でVcc(+5V)へ接続しています。データシートを確認しても、この端子がHレベルであることが前提のようです。

基板裏写真をよーーーく見ると、EEPROMの27番ピンが未結線です….(と自分だけわかるコメント….)

この日はタイムアップということで対応は翌日に…..

ROMの配線漏れとバイパスコンデンサ追加で稼働!!

翌日に、EEPROMの27番ピン(WE)を隣の28番ピン(Vcc)と結線して動作確認しましたがやはりシリアル端末には無応答です。基板を良く見てみるとバイパスコンデンサの接続が不十分でした。

写真ではCPUの陰で見えませんがZ80 CPUのバイパスコンデンサ(0.1μF)はICソケット内に配置しています。動かない!と言っている時点ではRAMとROMのVcc近傍にバイパスコンデンサ(0.1μF)を配置していました。
追加でシリアルチップ HD63A50のVcc近く(12番ピン近く)と ロジックIC x2個のVcc近くにバイパスコンデンサ(0.1μF)を接続して試したところ無事稼働しました!! うれしい!! バイパスコンデンサは重要なんだなぁ。

下の図は無事稼働したZ80機械語モニターです。実はブレッドボード版マイコン〜ユニバーサル基板版の製作途中で 知人から教えてもらったZ80機械語モニターを移植(というほどではなく、変数をRAM配置したりしただけ…)していたのでした。

まとめ….仕上げ

完成写真はこちらです。
もうちょとだけ部品が追加してありまして、知人から電源のところにコンデンサがいるのでは?と指摘をいただきまして、100μFの電解コンデンサをDCジャックの近傍に接続しています。(SBC6800/SBC6809でもDCジャックの近傍に電解コンデンサが…^^);;)

最初に所有したマイコン PC-8001と同じZ80で….クロックがほぼ倍、RAMもSRAMですけど同じ32kBということで、グラフィックは出ないものの自分の手で組み上げることが出来て たいへん感慨深いものがありました。
うれしいです。

コメント

  1. 問題なのは0.1μFの値段が高いことでしょうか(笑)電源投入後10億分の1秒の間に起こるコンデンサの重要さですがケチるとラッチアップの原因になるので馬鹿にできませんよね。基盤に余裕があればHC244やHC245でメモリのバッファを入れてやるとファンアウトの負担が軽減すると思いますよ。

    • kuninet より:

      はい、知人からVccにパスコン入れたら動いた! という経験談を聞いていて、「モシヤ?」って感じで入れてみてビンゴでした。
      配線がポリウレタン線でもジャングル配線なのでパスコン重要って感じなのかなぁと….

      >基盤に余裕があればHC244やHC245でメモリのバッファを入れてやるとファンアウトの負担が軽減すると思いますよ。
      はい。
      夢としてはプリント基板を起こしてみたいので、ぜひその際には….^^) いつになるかは不明ですが

  2. […] 先日自作したZ80マイコンにはSBC6303のような拡張バスを接続する端子は装備していませんでした。(CPUとROM/RAM/ACIAで基板がギリギリ…) […]

  3. […] ここまで対応したI/Oモジュールを、GWMON-80のメインモジュール(monitor.asm)と合体させて、CP/MのMAC.COMでアセンブリしたものを、GWごろに作成したGrant’s Z80 ユニバーサル基板マイコン用のROMとして焼いて動かして、無事稼働しました!!シリアルのスピードは115200bpsですが、ポーリング型でも意外と取りこぼし無く動きます。今後 SBC8080データパックのソースを参考にさせていただいて 割り込み駆動型などへも挑戦してみたいと思います。^^)>今回修正したソースは、以下のgithubにもUPしています。前回のビルドスクリプトを改良してMC6850用モジュールビルドも自動化していきたいと思います。https://github.com/kuninet/glitchworks_monitor/blob/master/io_modules/MC6850.asm […]