APP下载

CRC计算实现方法

2018-02-25杨卫平

电子技术与软件工程 2018年9期
关键词:快速

杨卫平

摘要 本文讨论一种通用CRC计算实现方法。该方法采用纯硬件方法实现CRC计算,可灵活配置、计算速度快,无需CPU计算,适用于任意CRC类型、任意CRC生成多项式时的快速CRC计算。

【關键词】CRC 快速 类型可选

1 CRC 计算算简介

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码,它是一类重要的线性分组码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。校验码的具体生成过程为:假设发送信息用信息多项式c(x)表示,将C(x)左移R位,则可表示成C(x)*2的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2的R次方除以生成多项式G(x)得到的余数就是校验码。通信过程中,发送方将K位信息码在前、R位校验码在后拼接的共N位数据发送。

接收方己知接收的数据包含K位DATA信息码与R位CRC校验码。接收方将收到的数据同样处理:假设前K位数据用信息多项式D(X)表示,将D(x)左移R位,则可表示成D(x)+2的R次方,这样D(x)的右边就会空出R位,这就是校验码的位置。通过Dfx)*2的R次方除以生成多项式G(x)得到的余数就是校验码,用R(x)表示。将接收的后R位数据与CRC校验结R(x)系数比较,如果有不一致则说明该笔数据传输有误。

CRC编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制。

2 CRC计算方法分析

同时,本文给出一种CRC计算硬件系统结构,主要包括五个模块。

(1) CONFIG模块。该模块获取配置的信息,包括CRC类型选择配置、生成多项式的配置、CRC初始值的配置、CRC输入数据、输入数据翻转处理配置、CRC计算输出结果异或与翻转处理配置等。该模块的配置与选择,使得电路支持多种多样的CRC计算需求。

(2)CRC JUDGE模块。该模块处理当前CRC类型配置, 如CRC7,CRC8,CRC16,CRC32等,并准备好选定CRC类型的配置数据。

(3) CRC CRTL模块。该模块针对具体选定的CRC类型产生配置数据,并产生时序控制信号。不同CRC类型需要使用不同位宽的CRC移位电路实现,时序控制主要根据n值产生。

(4) SHIFTCALC模块。该模块是数字组合逻辑,实现CRC计算迭代推理,输出迭代计算结果。该模块主要功能如上图2所示,可以实现一个时钟周期内完成多位数据的CRC移位计算,是整个CRC计算硬件电路的核心部分。

(5) RESULT GEN模块。该模块抓取迭代计算结果,并根据配置要求做异或与翻转等处理,最终输出CRC计算结果。该模块完成后,会将计算完成的状态显示出来。

软件使用该硬件系统结构进行CRC计算,操作流程需要与硬件配合。软件操作流程依次为:

(1)配置CONFIG模块以完成CRC初始化:

(2)写入CRC计算输入数据;

(3)触发CRC计算;

(4)等待中断或状态确认CRC计算完成标志;

(5)读取CRC计算结果。

4 实际仿真结果及分析

运用本文推荐快速CRC计算方法与电路,可在一个时钟周期内完成CRC计算,效果如图3所示。在图中,对硬件电路初始化配置后一个时钟周期后便输出RESULT OUT。因此在实际使用过程中,由于硬件电路CRC计算速度之快,软件可以连续写入CRC计算输入数据,或直接使用DMA连续写入CRC计算输入数据,直至CRC计算需求结束,软件直接读取CRC计算结果即可。

5 结论

本文通过公式推理,提出一种CRC计算硬件实现方法,可以灵活、快速的计算得出CRC校验的余数,适用于任意CRC类型、任意C,RC生成多项式时的快速CRC计算。利用该方法,仿真结果显示最快可以在一个时钟周期内完成多bit输入时的并行CRC计算。

参考文献

[1]俞迅.32位CRC校验码的并行算法及硬件实现[J],信息技术,2007 (04): 0071-04.

[2]石林艳,罗汉文.CRC循环冗余校验码并行算法的FPGA实现[J].通信技术及应用,2005 (08).

[3]王新梅,纠错码与差错控制[M].北京:人民邮电出版社,1989.

猜你喜欢

快速
基于拉格朗日有限差分数值模拟的巷道掘进技术研究
芒果农药残留快速检测方法探讨
浅议初中英语阅读能力的培养