MB-S1

S1の拡張メモリを作る その2

 以前の記事ではFPGAとSDRAMを使用してMB-S1のメモリ増量を試みましたが、調整不足もあり不安定な出来でした。今回は安定してさらにお安く作れそうなものを考えていきたいと思います。

 拡張RAMカードの構成については以前の記事に記していますのでこちらを参照ください。

回路設計

 今回は、秋月さんの通販から入手できる部品で考えていきます。

 まずメモリですが、SRAMが手ごろな価格で販売されているのでこれを使用することにします。選択したのはSTマイクロのM68AF127B。これはチップ1つにつき1Mビットなので128Kバイト、これが4つあれば512Kバイトのメモリとして使用できます。

 このメモリを動かすための周辺回路を、入手できるロジックICで考えていきます。で、考えた結果が下の回路図になります。


S1の拡張メモリを作る 回路図 (クリックで拡大)

 今回使用する信号について説明すると、

●/RAM0信号
 S1モードではアドレスA16~A19がすべて0の時にON、L3モードではバンク切り替えを行い拡張RAMを使用する設定にするとONになります。
●アドレスバス
 メモリ1つにつき128KバイトなのでA0~A16を使用します。また、4つのメモリを選択する信号(/RAME0~3)をA17,A18,A19から生成します。ただし/RAM0信号がONになったときは上記アドレスは無視し、1つめのメモリを使うように固定します。
●/RAS,/CAS,/REF信号
 DRAMを制御するための信号です。今回はSRAMなので/CASのみ使用します。/CASがONになったときにメモリへのアクセスができるようにします。
●/EN,/RE,/WE信号
 メモリアクセスが必要な時に/ENがON。同時にリード時は/REが、ライト時は/WEがONになります。/CASとメモリを選択する信号から生成します。

 また、上記回路とは別にSRAMの動作確認を行うための回路も考えておきます。動作確認はArduino UNOを使おうと思っていたのですがピン数が足らないので40ピンのPICマイコンを購入することにしました。

 これで必要な部品が決まりましたので通販で購入。到着を待ちます。

SRAMの動作テスト

 部品が届きましたので、まずはSRAMの動作確認を行う回路を実装していきます。PICマイコンはとりあえず安いものを購入したのですがこれが+3.3V駆動で+5Vでは動かないものでした。またPB5/PGMが使えないなど少し癖があります。なので想定していた回路から少し変更。それが下の回路図になります。今回はテストということでPICとSRAMの信号線を直結していますが、本来は電圧のレベル変換をしたほうがいいですね。


SRAMの動作テスト 回路図 (クリックで拡大)

 PICマイコンに実装するソフトウェアは、PC上のシリアル端末からコマンドを受け付け、コマンドに従ってメモリリードやライトをするようにします。

 SRAMはサイズがSOP32ピンなので変換基板でDIPサイズにします。これらを毎度おなじみのブレッドボードに実装して配線します。


SRAMを変換基板に取り付け

SRAMの動作テスト回路をブレッドボードに実装

 配線のチェックが終わったらテストしていきます。電源を入れシリアル端末からメモリ全体チェックを指示。結果、問題なくリードライトが行えていることが確認できました。


SRAMの動作テスト リードライトタイミング

MB-S1(S1モード)でテスト

 ではMB-S1実機でのテストに移ります。SRAMの動作テストで実装した回路をMB-S1用に変更していきます。ブレッドボード上のメモリ部分はそのまま流用してPICマイコンの部分をロジックICに替えていきます。信号観測用にロジックアナライザも接続しておきます。


ブレッドボードに部品を実装

 回路がショートしていないことを確認したら、いよいよMB-S1に接続して電源ON。あれ、認識しません。一度電源をOFFにし配線をチェック。1ヶ所間違いがあったので修正して再度電源ONすると、どうやら認識したようです。


S1起動後 メモリを認識している

 コマンド入力中やフロッピーディスクへのアクセスで暴走することはなかったので回路に問題はなさそうです。ここでメモリチェックプログラムをロードし実行します。


メモリチェック実行結果(S1モード)

 メモリチェックの結果はオールOKでした。ロジックアナライザで観測した信号の様子は以下のようになります。


リードライトタイミング(S1モード)

MB-S1(L3モード)でテスト

 次はL3モードに切り替えてテストしてみます。


メモリチェック実行結果(L3モード)

 メモリチェックの結果はOKでした。ロジックアナライザで観測した信号の様子は以下のようになります。


リードライトタイミング(L3モード)

 上の図をよく見ると1サイクル中に2回アクセスを行っていることが分かりました。L3モードではCPUは1MHz駆動ですが/CAS信号は2MHzになっていますね。

 ここでCPUを2MHz駆動にしてみます。するとメモリチェックがNGになりました。何回実行しても結果はNG。NGになるタイミングは実行するごとに異なるので何らかの条件があるようです。何回か観測を繰り返していると、以下の状態でNGになることが分かりました。


リードライト失敗パターン(L3モード, 2MHz)

 どうやら/CAS信号がONにならないタイミングでCPUからアクセスしているようです。このタイミングはDRAMリフレッシュ期間となるので本来ならCPUからのアクセスは避けなければならないはずですが…。オフィシャルの増設RAMカードでも同様の現象でしたのでMB-S1はこのあたりを考慮していなかった模様です。

来夢来人(Limelight)でテスト

 今度はMB-S1互換パソコンである来夢来人でテストをしてみます。このマシンには128Kバイトのメモリが既に増設されています。今回はこのメモリを活かしつつ増設したいので、ブレッドボード上の最初の128Kバイトは無効になるように回路を変更します。


来夢来人起動後 メモリ増設前

来夢来人起動後 メモリを認識している

 どうやら問題なく認識されているようです。


メモリチェック実行結果(来夢来人)

 メモリチェックの結果はOK。これで来夢来人でも使用できることが確認できました。

まとめ

 今回は、L3モードでCPUを2MHz駆動にすると拡張メモリのアクセスに失敗することがある、という新たな発見がありました。うーん、MB-S1はまだまだ奥が深いですねぇ。

 さて、今回使用した電子部品は合計で1000円ちょっと(送料は除く)でした。問題はこれらをのせるプリント基板をどうするかですね。ブレッドボードで常用するには弊害がありますし…。プリント基板の設計は以前にKiCadを少し弄った程度で基板メーカに発注したこともないですが、これを機に本格的に始めてみようかなぁ。

追記

 プリント基板を作成しました。詳細はこちらのページ


S1用拡張RAM&FM音源カード

参考文献

  1. I/O別冊S1活用研究 - 工学社

◆関連ページ◆

S1用の拡張メモリを作る

S1用拡張RAM&FM音源カードを作りました

マーク5用の拡張メモリを作る

 

レベル3&S1実機を拡張する

 

TOP PAGE