CN1431594A - 一种多通道多位并行计算crc码的方法 - Google Patents
一种多通道多位并行计算crc码的方法 Download PDFInfo
- Publication number
- CN1431594A CN1431594A CN 03114463 CN03114463A CN1431594A CN 1431594 A CN1431594 A CN 1431594A CN 03114463 CN03114463 CN 03114463 CN 03114463 A CN03114463 A CN 03114463A CN 1431594 A CN1431594 A CN 1431594A
- 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.)
- Granted
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)等器件实现。由于硬件或软件采用并行运算均可有效地提高计算速度,故已有文献多为研究特定位数的并行计算原理与性能。例如,达雷尔K·考克斯和芒索A·基希泰发明的“用于循环冗余校验的有效计算方法及装置”(申请号00132908),就是“在一个使用流水线处理器上,通过将输入数据分为若干独立的数据流,对每个独立的数据流进行一个循环冗余校验计算,同时执行对循环冗余校验查询表的访问。因为该循环兀余校验处理独立的数据流,从查询表读出循环冗余校验的等待时间被有效地减少”,如图4所示。该方法由于采用交替取出数据放入每个队列,每一个队列用软件查表法计算CRC码。因而存在以下缺点:
1)交替取出数据控制复杂,而且降低了计算速度。假定待计算数据分为3个队列,计算数据表示为d1d2d3d4d5d6…(d1为每次计算数据,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所示。
又如,G·梅斯贝格发明的“用于生成循环冗余校验代码的并行循环冗余校验生成电路”(国际申请号:标PCT/EP99/06207,国际申请日990824),主要涉及一个并行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+...+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)对于数据位数为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码为
r(x)=Rg(x)[xRm(x)]
故
取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)
即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] ⑨
(9)由式⑦或⑧按如下过程求出每个队列不同次数的CRC余数运算;
i.将输入数据c[R-1,..., 1,0]多项式
中的系数从全0到全1进行全排列变化(共有2R种可能组合),并将某个输入数据对应的多项式系数ci为1所对应的典型数据余数(即Rg(x)[xRcixi])进行异或,得到该数据对应普通数据余数;例如我们可从(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以太网和40(Gbps 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≤LF≤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·xi(i=0~W-1)被g(x)除所得余数构成一个由W行*R列组成的典型数据余数表1如下:
表1 不同宽度(W)的典型数据余数列表
表1(a) 表1(b) 表1(c)
W=4 W=8 W=10
i | MSB LSB |
0 | 00000111 |
1 | 00001110 |
2 | 00011100 |
3 | 00111000 |
i | 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种全排列变化,将某个输入数据对应多项式系数bi为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列,某一位ti(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]对应位异或(即模2加,用+表示),结果送入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],如果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个队列数据块多项式ui(x)可表示为
式中LS是队列(1,2,3,…,N-1)中的数据块位数,
LF是队列N中的数据块位数;
(5)将最后一个队列表示为
(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(1≤j≤N-1)中数据块uj(x)的CRC子码多项式,
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(1≤j≤N-1)中数据块uj(x)的CRC子码多项式,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)的第二次除法输出;依此类推,将DQ-1(x)作为输入余数数据(Q>1),从该表 处取出R位输出DQ(x),则DQ(x)是D0(x)的第Q次除法输出;
iv.将所有可能的D0(x)(共有2R种可能组合)到DQ(x)的变换列表,得到余数变换表。
4.根据权利要求3所述的多通道多位并行计算CRC码方法,其特征在于除法余数变换表实现从输入余数数据D0(x)变换到输出DQ(x)的过程,按如下步骤进行:
(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放入表2(b)的存储单元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次余数输出列表,就可得到从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码方法,其特征在于对(R1,R2,…,RN-1,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 true CN1431594A (zh) | 2003-07-23 |
CN1193294C 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) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010115371A1 (zh) * | 2009-04-07 | 2010-10-14 | 华为技术有限公司 | 一种循环冗余校验crc码的实现方法和装置 |
CN101207467B (zh) * | 2006-12-19 | 2011-05-18 | 大唐移动通信设备有限公司 | 循环冗余校验码的生成和数据序列发送、校验方法及装置 |
CN101369242B (zh) * | 2008-09-28 | 2011-06-15 | 西北工业大学 | 计算机内存程序代码和数据的自检方法 |
CN102299778A (zh) * | 2007-08-21 | 2011-12-28 | 华为技术有限公司 | 反馈方法、反馈信息的区分方法及装置 |
CN101478369B (zh) * | 2009-01-05 | 2012-05-23 | 华为终端有限公司 | 一种crc校验的方法和系统 |
CN102567276A (zh) * | 2011-12-19 | 2012-07-11 | 华为技术有限公司 | 基于多通道的数据传输方法、相关节点及系统 |
CN102739258A (zh) * | 2011-04-14 | 2012-10-17 | 普天信息技术研究院有限公司 | 一种计算循环冗余校验码的方法及装置 |
CN101702639B (zh) * | 2009-11-23 | 2012-12-19 | 成都市华为赛门铁克科技有限公司 | 循环冗余校验的校验值计算方法及装置 |
CN103199873A (zh) * | 2013-04-23 | 2013-07-10 | 常熟理工学院 | 两级分块crc运算的快速配置方法 |
CN103795502A (zh) * | 2014-02-28 | 2014-05-14 | 杭州华三通信技术有限公司 | 一种数据帧校验码生成方法和装置 |
CN104253616A (zh) * | 2007-09-18 | 2014-12-31 | 三星电子株式会社 | 产生多个循环冗余校验的方法和设备 |
CN104618055A (zh) * | 2014-12-31 | 2015-05-13 | 曙光信息产业(北京)有限公司 | 一种基于sdh传输系统的数据校验方法和装置 |
US9143276B2 (en) | 2012-11-10 | 2015-09-22 | Hua Zhong University Of Science And Technology | Nested CRC (cyclic redundancy check) code generation method and device for data transmission error control |
CN105103454A (zh) * | 2013-03-15 | 2015-11-25 | 吉林克斯公司 | 模块化且可扩展的循环冗余校验计算电路 |
CN105528183A (zh) * | 2016-01-26 | 2016-04-27 | 华为技术有限公司 | 一种存储数据的方法及存储设备 |
CN106650835A (zh) * | 2015-07-22 | 2017-05-10 | 深圳市远望谷信息技术股份有限公司 | 在铁路车号识别系统中提高数据传输可靠性的方法 |
CN107154836A (zh) * | 2017-06-28 | 2017-09-12 | 西安空间无线电技术研究所 | 一种基于fpga的并行循环冗余crc校验方法 |
CN107451008A (zh) * | 2017-06-29 | 2017-12-08 | 北京邮电大学 | 一种crc计算方法及装置 |
CN107656833A (zh) * | 2017-11-06 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种crc计算设备及计算方法 |
CN107667475A (zh) * | 2015-05-20 | 2018-02-06 | 雅科贝思私人有限公司 | 一种用于循环冗余校验的排列演算方法 |
CN114679239A (zh) * | 2022-04-02 | 2022-06-28 | 北京诺芮集成电路设计有限公司 | 一种高速网络中crc分段计算方法及装置 |
CN117097440A (zh) * | 2023-10-18 | 2023-11-21 | 苏州联讯仪器股份有限公司 | 一种以太网包crc校验方法 |
-
2003
- 2003-01-27 CN CNB031144632A patent/CN1193294C/zh not_active Expired - Fee Related
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101207467B (zh) * | 2006-12-19 | 2011-05-18 | 大唐移动通信设备有限公司 | 循环冗余校验码的生成和数据序列发送、校验方法及装置 |
CN102299778A (zh) * | 2007-08-21 | 2011-12-28 | 华为技术有限公司 | 反馈方法、反馈信息的区分方法及装置 |
CN102299778B (zh) * | 2007-08-21 | 2014-02-19 | 华为技术有限公司 | 反馈方法、反馈信息的区分方法及装置 |
CN104253616A (zh) * | 2007-09-18 | 2014-12-31 | 三星电子株式会社 | 产生多个循环冗余校验的方法和设备 |
CN101369242B (zh) * | 2008-09-28 | 2011-06-15 | 西北工业大学 | 计算机内存程序代码和数据的自检方法 |
CN101478369B (zh) * | 2009-01-05 | 2012-05-23 | 华为终端有限公司 | 一种crc校验的方法和系统 |
WO2010115371A1 (zh) * | 2009-04-07 | 2010-10-14 | 华为技术有限公司 | 一种循环冗余校验crc码的实现方法和装置 |
US9071275B2 (en) | 2009-04-07 | 2015-06-30 | Huawei Technologies Co., Ltd. | Method and device for implementing cyclic redundancy check codes |
CN101702639B (zh) * | 2009-11-23 | 2012-12-19 | 成都市华为赛门铁克科技有限公司 | 循环冗余校验的校验值计算方法及装置 |
CN102739258A (zh) * | 2011-04-14 | 2012-10-17 | 普天信息技术研究院有限公司 | 一种计算循环冗余校验码的方法及装置 |
WO2013091536A1 (zh) * | 2011-12-19 | 2013-06-27 | 华为技术有限公司 | 基于多通道的数据传输方法、相关节点及系统 |
CN102567276A (zh) * | 2011-12-19 | 2012-07-11 | 华为技术有限公司 | 基于多通道的数据传输方法、相关节点及系统 |
CN102567276B (zh) * | 2011-12-19 | 2014-03-12 | 华为技术有限公司 | 基于多通道的数据传输方法、接收节点及跨节点互联系统 |
US9143276B2 (en) | 2012-11-10 | 2015-09-22 | Hua Zhong University Of Science And Technology | Nested CRC (cyclic redundancy check) code generation method and device for data transmission error control |
CN105103454A (zh) * | 2013-03-15 | 2015-11-25 | 吉林克斯公司 | 模块化且可扩展的循环冗余校验计算电路 |
CN105103454B (zh) * | 2013-03-15 | 2019-03-29 | 吉林克斯公司 | 模块化且可扩展的循环冗余校验计算电路 |
CN103199873A (zh) * | 2013-04-23 | 2013-07-10 | 常熟理工学院 | 两级分块crc运算的快速配置方法 |
CN103199873B (zh) * | 2013-04-23 | 2016-03-30 | 常熟理工学院 | 两级分块crc运算的快速配置方法 |
CN103795502A (zh) * | 2014-02-28 | 2014-05-14 | 杭州华三通信技术有限公司 | 一种数据帧校验码生成方法和装置 |
CN103795502B (zh) * | 2014-02-28 | 2017-04-12 | 杭州华三通信技术有限公司 | 一种数据帧校验码生成方法和装置 |
CN104618055A (zh) * | 2014-12-31 | 2015-05-13 | 曙光信息产业(北京)有限公司 | 一种基于sdh传输系统的数据校验方法和装置 |
CN104618055B (zh) * | 2014-12-31 | 2018-03-27 | 曙光信息产业(北京)有限公司 | 一种基于sdh传输系统的数据校验方法和装置 |
CN107667475A (zh) * | 2015-05-20 | 2018-02-06 | 雅科贝思私人有限公司 | 一种用于循环冗余校验的排列演算方法 |
CN106650835A (zh) * | 2015-07-22 | 2017-05-10 | 深圳市远望谷信息技术股份有限公司 | 在铁路车号识别系统中提高数据传输可靠性的方法 |
CN106650835B (zh) * | 2015-07-22 | 2020-04-10 | 深圳市远望谷信息技术股份有限公司 | 在铁路车号识别系统中提高数据传输可靠性的方法 |
CN105528183A (zh) * | 2016-01-26 | 2016-04-27 | 华为技术有限公司 | 一种存储数据的方法及存储设备 |
CN105528183B (zh) * | 2016-01-26 | 2019-01-18 | 华为技术有限公司 | 一种存储数据的方法及存储设备 |
CN107154836A (zh) * | 2017-06-28 | 2017-09-12 | 西安空间无线电技术研究所 | 一种基于fpga的并行循环冗余crc校验方法 |
CN107451008A (zh) * | 2017-06-29 | 2017-12-08 | 北京邮电大学 | 一种crc计算方法及装置 |
CN107451008B (zh) * | 2017-06-29 | 2020-05-08 | 北京邮电大学 | 一种crc计算方法及装置 |
CN107656833A (zh) * | 2017-11-06 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种crc计算设备及计算方法 |
CN114679239A (zh) * | 2022-04-02 | 2022-06-28 | 北京诺芮集成电路设计有限公司 | 一种高速网络中crc分段计算方法及装置 |
CN114679239B (zh) * | 2022-04-02 | 2024-04-23 | 北京诺芮集成电路设计有限公司 | 一种高速网络中crc分段计算方法及装置 |
CN117097440A (zh) * | 2023-10-18 | 2023-11-21 | 苏州联讯仪器股份有限公司 | 一种以太网包crc校验方法 |
CN117097440B (zh) * | 2023-10-18 | 2024-03-15 | 苏州联讯仪器股份有限公司 | 一种以太网包crc校验方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1193294C (zh) | 2005-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1193294C (zh) | 一种多通道多位并行计算crc码的方法 | |
CN101902228B (zh) | 快速循环冗余校验编码方法及装置 | |
CN201153259Y (zh) | 并行数据循环冗余校验装置及双向数据传输系统 | |
CN101080875A (zh) | 纠错方法以及装置 | |
CN1198422C (zh) | 检测带逆序校验位的循环冗余校验码中的错误的装置和方法 | |
CN103731239A (zh) | 一种适用于向量处理器的通用crc并行计算部件及方法 | |
CN1297616A (zh) | Turbo交错器/解交错器中使用的地址发生器和地址发生方法 | |
CN1288863C (zh) | 产生正交可变扩展因子的方法及装置 | |
CN1324517A (zh) | 用于生成循环冗余校验代码的并行循环冗余校验生成电路 | |
CN1858999A (zh) | 伪随机序列发生装置 | |
CN1106081C (zh) | 译码电路 | |
CN1252937C (zh) | 解码装置以及解码方法 | |
CN101034894A (zh) | 一种实现解码的电路和方法 | |
CN117014017A (zh) | 一种基于高位宽数据计算多项式除法余数的crc计算方法 | |
CN101848055A (zh) | 一种数据修正方法和装置 | |
CN108628698B (zh) | 计算crc编码的方法和装置 | |
CN103269255A (zh) | 一种并行crc电路的生成方法和装置 | |
CN1599262A (zh) | 宽带无线接入系统中里德索洛门卷积级联码的实现方法 | |
CN1323102A (zh) | 用于特博码的解码器及其解码方法 | |
KR101286019B1 (ko) | 터보 인코더 장치 | |
CN102118225B (zh) | 基于多索引表的任意位多项式除法类型编码的编解码方法 | |
CN1219363C (zh) | 一种用于码分多址通信系统的速率匹配装置 | |
CN1773863A (zh) | 一种可用于大容量存储器的rs(256,252)码纠错译码芯片 | |
US10623018B2 (en) | Method of arrangement of an algorithm in cyclic redundancy check | |
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 |