在Virtex-5 FPGA芯片中使用CRC硬模块

发布者:MysticGlow最新更新时间:2010-07-01 来源: Xilinx公司关键字:FPGA  Virtex  Xilinx  CRC 手机看文章 扫描二维码
随时随地手机看文章

  数据损坏是与数据传输和存储有关的首要问题。只要是在通道上传输数据,就总会有出现某些错误的有限概率。

  关键是接收模块要能区分无错消息和有错消息。检错有多种方法,其中大多数都是专门为此目的引入冗余位。数据通信中常用的检错方法包括奇偶码、汉明码和循环冗余校验(CRC),其中CRC使用最广泛。

  CRC根据一个给定的数据位组算出,然后在传输或存储之前附加到数据帧尾部。接收或检索到帧后,对其内容重新计算CRC,以此来验证其有效性,确保数据无误。

  本文简述CRC计算所依据的原理,并且探讨用线性反馈移位寄存器实现其硬件的方法。然后,我们把注意力转向Xilinx?VirtexTM-5 LXT/SXT 器件中存在的 CRC 硬模块。

  原理

  加法和减法运算是用模2算法执行;也就是说,这两种运算与“异或”(XOR)运算相同。除了没有进位,多项式算法中的两数相加与普通二进制算法中的多数相加相同。

  例如:二进制消息流11001011表达为x7+x6+x3+x+1。传输点与接收点约定一个固定多项式,称为生成器多项式;这是CRC计算的关键参数。

  将数据解释为一个多项式的系数,用一个给定的生成器多项式除这些系数。除得的余数就是CRC。假设有一个m位消息序列和一个r阶生成器多项式,发射器创建一个n位 (n=m+r)序列,称为帧校验序列 (FCS),使这个(m+r)位合成帧可以被一个预先确定的序列整除。

  发射器将r个0位附加到m位的消息,并且用生成器多项式除所得 m+r-1阶多项式。这样可得到一个阶数等于或小于(r-1)的余数多项式。该余数多项式有r个系数,这些系数形成校验和。将商丢弃。传输的数据是原m位消息后附r位校验和。

  在接收器上,可以按以下两种标准方法之一评估所接收数据的有效性:
  对收到的前m个位再次计算校验和,然后与收到的校验和(收到的后r个位)进行比较。
  对收到的全部(m+r)个位计算校验和,然后与一个0余数进行比较。

  为了说明第二种方法如何得出 0余数,我们做如下约定:
M=消息的多项表达式
R=发射器上所算得余数的多项表达式
G=生成器多项式
Q=用G除M得到的商

  传输的数据对应于多项式    Mxr–R。变量xr表示消息为容纳校验和而产生的一个r位移位。

  我们知道:Mxr=QG+R

  在发射器上将校验和R附加到消息中相当于从消息中减去余数。于是,传输的数据变为Mxr-R=QG,这显然是G的倍数。这就是我们在第二种情况下得到0余数的过程。

  不过,这一过程对所传输数据中首0位和尾0位的个数不敏感。换句话说,无论消息插入还是删除尾0位,余数都保持为0,从而使错误漏检,这表明不会复原成同样的位序列。下面介绍一种克服这一缺点的变通办法。[page]

  剩余法

  实际上,校验和经过反演后才附加到消息中。这就使接收器上算出的余数(超过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 的对应项的系数。图中的编号方框各代表一个存储元件(触发器)。[page]

  CRC模块

    CRC 的硬件实现使用一个简单的 LFSR。这种电路虽然实现起来简单,但对于一个n位数据流来说,要占用n个时钟周期来计算CRC值。在必须以较高速度处理数据帧的高速数据网络应用中,这样的延迟是无法忍受的。这类高速网络应用迫切需要对并行数据流实现CRC生成和校验。

CRC的硬件实现使用一个简单的 LFSR

  Virtex-5 LXT/SXT器件中实现的CRC模块可帮助设计人员加速校验和计算。

  Virtex-5 LXT/SXT器件中的 CRC硬模块基于CRC32多项式。Virtex-5 FPGA含有CRC32和 CRC64 两种硬模块,能以一个时钟周期的延迟为4位和8位数据输出生成CRC。其界面简单易用。硬模块对给定的消息流起着CRC计算器的作用,同时提供一些针对 CRC的参数作为输入。CRC的比较功能已经超出硬模块的范围,应集成到FPGA架构中。

  FPGA 中的每个CRC硬模块异步计算一个32位校验和。

  图2是说明硬模块架构的模块级图。CRC硬模块提供一个位反演和字节反转的输出。

硬模块架构的模块级图

  图3所示为CRC硬模块的应用概况。在发射器上,CRC经计算后附加到给定数据包的尾部。在接收器上,对连带发射器所附加的CRC一起接收到的整个数据包重新计算CRC。

CRC硬模块的应用概况[page]

  所收数据包的有效性用剩余法来确定。对于本例中的CRC32多项式来说,剩余值的计算结果将是十六进制的1CDF4421,这其实就是 C704DDB7的位反演和字节反转值。字节反转和位反演的概念如图4所示。

字节反转和位反演

  图5所示为正常CRC运算的波形

正常CRC运算的波形

  我们还提供一个LogiCORETM CRC 向导,其中为 Virtex-5 器件中的CRC硬模块提供一个LocalLink封装。其内核还提供了一个说明如何使用 CRC 硬模块的设计实例。此外,内核提供了各种选项,如流水线处理、补数计算和转置。

  结论

  Xilinx FPGA中的CRC模块使设计人员能够轻松地将检错机制加入到各种设计中。可以用CORE GeneratorTM软件中提供的CRC Wizard IP加入符合不同协议(如 Aurora 和 PCI Express)的检错功能。

关键字:FPGA  Virtex  Xilinx  CRC 引用地址:在Virtex-5 FPGA芯片中使用CRC硬模块

上一篇:基于FPGA和Verilog的液晶显示控制器设计
下一篇:基于FPGA的数字音频广播信道编码器的实现

推荐阅读最新更新时间:2024-05-02 21:05

FPGA技术在软件无线电模型中的应用
摘 要 本文首先建立了单信道的软件无线电数学模型,分析比较了FPGA、ASIC以及DSP设计方式的优缺点,并深入研究了FPGA技术在软件无线电中的应用。 关键词 现场可编程门阵列 上/下变频器 DA算法 1 引言   软件无线电的基本思想是:A/D、D/A变换器尽可能地接近天线,用软件来完成尽可能多的无线电台的功能1软件无线电的结构大致分为三种:射频低通采样数字化结构、射频带通采样数字化结构和宽带中频采样数字化结构。   对于前两种方式,由于是对射频信号直接进行采样,结构简洁,并把模拟电路部分减小到最低限度,无疑是最理想的方式,但这种结构不仅对A/D转换器的性能如转换速率、工作带宽、动态范围提出了非常高的要
[嵌入式]
<font color='red'>FPGA</font>技术在软件无线电模型中的应用
Altera首次利用Intel EMIB技术成功实现DRAM和FPGA的异构
Altera公司日前公开业界第一款异构系统级封装(SiP,System-in-Package)器件,集成了来自SK Hynix的堆叠宽带存储器(HBM2)以及高性能Stratix 10 FPGA和SoC。Stratix 10 DRAM SiP代表了新一类器件,其特殊的体系结构设计满足了高性能系统对存储器带宽最严格的要求。 该器件利用Intel的EMIB技术,实现了DRAM与FPGA的互联互通问题。EMIB技术采用高性能、高密度硅片短桥接在单个封装中将多个管芯连接起来。EMIB技术的管芯之间走线非常短,支持Altera以高性价比方式构建异构SiP器件,与基于中介层的解决方案相比,性能更好,吞吐量更大,而功耗更低。早在2
[嵌入式]
基于FPGA的AD9910控制设计
随着数字信号处理和集成电路的发展,要求数据处理速度越来越高,基于单片机+DDS(直接数字频率合成)的频率合成技术已不能满足目前数据处理速度需求。针对这一现状,本文提出了基于FPGA+DDS的控制设计,能够快速实现复杂数字系统的功能。 1 AD9910的硬件电路设计 AD9910是ADI公司推出的一款单片DDS器件,内部时钟频率高达1GHz,模拟输出频率高达400 MHz,14-bit的DAC,最小频率分辨率为0.23 Hz,相位噪声小于-125 dBc/Hz@1 kHz(400 MHz),窄带无杂散动态范围大于80 dB,串行I/O控制,具有自动线性和随机的频率、相位和幅度扫描功能,1 024 32位RAM,具有调幅、调相的
[工业控制]
基于<font color='red'>FPGA</font>的AD9910控制设计
基于FPGA的USB2.0控制器设计
摘要:介绍了一种用VHDL设计USB2.0功能控制器的方法,详术了其原理和设计思想,并在FPGA上予以实现。 关键词:USB VHDL FPGA 在视频存储和图像宽带领域中,经常遇到实时高速数据传输的要求。2000年4月,由Intel、Microsoft、NEC、Compaq、Lucent、Phillips等公司共同制订的USB2.0(Universal Serial Bus)传输协议,其速度远远超过了目前使用IEEE1394接口进行视频传输的400Mbps,达到了480Mbps;而且具有即插即用的PnP(Plug And Play)、 可进行菊花链式的级联(通过USB HUB进行外围扩展)、可串连多达127个USB设备等
[应用]
解析FPGA低功耗设计
  在项目设计初期,基于硬件电源模块的设计考虑,对FPGA设计中的功耗估计是必不可少的。笔者经历过一个项目,整个系统的功耗达到了100w,而单片FPGA的功耗估计得到为20w左右,有点过高了,功耗过高则会造成发热量增大,温度高最常见的问题就是系统重启,另外对FPGA内部的时序也不利,导致可靠性下降。其它硬件电路的功耗是固定的,只有FPGA的功耗有优化的余地,因此硬件团队则极力要求笔者所在的FPGA团队尽量多做些低功耗设计。笔者项目经历尚浅,还是第一次正视功耗这码事儿,由于项目时间比较紧,而且xilinx方面也比较重视这个项目,因此当时有Xilinx的工程师过来对我们做了些培训,并且专门请了美国总部的专家过来与我们协同进行设计功耗估
[电源管理]
解析<font color='red'>FPGA</font>低功耗设计
享誉业界学界的2022年SuperComputing(SC22)又要来了
享誉业界学界的2022年SuperComputing(SC22)又要来了,基于FPGA的硬件数据处理加速器值得关注 11月13-18日,全球极具影响力的高性能计算专业会议“International Conference on High-performance Computing, Networking, Storage and Analysis (SC22)” 将在美国德克萨斯州达拉斯市Kay Bailey Hutchison Convention Center举办。 随着大数据、人工智能、异构计算和计算存储等新技术的兴起,该活动已从传统的高性能计算转向更广阔的领域,因而继续保持着业界最具影响力活动之一的地位。 由IE
[嵌入式]
享誉业界学界的2022年SuperComputing(SC22)又要来了
基于FPGA和DSP技术的某型飞机总线系统通讯软件设计方案
在分析某型飞机MILSTD1553B数据总线系统构成的基础上,结合其通信协议与其消息传输格式,建立了某型飞机总线系统通讯层次结构,并运用FPGA和DSP技术设计了此型飞机总线系统通讯软件。 目前,随着工艺和技术的进步,集成电路技术的发展已经使得在一个芯片上集成一个可编程系统(Programmable System On a Chip,PSOC)成为可能。其中,现场可编程门阵列(Field Programmable Gate Array,FPGA)由于其设计灵活、速度快,在数学专用集成电路的设计中得到广泛的应用。数字信号处理(DSP)的理论与实现手段获得了快速发展,已成为当代发展最快的学科之一。由于其高速的处理速度和强大而又灵活的接
[嵌入式]
基于<font color='red'>FPGA</font>和DSP技术的某型飞机总线系统通讯软件设计方案
莱迪思推MachXO2系列超低密度FPGA控制开发套件
    莱迪思半导体公司近日宣布推出MachXO2™系列超低密度 FPGA 控制开发套件,适用于低成本的复杂系统控制和视频接口设计的样机开发。新加入了MachXO2-4000HC器件,包括4320个查找表(LUT)的可编程逻辑和222 Kbit片上存储器,满足了通信、计算、工业、消费电子和医疗市场所需的系统控制和接口应用。 工程师们可以将MachXO2控制开发套件用作一种低成本、全功能的开发平台,用于系统控制功能的开发,如电源定序和监控、复位分配和数据记录。该套件带有内置的DVI和7:1 LVDS(Camera Link)视频输入和输出连接器,也是视频接口和处理设计的理想选择。控制套件通过在每块板上提供更多的传感器、执行器
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved