数据处理器,分组识别方法及纠错方法

文档序号:7928940阅读:369来源:国知局
专利名称:数据处理器,分组识别方法及纠错方法
技术领域
本发明涉及数据处理器,分组识别方法以及纠错方法。尤其涉及一种数据处理器,用于通过USB接口与主计算机进行数据通讯。
背景技术
通用串行总线(USB)是一种串行接口,已经广泛用于具有主机功能的计算机(如,个人计算机)与连接在该计算机上的外围设备之间的通讯。当在PC(此后称为USB主机)和外围设备(此后称为USB设备)之间用USB进行通讯时,需要在初始状态就检测错误以有效传输数据。
使用USB进行的数据传输通常按照称为事务(transaction)的传输单元进行。每个事务主要使用令牌分组(token packet)、数据分组和握手分组(handshake packet)。
图1(a)到1(c)所示的表显示了分组的格式。如图1(a)所示,令牌分组具有二十四比特的固定长度,其中包括八比特的分组ID(PID)、七比特的USB地址(ADDR)、四比特的端点号(ENDP)、和五比特的循环冗余校验或CRC(CRC5)。分组ID用于识别分组,USB地址用于识别USB设备。端点号用于识别USB设备的端点(传输类型),CRC用于校验USB地址和端点号。
如图1(b)所示,数据分组的长度从24比特到8216比特可变,其中包括八比特的PID、0到8192比特的数据字段(DATA)和十六比特的CRC(CRC16)。CRC16用于校验数据字段。
如图1(c)所示,握手分组具有八比特的固定长度,全部用于PID。
根据相应PID(八比特)的数据模式而识别各个分组的类型。
图2所示的表显示了PID的格式。PID包括PID0至PID3(四比特)和/PID0至/PID3(四比特),其中/PID0至/PID3是PID0至PID3的反转。根据PID(八比特)的数据模式(共有十六种)来识别USB主机或USB设备接收到的分组。
图3(a)和3(b)是流程图,显示了事务处理的流程。图3(a)显示了在从USB设备向USB主机传输数据时执行的IN事务处理。
USB主机首先向USB设备发送IN令牌分组,通知USB设备要开始IN事务传输。响应于IN令牌分组,USB设备向USB主机发送包含原始数据的数据分组。USB主机向USB设备发送表示数据分组被正常接收的ACK握手分组。接收到ACK握手分组后,USB设备确认数据传输已经正常完成。
图3(b)显示了当从USB主机向USB设备传输数据时的OUT事务处理。
USB主机首先向USB设备发送OUT令牌分组,通知USB设备要开始OUT事务。然后,USB主机把包含原始数据的数据分组传输给USB设备。当数据分组被正常接收时,USB设备向USB主机发送ACK握手分组。接收到ACK握手分组后,USB主机确认传输正常完成。
图4所示的流程图显示了现有技术中USB设备所执行的分组识别处理。当USB设备接收到分组(步骤91)时,USB设备根据PID的数据模式判定分组的类型(步骤92)。在这种状态下,当分组不是令牌分组、数据分组和握手分组中的任何一种时,USB设备执行超时处理(timeoutprocess)或暂停数据处理(步骤93)。
在步骤92中,若PID是令牌分组,则USB设备判定接收到的USB地址(ADDR)是否正确(步骤94a)。
当USB地址正确时(即,USB地址是其自身地址)时,USB设备判定其端点号(ENDP)是否与传输类型匹配(步骤94b)。例如,当为USB设备设置的端点传输类型是接收类型,但接收到的是表示发送类型的端点号时,USB设备判定出现了错误。
当端点号表示其传输类型时,USB设备用CRC5校验USB地址(ADDR)的数据值和端点号(ENDP)是否正确(步骤94c)。在这种状态下,若数据值正确,则USB设备开始事务(步骤94d)。若在步骤94a至94c的任何一个步骤中出现错误,则USB设备执行超时处理(步骤93)。
在步骤92中,若PID表示数据分组,则USB设备通过CRC16校验接收到的数据字段(DATA)的数据值是否正确(步骤95a)。当数据值正确时,USB设备执行数据接收处理(步骤95b)。当数据值不正确时,USB设备执行超时处理(步骤93)。
在步骤92中,若PID表示握手分组,则USB设备结束该事务(步骤95)。
现在讨论现有技术的USB设备中USB设备的错误检测和错误纠正功能。图5是示意框图,显示了现有技术的USB设备102中的纠错电路。USB设备102通过USB 103连接在USB主机101上。USB设备102包括串行接口引擎(SIE)104和多个端点(只显示了两个)105和106。
SIE 104具有对来自USB主机101的分组进行解码以转换数字数据的功能,以及对发送给USB主机101的分组进行格式化的功能。
端点105和106中的每一个都是具有原始数据存储区和传输功能的先进先出存储器(FIFO)。USB设备102的传输类型(如,接收类型、发送类型、发送一接收类型)是根据各个端点105和106的FIFO特性而确定的。对应于FIFO的端点号(ENDP)被分配给各个端点105和106。端点105和106分别具有用于存储数据转换比特(data toggle bit)的区段(图5中称为转换比特)105a和106a。
在现有技术中,USB设备102使用存储在端点105和106中的数据转换比特来执行错误检测和纠正。具体而言,当端点105是发送类型(具有发送功能的FIFO)并且存储在区段105a内的数据转换比特的值为“0”时,USB设备102发送相应的数据分组(下文中称为数据0分组)。当存储在区段105a内的数据转换比特的值是“1”时,USB设备102发送相应的数据分组(下文中称为数据1分组)。
当接收到来自USB主机101的ACK握手分组时,USB设备102改变存储在区段105a内的数据转换比特的值。当没有接收到ACK握手分组时,USB设备102不改变存储在区段105a内的数据转换比特的值(发生了数据转换比特错误)。
因此,当存储在端点105和106内的数据转换比特的值转变时,如“0”、“1”、“0”、“1”等,USB设备102判定数据传输正常执行。当没有接收到ACK握手分组时,USB设备102不改变数据转换比特的值,并产生数据转换比特错误。在这种情况下,USB设备102通过接收来自USB主机101的下一个IN令牌分组来检测数据转换比特错误。然后,USB设备再次发送数据分组。接着,USB设备102接收重新发送的数据分组的ACK握手分组,从而改变数据转换比特的值并纠正错误(清除错误)。
但是,现有技术具有以下缺点。
1、由于分组错误判定而降低了传输效率。
由于总线电缆(USB 103)内的反射或噪声,通过USB 103传输的信号的数据值可能改变。根据PID(分组ID)的数据模式而识别分组。因此,例如,当噪声把PIDO至PID3和/PIDO至/PID3中的两个相应比特反转时,分组识别不能正确执行。
例如,如图6所示,当PID具有OUT令牌分组的数据模式时,PID3(“0”)和相应的/PID3(“1”)的比特值反转将导致PID具有数据0分组的数据模式。换句话说,USB设备102错误地把来自USB主机101的OUT令牌分组判定为数据0分组。
分组的错误判定降低了传输效率和整个系统的性能。在高速模式下,例如在USB2.0标准中,数据传输速度为480Mbps这么高,信号振幅为400mV这么小。因此,存在发生分组错误判定的趋势。所以,运行速度不能得到提高。
2、由于错误检测和错误纠正的延迟而导致传输效率的降低。
在现有技术中,当USB设备没有接收到ACK握手分组而发生数据转换比特错误时,USB设备102在接收到来自USB主机101的下一个令牌分组(具体而言,IN令牌分组)之前不能复位。即,在接收到来自USB主机101的下一个传输请求之前,发生了数据转换比特错误的端点继续存在数据转换比特错误。
图7是现有技术中错误纠正的流程图。为描述方便,各个事务中所用的USB主机101的端点称为端点h1和h2,USB设备102的端点称为端点d1和d2。
USB主机101开始端点h1和端点d1之间的第一事务。具体而言,USB主机101发出IN令牌分组并请求数据传输(步骤111)。响应于IN令牌分组,USB设备102根据存储在端点d1内的数据转换比特的值(“0”),把数据0分组传输给USB主机101(步骤112)。当接收到数据0分组时,USB主机101把端点h1的数据转换比特从“0”变为“1”,并且把ACK握手分组发送给USB设备102。(步骤113)。
在这种情况下,由于某种原因USB设备102没有接收到来自USB主机101的ACK握手分组时(如图7中的虚线所示),USB设备102不改变端点d1的数据转换比特的值“0”。换句话说,端点d1发生了数据转换比特错误。
在这种状态下,USB主机101开始下一个(第二个)与USB设备102的端点d2的事务(步骤114)。第二个事务不再详细描述。当USB主机101和USB设备102中的一个接收到来自USB主机101和USB设备102中另一个的ACK握手分组并且第二事务正常结束时(步骤115),端点h2和端点d2的各个数据转换比特从“0”变为“1”。
然后,USB主机101开始端点h1和USB设备102的端点d1之间的下一个(第三个)事务。具体而言,USB主机101发出IN令牌分组并且请求数据传输(步骤116)。响应于IN令牌分组,USB设备102把与存储在端点d1内的数据转换比特的值“0”对应的数据0分组发送给USB主机101(步骤117)。USB设备102检测由于没有接收到ACK握手分组而发生的数据转换比特错误(数据转换比特的值保持为“0”),并重传数据0分组。
当接收到数据0分组时,USB主机101把ACK握手分组传输给USB设备102。但是,在第三个事务中,USB主机101向USB设备102请求的数据是数据1分组,接收到的数据与预期的数据不同。因而,USB主机101不认为所接收到的数据0分组是正确数据,从而不改变端点h1的数据转换比特“1”。
当USB设备102接收到来自USB主机101的ACK握手分组时(步骤118),USB设备把端点d1的数据转换比特的值从“0”变为“1”。这使端点d1从数据转换比特错误中复位。
通过这种方式,当出现数据转换比特错误时,因为USB设备102没有接收到第一个传输数据的ACK握手分组,所以在下一个传输请求之前,端点d1必须保持相同的传输数据(如,数据0分组)。
在这种情况下,由于端点d1有错误,不能准备新的传输数据(数据1分组),所以端点d1不能立即响应来自USB主机101的下一个事务。也就是,当从USB主机101接收到下一个传输请求时,端点d1必须执行检测和纠正错误的事务(步骤116到118)。因而,在纠正错误后,USB主机101必须再次向端点d1发送传输请求(在步骤118后)。在这种情况下,执行了不必要的检测和纠正错误的处理。因而,USB 103的带宽不能有效利用。这降低了传输效率。结果,整个系统的性能降低。

发明内容
本发明的一个方面提供了一种数据处理器,用于通过接口以包含分组ID的分组与主计算机进行往来数据通讯。该数据处理器包含分组识别电路,其用于接收来自主计算机的包含分组ID的分组,并且通过分组ID来识别分组类型。分组长度测量电路与分组识别电路相连,用于测量从主计算机接收到的分组的长度,并且判定所测量的分组长度是否对应于分组识别电路所识别的分组类型。
本发明的另一个方面提供了一种数据处理器,用于通过接口与主计算机进行往来数据通讯。该数据处理器包括多个端点,各处理对应于来自主计算机的数据处理请求的事务。各个端点存储有数据转换比特,每当接收到来自主计算机的预定分组时反转数据转换比特的值。转换比特切换电路连接在端点上,以判定在先前事务中接收到传输请求的第一端点和在当前事务中接收到传输请求的第二端点是否相同。当第一端点与第二端点不同时,转换比特切换电路反转存储在第一端点中的数据转换比特的值。
本发明的另一个方面提供了一种数据处理器,用于通过预定的接口以包含分组ID的分组与主计算机进行往来数据通讯。该数据处理器包含分组识别电路,其用于接收来自主计算机的包含分组ID的分组,并且通过分组ID来识别分组的类型。分组长度测量电路与分组识别电路相连,用于测量从主计算机接收到的分组的长度,并且判定测量出的分组长度是否对应于分组识别电路所识别的分组类型。该数据处理器还包括多个端点,各处理与来自主计算机的数据传输请求相对应的事务。各个端点存储有数据转换比特,每当接收到来自主计算机的预定分组时反转数据转换比特的值。转换比特切换电路连接在端点上,以判定在先前事务中接收到传输请求的第一端点和在当前事务中接收到传输请求的第二端点是否相同。当第一端点与第二端点不同时,转换比特切换电路反转存储在第一端点中的数据转换比特的值。
本发明的另一方面提供了一种在通过接口与主计算机进行往来数据通讯的数据处理器中识别包含预定分组长度和分组ID的分组的类型的方法。该方法包括通过接口从主计算机接收分组,由分组ID来识别所接收到的分组类型,测量所接收到的分组的长度,以及判定所测量的分组长度是否对应于由分组ID识别的分组类型。
本发明的另一个方面提供了一种在通过接口与主计算机进行往来数据通讯的数据处理器中纠正错误的方法。该数据处理器包括多个端点,其分别处理与来自主计算机的数据传输请求相应的事务,并且各个端点存储有数据转换比特,每当从主计算机接收到正常接收确认时反转数据转换比特的值。所述的错误是数据转换比特错误,是当数据处理器没有接收到来自主计算机的正常接收确认时,数据转换比特未被反转。此方法包括判定所述的多个端点中在先前事务中接收到传输请求的第一端点和在当前事务中接收到传输请求的第二端点是否相同;当第一端点和第二端点不同时,反转存储在第一端点中的数据转换比特的值。
本发明的另一个方面提供了一种对通过USB接口与主计算机进行往来数据通讯的数据处理器进行控制的方法。该数据处理器包括多个端点,其分别处理与来自主计算机的数据传输请求相应的事务,并且各个端点存储有数据转换比特,每当从主计算机接收到握手分组时反转数据转换比特的值。该方法包括判定所述的多个端点中在先前事务中接收到传输请求的第一端点和在当前事务中接收到传输请求的第二端点是否相同;当第一端点和第二端点不同时,反转存储在第一端点中的数据转换比特的值。
附图以示例的方式解释了本发明的原理。通过下面的详细说明,结合附图,可以清楚地理解本发明的其它方面和优点。


通过以下对优选实施例的说明,结合附图,可以清楚地理解本发明及其目的和优点。图中图1(a)到1(c)是解释现有技术的分组格式的表;图2是解释现有技术中PID格式的表;图3是流程图,显示了现有技术中的事务处理流程;图4是流程图,显示了现有技术中的分组识别;图5是框图,示意性显示了现有技术中数据转换比特错误纠正电路的结构;图6显示了发生分组错误判定的情况;图7是流程图,显示了现有技术中数据转换比特错误的纠正;图8是示意性框图,显示了根据本发明第一优选实施例的数据处理器;图9是流程图,显示了图8所示数据处理器所执行的分组判定;图10显示了图8所示数据处理器安装在硬盘设备上的实例;图11是示意性框图,显示了根据本发明第二实施例的数据处理器;图12是流程图,显示了图11所示数据处理器所执行的数据转换比特错误的纠正;图13是流程图,显示了图12的数据转换比特错误纠正的具体实例;以及图14显示了图11所示的数据处理器安装在硬盘设备上的实例。
具体实施例方式
在附图中,相同的数字表示相同的元件。
图8是示意性框图,显示了根据本发明第一实施例的数据处理器(USB设备)12。USB 13把USB设备12连接到管理USB通讯的主计算机11(以下称作USB主机)上。USB设备12连接在USB主机(个人计算机)11上,并且是,例如,用于硬盘、磁光(MO)盘、数字多用光盘(DVD)、光盘(CD)等等或外围设备,诸如打印机或扫描仪的ATA/ATAPI(ATA分组接口)设备。图8显示了用作分组识别单元的USB设备12的一部分。
USB设备(分组识别单元)12包括SIE 21,用作分组判定电路的PID解码器22,分组长度测量电路23,第一到第三分组检查电路24至26,以及多个(为简便起见仅显示了两个)端点27和28。在第一实施例中,第一分组检查电路24用作令牌分组检查电路,第二分组检查电路25用作数据分组检查电路,第三分组检查电路26用作握手分组检查电路。
SIE 21对从USB主机11接收到的分组进行解码,并把所解码的分组转换为数字数据。然后,SIE 21向PID解码器22和分组长度测量电路23提供该数字数据。
PID解码器22根据PID(分组ID)的数据模式来识别从SIE 21接收到的数据(分组)的类型。当所接收的分组是令牌分组时,PID解码器22把令牌分组提供给令牌分组检查电路24。当所接收的分组是数据分组时,PID解码器22把数据分组提供给数据分组检查电路25。当所接收的分组是握手分组时,PID解码器22把握手分组提供给握手分组检查电路26。
分组长度测量电路23测量来自SIE 21的数据(分组)的分组长度。然后,分组长度测量电路23判定分组长度是否对应于PID识别出的分组类型。
具体而言,当所测量的分组长度是24比特(参考图1(a))时,分组长度测量电路23判定所接收的分组是令牌分组。当所测量的分组长度等于或大于24比特并等于或小于8216比特(参考图1(b))时,分组长度测量电路23判定所接收的分组是数据分组。当所测量的分组长度是8比特(参考图1(c))时,分组长度测量电路23判定所接收的分组是握手分组。
当所测量的分组长度与PID解码器22识别的分组类型一致时,分组长度测量电路23产生开始信号ST以启动接收分组数据的分组检查电路的处理。当所测量的分组长度与所识别的分组类型不一致时,分组长度测量电路23产生暂停信号BR,以暂停接收分组数据的分组检查电路的处理。
当接收到令牌分组时,令牌分组检查电路24执行启动事务的处理。此时,若分组长度测量电路23测量的分组长度不符合令牌分组(比特数不是24比特),则令牌分组检查电路24根据暂停信号BR暂停处理。
当接收到数据分组时,数据分组检查电路25执行接收数据的处理。此时,若分组长度测量电路23接收到的分组的长度不符合数据分组(比特数少于24比特或是8217或更大),则数据分组检查电路25根据暂停信号BR而暂停处理。
当接收到握手分组时,握手分组检查电路26执行启动事务的处理。此时,若分组长度测量电路23测量的分组长度不符合握手分组(比特数不是8比特),则握手分组检查电路26根据暂停信号BR而暂停处理。
各个端点27和28是具有原始数据存储区和传输功能的先进先出存储器(FIFO)。使用端点27和28中相关的一个来处理各个事务(如IN事务或OUT事务)。例如,使用具有发送型传输功能的端点处理IN事务(从USB设备12向USB主机11传输数据)。为各个端点27和28分配了指示FIFO特征的端点号(ENDP)。
图9是流程图,显示了由USB设备12所执行的分组识别处理。
当USB设备12接收到分组时(步骤31),PID解码器22由PID数据模式识别分组的类型(步骤32)。若该PID不是令牌分组、数据分组或握手分组中的任何一种,则USB设备12执行超时处理,或暂停数据处理(步骤33)。
在步骤32中,当PID对应于令牌分组时,分组长度测量电路23判定分组长度是否是24比特(步骤34a)。若分组长度不是24比特,则分组长度测量电路23执行超时处理(步骤33)。
若分组长度是24比特,则令牌分组检查电路24判定USB地址(ADDR)是否正确(步骤34b),以及端点号(ENDP)是否与传输类型匹配(步骤34c)。令牌分组检查电路24也检查CRC5是否正常(步骤34d)。步骤34b至34d分别等同于图4的步骤94a至94c,因此下面将不再赘述。
只有在34b至34d的各个步骤中没有检测到错误时,令牌分组检查电路24才执行处理以启动事务(步骤34e)。若在步骤34b至34d的任一步骤中检测到错误,则检查电路24执行超时处理(步骤33)。
在步骤32中当PID对应于数据分组时,分组长度测量电路23判定分组长度是否是24比特或更大(步骤35a)。当分组长度小于24比特时,分组长度测量电路23判定存在错误,并执行超时处理(步骤33)。
若分组长度是24比特或更大,则数据分组检查电路25使用CRC 16(步骤35b)检查数据字段(DATA)是否正确(步骤34b)。步骤35b等同于图4的步骤95a。若在步骤35b中检测到错误,则检查电路25执行超时处理(步骤33)。
当在步骤35b中没有检测到错误(即DATA是正确数据)时,分组长度测量电路23判定分组长度是否是8216比特或更小(步骤35c)。若分组长度是8217或更大,则分组长度测量电路23执行超时处理(步骤33)。若分组长度是8216比特或更小,则数据分组检查电路25执行接收数据的处理(步骤35d)。
在步骤32中当PID对应于握手分组时,分组长度测量电路23判定分组长度是否是8比特(步骤36a)。当分组长度不是8比特时,分组长度测量电路23执行超时处理(步骤33)。若分组长度是8比特,则握手分组检查电路26执行结束事务的处理(步骤36b)。
图10是示意性框图,显示了第一实施例的数据处理(分组识别单元)应用于USB硬盘设备41上的实例。USB硬盘设备41符合USB海量存储类仅批量模式1.0(USB Mass Storage Class Bulk Only Mode 1.0),并具有第一至第三端点42至44。各个端点42至44与硬盘控制电路45相连,硬盘控制电路45进一步与数据记录器46相连。
第一端点42(图10中的控制EP)是具有发送—接收型传输功能的FIFO。此外,第一端点42主要用于初始化设备。
第二端点43(图10中的Bulk OUT EP)是具有接收型传输功能的FIFO。此外,第二端点43用来向硬盘写入数据并传输命令。第三端点44(图10中的Bulk IN EP)是具有发送型传输功能的FIFO。此外,第三端点44用于从硬盘中读取数据以及传输命令。
USB设备(分组识别单元),或第一实施例的数据处理器,具有下述优点。
(1)USB设备(分组识别单元)12包括PID解码器22,其由PID的数据模式识别接收到的分组的类型;分组长度测量电路23,其通过测量分组的长度而判定PID解码器22的识别结果是否正确。因此,即使通过USB13传输的信号的数据值由于电缆(USB 13)内的反射或噪声而改变,也可以减少USB设备12中的错误分组判定。这防止了传输效率降低。因此,系统的总体性能不会降低。
(2)当分组长度测量电路所测量的分组长度与PID解码器识别出的分组类型不一致时,暂停与第一至第三分组检查电路24至26中相关的一个中分组的处理。因此,当发生分组的检测错误时,可以在早期检测出该错误,从而提高了传输效率。
图11是示意性框图,显示了根据本发明第二实施例的数据处理器(USB设备)51。USB 13把USB设备51连接在USB主机11上。图11显示了USB设备51中与数据转换比特错误纠正单元(此后简称为纠错单元)相关的部分。
USB设备(纠错单元)51包括SIE 21,PID解码器22,第一和第二分组检查电路52和53,转换比特切换电路54,以及多个(为简便起见仅显示了三个)端点55至57。
在第二实施例中,第一分组检查电路52是令牌分组检查电路,第二分组检查电路53是握手分组检查电路。与第一实施例的方式相同,USB设备51也具有数据分组检查电路(未显示)。
各个端点55至57是具有原始数据存储区和传输功能(接收型、发送型和发送一接收型)的FIFO。使用端点55至57中相关的一个来处理各个事务。为各个端点55至57分配了指示FIFO特征的端点号(ENDP)。
端点55至57分别包括用于存储表示相应事务是否正常完成的数据转换比特的区段(如图11中的转换比特所示)。在各个区段55a至57a中,根据事务的处理状态而存储值为“0”或“1”的数据转换比特。
转换比特切换电路54与第一和第二分组检查电路52和53以及端点55至57相连。转换比特切换电路54具有存储区段54a,其用于存储令牌分组检查电路52接收到的令牌分组的端点号(ENDP)。存储区段54a存储表示在当前处理的事务中用来传输数据的端点(即接收到传输请求的端点)的端点号(ENDP)。
当握手分组检查电路53接收到握手分组时,转换比特切换电路54改变(反转)在该事务中接收到传输请求的端点的数据转换比特。
图12是流程图,显示了USB设备(纠错单元)51执行的数据转换比特错误纠正处理(此后简称为纠错处理)。
首先,在USB主机11和USB设备51之间处理IN事务。USB主机11向USB设备51发送ACK握手分组。这种状态下,在IN事务中接收到传输请求的端点是,例如,第一端点55。
转换比特切换电路54判定握手分组检查电路53是否已经接收到ACK握手分组(步骤61)。当已经接收到ACK握手分组时,切换电路54反转存储在第一端点中的数据转换比特的值(步骤61)。例如,切换电路54把数据转换比特的值从“0”改变为“1”(步骤62)。这就结束了IN事务。
在步骤61中,当握手分组检查电路53没有接收到ACK握手分组时,第一端点55出现数据转换比特错误。这种情况下,存储在区段55a中的数据转换比特的值没有改变。因此,数据转换比特的值保持为“0”。
然后,在存在数据转换比特错误的状态下,开始USB主机11和USB设备之间的下一个事务。从USB主机11向USB设备51发送令牌分组。
当接收到令牌分组时,令牌分组检查电路52把令牌分组数据中包含的端点号(ENDP)通报给转换比特切换电路54。转换比特切换电路54把从令牌分组检查电路52接收到的端点号与前一事务中所使用的端点号进行比较(在这个实例中,端点号对应于第一端点55)。换句话说,转换比特切换电路54判定当前事务是否是对应于在前一事务中也接收到传输请求的端点55(步骤63)。
在这种状态下,如果当前事务是对发生了数据转换比特错误的第一端点55的传输请求,则USB设备51向USB主机11重新发送数据分组(步骤64)。
具体而言,当向第一端点55连续发送传输请求(IN事务)时,这表示USB主机11在异常状态下接收到来自USB设备51的数据分组。由于在前一IN事务中没有接收到数据分组,所以USB主机11再次向第一端点55请求传输数据。这种情况下,USB设备51根据数据转换比特(该实例中为“0”)再次向存在错误的第一端点55发送数据分组。
在步骤63中,若当前事务是对不同于第一端点55的端点的传输请求,则处于错误状态的第一端点55的数据转换比特的值被反转(步骤65)。
具体而言,对不同端点的传输请求表示由于某种原因USB设备51没有接收到来自USB主机11的ACK握手分组。换句话说,USB主机11在前一IN事务期间在正常状态下接收到数据分组,并发出ACK握手分组。因此,在这种情况下,USB设备51反转存在错误的第一端点55的数据转换比特值。此实例中,第一端点的区段55a中存储的数据转换比特的值从“0”变为“1”。
图13是流程图,显示了纠错处理的一个具体实例。
USB主机11启动其端点h1和USB设备51的端点d1之间的事务。具体而言,USB主机11发出IN令牌分组以请求数据传输(步骤71)。响应于IN令牌分组,USB设备51发送对应于端点d1中存储的数据转换比特值“0”的数据0分组(步骤72)。当接收到数据0分组时,USB主机11把端点h1的数据转换比特从“0”变为“1”,并向USB设备51发送ACK握手分组(步骤73)。
在该状态下,当USB设备51由于某种原因没有接收到ACK握手分组时(如图13中虚线所示),USB设备51不改变端点d1的数据转换比特的值“0”。换句话说,在端点d1中产生数据转换比特错误。
在该状态下,USB主机11启动端点h2和USB设备51的端点d2之间的下一个(第二)事务(步骤74)。这里将不详细叙述此事务。这种状态中,USB设备51判定USB主机在前一IN事务中已经发送了ACK握手分组(步骤73),并反转存在错误的端点d1的值。换句话说,端点d1的值从“0”纠正为“1”。
随后,当第二个事务正常结束时,即当USB主机11和USB设备51中的一个接收到来自USB主机和USB设备51中另一个的ACK握手分组时(步骤75),端点h2和端点d2的数据转换比特的值分别由“0”变为“1”。
然后,USB主机11启动端点h1和USB设备51的端点d1之间的下一个(第三个)事务。具体而言,USB主机11发出IN令牌分组以请求数据传输(步骤76)。响应于IN令牌分组,USB设备51根据端点d1中存储的数据转换比特的值“1”而向USB主机11发送数据1分组(步骤77)。这种状态下,USB设备51在步骤74中已经纠正了端点d1的数据转换比特错误。因此,在第三IN事务中USB主机11接收到了其向USB设备51请求的数据,即数据1分组。
当接收到数据1分组时,USB主机11向USB设备51发送握手分组(步骤78),并把端点h1的数据转换比特的值从“1”改成“0”。当接收到ACK握手分组时,USB设备51把端点d1的数据转换比特的值从“1”改为“0”。
图14是示意性框图,显示了应用于USB硬盘设备81上的第二实施例的数据处理器(纠错单元)的实例。
USB硬盘设备81符合USB海量存储类仅批量模式1.0并具有第一至第三端点82至84。端点82至84分别具有用于存储数据转换比特的区段82a至84a。各个端点82至84都连接在硬盘控制电路85上,硬盘控制电路85又与数据记录器86连接。
第一端点82(图14中的控制EP)是具有发送—接收型传输功能的FIFO。此外,第一端点82主要用于初始化设备。
第二端点83(图14中的Bulk OUT EP)是具有接收型传输功能的FIFO。此外,第二端点83用于向硬盘写入数据并传输命令。第三端点84(图14中的Bulk IN EP)是具有发送型传输功能的FIFO。此外,第三端点84用于从硬盘中读取数据并传输命令。
该USB设备(纠错单元),或第二实施例的数据处理器,具有下述优点。
(1)USB设备(纠错单元)51具有转换比特切换电路54。当接收到预定事务的ACK握手分组时,转换比特切换电路54反转在预定事务中接收到传输请求的端点的数据转换比特值。当令牌分组检查电路52接收到令牌分组时,若在当前事务中接收到传输请求的端点不同于在前一事务中接收到传输请求的端点,则转换比特切换电路54反转在前一事务中接收到传输请求的端点的数据转换比特,以纠正数据转换比特错误。因此,即使发生了数据转换比特错误,也能在早期检测并纠正该错误。这防止了传输效率的降低。所以,系统的总体性能不会下降。
(2)在早期检测并纠正数据转换比特错误。这可防止处理不必要的事务,使得能够快速响应来自USB主机的传输请求。因此,传输效率提高。
对于本领域的技术人员,很显然,在不脱离本发明的精神或范围的情况下,本发明可以实施为多种其它的具体形式。特别地,应该理解本发明可实施为下述形式。
第一实施例的USB设备12可具有第二实施例的纠错单元。此外,第二实施例的USB设备可具有第一实施例的分组识别单元。
在第一实施例中,可在执行步骤35a时或执行步骤35a后判定数据分组的分组长度是否是8216比特或更小。
在第一实施例中,分组识别单元可应用于MO、DVD、CD等的ATA/ATAPI设备,或个人计算机的外围设备,如打印机或扫描仪。
所述的示例和实施例是示例性的,并非限制性的,本发明并不限于这里给出的细节,而是可以在所附权利要求及其等同物的范围内进行各种修改。
权利要求
1.一种数据处理器,用于通过接口以包含分组ID的分组与主计算机进行往来数据通讯,该数据处理器的特征在于分组识别电路(22),用于从主计算机接收包含分组ID的分组,并且由分组ID识别分组的类型;以及分组长度测量电路(23),其连接在分组识别电路上,用于测量从主计算机接收到的分组的长度,并判定所测量的分组长度是否符合分组识别电路所识别的分组类型。
2.根据权利要求1所述的数据处理器,其特征在于,当所测量的分组长度不符合所述分组类型时,分组长度测量电路生成暂停信号以暂停从数据处理器向主计算机的数据传输。
3.根据权利要求1所述的数据处理器,其特征在于,所述的接口包括USB接口。
4.一种数据处理器,用于通过接口与主计算机进行往来数据通讯,该数据处理器的特征在于多个端点(55-57),各处理与来自主计算机的数据传输请求相应的事务,其中各个端点存储有数据转换比特,每当接收到来自主计算机的预定分组时反转所述数据转换比特的值;转换比特切换电路(54),其与各个端点相连,判定在先前事务中接收到传输请求的第一端点与在当前事务中接收到传输请求的第二端点是否相同,其中,当第一端点与第二端点不同时,转换比特切换电路反转存储在第一个端点内的数据转换比特的值。
5.根据权利要求4所述的数据处理器,其特征在于各个端点都具有端点号,所述的预定分组包含所述的端点号;以及转换比特切换电路包括端点存储区段(54a),用于存储包含在从主计算机发送来的预定分组内的端点号,并通过比较储存在所述存储区段中的第一端点的端点号与第二端点的端点号来判定第一和第二端点是否相同。
6.根据权利要求5所述的数据处理器,其特征在于,所述的接口包括USB接口,所述的端点号包含在令牌分组内。
7.根据权利要求4所述的数据处理器,其特征在于,当从主计算机接收到握手分组时,转换比特切换电路反转第一端点的数据转换比特值。
8.根据权利要求4所述的数据处理器,其特征在于,所述的接口包括USB接口。
9.一种数据处理器,用于通过预定接口以包含分组ID的分组与主计算机进行往来数据通讯,该数据处理器的特征在于分组识别电路(22),其用于从主计算机接收包含分组ID的分组,并且根据分组ID来识别分组的类型;分组长度测量电路(23),其与分组识别电路相连,用于测量从主计算机接收到的分组的分组长度,并且判定所测量的分组长度是否符合分组识别电路识别的分组类型;多个端点(55-57),各处理与来自主计算机的数据传输请求相应的事务,其中,各个端点存储有数据转换比特,每当接收到来自主计算机的预定分组时反转所述数据转换比特的值;以及转换比特切换电路(54),其与各端点相连,判定在先前事务中接收到传输请求的第一端点和在当前事务中接收到传输请求的第二端点是否相同,其中,当第一端点与第二端点不同时,转换比特切换电路反转存储在第一端点内的数据转换比特的值。
10.根据权利要求9所述的数据处理器,其特征在于,所述的接口包括USB接口。
11.一种在通过接口与主计算机进行往来数据通讯的数据处理器中识别包含预定分组长度和分组ID的分组的类型的方法,该方法的特征在于以下步骤通过接口从主计算机接收分组;根据分组ID来识别接收到的分组的类型;测量所接收到的分组的分组长度;以及判定测量的分组长度与根据分组ID识别的分组类型是否相符。
12.根据权利要求11所述的方法,其特征在于当测量的分组长度与根据分组ID识别的分组类型不相符时,暂停与接收到的分组相关的数据传输。
13.根据权利要求11所述的方法,其特征在于,所述的接口包括USB接口。
14.一种在通过接口与主计算机进行往来数据通讯的数据处理器中纠正错误的方法,其中,该数据处理器包括多个端点,其分别处理与来自主计算机的数据传输请求相应的事务,并且各个端点存储有数据转换比特,每当从主计算机接收到正常接收确认时反转数据转换比特的值,所述的错误是数据转换比特错误,是当数据处理器没有接收到来自主计算机的正常接收确认时,数据转换比特未被反转,该方法的特征在于以下步骤判定所述的多个端点中在先前事务中接收到传输请求的第一端点和在当前事务中接收到传输请求的第二端点是否相同;以及当第一端点和第二端点不同时,反转存储在第一端点中的数据转换比特的值。
15.根据权利要求14所述的方法,其特征在于当第一端点和第二端点相同时,根据存储在第一端点中的数据转换比特的值重新传输数据。
16.根据权利要求14所述的方法,其特征在于,各个端点具有端点号,并且所述的判定包括通过比较第一端点的端点号与第二端点的端点号来判定第一和第二端点是否相同。
17.根据权利要求14所述的方法,其特征在于,所述的接口包括USB接口。
18.一种对通过USB接口与主计算机进行往来数据通讯的数据处理器进行控制的方法,其中,该数据处理器包括多个端点,各端点分别处理与来自主计算机的数据传输请求相应的事务,并且各个端点存储有数据转换比特,每当从主计算机接收到握手分组时反转数据转换比特的值,该方法的特征在于以下步骤判定所述的多个端点中在先前事务中接收到传输请求的第一端点和在当前事务中接收到传输请求的第二端点是否相同;以及当第一端点和第二端点不同时,反转存储在第一端点中的数据转换比特的值。
19.根据权利要求18所述的方法,其特征在于当第一端点和第二端点相同时,根据存储在第一端点中的数据转换比特的值重新传输数据。
20.根据权利要求18所述的方法,其特征在于,各个端点具有端点号,并且所述的判定包括通过比较第一端点的端点号与第二端点的端点号来判定第一和第二端点是否相同。
全文摘要
一种提高传输效率的数据处理器。该数据处理器通过接口(13)以含有分组ID的分组与主计算机(11)进行往来数据通讯。该数据处理器包含分组识别电路(22),用于从主计算机接收含有分组工D的分组,并由分组ID识别分组的类型。分组长度测量电路(23)测量从主计算机接收到的分组的分组长度,并判定所测量的分组长度是否符合由分组识别电路识别的分组类型。
文档编号H04L1/00GK1487431SQ0315596
公开日2004年4月7日 申请日期2003年8月27日 优先权日2002年8月27日
发明者青嶋一浩, 青 一浩 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1