一种多码率兼容ldpc码的构造方法及其译码器的制作方法

文档序号:7510577阅读:228来源:国知局
专利名称:一种多码率兼容ldpc码的构造方法及其译码器的制作方法
技术领域
本发明涉及一种信道编码技术,尤其涉及一种多码率兼容LDPC码的构造方法,属于信息技术领域。
背景技术
信道编码技术作为保证通信系统可靠传输的基本技术,在近十年来得到了飞速发展,以Turbo码、LDPC码(低密度奇偶校验码)为代表的一大批性能能够逼近理论极限的信道编码相继被发现并得到深入研究,其中LDPC码在近几年尤其得到了关注,在各项通信标准的制定中,它被广泛认为能够取代Turbo码,成为下一代通信系统的主要信道编码方案。由于实际的通信系统往往需要多个速率的信道编码为不同的信道条件提供不同的纠错能力,为了降低系统的复杂度,兼容多个码率的接收机译码器必须被考虑。而作为一种线性分组码,LDPC码码率调节的灵活性低于turbo码与卷积码。
LDPC码的H矩阵必须满足下列三个条件1.H矩阵足够稀疏,即非零元素的数目远远小于矩阵中的零元素;2.H矩阵的任意两行在相同的位置上的元素‘1’至多只有一个;3.H矩阵的任意两列在相同位置上的‘1’至多只有一个。
其中后两个条件通常被称为行列约束(RC-constraint)。对于一个码长为n,码率为R的线性分组码,可以有n·(1-R)个校验位,如果其生成矩阵是满秩的,则每个校验方程对应一个校验位。如果限定每个校验和必须包括k个码元,每个码元都必须参与j个校验方程,并且k和j都是常数,则称这样的码集为规则LDPC码,记为(n,j,k)规则LDPC码。
除了可以用H矩阵来描述LDPC码外,还可以用二分图(Bipartite Graph)的方式来表示一个LDPC码的构成。如图1所示,为一LDPC码的二分图,图中的节点分为两种类型下边的节点称为变量节点(Variable Node),每个变量节点与LDPC码的一个码元相对应,所以其个数等于码长n;上边的节点称为校验节点(Check Node),与校验方程对应,其个数和码的校验矩阵H的行数(=n·(1-R))相同。变量节点vi和校验节点uj之间的连线表示与uj对应的第j校验方程中含有与vi对应的第i个码元,即H矩阵的第j行第i列为‘1’。
从图论的角度来看,相互之间有连接线的节点互为邻点(Neighbor),一个节点的邻点数量称为这个节点的维度(Degree)。如果从一个节点出发,经过不重复的边,可以回到起始节点,则经过路径上的所有的边和节点构成一个环(cycle),环的长度定义为环中包含的边数。整个图中的最短的环的长度称为图的周长(Girth)。根据LDPC码定义中提到的行列约束,LDPC码的二分图中不可能出现长度为4的环(cycle 4 free),即LDPC码的二分图的周长大于或等于6。
对于规则LDPC码来说,相同类型的节点的维度都是相同的。但在非规则LDPC码对应的二分图中,两种类型的节点的维度分别服从各自的维度分布函数,这个分布函数从总体上约束每个节点的维度。我们可以把规则LDPC码看作是非规则码的一种特殊情况。
LDPC码的结构特性是决定其性能的主要因素,这些结构特性主要包括二分图周长的大小和环的分布等。其中周长的大小起到主要作用,因此它成为LDPC码构造过程中的一个主要衡量指标。
在二分图中,LDPC码的译码算法——和积算法可以得到直观的理解。如图2所示,首先,每个变量节点以各个比特从信道中获得的软信息作为初始置信度,启动迭代译码算法。随后,每个变量节点根据上一次迭代校验节点传递来的外信息,执行和算法,并将相应的软信息传递给对应的校验节点,如果是第一次迭代,则外信息设置为0;校验节点根据接收到的软信息计算各个有连接的变量节点的外信息,并分别传递出去。最后,变量节点将所有的外信息与信道初始信息相加,得到判决信息,如果判决结果符合H矩阵校验,则停止译码,否则执行和算法,继续迭代,直至达到最大迭代次数。
常用的LDPC码译码器采用和二分图类似的结构。变量节点和校验节点在译码器中被实现为变量节点单元(VNU)与校验节点单元(CNU),边线则被实现为VNU和CNU之间的连接数据线。和算法在VNU中完成,积算法在CNU中完成,外信息通过VNU和CNU之间的数据线传递。随着节点数目的增加,VNU和CNU之间众多的数据线将形成一个复杂的网络,并且其复杂度随着节点数目的增加而指数增加。通常认为,码长超过1000比特之后,利用现有的技术手段在硬件上实现完全随机的二分图结构是力不从心的。为了简化复杂度,通常在构造LDPC码之初,就将二分图构造成准循环(Quasi-Cyclic)的形式。最常用的准循环LDPC码也被称为置换单位矩阵LDPC码,它的H矩阵如图3所示。整个H矩阵被划分为多个相同大小的子块,每个子块用经过循环移位的单位矩阵进行填充,通常称填充过程为矩阵置换,循环移位的单位矩阵则被称为置换矩阵。设子块的大小为p×p,矩阵中共有m个块行和n个块列,则该置换单位矩阵LDPC码的码长为np,码率小于或等于m/n。
如果用符号I表示单位矩阵,I(p)表示循环移位p次的单位矩阵,则置换单位矩阵LDPC码可以等效地表示为如下所示的形式H=I(p0,0)I(p0,1)LI(p0,n-1)I(p1,0)I(p1,1)LI(p1,n-1)MMOMI(pm-1,0)I(pm-1,1)LI(pm-1,n-1)]]>其中px,y表示第x行第y列的置换矩阵的循环移位偏移量,因此,图3所示的矩阵可以表示如下所示的形式00000123]]>置换单位矩阵LDPC码还具有以下几个重要性质性质1置换单位矩阵LDPC码中任意一个长度为21的环可以表示为pi0,j0,pi1,j0,pi1,j1,pi2,j1,L,pil-1,jl-1,pi0,jl-1,pi0,j0。
说明因为H矩阵中的所有‘1’都只存在于每一个置换矩阵中,因此环经过的每一条边都对应到一个唯一确定的置换矩阵,故而环路经过的路径可以用该环路经过的置换矩阵来标识。
性质2性质1中标识的长度为21的环可以简写为pi0,j0,pi1,j1,L,pil-1,jl-1,pi0,j0。
说明每一个环在矩阵中经过任意两个相邻的‘1’一定是处于同一行或同一列,因此性质1的表示方法可以被简化。
性质3置换单位矩阵LDPC码出现长度为21的环路的充要条件是Σk=0l(-1)kpik,jk=0modp,]]>其中p表示置换矩阵大小。
目前,构造置换单位矩阵LDPC码的方法可以分为规则码和非规则码两种。对于规则码,H矩阵的每一个子块都被非零的置换矩阵取代,置换矩阵的偏移量可以通过随机搜索的方法得到,也可以通过代数的方法确定,例如令pi,j=i×j;对于非规则码而言,H矩阵的子块除了被置换单位矩阵填充之外,还可以被全零矩阵填充,因此在确定每一个置换单位矩阵的偏移量之前,需要首先确定每一个置换单位矩阵的位置。所以对于非规则置换单位矩阵LDPC码,其构造步骤通常被分为两个,首先确定每一个非零置换矩阵的位置,然后再确定其偏移量。例如Block-PEG算法,首先利用PEG算法的思路,最大化环路,确定每一个非零置换矩阵的位置,然后再根据性质3的条件剔除不能被选择的偏移量,并在剩余的偏移量中进行随机挑选,完成整个置换单位矩阵LDPC码的构造过程。
在实际的系统中,通常采用系统码,即,将每个编码码字的信息比特和校验比特明确分开。系统码的校验矩阵H相应地也可以被分为校验子矩阵与信息子矩阵两部分,为了方便编码,通常将校验子矩阵定义为紧邻的双对角线形式。
置换单位矩阵LDPC码译码器需要的VNU和CNU数目大为减少,付出的代价则是降低了译码算法的并行度,一些中间计算结果需要存储在RAM中。图5中的每一个RAM对应H矩阵中的一个非零子块。每一个非零子块则对应一组连接CNU和VNU的数据线,每一个CNU负责二分图中的一组校验节点的积运算,每一个VNU负责二分图中一组变量节点的和运算。
目前,实现多码率兼容的LDPC码的方法主要分为以下三种。第一是凿孔(puncture)的方法。该方法首先构造出一个低码率的LDPC码,然后通过凿去部分校验比特,得到高码率的LDPC码。该方法的优点在于,接收端不同码率的LDPC码可以共用同一个译码器,操作起来灵活简单,缺点在于不同码率的LDPC码码长不同,并且对于有限长度,凿孔得到的多码率LDPC码性能往往不尽人意。第二种方法则是首先构造一个高码率的LDPC码,然后通过削短信息比特长度来达到调节码率的目的。这种方法得到的多码率兼容LDPC码的优点与凿孔类似,多个码率的LDPC码可以使用同一个译码器,缺点在于码长不定长,并且随着码长的缩短,性能损失严重。第三种方法是一种统一设计的方法,这也是最常用的一种方法。它主要针对于不同码率码长不变的情况,因此也称得到的多码率兼容LDPC码为CBMR-LDPC码。该方法首先设计出一个特殊的低码率LDPC码H矩阵,然后通过合并H矩阵中特定的行,达到获得高码率LDPC码的目的。如图6所示,首先构造一个1/2码率的LDPC码H矩阵,然后通过将H矩阵的行两两合并,得到一个3/4码率的LDPC码H矩阵。
显然,保持码长不变的条件下,不同码率的LDPC码具有不同的H矩阵,因此不同码率的LDPC码,它相应的二分图结构可能完全不同,相应的译码器结构,尤其是数据线网络的结构也将发生大的变化。如果一个译码器需要兼容多码率LDPC码,那么它就必须具有在不同数据线网络间切换的能力,这给硬件实现带来了很大的难度。
为了简化这一难度,在构造CBMR-LDPC码时,以下两个准则需要被遵守准则1不同码率的LDPC码的变量节点维度分布保持相同;准则2高码率LDPC码H矩阵的每一行来自于最低码率LDPC码H矩阵两行或更多行的叠加。
采用上述准则之后,高低两个码率的LDPC码二分图之间的联系如图7所示。译码器进行不同码率切换时,高码率译码器的CNU只需要将低码率译码器的两个CNU进行合并,而数据线网络无需发生变化。同时,由于变量节点的维度未发生变化,进行码率切换时,所有的VNU无需发生任何变化。
CBMR-LDPC码的优点在于,不同码率的LDPC码码长保持不变,适于LDPC码译码器的硬件实现;缺点在于,在对H矩阵的行进行两两合并时,将导致大量的短环出现,将不可避免的降低高码率LDPC码的性能。第二,为了避免在合并之后出现长度为4的环,该方法在构造低码率H矩阵时,也需要顾及到高码率LDPC码H矩阵的结构。这使得构造算法的复杂度随着码率数目的增多而急剧增加。第三,方法要求所有码率的H矩阵列重量分布保持不变,这同样对低码率H矩阵的构造增加了难度,寻找一个多码率都最佳的列重量分布也导致算法复杂度增加。

发明内容
针对目前多码率LDPC码构造方法的现状,为了在实现难度与构造复杂度之间达成平衡,本发明提出了新的构造非规则置换矩阵定长多码率LDPC码的约束条件并给出了构造多码率LDPC码的方法。该方法包括如下三个主要步骤1.初始化多码率兼容LDPC码的参数确定码长N、维度分布函数、H矩阵每一个子块的大小p以及码率序列R1,R2,R3,…,Ri,…,Rt。其中t是通信系统根据实际需要确定的码率个数,i表示H矩阵的序号,为1~t的整数,子块大小p必须能够整除正整数序列N,N(1-R1),N(1-R2),…,N(1-Ri),…,N(1-Rt),维度分布函数必须满足约束条件低码率LDPC码每个变量节点的维度不大于高码率LDPC码相应变量节点的维度。
2.采用Block-PEG算法构造出最高码率LDPC码H矩阵,作为多码率兼容LDPC码的母阵;3.以母阵为基础,按照码率由高到低的顺序重构不同码率的LDPC码H矩阵。重构过程必须满足约束条件高码率LDPC码H矩阵中0元素位置在低码率LDPC码H矩阵中依然是0元素。
其中,在步骤1中,首先需要确定的是码长、码率等参数,然后再确定H矩阵的每一个子块的大小,最后确定的是各个码率的维度分布参数。步骤1可由以下三个分步骤完成1-1,根据不同通信系统的需要,结合实际确定码长和码率参数,码长和码率参数的选择没有更多的约束条件。为了后续说明的方便,令多码率兼容LDPC码的码长为N,兼容的码率由高到低依次为R1,R2,…,Ri,…,Rt,得到各个码率的H矩阵分别为H1,H2,…,Hi,…,Ht,每个矩阵具有的行数为M1,M2,…,Mi,…,Mt,显然有M1<M2<……<Mt;1-2,根据码长和码率分布确定H矩阵的子块大小p。为了各个码率H矩阵的子块大小保持一致,必须根据各个码率H矩阵大小,选择正整数N,N(1-R1),N(1-R2),……,N(1-Rt)的最大公因数作为子块的大小p。如果最大公因数为1,那么返回步骤1-1,调整码长N,使得最大公因数为一个合适的大小。如果最大公因数过大,那么根据系统的需要,调整子块大小p至一个较小的数值,p必须能够整除N。根据p,得到N=np,M1=m1p,M2=m2p,…,Mi=mip,…,Mt=mtp,各个H矩阵可以被划分为mi×n个大小为p×p的子块,其中i表示H矩阵的序号,为1~t的整数;1-3,按照码率由高到低的顺序,根据维度分布约束条件通过密度推演或者高斯近似等传统方法分别确定各个码率H矩阵的维度分布函数。
步骤3是本发明的核心步骤,它负责将利用Block-PEG算法构造得到的母阵H1重构,得到其余低码率的H矩阵H2,H3,……,Ht。步骤3可以以最大环路准则为指导,首先确定各个H矩阵非零子块的位置,再确定各个非零子块的循环移位偏移量。其中确定非零子块的位置时等价于逐个地向二分图中添加变量节点,并为每一个变量节点寻找到与之距离最远的校验节点。
步骤3可由以下几个分步骤组成3-1,用i表示当前正在构造的H矩阵的序号,令i=1;3-2,i=i+1;3-3,统计矩阵Hi-1各块列的重量,记录下各列零元素的位置;3-4,构造矩阵Hi对应的二分图,每一个块行对应一个校验节点,每一个块列对应一个变量节点,每条边线的权重的绝对值大小等于H矩阵相应置换单位矩阵的偏移量大小,当边线起始于校验节点时则权重取为负值,起始于变量节点时,权重取为正值;其中,所述的权重的定义为如果权重绝对值为u,则权重 由于边线本身是没有方向的,因此这里的起点指的是二分图中某一条路径经过这条边线时的起点。例如,依据上述定义,就可以将前面图3中举例的矩阵表示为图5所示的二分图形式;3-5,初始化二分图,添加mi个不具有任何连接的校验节点,并按照H矩阵中的块行序号将其排序为c1,c2,……,cmi,其中每个校验节点表示矩阵Hi的一个块行,如图9所示;3-6,将mi个校验节点分为三个部分C1,C2和C3,其中C1包括矩阵Hi-1中、与当前变量节点具有直接连接的校验节点;C2则包括了序号为mi-1+1到mi的校验节点;C3则是除C1和C2之外的剩余校验节点。
显然,C1集合中包含的校验节点的序号范围1到mi-1,是上一个码率Ri-1对应的二分图中的一部分校验节点,而C2包含的则是因为码率降低,矩阵Hi对应的二分图相对于Hi-1二分图中新增加的校验节点。
3-7,向二分图中逐个添加变量节点,每一个变量节点代表矩阵Hi的一个块列,并为每一个变量节点挑选C1与C2中与根节点距离最远的校验节点进行连接,所述的距离最远的校验节点是指当将二分图树状展开到恰好包含C1与C2中所有的校验节点时,在该图中最后出现的C1与C2中的校验节点,如果有多个校验节点符合要求,优先选择C1中的节点,如果有多个C1中的节点符合要求,则随机选择其中一个。具体步骤如下A.以当前变量节点为根节点对二分图做树状展开,如图10所示;需要说明的是,这里的树状图并不是严格意义上的树,每一个节点出现且仅出现在距离根节点最近的一个位置上,因此二分图中的环在树状展开图中依然存在。
B.判断是否所有mi个校验节点都在树中如果是则进入步骤C;如果有校验节点在树外,则进入步骤D;其中,如果所有mi个校验节点都出现在树状图中,则说明二分图中所有的校验节点与根节点都是连通的,此时与任何一个校验节点建立连接,都将导致二分图中新出现一个环。为了使该环的周长最大,就要选取与根节点距离最远的校验节点建立连接。而有校验节点在树状图之外指的是,树状图展开到第L层时,该层所有校验节点相邻的变量节点都已经出现在了树状图中,此时树状图包含的校验节点数目小于mi个,则说明有校验节点与当前的根节点处于非连通的状态。
C.寻找C1与C2中与根节点距离最远的校验节点,组成集合C,优先选择C1中的节点,将挑选出来的校验节点与根节点之间建立连接,进入步骤E。
所谓距离最远,指的是如果树状图展开到第L-1层时尚未遍历C1与C2中的所有校验节点,而到第L层时C1与C2中所有的校验节点都被包含在树状图中了,那么第L层新出现的校验节点就是需要寻找的距离最远的校验节点。
D.令树外的校验节点组成集合C′,如果C′与C1或者C2的交集都是空集,那么进入步骤C,否则,从交集中随机挑选一个维度最低的校验节点与根节点建立连接。
E.遍历从根节点到步骤C或D挑选出的校验节点之间的路径,计算这些路径经过的边线的权重累加值s;其中,如果路径长度为2l,则累加权重s=Σk=0l-1uk=Σk=0l-1(-1)lu.]]>F.求取权重绝对值候选集合X={x|(s-x)modp≠0,0≤x<p}。上述步骤C或D挑选出的校验节点如果已经出现在树状图中,那么根节点与之建立连接之后,二分图中将新出现一条环路,该环路经过的最后一条边线起点就是步骤C或D挑选出的校验节点。如果设该边线的权重绝对值为x,那么环路的累加权重就等于s-x。根据置换单位矩阵LDPC码的性质,二分图出现一条相等长度环路的充要条件是(s-x)modp=0,因此只要能够保证权重绝对值x符合条件(s-x)modp≠0就能够避免在H矩阵中出现与二分图中新环路长度相等的环。所以权重绝对值的候选集合定义为X={x|(s-x)modp≠0,0≤x<p}。
G.从候选权重集合中挑选出合适的权重绝对值赋予新建立的边线。确定合适权重绝对值的方法有两种,一是从候选权重绝对值集合中随机挑选,这样能够在一定程度上保证H矩阵的随机性,并且足够简单;二是首先从候选权重绝对值集合X中挑选出绝对值集合Y,Y中的所有数值y满足(s-y)modp与p互素,再从Y中随机选择一个数值作为边线的权重绝对值。如果集合Y为空,那么就从X选取出一个数值z,使得(s-z)modp与p的公因数最小,这一种方法能够确保每次新出现的环路周长最大。
H.根节点和步骤C或D挑选出的校验节点的当前维度加1;3-8,判断是否已经为当前变量节点建立符合维度分布需要的所有连接,如果没有则返回步骤3-6,否则进入步骤3-9;3-9,检查是否已经添加完所有n个变量节点,如果没有则返回步骤3-7,否则进入步骤3-10;3-10,判断r是否小于t,如果是则构造结束,否则进入步骤3-2。
相比于CBMR-LDPC码,本发明提供的构造方法的复杂度更低。从维度分布的约束条件来看,本发明给出了一个更为宽松的维度分布约束条件,极大地简化多码率LDPC码的维度分布搜索难度。只要确定了最高码率的LDPC码变量节点维度分布,就可以此维度分布为约束条件,可以很方便地对每个码率的维度分布进行搜索。从重构的约束条件来看,与CBMR-LDPC码遵守的准则2相反,本发明的约束条件要求首先构造最高码率的LDPC码H矩阵,并以该矩阵为初始矩阵,将其扩展为低码率H矩阵大小,并对其中的非零元素的位置进行重构,得到低码率的LDPC码H矩阵,使得各个码率的H矩阵可以被相对独立的构造,不需要整体考虑所有矩阵环路,极大地降低了复杂度。本发明提供的构造多码率兼容LDPC码的方法的总流程如图8所示。
同样地,定长多码率置换矩阵LDPC系统码的方法与上述的定长多码率置换矩阵LDPC非系统码的方法类似。当一个线性分组码是系统码时,它的H矩阵可以很显著地被分为校验比特子矩阵部分和信息比特子矩阵部分。通常,我们将校验比特子矩阵部分规定成一个特定的形式,然后再对信息比特子矩阵进行构造。对于上述构造方法而言,如果要构造置换矩阵LDPC系统码,就需要将二分图的初始条件定义为校验比特子矩阵的初始形态,然后再依据原有的算法,对信息比特子矩阵进行构造。即构造方法主要分为两个阶段,第一阶段按照预知的校验比特子矩阵初始化二分图;第二个阶段构造信息比特子矩阵部分。
在第一阶段,首先将每一个校验比特子矩阵包含的mi个变量节点和所有校验节点排列成一个“之”字形式,如图11(图中标有p的变量节点对应校验比特子矩阵的变量节点)。这样既能够保证校验比特之间具有校验关系,又能够保证二分图中无环。同时,二分图中所有边线的权值都被置为0,以保证校验子矩阵的所有非零子块都由单位矩阵填充,并且主对角线所有元素都是1,这样的结构能够降低系统码的编码复杂度。在对校验子矩阵进行上述排列之后,由于校验子矩阵的最后一个变量节点只与最后一个校验节点具有连接,因此校验子矩阵右下角的一个子块对应的所有校验比特都只参加了一个校验方程,如图12,这样的结构将严重恶化码的性能,所以在校验比特子矩阵的右上角填充一个非零矩阵,该非零矩阵通过大小为p×p的单位矩阵右循环移位p-1次,并将第一行的非零元素调整为0得到。为了避免出现长度为4的环,并使得二分图环路最大,该子块填充的子矩阵偏移量选择为大于0小于p的任意值。为了保证系统码编码的顺利进行,再将该子块第一行的元素1替换为0,这样在校验子矩阵中实际上并没有环路出现。最终得到的校验比特子矩阵部分具有如图13所示的二分图结构,图中虚线的意义表示该子块中有且仅有一行的元素‘1’被替换为‘0’,被替换的行位置可以任意选定,其中二分图的每一个变量节点对应的都是H矩阵的一个块列,每一个校验节点对应的都是H矩阵的一个块行,最后填充进的特殊子矩阵由于不是一个完整的单位矩阵,因此其连线被标记为虚线,它对应的子块形式如下所示
000100010]]>最终得到的校验比特子矩阵如图14。
由于每一个码率的校验比特子矩阵部分保持了分块特性,并且已经在第一阶段构造了环路最大化的二分图,因此在第二阶段,它们各自的信息比特子矩阵部分的构造方法可以完全沿袭构造非系统码的方法中相应的步骤。
本发明的另一个目的在于提供与上述方法相适应的多码率兼容的LDPC码译码器。该译码器在结构上仅仅需要对现有的单码率译码器做少许改动,结合上述方法构造得到定长多码率LDPC码,就可以实现多码率兼容的目的。图15是该译码器的结构框图如图15所示,为译码器的结构示意图。译码器包括控制模块(Controller)、变量节点计算单元(VNU)、校验节点计算单元(CNU)以及外信息存储器(Memory)。其中,控制模块用于控制整个译码器的时序逻辑;外信息存储器用于存储迭代译码过程中计算得到的外信息,其大小取决于H矩阵中每一个分块的大小以及分块的个数;变量节点计算单元用于实现LDPC译码器最小和算法的和算法运算,并判决出每一个比特输出,供校验节点单元使用;校验节点计算单元,用于实现LDPC译码器最小和算法中的求取最小值的运算,并输出校验方程的校验结果。控制模块与CNU和VNU之间分别通过一组数据线连接,与存储器之间则通过一组读写控制信号线连接。各个CNU、VNU和存储器之间则分别通过四组读写数据线进行连接。本发明的多速率兼容的译码器的特点在于存储器的设计,存储器一系列大小为p个量化宽度的RAM组成,其中一部分RAM具有多端口连接,同时连接在多个CNU上,在不同的码率时由不同的CNU进行读写。
本发明的技术效果在于,上述构造方法得到多码率LDPC码与CBMR-LDPC码相比,具有构造更简单、硬件实现复杂度不高、码性能更优越的优点。这主要是因为CBMR-LDPC码在构造高码率LDPC码时,合并的低码率H矩阵中的行数过多,形成了大量的短环,降低了LDPC码的误码性能;同时该算法在构造最低码率LDPC码时必须同时考虑各个码率的约束,能够构造出来的码率数目不可能太多,算法复杂度太高。同时,新的方法构造的多码率兼容LDPC码在性能上与单码率LDPC码的性能几乎完全相同,浮点仿真结果如图16所示。
同时,在构造过程中,仅仅是置换矩阵的位置在选择时受到了多码率条件的约束,因此新构造方法得到的多码率LDPC码,每个置换矩阵的偏移量选择过程与单码率LDPC码完全相同,也就是说同一次构造得到的同一个置换矩阵位置选择结果,可以同时适用于不同置换矩阵大小的参数,这使得本方法可以构造出码长灵活变化的多码率LDPC码,这些多码长多码率LDPC码可以在同一个FPGA平台上进行译码器的实现,与CBMR-LDPC码相比,本发明的复杂度明显较低,性能明显较好。
最后,本发明提出的译码器设计及实现方案具有以下两个主要的特点其一是译码器中实现了一些具有特殊接口的RAM,随着码率的不同,由不同的CNU进行控制,既节省存储资源,又能够在单码率译码器基础上仅通过不大的改动实现多码率兼容的LDPC码译码器。实现方案的第二个主要特点是将译码器的外信息存储单元按照最长码率的RAM需要进行设置,就可将定长多码率兼容LDPC码译码器改进为一种适应不同码长变化的多码率兼容LDPC码译码器,在不同码长之间切换时,仅需要改变RAM的最大读写深度。


图1是LDPC码二分图表示的示意图;图2是LDPC码译码示意图;图3是置换单位矩阵LDPC码H矩阵示意图;图4是基于块的有权重二分图;图5是常用的LDPC码译码器示意图;图6是CBMR-LDPC码H矩阵构造示意图;图7是CBMR-LDPC码译码器实现示意图;图8是非规则置换矩阵LDPC码构造方法的流程图;图9是以块为单位初始化的二分图;图10表示以当前变量节点为根节点做树状展开的示意图;图11是系统码的初始二分图;图12是系统码校验比特子矩阵常识结构示意图;图13是经过优化的系统码校验比特子矩阵的二分图;图14是经过优化的系统码校验比特子矩阵示意图;图15是译码器的结构示意图;图16是误比特率浮点仿真性能对比曲线;图17是8064比特各个码率系统码初始二分图;图18是不同码率之间H矩阵关系示意19是多码率兼容LDPC码RAM与计算单元连接示意20是译码器控制模块硬件实现图;图21是变量节点单元硬件实现图;图22是校验节点单元硬件实现图;图23是译码器控制模块输入缓存子模块硬件实现图;图24是译码器控制模块时序控制子模块硬件实现图;图25是译码器控制模块输出缓存子模块硬件实现图;具体实施方式
下面通过实施例,结合附图进一步说明本发明,但不以任何方式限制本发明的范围。
实施例1构造定长非规则多码率置换矩阵LDPC码以下具体描述利用本发明所述的构造方法,构造一个码长为8064比特,码率为7/8,3/4,1/2的多码率LDPC系统码的过程步骤一,确定H矩阵的参数。已知码长N=8064,则码率为7/8时校验方程数目M=1008,码率为3/4时校验方程数目M=2016,码率为1/2时校验方程数目为4032,则H矩阵的大小分别为1008×8064,2016×8064,4032×8064。分别求取M、N的因子,我们可以得到N=112×72,M1=112×9,M2=112×18,M3=112×36,故而我们可以选择每一个子块的大小为112×112,不同码率H矩阵可以分别被分为9×72,18×72,36×72个子块;步骤二,利用密度推演方法确定R1=7/8时H矩阵的维度分布。确定变量节点的维度分布函数为λ(x)=0.125x+0.492x2+0.383x6,即维度为2的变量节点连接的边线占所有边线总数的12.5%,维度为3的变量节点连接的边线占所有边线总数的49.2%,维度为7的变量节点连接的边线占边线总数的38.3%。
步骤三利用Block-PEG算法构造码率R1=7/8对应的H矩阵H1;步骤四统计H1矩阵中各块列的重量,作为H2矩阵信息比特部分的维度分布。
步骤五根据前面的计算结果,可以得到码率R2=3/4时,二分图中的每一个变量节点实际对应H矩阵中的一个块列,每一个校验节点实际对应H矩阵中的一个块行。整个H矩阵总共有18个校验节点,72个变量节点。边线的维度分布参数在步骤二中已经给出,由于每一个子块的大小为112×112,因此每条边线的权重取值范围为0~111;步骤六,初始化二分图,首先向二分图中放置18个没有任何连接的校验节点,然后初始化校验比特子矩阵部分,将校验比特子矩阵部分对应的18个维度为2的变量节点在二分图中放置为图17所示的形式,除一条边线权重绝对值为111之外,其余边线权重都为0;步骤七,向二分图中逐个添加新的变量节点A,将18个校验节点分为三组,一组为相比于码率R1,新增加的校验节点,即第10到第18个校验节点;另外一组为在矩阵H1中,当前变量节点具有连接的校验节点,毫无疑问,这些校验节点是第1个校验节点到第九个之间的一部分;剩下的校验节点组成第三组。
B,以当前变量节点为根节点在二分图中做树状展开;C,在二分图中挑选一个校验节点建立连接如果所有的校验节点都在二分图中,那么就挑选距离根节点最远,当前维度最低并且属于步骤A划分的前两组中的校验节点;如果有校验节点不在树中,那么就挑选不在树中,当前维度最低并且属于步骤A划分的前两组中的校验节点。
D,遍历从根节点到步骤c)中选中的校验节点之间所有路径,并分别计算其权重累加值s=Σk=0l-1uk=Σk=0l-1(-1)lu,]]>E,计算候选权重集合X={x|(s-x)modp≠0,0≤x<p},这里p等于112;F,从候选权重集合中挑选一个作为新建立边线的权重一种方式是随机挑选;另外一种方式是从X中挑选一个权重,使得路径的累加权重值与112的最大公因数为1;G,变量节点的当前维度加1;步骤八,判断是否已经达到步骤三初始化的变量节点最大维度。如果已经达到,则进入下一步骤,否则返回步骤七;步骤九,判断72个变量节点是否已经全部添加完毕,否则返回步骤七;步骤十统计H2矩阵中各块列的重量,作为H3矩阵信息比特部分的维度分布。
步骤十一根据前面的计算结果,可以得到码率R2=1/2时,二分图中的每一个变量节点实际对应H矩阵中的一个块列,每一个校验节点实际对应H矩阵中的一个块行。整个H矩阵总共有36个校验节点,72个变量节点。边线的维度分布参数在步骤二中已经给出,由于每一个子块的大小为112×112,因此每条边线的权重取值范围为0~111;步骤十二,初始化二分图,首先向二分图中放置36个没有任何连接的校验节点,然后初始化校验比特子矩阵部分,将校验比特子矩阵部分对应的36个维度为2的变量节点在二分图中放置为图17所示的形式,除一条边线权重绝对值为111之外,其余边线权重都为0;步骤十三,向二分图中逐个添加新的变量节点H,将36个校验节点分为三组,一组为相比于码率R1,新增加的校验节点,即第19到第36个校验节点;另外一组为在矩阵H1中,当前变量节点具有连接的校验节点,毫无疑问,这些校验节点是第1个校验节点到第18个之间的一部分;剩下的校验节点组成第三组。
I,以当前变量节点为根节点在二分图中做树状展开;J,在二分图中挑选一个校验节点建立连接如果所有的校验节点都在二分图中,那么就挑选距离根节点最远,当前维度最低并且属于步骤A划分的前两组中的校验节点;如果有校验节点不在树中,那么就挑选不在树中,当前维度最低并且属于步骤A划分的前两组中的校验节点。
K,遍历从根节点到步骤c)中选中的校验节点之间所有路径,并分别计算其权重累加值s=Σk=0l-1uk=Σk=0l-1(-1)lu,]]>L,计算候选权重集合X={x|(s-x)modp≠0,0≤x<p},这里p等于112;M,从候选权重集合中挑选一个作为新建立边线的权重一种方式是随机挑选;另外一种方式是从X中挑选一个权重,使得路径的累加权重值与112的最大公因数为1;N,变量节点的当前维度加1;步骤十四,判断是否已经达到步骤三初始化的变量节点最大维度。如果已经达到,则进入下一步骤,否则返回步骤十三;步骤十五,判断72个变量节点是否已经全部添加完毕,否则返回步骤十四;构造结束。
实施例2译码器译码器的整体结构如图15所示,它可以被划分为Controller(控制模块),Memory(存储器),VNU(变量节点计算单元)以及CNU(校验节点计算单元)四个部分。
其中变量节点计算单元总共需要72个,校验节点计算单元总共需要45个,译码算法可以采用和积算法的简化算法——最小和算法。由于构造得到的多码率H矩阵中码率为7/8的H矩阵的非零置换矩阵共有279个,其它码率的H矩阵均由该矩阵拆分而来,因此多码率译码器解码率为7/8的码字时共需要279个大小为112×7bits(这里取量化宽度为7)的双端口RAM,当码率为其它值时译码器复用这279个双端口RAM,它们作为存储单元在解码时提供中间数据给变量节点计算单元和校验节点计算单元用于计算。其中有180个RAM需要在不同码率工作时为不同的CNU提供读写,如图18所示,这180个RAM在H矩阵对应非零子矩阵的位置随着码率不同而发生变化,但是它们的位置变化仅仅是在同一列中变化,即同一个VNU的连接关系不发生任何的变化,而同一个RAM则需要连接不同的CNU,当工作在不同的码率时,它们为不同的CNU提供数据读写功能,如图19所示。
如图20所示,控制模块主要分为输入缓存(Receiver)、时序控制(DecoderCore)以及输出缓存(Output)三个子模块来实现。其中输入缓存作为译码器的输入接口,处于译码器的最外端,接收存储信道信息,并在译码阶段提供信道信息帮助译码,本实施例中该模块总共需要2个大小为8064×7bits的缓冲存储器,它们被分为两组,交替接收外部输入信息;时序控制模块则是译码器的核心控制模块,它负责协调所有的变量节点和校验节点计算单元在正确的时刻开始计算,为所有的存储器提供读写地址并保证存储器正确地读写中间计算数据;输出缓存则在译码完成之后,为所有的信息比特输出提供缓存,并在译码阶段中保存每次迭代判决之后的暂时结果。
72个变量节点计算单元并行实现LDPC译码器最小和算法的和算法运算。在每次迭代译码时,一个变量节点计算单元每次最多能接收1个信道信息和7个译码外信息,进行和运算后归一化(3/4)限幅输出,输出同时将本次译码硬判决结果作为外信息前缀加在输出信息首位,另给一个1位宽端口输出译码硬判决结果。主要的运算分两级完成第一级分别以5个、4个数相加求和;第二级首先完成第一级的两个和值的求和sum,在分别减去8个外信息软值,并进行限幅完成和运算,最后以sum的首位(译码结果)作为前缀输出8个和运算后的外信息。具体的实现模块如图21所示。
45个校验节点计算单元并行实现LDPC译码器最小和算法的最小和算法运算。进行迭代译码时,校验节点计算单元一次最多能接收31个译码外信息,进行最小和运算找到最小及次最小值后对应输出;该过程中同时利用软信息前的上次迭代译码硬信息前缀进行校验和check,用1位宽端口输出check结果。主要运算分六级完成第一级分别以2个、2个数求最小和、次最小和运算;第二级完成第一级的16个值的求最小和min、次最小和hypomin运算;第三级完成第一级的8个值的求求最小和min、次最小和hypomin运算;第四级完成第一级的4个值的求求最小和min、次最小和hypomin运算;第五级完成第一级的2个值的求求最小和min、次最小和hypomin运算;第六级分别用31个软信息的绝对值与min比较,如果相等,择取hypomin,否则取min,得到31个值添加上符号输出。具体的实现模块如图22所示。
在译码器的初始工作阶段,控制模块直接控制的输入缓存首先顺序接收一个码字,直到接收完成之后进入译码实施阶段。输入缓存将已经接收完毕的输入缓冲器提供给译码时序控制模块,供其在译码时读取。同时输入缓存启动另外一个输入缓冲器等待接收新的输入信息,如图23所示。
接收完毕的一个码字进入译码阶段之后,译码时序控制模块(DecoderCore)首先控制第一个码字进入和运算阶段,此时第二个码字开始输入。随后第一个码字进入最小值求取运算和和运算阶段,直至达到最大迭代次数或者其符合了校验方程的约束。该模块控制整个译码器在迭代译码阶段的时序,输出VNU单元、CNU单元的使能信号以及不同偏移量的双端口RAM的读地址信号。该模块主要包含一个状态机、一个地址发生器以及必要的组合逻辑驱动控制信号,硬件实现框图如图24所示。
输出缓存模块主要通过两组输出缓存RAM(每一组大小为1×8064比特)交替地提供给译码时序控制模块使用,在迭代解码结束时进行输出。该模块的设计思路类似于输入缓存模块。在迭代译码正在进行时,输出缓存模块提供一组共1个大小为8064比特RAM,用于存储变量节点计算单元得到的判决比特,当迭代译码结束,该模块就将存储在RAM中的判决比特作为译码结果依次输出,同时将另外一组缓存RAM交由译码时序控制模块控制,用于新进入译码器的1个码字的解码。其硬件的具体结构参照图25。
权利要求
1.一种多码率兼容LDPC码的构造方法,包括如下步骤(1)初始化多码率兼容LDPC码参数确定码长N、维度分布函数、H矩阵每一个子块的大小p以及码率序列R1,R2,R3,…,Ri,…,Rt,其中t是通信系统根据实际需要确定的码率个数,i表示H矩阵的序号,为1~t的整数,子块大小p能够整除正整数序列N,N(1-R1),N(1-R2),…,N(1-Ri),…,N(1-Rt),维度分布函数满足约束条件1低码率LDPC码每个变量节点的维度不大于高码率LDPC码相应变量节点的维度;(2)采用Block-PEG算法构造出最高码率LDPC码H矩阵,作为多码率兼容LDPC码的母阵;(3)以母阵为基础,按照码率由高到低的顺序重构不同码率的LDPC码H矩阵,重构过程满足约束条件2高码率LDPC码H矩阵中0元素位置在低码率LDPC码H矩阵中依然是0元素。
2.如权利要求1所述的多码率兼容LDPC码的构造方法,其特征在于,所述步骤(1)分为下列三个分步骤1-1.确定码长N和码率,将兼容的码率由高到低依次排序为R1,R2,…,Ri,…,Rt,得到各个码率的H矩阵分别为H1,H2,…,Hi,…,Ht,每个矩阵具有的行数为M1,M2,…,Mi,…,Mt,则M1<M2<……<Mt;1-2.选择正整数N,N(1-R1),N(1-R2),……,N(1-Rt)的最大公因数作为H矩阵的子块大小p,根据p,得到N=np,M1=m1p,M2=m2p,…,Mi=mip,…,Mt=mtp,各个H矩阵被划分为mi×n个大小为p×p的子块;1-3.按照码率由高到低的顺序,根据约束条件1分别确定各个码率H矩阵的维度分布函数。
3.如权利要求2所述的多码率兼容LDPC码的构造方法,其特征在于,所述步骤1-3通过密度推演或者高斯近似方法确定各个码率H矩阵的维度分布函数。
4.如权利要求2所述的多码率兼容LDPC码的构造方法,其特征在于,所述的LDPC码是系统码,将其H矩阵分为校验比特子矩阵部分和信息比特子矩阵部分,在构造校验比特子矩阵部分时首先将每一个校验比特子矩阵包含的mi个变量节点和所有校验节点排列成一个“之”字形式,然后在校验比特子矩阵的右上角填充一个特殊的非零矩阵,该非零矩阵通过大小为p×p的单位矩阵右循环移位p-1次,并将第一行的非零元素调整为0得到。
5.如权利要求1~4中任一项权利要求所述的多码率兼容LDPC码的构造方法,其特征在于,所述步骤(3)遵循最大环路准则,首先确定各个H矩阵非零子块的位置,再确定各个非零子块的循环移位偏移量。
6.如权利要求5所述的多码率兼容LDPC码的构造方法,其特征在于,确定各个H矩阵非零子块的位置的方法包括下列步骤1)构造当前码率的Hi矩阵对应的二分图,每一个块行对应一个校验节点,每一个块列对应一个变量节点;2)逐个地向当前二分图中添加变量节点;3)将当前二分图的所有校验节点分为三个部分C1,C2和C3,其中C1包括矩阵Hi-1中、与当前变量节点具有连接的校验节点,C2则包括了矩阵Hi相对于Hi-1新增加的校验节点,C3则是除C1和C2之外的剩余校验节点;4)寻找C1与C2中与根节点距离最远的校验节点,所述的距离最远的校验节点是指当将二分图树状展开到恰好包含C1与C2中所有的校验节点时,在该图中最后出现的C1与C2中的校验节点,如果这样的校验节点有多个,优先选择C1中的节点,如果C1中包含多个的这样的节点,则随机选择其中一个;5)将当前变量节点与寻找到的校验节点建立连接。
7.一种多码率兼容的LDPC码译码器,包括一个控制模块、一个外信息存储器、多个变量节点计算单元和多个校验节点计算单元,其中控制模块控制整个译码器的时序逻辑;外信息存储器存储迭代译码过程中计算得到的外信息,其大小取决于H矩阵中每一个分块的大小以及分块的个数;变量节点计算单元实现LDPC译码器最小和算法的和算法运算,并判决出每一个比特输出,供校验节点单元使用;校验节点计算单元实现LDPC译码器最小和算法中的求取最小值的运算,并输出校验方程的校验结果;控制模块与校验节点计算单元和变量节点计算单元之间分别通过一组数据线连接;控制模块与外信息存储器之间通过一组读写控制信号线连接;各个校验节点计算单元、变量节点计算单元和外信息存储器之间则分别通过四组读写数据线进行连接;其特征在于外信息存储器由一系列大小为p个量化宽度的RAM组成,其中一部分RAM具有多端口连接,同时连接在多个校验节点计算单元上,在不同的码率时由不同的校验节点计算单元进行读写,其中p代表码长N、码率序列R1,R2,R3,……,Rt的H矩阵每一个子块的大小,p能够整除正整数序列N,N(1-R1),N(1-R2),……,N(1-Rt)。
全文摘要
本发明提供了一种多码率兼容LDPC码的构造方法,首先按码率由高到低进行排序,维度分布遵循约束条件低码率LDPC码每个变量节点的维度不大于高码率码相应变量节点的维度;然后利用Block-PEG算法构造出最高码率LDPC码H矩阵;以该矩阵为基准,按照码率由高到低的顺序重构不同码率的H矩阵,重构遵循约束条件高码率LDPC码H矩阵中0元素位置在低码率H矩阵中依然是0元素。该方法得到多码率LDPC码与CBMR-LDPC码相比,构造更简单,硬件实现复杂度不高,码性能更优越。本发明还提供了一种相应的译码器,通过一些具有多端口的RAM同时连接多个CNU,节省了存储资源,易于实现且可以适应不同码长变化。
文档编号H03M13/11GK101047387SQ20071009000
公开日2007年10月3日 申请日期2007年3月23日 优先权日2007年3月23日
发明者乔华, 管武, 董明科, 梁庆林, 项海格 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1