分类: 嵌入式
2012-02-09 08:46:22
USB是由Compaq,DEC,IBM,Intel,Microsoft和NEC等多家美国和日本公司共同开发的一种新的外设连接技术。早在1995年,这些公司就成立了一个称为“通用串行总线应用论坛”(Universal Serial Bus Implementer’S Forum USB—IF)的组织,旨在促进PC总线的标准化,加速新标准的制订和产品开发。
该组织的目标是发展一种兼容低速和高速的技术,从而可以为广大用户提供一种可共享的、可扩充的、使用方便的串行总线。该总线应独立于主计算机系统,并在整个计算机系统结构中保持一致。为了实现上述目标,USB—IF发布了一种称为通用串行总线的串行技术规范,简称为USB。现在,USB已成为PC普遍认同的一种事实上的接口标准。
USB的设计目标是:
·易于PC外设的扩展
·造价低廉并支持最高达480Mb/s的传输速度
·支持语音、音频和视频的实时数据
·协议灵活并支持同步及异步数据传输
·易于集成到其他商业设备中去
·适用于PC的各种配置
·提供新的设备类扩充PC接口
·提供USB2.0向下兼容性
一个USB系统主要被定义为三个部分:
●USB互连:
·USB设备:
●USB主机。
USB互连是指USB设备与主机之间进行连接和通信的操作,主要包括以下几方面:
总线的拓扑结构:USB设备与主机之间的各种连接方式:
内部层次关系:根据性能叠置,USB的任务被分配到系统的每一个层次:
数据流模式:描述了数据在系统中通过USB从产生方到使用方的流动方式:
USB的调度:USB提供了一个共享的连接。对可以使用的连接进行了调度以支持同步数据传输,并且避免的优先级判别的开销。
USB连接了USB设备和USB主机,USB的物理连接是有层次性的星型结构。
在任何USB系统中,只有一个主机。USB和主机系统的接口称作主机控制器,主机控制器可由硬件、固件和软件综合实现。根集线器是由主机系统整合的,用以提供更多的连接点。USB是一个主一从式总线协议,即在USB总线上有一个主设备和若干个从设备。这个主设备称为主机,而从设备称为USB设备。主机对USB总线拥有绝对的主控权,总线上的一切数据传输都由主机控制。在整个USB系统中只允许有一个主机。主机中的USB接口称之为USB主控制器。而根集线器是集成在主机系统中的。在USB规范中,USB主机被定义为控$1]USB的软件和硬件的集合。如果不是很严格的话,可以认为USB主机就是PC机的硬件和相应的驱动程序。
主机在USB中的责任是:
(1)检澳i]USB设备的插入和移出。
在上电时,主机必须识别所有己经连接的USB设备。在识别过程中,主机为每个设备分配一个地址,并从设备获取其他配置信息.在上电后,无论何时当一个设备被连接或断开时,主机都能察觉到该事件的发生,并向设备列表中加入任何新连接的设备或删除任何断开的设备。
(2)在主机与USB设备之间管理数据流。
主机负责控制总线上的数据流。一般来说,USB通信总是由主机发起,并由主机管理整个数据传输过程。若多个外设希望同时传输数据,主机控制器按如下方式处理这个问题:它把数据通道分为l毫秒的帧,然后给每个设备分配每一帧的一部分。主机应该保证那些必须以固定速率进行的传输在每一帧中确实能得到它们所需要的时间量。在设备识别过程中,设备驱动将申请传输所需要的带宽。如果无法分配所需的带宽,主机就不允许与设备进行通信。不需要固定速率的传输使用帧的其他部分,并且可能需要等待。
(3)进行错误检查。
主机也有错误检查的责任。它往发送的数据中加入错误校验码。当设备收到数据时,它按校验算法对数据执行计算,然后把结果与接收到的错误校验码进行比较。如果二者不同,则设备就不确认所收到的数据,于是主机就知道它需要重新发送(USB也支持不允许重新发送的传输类型,目的是保持一个稳定的传输速率)。主机对从设备接收到的数据也采用相同的方法进行错误处理。主机也可能到其他错误指示符,指示设备现在不能发送/接收数据,这时主机就通知应用程序以采取合适的动作。
(4)提供电源。
除了两个信号线,USB还有一个+5V的电源线和地线。大部分外设都可以从该上得到所有所需的电源。在上电或连接时,主机给所有设备提供电源,当需要时还可以使这些设备工作在省电模式下。每个满负荷供电的设备需要高达500mA的电流。在一些电池供电的PC的端口和集线器上只支持低功耗的设备,它们的工作电流被限制在lOOmA以内。若设备自己有独立的电源供应,则只在刚开始与主机通信时使用总线电源。
USB设备分为集线器和功能设备。集线器具有一个上行端口(Upstream Port)和若干个下行端口。上行端口用于连接主机或上级集线器,下行端口用于连接下级集线器或直接连接设备。通过集线器可实现USB总线的多级连接。在连接NUSB总线的初期以及电源断开与重新接通时,除上行端口外的所有其他端口是不能使用的(当然它们也可以被单独设置为可用或不可用)。另外,集线器可以发现下行端口上的设备插入或移出操作,并为下行设备分配电源。每一个下行端口都可以分别配置为全速或低速,集线器可以把低速端口与全速率信号分离开来。
功能设备是指一个可以从USB总线上接收或发送数据或控制信息的USB设备。一个功能设备由一个独立的外围设备而实现,它通过一根电缆接到集线器上的某一端口。但是,一个物理组件也可以包含多个功能设备和一个嵌入式集线器,而且仅用一根USB电缆连接到上级集线器,这被称为复合设备。对主机而言,复合设备呈现为永远都连接着一个或多个USB设备的集线器。每一个功能设备都包含了用来描述其能力和所需资源的配置信息。在使用一个功能设备之前,必须由主机来对其进行配置。这种配置操作包括分配USB带宽和为该功能设备选择特定的配置选项。功能设备的例子包括鼠标、键盘、打印机、MODEM、活动硬盘、数字相机等。
与主机不同的是,设备不能主动发起一次USB通信。相反,它必须等待主机并响应主机发起的通信(一个例外是远程唤醒特征,这个特征使一个设备能向主机申请通信)。
设备在USB中的责任是:
(1)检测与自己的通信
每个外设始终监测着总线上的通信,若通信的设备地址与设备的地址不同,则设备忽略这次通信。如果地址相同,设备就把通信的数据保存在它的接收缓冲器中,并产生一个中断来发出数据已经到达的信号。在几乎所有的芯片中,这个步骤都是自动完成的,它被内置于硬件中。
(2)对标准请求的响应
在上电和连接到带电系统时,设备必须在识别过程中对主机发出的请求做出响应。当收到请求时,设备把要发送的响应信息放置在它的传输缓冲器中。在某些情况下,如设定一个地址和配置,设备除了发出响应信息外还要采取其他动作。然而设备不必执行每一个请求,它只需要以一种可以理解的方式对请求做出响应。例如,当主机请求使用一个设备不支持的配置时,设备用一个指示符来响应,通知主机该请求不被支持。
(3)错误检查
像主机一样,设备在要发送的数据后面加入错误校验码。在接收到数据时,设备进行错误校验计算,如果检测到错误就请求重新传输。这些功能内置在硬件中,不需要软件实现。
(4)管理电源
如果设备不从总线获得电源供应,它就必须自己供电。当没有总线活动时,设备必须进入它的低功耗挂起状态,但继续监视总线,当总线活动恢复时退出挂起状态。
当主机进入低功耗状态时,所有与总线的通信都停止了。与之相对应,连接到总线的设备检测到总线活动停止了3毫秒时,它们也必须进入挂起状态并且限制从总线中获取电流。主机也可能请求挂起与一个特定设备的通信。当总线活动恢复后,设备必须退出挂起状态。不支持远程唤醒特征的设备在挂起状态下从总线取出的电流不会超过500mA。有远程唤醒特征的设备并且该特征被主机使能后,这个极限是2.5mA.