CRC循环冗余校验码
CRC(Cyclic Redundancy Check)循环冗余校验码
是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来‘确认信息’的困惑,书上提到红军和蓝军通信联合进攻山下的敌军的例子,第一天红军发了条信息要蓝军第二天一起进攻,蓝军收到之后,发一条确认信息,但是蓝军担心的是‘确认信息’如果也不可靠而没有成功到达红军那里,那自己不是很危险?于是红军再发一条‘对确认的确认信息’,但同样的问题还是不能解决,红军仍然不敢冒然行动。
对通信的可靠性检查就需要‘校验’,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。
CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是:
1、首先将原信息码(kbit)左移r位(k+r=n)
2、运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。
非常简单,要说明的:模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是:
0+0=1+1=0,1+0=0+1=1
即‘异’则真,‘非异’则假。
由此得到定理:a+b+b=a 也就是‘模2减’和‘模2加’直值表完全相同。
有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。
例如: g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:
101
11101 | 110,0000
111 01
1 0100
1 1101
1001
余数是1001,所以CRC码是110,1001
标准的CRC码是,CRC-CCITT和CRC-16,它们的生成多项式是:
CRC-CCITT=x16+x12+x5+1
CRC-16=x16+x15+x2+1
分享到:
相关推荐
CRC校验计算速度快,检错能力强,易于用编码器等硬件电路实现。从检错的正确率与速度、成本等方面,都比奇偶校验等校验方式具有优势。因而,CRC 成为计算机信息通信领域最为普遍的校验方式。常见应用有以太网/USB...
c#编写,crc循环冗余校验码,包括信息发送,生成校验码,随机干扰,消息接收,校验。运行通过!
### 循环冗余校验码(CRC)原理及例题解析 #### 一、循环冗余校验码(CRC)基本概念 循环冗余校验码(Cyclic Redundancy Check, CRC)是一种用于检测数据传输错误的有效方法。CRC通过在原始数据后面附加一个校验码...
循环冗余校验码(CRC,Cyclic Redundancy Check)是一种广泛应用于数据通信和存储领域的错误检测技术。它的基本原理是通过附加一个校验位序列到原始数据中,使得整个数据块能被一个特定的多项式除尽。在接收端,同样...
CRC循环冗余校验码生成器 ,计算机网络课程作业,有bug,参考,共享。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
综上所述,CRC循环冗余校验是确保数据完整性的关键手段,在C#中可以通过编程实现。结合ModBus协议,CRC能够帮助我们检测并防止在数据传输过程中可能出现的错误,从而保证了系统的稳定性和可靠性。通过分析和研究提供...
C# CRC 循环冗余校验算法,包含8位 16位 32位 三种校验算法。 本例直接简单易懂,通过点击按钮直接 产生字符串“ABCD”的CRC32校验码“DB1720A5”,并将校验码显示在下面的文本框中。
循环冗余校验(CRC,Cyclic Redundancy Check)是一种广泛用于数据传输错误检测的校验技术。在计算机网络通信中,为了确保数据的准确传输,通常会使用CRC算法来检验数据的完整性。CRC通过附加一个校验码到原始数据中...
源码说明: CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储中的错误检测技术。在大学生计算机网络实验中,学习CRC校验是理解数据传输可靠性的重要环节。CRC通过附加一个校验码到原始数据来检测...
### 循环冗余校验码(CRC)详解 #### 一、CRC基本概念与特点 **CRC**,即**循环冗余校验码**(Cyclic Redundancy Check),是一种广泛应用于数据通信领域的差错校验技术。其主要特点是信息字段与校验字段的长度...
总的来说,CRC循环冗余校验在MATLAB中的仿真提供了理论学习与实践操作的桥梁,帮助我们理解和应用这一重要的数据校验技术。通过对CRC的深入理解和MATLAB的仿真,我们可以更好地理解和设计可靠的通信系统和存储方案。
CRC循环冗余校验码的执行与描述,以及实现CRC计算
循环冗余校验码是数据通信领域中最常用的一种差错校验码.modbus规约经常用到
以下是对CRC循环冗余校验码及其MATLAB实现的详细解释: 1. **CRC原理**:CRC的基本思想是通过将数据看作一个二进制多项式,然后与一个预定义的生成多项式进行模2除法。生成多项式的最高位通常为1,且其长度决定了...
多项式编码(polynomial code),也称为CRC(cyclic redundancy check,循环冗余校验码),多项式编码的思想是:将位串看成是系数为0或1的多项式。CRC校验保护的单位是数据块。数据块的大小根据实际情况而定。每一个...
CRC冗余校验码是一种广泛应用于数据通信领域的差错检测技术,主要目的是确保数据传输的正确性和完整性。在Matlab环境中实现CRC校验码的仿真实验,可以帮助我们深入理解其工作原理和计算过程。 首先,CRC编码的核心...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种基于多项式除法的校验技术,主要用于检测数据传输或存储过程中可能出现的错误。其基本思想是,数据被看作是高位在前的二进制多项式,然后用一个固定的、预定义的...
循环冗余校验码(CRC,Cyclic Redundancy Check)是计算机网络中常用的一种错误检测方法,它通过在数据中附加一个校验位来确保数据传输的完整性。本演示程序将帮助我们深入理解CRC的工作原理及其编程实现。 在...
总的来说,STM32 CRC循环冗余校验是提高系统数据可靠性的重要工具,其硬件加速功能使得在嵌入式系统中高效实施校验成为可能。通过深入学习和实践,开发者可以熟练掌握这一技术,提升系统的错误检测能力。