一种循环冗余校验方法及装置的制作方法

文档序号:7861718阅读:290来源:国知局
专利名称:一种循环冗余校验方法及装置的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种循环冗余校验(Cyclic Redundancy Check,CRC)方法及装置。
背景技术
为保证通信系统中数据传输的正确性,需要对通信过程进行差错检验。CRC技术,由于其编码简单且误判率很低,是通信系统中常用的差错检验技术。现有技术中常用的CRC校验方法有以下两种,方法一 CRC逐比特校验方法,将需要校验的整个数据分成η个数据块(每个数据块可以是单比特或多比特,通常小于32比特),根据前一数据块对应的CRC校验结果计算得到下一数据块对应的CRC校验结果,按顺序逐步对数据进行校验,只有前一数据块按顺序校验完毕后才能开始后一数据块的校验, 直至最后一个数据块校验完毕即可得到整个数据的CRC校验结果。方法二 CRC同步校验方法,将整个数据中的η个数据块同步根据对应预存储的η个校验常数应用伽罗华域乘法器进行CRC中间计算,得到各个数据块的CRC中间结果,然后对整个数据的所有数据块的CRC中间结果进行合并计算得到整个数据的CRC校验结果。在对非顺序输入的数据进行CRC校验时,应用方法一则需要在整个数据全部输入到CRC计算模块后,才能按照顺序进行CRC校验,并且校验时间长;应用方法二虽然能够同步对输入的数据块进行CRC中间计算,校验时间短,但却会由于输入的整个数据太长可以达到几千bit,而分成的每个数据块通常不超过32bit,需要存储大量的校验常数和CRC中间结果,增加存储量。

发明内容
本发明的实施例提供一种循环冗余校验方法及装置,可以节省CRC的校验时间,
减小存储量。为达到上述目的,本发明的实施例采用如下技术方案第一方面,提供了一种循环冗余校验方法,包括将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内;对所述各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果;对所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果;根据所述整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。在第一种可能的实现方式中,对于一个滑动窗口来说,所述N个分支中的各个分支的所述滑动窗口内的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果中,包括当在所述滑动窗口内每存储预设位数的校验数据时,对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果。在第二种可能的实现方式中,结合第一方面以及第一方面的第一种可能的实现方式,所述滑动窗口内存储的所有校验数据的长度S与所述预设位数W的关系为S = i*W+T,其中I < W < S,所述T小于W,则当在所述滑动窗口内每存储预设位数的校验数据时,对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果,包括
在所述滑动窗口内存储i*W位校验数据,i = I时,根据预先存储的W位对应的校验常数计算得到所述W位校验数据对应的CRC中间结果;在所述滑动窗口内i*W位校验数据,i > 1,则根据(i-1) *ff位数据对应的CRC中间结果以及i*W位对应的校验常数计算得到所述i*W位数据对应的CRC中间结果,所述i*W位对应的校验常数根据(i-1) *W位对应的校验常数计算获得;在所述滑动窗口内存储最后T位校验数据时,若i = 0,即S = T,则根据预存储的T位数据对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果;若i古0,则根据i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。在第三种可能的实现方式中,所述对所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果,包括根据所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果以及CRC校验结果影响矩阵计算得到整个校验数据的CRC校验结果。第二方面,提供一种循环冗余校验装置,包括存储单元,用于将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内;串行计算单元,用于对所述存储单元在各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果;合并计算单元,用于对所述串行计算单元计算得到的所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果;判断单元,用于根据所述合并计算单元计算得到的整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。在第一种可能的实现方式中,对于一个滑动窗口来说,所述串行计算单元用于当在所述滑动窗口内每存储预设位数的校验数据时,对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果。在第二种可能的实现方式中,结合第一方面以及第一方面的第一种可能的实现方式,所述滑动窗口内存储的所有校验数据的长度S与所述预设位数W的关系为S = i*W+T,其中I < WS S,所述T小于W,则所述串行计算单元用于当在所述滑动窗口内每存储预设位数的校验数据时,对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果,包括在所述滑动窗口内存储i*W位校验数据,i = I时,根据预先存储的W位对应的校验常数计算得到所述W位校验数据对应的CRC中间结果;在所述滑动窗口内i*W位校验数据,i > 1,则根据(i-1) *ff位数据对应的CRC中间结果以及i*W位对应的校验常数计算得到所述i*W位数据对应的CRC中间结果,所述i*W位对应的校验常数根据(i-1) *W位对应的校验常数计算获得;在所述滑动窗口内存储最后T位校验数据时,若i = 0,即S = T,则根据预存储的T位数据对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果;若i古0,则根据i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。
在第三种可能的实现方式中,所述合并计算单元,用于根据所述串行计算单元计算得到的N个分支中所有所述滑动窗口的校验数据的CRC校验结果以及CRC校验结果影响矩阵计算得到整个校验数据的CRC校验结果。 本发明实施例提供的一种循环冗余校验方法及装置,通过将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内并对所述各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果;然后对所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果;最终可以根据所述整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。这样多分支同步进行CRC校验,节省CRC的校验时间,且每个滑动窗口只存储一个校验常数,递归计算得到其他校验常数,减少了存储量。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例提供的一种循环冗余校验方法的流程示意图;图2为本发明实施例提供的一种循环冗余校验方法的具体计算顺序图示示意图;图3为本发明实施例提供的一种循环冗余校验方法的另一种具体计算顺序图示示意图;图4为本发明实施例提供的一种循环冗余校验方法的另一种具体计算顺序图示示意图;图5为本发明实施例提供的一种循环冗余校验方法的另一种具体计算顺序图示示意图;图6为本发明实施例提供的一种循环冗余校验装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种循环冗余校验方法,如图I所示,所述方法包括以下步骤 101、将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内。在通信系统中,数据接收端接收到数据后,先应用译码器对数据进行译码,然后将译码后的数据通过CRC校验装置进行CRC校验,检测接收到的数据是否正确。本发明实施例提供的循环冗余校验方法主要与同步输出至少一个分支数据的译码器联合应用。如采用多分支滑动窗口算法的Turbo译码器中的数据就是多分支并行输出的。整个校验数据经译码器译码后由N分支并行输入到CRC校验装置,所述N大于等 于I。所述CRC校验装置可以将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内。所述同步接收到的N个分支的校验数据中各个分支的校验数据是以滑动窗口为单位顺序输入的,所述滑动窗口的校验数据的输入顺序为从高位向低位的正向顺序输入或从低位向高位的反向顺序输入。在这里可以如图2所示,经译码器译码后输入所述CRC校验装置的数据为LEN bit位,所述LEN满足LEN = L+M,其中,所述L为所述校验数据的位数,LEN bit中前L bit为待校验数据。所述M为CRC生成多项式的阶数。译码器译码后的数据分三个分支依照图2黑色虚线所示的顺序并行输入CRC校验装置。每个分支中的校验数据是以滑动窗口为单位顺序输入的。滑动窗口中的校验数据可以如图2中黑色虚线所示从低位向高位反向顺序输入,当然也可以从高位向低位正向顺序输入。102、对所述各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果。CRC校验装置并行计算同步输入的N个分支中各分支的滑动窗口的校验数据的CRC校验结果,其中每个所述滑动窗口的校验数据的CRC校验结果是根据每个所述滑动窗口的校验数据串行计算得到的,可选的,对于一个滑动窗口来说,当在所述滑动窗口内每存储预设位数的校验数据时,所述CRC校验装置可以对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果。CRC校验装置随着图2所示的校验数据的输入进行并行计算,图2所示的黑实点表示进行CRC计算的时间点和数据位置。译码器边译码边向CRC校验装置输入校验数据,CRC校验装置随着数据的输入进行CRC计算,在译码过程中就能进行CRC计算,不必像CRC逐比特校验方法一样等到译码结束将校验数据全部顺序输入再进行CRC计算。CRC校验装置以滑动窗口为单位并行计算输入各分支的滑动窗口的校验数据的CRC校验结果;存储在每个所述滑动窗口的校验数据的CRC校验结果是随着所述滑动窗口的校验数据的输入串行计算得到的。具体的,所述滑动窗口内存储的所有校验数据的长度S与所述预设位数W的关系为S = i*W+T,其中I < W < S,所述T小于W,所述当在所述滑动窗口内每存储预设位数的校验数据时,所述CRC校验装置可以对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果的过程如下Al、在所述滑动窗口内存储i*W位校验数据,i = I时,根据预先存储的W位对应的校验常数计算得到所述W位校验数据对应的CRC中间结果。A2、在所述滑动窗口内i*W位校验数据,i > I时,则根据(i-1) *W位数据对应的CRC中间结果以及i*W位对应的校验常数计算得到所述i*W位数据对应的CRC中间结果,所述i*W位对应的校验常数根据(i-1) *W位对应的校验常数计算获得。W取值通常小于32bit,W位对应的校验常数是指计算输入所述滑动窗口的前W位校验数据的CRC中间结果时需要的计算常数,在整个校验数据的不同数据位对应有不同的校验常数。所述CRC校验装置中预先存储每个滑动窗口的W位对应的校验常数,当输入滑动窗口 W位校验数据时,根据所述W位对应的校验常数计算得到所述W位数据对应的CRC中间结果。当输入所述滑动窗口 i*W位校验数据,i > I时,先根据(i-1) *W位对应的校验·常数计算获得i*W位对应的校验常数,再根据(i-1) *W位数据对应的CRC中间结果以及i*W位对应的校验常数计算得到所述i*W位数据对应的CRC中间结果。就这样随着滑动窗口中校验数据的输入逐步计算输入所述滑动窗口的i*W位校验数据的CRC中间结果。A3、在所述滑动窗口内存储最后T位校验数据时,若i = 0,即S = T,则根据预存储的T位数据对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果;若1古0,则根据i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。按照步骤Al、A2逐步计算输入所述滑动窗口的校验数据的CRC中间结果,当输入所述滑动窗口最后T位校验数据时,i = O时,即S = T,则根据预存储的T位数据对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果;i Φ 0,则根据前i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。这里需要说明的是,不管上述滑动窗口中的校验数据的输入是正向顺序输入,还是反向顺序输入,都可以应用步骤A和B随着校验数据的输入计算已输入到所述滑动窗口的的校验数据的CRC中间结果,有所不同的是根据(i-1)*W位对应的校验常数计算i*W位对应的校验常数用到的计算公式根据输入顺序的不同而不同。这样每输入W位校验数据就进行一次CRC计算,直到输入滑动窗口长度的校验数据时,就可以计算出所述滑动窗口的校验数据的CRC校验结果。103、对所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果。当整个校验数据全部输入所述CRC校验装置的各分支的各滑动窗口时,CRC校验装置依照步骤102可以计算出输入各分支的各滑动窗口的校验数据的CRC校验结果,一个滑动窗口输入的校验数据对应一个CRC校验结果,根据所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果以及CRC校验结果影响矩阵计算得到整个校验数据的CRC校验结果,根据CRC校验结果影响矩阵对CRC校验结果进行合并计算为现有技术,本领域的技术人员都清楚了解,在此不再赘述。104、根据所述整个校验数据的CRC校验结果判断接收到的所述整个校验数据是
否正确。通常情况下,CRC校验是指应用接收到的字段除以CRC生成码(二进制除法)。如果能除尽即CRC校验结果为0,则所述整个校验数据是否正确,否则,不正确。在这里,CRC校验装置按照预设规则进行CRC校验,然后根据所述整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。可选的,在此举例说明上述循环冗余校验方法的应用。假设L位校验数据分3个分支并行输入存储在CRC校验装置,输入存储在各分支的数据为4Wbit,存储在各分支中的校验数据是以滑动窗口为单位串行顺序输入存储的,SP 在各分支中校验数据是一个滑动窗口一个滑动窗口连续输入存储的,每个滑动窗口的长度为 2ffbit0例1,如图2所示,黑色虚线表示校验数据随时间的输入存储顺序,各分支中串行连续输入存储两个滑动窗口的校验数据,各滑动窗口中的校验数据是按照从低位向高位的反向顺序输入的。输入存储在各个滑动窗口的校验数据的长度为S,其中,所述S满足S =i*W+T = 2*W,T = O。预先存储各滑动窗口的W位对应的校验常数,即白实点所在数据位的校验常数,2W位对应的校验常数由所述W位对应的校验常数进行递归计算获得,按照图2所示的输入顺序,2W位对应的校验常数β 2满足以下公式-Ji = α i*W位对应的校验常数,α为CRC生成多项式相关的常数。0为GF(2~M)伽罗华域乘法。在时间T时,在CRC校验装置中输入存储的3个分支各分支的第一个滑动窗口 W位校验数据,此时CRC校验装置根据预先存储在各滑动窗口的W位对应的校验常数,并行计算各分支中输入的前W位数据对应的CRC中间结果,黑实点就表示进行CRC计算的时间点和数据位置。各分支的第一个滑动窗口中继续存储校验数据,在时间2T时,CRC校验装置的3个分支中各分支的第一个滑动窗口中共输入存储有2W位校验数据,此时CRC校验装置会根据计算得到的各滑动窗口的2W位对应的校验常数和前W位数据对应的CRC中间结果计算得到的输入各分支中第一个滑动窗口的2W位校验数据的CRC校验结果,至此,CRC校验装置并行计算得到输入各分支中第一个滑动窗口的校验数据的CRC校验结果。同理,在校验数据随时间并行输入存储在三个分支中各分支的第二个滑动窗口时,CRC校验装置进行同步并行计算,得到输入各分支中第二个滑动窗口的校验数据的CRC校验结果。这里需要说明的是图2所示的最后一个分支的第二个滑动窗口中输入存储的前Mbit数据不是待校验数据不需要进行CRC计算,在这里只需根据预先存储的所述滑动窗口的W位对应的校验常数,对输入存储在最后一个分支的第二个滑动窗口的Wbit位的校验数据进行CRC计算,得到输入存储在该滑动窗口的校验数据的CRC校验结果。Lbit校验数据在4T时间内被全部输入存储在CRC检验装置时,所述CRC检验装置可以逐步并行计算出输入3个分支中所有6个滑动窗口的检验数据的CRC校验结果,对这6个CRC校验结果进行合并计算,即可得到整个校验数据的CRC校验结果。例2,如图3所示,黑色虚线表示校验数据随时间的输入存储顺序,各分支中串行连续输入存储两个滑动窗口的校验数据,各滑动窗口中的校验数据的输入顺序是从高位向低位的正向顺序输入。输入各个滑动窗口的校验数据的长度为S,其中,所述S满足S =i*W+T = 2*W,T = O0预先存储各滑动窗口的W位对应的校验常数,即白实点所在数据位的校验常数,2W位对应的校验常数由所述W位对应的校验常数进行递归计算获得,按照图3所示的顺序输入存储,2W位对应的校验常数β 2满足以下公式β i = F1 (β H),位
对应的校验常数,F1 O为递归函数。在时间T时,CRC校验装置的3个分支各分支的第一个滑动窗口共输入存储W位校验数据,此时CRC校验装置根据预先存储在各滑动窗口的W位对应的校验常数,并行计算各分支中输入存储的前W位数据对应的CRC中间结果,黑实点就表示进行CRC计算的时间点和数据位置。各分支的第一个滑动窗口中继续输入存储校验数据,在时间2Τ时,CRC校验装置的3个分支中各分支的第一个滑动窗口中输入存储2W位校验数据,此时CRC校验装置会根据计算得到的各滑动窗口的2W位对应的校验常数和前W位数据对应的CRC中间结果计算得到的输入存储在各分支中第一个滑动窗口的2W位校验数据的CRC校验结果,至此,CRC校验装置并行计算得到输入各分支中第一个滑动窗口的校验数据的CRC校验结果。同理,在校验数据随时间并行输入存储在三个分支中各分支的第二个滑动窗口时,CRC校验装 置进行同步并行计算,得到存储在各分支中第二个滑动窗口的校验数据的CRC校验结果。这里需要说明的是图3所示的最后一个分支的第二个滑动窗口中输入的最后Mbit数据不是校验数据不需要进行CRC计算,在这里只需根据预先存储的所述滑动窗口的W位对应的校验常数,对输入存储在最后一个分支的第二个滑动窗口的Wbit位的校验数据进行CRC计算,得到输入该滑动窗口的校验数据的CRC校验结果。Lbit校验数据在4T时间内被全部输入存储在CRC检验装置时,所述CRC检验装置可以逐步并行计算出输入3个分支中所有6个滑动窗口的检验数据的CRC校验结果,对这6个CRC校验结果进行合并计算,即可得到整个校验数据的CRC校验结果。例3,如图4所示,黑色虚线表示校验数据随时间的输入存储顺序,各分支中串行连续输入存储两个滑动窗口的校验数据,第一个滑动窗口的校验数据的输入存储顺序是从低位向高位的反向顺序输入,第二个滑动窗口的校验数据的输入存储顺序是从高位向低位的正向顺序输入。输入各个滑动窗口的校验数据的长度为S,其中,所述S满足S = i*W+T=2*w,T = O。预先存储各滑动窗口的W位对应的校验常数,即白实点所在数据位的校验常数,2W位对应的校验常数由所述W位对应的校验常数进行递归计算获得,按照图4所示的输入顺序,滑动窗口的校验数据正向输入时,2W位对应的校验常数β 2满足以下公式β i=F1 ( β ^1), Pi为i*W位对应的校验常数,F1 O为递归函数;滑动窗口的校验数据正向输入时,2W位对应的校验常数β2满足以下公式'βΓα βΜ 1为i*W位对应的校验常数,α为CRC生成多项式相关的常数0力6 (211)伽罗华域乘法。在T时刻,CRC校验装置的i个分支各分支的第一个滑动窗口共输入存储W位校验数据,此时CRC校验装置根据预先存储在各滑动窗口的W位对应的校验常数,并行计算各分支中输入存储的前W位数据对应的CRC中间结果,黑实点就表示进行CRC计算的时间点和数据位置。各分支的第一个滑动窗口中继续输入存储校验数据,在时间2T时,CRC校验装置的3个分支中各分支的第一个滑动窗口中输入存储2W位校验数据,此时CRC校验装置会根据计算得到的各滑动窗口的2W位对应的校验常数和前W位数据对应的CRC中间结果计算得到的输入存储在各分支中第一个滑动窗口的2W位校验数据的CRC校验结果,至此,CRC校验装置并行计算得到输入各分支中第一个滑动窗口的校验数据的CRC校验结果。同理,在校验数据随时间并行输入存储在三个分支中各分支的第二个滑动窗口时,CRC校验装置进行同步并行计算,得到存储在各分支中第二个滑动窗口的校验数据的CRC校验结果。这里需要说明的是图4所示的最后一个分支的第二个滑动窗口中输入的最后Mbit数据不是校验数据不需要进行CRC计算,在这里只需根据预先存储的所述滑动窗口的W位对应的校验常数,对输入存储在最后一个分支的第二个滑动窗口的Wbit位的校验数据进行CRC计算,得到输入该滑动窗口的校验数据的CRC校验结果。Lbit校验数据在4T时 间内被全部输入存储在CRC检验装置时,所述CRC检验装置可以逐步并行计算出输入3个分支中所有6个滑动窗口的检验数据的CRC校验结果,对这6个CRC校验结果进行合并计算,即可得到整个校验数据的CRC校验结果。例4,如图5所示,黑色虚线表示校验数据随时间的输入存储顺序,各分支中串行连续输入存储两个滑动窗口的校验数据,第一个滑动窗口的校验数据的输入存储顺序是从高位向低位的正向顺序输入,第二个滑动窗口的校验数据的输入存储顺序是从低位向高位的反向顺序输入。输入各个滑动窗口的校验数据的长度为S,其中,所述S满足S = i*W+T =2*W,T = O。预先存储各滑动窗口的W位对应的校验常数,即白实点所在数据位的校验常数,2W位对应的校验常数由所述W位对应的校验常数进行递归计算获得,即黑虚点所在数据位的校验常数。按照图4所示的输入顺序,滑动窗口的校验数据正向输入时,2W位对应的校验常数β 2满足以下公式β i = F1 ( β ^1), β i为i*W位对应的校验常数,F1 O为递归函数;滑动窗口的校验数据正向输入时,2W位校对应的验常数β2满足以下公式爲= 爲一P
为i*W位对应的校验常数,α为CRC生成多项式相关的常数。 SGF(2~M)伽罗华域乘法。在时刻T时,CRC校验装置的3个分支各分支的第一个滑动窗口共输入存储W位校验数据,此时CRC校验装置根据预先存储在各滑动窗口的W位对应的校验常数,并行计算各分支中输入存储的前W位数据对应的CRC中间结果,黑实点就表示进行CRC计算的时间点和数据位置。各分支的第一个滑动窗口中继续输入存储校验数据,在时间2T时,CRC校验装置的3个分支中各分支的第一个滑动窗口中输入存储2W位校验数据,此时CRC校验装置会根据计算得到的各滑动窗口的2W位对应的校验常数和前W位数据对应的CRC中间结果计算得到的输入存储在各分支中第一个滑动窗口的2W位校验数据的CRC校验结果,至此,CRC校验装置并行计算得到输入各分支中第一个滑动窗口的校验数据的CRC校验结果。同理,在校验数据随时间并行输入存储在三个分支中各分支的第二个滑动窗口时,CRC校验装置进行同步并行计算,得到存储在各分支中第二个滑动窗口的校验数据的CRC校验结果。这里需要说明的是图5所示的最后一个分支的第二个滑动窗口中输入的最后Mbit数据不是校验数据不需要进行CRC计算,在这里只需根据预先存储的所述滑动窗口的W位对应的校验常数,对输入存储在最后一个分支的第二个滑动窗口的Wbit位的校验数据进行CRC计算,得到输入该滑动窗口的校验数据的CRC校验结果。L bit校验数据在4T时间内被全部输入,CRC检验装置可以同步计算出输入3个分支中6个滑动窗口的检验数据的CRC校验结果,对这6个CRC校验结果进行合并计算,即可得到整个校验数据的CRC校验结果。Lbit校验数据在4T时间内被全部输入存储在CRC检验装置时,所述CRC检验装置可以逐步并行计算出输入3个分支中所有6个滑动窗口的检验数据的CRC校验结果,对这6个CRC校验结果进行合并计算,即可得到整个校验数据的CRC校验结果。上述的4个例子中,各滑动窗口的长度为W的倍数,当所述滑动窗口的长度为S,其中,所述S满足S = i*W+T,T小于W,且T不为O时,在输入所述滑动窗口最后T位校验数据后,CRC校验装置根据i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。本发明实施例还提供了一种循环冗余校验装置,如图6所示,所述装置包括存储单元601,串行计算单元602,合并计算单元603,判断单元604。存储单元601,用于将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内。在通信系统中,数据接收端接收到数据后,先应用译码器对数据进行译码,然后将译码后的数据通过CRC校验装置进行CRC校验,检测接收到的数据是否正确。本发明实施例提供的循环冗余校验方法主要与同步输出至少一个分支数据的译码器联合应用。如采用多分支滑动窗口算法的Turbo译码器中的数据就是多分支并行输出的。
整个校验数据经译码器译码后由N分支并行输入到CRC校验装置,所述N大于等于I。所述CRC校验装置的存储单元601可以将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内。所述同步接收到的N个分支的校验数据中各个分支的校验数据是以滑动窗口为单位顺序输入的,所述滑动窗口的校验数据的输入顺序为从高位向低位的正向顺序输入或从低位向高位的反向顺序输入。在这里可以如图2所示,经译码器译码后输入所述CRC校验装置的数据为LEN bit位,所述LEN满足LEN = L+M,其中,所述L为所述校验数据的位数,LEN bit中前L bit为待校验数据。所述M为CRC生成多项式的阶数。译码器译码后的数据分三个分支依照图2黑色虚线所示的顺序并行输入CRC校验装置。每个分支中的校验数据是以滑动窗口为单位顺序输入的。滑动窗口中的校验数据可以如图2中黑色虚线所示从低位向高位反向顺序输入,当然也可以如图3所示的从高位向低位正向顺序输入。也可以如图4,图5所不的混合输入。串行计算单元602,用于对所述存储单元601在各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果。CRC校验装置的串行计算单元602可以并行计算输入存储在N个分支中各分支的滑动窗口的校验数据的CRC校验结果,其中每个所述滑动窗口的校验数据的CRC校验结果是根据每个所述滑动窗口的校验数据串行计算得到的,可选的,对于一个滑动窗口来说,串行计算单元602可以在所述滑动窗口内每存储预设位数的校验数据时,所述CRC校验装置可以对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果。串行计算单元602可以随着图2所示的校验数据的输入存储进行计算,图2所示的黑实点表示进行CRC计算的时间点和数据位置。译码器边译码边向CRC校验装置输入校验数据,CRC校验装置随着数据的输入进行CRC计算,在译码过程中就能进行CRC计算,不必像CRC逐比特校验方法一样等到译码结束将校验数据全部顺序输入再进行CRC计算。CRC校验装置以滑动窗口为单位并行计算输入存储在各分支的滑动窗口的校验数据的CRC校验结果;存储在每个所述滑动窗口的校验数据的CRC校验结果是随着所述滑动窗口的校验数据的输入串行计算得到的。具体的,所述滑动窗口内存储的所有校验数据的长度S与所述预设位数W的关系为S = i*W+T,其中IS,所述T小于W,所述串行计算单元602在所述滑动窗口内每
存储预设位数的校验数据时,所述CRC校验装置可以对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果的过程如下Al、在所述滑动窗口内存储i*W位校验数据,i = I时,根据预先存储的W位对应的校验常数计算得到所述W位校验数据对应的CRC中间结果。A2、在所述滑动窗口内位校验数据,i > I时,则根据(i-1) 位数据对应的CRC中间结果以及i*W位对应的校验常数计算得到所述i*W位数据对应的CRC中间结果,所述i*W位对应的校验常数根据(i-1) *W位对应的校验常数计算获得。W取值通常小于32bit,W位对应的校验常数是指计算输入所述滑动窗口的前W位校验数据的CRC中间结果时需要的计算常数,在整个校验数据的不同数据位对应有不同的校验常数。所述CRC校验装置中预先存储每个滑动窗口的W位对应的校验常数,当输入滑·动窗口 W位校验数据时,根据所述W位对应的校验常数计算得到所述W位数据对应的CRC中间结果。当输入所述滑动窗口 i*W位校验数据,i > I时,先根据(i-1) *W位对应的校验常数计算获得i*W位对应的校验常数,再根据(i-1) *W位数据对应的CRC中间结果以及i*W位对应的校验常数计算得到所述i*W位数据对应的CRC中间结果。就这样随着滑动窗口中校验数据的输入逐步计算输入所述滑动窗口的i*W位校验数据的CRC中间结果。A3、在所述滑动窗口内存储最后T位校验数据时,若i = 0,即S = T,则根据预存储的T位数据对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果;若1古0,则根据i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。按照步骤Al、A2逐步计算输入所述滑动窗口的校验数据的CRC中间结果,当输入所述滑动窗口最后T位校验数据时,i = O时,即S = T,则根据预存储的T位数据对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果;i Φ 0,则根据前i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。这里需要说明的是,不管上述滑动窗口中的校验数据的输入是正向顺序输入,还是反向顺序输入,都可以应用步骤A和B随着校验数据的输入计算已输入到所述滑动窗口的的校验数据的CRC中间结果,有所不同的是根据(i-1)*W位对应的校验常数计算i*W位对应的校验常数用到的计算公式根据输入顺序的不同而不同。这样每输入W位校验数据就进行一次CRC计算,直到输入滑动窗口长度的校验数据时,就可以计算出所述滑动窗口的校验数据的CRC校验结果。合并计算单元603,用于对所述串行计算单元602计算得到的所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结
果O当整个校验数据全部输入所述CRC校验装置的各分支的各滑动窗口时,CRC校验装置的串行计算单元602可以计算出输入各分支的各滑动窗口的校验数据的CRC校验结果,一个滑动窗口输入的校验数据对应一个CRC校验结果,然背后所述合并计算单元603根据所述串行计算单元602计算得到的N个分支中所有所述滑动窗口的校验数据的CRC校验结果以及CRC校验结果影响矩阵计算得到整个校验数据的CRC校验结果。这里所述的根据CRC校验结果影响矩阵对CRC校验结果进行合并计算为现有技术,本领域的技术人员都清楚了解,在此不再赘述。判断单元604,用于根据所述合并计算单元603计算得到的整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。通常情况下,CRC校验是指应用接收到的字段除以CRC生成码(二进制除法)。如果能除尽即CRC校验结果为0,则所述整个校验数据是否正确,否则,不正确。在这里,CRC校验装置按照预设规则进行CRC校验,然后判断单元604根据所述整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。应用本发明实施例提供的一种循环冗余校验方法及装置,以校验数据L = 4136为例,CRC-24编码,即M = 24,则总数据长度LEN = L+M = 4160bit,校验常数β i为24位。 Turbo译码器4个分支,每个分支8个滑动窗,每个窗130bit,W = 8bit。则CRC校验装置总共需要4*8*24 = 768bit存储校验常数β i;4个伽罗华域乘法器用于β ,的中间计算,4个伽罗华域加法器合并中间结果得到最终结果,延时约I 3个cycle。而采用现有技术方法一 CRC逐比特校验方法,W = 8bit,则需要将所有数据输入CRC校验装置,CRC校验装置延时LEN/W = 520个cycle。采用现有技术方法二 CRC同步校验方法,则CRC计算模块总共需要L/W*M = 12408bit校验常数β y L/ff = 517个伽罗华域乘法器和I个伽罗华域加法器得到最终结果,延时I 3个cycle。综上所述,本发明实施例提供的一种循环冗余校验方法及装置,通过将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内并对所述各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果;然后对所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果;最终可以根据所述整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。这样多分支同步进行CRC校验,节省CRC的校验时间,且每个滑动窗口只存储一个校验常数,递归计算得到其他校验常数,减少了存储量。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
1.一种循环冗余校验方法,其特征在于,包括 将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内; 对所述各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果; 对所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果; 根据所述整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。
2.根据权利要求I所述的方法,其特征在于,所述同步接收到的N个分支的校验数据中各个分支的校验数据是以滑动窗口为单位顺序输入的,所述滑动窗口的校验数据的输入顺序为从高位向低位的正向顺序输入或从低位向高位的反向顺序输入。
3.根据权利要求I或2所述的方法,其特征在于,对于一个滑动窗口来说,所述N个分支中的各个分支的所述滑动窗口内的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果中,包括 当在所述滑动窗口内每存储预设位数的校验数据时,对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果。
4.根据权利要求3所述的方法,其特征在于,所述滑动窗口内存储的所有校验数据的长度S与所述预设位数W的关系为S = i*W+T,其中I彡W彡S,所述T小于W,则当在所述滑动窗口内每存储预设位数的校验数据时,对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果,包括 在所述滑动窗口内存储i*W位校验数据,i = I时,根据预先存储的W位对应的校验常数计算得到所述W位校验数据对应的CRC中间结果; 在所述滑动窗口内i*W位校验数据,i > 1,则根据位数据对应的CRC中间结果以及i*W位对应的校验常数计算得到所述i*W位数据对应的CRC中间结果,所述i*W位对应的校验常数根据(i_l)*W位对应的校验常数计算获得; 在所述滑动窗口内存储最后T位校验数据时,若i = O,即S = T,则根据预存储的T位数据对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果;若i Φ O,则根据i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。
5.根据权利要求I 4任一项所述的方法,其特征在于,所述对所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果,包括 根据所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果以及CRC校验结果影响矩阵计算得到整个校验数据的CRC校验结果。
6.一种循环冗余校验装置,其特征在于,包括 存储单元,用于将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内;串行计算单元,用于对所述存储单元在各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果; 合并计算单元,用于对所述串行计算单元计算得到的所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果; 判断单元,用于根据所述合并计算单元计算得到的整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。
7.根据权利要求6所述的装置,其特征在于,所述同步接收到的N个分支的校验数据中各个分支的校验数据是以滑动窗口为单位顺序输入的,所述滑动窗口的校验数据的输入顺序为从高位向低位的正向顺序输入或从低位向高位的反向顺序输入。
8.根据权利要求6或7所述的装置,其特征在于,对于一个滑动窗口来说,所述串行计算单元用于当在所述滑动窗口内每存储预设位数的校验数据时,对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果。
9.根据权利要求8所述的装置,其特征在于,所述滑动窗口内存储的所有校验数据的长度S与所述预设位数W的关系为S = i*W+T,其中I < W < S,所述T小于W,则所述串行计算单元用于当在所述滑动窗口内每存储预设位数的校验数据时,对所述滑动窗口内已存储的校验数据进行串行计算,直至计算出所述整个校验数据输入完成时所述滑动窗口内存储的所有校验数据的CRC校验结果,包括 在所述滑动窗口内存储i*W位校验数据,i = I时,根据预先存储的W位对应的校验常数计算得到所述W位校验数据对应的CRC中间结果; 在所述滑动窗口内i*W位校验数据,i > 1,则根据位数据对应的CRC中间结果以及i*W位对应的校验常数计算得到所述i*W位数据对应的CRC中间结果,所述i*W位对应的校验常数根据(i_l)*W位对应的校验常数计算获得; 在所述滑动窗口内存储最后T位校验数据时,若i = O,即S = T,则根据预存储的T位数据对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果;若i Φ O,则根据i*W位数据对应的CRC中间结果以及S位对应的校验常数计算得到所述滑动窗口的校验数据的CRC校验结果,所述S位对应的校验常数根据i*W位对应的校验常数计算得到或预先存储得到。
10.根据权利要求5 9任一项所述的装置,其特征在于,所述合并计算单元,用于根据所述串行计算单元计算得到的N个分支中所有所述滑动窗口的校验数据的CRC校验结果以及CRC校验结果影响矩阵计算得到整个校验数据的CRC校验结果。
全文摘要
本发明实施例涉及通信领域,提供了一种循环冗余校验方法及装置,可以节省CRC的校验时间,减小存储量。所述方法包括将同步接收到的N个分支的校验数据对应存储在N个分支中各个分支的滑动窗口内并对所述各个分支的滑动窗口内存储的校验数据进行串行计算,得到所述各个分支的所述滑动窗口的校验数据的CRC校验结果;然后对所述N个分支中所有所述滑动窗口的校验数据的CRC校验结果进行合并计算得到整个校验数据的CRC校验结果;最终可以根据所述整个校验数据的CRC校验结果判断接收到的所述整个校验数据是否正确。本发明实施例用于对数据进行循环冗余校验。
文档编号H04L1/00GK102882651SQ201210367279
公开日2013年1月16日 申请日期2012年9月27日 优先权日2012年9月27日
发明者张志明, 邱忠甫 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1