crc字节型算法

“crc字节型算法”相关的资料有哪些?“crc字节型算法”相关的范文有哪些?怎么写?下面是小编为您精心整理的“crc字节型算法”相关范文大全或资料大全,欢迎大家分享。

CRC算法原理

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

CRC校验算法

CRC(Cyclic Redundancy Check)循环冗余校验是常用的数据校验方法,讲CRC算法的文章很多,之所以还要写这篇,是想换一个方法介绍CRC算法,希望能让大家更容易理解CRC算法。

先说说什么是数据校验。数据在传输过程(比如通过网线在两台计算机间传文件)中,由于传输信道的原因,可能会有误码现象(比如说发送数字5但接收方收到的却是6),如何发现误码呢?方法是发送额外的数据让接收方校验是否正确,这就是数据校验。最容易想到的校验方法是和校验,就是将传送的数据(按字节方式)加起来计算出数据的总和,并将总和传给接收方,接收方收到数据后也计算总和,并与收到的总和比较看是否相同。如果传输中出现误码,那么总和一般不会相同,从而知道有误码产生,可以让发送方再发送一遍数据。 CRC校验也是添加额外数据做为校验码,这就是CRC校验码,那么CRC校验码是如何得到的呢?

非常简单,CRC校验码就是将数据除以某个固定的数(比如ANSI-CRC16中,这个数是0x18005),所得到的余数就是CRC校验码。

那这里就有一个问题,我们传送的是一串字节数据,而不是一

CRC算法原理

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

CRC校验算法

CRC(Cyclic Redundancy Check)循环冗余校验是常用的数据校验方法,讲CRC算法的文章很多,之所以还要写这篇,是想换一个方法介绍CRC算法,希望能让大家更容易理解CRC算法。

先说说什么是数据校验。数据在传输过程(比如通过网线在两台计算机间传文件)中,由于传输信道的原因,可能会有误码现象(比如说发送数字5但接收方收到的却是6),如何发现误码呢?方法是发送额外的数据让接收方校验是否正确,这就是数据校验。最容易想到的校验方法是和校验,就是将传送的数据(按字节方式)加起来计算出数据的总和,并将总和传给接收方,接收方收到数据后也计算总和,并与收到的总和比较看是否相同。如果传输中出现误码,那么总和一般不会相同,从而知道有误码产生,可以让发送方再发送一遍数据。 CRC校验也是添加额外数据做为校验码,这就是CRC校验码,那么CRC校验码是如何得到的呢?

非常简单,CRC校验码就是将数据除以某个固定的数(比如ANSI-CRC16中,这个数是0x18005),所得到的余数就是CRC校验码。

那这里就有一个问题,我们传送的是一串字节数据,而不是一

CRC校验PLC算法

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

CRC校验函数

cBuffer:计算CRC校验码的数组。 iBufLen:该数组的长度。

unsigned int CRC_Verify(unsigned char *cBuffer, unsigned int iBufLen) {

unsigned int i, j; //#define wPolynom 0xA001 unsigned int wCrc = 0xffff;

unsigned int wPolynom = 0xA001;

/*---------------------------------------------------------------------------------*/ for (i = 0; i < iBufLen; i++) {

wCrc ^= cBuffer[i]; for (j = 0; j < 8; j++) {

if (wCrc &0x0001)

{ wCrc = (wCrc >> 1) ^ wPolynom; } else

{ wCrc = wCrc

CRC校验算法

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

1.生成多项式。

16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(既乘以

)后,再除以一个多项式,最后所得到的余数既是CRC码。任意一个由二进制位串组成的代码都可以和一个系数仅为?0?和?1?取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。 标准CRC生成多项式如下表:

名称 生成多项式 简记式* 标准引用 CRC-4 x4+x+1 3 ITU G.704 CRC-8 x8+x5+x4+1 0x31 CRC-8 x8+x2+x1+1 0x07 CRC-8 x8+x6+x4+x3+x2+x1 0x5E CRC-12 x12+x11+x3+x+1 80F

CRC-16 x

循环冗余码(CRC)

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

循环冗余码(CRC)

(1)CRC的工作方法

在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端收到的信息按发送端形成循环冗余码同样的算法进行校验,若有错,需重发。

(2)循环冗余码的产生与码字正确性检验例子

54

例1.已知:信息码:110011 信息多项式:K(X)=X+X+X+1

43

生成码:11001 生成多项式:G(X)=X+X+1(r=4) 求:循环冗余码和码字。

5449854解:① (X+X+X+1)*X的积是 X+X+X+X 对应的码是1100110000。 1 0 0 0 0 1←Q(X) r G(x)→1 1 0 0 1 )1 1 0 0 1 1 0 0 0 0←F(X)*X 1 1 0 0 1 , 1 0 0 0 0 1 1 0 0 1 1 0 0 1←R(X)(冗余码) 98543

例2.已知:接收码字:1100111001 多项式:T(X)=X+X+X+X+X+1

43

生成码: 11001

CRC8 - verilog

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: //

// Create Date: 15:40:57 09/17/09 // Design Name:

// Module Name: crc8 // Project Name: // Target Device: // Tool versions: // Description: //

// Dependencies: //

// Revision:

// Revision 0.01 - File Created // Additional Comments: //

////////////////////////////////////////////////////////////////////////////////

module crc8(reset,clk,start,data_in,out_rs,crc_code); paramet

CRC8 - verilog

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: //

// Create Date: 15:40:57 09/17/09 // Design Name:

// Module Name: crc8 // Project Name: // Target Device: // Tool versions: // Description: //

// Dependencies: //

// Revision:

// Revision 0.01 - File Created // Additional Comments: //

////////////////////////////////////////////////////////////////////////////////

module crc8(reset,clk,start,data_in,out_rs,crc_code); paramet

MODBUS的CRC校验和程序

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

MODBUS的CRC校验和程序(VB编制)

modbus协议做为一种通用协议得到了广泛的应用,它有两种传输模式:ASCII和RTU。ASCII模式采用LRC校验,RTU模式采用CRC校验。

CRC方法错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。

使用RTU模式,消息包括了一基于CRC方法的错误检测域。CRC域检测了整个消息的内容。

CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。

CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。

CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存

CRC8 - verilog

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: //

// Create Date: 15:40:57 09/17/09 // Design Name:

// Module Name: crc8 // Project Name: // Target Device: // Tool versions: // Description: //

// Dependencies: //

// Revision:

// Revision 0.01 - File Created // Additional Comments: //

////////////////////////////////////////////////////////////////////////////////

module crc8(reset,clk,start,data_in,out_rs,crc_code); paramet

CRC校验C语言实现

标签:文库时间:2024-07-08
【bwwdw.com - 博文网】

CRC校验C语言实现

CRC校验C语言实现,转载请注明出处,谢谢

CRC(Cyclic Redundancy Check)校验应用较为广泛,以前为了处理简单,在程序中大多数采用LRC(Longitudinal Redundancy Check)校验,LRC校验很好理解,编程实现简单。用了一天时间研究了CRC的C语言实现,理解和掌握了基本原理和C语言编程。结合自己的理解简单写下来。

1、CRC简介

CRC检验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个检验码r位(就是CRC码),附在信息后面,构成一个新的二进制码序列数共(k+r)位,最后发送出去。接收端根据同样的规则校验,以确定传送中是否出错。接收端有两种处理方式:1、计算k位序列的CRC码,与接收到的CRC比较,一致则接收正确。2、计算整个k+r位的CRC码,若为0,则接收正确。

CRC码有多种检验位数,8位、16位、32位等,原理相同。16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(即乘以2的16次方后),除以一个多项式,最后所得到的余数就是CRC码。

求CRC码所采用的是模2运算法则,即多项式除法中采用不带借位的减法运算,运算等同于异或运算