一种基于FPGA的CRC并行运算IP核的制作方法

文档序号:13735872阅读:753来源:国知局
一种基于FPGA的CRC并行运算IP核的制作方法

本发明涉及数据校验技术领域,特别涉及一种基于fpga的、全部参数可配置、并行位宽可调的循环冗余校验运算ip核。



背景技术:

在数据传输的通信过程中,为了检测发送的数据在传输过程中是否发生了变化,导致数据的传输错误,需要用到数据校验技术。常用的校验方式包括奇偶校验、异或校验、循环冗余校验(即crc校验)等,其中奇偶校验和异或校验在多位数据错误的情况下,很容易出现误判,而crc校验以其运算简单、校验结果准确度高的优点脱颖而出。

crc校验实现方式分为串行实现和并行实现,目前广泛采用的是并行实现方式。并行方式包括查表法和矩阵运算法,查表法当并行位宽较大时,对存储表格的存储空间需求指数级增大,所以目前最流行的是矩阵运算的方式并行计算crc的值。

crc运算的核心为模2运算,模2运算是一种二进制算法,包括模2加、模2减、模2乘、模2除四种二进制运算,与四则运算不同的是模2运算不考虑进位和借位,这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。

crc校验码主要用于数据传输过程中的数据校验,发送方将待发送的数据按位依次模2除一个规定好的生成多项式,最后得到的余数即为crc码,并将crc校验码附到要发送的数据最后发送给接收方,接收方接收到数据后,将数据与crc码按位依次模2除相同的生成多项式,如果余数为0,则数据传输无误。

影响crc运算结果的因素很多,除了生成多项式(poly),还包括初始值(init)、每个字节高/低位数据先处理(refin)、计算后crc颠倒(refout)、计算后异或(xorout)等。然而目前fpga厂商提供的ip核还存在一些缺陷,如altera公司的对生成多项式的支持只有crc-32,crc-16-ansi、crc-16-ccitt三种,并不能支持所有的生成多项式,而且有一些型号的fpga芯片不支持调用crcip核。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供一种基于fpga的crc并行运算ip核,可适用于8bit、16bit、32bit的crc位宽,任意生成多项式,以及8bit、16bit、32bit并行运算位宽的crc计算,采用以32bit位宽的逻辑电路进行配置来兼容8bit、16bit运算,大幅度节约fpga的硬件资源。

本发明的目的通过以下的技术方案实现:

一种基于fpga的crc并行运算ip核,包括:

crc位宽自动识别模块,读入生成多项式对应的二进制数,根据二进制数的首位为1所在的位置识别出待计算的crc码的位数;

refin配置模块,选择不同的功能模式:crc生成模式和crc检查模式;

特征矩阵生成模块,以模2运算方法计算32阶特征矩阵h32×32的n次方,其中n取crc位宽和并行运算位宽中较小的数,并将矩阵运算结果传输给其他模块进行后续运算;

crc生成运算模块,实现8bit、16bit、32bitcrc位宽和8bit、16bit、32bit并行运算位宽之间任意组合的crc校验码的计算;

refoutxorout配置模块,选择不同的功能模式:crc生成模式和crc检查模式;

crc检查运算模块,判断8bit、16bit、32bitcrc位宽和8bit、16bit、32bit并行运算位宽之间任意组合的crc校验码与数据是否匹配。

优选的,特征矩阵生成模块计算32阶特征矩阵h的n次方,采用的是矩阵列变换的方式,即矩阵a乘矩阵b,等同于按照矩阵b的元素特点对矩阵a进行列变换,并且本模块结合特征矩阵h内第2-31列包含单位矩阵的特点,将右乘h的矩阵运算采用2-31列右移取代列变换的操作方法。

优选的,crc生成运算模块和crc检查运算模块中在并行运算crc值时的矩阵模乘运算均采用矩阵列变换的方式实现。

优选的,crc生成运算模块和crc检查运算模块的功能为实现8bit、16bit、32bitcrc位宽和8bit、16bit、32bit并行运算位宽之间任意组合配置的crc校验码的生成和检查,设crc位宽为k,并行运算位宽为w,则共有以下9种配置情况k/w:32/32、32/16、32/8、16/16、16/8、8/8、16/32、8/32、8/16;其中k≥w的情况有k/w:32/32、32/16、32/8、16/16、16/8、8/8等6种,k≤w的情况有16/32、8/32、8/16等3种;

设多项式的二进制系数向量g=[gk-1gk-2…g0],rj(i)为存储crc值的寄存器j在i时刻的状态,有下列公式成立:

令rk(i)=[rk-1(i)rk-2(i)…r0(i)]t,u=[00…1]tk×1,其中k表示寄存器数目也即crc位宽,则可写为如下形式其中为crc运算的特征矩阵;

在k≥w的情况下,设各crc寄存器的初始态为rk(0),利用数学归纳法,可得在初始态后w时刻,

如crc宽度32bit,并行处理位宽8bit,现态寄存器值为r32(0),次态寄存器值为r32(8)即为r32(0)经过8bit并行运算一拍后的值,其中h8由特征矩阵计算模块计算所得;

以上推导适用于k/w:32/32、32/16、32/8的情况,对于k/w:16/16、16/8、8/8的情况,以crc高位宽运算电路向低位宽运算电路兼容的方式,将k/w:16/16、16/8、8/8的情况,复用一套实现32/32的电路来实现,具体实现原理如下:

以k/w:8/8为例:

k/w为32/32的实现方式为

k/w为的8/8实现方式为

8/8以32/32的方式实现,即为:

即只要将32/32计算电路的h32配置为h8,并将数据做一定位移,就可以重用32/32的计算电路来进行8/8的运算,16/16、16/8同理均可由32/32的运算电路配置而成;

对于k≤w的情况有16/32、8/32、8/16等3种,采用的是逐层运算的方式:

同理:

本模块所有涉及的公式中,模加运算为异或门实现,模乘运算为与门实现,矩阵模乘运算采用特征矩阵运算模块矩阵右乘列变换的方式。

进一步的,crc检查运算模块考虑以下9种匹配情况k/w:32/32、32/16、32/8、16/16、16/8、8/8、16/32、8/32、8/16,其中k≥w的情况有k/w:32/32、32/16、32/8、16/16、16/8、8/8等6种,k≤w的情况有16/32、8/32、8/16等3种;

对于k≥w的6种情况,采用高位向低位兼容的方式实现,实现的运算公式为

对于k≤w的情况有16/32、8/32、8/16等3种,采用的也是逐层运算的方式:

具体的,ip核共包含13个接口信号,其中10个输入信号,3个输出信号,具体接口信号含义如下:

clk_in:ip核运行的系统时钟,控制数据的采样处理等所有的操作;

start:crc开始运算的起始信号,start高电平时,在时钟上升沿会对data_in接口信号线进行采样,并进行系列运算,start拉低时,停止采样;

mode:包含crc运算的两种模式,一种是crc生成模式,用来生成数据的crc校验码,另一种是crc检查模式,用来检查数据是否有误,当mode为1时选中crc生成模式,实现crc生成器的功能,当mode为0时选中的是crc检查模式,实现的是crc检查器的功能;

poly_in:实现输入生成多项式的功能,可输入8、16、32位任意的生成多项式的对应的二进制向量,低位保持对齐,高位补0;

width:crc并行运算位宽,可配置为8bit、16bit、32bit并行;

init_in:配置计算crc时使用到寄存器的初始值,可配置为任意整数;

refin:用来配置每字节数据处理时,先处理低位还是先处理高位;

refout:用来配置输出crc是否整体比特交换;

xorout:将已经得到的结果与xorout值进行异或,得到最终的crc码;

data_in:输入的数据,可以是待生成crc的数据或者待检查的数据,按照配置的并行位宽位数输入,当start为1时,每个时钟上升沿输入待计算数据,start为0时停止输入;

value:输出结果有效标志,当value为高电平时为输出的crc_out或result有效,否则无效,value高电平持续一个时钟周期;

crc_out:当为crc生成模式时,crc_out在value有效时输出计算完成的crc码,位宽不够32bit的crc码以低位对齐;

result:当为crc检查模式时,result在value有效时输出数据校验结果,result为1表示数据无误,为0表示数据传输有误。

优选的,ip核使用流程为:

输入端,将crc各个配置引脚给出配置电平,开始信号start由低电平拉高,在每个时钟上升沿输入要计算的相应位宽的数据,直到start信号拉低停止输入数据;

输出端,若为crc生成模式,输出有效信号value高电平时,crc_out的值即为计算得到的crc码;若为crc检查模式,输出有效信号value高电平时,result的值即为数据检查的结果。

优选的,ip核中crc生成模块和crc检查模块在通信系统中的位置描述如下:

数据发送方调用该ip核,配置成crc生成模式,将生成的crc码与发送数据合并,放在发送数据的最后,通过发送器以其特定的方式发出;

数据接收方调用该ip核,配置成crc检查模式,将接收器接收到的数据进行检查,如果result为1,则接收到的数据与发送的数据一致,否则表示接收到的数据有误,需要进行进一步处理。

具体的,ip核配置成crc生成模式时,各模块间的关系与数据流动:

poly输入后,会输入进位宽自动识别模块和特征矩阵生成模块;

位宽自动识别模块根据poly的特点识别出要计算crc的宽度,并将识别得到的宽度结果输入到crc生成运算模块进行运算;

特征矩阵生成模块根据得到的poly值,在特定的时钟延进行运算,得到该poly值对应的特征矩阵,并根据输入的并行处理位宽n,根据模2运算计算出特征矩阵的n次方,并将计算结果输入到crc生成运算模块进行运算;

refin配置模块接收输入的data_in,根据输入的配置参数refin来确定是否对输入数据data_in进行字节内比特颠倒,字节内比特颠倒为字节位置不变,字节内8bit数据进行位置颠倒,即第12345678位置的数改变为87654321位置,并将得到的数据输入crc生成运算模块进行运算;

crc生成运算模块根据位宽自动识别模块输入的crc位宽和输入的并行运算位宽,判定采用对应的运算公式,将refin配置模块输入的数据经过对应的公式运算,生成初步的crc_1,输出给refout、xorout配置模块;

refout、xorout配置模块,根据输入的refout配置信号,将接收到的初步crc_1进行整体比特颠倒,得到进一步的crc_2,然后根据输入的xorout数据,将crc_2与xorout数据进行异或处理,得到的值即为最终的crc值,该模块将最终的crc码与匹配的有效信号value输出,即为该ip核crc生成模式的最终输出。

具体的,ip核配置成crc检查模式时,各模块间的关系与数据流动:

poly输入后,会输入进位宽自动识别模块和特征矩阵生成模块;

位宽自动识别模块根据poly的特点识别出要计算crc的宽度,并将识别得到的宽度结果输入到crc检查运算模块进行运算;

特征矩阵生成模块根据得到的poly值,在特定的时钟延进行运算,得到该poly值对应的特征矩阵,并根据输入的并行处理位宽n,根据模2运算计算出特征矩阵的n次方,并将计算结果输入到crc检查运算模块进行运算;

refin配置模块接收输入的data_in,根据输入的配置参数refin来确定是否对除最后的crc位以外的输入数据data_in进行字节内比特颠倒,并将得到的数据输入refout、xorout配置模块进行运算;

refout、xorout配置模块采出附在数据末尾的crc码,根据输入的xorout数据,将采到的crc码与xorout数据进行异或,得到crc_2,然后根据输入的refout配置信号,将crc_2进行整体比特颠倒,得到crc_1,将crc_1替换本来附在数据后的crc码,将替换后的数据输出给crc检查运算模块进行运算;

crc检查运算模块根据位宽自动识别模块输入的crc位宽和输入的并行运算位宽,判定采用对应的运算公式,将refout、xorout配置模块输入的数据经过对应的公式运算,得到运算结果result,将result和与之匹配的有效信号value输出,result和value即为该ip核crc检查模式的最终输出。

本发明与现有技术相比,具有如下优点和有益效果:

1、本发明适用于任意生成多项式,可自动计算与生成多项式对应的特征矩阵,支持多种影响crc参数的配置,支持8bit、16bit、32bit业界常用并行运算位宽。

2、特征矩阵生成模块计算32阶特征矩阵h的n次方,采用的是矩阵列变换的方式,相比于单纯以列变换实现方式节省了硬件资源。

3、crc生成运算模块和crc检查运算模块的功能为实现8bit、16bit、32bitcrc位宽和8bit、16bit、32bit并行运算位宽之间任意组合配置的crc校验码的生成和检查,16/16、16/8、8/8三种,采用高位宽向低位宽兼容的方式,以32/32的实现的电路通过以可重构的方式进行简单配置,可完成对以上三种运算电路的计算,从而节省了这三种配置方式运算所需的逻辑单元消耗。

4、位宽自动识别模块读入生成多项式对应的二进制数,根据二进制数的首位为1所在的位置识别出待计算的crc码的位数,免去了输入crc位宽的步骤。

5、本发明描述的方法为纯硬件数字电路实现并行crc算法。与软件方法对比,软件方法的crc计算是在cpu中进行运算,运算方式为串行运算,速度慢;本发明描述的方法,是由fpga中硬件电路进行运算,属于并行运算,速度非常快。以本方法实现crc运算,能够节省fpga中大量的逻辑资源使用,可以更少的门电路数量来实现同样的功能;本方法描述的6个模块均为对电路的设计,在设计完成后,通过工具将设计加载到fpga中,以配置fpga中的硬件资源按照设计的方法组合成硬件电路。完成后,fpga芯片就拥有了设计的功能。

附图说明

图1为实施例2crc并行运算ip核的接口信号图。

图2为实施例2crc并行运算ip核中crc生成模块和crc接收模块在通信系统中的位置示意图。

图3为实施例2crc并行运算ip核中crc生成模式各功能模块的关系及数据传递示意图。

图4为实施例2crc并行运算ip核中crc检查模式各功能模块的关系及数据传递示意图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例1

一种基于fpga的crc并行运算ip核,可支持所有的生成多项式,可对init、refin、refout、xorout等参数进行配置,可选择8bit、16bit、32bit等业界常用并行处理位宽,电路会根据不同的生成多项式计算出对应的特征矩阵,并根据用户不同的配置给出相应的crc运算结果。

本实施例提出的crc并行运算电路包括以下6个模块:

1)crc位宽自动识别模块

crc位宽自动识别模块会识别输入的33比特表征生成多项式的二进制数的值,根据数据中第一个为1的数据在数据中的位置来判定计算所得crc的位宽,并对多项式二进制数poly和初始值init进行向左移位处理,末位以0填充,移位位数为32-crc位宽。

2)refin配置模块

本模块的功能分为crc生成模式和crc检查模式;

当输入mode=1,即为crc生成模式时,本模块判断输入refin,确定是否将输入的数据data_in进行字节内比特颠倒;

当输入mode=0,即为crc检查模式时,本模块判断输入refin,确定是否将除末尾的crc位除外的其他数据进行字节内比特颠倒。

3)特征矩阵生成模块

此模块的作用:以模2运算方法计算32阶特征矩阵h32×32的n次方,其中n取crc位宽和并行运算位宽中较小的数,并将矩阵运算结果传输给其他模块进行后续运算。

矩阵运算实现:特征矩阵其中g1为输入的生成多项式对应的二进制码的转置polyt,λ为31阶单位矩阵。根据特征矩阵的特性,本模块采用以矩阵列变换的方式来计算矩阵的模2乘法,也即任意32阶矩阵与矩阵h相乘为:

该式运算所得矩阵的第2-32列为原矩阵第1-31列右移所得,矩阵的第1列为由矩阵右乘运算法则:

其中分别为模乘和模加运算符,模乘运算即为逻辑按位与运算,模加运算即为逻辑按位异或,如此特征矩阵的n次方即可方便地由逻辑门来实现。

4)crc生成运算模块

此模块功能为实现8bit、16bit、32bitcrc位宽和8bit、16bit、32bit并行运算位宽之间任意组合的crc校验码的计算。

设crc位宽为k,并行运算位宽为w,则共有以下9种匹配情况k/w:32/32、32/16、32/8、16/16、16/8、8/8、16/32、8/32、8/16。其中k≥w的情况有k/w:32/32、32/16、32/8、16/16、16/8、8/8等6种,k≤w的情况有16/32、8/32、8/16等3种;

设多项式的二进制系数向量g=[gk-1gk-2…g0],rj(i)为存储crc值的寄存器j在i时刻的状态,有下列公式成立:

令rk(i)=[rk-1(i)rk-2(i)…r0(i)]t,u=[00…1]tk×1,其中k表示寄存器数目也即crc位宽,则可写为如下形式其中为crc运算的特征矩阵;

在k≥w的情况下,设各crc寄存器的初始态为rk(0),利用数学归纳法,可得在初始态后w时刻,

如crc宽度32bit,并行处理位宽8bit,现态寄存器值为r32(0),次态寄存器值为r32(8)即为r32(0)经过8bit并行运算一拍后的值,其中h8由特征矩阵计算模块计算所得。

以上推导适用于k/w:32/32、32/16、32/8的情况,对于k/w:16/16、16/8、8/8的情况,本实施例为节约硬件资源,以crc高位宽运算电路向低位宽运算电路兼容的方式,将k/w:16/16、16/8、8/8的情况,复用一套实现32/32的电路来实现,节约了大约三分之一的硬件资源,具体实现原理如下:

以k/w:8/8为例

k/w为32/32的实现方式为

k/w为的8/8实现方式为

8/8以32/32的方式实现,即为:

即只要将32/32计算电路的h32配置为h8,并将数据做一定位移,就可以重用32/32的计算电路来进行8/8的运算,16/16、16/8同理均可由32/32的运算电路配置而成。

对于k≤w的情况有16/32、8/32、8/16等3种,采用的是逐层运算的方式:

同理:

本模块所有涉及的公式中,模加运算为异或门实现,模乘运算为与门实现,矩阵模乘运算采用3号模块(特征矩阵运算模块)所述的矩阵右乘列变换的方式。

本模块的运作流程为,在start上升沿对crc寄存器赋初始值init,在特征矩阵计算结束后,开始对数据流进行运算,在start下降沿后,也就是数据末尾附上与crc位宽位数相同的0,在所有数据计算完毕后,将寄存器中的值送到后续模块进行运算。

5)refout、xorout配置模块

本模块可分为crc生成模式和crc检查模式;

当输入mode=1,即为crc生成模式时,本模块接收由其他模块产生的初步crc,判断输入refout=1,则将得到的初步crc进行整体比特颠倒,否则不进行操作,然后将得到的数据与xorout进行异或操作,异或后得到的结果即为最终的crc值;

当输入mode=0,即为crc检查模式时,本模块接收带有crc的数据流,根据配置的crc位宽和并行处理位宽,采出附在数据末尾的crc码,根据输入的xorout数据,将采到的crc码与xorout数据进行异或,得到crc_2,然后根据输入的refout配置信号,将crc_2进行整体比特颠倒,得到crc_1,将crc_1替换本来附在数据流后的crc码,将替换后的数据输出给下级模块进行运算。

6)crc检查运算模块

此模块功能为实现8bit、16bit、32bitcrc位宽和8bit、16bit、32bit并行运算位宽之间任意组合的crc校验码与数据是否匹配。

与4号模块(crc生成运算模块)相同,本模块考虑以下9种匹配情况k/w:32/32、32/16、32/8、16/16、16/8、8/8、16/32、8/32、8/16,其中k≥w的情况有k/w:32/32、32/16、32/8、16/16、16/8、8/8等6种,k≤w的情况有16/32、8/32、8/16等3种;

对于k≥w的6种情况,采用高位向低位兼容的方式实现,实现的运算公式为

对于k≤w的情况有16/32、8/32、8/16等3种,采用的也是逐层运算的方式:

本模块接收末尾带有crc编码的数据流,本模块的运作流程为,在start上升沿对crc寄存器赋初始值init,在特征矩阵计算结束后,开始对数据流进行运算,与4号模块(crc生成运算模块)不同的是,在start下降沿后,不需要添加0,在所有数据计算完毕后,判断寄存器中的值,若值为0,则说明数据传输无误,输出result=1,value=1,否则数据传输有误,输出result=0,value=1。

实施例2

参考图1,本实施例提出的ip核共包含13个接口信号,其中10个输入信号,3个输出信号,具体接口信号含义如下:

clk_in:ip核运行的系统时钟,控制数据的采样处理等所有的操作;

start:crc开始运算的起始信号,start高电平时,在时钟上升沿会对data_in接口信号线进行采样,并进行系列运算,start拉低时,停止采样。

mode:本实施例包含crc运算的两种模式,一种是crc生成模式,用来生成数据的crc校验码,另一种是crc检查模式,用来检查数据是否有误,当mode为1时选中crc生成模式,实现crc生成器的功能,当mode为0时选中的是crc检查模式,实现的是crc检查器的功能;

poly_in:实现输入生成多项式的功能,可输入8、16、32位任意的生成多项式的对应的二进制向量,低位保持对齐,高位补0;

width:crc并行运算位宽,可配置为8bit、16bit、32bit并行;

init_in:配置计算crc时使用到寄存器的初始值,可配置为任意整数;

refin:用来配置每字节数据处理时,先处理低位还是先处理高位;

refout:用来配置输出crc是否整体比特交换;

xorout:将已经得到的结果与xorout值进行异或,得到最终的crc码;

data_in:输入的数据,可以是待生成crc的数据或者待检查的数据,按照配置的并行位宽位数输入,当start为1时,每个时钟上升沿输入待计算数据,start为0时停止输入;

value:输出结果有效标志,当value为高电平时为输出的crc_out或result有效,否则无效,value高电平持续一个时钟周期;

crc_out:当为crc生成模式时,crc_out在value有效时输出计算完成的crc码,位宽不够32bit的crc码以低位对齐;

result:当为crc检查模式时,result在value有效时输出数据校验结果,result为1表示数据无误,为0表示数据传输有误。

本实施例提出的ip核使用流程为:

输入端,将crc各个配置引脚给出配置电平,开始信号start由低电平拉高,在每个时钟上升沿输入要计算的相应位宽的数据,直到start信号拉低停止输入数据;

输出端,若为crc生成模式,输出有效信号value高电平时,crc_out的值即为计算得到的crc码;若为crc检查模式,输出有效信号value高电平时,result的值即为数据检查的结果。

图2简要地描述了本实施例提出的ip核中crc生成模块和crc检查模块在通信系统中的位置;

数据发送方调用该ip核,配置成crc生成模式,将生成的crc码与发送数据合并,放在发送数据的最后,通过发送器以其特定的方式发出;

数据接收方调用该ip核,配置成crc检查模式,将接收器接收到的数据进行检查,如果result为1,则接收到的数据与发送的数据一致,否则表示接收到的数据有误,需要进行进一步处理;

图3描述的是当本ip核配置成crc生成模式时,各模块间的关系与数据流动;

poly输入后,会输入进1号模块(位宽自动识别模块)和3号模块(特征矩阵生成模块);

1号模块(位宽自动识别模块)根据poly的特点识别出要计算crc的宽度,并将识别得到的宽度结果输入到4号模块进行运算;

3号模块(特征矩阵生成模块)根据得到的poly值,在特定的时钟延进行运算,得到该poly值对应的特征矩阵,并根据输入的并行处理位宽n,根据模2运算计算出特征矩阵的n次方(其中n不超过crc位数),并将计算结果输入到4号模块进行运算;

2号模块(refin配置模块)接收输入的data_in,根据输入的配置参数refin来确定是否对输入数据data_in进行字节内比特颠倒,字节内比特颠倒为字节位置不变,字节内8bit数据进行位置颠倒,即第12345678位置的数改变为87654321位置,并将得到的数据输入4号模块进行运算;

4号模块(crc生成运算模块)根据1号模块输入的crc位宽和输入的并行运算位宽,判定采用对应的运算公式,将2号模块输入的数据经过对应的公式运算,生成初步的crc_1,输出给5号模块;

5号模块(refout、xorout配置模块),根据输入的refout配置信号,将接收到的初步crc_1进行整体比特颠倒,得到进一步的crc_2,然后根据输入的xorout数据,将crc_2与xorout数据进行异或处理,得到的值即为最终的crc值,该模块将最终的crc码与匹配的有效信号value输出,即为该ip核crc生成模式的最终输出。

图4描述的是当本ip核配置成crc检查模式时,各模块间的关系与数据流动;

poly输入后,会输入进1号模块(位宽自动识别模块)和3号模块(特征矩阵生成模块);

1号模块(位宽自动识别模块)根据poly的特点识别出要计算crc的宽度,并将识别得到的宽度结果输入到6号模块进行运算;

3号模块(特征矩阵生成模块)根据得到的poly值,在特定的时钟延进行运算,得到该poly值对应的特征矩阵,并根据输入的并行处理位宽n,根据模2运算计算出特征矩阵的n次方(其中n不超过crc位数),并将计算结果输入到6号模块进行运算;

2号模块(refin配置模块)接收输入的data_in,根据输入的配置参数refin来确定是否对除最后的crc位以外的输入数据data_in进行字节内比特颠倒,并将得到的数据输入5号模块进行运算;

5号模块(refout、xorout配置模块),采出附在数据末尾的crc码,根据输入的xorout数据,将采到的crc码与xorout数据进行异或,得到crc_2,然后根据输入的refout配置信号,将crc_2进行整体比特颠倒,得到crc_1,将crc_1替换本来附在数据后的crc码,将替换后的数据输出给6号模块进行运算;

6号模块(crc检查运算模块)根据1号模块输入的crc位宽和输入的并行运算位宽,判定采用对应的运算公式,将5号模块输入的数据经过对应的公式运算,得到运算结果result,将result和与之匹配的有效信号value输出,result和value即为该ip核crc检查模式的最终输出。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1