USB2.0官方协议手册阅读笔记(1)——总体介绍
目录
- 1. 前言
- 2. 总体介绍
- 2.1 USB特性
- 2.2 速率模式
- 2.3 拓扑结构
- 2.4 物理结构
- 2.5 总线协议
- 2.6 USB Device
- 2.6.1 Hubs
- 2.6.2 Function
- 2.7 Host
- 3. 后言
1. 前言
这篇博客阅读官方手册1-4章的内容
- Introduction
- Terms and Abbreviations
- Background
- Architectural Overview (重点)
链接: usb2.0英文版协议原文 提取码: 1111 复制这段内容后打开百度网盘手机App,操作更方便哦
如今USB和PCIe已经成为了计算机系统里面最重要的两个接口。任何一个协议都是分层次的,不同层次的开发者所需要了解的内容不尽相同,USB我们在平时的生活中也用得很多,所以在学习的时候很容易结合自己的实际使用感受。
注:本文中一些常用的定义,保留了一些简单的英文,我认为反而更容易记忆和理解。
2. 总体介绍
2.1 USB特性
从开发USB2.0的目的可以对USB2.0的功能略知一二,在第一章的介绍中,手册提到开发USB2.0的三个目的:(完整特征在手册的P13页)
- Connection of the PC to the telephone
- Ease-of-use
- Port expansion
可以概括出USB2.0的一些主要特性:
- 即插即用,支持热插拔
- 良好的扩展性,最多支持127个Device扩展
- 双向传输
- 高速同步串行
- 完全的向下兼容USB1
USB2.0向下兼容,USB2.0的接口能够直接接到USB1.0的接口上,事实上USB2.0和USB1.0在物理层上也是有一定的继承,这个在后面的博客介绍中提及。可以理解为USB2.0是USB1.0的扩展。USB3.x又是USB2.0的扩展。
为了实现兼容性在一定程度上也使结构更加复杂,协议更加臃肿。
2.2 速率模式
USB2.0支持三种速率:
- Full-Speed 12M/s FS (USB1.0支持)
- Low-Speed 1.5M/s LS(USB1.0支持)
- High-Speed 480Mb/s HS
简写为:FS/LS/HS,这个务必记住。
High Speed模式是USB2.0新加的。虽然USB2.0能够直接接到USB1.0的接口上,但是USB1.0接USB2.0并不支持High Speed模式。
几种速度模式下的属性介绍:
2.3 拓扑结构
USB支持Host与多个外设进行数据交换,外设之间共享总线带宽,不过要基于一个由Host调度的、基于令牌的协议。
在部分外设运行时,也支持Host连接、配置、使用和分离另一部分外设。
一个USB系统由三部分组成:
- USB interconnect
- USB Device
- USB Host
拓扑结构如下图所示,在一个系统中Host只有一个,Hub可以于Hub或者Function相连,考虑到传输延时的影响最多支持7层。
第七层只能是Function,从Host到Function最多经过5个Hub。这些看图也能得出来。
==最主要的结构就是两种:Host和Device ==
USB Host
一个USB系统中,有切只能有一个Host,与电脑相连的接口被称作the Host Controller,the Host Controller可以是软件硬件或者固件,在Host中有一个root Hub提供了下层的连接节点。
USB Devices
Device包括两种:
- Hubs:提供附加的连接点
- Functions:为USB系统提供功能
2.4 物理结构
USB一共有四条线:Vbus、D+、D-、GND
D+、D-为数据线。Vbus和GND为电源线
- 为什么会没有时钟线呢?
- 时钟通过NRZI和位填充的方式与差分数据共同编码
- 如何恢复时钟信号呢?
- 每个数据包都有一个SYNC字段,允许接收方将时钟恢复出来。
- Vbus和GND之间的电压是多少呢?
- 5V,允许一定程度的衰减,线缆长度通常有几米
2.5 总线协议
USB是一个轮训总线,所有的传输都由USB Host controller发起
大多数transaction包含3个packet(不过也有少数transactions是4个包的,用来管理Host和FS/LS DeviceDevice直接的传输)。
大致流程是这样的:
- Host发送一个带有type,direction of transaction,the USB Device address,endpoint number的数据包被称为token packet(令牌包)
- Device解码特定的字段,如果是一个协议给定的类型,就会按照之前指定的direction传输数据(也有可能不需要传输数据)(可以是Host to Device也可以是Device to Host)。
- 作为data的接收方(Device or Host),会回复一个握手包表示传输完成或失败
USB数据的传输模型可以描述为pipe,它有如下特点:
- Host和Device内的ednpoint之间
- 两种类型:message/stream
- pipe与数据的位宽,传输模式和endpoint的某些特性相关
- 大多数pipe仅当Device被配置完成才存在
- 有一个特殊的pipe,上电就存在,即the Default Control Pipe。为了提供对Device的configuration, status, and control
information的访问。 - stream数据没有usb定义的结构,而message数据有。但是在硬件层面还是可以实现flow control
2.6 USB Device
所有USB Device都可以通过在Device连接和枚举时分配的地址进行访问。每一个Device可以提供一个或多个pipe(与Host通信)且支持一个特殊的pipe在endpoint0上。通过这个特殊的pipe可以访问usb Device的一些信息:控制和状态信息,除此之外还有Device的能力供货商,分类和一些商家自定义的信息。
正如前面所说的,有两种类型的Device:Hubs和Function
Hubs提供额外的USB连接点。Function为Host提供了额外的功能
2.6.1 Hubs
一个Hub可以将一个Attachment points分为多个,Attachment points被称为port,port的方向是单向的,有且只有一个upstream port,downstream port可以有多个。Hub可以检测到每个downstream port的连接和分离,并使电源分配到downstream Device,downstream port之间不会相互干扰,可以连接HS/FS/LS的Device。
一个USB 2.0 Hub由三个部分组成: the Hub Controller, the Hub Repeater, and the Transaction Translator。作用分别是:
- the Hub Repeater是在上游Port和下游Port之间的协议控制开关。硬件支持重置和暂停/恢复信令
- the Hub Controller提供与Host之间的通信。允许Host配置Hub,并监视和控制其Port。
- the Transaction Translator Hub支持FS/LSDevice,同时在Host和Hub之间HS传输所有Device数据
在USB Host controller 与 Hubs之间,FS和LS的数据可以用HS的速率进行传输,在Hub和Device中只能FS和LS。
减少FS和LSDevice对带宽的影响。(因为所有Device都是公用总线的,在单车道上,走的慢的车会影响走的快的车)
很容易想到,总线上的低速Device越多,总线的利用率就越低。
2.6.2 Function
一个Function通常是个单独的外设,被连接的Hub上。
每个Function都包含描述其功能和资源需求的配置信息。在使用Function之前,必须由Host配置。
常见的Function有哪些?
- 人机交互设备,如鼠标、键盘、平板电脑、或游戏控制器
- 扫描仪,如打印机或照相机等成像设备
- 一种大容量存储设备,如CD-ROM驱动器、软盘驱动器或DVD驱动器
这里有一个特别的概念:什么是Compound Device?
- 由多个Function和一个Hub通过物理封装在一起,对外留出一个USB接口
2.7 Host
Host的工作包括一下几个方面:
- 检测USB Device的连接和移除
- 管理control flow between the host and USB devices
- 管理data flow between the host and USB devices
- 收集状态和活动统计
- 提供电源给USB devices
The USB System Software 管理着Device和Device Software(Host上) ,在The USB System Software和Device Software有如下五种交互:
- Device 枚举and配置
- 同步数据传输
- 异步数据传输
- Power management
- Device and bus management information
3. 后言
读完1-4章以后对USB的结构有了大致的了解。
觉得有帮助的朋友们可以点个赞!有任何意见可以评论区指出,感谢大家的阅读。
USB2.0官方协议手册阅读笔记(1)——总体介绍相关推荐
- USB2.0官方协议手册阅读笔记(2)——数据流模型
目录 1. 前言 2. 总体介绍 3. 重点介绍 3.1 总线拓扑 3.1.1 Host and Device 3.1.2 Physical Bus Topology 3.1.3 Logical To ...
- Xilinx AXI USB2.0 Device IP 手册阅读笔记
目录 1. 前言 2. 概要 2.1 USB2.0协议特点: 2.2 The AXI USB 2.0 Device介绍 2.2.1 Endpoint0: 2.2.2 Endpoint1~7: 3. 详 ...
- 14015.xilinx-芯片手册阅读笔记
文章目录 1 xilinx芯片手册阅读笔记 1 Introduction 介绍 1.1 System Block Diagram 系统框图 1.2 Power Domains and Islands ...
- sed 手册阅读笔记转
原文链接sed 手册阅读笔记摘要sed 手册本身不太适合初学者,我在看的过程中加了一些 自己的注释和一些例子,帮助理解,如有偏差或错误,请指出,多谢.目录1. sed的工作原理 2. sed中如何选择 ...
- 802.11ac协议白皮书阅读笔记
802.11ac协议白皮书阅读笔记 定义 对比 关键技术 信道带宽管理技术 MU-MIMO 更高阶的调制-256QAM A-MPDU帧聚合 总结 定义 802.11ac是继802.11n之后的新Wi- ...
- USB2.0协议原文阅读笔记
1. 前言 在了解一个协议时,有几点是十分重要的: 层次结构 应用场景 不同的开发者,关心的协议层不一样,不是所有的都需要掌握. 为了向下兼容的设计 USB2.0是从USB1.0的基础上发展而来的,能 ...
- Java开发手册阅读笔记
<Java开发手册>阅读理解,抛砖引玉 前言 最近开发一个项目,由于是第一次搞开发没什么经验,由于在编码上没有什么约束,完全依靠idea的自动提示,在后期重构和开发时带来了一些麻烦,而且代 ...
- 《TCP IP 详解卷1:协议》阅读笔记 - 第十章
阅读须知:笔记为阅读<TCP IP 详解卷1:协议>后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别 ...
- 《ActionScript 3.0权威指南》阅读笔记
第二章 配置开发环境 目前,主流的ActionScript 3.0开发环境分为Flash和Flex两大类.前者是设计和开发一体的集成环境,后者是严肃的脚本开发平台,更符合程序猿的析构.开发者应根据自 ...
最新文章
- django mysql orm教程_带你了解Django ORM操作(基础篇)
- php和python哪个用了开发web好-web开发选择Python还是PHP好呢?
- 构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock
- fckeditor编辑器自定义加按钮菜单
- Bug测试报告--在线考试系统--金州勇士
- java高并发实战Netty+协程(Fiber)|系列1|事件驱动模式和零拷贝
- RxJava之PublishSubject、BehaviorSubject、ReplaySubject和AsyncSubject
- 国产毫米波雷达领域的领头羊,木牛科技将在明年量产77GHz汽车雷达
- 天天说常识推理,究竟常识是什么?
- python分片上传_python 分片上传大格式
- Android 11正式发布:小米、OPPO等手机将陆续更新
- 【已解决】罗技K380蓝牙键盘可以连接电脑,但无法输入怎么办?
- 文字阴影(HTML、CSS)
- acrobat xi pro 简体中文语言支持包_出图利器佳能PRO-541S绘图仪现货报价-佳能 PRO-541S_西安大幅面打印机行情...
- 一天天过得很快啊,今天大家都干了啥?我们拿出来晒晒
- 锋利jquery 网络版
- chrome谷歌浏览器离线安装axure插件打开页面原型
- iOS亮屏解锁命令【iOS自动化测试】--使用ssh
- ***【九度oj-1343】城际公路网
- 对话行癫:解密阿里云顶层设计和底层逻辑 1
热门文章
- WebService端口号修改
- C#将csv文本文件 导入到 dataGV控件中
- [IOS APP]老梁故事汇(会)
- java-net-php-python-jspm景区售票系统查重PPT计算机毕业设计程序
- vsCode运行python设置argparse参数
- CentOS7.8 换清华源和阿里源
- abb机器人指令手册_ABB机器人码垛2020
- [深入研究4G/5G/6G专题-39]: URLLC-10-《3GPP URLLC相关协议、规范、技术原理深度解读》-4-如何区分URLLC业务?网络切片的架构与技术详解
- oracle aq 队列,ORACLE_AQ 队列
- 接入点的属性详细介绍