CN109245775A - 一种译码器及其实现译码的方法 - Google Patents
一种译码器及其实现译码的方法 Download PDFInfo
- Publication number
- CN109245775A CN109245775A CN201710557255.1A CN201710557255A CN109245775A CN 109245775 A CN109245775 A CN 109245775A CN 201710557255 A CN201710557255 A CN 201710557255A CN 109245775 A CN109245775 A CN 109245775A
- Authority
- CN
- China
- Prior art keywords
- message
- variable
- verification
- verification message
- calculating
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
-
- 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/0061—Error detection codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种译码器及其实现译码的方法,译码器至少包括:用于缓存来自信道的接收码字的缓存单元;存储单元,用于将压缩后的校验消息存储到校验消息压缩表,用以在两次迭代之间传递迭代信息;计算单元,用于在所述译码器的初始状态,利用缓存的所述接收码字初始化校验消息;以及,将存储单元中的校验消息转换为变量消息,根据得到的变量消息和缓存的接收码字完成迭代译码的计算,在计算得到的总变量消息校验无效时,将计算后的变量消息转换为压缩格式的校验消息;并在计算得到的总变量消息无效时,继续进行迭代译码的计算。通过本发明,压缩了传统同类设计中对存储器规模的需求,由于内存需求的缩小,从而节省了实现成本。
Description
技术领域
本发明涉及但不限于编解码技术,尤指一种译码器及其实现译码的方法。
背景技术
一般通信系统如图1所示,在发射侧,按处理流程可分为以下几个部分:信源处理、比特域处理、符号域处理、发射电路;在接收侧,按照与上述相反的方向依次处理。
在信道编码领域,主要存在两种编码方式,一种是卷积码,另一种是线性分组码。长期以来,卷积码凭借其简单的结构和可接受的良好性能得到了广泛应用,而传统的线性分组码,诸如BCH码、里所(RS,Reed-solomon)码等由于在同等硬件条件下性能弱于卷积码而仅在特定领域得到一些应用。其中,BCH码是一类最重要的循环码,能纠正多个随机错误,BCH码是1959年由Bose、Chaudhuri及Hocquenghem各自独立发现的二元线性循环码,人们用她们的名字字头命名为BCH码。RS码又是一种前向纠错的信道编码,对由校正过采样数据所产生的多项式有效。
进入20世纪90年代以后,上述两大编码方式都产生了突破性成果,一个是由卷积码衍生出来的Turbo码,另一个是由传统线性分组码衍生出来的低密度奇偶校验码(LDPC,Low Density Parity Check code)被重新发现。这两种信道编码的显著优点是:可以获得非常接近香农定理的性能(香农定理是1948年由信息论之父克拉德·香农推导得到的通信性能的理论极限)。因而,这两种编码也被称为现代信道编码,而将卷积码和BCH码等编码归为经典信道编码。
对比上述两种编码的特点,Turbo码的译码速度较慢,因而在追求通信速率的协议如802.11,3GPP 5G标准中并未采用。而LDPC码的译码速度是可以灵活设计的,从而达到硬件资源和速度的平衡,因而被多种协议采纳为可选方案或必选方案。
LDPC的基本原理大致包括:
首先设计一个校验矩阵H,设其大小为m*n,要求编码C与校验矩阵H满足公式(1)所示的关系:
C*HT=0 (1)
公式(1)中,(.)T表示转置运算,0表示m*1个0组成的向量。校验矩阵H为表示一种LDPC编码特性的矩阵。n表示信息位通过编码器输出的码字的长度,m表示信息位通过编码器后,在码字中附加的比特位的长度。
编码过程是已知信息位S求编码C的过程。由于是系统码,编码C可以看作是由信息位S和校验位P简单拼接而成,如公式(2)所示。由于信息位S是已知的,求编码C的过程其实就是求未知向量P的过程。
C=(S|P) (2)
公式(2)中,信息位S为LDPC编码器的输入,设其大小为1*k,其中,k表示编码器输入的信息位的长度。校验位P为信息位通过编码器后,在码字中附加的比特位,用于在信道传输后对S进行纠错,设其大小为1*m。从公式(2)可见,码字C为信息位通过编码器输出的一帧比特位。
同时将校验矩阵H看成A和B两部分,A的大小是k*m,B的大小是m*m,校验矩阵H和A、B的关系如公式(3)所示:
H=(A|B) (3)
根据公式(2)和公式(3),公式1可变形为如公式(4)所示:
由公式(4)可知,求校验位P需要已知AB-1,其中(.)-1表示求逆计算。一般称AB-1为生成矩阵,用G表示。在已知校验矩阵H的前提下,生成矩阵G就可以算出,从而可以得到校验位P,进而得到编码C,就完成了编码过程。
校验矩阵H是整个编译码系统中最重要的参数,校验矩阵H决定了整个编解码系统的抗误码性能,抗误码性能虽然在上述编码过程中并未体现,但在译码过程中将显现。校验矩阵H的m行即为m个线性方程,从信道上接收的码字C将在译码器中被代入这些方程并被逐次的迭代算法所纠正。
LDPC从其被视为研究热点到大面积应用,已经历20年时间。相关技术中,校验矩阵构造方法的几何构造法中有一个大类称为准循环LDPC(QC-LDPC,Quasi-Cyclic LDPC),由于其可以用较少的硬件代价而进行较长码字的编解码而受到重视,目前,所有在标准中应用的LDPC均属于这一大类。另外,诸如girth消去法、密度进化的方法并不与QC-LDPC互斥,即这几种方法可以共同使用从而构造性能优异的校验矩阵。
除校验矩阵外,编译码器的设计也是重要的研究方向。由于译码器对硬件存储资源的消耗大,且在高速应用中对吞吐率非常敏感,成为设计改良的重中之重。
发明内容
为了解决上述技术问题,本发明提供一种译码器及其实现译码的方法,能够节省对硬件存储资源的消耗,从而节约成本。
为了达到本发明目的,本发明提供了一种译码器,包括:用于缓存来自信道的接收码字的缓存单元、存储单元,及计算单元;其中,
存储单元,用于将压缩后的校验消息存储到校验消息压缩表,用以在两次迭代之间传递迭代信息;
计算单元,用于在所述译码器的初始状态,利用缓存的所述接收码字初始化校验消息;其中,校验消息包括校验方程的所有变量消息的最小值、次小值、最小值出现的序号,以及每变量消息的符号;以及,将所述校验消息转换为变量消息,根据得到的变量消息和缓存的接收码字完成迭代译码的计算,将计算后的变量消息转换为压缩格式的校验消息;并在计算得到的总变量消息无效时,继续进行迭代译码的计算。
可选地,还包括:判决单元、校验单元;其中,
判决单元,用于通过硬判决得到最终的译码结果比特流并输出;
校验单元,用于判断所述判决单元的输出是否有效,如果校验无效,向所述计算单元输出表示继续进行迭代译码的计算的第一控制信号;
相应地,
所述计算单元中计算得到的总变量消息无效具体包括:在接收到所述第一控制信号,继续进行迭代译码的计算。
可选地,所述校验单元还用于:在判断所述判决单元的输出无效时,将迭代计算次数加一,如果迭代计算次数达到预先设置的迭代次数上限阈值或校验通过,向所述计算单元输出表示停止迭代译码的计算的第二控制信号。
本发明还提供了一种实现译码的方法,包括:缓存来自信道的接收码字,并初始化校验消息;
在译码器的初始状态,利用缓存的所述接收码字初始化校验消息;其中,校验消息包括校验方程的所有变量消息的最小值、次小值、最小值出现的序号,以及每变量消息的符号;
将所述校验消息压缩后存储到校验消息压缩表;
将校验消息转换为变量消息,根据得到的变量消息和缓存的接收码字完成迭代译码的计算;
对计算得到的总变量消息进行判决,将计算后的变量消息转换为压缩的校验消息并存储到校验消息压缩表;并在计算得到的总变量消息无效时,继续进行迭代译码的计算。
可选地,在所述在校验判决结果无效时,所述方法还包括:
将迭代计算次数加一,继续进行所述迭代译码的计算,直至迭代计算次数达到预先设置的迭代次数上限阈值或计算得到的总变量消息有效。
可选地,所述根据得到的变量消息和缓存的接收码字完成迭代译码的计算包括:
对于变量x,使用所述校验消息压缩表恢复变量x在第y个校验方程上的校验消息;其中,变量x是总变量的第x个,且属于第y个校验方程的第v个相关变量;
将变量x在所有校验方程中的校验消息全部恢复;
计算变量x对应的总变量消息和每个校验方程对应的迭代变量消息;
将总变量消息用于判决跳出依据,将迭代变量消息用于更新所述校验消息压缩表;
针对下一个变量(x+1)执行上述步骤,直至完成所有变量的更新。
可选地,所述使用所述校验消息压缩表恢复变量x在第y个校验方程上的校验消息的值为:
校验消息的符号为:正数和零用0表示,负数用1表示;
其中,XOR()表示对集合中的所有元素求异或;其中,为第y个校验方程所涉及的所有变量消息的最小值,为第y个校验方程所涉及的所有变量消息的次小值,为第y个校验方程所涉及的所有变量消息的最小值对应的变量消息的序号,为第y个校验方程所涉及的所有变量消息的符号序列。
可选地,所述计算该变量x对应的总变量消息和每个校验方程对应的迭代变量消息包括:
计算迭代变量消息为:计算总变量消息为:
所述将总变量消息用于判决跳出依据,将迭代变量消息用于更新校验消息压缩表包括:将所述计算得到的进行缩小。
可选地,所述将迭代消息用于更新所述变量消息压缩表包括:
其中,v是变量x在第y个校验方程内变量出现的顺序号。
其中,sign(.)为取符号运算,即:
可选地,所述初始化校验消息包括:
利用所述接收码字Lq计算初始的校验消息表,包括:
其中,R表示与第y个校验方程相关的变量序号的集合;
其中,submin(.)表示寻找最小值以外的次小值的运算;
其中,v为属于集合R的变量序号x’中,最小的对应的x’在第y个校验方程中的序号;
与现有技术相比,本申请技术方案译码器至少包括:用于缓存来自信道的接收码字的缓存单元;存储单元,用于将压缩后的校验消息存储到校验消息压缩表,用以在两次迭代之间传递迭代信息;计算单元,用于在所述译码器的初始状态,利用缓存的所述接收码字初始化校验消息;其中,校验消息包括校验方程的所有变量消息的最小值、次小值、最小值出现的序号,以及每变量消息的符号;以及,将存储单元中的校验消息转换为变量消息,根据得到的变量消息和缓存的接收码字完成迭代译码的计算,将计算后的变量消息转换为压缩格式的校验消息,并在计算得到的总变量消息校验无效时,继续进行迭代译码的计算。本发明的译码器利用预计算的特殊寻址方式,将每次迭代中所计算的变量消息进行密集存储,通过本发明提供的技术方案,压缩了传统同类设计中对存储器规模的需求,由于内存需求的缩小,针对于相关技术中的译码器的存储得到了优化,从而节省了实现成本。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为相关技术中通信系统的架构示意图;
图2为本发明实施例中译码器的组成结构示意图;
图3为本发明实施例中译码器实现译码的方法的流程图;
图4为本发明实施例中译码器实现迭代计算的方法的流程图;
图5(a)为相关技术中译码计算后的存储示意图;
图5(b)为本发明实施例中译码计算后的存储示意图;
图6为本发明实施例中存储校验消息压缩表的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
相关技术中,普通置信传播(BP,Belief Propagation)译码的一般计算方法包括:
对于如下所示的校验矩阵H,共有3行6列,那么可知,每帧编码的码长n=6,校验位的个数m=3(同时说明校验方程个数也为3),信息位的个数k=3,码率R=0.5。
相关技术中的普通迭代译码是逐行进行的。为了不失一般性,本文以i次迭代作为描述的开始。假设第i次迭代从第(i-1)次迭代中继承了变量消息写为矩阵形式如下:
进入第i次迭代后,首先计算校验消息写为矩阵形式如下:
矩阵中每个的计算方式如下:
使用经典BP算法:
或者,使用Min-Sum算法:
其中,tanh和atanh分别表示双曲正切和反双曲正切。R表示与第y个校验方程相关的变量序号的集合,如上例中,如果y=1,则与其相关的变量序号的集合为{2,3,6};R\x表示从R集合中排除x,如上例中,如果y=1,x=6,则R\6表示集合{2,3};在Min-Sum算法中系数α是修正因子,修正因子α是一个小于1的经验值。
除上述两种方法外,相关技术中还存在Offset-BP等多种方法计算下文均表示为:
在基础上可以求得写为矩阵形式如下:
矩阵中每个的计算方式如下:
其中,W表示与第x个码字相关的所有校验方程的序号,如上例中,如果x=1,则与其相关的校验方程的序号的集合为{2,3};W\y表示从W集合中排除y,如上例中,如果x=1,y=2,则W\2表示集合{3}。
对于的求解,除上述现有技术外,同样存在若干其他相关技术,本文均表示为:
最后求不是一个矩阵,而是一个向量,如上例所示为:
向量中每个的计算方式如下:
其中,W的定义与计算式中的定义一致。可见,与的不同之处是前者多加入了一项
对于的求解,除上述现有技术外,同样存在若干其他相关技术,本文均表示为
上述过程仅描述了普通BP译码中第i次迭代的过程,其以作为两次迭代的继承数据,因而需要保存。在第1次迭代之前,被初始化为接收码字Lqx。
在工程应用中,通常所需要的存储空间小于特别是对于Min-Sum等类型的简化算法。因而,通常不存储而存储在上述第i次迭代之前,根据和反推然后可以进行上述迭代步骤。
如上所述,普通BP译码采用逐行处理的顺序,在第i次迭代中,使用每行的更新每行的然后直到处理完最后一行,和才能完成全部更新。工程中可能会在每行处理后都更新和但都不是它们的最终结果,只是一种流水线处理方式。因此,永远依据得到,无法利用也就是说,普通BP的译码收敛速度较慢,因而要想获得好的译码效果需要牺牲更多的迭代时间,要想省时间就必须牺牲译码效果。为了提高BP译码的收敛速度,相关技术中提出了置乱式置信传播算法(SBP,shuffled BP)译码方法。
shuffled BP译码的设计思想是希望在计算时可以利用这样可以加快迭代速度,因为比多迭代了一次,可以认为更接近正确值。为了实现这一目的,shuffled BP译码将普通BP的逐行处理方式改变为逐列处理方式。
在逐列处理中,步骤和普通BP译码一样,先从得到然后计算和所用计算公式上文已经提到,不再赘述,这里使用“?”表示在shuffled BP译码器中,被调用来计算CR的既可能是第(i-1)次迭代产生的结果,也可能是本次迭代即第i次迭代产生的结果,是哪个结果在具体的校验矩阵情景下才能确定。shuffled BP译码与逐行处理区别也是明显的,因为每处理完一列,算得的就是一个完整的更新后的值,它可以在随后几列的处理中发挥作用,从而加快了迭代收敛速度。
同样以上例中校验矩阵H为例,假设第i次迭代,从第(i-1)次迭代继承得到的VR矩阵如下:
先计算与第一列相关的校验消息:和继而可以得到第一列迭代的变量消息和以及第一列总的变量消息
然后计算第二列相关的校验消息:和由于已经更新,所以在计算时,使用的是而非因此加快了更新收敛速度。
在相关技术中,为了提高吞吐率,采用了并行的结构设计和计算方法。一些设计会寻找完全与本列不相关的其他列进行并行处理,而另一些设计会在shuffled BP译码与普通BP译码之间进行折中,即并不只选择完全无关的列进行并行,一些相关的列也一起并行,这些并行的相关的列都使用旧的VR,而不是按顺序等待更新后的VR。
以上例中的校验矩阵H为例,从矩阵中可以看出,第1列和第6列完全不相关,因此,第1列和第6列可以同时进行运算。第2列和第4列完全不相关,因此,第2列和第4列也可以同时进行运算。第3列和第5列完全不相关,因此,第3列和第5列可以同时进行计算。这样,只要3个列的计算时间就可以获得6个列的输出。
除BP译码通常需要存储VM向量和一些临时占用的寄存器以外,大块的内存占用主要来自于两次迭代间需要传递的信息,而实现shuffled BP译码时可能都采用存储VR或直接存储CR的方式,从而造成了存储需求的扩大,进而也增加了器件成本。
图2为本发明实施例中译码器的组成结构示意图,数据流从左向右逐级处理并最终判决输出,如图2所示,至少包括缓存单元、存储单元、计算单元、判决单元和校验单元;其中,
缓存单元,用于缓存来自信道的接收码字。
缓存的接收码字不仅用于后级迭代译码,且在译码器的初始状态时,用于初始化校验消息即生成校验消息的初始值并输出给存储单元。其中,校验消息包括各校验方程所涉及的所有变量消息的最小值、次小值、最小值出现的序号,以及每变量消息的符号。该校验消息负责在两次迭代之间传送必要的迭代信息。
存储单元,用于将压缩后的校验消息存储到校验消息压缩表,用以在两次迭代之间传递迭代信息。
计算单元,是本发明译码器的核心运算单元,用于在所述译码器的初始状态,利用缓存的所述接收码字初始化校验消息;其中,校验消息包括校验方程的所有变量消息的最小值、次小值、最小值出现的序号,以及每变量消息的符号;以及用于将存储单元中的校验消息转换为变量消息,根据得到的变量消息和缓存的接收码字完成迭代译码的计算,将计算后的变量消息转换为压缩格式的校验消息,继续存入校验消息压缩表;并在计算得到的总变量消息无效时,继续进行迭代译码的计算。
可选地,本发明译码器还包括:判决单元、校验单元;其中,
判决单元,用于通过硬判决得到最终的译码结果比特流并输出;
校验单元,用于判断判决单元的输出是否有效,如果校验无效,向所述计算单元输出表示继续进行迭代译码的计算的第一控制信号;
相应地,
所述计算单元中计算得到的总变量消息无效具体用于:在接收到所述第一控制信号,继续进行迭代译码的计算。
校验单元,用于判断判决单元的输出是否有效,如果无效即校验无效,则说明输出码字仍然存在错误,需要继续迭代,向计算单元输出表示继续进行迭代译码的计算的第一控制信号;
如果确认判决单元的输出是有效的,则表明输出的最终的译码结果比特流是有效的。
校验单元还用于:在判断判决单元的输出无效时,将迭代计算次数加一,如果迭代计算次数达到预先设置的迭代次数上限阈值或校验通过,则无论校验单元是否校验通过,不需要进行下一次迭代,向所述计算单元输出表示停止迭代译码的计算的第二控制信号。
图3为本发明实施例中译码器实现译码的方法的流程图,如图3所示,包括以下步骤:
步骤300:缓存来自信道的接收码字,并初始化校验消息。
步骤301:将校验消息压缩后存储到校验消息压缩表。
本步骤中,可以按照预先设置的格式对校验消息进行压缩后以校验消息压缩表的形式进行存储。
步骤302:将校验消息转换为变量消息,根据得到的变量消息和缓存的接收码字完成迭代译码的计算。本步骤的具体实现如图4所示。
步骤303:对计算得到的总变量消息进行判决,将计算后的变量消息转换为压缩的校验消息并存储到校验消息压缩表;并在计算得到的总变量消息无效时,继续进行迭代译码的计算。
可选地,如果校验判决结果有效,所述方法还包括:不需要进行下一次迭代,表明输出的最终的译码结果比特流是有效的。
可选地,在所述在校验判决结果无效时,所述方法还包括:
将迭代计算次数加一,继续进行所述迭代译码的计算,直至迭代计算次数达到预先设置的迭代次数上限阈值或计算得到的总变量消息有效如果迭代计算次数达到预先设置的迭代次数上限阈值,则无论校验是否通过,不需要进行下一次迭代,将通过硬判决得到最后一次的译码结果比特流作为有效结果输出。
图4为本发明实施例中译码器实现迭代计算的方法的流程图,假设已完成第(i-1)次迭代,并已存储本发明的一个校验消息表,其中,校验消息表的表项包括:第y个校验方程所涉及的所有变量消息的最小值第y个校验方程所涉及的所有变量消息的次小值(不包括最小值的第y校验方程中所有变量消息集合中的最小值),第y个校验方程所涉及的所有变量消息的最小值对应的变量消息的序号以及第y个校验方程所涉及的所有变量消息的符号序列
在第i次迭代计算中,如图4所示,执行以下步骤作为一次迭代译码的计算:
步骤400:对于变量x,使用校验消息压缩表恢复该变量x在第y个校验方程上的校验消息。
本步骤中,假设所求变量x是总变量的第x个,同时变量x属于第y个校验方程的第v个相关变量,则该变量x在第y个校验方程上的校验消息的值为:
校验消息的符号为:正数和零用0表示,负数用1表示;其中,XOR()表示对集合中的所有元素求异或。
步骤401:将变量x在所有校验方程中的校验消息全部恢复。
本步骤具体就是找到与变量x相关的所有校验方程,并恢复相应的校验消息。具体实现同样按照步骤400进行执行即可。
步骤402:计算该变量x对应的总变量消息和每个校验方程对应的迭代变量消息。
本步骤使用相关技术中的和 进行计算即可,具体实现并不用于限定本发明的保护范围,这里不再赘述。
步骤403:将总变量消息用于判决跳出依据,将迭代变量消息用于更新校验消息压缩表。完成后,即可丢弃迭代变量消息。
本步骤可以使用相关技术中的Min-Sum算法或Offset-BP算法,将步骤402中计算得到的进行缩小即可,具体实现并不用于限定本发明的保护范围,这里不再赘述。
步骤404:针对下一个变量(x+1)执行上述步骤400~步骤403,直至所有变量更新完毕。
将迭代消息用于更新变量消息表的方法如下:
其中,v是变量x在第y个校验方程内变量出现的顺序号。
其中,sign(.)为取符号运算,即:
需要说明的是,在首次迭代前,需要先利用输入码字Lq计算初始的校验消息表,具体实现包括:
其中,R表示与第y个校验方程相关的变量序号的集合;
其中,submin(.)表示寻找最小值以外的次小值的运算;
其中,v为属于集合R的变量序号x’中,最小的对应的x’在第y个校验方程中的序号;
从本发明的译码器实现译码的方法可见,由于内存需求的缩小,针对于shuffledBP译码的存储得到了优化。
假设译码器以单线程执行,并设校验矩阵H中1的个数为a,存储一个变量消息的比特数为g,那么,相关技术中,shuffled BP译码器中为了存储所有变量消息,至少需要a*g比特的空间;而使用本发明的译码器,设校验矩阵H的校验方程数量即矩阵行数为m行,校验矩阵H最大的行重为r(行重为一个校验矩阵中每行的1的个数,最大行重为拥有最多1的行中1的数量),那么,存储校验消息表所占用的存储空间为:
存储的存储空间为:m*g比特(每行存一个g比特的数);
存储的存储空间为:m*g比特(每行存一个g比特的数);
存储的存储空间为:m*log2(r)比特(每行存一个log2(r)比特的数);
存储的存储空间为:m*r比特(每行存r个1比特的数表示符号)。
因此,本发明的内存占用量包括:(2*g+log2(r)+r)*m比特。一般校验矩阵H中,a远大于m,且r一般不会超过10,因此,本发明译码器实现译码的内存需求低于相关技术中shuffled BP译码的内存需求。
举例来看,IEEE 802.11协议中所规定的12种校验矩阵H中的一种为例,假设该校验矩阵H的构造方法是一种QC-LDPC,其行数m为972,最大行重r为8,矩阵中1的个数a为6966个,同时假设一个变量消息的比特数g为8。那么,如果使用相关技术中的shuffled BP译码,在单线程处理情况下,有6966*8=54.4Kb的内存需求,而使用本发明译码器的译码方法,有(2*8+log2(8)+8)*972=25.6Kb的内存需求。需要说明的是,这里的存储需求仅指需要传递的大规模内存,译码器中还需要存储VM,以及VR/CR计算中的可反复覆盖的内存,这些内存需求在相关技术中译码方法的实现和本发明译码器实现译码的实现中均基本一致。另外,需要说明的是,上述有益效果限定于单线程即非并行译码情况下,在多线程并行译码设计中,往往需要复制内存资源,以避免RAM的读写冲突。在同等并行度情况下,本发明与现有技术的资源利用比例与单并行度相同。
下面结合具体实施例对本发明方法进行详细描述。
第一实施例,本实施例以一个简单的随机校验矩阵H为例,描述本发明的译码过程。该校验矩阵H为:
假设在第i次迭代中,已完成了对第1列的译码,正准备进行第2列的译码,根据校验矩阵H的形式,需要求解2个相关校验消息:和该两式根据图4中的步骤400求解即可。下面以求解为例具体描述步骤400的具体计算过程:
计算的绝对值:
计算的符号:正数和零用0表示,负数用1表示;
上式中的均为已维护的校验消息表中记录的值,这里仅根据校验方程序号3查询该校验消息表即可。
获得和后,可以使用图3中的步骤302求解和以及具体包括:
其中,L(.)为相关技术中对变量消息和迭代变量消息的求解方法,其中常用方法可以为:
在完成本列迭代后,需要根据图4中的步骤403使用相关技术对和进行缩小,例如使用Min-Sum方法将和同时缩小到原来的0.83倍,然后根据本发明图4中的步骤404更新校验消息表,由于第2列涉及到校验方程一和校验方程三,因此,需要更新两个校验方程对应的校验消息表,以下仅以校验方程三的更新为例说明:
更新最小值:
更新次小值:
更新最小值序号:
更新符号记录:
上例是以第i次迭代举例,在迭代译码的计算之前,校验表的初始值按照图2对缓存单元的描述完成,计算得到表1所示以下值:
表1
第二实施例,本实施例展示了本发明完成译码计算后压缩回到压缩表的实施例,图5(a)为相关技术中译码计算后的存储示意图,图5(b)为本发明实施例中译码计算后的存储示意图,如图5(b)所示,本发明在每次迭代内部对校验消息CR的计算仅是从压缩校验信息表中提取对应的值,而不需要执行比较运算,但该比较运算并未省略,在最后变量消息VR计算完毕后即压缩后存储的计算中,仍然要进行比较运算,但所涉及的存储及寻址方面,已由相关技术中分离的单点变为整块,因为每行校验方程均存储4个信息。
单点存储当然也可以使用连续地址进行存储,但是,寻址方面会产生更多困难,因为这是个二维寻址问题,既要找到校验方程,又要找到对应的变量位置,相比之下,本发明直接找校验方程,将二维寻址简化为一维寻址问题,因此减少了寻找变量位置的计算或资源。
第三实施例,本实施例给出一个利用shuffled BP性质进行并行运算的实例。由于对一列的变量消息计算需要多个校验消息,本实施例中,假设对这些校验消息进行并行计算之前,将不同校验方程对应的校验消息存储在不同的单口RAM中,以做到同时读取不同地址数据的目的。如图6所示,右边的方框显示了一个QC-LDPC的指数矩阵所指示的某变量(列)与某两个校验方程(行)的关联关系,求解该变量的2个对应的变量消息需要获得2个对应的校验消息,这2个校验消息通过图6左侧所示的存储于不同RAM中的校验消息压缩表同时给出。需要注意的是,RAM中的压缩表并不是复制的,而是将整体的压缩表拆分为若干块后分别存储的,因此,整体上内存资源的占用量仍然符合上面的计算。对于QC-LDPC,除了上述的超行可以并行求校验消息以外,超行内部也可以选择串行或并行处理,其中,超行是QC-LDPC中的概念,一个超行表示传统意义上一个LDPC的若干行,在一个超行内的所有行具有统一的准循环规律。如果选择串行,则同属于一个超行的z个校验方程对应的校验信息压缩表可以存储于同一个单口RAM中;如果选择并行,那么,z个压缩表不存储于分散的RAM中,且不能与其他并行的超行处于同一RAM。
为了避免RAM过于分散,可以考虑适当的结合手段将若干压缩表进行联合存储,但是,可以进一步根据具体校验矩阵的特征予以分析以避免并行冲突。由于校验矩阵H设计各有不同,因而并没有普遍的规律可以遵循。对于一个具体的校验矩阵H,需要观察它的特征。比如,校验矩阵H的第1个变量消息相关的校验消息是(1,3,5),那么,要想并行处理校验消息(1,3,5),就不能把这3个表放在同一个RAM中。剩下的校验消息(2,4,6)应该怎样存放要看其他变量消息,比如:第2个变量消息与校验消息(2,4,6)有关,那么,校验消息(2,4,6)也要存在不同的3个RAM中。但问题是,校验消息(2,4,6)是要存在另外的3个RAM中还是存在原来存校验消息(1,3,5)的3个RAM中。如果是存在原来存校验消息(1,3,5)的3个RAM中,那么,校验消息2和校验消息1存一起,还是与校验消息3存一起,仍然是问题。要决定这个问题,就要看第3个变量消息与哪些校验消息有关。较佳地,每一个校验消息可以单独存一个RAM,不跟其他变量消息共用存储空间,但是这样虽然保证了读写永远不冲突,RAM会太分散。实际应用中可以根据实际应用场景进行调整。
以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种译码器,其特征在于,包括:用于缓存来自信道的接收码字的缓存单元、存储单元,及计算单元;其中,
存储单元,用于将压缩后的校验消息存储到校验消息压缩表,用以在两次迭代之间传递迭代信息;
计算单元,用于在所述译码器的初始状态,利用缓存的所述接收码字初始化校验消息;其中,校验消息包括校验方程的所有变量消息的最小值、次小值、最小值出现的序号,以及每变量消息的符号;以及,将所述校验消息转换为变量消息,根据得到的变量消息和缓存的接收码字完成迭代译码的计算,将计算后的变量消息转换为压缩格式的校验消息;并在计算得到的总变量消息无效时,继续进行迭代译码的计算。
2.根据权利要求1所述的译码器,其特征在于,还包括:判决单元、校验单元;其中,
判决单元,用于通过硬判决得到最终的译码结果比特流并输出;
校验单元,用于判断所述判决单元的输出是否有效,如果校验无效,向所述计算单元输出表示继续进行迭代译码的计算的第一控制信号;
相应地,
所述计算单元中计算得到的总变量消息无效具体包括:在接收到所述第一控制信号,继续进行迭代译码的计算。
3.根据权利要求2所述的译码器,其特征在于,所述校验单元还用于:在判断所述判决单元的输出无效时,将迭代计算次数加一,如果迭代计算次数达到预先设置的迭代次数上限阈值或校验通过,向所述计算单元输出表示停止迭代译码的计算的第二控制信号。
4.一种实现译码的方法,其特征在于,包括:缓存来自信道的接收码字,并初始化校验消息;
在译码器的初始状态,利用缓存的所述接收码字初始化校验消息;其中,校验消息包括校验方程的所有变量消息的最小值、次小值、最小值出现的序号,以及每变量消息的符号;
将所述校验消息压缩后存储到校验消息压缩表;
将校验消息转换为变量消息,根据得到的变量消息和缓存的接收码字完成迭代译码的计算;
对计算得到的总变量消息进行判决,将计算后的变量消息转换为压缩的校验消息并存储到校验消息压缩表;并在计算得到的总变量消息无效时,继续进行迭代译码的计算。
5.根据权利要求4所述的方法,其特征在于,在所述在校验判决结果无效时,所述方法还包括:
将迭代计算次数加一,继续进行所述迭代译码的计算,直至迭代计算次数达到预先设置的迭代次数上限阈值或计算得到的总变量消息有效。
6.根据权利要求4或5所述的方法,其特征在于,所述根据得到的变量消息和缓存的接收码字完成迭代译码的计算包括:
对于变量x,使用所述校验消息压缩表恢复变量x在第y个校验方程上的校验消息;其中,变量x是总变量的第x个,且属于第y个校验方程的第v个相关变量;
将变量x在所有校验方程中的校验消息全部恢复;
计算变量x对应的总变量消息和每个校验方程对应的迭代变量消息;
将总变量消息用于判决跳出依据,将迭代变量消息用于更新所述校验消息压缩表;
针对下一个变量(x+1)执行上述步骤,直至完成所有变量的更新。
7.根据权利要求6所述的方法,其特征在于,所述使用所述校验消息压缩表恢复变量x在第y个校验方程上的校验消息的值为:
校验消息的符号为:正数和零用0表示,负数用1表示;
其中,XOR()表示对集合中的所有元素求异或;其中,为第y个校验方程所涉及的所有变量消息的最小值,为第y个校验方程所涉及的所有变量消息的次小值,为第y个校验方程所涉及的所有变量消息的最小值对应的变量消息的序号,为第y个校验方程所涉及的所有变量消息的符号序列。
8.根据权利要求6所述的方法,其特征在于,所述计算该变量x对应的总变量消息和每个校验方程对应的迭代变量消息包括:
计算迭代变量消息为:计算总变量消息为:
所述将总变量消息用于判决跳出依据,将迭代变量消息用于更新校验消息压缩表包括:将所述计算得到的进行缩小。
9.根据权利要求8所述的方法,其特征在于,所述将迭代消息用于更新所述变量消息压缩表包括:
其中,v是变量x在第y个校验方程内变量出现的顺序号;
其中,sign(.)为取符号运算,即:
10.根据权利要求9所述的方法,其特征在于,所述初始化校验消息包括:
利用所述接收码字Lq计算初始的校验消息表,包括:
其中,R表示与第y个校验方程相关的变量序号的集合;
其中,submin(.)表示寻找最小值以外的次小值的运算;
其中,v为属于集合R的变量序号x’中,最小的|Lqx‘|对应的x’在第y个校验方程中的序号;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710557255.1A CN109245775B (zh) | 2017-07-10 | 2017-07-10 | 一种译码器及其实现译码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710557255.1A CN109245775B (zh) | 2017-07-10 | 2017-07-10 | 一种译码器及其实现译码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109245775A true CN109245775A (zh) | 2019-01-18 |
CN109245775B CN109245775B (zh) | 2022-08-09 |
Family
ID=65083526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710557255.1A Active CN109245775B (zh) | 2017-07-10 | 2017-07-10 | 一种译码器及其实现译码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109245775B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110336567A (zh) * | 2019-07-19 | 2019-10-15 | 南京邮电大学 | 一种应用于g-ldpc编码协作的联合迭代译码方法 |
CN113273083A (zh) * | 2018-08-27 | 2021-08-17 | 波拉兰哈伯雷斯姆技术公司 | 使用压缩的信道输出信息来解码数据的方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102394661A (zh) * | 2011-11-08 | 2012-03-28 | 北京邮电大学 | 基于层译码处理的ldpc译码器及译码方法 |
CN202663386U (zh) * | 2012-04-19 | 2013-01-09 | 华南理工大学 | 一种ldpc解码器的校验节点更新电路 |
US20130019141A1 (en) * | 2011-07-11 | 2013-01-17 | Lsi Corporation | Min-Sum Based Non-Binary LDPC Decoder |
US9088302B2 (en) * | 2012-04-19 | 2015-07-21 | Samsung Electronics Co., Ltd. | Low-density parity-check code decoder and decoding method |
CN104850504A (zh) * | 2015-05-26 | 2015-08-19 | 华中科技大学 | 一种加速基于xor的raid-6编解码过程的方程并行计算方法 |
CN105024704A (zh) * | 2015-07-17 | 2015-11-04 | 西安空间无线电技术研究所 | 一种低复杂度的列分层ldpc译码器实现方法 |
CN105337618A (zh) * | 2014-08-06 | 2016-02-17 | 上海明波通信技术股份有限公司 | 并行向下兼容的多模ira_ldpc译码器及其译码方法 |
CN106330203A (zh) * | 2016-08-26 | 2017-01-11 | 晶晨半导体(上海)有限公司 | 一种ldpc的解码方法 |
-
2017
- 2017-07-10 CN CN201710557255.1A patent/CN109245775B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130019141A1 (en) * | 2011-07-11 | 2013-01-17 | Lsi Corporation | Min-Sum Based Non-Binary LDPC Decoder |
CN102394661A (zh) * | 2011-11-08 | 2012-03-28 | 北京邮电大学 | 基于层译码处理的ldpc译码器及译码方法 |
CN202663386U (zh) * | 2012-04-19 | 2013-01-09 | 华南理工大学 | 一种ldpc解码器的校验节点更新电路 |
US9088302B2 (en) * | 2012-04-19 | 2015-07-21 | Samsung Electronics Co., Ltd. | Low-density parity-check code decoder and decoding method |
CN105337618A (zh) * | 2014-08-06 | 2016-02-17 | 上海明波通信技术股份有限公司 | 并行向下兼容的多模ira_ldpc译码器及其译码方法 |
CN104850504A (zh) * | 2015-05-26 | 2015-08-19 | 华中科技大学 | 一种加速基于xor的raid-6编解码过程的方程并行计算方法 |
CN105024704A (zh) * | 2015-07-17 | 2015-11-04 | 西安空间无线电技术研究所 | 一种低复杂度的列分层ldpc译码器实现方法 |
CN106330203A (zh) * | 2016-08-26 | 2017-01-11 | 晶晨半导体(上海)有限公司 | 一种ldpc的解码方法 |
Non-Patent Citations (2)
Title |
---|
HUA XU等: "Comparison of Parallelization Strategies for Min-Sum Decoding of Irregular LDPC Codes ", 《TSINGHUA SCIENCE AND TECHNOLOGY》 * |
钟州等: "基于LDPC码校验节点度的分类修正最小和算法 ", 《清华大学学报(自然科学版)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113273083A (zh) * | 2018-08-27 | 2021-08-17 | 波拉兰哈伯雷斯姆技术公司 | 使用压缩的信道输出信息来解码数据的方法和系统 |
CN113273083B (zh) * | 2018-08-27 | 2024-05-24 | 波拉兰哈伯雷斯姆技术公司 | 使用压缩的信道输出信息来解码数据的方法和系统 |
CN110336567A (zh) * | 2019-07-19 | 2019-10-15 | 南京邮电大学 | 一种应用于g-ldpc编码协作的联合迭代译码方法 |
CN110336567B (zh) * | 2019-07-19 | 2022-11-29 | 南京邮电大学 | 一种应用于g-ldpc编码协作的联合迭代译码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109245775B (zh) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101924565B (zh) | Ldpc编码器、解码器、系统及方法 | |
US10044372B2 (en) | Sliding window list decoder for error correcting codes | |
KR100703271B1 (ko) | 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치 | |
CN107370490A (zh) | 结构化ldpc的编码、译码方法及装置 | |
US7934147B2 (en) | Turbo LDPC decoding | |
JP2011522502A (ja) | ターボldpc復号 | |
KR20040044590A (ko) | Ldpc 코드를 이용한 부호화기 및 부호화 방법 | |
CN103929210B (zh) | 一种基于遗传算法与神经网络的硬判决译码方法 | |
CN106936446A (zh) | 一种基于多进制ldpc码的高速译码器及其译码方法 | |
CN107919874A (zh) | 用于非二进制ldpc码解码的校验子计算的基本校验节点处理 | |
CN108111256A (zh) | 级联编译方法、装置、存储介质及其计算机设备 | |
CN109361403A (zh) | Ldpc译码方法、ldpc译码器及其存储设备 | |
US20200091933A1 (en) | Iterative decoding with early termination criterion that permits errors in redundancy part | |
CN114157309A (zh) | 极化码译码方法、装置及系统 | |
CN109245775A (zh) | 一种译码器及其实现译码的方法 | |
CN101296053A (zh) | 计算循环冗余校验码之方法及系统 | |
CN1822510A (zh) | 高速的减少存储需求的低密度校验码解码器 | |
CN102130696A (zh) | 错误纠正码编码器、错误纠正码解码器、交织/去交织方法及软入软出解码方法 | |
CN109935263A (zh) | 非易失性存储器的编译码方法及存储系统 | |
US11201629B2 (en) | Low latency sequential list decoding of polar codes | |
US11165447B2 (en) | GCC decoding and polar code successive-cancellation list decoding with decomposition into concatenated inner and outer codes | |
CN100417031C (zh) | 宽带无线接入系统中里德索洛门卷积级联码的实现方法 | |
CN112653474B (zh) | 一种降低平均迭代次数的紧缩型ldpc-cc译码器设计方法 | |
WO2019137231A1 (zh) | 一种译码方法及装置 | |
CN100581089C (zh) | TD-SCDMA系统中的Woven卷积码纠错编、译码器 |
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 |