異なる結果は、ドライバー回路がテクノロジーごとに異なるためです。
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チップがそれほど速く話せないという事実を除く)。