ノイズの多い大規模なI2Cシステムの設計をバス・バッファで簡略化

I2Cバスとそれから派生したSMBus、PMBus、HDMI のDDCバス、ATCAのIPMBバスなどは、さまざまな大規模システムで重要なシステム情報を伝送するために使用されます。これらのバス仕様は、使いやすいという理由から幅広く支持されています。I2Cバスは、1本のクロック(SCL)線と1本のデータ(SDA)線で構成されている2線式のデジタル・シリアル・バスです。I2Cプロトコルは、オープンドレインのプルダウン回路を使用してバスを“L” にし、抵抗または電流源を使用してバスを“H” にします。許容される最大のプルアップ電流およびバス容量は、それぞれ4mAおよび400pFです。

当初のI2C規格では、バスの最大動作周波数が100kHz に制限されていましたが、現在は400kHz になっています。システムが大規模化するのに伴って、増大するバスの負荷を十分に駆動し、I2Cに関するその他の共通的な問題を解決するために、バス・バッファが導入されました。初期のバス・バッファは、I2C規格が定める電圧範囲を逸脱するものがあり、ノイズの多い大規模なシステムで安心して使用することはできませんでした。バス・バッファのファミリであるLTC4313およびLTC4315 は、従来のバス・バッファの利点を生かしながら、すべてのI2C電圧規格を満たしています。このため、このバス・バッファ・ファミリは、ノイズの多い大規模なシステムで幅広く採用されています。

バスのロジック“H” 電圧およびロジック“L” 電圧に関するI2C規格の要件を図1に示します。I2Cに準拠するためには、駆動されるロジック“L” の信号は出力“L” レベル(VOL)である0.4Vより低くなる必要があります。ロジック“H” 信号は、バスの電圧が出力“H”レベル(VOH)である0.9×VCC(VCCはバスの電源電圧)より高くなることが必要です。I2C準拠のレシーバは、0.3×VCCという入力“L” レベル(VIL)より低い電圧をロジック“L” と解釈し、0.7×VCCという入力“H” レベル(VIH)より高い電圧をロジック“H”と解釈する必要があります。これらの要件により、ロジック“L” のノイズ・マージンとして0.3×VCC – 0.4Vが、ロジック“H” のノイズ・マージンとして0.2×VCCが得られます。

図1.I2Cバスの電圧規格と結果として得られるノイズ・マージン

図1.I2Cバスの電圧規格と結果として得られるノイズ・マージン

時と共にシステムが大規模化すると、バス容量が増加して400pFをはるかに超えるようになりました。バス・バッファは大規模なI2Cバスを小さな部分に分割して、部分ごと分けられた容量を駆動する目的で導入されました。

バス容量の増加に加えて動作周波数が高くなると、信号の立ち上がり時間の削減も要求されます。バス・バッファには立ち上がり時間アクセラレータ(RTA)が組み込まれています。RTAは、立ち上がりの遷移時に強力なプルアップ電流をバスに供給することによってバスの立ち上がり時間を短くします。

さらに、リニアテクノロジーが提供しているバス・バッファ製品では、SDA、SCLホットスワップ、プリチャージ、スタック状態バスの復旧のようないくつかの追加機能も組み込むことにより、I2Cシステムの堅牢性をあげ、異なった電圧のシステムの間のレベルシフト通信を簡単に行うことを可能にしています。

双方向のI2CバスにバッファとRTAを挿入することで生じる難しい問題は、I2C規格から逸脱してしまうことです。これには次の3つの理由があります。

  • 第1に、バッファには、外部から駆動されるロジック“L” と自分が駆動するロジック“L” を区別する仕組みが必要です。これは、バスが“L”状態に固定されないようにするためです。結果として、一部のバッファは自分ではI2C規格の0.4Vよりも高いVOLを出力する一方で、バスにつながる他のデバイスには0.4Vより低い電圧を出力することを要求するものがあります。他のバッファの中には、入力VOLより少しだけ高い電圧を出力VOLとして設定しているものもあります。
  • 第2に、RTAの動作範囲を最大限に広げるため、リニアテクノロジーのバス・バッファはI2Cの規格で定められたVOLより少しだけ高い電圧で、プルダウンをオフにして、RTAをオンします。
  • 第3に、すべてのバッファは動作時にバスの容量性負荷になるので、バスの立ち上がり時間を短くするためにできるだけ低い電圧でオフにする必要があります。

その結果、既存のバス・バッファのほとんどは、バスの電圧が0.6Vより低い場合にのみロジック“L” を検出します。ほとんどのバッファはRTAを0.8Vでオンにします。一部のバッファは、I2Cの規格である0.4Vより高い電圧でVOLを駆動します。こうしたことから、ロジック“L”のノイズ・マージンは(0.3×VCC – 0.4V)から0.2Vかそれ以下に減少し、バッファが動作しているときはバッファの容量性負荷によってバスの立ち上がりエッジが低速になります。

システムの規模が拡大するにつれて、既存のバッファのロジック“L” のノイズ・マージンが狭くなり、バスがノイズの影響を受けやすくなりました。通常、大規模なシステムは、ロジック“L”のノイズ・マージンをI2C規格内に復元するバス・バッファが必要です。つまり、バスの電圧がVILの値(0.3×VCC)を切るまでアクティブでバスの負荷にならない高速バッファが必要です。

大規模システムでのその他の要件は、0.3×VCCより低い電圧でRTAがオンになるバッファ製品または0.6Vという非準拠のVOL を駆動するバッファ製品との互換性です。調整可能なRTA電流も便利です。特に、複数のRTAを同時に作動できる大規模システムで好都合です。RTA電流が大きすぎると、エッジが急峻になり、誘導性のリンギングやEMI のような望ましくない副作用をもたらす可能性が高まります。

LTC4315(12ピン)およびLTC4313(8ピン)は、これらの問題を具体的に解決すると同時に、リニアテクノロジーの他のバス・バッファ製品が持つ有用な機能を備えています。表1にこれらの製品の主要な機能を示します。この記事ではLTC4315について言及していますが、特にことわりのない限り、すべての内容はLTC4313にも同様に当てはまります。LTC4315 の最小VIL は0.3・VCCという高い値が保証されており、ロジック“L” のノイズ・マージンを広く確保しています。LTC4315は、0.4Vより高いVOLを駆動するデバイスや0.3・VCCより低い電圧でRTAを起動する製品と相互に利用可能です。LTC4315では、バスの立ち上がり速度を制御するためにRTAの電流レベルをユーザが選択できます。LTC4315は、容量のバッファリング、ホットスワップ、プリチャージ、スタック状態バスの復旧、レベル変換という、リニアテクノロジーの他のバス・バッファが備えている機能を備えています。LTC4315のバッファはバスに対する負荷を増やさないので、LTC4315は最大1MHzで動作可能であり、I2Cの標準モードと高速モード、SMBus、PMBus の各規格と互換性があります。要約すると、LTC4315は既存のバッファの利点をすべて備えており、I2C規格を順守しています。

表1.LTC4313およびLTC4315の機能および利点
機能 利点
I2Cバッファ • バス容量の分散。これにより、各セクションの容量を400pF未満に保つことで大規模なI2C準拠システムを構築できる
高いVIL • ロジック“L” のノイズ・マージンが最大0.3 • VCCと広い
• I2Cに準拠していないデバイスと連携して動作
バッファの自動ターンオフ電圧の調整 • RTAターンオン電圧が0.3 • VCCより低いデバイスと互換
• 他のLTCバッファと相互に利用可能
レベル変換 • 電圧範囲が1.4V~5.5Vのバス間のI2C通信を実現
立ち上がり時間アクセラレータ(RTA) • 立ち上がり時間の短縮
• バスのプルアップ抵抗を大きくしてロジック“L” のノイズ・マージンを広くすることが可能
• RTAプルアップ電流強度を選択可能
スタック状態バスの切断および復旧 • マスタの解放による上流の通信の再開
• スタック状態のバスで最大16個のクロック・パルスとストップ・ビットを生成することによりバスを“H” に解放
立ち下がり時間の制御 • システムでの伝送線の影響を最小化
活線挿抜 • 接続の確立までバスのアイドル状態またはストップ・ビットを待機
• バスのプリチャージによる外乱の最小化

大規模システムでの容量性バッファリングおよびノイズ除去

大規模なI2Cシステムでは、長いPCB配線や長いケーブルを持つ大型のバックプレーンの組み合わせにより、大きなバス容量が生じます。図2に示すように、ノイズ・マージンの大きいLTC4315のバッファは、信号の品質や動作周波数を低下させることなく、これらの容量性負荷を駆動できます。

図2.大規模システム内にあるバックプレーンの寄生容量を駆動するLTC4315。簡単にするため、SCLの経路だけを示しています。

図2.大規模システム内にあるバックプレーンの寄生容量を駆動するLTC4315。簡単にするため、SCLの経路だけを示しています。

図2 のような大規模なI2Cシステムのもう1 つの問題は、ノイズの影響を受けやすいことです。ケーブル内やPCB配線間でノイズと信号が結合すると、入力および出力のクロック信号およびデータ信号が乱されることによってシステム・レベルの障害を引き起こす可能性があります。極端にノイズの多いSCL波形の例を図3に示し、LTC4315 が備えている堅牢なノイズ除去機能を説明します。

図3.ノイズの多い400kHzのI2C信号がSCLINに入力されているときでも、LTC4315はノイズのないロジック“H”をSCLOUTで送信。

図3.ノイズの多い400kHzのI2C信号がSCLINに入力されているときでも、LTC4315はノイズのないロジック“H”をSCLOUTで送信。

図3では、LTC4315の入力として、400kHzの矩形波に正弦波のノイズが重畳された波形を与えた場合に、LTC4315がそれを処理する様子を示しています。ロジック“H” の状態に印加されたノイズは、バスの電圧が0.33・VMINより低くならない限り、反対側には伝搬しません。SCLOUTのロジック“H” 状態は、SCLINのノイズに影響されません。LTC4315では、ロジック“H” のノイズ・マージンはVOH – 0.33・VMINです。VMINは、VCCとVCC2 の低い方の電圧を表します。LTC4313のすべてのバージョンでは、VMINのデフォルト値はVCCです。

図3では、SCLINの電圧が0.33・VMINより低くなると、SCLOUTの電圧がSCLINの電圧に追従します。入力電圧がVILレベルである0.33・VMINを超えても出力にグリッチは発生しません。バスの電圧が最悪の直流VOLである0.4Vと仮定すると、LTC4315のロジック“L”のノイズ・マージンは、0.33・VMIN – 0.4V=1.25Vです。これらのノイズ抑圧機能により、LTC4315は、ノイズの多い大規模I2Cシステムにおける堅実な選択肢となります。理想的には、ノイズの多い大規模I2Cシステムのシステム設計者は、LTC4315をすべての基板に使用して最大限のノイズ耐性を確保することが望まれます。

非準拠のI2Cデバイスとの連携動作

非準拠のVOL(この場合には0.6V)を駆動するデバイスとのLTC4315の互換性を図4に示します。LTC4315 は0.6Vをマイクロプロセッサに渡しますが、ここでは0.6Vがロジック“L”と解釈されます。LTC4315のバッファがオフになる電圧が高い(この回路では1.089V)ので、ロジック“L”のノイズ・マージンは489mVになります。

図4.非準拠のI2Cデバイスと通信するLTC4315

図4.非準拠のI2Cデバイスと通信するLTC4315

リニアテクノロジーの他のバッファとの相互利用性

大規模システムでは、リニアテクノロジーの従来のバッファがLTC4315と同じバスに存在することがあります。これらのバッファは、LTC4315のバッファがオフする電圧である0.3・VCCより低い電圧で起動するRTAを内蔵していることがあります。こうした環境でも、システムはグリッチなどの問題を起こすことなく動作することが重要です。LTC4315は、0.3・VCCより低いバス電圧で他のデバイスからのRTA電流を検出すると、自らのバッファをオフにすることにより、他のRTAとの競合を回避し、スムーズで連係した動作を行うことができます。

バックプレーンへのカードの装着または取り外しにより動的に変化するシステムでのLTC4315の動作を図5に示します。説明を簡単にするため、3.3Vの単電源を選択し、SCLの経路のみを示します。カード上のI2Cデバイスをバックプレーンの大容量から防護し、カード容量を互いに分離して、活線挿抜を支援するため、カードの端にはバッファが取り付けられています。ここに示すアプリケーションのカードの端には、バッファとしてLTC4300AまたはLTC4307 が取り付けられています。これらの製品のRTAは、それぞれ0.6Vおよび0.8Vで起動しますが、LTC4315のバッファがオフするのは0.3・VCC(約1V)です。

図5.カスケード接続アプリケーションで複数のLTC4300AおよびLTC4307と連携して動作するLTC4315

図5.カスケード接続アプリケーションで複数のLTC4300AおよびLTC4307と連携して動作するLTC4315

図6~9は、このシステムでのバックプレーンとカードのSCL波形を、構成の変更に応じて追跡したものです。図6に示すのは、図5に示すシステム構成でのSCL波形です。ここでは、3つのLTC4300Aと1 つのLTC4307 が1 つのLTC4315と連携して動作しています。図7では、LTC4307 が取り外され、3 つのLTC4300Aと1 つのLTC4315 が残った状態です。図8では、さらにLTC4300Aが2 つ取り外され、LTC4315とLTC4300Aが1 つずつ残った状態です。最後に図9では、LTC4307 が再接続され、LTC4307、LTC4300A、LTC4315 がそれぞれ1つずつでシステムを構成します。LTC4300AおよびLTC4307 のRTA 電流が変化するのに応じてLTC4315のバッファがオフになる電圧が自動的に調整されるので、SCL波形は一連のカード着脱の間、グリッチを発生せず、正常な状態を維持します。

図6.3つのLTC4300Aと1つのLTC4307と連携して動作する1つのLTC4315のSCL波形

図6.3つのLTC4300Aと1つのLTC4307と連携して動作する1つのLTC4315のSCL波形

図7.3つのLTC4300Aと連携して動作する1つのLTC4315のSCL波形

図7.3つのLTC4300Aと連携して動作する1つのLTC4315のSCL波形

図8.1つのLTC4300Aと連携して動作する1つのLTC4315のSCL波形

図8.1つのLTC4300Aと連携して動作する1つのLTC4315のSCL波形

図9.1つのLTC4300Aと1つのLTC4307と連携して動作する1つのLTC4315のSCL波形

図9.1つのLTC4300Aと1つのLTC4307と連携して動作する1つのLTC4315のSCL波形

図6 ~ 9 では、ある程度複雑なシステムでLTC4300AおよびLTC4307とのさまざまな組み合わせを試すことにより、LTC4315の連係動作を説明しています。原則としてLTC4315は、その数や組み合わせに関係なく、リニアテクノロジーの従来のバッファと相互に利用可能です。しかしながら、互いに影響する可能性があるバッファの数と種類が変わり得ることを考えると、すべての組み合わせでテストすることは不可能なので、すべての環境で保証することはできません。大規模システムで相互利用性を確保するためのカード容量、バスのプルアップ抵抗、およびバッファの組み合わせに関する有益な指針は、LTC4315のデータシートに記載されています。

ホットスワップと容量のバッファリング

端にLTC4315が取り付けられたI/Oカードは、図10 に示すように通電状態のバックプレーンに活線挿抜することができます。対応する波形を図11に示します。バックプレーン端での通信が活線挿入時に中断されることはありません。LTC4315は入力容量が小さいので、バックプレーンに接続したときの外乱は最小限にとどまるからです。さらに、LTC4315はクロック線およびデータ線を1Vにプリチャージしてからバックプレーンに接触するので、バックプレーン・バスでの電圧ステップが最小限に抑えられます。LTC4315は、不完全なメッセージがバッファを越えて送信されないように、バッファをイネーブルするストップ・ビットまたはバスのアイドル状態を待ち受けます。通電中のバックプレーンに活線挿入するときは、時差接触コネクタを使用してください。GNDへのプルダウン抵抗を接続したENABLEピンの配線をカード上で最も短く、VCCピンとGNDピンの配線を最も長く、SCLピンとSDAピンの配線を中間の長さにします。こうすることにより、デバイスに電力が供給され、SDAピンとSCLピンは、1Vにプリチャージされてからバックプレーンに接続されるようになります。この時間中、ENABLEピンを“L” に保持することにより、LTC4315が作動する前に、ストップ・ビットとバスのアイドル回路が正常に動作するようになり、カードの挿入に伴う過渡状態の遷移を安定に行うことができます。

図10.コネクタのピンの長さが異なるI2Cホットスワップ・アプリケーションでのLTC4315

図10.コネクタのピンの長さが異なるI2Cホットスワップ・アプリケーションでのLTC4315

図11.時差接触コネクタを使用して、通電中のバックプレーンにLTC4315を活線挿入したときの波形

図11.時差接触コネクタを使用して、通電中のバックプレーンにLTC4315を活線挿入したときの波形

時差接触コネクタを使用してLTC4315を通電状態のバックプレーンに活線挿入したときの波形を図11 に示します。VCCおよびVCC2 は最も配線の長いピンなので、すでにバックプレーンに接触しており、LTC4315および出力バスに電力を供給しています。このとき、SDAINピンおよびSCLINピンはLTC4315 によって1Vにプリチャージされます。SDAINピンおよびSCLINピンは、バックプレーンに接触するとバックプレーンの回路によって駆動されます。入力のストップ・ビットは、ENABLEピンが“L” なのでLTC4315によって無視されます。LTC4315の出力は、ENABLEが“H” にアサートされた後に入力でストップ・ビットが検出されるまで、“H” のアイドル状態になり、安定状態になります(SCLOUTの波形は示していません)。LTC4315のバッファはこの時点でオンになり、入力と出力の間の接続を確立します。不完全なメッセージがLTC4315を越えて伝搬されることはありません。時差接触コネクタを使用しない場合は、通電状態のシステムにカードを挿入したときに生じるトランジェントがすべて消滅するまでENABLEピンは“L” に保持するようにしてください。

LTC4315を搭載したカード上の回路が駆動しなければならないのは、LTC4315の10pF 未満の入力容量だけです。LTC4315は、バックプレーンに装着されたすべてのカードとバックプレーンからなる大きな合成容量を駆動します。LTC4315のSDAピンおよびSCLピンは、最大1.2nFまでの容量性負荷を駆動できます。この容量バッファリング機能とRTAを組み合わせることにより、大規模システムでの400kHz 動作が可能になります。

立ち上がり時間アクセラレータ

LTC4315のRTAは、電流源モード(ACCピンを開放)、スルー制限スイッチ・モード(ACCピンを接地)、またはディスエーブル状態(ACCピンを“H”)のいずれかに設定できます。電流源モードでは、RTAが2.5mAの一定電流をバスに供給します。スルー制御スイッチ・モードでは、RTAは制御された方法でオンし、バスに電流を供給して40V/μs の標準速度でバスを立ち上げます。出力のRTAだけを選択的にディスエーブルするには、VCC2を接地し、さらにACCを接地するか、ACCを開放状態にしてください。LTC4313には、3つの異なるRTAのバージョンがあります。LTC4313-1のRTAは、スルー制御スイッチであり、LTC4313-2 のRTAは2.5mAの電流源で、LTC4313-3にはRTAがありません。

レベル変換

図12に示す回路は、LTC4315のレベル変換機能を図示しています。LTC4315の電源の動作範囲は、VCC が2.9V~ 5.5Vで、VCC2 が2.25V~5.5Vです。入力バスをVCCに、出力バスをVCC2 に接続すると、2.9V~ 5.5Vの入力と2.25V~5.5Vの出力の間でレベル変換を実行できます。

図12.レベル変換アプリケーションでのLTC4315.

図12.レベル変換アプリケーションでのLTC4315.

図12に示す例では、3.3Vの入力が5Vの出力に変換されます。許容される最小のVCCおよびVCC2 の値より低い電圧へのレベル変換には、別の制約が加わります。2.25Vより低い出力電圧へのレベル変換では、VCC2をロジック“L” に接続して出力のRTAをディスエーブルすることが必要です。2.9Vより低い入力電圧へのレベル変換では、すべてのRTAをディスエーブルすることが必要です。このためには、ACCをロジック“H” に接続する(LTC4315を使用する場合)か、LTC4313-3を使用します。こうすることで、RTAによる入力バスのオーバードライブを防止します。こうした状態では、1.4Vのバス電圧にレベルを変換できます。いずれの場合もバッファがオフする電圧は0.3×VCCであり、ロジック“L”のノイズ・マージンが広く維持されています。

スタック状態バスの検出および復旧

時には、スレーブ・デバイスが混乱して、“L” 状態でスタック(固定)状態になることがあります。LTC4315は出力のI2Cバスをモニタして、クロックとデータが45ms 以内に1 回以上同時に“H”になっていなかったかを調べます。この状態が検出されなかった場合、LTC4315 はFAULTフラグを“L” にアサートします。

DISCENを“H” に接続すると、LTC4315は入力側と出力側も切断して、スタック状態のバスを解放しようとするときにSCLOUTでクロック・パルスを発生します。データが開放されて“H” になるか16個目のクロック・パルスが発生すると、クロックの発生は停止します。最後のクロック・パルス発生後、ストップ・ビットが生成されてバスをリセットし、その後の通信に備えます。スタック状態のバスが解放されて“H”になった場合は、ストップ・ビットまたはバスのアイドル状態が両方のバスで検出されると接続が再確立されます。ユーザが介入する必要はありません。

SDAOUTが“L” に固定されている間の波形と、DISCENが“H” に接続されて復旧したときの波形を図13に示します。図13では、45ms のタイムアウト期間後にFAULTフラグが“L” にアサートされており、入力側と出力側が切断されています。これにより、SDAINは解放されて“H” になります。SCLOUTにクロック・パルスが発生します。SDAOUTは16 個のクロック・パルスが発生する前に解放されて“H” になります。クロック・パルスの発生が停止してストップ・ビットが生成されます。SDAOUTが復旧してストップ・ビットが検出されると、接続が再確立されて入力から出力へ信号が伝搬します。SDAOUTが“L” にとどまると、ENABLEがいったん“L” に切り替わってから“H” に切り替わることにより、入出力間が強制的に接続されます。

図13.SDAOUTが“L”に固定されているときと復旧したときのバスの波形

スタック状態のバスを自動的に切断しない場合は、DISCENを“L” に接続することにより、LTC4315ではこの機能をディスエーブルすることができます。この場合には、バスがスタック状態の間、FAULTフラグが“L” にアサートされますが、ストップ・ビットの生成やクロックの発生が行われて、入力側と出力側は接続状態が維持されます。LTC4313では、スタック状態バスの切断および出力クロック・パルスの発生をディスエーブルすることはできません。

まとめ

LTC4315およびLTC4313 は、大規模なI2Cシステムに伴ういくつかの問題を解決する、ノイズ・マージンの大きいバス・バッファです。これらのデバイスは、容量のバッファリング、範囲が1.4V~ 5.5Vのバス電源のレベル変換、最大0.3・VCCの広いロジック“L”ノイズ・マージンを実現し、バスがロジック“H” の場合、0.3・VCCを超えるノイズを除去します。帯域幅の広いバッファと内蔵のRTAにより、最大1MHzの周波数で動作可能です。これらのバッファは、最大1.2nFの寄生容量を持つ非準拠バスを駆動できます。また、スタック状態のバスを切り離し、通電中のシステムにI/Oカードを活線挿抜できます。これらのバッファは、高いVOLを駆動し、低い電圧でRTAがオンする従来型のバッファが組み込まれた非準拠のI2Cデバイスと相互に利用可能です。LTC4315およびLTC4313は、大規模なI2Cバス・システムに伴う実用上の設計問題を軽減します。


Generic_Author_image

Rajesh Venugopal