专利名称:一种用循环冗余校验码进行并行校验的方法
技术领域:
本发明属于移动无线数据传输技术领域,特别涉及一种用循环冗余校验码进行并 行校验的方法.
背景技术:
在移动无线数据传输技术领域中,循环冗余校验码特别适合用于检测传输数据中 的错误,一则是因为它有很强的检测能力,二则是因为编码器及错误检测电路都很容易实 现。由于循环冗余校验码的这两个特点,利用循环冗余校验码进行数据校验(简称循环冗 余校验,CRC =Cyclic Redundancy Check)成为无线通信领域中最常用的一种差错校验方 法。循环冗余校验采用的是系统循环码,对于一个待校验的数据序列C = [Co,Cl,..., Ci, ...,cn_J,它也是一个长度为Π,信息位个数为k的(n,k)系统循环码C = [c0, C1,..., Ci,...,Cn-J,其校验一般采用除法的方法。即将待校验得数据序列的码多项式除以使用的 循环冗余校验码的生成多项式根据其余式是否为0来判断待校验的数据序列是否正确。以 内接异或门除法的方法为例进行说明;对于待校验的长度为η的数据序列(它对应一个(n,k)的系统循环码),设该系统 循环码的生成多项式为g(D) = DnAan^1Dn+1+…+ajy…+aiD+l,其中D为多项式的变量, =0或1,1彡i彡η-k-l,按照如下步骤进行校验(1)先存储待校验的数据序列的前n-k位,记为B1, B2, ...,Bj. . .,Bn_k ;(2)从待校验的数据序列的第η-k+l位cn_k开始,每次输入一个比特Ci, n-k彡i彡n-2,然后根据生成多项式来更新B1, B2, ... , Bj. . .,Bn_k,使B1 = Ci+Bn_k,Bj =
BH+aj.jBn-k,2 彡 j 彡 n-k(3)当第 η 位 Clri 输入后,更新 B1, B2, ... , Bj. . .,Bn_k,查看 B1, B2, ... , Bj. . .,Bn_k 的值。若B1, B2, . . .,By . .,Bn_k全为0则说明循环冗余校验结果认为待校验的数据序列正 确,否则认为待校验的数据序列错误使用上述方法进行循环冗余校验时,需要(n-k)个缓存,每次输入一个比特,需要 计算(n-k)次加法和(n-k)次乘法。则对于该待校验的数据序列,需要(n-k)*n个加法和 (n-k)*n个乘法才能最终得到校验结果。近几年,能进行高度并行计算的平台层出不穷,最大的计算并行度也在不断增加。 这些并行平台如GPU,CELL等,计算能力正在快速的提高,计算的并行度也在不断增加,在 并行的计算平台上实现循环冗余校验是一个值得研究的问题。但是上述除法方法实现循环冗余校验是一种串行的实现方法,用并行平台实现上 述方法时,每次输入一个比特,随后需要(n-k)次加法和(n-k)次乘法。在并行平台上,设 最大并行度为Pd。若Pd不小于(n-k),这(n-k)次加法和(n-k)次乘法可以做到并行计算。 由于该方法中“乘”和“加”分别用“与(AND),,和“异或(XOR),,代替,不妨假定每次加法和 乘法都只需要一个时钟周期。因此对于这种除法的方法,使用并行平台实现时至少需要2*n个时钟周期,并行度为(n_k)/2.若最大并行度Pd小于(n-k),可以全并行计算,至少需要 2*(n-k)*n/Pd个时钟周期。因此使用除法的方法时所需的时钟周期数至少为 由于一般(n-k)位于4到32之间(典型值如24),而并行平台的最大并行度Pd在 不断地增加(典型的如GPU可达到成百上千的并行度),因此上述除法的方法并不能充分发 挥并行平台并行处理的特点。
发明内容
本发明的目的是为了能让循环冗余校验能更好的在并行平台上实现,减少校验时 间,提出一种用循环冗余校验码进行并行校验的方法,能大大减少校验时间,且并行平台的 最大并行度Pd越大,越能减少运行的时钟周期数。本发明提出的用循环冗余校验码进行并行校验的方法,其特征在于,设长度为n, 信息位个数为k的循环冗余校验码的校验矩阵为H,H为一个(n-k) Xn的矩阵,待校验的数 据序列用向量C表示,C = [c0, C1,...,^,..., cn_J,进行乘法并行计算处理H*CT,T表示 转置,计算结果为一个(n-k) X 1的向量P ;判断P是否全为0,若P全为0则待校验的序列 正确,否则待校验的序列错误。上述乘法并行计算处理,包括以下步骤步骤(1)将校验矩阵H分成tXs个子矩阵, 其中t取为(n-k)的约数,s取为η的约数,并且使tXs等于实现平台的最大并 行度;步骤(2)将向量C分为s个子向量,C = [c。,C1,…,Cj,…,CS_J ;步骤(3)并行计算子矩阵Hij和子向量Cj的乘积巧*C;,Qij = Hij *C;,其中 0 ≤ i < t,0 ≤ j < s,Qij 是一个长为(n-k)/t 的列向量;步骤⑷并行计算
其中Pi(0≤i < t)是
一个长为(n-k)/t的列向量;步骤(5)并行判断向量Pi(C)彡i < t)是否全为0,若所有的向量Pi(C)彡i < t) 全为0,则说明待校验的序列正确,否则认为待校验的序列错误。该方法中乘“*”和加“ + ”,在具体实现中分别用“与(AND) ”和“异或(XOR) ”代替。本发明的特点及效果本方法的特点是先求出并存储循环冗余校验码的校验矩阵;校验时将校验矩阵与 待校验的序列相乘,根据乘法的结果是否为零来判断待校验的序列是否正确.本发明是在并行平台上的一种用循环冗余校验码进行并行校验的方法,它要求先计算并存储出生校验矩阵,能大大减少校验时间。 对于(n,k)的数据序列的系统循环码进行校验时,由于校验矩阵是事先计算并存 储的,需要(n_k)*n个存储单元。需要求一个大小为(n-k)*n的矩阵与长度为η的向量的 乘法,需要(n-k)*n个乘法和(n-l)*(n-k)个加法。若并行平台的最大并行度为Pd,对于这 (n-k)*n个乘法和(n-k)*(n-l)个加法,在并行平台上可以做到全并行计算,若并行平台的 并行度为Pd,需要的最少时间为(n_k)*n/Pd个乘法和(n-k)*(n-l)/Pd个加法的时间。由于 该方法中“乘”和“加”分别用“与(AND),,和“异或(XOR),,代替,不妨假定每次加法和乘法 都只需要一个时钟周期。因此本方法需要的最小时钟周期数不超过2*(n-k)*n/Pd. 可以看到,在并行平台的最大并行度Pd小于(n-k)时,本发明所需的时钟周期数 和除法的方法基本相同;当并行平台的最大并行度Pd大于(n-k)时,本发明所需的时钟周 期数小于除法的方法,Pd越大,越能减少运行的时钟周期数。考虑到多核技术的不断发展, 并行平台能够提供的并行度在不断地增大,因此有理由相信本发明提出的方法将能极大地 减少循环冗余校验所需的时间。
具体实施例方式本发明提出的一种用循环冗余校验码进行并行校验的方法结合实施例详细说明 如下本发明提出的一种用循环冗余校验码进行并行校验的方法为设长度为n,信息 位个数为k的循环冗余校验码的校验矩阵为H,H为一个(n-k) Xn的矩阵,待校验的数据序 列用向量C表示,C = [C(1,Cl,...,Ci,...,cn_J,进行乘法并行计算处理H*CT,T表示转置, 计算结果为一个(n-k) X 1的向量P ;判断P是否全为0,若P全为0则待校验的序列正确, 否则待校验的序列错误。上述乘法并行计算处理包括以下步骤 步骤(1)将校验矩阵H分成tXs个子矩阵,孖= H10,...,Hli,...,Hi^n ;
_H(i-i、Q,··., H(卜…,.··’ H(fn _其中t取为(n-k)的约数,s取为η的约数,并且使tXs等于实现平台的最大并 行度;步骤(2)将向量C分为s个子向量,C = [C0, C1,…,Cj,…,CS_J ;步骤(3)并行计算子矩阵Hij和子向量Cj的乘积巧*C;,込=/^*《,其中0彡i < t,0彡j < s,Qij是一个长为(n_k)/t的列向量;
Λ-1步骤(4)并行计算乃=ΣΟ/,其中Pi (0彡i < t)是一个长为(n-k) /t的列向量;
J=O步骤(5)并行判断向量Pi(C)彡i < t)是否全为0,若所有的向量Pi(C)彡i < t)全为0,则说明待校验的数据序列正确,否则认为待校验的数据序列错误。实施例本实施例的实现平台为图形处理器(Graphic Processing Unit :GPU),使用了 LTE 标准里的循环冗余校验码。对一个长为1024的数据序列C(它对应一个码长η = 1024,信 息位个数k = 1000的循环冗余校验码)进行校验。该循环校验码的校验矩阵为H,H为一 个24X 1024的矩阵,待校验的数据序列用向量C表示为C = [c0, C1, . . . , Ci, . . . , C1023]。由于待校验的数据序列实际上是Turbo码的译码输出,而turbo码的译码采用了 迭代方式,使用本发明的循环冗余校验可以提前终止迭代。可将循环冗余校验置于两次迭 代译码之间,若校验结果认为待校验的序列是正确的则直接停止迭代。本实施例具体实现方法的步骤如下步骤(1)将校验矩阵H分成tXs个子矩阵,其中t = 6,s = 64这样得到
每个子矩阵是一个4X16的矩阵;步骤(2)将向量C分为64个子向量,C = [C0, C1,…,Cj,…,C63];步骤(3)并行计算子矩阵Hij和子向量Cj的乘积^ ,Qij =巧其中0彡i < 6,0彡j < 64,Qij是一个长为4的列向量;步骤⑷并行计算乃=Σ込
,其中PJO彡i <6)是一
J=O
个长为4的列向量;步骤(5)并行判断向量Pi(C)彡i < 6)是否全为0,若所有的向量Pi全为0,则说 明待校验的序列正确,否则认为待校验的序列错误。在本实施例的上述各式中乘“*”和加“ + ”分别用“与(AND)”和“异或(X0R)”代替。
权利要求
一种用循环冗余校验码进行并行校验的方法,其特征在于,设长度为n,信息位个数为k的循环冗余校验码的校验矩阵为H,H为一个(n-k)×n的矩阵,待校验的数据序列用向量C表示,C=[c0,c1,...,ci,...,cn-1],进行乘法并行计算处理H*CT,T表示转置,计算结果为一个(n-k)×1的向量P;判断P是否全为0,若P全为0则待校验的序列正确,否则待校验的序列错误。
2.如权利要求1所述方法,其特征在于,所述乘法并行计算处理包括以下步骤 步骤(1)将校验矩阵H分成tX s个子矩阵, 其中t取为(n-k)的约数,S取为η的约数,并且使tx S等于实现平台的最大并行度;步骤⑵将向量C分为s个子向量,C= [C。,C1, -,Cj,…,Cs_J;步骤⑶并行计算子矩阵Hu和子向量&的乘积& ,Qlj 二 *<,其中0≤i < t,0≤j < S,Qij是一个长为(n-k)/t的列向量;.v-1步骤⑷并行计算5 ,其中?1(0彡1<0是一个长为(n-k)/t的列向量;步骤(5)并行判断向量Pi(C) ^i<t)是否全为0,若所有的向量Pi(C) < i < t)全为 0,则说明待校验的数据序列正确,否则认为待校验的数据序列错误。
全文摘要
本发明涉及一种用循环冗余校验码进行并行校验的方法,属于移动无线数据传输技术领域。这种方法设长度为n,信息位个数为k的循环冗余校验码的校验矩阵,待校验的数据序列用向量C表示,进行乘法并行计算处理H*CT,计算结果为一个向量P;判断P是否全为0,若P全为0则待校验的序列正确,否则待校验的序列错误。使用本方法能够方便的进行并行校验,能大大减少校验的时间;同时实现平台能提供的并行度越大,本校验方法所需的时间越少。
文档编号H03M13/09GK101847999SQ20101019127
公开日2010年9月29日 申请日期2010年5月28日 优先权日2010年5月28日
发明者王京, 赵俊韬, 赵明, 赵熠飞, 陈翔 申请人:清华大学