5V系・3.3V系信号レベル変換
電源電圧の異なる5V系と3.3V系の信号レベルの「変換」(相互接続)についての説明です. ただし、あくまでもアマチュア的な電子工作レベルのものです.
信号レベル変換と言うと、すぐにレベル変換用LSIを持ち出す人が多くて、パーツ販売店でもレベル変換用LSIをソルダーレス・ブレッドボードなどでも使えるようにDIPモジュール化したものを販売しているところがいくつかあるのですが、実は特別なLSIなど必用無いという話です.
このページの回路図を一つにまとめたPDFファイル 5V33V.pdf (50KB)
- 3.3V出力と5V入力を直結してください(ただし標準的なCMOSロジックの場合)
- 電源電圧5VのTTL/CMOS標準ロジックから低電圧系に移行する際に、電源電圧の標準を何ボルトに設定するかという議論がありました. いくつかの選択肢(2.7V/3.0V/3.3V
etc)があったのですが3.3Vが一つの標準となり、より低消費電力が必要とされる場合は3.0Vや2.7Vが用いられることとなりました.
- 低電圧の標準ロジックの電源電圧が3.3Vとなった理由の一つは、既存の5VのTTL/CMOS標準ロジックとの接続を考慮したためです. つまり、そもそもCMOSの3.3Vは(やむを得ない場合)5V入力と直結出来るように定められた電源電圧なのです. ですから、電子工作のレベルではわざわざレベル変換LSIを使って昇圧する必要などありません.
- ただし、5V系の入力回路の閾値が2.5Vではない場合(例えばヒステリシス入力回路など)はきちんと信号レベル変換をする必用があります. 3.3V出力側の信号レベルがフルスイングしない場合(例えばオープンドレイン出力回路など)も注意が必要です.
- 当然ですが、きちんとレベル変換をした場合と比較するとノイズ・マージンが減少することには気をつけてください. ソルダーレス・ブレッドボードなどで長々と配線を引っ張りまわす時には要注意です.
- 電子工作のレベルで比較的低速の信号ラインの5V/3.3V変換をする場合は、下図のように抵抗を介して接続してください. 抵抗値は4.7kΩ〜22kΩ程度とすれば良いでしょう. 抵抗分割して信号電圧を下げる必用はありません.
- 当然ですが、メーカー非推奨・非保障、絶対最大定格無視のアマチュア的接続方法です.(素人が手を出すと危ない!?)
- 標準的なCMOSロジック回路の入力には、等価的に保護ダイオードがついているので過大な5V入力から保護されます. 5V入力時に保護ダイオードを介して3.3V電源に流れ込む電流は抵抗(下図では10kΩ)によって制限されます.
- 当然ですが、負荷容量に対する充放電電流も抵抗により制限されることに注意してください.(波形がなまります) 高速の信号ラインには向きません.
- 実はホビー向けの著名な市販製品で、RS-232の入力回路を同様に抵抗一本で済ませているものがあります.(RS-232の信号ラインから抵抗を介してプロセッサの入力ポートに直結) MAX232等のドライバ/レシーバLSIを介さずに接続すると信号の極性が逆になってしまいますが、シリアルポート端子の入出力の反転機能付きのマイクロプロセッサなら対応可能です. ソフトウェアUARTで処理する場合は極性の問題は生じません.(ソフトでの単純な信号反転で対処可能)
- 3.3V入力回路に保護ダイオードがついていない場合は、きちんと信号レベル変換をする必要があります.(5V耐入力のデバイスならなら問題はありません)
- CMOS入力回路の保護ダイオードは、そもそも静電気などによる瞬間的なサージ保護のためについているもので、常時電流を流すような使い方は想定していません. 入力電圧の絶対最大定格を尊重して入力保護ダイオードに電流を流さないようにするには下図のように外付けの保護回路を用いる必用があります. 部品点数が多くなるので、外付けの保護ダイオードを使うくらいならば信号レベル変換LSIを用いた方が良いでしょう. 可能であれば、後述のようにレベル変換用のバス・スイッチを使用することをお勧めします.
- 上の回路にダイオードをもう1ヶ追加すると、RS-232のような正負両方向に振れる信号(過電圧)からの保護が可能です. 抵抗の値は入力電圧に応じて適切に設定してください.
- 東芝のTC74HC00Aのデータシートを見ると、電源電圧4.5VでVIHの最小値は3.15Vと記載されています. 外挿すると、おそらく電源電圧5Vでの値はVIH=3.3V程度になるでしょう. CMOSデバイスの特性を良く知らない方は、TC74HC00A(電源電圧5V)を出力電圧3.3VのLSIと接続したのでは動作マージンがゼロになってしまうと思われるかもしれません.
- しかし標準的なCMOSデバイスでは入力電圧の閾値VTHは電源電圧の1/2、すなわち5V/2=2.5Vとなるので、3.3V入力に対して3.3V-2.5V=0.8Vのマージンがあります. これが3.3V出力のCMOS
LSIと、5V入力のCMOS LSIを直結してもちゃんと動作する理由です. 電源電圧を低電圧化する際に、2.7Vや3.0Vではなく3.3Vが主流となった理由でもあります.(2.7V/3.0Vではシリコンダオードの順方向電圧降下分ほどのマージンも確保できません)
- データシート上のVIH/VILの値は実はLSIの入力特性を規定したものではなく、他のスペックの測定条件・動作条件等を表したものに過ぎません. 特別な設計(ヒステリシス入力回路等)をしているのでも無い限り、データシートに明示されていなくても標準的なCMOSデバイスの入力電圧の閾値はVDD/2(VCC/2)となります.
- TC74HC00AのデータシートにはVIL=1.35V/VIH=3.15V(電源電圧4.5V)と記載されていますが、入力電圧がVIL/VIHの中間電位(1.35V〜3.15V)の場合に、出力電圧が不定になるとか動作が不安定になったりするわけではありません.
- シュミット入力のTC74HC14Aのデータシートには入力電圧VIH/VILではなく、しきい値電圧VP/VNが記載されています. このことからもTC74HC00Aの入力電圧VIH/VILは閾値を規定したものでは無いことが理解できます.
- 標準的なCMOSデバイスの動作が不安定となるのは、入力電圧がVTH=VDD/2(VCC/2)近辺に固定されている場合や、入力電圧がゆっくりとVTHを横切る場合です. このような状況は絶対に避けなければなりません.
- この問題はヒステリシス入力回路を用いて回避出来ます. ノイズ対策としてもヒステリシス入力回路は有効です.
ロジックLSIで回路を作る際に余ったゲートがあれば、ホールド回路を付け加えて入力にヒステリシス特性を持たせることが可能です.(PDF回路図)
この回路を改良してヒステリシス特性を制御する方法は自分で考えてみてください.
- 下図の構成では、前段の出力とホールド回路の出力が「衝突」するというデメリットがあるのですが、これも小改良で対処出来ます.
- 入力ホールド回路(ヒステリシス回路)改良のヒント(PDF)
- CMOSデバイスのことを良く知らない方のために、電源電圧に一定の係数を乗じた値がデータシートに記載されているVIL/VIHの意味を非常に単純化して説明すると次のようになります.(正確ではありませんが、デバイスのスペック保障・動作保障の考え方の説明として間違いはありません)
- ロジック回路設計でもっとも大切な伝播遅延時間(Tpd)は、入出力電圧がVIL/VIHの条件で規定され、製造工程でも同じ条件で製品の測定・選別がおこなわれています.
- したがって、データシートに記載されているVIL/VIHの値を満たさない動作条件では伝播遅延時間(Tpd)のスペックを保障することが出来ません
- データシートのVIL/VIHを満たさない条件でもCMOSデバイスはスイッチング動作するので、遅延計算など省略できるようなタイミング制約の緩い用途には使用出来るはずです. しかし、メーカーとしてはTpdのスペックを提示出来ない以上はデバイスとしての動作保障が出来ません.
- どうしてもデータシート上のVIL/VIHを満たさない条件で、伝播遅延時間Tpdを含めて仕様提示・動作保障をして欲しければ、メーカーに特殊選別の対応をしてもらうことは可能です.(ただし、よほどのお得意様の大口顧客でもない限り、費用を支払うと言っても門前払いされるはずです)
- メーカーに特殊選別をしてもらえないのであれば、自分で選別装置を作って自前でTpdの測定・選別をして、自己責任でメーカー保障外の動作条件で使用することは可能です.
- 誰も遅延計算をしようともしない(?)電子工作のレベルでは、Tpdの特殊選別をするまでもなく電源電圧3.3VのCMOSデバイスの出力を電源電圧5VのCMOSデバイスの入力に直結して使用しても問題はありません. それで問題のあるような回路設計・基板設計・配線であれば、高速の(スイッチング・ノイズを撒き散らす)レベル変換LSIを用いた時にはより大きな問題が生じるはずです.
LSIメーカーが知られたくないVIL/VIHの本当の話 |
- 標準的なCMOSデイバスの閾値電圧VTHは電源電圧の半分になります. 電源電圧が5VならばVTH=2.5Vです. CMOSデバイスは急峻なスイッチング特性を有しているので、マージンを見込んでもVIL/VIHは2.4V/2.6V程度の実力は十分にあります.(アナログ回路の知識をお持ちの方は、CMOSインバータLSIに帰還抵抗をつけてアナログ・アンプとして使用できることを思い出してください)
- LSIメーカーがCMOSデバイスの実力そのもののVIL/VIHスペックをデータシートに記載しない理由の一つは、一般的なロジック・デバイスではVIL/VIHの測定・選別をおこなっていないからです. 生産ラインで使っている汎用のロジックLSIテスターと量産用の治具ではそのような測定は(十分な精度では)出来ません. やろうと思えば出来ないことは無いのですが、テスト時間の増大(すなわち生産コスト上昇)を招くので、そんなテストはおこないません.
- 実力ぎりぎりの入力電圧でCMOSデバイスを使用することは常識的には有り得ないので、それでもユーザーにとって特に問題は無いのです.
- 5V系・3.3V系の相互接続には信号レベル変換LSIを用いるというのが当然の発想のように思われるかもしれませんが、電子工作のレベルではデメリットもあります. 変換LSIは、古いCMOS標準ロジック(74HCシリーズ等)よりも微細化された製造プロセスを用いています. 当然、74HCシリーズなどよりもはるかに高速で動作し、結果としてスイッチング・ノイズも大きくなります. そのため、クロック信号のエッジで信号を取り込むシリアル・インターフェース回路をソルダーレス・ブレッドボードを用いて組んだ場合などに、ノイズによる誤動作の問題が発生することがあります.
- 電子工作のレベルではマイクロプロセッサのI/Oポートの入出力信号程度の低速な信号しか扱わないのですから、高速の信号レベル変換LSIは性能過剰と言っても良いくらいです. 小規模な組込プロセッサをメインにした電子工作では出来れば信号レベル変換LSIのような「速すぎる」ロジックLSIは使いたくないのものです. プロセッサの低速のI/Oポートまわりの回路には「適度に遅い」74HCシリーズが一番手ごろです. ただし74HCは電源電圧3.3Vだと、本当に遅くて使えない場合があるのが残念です.
- わざわざ信号レベル変換LSIを買ってきて使うくらいならば、代わりにレベル変換用のバス・スイッチLSI(電源電圧3.3V、5V耐入力)を使用することをお勧めします.(例えば、SN74CB3T1G125, SN74CB3T3245 etc) 信号増幅をしないパッシブ動作のデバイスですからノイズ発生の問題はありません. 信号レベル変換LSIを搭載したDIPモジュールを販売しているパーツ・ショップでも、代わりにバス・スイッチ搭載のDIPモジュールを作ってもらいたいものです.
- バススイッチの入出力には方向性がありませんから、双方向の信号ラインでも特別な制御は不要です.
- 特別な理由が無い限り、3.3V→5V変換の際に5V側をプルアップする必要はありません.
本当に信号レベル変換LSIを使わなければならないのは |
- 本当に高速のレベル変換用LSIを使わなければならないのは、多層基板を使ってTpd(伝播遅延時間)の制約を考慮しつつ基板設計CADで等長配線をしなければならないような回路です.
- 電子工作レベルの回路と、高速の同期バス回路や平衡伝送の高速シリアルインターフェース回路などとをごっちゃに考えなければならない必然性はありません.
- このページに書いたことは誰でも知っているようで知らない、ネットで探せばすぐ見つかるようで見つからない情報の典型例といって良いでしょう.
- なぜネットで探しても見つからないかというと、電源電圧を5Vから低電圧化する際に何ボルトを標準とするかという議論があったのは、インターネットの一般解放以前だったからです. 結果として5Vの次の標準ロジックの電源電圧は3.3Vになり、議論の過程は忘れ去られて(ネット上には情報が蓄積されず)3.3Vという規格だけが残ったというわけです.
- なぜ2.7Vや3.0Vではなく3.3Vが主流になったのか詳しいことを知りたい方は、図書館で当時の技術雑誌(日経エレクトロニクス等)を探し出して、電源電圧移行に関する記事をご覧になることをお勧めします.
- バス・スイッチを用いた3.3V/5V変換も知っている人は知っているし、以前にトランジスタ技術の解説記事でも取り上げられたことがあるのですが、ネット上のホビイスト向けの情報は皆無です. インターネット上の情報の蓄積はその程度のものです.