校验方法及校验装置的制作方法

文档序号:7864255阅读:182来源:国知局
专利名称:校验方法及校验装置的制作方法
技术领域
本发明涉及数据处理技术领域,特别是涉及一种校验方法及校验装置。
背景技术
CRC (Cyclic Redundancy Check,循环冗余校验)技术广泛应用于数据通信领域。CRC可以通过软件查表或者硬件实现。对高速数据进行CRC,一般通过硬件实现。 现有技术中,通过硬件对位宽为多个字节的并行数据进行CRC时,需要多个CRC电路。举例来说,对于位宽为4个字节的并行数据进行CRC,需要I个字节对应的CRC电路、2个字节对应的CRC电路、3个字节对应的CRC电路以及4个字节对应的CRC电路。现有技术对位宽为多个字节的并行数据进行CRC需要的硬件资源较多。

发明内容
本发明实施例中提供了一种CRC校验方法及装置,能够减少所需的硬件资源。为了解决上述技术问题,本发明实施例公开了如下技术方案第一方面,提供一种校验方法,包括接收并行数据,所述并行数据的字节数为X,所述并行数据的位宽为Y个字节,X为正整数,Y为正整数;采用CRC电路对所述并行数据进行运算,获得第一 CRC值;比较所述第一 CRC值与第二 CRC值是否相同,所述第二 CRC值为对第一数据执行CRC获得的CRC值,所述第一数据为在第二数据的尾部添加M个字节的数据得到的数据,所述第二数据为在第三数据的尾部添加第三CRC值得到的数据,所述第三CRC值为所述第三数据的CRC值,M等于Y减去X除以Y的余数;若所述第一 CRC值与所述第二 CRC值相同,则确定所述并行数据通过CRC。结合所述第一方面,在所述第一方面的第一种可能的实现方式中,所述采用所述CRC电路对所述并行数据进行运算包括如果X除以Y的余数不等于0,则在所述并行数据的尾部添加第四数据,所述第四数据的长度为M个字节,得到新的并行数据;采用所述CRC电路对所述新的并行数据进行运算。结合所述第一方面,或所述第一方面的第一种可能的实现方式,在所述第一方面的第二种可能的实现方式中,所述采用所述CRC电路对所述并行数据进行运算包括如果X除以Y的余数等于0,则不在所述并行数据的尾部添加数据,采用所述CRC电路对所述并行数据进行运算。结合所述第一方面,或所述第一方面的第一种可能的实现方式,或所述第一方面提供的第二种可能的实现方式,在所述第一方面提供的第三种可能的实现方式中,比较所述第一 CRC值与所述第二 CRC值是否相同之前,所述方法还包括分别在所述第二数据的尾部添加I至Y个字节的数据,得到Y个数据;
分别对所述Y个数据执行CRC,得到Y个CRC值;确定所述Y个CRC值中与所述Y个数据中通过在所述第二数据的尾部添加所述M个字节的数据得到的数据对应的CRC值为所述第二 CRC值。
第二方面,提供一种校验装置,包括接收单元,用于接收并行数据,所述并行数据的字节数为X,所述并行数据的位宽为Y个字节,X为正整数,Y为正整数;CRC电路,用于对所述接收单元接收的所述并行数据进行运算,获得第一 CRC值;比较单元,用于比较所述CRC电路生成的所述第一 CRC值与第二 CRC值是否相同,所述第二 CRC值为对第一数据执行CRC获得的CRC值,所述第一数据为在第二数据的尾部添加M个字节的数据得到的数据,所述第二数据为在第三数据的尾部添加第三CRC值得到的数据,所述第三CRC值为所述第三数据的CRC值,M等于Y减去X除以Y的余数;第一确定单元,用于若所述比较单元的比较结果为所述第一 CRC值与所述第二CRC值相同,则确定所述并行数据通过CRC。结合所述第二方面,在所述第二方面的第一种可能的实现方式中,所述CRC电路具体用于如果X除以Y的余数不等于0,则在所述并行数据的尾部添加第四数据,所述第四数据的长度为M个字节,得到新的并行数据;对所述新的并行数据进行运算。结合所述第二方面,或所述第二方面的第一种可能的实现方式,在所述第二方面的第二种可能的实现方式中,所述CRC电路具体用于如果X除以Y的余数等于0,则不在所述并行数据的尾部添加数据,对所述并行数据进行运算。结合所述第二方面,或所述第二方面的第一种可能的实现方式,或所述第二方面的第二种可能的实现方式,在所述第二方面的第三种可能的实现方式中,所述校验装置还包括添加单元,用于分别在所述第二数据的尾部添加I至Y个字节的数据,得到Y个数据;计算单元,用于分别对所述添加单元生成的所述Y个数据执行CRC,得到Y个CRC值;第二确定单元,用于在所述比较单元比较所述第一 CRC值与所述第二 CRC值是否相同之前确定所述计算单元得到的所述Y个CRC值中与所述添加单元得到的所述Y个数据中通过在所述第二数据的尾部添加所述M个字节的数据得到的数据对应的CRC值为所述第
二CRC 值。第三方面,提供一种网络设备,所述网络设备包括所述第二方面,或所述第二方面的第一种可能的实现方式,或所述第二方面的第二种可能的实现方式,或所述第二方面的第三种可能的实现方式提供的校验装置。上述技术方案中,通过比较所述并行数据的位宽对应的所述CRC电路生成的所述第一 CRC值与所述第二 CRC值是否相同,即可确定所述并行数据是否通过CRC。也就是说,上述技术方案只需要一个CRC电路。相对于现有技术中,对位宽为多个字节的并行数据进行CRC校验需要的多个CRC电路的技术方案,上述技术方案所需的硬件资源较少。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I本发明实施例提供的一种校验方法流程图;图2本发明实施例提供的一种对第二数据进行处理获得Y个数据的方法流程图;图3为本发明实施例提供的一种校验装置的结构示意图;图4为本发明实施例提供的一种校验装置的结构示意图。
具体实施例方式为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。图I为本发明实施例提供的一种校验方法的流程图。参见图1,所述方法包括101,接收并行数据。举例来说,101的执行主体可以是接收器。举例来说,所述并行数据可以通过如下方式得到串并转换器对接收到的串行数据进行处理,转化为所述并行数据。所述并行数据的字节数为X,并行数据的位宽为Y个字节,其中,X为正整数,Y为正整数。举例来说,Y的取值可以是1、2或者3。102,采用CRC电路对所述并行数据进行运算,获得第一 CRC值。举例来说,102的执行主体可以是硬件电路,例如ASIC (ApplicationSpecificIntegrated Circuit,专用集成电路)或者 FPGA (Field — Programmable GateArray,现场可编程门阵列)。本领域的技术人员可以理解,所述CRC电路是与所述并行数据的位宽相对应的电路。103,比较所述第一 CRC值与第二 CRC值是否相同。所述第二 CRC值为对第一数据执行CRC获得的CRC值,所述第一数据为在第二数据的尾部添加M个字节的数据得到的数据,所述第二数据为在第三数据的尾部添加第三CRC值得到的数据,所述第三CRC值为所述第三数据的CRC值,M等于Y减去X除以Y的余数,即M=Y-MOD (X,Y)。MOD (X, Y)等于X除以Y的余数。所述M个字节的数据可以是常数,例如可以是M个字节的O或者M个字节的I。举例来说,103的执行主体可以是比较器。104,若所述第一 CRC值与所述第二 CRC值相同,则确定所述并行数据通过CRC。104的执行主体可以是中央处理器(central processing unit, CPU),也可以是网络处理器(network processor,NP)。例如,104的执行主体可以是所述NP的转发单元。举例来说,如果所述转发单元确定所述并行数据通过CRC,所述转发单元可以对所述并行数据进行转发。如果所述转发单元确定所述并行数据没有通过CRC,所述转发单元可以对所述并行数据进行丢弃。本领域的技术人员可以理解,上述技术方案中,如果所述第三数据取不同的值,所述第二数据也必然取不同的值,所述第一数据也必然取不同的值,但是所述第二 CRC值取相同的值。例如,若第三数据为0x55,采用以太CRC32对该第三数据进行运算得到的所述第三CRC值为0xfb4a03c9,则在所述第三数据的尾部添加所述第三CRC值得到的数据为0x55fb4a03c9,也即所述第二数据为0x55fb4a03c9。在该第二数据尾部添加N个字节的数据得到所述第一数据。所述第一数据为0X55fb4a03c900。所述N个字节的数据为0x00。其中,N为I。则对该第一数据进行CRC计算,例如采用以太CRC32,获得的所述第一数据的CRC 值为 0xldf722c6。因此,所述第二 CRC 值为 0xldf722c6。 若第三数据为0x55aa,采用以太CRC32对该第三数据进行运算得到的所述第三CRC值为0xl8fll6b0,则在所述第三数据的尾部添加所述第三CRC值得到的数据为0x55aal8fll6b0,也即所述第二数据为0x55aal8f 116b0。在该第二数据尾部也添加N个字节的数据得到所述第一数据。所述第一数据为0x55aal8ni6b000,所述N个字节的数据为0x00。其中,N为I。则对该第一数据进行CRC计算,例如采用以太CRC32,获得的所述第一数据的CRC值也为0xldf722c6。因此,所述第二 CRC值为0xldf722c6。若第三数据为0x55aa55,采用以太CRC32对该第三数据进行运算得到的所述第三CRC值为0X51c4dfda,则在所述第三数据的尾部添加所述第三CRC值得到的数据为0x55aa5551c4dfda,也即所述第二数据为0x55aa5551c4dfda。在该第二数据尾部也添加N个字节的数据得到所述第一数据。所述第一数据为0x55aa5551c4dfda00,所述N个字节的数据为0x00。其中,N为I。则对该第一数据进行CRC计算,例如采用以太CRC32,获得的所述第一数据的CRC值也为0xldf722c6。因此,所述第二 CRC值为0xldf722c6。根据上述描述可以看出,所述第二 CRC值与M有关,与所述第三数据无关,与所述第二数据无关,与所述M个字节的取值无关。M的取值确定后,所述第二 CRC值也确定。根据上述规律,在获得所述并行数据的第一 CRC值后,若第一 CRC值与所述第二 CRC值相同,则可确定所述并行数据通过CRC。 上述技术方案中,通过比较所述并行数据的位宽对应的所述CRC电路生成的所述第一 CRC值与所述第二 CRC值是否相同,即可确定所述并行数据是否通过CRC。也就是说,上述技术方案只需要一个CRC电路。相对于现有技术中,对位宽为多个字节的并行数据进行CRC校验需要的多个CRC电路的技术方案,上述技术方案所需的硬件资源较少。可选的,图I所示的方法中,采用所述CRC电路对所述并行数据进行运算可以包括如果X除以Y的余数不等于0,则在所述并行数据的尾部添加第四数据,所述第四数据的长度为M个字节,得到新的并行数据;该第四数据可以是常数,例如可以是M个字节的O或者M个字节的I等。该第四数据的字节长度与第二数据尾部添加的数据的字节长度均为M个。采用所述CRC电路对所述新的并行数据进行运算。可选的,图I所示的方法中,采用所述CRC电路对所述并行数据进行运算可以包括如果X除以Y的余数等于0,则不在所述并行数据的尾部添加数据,采用所述CRC电路对所述并行数据进行运算。可选的,图I所示的方法中,比较所述第一 CRC值与所述第二 CRC值是否相同之前,该方法还可以包括201,分别在所述第二数据的尾部添加I至Y个字节的数据,得到Y个数据。
例如,若所述并行数据的位宽为8个字节,则在所述第二数据的尾部分别添加I至8个字节的数据,得到8个数据。在所述第二数据的尾部添加4个字节的数据得到的数据是所述8个数据中的一个数据。202,分别对所述Y个数据执行CRC,得到Y个CRC值。举例来说,在获得所述Y个CRC值后,可以将所述Y个CRC值进行存储,具体的,可以将添加的字节数及其对应的CRC值以列表的形式进行存储。203,确定所述Y个CRC值中与所述Y个数据中通过在所述第二数据的尾部添加所述M个字节的数据得到的数据为对应的CRC值为所述第二 CRC值。举例来说,若所述并行数据的字节数为36,所述并行数据的位宽为8个字节,则根据公式M=Y-MOD (X,Y)可以确定M为4,则将所述8个数据中在所述第二数据尾部添加所述4个字节的数据得到的数据作为所述第一数据。所述第一数据对应的CRC值即为所述第二CRC 值。关于201、202以及203,具体请参见图2。图3为本发明实施例提供的一种校验装置的结构示意图。所述校验装置可以执行图I所示的方法。参见图3,所述校验装置包括接收单元301,用于接收并行数据,所述并行数据的字节数为X,所述并行数据的位宽为Y个字节,X为正整数,Y为正整数。举例来说,所述接收单元301可以是接收器。举例来说,所述并行数据可以通过如下方式得到串并转换器对接收到的串行数据进行处理,转化为所述并行数据。所述并行数据的字节数为X,并行数据的位宽为Y个字节,其中,X为正整数,Y为正整数。举例来说,Y的取值可以是1、2或者3。CRC电路302,用于对所述接收单元301接收的所述并行数据进行运算,获得第一CRC 值。举例来说,所述CRC电路302可以是硬件电路。所述硬件电路可以是ASIC或者FPGA。本领域的技术人员可以理解,所述CRC电路是与所述并行数据的位宽相对应的电路。比较单元303,用于比较所述循环冗余校验电路302生成的所述第一 CRC值与第二CRC值是否相同,所述第二 CRC值为对第一数据执行CRC获得的CRC值,所述第一数据为在第二数据的尾部添加M个字节的数据得到的数据,所述第二数据为在第三数据的尾部添加第三CRC值得到的数据,所述第三CRC值为所述第三数据的CRC值,M等于Y减去X除以Y的余数。
所述第二 CRC值为对第一数据执行CRC获得的CRC值,所述第一数据为在第二数据的尾部添加M个字节的数据得到的数据,所述第二数据为在第三数据的尾部添加第三CRC值得到的数据,所述第三CRC值为所述第三数据的CRC值,M等于Y减去X除以Y的余数,即M=Y-MOD (X,Y)。MOD (X, Y)等于X除以Y的余数。所述M个字节的数据可以是常数,例如可以是M个字节的O或者M个字节的I。举例来说,所述比较单元303可以是比较器。第一确定单元304,用于若所述比较单元303的比较结果为所述第一 CRC值与所述第二 CRC值相同,则确定所述并行数据通过CRC。所述第一确定单元304可以是CPU,也可以是NP。例如,所述第一确定单元304可以是所述NP的转发单元。举例来说,如果所述转发单元确定所述并行数据通过CRC,所述转发单元可以对所述并行数据进行转发。如果所述转发单元确定所述并行数据没有通过CRC, 所述转发单元可以对所述并行数据进行丢弃。上述校验装置通过比较所述并行数据的位宽对应的所述CRC电路生成的所述第一 CRC值与所述第二 CRC值是否相同,即可确定所述并行数据是否通过CRC。也就是说,上述校验装置只需要一个CRC电路。相对于现有技术中,对位宽为多个字节的并行数据进行CRC校验需要的多个CRC电路的装置,上述校验装置所需的硬件资源较少。可选的,图3所示的校验装置中,所述CRC电路具体可以用于如果X除以Y的余数不等于0,则在所述并行数据的尾部添加第四数据,所述第四数据的长度为M个字节,得到新的并行数据;对所述新的并行数据进行运算。可选的,图3所示的校验装置中,所述CRC电路具体可以用于如果X除以Y的余数等于O,则不在所述并行数据的尾部添加数据,对所述并行数据进行运算。可选的,图3所示的校验装置中,还可以包括添加单元405,用于分别在所述第二数据的尾部添加I至Y个字节的数据,得到Y个数据;计算单元406,用于分别对所述添加单元405生成的所述Y个数据执行CRC,得到Y个CRC值;第二确定单元407,用于在所述比较单元303比较所述第一 CRC值与所述第二 CRC值是否相同之前确定所述计算单元406得到的所述Y个CRC值中与所述添加单元405得到的所述Y个数据中通过在所述第二数据的尾部添加所述M个字节的数据得到的数据对应的CRC值为所述第二 CRC值。举例来说,所述比较单元303可以根据所述第二确定单元407确定的所述第二 CRC值比较所述第一 CRC值与所述第二 CRC值是否相同。关于所述添加单元405、所述计算单元406以及所述第二确定单元407,具体请参见图4。本发明实施例还提供了一种网络设备,该网络设备包括图3所示的校验装置或者图4所示的校验装置。举例来说,所述网络设备可以是路由器、交换机、宽带远程接入服务器(broadbandremote access server, BRAS)、防火墙或者负载均衡器。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还 是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(R0M,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
1.一种校验方法,其特征在于,包括 接收并行数据,所述并行数据的字节数为X,所述并行数据的位宽为Y个字节,X为正整数,Y为正整数; 采用循环冗余校验CRC电路对所述并行数据进行运算,获得第一 CRC值; 比较所述第一 CRC值与第二 CRC值是否相同,所述第二 CRC值为对第一数据执行CRC获得的CRC值,所述第一数据为在第二数据的尾部添加M个字节的数据得到的数据,所述第二数据为在第三数据的尾部添加第三CRC值得到的数据,所述第三CRC值为所述第三数据的CRC值,M等于Y减去X除以Y的余数; 若所述第一 CRC值与所述第二 CRC值相同,则确定所述并行数据通过CRC。
2.根据权利要求I所述的方法,其特征在于,所述采用所述CRC电路对所述并行数据进行运算包括 如果X除以Y的余数不等于O,则在所述并行数据的尾部添加第四数据,所述第四数据的长度为M个字节,得到新的并行数据; 采用所述CRC电路对所述新的并行数据进行运算。
3.根据权利要求I或2所述的方法,其特征在于,所述采用所述CRC电路对所述并行数据进行运算包括 如果X除以Y的余数等于O,则不在所述并行数据的尾部添加数据,采用所述CRC电路对所述并行数据进行运算。
4.根据权利要求I至3中任一所述的方法,其特征在于,比较所述第一CRC值与所述第二 CRC值是否相同之前,所述方法还包括 分别在所述第二数据的尾部添加I至Y个字节的数据,得到Y个数据; 分别对所述Y个数据执行CRC,得到Y个CRC值; 确定所述Y个CRC值中与所述Y个数据中通过在所述第二数据的尾部添加所述M个字节的数据得到的数据对应的CRC值为所述第二 CRC值。
5.一种校验装置,其特征在于,包括 接收单元,用于接收并行数据,所述并行数据的字节数为X,所述并行数据的位宽为Y个字节,X为正整数,Y为正整数; 循环冗余校验CRC电路,用于对所述接收单元接收的所述并行数据进行运算,获得第一CRC 值; 比较单元,用于比较所述CRC电路生成的所述第一 CRC值与第二 CRC值是否相同,所述第二 CRC值为对第一数据执行CRC获得的CRC值,所述第一数据为在第二数据的尾部添加M个字节的数据得到的数据,所述第二数据为在第三数据的尾部添加第三CRC值得到的数据,所述第三CRC值为所述第三数据的CRC值,M等于Y减去X除以Y的余数; 第一确定单元,用于若所述比较单元的比较结果为所述第一 CRC值与所述第二 CRC值相同,则确定所述并行数据通过CRC。
6.根据权利要求5所述的校验装置,其特征在于,所述CRC电路具体用于 如果X除以Y的余数不等于O,则在所述并行数据的尾部添加第四数据,所述第四数据的长度为M个字节,得到新的并行数据; 对所述新的并行数据进行运算。
7.根据权利要求5或6所述的校验装置,其特征在于,所述CRC电路具体用于 如果X除以Y的余数等于O,则不在所述并行数据的尾部添加数据,对所述并行数据进行运算。
8.根据权利要求5至7中任一所述的校验装置,其特征在于,所述校验装置还包括 添加单元,用于分别在所述第二数据的尾部添加I至Y个字节的数据,得到Y个数据; 计算单元,用于分别对所述添加单元生成的所述Y个数据执行CRC,得到Y个CRC值; 第二确定单元,用于在所述比较单元比较所述第一 CRC值与所述第二 CRC值是否相同之前确定所述计算单元得到的所述Y个CRC值中与所述添加单元得到的所述Y个数据中通过在所述第二数据的尾部添加所述M个字节的数据得到的数据对应的CRC值为所述第二CRC 值。
9.一种网络设备,其特征在于,所述网络设备包括如权利要求5至8中任一所述的校验 装直。
全文摘要
本发明实施例公开了一种校验方法及校验装置。该校验方法包括接收并行数据,所述并行数据的字节数为X,所述并行数据的位宽为Y个字节,X为正整数,Y为正整数;采用循环冗余校验CRC电路对所述并行数据进行运算,获得第一CRC值;比较所述第一CRC值与第二CRC值是否相同,所述第二CRC值为对第一数据执行CRC获得的CRC值,所述第一数据为在第二数据的尾部添加M个字节的数据得到的数据,所述第二数据为在第三数据的尾部添加第三CRC值得到的数据,所述第三CRC值为所述第三数据的CRC值,M等于Y减去X除以Y的余数;若所述第一CRC值与所述第二CRC值相同,则确定所述并行数据通过CRC。该技术方案只需要一个CRC电路。相对于现有技术该技术方案所需的硬件资源较少。
文档编号H04L1/00GK102916781SQ20121042794
公开日2013年2月6日 申请日期2012年10月31日 优先权日2012年10月31日
发明者赵文江, 罗俊, 刘永峰, 雷浩, 鲁珣 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1