总线系统、在总线系统中使用的站和总线接口
本发明涉及一个总线系统,该总线系统包括通过总线耦合、用来传输信号的第一站和第二站,所述总线被安排作根据所述第一站重复地向所述第二站发送对数据的请求的协议而操作,所述协议包括用于按第一请求格式以第一通信速率传输所述请求的第一模式,和用于按第二请求格式以第二速率传输所述请求的至少第二模式,所述第二站被安排作以从一个包括所述第一和第二模式的模式组中选择的模式来接收请求,并且被安排作如果其被安排作根据所述第一模式操作将第一指示给所述第一站,以及如果其被安排作根据所述第二模式操作将第二指示给所述第一站。
本发明还涉及在包含一个用于一个总线的连接的总线系统中使用的站,所述站被安排作根据所述工作站重复地向所述连接发射请求的协议而操作,所述协议包括用于按第一请求格式以第一通信速率传输所述请求的第一模式,和用于按第二请求格式以第二速率传输所述请求的至少第二模式。
本发明还涉及在包含一个用于一个总线的连接和一个用于从一个处理器接收请求属性的输入的总线系统中使用的总线接口,所述总线接口被安排作根据所述总线接口重复地向所述连接发送请求的协议而操作,所述协议包括用于按第一请求格式以第一通信速率传输所述请求的第一模式,和用于按第二请求格式以第二速率传输所述请求的至少第二模式。
这样的总线系统公开在通用串行总线(USB)规范中。USB规范是由包括Compaq计算机公司、Hewlett-Packard公司、Intel公司、Lucent技术公司、Microsoft公司、NEC公司和Koninklijke PhilipsElectronics N.V.的一组公司公布的标准。下面描述与完整理解本发明相关的USB的各个方面。关于USB的进一步的背景可从USB规范2.0获得,在此将其一并包括以作参考。
USB是设计用来支持个人计算机和各种各样的外围设备之间的数据交换的标准总线,外围设备可以是诸如:网络摄像机、打印机、扫描仪、麦克风和键盘。因此,USB能代替现存的诸如RS-232C串行端口、并行端口和PS/2接口的接口。
在比如USB系统的总线系统中,不同的电子总线站之间经由总线互相连接。通常,总线站包括一个处理器或者计算机系统,用来处理或者生成数据并控制数据流。USB站被定义为主机(比如个人计算机)和设备(外围设备)。通常在任何USB系统中只有一个主机。在主机上的SUB接口也被称之为主机控制器。该主机控制器可用硬件、固件或软件的组合实现。USB设备被定义作集线器,其提供附加的接入点或功能,向系统提供性能。设备经由分层星形拓扑与主机连接。集线器指示USB设备的接入或移去。主机确定新附着的USB设备是否是一个集线器或一个功能,并分配一个唯一的USB地址给USB设备。所有USB设备可由一个唯一的USB地址访问。每个设备附加地支持一个或者多个与主机通信的端点。
USB是一个轮询的总线。主机控制器初始化所有数据传输。绝大多数总线事务涉及向上传输三个包。当总线控制器在预定的基础上发送一个描述事务的类型和方向的USB包时,每个事务开始。这个包被称之为“令牌包”。所述的USB设备通过解码适当的地址段来编码选择其本身。在一个给定的事务中,数据要么从主机传输给设备,或者从设备传输给主机。数据传输的方向在令牌包中指定。事务的源接着发送一个数据包或者指示其没有传输的数据。通常,目标响应一个指示传输是否成功的握手包。
USB支持三个范围的数据通信工作量:高速、全速、低速。低速数据范围适于诸如键盘、鼠标和游戏外围设备的交互设备并支持10-100kb/sec的通信。全速数据范围适于电话、音频和压缩的视频应用并支持500kb/sec-10Mb/sec的通信。高速数据范围适于视频和存储的应用并支持25-400Mb/sec的通信。
USB已经变为一种用于在PC和外围设备之间交换数据的流行接口。随着可携带外围设备的数量的增加,例如数字静态摄像机、视频摄像机、个人数字助手和蜂窝电话,使用USB来充当PC通信的接口。许多这些可携带设备通过经由USB接口来相互通信而获益,但是USB的某些方面让此难以达到。特别地,USB通信只能发生在主机和外围设备之间。但是,为了成为合格的PC主机,设备必须具有若干特征,包括:用于大量设备驱动器的存储器,供应大电流的能力,和一个串行“A”主机连接器插座。对于许多可携带设备具有所有以上特征是不实际的,并且在许多情况下,不需要这些特征来形成可携带设备之间的接口。
为了能够使得那些只具备有限特征的设备实现USB应用,包括Koninklijke Philips Electronics N.V.的若干公司的贡献者,设计开发了可携带USB应用-USB On-The-Go(OTG)-USB2.0的补充由,该补充允许可携带设备担当有限的USB主机,而无需支持所有上述PC功能的负担。作为USB2.0规范的补充,OTG定义了一个变化到USB2.0规范的最小集合,使得能得到可携带USB应用。另外,关于OTG的背景可从USB On-The-Go(OTG)-USB2.0的补充、修正1.0得到,在此一并包括以作参考。
USB2.0或OTG主机控制器包括一个支持高速通信的高速主机控制器,并可包括一个或者多个支持全速和低速通信的配套主机控制器。高速主机控制器实现一个加强主机控制器接口(EHCI),并且由此被称之为EHCI主机控制器或eHc。其用于所有与主机控制器连接的高速设备之间的高速通信。辅助主机控制器例如实现了通用主机控制器接口(UHCI)或者用于USB的开放主机控制器接口(OHCI)。配套主机控制器或者cHC处理与连接主机控制器的全速或低速设备进行通信。综上所述,为了支持比如USB2.0或OTG主机控制器,实际上包括两个单独的主机控制器,一个eHC和一个cHC。
本发明所基于的思路在于,该“双引擎”方式的缺点是eHC和cHC要求单独的软件驱动程序。这对于例如一个嵌入的环境来说,其使用受到限制,如在可携带应用中存在的那样,其中硬件和软件资源是受限的。该方式的另一个缺点是产品开发需要更多的时间,因为需要开发和调试两个单独的软件驱动程序。另外,操作系统需要为eHC和cHC安排数据通信。
本发明的一个目的是提供一个通过简化第一站的设计更适于可携带应用的总线系统。
为此,本发明提供一个在开始段落中定义的总线系统,其特征在于所述第一站包括一个处理器、一个控制器和一个译码器,所述处理器用于以第一请求格式生成请求的请求属性,所述控制器用于从所述请求属性中以第一请求格式生成所述请求,并用于在检测到所述第一指示时将所述请求以第一请求格式传送到所述第二站,以及在检测到所述第二指示时将所述请求转发到所述译码器,和所述译码器用于将所述请求以所述第二格式传送到所述第二站。
在操作中,第一站中的处理器需要将信息提供给第二站,或者需要从第二站获得信息。由此,第一站需要经由总线与第二站通信。在一个诸如USB系统的轮询的总线系统中,由第一站通过发送请求发起通信。第二站被安排作以第一模式或者第二模式接收请求。第二站通过第一站的指示方式来指示其以第一模式操作或者通过第二指示的方式来指示其以第二模式操作。因此,第一站需要被安排作以第一模式和第二模式传送请求。
在根据本发明的总线系统中,如果需要,译码器处理按第二通信速率以第二请求格式传输请求的第二模式。因此,处理器不需要区别以第一模式传送的请求和以第二模式传送的请求。由此,处理器用于生成以第一模式传送请求的请求属性是足够的。因此,处理器只需要足够的硬件和软件资源来以第一格式生成请求的请求属性。这简化了总线系统的第一站的设计,由此使其更适合可携带应用。
根据本发明的总线系统的实施例的特征在于给所述第二站分配一个地址,所述请求属性包括地址信息,由此所述控制器用于通过所述地址信息确定所述请求分别是以所述第一还是第二格式传送。
一旦经由总线与第一站耦合,每个第二站通过与其以第一模式通信的第一指示器或者通过与其以第二模式通信的第二指示器来指示第一站。通过分配一个唯一的地址给每个经由总线与第一站耦合的第二站,控制器可以知道某个特定的第二站以第一模式还是第二模式通信。因此,包含在请求属性中的地址信息,对于控制器来说足够用以确定应当以那种格式发送请求并进而确定是否向译码器转发该请求。这进一步简化了第二站的设计。
根据本发明的总线系统的进一步的实施例的特征在于所述第一站还包括一个路由器,用于路由由所述控制器和译码器以第一和第二模式分别向所述总线传送的所述请求。
通过使用路由器,每个与第一站耦合的第二站要么与控制器或者与译码器耦合。通过这种方式,规避了控制器和译码器之间的总线冲突。这进一步简化了控制器和译码器的设计。
根据本发明的总线系统的又一个实施例的特征在于所述第一模式设想用于按第一通信速率以第一响应格式传输响应,以及第二模式也设想用于按第二通信速率以第二响应格式传输响应,所述第二站用于将响应以从包括所述第一和第二模式的一组模式中选择的模式传送到所述第一站,所述译码器用于以第二响应格式接收所述响应并将所述响应转发到所述控制器,所述控制器用于以所述第一响应格式接收所述响应并从所述响应以所述第一响应格式生成响应属性,和所述处理器用于处理由所述控制器生成的所述响应属性。
通过译码器以各自的第二格式处理请求和响应,进一步减少在第一站中要求的硬件和软件资源,从而使得该总线系统更适于可携带应用。
在总线系统中使用的根据本发明的站包括一个用于总线的连接,所述站被安排作根据所述工作站重复地向所述连接发射请求的协议而操作,所述协议包括用于按第一请求格式以第一通信速率传输所述请求的第一模式,和用于按第二请求格式以第二速率传输所述请求的至少第二模式,其特征在于所述站包括一个处理器、一个控制器和一个译码器,所述译码器用于以第一请求格式生成请求的请求属性,所述控制器用于从所述请求属性以第一请求格式生成所述请求,并进一步用于将所述请求以所述第一格式传送到所述连接并将所述请求转发到所述译码器,和所述译码器用于将所述请求以所述第二格式传送到所述连接。
在总线系统中使用的根据本发明的总线接口包括一个用于总线的连接和一个用于从处理器接收请求属性的输入,所述总线接口被安排作根据所述总线接口重复地向所述连接发送请求的协议而操作,所述协议包括用于按第一请求格式以第一通信速率传输所述请求的第一模式,和用于按第二请求格式以第二速率传输所述请求的至少第二模式,其特征在于所述总线接口包括一个控制器和一个译码器,由此所述输入用于以所述第一请求格式作请求的请求属性,所述控制器用于从所述请求属性以所述第一请求格式生成所述请求,进一步用于将所述请求以所述第一格式传送给所述连接并将所述请求转发给所述译码器,和所述译码器用于将所述请求以所述第二格式发送给所述连接。
在操作中,根据本发明的总线接口只以第一请求格式接收请求属性,作为其输入。控制器将只从处理器以第一请求格式接收请求属性。如果需要,译码器将请求翻译成以第二请求格式的请求。因此,控制器需要更少的硬件和软件资源,由此简化了其设计。从而使得总线接口更适于可携带应用。
通过下面的与附图相结合的详细的叙述,本发明上面的和其他目的和特征将变得显而易见,其中:
图1是一个框图,图示了根据本发明的总线系统;
图2是一个框图,图示了一种已知总线接口;
图3是一个框图,图示了一种已知译码器;
图4是一个框图,图示了根据本发明的总线接口。
在这些图中,相同的部分用相同的参考符号表示。
图1是一个框图,图示了根据本发明的总线系统。所图示的总线系统100,可以是例如USB2.0或OTG系统。其包括第一站或者主机10、第二站或者设备102、103,和将第一站101耦合到第二站102、103的总线104。第一站101包括处理器105、一个控制器106,控制器106也被称之为主机控制器、译码器107和路由器108,路由器108也称之为端口路由器。控制器106、译码器107和路由器108可如图1指示的那样包括到总线接口109中。
在USB2.0或OTG的总线系统中,设备102、103用于以三种可能的模式之一通信:高速、全速和低速。如果以也称之为第一模式的高速模式通信,或者以也统称之为第二模式的全速或低速模式通信,以一种在USB2.0规范中定义的通常的方式将一个指示传给主机101。这涉及在设备102、103连接到总线104和设备102、103重置之后发生的低级别信号通信。
在如USB2.0或OTG的中央总线系统中,操作中的主机101重复地将请求发送到设备102、103。设备通过应答的方式响应这些请求。在总线系统101中通信的第一模式中,请求按第一速率以第一请求模式由主机101传送并由设备102、103接收,同时响应按第一速率以第一响应模式由设备102、103传送并由主机接收。在总线系统101中通信的第二模式中,请求按第二速率以第二请求模式由主机101传送并由设备102、103接收,同时响应按第二速率以第二响应模式由设备102、103传送并由主机接收。对于详细的高速请求和响应(通信的第一模式)和全速以及低速请求(通信的第二模式)的格式的详细内容参考USB2.0规范。
在总线系统100中,处理器105可用于生成传送给设备102、103的请求的请求属性。处理器以第一请求格式生成请求的请求属性。基于例如包含在请求属性中的地址信息或者模式信息,控制器106确定基于请求属性的请求是以第一格式还是以第二格式传送。如果请求是以第一格式传送,由控制器106生成和传送请求。如果请求是以第二格式传送,由控制器106向译码器107转发请求或者请求属性。译码器107将请求或请求属性翻译成以第二格式的请求。路由器108将源至于控制器106和译码器107的请求路由到总线104。
处理器105还用于处理器由设备102、103传送的应答的响应属性。由主机101以第一响应格式接收的响应由路由器路由到控制器106。控制器106以第一格式生成响应的响应属性并将这些属性传送到处理器105。由主机101以第二响应格式接收的响应由路由器路由到译码器107。译码器107将以第二格式的响应翻译成以第一格式的响应,并将该响应转发给控制器106。该控制器106以第一格式生成响应的响应属性并将这些属性传送给处理器105。
这种请求和响应的通信方式的优点在于处理器105和控制器106都只需要以第一模式处理请求属性和请求。因此,在USB2.0或OTG的系统中,处理器105和控制器106可将设备102、103看作为高速设备。从而,处理器105和控制器106只需要维护高速通信。译码器107执行从高速通信到全速或者低速的所需要的翻译,以及反向翻译。
在USB2.0的系统中,控制器106是主机控制器,而处理器105是系统处理器,例如个人计算机的微控制器。在这样的系统中,控制器106和处理器105之间的通信将经由PCI总线发生。这样,请求和响应属性将以消息的形式经由PCI总线传输。在连接可携带应用和一个设备的OTG系统中,处理器105可以是可携带应用的系统处理器。在这样一个系统中,处理器105和控制器106之间的通信可以例如经由与处理器105的并行端口和控制器106的并行端口或者总线接口109连接的并行总线而进行。这样,请求和响应属性将以合适格式的消息的形式经由并行总线传输。
图2是一个框图,图示了一种已知总线接口。该框图显示如通用串行总线版本1.0的2002年3月12日的EHCI(加强主机控制器)规范中定义的USB2.0主机控制器,在此一并包括以作参考。也被称之为主机控制器200的总线接口,包括一个对系统处理器的接口201、也被称之为eHC的高速主机控制器202和也被称之为cHC的伙伴主机控制器203。根据EHCI规范,cHC应该是USB1.1兼容的。可忽略cHC。也可以有多个cHC。主机控制器202还包括一个路由器或端口路由逻辑204,也称之为PRL。端口路由逻辑路由高速主机控制器的端口205和配套主机控制器203的端口206到主机控制器200的根端口205。高速主机控制器202实现EHCI接口。其用于与主机控制器200的根端口205连接的高速设备的高速通信。EHCI规范允许与主机控制器200的根端口205连接的全速和低速设备的通信由配套USB1.1主机控制器203。高速主机控制器202不能用全速或低速设备操作。端口路由逻辑204是提供这种灵活的操作环境的关键。
配套主机控制器203可以是USB1.1主机控制器。其可以例如实现开放主机控制接口(OHCI)或通用总线主机控制接口(UHCI)。配套主机控制器203管理与根端口205连接的全速和低速USB设备。配套主机控制器203不了解高速主机控制器202。高速设备被路由到高速主机控制器202并受其控制。高速主机控制器202当在运行和配置时是所有根端口205的默认所有者。这表示所有的默认根端口205被路由到高速主机控制器的端口206。驻留在系统处理器的高速主机控制器202与其驱动程序软件一起检测所有接入的设备并将地址分配这些设备。如果接入的设备不是一个高速设备,高速主机控制器202放弃端口所有权,并因此把设备的控制交给配套主机控制器203。对于该端口,从初始接入检测点重新开始枚举并且在配套主机控制器203的控制下枚举设备并分配地址。否则,高速主机控制器保持端口的所有权,并且设备在高速主机控制器202的控制下完成枚举。
该所谓的“双引擎”结构的主要缺点在于在系统处理器上需要两个软件堆栈,一个用于实现EHCI的高速主机控制器202,而一个用于实现OHCI或UHCI的配套主机控制器203。这是主要的限制,特别是在嵌入式环境中,硬件和软件资源非常有限。该结构的其他实际缺点包括“双”调试工作,以及系统处理器上的操作系统的两套调度方案的实现。这都导致了需要更长时间来市场化。另外,与根据图1所示的根据本发明的总线接口109比较,该结构在主机控制器200中要求更多的硬件(更高的门计数)。
图3是一个框图,图示了一种已知译码器。该框图显示在USB2.0规范中指定的包含在USB2.0集线器中的事务译码器300。将简单讨论事务译码器300。更多的细节在USB2.0规范中提供。事务译码器300包括一个高速处理机301、一个全速/低速处理机302和缓冲器303、304、305和306。高速处理机301被安排用于以高速模式通信,接受来自主机的请求,这些请求被翻译成全速或者低速请求,并且传送对主机的响应,这些响应从全速或者低速的响应翻译而来。全速/低速处理机302接收来自来设备的响应,这些响应被翻译成高速响应,并且传送对设备的请求,这些请求从高速请求翻译而来。缓冲器303、304、305和306保存进行中的事务并在其被事务译码器300处理器时跟踪每个缓存的事务的状态。事务包括由主机发送的请求和由设备发送的响应。缓冲器303、304、305和306提供高速处理机301和全速/低速处理机302之间的连接。箭头表示数据的流向。
事务译码器300的状态跟踪取决于事务特定的USB调用类型。可能的调用类型有成批、控制、中断和同步。高速处理机301接受高速启动分裂事务或者响应高速完成分裂事务。高速处理机301将启动分裂事务放到缓存303和304,用于由全速/低速处理机302使用。
缓存的启动分裂事务为全速/低速处理机302提供允许其将对应的全速或低速事务分别发给全速或低速设备的信息。全速/低速处理机在缓存303和304中缓存这些全速或低速事务的结果,使得由高速处理机301用高速总线上对应的完成分裂事务将它们返回。
需要注意,在图3中所示的事务译码器不同于图1中所示的根据本发明的总线系统100中包括的译码器107。译码器107被合并到总线接口本身中而不在集线器中。在处理器105的方向、来自译码器107以及反向的通信是非USB通信。来往于事务译码器300的主机的上行流通信是高速USB通信。因此,在系统处理器中要求的USB1.1驱动程序软件的上面,实现高速、全速和低速通信的传统USB2.0系统要求具有一个事务译码器300的集线器,由此进一步增加了所需要求的硬件资源。
图4是一个框图,图示了根据本发明的总线接口。总线接口400包括到系统处理器的接口401、高速控制器402、译码器406和路由器407。高速控制器202包括一个结构解码器403、一个集线器模拟器404和一个高速包处理机405。
到系统处理器的接口401可以是任何系统总线的接口,例如PCI或者AHB总线。
高速控制器包括一个处理所有、也称之为请求属性的结构的结构解码器403,这在EHCI规范中定义。结构解码器403取出在EHCI规范中定义的数据结构并在这些结构中解码不同的字段。这些字段指定设备地址、设备端点号、设备速率、需要发送和接收的字节数等。基于解码的信息,结构解码器403将向集线器模拟器404、高速包处理机405和译码器406发起一个请求。
如果设备地址等于集线器模拟器404的地址,发出请求给集线器模拟器404,并且状态直接返回给系统处理器,并在系统存储器中更新而不使用USB总线。如果设备地址不等于集线器模拟器404的地址,设备速率字段指示哪个模块应该处理这个请求。如果设备速率字段指示一个高速设备,高速包处理机405处理该请求。高速包处理机405在所有高速端口408上发出一个高速USB事务。该USB事务的状态返回给结构解码器403,其将该状态信息返回给系统处理器,该处理器将状态信息在系统存储器中更新。如果设备速率字段指示全速或者低速设备,设备解码器发出一个请求给译码器406。译码器406将使用来自结构解码器403的信息,用以在全速和低速总线上发起一个USB事务。
高速包处理机405立刻在USB总线上发出结构解码器403的请求。译码器406在内部具有一个允许存储多个请求的队列系统。这样做的目的是与包括EHCI和USB2.0集线器的传统USB2.0系统兼容。在这样一个传统系统中,还必须发出两个高速事务,以便完成一个全速或低速事务。该第一高速事务给出事务解码器300的信息,如图3中所示,用以在全速和低速总线上发起事务。向事务解码器300发出第二高速事务,以检索在全速和低速总线上发出的事务的状态信息。
在根据本发明的总线接口400中,使用相同的原理,而不使用高速USB总线。两个请求都直接向译码器406发出。在称为启动分裂的第一请求之后,在全速/低速USB总线上发起事务。在称为完成分裂的第二请求后,译码器406将返回在全速/低速总线执行的事务的状态信息。基于USB规范,译码器406将在合适的时间在全速/低速总线上发起USB事务。这些事务的结果本地存储在译码器406并在接收到完成分裂后返回。
总线接口400与EHCI和USB2.0集线器的传统集合相比,其优点在于:在传统集合中,合并到USB2.0集线器中用如图3所示的事务译码器300的所有通信经由整个USB树发送。在总线接口400的体系结构中,高速USB调用可以与到译码器405的通信并行处理。
另外,在EHCI和USB2.0集线器的传统集合中,所有全速和低速总线通信量以高速传输到USB2.0集线器。在根据本发明的总线系统中,高速和全速/低速通信量相互分离。必须由译码器406发送的所有全速/低速交通量不在高速总线传输。这样降低了高速总线的负载并允许在高速总线上有比EHCI和USB2.0集线器的传统集合更多的事务。
也称之为端口路由逻辑的路由器407确定所连接的USB设备的速率。如果与路由器407的端口410连接的USB设备是一个高速设备,将把端口路由给高速包处理器405的对应的高速端口409。如果连接到端口410的设备是全速或低速端口409,将把端口410路由给译码器406的对应全速或低速端口409。
在这里描述的本发明的实施例是示例性的而不是限制的。本领域的技术人员可对这些实施例作出不同的修改,而不偏离本发明的在所附权利要求中定义的范围。