【USB笔记】USB2.0 不同传输类型下的理论最大速率

USB笔记 USB2.0 不同传输类型下的理论最大速率

USB2.0协议中定义了三种速率,低速(low speed),全速(full speed),高速(high speed)。

最大速率如下:

最大速率(bps)
低速(low speed) 1.5Mb/s
全速(full speed) 12Mb/s
高速(high speed) 480Mb/s

USB传输的实际数据传输速率是要小于总线速率的,因为实际数据传输速率受到了以下几种情况的影响:

  1. 通信协议的开销:传输的过程中需要进行位识别、同步和错误检查等,同时根据传输类型的不同,还要进行不同的开销。

  2. USB带宽的分配:USB协议根据不同的传输类型,会为其分配不同大小的带宽,然后根据总线实际的繁忙程度,不同传输类型会得到的带宽是不同的,且会实时变化的。

  3. 软件影响

    例如USB控制器程序,总线驱动程序,设备驱动程序等各种软件程序,这些程序的实现方式不同,都会对实际传输速率产生影响。

  4. 硬件影响

    硬件上,例如USB控制器实际支持的传输速率,CPU的处理速率,还有USB线材等都会对实际传输速率产生影响。

  5. 环境影响

    环境上,例如在电磁干扰很强的环境下,会导致传输出现错误,进而导致重传等,都会对实际传输速率产生影响。

  6. 其他因素

所以,USB传输的实际数据传输速率是要小于总线速率的,并且难以准确的确定速率。

下面要描述计算的USB最大速率,是基于上述的第一点来进行讨论的,具体就是指不考虑任何外部影响,在总线空闲时不同速率模式下的不同传输类型的理论最大速率。因为是非常理论的速率,所以实际情况下是难以达到的。

首先先看一下各种传输类型的带宽分配方式。

各种传输类型的带宽分配方式

传输类型 带宽分配情况
控制传输(Control Transfer) 为低速和全速非周期传输保留10%
为高速非周期传输保留20%
批量传输(Bulk Transfer) 根据总线上的带宽情况进行分配
中断传输(Interrupt Transfer) 要求低速/全速端点的任意帧为周期传输分配不超过90%
要求高速端点的任意帧为周期传输分配不超过80%
等时传输(Isochronous Transfer) 要求全速端点的任意帧为周期传输分配不超过90%
要求高速端点的任意帧为周期传输分配不超过80%

高速high speed

USB高速状态(high speed)下总线的理论最大传输速率为480 Mb/s(即60 MB/s)。

对于高速high speed的情况下,各种传输类型的带宽分配如下:

传输类型 最大带宽分配 最大速率/(MB/s)
控制传输(Control Transfer) 100% 60
中断传输(Interrupt Transfer) 80% 48
批量传输(Bulk Transfer) 100% 60
等时传输(Isochronous Transfer) 80% 48

从Table High-speed Control Transfer Limits中可以看到,控制传输最大传输速率是每包数据64个字节,每微帧最大传输次数31,最大传输速率15.872MB/s。

Table High-speed Control Transfer Limits

从Table High-speed Interrupt Transaction Limits可以看到,中断传输最大传输速率是每包数据512个字节,每微帧最大传输次数13,最大传输速率53.248MB/s,但是中断传输最大只能分配80%的带宽,所以只能按80%的带宽重新计算,会发现每包数据256个字节,每微帧最大传输次数23,这时候的传输速率最高,最大传输速率47.104MB/s,带宽78.5%。然后对于USB设备端来说,每个微帧的最大传输次数为3,所以对于USB设备端来说,最大传输速率的计算方式不同,在不考虑高带宽端点(high-bandwidth endpoint)的情况下,最大传输速率计算变为,每包数据1024个字节,每微帧最大传输次数3,最大传输速率24.576MB/s,对于高带宽端点(high-bandwidth endpoint)来说,最大传输速率计算变为,每包数据2048个字节,每微帧最大传输次数2,最大传输速率32.768MB/s。

Table High-speed Interrupt Transaction Limits

从Table High-speed Bulk Transaction Limits可以看到,批量传输最大传输速率是每包数据512个字节,每微帧最大传输次数13,最大传输速率53.248MB/s。

Table High-speed Bulk Transaction Limits

从Table High-speed Isochronous Transaction Limits可以看到,等时传输最大传输速率是每包数据1024个字节,每微帧最大传输次数7,最大传输速率57.344MB/s,但是等时传输最大只能分配80%的带宽,所以只能按80%的带宽重新计算,会发现每包数据256个字节,每微帧最大传输次数23,这时候的传输速率最高,最大传输速率47.104MB/s,带宽78.5%。然后对于USB设备端来说,每个微帧的最大传输次数为3,所以对于USB设备端来说,最大传输速率的计算方式不同,在不考虑高带宽端点(high-bandwidth endpoint)的情况下,最大传输速率计算变为,每包数据1024个字节,每微帧最大传输次数3,最大传输速率24.576MB/s,对于高带宽端点(high-bandwidth endpoint)来说,最大传输速率计算变为,每包数据2048个字节,每微帧最大传输次数2,最大传输速率32.768MB/s。

Table High-speed Isochronous Transaction Limits

总结如下:

对于USB主机端各种传输类型的理论最大速率:

传输类型 数据有效载荷(Data Payload)/Byte 最大传输次数(Max Transfers)/每微帧(Microframe) 最大速率(Max Bandwidth)/(MB/s)
控制传输 64 31 15.872
中断传输 512 23 47.104
批量传输 512 13 53.248
等时传输 512 23 47.104

对于USB设备端各种传输类型的理论最大速率:

传输类型 数据有效载荷(Data Payload)/Byte 最大传输次数(Max Transfers)/每微帧(Microframe) 最大速率/(MB/s)
控制传输 64 31 15.872
中断传输 1024 3 24.576
批量传输 512 13 53.248
等时传输 1024 3 24.576

全速full speed

USB全速状态(full speed)下总线的理论最大传输速率为12 Mb/s(即1.5 MB/s)。

对于全速full speed的情况下,各种传输类型的带宽分配如下:

传输类型 最大带宽分配 最大速率/(MB/s)
控制传输 100% 1.5
中断传输 90% 1.35
批量传输 100% 1.5
等时传输 90% 1.35

从Table Full-speed Control Transfer Limits中可以看到,控制传输最大传输速率是每包数据64个字节,每帧最大传输次数13,最大传输速率0.832MB/s。

Table Full-speed Control Transfer Limits

从Table Full-speed Interrupt Transaction Limits可以看到,中断传输最大传输速率是每包数据64个字节,每帧最大传输次数19,最大传输速率1.216MB/s,使用带宽81.07%,小于90%。对于USB设备端来说,每帧的最大传输次数为1,所以最大传输速率为0.064MB/s。

Table Full-speed Interrupt Transaction Limits

从Table Full-speed Bulk Transaction Limits中可以看到,批量传输最大传输速率是每包数据64个字节,每帧最大传输次数19,最大传输速率1.216MB/s。

Table Full-speed Bulk Transaction Limits

从Table Full-speed Isochronous Transaction Limits可以看到,等时传输最大传输速率是每包数据64/128/256个字节,每帧最大传输次数20/10/5,最大传输速率1.28MB/s,使用带宽85.33%,小于90%。对于USB设备端来说,每帧的最大传输次数为1,所以最大传输速率计算变为,每包数据1023个字节,每帧最大传输次数1,最大传输速率1.023MB/s。

Table Full-speed Isochronous Transaction Limits

总结如下

对于USB主机端:

传输类型 数据有效载荷/Byte 最大传输次数/每帧(Frame) 最大速率/(MB/s)
控制传输 64 13 0.832
中断传输 64 19 1.216
批量传输 64 19 1.216
等时传输 64/128/256 20/10/5 1.28

对于USB设备端:

传输类型 数据有效载荷/Byte 最大传输次数/每帧(Frame) 最大速率/(MB/s)
控制传输 64 13 0.832
中断传输 64 1 0.064
批量传输 64 19 1.216
等时传输 1023 1 1.023

低速low speed

USB低速状态(low speed)下总线的理论最大传输速率为1.5 Mb/s(即0.1875MB/s)。

对于低速low speed的情况下,各种传输类型的带宽分配如下:

传输类型 最大带宽分配 最大速率/(MB/s)
控制传输 100% 0.1875
中断传输 90% 0.16875

从Table Low-speed Control Transfer Limits中可以看到,控制传输最大传输速率是每包数据8个字节,每帧最大传输次数3,最大传输速率0.024MB/s。

Table Low-speed Control Transfer Limits

从Table Low-speed Interrupt Transaction Limits可以看到,中断传输最大传输速率是每包数据8个字节,每帧最大传输次数6,最大传输速率0.048MB/s,使用带宽25.6%,小于90%。对于USB设备端来说,每帧的最大传输次数为1,所以最大传输速率为0.008MB/s。

Table Low-speed Interrupt Transaction Limits

总结如下

对于USB主机端:

传输类型 数据有效载荷/Byte 最大传输次数/每帧(Frame) 最大速率/(MB/s)
控制传输 8 3 0.024
中断传输 8 6 0.048

对于USB设备端:

传输类型 数据有效载荷/Byte 最大传输次数/每帧(Frame) 最大速率/(MB/s)
控制传输 8 3 0.024
中断传输 8 1 0.008

小结

可以看到,上述所有的最大速率计算都是非常理论化的,是基于USB2.0协议,在总线完全空闲的情况下,并且只进行单一传输类型下,不考虑任何外部影响的情况下的最大传输速率。

由于水平有限,上述的最大传输速率计算可能有误,请谨慎参考。

[参考资料]

Universal Serial Bus Specification Revision 2.0

USB2.0与OTG规范及开发指南

USB Complete, 5th Edition

USB开发大全


本文链接:https://blog.csdn.net/u012028275/article/details/122018056

版权声明:本文为CSDN博主「dadalaohua」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012028275/article/details/122018056

生成海报
点赞 0

dadalaohua

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

STM32 USB相关知识扫盲

STM32 USB相关知识扫盲 本篇文章为我个人在学习USB相关知识的整理,可能有不对的地方,欢迎指正! 我学习USB相关知识参考了以下网友的帖子: http://www.51hei.

STM32H7+USB3300+SD作为U盘速度慢的问题

如题,在此我使用的是微雪电子的H7开发板(没办法,淘宝上能找到的USB3300模块就这一家,自然就使用了他家的开发板)。烧录了他家自带的USB_HS Device_MSC例程