码迷,mamicode.com
首页 > 其他好文 > 详细

crc循环冗余检验

时间:2018-11-17 16:11:07      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:差错检测   运算   图片   技术分享   过程   就是   出错   假设   1.3   

CRC(Cyclic Redundancy Check):循环冗余检验。在链路层被广泛使用的检错技术。
CRC原理:
1、发送端
1.1、在发送端先将数据分组,每组k个数据。假定要传送的数据是M。
1.2、在数据M后面添加供差错检测的n位冗余码,然后构成一帧发送出去,一共发送(k+n)位。
虽然添加n位冗余码增大了数据传送的开销,但是可以进行差错检测,当传输可能出现差错时,付出这种代价是值得的。

1.3、冗余码可以用下面的方法得出:
3.1、用二进制模2运算进行2^n*M(相当于M左移n位)的运算。意思就是在M后面补n个0。现在M就变成了k+n位。
1.3.2、用M除以收发双方事先商定的长度为n+1的除数P。
1.3.3、得到的余数R,这个R就是FCS(帧检验序列)。将这个FCS序列加到M上然后发出去。

2、接受端
2.1、在接受端把接受到的数据以帧为单位进行CRC校验
2.2、把收到的每一个帧都除以同样的除数P,然后检查余数R。
2.3、如果余数R为0,如果在传输过程中没有差错。
2.4、如果出现误码,那么余数R为零的概率是非常小的。

总结:在接收端对接收到的每一帧进行CRC检验后,若余数R为,则表示这个帧没有错,就接受。若R不为0,则判定这个帧出错,就丢弃。

例:M=101001,P=1101,n=3。
在发送端:
1、M=(2^n*M);
则:M=101001000
2、用M除以P
技术分享图片

 


3、得到余数R也就是FCS,将FCS加到M上,就得到了要发送的帧。
M=101001000+FCS=101001001

在接收端:
接收到的每一帧都要进行差错检验,假设收到101001001,P=1101。
技术分享图片

 


最后余数R=0,则判定这个帧没有出错。
---------------------
作者:午饭要阳光
来源:CSDN
原文:https://blog.csdn.net/lf_2016/article/details/58276536

crc循环冗余检验

标签:差错检测   运算   图片   技术分享   过程   就是   出错   假设   1.3   

原文地址:https://www.cnblogs.com/zxz666/p/9973908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!