CN100364237C - 非规则低密度奇偶校验码的系统码设计方法及其通信系统 - Google Patents

非规则低密度奇偶校验码的系统码设计方法及其通信系统 Download PDF

Info

Publication number
CN100364237C
CN100364237C CNB2004100392358A CN200410039235A CN100364237C CN 100364237 C CN100364237 C CN 100364237C CN B2004100392358 A CNB2004100392358 A CN B2004100392358A CN 200410039235 A CN200410039235 A CN 200410039235A CN 100364237 C CN100364237 C CN 100364237C
Authority
CN
China
Prior art keywords
matrix
column
row
code
node
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.)
Expired - Fee Related
Application number
CNB2004100392358A
Other languages
English (en)
Other versions
CN1558556A (zh
Inventor
殷柳国
陆建华
裴玉奎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CNB2004100392358A priority Critical patent/CN100364237C/zh
Publication of CN1558556A publication Critical patent/CN1558556A/zh
Application granted granted Critical
Publication of CN100364237C publication Critical patent/CN100364237C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

非规则低密度奇偶校验码的系统码设计方法及其通信系统属于通信信道编码技术领域,其特征在于,它提出了一种面向硬件实现的非规则LDPC码的系统码的设计方法:首先用半随机生成法得到一个基校验矩阵Hb,再把基矩阵的每个元素都扩展为一个方块子阵,由此得到非规则LDPC码的校验矩阵;它在生成上述Hb时先对行/列重量分布式作预变换;在扩展时引入了行/列非零元素个数大于1的特殊矩阵E以产生系统码,简化编码器结构;在产生伪随机单位交织阵时,引入了基于伽罗华域域元素乘方的交织方法,以保证不会带来译码损失,也便于硬件实现时对存储器的寻址。它具有编码复杂度低,硬件实现简单和避免纠错性能损失的优点。

Description

非规则低密度奇偶校验码的系统码设计方法及其通信系统
技术领域
非规则低密度奇偶校验码的系统码设计方法及其通信系统属于通信信道编码技术领域,特别涉及采用非规则低密度奇偶校验码(ILDPC码)用于纠正信道差错数据时的一种有效的ILDPC码设计方法。
背景技术:
数据在存贮以及传输过程中经常会引发各种差错。产生这种差错的原因有随机噪声、解调过程中的同步丢失、无线传输中的多径衰落、磁性存储器中的磁道缺损等。这种突发错误一般呈非周期性出现并且持续时间长短不定。由于这些差错的存在,大大限制了特定带宽下的信息传输速率和特定面积下存储器的存储容量。特别是在无线多媒体传输系统中,由于大量的数据要在带宽有限且受到各种突发严重干扰的信道中以很高的可靠性传输,这一问题变得更加突出。
为了解决数据传输和存储中的可靠性问题,通常采用信道编码的方法。在当前已有的信道编码方法中,新近提出的ILDPC码具有最为强大的纠错能力,具有很强的应用前景。
ILDPC码的基本原理为:
1.ILDPC码的定义和参数:
ILDPC码是一种二进制分组码,这种码采用超稀疏矩阵作为校验矩阵。矩阵中每行(每列)中非零元素的个数非常稀少,且位置呈随机分布。为了便于描述,定义一行(一列)中非零元素的个数为该行(列)的重量。由于ILDPC码的校验矩阵为随机生成的矩阵,各行(列)的重量不确定,因此采用重量分布式来描述这种矩阵。同一类ILDPC码校验矩阵的列重量分布可以用分布式表示为:
λ ( x ) = Σ j = 1 d v λ j x j - 1 - - - ( 1 )
式中λj表示重量为j的列在矩阵中所占的份量,dv为矩阵中列重量的最大的值。同样,同一类ILDPC码校验矩阵的行重量分布采用下式描述:
ρ ( x ) = Σ i = d 0 d c ρ i x i - 1 - - - ( 2 )
式中式中ρi表示重量为i的行在矩阵中所占的份量,d0为矩阵中行重量的最小值,dc为矩阵中行重量的最大值。由于ILDPC码是分组码,对于任何合法的码字V,与校验矩阵H的乘积为零,即H·VT=0。作为一个例子,我们给出了一个具体的3×7维ILDPC码校验矩阵与码字V=[v1 v2…v7]的乘积:
1 0 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 · v 1 v 2 v 3 v 4 v 5 v 6 v 7 = 0
由上式矩阵第一行与码字V的乘积可知,v1+v3+v4+v6=0。由此,码元v1、v3、v4和v6构成了一个校验码的约束。这些码元在经过调制、传输、解调以后可能出现差错,可根据这个约束进行软译码,使每个码元都得到一个该约束条件下其它码元关于该码元的取值信息,称为外信息,具体的译码原理及步骤参见下一节第三部分。(外信息即所有同属于一个码字的其它码元通过码字的约束关系而得到的关于某一个码元取值的信息。)类似地,校验矩阵每个行都形成一个校验约束,参与约束的码元都可通过这种约束下的软译码得到一个校验约束条件下关于该码元的外信息。当校验矩阵所有的行都完成相应约束关系的软译码后,从校验矩阵列方向上看,具有j个非零元素的第k列得到了j个关于码元vk取值的外信息。比如,上面所列的校验矩阵的第一列有两个非零元素,其中位于矩阵第1行第1列的非零元素通过第1行的校验约束可得到1个关于码元v1取值的外信息,而位于矩阵第3行第1列的非零元素通过第3行的校验约束也可以得到1个关于码元v1取值的外信息。这两个外信息和解调后所得的码元v1的软信息一起组成了一个3个码元的关于码元v1的重复码。采用下一节第二部分所述的译码原理,我们可以得到这3个码元在这个重复码约束下的外信息。所有列对应的重复码译码后得到的这些外信息再反馈回行方向的校验码约束,则可以再次进行下一轮的校验码一重复码的译码。通过这种循环迭代,ILDPC码实现其译码。为了便于对译码过程进行更加严谨的描述,定义解调后所得一个码元软信息和校验矩阵对应列非零元素通过行方向校验译码所得软信息组成的重复码约束关系为一个比特节点,节点的阶数即为该列非零元素的个数;同时定义校验矩阵每行对应的校验约束为一个校验节点,节点的阶数即为该行的非零元素个数。矩阵中的各个非零元素,既参与了比特节点的约束关系,又参与了校验节点的约束关系,因而可以定义矩阵非零元素所对应的关系为连结这两种节点的“连结线”。在迭代译码过程中,译码器利用矩阵的行和列所对应的校验节点和比特节点的约束关系进行迭代译码。在一次迭代过程中,首先利用比特节点的约束关系进行译码,各比特节点的输入为接收序列对应的对数似然值(即各个元符号取“1”的概率除以取“0”的概率再取自然对数所得的值)以及相关校验节点在上一次迭代的输出;随后,比特节点的输出通过“连结线”送到相应的校验节点,再利用校验节点的约束关系进行译码。在这个过程中,一种节点的输出成为另外一种节点的输入,矩阵中非零元素所对应的“连结线”成为了这两种节点输入输出交换信息的“通道”。对于码长为N比特,列重量分布和行重量分布分别由(1)(2)两式确定的ILDPC码,其j阶比特节点的个数为:
N j = N · λ j / j Σ j = 2 d v λ j / j = N · λ j / j ∫ 0 1 λ ( x ) dx , 2 ≤ j ≤ d v - - - ( 3 )
同理,i阶校验节点的个数为:
M i = M · ρ i / i Σ i = 2 d c ρ i / i = M · ρ i / i ∫ 0 1 ρ ( x ) dx , 2 ≤ i ≤ d c - - - ( 4 )
式中M为一个ILDPC码字中校验码元的长度。
2.ILDPC码的译码原理
ILDPC码的译码充分应用了校验矩阵的超稀疏特性,通过比特节点和校验节点的约束关系计算并输出外信息,并相互反馈,进行迭代译码。当前,ILDPC码的译码方法主要为和积译码方法。这种方法的输入为接收序列的对数似然值,并在对数空间下通过利用比特节点利校验节点的约束关系进行迭代译码。此时,比特节点的约束关系表现为“和”的形式,即各比特节点的输出是各个输入对数似然值的和;而相应的校验节点则表现为某种“积”的形式,即各校验节点的输出是各个输入对数似然值的某种“连乘积”。由于这个特点,该方法被称之为和积译码方法。
1)接收序列的软解调:
以二元输入加性白高斯噪声信道下的信息传输系统为例,长为N-M比特的二进制信息序列被ILDPC编码器编成长度为N比特的ILDPC码字。随后,该码字被调制成取值为±1的符号序列在高斯信道中传输。在接收端,接收机经过匹配滤波后得到了一串含噪声干扰的长度为N的实数序列R1 N,随后进行信号解调。高斯信道、BPSK调制下,第i个码元为1而经调制和传输后接收机收到信号为Ri的概率为:
P ( R i | v i = 1 ) = 1 2 π σ 2 exp { - 1 2 σ 2 ( R i - 1 ) 2 } , 1 ≤ i ≤ N - - - ( 5 )
其中σ2为信道噪声的标准方差。
同样,第i个码元为0而经调制和传输后接收机收到信号为Ri的概率为:
P ( R i | v i = 0 ) = 1 2 π σ 2 exp { - 1 2 σ 2 ( R i + 1 ) 2 } , 1 ≤ i ≤ N - - - ( 6 )
由贝叶斯定理,得到:
P ( v i = 1 | R i ) = P ( R i | v i = 1 ) · P ( v i = 1 ) P ( R i ) , - - - ( 7 )
P ( v i = 0 | R i ) = P ( R i | v i = 0 ) · P ( v i = 0 ) P ( R i ) . - - - ( 8 )
在发送过程中,码元符号取0和1的概率相等。为了便于解调信号的输出,通常采用对数似然比的形式表示接收到的第i个码元取值的最大后验概率:
LLR ( R i ) = ln P ( v i = + 1 | R i ) P ( v i = - 1 | R i ) - - - ( 9 )
由以上各式,得:
LLR ( R i ) = ln P ( v i = + 1 | R i ) P ( v i = - 1 | R i ) = ln P ( R i | v i = + 1 ) P ( R i | v i = - 1 )
= ln 1 2 π σ 2 exp { - 1 2 σ 2 ( R i - 1 ) 2 } 1 2 π σ 2 exp { - 1 2 σ 2 ( R i + 1 ) 2 } = 2 σ 2 R i
= sign ( R i ) · | 2 σ 2 R i | - - - ( 10 )
式中Sign(·)为符号函数。上式中,第一项符号函数表示了由接收信号得到的原发送信号取值概率的比较结果。符号函数取正值表示原码元符号为1的概率大于为0的概率;取负值则表示原码元符号为0的概率大于为1的概率。而第二项绝对值的大小则表示了该符号取1的概率与取0的概率之间的差异程度。绝对值越大,则两个概率值的差异越大。因此,(10)式根据每个接收信号提供了两个信息,一个信息为原信号最可能取哪个值,另一个信息则表示了这种判断的可靠程度。接收机的这种解调过程充分保留了原信号的信息,被称为“软解调”,或者“软判决”,相应的软判决输出称为“软信息”。
解调器输出的软信息被送到ILDPC译码器进行译码。ILDPC译码器的译码充分利用了校验矩阵的超稀疏特性,将校验矩阵的约束关系分解为行的校验码约束关系和列的重复码约束关系,通过利用这两种约束关系的相互反馈,进行迭代译码。为了便于了解在这两种约束关系下的译码过程,下面首先讨论重复码和校验码的译码过程。
2)重复码的约束关系及其译码:
重复码的编码即是将输入的信息符号进行N-1次重复,从而得到一个长为N的码字V1 N。因此,重复码只有两个合法码字:全0码字01 N和全1码字11 N。经过调制、传输、解调以后,译码器根据调制器提供的软信息进行译码。在接收到的信号序列为R1 N的前提下,根据重复码的约束关系进行译码,得到一个采用对数似然比表示的输出序列U1 N。其中,第i个符号最大后验概率取值的对数似然比为:
LLR ( u i ) = ln p ( v i = 1 | R 1 N ) p ( v i = 0 | R 1 N ) = ln p ( v i = 1 , R 1 N ) p ( v i = 0 , R 1 N )
= ln Σ · · · 1 ≤ i ′ i ′ ≠ i ≤ N Σp ( v 1 , v 2 , · · · , v i = 1 , · · · , v N , R 1 N ) Σ · · · 1 ≤ i ′ ≤ N i ′ ≠ i Σp ( v 1 , v 2 , · · · , v i = 0 , · · · , v N , R 1 N )
= ln Σ · · · v i ′ ∈ V 1 N i ′ ≠ i Σp ( v 1 , v 2 , · · · , v i = 1 , · · · , v N ) · p ( R 1 N | v 1 , v 2 , · · · , v i = 1 , · · · , v N ) Σ · · · v i ′ ∈ V 1 N i ′ ≠ i Σp ( v 1 , v 2 , · · · , v i = 0 , · · · , v N ) · p ( R 1 N | v 1 v 2 , · · · , v i = 0 , · · · , v N ) - - - ( 11 )
由于重复码只有全0和全1两个码字,因而上式中分子分母乘积项中的第一项只有在码字分别为全1码字和全0码字时,概率才不为0。从而,(11)式可以继续化简为:
LLR ( u i ) = ln p ( R 1 N | V 1 N = 1 1 N ) p ( R 1 N | V 1 N = 0 1 N ) = ln Π i ′ = 1 N p ( R i ′ | v i ′ = 1 ) Π i ′ = 1 N p ( R i ′ | v i ′ = 0 ) - - - ( 12 )
= Σ i ′ N LLR ( v i ′ ) = LLR ( v i ) + Σ i ′ ≠ i LLR ( v i ′ )
上式中结果的第一部分是码元i接收信号的对数似然比值,为码元本身所具有的信息,称为“先验信息”;第二部分是码字中其它码元根据码字的约束关系而提供的关于码元i的取值信息,称为“外信息”。由于先验信息为各个码元本身就有,因而在译码过程中译码器只需给每个码元反馈相应的外信息。重复码的译码关系可以采用图1所示的一个节点图来表示。
图1中的节点共有N条连结线,对应N个码元。这些连结线既可以作为输入也可以作为输出,分别对应N个码元的输入和译码输出。在一次译码过程中,接点通过N条连结线收到以对数似然比的形式表示的解调信息序列,随后,通过节点的运算,译码结果也通过这些连结线输出N个码元的外信息。其中,每条连结线的输出为其它各条连结线的输入值的累加和。在对ILDPC码译码的描述中,重复码的这种译码节点也被称为“比特节点”。
3)校验码的约束关系及其译码:
以码率为N-1/N的校验码为例,长为N-1个比特的信息序列经过编码后得到一个码长为N的校验码,码元之间的约束关系可以用如下的关系式表示:
v1v2…vN=0    (13)
式中表示二进制和,即二进制逻辑中的“异或”。校验码所得的码字V1 N经过调制、传输、解调后,得到包含该码字信息的一个软信息序列LLR(R1 N)。校验码译码器即根据这个软信息序列进行译码。定义二元符号ei为码字中除了第i个码元vi外其它所有码元的二进制和,则由(13)式可得:
viei=0    (14)
由二进制的异或关系以及(14)式,得码元vi与符号ei取值相同。因而,码元vi与符号ei形成一个相当于重复码的关系。由上面重复码所讨论得到的结果可知,码元vi通过译码后所得的后验信息为:
LLR ( v i ^ ) = LLR ( v i ) + LLR ( e i ) - - - ( 15 )
显然,(15)式中的第二项就是在译码过程中译码器根据整个码序列的约束关系反馈给码元vi的外信息。下面,我们以码长为3的校验码为例,推导外信息的表示式。不失一般性,我们讨论第一个码元的外信息表示式。在码长为3比特的情况下,符号e1取值为1的概率为:
p(e1=1)=p(v2=1)·p(v3=0)+p(v2=0)·p(v3=1)
=p(v2=1)·(1-p(v3=1))+(1-p(v2=1))·p(v3=1)    (16)
=p(v2=1)+p(v3=1)-2p(v2=1)·p(v3=1)
从而,
1-2p(e1=1)=1-2p(v2=1)-2p(v3=1)+4p(v2=1)·p(v3=1)    (17)
=(1-2p(v2=1))·(1-2p(v3=1))
引入一个函数:
Φ ( x ) = tanh ( - 1 2 x ) = exp ( - 1 2 x ) - exp ( 1 2 x ) exp ( - 1 2 x ) + exp ( 1 2 x ) = 1 - exp ( x ) 1 + exp ( x ) - - - ( 18 )
那么,
Φ ( LLR ( e 1 ) ) = Φ ( ln p ( e 1 = 1 ) p ( e 1 = 0 ) ) = 1 - exp ( ln p ( e 1 = 1 ) p ( e 1 = 0 ) ) 1 + exp ( ln p ( e 1 = 1 ) p ( e 1 = 0 ) ) = 1 - 2 p ( e 1 = 1 ) - - - ( 19 )
由(17)、(19)式,得码元v1的:外信息表示形式为:
LLR(e1)=Φ-1(Φ(LLR(v2)·Φ(LLR(v3))    (20)
(20)式可以推广到任意一个码元,也可以推广到码长大于3比特的情况。在码长为N比特得情况下,码元i的外信息为:
LLR ( e i ) = Φ - 1 ( Π 1 ≤ i ′ i ′ ≠ i ≤ N Φ ( LLR ( v i ) ) ) - - - ( 21 )
校验码的这种译码运算关系也可以采用一个节点来表示,如图2所示:
图2中节点具有N个连结线,对应N个码元;每根连结线既是输入也是输出。其中,输入对应于输入到译码器的软信息序列,输出则是译码器通过运算反馈给各个码元符号的外信息。在一次译码中,每根连结线输入该码元解调后得到的软信息到节点,随后节点通过运算,给每个连结线一个外信息输出。注意到,图2中每根连结线的输出是以其它所有连结线的输入值作为输入的运算结果。在后续ILDPC码的译码中,校验码的这种译码节点被称为“校验节点”。
4)ILDPC码的译码过程:
信息序列经过ILDPC码的编码、调制、传输后,由接收机进行匹配滤波,得到相应的包含ILDPC码字信息的接收序列R1 N,随后这个序列被送到ILDPC码译码器进行纠错译码。在一次译码过程中,译码器首先对接收序列进行解调,把接收序列转化为软信息的形式;随后,利用ILDPC码的校验方程H·VT=0进行译码。注意到ILDPC码的校验矩阵为超稀疏矩阵,每行/列的非零元素个数非常稀少。由校验方程知,矩阵的每行ILDPC码的乘积,实际上是与该行非零元素相乘的码元的二进制和。由校验码的约束方程可知,这些码元构成了一个校验码的约束。由于校验矩阵有M行,因而一共能得到M个校验码。通过采用校验码的译码方法,每个校验码都可以在各自的约束关系下给各个码元一个反映该码元取值情况的外信息输出。而对于校验矩阵的每一列,由于其元素在校验矩阵与码字的乘法中只与同一个码元相乘,而该列的每个非零元素都对应一个校验码对该码元符号取值情况的输出。于是,这些校验码的输出与接收到的码元软信息一起,构成了一个重复码的约束。由于校验矩阵共有N列,因而可以得到N个重复码,分别与ILDPC码字的N个码元对应。ILDPC码的译码即是通过将校验矩阵的约束关系分解为这M个校验码和N个重复码的约束关系,通过这两种码的译码输出相互反馈为对方的输入,进行并行迭代译码。由以上关于重复码和校验码的讨论,ILDPC码的译码网格图可以由图3表示:
首先,接收序列被译码器转化为软信息后,译码器将所有校验节点的初始输出设为0,随后根据接收序列的软信息和校验节点的初始输出进行N个比特节点的同时译码。这些比特节点对各个码元的外信息输出,被通过连结线送到相应的校验节点,随后M个节点同时进行校验码的译码,每个校验节点的对每个码元符号的译码输出都通过连结线反馈回相关的比特节点。在下一次迭代开始时,每个比特节点都将自己所有的输入累加,得到一个码元的后验信息,随后根据这个后验信息进行硬判决译码。N个比特节点的硬判决译码得到一个码字的估值信息序列。如果校验矩阵与这个估值信息序列的乘积为零,则译码器停止迭代译码并输出这个估值作为译码结果;否则,译码器进行下一次比特节点一校验节点的译码迭代,直到所得估值序列为一个合法ILDPC码字或者达到最大迭代次数为止。译码器的输出为最后一次得到的硬判决估值序列。
设rij为从校验节点i输出到比特节点j的外信息,qij为从比特节点j到校验节点i的外信息,该和积译码方法的迭代过程包括如下步骤:
1)译码初始化:对于接收到的实数序列R1 N,对应的ILDPC码第j个码元的初始接收值被译码器解调成对数似然比的形式:
LLR ( R j ) = 2 σ 2 R j , 1 ≤ j ≤ N - - - ( 22 )
式中LLR表示取值为对数似然比,σ2为信道噪声的标准方差。同时,初始条件下校验节点没有任何关于码字的信息,故设置校验节点i输出到比特节点j的外信息为:
LLR(rij)=0    (23)
2)若所得到的序列的硬判决结果不为一个合法的码字(其中硬判决是指根据序列各个符号的对数似然值决定各个码元符号的比特取值,对数似然值为正数则码元取符号“1”,为负数则码元取符号“0”),执行一次和积译码的迭代过程为:
a)比特节点的译码:在这种节点的约束关系下,输出与输入的关系为“和”的关系,即比特节点j到校验节点i的外信息输出为:
LLR ( q ij ) = Σ i ′ ∈ Col [ j ] i ′ ≠ i LLR ( r i ′ j ) + LLR ( R j ) - - - ( 24 )
式中Col[j]表示校验矩阵H第j列非零元素的位置集合。
b)校验节点的译码:在校验节点的约束关系下,输出与输入的关系为某种“积”的关系,即校验节点i输出到比特节点j的外信息为:
LLR ( r ij ) = Φ - 1 ( Π j ′ ∈ Row [ i ] j ′ ≠ j Φ ( LLR ( q i j ′ ) ) ) - - - ( 25 )
式中Row[i]表示校验矩阵H第i行非零元素的位置集合,并且
Φ ( x ) = tanh ( - 1 2 x ) - - - ( 26 )
3)迭代后所得的第j个比特节点的译码结果为该节点所有输入的和:
LLR ( v ^ j ) = Σ i ′ ∈ Col [ j ] LLR ( r i ′ j ) + LLR ( R j ) - - - ( 27 )
对所得到的译码结果进行如下的硬判决,然后转移到第二步。其中第j个码元符号的硬判决为:
u ^ j = 1 if LLR ( v ^ j ) > 0 0 if LLR ( v ^ j ) < 0 - - - ( 28 )
4)如果需要进行下一个码字的译码,跳转到第一步;否则,结束译码。
ILDPC码的译码充分利用了比特节点和校验节点的性质,以及接收序列的所有信息,因而可以得到接近理论极限的译码性能,同时迭代过程的延时很小,适合恶劣信道下的高速数据传输。因此,LDPC码在宽带无线多媒体通信系统、高清晰度数字电视系统、DAB/DVB系统、磁存储器系统等多种系统中都具有很强的应用前景。由此,LDPC码的设计在近年成为了研究热点。
3.ILDPC码的设计
ILDPC码是一种随机码,不像卷积码或者BCH码那样有确定的生成多项式。因此必须根据ILDPC码的码长、码率、行/列重量分布式等参数生成具体的校验矩阵和生成矩阵,才能在实际系统中应用。
现有的ILDPC码译码的设计方法有两种。方法一为全随机填充法。对于码长为N,校验比特长为M的ILDPC码,这种方法首先产生一个M×N维的全零矩阵,并根据ILDPC码的行/列重量分布式,确定矩阵每列/行应有的非零元素个数。随后,并采用随机的方法逐行选取一组零元素,并将它们置换为非零元素。如果这一置换没有使校验矩阵产生周期为4的小循环,即矩阵中同一列的任意两个非零元素不和矩阵任意其它列中的任意两个非零元素同时具有相同的行位置,则置换保留,随后进行下一列的置换;如果置换带来了周期为4的小循环,则置换无效,再重新随机选取一组零元素进行置换,直到得到满足条件的列为止。在所有的列都得到满足要求的置换后,校验矩阵再在保持各非零元素列位置不变以及不产生周期为4的小循环的前提下调整非零元素的行位置,使得非零元素在各行的分布也满足要求。这种方法设计的ILDPC码可以有很好的纠错性能,但是在进一步的编译码器硬件实现时只能采用全并行结构,实现复杂度随着码长的增长而呈指数次方增长,并且和/积译码单元之间的连线极易造成拥塞,因而可以实现的最大码长只有一两千比特,不能完全满足实际应用的需要。
方法二为半随机法。这种方法通过级联的方式产生LDPC码的校验矩阵:对于码长N=Nb·L,其中L为扩展系数,校验比特数为M=Mb·L的ILDPC码,首先根据和/积节点分布式生成维数为Mb×Nb的基校验矩阵,随后,对于矩阵的每一个元素,都扩展为一个L×L矩阵:基矩阵中的零元素扩展为L×L维全零阵,非零元素则采用经过伪随机交织后的L×L维单位阵进行扩展。这种方法得到的校验矩阵具有比较好的硬件实现结构,但是对码型的设计提出了很高的要求。如果码型设计得不好,则很容易产生明显的性能损失。此外,方法二现有的技术得到的都是非系统码,对应的编码器结构复杂,同样难于实现。
发明内容
本发明的目的在于克服现有技术的不足之处,提出了一种面向硬件实现的非规则ILDPC码的系统码设计方法及其通信系统。这种设计方法采用两级级联构造方法,即首先采用随机生成法得到一个基校验矩阵Hb,随后将基矩阵的每个元素都扩展为一个方块子矩阵,由此得到了ILDPC码的校验矩阵。与方法二不同的是,本发明考虑了编码器的要求,在生成基校验矩阵时首先对行/列重量分布式进行变换再作为基矩阵的重量分布式。随后,在矩阵扩展时,本方法除了采用全零矩阵和伪随机交织单位阵以外,还引入了行/列非零元素个数大于1的特殊矩阵E,用于产生系统码:
Figure C20041003923500161
通过E矩阵的引入,可以得到系统ILDPC码,使得编码器具有很简单的结构,非常便于硬件实现。此外,本发明在产生伪随机交织单位阵时,还引入了一种基于伽罗华域域元素乘方的交织方法,在保证没有带来译码性能损失的同时也便于硬件实现时的存储模块寻址。
本发明的思路为,它在矩阵扩展时引入了行/列非零元素个数大于1的特殊子矩阵,使得所得到的ILDPC码为系统码,同时矩阵扩展所用的伪随机交织单位阵由一种基于伽罗华域域元素乘方的交织方法得到,具体而言,它依次含有如下步骤:
(1)行/列重量分布式预变换:对于码长N=Nb·L,校验比特数为M=Mb·L的ILDPC码,在基矩阵产生前首先对LDPC码的行/列重量分布式进行预变换,得到,Mb×Nb维基矩阵的行/列重量分布式;
(2)生成基矩阵:根据得到的基矩阵行/列重量分布式,基矩阵左边的Mb×Mb模块为单位阵,右边的Mb×(Nb-Mb)模块中的列/行中的非零元素采用随机填充的方法产生;
(3)矩阵扩展:对于基矩阵中的每个元素,都扩展成一个L×L维子矩阵。其中,基矩阵中的零元素扩展成L×L维零阵,基矩阵左边Mb×Mb模块中的非零元素扩展成为L×L维E阵,而对于基矩阵右边Mb×(Nb-Mb)模块中的非零元素,我们采用随机搜索的方法选取一组参数 { k &Element; { 0,1,2,3 } , &alpha; j 0 , &alpha; j 1 &Element; GF ( 2 p ) } , 根据所选参数产生如下所述的交织器:
a)k=0时:行方向i:1≤i≤n;列方向:αi1·(αi0)j:O≤j≤n;
b)k=1时:行方向:n+1-i:1≤i≤n;列方向:αi1·(αi0)j:0≤j≤n;
c)k=2时:行方向:i:1≤i≤n;列方向:n+1-αi1·(αi0)j:0≤j≤n;
d)k=3时,行方向:n+1-i:1≤i≤n;列方向:n+1-αi1·(αi0)j:0≤j≤n;
采用上述交织器对L×L维单位阵进行交织,随后将所得伪随机交织单位阵用于替换基矩阵中的相应元素,如果这一替换不产生周期为4的小循环,则替换保留;否则,重新产生一组参数并产生相应的伪随机交织单位阵,再次进行替换,直到不产生周期为4的小循环为止。
本发明的特征在于:通过这种方法得到的ILDPC码,具有很好的结构,可以以很低的复杂度实现其编解码器:同时,这种ILDPC码亦保证了ILDPC码的纠错性能。作为一个例子,表一给出了分别采用本发明的方法和方法1设计的行/列重量分布式分别为λ(x)=0.002526+0.636564x+0.240607x2+0.120303x4和ρ(x)=0.469375x5+0.530625x6的、码长为8128比特、码率为1/2的ILDPC码在BIAWGN信道各种Eb/N0下的纠错性能。其中采用本发明设计时Nb=64,Mb=32,L=127。
表1.两种译码算法在BIAWGN信道下的纠错性能。
E<sub>b</sub>/N<sub>0</sub>(dB)   1.01   1.11   1.21   1.31   1.41
本发明所得ILDPC码   9.208e-003   2.309e-003   3.706e-004   3.468e-005   2.133e-006
方法一所得ILDPC码   1.068e-002   2.838e-003   4.469e-004   5.064e-005   1.969e-006
由表1可见,本发明的方法产生的ILDPC码在性能上与方法一所得的ILDPC码几乎一致。可见,采用本方法能够使ILDPC码具有很好的硬件结构的同时保持其良好的纠错性能,大大提高了ILDPC码的实用性。
实验证明,通过这种方法得到的ILDPC校验矩阵,与方法一产尘的校验矩阵相比,在译码性能上没有损失;与方法二相比,得到了更好的译码性能,同时也得到了系统ILDPC码,在译码器具有简单硬件结构的同时编码器也具有很简单的硬件实现结构,可以以很低的复杂度实现译码器和编码器。
附图说明:
图1.重复码的译码节点图。
图2.校验码的译码节点图。
图3.ILDPC码的译码网格图。
图4.实现与(E-1)T矩阵相乘的卷积电路。
图5.本发明所述方法的程序流程图。
图6.应用本发明设计的ILDPC码纠正传输差错的通信系统框图。
图7.基于本发明所得ILDPC码生成矩阵的ILDPC编码器。
图8.基于本发明所得ILDPC码校验矩阵的ILDPC译码器。
图9.和节点处理单元VNCU电路图。
图10.积节点处理单元CNCU电路图。
具体实施方式
本发明提出的ILDPC码的设计方法分成两个部分:首先构造Mb×Nb维的基矩阵,随后对于基矩阵的每一个元素,都扩展成为一个L×L维子矩阵,从而得到了M×N维校验矩阵。
1.基矩阵的构造
对于Mb×Nb基矩阵Hb,由ILDPC码的行/列重量分布式可以得到对应j阶和节点和i阶积节点的个数为:
n b ( j ) = N b &CenterDot; &lambda; j / j &Integral; 0 1 &lambda; ( x ) dx - - - ( 30 )
m b ( i ) = M b &CenterDot; &rho; i / i &Integral; 0 1 &rho; ( x ) dx - - - ( 31 )
由于在矩阵的扩展中引入了行/列非零元素个数大于1的矩阵,基矩阵中各阶和/积节点的数量分布式必须进行相应的调整,以使得经过矩阵扩展后所得校验矩阵满足行/列重量分布式。对于本发明所考虑的ILDPC码,基矩阵的各阶和节点数量分布式变为:
n b &prime; ( j ) = M b for j = 1 ; 0 for j = 2 ; n b ( j ) for 3 &le; j &le; d v - - - ( 32 )
类似地,基矩阵的各阶积节点列重量分布式变为:
m b &prime; ( i ) = m b ( d 0 ) &CenterDot; L - 1 L for i = d 0 - 1 ; m b ( i ) &CenterDot; 1 L + m b ( i + 1 ) &CenterDot; L - 1 L for d 0 &le; i < d c ; m b ( d c ) &CenterDot; 1 L for i = d c . - - - ( 33 )
此外,考虑到系统码的特点,我们采用下式所示的结构设计基矩阵:
H b = I M b &times; M b . . . . . . &pi; ( P M b &times; n b &prime; ( 3 ) P M b &times; n b &prime; ( 4 ) &CenterDot; &CenterDot; &CenterDot; P M b &times; n b &prime; ( d v ) ) - - - ( 34 )
式中IMb×Mb是一个Mb×Mb维单位阵,PMb×nb′(j)(3≤j≤dv)是一个Mb×nb′(j)维、每列有j个非零元素的二元矩阵,π(·)代表一个列方向上的随机交织器。基矩阵的π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))部分可以采用如下的随机填充法得到:
a)定义一个Mb×Nb全零二元校验矩阵,随后将矩阵左边的Mb×Mb部分变换成为单位阵IMb×Mb
b)然后,对矩阵中的第k列(Mb<k≤Nb),从Nb个列重量中不放回地随机抽出一个作为该列的重量,设为Lk。随后,从该列的Mb个行位置中随机选取Lk个,并将对应位置的零元素置换为非零元素‘1’。如果这一置换使H矩阵产生了周期为4的小循环,则删除掉这一列的所有非零元素并重新选取Lk个行位置进行非零元素置换,直到使该列得到不产生周期为4的小循环的Lk个非零元素为止。
c)列方向上的非零元素生成完成以后,需要在Mb个行方向上对π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))部分的非零元素进行调整,使得非零元素在行方向上也达到所规定的分布。调整方法为在保持列位置不变的条件下将非零元素从数量过多的行调整到数量过少的行,在这一过程中同样要避免产生周期为4的小循环。
2.矩阵扩展
考虑伽罗华域GF(2p),其中p为素数。设α为域GF(2p)中的一个本源元素并且扩展系数L=2p-1,那么域GF(2p)中的所有元素可以表示成为0=α,1=α0,α1,α2,…,αL-1。此外,由于p为素数,由伽罗华域的有关定理可知,对于满足0<j0<L,0≤j1<L两个整数j0,j1,序列αj1·(αj0)0,αj1·(αj0)1,…,αj1·(αj0)L-1组成了域GF(2p)的所有非零元素。进一步假设域元素α的值为f(α),那么由域元素序列αj1·(αj0)0,αj1·(αj0)1,…,αj1·(αj0)L-1所对应的值序列f(αj1·(αj0)0),f(αj1·(αj0)1),…,f(αj1·(αj0)L-1)则为正整数序列1,2,…,L的一个伪随机交织。同样,序列L+1-f(αj1·(αj0)0),L+1-f(αj1·(αj0)1),…,L+1-f(αj1·(αj0)L-1)也是正整数序列1,2,…,L的一个伪随机交织。在码的扩展中,我们采用这两种伪随机序列对单位阵进行列交织,得到所需要的伪随机单位交织阵。
在基矩阵的扩展中,我们采用如下策略:
(1)基矩阵Hb中的每个零元素,扩展成一个L×L维全零阵;
(2)基矩阵中IMb×Mb部分的每个非零元素,都扩展成一个L×L维E阵;
(3)对于基矩阵中π(PMb′×nb′(3)PMb×nb′(4)…PMb×nb′(dv))部分的每个非零元素,则采用一个
L×L维伪随机单位交织阵进行扩展,在扩展中必须避免产生周期为4的小循环。
其中,在用于单位阵交织的伪随机序列由一组参数 { k &Element; { 0,1,2,3 } , &alpha; j 0 , &alpha; j 1 &Element; GF ( 2 p ) } 根据如下方式产生:
a)k=0时:行方向i:1≤i≤n;列方向:αi1·(αi0)j:0≤j≤n;
b)k=1时:行方向:n+1-i:1≤i≤n;列方向:αi1·(αi0)j:0≤j≤n;
c)k=2时:行方向:i:1≤i≤n;列方向:n+1-αi1·(αi0)j:0≤j≤n;
d)k=3时,行方向:n+1-i:1≤i≤n;列方向:n+1-αi1·(αi0)j:0≤j≤n;
由此,我们得到了ILDPC码的校验矩阵:
Figure C20041003923500202
Figure C20041003923500203
从而,ILDPC码的生成矩阵可以表示成为:
Figure C20041003923500204
由上式可见,所得到的ILDPC码为系统码。其中
Figure C20041003923500205
(37)
为上三角矩阵。设信息序列为X1×(N-M),则ILDPC码的编码过程可以表示为:
C = X 1 &times; ( N - M ) &times; G
Figure C20041003923500212
由于矩阵P(Mb·L)×((Nb-Mb)·L) T是一个由L×L维子矩阵组成的超稀疏矩阵,信息序列与该矩阵的乘积同样可以部分并行的结构实现,此外,由于(E-1)T是上三角矩阵,与该矩阵的乘积可以采用一个简单的卷积电路通过时分复用的方式实现。因此,整个编码器的复杂度非常低,非常利于VLSI实现。
实施例:本实施例为在清华同方PC机上用软件实现本发明提出的ILDPC码设计方法,如图5所示,包括以下步骤:
程序开始后,首先进入初始化状态501。在这一步骤中,首先生成一个Mb×Nb维全零基矩阵Hb,同时根据ILDPC码行/列重量分布式以及基矩阵的参数,由(30)-(33)式确定基矩阵中各阶和/积节点的数量以及基矩阵各行/各列应有的非零元素个数。完成这些操作后,程序跳转到步骤502,开始生成基矩阵的非零元素。在这一步,首先将全零矩阵左边Mb×Mb部分对角线的0元素置换成1,由此得到IMb×Mb。随后在步骤503-508,通过随机搜索的方法产生基矩阵右边Nb-Mb列的非零元素:对于这一部分的每列,根据初始化时设定的非零元素个数,随机选取列中相应个零元素并把它们置换成1。如果这一组置换不产生周期为4的小循环,则置换保留,随后进行下一列非零元素的生成;如果产生了周期为4的小循环,则删除这一组置换,然后再重新选取一组零元素进行置换,直到得到满足要求的列为止。在所有的列都完成非零元素的生成以后,程序跳转到步骤509,开始进行行方向的非零元素调整,使得各行的非零元素在数量上也满足初始化所设定的值。具体步骤为:在步骤512,计算基矩阵第i行的非零元素个数Ni,然后判断是否小于该行所设定的值Ni0如果不是,则跳转到步骤511,程序转到基矩阵下一行继续进行调整;如果Ni<Ni0,则跳转到步骤513,从基矩阵各行中寻找非零元素个数大于设定值的行i′。随后在步骤515,从i′行中选取一个列位置大于Mb的行上的非零元素,并将该元素转移到第i行的同列位置。在步骤516,判断这一转移没有带来周期为4的小循环。如果这一转移没有带来周期为4的小循环,则程序跳转到步骤514,调整保留,Ni+1,随后程序跳转到步骤512,继续判断第i行的元素是否仍然小于所设定的值;如果这一转移带来了周期为4的小循环,则程序跳转到步骤517,非零元素的调整被删除,程序在步骤518判断i′行是否所有列位置大于Mb的非零元素都都已尝试过调整到第i行。如果不是,则跳转到步骤515,继续从i′行中选取另一个列位置大于Mb的非零元素并将该元素转移到第i行的同列位置;如果是,则程序跳转到步骤513,重新随机选取非零元素个数大于设定值的行i″,从中选取一个列位置大于Mb的非零元素调整到第i行,直到第i行的非零元素个数满足要求。当所有的行的非零元素个数满足要求以后,所得的基矩阵就是所求的基矩阵。随后,程序进入到步骤519,开始进行矩阵扩展。首先,在步骤519,程序产生一个M×N维的全零矩阵H,并分成Mb×Nb个L×L维子矩阵,每个子矩阵与基矩阵的一个元素相对应。随后,在步骤520,将基矩阵中IMb×Mb部分非零元素所对应的H矩阵的子模块替换成E。完成这一操作后,程序在步骤521-525通过随机交织法对基矩阵右边Nb-Mb列的非零元素所对应的H矩阵模块进行非零元素填充。对于基矩阵右边Nb-Mb列的每个非零元素,程序随机选取一组参数 { k &Element; { 0,1,2,3 } , &alpha; j 0 , &alpha; j 1 &Element; GF ( 2 p ) } , 根据上一节所提的方法对L×L维单位阵进行交织,并将所得交织单位阵替换到H矩阵对应模块。如果这一替换不产生周期为4的小循环,则替换保留,随后进行下一非零元素对应模块的非零元素的生成;如果产生了周期为4的小循环,则删除这一组替换,然后再重新选取一组参数产生交织单位阵,对相应模块进行置换,直到得到满足要求的模块为止。当基矩阵右边Nb-Mb列所有的非零元素都完成了相应H矩阵模块的扩展,则得到了如(35)式所示的校验矩阵。在步骤526,程序输出所得到的校验矩阵。随后程序转移到在步骤527,由校验矩阵生成如(36)式的生成矩阵。到此,完成了一个ILDPC码的设计。
参照图6,采用本发明方法设计的ILDPC码纠正传输差错的通信系统包括一个产生数字信息流的信源61,  如图7所示的ILDPC编码器63,传输信道65,以及如图8所示的纠正传输错误的ILDPC译码器67。
在本例中,信源61产生的携带信息的数据符号流62被送往ILDPC码编码器63,ILDPC编码器63根据(38)式对信息序列进行编码。采用本发明所得生成矩阵的编码器如图7所示,它采用Mb路并行的部分并行结构,包括输入存储器阵列MEMI,校验比特生成阵列PCBGU,以及输出多路选择器Multiplex。定义Q为基矩阵Hb中非零元素的个数,输入存储器阵列MEMI由Q-Mb个长度为L的存储器组成,每个存储器与基校验矩阵Hb右边部分π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))的1个非零元素一一对应。所有存储器的输入端都通过总线的方式实现与编码器数据输入端的连接,矩阵π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))同一列非零元素所对应的存储器都具有相同的写入寻址模式;而矩阵π(PMb×nb′(3)PMb×nb2′(4)PMb×nb′(dv))第i(1≤i≤Mb)行的非零元素所对应的所有存储器则连接到第i个校验比特生成单元PCBGUi,各个存储器根据所对应的单位交织阵的交织参数生成各自的数据读出寻址模式。校验比特生成阵列有Mb个校验比特生成单元,它们通过Mb路并行的方式实现输入信息序列X1×(N-M)与校验阵P(Mb·L)×((Nb-Mb)·L) T的乘积,每路以串行的方式实现L个比特的乘积。随后,每个PCBGU单元再通过一个图4所示的卷积电路实现与E矩阵的乘积,从而得到Mb路长为L的校验序列。最后输入到编码器的信息序列以及由Mb个PCBGU单元生成的校验序列通过时分复用的方式从多路选择器Multiplex中输出,由此得到一个ILDPC码的码字。具体而言,一个ILDPC编码器的编码过程包括两个步骤:
1)信息序列输入:由于编码器采用Mb并行方案,长为N-M比特的信息序列被分成Nb-Mb个长度为L比特的信息模块,这些模块通过分时模式输入到相应的MEMI存储器模块中,与此同时这些信息比特作为ILDPC码字的信息序列部分从多路选择器输出。具体而言,在第i个长为L个时钟周期的时隙里,第i个长为L比特的信息序列模块输入到所有与矩阵π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))第i列非零元素对应的存储器中;同时在这L个时钟周期里,该信息序列模块通过多路选择器输出。由于一共有Nb-Mb个长度为L的信息序列模块,输入过程共需要(Nb-Mb)·L个时钟周期。在这一过程的最后一个时钟周期里,校验比特生成模块PCBGU中所有卷积电路的寄存器清零。
2)校验比特序列的生成及输出:这一阶段编码器通过Mb路并行的方式生成ILDPC码的校验比特序列。这一过程共需要Mb·L个时钟周期,在第j个长为L个时钟周期的时隙里,校验比特生成模块第j个单元PCBGUj生成相应的校验比特模块。与PCBGUj连接的各个存储器按照各自的读出寻址模式将所存储的信息比特输出到PCBGUj,PCBGUj所生成的校验比特从多路选择器输出。当所有PCBGU都完成相应的校验比特模块生成并输出后,ILDPC编码器的一个编码过程完成。
编码后的ILDPC码流64在传输信道65传输过程中受到干扰而产生差错,包含传输差错的码流66被纠正传输错误的ILDPC码译码器67所接收。ILDPC码译码器67采用本发明方法设计的校验矩阵进行接收序列的译码。
如图8所示,ILDPC码译码器采用Nb路和节点并行和Mb路积节点并行的部分并行结构,由和节点处理阵列VNCU、积节点处理阵列CNCU、输入输出存储阵列MEMIO、和节点存储阵列MEMV以及积节点存储阵列MEMC五个模块构成。和节点处理阵列VNCU共有Nb个并行的和节点处理单元,如图9所示,每个单元各含有:一个多路求和电路,它的输入端为一个码元解调软信息的输入端LLR_in以及j个从对应积节点输入到该和节点的数据输入端x1_in~xj_in,即所述和节点处理阵列VNCU第j个处理单元VNCUj的一个输入端与MEMV中与基矩阵第i第j列非零元素对应的存储器的输出端相连;相互串联的一个加法器和一个ROM存储的Φ(x)函数表格,共有j个,其中,j个加法器的“+”端都与上述多路求和电路输出端相连,而“-”端分别与各个输入端xj_in相连,而j个ROM表格的输出端即为x1_out~xj_out,它们是从该和节点输出到对应积节点的迭代数据。每个和节点处理单元在每次和积译码迭代中都采用串行的方式完成L个和节点的运算,同时计算对应L个码元的迭代译码结果;积节点处理阵列CNCU共有Mb个并行的处理单元,如图10所示,每个单元各含有:一个多路求和器,它的输入端为i个从对应和节点输入到该积节点的数据输入端x1_in~xi_in,即所述和节点处理阵列CNCU第i个处理单元CNCUi的一个输入端与MEMC中与基矩阵第i第j列非零元素对应的存储器的输出端相连;相互串联的一个加法器和一个ROM存储的Φ-1(x)函数表格,共有i个,其中,i个加法器的“+”端都与上述多路求和电路输出端相连,而“-”端分别与x1_in~xi_in各个输入端相连,而i个ROM表格的输出端即为x1_out~xi_out,它们是从该积节点输出到对应和节点的迭代数据,也就是说,MEMV中基矩阵第i第j列非零元素对应的存储器的输入端是连接到和节点处理阵列CNCU第i个处理单元CNCUi的一个输出端的。每个积节点处理单元在每次和积译码迭代中也都采用串行的方式完成L个积节点的运算。由于译码器采用Nb路并行方案,接收序列软信息和译码结果都被分成Nb段长为L的模块。输入输出存储阵列MEMIO共有2·Nb个长为L的存储器,其中的Nb个用于存储输入的接收序列软信息,另外的Nb个存储器用于存储迭代译码后得到的译码结果。所有Nb个用于存储接收序列软信息的存储器的输入端都以总线方式与译码器数据输入端连接,而存储第j个接收软信息模块的存储器的输出端连接到第j个和节点处理单元的一个输入端;所有Nb个用于迭代译码结果的存储器的输出端也是采用总线方式连接到译码器译码输出端,而第j个存储器的输入端则连接到第j个和节点处理单元的相应输出端。和节点存储阵列MEMV和积节点存储阵列MEMC分别由Q+Mb个长度为L的存储器组成,其中MEMV阵列的存储器用于存储迭代译码中从积节点输出到和节点的数据,而MEMC阵列的存储器用于存储迭代运算中从和节点输出到积节点的数据。基校验矩阵Hb右边部分π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))的每个非零元素都在MEMV和MEMC阵列中分别有1个存储器与之对应;而基校验矩阵Hb左边部分IMb×Mb的每个非零元素都在MEMV和MEMC阵列中分别有两个存储器与之对应,其中一个存储器用于存储E矩阵对角线非零元素所对应的和/积节点输出结果,而另外一个存储器则用于存储次对角线非零元素所对应的和/积节点输出结果。此外,MEMV阵列中与基矩阵第i行第j列非零元素对应的存储器,它的输入端连接到积节点处理阵列第i个处理单元CNCUi的一个输出端,而它输出端则连接到和节点处理阵列第j个处理单元VNCUj的一个输入端。相应地,MEMC模块中与基矩阵第i行第j列非零元素对应的存储器,它的输入端连接到和节点处理阵列第j个处理单元VNCUj的一个输出端,而它输出端则连接到积节点处理阵列第i个处理单元CNCUi的一个输入端。基于这个结构,ILDPC码译码器的一次译码过程包括如下步骤:
1)初始化:接收序列软信息以Nb路并行的方式输入到MEMIO的对应存储器中。由于每段数据序列的长度为L,因而这一过程共需要L个时钟周期。与此同时,MEMV和MEMC阵列的所有存储器也在这L个时钟周期里执行一次清零。
2)迭代译码:译码器每执行一次迭代译码需要2·L个时钟周期。其中前面L个时钟周期执行和节点运算,数据从MEMV阵列和MEMIO存储接收软信息序列的存储器中依次读出到各个和节点处理单元,随后所得的和节点运算输出被按照特定的寻址模式写入到MEMC阵列相应的存储器中,所得的迭代译码结果则按顺序写入到MEMIO阵列相应的存储器中。在后面的L个时钟周期译码器执行积节点运算,译码数据从MEMC阵列的存储器中按照相应的寻址模式读出到各个积节点处理单元,所得输出则分别写入到MEMV阵列各个存储器中。
3)译码输出:经过特定次数的译码迭代后,译码器将存储在MEMEIO阵列相应存储器中的译码结果输出。这一过程同样需要L个时钟周期。
ILDPC码译码器67采用本发明的方法设计的校验矩阵对接收序列进行纠错译码,输出的码流68为正确的数字信息流。
本发明的效果是,通过在矩阵扩展时引入了行/列非零元素个数大于1的特殊子矩阵,以及由一种基于伽罗华域域元素乘方的交织方法得到的伪随机交织单位阵,使得所得到的ILDPC码为系统码,并且使得所得到的ILDPC码与采用方法一生成的IDLPC码相比没有明显的性能损失。与方法二相比,我们提出的构造方法有效避免了纠错性能上的损失,同时显著降低了编码复杂度。采用我们的设计方法,所得的ILDPC码编解码器具有很简单的硬件实现结构,可以在单片XILINX FPGA上实现码长为8128比特的非规则LDPC码,并且编/译码器的编/译码速度可以达到100Mb/s以上,对应的高斯信道下的纠错性能为Eb/N0=1.3dB时译码输出BER达到10-5,完全满足各种无线通信系统的需要,具有很广泛的应用前景。

Claims (2)

1.一种非规则低密度奇偶校验码的系统码设计方法,其特征在于:
生成非规则低密度奇偶校验码的检验矩阵H,转换成非规则低密度奇偶校验码的生成矩阵G,(1)初始化:
根据设定的Mb×Nb维全零基矩阵和非规则低密度奇偶校验码行/列重量分布式参数按下式确定基矩阵中各阶和/积节点的数量以及基矩阵各行/列应有的非零元素个数;
根据非规则低密度奇偶校验码的行/列重量分布参数以及相应的分布式得到下列对应j阶和节点和i阶积节点的个数nb(j)、mb(i)分别为:
n b ( j ) = N b &CenterDot; &lambda; j / j &Integral; 0 1 &lambda; ( x ) dx ,
m b ( i ) = M b &CenterDot; &rho; i / i &Integral; 0 1 &rho; ( x ) dx ;
其中,λj为非零元素个数即重量为j的列在矩阵中所占的份量,dv为矩阵中列重量的最大的值;ρi表示重量为i的行在矩阵中所占的份量,d0为矩阵中行重量的最小值,dc为矩阵中行重量的最大值;
对于上述非规则低密度奇偶校验码,上述nb(j)、mb(i)预变换为Mb×Nb维基矩阵的各阶和节点、各阶积节点的个数nb′(j)、mb′(i):
n b &prime; ( j ) = M b forj = 1 ; 0 forj = 2 ; n b ( j ) for 3 &le; j &le; d v
m b &prime; ( i ) = m b ( d 0 ) &CenterDot; L - 1 L fori = d 0 - 1 ; m b ( i ) &CenterDot; 1 L + m b ( i + 1 ) &CenterDot; L - 1 L for d 0 &le; i < d c ; m b ( d c ) &CenterDot; 1 L fori = d c
(2)生成基矩阵的非零元素:
(2.1)把全零矩阵左边Mb×Mb部分对角线的‘0’元素置换成‘1’,得到Mb×Mb维单位阵IMb×Mb
(2.2),根据上述设定的nb′(j)和mb′(i),通过随机搜索的方法产生基矩阵右边Nb-Mb列的非零元素:
(2.2.1)列方向上非零元素的置换:
对矩阵中的第k列(Mb<k≤Nb),从Nb个列重量中随机抽出一个列重量Lk作为该列的重量,再从该列的Mb个行位置中随机选取Lk个行位置,并把该Lk个行位置中的零元素置换为非零元素‘1’;若这一置换使矩阵产生了众知的周期为4的小循环,则删除掉这一列的所有非零元素并重新选取Lk个位置进行非零元素置换,直到使该列得到不产生周期为4的小循环的Lk个非零元素为止;
重复上述步骤,直到所有的列方向上都完成非零元素的生成为止;
(2.2.2)行方向上的非零元素的置换,即在避免产生周期为4的小循环的条件下,把非零元素从数量过多的行调整到数量过少的行:
计算基矩阵第i行的非零元素个数Ni,然后判断是否小于该行所设定的值Ni0若Ni<Ni0则转到基矩阵下一行继续进行调整;如果Ni<Ni0则从基矩阵各行中寻找非零元素个数大于设定值的行i′;随后从i′行中选取一个列位置大于Mb的非零元素,并将该元素转移到第i行的同列位置,再判断这一转移没有带来周期为4的小循环:如果这一转移没有带来周期为4的小循环,则调整保留,使i行的Ni加1;若有则非零元素被删除;如此循环,一直到i′行所有列位置大于Mb的非零元素都已经尝试过都已尝试过调整到第i行相应的元素为零的列上为止;再接着重新随机选取非零元素个数大于设定值的行i″,重复以上步骤,直到第i行的非零元素个数满足要求;当所有的行的非零元素个数满足要求以后,所得的基矩阵就是所求的基矩阵,该基矩阵可用下式表示:
Figure C2004100392350003C1
其中,IMb×Mb是一个Mb×Mb维单位阵,PMb×nb′(j)(3≤j≤dv)是一个Mb×nb′(j)维、每列有j个非零元素的二元矩阵,π(·)代表一个列方向上的伪随机交织;
(3)矩阵的扩展:
首先,程序产生一个M×N维的全零矩阵H,并分成Mb×Nb个L×L维子矩阵,使每个子矩阵与基矩阵的一个元素相对应;
再把基矩阵中IMb×Mb部分非零元素所对应的H矩阵的子模块替换成一个行/列非零元素个数大于1的特殊矩阵E,可用下式表示:
再通过随机交织法对基矩阵右边Nb-Mb列的非零元素所对应的H矩阵模块进行非零元素填充,其具体步骤为:先对基矩阵右边Nb-Mb列的每个非零元素,程序用以下方式选取一组参数 { k &Element; { 0,1,2,3 } , &alpha; j 0 , &alpha; j 1 &Element; GF ( 2 p ) } , 构成一个伪随机交织器:
k=0时:行方向i:1≤i≤n;列方向:αi1·(αi0)j:0≤j≤n;
k=1时:行方向:n+1-i:1≤i≤n;列方向:αi1·(αi0)j:0≤j≤n;
k=2时:行方向:i:1≤i≤n;列方向:n+1-αi1·(αi0)j:0≤j≤n;
k=3时,行方向:n+1-i:1≤i≤n;列方向:n+1-αi1·(αi0)j:0≤j≤n;
其中,GF(2p)为伽罗华域,p为素数,α为域GF(2p)中的一个本源元素,且L=2p-1;
然后,用上述所得伪随机交织器对L×L维单位阵进行交织,得到一个伪随机交织单位阵,再把它用于替换基矩阵中右边相应元素所对应的H矩阵模块;若这一替换不产生周期为4的小循环,则替换保留,重新产生一组参数并产生相应的伪随机交织单位阵,进行下一基矩阵右边Nb-Mb列非零元素所对应H矩阵模块的替换;若替换产生了周期为4的小循环,则替换删除,重新产生一组参数并产生相应的伪随机交织单位阵,再次进行替换,直到不产生周期为4的小循环为止;于是得到下述非规则低密度奇偶校验码的校验矩阵:
Figure C2004100392350004C1
Figure C2004100392350004C2
相应地,非规则低密度奇偶校验码的生成矩阵可以表示成为:
2.如权利要求1所述的一种非规则低密度奇偶校验码的系统码设计方法所设计的非规则低密度奇偶校验码用于纠正传输差错的通信系统,其特征在于,它依次由产生数字信息流的信源、非规则低密度奇偶校验码编码器、传输信道以及纠正传输错误的非规则低密度奇偶校验码译码器串连而成,其中:
非规则低密度奇偶校验码编码器采用Mb路并行的部分并行结构,它依次由输入存储器阵列MEMI,校验比特生成器PCBGU,以及输出多路选择器Multiplex串联构成,其中:
MEMI由Q-Mb个长度为L的存储器组成,每个存储器与基校验矩阵Hb右边部分π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))的1个非零元素一一对应;所有存储器的输入端都通过总线的方式实现与编码器数据输入端的连接,矩阵π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))同一列非零元素所对应的存储器都具有相同的写入寻址模式;
校验比特生成器PCBGU,它有Mb个校验比特生成单元,第k个校验比特生成模块PCBGUk与上述矩阵π(PMb×nb′(3)PMb×nb′(4)…PMb×nb′(dv))第k行的非零元素所对应的所有存储器的输出端相连,1≤k≤Mb;所述的每一个校验比特生成单元PCBGUk都由一个多路求和器与一个卷积电路串联而成,所述卷积电路由一个加法器与一个寄存器串联而成,而寄存器的输出端又与上述加法器的另外一个输入端相连;
多路选择器Multiplex具有以Mb+1个数据输入端和一个数据输出端,它的输入端分别连接到编码器信息比特输入端以及Mb个校验比特生成单元的输出端,输出端即为编码器的输出端;在编码过程中,多路选择器通过时分复用的方式实现Mb+1路数据的合路;
非规则低密度奇偶校验码译码器,它的输入信号为来自传输信道的包含差错的码流,该非规则低密度奇偶校验码译码器是一个采用Nb路和节点以及Mb路积节点并行的部分并行结构,它由和节点处理阵列VNCU、积节点处理阵列CNCU、输入输出存储阵列MEMIO、和节点存储阵列MEMV以及积节点存储阵列MEMC构成,其中:
和节点存储阵列MEMV和积节点存储阵列MEMC分别由Q+Mb个长度为L的存储器组成,其中,MEMV阵列的存储器用于存储迭代译码中从积节点输出且经过处理后到和节点的数据,而MEMC阵列的存储器用于存储迭代运算中从和节点输出且经过处理后到积节点的数据;基校验矩阵Hb右边部分π(PMb×nb′(3)Mb×nb′(4)…PMb×nb′(dv))的每个非零元素都在MEMV和MEMC阵列中有1个存储器与之对应,而基校验矩阵Hb左边部分IMb×nb的每个非零元素都在MEMV和MEMC阵列中分别有两个存储器与之对应,其中一个存储器用于存储E矩阵对角线非零元素所对应的和/积节点输出结果,而另外一个存储器则用于存储次对角线非零元素所对应的和/积节点输出结果;
和节点处理阵列VNCU共有Nb个并行的运算单元,每个单元各含有:
一个多路求和电路,它的输入端为一个码元解调软信息的输入端LLR_in以及j个从对应积节点输入到该和节点的数据输入端x1_in~xj_in,即所述和节点处理阵列VNCU第j个处理单元VNCUj的一个输入端与MEMV中与基矩阵第i第j列非零元素对应的存储器的输出端相连;
相互串联的一个加法器和一个ROM表格,共有j个,其中,j个加法器的“+”端都与上述多路求和电路输出端相连,而“-”端分别与各个输入端xj_in相连,而j个ROM表格的输出端即为x1_out~xj_out,它们是从该和节点输出到对应积节点的迭代数据;
Mb个积节点处理阵列CNCU,每个单元各含有:
一个多路求和器,它的输入端为i个从对应和节点输入到该积节点的数据输入端x1_in~xi_in,即所述和节点处理阵列CNCU第i个处理单元CNCUi的一个输入端与MEMC中与基矩阵第i第j列非零元素对应的存储器的输出端相连;
相互串联的一个加法器和一个ROM表格,共有i个,其中,i个加法器的“+”端都与上述多路求和电路输出端相连,而“-”端分别与x1_in~xi_in各个输入端相连,而i个ROM表格的输出端即为x1_out~xi_out,它们是从该积节点输出到对应和节点的迭代数据,也就是说,MEMV中基矩阵第i第j列非零元素对应的存储器的输入端是连接到和节点处理阵列CNCU第i个处理单元CNCUi的一个输出端的;
输入输出存储阵列MEMIO由2×Nb个长为L的存储器构成,其中Nb个存储器用于存储从信道解调器输入到非规则低密度奇偶校验码译码器的码元解调软信息,这些存储器的输入端采用总线方式连接形成非规则低密度奇偶校验码译码器的数据输入端,而它们的输出端分别连接到Nb个和节点处理单元的LLR_in输入端;另外的Nb个存储器用于存储译码器迭代译码结果,它们的输出端分别与Nb个和节点处理单元VNCUj的dec_out输出端连接,而它们的输出端采用总线方式连接形成非规则低密度奇偶校验码译码器的数据输出端;
所述的非规则低密度奇偶校验码编译码器采用现场可编程逻辑门阵列FPGA实现。
CNB2004100392358A 2004-02-09 2004-02-09 非规则低密度奇偶校验码的系统码设计方法及其通信系统 Expired - Fee Related CN100364237C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100392358A CN100364237C (zh) 2004-02-09 2004-02-09 非规则低密度奇偶校验码的系统码设计方法及其通信系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100392358A CN100364237C (zh) 2004-02-09 2004-02-09 非规则低密度奇偶校验码的系统码设计方法及其通信系统

Publications (2)

Publication Number Publication Date
CN1558556A CN1558556A (zh) 2004-12-29
CN100364237C true CN100364237C (zh) 2008-01-23

Family

ID=34352292

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100392358A Expired - Fee Related CN100364237C (zh) 2004-02-09 2004-02-09 非规则低密度奇偶校验码的系统码设计方法及其通信系统

Country Status (1)

Country Link
CN (1) CN100364237C (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100486150C (zh) 2005-01-23 2009-05-06 中兴通讯股份有限公司 基于非正则低密度奇偶校验码的编译码器及其生成方法
JP4917023B2 (ja) * 2005-03-31 2012-04-18 三菱電機株式会社 誤り訂正符号化装置
CN1702976B (zh) * 2005-06-22 2011-06-08 中山大学 一种用于通信系统的数据交织与解交织方法
CN100438394C (zh) * 2006-01-12 2008-11-26 北京大学 非规则置换矩阵ldpc码的构造方法及装置
US7783951B2 (en) * 2006-02-09 2010-08-24 NEC Laboratories, America, Inc. Multiplexed coding for user cooperation
CN101034892B (zh) * 2006-03-06 2011-11-23 西门子(中国)有限公司 生成ldpc码的方法以及采用该ldpc码的装置
EP1850485A1 (en) * 2006-04-28 2007-10-31 Nokia Siemens Networks Gmbh & Co. Kg Method for encoding a data message K' for transmission from a sending station to a receiving station as well as method for decoding, sending station, receiving station and software
KR101191196B1 (ko) * 2006-06-07 2012-10-15 엘지전자 주식회사 패리티 검사 행렬을 이용하여 부호화 및 복호화하는 방법
CN101150378B (zh) * 2006-09-18 2011-11-23 国家广播电影电视总局广播科学研究院 低密度奇偶校验编码的32apsk系统的交织方案
CN101150550B (zh) * 2006-09-18 2012-02-01 国家广播电影电视总局广播科学研究院 交织低密度奇偶校验编码比特的方法、发射器和接收器
CN101162965B (zh) * 2006-10-09 2011-10-05 华为技术有限公司 一种ldpc码的纠删译码方法及系统
CN101162907B (zh) * 2006-10-10 2010-11-03 华为技术有限公司 一种利用低密度奇偶校验码实现编码的方法及装置
CN100596029C (zh) 2006-10-20 2010-03-24 北京泰美世纪科技有限公司 Ldpc码校验矩阵构造方法及利用该方法的编码解码装置
CN1996764A (zh) * 2007-01-10 2007-07-11 北京航空航天大学 基于奇偶校验矩阵的ldpc码的译码方法及译码器
GB2455283A (en) * 2007-10-31 2009-06-10 Hewlett Packard Development Co Error correction in data communication apparatus using toroidal-web Tanner graph
CN101436918B (zh) * 2007-11-15 2011-12-28 中兴通讯股份有限公司 结构化低密度奇偶校验码的信道编码方法、装置、及系统
KR101481854B1 (ko) * 2007-11-26 2015-01-12 소니 주식회사 데이터 처리 장치, 및 데이터 처리 방법, 및 부호화 장치, 및 부호화 방법
CN101335592B (zh) * 2008-08-04 2010-12-15 北京理工大学 基于矩阵分块的高速ldpc译码器实现方法
CN101741396B (zh) 2008-11-19 2013-03-13 华为技术有限公司 可变码长ldpc码编码或译码的方法与装置及编码器和译码器
CN101510782B (zh) * 2009-03-20 2012-01-04 华为技术有限公司 译码方法和系统
CN101562456B (zh) * 2009-06-03 2012-08-22 华北电力大学(保定) 基于低密度奇偶校验码译码软信息的码辅助帧同步方法
CN101777920B (zh) * 2009-12-24 2015-03-25 北京韦加航通科技有限责任公司 低密度奇偶校验码的编码方法和编码译码装置
CN102929736B (zh) * 2012-10-23 2016-05-11 忆正科技(武汉)有限公司 一种闪存交织校验纠错方法及闪存控制器
CN103973315B (zh) * 2013-01-25 2019-01-18 中兴通讯股份有限公司 一种低密度奇偶校验码译码装置及其译码方法
MY182481A (en) 2015-03-02 2021-01-25 Samsung Electronics Co Ltd Transmitter and shortening method thereof
KR101800424B1 (ko) * 2015-03-02 2017-11-23 삼성전자주식회사 송신 장치 및 그의 쇼트닝 방법
CN106533452B (zh) * 2016-11-14 2019-05-07 中国电子科技集团公司第五十四研究所 一种多进制ldpc编码方法及编码器
CN107294543B (zh) * 2017-06-19 2020-01-03 电子科技大学 一种用于生成rc-ldpc码校验矩阵的方法
CN108233945B (zh) * 2017-11-30 2021-05-11 天津津航计算技术研究所 极短码长准循环Ldpc码校验矩阵的构造方法
CN109600141B (zh) * 2019-01-10 2023-06-27 珠海妙存科技有限公司 一种多通道共享ldpc编码器的方法
CN110768677B (zh) * 2019-09-19 2023-04-07 福建技术师范学院 多边类型低密度奇偶校验码的优化方法
CN112367088B (zh) * 2020-10-27 2023-03-21 上海宇航系统工程研究所 一种基于索引矩阵的编码方法及装置
CN112558924B (zh) * 2020-12-11 2022-08-26 黑龙江大学 伪随机二值序列的局部弱随机现象的快速检测方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1405981A (zh) * 2002-11-15 2003-03-26 清华大学 改进的非规则低密度奇偶校验码纠错译码方法
WO2004028074A1 (ja) * 2002-09-18 2004-04-01 Mitsubishi Denki Kabushiki Kaisha 量子鍵配送方法および通信装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004028074A1 (ja) * 2002-09-18 2004-04-01 Mitsubishi Denki Kabushiki Kaisha 量子鍵配送方法および通信装置
CN1405981A (zh) * 2002-11-15 2003-03-26 清华大学 改进的非规则低密度奇偶校验码纠错译码方法

Also Published As

Publication number Publication date
CN1558556A (zh) 2004-12-29

Similar Documents

Publication Publication Date Title
CN100364237C (zh) 非规则低密度奇偶校验码的系统码设计方法及其通信系统
CN1993892B (zh) 用于编码和解码块低密度奇偶校验码的装置和方法
US7343548B2 (en) Method and apparatus for encoding and decoding data
USRE44421E1 (en) Decoding apparatus for low-density parity-check codes using sequential decoding, and method thereof
US7519898B2 (en) Iterative decoding of linear block codes by adapting the parity check matrix
CN101924565B (zh) Ldpc编码器、解码器、系统及方法
EP1835625B1 (en) Encoding and decoding of accumulate convolutional codes
US7116710B1 (en) Serial concatenation of interleaved convolutional codes forming turbo-like codes
US20070011566A1 (en) Clash-free irregular-repeat-accumulate code
US20080052594A1 (en) Method and system for replica group-shuffled iterative decoding of quasi-cyclic low-density parity check codes
WO2009143375A2 (en) Lower-complexity layered belief propagation deconding ldpc codes
US20070033484A1 (en) System and method for designing RS-based LDPC code decoder
US8806289B1 (en) Decoder and decoding method for a communication system
Thi et al. Basic-set trellis min–max decoder architecture for nonbinary ldpc codes with high-order galois fields
US8468438B2 (en) Method and apparatus for elementary updating a check node during decoding of a block encoded with a non-binary LDPC code
US20070220395A1 (en) Method and apparatus for encoding and decoding data
Kim et al. Product Reed-Solomon codes for implementing NAND flash controller on FPGA chip
Panem et al. Polynomials in error detection and correction in data communication system
Lou et al. Channel Coding
US8019020B1 (en) Binary decoding for correlated input information
Johnson Burst erasure correcting LDPC codes
CN113055024B (zh) 用于5g-nr系统短块长低码率ldpc码的修正译码方法
Bhagawat et al. FPGA based implementation of decoder for array low-density parity-check codes
Zikry et al. Performance Analysis of LDPC Decoding Techniques
EP1643653B1 (en) Iterative decoding of low-density parity-check (LDPC) codes

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: 20080123

Termination date: 20190209

CF01 Termination of patent right due to non-payment of annual fee