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

星座频道 2020-05-2393未知admin

  随着通信和存储技术的发展,数据传输速率在急剧提高。然而由于通道传输特性不理想及可能受到干扰或噪声的影响,数据传输过程中难免会发生错误。如何可靠性是正确设计一个通信系统或数据存储系统的关键问题所在。

  信道编码是提高可靠性的必要手段,实现检错功能的差错控制方法很多,crc校验算法包括奇偶校验、重复码校验、校验和检测、行列冗余码校验、恒比码校验、CRC校验等。其中CRC循环冗余校验是一种高效率的差错控制方案,其特点是编码和解码的方法简单、检错纠错能力强,因而应用于许多领域尤其是串行通信中以实现差错控制。

  CRC循环校验算法占用的系统资源少,其实现方法分为软件实现和硬件实现。文中在研究CRC32算法的基础上,结合SATAⅡ协议的具体要求,实现了基于FPCA的CRC32并行算法。

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

  由于求CRC校验码采用模2加减运算,即不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,crc校验算法加法和减法在逻辑上是等价的。在模2多项式代数运算中定义的规则有:

  式中R(x)即为要求的CRC校验码,xrk(x)+R(x)为发送端向接收端所发送的加入了CRC校验码的信息码,由式(6)可知xrk(x)+R(x)能够被生成多项式G(x)所整除。故接收端对接受到的信息以同样的生成多项式G(x)生成其CRC校验码,如果为0,则表示数据传送过程中未出错,否则出错,应做出相应的处理。

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

原文标题:crc校验算法基于SATAII协议的CRC32并行算法的研究 网址:http://www.gunfollow.com/xingzuopindao/2020/0523/26166.html

Copyright © 2002-2020 脚踏实地新闻网 www.gunfollow.com 版权所有  

联系QQ:1352848661