「AKI-H8/3069F LANボードのDRAM増設」の編集履歴(バックアップ)一覧に戻る

AKI-H8/3069F LANボードのDRAM増設 - (2007/07/22 (日) 16:43:24) の編集履歴(バックアップ)


AKI-H8/3069F LANボードのDRAM増設

秋月で売られているこのLANボード、デフォルト(秋月が言うにおまけ)で2MバイトのDRAMが乗っているのに
いかんせんuClinuxを起動するだけでその大半を使うと言うことでuClinux使いにはDRAM増設が定石となってるようです。

実はまだuClinuxは動かしたことがないけどマイコン弄り手始めにDRAMを増設したときのメモ。

3069の仕様

3069は外部メモリ空間が8つのエリアによって分けられています。
このエリアのサイズはMD0~MD2ピンによって選ばれるモードによって左右されるんですが今回はモード5で動かします。
モード5はメモリ空間が16Mバイトで、それを8分割して一つのエリアは2Mバイトですが、
そのエリアのうちDRAMが使えるのはエリア2~5となっています
しかしこのLANボードにはエリア2に2MバイトのDRAMが既に接続されているのでこれ以上にDRAMが増設できるのは最大で6Mバイトとなります。
まぁ8Mもあれば何でも何とかなるでしょう・・・

そして、このエリア0〜7はCS0~7にそれぞれ対応していて望むエリアのCSにDRAMのをRASをつなげばいいです
あと私がはまった穴ですが、今回のように16bitアクセスのDRAMを使う場合
アドレスバスはA0からつなぐのではなく、A1からつなぐんだそうです。

ハード

デフォルトで5117800もしくは5117805のDRAMが乗ってるそうで、
これを買ってきてそのまま上に積むというのもいいんですが

私は家にあるPC98から抜いた72pinSIMMで増設を試みます。

そのSIMMがこれ
BUFFALOのEMV-P16Mというやつ。乗っているDRAMはOKI製M5118160A-60J(1Mバイトx16bit)が4つで合計8Mバイト。
これはOKIのページからデータシートがDLできるのでもらってきます
真ん中に付いているBUFFALOの石(MGA-24)が気になるけどデータシートが出てこないので無視することにします。


そしてこのDRAMとSIMMのピンとの接続をSIMMのピン表とDRAMのデータシート片手にひたすら調べてみた。
結果こんな感じ。
DRAMを上の画像のようにA~Bとすると
SIMM DRAM
CAS0 C-UCAS,D-LCAS
CAS1 C-LCAS,D-UCAS
CAS2 A-LCAS,B-UCAS
CAS3 A-UCAS,B-LCAS
RAS0 C-RAS
RAS1 D-RAS
RAS2 A-RAS
RAS3 B-RAS
WE A,B,C,D-WE
DQ1-8 C-DQ9~16,D-DQ1~8
DQ9-16 C-DQ1~8,D-DQ9~16
DQ17-24 A-DQ1~8,B-DQ9~16
DQ25-32 A-DQ9~16,B-DQ1~8
DRAMのOEはGNDにつないで常にH固定のよう
A0-9はABCD全て一緒に引き出されてます


この調べた結果から
SIMM H8/3069
CAS0,CAS2 LCAS
CAS1,CAS3 UCAS
WE WE
RAS0 CS3
RAS1 CS4
RAS2 CS5
A0-A9 A1-A10
DQ1~16,DQ17~32 DQ1~16
と接続。
そして回路図
他のSIMMでこの接続が使えるかは不明。

後はひたすら配線作業するのみ。
こんな感じ
うはー終わったーとか思ったらプルアップ抵抗入れるの忘れてて何となく空間的に配線
CS6までつないじゃってますがエリア6はDRAMが使えないというのに後で気づいたからで実際意味がないです。

メインがUEW線で気休め程度に電源だけはジュンフロン線でやりました。
まだうまくできた方。ハンダ付けを楽しめるようになってきた。


ソフト

DRAMを使うには3069のハードウェアマニュアルのP188にあるように
ABWCRの設定、RTCORの設定、RTMCSRのCKS2-0ビットの設定、DRCRBの設定、DRCRAの設定が順に必要になります

ABWCR(バス幅コントロールレジスタ)
エリア0〜1につながれたROM/RAMが8ビットアクセスであるか16ビットアクセスであるかを設定する。
ビット 7 6 5 4 3 2 1 0
ABW7 ABW6 ABW5 ABW4 ABW3 ABW2 ABW1 ABW0
それぞれ8ビットアクセスの時1,16ビットアクセスの時0。
エリア3,4,5に16ビットアクセスのDRAMを増設したので"11000111"=0xC7。

RTCOR(リフレッシュタイムコンスタントレジスタ)
RTMCSRで決められた周期でRTCNTがカウントアップし、RTCNTとRTCORとが毎回比較され、一致するとリフレッシュ要求が起こる。

RTMCSR(リフレッシュタイマコントロール/ステータスレジスタ)
ビット 7 6 5 4 3 2 1 0
CMF CMIE CKS2 CKS1 CKS0 (1) (1) (1)
CMF,CMIEは使わないので初期値の0にしておく。
CKS0〜2=n,クロックφとすると、φ/2^{2n-1}でRTCNTがカウントアップされる(n=7のみ4096)
今回使うDRAMのデータシートからリフレッシュ周期は5117800=2048回/32mS,5118160=1024回/16msであるから最低でも0.016/1024=15.6uSでのリフレッシュ。
よって20MHz



書き途中......