一种矢量CRC校验指令的设计方法.pdf

上传人:t**** 文档编号:624041 上传时间:2018-02-26 格式:PDF 页数:15 大小:690.01KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410366239.0

申请日:

2014.07.29

公开号:

CN104133736A

公开日:

2014.11.05

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 11/10申请公布日:20141105|||实质审查的生效IPC(主分类):G06F 11/10申请日:20140729|||著录事项变更IPC(主分类):G06F 11/10变更事项:发明人变更前:刘勇 陶建平 王和国 孙振玮 张永攀变更后:刘勇 陶建平 王和国 韩景通 孙振玮 张永攀|||公开

IPC分类号:

G06F11/10

主分类号:

G06F11/10

申请人:

江苏宏云技术有限公司

发明人:

刘勇; 陶建平; 王和国; 孙振玮; 张永攀

地址:

215634 江苏省苏州市张家港市保税区新兴产业育成中心A幢301B室江苏宏云技术有限公司

优先权:

专利代理机构:

常州市维益专利事务所 32211

代理人:

王涵江

PDF下载: PDF下载
内容摘要

本发明公开了一种DSP中矢量CRC校验指令的设计方法,在DSP中设计了全新的矢量CRC执行单元,在此基础上实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令以及利用这些专用指令设计的CRC校验装置。CRC指令运行效率高,使用简单灵活,通用性强,大大简化了对数据进行CRC校验的程序设计。使用较少的硬件资源实现了多条矢量CRC校验指令,节省了硬件资源,降低了成本。本发明充分利用了处理器设计中的流水线技术、多指令并发技术和单指令多数据技术,极大地提高了CRC校验的效率,本发明的CRC指令具有吞吐率高、功耗低、成本低等特点。

权利要求书

1.  一种矢量CRC检验指令的设计方法,设计了一种全新的矢量CRC执行单元,在此基础上实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令的设计以及使用这些指令设计的CRC校验装置。

2.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述矢量CRC执行单元包括硬件复用管理单元和状态寄存器并行转移单元,硬件复用管理单元控制各条矢量CRC指令充分复用硬件资源,可以保证使用较少的硬件资源即可完成多条矢量CRC指令的设计,减少了硬件开销;状态寄存器并行转移单元在输入8bit数据后只需要一个周期即可完成状态寄存器值的转移,执行时间短,运行效率高。

3.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC5校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的5bit数据即是CRC校验结果。

4.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC8校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的8bit数据即是CRC校验结果。

5.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述矢量CRC16校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的16bit数据即是CRC校验结果。

6.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC24校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的24bit数据即是CRC校验结果。

7.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC32校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的32bit数据即是CRC校验结果。

8.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,本设计方法不仅适用于设计如权利要求1所述的各条CRC指令,也适用于设计任意多项式的CRC指令,按 本文提供的设计方法可以设计出任意多项式的CRC校验指令。

9.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,本设计方法可以设计如权利要求2至权利要求6所述的8路并行的CRC指令,还可以设计任意路并行的CRC指令。

10.
  如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的CRC校验装置:利用本方法设计的CRC指令和处理器的读取、存储数据指令完成CRC校验,在此CRC校验装置中充分利用了流水线技术和多指令并发技术,可以极大的提高CRC校验的效率。

说明书

一种矢量CRC校验指令的设计方法
技术领域
一种DSP中矢量CRC校验指令的设计方法,涉及通信芯片中的数字信号处理,属于通信、存储领域,特别涉及数字信号处理芯片中CRC校验模块的设计。
背景技术
CRC编码是一种循环冗余校验码(Cyclic Redundancy Check),是数据通信领域中最常用的一种差错校验码,其特征是信息字段和检验字段的长度可以任意选定。
CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个检验码r位,附在信息后,构成一个新的二进制码序列共(k+r)位,最后发送出去。接收端根据同样的规则校验,以确定传送中是否出错。
传统的CRC校验实现方法有软件方法和硬件方法,软件方法主要有直接计算法和查表法,直接计算法适用于所有长度的数据校验,最为灵活,但由于是按位计算,是一种串行计算方法,效率差,速度慢。查表法按字节计算CRC校验,是一种并行计算方法,但是需要提前存储一个256字节的表格,会占用较多的硬件资源。硬件实现方法的优点是计算速度快、效率高,但灵活性较差、不具有通用性,成本高。
随着通讯技术的发展,对数据的处理效率要求越来越高,越来越多的设计方法选择了CRC的硬件实现方式,为了克服硬件实现方式灵活性和通用性差的缺点,在处理器中设计CRC校验指令逐渐成为一种趋势,Intel公司提出了一套灵活CRC指令集(CN 102096609 A),任给一个CRC多项式和数据,都可以对数据进行多项式规定的CRC校验,其实现过程是首先通过多项式求模运算对CRC多项式进行扩展,得到预计算扩展多项式,然后对数据进行混洗,混洗后利用扩展多项式反复对数据在Galois域上做多项式除法,最后得到CRC校验结果,此种CRC指令集虽然使用灵活,但是实现流程复杂,运行效率较低。
本DSP主要面向通信领域,使用的CRC校验种类比较固定,所以直接在DSP中设计了CRC的专用指令,指令设计简单,运行效率高,设计方法与Intel的灵活CRC指令集有本质的区别。通过软件编程调用这些CRC指令即可快速完成CRC校验,实现简单、快速且节省资源。本发明利用SIMD(Single Instruction Multiple Data)技术、流水线技术和指令并发技术大幅提高了CRC校验的速率。同时,本CRC校验的专用指令共享了处理器的部分硬件资源,节省了硬件开销。
发明内容
本发明要解决的技术问题是:本发明设计了一种全新的矢量CRC执行单元,在此基础上完实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令的设计以及使用这些指令设计的CRC校验装置。
本发明解决其技术问题所采用的技术方案是:全新的矢量CRC执行单元由硬件复用管理单元和状态寄存器并行转移单元组成,硬件复用管理单元控制各条矢量CRC指令充分复用硬件资源,可以保证使用较少的硬件资源即可完成多条矢量CRC指令的设计,减少了硬件开销;状态寄存器并行转移单元在输入8bit数据后只需要一个周期即可完成状态寄存器值的转移,运行效率高。
矢量CRC5校验指令是8路并行CRC校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC5并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的5bit数据即是CRC校验结果。
矢量CRC8校验指令是8路并行CRC校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC8并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的8bit数据即是CRC校验结果。
矢量CRC16校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC16并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的16bit数据即是CRC校验结果。
矢量CRC24校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC24并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的24bit数据即是CRC校验结果。
矢量CRC32校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC32并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的32bit数据即是CRC校验结果。
本方法不仅适用于以上CRC指令的设计,也适用了任意多项式CRC指令的设计,变换CRC的多项式,同样可以利用本方法设计出矢量CRC指令。
利用本方法不仅可以设计8路并行的CRC指令,也可以设计16路、32路并行的CRC指令,甚至可以设计任意路并行的CRC指令。
本方法的发明内容还包括利用这些CRC指令设计的CRC校验装置,利用本方法设计的CRC指令和处理器的读取、存储数据指令完成CRC校验,在此CRC校验装置中充分利用了处理器的流水线技术和多指令并发技术,可以极大的提高CRC校验的效率。
本发明的有益效果是:一种DSP中矢量CRC校验指令的设计方法,在DSP中设计了全新的矢量CRC执行单元,在此基础上实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令以及利用这些专用指令设计的CRC校验装置。此设计方法设计的CRC专用指令,运行效率高,使用简单灵活,通用性强,大大简化了对数据进行CRC校验的程序设计。同时,CRC执行单元包含硬件复用管理单元,可以保证各条CRC指令充分复用DSP的硬件资源,使用较少的硬件资源实现了多条矢量CRC校验指令,节省了硬件资源,降低了成本。另外,本设计方法充分利用了处理器设计中的流水线技术、多指令并发技术和单指令多数据(Single Instruction Multiple Data,SIMD)技术,极大地提高了CRC校验的效率。此方法设计的CRC指令具有吞吐率高、功耗低、成本低等特点。
附图说明
图1CRC指令实施例的系统框图;
图2图1所示的处理器实施例的框图;
图3CRC指令执行单元实施例的框图;
图4CRC5实现原理框图;
图5CRC8实现原理框图;
图6多项式为0x1021的CRC16实现原理框图;
图7多项式为0x8005的CRC16实现原理框图;
图8多项式为0x04c11db7的CRC32实现原理框图;
图9利用本发明设计的CRC指令实现的CRC校验实现流程图;
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更佳清楚、明白,以下结合附图和实施例,对本发明进行进一步的详细说明,应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
本实施例使用的DSP是矢量数字信号处理器,数据总线位宽是16bit,最多支持8个16bit数据的并行乘加运算,拥有矢量viterbi指令,具有超高的数字信号处理性能。本发明使用的DSP并不局限于本实施例所使用的DSP,在任意的DSP中均可按照本设计提供的方 法完成CRC指令的设计。
图1是本发明所设计的CRC指令实施例的系统100框图,系统100包括处理器101、程序存储器106和数据存储器108,处理器通过16bit位宽的总线对程序存储器进行访问,通过16bit位宽的数据总线对数据存储器进行访问。
处理器101包括程序访问控制器102、数据访问控制器104和CRC执行单元103,程序访问控制器102控制CRC指令的读取,数据访问控制器104控制计算数据的读取和CRC结果的存储,CRC执行单元103是CRC指令的执行单元。
图2是图1所示的处理器101的实施例框图,框图展示了CRC指令的执行过程,执行时需要3级流水线,在第一周期,在程序访问控制器的控制下,通过程序数据总线105将程序存储器106中的CRC指令读取到寄存器堆201中,此过程称为流水线的取指阶段。在第二周期,处理器将取出的CRC指令送入指令译码单元202进行译码,将译码结果存储到寄存器堆201的寄存器中,此过程称为流水线的译码阶段。在第三周期,根据译码结果在CRC执行单元103中执行CRC指令,此过程称为流水线的执行阶段,此过程需要一个周期,所以CRC指令为单周期指令。
本发明使用的DSP支持指令并发执行,在执行CRC的同时可以执行数据的访问指令,在数据访问控制器104的控制下,通过数据总线107将数据从数据存储器108中读取到寄存器堆201中,在CRC的执行阶段将数据载入到CRC执行单元103中,指令执行后将数据缓存到寄存器中,CRC计算完成后将结果通过数据访问指令存储到存储器108中。
以矢量CRC32指令的实施例为例说明指令的执行过程,在CRC执行单元103中执行的矢量CRC32指令(宏指令)用符号表示为:
crc32_0x04c11db7L(r1,r2,r3)
其中,r1、r2、r3是三个16bit的寄存器。矢量CRC32指令具有三个操作数,r1、r2和r3都是源操作数,同时r2和r3也是目的操作数据,CRC校验结果存储在r2和r3中。第一源操作数(“op1”)存储在寄存器堆201中的r1中,第一源操作数是将要进行CRC校验的数据;第二源操作数(“op2”)和第三源操作数(“op3”)存储在寄存器堆201中的r2和r3中,r2存储的是初始CRC余数的低16bit,r3存储的是初始CRC余数的高16bit。同时,r2和r3也是指令的目的操作数,CRC指令运算后的新余数再存回到r2和r3中,r2存储新CRC余数的低16bit,r3存储新CRC余数的高16bit。
r1是16bit寄存器,而指令crc32_0x04c11db7L是8bit并行指令,只对r1中的低8bit数据进行CRC计算,使用如下的指令对r1中的高8bit数据进行CRC计算: crc32_0x04c11db7H(r1,r2,r3)。
图3显示了CRC指令的执行过程,在流水线的执行阶段,硬件复用管理单元根据译码结果控制状态寄存器并行转移单元的运行,寄存器并行转移单元将3个源操作数据载入,一个周期完成状态寄存器的转移,状态寄存器中的值即是新的CRC余数,最后将状态寄存器中的值存储到目的寄存器r2和r3中。
以下以矢量CRC5指令、矢量CRC8指令、矢量CRC16指令和矢量CRC32指令的实施例来说明硬件复用管理单元和状态寄存器并行转移单元的设计。
CRC5的生成多项式为:g(x)=x5+x2+1.其实现原理框图如图4所示。设mi为输入信息序列,i=1,2,...,n,Rji表示输入mi后移位寄存器Rj(j=0,1,2,3,4)的状态值,由实现原理框图可得:
R0i=R4(i-1)⊕mi
R1i=R0(i-1)
R2i=R1(i-1)⊕R4(i-1)⊕mi
R3i=R2(i-1)
R4i=R3(i-1)
由此可推导出八路并行CRC校验公式为:
R08=R00⊕R20⊕R30⊕m2⊕m3⊕m5⊕m8
R18=R10⊕R30⊕R40⊕m1⊕m2⊕m4⊕m7
R28=R00⊕R30⊕R40⊕m1⊕m2⊕m5⊕m6⊕m8       ①
R38=R00⊕R10⊕R40⊕m1⊕m4⊕m5⊕m7
R48=R10⊕R20⊕m3⊕m4⊕m6
写成矩阵形式为:
R8=Scrc5R0                                 ②
其中,R8=[R08,R18,R28,R38,R48]H,表示输入8bit数据后新的CRC5状态寄存器的值,R0=[R00,R10,R20,R30,R40,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC初始余数和CRC校验数据组合成的向量,Scrc5=1,0,1,1,0,0,1,1,0,1,0,0,10,1,0,1,1,1,1,0,1,0,0,1,00,0,0,1,1,1,1,0,0,1,1,0,11,1,0,0,1,1,0,0,1,1,0,1,00,1,1,0,0,0,0,1,1,0,1,0,0,]]>Scrc5是一个5行13列的矩阵,是公式①各异或项的系数,可以看作是向量R0到R8的转移矩阵,公式②与普通矩阵的区别是在展开时将加法运算替换为异或运算。
CRC8的生成多项式为:g(x)=x8+x2+x+1.其实现原理框图如图5所示。设mi为输入信息序列,i=,1,2,...,n,Rji表示输入mi后移位寄存器Rj的状态值,j=0,1,2,3,...,7,由实现原理框图可得:
R0i=R7(i-1)⊕mi
R1i=R0(i-1)⊕R7(i-1)⊕mi
R2i=R1(i-1)⊕R7(i-1)⊕mi
Rni=R(n-1)(i-1),n=3,4,5,6,7
由此可推导出八路并行CRC校验公式为:
R08=R00⊕R60⊕R70⊕m1⊕m2⊕m8
R18=R00⊕R10⊕R60⊕m2⊕m7⊕m8
R28=R00⊕R10⊕R20⊕R60⊕m2⊕m6⊕m7⊕m8
R38=R10⊕R20⊕R30⊕R70⊕m1⊕m5⊕m6⊕m7
R48=R20⊕R30⊕R40⊕m4⊕m5⊕m6             ③
R58=R30⊕R40⊕R50⊕m3⊕m4⊕m5
R68=R40⊕R50⊕⊕60⊕m2⊕m3⊕m4
R78=R50⊕R60⊕R70⊕m1⊕m2⊕m3
写成矩阵形式为:
R8=Scrc8R0                               ④
其中,R8=[R08,R18,...,R78]H,表示输入8bit数据后新的CRC8状态寄存器的值,R0=[R00,R10,...,R70,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC8初始余数和CRC校验数据组合成的向量,Scrc8=1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,11,1,0,0,0,0,1,0,0,1,0,0,0,0,1,11,1,1,0,0,0,1,0,0,1,0,0,0,1,1,10,1,1,1,0,0,0,1,1,0,0,0,1,1,1,00,0,1,1,1,0,0,0,0,0,0,1,1,1,0,00,0,0,1,1,1,0,0,0,0,1,1,1,0,0,00,0,0,0,1,1,1,0,0,1,1,1,0,0,0,00,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,]]>Scrc8是一个8行16列的矩阵,是公式③各个异或项的系数,可以看作是向量R0到R8的转移矩阵.
多项式为0x1021的CRC16的生成多项式为:g(x)=x16+x12+x5+1.其实现原理框图如图6所示。设mi为输入信息序列,i=,1,2,...,n,Rji表示输入mi后移位寄存器Rj的状态值,j=0,1,2,3,...,15,由实现原理框图可得:
R0i=R(15)(i-1)⊕mi
R5i=R4(i-1)⊕R(15)(i-1)⊕mi
R(12)i=R(11)(i-1)⊕R(15)(i-1)⊕mi
Rki=R(k-1)(i-1),k=1,2,3,4,6,7,8,9,10,11,13,14,15
由此可推导出八路并行CRC16校验公式为:
R08=R80⊕R(12)0⊕m4⊕m8
R18=R90⊕R(13)0⊕m3⊕m7
R28=R(10)0⊕R(14)0⊕m2⊕m6
R38=R(11)0⊕R(15)0⊕m1⊕m5
R48=R(12)0⊕m4
R58=R80⊕R(12)0⊕R(13)0⊕m3⊕m4⊕m8
R68=R90⊕R(13)0⊕R(14)0⊕m2⊕m3⊕m7
R78=R(10)0⊕R(14)0⊕R(15)0⊕m1⊕m2⊕m6       ⑤
R88=R00⊕R(11)0⊕R(15)0⊕m1⊕m5
R98=R10⊕R(12)0⊕m4
R(10)8=R20⊕R(13)0⊕m3
R(11)8=R30⊕R(14)0⊕m2
R(12)8=R40⊕R80⊕R(12)0⊕R(15)0⊕m1⊕m4⊕m8
R(13)8=R50⊕R90⊕R(13)0⊕m3⊕m7
R(14)8=R60⊕R(10)0⊕R(14)0⊕m2⊕m6
R(15)8=R70⊕R(11)0⊕R(15)0⊕m1⊕m5
写成矩阵形式为:
R8=Scrc16R0                                ⑥
其中,R8=[R08,R18,...,R(15)8]H,表示输入8bit数据后新的CRC16状态寄存器的值,R0=[R00,R10,...,R(15)0,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC16初始余数和CRC校验数据组合成的向量,Scrc16是一个16行24列的矩阵,是公式⑤各个异或项的系数,可以看作是向量R0到R8的转移矩阵.
多项式为0x8005的CRC16的生成多项式为:g(x)=x16+x15+x⑥2+1.其实现原理框图如图7所示。设mi为输入信息序列,i=,1,2,...,n,Rji表示输入mi后移位寄存器Rj的状态值,j=0,1,2,3,...,15,由实现原理框图可得:
R0i=R(15)(i-1)⊕mi
R2i=R1(i-1)⊕R(15)(i-1)⊕mi
R(14)i=R(13)(i-1)⊕R(15)(i-1)⊕mi
R(15)i=R(14)(i-1)⊕R(15)(i-1)⊕mi
Rki=R(k-1)(i-1),k=1,3,4,5,6,7,8,9,10,11,12,13
由此可推导出八路并行CRC16校验公式为:
R08=R80⊕R90⊕R(10)0⊕R(11)0⊕R(12)0⊕R(13)0⊕R(14)0⊕R(15)0⊕m1⊕m2⊕m3⊕m4⊕m5⊕m6⊕m7⊕m8
R18=R90⊕R(10)0⊕R(11)0⊕R(12)0⊕R(13)0⊕R(14)0⊕R(15)0⊕m1⊕m2⊕m3⊕m4⊕m5⊕m6⊕m7
R28=R80⊕R90⊕m7⊕m8
R38=R90⊕R(10)0⊕m6⊕m7
R48=R(10)0⊕R(11)0⊕m5⊕m6
R58=R(11)0⊕R(12)0⊕m4⊕m5
R68=R(12)0⊕R(13)0⊕m3⊕m4
R78=R(13)0⊕R(14)0⊕m2⊕m3
R88=R00⊕R(14)0⊕R(15)0⊕m1⊕m2    ⑦
R98=R10⊕R(15)0⊕m1
R(10)8=R20
R(11)8=R30
R(12)8=R40
R(13)8=R50
R(14)8=R60
R(15)8=R70⊕R80⊕R90⊕R(10)0⊕R(11)0⊕R(12)0⊕R(13)0⊕R(14)0⊕R(15)0⊕m1⊕m2⊕m3⊕m4⊕m5⊕m6⊕m7⊕m8
写成矩阵形式为:
R8=S′crc16R0                      ⑧
其中,R8=[R08,R18,...,R(15)8]H,表示输入8bit数据后新的CRC16状态寄存器的值,R0=[R00,R10,...,R(15)0,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC16初始余数和CRC校验数据组合成的向量,S′crc16是一个16行24列的矩阵,是公式⑦各个异或项的系数,可以看作是向量R0到R8的转移矩阵.
CRC32的生成多项式为:g(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1.其实现原理框图如图8所示。设mi为输入信息序列,i=,1,2,...,n,Rji表示输入mi后移位寄存器Rj的状态值,j=0,1,2,3,...,31,由实现原理框图可得:
R0i=R(31)(i-1)⊕mi
R1i=R0(i-1)⊕R(31)(i-1)⊕mi
R2i=R1(i-1)⊕R(31)(i-1)⊕mi
R4i=R3(i-1)⊕R(31)(i-1)⊕mi
R5i=R4(i-1)⊕R(31)(i-1)⊕mi
R7i=R6(i-1)⊕R(31)(i-1)⊕mi
R8i=R7(i-1)⊕R(31)(i-1)⊕mi
R(10)i=R9(i-1)⊕R(31)(i-1)⊕mi
R(11)i=R(10)(i-1)⊕R(31)(i-1)⊕mi
R(12)i=R(11)(i-1)⊕R(31)(i-1)⊕mi
R(16)i=R(15)(i-1)⊕R(31)(i-1)⊕mi
R(22)i=R(21)(i-1)⊕R(31)(i-1)⊕mi
R(23)i=R(22)(i-1)⊕R(31)(i-1)⊕mi
R(26)i=R(25)(i-1)⊕R(31)(i-1)⊕mi
Rki=R(k-1)(i-1),k=3,6,9,13,14,15,17,18,19,20,21,24,25,27,28,29,30,31
由此可推导出八路并行CRC32校验公式为:
R08=R(24)0⊕R(30)0⊕m2⊕m8
R18=R(24)0⊕R(25)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m7⊕m8
R28=R(24)0⊕R(25)0⊕R(26)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m6⊕m7⊕m8
R38=R(25)0⊕R(26)0⊕R(27)0⊕R(31)0⊕m1⊕m5⊕m6⊕m7
R48=R(24)0⊕R(26)0⊕R(27)0⊕R(28)0⊕R(30)0⊕m2⊕m4⊕m5⊕m6⊕m8
R58=R(24)0⊕R(25)0⊕R(27)0⊕R(28)0⊕R(29)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m3⊕m4⊕m5⊕m7⊕m8
R68=R(25)0⊕R(26)0⊕R(28)0⊕R(29)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m3⊕m4⊕m6⊕m7
R78=R(24)0⊕R(26)0⊕R(27)x⊕R(29)0⊕R(31)0⊕m1⊕m3⊕m5⊕m6⊕m8
R88=R00⊕R(24)0⊕R(25)0⊕R(27)0⊕R(28)0⊕m4⊕m5⊕m7⊕m8
R98=R10⊕R(25)0⊕R(26)0⊕R(28)0⊕R(29)0⊕m3⊕m4⊕m6⊕m7
R(10)8=R20⊕R(24)0⊕R(26)0⊕R(27)0⊕R(29)0⊕m3⊕m5⊕m6⊕m8
R(11)8=R30⊕R(24)0⊕R(25)0⊕R(27)0⊕R(28)0⊕m4⊕m5⊕m7⊕m8
R(12)8=R40⊕R(24)0⊕R(25)0⊕R(26)0⊕R(28)0⊕R(29)0⊕R(30)0⊕m2⊕m3⊕m4⊕m6⊕m7⊕m8
R(13)8=R50⊕R(24)0⊕R(25)0⊕R(26)0⊕R(28)0⊕R(29)0⊕R(30)0⊕m2⊕m3⊕m4⊕m6⊕m7⊕m8
R(14)8=R60⊕R(26)0⊕R(27)0⊕R(28)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m4⊕m5⊕m6
R(15)8=R70⊕R(27)0⊕R(28)0⊕R(29)0⊕R(31)0⊕m1⊕m3⊕m4⊕m5    ⑨
R(16)8=R80⊕R(24)0⊕R(28)0⊕R(29)0⊕m3⊕m4⊕m8
R(17)8=R90⊕R(25)0⊕R(29)0⊕R(30)0⊕m2⊕m3⊕m7
R(18)8=R(10)0⊕R(26)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m6
R(19)8=R(11)0⊕R(27)0⊕R(31)0⊕m1⊕m5
R(20)8=R(12)0⊕R(28)0⊕m4
R(21)8=R(13)0⊕R(29)0⊕m3
R(22)8=R(14)0⊕R(24)0⊕m8
R(23)8=R(15)0⊕R(24)0⊕R(25)0⊕R(30)0⊕m2⊕m7⊕m8
R(24)8=R(16)0⊕R(25)0⊕R(26)0⊕R(31)0⊕m1⊕m6⊕m7
R(25)8=R(17)0⊕R(26)0⊕R(27)0⊕m5⊕m6
R(26)8=R(18)0⊕R(24)0⊕R(27)0⊕R(28)0⊕R(30)0⊕m2⊕m4⊕m5⊕m8
R(27)8=R(19)0⊕R(28)0⊕R(29)0⊕R(31)0⊕R(25)0⊕m1⊕m3⊕m4⊕m7
R(28)8=R(20)0⊕R(26)0⊕R(29)0⊕R(30)0⊕m2⊕m3⊕m6
R(29)8=R(21)0⊕R(27)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m5
R(30)8=R(22)0⊕R(28)0⊕R(31)0⊕m1⊕m4
R(31)8=R(23)0⊕R(29)0⊕m3
写成矩阵形式为:
R8=Scrc32R0                ⑩
其中,R8=[R08,R18,...,R(31)8]H,表示输入8bit数据后新的CRC32状态寄存器的值,R0=[R00,R10,...,R(31)0,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC32初始余数和CRC校验数据组合成的向量,Scrc32是一个32行40列的矩阵,是公式⑨各个异或项的系数,可以看作是向量R0到R8的转移矩阵.
由公式①至公式⑩可以看出,各条CRC指令的状态转移矩阵Scrc是由各自的CRC多项式决定的,一旦CRC多项式确定了,状态转移矩阵Scrc也就确定了,各条CRC指令的本质区别就是其各自的转移矩阵Scrc不同,因此硬件复用管理单元的作用就是根据不同的CRC指令选择不同的转移矩阵Scrc。在指令的执行阶段,首先硬件复用管理单元根据不同的CRC指令选出该CRC指令对应的转移矩阵Scrc,然后从寄存器中将源操作数载入组成向量R0,然后根据各条CRC指令的状态转移公式在状态寄存器并行转移单元中完成状态转移,得到新的CRC余数R8,最后将R8存储到寄存器中。这样在硬件复用控制单元的控制下,仅利用一套硬件电路即可完成不同CRC指令的矢量运算,大幅减少了硬件资源开销。
在设计状态寄存器并行转移单元时对电路做了进一步优化,对各条CRC指令的状态转移矩阵Scrc做了进一步分析,找出每个Scrc都为0的异或项,然后将其从状态寄存器并行转移电路中去掉,这样可以进一步减少硬件开销。
本方法设计的CRC校验装置非常容易实现,只需调用本方法设计的CRC指令即可,降低了CRC设计的难度,首先将要校验的数据从存储器中读出,然后调用这些专用指令每次对8bit数据进行处理,当所有的数据做完CRC计算后,最后结果寄存器中剩余的数据即是CRC校验结果。在CRC校验装置实现时可以利用处理器的流水线技术和指令并发技术大幅提高运算速率。调用本方法设计的CRC指令完成CRC校验的实现流程如图9所示。
上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应当看作是对其他实施例的排出,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

一种矢量CRC校验指令的设计方法.pdf_第1页
第1页 / 共15页
一种矢量CRC校验指令的设计方法.pdf_第2页
第2页 / 共15页
一种矢量CRC校验指令的设计方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种矢量CRC校验指令的设计方法.pdf》由会员分享,可在线阅读,更多相关《一种矢量CRC校验指令的设计方法.pdf(15页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104133736A43申请公布日20141105CN104133736A21申请号201410366239022申请日20140729G06F11/1020060171申请人江苏宏云技术有限公司地址215634江苏省苏州市张家港市保税区新兴产业育成中心A幢301B室江苏宏云技术有限公司72发明人刘勇陶建平王和国孙振玮张永攀74专利代理机构常州市维益专利事务所32211代理人王涵江54发明名称一种矢量CRC校验指令的设计方法57摘要本发明公开了一种DSP中矢量CRC校验指令的设计方法,在DSP中设计了全新的矢量CRC执行单元,在此基础上实现了矢量CRC5校验指令、矢量CRC8。

2、校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令以及利用这些专用指令设计的CRC校验装置。CRC指令运行效率高,使用简单灵活,通用性强,大大简化了对数据进行CRC校验的程序设计。使用较少的硬件资源实现了多条矢量CRC校验指令,节省了硬件资源,降低了成本。本发明充分利用了处理器设计中的流水线技术、多指令并发技术和单指令多数据技术,极大地提高了CRC校验的效率,本发明的CRC指令具有吞吐率高、功耗低、成本低等特点。51INTCL权利要求书1页说明书9页附图4页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书9页附图4页10申请公布号CN10413。

3、3736ACN104133736A1/1页21一种矢量CRC检验指令的设计方法,设计了一种全新的矢量CRC执行单元,在此基础上实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令的设计以及使用这些指令设计的CRC校验装置。2如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述矢量CRC执行单元包括硬件复用管理单元和状态寄存器并行转移单元,硬件复用管理单元控制各条矢量CRC指令充分复用硬件资源,可以保证使用较少的硬件资源即可完成多条矢量CRC指令的设计,减少了硬件开销;状态寄存器并行转移单元在输入8BIT数据后只。

4、需要一个周期即可完成状态寄存器值的转移,执行时间短,运行效率高。3如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC5校验指令是一条8路并行CRC校验指令,每次将初始CRC余数和8BIT数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的5BIT数据即是CRC校验结果。4如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC8校验指令是一条8路并行CRC校验指令,每次将初始CRC余数和8BIT数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的8B。

5、IT数据即是CRC校验结果。5如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述矢量CRC16校验指令是一条8路并行CRC校验指令,每次将初始CRC余数和8BIT数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的16BIT数据即是CRC校验结果。6如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC24校验指令是一条8路并行CRC校验指令,每次将初始CRC余数和8BIT数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的24BIT数据即是CRC校验结果。7。

6、如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC32校验指令是一条8路并行CRC校验指令,每次将初始CRC余数和8BIT数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的32BIT数据即是CRC校验结果。8如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,本设计方法不仅适用于设计如权利要求1所述的各条CRC指令,也适用于设计任意多项式的CRC指令,按本文提供的设计方法可以设计出任意多项式的CRC校验指令。9如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,本设计方法可以设计如权利要求2至。

7、权利要求6所述的8路并行的CRC指令,还可以设计任意路并行的CRC指令。10如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的CRC校验装置利用本方法设计的CRC指令和处理器的读取、存储数据指令完成CRC校验,在此CRC校验装置中充分利用了流水线技术和多指令并发技术,可以极大的提高CRC校验的效率。权利要求书CN104133736A1/9页3一种矢量CRC校验指令的设计方法技术领域0001一种DSP中矢量CRC校验指令的设计方法,涉及通信芯片中的数字信号处理,属于通信、存储领域,特别涉及数字信号处理芯片中CRC校验模块的设计。背景技术0002CRC编码是一种循环冗余校验码C。

8、YCLICREDUNDANCYCHECK,是数据通信领域中最常用的一种差错校验码,其特征是信息字段和检验字段的长度可以任意选定。0003CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的K位二进制码序列,以一定的规则产生一个检验码R位,附在信息后,构成一个新的二进制码序列共KR位,最后发送出去。接收端根据同样的规则校验,以确定传送中是否出错。0004传统的CRC校验实现方法有软件方法和硬件方法,软件方法主要有直接计算法和查表法,直接计算法适用于所有长度的数据校验,最为灵活,但由于是按位计算,是一种串行计算方法,效率差,速度慢。查表法按字节计算CRC校验,是一种并行计算方法,但是需要提。

9、前存储一个256字节的表格,会占用较多的硬件资源。硬件实现方法的优点是计算速度快、效率高,但灵活性较差、不具有通用性,成本高。0005随着通讯技术的发展,对数据的处理效率要求越来越高,越来越多的设计方法选择了CRC的硬件实现方式,为了克服硬件实现方式灵活性和通用性差的缺点,在处理器中设计CRC校验指令逐渐成为一种趋势,INTEL公司提出了一套灵活CRC指令集CN102096609A,任给一个CRC多项式和数据,都可以对数据进行多项式规定的CRC校验,其实现过程是首先通过多项式求模运算对CRC多项式进行扩展,得到预计算扩展多项式,然后对数据进行混洗,混洗后利用扩展多项式反复对数据在GALOIS域。

10、上做多项式除法,最后得到CRC校验结果,此种CRC指令集虽然使用灵活,但是实现流程复杂,运行效率较低。0006本DSP主要面向通信领域,使用的CRC校验种类比较固定,所以直接在DSP中设计了CRC的专用指令,指令设计简单,运行效率高,设计方法与INTEL的灵活CRC指令集有本质的区别。通过软件编程调用这些CRC指令即可快速完成CRC校验,实现简单、快速且节省资源。本发明利用SIMDSINGLEINSTRUCTIONMULTIPLEDATA技术、流水线技术和指令并发技术大幅提高了CRC校验的速率。同时,本CRC校验的专用指令共享了处理器的部分硬件资源,节省了硬件开销。发明内容0007本发明要解决。

11、的技术问题是本发明设计了一种全新的矢量CRC执行单元,在此基础上完实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令的设计以及使用这些指令设计的CRC校验装置。0008本发明解决其技术问题所采用的技术方案是全新的矢量CRC执行单元由硬件复用管理单元和状态寄存器并行转移单元组成,硬件复用管理单元控制各条矢量CRC指令充分复用硬件资源,可以保证使用较少的硬件资源即可完成多条矢量CRC指令的设计,减少说明书CN104133736A2/9页4了硬件开销;状态寄存器并行转移单元在输入8BIT数据后只需要一个周期即可完成状态寄存器值的转。

12、移,运行效率高。0009矢量CRC5校验指令是8路并行CRC校验指令,每次调用该指令可计算8BIT数据,输入8BIT数据后通过推导出的CRC5并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的5BIT数据即是CRC校验结果。0010矢量CRC8校验指令是8路并行CRC校验指令,每次调用该指令可计算8BIT数据,输入8BIT数据后通过推导出的CRC8并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的8BIT数据即是CRC校验结果。0011矢量CRC16校验指令,每次调用该指令可计算8BIT数据,输入8BIT数据后通过推导出的CRC16并。

13、行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的16BIT数据即是CRC校验结果。0012矢量CRC24校验指令,每次调用该指令可计算8BIT数据,输入8BIT数据后通过推导出的CRC24并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的24BIT数据即是CRC校验结果。0013矢量CRC32校验指令,每次调用该指令可计算8BIT数据,输入8BIT数据后通过推导出的CRC32并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的32BIT数据即是CRC校验结果。0014本方法不仅适用于以上CRC指令的设计,也。

14、适用了任意多项式CRC指令的设计,变换CRC的多项式,同样可以利用本方法设计出矢量CRC指令。0015利用本方法不仅可以设计8路并行的CRC指令,也可以设计16路、32路并行的CRC指令,甚至可以设计任意路并行的CRC指令。0016本方法的发明内容还包括利用这些CRC指令设计的CRC校验装置,利用本方法设计的CRC指令和处理器的读取、存储数据指令完成CRC校验,在此CRC校验装置中充分利用了处理器的流水线技术和多指令并发技术,可以极大的提高CRC校验的效率。0017本发明的有益效果是一种DSP中矢量CRC校验指令的设计方法,在DSP中设计了全新的矢量CRC执行单元,在此基础上实现了矢量CRC5。

15、校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令以及利用这些专用指令设计的CRC校验装置。此设计方法设计的CRC专用指令,运行效率高,使用简单灵活,通用性强,大大简化了对数据进行CRC校验的程序设计。同时,CRC执行单元包含硬件复用管理单元,可以保证各条CRC指令充分复用DSP的硬件资源,使用较少的硬件资源实现了多条矢量CRC校验指令,节省了硬件资源,降低了成本。另外,本设计方法充分利用了处理器设计中的流水线技术、多指令并发技术和单指令多数据SINGLEINSTRUCTIONMULTIPLEDATA,SIMD技术,极大地提高了CRC校验的效。

16、率。此方法设计的CRC指令具有吞吐率高、功耗低、成本低等特点。附图说明0018图1CRC指令实施例的系统框图;0019图2图1所示的处理器实施例的框图;0020图3CRC指令执行单元实施例的框图;说明书CN104133736A3/9页50021图4CRC5实现原理框图;0022图5CRC8实现原理框图;0023图6多项式为0X1021的CRC16实现原理框图;0024图7多项式为0X8005的CRC16实现原理框图;0025图8多项式为0X04C11DB7的CRC32实现原理框图;0026图9利用本发明设计的CRC指令实现的CRC校验实现流程图;具体实施方式0027为了使本发明所要解决的技术问。

17、题、技术方案及有益效果更佳清楚、明白,以下结合附图和实施例,对本发明进行进一步的详细说明,应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。0028本实施例使用的DSP是矢量数字信号处理器,数据总线位宽是16BIT,最多支持8个16BIT数据的并行乘加运算,拥有矢量VITERBI指令,具有超高的数字信号处理性能。本发明使用的DSP并不局限于本实施例所使用的DSP,在任意的DSP中均可按照本设计提供的方法完成CRC指令的设计。0029图1是本发明所设计的CRC指令实施例的系统100框图,系统100包括处理器101、程序存储器106和数据存储器108,处理器通过16BIT位宽的。

18、总线对程序存储器进行访问,通过16BIT位宽的数据总线对数据存储器进行访问。0030处理器101包括程序访问控制器102、数据访问控制器104和CRC执行单元103,程序访问控制器102控制CRC指令的读取,数据访问控制器104控制计算数据的读取和CRC结果的存储,CRC执行单元103是CRC指令的执行单元。0031图2是图1所示的处理器101的实施例框图,框图展示了CRC指令的执行过程,执行时需要3级流水线,在第一周期,在程序访问控制器的控制下,通过程序数据总线105将程序存储器106中的CRC指令读取到寄存器堆201中,此过程称为流水线的取指阶段。在第二周期,处理器将取出的CRC指令送入指。

19、令译码单元202进行译码,将译码结果存储到寄存器堆201的寄存器中,此过程称为流水线的译码阶段。在第三周期,根据译码结果在CRC执行单元103中执行CRC指令,此过程称为流水线的执行阶段,此过程需要一个周期,所以CRC指令为单周期指令。0032本发明使用的DSP支持指令并发执行,在执行CRC的同时可以执行数据的访问指令,在数据访问控制器104的控制下,通过数据总线107将数据从数据存储器108中读取到寄存器堆201中,在CRC的执行阶段将数据载入到CRC执行单元103中,指令执行后将数据缓存到寄存器中,CRC计算完成后将结果通过数据访问指令存储到存储器108中。0033以矢量CRC32指令的实。

20、施例为例说明指令的执行过程,在CRC执行单元103中执行的矢量CRC32指令宏指令用符号表示为0034CRC32_0X04C11DB7LR1,R2,R30035其中,R1、R2、R3是三个16BIT的寄存器。矢量CRC32指令具有三个操作数,R1、R2和R3都是源操作数,同时R2和R3也是目的操作数据,CRC校验结果存储在R2和R3中。第一源操作数“OP1”存储在寄存器堆201中的R1中,第一源操作数是将要进行CRC校验的数据;第二源操作数“OP2”和第三源操作数“OP3”存储在寄存器堆201中的R2说明书CN104133736A4/9页6和R3中,R2存储的是初始CRC余数的低16BIT,R。

21、3存储的是初始CRC余数的高16BIT。同时,R2和R3也是指令的目的操作数,CRC指令运算后的新余数再存回到R2和R3中,R2存储新CRC余数的低16BIT,R3存储新CRC余数的高16BIT。0036R1是16BIT寄存器,而指令CRC32_0X04C11DB7L是8BIT并行指令,只对R1中的低8BIT数据进行CRC计算,使用如下的指令对R1中的高8BIT数据进行CRC计算CRC32_0X04C11DB7HR1,R2,R3。0037图3显示了CRC指令的执行过程,在流水线的执行阶段,硬件复用管理单元根据译码结果控制状态寄存器并行转移单元的运行,寄存器并行转移单元将3个源操作数据载入,一个。

22、周期完成状态寄存器的转移,状态寄存器中的值即是新的CRC余数,最后将状态寄存器中的值存储到目的寄存器R2和R3中。0038以下以矢量CRC5指令、矢量CRC8指令、矢量CRC16指令和矢量CRC32指令的实施例来说明硬件复用管理单元和状态寄存器并行转移单元的设计。0039CRC5的生成多项式为GXX5X21其实现原理框图如图4所示。设MI为输入信息序列,I1,2,N,RJI表示输入MI后移位寄存器RJJ0,1,2,3,4的状态值,由实现原理框图可得0040R0IR4I1MI0041R1IR0I10042R2IR1I1R4I1MI0043R3IR2I10044R4IR3I10045由此可推导出八。

23、路并行CRC校验公式为0046R08R00R20R30M2M3M5M80047R18R10R30R40M1M2M4M70048R28R00R30R40M1M2M5M6M80049R38R00R10R40M1M4M5M70050R48R10R20M3M4M60051写成矩阵形式为0052R8SCRC5R00053其中,R8R08,R18,R28,R38,R48H,表示输入8BIT数据后新的CRC5状态寄存器的值,R0R00,R10,R20,R30,R40,M1,M2,M3,M4,M5,M6,M7,M8,H,是由CRC初始余数和CRC校验数据组合成的向量,SCRC5是一个5行13列的矩阵,是公式各。

24、异或项的系数,可以看作是向量R0到R8的转移矩阵,公式与普通矩阵的区别是在展开时将加法运算替换为异或运算。0054CRC8的生成多项式为GXX8X2X1其实现原理框图如图5所示。设MI为输入信息序列,I,1,2,N,RJI表示输入MI后移位寄存器RJ的状态值,J0,1,2,3,7,由实现原理框图可得说明书CN104133736A5/9页70055R0IR7I1MI0056R1IR0I1R7I1MI0057R2IR1I1R7I1MI0058RNIRN1I1,N3,4,5,6,70059由此可推导出八路并行CRC校验公式为0060R08R00R60R70M1M2M80061R18R00R10R60。

25、M2M7M80062R28R00R10R20R60M2M6M7M80063R38R10R20R30R70M1M5M6M70064R48R20R30R40M4M5M60065R58R30R40R50M3M4M50066R68R40R5060M2M3M40067R78R50R60R70M1M2M30068写成矩阵形式为0069R8SCRC8R00070其中,R8R08,R18,R78H,表示输入8BIT数据后新的CRC8状态寄存器的值,R0R00,R10,R70,M1,M2,M3,M4,M5,M6,M7,M8,H,是由CRC8初始余数和CRC校验数据组合成的向量,SCRC8是一个8行16列的矩阵,。

26、是公式各个异或项的系数,可以看作是向量R0到R8的转移矩阵0071多项式为0X1021的CRC16的生成多项式为GXX16X12X51其实现原理框图如图6所示。设MI为输入信息序列,I,1,2,N,RJI表示输入MI后移位寄存器RJ的状态值,J0,1,2,3,15,由实现原理框图可得0072R0IR15I1MI0073R5IR4I1R15I1MI0074R12IR11I1R15I1MI0075RKIRK1I1,K1,2,3,4,6,7,8,9,10,11,13,14,150076由此可推导出八路并行CRC16校验公式为0077R08R80R120M4M80078R18R90R130M3M700。

27、79R28R100R140M2M60080R38R110R150M1M50081R48R120M40082R58R80R120R130M3M4M8说明书CN104133736A6/9页80083R68R90R130R140M2M3M70084R78R100R140R150M1M2M60085R88R00R110R150M1M50086R98R10R120M40087R108R20R130M30088R118R30R140M20089R128R40R80R120R150M1M4M80090R138R50R90R130M3M70091R148R60R100R140M2M60092R158R70R1。

28、10R150M1M50093写成矩阵形式为0094R8SCRC16R00095其中,R8R08,R18,R158H,表示输入8BIT数据后新的CRC16状态寄存器的值,R0R00,R10,R150,M1,M2,M3,M4,M5,M6,M7,M8,H,是由CRC16初始余数和CRC校验数据组合成的向量,SCRC16是一个16行24列的矩阵,是公式各个异或项的系数,可以看作是向量R0到R8的转移矩阵0096多项式为0X8005的CRC16的生成多项式为GXX16X15X21其实现原理框图如图7所示。设MI为输入信息序列,I,1,2,N,RJI表示输入MI后移位寄存器RJ的状态值,J0,1,2,3,。

29、15,由实现原理框图可得0097R0IR15I1MI0098R2IR1I1R15I1MI0099R14IR13I1R15I1MI0100R15IR14I1R15I1MI0101RKIRK1I1,K1,3,4,5,6,7,8,9,10,11,12,130102由此可推导出八路并行CRC16校验公式为0103R08R80R90R100R110R120R130R140R150M1M2M3M4M5M6M7M80104R18R90R100R110R120R130R140R150M1M2M3M4M5M6M70105R28R80R90M7M80106R38R90R100M6M70107R48R100R110。

30、M5M60108R58R110R120M4M50109R68R120R130M3M40110R78R130R140M2M30111R88R00R140R150M1M20112R98R10R150M10113R108R20说明书CN104133736A7/9页90114R118R300115R128R400116R138R500117R148R600118R158R70R80R90R100R110R120R130R140R150M1M2M3M4M5M6M7M80119写成矩阵形式为0120R8SCRC16R00121其中,R8R08,R18,R158H,表示输入8BIT数据后新的CRC16状态寄。

31、存器的值,R0R00,R10,R150,M1,M2,M3,M4,M5,M6,M7,M8,H,是由CRC16初始余数和CRC校验数据组合成的向量,SCRC16是一个16行24列的矩阵,是公式各个异或项的系数,可以看作是向量R0到R8的转移矩阵0122CRC32的生成多项式为GXX32X26X23X22X16X12X11X10X8X7X5X4X2X1其实现原理框图如图8所示。设MI为输入信息序列,I,1,2,N,RJI表示输入MI后移位寄存器RJ的状态值,J0,1,2,3,31,由实现原理框图可得0123R0IR31I1MI0124R1IR0I1R31I1MI0125R2IR1I1R31I1MI0。

32、126R4IR3I1R31I1MI0127R5IR4I1R31I1MI0128R7IR6I1R31I1MI0129R8IR7I1R31I1MI0130R10IR9I1R31I1MI0131R11IR10I1R31I1MI0132R12IR11I1R31I1MI0133R16IR15I1R31I1MI0134R22IR21I1R31I1MI0135R23IR22I1R31I1MI0136R26IR25I1R31I1MI0137RKIRK1I1,K3,6,9,13,14,15,17,18,19,20,21,24,25,27,28,29,30,310138由此可推导出八路并行CRC32校验公式为01。

33、39R08R240R300M2M80140R18R240R250R300R310M1M2M7M80141R28R240R250R260R300R310M1M2M6M7M80142R38R250R260R270R310M1M5M6M70143R48R240R260R270R280R300M2M4M5M6M80144R58R240R250R270R280R290R300R310M1M2M3M4M5M7M8说明书CN104133736A8/9页100145R68R250R260R280R290R300R310M1M2M3M4M6M70146R78R240R260R27XR290R310M1M3M5M。

34、6M80147R88R00R240R250R270R280M4M5M7M80148R98R10R250R260R280R290M3M4M6M70149R108R20R240R260R270R290M3M5M6M80150R118R30R240R250R270R280M4M5M7M80151R128R40R240R250R260R280R290R300M2M3M4M6M7M80152R138R50R240R250R260R280R290R300M2M3M4M6M7M80153R148R60R260R270R280R300R310M1M2M4M5M60154R158R70R270R280R290R。

35、310M1M3M4M50155R168R80R240R280R290M3M4M80156R178R90R250R290R300M2M3M70157R188R100R260R300R310M1M2M60158R198R110R270R310M1M50159R208R120R280M40160R218R130R290M30161R228R140R240M80162R238R150R240R250R300M2M7M80163R248R160R250R260R310M1M6M70164R258R170R260R270M5M60165R268R180R240R270R280R300M2M4M5M8016。

36、6R278R190R280R290R310R250M1M3M4M70167R288R200R260R290R300M2M3M60168R298R210R270R300R310M1M2M50169R308R220R280R310M1M40170R318R230R290M30171写成矩阵形式为0172R8SCRC32R00173其中,R8R08,R18,R318H,表示输入8BIT数据后新的CRC32状态寄存器的值,R0R00,R10,R310,M1,M2,M3,M4,M5,M6,M7,M8,H,是由CRC32初始余数和CRC校验数据组合成的向量,SCRC32是一个32行40列的矩阵,是公式各个。

37、异或项的系数,可以看作是向量R0到R8的转移矩阵0174由公式至公式可以看出,各条CRC指令的状态转移矩阵SCRC是由各自的CRC多项式决定的,一旦CRC多项式确定了,状态转移矩阵SCRC也就确定了,各条CRC指令的本质区别就是其各自的转移矩阵SCRC不同,因此硬件复用管理单元的作用就是根据不同的CRC指令选择不同的转移矩阵SCRC。在指令的执行阶段,首先硬件复用管理单元根据不同的CRC指说明书CN104133736A109/9页11令选出该CRC指令对应的转移矩阵SCRC,然后从寄存器中将源操作数载入组成向量R0,然后根据各条CRC指令的状态转移公式在状态寄存器并行转移单元中完成状态转移,得。

38、到新的CRC余数R8,最后将R8存储到寄存器中。这样在硬件复用控制单元的控制下,仅利用一套硬件电路即可完成不同CRC指令的矢量运算,大幅减少了硬件资源开销。0175在设计状态寄存器并行转移单元时对电路做了进一步优化,对各条CRC指令的状态转移矩阵SCRC做了进一步分析,找出每个SCRC都为0的异或项,然后将其从状态寄存器并行转移电路中去掉,这样可以进一步减少硬件开销。0176本方法设计的CRC校验装置非常容易实现,只需调用本方法设计的CRC指令即可,降低了CRC设计的难度,首先将要校验的数据从存储器中读出,然后调用这些专用指令每次对8BIT数据进行处理,当所有的数据做完CRC计算后,最后结果寄。

39、存器中剩余的数据即是CRC校验结果。在CRC校验装置实现时可以利用处理器的流水线技术和指令并发技术大幅提高运算速率。调用本方法设计的CRC指令完成CRC校验的实现流程如图9所示。0177上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应当看作是对其他实施例的排出,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。说明书CN104133736A111/4页12图1图2说明书附图CN104133736A122/4页13图3图4图5说明书附图CN104133736A133/4页14图6图7图8说明书附图CN104133736A144/4页15图9说明书附图CN104133736A15。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1