- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
循环冗余校验 CRC 的算法分析和程序实现
西南交通大学计算机与通信工程学院 刘东
摘要 通信的目的是要把信息及时可靠地传送给对方,因此要求一个通信系统传输消息必须可靠
与快速,在数字通信系统中可靠与快速往往是一对矛盾。为了解决可靠性,通信系统都采用了差错
控制。本文详细介绍了循环冗余校验 CRC (Cyclic Redundancy Check )的差错控制原理及其算法实
现。
关键字 通信 循环冗余校验 CRC-32 CRC-16 CRC-4
概述
在数字通信系统中可靠与快速往往是一对矛盾。若要求快速,则必然使得每个数据码元所占地
时间缩短、波形变窄、能量减少,从而在受到干扰后产生错误地可能性增加,传送信息地可靠性下
降。若是要求可靠,则使得传送消息地速率变慢。因此,如何合理地解决可靠性也速度这一对矛盾,
是正确设计一个通信系统地关键问题之一。为保证传输过程的正确性,需要对通信过程进行差错控
制。差错控制最常用的方法是自动请求重发方式 (ARQ )、向前纠错方式(FEC )和混合纠错 (HEC )。
在传输过程误码率比较低时,用 FEC 方式比较理想。在传输过程误码率较高时,采用 FEC 容易出
现“乱纠”现象。HEC 方式则式 ARQ 和 FEC 的结合。在许多数字通信中,广泛采用ARQ 方式,
此时的差错控制只需要检错功能。实现检错功能的差错控制方法很多,传统的有:奇偶校验、校验
和检测、重复码校验、恒比码校验、行列冗余码校验等,这些方法都是增加数据的冗余量,将校验
码和数据一起发送到接受端。接受端对接受到的数据进行相同校验,再将得到的校验码和接受到的
校验码比较,如果二者一致则认为传输正确。但这些方法都有各自的缺点,误判的概率比较高。
循环冗余校验 CRC (Cyclic Redundancy Check )是由分组线性码的分支而来,其主要应用是二
元码组。编码简单且误判概率很低,在通信系统中得到了广泛的应用。下面重点介绍了 CRC 校验
的原理及其 算法实现。
一、循环冗余校验码(CRC )
CRC 校验采用多项式编码方法。被处理的数据块可以看作是一个 n 阶的二进制多项式,由
a x n−1 +a x x −2 +⋅⋅⋅+a x +a 。 如 一 个 8 位 二 进 制 数 可 以 表 示 为 :
n−1 n−2 1 0
1x 7 +0x 6 +1x 5 +1x 4 +0x 3 +1x 2 +0x +1。多项式乘除法运算过程与普通代数多项式的乘除法相
同。多项式的加减法运算以2 为模,加减时不进,错位,和逻辑异或运算一致。
采用 CRC 校验时,发送方和接收方用同一个生成多项式 g (x ),并且 g (x )的首位和最后一
位的系数必须为 1。CRC 的处理方法是:发送方以g (x )去除t (x ),得到余数作为 CRC 校验码。
校验时,以计算的校正结果是否为 0 为据,判断数据帧是否出错。
CRC 校验可以 100%地检测出所有奇数个随机错误和长度小于等于k (k 为 g (x )的阶数)的
突发错误。所以 CRC 的生成多项式的阶数越高,那么误判的概率就越小。CCITT 建议:2048 kbit/s
的 PCM 基群设备采用 CRC-4 方案,使用的 CRC 校验码生成多项式 g (x )= x 4 +x +1。采用 16
位 CRC 校验,可以保证在1014 bit 码元中只含有一位未被检测出的错误[2] 。在IBM 的同步数据链
路控制规程 SDLC 的帧校验序列FCS 中,使用CRC-16,其生成多项式 g (x )= x 16 +x 15 +x 2 +1;
而在 CCITT 推荐的高级数据链路控制规程 HDLC 的帧校验序列FCS 中,使用CCITT-16,其生成多
项 式 g ( x ) = x 16 +x 15 +x 5 +1 。 CRC-32 的 生 成 多 项 式 g ( x )
= x 32 +x 26 +x 23 +x 22 +x 16 +x 12 +x 11 +x 10 +x 8 +x 7 +x 5 +x 4 +x 2 +x +1 。CRC-32 出错的
文档评论(0)