循环冗余校验码(计算机组成原理12)

循环冗余校验码

视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502

计算机组成原理 系列文章目录

前言

在本篇中,你将掌握

  • 循环冗余校验码的基本思想和构造方法

《循环冗余校验码(计算机组成原理12)》

1 循环冗余校验码

《循环冗余校验码(计算机组成原理12)》

1.1 基本思想

循环冗余校验码的思想:数据发送、接收方约定一个“除数”(二进制的除数)

K个信息码 + R位校验码作为“被除数”,在检验时,判断余数是否为0来判断是否出错。

让我们来看个例子,如下图,已知生成多项式G(x),信息码为101001,求对应的CRC码。
《循环冗余校验码(计算机组成原理12)》
二进制的除法规则,如上图所示,其相除过程为首先判断被除数当前最高位是否为1,若为1,则当前商为1,否则为0;然后对被除数和除数做“模2减”,即异或;之后,在“模2减”后若位数不足在最高位补0,重复首先的步骤,直至最后得到商和余数。
对于余数,余数的位数 = 除数的位数-1 = 校验码的位数。

1.2 构造方法

解法步骤

  1. 确定K、R以及生成多项式对应的二进制码
    K = 信息码长度 = 6,R = 生成多项式最高次幂 = 3 则校验码位数为 N = K+R = 9
    生成多项式G对应的二进制码为1101,对应x次幂的系数
  2. 移位
    信息码左移R位,低位补0(即在信息码后补R个校验位的0)
  3. 相除
    对移位后的信息码,用生成多项式进行模2除法,产生余数
    对应的CRC码:101001 001
    (相除过程见上图,其模2除法的余数 001 就是校验位)
  4. 检错和纠错
    发送方发送的数据为101001001记为 C 9 C 8 C 7 C 6 C 5 C 4 C 3 C 2 C 1 C_9C_8C_7C_6C_5C_4C_3C_2C_1 C9C8C7C6C5C4C3C2C1

接收方对接收的数据用约定好的1101进行模2除,若余数为000,代表没有出错;若余数为010,代表 C 2 C_2 C2 C 9 C_9 C9出错,其余数和出错位对应关系如下图
《循环冗余校验码(计算机组成原理12)》

1.3 纠错检错

注意在上表中,出错位为1和8、2和9的余数两两相同,那么我们能推知循环冗余校验码只有检错的能力,而没有纠错的能力么?
 也不全对,因为在上述例子中,余数只有3位二进制码,只能表示8-1=7种(000表示没出错)出错位,但传输的位数为9位,故无法纠错。
《循环冗余校验码(计算机组成原理12)》
对于确定的生成多项式,出错位与余数是相对应的

如果出错的位数并没超过余数所能表示的范围,则余数和出错位之间就是一一对应的关系

K个信息位,R个校验位,若生成多项式选择得当,且 2 R > = K + R + 1 2_R>=K+R+1 2R>=K+R+1则CRC码可以纠错

2 小结

《循环冗余校验码(计算机组成原理12)》
本篇重点:
(1)循环冗余校验码的构造方法,如何通过给出的K个信息位和最高次为R的生成式构造循环冗余校验码(K个信息位 + R个校验位(余数));
(2)循环冗余校验码的校验方法:通过与生成式模2除,得到R的余数,若为000则没错,否则出错,且有可能纠错

本篇也是计算机网络的重点,需要熟练掌握CRC的计算构造方法。

    原文作者:阿芒Aris
    原文地址: https://blog.csdn.net/qq_44574333/article/details/108947034
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞