一种面向128位并行输入的crc-32校验电路的制作方法
【技术领域】
[0001] 本发明专利涉及容错技术领域,具体为一种面向128位并行输入的CRC-32校验电 路。
【背景技术】
[0002] 循环冗余校验CRC(Cyclic Redundancy Check)以较优的误码检错能力和易于硬 件实现的优点,广泛应用于各种通信协议中。
[0003] 传统的CRC编解码电路基于串行数据输入方式,其实现方式简单,资源占用小,但 是其只能处理串行输入的数据,难以实现当前高速并行网络的数据校验。当前,实现并行数 据的校验电路多样,主要有:(1)公式法,根据串行移位电路推导得出当前CRC值与前一级 CRC值和当前并行数据输入的关系。随着位宽的提高,公式法推导关系变得极为复杂,难以 实现。(2)查表法,根据输入数据从CRC码表中查找出相应的值进行处理。由于查表法需要 大容量的存储单元,其硬件消耗巨大,随着位宽的提高,其代价更高,不利于实现高位宽的 实时校验处理。
【发明内容】
[0004] 针对现有技术中存在的问题,本发明提供一种硬件成本低,实时处理速度快,数据 传输效率高的面向128位并行输入的CRC-32校验电路。
[0005] 本发明是通过以下技术方案来实现:
[0006] -种面向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值与魔数相比,并将校验成功或失败的结 果输出。
[0007] 优选的,四个D2C编码模块包括D2C_1编码模块,D2C_2编码模块,D2C_3编码模块 和D2C_4编码模块;四级C2C编码模块包括C2C_0编码模块,C2C_1编码模块,C2C_2编码模 块和C2C_3编码模块;四级Xor模块包括Xor_l模块,Xor_2模块,Xor_3模块和Xor_4模 块;四个D2C编码模块的输出端和四级C2C编码模块的输出端分别连接四级Xor模块的输 入端;Xor_l模块的输出端连接C2C_1编码模块的输入端,Xor_2模块的输出端连接C2C_2 编码模块的输入端,X〇r_3模块的输出端连接C2C_3编码模块的输入端。
[0008] 优选的,CRC寄存器连接有CRC时钟信号elk和CRC复位信号rst。
[0009] 优选的,当N < 16时,将并行数据低位补0达到128位后均分为4组数据再分别 进行预处理。
[0010] 优选的,C2C编码模块,将输入的32位并行数据按以下编码方式进行编码,其中,+ 表不二进制异或运算;
[0011]
[0012] 优选的,D2C编码模块将输入的32位并行数据按以下编码方式进行编码,其中,+ 表不二进制异或运算;
[0013]
[0014] 优选的,整数字节编码模块将输入初始CRC值对输入值按以下编码方式进行编 码,其中,+表不二进制异或运算;
[0015]
[0016] 与现有技术相比,本发明具有以下有益的技术效果:
[0017] 本发明提供的面向128位并行输入的CRC-32校验电路,通过基于预处理矩阵的硬 件电路对4组32位并行数据分别进行编码,对CRC寄存器中的CRC值进行多级编码操作。 将得到的各级编码结果分别与4组并行数据的预处理结果进行异或运算,在整数字节编码 模块中对数据和各级CRC值编码结果进行进一步编码运算得到非整字的编码结果,最终通 过ne Xt_crc选择模块选择出最终的编码结果,通过反相器得到CRC值,通过比较器得到校 验结果。与现有的128位并行数据校验电路相比,在基本不增加硬件成本、不降低整体系统 性能的基础上,提供了一种高效率的CRC编解码电路,大大提高了实时处理数据的速度,提 高了数据的传输效率。能够实现对8*N位(如8位、16位、24位、32位…96位、128位)并 行数据的CRC编码校验。
【附图说明】
[0018] 图1为本发明的编码校验电路示意图。
[0019] 图2为基于本发明编码校验电路的编码时序图。
[0020] 图3为基于本发明编码校验电路的解码时序图。
[0021] 图4为基于synopsys公司的8位并行数据校验电路的功能时序图。
【具体实施方式】
[0022] 下面结合附图对本发明做进一步的详细说明,所述是对本发明的解释而不是限 定。
[0023] 本发明提出了一种面向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校验结果。
[0024] 本发明专利是通过以下技术方案来实现:
[0025] -种面向128位并行输入的CRC-32校验电路,该电路主要包括:
[0026] CRC寄存器,寄存32位CRC值,输入来自Next_crc多路选择器,CRC时钟信号clk, CRC复位信号rst,字节有效信号be [3:0],输出为寄存器所寄存的CRC值。其中字节有效信 号be[3:0]跟数据输入信号data[127:0]相关,具体关系为 :be[3:0] = 4' bOOOO,表示数 据输入 data[127:120]有效;be [3:0] = 4' b0001,表示数据输入 data[127:112]有效;… be[3:0] = 4' 1111,表示数据输入 data[127:0]有效。
[0027] C2C_0编码模块,将来自CRC寄存器中的32位CRC值,按照以下编码方式进行编 码(+表不二进制异或运算)
[0028]
[0029] 并将32位结果输出至Xor_l模块。
[0030] D2C_1编码模块,将来自外部128位并行数据data [127:0]中的高32位 (data[127:96])按照以下编码方式进行编码(+表示二进制异或运算)。
[0031]
[0032] 将得到的32位预处理结果输出至Xor_l模块。
[0033] D2C_2编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的 95至64位数据(data [95:64])进行编码,并将得到的32位预处理结果输出至Xor_2模块。
[0034] D2C_3编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的 63至32位数据(data [63:32])进行编码,并将得到的32位预处理结果输出至Xor_3模块。
[0035] D2C_4编码模块,其编码方式同D2C_1编码模块,将来自外部128位并行数据中的 低32位数据(即data [31:0])进行编码,并将得到的32位预处理结果输出至Xor_4模块。
[0036] Xor_l模块,其输入分别来自C2C_0编码模块和D2C_1级编码模块,将两组32位 数据按位进行异或,得到结果c_l [31:0],c_l [31:0]为并行32位数据(即并行高32位 data[127:96])的CRC校验值。其输出至CRC选择模块、C2C_1编码模块和next_crc选择 模块。
[0037] C2C_1编码模块,编码方式同C2C_0编码模块,输入来自Xor_l模块,将数据按规则 进行编码,得到的结果输出至X〇r_2模块。
[0038] 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选择模块。
[0039] C2C_2编码模块,编码方式同C2C_0编码模块,输入来自Xor_2模块,将数据按规则 进行编码,得到的结果输出至X〇r_