CN105049057A - 一种面向128位并行输入的crc-32校验电路 - Google Patents

一种面向128位并行输入的crc-32校验电路 Download PDF

Info

Publication number
CN105049057A
CN105049057A CN201510504485.2A CN201510504485A CN105049057A CN 105049057 A CN105049057 A CN 105049057A CN 201510504485 A CN201510504485 A CN 201510504485A CN 105049057 A CN105049057 A CN 105049057A
Authority
CN
China
Prior art keywords
module
crc
coding
xor
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510504485.2A
Other languages
English (en)
Other versions
CN105049057B (zh
Inventor
赵坤鹏
陈庆宇
吴龙胜
马徐瀚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
771 Research Institute of 9th Academy of CASC
Original Assignee
771 Research Institute of 9th Academy of CASC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 771 Research Institute of 9th Academy of CASC filed Critical 771 Research Institute of 9th Academy of CASC
Priority to CN201510504485.2A priority Critical patent/CN105049057B/zh
Publication of CN105049057A publication Critical patent/CN105049057A/zh
Application granted granted Critical
Publication of CN105049057B publication Critical patent/CN105049057B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供的一种面向128位并行输入的CRC-32校验电路,通过基于预处理矩阵的硬件电路对4组32位并行数据分别进行编码,对CRC寄存器中的CRC值进行多级编码操作。将得到的各级编码结果分别与4组并行数据的预处理结果进行异或运算,在整数字节编码模块中对数据和各级CRC值编码结果进行进一步编码运算得到非整字的编码结果,最终通过next_crc选择模块选择出最终的编码结果,通过反相器得到CRC值,通过比较器得到校验结果。在不增加硬件成本、不降低整体系统性能的基础上,提供了高效率的CRC编解码电路,大大提高了实时处理数据的速度和数据传输效率,能够实现对128位以内的8*N位并行数据的CRC编码校验。

Description

一种面向128位并行输入的CRC-32校验电路
技术领域
本发明专利涉及容错技术领域,具体为一种面向128位并行输入的CRC-32校验电路。
背景技术
循环冗余校验CRC(CyclicRedundancyCheck)以较优的误码检错能力和易于硬件实现的优点,广泛应用于各种通信协议中。
传统的CRC编解码电路基于串行数据输入方式,其实现方式简单,资源占用小,但是其只能处理串行输入的数据,难以实现当前高速并行网络的数据校验。当前,实现并行数据的校验电路多样,主要有:(1)公式法,根据串行移位电路推导得出当前CRC值与前一级CRC值和当前并行数据输入的关系。随着位宽的提高,公式法推导关系变得极为复杂,难以实现。(2)查表法,根据输入数据从CRC码表中查找出相应的值进行处理。由于查表法需要大容量的存储单元,其硬件消耗巨大,随着位宽的提高,其代价更高,不利于实现高位宽的实时校验处理。
发明内容
针对现有技术中存在的问题,本发明提供一种硬件成本低,实时处理速度快,数据传输效率高的面向128位并行输入的CRC-32校验电路。
本发明是通过以下技术方案来实现:
一种面向128位并行输入的CRC-32校验电路,包括整数字节编码模块,反相器,比较器,分别以字节有效信号be为数据选择输出信号的CRC选择模块,NEXT_CRC选择模块,CRC寄存器和数据选择模块;以及用于对8*N位并行数据从高位到低位均分为四组后的输入数据对应进行预处理编码的四个D2C编码模块,其中,N=1,2……16;用于对CRC寄存器中的CRC值进行四级编码的四级C2C编码模块;用于将四组预处理结果和各级编码结果对应进行异或运算的四级Xor模块;CRC选择模块用于对CRC寄存器中的CRC值和前三级Xor模块的输出进行选择输出,作为整数字节编码模块的初始CRC值;数据选择模块用于对四组输入数据进行选择输出32位并行数据,作为整数字节编码模块的输入值;整数字节编码模块用于将初始CRC值对输入值进行校验,然后输出三个分别关于高8位、高16位和高24位的CRC校验结果;NEXT_CRC选择模块采用多路选择器,输入端分别连接整数字节编码模块的三路校验结果和四级Xor模块的异或运算结果,输出端输出选择后得到的CRC校验结果,并连接至CRC寄存器的输入端;反相器用于将CRC寄存器中的CRC值按位取反输出所需的CRC编码;比较器用于将CRC寄存器中的CRC值与魔数相比,并将校验成功或失败的结果输出。
优选的,四个D2C编码模块包括D2C_1编码模块,D2C_2编码模块,D2C_3编码模块和D2C_4编码模块;四级C2C编码模块包括C2C_0编码模块,C2C_1编码模块,C2C_2编码模块和C2C_3编码模块;四级Xor模块包括Xor_1模块,Xor_2模块,Xor_3模块和Xor_4模块;四个D2C编码模块的输出端和四级C2C编码模块的输出端分别连接四级Xor模块的输入端;Xor_1模块的输出端连接C2C_1编码模块的输入端,Xor_2模块的输出端连接C2C_2编码模块的输入端,Xor_3模块的输出端连接C2C_3编码模块的输入端。
优选的,CRC寄存器连接有CRC时钟信号clk和CRC复位信号rst。
优选的,当N<16时,将并行数据低位补0达到128位后均分为4组数据再分别进行预处理。
优选的,C2C编码模块,将输入的32位并行数据按以下编码方式进行编码,其中,+表示二进制异或运算;
优选的,D2C编码模块将输入的32位并行数据按以下编码方式进行编码,其中,+表示二进制异或运算;
优选的,整数字节编码模块将输入初始CRC值对输入值按以下编码方式进行编码,其中,+表示二进制异或运算;
与现有技术相比,本发明具有以下有益的技术效果:
本发明提供的面向128位并行输入的CRC-32校验电路,通过基于预处理矩阵的硬件电路对4组32位并行数据分别进行编码,对CRC寄存器中的CRC值进行多级编码操作。将得到的各级编码结果分别与4组并行数据的预处理结果进行异或运算,在整数字节编码模块中对数据和各级CRC值编码结果进行进一步编码运算得到非整字的编码结果,最终通过next_crc选择模块选择出最终的编码结果,通过反相器得到CRC值,通过比较器得到校验结果。与现有的128位并行数据校验电路相比,在基本不增加硬件成本、不降低整体系统性能的基础上,提供了一种高效率的CRC编解码电路,大大提高了实时处理数据的速度,提高了数据的传输效率。能够实现对8*N位(如8位、16位、24位、32位…96位、128位)并行数据的CRC编码校验。
附图说明
图1为本发明的编码校验电路示意图。
图2为基于本发明编码校验电路的编码时序图。
图3为基于本发明编码校验电路的解码时序图。
图4为基于synopsys公司的8位并行数据校验电路的功能时序图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明提出了一种面向128位并行输入的CRC-32校验电路,该电路将并行的128位数据分为4组32位并行数据,通过基于预处理矩阵的硬件电路对4组32位并行数据分别进行编码。与此同时,该电路对CRC寄存器中的CRC值进行多级编码操作,将得到的各级编码结果分别与4组并行数据的预处理结果进行异或运算,分别得到关于并行32、64、94、128位数据的校验结果。之后,以CRC寄存器中的CRC值和并行32、64、96位数据的校验结果作为CRC选择模块的输入,根据字节有效信号的高两位进行选择;同时将4组32位并行数据作为数据选择模块的输入,根据字节有效信号的高两位进行选择,选择出一组32位并行数据。将CRC选择模块的选择结果作为整数字节编码模块的初始CRC值,将数据选择模块的选择结果作为整数字节编码模块的数据输入,分别对32位并行数据的高8位、高16位、高24位数据输入进行编码得到三个分别关于高8位、高16位、高24位(所述高8、16、24位是针对整数字节编码模块的32位输入)的CRC校验结果。最终根据字节有效信号选择出最终的CRC校验结果。
本发明专利是通过以下技术方案来实现:
一种面向128位并行输入的CRC-32校验电路,该电路主要包括:
CRC寄存器,寄存32位CRC值,输入来自Next_crc多路选择器,CRC时钟信号clk,CRC复位信号rst,字节有效信号be[3:0],输出为寄存器所寄存的CRC值。其中字节有效信号be[3:0]跟数据输入信号data[127:0]相关,具体关系为:be[3:0]=4’b0000,表示数据输入data[127:120]有效;be[3:0]=4’b0001,表示数据输入data[127:112]有效;…be[3:0]=4’1111,表示数据输入data[127:0]有效。
C2C_0编码模块,将来自CRC寄存器中的32位CRC值,按照以下编码方式进行编码(+表示二进制异或运算)
并将32位结果输出至Xor_1模块。
D2C_1编码模块,将来自外部128位并行数据data[127:0]中的高32位(data[127:96])按照以下编码方式进行编码(+表示二进制异或运算)。
将得到的32位预处理结果输出至Xor_1模块。
D2C_2编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的95至64位数据(data[95:64])进行编码,并将得到的32位预处理结果输出至Xor_2模块。
D2C_3编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的63至32位数据(data[63:32])进行编码,并将得到的32位预处理结果输出至Xor_3模块。
D2C_4编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的低32位数据(即data[31:0])进行编码,并将得到的32位预处理结果输出至Xor_4模块。
Xor_1模块,其输入分别来自C2C_0编码模块和D2C_1级编码模块,将两组32位数据按位进行异或,得到结果c_1[31:0],c_1[31:0]为并行32位数据(即并行高32位data[127:96])的CRC校验值。其输出至CRC选择模块、C2C_1编码模块和next_crc选择模块。
C2C_1编码模块,编码方式同C2C_0编码模块,输入来自Xor_1模块,将数据按规则进行编码,得到的结果输出至Xor_2模块。
Xor_2模块,其输入分别来自C2C_1编码模块和D2C_2编码模块,得到结果c_2[31:0],c_2[31:0]为并行64位数据(即并行高64位data[127:64])的CRC校验值,输出至CRC选择模块、C2C_2级编码模块和next_crc选择模块。
C2C_2编码模块,编码方式同C2C_0编码模块,输入来自Xor_2模块,将数据按规则进行编码,得到的结果输出至Xor_3模块。
Xor_3,其输入分别来自C2C_2编码模块和D2C_3编码模块,得到结果c_3[31:0],c_3[31:0]为并行96位数据(即并行高96位data[127:32])的CRC校验值,输出至CRC选择模块、C2C_3编码模块和next_crc选择模块。
C2C_3编码模块,编码方式同C2C_0编码模块,输入来自Xor_3模块,将数据按规则进行编码,得到的结果输出至Xor_4模块。
Xor_4模块,其输入分别来自C2C_3编码模块和D2C_4编码模块,得到结果c_4[31:0],c_4[31:0]为并行128位数据的CRC校验值,输出至CRC选择模块和next_crc选择模块。
CRC选择模块,输入分别来自CRC寄存器、Xor_1模块的c_1[31:0]、Xor_2模块的c_2[31:0]、Xor_3模块的c_3[31:0]、be接口信号高两位(be[3:2]),根据be接口信号的高两位进行选择。输出32位数据至CRC_8模块。be信号为字节有效信号,CRC选择模块的选择规则为:be[3:2]为0x00时,输出CRC寄存器的值,be[3:2]为0x01时,输出c_1[31:0],be[3:2]为0x10时,输出c_2[31:0],be[3:2]为0x11时,输出c_3[31:0]。
数据选择模块,输入分别来自4组数据输入D1(data[127:96])、D2(data[95:64])、D3(data[63:32])、D4(data[31:0])和be接口信号高两位(be[3:2]),根据be接口信号的高两位进行选择,输出32位数据至CRC_8模块。数据选择模块的选择规则为:be[3:2]为0x00时,输出D1,be[3:2]为0x01时,输出D2,be[3:2]为0x10时,输出D3,be[3:2]为0x11时,输出D4。
整数字节编码模块,其输入来自CRC选择模块和数据选择模块,将crc选择模块的值作为初始crc值,将数据选择模块输出的32位值,取其高24位,并分为3组,按规则进行编码,得到三个CRC编码结果,并输出至next_crc选择模块。按照以下编码方式(+表示二进制异或运算)。
next_crc选择模块,其输入来自整数字节编码模块、Xor_1模块、Xor_2模块、Xor_3模块、Xor_4模块、be接口信号。根据be信号选择下一级的crc编码结果,be信号跟数据输入的位宽有关,选择得到的结果即当前并行输入数据所校验的结果。其结果输出至crc寄存器。如图1所示,整数字节编码模块的结果为cs_1,cs_2,cs_3、Xor_1模块输出为c_1、Xor_2模块输出为c_2、Xor_3模块输出为c_3、Xor_4模块输出为c_4。next_crc选择模块的选择规则为:判断be[1:0]是否为2’b11,如果是则判断be[3:2],be[3:2]为2’b00,输出c_1;be[3:2]为2’b01,输出c_2;be[3:2]为2’b10,输出结果c_3;be[3:2]为2’b11,输出结果c_4;如果be[1:0]不为2’b11,则判断be[1:0],be[1:0]为2’b00,输出cs_1;be[1:0]为2’b01,输出cs_2;be[1:0]为2’b10,输出cs_3;
反相器,将来自CRC寄存器中的CRC值按位取反,最终得到所需求的crc编码。
比较器,将来自CRC寄存器中的CRC值与魔数(magicnumber,在CRC-32的校验结果中为定值,在本发明中其值为32'hc704dd7b)相比,将结果输出至CRC_match接口信号,信号为1则说明校验成功,为0则说明校验失败。
具体的,如图1所示,一种面向128位并行输入的CRC-32校验电路,接口信号主要有:数据信号data[127:0]、字节使能信号be[3:0]、时钟clk、复位信号rst、CRC输出结果、校验匹配结果CRC_match。主要模块有:CRC寄存器、C2C_0编码模块、C2C_1编码模块、C2C_2编码模块、C2C_3编码模块、D2C_1编码模块、D2C_2编码模块、D2C_3编码模块、D2C_4编码模块、异或模块、多路选择模块、比较器、反相器。
CRC寄存器,寄存32位CRC值,输入来自Next_crc多路选择器,CRC时钟信号clk,CRC复位信号rst,字节有效信号be[3:0],输出为寄存器所寄存的CRC值。其中字节有效信号be[3:0]跟数据输入信号data[127:0]相关,具体关系为:be[3:0]=4’b0000,表示数据输入data[127:120]有效;be[3:0]=4’b0001,表示数据输入data[127:112]有效;…be[3:0]=4’1111,表示数据输入data[127:0]有效。
CRC寄存器中的CRC值作为下一次数据输入的前一级CRC值,在对每一次数据进行校验之前,将CRC寄存器内的值进行初始化操作,将32位寄存器的值赋0xFFFFFFFF,当数据有效信号有效时(即为1时),当时钟上升沿到来时,将计算的结果作为输入更新CRC寄存器。
C2C_0编码模块,将来自CRC寄存器中的32位CRC值,按照其编码方式进行二进制异或运算的编码;并将32位结果输出至Xor_1模块。
如上述C2C_0编码模块,按照其编码方式对CRC寄存器中的32位CRC值进行编码,此次编码作为对前一级CRC值的预处理操作。将得到的编码结果输出至Xor_1模块与D2C_1编码模块所得到结果进行异或。
D2C_1编码模块,将来自外部128位并行数据data[127:0]中的高32位(data[127:96])按照其编码方式进行二进制异或运算的编码。
将得到的32位预处理结果输出至Xor_1模块。
如图1所示,D2C_1编码模块对data[127:96]进行预处理,与C2C_0编码模块同时进行,将得到结果输出至Xor_1模块与C2C_0编码模块所得到结果进行异或。
D2C_2编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的95至64位数据(data[95:64])进行编码,并将得到的32位预处理结果输出至Xor_2模块。
如图1所示,D2C_2编码模块对data[95:64]进行预处理。
D2C_3编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的63至32位数据(data[63:32])进行编码,并将得到的32位预处理结果输出至Xor_3模块。
如图1所示,D2C_3编码模块对data[63:32]进行预处理。
D2C_4编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的低32位数据(即data[31:0])进行编码,并将得到的32位预处理结果输出至Xor_4模块。
如图1所示,D2C_4编码模块对data[31:0]进行预处理
Xor_1模块,其输入分别来自C2C_0编码模块和D2C_1级编码模块,将两组32位数据按位进行异或,得到结果c_1[31:0],c_1[31:0]为并行32位数据(即并行高32位data[127:96])的CRC校验值。其输出至CRC选择模块、C2C_1编码模块和next_crc选择模块。
如图1所示,Xor_1模块所得到结果为c_1[31:0],c_1[31:0]作为对data[127:96]进行校验的结果输出至C2C_1编码模块,作为C2C_1编码模块的CRC处置已进行下一级的编码运算。
C2C_1编码模块,编码方式同C2C_0编码模块,输入来自Xor_1模块,将数据按规则进行编码,得到的结果输出至Xor_2模块。
将c_1[31:0]作为前一级的CRC值进行预处理运算。
Xor_2模块,其输入分别来自C2C_1编码模块和D2C_2编码模块,得到结果c_2[31:0],c_2[31:0]为并行64位数据(即并行高64位data[127:64])的CRC校验值,输出至CRC选择模块、C2C_2级编码模块和next_crc选择模块。
如图1所示,Xor_2模块所得到结果为c_2[31:0],c_2[31:0]作为对data[127:64]进行校验的结果输出至C2C_2编码模块,作为C2C_2编码模块的CRC初值进行下一级的编码运算。
C2C_2编码模块,编码方式同C2C_0编码模块,输入来自Xor_2模块,将数据按规则进行编码,得到的结果输出至Xor_3模块。
将c_2[31:0]作为前一级的CRC值进行预处理运算。
Xor_3,其输入分别来自C2C_2编码模块和D2C_3编码模块,得到结果c_3[31:0],c_3[31:0]为并行96位数据(即并行高96位data[127:32])的CRC校验值,输出至CRC选择模块、C2C_3编码模块和next_crc选择模块。
如图1所示,Xor_3模块所得到结果为c_3[31:0],c_3[31:0]作为对data[127:32]进行校验的结果输出至C2C_3编码模块,作为C2C_3编码模块的CRC初值进行下一级的编码运算。
C2C_3编码模块,编码方式同C2C_0编码模块,输入来自Xor_3模块,将数据按规则进行编码,得到的结果输出至Xor_4模块。
将c_3[31:0]作为前一级的CRC值进行预处理运算。
Xor_4模块,其输入分别来自C2C_3编码模块和D2C_4编码模块,得到结果c_4[31:0],c_4[31:0]为并行128位数据的CRC校验值,输出至CRC选择模块和next_crc选择模块。
如图1所示,Xor_4模块所得到结果为c_4[31:0],c_3[31:0]作为对data[127:0]进行校验的结果。
CRC选择模块,输入分别来自CRC寄存器、Xor_1模块的c_1[31:0]、Xor_2模块的c_2[31:0]、Xor_3模块的c_3[31:0]、be接口信号高两位(be[3:2]),根据be接口信号的高两位进行选择。输出32位数据至CRC_8模块。be信号为字节有效信号,CRC选择模块的选择规则为:be[3:2]为0x00时,输出CRC寄存器的值,be[3:2]为0x01时,输出c_1[31:0],be[3:2]为0x10时,输出c_2[31:0],be[3:2]为0x11时,输出c_3[31:0]。
如图1所示,输入分别为:CRC寄存器中的数值、c_1[31:0]、c_2[31:0]、c_3[31:0]。根据be信号选择输出相应结果。
数据选择模块,输入分别来自4组数据输入D1(data[127:96])、D2(data[95:64])、D3(data[63:32])、D4(data[31:0])和be接口信号高两位(be[3:2]),根据be接口信号的高两位进行选择,输出32位数据至CRC_8模块。数据选择模块的选择规则为:be[3:2]为0x00时,输出D1,be[3:2]为0x01时,输出D2,be[3:2]为0x10时,输出D3,be[3:2]为0x11时,输出D4。
整数字节编码模块,其输入来自CRC选择模块和数据选择模块,将crc选择模块的值作为初始crc值,将数据选择模块输出的32位值,取其高24位,并分为3组,按规则进行编码,得到三个CRC编码结果,并输出至next_crc选择模块。按照其编码方式进行二进制异或运算。
整数字节编码模块,采用并行8位数据的编码规则进行编码,将并行8位数据编码电路进行三级级联,32位数据输入中的高24位分为3组8位并行数据依次作为级联电路中的三级数据输入。级联电路所得到的三级CRC编码结果分别如图1所表示的cs_1,cs_2,cs_3,cs_1为整数字节编码模块中高8位数据的校验结果,cs_2为整数字节编码模块中高16位数据的校验结果,cs_3为整数字节编码模块中高24位数据的校验结果。
next_crc选择模块,其输入来自整数字节编码模块、Xor_1模块、Xor_2模块、Xor_3模块、Xor_4模块、be接口信号。根据be信号选择下一级的crc编码结果,be信号跟数据输入的位宽有关,选择得到的结果即当前并行输入数据所校验的结果。其结果输出至crc寄存器。如图1所示,整数字节编码模块的结果为cs_1,cs_2,cs_3、Xor_1模块输出为c_1、Xor_2模块输出为c_2、Xor_3模块输出为c_3、Xor_4模块输出为c_4。next_crc选择模块的选择规则为:判断be[1:0]是否为2’b11,如果是则判断be[3:2],be[3:2]为2’b00,输出c_1;be[3:2]为2’b01,输出c_2;be[3:2]为2’b10,输出结果c_3;be[3:2]为2’b11,输出结果c_4;如果be[1:0]不为2’b11,则判断be[1:0],be[1:0]为2’b00,输出cs_1;be[1:0]为2’b01,输出cs_2;be[1:0]为2’b10,输出cs_3;
当be[1:0]为0x11时,说明数据输入为字的倍数,然后根据be[3:2]进行选择输出结果,next_crc选择模块选择的结果作为最终的CRC校验结果,由时钟触发寄存至CRC寄存器中。
反相器,将来自CRC寄存器中的CRC值按位取反,最终得到所需求的crc编码。
比较器,将来自CRC寄存器中的CRC值与魔数(magicnumber,在CRC-32的校验结果中为定值,在本发明中其值为32'hc704dd7b)相比,将结果输出至CRC_match接口信号,信号为1则说明校验成功,为0则说明校验失败。
图2和图3为本发明编码校验电路的功能时序图,图2数据输入分为两个时钟周期,第一个时钟周期为并行128位,第二个时钟周期为并行80位;图3数据输入基于图2的校验结果,将CRC校验结果附加到图2中输入数据后面,其输入分为两个时钟周期,第一个时钟周期为并行128位,第二个时钟周期为并行112位;是对本发明有益效果的进一步说明。图4为基于synopsys公司的8位并行数据校验电路的功能时序图,其输入与图2的输入相同,分为26个时钟周期,每个时钟并行输入8位,结合图2和图4可知,本发明所公开电路的编码结果正确。

Claims (7)

1.一种面向128位并行输入的CRC-32校验电路,其特征在于,包括整数字节编码模块,反相器,比较器,分别以字节有效信号be为数据选择输出信号的CRC选择模块,NEXT_CRC选择模块,CRC寄存器和数据选择模块;以及用于对8*N位并行数据从高位到低位均分为四组后的输入数据对应进行预处理编码的四个D2C编码模块,其中,N=1,2……16;用于对CRC寄存器中的CRC值进行四级编码的四级C2C编码模块;用于将四组预处理结果和各级编码结果对应进行异或运算的四级Xor模块;
CRC选择模块用于对CRC寄存器中的CRC值和前三级Xor模块的输出进行选择输出,作为整数字节编码模块的初始CRC值;
数据选择模块用于对四组输入数据进行选择输出32位并行数据,作为整数字节编码模块的输入值;
整数字节编码模块用于将初始CRC值对输入值进行校验,然后输出三个分别关于高8位、高16位和高24位的CRC校验结果;
NEXT_CRC选择模块采用多路选择器,输入端分别连接整数字节编码模块的三路校验结果和四级Xor模块的异或运算结果,输出端输出选择后得到的CRC校验结果,并连接至CRC寄存器的输入端;
反相器用于将CRC寄存器中的CRC值按位取反输出所需的CRC编码;
比较器用于将CRC寄存器中的CRC值与魔数相比,并将校验成功或失败的结果输出。
2.根据权利要求1所述的一种面向128位并行输入的CRC-32校验电路,其特征在于,
四个D2C编码模块包括D2C_1编码模块,D2C_2编码模块,D2C_3编码模块和D2C_4编码模块;
四级C2C编码模块包括C2C_0编码模块,C2C_1编码模块,C2C_2编码模块和C2C_3编码模块;
四级Xor模块包括Xor_1模块,Xor_2模块,Xor_3模块和Xor_4模块;
四个D2C编码模块的输出端和四级C2C编码模块的输出端分别连接四级Xor模块的输入端;Xor_1模块的输出端连接C2C_1编码模块的输入端,Xor_2模块的输出端连接C2C_2编码模块的输入端,Xor_3模块的输出端连接C2C_3编码模块的输入端。
3.根据权利要求1所述的一种面向128位并行输入的CRC-32校验电路,其特征在于,CRC寄存器连接有CRC时钟信号clk和CRC复位信号rst。
4.根据权利要求1所述的一种面向128位并行输入的CRC-32校验电路,其特征在于,当N<16时,将并行数据低位补0达到128位后均分为4组数据再分别进行预处理。
5.根据权利要求1所述的一种面向128位并行输入的CRC-32校验电路,其特征在于,C2C编码模块,将输入的32位并行数据按以下编码方式进行编码,其中,+表示二进制异或运算;
6.根据权利要求1所述的一种面向128位并行输入的CRC-32校验电路,其特征在于,D2C编码模块将输入的32位并行数据按以下编码方式进行编码,其中,+表示二进制异或运算;
7.根据权利要求1所述的一种面向128位并行输入的CRC-32校验电路,其特征在于,整数字节编码模块将输入初始CRC值对输入值按以下编码方式进行编码,其中,+表示二进制异或运算;
CN201510504485.2A 2015-08-17 2015-08-17 一种面向128位并行输入的crc‑32校验电路 Active CN105049057B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510504485.2A CN105049057B (zh) 2015-08-17 2015-08-17 一种面向128位并行输入的crc‑32校验电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510504485.2A CN105049057B (zh) 2015-08-17 2015-08-17 一种面向128位并行输入的crc‑32校验电路

Publications (2)

Publication Number Publication Date
CN105049057A true CN105049057A (zh) 2015-11-11
CN105049057B CN105049057B (zh) 2018-04-20

Family

ID=54455294

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510504485.2A Active CN105049057B (zh) 2015-08-17 2015-08-17 一种面向128位并行输入的crc‑32校验电路

Country Status (1)

Country Link
CN (1) CN105049057B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017148096A1 (zh) * 2016-02-29 2017-09-08 中兴通讯股份有限公司 循环冗余校验码的生成方法和装置
CN107231213A (zh) * 2017-08-20 2017-10-03 安徽大学 Crc‑32算法在usb3.0数据包中的实现方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040194000A1 (en) * 2003-03-28 2004-09-30 International Business Machines Corporation System and method for optimizing iterative circuit for cyclic redundancy check (crc) calculation
CN201153259Y (zh) * 2007-12-19 2008-11-19 深圳市同洲电子股份有限公司 并行数据循环冗余校验装置及双向数据传输系统
US20100031124A1 (en) * 2007-12-21 2010-02-04 Sony Corporation Transmission apparatus and method, reception apparatus and method, and program
CN101847999A (zh) * 2010-05-28 2010-09-29 清华大学 一种用循环冗余校验码进行并行校验的方法
CN102130744A (zh) * 2011-03-25 2011-07-20 中兴通讯股份有限公司 计算循环冗余校验码的方法和装置
CN102546089A (zh) * 2011-01-04 2012-07-04 中兴通讯股份有限公司 循环冗余校验crc码的实现方法及装置
CN103199873A (zh) * 2013-04-23 2013-07-10 常熟理工学院 两级分块crc运算的快速配置方法
JP2014165892A (ja) * 2013-02-28 2014-09-08 Mega Chips Corp 階層構造の演算回路
US20140359404A1 (en) * 2010-12-29 2014-12-04 Vitesse Semiconductor Corporation Parallel crc computation with data enables

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040194000A1 (en) * 2003-03-28 2004-09-30 International Business Machines Corporation System and method for optimizing iterative circuit for cyclic redundancy check (crc) calculation
CN201153259Y (zh) * 2007-12-19 2008-11-19 深圳市同洲电子股份有限公司 并行数据循环冗余校验装置及双向数据传输系统
US20100031124A1 (en) * 2007-12-21 2010-02-04 Sony Corporation Transmission apparatus and method, reception apparatus and method, and program
CN101847999A (zh) * 2010-05-28 2010-09-29 清华大学 一种用循环冗余校验码进行并行校验的方法
US20140359404A1 (en) * 2010-12-29 2014-12-04 Vitesse Semiconductor Corporation Parallel crc computation with data enables
CN102546089A (zh) * 2011-01-04 2012-07-04 中兴通讯股份有限公司 循环冗余校验crc码的实现方法及装置
CN102130744A (zh) * 2011-03-25 2011-07-20 中兴通讯股份有限公司 计算循环冗余校验码的方法和装置
JP2014165892A (ja) * 2013-02-28 2014-09-08 Mega Chips Corp 階層構造の演算回路
CN103199873A (zh) * 2013-04-23 2013-07-10 常熟理工学院 两级分块crc运算的快速配置方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017148096A1 (zh) * 2016-02-29 2017-09-08 中兴通讯股份有限公司 循环冗余校验码的生成方法和装置
CN107231213A (zh) * 2017-08-20 2017-10-03 安徽大学 Crc‑32算法在usb3.0数据包中的实现方法

Also Published As

Publication number Publication date
CN105049057B (zh) 2018-04-20

Similar Documents

Publication Publication Date Title
CN101777924B (zh) 一种Turbo码译码方法和装置
CN107154836B (zh) 一种基于fpga的并行循环冗余crc校验方法
CN102761389B (zh) 非同步主从式串行通信系统、数据传输方法与控制模块
WO2010115371A1 (zh) 一种循环冗余校验crc码的实现方法和装置
CN104808966B (zh) 有效编码的方法和装置
CN102546089B (zh) 循环冗余校验crc码的实现方法及装置
CN101702639B (zh) 循环冗余校验的校验值计算方法及装置
CN113110954B (zh) 一种crc码并行计算方法、装置及其应用
CN101674089A (zh) 一种高速8b/10b编码器和解码器及其对错误输入的处理方法
CN103731239A (zh) 一种适用于向量处理器的通用crc并行计算部件及方法
CN102799410B (zh) 基于李氏制约竞争计数编码的异步fifo地址转换电路
CN104158624A (zh) 一种用于btm系统的冗余二取二解码控制装置及解码方法
WO2016127853A1 (zh) 一种基于扩展汉明码的二维乘积码编码装置及编码方法
CN102820892B (zh) 一种用于并行bch编码的电路、编码器及方法
CN109495211A (zh) 一种信道编码和解码方法
CN100488059C (zh) 分量编码器及其编码方法和双输入Turbo编码器及其编码方法
CN105049057A (zh) 一种面向128位并行输入的crc-32校验电路
CN104467865B (zh) 串行通信协议控制器、字节拆分电路及8b10b编码器
CN105515614A (zh) 一种用于电力线载波通信的信道级联编解码方法及其装置
CN108462561A (zh) 超高速通信系统中串并结合的信道编译码方法及装置
CN103763064A (zh) 适用于超高速通讯系统的循环冗余校验码生成方法与电路
CN103269255A (zh) 一种并行crc电路的生成方法和装置
CN101228698A (zh) 4电平逻辑解码器
CN204347817U (zh) 集成crc校验电路的伪随机数发生器
CN102118225B (zh) 基于多索引表的任意位多项式除法类型编码的编解码方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant