*** 電源だけ使うPCIボード用の電源変換アダプタ ***
〜その2: i-RAM動作検証のその後 〜

A14ピンの正体

 まず、A14ピンの素性を確認しなくてはなりません。Web上でデータシートを探したところ、思った通りA14は「3.3VSB」つまり3.3Vのスタンバイ電源ピンではないかという結論に至りました。GIGABYTEのページでは、i-RAMについて電源OFF時にも3.3Vのスタンバイ電源でデータを保持できるとありましたが、これで間違い無さそうです。
 しかし、データが消えやすいという問題は、思った以上に曲者かもしれません。ATX電源には5VSB(5Vのスタンバイ電源)が来ていますので、これをダイオード降圧して供給すればよいと考えられるのですが、なんとそれでも電源を切るとバッテリ残量に関わらず、数秒でデータが消えてしまうのです。
 たとえページングファイルなど一時ファイル置き場に利用する用途だとしても、普通のRAMディスクは作成時にドライバによってフォーマットされますが、i-RAMの場合は手作業でフォーマットし直さなければなりません。IPLwareを利用して、フォーマットされていないi-RAMを検出したらフォーマットし直すことにすればよいのでしょうけど、クイックフォーマットできないほど内容が消えていますから、MBRだけを書き戻せば済むような問題ではありません。私のつたないプログラミング技術では大いに不安が残ります。


データ消失を防ぐA15ピン

 しかし普通のPCI2.0スロットに差せば、電源を切ってもバッテリ残量が残っている限りデータは消えません。この違いは何かと考えれば、やはりA15(RST#)ピンの扱いですので、ここにヒントがありそうです。そこで、とりあえずA14ピンによる電源供給問題は棚の上に置いておき、ひとまずPCI2.0相当の電源供給環境でA15ピンの扱いについて探ってみました。
 まず件の自作アダプタは3.3V系の電源とA15ピンを直結している点がPCIスロットとは異なります。そこで3.3V系とA15ピンを隔離するため、オペアンプを用い、ボルテージフォロアを介してA15に接続してみました。ボルテージフォロアとはオペアンプで構成する最も簡単な回路であり、入力側に接続した回路からはほとんど電流を分けてもらわずにその場所の電圧を感知し(というか普通は電流が流れるとその場所の電圧が変わってしまいます)、入力と同じ電圧を高電流で出力できるという便利なバッファです。この結果、見事にデータ消失を防ぐことが出来ました。オペアンプ1個のコストは(物にもよりますが)何十円もしませんから、これで一応の対策は達成されたと言えます。
 ところが検証の結果、使用するオペアンプの特性次第ではデータが消えるものもありました。逆を言えばオペアンプを選べばデータは消えないので私としてはそれ以上追求する必要は無かったのですが、理由が釈然としないのではちょっと気になります。
 そこで別の方法で3.3V系とA15ピンを隔離して確認してみました。それぞれを5Vからダイオード降圧してみたのです。これならダイオードの整流作用により、両者を隔離したうえで同じ電圧を供給できます。しかしこれではデータが保持されず、バッテリ残量如何によらず電源を切れば数秒でデータは消えました。


データが保持される条件

 どるこむで寄せられた情報によれば、12V、5V、3.3Vなどの電源系は電源OFF時に立下りの速度が電源によって微妙に異なり、データが消える電源とそうでない電源があるということです。また、各電源ピンの立ち下がり方によってバッテリ運用に切り替わっていないのではないかということも言われました(MEGUMさん、koukichiさん、ほか情報を提供された皆様に感謝します)。確かにオペアンプ自体の駆動にはそれなりの電圧が必要ですので、立下りの際にたまたまオペアンプの出力が先に立ち下がったのかもしれません。
 そこでまずマザーボードのPCIスロットでA15ピンの立ち下がり方をテスターで測ってみましたが、比較的速やかに0Vまで立ち下がることが確認できました。電源ピンは通常はコンデンサを介しているでしょうから、それよりは遅く立ち下がります。そもそもi-RAM上には大き目のコンデンサがいくつか各電源間に設置されています。
 そこで、A15(リセット)ピンに市販のPC用リセットスイッチを接続し、3.3VとGND(0V)を切替えられるようにして試してみたところ、A15ピンが0Vであるときに電源を落とせばデータが保持されることが分かりました。リセットボタンを押しながらデータを切るなんて、ファミコンと一緒ですね。(^^;)
 また、データが消える環境でデータ入り(OSの起動システム込み)のi-RAMを装着しても、一回だけは正常にi-RAMからOSを立ち上げることが出来ましたので、データが消えるタイミングはどうも電源を切ったときのようです。だとすればなるほどバッテリ運用に切り替わっていないのが原因ぽいですし、その鍵はA15ピンにありそうだということになります。


A15ピンに施すべき対策

 そんなわけで、A15ピンを簡単な回路で(電源より)手早く立ち下げることを考えればよいことになりました。電源ピンのほうをコンデンサで遅く立ち下げてはという意見もありましたが、コンデンサを追加するだけではうまく行きませんでした。電源ピンはマザーボードや他のPCIスロットと直接導通があり、消費電力も高いため、常識的なコンデンサでは大して電圧を保持できなかったものと思われます。
 そこでA15の立ち下げ方を色々考えてみましたが、駄目元でA15に100Ωのプルダウン抵抗を入れてみたらうまくいきました。もちろんA15と3.3V系ピンとは、前述のようにそれぞれのダイオード降圧で隔離しておく必要があります。こうしてどうにか簡単な回路でデータが保持できるようになりました。



 ところがそれだけでは問題があることが分かりました。普通に電源を落とす分には問題無かったのですが、4ピン電源コネクタを直接外していきなり電源を断つときにデータが消えてしまうのです。これは前述のオペアンプ利用の方式でも同様でした。普通に考えればどんな電源にも出力にはコンデンサくらい入っているでしょうから、いきなり電源が断たれる機会など無いと思われました。少なくとも外付けを想定していないi-RAMでは。しかしあるとすれば、外付けの光学ドライブ筐体を利用する場合で、電源がACアダプタ供給という場合ではないでしょうか。電源スイッチがAC入力側ではなくDC出力側に付いていると考えられるため、電源OFF時にはいきなり電源が断たれる可能性がありそうなのです。
 いくらi-RAMが外付けは想定外とはいえ、ここで作ろうとしているのは、工夫次第で色々な使い方ができるように、内蔵にも外付けにも使える手軽さが売りの電源-PCI変換アダプタなのですから、その対策をしないわけにはいきません。


外付けにも対応

 この問題についてはすぐにヒントが見つかりました。4ピンの電源コネクタを外すとき、赤い線(5V側)からコネクタを外しにかかれば、データが保持できるようなのです。そこで試してみましたが、12Vから外すと(5Vが繋がっていても)すべてのLEDが消え、いかにも機能停止しているような印象を受けますし、実際にデータも消えます(ちなみに最初から12Vが繋がっていない場合は一見普通に立ち上がりますが、i-RAMのアクセスランプが点灯したままでデバイス認識のLEDが点灯せず、BIOSもHDDとして認識しませんでした)。12Vが生きているうちに5Vが立ち下がるとバッテリ駆動に切り替わるのでしょうか? そこで12Vをコンデンサ処理することにしました。結論から言えばそれでデータが無事保持されました。この場合はいきなり電源を物理的に断たれるときの対策ですから、他の回路に電力を取られて電圧が保持できないという心配はありません。



 ではどの程度の容量にすれば良いのでしょうか。実は最初、2200μFのものを用いたのですが、これでは電源コネクタを外してもまったくその電圧が衰える気配がないのです。この容量でも普通に電源に繋いでいると立ち下がりはあっという間なのですが・・・。そればかりか、やがてどういうわけかバッテリ異常のLEDが点灯してしまいました。こうなるとバッテリが切り離されるのか、データも消えてしまいました。つまり、あまり容量はでかすぎない方が良さそうです。容量を減らしていったところ、10μFでも結構保つことが分かりました。1μFくらいでも十分そうです。しかしながら、前述のプルダウン抵抗を数kΩに増やしたところ、コンデンサの放電が若干早くなり(LEDの光の減衰から判断)、データが消えてしまいました。そうでなくても、ライザーボードを介して複数枚のi-RAMを差す可能性があることを考えると、もう少し容量はあっても良さそうです。結局、2.2μFの電解コンデンサで様子を見ることにしました。


↑ダイオードでA15と3.3V系を隔離したほか、
プルダウン抵抗を設置してみる。
写真ではコンデンサも追加している。

追記:

 しかし、それでも接続する電源によってはデータが消えてしまうことが分かりました。いきなり電源を断たなくても、普通に電源を切るだけでも+12Vが速やかに立ち下がることがあるようです。そこで、+12V線に対する対策をしっかり行うことを考えることにしました。素人のセンスでは少々悩みましたが、結局、+12V電源からの入力にダイオードを介し、+12V対策コンデンサから電流が電源側に逆流しないようにすることにしました。たくさんの電源を試したわけではありませんが、これでどうにか問題の電源の起きた電源でもデータを保持することが出来るようになりました。



 ダイオードの特性で多少電圧が下がってしまいますが、12Vからであればそう大した影響は無いだろうと考えた次第です。それよりも、閾値電圧以外のダイオードの特性はあまり気にしていなかったので、12Vの電位差に対してどのような挙動をしているのかが気になります。逆方向電圧が掛かった際にツェナー降伏を起こしていたとすれば、たまたまタイミングがうまくいってデータが保持できている可能性もあります。そういう意味では、同じ事をするにもダイオードと電源の特性によってうまく行ったり行かなかったりする可能性がありますから、まだ理屈面では完璧ではありません。とりあえず動く可能性がある、ということでご勘弁を。


ひとまず完成

 そんなこんなで、どうにかi-RAMを安定動作させるまでに至ることができました。遅れ馳せながら、SATAインターフェースボードのPC-98用BIOSを書かれておられます大熊猫さまには心から感謝いたします。
 安定動作と言い切るためには、正確には長期にわたる動作検証が必要ですが、そのためには待機電圧をA14ピンに供給して実用的なデータ保持環境を作らなければなりませんので、取り合えず棚に上げておいたA14ピンについて、先に進めることにします。
 その前に、本アダプタのデータ保持回路について現時点の見解をまとめておきます。これまでの経過により、電源オフ時にはA15(RST#)→+5V/+3.3V電源→+12V電源の順に立ち下げる必要があると考えます。そのためには、まず電源の5Vをダイオード降圧で3.3V系とA15にそれぞれ分岐して隔離します。ダイオードは特性に注意し、順バイアスで二個直列に接続して1.7V程度の降圧になる物を選びます。しかしi-RAMは思いのほか消費電流が高そうで、1.7-1.9V程度のツェナ一個を逆バイアスで使ったところ、2-2.5Vくらい降圧してしまいました。このへんは実際に接続して試すしかなさそうです。それぞれ2個ずつなのでとりあえず4個のダイオードを使いましたが、考えてみれば途中までは共通にしてY字分岐すれば3個で済んだかもしれません。
 次にA15ピンとGNDを100Ωの抵抗で繋ぎます。さらに、12V電源ピンの入力にはダイオードを介し、i-RAM側から電源に電流が戻らないようにしたうえで、2.2μFのコンデンサを介してGNDに繋ぐ、これだけです。抵抗1、コンデンサ1、ダイオード4-5個だけなのでPCIコネクタ脇に十分収まりコンパクトさは損ないませんし、コストも掛かりません。




 あとは、A14ピンに給電するだけですね。


自作パーツへ