应用于通用串行总线系统的数据传输电路及数据传输方法

文档序号:6500666阅读:228来源:国知局
应用于通用串行总线系统的数据传输电路及数据传输方法
【专利摘要】一种应用于通用串行总线系统的数据传输电路及数据传输方法,该数据传输电路包含有一存储器、一直接存储器存取引擎以及一通用串行总线控制器,其中,该存储器用以接收并储存来自外部的数据;该直接存储器存取引擎用以控制自该存储器取得数据;该通用串行总线控制器用以接收来自该直接存储器存取引擎的数据,并将所接收到的数据传送到一主机;其中当该存储器中所储存的容量达到一第一临界值时,该直接存储器存取引擎开始并持续地自该存储器读取数据并传送至该通用串行总线控制器,直到该直接存储器存取引擎所读取的数据量达到一第二临界值,或是该存储器中已没有数据为止。
【专利说明】应用于通用串行总线系统的数据传输电路及数据传输方法

【技术领域】
[0001]本发明涉及一种数据传输电路,尤指一种应用于通用串行总线系统的数据传输电路及其相关的数据传输方法。

【背景技术】
[0002]在一般通用串行总线(Universal Serial Bus,USB)系统中,若是要将周边元件中的存储器数据经由USB传输线搬移到主机时,会采用聚集(Aggregat1n)的方式来减少数据搬移的次数,进而减少主机端中央处理器(Central Processing Unit)的利用率(Utilizat1n),以降低中央处理器的负担。
[0003]在传统的聚集传输方式中,需要对周边元件中的存储器设定一固定的临界值,而当存储器中的数据量达到此临界值时,周边元件便会将存储器中的数据搬移到主机中。请参考图1,图1为存储器110的临界值大小与每一笔传输数据的示意图,如图1所示,假设存储器110被设定具有较低的临界值,则每一笔传输数据(#1?#N+1)的大小会比较小(数据量大致在临界值左右),中央处理器的利用率也会比较高(中央处理器负担大),但此时存储器110可以具有比较多的缓冲空间以容纳进入的数据;另一方面,假设存储器110被设定具有较高的临界值,则每一笔传输数据(#1?#M)的大小会比较大,中央处理器的利用率也会比较低(中央处理器负担小),但此时存储器110的缓冲空间也比较不足。
[0004]如上所述,由于中央处理器的利用率与周边元件中的存储器的缓冲空间会互相冲突,因此,设计者在设计上必须要权衡两边的分配方式,而无法得到两全其美的结果。


【发明内容】

[0005]因此,本发明的目的之一在于提供一种应用于通用串行总线系统的数据传输电路及其相关的数据传输方法,其可以在不增加存储器容量的情况下,同时兼顾中央处理器的利用率与周边元件中的存储器的缓冲空间,以解决已知技术的问题。
[0006]依据本发明一实施例,一种应用于通用串行总线系统的数据传输电路包含有一存储器、一直接存储器存取引擎以及一通用串行总线控制器,其中,该存储器用以接收并储存来自外部的数据;该直接存储器存取引擎耦接于该存储器,且用以控制自该存储器取得数据;该通用串行总线控制器耦接于该直接存储器存取引擎,且用以接收来自该直接存储器存取引擎的数据,并将所接收到的数据传送到一主机;其中,当该存储器中所储存的数据容量达到一第一临界值时,该直接存储器存取引擎开始并持续地自该存储器读取数据并传送至该通用串行总线控制器,直到该直接存储器存取引擎所读取的数据量达到一第二临界值,或是该存储器中已没有数据为止;其中,该第二临界值大于该第一临界值。
[0007]依据本发明另一实施例,一种应用于一通用串行总线系统的数据传输方法包含有:提供一存储器,用以接收并储存来自外部的数据;提供一通用串行总线控制器;以及当该存储器中所储存的数据容量达到一第一临界值时,才开始并持续地读取该存储器读取中的数据,并将所读取的数据传送至该通用串行总线控制器,直到所读取的数据量达到一第二临界值,或是该存储器中已没有数据为止,其中,该第二临界值大于该第一临界值。
[0008]依据本发明另一实施例,一种通用串行总线系统包含有一主机以及一周边元件,其中,该主机包含有一处理器、耦接于该处理器的一系统存储器、以及耦接于该系统存储器的一第一通用串行总线控制器;该周边元件包含有一存储器、一直接存储器存取引擎以及一第二通用串行总线控制器,其中,该存储器用以接收并储存来自外部的数据;该直接存储器存取引擎耦接于该存储器,且用以控制自该存储器取得数据;该第二通用串行总线控制器耦接于该直接存储器存取引擎,且用以接收来自该直接存储器存取引擎的数据,并将所接收到的数据经由该通用串行总线传输媒介以及该第一通用串行总线控制器传送到该系统存储器中;其中,当该存储器中所储存的数据容量达到一第一临界值时,该直接存储器存取引擎开始并持续地自该存储器读取数据并传送至该第二通用串行总线控制器,直到该直接存储器存取引擎所读取的数据量达到一第二临界值,或是该存储器中已没有数据为止;其中,该第二临界值大于该第一临界值。

【专利附图】

【附图说明】
[0009]图1为存储器的临界值大小与每一笔传输数据的示意图。
[0010]图2为依据本发明一实施例的通用串行总线系统的示意图。
[0011]图3为依据本发明一实施例的数据传输方法的流程图。
[0012]图4为用来解释本发明的数据传输方法的流程的示意图。
[0013]【符号说明】
[0014]110、222 存储器
[0015]200通用串行总线系统
[0016]202通用串行总线传输媒介
[0017]210 主机
[0018]212中央处理器
[0019]214系统存储器
[0020]216、224通用串行总线控制器
[0021]230直接存储器存取引擎
[0022]232读取电路
[0023]234数据缓冲器
[0024]236检测计算单元
[0025]238状态数据缓冲器
[0026]300 ~312 步骤
[0027]410、420 短封包

【具体实施方式】
[0028]在说明书及后续的权利要求当中使用了某些词汇来指称特定的元件。领域普通技术人员应可理解,硬件制造商可能会用不同的名词来称呼同个元件。本说明书及后续的权利要求并不以名称的差异来作为区分元件方式,而是以元件在功能上的差异来作为区分的准则。在通篇说明书及续的权利要求当中所提及的“包含”为一开放式的用语,故应解释成“包但不限定于”。此外,“耦接”一词在此包含任何直接及间接的电气连接段,因此,若文中描述一第一装置耦接于一第二装置,则代表该第一装置可直接电气连接于该第二装置,或者通过其他装置或连接手段间接地电气连接至该第二装置。
[0029]请参考图2,图2为依据本发明一实施例的通用串行总线(USB)系统200的示意图。如图2所示,USB系统包含有一主机210以及一周边元件220,且彼此之间以一 USB传输媒介202 (例如USB传输线或是USB接口传输电路)进行连接,其中,主机210包含有一中央处理器212、一系统存储器214以及一通用串行总线控制器216,且周边元件220包含有一存储器222 (于本实施例中,存储器222可为先进先出(First In First 0ut,FIF0)存储器)、一直接存储器存取(DMA)引擎230以及一通用串行总线控制器224,其中,直接存储器存取引擎230包含有一读取电路232、一数据缓冲器234、一检测计算单元236以及一状态数据缓冲器238。此外,于本实施例中,存储器222用来储存来自周边元件220外所输入的封包数据,且存储器222设有一第一临界值,当存储器222中所储存的数据容量达到该第一临界值时,存储器222便会开始将所储存的封包数据循序地传送到直接存储器存取引擎230。
[0030]于本实施例中,存储器222与直接存储器存取引擎230之间的一传输频宽小于USB控制器224与主机210之间的一传输频宽。
[0031]于本实施例中,周边元件220可以为一有线网络卡,但本发明并不以此为限。只要周边元件220是利用USB系统来将所接收到的封包数据循序传送到主机210中,周边元件220可以是任何其他的装置。
[0032]请同时参考图2以及图3,图3为依据本发明一实施例的数据传输方法的流程图。参考图3,流程叙述如下。
[0033]首先,于步骤300中,当USB系统200开机或是准备开始运作时,主机210会传送一最大单笔数据传输容量至直接存储器存取引擎230中,其中,该最大单笔数据传输容量为USB规范中主机210 —次所能接收并处理的数据传输容量。接着,于步骤302中,当存储器222中所储存的封包数据超过该第一临界值的时候,直接存储器存取引擎230开始启动大量传输(Bulk-1n transfer)操作,此时读取电路232会准备开始自存储器222中读取封包数据。接着,于步骤304中,直接存储器存取引擎230持续进行大量传输操作,且读取电路232持续自存储器222中读取封包数据,并将所读取到的封包数据先传送到数据缓冲器234后,再经由USB控制器224、USB传输媒介202与USB控制器216传送到系统存储器214。此外,检测计算单元236同时会累积目前直接存储器存取引擎230自存储器222所接收到的封包数据的大小。
[0034]接着,于步骤306中,检测计算单元236判断目前累积所接收到的封包数据的大小是否达到一第二临界值,若是该目前累积所接收到的封包数据的大小尚未达到该第二临界值,流程进入步骤308;反之,若是该目前累积所接收到的封包数据的大小已达到该第二临界值,则流程进入步骤310。此外,于本实施例中,该第二临界值依据该最大单笔数据传输容量来决定,举例来说,该第二临界值可以被设定为略小于该最大单笔数据传输容量的数值。
[0035]于步骤308中,检测计算单元236依据是否持续接收到来自存储器222的数据来判断存储器222中是否还具有封包数据,若是存储器222还具有封包数据,则流程回到步骤304以持续进行大量传输操作;而若是存储器222已不具有封包数据,且检测计算单元236在等待一预定时间内都没有接收到来自存储器222的数据后,流程进入步骤310。
[0036]在步骤310中,直接存储器存取引擎230关闭大量传输操作,且检测计算单元236传送一短封包(short packet)至状态数据缓冲器238后,再经由USB控制器224与USB传输媒介202以传送到USB控制器216中。其中,该短封包为USB规格中所定义的一小于正常封包大小的封包数据,且该短封包附在每笔传输数据的末端以供主机212识别每一笔传输数据是否已经结束。此外,在直接存储器存取引擎230准备关闭大量传输操作之前,若是直接存储器存取引擎230正在从存储器222接收一封包数据,则直接存储器存取引擎230会等到接收完该封包数据之后再关闭大量传输操作。
[0037]于步骤312中,当USB控制器216检测到有短封包出现时,USB控制器216便可以知道这一笔传输资料已经结束,因此,便发出一中断(interrupt)信号VI至中央处理器212,以通知中央处理器212可以开始读取及处理储存在系统存储器214中的这一笔数据。接着,流程回到步骤302以准备下一笔数据的传输,且检测计算单元236也开始重新归零开始计算直接存储器存取引擎230所累积接收到的数据总量。
[0038]请参考图4,图4为用来解释图3所示的流程的示意图。如图4所示,假设存储器222依序接收并储存N个封包ΡΚΤ#0~ΡΚΤ.,且在封包ΡΚΤ.之后便暂时没有其他的封包进入存储器222中,当存储器222接收到封包ΡΚΤ#2时存储器222所储存的数据量超过第一临界值THl,直接存储器存取引擎230会开始进行大量传输操作,并持续将封包ΡΚΤ#0、ΡΚΤ#1、ΡΚΤ#2、…等构成第一笔传输数据BLT#0以传输到USB控制器224中,当第一笔传输数据BLT#0的数据量大于第二临界值TH2的时候,直接存储器存取引擎230便关闭大量传输操作,并在第一笔传输数据BLT#0的末端附上一个短封包410以供主机210中的USB控制器216识别第一笔传输数据BLT#0已经结束,并据以传送一中断信号VI至中央处理器212。接着,直接存储器存取引擎230持续进行上述的类似操作,直到直接存储器存取引擎230开始传输第M笔传输数据BLT#M时,由于封包PKT#N之后已没有其他的封包(存储器222已经没有储存数据),因此,虽然第M笔传输数据BLT#M尚未达到第二临界值TH2,但直接存储器存取引擎230在等待一预定时间TE后便在第M笔传输数据BLT#M的末端附上一个短封包420以供主机210中的USB控制器216识别,并据以传送一中断信号至中央处理器212。
[0039]另外举一例子来说明图2、图3的操作,假设存储器222的容量为64KB (千字节),数据缓冲器234的容量为4KB、第一临界值为4KB、第二临界值为32KB,所需传送的封包数据为32KB,则若是采用已知技术的做法,会需要传送约8笔数据(32KB/4KB=8)到主机(每笔数据约4KB),且主机需要收到8次中断信号来进行处理,因此主机会具有较高的利用率而有较大的负担;另外,若是采用本发明实施例中的技术,则仅需要传送一笔数据到主机(这笔数据约32KB),且主机仅会收到I次中断数据来进行处理,因此主机会具有较低的利用率而有较小的负担。此外,由于存储器222与直接存储器存取引擎230之间的传输频宽小于USB控制器224与主机210之间的传输频宽,因此,连续地从存储器222传送封包数据到主机210的系统存储器214的过程中并不会有封包阻塞的问题。
[0040]如上所述,由于本发明的直接存储器存取引擎230可以持续地自存储器222传送封包数据到主机210直到每一笔传输数据的大小达到第二临界值为止,因此,设计者可以将存储器222中的第一临界值设为一较低的数值,以使得存储器222中会具有较多的缓冲空间;此外,由于每一笔传输数据的大小约为第二临界值的大小(也即很接近主机210 一次所能接收的最大单笔数据传输容量),因此,中央处理器212会接收到较少次的中断信号,以降低中央处理器212的负担。因此,本发明可以让中央处理器212的利用率与存储器222的缓冲空间双方均有很好的表现,而不需要如已知技术中需要权衡两边的分配方式。
【权利要求】
1.一种应用于通用串行总线系统的数据传输电路,包含有: 一存储器,用以接收并储存来自外部的数据; 一直接存储器存取引擎,耦接于所述存储器,用以控制自所述存储器取得数据;以及 一通用串行总线控制器,耦接于所述直接存储器存取引擎,用以接收来自所述直接存储器存取引擎的数据,并将所接收到的数据传送到一主机; 其中,当所述存储器中所储存的数据容量达到一第一临界值时,所述直接存储器存取引擎开始并持续地自所述存储器读取数据并传送至所述通用串行总线控制器,直到所述直接存储器存取引擎所读取的数据量达到一第二临界值,或是所述存储器中已没有数据为止;其中所述第二临界值大于所述第一临界值。
2.根据权利要求1所述的数据传输电路,其中,所述第二临界值依据所述主机所提供的最大单笔数据传输容量来决定。
3.根据权利要求1所述的数据传输电路,其中,所述存储器与所述直接存储器存取引擎之间的一传输频宽小于所述通用串行总线控制器与所述主机之间的一传输频宽。
4.根据权利要求1所述的数据传输电路,其中,当所述直接存储器存取引擎自所述存储器所读取的数据量大于所述第二临界值时,所述直接存储器存取引擎准备停止传送自所述存储器所读取的数据至所述通用串行总线控制器,并另外传送一个短封包至所述通用串行总线控制器。
5.根据权利要求1所述的数据传输电路,其中,当所述直接存储器存取引擎判断所述存储器中已没有数据时,所述直接存储器存取引擎传送一个短封包至所述通用串行总线控制器。
6.一种应用于通用串行总线系统的数据传输方法,包含有: 提供一存储器,用以接收并储存来自外部的数据; 提供一通用串行总线控制器;以及 当所述存储器中所储存的数据容量达到一第一临界值时,开始并持续地读取所述存储器中的数据,并将所读取的数据传送至所述通用串行总线控制器,直到所读取的数据量达到一第二临界值,或是所述存储器中已没有数据为止,其中,所述第二临界值大于所述第一临界值。
7.根据权利要求6所述的数据传输方法,还包含有: 依据主机所提供的最大单笔数据传输容量来决定所述第二临界值。
8.根据权利要求6所述的数据传输方法,还包含有: 将所述通用串行总线控制器所接收到的数据传送到一主机,其中读取所述存储器中的数据时所使用的一传输频宽小于所述通用串行总线控制器与所述主机之间的一传输频宽。
9.根据权利要求6所述的数据传输方法,其中,当自所述存储器所读取的数据量大于所述第二临界值时,准备停止传送自所述存储器所读取的数据至所述通用串行总线控制器,并另外传送一个短封包至所述通用串行总线控制器。
10.根据权利要求6所述的数据传输方法,其中,当判断所述存储器中已没有数据时,直接传送一个短封包至所述通用串行总线控制器。
11.一种通用串行总线系统,包含有: 一主机,包含有:一处理器; 一系统存储器,耦接于所述处理器;和 一第一通用串行总线控制器,耦接于所述系统存储器;以及 一周边元件,经由一通用串行总线传输媒介连接于所述主机,其中,所述周边元件包含有: 一存储器,用以接收并储存来自外部的数据; 一直接存储器存取引擎,耦接于所述存储器,用以控制自所述存储器取得数据;以及 一第二通用串行总线控制器,耦接于所述直接存储器存取引擎,用以接收来自所述直接存储器存取引擎的数据,并将所接收到的数据经由所述通用串行总线传输媒介以及所述第一通用串行总线控制器传送到所述系统存储器中; 其中,当所述存储器中所储存的数据容量达到一第一临界值时,所述直接存储器存取引擎开始并持续地自所述存储器读取数据并传送至所述第二通用串行总线控制器,直到所述直接存储器存取引擎所读取的数据量达到一第二临界值,或是所述存储器中已没有数据为止;其中,所述第二临界值大于所述第一临界值。
12.根据权利要求11所述的通用串行总线系统,其中,当所述直接存储器存取引擎自所述存储器所读取的数据量大于所述第二临界值时,所述直接存储器存取引擎准备停止传送自所述存储器所读取的数据至所述通用串行总线控制器,并另外将一个短封包传送至所述第二通用串行总线控制器后再传送至所述第一通用串行总线控制器;以及当所述第一通用串行总线控制器接收到所述短封包之后,所述第一通用串行总线控制器发出一中断信号至所述处理器以通知所述处理器读取所述系统存储器中所储存的数据。
13.根据权利要求11所述的通用串行总线系统,其中,当所述直接存储器存取引擎判断所述存储器中已没有数据时,所述直接存储器存取引擎将一个短封包传送至所述第二通用串行总线控制器后再传送至所述第一通用串行总线控制器;以及当所述第一通用串行总线控制器接收到所述短封包之后,所述第一通用串行总线控制器发出一中断信号至所述处理器以通知所述处理器读取所述系统存储器中所储存的数据。
【文档编号】G06F13/28GK104050124SQ201310078545
【公开日】2014年9月17日 申请日期:2013年3月12日 优先权日:2013年3月12日
【发明者】陈林宏, 王韬钧, 颜于凯, 陈宏泰 申请人:瑞昱半导体股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1