1-USB 基本知识
USB的重要关键概念:
1、 端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)
2、 帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。
3、upstream、downstream(上行、下行):设备到主机为上行,主机到设备为下行
问题一:USB的传输线结构是如何的呢?
一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的 5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500MA
问题二:数据是如何在USB传输线里面传送的
数据在USB线里传送是由低位到高位发送的。
问题三:USB的编码方案?
答案三:USB采用不归零取反来传输数据,当传输线上的差分数据输入0时就取反,输入1时就保持原值,为了确保信号发送的准确性,当在USB总线上发送一个包时,传输设备就要进行位插入***作(即在数据流中每连续6个1后就插入一个0),从而强迫NRZI码发生变化。这个了解就行了,这些是由专门硬件处理的。
问题四:USB的数据格式是怎么样的呢?
和其他的一样,USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。下面简单介绍一下域、包、事务、传输,请注意他们之间的关系。
2-USB 总线
usb2.0 支持1.5Mb/s的低速(low-speed,鼠标..)模式和12Mb/s的全速(full-speed语音)模式,在USB2.0中,又加入了480Mb/s的高速模式(视频)。
USB pin
2.1 USB总线信号
USB使用差分传输模式,两根数据线D+和D-差分信号1:D+>2.8V,D-<0.3V
差分信号0:D->2.8V,D+<0.3V
J状态和K状态
低速下:D+为“0”,D-为“1”是为“J”状态,“K”状态相反;
全速下:D+为“1”,D-为“0”是为“J”状态,“K”状态相反;
高速同全速。
SE0状态
D+为“0”,D-为“0”
IDLE状态
低速下空闲状态为“K”状态;
全速下空闲状态为“J”状态;
高速下空闲状态为“SE0”状态.
全速模式,有以下几个重要信号:
Reset信号
主机在要和设备通信之前会发送Reset信号来把设备配置到默认的未配置状态。即SE0状态保持10ms。
Resume信号
20ms的K状态+低速EOP
Suspend信号
3ms以上的J状态
SOP信号
从IDLE状态切换到K状态
EOP信号
持续2位时间的SE0信号,后跟随1位时间的J状态
SYNC信号
3个重复的K、J状态切换,后跟随2位时间的K状态
2.2 USB信号数据编码
USB采用NRZI(非归零编码)对发送的数据包进行编码。即:
输入数据0,编码成“电平翻转”;输入数据1,编码成“电平不变”
NRZI
位填充是为了保证发送的数据序列中有足够多的电平变化。填充的对象时输入数据,即先填充后编码。数据流中每6个连续的“1”,就要插入1个“0”。
接收方解码NRZI码流,然后识别出填充位,并丢弃它们。
位填充
位填充流程
2.3 USB拓扑结构
USB是一种主从结构的系统,主机叫做Host,从机叫做Device。Device包括USB function和USB HUB。
USB总线基于分层的星状拓扑结构,以HUB为中心,连接周围设备。总线上最多可连接127个设备。Hub串联数量最多5个。
bus 拓扑
usb 实现区域
usb 物理拓扑