一种产生用于测试CRC算法的测试数据模式的方法,该CRC算法被配置成基于生成多项式产生CRC值,该方法包括标识出中间CRC值的期望模式。该方法包括基于中间CRC值的期望模式和生成多项式产生测试数据模式,其中测试数据模式被配置成引发CRC算法来产生中间CRC值的期望模式。
【技术实现步骤摘要】
本专利技术一般涉及循环冗余码(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,以基于本文档来自技高网...
【技术保护点】
一种产生用于测试循环冗余码算法的测试数据模式的方法,所述循环冗余码算法被配置成基于生成多项式产生循环冗余码值,所述方法包括: 标识出中间循环冗余码值的期望模式;以及 基于中间循环冗余码值的所述期望模式和所述生成多项式来产生测试数据模式,其中所述测试数据模式被配置成引发所述循环冗余码算法来产生中间循环冗余码值的所述期望模式。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:维森特V卡万纳,杰弗里R墨菲,迪伦杰克逊,
申请(专利权)人:安捷伦科技有限公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。