多功能USB设备的结构设计研究

转自: 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值