2019-09-12 21:42 — asano
カテゴリー:
今回はメモリ基板の現状と今後の予定を書いてみます。
まずは今動いているところです。
- 4k×8bitのRAMはホスト側から(シリアル経由で)アクセスできています。
ターゲットCPU基板がまだ1枚も完成していないのでターゲット側からのアクセスは未確認ですが、ただ接続するだけなのであまり心配はしていません。
- シリアルからのコマンドでRESET信号を発生させることができます。ちょっとしたオマケ機能です。起動用のプログラムをRAMにロード後リセットできたら便利かなと。
ROMエミュレータではアクセス中はターゲットからのアクセス不能になり暴走するのでアクセス中"L"になる信号を用意していましたが、せっかくDPSRAMを使っていることでもありRAMアクセスとは独立させています。
これだけでもCPUの動作確認ぐらいはできるのでCPUボードを製作中です。まだ動かせていないメジャーな8ビットプロセッサということで6502を選んでみました。
R/Wとφ2からOE, WEを作らないといけないので直結というわけにはいきませんが、アドレス・データを1:1で接続できるのは楽チンです。
基板を起こすかワイヤラッピングならともかく、蛇の目基板に手配線でハンダ付けだとかなり嫌なことになります。
このCPUボードについてはある程度形になってから書きますね。
さて、メモリ基板についてはハードウェアは一応完成ですが、ソフトウェアは以下を追加中です。
- コンソール機能
せっかくDPSRAMを搭載しているのでその一部を共有メモリとしてターゲットと通信します。ターミナルはATmega164のもう一つのUARTを使用して接続します。共有メモリのアドレスは16バイト単位でコマンドにより変更可能です。
- RESETのパルス幅の変更機能
ここまでいけばUniversal Monitorが動かせるようになります。
さらに将来的には以下のような拡張も予定しています。
- 16ビット・32ビットバスへの対応
同様の基板(ATmega164は無し)を追加して32ビットバスまで拡張可能なようになっています。アドレスそのままでバス幅が増えるので32ビットでは4k×32bit = 16kBの容量になります。32ビットプロセッサのメモリとしては少なすぎる気もしますが...
- CPU基板にEEPROM搭載
CPU基板にEEPROMを搭載すればターゲット毎に共有メモリのアドレスなどの設定情報を記録しておけます。ブート用のモニタなどを格納して自動で起動させることもできるかもしれません。
- 仮想ディスク
ATmega164のポートはまだ余裕があるのでSDカードなどを接続して仮想ディスクにすればCP/Mなども動かせるかもしれません。あっ、その前にメモリ増設も必要ですね。
コメントを追加