銅線を介したデータ伝送速度について


11

センサーをArduinoに接続するさまざまな方法を研究してきましたが、i2cは一般的な方法のようです。データレートが400または100kbpsの短距離(最大で数メートル)でのみ信頼性があると読みました。このプロトコルの制限が、ギガビットイーサネットなど、銅を介した他のデータ送信と比較して非常に低い理由を理解するのに苦労しています。静電容量、電圧降下、抵抗などの理由がありますが、cat5 / 6上のイーサネットは同じ問題の対象ではありませんか?基本的に、これらの異なる方法論を比較するとき、銅線に電圧をパルスしても、より一貫した結果(帯域幅、距離)が得られない理由を知りたいと思います。


規定された制限のある多くの主要なプロトコルがありますが、これらはしばしば無視されます。イーサネットは、リピーターなしで30フィートまでしか信頼できません。USBは10フィート未満です。だからといって、人々が限界を押し広げないわけではありません。これらは、データの必要性の速さと信頼性、およびcrcチェックのデータオーバーヘッドに余裕があるかどうかに基づいた実装上の決定です。
mreff555

I2Cはこのように使用することを意図していませんが、100m以上でも使用できることは間違いありません。(イーサネットと同じ理論上の最大距離を持ちます)。ただし、ボーレートが非常に低いか、プルアップ電流がばかげています。
オピフェックス

@Opifex滑dicなスピード!
DKNguyen

1
これは答えではなく、おそらく私は明白なことを述べていますが、I2C(または他のプロトコル)の限界は、本質的にはワイヤーの素材プロトコルによるものです。あなたの質問の核心は、「方法Xが銅の上にAを取得したら、YとZも私にAを取得するべきではないのですか?」それは本質的に真実ではありません。
dwizum

6
30フィートというのは、328m / 100m @ mreff555のことですか?それは、ツイストペアイーサネットの仕様です。古い同軸イーサネットはさらに長くなりました(10base2で200m、10base5で500m)。
マークブース

回答:


14

シャノンの定理は、ケーブルの情報帯域幅の究極の制限を設定します。これに関する詳細情報は次のとおりです。https//www.gaussianwaves.com/2008/04/channel-capacity/

tl; drバージョン:シャノン-ハートレー方程式:

  • C=Blog21+SN1

ここで、BはHz単位の帯域幅、SNは信号対雑音比です。

I2Cは、明らかにケーブルのシャノンの限界に近いものではありません。代わりに、オープンコレクターバスを使用した意図的に遅いタイミング(100/400 kbit / s)を備えた軽量プロトコルであり、小規模なI / Oと制御のニーズを持つ小さなデバイスのネットワークに簡単に実装できます。I2Cで指定された低速動作により、ほとんどのシグナルインテグリティの問題が回避されます。

1 Mbitおよび3.2 Mbit / sレートを使用するI2Cのより高速なバリアントがあります。これらは、通常のI2Cよりもレイアウトと終端に注意を払う必要があり、もちろんより厳しい、より厳しいタイミングを持っています。

フードチェーンのシャノンに関しては、Gbitイーサネットはスループットを達成するために複数の技術を使用しています。

  • 差動シグナリング
  • 複数のペア(4)
  • PAM-5と呼ばれるマルチレベルシグナリング
  • プリエンファシス/デエンファシス
  • 適応等化

これらの技術は、ケーブルと通信するための高速で大きな混合信号ADC / DACブロックと、それを管理するためのかなり重い信号処理を含む、多くのシリコンを必要とします。これに加えて、はるかに複雑なソフトウェアスタックがそれを駆動します。これにより、イーサネットがオンチップブロックとして、ローエンドマイクロコントローラー(一部は外部PHYを代わりに使用することを選択するもの)にとって少し多くなります。ただし、成熟度が高いため、より大きなSystems-on-Chipの範囲内に収まります。

とにかく、シャノンの限界にどれくらい近づいていますか?詳細はこちら:https : //pdfs.semanticscholar.org/482f/5afbf88a06d192f7cb052f543625c4b66290.pdf


ああ、ブードゥー教:プリエンファシスとディエンファシスがあります。イーサネットは、方形波や正弦波を送信するだけでなく、宛先に到達するまでにあまり歪まないように祈っています。アナログ波形を整形し、ラインに送信します。
DKNguyen

3
@DKNguyen 100メガビット以上の高速イーサネット用の本当のブードゥーは受信機にあります。適応イコライゼーションアルゴリズムが使用され、最近ではデジタルで実装されることがよくあります。受信した信号はADCに供給され、その後にDSPハードウェア(すべて0.50ドルのPHYデバイス内)が続きます。より最近の高速プロトコルの技術は再び大幅に洗練されています。
scary_jeff

適応eqに関するThx @scary_jeff。リマインダー。私の答えに追加しました。
ハッカスティカル

6

伝送には、銅線ケーブル以上のものがあります。イーサネットの背後にあるハードウェアを見ましたか?おそらくそうではありません。なぜなら、ガットは常にICに隠されているため、実際に行われていることのベースレベルの回路を見つけるのは非常に難しいからです。私がこれまでに見つけた最も近いものは、イーサネットに必要な磁気であり、明らかにオプションではありません。これは、イーサネットハードウェアで物理的に何が起こっているかのヒントにすぎません。

このように考えてください:空気は媒体です。犬が互いに話すときに伝達できる情報の種類が、人間が互いに話すときよりもはるかに少ないのはなぜですか?なぜ空気を介していくつかの圧力波を送信すると、これらの2種類の動物間のコミュニケーションでより一貫した結果が得られないのですか

I2C(および他の多くのプロトコル)の制限要因の一部は次のとおりです。

  1. オープンコレクタードライブ
  2. インピーダンス整合なし
  3. バランス伝送なし
  4. エラーチェックなし
  5. シンプルなエンコード方式
  6. 比較的高い電圧レベル(電圧ステップをそれほど大きくする必要がない場合は、dV / dTを高速にするために高くする必要がないため、より高速に送信できます)
  7. 孤立なし
  8. ユニポーラ電圧(イーサネットは+/- 2.5Vで送信され、おそらく何らかの形で役立ちます)
  9. スレーブの送信はマスターによってクロックされるため、基本的にクロックはデータ信号よりも速く往復する必要があります

これらはすべて物事をシンプルにするのに適しています。高データレートまたは長距離伝送にはあまり適していません。

おそらく、私が知らないハードウェアで進行している他のブードゥー教もあります。


6

いくつかの簡単な経験則:地面のようなものはありません。すべてのワイヤはアンテナです。すべてのワイヤは伝送線です。常にノイズがあります。

信号の立ち上がり時間に比べてワイヤが短い場合、伝送ラインのインピーダンスの不整合と反射を無視できます(複雑な終端とパルス整形を必要とするイーサネットとは異なります)。ワイヤが長い場合、ワイヤの誘導電圧とグランド差動により、遠端のデジタル信号レベルが不確定または不正確になる可能性が高くなります。しかし、イーサネットはツイストペア差動信号方式を使用しており、誘導ノイズとグラウンド基準の問題を大幅に削減します。イーサネットレシーバーは、通常のデジタル入力ではなく、より敏感なアナログ入力も使用するため、より多くの回線損失が発生します。そのイーサネットのコーディングとエラー修正に加えて、ノイズの統計を克服し、より確実に、より速く、より遠くに行くことができます。


5

I2Cはオープンドレインバスであり、アクティブにローにプルされますが、プルアップ(少なくとも通常の100kHz、400kHzバリアントの場合)はパッシブ抵抗です。

このため、プルアップ抵抗がバスキャパシタンスを充電する速度に基づいて動作する速度に制限があり、プルアップ値を下げることで速度を上げることができますが、それはノードがシンクする必要があることを意味しますより多くの電流を使用してロジックをローにします。または、逆にバスをスローダウンして、より高い値のプルアップ抵抗を使用して消費電力を低くすることができます(PMバスなどを参照)。

スコープを起動して、I2Cの立ち下がりエッジが立ち上がりエッジよりもはるかにシャープであることに注意することは有益です。

基本的に温度センサーと単一ボード(またはせいぜい1つのシャーシ)内の小さな構成デバイスを使用する場合、これは実装の複雑さ、低ピン数、および単純なハードウェアのスイートスポットにほぼヒットすることがわかります。設計意図は「高速で長距離のデータリンク」ではなく、SPIの方が一般に対処しやすいと思うすべての点で、I2Cは意図したユースケースに非常によく適合しています。

距離が長くなると、他のものがより適切になりますが、控えめなeeprom /温度/デバイス構成インターフェイスを備えたボードでは、それはかなりうまく機能します(PHY管理インターフェイスはI2CのようにLOTに見えることに注意してください)。


2

異なる結果は、ドライバー回路がテクノロジーごとに異なるためです。

100kHzのI2Cは通常、プルアップ抵抗を使用して信号を高レベルにし、オープンドレインドライバを使用して信号を低レベルにします。

プルアップ抵抗は通常、数キロオームです。ケーブルが長くなるほど、静電容量が大きくなります。ラインが0から1に遷移するのにかかる時間は、ラインの総容量とプルアップ抵抗値に比例します。約T = 2 * R * Cの範囲内のどこかでほぼ正しいでしょう。

たとえば、1フィートあたり20pFの容量の10フィートケーブルがあり、10Kのプルアップ抵抗を使用した場合、T = 2 * 20pF / ft * 10 ft * 10K = 3.6usでローからハイに移行します。

この場合、明らかに、3.6us幅未満のゼロビットに続く1ビットを使用できなかったため、送信レートは277kHzに制限されます。

実際のI2Cシステムでは、I2C仕様により、データとクロックの遷移のセットアップとホールドタイムがさらに義務付けられています。これらの時間は、数百ナノ秒またはマイクロ秒です。タイミングを意図的に非常に遅くしたため、デバイスを安価に(ペニー)実装し、電力をほとんど消費しない(ミリワット)ことができました。

一方、イーサネットはプルアップ抵抗を使用していないため、ケーブルの静電容量にもかかわらず高速に動作します。高または低のいずれかでケーブルをアクティブに駆動します。ドライバは低インピーダンスであり、あらゆるライン容量を非常に迅速に充電できます。もちろん、すべてが代償を伴います。イーサネットは通常、数百mWの電力を消費し、実装するにはポートあたり少なくとも数ドルかかります。

I2Cに似たセットアップをより速く実行できますか?確かに、10Kプルアップを100オームに変更するだけで、今では3.6ftから36nsまでの10フィートのケーブルドロップまでの立ち上がり時間になります。そうすればおそらく、あまり多くの問題なしに10MHz程度で実行できます(通常のI2Cチップがそれほど速く話せないという事実を除く)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.