CRC算法及Verilog实现.doc

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

CRC算法原理及其Verilog实现 CRC简介 CRC校验是一种在数据通信系统和其它串行传输系统中广泛使用的错误检测手段。通用的CRC标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。本文将以CRC-32为例,说明CRC编码的实现方式以及如何用verilog语言对CRC编码进行描述。 二.模2运算 在说明CRC编码方式之前,首先介绍一下模2运算法则,在CRC运算过程中会使用到模2除法运算。模2运算是一种二进制运算法则,与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种运算。模2运算用“+”表示加法运算,用“-”、“×”或“.”、“/”分别表示减法、乘法和除法运算。与普通四则运算法则不同的是,模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。同时,模2乘法在累加中间结果时采用的是模2加法运算;模2除法求商过程中余数减除数采用的是模2减法运算。因此,两个二进制数进行模2加减法运算时,相当于两个二进制数进行按位异或运算,每一位的结果只与两个数的当前位有关。模2除法在确定商时,与普通二进制除法也略有区别。普通二进制除法中,当余数小于除数时,当前位的商为0,当余数大于等于除数时,当前位的商为1。模2除法在确定当前位的商时,只关心余数的首位,首位为1则商为1,首位为0则商为0。 1.模2加法的定义: 0+0=0,0+1=1,1+0=1,1+1=0。 举例如下: 1010+0110=1100。 2.模2减法的定义: 0-0=0,0-1=1,1-0=1,1-1=0。 举例如下: 1010-0110=1100。 3.模2乘法的定义: 0×0=0,0×1=0,1×0=0,1×1=1。 举例如下: 1011×101=100111 列竖式计算: 1011 × 101 —————— 1011 0000 1011 —————— 100111 其中横线之间的累加过程,采用的是2进制加法,不进位。 4.模2除法: 0/1=0,1/1=1。 举例如下: 1011/101=10,余数为100。 列竖式计算: 10 ———— 101 )1011 101 ———— 001 101 ———— 001 三.CRC实现原理 CRC校验的基本思想是:利用线性编码理论,在发送端根据要发送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(即CRC码),并附在信息码后面,构成一个新的共k+r位的二进制码序列,最后发送出去。在接受端,则根据信息码和CRC码之间所遵行的规则进行校验,以确定传输过程中是否出错,并纠错。一般而言,监督码的位宽r越大,纠错能力就越能,例如,CRC32的纠错能力比CRC16要强。CRC校验获得监督码的方式是,将k位信息码转换成多项式,然后除以一个生成多项式,获得余数即为监督码。 在求解一个k位二进制信息码的CRC之前,首先需要将二进制信息码转换成多项式。一个二进制数序列的各个位是它对应多项式的系数,例如,二进制序列1101011101对应的多项式为: M(x)= 1×X9+1×X8+0×X7+1×X6+0×X5+1×X4+1×X3+1×X2+0×X1+1×X0 M(x)= X9+X8+X6+X4+X3+X2+1 通过这种转换方式获得的多项式称为信息多项式。在进行CRC计算时,除了信息多项式之外,还需要有一个生成多项式G(x)。生成多项式G(x)要求次数大于0,并且要求0次幂的系数为1。根据以上约束,以及对纠错能力的要求,人们提出了一些通用的CRC生成多项式,例如:CRC16和CRC32等。 CRC16的生成多项式为:G(x)= X15+X10+X2+1 CRC32的生成多项式为:G(x)= X32+X26+X23+ X22+X16+X12+ X11+X10+X8+ X7+X5+ X4+ X2+X1+1 CRC的值等于信息多项式M(x)乘以2n ,再除以生成多项式G(x)所得的余数,除法采用模2除法。其中,n表示的是生成多项式G(x)的最高次幂,CRC16中n为16,CRC32中n为32。 四.CRC-32串行计算公式推导 根据二进制信息码转换成多项式的方法,对于任意一个长度为(m+1)的二进制信息码,可以转换成一个最高次幂

文档评论(0)

almm118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档