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 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 Bulk Transaction Limits可以看到,批量传输最大传输速率是每包数据512个字节,每微帧最大传输次数13,最大传输速率53.248MB/s。

从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。

总结如下:

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

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

从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。

总结如下

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

总结如下

对于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

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

  1. USB一致性测试-USB2.0测试

    USB一致性测试-USB2.0测试 泰克 USB Tx 和 Rx 软件解决方案可满足负责设计基于 USB 3.1 C 型.USB 3.1 和 USB 2.0 的系统(符合 USB-IF 测试标准)的工 ...

  2. USB2.0电气层信号的表示及速率的识别过程

    USB2.0电气层信号的表示及速率的识别过程 本文为个人学习中的笔记整理,可能存在一些错误或描述不准确的地方,欢迎大家指正,共同学习. 1.USB的一些基本概念 1.1 概念1:host和device ...

  3. USB 之一 USB2.0 规范详解 第一部分

    注意 对于物理特性仅做简单说明 主要是针对 USB 2.0 规范的前八章.后续见 第二部分 关于USB 2.0   在USB官方网站( http://www.usb.org/ )包含了我们必需的所有的 ...

  4. USB和USB2.0万能驱动

    <USB万能驱动下载>下载(点击下载) <USB2.0万能驱动下载>下载(点击下载) USB设备的万能驱动,很多人的usb设备因为太多或没有不能正常使用设备.所以我就从网络上把 ...

  5. linux pci 扩展usb,PCI USB卡 USB2.0卡 PCI扩展卡 PCI转4USB口 VIA转换卡USB扩展卡

    产品名称:USB2.0 PCI扩展卡 4口 PCI USB扩展卡 USB转PCI卡 主芯片:VIA芯片 产品介绍: 1.数据传输率可达1.5/12/480Mbps 2.符合OHCI 1.0a标准 3. ...

  6. 通用串行总线USB接口——USB2.0通信协议总结(USB通信机制、描述符、数据包类型、传输类型)

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <从0到1学习嵌入式Linux开发>

  7. 【USB笔记】 USB2.0 包格式 握手包Handshake Packets

    USB笔记 USB2.0 包格式Packet Formats 握手包Handshake Packets 说明 介绍的是USB 2.0协议中包格式(Packet Formats)的握手包(Handsha ...

  8. 【USB笔记】 USB1.0与USB1.1差异概述

    USB笔记 USB1.0与USB1.1差异概述 为什么写这个 之前打算整理一下不同的USB协议的差异,由于对于这些协议之间的区别不是太了解,就直接通过搜索引擎进行查找.然后看某度百科,某度知道,某乎, ...

  9. 一文读懂USB TypeC与USB-PD。TypeC引脚定义-24P 16P 6P,CC1、CC2的作用,USB-PD介绍,USB2.0/3.0接口类型一览

    USB TypeC & USB-PD & USB接口类型 24P USB-TypeC 引脚定义 母头/母座 公头/插头 引脚功能定义 引脚功能分布情况 16/12P USB-TypeC ...

最新文章

  1. Linux界面自动化测试框架不完全汇总
  2. Centos 7 修改主机名
  3. Visual Basic 15语言新特性
  4. 关闭C#主窗体弹出是否关闭对话框
  5. “妈,你当年咋看上我爸的?”网友晒爸妈结婚照,笑抽了!
  6. Bzoj 4422: [Cerc2015]Cow Confinement(线段树+扫描线)
  7. github创建maven项目过程
  8. 兄弟9055cdn硒鼓清零_dcp—9020cdn硒鼓怎么清零
  9. JAVA常见命名规范
  10. Spark 基础 —— sc.broadcast
  11. 使用EntityFramework连接 Mysql
  12. DNS Server 的设置使用
  13. 在vue中实现picker样式_vue mint-ui学习笔记之picker的使用
  14. Linux命令之打包tar
  15. js防止双击事件触发单击事件
  16. XUI Android原生的UI框架的配置指南
  17. 22:紧急措施http://noi.openjudge.cn/ch0107/22/
  18. 单片机入门(预备知识)-适合初学者
  19. python pandas csv 写文件_Pandas读写CSV文件的方法介绍(附代码)
  20. Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)

热门文章

  1. html怎么把设置按钮居中显示图片,html如何设置图片居中
  2. 局域网IP地址的分配、管理和设置(图)
  3. Pano2VR如何制作全景图?全景图如何添加热点?
  4. C# .Framework生成条形码
  5. 机器学习笔记之玻尔兹曼机(一)基本介绍
  6. i7 1165g7核显相当于什么显卡
  7. USB协议详解第0讲(系列博文介绍)
  8. abb机器人示教器io信号关联_如何在示教器上配置ABB机器人的输入/输出信号?(多图)...
  9. AI英雄 | 八问机器学习泰斗Jordan教授:AI其实并不神奇
  10. 要不要考PMP项目管理培训?