当前位置:文档之家› 循环冗余检验原理

循环冗余检验原理


常用的对应于不同的码制的生成多项式
Commonly used generating polynomials corresponding to different code systems源自应用场合应用于什么场合
For what occasion?
循环冗余检验的应用场合
No.1
CRC校验实用程序 库 在数据存储和
循环冗余检验实现过程
Step 1
1)先选择(可以随机选择,也可以按照标准选择)一个用于在接收端进行校验时,对接收的帧进 行除法运算的除数(是二进制比特串,通常以多项式表达,所以crc又称多项式编码方法,这个多 项式也称为“生成多项式”)。
Step 2
2)假定所选的数据帧为k位,然后在要发送的数据帧(假定m位)的后面补上k-1位“0”,然后用这 个新帧(一共m+k-1位)以“模2除法”的方式除以上面这个除数,所得到的余数(也是二进制比特 序列)就是该帧的crc校验码,也称之为FCS(帧校验序列)。但要注意的是,余数的位数一定要 只比除数的位数少一位,哪怕前面位是0,甚至全位0时都不能省略。
选择哪种多项式更合适?
Which polynomial to choose is more appropriate.
01 02 03 04
生成多项式需满足的要求
生成多项式的最高位和最低位必须为1。 当被传送信息(CRC码)任何一位发生错误时, 被生成多项式做除后应该使余数不为0。 不同位发生错误时,应该使余数不同。
THANKS
F or Yo u A Th o us a nd Tim es
O
v
e
r
Step 3
3)再把这个校验码附在原数据帧(就是m位的帧,不是生成的m+k-1位的帧)的后面,构建一个 新帧发送给接收端;最后再在接收端再把这个新帧以“模2除法”的方式除以前面选择的除数,如果 没有余数,则表明该帧在传输的过程中没有出错,否则出现了差错。
crc校验码的计算示例
现假设选择CRC生成多项式位g(x)=x3+x2+1,要求求出二进制序列101001的CRC校验 码。 1)根据生成多项式可以得到二进制比特序列除数位1101。 2)因为生成多项式的位数为4,得知CRC校验码的位数为3,所以在原始帧后面添加3 个0,得到101001000,然后把这个数以“模2除法”的方式除以生成多项式,得到余 数(CRC校验码)位001,计算过程如下:
对余数继续做除,应使余数循环。
选择方法
结合系统的具体特点及要求,提出一种生成多项式的选取方法,其主要设计思想有以下两个方面: (1) 首先,为了确保选取的生成多项式校验性能是最优的,考察在具体嵌入式网络系统中传输数据帧最大长度的情况下, 码重最大,漏检率最低的生成多项式。 (2)其次,为了确保选取的生成多项式有较广的使用范围和良好的可移植性,分别考察小于和大于最大数据帧长度的情况, 生成多项式的码重及漏检率的情况。 在这里要注意的是严格按照这两个方面的优先次序考虑,在保证自身应用环境中最优检错性能的前提下考察其扩展性和可 移植性。 对于最小距离相同的生成多项式,要首先选取可检测数据长度最大的生成多项式;对于较短的数据帧,如果要提高生成多 项式的最小距离,必须以不影响该生成多项式对于长数据帧的校验性能为前提;对于一些现行的协议,随着网络的不断发 展,也会对协议进行修正,同时也会要求增加传输数据帧的长度,因此在选择生成多项式时要考虑将来的可扩展性,使生 成多项式传输较长数据帧时也能有较好的校验性能。
数据通讯领域
No.2
工业环境下保证机 器正常运作
No.3
机密信息传输的安 全性保障
//(对2的注释)在工业环境中,电子系统通常工作在极端的温度条件下,或处于 电子噪声环境,或是其它恶劣条件,而系统在这种条件下能否正常工作至关重要。 举例来说,如果发送给控制机器臂位置的DAC的数据遭到破坏,机器臂就会按非预 期的方向移动,这不仅危险,而且代价巨大。试想一下,机器臂如果砸到生产线上 的新车,或者更糟,砸到生产工人,后果会怎样?
部分概念介绍
模2运算
实际上是按位异或运算,即相同为0,相异为1,也就是不考虑进位、借位的二 进制加减运算。如:1111+1010 = 0101
FCS
Frame Check Sequence(帧校验序列),俗称帧尾,即计算机网络数据链路层的协 议数据单元(帧)的尾部字段,即循环冗余校验码。
生成多项式
CONTENTS
1 简介
01 什么是循环冗余检验
2 工 作 原 理 及 实 现 02 如何实现循环冗余检验
3多 项 式 选 择 方 案 03 选择哪种多项式更合适
4 应用场合
04 应用于什么地方
简介
什么是循环冗余检验?
循环冗余检验(Cyclic Redundancy Check, CRC)是一种根据网络数 据包或电脑文件等数据产生简短固定位数校验码的一种散列 函数,主要用来检测或校验数据传输或者保存后可能出现的 错误。
是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数 始终保持不变。其实就是余数
工作原理
crc校验原理
crc校验的根本思想就是在要发送的帧后面附加一个二进制序列,生成一个新帧发送给接 收端。当然,这个附加的数不是随意的,它要使生成的新帧能与发送端和接收端共同选定的 某个特定数整除,需要注意的是,这里不是采用的二进制除法,而是采用“模2除法”。到达 接收端后,再把接收到的新帧除以(模2除)这个选定的除数。因为在发送端已经通过附加 一个数做了去余处理,故得出的结果应该没有余数。如果出现了余数,则说明在传输的过程 中出现了差错。
为什么要使用循环冗余检验
First
检错能力强,开销 小,易于用编码器 及检测电路实现。
Second
从其检错能力来看, 它所不能发现的错
误的几率仅为 0.0047%以下。
Third
从性能上和开销上 考虑,均远远优于 奇偶校验及算术和
校验等方式。
工作原理
如何实现循环冗余检验
How to implement cyclic redundancy check
3)把上面计算出来的校验码001替换帧101001000后面的3个0,得到新帧101001001,再把这个帧 发送给接收端。 4)当接收端收到这个新帧后,会以“模2除法”的方式除以上面选定的除数1101,验证余数是否 为0,如果为0,则说明上述帧在传输的过程中没有发生差错,否则出现了差错。
多项式选择方案
相关主题