精华内容
下载资源
问答
  • 比起奇偶校验(PCC)只能校验一位错误,循环冗余校验(CRC)的检错能力更强,可以检出多位错误。 1.CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实...

    比起奇偶校验码(PCC)只能校验一位错误,循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。

    1.CRC校验原理

    CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。

    【说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。如100101除以1110,结果得到商为11,余数为1,如图5-9左图所示。如11×11=101,如图5-9右图所示。

    在这里插入图片描述
    图1: "模2除法"和"模2乘法"示例

    具体来说,CRC校验原理就是以下几个步骤:

    (1)先选择(可以随机选择,也可按标准选择,具体在后面介绍)一个用于在接收端进行校验时,对接收的帧进行除法运算的除数(是二进制比较特串,通常是以多项方式表示,所以CRC又称多项式编码方法,这个多项式也称之为“生成多项式”)。

    (2)看所选定的除数二进制位数(假设为k位),然后在要发送的数据帧(假设为m位)后面加上k-1位“0”,然后以这个加了k-1个“0“的新帧(一共是m+k-1位)以“模2除法”方式除以上面这个除数,所得到的余数(也是二进制的比特串)就是该帧的CRC校验码,也称之为FCS(帧校验序列)。但要注意的是,余数的位数一定要是比除数位数只能少一位,哪怕前面位是0,甚至是全为0(附带好整除时)也都不能省略。

    (3)再把这个校验码附加在原数据帧(就是m位的帧,注意不是在后面形成的m+k-1位的帧)后面,构建一个新帧发送到接收端;最后在接收端再把这个新帧以“模2除法”方式除以前面选择的除数,如果没有余数,则表明该帧在传输过程中没出错,否则出现了差错。

    从上面可以看出,CRC校验中有两个关键点:一是要预先确定一个发送端和接收端都用来作为除数的二进制比特串(或多项式);二是把原始帧与上面选定的除进行二进制除法运算,计算出FCS。前者可以随机选择,也可按国际上通行的标准选择,但最高位和最低位必须均为"1",如在IBM的SDLC(同步数据链路控制)规程中使用的CRC-16(也就是这个除数一共是17位)生成多项式g(x)= x16 + x15 + x2 +1(对应二进制比特串为:11000000000000101);而在ISO HDLC(高级数据链路控制)规程、ITU的SDLC、X.25、V.34、V.41、V.42等中使用CCITT-16生成多项式g(x)= x^16 + x^15 + x^5 +1(对应二进制比特串为:11000000000100001)。

    2. CRC校验码的计算示例

    由以上分析可知,既然除数是随机,或者按标准选定的,所以CRC校验的关键是如何求出余数,也就是校验码(CRC校验码)。

    下面以一个例子来具体说明整个过程。现假设选择的CRC生成多项式为G(X) = X^4 + X^3 + 1,要求出二进制序列10110011的CRC校验码。下面是具体的计算过程:

    (1)首先把生成多项式转换成二进制数,由G(X) = X^4 + X^3 + 1可以知道(,它一共是5位(总位数等于最高位的幂次加1,即4+1=5),然后根据多项式各项的含义(多项式只列出二进制值为1的位,也就是这个二进制的第4位、第3位、第0位的二进制均为1,其它位均为0)很快就可得到它的二进制比特串为11001

    (2)因为生成多项式的位数为5,根据前面的介绍,得知CRC校验码的位数为4(校验码的位数比生成多项式的位数少1)。因为原数据帧10110011,在它后面再加4个0,得到101100110000,然后把这个数以“模2除法”方式除以生成多项式,得到的余数(即CRC码)为0100,如图2所示。注意参考前面介绍的“模2除法”运算法则。
    在这里插入图片描述
    图2 CRC校验码计算示例

    (3)把上步计算得到的CRC校验0100替换原始帧101100110000后面的四个"0",得到新帧101100110100。再把这个新帧发送到接收端。

    (4)当以上新帧到达接收端后,接收端会把这个新帧再用上面选定的除数11001以"模2除法"方式去除,验证余数是否为0,如果为0,则证明该帧数据在传输过程中没有出现差错,否则出现了差错。

    通过以上CRC校验原理的剖析和CRC校验码的计算示例的介绍,大家应该对这种看似很复杂的CRC校验原理和计算方法应该比较清楚了。

    原文出处:https://blog.51cto.com/winda/1063951

    展开全文
  • 其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成...

    CRC校验原理
    CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。

    【说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。如100101除以1110,结果得到商为11,余数为1,如图所示。如11×11=101,如图所示。
    在这里插入图片描述

    具体来说,CRC校验原理就是以下几个步骤:

    (1)先选择(可以随机选择,也可按标准选择,具体在后面介绍)一个用于在接收端进行校验时,对接收的帧进行除法运算的除数(是二进制比较特串,通常是以多项方式表示,所以CRC又称多项式编码方法,这个多项式也称之为“生成多项式”)。

    (2)看所选定的除数二进制位数(假设为k位),然后在要发送的数据帧(假设为m位)后面加上k-1位“0”,然后以这个加了k-1个“0“的新帧(一共是m+k-1位)以“模2除法”方式除以上面这个除数,所得到的余数(也是二进制的比特串)就是该帧的CRC校验码,也称之为FCS(帧校验序列)。但要注意的是,余数的位数一定要是比除数位数只能少一位,哪怕前面位是0,甚至是全为0(附带好整除时)也都不能省略。

    (3)再把这个校验码附加在原数据帧(就是m位的帧,注意不是在后面形成的m+k-1位的帧)后面,构建一个新帧发送到接收端,最后在接收端再把这个新帧以“模2除法”方式除以前面选择的除数,如果没有余数,则表明该帧在传输过程中没出错,否则出现了差错。
    通过以上介绍,大家一定可以理解CRC校验的原理,并且不再认为很复杂吧。

    从上面可以看出,CRC校验中有两个关键点:一是要预先确定一个发送端和接收端都用来作为除数的二进制比特串(或多项式);二是把原始帧与上面选定的除进行二进制除法运算,计算出FCS。前者可以随机选择,也可按国际上通行的标准选择,但最高位和最低位必须均为“1”,如在IBM的SDLC(同步数据链路控制)规程中使用的CRC-16(也就是这个除数一共是17位)生成多项式g(x)= x16 + x15 + x2 +1(对应二进制比特串为:11000000000000101);而在ISO HDLC(高级数据链路控制)规程、ITU的SDLC、X.25、V.34、V.41、V.42等中使用CCITT-16生成多项式g(x)=x16 + x15 + x5 +1(对应二进制比特串为:11000000000100001)。
    CRC校验码的计算示例
    由以上分析可知,既然除数是随机,或者按标准选定的,所以CRC校验的关键是如何求出余数,也就是CRC校验码。

    下面以一个例子来具体说明整个过程。现假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,要求出二进制序列10110011的CRC校验码。下面是具体的计算过程:
    (1)首先把生成多项式转换成二进制数,由G(X) = X4 + X3 + 1可以知道(,它一共是5位(总位数等于最高位的幂次加1,即4+1=5),然后根据多项式各项的含义(多项式只列出二进制值为1的位,也就是这个二进制的第4位、第3位、第0位的二进制均为1,其它位均为0)很快就可得到它的二进制比特串为11001。
    (2)因为生成多项式的位数为5,根据前面的介绍,得知CRC校验码的位数为4(校验码的位数比生成多项式的位数少1)。因为原数据帧10110011,在它后面再加4个0,得到101100110000,然后把这个数以“模2除法”方式除以生成多项式,得到的余数,即CRC校验码为0100,如图所示。注意参考前面介绍的“模2除法”运算法则。
    在这里插入图片描述

    (3)把上步计算得到的CRC校验码0100替换原始帧101100110000后面的四个“0”,得到新帧101100110100。再把这个新帧发送到接收端。

    (4)当以上新帧到达接收端后,接收端会把这个新帧再用上面选定的除数11001以“模2除法”方式去除,验证余数是否为0,如果为0,则证明该帧数据在传输过程中没有出现差错,否则出现了差错。 通过以上CRC校验原理的剖析和CRC校验码的计算示例的介绍,大家应该对这种看似很复杂的CRC校验原理和计算方法应该比较清楚了。

    展开全文
  • 循环冗余校验检错方案(CRC)

    千次阅读 2016-07-23 15:08:05
    循环冗余校验检错方案(CRC) 1、crc校验原理 crc校验的根本思想就是在要发送的帧后面附加一个二进制序列,生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使生成的新帧能与发送端和接收端共同...

    循环冗余校验检错方案(CRC)

    1、crc校验原理
    crc校验的根本思想就是在要发送的帧后面附加一个二进制序列,生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使生成的新帧能与发送端和接收端共同选定的某个特定数整除,需要注意的是,这里不是采用的二进制除法,而是采用“模2除法”。到达接收端后,再把接收到的新帧除以(模2除)这个选定的除数。因为在发送端已经通过附加一个数做了去余处理,故得出的结果应该没有余数。如果出现了余数,则说明在传输的过程中出现了差错。
    【说明】“模2除法”和“算数除法”类似,但它既不向上借位,也不比较除数与被除数相同位的数的大小,只要以相同的位数整除即可。模2加法运算:1+1=0, 1+0=1, 0+0=0,无进位,也无借位。模2减法运算:1-1=0, 1-0=1, 0-1=1, 0-0=0,无进位,也无借位。这两种运算相当于逻辑运算中的异或运算。如 100101除以1110,结果得到商为110,余数为1。
    具体来说,crc校验主要分为一下几个步骤:
    1)先选择(可以随机选择,也可以按照标准选择)一个用于在接收端进行校验时,对接收的帧进行除法运算的除数(是二进制比特串,通常以多项式表达,所以crc又称多项式编码方法,这个多项式也称为“生成多项式”)。
    2)假定所选的数据帧为k位,然后在要发送的数据帧(假定m位)的后面补上k-1位“0”,然后用这个新帧(一共m+k-1位)以“模2除法”的方式除以上面这个除数,所得到的余数(也是二进制比特序列)就是该帧的crc校验码,也称之为FCS(帧校验序列)。 但要注意的是,余数的位数一定要只比除数的位数少一位,哪怕前面位是0,甚至全位0时都不能省略。
    3)再把这个校验码附在原数据帧(就是m位的帧,不是生成的m+k-1位的帧)的后面,构建一个新帧发送给接收端;最后再在接收端再把这个新帧以“模2除法”的方式除以前面选择的除数,如果没有余数,则表明该帧在传输的过程中没有出错,否则出现了差错。
    从上面可以看出,CRC校验中有两个关键点:一是要确定一个发送端可以接收端都用来作为除数的二进制比特串(或多项式),二是把原始帧与上面选定的除数进行二进制“模2除法”运算,计算出FCS,前者可以随机选择,也可以按照国际上通行的标准选择,但是 最高位和最低位必须均为“1”。如在IBM的SDLC(同步数据链路控制)规程中是用的CRC-16生成多项式g(x) = x^16 + x^15 + x^2 + 1(对应二进制比特串位: 11000000000000101);而在ISO HDLC(高级数据链路控制)规程、ITU的SDLC、X.25、V.34、V.41、V.42等中是用CCITT-16生成多项式g(x) = x^16 + x^15 + x^5 + 1(对应二进制比特串为: 11000000000100001)。

    2、crc校验码的计算示例
    现假设选择CRC生成多项式位g(x) =  x^4 + x^3 + 1,要求求出二进制序列 10110011的CRC校验码。
    1)根据生成多项式可以得到二进制比特序列除数位 11001
    2)因为生成多项式的位数为5,得知CRC校验码的位数为4,所以在原始帧后面添加4个0,得到 10110011 0000,然后把这个数以“模2除法”的方式除以生成多项式,得到余数(CRC校验码)位 0100,计算过程如下:



    3)把上面计算出来的校验码0100替换帧 101100110000后面的四个0,得到新帧 10110011 0100,再把这个帧发送给接收端。
    4)当接收端收到这个新帧后,会以“模2除法”的方式除以上面选定的除数 11001,验证余数是否为0,如果为0,则说明上述帧在传输的过程中没有发生差错,否则出现了差错。
    展开全文
  • 循环冗余检错码CRC

    千次阅读 2018-05-19 20:05:40
    模2运算模2加以及模2减等同于异或运算,即相同得0,相异得1模2乘法模2除法样例如下循环冗余检错码CRC任何一个k位的帧看成为一个k-1次的多项式M(x):1011001 看成 x^6+x^4+x^3+1(k项k-1阶多项式)设定一个多项式编码...


    模2运算

    模2加以及模2减等同于异或运算,即相同得0,相异得1

    模2乘法模2除法样例如下



    循环冗余检错码CRC

    1. 任何一个k位的帧看成为一个k-1次的多项式M(x):1011001 看成 x^6+x^4+x^3+1(k项k-1阶多项式)
    2. 设定一个多项式编码生成多项式G(x),G(x)为r阶,G(x)任意,但r<k(虽然这么说但一般有个标准)
    3. 计算x^rM(x)/G(x) = Q(x)+R(x),其中Q(x)为商、R(x)为余数
    4. 这样(x^rM(x)-R(x))一定能被G(x)整除,即余数为0,否则说明出现错误

    样例:


    • 帧:1101011011
    • 除数:10011(也就是G(x))
    • 传输帧:11010110111110(帧数据后面先添加4个0,然后再加上余数1110)

    具体过程:11010110110000/10011得余数1110 ,11010110110000-1110 = 11010110111110,所以编码后得CRC码为:11010110111110

    当这个码字达到接收方时,如CRC码在接收端能被10011整除则说明接收正确,如果不能被整除,则被检测到已出错


    生成多项式G(x)的国际标准




    展开全文
  • 它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错 检错编码——奇偶校验码 奇偶校验码特点:只能检查出奇数个比特错误,检错能力为50% 检错编码——CRC循环冗余码 最终发送的数据:要发送的数据 + ...
  • 循环冗余校验检错方案CRC 1. CRC校验原理  CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个...
  • 一、 奇偶校验码、 二、 奇偶校验码 特点、 三、 奇偶校验码 示例、 四、 CRC 循环冗余码 ( 原理说明 )、 五、 CRC 循环冗余码 计算示例、
  • 循环冗余码校验

    2016-04-17 06:45:59
    循环冗余码校验(Cyclic Redundancy Check)5.3.2循环冗余校验检错方案 上节介绍的奇偶校验码(PCC)只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。 1. CRC校验原理 CRC...
  • 计算机网络第三章(二) 1. 差错控制概述 传输中的差错都是由于噪声引起的。 全局性:由于线路本身电气特性所产生的随机噪声,是信道固有的,随机存在的。解决办法:提高信噪比来减少...3. 检错编码——CRC循环冗余码
  • CRC循环冗余检测 及其 检错纠错

    万次阅读 2009-12-20 21:03:00
    循环冗余码(CRC): 主要用于串行传送,网络,同步通信及磁表面存储等场合。即给信息码右边加上几位校验码,以增加整个编码系统的码距和查错纠错能力。CRC编码原理:(1)CRC又叫(N,K)码,整个编码长度:N位; ...
  • 奇偶校验 CRC循环冗余校验 海明
  • 1. 最终发送的数据 = 要发送的数据 + 帧检验序列FCS(冗余码) 2. 利用生成多项式计算冗余码 计算冗余码的方法: 1. 加0, 要根据生成多项式中的阶为, 则加个0. (例题中生成多项式为10011, 也就是, 式中的最高阶为4,...
  • 关于检验码和纠错码中的奇偶校验码、循环冗余码(CRC)、海明码可参考我之前写的:校验码(一文带你分析搞懂:奇偶校验码、海明码、CRC码) (1)奇偶校验码 (2)循环冗余码(CRC) 4.纠错编码(海明码) 海明码可以发现双...
  • 在数据链路层中,最广泛应用的检错码是一种漏检率很低也便于硬件实现的循环冗余校验CRC(Cyclic Redundancy Code)。 1、CRC CRC又称多项式,任何一个由二进制位数串组成的代码都可由一个只含有0和1两个系数...
  • $2.5.3循环冗余码奇偶校验码作为一种检错码虽然简单,但是漏检率太高。在计算机网络和数据通信中用E得最广泛的检错码,是一种漏检率低得多也便于实现的循环冗余码CRC (Cyclic Redundancy .Code),CRC码又称为多项式码。...
  • 检错编码(1)奇偶校验码(2)循环冗余码(CRC)4.纠错编码(海明码)(1)确定校验码位数r(2)确定校验码和数据的位置(3)求出校验码的值(4)检错与纠错 0.脑图时刻 1.为什么会出现差错? 2.检验和纠正差错的编码方法...
  • 线性反馈移位寄存器LFSR和循环冗余码CRC0 前言1 数学基础1.1 逻辑异或1.2 模2乘法 和 模2除法2 线性反馈移位寄存器LFSR2.1 抽头和特征多项式3 循环冗余码CRC 0 前言 线性反馈移位寄存器(Linear Feedback Shift ...
  • 计网笔记:CRC循环冗余码

    千次阅读 2020-07-05 20:18:39
    CRC循环冗余码是在通信领域经常用来用作检错编码的方式。 计算冗余码 我们可以通过以下步骤计算出冗余码: (1)加0:在要发送的数据后加r个0,其中r为生成多项式G(x)的阶为(一般来说,多项式为N位,则阶为N-1)...
  • CRC循环冗余码及其详细计算

    千次阅读 多人点赞 2020-09-21 20:35:05
    文章目录循环冗余校验的定义循环冗余校验的特点什么是模2运算CRC的计算具体怎么校验 循环冗余校验的定义 循环冗余校验由信息n位和校验k位构成。k位校验位拼接在n位数据位后面,n+k为循环冗余校验的...
  • 循环冗余码CRC 原则:模2除 加密时:首先被模数后面先补...循环冗余码CRC有无纠错能力讨论 举例: 模生成多项式1101 循环冗余就是会按接受数的的变化,余数随之变化,一般会重复有规律地循环出现,如上图。 满...
  • 本博客为个人学习、研究或者欣赏用,如有侵权,请与我联系删除,谢谢 文章目录 0.... 1.... 2.... (1)关于数据链路层和物理... (2)循环冗余码(CRC) 4.纠错编码(海明码) (1)确定校验码位数r (2)确定校验
  • 【前言】 数据在传输的过程中,会受到各种干扰的影响,如脉冲干扰,随机噪声干扰和人为干扰等,...所以,为了解决这个问题,数据单位中不能全部都是数据本身,还要包含其他帮助检错或纠错的东西,将这个数据单位称...
  • Verilog语言实现并行(循环冗余码)CRC校验 1 前言 (1) 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC...
  • 一.奇偶校验码 这个比较简单,容易理解,就是编码中”1...循环冗余码(CRC) 相关概念不赘述,这里介绍发送时的编码方式和接收时检错方式。 1.发送方 设要发送的数据为1101011011,生成多项式为10011。过程可参照下图。
  • 理解循环冗余码CRC

    千次阅读 2010-08-25 09:05:00
    在计算机网络和数据通信中用E得最广泛的检错码,是一种漏检率低得多也便于实现的循环冗余码CRC (Cyclic Redundancy .Code),CRC码又称为多项式码。 任何一个由二进制数位串组成的代码,都可以惟一地与一个只含有0...
  • CRC循环冗余码原理

    千次阅读 2014-12-09 11:31:25
    一。  ... 在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据进行校验即...循环冗余校验CRC(Cyclic Redundancy Check)是对一个传送数据块进行校验,是一种高效的差错控制方法。    1 循环冗余
  • 检错编码分为奇偶检验码与CRC循环冗余码。 特点:只能检查出了错,具体错在哪位并不清楚。 (1)奇偶检验码 组成: 由第1位的检验元,与后n-1位的信息元组成。 可以是奇检验码,也可以是偶检验码。区别在于检验码...
  • 循环冗余码crc

    2015-10-12 22:16:00
    生成多项式(产生校验的多项式):G(x) 余数多项式:R(x) 商:Q(x) 生成多项式是四次的,所以某个多项式除以生成多项式的余式肯定是三次的,所以要加四位0000。 生成多项式的选择是经过实际应用选择出来的,...
  • 循环冗余码--初识与计算

    万次阅读 2016-09-22 20:15:35
    本文转载借鉴于: http://www.cnblogs.com/esestt/archive/2007/08/09/848856.html ... ...循环冗余校验(Cyclic Redundancy Check ,CRC)是一种检错、纠错能力很强的数据校验,主要用于计算
  • 循环冗余校验

    千次阅读 2017-06-10 16:55:04
    CRC即循环冗余校验(Cyclic Redundancy Check ):是数据通信领域中最常用的一种查错校验,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,619
精华内容 1,447
关键字:

循环冗余码检错能力