为了方便理解主机和USB设备间的数据传输机制,USB系统的分层结构进行了更详细的描述。从逻辑上看,客户软件通过一组管道来与USB设备的功能单元进行通信;USB系统软件和USB逻辑设备间的通信是通过缺省控制管道0实现的;所有实际的USB数据传输都是由主机和USB设备的SIE来完成。
功能层
功能层负责实现USB设备的特定功能。该层不理解USB的串行传输机制,而只是知道应该和USB设备传输哪些数据,它由主机方的客户软件和设备方的功能单元组成。功能单元是客户软件对USB设备的抽象,且被看作是一个接口的集合。在功能层中,客户软件仅仅对USB设备的接口感兴趣,且只需与功能单元进行通信。
在USB的数据传输中,因不同外围设备的类型和应用不同,USB协议提供了四种传输类型:控制传输、中断传输、等时传输和批量传输。
(l)块传输:适用于传输大量的、对传输时间和传输速率均无要求的数据。特别适合于打印机、扫描仪类设备。
(2)中断传输:适用于传输量少量或大量的、具有周期性的数据。特别适合于键盘、鼠标这类设备。
(3)同步传输:适用于传输大量的、速率恒定的、且具有周期性的数据。特别适合于音频、视频类设备。
(4)控制传输:适用于传输少量的、对传输时间和传输速率均无要求、但必须保证传输的数据。专门适用于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设备时,集线器会马上禁止该端口并向主机发出通知。USB系统软件和相关的客户软件会处理这个断开操作,其设备地址将被释放。
总线接口层
USB总线接口层位于通信体系的最低层,代表了USB数据线所进行的实际数据传输,这一传输在主机系统和USB设备之间进行。主机一方由USB主机控制器和根集线器所组成,而设备端则是由设备中所内含的USB接口所构成。这一层包含有物理实体连接、电气信号环境以及封包(信号包)的传输机制。
为保证USB总线上传输数据的完整性和消除噪声干扰,USB采用了NRZI编码的差分信号,数据在D+和D-线上的相位差为180度。USB主控制器和USB设备的SIE负责对数据进行NRZI编解码和差分驱动。
在USB总线接口层中,主机认为USB设备是以层次星型的拓扑结构连接至USB主控制器的根集线器。这些设备最终都是通过同一个USB主控制器和主机进行通信的。也就是说,USB总线上的所有设备共享一条通往主机的数据通道,因此同一时刻只可能有一个USB设备和主机进行通信。