本发明专利技术公开了一种分块计算CRC以提高时钟频率的装置和方法,包括输出CRC计算模块、前次CRC计算模块、输入数据计算模块、异或模块1及CRC移位寄存器,前次CRC计算模块与输入数据计算模块通过异或模块1与CRC移位寄存器相连接,CRC移位寄存器与输出CRC计算模块相连接;输入数据计算模块还直接与输出CRC计算模块相连接;输入数据通过输入数据计算模块采用分块计算的方式进行计算,得到数据子块的CRC值,而后将该数据子块的CRC值输入到异或模块1内;能够解决超高速率的基于包处理应用中CRC计算电路时钟性能瓶颈,分块模块间的时序路径通过加寄存器予以切断,从而提高了整个电路的时序性能。
【技术实现步骤摘要】
本专利技术涉及CRC计算
,具体的说,是一种分块计算CRC以提高时钟频率的装置和方法。
技术介绍
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。CRC计算基本原理:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(X)。根据G(X)可以生成K位信息的校验码,而G(X)叫做这个CRC校验码的生成多项式。CRC校验码的具体生成过程为:假设要发送的数据多项式F(X)表示,将F(X)左移R位(可表示成F(x)*2R),这样F(X)的右边就会空出R位,这就是校验码的位置。用F(x)*2R除以生成多项式G(X)得到的余数RU)就是校验码。多项式和一■进制数有直接对应关系:X的最尚幕次对应一■进制数的最尚位,以下各位对应生成多项式的各幂次,有此幂次项对应I,无此幂次项对应O。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。多项式包括生成多项式G(X)和数据多项式F(X)。如生成多项式为G(X)=X4+X3+X+1,可转换为二进制数码11011。而发送信息位101111,可转换为数据多项式为F(X)=X5+X3+X2+X+1。接收方向有两种处理方式,一是把多项式F(x)*2r+ RU)除以G(X),如果余数是0,则认为没有错误,否则,一定有错。二是把多项式F(x)*2R除以G(X)得到的R’(x),如果R(X)等于R’(x),则认为没有错误,否则,一定有错。事实上,如果错误多项式EU)为G(X)的算术合成(比如乘加线性组合),则接收方不能检测出错误,所以前面的描述中用了“认为没有错误”这样的表述。但现有的计算CRC存在的问题主要表现为: 虽然计算CRC可以用软件方法实现,也可以用硬件电路实现。但在一些实时性要求很高的领域,软件方法不能满足实时性要求,只能用硬件电路实现。而当数据流速率较低时(比如10M/100M/1000M以太网),计算CRC的硬件电路没有实现难度,但是当数据速率较高(比如40G/100G以太网),用传统的计算CRC的硬件电路可能就不能满足要求。因为这个时候输入并行数据位宽很宽,导致计算CRC硬件电路逻辑层次很深,电路很难运行在希望的频率上。
技术实现思路
本专利技术的目的在于提供一种分块计算CRC以提高时钟频率的装置和方法,基于分块计算的模式而设计的分块计算CRC以提高时钟频率的装置,能够解决超高速率的基于包处理应用中CRC计算电路时钟性能瓶颈,并且具有电路结构清晰简单,通用性极强,能极大提高电路的时钟性能,且逻辑资源不会增加的特性,特别适合超高速率(40G以上)的各种包处理应用中; 基于分块计算的模式而设计的分块计算CRC以提高时钟频率的方法,能够降低每个分块模块内部的逻辑层次,且分块模块间的时序路径通过加寄存器予以切断,从而提高了整个电路的时序性能。本专利技术通过下述技术方案实现:一种分块计算CRC以提高时钟频率的装置,包括输出CRC计算模块、前次CRC计算模块、输入数据计算模块、异或模块I及CRC移位寄存器,所述前次CRC计算模块与输入数据计算模块通过异或模块I与CRC移位寄存器相连接,所述CRC移位寄存器与输出CRC计算模块相连接;所述输入数据计算模块还直接与输出CRC计算模块相连接。进一步的为更好的实现本专利技术所述装置,特别设置成下述结构:所述前次CRC计算模块内设置有X个CRC子块寄存器、多个二进制除法取余模块及X个前次CRC子块,所述X个前次CRC子块通过多个二进制除法取余模块分别与X个CRC子块寄存器相连接,所述X个CRC子块寄存器皆与异或模块I相连接,所述异或模块I的输出端还分别与X个前次CRC子块的输入端相连接;所述X为I到CRC多项式的最高次幂M间的任何整数,优选的X为能整除CRC多项式的最高次幂M的整数;所述M为CRC多项式的最高次幂,所述N为最大的输入数据位宽。进一步的为更好的实现本专利技术所述装置,特别设置成下述结构:所述输入数据计算模块内设置有输入移位寄存器、Y个数据子块、多个二进制除法取余模块及Y个数据子块寄存器,所述输入移位寄存器与Y个数据子块相连接,所述Y个数据子块分别通过多个二进制除法取余模块与Y个数据子块寄存器相连接,所述Y个数据子块寄存器分别与异或模块I和输出CRC计算模块相连接;所述Y为I到最大的输入数据位宽N间的任何整数,优选的Y为能整除最大的输入数据位宽N的整数。进一步的为更好的实现本专利技术所述装置,特别设置成下述结构:所述输出CRC计算模块内设置有Z个输出CRC子块、多个二进制除法取余模块、多个输出CRC子块寄存器、异或模块3及输出寄存器,所述CRC移位寄存器分别与多个输出CRC子块相连接,所述输出CRC子块分别通过多个二进制除法取余模块与多个输出CRC子块寄存器相连接,所述多个输出CRC子块寄存器皆与异或模块3相连接,所述异或模块3与输出寄存器相连接,所述Y个数据子块寄存器与异或模块3相连接;所述Z为I到N+M间的任何整数,优选的,Z为能整除(N+M)的整数。进一步的为更好的实现本专利技术所述装置,特别设置成下述结构:所述输入数据计算模块内还设置有异或模块2和数据部分寄存器,所述Y个数据子块寄存器皆与异或模块2相连接,所述异或模块2与数据部分寄存器相连接,所述数据部分寄存器分别与异或模块I和异或模块3相连接。一种分块计算CRC以提高时钟频率的方法,包括以下步骤: 1)输入数据通过输入数据计算模块采用分块计算的方式进行计算,得到数据子块的CRC值,而后将该数据子块的CRC值输入到异或模块I内; 2)从异或模块I反馈回来的数据通过前次CRC计算模块采用分块计算的方式进行计算,而后将计算所得值输入到异或模块I内与输入数据计算模块所得的数据子块的CRC值进行异或得到当前的CRC值并存储到CRC移位寄存器内; 3)经步骤2)后,所述CRC移位寄存器对当前的CRC值进行移位,而后将移位后的数据输入到输出CRC计算模块内采用分块计算方式进行计算得到CRC并输出。进一步的为更好的实现本专利技术所述方法,特别采用下述设置方式:所述步骤I)包括以下具体步骤: 1-1)输入移位寄存器根据输入数据的输入比特有效情况,进行右移操作,在进行右移操作时,右移多少位,高位就补多少个O,右移后的数据位宽没有变化,始终为N;具体右移的位数根据输入数据有效指示来判断,同时将该值寄存送到CRC移位寄存器控制移位的比特数,使两个移位寄存器移位的比特数是相等的。1-2)经步骤1-1)后,右移后的输入数据将通过Y个数据子块,将N位右移后的输入数据进行Y等分,当前第1页1 2 3 4 本文档来自技高网...
【技术保护点】
一种分块计算CRC以提高时钟频率的装置,其特征在于:包括输出CRC计算模块、前次CRC计算模块、输入数据计算模块、异或模块1及CRC移位寄存器,所述前次CRC计算模块与输入数据计算模块通过异或模块1与CRC移位寄存器相连接,所述CRC移位寄存器与输出CRC计算模块相连接;所述输入数据计算模块还直接与输出CRC计算模块相连接。
【技术特征摘要】
【专利技术属性】
技术研发人员:匡启成,
申请(专利权)人:华信塞姆成都科技有限公司,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。