一种基于FPGA的CRC并行运算IP核制造技术

技术编号:17304324 阅读:34 留言:0更新日期:2018-02-18 22:15
本发明专利技术公开了一种基于FPGA的CRC并行运算IP核,包括CRC位宽自动识别模块、refin配置模块、特征矩阵生成模块、CRC生成运算模块、CRC检查运算模块、refout/xorout配置模块;CRC位宽自动识别模块识别输入的生成多项式的位宽,特征矩阵计算模块采用矩阵列变换的方式实现特征矩阵n次方的运算,CRC生成运算模块和CRC检查运算模块会根据得到的特征矩阵、CRC位宽、并行计算位宽来进行CRC生成和CRC检查相关的计算。本发明专利技术适用于8bit、16bit、32bit的CRC位宽,任意生成多项式,以及8bit、16bit、32bit并行运算位宽的CRC计算。

A CRC parallel operation IP kernel based on FPGA

The invention discloses a parallel computing IP kernel FPGA based on CRC, including the CRC interface automatic identification module, refin configuration module, feature matrix generation module, CRC module, CRC generation operation check operation module, refout/xorout configuration module; bit generator polynomial of CRC width automatic recognition module input, feature matrix calculation module column the way to realize the transform matrix feature matrix n square arithmetic, CRC generation module and CRC module will check to calculate and check the relevant CRC CRC generated according to the characteristics of CRC interface and parallel matrix, calculated width. The invention is applicable to 8bit, 16bit, 32bit CRC width of arbitrary generator polynomial, and 8bit, 16bit, 32bit parallel computing width CRC calculation.

【技术实现步骤摘要】
一种基于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检查器的功能;本文档来自技高网
...
一种基于FPGA的CRC并行运算IP核

【技术保护点】
一种基于FPGA的CRC并行运算IP核,其特征在于,包括:CRC位宽自动识别模块,读入生成多项式对应的二进制数,根据二进制数的首位为1所在的位置识别出待计算的CRC码的位数;refin配置模块,选择不同的功能模式:CRC生成模式和CRC检查模式;特征矩阵生成模块,以模2运算方法计算32阶特征矩阵H32×32的n次方,其中n取CRC位宽和并行运算位宽中较小的数,并将矩阵运算结果传输给其他模块进行后续运算;CRC生成运算模块,实现8bit、16bit、32bit CRC位宽和8bit、16bit、32bit并行运算位宽之间任意组合的CRC校验码的计算;Refout、xorout配置模块,选择不同的功能模式:CRC生成模式和CRC检查模式;CRC检查运算模块,判断8bit、16bit、32bit CRC位宽和8bit、16bit、32bit并行运算位宽之间任意组合的CRC校验码与数据是否匹配。

【技术特征摘要】
1.一种基于FPGA的CRC并行运算IP核,其特征在于,包括:CRC位宽自动识别模块,读入生成多项式对应的二进制数,根据二进制数的首位为1所在的位置识别出待计算的CRC码的位数;refin配置模块,选择不同的功能模式:CRC生成模式和CRC检查模式;特征矩阵生成模块,以模2运算方法计算32阶特征矩阵H32×32的n次方,其中n取CRC位宽和并行运算位宽中较小的数,并将矩阵运算结果传输给其他模块进行后续运算;CRC生成运算模块,实现8bit、16bit、32bitCRC位宽和8bit、16bit、32bit并行运算位宽之间任意组合的CRC校验码的计算;Refout、xorout配置模块,选择不同的功能模式:CRC生成模式和CRC检查模式;CRC检查运算模块,判断8bit、16bit、32bitCRC位宽和8bit、16bit、32bit并行运算位宽之间任意组合的CRC校验码与数据是否匹配。2.根据权利要求1所述的基于FPGA的CRC并行运算IP核,其特征在于,特征矩阵生成模块计算32阶特征矩阵H的n次方,采用的是矩阵列变换的方式,即矩阵A乘矩阵B,等同于按照矩阵B的元素特点对矩阵A进行列变换,并且本模块结合特征矩阵H内第2-31列包含单位矩阵的特点,将右乘H的矩阵运算采用2-31列右移取代列变换的操作方法。3.根据权利要求2所述的基于FPGA的CRC并行运算IP核,其特征在于,CRC生成运算模块和CRC检查运算模块中在并行运算CRC值时的矩阵模乘运算均采用矩阵列变换的方式实现。4.根据权利要求2所述的基于FPGA的CRC并行运算IP核,其特征在于,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种,采用的是逐层运算的方式:同理:本模块所有涉及的公式中,模加运算为异或门实现,模乘运算为与门实现,矩阵模乘运算采用特征矩阵运算模块矩阵右乘列变换的方式。5.根据权利要求4所述的基于FPGA的CRC并行运算IP核,其特征在于,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种,采用的也是逐层运算的方式:

【专利技术属性】
技术研发人员:刘洪光刘玉荣
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1