平码五不中公式规律
  • / 10
  • 下载费用:30 金币  

一种多级流水电路实现并行CRC的方法.pdf

关 键 ?#21097;?/dt>
一种 多级 流水 电路 实现 并行 CRC 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201910028840

申请日:

20190111

公开号:

CN109462458A

公开日:

20190312

当前法律状态:

实质审查的生效

?#34892;?#24615;:

审中

法?#19978;?#24773;: 实质审查的生效
IPC分类号: H04L1/00 主分类号: H04L1/00
申请人: 深圳市常茂信科技开发有限公司
发明人: 李湘琼;路远;褚艳;李玲
地址: 518000 广东省深圳市宝安区西乡街道海城路235号泰逸大厦F4-013房
优先权:
专利代理机构: 代理人:
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201910028840

授权公告号:

法律状态公告日:

20190405

法律状态类型:

实质审查的生效

摘要

一种多级流水电路实现并行CRC的方法,将每一个时钟周期输入的16?#32440;?#25968;据拆分为第一个8?#32440;?#19982;第二个8?#32440;?#25968;据块;每一个时钟周期的第一个8?#32440;?#21644;第二个8?#32440;?#20998;别使用CRC32模块计算8?#32440;?#30340;CRC32结果;8?#32440;?#31227;位计算模块将第一个8?#32440;贑RC32模块的计算结果进行64次迭代移位;迭代移位64次的结果与直接8?#32440;贑RC32计算进行异或操作,得到第一个时钟周期16个?#32440;?#30340;CRC32结果;16?#32440;?#31227;位计算模块将第一个时钟周期16个?#32440;?#30340;CRC32结果进行128次迭代移位,每一个时钟周期16?#32440;?#30340;CRC32结果与上一个时钟周期16?#32440;?#30340;CRC32结果经过128次迭代移位之后的结果进行异或操作,得到当前时钟周期最终的CRC32结果。去掉了LFSR的反馈环路,从而可以插入多级流水,增大系统数据吞吐?#30465;?/p>

权利要求书

1.一种多级流水电路实现并行CRC的方法,其特征在于,包括以下?#34903;瑁?S1、将每一个时钟周期输入的16?#32440;?#25968;据拆分为第一个8?#32440;?#19982;第二个8?#32440;?#25968;据块; S2、每一个时钟周期的第一个8?#32440;?#21644;第二个8?#32440;?#20998;别使用CRC32模块计算8?#32440;?#30340;CRC32结果; S3、8?#32440;?#31227;位计算模块将第一个8?#32440;贑RC32模块的计算结果进行64次迭代移位; S4、迭代移位64次的结果与直接8?#32440;贑RC32计算进行异或操作,得到第一个时钟周期16个?#32440;?#30340;CRC32结果; S5、16?#32440;?#31227;位计算模块将第一个时钟周期16个?#32440;?#30340;CRC32结果进行128次迭代移位; S6、每一个时钟周期16?#32440;?#30340;CRC32结果与上一个时钟周期16?#32440;?#30340;CRC32结果经过128次迭代移位之后的结果进行异或操作,得到当前时钟周期最终的CRC32结果。 2.根据权利要求1所述的一种多级流水电路实现并行CRC的方法,其特征在于,还包括以下模块: 1)CRC初值选择器; 2)8?#32440;贑RC32计算模块; 3)8?#32440;?#31227;位迭代模块; 4)16?#32440;?#36845;代移位计算模块; 5)三输入异或门; 所述CRC初值选择器和8?#32440;贑RC32计算模块电连接,8?#32440;贑RC32计算模块通过D型触发器与8?#32440;?#31227;位迭代模块电连接,所述8?#32440;贑RC32计算模块与D型触发器电连接,并且D型触发器和8?#32440;?#31227;位迭代模块均与三输入异或门电连接,所述三输入异或门还与16?#32440;?#36845;代移位计算模块和D型触发器循环电连接。

说明书


一种多级流水电路实现并行CRC的方法
技术领域


本发明涉及电子信息技术领域,具体为一种多级流水电路实现并行CRC的方法。


背景技术


目前CRC算法已广泛应用于通信领域,作为数据保护的一种方式。CRC算法在?#24067;?br>电路上一般通过LFSR来实现,有串行和并行两种方法,但LFSR在电路结构上都存在一个反
馈环路,无法通过插入多级流水线以提高运行频率,尤其当使用并行方式实现CRC算法,且
数据位宽较大时,组?#19979;?#36753;可达到30级以上,由于无法插入流水线分割组?#19979;?#36753;,因此电路
运行频率不能?#34892;?#25552;高。


发明内容


(一)解决的技术问题


针对现有技术的不足,本发明提供了一种多级流水电路实现并行CRC的方法,具备可以
插入多级流水分割组?#19979;?#36753;,提高电路运行频率,达到增大系统吞吐?#23454;?#30446;标等优点,解决
了现有使用LFSR电路实现CRC算法无法插入多级流水从而无法提高电路运行频?#23454;?#38382;题。


(二)技术方案


为实现上述可以插入多级流水分割组?#19979;?#36753;,提高电路运行频率,达到增大系统吞吐
?#23454;?#30446;标等目的,本发明提供如下技术方案:一种多级流水电路实现并行CRC的方法,包括
以下?#34903;瑁?br>

S1、将每一个时钟周期输入的16?#32440;?#25968;据拆分为第一个8?#32440;?#19982;第二个8?#32440;?#25968;据块;


S2、每一个时钟周期的第一个8?#32440;?#21644;第二个8?#32440;?#20998;别使用CRC32模块计算8?#32440;?#30340;
CRC32结果;


S3、8?#32440;?#31227;位计算模块将第一个8?#32440;贑RC32模块的计算结果进行64次迭代移位;


S4、迭代移位64次的结果与直接8?#32440;贑RC32计算进行异或操作,得到第一个时钟周期
16个?#32440;?#30340;CRC32结果;


S5、16?#32440;?#31227;位计算模块将第一个时钟周期16个?#32440;?#30340;CRC32结果进行128次迭代移
位;


S6、每一个时钟周期16?#32440;?#30340;CRC32结果与上一个时钟周期16?#32440;?#30340;CRC32结果经过
128次迭代移位之后的结果进行异或操作,得到当前时钟周期最终的CRC32结果。


本发明还包括以下模块:


1)CRC初值选择器;根据当前输入数据是否为第一个8?#32440;冢?#36873;择CRC初始值为32'
hFFFF_FFFF或者32'h0000_0000;


2)8?#32440;贑RC32计算模块;用于计算8?#32440;?#25968;据的CRC32结果;


3)8?#32440;?#31227;位迭代模块;将8?#32440;贑RC32计算结果进行64次迭代移位;


4)16?#32440;?#36845;代移位计算模块;将16?#32440;贑RC32计算结果进行128次迭代移位;


5)三输入异或门;将三个CRC32结果进行异或操作。


所述CRC初值选择器和8?#32440;贑RC32计算模块电连接,8?#32440;贑RC32计算模块通过D型
触发器与8?#32440;?#31227;位迭代模块电连接,所述8?#32440;贑RC32计算模块与D型触发器电连接,并且D
型触发器和8?#32440;?#31227;位迭代模块均与三输入异或门电连接,所述三输入异或门还与16?#32440;?br>迭代移位计算模块和D型触发器循环电连接。


(三)有益效果


与现有技术相比,本发明提供了一种多级流水电路实现并行CRC的方法,具备以下有益
效果:该多级流水电路实现并行CRC的方法,去掉了LFSR的反馈环路,从而可以插入多级流
水,提高电路运行频率,增大系统数据吞吐?#30465;?br>

附图说明


图1为本发明LFSR电路框图;


图2为本发明一般数据块拆分示意图;


图3为本发明第i个时钟周期的16?#32440;?#25968;据拆分示意图;


图4为本发明第i个时钟周期和第i+1个时钟周期的32?#32440;?#25968;据拆分示意图;


图5为本发明电路实现框图。


图中:1-反馈系数,2-CRC状态寄存器,3、4-异或门,5-原始数据块M(x),6-拆?#20013;?br>数据块M1(x),7-拆?#20013;?#25968;据块M2(x),8-拆?#20013;?#25968;据块M3(x),9-拆?#20013;?#25968;据块Mm(x),10-原
始16?#32440;?#25968;据块,11、12、14、15-拆分后的小数据块,13-原始32?#32440;?#25968;据块,16-CRC初值选
择器,17-8?#32440;贑RC32计算模块,18、21、23-D型触发器,19-8?#32440;?#31227;位迭代模块,20-8?#32440;?br>CRC32计算模块,22-16?#32440;?#36845;代移位计算模块,24-三输入异或门。


具体实施方式


下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提?#28388;?#33719;得的所有其他
实施例,都属于本发明保护的范围。


一种多级流水电路实现并行CRC的方法,包括以下?#34903;瑁?br>

S1、将每一个时钟周期输入的16?#32440;?#25968;据拆分为第一个8?#32440;?#19982;第二个8?#32440;?#25968;据块;


S2、每一个时钟周期的第一个8?#32440;?#21644;第二个8?#32440;?#20998;别使用CRC32模块计算8?#32440;?#30340;
CRC32结果;


S3、8?#32440;?#31227;位计算模块将第一个8?#32440;贑RC32模块的计算结果进行64次迭代移位;


S4、迭代移位64次的结果与直接8?#32440;贑RC32计算进行异或操作,得到第一个时钟周期
16个?#32440;?#30340;CRC32结果;


S5、16?#32440;?#31227;位计算模块将第一个时钟周期16个?#32440;?#30340;CRC32结果进行128次迭代移
位;


S6、每一个时钟周期16?#32440;?#30340;CRC32结果与上一个时钟周期16?#32440;?#30340;CRC32结果经过
128次迭代移位之后的结果进行异或操作,得到当前时钟周期最终的CRC32结果。


本发明还包括以下模块:


1)CRC初值选择器;根据当前输入数据是否为第一个8?#32440;冢?#36873;择CRC初始值为32'
hFFFF_FFFF或者32'h0000_0000(如图5中的16所示);


2)8?#32440;贑RC32计算模块;用于计算8?#32440;?#25968;据的CRC32结果(如图5中的20所示);


3)8?#32440;?#31227;位迭代模块;将8?#32440;贑RC32计算结果进行64次迭代移位(如图5中的19所
示);


4)16?#32440;?#36845;代移位计算模块;将16?#32440;贑RC32计算结果进行128次迭代移位(如图5中的
22所示);


5)三输入异或门;将三个CRC32结果进行异或操作(如图5中的24所示)。


上述CRC初值选择器和8?#32440;贑RC32计算模块电连接,8?#32440;贑RC32计算模块通过D型
触发器与8?#32440;?#31227;位迭代模块电连接,上述8?#32440;贑RC32计算模块与D型触发器电连接,并且D
型触发器和8?#32440;?#31227;位迭代模块均与三输入异或门电连接,上述三输入异或门还与16?#32440;?br>迭代移位计算模块和D型触发器循环电连接,可以插入多级流水分割组?#19979;?#36753;,提高电路运
行频率,达到增大系统吞吐?#23454;?#30446;标。


实施例:


实现CRC算法的LFSR电路如图1所示,CRC计算结果存在DFF中,每一个时钟到来时,电路
移位一次,最高位移出电路,且最高位和输入的数据异或操作后反馈到电路中,进行下一次
计算;CRC算法多项式决定图中Gk、Gk-1…G1的值,当Gn的值为1时,反馈值进入电路中,否则
反馈值不进入电路中。


以向量C
i和C
i+1分别表示i时刻和i+1时刻LFSR电路的状态,即各个DFF的值,D
i表示
i时刻的输入数据,矩阵H表示移位反馈的系数,向量L表示数据反馈的系数,则LFSR电路的
状态可以表示为:


C
i+1=H·C
i+L·D
i+1(式1)


上述串行方式每?#25105;?#20837;1bit数据,计算速度很慢,为了加快计算速度,可以使用迭代的
方式实现并行数据的计算;以8bit数据为例,一个时钟周期输入8bit的并行数据,可以看成
是8bit数据进行了8?#25105;?#20301;操作,即将上述公式迭代计算8次,过程如下:


C
i+8=H·C
i+7+L·D
i+8=H·(H·C
i+6+L·D
i+7)+L·D
i+8=…=H
8·C
i+∑H
8-nL·D
i+n(n表示1~
8) (式2)


从上述公式可以看到,矩阵H、向量L、i时刻的电路状态C
i以及数据D
i+n均为已知值,因
此可以在一个时钟周期将并行8bit输入数据的CRC结果计算出来。


CRC算法是线性运算,所以根据GF(2)的特性,有如下等价表达式:


CRC(A+B)=CRC(A)+CRC(B) (式3)


其中A和B分别表示需要计算的数据块。


考虑如图2所示的数据块M(x),总共m*n个?#32440;冢?#23558;M(x)分为m个n?#32440;?#22823;小的小数
据块的集合,有如下等价表达式:


M(x)=M1(x)+M2(x)+M3(x)+…+Mm(x) (式4)


M1(x)、M2(x) …Mm(x)的描述如图2所示,均为一个n?#32440;?#30340;数据块后带了若干个'0'
值。


根据式3所示,对于数据块M(x),有如下等价表达式:


CRC(M(x))=CRC(M1(x))+CRC(M2(x))+CRC(M3(x))+…+CRC(Mm(x)) (式5)


从上述表达式中可以看到,要计算一个大的数据块的CRC结果,可以先将大的数据块分
为若干个小的数据块,分别计算这些小的数据块的CRC,最后将小的数据块的CRC结果进行
异或操作,即可以得到大的数据块M(x)的CRC结果。


小数据块Mn(x)由n个?#32440;?#30340;?#34892;?#25968;据和若干个0组成,首先计算出n个?#32440;謨行?#25968;
据的CRC结果,由于后面的数据输入全部为0,根据式2,有如下公式:


C
i+p=H
p·C
i(式6)


其中C
i表示n个?#32440;謨行?#25968;据的CRC结果,C
i+p表示整个小数据块Mn(x)的计算结果,H表
示反馈系数矩阵,p表示n个?#32440;謨行?#25968;据后面附带的0的个数。只要提前计算出H
p的值,则
根据n个?#32440;謨行?#25968;据的CRC结果就可以知道整个小数据块Mn(x)的CRC结果。


以每一个时钟周期输入16?#32440;?#25968;据为例,首先将16?#32440;?#25968;据拆分为两个8?#32440;?#25968;
据块,其中按照具体协议规定需要先进行CRC计算的8?#32440;?#25968;据块后面再添加8?#32440;?#30340;全0数
据,如图3所示;分别单独计算两个8?#32440;?#25968;据块的CRC结果,后面添0的数据块还需要将其8
?#32440;?#25968;据的CRC结果与H
64相乘,最后将这两个数据块的CRC结果进行异或,即可得到此时钟
周期16个?#32440;?#30340;CRC运算结果。


同样地,将前后2个时钟周期的32?#32440;?#25968;据看成是2个16?#32440;?#25968;据块组成,其中前
一个时钟周期的16?#32440;?#25968;据块后面再添加16?#32440;?#30340;全0数据,如图4所示;分别单独计算两
个16?#32440;?#25968;据块的CRC结果,后面添0的数据块还需要将其16?#32440;?#25968;据的CRC结果与H
128相
乘,最后将这两个数据块的CRC结果进行异或,即可得到前后两个时钟周期32个?#32440;?#30340;CRC
运算结果。


重复上述过程,每输入一个时钟周期的数据,均可以将前一个时钟周期计算得到
的CRC结果与H
128相乘,再计算本次时钟周期输入数据的CRC结果,将上述两个结果异或,即
可得到当前所有输入数据的CRC结果。


如图5所示为实?#23454;?#30005;路结构图,8BYTE CRC_CAL模块为纯组?#19979;?#36753;电路,用于计
算8?#32440;?#25968;据输入的CRC32结果;CRC初始值在计算第一个8?#32440;?#25968;据时为32'hFFFF_FFFF,其
它时候的初始值均为32'h0000_0000。


8BYTE Shift_CAL将8BYTE CRC_CAL的结果与H
64相乘,等同于计算8?#32440;?#25968;据后面
附加64bit 0的CRC结果。每一个时钟周期的16个?#32440;?#25968;据中,前8个?#32440;?#30340;数据经过8BYTE
CRC_CAL模块计算得到CRC结果后,需要将CRC结果送入8BYTE Shift_CAL模块,而后8个?#32440;?br>的数据则仅需要经过8BYTE CRC_CAL模块计算得到CRC结果,之后这两个结果进行异或操
作。每一个时钟周期的CRC结果经过DFF后,会送入16BYTE Shift_CAL模块,16BYTE Shift_
CAL将每一个时钟周期的CRC结果与H
128相乘,等同于计算16?#32440;?#25968;据后面附加128bit 0的
CRC结果。前后两个时钟周期的CRC结果进行异或操作,即能得到当前时钟周期的CRC结果,
最终得到整个数据块的CRC结果。


从如图5所示的电路结构来看,不存在LFSR电路的反馈环路,因此可以在电路中插
入多级流水以提高电路运行频?#30465;?#26412;专利所描述的电路将16?#32440;?#25968;据拆分为两个8?#32440;?#25968;
据单独进行计算,减少了组?#19979;?#36753;层数,可以一定程度提高电路运行频?#30465;?#24403;电路运行频率
需要再次提高时,还可以将16?#32440;?#25968;据拆分为四个4?#32440;?#25968;据块进行计算,进一步减少组合
逻辑层数。


综上所述,该多级流水电路实现并行CRC的方法,去掉了LFSR的反馈环路,从而可
以插入多级流水,提高电路运行频率,增大系统数据吞吐?#30465;?br>

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以
理解在不脱离本发明的原理和精神的情况下可?#36828;?#36825;些实施例进行多种变化、修改、替换
和变型,本发明的范围由所附权利要求及其等同物限定。


关于本文
本文标题:一种多级流水电路实现并行CRC的方法.pdf
链接地址:http://www.pqiex.tw/p-6153511.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 初中生如何提高赚钱能力 球探比分网 皇后赚钱 现实二人麻将怎么打 欧洲转盘怎么玩有胜算 四川快乐12任5推荐高手 盛大线上娱乐 波克捕鱼达人千炮版uc 广东时时11选五规则 网络擦边赚钱行业