一种用于数据传输差错控制的嵌套crc码生成方法及装置的制作方法

文档序号:7865087阅读:159来源:国知局
专利名称:一种用于数据传输差错控制的嵌套crc码生成方法及装置的制作方法
技术领域
本发明属于通信及计算机数据传输差错控制技术领域,更具体地,涉及一种用于数据传输差错控制的嵌套CRC码生成方法及装置。
背景技术
在各种各样的数据通信中,一般都是将数据分组后进行传输,在分组数据后附加数据巾贞校验序列(Frame Check Sequence,简称FCS)进行差错控制,以保证传输的正确性。在中贞校验序列的实现中,循环冗余校验码(Cyclic Redundancy Code,简称CRC)以其高效率、高性能获得了广泛应用,是目前数据传输过程中普遍采用的一种提高数据通信可靠性的办法。数据发送过程中,发送端将需要传送的数据进行CRC校验码计算,并将校验码附 在传送数据后一起发送。接收端需要用同样的计算方法对接收到的数据进行校验码计算,然后将计算得到的CRC码与接收到的CRC码进行比较,如果一致则说明数据传送无误,反之数据传送有差错。如果数据传送有误,可以采用各种自动重发请求(AutomaticRepeat-request,简称ARQ)技术让发送端重新传送该数据。在现有的技术中,CRC编码的计算可以由软件和硬件完成。软件和硬件均分为串行与并行两种方式。在实时高速数据通信中,为了达到实时高速的要求,多采用并行CRC编码计算来提高运算速度。目前通用的并行计算主要有两种,一种是通过异或逻辑和余数缓存器及相关控制电路组成,可采用可编程逻辑器件(programmable logic device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等器件实现。另一种是通过查找余数表实现,该方法可以通过预先计算好余数表,并储存余数表,由软、硬件查找余数表来实现并行计算。在第一种实现方式中,随着并行计算的位数增加,所需要的逻辑资源也大量增加,而且随着级联的逻辑门越来越多,会导致寄存器之间的延时不断增加,成为提升计算速度的瓶颈。在第二种并行计算方法中,对于R位的CRC并行计算,需要保存的余数表容量为(2K *R)bit,因此,随着并行计算位数R的增加,存储的容量也会呈指数上升,成为提升计算速度的瓶颈。在并行计算的基础之上,为了进一步提升CRC编码计算的速度,可以通过对数据块进行预先分段,利用多个并行CRC计算通道对各数据块同时进行计算,从而进一步提升CRC计算速度。公布号为CN1431594A的中国发明专利申请公开了一种多通道多位并行计算CRC码的方法。该方法直接将整个待计算CRC码数据按每个长度为Ls位分割成多个数据块,最后一个通道的数据长度为Lf,并将各数据块按顺序依次放入N个通道,由该N个通道同时对各自通道中的数据块进行CRC计算,得到N个通道中数据块的CRC子码;再通过构建除法余数变换表,对前N-I个通道的CRC子码进行除法余数变换查表(最后一个通道不需要进行余数变换),得到变换后的CRC子码;最后对变换后的CRC子码逐一进行异或计算后,得到整个待计算数据CRC码。但是,该方法需要对N-I个通道计算的CRC子码依次进行余数转后才能得到各通道需要的CRC计算码,因而存在以下缺点I)按照该专利的说明,前N-I个通道中计算得到的CRC子码,需要再通过构建除法余数变换表,对N个通道的CRC子码进行除法余数变换查表,才能得到需要的CRC子码。其中第i(i为小于N的正整数)个通道的余数转换表中的表项,是通过对典型数据余数表中每一个表项进行[(N-i) .Q+P]次连续查表得到的,其中Ls为所计算的CRC码位数R的Q倍,最后一个通道的数据长度Lf为计算CRC位数R的P倍。因此,随着待计算数据的长度变化,会导致N、P两个变量发生变化,单个通道对应的余数表则随着这两个参数而发生变化,从而无法为每个通道分配固定的余数变换表。2)按照该专利的说明,需要为前N-I个通道的每一个通道分配一个余数转换表,这使得计算器需要的存储容量大大增加。如建立一个N通道的运算器,余数转换表需要的存储容量为[(N-I) ·2Ε· RJbit0因此,随着所计算CRC码位数R的增加,整个计算器需要分配给余数转换表的存储容量将急剧上升。例如在32位CRC计算中,单个通道需要的余数转换表的存储容量为16GB的容量。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种用于数据传输差错控制的嵌套CRC码生成方法,旨在解决现有多通道多位并行CRC码生成方法中存储容量耗费大、通用性较差的问题,并且嵌套CRC码的纠错能力优于传统的CRC码。为实现上述目的,本发明提供了一种用于数据传输差错控制的嵌套CRC码生成方法,包括以下步骤(I)数据分割器对待计算数据进行分段,具体包括以下子步骤(ι-l)将数据分割器中的数据初始化为0,并根据计算通道的数量N确定数据分割器的最大分段数为N ;(1-2)为整个数据分割器生成Ν+1个指针(P。,P1,…,Pi,…,Pn)和N个指针(Pl,P2,…,Pi,…,ρΝ),其中i为小于等于N的正整数,(Po,Po,…,Pi,…,Pn)将整个数据分割器分成N个长为Ls的数据段,按照N个数据段的顺序,为每个数据段分配一个指针分别为(P1, P2,…,Pi,…,pN),其中Ls为任意正整数;(1-3)为指针(PtllP1,…Pi,…,Pn)分配固定值,其中Pi = PiJLs,P。的值可以取任意值,整个计算过程中,Pi指针的值固定不变;(1-4)为N个数据区域的指针(P1, p2,…,Pi, ...,pN)分配初始值,并令(P1, P2,…,Pi,…,Pn)指针的初始值分别与(P。,P1,…,Pm,…,Pm)相等;(1-5)将待计算数据填充至数据分割器中,根据数据的填充情况,改变(Pl,p2,…,Pi,…,PN)指针的值;(1-6)数据分割器将待计算数据分为m段,并将m的值传递给通道选择器和反向通道选择器;(1-7)利用(Pl,p2,pm)的值,以及计算通道的并行计算位数W,在每一个时钟周期,向m个计算通道分别传送W位数据,并将(Pl,p2,p3··· pm)的值均减去W ;(1-8)判断(PuPhPfPm)是否与(Pc^P11PfPm-I)的值相等,若相等,贝1J进入步骤(2),否则返回步骤(1-7);
(2)为分割后的各待计算数据段分配所需的CRC码计算通道,具体包括以下子步骤(2-1)针对不同类型数据的Q次嵌套CRC码的生成,为通道选择器生成一张通道选择表用于在不同类型数据的各次嵌套计算中,为数据输入通道分配相应的计算通道,其中Q为正整数;(2-2)利用数据分割器传递的数据段总数m,通道选择器选通用于连接数据分割器的m个序号为(1,2,3,···,ηι)的输出与通道选择器的开关;(2-3)根据开关选择表,将选通的m个数据输入分别连接至相应的计算通道之上;(3)各计算通道对各待计算数据段进行CRC子码计算,具体包括以下子步骤(3-1)为N个计算通道分别分配相应的生成多项式为(gj (x), g2 (x), ···,gi (x),... ,gN(X)),其中i为I到N之间的任意值,各通道之间可以采用同样的生成多项式;(3-2)根据相应的生成多项式,利用逻辑电路或者查找余数表的方法来实现W位并行计算的各计算通道;(3-3)根据各计算通道所采用的生成多项式,为各通道设置初始值,通常可以为各计算通道赋初始值为全零或者全一;(3-4)对各通道的输入数据完成CRC子码计算,得到m个CRC子码;(4)对各通道计算所得到的CRC子码进行排序,具体包括以下子步骤(4-1)反向通道选择器与通道选择器共用一张通道选择表;(4-2)依据数据分割器传递的待计算数据的分段总数m,反向通道选择器选通序号为(1,2,3,···,!!!)的CRC子码暂存器与反向通道选择器的连接开关。(4-3)根据开关选择表,将选通的m个数据输出分别连接至相应的计算通道的输出之上;(4-4)各计算通道按照反向通道选择器的选择结果,将各计算通道计算所得的CRC子码存入相应的CRC子码暂存器,得到一串新的数据为(CRC1,CRC2,…,CRCi,…,CRCm),其中i为I到m之间的任意值,CRCi对应第i个数据段计算所得到的CRC子码;(5)判断是否需要再次进行多通道计算,如果需要,则将步骤(4)得到的CRC子码作为新的待计算数据,返回步骤(I);如果不需要,则进入步骤(6),具体包括以下子步骤(5-1)将CRC码的嵌套次数Q的值减去I ;(5-2)判断Q的值是否为0,若Q的值为0,则进入步骤(6);若Q的值不为零,则以
(4)步骤中排序好的CRC子码数据作为新的待计算数据,并返回步骤(I)进行计算;(6)第N+1个计算通道计算出最终的Q次嵌套CRC码,具体包括以下子步骤(6-1)为第N+1个CRC计算通道分配生成多项式gN+1 (x);(6-2)根据生成多项式,利用逻辑电路或者查找余数表的方法来实现W位并行计算的计算通道;(6-3)为该计算通道设置初始值,通常可以为该计算通道赋初始值为全零或者全(6-4)对多通道第Q次计算并经过排序所得到的CRC子码数据进行最后一次CRC码计算,得到最终的Q次嵌套CRC码。步骤(1-5)中,(P1, P2,…,Pi,…,pN)的赋值情况为
a)若第i个数据区域中填充了长度为Ls的待计算数据,则将Pi的值赋为Pi ;b)若第i个数据区域未填充数据段,则保持Pi的值不变;c)对于第m个填充区域,由于待计算数据并不保证以Ls对齐,为了保证计算的同步性,若第m个数据区域的填充长度Lf大于O且小于Ls,则将pm的值赋为Pm,即将长度为Lf数据段的长度通过补零扩展至Ls,其中m为待计算数据的长度除以Ls后上取整得到的值,Lf为待计算数据的长度除以Ls后得到的余数。步骤(2-1)具体包括以下子步骤(2-1-1)对于N个计算通道和数据分割器的N个数据输出通道,分别对其进行顺序编号(1,2, 3,…i,…,N),其中i为I到N之间的任意值;(2-1-2)为通道选择表的每一个表项分配一个长为N ·「Iog2N]位的矢量S(X),矢·
量多项式为
S(x) = mN{logl λ Λ「1θ& Λ B + mJVflog2 ΝΤ-2χΛ「1θ& 外2 Η + miX' Λ W1Xi + m0x°其中IIii = I 或 O (其中 i = O, I, 2, ..., iV-[log2 Ar]-!);(2-1-3)将 S (X)分成 N段长为「log2 iV"|的矢量(S1 (x), S2 (x),…,Si (x),…,sN(x)),其中i为I到N之间的任意值,(S1(X), S2 (X),…,Si (X),…,Sn(X))对应数据分割器的N个数据输出(1,2,3,···,i,···,N),其中Si(X)为分配给第i个数据输入的计算通道的序号;(2-1-4)固定待计算数据的数据类型,针对每一次嵌套CRC码的生成,生成Q个相应的S(X),作为一行表项保存在开关选择表中;(2-1-5)针对待计算数据的每一种数据类型,重复步骤(2-1-4),以构成完整的通道选择表。本发明的另一目的在于提供一种用于数据传输差错控制的嵌套CRC码生成装置,该装置一方面采用多通道多位并行计算CRC码,另一方面可以自动根据待计算数据的类型,为待计算数据选择不同的计算通道组合,因此该装置具有计算速度快,灵活性高等特点。为实现上述目的,本发明提供了一种用于数据传输差错控制的嵌套CRC码生成装置,包括数据分段模块、计算通道选择模块、多通道CRC码计算模块、数据排序模块、寄存器、计数器、数据分配器、单通道CRC码计算模块。数据分段模块用于将待计算数据按照一定的数据长度自动分段并通过补零的方法使各数据段长度对齐,并在时钟的控制下,将各数据段按照一定的位数依次传送出去;计算通道选择模块用于将各输入数据通道连接至所需要的计算通道之上;多通道CRC码计算模块用于同时对多个数据段计算CRC码;数据排序模块用于将各输入数据通道连接至所需要的寄存器之上;寄存器用于存储CRC码;计数器用于记录CRC码的计算次数,并控制数据分配器的数据输出;数据分配器用于对输入数据进行分配,数据的分配受到计数器的控制;单通道CRC码计算模块用于计算出最终的CRC码。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果I、通用性好在本发明中,由于采用了步骤(1),因此对于长度小于等于N *LS的任意长度的待计算数据都可以通过本发明来生成嵌套CRC码。2、使用的存储资源少在本发明中,由于采用了步骤(7),各计算通道计算得到的CRC子码再一次通过CRC计算通道计算即可得到嵌套CRC码,因此无需余数转换表,可以节省大量的存储资源。3、处理速度快在本发明中,由于采用了步骤(3)和步骤(6),因此能够实现对待计算数据的各数据块同时进行多位并行CRC码计算,从而在传统的并行CRC码计算的基础上,进一步加快了处理的速度,可以适用于一些实时高速的数据传输网络,例如IOGB以太网。4、用途广泛在本发明中,由于采用了步骤(2)和步骤(4),因此对于不同类型的待计算数据都可以通过本发明来生成嵌套CRC码,比较适合于一些融合型网络的应用,例如架构在IOGB以太网上的FCoE网络。5、差错控制能力强在本发明中,由于采用了步骤(3)、(5)、(6)和步骤(7),因此 在计算过程中,可以为待计算数据的各数据段分配不同的CRC码计算生成多项式,同时根据嵌套CRC码的差错控制原理,单个R位的CRC码检测的数据量减小,因此嵌套CRC码的差错控制能力优于传统的CRC码。


图I是本发明嵌套CRC码生成方法的流程图。图2是本发明嵌套CRC码生成方法的原理框图。图3是本发明中数据分割器原理框图。图4是本发明中通道选择器的原理框图。图5是本发明中反向通道选择器的原理框图。图6是本发明嵌套CRC码生成装置的示意框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下首先就本发明的技术术语进行解释和说明嵌套CRC码将传统的CRC码计算器计算得到的CRC码作为新的待计算数据,并利用传统的CRC码计算器对其进行CRC码计算,得到的CRC码即为单层嵌套CRC码。若将得到的CRC码依次继续进行Q次CRC码计算后,最终得到的CRC码即为Q次嵌套CRC码,其中Q为正整数。计算通道本发明中所提及的计算通道均为传统的W位并行CRC码计算器,其中W为各计算器单个时钟周期所能处理的数据位数。各计算通道之间相互独立,不存在关联,均能够独立地对数据进行传统的CRC码计算。本发明一共采用N+1个计算通道,其中N为任意正整数。生成多项式g(x):生成多项式g(x)用于CRC码计算中,是数据接收方和发送方约定好的一个二进制数,在数据传送过程中,这个二进制数保持不变。g(x)的位数决定了 CRC码的位数R。如图I和图2所示,本发明用于差错控制的高速嵌套CRC码生成方法包括以下步骤(I)数据分割器对待计算数据进行分段;具体而言,本步骤包括以下子步骤( 1-1)将数据分割器中的数据初始化为0,并根据计算通道的数量N确定数据分割器的最大分段数为N ;(1-2)参照图3,为整个数据分割器生成N+1个指针(P。,P1,…,Pi,…,Pn)和N个指针(Pl,P2,…,Pi,…,pN),其中i为小于等于N的正整数,(Po, P1,-,Pi,-,Pn)将整个数据分割器分成N个长为Ls的数据段,按照N个数据段的顺序,为每个数据段分配一个指针分别为(P1, Pu…,Pi,…,PN),其中Ls为任意正整数;(1-3)为指针(PtllP1,…Pi,…,Pn)分配固定值,其中Pi = PiJl^Pci的值可以取任 意值,整个计算过程中,Pi指针的值固定不变;( 1-4)为N个数据区域的指针(P1, P2,…,Pi,…,pN)分配初始值,并令(P1, P2,…,Pi,…,Pn)指针的初始值分别与(P。,P1,…,Pi+…,Pim)相等;(1-5)将待计算数据填充至数据分割器中,根据数据的填充情况,改变(Pl,p2,…,Pi,…,Pn)指针的值;a)若第i个数据区域中填充了长度为Ls的待计算数据,则将Pi的值赋为Pi ;b)若第i个数据区域未填充数据段,则保持Pi的值不变;c)对于第m个填充区域(其中m为待计算数据的长度除以Ls后上取整得到的值),由于待计算数据并不保证以Ls对齐,为了保证计算的同步性,若第m个数据区域的填充长度Lf (其中Lf为待计算数据的长度除以Ls后得到的余数)大于O且小于Ls,则将pm的值赋为Pm,即将长度为Lf数据段的长度通过补零扩展至Ls,从而解决待计算数据长度不对齐的问题。(1-6)数据分割器将待计算数据分为m段,并将m的值传递给通道选择器和反向通道选择器;(1-7)利用(Pl,p2,pm)的值,以及计算通道的并行计算位数W,在每一个时钟周期,向m个计算通道分别传送W位数据,并将(Pl,p2,p3··· pm)的值均减去W ;(1-8)判断(p” p2,p3…pm)是否与(P0,P1, P2…Pm-i)的值相等,若相等,则进入步骤
(2),否则返回步骤(1-7);举例而言,在本步骤中,设待计算数据的长度为[(m-1) · Ls+Lf],数据分割器的指针(Ptl, P1,…,Pm,…,PN_i)值预先分配好,将待计算数据放入数据分割器后,数据分割器自动将待计算数据分割成m段,序号为(1,2,3,…,m),并为m段数据各分配一个指针(Pl,P2,P3,…,Pm),(Pi, P2, P3, ···, Pm)的初始值设置为(P。, P1, P2, P3,…,Pnri)。待计算数据填充后,(P1, Pb …,Pm)的值被赋值为(P1, P2,Py…,Pm),其中第m个数据块的长度为Lf (I彡Lf彡Ls),数据分割器初始值为0,将Pm的值由初始值Pnrl改变为Pm,等效于Pnri的值由Pm-JLf扩展为Pm,从而实现第m个数据块的长度通过补零扩展为Ls。在计算过程中,通过(P1, P2, P3,…,Pm)来将待计算数据送入各计算通道,计算通道为W位并行计算,数据分割器每次向计算通道送入W位数据,并将(P1, Pa P3,…,Pm)的值分别减去W,若(P1, P2, P3,…,Pm)与(Po,P1,P2,…,Pnri)值相等时,则指示数据分割其中的数据计算完成。
(2)为分割后的各待计算数据段分配所需的计算通道,具体包括以下子步骤(2-1)针对不同类型数据的Q次嵌套CRC码的生成(其中Q为正整数),为通道选择器生成一张通道选择表用于在不同类型数据的各次嵌套计算中,为数据输入通道分配相应的计算通道,具体包括以下子步骤(2-1-1)对于N个计算通道和数据分割器的N个数据输出通道,分别对其进行顺序编号(1,2,3,…,i,…,N),其中i为I到N之间的任意值;(2-1-2)为通道选择表的每一个表项分配一个长为A^「log2 位的矢量S(X),矢
量多项式为
权利要求
1.一种用于数据传输差错控制的嵌套CRC码生成方法,其特征在于,包括以下步骤 (1)数据分割器对待计算数据进行分段,具体包括以下子步骤 (1-1)将数据分割器中的数据初始化为O,并根据计算通道的数量N确定数据分割器的最大分段数为N ; (1-2)为整个数据分割器生成N+1个指针(Ptl, P1,…,Pi,…,Pn)和N个指针(Pl,p2,…,Pi,…,Pn),其中i为小于等于N的正整数,(P0, P1,…,Pi,…,Pn)将整个数据分割器分成N个长为Ls的数据段,按照N个数据段的顺序,为每个数据段分配一个指针分别为(Pl,P2,…,Pi,…,PN),其中Ls为任意正整数; (1-3)为指针(P0, P1, -Pi, - ,Pn)分配固定值,其中Pi =Ρη+Ι^,Ρ。的值可以取任意值,整个计算过程中,Pi指针的值固定不变; (1-4)为N个数据区域的指针(P1, P2,…,Pi,…,pN)分配初始值,并令(P1, P2,…,Pi,…,PN)指针的初始值分别与(Po,P1,…,Pm,…,Pim)相等; (1-5)将待计算数据填充至数据分割器中,根据数据的填充情况,改变(Pl,p2,-,Pi,-,Pn)指针的值; (1-6)数据分割器将待计算数据分为m段,并将m的值传递给通道选择器和反向通道选择器; (1-7)利用(ρι,ρ2,ρ3···ρπ)的值,以及计算通道的并行计算位数W,在每一个时钟周期,向m个计算通道分别传送W位数据,并将(P1, P2, Pf pm)的值均减去W ; (1-8)判断(p” p2,p3…pm)是否与(P0, P1, P2…Pnri)的值相等,若相等,则进入步骤(2),否则返回步骤(1-7); (2)为分割后的各待计算数据段分配所需的CRC码计算通道,具体包括以下子步骤 (2-1)针对不同类型数据的Q次嵌套CRC码的生成,为通道选择器生成一张通道选择表用于在不同类型数据的各次嵌套计算中,为数据输入通道分配相应的计算通道,其中Q为正整数; (2-2)利用数据分割器传递的数据段总数m,通道选择器选通用于连接数据分割器的m个序号为(1,2,3,···,ηι)的输出与通道选择器的开关; (2-3)根据开关选择表,将选通的m个数据输入分别连接至相应的计算通道之上; (3)各计算通道对各待计算数据段进行CRC子码计算,具体包括以下子步骤 (3-1)为N个计算通道分别分配相应的生成多项式为(gjx), g2(x),…,gi (x),…,gN(x)),其中i为I到N之间的任意值,各通道之间可以采用同样的生成多项式; (3-2)根据相应的生成多项式,利用逻辑电路或者查找余数表的方法来实现W位并行计算的各计算通道; (3-3)根据各计算通道所采用的生成多项式,为各通道设置初始值,通常可以为各计算通道赋初始值为全零或者全一; (3-4)对各通道的输入数据完成CRC子码计算,得到m个CRC子码; (4)对各通道计算所得到的CRC子码进行排序,具体包括以下子步骤 (4-1)反向通道选择器与通道选择器共用一张通道选择表; (4-2)依据数据分割器传递的待计算数据的分段总数m,反向通道选择器选通序号为(I, 2,3,…,m)的CRC子码暂存器与反向通道选择器的连接开关。(4-3)根据开关选择表,将选通的m个数据输出分别连接至相应的计算通道的输出之上; (4-4)各计算通道按照反向通道选择器的选择结果,将各计算通道计算所得的CRC子码存入相应的CRC子码暂存器,得到一串新的数据为(CRC1,CRC2,…,CRCi,…,CRCm),其中i为I到m之间的任意值,CRCi对应第i个数据段计算所得到的CRC子码; (5)判断是否需要再次进行多通道计算,如果需要,则将步骤(4)得到的CRC子码作为新的待计算数据,返回步骤(I);如果不需要,则进入步骤(6),具体包括以下子步骤 (5-1)将CRC码的嵌套次数Q的值减去I ; (5-2)判断Q的值是否为O,若Q的值为O,则进入步骤(6);若Q的值不为零,则以(4)步骤中排序好的CRC子码数据作为新的待计算数据,并返回步骤(I); (6)第N+1个计算通道计算出最终的Q次嵌套CRC码,具体包括以下子步骤 (6-1)为第N+1个CRC计算通道分配生成多项式gN+1 (X); (6-2)根据生成多项式,利用逻辑电路或者查找余数表的方法来实现W位并行计算的计算通道; (6-3)为该计算通道设置初始值,通常可以为该计算通道赋初始值为全零或者全一; (6-4)对多计算通道第Q次计算并经过排序所得到的CRC子码数据进行最后一次CRC码计算,得到最终的Q次嵌套CRC码。
2.根据权利要求I所述的高速嵌套CRC码生成方法,其特征在于,步骤(1-5)中,(P1, P2,…,Pi,…,Pn)的赋值情况为 a)若第i个数据区域中填充了长度为Ls的待计算数据,则将Pi的值赋为Pi; b)若第i个数据区域未填充数据段,则保持Pi的值不变; c)对于第m个填充区域,由于待计算数据并不保证以Ls对齐,为了保证计算的同步性,若第m个数据区域的填充长度Lf大于O且小于Ls,则将pm的值赋为Pm,即将长度为Lf数据段的长度通过补零扩展至Ls,其中m为待计算数据的长度除以Ls后上取整得到的值,Lf为待计算数据的长度除以Ls后得到的余数。
3.根据权利要求I所述的高速嵌套CRC码生成方法,其特征在于,步骤(2-1)具体包括以下子步骤 (2-1-1)对于N个计算通道和数据分割器的N个数据输出通道,分别对其进行顺序编号(1,2, 3,…,i,"·,Ν),其中i为I到N之间的任意值; (2-1-2)为通道选择表的每一个表项分配一个长为iV^「log2 位的矢量S (X),矢量多项式为S(X) = OTvfiog2 Λτ-|_1ΧΛ'ΓΙ°82Λ^1 + wAflog2 JV>2 Xjv'1"'08' Λ +--- + MiX' +■■■ +ITI1X1 + moX°其中 IIii = I 或 O (其中 i = O, 1,2,…,Ar-[Iog2 Ar]-1);(2-1-3)将 S(X)分成 N 段长为「log2 7V"|的矢量(S1(X), s2(x),...,Si(X), ...,sN(x)),其中i为I到N之间的任意值,(S1(X), s2 (X),…,Si (X),…,sN(x))对应数据分割器的N个数据输出(1,2,3,…i,···,N),其中Si(X)为分配给第i个数据输入的计算通道的序号; (2-1-4)固定待计算数据的数据类型,针对每一次嵌套CRC码的生成,生成Q个相应的S(x),作为一行表项保存在开关选择表中;(2-1-5)针对待计算数据的每一种数据类型,重复步骤(2-1-4),以构成完整的通道选择表。
4.一种用于数据传输差错控制的嵌套CRC码生成装置,包括数据分段模块、计算通道选择模块、多通道CRC码计算模块、数据排序模块、寄存器、计数器、数据分配器、单通道CRC码计算模块,其特征在于, 数据分段模块用于将待计算数据按照一定的数据长度自动分段并通过补零的方法使各数据段长度对齐,并在时钟的控制下,将各数据段按照一定的位数依次传送出去; 计算通道选择模块用于将各输入数据通道连接至所需要的计算通道之上; 多通道CRC码计算模块用于同时对多个数据段计算CRC码; 数据排序模块用于将各输入数据通道连接至所需要的寄存器之上; 寄存器用于存储CRC码; 计数器用于记录CRC码的计算次数,并控制数据分配器的数据输出; 数据分配器用于对输入数据进行分配,数据的分配受到计数器的控制; 单通道CRC码计算模块用于计算最终的CRC码。
全文摘要
本发明公开了一种用于数据传输差错控制的嵌套CRC码生成方法,包括对待计算数据进行分段,根据数据类型为各数据段分配所需CRC码计算通道,各计算通道进行CRC码计算,对计算得到的各CRC子码进行排序。根据实际需要,排序后的CRC子码可直接送入最终的CRC码计算通道,也可作为新的待计算数据,多次重复上述CRC子码计算再送入最终的CRC码计算通道生成嵌套CRC码。本发明还公开了一种嵌套CRC码生成装置,包括数据分段模块、计算通道选择模块、多通道CRC码计算模块、数据排序模块、寄存器、计数器、数据分配器、单通道CRC码计算模块。本发明的装置计算速度快,灵活性好,并且采用本发明的方法,因此所需存储容量小、纠错能力强,适用的范围广。
文档编号H04L1/00GK102946297SQ20121044660
公开日2013年2月27日 申请日期2012年11月10日 优先权日2012年11月10日
发明者周文利, 段斌斌 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1