欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

CRC校验原理与计算方法整理

程序员文章站 2022-06-23 20:19:48
1、CRC(循环冗余校验)概述 CRC(循环冗余校验)是一种编码技术,主要作用是确保传输的数据准确无误。2、CRC编码原理 CRC编码采用多项式除法的原理,将要传输的信息除以一个预先确定的多项式,得到的余式就是所需的CRC检验码。 假设现在需要发送的信息为1000_0000,CRC生成多项式为g(x) = x^8+x^2+x+1。1、依据CRC生成多项式可知CRC校验码的位宽为(9-1)。2、初始化CRC校验码的值为0,并将其添加到信息后,使信息序列转换为1000_000_......

1、CRC(循环冗余校验)概述

  CRC(循环冗余校验)是一种编码技术,主要作用是确保传输的数据准确无误。

2、CRC编码原理

  CRC编码采用多项式除法的原理,将要传输的信息除以一个预先确定的多项式,得到的余式就是所需的CRC检验码。

  假设需要发送的信息为1000_0000,CRC生成多项式为g(x) = x^8+x^2+x+1(二进制序列为1_0000_0111)。
 1、依据CRC生成多项式可知CRC校验码的位宽为(8=9-1)。

 2、初始化CRC校验码的值为0,并将其添加到信息后,使信息序列转换为1000_0000_0000_0000。

 3、依据“模2运算法”计算CRC校验码,计算步骤如下图所示。每次计算都是消除高次项,然后移入新的数据,再进行下一次计算,直到所有的数据计算完成。

生成多项式 __________1_0_0_0_0_0_1_1
100000111 1000_0000_0_0_0_0_0_0_0_0  
  1000_0011_1  
  _000_0011_1_0 余数
  _000_0000_0_0  
  __00_0011_1_0_0 余数
  __00_0000_0_0_0  
  ___0_0011_1_0_0_0 余数
  ___0_0000_0_0_0_0  
  _____0011_1_0_0_0_0 余数
  _____0000_0_0_0_0_0  
  ______011_1_0_0_0_0_0 余数
  ______000_0_0_0_0_0_0  
  _______11_1_0_0_0_0_0_0 余数
  _______10_0_0_0_0_1_1_1  
  ________1_1_0_0_0_1_1_1_0 余数
  ________1_0_0_0_0_0_1_1_1  
  __________1_0_0_0_1_0_0_1 余数

4、CRC计算步骤描述。

  如上图所示,其计算结果可以描述为如下:

  1、初始化crc寄存器的值为1000_0000。

  2、检测crc寄存器的最高位是否为1;

       crc[15]=1;crc = (crc<<1 )^ g(x);

       crc[15]=0;crc = crc<<1;

  3、一直循环8次后,输出CRC校验码。

本文地址:https://blog.csdn.net/gaoyang314613767/article/details/110132086