用于测试循环冗余码算法的测试数据模式的制作方法

文档序号:7508942阅读:143来源:国知局
专利名称:用于测试循环冗余码算法的测试数据模式的制作方法
技术领域
本发明一般涉及循环冗余码(CRC)错误检测技术,更具体而言,涉及用于测试CRC算法的测试数据模式。
背景技术
错误检测技术(例如基于循环冗余码(CRC)的技术)的目的是,使得通过噪声信道传送的消息的接收器能够确定消息是否已损坏。为实现此目的,发送器产生作为消息的函数的值(称为帧校验序列或FCS),并且通常将FCS附加于消息上。然后接收器可以使用用来产生所接收消息的FCS的相同函数来察看该消息是否被正确接收。
利用CRC算法,消息位被视为n位多项式的二进制系数。通常将消息多项式乘以xm,其中m是CRC多项式(即,“生成多项式”)的幂次。相乘的结果除以CRC多项式。大多数实现采用同时执行乘以xm和除以CRC多项式的方法,而不是顺序进行这些操作。这些操作的结果是FCS,FCS通常被求补并附加到消息上。在某些情况下,FCS不被求补,并且偶尔FCS被置于别的位置,例如被置于头部字段中。
接收器将具有附加FCS的所接收消息除以CRC多项式。假定FCS在被附加到消息上之前已被求补,并且在传送过程中未发生错误,则在接收器处相除的结果将是固定值,该值等于2m幂次多项式(对于幂次较高的m项,系数为1,对于幂次较低的m项,系数为0)除以CRC多项式的结果。该固定值有时被称为“魔数(magic number)”,并且取决于多项式。如果相除的结果不等于魔数,则这指示发生了错误。
规定了大多数CRC算法的方法涉及描述CRC多项式、CRC计算的初始和终了状态、输入(数据流)在处理之前是否被求补、以及结果(CRC)在被附加到由CRC保护的数据流之前是否被求补。此外,算法可以指示字节的交换以适应Little Endian(低字节优先)和Big Endian(高字节优先)处理器。通常提供样本测试模式(pattern)以验证CRC算法实现是否正确。
软件或硬件CRC算法的设计者通常面临下述问题,即,当CRC算法产生不正确的结果时,用以确定算法在过程的哪个步骤出现故障的信息很少。样本测试模式通常帮助不大,这是因为该模式仅告诉算法实现者当整个过程完成时预期的结果,并且该模式没有提供有关CRC计算的中间状态的任何信息。

发明内容
本发明的一种形式提供了一种产生用于测试CRC算法的测试数据模式的方法。该CRC算法被配置成基于生成多项式产生CRC值。该方法包括标识出中间CRC值的期望模式。该方法包括基于中间CRC值的期望模式和生成多项式产生测试数据模式,其中测试数据模式被配置成使CRC算法产生中间CRC值的期望模式。


图1是被分割成子消息的消息以及对应于子消息之一的复合子消息的图形表示。
图2是图示了根据本发明一个实施例用于产生测试数据模式和用于测试CRC算法的系统的框图。
图3是图示了根据本发明一个实施例的图2中所示的CRC算法操作的框图。
图4是图示了根据本发明一个实施例的图2中所示的测试数据生成器操作的框图。
图5是图示了根据本发明一个实施例用于测试CRC算法的方法的流程图。
具体实施例方式
在下面的详细说明中,参考了附图,附图构成了说明的一部分,并且通过图示示出了可以实施本发明的具体实施例。还应该理解,可以利用其它实施例,并且可以进行结构或者逻辑改变而不背离本发明的范围。因而,下面的详细描述不应理解为限制的意义,并且本发明的范围由权利要求定义。
图1图示了多位二进制数据消息10。在诸如某些因特网协议的一些通信协议中,诸如数据消息10的数据消息可以被分组或者分割成子消息进行传送。例如,iSCSI数据消息可以用其CRC FCS来保护并且经由多个IP分组(可表示为子消息)来传送。消息10可以任意分割成表示为子消息12、14和16的位块。消息10可以表达为子消息的模2(MOD-2)加和(summation)。对于此加和,用零代替来自其它子消息的数据而修改每个子消息。例如,考虑子消息14。为了用于MOD-2加和以形成消息10,子消息14被建模为复合子消息18。如图可见,复合子消息18具有用于代替来自子消息12和16的子消息数据的多个零20。当照这样建模时,每个复合子消息将具有和初始消息10相同的长度(位数)。
因为CRC运算是线性转换,所以消息10的CRC是复合子消息的CRC之和。如本文所采用的,子消息或者复合子消息的CRC将表示为递增CRC或者中间CRC值。
如本领域普通技术人员将理解的那样,CRC运算是利用无进位的二进制算术MOD-2进行的。利用这样的算术,加法和减法都等同于逻辑异或(XOR)操作,乘法等同于逻辑AND操作。从而,符号“+”和“-”指示逻辑XOR。
图2的框示了根据本发明一个实施例用于产生测试数据模式和用于测试CRC算法的系统200。在本发明的一种形式中,系统200是计算机或类似设备。系统200包含处理器202、输入/输出(I/O)接口226和存储器208,所有这些部件都经由通信链路228可通信地耦合到一起。系统200经由I/O接口226传送和接收经CRC保护的数据消息。
存储器208可以既包含易失性存储器也包含非易失性存储器组件。易失性组件是一旦掉电就不保持数据值的组件。非易失性组件是掉电时保持数据的组件。这样,存储器208可以包含例如随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动、经由关联的软盘驱动器存取的软盘、经由光盘驱动器存取的光盘、经由适当的磁带驱动器存取的磁带、和/或其它存储器组件、或者这些存储器组件任意两个或者多个的组合。此外,RAM可以包含例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或者磁随机存取存储器(MRAM)以及其它这样的设备。ROM可以包括例如可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EPROM)或者其它类似的存储器设备。
CRC算法210、测试数据消息214、测试数据生成器220和输入CRC模式222存储在存储器208中。测试数据消息214包含多个8位数据字节216,其中每两个连续数据字节216的集合构成数据字或者子消息218。在一个实施例中,测试数据消息214包含1024个16位字218。处理器202包含存储当前CRC值206的处理器寄存器(CRC寄存器)204。在一个实施例中,CRC寄存器204是存储16位CRC值206的16位寄存器。处理器202执行CRC算法210以处理诸如测试数据消息214的数据消息,并且基于CRC算法210的CRC生成多项式212产生对应的CRC。在一个实施例中,数据消息由CRC算法210以每次N个字节的方式处理,其中N是整数,并且每N字节周期后更新存储在寄存器204中的中间CRC值206。在一个实施例中,N等于2。
在一个实施例中,测试数据消息214是与诸如CRC算法210的具体CRC算法相对应的“魔(magic)”测试数据模式。在一个实施例中,测试数据消息214用于测试CRC算法210,这可以用硬件或者软件来实现。测试数据消息214的目的是方便验证算法210是否如设计者想要的那样工作。在本发明的一种形式中,测试数据消息214允许CRC算法210的实现者精确地确定过程是在哪里(例如,哪个时钟周期)出现故障的,这使得调试算法210的过程更容易。在本发明的一种形式中,处理器202执行测试数据生成器220,以基于期望的输入CRC模式222和CRC生成多项式212产生测试数据消息214。在一个实施例中,输入CRC模式222包含在常规模式下的多个中间CRC值206。
在本发明的一种形式中,当测试数据消息214被CRC算法210处理时,测试数据消息214引发下述中间CRC值的产生,对于被处理的数据消息214的每个字节,该中间CRC值增加1(在加载初始值并且数据流214的处理开始之后)。在此实施例中,中间CRC值可以被视为已由CRC算法210处理的数据字节数目的计数。在另一实施例中,测试数据消息214引发下述中间CRC值的产生,对于被CRC算法210处理的数据消息214的每个字节,该中间CRC值减少1。在另一实施例中,测试数据消息214引发下述中间CRC值的产生,对于被CRC算法210处理的数据消息214的每个字节,该中间CRC值保持恒定不变。
在另一实施例中,测试数据消息214引发下述中间CRC值的产生,对于被CRC算法210处理的数据消息214的每个字节,中间CRC值移动一个位(或者多个位)。例如,在一个实施例中,测试数据消息214引发产生第一中间CRC值“00000001”、第二中间CRC值“00000010”、第三中间CRC值“00000100”等等。由此示例可见,每次数据消息214的新字节被CRC算法210处理时,中间CRC值的“1”就向左移动一位。中间CRC值的这种模式被称为“步行(walking)1”模式或者移位模式。
在另一实施例中,测试数据消息214引发下述中间CRC值的产生,对于被CRC算法210处理的数据消息214的每个字节,中间CRC值在两个值之间切换。例如,在一个实施例中,测试数据消息214引发产生第一中间CRC值“0xAAAA”、第二中间CRC值“0x5555”、第三中间CRC值“0xAAAA”等。由此示例可见,对于被CRC算法210处理的数据消息214的每个字节,中间CRC值在“0xAAAA”和“0x5555”之间切换。中间CRC值的这种模式被称为切换值模式(toggling value pattern)。
在本发明的另一种形式中,CRC算法210以每次两个字节的方式处理数据消息,并且测试数据消息214引发下述中间CRC值的产生,对于被CRC算法210处理的数据消息214的每两个8位字节216,中间CRC值增加(或者减少)2。在一个实施例中,测试数据生成器220被配置成产生将生成中间CRC值的任何期望模式的测试数据消息214。下面参考图3和图4进一步详细描述CRC算法210和测试数据生成器220。
本领域普通技术人员应该了解,本发明的组件(包括系统200的组件)可以驻留于一个或多个计算机可读介质上的软件中。本文使用的术语“计算机可读介质”被定义为包含任何易失性或非易失性存储器类型,例如软盘、硬盘、CD-ROM、闪存、只读存储器(ROM)以及随机存取存储器。
图3的框示了根据本发明一个实施例的图2中所示的CRC算法210的操作。如图3所示,CRC算法210接收当前中间CRC值(crc[n])302和当前数据值(data[n])304,并且基于值302和304,以及CRC生成多项式212(图2)产生下一中间CRC值(crc[n+1])306,其中“n”是整数,其被用作标识CRC值和数据值的序号。在一个实施例中,CRC值302和306是16位中间CRC值,这些中间CRC值在由CRC算法210运算出之后存储在CRC寄存器204(图2)中。在一个实施例中,当前数据值304是来自诸如测试数据消息214(图2)的正被处理的数据消息的16位数据值。在进行计算之后,由CRC算法210产生的下一CRC值306被存储在CRC寄存器204中,并且对于CRC运算过程的下一迭代或者周期(cycle)而言其成为当前CRC值302。这样,在CRC运算过程的每次迭代期间,用新(更新)的CRC值306更新CRC寄存器204中的CRC值。
由CRC算法210生成的中间CRC值306的模式将基于CRC算法210的CRC多项式212以及输入数据值304的模式而变化。用于输入数据值304的给定集合的CRC值306倾向于具有随机的表现形式。即使向CRC算法210提供输入数据值304的规则模式,对应的CRC值306也将具有随机的表现形式。但是,在本发明的一种形式中,系统200(图2)被配置成产生下述测试数据消息214,所述测试数据消息214在一个实施例中是表面上看来随机的输入数据流,在输入数据流214中的每个数据项304被CRC算法210处理时,该随机输入数据流产生CRC值306的可预测的规则序列。
图4的框示了根据本发明一个实施例的图2中所示的测试数据生成器220的操作。测试数据生成器220包含期望的CRC模式生成器404和魔数生成器410。CRC模式生成器404接收当前中间CRC值(crc[n])402,并且产生下一中间CRC值(crc[n+1])406,其中n是整数,其用作标识CRC值和数据值的序号。在一个实施例中,CRC模式生成器404产生下述中间CRC值406,所述中间CRC值406在数据产生过程的每个迭代期间增加值2。在其它实施例中,CRC模式生成器404被配置成产生中间CRC值406的其它模式。CRC模式生成器404产生的中间CRC值模式被称作输入CRC模式222(图2)。在一个实施例中,CRC值402和406是16位中间CRC值。
数据生成器410接收下一CRC值406和当前CRC值402,并且基于值402和406,以及CRC生成多项式212产生当前数据值(data[n])412。在一个实施例中,当前数据值412是两字节(例如,16位)数据值。对于数据产生过程的每个后继迭代,由CRC模式生成器404运算出的下一CRC值406变为当前CRC值402。由数据生成器410所产生的数据值412的集合被称为测试数据消息214(图2)。
在一个实施例中,数据生成器410本质上是逆向CRC引擎(inverseCRC engine),其基于CRC生成多项式212和输入CRC模式222产生数据值412,如将进一步详细描述的那样。对于在每次迭代期间CRC值406增加2的情况,数据生成器410在每次迭代期间运算2字节数据值412,其在被CRC算法210处理时得到和先前CRC值402增加2同样的新CRC值406。在一个实施例中,为正被运算的数据值多项式412的未知系数分配变量名,并且在此数据值多项式412上运行CRC计算。此计算的结果是其系数是以分配的变量名表达的16位多项式。让每个这样的系数和期望多项式的对应系数相等,就得到了具有16个未知数的16模方程。在一个实施例中,数据生成器410包括传统数学计算软件以求解这16模方程从而在每个迭代期间确定适当数据412。
在另一实施例中,数据生成器410被配置成基于线性矩阵方程产生数据值412。CRC计算是可由线性矩阵方程表示的线性操作,该线性矩阵方程将CRC 406的下一值描述为中间CRC 402的当前值和输入数据412的当前值的函数。由于CRC值222的期望级数(progression)或模式已知,所以可求解线性矩阵方程来得到输入数据412。线性矩阵方程被称为“下一状态方程”,因为线性矩阵方程将CRC 406的下一状态显示为CRC 402和输入数据412的当前状态的函数。在接下来对下一状态方程的描述中将假定中间CRC值402和406是16位,并且以一次处理16位的方式处理数据消息(例如,测试数据消息214),其中数据消息的每个16位段用数据值412表示。在每个周期处理16数据位的情况下,16位CRC的下一状态方程如下面方程I中所示方程Ic(n+1)=A c(n)+B d(n)其中c(n+1)=下一状态CRC向量(具有16个元素的列向量),代表中间CRC值406;c(n)=当前状态CRC向量(具有16个元素的列向量),代表中间CRC值402;d(n)=当前状态数据向量(具有16个元素的列向量),代表数据值412;A=16×16的常数矩阵,元素为1和0,这取决于所使用的CRC生成多项式;以及B=16×16的常数矩阵,元素为1和0,这取决于所使用的CRC生成多项式。
方程I中的运算是基于MOD-2数学的。矩阵(即,矩阵A和B)中和向量(即,向量c和d)中的元素为0或1。如方程I所指示的,以当前状态CRC向量c(n)来乘常数矩阵A,并且以当前状态数据向量d(n)来乘常数矩阵B。这两个矩阵乘法的每个都得到新向量。进行这两个新向量的XOR操作,此XOR操作的结果是下一状态CRC向量c(n+1)。
上面方程I中给出的下一状态方程可以被处理成各种形式,这取决于每个周期所处理的数据位数和所采用的CRC宽度。对于每个周期所处理的数据位数等于CRC位数的情况,由于CRC运算的特性,在下一状态方程(方程I)中矩阵A等于矩阵B。从而,对于这种情况,方程I可以写成下面方程II所给出的形式方程IIc(n+1)=A(c(n)+d(n))如方程II所示,以矩阵A乘c(n)和d(n),然后重新排列各项顺序,得到下面的方程III方程IIIAd(n)=c(n+1)-Ac(n)以矩阵A的逆矩阵(即,Inverse[A])乘方程III的两端,得到下面的方程IV方程IVd(n)=Inverse[A]c(n+1)-c(n)由于方程IV中的算术是MOD-2形式的,其中减法和加法相同并且两个操作都用XOR实现,所以方程IV可以写成下面的方程V给出的形式方程Vd(n)=Inverse[A]c(n+1)XORc(n)方程V示出了如何从当前CRC值402c(n)和下一CRC值406c(n+1),计算数据412的当前值d(n)。在一个实施例中,数据生成器410被配置成在数据产生过程的每个迭代期间基于方程V来产生数据值412。
应该注意,方程V中给出的矩阵方程基本上是具有16个未知数(即,16个数据位412)的16个线性方程的简化表示法,因而方程组既没有过约束也没有欠约束,从而具有唯一解。对于数据宽度和CRC宽度相同的情况,通过提供当前CRC状态c(n),以及下一期望CRC状态c(n+1),可以基于方程V计算得到数据d(n),d(n)将引发CRC状态改变。如果每个周期处理不止16个数据位d(n),则可以找到引发同样CRC状态改变的多个数据模式(即,方程组欠约束从而具有多个解)。如果每个周期处理少于16个数据位d(n),则不能保证将找到引发期望CRC状态改变的数据模式(即,方程组过约束从而可能无解)。
图5是图示了根据本发明一个实施例用于测试CRC算法的方法500的流程图。在一个实施例中,系统200(图2)被配置成执行方法500以测试CRC算法210。在502,标识出中间CRC值的期望集合或模式222。在一个实施例中,CRC值的期望模式222由CRC模式生成器404(图4)产生。在504,基于在502标识出的中间CRC值的期望集合222以及用于正被测试的CRC算法210的生成多项式212,由数据生成器410(图4)运算得到测试数据值集合。在504运算得到的测试数据值集合被称为测试数据消息214。测试数据消息214中的每个测试数据值(例如,每16位字218)和期望CRC模式222中的中间CRC值之一相对应。在506,在504计算得到的测试数据值集合由CRC算法210处理以产生中间CRC值的测试集合。
在508,将在506产生的中间CRC值的测试集合和在502标识出的中间CRC值的期望模式相比较。508处的比较提供了关于CRC算法210是否正常运行的指示。508处的比较可以用软件或者简单的硬件比较电路来执行。如果CRC算法210正常运行,则在506处产生的CRC值的测试集合中的每个CRC值将和在502处标识出的CRC值的期望集合中对应的CRC值相等。如果CRC算法210没有正常运行(例如,CRC值的测试集合中的一个或者多个CRC值和CRC值的期望集合222中的对应CRC值不相等),则很容易标识出发生问题的一个周期或者多个周期。在进入到测试数据消息214的处理的任何给定数目的时钟周期之后,该时间点处正确的中间CRC值就已知了。如果实际的中间CRC值和此时间点的期望CRC值不匹配,侧这指示发生了错误。
根据一个实施例,本发明使实现CRC算法的过程更容易,这是因为本发明使人类观察者或者自动化过程可以在每个中间步骤察看CRC产生过程的结果,从而确定该过程在哪个步骤发生故障。
本发明的实施例还可以用作CRC硬件的内置制造测试以确定硬件是否如设计那样运行。例如,CRC模式生成器404(图4)可以作为硬件自测功能的一部分而在硬件中实现。用于产生递增CRC模式、递减CRC模式、移位CRC模式、切换值CRC模式或者其它类似模式的硬件非常小且有效率。例如,CRC模式生成器404可以用简单的计数器实现以产生递增CRC模式,或者可以用移位寄存器实现以产生移位CRC模式。利用简单的比较电路,可以将由CRC模式生成器硬件404提供的CRC模式和由CRC硬件基于所接收的测试数据模式214(图2)产生的CRC值相比较,以确定CRC硬件是否正常运行。很容易确定发生故障的确切周期。测试数据模式214可以从外部通过由CRC硬件使用的普通数据路径被提供给CRC硬件,并且可以以传统方式选择测试模式。
相反,为了在不使用产生常规CRC模式的CRC模式生成器404的条件下实现这样的内置自测功能,将需要通过单独的数据路径(而不是普通数据路径)将参考CRC模式提供给硬件,或者需要将参考CRC模式存储在本地存储设备(例如,ROM)中,这使得设计大大复杂化。
本发明的实施例还提供了胜过用于规定和测试CRC算法的现有技术的其它优点。本发明的一种形式使用规则的CRC模式222(例如,递增、递减、常数或者其它模式),该规则的CRC模式222是在CRC算法210操作之前或者同步(in lock step)产生的,从而可以在过程的每个步骤或者周期处直接比较CRC值。即,计算测试数据模式214的测试数据生成器220可以和CRC算法210并行运行,并且他们的结果在过程的每个步骤处进行比较,而不是仅在过程结束时才进行比较。
本发明的一个实施例还可以用于对当前用来规定CRC算法的方法进行增强,这是通过有效地为同样的算法提供独立规范实现的。该替代的规范很容易实现,并且可以和实际算法同步地进行仿真,以便在每个时钟周期提供校验。本发明的一种形式使得规定CRC算法的过程不那么含糊,这是因为该算法是用两个独立装置有效指定的,并且两个装置的结果在过程的每个阶段都是已知的。
此外,当对已被分割成几个子消息的消息的CRC进行计算时,有时需要通过下述操作而恢复计算,即重新加载由处理在前的子消息计算得到的上一CRC值,随后继续进行当前的子消息。在这种情况下,本发明的一个实施例使得没有必要验证当前CRC的值是否等于迄今为止所处理的字节数目。
虽然本文已描述和说明了具体实施例,但是本领域普通技术人员将意识到各种替代和/或等价实现可用来替代所示出和描述的具体实施例,而不背离本发明的范围。本申请意图覆盖本文所讨论的具体实施例的任何改动和变化。因而,本发明仅由权利要求及其等价物来限制。
权利要求
1.一种产生用于测试循环冗余码算法的测试数据模式的方法,所述循环冗余码算法被配置成基于生成多项式产生循环冗余码值,所述方法包括标识出中间循环冗余码值的期望模式;以及基于中间循环冗余码值的所述期望模式和所述生成多项式来产生测试数据模式,其中所述测试数据模式被配置成引发所述循环冗余码算法来产生中间循环冗余码值的所述期望模式。
2.如权利要求1所述的方法,其中中间循环冗余码值的所述期望模式是递增模式,其中所述模式中的所述中间循环冗余码值的连续值相差固定值。
3.如权利要求2所述的方法,其中所述固定值和所述循环冗余码算法每个周期所处理的字节数目相同。
4.如权利要求1所述的方法,其中中间循环冗余码值的所述期望模式是递减模式,其中所述模式中的所述中间循环冗余码值的连续值相差固定值。
5.如权利要求4所述的方法,其中所述固定值和所述循环冗余码算法每个周期所处理的字节数目相同。
6.如权利要求1所述的方法,其中中间循环冗余码值的所述期望模式是常数模式,其中所述模式中的所述中间循环冗余码值具有相同值。
7.如权利要求1所述的方法,其中中间循环冗余码值的所述期望模式是移位模式,其中所述模式中的所述中间循环冗余码值的连续值中的位移动至少一位的位置。
8.如权利要求所述1的方法,其中中间循环冗余码值的所述期望模式是值切换模式,其中所述模式中的所述中间循环冗余码值在两个值之间来回切换。
9.如权利要求1所述的方法,其中所述测试数据模式包含多个测试数据值,并且其中产生测试数据模式的步骤包括(i)计算代表所述生成多项式的矩阵的逆矩阵;以及(ii)将所述矩阵的逆矩阵乘以第一向量和第二向量的异或结果,所述第一向量代表所述中间循环冗余码值的当前值,所述第二向量代表所述中间循环冗余码值的下一后继值,其中所述相乘的结果提供所述测试数据值中的一个测试数据值。
10.如权利要求9所述的方法,还包括对于所述多个测试数据值的每个重复步骤(ii)。
11.如权利要求1所述的方法,其中所述循环冗余码算法每个周期处理所述测试数据模式的N个字节,其中N是整数,并且其中所述中间循环冗余码值的每个具有N个字节。
12.如权利要求1所述的方法,其中所述测试数据模式包含多个测试数据值,所述测试数据值的每个对应于所述中间循环冗余码值之一,并且其中所述测试数据值的每个是基于所述中间循环冗余码值的对应值以及所述中间循环冗余码值的下一后继值而被产生的。
13.一种测试循环冗余码算法的方法,所述循环冗余码算法被配置成处理数据消息并且基于生成多项式产生对应的中间循环冗余码值,所述方法包括产生中间循环冗余码值的期望集合;基于中间循环冗余码值的所述期望集合和所述生成多项式产生测试数据值的集合;利用所述循环冗余码算法处理测试数据值的所述集合,由此产生中间循环冗余码值的测试集合;以及将中间循环冗余码值的所述测试集合和中间循环冗余码值的所述期望集合相比较。
14.如权利要求13所述的方法,其中中间循环冗余码值的所述期望集合是递增模式和递减模式之一,其中所述中间循环冗余码值的连续值相差固定值。
15.如权利要求13所述的方法,其中所述期望集合中的所述中间循环冗余码值具有相同值。
16.如权利要求13所述的方法,其中所述期望集合中的所述中间循环冗余码值具有移位模式,其中所述期望集合中的所述中间循环冗余码值的连续值中的位移动至少一位的位置。
17.如权利要求13所述的方法,其中所述期望集合中的所述中间循环冗余码值在两个值之间切换。
18.如权利要求13所述的方法,其中所述循环冗余码算法是以循环冗余码硬件实现的,并且其中产生期望集合并且比较所述测试集合的步骤是利用所述循环冗余码硬件中的测试硬件执行的。
19.一种测试循环冗余码算法的系统,所述循环冗余码算法被配置成基于生成多项式产生循环冗余码值,所述系统包括至少一个存储器,用于存储测试数据消息和当前循环冗余码值,所述测试数据消息是基于循环冗余码值的期望模式和所述生成多项式而计算的;以及处理器,用于以每个周期N个字节的方式处理所述测试数据消息,其中N是整数,所述处理被配置成在每个周期期间产生更新后的当前循环冗余码值;以及其中对所述更新后的当前循环冗余码值和循环冗余码值的所述期望模式的比较提供了对所述循环冗余码算法是否正常运行的指示。
20.如权利要求19所述的系统,其中循环冗余码值的所述期望模式是递增模式、递减模式、常数模式、移位模式和值切换模式之一。
全文摘要
一种产生用于测试CRC算法的测试数据模式的方法,该CRC算法被配置成基于生成多项式产生CRC值,该方法包括标识出中间CRC值的期望模式。该方法包括基于中间CRC值的期望模式和生成多项式产生测试数据模式,其中测试数据模式被配置成引发CRC算法来产生中间CRC值的期望模式。
文档编号H03M13/00GK1750411SQ20051006936
公开日2006年3月22日 申请日期2005年5月13日 优先权日2004年9月13日
发明者维森特·V·卡万纳, 杰弗里·R·墨菲, 迪伦·杰克逊 申请人:安捷伦科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1