○DRAMのアクセスのタイミングについて  DRAMをアクセスするためには以下のような手順を踏む必要があります。 まずロウアドレスをセットしてRASをアクティブにし、次にMPX信号によって カラムアドレスをセットしてCASをアクティブにすることによってデータの読み書き が行なわれます。  このRAMボードでは、RASとMPXの信号は88本体の信号をそのまま用い (RAS0,RAS1,MUX)、CAS信号についてはMPXの信号をディレイ ラインによって遅らせて作っています。  本体の信号線についてですが、RASはCPUのMREQ信号の立ち上がりを速めた もののようです。具体的にはT3ステートの立ち上がりでRASもHレベルになるよう です(ここのところはよくわからない)。RAS0は0〜3FFFHをアクセスする とき、RAS1は4000〜7FFFHをアクセスするときにアクティブになるよう です。これは8001の16kビットDRAMを使っていた時代の影響と思われます。 リフレッシュのときはどうなるか、ということはこれもよくわかっていませんが、 とりあえず一定の周期でアクティブになるのは間違いありません。 (いい加減ですいません^_^;) MUX(MPX)信号は本体内のRAS信号の立ち下がりを1/4クロック分遅らせた もののようです。立ち上がりはMREQと同じになっているようです。本体内のCAS 信号はMUXをさらに1/4クロック遅らせたものになっていますが、この信号は拡張 スロット上には出ていません。 * ここのところは8801の回路図を見て考えたのですが、回路のあちこちがループ *している上、DMAも絡んできているので、詳しいところまでは解析できていません。 *作ってみて動かなかったらまた考えようなどという、いい加減な姿勢でいましたので…  CAS信号については先に書いた様に、MUX信号をディレイラインによって 20ns遅らせて作っています(実際にはTTLの遅延が10nsほど加わります)。 これにリフレッシュのためRFSH信号とOR(負論理ですから実際にはANDゲート ですが)を取っています。RFSH信号はリフレッシュ時のMREQ信号(≒RAS) よりも十分速く確定するので、これでCASビフォアRASリフレッシュは可能です。 (実際にはCASがずっとつながってヒドゥンリフレッシュの形になっていると思われ ます)  ライトの制御にはMEMW信号を用いています。これは本体内で作られている MREQ×WRの信号ですが、この信号はアクティブになるのが遅い(実際にはZ80 のWR信号が遅い)ので、ライトはリード・モディファイ・ライトサイクルになり、 DIとDOは分離する必要があります。また、拡張スロットにはWEというDRAM 制御用の信号も出ているのですが、これを用いると、本体内のRAM,ROMを禁止 するためのROMKILL信号がアクティブになるのが遅れそうであったので使用 しませんでした。  以上が各信号線の仕様ですが、設計にあたって満たさなければならない条件として、 CPUのデータの読み出しのタイミングとDRAMの規格があります。  まずCPUのほうですが、M1サイクルにおいてはT3ステートの立ち上がり、 それ以外のサイクルではT3ステートの立ち下がりにおいてデータが読み込まれます。 したがって、それまでにDRAMからのデータが確定している必要があります。 88のMC以外の8MHzモードではウェイトが一つ入りますので、M1サイクルでは T1ステートのクロックの立ち下がりから少し遅れてMREQ信号がアクティブに なってからT3ステートの立ち上がりまでに約220nsほどあります。一般に、 DRAMのアクセスタイムはRASがアクティブになってからデータが確定するまで の時間ですから、DRAMはアクセスタイム150nsのもので良いことになります。 (ただし、150nsのものを使っている8801−02Nボードは8MHzでは 動かないそうですので実際はタイミングはもっと厳しいのかもしれません)  DRAMのほうで満たさなければならない規格としては、RAS信号の最小パルス幅 とプリチャージタイムがあります。最小パルス幅はRASがアクティブになっている ときのパルス幅で、プリチャージタイムとはRASがインアクティブになってから 次にアクティブになるまでに必要な時間です(くわしくは規格表を参照)。 ただ、RASは本体からの信号をそのまま使用していますので特に工夫したところは ありません。本体のRAS信号がMREQの立ち上がりを速めたものだというのは、 このプリチャージタイムをかせぐためです。  アクセスタイムとRASまわりがうまくできていれば、後はそれほどタイミングが 重要視されるところはありません。CAS信号をMUXを20ns遅らせて作って いますが、これは74F157によるアドレス切り換えの時間です。CASを出すのを あまり遅らせると今度はCASがアクティブになってからのアクセスタイム(RAS アクセスタイムの約半分)にひっかかるおそれがあります。  また、データの読み書きが終了するまでCASはアクティブのままである必要が ありますが、MUXはMREQがインアクティブになるまでアクティブのままと 思われますので、この点も大丈夫です。  以上がRAMについてのだいたいの解説ですが、こういうことを考えながら作った というよりも、作ってみてから勝手に説明をつけたという感があります。タイミング チャートのほうも、別にオシロを見て書いたわけではないので少々いい加減なところ があります。でも、最低限のことさえ気をつけていればそう難しく考えなくても結構 安直に動いてしまうというのが実際ではないでしょうか。要はなんでもやってみるのが 大事ということでしょう。 (そのためには多少の投資(犠牲?)も必要になりますが(^_^;))