在我们设计一个USB装置,我们必须要了解USB界面的一些标准与规格。这样我们设计与发展时,才有所考虑与依据
USB基本概念
若以USB的字面意思来看,其英文全称是Universal Serial Bus,而直接翻译成中文是『通用串行总线』。这是由7家包括了 Compaq、迪吉多、IBM、英特尔、微软、NEC以及北方电讯(加拿大)等主要的计算机与电子科技大厂所研发与规划出来的。
USB是一种标准的连接界面,允许把外面的设备与计算机连接时,不必重新配置规划系统,也不必打开机壳,另外调整界面卡的指拨开关。而连接上计算机时,计算机会自动识别这些接口设备,并且配附适当的驱动程序,无需使用者再另外重新设定。 以下,列出USB的诸多特性与优点:
1. USB界面统一了各种接口设备的连接头,包含通讯界面、打印机界面、显示器输出、音效输出入装置、储存设备等,都采用相同的USB界面规格。USB界面就像是「万用接头」,只要将插头插入,一切就可迎刃而解。
2. 即插即用(Plug-and-Play),并能自动侦测与配置系统的资源。再者,无须系统资源的需求。也即是,USB装置不需要另外设定IRQ中断、I/O地址,以及DMA等的系统资源。
3. 具有「热插拔」(Hot Attach &Detach)的特性,在操作系统的已开机的执行状态中,随时可以插入或拔离USB装置,而不需再另外关闭电源。
4.USB界面规格1.1中的12Mbps的传送速度可满足大部分的使用需求。当然,快速的2.0规格,提供更佳的传输率。
5. USB最多可以连接127个接口设备。因为USB界面使用7-bit的寻址字段,所以2的7次方等于128。若扣掉USB主机预设给第一次接上的接口设备使用,还剩127个地址可以使用。因此一部计算机最多可以连接127个USB装置。
简而言之,对于USB整体功能就是简化外部接口设备与主机之间的联机,并利用一条传输缆在线来串接各类型的接口设备(如打印机之并列端口,调制解调器之串行端口),解决了现今主机后面一大堆缆线乱绕的困境。它最大的
好处是可以在不需要重新开机的情况之下安装硬件。而USB在设计上可以让高达127个接口设备在总线上同时运作,并且拥有比传统的RS-232串行与并列界面快上许多的数据传输速度。
USB的历史沿革
USB在1995年被提出,并由Compaq、Digital Equipment Corp.(现在属于 Compaq)、IBM、Intel Corp.、Microsoft Corp.、NEC和Northern Telecom七个计算机与通讯工业领先的公司所组成的联盟所定义和加以推广。同一年,该联盟建立了USB-IF(实施者论坛,以下简称USB-IF)来加速采用USB标准的高质量兼容设备的开发。
在1996年,USB-IF公布了USB规范1.0,这是第一个为所有的USB产品提出设计要求的标准。1998年,在进一步对以前版本的标准进行阐述和扩充的基础上,发布了USB标准的1.1规格。而此时联盟仅剩四个核心的成员公司,它们是Compaq、Intel、Microsoft,以及NEC等公司。由于USB的方向已偏离了通讯的相关领域,使得IBM和Northern Telecom退出了该联盟。如此,也造成了目前应用于电话的USB设备的发展仍然稍嫌缓慢一些。
第三个版本的USB 2.0是发布于1999。此时,Hewlett Packard、Philips和Lucent等三个公司加入了USB-IF联盟,使得联盟的核心成员数重新又恢复为七个。之后,随着USB的普及与推广,USB的成员一直持续不断地增加,如今已是非常庞大的推广组织了。 USB1 .X USB 2.0
Compaq Compaq Intel Intel USB 1.1
Microsoft Microsoft 当前应用USB1.1的接口设备应用两种不NEC NEC 同的速度:12Mbps(全速)和1.5Mbps(慢速)。
IBM Lucent 其中,慢速主要是应用于人机界面(HID)上。这
DEC HP 是一个用于连接鼠标、键盘、游戏杆等设备的
Northern Philips USB的群组。而尽管当前的USB 1.1的最大频宽速度为12Mbps,但是主机端应用程序与其它的接口设备则占据了部分的频宽。
USB 2.0
虽然USB号称可以热插拔、随插即用、最多同时连接127个装置等功能。但是其中还是有它的若干缺点,例如热插拔多次后往往会造成系统不正常当机,以及连接过多的装置就会导致传输速度变慢等问题(USB的传输频宽是由装置来共同分享的)。因此,如何改进这些缺点便成为USB-IF推广组织所要努力的目标。
在USB接口设备不断地被广泛应用后,许多的装置,如视讯会议的CCD,或是像外接式硬盘、光盘刻录机、扫描仪、卡片阅读机便成为USB界面的一个非常流行的应用。 USB 2.0利用传输时序的缩短(微讯框)以及相关的传输技术,将整个传输速度从原本12Mbps拉到480Mbps,整整提升了40倍。而在兼容性方面,USB 2.0采用的是往下兼容的做法。未来USB 2.0仍可向下支持目前各种以USB 1.1为传输界面的各种周边产品,也就是旧有的USB 1.X版传输线,USB HUB依旧可以使用。不过若是要达到480Mbps的速度,还是需要使用USB 2.0规格的USB HUB。当然,各个周边也要重新嵌入新的芯片组以及驱动程序才可以达到这个功能。也就是说,若需要使用高速传输设备的话,就接上USB 2.0版的USB HUB。而只要低速传输需求的周边(如鼠标,键盘等),则接上原有的USB HUB,便可以高低速装置共存的目的。对于旧有的USB 1.1规格设计产品的传输速度最高仍仅能维持12Mbps。
USB 2.0对许多消费性电子应用,如视讯会议CCD、扫瞄器、打印机以及外部储存装置(硬盘以及光驱)来说拥有相当大的吸引力。 而在USB 2.0问市之后,Intel公司发展并免费开放一套高速控制器标准规格技术:增强型主机控制器界面规格(Enhanced Host Controller Interface,简称EHCI)。在EHCI规格中,主机控制器能以480 MHz速度来传送数据,所以在主机控制器与全速或是低速周边装置之间,就必须搭配旧型的控制器或高速集线器才能发挥整体的效能出来。
USB1.1与2.0之比较
若稍前已对USB 1.1有相当的了解,可是随着新的USB 2.0规格的修订,或许会感到更新速度得太快。因此以下,特别针对USB 1.1与2.0规格与特性,作个个别条列式的比较与分析,让读者先有若干的概念与了解,然后在稍后的章节中作再深入地介绍。首先,若以1.x规格为基础的话,USB 2.0多了:
1. 提供一个较高执行成效的界面。
2. 运用所存在的USB 1.1连接器与全速的缆线。
3. 设定微讯框的规格,其为USB 1.x讯框的1/8倍。
4. USB 2.0 集线器能以装置-by-装置为基础,协调出连接的速 度,并且建立出适当的链接方式。
5. 位于下游埠USB 2.0集线器能够支持任何速度的装置连接上来。
因此,USB2.0是以USB 1.1规格作为基础,并加以延伸,其中,包含了: 1. 具备USB 1.1的所有功能。 2. 高速讯号模式。 3. 侦测高速能力的协议。 4. 切入/脱离高速的协议。 5. 侦测装置脱离的机制。
6. 严谨地符合低/全速规格,但仅针对高速兼容的周边埠。 7. USB规格7.2章节 (“电源消耗”的部分)其规格是不变的。
若是要与USB 2.0高速装置兼容的话,则: 1. 需要支持全速信号。
2. 需要支持至少以全速来作装置列举的动作。 3. 需要符合严谨地全速电器的规格。 4. 决不能支持低速模式。
如表格1所示,显示了USB 1.1与2.0规格之间的相互操作的对应矩阵表。其中,我们知道若要真正地取得USB 2.0高速的特性,必须采用高速的USB主机控制器,高速的装置,以及高速的集线器。也即是,全部都是高速的规格才可以。
表格1 USB1.x与2.0规格中,主机控制器图,装置与集线器的对应矩阵表
最后,我们要提及的是,在高速的规格协议中增加了: 1. 高速”Ping”流程控制。 2. 分割数据交易。
3. 增加了规格第八章的部分。
USB与IEEE 1394之比较
这是大家都会比较分析的问题,在此稍微简述一下。 1394与USB同为串行(Serial)传输界面埠,其中,1394b的格式可支持400Mbps数据传输速率,比USB1.1规格快了33倍,而且最多可串接至63部装置。目前在市面上,除了数字视讯机器开始使用外,计算机周边装置也陆续采用,如目前较常见的外接式硬盘等。而有一些产品,甚至整合USB与1394界面成为comb的装置,如此其使用更为方便了。
而随着USB 2.0产品的推出,是否意味着目前已渐趋成熟的IEEE1394会被淘汰掉呢?基本上,USB与IEEE1394是使用在不同的应用领域,虽然USB 2.0的速度已经追上目前IEEE1394的传输速度。不过,新一代IEEE1394的规格已经制定出来,每秒的传输速度最高将可达到800MB。因此,未来IEEE1394将适用数字影像编辑(DV)等需要高速传输界面的消费性电子产品上,如数字录放机。而USB 2.0的界面则可望成为未来计算机周边产品的主要传输界面。当然,USB的产品大部份还是以鼠标、键盘以及游戏杆等慢速的人工界面装置为主。
表格2 1394与USB比较表格
表格3 各种界面比较表格
USB的总线结构
USB的总线结构是采用阶梯式星状(tiered star)的拓仆(topology)结构,如图2所示。每一个星状的中心是集线器,而每一个装置可以透过集线器上的埠来加以连接。从图中可以看到USB的装置包含了两种型态:USB集线器与USB装置。位于最顶端的就是主机端(Host)。从主机端的联机往下连接至集线器,再由集线器按阶梯式,以一层或一阶的方式往下扩展出去,再连接下一层的装置或是另一个集线器上。而事实上,集线器也可视为一种装置。而其中最大阶层数为6层(包括计算机内部的根集线器)。每一个星状的外接点的数目可以加以变化,一般集线器具有2,4,或是7个埠。
在此,主机端通常是指PC主机。当然,主机端因具有根集线器,因此
也含有集线器的功能。而集线器是在USB规格中特别定义出来的周边装置,除了扩增系统的连接点外,还负责中继(repeat)上游 / 下游的讯号以及控制各个下游埠的电源管理。
至于另一个装置,即是我们常见的周边装置设备。但在USB规格书中,称这种装置为“功能”(Functions),其意谓着,此系统提供了某些的“能力”,例如具有键盘,或是鼠标等功能。当然不同的周边装置可以具有不同的功能。
图 1 USB 1.1与USB 2.0装置与集线器一起工作的拓仆结构
此外,当USB2.0与1.1的装置与集线器在一起使用时,如何才能呈现出最佳的USB 2.0高速频宽的特性出来?如下图1所示,当USB 2.0与1.1规格的装置混合使用时,整个总线上交杂着,高速/全速的装置与集线器。而如图2所示的,唯有在USB 2.0集线器与USB 2.0装置的连接下,才具备高速总线频宽的特性。
图2 具备USB 2.0高速总线特性连接示意图
USB基本架构
根据USB的总线架构,我们可以将一般USB系统的基本架构分为下列三个主要的部分:
1. USB主机控制器 / 根集线器 2. USB集线器 3. USB装置
图3 USB总线的基本架构
USB主机控制器/根集线器(Host Controller/Root 集线器)
所有在USB系统上的沟通都是在软件控制下由PC主机启动。而PC主机硬件包括USB主机控制器(USB Host Controller)与USB根集线器(USB Root 集线器)两种。
而如下图4所示,在我们Windows 98与ME操作系统下,计算机上的系统内容-装置管理员中所显示的“通用序列总线控制卡”内,包含了两组下列所示的项目:
1. Standard Universal PCI to USB Host controller-主机控制器 2. USB Root 集线器-USB根集线器
当然,大部份的计算机仅有一组而已。若是操作系统中,未含盖类似的装置讯息画面的话,则代表此主机并未支持USB界面。而我们可能就必须另外购置USB界面的扩充卡来加以使用。而笔记型计算机则需使用PCMCIA界面的扩充卡。相同的方式,若是读者需要将原先USB 1.1主机控制器的规格升级为USB 2.0的话,也同样需购置USB 2.0的扩充卡。
图4 装置管理员下的”通用序列总线控制卡”所包含的项目(USB 1.1与2.0)
USB集线器(USB HUB)
若仅靠USB根集线器是不可能同时连接上127个USB周边,所以除了根集线器外,USB系统还支持额外的集线器。这些集线器的功用主要是提供另外的USB连接端口供我们串接装置,有点像网络的集线器集线器一样。而整个USB连接装置方式,有点像金字塔型的架构。每一个连接器上,呈现了一个USB埠。
对于1.x规格集线器来说,重复地接收在PC主机与装置两端的USB数据流,整合处理了电源管理,以及负责对各种状态与控制讯息的响应。再者,也避免让全速的数据传输至低速的装置上。但是对于2.0规格集线器来说,作得事情就要比1.x规格的更多,更复杂了。当然,2.0规格集线器支持了高速的特性。此外,不仅只是重复地接收数据外,还必须负责切换低速,全速以及高速的传输速率,以及执行其它的功能以确保总线的时间是充分有效地被运用分享。如图5所示,是USB 2.0集线器的示意图,其中,透过路由逻辑来连结装置至适当的路径上。此外,传输转译器(Transaction
Translator,简称TT)掌握了低速/全速的数据交易,且用来启动数据交易分
割的程序。其中,包含了两种的分割数据交易的动作:启始分割与完成分割。对前者而言,主机会告诉集线器来启始全速/低速的数据交易。而后者则是主机询问集线器前面的全速/低速数据交易的结果。
图5 USB 2.0集线器的架构
USB装置(USB Devices)
顾名思义,就是指各种类型的USB周边。也即是具备某种function(功能)的装置。而依照目前USB产品的规格,可以将USB装置分为以下三种类型:
全速装置(full-Speed Devices):如CCD、外接式硬盘等装置。这些USB装置的传输速率最高为12 Mbps/s。
低速装置(Low-Speed Devices):如键盘、鼠标等装置。这些USB装置的传输速率最高为1.5 Mbps/s。除了速度低于全/高速装置之外,低速装置在某些USB的支持上也受限制,例如当主机控制器在执行高速处理动作时,低速装置是没有反应的,此点可以避免高速的讯号被送到低速的集线器。
高速装置(High-Speed Devuces):USB2.0所提出的新规格,也应用在如CCD、外接式硬盘等装置。这些USB装置的传输速率最高为480 Mbps/s。
USB数据流的模式与管线的概念
在USB规格标准中也定义了两种周边:(1)单机装置,如:鼠标等;(2)复合式装置,例如:数字照像机和音讯处理器共享一个USB通讯端口等。每个接口设备都具有“端点”(Endpoint)地址,它是由执照封包内的4-bit字段(ENDP)所构成的。而主机与端点的通讯,是经由“虚拟管线”(Virtual Pipe)所构成的。而一旦虚拟管线建立好之后,每个端点就会传回“描述”(Descriptor)此装置的相关信息(即是描述元)给主机。这种“描述”信息内含了:群组特性,传输类别,最大封包大小,与频宽……等,相关于此周边装置的重要讯息。而在目前USB的数据传输类别有四种类型:控制、中断(Interrupt)、巨量(Bulk)与等时(Isochronous)。
USB对于PC主机与装置之间的通讯提供了特殊的协议。虽然USB系统的总线拓朴是呈现阶梯式星状的结构(如图1所示),但实际USB主机与装置的连接方式却是如图6所示的一对一形式,我们称之为USB装置的逻辑连接;而数据流的模式则是以这些逻辑连接为基本的架构。
图6 USB装置的逻辑连接
而对于USB的通讯,我们可以将其视为一种虚拟管线的概念,如图7所示。在整个USB的通讯中包含了一个大的虚拟管线(12Mbps)以及高达127个小的虚拟管线,而每一个小的虚拟管线可比拟为USB的装置。这是由于在USB执照封包中都含有7个用来寻址的位(位于执照封包的地址数据域,ADDR),因此最多可寻址到128个装置。但是由于地址0是预设地址,且用来指定给所有刚连上的装置。这也就是为什么USB总线上最多能连接到127个装置的原因。
而每一个连接到装置的小虚拟管线又可再细分为许多的微虚拟管线。这些微虚拟管线可比拟为端点(Endpoint)。这也是由于在执照封包中,包含了4个位的端点地址(位于端点数据域,ENDP)以及一个位于端点描述元中的输入 / 输出方向(IN/OUT)位。所以在一个单独的小虚拟管线内最多可再分割成15组的微虚拟管线(端点),也就是可对15个输出/入的端点寻址(共30个),并可将USB的执照封包中定义为IN(装置至主机)或OUT(主机至装置)两类型的执照封包。如果装置收到了一个IN执照封包,它将会传送数据给主机,反之如果收到了一个OUT执照封包,则它将会从主机接收到数据。
图7 虚拟管线的概念
USB传输型态
由于USB最初在设计时,即是为了能够针对具备如传输率,响应时间以及错误侦错等特性之许多不同的外围类型来加以考虑的。而其中,四种数据传输的每一个能够掌握不同的需求。在此,因应不同的周边装置的类型与应用,订定了四种的传输类型,分别是控制型传输(Control Transfer),中断型传输(Interrupt Transfer),巨量型传输(Bulk Transfer)以及等时型传输
(Isochronous Transfer)。其中,需要特别注意的是低速装置仅支持控制型传输与中断型传输而已。
控制传输是USB传输中最重要的传输类型,唯有正确的执行完控制传输,才能进一步地执行其它的传输模式。这种传输是用来提供给介于主机与
装置之间的配置,命令或状态的通讯协议之用的。控制传输能够致能主机去读取相关于此装置的讯息,并去设定装置地址,以及选择配置与其它的设定等。此外,控制传输也能够送出自订的要求,以针对任何的目的送出与接收数据。因此需以双向传输来达到这个要求。当然,所有的USB装置必须支持控制传输。
中断传输原本是属于单向传输,并且仅从装置输入到PC主机,作IN的传送模式,(但在规格书1.1版中,已改为双向传输,增加了OUT的传送模式)。这是由于最早在发展USB外围装置时,先以人工界面装置为设计考虑,其数据只需做输入,IN传输,例如鼠标或是键盘等装置。而由于USB不支持硬件的中断,所以必须靠PC主机以周期性地方式加以轮询,以便知悉是否有装置需要传送数据给PC。如果因为错误而发生传送失败的话,可以在下一个轮询的期间重新再传送一次。
巨量传输是属于单向或双向的传输。顾名思意,这类型的传输是用来传送大量的数据。由于这些大量的数据必须准确地加以传输,但相对的却无传输速度上的限制(即没有固定传输的速率)。例如,送出一个档案给打印机打印之用,或是从扫瞄机扫瞄一张图片,并传送至PC主机的应用上。这是由于巨量型传输是针对未使用到的USB频宽来向主机提出要求的。如此,需根据目前的总线的拥挤状态或是可用的频宽,以所有可使用到的频宽为基准,不断地调整本身的传输速率。因此,如果总线上充满了具备保证频宽的其它传输的话,如等时传输或是中断传输,那么巨量传输就必须持续地加以等待。反之,如果整个总线是处于闲置状态的话,巨量传输就可以传输地非常快。因此,并没有设定轮询的时间间隔。
等时传输可以是单向或双向的传输。此种传输需要维持一定的传输速度,因此相对的就需牺牲些微错误的发生。而它采用了预先与PC主机协议好的固定频宽,以确保发送端与接收端的速度能相互吻合。换言之,就算发生了传输上的错误,也不会重新传送。而应用这类型的传输装置有:USB麦克风、喇叭或是CCD等装置,如此可以确保播放的频率或是传输的影像不会被扭曲。而仅有全速与快速装置是支持等时传输的。
USB硬件规格
从 Universal Serial Bus的直译的文字,我们可以了解到USB界面的数据传输方式是采用串行的方式,其类似于RS-232串行传输的方式。当然,采取串行的方式,最主要是可以降低使用的讯号线数目,并可让讯号传递较
远的距离。所以USB的连接线内部仅有四条线,其中二条是+5伏特(VBus)与地线(GND),另外二条则是差动的数据线(D+与D-),长度最长可以达到5公尺(对全速装置而言)。而电源的供应上,一般为5V,而最小是4.4V。此外,透过USB总线,在下游所连接的装置端口可以根据不同的配置方式,分享到100/500 mA的电流量。
为了达到可以连接各种不同接口设备的目的,USB最多可以连接高到127个设备。而对一般的使用者来说,这种庞大的数量是备而不用的。而集线器的规格设计上,若要连接那么多个接口设备时,就要有USB 集线器的设计与使用,可以方便连接至多个周边。而这种集线器就和网络的集线器功能类似,皆可称为集线器,而且集线器与集线器间可以再串接,以方便安装更多数量的设备。如此,就可以形成或是架构出USB的阶梯式星状拓朴结构
出来。
USB的硬件特性
根据图2所示的阶层梯式星状的拓朴结构,可以看到主机端与集线器或装置必需依循由上→下或由下→上的连接方向,而为了避免连接错误,因此在USB 1.x规格中定义了两种不同大小形状的USB连接头,序列A与B连
接头。其相关的尺寸与接脚编号如图8所示:
序列A接头:用来连接下游端口的装置,且为长方扁平的形状,所以在PC主机机壳后的根集线器以及在集线器中往下扩充的连接埠就是序列A连
接头。
序列B接头:用来连接上游端口的装置或集线器,且为正方形。
图8. A与B型连接器之图示
而新的USB 2.0规格中,则增加设定了mini-B接头,如图9所示。这个mini-B连接器是原本B型连接器的一半大小。这种mini-B连接器是应用在需要缩小面积的消费性电子产品上,例如数为照相机。不管我们是使用的是一般B型连接器或是mini-B连接器,连接至计算机的另一端都需要A型连接器。A型连接器是往计算机主机端连接上去(往上游,Upstream),而B型连接器则是往装置端连接出去(往下游,Downstream)。因此,具备扩充USB周边埠的集线器,就同时具备了A型连接器与B型连接器。
图 9. Mini-B的连接器(引用自明昫,mainsuper公司)
所有的连接器中包含了四条USB缆线的电线的线规以及颜色,如下表格4所示。但其中,对于mini-B连接器则增加了ID脚位。若是支持USB On-The-Go(OTG)规格的话,则使用这个ID脚位,以用来辨识装置预设的模式(主机或是装置)。因为,这新的OTG规格已经修改USB规格延伸至点对点的方式来连接。而这种的新的USB OTG规格将使得USB装置不再局限于主机为整个USB总线上的唯一”主”装置。透过这种规格的延伸,所有的USB装置具备了主/从切换的特性。
一般标准的每个连接头内拥有4个接脚:其中两个用来传递差动数据的,另两个则是供给USB装置电源。其中,一对的电源线采用20~28AWG(America, Wire Gauge,美国线规)的导线。
表格4 USB缆线/连接器的信号与颜色
但对于传递差动数据线的线规,就需多加注意。由于USB的数据传输速率,分为全速(12Mbps)与低速(1.5Mbps)两者规格。虽然这两种传输格式都可以使用28AWG的导线,全速的差动数据讯号线必须采用绞线对的形式,而且还须加上屏蔽的处理才可以。而屏蔽的作用是防止高速传输时所产生的EMI电磁干扰。但对于低速的差动数据讯号线就无须使用绞线对,或加上屏蔽处理。这样设计也是为了减少成本并符合经济效益。
USB界面的电气特性
详细的USB电器特性的相关内容是在USB规格第七章所设定的。而在此,仅列出读者所需注意的一些特性。 如图10所示,呈现了在全速装置与PC主机之间电气特性的连接。除了Vcc(+5V)与接地线外,需要特别注意的是D+与D-的差动数据信号线。首先,在连接至USB收发器之前必须先串接29~44W的电阻器。而后根据不同的USB装置的传输速度(全速或是低速),改变在装置端的提升电阻(1.5K±5%)的位置。这个提升电阻器,也可视为装置端电阻器。对于全速装置(12Mbps),就将提升电阻器接至D+信号线与电源之间的位置。如果是低速装置(1.5Mbps),
图10. 全速装置与PC主机之间电气特性的连接图
就将提升电阻器接到D-信号线与电源之间的位置。这个电压源的范围为3.0V至3.6V之间。但对于USB 2.0的高速传输,这个提升电阻是被省略之,改以自动切换的方式。最后,D+与D-两条讯号线在PC主机的根集线器或集
线器端同时接上15KW的下拉电阻并连至接地端。我们也可视这些下拉电阻器为集线器端电阻器。
USB 2.0电子规格的变动
在主机与新型的高速控制器之间的连结被重新加以定义,以支持高达480MHz的传输效能表现。图11显示了全新的高速的界面连接方式。其中,新的标准下采用90W的差分阻抗(differential characteristic impedance)以搭配差分电流模式讯号(differential current mode signaling),并且采用相同的NZRI编码机制。但是,对于SYNC讯号、EOP讯号以及闲置状态等,也略加作了修改(在下一章中将再作详尽的介绍),只不过也必须同时搭配其它相关规范,以便严格控制游离电容(stray capacitance)、点对点抖动(peak to peak jitter)与上升/下降时间等因素。如此,才能使得讯号的传输速度能够更加地快速传输。
图11. USB 2.0规格总线连结过程
高速周边装置与主机控制器进行连结时,系统会将它视为一组配置有提升电阻器的标准型全速装置。在总线进行重置,周边装置会藉由讯号交换协议,将传输电流传回主机的方式来指示主机,这个周边装置为USB 2.0界面规格并具备高速传输能力。在完成讯号交换协议之后,周边装置将会把提升电阻打开(detach),所有的组件会开始进行高速传输通讯。当USB 2.0规格的周边装置与旧型主机相连结时,这种模式便具备向下兼容能力。也就是
当讯号交换协议失败时,周边组件会自动开始仿真并转为全速装置模式运行。而此时,使用者会感觉到运作效能的降低,但实际上仍能顺利地进行所指派的工作。由于USB 2.0 是采用了现有的讯号机制,若是在联机环境中未安装终端电阻器的话,系统就会透过双倍的电压侦测出USB装置的移除
USB的电源管理
这一部份的规范,在新的USB 2.0规格是没有作太大的变更。基本上,在中止模式下,500uA,配置模式下,500mA,而未配置模式下,100mA。由于USB的优点之一即是由总线供电给装置,因此装置可以透过总线来取得电源,而无须外部额外的电源插座或是缆线。
不论是集线器或是装置都可区分为自我供电或是总线供电两种类型。而从总线供电又可再区分为低功率与高功率两种。此外,根据USB规格,所有的集线器或是装置都必须支持中止(Suspend)模式,且中止模式下的消耗电流不能超过500mA。这是非常重要的特性。
而根据供电方式的不同,USB装置可分为下列几个类型: 1.总线供电集线器
所有的电源均由上游连接埠来供应,但至多只能从上游埠消耗500mA。而倘若以一个4个连接埠的集线器来说,每个下游埠最多只能消耗100mA(一个单位负载),因此4个连接埠共消耗400mA。而集线器本身的控制器与其周边电路可再消耗100mA,因此整个集线器共可消耗500mA。 2.自我供电集线器
集线器本身拥有自己的电源供应器,可以提供给本身的控制器以及所有的下游埠来使用。而对于每个下游埠,可以供给至少500mA的电流,而此时集线器最多可从上游埠消耗100mA。 3.低功率总线供电装置
所有的电源均来自USB上游埠,每个下游埠在任一时刻最多能消耗一个单位的负载。在USB规格中,定义一个单位的负载是100mA。低功率总线供电装置必须设计工作在低至4.40V的VBUS电源电压,以及高达至5.25V的最高电压。
4.高功率总线供电装置
所有的电源均来自USB总线的上游端口,在启动每个下游埠时,最多消耗一个单位负载(100mA),但在配置后最多可消耗5个单位负载(500mA)。高功率总线供电装置必须能被侦测以及以最小的4.40V来装置列举。 5.自我供电装置
装置最多可从USB上游端口消耗一个单位负载(100mA),而其余的电源
再从外部的来源来驱动。当外部的电源失去时,其必须以替代方案来透过总线提供不超过1单位的负载电流。
USB的编码方式
当PC主机对装置发出控制信号时,所有连接的装置都透过根集线器收到同样的信号,但是经由比对所配置的装置地址后,只能有一个装置会作出相对应的动作,这跟网络的架构有点类似。因此对一个装置而言,不仅要无误地接收主机端所送来的数据,又要正确地发出响应的信号。因此在D+与D-的差动数据在线就必须采用一种特别的编号方式再加以传送出去,以解决在USB缆线所产生讯号延迟,以及误差等问题。
在此,USB采用了NRZI(Non Return to Zero Invert,不归零就反向)的编码方式,就无需同步的频率信号也能产生同步的数据存取。NRZI的编码规则是,当数据位为 “1” 时不转换,为 “0” 时再作转换。如图12所示,显示了的NRZI编码的范例。
图12 NRZI编码的范例说明
但如此的编码方式会遇到一个很严重的问题,就是若重复相同的 “1” 信号一直进入时,数据就会造成长时间无法转换,逐渐的累积,而导致“塞车”的状况,这使得读取的时序就会发生严重的错误。
因此,在NRZI编码之间,还需执行所谓的位填塞(Bit-stuffing)的工作。如图13(a)所示,若是原始的串行数据中含有连续6个 “1” 位的话,就需执行位填塞的工作。此工作如图13(b)所示,就在其后填塞一个 “0” 位。但相对的在NRZI编码的过程中,对这连续的6个 “1” 执行如图13(c)转换过程。
因此在发送端在作数据传输之前,需先执行位填塞以及NRZI编码的工
作。相对的,接收端在作数据接收之前,就必需先执行NRZI译码,然后再作位反填塞(unBit-Stuffing)的工作。
图13 NRZI解碼的过程
USB描述元
称前我们曾提及过USB描述元,那么何谓USB描述元呢?我们可以稍微想象一下,它就好像是USB周边装置的“履历表格”或是“身分证”一般,巨细靡遗地纪录着周边装置相关的一切讯息。因此,USB描述元掌握了有关于装置的各种讯息与相关的设定。
而为了描述不同的数据,就需以不同类型的USB描述元来加以描述,如图14所示。
图14 各种描述元的架构与类型
在图14的描述元中,需注意到,装置描述元(Device Descriptor),配置描述元(Configuration Descriptor),界面描述元(Interface Descriptor)以及端点描述元(Endpoint Descriptor)是一定必须具有的。而其它的描述元,例如,字符串描述元(String Descriptor),数种不同的群组描述元(Class Descriptor)以及报告描述元(Report Descriptor)则可以根据不同的装置来加以添加或删减的。而HID群组描述元是由界面描述元所延伸出来的。
而各种的描述元可以用下图15的描述元阶层来作叙述。最上层的阶层是装置描述元。在装置描述元的bNumConfigurations字段中,设定一个或多个下一层的阶层-配置描述元。在配置描述元的bNumInterface字段中,设定一个或多个下一层的阶层-界面描述元。最后在界面描述元的bNumEndpoints字段,则设定最后一层的端点描述元。
图15 USB描述元阶层图
因此,从装置描述元中,可以设定含有多少个配置描述元。而配置描述元,则可设定其包含了多少个界面描述元,当然从界面描述元中,又可以再设定所含端点的数目。因此,其中,可以了解到仅有一个装置描述元而已,其余的描述元再依次设定。当然如图15所示的,每一阶层至少需设定一个描述元。
USB装置群组
在USB的文件中,定义了将某种相同属性的装置整合在一起的群体,称之为群组(Class)。而将这些相同属性的装置组合在一起的优点是,可以同时发展该群组以PC主机为主的驱动程序。
例如,鼠标是属于人工界面装置的一种,其群组驱动程序已包含在操作系统下。如果鼠标也遵循了装置群组规格的话,那么鼠标的贩卖商在贩卖时,根本就无须另外再附一套驱动程序。也就是可以直接使用Windows 98 SE或是Windows 2000 所内建的人工界面装置的驱动程序。如此,硬件的制造商只需专心发展其硬件电路即可。相对的,倘若该装置并不符合人工界面装置群组的话,就必须使用含有Win32 API呼叫的VB,C++或是Delphi等高阶程序,另外再撰写其驱动程序。
以下列出USB规格中所定义的群组: Audio:如喇叭等的音频装置
Communication:如调制解调器等的通讯装置
Display:如显示器等装置
Human Interface:包含了鼠标,键盘与游戏杆等人工界面装置 Mass storage:如软硬盘等的储存装置 Image:如扫描机或数字摄影机 Printer:如打印机等的打印装置 Power:如UPS等的电源装置
Physical interface:如动力回馈式游戏游戏杆等的物理响应设备。
在所有的群组中,最常使用的就是Human Interface Device,人工界面装置(简称HID)群组。在下表格5中,分别列出了各个群组规格所设定的“装置群组”码与“界面群组”码。这些值分别设定于稍前所叙述的装置描述元与界面描述元中。
而之所以那么繁琐的设定各种“装置群组”码与“界面群组”码的原因,在于USB是一种正如其名的通用串行总线。因此,为了与各种旧有的装置或设备连接在一起,就必须加以分类。
表格5 装置群组码与界面群组码
*指的是IrDA/USB Bridge,而其次群组码是0x01
USB标准要求
在USB界面的通讯协议中,由于主机是取得绝对的主控权,所以对于装置而言,只有“听命行事”,讲一动,作一动(军中术语)。因此,主机与装置之间就必须遵循某种已沟通的特定命令格式,以达到通讯的目的。而这个命
令格式就是USB规格书中所订定的“装置要求(Device Request)”。这个装置要求的设定,清除与取得都需透过控制型传输的数据交易来达成。
从下表格6中列出了各种的标准装置要求。而表格1.7则是其第一个字段,要求型态(bmRequestType)的格式。
表格6 标准装置要求
表格7 装置要求型态bmRequestType的数据格式内容
事实上,在表格1.6的8个字节也就是放置于跟随在SETUP执照封包后的数据封包字段内。为了取得这8个字节的标准装置要求,在一般的USB芯片组通常使用一个数组或是特定的FIFO来储存这重要的SETUP数据。而在EZ-USB FX芯片组中,是使用定义为SETUP[7]数组来加以储存。
例如,Get_Descriptor的装置要求,在数据封包的数据域位是 “80 06 00 01 00 00 40”。其中,这个数据格式中的第1个字节-bmRequestType =80,表示数据是从装置传至主机,且为标准的型态,而接收端为装置。此外,第2个字节-bRequest,06,则决定了装置要求的型态,就是取得装置描述元。
若加以整合表格6与7,就可以如下图16所示的架构。其中,利用表格7的bmRequestType[6:5]位区分为四种类型。[00]为标准装置要求,[01]为群组装置要求,[10]为贩卖商特定装置要求,而最后的[11]则加以保留,应用于停滞(STALL)的用途。我们可以从图中,根据表格6,了解到bRequest的类型,而在图中以Get_Descriptor为例子,利用wValueH字段值延伸至
DEVICE(装置),CONFIGURATION(配置)以及STRING(字符串)等标准装
置要求。即分别为取得装置描述元,取得配置描述元,以及取得字符串描述元等的标准装置要求。
图16 标准装置要求的架构示意图
参考数据
1. USB外围装置的设计与应用-使用CY7C63系列,全华科技图书。 2. 微处理机-USB外围装置的设计与应用-EZ-USB(FX)系列,长高计算机图书。
4. USB接口之完全解决方案系列一-8051微处理机程序设计(上),长高图书。
5. USB接口之完全解决方案系列二-8051微处理机程序设计(下),长高计算机图书。
6. USB接口之完全解决方案系列三-Visual Basic程序设计,长高计算机图书。
因篇幅问题不能全部显示,请点此查看更多更全内容