专利名称:串行传输控制器及其数据传输方法
专利类型:实用新型专利
专利申请号:CN202111264426.4
专利申请(专利权)人:上海兆芯集成电路股份有限公司
权利人地址:上海市浦东新区张江高科技园区金科路2537号301室
专利发明(设计)人:张嘉平,马红超,惠志强,李琳
专利摘要:一种串行传输控制器,用以处理一存储器与一外部装置之间的数据传输,包括一微控制器、一调度单元、一传输单元,以及一截停控制单元。微控制器取得来自存储器的一管道数据,根据管道数据从存储器读取一转移请求区块。调度单元依据管道数据和转移请求区块,生成一传输请求。传输单元依据传输请求,完成转移请求区块的一数据包的传输,并且对应地输出一传输响应至一截停控制单元。传输响应包含一传输完成信号、转移请求区块尚未传输的数据长度,以及转移请求区块的一传输信息。当截停控制单元接收到传输响应,且转移请求区块尚未传输的数据长度大于0时,通知传输单元继续执行转移请求区块的下一数据包的传输。
主权利要求:
1.一种串行传输控制器,用以处理一存储器与一外部装置之间的数据传输,包括:一微控制器,取得来自该存储器的一管道数据,根据该管道数据从该存储器读取一转移请求区块;
一调度单元,依据该管道数据和该转移请求区块,生成一传输请求;
一传输单元,依据该传输请求,完成该转移请求区块的一数据包的传输,并且对应地输出一传输响应至一截停控制单元,其中,该传输响应包含一传输完成信号、该转移请求区块尚未传输的数据长度以及该转移请求区块的一传输信息;
该截停控制单元,当接收到该传输响应,且该转移请求区块尚未传输的数据长度大于0时,通知该传输单元继续执行该转移请求区块的下一数据包的传输。
2.如权利要求1所述的串行传输控制器,其中,该传输信息中包含该转移请求区块已传输的数据长度,该转移请求区块中包含应传输的数据长度,其中,该传输单元使用公式len=len1–len2计算该转移请求区块尚未传输的数据长度,然后将该尚未传输的数据长度发送给该截停控制单元,其中,len1为该应传输的数据长度,len2为该已传输的数据长度,len为该转移请求区块尚未传输的数据长度。
3.如权利要求1所述的串行传输控制器,更包括:一管道高速缓存;其中,该微控制器将该管道数据存储于该管道高速缓存中。
4.如权利要求1所述的串行传输控制器,其中,该传输请求包含该转移请求区块的地址,该传输单元根据该转移请求区块的地址读取该转移请求区块,根据该转移请求区块读取该转移请求区块的该数据包,然后传输该数据包。
5.如权利要求1所述的串行传输控制器,其中,当符合一阻截条件时,该截停控制单元通知该传输单元继续执行该转移请求区块的该下一数据包的传输。
6.如权利要求5所述的串行传输控制器,其中,该阻截条件包括:
该转移请求区块为一正常转移请求区块;
该转移请求区块的该数据包已经传输成功;
该截停控制单元收到该传输完成信号的时间点尚在一预设传输期间内;
与该传输请求对应的该外部装置的端点的最大数据包长度大于一预设数据包长度;以及该截停控制单元已经阻截的次数小于等于一阻截次数。
7.如权利要求6所述的串行传输控制器,其中,该转移请求区块的该数据包已经传输成功,包括:该外部装置成功接收来自该串行传输控制器的该数据包,并且对应地回传一确认信息给该串行传输控制器;以及该串行传输控制器成功接收该确认信息;或该串行传输控制器成功接收来自该外部装置的该数据包,并且该数据包的一循环冗余校验为正确,以及传送该确认信息给该外部装置。
8.如权利要求5所述的串行传输控制器,其中,该传输响应包含发送完该转移请求区块后生成的传输信息,该截停控制单元根据该发送完该转移请求区块后生成的传输信息生成另一传输请求,该传输单元根据该另一传输请求执行该下一数据包的传输。
9.如权利要求8所述的串行传输控制器,其中该传输单元根据该另一传输请求执行完该下一数据包的传输后,生成另一传输响应,并将该另一传输响应发送给该截停控制单元,该截停控制单元根据该另一传输响应生成最终传输响应,并将该最终传输响应发送给该调度单元,该调度单元根据该最终传输响应更新该管道数据。
10.如权利要求1所述的串行传输控制器,其中,该传输请求包含一开始传输标识,在传输该数据包和该下一数据包的过程中,该开始传输标识始终处于高电平。
11.一种数据传输的方法,用以传输一存储器与一外部装置之间的数据,包括:取得来自该存储器的一管道数据,根据该管道数据从该存储器读取一转移请求区块;
依据该管道数据和该转移请求区块,生成一传输请求;
依据该传输请求,完成该转移请求区块的一数据包的传输,并且对应地输出一传输响应,其中,该传输响应包含一传输完成信号、该转移请求区块尚未传输的数据长度,以及该转移请求区块的一传输信息;
当接收到该传输响应,且该转移请求区块尚未传输的数据长度大于0时,继续执行该转移请求区块的下一数据包的传输。
12.如权利要求11所述的数据传输的方法,其中,该传输信息中包含该转移请求区块已传输的数据长度,该转移请求区块中包含应传输的数据长度,其中,该传输单元使用公式len=len1–len2计算该转移请求区块尚未传输的数据长度,然后将该尚未传输的数据长度发送给截停控制单元,其中,len1为该应传输的数据长度,len2为该已传输的数据长度,len为该转移请求区块尚未传输的数据长度。
13.如权利要求11所述的数据传输的方法,更包括:将该管道数据存储于一管道高速缓存中。
14.如权利要求11所述的数据传输的方法,其中,该传输请求包含该转移请求区块的地址,该传输单元根据该转移请求区块的地址读取该转移请求区块,根据该转移请求区块读取该转移请求区块的该数据包,然后传输该数据包。
15.如权利要求11所述的数据传输的方法,更包括:当符合一阻截条件时,继续执行该转移请求区块的该下一数据包的传输。
16.如权利要求15所述的数据传输的方法,其中,该阻截条件,包括:该转移请求区块为一正常转移请求区块;
该转移请求区块的该数据包已经传输成功;
收到该传输完成信号的时间点尚在一预设传输期间内;
与该传输请求对应的该外部装置的端点的最大数据包长度大于一预设数据包长度;以及已经阻截的数据包数小于等于一阻截次数。
17.如权利要求16所述的数据传输的方法,其中,该转移请求区块的该数据包已经传输成功,包括:在该外部装置成功接收该数据包,并且对应地回传一确认信息后,成功接收该确认信息;或在成功接收来自该外部装置的该数据包,并且该数据包的一循环冗余校验为正确后,传送该确认信息给该外部装置。
18.如权利要求15所述的数据传输的方法,其中,该传输响应包含发送完该转移请求区块后生成的传输信息;根据该发送完该转移请求区块后生成的传输信息生成另一传输请求,并且根据该另一传输请求执行该下一数据包的传输。
19.如权利要求18所述的数据传输的方法,其中,根据该另一传输请求执行完该下一数据包的传输后,生成另一传输响应,并发送该另一传输响应;根据该另一传输响应生成最终传输响应,并发送该最终传输响应;以及根据该最终传输响应更新该管道数据。
20.如权利要求11所述的数据传输的方法,其中,该传输请求包含一开始传输标识,在传输该数据包和该下一数据包的过程中,该开始传输标识始终处于高电平。 说明书 : 串行传输控制器及其数据传输方法技术领域[0001] 本发明有关于一电子装置,特别是有关于一串行传输控制器及其数据传输方法。背景技术[0002] 在USB的协议中,由于主机端(host)可能同时连接多个USB装置,USB装置真正和主机端之间的资料传输是通过一端点(Endpoint)。为了与USB装置进行数据传输,在主机端的存储器中产生对应于USB装置的该端点的管道数据(pipedata)以及多个转移请求区块(TransferRequestBlock:TRB),其中每一转移请求区块指向存储器中的不同实体存储区块。[0003] 当主机端与USB装置进行数据传输时,位于主机端的串行传输控制器会先从存储器读取与端点对应的管道数据。然后,串行传输控制器根据管道数据从存储器读取转移请求区块,并根据转移请求区块给端点发送一个数据包。在现有设计中,连续发送同一转移请求区块的数据包时,还需要再次从存储器读取转移请求区块,无形中增加了数据传输的时间开销。发明内容[0004] 为了减少连续发送同一转移请求区块的数据包的时间开销,本公开提出一种串行传输控制器及其数据传输方法。[0005] 依据本发明实施例之串行传输控制器,用以处理一存储器与一外部装置之间的数据传输,包括:一微控制器、一调度单元、一传输单元,以及一截停控制单元。微控制器取得来自存储器的一管道数据,根据管道数据从存储器读取一转移请求区块。调度单元依据管道数据和转移请求区块,生成一传输请求。传输单元依据传输请求,完成转移请求区块的一数据包的传输,并且对应地输出一传输响应至一截停控制单元。传输响应包含一传输完成信号、转移请求区块尚未传输的数据长度,以及转移请求区块的一传输信息。当截停控制单元接收到传输响应,且转移请求区块尚未传输的数据长度大于0时,通知传输单元继续执行转移请求区块的下一数据包的传输。[0006] 依据本发明实施例之数据传输的方法,用以传输一存储器与一外部装置之间的数据,包括:取得来自存储器的一管道数据,根据管道数据从存储器读取一转移请求区块;依据管道数据和转移请求区块,生成一传输请求;依据传输请求,完成转移请求区块的一数据包的传输,并且对应地输出一传输响应,其中,传输响应包含一传输完成信号、转移请求区块尚未传输的数据长度,以及转移请求区块的一传输信息;当接收到传输响应,且转移请求区块尚未传输的数据长度大于0时,继续执行转移请求区块的下一数据包的传输。[0007] 本发明提出的串行传输控制器及其数据传输的方法可连续传输同一个转移请求区块的多个数据包,减少了重复到存储器存取转移请求区块的时间开销,提高了传输效率。在外部装置的多个端点同时进行数据输入(IN)或数据输出(OUT)时,本发明提出的串行传输控制器及其数据传输的方法可以减少端点与端点之间的切换次数,并减少重复存取存储器及重复抓取管道数据的时间开销。附图说明[0008] 图1为本公开实施例之串行传输控制器100处理存储器120与外部装置130之间的数据传输的示意图。[0009] 图2为本公开实施例之图1串行传输控制器100的调度单元104、截停控制单元106,以及传输单元108之间信号传输的示意图。[0010] 图3为本公开实施例之数据传输的方法的流程图。[0011] 图4为本公开实施例之串行传输控制器100的截停控制单元106的结构示意图。[0012] 图5为本公开实施例之图2的信号传输的波形时序图。[0013] 100:串行传输控制器[0014] 102:微控制器[0015] 104:调度单元[0016] 106:截停控制单元[0017] 108:传输单元[0018] 110:管道高速缓存[0019] 120:存储器[0020] 122:管道数据[0021] 130:外部装置[0022] TRB0,TRB1,TRB2:转移请求区块[0023] Endpoint0,Endpoint1,Endpoint2:端点[0024] 200:存储器映射输入输出[0025] 232:开启信号[0026] 234:阻截次数设定信号[0027] 236:预设数据包长度设定信号[0028] REQ,REQ’,REQ1’:传输请求[0029] RES,RES’,RES1’:传输响应[0030] ASYEP_VALID,ASYEP_VALID_TRM:开始传输标识[0031] ASYEP_LST*:传输信息[0032] ASYEP_LSTTRANSACTION_STATUS:传输信息[0033] ASYEP_MAXPSZ,TRB_TYPE:信号[0034] ASYEP_TERM,ASYEP_TERM_SCH:传输完成信号[0035] ASYEP_*:传输信息[0036] ASYEP_TRANSACTION_STATUS:传输信息[0037] NOT_FINISH_LENGTH:信号[0038] TRANS_SUCCESS:信号[0039] PRESOF_MEET:信号[0040] ASYEP_*_SCH:传输信息[0041] ASYEP_TRANSACTION_STATUS_SCH:传输信息[0042] ASYEP_LST*_TRN:传输信息[0043] ASYEP_LSTTRANSACTION_STATUS_TRN:传输信息[0044] REG_CTL_CNT:信号REG_MAXPSZ:信号[0045] REG_PARK_CTL_ON:信号[0046] 250,252,254,256:区块[0047] S300,S302,S304,S306:步骤[0048] f1,f2,f3,f4,f5,f6,f7,f8,f9:逻辑电路[0049] 500,502:时段[0050] 550:阻截状态信号[0051] T1,T2,T3,T4,T5,T6,T7:时间点[0052] CLK:时脉[0053] 1,2,3:数据具体实施方式[0054] 本发明是参照所附图式进行描述,其中遍及图式上的相同参考数字标示了相似或相同的元件。上述图式并没有依照实际比例大小描绘,其仅仅提供对本发明的说明。一些发明的型态描述于下方作为图解示范应用的参考。这意味着许多特殊的细节,关系及方法被阐述来对这个发明提供完整的了解。无论如何,拥有相关领域通常知识的人将认识到若没有一个或更多的特殊细节或用其他方法,此发明仍然可以被实现。[0055] 以其他例子来说,众所皆知的结构或操作并没有详细列出以避免对这发明的混淆。本发明并没有被阐述的行为或事件顺序所局限,如有些行为可能发生在不同的顺序亦或同时发生在其他行为或事件之下。此外,并非所有阐述的行为或事件都需要被执行在与现有发明相同的方法之中。[0056] 图1为本公开实施例之串行传输控制器100处理存储器120与外部装置130之间的数据传输的示意图。如图1所示,串行传输控制器100耦接于存储器120和外部装置130之间。串行传输控制器100负责将存储器120中的数据输出到外部装置130,或者将外部装置130中的数据输入到存储器120。在一实施例中,存储器120和串行传输控制器100都位于主机端。在另一实施例中,串行传输控制器100耦接多个外部装置130。[0057] 如图1所示,串行传输控制器100包括一微控制器102、一调度单元104、一截停控制单元106、一传输单元108,以及一管道高速缓存(pipecache)110。存储器120包括管道数据(pipedata)122,以及多个转移请求区块(TransferRequestBlock:TRB,例如TRB0、TRB1、TRB2,等等)。外部装置130包括多个端点(Endpoint,例如Endpoint0、Endpoint1、Endpoint2等等,)。[0058] 在一些实施例中,微控制器102负责数据传输的安排。当软件(比如,外部装置130和/或串行传输控制器100的驱动程序等)做好数据传输的准备后,会通知微控制器102安排传输任务。具体来说,微控制器102选择一个外部装置130,并选择外部装置130中的一个端点进行数据传输。在一实施例中,微控制器102通过选择与外部装置130的端点对应的管道数据122,来实现与外部装置130的端点进行数据传输的。[0059] 调度单元104依据微控制器102所安排的传输任务去存储器120抓取管道数据122。调度单元104负责传输整体的安排,传输节奏的把控,安排何时做哪些传输。[0060] 在调度单元104安排好既定传输后,把相关传输信息发送给截停控制单元106及/或传输单元108。最后,由传输单元108完成与外部装置130之间的既定传输。[0061] 一般来说,外部装置130的一个端点可对应于存储器120中的一管道数据,以及至少一个转移请求区块。举例来说,当串行传输控制器100处理主机端与外部装置130的端点(Endpoint0)之间的数据传输时,软件将在存储器120中保存对应于端点(Endpoint0)的管道数据122,以及转移请求区块(TRB0、TRB1、TRB2、…)。当串行传输控制器100处理主机端与外部装置130的另一端点(Endpoint1)之间的数据传输时,软件将在存储器120中保存对应于另一端点(Endpoint1)的另一管道数据(未图示),以及另一组转移请求区块(未图示)。在一些实施例中,外部装置130为一USB装置,而串行传输控制器100为一USB控制器,但本公开不限于此。[0062] 在一些实施例中,当串行传输控制器100处理主机端与外部装置130的端点(Endpoint0)之间的数据传输时,微控制器102首先取得来自存储器120的管道数据122。管道数据122包括对应于管道数据122的当前传输的转移请求区块(比如,TRB0或TRB1或TRB2等等)的地址、外部装置130的端点(Endpoint0)的传输速度、转移请求区块的应传输的数据长度、转移请求区块(例如为TRB0)的前一次的传输信息(比如,已传输的数据长度,等等)、当前传输的转移请求区块(例如为TRB0)的类型,以及每次所能传输的最大数据包长度(对应于端点(Endpoint0))。在一实施例中,管道数据122中还包含对应于下一端点的管道数据的地址。微控制器102可以根据下一端点的管道数据的地址获得下一端点的管道数据。[0063] 微控制器102更将所取得的管道数据122存储于管道高速缓存110中。接着,调度单元104从管道高速缓存110中读取管道数据122,并且依据管道数据122中所记录的转移请求区块(比如TRB0)的地址,从存储器120中取得转移请求区块(比如TRB0),并根据管道数据122和转移请求区块生成一传输请求。[0064] 在一些实施例中,调度单元104可直接将传输请求发送给传输单元108,或者,调度单元104先将传输请求发送给截停控制单元106,再由截停控制单元106将传输请求发送给传输单元108。在另一些实施例中,调度单元104将传输请求的一部分发送给截停控制单元106,再由截停控制单元106将传输请求发送给传输单元108;调度单元104将传输请求的另一部分直接发送给传输单元108。在一些实施例中,串行传输控制器100中的管道高速缓存110可提高微控制器102存取存储器120中管道数据122的效率。[0065] 在一些实施例中,调度单元104所发送的传输请求包括当前传输的转移请求区块的相关信息,例如转移请求区块(TRB0)的数据长度、转移请求区块(TRB0)的地址、转移请求区块(TRB0)的前一次的传输信息(包括已传输的数据长度等)、转移请求区块(例如为TRB0)的类型,以及端点(Endpoint0)每次所能传输的最大数据包长度。[0066] 传输单元108收到直接或间接来自调度单元104的传输请求后,遂依据传输请求完成当前的转移请求区块(TRB0)的一数据包的传输,并生成一传输响应,其中,传输响应包含一传输完成信号、转移请求区块尚未传输的数据长度和转移请求区块的一传输信息。接着,传输单元108发送传输响应给截停控制单元106。传输响应中的传输完成信号表示主机端与外部装置130的端点(Endpoint0)之间的数据传输已经完成。传输响应中的转移请求区块的传输信息包括转移请求区块(TRB0)已传输的数据长度,其中,转移请求区块已传输的数据长度的计算公式为:len_sent=len_lst+len_packet,其中len_sent为转移请求区块已传输的数据长度,len_lst为转移请求区块的前一次的传输信息中包含的已传输的数据长度,len_packet为本次传输的数据包的长度。至于如何根据传输请求中包含的转移请求区块的地址和端点每次所能传输的最大数据包长度,在主机端和外部装置130的端点直接传输数据,为本领域技术人员的通常知识,此处就不赘述了。[0067] 传输单元108可以从传输请求中得到转移请求区块(TRB0)应传输的数据长度,并从转移请求区块的传输信息中获取转移请求区块已传输的数据长度。然后,传输单元108使用公式len=len1–len2计算转移请求区块尚未传输的数据长度,其中,len1为该应传输的数据长度,len2为该已传输的数据长度,len为该尚未传输的数据长度。[0068] 当截停控制单元106从传输单元108接收到传输响应,且判断当前传输的转移请求区块(TRB0)尚未传输的数据长度大于0时,截停控制单元106继续判断当前的传输是否符合一阻截条件。若符合阻截条件,则截停控制单元106会截停来自传输单元108的传输响应(即不将传输响应发送给调度单元104),并且传送包括转移请求区块的传输信息的另一传输请求给传输单元108,使得传输单元108可继续执行转移请求区块的下一数据包的传输。[0069] 在一些实施例中,阻截条件为:一、当前传输的转移请求区块(TRB0)为一正常转移请求区块;二、当前传输的转移请求区块(TRB0)的(上一次传输的)数据包已经传输成功;三、截停控制单元106收到来自传输单元108的传输完成信号的时间点尚在一预设传输期间内;四、当前传输对应的端点的最大数据包长度大于一预设数据包长度;以及,五、截停控制单元106已经阻截的数据包数小于等于一阻截次数。[0070] 当当前传输的转移请求区块(TRB0)尚未传输的数据长度大于0,并且阻截条件一~五皆符合时,截停控制单元106才会截停来自传输单元108的传输响应。在一实施例中,串行传输控制器100所执行的存储器120与外部装置130之间的数据传输包括周期(period)传输及非同步(asynchronous)传输,阻截条件一~五是发生于串行传输控制器100执行非同步传输时。[0071] 在阻截条件一的判断中,截停控制单元106从调度单元104所发送的传输请求中得到转移请求区块(例如为TRB0)的类型。在一些实施例中,转移请求区块(例如为TRB0)的类型可包括正常(Normal)类型、设置阶段(SetupStage)类型、数据阶段(DataStage)类型、状态阶段(StatusStage)类型、等时(Isoch)类型、链接(Link)类型,以及事件数据(EventData)类型等。当转移请求区块的类型为正常(Normal)类型时,截停控制单元106判断已符合阻截条件一。[0072] 在一些实施例中,主机端向外部装置130输出数据时,当外部装置130成功接收来自串行传输控制器100的数据包,并且对应地回传一确认信息(ACK)给串行传输控制器100,以及串行传输控制器100成功接收来自外部装置130的确认信息,则截停控制单元106判断已符合阻截条件二。[0073] 在另一实施例中,外部装置130向主机端输入数据时,当串行传输控制器100成功接收来自外部装置130的数据包,对数据包执行一循环冗余校验(CRCcheck)的结果为正确,以及传送确认信息给外部装置130,则截停控制单元106判断已符合阻截条件二。[0074] 在一些实施例中,USB的传输具有微帧(micro‑frame)的概念。例如,每125微秒(microsecond,us)为一个微帧。在USB的规范中,数据传输不能跨微帧进行。因此,当截停控制单元106收到来自传输单元108的传输响应的时间点尚在一预设传输期间内(即在当前微帧内的剩余时间可以完成下一数据包的传输),就表示传输单元108仍可进行下一数据包的传输,因此截停控制单元106判断符合阻截条件三。[0075] 外部装置130的每一端点(例如,Endpoint0、Endpoint1、Endpoint2,等等)依据其传输类型,每次所能传输的最大数据包长度可能不相同。举例来说,当传输类型为全速批量输出(fullspeedbulkout)时,每个数据包最多可进行64字节(byte)的传输。当传输类型为高速批量输出(highspeedbulkout)时,每个数据包最多可进行512字节的传输。若将预设数据包长度设定为256字节,则截停控制单元106并不会截停全速批量输出的传输类型中的所有数据包。换句话说,阻截条件四可达到不阻截较小转移请求区块的数据包的目的。[0076] 在阻截条件五中,当截停控制单元106连续阻截当前转移请求区块的次数大于阻截次数(即阻截发送当前转移请求区块的数据包时生成的传输响应的次数),则会停止阻截。在一些实施例中,可将阻截次数设定为3。[0077] 举例来说,当截停控制单元106阻截来自传输单元108的传输响应的次数仍小于等于3的情况下,截停控制单元106仍判断符合阻截条件五而继续进行阻截。当截停控制单元106阻截来自传输单元108的传输响应的次数大于3的情况下,截停控制单元106判断不符合阻截条件五而停止阻截。[0078] 图2为本公开实施例之图1串行传输控制器100的调度单元104、截停控制单元106,以及传输单元108之间信号传输的示意图。如图2所示,系统处理器(未图示)通过一存储器映射输入输出(MMIO)200将一开启信号232、一阻截次数设定信号234,以及一预设数据包长度设定信号236传送给截停控制单元106。[0079] 开启信号232用以开启或关闭截停控制单元106的阻截功能。在一实施例中,当开启信号232为1时开启截停控制单元106的阻截功能,当开启信号232为0时关闭截停控制单元106的阻截功能。阻截次数设定信号234用以设定阻截条件五中的阻截次数,使得截停控制单元106可做出阻截条件五的判断。预设数据包长度设定信号236用以设定阻截条件四中的预设数据包长度。[0080] 如图2所示,调度单元104依据管道数据122向截停控制单元106发送一传输请求REQ,使得截停控制单元106对应地向传输单元108发送一传输请求REQ’。在一些实施例中,传输请求REQ、REQ’具有相同的内容,例如包括当前传输的转移请求区块的相关信息,例如转移请求区块(例如,TRB0)的数据长度、转移请求区块(TRB0)的地址、转移请求区块(例如,TRB0)的前一次的传输信息ASYEP_LST*(包括已传输的数据长度等)、转移请求区块(例如为TRB0)的类型(例如信号TRB_TYPE),以及端点(例如,Endpoint0)每次所能传输的最大数据包长度(例如信号ASYEP_MAXPSZ),还包括开始传输标识ASYEP_VALID(传输请求REQ’中包括的是开始传输标识ASYEP_VALID_TRM)。在一些实施例中,调度单元104直接发送传输请求REQ给传输单元108,但本公开不限于此。[0081] 在一实施例中,截停控制单元106根据传输请求中包含的端点(Endpoint0)每次所能传输的最大数据包长度(例如信号ASYEP_MAXPSZ),做出阻截条件四的判断(即判断当前传输对应的端点的最大数据包长度是否大于一预设数据包长度)。截停控制单元106根据传输请求中包含的转移请求区块的类型(例如信号TRB_TYPE),可做出阻截条件一的判断(即判断当前传输的转移请求区块是否为一正常转移请求区块)。[0082] 接着,传输单元108在收到来自调度单元104的传输请求REQ或来自截停控制单元106的传输请求REQ’后,执行区块250的动作,亦即开始并完成当前传输的转移请求区块(例如,TRB0)的数据包的传输。然后,传输单元108对应地发送一传输响应RES’给截停控制单元106,其中,传输响应RES’包含传输完成信号ASYEP_TERM、当前的转移请求区块(例如,TRB0)的数据包是否已经传输成功的信息(例如信号TRANS_SUCCESS)、当前传输的转移请求区块尚未传输的数据长度(例如信号NOT_FINISH_LENGTH)、完成数据包传输的时间点是否尚在一预设传输期间内的信息(例如信号PRESOF_MEET)、当前传输的转移请求区块(TRB0)的传输信息ASYEP_*。在一实施例中,传输信息ASYEP_*包含当前传输的转移请求区块(例如,TRB0)已传输的数据长度等信息。[0083] 根据当前的转移请求区块(例如,TRB0)的数据包是否已经传输成功的信息(例如信号TRANS_SUCCESS),截停控制单元106可做阻截条件二的判断(即判断当前传输的转移请求区块(例如,TRB0)的(上一次传输的)数据包是否已经传输成功)。[0084] 根据完成数据包传输的时间点是否尚在一预设传输期间内的信息(例如信号PRESOF_MEET),截停控制单元106可确认在收到传输单元108的传输响应RES’时,是否仍可让传输单元108继续传送转移请求区块的另一数据包,而做出阻截条件三的判断。[0085] 当阻截条件一~五皆符合时,截停控制单元106执行区块252的动作,亦即截停控制单元106判定符合阻截状态。接着,截停控制单元106根据传输响应RES’生成另一传输请求REQ1’,并将另一传输请求REQ1’发送给传输单元108。传输单元108收到另一传输请求REQ1’后,则继续执行区块254的动作,亦即完成当前传输的转移请求区块(例如,TRB0)的另一数据包的传输。[0086] 相同地,当传输单元108完成当前传输的转移请求区块(例如,TRB0)的另一数据包的传输后,会再向截停控制单元106发出另一传输响应RES1’。然后,截停控制单元106执行区块256的动作,根据另一传输响应RES1’判断是否符合阻截条件。当判断结果为“否”时(即不符合阻截条件时),截停控制单元106根据另一传输响应RES1’生成最终传输响应RES,并向调度单元104发送最终传输响应RES。在一实施例中,传输响应RES与RES1’相同。截停控制单元106根据另一传输响应RES1’判断是否符合阻截条件的方法,和根据传输响应RES’判断是否符合阻截条件的方法相同,此处就不赘述了。[0087] 调度单元104接收到最终传输响应RES后,根据最终传输响应RES(比如根据最终传输响应RES中的当前传输的转移请求区块的传输信息)更新管道高速缓存110中保存的管道数据122,并将更新后的管道数据122存入存储器120中,从而完成主机端与外部装置130的端点(例如,Endpoint0)之间的数据传输。[0088] 图3为本公开实施例之数据传输的方法的流程图。请同时参阅图1、图2和图3。如图3所示,微控制器102首先执行步骤S300,取得来自存储器130的对应于外部装置130的端点(例如,Endpoint0)管道数据122。接着,调度单元104执行步骤S302,依据管道数据122,从存储器120中读取当前传输的转移请求区块(例如转移请求区块TRB0),并且对应地生成一传输请求(例如图2的传输请求REQ)。然后,调度单元104通过截停控制单元106将传输请求发送给传输单元108。[0089] 然后,传输单元108依据接收到的传输请求,开始并完成当前的转移请求区块的一数据包的传输,并且对应地输出一传输完成信号(例如图2的传输响应RES’中包含的传输完成信号ASYEP_TERM),以及当前的转移请求区块的传输信息(例如图2的传输响应RES’中包含的传输信息ASYEP_*)。然后,传输单元108将传输完成信号和当前的转移请求区块的传输信息发送给截停控制单元106。[0090] 接着,截停控制单元106执行步骤S306,亦即在当前传输的转移请求区块的尚未传输的数据长度大于0时,截停控制单元106判断是否符合一阻截条件。当截停控制单元106判断符合阻截条件(同时符合阻截条件一~五),则串行传输控制器100依据转移请求区块的传输信息,继续执行转移请求区块的下一数据包的传输。具体来说,截停控制单元106依据转移请求区块的传输信息生成另一传输请求(例如图2的另一传输请求REQ1’),并将另一传输请求传给传输单元108。然后,传输单元108依据另一传输请求,执行转移请求区块的下一数据包的传输(步骤S308),亦即重回步骤S304。[0091] 在步骤S306中,当截停控制单元106判断转移请求区块的尚未传输的数据长度等于0,或者不符合阻截条件(阻截条件一~五中有至少一者不符合),则截停控制单元106将转移请求区块的传输响应(如图2中的最终传输响应RES)发送给调度单元104,调度单元104依据传输响应中包含的转移请求区块的传输信息更新管道数据122,以结束当前转移请求区块的传输。然后,图1的微控制器102再次执行步骤S300,读取对应于另一端点(例如为端点Endpoint1)的管道数据122,以执行另一端点的数据传输。[0092] 图4为本公开实施例之串行传输控制器100的截停控制单元106的结构示意图。如图4所示,截停控制单元106包括逻辑电路f1、逻辑电路f2、逻辑电路f3、逻辑电路f4、逻辑电路f5、逻辑电路f6、逻辑电路f7、逻辑电路f8,以及逻辑电路f9。[0093] 逻辑电路f1接收信号TRB_TYPE(包括当前传输的转移请求区块(例如,TRB0)的类型)、信号TRANS_SUCCESS(包括当前的转移请求区块(例如,TRB0)的数据包是否已经传输成功的信息),以及信号PRESOF_MEET(包括完成数据包传输的时间点是否尚在一预设传输期间内)。当当前传输的转移请求区块(例如,TRB0)的类型为一正常转移请求区块,则信号TRB_TYPE为高电平。[0094] 当当前的转移请求区块(例如,TRB0)的数据包已经传输成功,则信号TRANS_SUCCESS为高电平。当截停控制单元106收到来自传输单元108的传输完成信号ASYEP_TERM的时间点尚在一预设传输期间内,则信号PRESOF_MEET为高电平。逻辑电路f1将信号TRB_TYPE、信号TRANS_SUCCESS及信号PRESOF_MEET做与运算。换句话说,当阻截条件一、阻截条件二,及阻截条件三同时符合时,则逻辑电路f1输出高电平。[0095] 逻辑电路f2接收信号REG_PARK_CTL_ON(即图2中的信号232,用以开启截停控制单元106的阻截条件阻截功能),以及信号REG_CTL_CNT(即图2中的信号234,用以设定阻截条件五中的阻截次数)。当逻辑电路f2收到高电平的信号REG_PARK_CTL_ON,则开启截停控制单元106的阻截功能。[0096] 在一些实施例中,截停控制单元106包括一计数器(图示中未示出,初始值为0),用以计算对当前的转移请求区块截停的次数。当信号REG_PARK_CTL_ON为高电平,并且截停的次数仍小于等于阻截次数时,则逻辑电路f2输出高电平。换句话说,当截停控制单元106的阻截功能开启及阻截条件五同时符合时,逻辑电路f2输出高电平。需要说明的是,当调度单元104执行另一转移请求区块的传输时,截停控制单元106的计数器将被重新设置为0。[0097] 逻辑电路f3接收信号REG_MAXPSZ(即图2中的信号236,用以设定阻截条件四中的预设数据包长度),以及信号ASYEP_MAXPSZ(包括当前传输对应的端点的最大数据包长度)。当当前传输对应的端点的最大数据包长度大于信号REG_MAXPSZ中的预设数据包长度,则逻辑电路f3输出高电平。换句话说,阻截条件四符合时,逻辑电路f3输出高电平。[0098] 逻辑电路f4接收信号NOT_FINISH_LENGTH(包括当前传输的转移请求区块(例如,TRB0)尚未传输的数据长度)。当当前传输的转移请求区块(例如,TRB0)尚未传输的数据长度大于0,则逻辑电路f4输出高电平。[0099] 逻辑电路f5接收来自逻辑电路f1~f4的输出信号,并且将逻辑电路f1~f4的输出信号进行逻辑与运算。若当前传输的转移请求区块(例如,TRB0)尚未传输的数据长度大于0,且阻截条件一~五皆符合(亦即逻辑电路f1~f4的输出信号皆为高电平)时,则逻辑电路f5输出高电平。[0100] 逻辑电路f6~f9依据逻辑电路f5的输出信号,对应地执行不同的动作。举例来说,当逻辑电路f5输出高电平(符合阻截条件),则逻辑电路f6所输出的开始传输标识ASYEP_VALID_TRM为截停控制单元106所产生的开始传输标识。当逻辑电路f5输出低电平(不符合阻截条件),逻辑电路f6所输出的开始传输标识ASYEP_VALID_TRM为调度单元104所发出的开始传输标识ASYEP_VALID。[0101] 当逻辑电路f5输出高电平(符合阻截条件),则逻辑电路f7所输出传输完成信号ASYEP_TERM_SCH为零(即不输出)。当逻辑电路f5输出低电平(不符合阻截条件),则逻辑电路f7所输出传输完成信号ASYEP_TERM_SCH为传输单元108所输出的传输完成信号ASYEP_TERM。[0102] 当逻辑电路f5输出高电平(符合阻截条件),则逻辑电路f8所输出的传输信息ASYEP_LSTTRANSACTION_STATUS_TRN(亦即ASYEP_LST*_TRN)为截停控制单元106所保存的传输前一数据包时生成的传输信息(例如为传输信息ASYEP_TRANSACTION_STATUS(亦即ASYEP_*))。当逻辑电路f5输出低电平(不符合阻截条件),逻辑电路f8所输出的传输信息ASYEP_LSTTRANSACTION_STATUS_TRN(亦即ASYEP_LST*_TRN)为调度单元104所输出的传输信息ASYEP_LSTTRANSACTION_STATUS(亦即ASYEP_LST*)。[0103] 当逻辑电路f5输出高电平(符合阻截条件),则逻辑电路f9所输出的传输信息ASYEP_TRANSACTION_STATUS_SCH(亦即ASYEP_*_SCH)为首次调度单元104和传输单元108直接传输时所保存的传输信息(例如为传输信息ASYEP_LSTTRANSACTION_STATUS(亦即ASYEP_LST*))。当逻辑电路f5输出低电平(不符合阻截条件),逻辑电路f9所输出的传输信息ASYEP_TRANSACTION_STATUS_SCH(亦即ASYEP_*_SCH)为传输单元108所发送的传输信息ASYEP_TRANSACTION_STATUS(亦即ASYEP_*)。[0104] 在图4的实施例中,由于信号REG_PARK_CTL_ON、信号REG_CTL_CNT,以及信号REG_MAXPSZ皆是由存储器映射输入输出(MMIO)200所配置,因此信号REG_PARK_CTL_ON、信号REG_CTL_CNT,以及信号REG_MAXPSZ是以一第一虚线箭头所表示,第一虚线箭头是由长点及短点的虚线所组成。[0105] 在图4的实施例中,所有来自或指向传输单元108的信号(例如信号TRANS_SUCCESS、传输完成信号ASYEP_TERM…等)是以一第二虚线箭头所表示,第二虚线箭头是由全长点的虚线所组成。另一方面,所有来自或指向截停控制单元106的信号(例如开始传输标识ASYEP_VALID、信号ASYEP_MAXPSZ…等)是以实线箭头所表示。[0106] 图5为本公开实施例之图2的信号传输的波形时序图。图5揭示了时脉CLK、开始传输标识ASYEP_VALID、开始传输标识ASYEP_VALID_TRM、传输完成信号ASYEP_TERM、传输完成信号ASYEP_TERM_SCH、传输信息ASYEP_LST*、传输信息ASYEP_LST*_TRN、传输信息ASYEP_*、传输信息ASYEP_*_SCH,以及阻截状态信号550的时序图。图5是包括开启阻截功能的时段500的时序图,以及关闭阻截功能的时段502的时序图。[0107] 如图5所示,于时间点T1时,调度单元104发送发送传输请求REQ给截停控制单元106,截停控制单元106发送开始传输‘请求REQ’给传输单元108,因此开始传输标识ASYEP_VALID(包含于传输请求REQ中)、ASYEP_VALID_TRM(包含于传输请求REQ’中)由低电平变为高电平。于时间点T1时,调度单元104发送传输信息ASYEP_LST*(包括当前传输的转移请求区块(例如,TRB0)前一次的传输信息,亦即图5的数据1)给截停控制单元106。由于此时不符合阻截条件,阻截状态信号550为低电平,图4中的逻辑电路f8所输出的传输信息ASYEP_LST*_TRN为调度单元104所输出的传输信息ASYEP_LST*,所以传输信息ASYEP_LST*_TRN同样包括传输信息ASYEP_LST*中的数据1。[0108] 在时间点T1至时间点T2之间,传输单元108完成当前传输的转移请求区块(例如,TRB0)的一数据包的传输。并且于时间点T2时,传输单元108对应地向阻截控制单元106发送传输完成信号ASYEP_TERM(由低电平变为高电平)及传输信息ASYEP_*(包括当前传输的转移请求区块(例如,TRB0)的传输信息,亦即图5的数据2)。[0109] 阻截控制单元106于时间点T2时判断符合阻截条件,因此阻截状态信号550由低电平变为高电平。于时间点T2时(符合阻截条件的情况下),阻截控制单元106将开始传输标识ASYEP_VALID_TRM由高电平变为低电平,并向调度单元104发送其内容包括数据1的传输信息ASYEP_*_SCH。由于在时间点T2时调度单元104接收到的传输完成信号ASYEP_TERM_SCH为低电平,所以调度单元104接收到传输信息ASYEP_*_SCH后不做任何操作。[0110] 在时间点T3时,阻截控制单元106依据传输信息ASYEP_*的数据内容将传输信息ASYEP_LST*_TRN的内容更新为数据2,并且将传输信息ASYEP_LST*_TRN发送给传输单元108,将开始传输标识ASYEP_VALID_TRM再度由低电平变为高电平。传输单元108在收到将开始传输标识ASYEP_VALID_TRM和传输信息ASYEP_LST*_TRN后,于时间点T4时开始执行当前传输的转移请求区块(例如,TRB0)的另一数据包的传输。[0111] 于时间点T5时,传输单元108完成当前传输的转移请求区块(例如,TRB0)的另一数据包的传输,再次向阻截控制单元106发送传输完成信号ASYEP_TERM(即将传输完成信号ASYEP_TERM由低电平变为高电平)及传输信息ASYEP_*(包括当前传输的转移请求区块(例如,TRB0)的传输信息,亦即图5的数据3)。阻截控制单元106于时间点T5时判断不符合阻截条件,因此阻截状态信号550由高电平变为低电平。[0112] 于时间点T5(不符合阻截条件的情况下)时,阻截控制单元106依据传输信息ASYEP_*的内容将传输信息ASYEP_*_SCH的内容更新为数据3,并依据传输完成信号ASYEP_TERM生成传输完成信号ASYEP_TERM_SCH(即将传输完成信号ASYEP_TERM_SCH由低电平变为高电平)。然后,阻截控制单元106向调度单元104发送其内容包括数据3的传输信息ASYEP_*_SCH,以及传输完成信号ASYEP_TERM_SCH。于时间点T6时,开始传输标识ASYEP_VALID及ASYEP_VALID_TRM皆由高电平变为低电平,表示传输单元108并没有数据的传输。于时间点T6后,阻截控制单元106的阻截功能被关闭。[0113] 于时间点T7时,调度单元104再度向截停控制单元106发送开始传输标识ASYEP_VALID,并且截停控制单元106发送开始传输标识ASYEP_VALID_TRM(与开始传输标识ASYEP_VALID相同)给传输单元108。于时间点T7时,调度单元104发送传输信息ASYEP_LST*(包括当前传输的转移请求区块(例如为TRB1)前一次的传输信息。由于阻截功能已被关闭,因此时间点T7时截停控制单元106发送给传输单元108的传输信息ASYEP_LST*_TRN与传输信息ASYEP_LST*相同。[0114] 传输单元108完成当前传输的转移请求区块(例如为TRB1)的一数据包的传输后,再向截停控制单元106输出传输完成信号ASYEP_TERM。由于阻截功能已关闭,因此截停控制单元106直接向调度单元104发送传输完成信号ASYEP_TERM_SCH,而结束本次数据包的传输。在时段502中,由于阻截功能被关闭,因此阻截状态信号550一直维持低电平。[0115] 在一实施例中,在关闭阻截功能的时段502中,一个数据包与另一个数据包之间的数据传输间隔为900奈秒(即时段502中的虚线圆圈处)。在开启阻截功能的时段500中,一个数据包与另一个数据包之间的数据传输间隔为280奈秒(即时段500中的虚线圆圈处)。[0116] 换句话说,开启阻截功能的时段500的数据传输间隔比关闭阻截功能的时段502的数据传输间隔还要快620奈秒。亦即,开启阻截功能的时段500的数据传输效率比关闭阻截功能的时段502的传输效率改善了近3倍。[0117] 本公开提出的串行传输控制器100及其数据传输的方法可连续传输同一个转移请求区块的多个数据包,减少了重复到存储器120存取转移请求区块的时间开销,提高了传输效率。在外部装置130的多个端点(Endpoint)同时进行数据输入(IN)或数据输出(OUT)时,本公开提出的串行传输控制器100及其数据传输的方法可以减少端点与端点之间的切换次数,并减少重复存取存储器120及重复抓取管道数据122的时间开销。[0118] 除此之外,本公开的串行传输控制器100及其数据传输的方法可以根据设定的寄存器的参数(例如信号REG_CTL_CNT、信号REG_MAXPSZ),对阻截条件的数据包长度及阻截次数进行灵活调节。[0119] 虽然本发明的实施例如上述所描述,我们应该明白上述所呈现的只是范例,而不是限制。依据本实施例上述示范实施例的许多改变是可以在没有违反发明精神及范围下被执行。因此,本发明的广度及范围不该被上述所描述的实施例所限制。更确切地说,本发明的范围应该要以以下的申请专利范围及其相等物来定义。[0120] 尽管上述发明已被一或多个相关的执行来图例说明及描绘,等效的变更及修改将被依据上述规格及附图且熟悉这领域的其他人所想到。此外,尽管本发明实施例的一特别特征已被相关的多个执行之一所示范,上述特征可能由一或多个其他特征所结合,以致于可能有需求及有助于任何已知或特别的应用。[0121] 本发明提出的串行传输控制器及其数据传输的方法可连续传输同一个转移请求区块的多个数据包,减少了重复到存储器存取转移请求区块的时间开销,提高了传输效率。在外部装置的多个端点同时进行数据输入(IN)或数据输出(OUT)时,本发明提出的串行传输控制器及其数据传输的方法可以减少端点与端点之间的切换次数,并减少重复存取存储器及重复抓取管道数据的时间开销。[0122] 除非有不同的定义,所有本文所使用的用词(包含技术或科学用词)是可以被属于上述发明的技术中拥有一般技术的人士做一般地了解。我们应该更加了解到上述用词,如被定义在众所使用的字典内的用词,在相关技术的上下文中应该被解释为相同的意思。除非有明确地在本文中定义,上述用词并不会被解释成理想化或过度正式的意思。
专利地区:上海
专利申请日期:2021-10-28
专利公开日期:2024-07-26
专利公告号:CN113971151B