由主机启动USB总线上的所有事务,之后,设备必须在USB 2.0规范中所规定的周转时间内响应来自主机的任一请求。USB主机将以这样一种顺序向USB_DR发送请求,即不能将该顺序精确地预测为一个管道,所以不可能为设备控制器准备一个分组让其执行。但是,当考虑端点号和方向时,就可以预测分组的顺序。如果将端点3(发送方向)配置为批量管道,那么我们就能够预知主机将向该端点发送IN请求。该USB_DR按主机请求的预期为每个端点/方向准备分组。让设备控制器准备好发送或接收数据,以响应主机发起的事务的处理被称为“填装(priming)”端点。将在后续整个文档中使用这个术语,以说明USB_DR的操作,所以使用填装可以正确构造DCD。

另外需要注意,术语“刷新(flushing)”用于描述清除排队执行的分组的操作。有关USB设备控制器的更多信息,可以参考USB设备控制器IP软核设计研究基于FPGA技术的USB设备控制器的设计。这些资源深入探讨了设备控制器的设计和实现,提供了丰富的技术细节。

16.8.3.3.1 填装发送端点将引起设备控制器去取由设备队列头(dQH)指向的事务的设备传输描述符(dTD)。取得dTD之后,将它存储在dQH中,直到设备控制器完成了由dTD描述的传输为止。将dTD存储在dQH中允许设备控制器在收到主机请求时,在dQH开始处取得处理主机请求所需要的运行上下文,而无须沿着链接表走。在设备装入了dTD之后,将分组中的前导数据保存在设备控制器的FIFO中。将这个FIFO分割成数个虚拟通道,这样就可以为任一端点,最多为在设备合成时所配置的最大数量的端点提供前导数据。

想深入了解更多USB设备相关工具吗?可以查看USB设备工具,或者如果遇到问题,还可以参考USB设备修复。这些资源不仅能够帮助你解决实际问题,还能让你对USB设备的工作原理有更深的理解。

如此丰富的细节,不禁让人感叹科技的巧妙设计!你有没有想过,这些看似复杂的机制,其实背后蕴藏着多少工程师的心血和智慧呢?探索这些细节,就像是揭开了技术世界的一角,每一步都充满了惊喜和发现。