节省USB协议中存封包的存储器的数据传输方法及装置转让专利

申请号 : CN201010218934.4

文献号 : CN101887403B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张倬炫许铭勋谢登全

申请人 : 钰创科技股份有限公司

摘要 :

一种可节省通用串行总线协议中用来储存封包的存储器的数据传输方法,当传送端欲传送数据负载时,传送端的协议层将数据负载写入于共用数据负载存储器。协议层根据数据负载产生对应的档头,并将对应的档头写入共用档头存储器,且传送端的数据链路层直接将储存于共用档头存储器内的档头与储存于共用数据负载存储器内的数据负载组成一封包,并发送该封包。因此当传送端欲传送对应数据负载时,传送端仅需要有等同于一个封包大小的存储器空间,以储存对应于数据负载的封包。如此可节省存储器空间,以降低成本。

权利要求 :

1.一种可节省通用串行总线协议中用来储存封包的存储器的数据传输方法,其特征在于,包含以下步骤:一接收端接收一传送端所传送的一封包,且将该封包储存于一共用存储器;

该接收端的一数据链路层对储存于该共用存储器内的该封包的一档头进行错误码校验,以得出一数据链路校验结果,并据以传送一协议层处理讯号给该接收端的一协议层;以及该接收端的该协议层根据该协议层处理讯号,直接对储存于该共用存储器内的该封包进行后续处理,其中,该接收端的该数据链路层对储存于该共用存储器内的该封包的该档头进行错误码校验,以得出该数据链路校验结果,并据以传送该协议层处理讯号给该接收端的该协议层,包含:对该封包的该档头的一档头错误校验码进行循环冗余校验,以得出一档头校验结果;

对该封包的该档头的一链路命令字元错误校验码进行循环冗余校验,以得出一链路命令字元校验结果;以及根据该档头校验结果与该链路命令字元校验结果,得出该数据链路校验结果;以及于该数据链路校验结果表示正确时,传送该协议层处理讯号给该接收端的该协议层,并传送一确认讯号至该传送端;

其中该确认讯号是用来告知该传送端所传送的该封包于该接收端的该数据链路校验结果表示正确。

2.根据权利要求1所述的数据传输方法,其特征在于,该接收端的该数据链路层对储存于该共用存储器内的该封包的该档头进行错误码校验,以得出该数据链路校验结果,并据以传送该协议层处理讯号给该接收端的该协议层另包含:于该数据链路校验结果表示错误时,传送一重送讯号至该传送端;

其中该重送讯号是用来通知该传送端所传送的该封包于该接收端的该数据链路校验结果表示错误。

3.根据权利要求2所述的数据传输方法,其特征在于,根据该档头校验结果与该链路命令字元校验结果,得出该数据链路校验结果包含:当该档头校验结果与该链路命令字元校验结果皆为正确时,该数据链路校验结果表示正确;以及当该档头校验结果与该链路命令字元校验结果中有一者为错误时,该数据链路校验结果表示错误。

4.根据权利要求1所述的数据传输方法,其特征在于,该接收端的该协议层根据该协议层处理讯号,直接对储存于该共用存储器内的该封包进行后续处理,包含:根据该协议层处理讯号,以得到该共用存储器的一位址;

根据该共用存储器的该位址,以读取储存于该共用存储器的该封包;以及根据该封包的该档头的一端点信息,接收该封包的该数据负载以进行后续处理。

5.根据权利要求4所述的数据传输方法,其特征在于,根据该封包的该档头的该端点信息,接收该封包的该数据负载以进行后续处理包含:当该端点信息指示该封包为同时型传输类型封包时,接收该封包的该数据负载以进行后续处理;以及当该端点信息指示该封包非为同时型传输类型封包时,对该共用存储器所储存的该封包的该数据负载的一数据负载错误校验码进行循环冗余校验,得出一数据负载校验结果,并据以发送一交握讯号至该传送端。

6.根据权利要求1所述的数据传输方法,其特征在于,该接收端是为一主控端或一装置端,且该传送端是为对应于该接收端的一主控端或一装置端。

7.一种可节省通用串行总线协议中用来储存封包的存储器的数据传输方法,其特征在于,包含以下步骤:一传送端的一协议层将一数据负载写入于一共用数据负载存储器;

该传送端的该协议层根据该数据负载产生一档头,并将该档头写入一共用档头存储器;以及该传送端的一数据链路层直接将储存于该共用档头存储器内的该档头与储存于该共用数据负载存储器内的该数据负载组成一封包,并将该封包传送至一接收端,其中,该传送端的该协议层根据该数据负载产生该档头,并将该档头写入该共用档头存储器包含:根据一待发送指针与一已确认指针,以判断该共用档头存储器是可被写入;

根据该数据负载与对应于该共用数据负载存储器的一数据负载位址信息,以产生该档头,并将该档头储存于该共用档头存储器;以及根据对应于该共用档头存储器的一档头位址,以调整该待发送指针;

其中对应于该共用数据负载存储器的该数据负载位址信息是用来指示该共用数据负载存储器的一数据负载位址。

8.根据权利要求7所述的数据传输方法,其特征在于,该传送端的该协议层将该数据负载写入于该共用数据负载存储器包含:根据对应于该共用数据负载存储器的一共用数据负载标号,以将该数据负载写入该共用数据负载存储器;以及将对应于该共用数据负载存储器的该共用数据负载标号,标记为已被写入。

9.根据权利要求7所述的数据传输方法,其特征在于,该数据负载位址信息是储存于该档头的一保留区。

10.根据权利要求7所述的数据传输方法,其特征在于,该传送端的该数据链路层将储存于该共用档头存储器内的该档头与储存于该共用数据负载存储器内的该数据负载组成该封包,并将该封包传送至该接收端,包含:该传送端的该数据链路层根据该待发送指针与一已发送指针,以判断需发送对应于该共用档头存储器所储存的该档头的该封包;

该传送端的该数据链路层根据该档头,以得到该数据负载位址信息,并据以得到储存于该共用数据负载存储器的该数据负载;以及该传送端的该数据链路层将该档头与该数据负载组成该封包,并传送至该接收端。

11.根据权利要求10所述的数据传输方法,其特征在于,该数据传输方法另包含:该传送端的该数据链路层根据一接收端所传送的对应于该封包的一数据链路回复讯号,以判断是否要重新传送该封包;以及该传送端的该协议层根据该接收端所传送的对应于该封包的一交握讯号,以进行后续处理。

12.根据权利要求11所述的数据传输方法,其特征在于,该传送端的该数据链路层根据该接收端所传送的对应于该封包的该数据链路回复讯号,以判断是否要重新传送该封包,包含:于该数据链路回复讯号为重送讯号时,根据该已确认指针调整该已发送指针,以使该传送端的该数据链路层据以重新传送该封包。

13.根据权利要求12所述的数据传输方法,其特征在于,于该数据链路回复讯号为重送讯号时,根据该已确认指针,调整该已发送指针,以使该传送端的该数据链路层据以重新传送该封包,包含:该传送端的该数据链路层根据该待发送指针与该已发送指针,以判断需发送对应于该共用档头存储器所储存的该档头的该封包;

该传送端的该数据链路层根据该档头,以得到该数据负载位址信息,并据以得到储存于该共用数据负载存储器的该数据负载;以及该传送端的该数据链路层将该档头与该数据负载组成该封包,并传送至该接收端。

14.根据权利要求11所述的数据传输方法,其特征在于,该传送端的该协议层根据该接收端所传送的对应于该封包的该交握讯号,以进行后续处理,包含:于该交握讯号指示该封包已被正确地接收时,根据该交握讯号以调整该已确认指针与对应于该共用数据负载存储器的该共用数据负载标号,以释放该共用档头存储器与该共用数据负载存储器;以及于该交握讯号指示该封包没有被正确地接收时,根据该已确认指针调整该已发送指针,以使该传送端的该数据链路层据以重新传送该封包。

15.根据权利要求14所述的数据传输方法,其特征在于,于该交握讯号指示该封包已被正确地接收时,根据该交握讯号以调整该已确认指针与对应于该共用数据负载存储器的该共用数据负载标号,以释放该共用档头存储器与该共用数据负载存储器,包含:根据该交握讯号内所储存的一档头顺序参数,以得到该共用档头存储器的该档头位址与储存于该共用档头存储器的该档头;

根据该档头的该数据负载位址信息,以得到该共用数据负载存储器的该数据负载位址;

根据该共用档头存储器的该档头位址,以调整该已确认指针,来释放该共用档头存储器;以及根据该数据负载位址,以将对应于共用数据负载存储器的该共用数据负载标号,标记为可被写入,来释放该共用数据负载存储器。

16.根据权利要求14所述的数据传输方法,其特征在于,于该交握讯号指示该封包没有被正确地接收时,根据该已确认指针调整该已发送指针,以使该传送端的该数据链路层据以重新传送该封包,包含:该传送端的该数据链路层根据该待发送指针与该已发送指针,以判断需发送对应于该共用档头存储器所储存的该档头的该封包;

该传送端的该数据链路层根据该档头,以得到该数据负载位址信息,并据以得到储存于该共用数据负载存储器的该数据负载;以及该传送端的该数据链路层将该档头与该数据负载组成该封包,并传送至该接收端。

17.根据权利要求16所述的数据传输方法,其特征在于,该传送端是为一主控端或一装置端,且该接收端是为对应于该传送端的一主控端或一装置端。

18.一种可节省通用串行总线协议中用来储存封包的存储器的装置,其特征在于,包含:一传送装置,其包含:

一共用档头存储器;

一共用数据负载存储器;

一第一协议层装置,用来根据一数据负载,以产生一档头,并储存该数据负载于该共用数据负载存储器,以及储存该档头于该共用档头存储器;以及一第一数据链路层装置,用来直接将储存于该共用档头存储器的该档头与储存于该共用数据负载存储器的该数据负载组成一封包,并发送该封包;以及一接收装置,用来接收该封包,该接收装置包含:

一共用存储器,用来储存该封包;

一第二数据链路层装置,用来对储存于该共用存储器内的该封包的该档头进行错误码校验,以产生一数据链路校验结果,并根据该数据链路校验结果,以传送一数据链路回复讯号至该传送装置,以及产生一协议层处理讯号;以及一第二协议层装置,用来根据该协议层处理讯号与储存于该共用存储器的该封包的该档头的一端点信息,以判断储存于该共用存储器的该封包是否为同时型传输类型封包,其中,当该数据链路校验结果表示错误时,该数据链路回复讯号是为重送讯号以使该传送装置的该第一数据链路层重送该封包;当该数据链路校验结果表示正确时,该数据链路回复讯号是为确认讯号且该第二数据链路装置传送该协议层处理讯号至该第二协议层装置。

19.根据权利要求18所述的装置,其特征在于,当该第二协议层装置判断该封包为同时型传输类型封包时,直接接收该封包的该数据负载;当该第二协议层装置判断该封包非为同时型传输类型封包时,对该封包的该数据负载的一数据负载错误校验码进行循环冗余校验,得出一数据负载校验结果,并据以发送一交握讯号至该传送装置,以使该传送装置的该第一协议层作后续处理。

20.一种节省存储器的接收装置,该接收装置依据一通用串行总线协议接收一封包,该封包包含一档头与一数据负载,其特征在于,该接收装置包含:一共用存储器,包含复数个封包储存单元,该复数个封包储存单元的一第一封包储存单元储存该封包且该第一封包储存单元对应一第一存储器位址;

一第二数据链路层装置,电性连接于该共用存储器,该第二数据链路层装置依据该第一存储器位址来读取储存于该第一封包储存单元的该封包;以及一第二协议层装置,电性连接于该共用存储器,该第二协议层装置依据该第一存储器位址读取储存于该第一封包储存单元的该封包。

21.根据权利要求20所述的接收装置,其特征在于,该第一封包储存单元包含一第一标号用来指示该第一封包储存单元是否可被写入数据。

22.根据权利要求20所述的接收装置,其特征在于,该第二数据链路层装置依据该封包的该档头进行错误码校验以产生一数据链路校验结果,并根据该数据链路校验结果传送一数据链路回复讯号至该接收装置所对应的一传送装置。

23.根据权利要求22所述的接收装置,其特征在于,该第二数据链路层装置根据该数据链路校验结果,选择性地产生一协议层处理讯号至该第二协议层装置,该第二协议层装置收受该协议层处理讯号后依据该封包的该档头的一端点信息,以判断储存于该共用存储器的该封包是否为同时型传输类型封包。

24.根据权利要求23所述的接收装置,其特征在于,该协议层处理讯号包含该第一存储器位址,使该第二协议层装置依据该第一存储器位址读取储存于该第一封包储存单元的该封包。

25.一种节省存储器的接收装置,该接收装置依据一通用串行总线协议接收一封包,该封包包含一档头与一数据负载,其特征在于,该接收装置包含:一数据链路存储器,包含复数个档头储存单元,该复数个档头储存单元的一第一档头储存单元储存该封包的该档头而不储存该封包的该数据负载,且该第一档头储存单元对应一第二存储器位址;

一协议存储器,包含复数个数据负载储存单元,该复数个数据负载储存单元的一第一数据负载储存单元储存该封包的该数据负载而不储存该封包的该档头,且该第一数据负载储存单元对应一第三存储器位址;

一第二数据链路层装置,电性连接于该数据链路存储器,该第二数据链路层装置依据该第二存储器位址来读取该封包的该档头;以及一第二协议层装置,电性连接于该协议存储器,该第二协议层装置依据该第三存储器位址读取该封包的该数据负载。

26.根据权利要求25所述的接收装置,其特征在于,该第一档头储存单元包含一第二标号用来指示该第一档头储存单元是否可被写入数据,而该第一数据负载单元包含一第三标号用来指示该第一数据负载储存单元是否可被写入数据。

27.根据权利要求25所述的接收装置,其特征在于,该第二数据链路层装置依据该封包的该档头进行错误码校验以产生一数据链路校验结果,并根据该数据链路校验结果传送一数据链路回复讯号至该接收装置所对应的一传送装置。

28.根据权利要求27所述的接收装置,其特征在于,该第二数据链路层装置根据该数据链路校验结果,选择性地产生一协议层处理讯号至该第二协议层装置,该第二协议层装置收受该协议层处理讯号后依据该封包的该档头的一端点信息,以判断该封包为同时型传输类型封包。

29.根据权利要求28所述的接收装置,其特征在于,该协议层处理讯号包含该第二存储器位址,使该第二协议层装置依据该第二存储器位址读取储存于该第一档头储存单元的该封包的该档头。

30.根据权利要求28所述的接收装置,其特征在于,该协议层处理讯号包含该第三存储器位址,其中当该第二协议层装置判断该封包为同时型传输类型封包时,该第二协议层装置依据该第三存储器位址直接读取储存于该第一数据负载储存单元的该封包的该数据负载而不对该数据负载的一数据负载错误校验码进行循环冗余校验;当该第二协议层装置判断该封包非为同时型传输类型封包时,该第二协议层装置依据该第三存储器位址读取储存于该第一数据负载储存单元的该封包的该数据负载并对该数据负载的该数据负载错误校验码进行循环冗余校验,得出一数据负载校验结果,并据以发送一交握讯号至该传送装置,以使该传送装置的一第一协议层作后续处理。

31.一种节省存储器的传送装置,该传送装置依据一通用串行总线协议传送一封包,该封包包含一档头与一数据负载,其特征在于,该传送装置包含:一第一协议层装置,用来根据该封包的该数据负载以产生该封包的该档头;

一共用档头存储器,电性连接于该第一协议层装置,该共用档头存储器包含复数个共用档头储存单元,该复数个共用档头储存单元的一第一共用档头储存单元储存该封包的该档头而不储存该封包的该数据负载,且该第一共用档头储存单元对应一第四存储器位址;

一共用数据负载存储器,电性连接于该第一协议层装置,该共用数据负载存储器包含复数个共用数据负载储存单元,该复数个共用数据负载储存单元的一第一共用数据负载储存单元储存该封包的该数据负载而不储存该封包的该档头,且该第一共用数据负载储存单元对应一第五存储器位址;以及一第一数据链路层装置,电性连接于该共用数据负载存储器与该共用档头存储器,该第一数据链路层装置依据该第四存储器位址与该第五存储器位址将该档头与该数据负载组成该封包并发送该封包至该传送装置所对应的一接收装置。

32.根据权利要求31所述的传送装置,其特征在于,该第一共用数据负载储存单元包含一第四标号用来指示该第一共用数据负载储存单元是否可被写入数据。

说明书 :

节省USB协议中存封包的存储器的数据传输方法及装置

技术领域

[0001] 本发明是有关于一种数据传输方法,更明确地说,是有关于一种可节省通用串行总线(Universal Serial Bus,USB)协议中用来储存封包的存储器的数据传输方法。

背景技术

[0002] 请参考图1。图1是为说明于先前技术中USB 3.0封包DP的封包格式的示意图。如图1所示,封包DP包含一档头H,以及一数据负载P。档头H包含一型态信息TP、一端点信息(end point)EP、一链路命令字元(link command word)LW、一档头错误校验码CRCH,以及一保留区RA。数据负载P包含一数据段D,以及一数据错误校验码CRCD。
[0003] 型态信息TP可用来判断封包DP的封包类型。封包类型,举例来说,可为握手(handshake)、数据(data)...等。端点信息EP可用来判断封包DP所属的传输类型。举例而言,在USB协议3.0版中,包含四种传输类型:控制型传输类型(control transfer type)、中断型传输类型(interrupt transfer type)、巨量型传输类型(bulk transfer type),以及同时型传输类型(isochronous transfer type)。每种传输类型分别用来传输具有不同特性的数据,如同时型传输类型用来即时传输(real-time transfer),可应用传输语音和视讯数据,以避免所传输的语音或视讯产生不连续或不同步(延迟)的现象。链路命令字元LW用来表示数据链路的情况,且链路命令字元LW另包含一链路命令字元错误校验码CRCL与档头顺序参数(Header Sequence Number)HSEQ。链路命令字元错误校验码CRCL用来判断链路命令字元LW是否有错误。档头顺序参数HSEQ用来判断封包DP的封包顺序是否有错误。档头错误校验码CRCH用来判断档头H是否有错误。保留区RA是可用来储存使用者所自行定义的数据。
[0004] 数据段D提供传送端实际所传输的数据,如摄影机所传送的视讯数据与随身碟所储存的数据等。数据错误校验码CRCD用来判断数据段D是否有错误。此外,数据段D可包含N笔数据SD1~SDN。
[0005] 在先前技术中,于USB传输时,可分为传送端T与接收端R。传送端T可为一主控端(host)或一装置端(device),而接收端R则为一对应的装置端或一对应的主控端。传送端T与接收端R于传输封包时的数据处理是从最底部依序分层为物理层(physical layer)PH、数据链路层(data link layer)DL与协议层(protocol layer)PR。以下分别说明于接收端R接收封包DP与传送端T欲传送封包DP的工作原理。
[0006] 当接收端R接收到封包DP时,接收端R会将封包DP储存于接收端R的数据链路层DL的数据链路存储器DLM。接收端R的数据链路层DL判断封包DP的档头H正确时,接收端R的数据链路层DL会将储存于数据链路存储器DLM的封包DP复制到接收端R的协议层PR的协议存储器PRM。如此,接收端R的协议层PR可对储存于协议存储器PRM的封包DP进行后续处理。
[0007] 当传送端T需要传送数据负载P时,传送端T的协议层PR会根据数据负载P产生档头H,并根据档头H与数据负载P于传送端T的协议层PR的协议存储器PRM内产生封包DP。传送端T会将储存于协议存储器PRM封包DP复制到传送端T的数据链路层DL的数据链路存储器DLM。此时,传送端T的协议层PRM会通知传送端T的数据链路层DL发送储存于数据链路存储器DLM的封包DP。
[0008] 由于在先前技术中,无论是传送端T或接收端R的协议层PR与数据链路层DL皆需要有存储器来储存封包(如协议存储器PRM与数据链路存储器DLM)。也就是说,当接收或传送封包DP时,封包DP会在接收端R或传送端T占用两倍于封包DP的大小的存储器空间。如此,造成存储器不必要的浪费,而使成本上升,带给使用者极大的不便。

发明内容

[0009] 本发明提供一种可节省通用串行总线协议中用来储存封包的存储器的数据传输方法。该数据传输方法包含一接收端接收一传送端所传送的一封包,且将该封包储存于一共用存储器、该接收端的一数据链路层对储存于该共用存储器内的该封包的一档头进行错误码校验,以得出一数据链路校验结果,并据以传送一协议层处理讯号给该接收端的一协议层,以及该接收端的该协议层根据该协议层处理讯号,直接对储存于该共用存储器内的该封包进行后续处理。
[0010] 本发明另提供一种可节省通用串行总线协议中用来储存封包的存储器的数据传输方法。该数据传输方法包含一传送端的一协议层将一数据负载写入于一共用数据负载存储器、该传送端的该协议层根据该数据负载产生一档头,并将该档头写入一共用档头存储器,以及该传送端的一数据链路层直接将储存于该共用档头存储器内的该档头与储存于该共用数据负载存储器内的该数据负载组成一封包,并将该封包传送至一接收端。
[0011] 本发明另提供一种可节省通用串行总线协议中用来储存封包的存储器的装置。该装置包含一传送装置,以及一接收装置。该传送装置包含一共用档头存储器、一共用数据负载存储器、一第一协议层装置,以及一第一数据链路层装置。该第一协议层装置,用来根据一数据负载,以产生一档头,并储存该数据负载于该共用数据负载存储器,以及储存该档头于该共用档头存储器。该第一数据链路层装置,用来直接将储存于该共用档头存储器的该档头与储存于该共用数据负载存储器的该数据负载组成一封包,并发送该封包。该接收装置,用来接收该封包。该接收装置包含一共用存储器、一第二数据链路层装置,以及一第二协议层装置。该共用存储器,用来储存该封包。该第二数据链路层装置,用来对储存于该共用存储器内的该封包的该档头进行错误码校验,以产生一数据链路校验结果,并根据该数据链路校验结果,以传送一数据链路回复讯号至该传送装置,与产生一协议层处理讯号。该第二协议层装置,用来根据该协议层处理讯号与储存于该共用存储器的该封包的该档头的一端点信息,以判断储存于该共用存储器的该封包为同时型传输类型封包。
[0012] 本发明另提供一种节省存储器的接收装置,该接收装置依据一通讯协议接收一封包,该封包包含一档头与一数据负载。该接收装置包含一共用存储器、一第二数据链路层装置,以及一第二协议层装置。该共用存储器包含复数个封包储存单元。该复数个封包储存单元的一第一封包储存单元储存该封包且该第一封包储存单元对应一第一存储器位址。该第二数据链路层装置电性连接于该共用存储器。该第二数据链路层装置依据该第一存储器位址来读取储存于该第一封包储存单元的该封包。该第二协议层装置电性连接于该共用存储器。该第二协议层装置依据该第一存储器位址读取储存于该第一封包储存单元的该封包。
[0013] 本发明另提供一种节省存储器的接收装置,该接收装置依据一通讯协议接收一封包,该封包包含一档头与一数据负载。该接收装置包含一数据链路存储器、一协议存储器、一第二数据链路层装置,以及一第二协议层装置。该数据链路存储器包含复数个档头储存单元,该复数个档头储存单元一第一档头储存单元储存该封包的该档头而不储存该封包的该数据负载。该第一档头储存单元对应一第二存储器位址。该协议存储器包含复数个数据负载储存单元,该复数个数据负载储存单元的一第一数据负载储存单元储存该封包的该数据负载而不储存该封包的该档头。该第一数据负载储存单元对应一第三存储器位址。该第二数据链路层装置电性连接于该数据链路存储器。该第二数据链路层装置依据该第二存储器位址来读取该封包的该档头。该第二协议层装置电性连接于该协议存储器。该第二协议层装置依据该第三存储器位址读取该封包的该数据负载。
[0014] 本发明另提供一种节省存储器的传送装置。该传送装置依据一通讯协议传送一封包,该封包包含一档头与一数据负载。该传送装置包含一第一协议层装置、一共用档头存储器、一共用数据负载存储器,以及一第一数据链路层装置。该第一协议层装置用来根据该封包的该数据负载以产生该封包的该档头。该共用档头存储器电性连接于该第一协议层装置。该共用档头存储器包含复数个共用档头储存单元。该复数个共用档头储存单元的一第一共用档头储存单元储存该封包的该档头而不储存该封包的该数据负载。该第一共用档头储存单元对应一第四存储器位址。该共用数据负载存储器电性连接于该第一协议层装置。该共用数据负载存储器包含复数个共用数据负载储存单元。该复数个共用数据负载储存单元的一第一共用数据负载储存单元储存该封包的该数据负载而不储存该封包的该档头。该第一共用数据负载储存单元对应一第五存储器位址。该第一数据链路层装置电性连接于该共用数据负载存储器与该共用档头存储器。该第一数据链路层装置依据该第四存储器位址与该第五存储器位址将该档头与该数据负载组成该封包并发送该封包至该传送装置所对应的一接收装置。

附图说明

[0015] 图1是为说明于先前技术中USB 3.0封包的封包格式的示意图;
[0016] 图2是为说明根据本发明的第一实施例的可节省USB协议中用来储存封包的存储器的数据传输方法的流程图;
[0017] 图3是为说明根据本发明的第二实施例的可节省USB协议中用来储存封包的存储器的数据传输方法的流程图;
[0018] 图4是为说明本发明的可节省USB协议中用来储存封包的存储器的装置的示意图;
[0019] 图5、图6以及图7分别为说明当已确认指针大于、小于,或等于待发送指针时的可被写入的共用档头存储器的档头储存单元的示意图;
[0020] 图8是为说明协议层写入档头至档头储存单元之后,设定待发送指针为对应的档头位址的示意图;
[0021] 图9、图10以及图11分别为说明当待发送指针大于、小于、等于已发送指针时传送端的数据链路层需发送其所储存的数据的数据储存单元的示意图;
[0022] 图12是为说明本发明的接收装置的另一实施例的示意图。
[0023] 附图标记说明:
[0024] 200、300-方法;201~203、301~305-步骤;400-装置;410-传送装置;411、421、521-数据链路层装置;412、422、522-协议层装置;420、520-接收装置;ADDRH_(K-1)、ADDRH_X、ADDRH_Y-档头位址;CRCH、CRCD、CRCL-错误校验码;DP-封包;D-数据段;DLM-数据链路存储器;EP-端点信息;H-档头;HM1~HMN-档头储存单元;HSEQ-档头顺序参数;LW-链路命令字元;P-数据负载;PLM1~PLMN-数据负载储存单元;PRM-协议存储器;PTRAA-已确认指针;PTRAS-已发送指针;PTRWS-待发送指针;RA-保留区;SACK-交握讯号;SDL-数据链路回复讯号;SPRP-协议层处理讯号;SD1~SDN-数据;SHHM-共用档头存储器;T-传送端;TP-型态信息。

具体实施方式

[0025] 有鉴于此,本发明提供一种数据传输方法,无论是传送端或接收端的协议层与数据链路层皆可共用同一存储器来储存封包,以节省储存封包时所需的存储器空间,进而降低成本。
[0026] 请参考图2。图2是为说明根据本发明的第一实施例的可节省USB协议中用来储存封包的存储器的数据传输方法200的流程图。于数据传输方法200中,设接收端R为一主控端(host)或一装置端(device),而传送端T则为对应于接收端R的一装置端或一主控端。接收端R包含一实体层PH、一数据链路层DL、一协议层PR,以及一共用存储器SHM。共用存储器SHM用来储存数据。共用存储器SHM包含封包储存单元DPM1~DPMN以及标号(flag)F1~FN。封包储存单元DPM1~DPMN用来储存封包。标号F1~FN分别用来指示封包储存单元DPM1~DPMN是否可被写入数据。数据传输方法200的步骤说明如下:
[0027] 步骤201:接收端R接收传送端T所传送的封包DP,且将封包DP储存于共用存储器SHM;
[0028] 步骤202:接收端R的数据链路层DL对储存于共用存储器SHM内的封包DP的档头H进行错误码校验,以得出数据链路校验结果EDL,并据以传送协议层处理讯号SPRP给接收端R的协议层PR;
[0029] 步骤203:接收端R的协议层PR根据协议层处理讯号SPRP,直接对储存于共用存储器SHM内的封包DP进行后续处理。
[0030] 于步骤201中,当接收端R接收传送端T所传送的封包DP时,接收端R会先根据标号F1~FN,以找出可被写入的封包储存单元。举例而言,当标号FK表示「可被写入」时,代表此时共用存储器SHM的封包储存单元DPMK可被写入数据;当标号FK表示「已被写入」时,代表此时共用存储器SHM的封包储存单元DPMK已经有储存数据,因此不可再被写入数据,以免覆盖掉原本储存于封包储存单元DPMK的数据。设此时标号FK表示「可被写入」,因此接收端R会将封包DP写入且储存于共用存储器SHM的封包储存单元DPMK,且接收端R会将标号FK标记为「已被写入」。
[0031] 于步骤202中,接收端R的数据链路层DL对储存于共用存储器SHM内的封包储存单元DPMK的封包DP的档头H进行错误码校验,以得出数据链路校验结果EDL。更明确地说,接收端R的数据链路层DL会依据封包DP的链路命令字元错误校验码CRCL与档头错误校验码CRCH,判断封包DP的档头H是否正确。封包DP的档头H的错误校验码CRCH可为16位元的循环冗余校验码(Cyclic Redundancy Check 16,CRC-16),而错误校验码CRCL可为5位元的循环冗余校验码(CRC-5)。数据链路层DL利用错误校验码CRCH与CRCL以分别对封包DP的档头H与链路命令字元LW进行循环冗余校验。举例来说,档头H整体的循环冗余校验,是将封包DP的档头H(包含错误校验码CRCH)除以一预定除数CRCDH,以据以得一对应的余数CRCRH。当余数CRCRH等于一预定值X(举例而言,X等于零)时,校验结果EH表示封包DP的档头H为正确;当余数CRCRH不等于预定值X时,校验结果EH表示封包DP的档头H为错误。而链路命令字元校验结果EL可以类似的方式得出。
[0032] 当校验结果EL与EH中有一者为错误时,则接收端R的数据链路层DL判断档头H为错误。此时,数据链路校验结果EDL表示错误,且接收端R的数据链路层DL会发送重送讯号SLBAD至传送端T,以告知传送端T所传送的封包DP于接收端R的数据链路校验结果EDL表示错误,来使传送端T重新传送封包DP。反的,当校验结果EL与EH皆为正确时,接收端R的数据链路层DL会判断档头H为正确。此时,数据链路校验结果EDL表示正确,且接收端R的数据链路层DL会发送确认讯号SLGOOD至传送端T,以告知传送端T所传送的封包DP于接收端R的数据链路校验结果EDL表示正确。
[0033] 此外,当数据链路校验结果EDL表示正确时,接收端R的数据链路层DL会传送协议层处理讯号SPRP给接收端R的协议层PR。协议层处理讯号SPRP是用来指示对应于共用存储器SHM的封包储存单元DPMK的封包位址ADDR,以使协议层PR对储存于共用存储器SHM内的封包储存单元DPMK的封包DP进行后续处理。
[0034] 于步骤203中,设数据链路层DL所传送的协议层处理讯号SPRP所指示的封包位址ADDR代表「K」,因此协议层PR可根据代表「K」的封包位址ADDR,以读取对应于封包位址ADDR的共用存储器SHM的封包储存单元DPMK所储存的数据。也就是说,接收端R的协议层PR可读取封包储存单元DPMK所储存的封包DP。如此,接收端R的协议层PR可根据封包DP的档头H的端点信息EP,以接收封包DP的数据负载P以进行后续处理。
[0035] 更进一步地说,接收端R的协议层PR根据封包DP的档头H的端点信息EP,以判断封包DP是否为同时型传输类型封包。
[0036] 当端点信息EP指示封包DP为同时型传输类型封包时,接收端R的协议层PR直接接收封包DP的数据负载P以进行后续处理。举例而言,数据负载P为传输端T传送给接收端R的语音数据,因此接收端R可直接接收封包DP的数据负载P,以根据数据负载P的语音数据来播放语音。
[0037] 当端点信息EP指示封包DP非为同时型传输类型封包时,接收端R的协议层PR对封包DP的数据负载P的数据负载错误校验码CRCD进行循环冗余校验,得出数据负载校验结果EPL,并据以发送交握(ACK)封包SACK至传送端T。其中数据负载错误校验码CRCD可为32位元的循环冗余校验码(CRC-32)。接收端R的协议层PL利用数据负载错误校验码CRCD进行循环冗余校验,以得到数据负载校验结果EPL,其工作原理与前述的数据链路层DL利用错误校验码CRCH与CRCL封包DP的档头H与链路命令字元LW进行循环冗余校验的方式类似,故不再赘述。当根据数据负载错误校验码CRCD所得到的数据负载校验结果EPL表示正确时,接收端R的协议层PR会传送交握讯号SACK至传送端T,其中交握讯号SACK包含有关封包DP的档头顺序参数HSEQ,以使传送端T可根据档头顺序参数HSEQ,判断交握讯号SACK是对应于封包DP,且此时交握讯号SACK是用来告知传送端T于接收端R中对应于封包DP的数据负载校验结果EPL表示正确(意即接收端R已正确地接收封包DP)。反的,当根据数据负载错误校验码CRCD所得到的数据负载校验结果EPL表示错误时,此时接收端R的协议层PR所传送的交握讯号SACK会告知传送端T于接收端R中对应于封包DP的数据负载校验结果EPL表示错误。如此,传送端T根据档头顺序参数HSEQ,可得知对应于档头顺序参数HSEQ的封包DP没有被接收端R正确地接收。因此,传送端T会再重新传送封包DP。
[0038] 根据前述的说明可知,在本发明的数据传输方法200中,当接收端R接收封包DP时,封包DP是储存于共用存储器SHM的一封包储存单元。也就是说,当接收端R接收封包DP时,接收端R仅需要有等同于一个封包大小的存储器空间(如封包储存单元DPMK),以储存封包DP。如此,可节省储存封包时所需的存储器空间,来降低成本。
[0039] 此外,根据数据传输方法200的基本精神可衍生出另一实施例。于另一实施例中,前述的共用存储器SHM中每一封包储存单元DPM1~DPMN可分成两个主要部份,第一部份是储存档头,第二部份用来储存数据负载。以下将作更进一步地说明。
[0040] 共用存储器SHM包含一数据链路存储器DLM,以及一协议存储器PRM。数据链路存储器DLM包含档头储存单元HM1~HMN。档头储存单元HM1~HMN用来储存档头。档头储存单元HM1~HMN分别包含共用档头标号FH1~~FHN。共用档头标号FH1~FHN分别用来指示档头储存单元HM1~HMN是否可被写入数据。协议存储器PRM包含数据负载储存单元PLM1~PLMN。数据负载储存单元PLM1~PLMN用来储存数据负载。数据负载储存单元PLM1~PLMN分别包含共用数据负载标号FPL1~FPLN。共用数据负载标号FPL1~FPLN是分别用来指示数据负载储存单元PLM1~PLMN是否可被写入数据。
[0041] 类似于步骤201,当接收端R接收传送端T所传送的封包DP时,接收端R会先根据共用档头标号FH1~FHN,以找出可被写入的档头储存单元,以及根据共用数据负载标号FPL1~FPLN以找出可被写入的数据负载储存单元。举例而言,当共用档头标号FHK表示「可被写入」时,代表此时数据链路存储器DLM的档头储存单元HMK可被写入数据;当共用档头标号FHK表示「已被写入」时,代表此时数据链路存储器DLM的档头储存单元HMK已经有储存数据,因此不可再被写入数据,以免覆盖掉原本储存于档头储存单元HMK的数据。利用类似的方法可根据共用数据负载标号FPL1~FPLN以找出可被写入的数据负载储存单元,故不再赘述。
[0042] 设此时共用档头标号FHK与共用数据负载标号FPLK皆表示「可被写入」,因此接收端R会将封包DP的档头H写入且储存于数据链路存储器DLM的档头储存单元HMK,将封包DP的数据负载P写入且储存于协议存储器PRM的数据负载储存单元PLMK,且接收端R会将共用档头标号FHK与共用数据负载标号FPLK皆标记为「已被写入」。
[0043] 类似于步骤202,接收端R的数据链路层DL对储存于数据链路存储器DLM内的档头储存单元HMK的封包DP的档头H进行错误码校验,以得出数据链路校验结果EDL。更明确地说,接收端R的数据链路层DL会依据封包DP的链路命令字元错误校验码CRCL与档头错误校验码CRCH,判断封包DP的档头H是否正确。数据链路层DL利用错误校验码CRCH与CRCL以分别对封包DP的档头H与链路命令字元LW进行循环冗余校验,以分别得到校验结果EH与EL。其工作原理如同前述说明,故不再赘述。
[0044] 当校验结果EL与EH中有一者为错误时,则接收端R的数据链路层DL判断档头H为错误。此时,数据链路校验结果EDL表示错误,且接收端R的数据链路层DL会发送重送讯号SLBAD至传送端T,以告知传送端T所传送的封包DP于接收端R的数据链路校验结果EDL表示错误,来使传送端T重新传送封包DP。反之,当校验结果EL与EH皆为正确时,接收端R的数据链路层DL会判断档头H为正确。此时,数据链路校验结果EDL表示正确,且接收端R的数据链路层DL会发送确认讯号SLGOOD至传送端T,以告知传送端T所传送的封包DP于接收端R的数据链路校验结果EDL表示正确。
[0045] 此外,当数据链路校验结果EDL表示正确时,接收端R的数据链路层DL会传送协议层处理讯号SPRP给接收端R的协议层PR。协议层处理讯号SPRP是用来指示对应于数据链路存储器DLM的档头储存单元HMK的档头位址ADDRH以及协议存储器PRM的数据负载储存单元PLMK的数据负载位址ADDRPL。
[0046] 类似于步骤203,协议层PR可根据数据链路层DL所传送的协议层处理讯号SPRP所指示的档头位址ADDRH与数据负载位址ADDRPL,以分别读取储存于数据链路存储器DLM的档头储存单元HMK的封包DP的档头H,以及储存于协议存储器PRM的数据负载储存单元PLMK的封包DP的数据负载P。因此,协议层PR可将档头H与数据负载P组成封包DP后,根据封包DP的档头H的端点信息EP,以判断封包DP是否为同时型传输类型封包,并对封包DP进行后续处理。其后续处理的方法与前述说明类似,故不再赘述。
[0047] 因此,在本实施例中,当接收端R接收封包DP时,封包DP的档头H是储存于数据链路存储器DLM的一档头储存单元,且封包DP的数据负载P是储存于协议存储器DLM的一数据负载储存单元。也就是说,当接收端R接收封包DP时,接收端R仅需要有等同于一个封包大小的存储器空间(如档头储存单元HMK加上数据负载储存单元PLMK),以储存封包DP。如此,可节省储存封包时所需的存储器空间,来降低成本。
[0048] 请参考图3。图3是为说明根据本发明的第二实施例的可节省USB协议中用来储存封包的存储器的数据传输方法300的流程图。于数据传输方法300中,设传送端T可为一主控端或一装置端,而接收端R则为对应于传送端T的一装置端或一主控端。传送端T包含一实体层PH、一数据链路层DL、一协议层PR、一共用档头存储器SHHM,以及一共用数据负载存储器SHPM。共用数据负载存储器SHPM包含数据负载储存单元PLM1~PLMN以及共用数据负载标号FPL1~FPLN。数据负载储存单元PLM1~PLMN用来储存数据负载。共用数据负载标号FPL1~FPLN是分别用来指示数据负载储存单元PLM1~PLMN是否可被写入数据。举例而言,当共用数据负载标号FPLK表示「可被写入」时,代表此时共用数据负载存储器SHPM的数据负载储存单元PLMK可被写入数据;当共用数据负载标号FPLK表示「已被写入」时,代表此时共用数据负载存储器SHPM的数据负载储存单元PLMK已经有储存数据,因此不可再被写入数据,以避免覆盖掉原本储存于数据负载储存单元PLMK的数据。共用档头存储器SHHM包含档头储存单元HM1~HMN、一待发送指针PTRWS、一已发送指针PTRAS,以及一已确认指针PTRAA。档头储存单元HM1~HMN用来储存档头。待发送指针PTRWS是用来指示在档头储存单元HM1~HMN之中,需要传送端T将所储存的数据传送至接收端R的档头储存单元。已发送指针PTRAS是用来指示在档头储存单元HM1~HMN之中,传送端T已经将所储存的数据传送至接收端R的档头储存单元。已确认指针PTRAA是用来指示在档头储存单元HM1~HMN之中,传送端T已经将所储存的数据传送至接收端R,且传送端T也接收到接收端R所传送的对应的代表正确地接收的交握讯号SACK的档头储存单元。数据传输方法300的步骤说明如下:
[0049] 步骤301:传送端T的协议层PR将数据负载P写入于共用数据负载存储器SHPM;
[0050] 步骤302:传送端T的协议层PR根据数据负载P产生档头H,并将档头H写入共用档头存储器SHHM;
[0051] 步骤303:传送端T的数据链路层DL直接将储存于共用档头存储器SHHM内的档头H与储存于共用数据负载存储器SHPM内的数据负载P组成一封包DP,并将封包DP传送至接收端R;
[0052] 步骤304:传送端T的数据链路层DL根据接收端R所传送的对应于封包DP的数据链路回复讯号SDL,以判断是否要重新传送封包DP;
[0053] 步骤305:传送端T的协议层PR根据接收端R所传送的对应于封包DP的交握讯号SACK,以进行后续处理。
[0054] 于步骤301中,当传送端T欲传送数据负载P,传送端T的协议层PR会根据共用数据负载标号FPL1~FPLN,以找出可被写入的数据负载储存单元。举例而言,设此时共用数据负载标号FPLK表示「可被写入」,因此传送端T会将封包DP写入且储存于共用数据负载存储器SHPM的数据负载储存单元PLMK,且传送端T会将共用数据负载标号FPLK标记为「已被写入」。
[0055] 于步骤302中,传送端T的协议层PR根据数据负载P与对应于数据负载储存单元PLMK的数据负载位址信息DADDR_PL,以产生档头H。举例而言,当数据负载P是为传送端T欲传送给接收端R的控制命令,协议层PR设定档头H的端点信息EP代表控制型传输类型;当数据负载P是为传送端T欲传送给接收端R的语音或视讯数据,协议层PR设定档头H的端点信息EP代表同时型传输类型。协议层PR除了产生USB协议中所规范的档头H所包含的信息(如型态信息TP、端点信息EP、链路命令字元LW、错误校验码CRCL与CRCH、档头顺序参数HSEQ等)的外,协议层PR还会在档头H的保留区RA写入用来指示数据负载储存单元PLMK的数据负载位址ADDRPL_K的数据负载位址信息DADDR_PL。
[0056] 传送端T的协议层PR根据待发送指针PTRWS与已确认指针PTRAA以找到可被写入的共用档头存储器SHHM的档头储存单元。图5、图6以及图7分别为说明当已确认指针PTRAA大于、小于,或等于待发送指针PTRWS时的可被写入的共用档头存储器SHHM的档头储存单元的示意图。举例而言,设待发送指针PTRWS是为档头储存单元HM(K-1)的档头位址ADDRH_(K-1),而已确认指针PTRAA是为档头储存单元HMX的档头位址ADDRH_X。在图5中,档头位址ADDRH_X大于档头ADDRH_(K-1),此时表示档头储存单元HMK~HMX是可被写入数据,而其他储存单元则已有储存数据。在图6中,档头位址ADDRH_X小于档头ADDRH_(K-1),此时表示HM1~HMX与HMK~HMN是可被写入数据,而其他储存单元则已有储存数据。在图7中,档头位址ADDRH_X等于档头ADDRH_(K-1),此时表示HM1~HMN皆可被写入数据。设于步骤302中,待发送指针PTRWS是为档头储存单元HM(K-1)的档头位址ADDRH_(K-1)且已确认指针PTRAA也等于档头位址ADDRH_(K-1),则协议层PR可将档头H写入档头储存单元HMK,且协议层PR写入档头H至档头储存单元HMK之后,会设定待发送指针PTRWS为档头储存单元HMK的档头位址ADDRH_K(如图8所示)。
[0057] 于步骤303中,传送端T的数据链路层DL根据待发送指针PTRWS与已发送指针PTRAS,以判断在共用档头存储器SHHM的档头储存单元HM1~HMN之中,需传送端T的数据链路层DL发送其所储存的数据的数据储存单元。图9、图10以及图11分别为说明当待发送指针PTRWS大于、小于、等于已发送指针PTRAS时传送端T的数据链路层DL需发送其所储存的数据的数据储存单元的示意图。举例而言,假设此时待发送指针PTRWS所指示的位址为档头储存单元HMK的档头位址ADDRH_K,而已发送指针PTRASS为档头储存单元HMY的档头位址ADDRH_Y。由图9可看出,若档头位址ADDRK大于档头位址ADDRH_Y,则表示传送端T需发送对应于档头储存单元HM(Y+1)~HMK所储存的档头的封包。由图10可看出,若档头位址ADDRH_K小于档头位址ADDRH_Y,则表示传送端T需发送对应于档头储存单元HM(Y+1)~HMN与HM1~HMK所储存的档头的封包。由图11可看出,若档头位址ADDRH_K等于档头位址ADDRH_Y,则表示传送端T目前没有需要发送的封包。
[0058] 当传送端T的数据链路层DL根据待发送指针PTRWS与已发送指针PTRAS,判断需发送对应于档头储存单元HMK所储存的档头H的封包后,传送端T的数据链路层DL会读取储存于档头储存单元HMK所储存的档头H。传送端T的数据链路层DL根据档头H的保留区RA的数据负载位址信息DADDR_PL,以得到储存于共用数据负载存储器SHPM的数据负载储存单元PLMK的数据负载位址ADDRPL_K。如此,传送端T的数据链路层DL可根据数据负载位址ADDRPL_K,以读取储存于数据负载储存单元PLMK的数据负载P,并将数据负载P与档头H组成一封包DP,以将封包DP传送至接收端R。
[0059] 于步骤304中,当接收端R所传送的数据链路回复讯号SDL是为重送讯号SLBAD时,此时传送端T的数据链路层DL可根据已确认指针PTRAA以调整已发送指针PTRAS,以使数据链路层DL重新传送封包DP。以下将作更进一步地说明。
[0060] 由于传送端T的数据链路层DL是根据已确认指针PTRAA与已发送指针PTRAS,以判断在档头储存单元HM1~HMN中,已传送过数据但尚未接收到接收端R所传送的代表正确地接收的交握讯号SACK的档头储存单元。举例而言,设已确认指针PTRAA所指示的位址为档头储存单元HMZ的档头位址ADDRH_Z,而已发送指针PTRAS所指示的位址为档头储存单元HMK的档头位址ADDRH_K。若档头位址ADDRH_K大于档头位址ADDRH_Z,则表示传送端T已发送对应于档头储存单元HMZ~HMK所储存的档头的封包,但尚未接收到接收端R所传送的代表正确地接收的交握讯号SACK;若档头位址ADDRH_K小于档头位址ADDRH_Z,则表示传送端T已发送对应于档头储存单元HMZ~HMN与HM1~HMK所储存的档头的封包,但尚未接收到接收端R所传送的代表正确地接收的交握讯号SACK的档头储存单元;若档头位址ADDRH_K等于档头位址ADDRH_Z,则表示针对对应于传送端T所发送的封包,皆已接收到接收端R所传送的代表正确地接收的交握讯号SACK。
[0061] 设于步骤304中,已确认指针PTRAA所指示的位址为档头储存单元HM(K-1)的档头位址ADDRH_(K-1),且已发送指针PTRAS所指示的位址为档头储存单元HMK的档头位址ADDRH_K。此时,若数据链路回复讯号SDL是为重送讯号SLBAD时,表示重送讯号SLBAD是对应于档头储存单元HMK所储存的档头H的封包DP,因此数据链路层DL可将已发送指针PTRAS设为已确认指针PTRAA(意即档头位址ADDRH_(K-1))。如此一来,如同前述(于步骤303)的说明,当数据链路层DL根据待发送指针PTRWS与已发送指针PTRAS,以判断在共用档头存储器SHHM的档头储存单元HM1~HMN之中,数据链路层DL需发送其所储存的数据的数据储存单元时,由于此时待发送指针PTRWS仍为档头位址ADDRH_K而已发送指针PTRAS已被重新设定为档头位址ADDRH_(K-1),因此数据链路层DL会以类似于步骤303的说明的方式重新发送封包DP。
[0062] 于步骤305中,由于交握讯号SACK是包含有关对应于封包DP的档头顺序参数HSEQ的信息,因此协议层PR可先根据交握讯号SACK所指示的档头顺序参数HSEQ,以判断交握讯号SACK是对应于封包DP。
[0063] 当协议层PR判断交握讯号SACK是指示封包DP已被正确地接收时,协议层PR可调整已确认指针PTRAA,以释放用来储存封包DP的档头H的档头储存单元。举例而言,设封包DP的档头H储存于共用档头存储器SHHM的档头储存单元HMK,因此协议层PR会将已确认指针PTRAA设定为档头储存单元HMK的档头位址ADDRH_K,以表示针对对应于档头储存单元HMK所储存的档头H的封包DP,传送端T已接收到接收端R所传送的代表正确地接收的交握讯号SACK。由于根据步骤302的说明可知,协议层PR根据已确认指针PTRAA与待发送指针PTRWS,以判断共用档头存储器SHHM的档头储存单元HM1~HMN是否可被写入,因此当协议层PR设定已确认指针PTRAA为共用档头存储器SHHM的档头储存单元HMK的档头位址ADDRH_K时,表示协议层PR会判断档头储存单元HMK可被写入数据(意即释放共用档头存储器SHHM的档头储存单元HMK)。
[0064] 此外,协议层PR可根据档头H的数据负载位址信息DADDR_PL,以得到数据负载位址ADDRPL_K。如此,协议层PR根据数据负载位址ADDRPL_K,可将对应于共用数据负载存储器SHPM的数据负载储存单元PLMK的共用数据负载标号FPL_K,标记为「可被写入」,以释放共用数据负载存储器SHPM的数据负载储存单元PLMK。
[0065] 因此,由前述的说明可知,当协议层PR判断交握讯号SACK是指示封包DP已被正确地接收时,协议层PR会调整已确认指针PTRAA与共用数据负载存储器SHPL中用来储存封包DP的数据负载P的数据负载储存单元PLMK所对应的共用数据负载标号FPL_K,以释放在共用档头存储器SHHM中用来储存封包DP的档头H的档头储存单元HMK与共用数据负载存储器SHPM中用来储存封包DP的数据负载P的数据负载储存单元PLMK。
[0066] 当协议层PR判断交握讯号SACK是指示封包DP没有被正确地接收时,协议层PR根据已确认指针PTRAA调整已发送指针PTRAS,以使该传送端T的数据链路层DL据以重新传送封包DP。其工作原理与步骤304中当数据链路层DL接收的数据链路回复讯号SDL为重送讯号SLBAD的方法类似,故不再赘述。
[0067] 另外,相较于先前技术,在本发明的数据传输方法300中,当传送端T欲传送对应于数据负载P的封包DP时,封包DP的档头H是储存于共用档头存储器SHHM的一档头储存单元,且封包DP的数据负载P是储存于共用数据负载存储器SHPM的一数据负载储存单元。也就是说,当传送端T欲传送对应于封包DP时,传送端T仅需要等同于一个档头的大小的存储器(如档头储存单元HMK)与等同于一个数据负载的大小的存储器(如数据负载储存单元PLMK),以储存封包DP。换句话说,当传送端T欲传送对应于数据负载P的封包DP时,传送端T仅需要有等同于一个封包大小的存储器空间,以储存封包DP。如此可节省存储器空间,以降低成本。
[0068] 请参考图4。图4是为说明本发明的可节省USB协议中用来储存封包的存储器的装置400的示意图。装置400用来传送数据。装置400包含一传送装置410与一接收装置420。传送装置510是为传送端。传送装置410包含一第一数据链路层装置411、一第一协议层装置412、一共用档头存储器SHHM,以及一共用数据负载存储器SHPM。接收装置420是为接收端。接收装置420包含一第二数据链路层装置421、一第二协议层装置422,以及一共用存储器SHM。装置400的接收装置420与传送装置410是分别根据本发明的第一实施例与第二实施例所衍生。
[0069] 当传送装置410欲发送一数据负载P时,第一协议层装置412将数据负载P写入于共用数据负载存储器SHPM,且第一协议层装置412根据数据负载P产生档头H,并将档头H写入共用档头存储器SHHM。接着,第一数据链路层装置411直接将储存于共用档头存储器SHHM内的档头H与储存于共用数据负载存储器SHPM内的数据负载P组成一封包DP,并发送封包DP至接收装置420。
[0070] 当接收装置420接收到封包DP时,会将封包DP储存于共用存储器SHM。接收装置420的第二数据链路层装置421对储存于共用存储器SHM内的封包DP的档头H进行错误码校验,以得出数据链路校验结果EDL,并据以产生数据链路回复讯号SDL至传送装置410,以及传送协议层处理讯号SPRP至第二协议层装置422。当数据链路校验结果EDL表示错误时,第二数据链路层装置421所产生的数据链路回复讯号SDL是为重送讯号SLBAD,用来告知传送装置410对应于封包DP的数据链路校验结果EDL表示错误,以使传送装置410的第一数据链路层装置411据以发送封包DP。当数据链路校验结果EDL表示正确时,第二数据链路层装置421所产生的数据链路回复讯号SDL是为确认讯号SLGOOD,用来告知传送装置410对应于封包DP的数据链路校验结果EDL表示正确,且第二协议层装置412根据协议层处理讯号SPRP,直接对储存于共用存储器SHM内的封包DP进行后续处理。更明确地说,当第二协议层装置
412接收到协议层处理讯号SPRP时,第二协议层装置412会根据封包DP的档头H的端点信息EP,以判断封包DP是否为同时型传输类型封包。当第二协议层装置412判断封包DP为同时型传输类型封包时,直接接收封包DP的数据负载P;当第二协议层装置412判断封包DP非为同时型传输类型封包时,对封包DP的数据负载P的数据负载错误校验码CRCD进行循环冗余校验,得出数据负载校验结果EPL,并据以发送一交握讯号SACK至传送装置410,以让传送装置410的第一协议层装置412据以作后续处理。
[0071] 此外,上述的接收装置也可根据数据传输方法200的另一实施例而据以实施。举例而言,根据数据传输方法200的另一实施例的接收装置520是可用来替代上述的接收装置420。请参考图12,接收装置520包含一数据链路存储器DLM、一协议存储器PRM、一第二数据链路层装置521、一第二协议层装置522。数据链路存储器DLM包含档头储存单元HM1~HMN。档头储存单元HM1~HMN用来储存档头。档头储存单元HM1~HMN分别包含共用档头标号FH1~FHN。共用档头标号FH1~FHN分别用来指示档头储存单元HM1~HMN是否可被写入数据。协议存储器PRM包含数据负载储存单元PLM1~PLMN。数据负载储存单元PLM1~PLMN用来储存数据负载。数据负载储存单元PLM1~PLMN分别包含共用数据负载标号FPL1~FPLN。共用数据负载标号FPL1~FPLN是分别用来指示数据负载储存单元PLM1~PLMN是否可被写入数据。换句话说,数据链路存储器DLM是用来储存封包的档头而不储存封包的数据负载,协议存储器PRM用来储存封包的数据负载而不储存封包的档头。第二数据链路层装置521电性连接于数据链路存储器DLM。第二协议层装置522电性连接于协议存储器PRM。接收装置520与传送装置410之间的数据传输的工作原理与接收装置420与传送装置410之间的数据传输的工作原理类似,故不再赘述。
[0072] 综上所述,本发明提供的数据传输方法,当接收端接收到封包时,将封包储存于共用存储器,且数据链路层对储存于共用存储器内的封包的档头进行错误码校验,以得出数据链路校验结果,并据以传送协议层处理讯号给协议层。如此,协议层可根据协议层处理讯号,以直接对储存于共用存储器内的封包进行后续处理。利用本发明的数据传输方法,当接收端接收封包时,接收端仅需要有等同于封包大小的存储器空间,以储存该封包。此外,本发明另提供一数据传输方法,当传送端欲传送数据负载时,传送端的协议层将数据负载写入于共用数据负载存储器。协议层根据数据负载产生对应的档头,并将对应的档头写入共用档头存储器,且传送端的数据链路层直接将储存于共用档头存储器内的档头与储存于共用数据负载存储器内的数据负载组成一封包,并发送该封包。利用本发明的数据传输方法,当传送端欲传送对应数据负载时,传送端仅需要有等同于一个封包大小的存储器空间,以储存对应于数据负载的封包。如此可节省存储器空间,以降低成本,带给使用者更大的方便。
[0073] 以上所述仅为本发明的较佳实施例,凡依本发明权利要求所做的均等变化与修饰,皆应属本发明的涵盖范围。