用于实现 USB 示波器的最佳 USB 传输类型(批量、中断、同步传输)是什么?

电器工程 USB 示波器
2022-01-20 01:27:38

我想制作一个 USB 示波器。我正在阅读有关不同 USB 传输类型的信息。哪种传输类型最适合将收集的 ADC 样本从 USB 示波器传输到 PC?

以下是我的一些发现。请纠正我,如果有人能建议一个好的转移类型,那将是很好的。

  1. 同步传输 - 可能丢失数据。不适合示波器,因为每个数据项都很有价值。可能会丢失多少数据?
  2. 中断模式 - 我不知道它是否会淹没 USB 连接
  3. 批量模式 - 对我来说似乎是最好的,因为没有数据丢失
  4. 控制传输 - 不适合,因为它不适合传输数据
4个回答

批量传输不会丢失数据,但它们没有保证的最小带宽。(另一方面,它们可以达到更高的速度,因为它们能够使用任何其他传输实际未使用的所有带宽。)

当示波器的数据传输延迟(由于错误或其他设备)并且新数据堆积时会发生什么?您是在传输旧数据之前停止设备,还是丢弃旧数据以便能够传输当前数据?

同步传输是为“实时”数据设计的。您对错误处理别无选择,但您的带宽保留在总线上。

  • 如果要实时显示记录的数据,则应使用同步传输。
  • 如果您想在测量完成后将记录的数据传输到 PC,您应该使用批量传输。

这个问题几乎完全独立于您作为示波器的用途,并且完全取决于您要求 USB 执行的通信类型。例如:

  • 内部具有大(数兆字节)缓冲区并设计为先运行简短测试然后上传数据的示波器将完全使用批量传输。它不需要保证带宽,因此具有批量传输错误检查的大容量将是最好的。
  • 设计为连续连接到被测电路并且必须“实时”运行(阅读:确定性运行时间)的示波器将选择等时同步。Bulk 不提供确定性的运行时保证,并且您无法将管道设置为保留带宽。您必须自己进行错误更正,但至少它们可以确定地完成。
  • 带有供人类观看的“实时”馈送以及触发器上的高速捕获的示波器可以设置两个端点,一个同步以跟上实时馈送和触发数据的批量传输。对于人类来说,丢失一两帧并不是什么大问题,因此没有理由担心等时同步上缺少错误检查。但是,当涉及到实际数据时,您需要将其批量传输以进行纠错。
  • 人们可能会将此电路用作实时系统的一部分。它可能不仅是示波器,而且还可以防止指示电路离开工作范围并需要由计算机关闭的信号。在这种情况下,您可以向系统添加一个中断端点,以获得有保证的延迟(以及一些明确定义的错误处理),以确保在问题中断之前得到服务。

一旦您知道要传输的数据类型以及数据到达所需的服务质量 (QoS) 条款,您就可以决定使用哪种 USB 传输机制。当不再需要“示波器”一词来描述您需要的数据和 QoS 时,您就会知道您已准备好做出这些决定。然后你就知道用足够客观的话来开始解决这些问题了。

对于示波器,传输带宽是您想要最大化的参数。批量传输专为高带宽而设计,因此这是正确的选择。虽然同步和中断传输限制了延迟,但它们仅适用于中低带宽数据流。

只需使用批量传输。示波器实际上不是高数据速率设备。除非您打算进行数字荧光粉类型的设计,否则示波器实际上只是进入波形很小部分的窗口。例如,假设您要显示 1000 个水平像素并以 30Hz 左右的频率刷新显示。如果每个样本都是 8 位(这是典型的)并且有两个通道,那么您只能看到 60,000 字节/秒。全速 USB 可以处理大约 1,000,000 字节/秒,因此您使用的总线吞吐量不到 6%。这为批量传输模式提供了足够的时间来完成它的工作(纠正错误,解决其他总线流量),并且您不太可能遇到无法为您分配足够带宽的真实总线配置对于那么多数据。