专利名称:具有良好性能的不规则缩短的ldpc码的码构造的制作方法
技术领域:
本发明主要涉及编码和解码数据,并且更具体地,涉及利用低密度奇偶校验(LDPC)码编码和解码数据的方法与装置背景技术低密度奇偶校验(LDPC)码由奇偶校验矩阵H定义,该矩阵是低密度伪随机二进制矩阵。由于实现的原因,即使必须支持多个码速率和块大小,有时优选单个H矩阵。在这种情况下,通过缩短系统LDPC码可以获得多个码速率和块大小。
在将k个信息比特映射至n个编码比特的系统码中,编码比特的头k比特是信息比特。当缩短时,L个信息比特被设置为零,并且从编码比特删除对应的零。通常通过(逻辑地或者物理地)将头L信息比特设置为零执行缩短。在一些编码器中,前导零并不改变编码器的状态,因此这些零不必输送至编码电路中。对于LDPC码,可采用两种等效的方式实现通过将头L信息比特设置为零的缩短。首先,可将k比特信息矢量设置为L比特个零,不失一般性,在下面假设这L个比特位于头L信息比特的位置。长度k的信息矢量可输送至编码器(可基于未缩短的(n-k)×n的H矩阵或者等效的k×n生成矩阵G),并且在编码之后从编码比特顺序剥离L个零。其次,缩短的信息矢量可被传递至编码器,该编码器根据去除了头L列的缩短的(n-k)×(n-L)的H矩阵或者等效的缩短的(k-L)×(n-L)的G矩阵进行编码。然而,形成缩短的LDPC码(多个)有可能具有较差的性能,因为它们的重量分布可能劣于为该码速率和块大小定制的码。并不清楚如何构造保持良好性能的缩短的LDPC码。
数字视频广播卫星标准(DVB-S2)利用LDPC码,并且为每一希望的码速率定义H矩阵。DVB-S2定义十种不同的LDPC码速率,1/4、1/3、1/2、3/5、2/3、3/4、4/5、5/6、8/9和9/10,它们具有编码块长度n=64的800比特。对于每一码速率规定不同的奇偶校验矩阵H,在该标准中不采用缩短。如本领域所知,不规则LDPC码比规则LDPC码提供更好的性能。当用于LDPC码时,术语“规则”指H的所有行具有相同数量的1,并且H的所有列也具有相同数量的1,其中行或列中1的数量也被称为行或列的重量。否则认为LDPC码是不规则的。在更狭义的意义上,术语“规则”还应用于行或者列(即,矩阵可具有规则的列重量,但是不规则的行重量),并且还可应用于矩阵的子矩阵(例如,当子矩阵的所有列具有相同的列重量并且子矩阵的所有行具有相同的行重量时,矩阵的矩阵是规则的)。由于希望不规则码具有更好的性能,DVB-S2定义多个H矩阵,每一个都具有在那一码速率下的希望的重量分布,以获得更好的性能。在表1中示出了所有DVB-S2码速率的每一重量的列数。
表1.DVB中各种重量的列数
某些码设计,例如Intel为802.16提议的LDPC码仅具有一个H矩阵,并且利用缩短,以获得其它码速率,但缩短之后的码性能并不好。对应于信息比特(用H1表示)的H部分是规则的(并且因此整个矩阵有时也称为半规则),并且缩短之后码重量分布与好的设计相比较差。良好的LDPC设计在H1中往往不具有规则的列重量。
图1表示在H1中具有非交织列重量的奇偶校验矩阵的列重量分布,即相同重量的列被分组在一起。码大小是(2000,1600)。
图2表示在H1中具有交织列重量的奇偶校验矩阵的列重量分布。码大小是(2000,1600)。
图3表示未缩短的码大小(2000,1600)的FER性能。
图4表示从(2000,1600)码缩短800比特的(1200,800)码的FER性能。
图5表示从(2000,1600)码缩短1200比特的(800,400)码的FER性能。
具体实施例方式
本发明提出一种构造不规则H矩阵的方法,该矩阵在未缩短或缩短时性能良好。该矩阵及其缩短形式可用于编码和解码。
对于具有k个信息比特并且生成n个编码比特的码,H矩阵被分成两个部分H=[H1H2],其中H1的大小是m×k,而H2的大小是m×m,m=n-k。H1对应于未缩短的信息比特,而H2对应于奇偶比特,因此[(H1)m×k(H2)m×m][(s)1×k(P)1×m]T=0。当缩短s的头L位置时,H1的头L列实际上被消除。
H1是确定性的,因为定义了特定的列重量结构。H2是非确定性的,因为它可以是规则的或者不规则的,可具有任何结构,或者随机构造。优选的H2可类似于在Intel 802.16LDPC提案中的美国专利申请No.10/839995,“Method And Apparatus For Encoding And Decoding Data”中说明的H2(近似下三角矩阵,除了最后一列具有重量1之外,所有列具有重量2,列中的1彼此相邻,顶部的1在对角线上。m×m的H2矩阵在数学上可说明为,如果i=j以及i=j+1,(0<=i<=m-1,0<=j<=m-1),第i行第j列的元素为1。
H2的一个示例是
H2=hH2′]]> 其中h是奇数重量>2,并且可以为h=[1 0 0 0 1 0 0 0 10 ...0]T。
H2的另一示例是 对于比规则码具有更好性能的不规则码,可以按照任何次序安排各种重量的列,而不影响性能,因为排列码比特的顺序并不影响纠错性能。因此,通常不特定顺序地分布列重量。例如,相同重量的所有列可分组在一起。当通过缩短有效地消除H的前导L列时,剩下的重量可导致较差的性能。
为了解决该问题,确定性部分H1包括多个子矩阵,每一个子矩阵具有基本上在子矩阵间交织的列重量。子矩阵间的交织基于子矩阵的希望列重量分布。如果希望的列重量分布对于所有子矩阵相同,那么子矩阵间的交织是均匀的。如果希望的列重量分布对于两个子矩阵不同,那么矩阵间的交织是非均匀的。在子矩阵内,可交织不同重量的列,使得不同重量的列在子矩阵上主要均匀散布。
在本发明中,不同重量的列在子矩阵间均匀地或者非均匀地交织,由此形成的缩短矩阵可具有好得多的重量分布,并且因此具有更好的纠错性能。设H1为不规则,因为它具有两个或更多不同的列重量(例如,在H1的每一列中具有3个和10个1)。H1的列被进一步分为两个部分(子矩阵),H1a和H1b,其中H1a是m×L矩阵(即,H1的头L列)并且H1b是m×(k-L)矩阵(即,H1的其余k-L列)。不同重量的列在H1a和H1b间交织,因此在缩短L比特之后(即,有效地从H消除H1a);利用[H1bH2]形成的码具有好的重量分布。
当编码时,编码器首先预先安排L个零至当前长为(k-L)的符号集。然后利用H像未缩短那样编码零填充的信息矢量s=
,其中sb具有长度k-L,以生成奇偶比特矢量p(长度m)。在从当前符号集消除预先安排的零之后,码比特矢量x=[sbp]在信道上发送。该编码过程等效于利用缩短的矩阵[H1bH2]编码信息矢量sb,以确定奇偶校验比特。
利用H1的两个区域说明了简单的示例,但是可利用在更小区域上交织的列进一步细分H1。执行列重量交织,使得在缩短之后,形成的奇偶校验矩阵都具有良好的重量分布。
可以按照均匀或非均匀的方式执行子矩阵间的交织。均匀交织具有希望的重量分布,对于H1的每一区域保持H1的接近的列重量比。例如,如果H1具有约25%重量的x1和75%重量的x2列,那么通过将一个重量x1列和三个重量x2列交织,H1a和H1b均可具有约25%重量的x1和75%重量的x2列。或者,可通过在H1a中将round(0.75*width(H1a))重量x2列放置在约round(0.25*width(H1a))重量x1列之后来安排各列。在这两种情况下,H1b将具有H1a的列重量分布,并且H1b中的列排布并不影响性能,除非码被进一步缩短(即,H1b被划分为额外的区域)。均匀交织通常对于缩短的码产生并非最优的重量分布。
非均匀交织尝试为H1的每一区域匹配希望的重量分布。例如,如果H1具有25%重量x1和75%重量x2的重量分布,但是H1b的50%缩短码具有50%重量x1和50%重量x2的希望重量分布,那么通过非均匀地交织H1a和H1b间的列,H1b可实现希望的重量分布。在这种情况下,在H1a中放置约round(0.25*width(H1)-0.5*width(H1b))重量x1列和约round(0.75*width(H1)-0.5*width(H1b))重量x2列,并且H1b具有0.5*width(H1b)重量x1和0.5*width(H1b)重量x2列的希望重量分布。通过交织H1a中一重量x2列与零重量x1列(即,H1a所有列是重量x2列),并且(如果希望的话)通过在H1b中近似地交替一重量x2列和一重量x1列,来实现交织的非均匀分布。如果要支持多个缩短码速率,那么希望利用散布在子矩阵上各种重量列的非均匀交织,以对于所有缩短的码速率提供更好的性能。
算法伪码[下面的Matlab解释如何利用希望的重量分布求出对于给定码速率和码尺寸的良好重量分布]%get optimized degree distribution,dv=maximum column weight,rate is code ratevDeg=getDegDist(rate,dv);%get the number of variable nodes of each weight,N is the number of columns in HvNodes =round(N*vDeg(2,:)./vDeg(1,:)/sum(vDeg(2,:)./vDeg(1,:)));function[vDeg]=getDegDist(rate,dv)%vDeg(1,i):col weighti%vDeg(2,i):fraction of edges linked to variable node of weight vDeg(1,i)%vDeg(3,i):fraction of variable nodes of weight vDeg(1,i)if(abs(rate-1/2)<1e-4)if(dv==4)vDeg=[234;
0.383540.042370.574090.548830.040420.41075];
elseif(dv=11)vDeg =[2 356 110.288212 0.256895 0.0285565 0.15190 0.2744370.50437 0.29971 0.01999 0.088608 0.087321];
endelseif(abs(rate-2/3)<1e-4)if(dv==10)vDeg=[20.1666670000(0.33000059795989)30.3679650000(0.48571370868582)100.4653680000(0.18428569335429)]';
endelseif(abs(rate-4/5)<1e-4)if(dv==10)vDeg=[20.1000000000(0.19999992000003)30.4714290000(0.6285717485713)100.4285710000(0.17142833142867)]1;
endend下面的Matlab代码解释如何在子矩阵中进行交织。注意,s是列重量矢量,而z1和z2取决于该子矩阵中的特定列重量分布。
temp =[s(1:length1)-ones(1,total_length-length1)];
submatrixl=reshape(reshape(temp,z1,z2)1,1,z1*z2);
idx =find(submatrixl<0);
submatrixl(idx) =[];
示例利用示例解释上述提案。对于速率4/5,码尺寸(2000,1600),利用列重量2、3和10求出H矩阵。在图1中绘出非交织奇偶校验矩阵Hnon的列重量分布。在H1部分的列交织之后,在图2中绘出形成的奇偶校验矩阵Hinter的列重量分布,并且在附录A中列出。除了引入了列置换之外,矩阵Hinter与矩阵Hnon相同。
当缩短Hinter时,产生的矩阵仍然保持良好的列重量分布。作为示例,给定速率2/3码的目标重量分布,vDeg=[20.1666670000(0.33000059795989)30.3679650000(0.48571370868582)100.4653680000(0.18428569335429)];其中第一列表示希望的列重量,第三列表示具有给定重量的列数,非均匀插入算法产生表2中导出的速率2/3码的列重量分布。使用类似的过程求出表2中速率1/2码的希望列重量分布(在缩短原始的速率4/5码之后)。在表3和表4中分别给出(具有均匀交织)Hnon和Hu_inter的重量分布。注意,在任何情况下,H2具有399个重量2列和一个重量3列,而H1具有一重量2列。
表2.在速率4/5Hinter及其导出码中各种重量的列数
表3.在速率4/5Hnon及其导出码中各种重量的列数
表4.在速率4/5Hu_inter及其导出码中各种重量的列数
仿真研究表明,非均匀交织产生未缩短或缩短的具有良好性能的LDPC码。在图3中示出未缩短的速率4/5码的性能,并与802.16提议的码设计作比较。注意,不通过缩短,利用或者不利用列重量交织的不规则码设计具有相同的性能。仿真表明,Hnon和Hinter比802.16提议的设计(Intel)在FER=10-2处具有0.2dB的性能优势。
当将码缩短L=800信息位置时,实际上消除了Hnon(或Hinter)的前导800列,形成速率2/3码。在图4中示出缩短码的性能,并与类似缩短的802.16提议的设计作比较。仿真表明,不通过交织,缩短之后的码性能次于802.16提议的设计(Intel),这是由于缩短后较差的码重量分布造成的。然而,在交织之后,码性能在FER=10-2处比802.16提议的设计具有0.25dB的优势。
类似地,可以进一步地缩短码。当将原始码缩短L=1200信息位置时,实际上消除了Hnon(或Hinter)的前导1200列,形成速率1/2码。在图5中示出缩短码的性能,并与类似缩短的802.16提议的设计作比较。仿真表明,不通过交织,缩短之后的码性能略逊于802.16提议的设计,这是由于缩短后较差的重量分布造成的。然而,在交织之后,码性能在FER=10-2处比802.16提议的设计具有0.35dB的优势。
图1表示H1中具有非交织列重量的奇偶校验矩阵的列重量分布,即,相同重量的列被分组在一起。码尺寸是(2000,1600)。
图2表示H1中具有交织列重量的奇偶校验矩阵的列重量分布。码尺寸是(2000,1600)。
图3表示尺寸(2000,1600)的未缩短码的FER性能。两个未缩短码是(a)802.16提议的设计(Intel);(b)不规则码设计。注意,不通过缩短,利用或者不利用列重量交织的不规则码设计具有相同的性能。
图4表示从(2000,1600)缩短800比特的(1200,800)码的FER性能。三个未缩短码是(a)802.16提议的设计(Intel);(b)没有列重量交织的不规则码设计;(c)具有列重量交织的不规则码设计。
图5表示从(2000,1600)缩短1200比特的(800,400)码的FER性能。三个未缩短码是(a)802.16提议的设计(Intel);(b)没有列重量交织的不规则码设计;(c)具有列重量交织的不规则码设计。
附录交织的列重量分布下面提供的是交织H1部分之后,不规则(2000,1600)H矩阵的列重量分布。从第一列开始表示每一列的列重量。
103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333
10333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333331033333310333333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333331033333103333310333333333333310333333333333310333333333333310333333333333310333333333333310333333333333310333333333333103333333333331033333333333310333333333333103333333333331033333333333310333333333333103333333333331033333333333310333333333333103333333333331033333333333310333333333333103333333333331033333333333310333333333333103333333333331033333333333310333333333333103333333333331033333333333310333333333333103333333333331033333333333310331033103310331033103310331033103310331033103310331033103310331033103310331033103310331033103310331032103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103
103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103103322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222权利要求
1.一种编码方法,根据当前符号集s=(s0,...sk-1)生成奇偶校验比特(p0,...,pm-1),该方法包括以下步骤获得所述当前符号集s=(s0,...sk-1),其中k是当未缩短时整个当前符号集的长度;利用矩阵H确定所述奇偶校验比特,其中H包括部分H1和部分H2,并且其中H1具有多个不同的列重量且包括多个子矩阵,其中至少一个重量的列基本上在子矩阵间交织;以及连同所述当前符号集一起发送所述奇偶校验比特。
2.权利要求1所述的方法,其中
3.权利要求1所述的方法,其中
4.权利要求1所述的方法,其中当所述至少一个列重量的希望列重量分布对于所述多个子矩阵的每一个都相同时,所述至少一个列重量在所述多个子矩阵中均匀地交织。
5.权利要求1所述的方法,其中当所述至少一个列重量的希望列重量分布对于所述多个子矩阵不同时,所述至少一个列重量在所述多个子矩阵中非均匀地交织。
6.权利要求1所述的方法,其中在子矩阵中交织不同重量的列,使得不同重量的列在所述子矩阵上主要均匀地散布。
7.权利要求1所述的方法,其中H1包括子矩阵H1a和H1b,其中H1a包括H1的头L列,而H1b包括H1的其余k-L列,其中L是所述当前符号集缩短的比特数,0<=L<=k-1。
8.权利要求7所述的方法,进一步包括将子矩阵子矩阵H1a和H1b细分为多个更小的子矩阵的步骤,其中在所述更小的子矩阵上交织给定重量的列。
9.一种用于操作估计当前符号集s=(s0,...sk-1)的解码器的方法,该方法包括以下步骤接收信号矢量y=(y0,...,yn-1);以及利用矩阵H估计所述当前符号集(s0,...sk-1),其中H包括部分H1和部分H2,并且其中H1具有多个不同的列重量且包括多个子矩阵,其中至少一个重量的列基本上在子矩阵间交织。
全文摘要
提出一种对于奇偶校验矩阵H交织不同重量的列的方法(图2),该矩阵H导致缩短的或者未缩短的性能良好的LDPC码。矩阵H包括部分H
文档编号G06F11/00GK1934789SQ200580008388
公开日2007年3月21日 申请日期2005年5月11日 优先权日2004年5月14日
发明者吴宇菲, 布赖恩·K·克拉松 申请人:摩托罗拉公司