`
jiaguwen123
  • 浏览: 405379 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

CRC解释

阅读更多
数据通信中应用最广的一种检验差错方法。方法是在发送端用数学方法产生一个循环码,叫做循环冗余检验码。在信息码位之后随信息一起发出。在接收端也用同样方法产生一个循环冗余校验码。将这两个校验码进行比较,如果一致就证明所传信息无误;如果不一致就表明传输中有差错,并要求发送端再传输。
==============================================

在串行传送(磁盘、通讯)中,广泛采用循环冗余校验码(CRC)。CRC也是给信息码加上几位校验码,以增加整个编码系统的码距和查错纠错能力。

CRC的理论很复杂,一般书上只介绍已有生成多项式后计算校验码的方法。检错能力与生成多项式有关,只能根据书上的结论死记。

循环冗余校验码(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)得到的余数就是校验码。
分享到:
评论
2 楼 jiaguwen123 2011-05-07  
CRC(Cyclic Redundancy Check)循环冗余校验码
  是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来‘确认信息’的困惑,书上提到红军和蓝军通信联合进攻山下的敌军的例子,第一天红军发了条信息要蓝军第二天一起进攻,蓝军收到之后,发一条确认信息,但是蓝军担心的是‘确认信息’如果也不可靠而没有成功到达红军那里,那自己不是很危险?于是红军再发一条‘对确认的确认信息’,但同样的问题还是不能解决,红军仍然不敢冒然行动。

  对通信的可靠性检查就需要‘校验’,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。

  CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是:
  1、首先将原信息码(kbit)左移r位(k+r=n)
  2、运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。

  非常简单,要说明的:模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是:
  0+0=1+1=0,1+0=0+1=1
即‘异’则真,‘非异’则假。
  由此得到定理:a+b+b=a 也就是‘模2减’和‘模2加’直值表完全相同。

  有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。

例如: g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:
             101
11101 | 110,0000
        111 01
          1 0100
          1 1101
            1001
余数是1001,所以CRC码是110,1001

标准的CRC码是,CRC-CCITT和CRC-16,它们的生成多项式是:
  CRC-CCITT=x16+x12+x5+1
  CRC-16=x16+x15+x2+1
1 楼 jiaguwen123 2011-05-07  
CRC校验码计算详解
(网络工程师考试必备)



以实例说明:2008年下半年上午试题(18)。

采用CRC进行差错检验,生成多项式为G(X)=X4+X+1,信息码字为10110,则计算出的CRC校验码是:   

A. 0000                       B. 0100                       C. 0010                       D.1111



【分析】

符号表示假定:多项式和多项式的系数排列均用相同的符号表示,如

G(X)= X4+X+1

G(X)=10011



1.已知条件如下:

原码字记做M(X),即:M(X) = 10110

生成多项式记做G(X),即:G(X) = 10011

G(X)的最高阶数记做r,此处r = 4



2.计算步骤

(1)计算XrM(X)

也就是把M(X)的尾部添加r个0

XrM(X) = 10110 0000



(2)计算XrM(X)长除G(X),余数记做Y(X)

这里的“长除”计算方法如下:

XrM(X) 10110 0000

--    G(X) 10011              (注意位对应方式,对应位进行异或运算即可)

          00101 0000

--    G(X)   100 11              (计算方法同上)

             001 1100

--    G(X)      100 11

                01111        (此数已经小于G(X),计算到此为止,即Y(X))

注意Y(X)的位数为r(此处为4),所以Y(X) = 1111

Y(X)即是CRC校验码。



(3) 计算传输码字T(X) = XrM(X)-Y(X)

   计算方法:在M(X)末尾连接上Y(X)即可

即:T(X) = 10110 1111



【答案】

此题只要计算出校验码Y(X)即可。正确答案为:D

相关推荐

    crc解释

    循环冗余校验 CRC 的算法分析和程序实现 西南交通大学计算机与通信工程学院 刘东 摘要 通信的目的是要把信息及时可靠地传送给对方,因此要求一个通信系统传输消息必须可靠 与快速,在数字通信系统中可靠与...

    CRC校验原理解释以及范例

    CRC校验原理解释以及范例 CRC校验原理解释以及范例 CRC校验原理解释以及范例

    CRC32 查表法源代码详细说明

    因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都...

    CRC16算法 C程序源代码

    CRC16算法

    CRC-16/MODBUS-JAVA

    CRC算法参数模型解释: NAME:参数模型名称。 WIDTH:宽度,即CRC比特数。 POLY:生成项的简写,以16进制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成项是0x104C11DB7。 INIT:这是算法...

    CRC校验原理完全阐释

    1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。

    CRC8校验.zip

    首先说一下CRC的基本概念,CRC(Cyclic Redundancy Check)官网是这样解释的:CRC是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。 labvIEW编写的CRC校验程序,CRC32/CRC...

    CRC计算工具V3.4.0-64

    CRC算法参数模型解释: NAME:参数模型名称。 WIDTH:宽度,即CRC比特数。 POLY:生成项的简写,以16进制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成项是0x104C11DB7。 INIT:这是...

    CRC16校验原理附C语言源码

    CRC16校验原理附C语言源码,相信描述CRC16算法原理,附带的C语言代码,可以直接使用

    CRC校验例子

    CRC16、CRC32维检验源代码,以及CRC校验解释说明,多种方式实现CRC校验

    CRC.zip_crc校验是讲解_crc的全面解释_taste8ju

    CRC校验用到的资料,非常全面,讲解很到位,大家可以看看

    CRC算法 A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS

    这是一篇关于CRC原理解析的英文论文!对CRC算法进行了很详细的解释。

    基于博图TIA中SCL语言编写CRC校验功能块

    适用于1200/1500的DB块的多字节CRC校验; 输入点解释: DB号:创建数据块需要校验的字节所在DB编号; 起始字节:要校验的字节起始地址(需要关闭数据块“优化块访问”功能); 字节数量:从起始字节开始的要校验的...

    IEEE 802.3 Cyclic Redundancy Check v1.0.rar_802.3 CRC32_CRC32 IE

    IEEE 802.3规定的CRC算法解释说明,pdf版本

    DLT645协议解析器及modbus CRC和DLT CS校验码计算工具

    DLT645协议解析器及modbus CRC和DLT CS校验码计算,支持两种输入格式,带空格和不带空格。默认需要安装微软VS2012发布包。 比如输入FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16,解析出结果如下: [11-05 08:...

    最好懂的CRC校验规则讲解

    网上的教程一大堆,但是很多讲的太深入,让人看的云里雾里,不明所以,所以我才想写一个高中生都能看懂的,不那么深入的,专注于应用的,通俗易懂的CRC校验的解释 何为校验 比如我写了一封电子邮件给你,它是用二...

    CRC RevEng:一款便携式,任意精度的CRC计算器和算法查找器-开源

    CRC RevEng是一款便携式,任意精度的CRC计算器和算法查找器。 它使用107种预设算法中的任何一种或用户指定算法的任意宽度来... 它包含强大的输入解释选项。 符合Ross Williams的参数化CRC算法的Rocksoft(tm)模型。

    CRC RevEng:任意精度CRC计算器和算法查找器-开源

    CRC RevEng是一款便携式,任意精度的CRC计算器和算法查找器。 它使用107种预设算法中的任何一种或用户指定算法的任意宽度来... 它包含强大的输入解释选项。 符合Ross Williams的参数化CRC算法的Rocksoft(tm)模型。

    CRC-16验证工具

    该软件可以用来验证通信CRC-16码,源码中的含有语句解释,供参考。

    自己制作的小工具,可以对4-32位的多种生成多项式计算器crc校验值

    CRC算法参数模型解释: NAME:参数模型名称。 WIDTH:宽度,即CRC比特数。 POLY:生成项的简写,以16进制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成项是0x104C11DB7。 INIT:这是算法开始...

Global site tag (gtag.js) - Google Analytics