CRC原理和程序实现.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CRC原理和程序实现.pdf

108 CESC2006年第一届奎国嵌入式系统学术交流会论文集 CRC原理和程序实现 翁斌 中国电子科技集团会司电41所依囊消防电子睿司,蚌埠,233006 Check)的差错控制原理噩其算法实现。 摘 要详细介龆循环冗奈校j}CRC(CyclieRedundancy 关麓词循环冗余梗验,算法,C语言 1引言 Check)是由分组线性码的分支而来.主要应用是二元玛组。其利 循环冗余校验(CRC,CyclicRedundancy 给接收装置‘接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据 通信出现错误。CRC棱验具有编码简单、误判概率低等特点,广泛应用于测控及通信领域。CRC计算可以靠 专用的硬件来实现,但是对于低成本的擞控铺器系统,在投有硬件支持下实现CRC检验,关键的问题就是如何 通过软件来完成CRC计算,也就是cRC算法的问题。 2 CRC原理 CRC检验原理实际上就是在一个P位Z-进制数据序列之后附自Ⅱ一个i位二进制检验码(序列),从而构成 一个总长为n=p十i位的二进制序列。例如,卢位二迸制数据序列D一[d,一tdPz…dtdn],i位二进制检验码足 z…r,r0]}附加在数据序 一[o一,r,:…nro],所得到的这个H位Z-进制序列就是_!订=[d川d,一:…d-d。I,I 列之后的这个检验码,与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某 一位或某些位发生错误,则这种特定关系就会被醢坏,因此,通过检查这一关系t就可以实现对数据正确性的 检验。 校验码R是通过对数据序列D进行二进制除法取余式运算得到的,它被一个称为“生成多项式”的(i+1) 位二进制序列G=[舒f.一。…g-go]来踪,表示为; 百西r=q、2’十万丽掣=∞)+躲 (1)¨7 式中:,’D(z)表示将数据序列D左移i位(即在D的柬尾再增加i个0位);Q(z)代表这一除法所得的商; R(z)就是所需的余式。这一运算关系还可以表达为: ㈨=Re[搿] ㈤ 式中:Re[]表示对括号内的式子进行取余式运算。 检验码的编码计算如上所述,而检验过程则是对M序列直接进行除法取余式运算,即: 鬻一眦)+糍 (3) 或表示为 肌,一ne[器] ㈤ 所得到的余式R(z)若为零,则表示数据正确;否则,认为发生错误, 多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为模,加减时不进、借 位,与逻辑“异或”运算一致。采用CRC校验时,发送方和接收方用同一个生成多项式G(z),并且G(z)的首位 和最后一位的系数必须为l。CRC的处理方法是:发送方以G(-)去除M(z),得到余数作为CRC控验码。枝 验时.以计算的校正结果是否为0为据,判断数据帧是否出错。 CRC校验可以100%地检测出所有奇数个随机错误和长度小于或等于i(i为g(x)的阶数)的突发错误。 所以CRC的生成多项式的阶数越高,那么误判的概率就越低。在IBM的同步数据链路控制规程SDLC的帧 第二部分科研交j直篇 109 校验序列FCS中.使用cRc一16,其生成多项式G(z)=z”+一5+∥4-1;而在CCITT推荐的高级数据链路控 制规程HDI.C的帧校验序列FCS中,使用CCITT--16其生成多项式G(T)一z“+T”+一+1。cRc一32的 生成多项式G(z)一

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档