インタビュアーは、反対のロジックも実装できる場合にSDAおよびSCLでプルアップ抵抗が使用される理由を知りたいと考えました。プルアップ抵抗の使用が選択された設計である理由の説明はありますか?
インタビュアーは、反対のロジックも実装できる場合にSDAおよびSCLでプルアップ抵抗が使用される理由を知りたいと考えました。プルアップ抵抗の使用が選択された設計である理由の説明はありますか?
回答:
ジョンの答えを少し拡張するには:
はい、どのMOSFETを使用するかは関係ありません。
NチャネルMOSFETは、以下の理由により、Pチャネルよりもスイッチングロジックに優れています。
したがって、オープンドレイン構成(I2Cの場合)では、PチャネルMOSFETの「アイドルロー」ではなく、NチャネルMOSFETの「アイドルハイ」構成を使用して作成する方がはるかに安価で簡単です。
3番目のオプションは、NチャネルMOSFETを使用した「アイドルロー」ですが、そのためには、MOSFETがオンになるためにソース電圧よりも十分にゲート電圧を上げるために高電圧ゲートドライバが必要です。小型の通信バスには実用的ではありませんが、この配置は、Hブリッジのハイサイドとローサイド間で同じ(または同様の)応答を得たいモーター駆動用のHブリッジで実際に非常に一般的に使用されます。HブリッジでPチャネルとNチャネルのペアを使用すると、通常、PチャネルのオフとNチャネルのオンの間にデッドゾーンを組み込む必要があります。時間がかかるため、電力効率が低下します。 。
しかし、高速、低コスト、および使いやすさを必要とするI2Cのような小さな通信バスの場合、NチャネルMOSFETとプルアップ抵抗を備えた「アイドルハイ」が最も費用効果が高くなります。
パッシブプルアップ/アクティブプルダウンのもう1つの利点は、さまざまな電源電圧で動作できることです。デジタルの高レベルと低レベルは、IICで明示的に指定されることに注意してください。これらのレベルは、3.3 Vのプルアップで動作するのに十分低いです。したがって、5 Vと3.3 Vの両方の電源で動作するデバイスを構築できます。実際、IICバスラインは3.3 Vにプルアップでき、これは異なる電圧で個別に給電されるバス上のデバイスの組み合わせで機能します。
NMOSには速度/面積の点でPMOSを上回る利点がありますが、1つまたは2つのピンのドライバについて話している場合、この違いはごくわずかです。結局、ほとんどの出力ドライバーは実際にはNMOSとPMOSの両方を必要とするトーテムポール型であるため、プルダウン構成またはプルアップ構成のどちらを選択したとしても、トーテムより小さい出力ドライバーになってしまうでしょう。ポールドライバー。
ただし、I2Cに直接適用されないNMOSオープンドレインよりもNMOSオープンドレイン出力の利点が1つあります。VCCが正の場合、NMOSオープンドレインにより、異なるVCCレベルのチップを相互に接続できます。これが、多数のNMOSオープンドレインディスクリートロジックICが利用可能な理由の一部です。
一方、市場で入手可能なPMOSオープンドレインチップについては知りません。実際、どのチップでもPMOSオープンドレイン出力に遭遇したことはないと思います。(私はECLを何度も使用しましたが、これは、PMOSオープンドレインと同様の動作をするNPNオープンエミッター出力を備えています)
NMOSオープンドレインディスクリートロジックチップを利用できるため、NMOSオープンドレインは、PMOSオープンドレインよりも電子設計者にとってはるかに馴染みのあるものになります。
ディスクリートチップの親しみやすさと入手可能性(たとえば、プロトタイピング用)の両方が、I2Cの設計者がNMOSオープンドレイン構成を選択することに影響を与えた可能性があります。
答えは、そもそもネガティブグラウンドの慣習を使用している理由に戻っていると思います(そして、これは半導体時代以前にはほとんど確実に遍在していませんでした)。この理由は、使用される多数キャリアのタイプの物理特性により、NチャネルデバイスのパフォーマンスがPチャネルデバイスよりも優れているためです。
集積回路の初期の頃、これは非常に重大な制限であったため、可能な限り最高のパフォーマンスを実現するためにNチャネル(またはNPN)トランジスタを使用することが好まれました。これから、負の接地システムとオープンコレクター出力が得られたため、プルダウンではなくプルアップ抵抗を使用する必要がありました。
もちろん、I2Cバスはほとんど高速ではないため、プルダウン抵抗を使用して実装できない理由はありませんが、利点もありません。そのため、慣例に従い、プルアップを使用します。
ここにいくつかの(歴史的に根拠のある)推測があります...
プッシュプルではなくプルアップを使用すると、明らかに過剰な電流が流れることなく複数のデバイスがバスと競合する可能性があります(良いことですが、プルダウンで同じことを実現できます)。
「昔の」バイポーラトランジスタでは、最も単純なTTLロジックはNPNトランジスタを備えたオープンコレクタを使用していました。すべてがグランドを基準としているため、バス電圧に関係なくトリガレベルを簡単に定義できます。また、NPNはPNPよりも高速でした。
独自の電源電圧で動作する複数のデバイスがあり、その電源電圧が一定でない場合、プルダウンではなくプルアップが不可欠になります。複数のデバイスがバスをそれぞれの電源レールに引き込もうとした場合、電流の流れは制限されず、何かが飛び上がる可能性があります。少なくとも彼らは地面の価値に同意するので、この問題は発生しません。
CMOSを使用すると、ストーリーが変わります。トリガーレベルは中間レールになりました。しかし、EEは伝統的な束になる可能性があります。確かに、初期のトランジスタ時代から、私は上記の理由からプルアップの選択に疑問を呈することさえありませんでした。
私が言ったように、これは単なる推測です。
これは歴史的なことかもしれません。
古いトランジスタと集積回路は、0 Vよりも5 Vのほうが実際に消費する電力は少なくなりました。2つのレベルには大きな違いがあるため、設計者は「アイドル」状態を5 Vにすることを選択しました。その後、時間が経つにつれてトランジスタとICが改善され、両方の状態でほぼ同じ量の電力が消費されるようになりましたが、規格を変更する本当の理由はありませんでした。
今、あなたはこのような多くのものを見る-アイドルが5 Vである-標準が変わらなかったという理由だけで。
I2Cは、接続されているすべてのユニットがオープンドレインまたはオープンコレクタである必要があるバスとして定義されているためだと思います。これは、バスをハイではなくローにしか駆動できないことを意味します。(出力駆動トランジスタがオフになると、ピンは高インピーダンス状態になります。)
このスキームには、さまざまな信号電圧のデバイスを接続できること、バスが通信エラーから自己回復することなど、いくつかの素晴らしい利点があります。
明らかに、この標準は、アイドル低/アクティブ高構成として逆に定義されている可能性があり、ここでの他の答えはその要素についてかなりよく触れています。
出典:LabWorX 1、I2Cバスの習得、Vincent Himpe著。I2Cについての非常に優れた本であり、歴史的背景、ハードウェアでの実装方法、ソフトウェアでの使用方法およびデバッグ実装です。
まだ誰も適切に触れていない本当の答えは、(I / Oピンが許容される限り)異なる電圧で駆動するデバイスを接続できるということです。たとえば、1.8VデバイスのIOが最大3.3の電圧を許容している限り、3.3Vデバイスは1.8Vの電源がオフになっているデバイスと通信できます。もちろん、すべてのデバイスが0Vを駆動できますが、すべてのデバイスがプルアップ抵抗の電圧まで駆動できるとは限りません。
さらに、ほとんどのICはソースよりも多くの電流をシンクできます。これは熱放散のためです。したがって、プルアップからの電流のシンク(駆動グランド)は、プルダウンへの電流のソース(高電圧の駆動)よりもデバイスにとって簡単です。