一种基于高位宽数据计算多项式除法余数的CRC计算方法

文档序号:35980835发布日期:2023-11-10 00:45阅读:92来源:国知局
一种基于高位宽数据计算多项式除法余数的CRC计算方法与流程

本发明涉及一种类crc校验码计算方法,具体涉及一种基于高位宽数据计算多项式除法余数的crc计算方法。


背景技术:

1、模二除法相对于普通的算术除法,主要的区别在于1、不考虑进位和借位;2、不比较除数和被除数相同位的数值大小;3、只以相同位数进行相除。如:被除数1111000除以除数1101,得到商1011余数111。

2、crc(cyclic redundancy check循环冗余校验码)是一种通过模二除法计算并用于校验通信过程中数据传输准确性的计算方法,可以根据通信数据通过某种数学运算生成简短而具又有检错、纠错能力的校验码。crc计算在发送端对将要传输的数据看成是系数为0或1的多项式,它被预置的k+1位多项式二进制序列使用模二除法运算,得到的k位余数即为校验码,将其附加在原始数据后面,形成一个最终的n+k位二进制数据一起发送至接收端。接收端对接收到的二进制数据按照相同的规则进行计算,并将计算结果与接收到的校验码进行对比,如果两者相同则认为传输过程中没有出现错误,否则即代表发生了传输错误。

3、crc计算经典的实现方式是采用lfsr(linear feedback shift register线性反馈移位寄存器组)来实现,虽然这种方法简单且易于实现,但每个时钟周期只能处理一位二进制数据,效率较低,难以满足高速的通信系统大位宽输入、延迟小等处理要求。对于并行crc计算的实现来说,有一类基于查找表结构的计算方式,这些方法都需要存储大量的crc余数表项,表项数目与并行计算数据位宽呈二次幂关系,因此对于大位宽的情况硬件实现资源浪费巨大。针对以太网长度不定的数据包头/尾的crc计算,使用一种分块并行crc的方式,实现了所有可能长度的crc计算,最后根据有效数据长度来选择计算结果。该方法虽然满足了系统时序的要求,但是本质是以牺牲硬件资源来换取性能的提升,当输入数据总线位宽提高时,有效数据长度的可能也将急剧增多,这种实现方式的资源开销将是难以承受的。


技术实现思路

1、本发明的目的是针对现有crc计算难以满足高速通信系统大位宽输入、延迟小等处理要求,且计算的输入数据位宽较大时电路硬件资源消耗过大的技术问题,而提供一种基于高位宽数据计算多项式除法余数的crc计算方法,支持任意位宽数据输入。

2、为解决上述技术问题,本发明所采用的技术方案为:

3、一种基于高位宽数据计算多项式除法余数的crc计算方法,其特殊之处在于,包括以下步骤:

4、1)输入包含多个周期的待校验数据,每个周期的待校验数据的位宽为n位;根据crc算法设置第一个周期对应的余数初始值为预置余数初始值;将n位待校验数据分为以n为对齐位宽的n/n个对齐位宽数据;设对齐位宽数据中的无效位宽为m,则有效位宽为e=n/n-m,所述n、n分别为16的倍数;m∈[0,n/n-1],e∈[1,n/n];

5、2)将当前周期n位待校验数据进行数据crc计算,获得当前周期的数据crc值,所述数据crc计算采用分块并行计算;同时,将预置余数初始值进行余数crc计算,获得当前周期的余数crc值;

6、所述余数crc计算采用级联选择计算,具体步骤为:

7、b1)以预置余数初始值作为余数初始值,输入余数crc计算块;同时根据有效位宽e生成选择信号;

8、所述余数crc计算块包括q+1个级联的计算块,q+1个级联的计算块处理有效位宽依次为n/2c;c=0,1,……,q;其中q=log2n-log2n;

9、所述计算块用于对输入端数据进行余数运算并根据选择信号选择余数运算结果或输入端数据进行输出;

10、所述选择信号为q+1位以二进制数表示的e中的每一位数,该每一位数分别与q+1个级联计算块依次对应;

11、b2)输入余数crc计算块的余数初始值按以下方式进行计算:

12、对q+1个级联计算块中的任一计算块,若该计算块的选择信号为二进制1,则以该计算块的余数运算结果作为输出结果,若该计算块的选择信号为二进制0,则以余数初始值或上一级计算块的余数运算结果作为输出结果;

13、b3)最后一个计算块的输出结果作为当前周期的余数crc值;

14、3)将当前周期的余数crc值与当前周期的数据crc值进行模二加法,获得当前周期的crc值;

15、4)以当前周期的crc值作为下一个周期的余数初始值,重复步骤2)、3),直至获得最后一个周期的crc值,将最后一个周期的crc值作为待校验数据的crc校验码。

16、进一步地,步骤2)中,所述进行数据crc计算,获得数据crc值具体为:

17、a1)根据数据crc计算块中输入的n位待校验数据的无效位宽m,移出n位待校验数据中的无效数据,得到n位有效数据;

18、a2)将n位有效数据,从高至低位依次拆分为n/n个数据计算块;

19、a3)将n/n个数据计算块中的第i个n位数据低位补(n/n-i)*n个0,进行数据crc计算,分别获得n/n个数据计算块的有效数据crc值;i∈[1,n/n];

20、a4)再将n/n个有效数据crc值进行异或,得到n位待校验数据的数据crc值。

21、进一步地,步骤a1)中,所述移出n位待校验数据中的无效数据具体为:

22、将n位待校验数据整体逻辑右移m位,移出无效数据。

23、进一步地,步骤a4)中,所述异或采用分级异或。

24、进一步地,步骤a4)中,还包括:

25、在进行异或中插入流水线寄存器。

26、进一步地,步骤b1))中,还包括:

27、在q+1个级联计算块中插入流水线寄存器。

28、进一步地,步骤2)还包括:

29、将n位待校验数据进行预处理,计算n位待校验数据的icrc时,按rocev2格式的ipv4数据包,将time to live、headerchecksum、dscp、ecn的字段数据置为1。

30、进一步地,步骤3)之后还包括:校验;

31、将k位crc校验码,附加在多个周期的待校验数据后面,形成周期数*n+k位二进制数据,将周期数*n+k位二进制数据发送至通信接收端;

32、接收端对接收到的周期数*n位二进制数据按照crc规则计算,并将计算结果与接收到的k位crc校验码进行对比;

33、如果两者相同,则认为多个周期的待校验数据在通信过程中没有出现传输错误,进行下一次待校验数据通信;

34、否则,认为多个周期的待校验数据在通信过程中出现传输错误,根据crc校验码对待校验数据进行纠错。

35、进一步地,步骤1)中,所述n的取值为1024。

36、与现有技术相比,本发明技术方案的有益效果是:

37、(1)本发明基于高位宽数据计算多项式除法余数的crc计算方法,在并行crc计算的基础上,提出了并行crc拆分计算方法,将并行crc计算拆分成数据crc计算和余数crc计算两部分,与现有技术相比,本发明方法支持任意位宽待校验数据的输入,更容易实现,且频率高、占用资源更少。

38、(2)本发明基于高位宽数据计算多项式除法余数的crc计算方法,在进行余数crc计算时,利用crc计算的线性性质,将n位待校验数据的有效位宽e生成选择信号,驱动级联的余数crc计算块,输出结果为将余数后补e个0后的crc计算结果。余数crc计算的分开处理,使得高位宽数据输入时的数据crc处理方式更加高效。

39、(3)本发明基于高位宽数据计算多项式除法余数的crc计算方法,在进行数据crc计算时,利用crc计算的线性性质,将n位待校验数据的拆分为n/n个数据计算块,每个数据计算块均有n位高位有效数据其余低位为0,数据为0时在计算异或操作时不影响结果,即异或计算公式可删除低位的数据项,简化了计算公式的长度,实现数据crc计算通用于n位对齐的n至n位待校验数据长度的数据crc计算。

40、(4)本发明基于高位宽数据计算多项式除法余数的crc计算方法,可在数据crc计算中的异或分级之间和余数crc拆分的q+1个级联计算块之间,适当位置添加流水线寄存器,提升本发明的工作频率。附图说明

41、图1为本发明基于高位宽数据计算多项式除法余数的crc计算方法实施例中,1024位待校验数据的crc32校验计算框图;

42、图2为本发明基于高位宽数据计算多项式除法余数的crc计算方法实施例中,1024位有效数据进行数据crc计算框图;

43、图3为本发明基于高位宽数据计算多项式除法余数的crc计算方法实施例中,1024位有效数据进行余数crc计算框图。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1