CN102158316A - 一种64bit位宽的并行CRC32校验方法及装置 - Google Patents

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

Info

Publication number
CN102158316A
CN102158316A CN2011101039202A CN201110103920A CN102158316A CN 102158316 A CN102158316 A CN 102158316A CN 2011101039202 A CN2011101039202 A CN 2011101039202A CN 201110103920 A CN201110103920 A CN 201110103920A CN 102158316 A CN102158316 A CN 102158316A
Authority
CN
China
Prior art keywords
data
bit
64bit
crc
crc check
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011101039202A
Other languages
English (en)
Other versions
CN102158316B (zh
Inventor
吴卫海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201110103920.2A priority Critical patent/CN102158316B/zh
Publication of CN102158316A publication Critical patent/CN102158316A/zh
Application granted granted Critical
Publication of CN102158316B publication Critical patent/CN102158316B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

64bit位宽的并行CRC32校验方法及装置,所述方法包括:对输入数据以64bit进行位宽匹配,若判断出输入数据不足64bit,则将预设的56比特数据中低8i比特数据作为填充比特添加到所述输入数据的尾部,得到64bit的数据;其中,i=1、2、...、7;对所述64bit的数据进行CRC32-D64校验,然后将得到的校验结果与所述填充比特对应的CRC校验值进行比较,若两者相同,则判定CRC校验正确;若两者不同,则判定CRC校验错误;所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储的。采用本发明后,使得对连续数据的校验在不损失性能的前提下,极大的缩减了资源,提升Fmax的频率。

Description

一种64bit位宽的并行CRC32校验方法及装置
技术领域
本发明涉及数据通信领域,尤其涉及一种64bit位宽的并行CRC32校验方法及装置。
背景技术
在数据通信系统中,由于外界干扰等原因,可能会因为线路接收端接收到的数据报文与发送端发出的数据报文不一致而导致数据报文发生错误。这些错误的报文传入系统中可能会对系统用户造成冲击,影响用户使用网络的质量。
通讯系统中一般采用循环冗余校验算法(Cyclic Redundancy Check,简称为CRC)对数据进行编码校验。CRC校验算法以具有高性能、简单、易于实现等优点在通讯系统中得到了广泛的应用。
随着通讯系统性能的不断提升,一些高速通讯接口的出现,如3.125/6.25Gbps的SERDES(并串行与串并行转换器)或XAUI(10Gbps的以太网附件单元接口)接口,使得原来并行的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_D24模块进行计算,得到当前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校验流程包括:校验数据输入后,若判断出该校验数据只有高8bit有效,则进入CRC32_D8模块进行计算,得到当前的CRC校验值;若判断出输入的数据只有高16bit数据有效,则进入CRC32_D16模块进行计算,得到当前的CRC校验值;若输入的数据只有高24bit数据有效,则进入CRC32_D24模块进行计算,得到当前的CRC校验值;若输入的数据只有高32bit数据有效,则进入CRC32_D32模块进行计算,得到当前的CRC校验值;若输入的数据只有高40bit数据有效,则先进入CRC32_D32模块进行计算,将得到的CRC值作为中间数据,再进入CRC32_D8模块进行计算,得到最终的CRC校验值;若输入的数据只有高48bit数据有效,则首先进入CRC32_D32模块进行计算,将得到的CRC值作为中间数据,再进入CRC32_D16模块进行计算,得到最终的CRC校验值;若输入的数据只有高56bit数据有效,则首先进入CRC32_D32模块进行计算,将得到的CRC值作为中间数据,再进入CRC32_D24模块进行计算,得到最终的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校验值是利用校验矩阵Fi32计算得到并预先存储的。
进一步地,
所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储是指:利用校验矩阵Fi32计算出预设的56比特数据中低8n比特数据对应的CRC校验值,并存储所述56比特数据中低8n比特数据对应的CRC校验值,计算的步骤具体包括:
利用下式计算所述56比特数据中低8i比特数据对应的校验值C′8i
C 8 i ′ = ( F i 32 × C 8 ( i - 1 ) ′ ) ⊕ ( F d 8 × D 8 i ′ )
其中,×表示按位进行逻辑与运算,
Figure BDA0000057310470000041
表示按位进行逻辑异或运算;Fd8表示8bit位宽的数据生成矩阵;Fi32为32bit位宽数据对应的CRC32校验矩阵;C′0值为0xc704dd7b;D′8i为所述56比特数据中低8i比特数据中的高8bit数据。
进一步地,
对所述64bit的数据进行CRC32-D64校验,具体包括:
采用下式计算所述64bit的数据的CRC校验值:
c i = ( F i 64 × C ) ⊕ ( F d 64 × D )
其中,Fi64为64bit位宽数据对应的CRC32校验矩阵;Fd64为64bit位宽的数据校验矩阵;C为CRC校验正确的CRC特征值,其值为0xc704dd7b;D为所述64bit的数据。
进一步地,
所述存储所述56比特数据中低8n比特数据对应的CRC校验值,具体包括:将计算得到的所述56比特数据中低8i比特数据对应的校验值C′8i存储在以8i为特征值的地址索引的只读内存中。
相应地,本发明还提供了一种64bit位宽的并行CRC32校验装置,包括:
数据补足对齐模块,用于对输入数据以64bit进行位宽匹配,若判断出输入数据不足64bit,则将预设的56比特数据中低8i比特数据作为填充比特添加到所述输入数据的尾部,得到64bit的数据;其中,i=1、2、...、7;
CRC32-D64生成模块,用于对所述64bit的数据进行CRC32-D64校验;
CRC32数据校验比对模块,用于将CRC32-D64生成模块得到的校验结果与所述填充比特对应的CRC校验值进行比较,若两者相同,则判定CRC校验正确;若两者不同,则判定CRC校验错误;所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储的。
进一步地,所述装置还包括:CRC校验值生成模块;
所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储是指:所述CRC校验值生成模块用于利用校验矩阵Fi32计算出预设的56比特数据中低8n比特数据对应的CRC校验值,并存储所述56比特数据中低8n比特数据对应的CRC校验值,计算的步骤具体包括:
所述CRC校验值生成模块用于利用下式计算所述56比特数据中低8i比特数据对应的校验值C′8i
C 8 i ′ = ( F i 32 × C 8 ( i - 1 ) ′ ) ⊕ ( F d 8 × D 8 i ′ )
其中,×表示按位进行逻辑与运算,
Figure BDA0000057310470000052
表示按位进行逻辑异或运算;Fd8表示8bit位宽的数据生成矩阵;Fi32为32bit位宽数据对应的CRC32校验矩阵;C′0值为0xc704dd7b;D′8i为所述56比特数据中低8i比特数据中的高8bit数据。
进一步地,
所述CRC32-D64生成模块用于对所述64bit的数据进行CRC32-D64校验,具体包括:
所述CRC32-D64生成模块用于采用下式计算所述64bit的数据的CRC校验值:
c i = ( F i 64 × C ) ⊕ ( F d 64 × D )
其中,Fi64为64bit位宽数据对应的CRC32校验矩阵;Fd64为64bit位宽的数据校验矩阵;C为CRC校验正确的CRC特征值,其值为0xc704dd7b;D为所述64bit的数据。
进一步地,
所述CRC校验值生成模块用于存储所述56比特数据中低8n比特数据对应的CRC校验值,具体包括:所述CRC校验值生成模块用于将计算得到的所述56比特数据中低8i比特数据对应的校验值C′8i存储在以8i为特征值的地址索引的只读内存中。
采用本发明后,消耗的资源大量减少,占用的模块由改进型的5个缩减为1个,消耗的资源约缩减为原来的40%,且校验周期缩减为与传统算法一致的单个周期,使得连续数据的校验在不损失性能的前提下,极大的缩减了资源,提升Fmax的频率,使得CRC校验算法应用的范围更广。
附图说明
图1为传统并行CRC32的64bit数据输入的计算框图;
图2为传统并行CRC32的64bit数据输入的计算流程;
图3为改进型并行CRC32的输入数据64bit计算框图;
图4为改进型并行CRC32的输入数据64bit计算流程;
图5为本发明并行CRC32的输入数据64bit计算框图;
图6为本发明并行CRC32的输入数据64bit数据对齐过程;
图7为本发明并行CRC32的输入数据64bit计算框图。
具体实施方式
下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在本实施例中,64bit位宽的并行CRC32校验方法,包括:
1、对输入数据以64bit进行位宽匹配,若判断出输入数据尾部不足64bit,则将上述预设的56比特数据中低8i比特数据作为填充比特添加到该输入数据的尾部,得到64bit的数据;其中,i=1、2、...、7;
2、利用校验矩阵Fi64对该64bit的数据进行CRC32-D64校验,然后将得到的校验结果与上述填充比特对应的CRC校验值进行比较,若两者相同则判定CRC校验正确;否则,判定CRC校验错误。其中,填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储的。
下面对上述方法进行进一步说明。
具体地,首先,获取待校验的输入数据,将待校验的输入数据以64bit进行位宽的匹配,即:对于尾部不足64bit的输入数据,在预设的56bit的2进制常数中选取相应位数的低位数据作为填充进行补足,补足后的数据D=[D0,D1,D2,......,D62,D63]T;其中:Dm=0或1,m=0,1,...,63。同时记录填充数据的长度L,L的取值为0bit(表示无需补足对齐)、8bit、16bit、24bit、32bit、40bit、48bit、56bit。填充数据d′=[D0,D1,D2,......,DL-2,DL-1]。
然后,根据CRC校验值的迭代计算公式得到上述预设的2进制常数中,低8bit、低16bit、低24bit、低32bit、低40bit、低48bit及低56bit数据的校验值C’,即:
C 8 i ′ = ( F i 32 × C 8 ( i - 1 ) ′ ) ⊕ ( F d 8 × D 8 i ′ ) - - - ( 1 )
其中,i=1、2、...、7;×表示按位进行逻辑与运算,
Figure BDA0000057310470000072
表示按位进行逻辑异或运算;Fd8表示8bit位宽的数据生成矩阵,其值如式(2)所示;Fi32为32bit位宽数据对应的CRC32校验矩阵,其值如式(3)所示;C′8i为上述预设的2进制常数中低8ibit数据的CRC校验值,C′0为CRC校验正确的CRC特征值,其值为0xc704dd7b;D′8i为上述预设的2进制常数中低8ibit数据中的高8bit数据。
Figure BDA0000057310470000081
Figure BDA0000057310470000091
对式(1)经过迭代简化后得到如下计算公式:
Figure BDA0000057310470000101
Figure BDA0000057310470000102
Figure BDA0000057310470000104
Figure BDA0000057310470000106
Figure BDA0000057310470000107
Figure BDA0000057310470000108
Figure BDA0000057310470000109
Figure BDA00000573104700001010
Figure BDA00000573104700001011
Figure BDA00000573104700001013
Figure BDA00000573104700001014
Figure BDA00000573104700001015
Figure BDA00000573104700001018
Figure BDA00000573104700001019
Figure BDA00000573104700001020
Figure BDA00000573104700001021
Figure BDA00000573104700001023
Figure BDA00000573104700001024
Figure BDA00000573104700001025
Figure BDA00000573104700001026
Figure BDA00000573104700001028
Figure BDA00000573104700001029
Figure BDA00000573104700001030
Figure BDA00000573104700001031
Figure BDA00000573104700001032
其中,C′k表示C′8i中按照从低位到高位的顺序位于第k+1位的数据,Ck表示C′8(i-1)中按照从低位到高位的顺序位于第k+1位的数据,其中,k=1,2,......,31;D′j表示D′8i中按照从低位到高位的顺序位于第j+1位的数据,其中,j=1,2,......,7。
按照上述公式(4)经过7轮迭代得到8组CRC校验值。因为所选的填充数据为定值,因此计算出的8组CRC校验值亦为定值。因此在计算过程中一旦选定56比特的填充数据,C′8i的数据亦随即固定。
为减少资源的占用将C′L的数据存储在以L为特征值的地址索引的ROM(Read-Only Memory,只读内存)中,如表1所示。
表1填充数据长度、存储地址及CRC校验值之间的关系表
  填充数据长度   存储地址   CRC校验值
  0bit   0x0   C′0
  8bit   0x1   C′8
  16bit   0x2   C′16
  24bit   0x3   C′24
  32bit   0x4   C′32
  40bit   0x5   C′40
  48bit   0x6   C′48
56bit 0x7 C′56
其次,对经过填充数据填充的64bit数据进行CRC得到CRC当前校验值ci,即采用下述公式:
c i = ( F i 64 × C ) ⊕ ( F d 64 × D ) - - - ( 5 )
其中,Fi64为64bit位宽数据对应的CRC32校验矩阵,其值如式(6)所示;Fd64为64bit位宽的数据校验矩阵,其值如式(7)所示;C为CRC校验正确的CRC特征值,其值为0xc704dd7b;D为经过填充数据填充的64bit数据。
Figure BDA0000057310470000121
Figure BDA0000057310470000131
对式(5)经过迭代简化后得到如下计算公式:
Figure BDA0000057310470000132
Figure BDA0000057310470000133
Figure BDA0000057310470000134
Figure BDA0000057310470000135
Figure BDA0000057310470000136
Figure BDA0000057310470000137
Figure BDA0000057310470000141
Figure BDA0000057310470000143
Figure BDA0000057310470000144
Figure BDA0000057310470000145
Figure BDA0000057310470000146
Figure BDA0000057310470000147
Figure BDA0000057310470000148
Figure BDA0000057310470000149
Figure BDA00000573104700001410
Figure BDA00000573104700001411
Figure BDA00000573104700001412
Figure BDA00000573104700001413
Figure BDA00000573104700001414
Figure BDA00000573104700001415
Figure BDA00000573104700001416
Figure BDA00000573104700001417
Figure BDA00000573104700001418
Figure BDA00000573104700001419
Figure BDA00000573104700001420
Figure BDA00000573104700001421
Figure BDA00000573104700001422
Figure BDA00000573104700001424
Figure BDA0000057310470000151
Figure BDA0000057310470000152
Figure BDA0000057310470000154
Figure BDA0000057310470000156
Figure BDA0000057310470000158
Figure BDA00000573104700001510
Figure BDA00000573104700001512
Figure BDA00000573104700001513
Figure BDA00000573104700001514
Figure BDA00000573104700001515
Figure BDA00000573104700001517
Figure BDA00000573104700001518
Figure BDA00000573104700001519
Figure BDA00000573104700001520
Figure BDA00000573104700001522
Figure BDA00000573104700001523
Figure BDA0000057310470000161
Figure BDA0000057310470000162
Figure BDA0000057310470000163
Figure BDA0000057310470000164
Figure BDA0000057310470000165
Figure BDA0000057310470000166
Figure BDA0000057310470000168
Figure BDA0000057310470000169
Figure BDA00000573104700001611
Figure BDA00000573104700001612
Figure BDA00000573104700001613
Figure BDA00000573104700001615
Figure BDA00000573104700001616
Figure BDA00000573104700001617
Figure BDA00000573104700001619
Figure BDA00000573104700001620
Figure BDA00000573104700001621
Figure BDA00000573104700001622
Figure BDA00000573104700001623
Figure BDA00000573104700001624
Figure BDA0000057310470000172
Figure BDA0000057310470000173
Figure BDA0000057310470000174
Figure BDA0000057310470000176
Figure BDA0000057310470000177
Figure BDA0000057310470000178
Figure BDA0000057310470000179
Figure BDA00000573104700001710
Figure BDA00000573104700001711
Figure BDA00000573104700001712
Figure BDA00000573104700001714
Figure BDA00000573104700001715
Figure BDA00000573104700001716
Figure BDA00000573104700001717
Figure BDA00000573104700001718
Figure BDA00000573104700001719
Figure BDA00000573104700001721
Figure BDA00000573104700001724
Figure BDA0000057310470000181
Figure BDA0000057310470000182
Figure BDA0000057310470000183
Figure BDA0000057310470000184
Figure BDA0000057310470000185
Figure BDA0000057310470000186
Figure BDA0000057310470000187
Figure BDA0000057310470000188
Figure BDA0000057310470000189
Figure BDA00000573104700001810
Figure BDA00000573104700001811
Figure BDA00000573104700001812
Figure BDA00000573104700001813
Figure BDA00000573104700001815
Figure BDA00000573104700001817
Figure BDA00000573104700001818
Figure BDA00000573104700001819
Figure BDA00000573104700001822
Figure BDA00000573104700001823
Figure BDA00000573104700001824
Figure BDA0000057310470000192
Figure BDA0000057310470000193
Figure BDA0000057310470000195
Figure BDA0000057310470000196
Figure BDA0000057310470000197
Figure BDA0000057310470000198
Figure BDA0000057310470000199
Figure BDA00000573104700001911
Figure BDA00000573104700001913
Figure BDA00000573104700001914
Figure BDA00000573104700001915
Figure BDA00000573104700001916
Figure BDA00000573104700001917
Figure BDA00000573104700001919
Figure BDA00000573104700001920
Figure BDA00000573104700001921
Figure BDA00000573104700001922
其中,ci表示c中按照从低位到高位的顺序位于第i+1位的数据,Ci表示CRC特征值中按照从低位到高位的顺序位于第i+1位的数据,其中,i=1,2,......,31;Dj表示经过填充数据填充的64bit数据D中按照从低位到高位的顺序位于第j+1位的数据,其中,j=1,2,......,63。
将最后计算出的CRC值c与相应的填充数据的位宽L对应的地址空间的数据进行比较。若数据输入为64bit,则选择表项对应地址数据C′0进行数据比较;若输入的数据为56bit,需要填充8bit数据,则选择表项对应的地址数据C′8进行数据比较;若输入的数据为48bit,需要填充16bit数据,则选择表项对应的地址数据C′16进行数据比较;若输入的数据为40bit,需要填充24bit数据,则选择表项对应的地址数据C′24进行数据比较;若输入的数据为32bit,需要填充32bit数据,则选择表项对应的地址数据C′32进行数据比较;若输入的数据为24bit,需要填充40bit数据,则选择表项对应的地址数据C′40进行数据比较;若输入的数据为16bit,需要填充48bit数据,则选择表项对应的地址数据C′48进行数据比较;若输入的数据为8bit,需要填充56bit数据,则选择表项对应的地址数据C′56进行数据比较。若两个进行比较的数据相等,则表示CRC校验值正确,若不相等则表示CRC校验值错误。此时完成全部数据的CRC校验。
本发明还提供了一种64bit位宽的并行CRC32校验装置,包括:
数据补足对齐模块,用于对输入数据以64bit进行位宽匹配,若判断出输入数据不足64bit,则将预设的56比特数据中低8i比特数据作为填充比特添加到所述输入数据的尾部,得到64bit的数据;其中,i=1、2、...、7;
CRC32-D64生成模块,用于对所述64bit的数据进行CRC32-D64校验;
CRC32数据校验比对模块,用于将CRC32-D64生成模块得到的校验结果与所述填充比特对应的CRC校验值进行比较,若两者相同,则判定CRC校验正确;若两者不同,则判定CRC校验错误;所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储的。
较优地,所述装置还包括:CRC校验值生成模块;
所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储是指:所述CRC校验值生成模块用于利用校验矩阵Fi32计算出预设的56比特数据中低8n比特数据对应的CRC校验值,并存储所述56比特数据中低8n比特数据对应的CRC校验值,计算的步骤具体包括:
所述CRC校验值生成模块用于利用下式计算所述56比特数据中低8i比特数据对应的校验值C′8i
C 8 i ′ = ( F i 32 × C 8 ( i - 1 ) ′ ) ⊕ ( F d 8 × D 8 i ′ )
其中,×表示按位进行逻辑与运算,
Figure BDA0000057310470000212
表示按位进行逻辑异或运算;Fd8表示8bit位宽的数据生成矩阵;Fi32为32bit位宽数据对应的CRC32校验矩阵;C′0值为0xc704dd7b;D′8i为所述56比特数据中低8i比特数据中的高8bit数据。
较优地,
所述CRC32-D64生成模块用于对所述64bit的数据进行CRC32-D64校验,具体包括:
所述CRC32-D64生成模块用于采用下式计算所述64bit的数据的CRC校验值:
c i = ( F i 64 × C ) ⊕ ( F d 64 × D )
其中,Fi64为64bit位宽数据对应的CRC32校验矩阵;Fd64为64bit位宽的数据校验矩阵;C为CRC校验正确的CRC特征值,其值为0xc704dd7b;D为所述64bit的数据。
较优地,
所述CRC校验值生成模块用于存储所述56比特数据中低8n比特数据对应的CRC校验值,具体包括:所述CRC校验值生成模块用于将计算得到的所述56比特数据中低8i比特数据对应的校验值C′8i存储在以8i为特征值的地址索引的只读内存中。
下面用本发明的一个示例进行进一步说明。
本示例公开的64bit并行输入的CRC32的校验算法如图6所示。
不失一般性,以填充数据为0为例,说明输入数据尾部为8bit的CRC32的计算流程。根据上述公式(1):将D′8i=0带入方程得到如下方程式,第一轮计算令C’={C31,C30,C29,C28,C27,C26......C3,C2,C1,C0}
C′0={0xc704dd7b}={1,1,0,0,0,1,1,1,0,0,0,0,0,1,0,0,1,1,0,1,1,1,0,1,0,1,1,1,1,0,1,1},则经过第一轮计算得到C′8=0xc8721e29,第二轮计算得到C′16=0x91e9a138,第三轮计算得到C′24=0x8ad76f98,第四轮计算得到C′32=0x6904bb59,第五轮计算得到C′40=0x8104c946,第六轮计算得到C′48=0x3a7abc72,第七轮计算得到C′56=0x4710bb9c。将上述计算得到的C′L各CRC校验值存储在以L为特征值的地址索引的ROM中,如表2所示。
表2CRC校验值及存储地址的对应关系
  地址   CRC校验值
  0bit填充,地址0x0   0xc704dd7b
  8bit填充,地址0x1   0xc8721e29
  16bit填充,地址0x2   0x91e9a138
  24bit填充,地址0x3   0x8ad76f98
  32bit填充,地址0x4   0x6904bb59
  40bit填充,地址0x5   0x8104c946
  48bit填充,地址0x6   0x3a7abc72
  56bit填充,地址0x7   0x4710bb9c
根据上述CRC校验值的计算公式(5)计算得到CRC当前的校验值。将最后计算出的当前校验值与填充比特位数L对应的地址空间的数据C′L进行比较。在本示例中,输入的数据为8bit则需要填充56bit的数据0,则选择表项中对应的地址保存的数据0x4710bb9c进行数据比较;若两个数据相等则表示CRC校验值正确,若不等则表示CRC校验值错误。此时完成全部数据的CRC校验。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

Claims (8)

1.一种64bit位宽的并行CRC32校验方法,包括:
对输入数据以64bit进行位宽匹配,若判断出输入数据不足64bit,则将预设的56比特数据中低8i比特数据作为填充比特添加到所述输入数据的尾部,得到64bit的数据;其中,i=1、2、...、7;
对所述64bit的数据进行CRC32-D64校验,然后将得到的校验结果与所述填充比特对应的CRC校验值进行比较,若两者相同,则判定CRC校验正确;若两者不同,则判定CRC校验错误;所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储的。
2.如权利要求1所述的方法,其特征在于,
所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储是指:利用校验矩阵Fi32计算出预设的56比特数据中低8n比特数据对应的CRC校验值,并存储所述56比特数据中低8n比特数据对应的CRC校验值,计算的步骤具体包括:
利用下式计算所述56比特数据中低8i比特数据对应的校验值C′8i
C 8 i ′ = ( F i 32 × C 8 ( i - 1 ) ′ ) ⊕ ( F d 8 × D 8 i ′ )
其中,×表示按位进行逻辑与运算,
Figure FDA0000057310460000012
表示按位进行逻辑异或运算;Fd8表示8bit位宽的数据生成矩阵;Fi32为32bit位宽数据对应的CRC32校验矩阵;C′0值为0xc704dd7b;D′8i为所述56比特数据中低8i比特数据中的高8bit数据。
3.如权利要求1或2所述的方法,其特征在于,
对所述64bit的数据进行CRC32-D64校验,具体包括:
采用下式计算所述64bit的数据的CRC校验值:
c i = ( F i 64 × C ) ⊕ ( F d 64 × D )
其中,Fi64为64bit位宽数据对应的CRC32校验矩阵;Fd64为64bit位宽的数据校验矩阵;C为CRC校验正确的CRC特征值,其值为0xc704dd7b;D为所述64bit的数据。
4.如权利要求2所述的方法,其特征在于:
所述存储所述56比特数据中低8n比特数据对应的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校验值是利用校验矩阵Fi32计算得到并预先存储的。
6.如权利要求5所述的装置,其特征在于,还包括:CRC校验值生成模块;
所述填充比特对应的CRC校验值是利用校验矩阵Fi32计算得到并预先存储是指:所述CRC校验值生成模块用于利用校验矩阵Fi32计算出预设的56比特数据中低8n比特数据对应的CRC校验值,并存储所述56比特数据中低8n比特数据对应的CRC校验值,计算的步骤具体包括:
所述CRC校验值生成模块用于利用下式计算所述56比特数据中低8i比特数据对应的校验值C′8i
C 8 i ′ = ( F i 32 × C 8 ( i - 1 ) ′ ) ⊕ ( F d 8 × D 8 i ′ )
 其中,×表示按位进行逻辑与运算,
Figure FDA0000057310460000022
表示按位进行逻辑异或运算;Fd8表示8bit位宽的数据生成矩阵;Fi32为32bit位宽数据对应的CRC32校验矩阵;C′0值为0xc704dd7b;D′8i为所述56比特数据中低8i比特数据中的高8bit数据。
7.如权利要求5或6所述的装置,其特征在于,
所述CRC32-D64生成模块用于对所述64bit的数据进行CRC32-D64校验,具体包括:
所述CRC32-D64生成模块用于采用下式计算所述64bit的数据的CRC校验值:
c i = ( F i 64 × C ) ⊕ ( F d 64 × D )
其中,Fi64为64bit位宽数据对应的CRC32校验矩阵;Fd64为64bit位宽的数据校验矩阵;C为CRC校验正确的CRC特征值,其值为0xc704dd7b;D为所述64bit的数据。
8.如权利要求6所述的装置,其特征在于:
所述CRC校验值生成模块用于存储所述56比特数据中低8n比特数据对应的CRC校验值,具体包括:所述CRC校验值生成模块用于将计算得到的所述56比特数据中低8i比特数据对应的校验值C′8i存储在以8i为特征值的地址索引的只读内存中。
CN201110103920.2A 2011-04-25 2011-04-25 一种64bit位宽的并行CRC32校验方法及装置 Active CN102158316B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110103920.2A CN102158316B (zh) 2011-04-25 2011-04-25 一种64bit位宽的并行CRC32校验方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110103920.2A CN102158316B (zh) 2011-04-25 2011-04-25 一种64bit位宽的并行CRC32校验方法及装置

Publications (2)

Publication Number Publication Date
CN102158316A true CN102158316A (zh) 2011-08-17
CN102158316B CN102158316B (zh) 2015-06-17

Family

ID=44439524

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110103920.2A Active CN102158316B (zh) 2011-04-25 2011-04-25 一种64bit位宽的并行CRC32校验方法及装置

Country Status (1)

Country Link
CN (1) CN102158316B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752081A (zh) * 2012-07-03 2012-10-24 Ut斯达康通讯有限公司 一种高速以太网中并行循环冗余校验方法及装置
CN103970692A (zh) * 2013-01-25 2014-08-06 北京旋极信息技术股份有限公司 RapidIO串行数据处理方法
CN104461764A (zh) * 2014-12-16 2015-03-25 北京控制工程研究所 一种内置crc校验码的fpga配置文件生成方法
CN104639294A (zh) * 2015-02-10 2015-05-20 浪潮电子信息产业股份有限公司 一种改进的crc校验实现方法
CN105022001A (zh) * 2014-04-25 2015-11-04 深圳创动科技有限公司 光伏逆变器并网前的检查方法及装置
CN107733568A (zh) * 2017-09-22 2018-02-23 烽火通信科技股份有限公司 基于fpga实现crc并行计算的方法及装置
CN109992892A (zh) * 2019-04-02 2019-07-09 苏州中晟宏芯信息科技有限公司 一种参考模型校验方法、装置、电子设备及可读存储介质
CN112306741A (zh) * 2020-11-19 2021-02-02 山东云海国创云计算装备产业创新中心有限公司 一种crc校验方法及相关装置
CN113904754A (zh) * 2021-09-29 2022-01-07 山东云海国创云计算装备产业创新中心有限公司 一种crc纠错方法及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124226A1 (en) * 2001-03-05 2002-09-05 Nec Corporation Arithmetic operation method for cyclic redundancy check and arithmetic operation circuit for cyclic redundancy check
CN101478369A (zh) * 2009-01-05 2009-07-08 深圳华为通信技术有限公司 一种crc校验的方法和系统及crc初值影响矩阵
CN101702639A (zh) * 2009-11-23 2010-05-05 成都市华为赛门铁克科技有限公司 循环冗余校验的校验值计算方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124226A1 (en) * 2001-03-05 2002-09-05 Nec Corporation Arithmetic operation method for cyclic redundancy check and arithmetic operation circuit for cyclic redundancy check
CN101478369A (zh) * 2009-01-05 2009-07-08 深圳华为通信技术有限公司 一种crc校验的方法和系统及crc初值影响矩阵
CN101702639A (zh) * 2009-11-23 2010-05-05 成都市华为赛门铁克科技有限公司 循环冗余校验的校验值计算方法及装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752081B (zh) * 2012-07-03 2014-11-26 Ut斯达康通讯有限公司 一种高速以太网中并行循环冗余校验方法及装置
CN102752081A (zh) * 2012-07-03 2012-10-24 Ut斯达康通讯有限公司 一种高速以太网中并行循环冗余校验方法及装置
CN103970692A (zh) * 2013-01-25 2014-08-06 北京旋极信息技术股份有限公司 RapidIO串行数据处理方法
CN103970692B (zh) * 2013-01-25 2017-08-25 北京旋极信息技术股份有限公司 RapidIO串行数据处理方法
CN105022001A (zh) * 2014-04-25 2015-11-04 深圳创动科技有限公司 光伏逆变器并网前的检查方法及装置
CN104461764B (zh) * 2014-12-16 2015-12-30 北京控制工程研究所 一种内置crc校验码的fpga配置文件生成方法
CN104461764A (zh) * 2014-12-16 2015-03-25 北京控制工程研究所 一种内置crc校验码的fpga配置文件生成方法
CN104639294A (zh) * 2015-02-10 2015-05-20 浪潮电子信息产业股份有限公司 一种改进的crc校验实现方法
CN107733568A (zh) * 2017-09-22 2018-02-23 烽火通信科技股份有限公司 基于fpga实现crc并行计算的方法及装置
CN107733568B (zh) * 2017-09-22 2020-05-12 烽火通信科技股份有限公司 基于fpga实现crc并行计算的方法及装置
CN109992892A (zh) * 2019-04-02 2019-07-09 苏州中晟宏芯信息科技有限公司 一种参考模型校验方法、装置、电子设备及可读存储介质
CN109992892B (zh) * 2019-04-02 2023-12-26 合芯科技(苏州)有限公司 一种参考模型校验方法、装置、电子设备及可读存储介质
CN112306741A (zh) * 2020-11-19 2021-02-02 山东云海国创云计算装备产业创新中心有限公司 一种crc校验方法及相关装置
CN113904754A (zh) * 2021-09-29 2022-01-07 山东云海国创云计算装备产业创新中心有限公司 一种crc纠错方法及相关装置

Also Published As

Publication number Publication date
CN102158316B (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
CN102158316A (zh) 一种64bit位宽的并行CRC32校验方法及装置
CN111143107B (zh) 一种fpga单粒子反转校验电路和方法
CN104484238B (zh) 一种用于sram型fpga配置刷新的crc校验方法
JP2019533345A (ja) ポーラー符号を使用してデータを符号化するための方法及び装置
CN110326221A (zh) 一种用于为极化码生成有序序列的方法
KR101773490B1 (ko) 데이터-의존 회로 경로 응답들을 이용하는 고유하고 복제불가한 플랫폼 식별자들
CN103701566A (zh) 一种校验方法和装置
US20220368356A1 (en) Systems for error reduction of encoded data using neural networks
CN103795502A (zh) 一种数据帧校验码生成方法和装置
TW201517045A (zh) 在固態記憶體系統中基於延遲的資料再利用的系統及方法
CN109392100A (zh) 一种确定传输块大小的方法、装置及设备
CN115116530A (zh) 存储器的校验管脚处理方法、装置、设备和存储介质
CN107293330B (zh) 对随机存取存储器ram进行仿真验证的方法和仿真验证系统
CN112306741A (zh) 一种crc校验方法及相关装置
CN108270508B (zh) 一种循环冗余校验crc实现方法、装置及网络设备
CN104240747A (zh) 一种多媒体数据获取的方法及装置
US8683291B2 (en) High throughput frame check sequence module architecture
CN107770239A (zh) 用于通过网络通信的方法和设备
US9246491B2 (en) Method and apparatus for performing pipelined operations on parallel input data with feedback
CN110750945B (zh) 一种芯片的仿真方法、装置、仿真芯片以及相关产品
CN103260154B (zh) 一种基于128-eia3的完整性保护增强方法
JP6567754B2 (ja) イーサネット(登録商標)フレーム検知回路
CN103763064A (zh) 适用于超高速通讯系统的循环冗余校验码生成方法与电路
CN105356966B (zh) 循环冗余校验实现方法、装置和网络设备
CN105790887A (zh) 用于为分组生成并行crc值的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant