一种循环冗余校验CRC实现方法、装置及网络设备制造方法及图纸

技术编号:18429469 阅读:6 留言:0更新日期:2018-07-12 02:45
本申请提供了一种CRC实现方法、装置及网络设备,可以降低待校验数据的CRC计算复杂度,从而提升了CRC计算性能。本发明专利技术实施例方法包括:CRC实现装置按照从低位到高位的顺序将待校验数据均分为K段子数据,待校验数据的比特位数等于CRC实现装置的数据位宽,K为大于等于2的偶数;对K段子数据中每一段子数据分别进行CRC计算,得到K个CRC结果;按照从高位到低位的顺序对K个CRC结果进行逆向修正,得到最终CRC结果。

【技术实现步骤摘要】
一种循环冗余校验CRC实现方法、装置及网络设备
本申请涉及通信
,尤其涉及一种循环冗余校验(CyclicRedundancyCheck,CRC)实现方法、装置及网络设备。
技术介绍
在现场可编程门阵列(Field-ProgrammableGateArray,FPGA)逻辑实现接口通信的过程中,为了提高数据传输的可靠性,普遍采用对数据添加校验位传输的方法。在现行的数据校验算法中最常用的是CRC算法。随着通信技术的发展和用户通信数据量的需求提升,通信接口速率要求越来越快,CRC装置在CRC计算时,CRC计算模块在一拍时序内的要求处理的待校验数据的比特位数越来越大,导致CRC计算模块的数据位宽越来越大。由于待校验数据中的有效数据不确定,导致最后一拍时序的有效字节数据(Mod)值不确定,存在多个种可能性,假设CRC装置处理的数据位宽采用的是1024比特,CRC结果采用CRC32码,即CRC结果为32个比特,待校验数据长度为1024比特,一种CRC实现方法为:如图1所示,CRC32_Mod0、CRC32_Mod1、...、CRC32_Mod127表示的是128个编号的计算模块,MUX1表示的是编号为1的选择模块,这128个计算模块需要在一拍内算出128种中间CRC结果,并且在最后一拍MUX1需要根据Mod值从128种中间CRC结果中选择出一种,作为最终CRC结果。另一种CRC实现方法为:如图2所示,CRC32_Modx、CRC32_Mody、CRC32_Modz、...、CRC32_Modn表示的是计算模块,MUX0和MUX1表示的是编号为0和1的选择模块,利用MUX0对计算模块CRC32_Modx和计算模块CRC32_Mody进行级联,使得计算模块数量n小于128个,可以减少计算模块的数量。但是,图1所示的CRC实现方法在数据位宽(例如位宽为1024比特)变大时,需要增加大量的计算模块进行CRC计算,而且使用组合逻辑实现128选1的逻辑,增加的计算复杂度导致了FPGA逻辑内部查找表(LookUpTable,LUT)级数的增加,从而影响CRC计算的时序性,导致CRC计算性能大幅下降;而图2所示的CRC实现方法虽然减少了计算模块的资源消耗,但FPGA逻辑的处理级数增加了,同样会影响CRC计算的时序性,使得CRC计算性能受到影响。
技术实现思路
本申请提供了一种CRC实现方法、装置及网络设备,可以降低待校验数据的CRC计算复杂度,从而提升CRC计算性能。第一方面提供CRC实现方法,包括:CRC实现装置按照从低位到高位的顺序将待校验数据均分为K段子数据,所述待校验数据的比特位数等于所述CRC实现装置的数据位宽,K为大于等于2的偶数;所述CRC实现装置对所述K段子数据中每一段子数据分别进行CRC计算,得到K个CRC结果;所述CRC实现装置按照从高位到低位的顺序对所述K个CRC结果进行逆向修正,得到最终CRC结果。CRC实现装置计算得到待校验数据的CRC结果的过程中,先按照从低位到高位的顺序将待校验数据均分为K段子数据,而且待校验数据的比特位数等于CRC实现装置的数据位宽,K为偶数,例如CRC实现装置的数据位宽为1024比特,可以将待校验数据均分为2、4或6等偶数段的子数据,对每一段子数据分别进行CRC计算,得到对应的CRC结果,即进行CRC计算时,每段子数据的CRC结果不影响其他段子数据的CRC结果,得到的CRC结果总计为K个,由于K段子数据是按照从低位到高位的顺序均分的,那么K段子数据的顺序是已知的,再对K个CRC结果进行逆向修正时,是按照从高位到低位的顺序,具体操作为以第K段子数据的CRC结果为基础,修正第K-1段子数据的CRC结果,再以第K-1段子数据的修正后的CRC结果为基础,修正第K-2段子数据的CRC结果,依次类推,直到将第1段子数据的CRC结果进行修正,修正后的第1段子数据的CRC结果就是最终CRC结果。由于对待校验数据进行均匀分段,降低了CRC计算过程中组合逻辑实现的处理位宽,并且通过逆向修正每段的CRC结果得到最终CRC结果,例如1024比特的待校验数据均分为4段子数据后,单段子数据的组合逻辑实现的处理位宽由1024比特降低到256比特,而且逆向修正时只需要执行三次,即可得到最终CRC结果,从而降低了CRC实现装置的CRC计算复杂度,提升了CRC计算性能。结合第一方面,在第一方面的第一种可能的实现中,所述CRC实现装置对所述K段子数据中每一段子数据分别进行CRC计算,得到K个CRC结果,包括:所述CRC实现装置根据预设初值对第K段子数据进行CRC计算,得到第K段子数据的CRC结果;所述CRC实现装置根据全零初值对第1段子数据至第K-1段子数据分别进行CRC计算,得到所述第1段子数据的CRC结果至所述第K-1段子数据的CRC结果。由于CRC计算时,CRC实现装置设置了CRC码,例如8位比特的CRC8码或者32位比特的CRC32码等,并且预先设置了CRC计算的预设初值,根据国际电报电话咨询委员会(CCITT)所设的标准要求CRC8码的预设初值为0xFF,CRC32码的预设初值为0xFFFFFFFF,由于待校验数据均分为K段子数据,那么在CRC计算时,需要分别对每一段子数据分别进行CRC计算,在计算第K段子数据时,由于是第K段子数据是待校验数据的最高位的子数据段,那么计算第K段子数据的CRC结果时,采用的是预设初值,而第1段子数据至第K-1段子数据的CRC计算时,为了不影响其他段子数据,那么第1段子数据至第K-1段子数据分别进行CRC计算时采用全零初值。结合第一方面的第一种可能的实现,在第一方面的第二种可能的实现中,所述CRC实现装置按照从高位到低位的顺序对所述K个CRC结果进行逆向修正,得到最终CRC结果,包括:所述CRC实现装置将所述第1段子数据的CRC结果至所述第K-1段子数据的CRC结果输入预置CRC初值影响矩阵,得到所述第1段子数据至所述第K-1段子数据中每一段子数据的初值影响值;修正第M-1段子数据的CRC结果,其中,M大于等于2且小于等于K,包括:将第M段子数据的修正CRC结果作为第M-1段子数据的初值,其中,第K段子数据的修正CRC结果为所述第K段子数据的CRC结果;将第M-1段子数据的初值和第M-1段子数据的初值影响值的对应比特异或,得到第M-1段子数据的CRC结果修正值;将所述第M-1段子数据的CRC结果修正值与所述第M-1段子数据的CRC结果的对应比特异或,得到所述第M-1段子数据的修正CRC结果;当M-1等于1时,所述第M-1段子数据的修正CRC结果为最终CRC结果。预置CRC初值影响矩阵是一个x×x的矩阵,由常用的初值影响矩阵的运算公式迭代运算L次得到,x表示为CRC码的版本,例如采用CRC8码时,x为8,L为待校验数据的比特位数,CRC实现装置将K个CRC结果输入预置CRC初值影响矩阵,能够得到每一段子数据的CRC结果的初值影响值,其中,由于第K段子数据是最高位的子数据段,采用的又是逆向修正方法,那么第K段子数据的CRC结果不计算初值影响值,并作为第K-1段子数据的初值,而且由于初值影响值、CRC结果修正值和CRC结果都是以二进制表示的,将第K段子数据的CRC结果本文档来自技高网
...

【技术保护点】
1.一种循环冗余校验CRC实现方法,其特征在于,包括:CRC实现装置按照从低位到高位的顺序将待校验数据均分为K段子数据,所述待校验数据的比特位数等于所述CRC实现装置的数据位宽,K为大于等于2的偶数;所述CRC实现装置对所述K段子数据中每一段子数据分别进行CRC计算,得到K个CRC结果;所述CRC实现装置按照从高位到低位的顺序对所述K个CRC结果进行逆向修正,得到最终CRC结果。

【技术特征摘要】
1.一种循环冗余校验CRC实现方法,其特征在于,包括:CRC实现装置按照从低位到高位的顺序将待校验数据均分为K段子数据,所述待校验数据的比特位数等于所述CRC实现装置的数据位宽,K为大于等于2的偶数;所述CRC实现装置对所述K段子数据中每一段子数据分别进行CRC计算,得到K个CRC结果;所述CRC实现装置按照从高位到低位的顺序对所述K个CRC结果进行逆向修正,得到最终CRC结果。2.根据权利要求1所述的方法,其特征在于,所述CRC实现装置对所述K段子数据中每一段子数据分别进行CRC计算,得到K个CRC结果,包括:所述CRC实现装置根据预设初值对第K段子数据进行CRC计算,得到第K段子数据的CRC结果;所述CRC实现装置根据全零初值对第1段子数据至第K-1段子数据分别进行CRC计算,得到所述第1段子数据的CRC结果至所述第K-1段子数据的CRC结果。3.根据权利要求2所述的方法,其特征在于,所述CRC实现装置按照从高位到低位的顺序对所述K个CRC结果进行逆向修正,得到最终CRC结果,包括:所述CRC实现装置将所述第1段子数据的CRC结果至所述第K-1段子数据的CRC结果输入预置CRC初值影响矩阵,得到所述第1段子数据至所述第K-1段子数据中每一段子数据的初值影响值;修正第M-1段子数据的CRC结果,其中,M大于等于2且小于等于K,包括:将第M段子数据的修正CRC结果作为第M-1段子数据的初值,其中,第K段子数据的修正CRC结果为所述第K段子数据的CRC结果;将第M-1段子数据的初值和第M-1段子数据的初值影响值的对应比特异或,得到第M-1段子数据的CRC结果修正值;将所述第M-1段子数据的CRC结果修正值与所述第M-1段子数据的CRC结果的对应比特异或,得到所述第M-1段子数据的修正CRC结果;当M-1等于1时,所述第M-1段子数据的修正CRC结果为最终CRC结果。4.根据权利要求3所述的方法,其特征在于,在所述修正第M-1段子数据的CRC结果之前,还包括:获取所述待校验数据的有效字节数Mod值,所述Mod值用于指示所述待校验数据中的有效数据的分布状况;根据所述Mod值确定第M段子数据是否包含有效数据;当第M段子数据包含有效数据时,执行所述修正第M-1段子数据的CRC结果;当第M段子数据不包含有效数据时,不执行所述修正第M-1段子数据的CRC结果,所述第M-1段子数据的修正CRC结果为所述第M-1段子数据的CRC结果。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述CRC实现装置按照从低位到高位的顺序将待校验数据均分为K段子数据之前,还包括:CRC实现装置获取输入数据;当所述输入数据的比特位数等于所述CRC实现装置的数据位宽时,所述输入数据为待校验数据;当所述输入数据的比特位数小于所述CRC实现装置的数据位宽时,根据...

【专利技术属性】
技术研发人员:蔡峰尤科剑熊卫波曹翔明
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1