完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
标签 > USB总线
USB总线是为通用串行总线,USB接口位于PS/2接口和串并口之间,允许外设在开机状态下热插拔,最多可串接下来127个外设,传输速率可达480Mb/S,它可以向低压设备提供5伏电源,同时可以减少PC机I/O接口数量。
USB总线是为通用串行总线,USB接口位于PS/2接口和串并口之间,允许外设在开机状态下热插拔,最多可串接下来127个外设,传输速率可达480Mb/S,它可以向低压设备提供5伏电源,同时可以减少PC机I/O接口数量。
USB总线:
通用串行总线USB(universal serial bus)是由Intel、 Compaq、Digital、IBM、Microsoft、NEC、Northern Telecom等7家世界著名的计算机和通信公司共同推出的一种新型接口标准。它基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。它可以为外设提供电源,而不像普通的使用串、并口的设备需要单独的供电系统。另外,快速是USB技术的突出特点之一,USB的最高传输率可达12Mbps比串口快100倍,比并口快近10倍,而且USB还能支持多媒体UBS通用串行总线的特性阻抗是90欧姆。
USB总线是为通用串行总线,USB接口位于PS/2接口和串并口之间,允许外设在开机状态下热插拔,最多可串接下来127个外设,传输速率可达480Mb/S,它可以向低压设备提供5伏电源,同时可以减少PC机I/O接口数量。
USB总线:
通用串行总线USB(universal serial bus)是由Intel、 Compaq、Digital、IBM、Microsoft、NEC、Northern Telecom等7家世界著名的计算机和通信公司共同推出的一种新型接口标准。它基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。它可以为外设提供电源,而不像普通的使用串、并口的设备需要单独的供电系统。另外,快速是USB技术的突出特点之一,USB的最高传输率可达12Mbps比串口快100倍,比并口快近10倍,而且USB还能支持多媒体UBS通用串行总线的特性阻抗是90欧姆。
USB基本架构与总线架构
如图1所示,一般USB系统的基本架构可以分为3个主要的部分:
·USB主机控制器/根集线器;
·USB集线器;
·USB设备。
图1 USB基本架构
1.USB主机控制器/根集线器
所有在USB系统上沟通都是在软件控制下由PC主机激活的。主机硬件包括USB主机控制器(USB host controller)与USB根集线器(USB root hub)两种。
如图2所示,在用户计算机上的系统属性的“设各管理器”中所显示的“通用串行总线控制器”内,包含了下列所示的两组项目:
·Standard Universal PCI to USB H°st Controller——USB主机控制器;
·USB Root Hub——USB根集线器。
图2 设备管理器下的USB所包含的项目
当然,大部分的计算机仅有一组而已。若在操作系统中,未涵盖类似的设各信息画面,则代表此主机并未支持USB接口。用户可能就必须另外购置USB接口的扩充卡来加以使用。而笔记本电脑则须使用PCMCIA接口的扩充卡。相同的方式,若用户须要将原先USB 1.1主机控制器的规范升级为USB 2.0,也同样须购置USB 2.0的扩充卡。
如图3所示,为Windows 2000下的“设各管理器”,在“通用串行总线控制器”所包含的USB 2.0主机控制器的项目。
图3 “设备管理器凵下的“通用串行总线控制器”所包含的项目(USB 2.0)
而其相关的功能说明如下所列:
·USB主机控制器——负责激活USB系统上的处理动作,简而言之,就是整个USB系统的大脑。目前依USB开发的进度,有“OHC—Open Host Controllet开放式主机控制器”与“UHC—Universal Host Controller通用式主机控匍器”两种。这两种主机控制器的功能完全是一样的,只是内部的运作方法稍有不同而已。在Microsoft的Windows系统上,这两种主机控制器都被支持,用户只须知道有这两种控制器就行了。在新的USB 2.0规范下,则应用上述所提及的增强型主机控制器(Enhanced Host Controller Interface,EHCI)。
·USB根集线器——提供USB连接端口(俗称USB Port)给USB设各或USB集线器来使用。一部计算机可以同时连接127个USB设各,当然不可能由主机控制器去搜寻某个设备的地址,所以USB系统运用类似计算机存储数据的概念,有“根目录”、“子目录”、“次子目录”等分层方式;而主机控制器只要对根集线器下命令,然后再由根集线器传到正确的设各地址即可。
2.USB集线器
若仅靠USB根集线器则不可能同时连接上127个USB外围设备,所以除了根集线器外,USB系统还支持额外的集线器。这些集线器的功用主要是提供另外的USB连接端口给用户串接设备,有点像网络的HUB集线器—样;而整个USB连接设备方式,有点像金字塔型的架构。每一个连接器上,呈现了一个USB接口。
对于1.x规范集线器来说,重复地接收在PC主机与设各两端的USB数据流,整合处理了电源管理,以及负责对各种状态与控制信息的响应。再者,也避免让全速的数据传输至低速的设各上。但是对于2.0规范集线器来说,做的事情就要比1.x规范的更多,更复杂了。当然,2.0规范集线器支持了高速的特性。此外,不仅只是重复地接收数据外,还必须负责切换低速、全速和高速的传输速率,以及执行其他的功能以确保总线的时间是充分有效地被运用分享。如图4所示,是USB 2.0集线器的示意图,其中,通过路由逻辑来连接设备至适当的路径上。此外,传输翻译器(TransactionTranslator,简称TT)掌握了低速/全速的数据交易,且用来激活数据交易分割的程序。其中,包含了两种分割数据交易的动作:起始分割与完成分割。对前者而言,主机会告诉集线器来起始全速/低速的数据交易;而后者则是主机询问集线器前面的全速/低速数据交易的结果。
图4 USB 2.0集线器的架构
3.USB设备
USB设备,顾名思义,就是指各种类型的USB外围设各。依照目前USB产品的规范,可以将USB设各分为以下三种类型。
·全速设备(full-speed device):如OCD、移动硬盘等设备。这些USB设备的传输速率最高为12 Mbps。
·低速设备(low speed device):如键盘、鼠标等设各。这些USB设备的传输速率
最高为1.5 Mbps。除了速度低于全/高速设各之外,低速设各在某些USB的支持上也受限制,例如:当主机控制器在执行高速处理动作时,低速设备是没有反应的,此点可以避免高速的信号被送到低速的集线器上。
·高速设备(high speed device):USB 2,0所提出的新规范,也应用在如CCD、移动硬盘等设各上。这些USB设各的传输速率最高为480 Mbps。
在这里,有些重要的观念要理清。通常所谓设各的定义是具备一种功能或集线器,但在此有些例外的情形存在,就是复合式(composrte)设各,它同时包含了集线器以及一个或更多的功能。基本上,主机即可视为这种复合式设备,因其集线器与其功能是具有个别实体设各的。由于每一个设各在该总线上拥有其独立的地址,因此对这种复合
式设备,它的每一个集线器与功能都有独立的地址。
另一个重要的设各是多元式(compound)设各。它是多功能的设各,具各了多重、独立的接口,且仅具各一个独立的地址,但是,这种设各却可以根据不同的接口而拥有主机上不同的设备驱动程序。以下,做个简单的比较。
1.复合式设备(composite device)
多组接口,每一个接口相互独立,且都具各不同的驱动程序;但仅具各一个USB地址。例如,具备CCD与照相机功能的USB复合式设各。
2.多元式设备(compound device)
分别功能的集合,每一个具各不同的USB地址,且连接至内部的集线器。例如,将键盘与轨迹球整合在一个产品的包装下。
全面认识USB的技术精髓
本文将从技术的角度来探讨一下USB,有关它的实用部分请参阅本刊1999年第5、7和11期的相关文章。
一个基于计算机的USB系统可以在系统层次上被分为三个部分:即USB主机(USB Host)、USB器件(USB Device)和USB的连接。
所谓USB连接实际上是指一种USB器件和USB主机进行通信的方法。它包括:
●总线的拓扑(由一点分出多点的网络形式):即外设和主机连接的模式;
●各层之间的关系:即组成USB系统的各个部分在完成一个特定的USB任务时,各自之间的分工与合作;
●数据流动的模式:即USB总线的数据传输方式;
●USB的“分时复用”:因为USB提供的是一种共享连接方式,因而为了进行数据的同步传输,致使USB对数据的传输和处理必须采用分时处理的机制。
一、USB的总线拓扑
USB的总线拓扑如图1所示,在USB的树形拓扑中,USB集线器(HUB)处于节点(Node)的中心位置。而每一个功能部件都和USB主机形成唯一的点对点连接,USB的HUB为USB的功能部件连接到主机提供了扩展的接口。利用这种树形拓扑,USB总线支持最多127个USB外设同时连接到主计算机系统。
图1 USB的总线拓扑示意图
一个USB系统仅可以有一个主机,而为USB器件连接主机系统提供主机接口的部件被称为USB主机控制器。USB主机控制器是一个由硬件、软件和固件(Firmware)组成的复合体。一块具有USB接口的主板通常集成了一个称为ROOT HUB的部件,它为主机提供一到多个可以连接其它USB外设的USB扩展接口,我们通常在主板上见到的USB接口都是由ROOT HUB提供的。
USB器件可以分为两种:即USB HUB和USB功能器件(Function Device)。
作为USB总线的扩展部件,USB HUB(图2)必须满足以下特征:
●为自己和其它外设的连接提供可扩展的下行和上行(Downstream and Upstream)端口;
●支持USB总线的电源管理机制;
●支持总线传输失败的检测和恢复;
●可以自动检测下行端口外设的连接和摘除,并向主机报告;
●支持低速外设和高速外设的同时连接。
从以上要求出发,USB HUB在硬件上由两部分组成:HUB应答器(HUB Repeater)和HUB控制器(HUB Controller)。HUB应答器回应主机对USB外设的设置,以及对连接到它下行端口的USB功能部件的连接和摘除(Attached and Detached)的检测、分类,并将其端口信息传送给主机,它也负责如“总线传输失败检测”这样的错误处理;而HUB控制器则提供主机到HUB之间数据传输的物理机制。如同我们所熟知的大多数计算机外设一样,USB HUB也有一个用来向主机表明自己身份的“BIOS”系统。这块位于USB HUB上的ROM,通过USB特征字使主机可以配置这个USB HUB,并监控它的每一个端口。
USB功能器件即可以为主机系统提供某种功能的USB器件,如一个USB ISDN的调制解调器、或是一只USB接口的数字摄像机、USB的键盘或鼠标等。
图2 USB HUB的结构
图3 一个典型的USB功能器件结构框图
USB的功能器件作为USB外设(USB Function),它必须保持和USB协议的完全兼容,并可以回应标准的USB操作。同样,用于表明自己身份的“BIOS”系统对于USB外设也是必不可少的,这在USB外设上被称为协议层。在物理机制上,一个USB外设可以由四部分构成(图3):
●用于实现和USB协议兼容的SIE部分;
●用于存储器件特征字、存储实现外设特殊功能程序及厂家信息的协议层(ROM);
●用于实现外设功能的传感器及对数据进行简单处理的DSP部分;
●将外设连接到主机或USB HUB的接口部分。
根据传输率的不同,USB器件被分为高速和低速两种。低速外设的标准传输率为1.5Mbps,而高速外设的标准传输率为12Mbps。所有的USB HUB都为高速外设,而功能部件则可以根据外设的具体情况设计成不同的传输率,如用于视频、音频传输的外设大都采用12Mbps的传输率,而像键盘、鼠标这样的点输入设备则设计成低速外设。由于USB的数据传输采用数据包的形式,因而使得连接到主机的所有的USB外设可以同时工作而互不干扰。不幸的是,所有这些USB外设必须同时分享USB协议所规定的USB带宽(这个带宽在USB 1.0协议中为12Mbps),虽然USB的分时处理机制可以使有限的USB带宽在各设备之间动态地分配,但如果两台以上的高速外设同时使用这样的连接方法,就会使它们都无法享用到最高的USB带宽,从而降低了性能。这也正是Intel这样的巨头为什么要推出USB 2.0协议的原因(在USB 2.0协议中USB的总线带宽一下子被提高到了480Mbps)。
用于实现外设到主机或USB HUB连接的是USB线缆(图4)。从严格意义上讲,USB线缆应属于USB器件的接口部分。USB线缆由四根线组成,其中一根是电源线VBus,一根是地线GND,其余两根是用于差动信号传输的数据线(D+,D-)。将数据流驱动成为差动信号来传输的方法可以有效提高信号的抗干扰能力(EMI)。在数据线末端设置结束电阻的思路是非常巧妙的,以至对于HUB来判别所连接的外设是高速外设或是低速外设,仅仅只需要检测在外设被初次连接时,D+或D-上的信号是高或是低即可。因为对于USB协议来讲,要求低速外设在其D-端并联一个7.5kΩ的接地电阻,而高速外设则在D+端接同样的电阻。在加电时,根据低速外设的D-线和高速外设的D+线所处的状态,HUB就很容易判别器件的种类,从而为器件配置不同的信息。图5表明了一个典型的高速外设的连接状况。为提高数据传输的可靠性、系统的兼容性及标准化程度,USB协议对用于USB的线缆提出了较为严格的要求。如用于高速传输的USB线缆,其最大长度不应超过5米,而用于低速传输的线缆则最大长度为两米,每根数据线的电阻应为标准的90Ω。
USB系统可以通过USB线缆为其外设提供不高于+5V、500mA的总线电源。那些完全依靠USB线缆来提供电源的器件被称为总线驱动器件(Bus-powered device),而自带电源的器件则被称为自驱动外设(Self-powered device)。需要注意的是,当一个外设初次连接时,器件的配置和分类并不使用外设自带的电源,而是通过USB线缆提供的电源来使外设处于Powered状态。
无论在软件还是硬件层次上,USB主机都处于USB系统的核心。主机系统(图6)不仅包含了用于和USB外设进行通信的USB主机控制器及用于连接的USB接口(SIE),更重要的是主机系统是USB系统软件和USB客户软件的载体。
总而言之,USB主机软件系统可以分为三个部分:
●客户软件部分(CSW),在逻辑上和外设的功能部件部分进行数据的交换;
●USB系统软件部分(即HCDI),在逻辑和实际中作为HCD和USBD之间的接口;
●USB主机控制器软件部分(即HCD和USBD),用于对外设和主机的所有USB有关部分的控制和管理,包括外设的SIE部分、USB数据发送接收器(Transreceiver)部分及外设的协议层等。
图4 USB线缆
图5 高速外设的USB线缆和电阻的连接图
图6 USB主机系统的结构及各部分之间的关系
二、USB的“分时复用”和电源管理
当一个USB外设初次接入一个USB系统时,主机就会为该USB外设分配一个唯一的USB地址,并作为该USB外设的唯一标识(USB系统最多可以分配这样的地址127个),这称为USB的总线列举(Bus Enumeration)。USB使用总线列举方法在计算机系统运行期间动态检测外设的连接和摘除,并动态地分配USB地址,从而在硬件意义上真正实现“即插即用”和“热插拔”。
在所有的USB信道之间动态地分配带宽是USB总线的特征之一。当一台USB外设在连接(Attached)并配置(Configuration)以后,主机即会为该USB外设的信道分配USB带宽;而当该USB外设从USB系统中摘除(Detached)或是处于挂起(Suspended)状态时,则它所占用的USB带宽即会被释放,并为其它的USB外设所分享。这种“分时复用”(Scheduling the USB)的带宽分配机制大大地提高了USB带宽利用率。
作为一种先进的总线方式,USB提供了基于主机的电源管理系统。USB系统会在一台外设长时间(这个时间一般在3.0ms以上)处于非使用状态时自动将该设备挂起(Suspend),当一台USB外设处于挂起状态时,USB总线通过USB线缆为该设备仅仅提供500μA以下的电流,并把该外设所占用的USB带宽分配给其它的USB外设。USB的电源管理机制使它支持如远程唤醒这样的高级特性。当一台外设处于挂起状态(Suspended Mode)时,必须先通过主机使该设备“唤醒”(Resume),然后才可以执行USB操作。
USB的这种智能电源管理机制,使得它特别适合如笔记本电脑之类的设备的应用。
三、USB的数据传输模式
图7 帧开始数据包在USB数据传输中的分布
图8 USB的通信流及信道
图9 同步字段
图10 PID字段
我们知道,USB总线是一种串行总线,即它的数据是一个bit一个bit来传送的。虽然USB总线是把这些bit形式的数据打成数据包来传送,但数据的同步也是必不可少的。USB 1.0/1.1协议规定,USB的标准脉冲时钟为12MHz,而其总线时钟为1ms,即每隔1ms,USB器件应为USB线缆产生一个时钟脉冲序列。这个脉冲序列称为帧开始数据包(SOF,如图7所示),主机利用SOF来同步USB数据的发送和接收。由此可见,对于一个数据传输率为12Mbps的外设而言,它每一帧的长度为12000bit;而对于低速外设而言,它每一帧的长度仅有1500bit。USB总线并不关心外设的数据采集系统及其处理的速率,无论对于怎样的数据产生或是接收,它总是以外设所事先规定的USB标准传输率来传输数据。这就要求外设厂商必须在数据采集或接收系统和USB协议系统(SIE)之间,设置大小合适的先入先出模式(FIFO)来对数据进行缓存。
在USB系统中,数据是通过USB线缆采用USB数据包从主机传送到外设或是从外设传送到主机的。在USB协议中,把基于外设的数据源和基于主机的数据接收软件(或者方向相反)之间的数据传输模式称为信道(Pipe)。信道分为流模式的信道(Stream Pipe)和消息模式的信道(Message Pipe)两种。信道和外设所定义的数据带宽、数据传输模式以及外设的功能部件的特性(如缓存大小、数据传输的方向等)相关。只要一个USB外设一经连接,就会在主机和外设之间建立信道。对于任何的USB外设,在它连接到一个USB系统中,并被USB主机经USB线缆加电使其处于Powered状态时,都会在USB主机和外设的协议层(ROM)之间首先建立一个称为Endpoint 0的消息信道,这个信道又称为控制信道,主要用于外设的配置(Configuration)、对外设所处状态的检测及控制命令的传送等。信道方式的结构使得USB系统支持一个外设拥有多个功能部件(用Endpoint 0、Endpoint 1.。.Endpoint n这样的方法进行标识),这些功能部件可以同时地、以不同的数据传输方向在同一条USB线缆上进行数据传输而互不影响(图8)。比如一个USB的ISDN MODEM,就可以同时拥有一个上传的信道和一个下载的信道,并能同时很好地工作。
为实现多外设、多信道地同时工作,USB总线使用数据包的方式来传输数据和控制信息。
USB数据传输中的每一个数据包都以一个同步字段开始(图9),它的最后两个bit作为PID字段开始的标志。紧跟在同步字段之后的一段8bit的脉冲序列称为PID(数据包标识字段,如图10所示),PID字段的前四位用来标记该数据包的类型,后四位则作为对前四位的校验。PID字段被分为标记PID(共有IN、OUT、SETUP或SOF四种)、数据PID(DATA0或DATA1)、握手PID(ACK、NAK或STALL)及特殊PID等。主机根据PID字段的类型来判断一个数据包中所包含的数据类型,并执行相应的操作。
当一个USB外设初次连接时,USB系统会为这台外设分配唯一的USB地址,这个地址通过地址寄存器(ADDR)来标记,以保证数据包不会传送到别的USB外设。7bit的ADDR使得USB系统最大寻址为127台设备(ADDR字段,如图11所示)。由于一台USB外设可能具有多个信道,因而在ADDR字段后会有一个附加的端点字段(Endpoint Field,简标为ENDP)来标记不同的信道(图12)。所有的USB外设都必须支持Endpoint 0信道,用0000来标记。对于高速设备,可以最大支持16个信道,而低速设备在Endpoint 0之外仅能有一个信道。
数据字段作为一次USB数据传输的中心目的,在一个USB数据包中可以包含0~1203Byte的数据(图13)。而帧数量字段则包含在帧开始数据包中,对有的应用场合,可以用帧数量字段作为数据的同步信号。
为保证控制、块传送及中断传送中数据包的正确性,CRC校验字段被引用到如标记、数据、帧开始(SOF)这样的数据包中。CRC校验(数据冗余校验)可以给予数据以100%的正确性检验。
图11 数据包的ADDR字段
图12 端点(Endpoint)字段
图13 USB的数据字段
《下》
本文介绍USB总线的数据传输模式、USB数据包的格式,以及USB外设的组成与结构等内容。
一、USB数据包的格式
在USB系统中,有四种形式的数据包--标记数据包(Token Packets)、DATA数据包(DATA Packets)、帧开始数据包(SOF Packets)和握手数据包(Handshake Packets)。
1.标记数据包由PID、ADDR、ENDP和CRC5四个字段组成(图1)。它因为PID字段的不同而分为输入类型(IN)、输出类型(OUT)和设置类型(SETUP)三种。标记数据包处于每一次USB传输的DATA数据包前面,以指明这次USB操作的类型(PID字段标记)、操作的对象(在ADDR和ENDP字段中指明)等信息。5bit的CRC校验位用来确保标记数据包的正确性。
2.我们已经指出,USB主机会每隔1ms在USB总线上产生一个SOF的USB帧同步信号,SOF数据包包含了这个脉冲序列的实际内容(图2),它由SOF格式的PID字段、帧数量字段和5bit的CRC校验码组成。主机利用SOF数据包来同步数据的传送和接收。
3.用于传输真正数据的DATA数据包(图3),因为PID的不同可以分为DATA0和DATA1两种。DATA0为偶数据包,DATA1为奇数据包。DATA数据包的奇偶性分类易于数据的双流水处理,而用于控制传输的DATA数据包总是以DATA0来传送数据。
4.握手数据包仅仅包含一个PID字段(图4),ACK形式的PID表明此次USB传输没有发生错误,数据已经成功的传输;而NAK形式的握手数据包则向主机表明此次USB传输因为CRC校验错误或别的原因而失败了,从而使得主机可以进行数据的重新传输;STALL形式的回应向主机报告外设此刻正处于挂起状态而无法完成数据的传输。
需要指出的是,每个数据包的结束都会有两个bit宽的EOP字段作为数据包结束的标志(图5),EOP在差模信号中表现为D+和D-都处于“0”状态。对于高速USB外设而言,这个脉冲宽度在160~175ns之间,而低速设备则在1.25~1.50μs之间。无论其后是否有其它的数据包,USB线缆都会在EOP字段后紧跟1bit的总线空闲位。USB主机或外设利用EOP来判断一个数据包的结束。
图1 标记数据包的组成
图2 SOF数据包的格式
图3 DATA数据包的格式
图4 握手数据包
图5 EOP字段在差模信号中的电压表现
二、USB总线的数据传输模式
在前面我们已经提到,每一个USB信道对应着一个特定的USB传输模式,根据不同的需要,USB外设可以为USB信道指定不同的USB传输模式。USB总线支持四种数据传输模式:
1.控制传输模式(图6),控制传输用于在外设初次连接时对器件进行配置;对外设的状态进行实时检测;对控制命令的传送等;也可以在器件配置完成后被客户软件用于其它目的。Endpoint 0信道只可以采用控制传送的方式。
2.块传送模式(图7),块传送用于进行批量的、非实时的数据传输。如一台USB扫描仪即可采用块传送的模式,以保证数据连续地、在硬件层次上的实时纠错地传送。采用块传送方式的信道所占用的USB带宽,在实时带宽分配中具有最高的优先级。
3.同步传输模式(图8),同步传输适用于那些要求数据连续地、实时地、以固定的数据传输率产生、传送并消耗的场合,如数字录像机等。为保证数据传输的实时性,同步传输不进行数据错误的重试,也不在硬件层次上回应一个握手数据包,这样有可能使数据流中存在数据错误的隐患。为保证在同步传输数据流中致命错误的几率小到可以容忍的程度,而数据传输的延迟又不会对外设的性能造成太大的影响,厂商必须为使用同步传输的信道选择一个合适的带宽(即必须在速度和品质之间做出权衡)。
4.中断传输模式(图9),对于那些小批量的、点式、非连续的数据传输应用的场合,如用于人机交互的鼠标、键盘、游戏杆等,中断传输的方式是最适合的。
图7 块传送的流程
图8 同步传输的流程
图9 中断传输的流程
三、USB外设的组成与结构
本文无意详细论述USB外设(本部分所说的USB外设如无特别说明均指USB功能器件)的设计细节,而只想介绍USB功能器件的一般组成,以此来帮助读者了解USB外设的基本软硬件构成,以便了解USB外设的工作过程和原理。
组成外设的传感器件和DSP因为外设的具体应用各异而有所不同。如对于一台CMOS数字摄像机(如Creative的WebCam),它的CMOS光电耦合器及其DSP部分并不因为使用什么样的接口方式而有所改变(如早期的电脑眼皆采用ECP的并口增强模式来进行图像数据的传输,而现在几乎都是USB接口)。因而本文的重点是阐述USB外设接口的部分,即USB Device Microcontroller(USB器件微控制器)。图10表明了一个USB外设总线接口的详细组成框图。
USB总线是以差模驱动的方式来进行数据传输的,但在数据包发送之前,USB协议规定必须使用NRZI的编码方式来对数据进行编码。当然,在USB外设中,用于解码的器件对外设来说也是必不可少的。NRZI的编码协议其实很简单,它采用的是逢“1”保持,逢“0”跳变的原则(图11),而NRZI的解码则采用相反的操作。
为保证数据流中有足够的信号变化,USB协议规定了Bit stuffing(加填充位)的原则,即如果信号流中连续出现六位以上的数据“1”,则每隔六位,必须插入一个“0”,然后才进入NRZI编码。图12是一串原始数据及其加填充位后和NRZI编码后的数据格式对比。
图10 USB外设总线接口的详细组成框图
图11 NRZI数据编码
图12 原始数据和加填充位后及NRZI编码后的数据格式对比
SIE(Serial interface Engine)是USB外设最重要的硬件组成部分之一,它主要由四部分组成:
1.硬件上用来完成NRZI编/解码和加/去填充位操作的,NRZI/Bit Buffing和NRZO/Bit Unstuffing的部分;
2.硬件上产生数据的CRC校验码并对数据包进行CRC校验的CRC check & Generator部分;
3.用来将并行数据转化成USB串行数据的并/串转换部分(Packet Encode),将主机发送的USB数据包转化成可以识别的并行数据的串/并转换部分(Packet Decode);
4.检测和产生SOP(即每个数据包的同步字段)和EOP信号的部分。
USB外设使用一片ROM来存储关于该外设工作的一些重要信息,这被称为USB的协议层(Protocol Layer),它不仅存储了诸如厂家识别号、该外设所属的类型(是HUB还是Function,是低速还是高速设备)、电源管理等常规信息,更重要的是还存储了外设的设备类型、器件配置信息、功能部件的描述、接口信息等,其存储方式都采用特征字(Descriptors)的方式。USB主机通过在外设的协议层和主机之间建立Endpoint 0信道、采用控制传输的方式对这些信息进行存取。特征字采用USB协议所规定的结构和代码排列(关于特征字的详细信息请参阅USB协议标准)。厂家也可以在该ROM的剩余空间中存储特定的程序或信息,以帮助外设完成特定的工作。协议层是一台USB外设能够被主机正确识别和配置,并正常工作的前提。可以说,协议层是一台USB外设的固件(Firmware)中心。
我们知道,数据采样率因采样精度和使用的不同场合而不同,如对于音频应用,就可以采用22.05kHz或44.1kHz的采样率,而这个时钟并不和USB标准时钟对应。因而在实际应用中,为保证采集到的数据无丢失地打包和传送,必须在SIE和数据采集部件(对诸如音箱或打印机等外设则为数据消耗部件)之间设立FIFOs,以便对数据进行缓存。对于采用块传送和同步传送的外设而言,FIFOs的作用显得尤为重要。例如一台采用同步传输的USB数字摄像机(现在市场上有很多这种类型的产品),我们假设它的CCD为400×300像素,那么为保证数据正确地压缩、传输和接收,直到以后的解压缩及处理,在动态采集中,FIFOs至少要存储一帧图像,即要求FIFOs有400×300=12KB的容量。
在USB外设中,用于实现和USB线缆无缝连接的USB传输接收部分(Transreceiver)是必不可少的,它不仅要在电气和物理层面上实现和USB线缆的连接,而且要完成对数据包的差模驱动或分离的操作。
以上我们简述了USB外设接口的硬件组成,那么在完成USB数据传输的过程中,这些硬件又是如何配合工作并和位于主机的软硬件交互,以完成数据传输的呢?
前面已经提到,USB总线采用总线列举的方法来标记和管理外设所处的状态,当一台USB外设初次连接到USB系统中后,通过8个步骤来完成它的初始化:
1.USB外设所连接的HUB(ROOT HUB或扩展HUB)检测到所连接的USB外设并自动通知主机,以及它的端口状态的变化,这时外设还处于禁止(Disabled)状态;
2.主机通过对HUB的查询以确认外设的连接;
3.现在,主机已经知道有一台新的USB外设连接到了USB系统中,然后,它激活(Enabled)这个HUB的端口,并向HUB发送一个复位(Reset)该端口的命令;
4.HUB将复位信号保持10ms,为连接到该端口的外设提供100mA的总线电流,这时该外设处于Powered状态,它的所有寄存器被清空并指向默认的地址;
5.在外设分配到唯一的USB地址以前,他的默认信道均使用主机的默认地址。然后主机通过读取外设协议层的特征字来了解该外设的默认信道所使用的实际的最大数据有效载荷宽度(即外设在特征字中所定义的在DATA0数据包中数据字段的长度)。
6.主机分配一个唯一的USB地址给该外设,并使它处于Addressed状态;
7.主机开始使用Endpoint 0信道读取外设ROM中所存储的器件配置特征字,这可能会花去几帧的时间;
8.基于器件配置特征字,主机为该外设指定一个配置值,这时,外设即处于配置(Configured)状态了,它所有的端点(Endpoint)这时也处于配置值所描述的状态。从外设的角度来看,这时该外设已处于准备使用的状态。
在一台外设能被使用之前,它必须被配置。“配置”即主机根据外设的配置特征字来定义器件的配置寄存器,以便规定外设的所有Endpoint的工作环境。如某信道所采用的数据传输方式,该外设所属的器件“基类(Class)”、“派生类(SubClass)”和C++等,从而通过基于主机的USB系统软件或客户软件对外设进行控制。
当一台USB外设配置好以后,即会进入到挂起(Suspend)状态,直到它开始被使用。
必须指出的是,一台USB外设一旦配置好,它的每一个特定的信道只能使用一种数据传输方式。Endpoint 0信道只能采用控制传送的方式,主机通过Endpoint 0来传送标准的USB命令,完成诸如读取器件配置特征字、控制外设对数据的采集、处理和传送等任务,并可以通过Endpoint 0来检测和改变外设所处的状态(如对外设的远端唤醒、挂起和恢复等)。
对于一台采用同步传输的数字摄像机来说,数据传输的过程如下:
1.应用软件(CSW)在内存中开辟数据缓冲区,并通过标准USB命令字向外设发出数据请求(IRPs);
2.主机USB系统软件通过对该IRPs的翻译形成Token数据包发送到外设,这时主机进入等待状态;
3.外设对数据包进行NRZI解码和Bit Unstuffing操作及CRC校验,确认后接收主机PID字段中所包含的命令并开始采集数据。
4.采集到的并行数据首先进入FIFOs,并通过并/串转换部件形成串行脉冲;
5.根据器件配置寄存器的要求对数据进行符合条件的分割,配置数据包的PID字段等以形成原始数据包。
6.通过CRC校验产生器对每一个数据包生成CRC校验码字段,SOP & EOP信号产生器为该数据包加入同步字段头和数据包结束符;
7.数据包的NRZI编码和Bit Stuffing操作;
8.使用收发器(Transreceiver)将数据流驱动到USB线缆上。
9.主机控制器将USB数据转化成为普通的“纯”图像数据送到数据缓冲区以进行数据的进一步处理;如果是控制传输、块传输或中断传输方式,在数据被成功传送后,主机还会向外设发送ACK的握手数据包作为回应。
图13简单描绘了非同步数据传输的请求和传送过程(在同步传输中没有Handshake部分)。
图13 非同步数据传输的请求和传送过程
四、结束语
至此,我们已从几个方面较详细地介绍了USB系统的软硬件构成及USB的数据传输协议。USB可以说是开辟了计算机外设接口的新纪元。它把人们从繁杂的连线、不同的接口标准和恼人的中断冲突中解放出来;
使“PnP”和“热插拔”这样的特性不再只是口号;它大大扩展了计算机可连接的外设数目;它的智能电源管理有效地降低了手持电脑的电源损耗……USB正在成为市场的热点,越来越多的外设生产厂家将自己的产品转向USB接口。而USB 2.0协议的推出,无疑对USB技术的发展起到了推波助澜的作用。
在如鼠标、键盘、手写板或是游戏杆等人机交互的应用场合;如扫描仪、数码相机、移动存贮设备、数字摄像机等数据输入应用场合,USB无疑是替代传统串/并口的最佳接口方式,它们使得USB的优点得到了充分发挥。但对诸如视频或音频输出这样的场合,USB也真的适用吗?我们知道,像Sound Blaster Live!这样的声卡正是因为它在硬件上实现了波表合成和EAX环境音效等高级特性,才使我们在几乎小于1%的资源占用率下就能听到“天籁之音”,同时又能在美仑美奂的3D环境中飚车。然而USB也并非万能,例如我们看到在市场上热卖的“USB音箱”号称可以“省掉一块声卡!”。但由于USB接口并不对数据进行任何处理,因而数据处理的任务完全交给了CPU和软件,从而这种音箱造成了惊人的资源占用率,且从声音的表现上看也与声卡有着天壤之别。所以说,USB并不是“包治百病”的。
USB总线自面世第一代开始,就对电气性能的要求特别高,特别是信号完整性。随着USB总线的不断升级,速率也是成倍的增长,从当年USB1.0的1.5Mbps...
USB总线自面世第一代开始,就对电气性能的要求特别高,特别是信号完整性。随着USB总线的不断升级,速率也是成倍的增长,从当年USB1.0的1.5Mbps...
USB设备进入正常工作状态即是激活(ACTIVE)状态,此时USB设备的各项功能应可以正常工作。激活状态时USB设备的一个最基本的工作状态。
USB TYPE-C规范里面,还规定了一种带Emark 芯片的Cable,这种Cable的CC2上,有一个1K的下拉电阻,用来告知DFP端的CC识别芯片...
2019-07-26 标签:USB总线Raspberry Pi树莓派 1.0万 0
什么是USB HOST、USB Slave和USB OTG?它们之间有什么区别?
什么是USB HOST、USB Slave和USB OTG?它们之间有什么区别? USB(通用串行总线)是一种用于连接设备的通信接口标准,它允许设备之间...
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管...
CH344是一款USB总线的转接芯片,实现USB转四个异步串口UART0/1/2/3功能,用于为计算机扩展异步串口,或者将普通的串口设备或者MCU直接升...
产品型号:USB-1603(USB2.0) 产品优点: 1、USB2.0总线,驱动支持XP/WIN7/WIN10/Linux; 2、16路模拟量16位2...
本文以光栅位移传感器检测系统的设计背景,详细介绍了系统的硬件、软件设计方法。光栅位移传感器是进行高精度位移测量的光电转换器,它将位移微变量转换为多路正弦光栅信号
编辑推荐厂商产品技术软件/工具OS/语言教程专题
电机控制 | DSP | 氮化镓 | 功率放大器 | ChatGPT | 自动驾驶 | TI | 瑞萨电子 |
BLDC | PLC | 碳化硅 | 二极管 | OpenAI | 元宇宙 | 安森美 | ADI |
无刷电机 | FOC | IGBT | 逆变器 | 文心一言 | 5G | 英飞凌 | 罗姆 |
直流电机 | PID | MOSFET | 传感器 | 人工智能 | 物联网 | NXP | 赛灵思 |
步进电机 | SPWM | 充电桩 | IPM | 机器视觉 | 无人机 | 三菱电机 | ST |
伺服电机 | SVPWM | 光伏发电 | UPS | AR | 智能电网 | 国民技术 | Microchip |
开关电源 | 步进电机 | 无线充电 | LabVIEW | EMC | PLC | OLED | 单片机 |
5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
NB-IoT | LoRa | Zigbee | NFC | 蓝牙 | RFID | Wi-Fi | SIGFOX |
Type-C | USB | 以太网 | 仿真器 | RISC | RAM | 寄存器 | GPU |
语音识别 | 万用表 | CPLD | 耦合 | 电路仿真 | 电容滤波 | 保护电路 | 看门狗 |
CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
SDI | nas | DMA | HomeKit | 阈值电压 | UART | 机器学习 | TensorFlow |
Arduino | BeagleBone | 树莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 华秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |