首页>>科技 >>内容

crc校验例题,crc校验方法及示例

发布时间:2023-08-18 08:46:28编辑:温柔的背包来源:

很多朋友对crc校验例题,crc校验方法及示例不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

crc校验例题,crc校验方法及示例

CRC校验简介CRC是循环冗余校验(1):是数据通信领域中最常用的错误校验码,其特点是信息字段和校验字段的长度可以任意选择。循环冗余校验(CRC)是一种数据传输错误检测功能,它对数据进行多项式计算,并将得到的结果附加到帧的后面。接收设备也执行类似的算法来确保数据传输的正确性和完整性。

在数据存储和数据通信领域,为了保证数据的正确性,CRC校验实用程序库不得不采用错误检测的手段。在众多的错误检测方法中,CRC是最著名的一种。CRC的全称是循环冗余校验,其特点是检错能力强,开销低,易于用编码器和检测电路实现。从它的检错能力来看,它发现不了错误的概率只有0.0047%以下。在性能和开销上,远远优于奇偶校验、算术和校验。

因此,在数据存储和数据通信领域,CRC无处不在:著名通信协议X.25的FCS(帧检错序列)使用CRC-CCITT,WinRAR,NERO,ARJ,LHA等压缩工具软件使用CRC32,磁盘驱动器使用CRC16进行读写,常见的图像存储格式GIF和TIFF也使用CRC作为检错手段。下面描述硬件生成和CRC计算的过程。

以最常用的CRC-16为例说明CRC16的硬件生成过程。

CRC-16代码由两个字节组成。开始时,CRC寄存器的每个位都预设为1,然后CRC寄存器与8位数据进行异或运算,然后CRC寄存器从高电平变为低电平,最高有效位(MSB)用0填充。如果最低有效位(已移出CRC寄存器的LSB)为1,则该寄存器与预定义的多项式代码进行异或运算,否则LSB为零。

重复上述由高到低的移位8次,处理第一个8位数据。此时,CRC寄存器的值与下一个8位数据进行异或运算,并像前面的数据一样移位8次。处理完所有字符后,CRC寄存器中的值就是最终的CRC值。

CRC硬件计算过程1。设置CRC寄存器,并将其分配给FFFF(十六进制)。2.将数据的第一个8位字符与16位CRC寄存器的低8位进行异或运算,并将结果存储在CRC寄存器中。3.三号。CRC寄存器右移一位,MSB用零填充,LSB移出并检查。4.如果LSB为0,重复第三步;如果LSB为1,则CRC寄存器和多项式代码不同或。注意:这一步检查的LSB应该是右移前的LSB,也就是第三步之前的LSB。

5.重复步骤3和4,直到完成所有8个班次。此时,一个8位数据被处理。6.重复步骤2至5,直到所有数据都处理完毕。7.CRC寄存器的最终内容是CRC值。

CRC-16验证概述CRC-16生成的多项式表示为x的乘数,如X3 X2 1,而不是二进制码1101的表示。如果生成多项式是素数多项式,则可以定义并提出几个标准生成多项式来优化错误检测。RTU协议采用对应于二进制码1 1000 0000 0000 0101的生成多项式(X16 X15 X2 1)。生成的CRC是CRC-16。

算法CRC-16的计算算法如图3.1所示。请结合后面展示的计算实例来理解。图中显示了发送端CRC数据的计算,这些数据最终会作为校验码附加到发送帧中。同样的算法也用于接收和处理。但是它还包括将在接收侧计算的CRC数据与发送的CRC数据进行比较的过程。读出传输数据的计算示例的示例

站号1,fc=3,功能码P02 (P为03 H,02为02H),读取数据个数为20,GP为生成多项式(1010 0000 0000 0001)。通过以上计算,传输的数据如下。帧长的计算为了计算CRC-16,需要知道变长的消息长度。所有消息类型的长度可由表3.14中的回复消息长度确定。

以上知识分享希望能够帮助到大家!