CN101237445B - 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备 - Google Patents

缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备 Download PDF

Info

Publication number
CN101237445B
CN101237445B CN200710007913.6A CN200710007913A CN101237445B CN 101237445 B CN101237445 B CN 101237445B CN 200710007913 A CN200710007913 A CN 200710007913A CN 101237445 B CN101237445 B CN 101237445B
Authority
CN
China
Prior art keywords
terminal point
data
wusb
buffer
equipment
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.)
Expired - Fee Related
Application number
CN200710007913.6A
Other languages
English (en)
Other versions
CN101237445A (zh
Inventor
江森
彭震宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Beijing R&D Co Ltd
Original Assignee
STMicroelectronics Beijing R&D Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Beijing R&D Co Ltd filed Critical STMicroelectronics Beijing R&D Co Ltd
Priority to CN200710007913.6A priority Critical patent/CN101237445B/zh
Priority to US12/021,187 priority patent/US7865636B2/en
Publication of CN101237445A publication Critical patent/CN101237445A/zh
Application granted granted Critical
Publication of CN101237445B publication Critical patent/CN101237445B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/426Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus

Abstract

一种设备,诸如设备线缆适配器(DWA),具有改进缓冲器管理和无线通用串行总线(WUSB)同步分组的封装以传输至主机。所速设备包括同步IN终点,其从设备功能接收数据分段。存储器与终点相关联并且包括按循环配置的终点缓冲器和多个寄存器。该设备包括终点控制器,其将接收数据分段顺序地存储在循环缓冲器中,分配寄存器组到每个存储的数据分段,并且将附加分组信息存储在用于每个数据分段的寄存器而非在终点缓冲器中。附加分组信息包括从缓冲器中上一分段的采样时间和缓冲器中两个连续数据分段之间的时间间隔导出的用于存储数据分段的出现时间。

Description

缓冲器管理方法和用于缓冲器管理及封装WUSB分组的设备
发明背景
1.发明领域
本发明一般说来涉及无线通用串行总线(WUSB)协议,并且涉及实现该WUSB协议的设备(即,WUSB设备),并且更确切地说,涉及管理带有同步(isochronous)IN终点(Endpoint)的WUSB设备中的缓冲器用以限制终点缓冲器所需要的存储器量并且降低管理终点缓冲的复杂性同时遵循数据分组的WUSB规范的方法。
2.相关背景
通用串行总线(USB)通信已经显著地改善了个人电脑(PC)或其他的主机设备与外围设备之间的通信,所述外围设备诸如存储设备、扫描器、个人数字助理(PDA)、外部硬盘、键盘、鼠标、摄像机、打印机、电池及其他电话、显示器、录音机和麦克风、及其他将数字信息与PC或主机设备上的应用软件和/或嵌入系统传送的设备。在2005年,分析家估计存在超过500百万USB产品在使用中。USB在主机和一个或许多外围设备之间提供了异步串行互连。最初,USB曾是对有线连接很有用的协议,所述有线连接例如是插入到主机PC上的端口中所需要的外部设备,但是无线通用串行总线(WUSB)规范为主机定义了用于在高带宽无线地与外围设备通信的协议,诸如经由超宽带(UWB)无线电技术,而无需电缆或物理端口。WUSB是支持主机设备与许多可同时访问的外围设备或设备之间数据交换的逻辑总线。
2005年5月12日发行的WUSB规范,1.0版本总体上以USB协议为基础并且扩展了该USB协议。在USB通信中,每个USB设备或外部设备连接到集线器或直接地连接到主机(例如,带有USB主机控制器的PC)。在WUSB条件下,没有集线器,并且外部设备或WUSB设备直接地主机与通信,并且有时,设备线缆适配器(DeviceWire Adapter DWA)连接至或连线至一个或多个USB设备,以允许连线的USB设备以无线方式与主机(例如,DWA可以被认为充当连线USB系统的主机)进行通信。但不论是哪种情况,主机都控制USB或者WUSB总线上的所有通信,并且一次仅仅有一个设备和主机通信。当一个设备被首先连接到主机时,该主机检测它的存在并且向该设备请求基本信息,诸如该设备支持的通信速度、该设备要求的带宽、以及该设备利用什么数据传送类型。初始化过程被认为是列举(enumeration)并且包括主机分配唯一地址给该设备。有四种数据转送类型用于发送USB以及WUSB数据:控制、成批处理(bulk)、中断、以及同步。同步转送允许设备通过保证将被传送的设备数据的递送时间或带宽并且不用错误校正,来实时转送大量数据。利用同步转送的设备-诸如视频或网络摄影机、诸如USB扬声器、麦克风之类的音乐播放设备等,必须要能够容忍偶然的损坏数据分组达到目的地。
USB或WUSB系统中的每个设备或外部设备内提供了终点(Endpoint)。终点是一个设备的唯一可寻址部分,该设备被认为是主机与设备之间的通信流的目标,并且终点被用于在总线上发送和接收数据。典型地,在每个设备中有十六个可寻址的终点可利用,并且每个终点包含地址号码和方向或终点号码。终点地址参考设备内的16个终点缓冲器或寄存器之一,并且终点号码定义该数据前往主机还是正从主机而来,该参考从主机的角度看来。因此,″IN终点″是传送数据从该设备至主机的终点,而″OUT终点″描述从主机前往到设备的数据。主机和在被初始化或列举期间建立的设备之间的通信交换被认为是″管道″,其是位于主机种的设备终点和设备控制软件或驱动器之间的虚拟连接。管道是用于主机和设备之间交换所有数据的通道。对于WUSB开发者而言重要的、面临的挑战是设计同步终点或带有同步终点的WUSB设备,以有效地管理管道上(或WUSB总线上)的通信以及数据在终点的缓冲。优选地,这种设计可以创作成用以控制支持每个终点的缓冲器或寄存器同时支持WUSB规范所有需求所要求的存储器数量,因为为了经由WUSB通道或管道与主机通信,WUSB设备就必须实现WUSB协议的全部必备特征。
具体地,对无线USB或WUSB同步IN终点而言缓冲器管理的问题在于:当设计或配置WUSB设备或外围设备时不得不致力于要解决的问题。在WUSB事务的数据阶段期间,一系列数据分组被发送并且此数据转送被称作″数据成组传送(bursting)″。图1根据WUSB协议举例说明了WUSB数据成组传送。为了保证可靠的数据递送,WUSB系统或群,诸如群100包括具有IN终点110的发送器或设备以及诸如主机设备120之类的接收器,使用单滑动窗协议执行分组130的数据成组传送,以给每个分组130附加上序列号。如图所示,发送器110包括数据缓冲器112,用以在来自终点功能的数据在被数据发送器114转送之前存储该数据,并且类似地,接收器或主机设备120包括数据接收器126,用以在WUSB总线或在这种总线中的管道上以接收窗接收分组130,并且将该数据传递到数据缓冲器128以供以后转送到主机应用程序、函数或嵌入式系统中以供使用。根据WUSB规范,对于同步IN终点的缓冲器大小选择是应用软件具体的决定,并且唯一的指导是该大小应该通过平衡几个因素来选择,所述因素包括要求短期容许误差、成本、以及可接受的流延迟和/或等待时间。换句话说,缓冲器大小以及缓冲器管理主要地留给WUSB开发者,而在如何更好地完成希望的结果-诸如减少存储器、降低成本、和/或限制延迟以及错误中则几乎不提供什么指导。
除提供序列号之外,每个WUSB同步的分组需要具有特殊的格式,该格式所具有的一些特定需求在下面表1中列出。WUSB同步IN终点必须将同步数据聚集到它能够在空中或WUSB总线上发送且不用把单一数据分段划分在多个WUSB分组上的最大分组中。在同步IN转送中,wPrcsentationTime字段是分组中第一分段的采样时间。两个连续数据分段之间的间隔被假设为在一个分组中是固定的,并且用来确定分组中随后分段的出现时间。如果一个分段没有数据,则该终点应当明确地将它的长度设置为零。响应于向主机或接收器120对数据的请求,接收器110中的同步IN终点通过发送其缓冲器112中最旧的数据来为每个WUSB同步IN请求做出响应。当缓冲器112充满时,同步IN终点110丢弃缓冲器112中最旧的数据。如果同步IN终点已经试着去发送所丢弃的数据,那么它试图使用与所丢弃的分组相同的成组发送序列号来转送最旧的可用未丢弃分组。另外,对于接收器110中的WUSB同步IN终点而言支持动态交换和/或不断地升级可能是希望的情形,这样可以允许最大分组大小或间隔是变化的而不中断它的转送。这些可选的特性使得同步转送在不稳定的无线通道上更加平稳。
表1:WUSB同步的分组格式
Figure GSB00000465166000041
如图1所举例说明的,由USB工业论坛发行的WUSB规范,版本1,提供了通用的数据成组传送模型。这并没有为WUSB同步IN终点的缓冲器管理提供完全的解决方案,它们负责缓冲来自WUSB设备或外部设备上的应用软件的数据并且把数据封装在WUSB同步分组中。在群100的通用数据成组传送模型中,发送器110具有逻辑地分割成最大分组大小部分的数据流。发送器110还在其数据发送器114中维持滑动发送窗,该发送窗控制序列号如何与下一个事务数据阶段的每个数据分组130相关联。发送器110必须以严格的递升序列数字次序将序列号与数据缓冲器分段相关联。接收器120在其数据接收器126中维持接收窗,所述接收窗识别它将从就要到达的事务中保留哪些数据序列号码(以及通过关联哪些数据分组)以供使用。当事务完成时,接收器120从接收窗擦除所保留的分组的序列号并且推进新的分组窗。如图1所示,在事务的“握手”阶段期间,接收器120向该发送器发送当前接收窗作为成组传送确认信息。当该事务是OUT(出局)转送时,该成组传送确认处于“握手”分组的数据净负载中。当该事务是IN(进入)转送时,该成组传送确认就处在随后微调度管理命令(由WUSB规范所规定的WDTCTA信息块的DINAck)中。该成组传送确认是接收窗的位向量表示。位向量中的“1”位表示接收窗。接收器120必须使用在严格的递升序列数字次序中所接收的数据(除非是在同步的丢弃情形中)。在WUSB规范中,定义下列变量以支援数据成组传送:最大分组大小(MPS),其是所有数据分组的标定数据单元大小;最大成组传送大小(MBS),其是一个终点在单数据阶段中可以容纳的最大分组数目,MBS在图1中是3;以及最大序列(MaxSeq),其是当传送数据至此终点时必须使用的序列号范围,并且用于该终点的序列号实际范围是零至(MaxSeq-1)。
WUSB规范也提供同步IN终点的简单例子,该例子可以用来对来自设备线缆适配器(DWA)中的应用软件的数据进行缓冲以及封装,但是此实例也没能令人满意地解决与WUSB数据转送相关联的存储器或缓冲器管理问题。图2示出了一个用于带有在WUSB规范中所提供的同步IN终点的DWA的数据成组传送过程的例子。在该例子过程200中,响应于在帧642以前发生的主机做出的第一轮询尝试,DWA在下一个帧(即643)中开始到下游USB 2.0功能终点(即,至插入DWA中的下游的有线USB设备或外部设备之一)的事务。在642之后的每个帧中,DWA实施到至USB 2.0功能终点的同步IN事务。DWA不断地将在服务间隔期间接收的全部数据存储到缓冲器中,以及记录在该间隔期间从USB 2.0设备接收第一数据的帧时间。在下一个间隔(N+1)中,主机轮询DWA的同步功能终点,并且DWA返回它已经准备就绪去发送的数据。当在间隔N+1期间主机发送WDTCTA的时候,在该间隔期间DWA还完全没有接收到来自USB 2.0功能终点的任何数据,所以DWA仅仅发送它确实已经具有完全数据。作为结果的数据分组的格式在图2中举例说明。因为在间隔N中从USB 2.0功能终点接收了两个分组,所以响应于第二WDTCTA轮询,DWA发送就包括所接收的这两个采样和数据首先被接收到时间的出现时间的分组。在下一个间隔(N+2)中,利用帧号(其中第一个分组(即在645的数据3)是从USB 2.0功能终点接收的),主机轮询DWA的同步功能终点并且接收下一个组准备好的同步分段(即,数据3、4和5)。
无论是图1所示通用数据成组传送模型还是图2所示DWA同步IN终点例子,在满足对有效缓冲器管理和WUSB设备存储器需求的控制上都没有完全成功。通用数据成组传送模型并不是特别地好地适合于同步转送,因为对同步数据分组有特殊的格式需求。具体地,除原始数据之外,每个同步数据分组包括一些可变字段,包括出现时间和分段数目。通用数据成组传送模型不能为每个分组提供或预定义这些字字段。更进一步的问题包括事实:WUSB协议不要求单个同步数据分组是最大分组大小,但是要求单个数据分段不能划分成多个分组。DWA IN终点实例涉及数据分段被以WUSB同步分组格式存储在IN终点缓冲器中。每个WUSB分组的出现时间、分段数目以及长度变量与原始数据一起存储在IN终点缓冲器中。这种控制终点通信的示范方法在包含存储附加信息(即,原始数据以外WUSB分组需要的数据)的终点的WUSB设备中分配数量显著的存储器。此外,如果最大分组大小或MPS被改变了,那么该终点需要重新封装缓冲器中的所有数据分段并且重新安排它们在缓冲器中的位置。这使得缓冲器管理很复杂,并且结果,很难使用此模型来支持动态交换以及配置带有可连续升级的IN终点的DWA及其他WUSB设备。另外,图2所示DWA IN终点实例不提供方法来关联分组与序列号,丢弃数据或当缓冲器上溢时重新利用序列号。
因此,还需要有一种改进的方法和实现这种方法设备,用于管理WUSB设备中同步IN终点的缓冲器。优选地,这种缓冲器管理方法会提供这样的解决方案:比WUSB规范,版本1.0,中提供的简单实例使用较少存储器,而仍旧完全遵循对IN终点和按照WUSB协议传送到WUSB群或者系统中的主机的同步数据分组的需求。
发明内容
为了致力于上述及其他问题,提供一种缓冲器管理方法,以供在WUSB设备中使用,更特别地是供在具有同步IN终点的WUSB设备中使用,用以限制要求的存储器数量和复杂性,同时仍然能封装同步数据分组以供传送至WUSB主机。在WUSB规范10.版本中为具有同步IN终点的设备线缆适配器(DWA)而提供的缓冲实例中,一旦数据被写入到缓冲器中,终点将数据分段封装成WUSB同步分组格式。结果,终点缓冲器必须为每个分段将出现时间(presentation time)及其他附加信息以及原始数据存储起来。相反,根据本发明实施方式的缓冲器管理涉及终点或者其控制器和缓冲器管理或者控制模块只是在数据分段由主机在发送窗中请求以后才动作起来封装所述数据分段。终点(或者具有这种终点的WUSB设备)导出出现时间而不将其存储在终点缓冲中,并且在发送窗中为每个分段获得或者确定附加的分组信息。导出的出现时间及其他附加分组信息被存储在与每一数据分段相关联的寄存器组或者寄存器中。寄存器组通过索引被链接至已经存储在循环缓冲器中的相应的数据分段(例如,原始数据和原始数据的长度字段被存储在终点缓冲器中,并且不是存储封装WUSB分组所需要的所有数据和信息)。该方法涉及将附加分组信息与缓冲器中存储的数据分段相关联至组成WUSB同步分组的详细操作。另外,缓冲器管理方法给出详细操作和规则用以将分组与序列号相关联,用以在终点丢弃数据并且当循环缓冲器处于上溢状态时重新使用序列号。简短地说,本发明缓冲器管理方法包括在寄存器组中存储WUSB同步分组所需要的分组附加信息,以及从缓冲器中上个分段的实时采样时间导出出现时间。缓冲器管理包括将序列号与数据分段相关联的方法,并且支持最大分组大小(MPS)以及间隔的动态变化。
更确切地说,例如WUSB设备或者DWA之类的设备装备有改进的缓冲器管理和对WUSB同步分组的封装以便传输至主机。该设备包括IN终点,其从诸如该设备之内的功能之类的设备功能或者从连接至该设备(例如,当该设备是DWA时)的端口的USB设备中的设备功能或者应用程序接收数据分段。存储器与终点相关联并且包括按照循环配置的终点缓冲和多个寄存器。该设备包括终点控制器,其将接收的数据分段顺序地存储在循环缓冲器中,将寄存器组分配给发送窗中请求的各个WUSB同步分组,以及为发送窗中请求的每个WUSB同步分组导出寄存器中的附加分组信息。附加分组信息可以包括出现时间、循环缓冲器中对关联数据分段的索引、关联数据分段中分段数目和总长度。由终点控制器从缓冲器中上个分段的采样时间以及缓冲器中两个连续的数据分段之间的时间间隔导出出现时间。
附加分组信息由终点控制器在将连续的数据分段封装成WUSB同步分组以供在WUSB通道上传送至主机中使用。为了匹配来自主机的发送窗请求,信息一般地还包括每个同步分组的序列号。在操作期间,终点接收发送一组数据分组的主机指令并且做出响应,终点控制器确定包括一组序列号的发送窗,然后在循环缓冲器中封装一些在寄存器中具有匹配发送窗序列号的序列号的连续的数据分段。通体而言,寄存器被安排到相应于为终点定义的最大成组发送大小(MBS)的存储器的若干组中,并且这些寄存器组以匹配发送窗序列号的发送顺序安排。终点还可以接收请求来将数据分段的连续数据分段之间的间隔改变为新的间隔值,并且改变最大分组大小(MPS)供将存储数据分段封装成WUSB同步分组时使用。终点控制器通过利用新的间隔或者由6个比如辅助变量协助的MPS修改或者导出寄存器组中的分组信息来作出响应,以支持这些新数值。
本发明提供一种用于改进的缓冲器管理和用于封装无线通用串行总线(WUSB)同步分组的设备,包含:WUSB同步IN终点,从设备功能接收数据分段;与WUSB同步IN终点关联的存储器,包括循环缓冲器和寄存器;以及终点控制器,管理具有一组缓冲器索引的循环缓冲器,将数据分段顺序地存储在循环缓冲器中,分配一组寄存器给发送窗中的每一WUSB同步分组,以及导出在为发送窗中所请求的每个WUSB同步分组所分配的寄存器组中的附加分组信息,包括出现时间和所述循环缓冲器中封装成分组的所存储数据分段的索引,其中出现时间从循环缓冲器中上个分段的采样时间和循环缓冲器中连续两个数据分段之间的时间间隔而导出。优选地,在该设备中,存储的数据分段包含不带采样时间的采样块和每一采样块的长度。
一种用于为WUSB设备中的同步IN终点管理缓冲器的方法,包含:在WUSB设备的存储器中,为每一同步IN终点提供缓冲器并提供寄存器组,该寄存器组的数目等于为对应IN终点定义的最大成组传送大小;在IN终点之一接收多个数据分段;在为该一个IN终点提供的缓冲器中存储数据分段;在寄存器组中,为在发送窗中请求的每个分组存储索引、出现时间、分组长度和分段数目;以及使用在寄存器组之一中的索引、出现时间、分组长度和分段数目将来自缓冲器的存储数据分段的至少一个数据分段封装成WUSB同步分组格式,以供传送到主机。
一种缓冲器管理方法,包含:在无线通用串行总线(WUSB)设备中提供同步IN终点;在WUSB设备的存储器中,为IN终点提供缓冲器;在WUSB设备的存储器中,提供多个寄存器组;在IN终点接收对数据分段的写请求;在缓冲器中存储数据分段;将寄存器组之一链接至一些连续的数据分段;以及为发送窗中所请求的每个分组,确定在每一链接的寄存器组中的准备具有WUSB同步格式的分组所需要的附加分组信息。
附图说明
图1举例说明WUSB群的一部分,根据WUSB协议提供的通用数据成组发送规则执行数据成组发送;
图2举例说明由WUSB规范,版本1.0描述的经由DWA的全速同步的IN数据流;
图3以块形式图示根据本发明一个实施方式的WUSB群或系统,该系统带有示范的无线USB设备,用于提供终点(例如同步的IN终点)的缓冲器管理;
图4图示根据本发明一个实施方式的另一个基于WUSB的系统,其被配置成利用设备线缆适配器(DWA)作为主机线缆适配器,以及作为许多USB设备或外部设备的主机,具有用于执行缓冲器管理的用于USB设备的主机;
图5示出简单循环缓冲器,带有索引供根据本发明的IN终点使用,诸如供图3和4所示的WUSB设备使用;
图6图示了在本发明实施方式中供WUSB分组使用的寄存器组;
图7是用于由本发明终点控制器实现的缓冲器管理的状态机;
图8是流程图,示出在本发明实施方式中由IN终点执行的输入管理;
图9是流程图,示出由TN终点执行来管理缓冲器和WUSB处事务的数据阶段的输出管理;
图10根据本发明一个实施方式图示用于同步IM终点的缓冲器管理的示范实现方式;以及
图11图示本发明缓冲器管理的实例,类似于图10的实例,但示出其中最大分组大小和间隔被改变的情形。
具体实施方式
本发明涉及用于管理从符合无线USB规范或协议的无线通用串行总线(WUSB)设备到WUSB主机的通信的方法和系统。这些WUSB设备可以包括例如设备线缆适配器(DWA)或本机WUSB设备。本发明的方法总体上涉及提供在带有同步IN终点的设备中改进缓冲器管理,所述同步IN终点在通道或管道上与主机通信。更确切地说,该方法使得WUSB同步IN终点或者带有这种终点的设备能够同其他的缓冲技术(例如图1和2所示缓冲器方法)比较起来利用较少的存储器来缓冲数据。本发明的缓冲器管理方法还允许终点能够更加灵活地封装WUSB同步分组且以较少复杂性支持其他希望的特征,诸如动态交换以及可连续地升级。
缓冲器管理方法可以用于许多设备中,所述设备配置成用以缓冲数据以及配置成用以随后给出数据分组,该数据分组以连续方式给出原始数据和附加数据(诸如出现时间),其中附加数据需要设备中的存储器。下列描述从两个示范的WUSB系统或群的讨论开始,参考图3和4,WUSB系统或群可以包括适合执行本发明缓冲器管理技术的设备。然后,参考图5-11,说明以由同步IN终点或它们的控制器执行来利用较少存储器需求和减少或限制的复杂性在WUSB设备中缓冲数据的过程或者特定的实现方式继续。
正如所讨论的,本发明的缓冲器管理方法很好地适合用于在和WUSB主机通信的WUSB设备中使用。关于这点,图3图示了一个示范性WUSB群或系统300,其中可以合并本发明的缓冲器管理方法。如同所示,群300包括无线USB主机310,无线USB主机310可以包含PC或其他的计算或电子设备,其包括主机控制器(例如,至诸如PCI总线之类的内部总线的WUSB接口),主机控制器可以用硬件、固件和/或软件的组合中实现以遵循主机的USB或WUSB协议。典型地,主机310也包括用于无线发送和接收数据的机构,诸如无线收发器等等(或这可以是经由允许USB主机功能经由图4所示USB连接而被连接到PC或类似设备的主机线缆适配器来实现)。
主机310按照WUSB协议在314所示无线总线上与若干无线USB设备320通信。典型地,无线USB设备320可以是为群或系统300提供能力的功能或功能设备,例如打印机、数字摄象机、扬声器、鼠标、操纵杆、电话、PDA、麦克风、外部硬盘、数据存储器等等,或是为诸如如图4所示设备线缆适配器(DWA)之类的连线USB设备提供连接点的设备。设备320和330给出包含WUSB协议的标准USB接口,响应例如配置以及重置之类的标准WUSB操作,提供主机期待的标准信息,例如能力描述信息,以及另外遵照WUSB协议。设备320、330还通过WUSB地址(当该设备附属于主机310并且由主机310列举时所分配的地址来访问。每个设备320,330支持一个或多个管道314,主机310在WUSB通道上通过所述管道314与设备320、330通信。WUSB设备320、330总体上支持在该设备的USB控制管道所附属的终点零的指定管道。设备320、330,和其他的WUSB设备一样,支持常见的存取机构,用于通过此控制管道存取信息,并且在终点零与控制管道相关联的是描述设备320、330所需要的信息(例如,在WUSB规范等等中定义的标准描述符)。
还更详细地图示了设备330包括这样的组件:可用于执行本发明的缓冲器管理,并且在一个或多个设备320中可以提供类似的组件。如图所示,WUSB设备330包括无线收发机或其它的无线发送器/接收器334,用以经由总线或管道314与主机310通信。该设备包括终点332,终点332总体上包括至少一个同步IN终点,所述终点在准备WUSB同步分组以传送至主机310之前缓冲数据。和使用USB 2.0设备一样,WUSB设备总体上包括终点,所述终点是主机和设备之间通信流的目标。提供终点控制器336,用以控制终点332并且使用缓冲器管理器模块338,缓冲器管理器模块338可以用硬件、固件和/或软件实现来执行参考图5-11所述的本发明的缓冲器管理方法。此外,设备330包括存储器340,所述存储器340包括终点循环缓冲344供IN终点332使用,以及包括数据分组寄存器组348,用以存储除原始数据(其可以被存储在循环缓冲器344中)之外同步分组需要的信息。此外,如设备330中所示配置的缓冲器管理器338和存储器340可以被提供于其他的设备320中,并且提供参考以下图5-11的更详细解释的这些组件的操作。同时,本发明的群300总体上包括主机310和至少一个设备330,但是用于实现群300的WUSB设备的数目和类型并不局限于本发明。可以理解的是,在此描述的缓冲器管理技术可应用到几乎任何包括同步IN终点的设备,所述同步IN终点与诸如主机310之类的无线USB主机通信。
图4图示了根据本发明举例说明的另一个群或系统400。与群300相反的是,群400结合USB主机410(诸如PC、计算机或其它的计算机或电子器件之类)来使用主机线缆适配器418(例如,Host WireAdapter HWA),以为群400提供主机功能性。线缆适配器418被示为连线到USB主机410,并且被配置成向设备410提供无线USB能力。群400此外在WUSB总线或通道420上与DWA 430通信,DWA430总体上是无线适配器,它被配置用于无线连接至主机线缆适配器418(或在附图未示出的其它实施方式中直接地连接至主机设备410)。DWA 430通过电缆或线缆与若干USB设备460、462、464、468连接,所述USB设备图示为键盘、打印机、音乐播放器和操纵杆,但是它们可以是任何具有USB功能的设备。然而,仅仅具有同步IN终点(例如数字视频摄影机、麦克风等等)的USB功能设备使用经由DWA 430提供的本发明来与主机410或主机线缆适配器418通信。DWA 430总体上将包括USB连接器(诸如之类USB′A′连接器),其允许连线的USB设备460-468连接到DWA 430。DWA 430允许设备460-468经由DWA 430和主机线缆适配器418无线地与主机410连接。
DWA 430总体上被配置为常规DWA,其遵照用于与主机或主机线缆适配器无线电通信的WUSB协议需求。此外,DWA 430被配置以支持本发明的缓冲器管理技术。为此目的,DWA 430包括具有缓冲器控制436(例如,提供参考图5-11描述的功能的软件、硬件,和/或固件设备或模块)的DWA终点控制器432。DWA 430包括一个或多个同步IN终点440。为了支持来自同步IN终点440的数据转送,所述数据是从设备460和468提供的原始数据,DWA 430包括用于每个终点440的循环缓冲器452和寄存器组456适配的存储器450,如以下详细解释的,它们是为发送窗中的每个分组而提供的。本领域技术人员可以理解的是,群400可以被修改以包括与主机线缆适配器418通信的多个WUSB设备(例如图3所示的网络集线器和轮辐配置),或者可以提供附加DWA,像链接至连线USB设备的DWA 430。群300和400根据本发明显示为可以执行缓冲器管理的群和设备相对简单的实例,并且本发明意图不在于限制。
参考图5-11,描述具有WUSB同步IN终点的操作以解释本发明提供的同步IN终点的缓冲器管理的解决方案。以下说明描述了一种缓冲器构造,以供在这种终点缓冲时使用。正如在图3和4设备320、330和430中(例如,通过终点和/或它们的具有缓冲器管理器/控制模块的控制器)会执行的,描述了用于缓冲输入数据以及将数据分段与WUSB协议需要的附加信息(例如序列号、出现时间、分段数目和其它的信息)相关联的操作,以将WUSB同步分组遵照WUSB协议进行封装。
简洁地,如图5所示,根据本发明一些实施方式的缓冲器管理使用具有索引(例如IndexS、IndexN和IndexE)的循环缓冲器510,以便按照时间顺序存储具有它们的长度的输入数据分段512、514。为了将几个连续的数据分段轻易地以及灵活地封装到WUSB同步分组里,缓冲器管理方法将如图3、4和6所示的寄存器组与发送窗中的每个分组相关联。终点控制器提供输入和输出管理,以提供详细操作和规则,以不断地存储来自应用程序的数据以及将几个连续的分段与寄存器组中保存的附加信息相链接,以组成WUSB分组(例如,把分段与附加WUSB分组信息或存储在寄存器中的分组封装信息相链接)。在一些实施方式中,出现时间是附加WUSB分组信息的一部分,并且缓冲器管理方法包括从循环缓冲器510中最后的分段的采样时间为每个分组导出出现时间,这在准确性和复杂性且之间达到合意的互换,以及支持动态交换和可连续升级性。
更确切地说,在图5所示一些优选实施例中,在设备的存储器中为该设备的每个同步IN终点提供缓冲器510。用于同步IN功能终点的缓冲器510是邻接存储器,并且它占用5个字节以及以图5所示循环方式操作。供循环缓冲器510使用的几个索引包括:IndexS,它是用于在缓冲器510中存储数据的开始的索引;IndexE,它是用于缓冲数据的末尾的索引;以及Index N,它是用于本终点当前的发送窗的结尾的索引。假定数据被写入到缓冲器510里的一个或多个分段512,514中,分段的长度被附加在每个分段512、514的开始,例如附加在分段512、514的最初2个字节。然后,具有(该长度字段(未示出))的这些分段512、514被连续地存储在如图5所示循环缓冲器510中。
为了将例如分段512、514之类的数据分段从缓冲器510组成到WUSB同步分组里,终点(或其控制器)将寄存器组与当前的成组发送或发送窗的每个分组相关联,以记录几个变量或分组封装信息,例如,超过长度要求的变量以及原始数据,以适当地格式化WUSB同步分组,以供从IN终点(或具有这种终点的WUSB设备)传送到主机。图6图示了本发明的两个示范性的WUSB同步分组610和618格式化步骤600。如图所示,分组610包括两个分段612、614,并且分组618包括存储在与终点相关联的循环缓冲器中的一个分段616,并且该数据可以是来自与终点相关联的应用程序,当具有终点的设备是DWA时是来自连线USB设备,或可以是提供给IN终点以传送到主机的其他功能数据。为了将像分段612、614、616的数据分段组装到WUSB同步分组里,终点或其控制器将寄存器组613,615与当前的成组传送窗中的每个分组610,618相关联。
寄存器613、615用来记录格式化WUSB同步分组所需要的几个变量,并用来给缓冲器中分组提供索引或链接。所示数据分段632、614和616包括原始数据字段以及表示数据字段长度的长度字段。寄存器613、615分别地记录612和616和索引,因为612和616是两个分组的第一分段。寄存器组613、615的数目等于终点的最大成组发送(burst)大小(或MBS)。这些寄存器组在本发明一个实施方式中是以相关联分组的传输顺序排列的。在图6实施方式中,从0编号的寄存器组613、615用于存储附加WUSB同步分组信息,所述信息包括:相关联或链接的连续数据分段的总长,分组中分段数目、与分组相关联的序列号以及出现时间,所述出现时间是相关联或链接的连续数据分段的第一分段的采样时间,以及相关联或链接的连续数据分段的开始索引。
图7中提供了根据本发明实施方式的用于缓冲器管理的状态机700。状态机700示出了三个状态:空闲710、输入712和输出716。输入管理和输出管理的缓冲器管理的功能是分别在状态712、716中实现的。另外,为了协助缓冲器管理,在与IN终点相关联的存储器中典型地保持并且存储了一些参数。这些参数包括:N,它是从IndexN到IndexE(图5所示)的数据分段的数目;T,它是循环缓冲器中上个数据分段的出现时间;以及P是两个连续分段之间的时间间隔。当设置或重置该终点时,在初始化这些参数以及寄存器组之后,其缓冲器管理进入空闲状态。这些附加参数的主要功能是允许终点或控制器为每个分组导出出现时间。为了支持最大分组大小(或MPS)以及间隔的动态变化,如以下讨论的定义了另一组这样的参数,例如NextN、NextT和NextP,其允许存储在循环缓冲器中的数据分段具有两种间隔。主机做出响应来控制与终点相关联的设备功能以致不太频繁地改变该间隔。
在IN终点执行的缓冲器管理可以被被认为包括了输入管理和输出管理。图8图示了输入管理800的示范性的步骤,而图9图示了输出管理900中所涉及的示范性的步骤。当在804接受了来自应用程序的写入请求时,输入管理800将来自设备上功能的应用程序的数据或从连线USB设备接收的数据安排到循环终点缓冲器里。这可以被认为是在两个一般步骤中执行的,包括更新相关索引以及参数以便为新数据分配空间(如由子步骤810至848所示)以及将数据分段写入到终点循环缓冲器(如在子步骤870所示)里,其继之以返回890。
参考第一较宽步骤,方法800的实施方式假定:在804接收或接受的写入请求包含四个参数(即,要输入的分段数目,两个分段之间的间隔、上一分段的采样时间和要输入的分段总长度,在图8中分别用N′、P′、T′和M来标示)。在810,方法800确定间隔P′是否不同于缓冲器中的原始间隔P,并且当两个间隔相同时,在812,该终点将N′添加到N里并且更新T为T′。如果间隔不同,那么在816,终点更新NextP、NextN和NextT。在870将数据分段从IndexE写入循环缓冲器以前,如在步骤820至864所示,终点检查空存储器,丢弃最旧的数据分段并且释放充足的存储器以容纳该数据分段。在此过程中,如在820、822、850、856、860和864所示,首先终点企图逐一提丢弃由寄存器组所指向的分组,直到空存储器足够。尝试开始于第一寄存器组;所以,在子步骤820,寄存器组i的索引被初始化至零。如果在822确定当前的寄存器组指向分组,那么在850,IndexS被移到此分组的首部以释放在此分组以前的存储器。
在856,检查空存储器以确定它是否大于将要写入的数据分段的大小。如果空存储器不足够,那么由当前寄存器组指向的分组在860被丢弃,并且在864该过程转至下一个寄存器组。如在824至848所示,当当前寄存器组不指向分组时,与寄存器组相关联的所有分组都被丢弃并且终点尝试逐一地丢弃其余的数据分段直到空存储器是足够的。在824,IndexS被移到IndexN以释放在IndexN以前的存储器。然后,在830检查空存储器的大小。在834,如果它小于将写入的数据大小,那么IndexN被移到下一个数据分段(如参考图5和6讨论的,当存储在循环缓冲器中时分段长度附加于每个分段),以丢弃当前数据分段并且左数据分段N被减去一。如果N不等于0,那么步骤824至840被反复以丢弃下一个数据分段。当N达到0时,具有原始的间隔的数据分段已经完全地被丢弃。在848,为了丢弃具有新的间隔的数据分段,NextN、NextP和NextT被装载到M,P和T中。如在870所示,当空存储器充足或足够时,输入数据被从IndexE写入到循环缓冲器中,然后终点以模S把M加到IndexE上,以确定数据分段在循环缓冲器中的当前结尾。
在图8中,″Reg[i]″是与IN终点的当前发送窗中第i+1个分组相关联的第i+1个寄存器组。Reg[i]包含索引(Index)、长度(Len)、序列号(Seq)、分段(Seg),以及时间或参考图6讨论的附加分组信息。“MOD(x,y)”表示x除以y的余数。此外,涉及图9的输出管理过程900中的动作″CLEAR(清空)Reg[i]″的步骤(例如参见步骤920),将第i+1个寄存器组中的索引和序列号设置为NULL(空)并把该寄存器组的另外三个成员变量设置为零,与该寄存器组的初始化时所做的相同。
图9所示输出管理900总体上包括在WUSB通道上以WUSB同步分组格式把数据发送至主机(或主机线缆适配器等等)。不同于连线USB,无线USB同步转送包括“握手”和重试机制。WUSB无线设备的终点将发送的数据保存在本发明的循环缓冲器中用于可能的重发,直到接收了表示成功传输的确认。对于IN转送,主机把对最后处理的确认(即DINAck)插入到对该事务的工作请求(即,WDTCTA)里,并且发送它至该设备。一旦终点接收从主机前往它的请求,终点进入输出状态(参见图7),并且开始输出管理。在如图9所示的此功能中,终点根据主机确认(即,DINAck)旋转其发送窗,并且更新寄存器组以按照新窗口的要求准备一个或多个WUSB同步分组。
如图9的输出管理方法900所示,此工作能够被认为是包括以下五个步骤:(1)根据新的发送窗更新寄存器组中的序列号;(2)重新使用被丢弃分组的序列号;(3)把IndexS更新为要发送的第一分段的索引;(4)利用Null Index(空索引)来更新寄存器组中的附加同步分组信息,包括:索引、长度、分段和时间;以及(5)将由具有非空索引的寄存器组表示的分组无线地发送至主机(或主机线缆适配器等等)。方法900从主机请求(WDTCTA)开始,在902,利用终点接收对在先事务的确认。在904,如在该确认(DINAck)中所表示的,具有缓冲管理器或控制模块的终点或其控制器动作起来旋转发送窗(例如,在图1所示数据发送器中)。
然后,在图9中子步骤910至928执行输出管理900的步骤1。步骤1涉及终点根据新的发送窗(即,在步骤904中旋转之后)更新寄存器组中的序列号。在终点存储器中,寄存器组被以发送次序安排,并且序列号应该匹配此次序。在接收的DINAck中“1”位的位置定义了发送窗中分组的序列号。索引TxS和TxN分别是发送窗的开始和结尾。通过使用TxS索引以及接收的DINAck,终点逐一更新每个寄存器组中的序列号。在910,指向将被更新的当前寄存器组的索引j,和指向随后提及的上次扫描停止位置的索引i,被初始化。在910、922、926和928,终点从TxS至TxN搜索在DINAck中所请求的序列号。如果在926确定终点扫描至TxN,那么它清空在924所示的寄存器组,然后转至步骤2,否则它准备利用该序列号更新当前寄存器组的序列号。序列号可以表示它合适于请求重试或新的分组。终点在912和918区别这两种情形,然后在914和920分别处理。如果在新的发送窗(DINAck)中的序列号也出现在旧的发送窗中并且它在旧窗中和在新建窗中具有相同的位置或者它在旧窗中的位置在新建窗之后,那么终点能够辨别出与该序列号相关联的分组是由主机为重试或重发所请求的。由于寄存器组的序列号字段保留旧的发送窗,所以在912、918、916通过扫描在上次扫描停止位置之后的寄存器组来完成此确定,直到找到了具有相同序列号的寄存器组或者全部寄存器组已经被扫描为止。如果在918找到了该寄存器组,那么如在920所示,该寄存器组指向的分组需要被重传输,并且与该要被重传输的分组相关联寄存器组中的全部内容被移到当前寄存器组。否则,如在914所示,仅仅将请求的序列号写入到当前寄存器组,并且清除寄存器组的其他字段。用这样的方式,终点不必为这些重新发送的分组重新计算寄存器变量。在914,终点将j增加1,并且准备更新下一个寄存器组。
然后,由终点或者其控制器执行来重新使用丢弃分组的序列号的输出管理900的步骤2,其包括子步骤930至948。如果首先的少数寄存器组中的索引被确定为全部位空并且在随后的寄存器组中的索引是非空,那么与包含在首先的寄存器组中的序列号相关联的分组在输入管理(例如,图8的过程800)期间已经被丢弃,但是它们现在被主机请求传送。根据WUSB规范,版本1.0,终点应该使用与丢弃分组相同的成组发送序列号来传送最旧的可用未丢弃分组。在输出管理900的步骤2中,这通过终点把具有非空索引的随后寄存器组中除序列号之外的所有变量移动到具有空索引的首先的寄存器组来实现。在930,检查第一寄存器组的索引以确定是否处理了步骤2。在934至944,终点查找具有非空索引的第一寄存器组。如果在944确定没有能够找到该寄存器组,那么终点直接地前进至步骤3。在948,除序列号字段之外该寄存器组之后的寄存器组内容被移到以具有空索引的第一个寄存器组开始的寄存器组。
终点然后执行步骤3,包括方法900的子步骤950至968,以将IndexS更新为将要发送的第一同步分组的第一分段的索引。如果在950检查中,第一寄存器组的索引不是空,那么在960,IndexS被设置为第一寄存器组中的索引,否则在958它将被设置为IndexN。在如964中所确定的那样最大分组大小被改变的情形中,终点优选地从IndexS将分段封装到成分组。所以,在这种情况中,如在968所示,IndexN被设置为IndexS而N被相应地更新。
通过更新在具有空索引的寄存器组中的变量或者附加分组信息,索引、长度、分段和时间,输出管理900继续终点或者其控制器执行图9所示具有子步骤970至988的步骤4。当最大分组大小或者MPS改变时,所有的寄存器组被优选地更新作为输出管理900的一部分。从而,如在974所示,为寄存器组封装分组的先决条件是:该寄存器组具有空索引或者MPS被改变。与这些寄存器组相关联的分组集合来自IndexN的数据分段。在970,为了容易地给这些新的分组确定出现时间,终点首先利用等式Time(时间)=T-P(N-1)来计算在IndexN的分段的采样时间。然后,如在988所示,通过聚积间隔P至Time,来确定后续数据分段的采样时间。此技术避免占用太多存储器来为每个分段记录采样时间。因为T保持将上一数据分段的采样记录在缓冲器中,所以为后面的分组导出的出现时间与现实出现时间之间几乎没有偏离多少,并且此技术还在复杂性和准确性之间提供了好的权衡。
在封装一个分组开始时,终点可以确定其第一分段的出现时间以及索引。在988,终点将逐一地把数据分段聚集成分组,并且相应地推进出现时间和IndexN,直到满足步骤4的结束条件或该分组因为在980检查出最大分组大小或MIPS的限值的关系而不能容纳下一个数据分段为止。如果达到了MPS,则该终点结束封装分组并且前进至下一个分组的封装直到满足步骤4的结束条件。此结束条件是:完成了所有请求的分组或者完成了缓冲器中所有分段,这在972和973检查。如果IndexN之后的分段具有两个间隔(即,原始间隔P和新间隔NextP),则首先的N个分段拥有原始间隔并且随后的NextN个分段具有新间隔。当终点用在982检查的原始间隔结束了封装分段时,如在984所示,终点将N和P改变为NextN和NextP并且计算出现时间。子步骤986保证具有不同间隔的两个分段不被终点封装到一个分组里。如果主机支持在一个分组中的两个不同间隔,那么子步骤986可以被取消而不影响任何其他的功能。
在990,终点动作起来通过发送由具有非空索引的寄存器组表示的封装分组(即,在终点的当前或新发送窗中的分组)执行步骤5。在998,输出管理900结束。在图9中,″Buffer[IndexN]″表示存储在缓冲器的第IndexN+l和第IndexN+2个字节中的16位整数,并且“i:j”表示从i到j。并且,“SUM(Reg[0:j-1].Seg)”表示从寄存器组0到寄存器组j-1中分段的总和。
图10图示在一个相对简单实验中在1000的结果,在该实验中实现了参照图3-9描述的缓冲器管理方法。在实验1000中,如在1010所示,缓冲器的大小是S=6000字节,MPS=600字节,MBS=4,并且MaxSeq=8。另外在实验1000中,连续2个数据分段之间的间隔是1毫秒并且在空中的服务间隔是4毫秒。在每个服务间隔,4个数据分段被写到循环缓冲器里。输入与输出在一个服务间隔中发生一次并且二中择一地发生。注意,在通用情况下,输入与输出每个服务间隔可以不止一次地发生。在所示缓冲器中包括在1020,1030,1040和1050的数的块表示有效数据分段占据的缓冲空间,所述有效数据分段的长度等于包含的数字(例如字节数)。缓冲器空着或未编号的部分表示用于终点的空缓冲器空间。
图10的实验1000表示图8和9所示输入与输出管理方法800和900的实现方式。具体地说,实验1000通过步骤或层1010-1050处理对WUSB同步分组的封装、丢弃旧的分组以及正确和容易地重新使用它们的序列号。当设置或者重置终点时,进行初始化1010。变量:IndexS、IndexN、IndexE、T、N、NextT、NextN和NextP被设置到零。因为WUSB的时间单位是1/8毫秒,所以P被设置到8(1毫秒)。寄存器组的Index和Seq被设置为空并且其它变量被设置到零。初始化之后,终点进入空闲状态。步骤1020-1050描述了四次输入与输出管理。在1020-1050的左边的步骤是用于输入管理并且在右方的步骤用于输出管理。在1020的输入管理中写请求将终点从空闲状态转变到输入状态。在时间T′=25,具有间隔P′=8的四个数据分段被输入到循环缓冲器里。因为P等于P′,所以T被更新到T′(25)而N增加N′(4)。IndexE移到这些数据分段的结尾。在输入操作结束之后,终点返回到空闲状态。
当接受WdtCTA和DINAck时,终点进入输出状态。在1020的输出管理中,在根据DINAck旋转发送窗之后,TxS是0而且TxN是4。由于主机请求四个新分组,所以在900的步骤1仅仅将寄存器组的序列号字段更新为0,1,2,3。因为在四个分组中没有丢弃的分组,所以步骤2不做任何工作。在步骤3中,因为Reg[0]的索引是空,所以IndexS被更新成IndexN(0)。在步骤4中,终点在970初始化Time至1,并且聚集来自IndexN(0)的数据分段。一旦成功地完成了数据分段的聚集,它将IndexN推进该数据分段的长度并且为Time增加P,以用一来跟踪出现时间。因为MPS的限制,一个分组仅仅能够容纳一个数据分段。最后,在该循环缓冲器中的所有数据分段被封装到所请求的四个分组中。因而,IndexN被移到IndexE,未封装的数据分段的数目,N被减少到0,并且四个寄存器组的字段被更新。
在步骤5中发送了这些分组之后,终点返回到空闲状态直到如1030所示在T=57的下一个输入。在1030的输出管理中,DINAck示出具有序列号0、3、4、5的分组被请求。在发送窗转动之后TxS是0并且TxN是6。在步骤1中,查找具有序列号0和3的分组重新发送。Reg[0]和Reg[3]的内容分别被复制到Reg[0]和Reg[1]。因为具有序列号4和5的分组是新分组,所以Reg[2]和Reg[3]的序列号被分别设置到4和5,而索引字段被设置到空。在步骤3中,IndexS被设置为Reg[0].Index(0)。在步骤4中,因为Reg[2]和Reg[3]的空索引,所以聚集具有序列号4和5的分组。在循环缓冲器中,两个数据分段被留下不拆开。在1040的输入管理中,缓冲器上溢发生。除序列号之外,与Reg[0]关联的分组被丢弃并且Reg[0]被清除。IndexS被推进到Reg[1].Index以释放Reg[1].Index之前的缓冲器空间。在1040的输出管理中,请求具有序列号3,4,5的分组以重试,并且也请求发送具有序列号6的分组。
在步骤1中,Reg[1]、Reg[2]、Reg[3]的内容被分别地移到Reg[0]、Reg[1]和Reg[2],并且Reg[3].seq被设置为6。因为在所请求分组中没有丢弃的分组,步骤2不作任何变化。在步骤4中,新分组被聚集。在1050的输入管理中,缓冲器再次上溢。与Reg[0]和Reg[1]关联的分组被丢弃。在1050的输出管理中,请求具有序列号4、5、7、0的分组。在发送窗转动之后,TxS是4并且TxN是1。步骤1确定具有序列号4和5的分组是两个重发分组并且其它的分组是新分组。Reg[1]和Reg[2]的内容分别被移到Reg[0]和Reg[1],不过在Reg[1]中除序列号之外的字段在输入管理中被清除。Reg[2].Seq和Reg[3].Seq被分别设置为7和0。在步骤2中,因为Reg[0]的空索引表示具有序列号4的分组被丢弃,所以除Reg[1]、Reg[2]和Reg[3]的Seq之外的内容被移到Reg[0]、Reg[1]、Reg[2]以便重新利用序列号4。因而,具有序列号5的原始分组将其关联的寄存器组从Reg[1]改变到Reg[0]并且改变其序列号为4。此外,在步骤4中,因为Reg[1].Index变成空,所以具有序列号5的分组被认为是新分组并且从IndexN聚集。
此外,在相同初始条件中,图11表示具有步骤或层1110至1150更复杂的实验1100。实验1100从1110开始,其在实验1000中是1020的结束状态。在实验1100中,间隔和最大分组大小被动态地改变。主机运用带外机制例如来在此实例中通知与终点关联的应用软件去改变分段间隔到2毫秒。然后,在1120,终点以新间隔P′=16产生分段并写入该分段。因为P(8)不等于P′,所以NextP,NexlT和NcxtN记录当前P′,T′和N′。因为新间隔变成原始间隔的两倍,因此N′减少一半。1120的输出管理中,终点运用新间隔NextP和相关NextT、NextN以导出在用尽具有原始间隔的数据分段之后的出现时间。
在主机接收了具有原始间隔的最后一个分段之后,它请求终点将最大分组大小改变到1200字节(例如,而不是作为限制)。在1140的输出管理,终点改变MPS。具有序列号5和6的重发分组被利用新MPS重新封装。它们的出现时间也被重新计算。注意,因为缓冲器中没有充足的数据分段,所以具有序列号7的分组被缩短并且具有序列号0的分组被留下不拆开。在步骤5中,因为Reg[3].Index是空,因此终点仅仅发送与Reg[0]、Reg[1]和Reg[2]关联的三个分组。在下一个事务1150中重试具有序列号7和0的分组,终点继续聚集具有序列号7的分组直到它无法再容纳下一分组,然后聚集具有序列号0的分组。在此实验1100中,在别处描述的输入与输出管理方法800和900所示的缓冲器管理方法于此也非常好的支持最大分组大小(MPS)和间隔的动态变化。因此,该缓冲器管理方法适合于WUSB同步IN终点与合并此类终点并且甚至那些具有动态交换和可连续升级特征的终点的设备。
尽管已经以一定程度的具体性描述和说明了本发明,然而应当理解的是,本说明书已经仅仅通过实例进行了说明,而且本领域技术人员在不脱离以下要求的本发明精神和范围的情况下,能够采取各部件的组合和排列中的许多变化。如上所述缓冲器管理方法典型地运用数量上等于最大成组传送大小或MBS的寄存器组,来为发送窗中的每个WUSB同步分组保存附加信息,并且随着每次传输更新寄存器。相对于在WUSB规范,版本1.0和在所附图2中提供的实例,此技术显著地节省了支持同步IN终点所需要的存储器数量。本发明的缓冲器管理给出将分组与序列号相关联和当终点缓冲器处于上溢(由如图10和11所示实验检验或证明有效)时如何丢弃数据并且重新利用序列号的详细操作。在此文献中描述的缓冲器管理方法的一个优点在于该新方法简单地并且平稳地(如图11所示实验检验)支持了最大分组大小或MPS以及间隔的动态变化。

Claims (11)

1.一种用于改进的缓冲器管理和用于封装无线通用串行总线(WUSB)同步分组的设备,包含:
WUSB同步IN终点,从设备功能接收数据分段;
与WUSB同步IN终点关联的存储器,包括循环缓冲器和寄存器;以及
终点控制器,管理具有一组缓冲器索引的循环缓冲器,将数据分段顺序地存储在循环缓冲器中,分配一组寄存器给发送窗中的每一WUSB  同步分组,以及导出在为发送窗中所请求的每个WUSB同步分组所分配的寄存器组中的附加分组信息,包括出现时间和所述循环缓冲器中封装成分组的所存储数据分段的索引,
其中出现时间从循环缓冲器中上个分段的采样时间和循环缓冲器中连续两个数据分段之间的时间间隔而导出。
2.根据权利要求1的设备,其中存储的数据分段包含不带采样时间的采样块和每一采样块的长度。
3.根据权利要求1的设备,其中在寄存器组中的附加分组信息还包含序列号、关联数据分段中分段数目和总长度。
4.根据权利要求的1所述的设备,其中WUSB同步IN终点接收写请求,所述写请求定义将输入到循环缓冲器的许多分段,两个分段之间的间隔,上个分段的采样时间、以及将输入的分段的总长度,并且其中终点控制器更新循环缓冲器的索引,以在数据分段存储之前在循环缓冲器中创建空间,并且当循环缓冲器循环处于上溢状态时丢弃最旧的数据分段。
5.根据权利要求1的设备,其中寄存器被安排成数目等于为WUSB同步IN终点定义的最大成组传送大小(MBS)的多个寄存器组。
6.根据权利要求1的设备,其中WUSB同步IN终点接收发送一组数据分组的主机指令,其中终点控制器确定包括序列号的发送窗,以及其中终点控制器封装循环缓冲器中的数据分段,这些数据分段在对应的寄存器组中的序列号匹配该发送窗的序列号,所述寄存器组被以匹配该序列号的发送次序安排在存储器中。
7.根据权利要求1的设备,其中终点控制器接收一请求,用以将连续数据分段的之间的时间间隔改变成不同值以及改变最大分组大小 (MPS)以供把在循环缓冲器中存储的数据分段封装成分组中使用,并且终点控制器通过使用辅助变量以新间隔或MPS修改或导出寄存器组中的分组信息来作出响应,以支持时间间隔的不同值和改变的MPS。
8.根据权利要求1的设备,其中在设备线缆适配器(DWA)中提供WUSB同步IN终点、存储器和终点控制器,并且在物理地连接到DWA上的USB端口的USB设备中提供设备功能。
9.一种用于为WUSB设备中的同步IN终点管理缓冲器的方法,包含:
在WUSB设备的存储器中,为每一同步IN终点提供缓冲器并提供寄存器组,该寄存器组的数目等于为对应IN终点定义的最大成组传送大小;
在IN终点之一接收多个数据分段;
在为该一个IN终点提供的缓冲器中存储数据分段;
在寄存器组中,为在发送窗中请求的每个分组存储索引、出现时间、分组长度和分段数目,其中出现时间从缓冲器中存储的数据分段的上个数据分段的采样时间和存储的两个连续数据分段之间的时间间隔而导出;
使用在寄存器组之一中的索引、出现时间、分组长度和分段数目将来自缓冲器的存储数据分段的至少一个数据分段封装成WUSB同步分组格式,以供传送到主机;以及
把发送窗中每个WUSB分组的序列号存储在与WUSB分组关联的寄存器组中,该序列号被从发送窗中确定并且被使用来封装WUSB同步分组,以将数据分段匹配于该一个IN终点的发送窗中的序列号。
10.根据权利要求9的方法,其中寄存器组以相配于发送窗的序列号的发送顺序被安排在每一同步IN终点的存储器中。
11.根据权利要求9的方法,还包含:在相关联的一个寄存器组中存储在缓冲器中用于相关联数据分段的开始位置的索引,用于关联数据分段总长度的分组长度,以及关联数据分段数目,其中封装包含:使用存储的索引、分组长度、以及关联数据分段的数目将寄存器组链接至存储的数据分段。 
CN200710007913.6A 2007-01-30 2007-01-30 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备 Expired - Fee Related CN101237445B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN200710007913.6A CN101237445B (zh) 2007-01-30 2007-01-30 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备
US12/021,187 US7865636B2 (en) 2007-01-30 2008-01-28 Buffer management for wireless USB isochronous in endpoints

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200710007913.6A CN101237445B (zh) 2007-01-30 2007-01-30 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201210075495.5A Division CN102693206B (zh) 2007-01-30 2007-01-30 在终点中无线usb同步的缓冲器管理

Publications (2)

Publication Number Publication Date
CN101237445A CN101237445A (zh) 2008-08-06
CN101237445B true CN101237445B (zh) 2013-01-02

Family

ID=39669225

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710007913.6A Expired - Fee Related CN101237445B (zh) 2007-01-30 2007-01-30 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备

Country Status (2)

Country Link
US (1) US7865636B2 (zh)
CN (1) CN101237445B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647446B2 (en) * 2006-10-03 2010-01-12 Silex Technology, Inc. Networked isochronous USB communication
KR101092112B1 (ko) * 2006-12-22 2011-12-12 콸콤 인코포레이티드 향상된 무선 usb 프로토콜 및 허브
JP5185399B2 (ja) * 2008-02-07 2013-04-17 クゥアルコム・インコーポレイテッド バルクデータ転送タイプを使用するアイソクロナス・データのワイヤレスusb転送のための方法およびシステム
US20100198999A1 (en) * 2009-02-05 2010-08-05 Qualcomm Incorporated Method and system for wireless usb transfer of isochronous data using bulk data transfer type
US8843661B2 (en) * 2008-08-28 2014-09-23 Intel Corporation Data transfer between wireless universal serial bus (USB) host controller driver and wireless USB host controller in a wireless USB host
US8335875B1 (en) * 2011-06-24 2012-12-18 Intel Corporation System and method for performing isochronous data buffering
JP2014527218A (ja) * 2011-06-30 2014-10-09 エムシーシーアイ コーポレイション ネットワーク・コントロール・モデル・ドライバ
CN103139644B (zh) * 2013-01-31 2016-01-20 南通同洲电子有限责任公司 一种序列号匹配的方法和数字电视终端
KR102153543B1 (ko) * 2013-10-31 2020-09-08 삼성전자주식회사 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치
CN105450606B (zh) * 2014-08-27 2018-11-27 中国银联股份有限公司 一种ldap服务节点及同步方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978858A (en) * 1997-09-30 1999-11-02 Compaq Computer Corporation Packet protocol and distributed burst engine
US6128669A (en) * 1997-09-30 2000-10-03 Compaq Computer Corporation System having a bridge with distributed burst engine to decouple input/output task from a processor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742623A (en) * 1995-08-04 1998-04-21 General Instrument Corporation Of Delaware Error detection and recovery for high rate isochronous data in MPEG-2 data streams
KR100290729B1 (ko) 1998-01-07 2001-05-15 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법
US6912651B1 (en) 1998-03-31 2005-06-28 Hewlett-Packard Development Company, L.P. Wireless universal serial bus link for a computer system
US7424209B2 (en) * 2003-02-13 2008-09-09 Microsoft Corporation System and method for real-time data archival
KR100518794B1 (ko) * 2003-10-18 2005-10-05 삼성전자주식회사 오디오 데이터의 선택적 재생이 가능한 데이터 재생장치및 그 방법
US7668243B2 (en) * 2004-05-18 2010-02-23 Texas Instruments Incorporated Audio and video clock synchronization in a wireless network
US7149839B2 (en) * 2004-12-03 2006-12-12 Microsoft Corporation Wireless USB hardware scheduling
US20070097985A1 (en) * 2005-11-02 2007-05-03 Hyun Lee Method of improving wireless communication QoS by means of automatic packet sizing and forward error correcting based on the dynamic error rate forecast
JP4184397B2 (ja) * 2005-11-11 2008-11-19 シャープ株式会社 映像音声処理システムおよびその制御方法、音声処理システム、映像音声処理システム制御プログラム、ならびに該プログラムを記録した記録媒体
KR100694298B1 (ko) * 2005-12-08 2007-03-14 한국전자통신연구원 무선 유에스비 접속을 위한 무선 근거리 통신망 콤보액세스 포인트 장치 및 방법, 그리고 그 장치에서의소프트웨어 계층 구조
US20070165526A1 (en) * 2006-01-14 2007-07-19 Hyun Lee Wireless QoS by hardware packet sizing, data rate modulation, and transmit power controlling based on the accumulated packet drop rate
KR100725932B1 (ko) * 2006-05-02 2007-06-11 삼성전자주식회사 무선 유에스비 장치의 동작 방법 및 이를 이용한 무선유에스비 장치
US20070294456A1 (en) * 2006-06-16 2007-12-20 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Data communication interface and communication devices incorporating same
US20080069026A1 (en) * 2006-09-14 2008-03-20 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Repeater for WUSB applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978858A (en) * 1997-09-30 1999-11-02 Compaq Computer Corporation Packet protocol and distributed burst engine
US6128669A (en) * 1997-09-30 2000-10-03 Compaq Computer Corporation System having a bridge with distributed burst engine to decouple input/output task from a processor

Also Published As

Publication number Publication date
US7865636B2 (en) 2011-01-04
CN101237445A (zh) 2008-08-06
US20080183920A1 (en) 2008-07-31

Similar Documents

Publication Publication Date Title
CN101237445B (zh) 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备
US5606559A (en) System and method for an efficient ATM adapter/device driver interface
JP4205181B2 (ja) Atmパケット・ヘッダおよびデータをホスト・コンピュータ・システムにバースト転送するための方法および装置
US5745790A (en) Method and apparatus for reporting the status of asynchronous data transfer
US5546549A (en) Multi-path channel (MPC) interface with user transparent, unbalanced, dynamically alterable computer input/output channels
US5477541A (en) Addressing technique for storing and referencing packet data
AU649642B2 (en) Communications interface adapter
US20050135395A1 (en) Method and system for pre-pending layer 2 (L2) frame descriptors
EP0752665B1 (en) Method and apparatus for coordinating data transfer between hardware and software
WO1999063448A1 (en) Universal serial bus controller with a direct memory access mode
CN100517284C (zh) 一种外部控制dma控制器的方法及其装置
EP1002278A1 (en) Method and system for optimizing the flow of isochronous data and clock rate information
CN101282224A (zh) 通信适配器及通信适配器的数据传输方法
KR100403620B1 (ko) 채널 활용율을 높이는 통신 시스템 및 그 방법
EP0130206A1 (en) METHOD AND DEVICE FOR COMPETITIVE BUS COMPETITION DECISION.
CN101707564B (zh) 用于零拷贝缓冲区队列网络数据发送和接收的处理方法和装置
JPH0927814A (ja) 通信制御方法及び電子機器
US10585699B2 (en) Methods and apparatus for verifying completion of groups of data transactions between processors
CN111416778B (zh) 用于多设备物联网的单串口网关平台
CN107852423A (zh) 用于usb 2.0带宽保留的方法及系统
EP1223692B1 (en) System, method, and computer program product for scheduling burst profile changes based on minislot count
CN102693206B (zh) 在终点中无线usb同步的缓冲器管理
CN115357535A (zh) 一种虚拟串口设计方法及装置
CN209690899U (zh) 基于usb的fpga通信控制装置及fpga
US6178462B1 (en) Protocol for using a PCI interface for connecting networks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130102

CF01 Termination of patent right due to non-payment of annual fee