Z80でDRAMを動かした

一般社会で何の断りもなくメモリといったらDRAMを指す。電子工作ではもっぱらSRAMが使われるが、一種の嗜みとして、いつかDRAMを動かそうと思っていた。振り返れば、このブログの先頭から6回はDRAMを語り、DRAMコントローラの力を借りて、よく理解しないまま4164を動かしている。今度はTTLで動かして、十分に理解したことを証明したい。漠然とそんな風に考えていた2年前、日米商事でお誂え向きのDRAM、4416と出会い、構想が実現へ動き出した。これ、Z80と組み合わせれば比較的簡単に動くから。

nichibai_4416_p

4416の相方にZ80を選んだ理由は、当初、ただDRAMリフレッシュ機能を持つというだけだったが、実際は4416のほうでもZ80の欠点を補完する形になっていて相性抜群。同じ世代の4164と比べると、最低2個でデータバスを埋められるし、OEで間違った読み出しを止められる。Z80とDRAMを接続する場合、唯一の問題は、書き込み信号の出るタイミングが遅すぎて、Wだけでリード/ライトを区別すると、ライトの前半でリードの動作をしてしまうこと。4416はOEを使ってそれを止め、データバスの混乱を避けられる。

4416_pin_asign

Z80と4416が相性抜群でもTTLで動かすとなるとコンピュータの全体で12個のICが必要になる。全体の回路図は大き過ぎて表示し切れないから、必要ならこちらのPDFをご覧いただきたい。要点は、状況に応じてRASMUXCASを生成する制御回路。大原則はMREQが来たときだけ動くこと。その上で、RAMのアクセス要求(RAM)が来たらRASMUXCASを適当な間隔で出力する。また、リフレッシュ要求(RFSH)が来たらRASだけを出力する。

sbcz80_logoc

試作機の制御回路はRASMUXCASの間隔を広めにとってある。まずは確実に動かし、成功してから切り詰めていく方針。結果、Z80の標準クロック(2.4576MHz)で安定的に動作し、安価なロジックアナライザがきれいな波形を表示した。あまりにきれいなので、そのまま倍速(4.9152MHz)で動かしてみたところ、通常の動作は成功、割り込み処理で誤動作が頻発。想像では、ROMの読み出しが挟まればいいが、RAMのみのリード/ライトが連続すると失敗する感じ。調整で解決するか、これが限界か、見極めなければならない。

sbcz80_logiana

試作機はプリント基板に組み立てた。プリント基板を起こす段階ではまだテストをしていないから大きな間違いが2か所ある。第1にMUXの極性が逆、第2にZ80とSIOの間に無駄なロジックが介在。これらを修正し、ロジックアナライザへ行く電線を引き出したら、ひどい格好になった。この状態で制御回路の調整をやっても再現性に疑問が残るため、リビジョン2の基板を発注。送料込み5枚7.9ドルのやつで、到着は最悪1か月後になるらしい。

sbcz80_proto_final

ソフトウェアは、正式には27128(2764~27512)に書き込む設計。試行錯誤の段階では書き換えしやすいW27C512を使い、アドレスC000Hから書き込んだ。当初、プリント基板の大間違い2か所に悩まされたが、それを修正したあとは物事がトントン拍子に運ぶ。hello, worldとエコーバックテストと受信を割り込みでやるエコーバックテストに成功。そしてついにGrant’s BASICが起動し、約16Kバイトがフリーだと表示した。

sbcz80_basic

4416と出会ってから2年、ICを12個も使い、たびたび失敗ながら、ようやく実現した16Kバイト。嬉しさのあまりツイッターで自慢したら凄いっていう返信とたくさんのいいねをいただいた。このたった16Kバイトの価値をちゃんと評価してくれるみんなも凄いよ。

カテゴリー: DRAM, Z80 パーマリンク

Z80でDRAMを動かした への1件のフィードバック

  1. ピンバック: SBCZ80ほぼ完成 | 電脳伝説

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中