ROM Emulator(0)

製作

ROM Emulatorをつくってみる。

やっぱり、Z80とかのレトロCPUをやりはじめると、いちいちROM焼くのは大変ですし、ROM エミュレータがほしくなりますね。。。ちょいと調べると次のサイトがヒットしました。

ELM - ROMG~[^
ROM Emulator の製作 - Kiの研究部屋
ROMエミュレータ | Electrelic
デバッグしながらROMを書き直すのが面倒になって作ったROMエミュレータ、ですが製作後ROMを使う機会が少なくなってしまいました。 中央が本体、右の子基板はPCのシリアルと接続するためのRS-232レベルコンバータです。左のクリップはPCからアクセス中にターゲットをリセットするためのもので、アクセス中はROMとしてター...

順当な設計ですね。SRAMとバスを切り替えるように設計して、CPU停止中にRAMに転送する。

今回はマイコンのっけて、DIP28pin以内に収めます。DIPのソケットの上に乗っける感じで作りたいです。

設計(雑)

最初はエミュレーションするROM(SRAM)はマイコン内部のRAMを使おうと思いましたが、32kByte以上となると64pinとかになって使いにくいのと、無駄に高性能で高いのでだったりするのでやめました。ソフト自体は簡単なので、、

あと案外、100ns以内でアドレスデーコードしてデータバスから出力するのと同時にOEやCEの制御もしないといけないので、速度的に厳しいかもです。100MHzぐらいでアセンブラでゴリゴリ書けばいけると思いますが。

ということで、使い慣れたSTM32F103使って、RAMは外付けにします。データ直接USB(HID)で受信するつもりですね。

Aliexpressでかってるのでパチモンっぽいですがなんか動いてます。ただ、次のサイトの人が言っている通り一部のPWM出力が機能しなかったりしますけどね。

https://www.stm32duino.com/viewtopic.php?t=2020

STM32は3.3Vなので、5V入力を受けられるFT端子にSRAMは接続したいところですが、数えると21本しかない、、、

5V耐圧端子

USBとデバッグ端子で4本とられるので、結局17本しか残らいないですね。。。

しかたないので、バスはプルアップしている前提にしてディジタルトランジスでドライブします。(オープンコレクタもしくはオープンドレイン駆動)

ohbłtraIm[̃X^[głj
ohbgtravOAZuō쐬I

中日電工さんのサイトによるフルスピードのHIDで実測では6KByte/s程度のようです。1Byteあたり166usですからたぶんプルアップで引っ張ても間に合うかな。たぶん。

あとはCPUの停止ですが、Electrelicさんのサイトを参考にCPUをリセット状態にすることにしました。ICクリップをはやして、オープンコレクタとしてLOWにできるようにします。たいていのリセット回路はパワーオンリセットとしてコンデンサがついている場合が多いので、コンデンサの端子につけばOKでしょう。

今日はここまでにします。

さいなら!-_-

おまけ

画像がなかったので、適当にイラスト屋AIで「ROM Emulatorを自作します」にて生成してみました。

なんの意味もない画像です…

それにしても、、こんなにイラスト屋が世の中に浸透するとわ。。。すごいもんです。

コメント

タイトルとURLをコピーしました