Z80でマイコンをつくる (2)試作1号機でやったこと&部品が届いてみて

さて、試作一号機では水晶振動子が発注中だったこともあって、以下のようなことをしてみていました。

CPUクロックとシリアルクロックはPIC

元回路ではZ80 CPUクロックとシリアルチップ(MC6850)へ水晶振動子を74HCT04(インバータ)を使って発振させて接続しています。
試作1号機ではSBC6800を真似てPIC12F1822でクロックを作ってみることにしました。

シリアルクロックはSBC6800のままで良いと考えてSBC6800データパックで提供いただいている osc1536.hex をそのまま使用して153.6kHzで発振させます。
CPUはもうちょっと速くしたかったのと、MC6800と違って1つの方形波が出ればよいので、SBC6800データパックのosc1536.X のソースをコピーして修正して4MHzにしてみました。

main.cの修正点はこちらです。ちなみに発振周波数を1MHzにする場合は PR2=7、CCPR1L=4でした。

    PR2 = 1; //PWM cycle
    CCPR1L = 1; //duty cycle

テスターの周波数カウンターで測ってみたらちゃんと4MHzでてました!

シリアルのスピードは?

Z80マイコンはGrant氏のページに出てるBASICで動作確認をしていました。
シリアルクロックをSBC6800と同じにして9600bpsで繋げば反応があるものだと思って色々とためしていたところ、@Vintagechipsさん(6800伝説の著者の方)から以下のご指摘が…

MC6850の初期化処理パラメーターを見てみたら16分周ではなくて64分周にしているので、たしかに2400bpsでないとNGでした。
水晶振動子が中途半端な周波数になってるのも115200bps x 64 の周波数なんですね…^^);;

スタティックRAM

スタティックRAM CY62256は通販で取り寄せ中だったので、SBC6800で使った8kBの HM6264を暫定で装着してみました。
Grant’s氏のページで動作確認しているBASICのソースを読んだところ最初の部分でRAM領域を$8000から書き込んで確認しているロジックに読めたので行けるかなと…

ただ試作1号機がうまくうごかず、いろいろと調べているうちに部品が徐々に届きはじめまして スタティックRAM CY62256も届きました。
RAMも回路図と同じ容量のものと替えようと思って念のためデータシートを再確認したところ、なんとアドレスバスのピンアサインだけが他社製のものと違っているじゃないですか! 他社製のピンアサインはEEPROM(AT28C256など)にあわせてアドレスバスのピンアサインはきれいに並んでいません。たぶん容量を徐々に増加させた歴史的経緯があってピンの互換性を維持したものと思います。
これは使えない!と思ってTwitterで嘆いていたところ @Vintagechipsさんから「SRAMはアドレスバスとかデータバスは順番が入れ替わっても使えるよ」と教えていただきました。

考えてみるとアドレスバスとかのピン接続順番が入れ替わっていても、SRAMは自分で書き込みして自分で読み出しするので問題ないというお話。なるほど!!! (←頭固い…)

とまぁ、いろいろとありましたがBASICの起動プロンプトは出ず…orz
SRAM、ACIC(MC6850)、EEPROMなどを別基板で動作確認しても動くしというわけで詰んだ感じになってました。

Z80 CPUだけを動かしてみたい

Z80 CPUだけは別環境での動作確認が出来ず悶々としていたのですが…
いろいろと情報を調べていたところ、以下のページでRAM/ROM無し(というか抵抗器でROMをつくる?!?)で なつかしのタイマーIC 555で1Hz(!!!)ぐらいのクロックでZ80を駆動してLEDチカチカというページがあり、ブレッドボードで組んで見ることにしました。

「8ビット CPU Z80LED点滅」
http://www.yamamo10.jp/yamamoto/comp/Z80/FlashingLEDs/index.php

コメント