CN103455462B - 通用串行总线主机控制器及其排程方法 - Google Patents
通用串行总线主机控制器及其排程方法 Download PDFInfo
- Publication number
- CN103455462B CN103455462B CN201310202705.7A CN201310202705A CN103455462B CN 103455462 B CN103455462 B CN 103455462B CN 201310202705 A CN201310202705 A CN 201310202705A CN 103455462 B CN103455462 B CN 103455462B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- serial bus
- universal serial
- bus device
- end points
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
一种通用串行总线主机控制器。上述通用串行总线主机控制器包括端点管理单元、传输管理单元与排程管理单元。上述端点管理单元管理通用串行总线装置的端点配置,其中上述通用串行总线装置包括多个端点以及上述端点配置包括上述通用串行总线装置的上述多个端点的多个状态。上述传输管理单元传输关于上述通用串行总线装置的上述端点在系统内存以及上述通用串行总线主机控制器之间的传输信息的数据。上述排程管理单元同时地管理上述通用串行总线装置的至少上述两个端点的封包传输。本申请提出的通用串行总线主机控制器及其排程方法使得流程之间的延迟减少。
Description
交叉引用
依据2012年5月29日提出的申请号为61/652,555的美国专利申请,本申请享有优先权。
技术领域
本发明是有关于一种通用串行总线(Universal Serial Bus,USB)主机控制器,特别是有关于一种通用串行总线主机控制器的排程(scheduling)方法。
背景技术
通用串行总线(Universal Serial Bus,USB)为连接外部设备的一种串行总线标准,其可支持热插入(Hot plug)和即插即用(Plug and Play)等功能。
现今,USB 2.0规格可提供低速、全速以及高速传输,其可分别支持最大1.5Mbps、12Mbps及480Mbps的资料量。然而,随着复杂功能的增加,电子产品需要更高速的USB传输速率,以便能更快速地从外部设备存取数据并执行相关的操作流程。
因此,USB实施论坛(USB Implementers Forum)制订了USB 3.0的规格,其可同时提供超高速(SuperSpeed)以及非超高速(即USB 2.0)的信息交换,其中超高速传输可支持最大5G bps的数据量。
发明内容
为了提升通用串行总线装置与通用串行总线主机控制器之间的排程效率,本申请提出一种通用串行总线主机控制器及其排程方法。
本发明提供一种通用串行总线(USB)主机控制器,包括:端点管理单元,用来管理通用串行总线装置的端点配置,其中上述通用串行总线装置包括多个端点以及上述端点配置包括上述通用串行总线装置的上述多个端点的多个状态;传输管理单元,用来传输关于上述通用串行总线装置的上述端点在系统内存以及上述通用串行总线主机控制器之间的传输信息的数据;以及排程管理单元,用来同时地管理上述通用串行总线装置的至少上述两个端点的封包传输。
再者,本发明提供一种排程方法,适用于通用串行总线主机控制器。上述通用串行总线主机控制器是耦接于包括多个端点的通用串行总线装置。通过排程管理单元,管理上述通用串行总线装置的上述多个端点的封包传输。管理上述通用串行总线装置的每一上述端点的封包传输的步骤包括六阶段:得到上述通用串行总线装置的上述多个端点之一者的状态;得到上述通用串行总线装置的上述多个端点的该者的传输信息;传送封包至上述通用串行总线装置的上述多个端点的该者;得到来自于上述通用串行总线装置的上述多个端点的该者的响应;更新上述通用串行总线装置的上述多个端点的该者的传输信息;以及更新上述通用串行总线装置的上述多个端点的该者的状态。六个阶段中的至少两阶段会同时被上述通用串行总线装置的不同端点所执行。
再者,本发明提供一种排程方法,适用于通用串行总线主机控制器。上述通用串行总线主机控制器是耦接于包括多个端点的通用串行总线装置。通过排程管理单元,管理上述通用串行总线装置的上述多个端点的封包传输。管理上述通用串行总线装置的每一上述端点的封包传输的步骤包括六阶段:得到上述通用串行总线装置的所对应的上述端点的状态;得到上述通用串行总线装置的所对应的上述端点的传输信息;传送封包至上述通用串行总线装置的所对应的上述端点;得到来自上述通用串行总线装置的所对应的上述端点的响应;更新上述通用串行总线装置的所对应的上述端点的传输信息;以及更新上述通用串行总线装置的所对应的上述端点的状态。六个阶段中的至少两阶段会同时被上述通用串行总线装置的所对应的上述端点的不同封包所执行。
本申请提出的通用串行总线主机控制器及其排程方法使得流程之间的延迟减少,而通用串行总线装置以及通用串行总线主机控制器之间的通用串行总线带宽可以更有效地使用。
附图说明
图1是显示传统通用串行总线(USB)主机控制器;
图2是显示在图1中通用串行总线主机控制器与通用串行总线装置的端点EP1和EP2之间的数据传输的示意图;
图3是显示根据本发明一实施例所述的通用串行总线主机控制器;
图4是显示根据本发明另一实施例所述的通用串行总线主机控制器;
图5A与图5B是显示根据本发明一实施例所述的排程方法,适用于图3的通用串行总线主机控制器;
图6是显示在图4的通用串行总线主机控制器以及通用串行总线装置之间根据图5A与图5B所述的排程方法的数据传输的示意图;
图7是显示根据本发明另一实施例所述的排程方法,适用于图4的通用串行总线主机控制器300;以及
图8A与图8B是显示在图4的通用串行总线主机控制器以及通用串行总线装置之间根据图7所述的排程方法的数据传输的示意图。
具体实施方式
在说明书及权利要求书当中使用了某些词汇来指称特定的组件。本领域技术人员应可理解,硬件制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求书当中所提及的“包含”为开放式的用语,故应解释成“包含但不限定于”。另外,“耦接”一词在此是包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表该第一装置可直接电气连接于该第二装置,或通过其他装置或连接手段间接地电气连接至该第二装置。
图1显示传统通用串行总线(Universal Serial Bus,USB)主机控制器100。通用串行总线主机控制器100包括端点管理单元110、传输管理单元120以及排程管理单元130。通用串行总线主机控制器100是经由扩展主控制器接口(Extensible Host ControllerInterface,xHCI)总线40耦接于系统内存20。再者,通用串行总线主机控制器100是经由USB连接耦接于通用串行总线装置10,其中通用串行总线装置10包括多个端点EP1、EP2、EP3、EP4以及EP5。每一端点是通用串行总线装置10中唯一可寻址的部分,其可以是在通用串行总线主机控制器100与通用串行总线装置10之间通信流程的信息的来源或是目的地。在通用串行总线主机控制器100中,路径A是表示当通用串行总线装置10的一个端点被启动时,排程管理单元130会从端点管理单元110得到通用串行总线装置10的该端点的状态(例如16字节的端点内容)。接着,路径B是表示排程管理单元130会得到来自于传输管理单元120且对应于该端点的传输信息(例如16字节队列描述符(queue descriptor)以及1024字节数据内容)。当通用串行总线主机控制器100执行一个输出操作(OUT operation)来将数据存储至通用串行总线装置10时,路径C是表示排程管理单元130会提供对应于传输信息的封包(例如数据包头(Data Packet Header,DPH)以及数据封包负载(Data Packet Payload,DPP)以及对应于欲存储的数据的封包至通用串行总线装置10。再者,当通用串行总线主机控制器100执行该输出操作时,路径D是表示排程管理单元130会得到来自通用串行总线装置10的响应,其中通用串行总线装置10是根据来自于通用串行总线主机控制器100的每一封包而提供响应。另一方面,当通用串行总线主机控制器100执行输入操作(IN operation)来读取存储在通用串行总线装置10内的数据时,路径C是表示排程管理单元130会提供对应于传输信息的封包(例如数据包头以及数据封包负载)至通用串行总线装置10。再者,当通用串行总线主机控制器100执行该输入操作时,路径D是表示排程管理单元130会得到来自于通用串行总线装置10的响应以及对应于所存储的数据的封包,其中通用串行总线装置10是根据来自于通用串行总线主机控制器100的封包而提供响应。接着,路径E是表示排程管理单元130会根据来自通用串行总线装置10的响应而将传输信息更新至传输管理单元120。接着,路径F是表示排程管理单元130会相应于已更新的传输信息,而将通用串行总线装置10的该端点的状态更新至端点管理单元110。
图2是显示在图1中通用串行总线主机控制器100与通用串行总线装置10的端点EP1和EP2之间的数据传输的示意图。同时参考图1与图2,在时间周期T1,通用串行总线装置10的端点EP1的流程被启动,以及排程管理单元130会经由路径A而从端点管理单元110得到通用串行总线装置10的端点EP1的状态。然后,排程管理单元130会经由路径B而得到来自于传输管理单元120且对应于端点EP1的传输信息。接着,在时间周期T2,串行总线主机控制器100的排程管理单元130会经由路径C提供封包EP1_PKT至通用串行总线装置10的端点EP1。然后,通用串行总线装置10的端点EP1会经由路径D提供响应EP1_RESP至串行总线主机控制器100的排程管理单元130。接着,在时间周期T3,根据响应EP1_RESP,排程管理单元130会经由路径E来将对应于端点EP1的传输信息更新至传输管理单元120。然后,排程管理单元130会经由路径F而将通用串行总线装置10的端点EP1的状态更新至端点管理单元110。于是,完成了通用串行总线装置10的端点EP1的流程。接着,在时间周期T4,通用串行总线装置10的端点EP2的流程被启动,以及排程管理单元130会经由路径A而从端点管理单元110得到通用串行总线装置10的端点EP2的状态。然后,排程管理单元130会经由路径B而得到来自于传输管理单元120且对应于端点EP2的传输信息。接着,在时间周期T5,串行总线主机控制器100的排程管理单元130会经由路径C而提供封包EP2_PKT至通用串行总线装置10的端点EP2。然后,通用串行总线装置10的端点EP2会经由路径D来提供响应EP2_RESP至串行总线主机控制器100的排程管理单元130。接着,在时间周期T6,根据响应EP2_RESP,排程管理单元130会经由路径E而将对应于端点EP2的传输信息更新至传输管理单元120。然后,排程管理单元130会经由路径F而将通用串行总线装置10的端点EP2的状态更新至端点管理单元110。于是,完成了通用串行总线装置10的端点EP2的流程。在图2中,端点EP1的流程以及端点EP2的流程是依序被执行的。因此,在端点EP1与端点EP2的流程之间会有大的延迟(latency)存在。
图3是显示根据本发明实施例所述的通用串行总线主机控制器200。通用串行总线主机控制器200包括端点管理单元210、传输管理单元220以及排程管理单元230。端点管理单元210是用来管理通用串行总线装置10的端点配置,其中端点配置包括通用串行总线装置10的端点EP1-EP5的多个状态。传输管理单元220是用来传输关于通用串行总线装置10的端点EP1-EP5在系统内存20与通用串行总线主机控制器200之间的传输信息的数据。在通用串行总线装置10,每一端点EP1-EP5可执行个别的操作。举例来说,端点EP1是执行输出操作(OUT operation),而端点EP2是执行输入操作(IN operation)。排程管理单元230包括多个阶段处理单元240_1-240_n,用来并行地(parallel)处理通用串行总线装置10的端点EP1-EP5的流程,其中每一阶段处理单元240_1-240_n是用来管理通用串行总线装置10的端点EP1-EP5的路径A、B、C、D、E与F的至少一个路径。
图4是显示根据本发明另一实施例所述的通用串行总线主机控制器300。通用串行总线主机控制器300包括端点管理单元310、传输管理单元320以及排程管理单元330,其中排程管理单元330包括六个阶段处理单元340_1至340_6,用来分别管理路径A、B、C、D、E与F的操作。图5A与图5B是显示根据本发明实施例所述的排程方法,适用于图3的通用串行总线主机控制器300。根据该排程方法,排程管理单元330的排程流程可划分成不同子流程,且排程管理单元330的阶段处理单元340_1至340_6是以管线式(pipeline)方式来负责管理每一个子流程。参考图4以及图5A与图5B,首先,在步骤S502,端点EP1的流程被启动,而阶段处理单元340_1会从端点管理单元310得到通用串行总线装置10的端点EP1的状态(例如16字节端点内容)。接着,在步骤S504,相应于端点EP1的状态,阶段处理单元340_2会从传输管理单元320得到通用串行总线装置10的端点EP1的传输信息(例如16字节组队列描述符以及1024字节数据内容)。接着,在步骤S506,阶段处理单元340_3会根据端点EP1的传输信息来传送封包EP1_PKT至通用串行总线装置10的端点EP1。接着,在步骤S508,阶段处理单元340_4会得到来自于通用串行总线装置10的端点EP1的响应EP1_RESP,其中通用串行总线装置10的端点EP1是根据所接收到的封包EP1_PKT而来提供响应EP1_RESP至阶段处理单元340_4。接着,在步骤S510,根据来自于通用串行总线装置10的响应EP1_RESP,阶段处理单元340_5会将通用串行总线装置10的端点EP1的传输信息更新至传输管理单元320。接着,在步骤S512,相应于已更新的传输信息,阶段处理单元340_6会将通用串行总线装置10的端点EP1的状态更新至端点管理单元310。于是,完成了端点EP1的流程。再者,当端点EP2的流程被启动时,阶段处理单元340_1会从端点管理单元310得到通用串行总线装置10的端点EP2的状态(步骤S522)。在此实施例中,当封包EP1_PKT被传送至通用串行总线装置10的端点EP1(步骤S506)时,端点EP2的流程会被启动。值得注意的是,在步骤S506启动端点EP2的流程仅作为例子。因此,在启动了端点EP1的流程(例如步骤S502)之后,可以在任何时间点来启动端点EP2的流程,如虚线所显示。在排程管理单元330中,阶段处理单元340_1能在步骤S502之后对所得到的端点EP2的状态进行处理,因此可管线式地执行不同端点的流程。再者,在步骤S524,相应于端点EP2的状态,阶段处理单元340_2会从传输管理单元320得到通用串行总线装置10的端点EP2的传输信息。接着,在步骤S526,阶段处理单元340_3会根据端点EP2的传输信息而传送封包EP2_PKT至通用串行总线装置10的端点EP2。接着,在步骤S528,相应于封包EP2_PKT,阶段处理单元340_4会得到来自于通用串行总线装置10的端点EP2的响应EP2_RESP。接着,在步骤S530,根据来自于通用串行总线装置10的响应EP2_RESP,阶段处理单元340_5会将通用串行总线装置10的端点EP2的传输信息更新至传输管理单元320。接着,在步骤S532,相应于已更新的传输信息,阶段处理单元340_6会将通用串行总线装置10的端点EP2的状态更新至端点管理单元310。于是,完成了端点EP2的流程。相似地,当端点EP3的流程被启动时,阶段处理单元340_1会从端点管理单元310得到通用串行总线装置10的端点EP3的状态(步骤S542)。在此实施例中,当得到端点EP2的传输信息(步骤S524)时,端点EP3的流程会被启动。值得注意的是,在步骤S524中启动端点EP3的流程仅作为例子。因此,在启动了端点EP2的流程(例如步骤S522)之后,可以在任何时间点来启动端点EP3的流程,如虚线所显示。在排程管理单元330中,阶段处理单元340_1能在步骤S522之后对所得到的端点EP3的状态进行处理,因此可管线式地执行不同端点的流程。再者,在步骤S544,相应于端点EP3的状态,阶段处理单元340_2会从传输管理单元320得到通用串行总线装置10的端点EP3的传输信息。接着,在步骤S546,阶段处理单元340_3会根据端点EP3的传输信息而传送封包EP3_PKT至通用串行总线装置10的端点EP3,以及下一个端点的流程会被启动,以此类推。因此,通过使用阶段处理单元340_1至340_6,排程管理单元330可以同时地执行通用串行总线装置10的端点EP1-EP5的不同流程。值得注意的是,排程管理单元330包括六个阶段处理单元340_1-340_6仅作为例子,并非用来限定本发明。
图6是显示在图4的通用串行总线主机控制器300以及通用串行总线装置10之间根据图5A与图5B所述的排程方法的数据传输的示意图。在图6中,通用串行总线主机控制器300以及通用串行总线装置10建立了USB 3.0通信,其中通用串行总线主机控制器300是经由传送器差动信号对(transmitter differential signals)SSTX+/SSTX-来传送封包至通用串行总线装置10,而通用串行总线主机控制器300是经由接收器差动信号对(receiverdifferential signals)SSRX+/SSRX-而接收到来自通用串行总线装置10的响应。同时参考图5A、图5B与图6,在时间周期P1中,通用串行总线装置10的端点EP1的流程被启动,且步骤S502与步骤S504会被执行。在时间周期P2,执行步骤S506来提供来自通用串行总线主机控制器300的封包EP1_PKT至通用串行总线装置10。然后,通用串行总线装置10会提供响应EP1_RESP至通用串行总线主机控制器300(步骤S508)。在传送封包EP1_PKT至通用串行总线装置10之后,可在时间周期P3内对通用串行总线装置10的端点EP2执行步骤S522以及步骤S524。在接收到响应EP1_RESP之后,可在时间周期P4内对端点EP1执行步骤S510以及步骤S512。在时间周期P5,执行步骤S526以提供来自通用串行总线主机控制器300的封包EP2_PKT至通用串行总线装置10。然后,通用串行总线装置10会提供响应EP2_RESP至通用串行总线主机控制器300(步骤S528)。在传送了封包EP2_PKT至通用串行总线装置10之后,可在时间周期P6内对通用串行总线装置10的端点EP3执行步骤S542以及步骤S544。在接收到响应EP2_RESP之后,可在时间周期P7内对通用串行总线装置10的端点EP2执行步骤S530以及步骤S532。在时间周期P8,执行步骤S546以提供来自通用串行总线主机控制器300的封包EP3_PKT至通用串行总线装置10。然后,通用串行总线装置10会提供响应EP3_RESP至通用串行总线主机控制器300。因此,排程管理单元330可同时处理端点EP1、EP2与EP3的不同流程。相较于图2的传统数据传输,图6中不同端点的流程之间的延迟会减少,而通用串行总线装置10以及通用串行总线主机控制器300之间的USB总线带宽可以更有效地使用。相似地,图5A与图5B的排程方法可使用在USB2.0通信中,其中通用串行总线主机控制器以及通用串行总线装置是经由一差动信号对(differential signals)D+/D-来传送封包以及响应。
图7是显示根据本发明另一实施例所述的排程方法,适用于图4的通用串行总线主机控制器300。参考图4与图7,首先,在步骤S702,端点EP1的流程被启动,而阶段处理单元340_1会从端点管理单元310得到通用串行总线装置10的端点EP1的状态(例如16字节端点内容)。接着,在步骤S704,相应于端点EP1的状态,阶段处理单元340_2会从传输管理单元320得到通用串行总线装置10的端点EP1的传输信息(例如16字节组队列描述符以及1024字节数据内容)。接着,在步骤S706,根据在步骤S704所得到的端点EP1的传输信息,阶段处理单元340_3可传送封包EP1_PKT1至通用串行总线装置10的端点EP1,而端点EP1的下一个流程会被启动。值得注意的是,在步骤S706中启动端点EP1的下一个流程仅是个例子。因此,在阶段处理单元340_2得到端点EP1的目前流程的传输信息(例如步骤S704)之后,可以在任何时间点来启动端点EP1的下一个流程,如虚线所显示。在排程管理单元330中,阶段处理单元340_2能在步骤S704之后对所得到的端点EP1的下一个流程的传输信息进行处理,因此可管线式地执行端点EP1的不同流程。接着,在步骤S708,阶段处理单元340_4得到来自于通用串行总线装置10的端点EP1的响应EP1_RESP1,其中通用串行总线装置10的端点EP1会根据所接收的封包EP1_PKT1来提供响应EP1_RESP1至阶段处理单元340_4。接着,在步骤S710,根据来自于通用串行总线装置10的响应EP1_RESP1,阶段处理单元340_5会将通用串行总线装置10的端点EP1的传输信息更新至传输管理单元320。于是,完成了端点EP1的目前流程。此外,当端点EP1的下一个流程被启动时,相应于端点EP1的状态,阶段处理单元340_2会从传输管理单元320得到通用串行总线装置10的端点EP1的传输信息(步骤S724)。接着,在步骤S726,根据在步骤S724所得到的端点EP1的传输信息,阶段处理单元340_3会传送封包EP1_PKT2至通用串行总线装置10的端点EP1,且端点EP1的最后流程会被启动。如先前所描述,可以在步骤S724之后的任何时间点来启动端点EP1的最后流程,因此可管线式地执行端点EP1的不同流程。接着,在步骤S728,相应于封包EP1_PKT2,阶段处理单元340_4会得到来自于通用串行总线装置10的端点EP1的响应EP1_RESP2。接着,在步骤S730,阶段处理单元340_5会根据来自于通用串行总线装置10的响应EP1_RESP2,而将通用串行总线装置10的端点EP1的传输信息更新至传输管理单元320。于是,完成了端点EP1的下一个流程。再者,当端点EP1的最后流程被启动时,阶段处理单元340_2会相应于端点EP1的状态而从传输管理单元320得到通用串行总线装置10的端点EP1的传输信息,且端点EP2的流程会被启动(步骤S744)。接着,在步骤S746,根据在步骤S744所得到的端点EP1的传输信息,阶段处理单元340_3会根据在步骤S744所得到的端点EP1的传输信息来传送封包EP1_PKT3至通用串行总线装置10的端点EP1。接着,在步骤S748,阶段处理单元340_4会得到来自于通用串行总线装置10的端点EP1的响应EP1_RESP3,其中通用串行总线装置10的端点EP1会根据所接收到的封包EP1_PKT3而来提供响应EP1_RESP3至阶段处理单元340_4。接着,在步骤S750,阶段处理单元340_5会根据来自通用串行总线装置10的响应EP1_RESP3,而将通用串行总线装置10的端点EP1的传输信息更新至传输管理单元320。接着,在步骤S752,相应于在步骤S750所更新的传输信息,阶段处理单元340_6会将通用串行总线装置10的端点EP1的状态更新至端点管理单元310。于是,完成了端点EP1的最后流程。再者,当端点EP2的流程被启动时,阶段处理单元340_1会从端点管理单元310得到通用串行总线装置10的端点EP2的状态(步骤S762)。接着,在步骤S764,相应于端点EP2的状态,阶段处理单元340_2会从传输管理单元320得到通用串行总线装置10的端点EP2的传输信息。接着,在步骤S766,阶段处理单元340_3会根据端点EP2的传输信息而传送封包EP2_PKT至通用串行总线装置10的端点EP2,且下一端点的流程会被启动。接着,在步骤S768,相应于封包EP2_PKT,阶段处理单元340_4会得到来自于通用串行总线装置10的端点EP2的响应EP2_RESP,以此类推。因此,通过使用阶段处理单元340_1至340_6,排程管理单元330可同时地执行通用串行总线装置10中不同端点的不同流程以及具有多封包的单一端点的不同流程。
图8A与图8B是显示在图4的通用串行总线主机控制器300以及通用串行总线装置10之间根据图7所述的排程方法的数据传输的示意图。在图8A与图8B中,通用串行总线主机控制器300以及通用串行总线装置10建立了USB 3.0通信,其中通用串行总线主机控制器300是经由传送器差动信号对SSTX+/SSTX-来传送封包至通用串行总线装置10,而通用串行总线主机控制器300是经由接收器差动信号对SSRX+/SSRX-而接收来自于通用串行总线装置10的响应。同时参考图8A与图7,在时间周期S1,通用串行总线装置10的端点EP1的流程被启动,以及步骤S702与步骤S704会被执行。在时间周期S2,执行步骤S706以提供来自于通用串行总线主机控制器300的封包EP1_PKT1至通用串行总线装置10。然后,通用串行总线装置10会提供响应EP1_RESP1至通用串行总线主机控制器300(步骤S708)。在接收到响应EP1_RESP1之后,可于时间周期S6内对通用串行总线装置10的端点EP1执行步骤S710。当封包EP1_PKT1被传送至通用串行总线装置10时,可于时间周期S3内对通用串行总线装置10的端点EP1执行步骤S724。在时间周期S4,执行步骤S726以提供来自于通用串行总线主机控制器300的封包EP1_PKT2至通用串行总线装置10。然后,通用串行总线装置10会提供响应EP1_RESP2至通用串行总线主机控制器300(步骤S728)。在图8B中,在接收到响应EP1_RESP2之后,可于时间周期S9对端点EP1执行步骤S730。在时间周期S5,可执行步骤S744。在时间周期S7,执行步骤S746以提供来自于通用串行总线主机控制器300的封包EP1_PKT3至通用串行总线装置10。然后,通用串行总线装置10会提供响应EP1_RESP3至通用串行总线主机控制器300(步骤S748)。在接收到响应EP1_RESP3之后,可于时间周期S10对端点EP1来执行步骤S750以及步骤S752。在传送封包EP1_PKT3至通用串行总线装置10之后,可于时间周期S8对通用串行总线装置10的端点EP2执行步骤S762以及步骤S764。在时间周期S11,执行步骤S766以提供来自于通用串行总线主机控制器300的封包EP2_PKT至通用串行总线装置10。然后,通用串行总线装置10会提供响应EP2_RESP至通用串行总线主机控制器300(步骤S768)。因此,排程管理单元330可同时处理端点EP1的不同封包以及端点EP1和EP2的不同流程。相似地,图8A与图8B的排程方法可使用在USB2.0通信中,其中通用串行总线主机控制器以及通用串行总线装置是经由差动信号对D+/D-来传送封包以及响应。
以上所述仅为本发明的较佳实施方式,凡依本发明权利要求所做的均等变化与修饰,都应属本发明的涵盖范围。
Claims (19)
1.一种通用串行总线主机控制器,包括:
端点管理单元,用来管理通用串行总线装置的端点配置,其中上述通用串行总线装置包括多个端点,以及上述端点配置包括上述通用串行总线装置的上述多个端点的多个状态;
传输管理单元,用来传输关于上述通用串行总线装置的上述端点在系统内存以及上述通用串行总线主机控制器之间的传输信息的数据;以及
排程管理单元,用来同时地管理上述通用串行总线装置的至少两个上述端点的封包传输,
其中所述排程管理单元包含多个阶段处理单元,分别用于获取所述通用串行总线装置的多个端点的所述多个状态或者所述传输信息,
其中所述传输信息包含队列描述符,且所述封包包含数据包头以及数据封包负载。
2.根据权利要求1所述的通用串行总线主机控制器,其中上述排程管理单元包括:
第一阶段处理单元,用来得到来自于上述端点管理单元的上述通用串行总线装置的第一端点的状态;
第二阶段处理单元,用来根据上述通用串行总线装置的上述第一端点的状态,而得到来自于上述传输管理单元的上述通用串行总线装置的上述第一端点的传输信息;
第三阶段处理单元,用来根据上述通用串行总线装置的上述第一端点的传输信息,而传送第一封包至上述通用串行总线装置的上述第一端点;以及
第四阶段处理单元,用来相应于上述第一封包而得到来自于上述通用串行总线装置的上述第一端点的第一响应,
其中在上述第三阶段处理单元传送上述第一封包至上述通用串行总线装置的上述第一端点之后,上述第一阶段处理单元从上述端点管理单元得到上述通用串行总线装置的第二端点的状态,以便上述第二阶段处理单元根据上述通用串行总线装置的上述第二端点的状态,而得到来自于上述传输管理单元的上述通用串行总线装置的上述第二端点的传输信息。
3.根据权利要求2所述的通用串行总线主机控制器,其特征在于,上述排程管理单元更包括:
第五阶段处理单元,用来根据来自于上述通用串行总线装置的上述第一端点的上述第一响应,而将上述通用串行总线装置的上述第一端点的传输信息更新至上述传输管理单元;以及
第六阶段处理单元,用来根据上述通用串行总线装置的上述第一端点的已更新的传输信息,而将上述通用串行总线装置的上述第一端点的状态更新至上述端点管理单元。
4.根据权利要求3所述的通用串行总线主机控制器,其特征在于,当上述第五阶段处理单元对上述通用串行总线装置的上述第一端点的传输信息进行更新时,上述第三阶段处理单元根据上述通用串行总线装置的上述第二端点的传输信息而传送第二封包至上述通用串行总线装置的上述第二端点,以便上述第四阶段处理单元相应于上述第二封包而得到来自于上述通用串行总线装置的上述第二端点的第二响应。
5.根据权利要求4所述的通用串行总线主机控制器,其特征在于,当上述第三阶段处理单元将上述第二封包传送至上述通用串行总线装置的上述第二端点时,上述第一阶段处理单元得到来自于上述端点管理单元的上述通用串行总线装置的第三端点的状态,以便上述第二阶段处理单元根据上述通用串行总线装置的上述第三端点的状态,而得到来自于上述传输管理单元的上述通用串行总线装置的上述第三端点的传输信息。
6.根据权利要求1所述的通用串行总线主机控制器,其特征在于,上述排程管理单元包括:
第一阶段处理单元,用来得到来自于上述端点管理单元的上述通用串行总线装置的第一端点的状态;
第二阶段处理单元,用来根据上述通用串行总线装置的上述第一端点的状态,而得到来自于上述传输管理单元的上述通用串行总线装置的上述第一端点的第一传输信息;
第三阶段处理单元,用来根据上述通用串行总线装置的上述第一端点的上述第一传输信息,而传送第一封包至上述通用串行总线装置的上述第一端点;以及
第四阶段处理单元,用来相应于上述第一封包而得到来自于上述通用串行总线装置的上述第一端点的第一响应,
其中当上述第三阶段处理单元传送上述第一封包至上述通用串行总线装置的上述第一端点时,上述第二阶段处理单元根据上述通用串行总线装置的上述第一端点的状态,而得到来自于上述传输管理单元的上述通用串行总线装置的上述第一端点的第二传输信息。
7.根据权利要求6所述的通用串行总线主机控制器,其特征在于,当上述第四阶段处理单元得到来自于上述通用串行总线装置的上述第一端点的上述第一响应时,上述第三阶段处理单元根据上述通用串行总线装置的上述第一端点的上述第二传输信息,而传送第二封包至上述通用串行总线装置的上述第一端点。
8.根据权利要求7所述的通用串行总线主机控制器,其特征在于,当上述第三阶段处理单元传送上述第二封包至上述通用串行总线装置的上述第一端点时,上述第二阶段处理单元根据上述通用串行总线装置的上述第一端点的状态,而得到来自于上述传输管理单元的上述通用串行总线装置的上述第一端点的第三传输信息,以及当上述第四阶段处理单元相应于上述第二封包而得到来自于上述通用串行总线装置的上述第一端点的第二响应时,上述第三阶段处理单元根据上述通用串行总线装置的上述第一端点的上述第三传输信息,而传送第三封包至上述通用串行总线装置的上述第一端点。
9.根据权利要求8所述的通用串行总线主机控制器,其特征在于,当上述第二阶段处理单元得到上述通用串行总线装置的上述第一端点的上述第三传输信息时,上述第一阶段处理单元得到来自于上述端点管理单元的上述通用串行总线装置的第二端点的状态,以便上述第二阶段处理单元根据上述通用串行总线装置的上述第二端点的状态,而得到来自上述传输管理单元的上述通用串行总线装置的上述第二端点的传输信息。
10.根据权利要求9所述的通用串行总线主机控制器,其特征在于,在上述第四阶段处理单元相应于上述第三封包而得到来自于上述通用串行总线装置的上述第一端点的第三响应之后,上述第三阶段处理单元根据上述通用串行总线装置的上述第二端点的传输信息而将第四封包传送至上述通用串行总线装置的上述第二端点。
11.根据权利要求10所述的通用串行总线主机控制器,其特征在于,上述排程管理单元更包括:
第五阶段处理单元,用来分别根据来自于上述通用串行总线装置的上述第一端点的上述第一、第二与第三响应,而将上述通用串行总线装置的上述第一端点的上述第一、第二与第三传输信息更新至上述传输管理单元;以及
第六阶段处理单元,用来根据已更新的上述第三传输信息,而将上述通用串行总线装置的上述第一端点的状态更新至上述端点管理单元。
12.一种排程方法,适用于通用串行总线主机控制器,其特征在于,上述通用串行总线主机控制器是耦接于包括多个端点的通用串行总线装置,包括:
通过排程管理单元,管理上述通用串行总线装置的上述多个端点的封包传输,其中管理上述通用串行总线装置的每一上述端点的封包传输的步骤包括六阶段:
得到上述通用串行总线装置的上述多个端点其中之一个端点的状态;
得到上述通用串行总线装置的上述多个端点的该端点的传输信息,其中所述传输信息包含队列描述符;
传送封包至上述通用串行总线装置的上述多个端点的该端点,其中所述封包包含数据包头以及数据封包负载;
得到来自于上述通用串行总线装置的上述多个端点的该端点的响应;
更新上述通用串行总线装置的上述多个端点的该端点的传输信息;以及
更新上述通用串行总线装置的上述多个端点的该端点的状态,
对于上述通用串行总线装置的不同的端点,其中上述六个阶段中的至少两阶段会同时被执行。
13.根据权利要求12所述的排程方法,其特征在于,当上述通用串行总线装置的上述多个端点的该端点被启动时,得到上述多个端点的该端点的状态,以及根据上述多个端点的该端点的状态,而得到上述通用串行总线装置的上述多个端点的该端点的传输信息。
14.根据权利要求12所述的排程方法,其特征在于,根据上述多个端点的该端点的传输信息,传送上述封包至上述通用串行总线装置的上述多个端点的该端点,以及上述通用串行总线装置的上述多个端点的该端点是相应于上述封包而提供上述响应至上述通用串行总线主机控制器。
15.根据权利要求12所述的排程方法,其特征在于,根据来自上述通用串行总线装置的上述多个端点的该端点的上述响应,更新上述通用串行总线装置的上述多个端点的该端点的传输信息,以及根据上述通用串行总线装置的上述多个端点的该端点的已更新的传输信息,更新上述通用串行总线装置的上述多个端点的该端点的状态。
16.一种排程方法,适用于通用串行总线主机控制器,其中上述通用串行总线主机控制器是耦接于包括多个端点的通用串行总线装置,包括:
通过排程管理单元,管理上述通用串行总线装置的上述多个端点的封包传输,其中管理上述通用串行总线装置的每一上述端点的封包传输的步骤包括六阶段:
得到上述通用串行总线装置的所对应的上述端点的状态;
得到上述通用串行总线装置的所对应的上述端点的传输信息;
传送封包至上述通用串行总线装置的所对应的上述端点;
得到来自上述通用串行总线装置的所对应的上述端点的响应;
更新上述通用串行总线装置的所对应的上述端点的传输信息;以及
更新上述通用串行总线装置的所对应的上述端点的状态,
其中六个阶段中的至少两阶段会同时被上述通用串行总线装置的所对应的上述端点的不同封包所执行。
17.根据权利要求16所述的排程方法,其特征在于,当上述通用串行总线装置的所对应的上述端点被启动时,得到所对应的上述端点的状态,以及根据所对应的上述端点的状态,得到上述通用串行总线装置的所对应的上述端点的传输信息。
18.根据权利要求16所述的排程方法,其特征在于,根据所对应的上述端点的传输信息,传送上述封包至上述通用串行总线装置的所对应的上述端点,以及相应于上述封包,上述通用串行总线装置的所对应的上述端点提供上述响应至上述通用串行总线主机控制器。
19.根据权利要求16所述的排程方法,其特征在于,根据来自上述通用串行总线装置的所对应的上述端点的上述响应,更新上述通用串行总线装置的所对应的上述端点的传输信息,以及根据来自上述通用串行总线装置的所对应的上述端点的已更新的传输信息,更新上述通用串行总线装置的所对应的上述端点的状态。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261652555P | 2012-05-29 | 2012-05-29 | |
US61/652,555 | 2012-05-29 | ||
US13/888,608 | 2013-05-07 | ||
US13/888,608 US8930585B2 (en) | 2012-05-29 | 2013-05-07 | USB host controller and scheduling methods thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455462A CN103455462A (zh) | 2013-12-18 |
CN103455462B true CN103455462B (zh) | 2017-07-21 |
Family
ID=49671715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310202705.7A Active CN103455462B (zh) | 2012-05-29 | 2013-05-28 | 通用串行总线主机控制器及其排程方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8930585B2 (zh) |
CN (1) | CN103455462B (zh) |
TW (1) | TWI488048B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010132943A1 (en) * | 2009-05-20 | 2010-11-25 | Chronologic Pty. Ltd. | Jitter reduction method and apparatus for distributed synchronised clock architecture |
TWI645295B (zh) | 2017-06-20 | 2018-12-21 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存方法 |
US10970004B2 (en) * | 2018-12-21 | 2021-04-06 | Synopsys, Inc. | Method and apparatus for USB periodic scheduling optimization |
TWI712894B (zh) * | 2019-09-09 | 2020-12-11 | 瑞昱半導體股份有限公司 | 訊息請求方法及其裝置 |
JP7423367B2 (ja) * | 2020-03-23 | 2024-01-29 | キオクシア株式会社 | 通信システム、デバイス、及び通信方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021817A (zh) * | 2006-02-14 | 2007-08-22 | 松下电器产业株式会社 | Usb主机系统、av数据再现装置和av数据记录装置 |
US7409476B1 (en) * | 2001-03-19 | 2008-08-05 | Oxford Semiconductor, Inc. | System and method for USB controllers |
CN102043741A (zh) * | 2009-10-22 | 2011-05-04 | 瑞萨电子株式会社 | 用于管道仲裁的电路和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10211054A1 (de) * | 2002-03-13 | 2003-10-09 | Advanced Micro Devices Inc | USB-Hostcontroller |
DE10224163B4 (de) * | 2002-05-31 | 2005-05-04 | Advanced Micro Devices, Inc., Sunnyvale | Transaktionsdauermanagement in einem USB-Hostcontroller |
US8260971B2 (en) * | 2007-06-30 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | Techniques to exchange information for multiple modems |
US8649386B2 (en) * | 2007-09-11 | 2014-02-11 | Prodea Systems, Inc | Multi-interface wireless adapter and network bridge |
FR2923969B1 (fr) * | 2007-11-16 | 2012-11-23 | Canon Kk | Procede de gestion de trames dans un reseau global de communication, produit programme d'ordinateur, moyen de stockage et tete de tunnel correspondants |
TWI411922B (zh) * | 2009-11-16 | 2013-10-11 | Via Tech Inc | 通用串列匯流排主機控制器和通用串列匯流排主機控制方法 |
US8521934B1 (en) * | 2010-02-25 | 2013-08-27 | Fresco Logic, Inc. | Multi-port context-based host controller |
-
2013
- 2013-05-07 US US13/888,608 patent/US8930585B2/en active Active
- 2013-05-28 CN CN201310202705.7A patent/CN103455462B/zh active Active
- 2013-05-29 TW TW102118906A patent/TWI488048B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7409476B1 (en) * | 2001-03-19 | 2008-08-05 | Oxford Semiconductor, Inc. | System and method for USB controllers |
CN101021817A (zh) * | 2006-02-14 | 2007-08-22 | 松下电器产业株式会社 | Usb主机系统、av数据再现装置和av数据记录装置 |
CN102043741A (zh) * | 2009-10-22 | 2011-05-04 | 瑞萨电子株式会社 | 用于管道仲裁的电路和方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201403340A (zh) | 2014-01-16 |
CN103455462A (zh) | 2013-12-18 |
TWI488048B (zh) | 2015-06-11 |
US20130326091A1 (en) | 2013-12-05 |
US8930585B2 (en) | 2015-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455462B (zh) | 通用串行总线主机控制器及其排程方法 | |
CN107544934A (zh) | 一种USB Type‑C线缆的双向信号调节芯片及USB Type‑C线缆 | |
CN105279125A (zh) | 物理接口模块 | |
CN106789496A (zh) | 一种用于运载火箭的光纤惯组1553b通讯接口电路 | |
US20130007303A1 (en) | Facilitating transport mode input/output operations between a channel subsystem and input/output devices | |
AU2012278232B2 (en) | Facilitating transport mode input/output operations between a channel subsystem and input/output devices | |
CN106533976A (zh) | 一种数据包处理方法及装置 | |
CN107168917B (zh) | 一种利用USBHost接口实现程控仪器通信的总线桥 | |
CN104133792B (zh) | 精简串行总线通信方法及系统 | |
CN206788871U (zh) | 通信装置和家电设备 | |
CN104023037A (zh) | 一种低系统开销的rapidio数据传输方法 | |
CN204721475U (zh) | 一种控制电路 | |
CN103685594A (zh) | 电子设备及地址设定方法 | |
CN104123257B (zh) | 通用串行总线装置、通信方法及计算机可读存储介质 | |
CN104050124B (zh) | 应用于通用串行总线系统的数据传输电路及数据传输方法 | |
CN207304755U (zh) | 一种Cameralink视频转成高速网络数据的装置 | |
JP2021150878A (ja) | 通信システム、デバイス、及び通信方法 | |
CN210515372U (zh) | 高速图像处理线路盒 | |
CN110311859A (zh) | 一种基于fpga的slip到千兆以太网的转换系统 | |
CN107734002B (zh) | 一种蓝牙数据的接收装置及其方法 | |
EP2593878B1 (en) | Facilitating transport mode input/output operations between a channel subsystem and input/output devices | |
Jagun et al. | Design and development of a computer controlled switching system via universal serial bus port. | |
EP1343089B1 (en) | Data transfer method, data transfer device, communication interface method, and communication interface device | |
CN212391603U (zh) | 用于数据传输的设备和磁共振断层成像装置 | |
CN108156156A (zh) | 一种hart协议与modbus协议转换器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |