CN1956368A - 基于单位阵及其循环移位阵的ldpc码向量译码装置和方法 - Google Patents

基于单位阵及其循环移位阵的ldpc码向量译码装置和方法 Download PDF

Info

Publication number
CN1956368A
CN1956368A CN 200510114589 CN200510114589A CN1956368A CN 1956368 A CN1956368 A CN 1956368A CN 200510114589 CN200510114589 CN 200510114589 CN 200510114589 A CN200510114589 A CN 200510114589A CN 1956368 A CN1956368 A CN 1956368A
Authority
CN
China
Prior art keywords
mrow
msub
msubsup
vector
msup
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
Application number
CN 200510114589
Other languages
English (en)
Other versions
CN100589357C (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN200510114589A priority Critical patent/CN100589357C/zh
Publication of CN1956368A publication Critical patent/CN1956368A/zh
Application granted granted Critical
Publication of CN100589357C publication Critical patent/CN100589357C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

一种基于单位阵及其循环移位阵的LDPC码向量译码方法及其装置,先将接收数据划分为包含nb个向量的数组R,计算出可信度向量数组和传递信息向量矩阵初始值;利用k-1次迭代得到的传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij计算出第k次迭代的传递信息向量矩阵和可信度向量数组;再硬判决判断译码是否成功,不成功就继续迭代,向量均为1×z软比特向量。该装置包括基础矩阵处理模块、初始值运算模块、迭代运算模块、硬判决检测模块和控制模块,所有存储块均可存储z个软比特,最小运算单位为z个软比特向量运算,各模块计算单元从相应的存储块直接读取和写入数据。本发明不需存储奇偶校验矩阵,结构简单,通用性强且无需扩展。

Description

基于单位阵及其循环移位阵的LDPC码向量译码装置和方法
技术领域
本发明涉及一种数字通信系统中用于数据传输纠错的译码器及其译码方法,特别是涉及数字通信领域纠错技术中结构化的低密度奇偶校验码(LDPC码)的译码器及其译码方法。
背景技术
所有的数字通信系统如通信、雷达、遥控遥测、数字计算机的存储系统和内部运算以及计算机之间的数据传输等都可以归结为如图1所示的模型。其中的信源编码器是为了提高传输的有效性,信道编码器是为了抗击传输过程中各种各样的噪声和干扰,通过人为地增加冗余信息,使得系统具有自动纠正差错的能力,从而保证数字传输的可靠性。低密度奇偶校验码是一类可以用非常稀疏的奇偶校验矩阵或者二分图定义的线性分组码,最初由Gallager发现,所以称为Gallager码。经过数十年的沉寂,随着计算机硬件和相关理论的发展,MacKay和Neal重新发现了它,并证明了它具有逼近香农限的性能。最新研究表明,低密奇偶校验码码具有以下特点:低译码复杂度,可线性时间编码,具有逼近香农限的性能,可并行译码,以及在长码长条件下性能优于Turbo码。
LDPC码是一种基于稀疏校验矩阵的线性分组码,正是利用它的校验矩阵的稀疏性,才能实现低复杂度的编译码,从而使得LDPC码走向实用化。前面提到的Gallager码是一种正则的LDPC码(regular ldpcc),而Luby和Mitzenmacher等人对Gallager码进行了推广,提出非正则的LDPC码(irregular ldpcc)。LDPC码具有很多译码算法,其中,信息传递算法(MessagePassing algorithm)或者置信度传播算法(Belief Propagation algorithm,BP算法)是LDPC码的主流和基础算法,很多算法都是基于此算法的改进。
信息传递译码算法和概率域的BP算法:
信息传递算法是一种工作在图论基础上的译码算法,由于在算法的运行过程中,可靠性信息在二分图的变量节点和校验节点之间来回的传送,因此称为Message Passing算法。当Message Passing算法中的信道输出符号集和译码过程中发送消息的符号集相同,都为实数集R,即采用连续性的MessagePassing时,适当地选择消息映射函数,算法将等价于著名的BP算法,也就是和积算法(Sum Product algorithm)。先对BP算法中三种常用的具体算法
介绍如下:
概率域的BP算法
若编码的校验矩阵为H,将参与第m个校验的变量节点集合记为N(m)={n:Hmn=1}。类似的,将第n个变量节点参与的校验节点集合记为M(n)={m:Hnn=1}。算法中有两个交替执行的部分,与校验矩阵中非零元相关的数值qmn和rmn在算法的迭代中逐次更新。数值qmn x是指在已知除第m个校验节点外其它所有校验节点的消息时,发送的码字的第n个变量节点取值为x(取值为“0”或“1”)的概率。数值rmn x是指在已知发送的码字的第n个变量节点值为x,其它变量节点满足概率分布{qmn′:n′∈N(m)\n}时第m个校验节点得到满足的概率。如果矩阵H所对应的二分图没有环,在经过一定次数的迭代后,该算法将给出每一变量节点取值的精确后验概率。
概率域的BP算法包括以下步骤:
a)初始化变量qmn 0和qmn 1:对应于矩阵H中每一个满足Hmn=1的元素(n,m),变量节点的qmn 0和qmn 1分别被初始化为fn 0和fn 1。yn是时刻n信道的输出,σ2为噪声方差。
for n=0,…,N-1
for  m∈M(n)
q mn 0 = f n 0 = P ( x n = 0 | y n ) = 1 1 + e - 2 y n / σ 2 q mn 1 = f n 1 = P ( x n = 1 | y n ) = 1 - f n 0 = 1 1 + e 2 y n / σ 2
上述代码表示的是双重循环的流程,外循环变量为n,内循环变量为m。
b)校验节点更新(parity node update):这一步对每一校验节点m及相应的每一个变量节点n∈N(m)计算两个概率测度:第一个,当xn=0,其它的变量节点{xn′:n′≠n}服从相互独立的概率分布{qmn′ 0,qmn′ 1}时,校验节点m得到满足的概率rmn 0;第二个,相应地,当xn=1时,校验节点m得到满足的概率rmn 1
对于任意m和n,令 δ q mn = q mn 0 - q mn 1 , 其中H(m,n)=1。
for m=0,…,M-1
for  n∈N(m)
δ r mn = Π n ′ ∈ N ( m ) \ n δ q m n ′ r mn 0 = ( 1 + δr mn ) / 2 , r mn 1 = 1 - r mn 0 = ( 1 - δr mn ) / 2
式中,“\”斜线表示排除某个元素。N(m)\n表示N(m)在排除了某一个列索引n后的集合,它是一个差集。
c)变量节点更新(variable node information update):这一步利用计算所得值rmn 0和rmn 1更新概率值qmn 0和qmn 1
for n=0,…,N-1
for m∈M(n)
q mn 0 = α mn f n 0 Π m ′ ∈ M ( n ) \ m r m ′ n 0 q mn 1 = β mn f n 1 Π m ′ ∈ M ( n ) \ m r m ′ n 1
其中αmn和βmn为归一化系数使得 q mn 0 + q mn 1 = 1 .
Figure A20051011458900125
为变量节点取值为0时所有子校验节点得到满足的概率, 为变量节点取值为1时所有子校验节点得到满足的概率。
在任何一次迭代后,可依照下式计算变量节点n取值为0和1的伪后验概率qn 0和qn 1
for n=0,…,N-1
q n 0 = α n p n 0 Π m ∈ M ( n ) r mn 0 q n 1 = β n p n 1 Π m ∈ M ( n ) r mn 1
d)译码迭代终止检测:
对这些伪后验概率qn 0和qn 1进行硬判决生成试验译码结果,用HT=0来判断译码是否成功,如果成功,则译码结束,输出码字;否则再判断迭代次数是否少于某预先设定的最大值,如果是,重复b)和c)继续迭代,如果迭代次数达到最大值而译码仍未成功,则宣告译码失败。
对数域的BP算法
如果将BP算法转换到对数域上进行,可以极大地减少乘法运算的次数,适合于实际应用。此时,译码消息看成是对码字中的信息比特的估计,包括符号(sign)和可信度(reliability)两部分:
①消息的符号,表示对信道中传输的信息比特的估计是(-)还是(+),;
②消息的绝对值,即可信度,表示该消息对信息比特估计的可靠程度;
③消息集中的0表示可抹符号(erasure),表示信息比特取(+1)或(-1)的概率相等,(+1)或(-1)分别对应于“1”和“0”。
对数域的BP算法中作以下定义:
L mn = LLR ( r mn ) = log r mn 0 r mn 1
Z mn = LLR ( q mn ) = log q mn 0 q mn 1
LLR n = LLR ( q n ) = log q n 0 q n 1
其中:Lmn表示从校验节点m发往变量节点n的校验节点到变量节点信息(extrinsic information),Zmn表示从变量节点n发往校验节点m的变量节点到校验节点信息,LLRn表示第n个码字比特的对数似然比。
对数域的BP算法包括以下步骤:
a)初始化:
for n=0,…,N-1
for m∈M(n)
{ Z mn ( 0 ) = LLR n ( 0 ) = 2 y n / σ 2 }
b)校验节点更新
for m=0,…,M-1
for n∈N(m)
{ L mn ( k ) = 2 tanh - 1 Π n ′ ∈ N ( m ) \ n tanh ( Z m n ′ ( k - 1 ) 2 ) }
c)变量节点更新
for n=0,…,N-1
for m∈M(n)
{ Z mn ( k ) = LLR n ( 0 ) + Σ m ′ ∈ M ( n ) \ m L m ′ n ( k ) }
码字比特的对数似然比为:
for n=0,…,N-1
{ LLR n ( k ) = LLR n ( 0 ) + Σ m ′ ∈ M ( n ) L m ′ n ( k ) }
d)然后对码字对数似然比LLR(qn)进行硬判决生成试验译码结果
Figure A20051011458900144
用HT=0来判断译码是否成功,如果成功则译码结束,输出码字;否则再判断迭代次数是否少于某预先设定的最大值,如果是,重复b)和c)继续迭代,如果迭代次数达到最大值译码仍未成功,则宣告译码失败。
上述公式中的上标(k)中的k为译码迭代次数,对BIAWGN(二进制输入、高斯加性白噪声-Binary Input Additive White Gaussian Noise)信道而言,yn为信道输出,σ2为噪声方差。
简化形式的对数域BP算法:
将b)和c)进行合并消去Zmn后就得到如下等同的简化形式的对数域BP算法。
a)初始化:
for n=0,…,N-1
{ LLR n ( 0 ) = 2 y n / σ 2 }
for n=0,…,N-1
for m∈M(n)
{ L mn ( 0 ) = 0 }
b)节点更新
for m=0,…,M-1
for n∈N(m)
{ L mn ( k ) = 2 tanh - 1 Π n ′ ∈ N ( m ) \ n tanh ( LLR n ( k - 1 ) L m n ′ ( k - 1 ) 2 ) }
c)计算码字的对数似然比:
for n=0,…,N-1
LLR n ( k ) = LLR n ( 0 ) + Σ m ′ ∈ M ( n ) L m ′ n ( k )
d)判决检测,内容同上。
采用信息传递算法(Message Passing algorithm)或者BP算法时,译码器的设计难度主要出现在稀疏校验矩阵的存储和访问上。针对任何一个稀疏矩阵的非零元素,我们都要存储指示它的索引或者存储指向它的指针,所以存储容量很大,进而阻碍了LDPC码的应用。当不同的码长采用不同的稀疏校验矩阵的时候,此问题将变得更加突出。此外,对于传统的译码算法,译码器都需要将基础矩阵扩展成为很大的奇偶校验矩阵,存储这么大的矩阵是一个问题。如果以此奇偶校验矩阵来设计硬件结构,连接数将很大,拓扑将很复杂,而且针对不同码长还需要设计出不同的硬件拓扑结构。这些缺点严重阻碍了结构化的LDPC码走向实际应用,成为此类低密度奇偶校验码的发展瓶颈。
在IEEE802.16e标准中,LDPC码都是基于单位阵及循环移位矩阵的LDPC码,每一种码率的LDPC码都有一个基础矩阵,以下称为原始基础矩阵,不同码长的LDPC码的基础矩阵仅仅是对基础矩阵的取值进行修正的结果,以下称为修正后的基础矩阵。此时对于某个特定码率的LDPC码,仅仅需要存储一个很小的基础矩阵。这种结构化的奇偶校验矩阵的LDPC码将成为主流设计。但是,目前针对这种结构的LDPC码,还缺少一种能充分利用其特点的有效的译码算法和译码器。
发明内容
本发明要解决的技术问题提出一种基于单位阵及其循环移位阵的LDPC码向量译码方法,不需存储LDPC码的奇偶校验矩阵,也不需要对基础矩阵进行扩展就可以实现译码。本发明还要提供一种实现该方法的装置。
为了解决上述技术问题,本发明译码方法采用和传统低密度奇偶校验码相同的流程和原理,但在具体实现方式和数据结构上有变化,在译码的所有运算中最小运算单位都是长度为z的向量。从而将m×n的矩阵运算简化为大小为mb×nb的矩阵运算,仅需要基础矩阵而不是奇偶校验码就可以完成译码。译码器的硬件拓扑也从m×n的矩阵降到mb×nb的矩阵,极大地降低了硬件的连接数。更加重要的是,当特定码率下码长可变时,不同的LDPC码可以采用同一种拓扑结构的译码器。
基于上述构思,本发明提供了一种基于单位阵及其循环移位阵的LDPC码向量译码方法,采用校验矩阵 H = { ( P ij ) z × z } m b × n b , 唯一对应于基础矩阵 H b = { h ij b } m b × n b , i∈[0,1,…,mb-1],j∈[0,1,…,nb-1],迭代次数为k,扩展因子为z,Iset(j)是Hb中第j列非-1元素行索引集合,Jset(i)是Hb中第i行非-1元素列索引集合,该方法包括以下步骤:
(a)将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组,令接收序列向量数组 R = { R j } 1 × n b 中的元素Rj=[yjz,yjz+1,…,y(j+1)z-1];
(b)令k=0,根据接收序列向量数组R得到可信度向量数组(如码字对数似然比或后验概率的向量数组)的初始值,并得到传递信息(指变量节点到向量节点的信息或向量节点到变量节点的信息)向量矩阵的初始值,所述向量均为1×z软比特的向量;
(c)利用k-1次迭代得到的所述传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij进行更新运算,得到第k次迭代后的传递信息向量矩阵和可信度向量数组,所有运算中的最小运算单位都是1×z软比特的向量;
(d)对所述可信度向量数组进行硬判决得到硬判决向量数组 S = { S j } 1 × n b , Sj为1×z行向量,然后根据 T i = Σ j = 1 n b P ij - 1 S j T 计算得到奇偶校验向量数组 T = { T i } m b × 1 ;
(e)判断向量数组T是否为全0,若是,则译码成功,输出硬判决码字,结束;否则,令k=k+1,再判断k是否少于最大迭代次数,如果是,返回步骤(c),否则,译码失败,结束。
进一步地,上述向量译码方法还有具有以下特点:该方法为简化形式的对数域向量译码方法,其中:
所述步骤(b)中,利用接收数据向量数组R完成校验节点到变量节点信息向量矩阵 U = { u ij } m b × n b 和码字对数似然比向量数组 Q = { Q j } 1 × n b 中所有非零向量初始值的运算,该步通过以下循环运算完成:外循环j=0,…,nb-1,内循环i∈Iset(j),算式为 u ij ( 0 ) = 0 , Q j ( 0 ) = 2 R j / σ 2 , σ2为噪声方差;
所述步骤(c)中进一步分为以下步骤:
(c1)根据上一次迭代的校验节点到变量节点信息向量矩阵U(k-1)和码字对数似然比向量数组Q(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(k)中所有的非零向量,实现节点更新,该步通过以下循环运算完成:外循环i=0,…,mb-1,内循环j∈Jset(i),算式为:
u ij ( k ) = P ij 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P ij - 1 Q j ( k - 1 ) - P i j ′ - 1 u i j ′ ( k - 1 ) 2 )
(c2)根据最初对数似然比向量数据Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的码字对数似然比向量数组Q(k)中所有的非零向量,即对任一个j=0,…,nb-1,计算 Q j ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) u i ′ j ( k ) ;
且所述步骤(d)中,是对码字对数似然比向量数组Q(k)进行硬判决。
进一步地,上述向量译码方法还有具有以下特点:该方法为一般形式的对数域向量译码方法,其中:
所述步骤(b)中,利用接收数据向量数组R完成对变量节点到校验节点信息向量矩阵 V = { v ij } m b × n b 和码字对数似然比向量数组 Q = { Q j } 1 × n b 中所有非零向量初始值的计算,该步通过以下循环运算完成:外循环j=0,…,nb-1,内循环i∈Iset(j),算式为: v ij ( 0 ) = Q j ( 0 ) = 2 R j / σ 2 , σ2为噪声方差;
所述步骤(c)中进一步分为以下步骤:
(c1)根据上一次迭代的V(k-1)和R(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(k)中所有的非零向量,实现校验节点更新,该步通过以下循环运算完成:外循环i=0,…,mb-1,内循环j∈Jset(i),算式为:
u ij ( k ) = P ij 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P i j ′ - 1 v i j ′ ( k - 1 ) 2 )
(c2)根据最初对数似然比向量数组Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的变量节点到校验节点信息向量矩阵V(k)中所有的非零向量,实现变量节点更新,通过以下循环运算完成:外循环j=0,…,nb-1,内循环i=0,…,mb-1,算式为:
v ij ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) \ i u i ′ j ( k )
同时计算本次迭代的码字对数似然比数组Q(k)中所有的非零向量,即对任一个j=0,…,nb-1,计算: Q j ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) u i ′ j ( k ) ;
且所述步骤(d)中,是对码字对数似然比向量数组Q(k)进行硬判决。
进一步地,上述向量译码方法还有具有以下特点:该方法为概率域向量译码方法,其中:
所述步骤(b)中,是利用接收数据数组R,计算变量节点到校验节点信息向量矩阵 Q 0 = { Q ij 0 } m b × n b , Q 1 = { Q ij 1 } m b × n b 和向量矩阵 ΔQ = { Δ Q ij } m b × n b , 以及码字概率向量数组 F 0 = { F j 0 } 1 × n b F 1 = { F j 1 } 1 × n b 中所有非零向量的初始值,通过以下循环运算完成:外循环j=0,…,nb-1,内循环i∈Iset(j),算式为:
{ Q ij 0 = F j 0 = 1 1 + e - 2 R j / σ 2 , Q ij 1 = F j 1 = 1 - Q ij 0 , Δ Q ij = Q ij 0 - Q ij 1 }
所述步骤(c)中进一步分为以下步骤:
(c1)根据上一次迭代的ΔQ(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k)中所有的非零向量,实现校验节点更新,通过以下循环运算完成:外循环i=0,…,mb-1,内循环j∈Jset(i),算式为:
Δ R ij ( k ) = P ij Π j ′ ∈ Jset ( i ) \ j P i j ′ - 1 Δ Q i j ′ ( k - 1 ) , R ij 0 ( k ) = ( 1 + Δ R ij ( k ) ) / 2 , R ij 1 ( k ) = 1 - r mn 0 = ( 1 - Δ R ij ( k ) ) / 2
(c2)根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算本次迭代的变量节点到校验节点信息向量矩阵Q0(k),Q1(k)中所有的非零向量,实现变量节点更新,通过以下循环运算完成:外循环j=0,…,nb-1,内循环i∈Iset(j),算式为:
{ Q ij 0 ( k ) = α ij F j 0 Π i ′ ∈ Iset ( j ) \ i R i ′ j 0 ( k ) , Q ij 1 ( k ) = β ij F j 1 Π i ′ ∈ Iset ( j ) \ i R i ′ j 1 ( k ) }
同时,根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算变量节点n取值为0和1的伪后验概率向量数组F0(k),F1(k)中所有的非零向量,即对任一j=0,…,nb-1,计算:
{ F j 0 ( k ) = α j F j 0 Π i ′ ∈ Iset ( j ) R i ′ j 0 ( k ) , F j 1 ( k ) = β j F j 1 Π i ′ ∈ Iset ( j ) R i ′ j 1 ( k ) }
其中αmn和βmn为归一化系数使得 q mn 0 + q mn 1 = 1 ;
且所述步骤(d)中,是根据F0(k),F1(k)的大小硬判决得到向量数组S。
进一步地,上述向量译码方法还有具有以下特点:所述对向量的运算包括向量四则运算、向量循环移位和向量的函数运算,向量的四则运算通过两个向量相对应元素的四则运算来完成,向量与Pij′和Pij′ -1相乘通过对向量元素的循环右移或左移hij b位来完成,向量的函数运算可以通过对向量中每个元素求函数来完成。
进一步地,上述向量译码方法还有具有以下特点:所述校验节点到变量节点信息向量和变量节点到校验节点信息向量用定点表示,每个向量包括z个软比特,每个软比特定点为6个二进制比特。
进一步地,上述向量译码方法还有具有以下特点:所述迭代解码的校验节点更新处理,是采用上述标准化的置信度传播算法或者该算法的以下近似算法中的一种来实现的:BP-Based算法、APP-based算法、均匀的最大置信度传播算法,最小和算法以及最小和查找表算法。
本发明提供的基于单位阵及其循环移位阵的LDPC码向量译码装置包括基础矩阵处理模块、初始值运算模块、迭代运算模块、硬判决检测模块和控制模块,其中:
所述基础矩阵处理模块包括基础矩阵存储单元,该单元具有L个存储块,每个存储块用于存储基础矩阵 H b = { h ij b } m b × n b 中的一个非-1元素值 h ij b ≠ - 1 , L为基础矩阵中非-1元素的个数,i∈[0,1,…,mb-1],j∈[0,1,…,nb-1];
所述初始值运算模块用于接收输入数据Y=[y0,y1,…,yN-1]并缓存在nb个存储块中,然后计算出可信度向量数组的初始值,存储在nb个存储块中,并得到传递信息向量矩阵的初始值;
所述迭代运算模块用于利用上一次迭代得到的传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij进行更新运算,得到本次迭代后的传递信息向量矩阵和可信度向量数组;
所述硬判决检测模块用于对迭代得到的可信度向量数组进行硬判决得到硬判决向量数组 S = { S j } 1 × n b , 存储在nb个存储块中,然后根据 T i = Σ j = 1 n b P ij - 1 S j T 计算,并判决得到的奇偶校验向量数组 T = { T i } m b × 1 是否为全0;
所述控制模块用于控制其它模块完成初始值运算、迭代运算和硬判决检测,在数组T为全0时,输出硬判决码字,译码成功,结束;T不为全0时,再判断迭代次数是否小于最大迭代次数,如是,继续下一次迭代,如达到最大迭代次数,则译码失败,结束;
并且,所有存储块均为可以存储z个软比特的存储块,各数组和矩阵元素间的运算均为大小为z个软比特的向量运算,各模块的计算单元从相应的存储块直接读取和写入数据,每次传输的信息数据总是z个软比特的整数倍,其中,z为扩展因子。
进一步地,上述向量译码装置还可具有以下特点:所述存储块的大小为zmax个软比特,其中,zmax是特定码率最大码长的低密度奇偶校验码对应的扩展因子。
进一步地,上述向量译码装置还可具有以下特点:所述各个计算单元与相应的存储块之间是用硬件建立固定的连接,实现对数据的寻址。
进一步地,上述向量译码装置还可具有以下特点:所述基础矩阵处理模块中的基础矩阵存储单元中存储的是原始基础矩阵的元素值;或者,所述基础矩阵处理模块中的基础矩阵存储单元是指修正后的基础矩阵存储单元,该处理模块还包括原始基础矩阵存储单元和基础矩阵修正单元,且所述迭代运算模块的计算单元还与该修正后的基础矩阵存储单元的相应存储块中相连以读取数据。
进一步地,上述向量译码装置还可具有以下特点:所述初始值运算模块包括:
接收码字向量存储单元,用于缓存接收的码字序列Y=[y0,y1,…,yN-1],以接收序列向量数组 R = { R j } 1 × n b 的形式存储在nb个存储块中,每个存储块存储一个向量Rj=[yjz,yjz+1,…,y(j+1)z-1];
向量初始值计算单元,用于读出接收序列向量Rj,计算出初始对数似然比向量数组 Q = { Q j } 1 × n b , Q j ( 0 ) = 2 R j / σ 2 , σ2为噪声方差;
初始对数似然比向量存储单元,包括nb个存储块,分别存储所述初始对数似然比向量数组的nb个向量Qj
进一步地,上述向量译码装置还可具有以下特点:所述迭代运算模块包括校验节点到变量节点信息向量存储单元、节点更新处理阵列、由读网络和写网络组成的双向缓冲网络和码字对数似然比计算单元,其中:
所述校验节点到变量节点信息向量存储单元包括L个存储块,每个存储块用于存储节点更新处理阵列输出的要传递的L个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素;
所述节点更新处理阵列由Mb个分别对应于基础矩阵Mb行的计算单元组成,每个计算单元又包括分别对应于基础矩阵该行中所有非-1元素的多个计算子单元,共有L个,各计算子单元通过读网络从校验节点到变量节点信息向量存储单元和码字对数似然比向量存储单元的相应存储块中读取数据,完成一次节点更新运算,然后通过写网络将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块;
所述双向缓冲网络中,对于所述节点更新处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在码字对数似然比向量存储单元中对应的存储块与其相连;
所述码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。
进一步地,上述向量译码装置还可具有以下特点:所述迭代运算模块包括校验节点到变量节点信息向量存储单元,变量节点到校验节点信息向量存储单元,变量节点处理阵列,校验节点处理阵列,包括读网络A、写网络A、读网络B和写网络B的双向缓冲网络,以及码字对数似然比计算单元,其中:
所述校验节点到变量节点信息向量存储单元,包括L个存储块,每个存储块用于存储一个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素;
所述变量节点到校验节点信息向量存储单元,包括L个存储块,每个存储块用于存储一个变量节点到校验节点信息向量,每个变量节点到校验节点信息向量对应于基础矩阵中的一个非-1元素;
所述变量节点处理阵列由Nb个变量节点计算单元组成,每个计算单元包括多个对应于基础矩阵中该变量节点对应列中所有非-1元素的计算子单元,各计算子单元通过读网络B从校验节点到变量节点信息向量存储单元和初始对数似然比向量存储单元的相应存储块中读取数据,完成变量节点更新运算,然后通过写网络B将此次更新后的变量节点到校验节点信息向量写入到变量节点到校验节点信息向量存储单元相应的存储块;
所述校验节点处理阵列由Mb个校验节点计算单元组成,每个计算单元包括多个对应于基础矩阵中该校验节点对应行中所有非-1元素的计算子单元组成,各计算个子单元通过读网络A从变量节点到校验节点信息向量存储单元相应的存储块中读取数据,并结合基础矩阵中对应于该计算子单元的元素的值,完成校验节点更新运算,然后通过写网络A将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块;
对于校验节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,所述读网络A将该元素所在基础矩阵的行中除该元素外所有其它非-1元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连,所述写网络A将该元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连;
对于变量节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,所述读网络B将该元素所在基础矩阵的列中除该元素外所有其它非-1元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,还将该元素所在基础矩阵的列在初始对数似然比向量存储单元对应的存储块与其相连,写网络B将该元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连;
所述码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。
进一步地,上述向量译码装置还可具有以下特点:所述硬判决检测模块包括:
码字对数似然比向量存储单元,包括nb个存储块,用于存储每次迭代得到的nb个码字对数似然比向量Qj (k)
硬判决检测单元,用于对译码产生的码字对数似然比向量数组Q进行硬判决得到nb个的硬判决码字向量,并判断奇偶校验向量数组T是否为全0;
硬判决码字向量存储单元,包括nb个存储块,用于存储硬判决得到的nb个硬判决码字向量。
由上可知,本发明针对变码长LDPC码的特有码结构提出了向量BP译码方法及其装置,和传统的BP译码方法及译码装置比较有以下特点:
1)不需要存储和访问LDPC码的奇偶校验矩阵H,避免了存储奇偶校验矩阵中节点的地址信息,所以本发明译码器所需存储容量显著减少。
2)将基于比特的M×N的矩阵运算转化为基于z比特向量的mb×nb的矩阵运算,译码阵列的节点的连接数减少了z倍,具有简单的拓扑结构。
3)对于特定码率的LDPC码,针对不同的码长具有统一的拓扑结构和译码处理流程,更加适合并行实现。
4)译码拓扑只和基础矩阵Hb相关,与扩展矩阵H无关,不需要扩展。
因此,本发明提供的向量BP译码方法对于基于单位阵及其循环移位矩阵的LDPC码意义重大,必将成为此类LDPC码的主流译码方法,这种译码方法使得基于单位阵以及循环移位矩阵LDPC码走向实用,有效地推动此类LDPC码成为当前LDPC码主要形式。
附图说明
图1是一个数字通信系统的结构图。
图2是本发明向量BP方法第一实施例的流程图。
图3是本发明译码装置第一实施例的硬件结构图。
图4是本发明应用实例中校验节点到变量节点信息向量存储块与两个节点处理阵列的连接关系图。
图5是本发明应用实例中变量节点到校验节点信息向量存储块与两个节点处理阵列的连接关系图。
图6A和图6B是应用实例对应于基础矩阵第一行的校验节点处理阵列的结构图。
图7A和图7B是应用实例对应于基础矩阵第一列的变量节点处理阵列的结构图。
图8是现有译码器存储和访问奇偶校验矩阵的稀疏矩阵存储结构图。
图9是本发明译码装置第二实施例的硬件结构图。
具体实施方式
本发明的研究对象是基于单位阵及其循环移位矩阵的低密度奇偶校验码,现在先介绍一下这些基本概念。
基于单位阵以及其循环移位矩阵的LDPC码和基础矩阵的定义
任何一个具有特定码率和码长的LDPC码都有一个m×n奇偶校验矩阵H,通过这个m×n奇偶校验矩阵可以确定此LDPC码的编码器和译码器,在这里,n是码字的长度,m是校验比特的数目,k=m-n是系统比特数目。
基于单位阵及循环移位矩阵的LDPC码的校验矩阵H是许多大小相同的z×z分块方阵Pi,j构成的。H定义如下:
H = P 0,0 P 0 , 1 P 0,2 · · · P 0 , n b - 2 P 0 , n b - 1 P 1,0 P 1,1 P 1,2 · · · P 1 , n b - 2 P 1 , n b - 1 P 2,0 P 2,1 P 2,2 · · · P 2 , n b - 2 P 0 , n b - 1 · · · · · · · · · · · · · · · · · · P m b - 1,0 P m b - 1,1 P m b - 1,2 · · · P m b - 1 , n b - 2 P m b - 1 , n b - 1 = P H b - - - ( 1 )
这些方块阵Pi,j是单位阵或者单位阵的循环移位矩阵或者零矩阵。H由一个大小为mb×nb的基础矩阵Hb(base matrix)扩展得到,其中n=z·nb,m=z·mb,z称为扩展因子,根据码长除以基础矩阵的列数N计算得到,是一个大于1的正整数。Hb可以被划分为两个部分,设Hb1对应于信息比特,Hb2对应于校验比特,有 H b = [ ( H b 1 ) m b × k b | ( H b 2 ) m b × m b ] .
在H中,定义基本置换矩阵为单位阵循环右移一位的矩阵,每个非零分块矩阵都是z×z的基本置换矩阵的不同幂次,它们都是单位阵的循环移位矩阵(文中默认为右移)。这样通过幂次j就可以唯一标识每一个分块矩阵,单位矩阵的幂次用0表示,单位矩阵循环右移1位的矩阵的幂次用1表示,依此类推。零矩阵一般用“-1”来表示。将H的每个分块矩阵都用它的幂次代替,就得到一个mb×nb的幂次矩阵Hb,定义该Hb为H的基础矩阵。
例如,矩阵
Figure A20051011458900261
唯一对应于下面的参数z和一个2×4的基础矩阵Hb
z=3和 H b = 0 1 0 - 1 2 1 2 1
通过用z×z的单位阵及其循环移位矩阵或者零矩阵替代基础矩阵的非零元素,就可以将基础矩阵Hb扩展成为奇偶校验矩阵H。
本发明译码算法的第一实施例:
下面将基于现有简化形式的对数域BP译码方法,构造和推导出一简化形式的对数域向量BP方法,具体推导过程描述如下:
设某个结构化的LDPC码有M×N奇偶校验矩阵H,M是校验比特的数目,N是码字比特的数目,K=N-M是信息比特的数目。H具有式(1)中的结构, H = { ( P ij ) z × z } m b × n b , 即H是由mb×nb个z×z零方阵、单位方阵以及其循环移位矩阵构成的。H唯一对应一个基础矩阵 H b = { h ij b } m b × n b , hij b为基础矩阵中的元素,i∈[0,1,…,mb-1]和j∈[0,1,…,nb-1]。
定义基础矩阵行索引集合Iset(j)和列索引集合Jset(i)
基础矩阵第j列非-1元素行索引集合 Iset ( j ) = { i | i ∈ [ 0,1 , · · · , m b - 1 ] and h ij b ≠ - 1 }
基础矩阵第i行非-1元素列索引集合 Jset ( i ) = { j | j ∈ [ 0,1 , · · · , n b - 1 ] and h ij b ≠ - 1 }
定义接收序列向量数组R:
将输入译码器的1×N软接收序列Y=[y0,y1,…,yN-1]划分为nb组有z个软比特的1×z行向量,用向量数组R表示, R = [ R 0 , R 1 , · · · , R n b - 1 ] . R中任一元素Rj=[yjz,yjz+1,…,y(j+1)z-1],j∈[0,1,…,nb-1]。
定义码字对数似然比向量数组Q:
将译码器的1×N的码字对数似然比序列LLR=[LLR0,LLR1,…,LLRN-1]划分为nb组1×z行向量,用向量数组Q表示, Q = [ Q 0 , Q 1 , · · · , Q ( n b - 1 ) ] , Q中每一个元素Qj=[LLRjz,LLRjz+1,…,LLR(j+1)z-1],j∈[0,1,…,nb-1]。所以Qj(l)=LLRjz+1。l∈[0,1,…,z-1]
定义函数(x,a):
定义一个函数
Figure A20051011458900275
其中,a和x都是任意整数,z为扩展因子。
定义H中某行非零元素列索引集合N(m):
在奇偶校验矩阵H中,固定i和l,可以推导得到第iz+l行的所有非零元素构成的集合为:
在H中,第iz+l行的所有非零元素列索引构成的集合为:
Figure A20051011458900277
相应地,可以得出,在H中,第zj+l列的所有非零元素行索引构成的集合为:
Figure A20051011458900281
定义校验节点到变量节点信息向量矩阵U:
定义校验节点到变量节点信息向量矩阵 U = { u ij } m b × n b , i∈[0,1,…,mb-1]和j∈[0,1,…,nb-1]。U中每一个元素uij都是1×z行向量。uij用来记录和H中分块阵Pij位置对应的z个从校验节点到变量节点的校验节点到变量节点信息Lmn值,并且这种记录是按照列的顺序进行的,利用上述推导出的M(zj+l)的表达式,对于任一元素uij(l),总有:
Figure A20051011458900283
实际上,校验节点到变量节点信息矩阵与基础矩阵在大小、形状和非零元素位置方面是完全一致的。
定义校验节点到变量节点信息向量矩阵W:
定义矩阵 W = { w ij } n b × m b , W的任意元素Wij是一1×z行向量,定义 w ij = P ij - 1 u ij , H中置换矩阵Pij和Hb中非零元素hij b是对应的,Pijuij表示将1×z向量uij循环右移hij b位,定义z×z方阵Pij -1满足 P ij P ij - 1 = I z * z , Iz×z是一个大小z×z的单位阵,所以Pij -1uij表示将1×z向量uij循环左移hij b位。根据上面的定义及推导出的N(iz+l)的表达式,对于任一元素Wij(l),总有:
分析物理含义,可知wij同样用来记录和H中分块阵Pij位置对应的z个从校验节点到变量节点的校验节点到变量节点信息Lmn值,但记录是按行的顺序进行的。
定义向量数组Λ:
Λ = [ Λ 0 , Λ 1 , · · · , Λ n b - 1 ] . 其中,Λ中每一个元素是一个1×z行向量,并且 Λ j = P ij - 1 Q j , ∀ j ∈ [ 0,1 , · · · , n b - 1 ] , 向量Λj是将向量Qj循环左移hij b位的结果。记录的也是码字对数似然比序列,但记录在分块阵中是按行的顺序进行的。
向量Λj中任意元素
Figure A20051011458900294
基于上述定义,下面将对数域BP译码算法校验节点更新公式转换为向量形式。
根据 L mn ( k ) = 2 tanh - 1 Π n ′ ∈ N ( m ) \ n tanh ( LLR n ( k - 1 ) - L m n ′ ( k - 1 ) 2 )
Figure A20051011458900296
l∈[0,1,…,z-1],则对数域BP算法的校验点更新公式变为:
Figure A20051011458900297
其中
根据wij和Λj定义,有 w ij ( k ) ( l ) = 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( Λ j ( k - 1 ) ( l ) - w i j ′ ( k - 1 ) ( l ) 2 ) 上式对l∈[0,1,…,z-1]成立,故 w ij ( k ) ( l ) = 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( Λ j ( k - 1 ) - w i j ′ ( k - 1 ) 2 )
根据wij和Λj定义,有 P ij - 1 u ij ( k ) = 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P ij - 1 Q j ( k - 1 ) - P i j ′ - 1 u i j ′ ( k - 1 ) 2 )
所以有: u ij ( k ) = P ij 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P ij - 1 Q j ( k - 1 ) - P i j ′ - 1 u i j ′ ( k - 1 ) 2 ) - - - ( 2 )
根据计算码字的对数似然比:
LLR n ( k ) = LLR n ( 0 ) + Σ m ′ ∈ M ( n ) L m ′ n ( k )
故有 Q j ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) u i ′ j ( k ) - - - ( 3 )
其中:uij是Lmn的1×z行向量记录形式,Qj是LLRn的1×z行向量记录形式,Pij是H中z×z的分块方阵。分析式(2)和(3),算法是以1×z行向量为最小基本运算元素。
定义硬判决向量数组S:
将对数似然比LLR(qn)经过硬判决得到1×N序列 X ^ = [ x ^ 0 , x ^ 1 , · · · , x ^ n , · · · x ^ N - 1 ] 划分为nb组z比特的1×z行向量,用向量数组S表示, S = [ S 0 , S 1 , · · · , S n b - 1 ] , S中每一个元素Sj是一个1×z行向量,有: S j = [ x ^ jz , x ^ jz + 1 , · · · , x ^ ( j + 1 ) z - 1 ] , j∈[0,1,…,nb-1]。
定义奇偶校验向量数组T:
定义向量数组 T = { T i } m b × 1 , Tj是一个z×1的列向量。令T=H·ST
则有 T i = Σ j = 1 n b P ij - 1 S j T . 若T为全0,则H·ST=0。
下面将描述本实施例简化形式的对数域向量BP算法的流程,先重复一下以上定义:
译码方法采用的校验矩阵 H = { ( P ij ) z × z } m b × n b , 对应基础矩阵 H b = { h ij b } m b × n b , i∈[0,1,…,mb-1],j∈[0,1,…,nb-1],迭代次数为k;
定义接收序列向量数组 R = { R j } 1 × n b , 元素Rj是1×z行向量;
定义校验节点到变量节点信息向量矩阵 U = { u ij } m b × n b , 元素uij均是1×z行向量;
定义码字对数似然比向量数组 Q = { Q j } 1 × n b , 元素Qj均是1×z行向量;
定义一个硬判决向量数组 S = { S j } 1 × n b , 元素Sj均是1×z行向量;;
定义一个奇偶校验向量数组 T = { T i } m b × 1 元素 T i = Σ j = 1 n b P ij - 1 S j T .
其流程如图2所示,包括以下步骤:
步骤110,将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组,令接收序列向量数组R的元素Rj=[yjz,yjz+1,y(j+1)+z-1],j∈[0,1,…,nb-1];
步骤120,令k=0,利用接收序列向量数组R完成对校验节点到变量节点信息向量矩阵U和码字对数似然比向量数组Q中所有非零向量初始值的运算:
for j=0,…,nb-1
for  i∈Iset(j)
u ij ( 0 ) = 0 , Q j ( 0 ) = 2 R j / σ 2 ,
Iset(j)是Hb第j列非-1元素行索引集合,σ2为噪声方差。
步骤130,根据上一次迭代的校验节点到变量节点信息向量矩阵U(k-1)和码字对数似然比向量数组Q(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(K)中所有的非零向量,实现节点更新;
for i=0,…,mb-1
for  j∈Jset(i)
u ij ( k ) = P ij 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P ij - 1 Q j ( k - 1 ) - P i j ′ - 1 u i j ′ ( k - 1 ) 2 ) - - - ( 4 )
其中,Jset(i)是Hb第i行非0元素列索引集合。式(4)的更新公式可分为求绝对值和求符号两步来完成:
| u ij ( k ) | = P ij φ ( Σ j ′ ∈ Jset ( i ) \ j φ ( P ij - 1 Q j ( k - 1 ) - P i j ′ - 1 u i j ′ ( k - 1 ) ) )
sign ( u ij ( k ) ) = - Π j ′ ∈ Jset ( i ) \ j sign ( P ij - 1 Q j ( k - 1 ) - P i j ′ - 1 u i j ′ ( k - 1 ) )
其中,定义φ(x)=-log(tanh(x/2))=log(coth(x/2)),x是大于零的实数。
步骤140,根据最初对数似然比向量数据Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的码字对数似然比向量数组Q(k)中所有的非零向量;
for j=0,…,nb-1
Q j ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) u i ′ j ( k ) - - - ( 5 )
步骤150,对Q(k)进行硬判决得到硬判决向量数组S,根据 T i = Σ j = 1 n b P ij - 1 S j T 计算奇偶校验向量数组T=HST
步骤160,判定T是否全0,若是,执行步骤190,否则,执行下一步;
步骤170,令k=k+1,判断迭代次数“k”是否少于某预先设定的最大值Kmax,如果是,则返回步骤130,否则,执行下一步;
步骤180,宣告译码失败,结束;
步骤190,判定译码成功,输出硬判决码字序列,结束。
可以看出,本实施例算法的最小运算单位是1×z的行向量,算法的加减乘除就是向量的加减乘除,Pij乘某个向量表示对这个向量循环右移hij b位,Pij -1乘某个向量表示对这个向量循环左移hij b位,某个向量的f函数就是该向量每个元素的f函数重新构成的向量。由于所有的运算都是基于向量运算,所以我们把本发明的算法称为向量BP算法。
综上所述,由于整个译码方法是基于mb×nb基础矩阵来运算的,而不是M×N的矩阵运算,而基础矩阵很小,因而避免了非常繁杂的稀疏矩阵数据结构,并且由于特定码率的基于单位阵的低密度奇偶校验码通常只有一个基础矩阵,不同码长下修正得到的基础矩阵的非零元素位置相同,因此可以采用相同的拓扑结构,从而极大地降低硬件实现的复杂度,极大地降低了译码器内部的连接数。
本发明译码算法的第二实施例
本实施例针对一般形式的对数域译码方法,给出对应的向量译码算法。
本实施例将校验节点更新和变量节点更新分成两步完成,在第一实施例的基础上,只需要多定义一个存储Zmn的变量节点到校验节点信息向量矩阵V。
定义变量节点到校验节点信息向量矩阵 V = { v ij } m b × n b , i∈[0,1,…,mb-1]和∈[0,1,…,nb-1]。V中每一个元素vij都是1×z行向量。vij是用来记录和H中分块阵Pij位置对应的z个Zmn值,并且这种记录是按照列的顺序。
对于vij的任意元素vij(l),总有:
其中,l∈[0,1,…,z-1]
重复一下所作的定义:译码方法采用的校验矩阵 H = { ( P ij ) z × z } m b × n b , 基础矩阵 H b = { h ij b } m b × n b , i∈[0,1,…,mb-1],j∈[0,1,…,nb-1],迭代次数为k;对接收序列向量数组R、校验节点到变量节点信息向量矩阵 U = { u ij } m b × n b , 码字对数似然比向量数组 Q = { Q j } 1 × n b , 硬判决向量数组 S = { S j } 1 × n b , 奇偶校验向量数组 T = { T j } 1 × n b 的定义与第一实施例相同,这里不再赘述。
一般形式的对数域向量译码方法的流程包括以下步骤:
步骤A,将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组,令接收序列向量数组R的元素Rj=[yjz,yjz+1,…,y(j+1)z-1],j∈[0,1,…,nb-1];
步骤B,令k=0,利用接收数据向量数组R完成对变量节点到校验节点信息向量矩阵V和码字对数似然比向量数组Q中所有非零向量初始值的计算;
for j=0,…,nb-1
for  i∈Iset(j)
v ij ( 0 ) = Q j ( 0 ) = 2 R j / σ 2
式中,Iset(j)是Hb第j列非-1元素行索引集合,σ2为噪声方差。
步骤C,根据上一次迭代的V(k-1)和R(l-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(K)中所有的非零向量,实现校验节点更新;
for i=0,…,mb-1
for  j∈Jset(i)
u ij ( k ) = P ij 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P i j ′ - 1 v i j ′ ( k - 1 ) 2 ) - - - ( 6 )
式中,Jset(i)是HB第i行非0元素列索引集合。同样地,该步也可以通过求绝对值和求符号两步来完成。
步骤D,根据最初对数似然比向量数组Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(K),计算本次迭代的变量节点到校验节点信息向量矩阵V(k)中所有的非零向量,实现变量节点更新;
for  j=0,…,nb-1
for  i=0,…,mb-1
v ij ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) \ i u i ′ j ( k ) - - - ( 7 )
同时计算本次迭代的码字对数似然比数组Q(k)中所有的非零向量;
for j=0,…,nb-1
Q j ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) u i ′ j ( k ) - - - ( 8 )
步骤E~步骤I的后续的硬判决,对译码结果的判断、处理等与第一实施例的步骤150~190完全相同,这里不再重复。
上述两个实施例的对数域的向量译码算法,在迭代解码过程中使用了Log函数和正切tanh函数,在实际中可以采用M.Fossorier et al.提出的BP算法的近似算法——BP-Based算法和APP-based算法。以及在IEEEtrans.Commun.第47卷,第673-680页,1999年5月,题目为“REDUCEDCOMPLEXITY ITERATIVE DECODING OF LOW DENSITY PARITYCHECK CODES BASED ON BELIFE PORPAGATION”的研究报告中,chen和Fossorier等人提出了UMP-BP(Uniformaly Most Powerful-BeliefPropagation,均匀的最大置信度传播)算法和标准化-BP(Normalized-BeliefPropagation,标准化的置信度传播)算法来实现对Log函数和正切tanh函数的近似运算。这样可以减少迭代译码的复杂度,而性能降低较小。另外,也可以采用三星公司公开的题目为“在通信系统中解码低密度奇偶校验码的装置和方法”中提出的对标准化-BP算法的改进算法、最小和算法以及最小和查找表算法等近似算法。本发明译码方法与传统译码方法的核心差别在于将z个比特封装一个向量,以向量为基本运算单位来实现。
本发明译码算法的第三实施例
本实施例对照普通概率域的BP算法,引用它的qn 0、qn 1、qmn 0、qmn 1、rmn 0和rmn 1,构造和推导出相应的概率域向量BP算法,具体推导过程描述如下:
与第一实施例相同的定义如下:i∈[0,1,…,mb-1],j∈[0,1,…,nb-1],校验矩阵 H = { ( P ij ) z × z } m b × n b , 基础矩阵 H b = { h ij b } m b × n b
接收序列向量数组R的元素Rj都是1×z行向量,Rj=[yjz,yjz+1,…,y(y+1)z-1]
基础矩阵第j列非-1元素行索引集合 Iset ( j ) = { i | i ∈ [ 0,1 , · · · , m b - 1 ] and h ij b ≠ - 1 }
基础矩阵第i行非-1元素列索引集合 Jset ( i ) = { j | j ∈ [ 0,1 , · · · , n b - 1 ] and h ij b ≠ - 1 }
硬判决序列 X ^ = [ x ^ 0 , x ^ 1 , · · · , x ^ n , · · · x ^ N ] , 硬判决向量数组S的元素Sj都是1×z行向量, S j = [ x ^ jz , x ^ jz + 1 , · · · , x ^ ( j + 1 ) z - 1 ] .
奇偶校验向量数组元素 T i = Σ j = 1 n b P ij - 1 S j T .
另外,需补充以下向量数组和向量矩阵的定义:
定义码字概率向量数组F0和F1
将译码器的1×N的码字比特为0的概率序列{qn 0}1×n分为nb组1×z行向量,用F0表示, F 0 = [ F 0 0 , F 1 0 , · · · F ( n b - 1 ) 0 ] , 在这里,F0中每一个元素是一个1×z行向量,如下所示:
对于, F j 0 = [ q jz 0 , q jz + 1 0 , · · · , q ( j + 1 ) z - 1 0 ] . j∈[0,1,…,nb-1]
其中, F j 0 ( l ) = q jz + l 0 . l∈[0,1,…,z-1]。
同样,将{qn 1}1×n分为nb组1×z行向量,用F1表示, F 1 = [ F 0 1 , F 1 1 , · · · F ( n b - 1 ) 1 ] .
所以, F j 1 = [ q jz 1 , q jz + 1 1 , · · · , q ( j + 1 ) z - 1 1 ] . j∈[0,1,…,nb-1]
定义校验节点到变量节点信息向量矩阵R0和R1
定义一个矩阵 R 0 = { R ij 0 } m b × n b , i∈[0,1,…,mb-1]和j∈[0,1,…,nb-1]。R0中每一个元素Rij 0都是1×z行向量。Rij 0是用来记录和H中分块阵Pij位置对应的z个rmn 0值,并且这种记录是按照列的顺序。
对于Rij 0的任意元素Rij 0(l),总有:
其中,l∈[0,1,…,z-1]
定义一个矩阵 R 1 = { R ij 1 } m b × n b , i∈[0,1,…,mb-1]和j∈[0,1,…,nb-1]。R1中每一个元素Rij 1都是1×z行向量。Rij 1用来记录和H中分块阵Pij位置对应的z个rmn 1值,并且这种记录是按照列的顺序。
对于Rij 1的任意元素Rij 1(l),总有:
其中,l∈[0,1,…,z-1]
定义向量矩阵Q0、Q1、ΔQ和ΔR:
定义变量节点到校验节点信息向量矩阵 Q 0 = { Q ij 0 } m b × n b , i∈[0,1,…,mb-1]和j∈[0,1,…,nb-1]。Q0中每一个元素Qij 0都是1×z行向量。Qij 0是用来记录和H中分块阵Pij位置对应的z个qmn 0值,并且这种记录是按照列的顺序。
对于Qij 0的任意元素Qij 0(l),总有:
Figure A20051011458900365
其中,l∈[0,1,…,z-1]
定义变量节点到校验节点信息向量矩阵 Q 1 = { Q ij 1 } m b × n b , i∈[0,1,…,mb-1]和j∈[0,1,…,nb-1]。Q1中每一个元素Qij 1都是1×z行向量。Qij 1是用来记录和H中分块阵Pij位置对应的z个qmn 1值,并且这种记录是按照列的顺序。
对于Qij 1的任意元素Qij 1(l),总有:
Figure A20051011458900367
其中,l∈[0,1,…,z-1]
定义一个矩阵 ΔQ = { Δ Q ij } m b × n b , i∈[0,1,…,mb-1]和j∈[0,1,…,nb-1]。ΔQ中每一个元素ΔQij都是1×z行向量。
对于ΔQij的任意元素ΔQij(l),有ΔQij(l)=Q0 ij(j)-Q1 ij(l),l∈[0,1,…,z-1]定义一个矩阵 ΔR = { Δ R ij } m b × n b , i∈[0,1,…,mb-1]和j∈[0,1,…,nb-1]。ΔR中每一个元素ΔRij都是1×z行向量。
对于ΔRij的任意元素ΔRij(l),有ΔRij(l)=R0 ij(l)-R1 ij(l),l∈[0,1,…,z-1]。
根据对数域算法的类似推导,可以得到下面概率域形式的向量BP算法流程的步骤:
步骤一,将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组z比特的1×z行向量数组 R = [ R 0 , R 1 , · · · , R n b - 1 ] , R的任意元素Rj=[yjz,yjz+1,…,y(j+1)z-1];
步骤二,利用接收数据数组R,计算变量节点到校验节点信息向量矩阵 Q 0 = { Q ij 0 } m b × n b , Q 1 = { Q ij 1 } m b × n b ΔQ = { Δ Q ij } m b × n b 以及码字概率向量数组 F 0 = { F j 0 } 1 × n b F 1 = { F j 1 } 1 × n b 中所有非零向量的初始值;
for j=0,…,nb-1
for i∈Iset(j)
{ Q ij 0 = F j 0 = 1 1 + e - 2 R j / σ 2 , Q ij 1 = F j 1 = 1 - Q ij 0 , Δ Q ij = Q ij 0 - Q ij 1 }
步骤三,根据上一次迭代的ΔQ(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k)中所有的非零向量,实现校验节点更新;
for i=0,…,mb-1
for j∈Jset(i)
Δ R ij ( k ) = P ij Π j ′ ∈ Jset ( i ) \ j P i j ′ - 1 Δ Q i j ′ ( k - 1 ) , R ij 0 ( k ) = ( 1 + Δ R ij ( k ) ) / 2 , R ij 1 ( k ) = 1 - r mn 0 = ( 1 - Δ R ij ( k ) ) / 2
步骤四,根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(K),R1(K),计算本次迭代的变量节点到校验节点信息向量矩阵Q0(k),Q1(k)中所有的非零向量,实现变量节点更新;
for j=0,…,nb-1
for i∈Iset(j)
{ Q ij 0 ( k ) = α ij F j 0 Π i ′ ∈ Iset ( j ) \ i R i ′ j 0 ( k ) , Q ij 1 ( k ) = β ij F j 1 Π i ′ ∈ Iset ( j ) \ i R i ′ j 1 ( k ) }
步骤五,根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算变量节点n取值为0和1的伪后验概率向量数组F0(k),F1(k)中所有的非零向量;
for j=0,…,nb-1
{ F j 0 ( k ) = α j F j 0 Π i ′ ∈ Iset ( j ) R i ′ j 0 ( k ) , F j 1 ( k ) = β j F j 1 Π i ′ ∈ Iset ( j ) R i ′ j 1 ( k ) }
步骤六,根据F0(k),F1(K)的大小,硬判决得到向量数组S,根据T=HST,判定T是否全0,若是,则译码成功,输出硬判决码字,结束;否则,继续判断迭代次数是否少于某预先设定的最大值,如果少于,则返回步骤三,否则,宣告译码失败,结束。
本实施例译码方法的最小运算单位也是1×z的向量,向量算法的规则与前两个实施例都是一样的,由于所有的运算都是基于向量运算,所以我们把本实施例译码方法所采用的算法称为概率域向量BP算法。
综上所述,本发明的向量译码方法的计算原理和处理流程与传统算法是相同的,只是实现时将总是将z比特数据封装成向量,译码实现总是基于大小为mb×nb基础矩阵Hb,不需要奇偶校验矩阵H,是一个大小为mb×nb的矩阵运算。新的矩阵运算总是以z比特(如其中的码字向量、变量节点到校验节点信息向量和校验节点到变量节点信息向量等)的向量为基本运算单元,所有可能运算包括向量加减乘除、向量移位运算和向量的函数运算。按向量译码方法设计的译码器的拓扑依赖于基础矩阵,和奇偶校验矩阵没有直接的关系。
本发明译码装置的第一实施例
根据本发明提出的LDPC码译码方法可以设计出的一个优秀的LDPC码译码器,它的拓扑结构只和基础矩阵有关,而与奇偶校验矩阵无关,所以特别适合于变码长的结构化的LDPC码。
本实施例用于实现向量BP算法的并行向量译码器是针对第二实施例中一般形式的对数域向量BP算法设计的,其硬件结构如图3所示,并行向量译码器主要是由控制部分(control unit),运算处理部分、存储部分和双向缓冲网络部分构成,它等最重要的特征是所有数据的传输、存储和计算的最小单位都是一个大小为z的向量。即所有存储单元都是由可以存储z个软比特的存储块构成,通常每个软比特需要6比特进行定点描述。最小运算单元也是大小为z个软比特的向量,经过读写网络每次传输的信息数据总是z个软比特的整数倍。
存储模块包括原始基础矩阵存储单元(Hb_MEM)、修正后的基础矩阵存储单元(Hbz_MEM)、接收码字向量存储单元(IN_MEM)、初始对数似然比向量存储单元、硬判决码字向量存储单元(OUT_MEM)、码字对数似然比向量存储单元、变量节点到校验节点信息向量存储单元(VNOD_MEM)和校验节点到变量节点信息向量存储单元(CNOD_MEM)。其中:
原始基础矩阵存储单元,包括多个存储块,分别用于存储原始基础矩阵中的一个非-1元素,以下将对应于原始基础矩阵(或修正后的基础矩阵)中一个非-1元素的一个存储块称为一个节点,每个存储块占有8比特。
修正后的基础矩阵存储单元也包括多个存储块,分别用于存储经基础矩阵修正单元修正后的基础矩阵中的一个非-1元素,该元素将被用于参与校验节点更新运算。公式中,Pij或Pij -1乘一个长度为z向量的向量,就是对该向量进行向右或向左的hij b的循环移位。所以校验节点处理阵列中的循环移位操作与基础矩阵的元素取值是相关的。修正算法可以采用取模(mod)、取整(scale+floor)或舍入(scale+round)等。
接收码字向量存储单元,用于缓存接收的码字序列,并输出到向量初始值计算单元,有nb个存储块,每个存储块存储一个大小为z的行向量。
初始对数似然比向量存储单元,用于存储向量初始值计算单元计算出的nb个初始对数似然比向量,供变量节点处理单元和码字对数似然比计算单元使用。
码字对数似然比向量存储单元,用于存储码字对数似然比计算单元输出的每次迭代后的nb个码字对数似然比向量。
硬判决码字向量存储单元,用于存储硬判决检测单元得到的每次迭代后的nb个硬判决码字向量。
校验节点到变量节点信息向量存储单元,包括L个存储块,每个存储块用于存储校验节点处理阵列输出的从校验节点传递到变量节点的L个校验节点到变量节点信息向量,L为基础矩阵中非-1元素的个数,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素。校验节点到变量节点信息向量一般定点表示,一个校验节点到变量节点信息向量包括z个软比特,每个软比特定点为6个二进制比特,1比特表示符号,5比特表示绝对值部分。
变量节点到校验节点信息向量存储单元,包括L个存储块,每个存储块用于存储变量节点处理阵列输出的从变量节点传递到校验节点的L个变量节点到校验节点信息向量,每个变量节点到校验节点信息向量对应于基础矩阵中的一个非-1元素,也用定点表示。
运算处理模块包括变量节点处理阵列(VNUs)、校验节点处理阵列(CNUs)、向量初始值计算单元、码字对数似然比计算单元、基础矩阵修正单元(Hb_Fix)和硬判决检测单元(HDC)。其中:
变量节点处理阵列由Nb个变量节点计算单元VNU_j组成。每个计算单元由若干对应于基础矩阵中该变量节点对应列中所有非-1元素的计算子单元组成,各子单元通过读网络B从校验节点到变量节点信息向量存储单元和初始对数似然比向量存储单元的相应存储块中读取数据,完成变量节点更新运算(见式(7)),然后通过写网络B将此次更新后的变量节点到校验节点信息向量写入到变量节点到校验节点信息向量存储单元相应的存储块。
校验节点处理阵列由Mb个校验节点计算单元CNU_i组成。每个计算单元由若干对应于基础矩阵中该校验节点对应行中所有非-1元素的计算子单元组成,各个子单元通过读网络A从变量节点到校验节点信息向量存储单元相应的存储块中读出变量节点到校验节点信息向量,并结合基础矩阵中对应于该计算子单元的元素的值,完成校验节点更新运算(见式(6)),然后通过写网络A将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块。
向量初始值计算单元,用于根据接收码字向量和噪声方差,计算出nb个初始对数似然比向量写入初始对数似然比向量存储单元,同时还计算出L个变量节点到校验节点信息向量的初始值写入到变量节点到校验节点信息向量存储单元。
基础矩降修正单元(Hb_Fix)用于根据不同的码长对基础矩阵进行修正,并将修正后的基础矩阵存储到修正后的基础矩阵存储单元。
码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。
硬判决检测单元(HDC)用于对译码产生的码字对数似然比向量进行硬判决,将得到的硬判决码字向量硬判决码字向量存储单元,并判断奇偶校验向量数组T是否为全0,如果为全0,则译码成功。
各个计算单元中进行的运算都可以分为向量间运算和向量内部运算。向量间运算的基本处理单位是向量;向量内部运算是指各计算单元或子单元的每个运算操作内部的运算,它的基本处理单位是比特,一般都是z个软比特的处理。向量运算包括向量四则运算、向量循环移位和向量的函数运算等。向量的四则运算可以通过两个1×zmax寄存器的相对应元素的四则运算来完成,向量的循环移位可以通过1×zmax寄存器的循环移位来完成,向量的函数运算可以通过对1×zmax寄存器中每个元素求函数来完成。其中,zmax是特定码率最大码长的低密度奇偶校验码对应的扩展因子。用zmax作为向量的大小来设计,就可以适用于任何一种码长下的译码的需要,不必改变译码器的拓扑结构。向量运算用硬件很容易实现,具体的运算逻辑应当根据选用的实现方法来确定,例如,可以采用多种逻辑来实现Log函数和正切tanh函数。
双向缓冲网络部分包括缓冲网络A和B:网络A又分为读网络A和写网络A,网络B又分为读网络B和写网络B。读网络A提供校验节点处理阵列从变量节点到校验节点信息向量存储单元读取变量节点到校验节点信息向量时的读地址,写网络A提供校验节点处理阵列将校验节点到变量节点信息向量写入校验节点到变量节点信息向量存储单元时的写地址,读网络B提供变量节点处理阵列从校验节点到变量节点信息向量存储单元读取校验节点到变量节点信息向量时的读地址,写网络B提供变量节点处理阵列将变量节点到校验节点信息向量写入变量节点到校验节点信息向量存储单元时的写地址。
由上文已经知道,变量节点到校验节点信息向量存储单元的L个存储块,校验节点到变量节点信息存储单元的L个存储块,Nb个变量节点计算单元中的L个计算子单元,Mb个校验节点计算单元中的L个计算子单元都分别对应于基础矩阵中的一个非-1元素。根据本发明译码方法第二实施例中的变量节点和校验节点更新公式,可以得出以下结论:
对于校验节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络A将该元素所在基础矩阵的行中除该元素外所有其它非-1元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连。写网络A将该元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连。另外,读网络A还将该元素在修正后的基础矩阵存储单元中对应的存储块与该计算子单元相连。
对于变量节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络B将该元素所在基础矩阵的列中除该元素外所有其它非-1元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,还将该元素所在基础矩阵的列在初始对数似然比向量存储单元对应的存储块与其相连。写网络B将该元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连。
此外,在校验节点到变量节点信息向量存储单元的L个存储块和码字对数似然比计算单元的nb个计算子单元之间也存在以下寻址关系:对于基础矩阵某一列的码字对数似然比计算子单元与该列中所有非-1元素对应的校验节点到变量节点信息向量存储单元中的存储块相连接。
可以看出,上述对应关系只与基础矩阵中非-1元素的位置有关且十分简单。缓冲网络建立运算单元与存储单元的连接关系,可以用硬件建立固定的连接,也可以建立可变的寻址。对于图中的寻址关系,本实施例是用FPGA等可编程阵列将各计算子单元与相应存储块按上述的对应关系直接连接生成读写网络,当然也可以在DPS中用编程实现上述寻址关系,即系统在工作时再根据基础矩阵中非-1元素的位置建立上述存储块与计算子单元间的寻址关系,此时由于涉及的存储块和相应的向量很少,可以直接访问,因而无需存储指示它的索引或指向它的指针。以上寻址关系还将在下文中的应用实例中加以更直观的说明。
传统的译码算法是基于奇偶校验矩阵的,它需要如图8所示的稀疏矩阵存储结构,该结构是一个二维的双向链表。除了需要存储译码需要的软比特信息,还需要存储访问节点的地址信息,即指向上下左右节点的地址指针。这些地址信息一般都是32位的。所以,对于每个节点,不仅仅需要存储2个软比特译码数据,还需要存储4个地址指针。而本发明避免了存储上述的4个地址指针,故存储空间至少节约了2/3。
控制模块(control unit)主要用于控制、协调各个单元完成以下译码流程:
第一步,初始化
当数据在输入端准备好时,译码器在每个时钟周期,读入来自I/O口的码字软比特(即接收的码字序列),保存在接收码字向量存储单元。当整块数据得到存储后,向量初始值计算单元根据读入的接收码字向量计算出对数似然比向量的初始值写入初始对数似然比向量存储单元,还计算出变量节点到校验节点信息向量的初始值写入变量节点到校验节点信息向量存储单元。
第二步,迭代译码,由以下两个子步骤实现:
在第一个子步骤中,译码器的校验节点处理阵列将进行校验节点更新的计算,完成水平方向的迭代译码。在每一个时钟周期,从变量节点到校验节点信息向量存储单元的每一存储块中读出一个变量节点到校验节点信息向量,送到相应的校验节点子计算单元完成校验节点更新运算,然后将得到的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元相应的存储块中。
在第二个子步骤中,译码器的变量节点处理阵列将进行变量节点更新的计算,完成垂直方向的迭代译码。在每一个时钟周期,从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元的每一个存储块中读出一个初始对数似然比向量或变量节点到校验节点信息向量,送到相应的变量节点计算子单元完成变量节点更新运算,然后将得到的变量节点到校验节点信息向量写入到变量节点到校验节点信息向量存储单元相应的存储块;
同时,在每一个时钟周期,从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元的每一个存储块中读出一个初始对数似然比向量和校验节点到变量节点信息向量,送到相应的码字对数似然比计算子单元,计算出此次迭代的码字对数似然比向量,再写入到码字对数似然比向量存储单元相应的存储块。
第三步,译码检测和输出
硬判决检测单元(HDC)对存储的码字对数似然比向量进行硬判决,存储得到的硬判决码字序列并对硬判决结果进行检测,若正确,则结束译码,输出硬判决码字序列;若错误,再判断是否达到最大的迭代次数,如果达到,则译码失败,结束,否则返回第二步继续迭代译码。
下面将以一个比较简单的应用实例对本实施例采用对数域向量BP算法的译码器进行说明。
假设基础矩阵为上本文举出的实例,即 H b = 0 1 0 - 1 2 1 2 1
那么,其译码器的整体结构如图3所示,其变量节点数nb=4,校验节点数mb=2,基础矩阵中非“-1”元素有7个,假定扩展因子z=2,因此该应用实例中所有信息存储和运算的基本单位均为1*2个软比特的向量。
相应地,变量节点计算单元的个数也为4,在对应于第1,2,3列的每个变量节点计算单元中包括2个计算子单元,对应于第4列的变量节点计算单元包括1个计算子单元。校验节点计算单元的个数也为2,而在对应于第1、2行的校验节点计算单元中分别包括3个和4个计算子单元。
应用实例中,校验节点到变量节点信息向量存储单元和变量节点到校验节点信息向量存储单元中各有7个存储块CNOD_MEMij和VNOD_MEMij,分别用于存储对应于7个基础矩阵节点的变量节点到校验节点信息向量和校验节点到变量节点信息向量。而接收序列向量存储单元、硬判决码字向量存储单元、初始对数似然比向量存储单元、码字对数似然比向量存储单元中均有4个存储块,分别存储对应于基础矩阵nb个列的向量信息。
下面介绍其译码方法的实现。
在接收到软判决比特后,先计算对数似然比向量数组Q和校验节点到变量节点信息向量矩阵U的初始值,得到Q0 (0),Q1 (0),Q2 (0),Q3 (0),以及大小、非零元素位置和基础矩阵相对应的信息矩阵V的7个元素的初始值v00 (0),v01 (0),v02 (0),v10 (0),v11 (0),v12 (0),v13 (0)(无v03 (0));
然后在校验节点处理阵列更新本次迭代的校验节点到变量节点信息矩阵U(k),公式是:
对于i=0,…,mb-1
对于j∈Jset(i)
u ij ( k ) = P ij 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P i j ′ - 1 v i j ′ ( k - 1 ) 2 )
其中,第一个检验节点(对应于第一行)包括了3个节点的运算,例如第一次迭代时:
u 00 ( 1 ) = P 00 2 tanh - 1 { tanh P 01 - 1 v 01 ( 0 ) 2 × tanh P 02 - 1 v 02 ( 0 ) 2 }
校验节点的更新公式分为求绝对值和求符号两个过程来完成,如下:
| u ij ( k ) | = P ij φ ( Σ j ′ ∈ Jset \ j φ ( P i j ′ - 1 · v i j ′ ( k - 1 ) ) )
sign ( u ij ( k ) ) = - P ij Π j ′ ∈ Jset \ j sign ( P i j ′ - 1 · v i j ′ ( k - 1 ) )
对于绝对值运算,有:
| u 00 ( k ) | = P 00 φ ( φ ( P 01 - 1 · v 01 ( k - 1 ) ) ) + φ ( P 02 - 1 · v 02 ( k - 1 ) ) ) )
| u 01 ( k ) | = P 00 φ ( φ ( P 00 - 1 · v 00 ( k - 1 ) ) ) + φ ( P 02 - 1 · v 02 ( k - 1 ) ) ) )
| u 02 ( k ) | = P 02 φ ( φ ( P 00 - 1 · v 00 ( k - 1 ) ) ) + φ ( P 01 - 1 · v 01 ( k - 1 ) ) ) )
其中,定义φ(x)=-log(tanh(x/2))=log(coth(x/2)),x是大于0的实数。
符号运算可以用与门来实现。这里每个量都是一个由z个软比特构成的向量,当绝对值和符号分开后,符号向量用z×1二进制比特表示,绝对值向量用z×5个二进制比特表示。每个软二进制比特定点化后,符号用1比特二进制表示,绝对值用5比特二进制表示。
该运算用函数表示就是: u 00 ( 1 ) = F ( v 01 ( 0 ) , v 02 ( 0 ) ) , u 01 ( 1 ) = F ( v 00 ( 0 ) , v 02 ( 0 ) ) , u 02 ( 1 ) = F ( v 00 ( 0 ) , v 01 ( 0 ) ) . 因此,在第一校验节点计算单元CNU1中又包括3个并行计算的计算子单元,分别用于计算校验节点到变量节点信息向量u00,u01,u02,相应地,第二校验节点计算单元CNU1应包括4个计算子单元,分别用于计算校验节点到变量节点信息向量u10,u11,u12,u13。整个校验节点处理阵列共有7个计算子单元CNUij,分别对应于基础矩阵的7个节点。
请同时参照图4和图5,示出了校验节点处理阵列与校验节点到变量节点信息向量存储单元、变量节点到校验节点信息向量存储单元的连接关系,即寻址关系。从图4可以看出,每个校验节点计算单元是从对应基础矩阵行中非-1元素对应的变量节点到校验节点信息向量存储单元中的存储块中读数据的。图中虽然没有示出校验节点计算单元中的计算子单元,但从校验节点的更新公式可以看出,每个计算子单元是从相应行中除该子单元对应元素外其它非-1元素在变量节点到校验节点信息向量存储单元中对应的存储块中读数据的,如计算子单元CNU00是从存储块VNOD_MEM_01、VNOD_MEM_02中取数据。
从图5可以看出,每个校验节点计算单元是输出到对应基础矩阵行中非-1元素在校验节点到变量节点信息向量存储单元中对应的存储块。图中虽然没有示出校验节点计算单元中的计算子单元,但从校验节点的更新公式可以看出,两者是通过各自对应的基础矩阵中非-1元素而关联并一一对应连接的,即计算子单元CNUij输出到存储块CNOD_MEMij
图6A和图6B示出了应用实例中,对应基础矩阵第一行的校验节点处理单元的结构。在图6A中,CLS是循环左移(circular left shift)的缩写,CLS hb(ij)表示对于一个z个软比特的向量循环左移hb(ij)位,其中hb(ij)是基础矩阵Hb的第i行第j列元素,可以从基础矩阵中相应的存储块读取。同理,CRS hb(ij)表示对于一个z个软比特的向量循环右移hb(ij)位。模块LUT是查找表(Look up table),主要用来实现函数φ(x),可以采用3比特的分段函数线性近似(8阶量化),同时可以采用非均匀量化来减小量化误差,这由采用的具体实现算法决定。上述所有的运算都是以大小为z个软比特的向量为基本单位,LUT实现了对向量的每个元素的查找表运算。同理,对应基础矩阵第二行的校验节点计算单元结构类似。这两个校验节点处理阵列共同构成了此译码器的校验节点处理阵列(CNUs)。图6B显示了对应基础矩阵第一行的校验节点处理单元通过“与门”来实现符号运算的结构。
下面继续讨论应用实例中变量节点的更新,由下面的公式来表示:
for j=0,…,nb-1
for i=0,…,mb-1
v ij ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset / j u i ′ j ( k - 1 )
for j=0,…,nb-1
Q j ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset u i ′ j ( k )
对应于基础矩阵第1列的变量节点包括两个计算子单元,运算如下:
v 00 ( k ) = Q 0 ( 0 ) + u 10 ( k - 1 )
v 10 ( k ) = Q 0 ( 0 ) + u 00 ( k - 1 )
而本次迭代中对应基础矩阵第一列的接收码字对数似然比:
Q 0 ( k ) = Q 0 ( 0 ) + u 00 ( k ) + u 10 ( k )
图7示出了对应基础矩阵第一列的变量节点处理阵列的结构,该处理机由一些加法器组成,所有的加法运算都是大小为z个软比特的向量加。对应基础矩阵的第2到第4列的变量节点处理阵列结构和运算均类似,它们一起构成了本应用实例译码器的变量节点处理阵列。
从寻址关系上,从图4可以看出,每个变量节点计算单元是从对应基础矩阵列中非-1元素对应的校验节点到变量节点信息向量存储单元中的存储块中读数据的。图中虽然没有示出变量节点计算单元中的计算子单元,但从变量节点的更新公式可以看出,每个计算子单元是从基础矩阵相应列中除该子单元对应元素外其它非-1元素在变量节点到校验节点信息向量存储单元中所对应的存储块中读数据的,如计算子单元VNU00是从存储块CNOD_MEM_10中取数据。
从图5可以看出,每个变量节点计算单元是输出到对应基础矩阵列中非-1元素对应的变量节点到校验节点信息向量存储单元中的存储块。图中虽然没有示出变量节点计算单元中的计算子单元,但从变量节点的更新公式可以看出,两者是通过各自对应的基础矩阵中非-1元素而关联并一一对应连接的,即计算子单元VNUij输出到存储块VNOD_MEMij
图7A和图7B中示出了用加法器和减法器实现上述变量节点更新公式的结构,一个用于完成绝对值运算,另一个用于完成符号运算。
码字对数似然比计算单元也分为nb个子计算单元,分别对应于基础矩阵中的一列,每一个子计算单元除接收初始对数似然比向量存储单元中对应于该节点所在列的存储块中的初始对数似然比向量外,还要获取校验节点到变量节点信息向量存储单元中该列所有节点对应的存储块的校验节点到变量节点信息向量。
本发明译码装置的第二实施例
本实施例的译码装置的硬件结构对应于简化形式的对数域向量译码方法,如图9所示。本实施例与第一实施例要实现的功能是一致的。但由于对应于不同的算法,所以在结构上有所差异。
为了说明两者的异同,可以把图3中的结构单元按另一种方式进行划分,即划分为由接收码字向量存储单元、向量初始值计算单元、初始对数似然比向量存储单元组成的初始值运算模块;由双向网络A和B、变量节点到校验节点信息向量存储单元、校验节点到变量节点信息向量存储单元、校验节点处理阵列、变量节点处理阵列、码字对数似然比计算单元组成的迭代运算模块;由原始基础矩阵存储单元、基础矩阵修正单元、修正后的基础矩阵存储单元组成的基础矩阵处理模块;由码字对数似然比向量存储单元、硬判决检测单元和硬判决码字向量存储单元组成的硬判决检测模块;以及控制模块。
对比图3和图9,可以看出,本实施例初始值运算模块、基础矩阵处理模块和硬判决检测模块所包括的单元、单元的功能以及单元间的连接关系与第一实施例都是相同的,唯一的差别是向量初始值计算单元不必计算变量节点到校验节点信息向量的初始值。对于这3个模块的各个单元,在此不再赘述。
如图9所示,本实施例译码装置的迭代运算模块包括节点更新处理阵列(MPUs)、由读网络和写网络组成的双向网络、校验节点到变量节点信息向量存储单元和码字对数似然比计算单元。其中:
校验节点到变量节点信息向量存储单元包括L个存储块,L为基础矩阵中非-1元素的数量,每个存储块用于存储节点更新处理阵列输出的要传递的L个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素。
节点更新处理阵列由Mb个分别对应于基础矩阵Mb行的计算单元组成。每个计算单元又包括分别对应于基础矩阵该行中所有非-1元素的若干计算子单元,共有L个计算子单元,各个子单元通过读网络从校验节点到变量节点信息向量存储单元相应的存储块中读出校验节点到变量节点信息向量,从码字对数似然比向量存储单元相应的存储块中读出码字对数似然比向量,从修正后的基础矩阵存储单元中读出相应元素值,完成一次节点更新运算(见式(4)),然后通过写网络将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块。
双向缓冲网络中,读网络提供节点更新处理阵列从校验节点到变量节点信息向量存储单元、码字对数似然比向量存储单元及修正后的基础矩阵存储单元中读取相应向量的读地址,写网络提供节点更新阵列将校验节点到变量节点信息向量写入校验节点到变量节点信息向量存储单元时的写地址。更具体地,对于节点更新处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在码字对数似然比向量存储单元中对应的存储块与其相连,还将该元素在修正后的基础矩阵存储单元中对应的存储块与其相连。
码字对数似然比计算单元的功能与第一实施例相同,不再重复。
本实施例的控制模块用于控制、协调各个单元完成的译码流程也包括初始化的步骤、迭代译码的步骤和译码检测和输出的步骤,其中初始化的步骤和译码检测和输出的步骤与第一实施例基本相同,差别仅在于不需计算出变量节点到校验节点信息向量的初始值,对该两个步骤不再重复。
迭代译码步骤由以下操作实现:译码器的节点更新处理阵列在每一个时钟周期,从校验节点到变量节点信息向量存储单元中读出校验节点到变量节点信息向量,从码字对数似然比向量存储单元中读出码字对数似然比向量,从修正后的基础矩阵存储单元中读出基础矩阵的元素值,送到相应的子计算单元完成节点更新运算,然后将得到的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元相应的存储块中。
同时,在每一个时钟周期,从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元的每一个存储块中读出一个初始对数似然比向量和校验节点到变量节点信息向量,送到相应的码字对数似然比计算子单元,计算出此次迭代的码字对数似然比向量,再写入到码字对数似然比向量存储单元相应的存储块。
综上所述,本发明对于不同的码长可以采用相同的上述译码器结构。不同之处只是因为修正的原因使保存hij b的寄存器的内容不同,因为扩展因子不同的原因使每个节点的循环移位寄存器中有效向量长度不同。在运算方面,向量间运算和译码流程都完全相同;只是节点内向量运算的向量长度不同,循环移位的位数不同。因此,本发明提供的译码器基于向量译码算法,对于同一码率不同码长的LDPC码,具有相同的硬件拓扑结构,对于普通BP算法而言,所需要的存储空间达到最小,硬件实现复杂度低,适合并行实现。本发明的译码器,适合在大规模集成电路或者FPGA(硬件实现)中使用,也可以在DSP(软件实现)中使用。
因此,本发明提供的算法和译码器不需要存储和访问很大的奇偶校验矩阵,只需要基础矩阵,所以实现复杂度大大降低;由于不需要存储奇偶校验矩阵,所以不需要存储稀疏矩阵元素的访问索引,所以显著地减少存储容量的需要;由于只需要基础矩阵就可以完成运算,所以省略了矩阵扩展这个步骤;由于译码器的拓扑只依赖于基础矩阵,所以特定码率不同码长的LDPC码可以采用统一的译码器。由于算法是基于向量运算的,所以非常适合于并行运算。总之,本算法和译码器是基于单位阵以及循环移位矩阵LDPC码的最佳方案,尤其对于变码长情况意义较大。编码器也可以用类似的向量运算完成,此时这种基于单位阵以及循环移位矩阵的LDPC码就可以变成为向量LDPC码。
本发明在以上实施例的基础上,还可以有各种变换,例如,在另一实施例中,当译码器只对应于一种码长时,可以不需要基础矩阵修正单元,直接从基础矩阵存储单元中读出元素值,或者将相应数据直接配置到相应的节点运算阵列即可。

Claims (15)

1、一种基于单位阵及其循环移位阵的LDPC码向量译码方法,采用校验矩阵 H = { ( P ij ) z × z } m b × n b ,唯一对应于基础矩阵 H b = { h ij b } m b × n b , i∈[0,1,…,mb-1],j∈[0,1,…,nb-1],迭代次数为k,扩展因子为z,Iset(j)是Hb中第j列非-1元素行索引集合,Jset(i)是Hb中第i行非-1元素列索引集合,该方法包括以下步骤:
(a)将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组,令接收序列向量数组 R = { R j } 1 × n b 中的元素Rj=[yjz,yjz+1,…,y(j+1)z-1];
(b)令k=0,根据接收序列向量数组R得到可信度向量数组的初始值,并得到传递信息向量矩阵的初始值,所述向量均为1×z软比特的向量;
(c)利用k-1次迭代得到的所述传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij进行更新运算,得到第k次迭代后的传递信息向量矩阵和可信度向量数组,所有运算中的最小运算单位都是1×z软比特的向量:
(d)对所述可信度向量数组进行硬判决得到硬判决向量数组 S = { S j } 1 × n b , Sj为1×z行向量,然后根据 T i = Σ j = 1 n b P ij - 1 S j T 计算得到奇偶校验向量数组 T = { T i } m b × 1 ;
(e)判断向量数组T是否为全0,若是,则译码成功,输出硬判决码字,结束;否则,令k=k+1,再判断k是否少于最大迭代次数,如果是,返回步骤(c),否则,译码失败,结束。
2、如权利要求1所述的向量译码方法,其特征在于,该方法为简化形式的对数域向量译码方法,其中:
所述步骤(b)中,利用接收数据向量数组R完成校验节点到变量节点信息向量矩阵 U = { u ij } m b × n b 和码字对数似然比向量数组 Q = { Q j } 1 × n b 中所有非零向量初始值的运算,该步通过以下循环运算完成:外循环j=0,…,nb-1,内循环i∈Iset(j),算式为 u ij ( 0 ) = 0 , Q j ( 0 ) = 2 R j / σ 2 , σ2为噪声方差;
所述步骤(c)中进一步分为以下步骤:
(c1)根据上一次迭代的校验节点到变量节点信息向量矩阵U(k-1)和码字对数似然比向量数组Q(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(k)中所有的非零向量,实现节点更新,该步通过以下循环运算完成:外循环i=0,…,mb-1,内循环j∈Jseet(i),算式为:
u ij ( k ) = P ij 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P ij - 1 Q j ( k - 1 ) - P ij ′ - 1 u ij ′ ( k - 1 ) 2 )
(c2)根据最初对数似然比向量数据Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的码字对数似然比向量数组Q(k)中所有的非零向量,即对任一个j=0,…,nb-1,计算 Q j ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) u i ′ j ( k ) ;
且所述步骤(d)中,是对码字对数似然比向量数组Q(k)进行硬判决。
3、如权利要求1所述的向量译码方法,其特征在于,该方法为一般形式的对数域向量译码方法,其中:
所述步骤(b)中,利用接收数据向量数组R完成对变量节点到校验节点信息向量矩阵 V = { v ij } m b × n b 和码字对数似然比向量数组 Q = { Q j } 1 × n b 中所有非零向量初始值的计算,该步通过以下循环运算完成:外循环j=0,…,nb-1,内循环i∈Iset(j),算式为: v ij ( 0 ) = Q j ( 0 ) = 2 R j / σ 2 , σ2为噪声方差;
所述步骤(c)中进一步分为以下步骤:
(c1)根据上一次迭代的V(k-1)和R(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(k)中所有的非零向量,实现校验节点更新,该步通过以下循环运算完成:外循环i=0,…,mb-1,内循环j∈Jset(i),算式为:
u ij ( k ) = P ij 2 tanh - 1 Π j ′ ∈ Jset ( i ) \ j tanh ( P ij ′ - 1 v ij ′ ( k - 1 ) 2 )
(c2)根据最初对数似然比向量数组Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的变量节点到校验节点信息向量矩阵V(k)中所有的非零向量,实现变量节点更新,通过以下循环运算完成:外循环j=0,…,nb-1,内循环i=0,…,mb-1,算式为:
v ij ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) \ i u i ′ j ( k )
同时计算本次迭代的码字对数似然比数组Q(k)中所有的非零向量,即对任一个j=0,…,nb-1,计算: Q j ( k ) = Q j ( 0 ) + Σ i ′ ∈ Iset ( j ) u i ′ j ( k ) ;
且所述步骤(d)中,是对码字对数似然比向量数组Q(k)进行硬判决。
4、如权利要求1所述的向量译码方法,其特征在于,该方法为概率域向量译码方法,其中:
所述步骤(b)中,是利用接收数据数组R,计算变量节点到校验节点信息向量矩阵 Q 0 = { Q ij 0 } m b × n b , Q 1 = { Q ij 1 } m b × n b 和向量矩阵 ΔQ = { ΔQ ij } m b × n b , 以及码字概率向量数组 F 0 = { F j 0 } 1 × n b F 1 = { F j 1 } 1 × n b 中所有非零向量的初始值,通过以下循环运算完成:外循环j=0,…,nb-1,内循环i∈Iset(j),算式为:
{ Q ij 0 = F j 0 = 1 1 + e - 2 R j / σ 2 , Q ij 1 = F j 1 = 1 - Q ij 0 , ΔQ ij = Q ij 0 - Q ij 1 }
所述步骤(c)中进一步分为以下步骤:
(c1)根据上一次迭代的ΔQ(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k)中所有的非零向量,实现校验节点更新,通过以下循环运算完成:外循环i=0,…,mb-1,内循环j∈Jset(i),算式为:
ΔR ij ( k ) = P ij Π j ′ ∈ Jset ( i ) \ j P ij ′ - 1 ΔQ ij ′ ( k - 1 ) , R ij 0 ( k ) = ( 1 + ΔR ij ( k ) ) / 2 , R ij 1 ( k ) = 1 - r mn 0 = ( 1 - ΔR ij ( k ) ) / 2
(c2)根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算本次迭代的变量节点到校验节点信息向量矩阵Q0(k),Q1(k)中所有的非零向量,实现变量节点更新,通过以下循环运算完成:外循环j=0,…,nb-1,内循环i∈Iset(j),算式为:
{ Q ij 0 ( k ) = α ij F j 0 Π i ′ ∈ Iset ( j ) \ i R i ′ j 0 ( k ) , Q ij 1 ( k ) = β ij F j 1 Π i ′ ∈ Iset ( j ) \ i R i ′ j 1 ( k ) }
同时,根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算变量节点n取值为0和1的伪后验概率向量数组F0(k),F1(k)中所有的非零向量,即对任一j=0,…,nb-1,计算:
{ F j 0 ( k ) = α j F j 0 Π i ′ ∈ Iset ( j ) R i ′ j 0 ( k ) , F j 1 ( k ) = β j F j 1 Π i ′ ∈ Iset ( j ) R i ′ j 1 ( k ) }
其中αmn和βmn为归一化系数使得 q mn 0 + q mn 1 = 1 ;
且所述步骤(d)中,是根据F0(k),F1(k)的大小硬判决得到向量数组S。
5、如权利要求1所述的向量译码方法,其特征在于,所述对向量的运算包括向量四则运算、向量循环移位和向量的函数运算,向量的四则运算通过两个向量相对应元素的四则运算来完成,向量与Pij′和Pij′ -1相乘通过对向量元素的循环右移或左移hij b位来完成,向量的函数运算可以通过对向量中每个元素求函数来完成。
6、如权利要求2或3所述的向量译码方法,其特征在于,所述校验节点到变量节点信息向量和变量节点到校验节点信息向量用定点表示,每个向量包括z个软比特,每个软比特定点为6个二进制比特。
7、如权利要求2、3或4所述的向量译码方法,其特征在于,所述迭代解码的校验节点更新处理,是采用上述标准化的置信度传播算法或者该算法的以下近似算法中的一种来实现的:BP-Based算法、APP-based算法、均匀的最大置信度传播算法,最小和算法以及最小和查找表算法。
8、一种基于单位阵及其循环移位阵的LDPC码向量译码装置,其特征在于,包括基础矩阵处理模块、初始值运算模块、迭代运算模块、硬判决检测模块和控制模块,其中:
所述基础矩阵处理模块包括基础矩阵存储单元,该单元具有L个存储块,每个存储块用于存储基础矩阵 H b = { h ij b } m b × n b 中的一个非-1元素值 h ij b ≠ - 1 , L为基础矩阵中非-1元素的个数,i∈[0,1,…,mb-1],i∈[0,1,…,nb-1];
所述初始值运算模块用于接收输入数据Y=[y0,y1,…,yN-1]并缓存在nb个存储块中,然后计算出可信度向量数组的初始值,存储在nb个存储块中,并得到传递信息向量矩阵的初始值;
所述迭代运算模块用于利用上一次迭代得到的传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij进行更新运算,得到本次迭代后的传递信息向量矩阵和可信度向量数组;
所述硬判决检测模块用于对迭代得到的可信度向量数组进行硬判决得到硬判决向量数组 S = { S j } 1 × n b , 存储在nb个存储块中,然后根据 T i = Σ j = 1 n b P ij - 1 S j T 计算,并判决得到的奇偶校验向量数组 T = { T i } m b × 1 是否为全0;
所述控制模块用于控制其它模块完成初始值运算、迭代运算和硬判决检测,在数组T为全0时,输出硬判决码字,译码成功,结束;T不为全0时,再判断迭代次数是否小于最大迭代次数,如是,继续下一次迭代,如达到最大迭代次数,则译码失败,结束;
并且,所有存储块均为可以存储z个软比特的存储块,各数组和矩阵元素间的运算均为大小为z个软比特的向量运算,各模块的计算单元从相应的存储块直接读取和写入数据,每次传输的信息数据总是z个软比特的整数倍,其中,z为扩展因子。
9、如权利要求8所述的向量译码装置,其特征在于,所述存储块的大小为zmax个软比特,其中,zmax是特定码率最大码长的低密度奇偶校验码对应的扩展因子。
10、如权利要求8所述的向量译码装置,其特征在于,所述各个计算单元与相应的存储块之间是用硬件建立固定的连接,实现对数据的寻址。
11、如权利要求8所述的向量译码装置,其特征在于,所述基础矩阵处理模块中的基础矩阵存储单元中存储的是原始基础矩阵的元素值;或者,所述基础矩阵处理模块中的基础矩阵存储单元是指修正后的基础矩阵存储单元,该处理模块还包括原始基础矩阵存储单元和基础矩阵修正单元,且所述迭代运算模块的计算单元还与该修正后的基础矩阵存储单元的相应存储块中相连以读取数据。
12、如权利要求8所述的向量译码装置,其特征在于,所述初始值运算模块包括:
接收码字向量存储单元,用于缓存接收的码字序列Y=[y0,y1,…,yN-1],以接收序列向量数组 R = { R j } 1 × n b 的形式存储在nb个存储块中,每个存储块存储一个向量Rj=[yjz,yjz+1,…,y(j+1)z-1];
向量初始值计算单元,用于读出接收序列向量Rj,计算出初始对数似然比向量数组 Q = { Q j } 1 × n b , Q j ( 0 ) = 2 R j / σ 2 , σ2为噪声方差;
初始对数似然比向量存储单元,包括nb个存储块,分别存储所述初始对数似然比向量数组的nb个向量Qj
13、如权利要求12所述的向量译码装置,其特征在于,所述迭代运算模块包括校验节点到变量节点信息向量存储单元、节点更新处理阵列、由读网络和写网络组成的双向缓冲网络和码字对数似然比计算单元,其中:
所述校验节点到变量节点信息向量存储单元包括L个存储块,每个存储块用于存储节点更新处理阵列输出的要传递的L个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素;
所述节点更新处理阵列由Mb个分别对应于基础矩阵Mb行的计算单元组成,每个计算单元又包括分别对应于基础矩阵该行中所有非-1元素的多个计算子单元,共有L个,各计算子单元通过读网络从校验节点到变量节点信息向量存储单元和码字对数似然比向量存储单元的相应存储块中读取数据,完成一次节点更新运算,然后通过写网络将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块;
所述双向缓冲网络中,对于所述节点更新处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在码字对数似然比向量存储单元中对应的存储块与其相连;
所述码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。
14、如权利要求12所述的向量译码装置,其特征在于,所述迭代运算模块包括校验节点到变量节点信息向量存储单元,变量节点到校验节点信息向量存储单元,变量节点处理阵列,校验节点处理阵列,包括读网络A、写网络A、读网络B和写网络B的双向缓冲网络,以及码字对数似然比计算单元,其中:
所述校验节点到变量节点信息向量存储单元,包括L个存储块,每个存储块用于存储一个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素;
所述变量节点到校验节点信息向量存储单元,包括L个存储块,每个存储块用于存储一个变量节点到校验节点信息向量,每个变量节点到校验节点信息向量对应于基础矩阵中的一个非-1元素;
所述变量节点处理阵列由Nb个变量节点计算单元组成,每个计算单元包括多个对应于基础矩阵中该变量节点对应列中所有非-1元素的计算子单元,各计算子单元通过读网络B从校验节点到变量节点信息向量存储单元和初始对数似然比向量存储单元的相应存储块中读取数据,完成变量节点更新运算,然后通过写网络B将此次更新后的变量节点到校验节点信息向量写入到变量节点到校验节点信息向量存储单元相应的存储块;
所述校验节点处理阵列由Mb个校验节点计算单元组成,每个计算单元包括多个对应于基础矩阵中该校验节点对应行中所有非-1元素的计算子单元组成,各计算个子单元通过读网络A从变量节点到校验节点信息向量存储单元相应的存储块中读取数据,并结合基础矩阵中对应于该计算子单元的元素的值,完成校验节点更新运算,然后通过写网络A将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块;
对于校验节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,所述读网络A将该元素所在基础矩阵的行中除该元素外所有其它非-1元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连,所述写网络A将该元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连;
对于变量节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,所述读网络B将该元素所在基础矩阵的列中除该元素外所有其它非-1元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,还将该元素所在基础矩阵的列在初始对数似然比向量存储单元对应的存储块与其相连,写网络B将该元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连;
所述码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。
15、如权利要求13和14所述的向量译码装置,其特征在于,所述硬判决检测模块包括:
码字对数似然比向量存储单元,包括nb个存储块,用于存储每次迭代得到的nb个码字对数似然比向量Qj (k)
硬判决检测单元,用于对译码产生的码字对数似然比向量数组Q进行硬判决得到nb个的硬判决码字向量,并判断奇偶校验向量数组T是否为全0;
硬判决码字向量存储单元,包括nb个存储块,用于存储硬判决得到的nb个硬判决码字向量。
CN200510114589A 2005-10-26 2005-10-26 基于单位阵及其循环移位阵的ldpc码向量译码装置和方法 Expired - Fee Related CN100589357C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200510114589A CN100589357C (zh) 2005-10-26 2005-10-26 基于单位阵及其循环移位阵的ldpc码向量译码装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200510114589A CN100589357C (zh) 2005-10-26 2005-10-26 基于单位阵及其循环移位阵的ldpc码向量译码装置和方法

Publications (2)

Publication Number Publication Date
CN1956368A true CN1956368A (zh) 2007-05-02
CN100589357C CN100589357C (zh) 2010-02-10

Family

ID=38063490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200510114589A Expired - Fee Related CN100589357C (zh) 2005-10-26 2005-10-26 基于单位阵及其循环移位阵的ldpc码向量译码装置和方法

Country Status (1)

Country Link
CN (1) CN100589357C (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009086671A1 (zh) * 2007-12-29 2009-07-16 Alcatel Shanghai Bell Co., Ltd. Ldpc码的编码方法和编码设备
CN101345601B (zh) * 2007-07-13 2011-04-27 华为技术有限公司 一种译码方法和译码器
CN101350695B (zh) * 2007-07-20 2012-11-21 电子科技大学 低密度奇偶校验码译码方法及系统
CN106201781A (zh) * 2016-07-11 2016-12-07 华侨大学 一种基于右边正则纠删码的云数据存储方法
CN102904581B (zh) * 2011-07-26 2017-03-01 无锡物联网产业研究院 Ldpc码校验矩阵的构造方法及装置
CN107733440A (zh) * 2016-08-12 2018-02-23 中兴通讯股份有限公司 多边类型结构化ldpc处理方法及装置
CN108270510A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 基于ldpc码的通信方法和通信设备
CN105227191B (zh) * 2015-10-08 2018-08-31 西安电子科技大学 基于修正最小和算法的准循环ldpc码译码方法
WO2020001212A1 (zh) * 2018-06-29 2020-01-02 中兴通讯股份有限公司 译码器、译码方法和计算机存储介质
CN111106837A (zh) * 2018-10-26 2020-05-05 电信科学技术研究院有限公司 一种ldpc译码方法、译码装置及存储介质
CN111431543A (zh) * 2020-05-13 2020-07-17 东南大学 可变码长可变码率qc-ldpc译码方法及装置
CN111492586A (zh) * 2017-12-15 2020-08-04 华为技术有限公司 Ldpc码的原模图扩展方法
WO2020199424A1 (zh) * 2019-04-01 2020-10-08 苏州中晟宏芯信息科技有限公司 一种最优h矩阵生成方法及装置

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101345601B (zh) * 2007-07-13 2011-04-27 华为技术有限公司 一种译码方法和译码器
CN101350695B (zh) * 2007-07-20 2012-11-21 电子科技大学 低密度奇偶校验码译码方法及系统
WO2009086671A1 (zh) * 2007-12-29 2009-07-16 Alcatel Shanghai Bell Co., Ltd. Ldpc码的编码方法和编码设备
CN102904581B (zh) * 2011-07-26 2017-03-01 无锡物联网产业研究院 Ldpc码校验矩阵的构造方法及装置
CN105227191B (zh) * 2015-10-08 2018-08-31 西安电子科技大学 基于修正最小和算法的准循环ldpc码译码方法
CN106201781A (zh) * 2016-07-11 2016-12-07 华侨大学 一种基于右边正则纠删码的云数据存储方法
CN106201781B (zh) * 2016-07-11 2019-02-26 华侨大学 一种基于右边正则纠删码的云数据存储方法
CN107733440A (zh) * 2016-08-12 2018-02-23 中兴通讯股份有限公司 多边类型结构化ldpc处理方法及装置
CN107733440B (zh) * 2016-08-12 2022-12-02 中兴通讯股份有限公司 多边类型结构化ldpc处理方法及装置
CN108270510B (zh) * 2016-12-30 2020-12-15 华为技术有限公司 基于ldpc码的通信方法和通信设备
CN108270510A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 基于ldpc码的通信方法和通信设备
CN111492586A (zh) * 2017-12-15 2020-08-04 华为技术有限公司 Ldpc码的原模图扩展方法
US11309917B2 (en) 2017-12-15 2022-04-19 Huawei Technologies Co., Ltd. Base parity-check matrices for LDPC codes that have subsets of orthogonal rows
CN110661593A (zh) * 2018-06-29 2020-01-07 中兴通讯股份有限公司 一种译码器、方法和计算机存储介质
WO2020001212A1 (zh) * 2018-06-29 2020-01-02 中兴通讯股份有限公司 译码器、译码方法和计算机存储介质
CN111106837A (zh) * 2018-10-26 2020-05-05 电信科学技术研究院有限公司 一种ldpc译码方法、译码装置及存储介质
CN111106837B (zh) * 2018-10-26 2023-09-08 大唐移动通信设备有限公司 一种ldpc译码方法、译码装置及存储介质
WO2020199424A1 (zh) * 2019-04-01 2020-10-08 苏州中晟宏芯信息科技有限公司 一种最优h矩阵生成方法及装置
CN111431543A (zh) * 2020-05-13 2020-07-17 东南大学 可变码长可变码率qc-ldpc译码方法及装置
CN111431543B (zh) * 2020-05-13 2023-08-01 东南大学 可变码长可变码率qc-ldpc译码方法及装置

Also Published As

Publication number Publication date
CN100589357C (zh) 2010-02-10

Similar Documents

Publication Publication Date Title
CN1956368A (zh) 基于单位阵及其循环移位阵的ldpc码向量译码装置和方法
CN1855731A (zh) 解码装置及解码方法
CN1713530A (zh) 解码低密度奇偶校验(ldpc)码字的ldpc解码器
CN1866751A (zh) 一种低密度奇偶校验码的构造方法及装置
CN1213541C (zh) 交错器,编码、译码设备和方法,置换方法及其系统
CN1206657C (zh) 快闪存储器
CN1294540C (zh) 编解码坐标内插符关键字数据和关键值数据的装置
CN101047390A (zh) 解码设备、控制方法及程序
CN1235343C (zh) 交织方法、交织装置以及存储交织模式产生程序的媒体
CN1108665C (zh) 包括结合多维调制的乘积码的数字传输系统与方法
CN1201494C (zh) 最大后验概率译码方法和装置
CN1960190A (zh) Ldpc码校验矩阵构造方法及利用该方法的编码解码装置
CN1698272A (zh) 解码方法、解码装置、程序、记录/再现装置与方法、和再现装置与方法
CN101069356A (zh) 解码装置以及通信装置
CN1830149A (zh) 用于对低密度奇偶校验码编码的方法
CN1639985A (zh) Ldpc码用检查矩阵生成方法及检查矩阵生成装置
CN1208920C (zh) 数据传输方法,数据传输系统,发射装置和接收装置
CN1925615A (zh) 用于地面数字电视广播的纠错编码方法
CN1838542A (zh) 解码设备和方法以及程序
CN1753308A (zh) 编码装置和解码装置
CN1701516A (zh) 校验矩阵生成方法和校验矩阵生成装置
CN1199177C (zh) 可抑制电路规模能进行高速纠错的纠错装置和解码装置
CN1196268C (zh) 并行涡轮编码器实施方案
CN101036300A (zh) 校验矩阵生成装置和通信装置
CN1991801A (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: 20100210

Termination date: 20151026

EXPY Termination of patent right or utility model