循环冗余校验原理及程序
crc8校验原理和计算方法

crc8校验原理和计算方法CRC8(Cyclic Redundancy Check,循环冗余校验)是一种常用的校验算法,用于检测数据传输过程中的错误。
CRC8校验原理和计算方法可以帮助我们了解CRC8的工作原理和具体步骤。
一、CRC8校验原理CRC8校验是通过生成多项式来实现的,根据不同的生成多项式,CRC8校验可以分为多种不同的标准。
其中,CRC-8/ATM标准是一种常用的CRC8校验算法。
CRC8校验原理是基于二进制的异或运算和移位运算来实现的。
在CRC8校验过程中,需要预先定义一个生成多项式,然后将待校验的数据和生成多项式进行一系列的异或和移位运算,最后得到校验值。
二、CRC8计算方法1. 定义生成多项式需要定义一个生成多项式。
以CRC-8/ATM标准为例,生成多项式为0x07。
2. 初始化校验值将校验值初始为0x00。
3. 逐位计算从待校验的数据的最高位开始,逐位与校验值进行异或运算。
如果该位为1,则执行异或运算;如果该位为0,则继续下一位。
4. 左移运算每次异或运算后,将校验值左移一位。
5. 异或运算如果左移后的校验值的最高位为1,则执行与生成多项式的异或运算。
6. 重复以上步骤重复上述步骤,直到待校验数据的所有位都处理完毕。
7. 得到校验值最后得到的校验值即为CRC8校验值,可以用于校验数据传输过程中的错误。
三、应用场景CRC8校验算法广泛应用于串行通信、网络传输、数据存储等领域。
通过对数据进行CRC8校验,可以提高数据传输的可靠性,减少错误的发生。
在串行通信中,发送端计算数据的CRC8校验值并将其附加到数据后面,接收端收到数据后同样计算CRC8校验值,然后与附加的校验值进行比对,如果一致,则说明数据传输无误;如果不一致,则说明数据传输中发生了错误。
在网络传输中,CRC8校验算法可以用于校验数据包的完整性。
发送端将数据包的CRC8校验值附加到数据包尾部,接收端收到数据包后同样计算CRC8校验值,然后与附加的校验值进行比对,以判断数据包是否在传输过程中发生了错误。
CRC校验

用C语言实现CRC校验计算在编写数据传输程序时,数据容错是一个非常重要的问题。
循环冗余位校验(Cyclicl Redundncy Check英文简称CRC)是目前运用非常广泛的一种数据容错方法,在数据传输,数据压缩等领域运用极其广泛。
CRC的实现分为硬件和软件两种方法,其中软件实现的关键在于计算速度。
如果单纯模拟硬件实现方法,则计算速度较慢。
笔者在编制一个数据通讯软件中,运用了一种新颖的查表法计算CRC,速度很快,效果极佳。
首先介绍其原理,如果每次参与CRC计算的信息为一个字节,该信息字节加到16位的累加器中去时,只有累加器的高8位或低8位与信息字节相互作用(异或),相互作用(异或)的结果记为组合值,那么累加器中的新值等于组合值加上(按模2异或)累加器中未改变的那一半即为新的CRC值。
组合值只有256种可能,因此可利用硬件模拟算法先算好它们的CRC值预先填入一张表中,该表的每一单元对应相对值的CRC。
这样就可以通过查表法来计算CRC值,以便大大提高CRC运算的速度。
下面给出用C语言编制的计算程序。
首先将CRC生成多项式及CRC值表定义为一个头文件CRC.H:#define CRC_CCITT 0x1021 //CCITT多项式#define REV_CCITT 0x8408 //反转CCITT多项式#define CRC16 0x8005 //CRC16多项式#define REV_CRC16 0x001 //反转CRC16多项式unsigned short crc_tble[256];//CRC值表注:16位CCITT多项式(X16 +X12 +X5 +1)和16位CRC16多项式(X16 +X15 +X2+1)为两种最常用的CRC多项式。
反转多项式是指在数据通讯时,信息字节先传送或接收低位字节,如重新排位影响CRC计算速度,故设反转多项式。
造表和查表法CRC计算函数。
#include crc.hvoid mk_crctble(unsigned short genpoly){unsigned short crc_tble[256];unsigned short ccnum=0;unsigned short i,j,k;for(i=0,k=0;i<256;i++,k++){i<<=8;for(j=8;j>0;j ){if((i^ccnum)&0x8000) ccnum=(ccnum<<=1)^genpoly;else ccnum<<=1;i<<=1;crc_tble[k]=ccnum;}}void crc_updte(unsigned short dt,unsigned short ccnum)ccnum=(ccnum<<=8)^crc_tble[(ccnum>>8)^dt];}}注:genpoly为CRC多项式,ccnum为累加器值(即为新的CRC值),dt为参与CRC计算的信息。
计算机循环冗余校验算法分析

计算机循环冗余校验算法分析计算机循环冗余校验算法(Cyclic Redundancy Check, CRC)是一种常用的数据校验方法,它通过对数据进行多项式运算来检测数据传输过程中是否出现错误。
在网络通信和存储设备中广泛应用,是保障数据传输可靠性的重要手段之一。
本文将对CRC算法的原理、实现过程和应用进行详细分析,希望能够对读者加深对CRC算法的理解,并对相关领域的研究和工程实践提供一定的参考价值。
一、CRC算法原理CRC算法主要通过循环冗余校验码来进行数据校验和纠错。
其原理是将要传输的数据看作一个二进制数,然后进行模2运算。
计算过程中,发送者和接收者需要使用相同的生成多项式,即CRC校验多项式。
当接收到数据时,接收者同样对接收到的数据进行CRC校验运算,然后将结果与发送方产生的CRC校验码进行比对,如果两者相同,则说明数据传输无误。
如果不同,则数据出现错误。
具体的计算过程如下:1. 选择一个固定长度的生成多项式,并将其转化为二进制数。
生成多项式通常是一个不可约多项式,且多项式的高位是1。
2. 将要传输的数据和生成多项式进行模2运算,得到CRC校验码。
3. 将CRC校验码附加到数据末尾,发送给接收者。
5. 接收者将接收到的CRC校验码与发送方附加的CRC校验码进行比对,如果相同则数据传输无误,如果不同则数据错误。
二、CRC算法实现方法CRC算法在计算机中的实现主要有两种方法:查表法和位运算法。
1. 查表法查表法是将CRC校验码存储在查表表格中,接收方根据接收到的数据使用相同的生成多项式,在查表表格中查找对应的CRC校验码,并与接收到的CRC校验码进行比对。
查表法的优点是实现简单,速度快,但需要较大的存储空间。
2. 位运算法位运算法是通过位运算来实现CRC校验,具体包括循环移位、异或运算等。
位运算法的优点是存储空间占用小,速度快,但实现复杂一些。
CRC算法在计算机网络通信、存储系统等领域都有广泛的应用。
CRC校验原理及实现

CRC校验原理及实现CRC(Cyclic Redundancy Check,循环冗余校验)是一种常用的错误检测技术,用于检测数据传输过程中的错误。
它通过使用一个或多个生成多项式来计算数据的校验值,然后将校验值添加到数据末尾传输。
接收方将使用相同的生成多项式来计算接收到的数据的校验值,并将其与接收到的校验值进行比较,如果不匹配,则说明数据存在错误。
CRC校验的核心原理是多项式除法,其中数据位被视为多项式的系数,并且我们可以使用位运算来表示多项式除法。
CRC校验使用的生成多项式通常是固定的,并被称为CRC多项式。
生成多项式的选择对于CRC校验的性能非常关键。
常用的CRC多项式包括CRC-16、CRC-32等。
实现CRC校验的步骤如下:1.选择一个适当的CRC多项式。
这个选择取决于应用的特定要求和标准。
2.将CRC初始值设为0。
3.将待传输的数据的每一个字节按位表示为一个多项式,并将他们连接成一个多项式。
4.对于每一个数据字节,将多项式除以CRC多项式。
可以使用位运算来进行除法运算。
5.将余数作为CRC多项式的系数与下一个数据字节连接形成一个新的多项式,并继续除法运算。
6.对于最后一个数据字节,除法完成后会有一个最终的余数。
将这个余数作为校验值。
7.在传输数据时,将校验值附加到数据的末尾。
8.接收方通过接收到的数据和附加的校验值进行相同的CRC校验过程。
9.接收方计算得到的校验值与接收到的校验值比较,如果相同,则数据传输正确;如果不同,则数据传输存在错误。
CRC校验具有高效、可靠和简单的特点。
它可以检测到大部分单比特错误和多比特错误。
然而,CRC校验只能检测错误,而不能纠正错误。
所以在实际应用中,通常需要结合其他的纠错方法,如重传机制,以确保数据传输的可靠性。
总结起来,CRC校验是一种常用的错误检测技术,利用多项式除法计算数据的校验值。
实现CRC校验需要选择适当的CRC多项式,并进行多次除法运算,然后将计算得到的校验值附加到数据末尾进行传输。
crc循环冗余校验 matlab 实现-概述说明以及解释

crc循环冗余校验matlab 实现-概述说明以及解释1.引言1.1 概述概述部分的内容:CRC(循环冗余校验)是一种在数据通信中常用的差错检测方法。
它通过对发送数据进行一系列的计算和校验,以判断接收数据是否出现了错误或被篡改。
CRC技术广泛应用于各种数据传输系统,包括计算机网络、无线通信、存储设备等。
CRC算法的原理是将发送数据看作一个多项式,并利用这个多项式进行一系列的运算。
通过对多项式进行除法运算,得到一个余数。
发送方将这个余数附加在数据后面发送给接收方。
接收方同样利用CRC算法对接收到的数据进行一系列的运算,得到一个余数。
如果发送方和接收方的余数一致,则可以认为数据传输没有出现错误;反之,如果余数不一致,则说明数据发生了错误或被篡改。
Matlab是一种功能强大的科学计算软件,也是进行CRC算法实现的优秀工具。
通过Matlab的计算和编程能力,我们可以方便地编写CRC算法的相关代码,实现CRC校验的过程。
Matlab提供了各种函数和工具箱,可以帮助我们进行多项式的运算、二进制数据的转换以及CRC校验码的计算等操作。
本篇文章将详细介绍如何在Matlab中实现CRC循环冗余校验。
首先,我们将介绍CRC算法的基本原理和步骤。
然后,我们将详细讲解如何使用Matlab进行CRC校验的编程实现,包括数据的转换、多项式的计算和余数的检验。
最后,我们将通过实际的案例来展示Matlab实现CRC的应用场景和效果。
通过阅读本文,读者将能够了解CRC循环冗余校验的基本原理和应用场景,并能够使用Matlab进行CRC算法的实现和应用。
本文的内容将有助于读者提高对CRC技术的理解和掌握,在进行数据通信和差错检测的相关工作中发挥更好的作用。
文章结构部分应该涵盖关于整篇文章章节的简要说明,以下是一种可能的编写方式:1.2 文章结构本文共分为三个主要部分:引言、正文和结论。
每个部分的内容如下所述:1. 引言在引言部分,我们将首先对文章所涉及到的主题进行概述,包括简要介绍循环冗余校验(CRC)的概念和应用领域。
循环冗余校验码计算步骤

循环冗余校验码计算步骤循环冗余校验码(Cyclic Redundancy Check,CRC)是一种常用的错误检测技术,常用于计算机网络、存储设备和通信系统等领域。
本文将介绍CRC的计算步骤。
一、CRC的概念和作用CRC是一种通过对数据进行计算生成校验码,并将校验码附加到数据中,以便在接收端对数据进行校验的方法。
CRC的作用是检测数据传输过程中是否出现了错误,如果校验码验证失败,则说明数据在传输过程中发生了错误。
二、CRC的计算过程CRC的计算过程包括以下几个步骤:1. 选择生成多项式在CRC的计算过程中,需要选择一个生成多项式。
生成多项式的选择对CRC的性能有一定影响,常用的生成多项式有标准CRC-16、CRC-32等。
2. 初始化寄存器CRC计算过程中需要使用一个寄存器,开始时需要将寄存器的值初始化为全1或全0。
3. 对数据进行处理将待发送的数据按照一定的规则进行处理。
处理的方法可以是按位操作、按字节操作等。
4. 进行除法运算将处理后的数据与生成多项式进行除法运算,得到余数。
5. 附加校验码将余数附加到原始数据后面,形成新的数据。
6. 发送数据将带有校验码的数据发送到接收端。
三、CRC的校验过程CRC的校验过程与计算过程类似,包括以下几个步骤:1. 初始化寄存器接收端需要将寄存器的值初始化为全1或全0。
2. 对接收到的数据进行处理将接收到的数据按照与发送端相同的规则进行处理。
3. 进行除法运算将处理后的数据与生成多项式进行除法运算,得到余数。
4. 检查余数接收端得到的余数为0,则说明数据传输过程中没有出现错误;余数不为0,则说明数据传输过程中出现了错误。
四、CRC的应用场景CRC广泛应用于各种通信系统和存储设备中,以确保数据传输的可靠性。
1. 计算机网络在计算机网络中,CRC常用于以太网、无线局域网等数据链路层的帧校验。
2. 存储设备在存储设备中,CRC常用于硬盘、闪存等存储介质的错误检测和纠正。
crc16 原理

crc16 原理CRC16是循环冗余校验的一种算法,能够对数据进行快速、简单的校验,广泛应用在数据通信和存储领域。
本文将详细介绍CRC16的原理和应用。
1. CRC16是什么?CRC16是循环冗余校验的一种算法,它将数据通过特定的计算方式转换为一个16位的校验值。
发送方可以将这个校验值附加在数据中一起发送给接收方,接收方则通过对收到的数据再次进行CRC16计算,并与附加的校验值进行比较,从而检测数据是否在传输或存储过程中出现错误或损坏。
2. CRC16原理CRC16算法使用了多项式除法的思想。
具体步骤如下:2.1初始化将CRC寄存器初始化为一个预设值(通常为全1或全0),这个值决定了CRC16算法的种类。
2.2数据处理将数据依次按位放入CRC寄存器,从高位到低位进行处理。
处理的方式是将CRC寄存器的高位与数据位进行异或操作,然后再将结果右移一位。
如果异或操作后的最高位为1,则还需要与一个预设的多项式进行异或操作。
2.3重复处理重复以上的数据处理步骤,直到所有数据位都经过处理。
2.4结果输出处理完所有数据位后,CRC寄存器中存储的就是CRC16校验值。
可以将其作为一个附加的校验字节与原数据一起发送给接收方。
3. CRC16的应用CRC16算法具有快速、简单的特点,广泛应用于各种通信和存储系统中,包括但不限于以下几个领域:3.1数据通信在数据通信中,发送方通过对发送的数据进行CRC16计算,将CRC16校验值附加在数据中一起发送给接收方。
接收方接收到数据后,再次进行CRC16计算,将计算得到的校验值与附加的校验值进行比较,如果相等,则认为数据传输正确无误;如果不相等,则说明数据在传输过程中出现错误或损坏。
3.2存储校验在存储系统中,CRC16算法可以用于对数据进行校验,以确保数据的完整性和一致性。
在数据写入存储介质之前,计算数据的CRC16校验值并将其存储。
当数据被读取时,再次计算数据的CRC16校验值,并将计算得到的校验值与存储的校验值进行比较,从而检测数据是否损坏或被篡改。
CRC循环冗余校验的原理

CRC循环冗余校验的原理循环冗余校验(CRC)是一种用于检测或纠正错误的数据校验方法,常用于通信中对数据进行完整性校验。
CRC的原理是利用一个固定的产生多项式对数据进行除法运算,并将余数作为校验码添加到数据中,接收方通过对接收到的数据再次进行除法运算,将得到的余数与发送方发送的校验码进行比较,用于判断接收到的数据是否出现了错误。
CRC的计算方式如下:1.选择一个生成多项式,该多项式的位数比待校验数据的位数少1、通常使用的生成多项式有常用的CRC-32和CRC-16多项式。
2.在待校验数据后添加一组位数等于生成多项式位数的0,这个数据称为"扩展数据"。
3.将扩展数据除以生成多项式,取得的余数即为校验码。
4.将校验码添加到原数据后,形成带有校验码的完整数据,即为发送数据。
例如,我们用CRC-16多项式来演示CRC的运算步骤。
生成多项式是一个16位的二进制数:10001101000101000(0x1021)。
假设我们发送的数据是一个16位的二进制数:11010101000111100。
第一步,在待校验数据后添加16位的0,形成扩展数据:110101010001111000000000000000000。
第二步,将扩展数据与生成多项式进行除法运算,得到的余数为:0100110011100100(0x4CE4)。
第三步,将校验码添加到原数据后,得到发送数据为:110101010001111000100110011100100。
这样,发送方将这个发送数据发送给接收方。
接收方接收到数据后,进行相同的操作,再次用生成多项式进行除法运算,得到余数。
如果余数为0,则表明数据没有错误;如果余数不为0,则表明数据存在错误。
CRC的性质和应用:1.CRC可以检测出所有奇数位数量的错误,以及几乎所有偶数位数量的错误。
对于t位的生成多项式,CRC可以检测出所有长度小于t的错误序列。
2.CRC不仅可以用于数据的检错,还可以用于数据的纠错。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ENDIF;
IFdtemp(7)='1'THEN
dtemp(7DOWNTO2):=dtemp(7DOWNTO2)XORPOLYNOMIAL;
ENDIF;
IFdtemp(6)='1'THEN
dtemp(6DOWNTO1):=dtemp(6DOWNTO1)XORPOLYNOMIAL;
rdata_r <=X"000";
dfinish_r <='0';
error01_r <='0';
ELSIFhrecv='1'THEN
rdatacrc <=datacrci;
rdtemp :=datacrci(16DOWNTO5);
IFrdtemp(11)='1'THEN
rdtemp(11DOWNTO6):=rdtemp(11DOWNTO6)XORPOLYNOMIAL;
while(--len>=0)
{
ch=*crcbuf++;ch<<=8;
for(i=0;i<8;i++)
{
crc<<=1;
if((ch&0x8000)!=0)crc|=1;
if(crc>=gx)crc∧=gx;
ch<<=1;
}
}
return((crc==0)?0∶1)
}
以上CRC编码和校验函数结构良好,调用接口清晰,执行效率很高,且具有良好的可
hsend<=hsend_r;
datacrco<=datacrco_r;
ENDPROCESS;
PROCESS(clk,rst_n)--接收端CRC5校验模块.
VARIABLErdtemp:STD_LOGIC_VECTOR(11DOWNTO0);
BEGIN
IFRISING_EDGE(clk)THEN
IFrst_n='0'THEN
用软件方法实现CRC校验,即实现编码、检错和译码功能。
从CRC校验码编码规则可以看出,CRC校验码实际上是由原始数据位串和紧跟其后的
与G(X)位串等长的冗余位串组成,只要求出此冗余位串,发送方即可将原始数据和冗余位
串装配成一CRC位串序列后再发送。CRC校验码译码非常简单,只需从接收到正确CRC
校验码尾部截掉与G(X)位串等长冗余位串,余下的部分即为原始数据位串。CRC校验码错
误检测按模2除法运算,用接收到的CRC位串除以G(X)位串,看是否能够除尽即可确定。
下面的C语言模块实现了CRC校验码编码和检错功能,程序中的G(X)使用CRC-16,
相应的位串为1100000000000101,用十六进制表示为0xc005。函数CrcGen以待发送的原始
数据缓冲区地址和缓冲区长度(字节数)为入口参数,产生并返回遵循CRC校验码编码规则
阶二进制码多项式B7X7+B6X6+B5X5+B4X4+B3X3+B2X2+B1X1+B0X0表示。
例如11000001可表示为
1X7+1X6+0X5+0X4+0X3+0X2+0X1+0X0
一般说,n位二进制数可用(n-1)阶多项式表示。它把要发送的数据位串看成是系数只能
为“1”或“0”的多项式。一个n位的数据块可以看成是从Xn-1到X0的n项多项式的系数
dfinish:OUTSTD_LOGIC;--数据接收完毕
error01:OUTSTD_LOGIC--数据接收错误
);
END;
ARCHITECTUREoneOFcrc5IS
SIGNALdatacrco_r:STD_LOGIC_VECTOR(16DOWNTO0);
SIGNALhsend_r:STD_LOGIC;
BEGIN
PROCESS(clk,rst_n)-----------------------CRC码产生模块.
VARIABLEdtemp:STD_LOGIC_VECTOR(11DOWNTO0);
VARIABLEsdtemp:STD_LOGIC_VECTOR(11DOWNTO0);
BEGIN
IFRISING_EDGE(clk)THEN
ENDIF;
IFdtemp(5)='1'THEN
dtemp(5DOWNTO0):=dtemp(5DOWNTO0)XORPOLYNOMIAL;
ENDIF;
datacrco_r<=sdtemp & dtemp(4DOWNTO0);
hsend_r<='1';
ELSE
hsend_r<='0';
ENDIF;
ENDIF;
rdtemp(6DOWNTO1):=rdtemp(6DOWNTO1)XORPOLYNOMIAL;
ENDIF;
IFrdtemp(5)='1'THEN
rdtemp(5DOWNTO0):=rdtemp(5DOWNTO0)XORPOLYNOMIAL;
ENDIF;
IF(rdtemp(4DOWNTO0)XORrdatacrc(4DOWNTO0))="00000"THEN
ENDIF;
IFrdtemp(10)='1'THEN
rdtemp(10DOWNTO5):=rdtemp(10DOWNTO5)XORPOLYNOMIAL;
ENDIF;
IFrdtemp(9)='1'THEN
rdtemp(9DOWNTO4):=rdtemp(9DOWNTO4)XORPOLYNOMIAL;
ENDIF;
序列,位于数据块左边的最高位是X n-1项的系数,次高位是X n-2项的系数,依此类推,位
于数据块右边的最低位是X0项的系数,这个多项式的阶数为n-1。
多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为
模,加减时不进、错位,如同逻辑异或运算。
采用CRC校验时,发送方和接收方事先约定一个生成多项式G(X),并且G(X)的最高
SIGNALrdata_r:STD_LOGIC_VECTOR(11DOWNTO0);
SIGNALdfinish_r:STD_LOGIC;
SIGNALerror01_r:STD_LOGIC;
SIGNALrdatacrc:STD_LOGIC_VECTOR(16DOWNTO0);
CONSTANTPOLYNOMIAL:STD_LOGIC_VECTOR(5DOWNTO0):="110101";--生成多项式G(x)=x^5 + x^4 + x^2 + 1
ENTITYcrc5IS
PORT(
clk:INSTD_LOGIC;--系统时钟
rst_n:INSTD_LOGIC;--复位信号
sdata:INSTD_LOGIC_VECTOR(11DOWNTO0);--12位有效信息输入
dload:INSTD_LOGIC;--数据装载信号
hrecv:INSTD_LOGIC;--握手信号输入.
生成数据块的CRC校验码的方法是:
(1)设G(X)为r阶,在数据块末尾添加r个0,使数据块为m+r位,则相应的多项式
为XrM(X);
(2)以2为模,用对应于G(X)的位串去除对应于XrM(X)的位串,求得余数位串;
(3)以2为模,从对应于XrM(X)的位串中减去余数位串,结果就是为数据块生成的
带足够校验信息的CRC校验码位串。
项和最低项的系数必须为1。设m位数据块的多项式为M(X),生成多项式G(X)的阶数必需
比M(X)的阶数低。CRC校验码的检错原理是:发送方先为数据块生成CRC校验码,使这
个CRC校验码的多项式能被G(X)除尽,实际发送此CRC校验码;接收方用收到的CRC校
验码除以G(X),如果能除尽,表明传输正确,否则,表示有传输错误,请求重发。
ENDIF;
IFdtemp(10)='1'THEN
dtemp(10DOWNTO5):=dtemp(10DOWNTO5)XORPOLYNOMIAL;
ENDIF;
IFdtemp(9)='1'THEN
dtemp(9DOWNTO4):=dtemp(9DOWNTO4)XORPOLYNOMIAL;
ENDIF;
IFdtemp(8)='1'THEN
rdata_r <=rdatacrc(16DOWNTO5);--校验正确,输出数据.
datacrci:INSTD_LOGIC_VECTOR(16DOWNTO0);--带5位冗余信息的17位CRC码输入
datacrco:OUTSTD_LOGIC_VECTOR(16DOWNTO0);--带5位冗余信息的17位CRC码输出
hsend:OUTSTD_LOGIC;--握手信号输出
rdata:OUTSTD_LOGIC_VECTOR(11DOWNTO0);--12位有效信息输出
在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据进行校验即差错控
制。循环冗余校验CRC(Cyclic Redundancy Check)是对一个传送数据块进行校验,是
一种高效的差错控制方法。
1、循环冗余校验码原理
CRC校验采用多项式编码方法,如一个8位二进制数(B7B6B5B4B3B2B1B0)可以用7
ch<<=1;
}}Βιβλιοθήκη for(i=0;i<16;i++)