一种循环冗余校验方法和装置制造方法及图纸

技术编号:32467639 阅读:24 留言:0更新日期:2022-03-02 09:26
本发明专利技术公开了一种循环冗余校验方法和装置,该方法包括:获取待处理的数据报文;获取所述待处理的数据报文的有效字节和无效字节,将所述无效字节填充为0;设置CRC32_D512算法模块;输入所述有效字节到所述CRC32_D512算法模块;基于所述CRC32_D512算法模块计算得到第一CRC结果;设置反推导crc32_rollback模块;输入所述第一CRC结果至所述反推导crc32_rollback模块;基于所述反推导crc32_rollback模块反推得到第二CRC结果;基于所述有效字节的字节数和所述第二CRC结果,选择获取第三CRC结果。本发明专利技术在不需要额外添加算法模块的前提下,实现大位宽数据CRC(循环冗余校验)计算,且不额外占用系统资源,不会影响整体系统性能,易于实现。现。现。

【技术实现步骤摘要】
一种循环冗余校验方法和装置


[0001]本说明书涉及数据校验领域,特别是一种循环冗余校验方法和装置。

技术介绍

[0002]在数据传输过程中,无论传输系统的设计再怎么完美,差错总会存在,这种差错可能会导致在链路上传输的一个或者多个帧被破坏(出现比特差错,0变为1,或者1变为0),从而接受方接收到错误的数据。为尽量提高接受方收到数据的正确率,在接收方接收数据之前需要对数据进行差错检测,当且仅当检测的结果为正确时接收方才真正收下数据。检测的方式有多种,包括循环冗余校验CRC(Cyclic Redundancy Check)。
[0003]循环冗余校验CRC(Cyclic Redundancy Check)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。
[0004]在网络通信中,为了提高通信的可靠性,需要对数据流做CRC(循环冗余校验)处理,针对高位宽数据流做CRC(循环冗余校验)实现时,数据流非全字节有效的情况下,需要根据数据流的有效字节个数来确定使用的CRC计算功能函数。现有技术方法比较繁杂,需要额外消耗一部分资源,且在数字可编程芯片FPGA芯片实现方式下,还会降低整体系统性能。

技术实现思路

[0005]本说明书实施例的目的在于,提供了一种循环冗余校验方法和装置,在不需要额外添加算法模块的前提下,实现大位宽数据crc(循环冗余校验)计算,且不额外占用系统资源,不会影响整体系统性能,易于实现。
[0006]为达到上述目的,一方面,本说明书实施例提供了一种循环冗余校验方法,包括:
[0007]获取待处理的数据报文;
[0008]获取所述待处理的数据报文的有效字节和无效字节,将所述无效字节填充为0;
[0009]设置CRC32_D512算法模块;
[0010]输入所述有效字节到所述CRC32_D512算法模块;
[0011]基于所述CRC32_D512算法模块计算得到第一CRC结果;
[0012]设置反推导crc32_rollback模块;
[0013]输入所述第一CRC结果至所述反推导crc32_rollback模块;
[0014]基于所述反推导crc32_rollback模块反推得到第二CRC结果;
[0015]基于所述有效字节的字节数和所述第二CRC结果,选择获取第三CRC结果。
[0016]另一方面,本说明书实施例还提供了一种循环冗余校验装置,包括:
[0017]报文处理模块,用于基于获取的规则全文,处理待处理报文;
[0018]报文获取模块,用于获取待处理的数据报文和所述待处理的数据报文的有效字节和无效字节,并将所述无效字节填充为0;
[0019]CRC32_D512算法模块,用于基于输入的所述有效字节计算得到第一CRC结果;
[0020]反推导crc32_rollback模块,用于基于输入的所述第一CRC结果反推得到第二CRC结果;
[0021]第三CRC结果获取模块,用于基于所述有效字节的字节数和所述第二CRC结果,选择获取第三CRC结果。
[0022]由以上本说明书实施例提供的技术方案可见,本专利技术针对高位宽数流据做CRC(循环冗余校验)计算,且在有效字节可变的情况,根据CRC多项式反运算推导原理,达到保证设计性能,并且不会消耗过多资源的目的。
附图说明
[0023]图1为本说明书一些实施例的循环冗余校验方法的流程图。
[0024]图2为相关技术中的循环冗余校验方法的示意图。
[0025]图3为本说明书一些实施例的循环冗余校验方法的示意图。
具体实施方式
[0026]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0027]如图1所示,本说明书一些实施例中提供了一种循环冗余校验方法,该方法包括以下步骤:
[0028]S102、获取待处理的数据报文,获取待处理的数据报文的有效字节和无效字节,将无效字节填充为0;
[0029]S104、设置CRC32_D512算法模块,输入有效字节到CRC32_D512算法模块;基于CRC32_D512算法模块计算得到第一CRC结果;
[0030]S106、设置反推导crc32_rollback模块,输入第一CRC结果至反推导crc32_rollback模块;基于反推导crc32_rollback模块反推得到第二CRC结果;
[0031]S108、基于有效字节的字节数和第二CRC结果,选择获取第三CRC结果。
[0032]在本说明书一些实施例中,将第三CRC结果附在数据报文上;发送附有第三CRC结果的数据报文,接收附有第三CRC结果的数据报文;基于数据报文计算获取第四CRC结果;对比第三CRC结果和第四CRC结果,若第三CRC结果与第四CRC结果相同,则数据报文校验成功,若第三CRC结果与第四CRC结果不相同,则数据报文校验失败。
[0033]在本说明书一些实施例中,待处理的数据报文的位宽为512bit,第一CRC结果的位宽为32bit。基于FPGA或CPLD芯片和Verilog语言,进行CRC结果计算和循环冗余校验。
[0034]结合图2描述与本专利技术的相关技术如下:在实际应用中,经常需要处理大流量,高速率的数据流,这样就会需要处理大位宽的数据,例如512bit(64byte)。在很多情况下,并不是大位宽数据里的所有字节都是需要参与计算的,又因为不同的位宽下,计算CRC(循环冗余校验)的功能函数也不一样。常规情况下,需要考虑所有情况,例如当一个以太网报文需要做CRC(循环冗余校验)计算,数据位宽为512bit,当该数据并不是所有的512bit都是该
数据包有效内容,在做CRC(循环冗余校验)计算时,就要根据有效字节数,选择输入数据是63byte还是62字节、61字节等,总共需要考虑64种情况,这样最终算出的才为该数据报文的CRC(循环冗余校验)结果。因此,大位宽下,需要添加多种情况下的CRC算法公式,占用过多资源;此外,因为考虑情况复杂度较高,逻辑运算量大,会降低整体设计的运行效率,降低性能。
[0035]针对上文描述中存在的问题,结合图3解释本说明书的一些实施例如下:本方案背景为以FPGA可编程芯片来实现网络数据通信特定功能,开发语言为Verilog2001。此方案实现过程中,需要对以太网报文出口方向上,对数据报文做CRC(循环冗余校验)计算,处理数据位宽为512bit。实现流程如下:首先把有效的数据输入到CRC32本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种循环冗余校验方法,其特征在于,所述方法包括:获取待处理的数据报文;获取所述待处理的数据报文的有效字节和无效字节,将所述无效字节填充为0;设置CRC32_D512算法模块;输入所述有效字节到所述CRC32_D512算法模块;基于所述CRC32_D512算法模块计算得到第一CRC结果;设置反推导crc32_rollback模块;输入所述第一CRC结果至所述反推导crc32_rollback模块;基于所述反推导crc32_rollback模块反推得到第二CRC结果;基于所述有效字节的字节数和所述第二CRC结果,选择获取第三CRC结果。2.根据权利要求1所述的循环冗余校验方法,其特征在于,将所述第三CRC结果附在所述数据报文上;发送附有所述第三CRC结果的数据报文。3.根据权利要求2所述的循环冗余校验方法,其特征在于,接收附有所述第三CRC结果的数据报文;基于所述数据报文计算获取第四CRC结果;对比所述第三CRC结果和所述第四CRC结果,若所述第三CRC结果与所述第四CRC结果相同,则所述数据报文校验成功,若所述第三CRC结果与所述第四CRC结果不相同,则所述数据报文校验失败。4.根据权利要求3所述的循环冗余校验方法,其特征在于,所述待处理的数据报文的位宽为512bit,所述第一CRC结果的位宽为32bit。5.根据权利要求4所述的循环冗余校验方法,其特征在于,基于FPGA或CPLD芯片和Veril...

【专利技术属性】
技术研发人员:李西昆樊震
申请(专利权)人:北京百卓网络技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1