循环冗余校验码(CRC)的基本原理

合集下载

CRC校验原理及步骤

CRC校验原理及步骤

C R C校验原理及步骤 This model paper was revised by the Standardization Office on December 10, 2020CRC校验原理及步骤什么是CRC校验CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。

循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

CRC校验原理:其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。

当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。

到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。

因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。

如果有余数,则表明该帧在传输过程中出现了差错。

模2除法:模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。

在循环冗余校验码(CRC)的计算中有应用到模2除法。

例:CRC校验步骤:CRC校验中有两个关键点,一是预先确定一个发送送端和接收端都用来作为除数的二进制比特串(或多项式),可以随机选择,也可以使用国际标准,但是最高位和最低位必须为1;二是把原始帧与上面计算出的除数进行模2除法运算,计算出CRC码。

具体步骤:1. 选择合适的除数2. 看选定除数的二进制位数,然后再要发送的数据帧上面加上这个位数-1位的0,然后用新生成的帧以模2除法的方式除上面的除数,得到的余数就是该帧的CRC校验码。

注意,余数的位数一定只比除数位数少一位,也就是CRC校验码位数比除数位数少一位,如果前面位是0也不能省略。

CRC校验原理分析

CRC校验原理分析

CRC校验原理分析CRC(循环冗余校验码)是一种校验码,常用于数据传输中的错误检测,通过对数据进行一系列的异或运算得到一个固定长度的校验码。

CRC校验原理是一种基于多项式计算的校验方法,本文将从CRC校验的基本原理、计算过程、特点和应用等方面进行详细分析。

CRC校验的基本原理如下:假设需要校验的数据为D,校验码为CRC,CRC校验是通过对数据D添加一个校验位得到校验码CRC。

发送方在发送数据之前,首先计算出校验码CRC,并将CRC添加到数据D的末尾一起发送。

接收方在接收到数据之后,再次计算CRC,与接收到的CRC进行比较,如果两者一致,则说明数据传输过程中没有出错;如果不一致,则说明数据传输过程中发生了错误。

1.定义一个生成多项式G,通常为一个固定的二进制数,比如CRC-16的生成多项式为x^16+x^15+x^2+12.初始化一个寄存器为全0。

3.按位地从输入数据D的最高位开始处理,依次将输入数据D的每一位与寄存器的最高位进行异或运算。

4.将寄存器向左移一位,把输入数据D的下一位填入寄存器的最低位。

5.如果寄存器的最高位为1,则将寄存器与生成多项式G进行异或运算。

6.重复以上步骤,直到处理完输入数据D的所有位。

7.最终得到的寄存器的值就是CRC校验码。

1.高效性:CRC校验码通过异或运算实现,在计算速度上非常高效。

2.容错性:CRC校验码可以检测出多位错误,具有较强的容错性。

3.校验位数可变性:根据不同的需求,可以选择不同长度的CRC校验码,常见的有CRC-16、CRC-32等。

4.硬件支持:CRC校验码的计算与硬件电路结构相关,可以通过专用的硬件电路加速计算过程。

5.无纠错性:CRC校验码可以检测错误,但无法进行纠错。

CRC校验广泛应用于数据通信、磁盘存储等领域,具有很高的实用性。

在数据通信中,发送方可以通过CRC校验码确认数据是否正确发送,接收方可以通过CRC校验码检测出数据传输中的错误,对错误数据进行重发或者纠正。

CRC循环冗余校验码总结(转)

CRC循环冗余校验码总结(转)

CRC循环冗余校验码总结(转)⼀、CRC简介先在此说明下什么是CRC:循环冗余码校验英⽂名称为Cyclical Redundancy Check,简称CRC,它是利⽤除法及余数的原理来作错误侦测(Error Detecting)的。

实际应⽤时,发送装置计算出CRC值并随数据⼀同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相⽐较,若两个CRC值不同,则说明数据通讯出现错误那么其实CRC有⽐较多种,⽐如CRC16、CRC32 ,为什么叫16、32呢。

在这⾥并⾮与位有和关系。

⽽是由所确定的多项式最⾼次幂确定的。

如下所⽰。

理论上讲幂次越⾼校验效果越好。

CRC(12位) =X12+X11+X3+X2+X+1 CRC(16位) = X16+X15+X2+1 CRC(CCITT) = X16+X12 +X5+1 CRC(32位) = X32+X26+X23+X16+X12+X11+X10+ X8+X7+X5+X4+X2+X+1⼆、循环冗余校验码(CRC)的基本原理:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码⼜叫(N,K)码。

对于⼀个给定的(N,K)码,可以证明存在⼀个最⾼次幂为N-K=R的多项式G(x)。

根据G(x)可以⽣成K 位信息的校验码,⽽G(x)叫做这个CRC码的⽣成多项式。

校验码的具体⽣成过程为:假设发送信息⽤信息多项式C(X)表⽰,将C(x)左移R位,则可表⽰成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。

通过C(x)*2R除以⽣成多项式G(x)得到的余数就是校验码。

原理思维导图总结:三、通信与⽹络中常⽤的CRC在数据通信与⽹络中,通常k相当⼤,由⼀千甚⾄数千数据位构成⼀帧,⽽后采⽤CRC码产⽣r位的校验位。

它只能检测出错误,⽽不能纠正错误。

⼀般取r=16,标准的16位⽣成多项式有CRC-16=x16+x15+x2+1 和CRC-CCITT=x16+x15+x2+1。

CRC校验原理及步骤

CRC校验原理及步骤

什么是CRC校验?
CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。

循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

CRC校验原理:
种称之为
模2
CRC
2. 看选定除数的二进制位数,然后再要发送的数据帧上面加上这个位数-1位的0,然后用新生成的帧以模2除法的方式除上面的除数,得到的余数就是该帧的CRC校验码。

注意,余数的位数一定只比除数位数少一位,也就是CRC校验码位数比除数位数少一位,如果前面位是0也不能省略。

3. 将计算出来的CRC校验码附加在原数据帧后面,构建成一个新的数据帧进行发送;最后接收端在以模
2除法方式除以前面选择的除数,如果没有余数,则说明数据帧在传输的过程中没有出错。

CRC校验码计算示例:
现假设选择的CRC生成多项式为G(X)?= X4?+ X3?+ 1,要求出二进制序列的CRC校验码。

下面是具
体的计算过程:
①将多项式转化为二进制序列,由G(X)?= X4?+ X3?+ 1可知二进制一种有五位,第4位、第三位和第零位分
别为1,则序列为11001
②多项式的位数位5,则在数据帧的后面加上5-1位0,数据帧变为0000,然后使用模2除法除以除数1
1001,得到余数。

【补几位0与x的最高次幂相同,模除就是进行异或】
③将计算出来的CRC校验码添加在原始帧的后面,真正的数据帧为0100,再把这个数据帧发送到接收端。

④。

crc循环冗余码的纠错原理

crc循环冗余码的纠错原理

crc循环冗余码的纠错原理循环冗余码(Cyclic Redundancy Check,CRC)是一种常用的数据校验方法,它通过对数据进行多项式运算,生成校验码,并将校验码附加在数据中发送。

接收方在接收到数据后,再次进行多项式运算,若得到的结果与发送方生成的校验码一致,说明数据未出错;否则,数据存在错误,需要进行纠错。

下面将详细介绍CRC循环冗余码的纠错原理。

CRC纠错原理的基本思想是利用多项式除法的余数特性来检测和纠正数据传输中的错误。

在发送方,数据被视为多项式的系数,通过进行多项式除法运算,得到的余数作为校验码附加在数据末尾。

接收方在接收到数据后,同样进行多项式除法运算,若得到的余数为0,则说明数据未出错;若余数不为0,则说明数据存在错误。

具体步骤如下:1. 确定生成多项式G,一般为k+1位的二进制数,其中k为校验码的位数。

2. 将数据D视为n位的二进制数,作为除数,左移k位,将除数与生成多项式进行异或运算,得到余数R。

3. 将余数R附加在数据D的末尾,形成新的数据D'。

4. 将数据D'发送给接收方。

5. 接收方接收到数据D'后,将其视为n+k位的二进制数,作为除数,左移k位,将除数与生成多项式进行异或运算,得到余数R'。

6. 若余数R'为0,则说明数据未出错;若余数R'不为0,则说明数据存在错误,需要进行纠错。

CRC纠错原理的有效性在于多项式除法运算的特性。

通过选择适当的生成多项式,可以使CRC具有较高的检错能力。

常用的生成多项式有CRC-8、CRC-16和CRC-32等,其中CRC-32的检错能力最强。

CRC循环冗余码的纠错原理基于二进制的异或运算,不涉及除法运算,因此计算速度较快。

同时,CRC也具有较强的检错能力,可以有效地检测和纠正数据传输中的错误。

在实际应用中,CRC广泛用于数据通信、存储介质等领域,保障数据的可靠性和完整性。

总结起来,CRC循环冗余码的纠错原理是通过多项式除法运算来生成校验码,将校验码附加在数据中发送。

crc循环冗余码

crc循环冗余码

一。

在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据进行校验即差错控制。

循环冗余校验CRC(Cyclic Redundancy Check)是对一个传送数据块进行校验,是一种高效的差错控制方法。

1循环冗余校验码原理CRC校验采用多项式编码方法,如一个8位二进制数(B7B6B5B4B3B2B1B0)可以用7阶二进制码多项式B7X7+B6X6+B5X5+B4X4+B3X3+B2X2+B1X1+B0X0表示。

例如11000001可表示为1X7+1X6+0X5+0X4+0X3+0X2+0X1+0X0一般说,n位二进制数可用(n-1)阶多项式表示。

它把要发送的数据位串看成是系数只能为“1”或“0”的多项式。

一个n位的数据块可以看成是从Xn-1到X0的n项多项式的系数序列,位于数据块左边的最高位是Xn-1项的系数,次高位是Xn-2项的系数,依此类推,位于数据块右边的最低位是X0项的系数,这个多项式的阶数为n-1。

多项式乘除法运算过程与普通代数多项式的乘除法相同。

多项式的加减法运算以2为模,加减时不进、错位,如同逻辑异或运算。

采用CRC校验时,发送方和接收方事先约定一个生成多项式G(X),并且G(X)的最高项和最低项的系数必须为1。

设m位数据块的多项式为M(X),生成多项式G(X)的阶数必需比M(X)的阶数低。

CRC校验码的检错原理是:发送方先为数据块生成CRC校验码,使这个CRC校验码的多项式能被G(X)除尽,实际发送此CRC校验码;接收方用收到的C RC校验码除以G(X),如果能除尽,表明传输正确,否则,表示有传输错误,请求重发。

生成数据块的CRC校验码的方法是:(1) 设G(X)为r阶,在数据块末尾添加r个0,使数据块为m+r位,则相应的多项式为XrM(X);(2) 以2为模,用对应于G(X)的位串去除对应于XrM(X)的位串,求得余数位串;(3) 以2为模,从对应于XrM(X)的位串中减去余数位串,结果就是为数据块生成的带足够校验信息的CRC校验码位串。

CRC循环冗余校验的原理

CRC循环冗余校验的原理

CRC循环冗余校验的原理循环冗余校验(CRC)是一种用于检测或纠正错误的数据校验方法,常用于通信中对数据进行完整性校验。

CRC的原理是利用一个固定的产生多项式对数据进行除法运算,并将余数作为校验码添加到数据中,接收方通过对接收到的数据再次进行除法运算,将得到的余数与发送方发送的校验码进行比较,用于判断接收到的数据是否出现了错误。

CRC的计算方式如下:1.选择一个生成多项式,该多项式的位数比待校验数据的位数少1、通常使用的生成多项式有常用的CRC-32和CRC-16多项式。

2.在待校验数据后添加一组位数等于生成多项式位数的0,这个数据称为"扩展数据"。

3.将扩展数据除以生成多项式,取得的余数即为校验码。

4.将校验码添加到原数据后,形成带有校验码的完整数据,即为发送数据。

例如,我们用CRC-16多项式来演示CRC的运算步骤。

生成多项式是一个16位的二进制数:10001101000101000(0x1021)。

假设我们发送的数据是一个16位的二进制数:11010101000111100。

第一步,在待校验数据后添加16位的0,形成扩展数据:110101010001111000000000000000000。

第二步,将扩展数据与生成多项式进行除法运算,得到的余数为:0100110011100100(0x4CE4)。

第三步,将校验码添加到原数据后,得到发送数据为:110101010001111000100110011100100。

这样,发送方将这个发送数据发送给接收方。

接收方接收到数据后,进行相同的操作,再次用生成多项式进行除法运算,得到余数。

如果余数为0,则表明数据没有错误;如果余数不为0,则表明数据存在错误。

CRC的性质和应用:1.CRC可以检测出所有奇数位数量的错误,以及几乎所有偶数位数量的错误。

对于t位的生成多项式,CRC可以检测出所有长度小于t的错误序列。

2.CRC不仅可以用于数据的检错,还可以用于数据的纠错。

循环冗余校验码(CRC)的基本原理

循环冗余校验码(CRC)的基本原理

循环冗余校验码(CRC)的基本原理循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。

对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R 的多项式G(x)。

根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。

校验码的具体生成过程为:假设发送信息用信息多项式f(X)表示,将f(x)左移R位(则可表示成f(x)*X R),这样f(x)的右边就会空出R位,这就是校验码的位置。

通过f(x)* X R除以生成多项式G(x)得到的余数就是校验码。

几个基本概念1、多项式与二进制数码多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。

可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。

多项式包括生成多项式G(x)和信息多项式f(x)。

如生成多项式为G(x)=X4+X3+X+1,可转换为二进制数码11011。

而发送信息位1111,可转换为数据多项式为f(x)=X3+X2+X+1。

2、生成多项式是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。

在发送方,利用生成多项式对信息多项式做模2除生成校验码。

在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。

应满足以下条件:a、生成多项式的最高位和最低位必须为1。

b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。

c、不同位发生错误时,应该使余数不同。

d、对余数继续做模2除,应使余数循环。

将这些要求反映为数学关系是比较复杂的。

但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示:N K 码距d G(x)多项式G(x)7 4 3 x3+x+1 10117 4 3 x3+x2+1 11017 3 4 x4+x3+x2+1 111017 3 4 x4+x2+x+1 1011115 11 3 x4+x+1 1001115 7 5 x8+x7+x6+x4+1 11101000131 26 3 x5+x2+1 10010131 21 5 x10+x9+x8+x6+x5+x3+1 11101101 00163 57 3 x6+x+1 100001163 51 5 x12+x10+x5+x4+x2+1 10100001 101011041 1024 x16+x15+x2+1 110000000000 00101图9 常用的生成多项式3、模2除(按位除)模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环冗余校验码(CRC)的基本原理
模2除(按位除)
模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。

所以实际上就是异或。

然后再移位移位做下一位的模2减。

步骤如下:
a、用除数对被除数最高几位做模2减,没有借位。

b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。

若余数最高位为0,商为0,除数继续右移一位。

c、一直做到余数的位数小于除数时,该余数就是最终余数。

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。

对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。

根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。

校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。

通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。

CRC码的生成步骤
4、得到011-------余数(校验位)
5、编码后的报文(CRC码)1010011
1、将x的最高幂次为R的生成多项式G(x)转换成对应的R+1位二进制数。

2、将信息码左移R位,相当与对应的信息多项式C(x)*2R
3、用生成多项式(二进制数)对信息码做模2除,得到R位的余数。

4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。

【例】假设使用的生成多项式是G(x)=x3+x+1。

4位的原始报文为1010,求编码后的报文。

解:
1、将生成多项式G(x)=x3+x+1转换成对应的二进制除数1011。

2、此题生成多项式有4位(R+1),要把原始报文C(x)左移3(R)位变成1010000
3、用生成多项式对应的二进制数对左移4位后的原始报文进行模2除。

相关文档
最新文档