关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于SATAII协议的CRC32并行算法的研究

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

作者:时间:2012-12-20来源:网络收藏

摘要:在介绍CRC校验原理和传统串行比特算法的基础上,由串行比特型算法推导出一种、并结合Ⅱ协议的要求,完成了Ⅱ主控制器设计中CRC生成与校验模块的设计。最后通过在ISE平台上编写硬件描述语言,对协议中帧结构数据进行仿真,验证该能够满足SATA接口实时处理的要求。
关键词:CRC32;;SATA;

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

1 CRC校验原理
CRC校验算法是利用线性编码理论,发送方根据一定的规则,生成要传送的n位信息码的r位校验码(CRC码),并将校验码附在信息码后面,最后发送(n+r)位二进制系列。而接收方利用信息码和校验码之间所遵循的同样规则对接受到的二进制系列进行校验,以判断传送中是否出错。为了便于描述,n位信息码用多项式k(x)表示:
b.JPG
由于求CRC校验码采用模2加减运算法则,即不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法在逻辑上是等价的。在模2多项式代数运算中定义的规则有:
c.JPG
式中R(x)即为要求的CRC校验码,xrk(x)+R(x)为发送端向接收端所发送的加入了CRC校验码的信息码,由式(6)可知xrk(x)+R(x)能够被生成多项式G(x)所整除。故接收端对接受到的信息以同样的生成多项式G(x)生成其CRC校验码,如果为0,则表示数据传送过程中未出错,否则出错,应做出相应的处理。

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

本文引用地址:http://www.eepw.com.cn/article/159619.htm

e.JPG


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭