一种计算循环冗余校验码的方法及装置制造方法及图纸

技术编号:7900361 阅读:321 留言:0更新日期:2012-10-23 05:55
本发明专利技术提供了一种计算循环冗余校验码的方法及装置,根据CRCn生成多项式及移位寄存器的初始状态,生成基础查找表、第一个快速查找表、第二个快速查找表和第三个快速查找表;在确认待处理的输入数据量大于或等于32比特时,将待处理的输入数据的第m个字节数据与第m个字节的移位寄存器的初始状态值进行异或,以异或结果为索引,读取第m个快速查找表,得到第m个中间结果;将待处理的输入数据的第四个字节作为索引,读取基础查找表,得到第四个中间结果;将第一个中间结果、第二个中间结果、第三个中间结果及第四个中间结果进行异或,获得CRCn计算结果。采用本发明专利技术的方法及装置,能够提高数据处理的并行度,降低数据处理量和内存消耗。

【技术实现步骤摘要】

本专利技术涉及冗余校验技术,特别涉及一种计算循环冗余校验码的方法及装置
技术介绍
循环冗余校验(CRC) 采用多项式编码方法,被处理的数据块可以看作是一个n阶的二进制多项式,具体说就是,CRC校验码的编码方法是用待发送的二进制数据g(x)除以生成多项式m(x),将最后的余数C(X)作为CRC校验码。图I为现有的采用标准查找表计算循环冗余校验的方法流程图,现结合图1,对现有的采用标准查找表计算循环冗余校验的方法进行说明,具体如下设定寄存器的宽度为n,输入比特位数为m ;步骤101 :定义一个宽度为n比特的寄存器R用来存放循环冗余校验码,并将寄存器R的值置为0 ;寄存器的长度一般为处理器的基本存储单元的整数倍,比如8比特、16比特、32比特等等;寄存器R的值置为0,即设置(Iv1, ... , r0)比特序列为O。步骤102 比较m与n的大小关系,如果m小于n,执行步骤103,如果m等于n,执行步骤105,如果m大于n,执行步骤109 ;步骤103:将寄存器R右移n-m比特,即得到(Iv1,…,rn_kJ序列,将所得到的序列和m个输入比特异或;步骤104 :根据步骤103的异或结果,在查找表中找到对应的值,与寄存器R左移m比特得到的序列Ov1, . . . , r0)异或,得到新的CRC值,之后执行步骤107 ;步骤105 :将输入的m个比特与寄存器R异或;该步骤就是将输入的m比特与Ovh,…,rQ)异或。步骤106 :根据步骤105的异或结果,在查找表中找到对应的值,就得到新的CRC值;步骤107 :判断是否所有消息比特都被移入处理,如果是,执行步骤108,否则执行步骤102 ;步骤108 :留在寄存器R中的数值就是输入序列的循环冗余校验码;步骤109 :结束。图I所示现有的采用标准查找表计算循环冗余校验的方法需要提供存储2mXn比特大小的查找表,虽然运算量小,速度快,但并行度不能过高,且不能处理m大于n时的情况。申请号为200310122447. 8的专利技术专利公开了 “一种循环冗余校验的快速计算方法”,该方法与图I所示的方法相比,能够通过预先生成的查找表,快速处理m大于n的情况。图2为现有的循环冗余校验的快速计算方法的流程图。现结合图2,对现有的循环冗余校验的快速计算方法进行说明,具体如下步骤201 :根据当前所采用CRCn生成器的逻辑结构,获取并存储该生成器中每个移位寄存器在处理输入序列的每个输入比特时的状态;步骤202 :从步骤201所获取的所有移位寄存器的全部状态中,提取出处理完输入序列每个比特后CRCn生成器中每个移位寄存器的状态;并将所提取出的每个移位寄存器状态组成中的移位寄存器初始状态表示部分和输入序列表示部分分别存储;步骤203 :以每个分别存储部分包含自变量的不同取值为地址索引,生成该存储部分对应的查找表,所述查找表中包括所述自变量的不同取值与所述处理完输入序列每个比特后CRCn生成器中每个移位寄存器状态间的对应关系;步骤204 :以CRCn模式进行CRC校验时,判断当前需处理的比特数是否大于每次能处理的比特数m,如果不是,则按步骤101至步骤109的方法进行处理,如果是,则读取m比特,分别以输入比特和移位寄存器变量的当前取值为地址索引,查找输入序列表示部分对应的查找表和移位寄存器初始状态表示部分对应的查找表,然后将所有查找结果进行异 或并保存异或结果;将对应每个移位寄存器的异或结果分别作为该移位寄存器的当前状态,返回步骤204。综上所述,现有的采用标准查找表计算循环冗余校验的方法中,内存消耗和数据处理量之间相互制约,比如以n代表CRC长度,如果每次处理m比特数据,则需要的CRC查找表大小为2mXn比特,以24比特长度CRC为例,如果每次处理32比特数据,需要的CRC查找表大小为232X 24,即103079215104比特,如果按每次处理大于8比特数据的方式计算冗余校验,则数据处理量较小,但内存耗费巨大;如果按每次处理8比特数据的方式计算冗余校验,需要的CRC查找表大小为28X24,S卩6144比特,且后续8比特数据的处理依赖前8比特数据处理的结果,虽然内存消耗小,但数据处理量较大,数据处理的并行度较低。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种计算循环冗余校验码的方法,该方法能够提高数据处理的并行度,降低数据处理量和内存消耗。本专利技术的目的在于提供一种计算循环冗余校验码的装置,该装置能够提高数据处理的并行度,降低数据处理量和内存消耗。为达到上述目的,本专利技术的技术方案具体是这样实现的一种计算循环冗余校验码的方法,该方法包括A、根据CRCn生成多项式及移位寄存器的初始状态,生成一个基础查找表crctable、第一个快速查找表crctablea、第二个快速查找表crctableb和第三个快速查找表crctablec ;所述n为整数;B、判断待处理的输入数据数据量是否大于或等于32比特,如果是,读取待处理的输入数据的前32比特数据后,执行步骤C ;C、将待处理的输入数据的第m个字节数据与第m个字节的移位寄存器的初始状态值进行异或,以异或结果为索引,读取第m个快速查找表,得到第m个中间结果;所述m为I、2和3 ;将待处理的输入数据的第四个字节作为索引,读取基础查找表,得到第四个中间结果;D、将步骤C得到的第一个中间结果、第二个中间结果、第三个中间结果及第四个中间结果进行异或,将异或结果作为CRCn计算结果。 较佳地,所述步骤D之后进一步包括E、判断待处理的输入数据的数据量是否为0,如果是,结束计算,否则,将CRCn计算结果作为移位寄存器的初始状态值,执行步骤B。较佳地,所述步骤B之后进一步包括B’、在判定待处理的输入数据数据量小于32比特时,采用循环冗余校验的快速计算方法计算冗余校验码。上述方法中,所述步骤A包括Al、利用CRCn生成多项式、移位寄存器的初始状态及循环冗余校验的快速计算方法,生成一个基础查找表crctable ;A2、根据基础查找表及CRCn生成多项式,从利用标准查找表算法计算获得的CRC值及查找基础查找表的次数,反推演获得第一个快速查找表crctablea、第二个快速查找表crctableb及第三个快速查找表crctablec。上述方法中,所述步骤A2包括根据CRC8的基础查找表crctable及CRC8生成多项式,计算获得第一个快速查找表crctablea表不为crctablea = crctableOOOO ;计算获得第二个快速查找表crctableb表示为crctableb = crctableOOO ;计算获得第三个快速查找表crctablec表示为crctablec = crctableOO ;所述crctableOOOO 表示以字节xO为索引查找基础查找表crctable,并以前一次查表结果作为后一次查表的索引数据,循环查表四次的结果;所述crctableOOO 表示以字节xO为索引查找基础查找表crctable,并以前一次查表结果作为后一次查表的索引数据,循环查表三次的结果;所述crctableOO 表示以字节xO为索引查找基础查找表crctable,并以前一次查表结果作为后一次查表的索引数据,循环查表两次的结果。上述方法中,所述步骤A2包括根本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:许萍刘富芝史满姣
申请(专利权)人:普天信息技术研究院有限公司
类型:发明
国别省市:

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

1