如果电缆长度超过 5m,为什么我们需要缓冲 USB 信号?
那是因为信号电压下降吗?
是因为它驱动电流吗?
为什么 USB 电缆的最大长度比 RS232 短?
传输速度很重要,因为 USB 是半双工的:为了传输响应,必须调转总线并在另一个方向传输数据。因此主机发送数据并等待确认或响应。所有传输都由主机控制。然后设备有一定的(相当短的)响应时间。这个时间大致是沿 5m 电缆两次信号跳闸所用的时间。
(我现在找不到参考资料,但相关的规范文件是公开的)
编辑:感谢 psmears 找到这个部分
电缆和长途解决方案
- 为什么有电缆长度限制,它们是什么?
答:电缆长度受到 26ns 的电缆延迟规格的限制,以允许反射在发送下一个比特之前在发送器处稳定下来。由于 USB 使用源端接和电压模式驱动器,因此必须如此,否则反射会堆积并损坏驱动器。这并不意味着线电压在位结束时已完全稳定;与最坏情况下的不足。然而,在钻头末端有足够的阻尼,反射幅度已降低到可管理的水平。低速电缆长度限制为 18ns,以防止传输线效应影响低速信号。
- 我想建造一根超过 5 米的电缆,为什么这行不通?
答:即使您违反了规范,它实际上也不会让您走得太远。假设最坏情况下的延迟时间,位于 5 个集线器和电缆底部的全速设备具有 280 ps 的超时裕度。将这个余量减少到 0ps 只会给你额外的 5cm,这几乎不值得麻烦。
所以我的回答只对了一半:往返限制是针对最坏情况下的集线器和电缆链,总深度为 25m。
Dan Neely 也是正确的,USB 一直被认为是键盘、鼠标、打印机等“慢速”外围设备的成本最低的解决方案。如果您想要全双工以获得更快的速度和更远的距离,那么 100baseT 以太网是自然的选择。
请参阅此页面,https://superuser.com/questions/64744/maximum-length-of-a-usb-cable。
Q1:我可以使用多长的电缆来连接我的设备?A1:实际上,USB 规范将全速设备之间的电缆长度限制为 5 米(略低于 16 英尺 5 英寸)。对于低速设备,限制为 3 米(9 英尺 10 英寸)。
Q2:为什么我不能使用长度超过 3 或 5m 的电缆?A2:USB 的电气设计不允许。设计 USB 时,决定以将 USB 电缆的最大长度限制在 4m 范围内的方式来处理 USB 数据线上的电磁场传播。这种方法有很多优点,而且由于 USB 是为桌面环境设计的,范围限制被认为是可以接受的。如果您熟悉传输线理论并想了解有关此主题的更多详细信息,请查看开发人员常见问题解答的 USB 信号部分。
“缓冲” USB 是不可能的,至少不是通常意义上的 USB。通常,缓冲意味着电放大和可能的信号再生。
使用 USB,主机驱动整个总线。主机发出请求,设备必须向主机发出响应。响应的开始必须在请求完成传输后的某个时间到达主机。电缆太长,传播延迟太长,响应无法及时到达主机。
所以有一些变通方法,它们都不涉及简单的“缓冲”,因为缓冲会增加额外的延迟,我们需要以某种方式让主机更能容忍更长的延迟。
有两类解决方法:
插入物理或虚拟集线器的解决方法。如果主机枚举总线上的集线器,集线器本身会增加额外的延迟,并且集线器和主机之间可能还有另一条全长电缆。对连接集线器下游的设备的任何请求都安排有额外的延迟。
您可以每 4m 电缆插入一个单端口集线器,最多可串联 7 个集线器。限制是从主机到最终设备的 7 级集线器,因此如果您的装置上游有任何集线器,您需要相应地减少集线器的数量。许多 USB 主机包括单级内部集线器,因此实际限制是 28m 的电缆,串联 6 个集线器。除第一个集线器外,所有集线器都必须假装自供电。
您可以在插入主机的插头处添加带有预加重功能的更强大收发器的虚拟集线器,然后通过更长的电缆传输 USB 流量。只要这种延长电缆末端的设备接收到的信号在规格范围内,并且只要您的接收器可以恢复标准设备通过长电缆发送的数据,就可以了。添加了虚拟集线器,以便主机允许长时间延迟 - 但当然没有物理集线器,只是模拟它们。
模拟在更高级别的协议上显示“慢”的设备的解决方法。这就是一些 Cat-5 USB“扩展器”的工作原理。这里有五个合作伙伴:真实主机(rHost),它看到的模拟设备(eDev),长电缆,模拟主机(eHost),以及在电缆远端看到它的设备(rDev) .
最初,eDev 假装不在那里。有时,eHost 看到插入了 rDev。它会枚举它,并将数据转发到 eDev。然后,eDev 模拟一个插件事件,而 rHost 枚举它。rHost 认为它看到了 rDev,但它只是 eDev 在那里,假装。同样,rDev 认为这是看到一个 rHost,但它只是一个 eHost 在那里,假装。
最终,rHost 想要向它认为存在的 rDev 发出一些转移,以利用它。对于 IN 传输,eDev 会假装没有数据(以 NAK 回复)。传输请求被转发到 eHost,由 rDev 重新执行。此结果将转发回 eDev,后者在主机下次尝试传输时使用结果。
对于 OUT 传输,eDev 必须猜测 rDev 的行为。这里可以尝试各种启发式方法和行为。一种方法是让 eDev 始终接收数据并回复 ACK。传输被转发到 eHost,然后将传输重播到 rDev。理想情况下,rDev 最终会消费数据并确认它。如果这不成功,或者如果 rDev 以 STALL 回复,则 eDev 可以做的最好的事情就是在主机的下一次传输时采取这种方式。或者,eDev 总是可以不接受传输,通常正确的假设是主机稍后会简单地重试相同的传输。即使原始传输是经过 NAK 处理的,它也会被转发到 eHost,然后由 rDev 执行传输。无论 rDev 的回复是什么,只要 eDev 知道它,它就会成为它的回复。
现实的实现将从保守的启发式开始,其中涉及到 rDev 的完整往返,用于所有可以被 NAK 推迟的传输。随着传输的进行,可以学习 rDev 的预期行为,并且 eDev 可以变得不那么保守。“扩展器”可以使用标准 USB 类的知识,以及一些供应商特定的类/设备知识/黑名单/白名单来提供更好的性能。
大多数通过电缆传输数据的方案都有一个体面的国际公认标准来描述如何实施它们,包括电缆“特性阻抗”的规范(将其视为电阻,但适用于交流电)、终端阻抗(连接末端的“电阻”,这是避免信号反射回电缆反弹回发送器所需的),通常是指定的“转换速率”(信号从0 状态到 1 状态或反之亦然),因此每秒 0/1 之间的最大转换次数(即 kbps / Mbps / Gbps),以及在信号完整性下降之前电缆可以保持多长时间 &东西停止正常工作。
与 USB 相比,RS232 在电缆类型、特性阻抗、压摆率、电缆长度、连接器类型方面的所有规范都比较完善。当然,25 针和 9 针“D”连接器很常见,但实际上 RS232 被设计到各种连接器、电缆和产品中,没有真正的规范可以说明。在实践中,使用 RS232,您通常可以通过降低到较低的每秒比特(又名“波特”)速率来走更远的距离。您可以达到的最大距离也将在很大程度上取决于电缆的阻抗,无论它是否被屏蔽,末端的端接等等。
在比较 RS232 和 USB 时,您是在比较 1960 年代的“标准”,该标准几乎达到 115k2(极少数例外),而 1990 年代和 2000 年代的“标准”以 1.5Mbps开始,快一个数量级,然后是 12Mbps(快近 100 倍),然后是 480Mbps(快近 5000 倍),但这意味着电缆参数和电缆长度在使其可靠工作方面发挥了重要作用。它被设计为桌面外围连接标准,因此 5m 被认为是可以接受的,然后从该点开始设置电缆、连接器和速度的所有参数。如果有办法让 USB 变慢,您可能可以让它在更长的电缆上运行(没有中继器)。