CN109347489A - 一种用于通信的基于图形处理器的bch码并行译码方法 - Google Patents
一种用于通信的基于图形处理器的bch码并行译码方法 Download PDFInfo
- Publication number
- CN109347489A CN109347489A CN201811403306.6A CN201811403306A CN109347489A CN 109347489 A CN109347489 A CN 109347489A CN 201811403306 A CN201811403306 A CN 201811403306A CN 109347489 A CN109347489 A CN 109347489A
- Authority
- CN
- China
- Prior art keywords
- bch code
- syndrome
- look
- code
- finite field
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及一种用于通信的基于图形处理器的BCH码并行译码方法,属于数字信号处理技术领域。本方法根据BCH码本原多项式生成有限域查找表和伴随式计算查找表;利用伴随式计算查找表,并行计算产生用于BCH码译码的伴随式;根据得到伴随式,进行并行计算得到错误位置方程;并行求解错误位置方程,根据错误位置方程的根计算出错误位置,完成整个纠错过程。本发明提出了一种新颖BCH码并行译码方法,在一个码字内实现BCH码并行译码,充分利用了图形处理器运算能力,具有吞吐率高,时延低等优点;BCH码译码方法的最大纠错个数、本原多项式、码长等译码参数可以灵活配置,通用性和可重构性更高、更便于开发人员编程实现。
Description
技术领域
本发明涉及一种用于通信的基于图形处理器的BCH码并行译码方法,属于数字信号处理技术领域。
背景技术
BCH码是一类纠多个错误的线性分组码,经常作为外码与LDPC码和Turbo码级联,用来消除内码的误码平台。这种级联编码可以提供优良的纠错性能,所以被广泛的应用于各种无线通信标准中。例如中国的数字电视地面传输标准和欧洲的DVB-S2、DVB-S2X、DVB-T2等。
经典BCH码串行译码算法由文献(H.O.Burton,"Inversionless Decoding ofBinary Bch Codes,"(in English),Ieee Transactions on Information Theory,vol.17,no.4,pp.464-+,1971.)给出。
图形处理器(GPU)是近年得到快速发展的具备大规模并行处理能力的单指令流多线程流(SIMT)架构通用运算处理器。目前市场主流图形处理器NVIDIA GTX 1080ti包含3584个运算核心,单精度浮点运算能力高达10TFLOP。与现有采用单指令流多数据流(SIMD)架构的CPU、ARM、DSP相比具有更高的运算能力。
Compute Unified Device Architecture(CUDA)是用于GPU计算的开发环境,它是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备,对所进行的计算进行分配和管理。在CUDA的架构中,这些计算不再像过去所谓的GPGPU架构那样必须将计算映射到图形API(OpenGL和Direct 3D)中,因此对于开发者来说,CUDA的开发门槛大大降低了。与FPGA和ASIC硬件相比配置更加灵活、开发难度更小,更适用于通信系统。
经对现有技术的文献检索发现,专利申请号201810478181.7的中国专利,专利名称为“一种BCH译码器”公开了一种基于电路实现的BCH译码,用于存储器信息校验。该译码器采用电路实现要考虑时序排列和资源分配等问题,复杂度较高,不利于开发人员编程实现;通用性和可重构性不高。
发明内容
本发明的目的是一种用于通信的基于图形处理器的BCH码并行译码方法,在图形处理器上实现了通用的BCH码并行译码方法,利用查表等算法提高译码效率;在一个码字内进行并行译码,充分发挥图形处理器多核的运算能力,提高了译码吞吐率,减少了译码时延。
本发明提出的用于通信的基于图形处理器的BCH码并行译码方法,包括以下步骤:
(1)根据BCH码的本原多项式,生成一个有限域查找表log(β)和exp(e),生成过程如下:
(1-1)从BCH码本原多项式产生的有限域GF(2q)中获取一个非零元素β,β=αe,其中,e为非零元素β的序号,0≤e≤2q-2,α为BCH码本原多项式的一个根,q为本原多项式的次数;
(1-2)在图形处理器的全局内存中,以非零元素β为地址存储非零元素序号e,以非零元素序号e为地址存储非零元素β;
(1-3)遍历BCH码本原多项式产生的有限域GF(2q)中的所有非零元素,重复步骤(1-1)和步骤(1-2),得到非零元素β与非零元素序号e之间的映射表,记为有限域查找表log(β)和exp(e);
(2)利用步骤(1)生成的有限域查找表log(β)和exp(e),生成用于BCH码译码的伴随式计算查找表其中j为BCH码的伴随式系数序号,0≤j≤2t-1,t为BCH码的最大纠错个数,为计算参数,其中rf表示计算参数的第f个比特,rf∈{0,1},伴随式计算查找表的生成步骤如下;
(2-1)初始化伴随式序号j=0;
(2-2)初始化计算参数
(2-3)计算计算参数中的第f个比特rf:其中&表示按位与操作,0≤f≤7;
(2-4)利用步骤(1)得到的有限域查找表log(β)和exp(e),计算得到
(2-5)在图形处理器的全局内存中,以为地址,存储步骤(2-4)中的
(2-6)对进行判断,若则使返回步骤(2-3),若则执行步骤(2-7);
(2-7)对j进行判断,若j<2t-1,则使j=j+1,返回步骤(2-2),若j=2t-1,,得到伴随式计算查找表
(3)利用以下方法,产生N个用于BCH码译码的伴随式Sg(x), g为码字序号,0≤g≤N-1,其中N为图形处理器接收的码字数,j为伴随式系数序号,包括以下步骤:
(3-1)根据图形处理器从信道中接收的码字数N、BCH码的最大纠错个数t和码字长度n,将图形处理器中的运算资源分配为个线程块,将线程块的三维索引记为(g,j,m),其中g为码字序号,0≤g≤N-1,j为BCH码的伴随式系数序号,0≤j≤2t-1,将长度为n的码字分为组,每组包含128个比特,分组的序号记为m,
(3-2)对步骤(3-1)图形处理器中的每个线程块分配32个子线程,字线程的序号为v,32m≤v≤32m-1,共得到个子线程;
(3-3)在步骤(3-1)的线程块内进行如下并行计算,得到第一临时变量bg(v,j):
其中,v为子线程的序号,表示从信道中接收的第g个码字中的第8v+k个比特,由步骤(2)的伴随式计算查找表获得,伴随式计算查找表中exp(.)运算由步骤(1)的有限域查找表exp(e)获得;
(3-4)利用归约算法,在每个线程块内对步骤(3-3)的临时变量bg(v,j)进行BCH码本原多项式产生的有限域GF(2q)中的求和计算,得到第二临时变量
具体并行计算步骤为:
其中表示按位异或,最后子线程序号为32m中的bg(v,j),即为第二临时变量cg(m,j);
(3-5)利用原子按位异或操作,在每个线程块间对步骤(3-4)的第二临时变量cg(m,j)进行有限域GF(2q)中的求和运算,得到即伴随式的系数进而得到N个伴随式0≤g≤N-1;
(4)根据步骤(3)的N个伴随式,利用以下方法,并行计算得到N个错误位置方程,其中BCH码本原多项式产生的有限域GF(2q)中的加法和乘法由步骤(1)中得到的有限域查找表log(β)和exp(e)获得,包括以下步骤:
(4-1)初始化时,使k=0,其中k为迭代次数,为第k次迭代后的错误位置方程,为第k次迭代中的第一临时多项式,为第k次迭代的第三个临时变量;
(4-2)设定一个第四临时变量为乘积项中x2k+1的系数,其中Sg(x)为步骤(3)中得到的第g个伴随式
(4-3)根据用于BCH码译码的公式计算得到第k次迭代后的错误位置方程
(4-4)根据用于BCH码译码的公式
计算得到第一临时多项式其中,表示多项式的次数;
(4-5)根据用于BCH码译码公式的计算得到第三临时变量
(4-6)对迭代次数进行判断,若k<t-1,则使k=k+1,返回执行步骤(4-2),若k≥t-1,则得到N个错误位置方程0≤g≤N-1,t为BCH码的最大纠错个数;
(5)并行求解步骤(4)中N个错误位置方程σg(x),具体方法为:
(5-1)根据码字数量N,重新将图形处理器中的运算资源分配为N个线程块,根据码字长度n,为每个线程块分配n个子线程,将线程块序号记为g,0≤g≤N-1,将子线程序号记为i,一个子线程对应码字的一个比特,0≤i≤n-1;
(5-2)在每个线程块内,将αi代入步骤(4)中得到的错误位置方程,得到σg(αi),其中α为BCH码本原多项式的一个根,其中BCH码本原多项式产生的有限域GF(2q)中的加法和乘法由步骤(1)中得到的有限域查找表log(β)和exp(e)获得;
(5-3)对上述计算结果σg(αi)进行判断,若计算结果为非零元素,则判定从信道中接收的第g个码字的第i个比特无错误,若计算结果为零元素,则判定第g个码字的第i个比特出现错误,并对第g个码字的第i个比特进行纠错,使其中表示按位异或,实现全部BCH码的并行译码。
本发明提出的用于通信的基于图形处理器的BCH码并行译码方法,其优点是:
本发明实现的BCH码译码方法,提出了一种新颖BCH码并行译码方法,可以在一个码字内实现BCH码并行译码,充分利用图形处理器强大运算能力,具有吞吐率高,时延低等优点;同时采用全新的软硬件架构Compute Unified Device Architecture(CUDA)作为BCH码译码方法的软硬件架构,可以将图形处理器视为一个并行数据计算设备,对所进行计算进行分配和管理,BCH码译码方法的最大纠错个数、本原多项式、码长等译码参数可以灵活配置,与基于FPGA和ASIC的BCH码译码方法相比,配置更加灵活、通用性和可重构性更高、更便于开发人员编程实现。
附图说明
图1为本发明提出用于通信的基于图形处理器的BCH码并行译码方法流程框图。
图2为本发明方法实施例中涉及的BCH码的生成多项式,其中g1为本原多项式。
具体实施方式
本发明提出的用于通信的基于图形处理器的BCH码并行译码方法,其流程框图如图所示,包括以下步骤:
(1)根据BCH码的本原多项式,生成一个有限域查找表log(β)和exp(e),生成过程如下:
(1-1)从BCH码本原多项式产生的有限域GF(2q)中获取一个非零元素β,β=αe,其中,e为非零元素β的序号,0≤e≤2q-2,α为BCH码本原多项式的一个根,q为本原多项式的次数;
(1-2)在图形处理器的全局内存中,以非零元素β为地址存储非零元素序号e,以非零元素序号e为地址存储非零元素β;
(1-3)遍历BCH码本原多项式产生的有限域GF(2q)中的所有非零元素,重复步骤(1-1)和步骤(1-2),得到非零元素β与非零元素序号e之间的映射表,记为有限域查找表log(β)和exp(e);
在本发明方法中,根据上述获得的查找表log(β)和exp(e),有限域上GF(2q)上的两个非零元素X和Y相乘,由公式XY=exp(mod(log(X)+log(Y),2q-1))计算,两个非零元素X和Y相除,由公式X/Y=exp(mod(log(X)-log(Y),2q-1))计算,其中mod(log(X)+log(Y),2q-1),表示log(X)+log(Y)除以2q-1的余数;
有限域上GF(2q)上的两个元素X和Y相加,由公式计算,其中表示按位异或操作;
有限域上GF(2q)上的非零元素X的u次幂,由公式Xu=exp(mod(log(X)×u,2q-1))计算;
为了叙述方便下文中所有涉及BCH码本原多项式产生的有限域GF(2q)中的运算,默认省略取模运算mod(.);
(2)利用步骤(1)生成的有限域查找表log(β)和exp(e),生成用于BCH码译码的伴随式计算查找表其中j为BCH码的伴随式系数序号,0≤j≤2t-1,t为BCH码的最大纠错个数,为计算参数,其中rf表示计算参数的第f个比特,rf∈{0,1},伴随式计算查找表的生成步骤如下;
(2-1)初始化伴随式序号j=0;
(2-2)初始化计算参数
(2-3)计算计算参数中的第f个比特rf:其中&表示按位与操作,0≤f≤7;
(2-4)利用步骤(1)得到的有限域查找表log(β)和exp(e),计算得到
(2-5)在图形处理器的全局内存中,以为地址,存储步骤(2-4)中的
(2-6)对进行判断,若则使返回步骤(2-3),若则执行步骤(2-7);
(2-7)对j进行判断,若j<2t-1,则使j=j+1,返回步骤(2-2),若j=2t-1,,得到伴随式计算查找表
(3)利用以下方法,产生N个用于BCH码译码的伴随式Sg(x), g为码字序号,0≤g≤N-1,其中N为图形处理器接收的码字数,j为伴随式系数序号,包括以下步骤:
(3-1)根据图形处理器从信道中接收的码字数N、BCH码的最大纠错个数t和码字长度n,将图形处理器中的流处理器、共享内存、寄存器等运算资源分配为个线程块,将线程块的三维索引记为(g,j,m),其中g为码字序号,0≤g≤N-1,j为BCH码的伴随式系数序号,0≤j≤2t-1,将长度为n的码字分为组,每组包含128个比特,分组的序号记为m,
(3-2)对步骤(3-1)图形处理器中的每个线程块分配32个子线程,字线程的序号为v,32m≤v≤32m-1,共得到个子线程;
(3-3)在步骤(3-1)的线程块内进行如下并行计算,得到第一临时变量bg(v,j):
其中,v为子线程的序号,表示从信道中接收的第g个码字中的第8v+k个比特,由步骤(2)的伴随式计算查找表获得,伴随式计算查找表中exp(.)运算由步骤(1)的有限域查找表exp(e)获得;
(3-4)利用归约算法,在每个线程块内对步骤(3-3)的临时变量bg(v,j)进行BCH码本原多项式产生的有限域GF(2q)中的求和计算,得到第二临时变量
具体并行计算步骤为:
最后子线程序号为32m中的bg(v,j),即为第二临时变量cg(m,j);
(3-5)利用原子按位异或操作,在每个线程块间对步骤(3-4)的第二临时变量cg(m,j)进行有限域GF(2q)中的求和运算,得到即伴随式的系数进而得到N个伴随式0≤g≤N-1;
由于图形处理器线程块间不能使用归约求和,本发明方法采用原子按位异或操作,对cg(m,j)进行有限域GF(2q)中的求和运算,得到在图形处理器的原子按位异或操作执行过程中,不允许其他并行线程对该变量进行读取和写入的操作。基于这个机制,原子操作实现了对在多个线程间共享的变量的互斥保护,确保任何一次对变量的操作的结果的正确性。
(4)根据步骤(3)的N个伴随式,利用以下方法,并行计算得到N个错误位置方程,其中BCH码本原多项式产生的有限域GF(2q)中的加法和乘法由步骤(1)中得到的有限域查找表log(β)和exp(e)获得,包括以下步骤:
(4-1)初始化时,使k=0,其中k为迭代次数,为第k次迭代后的错误位置方程,为第k次迭代中的第一临时多项式,为第k次迭代的第三个临时变量;
(4-2)设定一个第四临时变量为乘积项中x2k+1的系数,其中Sg(x)为步骤(3)中得到的第g个伴随式
(4-3)根据用于BCH码译码的公式计算得到第k次迭代后的错误位置方程
(4-4)根据用于BCH码译码的公式
计算得到第一临时多项式其中,表示多项式的次数;
(4-5)根据用于BCH码译码公式的计算得到第三临时变量
(4-6)对迭代次数进行判断,若k<t-1,则使k=k+1,返回执行步骤(4-2),若k≥t-1,则得到N个错误位置方程0≤g≤N-1,t为BCH码的最大纠错个数;
(5)并行求解步骤(4)中N个错误位置方程σg(x),具体方法为:
(5-1)根据码字数量N,重新将图形处理器中的流处理器、共享内存、寄存器等运算资源分配为N个线程块,根据码字长度n,为每个线程块分配n个子线程,将线程块序号记为g,0≤g≤N-1,将子线程序号记为i,一个子线程对应码字的一个比特,0≤i≤n-1;
(5-2)在每个线程块内,将αi代入步骤(4)中得到的错误位置方程,得到σg(αi),其中α为BCH码本原多项式的一个根,其中BCH码本原多项式产生的有限域GF(2q)中的加法和乘法由步骤(1)中得到的有限域查找表logβ)和exp(e)获得;
(5-3)对上述计算结果σg(αi)进行判断,若计算结果为非零元素,则判定从信道中接收的第g个码字的第i个比特无错误,若计算结果为零元素,则判定第g个码字的第i个比特出现错误,并对第g个码字的第i个比特进行纠错,使其中表示按位异或,实现全部BCH码的并行译码。
以下介绍本发明方法的一个实施例:
以DVB-S2中n=58320,t=8的BCH码为例,该码信息长度为58192比特,生成的多项式如图2所示。
本实施例采用的GPU为NVIDIA GTX 1080ti,包含3584个流处理器,单精度浮点运算能力为10TFLOP。
(1)根据BCH码的本原多项式,生成一个有限域查找表log(β)和exp(e),生成过程如下:
(1-1)从BCH码本原多项式产生的有限域GF(2q)中获取一个非零元素β,β=αe,其中,e为非零元素β的序号,0≤e≤2q-2,α为BCH码本原多项式的一个根,q为本原多项式的次数,本原多项式的次数q=16,所以有限域查找表log(β)和exp(i)的大小为216×4=218字节;
(1-2)在图形处理器的全局内存中,以非零元素β为地址存储非零元素序号e,以非零元素序号e为地址存储非零元素β;
(1-3)遍历BCH码本原多项式产生的有限域GF(2q)中的所有非零元素,重复步骤(1-1)和步骤(1-2),得到非零元素β与非零元素序号e之间的映射表,记为有限域查找表log(β)和exp(e);
(2)利用步骤(1)生成的有限域查找表log(β)和exp(e),生成用于BCH码译码的伴随式计算查找表其中j为BCH码的伴随式系数序号,0≤j≤2t-1,t为BCH码的最大纠错个数,t=8,为计算参数,其中rf表示计算参数的第f个比特,rf∈{0,1},伴随式计算查找表的生成步骤如下;
(2-1)初始化伴随式序号j=0;
(2-2)初始化计算参数
(2-3)计算计算参数中的第f个比特rf:其中&表示按位与操作,0≤f≤7;
(2-4)利用步骤(1)得到的有限域查找表log(β)和exp(e),计算得到
(2-5)在图形处理器的全局内存中,以为地址,存储步骤(2-4)中的
(2-6)对进行判断,若则使返回步骤(2-3),若则执行步骤(2-7);
(2-7)对j进行判断,若j<2t-1,则使j=j+1,返回步骤(2-2),若j=2t-1,,得到伴随式计算查找表查找表大小为256×2×8×4=214字节;
(3)利用以下方法,产生N个用于BCH码译码的伴随式Sg(x),Sg(x)=1+g为码字序号,0≤g≤N-1,其中N为图形处理器接收的码字数,j为伴随式系数序号,包括以下步骤:
(3-1)根据图形处理器从信道中接收的码字数N、BCH码的最大纠错个数t=8和码字长度n=58320,将图形处理器中的流处理器、共享内存、寄存器等运算资源分配为N×16×456个线程块,将线程块的三维索引记为(g,j,m),其中g为码字序号,0≤g≤N-1,j为BCH码的伴随式系数序号,0≤j≤15,将长度为n的码字分为组,每组包含128个比特,分组的序号记为m,0≤m≤455;
(3-2)对步骤(3-1)图形处理器中的每个线程块分配32个子线程,字线程的序号为v,32m≤v≤32m-1,共得到N×16×456×32个子线程,如果每次只对一个码字进行译码,即N=1,需要分配线程233472个,远大于流处理器个数3584,可以充分利用GPU的运算资源,提高译码吞吐率、降低译码延迟;
(3-3)在步骤(3-1)的线程块内进行如下并行计算,得到第一临时变量bg(v,j):
其中,v为子线程的序号,表示从信道中接收的第g个码字中的第8v+k个比特,由步骤(2)的伴随式计算查找表获得,伴随式计算查找表中exp(.)运算由步骤(1)的有限域查找表exp(e)获得;
(3-4)利用归约算法,在每个线程块内对步骤(3-3)的临时变量bg(v,j)进行BCH码本原多项式产生的有限域GF(2q)中的求和计算,得到第二临时变量
具体并行计算步骤为:
其中表示按位异或操作,最后子线程序号为32m中的bg(v,j),即为第二临时变量cg(m,j);
(3-5)利用原子按位异或操作,在每个线程块间对步骤(3-4)的第二临时变量cg(m,j)进行有限域GF(2q)中的求和运算,得到即伴随式的系数进而得到N个伴随式0≤g≤N-1;
(4)根据步骤(3)的N个伴随式,利用以下方法,并行计算得到N个错误位置方程,其中BCH码本原多项式产生的有限域GF(2q)中的加法和乘法由步骤(1)中得到的有限域查找表log(β)和exp(e)获得,包括以下步骤:
(4-1)初始化时,使k=0,其中k为迭代次数,为第k次迭代后的错误位置方程,为第k次迭代中的第一临时多项式,为第k次迭代的第三个临时变量;
(4-2)设定一个第四临时变量为乘积项中x2k+1的系数,其中Sg(x)为步骤(3)中得到的第g个伴随式
(4-3)根据用于BCH码译码的公式计算得到第k次迭代后的错误位置方程
(4-4)根据用于BCH码译码的公式
计算得到第一临时多项式其中,表示多项式的次数;
(4-5)根据用于BCH码译码公式的计算得到第三临时变量
(4-6)对迭代次数进行判断,若k<t-1,则使k=k+1,返回执行步骤(4-2),若k≥t-1,则得到N个错误位置方程0≤g≤N-1,t为BCH码的最大纠错个数;
(5)并行求解步骤(4)中N个错误位置方程σg(x),具体方法为:
(5-1)根据码字数量N,重新将图形处理器中的运算资源分配为N个线程块,根据码字长度n=58320,为每个线程块分配n个子线程,将线程块序号记为g,0≤g≤N-1,将子线程序号记为i,一个子线程对应码字的一个比特,0≤i≤58319,每个码字分配58320个线程,远大于流处理器个数3584,可以充分利用GPU的运算资源,降低译码延迟;
(5-2)在每个线程块内,将αi代入步骤(4)中得到的错误位置方程,得到σg(αi),其中α为BCH码本原多项式的一个根,其中BCH码本原多项式产生的有限域GF(2q)中的加法和乘法由步骤(1)中得到的有限域查找表log(β)和exp(e)获得;
(5-3)对上述计算结果σg(αi)进行判断,若计算结果为非零元素,则判定从信道中接收的第g个码字的第i个比特无错误,若计算结果为零元素,则判定第g个码字的第i个比特出现错误,并对第g个码字的第i个比特进行纠错,使其中表示按位异或,实现全部BCH码的并行译码。
Claims (1)
1.一种用于通信的基于图形处理器的BCH码并行译码方法,其特征在于该方法包括以下步骤:
(1)根据BCH码的本原多项式,生成一个有限域查找表log(β)和exp(e),生成过程如下:
(1-1)从BCH码本原多项式产生的有限域GF(2q)中获取一个非零元素β,β=αe,其中,e为非零元素β的序号,0≤e≤2q-2,α为BCH码本原多项式的一个根,q为本原多项式的次数;
(1-2)在图形处理器的全局内存中,以非零元素β为地址存储非零元素序号e,以非零元素序号e为地址存储非零元素β;
(1-3)遍历BCH码本原多项式产生的有限域GF(2q)中的所有非零元素,重复步骤(1-1)和步骤(1-2),得到非零元素β与非零元素序号e之间的映射表,记为有限域查找表log(β)和exp(e);
(2)利用步骤(1)生成的有限域查找表log(β)和exp(e),生成用于BCH码译码的伴随式计算查找表其中j为BCH码的伴随式系数序号,0≤j≤2t-1,t为BCH码的最大纠错个数,为计算参数,其中rf表示计算参数的第f个比特,rf∈{0,1},伴随式计算查找表的生成步骤如下;
(2-1)初始化伴随式序号j=0;
(2-2)初始化计算参数
(2-3)计算计算参数中的第f个比特rf:其中&表示按位与操作,0≤f≤7;
(2-4)利用步骤(1)得到的有限域查找表log(β)和exp(e),计算得到
(2-5)在图形处理器的全局内存中,以为地址,存储步骤(2-4)中的
(2-6)对进行判断,若则使返回步骤(2-3),若则执行步骤(2-7);
(2-7)对j进行判断,若j<2t-1,则使j=j+1,返回步骤(2-2),若j=2t-1,,得到伴随式计算查找表
(3)利用以下方法,产生N个用于BCH码译码的伴随式Sg(x), g为码字序号,0≤g≤N-1,其中N为图形处理器接收的码字数,j为伴随式系数序号,包括以下步骤:
(3-1)根据图形处理器从信道中接收的码字数N、BCH码的最大纠错个数t和码字长度n,将图形处理器中的运算资源分配为个线程块,将线程块的三维索引记为(g,j,m),其中g为码字序号,0≤g≤N-1,j为BCH码的伴随式系数序号,0≤j≤2t-1,将长度为n的码字分为组,每组包含128个比特,分组的序号记为m,
(3-2)对步骤(3-1)图形处理器中的每个线程块分配32个子线程,字线程的序号为v,32m≤v≤32m-1,共得到个子线程;
(3-3)在步骤(3-1)的线程块内进行如下并行计算,得到第一临时变量bg(v,j):
其中,v为子线程的序号,表示从信道中接收的第g个码字中的第8v+k个比特,由步骤(2)的伴随式计算查找表获得,伴随式计算查找表中exp(.)运算由步骤(1)的有限域查找表exp(e)获得;
(3-4)利用归约算法,在每个线程块内对步骤(3-3)的临时变量bg(v,j)进行BCH码本原多项式产生的有限域GF(2q)中的求和计算,得到第二临时变量
具体并行计算步骤为:
其中表示按位异或操作,最后子线程序号为32m中的bg(v,j),即为第二临时变量cg(m,j);
(3-5)利用原子按位异或操作,在每个线程块间对步骤(3-4)的第二临时变量cg(m,j)进行有限域GF(2q)中的求和运算,得到即伴随式的系数进而得到N个伴随式
(4)根据步骤(3)的N个伴随式,利用以下方法,并行计算得到N个错误位置方程,其中BCH码本原多项式产生的有限域GF(2q)中的加法和乘法由步骤(1)中得到的有限域查找表log(β)和exp(e)获得,包括以下步骤:
(4-1)初始化时,使k=0,其中k为迭代次数,为第k次迭代后的错误位置方程,为第k次迭代中的第一临时多项式,为第k次迭代的第三个临时变量;
(4-2)设定一个第四临时变量 为乘积项中x2k+1的系数,其中Sg(x)为步骤(3)中得到的第g个伴随式
(4-3)根据用于BCH码译码的公式计算得到第k次迭代后的错误位置方程
(4-4)根据用于BCH码译码的公式
计算得到第一临时多项式其中,表示多项式的次数;
(4-5)根据用于BCH码译码公式的计算得到第三临时变量
(4-6)对迭代次数进行判断,若k<t-1,则使k=k+1,返回执行步骤(4-2),若k≥t-1,则得到N个错误位置方程t为BCH码的最大纠错个数;
(5)并行求解步骤(4)中N个错误位置方程σg(x),具体方法为:
(5-1)根据码字数量N,重新将图形处理器中的运算资源分配为N个线程块,根据码字长度n,为每个线程块分配n个子线程,将线程块序号记为g,0≤g≤N-1,将子线程序号记为i,一个子线程对应码字的一个比特,0≤i≤n-1;
(5-2)在每个线程块内,将αi代入步骤(4)中得到的错误位置方程,得到σg(αi),其中α为BCH码本原多项式的一个根,其中BCH码本原多项式产生的有限域GF(2q)中的加法和乘法由步骤(1)中得到的有限域查找表log(β)和exp(e)获得;
(5-3)对上述计算结果σg(αi)进行判断,若计算结果为非零元素,则判定从信道中接收的第g个码字的第i个比特无错误,若计算结果为零元素,则判定第g个码字的第i个比特出现错误,并对第g个码字的第i个比特进行纠错,使其中表示按位异或,实现全部BCH码的并行译码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811403306.6A CN109347489B (zh) | 2018-11-23 | 2018-11-23 | 一种用于通信的基于图形处理器的bch码并行译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811403306.6A CN109347489B (zh) | 2018-11-23 | 2018-11-23 | 一种用于通信的基于图形处理器的bch码并行译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109347489A true CN109347489A (zh) | 2019-02-15 |
CN109347489B CN109347489B (zh) | 2021-07-27 |
Family
ID=65317105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811403306.6A Active CN109347489B (zh) | 2018-11-23 | 2018-11-23 | 一种用于通信的基于图形处理器的bch码并行译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109347489B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111030709A (zh) * | 2019-12-31 | 2020-04-17 | 中科院计算技术研究所南京移动通信与计算创新研究院 | 基于bch译码器的译码方法、bch译码器及应用其的电路 |
CN111669185A (zh) * | 2020-06-24 | 2020-09-15 | 湖南国科微电子股份有限公司 | 一种bch译码方法、装置、存储介质及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0563491A1 (en) * | 1992-03-31 | 1993-10-06 | International Business Machines Corporation | Method and apparatus for implementing a triple error detection and double error correction code |
US6463564B1 (en) * | 1999-09-14 | 2002-10-08 | Maxtor Corporation | Mis-synchronization detection system |
US7458007B2 (en) * | 2000-02-18 | 2008-11-25 | Texas Instruments Incorporated | Error correction structures and methods |
CN101951265A (zh) * | 2010-09-13 | 2011-01-19 | 珠海全志科技有限公司 | 二进制bch码在解码中计算错误位置多项式的方法和装置 |
CN102545914A (zh) * | 2010-12-27 | 2012-07-04 | 联芯科技有限公司 | Bch编译码方法及装置 |
CN102567283A (zh) * | 2011-12-08 | 2012-07-11 | 清华大学 | 一种利用gpu对小矩阵求逆的方法 |
US8327240B2 (en) * | 2008-11-26 | 2012-12-04 | Broadcom Corporation | Handling burst error events with interleaved Reed-Solomon (RS) codes |
CN102938653A (zh) * | 2012-11-13 | 2013-02-20 | 航天恒星科技有限公司 | 一种利用图形处理器gpu实现的并行rs译码方法 |
CN103346805A (zh) * | 2013-05-31 | 2013-10-09 | 中国科学院自动化研究所 | 一种长bch码的译码系统及方法 |
-
2018
- 2018-11-23 CN CN201811403306.6A patent/CN109347489B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0563491A1 (en) * | 1992-03-31 | 1993-10-06 | International Business Machines Corporation | Method and apparatus for implementing a triple error detection and double error correction code |
US6463564B1 (en) * | 1999-09-14 | 2002-10-08 | Maxtor Corporation | Mis-synchronization detection system |
US7458007B2 (en) * | 2000-02-18 | 2008-11-25 | Texas Instruments Incorporated | Error correction structures and methods |
US8327240B2 (en) * | 2008-11-26 | 2012-12-04 | Broadcom Corporation | Handling burst error events with interleaved Reed-Solomon (RS) codes |
CN101951265A (zh) * | 2010-09-13 | 2011-01-19 | 珠海全志科技有限公司 | 二进制bch码在解码中计算错误位置多项式的方法和装置 |
CN102545914A (zh) * | 2010-12-27 | 2012-07-04 | 联芯科技有限公司 | Bch编译码方法及装置 |
CN102567283A (zh) * | 2011-12-08 | 2012-07-11 | 清华大学 | 一种利用gpu对小矩阵求逆的方法 |
CN102938653A (zh) * | 2012-11-13 | 2013-02-20 | 航天恒星科技有限公司 | 一种利用图形处理器gpu实现的并行rs译码方法 |
CN103346805A (zh) * | 2013-05-31 | 2013-10-09 | 中国科学院自动化研究所 | 一种长bch码的译码系统及方法 |
Non-Patent Citations (1)
Title |
---|
李航等: "适于OBP卫星的Turbo码自适应部分迭代译码", 《清华大学学报(自然科学版)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111030709A (zh) * | 2019-12-31 | 2020-04-17 | 中科院计算技术研究所南京移动通信与计算创新研究院 | 基于bch译码器的译码方法、bch译码器及应用其的电路 |
CN111669185A (zh) * | 2020-06-24 | 2020-09-15 | 湖南国科微电子股份有限公司 | 一种bch译码方法、装置、存储介质及电子设备 |
CN111669185B (zh) * | 2020-06-24 | 2023-09-26 | 湖南国科微电子股份有限公司 | 一种bch译码方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109347489B (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140068391A1 (en) | Memory with Segmented Error Correction Codes | |
Assmus, Jr et al. | Coding and combinatorics | |
CN108139889B (zh) | 通过多个辅助伪随机数生成器的非线性混合生成伪随机数序列 | |
US6571368B1 (en) | Systolic Reed-Solomon decoder | |
US8843810B2 (en) | Method and apparatus for performing a CRC check | |
KR20080005574A (ko) | Crc 에러 검출 방법, 장치, 시스템 및 crc 에러 검출방법을 수행하는인스트럭션 세트를 포함하는 머신판독가능한 매체 | |
JPH07202715A (ja) | 時間定義域代数エンコーダ/デコーダ | |
US20070283231A1 (en) | Multi-Standard Scramble Code Generation Using Galois Field Arithmetic | |
CN108712232A (zh) | 一种用于连续变量量子密钥分发系统中的多码字并行译码方法 | |
CN109347489A (zh) | 一种用于通信的基于图形处理器的bch码并行译码方法 | |
CN104268021A (zh) | 基于图形处理器的rs解码方法 | |
US7266760B1 (en) | Method and apparatus for calculating cyclic redundancy checks for variable length packets | |
CN117014017A (zh) | 一种基于高位宽数据计算多项式除法余数的crc计算方法 | |
CN103269255A (zh) | 一种并行crc电路的生成方法和装置 | |
Shayan et al. | Design of Reed-Solomon (16, 12) codec for north American advanced train control system | |
Lee et al. | Algebraic decoding of the (73, 37, 13) quadratic residue code | |
CN202856718U (zh) | 一种基于fpga的抗多位错误翻转rs码检错纠错系统 | |
Shum et al. | Network coding based on byte-wise circular shift and integer addition | |
Subbiah et al. | Fast BCH syndrome generator using parallel polynomial division algorithm for GPGPUs | |
Taotao et al. | FPGA-Based Large Constraint Length Convolution Code Encoder Verification | |
Zhang et al. | FPGA-based large constraint length convolution code encoder verification | |
KR102353983B1 (ko) | 순환 중복 검사(crc)에서 알고리즘의 배열 방법 | |
CN117254823B (zh) | 一种并行rs编码方法、装置、系统及计算机存储介质 | |
Sadhika et al. | Reduced complexity XOR trees for LDPC codes and BS-LFSR techniques to High-Speed memory applications | |
Atrawalkar et al. | Design and Simulation of Parallel CRC Generation Architecture for High Speed Application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |