2017-08-13 21:21 — asano
カテゴリー:
これはよくある256k (32k×8bit) SRAMかと思ったら、擬似SRAMでした。
Toshiba製のTC51832SPL-10という擬似SRAM、32k×8bit構成でアクセスタイムは100nsというものです。
以前μPD4168Cのところでも書きましたが、擬似SRAMとはDRAMのメモリセルとSRAMのインターフェイスを持つメモリデバイスのことです。大容量化に向いたDRAMメモリセルと扱いの容易なSRAMインターフェイスと、DRAMとSRAMのいいとこ取りをしたものですが、リフレッシュの必要性からは逃れることができません。
リフレッシュを行なう上で問題となるのはカウンタをどうするかといつ行うかということです。
DRAMのメモリセルは2次元に配置されており、あるアドレスをアクセスするとそのアドレスを含む列がリフレッシュされます。あるいはアクセスせずとも列を指定してリフレッシュする(アクセスするより若干時間が短くて済む)ことができます。そして一定時間内にすべての列をリフレッシュする必要があります。
通常のアクセスのみではすべての列がリフレッシュされる保証が無いため、列を順にスキャンする必要があります。
このスキャンのためのカウンタはZ80 CPUのようにCPUやコントローラが持っている場合もあり、DRAM自身が持っている場合もあります。擬似SRAMは使用が簡単なことが売りなのでカウンタは内蔵されています。どちらも持っていない場合には何らかのカウンタを用意する必要があります。
次にリフレッシュをいつ実行するかという問題もあります。リフレッシュには一定の時間がかかり、一度始めてしまったら終わるまで通常のアクセスができなくなるからです。
- リフレッシュの間CPUを停止しておく
- アクセスが無いことがはっきりしているときに行なう
例えば他のメモリへアクセスしている間はアクセスされるはずが無い - リフレッシュ中にアクセスされてしまったらCPUを待たせる
- CPU(ソフトウェア)にリフレッシュさせる
例えばアドレスの下位を列アドレスにしておいてタイマ割り込みで多数のNOPを実行させるなど - 通常の動作ですべての列がアクセスされるよう工夫する
グラフィックVRAMなどはうまく設計すれば表示動作だけでリフレッシュできてしまう
といったの方法のうち一つまたは複数を組み合わせて使用することになります。
コメントを追加