CN1193294C - 一种多通道多位并行计算crc码的方法 - Google Patents
一种多通道多位并行计算crc码的方法 Download PDFInfo
- 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
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码进行比较,如果一致说明数据传送无误,反之数据传送有差错。如果出现差错,可采用编码原理进行差错纠正或用各种自动重发请求(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)可表示为
(5)将最后一个队列中数据块表示为
(6)由式④和式⑤,式①计算的数据表示为
(7)用Rg(x)[c(x)]表示c(x)除以g(x)所得的余数多项式式,则由CRC码计算定义,并依⑥式经整理可知m(x)的CRC码为
故
取LS等于Q*R(Q为正整数),一般为实现简单,取LS等于每次计算位数W的整倍数。设最后一个队列长度LF=P*R+LR,此处非负整数P满足0≤P≤Q和0≤LR<R;
(8)在LR=0时
将式⑦等效于
由⑧式可从(r1,r2,...,rN-1)求得(R1,R2,...,RN-1)
即
(9)由式⑦或⑧按如下过程求出每个队列不同次数的CRC余数运算;
i.将输入数据c[R-1,...,1,0]多项式
中的系数从全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)的多项式系数,即
从该表
处取出R位输出D1(x),则D1(x)是D0(x)的第一次除法输出;
iii.将D1(x)作为输入余数数据,从该表
处取出R位输出D2(x),则D2(x)是D0(x)的第二次除法输出;依此类推,将DQ-1(x)作为输入余数数据(Q>1),从该表
处取出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]多项式中的系数从全0到全1进行2W种全排列变化,将某个输入数据对应多项式系数b,为1所对应的那些典型数据余数异或,得到该数据对应余数。将输入数据b[W-1,...,1,0]的2W种组合对应的余数列表,该表占2W·R比特。当输入数据时,从
处取出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=b3b2,t3=b3b2b1,t2=b2b1b0,t1=b1b0,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)可表示为
式中LS是第1、2、3、...、N-1个通道中的数据块位数,
LF是通道N中的数据块位数;
1≤j≤N-1;
(5)将最后一个通道N的数据块可表示为
(6)由式④和式⑤,式①计算的数据表示为
(7)用Rg(x)[c(x)]表示c(x)除以g(x)所得的余式,则由CRC码计算定义,并依⑥式经整理可知m(x)的CRC码r(x)为
r(x)=Rg(x)[xRm(x)]
故
式中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时
将式⑦等效于
其中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]多项式
中的系数从全0到全1进行全排列变化,该变化共有2R种组合,并将某个输入数据对应的多项式系数ci为1所对应的典型数据余数Rg(x)[xRcixi]进行异或,得到该数据对应普通数据余数;
ii.将输入数据c[R-1,...,1,0]的2R种组合对应的普通数据余数列表,当输入余数数据D0(x)时,从该表
处取出R位输出D1(x),di(0)代表D0(x)的多项式系数即
则D1(x)是D0(x)的第一次除法输出;
iii.将D1(x)作为输入余数数据,从该表
处取出R位输出得到D2(x),D2(x)是D0(x)的第二次除法输出;依此类推,当Q>1时将DQ-1(x)作为输入余数数据1,从该表
处取出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进行异或运算,就得到整个计算数据的循环冗余校验码。
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)
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校验方法 |
-
2003
- 2003-01-27 CN CNB031144632A patent/CN1193294C/zh not_active Expired - Fee Related
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 |