MB-S1

S1用の拡張メモリを作る

 S1は1MBのメモリ空間を利用できることで話題になりましたが、標準搭載されているDRAMの容量は96KB。このうちグラフィックVRAMに48KB使用するのでメインメモリとしては48KB。さらにBASICのワークエリアなどを除くとユーザが使用できるメモリは24KB(DISK BASIC使用時)しかないことになります。この容量はなかり少なかったようで、市販のソフトもメモリ増設が必須のものが多かったように思います。64Kbit DRAMを開発した日立なんだからもうちょっと奮発して欲しかったところですね。


メモリないとき

 下の写真は、512KB搭載した拡張RAMカードMPC-RA512Sです。当時、市場に出て間もない256Kbit DRAMを16個載せています。はたしてお値段はいくらだったのでしょうか。10万円近くしたのかなぁ。


拡張RAMカード MPC-RA512S

 上記拡張RAMカードのブロック図を以下に示しました。ブロック図を見ると本体側からのRAS信号をもとにメモリアドレスをDRAM用のアドレスに変換していることがわかります。


拡張RAMカードのブロック図

 拡張メモリカードの構造が分かったのでさっそくFPGAを実装していきましょう。まずはFPGA内部の実装を考えていきます。今回はMAX10-FB基板にあるSDRAMを使用します。機能としては…

 次に、FPGA周りの回路を設計します。今回はアドレスバス20本をすべて見る必要があるためロジックICを追加しています。今回使用したLCX541は基本的にLCX244と同じですがピン配置が異なります。LCX541はピンが揃っているのに対しLCX244はピンが千鳥配置なので使いにくいところがあるんですよね。


回路図(クリックで拡大)

ブレッドボード上に配線

拡張ボードに接続。

 ではS1の電源を入れてみます。…メモリとして認識しません。ロジアナで波形を見るとアドレスバスが不安定な状態があります。もしかして接触不良か!?

 配線をチェックして、もういちど電源ON。…認識しない。やはりタイミングに問題がありそうですね。ロジアナの波形をしばらく眺めていると問題が見えてきました。SDRAMからデータがくる時間が予想より遅くなることがあり、RAS信号の立ち上がりまでにデータが返らない。これがメモリREADに失敗していることになります。

このことから以下のように修正することにしました。

これをもとにいろいろ試行錯誤した結果、なんとか認識するようになりました。


メモリ認識しました。

メモリチェックプログラムを実行

ちなみに、タイミングチャートは以下のようになります。


READ時のタイミング

WRITE時のタイミング

まとめ

 今回は、S1側からメモリにアクセスするタイミングを勘違いしていた、SDRAMからデータが返るサイクルの長さが予想より遅いなど、このあたりを修正するのに苦労しました。まだ、たまにデータが化けてしまうことがあるというメモリとしては致命的な問題があるのでさらなる調整が必要ですが、とりあえずこれぐらいにしておきます。(おわり)

ソースコード・ダウンロード

s1exmem_010_source.zip (122KB)
 [MD5:c0cdaf42fd40b248e9199b5a2d76f42b]

※試される方は自己責任でお願いします。

関連ページ

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

 

TOP PAGE