CN101847999A - 一种用循环冗余校验码进行并行校验的方法 - Google Patents

一种用循环冗余校验码进行并行校验的方法 Download PDF

Info

Publication number
CN101847999A
CN101847999A CN 201010191275 CN201010191275A CN101847999A CN 101847999 A CN101847999 A CN 101847999A CN 201010191275 CN201010191275 CN 201010191275 CN 201010191275 A CN201010191275 A CN 201010191275A CN 101847999 A CN101847999 A CN 101847999A
Authority
CN
China
Prior art keywords
check
cyclic redundancy
verified
redundancy check
vectorial
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 201010191275
Other languages
English (en)
Other versions
CN101847999B (zh
Inventor
陈翔
赵明
赵俊韬
赵熠飞
王京
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201010191275A priority Critical patent/CN101847999B/zh
Publication of CN101847999A publication Critical patent/CN101847999A/zh
Application granted granted Critical
Publication of CN101847999B publication Critical patent/CN101847999B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明涉及一种用循环冗余校验码进行并行校验的方法,属于移动无线数据传输技术领域。这种方法设长度为n,信息位个数为k的循环冗余校验码的校验矩阵,待校验的数据序列用向量C表示,进行乘法并行计算处理:H*CT,计算结果为一个向量P;判断P是否全为0,若P全为0则待校验的序列正确,否则待校验的序列错误。使用本方法能够方便的进行并行校验,能大大减少校验的时间;同时实现平台能提供的并行度越大,本校验方法所需的时间越少。

Description

一种用循环冗余校验码进行并行校验的方法
技术领域
本发明属于移动无线数据传输技术领域,特别涉及一种用循环冗余校验码进行并行校验的方法.
背景技术
在移动无线数据传输技术领域中,循环冗余校验码特别适合用于检测传输数据中的错误,一则是因为它有很强的检测能力,二则是因为编码器及错误检测电路都很容易实现。由于循环冗余校验码的这两个特点,利用循环冗余校验码进行数据校验(简称循环冗余校验,CRC:Cyclic  Redundancy Check)成为无线通信领域中最常用的一种差错校验方法。
循环冗余校验采用的是系统循环码,对于一个待校验的数据序列C=[c0,c1,...,ci,...,cn-1],它也是一个长度为n,信息位个数为k的(n,k)系统循环码C=[c0,c1,...,ci,...,cn-1],其校验一般采用除法的方法。即将待校验得数据序列的码多项式除以使用的循环冗余校验码的生成多项式根据其余式是否为0来判断待校验的数据序列是否正确。以内接异或门除法的方法为例进行说明;
对于待校验的长度为n的数据序列(它对应一个(n,k)的系统循环码),设该系统循环码的生成多项式为:g(D)=Dn-k+an-k-1Dn-k-1+…+aiDi…+a1D+1,其中D为多项式的变量,ai=0或1,1≤i≤n-k-1,按照如下步骤进行校验:
(1)先存储待校验的数据序列的前n-k位,记为B1,B2,...,Bj...,Bn-k
(2)从待校验的数据序列的第n-k+1位cn-k开始,每次输入一个比特ci,n-k≤i≤n-2,然后根据生成多项式来更新B1,B2,...,Bj...,Bn-k,使B1=ci+Bn-k,Bj=Bj-1+aj-1*Bn-k,2≤j≤n-k
(3)当第n位cn-1输入后,更新B1,B2,...,Bj...,Bn-k,查看B1,B2,...,Bj...,Bn-k的值。若B1,B2,...,Bj...,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个时钟周期。因此使用除法的方法时所需的时钟周期数至少为
Time = 2 * n , P d &GreaterEqual; n - k 2 * ( n - k ) * n / P d , P d < n - k
由于一般(n-k)位于4到32之间(典型值如24),而并行平台的最大并行度Pd在不断地增加(典型的如GPU可达到成百上千的并行度),因此上述除法的方法并不能充分发挥并行平台并行处理的特点。
发明内容
本发明的目的是为了能让循环冗余校验能更好的在并行平台上实现,减少校验时间,提出一种用循环冗余校验码进行并行校验的方法,能大大减少校验时间,且并行平台的最大并行度Pd越大,越能减少运行的时钟周期数。
本发明提出的用循环冗余校验码进行并行校验的方法,其特征在于,设长度为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则待校验的序列正确,否则待校验的序列错误。
上述乘法并行计算处理,包括以下步骤:
步骤(1)将校验矩阵H分成t×s个子矩阵,
Figure BSA00000142993500031
其中t取为(n-k)的约数,s取为n的约数,并且使t×s等于实现平台的最大并行度;
步骤(2)将向量C分为s个子向量,C=[c0,C1,…,Cj,…,Cs-1];
步骤(3)并行计算子矩阵Hij和子向量Cj的乘积
Figure BSA00000142993500032
Figure BSA00000142993500033
其中0≤i<t,0≤j<s,Qij是一个长为(n-k)/t的列向量;
步骤(4)并行计算
Figure BSA00000142993500034
其中Pi(0≤i<t)是一个长为(n-k)/t的列向量;
步骤(5)并行判断向量Pi(0≤i<t)是否全为0,若所有的向量Pi(0≤i<t)全为0,则说明待校验的序列正确,否则认为待校验的序列错误。
该方法中乘“*”和加“+”,在具体实现中分别用“与(AND)”和“异或(XOR)”代替。
本发明的特点及效果
本方法的特点是先求出并存储循环冗余校验码的校验矩阵;校验时将校验矩阵与待校验的序列相乘,根据乘法的结果是否为零来判断待校验的序列是否正确.
本发明是在并行平台上的一种用循环冗余校验码进行并行校验的方法,它要求先计算并存储出生校验矩阵,能大大减少校验时间。
对于(n,k)的数据序列的系统循环码进行校验时,由于校验矩阵是事先计算并存储的,需要(n-k)*n个存储单元。需要求一个大小为(n-k)*n的矩阵与长度为n的向量的乘法,需要(n-k)*n个乘法和(n-1)*(n-k)个加法。若并行平台的最大并行度为Pd,对于这(n-k)*n个乘法和(n-k)*(n-1)个加法,在并行平台上可以做到全并行计算,若并行平台的并行度为Pd,需要的最少时间为(n-k)*n/Pd个乘法和(n-k)*(n-1)/Pd个加法的时间。由于该方法中“乘”和“加”分别用“与(AND)”和“异或(XOR)”代替,不妨假定每次加法和乘法都只需要一个时钟周期。因此本方法需要的最小时钟周期数不超过2*(n-k)*n/Pd.
对比除法的方法所需要的最小时钟周期数为
可以看到,在并行平台的最大并行度Pd小于(n-k)时,本发明所需的时钟周期数和除法的方法基本相同;当并行平台的最大并行度Pd大于(n-k)时,本发明所需的时钟周期数小于除法的方法,Pd越大,越能减少运行的时钟周期数。考虑到多核技术的不断发展,并行平台能够提供的并行度在不断地增大,因此有理由相信本发明提出的方法将能极大地减少循环冗余校验所需的时间。
具体实施方式
本发明提出的一种用循环冗余校验码进行并行校验的方法结合实施例详细说明如下:
本发明提出的一种用循环冗余校验码进行并行校验的方法为:设长度为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则待校验的序列正确,否则待校验的序列错误。
上述乘法并行计算处理包括以下步骤:
步骤(1)将校验矩阵H分成t×s个子矩阵,
Figure BSA00000142993500042
其中t取为(n-k)的约数,s取为n的约数,并且使t×s等于实现平台的最大并行度;
步骤(2)将向量C分为s个子向量,C=[C0,C1,…,Cj,…,Cs-1];
步骤(3)并行计算子矩阵Hij和子向量Cj的乘积
Figure BSA00000142993500043
Figure BSA00000142993500044
其中0≤i<t,0≤j<s,Qij是一个长为(n-k)/t的列向量;
步骤(4)并行计算
Figure BSA00000142993500051
其中Pi(0≤i<t)是一个长为(n-k)/t的列向量;
步骤(5)并行判断向量Pi(0≤i<t)是否全为0,若所有的向量Pi(0≤i<t)全为0,则说明待校验的数据序列正确,否则认为待校验的数据序列错误。
实施例
本实施例的实现平台为图形处理器(Graphic Processing Unit:GPU),使用了LTE标准里的循环冗余校验码。对一个长为1024的数据序列C(它对应一个码长n=1024,信息位个数k=1000的循环冗余校验码)进行校验。该循环校验码的校验矩阵为H,H为一个24×1024的矩阵,待校验的数据序列用向量C表示为:C=[c0,c1,...,ci,...,c1023]。
由于待校验的数据序列实际上是Turbo码的译码输出,而turbo码的译码采用了迭代方式,使用本发明的循环冗余校验可以提前终止迭代。可将循环冗余校验置于两次迭代译码之间,若校验结果认为待校验的序列是正确的则直接停止迭代。
本实施例具体实现方法的步骤如下:
步骤(1)将校验矩阵H分成t×s个子矩阵,其中t=6,s=64这样得到
Figure BSA00000142993500052
每个子矩阵是一个4×16的矩阵;
步骤(2)将向量C分为64个子向量,C=[C0,C1,…,Cj,…,C63];
步骤(3)并行计算子矩阵Hij和子向量Cj的乘积
Figure BSA00000142993500053
Figure BSA00000142993500054
其中0≤i<6,0≤j<64,Qij是一个长为4的列向量;
步骤(4)并行计算
Figure BSA00000142993500055
其中Pi(0≤i<6)是一个长为4的列向量;
步骤(5)并行判断向量Pi(0≤i<6)是否全为0,若所有的向量Pi全为0,则说明待校验的序列正确,否则认为待校验的序列错误。
在本实施例的上述各式中乘“*”和加“+”分别用“与(AND)”和“异或(XOR)”代替。

Claims (2)

1.一种用循环冗余校验码进行并行校验的方法,其特征在于,设长度为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分成t×s个子矩阵,
Figure FSA00000142993400011
其中t取为(n-k)的约数,s取为n的约数,并且使t×s等于实现平台的最大并行度;
步骤(2)将向量C分为s个子向量,C=[C0,C1,…,Cj,…,Cs-1];
步骤(3)并行计算子矩阵Hij和子向量Cj的乘积
Figure FSA00000142993400012
Figure FSA00000142993400013
其中0≤i<t,0≤j<s,Qij是一个长为(n-k)/t的列向量;
步骤(4)并行计算
Figure FSA00000142993400014
其中Pi(0≤i<t)是一个长为(n-k)/t的列向量;
步骤(5)并行判断向量Pi(0≤i<t)是否全为0,若所有的向量Pi(0≤i<t)全为0,则说明待校验的数据序列正确,否则认为待校验的数据序列错误。
CN201010191275A 2010-05-28 2010-05-28 一种用循环冗余校验码进行并行校验的方法 Expired - Fee Related CN101847999B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010191275A CN101847999B (zh) 2010-05-28 2010-05-28 一种用循环冗余校验码进行并行校验的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010191275A CN101847999B (zh) 2010-05-28 2010-05-28 一种用循环冗余校验码进行并行校验的方法

Publications (2)

Publication Number Publication Date
CN101847999A true CN101847999A (zh) 2010-09-29
CN101847999B CN101847999B (zh) 2012-10-10

Family

ID=42772479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010191275A Expired - Fee Related CN101847999B (zh) 2010-05-28 2010-05-28 一种用循环冗余校验码进行并行校验的方法

Country Status (1)

Country Link
CN (1) CN101847999B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102130744A (zh) * 2011-03-25 2011-07-20 中兴通讯股份有限公司 计算循环冗余校验码的方法和装置
CN105049057A (zh) * 2015-08-17 2015-11-11 中国航天科技集团公司第九研究院第七七一研究所 一种面向128位并行输入的crc-32校验电路
CN107239362A (zh) * 2017-02-20 2017-10-10 中国科学院微电子研究所 一种并行crc校验码的计算方法及系统
US10411833B2 (en) 2016-07-29 2019-09-10 Qualcomm Incorporated Early termination techniques for successive decoding processes
CN114556823A (zh) * 2019-09-03 2022-05-27 辉达公司 图像处理单元上并行crc实现
US12003253B2 (en) 2021-08-13 2024-06-04 Nvidia Corporation Performing cyclic redundancy checks using parallel computing architectures

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1633030A (zh) * 2003-12-22 2005-06-29 普天信息技术研究院 一种循环冗余校验的快速计算方法
US7171604B2 (en) * 2003-12-30 2007-01-30 Intel Corporation Method and apparatus for calculating cyclic redundancy check (CRC) on data using a programmable CRC engine
CN101461140A (zh) * 2006-04-22 2009-06-17 英国贝尔法斯特女王大学 循环冗余校验码的可配置并行计算

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1633030A (zh) * 2003-12-22 2005-06-29 普天信息技术研究院 一种循环冗余校验的快速计算方法
US7171604B2 (en) * 2003-12-30 2007-01-30 Intel Corporation Method and apparatus for calculating cyclic redundancy check (CRC) on data using a programmable CRC engine
CN101461140A (zh) * 2006-04-22 2009-06-17 英国贝尔法斯特女王大学 循环冗余校验码的可配置并行计算

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102130744A (zh) * 2011-03-25 2011-07-20 中兴通讯股份有限公司 计算循环冗余校验码的方法和装置
CN102130744B (zh) * 2011-03-25 2014-12-31 中兴通讯股份有限公司 计算循环冗余校验码的方法和装置
CN105049057A (zh) * 2015-08-17 2015-11-11 中国航天科技集团公司第九研究院第七七一研究所 一种面向128位并行输入的crc-32校验电路
CN105049057B (zh) * 2015-08-17 2018-04-20 中国航天科技集团公司第九研究院第七七一研究所 一种面向128位并行输入的crc‑32校验电路
US10411833B2 (en) 2016-07-29 2019-09-10 Qualcomm Incorporated Early termination techniques for successive decoding processes
CN107239362A (zh) * 2017-02-20 2017-10-10 中国科学院微电子研究所 一种并行crc校验码的计算方法及系统
CN107239362B (zh) * 2017-02-20 2020-06-05 中国科学院微电子研究所 一种并行crc校验码的计算方法及系统
CN114556823A (zh) * 2019-09-03 2022-05-27 辉达公司 图像处理单元上并行crc实现
US12003253B2 (en) 2021-08-13 2024-06-04 Nvidia Corporation Performing cyclic redundancy checks using parallel computing architectures

Also Published As

Publication number Publication date
CN101847999B (zh) 2012-10-10

Similar Documents

Publication Publication Date Title
CN101847999B (zh) 一种用循环冗余校验码进行并行校验的方法
CN101232288B (zh) 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器
CN103166649B (zh) 用于解码循环码的方法、装置和解码器
CN102938653B (zh) 一种利用图形处理器gpu实现的并行rs译码方法
CN101483442B (zh) 根据Nand Flash多余空间来配置纠错能力的BCH解码器
CN102970049B (zh) 基于钱搜索算法和福尼算法的并行电路及rs译码电路
CN101777926A (zh) 一种Turbo乘积码的通用译码器及其方法
CN107204782A (zh) 一种bch译码器及生成该译码器的编译器的实现方法
CN102891685A (zh) 基于fpga的并行循环冗余校验运算电路
CN107193685B (zh) 基于闪存存储设备的纠删方法及装置
CN102045073B (zh) 一种bch码译码方法和装置
KR20100080691A (ko) 1-비트용 에러 정정 장치 및 그 방법
CN107688506B (zh) 一种流水结构的bch译码系统
CN110022158B (zh) 一种译码方法及装置
CN103346805B (zh) 一种长bch码的译码系统及方法
US10067821B2 (en) Apparatus and method for cyclic redundancy check
CN101777922B (zh) 用于BCH译码器的高速低延时Berlekamp-Massey迭代译码电路
US10009041B2 (en) BCH decorder in which folded multiplier is equipped
El-Medany FPGA implementation of CRC with error correction
CN103916138A (zh) 一种钱搜索电路及基于该钱搜索电路的ecc解码装置及方法
CN111384976B (zh) 稀疏校验矩阵的存储方法和读取方法
CN111130565B (zh) 一种基于神经网络的译码方法及装置
CN202906879U (zh) 基于fpga的并行循环冗余校验运算电路
US7031407B1 (en) Apparatus and method for decoding and trace back of convolution codes using the viterbi decoding algorithm
CN101741397A (zh) Rs译码装置及其使用的关键多项式求解装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121010

Termination date: 20150528

EXPY Termination of patent right or utility model