一种并行CRC电路的生成方法和装置与流程

文档序号:12541174阅读:182来源:国知局
一种并行CRC电路的生成方法和装置与流程
本发明涉及CRC电路设计领域,具体是一种并行CRC电路的生成方法和装置。

背景技术:
循环冗余码校验英文名称为CyclicalRedundancyCheck,简称CRC,它是利用除法及余数的原理来作错误侦测(ErrorDetecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。循环冗余码CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到,k位要发送的信息位可对应一个(k-1)次多项式K(X),r位冗余位对应于一个(r-1)次多项式R(X),由k位信息位后面加上r位冗余位组成的n=k+r的码字则对应于一个(n-1)次多项式T(X)X×K(X)+R(X)。也即在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端。接收端的检验过程就是将接收到的码字多项式除以G(X),若余式为零则认为传输无差错;若余式不为零则传输有差错。CRC算法采用相应的硬件电路去实现,现有的进行CRC算法时,大多使用的是串行的计算方式,这样方式虽然简单易懂,但是带来的计算速度慢,整体运行频率无法提升的问题。若使用CRC并行计算方法,则可以大大提高系统运行频率。但是如何得到各种CRC生成多项式和不同数据宽度下的计算表达,目前还没有合适的方法。

技术实现要素:
为了解决现有的CRC算法采用串行电路计算速度慢,整体运行频率无法提升的问题,本发明提供了一种并行CRC电路的生成方法。本发明采用的技术方案是:一种并行CRC电路的生成方法,包括如下步骤:根据CRC码多项式生成串行电路;向所述串行电路中输入预设比特数的数据,得到各个移位寄存器在输入每个比特的次态表达式;获取各个移位寄存器在输入完毕预设比特数的数据之后的最终次态表达式,并根据所述最终次态表达式生成目标并行CRC电路。优选地,所述获取各个移位寄存器在输入完毕预设比特数的数据之后的最终次态表达式,并根据所述最终次态表达式生成并行CRC电路的步骤,进一步包括:对各个移位寄存器的最终次态表达式分别进行处理,包括删除最终次态表达式中除了表示异或之外相同的字符串、删除结尾或者开头表示异或的字符串和删除相邻的表示异或的字符串;根据处理后的最终次态表达式生成目标并行CRC电路。优选地,所述获取各个移位寄存器在输入完毕预设比特数的数据之后的最终次态表达式,并根据所述最终次态表达式生成目标并行CRC电路的步骤,进一步包括:根据预设比特数的数据和移位寄存器的初始状态形成搜索字符串集,依据所述搜索字符串集对各个移位寄存器的最终次态表达式进行处理。优选地,所述获取各个移位寄存器在输入完毕预设比特数的数据之后的最终次态表达式,并根据所述最终次态表达式生成目标并行CRC电路的步骤,进一步包括:根据所述最终次态表达式生成目标并行CRC电路的次态方程;依据所述次态方程生成相对应的目标并行CRC电路。优选地,所述向所述串行电路中输入预设比特数的数据,得到各个移位寄存器在输入每个比特的次态表达式的步骤,还包括:对各个移位寄存器在输入每个比特时的次态表达式都进行处理,包括删除次态表达式中除了表示异或之外相同的字符串、删除结尾或者开头表示异或的字符串和删除相邻的表示异或的字符串。优选地,所述向所述串行电路中输入预设比特数的数据,得到各个移位寄存器在输入每个比特的次态表达式的步骤,进一步包括:对各个移位寄存器的次态表达式使用脚本语言进行处理,得到各个移位寄存器的次态方程。本发明还提供了一种并行CRC电路的生成装置,包括:串行电路生成单元,用于根据CRC码多项式生成串行电路;数据处理单元,用于向所述串行电路中输入预设比特数的数据,得到各个移位寄存器在输入每个比特的次态表达式;并行电路生成单元,用于获取各个移位寄存器在输入完毕预设比特数的数据之后的最终次态表达式,并根据所述最终次态表达式生成并行CRC电路。优选地,所述并行电路生成单元进一步包括:用于对各个移位寄存器的最终次态表达式分别进行处理,包括删除最终次态表达式中除了表示异或之外相同的字符串、删除结尾或者开头表示异或的字符串和删除相邻的表示异或的字符串,以及用于根据处理后的最终次态表达式生成目标并行CRC电路。优选地,所述并行电路生成单元进一步包括:用于根据预设比特数的数据和移位寄存器的初始状态形成搜索字符串集,依据所述搜索字符串集对各个移位寄存器的最终次态表达式进行处理。优选地,所述并行电路生成单元进一步包括:用于根据所述最终次态表达式生成目标并行CRC电路的次态方程,以及依据所述次态方程生成相对应的目标并行CRC电路。本发明能够方便的得到不同位CRC下,不同数据输入时,进行并行计算的表达式,从而生成相应的并行电路。使用此方案能够把串行CRC计算变成并行CRC计算,提高系统的整体工作频率。附图说明图1为本发明一种实施例的并行CRC电路生成方法的流程图;图2为本发明一种实施例的并行CRC电路的生成装置的结构框图;图3为本发明一种实施例的串行CRC-4电路图;图4为本发明一种实施例的生成的并行CRC-4电路图。具体实施方式为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。如图1所示,为本发明一种实施例的并行CRC电路生成方法的流程图,包括如下步骤:步骤S101:根据CRC码多项式生成串行电路;步骤S102:向所述串行电路中输入预设比特数的数据,得到各个移位寄存器在输入每个比特的次态表达式;步骤S103:获取各个移位寄存器在输入完毕预设比特数的数据之后的最终次态表达式,并根据所述最终次态表达式生成目标并行CRC电路。本发明依据串行CRC电路与输入的预设比特数的数据进行处理后得到目标并行CRC电路的次态方程,依据目标并行CRC电路的次态方程得到目标CRC电路,从而能够方便的得到不同位CRC下,不同数据输入时相应的并行电路,能够把串行CRC计算变成并行CRC计算,提高系统的整体工作频率。在步骤S101中,根据CRC码多项式生成串行电路,每个CRC多项式都对应一个串行电路,可以依据多项式来生成串行电路,串行电路包括多个移位寄存器和多个异或门。生成的串行电路的每个移位寄存器中保存有初始状态,初始状态为移位寄存器输入数据之前的状态。在步骤S102中,向所述串行电路中输入预设比特数的数据,所述预设比特数的数据是依据所要生成的并行电路的输入位数来确定,并且要小于CRC码位数。串行电路依据其逻辑关系对输入的预设比特的数据进行处理,该串行电路中的各个移位寄存器在处理一个比特后都保存一个当前状态,对应一个次态表达式。在步骤S103中,获取各个移位寄存器在输入完毕预设比特数的数据之后的最终次态表达式,各个移位寄存器在输入完毕所有比特的数据之后会生成一个最终的次态表达式,根据所述最终次态表达式生成目标并行CRC电路。将各个移位寄存器的最终次态表达式作为目标并行CRC电路的次态方程,依据该次态方程生成相对应的目标并行CRC电路。在步骤S103中,还包括:对各个移位寄存器的最终次态表达式分别进行处理,包括删除最终次态表达式中除了表示异或之外相同的字符串、删除结尾或者开头表示异或的字符串和删除相邻的表示异或的字符串,根据处理后的最终次态表达式生成目标并行CRC电路。最终次态表达式中表示异或的字符串可以是“XOR”,也可以使用其他字符串,如“ABC”,“BOOK”等等任意字符串来代表异或运算。为了降低最终次态表达式中的冗余字符,避免生成的并行CRC并行电路存在较大的冗余,为此对最终次态表达式进行化简操作,包括删除除了表示异或之外相同的字符串、删除结尾或者开头表示异或的字符串和删除相邻的表示异或的字符串。根据最终次态表达式的化简结果生成目标并行CRC电路的次态方程,依据并行CRC电路的次态方程来生成目标并行CRC电路。为了避免次态表达式处理中的误删,在次态表达式处理之前形成搜索字符串集,该搜索字符串集是根据预设比特数的数据和寄存器的初始状态形成的,依据所述搜索字符串集对各个移位寄存器的子字符串表达式进行处理,包括删除相同的字符串、删除结尾或者开头表示异或的字符串和删除相邻的表示异或的字符串。由于状态表达式中的字符串较多,处理时容易造成误删除。为此,本发明将预设比特数的数据和移位寄存器的初始状态形成搜索字符串,根据搜索字符串对各个移位寄存器的最终状态表达式分别进行上述处理。本发明为了降低目标并行CRC电路的冗余,还可以对各个移位寄存器在输入每个比特的次态表达式都进行化简处理,包括:对各个移位寄存器在输入每个比特时的状态表达式都进行处理,包括删除状态表达式中除了表示异或之外相同的字符串、删除结尾或者开头表示异或的字符串和删除相邻的表示异或的字符串。当各个移位寄存器生成最终的次态表达式之后,还对最终次态表达式也进行上述化简处理。本发明对各个移位寄存器的次态表达式进行处理,可以采取各种方式,本实施例是使用脚本语言进行处理,对各个移位寄存器在输入每个比特时的次态表达式都利用脚本语言进行模拟,得到各个移位寄存器的最终次态表达式,将该最终次态表达式作为目标并行CRC电路的次态方程,从而依据次态方程形成目标并行CRC电路。如图2所示,为本发明一种实施例的并行CRC电路的生成装置的结构框图,该装置包括:串行电路生成单元100,用于根据CRC码多项式生成串行电路;数据处理单元200,用于向所述串行电路中输入预设比特数的数据,得到各个移位寄存器在输入每个比特的次态表达式;并行电路生成单元300,用于获取各个移位寄存器在输入完毕预设比特数的数据之后的最终次态表达式,并根据所述最终次态表达式生成并行CRC电路。本发明的并行电路生成单元进一步包括:用于对各个移位寄存器的最终次态表达式分别进行处理,包括删除最终次态表达式中除了表示异或之外相同的字符串、删除结尾或者开头表示异或的字符串和删除相邻的表示异或的字符串,以及用于根据处理后的最终次态表达式生成目标并行CRC电路。本发明的并行电路生成单元进一步包括:用于根据预设比特数的数据和移位寄存器的初始状态形成搜索字符串集,依据所述搜索字符串集对各个移位寄存器的最终次态表达式进行处理。本发明的并行电路生成单元进一步包括:用于根据所述最终次态表达式生成目标并行CRC电路的次态方程,以及依据所述次态方程生成相对应的目标并行CRC电路。以下结合一实施例对本发明的并行CRC电路生成过程进行详细描述:该实施例以CRC-4为例,但是不限于CRC-4,还可以是CRC-5、CRC-16、CRC-32等等。CRC-4的多项式G(x)=x4+x3+1,该多项式对应的电路图如图3所示,该串行电路包括四个移位寄存器和两个异或门。四个移位寄存器中分别保存有初始状态x3,x2,x1,x0。向该串行电路中输入四个比特的数据,分别是d3、d2、d1、d0。根据串行CRC计算方式,输入第1位数据d3时(MSB先移入,LSB后移入到移位寄存器中),其四个移位寄存器的次态表达式为:x0’=x3^d3;x1’=x0;x2’=x1;x3’=x2^x3。其中,d0代表输入数据的低1位(LSB),对于输入数据为4位时,d0,d1,d2,d3分别代表数据的第1位,第2位,第3位,第4位。符号”^”代表异或运算。为了便于在脚本语言进行处理,将上述公式转化为符号表达式为:x0’=x3XORd3;x1’=x0;x2’=x1;x3’=x2XORx3。其中”XOR”代表异或运算,用于在脚本中进行语法解析。输入第2位数据d2时,上一次的次态变成现态,带入表达式为:x0’=x2XORx3XORd2;x1’=x3XORd3;x2’=x0;x3’=x1XORx2XORx3。输入第3位数据d1时,上一次的次态变成现态,带入表达式,次态方程为:x0’=x1XORx2XORx3XORd1;x1’=x2XORx3XORd2;x2’=x3XORd3;x3’=x0XORx1XORx2XORx3。输入第4位数据d0时,上一次的次态变成现态,带入表达式,次态方程为:x0’=x0XORx1XORx2XORx3XORd0;x1’=x1XORx2XORx3XORd1;x2’=x2XORx3XORd2;x3’=x3XORd3XORx0XORx1XORx2XORx3。该串行CRC电路在输入预设比特数的数据后,各个移位寄存器的状态表达式用表1进行表示,表1中的行表示输入的数据,分别是数据d3、d2、d1、d0,表1中的列表示移位寄存器的初始状态,分别是x3,x2,x1,x0。表1最后一列对应的次态表达式即为各个移位寄存器的最终次态表达式。每个移位寄存器保存处理完输入比特时的状态,每个寄存器保存保存处理四个比特数据之后的状态,如表2所示。表2从上面的步骤中得到最终次态方程的表达式,对次态方程表达式可以进行化简。本实施例利用脚本语言模拟次态表达式的生成过程,并对次态表达式进行化简。因为yXORy=0,0XORy=y。所以在用脚本模拟符号运算时可以按下面的方式模拟XOR运算,以进行化简。确定搜索字符串集,在本例子中,确定搜索字符串集为{x0,x1,x2,x3,d0,d1,d2,d3}。从最终次态表达式中,依次搜索字符串集中字符串,如果表达式中有2个相同的字符串则进行删除操作,否则使用字符串集中的下一个字符串,直到字符串集中的所有字符串都搜索完,仍然没有找到,退出搜索。在最终次态表达式中同时删除搜索到的2个该字符串。例如,对于表达式:x3’=x3XORd0XORx0XORx1XORx2XORx3会搜索到x3会出现在表达式中2次,删除x3后表达式(字符串)变成:x3’=XORd0XORx0XORx1XORx2XOR继续搜索字符串中的XOR,若有2个XOR连续,则同时删除XOR这2个字符串。对于本例中,没有2个XOR连续,故不用删除。搜索字符串开头的XOR,如果字符串表达式开头有XOR,则删除此XOR字符串,对于本例中,字符串表达式开始的XOR删除,变成:x3’=d0XORx0XORx1XORx2XOR搜索字符串结尾的XOR,如果字符串表达式结尾有XOR,则删除此XOR字符串,对于本例中,字符串表达式结尾的XOR删除,变成:x3’=d0XORx0XORx1XORx2本次字符串搜索完毕,对字符串集中的下一个字符串进行搜索。全部搜索完毕,结束搜索。通过本次实施步骤,次态表达式得到化简,最后得到最终次态方程的表达式:x0’=x0XORx1XORx2XORx3XORd0x1’=x1XORx2XORx3XORd1x2’=x2XORx3XORd2x3’=d3XORx0XORx1XORx2根据处理完毕的字符串表达式生成并行CRC电路,并行CRC电路如图4所示,包括并行的四位数据输入、四个移位寄存器和若干个异或门。根据最终次态表达式生成目标并行CRC电路的次态方程,以及依据所述次态方程生成相对应的目标并行CRC电路。由次态方程第1个式子x0’=x0XORx1XORx2XORx3XORd0,可知,触发器的输入端(D端)的输入为x0^x1^x2^x3^d0,经过一个时钟周期后数据从Q端输出,x0’为x0经过一个时钟周期后的状态。故图4中,x0与x1,x2,x3,d0异或运算后送到触发器的输入端(D端),触发器的输出端(Q端)为x0的次态x0’(下一个时钟周期后的现态)。同理,可以得到x1,x2,x3的逻辑电路结构。本实施例是对CRC-4的生成多项式对4位的输入数据进行CRC运算后得到并行计算的次态方程的表达式,对于CRC-n的生成多项式和对m位的输入数据(m≤n),同样可以进行类似的操作,这样在电路中会有n个字符串代表现态,同样会有n个字符串代表次态,有m个字符串代表输入数据的各个位。以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1