CN1193294C - 一种多通道多位并行计算crc码的方法 - Google Patents

一种多通道多位并行计算crc码的方法 Download PDF

Info

Publication number
CN1193294C
CN1193294C CNB031144632A CN03114463A CN1193294C CN 1193294 C CN1193294 C CN 1193294C CN B031144632 A CNB031144632 A CN B031144632A CN 03114463 A CN03114463 A CN 03114463A CN 1193294 C CN1193294 C CN 1193294C
Authority
CN
China
Prior art keywords
data
remainder
crc
output
division
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.)
Expired - Fee Related
Application number
CNB031144632A
Other languages
English (en)
Other versions
CN1431594A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CNB031144632A priority Critical patent/CN1193294C/zh
Publication of CN1431594A publication Critical patent/CN1431594A/zh
Application granted granted Critical
Publication of CN1193294C publication Critical patent/CN1193294C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Abstract

本发明公开了一种利用多通道多位并行计算循环冗余校验(CRC)码的方法。该方法直接将整个待计算CRC码数据按每个长度为LS位分割成多个数据块,并将各数据块按顺序依次放入第(1,2,3,…,N-1,N)个通道,由该N个通道同时对各自通道中的数据块进行CRC计算,得到第(1,2,3,…,N-1,N)个通道中数据块的CRC子码(r1,r2,…,rN-1,rN);再通过构建除法余数变换表,对第1到第N-1个通道的CRC子码(r1,r2,…,rN-1)进行除法余数变换查表,得到变换后的CRC子码(R1,R2,…,RN-1);最后对变换后的CRC子码(R1,R2,…,RN-1)逐一进行异或计算后,再与rN进行异或计算,得到整个待计算数据CRC码。该方法具有计算速度快、易于实现、成本低之优点,可用于10G以太网和40 Gbps SDH等未来高速网络中的CRC计算。

Description

一种多通道多位并行计算CRC码的方法
技术领域
本发明涉及数据传输技术领域,具体的说是一种用多通道多位并行计算循环冗余校验(CRC)码计算的方法。
背景技术
在各种各样的传输系统和网络中,为保证数据在对等端点间正确传递,需要一定的纠检错编码。通常发送端要将需传送的数据用CRC进行校验码计算,并将校验码附在传送的数据后一起发送。接收端要用相同的方法进行校验码计算,将所得的CRC码与接收的CRC码进行比较,如果一致说明数据传送无误,反之数据传送有差错。如果出现差错,可采用编码原理进行差错纠正或用各种自动重发请求(ARQ)技术让发送端重新传送该数据副本。
现有技术中,CRC编码产生和解码校验计算均可由软件或硬件完成。软件计算和硬件计算均分为串行与并行两种方式。其中,硬件串行计算可用已有芯片或由除法电路完成,如高级数据链路控制(HDLC)实现芯片等。硬件并行计算由异或逻辑电路和余数缓存器及相关控制电路组成,并采用可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)等器件实现。由于硬件或软件采用并行运算均可有效地提高计算速度,故已有文献多为研究特定位数的并行计算原理与性能。例如,由中国国家知识产权局2001年10月31日公开,公开号为CN 1319801A的专利申请,“用于循环冗余校验的有效计算方法及装置”就是“在一个使用流水线处理器上,通过将输入数据分为若干独立的数据流,对每个独立的数据流进行一个循环冗余校验计算,同时执行对循环冗余校验查询表的访问。因为该循环冗余校验处理独立的数据流,从查询表读出循环冗余校验的等待时间被有效地减少”,如图4所示。该方法由于采用交替取出数据放入每个队列,每一个队列用软件查表法计算CRC码。因而存在以下缺点:
1)交替取出数据控制复杂,而且降低了计算速度。假定待计算数据分为3个队列,计算数据表示为d1d2d3d4d5d6...(di为每次计算数据,i=1,2,...),它将数据分为(d1d4...),(d2d5...),(d3d6...)三个队列,每个队列依次交替取数。这种方法比将数据直接分为三块控制复杂,直接分为三个队列的数据可表示为(d1,d2,...,dN-1,dN),(dN+1,dN+2,...,dN+N-1,dN+N),(d2N+1,d2N+2,...,d2N+N-1,d2N+N);
2)每一个队列采用软件查表法计算CRC码,无法满足10G以太网(1G=109)、40Gbps同步数字序列SDH所需超高速CRC计算(bps=bit per second,比特(位)/秒);
3)该专利申请中输入数据与循环冗余校验进行异或,只适用于输入数据宽度与循环冗余校验码宽度相等,而不能用于输入数据宽度大于或小于循环冗余校验码宽度,如图5所示。
又如,由中国国家知识产权局2001年11月28日公开,公开号为CN 1324517A的专利申请,“用于生成循环冗余校验代码的并行循环冗余校验生成电路”主要涉及一个并行CRC生成电路,通过输入T位并行数据和前一次的CRC码值,求得当前的CRC码值。其主要贡献是将某一位CRC码与并行数据、前一次的CRC码值的相关项数,最大限度地减少。但删除并行数据和前一次的CRC码值的相关项数中重复项需要软件计算,而且没有考虑数据的对齐处理,即如果按某一特定位数(如16)完成CRC码计算,但如果最后一次计算时的数据位数小于特定位数,则该电路无法工作。
在已有的CRC码计算方法中,一般仅有一个计算器,这对于10G以太网和40Gbps SDH传输中所需超高速计算来说是非常困难的。如morethanip公司提供的10G以太网CRC计算集成电路中间产品(IP),采用64位并行计算,需要156MHz的工作时钟。由于该计算的工作时钟频率高,因而存在着抗干扰能力差和可靠性差,及成本高的缺陷。
发明内容:
本发明的目的在于克服上述已有技术的不足,提出了一种用多通道多位并行计算CRC码的方法。
实现本发明目的技术方案是将计算数据直接分成多块,由多个计算器同时运行计算CRC码,每一块数据在每个计算器中独立计算,且每个计算器采用多位并行CRC码硬件计算法,还考虑对齐处理而适用于任意数据长度,通过对所有单个通道的CRC码进行相关合并计算,得到整个待计算数据的CRC码。其过程如下:
(1)直接将整个待计算CRC码的数据按每个长度为LS位分割成多个数据块,并设最后一个数据块的长度为LF位(1≤LF≤LS);
(2)将各数据块按顺序依次放入第(1,2,3,...,N-1,N)个(队列)通道,由该N个通道同时对各自通道中的数据块进行CRC计算,得到第(1、2、...N)个通道中数据块的CRC子码(r1,r2,...,rN-1,rN);
(3)构建除法余数变换表,用该表对第1到第N-1个通道的CRC子码(r1,r2,...,rN-1)进行除法余数查表,得到变换后的(N-1)个CRC子码(R1,R2,...,RN-1);
(4)对变换后的(N-1)个CRC子码(R1,R2,...,RN-1)逐一进行异或计算,再将其结果与rN进行异或计算,得到整个待计算数据的CRC码。
上述用多通道实现多位并行计算CRC码方法,对每个通道中数据的并行计算,是通过普通数据余数表,根据除法器的输入位数W与CRC码的位数R的不同关系进行,即
当初始W>R时,其工作过程为:
(1)给余数r[R-1,...,1,0]置初值(一般为全0或全1),设指针p指向待计算数据开始处,令计数器c的初值等于(Kj-W),Kj是第j(1≤j≤N)个通道数据块总位数;
(2)从p处取W位到b[W-1,...,1,0]。如果W>R,将b[W-1,...,1,0]的高R位b[W-1,...,W-R-1,W-R]与r[R-1,...,1,0]对应位异或(即模2加,用+表示),结果送入W位除法器,除法器的输出送入r[R-1,...,1,0],作为计算数据块的CRC码;否则根据W=R或W<R从图3b或3c的步骤(2)处进行最后一次计算。
(3)如果c=0,结束计算,r[R-1,...,1,0]为数据块的CRC码;否则,令p=p+W,执行{若c≥W,则c=c-W;否则令W=c,c=0},转步(2)。
当W=R时,其工作过程为:
(1)给余数r[R-1,...,1,0]置初值(一般为全0或全1),设指针p指向待计算数据开始处,令计数器c的初值等于(Kj-W),Kj是第j(1≤j≤N)个通道数据块总位数;
(2)从p处取W比特到b[W-1,...,1,0],如果W=R,将b[W-1,...,1,0]与r[R-1,...,1,0]对应位异或,结果送入W位除法器,除法器的输出送入r[R-1,...,1,0],做为计算数据块的CRC码;否则,根据W<R从3c的步骤(2)处进行最后一次计算;
(3)如果c=0,结束计算,r[R-1,...,1,0]为数据块的CRC码;否则,令p=p+W,执行{若c>W,则c=c-W;否则令W=c,c=0},转步(2)。
当W<R时,其工作过程为:
(1)给余数r[R-1,...,1,0]置初值(一般为全0或全1),设指针p指向待计算数据开始处,令计数器c的初值等于(Kj-W),Kj是第j(1≤j≤N)个通道数据块总位数;
(2)从p处取W比特到b[W-1,...,1,0]。将r[R-1,...,1,0]的最高W位r[R-1,...,R-W]与待计算数据b[W-1,...,1,0]异或,结果作为W位除法器的输入;除法器输出t[R-1,,...,1,0]的高(R-W)位t[R-1,...,W+1,W]需要与r[R-W-1,...,1,0]对应位异或,结果送入r[R-1,...,W+1,W],而t[W-1,...,1,0]直接送入r[W-1,...,1,0];
(3)如果c=0,结束计算,r[R-1,...,1,0]为数据块的CRC码;否则,令p=p+W,执行{若c≥W,则c=c-W;否则W=c,c=0},转步(2)。
上述多通道多位实现并行计算CRC码方法,其除法余数变换表按如下过程进行相关计算与列表:
(1)设待计算CRC码的数据比特序列为{mK-1,mK-2,...,mi,...,m2,m1,m0},其多项式为
m(x)=mK-1xK-1+mK-2xK-2+...+mix1+...+m2x2+m1x1+m0x0      ①
其中mi=1或0(i=0,1,2,...,K-1);
(2)设m(x)的CRC码的长度为R位,其多项式为
r(x)=rR-1xR-1+rR-2xR-2+...+rixi+...+r2x2+r1x1+r0x0      ②
其中ri=1或0(i=0,1,2,...,R-1);
(3)对于数据位数为K,CRC校验码的位数为R组成的码字一般记为(K+R,K),根据CRC原理有
xRm(x)=a(x)g(x)+r(x)                                    ③
其中xRm(x)表示m(x)与xR的乘积,g(x)是生成多项式,a(x)为xRm(x)除以g(x)所得商的多项式,r(x)是式②定义的余数多项式;
(4)设待计算数据如式①,N个通道的CRC子码分别为ri(x)(1≤i≤N),则N个队列中数据块多项式uj(x)可表示为
u j ( x ) = Σ i = 0 L S - 1 m i + L F + ( N - 1 - j ) * L S x ′ - - - ( 1 ≤ j ≤ N - 1 ) ; - - - ( 4 )
(5)将最后一个队列中数据块表示为
u N ( x ) = Σ i = 0 L F - 1 m i x ′ ; - - - ( 5 )
(6)由式④和式⑤,式①计算的数据表示为
m ( x ) = Σ j = 1 N - 1 u j ( x ) . x ( N - 1 - j ) * L S + L F + u N ( x ) - - - ( 6 )
(7)用Rg(x)[c(x)]表示c(x)除以g(x)所得的余数多项式式,则由CRC码计算定义,并依⑥式经整理可知m(x)的CRC码为
r ( x ) = R g ( x ) [ x R m ( x ) ]
r ( x ) = Σ j = 1 N - 1 R g ( x ) [ r j ( x ) . x ( N - 1 - j ) * L S + L F ] + r N ( x ) - - - ( 7 )
取LS等于Q*R(Q为正整数),一般为实现简单,取LS等于每次计算位数W的整倍数。设最后一个队列长度LF=P*R+LR,此处非负整数P满足0≤P≤Q和0≤LR<R;
(8)在LR=0时
将式⑦等效于
r ( x ) = Σ j = 1 N - 1 R g ( x ) [ r j ( x ) . x { ( N - j - 1 ) * Q + P } * R ] + r N ( x ) - - - ( 8 )
由⑧式可从(r1,r2,...,rN-1)求得(R1,R2,...,RN-1)
R 1 = R g ( x ) [ r 1 ( x ) . x { ( N - 2 ) * Q + P } * R ] ,
R 2 = R g ( x ) [ r 2 ( x ) . x { ( N - 3 ) * Q + P } * R ] ,
R N - 1 = R g ( x ) [ r N - 1 ( x ) . x P * R ] - - - ( 9 )
(9)由式⑦或⑧按如下过程求出每个队列不同次数的CRC余数运算;
i.将输入数据c[R-1,...,1,0]多项式
Figure C0311446300114
中的系数从全0到全1进行全排列变化(共有2R种可能组合),并将某个输入数据对应的多项式系数c1为1所对应的典型数据余数(即Rg(x)[xRc1x1])进行异或,得到该数据对应普通数据余数;例如我们可从(00000001)和(00000100)的典型数据余数的异或(模2加)得到普通数据(00000101)的余数;
ii.将输入数据c[R-1,...,1,0]的2R种组合对应的普通数据余数列表,该表占2R·R比特,它也就是常见的软件计算CRC码中使用的列表。当输入余数数据D0(x)时(di(0)代表D0(x)的多项式系数,即 D 0 ( x ) = Σ i = 0 R - 1 d i ( 0 ) x ′ ) , 从该表 处取出R位输出D1(x),则D1(x)是D0(x)的第一次除法输出;
iii.将D1(x)作为输入余数数据,从该表
Figure C0311446300117
处取出R位输出D2(x),则D2(x)是D0(x)的第二次除法输出;依此类推,将DQ-1(x)作为输入余数数据(Q>1),从该表
Figure C0311446300118
处取出R位输出DQ(x),则DQ(x)是D0(x)第Q次除法输出。
iv.将所有可能的D0(x)(共有2R种可能组合)到DQ(x)的变换列表,即余数变换表。
上述实现多通道多位并行计算CRC码方法,第1到第N-1个通道的CRC子码(r1,r2,...,rN-1)需进行变换得到CRC子码(R1,R2,...,RN-1),其除法余数变换表的构建按如下步骤进行:
(1)假定某CRC的校验位有8位(即R=8),先构建从rN-1求出RN-1的P次除法余数变换表(设P=4);
(2)从普通数据余数表2a可查出输入数据为(0,1,...,255)的余数输出,该余数输出分别是0、10H、12H、25H、3BH、...、A8H;
(3)由于0的任意次余数输出必为0,我们直接将0放入P次余数变换表2b的存储单元0(即第1项)。当输入余数数据1时,从该表字节1(即第8比特,D(X)*R处,D(X)=1和R=8)处取出R位输出10H,则10H是数据1的第1次除法余数输出(即Rg(x)[D(x)*xR]);
(4)将10H作为输入余数数据,从该表字节10H(即第128比特)处取出R位输出21H,则21H是数据1的第2次除法余数输出;
(5)将21H作为输入余数数据,从该表字节21H(即第264比特)处取出R位输出04H,则04H是数据1的第3次除法余数输出;
(6)将04H作为输入余数数据,从该表字节04H(即第32比特)处取出R位输出3BH,则3BH是数据1的第4次除法余数输出;
(7)将数据3BH放入表2b的存储单元1即第2项,依据相同的操作过程,得到剩下的余数数据(2,3,...,255)的P次余数输出,将256个余数数据(0,1,2,3,...,255)的P次余数输出列表,就得到从rN-1求出RN-1的P次除法余数变换表;
(8)在硬件计算的P次除法余数变换表中,仅需列出8个典型余数数据(1,2,4,8,16,32,62,128)的P次余数输出列表,就可用与图2相似的方法,得到从rN-1求出RN-1的P次除法余数变换;
(9)用同样的方法可得到从(r1,r2,...,rN-2)求得(R1,R2,...,RN-2)时,分别进行{(N-2)*Q+P,(N-3)*Q+P,...,Q+P}次除法余数所需的(N-2)个除法余数变换表。
上述实现多通道多位并行计算CRC码方法,是将得到的队列[1,2,...,N-1]数据块的CRC子码(r1,r2,...,rN-1)作为N-1个除法余数变换输出表的输入,由软件通过除法余数变换查得其输出(R1,R2,...,RN-1),或由硬件电路在一个时钟内通过除法余数变换查得其输出(R1,R2,...,RN-1),再用软件或硬件电路将(R1,R2,...,RN-1)和第N路CRC码输出rN进行异或运算,就得到整个计算数据的循环冗余校验码。
本发明由于采用N个通道,每个通道采用W位并行算法,因而使硬件实现的计算速度提高到单比特计算速度的N*W倍;同时由于本发明直接将计算数据分块,多队列依次取数,故比已有交替计算控制简单;有效地降低了超高速CRC计算电路工作频率,显著地降低计算成本,如提供10G以太网CRC计算,采用64位并行计算,在P=4时仅需要39MHz的工作时钟;此外,由于本发明的每一个队列中的CRC计算用多位并行硬件实现,每次并行计算的位数可大于、等于、或小于循环冗余校验码的位数,计算数据长度与循环冗余校验码的位数无关,所以计算方法具有通用性,容易实现10G以太网和40Gbps SDH等未来高速网络中的CRC计算。
附图说明:
图1是本发明多通道多位并行CRC计算原理框图
图2是本发明一个除法器硬件实现电路原理图
图3a~3c是本发明在不同情况下的单个通道多位并行计算实现框图
图4是已有技术使用多个中间数据流进行循环冗余校验计算的框图
图5是已有技术并行循环冗余校验计算框图
具体实施方式:
参照图1,本发明的多通道多位并行CRC计算方法是将整个待计算CRC码的数据按每LS位分割成N个数据块(N≥2),依次放入队列(1,2,3,...,N-1,N)。因为待计算数据的总比特位数不一定被LS整除,令最后一个队列长度是LF位(1≤LR≤LS)。N个通道同时对各自通道中的数据块进行CRC计算,得到第(1,2,...,N)个通道中数据块的CRC子码(r1,r2,...,rN-1,rN),通过余数变换表对(r1,r2,...,rN-1)用软件或硬件进行查表得到(R1,R2,...,RN-1),再对(R1,R2,...,RN-1,rN)进行异或计算,得到整个待计算数据的CRC码。队列1的CRC码初值设置为原来整个数据的约定初值(一般为R位全1或全0),其余队列的CRC码初值均置全0。其中在每一个通路的计算中,W位硬件除法器是高速CRC计算的关键部件。其构建过程是首先计算输入W位数据b[W-1,...,1,0]从最低位(0位置)到最高位(W-1位置)逐位置1(其余位是0),将xR·b(x)或xR·x1(i=0~W-1)被g(x)除所得余数构成一个由W行*R列组成的典型数据余数表1如下:
             表1 不同宽度(W)的典型数据余数列表
      表1(a)           表1(b)               表1(c)
      W=4             W=8                 W=16
i   MSB LSB
    0   00000111
    1   00001110
    2   00011100
    3   00111000
1   MSB LSB
    0   00000111
    1   00001110
    2   00011100
    3   00111000
    4   01110000
    5   11100000
    6   11000111
    7   10001001
i   MSB LSB
  0   00000111
  1   00001110
  2   00011100
  3   00111000
  4   01110000
  5   11100000
  6   11000111
  7   10001001
  8   00010101
  9   00101010
  10   01010100
  11   10101000
  12   01010111
  13   10101110
  14   01011011
  15   10110110
表1中给出了ATM信元头中CRC的生成多项式g(x)=x8+x2+x+1,在不同的W值时对应的典型数据余数列表,其中:
表1a是W值为4时的典型数据余数列表;
表1b是W值为8时的典型数据余数列表;
表1c是W值为16时的典型数据余数列表;
例如,从表1b知数据1000,0000B(即16进制10H)的CRC码为表1b的最后一项(对应i=7)10001001(二进制),从表1c知数据0100,000,0000,0000B(即16进制4000H)的CRC码为表1c的倒数第二项(对应i=14)01011011。
W位除法器可用软件或硬件实现。软件实现是让输入数据b[W-1,...,1,0]多项式
Figure C0311446300141
中的系数从全0到全1进行2W种全排列变化,将某个输入数据对应多项式系数b,为1所对应的那些典型数据余数异或,得到该数据对应余数。将输入数据b[W-1,...,1,0]的2W种组合对应的余数列表,该表占2W·R比特。当输入数据时,从
Figure C0311446300142
处取出R位,该R位是W位除法器的输出。
参照图2,本发明依据表1b的典型数据余数输出,给出了W和R均为8时除法器的硬件实现逻辑电路,其中输入数据是[bW-1,...,b2,b1]或bW-1,...,b2,b1,除法器输出是[tR-1,...,t2,t1,t0]或tR-1,...,t2,t1,t0。表1a中MSB位是第7列,LSB位是第0列,某一位t1(i=0~R-1)等于典型数据余数表中第i列所有为“1”的输入数据bj(j=0~W-1)的异或(模2加)。例如在表1a中,对W=4和R=8有[t7=t6=0,t5=b3,t4=b3b2,t3=b3b2b1,t2=b2b1b0,t1=b1b0,t0=b0]。
参照图3,每个通道的并行计算法依据W和R间的关系进行。其中图3a是W>R时的CRC并行计算框图,3b是W=R时的CRC并行计算框图,3c是W<R时的CRC并行计算框图。图3a的工作步骤是:
(1)给余数r[R-1,...,1,0]置初值(一般为全0或全1),设指针p指向待计算数据开始处,令计数器c的初值等于(Kj-W),Kj是第j(1≤j≤N)个通道数据块总位数;
(2)从p处取W位到b[W-1,...,1,0]。如果W>R,将b[W-1,...,1,0]的高R位b[W-1,...,W-R-1,W-R]与r[R-1,...,1,0]对应位异或(即模2加,用+表示),结果送入W位除法器,除法器的输出送入r[R-1,...,1,0],作为计算数据块的CRC码;否则根据W=R或W<R从图3b或3c的步骤(2)处进行最后一次计算。
(3)如果c=0,结束计算,r[R-1,...,1,0]为数据块的CRC码;否则,令p=p+W执行{若c≥W,则c=c-W;否则令W=c,c=0},转步(2)。
图3b的工作过程与图3a相似,区别是图3b中b[W-1,...,1,0]与r[R-1,..,1,0]对应位异或。
图3c与图3a的区别是仅r[R-1,...,1,0]的最高W位r[R-1,R-2,...,R-W]与待计算数据b[W-1,...,1,0]异或,结果作为W位除法器的输入。除法器输出t[R-1,...,1,0]的高(R-W)位t[R-1,...,W+1,W]需要与r[R-W-1,...,1,0]对应位异或,结果送入r[R-1,...,W+1,W],而t[W-1,...,1,0]直接送入r[W-1,...,1,0]。
在得到每个通路的CRC子码(r1,r2,...,rN-1,rN)后,需要用余数变换表对其前(N-1)个CRC子码(r1,r2,...,rN-1)进行除法余数变换得到(R1,R2,...,RN-1)。该除法余数变换表按上述构建方法如表2。表2给出P=4时(符号#表示表2b的数值是示意性的),从普通余数列表得到变换余数列表的过程如表2。
           表2 普通数据余数列表得到余数变换表的过程
a普通余数列表                                 b变换余数列表
存储单元  存储内容                            存储单元  存储内容
从表2可知输入数据(0,1,...,255)的余数输出分别是(0,10H,12H,25H,3BH,...,A8H)。由于输入数据0的余数必然为0,故将0放入P次余数变换表2b的存储单元0(第1项)。当输入余数数据1时,处理过程是:1)从普通余数表字节1(第8比特,即D(X)*R处,D(X)=1和R=8)处取出R位输出得到10H,则10H是数据1的第1次除法余数输出(即Rg(x)[D(x)*xR]);2)将10H作为输入余数数据,从该表字节10H(第128比特)处取出R位输出得到21H,则21H是数据1的第2次除法余数输出;3)将21H作为输入余数数据,从该表字节21H(第264比特)处取出R位输出04H,则04H是数据1的第3次除法余数输出;4)将04H作为输入余数数据,从该表字节04H(第32比特)处取出R位输出3BH,则3BH是数据1的第4次除法余数输出。我们将数据3BH放入表2b的存储单元1(第2项)。依据相同的操作过程,很容易得到剩下的余数数据(2,3,...,255)的P次余数输出,将这些余数输出列表如表2b。同理,我们容易得到从(r1,r2,...,rN-2)求得(R1,R2,...,RN-2)进行{(N-2)*Q+P,(N-3)*Q+P,...,Q+P}次除法余数变换所需的N-2个列表。
当队列[1,2,...,N-1]的数据块的CRC码(r1,r2,...,rN-1)得到后,将(r1,r2,...,rN-1)作为上述N-1个表的输入,硬件电路在一个时钟内查表取得输出(R1,R2,...,RN-1)。用硬件将(R1,R2,...,RN-1)和第N路CRC码输出rN共N个数进行异或运算,就得到整个计算数据的循环冗余校验码。
如果最后一个队列长度LF=P*R+LR中余数LR不等于零,我们可根据上述方法先计算前[(N-1)*Q+P]*R位,设得到的CRC码表示为R(X)’(即R1+R2+...+RN-1+rN)。将LR位数据作为图3c的数据输入b[LR-1,LR-2,...,1,0],将R(X)’放入图3c的r[R-1,...,1,0],根据LR<R的假定采用图3c进行CRC计算。计算结束后,寄存器r[R-1,...,1,0]中就是整个待计算数据的CRC码。
下面举例说明实现该多通道多位并行算法的计算过程。假设待计算数据为[0,1,2,...,255;0,1,2,...,255;0,1,2,...,255;0,1,2,...,63]共576字节,第一个0为最高位字节(MSB),最后一字节63为最低位字节(LSB)。CRC生成多项式采用HDLC生成多项式G(x)=x16+x12+x5+1,初值全1。余数采用(MSB,LSB)表示法,如x16被G(x)余数为0001000000100001。按一般单通道计算法,在不同W(1,8,16)时,上述数据的CRC码均为8CFDh。将该数据分为(128,128,128,128,64)字节的5个队列,第一个队列CRC初值为全1,其余队列CRC初值为全0。经计算5个队列的CRC子码(r1,r2,r3,r4,r5)分别是(95B1h,FF66h,F254h,FF66h,2A57h)。按式⑦有Q=64和P=32,用余数变换表对前4个CRC子码(r1,r2,r3,r4)分别进行(224,160,96,32)次求CRC余数运算,得到变换后的(R1,R2,R3,R4)为(23DCh,9044h,4435h,5107h)。将(R1,R2,R3,R4)这4个数和第五个队列的CRC子码r5(2A57h)进行异或,得到CRC码为8CFDh,验证式⑦成立。对上述数据也可分为(144,144.144,144)字节的4个队列,采用类似方法可得CRC码为8CFDh,说明式⑧正确。另外,如果CRC初值为全0,将第一个队列CRC初值全设0,上述两种多通道下CRC码与单多通道下相同(均为710Fh),表明算法适用各种CRC初值。
对于单通道W位并行CRC硬件计算,则需经过异或、除法器运算两个步骤,而在W小于R时还需加入除法器输出与余数逻辑运算的一个步骤,经FPGA电路仿真验证三种情形(W>R,W=R,W<R)的每W位CRC计算过程均可在一个时钟内完成。设CRC计算电路时钟频率为fcHz,则计算速度可达(W*fc)位/秒,对于W取32和fc为31.25MHz,计算速度超过1G位/秒,完全满足千兆以太网、ATM网络所需的高速CRC计算及校验要求。在多通道计算时,计算需加入前(N-1)个队列中每个队列CRC码求多次余数运算的一个时钟(采用余数变换表查表法),以及所有队列CRC子码求异或运算(即R1+R2+...+RN-1+rN)的一个时钟,则计算速度可提高到单通道时的(N*LS/W)/(LS/W+2)。一般2W/LS远小于1,则计算速度达(N*W*fc)位/秒,前述条件在N大于10时,可实现10G位/秒,满足10G以太网、40Gbps SDH所需超高速CRC计算。

Claims (5)

1.一种多通道多位并行计算CRC码的方法,按如下过程进行:
(1)直接将整个待计算CRC码数据按每个长度为LS位分割成多个数据块,并设最后一个数据块的长度为LF位,1≤LF≤LS
(2)将各数据块按顺序依次放入第1、2、3、...、N-1、N个通道,由该N个通道同时对各自通道中的数据块进行CRC计算,得到第1、2、3、...、N-1、N个通道中数据块的CRC子码r1、r2、...、rN-1、rN
(3)构建除法余数变换表,用该表对第1到第N-1个通道的CRC子码r1、r2、...、rN-1进行除法余数查表,得到变换后的CRC子码R1、R2、...、RN-1
(4)对变换后的多个CRC子码R1、R2、...、RN-1逐一进行异或计算,再将其结果与rN进行异或计算,得到整个待计算数据的CRC码。
2.根据权利要求1所述的多通道多位并行计算CRC码方法,其特征在于每个通道对其数据块进行的CRC计算,是通过普通数据余数表根据除法器的位数W与CRC码的位数R之间的关系进行,即
当初始W>R时,其工作过程为:
(1)给余数r[R-1,...,1,0]置初值,该值一般为全0或全1;设指针p指向待计算数据开始处,令计数器c的初值等于Kj-W,其中Kj是第j个通道数据块总位数,1≤j≤N;
(2)从p处取W位到b[W-1,...,1,0],如果W>R,将b[W-1,...,1,0]的高R位b[W-1,...,W-R-1,W-R]与r[R-1,...,1,0]对应位异或,结果送入W位除法器,除法器的输出送入r[R-1,...,1,0],作为计算数据块的CRC码,此处异或即模2加,用+表示;
(3)如果c=0,结束计算,r[R-1,...,1,0]为数据块的CRC码;
当W=R时,其工作过程为:
(1)给余数r[R-1,...,1,0]置初值,该值一般为全0或全1;设指针p指向待计算数据开始处,令计数器c的初值等于Kj-W,Kj是第j个通道数据块总位数,1≤j≤N;
(2)从p处取W比特到b[W-1,...,1,0],如果W=R,将b[W-1,...,1,0]与r[R-1,...,1,0]对应位异或,结果送入W位除法器,除法器的输出送入r[R-1,...,1,0],作为计算数据块的CRC码;
(3)如果c=0,结束计算,r[R-1,...,1,0]为数据块的CRC码;
当W<R时,其工作过程为:
(1)给余数r[R-1,...,1,0]置初值,该值一般为全0或全1;设指针p指向待计算数据开始处,令计数器c的初值等于Kj-W,Kj是第j个通道数据块总位数,1≤j≤N;
(2)从p处取W比特到b[W-1,...,1,0],将r[R-1,...,1,0]的最高W位r[R-1,...,R-W]与待计算数据b[W-1,...,1,0]异或,结果作为W位除法器的输入;除法器输出t[R-1,...,1,0]的高R-W位t[R-1,...,W+1,W]需要与r[R-W-1,...,1,0]对应位异或,结果送入r[R-1,...,W+1,W],而t[W-1,...,1,0]直接送入r[W-1,...,1,0];
(3)如果c=0,结束计算,r[R-1,...,1,0]为数据块的CRC码;
3.根据权利要求1所述的多通道多位并行计算CRC码方法,其特征在于除法余数变换表的建立,按如下过程进行:
(1)设待计算CRC码的数据位数为K,其多项式为
m(x)=mK-1xK-1+mK-2xK-2+...+mixi+...+m2x2+m1x1+m0x0    ①
其中mi=1或0,i=0、1、2、...、K-1;
(2)设m(x)的CRC码的位数为R,其多项式为
r(x)=rR-1xR-1+rR-2xR-2+...+rixi+...+r2x2+r1x1+r0x0    ②
式中ri=1或0,i=0、1、2、...、R-1;
(3)根据CRC原理得
xRm(x)=a(x)g(x)+r(x)                                  ③
式中xRm(x)表示m(x)与xR的乘积,g(x)是生成多项式,a(x)为xRm(x)除以g(x)所得商的多项式,r(x)是式②定义的余数多项式;
(4)设待计算数据如式①,N个通道的CRC码分别为ri(x),1≤i≤N,则N个通道数据块多项式uj(x)可表示为
u j ( x ) = Σ i = 0 L S - 1 m i + L F + ( N - 1 - j ) * L S x i - - - ( 4 )
式中LS是第1、2、3、...、N-1个通道中的数据块位数,
LF是通道N中的数据块位数;
1≤j≤N-1;
(5)将最后一个通道N的数据块可表示为
u N ( x ) = Σ i = 0 L F - 1 m i x i ; - - - ( 5 )
(6)由式④和式⑤,式①计算的数据表示为
m ( x ) = Σ j = 1 N - 1 u j ( x ) . x ( N - 1 - j ) * L S + L F + u N ( x ) - - - ( 6 )
(7)用Rg(x)[c(x)]表示c(x)除以g(x)所得的余式,则由CRC码计算定义,并依⑥式经整理可知m(x)的CRC码r(x)为
r(x)=Rg(x)[xRm(x)]
r ( x ) = Σ j = 1 N - 1 R g ( x ) [ r j ( x ) . x ( N - 1 - j ) * L S + L F ] + r N ( x ) - - - ( 7 )
式中rj(x)为通道j中数据块uj(x)的CRC子码多项式,1≤j≤N-1;
rN(x)为通道N中数据块uN(x)的CRC子码多项式;
取LS等于Q*R,Q为正整数,且LS等于每次计算位数W的整倍数;
设最后一个通道数据位数LF=P*R+LR,此处非负整数P满足0≤P≤Q和0≤LR<R;
(8)在LR=0时
将式⑦等效于
r ( x ) = Σ j = 1 N - 1 R g ( x ) [ r j ( x ) . x { ( N - j - 1 ) * Q + P } * R ] + r N ( x ) - - - ( 8 )
其中rj(x)为通道j中数据块uj(x)的CRC子码多项式,1≤j≤N-1
rN(x)为通道N中数据块uN(x)的CRC子码多项式;
由⑧求得变换后的CRC子码R1、R2、...、RN-1,即
R1=Rg(x)[r1(x).x{(N-2)*Q+P}R]
R2=Rg(x)[r2(x).x{(N-3)*Q+P}*R],
...,
RN-1=Rg(x)[rN-1(x).xP*R];              ⑨
其中R1、R2、...、RN-1是对CRC子码r1、r2、...、rN-1变换后的CRC子码;
R1需对r1(x)进行(N-2)*Q+P次CRC余数变换运算;
R2需对r2(x)进行(N-3)*Q+P次CRC余数变换运算;
...,
RN-1需对rN-1(x)进行P次CRC余数变换运算;
(9)由式⑦或⑧按如下过程求出每个通道不同次数的CRC余数变换运算:
i.将输入数据c[R-1,...,1,0]多项式 Σ i = 0 R - 1 c i x i 中的系数从全0到全1进行全排列变化,该变化共有2R种组合,并将某个输入数据对应的多项式系数ci为1所对应的典型数据余数Rg(x)[xRcixi]进行异或,得到该数据对应普通数据余数;
ii.将输入数据c[R-1,...,1,0]的2R种组合对应的普通数据余数列表,当输入余数数据D0(x)时,从该表 ( Σ i = 0 R - 1 2 i d i ( 0 ) ) · R 处取出R位输出D1(x),di(0)代表D0(x)的多项式系数即 D 0 ( x ) = Σ i = 0 R - 1 d i ( 0 ) x i , 则D1(x)是D0(x)的第一次除法输出;
iii.将D1(x)作为输入余数数据,从该表 ( Σ i = 0 R - 1 2 i d i ( 1 ) ) · R 处取出R位输出得到D2(x),D2(x)是D0(x)的第二次除法输出;依此类推,当Q>1时将DQ-1(x)作为输入余数数据1,从该表 ( Σ i = 0 R - 1 2 i d i ( Q - 1 ) ) · R 处取出R位输出DQ(x),则DQ(x)是D0(x)的第Q次除法输出;
iv.将所有可能的D0(x)到DQ(x)的变换列表,得到余数变换表,D0(x)共有2R种组合。
4.根据权利要求3所述的多通道多位并行计算CRC码方法,其特征在于除法余数变换表实现从输入余数数据D0(x)变换到输出DQ(x)的过程,按如下步骤进行:
(1)假定某CRC的校验位有8位,即R=8,先构建从rN-1求出RN-1的P次除法余数变换表,设P=4;
(2)从普通数据余数列表得到输入数据为0、1、...、255的余数输出,该余数输出分别是0、10H、12H、25H、3BH、...、A8H;
(3)由于0的任意次余数输出必为0,我们直接将0放入P次余数变换表的存储单元0,即第1项;当输入余数数据为1时,从该普通数据余数列表字节1处取出R位输出10H;
该字节1在D(X)=1和R=8时,运用公式D(X)*R计算得到的第8比特,该10H是数据1的第1次除法余数输出Rg(x)[D(x)*xR];
(4)将10H作为输入余数数据,从所述普通数据余数列表字节10H,即第128比特处取出R位输出21H,则21H是数据1的第2次除法余数输出;
(5)将21H作为输入余数数据,从所述普通数据余数列表字节21H,即第264比特处取出R位输出04H,则04H是数据1的第3次除法余数输出;
(6)将04H作为输入余数数据,从所述普通数据余数列表字节04H,即第32比特处取出R位输出3BH,则3BH是数据1的第4次除法余数输出;
(7)将数据3BH放入P次余数变换表的存储单元1即第2项;依据相同的操作过程,得到剩下的余数数据2、3、...、255的P次余数输出,将256个余数数据0、1、2、3、...、255的P次余数输出列表,就得到从rN-1求出RN-1的P次除法余数变换表;
(8)在硬件计算的P次除法余数变换表中,仅需列出8个典型余数数据1、2、4、8、16、32、64、128的P次余数输出列表,就可得到从rN-1求出RN-1的P次除法余数变换;
(9)用同样的方法可得到从r1、r2、...、rN-2求得R1、R2、...、RN-2时,分别进行(N-2)*Q+P、(N-3)*Q+P、...、Q+P次除法余数所需的N-2个除法余数变换表。
5.根据权利要求1所述的多通道多位并行计算CRC码方法,其特征在于对变换后的多个CRC子码R1、R2、...、RN-1与第N个通道的数据块子码rN进行异或计算,是将得到的第1、2、...、N-1个通道中数据块的CRC子码r1、r2、...、rN-1作为N-1个除法余数变换表的输入,由软件通过除法余数变换表查得其输出R1、R2、...、RN-1,或由硬件电路在一个时钟内通过除法余数变换查得其输出R1、R2、...、RN-1,再用软件或硬件电路将R1、R2、...、RN-1和第N个通道CRC子码输出rN进行异或运算,就得到整个计算数据的循环冗余校验码。
CNB031144632A 2003-01-27 2003-01-27 一种多通道多位并行计算crc码的方法 Expired - Fee Related CN1193294C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB031144632A CN1193294C (zh) 2003-01-27 2003-01-27 一种多通道多位并行计算crc码的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB031144632A CN1193294C (zh) 2003-01-27 2003-01-27 一种多通道多位并行计算crc码的方法

Publications (2)

Publication Number Publication Date
CN1431594A CN1431594A (zh) 2003-07-23
CN1193294C true CN1193294C (zh) 2005-03-16

Family

ID=4790438

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031144632A Expired - Fee Related CN1193294C (zh) 2003-01-27 2003-01-27 一种多通道多位并行计算crc码的方法

Country Status (1)

Country Link
CN (1) CN1193294C (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101207467B (zh) * 2006-12-19 2011-05-18 大唐移动通信设备有限公司 循环冗余校验码的生成和数据序列发送、校验方法及装置
CN102299778B (zh) * 2007-08-21 2014-02-19 华为技术有限公司 反馈方法、反馈信息的区分方法及装置
US8555148B2 (en) * 2007-09-18 2013-10-08 Samsung Electronics Co., Ltd. Methods and apparatus to generate multiple CRCs
CN101369242B (zh) * 2008-09-28 2011-06-15 西北工业大学 计算机内存程序代码和数据的自检方法
CN101478369B (zh) * 2009-01-05 2012-05-23 华为终端有限公司 一种crc校验的方法和系统
CN101527615A (zh) * 2009-04-07 2009-09-09 华为技术有限公司 一种循环冗余校验crc码的实现方法和装置
CN101702639B (zh) * 2009-11-23 2012-12-19 成都市华为赛门铁克科技有限公司 循环冗余校验的校验值计算方法及装置
CN102739258A (zh) * 2011-04-14 2012-10-17 普天信息技术研究院有限公司 一种计算循环冗余校验码的方法及装置
CN102567276B (zh) * 2011-12-19 2014-03-12 华为技术有限公司 基于多通道的数据传输方法、接收节点及跨节点互联系统
CN102946297B (zh) 2012-11-10 2015-06-17 华中科技大学 一种用于数据传输差错控制的嵌套crc码生成方法及装置
US9350385B2 (en) * 2013-03-15 2016-05-24 Xilinx, Inc. Modular and scalable cyclic redundancy check computation circuit
CN103199873B (zh) * 2013-04-23 2016-03-30 常熟理工学院 两级分块crc运算的快速配置方法
CN103795502B (zh) * 2014-02-28 2017-04-12 杭州华三通信技术有限公司 一种数据帧校验码生成方法和装置
CN104618055B (zh) * 2014-12-31 2018-03-27 曙光信息产业(北京)有限公司 一种基于sdh传输系统的数据校验方法和装置
CN107667475A (zh) * 2015-05-20 2018-02-06 雅科贝思私人有限公司 一种用于循环冗余校验的排列演算方法
CN106650835B (zh) * 2015-07-22 2020-04-10 深圳市远望谷信息技术股份有限公司 在铁路车号识别系统中提高数据传输可靠性的方法
CN105528183B (zh) * 2016-01-26 2019-01-18 华为技术有限公司 一种存储数据的方法及存储设备
CN107154836B (zh) * 2017-06-28 2019-12-20 西安空间无线电技术研究所 一种基于fpga的并行循环冗余crc校验方法
CN107451008B (zh) * 2017-06-29 2020-05-08 北京邮电大学 一种crc计算方法及装置
CN107656833A (zh) * 2017-11-06 2018-02-02 郑州云海信息技术有限公司 一种crc计算设备及计算方法
CN114679239B (zh) * 2022-04-02 2024-04-23 北京诺芮集成电路设计有限公司 一种高速网络中crc分段计算方法及装置
CN117097440B (zh) * 2023-10-18 2024-03-15 苏州联讯仪器股份有限公司 一种以太网包crc校验方法

Also Published As

Publication number Publication date
CN1431594A (zh) 2003-07-23

Similar Documents

Publication Publication Date Title
CN1193294C (zh) 一种多通道多位并行计算crc码的方法
CN101902228B (zh) 快速循环冗余校验编码方法及装置
CN201153259Y (zh) 并行数据循环冗余校验装置及双向数据传输系统
CN101080875A (zh) 纠错方法以及装置
CN103731239A (zh) 一种适用于向量处理器的通用crc并行计算部件及方法
CN105264778A (zh) 一种crc计算方法及装置
CN1324517A (zh) 用于生成循环冗余校验代码的并行循环冗余校验生成电路
CN1858999A (zh) 伪随机序列发生装置
CN1353521A (zh) 检测带逆序校验位的循环冗余校验码中的错误的装置和方法
CN1288863C (zh) 产生正交可变扩展因子的方法及装置
CN106788878B (zh) 一种具有单比特纠错功能的并行crc纠错方法
RU2010109431A (ru) Способ передачи данных
CN101296053A (zh) 计算循环冗余校验码之方法及系统
CN1106081C (zh) 译码电路
CN102761340B (zh) 一种bch并行编码电路
CN105391455A (zh) 一种归零Turbo码起点及深度盲识别方法
CN103269255B (zh) 一种并行crc电路的生成方法和装置
CN101034894A (zh) 一种实现解码的电路和方法
CN103763064A (zh) 适用于超高速通讯系统的循环冗余校验码生成方法与电路
CN101848055A (zh) 一种数据修正方法和装置
CN117014017A (zh) 一种基于高位宽数据计算多项式除法余数的crc计算方法
CN103546169A (zh) Fpga中实现3/4速率(2,1,7)卷积编码的方法
CN1599262A (zh) 宽带无线接入系统中里德索洛门卷积级联码的实现方法
CN102545910B (zh) 一种jpeg霍夫曼解码电路及其解码方法
KR100578721B1 (ko) XOR 논리를 이용한 n 비트 순환 중복 검사 생성 방법및 이를 이용한 병렬 순환 중복 검사 생성기

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
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee