ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:118.11KB ,
资源ID:14727494      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14727494.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(CRC校验原理及推导过程.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

CRC校验原理及推导过程.docx

1、CRC 校验原理及推导过程校验原理及推导过程 1.1 伽罗华域(2 )在伽罗华域(2 )中的元素由(2)上的本原多项式构造,域中的元素两两运算之后 例如当=4,本原多项式为:()=+1,(2)中的元素集合 CRC 校验原理及推导过程 1 代数引论 参考文献1对伽罗华域、线性码、循环码、缩短循环码进行了很好的论述。的结果依然是该域中的元素,域中运算是基于模 2 的。4 4 0,1,2,3,14,转换为十六进制数依次对应为0,1,2,4,8,3,6,5,7,9,转换为 多项式依次对应为 0,1,2,3,+1,2+,3+2,3+1,2+1,3+,2+1,3+2+,3+。于是:15=14=(1+3)=

2、+4=+1+=1 7+5=(2+)+(3+1)=3+2+1=13 1.2 模运算法则 模运算与基本四则运算有些相似,但是除法例外。其规则如下(a+b)%p=(a%p+b%p)%p(1-1)(a-b)%p=(a%p-b%p)%p(1-2)(a b)%p=(a%p)(b%p)%p(1-3)ab%p=(a%p)b)%p(1-4)结合率:(a+b)%p+c)%p=(a+(b+c)%p)%p(1-5)(a b)%p c)%p=(a (b c)%p)%p(1-6)交换率:(a+b)%p=(b+a)%p(1-7)(a b)%p=(b a)%p(1-8)分配率:(a+b)%p c)%p=(a c)%p+(b

3、c)%p)%p(1-9)一个长度为,有 2 个码字的分组码,当且仅当其 2 个码字构成(2)域上 1.3 线性分组码和循环码 所有维向量组成的向量空间的一个维子空间是被称为(,)线性码。线性码的码字由位消息部分和()位冗余校验部分组成。循环码事线性分组码的一个重要的子类,其有两个引入注目的原因:一是 通过带反馈连接的移位寄存器(一般称为线性时序电路),其编码和校正计算 能够很容易的实现;二是由于其具有固有的代数机构,都能找到很多种实用的 方法进行译码。一个(,)线性码 C,如果每个码字的循环移位后的数仍是 C 的码字,则成 为其为循环码。给定一个(,)循环码的生成多项式 g(x)=+1 1+1

4、+1,假设待编码的消息为 u=(1,2,1,u0),则相应的消息多项式为:u()=1 1+2 2+1+u0(1-10)用 乘以 u(),得到次数不大于(1)的多项式为:u()=1 1+2 2+1 1+u0 11)用生成多项式 g(x)除 u()得到:(1-u()=()()+v()(1-12)其中,()和 v()分别为商式和余式。由于 g(x)的最高次数为(),则()的次数必不大于(-1)。从而有()=1 1+1+0 整理得到次数不大于(1)的多项式:u()+()(1-13)=()()=1 1+2 2+1 1+u0 +1 1+1+0(1-14)该多项式能被多项式 g(x)整除。相应的完整码字为:

5、(1,2,1,u0,1,1,)(1-15)1.4 缩短的循环码 在系统设计中,如不能找到一个具有合适的自然长度的或者信息位数目的 码字,缩短码是一种有效的解决方案。对一个(,)循环码,其中信息位的高位均为零的码字共有2 个,构成 了的线性子码。若从这些码字中删除这个零信息位,将得到2 个长度为 n 的向量,这些向量组成了(,)线性码。这种码被称为缩短循环码,但不是循环码。缩短循环码的纠错能力与差错检测能力至少与原码相同。1.5 冗余码 所用符号数或信号码元数比表示信息所必需的数目多的代码叫冗余码。1.6 循环冗余检验 循环冗余检验英文名称为 Cyclical Redundancy Check,

6、简称 CRC。它是利 用多项式除法及余数的原理来做错误检测的。它将要发送的数据比特序列当作 一个信息多项式 u()的系数,发送时去除以约定的生成多项式g(x),得到一个 余数多项式 v(),将余数多项式加到信息多项式之后发送到接收端,接收端同 样用 g(x)去除接收到的接收多项式 r(),进行计算,然后把计算结果与由生成 多项式 g(x)决定的固定序列比较,来检测传输错误。由此可以看出其同时具有 循环码和冗余码的特征,所以这种错误检测方法叫循环冗余校验,编码叫循环 冗余校验码,即如式 1-15 所示。理论上可以证明循环冗余校验码的检错能力有以下特点:(1)可检测出所有奇数位错。(2)可检测出所

7、有双比特的错。(3)可检测出所有小于、等于校验位长度的突发错。2 CRC 码编码 在 1.3 节线性分组码和循环码中得到算式 1-15 的计算过程就是循环冗 余校验码的编码步骤,归纳起来有以下三步骤:第 1 步 预先用 乘以信息多项式 u(),得到 u();第 2 步 用生成多项式 g(x)去除 u(),获得余式 v();第 3 步 整合余式 v()和 u(),获得码多项式 u()+()。对于一个(,)循环码,生成多项式 g(x)=+1 1+11+1,编码电路有两种方式:一,信息位由高位到低位的顺序从循环移位寄存器体左侧依次输入,信息 位完全进入循环体后继续输入 n 1个 0,最后循环体中寄存

8、器的值就是余式 码字;g0 g1 gn-k-1 Din+D+D1+Dn-k-1 图 1 左侧串行输入循环移位寄存器体 二,信息位由高位到低位的顺序从循环移位寄存器体右侧依次输入,信息 位完全进入循环体后寄存器的值就是余式码字。g0 g1 gn-k-1 D+D1+Dn-k-1+以 CRC4 为例,其生成多项式为:g(x)=+1,当信息多项式 Din 图 2 右侧串行输入循环移位寄存器体 注:1,移位寄存器循环体中余式码字低位在左侧,高位在右侧。4 u=(101011)时用两种方法计算得到得余式码字是一样的:=(0100),编码 后完整地码字为:(1010110100)。图三所示的两种计算余式码字

9、的方法对应于 数字电路中 D 触发器、加法器、乘法器的组成的循环体结构分别为图 1、图 2 所示。方法一 方法二 0 10 1 101 0 1010 1 10101 10011 0110 1 01101 0 11010 10011 01001 0 10010 10011 0001 0 10011 10000 10011 0011 00000 00110 10000 11100 10011 01111 00000 11110 10011 01101 10000 01010 10000 0100 1 0 1 0 1 1 00010 0 0100 图 3 信息位为单比特两种方法比较 3 CRC 码校

10、验 3.1 CRC 码校验的基本原理 所有的 CRC 校验都是基于以下这个等式:(+)=0(3-1)其中=u(),u()=1 1 +1+u0,=,=1 1+1+0,g(x)=+1 1+1+1。息字段多项式的最高次幂,取决于 k的值即 =2,是信息字段长度,G 是生 M 是信息字段(Message)多项式,R 是校验字段(Remainder)多项式,r 是校验字段多项式的最高次幂(也就是校验字段的长度,CRC-32 对应的 k,依次类推),是信息字段加上冗余校验码后多项式的最高次幂,k 是信 k 成(Generator)多项式。由此可见 CRC32 信息字段最大比特数为232-32,除此之 外的

11、信息字段编码就是缩短的 CRC32 编码。发送端 M 和 G(对某一种确定的 CRC 校验,其 G 是固定的)是已知的,CRC 计算就是 为了求出校验字段 R;接收端 M,R,G 都是已知的,主要的操作都是 为了验证等式是否成立,方法有很多种。下表展示了用于被用于一些常用的 CRC 标准的生成多项式,Hex 列表示 生成多项式对应的十六进制,MSB(most significant bit,可以理解为最左边 的一位)省略,因为该位总是为 1:表一 几种典型 CRC 生成多项式 3.2 发送端和接收端的具体处理方法 参考文献2对 CRC 校验码的接收端有具体处理的描述,缺少中间推导过程。CRC

12、校验码在工程应用过程中相比数学计算稍微有些变化:1,在发送端对全 0 数据包的编码处理。数学计算中,当信息字段全部为 0 时的得到的余式码字也是全零的,但是 在工程应用中,当非 0 信息字段在编码后发送给接收端,在线路传输中出现干 扰或者是其他情况的错误,导致接收端收到的全零数据,即信息字段和余式字 段都为 0。如果在发送端不做特殊处理,在接收端就检验不出来这样的错误数 据包。于是,在通信传输时,很多协议规定在发送端对 CRC 编码时定义一个 Key 寄存器,对 CRC 编码进行初始化,定义一个不为 0 的初值,Key 寄存器通常 被设置为全 1。结合图 1、图 2 来说,就是在信息输入给循环

13、体之前,其 D 触发 器的值为 1。2,对接收端收到的数据包中拖尾 0 数据的处理。接收端接收到信息字段和余式字段,计算出数据包的余式码字,并与余式 字段做比较,就能检测出错误。更简单的做法是,接收端对接收 到的所有数据 求余式(包括信息字段和余式字段),如果没有传输错误所得的余式一定为 0。但是,余式为 0 并不一定能够说明数据包没有改变,如果数据包在余式字段 后有 0 增加或者删除的情况出现,就无法被检测出来。为了更好的理解公式的推导过程,需要用到 1.2 节中的几个关于取模运算 法则。接收端如何才能识别无差错的传输呢?我们知道在发送侧满足:(+)=0(3-1)如果用 R表示 R 对 1

14、取反,我们得到:(Mx+)mod G=(Mx+(x 1+x 2+1 )=()+x 1+x 2+1)=(+)+x 1+x 2+1)=(M+)mod G)+(1+2+1)=(0+(1+2+1)=(1+2+1)=(1+2+1)因此,在发送端发出来的无差错的传输的校验序列应该是:在接收侧收到的完整码字多项式:=+用多项式 G 对 取模为:(1+2+1)(3-2)(3-3)()=(+)=(+(1+2+1 ))=(+(1+2+1+))=(+(1+2+1)=(+(1+2+1)=(1+2+1)=(1+2+1)因此,在接收端计算出的无差错的传输的校验和应该是:(1+2+1)(3-4)对于给定的生成多项式 G,上式是一个常数,对 CRC-32 而言,该值成为余式多 项式为:31+30+26+25+24+18+15+14+12+11+10+8+6+5+4+3+1(3-5)余式值用十六进制表示:C704DD7B。到此,关于通信用的 CRC 校验实现原理除了通信过程中比特流顺序之外,基本上是理顺,使得知其然也知其所以然。参考文献1 纠错码原理 参考文献2 CYCLIC REDUNDANCY CHECK

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2