3.8. レベルシフト

カメラのGPIOピンはHighのとき約3.3Vを出力します。接続先のデバイスは5V(古いマイクロコントローラーや多くのセンサーボード)や1.8V(新しいセンサーや一部のチップ間バス)で動作する場合があります。両者を直接つなぐのは安全なこともあれば破壊的なこともあります。レベルシフトは、この差を確実に橋渡しする回路です。

3.8.1. クロス電圧の直接駆動がピンを傷める理由

どのチップのI/Oパッドにも、一対の内蔵保護ダイオードがあります。1つはピンからグラウンドへ、もう1つはピンからチップの電源レールへつながっています。これらは静電気放電(ESD)を吸収するために存在します。ESDとは、ボードを取り扱う際にピンへ加わる、静電気による短時間で高電圧のスパイクです。カーペットの上を歩いた人は数キロボルトの静電気を帯びていることがあり、間違ったピンに触れるとその電荷がナノ秒単位でチップへ移動します。上側の保護ダイオードは順方向にバイアスされ、パルスがチップ内部のトランジスタに到達する前に、安全に電源レールへ逃がします。

5Vトレラントではない3.3Vピンに5V信号が継続的に加わると、上側の保護ダイオードは永久に導通します。これらのダイオードは短いESDパルス向けに設計されており、定常電流向けではありません。電源レールが3.3Vを超えて上昇し始め、ダイオードが発熱し、ピンまたはオンチップの電圧レギュレータが故障します。

5Vトレラントなピンは異なる入力段を使用しており、上側のダイオードがより高いレールにつながっているか、あるいは存在しないため、5Vを加えても無害です。ボードのピンが5Vトレラントかどうかはボードによって異なります。OpenMV Camクイックリファレンス を確認してください。

もう一方の向きにも独自の問題があります。3.3VのGPIOがHighを駆動すると、配線上には約3.3Vが出力されます。Highを認識するために 0.7 × Vcc を必要とする5Vレシーバーは、しきい値が3.5Vになるため、3.3VはLowまたは曖昧な値として読まれる場合があります。たとえ損傷がなくても、信号は確実には動作しません。

レベルシフタは両方の向きを解決します。

3.8.2. スイッチとしてのN-MOSFET

以下の回路は1個のNチャネルMOSFETを使用します。これには3つのピン、ゲートドレインソースがあり、電気的に制御されるスイッチとして振る舞います。

制御入力はゲートとソースのの電圧であり、Vgs(ゲート-ソース間電圧)と書きます。

Vgs = (gate voltage) - (source voltage)

MOSFETはどちらか一方のピンの絶対電圧ではなく、このを見ています。その動作は Vgs に従います。

  • Vgs がMOSFETのしきい値電圧(小信号のロジックレベル品で通常約1V)を超えると、トランジスタがオンになり、電流がドレインからソースへ自由に流れます。

  • Vgs が0以下のとき、トランジスタはオフになり、ドレインからソースへほとんど電流が流れません。

ドレイン-ソース間の経路がスイッチされる電流経路であり、Vgs がそのスイッチを開閉します。

N-MOSFETには、ドレインがソースより約0.6V以上低く引き下げられたときに導通するボディダイオードもドレイン-ソース間に備わっています。このダイオードは製造上の副産物ですが、以下の双方向シフタはこれを意図的に利用しています。

3.8.2.1. 配線のルール

N-MOSFETは対称な3端子デバイスではありません。ボディダイオードはソース(アノード)からドレイン(カソード)へ向いており、チャネルを制御するのは Vgs です。ここから2つのルールが導かれ、すべてのN-MOSFETスイッチ回路で守らなければなりません。

  • ソースは低い側の電圧へ、ドレインは高い側へつなぐ。 ドレインを高い側のレールにつなぐと、ボディダイオードは逆方向にバイアスされ何もしません。これを逆にすると、ボディダイオードは常に順方向にバイアスされます。ゲートが何をしていようと、いまや高い側となったソースからボディダイオードを通って低い側となったドレインへ電流が流れます。MOSFETはスイッチとして機能しなくなり、絶えずリークし、信号をオフにできず、デバイスはしばしば過熱して故障します。

  • ゲートはソースの電圧レールにつなぐ。 ソースが静止時に位置するレールにゲートを保持すると、アイドル時に Vgs = 0 となり、しきい値を大きく下回ります。何かがゲートをソースより高く駆動する(以下の一方向回路)か、ソースをゲートより低く引き下げる(双方向回路)まで、MOSFETはしっかりオフのままです。ゲートを別のどこかにフローティングさせると、オフ状態が定義されなくなります。ノイズ、リーク、迷容量によって Vgs がしきい値を超えて漂い、MOSFETがランダムにオンになる可能性があります。

どちらのルールを逆にしても、レベルシフタはリークの多い信頼できない経路になります。以下の両方のシフタ回路はこれらのルールに従っています。ソースは低い側、ドレインは高い側、ゲートはソースのレールにつなぐか駆動します。

3.8.3. 一方向 3.3 V → 5 V

最も単純なレベルシフタは、カメラのGPIOから5V入力へ一方向の信号を押し出します。1個のN-MOSFETと2本の抵抗でこの仕事ができます。

インバータとして配線されたNチャネルMOSFET。3.3Vの GPIOがゲートを駆動し、ソースはグラウンドへ、 ドレインは10 kΩを介して5Vへプルアップされ、ドレインは 5V出力としても取り出されます。

N-MOSFETが3.3V信号を5V出力へレベルシフト(かつ反転)します。

GPIOがHigh(ゲートに3.3V)を駆動すると、Vgs はしきい値を超えMOSFETがオンになり、ドレインは約0Vへ引き下げられます。GPIOがLow(ゲートに0V)を駆動すると、MOSFETはオフになり、10 kΩのプルアップがドレインを5Vへ引き上げます。

出力は入力の反転です。ソフトウェアで信号を元に戻す("5V出力がHigh"のときに 0 を書く)こともできますし、2段をカスケード接続して部品点数を2倍にすることで非反転の信号を得ることもできます。

3.8.4. 1個のN-MOSFETによる双方向

どちらの側からも駆動しなければならない配線、つまりどちらの端でも配線をLowへ引き下げられる共有バスでは、標準的な回路は配線ごとに1個のN-MOSFETを使い、各側の電源へそれぞれプルアップを設けます。

双方向N-MOSFETレベルシフタ。MOSFETは 左側の3.3V信号線と右側の5V信号線を 橋渡しします。ゲートは3.3V電源に、ソースは 3.3V信号に、ドレインは5V信号につながり、 各信号線はそれぞれの電源へ独自のプルアップ抵抗を 持ちます。

1個のN-MOSFETが3.3V線と5V線を橋渡しし、各側に独自のプルアップを持ちます。

ゲートは3.3V電源につながれているため、MOSFETの動作はどちらの側が駆動しているかに依存します。

  • 両側がアイドル。 ソースは左側のプルアップを介して3.3Vに位置し、ゲートは3.3V、Vgs = 0 でMOSFETはオフです。5V側は右側のプルアップを介して5Vへフローティングします。両側ともHighを読みます。

  • 3.3V側がLowへ引く。 ソースが0Vへ下がり、Vgs がしきい値を超えて上昇し、MOSFETがオンになりソースからドレインへ導通します。5V側はトランジスタを通じてLowへ引き下げられます。

  • 5V側がLowへ引く。 ドレインが0Vへ下がり、MOSFETのボディダイオード(ドレインからソース)が順方向にバイアスされ導通します。ソース(3.3V側)は約0.6Vまで引き下げられます。すると Vgs がしきい値を超え、MOSFETが完全にオンになり、両側をLowにします。

BSS138はこのパターンの標準的なN-MOSFETです。同様のゲートしきい値電圧を持つ小信号ロジックレベルのN-MOSFETは、ここではすべて同じように振る舞います。