LZ93D50 と FLASH MEMORY の接続

AM29F040B の互換品の評価をするためについでにやってみたんだが、 LZ93D50(FCG-3) の素敵なハード構成に涙した。

ROM の配線は 27C301 (または27C100) に A17 を追加したもので、 1M の ROM なら 27C301 をそのままつなげられる。そこらへんをみて、通常の配線方法でいってみた。問題はここからで全然書き込めない。最初は互換品のコマンドアドレスがデータシート通りではないと勝手に決め付けたんだが、書き込み途中の ROM データを dump してみると、見事に各所アドレスにデータがばらばらに書き込まれていた。

flash への書き込みが LZ93D50 のバンク切り替えを誘発していたということが分かった。 LZ93D50 はφ2を書き込みの条件にいれていない。専用ICになったにも関わらずバス衝突している可能性が高い。φ2はおそらくφ2カウンタ割り込みの目的だけに接続されているようだ。

バス衝突や書き込み波形を直すために 74HC00 を追加*1。 7400 便利ですね。
LZ93D50 につがっている R/W を変更したが、まだ書き込みができないので、 LZ93D50 から出力される Program ROM EN# も使わずに ~R/W をつなぐ。

ということで今回の接続はこうなる。

LZ93D50 R/W = CPU R/W | ~CPU φ2
Program FLASH OE = ~CPU R/W
Program FLASH CE = CPU ROMCS#
Program FLASH WE = CPU R/W
Charcter FLASH OE = PPU RD#
Charcter FLASH CE = PPU A13
Charcter FLASH WE = PPU WR#

その他つまらない配線ミスなどがあって動作が安定するのに半日使ってしまった感じ。互換品の評価は問題なかったが LZ93D50 が曲者すぎた。

*1:163 に使う 74HC00 はアドレスデコードで目的が異なる