数据链路层CRC(循环冗余码)差错校验码详解
CRC差错校验码是数据链路层用来进行差错校验的一个码。
CRC编码过程
假设要编码的数据D,有d个比特,发送节点要将它发送给接收节点。发送方和接收方要先协商一个r + 1比特模式,成为生成多项式。我们将其表示为G。我们将要求G的最高有效位(最左边)的比特是1。
我们要有一个数据D,比如 1001
这个数据有d个比特,也就是4个比特
需要附加 r 个比特作为校验码 R
编码过后会变成数据会变成D + R
数据有d + r个比特
使得得到的数据D+R进行模2运算恰好能被G整除

CRC差错检测过程
接收方用G去除接收到的D+R数据,如果余数为非0,则有差错,如果余数为0,则无差错
CRC计算
所有CRC计算采用模2算术来做,在加法中不进位,在减法中不借位。这意味着加法和减法是相同的,而且这两种操作等价于异或(XOR)操作。
1011 XOR 0101 = 1110
异或操作:不同的为1,相同为0。也就是0 XOR 0 = 0,1 XOR 1 = 0,0 XOR 1 = 1。
乘法和除法是相同的。
给定D 和 R, D * 2r XOR R就等于 D + R数据。
如何计算R
我们要求出R使得对于n

最低0.47元/天 解锁文章
1万+

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



