CN1794621A - 非规则置换矩阵ldpc码的构造方法及装置 - Google Patents
非规则置换矩阵ldpc码的构造方法及装置 Download PDFInfo
- Publication number
- CN1794621A CN1794621A CN 200610011170 CN200610011170A CN1794621A CN 1794621 A CN1794621 A CN 1794621A CN 200610011170 CN200610011170 CN 200610011170 CN 200610011170 A CN200610011170 A CN 200610011170A CN 1794621 A CN1794621 A CN 1794621A
- Authority
- CN
- China
- Prior art keywords
- node
- check
- matrix
- bit
- weight
- 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
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
一种新的构造非规则置换矩阵LDPC码的方法,该方法与目前其它构造非规则置换单位矩阵LDPC码的方法不同,它的最大特点是在最小环路最大化的准则下,以每个子块为最小单元,利用带权重的二分图确定每一个子块的位置和循环移位偏移量大小。其具体的思路就是,首先根据置换单位矩阵的特点,将LDPC码的以比特为单位的二分图简化为以子块为单位的二分图;再将传统的以比特为单位的PEG算法应用到新的以子块为单位的二分图中,确定H矩阵每一个置换单位矩阵的位置;最后利用置换单位矩阵LDPC码的环路特性,确定每一个置换单位矩阵的循环移位偏移量。
Description
技术领域
本发明涉及一种信道编码技术,尤其是一种最小环路最大化的非规则置换矩阵LDPC码的构造方法,属于信息技术领域。
背景技术
信道编码技术作为保证通信系统可靠传输的基本技术,在近十年来得到了飞速发展,以Turbo码、LDPC码(低密度奇偶校验码)为代表的一大批性能能够逼近理论极限的信道编码相继被发现并得到深入研究,其中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 4free),即LDPC码的二分图的周长大于或等于6。
对于规则LDPC码来说,相同类型的节点的维度都是相同的。但在非规则LDPC码对应的二分图中,两种类型的节点的维度分别服从各自的维度分布函数,这个分布函数从总体上约束每个节点的维度。我们可以把规则LDPC码看作是非规则码的一种特殊情况。
LDPC码的结构特性是决定其性能的主要因素,这些结构特性主要包括:二分图周长的大小和环的分布等。其中周长的大小起到主要作用,因此它成为LDPC码构造过程中的一个主要衡量指标。
由于LDPC码是通过其稀疏校验矩阵H定义的,因此按照H矩阵的结构分类,当前主要的构造LDPC码的方法可以分为两类:随机的和结构化的。利用随机方法得到的LDPC码具有非常随机的结构,因此通常实用的难度很大,这类LDPC码大多也只是用于理论研究;结构化的构造方法则主要着眼于降低LDPC码的实用难度,通常在性能上比随机LDPC码要差一些。
随机的构造方式主要有:随机搜索、PEG(渐进的边线增长)算法和bit-filling(比特填充)算法等。其中PEG算法是在中等码长条件下,以二分图为基础,向图中逐比特添加变量节点的一种构造算法。它的构造准则非常明确——构造周长尽可能大的LDPC码。在执行算法之前,首先确定LDPC码的码长n、校验方程数m以及维度分布。然后再按照H矩阵的顺序,逐列向H矩阵中填充元素‘1’,这一填充过程对应到二分图中就是向二分图中增加新的一个变量节点,并逐边线为该变量节点添加边线的过程。对每一个变量节点添加新的边线时,PEG算法都要经过二分图树状展开、挑选校验节点建立连接、更新维度等步骤。
PEG算法在理论上可以用于构造任意码长,任意码率的LDPC码,但是当码长n增长到一定长度之后,每次做二分图树状展开的运算量是非常巨大的,因此通常只将PEG算法用于码长在10000bits以下的LDPC码的构造。PEG算法构造得到的LDPC码在性能上优于目前已知的大部分同等参数的LDPC码,因此它被认为是能够构造出中等码长以下的最优LDPC码。
尽管PEG算法构造的LDPC码性能优异,但是由于得到的H矩阵依旧是非常随机的,非常不利于编解码器的硬件实现,因此各种结构化的设计LDPC码的方法得到了深入研究。结构化方法可以分为两类:一类以有限几何方法,BIBD(平衡不完全区块设计)方法为代表,它们主要从一些成熟的数学理论出发,构造出符合行列约束的稀疏矩阵,这一类方法得到的LDPC码都具有循环或准循环结构,规则的维度分布,但它们可构造的码集参数不连续,码长码率等参数必须符合数学理论的要求,性能也比PEG-LDPC码要差。另外一类结构化构造方法主要是置换矩阵方法,它虽然依旧不是任意参数都可构造,但它仅要求码长和校验方程数目之间存在一个合适大小的公因数,因此其可构造的参数范围远远大于有限几何和BIBD方法。
最基本的置换矩阵LDPC码就是置换单位矩阵LDPC码,它的H矩阵如图2所示。整个H矩阵被划分为多个相同大小的子块,每个子块用经过循环移位的单位矩阵进行填充,通常称填充过程为矩阵置换,循环移位的单位矩阵则被称为置换矩阵。设子块的大小为p×p,矩阵中共有m个块行和n个块列,则该置换单位矩阵LDPC码的码长为np,码率小于或等于m/n。
如果用符号I表示单位矩阵,I(p)表示循环移位p次的单位矩阵,则置换单位矩阵LDPC码可以等效地表示为如图3的形式。其中Px,y表示第x行第y列的置换矩阵的循环移位偏移量,因此,图2所示的矩阵可以表示为图4的形式。
目前,构造置换单位矩阵LDPC码的方法可以分为规则码和非规则码两种。对于规则码,H矩阵的每一个子块都被非零的置换矩阵取代,置换矩阵的偏移量可以通过随机搜索的方法得到,也可以通过代数的方法确定,例如令pi,j=i×j;对于非规则码而言,H矩阵的子块除了被置换单位矩阵填充之外,还可以被全零矩阵填充,因此在确定每一个置换单位矩阵的偏移量之前,需要首先确定每一个置换单位矩阵的位置。所以对于非规则置换单位矩阵LDPC码,每一个置换矩阵的位置通常首先被随机确定,然后再随机搜索其偏移量。
在实际的系统中,通常采用系统码,即,将每个编码码字的信息比特和校验比特明确分开。系统码的校验矩阵H相应地也可以被分为校验子矩阵与信息子矩阵两部分,为了方便编码,通常将校验子矩阵定义为紧邻的双对角线形式。
置换单位矩阵LDPC码还具有以下几个重要性质:
性质1:置换单位矩阵LDPC码中任意一个长度为2l的环可以表示为pi0,j0,pi1,j0,pi1,j1,pi2,j1,…,pil-1,jl-1,pi0,jl-1,pi0,j0。
说明:因为H矩阵中的所有‘1’都只存在于每一个置换矩阵中,因此环经过的每一条边都对应到一个唯一确定的置换矩阵,故而环路经过的路径可以用该环路经过的置换矩阵来标识。
性质2:性质1中标识的长度为21的环可以简写为pi0,j0,pi1,j1,…,pil-1,jl-1,pi0,j0。
说明:每一个环在矩阵中经过任意两个相邻的‘1’一定是处于同一行或同一列,因此性质1的表示方法可以被简化。
性质3:置换单位矩阵LDPC码出现长度为21的环路的充要条件是: 其中p表示置换矩阵大小。
现有的各种置换单位矩阵方法主要存在的困难有二。一是在性能上,目前大多数的置换矩阵LDPC码都比PEG-LDPC码要差,这给置换单位矩阵LDPC码的应用带来了很大的不确定性;二是在日常的应用中通常采用系统码,传统置换单位矩阵LDPC系统码采取了紧邻的双对角线形式,这种形式的系统码破坏了整个H矩阵的分块结构,虽然为编解码提供了便利,但也提高了译码器的实现复杂度。
发明内容
针对目前LDPC码构造方法的现状,本发明提出了一种新的构造非规则置换矩阵LDPC码的方法,该方法与目前其它构造非规则置换单位矩阵LDPC码的方法不同,它的最大特点是在最小环路最大化的准则下,以每个子块为最小单元,利用带权重的二分图确定每一个子块的位置和循环移位偏移量大小。其具体的思路就是,首先根据置换单位矩阵的特点,将LDPC码的以比特为单位的二分图简化为以子块为单位的二分图;再将传统的以比特为单位的PEG算法应用到新的以子块为单位的二分图中,确定H矩阵每一个置换单位矩阵的位置;最后利用置换单位矩阵LDPC码的环路特性,确定每一个置换单位矩阵的循环移位偏移量。
下面首先介绍构造非规则置换单位矩阵LDPC非系统码的方法,它的主要步骤如下,算法的流程图如图6所示:
1)确定码长N=np,校验方程数目M=mp,则可以将H矩阵划分为m×n个大小为p×p的子块,每一个子块都可以用置换单位矩阵或者全零矩阵填充;
2)确定H矩阵的每一个块列的维度分布,所述的块列指的是由步骤1)确定的子块组成的列,其中,常见的确定H矩阵块列的纬度分布的方法包括传统的密度推演方法,也可以是其他优化算法;
3)构造二分图,每一个块行(即由步骤1)确定的子块组成的行)对应一个校验节点,每一个块列对应一个变量节点,每条边线的权重的绝对值大小等于H矩阵相应置换单位矩阵的偏移量大小,当边线起始于校验节点时则权重取为负值,起始于变量节点时,权重取为正值;
其中,所述的权重的定义为:如果权重绝对值为u,则权重:
由于边线本身是没有方向的,因此这里的起点指的是二分图中某一条路径经过这条边线时的起点。例如,依据上述定义,就可以将前面图2中举例的矩阵表示为图5所示的二分图形式;
4)初始化二分图,添加m个不具有任何连接的校验节点,每一个校验节点表示的是H矩阵的一个块行,如图7所示;
5)向二分图中逐个添加变量节点,每一个变量节点代表H矩阵的一个块列,并为每一个变量节点挑选校验节点进行连接,具体步骤如下:
A.以当前变量节点为根节点对二分图做树状展开,如图8所示;需要说明的是,这里的树状图并不是严格意义上的树,每一个节点出现且仅出现在距离根节点最近的一个位置上,因此二分图中的环在树状展开图中依然存在。
B.判断是否所有m个校验节点都在树中:如果是则挑选出与根节点距离最远并且当前维度最低的校验节点建立连接,进入步骤C;如果有校验节点在树外,则从中挑出当前维度最低的校验节点建立连接,边线的权重绝对值取0到p之间的任意值,进入步骤6;
其中,如果所有m个校验节点都出现在树状图中,则说明二分图中所有的校验节点与根节点都是连通的,此时与任何一个校验节点建立连接,都将导致二分图中新出现一个环。为了使该环的周长最大,就要选取与根节点距离最远的校验节点建立连接。所谓距离最远,指的是如果树状图展开到第L-1层时尚未遍历所有的校验节点,而到第L层时所有的m个校验节点都被包含在树状图中了,那么第L层新出现的校验节点就是距离最远的校验节点。
其中,有校验节点在树状图之外指的是,树状图展开到第L层时,该层所有校验节点相邻的变量节点都已经出现在了树状图中,此时树状图包含的校验节点数目小于m个,则说明有校验节点与当前的根节点处于非连通的状态,与它建立连接,将不会产生新的环路。
C.遍历从根节点到步骤B挑选出的校验节点之间的路径,计算这些路径经过的边线的权重累加值s;
其中,如果路径长度为2l,则累加权重
D.求取权重绝对值候选集合X={x|(s-x)modp≠0,0≤x<p}。上述步骤B挑选出的校验节点如果已经出现在树状图中,那么根节点与之建立连接之后,二分图中将新出现一条环路,该环路经过的最后一条边线起点就是步骤b挑选出的校验节点。如果设该边线的权重绝对值为x,那么环路的累加权重就等于s-x。根据置换单位矩阵LDPC码的性质,H矩阵出现一条相等长度环路的充要条件是(s-x)mod p=0,因此只要能够保证权重绝对值x符合条件(s-x)mod p≠0就能够避免在H矩阵中出现与二分图中新环路长度相等的环。所以权重绝对值的候选集合定义为X={x|(s-x)mod p≠0,0≤x<p}。
E.从候选权重集合中挑选出合适的权重绝对值赋予新建立的边线。确定合适权重绝对值的方法有两种,一是从候选权重绝对值集合中随机挑选,这样能够在一定程度上保证H矩阵的随机性,并且足够简单;二是首先从候选权重绝对值集合X中挑选出绝对值集合Y,Y中的所有数值y满足(s-y)mod p与p互素,再从Y中随机选择一个数值作为边线的权重绝对值。如果集合Y为空,那么就从X选取出一个数值z,使得(s-z)mod p与p的公因数最小,这一种方法能够确保每次新出现的环路周长最大。
F.根节点和步骤b挑选出的校验节点的当前维度加1;
6)判断是否已经为当前变量节点建立符合维度分布需要的所有连接,如果没有则返回步骤5),否则进入步骤7);
7)检查是否已经添加完所有n个变量节点,如果没有则返回步骤5),否则结束构造。
同样地,置换矩阵LDPC系统码的方法与上述的置换矩阵LDPC非系统码的方法类似。如同在背景介绍中提到的一样,当一个线性分组码是系统码时,它的H矩阵可以很显著地被分为校验比特子矩阵部分和信息比特子矩阵部分。通常,我们将校验比特子矩阵部分规定成一个特定的形式,然后再对信息比特子矩阵进行构造,前面技术背景中提到的紧邻双对角线形式就是最常用的一种校验比特子矩阵形式。因此对于上述构造方法而言,如果要构造置换矩阵LDPC系统码,就需要将二分图的初始条件定义为校验比特子矩阵的初始形态,然后再依据原有的算法,对信息比特子矩阵进行构造。即构造方法主要分为两个阶段,第一阶段按照预知的校验比特子矩阵初始化二分图;第二个阶段构造信息比特子矩阵部分。
在第一阶段,首先将校验比特子矩阵包含的m个变量节点和所有校验节点排列成一个“之”字形式,如图9(图中标有P的变量节点对应校验比特子矩阵的变量节点)。这样既能够保证校验比特之间具有校验关系,又能够保证二分图中无环。同时,二分图中所有边线的权值都被置为0,以保证校验子矩阵的所有非零子块都由单位矩阵填充,并且主对角线所有元素都是1,这样的结构能够降低系统码的编码复杂度。在对校验子矩阵进行上述排列之后,由于校验子矩阵的最后一个变量节点只与最后一个校验节点具有连接,因此校验子矩阵右下角的一个子块对应的所有校验比特都只参加了一个校验方程,如图10,这样的结构将严重恶化码的性能,所以在校验比特子矩阵的右上角填充一个非零矩阵,为了避免出现长度为4的环,并使得二分图环路最大,该子块填充的子矩阵偏移量选择为大于0小于p的任意值。为了保证系统码编码的顺利进行,再将该子块第一行的元素1替换为0,这样在校验子矩阵中实际上并没有环路出现。最终得到的校验比特子矩阵部分具有如图11所示的二分图结构,图中虚线的意义表示该子块中有且仅有一行的元素‘1’被替换为‘0’,被替换的行位置可以任意选定,其中二分图的每一个变量节点对应的都是H矩阵的一个块列,每一个校验节点对应的都是H矩阵的一个块行,最后填充进的特殊子矩阵由于不是一个完整的单位矩阵,因此其连线被标记为虚线,它对应的子块形式如图12,最终得到的校验比特子矩阵如图13。
由于校验比特子矩阵部分保持了分块特性,并且已经在第一阶段构造了环路最大化的二分图,因此在第二阶段,信息比特子矩阵部分的构造方法可以完全沿袭构造非系统码的方法中相应的步骤。
本发明的另一个目的在于提供与上述方法相适应的编译码器。在本发明提供的方法的基础上,构造了一种置换矩阵LDPC系统码,相比现在的各种置换矩阵LDPC系统码,它能够保证整个H矩阵的分块特性,使得构造系统码和非系统码的过程更为统一,构造的码性能更好。因此,本发明还提供了适用于该LDPC码的编译码器。其中,特别译码器的结构相对现有的译码器有了很大改进,该结构仅仅需要两倍的存储资源和大约相同的逻辑资源,就可以将译码器吞吐量提高一倍。图14与图15分别是该编码器与译码器的结构框图:
如图14所示,为编码器的结构示意图。编码器包括信息比特输入(DUPLICATE)、信息比特缓存RAM、部分校验和RAM、部分校验和更新、交织、节点比特缓存RAM、行交织索引ROM、累加交织器、校验比特缓存RAM、列交织索引ROM以及码字比特输出(MUX)模块。其中,信息比特输入(DUPLICATE)负责将输入的信息比特拷贝成二份分流;信息比特缓存RAM保存信息比特起到对其的延时作用。部分校验和RAM保存部分校验和。部分校验和更新模块用来更新计算部分校验和;交织、节点比特缓存RAM、行交织索引ROM三个模块统一完成行交织功能;累加交织器、校验比特缓存RAM、列交织索引ROM完成了递归累加求得校验比特并使其顺序排列地工作;码字比特输出(MUX)完成信息比特和校验比特的合并输出工作。
如图15所示,为译码器的结构示意图。译码器包括:控制模块(Controller)、变量节点计算单元(VNU)、校验节点计算单元(CNU)以及外信息存储器(Memory)。其中,控制模块用于控制整个译码器的时序逻辑;外信息存储器用于存储迭代译码过程中计算得到的外信息,其大小取决于H矩阵中每一个分块的大小以及分块的个数;变量节点计算单元用于实现LDPC译码器最小和算法的和算法运算,并判决出每一个比特输出,供校验节点单元使用;校验节点计算单元,用于实现LDPC译码器最小和算法中的求取最小值的运算,并输出校验方程的校验结果。
本发明的技术效果在于,上述构造方法与PEG算法相比,具有构造更简单,能够硬件实现的优点,这主要是因为PEG算法是以bit为单位构造的,从而导致其二分图中节点数目是以子块为单位的简化二分图的p倍,因此在每次树状展开时,PEG算法的复杂度远远大于本发明提出的构造方法,这也使得这种新的构造方法可以克服PEG算法在码长超过10000bits时往往力不从心的现实,利用它能够构造出长度更长的LDPC码。同时,新的方法构造的LDPC码在性能上与PEG-LDPC码的性能几乎完全相同,并且优于现在通常构造得到的非规则置换矩阵LDPC码,浮点仿真结果如图16所示。
同时,由于在构造过程中保持了置换单位矩阵LDPC码的分块特性,因此新构造方法得到的LDPC码,可以在FPGA平台上进行编译码器的实现,这一点是原有的PEG-LDPC码所不具备的。同时本发明提出的编译码器设计及实现方案具有以下两个主要的特点:其一是编码器中采用了一个行索引交织器,这个交织器的使用主要源于何本发明所提出的方法相应的设计系统码的特殊结构。本发明所提出的系统码为了保证H矩阵整体的分块结构,所以将校验比特子矩阵部分构造成为了以块为单位的双对角线形式,如前所述,这样的形式方便了译码器的设计,简化了译码器的实现复杂度。实现方案的第二个主要特点是将译码器的外信息存储单元的大小扩大,使得它可以同时为两个码字提供译码服务。这样设计的结果是,本发明的译码器可以在仅扩大一倍存储资源,而逻辑资源消耗不显著增加的前提下,将译码器的数据率提高一倍。
附图说明
图1是LDPC码二分图表示的示意图;
图2是置换单位矩阵LDPC码H矩阵示意图;
图3是置换单位矩阵LDPC码H矩阵的简化表示;
图4是置换单位矩阵LDPC码H矩阵的等价偏移量矩阵;
图5是基于块的有权重二分图;
图6是非规则置换矩阵LDPC码构造方法的流程图;
图7是以块为单位初始化的二分图;
图8表示以当前变量节点为根节点做树状展开的示意图;
图9是系统码的初始二分图;
图10是系统码校验比特子矩阵常识结构示意图;
图11是经过优化的系统码校验比特子矩阵的二分图;
图12是特殊子块的示意图;
图13是经过优化的系统码校验比特子矩阵示意图;
图14是编码器的结构示意图;
图15是译码器的结构示意图;
图16是误比特率浮点仿真性能对比曲线;
图17是(1008,504)系统码初始二分图;
图18是编码器实现硬件模块图;
图19是变量节点单元硬件实现子模块图;
图20是校验节点单元硬件实现子模块图;
图21是译码器控制模块硬件实现子模块分解图1;
图22是译码器控制模块硬件实现子模块分解图2;
图23是译码器控制模块硬件实现子模块分解图3;
图24是译码器控制模块硬件实现子模块分解图4;
图25是硬件误比特率测试曲线。
具体实施方式
实施例1:构造非规则置换矩阵LDPC码
以下具体描述利用本发明所述的构造方法,构造一个(1008,504)LDPC系统码的过程:
步骤一,确定H矩阵的参数。已知码长N=1008,校验方程数目M=504,则H矩阵的大小为504×1008。分别求取M、N的因子,我们可以得到N=28×36,M=14×36,故而我们可以选择每一个子块的大小为36×36,整个矩阵可以被分为14×28个子块;
步骤二,利用密度推演方法确定H矩阵的维度分布。确定变量节点的维度分布函数为λ(x)=0.2947x+0.2842x2+0.4211x2,即维度为2的变量节点连接的边线占所有边线总数的29.47%,维度为3的变量节点连接的边线占所有边线总数的28.42%,维度为8的变量节点连接的边线占边线总数的42.11%。本领域的技术人员应能理解,此处确定H矩阵的纬度分布的方法也可以是其他的优化算法,其具体计算方式并非本发明方法所要求保护的内容,因此本实施例中的具体方法不应构成对本发明的限制;
步骤三,对二分图中节点的参数进行初始化。根据前两个步骤地计算结果,可以得到二分图中的每一个变量节点实际对应H矩阵中的一个块列,每一个校验节点实际对应H矩阵中的一个块行。整个H矩阵总共有14个校验节点,28个变量节点。边线的维度分布参数在步骤二中已经给出,由于每一个子块的大小为36×36,因此每条边线的权重取值范围为0~35;
步骤四,初始化二分图,首先向二分图中放置14个没有任何连接的校验节点,然后初始化校验比特子矩阵部分,将校验比特子矩阵部分对应的14个维度为2的变量节点在二分图中放置为图17所示的形式,除一条边线权重绝对值为35之外,其余边线权重都为0;
步骤五,向二分图中逐个添加新的变量节点:
A,以当前变量节点为根节点在二分图中做树状展开;
B,在二分图中挑选一个校验节点建立连接:如果所有的校验节点都在二分图中,那么就挑选距离根节点最远且当前维度最低的校验节点;如果有校验节点不在树中,那么就挑选不在树中且当前维度最低的校验节点。
C,遍历从根节点到步骤c)中选中的校验节点之间所有路径,并分别计算其权重累加值
D,计算候选权重集合X={x|(s-x)modp≠0,0≤x<p},这里p等于36;
E,从候选权重集合中挑选一个作为新建立边线的权重:一种方式是随机挑选;另外一种方式是从X中挑选一个权重,使得路径的累加权重值与36的最大公因数为1;
F,变量节点的当前维度加1;
步骤六,判断是否已经达到步骤三初始化的变量节点最大维度。如果已经达到,则进入下一步骤,否则返回步骤五;
步骤七,判断14个变量节点是否已经全部添加完毕,否则返回步骤五;构造结束。
实施例2:编码器
编码器的硬件结构如图18所示,编码器包括信息比特输入(DUPLICATE)、信息比特缓存RAM、部分校验和RAM(RAM#1_1……)、部分校验和更新(XOR#1……)、交织、节点比特缓存RAM、行交织索引ROM、累加交织器、校验比特缓存RAM、列交织索引ROM以及码字比特输出(MUX)模块。其中信息比特输入(DUPLICATE)将输入的信息比特拷贝成二份,分别输入信息比特缓存RAM和部分校验和更新模块。信息比特缓存RAM包括三个存储器RAM,每一个大小为504bit,三个存储器RAM循环保存输入的信息比特,在编码结束时输出,起到对信息比特的延时作用。部分校验和RAM包含一个504比特的存储器,用来保存504个校验方程在每一个信息比特输入后得到的部分校验和。部分校验和更新模块用来更新部分校验和RAM的结果,开始编码时,部分校验和更新模块将部分校验和RAM初始化为0,其后,每收到一个信息比特,部分校验和更新模块从部分校验和RAM中取出当前值,将该信息比特按照校验关系模2累加到部分校验和上,并将结果保存到部分校验和RAM中,当部分校验和更新模块完成一帧数据504个比特的更新后,它向交织模块发送一个启动信号。交织、节点比特缓存RAM、行交织索引ROM三个模块统一完成行交织功能;节点比特缓存RAM包含一个504比特的RAM,用来保存经过交织后的504个部分校验和比特;行交织索引ROM中保存着进行行交织时的交织地址索引;每当部分校验和RAM传送来一个比特,行交织索引ROM就输出一个对应的交织地址,交织模块根据这个地址将部分校验和送来的比特写到节点比特缓存RAM的对应位置;通过行交织的作用,部分校验和的顺序得到调整,这时它们就可以通过递归累加求得校验比特。累加交织器、校验比特缓存RAM、列交织索引ROM完成了递归累加求得校验比特并使其顺序排列的工作;校验比特缓存RAM包含一个504比特的RAM,用来保存经过交织后顺序排列的504个部分校验和比特;列交织索引ROM中保存着进行列交织时的交织地址索引;每当节点比特缓存RAM传送来一个比特,列交织索引ROM就输出一个对应的交织地址,累加交织模块先将送入的比特累加处理,再根据列交织索引ROM输出的交织地址将累加处理后的比特写到校验比特缓存RAM的对应位置;通过累加列交织的处理后,校验比特的顺序变成顺序排列,这时校验比特就可以输出了。最后,码字比特输出(MUX)模块先从信息比特缓存RAM中取出当前帧的信息码,顺序输出,接着从校验比特缓存RAM中取出校验比特顺序输出;这样,信息比特和校验比特就合并成一个完整的码字输出了。
实施例3:译码器
译码器的整体结构如图15所示,它可以被划分为Controller(控制模块),Memory(存储器),VNU(变量节点计算单元)以及CNU(校验节点计算单元)四个部分。
其中变量节点计算单元总共需要28个,校验节点计算单元总共需要14个,译码算法可以采用和积算法的简化算法——最小和算法。由于构造得到的H矩阵中非零置换矩阵共有94个,因此同时为两个码字提供解码共需要188个大小为36×7bits(这里取量化宽度为7)的双端口RAM,它们作为存储单元为两个码字的同时解码提供中间数据给变量节点计算单元和校验节点计算单元用于计算。
如图21所示,控制模块主要分为输入缓存(Receiver)、时序控制(DecoderCore)以及输出缓存(Output)三个子模块来实现。其中输入缓存作为译码器的输入接口,处于译码器的最外端,接收存储信道信息,并在译码阶段提供信道信息帮助译码,本实施例中该模块总共需要4个大小为1008×7bits的缓冲存储器,它们被分为两组,交替接收外部输入信息;时序控制模块则是译码器的核心控制模块,它负责协调所有的变量节点和校验节点计算单元在正确的时刻开始计算,为所有的存储器提供读写地址并保证存储器正确地读写中间计算数据;输出缓存则在译码完成之后,为所有的信息比特输出提供缓存,并在译码阶段中保存每次迭代判决之后的暂时结果。
28个变量节点计算单元并行实现LDPC译码器最小和算法的和算法运算。在每次迭代译码时,一个变量节点计算单元每次最多能接收1个信道信息和8个译码外信息,进行和运算后归一化(3/4)限幅输出,输出同时将本次译码硬判决结果作为外信息前缀加在输出信息首位,另给一个1位宽端口输出译码硬判决结果。主要的运算分两级完成:第一级分别以5个、4个数相加求和;第二级首先完成第一级的两个和值的求和sum,在分别减去8个外信息软值,并进行限幅完成和运算,最后以sum的首位(译码结果)作为前缀输出8个和运算后的外信息。具体的实现模块如图19所示。
14个校验节点计算单元并行实现LDPC译码器最小和算法的最小和算法运算。进行迭代译码时,校验节点计算单元一次最多能接收8个译码外信息,进行最小和运算找到最小及次最小值后对应输出;该过程中同时利用软信息前的上次迭代译码硬信息前缀进行校验和check,用1位宽端口输出check结果。主要运算分三级完成:第一级分别以4个、4个数求最小和、次最小和运算;第二级完成第一级的4个值的求求最小和min、次最小和hypomin运算;第三级分别用8个软信息的绝对值与min比较,如果相等,择取hypomin,否则取min,得到8个值添加上符号输出。具体的实现模块如图20所示。
在译码器的初始工作阶段,控制模块直接控制的输入缓存首先顺序接收两个码字,直到接收完成之后进入译码实施阶段。输入缓存将已经接收完毕的两个输入缓冲器提供给译码时序控制模块,供其在译码时读取。同时输入缓存启动另外两个输入缓冲器等待接收新的输入信息,如图22所示。
接收完毕的两个码字进入译码阶段之后,译码时序控制模块(DecoderCore)首先控制第一个码字进入和运算阶段,此时第二个码字等待。随后第一个码字进入最小值求取运算阶段,此时第二个码字进入和运算阶段,随后两个码字交替进行和运算以及最小值求取运算,直至达到最大迭代次数或者两者都符合了校验方程的约束。该模块控制整个译码器在迭代译码阶段的时序,输出VNU单元、CNU单元的使能信号以及不同偏移量的双端口RAM的读地址信号。该模块主要包含一个状态机,一个地址发生器以及必要的组合逻辑驱动控制信号,硬件实现框图如图23所示。
输出缓存模块主要通过两组输出缓存RAM(每一组大小为2×504比特)交替地提供给译码时序控制模块使用,在迭代解码结束时进行输出。该模块的设计思路类似于输入缓存模块。在迭代译码正在进行时,输出缓存模块提供一组共2个大小为504比特RAM,用于存储变量节点计算单元得到的判决比特,当迭代译码结束,该模块就将存储在RAM中的判决比特作为译码结果依次输出,同时将另外一组缓存RAM交由译码时序控制模块控制,用于新进入译码器的两个码字的解码。其硬件的具体结构参照图24。
根据上述实现方案,最终实现的(1008,504)LDPC码编译码器硬件实测误码曲线如图25所示。从图中可以看出,我们构造的LDPC码在3.7dB就达到了10-9的误比特率,与PEG算法构造LDPC码浮点仿真性能仅相差不到0.2dB,好于传统的置换单位矩阵LDPC码。
Claims (11)
1、一种非规则置换矩阵LDPC码的构造方法,包括步骤:
1)确定码长N=np,校验方程数目M=mp,将H矩阵划分为m×n个大小为p×p的子块,每个子块都用置换单位矩阵或者全零矩阵填充;
2)确定H矩阵的每个块列的维度分布;
3)构造二分图,每个块行对应一个校验节点,每个块列对应一个变量节点,每条边线的权重的绝对值大小等于H矩阵相应置换单位矩阵的偏移量大小,当边线起始于校验节点时权重为负值,当边线起始于变量节点时则权重为正值;
4)初始化二分图,添加m个不具有任何连接的校验节点,每个校验节点表示的是H矩阵的一个块行;
5)向二分图中逐个添加变量节点,每个变量节点代表H矩阵的一个块列,并为每个变量节点挑选校验节点进行连接;
6)判断是否已经为当前变量节点建立符合维度分布需要的所有连接,如果没有则返回步骤5),否则进入步骤7);
7)检查是否已经添加完所有n个变量节点,如果没有则返回步骤5),否则结束。
2、如权利要求1所述的方法,其特征在于,所述的步骤5)具体包括步骤:
A.以当前变量节点为根节点对二分图做树状展开;
B.判断是否所有m个校验节点都在树中:如果是,则挑选出与根节点距离最远并且当前维度最低的校验节点建立连接,进入步骤C;如果有校验节点在树外,则从中挑出当前维度最低的校验节点建立连接,边线的权重绝对值取0到p之间的任意值,进入步骤6;
C.遍历从根节点到步骤B挑选出的校验节点之间的路径,计算这些路径经过的边线的权重累加值;
D.求取权重绝对值候选集合;
E.从候选权重集合中挑选出合适的权重绝对值赋予新建立的边线;
F.根节点和步骤b挑选出的校验节点的当前维度加1。
3、一种非规则置换矩阵LDPC系统码的构造方法,包括步骤:
1)确定码长N=np,校验方程数目M=mp,将H矩阵划分成大小为M×M的校验比特子矩阵和大小为M×(N-M)的信息比特子矩阵,所述的校验比特子矩阵包含m×m个大小为p×p的子块,所述的信息比特子矩阵包含m×(n-m)个大小为p×p的子块;
2)设置校验比特子矩阵中每个块列的维度都是2,并计算信息比特子矩阵中每个块列的维度分布;
3)构造二分图,H矩阵的每个块行对应一个校验节点,每个块列对应一个变量节点,每条边线的权重的绝对值大小等于H矩阵相应置换单位矩阵的偏移量大小,当边线起始于校验节点时权重为负值,当边线起始于变量节点时则权重为正值;
4)初始化二分图,首先添加m个不具有任何连接的校验节点,然后添加校验比特子矩阵中m个不具备任何连接的变量节点,所述的校验节点和标量节点之间按照“之”字形一次连接;
5)向二分图中逐个添加信息比特子矩阵中包含的(n-m)个变量节点,并为每个变量节点挑选校验节点进行连接;
6)判断是否已经为当前变量节点建立符合维度分布需要的所有连接,如果没有则返回步骤5),否则进入步骤7);
7)检查是否已经添加完所有n个变量节点,如果没有则返回步骤5),否则结束。
4、如权利要求3所述的方法,其特征在于,所述的步骤4)中,除了第m个变量节点与第1个校验节点之间、或者第1个变量节点与第m个校验节点之间连接采用特殊连线之外,其余节点之间的连线权重都取为0。
5、如权利要求3所述的方法,其特征在于,所述的步骤5)具体包括步骤:
A.以当前变量节点为根节点对二分图做树状展开;
B.判断是否所有m个校验节点都在树中:如果是则挑选出与根节点距离最远并且当前维度最低的校验节点建立连接,进入步骤C;如果有校验节点在树外,则从中挑出当前维度最低的校验节点建立连接,边线的权重绝对值取0到p之间的任意值,进入步骤6;
C.遍历从根节点到步骤B挑选出的校验节点之间的路径,计算这些路径经过的边线的权重累加值;
D.求取权重绝对值候选集合;
E.从候选权重集合中挑选出合适的权重绝对值赋予新建立的边线;
F.根节点和步骤B挑选出的校验节点的当前维度加1。
6、一种用于构造LDPC码的编码器,包括:
信息比特输入,用于将输入的信息比特拷贝成二份分流;
信息比特缓存RAM,用于保存信息比特起到对其的延时作用;
部分校验和RAM,用于保存部分校验和;
部分校验和更新模块,用于更新计算部分校验和;
行交织器,用于完成行交织功能;
累加交织器,用于递归累加求得校验比特并使其顺序排列地工作;
码字比特输出,用于信息比特和校验比特的合并输出。
7、如权利要求6所述的编码器,其特征在于,所述的行交织器还包括交织、节点比特缓存RAM、行交织索引ROM三个子模块。
8、如权利要求6所述的编码器,其特征在于,所述的累加交织器还包括累加交织、校验比特缓存RAM和列交织索引ROM三个子模块。
9、一种用于构造LDPC码的译码器,包括:
控制模块,用于控制整个译码器的时序逻辑;
外信息存储器,用于存储迭代译码过程中计算得到的外信息,其大小取决于H矩阵中每一个分块的大小以及分块的个数;
变量节点计算单元,用于实现LDPC译码器最小和算法的和算法运算,并判决出每一个比特输出,供校验节点单元使用;
校验节点计算单元,用于实现LDPC译码器最小和算法中的求取最小值的运算,并输出校验方程的校验结果。
10、如权利要求9所述的译码器,其特征在于,所述的控制模块还包括:
输入缓存,处于译码器的最外端,作为译码器的输入接口,接收存储信道信息,并在译码阶段提供信道信息帮助译码;
时序控制单元,用于协调所有的变量节点和校验节点计算单元在正确的时刻开始计算,为所有的存储器提供读写地址并保证存储器正确地读写中间计算数据;
输出缓存,用于在译码完成之后,为所有的信息比特输出提供缓存,并在译码阶段中保存每次迭代判决之后的暂时结果。
11、如权利要求10所述的译码器,其特征在于,所述的时序控制单元还包括:一个状态机、一个地址发生器以及必要的组合逻辑驱动控制信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100111705A CN100438394C (zh) | 2006-01-12 | 2006-01-12 | 非规则置换矩阵ldpc码的构造方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100111705A CN100438394C (zh) | 2006-01-12 | 2006-01-12 | 非规则置换矩阵ldpc码的构造方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1794621A true CN1794621A (zh) | 2006-06-28 |
CN100438394C CN100438394C (zh) | 2008-11-26 |
Family
ID=36805917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100111705A Expired - Fee Related CN100438394C (zh) | 2006-01-12 | 2006-01-12 | 非规则置换矩阵ldpc码的构造方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100438394C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010022602A1 (zh) * | 2008-08-26 | 2010-03-04 | 华为技术有限公司 | 生成准循环低密度奇偶校验码及编码的方法与装置 |
CN101047387B (zh) * | 2007-03-23 | 2010-06-09 | 北京大学 | 一种多码率兼容ldpc码的构造方法及其译码器 |
CN101145030B (zh) * | 2006-09-13 | 2011-01-12 | 新鼎系统股份有限公司 | 增加变量数量、获得其余的变量、维度鉴识与变量筛选的方法及系统 |
CN102025441A (zh) * | 2009-09-11 | 2011-04-20 | 北京泰美世纪科技有限公司 | Ldpc码校验矩阵的构造方法、ldpc码的编码方法和编码装置 |
CN102790622A (zh) * | 2011-05-19 | 2012-11-21 | 中兴通讯股份有限公司 | 低密度奇偶校验码校验矩阵的构造方法及装置 |
CN101753263B (zh) * | 2008-12-10 | 2012-12-19 | 国家广播电影电视总局广播科学研究院 | 一种应用qc-ldpc码族的系统、方法 |
CN106209114A (zh) * | 2015-04-29 | 2016-12-07 | 联想(北京)有限公司 | 译码方法及装置 |
CN107070462A (zh) * | 2011-05-18 | 2017-08-18 | 松下电器产业株式会社 | 比特交织方法、比特交织器、信号处理方法及装置 |
CN107404322A (zh) * | 2014-09-17 | 2017-11-28 | 上海数字电视国家工程研究中心有限公司 | 针对低码率ldpc码的校验矩阵及ldpc码字 |
CN111384970A (zh) * | 2018-12-29 | 2020-07-07 | 电信科学技术研究院有限公司 | 一种译码方法、装置及通信设备 |
CN113206674A (zh) * | 2021-04-11 | 2021-08-03 | 南京理工大学 | 一种用于ldpc译码器的高效交织器及交织方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185616B (zh) * | 2011-05-05 | 2013-04-03 | 北京大学 | 基于行列联合迭代译码的ldpc码构造方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100543154B1 (ko) * | 2002-07-26 | 2006-01-20 | 휴우즈 일렉트로닉스 코오포레이션 | 저밀도 패리티 검사 코드 생성 방법 및 시스템 |
JP4163023B2 (ja) * | 2003-02-28 | 2008-10-08 | 三菱電機株式会社 | 検査行列生成方法および検査行列生成装置 |
KR100809619B1 (ko) * | 2003-08-26 | 2008-03-05 | 삼성전자주식회사 | 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법 |
CN100364237C (zh) * | 2004-02-09 | 2008-01-23 | 清华大学 | 非规则低密度奇偶校验码的系统码设计方法及其通信系统 |
-
2006
- 2006-01-12 CN CNB2006100111705A patent/CN100438394C/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145030B (zh) * | 2006-09-13 | 2011-01-12 | 新鼎系统股份有限公司 | 增加变量数量、获得其余的变量、维度鉴识与变量筛选的方法及系统 |
CN101047387B (zh) * | 2007-03-23 | 2010-06-09 | 北京大学 | 一种多码率兼容ldpc码的构造方法及其译码器 |
WO2010022602A1 (zh) * | 2008-08-26 | 2010-03-04 | 华为技术有限公司 | 生成准循环低密度奇偶校验码及编码的方法与装置 |
CN101753263B (zh) * | 2008-12-10 | 2012-12-19 | 国家广播电影电视总局广播科学研究院 | 一种应用qc-ldpc码族的系统、方法 |
CN102025441A (zh) * | 2009-09-11 | 2011-04-20 | 北京泰美世纪科技有限公司 | Ldpc码校验矩阵的构造方法、ldpc码的编码方法和编码装置 |
CN102025441B (zh) * | 2009-09-11 | 2013-07-31 | 北京泰美世纪科技有限公司 | Ldpc码校验矩阵的构造方法、ldpc码的编码方法和编码装置 |
US10931313B2 (en) | 2011-05-18 | 2021-02-23 | Panasonic Corporation | Parallel bit interleaver |
CN107070462A (zh) * | 2011-05-18 | 2017-08-18 | 松下电器产业株式会社 | 比特交织方法、比特交织器、信号处理方法及装置 |
CN102790622B (zh) * | 2011-05-19 | 2017-03-15 | 中兴通讯股份有限公司 | 低密度奇偶校验码校验矩阵的构造方法及装置 |
CN102790622A (zh) * | 2011-05-19 | 2012-11-21 | 中兴通讯股份有限公司 | 低密度奇偶校验码校验矩阵的构造方法及装置 |
CN107404322A (zh) * | 2014-09-17 | 2017-11-28 | 上海数字电视国家工程研究中心有限公司 | 针对低码率ldpc码的校验矩阵及ldpc码字 |
CN107437948A (zh) * | 2014-09-17 | 2017-12-05 | 上海数字电视国家工程研究中心有限公司 | 针对低码率ldpc码的校验矩阵及编码方法 |
CN107437948B (zh) * | 2014-09-17 | 2020-08-07 | 上海数字电视国家工程研究中心有限公司 | 针对低码率ldpc码的校验矩阵及编码方法 |
CN106209114A (zh) * | 2015-04-29 | 2016-12-07 | 联想(北京)有限公司 | 译码方法及装置 |
CN111384970A (zh) * | 2018-12-29 | 2020-07-07 | 电信科学技术研究院有限公司 | 一种译码方法、装置及通信设备 |
CN113206674A (zh) * | 2021-04-11 | 2021-08-03 | 南京理工大学 | 一种用于ldpc译码器的高效交织器及交织方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100438394C (zh) | 2008-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1794621A (zh) | 非规则置换矩阵ldpc码的构造方法及装置 | |
CN101047387B (zh) | 一种多码率兼容ldpc码的构造方法及其译码器 | |
CN101106381B (zh) | 分层的低密度校验码译码器及译码处理方法 | |
CN102122966B (zh) | 基于信道极化的交错结构重复码的编码器及其编译码方法 | |
KR102347823B1 (ko) | 구조화된 ldpc의 부호화 및 복호화 방법 및 장치 | |
CN104283568A (zh) | 一种基于部分霍夫曼树的数据压缩编码方法 | |
CN101753149A (zh) | 一种准循环低密度奇偶校验码的构造方法 | |
CN101032082A (zh) | 编码和解码数据的方法和设备 | |
KR20090092892A (ko) | Ldpc 코드를 이용한 복호화 방법 | |
CN101796488A (zh) | 奇偶校验矩阵的产生 | |
CN1499731A (zh) | 低密度奇偶校验码解码装置和方法 | |
CN102843145A (zh) | 一种低码率准循环累积重复累积码构造方法 | |
CN101094000A (zh) | 一种基于peg算法的时不变ldpcc码的构造方法及其编译码器 | |
CN110661533B (zh) | 优化译码器存储极化码译码性能的方法 | |
CN101207386B (zh) | 一种二进制低密度奇偶校验码的构造方法 | |
US11082067B1 (en) | System and method for determining bit types for polar encoding and decoding | |
CN102725964B (zh) | 一种编码方法、译码方法及编码装置、译码装置 | |
CN101478313B (zh) | 一种ldpc译码器的最小值计算装置及其构造方法 | |
CN103731157B (zh) | 准循环低密度校验码的联合构造方法 | |
CN108449090B (zh) | 一种可配置多码长、多码率的ldpc译码器 | |
CN1822510A (zh) | 高速的减少存储需求的低密度校验码解码器 | |
CN111162795B (zh) | 基于校验子矩阵分割的ldpc编码硬件实现方法 | |
CN102723956B (zh) | 一种ldpc码的生成方法 | |
CN110071726A (zh) | 多层单元闪存中联合ldpc码的构造方法及其译码装置 | |
CN101075812A (zh) | 一种并行级联结构的系统形式低密度码的构造方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081126 Termination date: 20150112 |
|
EXPY | Termination of patent right or utility model |