专利名称:一种主机与usb设备之间进行数据传输的方法及相应的usb设备的制作方法
技术领域:
本发明涉及数据传输领域,特别涉及基于USB协议的数据传输。
背景技术:
通用串行总线(Universal Serial Bus)是新一代的外围设备接口,这种接口的传输速率比个人计算机所使用的并行端口或是串行端口的速度都快了许多。一条通用串行总线最多可以连接127个设备,如光盘驱动器、扫描仪、打印机等等。这些设备通过相同的接口连接到主机(host)例如个人计算机上,从而简化了作为主机的个人计算机连接接口类型。
如图1所示,在利用USB总线进行数据传输过程中,主机发送数据或接收数据的时钟和USB设备接收或发送数据的时钟总会存在一定的误差,因此设备内部的缓冲器就可能会出现没有数据可以输出(下溢underflow)或者数据量超出缓冲器存储最大空间限制(上溢overflow)的现象。在数据传送过程中,一般有两种情况,一种是数据输入(in),表示数据流向主机;一种是数据输出(out),表示数据流出主机。对于这两种情况,都要考虑主机与设备时钟不对称所带来的问题。下面以数据输入(in)为例进行介绍。如图2所示,在5ms以后缓冲器占有率还在持续升高,而且很快就达到了所述缓冲器的存储上限。这样在主机自所述缓冲器中读出数据并使缓冲器的占有率再次下降之前,就会有一部分来自于设备的数据因为不能被写入所述缓冲器而被丢弃。如图3所示,在5ms以后缓冲器占有率还是持续下降,并且很快所述缓冲器中的数据就被读空,这样在USB设备向缓冲器写入数据并使缓冲器的占有率再次上升之前,就会没有可以数据可以传输给主机。
无论在视频还是音频应用中采用USB数据传输,缓冲器的上溢或是下溢都会导致图像或者声音的间断或者不必要的干扰。
发明内容
本发明的目的是避免在数据传输过程中USB设备中发生缓冲器的上溢或下溢。为实现上述发明目的,本发明记载了如下的技术方案一种在主机与USB设备之间进行数据传输的方法包括检测USB设备中的缓冲器数据占有率的操作;对所述缓冲器数据占有率的情况进行判断的操作;根据判断结果进行增加采样数据或者丢弃采样数据的操作。
其中,若所述缓冲器数据占有率低于预先设定好的存储下限标记,进行所述增加采样数据的操作;若缓冲器数据占有率高于预先设定好的存储上限标记,进行所述丢弃采样数据的操作。
优选的,当缓冲器占有率高于预先设定好的存储上限标记时,记录缓冲器输出数据次数的操作;及当所述缓冲器输出数据次数达到预先设定好的一个计数值一时,进行所述丢弃采样数据的操作。若所述缓冲器数据占有率低于预先设定好的存储下限标记,开始记录缓冲器输出数据次数的操作;当所述缓冲器输出数据次数达到预先设定好的一个计数值二时,进行所述增加采样数据的操作。所述增加采样数据的操作可以是插值操作,特别是线性插值操作。
本发明还记载了一种USB设备,包括一控制模块以及缓冲器,以及对所述缓冲器的数据占有率进行检测的检测模块,该检测模块将检测结果发送给所述控制模块,所述控制模块根据检测结果增加采样数据或者丢弃采样数据。
其中,所述USB设备还包括一插值器,所述控制模块通过对该插值器的控制增加采样数据。所述插值器是可以是线性插值器。
在所述USB设备的所述检测模块内部存储有预先设定好的上限和下限标记值;若所述检测模块得到的检测结果为缓冲器占有率低于所述下限标记,所述控制模块增加采样数据;若所述检测模块得到的检测结果为缓冲器占有率高于所述上限标记,所述控制模块丢弃采样数据。
另外,若所述检测模块得到的检测结果为缓冲器占有率高于所述上限标记,则所述计数器开始计数;当所述计数器计数到一设定好的记数值一时,检测模块发送检测结果给控制模块,控制模块丢弃采样数据。所述USB设备还包括一计数器;若所述检测模块得到的检测结果为缓冲器占有率低于所述下限标记,则所述计数器开始计数;当所述计数器计数到一设定好的记数值二时,检测模块发送检测结果给控制模块,控制模块增加采样数据。
另外,所述上限标记、下限标记、计数值一以及计数值二都是可配置的。
本发明所记载技术方案有效的避免了由于主机和USB设备时钟不对称的所带来的缓冲器上/下溢问题,并且在保证了数据的顺利传输。
图1是现有技术USB系统结构图;图2是USB设备发生缓冲器上溢的情况示意图;图3是USB设备发生缓冲器下溢的情况示意图;图4是本发明USB数据传输方法的一个优选实施例的流程图;图5是本发明USB设备防止缓冲器上溢的情况示意图;图6是本发明USB设备防止缓冲器下溢的情况示意图;图7是本发明USB设备的结构图;图8是本发明USB设备的另一结构图。
具体实施例方式
本发明为实现前述的发明目的,提供了一种新的USB数据传输方法。在数据传输过程中,一般有两种情况,一种是数据输入(in),表示数据流向主机;一种是数据输出(out),表示数据流出主机。对于这两种情况,都要考虑主机与设备时钟不对称所带来的问题。下面以数据输入(in)为例进行介绍,数据输出(out)的情况与输入(in)类似。
图4所示为本发明所述USB数据传输方法的一个优选实施例。在数据传输的某一时刻,对于USB设备中的缓冲器的数据占有率进行检测。如果该占有率高于一个预先设定好的存储上限标记值,那么就开始计数,当计数值等于一预先设定好的计数值一时,就丢弃将要写入所述缓冲器的采样数据,并再次检测所述缓冲器的数据占有率。如果此时该数据占有率没有降低到某一水平,例如缓冲器最大存储空间的50%,则重新开始计数,当计数到所述计数值一时再次丢弃一个采样数据。这样操作直到数据占有率降低到所需要的水平。
在数据传输的某一时刻,对于USB设备中的缓冲器的数据占有率进行检测。如果该占有率低于一个预先设定好的存储下限标记值,同样的也就开始计数,当计数值等于一预先设定好的计数值二时,就增加一个采样数据并将其输送给主机,并再次检测所述缓冲器的数据占有率。如果此时该数据占有率没有提高到某一水平,例如缓冲器最大存储空间的50%,则重新开始计数,当计数到所述计数值二时再次增加一个采样数据并输送给主机。这样操作直到数据占有率提高到所需要的水平。其中,增加采样数据的操作可以通过插值操作来实现,比如线形插值操作或者二次插值操作。
所述上限标记值、下限标记值是可以配置的,可以根据USB设备以及主机的数据传送和读取速度来设定。同样的,计数值一、二也是可以配置的,同样可以根据USB设备以及主机的数据传送和读取速度,以及系统可以接受的丢弃或增加采样数据的程度而设定。
图5中显示的是在采用了本发明所记载的数据传输方法后,在5ms以后当缓冲器中的数据要继续增加时,缓冲器的占有率就会被限制在上限标记的水平附近,并且通过丢弃采样数据的操作使存储器的占有率下降到某一水平。
图6显示的是在采用了本发明所记载的数据传输方法后,在5ms以后当缓冲器中的数据要继续减少时,缓冲器的占有率就会被被限制在下限标记的水平附近,并且通过增加采样数据的操作使存储器的占有率提高到某一水平。
本发明还提供了一种新的USB设备如图7所示。所述USB设备S包括一个检测模块T,该检测模块T中储存着所述缓冲器B占有率的上限标记和下限标记的值。缓冲器B的数据占有率水平会被实时的输送到所述检测模块T,经过T比较,如果所述缓冲器B的数据占有率水平高于所述上限标记,例如缓冲器最大存储空间的80%,那么检测模块T发送信号到控制模块C,C便放弃下一个要写入所述缓冲器的数据。优选的来说,如图8所示,所述USB设备还包括一个计数器O。当所述检测模块T得知所述缓冲器B的占有率已经超过上限标记时,检测模块T在发送信号给控制模块C的同时还发送启动信号给所述计数器O,计数器O开始计数。当计数器O的计数值达到某一预先设定好的计数值一时,计数器O发送命令到控制模块C,则C便放弃下一个要写入所述缓冲器B的数据。这时,计数器O归零并开始重新计数,当再次计数到所述计数值一时,控制模块C再次放弃一个将要写入缓冲器B的数据。这样的操作一直重复直到检测模块T检测到所述缓冲器B的占有率已经降低到远低于缓冲器最大容量的水平,例如50%,才停止丢弃数据。
如图7所示,在缓冲器B的数据占有率水平被实时的输送到所述检测模块T后,经过T的比较,如果所述缓冲器B的数据占有率水平低于所述下限标记,例如缓冲器B最大存储空间的20%,那么检测模块T发送信号到控制模块C,C便增加一个新的采样数据并输送给主机H。优选的来说,如图8所示,所述USB设备还包括一个计数器O和插值器I。当所述检测模块T得知所述缓冲器B的占有率已经低于下限标记时,检测模块T在发送信号到控制模块C的同时还发送启动信号给所述计数器O,计数器O开始计数。当计数器O的计数值达到某一预先设定好的计数值二时,计数器O发送命令到控制模块C,则C便命令插值器I产生新的数据并输送给主机H。这时,计数器O归零并开始重新计数,当O再次计数到所述计数值二时,控制模块C再次命令插值器I产生新的采样数据并输送给主机H。这样的操作一直重复,直到检测模块T检测到所述缓冲器B的占有率已经提升到一定的容量水平,例如缓冲器最大存储空间的50%,才停止插入数据。优选的,所述插值器I可以是线性插值器,通过从缓冲器中读出前一个采样数据和后一个采样数据,并对这两项采样数据取算术平均值得到一个新的数据输出给主机H。当然,I也可以是其它插值器如二次插值器。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。
权利要求
1.一种在主机与USB设备之间进行数据传输的方法,其特征在于该方法包括检测USB设备中的缓冲器数据占有率的操作;对所述缓冲器数据占有率的情况进行判断的操作;根据判断结果进行增加采样数据或者丢弃采样数据的操作。
2.如权利要求1所述的数据传输方法,其特征在于若缓冲器数据占有率高于预先设定好的存储上限标记,进行所述丢弃采样数据的操作;若所述缓冲器数据占有率低于预先设定好的存储下限标记,进行所述增加采样数据的操作。
3.如权利要求2所述的数据传输方法,其特征在于当缓冲器占有率高于预先设定好的存储上限标记时,记录缓冲器输出数据次数的操作;及当所述缓冲器输出数据次数达到预先设定好的一个计数值一时,进行所述丢弃采样数据的操作;若所述缓冲器数据占有率低于预先设定好的存储下限标记,开始记录缓冲器输出数据次数的操作;当所述缓冲器输出数据次数达到预先设定好的一个计数值二时,进行所述增加采样数据的操作。
4.如权利要求1所述的数据传输方法,其特征在于所述增加采样数据的操作是插值操作。
5.如权利要求4所述的数据传输方法,其特征在于所述插值操作是线性插值操作。
6.如权利要求2或3所述的数据传输方法,其特征在于所述上限标记、下限标记,计数值一以及计数值二都是可以配置的。
7.一种USB设备,包括一控制模块以及缓冲器,其特征在于该USB设备还包括对所述缓冲器的数据占有率进行检测的检测模块,该检测模块将检测结果发送给所述控制模块,所述控制模块根据检测结果增加采样数据或者丢弃采样数据。
8.如权利要求7所述的USB设备,其特征在于所述USB设备还包括一插值器,所述控制模块通过对该插值器的控制增加采样数据。
9.如权利要求8所述的USB设备,其特征在于所述插值器是线性插值器。
10.如权利要求7所述的USB设备,其特征在于在所述检测模块内部存储有预先设定好的上限和下限标记值;若所述检测模块得到的检测结果为缓冲器占有率低于所述下限标记,所述控制模块增加采样数据;若所述检测模块得到的检测结果为缓冲器占有率高于所述上限标记,所述控制模块丢弃采样数据。
11.如权利要求10所述的USB设备,其特征在于该设备还包括一计数器;若所述检测模块得到的检测结果为缓冲器占有率高于所述上限标记,则所述计数器开始计数;当所述计数器计数到一设定好的记数值一时,检测模块发送检测结果给控制模块,控制模块丢弃采样数据;若所述检测模块得到的检测结果为缓冲器占有率低于所述下限标记,则所述计数器开始计数;当所述计数器计数到一设定好的记数值二时,检测模块发送检测结果给控制模块,控制模块增加采样数据。
12.如权利要求10或11所述的USB设备,其特征在于所述上限标记、下限标记、计数值一以及计数值二都是可配置的。
全文摘要
为了防止USB数据传输过程中由于主机与USB设备时钟不一致产生的缓冲器上溢或下溢问题,本发明提供了一种USB数据传输方法,通过实时的对缓冲器占有率水平进行检测并与预先设定的存储限定标记相比较而放弃或增加采样值。本发明还提供了一种USB设备,该设备包括一检测模块用来检测缓冲器占有率水平,并通过一控制模块增加或丢弃采样数据,从而避免发生缓冲器的上溢或下溢。
文档编号G06F13/38GK1776656SQ20051013048
公开日2006年5月24日 申请日期2005年12月13日 优先权日2005年12月13日
发明者张倩, 朱小琳 申请人:北京中星微电子有限公司