Xilinx社区
首页 > 技术文章 > 在Virtex-5 FPGA芯片中使用CRC硬模块
技术文章
在Virtex-5 FPGA芯片中使用CRC硬模块
来源:网络  时间:2010-07-01  浏览量:3255

  剩余法

  实际上,校验和经过反演后才附加到消息中。这就使接收器上算出的余数(超过m+r位)不为0。在这类情况下,接收器上得到的余数是一个固定值,称为多项式的剩余值。

  做一点演算有助于更清楚地说明这一概念。

  假定%符号在下列表达式中表示模运算。

  对于未经反演附加校验和的情况:
(Mxr–R)xr%G=0

  在这种情况下,接收器会执行与发射器一样的移位运算。

  现在,考虑校验和在发射器上经反演后附加到消息流的情况: (Mxr–Rc)xr% G
其中,Rc表示经过反演的校验和。

  还可以将其写成:(Mxr– R +(xr-1+...+x+ 1)) xr% G

  一个位的反码与其对1异或运算的结果相同。这里的+号表示模2算法中的加法(另请注意,在模2算法中,加法和减法运算相同)。

  在这种情况下,余数与以下表达式相同:(xr-1+...+x+1) xr% G

  对于给定的生成器多项式来说,此表达式的计算结果将是一个常数。

  最常用的CRC 32生成器多项式是G(x) = x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1

  该式在十六进制中是04C11DB7。

  与CRC-32对应的常数剩余值在十六进制中是C704DD7B。对于给定的生成器多项式G来说,无论在输入端提供何种数据样式,剩余值仍为常数。

  硬件实现

  CRC校验和的计算是多项式除法过程。在硬件中实现该过程需要使用一个移位寄存器(亦称CRC寄存器)。该移位寄存器的长度与生成器多项式的阶数相同。

  CRC 计算过程如下:

1.初始化CRC寄存器。
2.持续获取消息位,直到获得所有消息位。如果CRC寄存器中的高阶位是1,则向左移一位,并且将其结果与G进行异或运算。否则,仅向左移一位。

  对给定消息完成所有这些步骤后,CRC寄存器中剩 下的就是余数。


  可以用一种称为线性反馈移位寄存器(LFSR)的电路执行这些步骤。图1所示为用CRC32多项式计算 CRC 的 LFSR 实现方法。请注意,异或门的布局取决于生成器多项式中项值为 1 的对应项的系数。图中的编号方框各代表一个存储元件(触发器)。

热点文章
精选视频
推荐资源

中国授权培训机构

北京 电话:(010)82757632
      (010) 62192881
深圳 电话:(0755)86186715
武汉 电话:(027)61389792
成都 电话:(028)80821007
南京 电话:(025)66022032
西安 电话:(029)82230498
邮箱:sales@e-elements.com

中国授权经销商

香港 电话:(852)22127848
北京 电话:(010)84148118
成都 电话:(028)86528262
上海 电话:(021)33678387
深圳 电话:(0755)26584925
武汉 电话:(027)87322806
邮箱:china@avent.com
深圳 电话:(0755)26743210
上海 电话:(021)51696680
北京 电话:(010)51726678
成都 电话:(028)85139576
武汉 电话:(027)87690155
邮箱:
xilinx_enquiry@comtech.com.cn

社区主办


《电子产品世界》杂志社

内容提供


    赛灵思公司

Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052