一种64bit位宽的并行CRC32校验方法及装置的制作方法

文档序号:7648021阅读:1461来源:国知局
专利名称:一种64bit位宽的并行CRC32校验方法及装置的制作方法
技术领域
本发明涉及数据通信领域,尤其涉及一种64bit位宽的并行CRC32校验方法及装置。
背景技术
在数据通信系统中,由于外界干扰等原因,可能会因为线路接收端接收到的数据报文与发送端发出的数据报文不一致而导致数据报文发生错误。这些错误的报文传入系统中可能会对系统用户造成冲击,影响用户使用网络的质量。通讯系统中一般采用循环冗余校验算法(Cyclic Redundancy Check,简称为CRC) 对数据进行编码校验。CRC校验算法以具有高性能、简单、易于实现等优点在通讯系统中得到了广泛的应用。随着通讯系统性能的不断提升,一些高速通讯接口的出现,如3. 125/6. 25Gbps的 SERDES(并串行与串并行转换器)或XAUI (10(ibpS的以太网附件单元接口)接口,使得原来并行的CRC32算法面临位宽提升以及运行速率大幅提升的问题。当位宽增加至64bit时, 传统的CRC校验算法在资源消耗上将大幅增加,而资源消耗的增加将导致Fmax (可达最大的时钟频率)进一步下降。如

图1所示,传统的CRC32校验装置包括CRC32_D8模块、CRC32_D16模块、CRC32_ D24 模块、CRC32_D32 模块、CRC32_D40 模块、CRC32_D48 模块、CRC32_D56 模块及 CRC32_D64 模块。相应地,如图2所示,传统的CRC32校验流程包括校验数据输入后,若判断出该校验数据只有高8bit有效,则进入CRC32_D8模块进行计算,得到当前的CRC校验值;若判断出输入的数据只有高16bit数据有效,则进入CRC32_D16模块进行计算,得到当前的CRC 校验值;若判断出输入的数据只有高24bit数据有效,则进入CRC32_DM模块进行计算,得到当前CRC校验值;若判断出输入的数据只有高32bit数据有效,则进入CRC32_D32模块进行计算,得到当前的CRC校验值;若判断出输入的数据只有高40bit数据有效,则进入 CRC32_D40模块进行计算,得到当前的CRC校验值;若判断出输入的数据只有高48bit数据有效,则进入CRC32_D48模块进行计算,得到当前的CRC校验值;若判断出输入的数据只有高56bit数据有效,则进入CRC32_D56模块进行计算,得到当前的CRC校验值;若判断出输入的数据64bit数据有效,则进入CRC32_D64模块进行计算,得到当前的CRC校验值。该校验方法的优点是在单周期内即可完成CRC的校验计算,CRC计算的效率高;缺点是要实现该方法需要用到8个子模块,资源的消耗大幅增加,而资源的增加将导致Fmax进一步下降,系统的性能也会因此受到影响。如图3所示,基于传统算法的改进型C32校验装置,包括CRC32_D8模块、CRC32_ D16模块、CRC32_D24模块、CRC32_D32模块及CRC32_D64模块。相应地,如图4所示,改进型的CRC32校验流程包括校验数据输入后,若判断出该校验数据只有高Sbit有效,则进入CRC32_D8模块进行计算,得到当前的CRC校验值;若判断出输入的数据只有高16bit数据有效,则进入CRC32_D16模块进行计算,得到当前的CRC校验值;若输入的数据只有高24bit数据有效,则进入CRC32_DM模块进行计算,得到当前的CRC校验值;若输入的数据只有高32bit数据有效,则进入CRC32_D32模块进行计算,得到当前的CRC校验值;若输入的数据只有高40bit数据有效,则先进入CRC32_D32模块进行计算,将得到的CRC值作为中间数据,再进入CRC32_D8模块进行计算,得到最终的CRC校验值;若输入的数据只有高 48bit数据有效,则首先进入CRC32_D32模块进行计算,将得到的CRC值作为中间数据,再进入CRC32_D16模块进行计算,得到最终的CRC校验值;若输入的数据只有高56bit数据有效,则首先进入CRC32_D32模块进行计算,将得到的CRC值作为中间数据,再进入CRC32_ DM模块进行计算,得到最终的CRC校验值;若输入的数据64bit数据有效,则进入CRC32_ D64模块进行计算,得到当前的CRC校验值。该方法的优点是用5个子模块即可实现CRC32 的计算,但缺点是在计算40bit、48bit、56bit数据位宽的CRC校验值时,消耗的时钟周期会增加一倍。虽然资源的消耗有一定的减少,当系统要求的性能比较高时,如对于XAUI接口, Fmax需要最小156. 25MHz,低端芯片就无法满足该要求。如对于FPGA (Field-Programmable Gate Array,现场可编程门阵列)系统来讲,一般比较低端的FPGA很难达到这一要求;而若选用高端的FPGA,势必会造成成本的上升。因此采用该方法时对于低端器件的使用会受到一定的限制。

发明内容
本发明要解决的技术问题是提供一种64bit位宽的并行CRC32校验方法及装置, 以克服传统CRC以及基于传统CRC的改进型校验方法不能满足高速通讯接口要求的缺陷。为解决上述问题,本发明提供了一种64bit位宽的并行CRC32校验方法,包括对输入数据以64bit进行位宽匹配,若判断出输入数据不足64bit,则将预设的56 比特数据中低8i比特数据作为填充比特添加到所述输入数据的尾部,得到64bit的数据; 其中,i = 1、2、. . .、7 ;对所述64bit的数据进行CRC32-D64校验,然后将得到的校验结果与所述填充比特对应的CRC校验值进行比较,若两者相同,则判定CRC校验正确;若两者不同,则判定CRC 校验错误;所述填充比特对应的CRC校验值是利用校验矩阵Fm计算得到并预先存储的。进一步地,所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储是指 利用校验矩阵Fm计算出预设的56比特数据中低8η比特数据对应的CRC校验值,并存储所述56比特数据中低8η比特数据对应的CRC校验值,计算的步骤具体包括利用下式计算所述56比特数据中低8i比特数据对应的校验值C' 8i
权利要求
1.一种64bit位宽的并行CRC32校验方法,包括对输入数据以64bit进行位宽匹配,若判断出输入数据不足64bit,则将预设的56比特数据中低8i比特数据作为填充比特添加到所述输入数据的尾部,得到64bit的数据;其中,i = 1、2、· · .、7 ;对所述64bit的数据进行CRC32-D64校验,然后将得到的校验结果与所述填充比特对应的CRC校验值进行比较,若两者相同,则判定CRC校验正确;若两者不同,则判定CRC校验错误;所述填充比特对应的CRC校验值是利用校验矩阵Fm计算得到并预先存储的。
2.如权利要求1所述的方法,其特征在于,所述填充比特对应的CRC校验值是利用校验矩阵Fm计算得到并预先存储是指利用校验矩阵Fw2计算出预设的56比特数据中低8η比特数据对应的CRC校验值,并存储所述 56比特数据中低8η比特数据对应的CRC校验值,计算的步骤具体包括利用下式计算所述56比特数据中低8i比特数据对应的校验值C' 8i 其中,X表示按位进行逻辑与运算,④表示按位进行逻辑异或运算;Fd8表示Sbit位宽的数据生成矩阵;Fi32为32bit位宽数据对应的CRC32校验矩阵;C' ^值为0XC704dd7b ; D' 8i为所述56比特数据中低8i比特数据中的高8bit数据。
3.如权利要求1或2所述的方法,其特征在于,对所述64bit的数据进行CRC32-D64校验,具体包括采用下式计算所述64bit的数据的CRC校验值C1= (F164XC) θ (Fd64XD)其中,Fi64为64bit位宽数据对应的CRC32校验矩阵;Fd64为64bit位宽的数据校验矩阵;C为CRC校验正确的CRC特征值,其值为0XC704dd7b ;D为所述64bit的数据。
4.如权利要求2所述的方法,其特征在于所述存储所述56比特数据中低8η比特数据对应的CRC校验值,具体包括将计算得到的所述56比特数据中低8i比特数据对应的校验值C' 8i存储在以8i为特征值的地址索引的只读内存中。
5.一种64bit位宽的并行CRC32校验装置,包括数据补足对齐模块,用于对输入数据以64bit进行位宽匹配,若判断出输入数据不足 64bit,则将预设的56比特数据中低8i比特数据作为填充比特添加到所述输入数据的尾部,得到64bit的数据;其中,i = 1、2.....7 ;CRC32-D64生成模块,用于对所述64bit的数据进行CRC32-D64校验;CRC32数据校验比对模块,用于将CRC32-D64生成模块得到的校验结果与所述填充比特对应的CRC校验值进行比较,若两者相同,则判定CRC校验正确;若两者不同,则判定CRC 校验错误;所述填充比特对应的CRC校验值是利用校验矩阵Fm计算得到并预先存储的。
6.如权利要求5所述的装置,其特征在于,还包括CRC校验值生成模块;所述填充比特对应的CRC校验值是利用校验矩阵Fm计算得到并预先存储是指所述 CRC校验值生成模块用于利用校验矩阵Fm计算出预设的56比特数据中低8η比特数据对应的CRC校验值,并存储所述56比特数据中低8η比特数据对应的CRC校验值,计算的步骤具体包括所述CRC校验值生成模块用于利用下式计算所述56比特数据中低8i比特数据对应的校验值C' 8i
7.如权利要求5或6所述的装置,其特征在于,所述CRC32-D64生成模块用于对所述64bit的数据进行CRC32-D64校验,具体包括所述CRC32-D64生成模块用于采用下式计算所述64bit的 数据的CRC校验值
8.如权利要求6所述的装置,其特征在于所述CRC校验值生成模块用于存储所述56比特数据中低8η比特数据对应的CRC校验值,具体包括所述CRC校验值生成模块用于将计算得到的所述56比特数据中低8i比特数据对应的校验值C' 81存储在以8i为特征值的地址索引的只读内存中。
全文摘要
64bit位宽的并行CRC32校验方法及装置,所述方法包括对输入数据以64bit进行位宽匹配,若判断出输入数据不足64bit,则将预设的56比特数据中低8i比特数据作为填充比特添加到所述输入数据的尾部,得到64bit的数据;其中,i=1、2、...、7;对所述64bit的数据进行CRC32-D64校验,然后将得到的校验结果与所述填充比特对应的CRC校验值进行比较,若两者相同,则判定CRC校验正确;若两者不同,则判定CRC校验错误;所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储的。采用本发明后,使得对连续数据的校验在不损失性能的前提下,极大的缩减了资源,提升Fmax的频率。
文档编号H04L1/00GK102158316SQ201110103920
公开日2011年8月17日 申请日期2011年4月25日 优先权日2011年4月25日
发明者吴卫海 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1