什么是循冗余码
CRC的工作方法
在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端收到的信息按发送端形成循
环冗余码同样的算法进行校验,
若有错,需重发。
2.循环冗余码的产生与码字正确性检验例子。
CRC校验码的算法分析
CRC校验码的编码方法是用待发送的二进制数据t(x)除以生成多项式g(x),将最后的余数作为CRC校验码。
其实现步骤如下:
(1) 设待发送的数据块是m位的二进制多项式t(x),(2) 生成多项式为r阶的g(x)。
在数据块的末尾添
加r个0,(3) 数据块的长度增加到m+r位,(4) 对应的二进制多项式为 。
(5) 用生成多项式g(x)去除 ,(6) 求得余数为阶数为r-1的二进制多项式y(x)。
此二进制多项式y(x
)就是t(x)经过生成多项式g(x)编码的CRC校验码。
(7) 用 以模2的方式减去y(x),(8) 得到二进制多项式 。
就是包含了CRC校验码的待发送字符串。
从CRC的编码规则可以看出,CRC编码实际上是将代发送的m位二进制多项式t(x)转换成了可以被g(x)除尽
的m+r位二进制多项式 ,所以解码时可以用接受到的数据去除g(x),如果余数位零,则表示传输过程没有错
误;如果余数不为零,则在传输过程中肯定存在错误。
许多CRC的硬件解码电路就是按这种方式进行检错的。
同时 可以看做是由t(x)和CRC校验码的组合,所以解码时将接收到的二进制数据去掉尾部的r位数据,得到
的就是原始数据。
为了更清楚的了解CRC校验码的编码过程,下面用一个简单的例子来说明CRC校验码的编码过程。
由于CRC-32、
CRC-16、CCITT和CRC-4的编码过程基本一致,只有位数和生成多项式不一样。
例1.已知:信息码:110011 信息多项式:K(X)=X5+X4+X+1
生成码:11001 生成多项式:G(X)=X4+X3+1(r=4)
求:循环冗余码和码字。
解:1)(X5+X4+X+1)*X4的积是 X9+X8+X5+X4 对应的码是1100110000。
2)积/G(X)(按模二算法)。
由计算结果知冗余码是1001,码字就是1100111001。
1 0 0 0 0 1←Q(X)
G(x)→1 1 0 0 1 )1 1 0 0 1 1 0 0 0 0←F(X)*Xr
1 1 0 0 1 ,
1 0 0 0 0
1 1 0 0 1
1 0 0 1←R(X)(冗余码)
例2.已知:接收码字:1100111001 多项式:T(X)=X9+X8+X5+X4+X3+1
生成码 : 11001 生成多项式:G(X)=X4+X3+1(r=4)
求:码字的正确性。
若正确,则指出冗余码和信息码。
解:1)用字码除以生成码,余数为0,所以码字正确。
1 0 0 0 0 1←Q(X)
G(x)→1 1 0 0 1 )1 1 0 0 1 1 1 0 0 1←F(X)*Xr+R(x)
1 1 0 0 1 ,
1 1 0 0 1
1 1 0 0 1
0←S(X)(余数)
2)因r=4,所以冗余码是:11001,信息码是:110011
3.循环冗余码的工作原理
循环冗余码CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到,K位要发送
的信息位可对应于一个(k-1)
次多项式K(X),r位冗余位则对应于一个(r-1)次多项式R(X),由r位冗余位组成的n=k+r位码字则对应于一
个(n-1)次多项式T(X)=Xr*K(X)+R(X)。
4.循环冗余校验码的特点
1)可检测出所有奇数位错;
2)可检测出所有双比特的错;
3)可检测出所有小于、等于校验位长度的突发错。
谁能给我讲讲循环冗余校验码吗?
循环冗余码的工作原理
循环冗余码CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到,K位要发送的信息位可对应于一个(k-1)次多项式K(X),r位冗余位则对应于一个(r-1)次多项式R(X),由r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式T(X)=Xr*K(X)+R(X)。
循环冗余校验码的特点
1)可检测出所有奇数位错;
2)可检测出所有双比特的错;
3)可检测出所有小于、等于校验位长度的突发错。
循环冗余校验码(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)得到的余数就是校验码。
奇偶校验码和循环冗余码和海明码有什么不同?
您好
首先说说三种检测码的共同点:那就是他们分别都是用来检测数据列中的错误数据
不同点:就是他们的工作原理不同,且奇偶的方式漏检率比循环的方式要高很多。
①首先奇偶校验码的方法是在冗余位+上以为数字 是前码中数字“1”的数量恒为奇数或偶数。
②其次循环冗余码发送端在数据后面加上一小段冗余代码,接收端也按照次方法进行检测,若出错,则发送请求让发送端重新发送,跟报文的原理差不多哈!
③海明码没什么多说的 就是方式不一样,他是在数据段中插入校验码!~
引用请注明出处~
希望以上能为朋友您提供帮助~
信息产业技术团队竭诚为您服务~