了解铜线上的数据传输速率


11

我一直在研究将传感器连接到Arduino的不同方法,而i2c似乎是一种流行的方法。我读到它仅在短距离(最多几米),数据速率为400或100kbps时才可靠。我很难理解为什么与通过千兆位以太网等铜缆进行的其他数据传输相比,该协议的限制如此之低。我已经看到了电容,电压降和电阻等原因,但是基于cat5 / 6的以太网是否也遇到所有相同的问题?基本上,我想知道为什么在比较这些不同的方法时为何在某些铜线上施加一些电压脉冲并不能产生更一致的结果(带宽,距离)。


有很多主要的协议都有规定的限制,通常会被忽略。没有中继器,以太网只能可靠到30英尺。USB在10英尺以下。这并不意味着人们不会超越极限。这些是根据您需要数据的速度/可靠性以及您是否负担得起crc检查的数据开销而做出的实施决策。
mreff555

我只想指出,即使I2C并非旨在以这种方式使用,但绝对可以在100m以上使用它。(它的理论最大距离与以太网相同)。但是,您的波特率可能会很低,或者您的上拉电流会很可笑。
Opifex

@Opifex可笑的速度!
DKNguyen

1
这不是答案,也许我是在说显而易见的东西,但是I2C(或任何其他协议)的限制基本上是由于电线的材料协议。您的问题的症结似乎是“如果方法X使我得到A优于铜,那么Y和Z是否也应得到我A?” 这不是天生的真实。
dwizum

6
30英尺,您是说328英尺/ 100m @ mreff555吗?这是双绞线以太网的规格,旧的同轴以太网甚至更长(10base2为200m,10base5为500m)。
Mark Booth

Answers:


14

香农定理设定了电缆上信息带宽的极限。这是有关此的更多信息:https : //www.gaussianwaves.com/2008/04/channel-capacity/

tl; dr版本:Shannon-Hartley方程:

  • C=Blog2(1+SN)(1)

BSN

I2C显然不在电缆的Shannon限制附近。相反,它是一种轻量级协议,具有使用集电极开路总线的故意慢速(100/400 kbit / s)的协议,可轻松实现具有适度I / O和控制需求的小型设备网络。I2C指定的慢速运行可避免大多数信号完整性问题。

有更快的I2C变体使用1 Mbit和3.2 Mbit / s的速率。与正常的I2C相比,这些要求更多地关注布局和端接,当然时序更严格,要求更高。

沿着食物链向Shannon方向发展,Gbit以太网使用多种技术来实现其吞吐量:

  • 差分信号
  • 多对(4)
  • 多级信令,称为PAM-5
  • 预加重/去加重
  • 自适应均衡

这些技术需要大量的硅,包括用于与电缆通信的快速,大型混合信号ADC / DAC模块以及用于管理电缆的相当繁重的信号处理。除此之外,还要复杂得多的软件堆栈来驱动它。对于低端微控制器(其中有些选择使用外部PHY),这使得以太网作为片上模块的功能有所增加。然而,它的成熟度使其处于较大的片上系统的范围之内。

无论如何,我们离香农极限有多近?此处更多:https//pdfs.semanticscholar.org/482f/5afbf88a06d192f7cb052f543625c4b66290.pdf


哈哈,有个伏都教:预加重和去加重。因此,以太网不仅是沿线路发送方波甚至是正弦波,还希望它在到达目的地时不会失真太多。它可以对模拟波形进行整形并将其向下发送。
DKNguyen

3
@DKNguyen接收器中包含100兆位或更快的以太网的真正巫毒教。使用自适应均衡算法,这些天通常以数字方式实现;接收到的信号将馈入ADC,然后馈入一些DSP硬件(都在0.50美元的PHY设备内部)。最近的高速协议中的技术又再次变得更加复杂。
scary_jeff

Thx @scary_jeff关于自适应均衡。提醒。将其添加到我的答案。
hacktastical,

6

传输不仅仅是铜缆。您是否看到过以太网背后的硬件?可能不是,因为很难找到任何基层电路来进行实际工作,因为胆量总是隐藏在IC中。我找到的最接近的是以太网所需的磁性,这显然不是可选的。这只是以太网硬件实际发生的情况的提示。

这样考虑:空气是一种媒介。为什么狗彼此交谈时可以传达的信息类型比人类彼此交谈时所传递的信息类型少得多?为什么通过空气发送一些压力波不能在这两种动物之间的通讯中产生更一致的结果?

I2C(和许多其他协议)的一些限制因素是:

  1. 集电极驱动器
  2. 没有阻抗匹配
  3. 没有平衡的传输
  4. 没有错误检查
  5. 简单编码方案
  6. 相对较高的电压电平(如果电压步幅不必太大,则可以传输得更快,因为对于更高的速度,dV / dT不必那么高)
  7. 没有隔离
  8. 单极性电压(以太网以+/- 2.5V传输,这可能会有所帮助)
  9. 从设备的传输由主设备提供时钟,因此基本上时钟必须比数据信号更快地往返

所有这些都使事情变得简单。对于高数据速率或长距离传输而言不是很好。

在我不知道的硬件中可能还存在其他一些伏都教。


6

一些简单的经验法则:没有基础。所有电线都是天线。所有电线均为传输线。总是有噪音。

如果一根电线比信号上升时间短,那么您就可以忽略传输线阻抗的失配和反射(与以太网不同,以太网需要复杂的端接和脉冲整形)。如果电线很长,则电线和接地差分上的感应电压很可能使远端的数字信号电平不确定或不正确。但是以太网使用双绞线差分信令,大大减少了感应噪声和接地参考问题。以太网接收器还使用更灵敏的模拟输入,而不是典型的数字输入,因此允许更多的线路损耗。再加上以太网的编码和纠错功能,可以克服噪声统计信息,您可以更可靠,更快,更远地运行。


5

I2C是开漏总线,它被主动拉低,但上拉(至少对于正常的100kHz,400kHz变型而言)是无源电阻。

因此,基于上拉电阻器对总线电容充电的速度,事物运行的速度受到限制,有时可以通过降低上拉值来提高速度,但这意味着节点需要下沉增大电流以使逻辑低电平...。或者您也可以采用另一种方法,降低总线速度,以允许使用较高值的上拉电阻来降低功耗(例如,参见PM总线)。

触发示波器并提示I2C的下降沿比上升的沿陡峭得多,这是有启发性的。

对于预期的用途,基本上在一块板(或至多一块机架)中的温度传感器和小型配置设备实际上在实现复杂性,低引脚数和简单硬件之间达到了最佳位置。设计意图不是“快速,长距离数据链路”,对于我发现SPI通常更易于处理的所有方面,I2C确实非常适合其预期的用例。

一旦距离增加,那么其他的东西就更适合了,但是在具有适度的eeprom /温度/设备配置接口的板上,它的表现相当不错(值得一提的是,PHY管理接口看上去很像I2C)。


2

结果不同是因为每​​种技术的驱动器电路都不同。

100kHz I2C通常使用上拉电阻将信号置于高电平,而漏极开路驱动器将信号置于低电平。

上拉电阻通常为几千欧姆。电缆越长,其电容越大。线路从0过渡到1所需的时间将与线路上的总电容和上拉电阻值成正比。在大约T = 2 * R * C范围内的某个位置大约是正确的。

例如,如果您有一条10英尺长的电缆,每英尺的电容为20pF,并且使用了10K上拉电阻,则从低到高的过渡需要T = 2 * 20pF / ft * 10 ft * 10K = 3.6us。

在这种情况下,您显然不能在宽度小于3.6us的零位之后跟随任何一位,因此您的传输速率将被限制为277kHz。

在实际的I2C系统中,I2C规范进一步要求围绕数据和时钟转换建立和保持时间。那些时间可能是数百纳秒或微秒。故意使时序变慢,以便可以廉价地实现这些设备(便士),并且仅消耗很少的功率(毫瓦)。

另一方面,尽管电缆有电容,但以太网可以运行得更快,因为它不使用上拉电阻。它主动将高电平或低电平驱动到电缆中。该驱动器具有低阻抗,可以非常快速地为任何线路电容充电。当然,这都是有代价的。以太网通常消耗数百毫瓦的功率,并且每个端口的实施成本至少为几美元。

当然,可以将类似于I2C的设置运行得更快一些,只需将10K上拉电阻更改为100欧姆,现在您将10英尺电缆的上升时间从3.6us降至36ns。这样一来,您可能可以在10MHz左右的频率下运行而不会出现太多问题(除了常规I2C芯片不能这么快地通话的事实)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.