通用串行总线主机控制器及其控制方法

文档序号:6462933阅读:179来源:国知局
专利名称:通用串行总线主机控制器及其控制方法
技术领域
本发明一般涉及通用串行总线(Universal Serial Bus, USB)主机控制器, 更具体地,涉及一种符合USB2. 0规范的精简存储器的USB主机控制器及其控 制方法,其能够以精简化的存储器支持USB主机控制器与通用串行总线设备 之间的周期传车俞(Periodic Transfer)与异步传丰lr (Asynchronous Transfer)。
背景技术
USB是一种由Intel和Microsoft开发的外设总线的数据通信标准。最 大的特点是支持热插拔(Hot plug)和即插即用(Plug&Play)的功能。当设备插 入时,主机枚举(enumerate)此设备并加载所需的驱动程序,因此使用远比 PCI和ISA总线方便。通用串行总线可以连接的外部设备有鼠标、键盘、 gamepad、游戏杆、扫描4义、数码相机、打印才几、石更盘和网络部件等,其应用 非常广泛。USB目前常见的有两个规范,即USB 1. 1和USB 2. 0。 USB1. 1规范,其 高速方式的传输速率为12兆位/秒(Mbps),低速方式的传输速率为1. 5Mbps。 USB2.0规范是由USB 1.1规范演变而来的,传输速率可达到480Mbps,即 60MB/s,足以满足大多数外部设备的速率要求。USB 2.0中的"增强主机控 制器才妾口" (Enhanced Host Controller Interface, EHCI)定义了一个与USB 1. 1相兼容的架构,可以用USB 2. G的驱动程序驱动USB1. 1设备。也就是说, 所有支持USB1. 1的设备都可以直接在USB2. 0的接口上使用,而不必担心兼 容性问题,而且像USB线、插头等等附件也都可以直接使用。USB系统的设计为非对称式的,它由一个USB主机(host)控制器和若干 通过集线器(Hub)设备以树形连接USB设备所组成。USB主机控制器负责实现 主机与USB设备之间的物理数据传输,是构成USB主机不可或缺的核心部件。 USB主机控制器与USB设备之间传输数据的管道(Pipe)可分为四种类型控 制传输(Control Transfer),等时传输(Isochronous Transfer),中断传输 (Interrupt Transfer)和批量传输(Bulk Transfer)。其中,控制传输一般用于短的、简单的对设备的命令和状态反馈,例如用于总线控制的0号管道,0号管道是USB设备必备的管道,用于控制总线上的设备,其编号为0;等时 传输是按照保障连续的速度(可能但不必然是较快地)传输,可能有数据丢失 的问题,例如实时的音频、视频;中断传输用于必须保证尽快反应的设备(仅 容许有限延迟),例如鼠标、键盘;而批量传输是使用余下的带宽大量地(但 是没有对于延迟、连续性、带宽和速度的保证)传输数据,例如普通的文件传 输。根据这四种传输类型的特点, 一般将等时传输与中断传输统称为周期传 输(Periodic Transfer),将控制传输与批量传输统称为异步传输 (Asynchronous Transfer)。USB主机控制器作为USB主机的核心部件,其下最多可以有5级Hub,包 括各级的Hub在内,最多可以连接127个USB设备,而USB主才几可以同时有 多个USB主机控制器。由于现今USB的应用日益广泛,如何设计低成本,小 面积,高效能的USB主机控制器芯片,已成为USB系统设计中的一大焦点。发明内容有鉴于此,本发明的目的在于提供一种符合USB2. G规范的精简存储器的 USB主机控制器及其控制方法,其能够以精简化的存储器支持该USB主机控 制器与USB设备之间的周期传输与异步传输。根据本发明的一个方面,提供一种USB主机控制器,包括第一控制器, 用来控制主机与通用串行总线设备间的第一传输;第二控制器,用来控制该 主机与该通用串行总线设备间的第二传输;以及第一存储器,分别耦接于该 第一控制器与该第二控制器,用来緩存该主机控制器与该通用串行总线设备 间传输的数据;其中,于该第一传输阶段,该第一控制器存取该第一存储器, 于该第二传输阶段,该第二控制器存取该第一存储器。根据本发明的一个方面,提供一种应用于USB主机控制器的控制方法, 包括步骤于第一传输阶段,通过第一控制器存取第一存储器以执行该主机 控制器与通用串行总线设备间的第一传输;于第二传输阶段,通过第二控制 器存取该第一存储器以执行该主机控制器与该通用串行总线设备间的第二传 输;其中,该第一控制器与该第二控制器都是通过第一直接存储器存取引擎 存取该第一存储器。根据本发明的另 一个方面,该第 一传输为周期传输(Periodictransfer),该第 一 控制器为周期控制器;该第二传输为异步传输 (Asynchronous transfer),该第二控制器为异步控制器。本发明的USB主机控制器通过分阶段执行周期传输和异步传输,共享DMA 引擎和存储器,大大精简了 USB主机控制器的电路面积,并仍能有效避免其 内部的存储器出现超载或欠载的情况,此外,通过周期传输阶段结束时执行 预取功能,可进一步提高USB主机控制器的运作效能。


通过下面结合示例性地示出 一例的附图进行的描述,本发明的上述和其 他目的和特点将会变得更加清楚,其中图1是根据本发明的一个实施例应用于主机的USB主机控制器的示意图; 图2是根据本发明的另一个实施例应用于主机的USB主机控制器的示意图;图3是图2中的USB主机控制器与USB设备之间传输数据的微帧 (Microframe)才各式示意图;以及图4是根据本发明的一个实施例应用于图2的USB主机控制器的控制方 法的流程图。
具体实施方式
以下,参照附图来详细说明本发明的实施例。图l是根据本发明的一个实施例应用于主机的USB主机控制器的示意图, 如图所示,USB主机控制器14位于主机10内,与内存16相连接,USB设备 12通过总线的集线器(Hub)(图中未示出)连接到USB主机控制器14。通常, 当USB设备12连接到USB主机控制器14时,USB主机控制器14会分配一 个特定的7位地址给USB设备12,用以标识USB设备12。并且,USB主机控 制器14通过投票分配流量,例如通过轮询模式分配流量,因此,在没有明确 向USB主机控制器14提出请求之前,USB设备12不能传输数据。需要注意 的是,本发明所指的传输是指双向的传输,即数据从USB设备12传输到USB 主机控制器14,或是从USB主机控制器14传输到USB设备12。 一旦建立起 传输数据的管道,USB主机控制器14就可以控制各种类型的数据从USB设备 12传输到USB主机控制器14,或是从USB主机控制器14传输到USB设备12。根据前述两种不同的数据传输类型(周期传输和异步传输),USB主机控 制器14内设有对应的一个或多个周期控制器和异步控制器,在本发明的一个实施例中,USB主机控制器14内设有一个周期控制器101,和两个异步控制 器102、 103,以分别控制执行USB设备12与USB主机控制器14之间的周期 传输和异步传输,如图1所示。与此对应的,USB主机控制器14内设有三个 存储器,即第一存储器107、第二存储器108和第三存储器109,用来緩存 USB设备12与USB主机控制器14之间传输的数据。其中,当USB主机控制 器14执行周期传输时,周期控制器101通过第一直接存储器存取(DMA)引擎 104存取第一存储器107;而USB主机控制器14执行异步传输时,异步控制 器102和103分别通过第二DMA引擎105和第三画A引擎1106存取第二存储 器108和第三存储器109。在存储器的实现上,第一存储器107、第二存储器108和第三存储器109 均可为l争态随才几存取存^[诸器(Static Random Access Memory, SRAM),或者其 它类型的存储器装置。另外,由于目前USB设备的传输速率大大提高(高速 USB设备的传输速率已达到了 480Mbps),存储器的容量设计若不恰当,过大 会造成资源浪费,过小则极易在緩存传输的数据时,因存储器超载(Overrun) 或欠载(Underrun)而导致数据出错。因此,在本实施例中,存储器的容量设 计乃是以所传输数据包的最大容量为准,即第一存储器107的容量为周期传 输的最大数据包的容量256 x 32位(1024字节),第二存储器108和第三存储 器109的容量均为异步传输的最大数据包的容量128 x 32位(512字节)。如 此,以避免出现存储器的超载或欠载。上述的USB主机控制器14虽然能较好地支持高速USB设备与主机控制器 之间各种类型的数据传输,且能避免主机控制器内存储器的超载或欠载,但 由于其内部设置了多个DMA引擎和大容量的存储器,使得整个主机控制器的 电路面积增大,而其中DMA引擎和存储器可能就占据了主机控制器总电路面 积的70°/。,因此,本发明在上述USB主机控制器的基础上,作了进一步的精 简和改良设计,从而减少USB主机控制器的电路面积,以降低成本,请参见 下一实施例。请参考图2,图2是根据本发明的另一个实施例应用于主机的USB主机 控制器的示意图。同样,USB主机控制器24位于主机20内,与内存26相连 接,USB设备22通过总线的集线器(Hub)(图中未示出)连接到USB主机控制器24。USB主机控制器24内设有一个周期控制器201,和两个异步控制器202、 203,以分别控制执行USB设备22与USB主机控制器24之间的周期传输和异 步传输。本发明实施例的USB主机控制器内虽然共设置了三个控制器,但是 并不限定于此,本发明也适用于在内部设置其他数量或类型控制器的USB主 机控制器。与图1中的USB主机控制器14不同的是,本实施例的USB主机控制器 24内仅设置了两个存储器第一存储器207和第二存储器208,及对应的第 一DMA引擎204和第二DMA引擎205。由于USB设备22与USB主机控制器24 之间通常以微帧(Microframe)的形式传输数据,每一微帧以125毫秒为单位, 且在同一微帧的传输周期中,周期传输的优先级要高于异步传输,因此,本 实施例将每一微帧划分为两个阶段周期传输阶段和异步传输阶段。并于周 期传输阶段,USB主机控制器24仅执行周期传输;于异步传输阶段,仅执行 异步传输。请一并参考图3,图3绘示本发明一实施例的USB主机控制器24与USB 设备22之间传输数据的微帧格式。如图3所示,每一微帧时长为125毫秒, 以开始标识与结束标识为界。在传输数据时,先执行周期传输,再执行异步 传输。本实施例中的微帧时长也可为其他值,并不限定于l"毫秒。本发明一实施例的具体操作如下,于一微帧的周期传输—阶段,USB主机 控制器24内的周期控制器201通过第一DMA引擎204存取第一存储器207与 第二存储器208,且当周期控制器201存取第一存储器207达预定数量的数 据,例如存满或取空第一存储器207时,周期控制器201控制其内部的地址 指针指向第二存储器208,以通过第一 DMA引擎204接续存取第二存储器208。 如此,对于周期控制器201而言,其对应可存取的存储器容量相当于是第一 存储器207与第二存储器208的容量之和。而后,于同一微帧的异步传输阶 段,USB主机控制器24内的异步控制器202通过第一 DMA引擎204存取第一 存储器207,异步控制器203通过第二DMA引擎205存取第二存储器208。因 此,对于异步控制器202,其对应可存取的存储器容量为第一存储器207的 容量;而对于异步控制器203,其对应可存取的存储器容量为第二存储器208 的容量。需要注意的是,同一微帧执行完周期传输后,在异步传输阶段每次传输 一个异步传输的数据包之前,USB主机控制器24会通过其内部的计数器206计算微帧的剩余时间,以判定剩余时间是否足以传输一个完整的异步传输的数据包。若USB主机控制器24判定得出微帧的剩余时间足够传输一个完整的 异步传输的数据包,则异步控制器202或203控制传输一个异步传输的数据 包;当判定得出微帧的剩余时间不足以传输一个完整的异步传输的数据包时, 则异步控制器202与203停止执行异步传输,从而避免不必要的系统资源浪费。在存储器的实现上,第一存储器207和第二存储器208同样均可为静态 随机存取存储器,且为避免出现存储器的超载或欠载,存储器的容量设计仍 以所传输数据包的最大容量为准。根据本发明的一个实施例,第一存储器207 与第二存储器208的容量之和应等于或大于周期传输的最大数据包的容量, 且第一存储器207与第二存储器208的容量均应等于或大于异步传输的最大 数据包的容量。若周期传输的最大数据包的容量为1024字节,异步传输的最 大数据包的容量为512字节,则第一存储器207与第二存储器208的容量均 可设定为128 x 32位,这样,二者之和为1024字节,就能满足周期传输和异 步传输的需求。在不脱离本发明的精神的情况下,本发明的其它实施例也可 使用其它的存储器组合,例如设定第一存储器207和第二存储器208的容量 都等于或大于周期传输的最大数据包的容量,而第三存储器的容量等于或大 于异步传输的最大数据包的容量。本发明实施例中的存储器虽然使用的是SRAM,但是并不仅限于此,其他 可读写的存储器例如快闪(Flash)存储器等,都可用来作为本发明USB主机控 制器内的存储器,且存储器可以集成在同一芯片或是分开在两个芯片上,也 可以有不同的配置,例如一个存储器分成两部分,分别支持两种传输等。由此可见,图2的USB主机控制器24要比图1的USB主机控制器14至 少减少了三分之一的存储器面积和一个DMA引擎。因此,通过分阶段执行周 期传输和异步传输,共享DMA引擎和存储器,就能在保证存储器不出现超载 或欠载的基础上,减少存储器的容量和DMA引擎的个数,从而精简了整个USB 主机控制器的电路面积。为了进一步提高运作效能,本发明的USB主机控制器24可以于周期传输 阶段结束时执行预取功能,具体操作如下在周期传输阶段,当周期控制器 201控制传输最后一个周期传输的数据包期间,USB主机控制器24会检测第 一存储器207与第二存储器208的存储状态,若第一存储器207与第二存储器208之一被取空或者剩下小于预定数量的数据,则USB主机控制器24执行 预取操作,即预先从内存26取出一个或多个异步传输的数据包存入到被取空 或剩余数据不足预定数量的存储器中。这样,在接下去的异步传输阶段,若 执行的是从USB主机控制器24到USB设备22的异步传输,则开始发送的第 一个异步传输的数据包或者之后的数据包就不需要再从内存26中取出,而是 直接将存储器中緩存的异步传输的数据包发送给USB设备22,从而提高了工 作效能。为了更清楚地说明本发明的USB主机控制器的运作过程,请参考图4, 图4示出了应用于图2的USB主机控制器24的控制方法流程图。首先,在步 骤S41 , USB主机控制器24开始控制传输一微帧;在此微帧的传输周期中,USB 主机控制器24首先会通过周期控制器201执行第一传输,例如通过存取第一 存储器207或第二存储器208执行周期传输,如步骤S42。在步骤S43,如上 文所述,在周期传输的最后一个数据包时,USB主机控制器24会检测第一存 储器207与第二存储器208的存储状态,判断是否有足够的存储空间,例如 剩余可用空间大于预定数量,或是其中一个存储器被取空。若上述条件成立, 例如第一存储器207与第二存储器208之一空出预定数量的空间,则进入步 骤S44, USB主机控制器24执行预取操作,将从内存中预取的一或多个第二 传输(例如异步传输)的数据包存入空出足够空间的存储器,例如存入到空出 预定数量空间的存储器;反之,则返回步骤S42,继续执行周期传输。而后, 进入第二传输阶段,例如对第二存储器208进行存取的异步传输阶段。在步 骤S45, USB主机控制器24通过其内部的计数器206计算微帧的剩余时间; 并判断剩余时间是否足以传输一个完整的异步传输的数据包,如步骤S46。 若剩余时间足够传输一个完整的异步传输的数据包,则异步控制器202或203 控制传输一个异步传输的数据包,如步骤S47;若剩余时间不足以传输一个 完整的异步传输的数据包时,则异步控制器202与203停止执行异步传输, 即结束。因此,在异步传输阶段,每次传输一个异步传输的数据包前,本发 明的USB主机控制器24都会计算微帧的剩余时间,唯有剩余时间充足才会执 行异步传输操作,如此循环往复,直至微帧的剩余时间不再足以传输整个异 步传输的数据包,便就此结束。需要说明的是,本发明所述的主机可为计算机,或是其他便携式设备等; 而本发明的USB主机控制器可为符合增强主机控制器接口 (EHCI)规范的主机控制器。此外,虽然本发明的USB主机控制器是以包含一个周期控制器与两 个异步控制器为例,但其并不限于上述的周期控制器或异步控制器的数目,对于包含多个周期控制器或异步控制器的USB主机控制器,仍可沿用本发明的发明构思,并同样能达到精简电路面积的功效。另外,除上述实施例外,本发明亦适用于其他类型的传输装置,而不仅限于USB主机控制器。综上所述,本发明的USB主机控制器通过分阶段执行周期传输和异步传 输,共享DMA引擎和存储器,大大精简了 USB主机控制器的电路面积,并仍 能有效避免其内部的存储器出现超载或欠载的情况,此外,通过周期传输阶 段结束时执行预取功能,进一步提高了 USB主机控制器的运作效能。本发明虽以优选实施例披露如上,然其并非用以限定本发明的范围,本 领域技术人员在不脱离本发明的精神和范围的前提下,可做各种的更动与润 饰,因此本发明的保护范围以本发明的权利要求为准。
权利要求
1. 一种通用串行总线主机控制器,包括第一控制器,用来控制主机与通用串行总线设备间的第一传输;第二控制器,用来控制该主机与该通用串行总线设备间的第二传输;以及第一存储器,分别耦接于该第一控制器与该第二控制器,用来缓存该主机控制器与该通用串行总线设备间传输的数据;其中,于该第一传输阶段,该第一控制器存取该第一存储器,于该第二传输阶段,该第二控制器存取该第一存储器。
2. 如权利要求1所述的通用串行总线主机控制器,还包括第一直接存储器存取引擎,其中该第一控制器与该第二控制器都是通过 该第一直接存储器存取引擎存取该第一存储器。
3. 如权利要求1所述的通用串行总线主机控制器,还包括第二存储器, 其中于该第一传输阶段,该第一控制器同时存取该第二存储器。
4. 如权利要求3所述的通用串行总线主机控制器,还包括第一直接存储 器存取引擎,其中于该第一传输阶段,该第一控制器是通过控制该第一直接 存储器存取引擎存取该第一存储器与该第二存储器,于该第二传输阶段,该 第二控制器通过该第一直接存储器存取引擎存取该第一存储器。
5. 如权利要求3所述的通用串行总线主机控制器,还包括第三控制器, 其中于该第二传输阶段,该第三控制器存取该第二存储器;以及第二直接存 储器存取引擎,其中于该第二传输阶段,该第三控制器通过该第二直接存储 器存取引擎存取该第二存储器。
6. 如权利要求3所述的通用串行总线主机控制器,其中于该第一传输阶 段,当该第 一控制器存取达预定数量的数据或者该第 一存储器被存满或取空 时,该第一控制器控制地址指针指向该第二存储器,以接续存取该第二存储 器。
7. 如权利要求3所述的通用串行总线主机控制器,其中于该第一传输阶 段,当该第一控制器控制传输最后一个第一传输的数据包期间,若该第一存 储器与该第二存储器之一空出预定数量空间或者被取空时,则该主机控制器 执行预取操作,以预先从该主机取出一个或多个该第二传输的数据包存入到空出该预定数量空间或者被取空的存储器中。
8. 如权利要求3所述的通用串行总线主机控制器,其中该第一存储器与该第二存储器的容量之和大于或等于该第一传输的最大数据包的容量;且该 第一存储器与该第二存储器的容量均大于或等于该第二传输的最大数据包的容量。
9. 如权利要求1所述的通用串行总线主机控制器,还包括计数器,且该 主机控制器与该通用串行总线设备间是以该微帧的形式来执行该第一传输与 该第二传输,在每一该微帧的传输周期中,该第一控制器先控制执行该第一 传输,而后该第二控制器再控制执行该第二传输。
10. 如权利要求9所述的通用串行总线主机控制器,其中在同一该微帧 中,在每次传输该第二传输的数据包之前,该计数器计算该微帧的剩余时间,以判定剩余时间是否足够传输整个该第二传输的数据包;当判定得出该微帧 的剩余时间足够传输整个该第二传输的数据包时,则该第二控制器控制传输该第二传输的数据包;当判定得出该微帧的剩余时间不足以传输整个该第二传输的数据包时,则该第二控制器停止执行该第二传输。
11. 如权利要求1所述的通用串行总线主机控制器,其中该第一传输为周期传输,该第一控制器为周期控制器;该第二传输为异步传输,该第二控 制器为异步控制器;其中该第一传输的优先级高于该第二传输。
12. —种应用于通用串行总线的主机控制器的控制方法,包括步骤 于第一传输阶段,通过第一控制器存取第一存储器以执行该主机控制器与通用串行总线设备间的第一传输;于第二传输阶段,通过第二控制器存取该第 一存储器以执行该主机控制器与该通用串行总线设备间的第二传输;其中,该第 一控制器与该第二控制器都是通过第 一直接存储器存取引擎 存取该第一存储器。
13. 如权利要求12所述的控制方法,其中该主机控制器与该通用串行总 线设备间是以微帧的形式来执行该第 一传输与该第二传输,且在每一该微帧 中,该第一控制器先执行该第一传输,而后该第二控制器再执行该第二传输。
14. 如权利要求13所述的控制方法,其中在同一该微帧中,在每次传输 该第二传输的数据包之前,该主机控制器计算该微帧的剩余时间,以判定剩 余时间是否足够传输整个该第二传输的数据包。
15. 如权利要求14所述的控制方法,其中当判定得出该微帧的剩余时间足够传输整个该第二传输的数据包时,则该第二控制器传输一个该第二传输的数据包;当判定得出该微帧的剩余时间不足以传输整个该第二传输的数据 包时,则该第二控制器停止执行该第二传输。
16. 如权利要求12所述的控制方法,还包括于该第一传输阶段,该第一控制器通过该第一直接存储器存取引擎同时 存取第二存储器。
17. 如权利要求16所述的控制方法,还包括于该第二传输阶段,使第三控制器通过第二直接存储器存取引擎存取该 第二存储器。
18. 如权利要求16所述的控制方法,其中于该第一传输阶段,当该第一 控制器存取该第一存储器达预定数量的数据时,使该第一控制器的地址指针 指向该第二存储器,以接续存取该第二存储器。
19. 如权利要求16所述的控制方法,其中于该第一传输阶段,在该第一 传输的数据包传送期间,若该第一存储器与该第二存储器之一空出预定数量 空间,则执行预取操作,以预先从主机取出一个或多个该第二传输的数据包 存入到空出该预定数量空间的存储器中。
20. 如权利要求12所述的控制方法,其中该第一传输为周期传输,该第 一控制器为周期控制器;该第二传输为异步传输,该第二控制器为异步控制 器。
全文摘要
本发明涉及一种符合通用串行总线(USB)2.0规范的精简存储器的USB主机控制器及其控制方法,其能够以精简化的存储器支持该USB主机控制器与通用串行总线设备之间的周期传输与异步传输。该USB主机控制器包括第一控制器,用来控制主机与通用串行总线设备间的第一传输;第二控制器,用来控制该主机与该通用串行总线设备间的第二传输;以及第一存储器,分别耦接于该第一控制器与该第二控制器,用来缓存该主机控制器与该通用串行总线设备间传输的数据;其中,于该第一传输阶段,该第一控制器存取该第一存储器,于该第二传输阶段,该第二控制器存取该第一存储器。
文档编号G06F13/28GK101266584SQ20081009954
公开日2008年9月17日 申请日期2008年5月13日 优先权日2008年5月13日
发明者欣 张, 李德建, 李文彬 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1