专利名称:解码装置及解码方法
技术领域:
本发明涉及一种解码装置及解码方法,尤其涉及一种对实施了利用低密度奇偶校验码(LDPC码)的编码后的代码进行解码的解码装置及解码方法。
背景技术:
近年来,例如移动体通信、深宇宙通信这样的通信领域及地面波或卫星数字广播这样的广播领域的研究显著发展,与之相伴,以纠错编码和解码的有效化为目的,与代码理论相关的研究也盛行起来。
作为代码性能的理论极限,已知由所谓的香农(C.E.Shannon)的通信路径编码定理给出的香农极限。进行与代码理论相关的研究的目的在于开发所表现的性能接近该香农极限的代码。近年来,作为表现出接近香农极限的性能的编码方法,例如开发了并行级联卷积码(PCCC(Parallel ConcatenatedConvolutional Codes))、串行级联卷积码(SCCC(SeriallyConcatenated Convolutional Codes))这样的所谓涡轮码(TurboCoding)的方法。另外,在开发这些涡轮码的同时,作为过去已知的编码方法的低密度奇偶校验码(Low Density Parity CheckCodcs)(以下称为LDPC码)正在受到关注。
LDPC码是R.G.Gallager在“R.G.Gallager,‘Low DensityParity Check Codes’,Cambridge,MassachusettsM.I.T.Press,1963”中最初提出的,之后在“D.J.C.MacKay,‘Good errorcorrccting codes based on very sparse matrices’,Submitted toIEEE Trans.Inf.Theory,IT-45,pp.399-431,1999”及“M.G.Luby,M.Mitzenmacher,M.A.Shokrollahi and D.A.Spielman,‘Analysis of low density codes and improved designs usingirrcgular graphs’,in Proceedings of ACM Symposium on Theoryof Computing,pp.249-258,1998”等中再度被关注。
通过近年的研究,发现LDPC码与涡轮码同样地可以随着使码长变长而得到接近香农极限的性能。另外,由于LDPC码具有最小距离与码长成比例的性质,因此作为其特征,块错误率特性良好,而且还具有几乎不发生在涡轮码等解码特性中观察到的所谓误码平台(error floor)现象的优点。
下面具体说明这种LDPC码。此外,LDPC码是线性代码,不一定需要是2元的,但是,在此作为2元代码进行说明。
LDPC码最大的特征是定义该LDPC码的校验矩阵(paritychcck matrix)是稀疏的。在此,稀疏的矩阵构成为矩阵的成分为“1”的个数非常少,如果用H表示稀疏的校验矩阵,则作为这种校验矩阵H,例如如图1所示,存在各列的汉明(hamming)权重(“1”的个数)(weight)为“3”、并且各行的汉明权重为“6”的部分等。
这样通过各行及各列的汉明权重为固定的校验矩阵H定义的LDPC码称为规则LDPC码。另一方面,通过各行及各列的汉明权重为不固定的校验矩阵H定义的LDPC码称为不规则LDPC码。
通过这种LDPC码进行的编码是如下实现的根据校验矩阵H来生成生成矩阵G,通过对2元的信息消息乘以该生成矩阵G来生成码字。具体地说,利用LDPC码进行编码的编码装置首先在与校验矩阵H的转置矩阵HT之间,算出使公式GHT=0成立的生成矩阵G。在此,在生成矩阵G是k×n矩阵(k行n列的矩阵)的情况下,校验矩阵H是n-k行n列的矩阵。
此外,例如,在n位的码字c是与接着k位的信息消息u而配置了n-k位的奇偶校验位的位串一致的系统码的情况下,在n-k行n列的校验矩阵H中,当将n位的码字c中的与k位的信息消息u对应的n-k行k列的部分称为信息部、并且将与n-k位的奇偶校验位对应的n-k行n-k列的部分称为奇偶校验部时,如果奇偶校验部为下三角矩阵或上三角矩阵,就可以使用校验矩阵H来编码为信息消息u的LDPC码。
即,例如如图2所示,校验矩阵H由信息部和下三角矩阵的奇偶校验部构成,如果奇偶校验部的下三角部分的元素全部是1,则码字c的奇偶校验位的第1个位成为对信息消息u中的与在校验矩阵H的信息部的第1行中成为1的元素对应的位进行EXOR(异或逻辑)运算而得到的值。
另外,码字c的奇偶校验位的第2个位成为将信息消息u中的与在校验矩阵H的信息部的第2行中成为1的元素对应的位、和奇偶校验位的第1个位进行EXOR运算而得到的值。
进而,码字c的奇偶校验位的第3个位成为将信息消息u中的与在校验矩阵H的信息部的第3行中成为1的元素对应的位、和奇偶校验位的第1及第2个位进行EXOR运算而得到的值。
下面同样地,码字c的奇偶校验位的第i个位成为将信息消息u中的与在校验矩阵H的信息部的第i行中成为1的元素对应的位、和奇偶校验位的第1至第i-1个位进行EXOR运算而得到的值。
如上所述,求得n-k位的奇偶校验位,并接着k位的信息消息u而进行配置,由此可以得到n位的码字c。
另一方面,LDPC码的解码可以通过消息传递算法来进行,该消息传递算法是Gallager提出的称为概率解码(ProbabilisticDccoding)的算法,是由变量节点(variable node(也称为消息节点(message node)))和校验节点(check node)构成的、利用所谓的Tanner图(Tanner graph)上的置信传播(belief propagation)的算法。在此,下面也适当地将变量节点和校验节点简称为节点。
但是,在概率解码中,在各节点间交换的消息是实数值,因此,为了以解析方式求解,需要追踪取得连续的值的消息的概率分布本身,需要进行非常困难的解析。因此,Gallager作为LDPC码的解码算法,提出了算法A或算法B。
LDPC码的解码一般按照图3所示的步骤进行。此外,在此设接收值为U0(u0i),设从校验节点输出的消息为uj,设从变量节点输出的消息为vi。另外,在此消息是利用对数似然比(loglikclihood ratio)来表现值的“0”相似性的实数值。进而,将接收值U0的“0”相似性的对数似然比表示为接收数据u0i。
首先,在LDPC码的解码中,如图3所示,在步骤S11中,接收接收值U0(u0i),将消息uj初始化为“0”,并且将作为重复处理的计数器的取整数的变量k初始化为“0”,进入步骤S12。在步骤S12中,根据接收值U0(u0i),通过进行式(1)示出的运算求得消息vi,进而根据该消息vi,通过进行式(2)所示的运算求得消息uj。
[式1] [式2] 在此,式(1)和式(2)中的dv和dc分别是表示校验矩阵H的纵方向(行方向)和横方向(列方向)的“1”的个数的、可以任意选择的参数,例如,在(3,6)码时是dv=3、dc=6。
此外,在式(1)或者(2)的运算中不将分别从想输出消息的边(edge)输入的消息作为和或者积运算的参数使用,因此,和或者积运算的范围为1至dv-1或者1至dc-1。另外,实际上预先制作对于两个输入v1、v2的由一个输出定义的式(3)所示的函数R(v1,v2)的表,通过如式(4)所示连续地(递归地)使用它来进行式(2)所示的运算。
[式3] x=2tanh-1{tanh(v1/2)tanh(v2/2)}=R(v1,v2) ...(3) [式4] 在步骤S12中,进而变量k只增加“1”,并进入步骤S13。在步骤S13中,判断变量k是否大于等于规定的重复解码次数N。在步骤S13中,当判断为变量k小于N时,返回到步骤S12,下面重复同样的处理。
另外,在步骤S13中,在判断为变量k大于等于N的情况下,进入步骤S14,通过进行式(5)所示的运算求出作为最终输出的解码结果的消息v并输出,结束LDPC码的解码处理。
[式5] 在此,与式(1)的运算不同,使用来自连接在变量节点上的所有边的输入消息来进行式(5)的运算。
例如在(3,6)码的情况下,如图4所示,这样的LDPC码的解码在各节点之间进行消息的接收和发送。此外,在图4中的由“=”表示的节点(变量节点)上进行式(1)所示的运算,在由“+”表示的节点(校验节点)上进行式(2)所示的运算。特别是在算法A中,将消息二元化,在由“+”表示的节点上进行dc-1个输入消息的异或运算,在由“=”表示的节点上,在dv-1个输入消息相对于接收值R全部是不同的位值的情况下,将码进行反转并输出。
另外,另一方面,近年来正在进行与LDPC码的解码的实现方法相关的研究。在说明实现方法之前,首先示意性地说明LDPC码的解码。
图5是(3,6)LDPC码(编码率1/2、码长12)的校验矩阵H(paritychcck matrix)的示例。如图6所示,能够使用Tanner图示出LDPC码的校验矩阵H。在此,在图6中由“+”表示的是校验节点,由“=”表示的是变量节点。校验节点和变量节点分别与校验矩阵H的行和列对应。校验节点和变量节点之间的连接线是边(edge),相当于校验矩阵H的“1”。即,当校验矩阵H的第j行第例的成分是1时,在图6中从上开始第i个变量节点(“=”的节点)、和从上开始第j个校验节点(“+”的节点)通过边被连接。边表示与变量节点对应的码位具有与校验节点对应的限制条件。此外,图6成为图5的校验矩阵H的Tanner图。
作为LDPC码的解码方法的和乘积算法(Sum ProductAlgorithm),重复进行变量节点的运算和校验节点的运算。
如图7所示,在变量节点上进行式(1)的运算。即,在图7中,使用来自连接在变量节点上的剩余边的消息u1及u2、和接收信息u0i,计算与想要计算的边对应的消息vi。与其他边对应的消息也同样计算。
在说明校验节点的运算之前,使用式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)的关系,将式(2)改写成如式(6)所示。但是,当x≥0时sign(x)是1、当x<0时sign(x)是-1。
[式6] 而且,在x≥0时,如果定义为φ(x)=ln(tanh(x/2)),则φ-1(x)=2tanh-1(e-x),因此可以将式(6)写成式(7)那样。
[式7] 如图8所示,在校验节点上进行式(7)的运算。即,在图8中,使用来自连接在校验节点上的剩余边的消息v1、v2、v3、v4、v5,计算与想要计算的边对应的消息uj。与其他边对应的消息也同样计算。
此外,函数φ(x)也可以表示为φ(x)=ln((ex+1)/(ex-1)),在x>0时φ(x)=φ-1(x)。在硬件中实现函数φ(x)及φ-1(x)时,有时使用LUT(Look Up Table查询表)来实现,两者成为相同的LUT。
在硬件中实现和乘积算法的情况下,需要用适度的电路规模和动作频率来重复进行式(1)所示的变量节点运算及式(7)所示的校验节点运算。
作为安装解码装置的示例,首先说明单纯地通过逐一依次进行各节点的运算来进行解码的情况(full serial decoding完全串行解码)的实现方法。
此外,在此,例如对图9的以36(行)×108(列)的校验矩阵H表现的代码(编码率2/3、码长108)进行解码。图9的校验矩阵H的1的数量是323,因此,在其Tanner图中,边的数量是323个。在此,在图9的校验矩阵H中,用“.”表现0。
图10示出了进行LDPC码的1次解码的解码装置的结构例。
在图10的解码装置中,按其动作的每1个时钟(clock)计算与1个边对应的消息。
即,图10的解码装置由以下部分构成2个边用存储器100及102;1个校验节点计算器101;1个变量节点计算器103;1个接收用存储器104;以及1个控制部105。
在图10的解码装置中,从边用存储器100或102逐一读出消息数据,使用该消息数据,计算与期望的边对应的消息数据。然后,将该通过计算求得的消息数据逐一保存到后级的边用存储器102或100。在进行重复解码时,通过按纵列连接多个进行该1次解码的图10的解码装置、或者重复使用图10的解码装置,从而实现重复解码。此外,在此例如连接有多个图10的解码装置。
边用存储器100按后级的校验节点计算器101所读取的顺序保存从前级的解码装置(未图示)的变量节点计算器103提供的消息D100。然后,在校验节点计算的阶段,边用存储器100按照所保存的顺序将消息D100作为消息D101提供给校验节点计算器101。
校验节点计算器101根据从控制部105提供的控制信号D106,使用从边用存储器100提供的消息D101,按照式(7)进行运算,将通过该运算求得的消息D102提供给后级的边用存储器102。
边用存储器102按后级的变量节点计算器103所读取的顺序保存从前级的校验节点计算器101提供的消息D102。然后,在变量节点计算的阶段,边用存储器102按照所保存的顺序将消息D102作为消息D103提供给变量节点计算器103。
进而,对于变量节点计算器103,从控制部105提供控制信号D107,并且从接收用存储器104提供接收数据D104。变量节点计算器103根据控制信号D107,使用从边用存储器100提供的消息D103和从接收用存储器100提供的接收数据D104,按照式(1)进行运算,将其运算的结果得到的消息D105提供给未图示的后级的解码装置的边用存储器100。
在接收用存储器104中保存被LDPC编码的接收数据(LDPC码)。控制部105将控制变量节点运算的控制信号D106和控制校验节点运算的控制信号D107分别提供给校验节点计算器101和变量节点计算器103。当所有的边的消息都被保存到边用存储器100中时,控制部105将控制信号D106提供给校验节点计算器101,当所有的边的消息都被保存到边用存储器102中时,控制部105将控制信号D107提供给变量节点计算器103。
图11示出了逐一进行校验节点运算的图10的校验节点计算器101的结构例。
此外,在图11中,假设各消息包括符号位总计被量化为6位(bit),表示校验节点计算器101。另外,在图11中,进行用图9的校验矩阵H表示的LDPC码的校验节点运算。进而,对图11的校验节点计算器101提供时钟ck,将该时钟ck被提供给需要的模块。然后,各模块与时钟ck同步地进行处理。
图11的校验节点计算器101根据从控制部105提供的例如1位的控制信号D106,使用从边用存储器100逐一读取的消息D101,按照式(7)进行运算。
即,在校验节点计算器101中,逐一读入来自与校验矩阵H的各列对应的变量节点的6位的消息D101(消息vi),将作为其下位比特的绝对值D122(|vi|)提供给LUT 121,将作为其最上位比特的符号位D121分别提供给EXOR电路129和FIFO(First In FirstOut先进先出)存储器133。另外,从控制部105将控制信号D106提供给校验节点计算器101,将该控制信号D106提供给选择器124和选择器131。
LUT 121读出对绝对值D122(|vi|)进行了式(7)中的φ(|vi|)的运算而得到的5位的运算结果D123(φ(|vi|)),并提供给加法器122和FIFO存储器127。
加法器122将运算结果D123(φ(|vi|))和保存在寄存器123中的9位的值D124进行相加,由此累加运算结果D123,将其结果得到的9位的累加值重新保存到寄存器123中。此外,对来自校验矩阵H的一行中的全部边的消息D101的绝对值D122(|vi|)的运算结果D123进行了累加时,寄存器123被复位。
在逐一读入校验矩阵H的整个1行的消息D101、并将对1行的运算结果D123进行累加得到的累加值保存到寄存器123中的情况下,从控制部105提供的控制信号D106从0变化为1。例如,在行的权重(row weight)为“9”的情况下,控制信号D106在从第1到第8时钟为止为“0”,在第9时钟为“1”。
在控制信号D106为“1”的情况下,选择器124选择保存在寄存器123中的值、即选择对根据来自校验矩阵H的整个1行的所有边的消息D101(消息vi)求得的φ(|vi|)进行累加得到的9位的值D124(从i=1到i=dc为止的∑φ(|vi|)),作为值D125输出到寄存器125并保存。寄存器125将所保存的值D125作为9位的值D126而提供给选择器124和加法器126。在控制信号D106为“0”的情况下,选择器124选择从寄存器125提供的值D126并输出到寄存器125进行重新保存。即,寄存器125将上次累加得到的φ(|vi|)提供给选择器124和加法器126,直到根据来自校验矩阵H的整个1行的所有边的消息D101(消息vi)求得的φ(|vi|)被累加为止。
另一方面,在直到从寄存器125输出新的值D126(从i=1到i=dc为止的∑φ(|vi|))为止的期间,FIFO存储器127延迟LUT 121所输出的运算结果D123(φ(|vi|)),并作为5位的值D127而提供给减法器126。减法器126从寄存器125提供的值D126中减去从FIFO存储器127提供的值D127,将其减法运算结果作为5位的减法运算值D128而提供给LUT 128。即,减法器126从根据来自校验矩阵H的整个1行的所有边的消息D101(消息vi)求得的(φ(|vi|))的累加值中减去根据来自想要求出的边的消息D101(消息vi)求得的φ(|vi|),将其减法运算值(从i=1到i=dc-1为止的∑φ(|vi|))作为减法运算值D128而提供给LUT 128。
此外,由于减法器126从寄存器125提供的9位的值D126中减去从FIFO存储器127提供的5位的值D127,因此,相对于其减法运算结果最大可能成为9位的情况,输出5位的减法运算值D128。因此,在从由寄存器125提供的9位的值D126中减去由FIFO存储器127提供的5位的值D127而得到的减法运算结果无法用5位表示的情况下,也就是说,在减法运算结果超过可以用5位表示的最大值(31(2进制数是11111))的情况下,减法器126将减法运算结果截取为可以用5位表示的最大值,并输出5位的减法运算值D128。
LUT 128输出对减法运算值D128(从i=1到i=dc-1为止的∑φ(|vi|))进行了式(7)中的φ-1(∑φ(|vi|))的运算而得到的5位的运算结果D129(φ-1(∑φ(|vi|)))。
与以上的处理并行地,EXOR电路129对保存在寄存器130中的1位的值D131与符号位D121进行异或运算,由此进行符号位彼此的乘法运算,将1位的乘法运算结果D130重新保存到寄存器130。此外,在对来自校验矩阵H的整个1行的所有边的消息D101的符号位D121进行了乘法运算的情况下,寄存器130被复位。
在对来自校验矩阵H的整个1行的所有边的消息D101的符号位D121进行乘法运算而得到的乘法运算结果D130(从i=1到i=dc为止的∏sign(vi))被保存到寄存器130中的情况下,从控制部105提供的控制信号D106从“0”变化为“1”。
在控制信号D106为“1”的情况下,选择器131选择保存在寄存器130中的值、即选择对来自校验矩阵H的整个1行的所有边的消息D101的符号位D121进行乘法运算而得到的值D131(从i=1到i=dc为止的∏sign(vi)),作为1位的值D132而输出到寄存器132并保存。寄存器132将所保存的值D132作为1位的值D133而提供给选择器131和EXOR电路134。在控制信号D106为“0”的情况下,选择器131选择从寄存器132提供的值D133,输出到寄存器132中并重新保存。即,寄存器132将上次保存的值提供给选择器131和EXOR电路134,直到来自校验矩阵H的整个1行的所有边的消息D101(消息vi)的符号位D121进行了乘法运算为止。
另一方面,在从寄存器132向EXOR电路134提供新的值D133(从i=1到i=dc为止的∏sign(vi))为止的期间内,FIFO存储器133延迟符号位D121,作为1位的值D134而提供给EXOR电路134。EXOR电路134通过对从寄存器132提供的值D133与从FIFO存储器133提供的值D134进行异或运算,将值D133除以值D134,将1位的除法运算结果作为除法运算值D135而输出。即,EXOR电路134将来自校验矩阵H的整个1行的所有边的消息D101的符号位D121(sign(|vi|))的乘法运算值除以来自要求解的边的消息D101的符号位D121(sign(|vi|)),将其除法运算值(从i=1到i=dc-1为止的∏sign(|vi|))作为除法运算值D135而输出。
在校验节点计算器101中,将从LUT 128输出的5位的运算结果D129设为下位5位、并且将从EXOR电路134输出的1位的除法运算值D135设为最上位位而成的合计6位,作为消息D102(消息uj)而输出。
按照上述方式,在校验节点计算器101中,进行式(7)的运算,求得消息uj。
另外,图9的校验矩阵H的行的权重的最大为9,即提供给校验节点的消息的最大数量是9,因此校验节点计算器101具备延迟9个消息(φ(|vi|))的FIFO存储器127和FIFO存储器133。在对行的权重小于9的行的消息进行计算时,FIFO存储器127和FIFO存储器133中的延迟量减少为该行的权重的值。
图12示出了逐一进行变量节点运算的图10的变量节点计算器103的结构例。
此外,在图12中假设各消息包括符号位而被量化为合计6位(bit),表示变量节点计算器103。另外,在图12中,进行以图9的校验矩阵H表示的LDPC码的变量节点运算。进而,对图12的变量节点计算器103提供时钟ck,将时钟ck提供给需要的模块。然后,各模块与时钟ck同步地进行处理。
图12的变量节点计算器103根据从控制部105提供的例如1位的控制信号D107,使用从边用存储器102逐一读入的消息D103和从接收用存储器104读入的接收数据D104,按照式(1)进行运算。
即,在变量节点计算器103中,逐一读入来自与校验矩阵H的各行对应的校验节点的6位的消息D103(消息uj),将该消息D103提供给加法器151和FIFO存储器155。另外,在可变计算器103中,从接收用存储器104逐一读入6位的接收数据D104,并提供给加法器156。进而,从控制部105对变量节点计算器103提供控制信号D107,该控制信号D107被提供给选择器153。
加法器151对消息D103(消息uj)和保存在寄存器152中的9位的值D151进行加法运算,由此将消息D103累加,将其结果得到的9位的累加值重新保存到寄存器152中。此外,在对来自校验矩阵H的整个1列的所有边的消息D103进行了累加的情况下,寄存器152被复位。
在逐一读入校验矩阵H的整个1列的消息D103、并将对1列的消息D103进行累加而得到的值保存到寄存器152中的情况下,从控制部105提供的控制信号D107从“0”变化为“1”。例如,在列的权重为“5”的情况下,控制信号D107在从第1到第4时钟为止成为“0”,在第5时钟成为“1”。
在控制信号D107为“1”的情况下,选择器153选择保存在寄存器152中的值、即选择对来自校验矩阵H的整个1列的所有边的消息D103(消息uj)进行累加而得到的9位的值D151(j=1到dv为止的∑uj),输出到寄存器154并保存。寄存器154将所保存的值D151作为9位的值D152而提供给选择器153和加减法器156。在控制信号D107为“0”的情况下,选择器153选择从寄存器154提供的值D152,输出到寄存器154并重新保存。即,寄存器154将上次累加得到的值提供给选择器153和加减法器156,直到来自校验矩阵H的整个1列的所有边的消息D103(消息uj)进行了累加为止。
另一方面,FIFO存储器155在从寄存器154输出新的值D152(j=1到dv为止的∑uj)为止的期间内,延迟来自校验节点的消息D103,并作为6位的值D153而提供给加减法器156。加减法器156从由寄存器154提供的值D152中减去由FIFO存储器155提供的值D153。即,加减法器156从来自校验矩阵H的整个1列的所有边的消息D103(消息uj)的累加值中减去来自所要求解的边的消息uj,求得其减法运算值(j=1到dv-1为止的∑uj)。进而,在加减法器156中,在该减法运算值(从j=1到dv-1为止的∑uj)中加上从接收用存储器104提供的接收数据D104,将其结果得到的6位的值作为消息D105(消息vi)而输出。
按照上述方式,在变量节点计算器103中进行式(1)的运算,求得消息vi。
此外,图9的校验矩阵H的列的权重最大是5,即对变量节点提供的消息的最大数量是5,因此变量节点计算器103具备延迟5个消息(uj)的FIFO存储器155。在对列的权重小于5的列的消息进行计算时,FIFO存储器155中的延迟量减少为该列的权重的值。
另外,加减法器156从由寄存器154提供的9位的值D152中减去由FIFO存储器155提供的6位的值D153,并且加上从接收用存储器104提供的6位的接收数据D104,因此其运算结果有时小于用6位的消息D105所能表示的最小值、或者超过最大值。加减法器156在运算结果是小于用6位的消息D105可以表示的最小值的情况下,截取为该最小值,在运算结果超过用6位的消息D105可以表示的最大值的情况下,截取为该最大值。
在图10的解码装置中,根据校验矩阵H的权重,从控制部105提供控制信号。并且,依据图10的解码装置,只要边用存储器100和102以及校验节点计算器101和变量节点计算器103的FIFO存储器127、133、155的容量足够,就可以通过仅改变控制信号来对各种校验矩阵H的LDPC码进行解码。
此外,虽然未图示,但是在图10的解码装置中,在解码的最后级,代替式(1)的变量节点运算而进行式(5)的运算,将其运算结果作为最终的解码结果而输出。
在重复使用图10的解码装置对LDPC码进行解码的情况下,交替地进行校验节点运算和变量节点运算。即,在图10的解码装置中,使用校验节点计算器101的校验节点运算的结果,由变量节点计算器103进行变量节点运算,使用变量节点计算器103的变量节点运算的结果,通过校验节点计算器101来进行校验节点运算。
因此,使用具备323个边的图9的校验矩阵H而进行的1次解码需要323×2=646时钟(clock)。例如,为了进行50次重复解码,需要将作为码长的108个代码(接收数据)作为1帧,在接收该1帧的期间工作646×50=32300时钟,需要进行接收频率的约300(32300/108)倍的高速动作。如果接收频率是几十MHz,则需要GHz以上的速度的动作。
另外,在连接例如50台图10的解码装置来进行LDPC码的解码的情况下,可以同时进行多个变量节点运算和校验节点运算,使得在进行第1帧(frame)的变量节点运算的期间进行第2帧的校验节点运算,并进行第3帧的变量节点运算。在这种情况下,在接收108个代码的期间,只要计算323个边就可以,因此解码装置只要以接收频率的约3(323/108)倍的频率进行动作即可,完全可以实现。
但是,在这种情况下,电路规模单纯地成为图10的解码装置的50倍。
下面说明通过同时进行所有节点的运算来进行解码的情况(full parallel decoding完全并行解码)的解码装置的实现方法。
该实现方法例如记载在非专利文献1中。
图13示出了对以图9的校验矩阵H表现的代码(编码率2/3、码长108)进行解码的解码装置的一例的结构。
在图13的解码装置中,从边用存储器202或206中同时读取与所具有的323个边对应的全部消息数据,并使用该消息数据来运算与323个边对应的新的消息数据。并且,将该运算结果所求出的新的消息数据全部同时保存到后级的边用存储器206或202中。然后,通过重复使用图13的解码装置来实现重复解码。
在图13中,解码装置由以下部分构成1个接收用存储器205、2个边替换装置200和203、2个边用存储器202和206、36个校验节点计算器2011至20136、108个变量节点计算器2041至204108。下面详细说明各部分。
边用存储器206同时保存来自前级的变量节点计算器2041至204108的全部消息D2061至D206108,在下一时刻(下一时钟的定时)将消息D2061至D206108作为消息D2071至D207108而读出,作为消息D200(D2001至D200108)而提供给下一级的边替换装置200。边替换装置200按照图9的校验矩阵H来重新排列(替换)从边用存储器206提供的消息D2001至D200108的顺序,作为消息D2011至D20136提供给校验节点计算器D2011至D20136。
校验节点计算器2011至20136使用从边替换装置200提供的消息D2011至D20136,按照式(7)进行运算,将其运算结果所得到的消息D2021至D20236提供给边用存储器202。
边用存储器202同时保存从前级的校验节点计算器2011至20136提供的全部消息D2021至D20236,在下一个时刻将该全部消息D2021至D20236作为消息D2031至D20336而提供给后一级的边替换装置203。
边替换装置203按照图9的校验矩阵H来重新排列从边用存储器202提供的消息D2031至D20336的顺序,作为消息D2041至D204108提供给变量节点计算器2041至204108。
变量节点计算器2041至204108使用从边替换装置203提供的消息D2041至D204108以及从接收用存储器205提供的接收数据D2051至D205108,按照式(1)进行运算,将其运算结果得到的D2061至D206108提供给后一级的边用存储器206。
图14示出了同时进行校验节点运算的图13的校验节点计算器201m(m=1,2,...,36)的结构例。
在图14的校验节点计算器201m中,与图11的校验节点计算器101同样地,进行式(7)的校验节点运算,但是,同时对所有边进行该校验节点运算。
即,在图14的校验节点计算器201m中,同时读取从边替换装置200提供的来自与图9的校验矩阵H的各列对应的变量节点的消息D2211至D2219(vi),将作为各自的下位5位的绝对值D2211至D2219(|vi|)分别提供给LUT 2211至2219。另外,将作为消息D2211至D2219(vi)的最上位比特的1位的符号位D2231至D2239分别提供给EXOR电路2261至2269,并且提供给EXOR电路225。
LUT 2211至2219分别读取对绝对值D2221至D2229(|vi|)进行式(7)中的φ(|vi|)的运算而得到的5位的运算结果D2241至D2249(|vi|),分别提供给减法器D2231至D2239。另外,LUT 2211至2219将运算结果D2241至D2249(φ(|vi|))提供给加法器222。
加法器222对运算结果D2241至D2249(φ(|vi|))的值的总和(1行的运算结果的总和)进行运算,将9位的运算结果D225(i=1到9为止的∑φ(|vi|))提供给减法器2231至2239。减法器2231至2239从运算结果D225中分别减去运算结果D2241至D2249(φ(|vi|)),将5位的减法运算值D2271至D2279提供给LUT 2241至2249。即,减法器2231至2239从根据来自全部边的消息vi而求得的φ(|vi|)的累加值中减去根据来自所要求解的边的消息vi而求得的φ(|vi|),将其减法运算值D2271至D2279(i=1到8为止的∑φ(|vi|))分别提供给LUT 2241至2249。LUT 2241至2249读出对减法运算值D2271至D2279进行式(7)中的φ-1(∑φ(|vi|))的运算而得到的5位的运算结果D2281至D2289并输出。
另一方面,EXOR电路225通过对全部符号位D2231至D2239进行异或运算,从而进行符号位D2231至D2239的乘法运算,将1位的乘法运算值D226(1行的符号位的乘法运算值(i=1到9为止的∏sign(vi)))分别提供给EXOR电路2261至2269。EXOR电路2261至2269通过对乘法运算值D226和符号位D2231至D2239分别进行异或运算,求得将乘法运算值D226分别除以符号位D2231至D2239而得到的1位的除法运算值D2291至D2299(i=1到8为止的∏sign(vi))并输出。
在校验节点计算器201m中,将从LUT 2241至2249输出的5位的运算结果D2281至D2289分别设为下位5位、并且将从EXOR电路2261至2269输出的除法运算值2291至2299分别设为最上位位比特而成的合计6位,作为校验节点运算的结果而得到的消息D2301至D2309而输出。
如以上那样,在校验节点计算器201m中,进行式(7)的运算,求得消息uj。
此外,在图14中,假设各消息包括符号位而被量化为合计6位,示出了校验节点计算器201m。另外,图14的电路相当于1个校验节点。关于在此作为处理对象的图9的校验矩阵H,由于存在其行数的36行的校验节点,因此图13的解码装置具备36个图14所示的校验节点计算器201m。
在此,在图14的校验节点计算器201m中,可以同时计算9个消息。并且,在此作为处理对象的图9的校验矩阵H的行的权重在第1行是8,在第2至第36行是9,即,提供给校验节点的消息数为8的情形有1个,提供给校验节点的消息数为9的情形有29个,因此校验节点计算器2011成为与图14的电路同样的可以同时计算8个消息的电路结构,剩余的校验节点计算器2012至20136是与图14的电路相同的结构。
图15示出了同时进行变量节点运算的图13的变量节点计算器204p(p=1,2,...,108)的结构例。
在图15的变量节点计算器204p中,与图12的变量节点计算器103同样地进行式(1)的变量节点运算,但是同时对全部边进行该变量节点运算。
即,在图15的变量节点计算器204p中,同时读入从边替换装置203提供的来自与校验矩阵H的各行对应的校验节点的6位的全部消息D2511至D2515(消息uj),分别提供给加法器2521至2525,并且提供给加法器251。另外,从接收用存储器205向变量节点计算器204p提供接收数据D271,该接收数据D271被提供给加减法器2521至2525。
加法器251对全部消息D2511至D2515(消息uj)进行累加,将9位的累加值D252(1列的消息的总和值(j=1到5为止的∑uj))提供给加减法器2521至2525。加减法器2521至2525从加法运算值D252中分别减去消息D2511至D2515(消息uj)。即,加减法器2521至2525从来自所有边的消息uj的累加值D252中分别减去来自所要求解的边的消息D2511至D2515(消息uj),求得其减法运算值(j=1到4为止的∑uj)。
进而,加减法器2521至2525在减法运算值(j=1到4为止的∑uj)上加上接收数据D271(u0i),将6位的加法运算值D2531至D2535作为变量节点运算的结果而输出。
如以上那样,在变量节点计算器204p中,进行式(1)的运算,求解消息vi。
此外,在图15中,假设各消息包括符号位而被量化为合计6位,示出了变量节点计算器204p。另外,图15的电路相当于1个变量节点。在此关于作为处理对象的图9的校验矩阵H,因为存在其列数的108列的变量节点,因此图13的解码装置具备108个如图15所示的电路。
在此,在图15的变量节点计算器204p中,可以同时计算5个消息。并且,在此作为处理对象的图9的校验矩阵H的权重为5、3、2、1的列分别有18列、54列、35列、1列,因此变量节点计算器2041至204108之中的18个成为与图15的电路相同的结构,剩余的54个、35个、1个成为与图15的电路同样的可以分别同时计算3、2、1个消息的电路结构。
此外,虽然未图示,但是在图13的解码装置中也与图10中的情况同样地,在解码的最后级代替式(1)的变量节点运算而进行式(5)的运算,将其运算结果作为最终的解码结果而输出。
根据图13的解码装置,可以利用1个时钟同时计算与具有323个的边对应的全部消息。
在重复使用图13的解码装置进行解码的情况下,交替地进行校验节点运算和变量节点运算,可以利用2个时钟进行1次的解码。因此,例如为了进行50次的解码,只要在接收将码长为108个的代码作为1帧的接收数据的期间进行2×50=100时钟动作即可,可以是与接收频率大致相同的动作频率。通常,LDPC码的码长大到几千至几万,因此如果使用图13的解码装置,则可以极大地增加解码次数,可以期待纠错性能的提高。
但是,图13的解码装置并行进行与Tanner图的全部边对应的消息的运算,因此电路规模与码长成比例地变大。另外,将图13的解码装置构成为进行具有某个码长、某个编码率、某个校验矩阵H的LDPC码的解码的装置的情况下,很难在该解码装置中进行具有其它码长、其它编码率、其它校验矩阵H的LDPC码的解码。即,图13的解码装置很难像图10的解码装置那样仅改变控制信号就能对应各种代码的解码,代码依赖性高。
例如在非专利文献2中阐述了除了图10及图13的解码装置以外每次不是1个也不是全部、而是同时进行4个消息的计算的实现方法,在这种情况下存在下面的问题通常不易避免对存储器的不同地址进行同时读取或同时写入,很难进行存储器存取控制。
为了解决该问题,提出了一种不是随机代码,而是对实现部分并行的解码器亲和性高的编码及解码装置(例如,参考非专利文献3和4)。但是,在非专利文献3中记载的解码装置的实现方法仅对应特定的代码,很难在1个解码器中对各种码长、编码率的代码进行解码。
另外,如图16所示,存在一种如下的解码装置只要是具备如下校验矩阵H的LDPC码,即使是码长、编码率不同的代码也可以进行解码,所述校验矩阵H可以用6×6的单位矩阵、该单位矩阵的1之中一个以上变成0的矩阵(下面适当称为准单位矩阵)、对单位矩阵或准单位矩阵进行循环移位(cyclic shift)得到的矩阵(下面适当称为移位矩阵)、单位矩阵、准单位矩阵或移位矩阵之中的2个以上(多个)之和(下面适当称为和矩阵)、6×6的0矩阵的组合来表示,或者可以通过行、列的置换而用这些矩阵的组合来表示(例如,参考专利文献1)。
此外,图16的校验矩阵H将图9所示的校验矩阵H以6×6的矩阵为单位空出间隔来进行表示。另外,下面将构成图16的校验矩阵H的6×6的单位矩阵、准单位矩阵、移位矩阵、和矩阵、0矩阵适当称为结构矩阵。
参照图17至图22,说明对用图16的校验矩阵H表现的LDPC码进行解码的解码装置。
图17是表示对用图16的校验矩阵H表现的LDPC码进行解码的解码装置400的结构的一例的框图。
解码装置400由以下部分构成解码中间结果保存用存储器410、循环移位电路411、由6个计算器4121至4126构成的计算部412、解码中间结果保存用存储器413、循环移位电路414、由6个计算器4151至4156构成的计算部415、接收用存储器416、以及控制部417。
在此,使用公式说明在计算器412k(k=1,2,...,6)中进行的运算和在计算器415k中进行的运算。
具体地说,计算部412进行根据上述式(7)和下面表示的式(8)的第1运算,将作为该第1运算的结果的解码中间结果uj提供给解码中间结果保存用存储器410并保存。计算部415进行根据上述式(5)的第2运算,将作为该第2运算的结果的解码中间结果v提供给解码中间结果保存用存储器410并保存。
[式8] Vi=V-Udv...(8) 此外,式(8)的udv表示来自要求出校验矩阵H的i列的消息的边的校验节点运算的中间结果(在此是校验节点运算结果本身)。即,udv是与要求解的边对应的解码中间结果。
即,根据上述式(5)的第2运算的结果所得到的解码中间结果v,是将接收值u0i、和来自与校验矩阵H的i列的各行的1对应的所有边的校验节点运算的解码中间结果uj相加而得到的结果,因此,在上述式(7)中使用的值vi,是从根据式(5)进行的第2运算的结果得到的解码中间结果v减去校验矩阵H的i列的来自与中各行的1对应的边的校验节点运算的解码中间结果uj之中、来自要求解消息的边的校验节点运算的解码中间结果udv之后的值。也就是说,要求出在式(7)中使用的值vi的式(1)的运算是上述式(5)和式(8)的组合运算。
因此,在解码装置400中,交替地进行由计算部412进行的根据式(7)及式(8)的第1运算、和由计算部415进行的根据式(5)的第2运算,计算部415通过将最后的第2运算的结果作为解码结果进行输出,由此可以进行LDPC码的反复解码。
此外,在此将根据式(7)和式(8)的第1运算结果记载为解码中间结果uj,但是该解码中间结果uj与式(7)的校验节点运算结果uj相等。
另外,通过第2运算求得的式(5)的v,是对式(1)的变量节点运算结果vi相加来自要求解消息的边的校验节点运算结果uj而得到的结果,因此对校验矩阵H的1列(1个变量节点)仅求解1个。
在解码装置400中,计算部412使用作为由计算部415进行的第2运算结果的与校验矩阵H的列对应的解码中间结果v,来进行第1运算,将其运算结果得到的校验矩阵H的i列的、与各行的1对应的边的消息(各校验节点对各边输出的消息)的来自边的校验节点运算的解码中间结果uj保存到解码中间结果保存用存储器413。因此,解码中间结果保存用存储器413的容量与保存校验节点运算的结果的情况同样地,成为将校验矩阵H的1的数量(全部边数量)与量化位数相乘而得到的值。
另一方面,计算部415使用作为由计算部412进行的第1运算结果的校验矩阵H的i列的、与各行的“1”对应的解码中间结果uj和接收值u0i,进行第2运算,将该运算的结果得到的与i列对应的解码中间结果v保存到解码中间结果保存用存储器410。因此,解码中间结果保存用存储器410所需要的容量,是将比校验矩阵H的“1”的数量少的校验矩阵H的列数、即LCPC码的码长与解码中间结果v的量化位数相乘而得到的值。
其结果,与保存变量节点运算的结果的情况相比较,可以减少解码中间结果保存用存储器410的存储器容量,由此可以减小解码装置400的电路规模。
下面详细说明图17的解码装置400的各部分的动作。
从计算部415对解码中间结果保存用存储器410提供由计算部415进行的第2运算的结果的与校验矩阵H的6个列对应的6个解码中间结果D415,解码中间结果保存用存储器410从第1地址按顺序保存(存储)从计算部415提供的6个解码中间结果D415。
即,在解码中间结果保存用存储器410的第1地址中,保存与校验矩阵H的列对应的解码中间结果之中从第1列到第6列的解码中间结果v。然后,同样地,在第2地址中保存从第7列到第12列的解码中间结果v,在第3地址中保存从第13列到第18列的解码中间结果。以后,同样地,从第103列到第108列的解码中间结果v按每6个而保存到从第4地址到第18地址中,总计108个解码中间结果v被保存到解码中间结果保存用存储器410中。因此,解码中间结果保存用存储器410的字(word)数是将图16的校验矩阵H的列数(LDPC码的码长)的108除以同时读写的解码中间结果的数量6而得到的18。
另外,解码中间结果保存用存储器410从已经保存的解码中间结果D415中同时读取6个与后级的计算部412要求解的解码中间结果uj对应的校验矩阵H的行中成为“1”的解码中间结果v,作为解码中间结果D410而提供给循环移位电路411。
此外,解码中间结果保存用存储器410例如由可以同时读写6个解码中间结果的单端口RAM构成。另外,将通过计算部415的第2运算进行运算得到的与列对应的解码中间结果D414保存到解码中间结果保存用存储器410中,因此,保存在解码中间结果保存用存储器410中的数据量、即解码中间结果保存用存储器410所需要的存储容量是解码中间结果D414的量化位数与校验矩阵H的列数(LDPC码的码长)的乘法运算值。
从解码中间结果保存用存储器410对循环移位电路411提供6个解码中间结果D410,并且从控制部417对循环移位电路411提供控制信号D619,该控制信号D619表示与该解码中间结果D410对应的校验矩阵H的1在校验矩阵H中对原来的单位矩阵等是进行几个循环移位的信息(矩阵(Matrix)数据)。循环移位电路611根据控制信号D619,进行重新排列6个解码结果D410的循环移位,将其结果作为解码中间结果D411而提供给计算部412。
计算部412由6个计算器4121至4126构成。循环移位电路411对计算部412提供由计算部415进行的第2运算的结果得到的6个解码中间结果D411(v),并且解码中间结果保存用存储器413对计算部412提供上次由计算器4121至4126进行的第1运算的结果得到的6个解码中间结果D413(uj),该6个解码中间结果D411和6个解码中间结果D413分别被提供给计算器4121至4126。另外,控制部417对计算部412提供控制信号D419,该控制信号D419被提供给计算器4121至4126。另外,控制信号D419是在6个计算器4121至4126中共用的信号。
计算器4121至4126分别使用解码中间结果D411和解码中间结果D413,按照式(7)和式(8)进行第1运算,求得解码中间结果D412(vi)。计算部412将由计算器4121至4126进行的运算结果得到的与校验矩阵H的6个1对应的6个解码中间结果D412提供给解码中间结果保存用存储器413。
解码中间结果保存用存储器413例如由可以同时读写6个解码中间结果的2个单端口RAM构成。从计算部412对解码中间结果保存用存储器413提供6个解码中间结果D412,并且从控制部417向解码中间结果保存用存储器413提供控制解码中间结果413的读写的控制信号D420。
解码中间结果保存用存储器413根据控制信号D420,集中从计算部412提供的6个解码中间结果D412并保存,同时读取已经保存的6个解码中间结果D412,作为解码中间结果D413而提供给计算部412和循环移位电路414。即,解码中间结果保存用存储器413同时进行提供给计算部412和循环移位电路414的解码中间结果D413的读取和从计算部412提供的解码中间结果D412的写入。
此外,在解码中间结果保存用存储器413中保存通过计算部412的第1运算而进行运算得到的校验矩阵H的i列的、来自与各行的1对应的边的第1运算的解码中间结果D412,因此,保存在解码中间结果保存用存储器413中的数据量、即解码中间结果保存用存储器413所需的存储容量是解码中间结果D412的量化位数与校验矩阵H的1的数量的乘法运算值。
从解码中间结果保存用存储器413向循环移位电路414提供6个解码中间结果D413(解码中间结果uj),并且从控制部417向循环移位电路414提供控制信号D421,该控制信号D421表示与该解码中间结果D413对应的校验矩阵H的1在校验矩阵H中对原来的单位矩阵等进行了几个循环移位的信息(矩阵数据)。循环移位电路414根据控制信号D421,进行对6个解码中间结果D413进行重新排列的循环移位,将其结果作为解码中间结果D414而提供给计算部415。
计算部415由6个计算器4151至4156构成。从循环移位电路414向计算部415提供6个解码中间结果D414,该解码中间结果D414被分别提供给计算器4151至4156。另外,从接收用存储器417向计算部415提供6个接收数据D417(LDPC码),该接收数据D417被分别提供给计算器4151至4156。并且,从控制部417向计算部417提供控制信号D422,该控制信号D422被提供给计算器4151至4156。此外,控制信号D422是在6个计算器4171至4176中共用的信号。
计算器4151至4156分别使用解码中间结果D414和接收数据D417,按照式(5)分别进行第2运算,求得解码中间结果D415。计算部415将计算器4151至4156的第2运算的结果得到的6个解码中间结果D415(v)提供给解码中间结果保存用存储器410。另外,计算部415在当前进行的运算是最后的第2运算的情况下,将该运算的结果得到的6个解码中间结果D415作为最终的解码结果而进行输出。
接收用存储器416保存根据通过通信路径接收到的接收值(符号位)D416计算出的符号位的0相似性的值即接收LLR(对数似然比)的数据(接收数据)D416。
即,在接收用存储器416的第1地址中保存与校验矩阵H的列对应的接收数据D416之中的与校验矩阵H的第1列至第6列对应的接收数据D416。并且,在第2地址中保存与校验矩阵H的第7列至第12列对应的接收数据D416,在第3地址中保存与校验矩阵H的第13列至第18列对应的接收数据D416。以后,同样地,在第4地址至第18地址中,以每6个来保存与校验矩阵H的第19列至第108列对应的接收数据D416。
然后,接收用存储器616按照变量节点运算所需的顺序,以每6个来读取已经保存的接收数据D416,作为接收数据D417而提供给计算部415。
此外,接收用存储器416例如由可以同时读写6个接收数据的单端口RAM构成。另外,保存在接收用存储器416中的数据量、即接收用存储器315所需的存储容量,是LDPC码的码长与接收数据D416的量化位数的乘法运算值。而且,接收用存储器416的字(word)数是将LDPC码的码长即校验矩阵H的列数108除以同时读取的接收数据D417的数量6而得到的值18。
控制部417通过向循环移位电路411提供控制信号D418、向计算部412提供控制信号D419,从而分别进行控制。另外,控制部417通过将控制信号D420提供给解码中间结果保存用存储器413、将控制信号D421提供给循环移位电路414、将控制信号D421提供给计算部415,从而分别进行控制。
数据按照解码中间结果保存用存储器410、循环移位电路411、计算部412、解码中间结果保存用存储器413、循环移位电路414、计算部415的顺序进行一个循环,由此解码装置400可以进行1次解码。在解码装置400中,在重复规定次数来进行解码之后,将作为计算部415的第2运算结果的解码中间结果D415作为最终的解码结果而输出。
图18是表示图17的计算部412的计算器4121的结构例的框图。
此外,在图18中说明了计算器4121,计算器4122至4126也是同样的结构。
另外,在图18中,作为上次计算部412进行的第1运算的结果得到的各解码中间结果(udv)包括符号位而被量化为共计6位(bit)、计算部415进行的第2运算的结果得到的各解码中间结果(v)被量化为9位的单元,示出了计算器4121。并且,对图18的计算器4121提供时钟ck,将时钟ck提供给需要的块。然后,各块与时钟ck同步进行处理。
图18的计算器4121根据从控制部417提供的控制信号D419,使用从解码中间结果保存用存储器413逐一读取的由上次计算部412进行的第1运算的结果得到的解码中间结果D413(udv)、和从循环移位电路411逐一读取的解码中间结果D411(v),进行按照式(7)和式(8)的第1运算。
即,对计算器4121提供由循环移位电路411提供的6个9位的解码中间结果D141(v)之中的1个解码中间结果D411,并且对计算器4121提供从解码中间结果保存用存储器413提供的、上次的计算部412的运算结果的6个6位的解码中间结果D413(uj)之中的上次的计算部412的运算结果即1个解码中间结果D413,该9位的解码中间结果D141(v)和6位的解码中间结果D413(udv)被提供给减法器431。另外,从控制部417向计算器4121提供控制信号D419,该控制信号D419被提供给选择器435和选择器442。
减法器431从9位的解码中间结果D411(v)减去6位的解码中间结果D413(uj),输出该6位的减法运算值D431。即,减法器431按照式(8)进行运算,输出作为其运算结果的减法运算值D413(vi)。
在由减法器431输出的6位的减法运算值D431之中,将最上位比特的表示正负的符号位D432(sign(vi))提供给EXOR电路440,下位5位的绝对值D433(|vi|)被提供给LUT 432。
LUT 432读取对绝对值D433(|vi|)进行了式(7)中的φ(|vi|)的运算而得到的5位的运算结果D434(φ(|vi|)),提供给加法器433和FIFO存储器438。
加法器433将运算结果D434(φ(|vi|))和保存在寄存器434中的9位的值D435相加,从而累加运算结果D434,并将其结果得到的9位的累加值重新保存到寄存器434中。此外,对于根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D411求得的绝对值D433(|vi|)的运算结果被累加的情况下,寄存器434被复位。
在逐一读取校验矩阵H的整个1行的解码中间结果D411、将对1行的运算结果D434进行累加得到的累加值保存到寄存器434中的情况下,从控制部417提供的控制信号D419从0变化为1。例如,在行的权重(row weight)为“9”的情况下,控制信号D419在第1到8时钟为止为“0”,在第9时钟成为“1”。
在控制信号D419为“1”的情况下,选择器435选择保存在寄存器434中的值、即选择对根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D411(解码中间结果v)求得的φ(|vi|)进行累加得到的9位的值D435(i=1到i=dc为止的∑φ(|vi|)),作为值D436而输出到寄存器436并进行保存。寄存器436将所保存的值D436作为9位的值D437而提供给选择器435和加法器437。在控制信号D419为“0”的情况下,选择器435选择从寄存器436提供的值D437,并输出到寄存器436进行重新保存。即,寄存器436将上次累加得到的φ(|vi|)提供给选择器435和加法器437,直到根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D411(解码中间结果v)求得的φ(|vi|)被累加为止。
另一方面,在直到从寄存器436输出新的值D437(i=1到i=dc为止的∑φ(|vi|))为止的期间,FIFO存储器438延迟LUT 432所输出的运算结果D434(φ(|vi|)),并作为5位的值D438而提供给减法器437。减法器437从由寄存器436提供的值D437中减去由FIFO存储器438提供的值D438,将其减法运算结果作为5位的减法运算值D439而提供给LUT 439。即,减法器437从根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D411(解码中间结果v)求得的φ(|vi|)的累加值中减去根据与想要求解的边对应的解码中间结果即与校验矩阵H的规定的1对应的解码中间结果D411(解码中间结果v)求得的φ(|vi|),将该减法运算值(i=1到i=dc-1为止的∑φ(|vi|))作为减法运算值D439而提供给LUT 439。
LUT 439输出对减法运算值D439(i=1到i=dc-1为止的∑φ(|vi|))进行式(7)中的φ-1(∑φ(|vi|))的运算而得到的5位的运算结果D440(φ-1(∑φ(|vi|)))。
与以上的处理并行,EXOR电路440对保存在寄存器441中的1位的值D442与符号位D432进行异或运算,由此进行符号位彼此的乘法运算,将1位的乘法运算结果D441重新保存到寄存器441。此外,在对根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D441求得的符号位D432进行了乘法运算的情况下,寄存器441复位。
在对根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D441求得的符号位D432进行乘法运算得到的乘法运算结果D441(i=1到dc为止的∏sign(vi))被保存到寄存器441中的情况下,从控制部417提供的控制信号D419从“0”变化为“1”。
在控制信号D419为“1”的情况下,选择器442选择保存在寄存器441中的值、即选择对根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D411求得的符号位D432进行乘法运算而得到的值D442(i=1到i=dc为止的∏sign(vi)),作为1位的值D443而输出到寄存器443并保存。寄存器443将所保存的值D443作为1位的值D444而提供给选择器442和EXOR电路445。在控制信号D419为“0”的情况下,选择器442选择从寄存器443提供的值D444,输出到寄存器443并重新保存。即,寄存器443将上次保存的值提供给选择器442和EXOR电路445,直到对根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D411(解码中间结果v)求得的符号位D432进行乘法运算为止。
另一方面,在从寄存器443向EXOR电路445提供新的值D444(i=1到i=dc为止的∏sign(vi))为止的期间,FIFO存储器444延迟符号位D432,并作为1位的值D445而提供给EXOR电路445。EXOR电路445通过对从寄存器443提供的值D444与从FIFO存储器444提供的值D445进行异或运算,将值D444除以值D445,将1位的除法运算结果作为除法运算值D446而输出。即,EXOR电路445将根据与校验矩阵H的整个1行的所有的1对应的解码中间结果D411求得的符号位D432(sign(|vi|))的乘法运算值,除以根据与校验矩阵H的规定的1对应的解码中间结果D411求得的符号位D432(sign(|vi|)),将该除法运算值(i=1到i=dc-1为止的∏sign(|vi|))作为除法运算值D446而输出。
在计算器4121中,将从LUT 439输出的5位的运算结果D440设为下位5位、并且将从EXOR电路445输出的1位的除法运算值D446设为最上位比特而得到的共计6位作为解码中间结果D412(解码中间结果uj)而输出。
如以上那样,在计算器4121中,进行式(7)和式(8)的运算,求得解码中间结果uj。
此外,图16的校验矩阵H的行的权重最大是9、即提供给计算器4121的解码中间结果D411(v)和解码中间结果D413(udv)的最大数量是9,因此计算器4121具备使根据9个解码中间结果D411求得的9个运算结果D434(φ(|vi|))进行延迟的FIFO存储器438、以及使9个符号位D432进行延迟的FIFO存储器444。在对行的权重小于9的行的消息进行计算时,FIFO存储器438和FIFO存储器444中的延迟量减少到该行的权重的值。
图19是表示图17的计算部415的计算器4151的结构例的框图。
此外,在图19中说明了计算器4151,但是计算器4152至计算器4156也同样地构成。
另外,在图19中,假设由计算部412进行第1运算的结果得到的各解码中间结果(uj)包括符号位而被量化为共计6位,示出了计算器4151。进而,对图19的计算器4151提供时钟ck,该时钟ck被提供给需要的模块。然后,各块与时钟ck同步地进行处理。
图19的计算器4151根据从控制部417提供的控制信号D422,使用从接收用存储器416逐一读取的接收数据D417(接收值u0i)和从循环移位电路414逐一读取的解码中间结果D414(uj),进行按照式(5)的第2运算。
即,在计算器4151中,从循环移位电路414逐一读取与校验矩阵H的各行的1对应的6位的解码中间结果D414(解码中间结果uj),将该解码中间结果D414提供给加法器471。另外,在计算器4151中,从接收用存储器416逐一读取6位的接收数据D417,并提供给加法器475。进而,从控制部417向计算器4151提供控制信号D422,该控制信号D422被提供给选择器473。
加法器471通过对解码中间结果D414(解码中间结果uj)和保存在寄存器472中的9位的值D471进行加法运算,由此累加解码中间结果D414,将其结果得到的9位的累加值重新保存到寄存器472。此外,在对与校验矩阵H的整个1列的所有的1对应的解码中间结果D414进行了累加的情况下,寄存器472被复位。
在逐一读取校验矩阵H的整个1列的解码中间结果D414、并将对1列的解码中间结果D414进行累加得到的值保存到寄存器472中的情况下,从控制部417提供的控制信号D422从“0”变化为“1”。例如,在列的权重为“5”的情况下,控制信号D422在从第1至第4时钟为止成为“0”,在第5时钟成为“1”。
在控制信号D422为“1”的情况下,选择器473选择保存在寄存器472中的值、即选择对来自校验矩阵H的整个1列的所有边的解码中间结果D414(解码中间结果uj)进行累加得到的9位的值D471(j=1至dv的∑uj),并输出到寄存器474进行保存。寄存器474将所保存的值D471作为9位的值D472而提供给选择器471和加法器475。在控制信号D422为“0”的情况下,选择器473选择从寄存器474提供的值D472,并输出到寄存器474进行重新保存。即,寄存器474将上次累加得到的值提供给选择器473和加法器475,直到对来自校验矩阵H的整个1列的所有边的解码中间结果D414(解码中间结果uj)进行累加为止。
加法器475对9位的值D472和从接收用存储器416提供的6位的接收数据D417进行加法运算,将其结果得到的6位的值作为解码中间结果D415(解码中间结果v)而进行输出。
如以上那样,在计算器4151中进行式(5)的运算,求得解码中间结果v。
此外,图9的校验矩阵H的列的权重的最大是5,即提供给计算器4151的解码中间结果uj的最大数量是5,因此计算器4151最多相加5个6位的解码中间结果uj。因此,计算器4151的输出成为9位的值。
图20是表示图17的解码中间结果保存用存储器413的结构例的框图。
解码中间结果保存用存储器413由开关501和504、以及2个作为单端口RAM的解码中间结果保存用RAM 502和503构成。
在详细说明该解码中间结果保存用存储器413的各部分之前,首先说明解码中间结果保存用RAM 502和503的数据保存方法。
解码中间结果保存用RAM 502和503保存由计算部412进行第1运算的结果得到的、通过开关501提供的解码中间结果D412。
具体地说,在解码中间结果保存用RAM 502的第1地址到第9地址中,以各行都沿横方向(列方向)靠紧的形式(忽略0的形式)保存与图16的校验矩阵H的第1行到第6行为止的1对应的解码中间结果D412(D501)。
即,如果将第j行第i列表示为(j,i),则在解码中间结果保存用RAM 502的第1地址中保存与图16的校验矩阵H的结构矩阵的从(1,1)到(6,6)的6×6的单位矩阵的1对应的数据,在第2地址中保存与图16的校验矩阵H的结构矩阵的(1,25)到(6,30)的移位矩阵(将6×6的单位矩阵朝右方向循环移位5次而得到的移位矩阵)的1对应的数据。在从第3地址到第8地址中也同样与图16的校验矩阵H的结构矩阵相对应地保存数据。然后,在第9地址中保存与校验矩阵H的(1,102)到(6,108)的移位矩阵(将6×6的单位矩阵之中的第1行的1置换为0并朝左方向循环移位1次而得到的移位矩阵)的1对应的数据。在此,在图16的校验矩阵H的(1,102)到(6,108)的移位矩阵中,由于第1行没有1,因此在第9地址中不保存数据。
另外,在解码中间结果保存用RAM 502的第10地址到第18地址中保存与图16的校验矩阵H的第13行至第18行的1对应的数据。即,在第10地址中保存与将校验矩阵H的(13,7)到(18,12)的6×6的单位矩阵朝右方向循环移位5次而得到的矩阵的1对应的数据,在第11地址中保存与构成校验矩阵H的(13,13)至(18,18)的和矩阵(该和矩阵是6×6的单位矩阵与将6×6的单位矩阵朝右方向循环移位1次得到的移位矩阵的和)的移位矩阵的1对应的数据。另外,在第12地址中保存与构成校验矩阵H的(13,13)至(18,18)的和矩阵的单位矩阵的1对应的数据。下面,在第13地址至第18地址中也与校验矩阵H相对应地保存数据。
即,对于权重为2以上的结构矩阵,用权重为1的P×P的单位矩阵、作为其成分的1之中的一个以上为0的准单位矩阵、或者对单位矩阵或准单位矩阵进行循环移位得到的移位矩阵之中的多个和的形式来表现该结构矩阵时的、与其权重为1的单位矩阵、准单位矩阵或移位矩阵的1的位置对应的数据(与属于单位矩阵、准单位矩阵或移位矩阵的边对应的消息的解码中间结果)被保存到同一地址中。
同样地,在解码中间结果保存用RAM 502的第19地址至第27地址中与图16的校验矩阵H相对应地保存与第25行至第30行的1对应的数据。即,解码中间结果保存用RAM 502的字数是27。
在解码中间结果保存用RAM 503的第1地址至第9地址中,以各行都沿横方向(列方向)靠紧的形式(忽略0的形式)保存与图16的校验矩阵H的第7行至第12行的1对应的解码中间结果D412(D502)。
即,在解码中间结果保存用RAM 503的第1地址中保存与构成校验矩阵H的结构矩阵的(7,1)至(12,6)的和矩阵(和矩阵是将6×6的单位矩阵朝右方向循环移位2次得到的第1移位矩阵与朝右方向循环移位4次得到的第2移位矩阵的和)的第1移位矩阵的1对应的数据,在第2地址中保存与构成校验矩阵H的结构矩阵的(7,1)至(12,6)的和矩阵的第2移位矩阵的1对应的数据。下面,在第3地址至第9地址中也同样地与校验矩阵H的结构矩阵相对应地保存数据。
同样地,在解码中间结果保存用RAM 503的第10地址至第18地址中,与图16的校验矩阵H相对应地保存与图16的校验矩阵H的第19行至第24行的1对应的数据,在第19地址至第27地址中,与图16的校验矩阵H相对应地保存与校验矩阵H的第31行至第36行的1对应的数据。即,解码中间结果保存用RAM 503的字数是27。
如上所述,解码中间结果保存用RAM 502和503的字(word)数是27。即,字数是如下得到的值将校验矩阵H的行的权重(row weight)的9和行数的36相乘,将该乘法运算结果(校验矩阵H的1的数量)除以同时读取的解码中间结果D501的数量的6,并且除以解码中间结果保存用存储器413所具有的解码中间结果保存用RAM的个数的2。
下面,详细说明图20的解码中间结果保存用存储器413的各部分的动作。
在通过计算部412进行第1运算的情况下,从计算部412向解码中间结果保存用存储器413提供第1运算的结果得到的解码中间结果D412(uj),该解码中间结果D412被写入解码中间结果保存用RAM 502或解码中间结果保存用RAM 503中的一方的规定的地址中,同时从另一方读取上次的由计算部412进行第1运算的结果得到的解码中间结果D412(uj),输出到计算部412。另一方面,在通过计算部415进行第2运算的情况下,解码中间结果保存用存储器413不对解码中间结果保存用RAM 502或解码中间结果保存用RAM 503进行写入,而是从某一方的RAM的规定地址读取解码中间结果,并提供给循环移位电路414。
从计算部412向开关501提供6个解码中间结果D412,并且,从控制部417向开关501提供控制信号D4201,该控制信号D4201表示作为写入该解码中间结果D412的存储器而选择解码中间结果保存用RAM 502或解码中间结果保存用RAM 503。开关501根据控制信号D4201选择解码中间结果保存用RAM 502或解码中间结果保存用RAM 503,并向该所选择的一方提供6个解码中间结果D412。
从开关501向解码中间结果保存用RAM 502提供6个解码中间结果D412作为解码中间结果D501,并且从控制部417向解码中间结果保存用RAM 502提供表示地址的控制信号D4202。解码中间结果保存用RAM 502读取控制信号D4202所表示的地址中已经保存的上次的由计算部412进行第1运算的结果得到的6个解码中间结果D501,作为解码中间结果D503而提供给开关504。另外,解码中间结果保存用RAM 502将从开关501提供的6个解码中间结果D501保存(写入)到控制信号D4202所表示的地址中。
从开关501向解码中间结果保存用RAM 503提供6个解码中间结果D412作为解码中间结果D502,并且从控制部417向解码中间结果保存用RAM 503提供表示地址的控制信号D4203。解码中间结果保存用RAM 503读取控制信号D4203所表示的地址中已经保存的上次的由计算部412进行第1运算的结果得到的6个解码中间结果D502,作为解码中间结果D504而提供给开关504。另外,解码中间结果保存用RAM 503将从开关501提供的6个解码中间结果D502保存(写入)到控制信号D4203所表示的地址中。
从解码中间结果保存用RAM 502向开关504提供解码中间结果D503,或者从解码中间结果保存用RAM 503向开关504提供解码中间结果D504。另外,从控制部417提供控制信号D4204,该控制信号D4204表示选择解码中间结果保存用RAM 502或解码中间结果保存用RAM 503。开关504根据控制信号D4204选择解码中间结果保存用RAM 502或解码中间结果保存用RAM503,将从该所选择的一方提供的6个解码中间结果作为6个解码中间结果D413而提供给计算部412和循环移位电路414。
图21是说明解码中间结果保存用存储器413的解码中间结果保存用RAM 502和解码中间结果保存用RAM 503的读取和写入的动作的时序图。
此外,在图21中,横轴表示时间(t)。另外,在图21中,将与图22的○标记内记载的数字i的结构矩阵的1对应的数据的读取表示为Ri,将该数据的写入(保存)表示为Wi。
在解码中间结果保存用存储器413中,在通过计算部412进行第1运算的情况下,解码中间结果保存用RAM 502根据控制信号D4202,以每个时钟6个地读取9次(9个时钟)已经保存的、上次的计算部412的第1运算的结果得到的解码中间结果D501之中与保存在同一地址中的校验矩阵H的第1行至第6行的1对应的解码中间结果D501(图中是R0至R8),通过开关504提供给计算部412。即,图16的校验矩阵H的行权重是9,因此与校验矩阵H的各行的1对应的解码中间结果是9个,解码中间结果保存用RAM 502以6个为单位读取9次与第1行至第6行的1对应的6个解码中间结果D501。
然后,解码中间结果保存用RAM 503根据控制信号D4203,以6个为单位连续9次读取已经保存的、上次由计算部412进行第1运算的结果得到的解码中间结果D502之中与同一地址中保存的校验矩阵H的第7行至第12行的1对应的解码中间结果D502(R9至R17),并通过开关504提供给计算部412。
在此,在逐一计算节点的计算器4121至4126或4151至4156中,产生与节点次数(node degree)相应的延迟。例如,在计算器4121至4126中产生9个时钟的延迟。另外,在解码装置400进行超过100MHz的高速动作的情况下,在计算器4121至4126中还会产生3个时钟左右的延迟,需要进行3个时钟左右的流水线(pipeline)化。
即,计算部412为进行第1运算所需要的时间、即从解码中间结果保存用存储器413读取解码中间结果D413后到将使用了该解码中间结果D413的第1运算结果得到的解码中间结果D412提供给解码中间结果保存存储器413为止的时间,是12个时钟的时间T1。
在这种情况下,在从解码中间结果保存用RAM 502开始解码中间结果D503的第1次读取(R0)起经过T1时间后,开始从计算部412向解码中间结果保存存储器413提供第1运算结果得到的与校验矩阵H的第1行至第6行的1对应的6个解码中间结果D412。该解码中间结果D413通过开关501作为解码中间结果D501而被提供给解码中间结果保存用RAM 502,解码中间结果保存用RAM 502根据控制信号D4202,将该解码中间结果D501连续9次保存到保存有已经读取的解码中间结果D503的地址中(W0至W8)。
即,从通过解码中间结果保存用RAM 502结束解码中间结果D503的9次读取(R0至R8)之后,直到通过解码中间结果保存用RAM 502开始解码中间结果D501的9次保存(W0至W8)为止,产生3个时钟的时间Tw(=T1-9)的等待时间。
其结果,从解码中间结果保存用RAM 503的9次读取(R9至R17)结束之后经过时间Tw后,向解码中间结果保存用RAM 502的9次保存(W0至W8)结束。因此,从解码中间结果保存用RAM503的9次读取(R9至R17)结束之后到开始从解码中间结果保存用RAM 502的9次读取(R18至R26)为止,需要时间Tw的等待时间。
另外,还提出了近似和乘积算法(Sum Product Algorithm)来实现的方法等,但是在该方法中会导致性能的劣化。
在如以上那样在硬件中实现和乘积算法的情况下,如上所述存在以下方法逐一串行(serial)地进行与边对应的消息的运算(校验节点运算和变量节点运算、或第1运算和第2运算)的方法、全部并列(全并行(full parallel))地进行与边对应的消息的运算(校验节点运算和变量节点运算、或第1运算和第2运算)的方法、以每几个并列(并行(parallel))地进行与边对应的消息的运算(校验节点运算和变量节点运算、或第1运算和第2运算)的方法。
但是,在以每P个并列地进行的方法中,在P值大时,特别会导致计算器412的电路规模变大。例如,在P为360、码长为64800时,有时计算部412的电路规模会达到解码装置400的整体的20%,达到除去解码装置400的存储器(例如,解码中间结果保存用存储器410、解码中间结果保存用存储器413、接收用存储器416等)以外的逻辑电路的60%。
另外,如图21所示,产生不从解码中间结果保存用RAM 502和503中的任何一个进行读取的时间Tw。即,在时间Tw的期间,不对进行第1运算的计算部412提供解码中间结果D413,因此计算部412不进行第1运算(闲置)。特别是在节点次数小的情况下,时间Tw相对变长,会长时间浪费计算部412。
非专利文献1C.Howland and A.Blanksby,“ParallelDccoding Architectures for Low Density Parity Check Codcs”,Symposium on Circuits and Systems,2001
非专利文献2E.Yeo,P.Pakzad,B.Nikolic and V.Anantharam,“VLSI Architectures for iterative Decoders inMagnetic Recording Channels”,IEEE Transactions on Magnetics,Vol.37,No.2,March 2001
非专利文献3T.Zhang,K.K.Parhi,”Joint(3,k)-regularLDPC Code and decoder/encoder design,”IEEE Transactions onSignal Processing,Vol.52,No.4,pp.1065-1079,April 2004
非专利文献4M.M.Mansour,N.R.Shanbhag,”a noveldesign methodology for high-performance programmable decodercores for AA-LDPC codes,”Proceedings of IEEE Workshop onSignal Processing Systems 2003(SIPS 2003),pp.29-34,Aug.2003
专利文献1日本特开2004-364233号公报
发明内容
发明所要解决的问题 本发明是鉴于这种状况而完成的,可以抑制装置的大规模化的同时高精度地进行LDPC码的解码。
用于解决问题的方案 本发明的解码装置的特征在于,具备第1运算部,其进行用于LDPC码的解码的校验节点的运算;以及第2运算部,其进行用于LDPC码的解码的变量节点的运算,仅由第1运算部同时进行N(N是小于P的正整数)个校验节点的运算,或者仅由第2运算部同时进行N个变量节点的运算,或者第1运算部同时进行N个校验节点的运算并且第2运算部同时进行N个变量节点的运算。
本发明的解码方法的特征在于,包括第1运算步骤,进行用于LDPC码的解码的校验节点的运算;以及第2运算步骤,进行用于LDPC码的解码的变量节点的运算,仅由第1运算步骤的处理同时进行N(N是小于P的正整数)个校验节点的运算,或者仅由第2运算步骤的处理同时进行所述N个变量节点的运算,或者第1运算步骤的处理同时进行N个校验节点的运算、并且第2运算步骤的处理同时进行N个变量节点的运算。
在本发明中,同时进行N(N是小于P的正整数)个校验节点的运算,或者同时进行N个变量节点的运算,或者同时进行N个校验节点的运算并且同时进行N个变量节点的运算。
发明的效果 依据本发明,可以在抑制装置的大规模化的同时高精度地进行LDPC码的解码。
图1是说明LDPC码的校验矩阵H的图。
图2是表示奇偶校验部成为下三角矩阵的校验矩阵H的图。
图3是说明LDPC码的解码过程的流程图。
图4是说明消息的流程的图。
图5是表示LDPC码的校验矩阵H的示例的图。
图6是表示校验矩阵H的Tanner图的图。
图7是表示变量节点的图。
图8是表示校验节点的图。
图9是表示LDPC码的校验矩阵H的示例的图。
图10是表示逐一进行节点运算的LDPC码的解码装置的结构例的框图。
图11是表示图10的校验节点计算器的结构例的框图。
图12是表示图10的变量节点计算器的结构例的框图。
图13是表示同时进行全部节点运算的LDPC码的解码装置的结构例的框图。
图14是表示图13的校验节点计算器的结构例的框图。
图15是表示图13的变量节点计算器的结构例的框图。
图16是表示分割为6×6单位的校验矩阵H的图。
图17是表示同时进行6个节点运算的解码装置的结构例的框图。
图18是表示图17的校验节点计算器的结构例的框图。
图19是表示图17的变量节点计算器的结构例的框图。
图20是表示图17的解码中间结果保存用存储器的结构例的框图。
图21是表示图17的解码中间结果保存用RAM的动作的时序图。
图22是表示与解码中间结果对应的结构矩阵的位置的图。
图23是表示应用了本发明的解码装置的第1实施方式的结构例的框图。
图24是表示图23的解码中间结果保存存储器的结构例的框图。
图25是说明图24的解码中间结果保存用RAM的动作的时序图。
图26是表示与解码中间结果对应的结构矩阵的位置的图。
图27是说明图23的解码装置的解码处理的流程图。
图28是表示应用了本发明的解码装置的第2实施方式的结构例的框图。
图29是表示图28的接收用存储器的结构例的框图。
图30是表示图28的解码中间结果保存用存储器的结构例的框图。
图31是说明接收用存储器和解码中间结果保存用存储器的动作的时序图。
图32是表示应用了本发明的解码装置的第3实施方式的结构例的框图。
图33是表示图32的解码中间结果保存用存储器的结构例的框图。
图34是表示应用了本发明的解码装置的第4实施方式的结构例的框图。
图35是说明图34的解码装置的解码处理的流程图。
附图标记说明 414循环移位电路;415计算部;416接收用存储器;1000解码装置;1101循环移位电路;1102计算部;1103、1104解码中间结果保存用存储器;1105控制部;1202至1205解码中间结果保存用RAM;1499控制部;1500接收用存储器;1600解码中间结果保存用存储器;1502、1503接收数据保存用存储器;1602、1603解码中间结果保存用存储器;1799控制部;1800解码中间结果保存用存储器;1801、1802解码硬判断结果保存用存储器;1803解码软判断结果保存用存储器;2000循环移位电路;2001校正子(syndrome)判断部;2002解码中间结果保存用存储器;2003控制部。
具体实施例方式 下面参照附图详细说明应用了本发明的具体实施方式
。
图23示出了应用了对用图16的校验矩阵H表现的LDPC码进行解码的本发明的解码装置的第1实施方式的结构例。
图23的解码装置1000由循环移位电路414、计算部415、接收用存储器416、循环移位电路1101、由3个计算器11021至11023构成的计算部1102、解码中间结果保存用存储器1103、解码中间结果保存用存储器1104、以及控制部1105构成。此外,对与图17相同的部分附加相同的附图标记。
从解码中间结果保存用存储器1104向循环移位电路1101提供6个解码中间结果D1104,以及从接收用存储器416向循环移位电路1101提供6个接收数据D417(LDPC码)。另外,从控制部1105向循环移位电路1101提供控制信号D1106,该控制信号D1106表示与该解码中间结果D1104对应的校验矩阵H的1是在校验矩阵H中对原来的单位矩阵等进行了几次循环移位的信息(矩阵数据),还表示选择6个解码中间结果D1104或接收数据D417中的哪一个的信息。
循环移位电路1101根据控制信号D1106,进行选择6个解码中间结果D1104或接收数据D417并重新排列的循环移位。循环移位电路1101在对6个解码中间结果D1104或接收数据D417进行循环移位得到的结果之中将与结构矩阵的上半部分(第1行至第3行)或下半部分(第4行至第6行)的1对应的3个结果作为解码中间结果D1101,提供给计算部1102。
计算部1102由3个计算器11021至11023构成。从循环移位电路1101向计算部1102提供由计算部415进行第2运算的结果得到的3个解码中间结果D1101(v),并且从解码中间结果保存用存储器1103向计算部1102提供与上次由计算器11021至11023进行第1运算的结果得到的结构矩阵的上半部分或下半部分的1对应的3个解码中间结果D1103(uj),该3个解码中间结果D1101和3个解码中间结果D1103被提供给计算器11021至11023。另外,从控制部1105向计算部1102提供控制信号D1107,该控制信号D1107被提供给计算器11021至11023。此外,控制信号D1107是3个计算器11021至11023中共用的信号。
计算器11021至11023与图18所示的计算器4121的结构相同,分别使用解码中间结果D1101和D 1103,按照式(7)和式(8)进行第1运算,求得解码中间结果D1102(vi)。计算部1102将由计算器11021至11023进行运算的结果得到的与结构矩阵的上半部分或下半部分的3个1对应的3个解码中间结果D1102提供给解码中间结果保存用存储器1103。
解码中间结果保存用存储器1103例如由可以同时读写3个解码中间结果D1102的4个单端口RAM构成。从计算部1102向解码中间结果保存用存储器1103提供3个解码中间结果D1102,并且从控制部1105向解码中间结果保存用存储器1103提供对解码中间结果保存用存储器1103的读写进行控制的控制信号D1108。
在解码中间结果保存用存储器1103中,根据控制信号D1108集中保存从计算部1102提供的3个解码中间结果D1102,同时读取已经保存的3个解码中间结果D1102,并作为解码中间结果D1103而提供给计算部1102和循环移位电路414。即,对于解码中间结果保存用存储器1103,同时进行提供给计算部1102和循环移位电路414的解码中间结果D1103的读取和从计算部1103提供的解码中间结果D1102的写入。
此外,在解码中间结果保存用存储器1103中,保存通过计算部1102的第1运算进行运算得到的校验矩阵H的i列的、来自与各行的1对应的边的第1运算的解码中间结果D1102,因此,保存在解码中间结果保存用存储器1103中的数据量、即解码中间结果保存用存储器1103所需的存储容量是解码中间结果D1102的量化位数与校验矩阵H的1的数量之间的乘法运算值。
循环移位电路414、计算部415及接收用存储器416与图17的各部分相同,因此省略说明。此外,循环移位电路414对从解码中间结果保存用存储器1103以每3个地提供的6个解码中间结果D1103进行循环移位,将6个解码中间结果D414提供给计算部415。
在解码中间结果保存用存储器1104中,每6个地从第1地址起依次保存来自循环移位电路1101的解码结果D1105,从解码中间结果保存用存储器1104输出已经保存的解码结果D1105。另外,在解码中间结果保存用存储器1104中,从第1地址起依次保存从计算部415提供的第2运算的结果即与校验矩阵H的6个列对应的6个解码中间结果D415。
即,在解码中间结果保存用存储器1104的第1地址中,与图17的解码中间结果保存用存储器410同样地,保存与校验矩阵H的列对应的解码中间结果之中的第1列至第6列的解码中间结果v。然后,同样地,在第2地址中,保存第7列至第12列的解码中间结果v,在第3地址中保存第13列至第18列的解码中间结果。以后,同样地,将第19列至第108列的解码中间结果v每6个地保存到第4地址至第18地址中,将共计108个解码中间结果v保存到解码中间结果保存用存储器1104中。
因此,解码中间结果保存用存储器1104的字(word)数是将图16的校验矩阵H的列数(LDPC码的码长)108除以同时读写的解码中间结果的数量6而得到的18。
解码中间结果保存用存储器1104从已经保存的解码中间结果D415同时读取6个在与后级的计算部1102要求解的解码中间结果uj对应的在校验矩阵H的行中成为“1”的解码中间结果v,作为解码中间结果D1104而提供给循环移位电路1101。
此外,解码中间结果保存用存储器1104例如由可以同时读写6个解码中间结果的单端口RAM构成。另外,在解码中间结果保存用存储器1104中,保存通过计算部415的第2运算进行运算得到的与列对应的解码中间结果D415,因此,保存在解码中间结果保存用存储器1104中的数据量、即解码中间结果保存用存储器1104所需的存储容量是解码中间结果D415的量化位数与校验矩阵H的列数(LDPC码的码长)之间的乘法运算值。
控制部1105向循环移位电路1101提供控制信号D1106,向计算部1102提供控制信号D1107,从而分别进行控制。另外,控制部1105向解码中间结果保存用存储器1103提供控制信号D1108,向循环移位电路414提供控制信号D421,向计算部415提供控制信号D422,从而分别进行控制。
按照循环移位电路1101、计算部1102、解码中间结果保存用存储器1103、循环移位电路414、计算部415、解码中间结果保存用存储器1104的顺序对数据进行一次循环,由此解码装置1000可以进行1次解码。在解码装置1000中,例如,在反复进行规定次数的解码之后,将由计算部415进行的第2运算的结果的解码中间结果D1104作为最终的解码结果而输出。
图24是表示图23的解码中间结果保存用存储器1103的结构例的框图。
解码中间结果保存用存储器1103由开关1201和1206、以及4个作为单端口RAM的解码中间结果保存用RAM 1202至1205构成。
在详细说明该解码中间结果保存用存储器1103的各部分之前,首先说明向解码中间结果保存用RAM 1202至1205保存数据的方法。
在解码中间结果保存用RAM 1202至1205中,保存由计算部1102进行第1运算的结果得到的、通过开关1201提供的解码中间结果D1102。
具体地说,在解码中间结果保存用RAM 1202的第1地址至第9地址中,以各行都向横方向(列方向)靠紧的形式(忽略0的形式)保存与图16的校验矩阵H的第1行至第3行的1对应的解码中间结果D1102(D1201)。
即,如果将第j行第i列表示为(j,i),则在解码中间结果保存用RAM 1202的第1地址中保存与作为图16的校验矩阵H的结构矩阵的(1,1)至(6,6)的6×6的单位矩阵的上半部分(第1至第3行)的1对应的数据,在第2地址中保存与作为图16的校验矩阵H的结构矩阵的(1,25)至(6,30)的移位矩阵(将6×6的单位矩阵沿右方向循环移位5次得到的矩阵)的上半部分的1对应的数据。在第3地址至第8地址中也同样与图16的校验矩阵H的结构矩阵的上半部分相对应地保存数据。
并且,在第9地址中保存与校验矩阵H的(1,103)至(6,108)的移位矩阵(将6×6的单位矩阵之中的第1行的“1”置换为“0”并沿左方向循环移位1次而得到的移位矩阵)的上半部分的“1”对应的数据。在此,在图16的校验矩阵H的(1,103)至(6,108)的移位矩阵中,由于第1行中没有1,因此在第9地址中不保存数据。
另外,在解码中间结果保存用RAM 1202的第10地址至第18地址中保存与图16的校验矩阵H的第13行至第15行的“1”对应的数据。即,在第10地址中保存与校验矩阵H的(13,7)至(18,12)的将6×6的单位矩阵沿右方向循环移位5次得到的矩阵的上半部分的“1”对应的数据,在第11地址中保存与构成校验矩阵H的(13,13)至(18,18)的和矩阵(该和矩阵是6×6的单位矩阵与将6×6的单位矩阵向右方向循环移位1次得到的矩阵之和)的移位矩阵的上半部分的“1”对应的数据。
另外,在第12地址中保存与构成校验矩阵H的(13,13)至(18,18)的和矩阵的单位矩阵的上半部分的“1”对应的数据。下面,在第13地址至第18地址中也与校验矩阵H的结构矩阵的上半部分相对应地保存数据。
同样,在解码中间结果保存用RAM 1202的第19地址到第27地址中,与图16的校验矩阵H相对应地保存与第25行到第27行的“1”对应的数据。即,解码中间结果保存用RAM 1202的字数是27。
另外,在解码中间结果保存用RAM 1203的第1地址到第9地址中,以各行都向横方向靠紧的形式保存与图16的校验矩阵H的第4行到第6行的“1”对应的解码中间结果D1102(D1202)。
即,在解码中间结果保存用RAM 1203的第1地址中保存与作为图16的校验矩阵H的结构矩阵的(1,1)到(6,6)的6×6的单位矩阵的下半部分(第4至第6行)的“1”对应的数据,在第2地址中保存与作为图16的校验矩阵H的结构矩阵的(1,25)到(6,30)的移位矩阵(将6×6的单位矩阵向右方向循环移位5次得到的移位矩阵)的下半部分的“1”对应的数据。在第3地址到第9地址中也同样与图16的校验矩阵H的结构矩阵的下半部分相对应地保存数据。
另外,在解码中间结果保存用RAM 1203的第10地址到第18地址中保存与图16的校验矩阵H的第16行到第18行的“1”对应的数据。即,在第10地址中保存与将校验矩阵H的(13,7)到(18,12)的6×6的单位矩阵向右方向循环移位5次得到的矩阵的下半部分的“1”对应的数据,在第11地址中保存与作为构成校验矩阵H的(13,13)到(18,18)的和矩阵(该和矩阵是6×6的单位矩阵与将6×6的单位矩阵向右方向循环移位1次得到的移位矩阵之和)的移位矩阵的下半部分的“1”对应的数据。另外,在第12地址中保存与构成校验矩阵H的(13,13)到(18,18)的和矩阵的单位矩阵的下半部分的“1”对应的数据。下面,在第13地址到第18地址中也与校验矩阵H的结构矩阵的下半部分相对应地保存数据。
同样,在解码中间结果保存用RAM 1203的第19地址到第27地址中,与图16的校验矩阵H相对应地保存与第28行到第30行的“1”对应的数据。即,解码中间结果保存用RAM 1203的字数是27。
在解码中间结果保存用RAM 1204的第1地址到第9地址中,以各行都向横方向靠紧的形式保存与图16的校验矩阵H的第7行到第9行的1对应的解码中间结果D1102(D1203)。
即,在解码中间结果保存用RAM 1204的第1地址中保存与构成作为校验矩阵H的结构矩阵的(7,1)到(12,6)的和矩阵(该和矩阵是将6×6的单位矩阵向右方向循环移位2次得到的第1移位矩阵与向右方向循环移位4次得到的第2移位矩阵之和)的第1移位矩阵的上半部分(第7至第9行)的“1”对应的数据,在第2地址中保存与构成作为校验矩阵H的结构矩阵的(7,1)到(12,6)的和矩阵的第2移位矩阵的上半部分的“1”对应的数据。下面,在第3地址到第9地址中也同样与校验矩阵H的结构矩阵的上半部分相对应地保存数据。
同样,在解码中间结果保存用RAM 1204的第10地址到第18地址中,与图16的校验矩阵H相对应地保存与图16的校验矩阵H的第19行到第21行的“1”对应的数据,在第19地址到第27地址中,与图16的校验矩阵H相对应地保存与校验矩阵H的第31行到第33行的“1”对应的数据。即,解码中间结果保存用RAM1204的字数是27。
在解码中间结果保存用RAM 1205的第1地址到第9地址中,以各行都向横方向靠紧的形式保存与图16的校验矩阵H的第10行到第12行的“1”对应的解码中间结果D1102(D1204)。
即,在解码中间结果保存用RAM 1205的第1地址中保存与构成作为校验矩阵H的结构矩阵的(7,1)到(12,6)的和矩阵(和矩阵是将6×6的单位矩阵向右方向循环移位2次得到的第1移位矩阵与向右方向循环移位4次得到的第2移位矩阵之和)的第1移位矩阵的下半部分(第10至第12行)的“1”对应的数据,在第2地址中保存与构成作为校验矩阵H的结构矩阵的(7,1)到(12,6)的和矩阵的第2移位矩阵的下半部分的“1”对应的数据。下面,在第3地址到第9地址中也同样与校验矩阵H的结构矩阵的下半部分相对应地保存数据。
同样,在解码中间结果保存用RAM 1205的第10地址到第18地址中,与图16的校验矩阵H相对应地保存与图16的校验矩阵H的第22行到第24行的“1”对应的数据,在第19地址到第27地址中,与图16的校验矩阵H相对应地保存与校验矩阵H的第34行到第36行的“1”对应的数据。即,解码中间结果保存用RAM1205的字数是27。
如上所述,解码中间结果保存用RAM 1202至1205的字(word)数是27。即,字数是如下得到的值将校验矩阵H的行的权重(row weight)的9和行数的36相乘,将该乘法运算结果(校验矩阵H的“1”的数量)除以同时读取的解码中间结果D1201的数量的3,再除以解码中间结果保存用存储器1103所具有的解码中间结果保存用RAM的个数的4。
下面,详细说明图24的解码中间结果保存用存储器1103的各部分的动作。
在通过计算部1102进行第1运算的情况下,计算部1102向解码中间结果保存用存储器1103提供第1运算的结果得到的解码中间结果D1102(uj),该解码中间结果D1102被写入到解码中间结果保存用RAM 1202至1205中的任意一个的规定地址中,同时从另一个中读取上次由计算部1102进行第1运算的结果得到的解码中间结果D1102,作为解码中间结果D1103而输出到计算部1102。另一方面,在通过计算部415进行第2运算的情况下,在解码中间结果保存用存储器1103中不进行解码中间结果保存用RAM 1202至1205的写入,而是从任意一个解码中间结果保存用RAM 1202至1205的规定地址中读取解码中间结果D1102,作为解码中间结果D1103而提供给循环移位电路414。
从计算部1102对开关1201提供3个解码中间结果D1102,并且从控制部1105向开关1201提供控制信号D11081,该控制信号D11081表示选择解码中间结果保存用RAM 1202至1205中的任意一个作为写入该解码中间结果D1102的存储器。开关1201根据控制信号D11081,选择解码中间结果保存用RAM 1202至1205之中的任意一个,将3个解码中间结果D1102提供给该所选择的解码中间结果保存用RAM 1202至RAM 1205。
从开关1201将3个解码中间结果D1102分别作为解码中间结果D1201至D1204而提供给解码中间结果保存用RAM 1202至1205,并且从控制部1105向解码中间结果保存用RAM 1202至1205提供表示地址的控制信号D11082至D11085。解码中间结果保存用RAM 1202至1205读取控制信号D11082至D11085分别表示的地址中已经保存的上次的由计算部1102进行第1运算的结果得到的3个解码中间结果D1201至D1204,作为解码中间结果D1205至D1208而提供给开关1206。另外,在解码中间结果保存用RAM 1202至1205中,将从开关1201提供的3个解码中间结果D1201至D1204分别保存到控制信号D11082至D11085所表示的地址中。
向开关1206提供来自解码中间结果保存用RAM 1202的解码中间结果D1205、来自解码中间结果保存用RAM 1203的解码中间结果D1206、来自解码中间结果保存用RAM 1204的解码中间结果D1207、或来自解码中间结果保存用RAM 1205的解码中间结果D1208。
另外,从控制部1105提供控制信号D11086,该控制信号D11086表示选择解码中间结果保存用RAM 1202至1205中的任一个。开关1206根据控制信号D11086,选择解码中间结果保存用RAM 1202至1205中的任一个,将从该所选择的一个中提供的3个解码中间结果D1205至D1208作为3个解码中间结果D1103而提供给计算部1102和循环移位电路414。
图25是说明解码中间结果保存用存储器1103的解码中间结果保存用RAM 1202至解码中间结果保存用RAM 1205的读取和写入的动作的时序图。
此外,在图25中横轴表示时间(t)。另外,在图25中,将与图26的○标记内记载的数字i0的构成矩阵的上半部分的“1”对应的数据的读取表示为Ri0,将该数据的写入(保存)表示为Wi0。进而,将与图26的○标记内记载的数字i1的构成矩阵的下半部分的“1”对应的数据的读取表示为Ri1,将该数据的写入表示为Wi1。
在解码中间结果保存用存储器1103中,在通过计算部1102进行第1运算的情况下,解码中间结果保存用RAM 1202根据控制信号D11082,每3个地读取9次(9个时钟)(R00至R80)已经保存的上次计算部1102的第1运算结果得到的解码中间结果D1201中的、与保存在相同地址中的校验矩阵H的第1行到第3行的“1”对应的解码中间结果D1201(D1205),通过开关1206作为解码中间结果D1103而提供给计算部1102。即,图16的校验矩阵H的行权重是9,因此,与校验矩阵H的各行的“1”对应的解码中间结果是9个,从解码中间结果保存用RAM 1202中以3个单位读取9次与第1行到第3行的“1”对应的3个解码中间结果D1201。
然后,根据控制信号D11083,从解码中间结果保存用RAM1203中,以3个为单位连续9次读取已经保存的上次计算部1102的第1运算结果得到的解码中间结果D1202之中的、与保存在相同地址中的校验矩阵H的第4行到第6行的“1”对应的解码中间结果D1202(图中是R01至R81),通过开关1206提供给计算部1102。
在此,计算部1102用于进行第1运算所需要的时间、即从解码中间结果保存用存储器1103读取解码中间结果D1103后到将使用了该解码中间结果D1103的第1运算的结果得到的解码中间结果D1102提供给解码中间结果保存存储器1103为止的时间,是12个时钟的时间T1。
在这种情况下,在从解码中间结果保存用RAM 1202开始解码中间结果D1205的第1次读取(R00)起经过T1时间后,开始从计算部1102向解码中间结果保存用存储器1103提供第1运算的结果得到的与校验矩阵H的第1行到第3行的“1”对应的3个解码中间结果D1102。该解码中间结果D1102作为解码中间结果D1201而通过开关1201被提供给解码中间结果保存用RAM1202,在解码中间结果保存用RAM 1202中,将该解码中间结果D1202根据控制信号D11082连续9次保存到保存了已经读取的解码中间结果D1205的地址中(W00至W80)。
即,从来自解码中间结果保存用RAM 1202的解码中间结果D1205的9次读取(R00至R80)结束之后到向解码中间结果保存用RAM 1202的解码中间结果D1201的9次保存(W00至W80)开始为止,产生3个时钟的时间Tw(=T1-9)。其结果,从解码中间结果保存用RAM 1203的9次读取(R01至R81)结束之后,在经过时间Tw后,向解码中间结果保存用RAM 1202的9次保存(W00至W80)结束。
但是,在解码中间结果保存用存储器1103中,在下一次第1运算中使用的与校验矩阵H的第7行到第9行的“1”对应的解码中间结果D1203被保存到解码中间结果保存用RAM 1204中,因此可以紧接在从解码中间结果保存用RAM 1203的9次读取(R01至R81)之后,进行从解码中间结果保存用RAM 1204的9次读取(R90至R170)。
另外,从解码中间结果保存用RAM 1203的9次读取(R01至R81)结束之后经过时间Tw后,向解码中间结果保存用RAM 1203的解码中间结果D1202的9次保存(W01至W81)开始。
接下来,紧接在从解码中间结果保存用RAM 1204的9次读取(R90至R170)结束之后,从解码中间结果保存用RAM 1205读取9次(R91至R171)在下一次的第1运算中使用的与校验矩阵H的第10行到第12行的“1”对应的解码中间结果D1204。另外,从解码中间结果保存用RAM 1204的9次读取(R90至R170)结束之后经过时间Tw后,向解码中间结果保存用RAM 1204的解码中间结果D1203的9次保存(W90至W170)开始。
紧接在从解码中间结果保存用RAM 1205的9次读取(R91至R171)结束之后,从解码中间结果保存用RAM 1202读取9次在下一次第1运算中使用的与校验矩阵H的第13行到第15行的“1”对应的解码中间结果D1201(R180至R260)。另外,从解码中间结果保存用RAM 1205的9次读取(R91至R171)结束之后经过时间Tw后,向解码中间结果保存用RAM 1205的解码中间结果D1204的9次保存(W91至W171)开始。然后,以后重复进行同样的处理。
如上所述,在解码中间结果保存用存储器1103中,将与校验矩阵H的3行的“1”对应的解码中间结果D1102依次保存到4个解码中间结果保存用RAM 1202至1205中,因此,即使在计算部1102为了进行第1运算而需要时间T1的情况下,也可以向计算部1102连续输出解码中间结果D1103。其结果,能够在计算部1102中连续进行第1运算。
图27是说明图23的解码装置1000的解码处理的流程图。例如,在应该解码的接收数据被保存到接收用存储器416中时开始该处理。
在步骤S49中,控制部1105选择解码中间结果保存用RAM1202至1205之中的任一个作为读取存储器,将表示该选择的控制信号D11086提供给开关1206(图24)。开关1206根据控制信号D11086,选择解码中间结果保存用RAM 1202至1205,将从该所选择的解码中间结果保存用RAM 1202至1205以3个为单位提供的解码中间结果D1205至D1208作为解码中间结果D1103,提供给循环移位电路414和计算部1102。
在步骤S49的处理后进入步骤S50,循环移位电路414将从解码中间结果保存用存储器1103(的开关1206)提供的、与结构矩阵的上半部分对应的3个解码中间结果D1103和与下半部分对应的3个解码中间结果D1103(uj)合在一起,进行循环移位并提供给计算部415。
具体地说,从解码中间结果保存用存储器1103以3个为单位向循环移位电路414提供解码中间结果D1103,并且从控制部1105向循环移位电路414提供表示与该解码中间结果D1103对应的矩阵数据的控制信号D421。循环移位电路414根据控制信号D421,将与结构矩阵的上半部分对应的3个解码中间结果D1103和与下半部分对应的3个解码中间结果D1103合在一起,进行循环移位(重新排列),并将其结果作为解码中间结果D414而提供给计算部415。
在步骤S51中,计算部415进行第2运算,将作为其运算结果的解码中间结果D415提供给解码中间结果保存用存储器1104。
具体地说,在步骤S50中从循环移位电路414向计算部415提供6个解码中间结果D414,并且从接收数据用存储器416向计算部415提供6个接收数据D417,解码中间结果D414和接收数据D417分别被逐一提供给计算部415的计算器4151至4156。进而,从控制部1105向计算部415提供控制信号D422,该控制信号D422被提供给计算器4151至4156。
计算器4151至4156使用解码中间结果D414和接收数据D417,根据控制信号D422,按照式(5)分别进行第2运算,将该第2运算结果得到的与校验矩阵H的列对应的解码中间结果D415(v)提供给解码中间结果保存用存储器1104。
此外,在还没有对从接收用存储器416提供的接收数据D417进行第1运算、解码中间结果D1103没有被保存到解码中间结果保存用存储器1103中的情况下,计算部415将解码中间结果uj设置为初始值,进行第2运算。
在步骤S51的处理后进入步骤S52,解码中间结果保存用存储器1104将在步骤S51中从计算部415提供的解码中间结果D415(v)保存到同一地址中,并进入步骤S53。
在步骤S53中,控制部1105判断是否由计算部415运算了与校验矩阵H的列对应的全部解码中间结果D1104,在判断为没有运算全部解码中间结果D1104的情况下,返回步骤S49,重复上述处理。
另一方面,在步骤S53中,在控制部1105判断为通过计算部415运算了与校验矩阵H的列对应的全部解码中间结果D1104的情况下,进入步骤S54,循环移位电路1101根据从控制部1105提供的控制信号D1106,对从解码中间结果保存用存储器1104提供的6个解码中间结果D1104(v)进行循环移位,以3个为单位将其结果作为解码中间结果D1101而提供给计算部1102。
在步骤S54的处理后,进入步骤S55,计算部1102进行第1运算,将作为该第1运算的结果的解码中间结果D1102提供给解码中间结果保存用存储器1103。
具体地说,在步骤S54中从循环移位电路1101向计算部1102提供3个解码中间结果D1101(v),并且,在后述的步骤S57中向计算部1102提供已经保存的上次计算部1102的第1运算的结果得到的3个解码中间结果D1102(D1103)(uj),该解码中间结果D1101和D1103分别被逐一提供给计算部1102的计算器11021至11023。进而,从控制部1105向计算部1102提供控制信号D1107,该控制信号D1107被提供给计算器11021至11023。
计算器11021至11023分别使用解码中间结果D1101和D1103,根据控制信号D1107,按照式(7)和式(8)分别进行第1运算,将该第1运算的结果得到的解码中间结果D1102(uj)提供给解码中间结果保存用存储器1103。
此外,在还没有对从接收用存储器416提供的接收数据D417进行第1运算、解码中间结果D1103没有被保存到解码中间结果保存用存储器1103中的情况下,计算部1102将解码中间结果udv设定为0。具体地说,例如,在对接收数据D417进行解码之前,将解码中间结果保存用存储器1103初始化为0,或者计算部1102将来自解码中间结果保存用存储器1103的输入屏蔽为0。
在步骤S55的处理后进入步骤S56,控制部1105选择解码中间结果保存用RAM 1202至1205之中的任一个作为保存存储器,并将表示该选择的控制信号D11081提供给开关1201(图24)。开关1201根据控制信号D11081,选择保存3个解码中间结果D1102的解码中间结果保存用RAM 1202至1205,将解码中间结果D1102提供给该选择的解码中间结果保存用RAM 1202至1205。
在步骤S56的处理后进入步骤S57,在解码中间结果保存用RAM 1202至1205中,将在步骤S56中从开关1201提供的3个解码中间结果D1201至D1204(D1102)保存到同一地址中,并进入步骤S58。
在步骤S58中,控制部1105判断是否由计算部1102运算了与校验矩阵H的所有的“1”对应的解码中间结果D1102,在判断为没有运算全部解码中间结果D1102的情况下,返回步骤S54,重复上述处理。
另一方面,在步骤S57中,在控制部1105判断为由计算部1102运算了与所有的“1”对应的解码中间结果D1102的情况下,结束处理。
此外,解码装置1000反复进行与解码次数相应次数的图27的解码处理,将最后的第2运算的结果得到的消息D1104作为最终的解码结果而进行输出。
在上述图23的解码装置1000中,计算部1102由3个计算器11021至11023构成,但是也可以设为不是计算部1102,而是计算部415由3个计算器4151至4153构成。在这种情况下以3个为单位进行第2运算,解码中间结果保存用存储器1104由3个以上的解码中间结果保存用存储器构成。另外,也可以是计算部415和计算部1102两者分别由3个计算器4151至4153、计算器11021至11023构成。
如上所述,在图23的解码装置1000中,解码中间结果保存用存储器1103由4个解码中间结果保存用RAM 1202至1205构成,计算部1102以3个为单位进行第1运算,因此,可以不损失动作频率而减小电路规模。
例如,在以往的具备6个计算器4121至4126的解码装置400中,由计算器4121至4126进行的第1运算所需的时钟数是72,但是,在图23的解码装置1000中,由计算器11021至11023进行的第1运算所需的时钟数是117,是解码装置400的情况下的1.6倍左右。即,虽然使计算器11021至11023的数量减少了一半,但是时钟数是小于2倍的值。
另外,由于由计算器4151至4156进行的第2运算所需的时钟数是59个时钟,因此,在解码装置400和1000中1次解码所需的时间是131(=72+59)比176(=117+59),解码装置1000的解码所需的时间与解码装置400相比是1.3倍左右。即,解码装置1000的动作频率与解码装置400相比为1.3倍左右即可。
进而,在第1运算所需的时钟数小的情况下,解码装置400和1000中的1次解码所需的时间的比率变小。例如,在校验矩阵H的各行的“1”的数量是4的情况下,解码装置400和1000中的运算所需的时间的比率是37比52,解码装置1000中的时间与解码装置1000相比为1.4倍左右。
图28是表示应用了本发明的解码装置1000的第2实施方式的结构例的框图。
在图28的解码装置1000中,代替图23的解码装置1000的接收用存储器416而设置了接收用存储器1400,代替解码中间结果保存用存储器1104而设置了解码中间结果保存用存储器1401,代替控制部1105而设置了控制部1402。从控制部1402向接收用存储器1400提供控制信号D1400,该控制信号D1400表示选择接收数据保存用存储器1502和1503(后述的图29)之中的任一个。从控制部1402向解码中间结果保存用存储器1401提供控制信号D1401,该控制信号D1401表示选择解码中间结果保存用存储器1602和1603(后述的图30)之中的任一个。
图29是表示图28的接收用存储器1400的结构例的框图。
图29的接收用存储器1400由开关1501和1504、以及接收数据保存用存储器1502和1503构成。
向开关1501提供接收LLR(对数似然比)的数据(接收数据)D416,并且,从控制部1105向开关1501提供表示选择接收数据保存用存储器1502和1503之中的任一个的控制信号D14001,其中上述接收LLR的数据D416是根据通过通信路径接收到的接收值(符号位)计算出的符号位的0相似性的值。开关1501根据控制信号D14001,将接收数据D416作为接收数据D1501而提供给接收数据保存用存储器1502,或者将接收数据D416作为接收数据D1502而提供给接收数据保存用存储器1503。
在接收数据保存用存储器1502中,保存来自开关1501的接收数据D1501,另外,从接收数据保存用存储器1502将已经保存的接收数据D1501作为接收数据D1503而提供给开关1504。
在接收数据保存用存储器1503中,与接收数据保存用存储器1502同样地保存来自开关1501的接收数据D1502,另外,从接收数据保存用存储器1503将已经保存的接收数据D1504提供给开关1504。
此外,分别保存在接收数据保存用存储器1502和1503中的数据量、即接收数据保存用存储器1502和1503分别所需的存储容量,是LDPC码的码长与接收数据的量化位数之间的乘法运算值。
从控制部1105向开关1504提供表示选择接收数据保存用存储器1502和1503之中的一个的控制信号D14002,开关1504根据该控制信号D14002,将来自接收数据保存用存储器1502的接收数据D1503或来自接收数据保存用存储器1503的接收数据D1504,作为接收数据D417而提供给循环移位电路1101和计算部415。
此外,控制信号D14001表示选择接收数据保存用存储器1502和1503中的一个,控制信号D14002表示选择另一个。即,在接收数据保存用存储器1502和1503中的一方进行写入的期间,在另一方进行读取。
如以上那样,在接收用存储器1400中设置有2个接收数据保存用存储器1502和1503,因此,可以在一方保存所输入的接收数据D416的期间,在另一方输出已经保存的接收数据D417。其结果,在接收用存储器1400中,可以将连续输入的接收数据D416作为接收数据D417而连续输出。
参照图30详细说明图28的解码中间结果保存用存储器1401的结构。
图30的解码中间结果保存用存储器1401由开关1601、1604和1605、以及解码中间结果保存用存储器1602和1603构成。
从计算部415向开关1601提供3个解码中间结果D415,并且,从控制部1105向开关1601提供控制信号D14011,该控制信号D14011表示选择解码中间结果保存用存储器1602和1603中的一方。开关1601根据控制信号D14011,将解码中间结果D415作为解码中间结果D1601而提供给解码中间结果保存用存储器1602,或者作为解码中间结果D1602而提供给解码中间结果保存用存储器1603。
在解码中间结果保存用存储器1602中,保存来自开关1601的解码中间结果D1601。另外,从解码中间结果保存用存储器1602将已经保存的解码中间结果D1601作为解码中间结果D1603而提供给开关1604,并且,作为解码中间结果D1604而提供给开关1605。在解码中间结果保存用存储器1603中,与解码中间结果保存用存储器1602同样地保存来自开关1601的解码中间结果D1602,另外,从解码中间结果保存用存储器1602将已经保存的解码中间结果D1602作为解码中间结果D1605而提供给开关1604,并且,作为解码中间结果D1606而提供给开关1605。
此外,在解码中间结果保存用存储器1602和1603中分别保存的数据量、即解码中间结果保存用存储器1602和1603各自所需的存储容量,是LDPC码的码长与解码中间结果D415的量化位数之间的乘法运算值。
从控制部1105向开关1604提供表示选择解码中间结果保存用存储器1602和1603中的一个的控制信号D14012。开关1604根据该控制信号D14012,将来自解码中间结果保存用存储器1602的解码中间结果D1603、或来自解码中间结果保存用存储器1603的解码中间结果D1605作为解码结果D1402(软判断值)而进行输出。
从控制部1105向开关1605提供表示选择解码中间结果保存用存储器1602和1603中的一个的控制信号D14013,开关1605根据该控制信号D14013,将来自解码中间结果保存用存储器1602的解码中间结果D1604或来自解码中间结果保存用存储器1603的解码中间结果D1606作为解码中间结果D1403而输出到循环移位电路1101。
此外,控制信号D14012表示选择解码中间结果保存用存储器1602和1603中的一个,控制信号D14013表示选择另一个。即,在保存在解码中间结果保存用存储器1602和1603中的一个中的完成了解码的解码中间结果D1603或D1605被作为解码结果D1402而输出的期间,保存在另一方中的解码中的解码中间结果D1604或D1606被作为解码结果D1403而输出。
如以上那样,在解码中间结果保存用存储器1401中,设置有2个解码中间结果保存用存储器1602和1603,因此,能够在一方保存解码中的解码中间结果D1601或D1602,在另一方保存完成了解码的解码中间结果D1601或D1602。其结果,在解码中间结果保存用存储器1401中,在输出解码结果D1402的期间也可以进行解码,由此,例如可以连续输出解码结果D1402。
图31是说明接收用存储器1400和解码中间结果保存用存储器1401的读取(输出)和写入(保存)的动作的时序图。
此外,在图31中,横轴表示时间(t)。另外,在图31中,接收数据#i表示提供给接收用存储器1400的第i个帧的接收数据D416。并且,将接收数据#i的解码中间结果D1403表示为解码中间结果#i,将接收数据#i的解码结果D1402表示为解码结果#i。在图31中,在从接收数据#i的接收开始到结束为止的时间内,结束对1个接收数据的解码。
在将接收数据#2输入接收用存储器1400中时,在接收数据#2被全部输入为止的时间Ta的期间,该接收数据#2通过开关1501被提供给接收用数据保存用存储器1502并保存。此时,从接收数据保存用存储器1503将已经保存的接收数据#1提供给开关1504,开关1504将接收数据#1输出到循环移位电路1101和计算部415。然后进行接收数据#1的解码。
另外,在解码中间结果保存用存储器1401的解码中间结果保存用存储器1602中,保存通过开关1601从计算部415提供的解码中间结果#1,另外,从解码中间结果保存用存储器1602将已经保存的解码中间结果#1提供给循环移位电路1101。在解码中间结果保存用存储器1603中,已经保存的解码中间结果#0通过开关1604作为解码结果#0而输出。即,在时间Ta的期间,从解码中间结果保存用存储器1401输出解码中间结果#0。
在时间Ta后,向接收用存储器1400输入接收数据#3,在直到接收数据#3被全部输入为止的时间Tb的期间,该接收数据#3通过开关1501被提供给接收数据保存用存储器1503并保存。此时,从接收数据保存用存储器1502读取在时间Ta所保存的接收数据#2,通过开关1504输出到循环移位电路1101及计算部415。然后进行接收数据#2的解码。
另外,解码中间结果保存用存储器1602将在时间Ta的期间保存的解码中间结果#1作为解码结果#1而输出。即,在时间Ta后,在时间Tb的期间,从解码中间结果保存用存储器1401将解码中间结果#1作为解码结果#1而输出。在解码中间结果保存用存储器1603中,保存通过开关1601从计算部415提供的解码中间结果#2,另外,从解码中间结果保存用存储器1603向循环移位电路1101提供已经保存的解码中间结果#2。
在时间Tb后,接收数据#4被输入到接收用存储器1400中,在时间Tc的期间进行与时间Ta的情况相同的处理。即,在时间Tb后,在时间Tc的期间,接收数据#3被提供给循环移位电路1101和计算部415,进行接收数据#3的解码。另外,在时间Tb的期间保存的解码中间结果#2作为解码结果#2而从解码中间结果保存用存储器1603输出。
如以上那样,在图28的解码装置1000中,可以依次对连续输入的接收数据D417进行解码,连续输出该解码结果。由此可以高速地进行解码。即,提高解码装置1000的处理能力。
此外,图29的接收用存储器1400的接收数据保存用存储器1502(1503)的数量与图30的解码中间结果保存用存储器1401的解码中间结果保存用存储器1602(1603)的数量不限定为2个。通过增加接收数据保存用存储器1502和解码中间结果保存用存储器1602的数量,可以增加解码的重复次数,改善解码性能。
例如,在分别设置3个接收数据保存用存储器1502和解码中间结果保存用存储器1602的情况下,可以将1个接收数据保存用存储器1502用作接收数据D417的保存用,将1个解码中间结果保存用存储器1602用作解码结果D1402的输出用,将剩余的2个接收数据保存用存储器1502和解码中间结果保存用存储器1602用作解码用。在这种情况下,需要分别设置2个计算部415和1102,虽然电路规模增大,但是可以将解码的重复次数增加2倍。
图32是表示应用了本发明的解码装置1000的第3实施方式的结构例的框图。
在图32的解码装置1000中,代替图28的解码装置1000的解码中间结果保存用存储器1401而设置有解码中间结果保存用存储器1701,代替控制部1402而设置有控制部1799。向解码中间结果保存用存储器1701提供控制信号D1701,该控制信号D1701表示选择解码中间结果保存用存储器1701的解码硬判断结果保存用存储器1802和1803(后述的图33)之中的任一个。从解码中间结果保存用存储器1701将完成了解码的解码中间结果D415的硬判断值作为解码结果D1702而输出,将解码中的解码中间结果D415的软判断值作为解码中间结果D1703而输出。
图33是表示图32的解码中间结果保存用存储器1701的结构例的框图。
图32的解码中间结果保存用存储器1701由开关1801、1805和1806、解码硬判断结果保存用存储器1802和1803、以及解码软判断结果保存用存储器1804构成。
从计算部415向开关1801提供3个解码中间结果D415的硬判断值作为解码硬判断结果D1801,并且,从控制部1702向开关1801提供控制信号D17011,该控制信号D17011表示选择解码硬判断结果保存用存储器1801和1802中的任一个。开关1801根据控制信号D17011,将解码硬判断结果D1801作为解码硬判断结果D1803而提供给解码硬判断结果保存用存储器1802,或者作为解码硬判断结果D1804而提供给解码硬判断结果保存用存储器1803。
在解码硬判断结果保存用存储器1802中保存来自开关1801的解码中间结果D1803。另外,从解码硬判断结果保存用存储器1802将已经保存的解码中间结果D1803作为解码中间结果D1805而提供给开关1805,并且,作为解码中间结果D1807而提供给开关1806。
在解码中间结果保存用存储器1803中,与解码中间结果保存用存储器1802同样地保存来自开关1801的解码中间结果D1804。另外,从解码中间结果保存用存储器1803将已经保存的解码中间结果D1804作为解码中间结果D1806而提供给开关1805,并且,作为解码中间结果D1808而提供给开关1806。
此外,在解码硬判断结果保存用存储器1802和1803中分别保存的数据量、即解码硬判断结果保存用存储器1802和1803各自所需的存储容量,是LDPC码的码长与作为解码中间结果D415的硬判断值的位数的1位之间的乘法运算值。
从计算部415将3个解码中间结果D415的除上位1位以外的软判断值作为解码软判断结果D1802而提供给解码软判断结果保存用存储器1804。在解码软判断结果保存用存储器1804中保存解码软判断结果D1802,或者从解码软判断结果保存用存储器1804将已经保存的解码软判断结果D1802作为解码软判断结果D1811而输出。
此外,保存在解码软判断结果保存用存储器1804中的数据量、即解码软判断结果保存用存储器1804所需的存储容量,是LDPC码的码长与软判断值的除上位1位以外的值的位数(解码中间结果D415的量化位数-1)之间的乘法运算值。
从控制部1702向开关1805提供表示选择解码硬判断结果保存用存储器1802和1803中的一方的控制信号D17012。开关1805根据该控制信号D17012,将来自解码硬判断结果保存用存储器1802的解码硬判断结果D1805或来自解码中间结果保存用存储器1803的解码硬判断结果D1806作为解码结果D1702(硬判断值)而输出。
从控制部1702向开关1806提供表示选择解码硬判断结果保存用存储器1802和1803中的一方的控制信号D17013,开关1805根据该控制信号D17013,将来自解码硬判断结果保存用存储器1802的解码硬判断结果D1807或来自解码硬判断结果保存用存储器1803的解码中间结果D1808作为解码硬判断结果D1810而输出。通过将来自开关1806的解码硬判断结果D1810作为上位1位、将其下位比特设为来自解码软判断结果保存用存储器1804的解码软判断结果D1811而得到的软判断值,作为解码中间结果D1703而被输出到循环移位电路1101。
此外,控制信号D17012表示选择解码中间结果保存用存储器1802和1803之中的一方,控制信号D17013表示选择另一方。即,在保存在解码中间结果保存用存储器1802和1803的一方中的完成了解码的解码中间结果D1805或D1806作为解码结果D1702而被输出的期间,在另一方中保存的解码中的解码中间结果D1807或D1808作为解码硬判断结果D1810而被输出。
如以上那样,在解码中间结果保存用存储器1701中,解码中间结果D415的硬判断值被保存到2个解码硬判断结果保存用存储器1802和1803中,解码中间结果D415的除上位1位以外的软判断值被保存到1个解码软判断结果保存用存储器1804中,因此,解码中间结果保存用存储器1701只要具有将LDPC码的码长与1位之间的乘法运算值的2倍、和LDPC码的码长与(解码中间结果D415的量化位数-1)之间的乘法运算值进行合计得到的存储容量即可。
因此,在具有解码中间结果保存用存储器1701的图32的解码装置1000中,与具有解码中间结果保存用存储器1401的图28的解码装置相比可以减小电路规模,该解码中间结果保存用存储器1401需要LDPC码的码长与解码中间结果D415的量化位数之间的乘法运算值的2倍的存储容量。
图34是表示应用了本发明的解码装置1000的第4实施方式的结构例的框图。
图34的解码装置1000设置由3个校正子判断器20011至20013构成的校正子判断部2001,进行从循环移位电路2000输出的硬判断结果D2000的校正子运算,根据该运算的结果结束解码。
循环移位电路2000根据控制信号D1106选择6个解码中间结果D1104或接收数据D417,进行重新排列的循环移位,将其结果之中与结构矩阵的上半部分(第1行至第3行)或下半部分(第4行至第6行)的“1”对应的3个结果作为解码中间结果D1999而提供给计算部412。另外,循环移位电路2000将对6个解码中间结果D1104或接收数据D417进行循环移位的结果的硬判断值作为硬判断结果D2000,提供给校正子判断部2000。
校正子判断部2001由3个校正子判断器20011至20013构成。从循环移位电路2000输出的硬判断结果D2000被提供给校正子判断部2001,并且,从控制部2003向校正子判断部2001提供控制校正子运算的控制信号D2001,分别提供给校正子判断器20011至20013。
校正子判断器20011至20013分别根据控制信号D2001,进行硬判断结果D2000的校正子的计算。具体地说,校正子判断器20011至20013进行与校验矩阵H的行对应的硬判断结果D2000的异或(EXOR),判断其结果得到的值是否在所有的行中都为“0”。校正子判断器20011至20013将该判断结果D2002提供给控制部2003。
此外,由校正子判断部2001进行的校正子运算和由计算部1102进行的第1运算也可以同时进行。
控制部2003根据从校正子判断部2001提供的判断结果D2002而结束解码。具体地说,控制部2003根据判断结果D2002,向解码中间结果保存用存储器2002提供将解码中间结果D415或解码结果D1105作为解码结果而输出的控制信号D2003。根据来自控制部2003的控制信号D2003,从解码中间结果保存用存储器2002将已经保存的解码中间结果D415或解码结果D1105作为解码结果而输出,或者将解码中间结果D415提供给循环移位电路2000。
图35是说明图34的解码装置1000的解码处理的流程图。例如在接收用存储器416中保存了应该解码的接收数据D416时开始该处理。
在步骤S71中,控制部2003将计数值K设定为0,进入步骤S72。在步骤S72中,校正子判断部2001(的校正子判断器20011至20013)对从循环移位电路2000提供的硬判断结果D2000的校正子进行运算。此外,在最初的步骤S72中,向校正子判断部2001提供对接收数据D417进行循环移位后的结果的硬判断值即硬判断结果D2000,校正子判断部2001对接收数据D417的硬判断结果D2000的校正子进行运算。
在步骤S72的处理后进入步骤S73,控制部2003根据从校正子判断部2001提供的判断结果D2002,判断校正子是否为“0”,在判断为校正子不是“0”的情况下,进入步骤S74。
在步骤S74中,控制部2003判断计数值K是否大于等于规定的次数N,在判断为小于规定的次数N的情况下,进入步骤S75。
步骤S75至S84的处理与图27的步骤S49至S58的处理相同,因此省略说明。
在步骤S84的处理后进入步骤S85,控制部2003使计数值K递增1,返回步骤S72。
在步骤S73中,在判断为校正子为“0”的情况下,进入步骤S86,控制部2003结束解码,将保存在解码中间结果保存用存储器2002中的解码中间结果D415或解码结果D1105作为解码结果而进行输出。此外,在最初的步骤S71中判断为校正子为“0”的情况下,一次解码都不进行,而将提供给计算部415的接收数据D417(解码结果D1105)通过解码中间结果保存用存储器2002直接作为解码结果而进行输出。
另外,在步骤S74中,在判断为计数值K大于等于规定的次数N的情况下,进入步骤S86,控制部2003结束解码,将保存在解码中间结果保存用存储器2002中的解码中间结果D415作为解码结果而进行输出。
如以上那样,在图35的解码处理中,在校正子为“0”的情况下,或计数值K大于等于规定的次数N的情况下(进行了N次解码的情况下),结束解码。由此可以防止校正子为“0”、即错误数为0的解码中间结果D415被进一步解码而再次增加错误数。另外,在接收数据D416的SN(Signal Noise信噪)比大的情况下,可以不使解码性能劣化而抑制解码次数,因此可以降低解码装置1000的消耗电力。
此外,校正子判断部2001的电路规模一般较小,小到可以忽略由于设置校正子判断部2001而造成的解码装置1000的电路规模的增加的程度。
另外,在图34的解码装置1000中,在图23的解码装置1000中设置了校正子判断部2001,但只要是通过2个阶段的运算(例如,校验节点运算和变量节点运算、第1运算和第2运算等)来进行解码的装置,在哪种装置中设置校正子判断部2001都可以。例如,也可以在图17的解码装置400、或者图28或图32的解码装置1000中设置校正子判断部2001。
在本实施方式中,设解码中间结果保存用存储器1103由4个解码中间结果保存用RAM 1202至1205构成,但是,解码中间结果保存用RAM 1202至1205的数量只要3个以上,可以是任意数量。解码中间结果保存用RAM 1202至1205的数量越增加,越能够提高解码装置的动作速度。
另外,在本实施方式中,通过重复进行第1运算和第2运算来进行解码,但是,也可以通过重复进行校验节点运算和变量节点运算来进行解码。
此外,图24的解码中间结果保存用RAM 1202至1205、图29的接收数据保存用存储器1502和1503、图30的解码中间结果保存用存储器1602和1603、图33的解码硬判断结果保存用存储器1802和1803、以及解码软判断结果保存用存储器1804,例如在RAM的物理的位不足的情况下,可以通过使用多个RAM来提供相同的控制信号,从而在逻辑上当作1个RAM。
在上述情况下,为了简化说明,举出了在P为6的情况、即构成校验矩阵H的结构矩阵的行数及列数为6的情况的示例,但是结构矩阵的行数及列数P不一定是6,也可以根据校验矩阵H的不同而取不同的值。例如,P也可以是360或392。
另外,在本实施方式中,使用了码长为108、编码率为2/3的LDPC码,但是LDPC码的码长和编码率可以是任意值。例如,在结构矩阵的行数及列数P为6的情况下,只要边总数小于等于6,那么无论是哪种码长、编码率的LDPC码,都可以只通过改变控制信号就能够使用解码装置1000来进行解码。
进而,满足结构矩阵的行数及列数P为规定值、边的总数小于等于某值的条件的某种LDPC码的解码装置,可以对满足该条件的任意码长、任意编码率的LDPC码进行解码。
在校验矩阵H不是结构矩阵的行数及列数P的倍数的情况下,可以对校验矩阵H的一部分的外侧全部加上0(all 0)的成分而视为P的倍数进行应用。
在上述的解码装置1000中,将计算部1102的计算器11021至11023的数量设为P/2(=3),但是计算器11021至11023的数量只要小于P即可。此外,即使在P是大的素数的情况下,只要将计算器11021至11023的数量设为与P的整数部的1接近的整数个即可。
另外,在解码装置1000中,也可以不是计算部1102,而是计算部415由少于P的计算器构成。即,只要计算部1102或计算部415的至少一方由少于P的计算器构成即可,另一方可以由P个计算器构成,也可以由少于P的计算器构成。
如以上那样,采用同时进行P个或N个(N是小于P的正整数)第1和第2运算的结构(architecture)来进行具有校验矩阵H的LDPC码的解码,通过同时进行P个或N个第1和第2运算,可以将动作频率抑制在可以实现的范围内,可以进行很多次的重复解码,并且可以防止在向存储器(FIFO、RAM)进行写入和读取时对不同地址的同时存取,其中,该校验矩阵H可以用P×P的单位矩阵、其成分中的“1”之中一个以上成为“0”的准单位矩阵、对单位矩阵或准单位矩阵进行循环移位得到的移位矩阵、作为多个单位矩阵、准单位矩阵或移位矩阵的多个的和的和矩阵、P×P的0矩阵的组合进行表示。
另外,与同时进行P个第1和第2运算的情况相比,通过同时进行N个第1或第2运算,可以减少构成进行第1运算的计算部1102的计算器11021至11023或构成进行第2运算的计算部415的计算器4151至4156的数量,可以减小电路规模。
通常,LDPC码的码长大到几千至几万,因此也使用几百大小的P值。在这种情况下,使用本发明涉及的解码装置的效果更大。
另外,本发明所涉及的解码装置忠实地实现了和乘积算法,因此不会发生消息的量化以外的解码损失。
根据上述观点,通过使用本发明所涉及的解码装置,可以进行高性能的解码。
此外,对上述LDPC码进行解码的解码装置例如可以应用于接收(数字)卫星广播的调谐器等。
权利要求
1.一种LDPC(Low Density Parity Check)码的解码装置,其特征在于,
将P×P(P是正整数)的单位矩阵、作为所述单位矩阵的成分的1中的一个以上为0的矩阵即准单位矩阵、对所述单位矩阵或所述准单位矩阵进行循环移位得到的矩阵即移位矩阵、和矩阵、或者P×P的0矩阵设为结构矩阵,其中,所述和矩阵是所述单位矩阵、所述准单位矩阵或所述移位矩阵之中的多个矩阵的和,
在利用由一个以上的所述结构矩阵构成的组合来表示所述LDPC码的校验矩阵的情况下,
该解码装置具备
第1运算部,其进行用于所述LDPC码的解码的校验节点的运算;以及
第2运算部,其进行用于所述LDPC码的解码的变量节点的运算,
仅由所述第1运算部同时进行N(N是小于P的正整数)个校验节点的运算,或者仅由所述第2运算部同时进行所述N个的变量节点的运算,或者所述第1运算部同时进行所述N个的校验节点的运算并且所述第2运算部同时进行所述N个的变量节点的运算。
2.根据权利要求1所述的解码装置,其特征在于,
所述N是所述P的整数分之一的整数。
3.根据权利要求1所述的解码装置,其特征在于,
所述第1运算部进行所述校验节点的运算和一部分所述变量节点的运算,
所述第2运算部进行所述变量节点的运算的另一部分,
仅由所述第1运算部同时进行所述N个所述校验节点的运算和一部分所述变量节点的运算,或者仅由所述第2运算部同时进行所述N个所述变量节点的运算的另一部分,或者所述第1运算部同时进行所述校验节点的运算和一部分所述变量节点的运算、并且所述第2运算部同时进行所述N个所述变量节点的运算。
4.根据权利要求1所述的解码装置,其特征在于,
仅有所述第1运算部具有进行所述校验节点的运算的所述N个的校验节点计算器,或者仅有所述第2运算部具有进行所述变量节点的运算的所述N个的变量节点计算器,或者所述第1运算部具有所述N个的校验节点计算器并且所述第2运算部具有所述N个的变量节点计算器。
5.根据权利要求4所述的解码装置,其特征在于,
在所述第1运算部具有所述N个的校验节点计算器的情况下,向所述N个的校验节点计算器分别依次输入通过所述第2运算部得到的第2运算结果,所述N个的校验节点计算器分别依次输出使用该第2运算结果进行校验节点的运算的结果得到的第1运算结果,
在所述第2运算部具有所述N个的变量节点计算器的情况下,向所述N个的变量节点计算器分别依次输入通过所述第1运算部得到的第1运算结果,所述N个的变量节点计算器分别依次输出使用该第1运算结果进行变量节点的运算的结果得到的第2运算结果。
6.根据权利要求2所述的解码装置,其特征在于,还具备
第1存储部,其存储通过所述第1运算部得到的第1运算结果;以及
第2存储部,其存储通过所述第2运算部得到的第2运算结果,
所述第1存储部同时存储且读取所述N个的第1运算结果,或者所述第2存储部同时存储且读取所述N个的第2运算结果。
7.根据权利要求6所述的解码装置,其特征在于,
所述第1存储部使得所述LDPC码的校验矩阵的1向列方向靠紧地保存所述第1运算结果。
8.根据权利要求6所述的解码装置,其特征在于,
所述第1存储部由可以同时存储且读取所述N个的第1运算结果的多个存储器构成,或者所述第2存储部由可以同时存储且读取所述N个的第2运算结果的多个存储器构成。
9.根据权利要求6所述的解码装置,其特征在于,
所述第1存储部在相同的地址中保存将所述和矩阵分解为所述单位矩阵、所述准单位矩阵、或所述移位矩阵之中的多个矩阵的和时的分别对于该多个矩阵得到的所述N个的第1运算结果,或者,所述第2存储部在相同的地址中保存将所述和矩阵分解为所述单位矩阵、所述准单位矩阵、或所述移位矩阵之中的多个矩阵的和时的分别对于该多个矩阵得到的所述N个的第2运算结果。
10.根据权利要求2所述的解码装置,其特征在于,还具备
重新排列部,其将P个所述第1或第2运算结果进行重新排列,在所述P个所述第1或第2运算结果之中选择N个第1或第2运算结果并进行输出。
11.根据权利要求10所述的解码装置,其特征在于,
所述重新排列部由并行移位器构成。
12.根据权利要求1所述的解码装置,其特征在于,还具备
存储所述LDPC码的接收信息的多个接收信息存储部;
存储通过所述第2运算部得到的运算结果的多个运算结果存储部;以及
存储控制部,其对所述接收信息存储部和所述运算结果存储部进行控制,
所述存储控制部选择多个所述接收信息存储部之中的任意一个所述接收信息存储部,存储使用于之后的解码中的所述接收信息,并且从其它的所述接收信息存储部读取使用于当前的解码中的所述接收信息,从多个所述运算结果存储部之中的任意一个所述运算结果存储部中读取所述LDPC码的解码结果,并且将其它的所述运算结果存储部用于当前的解码。
13.根据权利要求12所述的解码装置,其特征在于,
每当与所述LDPC码的码长相应的所述接收信息被存储到所述接收信息存储部中时,所述存储控制部切换将使用于之后的解码中的所述接收信息进行存储的所述接收信息存储部。
14.根据权利要求12所述的解码装置,其特征在于,
每当与所述LDPC码的码长相应的所述接收信息被存储到所述接收信息存储部中时,所述存储控制部切换读取所述LDPC码的解码结果的所述运算结果存储部。
15.根据权利要求1所述的解码装置,其特征在于,还具备
存储所述LDPC码的接收信息的多个接收信息存储部;
存储通过所述第2运算部得到的运算结果的硬判断值的多个硬判断值存储部;
软判断值存储部,其存储通过所述第2运算部得到的运算结果的软判断值;以及
存储控制部,其对所述接收信息存储部和所述硬判断值存储部进行控制,
所述存储控制部选择多个所述接收信息存储部之中的任意一个所述接收信息存储部,存储使用于之后的解码中的所述接收信息,并且从其它所述接收信息存储部读取使用于当前的解码中的所述接收信息,从多个所述硬判断值存储部之中的任意一个所述硬判断值存储部读取所述LDPC码的解码结果,并且将其它所述硬判断值存储部使用于当前的解码。
16.一种LDPC(Low Density Parity Check)码的解码装置的解码方法,其特征在于,
将P×P(P是正整数)的单位矩阵、作为所述单位矩阵的成分的1之中的一个以上为0的矩阵即准单位矩阵、对所述单位矩阵或所述准单位矩阵进行循环移位得到的矩阵即移位矩阵、和矩阵、或者P×P的0矩阵设为结构矩阵,其中,所述和矩阵是所述单位矩阵、所述准单位矩阵或所述移位矩阵之中的多个矩阵的和,
在利用由一个以上的所述结构矩阵构成的组合来表示所述LDPC码的校验矩阵的情况下,
该解码方法包括
第1运算步骤,进行用于所述LDPC码的解码的校验节点的运算;以及
第2运算步骤,进行用于所述LDPC码的解码的变量节点的运算,
仅由所述第1运算步骤的处理同时进行N(N是小于P的正整数)个校验节点的运算,或者仅由所述第2运算步骤的处理同时进行所述N个的变量节点的运算,或者所述第1运算步骤的处理同时进行所述N个的校验节点的运算、并且所述第2运算步骤的处理同时进行所述N个的变量节点的运算。
全文摘要
本发明涉及一种可以抑制装置的大规模化的同时高精度地进行LDPC码的解码的解码装置及解码方法。计算部1102使用从解码中间结果保存用存储器1104通过循环移位电路1101提供的解码中间结果D1101,进行与3个校验节点运算对应的第1运算,将其结果得到的解码中间结果D1102存储到解码中间结果保存用存储器1103。计算部415使用从解码中间结果保存用存储器1103通过循环移位电路提供的解码中间结果D414,进行与6个变量节点的运算对应的第2运算,将其结果得到的解码中间结果D415存储到解码中间结果保存用存储器1104。本发明例如可以应用于接收卫星广播的调谐器。
文档编号H03M13/19GK101208864SQ20068002292
公开日2008年6月25日 申请日期2006年4月20日 优先权日2005年4月25日
发明者横川峰志, 宫内俊之, 新谷修 申请人:索尼株式会社