CRC校验的设计与实现

CRC校验的设计与实现

ID:41582637

大小:55.98 KB

页数:3页

时间:2019-08-28

CRC校验的设计与实现_第1页
CRC校验的设计与实现_第2页
CRC校验的设计与实现_第3页
资源描述:

《CRC校验的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、5.3.4循环冗余校验的设计与实现本系统中数据通信技术占据重要地位,是保证数据采集准确性的关键。客户端与称重仪表进行通信吋,为减小产量信息在传输过程屮由于电磁干扰等因素导致的错误,需进行数据校验。数据校验方法有很多,比较传统的有:行列兀余校验、重复码校验、奇偶校验、循环兀余校验等。木系统采用循环冗余校验(CRC)进行通信过程中的数据校验。CRC是一种检错能力很强的循环码,利用模2取余的原理对数据进行循环校验,计算效率高且误判概率极低,几乎为零。从性能和开销上考虑,C7?C远优于传统的算术和校验及奇偶校验。1.C7?C编码原理CRC校验通常采用多项式编码的方式,参与校验的数据信息(

2、以下简称“待校验数”)可看作一个〃阶的二进制形式的多项式,即%严+%2十2+...+%+°0。例如,一个6位二进制数101101可表示为:lx5+0x4+l?+lx2+Ox+1=x5+x3+x2+l(为方便下文描述,把该类型的多项式称为“转换多项式g(x)”)。CRC的编码方式是把待校验数转变成二进制数彳兀),然后再将r(x)转变为转换多项式g(Q,令[黑](式屮的Re[]表示对中括号内的式子进行取余运算),将余数/?(X)做为待校验数的CRC校验码。CRC校验码具体求解步骤如下:①假设待校验数是〃位二进制形式的多项式r(x),把彳兀)转变为转换多项式g(x),位数为舁。在待校验

3、数的末尾附加厂个零,则待校验数的长度变为舁+厂位,其对应的二进制形式的多项式变成xr/(x)-Yrf(y②把g(x)和疋心)进行取余运算,设余数为)心),则y(x)=Re—,血)位数为一1。则y(x)就是心)经过g(_r)编码后的CRC校验码。③把川⑴以模2除法的方法求得/(兀),然后减去)(兀),得到二进制形式的多项式xW(x)就是包含了CRC校验码的待校验数。1.CRC解码原理CRC检验原理是在一个斤位待校验数后添加r个二进制序列,组成一个长度为“+M立的二进制数据。例如,—•个〃位二进制数据块为D=[d,-d”_2・・Qd()],厂位校验码为尺=["一2…伽],得到的斤+

4、M立二进制校验码M=[dn_l..,didQrr_r..r[rQ];附加在〃位待校验数后的厂位二进制序列R与M之间存在一种校验关系。若数据传输过程中因电磁干扰、环境因素等原因造成待校验数屮部分数据产生错误,那么这种校验关系就被破坏。所以通过检查此校验关系,即可实现对数据传输准确性的校验。由CRC编码过程可得,数据接收方接收的斤位待校验数M(x)是CRC码和D(x)的组合,去除的最后r位数据,就得到原始待校验数。因此,CRC解码过程是对接收的前"位数据进行与CRC编码相同的CRC校验,数据通讯双方采用相同的多项式G(x),将校验得到的M立C7?C校验码与M(x)的最后厂位CRC校验

5、码进行对比,以两者是否一致为依拯来检验待校验数在传输过程中是否出错。若两者不同,则待校验数在传输过程屮产生错误;若两者相同,则表明待校验数在传输过程屮未出现错误。CRC编码实际上是将p位待校验数D(x)转变成能够被G(兀)除尽的"+r位二进制多项式M(x)o因此CRC解码过程亦可通过对M(兀)进行取余运算实现,即:/?(x)=Re兽甲o若余式7?(兀)工0,则判定数据传输过程中产生错误;反之,则表明数拯传输正常。目前,大多数CRC解码电路按照此运算方式进行数据数据传输过程屮错误的校验。常用的CRC校验算法有两种:①查表法,②计算法。本系统设计的C7?C校验算法采用第一种方法,具体

6、程序设计如下:'CRC校验算法。'crc=(crcTable((((crcAnd&HFFOO)/256)And&HFF))Xor(DataBuf(i)And&HFF))fXor(((crcAnd&HFF)*256)And&HFF00)PrivateFunctionCRC16(ByRcfDataBuf()AsByte,ByVaiLcnDataAsInteger)AsLongDimJ,K,L,M,N,0AsLongDimCRC_CHECKAsLongDimiAsIntegerFori=0ToGET_D/TA_LEN(DATA_REC)-1J二(crcAnd&HFF00)/256K=

7、iAnd&HFFL=DataBuf(i)And&HFFM二JXorKN=crc_Table(L)0二(crcAnd&HFF)*256CRC_CHECK=MXorNNextiIfCRC16二CRC_CIIECKThenCallD/TA_SAVE'数据保存ElseCallCHECK_FAILURE'校验失败CallERR_HANDLING'错误处理EndTfEndFunction

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。