解码装置的制作方法

文档序号:7526220阅读:156来源:国知局
专利名称:解码装置的制作方法
技术领域
本发明涉及一种解码设备、解码方法和程序。更具体地,本发明涉及一种用于将使用低密度奇偶校验码(LDPC码)进行编码的代码解码的解码设备和解码方法、及其程序。

背景技术
近年来,例如,在诸如移动通信和深空通信的通信领域、以及诸如陆地波或卫星数字广播的广播领域中的研究进步显著。与此情形一起出现的是,积极地开展了对用于使纠错编码和解码高效的编码理论的研究。
作为代码性能的理论极限,由所谓的Shannon(C.E.Shannon)信道编码定理表示的Shannon极限是众所周知的。出于开发显示出接近此Shannon极限的性能的代码的目的,已经开展了对编码理论的研究。例如,近年来,作为显示出接近Shannon极限的性能的编码方法,开发了通常被称为“增强编码”的技术,如并行级联卷积码(PCCC)和串行级联卷积码(SCCC)。此外,尽管开发了此增强编码,但是作为人们知道了长时间的编码方法,低密度奇偶校验码(以下称为“LDPC码”)吸引了注意力。
在R.G.Gallager的“Low Density Parity Check Codes(低密度奇偶校验码)”(Cambridge,MassachusettsM.I.T.Press,1963)中首次提出了LDPC码。随后,在D.J.C.Mackay的“Good error correcting codes based on very sparsematrices(基于极稀疏矩阵的良好纠错码)”(提交给IEEE Trans.Inf.Theory,IT-45,pp.399-431,1999)以及M.G.Luby、M.Mitzenmacher、M.A.Shokrollachi和D.A.Spielman的“Analysis of low density codes and improved designs usingirregular graphs(低密度码的分析和使用不规则图形的改进设计)”(Proceedingsof ACM Symposium on Theory of Computing,pp.249-258,1998)中,LDPC再次吸引了注意力。
根据这个新近的研究,人们开始知道,对于LDPC码,与增强编码相似,当码长度增大时,可以获得接近Shannon极限的性能。此外,由于LDPC码具有最小长度与码长度成比例的性质,因此,它们具有这样的优点块错误概率特性良好,并且,在增强编码的解码特性中观察到的所谓的错误平底(error floor)现象几乎不出现。
现在,将在下面详细描述这样的LDPC码。LDPC码是线性码,并且不总是是二维的,但是在这里,假设LDPC是二维的来给出描述。
LDPC码的最大特征是定义LDPC码的奇偶校验矩阵是稀疏的。这里,以矩阵元素中1的数目非常小这样的方式来形成稀疏矩阵。如果将稀疏校验矩阵表示为H,则其示例包括这样的校验矩阵,其中,如图1所示,每列的Hamming(汉明)权重(1的数目;权重)为“3”,而每行的Hamming权重为“6”。
如上所述,由每行和每列的Hamming权重固定的校验矩阵H定义的LDPC码被称为“规则LDPC码”。另一方面,由每行和每列的Hamming权重不固定的校验矩阵H定义的LDPC码被称为“不规则LDPC码”。
通过在校验矩阵H的基础上产生生成(generation)矩阵G,并且将此生成矩阵G乘以二维信息消息而生成码字,来实现利用这种LDPC码的编码。更具体地说,用于利用LDPC码进行编码的编码设备计算生成矩阵G,其中,对于校验矩阵H的转置矩阵HT,等式GHT=0成立。这里,当生成矩阵G为k×n矩阵时,编码设备将生成矩阵G乘以k位信息消息(向量u),并生成n位码字c(=uG)。在将值为“0”的码位映射到“+1”、而将值为“1”的码位映射到“-1”的情况下,传送由此编码设备生成的码字,并且,通过预定通信信道在接收侧接收它。
另一方面,可以通过消息传递算法、利用所谓Tanner图上的信念传播(belief propagation)来进行LDPC码的解码,其中,所述Tanner图由可变节点(也称为消息节点)和校验节点构成;此消息传递算法由Gallager提出,并作为“概率解码”而为人所知。在下文中,可变节点和校验节点在适当的地方也被简称为节点。
然而,在概率解码中,由于在节点之间交换的消息是实数值,因此,为了找到解析解,有必要查明采取连续值的消息的概率分布。这使得包括大难度的分析成为必要。因此,Gallager提出了算法A或算法B作为用于将LDPC码解码的算法。
通常,根据图2中示出的过程来进行LDPC码的解码。这里,将接收值表示为U0(u0i),将从校验节点输出的消息表示为uj,而将从可变节点输出的消息表示为vi。这里,所述消息是实数值,使得用所谓的对数似然比来代表该值的“0”相似性(likeness)。
在LDPC码的解码中,最初,如图2所示,在步骤S11中,接收值U0(u0i)被接收,消息uj被初始化为0,并且,将整数作为迭代过程的计数器的变量k被初始化为0。然后,过程进行到步骤S12。在步骤S12,基于所接收值U0(u0i),通过进行式(1)中示出的计算来确定消息vi。此外,基于此消息vi,通过进行式(2)中示出的计算来确定消息uj。
这里,式(1)和(2)中的dv和dc分别为指示校验矩阵H的垂直方向(行的方向)和水平方向(列的方向)上的1的数目的参数,并且,可以按照所希望的来选择它们。例如,在(3,6)码的情况中,dv=3并且dc=6。
在式(1)和(2)的每一个的计算中,由于从输出消息的棱(edge)输入的消息不被用作和或积计算的参数,因此,和或积计算的范围是从1至dv-1、或者从1至dc-1。实际上,通过事先创建式3中示出的函数R(v1,v2)的表,并且如图4所示连续地(递归地)使用此表,来进行式(2)中示出的计算,其中,所述函数R(v1,v2)由关于两个输入v1和v2的一个输出来定义。
x=2tanh-1{tanh(v1/2)tanh(v2/2)}=R(v1,v2)(3) 此外,在步骤S12,将变量k增加1,然后,过程进行到步骤S13。在步骤S13,确定变量k是否大于或等于迭代解码的预定数目N。当在步骤S13确定变量k不大于或等于N时,过程返回步骤S12,并且再次进行同样的处理。
当在步骤S13确定变量k大于或等于N时,过程进行到步骤S14,在该处,确定并输出作为进行式(5)中示出的计算的结果而最后输出的、充当解码结果的消息v。这完成了LDPC码的解码过程。
这里,与式(1)的计算不同,使用来自连接到可变节点的所有棱的输入消息来进行式(5)的计算。
在这样的LDPC码解码过程中,例如,在(3,6)码的情况中,如图3所示,在节点之间交换消息。在图3中由“=”表示的节点(可变节点)中,进行式(1)中示出的计算。在由“+”表示的节点(校验节点)中,进行式(2)中示出的计算。具体地说,在算法A中,消息被形成为二维;在由“+”表示的节点中,进行dc-1个输入消息的异或计算;而在由“=”表示的节点中,对于所接收值R,当所有dv-1个输入消息是不同的位值时,符号被取反并被输出。
此外,近年来,开展了对LDPC码解码的实现方法的研究。在描述实现方法之前,以示意的形式来描述LDPC码的解码。
图4示出了(3,6)LDPC码(编码率为1/2,码长度为12)的奇偶校验矩阵示例。可以通过使用Tanner图来写出LDPC码的奇偶校验矩阵,如图5所示。在图5中,由“+”表示的节点是校验节点,而由“=”表示的节点是可变节点。校验节点和可变节点分别对应于奇偶校验矩阵的行和列。校验节点和可变节点之间的连接线是棱,并且对应于校验矩阵的“1”。也就是说,当校验矩阵的第j行及第i列的元素为1时,在图5中,从顶部起第i个可变节点(“=”的节点)和从顶部起第j个校验节点(“+”的节点)通过棱而互相连接。棱表示对应于可变节点的符号位具有对应于校验节点的约束条件。图5示出了图4的校验矩阵的Tanner图。
在作为将LDPC码解码的方法的和积算法中,重复进行可变节点的计算和校验节点的计算。
在可变节点中,如图6所示,进行式(1)的计算。也就是说,在图6中,通过使用来自连接到可变节点的其余棱的消息u1和u2、以及所接收信息u0i,来计算对应于要计算的棱的消息v1。对应于其它棱的消息也被类似地计算。
在描述校验节点计算之前,通过使用式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)来重写式(2),如式(6)所示,其中,sign(x)在x≥0时为1,而在x<0时为-1。
此外,在x≥0的情况中,当做出定义

时,由于

因此,可将式(6)写为式(7)。
在校验节点中,如图7所示,进行式(7)的计算。也就是说,在图7中,通过使用来自连接到校验节点的其余棱的消息v1、v2、v3、v4和v5,来计算对应于将为之进行计算的棱的消息uj。对应于其它棱的消息也被类似地计算。
函数

也可以被表示为

并且,当x>0时,

当函数



被作为硬件实现时,存在这样的情况,其中,使用LUT(查找表)来实现它们,并且,它们两者均为相同的LUT。
当和积算法被作为硬件实现时,有必要利用适当的电路规模并以适当的操作频率,来重复进行由式(1)表示的可变节点计算和由式(7)表示的校验节点计算。
作为实现解码设备的示例,首先给出对在这样的情况中的实现方法的描述,其中,通过简单地按顺序依次进行每个节点的计算来进行解码(完全连续解码)。
这里,例如,假设将由图8的30(行)×90(列)校验矩阵代表的码(编码率为2/3,并且码长度为90)解码。图8的校验矩阵的1的数目为269;因此,在Tanner图中,棱的数目变为269。这里,在图8的校验矩阵中,利用“.”来代表0。
图9示出了用于将LDPC码解码一次的解码设备的结构示例。
在图9的解码设备中,对于该设备以其操作的每个时钟(clock),计算对应于一条棱的消息。
更具体地说,图9的解码设备包括两个用于棱的存储器100和102、一个校验节点计算器101、一个可变节点计算器103、一个用于接收的存储器104、和一个控制部件105。
在图9的解码设备中,从用于棱的存储器100或102依次读取消息数据,并且,通过使用该消息数据,计算对应于所希望的棱的消息数据。然后,将通过该计算确定的消息数据依次存储在后级的用于棱的存储器100或102中。当要进行迭代解码时,通过连续级联多个用于将LDPC码解码一次的图9的解码设备、或者通过重复使用图9的解码设备,来实现迭代解码。这里,例如,假设连接多个图9的解码设备。
用于棱的存储器100按照一定的顺序存储从前级解码设备的可变节点计算器103(未示出)提供的消息D100,该顺序是后级的校验节点计算器101读取它们的顺序。然后,在校验节点计算阶段,用于棱的存储器100将消息D100作为消息输出D101而以它们被存储的顺序提供给校验节点计算器101。
基于从控制部件105提供的控制信号D106,校验节点计算器101通过使用从用于棱的存储器100提供的消息D101、根据式(7)进行计算,并将通过该计算确定的消息D102提供给后级的用于棱的存储器102。
用于棱的存储器102按照一定的顺序存储从前级的校验节点计算器101提供的消息D102,该顺序是后级的可变节点计算器103读取它们的顺序。然后,在可变节点计算阶段,用于棱的存储器102将消息D102作为消息D103并以存储它们的顺序提供给可变节点计算器103。
此外,将控制信号D107从控制部件105提供给可变节点计算器103,并且,将所接收数据D104从用于接收的存储器104提供给可变节点计算器103。基于控制信号D107,可变节点计算器103通过使用从用于棱的存储器100提供的消息D103、和从用于接收的存储器100提供的所接收数据D104,根据式(1)进行计算,并将作为计算结果而获得的消息D105提供给后级的解码设备的用于棱的存储器100(未示出)。
在用于接收的存储器104中,存储所接收的被转换为LDPC码的数据(LDPC码)。控制部件105将用于控制可变节点计算的控制信号D106、和用于控制校验节点计算的控制信号D107分别提供给校验节点计算器101和可变节点计算器103。当所有棱的消息均被存储在用于棱的存储器100中时,控制部件105将控制信号D106提供给校验节点计算器101,而当所有棱的消息均被存储在用于棱的存储器102中时,控制部件105将控制信号D107提供给可变节点计算器103。
图10示出了图9的用于依次进行校验节点计算的校验节点计算器101的结构示例。
在图10中,通过假设每个消息和符号位一起被量化为总共6位,来示出校验节点计算器101。此外,在图10中,进行由图8的校验矩阵代表的LDPC码的校验节点计算。此外,将时钟ck提供给图10的校验节点计算器101,此时钟ck被提供给必要的块。每个块与时钟ck同步地进行处理。
例如,基于从控制部件105提供的1位控制信号D106,图10的校验节点计算器101通过使用从用于棱的存储器100依次读取的消息D101来进行根据式(7)的计算。
更具体地说,在校验节点计算器101中,依次读取来自对应于校验矩阵的每一列的可变节点的6位消息D101(消息vi),作为其较低阶(lower-order)位的绝对值D122(|vi|)被提供给LUT 121,而作为其最高位的符号位D121被分别提供给EXOR电路129和FIFO(先入先出)存储器133。此外,将控制信号D106从控制部件105提供给校验节点计算器101,并且,将该控制信号D106提供给选择器124和选择器131。
LUT 121读取对绝对值D122(|vi|)进行式(7)中的

的计算所得的5位计算结果D123

并将其提供给加法器122和FIFO存储器127。
加法器122通过将计算结果D123

和存储在寄存器123中的9位值D124加到一起来累计(integrate)计算结果D123

并将由此获得的9位累计值再次存储在寄存器123中。当累计了来自校验矩阵一行上的所有棱的消息D101的绝对值D122(|vi|)的计算结果时,寄存器123被复位。
当依次读取校验矩阵一行上的消息D101,并且,将对于一行的计算结果D123的累计值存储在寄存器123中时,从控制部件105提供的控制信号D106从0改变为1。例如,当行权重为“9”时,控制信号D106在第1至第8个时钟为“0”,而在第9个时钟为“1”。
当控制信号D106为“1”时,选择器124选择存储在寄存器123中的值,即从来自校验矩阵一行上所有棱的消息D101(消息vi)确定的

所得的9位值D124

从i=1至i=dc),并将该值作为值D125输出到寄存器125,由此来存储它。寄存器125将所存储的值D125作为9位值D126提供给选择器124和加法器126。当控制信号D106为“0”时,选择器124选择从寄存器125提供的值D126,并将该值输出到选择器124,由此来再次存储它。也就是说,寄存器125将先前累计的

提供给选择器124和加法器126,直到累计了从来自校验矩阵一行上所有棱的消息D101(消息vi)确定的

为止。
另一方面,FIFO存储器127将LUT 121输出的计算结果D123

延迟,直到从寄存器125输出新值D126

从i=1至i=dc)为止,并将计算结果D123作为5位值D127提供给减法器126。减法器126从寄存器125提供的值D126中减去从FIFO存储器127提供的值D127,并将减法结果作为5位相减值D128提供给LUT 128。也就是说,减法器126从由来自校验矩阵一行上所有棱的消息D101(消息vi)所确定的

的累计值中,减去由来自要确定的棱的消息D101(消息vi)所确定的

并将相减值

从i=1至i=dc-1)作为相减值D128提供给LUT 128。
LUT 128输出对相减值D128

从i=1至i=dc-1)进行式(7)中的

的计算所得的5位计算结果D129
在进行上述处理的同时,EXOR电路129通过计算存储在寄存器130中的1位值D131和符号位D121的异或,来进行符号位的乘法,并将1位乘法结果D130再次存储在寄存器130中。当来自校验矩阵一行上所有棱的消息D101的符号位D121均被乘入时,寄存器130被复位。
当存储了将来自校验矩阵一行上所有棱的消息D101的符号位D121相乘所得的乘法结果D130(Пsign(vi),从i=1至i=dc)时,从控制部件105提供的控制信号D106从“0”改变为“1”。
当控制信号D106为“1”时,选择器131选择存储在寄存器130中的值,即,将来自校验矩阵一行上所有棱的消息D101的符号位D121相乘所得的值D131(Пsign(vi),从i=1至i=dc),并将该值作为1位值D133输出到寄存器132,由此来存储它。寄存器132将所存储的值D132作为1位值D132提供给选择器131和EXOR电路134。当控制信号D106为“0”时,选择器131选择从寄存器132提供的值D133,并将该值输出到寄存器132,由此来再次存储它。也就是说,寄存器132将先前存储的值提供给选择器131和EXOR电路134,直到来自校验矩阵一行上所有棱的消息D101(消息vi)的符号位D121被乘入为止。
另一方面,FIFO存储器133将符号位D121延迟,直到新值D133(Пsign(vi),从i=1至i=dc)被从寄存器132提供给EXOR电路134为止,并且,其将该结果作为1位值D134提供给EXOR电路134。EXOR电路134通过计算从寄存器132提供的值D133和从FIFO存储器133提供的值D134的异或,来将值D133除以值D134,并将1位除法结果作为相除值D135输出。也就是说,EXOR电路134将来自校验矩阵一行上所有棱的消息D101的符号位D121(sign(|vi|))的相乘值除以来自要确定的棱的消息D101的符号位D121(sign(|vi|)),并将相除值(Пsign(vi),从i=1至i=dc-1)作为相除值D135输出。
在校验节点计算器101中,将总共6位作为消息D102(消息uj)输出,其中,从LUT 128输出的5位计算结果D129是较低阶的5位,而从EXOR电路134输出的1位相除值D135是最高阶位。
如上所述,在校验节点计算器101中,进行式(7)的计算,并确定消息uj。
由于图8的校验矩阵的行权重最大值为9,也就是说,由于提供给校验节点的消息的最大数目为9,因此,校验节点计算器101具有用于将9个消息

延迟的FIFO存储器127和FIFO存储器133。当要计算权重小于9的行的消息时,FIFO存储器127和FIFO存储器133中的延迟量减小为行权重的值。
图11示出了图9的用于依次进行可变节点计算的可变节点计算器103的结构示例。
在图11中,通过假设每个消息和符号位一起被量化为总共6位来示出可变节点计算器103。在图11中,进行由图8的校验矩阵代表的LDPC码的可变节点计算。此外,将时钟ck提供给图11的可变节点计算器103,并将该时钟ck被提供给必要的块。每个块与时钟ck同步地进行处理。
例如,基于从控制部件105提供的1位控制信号D107,图11的可变节点计算器103通过使用从用于棱的存储器102依次读取的消息D103、和从用于接收的存储器104读取的接收数据D104,来进行根据式(1)的计算。
更具体地说,在可变节点计算器103中,依次读取来自对应于校验矩阵每一行的校验节点的6位消息D103(消息uj),并将消息D103提供给加法器151和FIFO存储器155。此外,在可变节点计算器103中,从用于接收的存储器104依次读取6位接收数据D104,并将其提供给加法器156。此外,将控制信号D107从控制部件105提供给可变节点计算器103,并将该控制信号D107提供给选择器153。
加法器151通过将消息D103(消息uj)和存储在寄存器152中的9位值D151加到一起来累计消息D103,并将9位累计值再次存储在寄存器152中。当累计了来自校验矩阵一行上所有棱的消息D103时,寄存器152被复位。
当依次读取来自校验矩阵一行上所有棱的消息D103、并且将累计一列的消息D103所得的值存储在寄存器152中时,从控制部件105提供的控制信号D107从“0”改变为“1”。例如,当列权重为“5”时,控制信号D107在第1时钟到第4时钟为“0”,而在第5时钟为“0”。
当控制信号D107为“1”时,选择器153选择存储在寄存器152中的值,即,累计来自校验矩阵一行上所有棱的消息D103(消息uj)所得的9位值D151(∑uj,从j=1至j=dv),并将该值输出到寄存器154,由此来存储它。寄存器154将所存储的值D151作为9位值D152提供给选择器153和加法-减法器156。当控制信号D107为“0”时,选择器153选择从寄存器154提供的值D152,并将该值输出到寄存器154,由此来再次存储它。也就是说,寄存器154将先前累计的值提供给选择器153和加法-减法器156,直到累计了来自校验矩阵一行上所有棱的消息D103(消息uj)为止。
另一方面,FIFO存储器155将来自校验节点的消息D103延迟,直到从寄存器154输出新值D152(∑uj,从j=1至j=dv)为止,并将消息D103作为6位值D153提供给加法-减法器156。加法-减法器156从寄存器154提供的值D152中减去从FIFO存储器155提供的值D153。也就是说,加法-减法器156从来自校验矩阵一行上所有棱的消息D103(消息uj)的累计值中减去来自要确定的棱的消息uj,并确定相减值(∑uj,从j=1至j=dv-1)。此外,加法-减法器156将从用于接收的存储器104提供的接收数据D104加到相减值(∑uj,从j=1至dv-1)上,并将由此获得的6位值作为消息D105(消息vi)输出。
如上所述,在可变节点计算器103中,进行式(1)的计算,并确定消息vi。
由于图8的校验矩阵的列权重最大值为5,也就是说,由于提供给可变节点的消息的最大数目为5,因此,可变节点计算器103具有用于延迟5个消息(uj)的FIFO存储器155。当要计算权重小于5的列的消息时,FIFO存储器155中的延迟量减小为列权重的值。
在图9的解码设备中,根据校验矩阵的权重来从控制部件105提供控制信号。根据图9的解码设备,只要用于棱的存储器100和102、以及校验节点计算器101和可变节点计算器103的FIFO存储器127、133和155的容量足够,就可以通过只改变控制信号来将各种校验矩阵的LDPC码解码。
尽管未在图9的解码设备中示出,但是在解码的最后一级,进行式(5)的计算而不是式(1)的可变节点计算,并将计算结果作为最终解码结果输出。
当通过重复使用图9的解码设备来将LDPC码解码时,交替进行校验节点计算和可变节点计算。也就是说,在图9的解码设备中,可变节点计算器103通过使用校验节点计算器101的校验节点计算结果来进行可变节点计算,而校验节点计算器101通过使用可变节点计算器103的可变节点计算结果来进行校验节点计算。
因此,对于使用图8的具有269条棱的校验矩阵来进行一次解码,需要269×2=538个时钟。例如,为了进行50次迭代解码,当接收到将90个码(接收数据)设为一帧的一个帧时,538×50=26900个时钟操作是必需的,其中所述一个帧是码长度,因而,近似为接收频率的大约300(≈26900/90)倍高的高速操作变成必需的。如果假设接收频率为数十MHz,则需要GHz或更高速度的操作。
此外,例如,在级联50个图9的解码设备以将LDPC码解码的情况中,可同时进行多个可变节点计算和校验节点计算。例如,当进行第一帧的可变节点计算时,进行第二帧的校验节点计算,并且进行第三帧的可变节点计算。在此情况中,当接收到90个码时,由于需要计算269条棱,因此解码设备需要以近似为接收频率的3(≈269/90)倍高的频率来操作,因而很有可能实现。然而,在此情况中,简单地说,电路规模变为图9的解码设备的50倍大。
接下来,给出对在通过同时进行所有节点计算来进行解码(完全并行解码)的情况中解码设备实现方法的描述。
例如,在C.Howland和A.Blanksby的“Parallel Decoing Architectures forLow Density Parity Check Codes(低密度奇偶校验码的并行解码架构)”(Symposium on Circuits and Systems,2001)中描述了此实现方法。
图12A至12C示出了用于将由图8的校验矩阵代表的码(编码率为2/3,并且码长度为90)解码的解码设备示例的结构。图12A示出了解码设备的总体结构。图12B示出了图12A的解码设备的由虚线B环绕的图中上部的详细结构。图12C示出了图12A的解码设备的由虚线C环绕的图中下部的详细结构。
图12A至12C的解码设备包括一个用于接收的存储器205、两个棱互换装置200和203、两个用于棱的存储器202和206、由30个校验节点计算器2011至20130组成的校验节点计算器201、和由90个可变节点计算器2041至20490组成的可变节点计算器204。
在图12A至12C的解码设备中,从用于棱的存储器202或206同时读取对应于269条棱的所有消息数据,并且,通过使用该消息数据,计算对应于这269条棱的新消息数据。此外,将作为计算结果确定的所有新消息数据同时存储在后级的用于棱的存储器206或202中。通过重复使用图12A至12C的解码设备,实现了迭代解码。现在,将在下面详细描述每个部件。
用于棱的存储器206同时存储来自前级的可变节点计算器2041至20490的所有消息D2061至D20690,在下一个时钟(下一个时钟的时刻)读取消息D2061至D20690作为消息D2071至D20790,并将它们作为消息D200(D2001至D20090)提供给后级的棱互换装置200。棱互换装置200根据图8的校验矩阵来重新排列(互换)从用于棱的存储器206提供的消息D2001至D20090的顺序,并将它们作为D2011至D20130提供给校验节点计算器2011至20130。
校验节点计算器2011至20130通过使用从棱互换装置200提供的消息D2011至D20130来进行根据式(7)的计算,并将作为计算结果而获得的消息D2021至D20230提供给用于棱的存储器202。
用于棱的存储器202同时存储从前级的校验节点计算器2011至20130提供的所有消息D2021至D20230,并且在下一个时刻将所有消息D2021至D20230作为消息D2031至D20330提供给后级的棱互换装置203。
棱互换装置203根据图8的校验矩阵来重新排列从用于棱的存储器202提供的消息D2031至D20330的顺序,并将它们作为消息D2041至D20490提供给可变节点计算器2041至20490。
可变节点计算器2041至20490通过使用从棱互换装置203提供的消息D2041至D20490、和从用于接收的存储器205提供的接收数据D2051至D20590,来进行根据式(1)的计算,并将作为计算结果而获得的消息D2061至D20690提供给后级的用于棱的存储器206。
图13示出了图12A至图12C的用于同时进行校验节点计算的校验节点计算器201m(m=1、2、...、30)的结构示例。
在图13的校验节点计算器201m中,与图10的校验节点计算器101相似,进行式(7)的校验节点计算,并且同时对所有棱进行校验节点计算。
更具体地说,在图13的校验节点计算器201m中,同时读取从棱互换装置200提供的、来自对应于图8的校验矩阵每一行的可变节点的所有消息D2211至D2219(vi),并且,将作为其各自的较低阶5位的绝对值D2221至D2229(|vi|)分别提供给LUT 2211至2219。将作为消息D2211至D2219(vi)的最高阶位的1位符号位D2231至D2239分别提供给EXOR电路2261至2269,并且还将其提供给EXOR电路225。
LUT 2211至2219读取分别对绝对值D2221至D2229(|vi|)分别进行式(7)中的

计算所得的5位计算结果D2241至D2249

并将它们提供给各个加法器2231至2239。LUT 2211至2219将计算结果D2241至D2249

提供给加法器222。
加法器222对计算结果D2241至D2249

的值的总和(对于一行的计算结果的总和)进行计算,并将9位计算结果D225

从i=1至i=9)提供给减法器2231至2239。减法器2231至2239分别从计算结果D225中减去计算结果D2241至D2249

并将5位相减值D2271至D2279提供给LUT2241至2249。也就是说,减法器2231至2239从由来自所有棱的消息vi所确定的

的累计值中减去从由来自要确定的棱的消息vi所确定的

并将相减值D2271至D2279

从i=1至i=8)分别提供给LUT 2241至2249。LUT 2241至2249读取对相减值D2271至D2279进行式(7)中的

计算所得的5位计算结果D2281至D2289,并输出它们。
另一方面,EXOR电路225通过计算所有符号位D2231至D2239的异或,来进行符号位D2231至D2239的相乘,并且将1位相乘值D226(对于一行的符号位的相乘值(Пsign(vi),从i=1至i=9))提供给各个EXOR电路2261至2269。通过分别计算相乘值D226和符号位D2231至D2239的异或,EXOR电路2261至2269确定将相乘值D226分别除以符号位D2231至D2239所得的1位相除值D2291至D2299(Пsign(vi),从i=1至i=8),并输出它们。
在校验节点计算器201m中,将总共6位输出为作为校验节点计算结果而获得的消息D2301至D2309,其中,使从LUT 2241至2249输出的5位计算结果D2281至D2289各自成为5个较低阶位,而使从EXOR电路2261至2269输出的相除值D2291至D2299各自成为最高阶位。
以上述方式,在校验节点计算器201m中,进行式(7)的计算,并确定消息uj。
在图13中,通过假设将每个消息和符号位一起被量化为总共6位来示出校验节点计算器201m。图13的电路对应于一个校验节点。对于图8中将在这里处理的校验矩阵,由于存在30行的校验节点,因此图12A至12C的解码设备具有30个图13中示出的校验节点计算器201m,其中,30是校验矩阵的行的数目。
在图13的校验节点计算器201m中,可以同时计算9个消息。对于图8中将在这里处理的校验矩阵的行权重,第一行的权重为8,而第二行的权重为9,也就是说,存在一种提供给校验节点的消息数目为8的情况,而存在9种消息数目为9的情况。因此,校验节点计算器2011具有能够类似于图13的电路而同时计算8个消息的电路结构,并且,按照与图13的电路相同的方式来配置其余的校验节点计算器2012至20130。
图14示出了图12A至12C的用于同时进行可变节点计算的可变节点计算器204p(p=1、2、...、90)的结构示例。
在图14的可变节点计算器204p中,与图11的可变节点计算器103相似,进行式(1)的可变节点计算,并且同时对所有棱进行可变节点计算。
更具体地说,在图14的可变节点计算器204p中,同时读取从棱互换装置203提供的、来自对应于校验矩阵每一行的校验节点的所有6位消息D2511至D2515(消息uj),并将这些消息提供给各个加法器2521至2525,并且还将其提供给加法器251。此外,将接收数据D271从用于接收的存储器205提供给可变节点计算器204p,并将接收数据D271提供给加法-减法器2521至2525。
加法器251累计所有消息D2511至D2515(消息uj),并将9位累计值D252(对于一行的消息的总和值(∑uj,从j=1至j=5))提供给加法-减法器2521至2525。加法-减法器2521至2525分别从相加值D252中减去消息D2511至D2515(消息uj)。也就是说,加法-减法器2521至2525分别从来自所有棱的消息uj的累计值D252中,减去来自要确定的棱的消息D2511至D2515(消息uj),并确定相减值(∑uj,从j=1至j=4)。
此外,加法-减法器2521至2525将接收数据D271(u0i)加到相减值(∑uj,从j=1至j=4)上,并将6位相加值D2531至2535作为可变节点计算结果输出。
以上述方式,在可变节点计算器204p中进行式(1)的计算,并确定消息vi。
在图14中,通过假设将每个消息和符号位一起量化为6位来示出可变节点计算器204p。图14的电路对应于一个可变节点。对于将在这里处理的图8中的校验矩阵,由于存在90列的可变节点,因此图12A至12C的解码设备具有90个图14中示出的电路,其中,90为校验矩阵的列的数目。
在图14的可变节点计算器204p中,有可能同时计算5个消息。将在此处理的图8中的校验矩阵具有权重分别为5、3、2和1的15、45、29和1列。因此,可变节点计算器2041至20490中的15个可变节点计算器具有与图14的电路结构相同的电路结构。其余的45、29和1个可变节点计算器具有能够类似于图14的电路而同时计算3、2、和1个消息的电路结构。
尽管也没有在图12A至12C中的解码设备中示出,但是,与图9的情况相似,在解码的最后阶段,进行式(5)的计算而不是式(1)的可变节点计算,并将计算结果作为最终解码结果输出。
根据图12A至12C的解码设备,有可能在一个时钟同时计算对应于269条棱的所有消息。
当通过重复使用图12A至12C的解码设备来进行解码时,交替进行校验节点计算和可变节点计算,并且可以以两个时钟来进行一次解码。因此,例如,为了进行50次解码,当接收到其中码长度为90的码为一帧的接收数据时,解码设备需要以2×50=100个时钟操作,这样,可以使用与接收频率近似相同的操作频率。一般而言,由于LDPC码的码长度高达数千到数万,因此,如果使用图12A至12C的解码设备,则可以显著增大解码数目,并且可以期望改善纠错性能。
然而,在图12A至12C的解码设备中,由于并行进行对应于Tanner图的所有棱的消息计算,因此电路规模与码长度成比例增大。当图12A至12C的解码设备被配置为用于进行具有特定校验矩阵的、特定码长度和特定编码率的LDPC码解码的设备时,该解码设备难以进行具有另一校验矩阵的、另一码长度和另一编码率的LDPC码的解码。也就是说,与图9的解码设备不同,图12A至12C的解码设备难以应付各种码的解码,即使只改变控制信号也是如此,并且,对码的依赖性高。
除了图9和图12A至12C的解码设备以外,例如,在E.Yeo、P.Pakzad、B.Nikolic和V.Anantharam的“VLSI Architectures for Iterative Decoders inMagnetic Recording Channels(用于磁记录信道中的迭代解码器的VLSI架构)”(IEEE Transactions on Magnetics,Vol.37,No.2,2001年3月)中,描述了用于以4个消息而不是1个消息或全部消息为单位来同时计算消息的实现方法。在此情况中,通常,存在这样的问题不易避免从存储器不同地址的同时读出、或者到存储器不同地址的同时写入,并且,存储器访问控制困难。
此外,还提出了通过逼近和积算法来实现的方法。然而,在此方法中,致使出现性能恶化。对于将和积算法作为硬件来实现,如上所述,存在以下方法依次连续进行对应于棱的消息计算(校验节点计算和位节点计算)的方法;并行(完全并行)进行所有消息的计算的方法;以及以若干计算为单位而并行(并行)进行消息计算的方法。
然而,在依次进行对应于棱的消息计算的方法中,需要高操作频率。相应地,作为用于增大吞吐量的方法,用于以管线(pipeline)结构来布置设备的方法是公知的。在此情况中,电路规模,具体地说,存储器(的容量)增大。
在并行进行所有消息的计算的方法中,用于逻辑的电路规模增大,并且对码的依赖性高。
在以若干计算为单位来并行进行消息的计算的方法中,存储器访问控制困难。


发明内容
考虑到这样的情况而形成了本发明。本发明的目的是将操作频率限制在足够可行的范围内,同时限制用于逻辑和存储器的电路规模,并且能够容易地控制存储器访问。
提供了一种用于将低密度奇偶校验(LDPC)码解码的解码设备,所述LDPC码通过由多个子矩阵组成的校验矩阵来表示,所述子矩阵包括P×P单位矩阵、准单位矩阵、移位矩阵、和矩阵、以及P×P 0矩阵,其中准单位矩阵是具有用0代替了一个或更多1的单位矩阵,移位矩阵是被循环移位的单位矩阵或准单位矩阵,和矩阵是所述单位矩阵、所述准单位矩阵、和所述移位矩阵中的两个或更多的和,所述解码设备包括第一计算部件,用于同时进行用于将所述LDPC码解码的P个校验节点计算;第二计算部件,用于同时进行用于将所述LDPC码解码的P个可变节点计算;和消息存储部件,用于读取和写入对应于P条棱的消息数据,所述消息数据是作为所述P校验节点计算或者所述P可变节点计算的结果而获得的;其中,对于其权重为2或更大的子矩阵,所述消息存储部件将对应于P条棱的消息存储在相同地址处,所述P条棱属于相加起来形成其权重为2或更大的所述子矩阵的每个单位矩阵、准单位矩阵和/或移位矩阵。
当把以下矩阵用作子矩阵时,利用多个子矩阵的组合来代表LDPC码的校验矩阵,所述矩阵为(P×P)单位矩阵;准单位矩阵,其中用0代替了作为单位矩阵元素的一个或更多1;移位矩阵,其中单位矩阵或准单位矩阵被循环移位;和矩阵,其为单位矩阵、准单位矩阵、和移位矩阵的两个或更多的和;或(P×P)0矩阵,本发明的解码设备包括第一计算部件,用于同时进行p个用于将LDPC码解码的校验节点计算;和第二计算部件,用于同时进行p个用于将LDPC码解码的可变节点计算。
第一计算部件可具有p个用于进行校验节点计算的校验节点计算器,并且,第二计算部件可具有p个用于进行可变节点计算的可变节点计算器。
解码设备还可以包括消息存储部件,用于同时读取和写入对应于p条棱的消息数据,其中,作为p个校验节点计算或p个可变节点计算的结果而获得所述消息数据。
消息存储部件可以存储对应于棱的消息数据,其中,在校验节点计算期间,以在行的方向上将校验矩阵的1充填(pack)得更加紧密这样的方式来读取所述消息数据。
消息存储部件可以存储对应于棱的消息数据,其中,在可变节点计算期间,以在列的方向上将校验矩阵的1充填得更加紧密这样的方式来读取所述消息数据。
当以权重为1的单位矩阵、准单位矩阵、或移位矩阵的和的形式来表示代表校验矩阵的子矩阵中权重为2或更大的子矩阵时,消息存储部件可以在相同地址处存储对应于p条棱的消息,其中,所述p条棱属于权重为1的单位矩阵、准单位矩阵、或移位矩阵。
消息存储部件可以包括行数/p个FIFO和列数/p个FIFO,并且所述行数/p个FIFO和列数/p个FIFO各自分别具有对应于校验矩阵的行权重和列权重的多个字。
消息存储部件可以包括RAM(随机存取存储器),并且该RAM可以按照将消息数据充填得更加紧密这样的方式而按照读出顺序存储消息数据,并按照存储位置顺序读出该消息数据。
解码设备还可以包括接收信息存储部件,用于存储所接收的LDPC码信息,以及同时读取p个接收信息。
接收信息存储部件可以按照这样的方式来存储所接收信息,该方式为可按照对于可变节点计算所必需的顺序来读取所接收信息。
解码设备还可以包括重新排列部件,用于重新排列作为p个校验节点计算或p个可变节点计算的结果而获得的消息。
重新排列部件可以包括桶式移位器(barrel shifter)。
第一计算部件和第二计算部件可以确定对应于p条棱的消息。
第一计算部件可以进行所述p个校验节点计算和p个可变节点计算的一些,而第二计算部件可以进行所述p个可变节点计算的其它一些。
第一计算部件可以包括用于进行所述p个校验节点计算和p个可变节点计算的一些的p个计算器,而第二计算部件可以包括用于进行所述p个可变节点计算的其它一些的p个计算器。
解码设备还可以包括第一解码中间(in-progress)结果存储部件,用于同时读取和写入对应于p条棱的第一解码中间结果,其中,第一计算部件通过进行所述p个校验节点计算和p个可变节点计算的一些来获得所述第一解码中间结果。
第一解码中间结果存储部件可以按照在行方向上将校验矩阵的1充填得更加紧密这样的方式来存储对应于棱的第一解码中间结果,其中,当进行所述p个可变节点计算的其它一些时读取所述第一解码中间结果。
第一解码中间结果存储部件可以是两个单端口RAM(随机存取存储器)。
所述两个单端口RAM可以以第一解码中间结果的p为单位来交替存储第一解码中间结果。
所述两个单端口RAM(随机存取存储器)每一个都可以读取存储在相同地址处的第一解码中间结果。
当以权重为1的单位矩阵、准单位矩阵、或移位矩阵的和的形式来表示代表校验矩阵的子矩阵中的权重为2或更大的子矩阵时,第一解码中间结果存储部件可以在相同地址处存储对应于p条棱的第一解码中间结果,其中,所述p条棱属于权重为1的单位矩阵、准单位矩阵、或移位矩阵。
解码设备还可以包括第二解码中间结果存储部件,用于同时读取和写入对应于p条棱的第二解码中间结果,其中,第二计算部件通过进行所述p个可变节点计算的其它一些来获得所述第二解码中间结果。
解码设备还可以包括接收信息存储部件,用于存储所接收的LDPC码信息,并且同时读取p个接收信息。
接收信息存储部件可以按照这样的方式来存储所接收信息,该方式为可按照对于所述p个可变节点计算的其它一些所必需的顺序来读取所接收信息。
解码设备还可以包括重新排列部件,用于重新排列由第一计算部件通过进行所述p个校验节点计算和p个可变节点计算的一些而获得的第一解码中间结果、或者由第二计算部件通过进行所述p个可变节点计算的其它一些而获得的第二解码中间结果。
重新排列部件可以包括桶式移位器。
第一计算部件可以进行所述p个校验节点计算的一些,而第二计算部件可以进行所述p个校验节点计算的其它一些、和p个可变节点计算。
第一计算部件可以包括用于进行所述p个校验节点计算的一些的p个计算器,而第二计算部件可以包括用于进行所述p个校验节点计算的其它一些、和p个可变节点计算的p个计算器。
解码设备还可以包括第一解码中间结果存储部件,用于同时读取和写入对应于p条棱的第一解码中间结果,其中,第一计算部件通过进行所述p个校验节点计算的一些来获得所述第一解码中间结果。
解码设备还可以包括第二解码中间结果存储部件,用于同时读取和写入对应于p条棱的第二解码中间结果,其中,第二计算部件通过进行所述p个校验节点计算的其它一些和p个可变节点计算来获得所述第二解码中间结果。
第二解码中间结果存储部件可以存储对应于棱的第二解码中间结果,其中,当进行所述p个校验节点计算的其它一些和p个可变节点计算的时候,按照在列方向上将校验矩阵的1充填得更加紧密这样的方式来读取所述第二解码中间结果。
第二解码中间结果存储部件可以是两个单端口RAM(随机存取存储器)。
所述两个单端口RAM可以以第二解码中间结果的p为单位来交替存储第二解码中间结果。
所述两个单端口RAM(随机存取存储器)每一个都可以读取存储在相同地址处的第二解码中间结果。
当以权重为1的单位矩阵、准单位矩阵、或移位矩阵的和的形式来表示代表校验矩阵的子矩阵中权重为2或更大的子矩阵时,第二解码中间结果存储部件可以在相同地址处存储对应于p条棱的第二解码中间结果,其中,所述p条棱属于权重为1的单位矩阵、准单位矩阵、或移位矩阵。
解码设备还可以包括接收信息存储部件,用于存储所接收的LDPC码信息,并同时读取p个接收信息。
在根据权利要求36的解码设备中,接收信息存储部件可以按照这样的方式来存储所接收信息,该方式为可按照对于所述p个校验节点计算的其它一些、和p个可变节点计算所必需的顺序来读取所接收信息。
解码设备还可以包括重新排列部件,用于重新排列由第一计算部件通过进行所述p个校验节点计算的一些而获得的第一解码中间结果、或由第二计算部件通过进行所述p个校验节点计算的其它一些、和p个可变节点计算而获得的第二解码中间结果。
重新排列部件可以包括桶式移位器。
当把以下矩阵用作子矩阵时,利用多个子矩阵的组合来代表LDPC码的校验矩阵,其中所述矩阵为(P×P)单位矩阵;准单位矩阵,其中用0代替了作为单位矩阵元素的一个或更多1;移位矩阵,其中单位矩阵或准单位矩阵被循环移位;和矩阵,其为单位矩阵、准单位矩阵、和移位矩阵的两个或更多的和;或(P×P)0矩阵;本发明的解码方法包括第一计算步骤,同时进行p个用于将LDPC码解码的校验节点计算;以及第二计算步骤,同时进行p个用于将LDPC码解码的可变节点计算。
本发明的程序包括第一计算步骤,同时进行p个用于将LDPC码解码的校验节点计算;以及第二计算步骤,同时进行p个用于将LDPC码解码的可变节点计算。
在本发明中,当把以下矩阵用作子矩阵时,利用多个子矩阵的组合来代表LDPC码的校验矩阵,其中所述矩阵为(P×P)单位矩阵;准单位矩阵,其中用0代替了作为单位矩阵元素的一个或更多1;移位矩阵,其中单位矩阵或准单位矩阵被循环移位;和矩阵,其为单位矩阵、准单位矩阵、和移位矩阵的两个或更多的和;或(P×P)0矩阵,同时进行p个用于将LDPC码解码的校验节点计算,并且同时进行p个用于将LDPC码解码的可变节点计算。



图1图示LDPC码的校验矩阵H。
图2是图示用于将LDPC码解码的过程的流程图。
图3图示消息流。
图4示出LDPC码的校验矩阵示例。
图5示出校验矩阵的Tanner图。
图6示出可变节点。
图7示出校验节点。
图8示出LDPC码的校验矩阵示例。
图9是示出用于依次进行节点计算的LDPC码解码设备的结构示例的方框图。
图10是示出用于依次计算消息的校验节点计算器的结构示例的方框图。
图11是示出用于依次计算消息的可变节点计算器的结构示例的方框图。
图12A是示出用于同时进行所有节点计算的LDPC码解码设备的结构示例的方框图。
图12B是示出用于同时进行所有节点计算的LDPC码解码设备的结构示例的方框图。
图12C是示出用于同时进行所有节点计算的LDPC码解码设备的结构示例的方框图。
图13是示出用于同时计算消息的校验节点计算器的结构示例的方框图。
图14是示出用于同时计算消息的可变节点计算器的结构示例的方框图。
图15示出被分为5×5单元的矩阵。
图16A是示出应用本发明的解码设备实施例的结构示例的方框图。
图16B是示出应用本发明的解码设备实施例的结构示例的方框图。
图16C是示出应用本发明的解码设备实施例的结构示例的方框图。
图17是图示图16A至16C的解码设备的解码过程的流程图。
图18是示出应用本发明的解码设备实施例的结构示例的方框图。
图19是示出校验节点计算器的结构示例的方框图。
图20是示出可变节点计算器的结构示例的方框图。
图21是示出图18的计算器结构示例的方框图。
图22是示出图18的计算器结构示例的方框图。
图23是示出图18的用于存储解码中间结果的存储器结构示例的方框图。
图24是图示图18的用于存储解码中间结果的RAM操作的时序图。
图25是图示图18的解码设备的解码过程的流程图。
图26是示出应用本发明的解码设备实施例的结构示例的方框图。
图27是示出校验节点计算器的结构示例的方框图。
图28是示出可变节点计算器的结构示例的方框图。
图29是示出图26的计算器的结构示例的方框图。
图30是示出图26的计算器的结构示例的方框图。
图31是示出图26的用于存储解码中间结果的存储器结构示例的方框图。
图32是图示图31的用于存储解码中间结果的RAM操作的时序图。
图33是图示图26的解码设备的解码过程的流程图。
图34是示出应用本发明的计算机实施例的结构示例的方框图。

具体实施例方式 下面,将参考附图来详细描述应用本发明的特定实施例。
图15示出了被分为5×5矩阵单元的30×9校验矩阵的示例。图15的校验矩阵与图8中示出的校验矩阵相同。
在图15中,用以下矩阵的组合来代表校验矩阵5×5单位矩阵;用0代替了单位矩阵的元素-一个或更多1的矩阵(在下文中,在适当的地方称为“准单位矩阵”);单位矩阵或准单位矩阵被循环移位的矩阵(在下文中,在适当的地方称为“移位矩阵”);单位矩阵、准单位矩阵和移位矩阵的两个或更多(多个)的和(在下文中,在适当的地方称为“和矩阵”);和5×5的0矩阵。由图15的校验矩阵代表的LDPC码具有2/3的编码率和值为9的码长度。
可以说,图15的校验矩阵由5×5矩阵、准单位矩阵、移位矩阵、和矩阵、和0矩阵形成。因此,在下文中,将在适当的地方把形成校验矩阵的这些5×5矩阵称为“子矩阵”。
图16A至16C示出了用于将由图15的校验矩阵代表的LDPC码解码的解码设备实施例的结构示例。图16A至16C是示出这种解码设备实施例的结构示例的方框图。图16A示出了解码设备的总体结构。图16B示出了图16A的解码设备的被虚线B环绕的图中左部的详细结构。图16C示出了图16A的解码设备的被虚线C环绕的图中右部的详细结构。
图16A至16C的解码设备300包括开关310和315、由6个FIFO 3111至3116组成的棱数据存储器311、选择器312、由5个校验节点计算器3131至3135组成的校验节点计算器313、两个循环移位电路314和320、由18个FIFO 3161至31618组成的棱数据存储器316、选择器317、用于存储所接收信息的接收数据存储器318、可变节点计算器319、和控制部件321。
在详细描述解码设备300的每个部件之前,首先将描述把数据存储在棱数据存储器311和316中的方法。
棱数据存储器311包括6个FIFO 3111至3116,该数目是将校验矩阵的行数目30除以行数目5所得。FIFO 311y(y=1、2、...、6)以这样的方式形成可以同时读取或写入对应于5条棱的消息,其中,5为子矩阵的行和列的数目。其长度(级的数目)为9,这是校验矩阵的行方向上的1的最大数目(Hamming权重)。
在FIFO 3111中,以对于每一行,在水平方向上(在列方向上)将1充填得更加紧密这样的方式(以忽略0的方式)来存储对应于从图15的校验矩阵的第1行至第5行的1的位置的数据。也就是说,如果将第j行第i列表示为(j,i),则在FIFO 3111的第1元素(第一级)中,存储对应于从校验矩阵的(1,1)至(5,5)的5×5单位矩阵的1的位置的数据。在第2元素中,存储对应于从校验矩阵的(1,21)至(5,25)的移位矩阵(将5×5单位矩阵向右循环移动3的移位矩阵)的1的位置的数据,该移位矩阵是校验矩阵的子矩阵。此外,在第3至第8元素中,类似地,按照这样的方式来存储数据,以便对应于校验矩阵的子矩阵。在第9元素中,存储对应于从校验矩阵的(1,86)至(5,90)的移位矩阵(用0代替了5×5单位矩阵中第一行的1、并将该单位矩阵向左循环移动1的移位矩阵)的1的位置的数据。这里,在从校验矩阵的(1,86)至(5,90)的移位矩阵中,由于第一行中没有1,因此仅仅对FIFO 3111的第一行,元素数目变为8,而对于其余的行,元素数目变为9。
在FIFO 3112中,存储对应于从图15的校验矩阵的第6行至第10行的1的位置的数据。也就是说,在FIFO 3112的第1元素中,存储对应于形成校验矩阵的从(6,1)至(10,5)的和矩阵(该和矩阵为第一移位矩阵和第二移位矩阵的和,其中,在第一移位矩阵中,5×5单位矩阵被向右循环移动1,在第二移位矩阵中,5×5单位矩阵被向右循环移动2)的第一移位矩阵的1的位置的数据。在第二元素中,存储对应于形成校验矩阵的从(6,1)至(10,5)的和矩阵的第二移位矩阵的1的位置的数据。
更具体地说,对于权重为2或更大的子矩阵,当用以下矩阵的两个或更多的和的形式来代表子矩阵时,将对应于权重为1的单位矩阵、准单位矩阵、或移位矩阵的1的位置的数据(对应于属于单位矩阵、和矩阵、或移位矩阵的棱的消息)存储在相同地址(FIFO 3111至3116中的相同FIFO)处,其中,所述矩阵为权重为1的(P×P)单位矩阵;准单位矩阵,其中,用0代替了作为单位矩阵的元素的一个或更多1;以及移位矩阵,其中,单位矩阵或准单位矩阵被循环移位。
随后,对于第3至第9元素,以这样的方式来存储数据,以便对应于校验矩阵。对于所有的行,FIFO 3112的元素数目为9。
类似地,对于FIFO 3113至3116,以这样的方式来存储数据,以便对应于校验矩阵,并且,FIFO 3113至3116的每一个的长度为9。
用于存储棱数据的存储器316由18个FIFO 3161至31618构成,该数目为校验矩阵的行数目90除以子矩阵的行数目5所得。以这样的方式来构成FIFO 316x(x=1、2、...、18),该方式为可以同时读取或写入对应于5条棱的消息,该数目为子矩阵的行数目和列数目。
在FIFO 3161中,以对于每一列、在垂直方向上(在行方向)上将1充填得更加紧密这样的方式(以忽略0的方式)来存储对应于图15的校验矩阵从第1列至第5列的1的位置的数据。也就是说,在FIFO 3161的第一元素(第一级)中,存储对应于校验矩阵从(1,1)至(5,5)的5×5单位矩阵的1的位置的数据。在第二元素中,存储对应于形成校验矩阵的(6,1)至(10,5)的和矩阵(该和矩阵为第一移位矩阵和第二移位矩阵的和,其中,在第一移位矩阵中,5×5单位矩阵被向右循环移动1,在第二移位矩阵中,5×5单位矩阵被向右循环移动2)的第一移位矩阵的1的位置的数据。在第3元素中,存储对应于形成校验矩阵的(6,1)至(10,5)的和矩阵的第二移位矩阵的1的位置的数据。
更具体地说,对于权重为2或更大的子矩阵,当用以下矩阵的两个或更多的和的形式来代表子矩阵时,将对应于权重为1的单位矩阵、准单位矩阵、或移位矩阵的1的位置的数据(对应于属于单位矩阵、准单位矩阵、或移位矩阵的棱的消息)存储在相同地址(FIFO 3161至31618中的相同FIFO)处,其中,所述矩阵为权重为1的(P×P)单位矩阵;准单位矩阵,其中,用0代替了单位矩阵的元素1;以及移位矩阵,其中,单位矩阵或准单位矩阵被循环移位。
随后,对于第4和第5元素,同样以这样的方式来存储数据,以便对应于校验矩阵。FIFO 3161的元素数目(级的数目)为5,该数目是校验矩阵从第1列至第5列的行方向上的1的最大数目(Hamming权重)。
此外,对于FIFO 3162和3163,类似地,以这样的方式来存储数据,以便对应于校验矩阵,并且,其长度(级的数目)的每一个为5。此外,对于FIFO3164至31612,类似地,以这样的方式来存储数据,以便对应于校验矩阵,并且其长度的每一个为3。此外,对于FIFO 31613至31618,类似地,以这样的方式来存储数据,以便对应于校验矩阵,并且其长度的每一个为2。然而,由于FIFO 31618的第1元素对应于校验矩阵的(1,86)至(5,90),并且在第5列(校验矩阵的(1,90)至(5,90))中没有1,因此,不存储数据。
现在,将在下面详细给出对图16A至16C的解码设备300的每个部件的操作的描述。将5个消息(数据)D319从循环移位电路320提供给开关310。此外,将控制信号D320从控制部件321提供给开关310,其中,控制信号D320指示关于消息(数据)属于校验矩阵的哪一行的信息(矩阵数据)。基于控制信号D320,从FIFO 3111至3116中选择用于存储5个消息(数据)D319的FIFO,并将这5个消息数据D319按顺序集体存储在所选择的FIFO中。
棱数据存储器311包括6个FIFO 3111至3116。在棱数据存储器311的FIFO 3111至3116中,从开关310按顺序集体提供5个消息D319,并且FIFO3111至3116按顺序(同时)集体存储这5个消息D319。此外,当要读取数据时,棱数据存储器311从FIFO 3111中顺次读取这5个消息(数据)D3111,并将它们提供给后级的选择器312。在从FIFO 3111读取消息D3111完成之后,棱数据存储器311还分别从FIFO 3111至3116顺次读取消息D3111至D3116,并将它们提供给选择器312。
将选择信号D321从控制部件321提供给选择器312,并且,还将5个消息(数据)D3111至D3116从棱数据存储器311提供给选择器312,其中,选择信号D321指示从FIFO 3111至3116中选择从中读取消息数据的FIFO(当前从中读取了数据的FIFO)。选择器312根据选择信号D321而从FIFO 3111至3116中选择当前从中读取了数据的FIFO,并将从所选择的FIFO提供的5个消息数据作为消息D312提供给校验节点计算部件313。
校验节点计算部件313包括5个校验节点计算器3131至3135。将5个消息D312通过选择器312提供给校验节点计算部件313,并且将消息D312单独提供给校验节点计算器3131至3135的每一个。此外,将控制信号D322从控制部件321提供给校验节点计算器313,并将控制信号D322提供给校验节点计算器3131至3135。校验节点计算器3131至3135通过使用消息D312来同时进行根据式(7)的计算,并且,作为计算结果而确定对应于5条棱的消息D313。校验节点计算部件313通过校验节点计算器3131至3135将作为计算结果获得的5个消息D313提供给循环移位电路314。
从控制部件321提供给校验节点计算器313的控制信号D322对应于图10的控制信号D106。校验节点计算部件3131至3135被各自按照与图10中示出的校验节点计算器101相同的方式配置。
将在校验节点计算部件313中计算的5个消息D313提供给循环移位电路314。此外,将控制信号D323从控制部件321提供给循环移位电路314,其中,控制信号D323指示关于这样的事实的信息(矩阵数据),该事实为作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果而连接对应于消息D313的棱。循环移位电路314根据控制信号D323将5个消息D313循环移位,并将结果作为消息D314提供给开关315。
将控制信号D324提供给开关315,并且还将消息D314从循环移位电路314提供给开关315,其中,控制信号D324指示关于从循环移位电路314提供的5个消息(数据)D314属于校验矩阵的哪一列的信息。基于控制信号D324,开关315从FIFO 3161至31618中选择用于存储消息D314的FIFO,并按顺序集体提供这5个消息D314。
棱数据存储器316包括18个FIFO 3161至31618。将5个消息D314按顺序(同时)从开关315集体提供给棱数据存储器316的FIFO 3161至31618,并且,FIFO 3161至31618按顺序集体存储这5个消息D314。此外,当要读取数据时,用于存储棱数据的存储器316从FIFO 3161中顺次读取5个消息D3151,并将它们提供给后级的选择器317。在从FIFO 3161读取数据完成之后,用于存储棱数据的存储器316还从FIFO 3161至31618顺次读取消息D3152至D31318,并将它们提供给选择器317。
将选择信号D325从控制部件321提供给选择器317,并且,还将消息数据D3151至D31318从棱数据存储器316提供给选择器317,其中,选择信号D325指示从FIFO 3161至31618中选择用于读取消息数据的FIFO(当前从中读取了数据的FIFO)。基于选择信号D325,选择器317从FIFO 3161至31618中选择当前从中读取了数据的FIFO,并将从所选择的FIFO提供的5个消息数据作为消息D316提供给可变节点计算部件319和上述用于进行式(5)的计算的块(未示出)。
另一方面,用于所接收数据的存储器318已经从通过通信信道接收的信息计算了接收LLR(对数似然比)。将5个所计算的接收LLR作为所接收数据D317(LDPC码)集体(同时)提供给可变节点计算部件319和用于接收式(5)的计算的块(未示出)。用于所接收数据的存储器318按照对于可变节点计算部件319的可变节点计算所必需的顺序来读取所接收数据D317。
可变节点计算部件319包括5个可变节点计算器3191至3195。将5个消息D316通过选择器317提供给可变节点计算部件319,并将消息D316单独提供给可变节点计算器3191至3195的每一个。此外,将5个所接收数据D317从用于所接收数据的存储器318提供给可变节点计算部件319,并且将所接收数据D317单独提供给可变节点计算器3191至3195的每一个。此外,将控制信号D326从控制部件321提供给可变节点计算部件319,并将控制信号D326提供给可变节点计算器3191至3195。
可变节点计算器3191至3195通过使用消息D316和所接收数据D317来进行根据式(1)的计算,并且,作为计算结果而确定对应于5条棱的消息D318。可变节点计算部件319将作为可变节点计算器3191至3195的结果获得的5个消息D318提供给循环移位电路320。
这里,从控制部件521提供给可变节点计算部件319的控制信号D326对应于图11的控制信号D107,并且,可变节点计算器3191至3195被各自按照与图11的可变节点计算器103相同的方式配置。
将5个消息D318从可变节点计算部件319提供给循环移位电路320。此外,将控制信号D327从控制部件321提供给循环移位电路320,该控制信号D327指示关于这样的事实的信息(矩阵数据),该事实为作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果而连接对应于消息D318的棱。基于控制信号D327,循环移位电路320进行重新排列消息D327的循环移位,并将结果作为消息D319提供给开关310。
控制部件321将选择信号D320提供给开关320,并将选择信号D321提供给选择器312,以便分别控制它们。控制部件321将控制信号D322提供给校验节点计算部件313,将控制信号D323提供给循环移位电路314,并将控制信号D324提供给开关315,以便分别控制它们。此外,控制部件321将选择信号D325提供给选择器317,将控制信号D326提供给可变节点计算部件319,并将控制信号D327提供给循环移位电路320,以便分别控制它们。
作为将上述操作循环一次的结果,可以进行一次LDPC码的解码。在图16A至16C的解码设备将LDPC码解码了预定次数之后,解码设备300根据式(5)来确定最终解码结果(未示出),并输出它。
对于缺少棱数据(对应于棱的消息)的部分,在存储在存储器中期间(当把数据存储在棱数据存储器311和316中时),不存储消息。在节点计算期间(在校验节点计算部件313处的校验节点计算期间和在可变节点计算部件319处的可变节点计算期间),不进行计算。
图17是图示图16A至16C的解码设备300的解码过程的流程图。当把所接收的要解码的数据存储在用于所接收数据的存储器318中时,开始此过程。
在步骤S31中,可变节点计算部件319进行可变节点计算。
更具体地说,将5个消息D316(消息uj)通过选择器317提供给可变节点计算部件319。也就是说,棱数据存储器316从FIFO 3161中顺次读取在步骤S39(将在以后描述)存储的5个消息D3161,并且,随后,还从FIFO 3162至31618顺次读取消息D3162至D31618,并将它们提供给选择器317。
将选择信号D307从控制部件321提供给选择器317,其中,选择信号D307指示从FIFO 3161至31618中选择将从中读取消息(数据)的FIFO(当前从中读取了数据的FIFO),此外,将消息数据D3161至D31618从棱数据存储器316提供给选择器317。基于选择信号D307,选择器317从FIFO 3161至31618中选择当前从中读取了数据的FIFO,并将从所选择的FIFO提供的5个消息数据作为消息D316提供给可变节点计算部件319。
当尚未对从存储器306提供的所接收数据D309进行校验节点计算、并且消息D304没有被存储在棱数据存储器316中时,可变节点计算部件319将消息uj设置为用于可变节点计算的初始值。
将5个所接收数据D309(所接收值u0i)从用于所接收数据的存储器318提供给可变节点计算部件319,并且,将所接收数据D309单独提供给可变节点计算器3191至3195的每一个。此外,将控制信号D315从控制部件321提供给可变节点计算部件319,并且将控制信号D315提供给可变节点计算器3191至3195。
基于控制信号D315,可变节点计算器3191至3195通过使用消息D316和所接收数据D309来同时进行根据式(1)的计算,并且作为计算结果而确定5个消息D319。
也就是说,由控制部件321提供给可变节点计算部件319的控制信号D315对应于参考上述图11而描述的控制信号D107。可变节点计算器3191至3195的每一个根据控制信号D309而通过选择器317从棱数据存储器316读取一个必需的消息D314(D316),并且,还分别读取从用于所接收数据的存储器318提供的5个所接收数据D309,进行可变节点计算,并且作为计算结果而同时确定5个消息D319。
在步骤S31的处理之后,该过程进行到步骤S32,在该步骤处,可变节点计算部件319将作为可变节点计算器3191至3195的可变节点计算结果而获得的5个消息D319(消息vi)提供给循环移位电路320。然后,该过程进行到步骤S33。
在步骤S33,循环移位电路320将从可变节点计算部件319提供的5个消息D318循环移位(重新排列)。
更具体地说,将消息D318从可变节点计算部件319提供给循环移位电路320。此外,将控制信号D327从控制部件321提供给循环移位电路320,其中,控制信号D327指示关于这样的事实的信息(矩阵数据),该事实为作为例如将形成校验矩阵基础的单位矩阵循环移位了多少次的结果而连接接对应于消息D318的棱。基于控制信号D327,循环移位电路320将5个消息D327循环移位,并将结果作为消息D319提供给开关310。
在步骤S33的处理之后,该过程进行到步骤S34,在该步骤处,开关310将从循环移位电路320提供的5个消息D319提供给棱数据存储器311。
更具体地说,将消息(数据)304从循环移位电路320提供给开关310,此外,将控制信号D312提供给开关310,其中,控制信号D312指示关于消息D304属于校验矩阵的哪一行的信息。基于控制信号D312,开关310从FIFO3001至3006中选择用于存储消息D304的FIFO,并顺次将5个消息数据D304集体存储在所选择的FIFO中。
然后,棱数据存储器311的FIFO 3001至30018按顺序集体存储从开关310提供的5个消息数据D304。
在步骤S34的处理之后,该过程进行到步骤S35,在该步骤处,控制部件321确定可变节点计算部件319是否计算了棱的总数目的消息。当确定没有计算棱的总数目的消息时,该过程返回步骤S31,并且再次进行上述处理。
另一方面,当在步骤S35确定可变节点计算部件319计算了棱的总数目的消息时,该过程进行到步骤S36,在该步骤处,校验节点计算部件313进行校验节点计算。
更具体地说,将5个消息D302通过选择器312提供给校验节点计算部件313。也就是说,棱数据存储器311从FIFO 3111顺次读取在步骤S34存储的5个消息D3111(消息vi),随后,还从FIFO 3112至3116顺次读取消息数据D3112至D3116,并将它提供给选择器312。
将选择信号D321从控制部件321提供给选择器312,该控制信号D321指示从FIFO 3111至3116中选择用于读取消息数据的FIFO(当前从中读取了数据的FIFO),此外,将消息数据D3111至D3116从棱数据存储器311提供给选择器312。基于选择信号D321,选择器301选择当前从中读取了数据的FIFO,并将从所选择的FIFO提供的5个消息数据作为消息D311提供给校验节点计算部件313。
此外,将控制信号D322从控制部件321提供给校验节点计算部件313。基于控制信号D322,校验节点计算部件313的校验节点计算器3131至3135通过使用消息D302而同时进行根据式(7)的校验节点计算,并且,作为计算结果而确定5个消息D303(消息uj)。
更具体地说,由控制部件321提供给校验节点计算部件313的控制信号D322对应于上述图10中的控制信号D106。基于控制信号D322,当校验节点计算器3131至3135通过选择器312从棱数据存储器311读取一个必需的消息D311(D312)时,它们每一个都进行校验节点计算,并且作为计算的结果而同时确定5个消息D313。
在步骤S37的处理之后,该过程进行到步骤S38,在该步骤处,校验节点计算部件313将作为校验节点计算结果获得的5个消息D313输出到循环移位电路314。然后,该过程进行到步骤S38。
在步骤S38,循环移位电路314将从校验节点计算部件313提供的5个消息D313循环移位。
更具体地说,将消息D313从校验节点计算部件313提供给循环移位电路314。此外,将控制信号D314从控制部件321提供给循环移位电路314,该控制信号D314指示关于这样的事实的信息(矩阵数据),该事实为作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果而连接对应于消息D313的棱。基于控制信号D314,循环移位电路314将5个消息D313循环移位,并将结果作为消息D304提供给开关315。
在步骤S38的处理之后,该过程进行到步骤S39,在该步骤,开关315将从循环移位电路314提供的5个消息D304存储在棱数据存储器316中。
更具体地说,将5个消息(数据)D304从循环移位电路314提供给开关316,此外,将控制信号D324从循环移位电路314提供给开关316,该控制信号D324指示关于消息(数据)D304属于校验矩阵的哪一行的信息。基于控制信号D324,开关316从棱数据存储器316的FIFO 3161至31618中选择用于存储消息D304的FIFO,并按顺序将5个消息数据D304集体提供给所选择的FIFO。
然后,棱数据存储器316的FIFO 3161至31618按顺序集体存储从开关316提供的5个消息数据D304。
在步骤S39的处理之后,该过程进行到步骤S40,在该步骤,控制部件321确定校验节点计算部件313是否计算了棱的总数目的消息。当确定还没有计算棱的总数目的消息时,该过程返回步骤S36,并且再次进行上述处理。
另一方面,当在步骤S40控制部件321确定校验节点计算部件313已经计算了棱的总数目的消息时,该过程完成。
当解码设备300将图17的解码过程重复进行所述解码数目、并且校验节点计算部件313进行最终校验节点计算时,将作为校验节点计算结果获得的消息D304从棱数据存储器316通过选择器317提供给上述用于进行式(5)的计算的块(未示出)。还将所接收数据D309从用于所接收数据的存储器306提供给所述块(未示出)。所述块(未示出)通过使用消息D304和所接收数据D309来进行式(5)的计算,并将计算结果作为最终解码结果输出。
在上面的描述中,尽管使用FIFO来存储棱数据(尽管利用FIFO来形成棱数据存储器311和316),但是可以使用RAM来代替FIFO。在该情况中,对于RAM,需要可同时读取p个棱信息(对应于棱的消息)的位宽度和棱的总数目/p个字。对于写入到RAM中,在校验矩阵信息的基础上确定当下一次读取将要写入的数据时在哪个位置读取该数据,并将数据写入到那个位置。对于从RAM读取,从该地址的开始顺次读取数据。也就是说,在RAM中,按照这样的顺序来存储消息数据,其中,以将消息数据充填得更加紧密这样的方式来读取该消息数据,并且,按照存储位置顺序来读取消息数据。如果使用RAM来代替FIFO,则选择器312和317不是必备的。
当FIFO和RAM的物理位宽度不够时,通过使用多个RAM来提供相同的控制信号,可以将这些在逻辑上假设为一个RAM。
在图16A至16C的解码设备300中,通过使用作为校验节点计算结果而获得的消息uj来进行可变节点计算,并且,通过使用作为该计算结果而获得的消息vi来进行校验节点计算。因此,需要用于存储所有消息uj和所有消息vi的棱数据存储器311和棱数据存储器316,其中,消息uj对应于作为校验节点计算结果而获得的棱,而消息vi对应于作为可变节点计算结果而获得的棱。也就是说,在解码设备中,需要存储多达校验矩阵H的1的数目的2倍的消息所需的容量的存储器。
因此,为了进一步减小解码设备的电路规模,下面描述当与图16A至16C的解码设备300相比较时存储器容量被进一步减小的解码设备。
图18是示出应用本发明的、用于将由图15的校验矩阵代表的LDPC码解码的解码设备的另一实施例的结构示例的方框图。
在图18的解码设备400中,图16A和16B的棱数据存储器311被形成为用于存储解码中间结果的存储器40,其具有比棱数据存储器311的容量小的容量。
解码设备400包括用于存储解码中间结果的存储器400、循环移位电路411、由5个计算器4121至4125组成的计算部件412、用于存储解码中间结果的存储器413、循环移位电路414、由5个计算器4151至4155组成的计算部件415、用于接收的存储器416、和控制部件417。
下面,将参考图19至图22给出对图18的计算部件412的计算器4121至4125和计算部件415的计算器4151至4155、图10的校验节点计算器101、以及图11的可变节点计算器103之间关系的描述。
图19和图20分别与示出校验节点计算器101的图10和示出可变节点计算器103的图11相同。图21示出了计算部件412k(k=1、2、...、5)的结构示例。图22示出了计算部件415k(k=1、2、...、5)的结构示例。
在图18的解码设备400中,计算器412k进行校验节点计算的一些和可变节点计算,并且计算部件415k进行可变节点计算的其它一些,而不是计算器412k进行校验节点计算,并且计算部件415k进行可变节点计算。
更具体地说,图21的计算器412k由块A’和块B’构成。块A’被按照与图19的校验节点计算器101的用于进行校验节点计算的块A相同的方式配置。块B’被按照与块B相同的方式配置,其中,块B是图20的可变节点计算器103的一部分,用于从对应于校验矩阵每一列的所有棱的消息uj的累计值中减去对应于要确定的棱的消息uj。另一方面,图22的计算器415k由块C’构成。块C’被按照与块C相同的方式配置,其中,块C是图20的可变节点计算器103的另一部分,用于累计对应于校验矩阵每一列的棱的消息uj,并将所接收值u0i加到累计值上。
图21的计算器412k将块A和块B的计算结果,即进行校验节点计算和可变节点计算的一些所得的解码中间结果uj,提供给用于存储解码中间结果的存储器413。图22的计算器415k将进行可变节点计算的其它一些所得的解码中间结果v提供给用于存储解码中间结果的存储器410。
因此,图18的解码设备400有可能通过交替进行计算器412k的计算和计算器415k的计算来进行校验节点计算和可变节点计算,以便进行解码。
在图22的计算器412k中,由于从存储在用于存储解码中间结果的存储器413中的解码中间结果v中减去对应于要确定的棱的解码中间结果uj,其中,作为块B中计算器415k通过使用对应于要确定的棱的解码中间结果uj而进行的计算的结果,来获得所述解码中间结果v,因此,不需要图20的FIFO存储器155。
接下来,给出对通过使用多个等式而由计算器412k进行的计算和由计算器415k进行的计算的描述。
更具体地说,计算部件412根据上面描述的式(7)和下面描述的式(8)进行第一计算,并将作为第一计算的结果的解码中间结果uj提供给用于存储解码中间结果的存储器410,由此来存储它们。计算部件415根据上述式(5)进行第二计算,并将作为第二计算结果的解码中间结果v提供给用于存储解码中间结果的存储器410,由此来存储它们。
vi=v-udv ......(8) 式(8)的udv代表来自这样的棱的校验节点计算的中间结果(这里,是指校验节点计算结果本身),其中,将对所述棱确定校验矩阵H的第i列的消息。也就是说,udv是对应于要确定的棱的解码中间结果。
更具体的说,作为根据上述式(5)的第二计算的结果而获得的解码中间结果v是这样的将所接收的值u0i和校验节点计算的解码中间结果uj乘到一起,其中,所述解码中间结果uj来自对应于校验矩阵H第i列的每一行的1的所有棱。用于上述式(7)的值vi变为这样的从作为根据式(5)的第二计算结果获得的解码中间结果v中,减去校验节点计算的解码中间结果uj中的校验节点计算的解码中间结果udv,其中,解码中间结果uj来自对应于校验矩阵H的第i列的每一行的1的棱,而解码中间结果udv来自要确定其消息的棱。也就是说,用来确定用于式(7)的计算的值vi的式(1)的计算是结合了上述式(5)和式(8)的计算。
因此,在解码设备400中,交替进行由计算部件412进行的根据式(7)和式(8)的第一计算、和由计算部件415进行的根据式(5)的第二计算,并且,计算部件415将最后的第二计算的结果作为解码结果输出,使得有可能进行LDPC码的重复解码。
这里,将根据式(7)和式(8)的第一计算结果描述为解码中间结果uj,并且,这些解码中间结果uj等于式(7)的校验节点计算结果uj。
由于从第二计算确定的式(5)的v是这样得到的把来自将确定其消息的棱的校验节点计算结果uj加到式(1)的可变节点计算结果vi上,因此,对于校验矩阵H的一列(一个可变节点),只确定一个v。
在解码设备400中,计算部件412通过使用对应于校验矩阵H的列的解码中间结果v(第二解码中间结果)来进行第一计算,其中,所述解码中间结果v是由计算部件415进行的第二计算的结果,并且,把作为计算结果获得的校验节点计算的解码中间结果uj(第一解码中间结果)存储在用于存储解码中间结果的存储器413中,其中,所述解码中间结果uj来自对应于校验矩阵H的第i列的每一行的1的棱的消息(由每个校验节点输出到每个棱的消息)的棱。因此,用于存储解码中间结果的存储器413的容量变为这样的值,其类似于将校验矩阵的1的数目(棱的总数目)和量化位的数目乘到一起。另一方面,计算部件415通过使用对应于校验矩阵H的第i列的每一行的1的解码中间结果uj、和所接收值u0i来进行第二计算,并将作为计算结果获得的对应于第i列的解码中间结果v存储在用于存储解码中间结果的存储器410中,其中,所述解码中间结果uj是由计算部件412进行的第一计算的结果。因此,用于存储解码中间结果的存储器410所必需的容量变为这样的值,该值为将校验矩阵的列的数目和量化位的数目的量化位的数目乘到一起,其中,校验矩阵列的数目小于校验矩阵的1的数目,即LDPC码的码长度。
因此,在用于将校验矩阵中的1进行稀疏的LDPC码解码的解码设备400中,当与图16A和16B的棱数据存储器311相比较时,用于存储解码中间结果的存储器410的存储容量可被减小。因此,可以减小解码设备400的电路规模。
此外,在解码设备400中,由于计算部件415进行根据式(5)的第二计算,因此解码设备400不需要具有图16A至16C的解码设备300中用于进行式(5)的计算的块(未示出),其中,式(5)用于计算最终解码结果。因而,当与图16A至16C的解码设备300相比较时,图18的解码设备的电路规模可被减小。
现在,将详细地给出对图18的解码设备400的每个部件操作的描述。
将对应于校验矩阵的5列的5个解码中间结果D415从计算部件415提供给用于存储解码中间结果的存储器410,其中,这5个解码中间结果是由计算部件415进行的第二计算的结果。用于存储解码中间结果的存储器410从第一地址开始按顺序存储从计算部件415提供的这5个解码中间结果D415。
更具体地说,在用于存储解码中间结果的存储器410的第一地址处,存储对应于校验矩阵的列的解码中间结果中从第1列至第5列的解码中间结果v。类似地,在第二地址处,存储从第6列至第10列的解码中间结果v,并且在第三地址处,存储从第11列至第15列的解码中间结果。随后,类似地,将从第16列至第90列的解码中间结果以5个结果的单位存储在第4地址至第18地址处,并且,将总共90个解码中间结果v存储在用于存储解码中间结果的存储器410中。因此,用于存储解码中间结果的存储器410的字的数目变为18,即,图15的校验矩阵H的列的数目(LDPC码的码长度)90除以被同时读取和写入的解码中间结果的数目5。
用于存储解码中间结果的存储器410从已被存储的解码中间结果D415中同时读取将由后级的计算部件412确定的解码中间结果uj的5个解码中间结果v,并将它们作为解码中间结果D410提供给循环移位电路411,其中,所述5个解码中间结果v是校验矩阵H的对应行中的“1”。
用于存储解码中间结果的存储器410由例如能够同时读取和写入5个解码中间结果的单端口RAM构成。由于在用于存储解码中间结果的存储器410中存储对应于这样的列的解码中间结果v,其中,通过计算部件415的第二计算来进行该列的计算,因此,存储在用于存储解码中间结果的存储器410中的数据量,即,用于存储解码中间结果的存储器410所必需的存储容量,是解码中间结果的量化位数目和校验矩阵H的列数目(LDPC码的码长度)的相乘值。
将5个解码中间结果D410从用于存储解码中间结果的存储器410提供给循环移位电路411。此外,将对应于解码中间结果D410的控制信号D619从控制部件417提供给循环移位电路411,其中,控制信号D619指示关于这样的事实的信息(矩阵数据),该事实为作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果来排列校验矩阵的1。循环移位电路611在控制信号D619的基础上进行将所述5个解码结果D410重新排列的循环移位,并将结果作为解码中间结果D411提供给计算部件412。
计算部件412包括5个计算器4121至4125。将作为计算部件415的第二计算结果获得的5个解码中间结果D411(第二解码中间结果)v从循环移位电路411提供给计算部件412。此外,将先前作为计算器4121至4125进行的第一计算的结果而获得的5个解码中间结果D413(第一解码中间结果)uj从用于存储解码中间结果的存储器413提供给计算部件412。将所述5个解码中间结果D411和5个解码中间结果D413提供给计算器4121至4125的每一个。此外,将控制信号D419从控制部件417提供给计算部件412,并将控制信号D419提供给计算器4121至4125。控制信号D419是5个计算器4121至4125共有的信号。
计算器4121至4125通过使用解码中间结果D411和解码中间结果D413来进行根据式(7)和式(8)的第一计算,并确定解码中间结果D412(vi)。计算部件412将对应于校验矩阵的5个1的5个解码中间结果D412提供给用于存储解码中间结果的存储器413,其中,作为计算器4121至4125进行的计算结果而获得所述5个解码中间结果D412。
用于存储解码中间结果的存储器413由例如能够同时读取和写入5个解码中间结果的两个单端口RAM构成。将5个解码中间结果D412从计算部件412提供给用于存储解码中间结果的存储器413,此外,将用于控制解码中间结果413的读取和写入的控制信号D420从控制部件417提供给存储器413。
基于控制信号D420,用于存储解码中间结果的存储器413集体地存储从计算部件412提供的5个解码中间结果D412,并同时读取已被存储的5个解码中间结果D412,并且,将它们作为解码中间结果D413提供给计算部件412和循环移位电路414。也就是说,用于存储解码中间结果的存储器413同时进行将被提供给计算部件412和循环移位电路414的解码中间结果D413的读取、和从计算部件412提供的解码中间结果D412的写入。
在用于存储解码中间结果的存储器413中,存储通过计算部件412的第一计算来计算的校验节点计算的解码中间结果uj,其中,该解码中间结果uj来自对应于校验矩阵H的第i列的每一行的1的棱。因此,存储在用于存储解码中间结果的存储器413的数据量,即,用于存储解码中间结果的存储器413所必需的存储容量,变为解码中间结果的量化位数目和校验矩阵的1的数目的相乘值。
将5个解码中间结果D413(解码中间结果uj)从用于存储解码中间结果的存储器413提供给循环移位电路414。此外,将对应于解码中间结果D413的控制信号D421从控制部件417提供给循环移位电路414,其中,控制信号D421指示关于这样的事实的信息(矩阵数据),该事实为作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果来排列校验矩阵的1。循环移位电路414在控制信号D421的基础上进行重新排列这5个解码中间结果D413的循环移位,并将结果作为解码中间结果D414提供给计算部件415。
计算部件415包括5个计算器4151至4155。将5个解码中间结果D414从循环移位电路414提供给计算部件415,并将解码中间结果D414提供给各个计算器4151至4155。此外,将5个所接收数据D417(LDPC码)从用于接收的存储器417提供给计算部件415,并将所接收数据D417提供给各个计算器4151至4155。此外,将控制信号D422从控制部件417提供给计算部件417,并将控制信号D422提供给计算器4151至4155。控制信号D422是5个计算器4171至4175共有的信号。
计算器4151至4155每一个都通过使用解码中间结果D414和所接收数据D417来进行根据式(5)的第二计算,并确定解码中间结果D415。计算部件415将作为计算器4151至4155进行的第二计算的结果而获得的5个解码中间结果D415(v)提供给用于存储解码中间结果的存储器410。此外,在当前正在进行的计算是最后的第二计算的时候,计算部件415将作为计算结果获得的5个解码中间结果D415作为最终解码结果输出。
用于接收的存储器416将从通过通信信道接收的接收值(符号位)计算的接收LLR(对数似然比)作为所接收数据D417来存储,该接收LLR是符号位的0相似性值。
也就是说,在用于接收的存储器416的第1地址处,存储对应于校验矩阵的列的所接收数据D417中对应于校验矩阵第1列至第5列的所接收数据D417。然后,在第2地址处,存储对应于校验矩阵第6列至第10列的所接收数据D417,并且在第3地址处,存储对应于校验矩阵第11列至第16列的所接收数据D417。随后,类似地,在第4地址至第18地址处,以5个数据的单位存储对应于第17列至第90列的所接收数据D417。
然后,用于接收的存储器616以5个数据的单位、按照可变节点计算所必需的顺序读取已被存储的所接收数据D417,并将它们提供给计算部件415。
用于接收的存储器416由例如能够同时读取和写入5个所接收数据的单端口RAM构成。存储在用于接收的存储器416中的数据量,即,用于接收的存储器315所必需的存储容量,是LDPC码的码长度和所接收数据的量化位的数目的相乘值。用于接收的存储器416的字的数目为18,其为把LDPC码的码长度,即校验矩阵的列的数目90,除以将被同时读取的所接收数据D417的数目5所得的值。
控制部件417将控制信号D418提供给循环移位存储器411,并将控制信号D419提供给计算部件412,以便分别控制它们。控制部件417将控制信号D420提供给用于存储解码中间结果的存储器413,将控制信号D421提供给循环移位电路414,并将控制信号D421提供给计算部件415,以便分别控制它们。
作为按照用于存储解码中间结果的存储器410、循环移位电路411、计算部件412、用于存储解码中间结果的存储器413、循环移位电路414、和计算部件415的顺序循环的数据的结果,解码设备400可进行一次解码。在解码设备400中,在将解码重复进行预定次数之后,将作为计算部件415的第二计算的结果的解码中间结果D415作为最终解码结果输出。
图21是示出图18的计算部件412的计算器4121的结构示例的方框图。
在图21中,给出对计算器4121的描述,并且,计算器4122至计算器4125也被以相同的方式配置。
在图21中,通过假设先前作为计算部件412进行的第一计算结果而获得的解码中间结果(udv)的每一个和符号位一起被量化为总共6位、并且作为计算器415进行的第二计算的结果而获得的解码中间结果(v)的每一个被量化为9位,来示出计算器4121。此外,将时钟ck提供给图21的计算器4121,并将此时钟ck提供给必要的块。然后,每个块与时钟ck同步地进行处理。
基于从控制部件417提供的控制信号D419,图21的计算器4121通过使用从用于存储解码中间结果的存储器413依次读取的解码中间结果D413(udv)、和从循环移位电路411依次读取的解码中间结果D411(v),来进行根据式(7)和式(8)的第一计算,其中,先前作为计算部件412的第一计算的结果而获得所述解码中间结果D413(udv)。
更具体地说,将从循环移位电路411提供的5个9位解码中间结果D411(v)中的1个解码中间结果D411提供给计算器4121。此外,将从用于存储解码中间结果的存储器413提供的5个6位解码中间结果D413(uj)中的1个解码中间结果D413从提供给计算器4121,其中,所述5个6位解码中间结果D413(uj)是先前由计算部件412进行的计算结果,所述1个解码中间结果D413是先前由计算部件412进行的计算的结果。将9位解码中间结果D411(v)和6位解码中间结果D413(udv)提供给减法器D431。此外,将控制信号D419从控制部件417提供给计算器4121,并且将控制信号D419提供给选择器435和选择器442。
减法器431从9位解码中间结果D411(v)中减去6位解码中间结果D413(uj),并输出6位相减值D431。也就是说,减法器431进行根据式(8)的计算,并且输出作为计算结果的相减值D431(vi)。
将从减法器431输出的6位相减值D431中的符号位D432(sign(vi))提供给EXOR电路440,其中,该符号位D432指示最高阶位的正或负符号,并且,将5个较低阶位的绝对值D433(|vi|)提供给LUT 432。
LUT 432读取对绝对值D433(|vi|)进行式(7)中的

的计算所得的5位计算结果D434

并将它提供给加法器433和FIFO存储器438。
加法器433通过将计算结果D434

和存储在寄存器434中的9位值D435加到一起来累计计算结果D434,并将作为结果获得的9位累计值再次存储在寄存器434中。当累计了从对应于校验矩阵一行上所有1的解码中间结果D411确定的绝对值D433(|vi|)的计算结果时,寄存器433被复位。
当依次读取校验矩阵一行上的解码中间结果D411、并且累计对于一行的计算结果D434所得的累计值被存储在寄存器434中时,从控制部件417提供的控制信号D419从0改变为1。例如,当行权重为“9”时,控制信号D419在第1至第8时钟为“0”,而在第9时钟为“1”。
当控制信号D419为“1”时,选择器435选择存储在寄存器434中的值,即,累计从解码中间结果D411(解码中间结果v)确定的

所得的9位值D435

从i=1至i=dc),并将该值作为值D436输出到寄存器436,由此来存储它,其中,所述解码中间结果D411对应于校验矩阵一行上的所有1。寄存器436将所存储的值D436作为9位值D437提供给选择器435和加法器437。当控制信号D419为“0”时,选择器435选择从寄存器436提供的值D437,并将该值输出到寄存器436,由此来再次存储它。也就是说,寄存器436将先前累计的

提供给选择器435和加法器437,直到累计了从对应于校验矩阵一行上所有1的解码中间结果D411(解码中间结果v)确定的

为止。
另一方面,FIFO存储器438将LUT 432输出的计算结果D434

延迟,直到从寄存器436输出了新值D437

从i=1至i=dc)为止,并将它作为5位值D438提供给减法器437。减法器437从寄存器436提供的值D437中减去从FIFO存储器438提供的值D438,并将减法结果作为5位相减值D439提供给LUT 439。也就是说,减法器437从根据对应于校验矩阵一行上所有1的解码中间结果D411(解码中间结果v)确定的累计值

中,减去对应于要确定的棱的解码中间结果,即,根据对应于预定的校验矩阵的1的解码中间结果D411(解码中间结果v)确定的

并将相减值

从i=1至i=dc-1)作为相减值D439提供给LUT 439。
LUT 439输出对相减值D439

从i=1至i=dc-1)进行式(7)中的

计算所得的5位计算结果D440
在进行上面处理的同时,EXOR电路440通过计算存储在寄存器441中的1位值D442和符号位D432的异或,来进行符号位相乘,并将1位乘法结果D441再次存储在寄存器441中。当从对应于校验矩阵一行上所有1的解码中间结果D411确定的符号位D432均被乘入时,寄存器441被复位。
当把从对应于校验矩阵一行上所有1的解码中间结果D411确定的符号位D432相乘所得的乘法结果D441(Пsign(vi),从i=1至i=dc)被存储在寄存器441中时,从控制部件417提供的控制信号D419从“0”改变为“1”。
当控制信号D419为“1”时,选择器442选择存储在寄存器441中的值,即,把从对应于校验矩阵一行上所有1的解码中间结果D411确定的符号位D432相乘所得的值D442(Пsign(vi),从i=1至i=dc),并将该值作为1位值D443输出到寄存器443。寄存器443将所存储的值D443作为1位值D444提供给选择器442和EXOR电路445。当控制信号D419为“0”时,选择器442选择从寄存器443提供的值D444,并将该值输出到寄存器443,由此来再次存储它。也就是说,寄存器443将先前存储的值提供给选择器442和EXOR电路445,直到从对应于校验矩阵一行上所有1的解码中间结果D411(解码中间结果v)确定的符号位D432均被乘入为止。
另一方面,FIFO存储器444将符号位D432延迟,直到新值D444(Пsign(vi),从i=1至i=dc)被从寄存器443提供给EXOR电路445为止,并将它作为1位值D445提供给EXOR电路445。EXOR电路445通过计算从寄存器443提供的值D444和从FIFO存储器444提供的值D445的异或,而将值D444除以值D445,并将1位相除值作为相除值D446输出。也就是说,EXOR电路445将从对应于校验矩阵一行上所有1的解码中间结果D411确定的符号位D432(sign(vi))的相乘值除以从对应于预定的校验矩阵的1的解码中间结果D411确定的符号位D432(sign(vi)),并将相除值(Пsign(vi),从i=1至i=dc-1)作为相除值D446输出。
在计算器4121中,将总共6位作为解码中间结果D412(解码中间结果uj)输出,其中,从LUT 439输出的5位计算结果D440是5个较低阶位,而从EXOR电路445输出的1位相除值D446是最高阶位。
如上所述,在计算器4121中,进行式(7)和式(8)的计算,并确定解码中间结果uj。
由于图15的校验矩阵的行权重最大值为9,也就是说,由于提供给计算器4121的解码中间结果D411(v)和解码中间结果D413(udv)的最大数目为9,因此,计算器4121具有FIFO存储器438,用于延迟从9个解码中间结果D411确定的9个计算结果D434

和FIFO存储器444,用于延迟9个符号位D432。当要计算权重小于9的行的消息时,FIFO存储器438和FIFO存储器444中的延迟量减小为该行的权重值。
图22是示出计算部件415的计算器4151的结构示例的方框图。
在图22中,给出对计算器4151的描述,并且,计算器4152至计算器4155也被以相同的方式配置。
在图22中,通过假设作为计算器412进行的第一计算结果获得的每个解码中间结果(uj)和符号位一起被量化为总共6位来示出计算器4151。此外,将时钟ck提供给图22的计算器4151,并且,将此时钟ck提供给必要的块。每个块与时钟ck同步地进行处理。
基于从控制部件417提供的控制信号D422,图22的计算器4151通过使用从用于接收的存储器416依次读取的所接收数据D417(所接收值u0i)、和从循环移位电路414依次读取的解码中间结果D414(uj),来进行根据式(5)的第二计算。
更具体地说,在计算器4151中,从循环移位电路414依次读取对应于校验矩阵每一行的1的6位解码中间结果D414(解码中间结果uj),并将解码中间结果D414提供给加法器417。此外,在计算器4151中,从用于接收的存储器416依次读取6位所接收数据D417,并将其提供给加法器475。此外,将控制信号D422从控制部件417提供给计算器4151,并将控制信号D422提供给选择器473。
加法器471通过将解码中间结果D414(解码中间结果uj)和存储在寄存器472中的9位累计值D471加到一起,来累计解码中间结果D414,并将9位累计值再次存储在寄存器472中。当累计了对应于校验矩阵一行上所有1的解码中间结果D414时,寄存器472被复位。
当依次读取校验矩阵一行的解码中间结果D414、并且累计一行的解码中间结果D414所得的值被存储在寄存器472中时,从控制部件417提供的控制信号D422从“0”改变为“1”。例如,当列的权重为“5”时,控制信号D422在第1时钟到第4时钟为“0”,而在第5时钟为“1”。
当控制信号D422为“1”时,选择器473选择存储在寄存器472中的值,即,累计来自校验矩阵一行上所有棱的解码中间结果D414(解码中间结果uj)所得的9位值471(∑uj,从j=1至i=dv),并将该值输出到寄存器474,由此来存储它。寄存器474将所存储的值D471作为9位值D472提供给选择器471和加法器475。当控制信号D422为“0”时,选择器473选择从寄存器474提供的值D472,并将该值输出到寄存器474,由此来再次存储它。也就是说,寄存器474将先前累计的值提供给选择器473和加法器475,直到累计了来自校验矩阵一行上所有棱的解码中间结果D414(解码中间结果uj)为止。
加法器475将9位值D472和从用于接收的存储器416提供的6位所接收数据D417加到一起,并将由此获得的6位值作为解码中间结果D415(解码中间结果v)输出。
如上所述,在计算器4151中,进行式(5)的计算,并确定解码中间结果v。
由于图8的校验矩阵的列权重的最大值为5,也就是说,由于提供给计算器4151的解码中间结果uj的最大数目为5,因此计算器4151将5个6位解码中间结果uj的最大值加到一起。所以,计算器4151的输出是9位值。
图23是示出图18的用于存储解码中间结果的存储器413的结构示例的方框图。
用于存储解码中间结果的存储器413包括开关501和504、以及两个用于存储解码中间结果的RAM 502和503,其中,所述RAM为单端口RAM。
在详细描述用于存储解码中间结果的存储器413的每个部件之前,首先将描述把数据存储在用于存储解码中间结果的RAM 502和503中的方法。
用于存储解码中间结果的RAM 502和503存储通过开关501提供的解码中间结果D412,其中,作为第一计算的结果而获得所述解码中间结果D412。
更具体地说,在用于存储解码中间结果的RAM 502的第1地址至第9地址处,按照对于每一行、在水平方向上(在列方向上)将图15的校验矩阵H从第1行至第5行的1充填得更加紧密这样的方式(按照忽略0的方式),存储对应于它们的解码中间结果D412(D501)。
更具体地说,当把第j行第i列表示为(j,i)时,在用于存储解码中间结果的RAM 502的第1地址处,存储对应于从(1,1)至(5,5)的5×5单位矩阵的1的数据,其中,所述5×5单位矩阵是图15的校验矩阵的子矩阵。在第2地址处,存储对应于从(1,21)至(5,25)的移位矩阵(5×5单位矩阵被向右循环移动3的移位矩阵)的1的数据,其中,所述移位矩阵是图15的校验矩阵的子矩阵。类似地,在第3至第8地址处,同样以这样的方式来存储数据,以便对应于图15的校验矩阵的子矩阵。然后,在第9地址处,存储对应于从校验矩阵的(1,86)至(5,90)的移位矩阵(用0代替了5×5单位矩阵的第一行的1、并将该单位矩阵向左循环移动1的移位矩阵)的1的数据。这里,在图15的校验矩阵从(1,86)至(5,90)的移位矩阵中,由于在第1行中不存在1,因此在第9地址处不存储数据。
在用于存储解码中间结果的RAM 502的第10地址至第18地址处,存储对应于图15的校验矩阵从第11行至第15行的1的数据。也就是说,在第10地址处,存储对应于这样的矩阵的1的数据,在该矩阵中,将校验矩阵从(11,6)至(15,10)的5×5单位矩阵向右循环移动3。在第11地址处,存储对应于组成校验矩阵从(11,11)至(15,15)的和矩阵(该和矩阵为5×5单位矩阵与5×5单位矩阵被向右循环移动3的移位矩阵的和)的移位矩阵的1的数据。在第12地址处,存储组成校验矩阵从(11,6)至(15,10)的和矩阵的单位矩阵的1的数据。随后,同样,在第13地址至第18地址处,以这样的方式来存储数据,以便对应于校验矩阵。
更具体地说,对于权重为2或更大的子矩阵,当用以下矩阵的两个或更多的和的形式来代表子矩阵时,在相同地址处存储对应于权重为1的单位矩阵、准单位矩阵、或移位矩阵的1的位置的数据(对应于属于单位矩阵、准单位矩阵、或移位矩阵的棱的消息的解码中间结果),其中,所述矩阵为权重为1的(P×P)单位矩阵;准单位矩阵,其中用0代替了作为单位矩阵的元素的一个或更多1;以及移位矩阵,其中单位矩阵或准单位矩阵被循环移位。
类似地,在用于存储解码中间结果的RAM 502的第19地址至第27地址处,以这样的方式来存储对应于从第21行至第25行的1的数据,以便对应于图15的校验矩阵。也就是说,用于存储解码中间结果的RAM502的字的数目为27。
在用于存储解码中间结果的RAM 503的第1地址至第9地址处,按照对于每一行、在水平方向上(在列方向上)将图15的校验矩阵H从第6行至第10行的1充填得更加紧密这样的方式(其中忽略0的方式),存储对应于它们的解码中间结果D412(D502)。
更具体的说,在用于存储解码中间结果的RAM 503的第1地址处,存储对应于组成从(6,1)至(10,5)的和矩阵(该和矩阵为第一移位矩阵和第二移位矩阵的和,在第一移位矩阵中,5×5单位矩阵被向右循环移动1,而在第二移位矩阵中,所述单位矩阵被向右循环移动2)的第一移位矩阵的1的数据,其中,所述第一移位矩阵是校验矩阵的子矩阵。在第2地址处,存储对应于组成从(6,1)至(10,5)的和矩阵的第二移位矩阵的1的数据,其中,所述第二移位矩阵是校验矩阵的子矩阵。随后,同样,在第3地址至第9地址处,以这样的方式来存储数据,以便对应于校验矩阵的子矩阵。
类似地,在用于存储解码中间结果的RAM 503的第10至第18地址处,以这样的方式来存储对应于图15的校验矩阵从第16行至第20行的1的数据,以便对应于图15的校验矩阵。在第19地址至第27地址处,以这样的方式来存储对应于图15的校验矩阵从第26行至第30行的1的数据,以便对应于图15的校验矩阵。也就是说,用于存储解码中间结果的RAM 503的字的数目为27。
按照上述方式,用于存储解码中间结果的RAM 502和503的字的数目为27。也就是说,字的数目变为这样的值将校验矩阵的行权重9乘以行的数目30,将相乘结果(校验矩阵的1的数目)除以被同时读取的解码中间结果D501的数目5,并进一步将结果除以用于存储解码中间结果的RAM 502的数目2,其中,用于存储解码中间结果的存储器413拥有所述解码中间结果。
现在,将详细给出对图23的用于存储解码中间结果的存储器413的每个部件的操作的描述。
当计算部件412进行第一计算时,将作为第一计算结果获得的解码中间结果D412(uj)从计算部件412提供给用于存储解码中间结果的存储器413,并且,将解码中间结果D412写入用于存储解码中间结果的RAM 502、和用于存储解码中间结果的RAM 503之一的预定地址处。同时,从其它RAM读取作为先前由计算部件412进行的第一计算的结果而获得的解码中间结果D412(uj),并将其输出到计算部件412。另一方面,当计算部件415进行第二计算时,用于存储解码中间结果的存储器413不进行向用于存储解码中间结果的RAM 502、或用于存储解码中间结果的RAM 503的写入,其从所述RAM之一的预定地址处读取解码中间结果,并将它们提供给循环移位电路414。
将5个解码中间结果D412从计算部件412提供给开关501,此外,将控制信号D4201从控制部件417提供给开关501,其中,控制信号D4201指示选择用于存储解码中间结果的RAM 502和用于存储解码中间结果的RAM 503之一,作为用于存储解码中间结果D412的存储器。基于控制信号D4201,开关501选择用于存储解码中间结果的RAM 502和用于存储解码中间结果的RAM 503之一,并将5个解码中间结果D412提供给所选择的RAM。
将5个解码中间结果D412作为解码中间结果D501从开关501提供给用于存储解码中间结果的RAM 502,此外,将指示地址的控制信号D4202从控制部件417提供给RAM 502。用于存储解码中间结果的RAM 502读取已被存储在由控制信号D4022指示的地址处的5个解码中间结果D501,并将它们作为解码中间结果D503提供给开关504,其中,作为先前由计算部件412进行的第一计算的结果而获得所述5个解码中间结果D501。此外,用于存储解码中间结果的RAM 502将从开关501提供的5个解码中间结果D501存储(写入)到由控制信号D402指示的地址处。
将5个解码中间结果D412作为解码中间结果D502从开关501提供给用于存储解码中间结果的RAM 503,此外,将指示地址的控制信号D4203从控制部件417提供给RAM 503。用于存储解码中间结果的RAM 503读取已被存储在由控制信号D4203指示的地址处的5个解码中间结果D502,并将它们作为解码中间结果D504提供给开关504,其中,作为先前由计算部件412进行的第一计算的结果而获得所述5个解码中间结果D502。此外,用于存储解码中间结果的RAM 502将从开关501提供的5个解码中间结果D502存储(写入)到由控制信号D4203指示的地址处。
将解码中间结果D503从用于存储解码中间结果的RAM 502提供给开关504,或者将解码中间结果D504从用于存储解码中间结果的RAM 503提供给开关504。此外,将控制信号D4204从控制部件417提供给开关504,其中,控制信号D4204指示选择用于存储解码中间结果的RAM 502和用于存储解码中间结果的RAM 503之一。基于控制信号D4201,开关504选择用于存储解码中间结果的RAM 502和用于存储解码中间结果的RAM 503之一,并将从所选择的RAM提供的5个解码中间结果作为5个解码中间结果D413提供给计算部件412和循环移位电路414。
图24是图示用于存储解码中间结果的存储器413的用于存储解码中间结果的RAM 502、和用于存储解码中间结果的RAM 503的读取和写入操作的时序图。
在图24中,水平轴表示时间(t)。
在用于存储解码中间结果的存储器413中,当计算部件412要进行第一计算时,基于控制信号D4202,用于存储解码中间结果的RAM 502以5个结果的单位,从已存储的解码中间结果D501中将存储在相同地址处的、对应于校验矩阵从第1行至第5行的1的解码中间结果D501读取9次,并通过开关504将它们提供给计算部件412,其中,作为先前由计算部件412进行的第一计算的结果而获得所述解码中间结果D501。也就是说,由于图15的校验矩阵的行权重为9,因此存在9个对应于校验矩阵H的每一行的1的解码中间结果,并且,用于存储解码中间结果的RAM 502以5个结果的单位、将对应于从第1行至第5行的1的5个解码中间结果D501读取9次。
接下来,基于控制信号D4203,用于存储解码中间结果的RAM 503以5个结果的单位、从已存储的解码中间结果D502中将存储在相同地址处的、对应于从第6行至第10行的1的解码中间结果D502连续读取9次,并通过开关504将它们提供给计算部件412,其中,作为先前由计算部件412进行的第一计算的结果而获得所述解码中间结果D502。同时,将对应于校验矩阵的第1行至第5行的5个解码中间结果D412作为解码中间结果D501而通过开关501提供给用于存储解码中间结果的RAM 502,其中,作为当前正由计算部件412进行的第一计算的结果而获得所述5个解码中间结果D412。基于控制信号D4202,用于存储解码中间结果的RAM 502在存储已读取的解码中间结果D503的地址处将解码中间结果D501存储9次。
随后,基于控制信号D4202,用于存储解码中间结果的RAM 502以5个结果的单位,从已存储的解码中间结果D501中将存储在相同地址处的、对应于校验矩阵的从第11行至第15行的1的解码中间结果D501读取9次,并通过开关504将它们提供给计算部件412,其中,作为先前由计算部件412进行的第一计算的结果而获得所述解码中间结果D501。同时,将对应于校验矩阵的从第6行至第10行的1的5个解码中间结果D412作为解码中间结果D502而通过开关501提供给用于存储解码中间结果的RAM 503,其中,作为当前正由计算部件412进行的第一计算的结果而获得所述5个解码中间结果D412。基于控制信号D4203,用于存储解码中间结果的RAM 503在存储已读取的解码中间结果D504的地址处将解码中间结果D502连续存储9次。
随后,类似地,用于存储解码中间结果的RAM 502和用于存储解码中间结果的RAM 503以9次为单位交替进行读取或写入,直到将对应于校验矩阵的所有1的解码中间结果存储在用于存储解码中间结果的RAM 502或用于存储解码中间结果的RAM 503中为止,其中,作为计算部件412进行的第一计算的结果而获得所述解码中间结果。
在用于存储解码中间结果的存储器413中,当计算部件415进行第二计算时,基于控制信号D4202,从用于存储解码中间结果的RAM 502中读取已存储的、作为第一计算结果获得的解码中间结果D503,或者基于控制信号D4203,从用于存储解码中间结果的RAM 503读取已存储的、作为第一计算结果获得的解码中间结果D504,并将读出的解码中间结果通过开关504提供给循环移位电路414。
图25是图示图18的解码设备400的解码过程的流程图。例如,在所接收的将要解码的数据被存储在用于接收的存储器416中时,开始此过程。
在步骤S50中,循环移位电路414把从用于存储解码中间结果的存储器413提供的、将在步骤S56(将在以后描述)存储的5个解码中间结果D413循环移位,并将它们提供给计算部件415。
更具体地说,将5个解码中间结果D413从用于存储解码中间结果的存储器413提供给循环移位电路414,此外,将对应于解码中间结果D413的控制信号D421从控制部件417提供给循环移位电路414,其中,控制信号D421指示关于这样的事实的信息(矩阵数据),该事实为作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果来排列校验矩阵的1。基于控制信号D421,循环移位电路414将这5个解码中间结果D413循环移位(重新排列),并将结果作为解码中间结果D414提供给计算部件415。
当尚未对提供给用于接收的存储器416的所接收数据D417进行第一计算、并且解码中间结果D413未被存储在用于存储解码中间结果的存储器413中时,计算部件415将解码中间结果uj设置为初始值。
在步骤S51中,计算部件415进行第二计算,并将作为计算结果的解码中间结果D415提供给用于存储解码中间结果的存储器410。
更具体地说,在步骤S50中,将5个解码中间结果D414从循环移位电路414提供给计算部件415,此外,将5个所接收数据D417从用于所接收数据的存储器416提供给计算部件415。将解码中间结果D415和所接收数据D417单独提供给计算部件415的计算器4151至4155的每一个。此外,将控制信号D422从控制部件417提供给计算部件415,并将控制信号D422提供给计算器4151至4155。
基于控制信号D422,计算器4151至4155每一个都通过使用解码中间结果D414和所接收数据D417来进行根据式(5)的计算,并将作为计算结果获得的、对应于校验矩阵的列的解码中间结果D415(v)提供给用于存储解码中间结果的存储器410。
在步骤S51的处理之后,该过程进行到步骤S52,在该步骤处,用于存储解码中间结果的存储器410将在步骤S51从计算部件415提供的解码中间结果D415存储在相同地址处,然后,该过程进行到步骤S53。
在步骤S53,控制部件417确定计算部件415是否计算了对应于校验矩阵的列的所有解码中间结果D415。当确定没有计算所有解码中间结果D415时,该过程返回步骤S50,并且再次进行上述处理。
另一方面,当在步骤S53控制部件417确定计算部件415计算了对应于校验矩阵的列的所有解码中间结果D415时,该过程进行到步骤S54,在该步骤处,循环移位电路411将从用于存储解码中间结果的存储器410提供的解码中间结果D410(v)循环移位。
更具体地说,将5个解码中间结果D410从用于存储解码中间结果的存储器410提供给循环移位电路411。此外,将对应于解码中间结果D410的控制信号D418从控制部件417提供给循环移位电路411,其中,控制信号D418指示关于这样的事实的信息(矩阵数据),该事实为作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果来排列校验矩阵的1。基于控制信号D418,循环移位电路411将5个解码中间结果D410循环移位(重新排列),并将它们作为解码中间结果D411提供给计算部件412。
在步骤S54的处理之后,该过程进行到步骤S55,在该步骤处,计算部件412进行第一计算,并将作为计算结果的解码中间结果D412提供给循环移位电路414。
更具体地说,在步骤S54,将5个解码中间结果D411(v)从循环移位电路411提供给计算部件412。此外,将已经在步骤S56(将在以后描述)存储的5个解码中间结果D412(D413)(uj)提供给计算部件412,其中,作为先前由计算部件412进行的第一计算的结果而获得这5个解码中间结果D412(D413)(uj)。将解码中间结果D411和解码中间结果D413单独提供给计算部件412的计算器4121至4125的每一个。此外,将控制信号D419从控制部件417提供给计算部件412,并将控制信号D419提供给计算器4121至4125。
基于控制信号D419,计算器4121至4125每一个都通过使用解码中间结果D411和解码中间结果D413来进行根据式(7)和式(8)的计算,并将作为计算结果获得的解码中间结果D412(uj)提供给用于存储解码中间结果的存储器413。
在步骤S55的处理之后,该过程进行到步骤S56,在该步骤处,用于存储解码中间结果的存储器413将在步骤S55从计算部件412提供的5个解码中间结果D412存储在相同地址处,然后,该过程进行到步骤S57。
在步骤S57,控制部件417确定计算部件412是否计算了对应于校验矩阵的所有1的解码中间结果D412。当确定没有计算校验矩阵的所有1时,该过程返回步骤S54,并再次进行上述处理。
另一方面,当在步骤S57控制部件417确定计算部件412计算了对应于所有1的解码中间结果D412时,该过程完成。
解码设备400将图25的解码过程重复进行所述解码数目,并将作为最后的第二计算的结果获得的消息D415作为最终解码结果输出。
在上面的描述中,尽管用于存储解码中间结果的存储器413由两个单端口RAM构成,但是,如果对一个RAM的读取和写入不同时发生,则存储器413可以由三个或更多RAM构成。当RAM的物理位宽度不够时,通过使用多个RAM来提供相同的控制信号,可以将这些RAM逻辑地假设为一个RAM。
对于缺少棱数据(对应于棱的消息)的部分,在存储器中进行存储的期间(当把数据存储在用于存储解码中间结果的存储器410和413中时),不存储消息,而在计算期间(在计算部件412处的第一计算期间和在计算部件415处的第二计算期间),不进行计算。
图26是示出应用本发明的、用于将由图15的校验矩阵代表的LDPC码解码的解码设备的另一实施例的结构示例的方框图。
在图26的解码设备600中,图16A至16C的棱数据存储器316被形成为用于存储解码中间结果的存储器613,其具有小于棱数据存储器316的容量的容量。
解码设备600包括用于存储解码中间结果的存储器610、循环移位电路611、由5个计算器6121至6125组成的计算部件612、用于存储解码中间结果的存储器613、循环移位电路614、由5个计算器6151至6155组成的计算部件615、用于接收的存储器616、和控制部件617。
参考图27至图30,给出对图26的计算部件612的计算器6121至计算器6125、图30的计算部件615的计算器6151至计算器6155、图10的校验节点计算器101、和图11的可变节点计算器103之间关系的描述。
图27和图28分别与示出校验节点计算器101的上述图10和示出可变节点计算器103的上述图11相同。图29示出了计算器612k(k=1、2、...、5)的结构示例。图30示出了计算器615k(k=1、2、...、5)的结构示例。
在图26的解码设备600中,计算器612k进行校验节点计算的一些,并且计算器615k进行校验节点计算的其它一些和可变节点计算的一些,而不是计算器612k进行校验节点计算并且计算部件615k进行可变节点计算。
更具体地说,图29的计算器612k由块D’和块E’构成。块D’被按照与块D相同的方式配置,其中,块D用于累计对与校验矩阵的每一列的所有棱对应的消息vi的绝对值进行

计算所得的值,块D是图27的校验节点计算器101的一部分。块E’被按照与块E相同的方式配置,其中,块E用于将对应于校验矩阵每一列的所有棱的消息vi的符号位相乘。
另一方面,图30的计算器615k由块F’、G’、和H’构成。块F’被按照与块F相同的方式配置,其中,块F用于将对应于校验矩阵每一列所有棱的消息vi的符号位的相乘值除以对应于要确定的棱的消息vi的符号位;以及,通过从对与校验矩阵每一列所有棱相对应的消息vi的绝对值进行计算

所得的值的累计值中,减去对与要确定的棱相对应的消息vi的绝对值进行

计算所得的值,对所获得的值进行

计算,块F’是图19的校验节点计算器101的另一部分。块G’被按照与用于对消息vi的绝对值进行

计算的块G相同的方式配置。块H’被按照与用于进行图20的可变节点计算器103的可变节点计算的块H相同的方式配置。
图29的计算器612k将块A和块B的计算结果,即,进行校验节点计算的一些所得的解码中间结果w提供给用于存储解码中间结果的存储器613。图30的计算器615k将进行了校验节点计算的其它一些和可变节点计算所得的解码中间结果vi’提供给用于存储解码中间结果的存储器610。
因此,图26的解码设备600有可能通过交替进行计算器612k的计算和计算器615k的计算来进行校验节点计算和可变节点计算,以便进行解码。
在图30的计算器615k中,通过使用存储在用于存储解码中间结果的存储器610中的、对应于要确定的棱的解码中间结果vi’,块C从作为计算器612k的计算结果获得的解码中间结果w的绝对值中,减去对应于要确定的棱的解码中间结果vi’,并将该解码中间结果w的符号位乘以对应于要确定的棱的解码中间结果vi’的符号位。因此,不需要图27的存储器127和FIFO存储器133。
接下来,通过使用等式,给出对计算部件612的计算器6121至计算器6125进行的计算、和计算部件615的计算器6151至计算器6155进行的计算的描述。
计算部件612进行根据式(9)的第一计算,并将作为第一计算的结果的解码中间结果w提供给用于存储解码中间结果的存储器613,由此来存储它们。计算部件615进行上述式(1)以及根据式(9)和式(11)的第二计算,并将作为第二计算的结果的解码中间结果vi’提供给用于存储解码中间结果的存储器610,由此来存储它们。
uj=Ф-1(|w|-|vi′|)×sign(vi′)×sing(w)(10) vi′=Ф(|vi|)×sign(vi)(11) 更具体地说,作为根据式(9)的第一计算结果获得的解码中间结果w是这样的将校验节点计算的解码中间结果vi’的绝对值|vi’|的总和与符号位(vi’)乘到一起,其中,作为根据式(1)、式(10)和式(11)的第二计算结果获得所述解码中间结果vi’,并且,其对应于校验矩阵H的第j行的所有1。因此,如式(10)所示,可以通过使用这样的值来表示通过式(7)的校验节点计算获得的uj从作为根据式(9)的第一计算结果获得的解码中间结果w的绝对值|w|中,减去对应于校验矩阵H的第j行的每一列的“1”(棱)的(多个)解码中间结果vi’中的、对应于要确定的棱的解码中间结果vi’的绝对值|vi’|。
在解码设备600中,交替进行由计算部件612进行的根据式(9)的第一计算以及根据式(1)、式(10)和式(11)的第二计算,并且,计算部件615通过使用最后的第一计算结果而进行根据式(5)的第一计算,并将计算结果作为解码结果输出,由此进行LDPC码的迭代解码。
更具体地说,在解码设备600中,计算部件612通过使用对应于校验矩阵H第j行所有1的解码中间结果vi’来进行第一计算,并将作为计算结果获得的、对应于校验矩阵每一行的解码中间结果w存储在用于存储解码中间结果的存储器613中,其中,所述解码中间结果vi’是计算部件615进行的第二计算的结果。因此,用于存储解码中间结果的存储器613的容量变为将校验矩阵的行数目和解码中间结果w的量化位数目乘到一起所得的值,其中,所述校验矩阵的行数目小于校验矩阵的“1”的数目。计算部件615通过使用作为计算部件612进行的第一计算的结果的解码中间结果w、和所接收值u0i,来进行第二计算,并将作为计算结果获得的校验节点计算的解码中间结果vi’存储在用于存储解码中间结果的存储器610中,其中,所述解码中间结果w对应于校验矩阵H的第i列的每一行,解码中间结果vi’对应于校验矩阵第i列的1(棱)。因此,用于存储解码中间结果的存储器610所必需的容量变为这样得到的值类似于图16A和16B的用于存储可变节点计算结果的棱数据存储器311,将校验矩阵的1的数目和解码中间结果vi’的量化位数目乘到一起。
因此,在解码方法600中,当与图16A和16B的棱数据存储器311相比时,用于存储解码中间结果的存储器610的存储容量可被减小。这使得有可能减小解码设备600的电路规模。
下面将详细描述图26的解码设备600的每个部件的操作。
基于控制信号D618,用于存储解码中间结果的存储器610集体地存储从计算部件615提供的5个解码中间结果D615,同时,读出5个已被存储的解码中间结果D615,并将它们作为解码中间结果D610提供给循环移位电路611和计算部件615。也就是说,用于存储解码中间结果的存储器610同时进行提供给循环移位电路611的解码中间结果D610的读取、和从计算部件615提供的解码中间结果D615的写入。
在用于存储解码中间结果的存储器610中,存储由计算部件615通过第二计算所计算的解码中间结果vi’(第二解码中间结果),其对应于校验矩阵的1(棱)。因此,存储在用于存储解码中间结果的存储器610中的数据量,即,用于存储解码中间结果的存储器610所需的存储容量,变为解码中间结果的量化位数目和1的数目(棱的总数)的相乘值。
例如,用于存储解码中间结果的存储器610包括两个能够同时读取和写入5个解码中间结果的单端口RAM。将5个解码中间结果D615从计算部件615提供给用于存储解码中间结果的存储器610,此外,将用于控制解码中间结果D615的读取和写入的控制信号D618从控制部件617提供给存储器610。
将5个解码中间结果D610从用于存储解码中间结果的存储器610提供给循环移位电路611。此外,将对应于解码中间结果D610的控制信号D619从控制部件617提供给循环移位电路611,其中,控制信号D619指示关于这样的事实的信息(矩阵数据)作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果来排列校验矩阵的1。基于控制信号D619,循环移位电路611进行重新排列5个解码结果D610的循环移位,并将结果作为解码中间结果D611提供给计算部件612。
计算部件612包括5个计算器6121和6125。将5个解码中间结果D611(第二解码中间结果)(vi’)从循环移位电路611提供给计算部件612,并将5个解码中间结果611(第一解码中间结果)(w)分别提供给计算器6121至6125。将控制信号D620从控制部件617提供给计算部件612,并将控制信号D620提供给计算器6121至6125。控制信号D620是5个计算器6121至6125共有的信号。
计算器6121至6125每一个都通过使用解码中间结果D611而根据式(9)进行第一计算,以便确定解码中间结果D612(w)。计算部件612将作为计算器6121至6125进行的计算结果而获得的5个解码中间结果D612提供给用于存储解码中间结果的存储器613。
将对应于校验矩阵的行的5个解码中间结果D612从计算部件612提供给用于存储解码中间结果的存储器613,其中,所述5个解码中间结果D612是计算部件612进行的第一计算的结果。用于存储解码中间结果的存储器613从第一地址开始按顺序存储从计算部件612提供的这5个解码中间结果D612。
更具体地说,在用于存储解码中间结果的存储器613的第1地址处,存储对应于校验矩阵的行的解码中间结果中从第1行至第5行的解码中间结果w。类似地,在第2地址处,存储从第6行至第10行的解码中间结果,并且在第3地址处,存储从第11行至第15行的解码中间结果w。随后,类似地,以5个结果的单位在第4地址至第6地址处存储从第16行至第30行的解码中间结果w,并且,将总共60个解码中间结果w存储在用于存储解码中间结果的存储器613中。因此,用于存储解码中间结果的存储器610的字的数目变为6,该数目为将图15的校验矩阵H的行数目30除以被同时读取和写入的解码中间结果的数目5。
用于存储解码中间结果的存储器613从5个已被存储的解码中间结果D613中同时读取5个解码中间结果w,并将它们作为解码中间结果D613提供给循环移位电路614,其中,所述5个解码中间结果w是将由计算部件615确定的解码中间结果vi’所对应的校验矩阵H的列中的“1”。
例如,用于存储解码中间结果的存储器613包括能够同时读取和写入5个解码中间结果的单端口RAM。由于通过计算部件612的第一计算所计算的、对应于行的解码中间结果w被存储在用于存储解码中间结果的存储器613中,因此,存储在用于存储解码中间结果的存储器613中的数据量,即,用于存储解码中间结果的存储器613所需的存储容量,变为解码中间结果的量化位数目和校验矩阵H的行数目的相乘值。
将5个解码中间结果D613(解码中间结果w)从用于存储解码中间结果的存储器613提供给循环移位电路614。此外,将对应于解码中间结果D613的控制信号D621从控制部件617提供给循环移位电路614,其中,控制信号D621指示关于这样的事实的信息(矩阵数据)作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果来排列校验矩阵的1。基于控制信号D621,循环移位电路614进行重新排列5个解码中间结果D613的循环移位,并将结果作为解码中间结果D614提供给计算部件615。
计算部件615包括5个计算器6151至6155。将5个解码中间结果D614(w)从循环移位电路614提供给可变节点计算部件615,此外,将5个解码中间结果D610(vi’)从用于存储解码中间结果的存储器610提供给可变节点计算部件615。将解码中间结果D614和解码中间结果D610提供给计算器6151至6155的每一个。将5个所接收数据D617从用于接收的存储器617提供给计算部件615,并将所接收数据D617单独提供给计算器6151至6155的每一个。此外,将控制信号D622从控制部件617提供给计算部件617,并将控制信号D622提供给计算器6151至6155。控制信号D622是5个计算器6171至6175共有的信号。
计算器6151至6155每一个都通过使用解码中间结果D614和D611以及所接收数据D617(LDPC码)而根据式(1)、式(10)和式(11)来进行第二计算,以便确定对应于校验矩阵每一列的1的5个解码中间结果(vi’)。计算部件615将作为计算器6151至6155进行第二计算的结果而获得的5个解码中间结果D615提供给用于存储解码中间结果的存储器610。
用于接收的存储器616将从通过通信信道接收的所接收值(符号位)计算的接收LLR(对数似然比)作为所接收数据D617来存储,其中,接收LLR是符号位的0相似性值。
更具体地说,在用于接收的存储器616的第一地址处,存储对应于校验矩阵的列的所接收数据D617中的、对应于校验矩阵的第1列至第5列的所接收数据D617。在第2地址处,存储对应于校验矩阵的第6列至第10列的所接收数据D617,并且在第3地址处,存储对应于校验矩阵的第11列至第16列的所接收数据D617。随后,类似地,在第4地址至第18地址处,以5个数据的单位存储对应于第17列至第90列的所接收数据D617。
然后,用于接收的存储器616以5个数据的单位、按照计算部件615进行第二计算所必需的顺序来同时读取已被存储的所接收数据D617,并将它们提供给计算部件615。
例如,用于接收的存储器616包括单端口RAM。存储在用于接收的存储器616中的数据量,即,用于接收的存储器616所必需的存储容量,是LDPC码的码长度和所接收数据的量化位数目的相乘值。此外,用于接收的存储器616的字的数目是18,该数目是将LDPC码的码长度,即校验矩阵的列数目90除以被同时读取的所接收数据D617的数目。
控制部件617将控制信号D618提供给用于存储解码中间结果的存储器610,并将控制信号D619提供给循环移位电路611,以便分别控制它们。此外,控制部件617将控制信号D620提供给计算部件612,并将控制信号D621提供给循环移位电路614,以便分别控制它们。
作为按照用于存储解码中间结果的存储器610、循环移位电路611、计算部件612、用于存储解码中间结果的存储器613、循环移位电路614、和计算部件615的顺序循环的数据的结果,解码设备600可进行一次解码。在解码设备600中,在将解码重复进行预定次数之后,计算部件615进行根据式(5)的计算,并且,将该计算结果作为最终解码结果输出。
图29是示出图26的计算部件612的计算器6121的结构示例的方框图。
在图29中描述了计算器6121,并且,计算器6122至计算器6125也被以同样的方式配置。
此外,在图29中,通过假设作为计算器615进行的第二计算的结果而获得的每个解码中间结果(vi’)被量化为6位来示出计算器6121。将时钟ck提供给图29的计算器6121,并将时钟ck提供给必要的块。每个块与时钟ck同步地进行处理。
基于从控制部件617提供的控制信号D620,图29的计算器6121通过使用从循环移位电路611依次读取的解码中间结果D611(vi’)来进行根据式(9)的第一计算。
更具体地说,将从循环移位电路611提供的5个6位解码中间结果D611(vi’)中的一个解码中间结果D611提供给计算器6121,将作为最高阶位的符号位D631提供给EXOR电路635,并且将作为6位解码中间结果D611(vi’)的5个较低阶位的绝对值D632(|vi’|)提供给加法器631。此外,将控制信号D620从控制部件617提供给计算器6121,并将控制信号D620提供给选择器633和选择器637。
加法器631通过将绝对值D632(|vi’|)和存储在寄存器632中的9位值D633加到一起来累计绝对值D632(|vi’|),并将作为结果获得的9位累计值再次存储在寄存器632中。当累计了从对应于校验矩阵一行上所有1的解码中间结果D611确定的绝对值D632(|vi’|)时,寄存器632被复位。
当依次读取校验矩阵一行上的解码中间结果D611、并且累计一行的绝对值D632所得的累计值被存储在寄存器632中时,从控制部件617提供的控制信号D620从0改变为1。例如,当行权重为“9”时,控制信号D620在第1至第8时钟为“0”,而在第9时钟为“1”。
当控制信号D620为“1”时,寄存器632选择存储在选择器633中的值,即,累计对应于校验矩阵一行上所有1的解码中间结果D611(解码中间结果vi’)的绝对值D632(|vi’|)所得的9位值D633(∑|vi’|,从i=1至i=dc),并将该值作为值D634输出到寄存器634,由此来存储它。寄存器634将所存储的值D634作为9位值D635提供给选择器633,并且还将它输出。当控制信号D620为“0”时,选择器633选择从寄存器634提供的值D635,并将该值输出到寄存器634,由此来再次存储它。也就是说,寄存器634将先前累计的|vi’|提供给选择器633,并且还将它输出,直到累计了对应于校验矩阵一行上所有1的解码中间结果D611(解码中间结果vi’)的绝对值D632(|vi’|)为止。
在进行上述处理的同时,EXOR电路635通过计算存储在寄存器636中的1位值D637和符号位D631的异或,来进行符号位的相乘,并将1位相乘结果D636再次存储在寄存器636中。当对应于校验矩阵一行上所有1的解码中间结果D611的符号位D631均被乘入时,寄存器636被复位。
当相乘结果D636(Пsign(vi’),从i=1至dc)被存储在寄存器636中时,从控制部件617提供的控制信号D620从“0”改变为“1”,其中,将从对应于校验矩阵一行上所有1的解码中间结果D611所确定的符号位D631相乘而得到所述相乘结果D636(Пsign(vi’),从i=1至dc)。
当控制信号D620为“1”时,选择器637选择存储在寄存器636中的值,即,将对应于校验矩阵一行上所有1的解码中间结果D611的符号位D631相乘所得的值D637(Пsign(vi’),从i=1至i=dc),并将该值作为1位值D638输出到寄存器638,由此来存储它。寄存器638将所存储的值D638作为1位值D639提供给选择器637,并输出它。当控制信号D620为“0”时,选择器637选择从寄存器638提供的值D639,并将该值输出到寄存器638,由此来再次存储它。也就是说,寄存器638将先前存储的值提供给选择器637,并输出它,直到对应于校验矩阵一行上所有1的解码中间结果D611(解码中间结果vi’)的符号位D631均被乘入为止。
在计算器6121中,将总共10位作为解码中间结果D612(解码中间结果w)输出,其中,使从寄存器634输出的9位值D635(∑|vi’|,从i=1至i=dc)成为9个较低阶位,而使从寄存器638输出的1位值D639(sign(vi’))成为最高阶位。
如上所述,在计算器6121中,进行式(9)的计算,并确定解码中间结果w。
图30是示出图26的计算部件615的计算器6151的结构示例的方框图。
在图30中描述了计算器6151,并且计算器6152至6155也被以相同的方式配置。
此外,在图30中,通过假设作为计算器612进行的第一计算的结果而获得的每个解码中间结果(w)和符号位一起被量化为总共10位、并且先前作为第二计算结果而获得的每个解码中间结果(uj)和符号位一起被量化为总共6位,来示出计算器6151,其中,从用于存储解码中间结果的存储器610提供所述解码中间结果(uj)。此外,将时钟ck提供给图30的计算器6151,并将时钟ck提供给必要的块。每个块与时钟ck同步地进行处理。
基于从控制部件617提供的控制信号D622,图30的计算器6151通过使用以下各项来进行根据式(1)、式(10)和式(11)的第二计算从用于接收的存储器616依次读取的所接收数据D617(所接收值u0i);从循环移位电路614依次读取的解码中间结果D614(w);从用于存储解码中间结果的存储器610依次读取的解码中间结果D610(vi’),其中,先前作为由计算部件615进行的第二计算的结果而获得该解码中间结果。
更具体地说,在计算器6151中,从循环移位电路614依次读取对应于校验矩阵的行的10位解码中间结果D614(解码中间结果w)。从用于存储解码中间结果的存储器610依次读取先前作为计算部件615进行的第二计算的结果而获得的6位解码中间结果D610(解码中间结果vi’)。将解码中间结果D614的最高阶位的符号位D651(sign(w))、和解码中间结果D610的最高阶位的符号位D653(sign(uj))提供给EXOR电路653。将解码中间结果D614的9个较低阶位的绝对值D652(|w|)、和解码中间结果D610的9个较低阶位的符号位D653(|vi’|)提供给减法器651。此外,在计算器6151中,从用于接收的存储器616中依次读取6位所接收数据D617,并将其提供给加法器658。此外,在计算器6151中,从控制部件617提供控制信号D622,并将控制信号D622提供给选择器656。
减法器651从绝对值D652中减去绝对值D654,并将5位相减值D655提供给LUT 652。LUT 652输出对相减值D655进行

计算所得的5位计算结果D656
另一方面,EXOR电路653通过计算符号位D651(sign(w))和符号位D653(sign(vi’))的异或来将符号位D651和符号位D653乘到一起,并将1位相乘结果作为相乘值D657输出。然后,将6位值D658提供给加法器654,并且还将其提供给FIFO存储器659,其中,在所述6位值D658中,使从LUT652提供的5位计算结果D656成为5个较低阶位

并且使从EXOR电路653提供的1位值D657(sign(w)×sign(vi’))成为最高阶位。
以上述方式,进行根据式(10)的计算,并将作为计算结果的6位值D658(uj)提供给加法器654,并且还将其提供给FIFO存储器659。
加法器659通过将6位值D658(uj)和存储在寄存器655中的9位值D659加到一起来累计值D658,并将作为结果获得的9位累计值再次存储在寄存器655中。当累计了对应于校验矩阵一列上所有1的值D658时,寄存器655被复位。
当依次读取校验矩阵一列上的值D658,并且累计一列的值D658所得的值被存储在寄存器655中时,从控制部件617提供的控制信号D622从“0”改变为“1”。例如,当列权重为“5”时,控制信号D622在第1至第4时钟为“0”,而在第5时钟为“1”。
当控制信号D622为“1”时,选择器656选择存储在寄存器655中的值,即,累计对应于校验矩阵一列上的1的值D658(uj)所得的9位值D659(∑uj,从j=1至j=dv),并将该值输出到寄存器657,由此来存储它。寄存器657将所存储的值D659作为9位值D660提供给选择器471和加法器658。当控制信号D622为“0”时,选择器656选择从寄存器657提供的值D660,并将该值输出到寄存器657,由此来再次存储它。也就是说,寄存器657将先前累计的值提供给选择器656和加法器658,直到累计了对应于校验矩阵一列上的1的值D658为止。
加法器658将9位值D660和从用于接收的存储器616提供的6位所接收数据D617加到一起,并提供作为结果获得的9位值D661。
在计算器615中,当要进行最后的计算时,加法器658将9位值D661作为最终解码结果输出。也就是说,计算部件615进行根据式(5)的计算。
另一方面,FIFO存储器659延迟6位值D658(uj),直到从寄存器665输出新值D660(∑uj,从j=1至j=dv)为止,并将该值作为6位值D662提供给减法器660。减法器660从9位值D660中减去6位值D662,并输出相减值D663。也就是说,减法器660从对应于校验矩阵一列上的1的值D658的累计值中,减去对应于要确定的棱的值,即,对应于预定的校验矩阵的1的值D658(uj),并将相减值(∑uj,从i=1至i=dv-1)作为6位相减值D663输出。
以上述方式,进行根据式(1)的计算,并输出作为计算结果的6位相减值D663(vi)。然后,将从减法器660输出的6位相减值D663的5个较低阶位的绝对值(|vi|)提供给LUT 661,并将最高阶位的符号位(sign(vi))作为值D665输出。
LUT 661输出对绝对值(|vi|)进行

的计算所得的5位计算结果D666

然后,LUT 661将总共6位作为解码中间结果(vi’)提供给用于存储解码中间结果的存储器610,其中,使从LUT 661输出的5位计算结果D666

成为5个较低阶位,而使值D665(sign(vi))成为最高阶位。
如上所述,在计算器6151中,进行式(1)、式(10)和式(11)的计算,并确定解码中间结果vi’。
图15的校验矩阵的列权重的最大值为5,也就是说,提供给计算器6151的解码中间结果D614(w)和解码中间结果D610(vi’)的最大数目为5。因此,计算器6151具有FIFO存储器659,用于延迟5个解码中间结果D614和从解码中间结果D610确定的5个计算结果D658(uj)。当要计算列权重小于5的消息时,FIFO存储器659中的延迟量减小为列权重的值。
图31是示出图26的用于存储解码中间结果的存储器610的结构示例的方框图。
用于存储解码中间结果的存储器610包括开关701和704、以及用于存储解码中间结果的RAM 702和703,其中,RAM 702和703是两个单端口RAM。
在详细描述用于存储解码中间结果的存储器610的每个部件之前,首先将描述用来把数据存储在用于存储解码中间结果的RAM 702和703中的方法。
用于存储解码中间结果的RAM 702和703存储通过开关701提供的解码中间结果D615,其中,作为计算部件612进行的第一计算的结果而获得所述解码中间结果D615。
更具体地说,在用于存储解码中间结果的RAM 702的第1地址至第5地址处,按照对于每一行、在水平方向上(在列方向)将图15的校验矩阵H的第1列至第5列的1充填得更加紧密的方式(按照忽略0的方式),来存储对应于它们的解码中间结果D615(D701)。
更具体地说,当把第j行第i列表示为(j,i)时,在用于存储解码中间结果的RAM 702的第1地址处,存储对应于图15的校验矩阵从(1,1)至(5,5)的5×5单位矩阵的1的数据。在第2地址处,存储对应于形成图15的校验矩阵从(6,1)至(10,5)的和矩阵(该和矩阵为第一移位矩阵和第二移位矩阵的和,其中,在第一移位矩阵中,5×5单位矩阵被向右循环移动1,而在第二移位矩阵中,5×5单位矩阵被向右循环移动2)的第一移位矩阵的1的位置的数据。此外,在第3地址处,存储对应于形成校验矩阵从(6,1)至(10,5)的和矩阵的第二移位矩阵的1的位置的数据。随后,同样,在第4地址和第5地址处,以这样的方式来存储数据,以便对应于图15的校验矩阵。
在用于存储解码中间结果的RAM 702的第6地址至第10地址处,存储对应于图15的校验矩阵从第11列至第15列的1的数据。也就是说,在第6地址处,存储对应于形成校验矩阵从(11,11)至(15,15)的和矩阵(该和矩阵为5×5单位矩阵和第一移位矩阵的和,其中,在第一移位矩阵中,5×5单位矩阵被向右循环移动3)的第一移位矩阵的1的位置的数据,并且在第7地址处,存储对应于形成校验矩阵的(11,11)至(15,15)的和矩阵的单位矩阵的1的数据。随后,同样,在第8地址至第10地址处,以这样的方式来存储数据,以便对应于校验矩阵。
类似地,在用于存储解码中间结果的RAM 702的第10地址至第28地址处,按照对应于图15的校验矩阵这样的方式,存储对应于从第21列至第25列、从第31列至第35列、从第41列至第45列、从第51列至第55列、从第61列至第65列、从第71列至第75列、从第81列至第85列的1的数据。也就是说,用于存储解码中间结果的RAM 702的字的数目为28。
在用于存储解码中间结果的RAM 703的第1地址至第5地址处,按照对于每一行、在水平方向上(在列方向上)将图15的校验矩阵H的第6列至第10列的1充填得更加紧密的方式(按照忽略0的方式),来存储对应于它们的解码中间结果D615(D702)。
更具体地说,在用于存储解码中间结果的RAM 703的第1地址处,存储对应于形成校验矩阵从(6,1)至(10,5)的和矩阵(该和矩阵为第一移位矩阵和第一移位矩阵的和,其中,在第一移位矩阵中,5×5单位矩阵被向右循环移动1,而在第二移位矩阵中,单位矩阵被向右循环移动2)的第一移位矩阵的1的数据,其中,第一移位矩阵为校验矩阵的子矩阵。在第2地址处,存储对应于形成从(6,1)至(10,5)的和矩阵的第二移位矩阵的1的数据,其中,第二移位矩阵是校验矩阵的子矩阵。随后,类似地,在第3地址至第5地址处,同样,以这样的方式来存储数据,以便对应于校验矩阵的子矩阵。
类似地,在用于存储解码中间结果的RAM 703的第6地址至第26地址处,存储对应于图15的校验矩阵从第16列至第20列、从第26列至第30列、从第36列至第40列、从第46列至第50列、从第56列至第60列、从第66列至第70列、从第76列至第80列以及从第86列至第90列的1的数据。也就是说,用于存储解码中间结果的RAM 703的字的数目为26。
如上所述,用于存储解码中间结果的RAM 702的字的数目为28,并且用于存储解码中间结果的RAM 703的字的数目为26。
图32是图示用于存储解码中间结果的存储器610的用于存储解码中间结果的RAM 702、和用于存储解码中间结果的RAM 703的读取和写入操作的时序图。
在图32中,水平轴表示时间(t)。
在用于存储解码中间结果的存储器610中,当计算部件612要进行第一计算时,基于从控制部件617提供的控制信号D7202,从用于存储解码中间结果的RAM 702读取作为第二计算结果而获得的已被存储的解码中间结果D703,或者基于从控制部件617提供的控制信号D7203,从用于存储解码中间结果的RAM 703读取作为第二计算结果而获得的已被存储的解码中间结果D704。将所读取的解码中间结果通过开关704提供给循环移位电路614。
当计算部件615要进行第二计算时,将作为第二计算结果而获得的解码中间结果D615(vi’)从计算部件615提供给用于存储解码中间结果的存储器610。在将解码中间结果D615写入到用于存储解码中间结果的RAM 702和用于存储解码中间结果的RAM 703之一的预定地址处的同时,从其它RAM读取先前作为计算部件615进行的第二计算的结果而获得的解码中间结果D610(vi’),并通过循环移位电路614将其输出到计算部件615。
将5个解码中间结果D615从计算部件615提供给开关701,此外,将控制信号D7201提供给开关701,其中,控制信号D7201指示选择用于存储解码中间结果的RAM 702和用于存储解码中间结果的RAM 703之一,作为用于存储解码中间结果D615的存储器。基于控制信号D7201,开关701选择用于存储解码中间结果的RAM 702和用于存储解码中间结果的RAM 703之一,并将5个解码中间结果D612提供给所选择的它们中的一个。
将5个解码中间结果D612作为解码中间结果D701从开关701提供给用于存储解码中间结果的RAM 702,此外,将指示地址的控制信号D7022从控制部件617提供给RAM 702。用于存储解码中间结果的RAM 702读取已被存储在由控制信号D7202指示的地址处的5个解码中间结果D701,并将它们作为解码中间结果D703提供给开关704,其中,先前作为计算部件615进行的第二计算的结果而获得所述5个解码中间结果D701。此外,用于存储解码中间结果的RAM 702将从开关701提供的5个解码中间结果D702存储(写入)到由控制信号D7202指示的地址处。
将5个解码中间结果D615作为解码中间结果D702从开关701提供给用于存储解码中间结果的RAM 703,此外,将指示地址的控制信号D7203从控制部件617提供给RAM 703。用于存储解码中间结果的RAM 703读取已被存储在由控制信号D7203指示的地址处的5个解码中间结果D702,并将它们作为解码中间结果D704提供给开关704,其中,先前作为计算部件615进行的第二计算的结果而获得所述5个解码中间结果D702。此外,用于存储解码中间结果的RAM 702将从开关701提供的5个解码中间结果D702存储(写入)到由控制信号D7203指示的地址处。
将解码中间结果D703从用于存储解码中间结果的RAM 702提供给开关704,或者将解码中间结果D704从用于存储解码中间结果的RAM 703提供给开关704。此外,将控制信号D7204从控制部件617提供给开关704,该控制信号D7204指示选择用于存储解码中间结果的RAM 702和用于存储解码中间结果的RAM 703之一。基于控制信号D7204,开关704选择用于存储解码中间结果的RAM 702和用于存储解码中间结果的RAM 703之一,并将从所选择的RAM提供的5个解码中间结果作为5个解码中间结果D610提供给计算部件615。
在用于存储解码中间结果的存储器610中,当计算部件615要进行第二计算时,基于控制信号D7202,用于存储解码中间结果的RAM 702以5个结果的单位,从先前作为计算部件615进行的第二计算的结果而获得的已被存储的解码中间结果D701中,将存储在相同地址处的、对应于校验矩阵从第1列至第5列的1的解码中间结果D701读取5次,并通过开关704将它们提供给计算部件615。也就是说,由于图15的校验矩阵H的列权重为5,因此,存在5个对应于校验矩阵H每一列的1的解码中间结果,并且,用于存储解码中间结果的RAM 702以5个结果为单位、将对应于从第1列至第5列的1的解码中间结果D701读取5次。
接下来,基于控制信号D7203,用于存储解码中间结果的RAM 703从先前作为计算部件615进行的第二计算的结果而获得的、已被存储的解码中间结果D702中,将存储在相同地址处的、对应于校验矩阵从第6列至第10列的1的5个解码中间结果D702连续读取5次,并将它们通过开关704和循环移位电路614提供给计算部件615。同时,将对应于校验矩阵从第1列至第5列的1的5个解码中间结果D615作为解码中间结果D701通过开关701提供给用于存储解码中间结果的RAM 702,其中,作为当前正由计算部件615进行的第二计算的结果而获得所述解码中间结果D615。基于控制信号D7202,用于存储解码中间结果的RAM 702将解码中间结果D701在存储已读取的解码中间结果D703的地址处连续存储5次。
随后,基于控制信号D7202,用于存储解码中间结果的RAM 702以5个结果为单位,从先前作为计算部件615进行的第二计算的结果而获得的、已被存储的解码中间结果D701中,将存储在相同地址处的、对应于校验矩阵从第11列至第15列的1的解码中间结果D701连续读取5次,并将它们通过开关704提供给计算部件615。同时,将对应于校验矩阵从第6列至第10列的1的5个解码中间结果D612作为解码中间结果D702通过开关701提供给用于存储解码中间结果的RAM 703,其中,作为当前正由计算部件615进行的第二计算的结果而获得所述解码中间结果D612。基于控制信号D7203,用于存储解码中间结果的RAM 703将已读取的解码中间结果D702在存储解码中间结果D704的地址处连续存储5次。
随后,类似地,用于存储解码中间结果的RAM 702和用于存储解码中间结果的RAM 703交替进行5次读取和写入,直到作为计算部件615进行的第二计算的结果而获得的、对应于所有1的解码中间结果被存储在用于存储解码中间结果的RAM 702或用于存储解码中间结果的RAM 703中为止。
图33是图示图26的解码设备600的解码过程的流程图。例如,当要解码的所接收数据被存储在用于接收的存储器616中时,开始这个过程。
在步骤S70,循环移位电路614进行重新排列在步骤S76(将在以后描述)存储的5个解码中间结果D613的循环移位,并将它们提供给计算部件615,其中,从用于存储解码中间结果的存储器613提供所述5个解码中间结果D613。
更具体地说,将5个解码中间结果D613从用于存储解码中间结果的存储器613提供给循环移位电路614。此外,将对应于解码中间结果D613的控制信号D621从控制部件617提供给循环移位电路614,其中,该控制信号D621指示关于这样的事实的信息(矩阵数据)作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果来排列校验矩阵的1。基于控制信号D621,循环移位电路614将5个解码中间结果D613循环移位(重新排列),并将它们作为解码中间结果D614提供给计算部件615。
当还没有对从用于接收的存储器616提供的所接收数据D617进行第一计算、并且解码中间结果D612还没有被存储在用于存储解码中间结果的存储器613中时,计算部件615将结果设置为初始值。
在步骤S71,计算部件615进行第二计算,并将作为计算结果的解码中间结果D615提供给用于存储解码中间结果的存储器610。
更具体地说,在步骤S70,将5个解码中间结果D614从循环移位电路614提供给计算部件615,并且,在步骤S72(将在以后描述),将先前的解码中间结果D610从用于存储解码中间结果的存储器610提供给计算部件615。从用于所接收数据的存储器616提供5个所接收数据D617,并将5个解码中间结果D615和D610以及所接收数据D617单独提供给计算部件615的计算器6151至6155的每一个。此外,将控制信号D622从控制部件617提供给计算部件615,并将控制信号D622提供给计算器6151至6155。
基于控制信号D622,计算器6151至6155每一个都通过使用解码中间结果D614和D610以及所接收数据D617来进行根据式(1)、式(10)和式(11)的计算,并将作为计算结果获得的、对应于校验矩阵每一列的1的解码中间结果D615(vi’)提供给用于存储解码中间结果的存储器610。
在步骤S71的处理之后,该过程进行到步骤S72,在该步骤处,用于存储解码中间结果的存储器610将在步骤S71从计算部件615提供的解码中间结果D615存储在相同地址处,读取已存储的解码中间结果D615(D610),并将它们提供给循环移位电路611和计算部件615。
在步骤S72的处理之后,该过程进行到步骤S73,在该步骤处,控制部件617确定计算部件615是否计算了对应于校验矩阵每一列的1的所有解码中间结果D615。当控制部件617确定没有计算所有解码中间结果D615时,该过程返回步骤S70,并再次进行上述处理。
另一方面,当在步骤S73中控制部件617确定计算部件615计算了所有解码中间结果D615时,该过程进行到步骤S74,在该步骤处,循环移位电路611将从用于存储解码中间结果的存储器610提供的解码中间结果D610(vi’)循环移位。
更具体地说,将5个解码中间结果D610从用于存储解码中间结果的存储器610提供给循环移位电路611。此外,将对应于解码中间结果D610的控制信号D619从控制部件617提供给循环移位电路611,其中,控制信号D619指示关于这样的事实的信息(矩阵数据)作为例如将形成校验矩阵基础的单位矩阵循环移位多少次的结果来排列校验矩阵的1。基于控制信号D619,循环移位电路611将5个解码中间结果D610循环移位(重新排列),并将它们作为解码中间结果D611提供给计算部件612。
在步骤S74的处理之后,该过程进行到步骤S75,在该步骤处,计算部件612进行第一计算,并将作为计算结果的解码中间结果D612提供给循环移位电路614。
更具体地说,在步骤S74,将5个解码中间结果D611(vi’)从循环移位电路611提供给计算部件612,并将解码中间结果D611单独提供给计算部件612的计算器6121至6125的每一个。此外,将控制信号D621从控制部件617提供给计算部件612,并将控制信号D621提供给计算器6121至6125。
基于控制信号D619,计算器6121至6125每一个都通过使用解码中间结果D611来进行根据式(9)的计算,并将作为计算结果获得的、对应于校验矩阵的行的解码中间结果D612(w)提供给用于存储解码中间结果的存储器613。
在步骤S75的处理之后,该过程进行到步骤S76,在该步骤处,用于存储解码中间结果的存储器613将在步骤S75从计算部件612提供的解码中间结果D612存储在相同地址处,然后,该过程进行到步骤S77。
在步骤S77,控制部件617确定计算部件612是否计算了对应于校验矩阵所有行的解码中间结果D612。当控制部件617确定没有计算所有解码中间结果时,该过程返回步骤S74,并再次进行上述处理。
另一方面,当在步骤S77中控制部件617确定计算部件612计算了对应于所有行的解码中间结果D612时,该过程完成。
解码设备600将图33的解码过程重复进行所述解码数目,并将将作为根据上述式(5)的计算结果而由计算部件621获得的值D661作为最终解码结果输出。
在上面的描述中,尽管用于存储解码中间结果的存储器610由两个单端口RAM构成,但是,如果对一个RAM的读取和写入不同时发生,则它可以由3个或更多RAM构成。当RAM的物理位宽度不够时,通过使用多个RAM提供相同的控制信号,可以将这些RAM逻辑地假设为一个RAM。
对于缺少棱数据(对应于棱的消息)的部分,在存储在存储器期间(当数据被存储在用于存储解码中间结果的存储器610和613中时),不存储消息,而在计算期间(在计算部件612处的第一计算期间和在计算部件615处的第二计算期间),不进行计算。
如果将桶式(barrel)移位器用于图16A和16B的循环移位电路314和320、图18的循环移位电路411和414、以及图26的循环移位电路611和614,则可以在减小电路规模的同时实现所希望的操作。
在上述情况中,出于描述简单的原因,将p为5,即形成校验矩阵的子矩阵的行数目和计算数目为5的情况用作示例。子矩阵的行数目和列数目不一定为5,并且可以根据校验矩阵而取不同的值。例如,p可以为360或392。
此外,在本实施例中,使用了码长度为90和编码率为2/3的LDPC码。然而,码长度和编码率可以是任意值。例如,当子矩阵的行数目和列数目p为5时,如果棱的总数目小于或等于5,则可以通过只改变控制信号,使用图16A至16C的解码设备300、图18的解码设备400、和图26的解码设备600来将甚至是任意码长度和编码率的LDPC码解码。
此外,用于满足一定条件的某种LDPC码的解码设备能够将满足该条件的所希望的任意编码率和任意码长度的LDPC码解码,其中,所述条件为子矩阵的行数目和列数目p为预定值,并且棱的总数目小于或等于特定值。
当校验矩阵不是子矩阵的行和列数目p的倍数时,可以通过将全为0的元素分配到校验矩阵的部分(fraction)之外而假设校验矩阵是p的倍数,来应用本发明。
接下来,可以利用硬件来进行上述过程序列,并且,也可以利用软件来进行该过程序列。当利用软件来进行该过程序列时,将形成此软件的程序安装到通用计算机等中。
相应地,图34示出安装了用于执行上述过程序列的程序的计算机的实施例的结构示例。
可以将程序事先记录在合并在计算机内的充当记录介质的硬盘905和RAM 903中。
可替换地,可以将程序临时或永久存储(记录)在诸如软盘、CD-ROM(致密盘只读存储器)、MO(磁光)盘、DVD(数字多用途盘)、磁盘或半导体存储器的可移动记录介质911中。可以作为所谓的打包软件来提供这样的可移动记录介质911。
除了从诸如上面所述的可移动记录介质911安装到计算机中以外,可以以无线的方式将程序从下载站点通过用于数字卫星广播的人造卫星传递到计算机,或者可以将程序通过诸如LAN(局域网)或因特网的网络有线地传递到计算机。在计算机中,可以在通信部件908处接收以这种方式传递的程序,并将其安装到其中包含的硬盘905中。
计算机合并了CPU(中央处理单元)902。输入/输出接口910通过总线901连接到CPU 902。当用户通过操作包括键盘、鼠标、麦克风等的输入部件907而经由输入/输出接口910输入指令时,CPU902根据该指令执行存储在ROM(只读存储器)903中的程序。可替换地,CPU 902将以下程序加载到RAM(随机存取存储器)904中,并且CPU 902执行该程序,其中,所述程序为存储在硬盘905中的程序;从卫星或网络传递、由通信部件908接收并被安装到硬盘905中的程序;或者从装载在驱动器909中的可移动记录介质911读取、并被安装到硬盘905中的程序。因此,CPU 902进行根据上述流程图的处理或根据上述方框图的处理。然后,例如,CPU 902从包括LCD(液晶显示器)、扬声器等的输出部件906、通过输入/输出接口910输出处理结果,从通信部件908传送处理结果,并按照所需而进一步将它记录在硬盘905中。
在本说明书中,不需要根据作为流程图写出的顺序来以时间顺序执行写入用于使计算机能够进行各种处理的程序的处理步骤。此外,可以同时或单独地执行它们(例如,并行处理或基于对象的处理)。
所述程序可利用一台计算机处理,或者可由多台分布式计算机处理。此外,可以将程序传递到远程计算机并且可以在那里进行处理。
对于将具有可由以下矩阵的组合代表的校验矩阵的LDPC码解码,采用了用于同时进行p个校验节点计算和p个可变节点计算的架构,其中,所述矩阵为(P×P)单位矩阵;准单位矩阵,其中用0代替了作为单位矩阵元素的一个或更多1;移位矩阵,其中单位矩阵或准单位矩阵被循环移位;和矩阵,其为单位矩阵、准单位矩阵、和移位矩阵的两个或更多的和;以及(P×P)0矩阵。因此,通过同时进行p个节点计算,可以将操作频率限制在可行的范围内。这样,尽管可以进行大量迭代解码,但是,有可能防止在从存储器(FIFO和RAM)读取和写入到存储器(FIFO和RAM)期间对不同地址的同时访问发生。
当通过重复使用图16A至16C的解码设备300来将由图15的校验矩阵代表的LDPC码解码时,有可能以对每个校验节点和每个可变节点每5条棱的方式对269条棱进行计算。因此,对于一次解码,解码设备需要进行269/5×2≈108次时钟操作。因此,为了进行50次解码,当接收到90个码信息时,解码设备需要进行108×50=5400次时钟操作,因而可以使用近似为接收频率60倍高的操作频率。因此,根据图16A至16C的解码设备,当与图9的用于依次进行节点计算的解码设备相比较时,只需要1/5的操作频率。当从电路规模的方面看时,由于存储器大小相同,因此,即使逻辑电路稍微变大,对整体的影响也是小的。
图18的解码设备400和图26的解码设备600具有小于图16A至16C的解码设备300的存储容量的存储容量。
例如,当LDPC码的校验矩阵为图15的校验矩阵、并且LDPC码的量化位数目为6时,在图16A至16C的解码设备300中,棱数据存储器需要两个具有269(棱的总数目)×6=1614位的容量的RAM,即,对于两个RAM,需要1614×2=3228位的容量。作为比较,例如,当解码中间结果v的量化位数目为9时,在图18的解码设备400中,需要给用于存储解码中间结果的存储器413提供具有棱的总数目的1614位容量的RAM,并且需要给用于存储解码中间结果的存储器410提供这样的RAM,其具有LDPC码的码长度(校验矩阵的列数目)和解码中间结果v的量化位数目的相乘值的容量,即90×9=810位的容量。这样,可以减小解码设备的电路规模。此外,在图18的解码设备400中,由于用于进行第二计算的计算部件415没有必要具有FIFO存储器,因此,可以减小逻辑的电路规模。
此外,例如,当LDPC码的校验矩阵是图15的校验矩阵、并且解码中间结果v的量化位数目为10时,在图26的解码设备600中,需要给用于存储解码中间结果的存储器610提供具有棱的总数目的1614位容量的RAM,并且需要给用于存储解码中间结果的存储器613提供这样的RAM,其具有校验矩阵的行数目和解码中间结果v的相乘值的容量,即30×10=300位的容量。这样,可以减小解码设备的电路规模。此外,在图26的解码设备600中,由于用于进行第一计算的计算部件612没有必要具有FIFO存储器,因此,可以减小逻辑的电路规模。
一般而言,由于LDPC码的码长度大到数千至数万,因此使用p值大小为数百的LDPC码。在该情况中,使用根据本发明的解码设备的优点增加。
此外,由于根据本发明的解码设备如实地实现和积算法,因此不会出现除消息量化之外的解码损失。
工业适用性 根据上述观点,通过使用根据本发明的解码设备,高性能解码变得有可能。
权利要求
1.一种用于将低密度奇偶校验LDPC码解码的解码设备,所述LDPC码通过由多个子矩阵组成的校验矩阵来表示,所述子矩阵包括P×P单位矩阵、准单位矩阵、移位矩阵、和矩阵、以及P×P0矩阵,其中准单位矩阵是具有用0代替了一个或更多1的单位矩阵,移位矩阵是被循环移位的单位矩阵或准单位矩阵,和矩阵是所述单位矩阵、所述准单位矩阵、和所述移位矩阵中的两个或更多的和,所述解码设备包括
第一计算部件,用于同时进行用于将所述LDPC码解码的P个校验节点计算;
第二计算部件,用于同时进行用于将所述LDPC码解码的P个可变节点计算;和
消息存储部件,用于读取和写入对应于P条棱的消息数据,所述消息数据是作为所述P校验节点计算或者所述P可变节点计算的结果而获得的;
其中,对于其权重为2或更大的子矩阵,所述消息存储部件将对应于P条棱的消息数据存储在相同地址处,所述P条棱属于相加起来形成其权重为2或更大的所述子矩阵的每个单位矩阵、准单位矩阵和/或移位矩阵。
2.根据权利要求1的解码设备,其中,所述第一计算部件具有用于进行校验节点计算的P个校验节点计算器,以及
所述第二计算部件具有用于进行可变节点计算的P个可变节点计算器。
3.根据权利要求1的解码设备,其中,所述消息存储部件存储在校验节点计算期间以在行方向上将校验矩阵的1充填得更加紧密这样的方式来读取的对应于棱的消息数据。
4.根据权利要求1的解码设备,其中,所述消息存储部件存储在可变节点计算期间以在列方向上将校验矩阵的1充填得更加紧密这样的方式来读取的对应于棱的消息数据。
5.根据权利要求1的解码设备,其中所述消息存储部件包括行数/P个先进先出FIFO和列数/P个FIFO,以及
所述行数/P个FIFO和所述列数/P个FIFO每一个都具有分别对应于所述校验矩阵的行权重和列权重的多个字。
6.根据权利要求1的解码设备,其中,所述消息存储部件包括随机存取存储器,以及
所述随机存取存储器按照将所述消息数据充填得更加紧密这样的方式、以读出顺序存储所述消息数据,并以存储位置顺序读取所述消息数据。
7.根据权利要求1的解码设备,还包括
接收信息存储部件,用于存储所接收的LDPC码的信息,以及同时读取P个所述所接收信息。
8.根据权利要求7的解码设备,其中,所述接收信息存储部件按照这样的方式来存储所述接收信息,该方式为可按照所述可变节点计算所必需的顺序来读取所接收信息。
9.根据权利要求1的解码设备,还包括
重新排列部件,用于重新排列作为所述P个校验节点计算或所述P个可变节点计算的结果而获得的消息。
10.根据权利要求9的解码设备,其中,所述重新排列部件包括桶式移位器。
11.根据权利要求1的解码设备,其中,所述第一计算部件和所述第二计算部件确定对应于P条棱的消息。
12.一种用于将低密度奇偶校验LDPC码解码的解码设备,所述LDPC码通过由多个子矩阵组成的校验矩阵来表示,所述子矩阵包括P×P单位矩阵、准单位矩阵、移位矩阵、和矩阵、以及P×P0矩阵,其中准单位矩阵是具有用0代替了一个或更多1的单位矩阵,移位矩阵是被循环移位的单位矩阵或准单位矩阵,和矩阵是所述单位矩阵、所述准单位矩阵、和所述移位矩阵中的两个或更多的和,所述解码设备包括
第一计算部件,用于同时进行用于将所述LDPC码解码的P个校验节点计算;
第二计算部件,用于同时进行用于将所述LDPC码解码的P个可变节点计算;和
消息存储部件,用于读取和写入对应于P条棱的消息数据,所述消息数据是作为所述P校验节点计算或者所述P可变节点计算的结果而获得的;
其中,对于由准单位矩阵组成的子矩阵,所述消息存储部件将对应于P条棱的消息数据存储在相同地址处,所述P条棱属于相加起来形成由准单位矩阵组成的所述子矩阵的每个单位矩阵、准单位矩阵和/或移位矩阵。
13.根据权利要求12的解码设备,其中,所述第一计算部件具有用于进行校验节点计算的P个校验节点计算器,以及
所述第二计算部件具有用于进行可变节点计算的P个可变节点计算器。
14.根据权利要求12的解码设备,其中,所述消息存储部件存储在校验节点计算期间以在行方向上将校验矩阵的1充填得更加紧密这样的方式来读取的对应于棱的消息数据。
15.根据权利要求12的解码设备,其中,所述消息存储部件存储在可变节点计算期间以在列方向上将校验矩阵的1充填得更加紧密这样的方式来读取的对应于棱的消息数据。
16.根据权利要求12的解码设备,其中所述消息存储部件包括行数/P个先进先出FIFO和列数/P个FIFO,以及
所述行数/P个FIFO和所述列数/P个FIFO每一个都具有分别对应于所述校验矩阵的行权重和列权重的多个字。
17.根据权利要求12的解码设备,其中,所述消息存储部件包括随机存取存储器,以及
所述随机存取存储器按照将所述消息数据充填得更加紧密这样的方式、以读出顺序存储所述消息数据,并以存储位置顺序读取所述消息数据。
18.根据权利要求12的解码设备,还包括
接收信息存储部件,用于存储所接收的LDPC码的信息,以及同时读取P个所述所接收信息。
19.根据权利要求18的解码设备,其中,所述接收信息存储部件按照这样的方式来存储所述接收信息,该方式为可按照所述可变节点计算所必需的顺序来读取所接收信息。
20.根据权利要求12的解码设备,还包括
重新排列部件,用于重新排列作为所述P个校验节点计算或所述P个可变节点计算的结果而获得的消息。
21.根据权利要求20的解码设备,其中,所述重新排列部件包括桶式移位器。
22.根据权利要求12的解码设备,其中,所述第一计算部件和所述第二计算部件确定对应于P条棱的消息。
全文摘要
提供一种用于实现LDPC码解码的解码装置、解码方法和解码程序,其能够限制电路尺寸、将操作频率限制到足够可行的范围内、并容易地控制存储器访问。LDPC码的校验矩阵由p×p单位矩阵、一个或更多1变为0的单位矩阵、它们的循环移位、它们的和、以及p×p的0矩阵的组合组成。在可变节点计算部件(319)同时进行P个可变节点计算的同时,校验节点计算部件(313)同时进行P个校验节点计算。
文档编号H03M13/09GK101567699SQ200910147019
公开日2009年10月28日 申请日期2004年4月19日 优先权日2003年5月13日
发明者横川峰志, 宫内俊之, 饭田康博 申请人:索尼株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1