CRC循环冗余码
CRC循环冗余码是在通信领域经常用来用作检错编码的方式。
计算冗余码
我们可以通过以下步骤计算出冗余码:
(1)加0:在要发送的数据后加r个0,其中r为生成多项式G(x)的阶为(一般来说,多项式为N位,则阶为N-1);
(2)模2除法:加0后的数据除以生成多项式G(x),则余数就是所求的冗余码/FCS/CRC检验码的比特序列(模2除法的本质就是异或运算)。
最终我们要发送的数据就是:(0扩展)原数据(左移r位)+FCS。
简单来说就是我们将计算出的余数补在原数据的后面,即可得到要发送的数据。
- 例题
要发送的数据是1101 0110 11,采用CRC校验,生成多项式是10011,那么最终发送的数据是多少?
解:
(1)加0:
生成多项式为5位,则阶为4位。
(加0后的数据位1101 0110 11 0000)
(2)模2除法:

所以最终的要发送的数据为:
1101 0110 11 1110
出错判断
在接收端将收到的每一个帧都除以在发送时使用的生成多项式,然后检查得到的余数R,若:
(1)R=0,发送数据没有出错;
(2)R≠0,判定接收到的数据是错误的(只是有检错功能,却没有纠错功能,无法确定到出错的位数),直接丢弃。
- 注意:
在数据链路层使用CRC循环冗余码的差错检验技术,只能做到对发送帧的无比特差错接收,还不能做到可靠传输(数据链路层发送端发送什么,接收端就收到什么)。
344

被折叠的 条评论
为什么被折叠?



