数据传输系统中CRC校验的DSP算法实现

合集下载

CRC校验算法详解及代码实现

CRC校验算法详解及代码实现

CRC校验算法详解及代码实现CRC校验算法的原理是利用生成多项式来计算数据的校验值。

在发送端,将数据和生成多项式进行计算得到一个校验值,然后将这个校验值附加到发送的数据后面一起传输。

在接收端,接收到数据后再次进行计算,并与接收到的校验值进行比较,如果相同则说明数据传输过程中没有错误,否则说明数据传输过程中出现错误。

下面是CRC校验算法的具体步骤:1.选择一个生成多项式,通常用一个二进制数表示。

生成多项式的位数称为CRC位数,常见的有CRC-8,CRC-16,CRC-32等。

2.将生成多项式的最高位与数据的最高位对齐,然后进行异或运算。

异或运算的结果作为下一次异或运算的输入,直到将所有数据都计算完毕。

3.将计算得到的结果作为校验值附加到数据后面一起传输。

下面是一个简单的CRC校验算法的代码实现:```pythondef crc(data, generator):crc_value = 0generator_length = len(generator)for bit in data:crc_value ^= bitif crc_value & 0x1:crc_value = (crc_value >> 1) ^ int(generator, 2)else:crc_value = crc_value >> 1return crc_value#测试数据data = [1, 0, 1, 1]generator = "1011"#进行CRC校验residue = crc(data, generator)print(residue)```在上面的代码中,`data`表示要进行校验的数据,以列表的形式表示,每个元素是一个二进制位。

`generator`表示生成多项式,以字符串的形式表示,每个字符是一个二进制位。

程序输出的结果为校验值。

总结:本文详细介绍了CRC校验算法的原理和步骤,并给出了一个简单的代码实现。

CRC校验的设计与实现

CRC校验的设计与实现

5.3.4 循环冗余校验的设计与实现本系统中数据通信技术占据重要地位,是保证数据采集准确性的关键。

客户端与称重仪表进行通信时,为减小产量信息在传输过程中由于电磁干扰等因素导致的错误,需进行数据校验。

数据校验方法有很多,比较传统的有:行列冗余校验、重复码校验、奇偶校验、循环冗余校验等。

本系统采用循环冗余校验(CRC )进行通信过程中的数据校验。

CRC 是一种检错能力很强的循环码,利用模2取余的原理对数据进行循环校验,计算效率高且误判概率极低,几乎为零。

从性能和开销上考虑,CRC 远优于传统的算术和校验及奇偶校验。

1.CRC 编码原理CRC 校验通常采用多项式编码的方式,参与校验的数据信息(以下简称“待校验数”)可看作一个n 阶的二进制形式的多项式,即121210...n n n n a x a x a x a ----++++。

例如,一个6位二进制数101101可表示为:54325321011011x x x x x x x x +++++=+++(为方便下文描述,把该类型的多项式称为“转换多项式()x g ”)。

CRC 的编码方式是把待校验数转变成二进制数()x t ,然后再将()x t 转变为转换多项式()x g ,令()()()R e t x R x g x ⎡⎤=⎢⎥⎣⎦(式中的[]Re 表示对中括号内的式子进行取余运算),将余数()R x 做为待校验数的CRC 校验码。

CRC 校验码具体求解步骤如下:①假设待校验数是n 位二进制形式的多项式()x t ,把()x t 转变为转换多项式()x g ,位数为n 。

在待校验数的末尾附加r 个零,则待校验数的长度变为n r +位,其对应的二进制形式的多项式变成()x t x r 。

②把()x g 和()x t x r 进行取余运算,设余数为()x y ,则()()()R e r x t x y x g x ⎡⎤=⎢⎥⎣⎦,()x y 位数为1-r 。

crc校验算法原理及实现

crc校验算法原理及实现

求此二进制序列数的 CRC 码时,先乘以 216 后(既左移 16 位),再除以多项式 G(X),所得的余数既
是所要求的 CRC 码。如式(4-2)所示:
B( X ) ⋅ 216 = Bn ( X ) ⋅ 216 ⋅ 28n + Bn−1( X ) ⋅ 216 ⋅ 28(n−1) + ⋅ ⋅ ⋅ + B0 ( X ) ⋅ 216 (4-2)
G(X )
G(X )
求CRC码所采用模 2 加减运算法则,既是不带进位和借位的按位加减,这种加减运 算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘 除法运算是一样,符合同样的规律。生成CRC码的多项式如下,其中CRC-16 和CRC-CCITT 产生 16 位的CRC码,而CRC-32 则产生的是 32 位的CRC码。本文不讨论 32 位的CRC算法, 有兴趣的朋友可以根据本文的思路自己去推导计算方法。
B( X ) ⋅ 216 G(X )
= Qn ( X ) ⋅ 28n
+ Qn−1 ( X ) ⋅ 28(n−1)
+ ⋅ ⋅ ⋅ + Q0 ( X ) +
R0 ( X ) (4-8) G(X )
很显然,十六位二进制数 R0 ( X ) 既是我们要求的 CRC 码。
式(4-7)是编写按字节计算 CRC 程序的关键,它说明计算本字节后的 CRC 码等于上一字节余式
0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,

CRC校验实现方法

CRC校验实现方法

CRC校验实现方法CRC原理CRC是什么东西呢?你用过RAR和ZIP等压缩软件吗?它们是不是常常会给你一个恼人的“CRC校验错误”信息呢?我想你应该明白了吧,CRC就是块数据的计算值,它的全称是“Cyclic Redundancy Check”,中文名是“循环冗余码”,“CRC校验”就是“循环冗余校验”。

CRC有什么用呢?它的应用范围很广泛,最常见的就是在网络传输中进行信息的校对。

其实我们大可以把它应用到软件保护中去,因为它的计算是非常非常非常严格的。

严格到什么程度呢?你的程序只要被改动了一个字节(甚至只是大小写的改动),它的值就会跟原来的不同。

所以只要给你的“原”程序计算好CRC值,储存在某个地方,然后在程序中随机地再对文件进行CRC校验,接着跟第一次生成并保存好的CRC值进行比较,如果相等的话就说明你的程序没有被修改/破解过,如果不等的话,那么很可能你的程序遭到了病毒的感染,或者被Cracker用16进制工具暴力破解过了。

我们先来看看CRC的原理。

首先看两个式子:式一:9 / 3 = 3 (余数 = 0)式二:(9 + 2 ) / 3 = 3 (余数 = 2)在小学里我们就知道,除法运算就是将被减数重复地减去除数X 次,然后留下余数。

所以上面的两个式子可以用二进制计算为:(不会二进制计算的可以撤退了)式一:1001 - 0011 =0110 对应的十进制等式为:9-3=6;0110 - 0011 =0011 对应的十进制等式为:6-3=3;0011 – 0011 =0000 对应的十进制等式为:3-3=0;一共减了3次,所以商是3,而最后一次减出来的结果是0,所以余数为0。

式二:1011 - 0011 =1000 对应的十进制等式为:11-3=8;1000 - 0011 =0101 对应的十进制等式为:8-3=5;0101 – 0011 =0010 对应的十进制等式为:5-3=2;一共减了3次,所以商是3,而最后一次减出来的结果是2,所以余数为2。

CRC校验算法与实现程序

CRC校验算法与实现程序

息码),以一定的规则产生一个校验用的 r 位监督码(CRC 码),附在原始信息后
边,构成一个新的二进制数序列共 k+r 位,然后发送出去。在接收端,根据信
息码和 CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,
在差错控制理论中称为“生成多项式”。
在代数编码理论4
3
2
1
0
项式的系数。例如:1100101 表示为:1・x +1・x +0・x +0・x +1・x +0・x +1・x ,
652
即 x +x +x +1。
设编码前原始信息多项式为 P(x),P(x)的最高次幂加 1 等于 k;生成多项
式为 G(x),G(x)的最高次幂等于 r;CRC 多项式为 R(x);编码后的带 CRC 的信
CRC 校验算法与实现程序
作者:Water Shining 日期:2012-10-28
邮箱:snow1861@
基本原理:
CRC 的全称为 Cyclic Redundancy Check,中文名称为循环冗余校验。利用
CRC 进行检错的过程可简单描述为:在发送端根据要传送的 k 位二进制数序列(信
+(Shift_Register>>1); Shift_Register^=(CRC_Polynomial_Register*temp_long); } //parity for(i=0;i<CRC_Parity_Bits_Number;i++) { temp_long=Shift_Register&0x1; Shift_Register>>=1; Shift_Register^=(CRC_Polynomial_Register*temp_long); } //convert parity variable to binary data for(i=0;i<CRC_Parity_Bits_Number;i++) CRC_ParityBits[i]=((Shift_Register>>i)&0x1); } //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// unsigned int BinaryDataIn[11]={1,1,0,0,1,0,1}; unsigned int CRC_ParityBits[CRC_Parity_Bits_Number]; void main(void) { //generat CRC parity CRC_ParityBits_Generator(BinaryDataIn,7,CRC_ParityBits); //a break point put here }

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多项式,并进行多次除法运算,然后将计算得到的校验值附加到数据末尾进行传输。

基于DSP的CRC算法的实现_杨宏

基于DSP的CRC算法的实现_杨宏
科技资讯 2008 NO.27 SCIENCE & TECHNOLOGY INFORMATION 基于 D S P 的 C R C 算法的实现①
信 息 技 术
杨宏 (西安邮电学院电信系 西安 7 1 0 0 6 1 )
摘 要:介绍了循环冗余校验 CRC 算法原理和校验规则,分析了 CRC 校验码的具体计算方法,给出了使用 DSP 来实现 CRC 算法的过程,完 成了 C R C 编码器的 D S P 实现。最后, 将仿真结果与理论值进行比较, 仿真结果与理论值一致。 关键词:循环冗余校验 DSP CCS 中图分类号: T P 3 0 1 . 6 文献标识码: A 文章编号: 1 6 7 2 - 3 7 9 1 ( 2 0 0 8 ) 0 9 ( c ) - 0 0 3 0 - 0 2
图 4 运算结束时寄存器值
子工业出版社, 2 0 0 4 . [2] 周霖. D S P 通信工程技术应用[ M ] . 北京:
国防工业出版社, 2 0 0 4 . [3] 周霖. D S P 系统设计与实现[ M ] . 北京: 国
防工业出版社, 2 0 0 4 . [4] 曹雪虹, 张宗櫈. 信息论与编码[ M ] . 北
在网络的学习训练过程中, 连接权值和阈 值初始化是随机设置的。随机设置的初始化权 值和阈值对网络学习过程是有影响的。随机设 置的初始化权值和阈值不同时, 对指定的允许 误差 ε, 有的学习过程能在设定的最大学习次数 tmax 范围内收敛, 但有的学习过程在达到最大学 习次数 tm a x 之后不能得到期望的允许误差。
在除法运算中, 如果用被除数除以除 数后所得的余数不为零, 那么从被除数中 减去余数后, 所得结果可被除数除尽, 循环 冗余校验正是基于这一思想。采用 C R C 校 验时, 发送方和接收方事先约定一个生成 多项式 g( x) , 该生成多项式作为除数多项 式, 将要发送的数据比特序列作为一个多 项式 m( x) 的系数, 该多项式为被除多项式, 被除多项式 m( x) 与除数多项式的余数多项 式 r( x) 的系数为循环冗余校验码(CRC 码) ,

CRC检验原理及程序实现

CRC检验原理及程序实现

CRC检验原理及程序实现引言:循环冗余检验CRC(Cyclic Redundancy Check)的检错技术应用较为广泛,由于实际的通信线路并非是理想的,它不可能将误码率(在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER )下降到零。

因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用检错措施。

目前在数据链路中广泛采用循环冗余检验CRC检测技术。

1循环冗余检验CRC的原理利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的n位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+n位,然后发送出去。

在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。

这个规则,在差错控制理论中称为“生成多项式。

代数学的一般性算法:在代数编码理论中,将一个码组表示为一个多项式,码组中各码元当作多项式的系数。

例如1100101表示为1 • x6+1 • x5+0 • x4+0 • x3+1 • x2+0 • x+1,即x6+x5+x2+1。

设编码前的原始信息多项式为G(x), G(x)的最高幕次加1等于k;生成多项式为P(x),P(x)的最高幕次等于r;CRC多项式为R(x);编码后的带CRC的信息多项式为T(x)。

发送方编码方法:将G (x)乘以xr(即对应的二进制码序列左移r位),再除以P (x),所得余式即为R(x)。

用公式表示为T(x)=xr G (x)+R(x)接收方解码方法:将T(x)除以G(x),如果余数为0,则说明传输中无错误发生,否则说明传输有误。

2、循环冗余码的产生及正确性检验的例子举例来说,设信息码为101001,生成多项式为1101,即P(x)=x3+x2+1, G(x)=x5+x3+1,计算CRC的过程为xrP(x)即左移三位101001000P (x) =x 3+x2+1 即R(x)= 1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据传输系统中CRC校验的DSP算法实现作者:华涛吴进来源:《现代电子技术》2008年第07期摘要:循环冗余校验码是一种重要的循环码,编码和解码方法简单,容易实现,检错能力强,误判概率几乎为零,是一种效率极高的差错控制方法,可以满足通信系统可靠传送信息的要求,在测控及数据通信中得到了非常广泛的应用。

详细介绍了循环冗余校验的编解码原理,分析了用DSP实现CRC的合理性,最后给出了根据校验原理实现的设计思想及流程图,具有一定的实用价值。

关键词:数据传输系统;循环冗余校验;数字信号处理器;算法分析中图分类号:TN911.72文献标识码:B文章编号:1004-373X(2008)07-083-DSP Implementation of CRC Algorithm in Data Communication System(1.System House,Siemens Signal Company Ltd.,Xi′an,710016,China;2.Xi′an University of Posts and Telecommunications,Xi′an,710061,China)Abstract:Cyclic redundancy check code is a very important cyclic code,the coding and decoding methods are simple,easy to realize.It is strong to detect error,the probability of misjudging is nearly zero.It is a method with extremely high efficiency in controlling errors,which can fulfill the requirement of reliable information transmission in communication systems.It has got very extensive application in observing and controlling and data communication.This paper introduces the encoding and decoding principle of CRC in detail,analyzes the feasibility of CRC by DSP,and gives out the design proposal and flow chart according to the principle,which is very useful in applications.Keywords:data communication system;cyclic redundancy check;digital signalprocessor;algorithm analysis通信的目的是将信息及时可靠地传给对方,因此要求一个通信系统传送信息必须可靠快速。

由于传输距离、现场状况、干扰等诸多因素的影响,设备之间的通信数据常会发生一些无法预测的错误。

为了降低错误所带来的影响,一般在通信时采用数据校验的办法[1],而循环冗余码校验是常用的重要校验方法之一。

CRC校验的检错能力强,在通信领域广泛地用于实现差错控制。

数字信号处理器(DSP)是实施高速实时信号处理的专用处理器,目前DSP已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的旗手。

CRC 的高效检错能力、DSP的实时处理能力,可以满足通信系统传送信息的两大基本要求:可靠、快速。

应用DSP系统来实现CRC,完成数据传输过程中的检错处理,便于集成,使用方便。

使用DSP汇编语言,编解码效率高,速度快,实时性好,占用系统资源少。

因此CRC校验被广泛使用在各种数据校验应用中。

1 循环冗余校验码循环冗余校验码(Cyclic Redundancy Check Code,CRC)由线性分组码的分支而来,是一种检错能力很强的循环码。

循环冗余校验对传送数据作错误侦测(Error Detecting)是利用除法及余数的原理。

编码和解码方法简单,容易实现,检错能力强,误判概率几乎为零,而且这种方法取得校验码的方式具有很强的信息覆盖能力,是一种效率极高的错误校验法。

这种高效的差错控制方法,在测控及数据通信中得到了广泛的应用[2]。

1.1 CRC的编码原理CRC校验采用多项式编码方法,被处理的数据块可以看作是一个n阶的二进制多项式,即an----。

如一个8位二进制数10110101可以表示为:。

多项式乘除法运算过程与普通代数多项式的乘除法相同。

多项式的加减法运算以2为模,加减时不进、借位,和逻辑异或运算一致。

CRC码的编码方法是用待发送的二进制数据除以生成多项式g(x),g(x)的首位和最后一位的系数必须均为1,两者相除之后将最后的余数作为CRC校验码。

其实现步骤如下:(1) 设待发送的数据块是m位的二进制多项式t(x),生成多项式为g(x),阶数为r。

在数据块的末尾添加r个0,数据块的长度增加到m+r位,对应的二进制多项式为。

(2) 用生成多项式g(x)去除,求得余数为二进制多项式y(x),阶数为r-1。

这个二进制多项式y(x)就是t(x)经过生成多项式g(x)编码的CRC校验码。

(3) 用以模2的方式减去y(x),得到二进制多项式。

就是包含了CRC校验码的待发送字符串。

1.2 CRC的解码原理CRC校验原理实际上就是在一个位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列,例如,p位二进制数据序列D=[dp-1 -],r位二进制检验码R=[rr--],所得到的这个n位二进制序列就是M=[dp----];附加在p位二进制数据序列之后的这个r位二进制检验码与数据序列的内容之间存在着某种特定的关系。

如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。

因此,通过检查这一关系,就可以实现对数据正确性的检验。

校验码R是通过对数据序列D进行二进制除法取余式运算得到的,他被一个称为生成多项式的(r+1)位二进制序列G=[gr gr-]来除,用多项式可以表示为其中,表示将数据序列D左移r位(即在D的末尾再增加r个0位),Q(x)代表这一除法所得的商,R(x)就是所需的余式。

这一运算关系还可以用下式表达R(x)=Re[]其中,Re[]表示对括号内的式子进行取余式运算。

由CRC码的编码过程可知,接收方接收的n位二进制序列可以看作是D(x)和CRC 校验码的组合,去掉M(x)序列的后r位就是发送的原始数据。

所以CRC的解码过程则是对接收的前p位二进制数据进行如编码一样的CRC校验,发送方和接收方用同一个生成多项式,将校验得到的r位CRC校验码与接收的M(x)序列的后r位CRC校验码相比较,以两个校验码是否相同为据,判断数据帧是否出错。

两者相同,则表示数据帧传输正确;反之,则表示数据传输中出现错误。

CRC编码实际上是将待发送的p位二进制多项式转换成了可以被G(x)除尽的p+r 位二进制多项式M(x)。

所以CRC的解码过程也可以通过对M序列直接进行除法取余式运算,即:M(x)G(x)=Q(x)+R(x)G(x)所得到的余式R(x)若为零则表示数据传输正确,否则认为在传输过程中发生错误。

许多CRC的硬件解码电路就是按这种方式进行检错的。

1.3 CRC的算法分析以上介绍了CRC校验码的编码和解码原理,很明显,CRC校验过程就是进行除法取余式运算,实际上是一个循环移位的模2逻辑异或运算。

这也就是CRC算法要解决的问题。

算法的依据和多项式的除法性质有关[3]。

如果一个m位的多项式t(x)除以一个r阶的生成多项式g(x),t(x)=am----,将每一位<m)提出来,在后面补足r个0后,单独去除生成多项式g(x),得到余式位yk(x),则将ym-⊕ym-⊕…⊕y0(x)后得到的就是t(x)由生成多项式g(x)得到的余式。

上述算法是依据CRC校验码的产生原理来实现的,即计算法。

这种方法代码简单,容易实现,所占用的内存也比较少,而且修改灵活,可移植性好,对任意长度的生成多项式都适用。

但是这种以bit为单位对数据进行校验的算法对于发送的数据不长的情况比较适合。

如果发送的数据块很长时,逐个bit进行校验,就会占用很多的处理器处理时间,大大降低校验的效率,尤其在高速通讯的场合,这是不允许的,这时可采用一次处理4位、8位、16位等方法,即是常用的按半字节、按字节查表法[4]。

查表法的优缺点与计算法刚好相反,运算速度快,不过这种方法要事先计算出一个参数表,需要占用相当大的内存空间,这就是查表法的缺点。

本文不详述这种方法。

计算法和查表法各有优缺点,实际应用时,根据应用场合对速度和内存的不同要求,选择最合适的校验方法。

2 CRC的DSP实现2.1 用DSP实现CRC的设计思想不同CRC码的生成多项式各不相同,CRC码的比特数也不同,且在有的通信协议中要求将余数寄存器先初始化为全0,另外的则须初始化为全1。

因此,在程序设计时必须充分利用CRC码的共性及所用DSP指令具有代码简洁、容易实现、运算速度快等特点。

CRC的编解码用到模2的多项式除法,而多项式除法可以采用带反馈的移位寄存器来实现,因此,用DSP来实现CRC编解码的关键是通过DSP来模拟一个移位寄存器(也就是模拟手写多项式除法)。

考虑到TMS320C54x系列DSP的累加器A和B均为40位,因此,可以用一个40位累加器A作为移位寄存器,若CRC码不够40位(设为k位),则仅用到A的最高k 位,无用位就用0填充[5]。

在CRC的编码和解码中均涉及到码的移位和异或操作,这可以通过C54x系列的SFTA(算术移位)和XOR(异或)两条指令来实现。

C54x系列还提供了特殊指令bitt和xc。

bitt指令利用寄存器T,取出一个16位数据中的第(15-T)位,并送入TC(TC是特殊寄存器中的一位)。

xc 指令是条件执行语句,此指令先判断所列条件是否满足,再决定是否执行其后的2条单周期指令或1条双周期指令。

其实现步骤如下:(1) 先将CRC移位寄存器(即余数寄存器)A的每一位有效位均初始化为全0或全1(与协议有关),而无用位清0;(2) 将CRC移位寄存器中的值左移一位,判断移出的第一位与输入序列的最高位异或之后是否为1;(3) 若是1,则将A与生成多项式进行异或再跳到步骤(2)处理下一位;否则,直接跳到步骤(2)继续处理下一位。

相关文档
最新文档