MOSFETを使った双方向電圧クリップ保護回路
FPGAと、正体不明のデバイス「X」を接続する回路を作りたいのですが、Xが何Vを出してくるかはわからない。
そんな場合にFPGAの端子を過電圧から保護するという回路を作ることになりました。
MOSFETを使えば電圧クリップ回路ができるということなので、シミュレーションをしてみました。
まずは、FPGAのピンを想定したパルス源から「X」に向かって信号を出力する場合。
当然のことながらFPGA PINとXは導電圧になります。
次は逆方向。FPGAが入力側になる場合です。
基本的にはMOSFETはゲート+Vthより高い電圧はD→S方向に通さないので、ゲートにVCCIOからVthだけ高い電圧をかけておけば、それ以上高い電圧はカットされてVCCIOになるという考えです。
左側の1.8VというのがFPGAのVCCIOを想定したもので、5Vから10kΩで吊っているのはバイアスを与えるための抵抗です。左側のMOSFETはダイオード接続をしているので、1.8V+Vthの電圧がゲートに加わります。
これで「X」から0~5Vの電圧を加えてみると見事にクリップされました。
ところが、@lyuka_jp さんから矩形波の過渡時には過電圧が発生するとの指摘をいただきました。
矩形波でシミュレーションしてみると、確かにヒゲがすごい出ます。
実機でもこんなにヒゲが出るのかと訝しんで、適当な基板(SMAと電源コネクタがあるやつ)にMOSFETや抵抗を付けてジャンパを飛ばして実験してみました。
その結果、たしかにシミュレーションと同じようなヒゲが出ていました。
1.8Vにクリップしたいのに3.3Vくらいまで出ていますね。
まず改善しようと思ったのはゲートの電位です。
5Vのパルスを受けると、MOSFETのゲートはこんなにも揺らぎます。
ゲートに3000pFのコンデンサをつないでもほとんど変わりませんが、10uFのコンデンサをつなぐと、突然おとなしくなりました。
ただ、ゲートの電圧を安定化させてもパルスの立ち上がりが貫通してヒゲが出る現象はあまり変わりません。
ヒゲが出る原因はゲートの電圧が揺れるのが原因ではなく、ソース・ドレイン間容量によって矩形波の立ち上がりが微分波形になって出てきているからのようでした。
次に試したのは、MOSFETとXとの間に47Ωくらいの抵抗を入れること。これはほとんど効果はありませんでした。
一番効いたのがMOSFETのソースからVCCIOに向けてショットキバリアダイオードを入れたこと。
これが効果てきめん。ヒゲをカットすることができました。
こういったショットキバリアダイオードはFPGAのピンに保護用として埋め込まれているので、あえて付けなくてもFPGAのピンにつなぐだけで自動的に挿入されます。しかし、本来はFPGAのピン内蔵ショットキバリアダイオードは導通させてはいけないダイオードです。(何のための保護素子だ!)。通常はこのダイオードが導通しないギリギリの電圧がIOピンの絶対最大定格になっています。
ですから、安全のためにはFPGAの内蔵ダイオードよりも低いVfのショットキダイオードを使ってVCCIOに放電して保護すればよいわけです。まぁ、短時間だから内蔵ダイオードがONしても平気だと思うんですけどね。
ただし、過電圧はVCCIOに流したらOKではなくて、VCCIOの電圧が上昇しないかどうかも注意深く見守る必要があります。LDOには吸い込みができないタイプもあるからです。シミュレーションした感じではVCCIOに10uFくらいのコンデンサをつないでおけばダイオードを通じて流れてきた過電圧は吸収できるようでした。
これも実機でやってみました。
まずは5Vの矩形波を800mVでクリップ。
次は1.8Vでクリップ。
次は2.8Vでクリップ。
最後は3.8Vでクリップです。
このとおり保護回路として働くことがわかりました。
| 固定リンク
コメント