通过通用串行总线通道进行传输的装置及方法

文档序号:7961630阅读:128来源:国知局
专利名称:通过通用串行总线通道进行传输的装置及方法
技术领域
本发明涉及通用串行总线通道传输技术,特别是通过通用串行总线通道进行传输的装置及方法。
背景技术
通用串行总线(Universal Serial Bus,USB)是连接外部设备的一个串口总线标准,由于其具有较高的传输速率而应用广泛,特别是多媒体数据传输应用领域。
USB传输通常包括四种方式控制传输、同步(ISO)传输、中断传输及批量传输,其中,控制传输通常用于配置/命令/状态等情形,ISO传输是一种周期的连续的传输方式,通常用于与时间有密切关系的信息的传输,中断用于非周期的自然发生的数据量很小的信息的传输,如键盘鼠标等,批量用于大量的对时间没有要求的数据传输。
USB传输通常支持三种速度模式,即低速模式(low speed),最高传输带宽为1.5Mbit/s;全速模式(full speed),最高传输带宽为12Mb/s;高速模式(high speed),最高传输带宽为480Mb/s。其中USB 1.1协议只支持低速模式和全速模式,USB2.0协议则支持所有模式。
在USB 1.1标准中将有效的带宽分成帧(frame),每帧通常是1ms长。但由于USB2.0的传输速率最高可达480Mb/s,因此在USB2.0中,每个1ms长的帧被分成了8个125μs长的微帧(micro_frame)。且在ISO传输时,一个微帧中最多可以传输7个数据包;而对于中断传输,一个微帧中最多可以传输6个数据包。
ISO传输和中断传输都属于定时传输方式,即在一个或几个帧/微帧间隔中只传输指定个数的数据包,间隔的大小以及数据包的个数取决于不同的器件应用的需要,由器件的设备描述来决定。
目前使用ISO传输或中断传输时,都是使用一个通道完成,如图1所示,在视频传输时应用端数据流,如视频流(video stream),先存储到数据流输入模块(FIFO)中,然后通过一个传输端点endpoint 1使用ISO传输模式或中断传输模式,经由USB总线传输到PC终端,最后由PC终端的驱动将接收的数据还原成为数据流。其中传输端点endpoint 1按照设备描述所决定的间隔大小和数据包个数,在一个或几个帧/微帧中传输固定个数的数据包,比如可以在1个帧/微帧中传输1个或2个数据包,也可以在1个或2个帧/微帧中传输1个数据包。
举个例子来说,一个ISO传输端点(endpoint)或一个中断传输端点在USB2.0高速(high-speed)传输模式下,在一个微帧中最多传输3个数据包。图2所示即为一个ISO传输端点ep1在每个微帧中传输数据包的示意图,其中,实线方框部分标识ep1可以传输数据包的时段,其中0、1、2分别表示ep1在一个微帧中分时串行传输的三个数据包,虚线方框部分表示ep1不能传输数据包的时段。可见,一个ISO传输端点在每个微帧中传输3个数据包后,需等待4个不能传输数据包的时段,至下一个微帧到来,再传输3个数据包。
同理,一个中断传输端点在每个微帧中传输3个数据包后,需等待3个不能传输数据包的时段,至下一个微帧到来,再传输3个数据包。
由于每个数据包最大为1024byte,那么一个传输端点在一个微帧中传输最多3kB。所以一个ISO传输端点或中断传输端点的最大带宽为23.44MB/s。而USB2.0的最大传输带宽高达480Mbit/s,扣除协议占用部分实际传输能力也在48MB/s以上。
全速(full-speed)模式也有与high-speed模式类似的现象。
可见,在现有技术的USB传输方式中,由于ISO传输方式和中断传输方式下单个传输端点传输能力的限制,使得数据流的传输能力受到限制,从而造成现有USB数据传输并不能充分利用USB总线的最大带宽,甚至在传输速率最快的USB2.0的高速模式下都不能超过23.44MB/s,这种缺陷在对于有着大量数据传输的视频流传输中显得尤为突出,且亟待解决。

发明内容
本发明的第一目的在于提出一种通过USB通道进行传输的装置,避免单个传输端点的传输能力限制,充分利用USB传输的带宽。
本发明的第二目的在于提出一种通过USB通道进行传输的方法,使得USB的ISO传输和中断传输能够突破一个传输端点传输带宽的限制,充分利用USB传输带宽。
为实现上述第一目的,本发明提出了一种通过USB通道进行传输的装置,包括数据流输入模块,用于提供待传输的数据包;多路选择器,用于将所述数据流输入模块发送的数据包分发给不同的传输端点;至少两个传输端点,用于提供数据包的传输通道,传输多路选择器发来的数据包;控制器,用于完成命令解析及数据流的传输控制功能。
所述传输端点为2个、或3个。
为实现上述第二目的,本发明提出了一种通过USB通道进行传输的方法,在与主机通过USB通道进行传输的传输装置中设置至少两个传输端点,并执行以下步骤主机与所述传输装置传输数据包时,所述传输装置在一个帧/微帧中通过不同的传输端点将数据包发送给主机,在每个帧/微帧中一个传输端点最多传送固定个数阈值个数据包。
该方法具体包括a、主机向所述传输装置发送令牌,该令牌中包含传输数据包的传输端点的端点号;b、所述传输装置将当前要发送的数据包从所述令牌中指定的传输端点发送到主机。
所述步骤a之前还包括以下步骤主机为每个传输端点设置一计数器,累计对应传输端点在每个帧/微帧中已传输数据包的个数。
在所述传输装置中设置2个或3个传输端点。
所述传输装置以中断传输方式传输,所述步骤b之后还包括c、所述主机对当前传输的数据包进行校验,如果校验通过,则向所述传输装置返回成功响应;否则不返回任何响应。
本发明采用多个传输端点,在进行ISO传输或中断传输时利用多路选择器进行传输端点调度,选择不同传输端点在一个帧/微帧中分时传输数据包,从而突破了现有技术只有一个传输端点,且在一个帧/微帧中最多只能传输3个数据包的限制,使得传输带宽大大增加,避免了带宽浪费,从而充分利用了USB总线的带宽。


图1为现有技术中通过USB通道进行传输的装置的结构示意图;图2为现有技术中USB总线上的微帧的结构图;图3为本发明实施例中通过USB通道进行传输的装置结构示意图;图4为本发明实施例中通过USB通道进行传输的方法流程图;图5为本发明实施例中USB总线上的微帧的结构图。
具体实施例方式
本发明在每个通过USB通道与主机进行数据传输的传输装置中设置2个以上传输端点,使得在USB1.1和USB2.0的全速和高速模式下,传输每一帧/微帧时由多个传输端点联合传输,从而充分利用USB总线的带宽。这里,所述主机可以是PC终端,下文均以PC终端为例。
进一步的,为了记录传输装置中每个传输端点的已传输数据包个数,可以为每个传输端点设置一计数器。
下面以中断传输方式为例,对本发明的传输装置和传输方法进行详细描述。当采用ISO传输方式时,传输装置的结构和传输方法与中断传输方式基本类似,只是在具体实现上存在细微区别,比如中断传输方式需要检测握手信号,而ISO传输方式不需要;再比如ISO传输方式所采用的传输装置中可以设置三个传输端点等等。
图3为本发明实施例中通过USB通道进行传输的装置结构示意图,其中,右侧实线框所示为本发明实施例中的传输装置。该传输装置的数据流输入模块采用先进先出(FIFO)存储模式,用于存储需传送的数据流,如视频流;该传输装置中设置有2个传输端点-endpoint31及endpoint32,对应两个传输通道;该传输装置由控制器进行命令的解析,并通过多路选择器在两个通道间进行切换,从而实现在每帧/微帧中通过不同传输端点分时向PC终端传输数据包。该传输装置具体包括数据流输入模块1,用于提供待传输的数据包,并将其发送给多路选择器2;多路选择器2,用于将数据流输入模块1发送的数据包分发给不同传输端点;传输端点31和32,用于为PC终端与所述装置的数据包传输提供传输通道,传输多路选择器2发来的数据包,每个传输端点对应一个逻辑地址;控制器4,用于完成命令解析及对数据流的传输控制功能,如控制多路选择器将数据包发送到指定的传输端点上。
该装置通过USB总线与PC终端的USB驱动模块相连。
该装置对于现有技术的最大改进在于数据流输入模块通过2个传输端点endpoint与USB总线相连,并利用多路选择器2将数据包分发到不同endpoint上传输,多路选择器2在此处的功能类似一个多路开关。
图4为本发明实施例中通过USB通道进行传输的方法流程图,该方法采用USB2.0 high-speed模式,基于2个endpoint进行两通道联合传输。主要实现思想是PC终端与所述传输装置传输数据包时,所述传输装置在一个微帧中通过不同的传输端点将数据包分时发送给PC终端。
本实施例中,为了记录每个传输端点的已传输数据包个数,在PC终端为两个传输端点分别设置一计数器,由于PC终端通过USB设备驱动中记录的设备描述能够获知传输端口为中断传输端口,因此计数器初值设置为3。具体计数过程是在一个微帧的传输过程中,每个传输端点每传输一个数据包,PC终端就对该传输端点的计数器做减1操作,当该传输端点的计数器为0时,在此微帧内,PC终端不再向该传输端点发送令牌,该传输端点不再传输数据包,在下一微帧,所有计数器恢复初值。当然,计数器初值也可以设置为0,每传一个数据包,PC终端对计数器做加1操作,计数器值为3时,PC终端不再向该传输端点发送令牌,该传输端点不再传输数据包。这里,可以将PC终端做减1操作情况下的计数器值0、PC终端做加1操作情况下的计数器值3统一称为固定个数阈值。
通过上述计数过程,就可以保证每个微帧中每个传输端点最多传输3个数据包。
基于图3所示结构以及上述计数过程,本实施例传输方法的具体处理过程包括以下步骤步骤101、PC终端的USB驱动模块向控制器4发送一个令牌(token),该令牌中包含指定的传输数据包的传输端点的端点号,即endpoint号,此传输端点是任选的,基于的条件是相应传输端点的计数器未达到固定个数阈值,此处PC终端指定的传输端点为endpoint31;步骤102、控制器4解析收到的令牌命令,控制数据流输入模块1将其当前指针所指向的数据包发送给多路选择器2;步骤103、多路选择器2在控制器4的控制下,将数据包通过传输端点endpoint31发送到USB总线上;
步骤104、USB驱动模块接收到数据包后,对当前所传输的数据包进行校验,如果校验通过,则向控制器4返回一个响应握手信号handshake,控制器4控制数据流输入模块1的指针前移;否则不返回任何响应。
在ISO传输方式中,本步骤不执行,USB驱动模决不论是否正确接收到数据包,都会发下一个令牌。
如果本次数据包的传送不成功,则USB驱动模块不会返回handshake,控制器4也不会控制数据流输入模块1的指针前移,在USB驱动模块发送下一个token的时候,数据流输入模块1会把当前指针所指的数据包发送给多路选择器,该数据包即是上次未传送成功的数据包。
本次数据包的传送结束后,下一个数据包可能通过endpoint31也可能通过endpoint32来传送,endpoint31和endpoint32传送数据包的先后次序在本发明中并不限定。
在本实施例中,可以继续采用endpoint31来传输,在endpoint31连续传输3个数据包后,其计数器值为0时,下一时段再由endpoint32来传输,直至本微帧结束或整个数据流的传输完毕;当然也可以采用由endpoint31和endpoint32轮流传输数据包的方式。总之,本发明可以通过固定个数阈值的设置来保证在每个微帧中endpoint31和endpoint32至多传送3个数据包。
图5为USB总线上的数据包,用ep1标识endpoint31传输的数据包的时段,ep2标识endpoint32传输数据包的时段其它类似。这样,在一个微帧中通过两个endpoint联合传输使得视频流的最大带宽大大增加,充分利用了USB总线带宽。
在ISO传输方式中,根据USB2.0协议的限制,在一个微帧内最多有7个大小为1KB的ISO包的传输时段,所以在ISO传输中需要使用三个传输端点,同样,为每个传输端点分别设置一个计数器,并设置固定个数阈值。在每个微帧的传输中,每个传输端点每次最多传3个数据包,最少传1个数据包,如此,就可以完全利用USB总线的带宽。数据包由三个传输端点通过USB总线共同传输给PC,由于USB是串行输出,所以每次只有一个endpoint进行传输,而每次选择哪个endpoint是任意的。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。事实上本领域内的普通技术人员能够根据上述具体实施例的技术方案,获得其它具体实施方式
,如将本发明的方法和装置应用在USB1.1的全速模式下,再如对传输端点采用不同的传输顺序等等。因此凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种通过通用串行总线通道进行传输的装置,其特征在于,包括数据流输入模块,用于提供待传输的数据包;多路选择器,用于将所述数据流输入模块发送的数据包分发给不同的传输端点;至少两个传输端点,用于提供数据包的传输通道,传输多路选择器发来的数据包;控制器,用于完成命令解析及数据流的传输控制功能。
2.根据权利要求1所述的通过通用串行总线通道进行传输的装置,其特征在于,所述传输端点为2个、或3个。
3.一种通过通用串行总线通道进行传输的方法,其特征在于,在与主机通过USB通道进行传输的传输装置中设置至少两个传输端点,并执行以下步骤主机与所述传输装置传输数据包时,所述传输装置在一个帧/微帧中通过不同的传输端点将数据包发送给主机,在每个帧/微帧中一个传输端点最多传送固定个数阈值个数据包。
4.根据权利要求3所述的通过通用串行总线通道进行传输的方法,其特征在于,该方法具体包括a、主机向所述传输装置发送令牌,该令牌中包含传输数据包的传输端点的端点号;b、所述传输装置将当前要发送的数据包从所述令牌中指定的传输端点发送给主机。
5.根据权利要求4所述的通过通用串行总线通道进行传输的方法,其特征在于,所述步骤a之前还包括以下步骤主机为每个传输端点设置一计数器,累计对应传输端点在每个帧/微帧中已传输数据包的个数。
6.根据权利要求3、4或5所述的通过通用串行总线通道进行传输的方法,其特征在于,在所述传输装置中设置2个、或3个传输端点。
7.根据权利要求4或5所述的通过通用串行总线通道进行传输的方法,其特征在于所述传输装置以中断传输方式传输,所述步骤b之后还包括c、所述主机对当前传输的数据包进行校验,如果校验通过,则向所述传输装置返回成功响应;否则不返回任何响应。
全文摘要
本发明公开了一种通过通用串行总线通道进行传输的装置,包括数据流输入模块,用于提供待传输的数据包;多路选择器,用于将数据流输入模块发送的数据包分发给不同传输端点;至少两个传输端点,用于提供数据包的传输通道,传输多路选择器发来的数据包;控制器,用于完成对命令的解析及数据流的传输控制功能。本发明还同时公开了一种通过通用串行总线通道进行传输的方法,主机与所述传输装置传输数据包时,所述传输装置在一个帧/微帧中通过不同传输端点将数据包发送给主机,在每个帧/微帧中一个传输端点最多传送固定个数个数据包。采用本发明的装置和方法,使每个帧/微帧能传输更多数据包,从而增加了传输带宽,充分利用了USB总线的带宽。
文档编号H04L29/06GK1885747SQ20061008316
公开日2006年12月27日 申请日期2006年6月7日 优先权日2006年6月7日
发明者张 浩, 张倩, 吴大畏 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1