2022-03-18 23:20 — asano
カテゴリー:
ROMエミュレータのプリント基板化でも触れましたが、シリアルポートから電源への漏れ電流対策の副作用でターゲット電源切断時の内容保持が出来なくなってしまいました。BOD機能で何とかと書きましたが、RAMの保持を漏れ電流に頼るのはやはりおかしいので別の方法を考えることにします。
何か所かパターンカットが必要になったので生板から新たにもう1台製作しました。
まずRAM保持用の電源をどうするかですが、幸いTTL-232R-5Vからは5Vの電源が得られるのでそれを利用することにします。
- 一番簡単なのはROMエミュレータ全体をターゲット・USBどちらの電源でも動くようにすることです。
これならSBDを2つ追加するだけで実現でき、ついでにソケットへの逆挿し保護にもなりますが、ちょっと気になる点もあります。ターゲットの電源が切れるとCE, OEの電位も下がりアサート状態になり、74HC541は活きているのでデータピンをドライブしてしまいます。 - それならとデータピン用の75HC541だけはターゲット電源のみで動かす方法もあります。
この場合、エミュレータ内部のデータバスを"L"またはHi-Zに維持しておかないと74HC541の保護ダイオード経由で電流が漏れてしまいます。データバスを動かせないとなるとほとんど何もできませんので残りを通電しておくのは無駄です。 - エミュレータは基本ターゲット電源のみで動かし、RAMのみ両電源にする方法もあります。
これならならRAMをバッテリバックアップも可能になります。やはりターゲット電源が切れているときのRAMの出力を"L"またはHi-Zにしておく必要があり、またRAMへの書き込みが発生しないようにする必要もあります。RAMのCSをネゲートすればよいのですが、256kbit SRAMは負論理CSしかありません。
今回は3.を採用することにしました。
細部を見ていくことにします。
まずはターゲットのROMソケット28ピンから電源を取る部分です。
RAM保持とは直接関係ありませんが、ソケットに逆挿ししたときの対策を入れてみました。これで電源が短絡状態になって大電流が流れるのは防げます。
RAMのVCCにはUSB・ターゲット両方の電源を接続します。
P28はターゲット側電源(SBD2本分の電圧降下を避けるためこうしています)、VCCUはTTL-232R-5VからのUSB電源です。TTL-232R-5Vの替わりに電池を付けても良いかもしれません。NiMHなどの2次電池ならSBDと並列に抵抗器を入れて充電することもできるでしょう。
一番悩んだのがここです。
当初RAMのCSはAVRマイコンのアクセス時は"L"固定、ターゲットのアクセス時はソケットのCEを使っていました。
前述のようにターゲット電源が切れているときは"H"にしておかなくてはなりません。この切り替えロジックも当然RAMと同様常時通電にしておかなくてはなりませんし、ICを他と共用すると電源OFF時の配慮が必要になります。
もうICは増やせない(基板の縦寸法をこれ以上増やすと価格が跳ね上がる)し、どうしたものかと頭を抱えたのですが、よく考えるとデータピンのドライブは74HC541で切り替えているのでRAMのCSはターゲット電源のある時だけ"L"にすれば十分です。
それでもインバータは必要なのですが、そのくらいならディスクリートで組めば済むことです。NチャネルMOS FETの2N7000とプルアップ抵抗の組み合わせ、当然プルアップは常時通電のRAM電源です。R4はソケットから抜かれた場合などにも確実にCSを"H"にするために入れています。
閾値は2N7000のVGS-ID特性とR4,R5に依存しています。PST600のようなリセットICを使うのも手かもしれません。
この程度の変更ならパターンカットと空中配線でなんとかなるかなと改造してみたのが最初の写真です。
何かの機会にRev.2の基板を作ってみても良いですが、この基板がまだいっぱいあるからなぁ...
コメントを追加