NES on FPGA 2005/05/03

カートリッジコネクタ

 NESカートリッジをFPGAと接続するためのカードエッジコネクタ実装部分です。
 SP3E300評価ボードにはSCSIと同じ50ピンのコネクタが2つついているので、 ここにNESカートリッジコネクタを接続しています。
 カートリッジコネクタはKEL製2.54mmピッチ60ピンのカードエッジコネクタ (型番 4630-060-038)を加工して利用しています。

_
▼ Ver.1 これは食えるのか

 このときはまだNES用のカードエッジコネクタが入手できていなかったため、 無理矢理ROMと結線しています。 ラインが長いために動作が不安定です。
 また、VGA信号は受信周波数25MHzに対して33MHzで生成しているため、 画面の横幅が縮まっています。
 実機ではカートリッジへ5Vが供給されていますが、FPGAのI/Oは3.3Vです。 モールドされたカートリッジROMの場合は3.3Vで駆動しても動作するようです。

! びろー。もうお婿にいけない。

ご足労の末、お見苦しいところをお見せして申し訳ない。

_
▼ Ver.2 戦々恐々

 カードエッジコネクタを入手できたので評価ボードに接続しました。 このカードエッジコネクタをNESカートリッジで使用するためには、 コネクタを固定するためのアームを切り取らなければならず、 カートリッジの抜き差しの度に裏の半田にクラックが発生しないか心配です。

右の写真は基板裏。

! NESの刺しかたとは異なります。
ファミコンの刺しかたです。

_
▼ Ver.3 ちゃんとしようよ 2005/03/15

 実機ではカートリッジへ5Vが供給されていますが、これまではFPGAと同じ3.3Vを供給していました。 しかしこれでは信号が安定しないものがあり、例えば、同じマリオでもモールドROMは動作しましたが、 ゲジゲジROMは動作しませんでした。

やっぱり全レベルシフトは面倒だなあ


 そこでカートリッジへ実機と同じ5Vを供給し、 データバスに3.3V-5Vのレベルシフトをかまして信号を安定させようというわけです。 このため、双方向、オープンコレクタのバスバッファとして74LS641を選択し、 カートリッジ側を5Vにプルアップ、FPGA側を3.3Vにプルアップしました。 単方向のアドレスバスには74HC07をかまして。
 はんだ箇所を最小に抑えた完璧なフロアプランで、 しかしVCCとGNDラインを間違えていたことに気づいてショックを受けたもののこれを乗り越えなんとか完成。 これまで動かなかったゲジゲジROMマリオが動作しました。当然モールドROMも。
 しかしVGAラインの引き回しが悪いせいか、 CHR-ROMからのデータに多少のノイズが乗ってしまう。 さらにカートリッジからのリターンバック信号はレベルシフトを2回通過するため、 カートリッジへの書き込みで十分なアクセスタイムを確保できない…。

! だからハナッから…

マリオのヴァージョンによって違うのです。
ゲジゲジROM(TTL)
モールドROM(CMOS)

十分な部品がそろってないのですよ。

はんだ地獄。

_
▼ ちゃんとしたやつ! 2017/01/28


DE1ボード+カートリッジ接続基板

 イサリヨクラリ@isariyokurari さんにDE1ボード用のカートリッジ接続基板を作って頂きました! SFLでマッパー回路を実装するのも面白いけど、やっぱり実際のカセットとおしゃべりできるといいよね! ということで、表面実装のはんだ付けを応援したり、 ちゃんとROM読み出せるかテスト回路を送ったりして出来上がったのです。 レベルシフトICとして、8ビットバスを2つ扱えるファミコンカートリッジアクセスのためにあるようなICが使われています。

 手元に届いてからは、まずマリオでPRG-ROMのリードアクセスとCHR-ROMのリードアクセスを確認して、 問題なく動作。ROMだからこれはシンプル。
 そして次はMMC3を使用してるマリオ3。 これはバンク切り替えのためにPRGバスへのライトアクセスと、 MMC3を動かすためのクロックとしてPhi2信号が必要。 参照できる明確な波形が無かったので、とりあえずなんとなくでタイミングを調整してなんとかマリオ3もプレイできました。 ただしIRQの発生タイミングが3ラインほど上下したりするけど、 このあたりはPPUの実装がまだ実機と異なる部分があるためのようです。
 そして最後に、CHR-RAMを使用しているゲームのためにCHRバスへのライトアクセス。 ゲームとしてはFF3やDQ4など。 これもカンでタイミング調整してプレイできました。
 ついでにセーブメモリの読み書きに関しても問題なさそう。 前の持ち主の形跡が残るセーブデータや、ラストダンジョンのセーブデータがあったり。 セーブデータって貴重なものなので、吸い出して保存しておくのです。
 それからカートリッジからのサウンド出力はイヤホンジャックに接続されているので拡張サウンドもサポート。 VRC7チップを使ってるラグランジュポイントのサウンドを聴くことができました。

 注意しなきゃいけなかったのが、 ミネルバトンサーガはUSBバスパワー電源だけでは足りないせいか、 DE1ボードの電源アダプタも接続しないと動かなかった。 あと、DE1ボードで使えたのでコネクタ配置が同じDE0ボードでも使えるかな? と思ったら、DE0のGPIOピンのいくつかはI/O固定のピンがあり、 ユーザピンとして使用できない模様。これはちょっと残念なので、 次の版があればそのピンは避けてもらおう。

 MMC5のジャストブリードが動かないけど、これもPPUの問題なので調査して動かしたいところ。


Copyright(C) pgate1 All Rights Reserved.