结构化LDPC的编码、译码方法及装置与流程

文档序号:12967312阅读:708来源:国知局
结构化LDPC的编码、译码方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种结构化低密度奇偶校验码(lowdensityparitycheckcodes,简称为ldpc)的编码、译码方法及装置。



背景技术:

随着无线数字通信的发展及各种高速率、突发性强的业务的出现,人们对纠错编码技术提出了愈来愈高的要求,图1为一种典型的数字通信系统。ldpc是一类可以用非常稀疏的奇偶校验矩阵或者二分图定义的线性分组码,最初由gallager发现,所以称为gallager码。经过数十年的沉寂,随着计算机硬件和相关理论的发展,mackay和.neal重新发现了它,并证明了它具有逼近香农限的性能。最新研究表明,ldpc码具有以下特点:低译码复杂度,可线性时间编码,具有逼近香农限性能,可并行译码,以及在长码长条件下优于turbo码。

ldpc码是一种特殊的线性分组码。通信中,每发送一个分组长度为n比特的码字,为了保证其具有一定的纠错能力,需要有m个校验比特,每个码字都要求满足hxt=0t,其中h为二元域上m×n维的奇偶校验矩阵。所有的运算都是在二元域gf(2)上进行的,这里加和减是“异或”运算,而乘是“与”运算。

ldpc码是一种基于稀疏校验矩阵的线性分组码,正是利用它的校验矩阵的稀疏性,才能实现低复杂度的编译码,从而使得ldpc码走向实用化。前面提到的gallager码是一种正则的ldpc码(regularldpcc),而luby和mitzenmacher等人对gallager码进行了推广,提出非正则的ldpc码(irregularldpcc)。gallager最初提出的编码具有规则的码结构,其校验矩阵是稀疏矩阵,且每一行具有相同个数的1,每一列也具有相同个数的1。m.g.luby认为,如果允许校验矩阵的行或者列中非零元的个数发生变化,同时保证矩阵的稀疏性,那么编码的译码算法仍然适用,而编码的性能却能够得到极大的提高,使之能够达到甚至超过turbo码的性能。这是因为在这种编码结构中,如果对应二分图的左节点和右节点有合适的次数分布(degreedistribution),那么在译码时将会存在一种波状效应(waveformeffect),将极大地提高译码性能。非正则码就是这种允许同种节点有不同次数的低密度的编码,而gallager最初提出的编码相应的称为正则码。

ldpc奇偶校验矩阵的图形表示形式是二分图。二分图和校验矩阵之间具有一一对应的关系,一个m*n的奇偶校验矩阵h定义了每个具有n比特的码字满足m个奇偶校验集的约束。一个二分图包括n个变量节点和m个奇偶校验节点。当第m个校验涉及到第n个比特位,即h中第m行第n列的元素hm,n=1时,将有一根连线连接校验节点m和变量节点n。二分图中,任何同一类的节点之间都不会有连接,并且二分图中的总边数和校验矩阵中非零元素的个数相等。

概念girth用来定量描述二分图中的短圈。在图论中,二分图的girth是指一个图中最短圈的圈长,例如:某个二分图有长度为6、8、10、12和长度更长的圈,则该二分图的girth为6,变量节点的girth则指通过该节点的最短圈的圈长,由于一个变量节点唯一对应一个码字比特,所以一个码字比特的girth就是一个变量节点的girth。结构化ldpc码

结构化ldpc码是一类工业界最流行的ldpc码,具有最广阔的应用,目前出现在ieee802.11n/ad、ieee802.16e等国际标准中,这一类ldpc码在学术界又常常被称为准循环ldpc码或多边ldpc码。

这类ldpc码结构化的ldpc码的奇偶校验矩阵h设为(m×z)×(n×z)矩阵,它是由m×n个分块矩阵构成,每个分块矩阵都是z×z的基本置换矩阵的不同幂次,基本置换矩阵为单位阵时,它们都是单位阵的循环移位矩阵(文中默认为右移)。通过这样的幂次j就可以唯一标识每一个分块矩阵,单位矩阵的幂次可用0表示,矩阵一般用-1来表示。这样,如果将h的每个分块矩阵都用它的幂次代替,就得到一个m×n的幂次矩阵hb。这里,定义hb是h的基础矩阵,h称为hb的扩展矩阵。在实际编码时,z=码长/基础矩阵的列数n,称为扩展因子。

例如,矩阵

可以用下面的参数z和一个2×4的基础矩阵hb扩展得到:

z=3和

准确的定义如下:(n,k)结构化ldpc码是由大小为(mb×z)×(nb×z)的奇偶校验矩阵h定义,其中奇偶校验矩阵h是由大小为mb×nb的基础矩阵hb、扩展因子z和基本置换矩阵p三个变量确定。信息序列长度k=(nb-mb)×z,码字长度n=nb×z,码率r=k/n。基础矩阵hb中所有元素置换成全0方阵或者基本置换矩阵p的hbij次幂矩阵得到扩展后奇偶校验矩阵h,其中hbij是hb中的元素。基础矩阵hb的定义如下,

扩展后奇偶校验矩阵h的定义如下,

因此,也可以说ldpc码的编码器是由基础矩阵hb,扩展因子z及所选择的基本置换矩阵唯一生成的。根据上述基础矩阵的定义,可以看出在给定扩展因子(一个大于1的整数z)的条件下,基础矩阵和奇偶校验矩阵本质上是一个东西。

ldpc码编码

系统分组码的直接编码方法是:把一个码字x划分为n-m个信息比特s和m个校验比特c,相应地,把m×n的奇偶校验矩阵h划分为分别对应于信息比特和校验比特的m×(n-m)和m×m大小的两块,即h=[a|b]。根据h×x=0,可得:

于是可以得到a×s+b×c=0,进一步推出c=b-1as。当块b采用特殊的矩阵结构,如严格下三角结构(半随机矩阵)、双下三角结构等,则b-1具有非常简单的形式,可以直接按照上面式子直接计算得到码字中校验比特部分c,并且可以保证编码器具有线性复杂度。

也可以采用richarson线性时间编码算法:奇偶校验矩阵h具有准下三角结构,设h具有如下形式:

设编码后码字是x=(s,p1,p2),这里s为编码码字的系统比特部分,p1和p2为码字的校验比特部分,p1的长度为g,p2长度为(m-g)。上式中,a的维数是(m-g)×(n-m),b是(m-g)×g,t是(m-g)×(m-g),c是g×(n-m),d是g×g,e是g×(m-g)。所有这些矩阵都是稀疏矩阵,而t是下三角矩阵,主对角线元素全为1。校验比特部分可以由下面式子求得:

其中,

考虑到结构化ldpc码的向量特征,还可以考虑采用向量译码的方法,如果一个结构化ldpc码的校验位部分是一个严格下三角矩阵,则可以按照以下向量方式来编码,非常成熟和简单。

(n,k)结构化ldpc码的编码码字为c=(x,b),其中x=(x0,x1,…,xk-1)是信息序列,b=(b0,b1,…,bn-k-1)是校验序列。

对输入的k个比特的信息序列x进行ldpc编码,产生含有n-k个比特的校验序列b,ldpc编码码字c=[x,b],其中,n=nb×z,k=kb×z,kb=nb-mb,z是扩展因子。信息序列x可以分成kb个长度为z的子序列:

x=[x(0),x(1),x(2),…,x(kb-1)]

其中,每个子序列如下:

x(i)=[xi×z,xi×z+1,xi×z+2,…,xi×z+z-1]

校验序列b分成mb个长度为z的子序列:

b=[b(0),b(1),b(2),…,b(mb-1)]

其中,每个子序列如下:

b(i)=[bi×z,bi×z+1,bi×z+2,…,bi×z+z-1]

定义中间变量序列v,其中v分为mb个长度为z的子序列:

v=[v(0),v(1),v(2),…,v(mb-1)]

其中,每个子序列如下:

v(i)=[vi×z,vi×z+1,vi×z+2,…,vi×z+z-1]

ldpc码编码步骤如下:

计算中间变量序列v:

计算校验序列b:

计算ldpc码字c=[x,b]。

总之,ldpc码的编码器可以由ldpc奇偶校验矩阵h唯一描述,具体的编码方法已经非常成熟和简单,所此处不再赘述。另外,ldpc码的奇偶校验矩阵不仅仅决定了ldpc码译码器的性能,而且决定了ldpc码的编码器和译码器的复杂度、存储空间和处理延时,还决定了什么可以支持递增冗余harq和是否足够灵活。所以,寻找合适的ldpc码的奇偶校验矩阵结构是至关重要的,决定了ldpc码的使用前景。

在具体实现时,可采上述直接方法或者richarson方法或者其它方法运算,来完成从n-m比特的源数据得到n比特码字的编码功能。事实上,该编码器就是用软件或硬件实现式中稀疏矩阵的乘法和加法运算,对于基于单位阵及其循环移位矩阵的ldpc码,稀疏矩阵的乘法运算可以由多个z位(z为扩展因子)的循环移位寄存器和多个z位的加法器构成,而稀疏矩阵的加法运算就是由上述的多个z位的加法器完成,该多个z位循环移位寄存器和多个z位加法器就构造出一个硬件电路实现的ldpc编码器。

ldpc的译码

ldpc奇偶校验矩阵的图形表示形式是二分图。二分图和校验矩阵之间具有一一对应的关系,一个m*n的奇偶校验矩阵h定义了每个具有n比特的码字满足m个奇偶校验集的约束。一个二分图包括n个变量节点和m个奇偶校验节点。当第m个校验涉及到第n个比特位,即h中第m行第n列的元素hm,n=1时,将有一根连线连接校验节点m和变量节点n。二分图中,任何同一类的节点之间都不会有连接,并且二分图中的总边数和校验矩阵中非零元素的个数相等。

ldpc码的信息传递译码算法假定变量节点是相互独立的,短圈的存在必然破坏了独立性的假设,使得译码性能明显下降。事实上,ldpc奇偶校验矩阵对应二分图的最短圈长度越长,即girth值越大,从变量节点发出的信息被传递给自身的正反馈信息将越小,则译码性能也越好。校验矩阵h的girth与基础矩阵hb之间存在关联,通过数学推理和计算机仿真的验证,有了相关结论。

以下解释二分图的girth、节点的girth、边的girth。为了定量描述二分图中的短圈,引入了girth的相关概念。二分图的girth是指一个图中最短圈的圈长,例如:某个二分图有长度为6、8、10、12和长度更长的圈,则该二分图的girth为6。二分图中,某个节点u的girth(thegirthatnodeu)是指经过节点u的最短圈的圈长,例如:经过节点u有长度为8、10、12和长度更长的圈,则该节点u的girth为8。二分图中,某条边e的girth(thegirthatnodeu)是指经过此边e的最短圈的圈长,例如:经过节点e有长度为8、10、12和长度更长的圈,则该节点u的girth为8。

一个变量节点的girth是指最短路径的长度,它等同于从这个节点出来的信息传递回该节点本身的最小迭代次数。在实际迭代次数达到这个最小迭代次数之前,与这个节点联系的信息可以最优地传递给二分图的剩余部分。如果某个变量节点的girth如果越大,那么该变量节点发出的信息被传递给自身的正反馈信息将越小,则译码性能也越好。所以,使变量节点的girth尽量大对码性能的提高是有利的。综上所述,构造高ldpc码原则如下:首先,被选择的码的最短圈的长度(girth)应该尽量大;其次,对于具有同样大小girth的码,被选择的码的最短圈的数目应该尽量少。

在实际应用中,由基础矩阵扩展为奇偶校验矩阵,所述奇偶校验矩阵也可以称为扩展矩阵或者二进制矩阵。分析校验矩阵的拓扑可知,扩展矩阵中z×z的分块矩阵和基础矩阵的元素是唯一对应的,如果基础矩阵中某些元素不构成短圈,那么这些元素对应的分块矩阵在扩展矩阵中也将不构成短圈。所以,为了研究扩展矩阵的短圈,仅仅需要研究当基础矩阵中出现短圈时的扩展矩阵。

分析校验矩阵和二分图的拓扑结构,当基础矩阵hb中出现长度为4的短圈的时候,hb的扩展矩阵h才可能出现长度为4或者更大的短圈,如下:有四个z×z的分块矩阵pi,pj,pk,pl对应的幂次元素i,j,k,l在hb中构成了长度为4的短圈,若mod(i-j+k-l,z)=0,则pi,pj,pk,pl在h中构成了长度为4的短圈;若mod(i-j+k-l,z)=z/2,则pi,pj,pk,pl在h中构成了长度为8的短圈。其它情况下,pi,pj,pk,pl在h中构成了长度为12的短圈或者不构成短圈。

分析校验矩阵和二分图的拓扑结构,当基础矩阵hb中出现长度为6的短圈的时候,hb的扩展矩阵h才可能出现长度为6或者更大的短圈,如下:有六个z×z的分块矩阵pi,pj,pk,pl,pm,pn对应的幂次元素i,j,k,l,m,n在hb中构成了长度为6的短圈,若mod(i-j+k-l+m-n,z)=0,则pi,pj,pk,pl,pm,pn在h中构成了长度为6的短圈;若mod(i-j+k-l+m-n,z)=z/2,则pi,pj,pk,pl,pm,pn在h中构成了长度为10的短圈。其它情况下,pi,pj,pk,pl,pm,pn在h中构成了长度大于等于12的短圈或者不构成短圈。

分析校验矩阵和二分图的拓扑结构,当基础矩阵hb中出现长度为8的短圈的时候,hb的扩展矩阵h才可能出现长度为8或者更大的短圈,如下:有八个z×z的分块矩阵pi,pj,pk,pl,pm,pn,,ps,pt对应的幂次元素i,j,k,l,m,n,s,t在hb中构成了长度为8的短圈;若mod(i-j+k-l+m-n+s-t,z)=0,则pi,pj,pk,pl,pm,pn,ps,pt在h中构成了长度为8的短圈;其它情况下,pi,pj,pk,pl,pm,pn,ps,pt在h中构成了长度为12的短圈或者不构成短圈。

基础矩阵修正

如果对于每个不同的扩展因子无法采用同一基础矩阵,那么,对于每个不同的码长,所述的ldpc码编译码器都需要存储一个基础矩阵,当码长很多时,就要存储很多基础矩阵,这样会占用很大的存储空间或者使得硬件实现电路很复杂。

修正是利用其它码长的扩展因子对基础矩阵hb中的非负值元素进行修正,修正后的元素值应小于该码长下的扩展因子值,修正算法可以采用取模(mod)、取整(scale+floor)或舍入(scale+round)等。设pi,j为基础矩阵第i行第j列的非负元素,p’i,j为修正以后的元素,有:

对于取模(mod)方法:

对于取整(scale+floor)方法:

对于舍入(scale+round)方法:

其中,n为基础矩阵列数,n为要生成奇偶校验矩阵的低密度奇偶校验码的码长。mod为取模操作,[]为下取整操作,round为四舍五入操作。这里,假定最大码长为2304。

例如,对于码长1152比特低密度奇偶校验码,设其基础矩阵某个非负元素为93,则其修正结果为:

对于取模(mod)方法:

对于取整(scale+floor)方法:

对于舍入(scale+round)方法:

ldpc码如果使用当前最流行的分层译码,对数似然比信息的读写严重影响了ldpc码的流水线的排列。具体地,在高码率的时候,对于普通的ldpc码码结构,译码器需要基础矩阵一行完成处理以后,才可以开始下一级流水线,如果一级流水特别长,将严重降低译码器的效率。

在3gpp标准中,第5代移动通信标准的新空口(5gnewrat)正式立项了,这个新空口需要支持超高吞吐量和低的处理延迟,所以需要新的编码方案来代替当前的turbo编码方案。但是,当前的通信标准的ldpc码不能够很好地支持递增冗余harq,不具有足够的码率和传输块大小的灵活性,所以需要设计新的ldpc编码结构,在保证接近turbo码的性能和灵活性的条件下可以支持递增冗余harq,而且还需要有比turbo码低的多的复杂度和超高速处理能力。



技术实现要素:

本发明实施例提供了一种结构化ldpc的编码、译码方法及装置,以至少解决相关技术中现有ldpc编译码器无法支持递增冗余harq和灵活性不足的问题。

根据本发明的一个实施例,提供了一种ldpc的编码方法,包括:确定编码使用的基础矩阵hb,其中,所述基础矩阵hb包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵hb的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数,i=1、…、mb,j=1,…、nb;所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,对源信息比特序列进行ldpc编码运算,得到码字序列,其中,z是大于等于1的正整数。

根据本发明的一个实施例,提供了一种ldpc的译码方法,包括:

确定译码使用的基础矩阵hb,其中,所述基础矩阵hb包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵hb的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数,i=1、…、mb,j=1,…、nb;所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;

根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,预设比特数的码字进行译码运算,得到源信息比特序列,其中,z是大于等于1的正整数。

根据本发明的另一个实施例,提供了一种ldpc的编码装置,包括:

确定模块,用于确定编码使用的基础矩阵hb,其中,所述基础矩阵hb包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵hb的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数,i=1、…、mb,j=1,…、nb;

所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;

编码模块,用于根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,对源信息比特序列进行ldpc编码运算,得到码字序列,其中,z是大于等于1的正整数。

根据本发明的又一个实施例,提供了一种ldpc的译码装置,包括:确定模块,用于确定译码使用的基础矩阵hb,其中,所述基础矩阵hb包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵hb的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数,i=1、…、mb,j=1,…、nb;所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;

译码模块,用于根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,预设比特数的码字进行译码运算,得到源信息比特序列,其中,z是大于等于1的正整数。

根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行以下步骤的程序代码:

确定编码使用的基础矩阵hb,其中,所述基础矩阵hb包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵hb的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数,i=1、…、mb,j=1,…、nb;所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,对源信息比特序列进行ldpc编码运算,得到码字序列,其中,z是大于等于1的正整数。

根据本发明的再一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行以下步骤的程序代码:

确定译码使用的基础矩阵hb,其中,所述基础矩阵hb包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵hb的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数,i=1、…、mb,j=1,…、nb;所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;

根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,预设比特数的码字进行译码运算,得到源信息比特序列,其中,z是大于等于1的正整数。

本发明实施例提供的方案,通过设计合适的基础矩阵,根据所述基础矩阵和其对应的扩展因子,完成编码或译码,实现了超高速度的ldpc编码和译码,实现了接近turbo码的编译码性能,解决了现有ldpc编译码器无法支持递增冗余harq和灵活性不足的问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为相关技术中的数字通信系统的结构框图;

图2为本发明的实施例一提供的结构化ldpc码的编码器的结构示意图;

图3为本发明的实施例一中所使用的基础矩阵示意图;

图4为本发明的实施例二提供的结构化ldpc码的译码器的结构示意图;

图5为本发明的实施例三提供的一种结构化ldpc码的编码方法的流程图;

图6为本发明的实施例四提供的一种结构化ldpc码的译码方法的流程图;

图7为本发明的实施例五提供的一种结构化ldpc码的编码装置的结构示意图;

图8为本发明的实施例五提供的一种结构化ldpc码的译码装置的结构示意图;

图9为本发明的实施例八提供的一种存储器存储方式的示意图一;

图10为本发明的实施例八提供的一种存储器存储方式的示意图二。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

对于传统的结构化ldpc码,往往无法支持递增冗余harq方案,或者往往无法提供超高吞吐量,或者无法达到接近turbo码的性能,或者灵活性不足。但是,基础矩阵的可能结构和组成方式的数量是极其巨大的,现有技术还没有一种综合可行的解决方法,也得不到满足这样要求的基础矩阵。

为了解决上述问题,本发明的实施例提供了一种结构化ldpc码的编码、译码方法及装置、编码器和译码器。本发明的实施例从实用性考虑,对多个码率和多种码长,使用同一个基础矩阵,通常是对应于最大码长而生成的,同时在不同码长时对该基础矩阵进行修正,本发明实施例通过定义不同码长的基础矩阵的girth特征,保证了在各种码长条件下可以达到turbo码性能。但本发明不局限于此,也可适用于对每一个码长采用一个基础矩阵的方式。

需要说明的是,本申请实施例中提供的解决方案并不限于本申请实施例中矩阵的结构,例如对应于系统比特的矩阵和对应于校验比特的矩阵的位置是可以左右互换的,凡是基于本申请实施例中的设计思想进行的编译码方案均落入本申请的保护范围之内。

实施例一

本发明实施例提供了一种数字通信中结构化低密度奇偶校验码ldpc的编码装置,其结构如图2所示,至少包括处理器202和存储器201。

所述存储器201,用于至少存储编码使用的基础矩阵。

所述基础矩阵包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,nb是整数,kb是大于等于4的整数。i=1、…、mb,j=1,…、nb。

所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵。

可选地,所述矩阵hb的前4行和前kb+4列的交集构成了左上角子矩阵hb1,所述左上角子矩阵hb1的每一行的对应非零z*z方阵的元素个数都小于等于kb+2且大于等于kb-2,所述左上角子矩阵hb1的最后四列的方阵是一个左下三角矩阵或者准左下三角矩阵;和/或

所述左上角子矩阵hb2由所述矩阵hb的前kb行和前2*kb列的交集构成,所述左上角子矩阵hb2的前4行、最后kb-4列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素,所述左上角子矩阵hb2的最后kb-4行和最后kb-4列的交集构成的子矩阵是一个大小为(kb-4)*(kb-4)的左下三角矩阵或者准左下三角矩阵,所述左上角子矩阵hb2的最后kb-4行、第kb+1到kb+3列的交集构成的子矩阵的所有元素都是对应零z*z方阵的元素;

若左上角子矩阵hb1的最后四列的方阵是一个下三角矩阵,所述左上角子矩阵hb2的第kb+1列仅有一个对应非零z*z方阵的元素,若左上角子矩阵hb1的最后四列的方阵是一个准下三角矩阵,所述左上角子矩阵hb2的第kb+1列的所有元素都是对应零z*z方阵的元素;

所述左上角子矩阵hb2的最后kb-4行和前kb列的交集构成一个子矩阵,在这个子矩阵中每一行的对应非零z*z方阵的元素个数都小于等于kb-2;

其中,nb大于等于2*kb。

2)所述扩展因子z支持一组确定值集合{z1,z2,z3…,zv},其中,z1,z2,…,zv是按照从小到大顺序排列的,zr、zs、zt、zu是所述集合中四个确定值的扩展因子且满足z1≤zr≤zs≤zt≤zu≤zv,其中,v、r、s、t、u是下标,1≤r≤s≤t≤u≤v,v是大于等于2的整数;

当z1≤z=zi<zr时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特中至少一个比特的girth等于4。对于对应扩展因子z=zi和删除最重r列的基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6,其中,r小于等于kb/2;

当zr≤z=zi<zs时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6;

当zs≤z=zi<zt时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的所有系统比特的girth都等于6,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于8;

当zt≤z=zi<zu时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于8;

当zu≤z=zi<zv时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的系统比特的girth都等于8,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于10;

其中,一个ldpc码字的每一码字比特对应所述奇偶校验矩阵的每一列,每个码字比特的重量是指对应列中非零元素的个数,且i=1,2,…,v。

其中,一个ldpc码字的每一码字比特对应所述奇偶校验矩阵的每一列,

每个码字比特的重量是指对应列中非零元素的个数,在这里,i=1,2,…,v。

根据所述基础矩阵和其对应的扩展因子z,完成对(nb-mb)×z比特的源信息比特序列ldpc编码运算,得到nb×z比特码字序列的,其中z为扩展因子,z是大于等于1的正整数。

可选地,所述上述基础矩阵hb还可以包括:

该左上角子矩阵hb3由所述基础矩阵hb的前2*kb行和前3*kb列的交集构成了左上角子矩阵hb3,hb3的最后kb行和最后kb列的交集构成子矩阵是一个大小为kb*kb的单位阵或者单位阵的循环移位矩阵;

hb3的前kb行和最后kb列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素;

hb3的第kb+1列到2*kb列构成一个子矩阵,在该子矩阵的l1列中每一列所有的对应非零方阵的元素只有1个,在这个子矩阵的剩余kb-l1列的所有元素(entry)都是对应z*z零方阵的元素,其中,l1是大于等于0且小于kb的整数;

其中,nb大于等于3*kb。

可选地,nb是2*kb到12*kb的一个确定正整数。

可选地,kb取值为2到16之间的一个整数。

可选地,增强移动宽带(enhancedmobilebroadband,简称为emmb)场景和超高可靠和低延迟(ultra-reliableandlowlatencycommunication,简称为urllc)场景使用不同的kb取值。

可选地,基础矩阵hb的第g行的对应非零z*z方阵的元素个数小于等于g+1行对应非零z*z方阵的元素个数。其中,g=1,2,…,nb-1。

可选地,所述基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=1、…、nb。

需要指出,本发明不局限这种方式,还可以是最后一个元素为0,还可以任意元素是0。这些方式都可以保证,如果采用分层译码,可以不使用循环移位逆网络,可以明显减少路由开销,取得有益效果。

所述处理器202,用于确定所述基础矩阵和扩展因子z,完成从(nb-mb)×z比特的源数据得到nb×z比特码字的ldpc编码运算。

下面给一个更加具体的例子,符合以上描述要求的基础矩阵hb如图3所示。

对于图3所示基础矩阵hb,该矩阵hb对应码率为1/3,矩阵mb=16和nb=24,hb1是4*12的矩阵,hb2是8*16的矩阵,hb3是16*24的矩阵。该基础矩阵对应扩展因子z=336。图3的矩阵例子就同时满足hb1的特征、hb2的特征和hb3的特征。当满足的hb1的特征时候,2/3码率的ldpc码具有接近turbo码的性能,该矩阵只有4行,所以满足超高速处理的需要。由于满足的hb2的特征时候,保证了ldpc具有优选的次数分布,同时由于满足特定tbs=336*8的girth要求,从而使得1/2码率的ldpc码具有接近turbo码的性能;该矩阵只有8行,所以满足超高速处理的需要;另外hb1是hb2的左上角子矩阵,属于嵌套结构,所以可以支持递增冗余harq。可选地,由于满足的hb3的特征时候,保证了ldpc具有优选的次数分布,同时由于满足特定tbs=336*8的girth要求,从而使得1/3码率的ldpc码具有接近turbo码的性能;该矩阵只有16行,所以满足超高速处理的需要;另外hb1和hb2都是hb的左上角子矩阵,属于嵌套结构,所以可以支持递增冗余harq。

所述矩阵hb的前4行和前kb+4=8列的交集构成了左上角子矩阵hb1,所述左上角子矩阵hb1的每一行的对应非零z*z方阵的元素个数依次等于9、10、10和10,这些值都小于等于kb+2=10且大于等于kb-2=8,所述左上角子矩阵hb1的最后四列的方阵是一个左下三角矩阵或者准左下三角矩阵。

以上所给出的矩阵中,a部分矩阵为系统位部分矩阵,b部分为校验位部分矩阵,矩阵中元素值-1对应全0方阵,元素值是非零方阵对应于方阵循环移位相应值后的矩阵。此外,基础矩阵hb的所有列中第一对应非零方阵的元素都是0。此时,循环移位网络只需要完成循环移位差值即可。此时,具有本发明矩阵结构的ldpc分层译码器不需要循环移位逆网络,同传统方案比较,路由减半。

可选地,上述编码器还可具有以下特点:还包括扩展模块,用于根据扩展因子和基本置换矩阵对所述基础矩阵进行扩展,得到(m×z)×(n×z)低密度奇偶校验码的奇偶校验矩阵,所述译码模块是基于所述基础矩阵扩展得到的该奇偶校验矩阵进行编码运算。

本发明实施例则通过提出的基础矩阵的结构对信息比特进行ldpc编码,可以产生ldpc码字,这样的ldpc码字经过调制等模块以后发送到信道,接收端接收信号后进行解调等处理,产生接收的ldpc码字,接收ldpc码字将送到ldpc译码器。这样ldpc码字可以保证译码的流水线速度取得了提升的效果,即译码器处理速度取得了提升的效果。这就有效地提高了ldpc码的效率,加速了译码速度。进一步地,本发明提出的基础矩阵的结构通过允许不使用逆循环移位网络(用于写会存储)还可以使得交换网络减少,同样进一步减少硬件复杂度。

实施例二

本发明实施例提供了一种数字通信中结构化低密度奇偶校验码ldpc的译码装置,其结构如图4所示,至少包括处理器402和存储器401。

所述存储器401,用于至少存储编码使用的基础矩阵。所述的基础校验矩阵包括以下特征:

所述基础矩阵包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数。i=1、…、mb,j=1,…、nb。

所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵。

可选地,所述左上角子矩阵hb1由所述矩阵hb的前4行和前kb+4列的交集构成,所述左上角子矩阵hb1的每一行的对应非零z*z方阵的元素个数都小于等于kb+2且大于等于kb-2,所述左上角子矩阵hb1的最后四列的方阵是一个左下三角矩阵或者准左下三角矩阵;和/或

所述左上角子矩阵hb2由所述矩阵hb的前kb行和前2*kb列的交集构成,所述左上角子矩阵hb2的前4行、最后kb-4列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素,所述左上角子矩阵hb2的最后kb-4行和最后kb-4列的交集构成的子矩阵是一个大小为(kb-4)*(kb-4)的左下三角矩阵或者准左下三角矩阵,所述左上角子矩阵hb2的最后kb-4行、第kb+1到kb+3列的交集构成的子矩阵的所有元素都是对应零z*z方阵的元素;

若左上角子矩阵hb1的最后四列的方阵是一个下三角矩阵,所述左上角子矩阵hb2的第kb+1列仅有一个对应非零z*z方阵的元素,若左上角子矩阵hb1的最后四列的方阵是一个准下三角矩阵,所述左上角子矩阵hb2的第kb+1列的所有元素都是对应零z*z方阵的元素;

所述左上角子矩阵hb2的最后kb-4行和前kb列的交集构成一个子矩阵,在这个子矩阵中每一行的对应非零z*z方阵的元素个数都小于等于kb-2;

其中,nb大于等于2*kb。

2)所述扩展因子z支持一组确定值集合{z1,z2,z3…,zv},其中,z1,z2,…,zv是按照从小到大顺序排列的,zr、zs、zt、zu是所述集合中四个确定值的扩展因子且满足z1≤zr≤zs≤zt≤zu≤zv,其中,v、r、s、t、u是下标,1≤r≤s≤t≤u≤v,v是大于等于2的整数;

当z1≤z=zi<zr时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特中至少一个比特的girth等于4;对于对应扩展因子z=zi和删除最重r列的基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6,其中,r小于等于kb/2;

当zr≤z=zi<zs时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6;

当zs≤z=zi<zt时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的所有系统比特的girth都等于6,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于8;

当zt≤z=zi<zu时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于8;

当zu≤z=zi<zv时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的系统比特的girth都等于8,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于10;

其中,一个ldpc码字的每一码字比特对应所述奇偶校验矩阵的每一列,每个码字比特的重量是指对应列中非零元素的个数,且i=1,2,…,v。

其中,一个ldpc码字的每一码字比特对应所述奇偶校验矩阵的每一列,每个码字比特的重量是指对应列中非零元素的个数,在这里,i=1,2,…,v。

根据所述基础矩阵和其对应的扩展因子z,完成对(nb-mb)×z比特的源信息比特序列ldpc编码运算,得到nb×z比特码字序列的,其中z为扩展因子,z是大于等于1的正整数。

可选地,所述基础矩阵hb还包括:左上角子矩阵hb3。

可选地,该左上角子矩阵hb3由所述基础矩阵hb的前2*kb行和前3*kb列的交集构成了左上角子矩阵hb3,hb3的最后kb行和最后kb列的交集构成子矩阵是一个大小为kb*kb的单位阵或者单位阵的循环移位矩阵;

hb3的前kb行和最后kb列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素;

hb3的第kb+1列到2*kb列构成一个子矩阵,在该子矩阵的l1列中每一列所有的对应非零方阵的元素只有1个,在这个子矩阵的剩余kb-l1列的所有元素(entry)都是对应z*z零方阵的元素,其中,l1是大于等于0且小于kb的整数;

其中,nb大于等于3*kb。

可选地,nb是2*kb到12*kb的一个确定正整数。

可选地,kb取值为2到16之间的一个整数。

更进一步,emmb场景和urllc场景使用不同的kb取值。

可选地,基础矩阵hb的第g行的对应非零z*z方阵的元素个数小于等于g+1行对应非零z*z方阵的元素个数。其中,g=1,2,…,nb-1。

可选地,所述基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=1、…、nb。

基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=0、1、…、nb-1。

所述一个处理器402,用于根据所述基础矩阵和扩展因子z,完成从nb×z比特的码字得到(nb-mb)×z比特信息数据的ldpc译码运算。

下面给一个更加具体的例子,符合以上描述要求的基础矩阵hb如图3所示。

对于图3所示基础矩阵hb,该矩阵hb对应码率为1/3,矩阵mb=16和nb=24,hb1是4*12的矩阵,hb2是8*16的矩阵,hb3是16*24的矩阵。该基础矩阵对应扩展因子z=336。图3的矩阵例子就同时满足hb1的特征、hb2的特征和hb3的特征。当满足的hb1的特征时候,2/3码率的ldpc码具有接近turbo码的性能,该矩阵只有4行,所以满足超高速处理的需要。由于满足的hb2的特征时候,保证了ldpc具有优选的次数分布,同时由于满足特定tbs=336*8的girth要求,从而使得1/2码率的ldpc码具有接近turbo码的性能;该矩阵只有8行,所以满足超高速处理的需要;另外hb1是hb2的左上角子矩阵,属于嵌套结构,所以可以支持递增冗余harq。可选地,由于满足的hb3的特征时候,保证了ldpc具有优选的次数分布,同时由于满足特定tbs=336*8的girth要求,从而使得1/3码率的ldpc码具有接近turbo码的性能;该矩阵只有16行,所以满足超高速处理的需要;另外hb1和hb2都是hb的左上角子矩阵,属于嵌套结构,所以可以支持递增冗余harq。

所以,本发明的结构可以支持非常高或者比较灵活的并行度,满足适合于超高速译码,从而达到gbps的译码需求。本实施例则通过提出的基础矩阵的结构对信息比特进行ldpc译码,ldpc译码器接收ldpc码字。由于基础矩阵的行数非常小,这样ldpc译码器可以保证译码的流水线速度取得了提升的效果,即译码器处理速度取得了提升的效果。这就有效地提高了ldpc码的效率,加速了译码速度。进一步地,本发明提出的基础矩阵的结构通过允许不使用逆循环移位网络(用于写会存储)还可以使得交换网络减少,同样进一步减少硬件复杂度。

实施例三

本发明实施例提供了一种结构化ldpc码的编码方法,使用该方法完成ldpc编码的流程如图5所示,包括:

步骤501、确定编码使用的基础矩阵hb;

可选地,所述的基础校验矩阵包括以下特征:

所述基础矩阵包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数。i=1、…、mb,j=1,…、nb。

可选地,所述的基础矩阵hb至少还包括具有以下特征:所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵。可选地,上述特征可以表现为以下实现方式,但不限于此:

所述左上角子矩阵hb1由所述矩阵hb的前4行和前kb+4列的交集构成,所述左上角子矩阵hb1的每一行的对应非零z*z方阵的元素个数都小于等于kb+2且大于等于kb-2,所述左上角子矩阵hb1的最后四列的方阵是一个左下三角矩阵或者准左下三角矩阵;和/或

所述左上角子矩阵hb2由所述矩阵hb的前kb行和前2*kb列的交集构成,所述左上角子矩阵hb2的前4行、最后kb-4列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素,所述左上角子矩阵hb2的最后kb-4行和最后kb-4列的交集构成的子矩阵是一个大小为(kb-4)*(kb-4)的左下三角矩阵或者准左下三角矩阵,所述左上角子矩阵hb2的最后kb-4行、第kb+1到kb+3列的交集构成的子矩阵的所有元素都是对应零z*z方阵的元素;

若左上角子矩阵hb1的最后四列的方阵是一个下三角矩阵,所述左上角子矩阵hb2的第kb+1列仅有一个对应非零z*z方阵的元素,若左上角子矩阵hb1的最后四列的方阵是一个准下三角矩阵,所述左上角子矩阵hb2的第kb+1列的所有元素都是对应零z*z方阵的元素;

所述左上角子矩阵hb2的最后kb-4行和前kb列的交集构成一个子矩阵,在这个子矩阵中每一行的对应非零z*z方阵的元素个数都小于等于kb-2;

其中,nb大于等于2*kb。

2)所述扩展因子z支持一组确定值集合{z1,z2,z3…,zv},其中,z1,z2,…,zv是按照从小到大顺序排列的,zr、zs、zt、zu是所述集合中四个确定值的扩展因子且满足z1≤zr≤zs≤zt≤zu≤zv,其中,v、r、s、t、u是下标,1≤r≤s≤t≤u≤v,v是大于等于2的整数;

当z1≤z=zi<zr时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特中至少一个比特的girth等于4;对于对应扩展因子z=zi和删除最重r列的基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6,其中,r小于等于kb/2;

当zr≤z=zi<zs时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6;

当zs≤z=zi<zt时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的所有系统比特的girth都等于6,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于8;

当zt≤z=zi<zu时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于8;

当zu≤z=zi<zv时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的系统比特的girth都等于8,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于10;

其中,一个ldpc码字的每一码字比特对应所述奇偶校验矩阵的每一列,每个码字比特的重量是指对应列中非零元素的个数,且i=1,2,…,v。

根据所述基础矩阵和其对应的扩展因子z,完成对(nb-mb)×z比特的源信息比特序列ldpc编码运算,得到nb×z比特码字序列的,其中z为扩展因子,z是大于等于1的正整数。

对于2)而言,有一个更加具体的例子如下:

一个1/3码率的结构化ldpc码的基础矩阵hb定义如下:

这个ldpc码的扩展因子支持一组确定值集合{z1,z2,z3…,zv}={13,50,125,250,500,750,1000},这里,v=7,zmax=1000。每个扩展因子对应的基础矩阵hb(zi)通过背景技术中scale+floor算法来得到。

在这里,r=2,z1=13≤z=zi<z2=50时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特中13*5=65比特的girth等于4;对于对应扩展因子z=zi和删除最重r=8列的基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6,其中,r小于等于kb/2;

在这里,s=3,当z2≤z=zi<z3时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6;

在这里,t=4,当zs≤z=zi<zt时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的所有系统比特的girth都等于6,在每个ldpc码字中125个重量大于2的校验比特的girth大于等于8;

在这里,u=7,当zt≤z=zi<zu时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于8;

在这里,u=7,v=7,zu≤z=zi<zv为空,说明不存在这种情况。

进一步,所述基础矩阵还具备以下特征:该左上角子矩阵hb3由所述基础矩阵hb的前2*kb行和前3*kb列的交集构成了左上角子矩阵hb3,hb3的最后kb行和最后kb列的交集构成子矩阵是一个大小为kb*kb的单位阵或者单位阵的循环移位矩阵;

hb3的前kb行和最后kb列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素;

hb3的第kb+1列到2*kb列构成一个子矩阵,在该子矩阵的l1列中每一列所有的对应非零方阵的元素只有1个,在这个子矩阵的剩余kb-l1列的所有元素(entry)都是对应z*z零方阵的元素,其中,l1是大于等于0且小于kb的整数;

其中,nb大于等于3*kb。

可选地,nb是2*kb到12*kb的一个确定正整数。

可选地,kb取值为2到16之间的一个整数。

更进一步,emmb场景和urllc场景使用不同的kb取值。

可选地,基础矩阵hb的第g行的对应非零z*z方阵的元素个数小于等于g+1行对应非零z*z方阵的元素个数。其中,g=1,2,…,nb-1。

可选地,所述基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=1、…、nb。

基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=0、1、…、nb-1。

步骤502、根据所述基础矩阵和其对应的扩展因子,完成从(nb-mb)×z比特的源数据得到nb×z比特码字的ldpc编码运算;

其中z为扩展因子,z是大于等于1的正整数。

实施例四

本发明实施例提供了一种结构化ldpc码的译码方法,使用该方法完成lpdc编码的流程如图6所示,包括:

步骤601、确定译码使用的基础矩阵;

其中,所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;

即所述基础矩阵包括以下特征:

根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,预设比特数的码字进行译码运算,得到源信息比特序列,其中,z是大于等于1的正整数。所述基础矩阵包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数。nb是整数,i=1、…、mb,j=1,…、nb。

所述的基础矩阵hb至少还包括以下特征之一:

所述左上角子矩阵hb1由所述矩阵hb的前4行和前kb+4列的交集构成,所述左上角子矩阵hb1的每一行的对应非零z*z方阵的元素个数都小于等于kb+2且大于等于kb-2,所述左上角子矩阵hb1的最后四列的方阵是一个左下三角矩阵或者准左下三角矩阵;和/或

所述左上角子矩阵hb2由所述矩阵hb的前kb行和前2*kb列的交集构成,所述左上角子矩阵hb2的前4行、最后kb-4列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素,所述左上角子矩阵hb2的最后kb-4行和最后kb-4列的交集构成的子矩阵是一个大小为(kb-4)*(kb-4)的左下三角矩阵或者准左下三角矩阵,所述左上角子矩阵hb2的最后kb-4行、第kb+1到kb+3列的交集构成的子矩阵的所有元素都是对应零z*z方阵的元素;

若左上角子矩阵hb1的最后四列的方阵是一个下三角矩阵,所述左上角子矩阵hb2的第kb+1列仅有一个对应非零z*z方阵的元素,若左上角子矩阵hb1的最后四列的方阵是一个准下三角矩阵,所述左上角子矩阵hb2的第kb+1列的所有元素都是对应零z*z方阵的元素;

所述左上角子矩阵hb2的最后kb-4行和前kb列的交集构成一个子矩阵,在这个子矩阵中每一行的对应非零z*z方阵的元素个数都小于等于kb-2;

其中,nb大于等于2*kb。

2)所述扩展因子z支持一组确定值集合{z1,z2,z3…,zv},其中,z1,z2,…,zv是按照从小到大顺序排列的,zr、zs、zt、zu是所述集合中四个确定值的扩展因子且满足z1≤zr≤zs≤zt≤zu≤zv,其中,v、r、s、t、u是下标,1≤r≤s≤t≤u≤v,v是大于等于2的整数;

当z1≤z=zi<zr时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特中至少一个比特的girth等于4;对于对应扩展因子z=zi和删除最重r列的基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6,其中,r小于等于kb/2;

当zr≤z=zi<zs时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6;

当zs≤z=zi<zt时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的所有系统比特的girth都等于6,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于8;

当zt≤z=zi<zu时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于8;

当zu≤z=zi<zv时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的系统比特的girth都等于8,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于10;

其中,一个ldpc码字的每一码字比特对应所述奇偶校验矩阵的每一列,每个码字比特的重量是指对应列中非零元素的个数,且i=1,2,…,v。

根据所述基础矩阵和其对应的扩展因子z,完成对(nb-mb)×z比特的源信息比特序列ldpc编码运算,得到nb×z比特码字序列的,其中z为扩展因子,z是大于等于1的正整数。

可选地,所述结构化ldpc码的编码方法的技术特征还包括:

该左上角子矩阵hb3由所述基础矩阵hb的前2*kb行和前3*kb列的交集构成了左上角子矩阵hb3,hb3的最后kb行和最后kb列的交集构成子矩阵是一个大小为kb*kb的单位阵或者单位阵的循环移位矩阵;

hb3的前kb行和最后kb列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素;

hb3的第kb+1列到2*kb列构成一个子矩阵,在该子矩阵的l1列中每一列所有的对应非零方阵的元素只有1个,在这个子矩阵的剩余kb-l1列的所有元素(entry)都是对应z*z零方阵的元素,其中,l1是大于等于0且小于kb的整数;

其中,nb大于等于3*kb。

可选地,nb是2*kb到12*kb的一个确定正整数。

可选地,kb取值为2到16之间的一个整数。

更进一步,emmb场景和urllc场景使用不同的kb取值。

可选地,基础矩阵hb的第g行的对应非零z*z方阵的元素个数小于等于g+1行对应非零z*z方阵的元素个数。其中,g=1,2,…,nb-1。

可选地,所述基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=1、…、nb。

基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=0、1、…、nb-1。

步骤602、根据所述基础矩阵和对应的扩展因子,完成从nb×z比特的码字得到(nb-mb)×z比特信息数据的ldpc译码运算;

其中,z是扩展因子,z是大于等于1的正整数。

实施例五

本发明实施例提供了一种结构化ldpc码的编码装置,其结构如图7所示,包括:

确定模块701,用于确定编码使用的基础矩阵,所述的基础校验矩阵包括以下特征:

所述基础矩阵包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,nb是整数,kb是大于等于4的整数。i=1、…、mb,j=1,…、nb。

其中,所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵。即所述基础矩阵hb至少包括以下特征之一:

所述左上角子矩阵hb1由所述矩阵hb的前4行和前kb+4列的交集构成,所述左上角子矩阵hb1的每一行的对应非零z*z方阵的元素个数都小于等于kb+2且大于等于kb-2,所述左上角子矩阵hb1的最后四列的方阵是一个左下三角矩阵或者准左下三角矩阵;和/或

所述左上角子矩阵hb2由所述矩阵hb的前kb行和前2*kb列的交集构成,所述左上角子矩阵hb2的前4行、最后kb-4列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素,所述左上角子矩阵hb2的最后kb-4行和最后kb-4列的交集构成的子矩阵是一个大小为(kb-4)*(kb-4)的左下三角矩阵或者准左下三角矩阵,所述左上角子矩阵hb2的最后kb-4行、第kb+1到kb+3列的交集构成的子矩阵的所有元素都是对应零z*z方阵的元素;

若左上角子矩阵hb1的最后四列的方阵是一个下三角矩阵,所述左上角子矩阵hb2的第kb+1列仅有一个对应非零z*z方阵的元素,若左上角子矩阵hb1的最后四列的方阵是一个准下三角矩阵,所述左上角子矩阵hb2的第kb+1列的所有元素都是对应零z*z方阵的元素;

所述左上角子矩阵hb2的最后kb-4行和前kb列的交集构成一个子矩阵,在这个子矩阵中每一行的对应非零z*z方阵的元素个数都小于等于kb-2;

其中,nb大于等于2*kb。

2)所述扩展因子z支持一组确定值集合{z1,z2,z3…,zv},其中,z1,z2,…,zv是按照从小到大顺序排列的,zr、zs、zt、zu是所述集合中四个确定值的扩展因子且满足z1≤zr≤zs≤zt≤zu≤zv,其中,v、r、s、t、u是下标,1≤r≤s≤t≤u≤v,v是大于等于2的整数;

当z1≤z=zi<zr时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特中至少一个比特的girth等于4,对于对应扩展因子z=zi和删除最重r列的基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6,其中,r小于等于kb/2;

当zr≤z=zi<zs时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6;

当zs≤z=zi<zt时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的所有系统比特的girth都等于6,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于8;当zt≤z=zi<zu时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于8;

当zu≤z=zi<zv时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的系统比特的girth都等于8,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于10;

其中,一个ldpc码字的每一码字比特对应所述奇偶校验矩阵的每一列,每个码字比特的重量是指对应列中非零元素的个数,且i=1,2,…,v。

根据所述基础矩阵和其对应的扩展因子z,完成对(nb-mb)×z比特的源信息比特序列ldpc编码运算,得到nb×z比特码字序列的,其中z为扩展因子,z是大于等于1的正整数。

可选地,所述结构化ldpc码的编码方法还包括:

该左上角子矩阵hb3由所述基础矩阵hb的前2*kb行和前3*kb列的交集构成了左上角子矩阵hb3,hb3的最后kb行和最后kb列的交集构成子矩阵是一个大小为kb*kb的单位阵或者单位阵的循环移位矩阵;

hb3的前kb行和最后kb列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素;

hb3的第kb+1列到2*kb列构成一个子矩阵,在该子矩阵的l1列中每一列所有的对应非零方阵的元素只有1个,在这个子矩阵的剩余kb-l1列的所有元素(entry)都是对应z*z零方阵的元素,其中,l1是大于等于0且小于kb的整数;

其中,nb大于等于3*kb。

可选地,nb是2*kb到12*kb的一个确定正整数。

可选地,kb取值为2到16之间的一个整数。

更进一步,emmb场景和urllc场景使用不同的kb取值。

可选地,基础矩阵hb的第g行的对应非零z*z方阵的元素个数小于等于g+1行对应非零z*z方阵的元素个数。其中,g=1,2,…,nb-1。

可选地,所述基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=1、…、nb。

基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=0、1、…、nb-1。

编码模块702,用于根据所述基础矩阵和其对应的扩展因子,完成从(nb-mb)×z比特的源数据得到nb×z比特码字的ldpc编码运算,其中z为扩展因子,z是大于等于1的正整数。

本发明实施例还提供了一种结构化ldpc码的译码装置,其结构如图8所示,包括:

确定模块801,用于确定译码使用的基础矩阵,所述的基础校验矩阵包括以下特征:

所述基础矩阵包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,nb是整数,kb是大于等于4的整数。i=1、…、mb,j=1,…、nb。

所述的基础矩阵hb至少还包括以下特征之一:

所述左上角子矩阵hb1由所述矩阵hb的前4行和前kb+4列的交集构成,所述左上角子矩阵hb1的每一行的对应非零z*z方阵的元素个数都小于等于kb+2且大于等于kb-2,所述左上角子矩阵hb1的最后四列的方阵是一个左下三角矩阵或者准左下三角矩阵;和/或

所述左上角子矩阵hb2由所述矩阵hb的前kb行和前2*kb列的交集构成,所述左上角子矩阵hb2的前4行、最后kb-4列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素,所述左上角子矩阵hb2的最后kb-4行和最后kb-4列的交集构成的子矩阵是一个大小为(kb-4)*(kb-4)的左下三角矩阵或者准左下三角矩阵,所述左上角子矩阵hb2的最后kb-4行、第kb+1到kb+3列的交集构成的子矩阵的所有元素都是对应零z*z方阵的元素;

若左上角子矩阵hb1的最后四列的方阵是一个下三角矩阵,所述左上角子矩阵hb2的第kb+1列仅有一个对应非零z*z方阵的元素,若左上角子矩阵hb1的最后四列的方阵是一个准下三角矩阵,所述左上角子矩阵hb2的第kb+1列的所有元素都是对应零z*z方阵的元素;

所述左上角子矩阵hb2的最后kb-4行和前kb列的交集构成一个子矩阵,在这个子矩阵中每一行的对应非零z*z方阵的元素个数都小于等于kb-2;

其中,nb大于等于2*kb。

2)所述扩展因子z支持一组确定值集合{z1,z2,z3…,zv},其中,z1,z2,…,zv是按照从小到大顺序排列的,zr、zs、zt、zu是所述集合中四个确定值的扩展因子且满足z1≤zr≤zs≤zt≤zu≤zv,其中,v、r、s、t、u是下标,1≤r≤s≤t≤u≤v,v是大于等于2的整数;

当z1≤z=zi<zr时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特中至少一个比特的girth等于4;对于对应扩展因子z=zi和删除最重r列的基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6,其中,r小于等于kb/2;

当zr≤z=zi<zs时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于6;

当zs≤z=zi<zt时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的所有系统比特的girth都等于6,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于8;

当zt≤z=zi<zu时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的码字比特的girth都等于8;

当zu≤z=zi<zv时候,对于对应扩展因子z=zi和基础矩阵hb的ldpc码,在每个ldpc码字中所有重量大于2的系统比特的girth都等于8,在每个ldpc码字中至少一个重量大于2的校验比特的girth大于等于10;

其中,一个ldpc码字的每一码字比特对应所述奇偶校验矩阵的每一列,每个码字比特的重量是指对应列中非零元素的个数,且i=1,2,…,v。根据所述基础矩阵和其对应的扩展因子z,完成对(nb-mb)×z比特的源信息比特序列ldpc编码运算,得到nb×z比特码字序列的,其中z为扩展因子,z是大于等于1的正整数。

可选地,所述基础矩阵hb还具备以下特征:

该左上角子矩阵hb3由所述基础矩阵hb的前2*kb行和前3*kb列的交集构成了左上角子矩阵hb3,hb3的最后kb行和最后kb列的交集构成子矩阵是一个大小为kb*kb的单位阵或者单位阵的循环移位矩阵;

hb3的前kb行和最后kb列的交集构成的子矩阵的所有元素都是对应z*z零方阵的元素;

hb3的第kb+1列到2*kb列构成一个子矩阵,在该子矩阵的l1列中每一列所有的对应非零方阵的元素只有1个,在这个子矩阵的剩余kb-l1列的所有元素(entry)都是对应z*z零方阵的元素,其中,l1是大于等于0且小于kb的整数;

其中,nb大于等于3*kb。

可选地,nb是2*kb到12*kb的一个确定正整数。

可选地,kb取值为2到16之间的一个整数。

更进一步,emmb场景和urllc场景使用不同的kb取值。

可选地,基础矩阵hb的第g行的对应非零z*z方阵的元素个数小于等于g+1行对应非零z*z方阵的元素个数。其中,g=1,2,…,nb-1。

可选地,所述基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=1、…、nb。

基础矩阵hb的第j列所有对应非零方阵的元素有lj个,从上向下第一个元素是0,lj是大于等于1的正整数,j=0、1、…、nb-1。

译码模块802,用于根据所述基础矩阵和对应的扩展因子,完成从nb×z比特的码字得到(nb-mb)×z比特信息数据的ldpc译码运算,其中,z是扩展因子,z是大于等于1的正整数。

优选的,所述译码模块802包括:

基础矩阵的行更新单元8021,用于采用分层bp算法或者修正的最小和算法,对所述基础矩阵进行行更新,包括:

所述边信息为校验节点到变量节点信息;

译码判决单元8022,用于使用所述边信息计算码字对数似然比,并进行硬判,并检验是否正确,若正确则输出正确码字,若错误则继续译码处理。

综上所述,本发明的实施例提供了一种结构化ldpc码的编码方法、译码方法、编码装置和译码装置。通过确定编码或译码使用的包含k0个上下相邻对的基础矩阵,根据所述基础矩阵和其对应的扩展因子,完成编码或译码,实现了高流水线速度的ldpc编码和译码,解决了现有编译码器效率低下的问题。本发明的实施例提供的技术方案可以应用于数字通信系统中数据传输的纠错编码技术,得到一种效率提升或者复杂度减少的ldpc码,特别适用超高速的场景。

实施例六

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

确定编码使用的基础矩阵hb,其中,所述基础矩阵hb包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵hb的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数,nb是整数。i=1、…、mb,j=1,…、nb;所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,对源信息比特序列进行ldpc编码运算,得到码字序列,其中,z是大于等于1的正整数。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

实施例七

本发明的实施例还提供了另一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

确定译码使用的基础矩阵hb,其中,所述基础矩阵hb包括对应于系统比特的mb×kb的块a和对应于校验比特的mb×mb的块b,即hb=[a,b],其中,hbij表示所述基础矩阵hb的第i行和j列的元素,i是所述基础矩阵的行索引,j是所述基础矩阵的列索引,kb=nb-mb,kb是大于等于4的整数。nb是整数,i=1、…、mb,j=1,…、nb;所述基础矩阵hb包括一个或多个子矩阵,所述子矩阵包括:左上角子矩阵hb1和左上角子矩阵hb2,其中,所述左上角子矩阵hb1和左上角子矩阵hb2的行数和列数均小于所述基础矩阵hb的行数和列数,且所述左上角子矩阵hb1是左上角子矩阵hb2的左上角子矩阵;

根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,预设比特数的码字进行译码运算,得到源信息比特序列,其中,z是大于等于1的正整数。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

实施例八

所述的ldpc码支持v种码长,每种码长都有一个具有相同大小mb*nb的基础矩阵hb,并且每种码长的基础矩阵的对应非零方阵元素在矩阵中出现的位置都是相同的或者至多3个不同(即每种码长的基础矩阵的对应非零方阵元素在矩阵中出现的位置中最多有三个非零方阵元素的位置是不同的)。所述的扩展因子z支持一组确定的集合{z1,z2,z3,…,zvmax},每种码长的扩展因子是所述扩展因子集合中一个元素,每种码长的对应非零方阵元素的取值都是通过最大码长的对应非零方阵元素计算得到的,至少包括以下方式之一:

方式一:对于取模(mod)方法:

方式2:取整(scale+floor)方法:

方式3:舍入(scale+round)方法:

其中,α=pmax/pl,v=1,2,….,vmax,z1,z2,z3,…,zvmax是按照从小到大排列的,zvmax是最大码长的扩展因子,zv是第v个码长的扩展因子,是最大码长的第i行和第j列的对应非零方阵元素,hijv第v个码长的第i行和第j列的对应非零方阵元素。mod为取模操作,[]为下取整操作,round为四舍五入操作。所述扩展因子zv都是一个正整数值pl的n倍,即z=pl*n。其中,所述正整数值pl是子集合pset的一个元素,其中,所述子集合pset是pmax的所有正整数因子所构成集合中的一个子集,n是一个自然数,pmax是大于等于4的整数。

这里有一个更加具体的例子。

所述的pset为{256,32},nset为{1,3,5},即pmax=256,可以知道有6个扩展因子,扩展因子z支持一组确定的集合大小为6,即vmax=6,一组扩展因子集合为{32,96,160,256,768,1280},对应的码长集合为{128,384,640,1024,3072,5120},对应的最大扩展因子zvmax=1280,其最大扩展因子zvmax=1280对应的基础矩阵hb6为:

以上所述的每种码长对应的基础矩阵中的非零方阵元素的取值都是通过最大码长对应的基础矩阵的非零方阵元素计算得到,包括3种方式。其中,如果按方式1进行计算获得其他扩展因子的基础矩阵,包括2个步骤:

步骤1.所述方式1计算公式的前部分,如下:

其中,是最大扩展因子zvmax=1280(vmax=6)对应的基础矩阵hb6中的第i行和第j列元素;α=pmax/pl,所以α有2个数:1对应pset的第1个元素256,对应扩展因子为{256,768,1280};8对应pset的第2个元素32,对应扩展因子为{32,96,160};v=1,2,3,4,5。所以按以上所述的步骤1所述的方法计算出其他扩展因子(小于1280的,)的基础矩阵包括如下:

对应于α等于8的3个扩展因子的基础矩阵:hb'1,hb'2,hb'3(扩展因子分别为{32,96,160})如下:

对应于α等于1的另外2个扩展因子的基础矩阵:hb'4,hb'5(扩展因子分别为{256,768})如下:

由于α等于1,所以基础矩阵hb'4和hb'5都等于最大扩展因子的基础矩阵。

步骤2.按所述方式1的计算公式的后部分,如下

hijv=(h'ijv)modzv

其中,v=1,2,3,4,5;h'ijv是扩展因子zv对应的基础矩阵hb'v中的第i行和第j列元素,zv的取值为{32,96,160,256,768}。所以,依据所述步骤2计算方法,可以计算出其余5种基础矩阵(分别对应的扩展因子为{32,96,160,256,768}),如下:

对应于扩展因子32的基础矩阵hb1

对应于扩展因子96的基础矩阵hb2

对应于扩展因子160的基础矩阵hb3

对应于扩展因子256的基础矩阵hb4

对应于扩展因子768的基础矩阵hb5

所述方式1的方法的有益效果在于:可以使得多种码长可以采用同一套译码器,只需要增加很少的控制电路即可实现,也就说所述方案使得ldpc码可以支持非常灵活码长设计,解决了现有ldpc码的缺乏灵活码长的问题;以及,可以保证ldpc码的矩阵特性在由大扩展因子变为小扩展因子过程中的变化不大,从而保证了ldpc码在较大码长范围内保持比较高的译码性能。

例如,依据以上所述的基础矩阵和扩展因子设计方法,对于接收译码器设计中,我们可以采用如图9所示示例的存储器设计方案,图9所示的是对应于ldpc码基础矩阵中的某列的信息存储方式,包括外信息和信道解调信息的存储方式。n取值最大为5,所以需要5个word,如图9中的word0~word4;由于pmax等于256,所以每个word的大小为256。当ldpc编码所采用的扩展因子值z对应的pl值,就是对应实际译码器中其在每个word中的大小,例如pl取值为pset={256,32}的32时,则说明实际译码器中每个word中占用为32个位置,如果等于256时,则说明实际译码器中每个word中占用为256个位置(由于等于pmax了,所以其占满整个word);而ldpc编码所采用的扩展因子值z对应的n值,就是对应实际译码器中其在word的数目,例如n取值为nset={1,3,5}中的1时,则说明实际译码器中只用1个word存储对应基础矩阵中1列的所有z个信息,而如果n取值为nset={1,3,5}的3时,则说明实际译码器中只用3个word存储对应基础矩阵中1列的所有z个信息,而如果取值为nset={1,3,5}的5时,则说明实际译码器中用5个word存储对应基础矩阵中1列的所有z个信息。

在此,以扩展因子为z=96为例进行详细介绍ldpc译码器中对应于基础矩阵1列中的所有z=96个信息的存储方式。扩展因子为z=96,则,对应l=1,即p1=32,n=3,所以依据以上所述,则采用扩展因子为z=96进行ldpc编码,则译码器中对应基础矩阵的任意1列的z=96个软信息存储方式为:占用n=3个word,每个word的大小为32。如图10所示,译码器中对应基础矩阵的任意1列占用n=3个word(word0~word2),如图10中的1001;每个word中占用p=32个位置,而且占用方式为从首个开始放置,每间隔8个位置放置1个信息,如图10中的1002,即在每个word中每8个位置中放置1个信息(所述信息放置所述8个位置中的首个位置);由于只占用3个word,剩下2个word(如图10中的1003)不使用。可以看出,在译码器设计中,pmax可以对应于最大word的大小,而n的最大值对应于基础矩阵的任意1列中的扩展因子z个信息的存储器中word的数目。由于在对应所述基础矩阵的任意1列中的z=96个信息可以存储在一个存储块,不同word之间只需要通过地址来区分,而每个word的信息都是合并到一起了。

根据以上所述的将每个信息放置到word中的对应位置,每个word中每8个位置中放置1个信息,其余位置由于对于本扩展因子z=96(码长z*nb=96*8=768)下,可以在译码之前,先对长度为768的码字信息进行交织,所述交织方法包括:由以下至少一个参数确定所述解交织方法:所述参数pmax、所述参数pl和所述参数n。所述交织方法具体为:所述待译码码字信息序列包括768个信息,包括nb=8个长度分别为z=96的小数据块,对每个小数据块再细分为pl=32个子块,其中先对每个子块分别填充pmax-pl=256-32=224哑元比特获得长度为256的待译码小数据块,所述哑元比特不用于译码或译码,然后对所有所述的待译码小数据块进交织交织,交织方法为比特反转顺序(bro,bitreverseorder)法;所述比特反转顺序交织方法为:交织前的索引为f0,将f0转换成8比特二进制比特序列并将所述二进制比特序列左右反转,即最高位和最低位互换,次高位和次低位互换等等,获得反转后的二进制序列,所述二进制序列换成十进制即可获得数值为f1,即交织后的索引为f1,公式可以写为y’f1=yf0,其中,y是交织前的待译码小数据块,y’是交织后的待译码小数据块,f0和f1的例子:f0的十进制数值为15,则其8比特的二进制序列为00001111,那么反转后的8比特的二进制序列为11110000,则其对应十进制为f1=240,所以在交织过程中,交织后的y’中索引为240的值等于交织前的y中索引为15的值。在编码之前执行了所述交织方法,那么相应地在编码后也要做相反操作(解交织方法)获得解交织后的码字数据序列,即从y’f0=yf1操作,所述解交织方法包括:由以下至少一个参数确定所述解交织方法:所述参数pmax、所述参数pl和所述参数n。然后从解交织后的码字数据序列中选出码字比特。以上所述的由十进制转换成二进制序列的长度有pmax确定,pmax需要等于2的正整数幂次,所述正整数幂次就是二进制序列的长度。

同理,在ldpc译码器中,也可以采用以上所述的交织和解交织方法,在对预设比特数的码字进行译码运算之前对预设比特数的码字先进行交织,所述交织方法与上述方法一致,然后进行ldpc译码得到译码后序列,然后对译码后序列进行解交织,并选择出相应的比特得到源信息比特序列。

从以上分析也可以看出,所述ldpc码的译码器(word大小为256,有5个word的存储器设计)可以支持所有扩展因子满足如下:pmax的所有正整数因子和小于等于5的所有正整数相乘获得的整数值。本实例中,pmax为2的8次幂,其实,pmax并不限于2的正整数次幂,也可以大于其他大于4的任意整数。

以及,依据以上所述的基础矩阵和扩展因子设计方法,对于发送编码器设计中,对源信息比特序列进行ldpc编码运算,得到码字序列。根据所述基础矩阵和与所述基础矩阵hb对应的扩展因子z,对源信息比特序列进行ldpc编码运算,得到码字序列,其中,z是大于等于1的正整数。

以下所述的方式2和方式3中,都可以采用以上所述的编码方法、译码方法、交织方法和解交织方法,以及相关的算法。总结上述的编码侧交织方法:首先,对编码前信息比特进行均匀分段,每段长度为pl比特;然后,对于每一段后面添加pmax-pl比特,添加后每一段都有pmax比特;接着,对每个段进行长度为pmax的二进制比特翻转bro交织。

总结上述的编码侧反交织方法:首先,对编码后码字比特进行均匀分段,每段长度为pmax比特;接着,对每个段进行长度为pmax的二进制比特翻转bro反交织。

其中,如果按方式2进行计算获得其他扩展因子的基础矩阵,依然包括2个步骤:

步骤1.所述方式2计算公式的部分计算式,如下

其中,是最大扩展因子zvmax=1280(vmax=6)对应的基础矩阵hb6中的第i行和第j列元素;α=pmax/pl,所以α有2个数:1对应pset的第1个元素256,对应扩展因子为{256,768,1280};8对应pset的第2个元素32,对应扩展因子为{32,96,160};v=1,2,3,4,5。

可以发现所述方式2中的步骤1的方法和以上所述方式1中的步骤1的方法是相同的。所以按以上所述方式2的步骤1所述的方法计算出其他扩展因子(小于1280)的基础矩阵包括如下:

对应于α等于8的3个扩展因子的基础矩阵:hb'1,hb'2,hb'3(扩展因子分别为{32,96,160})如下:

对应于α等于1的另外2个扩展因子的基础矩阵:hb'4,hb'5(扩展因子分别为{256,768})如下:

由于α等于1,所以基础矩阵hb'4和hb'5都等于最大扩展因子的基础矩阵。

步骤2.按所述方式2的计算公式的其余计算式,如下

其中,v=1,2,3,4,5;h'ijv是扩展因子zv对应的基础矩阵hb'v中的第i行和第j列元素,zv的取值为{32,96,160,256,768},zvmax=1280。所以,依据所述步骤2计算方法,可以计算出其余5种基础矩阵(分别对应的扩展因子为{32,96,160,256,768}),如下:

对应于扩展因子32的基础矩阵hb1

对应于扩展因子96的基础矩阵hb2

对应于扩展因子160的基础矩阵hb3

对应于扩展因子256的基础矩阵hb4

对应于扩展因子768的基础矩阵hb5

所述方式2的方法的有益效果在于:可以使得多种码长可以采用同一套译码器,只需要增加很少的控制电路即可实现,也就说所述方案使得ldpc码可以支持非常灵活码长设计,解决了现有ldpc码的缺乏灵活码长的问题;以及,可以保证ldpc码的矩阵特性在由大扩展因子变为小扩展因子过程中的变化不大,从而保证了ldpc码在较大码长范围内保持比较高的译码性能。

同理,如果按方式3进行计算获得其他扩展因子的基础矩阵,依然包括2个步骤:

步骤1.所述方式3计算公式的部分计算式,如下

其中,是最大扩展因子zvmax=1280(vmax=6)对应的基础矩阵hb6中的第i行和第j列元素;α=pmax/pl,所以α有2个数:1对应pset的第1个元素256,对应扩展因子为{256,768,1280};8对应pset的第2个元素32,对应扩展因子为{32,96,160};v=1,2,3,4,5。

可以发现所述方式3中的步骤1的方法和以上所述方式1中的步骤1的方法是相同的。所以按以上所述方式3的步骤1所述的方法计算出其他扩展因子(小于1280的)的基础矩阵hb'1,hb'2,hb'3,hb'4和hb'5与以上所述方式1和方式2中的步骤1计算获得是相等的,这里不再赘述。

步骤2.按所述方式1的计算公式的其余计算式,如下

其中,v=1,2,3,4,5;是扩展因子zv对应的基础矩阵hb'v中的第i行和第j列元素,zv的取值为{32,96,160,256,768},zvmax=1280。所以,依据所述步骤2计算方法,可以计算出其余5种基础矩阵(分别对应的扩展因子为{32,96,160,256,768}),如下:

对应于扩展因子32的基础矩阵hb1

对应于扩展因子96的基础矩阵hb2

对应于扩展因子160的基础矩阵hb3

对应于扩展因子256的基础矩阵hb4

对应于扩展因子768的基础矩阵hb5

所述方式3的方法的有益效果在于:可以使得多种码长可以采用同一套译码器,只需要增加很少的控制电路即可实现,也就说所述方案使得ldpc码可以支持非常灵活码长设计,解决了现有ldpc码的缺乏灵活码长的问题;以及,可以保证ldpc码的矩阵特性在由大扩展因子变为小扩展因子过程中的变化不大,从而保证了ldpc码在较大码长范围内保持比较高的译码性能。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

实施例九

所述的ldpc码支持v种码长,每种码长都对应一个具有相同大小mb*nb的基础矩阵hb,并且每种码长的基础矩阵的对应非零方阵元素在矩阵中出现的位置都是相同的或者至多3个不同。所述的扩展因子z支持一组确定的集合{z1,z2,z3,…,zvmax},每种码长的扩展因子是所述扩展因子集合中一个元素,每种码长的对应非零方阵元素的取值都是通过最大码长的对应非零方阵元素计算得到的,即

其中,α=pmax/pl,v=1,2,….,vmax,z1,z2,z3,…,zvmax是按照从小到大排列的,zvmax是最大码长的扩展因子,zv是第v个码长的扩展因子,是最大码长的第i行和第j列的非负-1元素,hijv第v个码长的的第i行和第j列的非负-1元素。mod为取模操作,[]为下取整操作,round为四舍五入操作。所述扩展因子zv都是一个正整数值pl的n倍,即z=pl*n。其中,所述正整数值pl是子集合pset的一个元素,其中,所述子集合pset是pmax的所有正整数因子所构成集合中的一个子集,n是一个自然数,pmax是大于等于4的整数。

这里有一个更加具体的例子。

所述的pset为{10,20,40,80,120,240},即pmax=240,以及n取值为2,可以知道有6个扩展因子,扩展因子z支持一组确定的集合大小为6,即vmax=6,一组扩展因子集合为{20,40,80,160,240,480},对应的码长集合为{100,200,400,800,1200,2400},对应的最大扩展因子zvmax=480,其最大扩展因子zvmax=480对应的基础矩阵hb6为:

其中,基础矩阵hb6的维数为5行10列,可以知道,基础矩阵的行数(或者校验列数)为mb=5,基础矩阵的总列数nb=10,基础矩阵的系统列数kb=nb-mb=10-5=5,即基础矩阵的前kb=5列所构成的子矩阵是对应于系统比特的mb×kb的块a,基础矩阵的后mb=5列所构成的子矩阵是对应于校验比特的mb×mb的块b,基础矩阵hb6可以描述为[a,b];其他码长{20,40,80,160,240}下的各个基础矩阵也都分别与以上所述相同的矩阵参数(kb,nb,mb),这里不再赘述。

各种码长{100,200,400,800,1200,2400}的扩展因子是所述扩展因子集合{20,40,80,160,240,480}中一个元素,每种码长的对应非零方阵元素的取值都是通过最大码长2400的对应非零方阵元素计算得到的,即

其中,α=pmax/pl,pl是子集合pset={10,20,40,80,120,240}的一个元素,即与扩展因子集合{20,40,80,160,240,480}是一一对应的,扩展因子集合中第i0个元素等于子集合pset中第i0个元素乘以n=2,i0=1,2,…,6;所以对应于扩展因子集合{20,40,80,160,240,480}中任意扩展因子对应的α值如下{24,12,6,3,2,1};进而,依据以上所述公式可以知道对应码长为{100,200,400,800,1200}(对应扩展因子集合为{20,40,80,160,240})的基础矩阵分别如下:

对应于扩展因子20的基础矩阵hb1

对应于扩展因子40的基础矩阵hb2

对应于扩展因子80的基础矩阵hb3

对应于扩展因子160的基础矩阵hb4

对应于扩展因子240的基础矩阵hb5

或者,所述以上所述的所有基础矩阵之间至多有3个对应非零方阵元素不同,以下为例,可以发现6个基础矩阵{hb1,hb2,hb3,hb4,hb5,hb6}的两两之间至多有3个对应非零方阵元素不同,有益效果在于,既可以保证基础矩阵保留统一的基础矩阵特性(如度分布等特性),并且可以增加新的矩阵特性,以保证基础矩阵在各个码长下可以获得比较优异的性能。

对应于扩展因子20的基础矩阵hb1

对应于扩展因子40的基础矩阵hb2

对应于扩展因子80的基础矩阵hb3

对应于扩展因子160的基础矩阵hb4

对应于扩展因子240的基础矩阵hb5

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1