基于SATAII协议的CRC32并行算法的研究

发布者:sky0001最新更新时间:2013-01-07 来源: 现代电子技术 关键字:CRC32  并行算法  SATA  Verilog 手机看文章 扫描二维码
随时随地手机看文章

    随着通信和存储技术的发展,数据传输速率在急剧提高。然而由于通道传输特性不理想及可能受到干扰或噪声的影响,数据传输过程中难免会发生错误。如何保证可靠性是正确设计一个通信系统或数据存储系统的关键问题所在。
    信道编码是提高可靠性的必要手段,实现检错功能的差错控制方法很多,包括奇偶校验、重复码校验、校验和检测、行列冗余码校验、恒比码校验、CRC校验等。其中CRC循环冗余校验是一种高效率的差错控制方案,其特点是编码和解码的方法简单、检错纠错能力强,因而应用于许多领域尤其是串行通信中以实现差错控制。
    CRC循环校验算法占用的系统资源少,其实现方法分为软件实现和硬件实现。文中在研究CRC32算法的基础上,结合SATAⅡ协议的具体要求,实现了基于FPCA的CRC32并行算法。

1 CRC校验原理
    CRC校验算法是利用线性编码理论,发送方根据一定的规则,生成要传送的n位信息码的r位校验码(CRC码),并将校验码附在信息码后面,最后发送(n+r)位二进制系列。而接收方利用信息码和校验码之间所遵循的同样规则对接受到的二进制系列进行校验,以判断传送中是否出错。为了便于描述,n位信息码用多项式k(x)表示:

    由于求CRC校验码采用模2加减运算法则,即不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法在逻辑上是等价的。在模2多项式代数运算中定义的规则有:
   
    式中R(x)即为要求的CRC校验码,xrk(x)+R(x)为发送端向接收端所发送的加入了CRC校验码的信息码,由式(6)可知xrk(x)+R(x)能够被生成多项式G(x)所整除。故接收端对接受到的信息以同样的生成多项式G(x)生成其CRC校验码,如果为0,则表示数据传送过程中未出错,否则出错,应做出相应的处理。

2 CRC32算法介绍
   
CRC32规范中其生成多项式G(x)如下:
   
    常用的CRC校验码生成算法包括串行比特型算法、查表型算法和并行算法。串行比特型算法主要由一个32比特移位寄存器和异或单元组成。每输入一位串行数据,都会与移位寄存器中相应的位进行异或,异或结果保存在相应的位中,并循环移位一位,直到32位串行数据输入完毕,再进行32次循环移位将每一位寄存器中的数据依次输出,输出的32位数据即为CRC32校验值。其硬件实现框图如图1所示。

[page]

    串行比特型算法可以很容易通过带反馈的移位寄存器的硬件实现,其吞吐率可以达到200 Mbps,但是远远不能达到高速通信系统的要求。
    对于查表法生成CRC校验码,要预先汁算好所要的有效信息位,并存放信息位表中,然后按信息位的顺序计算好所有校验位,并存放于表中,待要使用时通过查表输出对于的CRC校验值。但这种方法需要较大的存储空间存储长度较大的CRC余数表,并且随着并行位数的增加,余数表的长度按指数增加,对于CRC32规范也不具有现实性。
    因此,SATA协议中需采用并行CRC32算法以达到3 Gbps的吞吐率。

3 CRC32并行算法推导
   
CRC32并行算法可由串行比特型算法推导而出。
    令需进行校验的32位数据以Q0表示,32位移位寄存器初始值用M0表示即:
    Q0=[D0D1D2D3…D31]T       (8)
    M0=[C0C1C2C3…C31]T       (9)
    自反馈的移位运算可以采用状态转移矩阵表示,i+1次移位后寄存器的状态Qi+1与i次移位后寄存器的状态Qi之间的关系可通过状态矩阵A表示为:Qi+1=AQi,进一步又可得到第i次的状态Qi可通过初始状态Q0表示为:
   
    式中状态转移矩阵A可由式(7)和CRC32串行实现框图推导得到。首先32位数据串行输入,与移位寄存器相关位中的初始值进行模2加减运算,32次移位后数据输入完毕,即:
   
    然后再进行32次移位,移位寄存器中的内容即为所求的CRC校验值,则:
   
    由式(13)可知:CRC校验值只与CRC校验初始值M0和需校验数据Q0有关,其中A64和A32可以由MATLAB计算得出。通过计算,可以得出CRC校验最高位为:
   

4 SATA协议中CRC32算法实现
    SATA总线主要由应用层、传输层、链路层和物理层组成,其中传输层主要用于传输数据命令,链路层则是对数据进行编码和解码以保证数据在链路中正确传输。SATA总线链路中的信息包含两种结构:原语(Primitive)和帧(Frame),两者都以双字为最小的单位,其结构如图2所示。


    帧结构由多个双字组成,包括帧头(SOF)、帧数据、帧尾(EOF)和用于控制码流的控制原语HOLD原语和HOLDA原语。SATA协议中CRC校验模块需自动识别出数据流中的原语,并不计算这些原语的CRC值。在发送信息时,需要由帧数据生成CRC码,即所有非原语数据都要进行CRC编码,并且将生成的CRC值插入到帧尾(EOF)之前进行传输。在接受到数据时,需要对帧数据进行CRC校验,从而判断数据在链路中传输是否出错。在SATA协议中规定CRC校验初始值0x52325032,并且在帧头和帧尾中的数据不能超过2 046个双字。

[page]

    SATA协议中CRC生成校验模块采用有限状态机来识别传输数据流中的原语,从而完成CRC值的生成与校验。其状态机结构图如图3所示。


    其中状态STATE0检测帧头并装入STATE1状态;在STATE1中,当输入数据为帧尾时,则转入STATE3状态,否则转入STATE2状态,在STATE1状态下输出帧头,并设置CRC初始值为0x52325032h;在STATE2中,当输入为帧尾时,则转入STATE3状态,否则转入STATE2状态,对非原语数据进行CRC值生成,并保存到寄存器中,输出为数据或保持原语;在STATE3中输出最终的CRC值,并转入STATE4状态;在STATE4中输出帧尾,并转入STATTE0状态等待下一次数据的输入。
    输入一帧数据,并由式(14)进行计算,得出输入数据对应的CRC计算值如表1所示。

    其对应的系统仿真结果如图4所示。
    仿真结果显示,CRC数据校验与表1中的理论值一致,CRC生成模块能够自动识别数据流中的原语和数据,并能有数据生成正确的CRC校验值。其中每双字数据生成CRC值仅需一个时钟周期,系统输出延时仅为一个时钟周期,相对于串行CRC生成算法,CRC32并行算法更能满足SATA协议对时钟频率的要求。

5 结束语
   
文中介绍了CRC校验原理和常用CRC32实现算法,并根据比特型算法推导出一种CRC32并行算法的实现方案,该方案实现简单,实现的并行算法相对于串行算法具有速度快,运算简单,并且易于硬件实现等优点。本文还将将CRC32并行算法与SATA协议相结合,实现了满足SATA协议规范的CRC生成和校验模块,并成功应用于SATAⅡ主控制器的设计中。

关键字:CRC32  并行算法  SATA  Verilog 引用地址:基于SATAII协议的CRC32并行算法的研究

上一篇:基于PROFIBUS-DP的变频控制在冷凝水回收中的应用
下一篇:基于物联网技术的中央空调管控一体化系统

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

Verilog按键消抖的理解
按键在按下时会产生抖动,释放时也会产生抖动,所以在设计键盘扫描程序时必须考虑按键的消抖,我们一般只考虑按下时的抖动,而放弃对释放时抖动的消抖。抖动时间一般为20ms左右。按下的最终结果是低电平。 在单片机设计的的按键去抖思路是:检测到按下时延时20ms,再检测,如果状态仍为按下,则确认是按下的;如果状态为弹起的,则确认是干扰,无按键按下。 图1 按键抖动特性 有一个概念要理一下,按键按下时会有抖动,也就是说我们其实只按一次,但是实际产生的“按下”却是许多次的,这些许多次集中在这20ms里。我们按的只是一次,而实际却产生了许多次,那么就必须滤除其他的次数。单片机为了得到真正的“按下”,通过延时20ms,把其他的“按下”(也
[单片机]
<font color='red'>Verilog</font>按键消抖的理解
基于Verilog HDL设计的自动数据采集系统
摘要:介绍了一种采用硬件控制的自动数据采集系统的设计方法,包括数字系统自顶向下的设计思路、Verilog HDL对系统硬件的描述和状态机的设计以及MAX+PLUSII开发软件的仿真。设计结果表明:该采集系统具有很高的实用价值,极大地提高了系统的信号处理能力。 关键词:可编程逻辑器件 Verilog HDL FIFO FSM 随着数字时代的到来,数字技术的应用已经渗透到了人类生活的各个方面。数字系统的发展在很大程度上得益于器件和集成技术的发展,著名的摩尔定律(Moore"s Law)的预言也在集成电路的发展过程中被印证了,数字系统的设计理念和设计方法在这过程中发生了深刻的变化。从电子CAD、电子CAE到电子设计自动化(EDA),随着设
[半导体设计/制造]
赫联电子新增美国Sensata Technologies供应商
赫联电子(Heilind Electronics)日前宣布进一步扩展其现有产品线,新增美国Sensata Technologies为供应商。Sensata Technologies是世界传感器和控制器设计及制造领域的领先者。 Sensata Technologies的产品在全球应用范围极为广泛,包括:家用电器、汽车、电气设备、暖通及空调设备、工业设备、军事防御和交通运输工具等。赫联电子将主要向市场供应Sensata Technologies的压力开关、传感器等互连产品。Heilind亚太区产品市场经理Forlers Zhang表示:“我们很高兴与Sensata Technologies合作,这将加强赫联亚太为市场供应开关及传
[传感器]
赫联电子新增美国Sen<font color='red'>sata</font> Technologies供应商
verilog PS2键盘解码程序
之前探讨过PS/2键盘编解码以及数据传输协议,这次自己动手实现了利用FPGA接收键盘编码,然后通过串口传输到PC。做的比较简单,只是通过FPGA把大写字母A-Z转换成相应的ASCII码,只要字母按键被按下,就能在串口调试助手里显示相应大写字母。下面就共享代码吧! 除了顶层模块,三个底层模块分别为PS/2传输处理模块、串口传输模块以及串口波特率选择模块(下面只给出顶层模块和PS/2传输处理模块的verilog代码)。 module ps2_key(clk,rst_n,ps2k_clk,ps2k_data,rs232_tx); input clk; //50M时钟信号 input rst_n; //复位信号 input ps2k_
[单片机]
eSATA接口的发展及未来
从目前的情况来看,这种技术还是相当有实际意义的,包括希捷在内的多家存储厂商都已经把自己的重点开始向外置式硬盘产品上转移,要知道全新的外置式eSATA传输技术可以将数据传输速度提升至现有USB2.0接口的5倍之多。 而在05年的CES2006上,全球著名的存储巨头希捷Seagate也展示其最新的eSATA按键备份系列。希捷的500GB eSATA按键备份硬盘—以内置的速度(最高达300MB/秒的接口速率)提供外置的数据备份和保护,与现有的USB 2.0、1394a等外置存储解决方案相比,其速度提高了5倍之多。此款500GB eSATA硬盘将于2006年第二季度发货。此外,目前已经有部分主板具备eSATA接口,包括低价的华擎775
[模拟电子]
e<font color='red'>SATA</font>接口的发展及未来
STM32的硬件CRC32使用
最近用到STM32的CRC32模块,看一下官网的Lib,感觉用起来十分简单.但是,你会发现直接使用起来会出现,与很多在线CRC32的网站或者PC端的CRC32校验工具计算结果不一致! 简直就是无语...... 搜索了一下,在21IC的论坛上面有关使用STM32的CRC32的大讨论,不过是09年的帖子.主要定论是STM32的CRC32与目前大多数的PC端软件使用的一些数据顺序及方法不一致.这里主要推荐看一下这个链接: STM32内置CRC模块的使用 讨论的很火. 如果真如,那帖子说的那样.那么作为MCU这端,是有必要进行转换,要适应潮流.当然这里不是说ST不好. 按照帖子的结论: 1、每个字节的位序相反。stm32f是按32位,高位
[单片机]
STM32的硬件<font color='red'>CRC32</font>使用
Verilog HDL实现I2C总线功能
摘要:简述了I2C总线的特点;介绍了开发FPGA时I2C总线模块的设计思想;给出并解释了用Verilog HDL实现部分I2C总线功能的程序,以及I2C总线主从模式下的仿真时序图。 关键词:I2C总线 FPGA Verilog HDL 时序 开发FPGA时,利用EDA工具设计芯片实现系统功能已经成为支撑电子设计的通用平台,并逐步向支持系统级的设计方向发展。在软件设计过程中,越来越强调模块化设计。I2C总线是Philips公司推出的双向两线串行通讯标准,具有接口线少、通讯效率高等特点。把I2C总线设计成相应的模块,有利于相关FPCA的开发。 目前有一些介绍相关开发的资料,但都是利用VHDL语言或AHDL语言实现的。本文给出利用V
[应用]
泰克全自动SATA一致性测试套件
  泰克日前推出新的TekExpress™一致性自动测试平台和新的TekExpress SATA自动一致性测试软件。TekExpress SATA在TekExpress平台上运行,利用经过认证的泰克串行数据高性能仪器套件,对接收机、发射机和互连百分之百地自动执行SATA Gen-1和SATA Gen-2一致性测试。TekExpress一致性自动测试平台是为单键自动测试高速串行标准开发的,TekExpress平台基于National Instruments的TestStand之上,后者作为序列控制引擎使用。   TekExpress SATA使用运行Windows XP的计算机就可进行控制,可以有效执行SATA-IO工作组认证的实
[测试测量]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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