[2003/06/23]
32MB拡張メモリ最終版のまとめ
先回の試み以後ひょんな事から、初期16MB、レジスタ書直しで28MBまで使用できる回路が実現できました。英語版の方では、既に記事にしてありますが、改めて、(備忘のためにも)ここでまとめておきます。
製作手法は、PC110用4MB拡張メモリ板上のメモリ・チップを取り外して、その替わりに128MbitsのDRAMチップを載せて、32MB拡張メモリにします。
この128MbitsDRAMは、ノート用128MBメモリ・モジュール(EDOタイプ)などに搭載されているチップ(51131656)を、高温ブロアで取り外して用いました。
−−−−−−−−−−−−−−−−−−−−−−−−−
回路構成
4MB拡張メモリ板では、バンク2用とバンク3用の2つのバンク選択用信号(*RAS2,*RAS3)が使用可能なのですが、128MbitsDRAMには、それらをそのまま接続できる端子がありません。でも、*RAS2信号をA11として使えば、16MB上下(/左右?)ブロックを切り替えられる事が分かりました。(HeroHeroさんによると、*RAS3を使う方法もあるそうです)
他方、チップ側の*RAS入力には、ANDゲート経由で*RAS2と*RAS3信号の両方を与えています。
現状では、128MbitsDRAMとして(FPタイプがあればベストなのですが)EDOタイプしか入手できないので、これをFPモドキにする事と、それによって起こる弊害を回避するために、ANDゲートによる補助回路を入れています。
一番重要なのは、初期立ち上がり時に、拡張メモリ量が20MB超だとBIOSが正常に立ち上がらない事です。
なので、立ち上がり初期には半分の16MBだけで動作させ、立ち上がった時点で"レジスタ書換えプログラム"でメモリ制御レジスタを書直して、残りを有効にします。そのために、初期遅延用のC・R(容量と抵抗)と封鎖用のORゲート回路を使用しています。
レジスタ書直し後、一旦プログラムでソフト・リセットを掛けて、書換えたレジスタの値をシステムに認識させます。(が、この再認識過程の詳細については、残念ながら殆ど知りません)
部品や配線
実際の製作では、128Mbitsチップ搭載や回路配線に先立って、3個所5線のパターン・カットを済ませておく必要があります。(左上図の左、および右写真参照)
ANDゲートは、74HC08,74HC11など低速タイプを使っていますが、これは薄型なのでこれらを選んだまでで、本当はORゲートに使った74VHC32や74LVC32などと同様の高速タイプが望ましいと思います。
C,Rは、初期遅延用のCは0.3〜3μFの範囲、Rは1〜3MΩの範囲で、C・R積が0.3〜3秒位の範囲なら良いようです。
配線には、0.2mmφのポリウレタン(?多分)単線を用い、皮膜は融けた状態の半田に突っ込んで焼いて剥がします。それで、同時に表面に半田皮膜ができるので、それを利用して半田付けを行いました。(尚、配線は0.3mmφだと、少し硬すぎ)
レジスタ書換えプログラム
これは、アセンブラで組んだ小さな自家製プログラムです。
機能として、メモリ・レジスタ内容の表示、バンク毎の書換えがあります。
ただ、ここに示した32MB拡張メモリでは、第3バンク(最後尾)だけしか書換えられません。他のバンクを書換えると、大抵、PC110が暴走します。
このプログラムは、レジスタを書換えた後、一度ソフト・リセットします(FFFF0000hへジャンプ)。その後、レジスタ内容が指定通りに書換わっていれば、そのまま通過させて通常のOS動作に戻します。
これは、手動ででも起動できますが、autoexec.batに入れて、操作を自動化する事もできます。
書式: over16s [///c] (over16sの置き場所は、こちら)
over16s ・・・ オプション無しの場合、レジスタ内容の表示 例:下表
over16s ///c ・・・ 第3バンクのメモリ値指定 例:c=8MB (トータルで28MB)
ここで、dは16MB、 cは8MB、bは4MBを表わす
(d,c,bの代わりに5,4,3を用いてもよい)
後処理
配線は、かなり細いので、誤って引っ掛かけたりすると切れる恐れがあります。そこで、DIY店などで入手が容易な(速乾性)液状ニスを、細筆で塗って配線群を固定しました。(本当は、高周波ニスなどの方がいいのですが...)
偶々一度、垂らしたニスの量が多すぎたため、コネクタのピンの間から接触部まで這い上がって、ピン表面に薄い絶縁膜ができたようで、マウスが動かなくなるなどの異常動作が発生しました。
しかし、何度か抜き差しを繰り返していると直っていましたので、それほど心配する事でもなかったようです。