转自: http://www.61ic.com/Technology/Industry/200701/11582.html
【摘 要】 在USB2.0规范的基础上,分析了USB描述符结构,提出了多功能USB设备的结构模型,总结出设计多功能USB设备结构的两种基本方法。
关键词:通用串行总线,复合设备,组合设备,多功能
1 引 言
作为计算机的外部设备接口,USB接口已得到广泛应用。多功能USB设备是一种复杂的USB设备,它虽然只有一个USB接口,但是却具有实现多种类型设备的功能。具有多功能USB的设备被逐渐地应用起来,常见的设备有带鼠标的USB键盘、带话筒的USB摄像头等。因此,研究多功能USB设备的结构设计十分必要。
2002年4月27日,康柏、惠普、英特尔、朗讯、微软、NEC和菲利浦等数家公司联合修订了《UniversalSerial Bus Specification Revision 2.0》(这里简称USB2.0规范),本文的研究就是在这个规范的基础上进行的。
2 USB设备的设计原则
在USB系统中,USB主机(host)扮演主控(master)角色。除了设备的远程唤醒(remote wakeup)功能外,USB设备不会是事件的发起者,设备做到的只是响应主机的请求。图1所示是USB通信的请求响应模型。
USB采用这种以主机为中心的模型的原因是节省花费。通信中应尽量将主机端智能化一些,使设备端简单一些,这样,才能降低计算机外围设备的花费。因此,在设计USB设备,特别是设计多功能USB设备时,应使USB设备端处理通信时尽量简单。
3 USB规范中的几种重要描述符
在列举过程(enumeration process)中,主机使用控制传输方式从设备请求描述符。描述符包含了设备的基本信息。主要的描述符有:设备描述符(devicedescriptor)、配置描述符(configuration descriptor)、接口描述符(interface descriptor)以及端点描述符(endpoint descriptor)。
一个USB设备对应一个设备描述符。一个USB设备可以有一个或多个配置,但在一个时刻内,只有一个配置是有效的(one ata time)。每个配置有一个或多个接口,只要配置有效,其所有的接口都是有效的(concurrently active)。每个接口可有多个端点,一个端点(除端点0外)不可以在一个配置下的多个接口间共享,但可以在不同配置下的接口间共享。端点是一个USB设备的一个唯一的可寻址部分,用来作为主机和设备之间通信流的信息源或接收器。接口是端点的集合,是设备实现某种功能的最小载体。它们之间的结构见图2。图2所示是USB描述符树。
4 多功能USB设备的结构模型
多功能USB设备通常是通过单个或多个USB控制器(USBcontroller)连接不同类型的设备来实现的。当然,将不同类型的设备功能集成到USB控制器中去,来实现多功能USB设备也是可以的,因为USB规范讨论的是USB主机与USB控制器(或者集线器)之间的通信协议,不涉及USB控制器与不同类型设备(或芯片)的通信协议问题。因为用两个设备实现多功能的USB设备与用多个设备来实现多功能的USB设备的原理相同,所以,本文以两个设备为例来说明多功能的USB设备的设计方法和结构模型。因此,可以把多功能的USB设备抽象成如图3的结构(不同类型设备用A和B类设备表示)。
5 多功能USB设备的设计需要解决两个主要问题
多功能设备结构模型(数据流)图如图3所示,多功能USB设备的设计需要解决两个主要问题:
首先需要确定USB主机与A设备和B设备如何通信的问题(多功能USB设备的外部通信问题)。包含的问题有:设计是采用单个USB控制器还是多个USB控制器,其整体的结构应如何设计;(2)是否采用USB的标准设备类(涉及USB设备的驱动能否被操作系统自动加载的问题)。
其次要解决USB控制器如何处理USB主机与A设备和B设备间的通信问题(多功能USB设备的内部通信问题)。包含的问题有:如何实现USB主机和A设备间的数据流与USB主机和B设备间的数据流区分问题;选用何种控制器芯片能最大限度地支持与A设备之间接口的连接和B设备之间接口的连接。
6 USB结构设计思路
总体说来,USB设备有两种基本的设计方法:采用USB复合设备(compound device)的方法和采用USB组合设备(composite device)的方法。
6.1 复合设备设计方法
6.1.1 复合设备方法的特点
复合设备方法是采用三个USB控制器芯片,其中一个为USB集线器芯片,另外是连接设备A的USB控制器芯片和连接设备B的USB控制器芯片。该方法的实质是将两种功能独立的USB设备通过内部的USB集线器封装在一起成为USB多功能设备。复合设备中的每一个USB设备模块和内部的USB集线器都有自己独立的设备地址。复合设备在内部采用多个USB控制器的方法,简单地解决了多功能USB设备与USB主机通信时内部数据流(USB主机与设备A的数据流和USB主机与设备B的数据流)的区分问题。该方法结构清晰,复合设备结构模型(数据流)如图4所示。
复合设备结构中,USB控制器A和B的设备描述符中定义了各自的设备类代码。如设备类代码是USB标准的设备类代码,USB主机与USB控制器A或B的通信按照相应的USB设备类规范进行。如果是用户自定义的设备类代码,则USB主机与USB控制器A或B的通信按照用户自定义的协议进行。
6.1.2 复合设备方法可实现性的分析
开发过程。采用此方法开发多功能USB设备时,其开发过程同开发两种不同类型的USB设备A和B相同。
芯片选型。选择USB控制器A和B时,可分开考虑,芯片选型比较容易,编程调试也可分开进行。
驱动程序。如USB主机与USB控制器间的通信遵循USB标准的设备类规范的要求,Windows和Linux等常用操作系统可自动加载驱动程序。
总体来讲,采用复合设备方法开发多功能USB设备难度较低。
6.2 组合设备设计方法
6.2.1 组合设备方法的特点
USB组合设备(composite device)是指具有多个接口且接口间相互独立的USB设备。一个USB组合设备只有一个设备地址。可以将不同的功能与不同的接口对应,来开发多功能USB设备。
组合设备采用一个USB控制芯片,同时接A和B设备(或芯片)。主机可同时与A和B芯片通信。组合设备结构模型(数据流)如图5所示。
6.2.2 组合设备的描述符结构
以两接口的组合设备为例,如图6所示,来说明组合设备的描述符结构:一个设备描述符下有一个配置描述符;一个配置描述符下有两个接口描述符;每个接口描述符下有多个端点描述符;在接口描述符中设置子设备类型;除两个0端点(包括输入in和输出out)外,其它的端点在不同接口间不能共享。
在每个接口描述符中,可以定义相应的子类代码。如接口描述符中子类代码是USB标准的设备类代码,则USB主机与USB控制器这个接口的通信(实际上是与这个接口中的端点通信)应按照相应的USB设备类规范进行;如果是用户自定义的设备类代码,则USB主机与USB控制器这个接口的通信按照用户自定义的协议进行。
组合设备虽然只采用一个USB控制芯片,但通过控制不同的接口(实际上是接口内的端点)与不同的设备通信,也很好地解决了两个数据流(USB主机与设备A的数据流和USB主机与设备B的数据流)在一个USB控制器上的区分问题。
6.2.3 组合设备方法可实现性的分析
(1)芯片选型。采用组合设备方法需要选择合适的USB控制器。对选择USB控制器的限制主要有:USB控制器可提供的端点数量和这些端点支持的传输类型;USB控制器需较好地支持与设备A和B间的传输协议。
(2)开发过程。采用组合设备方法开发多功能USB设备时,可以先分开调试两个接口;一旦每个接口都独立运行正确,接着就可编写有两个接口的完整描述符(结构如图6所示);最后将两段程序叠加在一起即可。
(3)驱动程序。如在接口描述符中使用标准的USB设备类,且每个子类的通信遵循USB标准的设备类规范的要求,Windows和Linux等常用操作系统可自动加载驱动程序。
总体来讲,采用组合设备方法开发多功能USB设备需得到USB控制器的更多支持,难度较大一些。
7 结束语
一般来讲,采用复合设备方法设计的多功能USB设备结构比较清晰,选择USB控制器的范围很大,相应获得的技术支持更好一些。但选择USB控制器较多,花费有可能比采用组合设备方法设计多一些。现在的不少芯片厂商也逐渐提供组合设备的芯片方案,如可驱动带话筒的摄像头的USB控制器。在选择何种方法设计多功能USB设备时,关键在于USB控制器的芯片选型,这样才能使今后的开发工作简单起来。
参考文献
1 〔美〕Jan Axelson著.USB大全.陈 逸,等译.北京:中国电力出版社,2001
2 许永和编著,健莲科技改编.USB外围设备设计与应用.北京:中国电力出版社,2002
分享到:
相关推荐
【标题】:“多功能USB设备的结构设计研究1” 【描述】:该研究基于USB2.0规范,深入探讨了USB描述符结构,并提出多功能USB设备的结构模型,总结了设计此类设备的两种基本方法。 【标签】:microsoft 网络 【正文...
本文讲述了一种可以在Windows 8系统下自动识别USB设备的设计方案与实现过程。文章开篇即介绍了目前市场上的几种识别操作系统的方法,并指出这些方法存在的不足,比如需要安装额外的过滤驱动程序,或是需要USB设备...
### USB安全钥模型的设计研究 #### 一、绪论 **1.1 研究背景** 随着信息技术的快速发展,信息安全问题变得日益突出。在众多的信息安全解决方案中,USB安全钥作为一种便携式的物理安全设备,因其易于携带、操作...
### 基于FPGA算法的USB设备接口的设计USB #### 重要知识点解析 ##### USB技术研究现状 **1.1.1 USB速度快** - **USB接口**:支持三种不同的数据传输速率,分别是低速(LS)1.5Mbps、全速(FS)12Mbps以及高速...
USB设备可以有多个配置,每个配置可能包含一个或多个接口,这些接口代表不同的功能。设备可以在配置之间切换,改变其工作状态。每个配置下的接口只能处理一种USB逻辑连接,而设备可以有多个接口来提供多种服务。 在...
总之,Linux下的USB驱动开发涉及到多个层次的理解,包括硬件交互、协议解析、内核数据结构以及驱动程序设计。通过深入研究USB驱动的骨架,开发者可以逐步掌握这一复杂领域的核心知识,从而能够编写和调试自己的USB...
然而,传统的USB1.x和USB2.0规范下的设备仍然受限于一种固定的主从结构,即只有一个USB主机可以连接多个USB设备。这种结构虽然简化了系统设计,但也带来了局限性,比如设备间的直接数据交换变得非常困难。为了解决这...
综上所述,USB芯片设计原理图涵盖了USB协议的理解、接口设计、数据传输机制、芯片功能模块等多个方面,是实现USB设备与主机通信的基础。通过深入研究这些原理,可以更好地理解和开发USB相关的硬件产品。
"基于ARM9的嵌入式系统研究及USB驱动程序设计" 基于ARM9的嵌入式系统研究及USB驱动程序设计是指嵌入式系统中使用ARM9处理器,进行USB驱动程序设计的研究和实现。该研究主要涉及到嵌入式系统的基础知识、USB驱动程序...
根据给定的文件信息,以下是对“Linux...通过对USB基础知识、设备管理、端点类型、驱动程序原理及其实现细节的学习,可以深入理解Linux内核中USB驱动的工作机制,为进一步研究和开发复杂的USB设备驱动奠定坚实的基础。
在Linux系统中,USB子系统的设计非常灵活,能够适应不同类型的USB设备。开发人员可以根据具体的设备类型,利用提供的API函数来编写驱动程序,实现设备的即插即用功能。 #### 4. USB2.0驱动程序开发实例 开发USB2.0...
本文介绍了一种基于USB和FPGA(现场可编程门阵列)技术的多功能等效器的设计。等效器在航天遥测设备的研制和地面模拟测试中扮演着重要的角色,因为它能模拟外部系统中控制和测量参数的各种设备。 在设计上,该多...
USB鼠标是计算机外围设备中广泛使用的一种输入设备,它的设计涉及到硬件、软件和人机交互等多个方面的知识。...通过深入研究这些设计资料,可以掌握USB设备开发的基本流程,为自己的创新项目打下坚实的基础。
- **USB设备的状态及状态转换**:USB设备在被识别和配置的过程中会经历多个状态,包括默认状态、地址分配状态、配置状态等。 - **USB设备的枚举过程**:设备枚举是指USB系统识别新连接设备的过程,包括设备检测...