S1の拡張メモリを作る その2
以前の記事ではFPGAとSDRAMを使用してMB-S1のメモリ増量を試みましたが、調整不足もあり不安定な出来でした。今回は安定してさらにお安く作れそうなものを考えていきたいと思います。
拡張RAMカードの構成については以前の記事に記していますのでこちらを参照ください。
回路設計
今回は、秋月さんの通販から入手できる部品で考えていきます。
まずメモリですが、SRAMが手ごろな価格で販売されているのでこれを使用することにします。選択したのはSTマイクロのM68AF127B。これはチップ1つにつき1Mビットなので128Kバイト、これが4つあれば512Kバイトのメモリとして使用できます。
このメモリを動かすための周辺回路を、入手できるロジックICで考えていきます。で、考えた結果が下の回路図になります。
今回使用する信号について説明すると、
また、上記回路とは別にSRAMの動作確認を行うための回路も考えておきます。動作確認はArduino UNOを使おうと思っていたのですがピン数が足らないので40ピンのPICマイコンを購入することにしました。
これで必要な部品が決まりましたので通販で購入。到着を待ちます。
SRAMの動作テスト
部品が届きましたので、まずはSRAMの動作確認を行う回路を実装していきます。PICマイコンはとりあえず安いものを購入したのですがこれが+3.3V駆動で+5Vでは動かないものでした。またPB5/PGMが使えないなど少し癖があります。なので想定していた回路から少し変更。それが下の回路図になります。今回はテストということでPICとSRAMの信号線を直結していますが、本来は電圧のレベル変換をしたほうがいいですね。
PICマイコンに実装するソフトウェアは、PC上のシリアル端末からコマンドを受け付け、コマンドに従ってメモリリードやライトをするようにします。
SRAMはサイズがSOP32ピンなので変換基板でDIPサイズにします。これらを毎度おなじみのブレッドボードに実装して配線します。
配線のチェックが終わったらテストしていきます。電源を入れシリアル端末からメモリ全体チェックを指示。結果、問題なくリードライトが行えていることが確認できました。
MB-S1(S1モード)でテスト
ではMB-S1実機でのテストに移ります。SRAMの動作テストで実装した回路をMB-S1用に変更していきます。ブレッドボード上のメモリ部分はそのまま流用してPICマイコンの部分をロジックICに替えていきます。信号観測用にロジックアナライザも接続しておきます。
回路がショートしていないことを確認したら、いよいよMB-S1に接続して電源ON。あれ、認識しません。一度電源をOFFにし配線をチェック。1ヶ所間違いがあったので修正して再度電源ONすると、どうやら認識したようです。
コマンド入力中やフロッピーディスクへのアクセスで暴走することはなかったので回路に問題はなさそうです。ここでメモリチェックプログラムをロードし実行します。
メモリチェックの結果はオールOKでした。ロジックアナライザで観測した信号の様子は以下のようになります。
MB-S1(L3モード)でテスト
次はL3モードに切り替えてテストしてみます。
メモリチェックの結果はOKでした。ロジックアナライザで観測した信号の様子は以下のようになります。
上の図をよく見ると1サイクル中に2回アクセスを行っていることが分かりました。L3モードではCPUは1MHz駆動ですが/CAS信号は2MHzになっていますね。
ここでCPUを2MHz駆動にしてみます。するとメモリチェックがNGになりました。何回実行しても結果はNG。NGになるタイミングは実行するごとに異なるので何らかの条件があるようです。何回か観測を繰り返していると、以下の状態でNGになることが分かりました。
どうやら/CAS信号がONにならないタイミングでCPUからアクセスしているようです。このタイミングはDRAMリフレッシュ期間となるので本来ならCPUからのアクセスは避けなければならないはずですが…。オフィシャルの増設RAMカードでも同様の現象でしたのでMB-S1はこのあたりを考慮していなかった模様です。
来夢来人(Limelight)でテスト
今度はMB-S1互換パソコンである来夢来人でテストをしてみます。このマシンには128Kバイトのメモリが既に増設されています。今回はこのメモリを活かしつつ増設したいので、ブレッドボード上の最初の128Kバイトは無効になるように回路を変更します。
どうやら問題なく認識されているようです。
メモリチェックの結果はOK。これで来夢来人でも使用できることが確認できました。
まとめ
今回は、L3モードでCPUを2MHz駆動にすると拡張メモリのアクセスに失敗することがある、という新たな発見がありました。うーん、MB-S1はまだまだ奥が深いですねぇ。
さて、今回使用した電子部品は合計で1000円ちょっと(送料は除く)でした。問題はこれらをのせるプリント基板をどうするかですね。ブレッドボードで常用するには弊害がありますし…。プリント基板の設計は以前にKiCadを少し弄った程度で基板メーカに発注したこともないですが、これを機に本格的に始めてみようかなぁ。
追記
プリント基板を作成しました。詳細はこちらのページ。
参考文献
- I/O別冊S1活用研究 - 工学社
◆関連ページ◆