« 比较流行的红外解码程序开漏输出及推挽输出简介 »

CRC循环冗余算法原理

分类: 单片机杂谈 发布: admin 浏览: 日期: 2017年12月27日

Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。

假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,对应g(x)中x^k的系数。

将g(x)乘以x^m,既将g后加m个0,然后除以m阶多项式h(x),得到的(m-1)阶余项r(x)对应的二进制码r就是CRC编码。

h(x)可以自由选择或者使用国际通行标准,一般按照h(x)的阶数m,将CRC算法称为CRC-m,比如CRC-32、CRC-64等。

g(x)和h(x)的除运算,可以通过g和h做xor(异或)运算。

比如将11001与10101做xor运算。

明白了xor运算法则后,举一个例子使用CRC-8算法求101001110100001的效验码。

CRC-8标准的h(x) = x^8 + x^7 + x^6 + x^4 + x^2 + 1,既h是9位的二进制串111010101。

经过循环冗余迭代运算后,最终得到的r是10001100,这就是CRC效验码。

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 文雅单片机. Some Rights Reserved.