CRC校验的原理是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRC校验的原理是啥?相关的知识,希望对你有一定的参考价值。

参考技术A

作二进制除法。

1、发送数据比特序列为1101011011(10比特)。

2、生成多项式比特序列为10011(5比特,K=4),X的指数就是代表第几位为1,而且1=X的0次方。

3、将发送数据比特序列乘以2的K(由2可知K为4),那么产生的乘积为11010110110000。

4、将乘积用生成多项式比特序列去除,按模二算法得到余数1110。

模二算法就是两数相减不产生借位,0-1=1。

步骤如如下所示:

扩展资料:

二进制除法的CRC校验原理。

RC校验原理看起来比较复杂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。

当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。

如果有余数,则表明该帧在传输过程中出现了差错。

【详细说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。

相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。如100101除以1110,结果得到商为11,余数为1。

参考资料来源:百度百科--CRC校验

LabVIEW实现CRC校验

目录

1、内部控件计算CRC校验

2、公式节点计算CRC校验


CRC(循环冗余校验),是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

关于CRC校验的实验原理这里不再赘述,百度上有很多的解析,本篇博文主要讲解在LabVIEW环境中如何实现CRC校验。

本篇博文介绍两种方法实现CRC校验:内部控件计算CRC校验和公式节点计算CRC校验。

软件计算(注意CRC高低位顺序)效果如下图所示:

1、内部控件计算CRC校验

使用内部控件计算CRC校验就是使用基本的运算组件实现算法计算过程。

实现代码如下所示: 

2、公式节点计算CRC校验

使用公式节点计算CRC校验,这里主要依托于:公式节点。公式节点可以实现在程序框图上计算数学公式或者使用C语言进行数值运算。

这里我使用C语言编程实现CRC校验算法,通过LabVIEW输入数值和接收C语言算法输出数值,实现代码如下所示: 

以上是关于CRC校验的原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章

CRC校验原理及步骤

最通俗的CRC校验原理剖析

求助crc32的原理

CRC循环冗余校验检错的原理

循环冗余校验(CRC)算法原理分析及实战

CRC校验原理及其C语言实现