ECUに載るROMが無くては、ROMチューンは始まりません。
27C1028が手に入らないなら、一般的なROMとロジックを組み合わせて エミュレーションできないか検討してみましょう。
- M37791や27C1028に出て来る信号をチェックすると、 外部ROMへのアクセスはアドレスで 08000h〜0ffffh、 データバスは16Bit固定のようである。
- BHE,A0は無視出来るので、ALEでアドレスをラッチして、 データを27C1028用のOEで制御すれば良いかな。 タイミング等も問題無さそう。
- ROMは容量的には32KBあれば足りる計算だが、16Bit幅なので 8bit x 2構成か 16Bit構成のROMを用意する必要がある。
市販の拡張ボード等では、27C256タイプのROMを2個用意して データはベタに焼きROMをそれぞれODD/EVEN用に分けて使用してる みたいです。(コストやメンテを考えると妥当)- ROMのCEには悩んだけど、アドレスのA15を反転させて突っ込む事にした。
- ROMのスピードはクロック8MHzで125ns、ゲート遅延もあるから... と考えていたが、27C1028の速度はもっとも速いものでも 150nsだから2Tアクセスをしているようである。 市販のROMでは 27C256HGJ-85辺りの高級品が使われているが、 低温側の温度保証さえ気にしなければ何でも良さそうである。
まとめると、
- アドレスをラッチするためのラッチが必要
- 16bitのデータ幅が必要
- アドレスのラッチにはALEを使用する
- ROMのCEは、アドレスA16のラッチ信号を反転して与える
他は普通に接続すれば簡単にエミュレートできるはず...
で、私は27C256タイプでもプロトタイプ (回路図)を作ったが、 最終的には16Bit幅で4Mbit容量の 27C4000を使用した。 当然ALEに同期して4Bit分のアドレス切替えを設け、 16個分のデータを切替えられるようにしました。 これでエンジンが回っている状態でもプログラム領域さえ 変更しなければ切替え可能になりました。
ROM チェンジャー外観
バラ石は、データラッチに74HC573と、A16反転用に74HC00を使用。
切り換えスイッチはショボイが、そこそこ使いやすいのでそのままになっている...