CN1855731B - 解码装置及解码方法 - Google Patents

解码装置及解码方法 Download PDF

Info

Publication number
CN1855731B
CN1855731B CN2006100760679A CN200610076067A CN1855731B CN 1855731 B CN1855731 B CN 1855731B CN 2006100760679 A CN2006100760679 A CN 2006100760679A CN 200610076067 A CN200610076067 A CN 200610076067A CN 1855731 B CN1855731 B CN 1855731B
Authority
CN
China
Prior art keywords
node
check
aforementioned
computing
quantized value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2006100760679A
Other languages
English (en)
Other versions
CN1855731A (zh
Inventor
横川峰志
筱原雄二
新谷修
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Semiconductor Solutions Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Publication of CN1855731A publication Critical patent/CN1855731A/zh
Application granted granted Critical
Publication of CN1855731B publication Critical patent/CN1855731B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1134Full parallel processing, i.e. all bit nodes or check nodes are processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

提供一种解码装置及解码方法,抑制装置的大规模化且高精度地进行LDPC码的解码。校验节点计算器(171)进行用于LDPC码的解码的校验节点运算,该校验节点运算包含非线性函数φ(x)的运算及非线性函数的逆函数φ-1(x)的运算。变量节点计算器(103)进行用于LDPC码的解码的变量节点的变量节点运算。并且,校验节点计算器(171)及变量节点计算器(103),在作为校验节点运算及变量节点运算进行的处理中的、从运算非线性函数φ(x)后到运算逆函数φ-1(x)为止的处理中,使用表示比第1量化值精度高的数值的第2量化值,在其他处理中使用第1量化值。本发明例如能够应用于接收卫星广播的调谐器。

Description

解码装置及解码方法
技术领域
本发明涉及一种解码装置及解码方法,特别是涉及能够抑制装置的大规模化且高精度地对用低密度奇偶校验码(LDPC码)编码后的码进行解码的解码装置及解码方法。
背景技术
近年来,例如移动体通信、外层空间通信等通信领域、以及地波或卫星数字广播等广播领域的研究有了显著的进度,与此同时,以提高错误纠正编码及解码的效率为目的,也正积极地进行着与编码理论相关的研究。
作为编码性能的理论极限,已知由香农(C.E.Shannon)的信道编码定理提供的香农极限。以开发表示与该香农极限接近的性能的编码为目的,正在进行与编码理论相关的研究。近年来,作为表示与香农极限接近的性能的编码方法,例如开发了称为并行级联卷积码(PCCC(Parallel Concatenated ConvolutionalCodes))、串行级联卷积码(SCCC(Serially ConcatenatedConvolutional Codes))等Turbo编码(Turbo coding)的方法。另外,一方面,开发了这些Turbo码,另一方面作为从前已知的编码方法的低密度奇偶校验码(Low Density Parity Check codes)(下面称为LDPC码)受到关注。
LDPC码,最初由R.G.Gallager在“R.G.Gallager,″LowDensity Parity Check Codes″,Cambridge,Massachusetts:M.I.T.Press,1963”中提出,之后,在“D.J.C.MacKay,″Gooderror correcting codes based on very sparse matrices″,Submitted to IEEE Trans.Inf.Theory,IT-45,pp.399-431,1999”、“M.G.Luby,M.Mitzenmacher,M.A.Shokrollahi andD.A.Spielman,″Analysis of low density codes and improveddesigns using irregular graphs″,in Proceedings of ACMSymposium on Theory of Computing,pp.249-258,1998”等中再次被关注。
通过近年的研究可知,LDPC码与Turbo码等同样,随着加长码长能够得到接近香农极限的性能。另外,由于LDPC码具有最小距离与码长成比例的性质,因此作为其特征也可以例举出如下的优点,即模块错误概率特性好,并且几乎不产生在Turbo码等的解码特性中被观测的错误层(error floor)现象。
下面具体说明这样的LDPC码。此外,LDPC码是线性码,不需要必须是二元,但是,在此作为二元的LDPC码来进行说明。
LDPC码最大的特征是定义该LDPC码的校验矩阵(paritycheck matrix:奇偶校验矩阵)是稀疏矩阵。在此,稀疏矩阵是矩阵的成分“1”的个数非常少的矩阵,当设为由H表示稀疏的校验矩阵时,作为这样的校验矩阵H,例如如图1所示,有各列的汉明权重(“1”的数目)是“3”、且各行的汉明权重是“6”的矩阵等。
这样,由各行及各列的汉明权重固定的校验矩阵H定义的LDPC码被称为规则LDPC码。另一方面,由各行及各列的汉明权重不固定的校验矩阵H定义的LDPC码被称为不规则LDPC码。
根据校验矩阵H生成生成矩阵G,并将该生成矩阵G与二元信息消息进行乘法运算而生成码字,从而实现用这样的LDPC码进行的编码。具体地说,用LDPC码进行编码的编码装置首先在校验矩阵H与转置矩阵HT之间,算出公式GHT=0成立的生成矩阵G。在此,当生成矩阵G是k×n矩阵(k行n列的矩阵)时,校验矩阵H是n-k行n列的矩阵。
编码装置对生成矩阵G乘以由k位构成的信息消息(矢量)u,生成由n位构成的码字(LDPC码)c(=uG)。使由该编码装置生成的码字c中,值是“0”的符号位映射为“+1”、值是“1”的符号位映射为“-1”而进行发送,通过规定的通信线路在接收侧接收。
此外,在例如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。
另一方面,能够通过Gallager提出的称为概率解码(ProbabilisticDecoding)的算法进行LDPC码的解码,该算法是基于由变量节点(variable node(也称为消息节点(message node)))、和校验节点(check node)构成的、Tanner图(Tanner graph)上的置信传播(belief propagation)的消息传递算法。在此,下面适当将变量节点和校验节点简称为节点。
然而,在概率解码中,在各节点之间交接的消息是实数值,因此,为了解析性地进行解出,需要追踪取得连续值的消息的概率分布本身,需要进行非常困难的解析。因此,Gallager作为LDPC码的解码算法,提出了算法A或算法B。
LDPC码的解码通常按照如图3所示的顺序进行。此外,在此将LDPC码(码字c的)接收值设为U0,将从校验节点输出的消息(下面,适当地也称为校验节点消息)设为uj,将从变量节点输出的消息(下面,适当地也称为变量节点消息)设为vi。另外,消息是由对数似然比(log likelihood ratio)表现与“0”的相似度的实数值。并且,设将接收值U0的与“0”的相似度的对数似然比表示为接收数据u0i
首先,在LDPC码的解码中,如图3所示,在步骤S11中接收接收值U0(接收数据u0i),消息uj被初始化为“0”,并且,取作为重复处理的计数器的整数的变量k被初始化为“0”,进入到步骤S12。在步骤S12中,基于接收数据u0i,通过进行式(1)所示的运算求出变量节点消息vi,并且基于该变量节点消息vi,通过进行式(2)所示的运算求出校验节点消息uj
式1
v i = u 0 i + Σ j = 1 d v - 1 u j . . . ( 1 )
式2
tanh ( u j 2 ) = d c - 1 i = 1 tanh ( v i 2 ) . . . ( 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
u j = R ( v 1 , R ( v 2 , R ( v 3 , . . . R ( v d c - 2 , v d c - 1 ) ) ) ) . . . ( 4 )
在步骤S12中,进而变量k只增加“1”,并进入步骤S13。在步骤S13中,判断变量k是否大于或等于规定的重复解码次数N。在步骤S13中,当判断为变量k小于N时,返回到步骤S12,下面重复同样的处理。
另外,在步骤S13中,当判断为变量k大于或等于N时,进入步骤S14,通过进行式(5)所示的运算,求出作为最终输出的解码结果的消息v并输出,结束LDPC码的解码处理。
式5
v = u 0 i + Σ j = 1 d v u j . . . ( 5 )
在此,与式(1)的运算不同,使用来自连接在变量节点上的所有边的消息来进行式(5)的运算。
例如在(3,6)码的情况下,如图4所示,这样的LDPC码的解码在各节点之间进行消息的交换。此外,在图4中的由“=”表示的节点(变量节点)上进行式(1)所示的运算,在由“+”表示的节点(校验节点)上进行式(2)所示的运算。特别是在算法A中,将消息二元化,在由“+”表示的节点上进行输入到该节点的dc-1个消息的异或运算,在由“=”表示的节点上,当输入到该节点的dv-1个消息全部是不同的位值时,对接收数据R(u0i)将码进行翻转并输出。
另外,另一方面,近年来还进行了与LDPC码的解码的安装法相关的研究。在叙述安装方法之前,首先示意性地说明LDPC码的解码。
图5是(3,6)LDPC码(编码率1/2、码长12)的校验矩阵(paritycheck matrix)的例子。如图6所示,能够使用Tanner图示出LDPC码的校验矩阵H。在此,在图6中由“+”表示的是校验节点,由“=”表示的是变量节点。校验节点和变量节点分别与校验矩阵H的行和列对应。校验节点和变量节点之间的连接线是边(edge),相当于校验矩阵的“1”。即,当校验矩阵H的第j行第i列的成分是1时,在图6中从上开始第i个变量节点(“=”的节点)、和从上开始第j个校验节点(“+”的节点)通过边被连接。边表示与变量节点对应的LDPC码的位具有与校验节点对应的限制条件。此外,图6成为图5的校验矩阵H的Tanner图。
作为LDPC码的解码方法的和乘积算法(Sum Product Algorithm),重复进行变量节点的运算和校验节点的运算。
如图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
u j = 2 tan h - 1 ( Π i = 1 d c - 1 tanh ( v i 2 ) )
= 2 tanh - 1 [ exp { Σ i = 1 d c - 1 ln ( | tanh ( v i 2 ) | ) } × Π i = 1 d c - 1 sign ( tanh ( v i 2 ) ) ]
= 2 tanh - 1 [ exp { - ( Σ i = 1 d c - 1 - ln ( tanh ( | v i | 2 ) ) ) } ] × Π i = 1 d c - 1 sign ( v i ) . . . ( 6 )
并且,对于x≥0,将非线性的函数(非线性函数)φ(x)定义为式φ(x)=ln(tanh(x/2))时(ln()是自然对数函数),该非线性函数φ(x)的逆函数φ-1(x)由式φ-1(x)=2tanh-1(e-x)表示,因此,式(6)能够写成如式(7)所示。
式7
u j = φ - 1 ( Σ i = 1 d c - 1 φ ( | v i | ) ) × Π i = 1 d c - 1 sign ( v i ) . . . ( 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。
另外,LDPC码的解码方法除了和乘积算法之外,例如也被称为置信传播(Belief Propagation)等,但无论何种情况,进行的运算内容都相同。
作为向解码装置安装和乘积算法的例子,说明通过逐一依次进行各节点运算来进行解码时(full serial decoding:完全串行解码)的安装法。
此外,将和乘积算法安装到硬件上时,需要以适当的电路规模和动作频率重复进行由式(1)表示的变量节点运算及由式(7)表示的校验节点运算。
另外,在此假设例如对由图9的36(行)×108(列)的校验矩阵H表现的码(编码率2/3、码长108)进行解码。图9的校验矩阵H的1的数是323,因而,在该Tanner图中,边的个数是323个。在此,在图9的校验矩阵中由“.”表示0。
图10示出了进行一次LDPC码的解码的解码装置的结构例。
在图10的解码装置中,按其动作的每1时钟(clock)计算与一个边对应的消息。
即,图10的解码装置由两个边用存储器100及102、一个校验节点计算器101、一个变量节点计算器103、一个接收用存储器104、一个控制部105构成。
在图10的解码装置中,从边用存储器100或者102逐一地读出消息,并利用该消息计算与期望的边对应的消息。并且,由该计算求出的消息被逐一地保存到后级的边用存储器102或者100中。当进行重复解码时,按纵列连接多个进行该一次解码的图10的解码装置、或者重复使用图10的解码装置,从而实现重复解码。此外,在此例如假设连接有多个图10的解码装置。
边用存储器100按照后级的校验节点计算器101读出的顺序,保存由前级的解码装置(未图示)的变量节点计算器103提供的消息(变量节点消息)D100。并且,在校验节点计算的阶段,边用存储器100按照保存的顺序,将消息D100作为消息D101提供给校验节点计算器101。
校验节点计算器101根据由控制部105提供的控制信号D106,使用由边用存储器100提供的消息D101(变量节点消息vi),按照式(7)进行运算(校验节点运算),将由该运算求出的消息D102(校验节点消息uj)提供给后级的边用存储器102。
边用存储器102按照后级的变量节点计算器103读出的顺序,保存由前级的校验节点计算器101提供的消息D102。并且,在变量节点计算的阶段,边用存储器102按照存储的顺序,将消息D102作为消息D103提供给变量节点计算器103。
而且,从控制部105将控制信号D107提供给变量节点计算器103,并且,从接收用存储器104提供接收数据D104。变量节点计算器103根据控制信号D107,使用由边用存储器102提供的消息D103(校验节点消息uj)和由接收用存储器104提供的接收数据D104(接收数据u0i),按照式(1)进行运算(变量节点运算),将其运算的结果得到的消息D105(变量节点消息vi)提供给未图示的后级解码装置的边用存储器100。
在接收用存储器104中保存LDPC码的接收数据u0i。控制部105将控制校验节点运算的控制信号D106、和控制变量节点运算的控制信号D107,分别提供给校验节点计算器101和变量节点计算器103。在边用存储器100中保存全部边的消息时,控制部105将控制信号D106提供给校验节点计算器101,在边用存储器102中保存全部边的消息时,将控制信号D107提供给变量节点计算器103。
图11示出了逐一地进行校验节点运算的图10的校验节点计算器101的结构例。
此外,在图11中,假设各消息包括符号位(表示正负的位)总计被量化为6位(bit),表示校验节点计算器101。即,消息由6位量化值表示,该6位量化值被分配为平均地分割成能够由带符号位的6位表示规定的数值范围的64个值的各数值。
另外,在图11中,进行由图9的校验矩阵H表示的LDPC码的校验节点运算。并且,图11的校验节点运算器101被提供时钟ck,该时钟ck被提供给需要的模块。并且,各模块与时钟ck同步进行处理。
图11的校验节点计算器101根据由控制部105提供的、例如1位控制信号D106,使用从边用存储器100逐一读入的消息D101(变量节点消息vi),按照式(7)进行运算。
即,在校验节点计算器101中,逐一地读入来自与校验矩阵H的各列对应的变量节点的6位消息D101(变量节点消息vi),作为其下位5位的绝对值D122(|vi|)被提供给LUT121,作为其最上位的符号位D121被提供给EXOR电路129和FIFO(First In First Out:先进先出)存储器133。另外,由控制部105向校验节点计算器101提供控制信号D106,该控制信号D106被提供给选择器124和选择器131。
LUT121读出对绝对值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被复位。
在此,在运算器122及寄存器123中,由LUT121提供的5位运算结果D123(φ(|vi|)),最大只累加与FIFO存储器127中的最大延迟次数相等的次数、即与校验矩阵H的行的最大权重相等的次数。现在,图9的校验矩阵H的行的最大权重是9,因而,在运算器122及寄存器123中,5位运算结果D123(φ(|vi|))最大被累加9次(进行9个5位值的累加)。因此,在运算器122的输出之后,为了能够表示对5位值进行9次累加得到的值,量化位数为比LUT121输出的5位的运算结果D123(φ(|vi|))仅多4位(能够表示9(次)的最小位数)的9位。
当逐一地读入校验矩阵一行的消息D101(变量节点消息vi),在寄存器123中保存了累加一行部分的运算结果D123得到的累加值时,由控制部105提供的控制信号D106从0变化到1。例如,当行的权重(row weight)是“9”时,控制信号D106从第1到第8时钟为止为“0”,在第9时钟为“1”。
当控制信号D106是“1”时,选择器124选择保存在寄存器123中的值、即选择从来自校验矩阵H一行的全部边的消息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的一行的全部边的消息D101(变量节点消息vi)求出的φ(|vi|)被累加为止。
另一方面,FIFO存储器127,在从寄存器125输出新的值D126(从i=1到i=dc为止的∑φ(|vi|))为止的期间,延迟LUT121输出的5位的运算结果D123(φ(|vi|)),作为5位的值D127提供给运算器126。运算器126从由寄存器125提供的值D126减去由FIFO存储器127提供的值D127,并将该减法运算结果作为5位的减法运算值D128提供给LUT128。即,运算器126从由来自校验矩阵H的一行的全部边的消息D101(变量节点消息vi)求出的φ(|vi|)的累加值,减去由来自想求出校验节点消息uj的边的消息D101(变量节点消息vi)求出的φ(|vi|),将该减法运算值(从i=1到i=dc-1为止的∑φ(|vi|))作为减法运算值D128提供给LUT128。
此外,运算器126从由寄存器125提供的9位的值D126减去由FIFO存储器127提供的5位的值D127,因此,其减法运算结果最大能够为9位,但输出5位的减法运算值D128。为此,无法由5位表示从由寄存器125提供的9位的值D126减去由FIFO存储器127提供的5位的值D127的减法运算结果时,也就是说,当减法运算结果超过可由5位表示的最大值(31(在二进制数中是11111))时,运算器126将减法运算结果截取为能够由5位表示的最大值,输出5位的减法运算值D128。
LUT128输出对减法运算值D128(从i=1到i=dc-1为止的∑φ(|vi|))进行了式(7)的逆函数φ-1(∑φ(|vi|))运算的5位的运算结果D129(φ-1(∑φ(|vi|)))。
与以上处理并行,通过运算保存在寄存器130中的1位的值D131和符号位D121的异或,EXOR电路129进行符号位之间的乘法运算,将1位的乘法运算结果D130重新保存到寄存器130。此外,当来自校验矩阵H的一行的全部边的消息D101(变量节点消息vi)的符号位D121被进行了乘法运算时,寄存器130被复位。
当来自校验矩阵H的一行的全部边的消息D101的符号位D121被进行乘法运算得到的乘法运算结果D130(从i=1到i=dc为止的∏sign(vi))被保存在寄存器130中时,由控制部105提供的控制信号D106从“0”变化到“1”。
当控制信号D106是“1”时,寄存器131选择保存在寄存器130中的值、即选择来自校验矩阵H的一行的全部边的消息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的一行的全部边的消息D101(变量节点消息vi)的符号位D121被进行乘法运算为止。
另一方面,在从寄存器132将新的值D133(从i=1到i=dc为止的∏sign(vi))提供给EXOR电路134为止的期间,FIFO存储器133将符号位D121进行延迟,作为1位的值D134提供给EXOR电路134。通过运算由寄存器132提供的值D133、和由FIFO存储器133提供的值D134的异或,EXOR电路134将值D133除以值D134,作为除法运算值D135输出1位的除法运算结果。即,EXOR电路134将来自校验矩阵H的一行的全部边的消息D101的符号位D121(sign(|vi|))的乘法运算值,除以来自想要求出校验节点消息uj的边的消息D101的符号位D121(sign(|vi|)),作为除法运算值D135输出该除法运算值(从i=1到i=dc-1为止的∏sign(|vi|))。
在校验节点计算器101中,作为消息D102(校验节点消息uj)输出将从LUT128输出的5位的运算结果D129设为下位5位、并且将从EXOR电路134输出的1位的除法运算值D135设为最上位的位(符号位)的总共6位。
如上所述,在校验节点计算器101中进行式(7)的运算,求出校验节点消息uj
此外,图9的校验矩阵H的行的权重最大是9、即提供给校验节点的变量节点消息vi的最大个数是9,因此,校验节点计算器101具有使9个变量节点消息vi的非线性函数的运算结果(φ(|vi|))延迟的FIFO存储器127和FIFO存储器133。当计算行的权重不到9的行的校验节点消息uj时,FIFO存储器127和FIFO存储器133中的延迟量被削减到该行的权重。
图12示出了逐一地进行变量节点运算的图10的变量节点计算器103的结构例。
此外,在图12中也与图11同样,假设各消息包括符号位被量化为总共6位(bit),表示变量节点计算器103。并且,在图12中,也进行由图9的校验矩阵H表示的LDPC码的变量节点运算。另外,对图12的变量节点计算器103提供时钟ck,时钟ck被提供给需要的模块。并且,各模块与时钟ck同步进行处理。
图12的变量节点计算器103根据由控制部105提供的例如1位的控制信号D107,利用从边用存储器102逐一读入的消息D103、和从接收用存储器104读入的接收数据D104(u0i),按照式(1)进行运算(变量节点运算)。
即,在变量节点计算器103中逐一地读入来自与校验矩阵H的各行对应的校验节点的6位的消息D103(校验节点消息uj),该消息D103被提供给运算器151和FIFO存储器155。另外,在变量节点计算器103中,从接收用存储器104逐一地读入6位的接收数据D104(u0i),提供给运算器156。并且,在变量节点计算器103中,由控制部105提供控制信号D107,该控制信号D107被提供给选择器153。
运算器151通过对6位的消息D103(校验节点消息uj)和保存在寄存器152中的9位的值D151进行加法运算,累加6位的消息D103,并将其结果得到的9位的累加值重新保存到寄存器152。此外,当来自校验矩阵H的一行的全部边的消息D103被进行了累加时,寄存器152被复位。
在此,在运算器151及寄存器152中,6位的消息D103最大只被累加与FIFO存储器155中的最大的延迟次数相等的次数、即与校验矩阵H的列的最大权重相等的次数。现在,图9的校验矩阵H的列的最大权重是5,因而,在运算器151及寄存器152中,6位的消息D103最大被累加5次(进行5个6位值的累加)。因此,在运算器151的输出之后,为了能够表示将6位的值累加5次得到的值,量化位数为比6位的消息D103只多3位(能够表示5(次)的最小位数)的9位。
当逐一地读入校验矩阵H的一列的消息D103,在寄存器152中保存了一列部分的消息D103被累加得到的值时,由控制部105提供的控制信号D107从“0”变化到“1”。例如,当列的权重是“5”时,控制信号D107在从第1到第4时钟为“0”,在第五时钟为“1”。
当控制信号D107是“1”时,选择器153选择保存在寄存器152中的值、即选择来自校验矩阵H的一列的全部边的消息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的一列的全部边的消息D103(校验节点消息uj)被累加为止。
另一方面,在从寄存器154输出新的值D152(从j=1到dv为止的∑uj)为止的期间,FIFO存储器155延迟来自校验节点的消息D103,作为6位的值D153提供给运算器156。运算器156从由寄存器154提供的值D152减去由FIFO存储器155提供的值D153。即,运算器156从来自校验矩阵H的一列的全部边的消息D103(校验节点消息uj)的累加值,减去来自想要求出变量节点消息vi的边的校验节点消息uj,求出其减法运算值(从j=1到dv-1为止的∑uj)。并且,在运算器156中将该减法运算值(从j=1到dv-1为止的∑uj)与由接收用存储器104提供的接收数据D104(u0i)进行加法运算,将其结果得到的6位的值作为消息D105(变量节点消息vi)输出。
如上所述,在变量节点计算器103中进行式(1)的运算,求出变量节点消息vi
此外,图9的校验矩阵H的列的权重最大是5、即提供给变量节点的校验节点消息uj的最大个数是5,因此,变量节点计算器103具有使5个校验节点消息uj延迟的FIFO存储器155。当对列的权重不到5的列的变量节点消息vi进行计算时,FIFO存储器155中的延迟量减少到该列的权重。
另外,运算器156进行从由寄存器154提供的9位的值D152减去由FIFO存储器155提供的6位的值D153、并且将由该减法运算得到的值与由接收用存储器104提供的6位的接收数据D104相加的运算,因此,其运算结果有时不到能够由6位的消息D105表示的最小值、或者超过最大值。当运算结果不到能够由6位的消息D105表示的最小值时,运算器156截取为该最小值,当运算结果超过能够由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进行校验节点运算。
此外,在图10中,作为解码装置安装的例子,是通过逐一地依次进行各节点的运算来进行LDPC码的解码(full serialdecoding:完全串行解码)的解码装置,但是除此之外,还提出了通过同时进行所有节点的运算来进行解码(full paralleldecoding:完全并行解码)的解码装置(非专利文献1)、不是一个也不是全部、而是同时进行一定数量的节点运算(partly paralleldecoding:部分并行解码)的解码装置(非专利文献2)。
但是,例如在图10的解码装置中,作为存储接收数据D104的接收用存储器104的存储容量,至少需要与LDPC码的码长和表示接收数据D104的量化值的位数(量化位数)的乘法运算值相应的位数。另外,作为存储消息的边用存储器100、102的存储容量,至少需要与边的总数(全边数)和表示消息的量化值的位数(量化位数)的乘法运算值相应的位数。
因而,如上所述,当码长是108、表示消息(包含接收数据D104)的量化值的位数是6位、边数是323时,需要存储容量至少为648(=108×6)位的接收用存储器104、和存储容量至少为1938(=323×6)位的边用存储器100及102。
此外,在此为了简化说明,将码长设为108,但是现实中作为LDPC码的码长,采用数千左右。
另一方面,为了提高LDPC码的解码的精度,简单地作为表示包含接收数据D104的消息的量化值,需要采用一定程度的位数的量化值。
然而,如上所述,边用存储器100和102、以及接收用存储器104的存储容量与表示消息的量化值的位数成比例,因此,当由位数多的量化值表示消息时,作为构成解码装置的存储器需要容量大的存储器,装置的规模被大型化。
非专利文献1:C.Howland and A.Blanksby,″ParallelDecoding Architectures for Low Density Parity Check Codes″,Symposium on Circuits and Systems,2001
非专利文献2:E.Ye o,P.Pakzad,B.Nikolic and V.Anantharam,″VLSI Architectures for iterative Decoders inMagnetic Recording Channels″,IEEE Transactions onMagnetics,Vol.37,No.2,March 2001
发明内容
本发明是鉴于这种状况完成的,其能够抑制装置的大规模化且高精度地进行LDPC码的解码。
本发明的特征在于,包含:第1变换部/第1变换步骤,将被分配为对规定的数值范围进行平均分割所得到的数值的第1量化值,变换为表示比第1量化值精度高的数值的第2量化值;第2变换部/第2变换步骤,将第2量化值变换为第1量化值,在第1及第2运算部中,在作为用于LDPC码的解码的校验节点运算及变量节点运算进行的处理中的、从运算非线性函数后到运算逆函数为止的处理中,使用第2量化值,在其他处理中使用第1量化值。
在本发明中,第1量化值被变换为第2量化值,另一方面,第2量化值被变换为第1量化值。并且,在作为用于LDPC码的解码的校验节点运算及变量节点运算进行的处理中的、从运算非线性函数后到运算逆函数为止的处理中,使用表示比第1量化值精度高的数值的第2量化值,在其他处理中使用第1量化值。
在本发明中,一种解码装置,是LDPC(低密度奇偶校验)码的解码装置,其特征在于,具备:
第1运算部,进行用于前述LDPC码的解码的校验节点运算,前述校验节点运算包含非线性函数的运算及前述非线性函数的逆函数的运算;
第2运算部,进行用于前述LDPC码的解码的变量节点运算,
前述第1运算部具有:
第1变换部,将被分配为对规定的数值范围进行平均分割所得到的数值的第1量化值,变换为表示比前述第1量化值精度高的数值的第2量化值;
第2变换部,将前述第2量化值变换为前述第1量化值,
前述第1及第2运算部,在作为前述校验节点运算及变量节点运算进行的处理中的、从运算前述非线性函数后到运算前述逆函数前为止的处理中,使用前述第2量化值,在其他处理中,使用前述第1量化值。
在本发明中,一种解码方法,是LDPC码的解码装置的解码方法,其特征在于,包含:
第1运算步骤,进行用于前述LDPC码的解码的校验节点的校验节点运算,前述校验节点运算包含非线性函数的运算及前述非线性函数的逆函数的运算;
第2运算步骤,进行用于前述LDPC码的解码的变量节点的变量节点运算,
前述第1运算步骤,包含:
第1变换步骤,将被分配为对规定的数值范围进行平均分割所得到的数值的第1量化值,变换为表示比前述第1量化值精度高的数值的第2量化值;
第2变换步骤,将前述第2量化值变换为前述第1量化值,
在前述第1及第2运算步骤中,在作为前述校验节点运算及变量节点运算进行的处理中的、从运算前述非线性函数后到运算前述逆函数为止的处理中,使用前述第2量化值,在其他处理中,使用前述第1量化值。
根据本发明,能够抑制装置的大规模化且高精度地进行LDPC码的解码。
附图说明
图1是说明LDPC码的校验矩阵H的图。
图2是表示奇偶部为下三角矩阵的校验矩阵H的图。
图3是说明LDPC码的解码顺序的流程图。
图4是说明消息流的图。
图5是表示LDPC码的校验矩阵H的例子的图。
图6是表示校验矩阵H的Tanner图的图。
图7是表示变量节点的图。
图8是表示校验节点的图。
图9是表示LDPC码的校验矩阵H的例子的图。
图10是表示逐一地进行节点运算的LDPC码的解码装置的结构例的框图。
图11是表示逐一地计算消息的校验节点计算器101的结构例的框图。
图12是表示逐一地计算消息的变量节点计算器103的结构例的框图。
图13是表示本发明一个实施方式的解码装置的第1结构例的框图。
图14是表示校验节点计算器171的结构例的框图。
图15是用于说明校验节点计算器171的处理的流程图。
图16是表示非线性函数φ(x)及其逆函数φ-1(y)的图。
图17是表示本发明一个实施方式的解码装置的第2结构例的框图。
图18是表示变量节点计算器103的结构例的框图。
图19是表示准校验节点计算器412的结构例的框图。
图20是表示准变量节点计算器415的结构例的框图。
图21是表示BER/FER的图。
附图标记说明
100、102:边用存储器;103:变量节点计算器;104:接收用存储器;105:控制部;129:EXOR电路;130:寄存器;131:选择器;132:寄存器;133:FIFO存储器;134:EXOR电路;171:校验节点计算器;410:解码中途结果保存用存储器;411:开关;412:准校验节点计算器;413:边用存储器;415:准变量节点计算器;416:接收用存储器;417:控制部;431:运算器;432:LUT;433:运算器;434:寄存器;435:选择器;436:寄存器;437:运算器;438:FIFO存储器;439:LUT;440:EXOR电路;441:寄存器;442:选择器;443:寄存器;444:FIFO存储器;445:EXOR电路;471:运算器;472:寄存器;473:选择器;474:寄存器;475:运算器;1211:LUT;1122:运算器;1123:寄存器;1124:选择器;1125:寄存器;1126:运算器;1127:FIFO存储器;1128:LUT。
具体实施方式
下面,说明本发明的实施方式,下面举例说明权利要求所述的结构要件与发明的实施方式中的具体例的对应关系。该记载是为了确认支持权利要求所述发明的具体例被记载在发明的实施方式中。因而,即使有虽然记载在发明的实施方式中,但是没有作为与结构要件对应的部分记载在这里的具体例,也不意味着该具体例不与该结构要件对应。相反,即使具体例作为与结构要件对应的部分记载于此,也不意味着该具体例不与该结构要件以外的结构要件对应。
并且,该记载并不意味着与记载在发明的实施方式中的具体例对应的发明全部被记载到权利要求中。换句话说,该记载是与记载在发明的实施方式中的具体例对应的发明,并不否定没有记载在该申请的权利要求中的发明的存在,即不否定将来进行分案申请、通过补正追加的发明的存在。
发明1的解码装置,是LDPC(Low Density Parity Check:低密度奇偶校验)码的解码装置(例如,图13、图17的解码装置),其特征在于,具备:
第1运算部(例如,图13的校验节点计算器171、图17的准校验节点计算器412),进行用于前述LDPC码的解码的校验节点的校验节点运算,前述校验节点运算包含非线性函数(例如φ(x))的运算及前述非线性函数的逆函数(例如φ-1(x))的运算;
第2运算部(例如,图13的变量节点计算器103、图17的准变量节点计算器415),进行用于前述LDPC码的解码的变量节点的变量节点运算,
前述第1运算部具有:
第1变换部(例如,图14的LUT1121、图19的LUT432),将分配为数值的第1量化值,变换为表示比前述第1量化值精度高的数值的第2量化值;
第2变换部(例如,图14的LUT1128、图19的LUT439),将前述第2量化值变换为前述第1量化值,
前述第1及第2运算部,在作为前述校验节点运算及变量节点运算进行的处理中的、从运算前述非线性函数后到运算前述逆函数为止的处理中,使用前述第2量化值,在其他处理中使用前述第1量化值。
发明2的解码方法,是前述LDPC码的解码装置(例如,图13、图17的解码装置)的解码方法,该解码装置具备:
第1运算部(例如,图13的校验节点计算器171、图17的准校验节点计算器412),进行用于LDPC码的解码的校验节点的校验节点运算,前述校验节点运算包含非线性函数(例如φ(x))的运算及前述非线性函数的逆函数(例如φ-1(x))的运算;
第2运算部(例如,图13的变量节点计算器103、图17的准变量节点计算器415),进行用于前述LDPC码的解码的变量节点的变量节点运算,
其特征在于,包含:
第1变换步骤(例如,图15的步骤S1),将分配为数值的第1量化值,变换为表示比前述第1量化值精度高的数值的第2量化值;
第2变换步骤(例如,图15的步骤S5),将前述第2量化值变换为前述第1量化值,
前述第1及第2运算部,在作为前述校验节点运算及变量节点运算进行的处理中的、从运算前述非线性函数后到运算前述逆函数为止的处理中,使用前述第2量化值,在其他处理中使用前述第1量化值。
下面参照附图说明本发明的实施方式。
图13示出了本发明一个实施方式的、对LDPC码进行解码的解码装置的第1结构例。此外,图中对于与图10的解码装置对应的部分标记相同的符号,在下面适当省略其说明。
图13的解码装置在设置有边用存储器100、102、变量节点计算器103、接收用存储器104、控制部105这一点上与图10的解码装置相同,但是在代替校验节点计算器101而设置有校验节点计算器171这一点上与图10的解码装置不同。
在此,在图13的解码装置中,例如假设进行由前述图9所示的校验矩阵H表示的LDPC码(编码率2/3、码长108)的解码。在后述的图17的解码装置中也相同。
在图13的解码装置中,校验节点计算器171进行校验节点运算,变量节点计算器103进行变量节点运算,通过交替进行这些校验节点运算和变量节点运算,对LDPC码进行解码。
即,在接收用存储器104中以码长(在此,如上所述是108)为单位依次提供并存储LDPC码的接收数据u0i
并且,变量节点计算器103进行用于LDPC码的解码的变量节点的变量节点运算。
即,在边用存储器102中保存有作为后述校验节点计算器171的校验节点运算结果的消息D102(校验节点消息uj),边用存储器102将该消息D102作为消息D103提供给变量节点计算器103。而且,在变量节点计算器103中,由控制部105提供控制信号D107,并且,由接收用存储器104提供接收数据D104。
变量节点计算器103构成为如前述的图12所示,根据控制信号D107,使用由边用存储器102提供的消息D103(校验节点消息uj)和由接收用存储器104提供的接收数据D104(u0i),按照式(1)进行变量节点运算,并将该变量节点运算的结果得到的消息D105(变量节点消息vi)作为消息D100提供给边用存储器100。
边用存储器100保存由变量节点计算器103提供的、作为变量节点运算结果的消息D100(变量节点消息vi)。并且,边用存储器100读出消息D100作为消息D101,提供给校验节点计算器171。
校验节点计算器171进行用于LDPC码的解码的校验节点的校验节点运算,该校验节点运算包含非线性函数的运算及非线性函数的逆函数的运算。
即,校验节点计算器171根据由控制部105提供的控制信号D106,使用由边用存储器100提供的消息D101(变量节点消息vi),按照包含非线性函数φ(x)的运算及该非线性函数φ(x)的逆函数φ-1(x)的运算的式(7)进行校验节点运算,并将通过该校验节点运算求出的消息D102(校验节点消息uj)提供给后级的边用存储器102。
边用存储器102保存由前级的校验节点计算器171提供的消息D102。并且,存储在边用存储器102中的消息D102如上所述作为消息D103被读出,提供给变量节点计算器103。
在图13的解码装置中,对存储在接收用存储器104中的个数与码长相等的接收数据u0i,只重复进行例如规定多次的变量节点运算和校验节点运算,另外,在最后一次中,代替式(1)的变量节点运算,进行式(5)的运算,将其运算结果作为存储在接收用存储器104中的个数与码长相等的接收数据u0i(LDPC码)的最终解码结果输出。
图13的解码装置通过重复进行校验节点运算和变量节点运算,在对LDPC码进行解码的这一点与前述图10的解码装置相同。
但是,图13的解码装置在作为校验节点运算及变量节点运算进行的处理中、从非线性函数φ(x)的运算后到逆函数φ-1(x)的运算为止的处理中,使用表示比与图10的解码装置使用的量化值相同的量化值(第1量化值)精度高的数值的量化值(第2量化值),在其他处理中使用与图10的解码装置使用的量化值相同的量化值。
在此,在图10的解码装置中,如上所述,分配到等分为能够由带符号位的6位表示规定数值范围的64个值的各数值上的6位的量化值表示消息(接收数据u0i也相同)。即,假设规定的数值范围为从-R/2到+R/2时(R>0),表示消息的6位的各量化值被分配为从-R/2到+R/2-R/64为止的、64个量化宽度为R/64的各数值,表示该各数值。现在,将表示消息的6位的量化值称为普通量化值。
另外,在图13的解码装置中,将在从非线性函数φ(x)的运算后到逆函数φ-1(x)的运算为止的处理中使用的、表示比普通量化值精度高的数值的量化值,称为高精度量化值。
高精度量化值表示比普通量化值精度高的数值,因此,量化宽度、即分配到一定量化值的数值、和分配到比该量化值只小1的量化值的数值的差(的绝对值),比普通量化值小。
因而,将高精度量化值的位数设为与普通量化值的位数(在此是6位)相同时,能够由高精度量化值表示的数值范围比能够由普通量化值表示的数值范围窄。即,能够由高精度量化值表示的最大值和最小值的差(动态范围),比能够由普通量化值表示的最大值和最小值的差(动态范围)窄。
另外,将高精度量化值的位数设为与普通量化值的位数相同时的、能够由高精度量化值表示的动态范围表示为Dy1,并且,将这种高精度量化值的量化宽度表示为Qd1时,例如使高精度量化值的量化宽度仍旧是Qd1、由高精度量化值表示动态范围比Dy1宽的Dy2的数值范围,或者假设高精度量化值的量化宽度为小于Qd1的Qd2、由高精度量化值表示动态范围是Dy1的数值范围时,高精度量化值的位数必须比普通量化值的位数多。
如果是表示精度比普通量化值高的数值的量化值、即量化宽度是小于普通量化值的量化值,则与动态范围、位数无关,可作为高精度量化值来采用,但是在此,作为高精度量化值采用量化宽度比普通量化值小的量化值,且动态范围比普通量化值宽、位数也比普通量化值多的量化值。
现在,将高精度量化值位数设为比6位的普通量化值多、例如包含符号位的10位时,在从非线性函数φ(x)的运算后到逆函数φ-1(x)的运算为止的处理(下面,适当称为非线性函数运算间处理)中,图13的解码装置使用10位的高精度量化值(第2量化值),在其他处理中使用6位的普通量化值(第1量化值)。
并且,使用10位的高精度量化值的非线性函数运算间处理是校验节点运算的一部分处理,因此,在存储到边用存储器100和102的消息中,另外在存储到接收用存储器104的接收数据u0i中,都使用6位的普通量化值。
因而,在图13的解码装置中,边用存储器100、102、及接收用存储器104所需的存储容量与图10的解码装置的存储容量相同。
接着,图14示出了图13的校验节点计算器171的结构例。此外,图中对于与图11的校验节点计算器101对应的部分标记相同的符号,在下面适当省略其说明。
校验节点计算器171,代替图11的LUT121、运算器122、寄存器123、选择器124、寄存器125、运算器126、FIFO存储器127、LUT128,分别设置有LUT1121、运算器1122、寄存器1123、选择器1124、寄存器1125、运算器1126、FIFO存储器1127、LUT1128,并且,在图14中用粗线表示的部分的位数只多作为高精度量化值和普通量化值之间的位数差的4位,这一点与图11的校验节点计算器101不同。
图14的校验节点计算器171也与图11的校验节点计算器101相同,根据由控制部105提供的、例如1位的控制信号D106,使用从边用存储器100逐一读入的消息D101(变量节点消息vi),按照式(7)进行校验节点运算。
即,图15示出了由校验节点计算器171进行的处理。
在校验节点计算器171中,逐一地读入来自与校验矩阵H的各列对应的变量节点的6位的消息D101(变量节点消息vi),作为其下位5位的绝对值D122(|vi|)被提供给LUT1121,作为其最上位的位的符号位D121被提供给EXOR电路129和FIFO存储器133。另外,在校验节点计算器171中,由控制部105提供控制信号106,该控制信号D106被提供给选择器1124和选择器131。
LUT1121对5位的绝对值D122(|vi|),对应式(7)中的非线性函数φ(|vi|)的运算结果D1123(φ(|vi|))进行存储。并且,在LUT1121中,绝对值D122(|vi|)由普通量化值表示,而非线性函数φ(|vi|)的运算结果D1123(φ(|vi|))由高精度量化值表示。即,LUT1121对由普通量化值表示的5位的绝对值D122(|vi|),对应例如由高精度量化值表示的9位的、非线性函数φ(|vi|)的运算结果D1123(φ(|vi|))进行存储。
在步骤S1中,LUT1121将由普通量化值表示的5位的绝对值D122(|vi|)作为输入,读出与其对应的、由高精度量化值表示的9位的非线性函数φ(|vi|)的运算结果D1123(φ(|vi|)),输出到运算器1122和FIFO存储器1127。
因而,在步骤S1中,LUT1121等效地进行运算式(7)中的非线性函数φ(|vi|)的处理、及将普通量化值变换为高精度量化值的处理,之后在后述的LUT1128中,使用高精度量化值进行处理,直到进行将高精度量化值变换为普通量化值的处理为止。
之后,在步骤S 2中,运算器1122通过对9位的运算结果D1123(φ(|vi|))和保存在寄存器1123中的13位的值D1124进行加法运算,累加运算结果D1123,并将其结果得到的13位的累加值重新保存到寄存器1123。此外,当对来自校验矩阵H的1行的全部边的消息D101的绝对值D122(|vi|)的运算结果被累加时,寄存器1123被复位。
在此,在运算器1122及寄存器1123中,由LUT1121提供的9位的运算结果D1123(φ(|vi|)),最大只被累加与FIFO存储器1127中的最大延迟次数相等的次数、即与校验矩阵H的行的最大权重相等的次数。现在,图9的校验矩阵H的行的最大权重是9,因而,在运算器1122及寄存器1123中,9位的高精度量化值最大被累加9次(进行9个9位的高精度量化值的累加)。因此,在运算器1122的输出之后,为了能够表示对9位的高精度量化值进行9次累加的值,高精度量化值的位数成为只比LUT1121输出的9位的运算结果D1123(φ(|vi|))多4位(能够表示9(次)的最小位数)的13位。
当逐一地读入校验矩阵H的一行的消息D101(变量节点消息vi),在寄存器1123中保存了1行部分的运算结果D1123被累加得到的累加值时,由控制部105提供的控制信号D106从0变化到1。例如,当校验矩阵H的行的权重(row weight)是“9”时,控制信号D106在从第1到第8时钟为止为“0”,在第9时钟为“1”。
当控制信号D106是“1”时,在步骤S3中,选择器1124选择保存在寄存器1123中的值、即从来自校验矩阵H的一行的全部边的消息D101(变量节点消息vi)求出的φ(|vi|)被累加得到的13位的累加值D1124(从i=1到i=dc为止的∑φ(|vi|)),作为13位的值D1125输出到寄存器1125并保存。寄存器1125将保存的值D1125作为13位的值D1126,提供给选择器1124和运算器1126。当控制信号D106是“0”时,选择器1124选择从寄存器1125提供的值D1126,输出到寄存器1125并重新保存。即,寄存器1125将前次被累加得到的φ(|vi|)提供给选择器1124和运算器1126,直到从来自校验矩阵H的一行的全部边的消息D101(变量节点消息vi)求出的φ(|vi|)被累加为止。
另一方面,在从寄存器1125输出新的值D1126(从i=1到i=dc为止的∑φ(|vi|))为止的期间,FIFO存储器1127延迟LUT1121输出的9位的运算结果D1123(φ(|vi|)),作为9位的值D1127提供给运算器1126。在步骤S4中,运算器1126从由寄存器1125提供的13位的值D1126,减去由FIFO存储器1127提供的9位的值D1127,并将其减法运算结果作为9位的减法运算值D1128提供给LUT1128。即,运算器1126从来自校验矩阵H的一行的全部边的消息D101(变量节点消息vi)求出的φ(|vi|)的累加值,减去从来自想要求出校验节点消息uj的边的消息D101(变量节点消息vi)求出的φ(|vi|),并将其减法运算值(从i=1到i=dc-1为止的∑φ(|vi|))作为减法运算值D1128提供给LUT1128。
此外,当作为从由寄存器1125提供的13位的值D1126减去由FIFO存储器1127提供的9位的值D1127的减法运算结果的量化值(高精度量化值),超过能够由9位的减法运算值D1128表示的最大值时,运算器1126将作为减法运算结果的高精度量化值截取为能够由9位的高精度量化值表示的最大值,输出9位的减法运算值D1128。
LUT1128对减法运算值D1128(从i=1到i=dc-1为止的∑φ(|vi|)),对应进行了式(7)中的逆函数φ-1(∑φ(|vi|))运算的运算结果D1129(φ-1(∑φ(|vi|)))进行存储。并且,在LUT1128中,由高精度量化值表示减法运算值D1128(从i=1到i=dc-1为止的∑φ(|vi|)),而由普通量化值表示逆函数φ-1(∑φ(|vi|))的运算结果D1129(φ-1(∑φ(|vi|)))。即,LUT1128对由高精度量化值表示的9位的减法运算值D1128(从i=1到i=dc-1为止的∑φ(|vi|)),对应由普通量化值表示的5位的、逆函数φ-1(∑φ(|vi|))的运算结果D1129(φ-1(∑φ(|vi|)))进行存储。
在步骤S5中,LUT1128将由高精度量化值表示的9位的减法运算值D1128(从i=1到i=dc-1为止的∑φ(|vi|))作为输入,读出与其对应的由普通量化值表示的5位的、逆函数φ-1(∑φ(|vi|))的运算结果D1129(φ-1(∑φ(|vi|)))并输出。
因而,在步骤S 5中,LUT1128等效地进行运算式(7)中的逆函数φ-1(∑φ(|vi|))的处理、及将高精度量化值变换为普通量化值的处理,之后在上述的LUT1121中,使用普通量化值进行处理,直到进行将普通量化值变换为高精度量化值的处理为止。
与以上的处理并行,在EXOR电路129、寄存器130、选择器131、寄存器132、FIFO存储器133、EXOR电路134中,进行与图11的校验节点计算器101相同的处理,由此,EXOR电路134将来自校验矩阵H的一行的全部边的消息D101(变量节点消息vi)的符号位D121(sign(|vi|))的乘法运算值,除以来自想要求出校验节点消息uj的边的消息D101的符号位D121(sign(|vi|)),作为除法运算值D135输出其除法运算值(从i=1到i=dc-1为止的∏sign(|vi|))。
并且,在校验节点计算器171中,输出由总共6位的普通量化值表示的消息D102(校验节点消息uj),其中,该总共6位的普通量化值将从LUT1128输出的普通量化值的5位的运算结果D1129作为下位5位,并且,将从EXOR电路134输出的1位的除法运算值D135作为最上位的位(符号位)。
因而,在校验节点计算器171中,通过在LUT1121中将普通量化值变换为高精度量化值、并且在LUT1128中将高精度量化值变换为普通量化值,从而在作为校验节点运算及变量节点运算进行的处理中的、从运算非线性函数φ(x)后到运算其逆函数φ-1(x)为止的处理中使用高精度量化值,在其他处理中使用普通量化值,因此,能够抑制解码装置的大规模化且高精度地进行LDPC码的解码。
即,图16示出了非线性函数φ(x)和其逆函数φ-1(y)。此外,在图16中,○记号表示在采用普通量化值时,非线性函数φ(x)的运算结果及其自变量x可以采用的数值、和逆函数φ-1(y)及其自变量y可以采用的数值。
图16的左侧示出了非线性函数φ(x),图16的右侧示出了其逆函数φ-1(y)。
图16的左侧所示的非线性函数φ(x),当其自变量x成为大于或等于大到一定程度的数值时,大致成为0。
另一方面,图16的右侧所示的逆函数φ-1(y),当其自变量y是数值0附近时,急剧地变化。
因而,在作为校验节点运算的式(7)的运算中,当使用普通量化值进行从非线性函数φ(x)的运算后到其逆函数φ-1(x)的运算为止的处理时,运算精度将劣化。
即,当由普通量化值表示非线性函数φ(x)的运算结果时,对大于或等于大到一定程度的数值的自变量x,作为非线性函数φ(x)的运算结果,全部得到表示相同的数值0的普通量化值。也就是说,大于或等于大到一定程度的数值的自变量x的非线性函数φ(x)的运算结果大致为0,因此,难以由普通量化值高精度地表示。
另外,在式(7)的校验节点运算中,成为逆函数φ-1(y)的自变量y的是非线性函数φ(|vi|)的累加值(从i=1到i=dc-1为止的∑φ(|vi|)),但是表示非线性函数φ(|vi|)的运算结果的普通量化值如上所述,对大于或等于大到一定程度的数值的自变量|vi|,全部成为表示数值0的普通量化值。
因而,当作为成为累加对象的非线性函数φ(|vi|)的运算结果,全部得到表示数值0的普通量化值时,其累加值(从i=1到i=dc-1为止的∑φ(|vi|))也成为表示数值0的普通量化值,作为逆函数φ-1(y)的自变量y,将提供表示数值0的普通量化值。
另一方面,由于逆函数φ-1(y)在其自变量y为数值0附近时急剧地变化,因此,作为逆函数φ-1(y)的运算结果,为了得到高精度的运算结果,特别希望通过高精度地表示0附近的数值的量化值来表现自变量y。
然而,在使用了普通量化值的情况下,如上所述,对大于或等于大到一定程度的数值的自变量|vi|,作为非线性函数φ(|vi|)的运算结果,全部得到表示数值0的普通量化值,其结果,表示成为逆函数φ-1(∑φ(|vi|))自变量的累加值∑φ(|vi|)的普通量化值,也成为表示数值0的普通量化值。
因此,在累加值∑φ(|vi|)是数值0附近的值的情况下,如果该累加值∑φ(|vi|)稍微不同,则原本逆函数φ-1(∑φ(|vi|))的运算结果应该大不相同,但是由于0附近的累加值∑φ(|vi|)全部由表示数值0的普通量化值表示,因此,对于稍微不同的累加值∑φ(|vi|),作为逆函数φ-1(∑φ(|vi|))的运算结果,可得到相同的运算结果、也就是说误差大的运算结果。
与此相对,当使用高精度量化值进行从非线性函数φ(x)的运算后到其逆函数φ-1(x)的运算为止的处理时,即使对于大于或等于大到一定程度的数值的自变量x,作为非线性函数φ(x)的运算结果,也可得到高精度地表示0附近数值的高精度量化值。并且,其结果,成为逆函数φ-1(∑φ(|vi|))自变量的累加值∑φ(|vi|)即使是0附近的数值,也能够得到高精度地表示该数值的高精度量化值。
因而,即使累加值∑φ(|vi|)是数值0附近的值的情况下,也能够得到根据该累加值∑φ(|vi|)的稍微不同而不同的、高精度的逆函数φ-1(∑φ(|vi|))的运算结果(表示该运算结果的高精度量化值)。并且,其结果,能够高精度地进行LDPC码的解码。
并且,使用高精度量化值进行从非线性函数φ(|vi|)的运算后到其逆函数φ-1(∑φ(|vi|))的运算为止的处理,使用普通量化值进行其他处理,因此,在校验节点计算器171(图14)中使用高精度量化值的部分、即LUT1121至LUT1128的规模只是稍微变大了与高精度量化值和普通量化值之间的位数差相应的程度,如上所述,图13的解码装置的边用存储器100、102、及接收用存储器104所需的存储容量,和使用普通量化值的图10的解码装置的存储容量没有变化。
因而,能够抑制解码装置的大规模化且高精度地进行LDPC码的解码。
此外,图9的校验矩阵H的行的权重最大是9,即提供给校验节点的消息最大个数是9,因此,校验节点计算器171(图14)具有使9个消息(φ(|vi|))延迟的FIFO存储器1127和FIFO存储器133,当计算行的权重不到9的行的消息时,FIFO存储器1127和FIFO存储器133中的延迟量被减少到该行的权重。
接着,图17示出了本发明一个实施方式的、对LDPC码进行解码的解码装置的第2结构例。
图17的解码装置能够抑制解码装置的大规模化且高精度地进行LDPC码的解码,并且,比图13的解码装置降低了解码装置所需的存储器的存储容量。
此外,在图17的解码装置中,例如与上述图13的解码装置相同,进行由前述图9所示的校验矩阵H表示的LDPC码(编码率2/3、码长108)的解码。
在图17中,解码装置由解码中途结果保存用存储器410、开关411、准校验节点计算器412、边用存储器413、准变量节点计算器415、接收用存储器416、及控制部417构成,通过等效地重复进行与图13的解码装置相同的校验节点运算和变量节点运算,对LDPC码进行解码。
在此,在说明图17的解码装置的各部分之前,使用上述的图14、和图18至图20,说明图17的准校验节点计算器412及准变量节点计算器415、和图13的校验节点计算器171及变量节点计算器103之间的关系。
图14示出了如上所述进行校验节点运算的图13的校验节点计算器171的结构例。
图18示出了进行变量节点运算的图13的变量节点计算器103的结构例。此外,图13的变量节点计算器103与图10的变量节点计算器103相同,因而,图18所示的图13的变量节点计算器103与图12所示的图10的变量节点计算器103成为相同结构。
但是,在图18中,图示出将图12的运算器156分为运算器1561和1562两个运算器。即,图12的运算器156如前所述,从由寄存器154提供的值D152减去由FIFO存储器155提供的值D153,并且,将该减法运算值、和由接收用存储器104提供的接收数据D104进行加法运算,将其结果得到的6位的值作为消息D105(变量节点消息vi)输出,因此,运算器156进行的处理能够分为将由寄存器154提供的值D152为对象,对由FIFO存储器155提供的值D153进行减法运算的减法运算处理、和对由接收用存储器104提供的接收数据D104进行加法运算的加法运算处理。
因此,在图18中,图示出将图12的运算器156分为进行加法运算处理的运算器1561、和进行减法运算处理的运算器1562
另一方面,图19示出了图17的准校验节点计算器412的结构例,图20示出了图17的准变量节点计算器415的结构例。
在图17的解码装置中,并不是准校验节点计算器412进行校验节点运算自身、并且准变量节点计算器415进行变量节点运算自身,而是准校验节点计算器412进行校验节点运算和变量节点运算的一部分,准变量节点计算器415进行变量节点运算的其他部分。
即,图19的准校验节点计算器412由模块A’和模块B’构成。模块A’与进行图14的校验节点计算器171的校验节点运算的模块A对应。另外,模块B’与作为图18的变量节点计算器103一部分的、从与校验矩阵H的各列的全部边对应的校验节点消息uj的累加值减去与想要求出变量节点消息vi的边对应的校验节点消息uj的模块B对应。
另一方面,图20的准变量节点计算器415由模块C’构成。模块C’与作为图18的变量节点计算器103的其他部分的、累加与校验矩阵H各列的边对应的校验节点消息uj、并将接收数据u0i与该累加值进行加法运算的模块C对应。
也就是说,图13的校验节点计算器171如图14所示,由进行校验节点运算自身的模块A构成。另外,图13的变量节点计算器103,如图18所示,能够分为模块B和模块C,其中,上述模块B进行变量节点运算的一部分:从与校验矩阵H的各列的全部边对应的校验节点消息uj的累加值减去与想要求出变量节点消息vi的边对应的校验节点消息uj;上述模块C进行变量节点运算的其他部分:累加与校验矩阵H各列的边对应的校验节点消息uj,将接收数据u0i与该累加值进行加法运算。
图19的准校验节点计算器412由与图14的模块A对应的模块A’、和与图18的模块B对应的模块B’构成,在模块B’中进行变量节点运算的一部分,并且在模块A中进行校验节点运算自身。在此,下面将由准校验节点计算器412进行的变量节点运算的一部分和校验节点运算,适当称为准校验节点运算。
另一方面,图20的准变量节点计算器415由与图18的模块C对应的模块C’构成,在模块C’中进行变量节点运算的其他部分。在此,下面将由准变量节点计算器415进行的变量节点运算的其他部分,适当称为准变量节点运算。
在图17的解码装置中,准校验节点计算器412使用解码中途结果保存用存储器410的存储内容等,进行准校验节点运算(变量节点运算的一部分和校验节点运算),将其结果得到的校验节点消息uj提供给边用存储器413进行存储。并且,准变量节点计算器415使用存储在边用存储器413中的校验节点消息uj等,进行准变量节点运算(变量节点运算的其他部分),将其结果得到的解码中途结果v提供给解码中途结果保存用存储器410进行存储。
因而,在图17的解码装置中,通过交替进行准校验节点计算器412的准校验节点运算、和准变量节点计算器415的准变量节点运算,结果交替进行校验节点运算和变量节点运算,由此,进行LDPC码的解码。
此外,在图18的变量节点计算器103中,为了在模块C中进行加法运算处理、在模块B中进行减法运算处理,需要FIFO存储器155,该FIFO存储器155将来自想要求出变量节点消息vi的边的校验节点消息uj进行延迟,直到结束与校验矩阵H各列的边对应的校验节点消息uj的累加为止,其中,上述加法运算处理如下:累加与校验矩阵H各列的边对应的校验节点消息uj,将接收数据u0i与该累加值进行加法运算;上述减法运算处理如下:从该加法运算处理的结果得到的值(与校验矩阵H各列的全部边对应的校验节点消息uj的累加值、和接收数据u0i的加法运算值)减去来自想要求出变量节点消息vi的边的校验节点消息uj
另一方面,在图19的准校验节点计算器412的模块B’中,与对应的模块B(图18)相同,进行从与校验矩阵H各列的全部边对应的校验节点消息uj的累加值减去来自想要求出变量节点消息vi的边的校验节点消息uj的减法运算处理,但是在图17的解码装置中,为了由该边用存储器413对准校验节点计算器412提供来自想要求出变量节点消息vi的边的校验节点消息uj(消息D413),校验节点消息uj被存储在边用存储器413中。
因而,在图17的解码装置中不需要FIFO存储器155,该FIFO存储器155将来自想要求出变量节点消息vi的边的校验节点消息uj进行延迟,直到结束与校验矩阵H各列的边对应的校验节点消息uj的累加为止。因而,图17的解码装置能够比图13的解码装置小与FIFO存储器155(如图12所示)相应的部分。
接着,使用式子说明由图17的准校验节点计算器412进行的准校验节点运算、和由准变量节点计算器415进行的准变量节点运算。
准校验节点计算器412,作为准校验节点运算进行下式(8)的运算(变量节点运算的一部分)和上述式(7)的运算(校验节点运算),将作为该准校验节点运算结果的校验节点消息uj提供给边用存储器413并进行保存(存储)。另外,准变量节点计算器415,作为准变量节点运算进行上述式(5)的运算(变量节点运算的其他部分),将作为该准变量节点运算结果的解码中途结果v提供给解码中途结果保存用存储器410并进行保存。
式8
vi=v-udv          ...(8)
此外,式(8)的udv表示来自想要通过变量节点运算求出校验矩阵H的i列的变量节点消息vi的边的校验节点运算的结果。即,udv是与想要通过变量节点运算求出变量节点消息vi的边对应的校验节点消息uj(来自边的校验节点消息uj)。
在此,上述式(5)的运算结果得到的解码中途结果v,是将接收数据u0i和来自与校验矩阵H的i列的各行的1对应的全部边的校验节点运算结果得到的校验节点消息uj进行加法运算的结果,因此,按照式(8),通过从这样的解码中途结果v,减去由来自与校验矩阵H的i列的各行的1对应的边的校验节点运算求出的校验节点消息uj中、来自要求出变量节点消息vi的边的校验节点消息udv,从而能够求出各边的变量节点消息vi
因而,求出变量节点消息vi的式(1)的变量节点运算,能够分为式(5)的运算、和式(8)的运算。
另一方面,由式(7)表示求出校验节点消息uj的校验节点运算。
因而,式(1)的变量节点运算和式(7)的校验节点运算的处理,与式(5)的运算和式(8)及式(7)的运算的处理等效。
因此,在图17的解码装置中,在准校验节点计算器142中进行式(8)及式(7)的运算(准校验节点运算)、并且在准变量节点计算器415中进行式(5)的运算(准变量节点运算),进行LDPC码的解码。
此外,由式(5)的准变量节点运算求出的解码中途结果v,是将式(1)的变量节点运算的结果得到的各边的变量节点消息vi、与来自与该变量节点消息vi对应的边的校验节点消息uj相加得到的消息,因此,对校验矩阵H的1列(一个变量节点)只求出一个。因而,对于个数与码长相等的接收数据u0i,求出个数与码长相等(校验矩阵H的列数)的解码中途结果v。
在图17的解码装置中,准校验节点计算器412,使用作为准变量节点计算器415的准变量节点运算结果的与校验矩阵H的各列对应的解码中途结果v,进行准校验节点运算,并将该准校验节点运算的结果得到的校验节点消息(各校验节点输出到各边的校验节点消息)uj保存到边用存储器413。
因而,边用存储器413所需的存储容量与保存校验节点运算结果的图13的边用存储器102相同,为对校验矩阵H的1的个数(全边数)和校验节点消息uj的量化位数(在本实施方式中是普通量化值的位数)进行乘法运算得到的值。
另一方面,准校验节点计算器415使用作为准校验节点计算器412的准校验节点运算结果的与校验矩阵H的i列的各行“1”对应的校验节点消息uj和接收数据u0i,进行准变量节点运算,并将该准变量节点运算的结果得到的与i列对应的解码中途结果v保存到解码中途结果保存用存储器410。
因而,解码中途结果保存用存储器410所需的存储容量,为将少于校验矩阵H的“1”的个数的校验矩阵H的列数、即LDPC码的码长、和解码中途结果v的量化位数(在本实施方式中是普通量化值的位数)进行乘法运算得到的值。
以上,对校验矩阵H中的1稀疏的LDPC码进行解码的图17的解码装置中,与图13的边用存储器100相比,能够削减解码中途结果保存用存储器410的存储容量,由此能够减小图17的解码装置的装置规模。
并且,在图17的解码装置中,准变量节点计算器415进行的式(5)的准变量节点运算,是在通过交替地重复校验节点运算和变量节点运算进行LDPC码的重复解码时求出该LDPC码的最终解码结果的运算,因而,在图17的解码装置中不需要如图13的解码装置那样具有进行求出LDPC码的最终解码结果的式(5)运算的未图示的模块。因而,与图13的解码装置相比,能够将图17的解码装置的装置规模减小不需要这种模块的相应的量。
接着详细说明图17的解码装置的各部分。
对解码中途结果保存用存储器410,从准变量节点计算器415提供校验矩阵H每列的、式(5)的准变量节点运算的结果得到的解码中途结果D415(式(5)的v),解码中途结果保存用存储器410依次存储由准变量节点计算器415提供的解码中途结果D415。从解码中途结果保存用存储器410依次读出存储在解码中途结果保存用存储器410中的校验矩阵H每列的解码中途结果D415,提供给开关411。
除了由解码中途结果保存用存储器410向开关411提供解码中途结果D415之外,还由接收用存储器416向开关411提供了接收数据D417(u0i)。开关411按照由控制部417提供的控制信号D421,选择由解码中途结果保存用存储器410提供的解码中途结果D415、或者由接收用存储器416提供的接收数据D417中的任意一个,作为解码中途结果D411提供给准校验节点计算器412。
即,由于在刚刚将接收数据D417存储到接收用存储器416中之后(存储接收数据D417后、进行使用该接收数据D417的最初的准变量节点运算之前),与该接收数据D417对应的解码中途结果D415没有被存储在解码中途结果保存用存储器410中,因此,无法进行使用该解码中途结果D415的准校验节点运算。于是,紧接在将接收数据D417存储到接收用存储器416中之后,控制部417将指示接收数据D417选择的控制信号D421提供给开关411。由此,在开关411中,选择由接收用存储器416提供的接收数据D417,作为解码中途结果D411提供给准校验节点计算器412。因而,此时在准校验节点计算器412中,将接收数据D417作为式(8)的解码中途结果v使用,进行准校验节点运算。此外,在准校验节点运算中使用存储在边用存储器413中的校验节点消息uj,但是边用存储器413的校验节点消息uj在新的接收数据D417被存储到接收用存储器416中时初始化为0。
另一方面,在接收用存储器416中存储接收数据D417,进行使用该接收数据D417的最初的准变量节点运算后(直到输出该接收数据D417的最终解码结果为止),该接收数据D417的解码中途结果D415被存储在解码中途结果保存用存储器410中,因此,控制部417将指示解码中途结果D415的选择的控制信号D421提供给开关411。由此,在开关411中选择由解码中途结果保存用存储器410提供的解码中途结果D415,作为解码中途结果D411提供给准校验节点计算器412。从而,此时在准校验节点计算器412中,将解码中途结果D415作为式(8)的解码中途结果v,进行准校验节点运算。
除了由开关411向准校验节点计算器412提供作为式(8)的解码中途结果v的解码中途结果D411之外,还由边用存储器413向准校验节点计算器412作为消息D413提供准校验节点计算器412的前次准校验节点运算的结果得到的校验节点消息uj。另外,由控制部417向准校验节点计算器412提供控制信号D420。
准校验节点计算器412使用来自开关411的解码中途结果D411(式(8)的v)、和消息D413(前次的校验节点消息uj),进行准校验节点运算、即进行式(8)的运算,之后,进一步进行式(7)的运算,由此,按校验矩阵H的每个边(值为1的元素)求出式(7)的校验节点消息uj。并且,准校验节点计算器412将式(8)及式(7)的准校验节点运算的结果得到的各边的校验节点消息uj,作为消息D412提供给边用存储器413。
边用存储器413依次存储由准校验节点计算器412提供的各边的消息D412。为了下面的准校验节点运算和下面的准变量节点运算,从边用存储器413依次读出存储在边用存储器413中的各边的消息D412(uj),作为消息D413提供给准校验节点计算器412、和准变量节点计算器415。
由边用存储器413向准变量节点计算器415提供各边的消息D413(校验节点消息uj)。另外,由接收用存储器416向准变量节点计算器415提供LDPC码的接收数据D417(式(5)的u0i)。并且,由控制部417向准变量节点计算器415提供控制信号D422。
准变量节点计算器415使用来自边用存储器413的各边的消息D413(uj)、和来自接收用存储器416的接收数据D417(u0i),按校验矩阵H的列进行式(5)的准变量节点运算,由此,按校验矩阵H的列求出解码中途结果v。并且,准变量节点计算器415将式(5)的准变量节点运算的结果得到的解码中途结果v,作为解码中途结果D415提供给解码中途结果保存用存储器410。
在此,如上所述,在解码中途结果保存用存储器410中,依次存储由准变量节点计算器415提供的解码中途结果D415,并且,依次从解码中途结果保存用存储器410读出该被存储的解码中途结果D415,提供给开关411。
但是,在准变量节点计算器415中进行最后的准变量节点运算时,即例如对存储在接收用存储器416中的接收数据D417,准校验节点运算和准变量节点运算重复进行了预先决定的次数时,解码中途结果保存用存储器410,作为存储在接收用存储器416中的接收数据D417(LDPC码)的最终解码结果,输出作为最后进行的准变量节点运算结果的解码中途结果D415。
接收用存储器416,作为接收数据D417存储作为由通过通信线路接收到的接收信号D416计算的LDPC码的各位与0的相似度的值的、个数与码长相等的接收LLR(对数似然比),提供给开关411和准变量节点计算器415。
控制部417通过将控制信号D420提供给准校验节点计算器412、将控制信号D421提供给开关411、将控制信号D422提供给准变量节点计算器415,从而控制它们。
在如上所述构成的图17的解码装置中,数据按以下顺序通过解码中途结果保存用存储器410、准校验节点计算器412、边用存储器413、准变量节点计算器415,进行一次解码(一次重复解码处理(校验节点运算和变量节点运算))。在图17的解码装置中,重复规定的次数进行解码之后,作为最终解码结果输出作为准变量节点计算器415的准变量节点运算结果的解码中途结果D415。
接着进一步详细说明图17的准校验节点计算器412和准变量节点计算器415。
首先,图19示出了图17的准校验节点计算器412的结构例。
在准校验节点计算器412中,由开关411(图17)提供作为式(8)的解码中途结果v的解码中途结果D411,并且,作为消息D413由边用存储器413(图17)提供校验节点消息udv,其中,该校验节点消息udv是准校验节点计算器412的前次准校验节点运算的结果得到的校验节点消息uj中的、来自当前想要由式(8)求出变量节点消息vi的边的校验节点消息。并且,由控制部417(图17)向准校验节点计算器412提供控制信号D420。
在此,在图17的解码装置中,通过重复进行准校验节点运算和准变量节点运算,与图13的解码装置相同,等效地重复进行校验节点运算和变量节点运算。
并且,在图13的解码装置中,设成由校验节点运算得到的消息uj、和由变量节点运算得到的消息vi都由包含符号位的6位的普通量化值表示,但是在图17的解码装置中,也设成消息uj和消息vi都由包含符号位的6位的普通量化值表示。另外,在图17的解码装置中,存储在接收用存储器416中的接收数据D417也与图13的解码装置相同,设成由包含符号位的6位的普通量化值表示。
此时,由6位的普通量化值表示由边用存储器413(图17)提供给准校验节点计算器421的消息D413(校验节点消息udv)。另外,如后所述由9位的普通量化值表示由开关411(图17)提供给准校验节点计算器412的解码中途结果D411(v)。
由边用存储器413(图17)提供给准校验节点计算器412的6位的普通量化值的消息D413(前次准校验节点运算的结果得到的校验节点消息uj中的、来自当前想要由式(8)求出变量节点消息vi的边的校验节点消息udv)、和由开关411(图17)提供给准校验节点计算器412的9位的普通量化值的解码中途结果D411(v),都提供给模块B’的运算器431。
另外,由控制部417(图17)提供给准校验节点计算器412的控制信号D420,提供给选择器435和选择器442。
运算器431,进行式(8)的运算、即从在此提供的9位的解码中途结果D411(v)减去同样在此提供的6位的解码中途结果D413(udv),由此,求出6位的变量节点消息vi,作为6位的普通量化值的消息D431(vi)输出。
此外,运算器431与构成前述图12的变量节点计算器103的运算器156相同,当式(8)的运算结果是由6位的普通量化值表示的数值范围外时,截取该运算结果,作为6位的普通量化值的消息D431(vi)输出。
运算器431输出的6位的消息D431(vi)提供给模块A’。在模块A’中,来自运算器431的6位的消息D431(变量节点消息vi)中、表示最上位的位的正负的符号位D432(sign(vi))被提供给EXOR电路440及FIFO存储器444,下位5位的绝对值D433(|vi|)被提供给LUT432。
如上所述,模块A’与图14所示的校验节点计算器171的模块A对应,因而,进行与模块A相同的处理。
即,在模块A’中,LUT432、运算器433、寄存器434、选择器435、寄存器436、运算器437、FIFO存储器438、LUT439、EXOR电路440、寄存器441、选择器442、寄存器443、FIFO存储器444、EXOR电路445,分别与图14的模块A的LUT1121、运算器1122、寄存器1123、选择器1124、寄存器1125、运算器1126、FIFO存储器1127、LUT1128、EXOR电路129、寄存器130、选择器131、寄存器132、FIFO存储器133、EXOR电路134同样地构成。
并且,在模块A’中,与图14的模块A相同,在图19中由粗线表示的部分的位数,只多了作为高精度量化值和普通量化值的位数差的4位。
并且,在模块A’中,LUT432对5位的绝对值D433(|vi|),与式(7)中的非线性函数φ(|vi|)的运算结果D434(φ(|vi|))对应进行存储。并且,在LUT432中,绝对值D433(|vi|)由普通量化值表示,而非线性函数φ(|vi|)的运算结果D434(φ(|vi|))由高精度量化值表示。即,LUT432对由普通量化值表示的5位的绝对值D433(|vi|),例如与由高精度量化值表示的9位的、非线性函数φ(|vi|)的运算结果D434(φ(|vi|))对应进行存储。
LUT432将由普通量化值表示的5位的绝对值(5位的普通量化值的绝对值)D433(|vi|)作为输入,读出与其对应的由高精度量化值表示的9位的、非线性函数φ(|vi|)的运算结果D434(φ(|vi|)),输出到运算器433和FIFO存储器438。
因而,LUT432等效地进行运算式(7)中的非线性函数φ(|vi|)的处理、及将普通量化值变换为高精度量化值的处理,之后,在后述的LUT439中,使用高精度量化值进行处理,直到进行将高精度量化值变换为普通量化值的处理为止。
运算器433通过将9位的运算结果D434(φ(|vi|))和保存在寄存器434中的13位的值D435进行加法运算,累加运算结果D434,并将其结果得到的13位的累加值D435重新保存到寄存器434中。此外,当来自校验矩阵H的一行的全部边的消息D431(变量节点消息vi)的绝对值D433(|vi|)的运算结果被累加时,寄存器434被复位。
在此,运算器433输出的累加值D435是13位、从LUT432输入到运算器433而成为累加对象的运算结果D434(φ(|vi|))是9位,其理解与在图14中运算器1122的输出为只比输入到运算器1122的、来自LUT1121的9位的运算结果D1123(φ(|vi|))多4位的13位相同。
当逐一地读入校验矩阵H的一行的消息D431(变量节点消息vi),在寄存器434中保存了1行部分的运算结果D434被累加得到的累加值时,由控制部417(图17)提供的控制信号D420从0变化到1。例如,当校验矩阵H的行的权重(row weight)是“9”时,控制信号D420到第八个运算结果D434被累加为止为“0”,当第九个运算结果D434被累加时为“1”。
当控制信号D420是“1”时,选择器435选择保存在寄存器434中的值、即从来自校验矩阵H的一行的全部边的消息D431(变量节点消息vi)求出的φ(|vi|)被累加得到的13位的值D 435(从i=1到i=dc为止的∑φ(|vi|)),作为13位的值D436输出到寄存器436并进行保存。寄存器436将保存的值D436作为13位的值D437提供给选择器435和运算器437。当控制信号D420是“0”时,选择器435选择由寄存器436提供的值D437,输出到寄存器436重新进行保存。即,寄存器436将前次累加得到的φ(|vi|)提供给选择器435和运算器437,直到从来自校验矩阵H的一行的全部边的消息D431(变量节点消息vi)求出的φ(|vi|)被累加为止。
另一方面,在从寄存器436输出新的值D437(从i=1到i=dc为止的∑φ(|vi|))为止的期间,FIFO存储器438延迟LUT432输出的9位的运算结果D434(φ(|vi|)),作为9位的D438提供给运算器437。运算器437从由寄存器436提供的13位的值D437减去由FIFO存储器438提供的9位的D438,将其减法运算结果作为9位的减法运算值D439提供给LUT439。即,运算器437从来自校验矩阵H的一行的全部边的消息D431(变量节点消息vi)求出的φ(|vi|)的累加值,减去从来自想要求出校验节点消息uj的边的消息D431(变量节点消息vi)求出的φ(|vi|),将其减法运算值(从i=1到i=dc-1为止的∑φ(|vi|))作为减法运算值D439提供给LUT439。
此外,当作为从由寄存器436提供的13位的值D437减去由FIFO存储器438提供的9位的D438的减法运算结果的量化值(高精度量化值),超过能够由9位的减法运算值D439表示的最大值时,运算器437将作为减法运算结果的高精度量化值,截取为能够由9位的高精度量化值表示的最大值,并输出9位的减法运算值D439。
LUT439对减法运算值D439(从i=1到i=dc-1为止的∑φ(|vi|)),与进行了式(7)中的逆函数φ-1(∑φ(|vi|))运算的运算结果D440(φ-1(∑φ(|vi|)))对应进行存储。并且,在LUT439中,减法运算值D439(从i=1到i=dc-1为止的∑φ(|vi|))由高精度量化值表示,而逆函数φ-1(∑φ(|vi|))的运算结果D440(φ-1(∑φ(|vi|)))由普通量化值表示。即,LUT439对由高精度量化值表示的9位的减法运算值D439(从i=1到i=dc-1为止的∑φ(|vi|)),与由普通量化值表示的5位的、逆函数φ-1(∑φ(|vi|))的运算结果D440(φ-1(∑φ(|vi|)))对应进行存储。
LUT439将由高精度量化值表示的9位的减法运算值D439(从i=1到i=dc-1为止的∑φ(|vi|))作为输入,读出与其对应的由普通量化值表示的5位的、逆函数φ-1(∑φ(|vi|))的运算结果D440(φ-1(∑φ(|vi|)))并输出。
因而,LUT439等效地进行运算式(7)中的逆函数φ-1(∑φ(|vi|))的运算的处理、及将高精度量化值变换为普通量化值的处理,之后在上述的LUT432中,使用普通量化值进行处理,直到进行将普通量化值变换为高精度量化值的处理为止。
与以上的处理并行,EXOR电路440通过运算保存在寄存器441中的1位的值D442和符号位D432的异或,进行符号位之间的乘法运算,将1位乘法运算结果D441重新保存到寄存器441中。此外,当从与校验矩阵的一行的全部的1对应的解码中途结果D411求出的变量节点消息vi(D431)的符号位D432被进行了乘法运算时,寄存器441被复位。
当从与校验矩阵的一行的全部的1对应的解码中途结果D411求出的变量节点消息vi(D431)的符号位D432被进行乘法运算得到的乘法运算结果D441(从i=1到dc为止的∏sign(vi))保存在寄存器441中时,由控制部417提供的控制信号D420从“0”变化到“1”。
当控制信号D420是“1”时,选择器442选择保存在寄存器441中的值、即从与校验矩阵的一行的全部的1对应的解码中途结果D411求出的符号位D432被进行乘法运算得到的值D442(从i=1到i=dc为止的∏sign(vi)),作为1位的值D443输出到寄存器443并保存。寄存器443将保存的值D443作为1位的值D444提供给选择器442和EXOR电路445。当控制信号D420是“0”时,选择器442选择由寄存器443提供的值D444,输出到寄存器443并重新保存。即,直到从与校验矩阵的一行的全部的1对应的解码中途结果D411(解码中途结果v)求出的变量节点消息vi(D431)的符号位D432被进行乘法运算为止,寄存器443将前次保存的值提供给选择器442和EXOR电路445。
另一方面,在从寄存器443将新的值D444(从i=1到i=dc为止的∏sign(vi))提供给EXOR电路445为止的期间,FIFO存储器444延迟符号位D432,作为1位的值D445提供给EXOR电路445。EXOR电路445通过运算由寄存器443提供的值D444、和由FIFO存储器444提供的值D445的异或,将值D444除以值D445,并将1位的除法运算结果作为除法运算值D446输出。即,EXOR电路445将从与校验矩阵的一行的全部的“1”对应的解码中途结果D411求出的变量节点消息vi(D431)的符号位D432(sign(vi))的乘法运算值,除以来自要求出校验节点消息uj的边的变量节点消息vi(D431)的符号位D432(sign(vi)),作为除法运算值D446输出其除法运算值(从i=1到i=dc-1为止的∏sign(vi))。
并且,在准校验节点计算器412中,输出由总共6位的普通量化值表示的消息D412(校验节点消息uj),该消息D412将从LUT439输出的普通量化值的5位的运算结果D440设为下位5位,并且将由EXOR电路445输出的1位的除法运算值D446设为最上位的位(符号位)。
以上,在准校验节点计算器412中进行式(7)和式(8)的运算,求出作为校验节点运算结果的、6位的普通量化值的校验节点消息uj。该校验节点消息uj,由准校验节点计算器412提供给边用存储器413(图17)进行存储。
此外,图9的校验矩阵的行的权重最大是9,因此,准校验节点计算器412具有:FIFO存储器438,延迟从9个解码中途结果D411求出的9个运算结果D434(φ(|vi|));FIFO存储器444,延迟9个符号位D432。当计算行的权重不到9的行的校验节点消息uj时,FIFO存储器438和FIFO存储器444中的延迟量被减小到该行的权重。
接着图20示出了图17的准变量节点计算器415的结构例。
准变量节点计算器415由模块C’构成。模块C’如上所述,与图18所示的变量节点计算器103的模块C对应,因而,进行与模块C相同的处理。
即,在模块C’中,运算器471、寄存器472、选择器473、寄存器474、运算器475,分别与图18的模块C的运算器151、寄存器152、选择器153、寄存器154、运算器156同样地构成。
由边用存储器413(图17)向准变量节点计算器415提供作为校验节点运算的结果的消息D413(校验节点消息uj),该消息D413被提供给运算器471。另外,由接收用存储器416(图17)向准变量节点计算器415提供接收数据D417(u0i),该接收数据D417被提供给运算器475。并且,在准变量节点计算器415中,由控制部417(图17)提供控制信号D422,该控制信号D422被提供给选择器473。
在此,对准变量节点计算器415,由边用存储器413(图17)提供的消息D413(校验节点消息uj)、和由接收用存储器416(图17)提供的接收数据D417(u0i)如上所述,都由6位的普通量化值表示。
运算器471通过将消息D413和保存在寄存器472中的9位的值D471进行加法运算,累加消息D413uj,将其结果得到的9位的累加值重新保存到寄存器472。此外,当与校验矩阵的一行的全部的1对应的消息D413(校验节点消息uj)被累加时,寄存器472被复位。
在此,运算器471输出的累加值是9位、输入到运算器471进行累加的消息D413(uj)是6位,其理由与在图12中运算器151的输出为只比输入到运算器151的6位的消息D103多3位的9位相同。
当寄存器472中保存1列部分的消息D413被累加得到的值时,由控制部417(图17)提供的控制信号D422从“0”变化到“1”。例如,当列的权重是“5”时,控制信号D422在第四个消息D413被累加为止为“0”,当第五个消息D413被累加时为“1”。
当控制信号D422是“1”时,选择器473选择保存在寄存器472中的值、即从来自校验矩阵H的一行的全部边的消息D413(校验节点消息uj)被累加得到的9位的累加值D471(从j=1到dv为止的∑uj),输出到寄存器474进行保存。寄存器474将保存的累加值D471作为9位的值D472提供给选择器473和运算器475。当控制信号D422是“0”时,选择器473选择由寄存器474提供的9位的值D472,输出到寄存器474并重新保存。即,直到来自校验矩阵的1列的全部边的消息D413(校验节点消息uj)被累加为止,寄存器474将前次的累加值D472提供给选择器473和运算器475。
运算器475将9位的累加值D472、和由接收用存储器416(图17)提供的6位的接收数据D417进行加法运算,将其结果得到的9位的值作为解码中途结果D415(解码中途结果v)输出。
以上,在准变量节点计算器415中,不将普通量化值变换为高精度量化值、即直接使用普通量化值,进行式(5)的运算,求出9位的解码中途结果v。该解码中途结果v,从准变量节点计算器415提供给解码中途结果保存用存储器410(图17)进行存储。
此外,在解码中途结果保存用存储器410中,存储由9位的普通量化值表示的解码中途结果v,该9位的解码中途结果v如上所述,通过开关411(图17)提供给准校验节点计算器412。
在图17的解码装置中也与图13的解码装置相同,通过在准校验节点计算器412的LUT432中将普通量化值变换为高精度量化值、并且在LUT439中将高精度量化值变换为普通量化值,从而,在作为校验节点运算及变量节点运算进行的处理中的、从运算非线性函数φ(x)后到运算其逆函数φ-1(x)为止的处理中,使用高精度量化值,在其他处理中使用普通量化值,因此,能够抑制解码装置的大规模化且高精度地进行LDPC码的解码。
并且,在图17的解码装置中,在准校验节点计算器412中进行校验节点运算、和变量节点运算的一部分,在准变量节点计算器415中进行变量节点运算的其他部分,因此,比起图13的解码装置能够减小装置的规模。
即,在图17的解码装置中,边用存储器413与图13的边用存储器102对应,解码中途结果保存用存储器410与图13的边用存储器100对应,接收用存储器416与图13的接收用存储器104对应。
并且,图17的边用存储器413、和对应的图13的边用存储器102,都需要存储个数与全边数相等的6位的校验节点消息uj,因此,需要全边数的6位倍的存储容量。另外,图17的接收用存储器416、和对应的图13的接收用存储器104,也都需要存储个数与码长相等的6位的接收数据u0i,因此,需要码长的6位倍的存储容量。
并且,图13的边用存储器100与图13的边用存储器102相同,需要个数与全边数相等的存储6位的变量节点消息vi,因此,需要全边数的6位倍的存储容量。
与此相对,与图13的边用存储器100对应的图17的解码中途结果保存用存储器410,需要个数与码长相等的存储准变量节点计算器415输出的解码中途结果v(D415)。解码中途结果v如图20所述,是9位(的普通量化值),因此,解码中途结果保存用存储器410需要码长的9位倍的存储容量。
从而,对于解码中途结果保存用存储器410、和对应的图13的边用存储器100,如果全边数是码长的3/2(=9位/6位)倍,则需要相同的存储容量。
然而,LDPC码的校验矩阵H是稀疏的,但是全边数(在校验矩阵H中为1的元素的总数)通常大于码长(校验矩阵H的列数)的3/2倍,例如,在图9的校验矩阵H中,全边数(323个)也成为码长(108)的约3(≈323/108)倍。
从而,解码中途结果保存用存储器410的存储容量能够设为少于对应的图13的边用存储器100的存储容量。
其结果,图17的解码装置能够比图13的解码装置将装置的规模减小与能够使解码中途结果保存用存储器410的存储容量少于对应的图13的边用存储器100的存储容量的相应部分。
另外,图17的解码装置如上所述,(与准变量节点计算器415不同)不需要设置运算式(5)的模块,也不需要设置图18的(图12)的FIFO存储器155,因此,能够比图13的解码装置构成为更小型。
在此,通过重复进行由式(7)表示的校验节点运算、和由式(1)表示的变量节点运算来对LDPC码进行解码的第1解码方法,与通过重复进行由式(8)及式(7)表示的准校验节点运算、和由式(5)表示的准变量节点运算来对LDPC码进行解码的第2解码方法等效。
并且,在第1及第2解码方法的任意一个中都进行式(7)的运算,但是该式(7)能够分解成式(9)、式(10)、及式(11)三个式子。
式9
Vi=φ(|vi|)                ...(9)
式10
W = Σ i = 1 d c - 1 V i . . . ( 10 )
式11
u j = φ - 1 ( W ) × Π i = 1 d c - 1 sign ( v i ) . . . ( 11 )
通过按式(9)至式(11)的顺序进行运算,能够进行式(7)的运算、即校验节点运算。
现在,按式(9)至式(11)的顺序进行运算时,将该运算过程分为从由式(9)运算的非线性函数φ(|vi|)到由式(11)运算的逆函数φ-1(W)为止的“内侧”和“外侧”时,在式(9)至式(11)的运算中,变量(消息)vi和uj只在“外侧”使用,变量Vi和W只在“内侧”使用。
因而,可以对表示只在“外侧”使用的变量vi及uj的量化值、和表示只在“内侧”使用的变量Vi及W的量化值,分配不同的数值。
因此,在图13及图17的解码装置中,作为表示变量vi及uj的量化值,采用以某量化宽度Q表示某动态范围Dy的数值的普通量化值,并且作为表示变量Vi及W的量化值,采用以比量化宽度Q小的量化宽度表示比动态范围Dy宽的动态范围的数值的高精度量化值,即在作为校验节点运算及变量节点运算进行的处理中的、从运算非线性函数φ(x)后到运算其逆函数φ-1(x)为止的处理(“内侧”)中,使用高精度量化值,并且在其他处理(“外侧”)中使用普通量化值。
由此,能够抑制解码装置的大规模化且实现LDPC码的解码的高精度化。换句话说,在实现一定精度(性能)的LDPC码的解码时,能够大幅削减解码装置的规模。
即,图21示出了关于各种解码装置的BER/FER的仿真结果。
此外,在图21中,横轴表示每1位的信号功率对噪声功率比Eb/N0,纵轴表示BER(Bit Error Rate:位误码率)或者FER(Frame Error Rate:帧误码率)。另外,在图21中,由实线表示BER,由虚线表示FER。
在图21中×记号表示如下情况下的BER/FER:在图10的解码装置中,由6位普通量化值表示消息uj、vi、及接收数据u0i,进行LDPC码的解码的情况。
另外,在图21中△记号表示如下情况下的BER/FER:在图10的解码装置中,由10位的高精度量化值表示消息uj、vi、及接收数据u0i,进行LDPC码的解码的情况。
比较由×记号表示的BER及FER、和由△记号表示的BER及FER可知,由10位的高精度量化值表示消息uj、vi、及接收数据u0i时,比由6位的普通量化值表示消息uj、vi、及接收数据u0i时,BER及FER显著提高。反过来说,由6位的普通量化值表示消息uj、vi、及接收数据u0i时,比由10位的高精度量化值表示消息uj、vi、及接收数据u0i时,BER及FER大大劣化。
然而,由6位的普通量化值表示消息uj、vi、及接收数据u0i时,与由10位的高精度量化值表示它们时相比,只关于存储消息uj、vi、及接收数据u0i的存储器,就能够将装置规模削减40%。因为存储消息uj、vi、及接收数据u0i的存储器的存储容量,与消息uj、vi、及接收数据u0i的量化位数成比例。
另一方面,在图21中○记号表示如下情况下的BER和FER:在图13的解码装置中由6位的普通量化值表示消息uj、vi、及接收数据u0i,在LUT1121(图14)中将6位的普通量化值变换为10位的高精度量化值,并且,在LUT1128(图14)中将10位的高精度量化值变换为6位的普通量化值,进行LDPC码的解码的情况。
根据图13的解码装置,可知能够得到与由10位的高精度量化值表示消息uj、vi、及接收数据u0i时大致同等的性能(精度)。
并且,在图13的解码装置中,由6位的普通量化值表示消息uj、vi、及接收数据u0i,因此,能够使装置规模与由6位的普通量化值表示消息uj、vi、及接收数据u0i的图10的解码装置大致同等。
即,根据图13的解码装置,如果与由6位的普通量化值表示消息uj、vi、及接收数据u0i的图10的解码装置进行比较,则能够以与该解码装置同等的规模进行更高精度的解码。
另外,根据图13的解码装置,如果与由10位的高精度量化值表示消息uj、vi、及接收数据u0i的图10的解码装置进行比较,则能够以小的装置规模实现与该解码装置同等的性能、即如上所述能够将存储接收数据u0i等的存储器削减40%来实现。
在此,当LDPC码的码长变长时,关于解码装置整体的规模,存储数据u0i等的存储器规模占主导地位,根据情况存储接收数据u0i等的存储器占解码装置规模的80%或大于80%。因而,存储接收数据u0i等的存储器削减效果极大。
此外,在本实施方式中,采用了具有逐一地依次进行各节点运算的完全串行解码(full serial decoding)体系结构的解码装置,但是解码装置的结构并没有被特别限定。即,本发明除了具有完全串行解码体系结构的解码装置之外,例如还能够应用于具有同时进行全部节点运算的完全并行解码(full parallel decoding)体系结构的解码装置、具有同时进行不是一个也不是全部、而是一定数量的节点运算的一部分的部分并行解码(partly paralleldecoding)体系结构的解码装置。
并且,校验矩阵H并不限定于图9所示的矩阵。
另外,由普通量化值、高精度量化值表示的数据(例如,消息uj、vi或接收数据u0i、解码中途结果v等)的位数(量化位数),也不限定于上述的值。
并且,作为图13的边用存储器100及102、接收用存储器104、图17的解码中途结果保存用存储器410、边用存储器413、接收用存储器416,例如能够使用RAM(Random Access Memory:随机存储器)。在此,作为这些边用存储器100等使用的RAM的每1字的位数(位宽)、RAM能够存储的字数并没有特别限定。另外,通过根据RAM的位宽、字数,对多个RAM提供同样的控制信号(例如,片选信号、地址信号),能够将该多个RAM理论上视作一个RAM而作为边用存储器100等使用。即,例如当物理上一个RAM位宽不到接收数据u0i等的量化位数时,能够将多个RAM理论上视作一个RAM而存储接收数据u0i等。
另外,在本实施方式中,由LUT1121(图14)、LUT432(图19)、或者LUT1128(图14)、LUT439(图19)等的LUT,将普通量化值变换为高精度量化值,或者将高精度量化值变换为普通量化值,但是能够与LUT分开而设置变换电路,由该变换电路进行从普通量化值和高精度量化值中的一个向另一个的变换。这种情况下,例如在图14中,将普通量化值变换为高精度量化值的变换电路被设置在紧接LUT1121的输入之前,将高精度量化值变换为普通量化值的变换电路被设置在紧接LUT1128的输出之后。
但是,通过由LUT进行从普通量化值和高精度量化值中的一个向另一个的变换,不需要与LUT分开而设置变换电路,因此,能够使装置规模小型化。
并且,在本实施方式中,使得由LUT1121(图14)、LUT432(图19)、或者LUT1128(图14)、LUT439(图19)等的LUT进行非线性函数φ(x)、或者其逆函数φ-1(x)的运算,但是,例如能够由CPU(Central Processing Unit:中央处理单元)、逻辑电路进行非线性函数φ(x)及其逆函数φ-1(x)的运算。
此外,例如能够将上述对LDPC码进行解码的解码装置应用于接收(数字)卫星广播的调谐器等。

Claims (7)

1.一种解码装置,是LDPC码、即低密度奇偶校验码的解码装置,其特征在于,具备:
第1运算部,进行用于前述LDPC码的解码的校验节点运算,前述校验节点运算包含非线性函数的运算及前述非线性函数的逆函数的运算;
第2运算部,进行用于前述LDPC码的解码的变量节点运算,
前述第1运算部具有:
第1变换部,将被分配为对规定的数值范围进行平均分割所得到的数值的第1量化值,变换为表示比前述第1量化值精度高的数值的第2量化值;
第2变换部,将前述第2量化值变换为前述第1量化值,
前述第1及第2运算部,在作为前述校验节点运算及变量节点运算进行的处理中的、从运算前述非线性函数后到运算前述逆函数前为止的处理中,使用前述第2量化值,在其他处理中,使用前述第1量化值。
2.根据权利要求1所述的解码装置,其特征在于,
前述第1运算部进行前述校验节点运算、和前述变量节点运算的一部分,即,将接受数据和来自与校验矩阵H的i列的各行的1对应的全部边的校验节点运算结果得到的校验节点消息进行加法运算,由此得到解码中途结果,从由此得到的所述解码中途结果,减去由来自与校验矩阵H的i列的各行的1对应的边的校验节点运算求出的校验节点消息中、来自要求出变量节点消息的边的校验节点消息;
前述第2运算部进行前述变量节点运算的其他部分。
3.根据权利要求1所述的解码装置,其特征在于,
前述第2量化值表示动态范围比前述第1量化值表示的数值的动态范围宽的数值。
4.根据权利要求1所述的解码装置,其特征在于,
前述第2量化值是量化宽度比前述第1量化值小的量化值。
5.根据权利要求1所述的解码装置,其特征在于,
前述第2量化值是位数比前述第1量化值多的量化值。
6.根据权利要求1所述的解码装置,其特征在于,
前述第1变换部是将前述第1量化值作为输入,根据前述第2量化值输出对前述非线性函数进行运算的结果的查询表;
前述第2变换部是将前述第2量化值作为输入,根据前述第1量化值输出对前述逆函数进行运算的结果的查询表。
7.一种解码方法,是LDPC码的解码装置的解码方法,其特征在于,包含:
第1运算步骤,进行用于前述LDPC码的解码的校验节点的校验节点运算,前述校验节点运算包含非线性函数的运算及前述非线性函数的逆函数的运算;
第2运算步骤,进行用于前述LDPC码的解码的变量节点的变量节点运算,
前述第1运算步骤,包含:
第1变换步骤,将被分配为对规定的数值范围进行平均分割所得到的数值的第1量化值,变换为表示比前述第1量化值精度高的数值的第2量化值;
第2变换步骤,将前述第2量化值变换为前述第1量化值,
在前述第1及第2运算步骤中,在作为前述校验节点运算及变量节点运算进行的处理中的、从运算前述非线性函数后到运算前述逆函数为止的处理中,使用前述第2量化值,在其他处理中,使用前述第1量化值。
CN2006100760679A 2005-04-25 2006-04-25 解码装置及解码方法 Expired - Fee Related CN1855731B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005-125963 2005-04-25
JP2005125963 2005-04-25
JP2005125963A JP4595650B2 (ja) 2005-04-25 2005-04-25 復号装置および復号方法

Publications (2)

Publication Number Publication Date
CN1855731A CN1855731A (zh) 2006-11-01
CN1855731B true CN1855731B (zh) 2010-05-26

Family

ID=37188533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006100760679A Expired - Fee Related CN1855731B (zh) 2005-04-25 2006-04-25 解码装置及解码方法

Country Status (3)

Country Link
US (1) US7657820B2 (zh)
JP (1) JP4595650B2 (zh)
CN (1) CN1855731B (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4729964B2 (ja) * 2005-04-25 2011-07-20 ソニー株式会社 復号装置および復号方法
JP4293172B2 (ja) * 2005-09-13 2009-07-08 ソニー株式会社 復号装置および復号方法
JP4320418B2 (ja) * 2005-09-26 2009-08-26 日本電気株式会社 復号装置および受信装置
KR20070084952A (ko) * 2006-02-22 2007-08-27 삼성전자주식회사 통신 시스템에서 신호 수신 장치 및 방법
US9275118B2 (en) 2007-07-25 2016-03-01 Yahoo! Inc. Method and system for collecting and presenting historical communication data
JP4487213B2 (ja) * 2007-10-19 2010-06-23 ソニー株式会社 復号装置および方法、並びにプログラム
US9584343B2 (en) * 2008-01-03 2017-02-28 Yahoo! Inc. Presentation of organized personal and public data using communication mediums
JP4572937B2 (ja) * 2008-01-23 2010-11-04 ソニー株式会社 復号装置および方法、プログラム、並びに記録媒体
US8611151B1 (en) * 2008-11-06 2013-12-17 Marvell International Ltd. Flash memory read performance
US8213236B1 (en) 2009-04-21 2012-07-03 Marvell International Ltd. Flash memory
EP2438571A4 (en) 2009-06-02 2014-04-30 Yahoo Inc AUTOMATICALLY ADDRESSED ADDRESS BOOK
US8984074B2 (en) 2009-07-08 2015-03-17 Yahoo! Inc. Sender-based ranking of person profiles and multi-person automatic suggestions
US7930430B2 (en) 2009-07-08 2011-04-19 Xobni Corporation Systems and methods to provide assistance during address input
US8990323B2 (en) 2009-07-08 2015-03-24 Yahoo! Inc. Defining a social network model implied by communications data
US9721228B2 (en) 2009-07-08 2017-08-01 Yahoo! Inc. Locally hosting a social network using social data stored on a user's computer
US9087323B2 (en) 2009-10-14 2015-07-21 Yahoo! Inc. Systems and methods to automatically generate a signature block
US9514466B2 (en) 2009-11-16 2016-12-06 Yahoo! Inc. Collecting and presenting data including links from communications sent to or from a user
US9760866B2 (en) 2009-12-15 2017-09-12 Yahoo Holdings, Inc. Systems and methods to provide server side profile information
US8423545B2 (en) 2010-02-03 2013-04-16 Xobni Corporation Providing user input suggestions for conflicting data using rank determinations
US8982053B2 (en) 2010-05-27 2015-03-17 Yahoo! Inc. Presenting a new user screen in response to detection of a user motion
US8620935B2 (en) 2011-06-24 2013-12-31 Yahoo! Inc. Personalizing an online service based on data collected for a user of a computing device
US8972257B2 (en) 2010-06-02 2015-03-03 Yahoo! Inc. Systems and methods to present voice message information to a user of a computing device
US10078819B2 (en) 2011-06-21 2018-09-18 Oath Inc. Presenting favorite contacts information to a user of a computing device
US9747583B2 (en) 2011-06-30 2017-08-29 Yahoo Holdings, Inc. Presenting entity profile information to a user of a computing device
US9237434B2 (en) * 2011-07-13 2016-01-12 Qualcomm Incorporated Network-assisted peer discovery with network coding
US10977285B2 (en) 2012-03-28 2021-04-13 Verizon Media Inc. Using observations of a person to determine if data corresponds to the person
US10013672B2 (en) 2012-11-02 2018-07-03 Oath Inc. Address extraction from a communication
US10192200B2 (en) 2012-12-04 2019-01-29 Oath Inc. Classifying a portion of user contact data into local contacts
JP6395658B2 (ja) * 2015-04-23 2018-09-26 三菱電機株式会社 誤り訂正復号装置、受信装置及び誤り訂正復号方法
CA2953609C (en) 2015-10-13 2018-01-30 Huawei Technologies Co., Ltd Decoding device and method and signal transmission system
CN105680881A (zh) * 2016-01-08 2016-06-15 广西大学 Ldpc译码方法及译码器
US10574274B2 (en) * 2017-09-29 2020-02-25 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10884858B2 (en) * 2018-03-16 2021-01-05 SK Hynix Inc. LDPC decoding device, memory system including the same and method thereof
US11159175B2 (en) * 2019-06-21 2021-10-26 Intel Corporation Non-uniform iteration-dependent min-sum scaling factors for improved performance of spatially-coupled LDPC codes
CN110311755B (zh) * 2019-06-25 2020-09-22 中山大学 一种利用线性分组码传输额外信息的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1147883A (zh) * 1995-02-01 1997-04-16 菲利浦电子有限公司 数据的防差错传输和接收方法以及传输数据的传输系统
JP3116271B2 (ja) * 1996-09-20 2000-12-11 コリア オートモティブ モーター コーポレーション 車両用モーター
EP0756386B1 (en) * 1995-07-27 2003-09-17 Victor Company Of Japan, Limited Method and apparatus for coding a digital, acoustic signal
EP1521372A1 (en) * 2003-05-13 2005-04-06 Sony Corporation Decoding method, decoding device, and program

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985536B2 (en) * 2001-01-12 2006-01-10 International Business Machines Corporation Block coding for multilevel data communication
JP3815557B2 (ja) * 2002-08-27 2006-08-30 ソニー株式会社 符号化装置及び符号化方法、並びに復号装置及び復号方法
JP2004088470A (ja) * 2002-08-27 2004-03-18 Sony Corp 復号装置及び復号方法
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1147883A (zh) * 1995-02-01 1997-04-16 菲利浦电子有限公司 数据的防差错传输和接收方法以及传输数据的传输系统
EP0756386B1 (en) * 1995-07-27 2003-09-17 Victor Company Of Japan, Limited Method and apparatus for coding a digital, acoustic signal
JP3116271B2 (ja) * 1996-09-20 2000-12-11 コリア オートモティブ モーター コーポレーション 車両用モーター
EP1521372A1 (en) * 2003-05-13 2005-04-06 Sony Corporation Decoding method, decoding device, and program

Also Published As

Publication number Publication date
US20060242536A1 (en) 2006-10-26
US7657820B2 (en) 2010-02-02
JP2006304130A (ja) 2006-11-02
CN1855731A (zh) 2006-11-01
JP4595650B2 (ja) 2010-12-08

Similar Documents

Publication Publication Date Title
CN1855731B (zh) 解码装置及解码方法
CN101310446B (zh) 解码器和解码方法
CN101208864B (zh) 解码装置及解码方法
CN101388746B (zh) 解码ldpc编码信号的解码器及方法
CN101340194B (zh) 解码ldpc编码信号的解码器
CN101156321B (zh) Ldpc编码码字、特别是dvb-s2 ldpc编码码字的解码控制方法和设备
CN100592641C (zh) Ldpc码用检查矩阵生成方法及检查矩阵生成装置
US7499490B2 (en) Encoders for block-circulant LDPC codes
US8281205B2 (en) LDPC decoding apparatus, decoding method and program
US7318186B2 (en) Decoding method, decoding apparatus, and program to decode low density parity check codes
US8234555B2 (en) Data decoding apparatus, data decoding method, data transmitting/receiving system, data receiving apparatus, data receiving method and program
US8627172B2 (en) Error correction encoding apparatus, decoding apparatus, encoding method, decoding method, and programs thereof
EP1696574A1 (en) AMP (Accelerated Message Passing) decoder adapted for LDPC (Low Density Parity Check) codes
CN101414835B (zh) 接收设备及方法
US20140059408A1 (en) Accumulating ldpc (low density parity check) decoder
CN100566182C (zh) 解码ldpc编码信号的加速消息传递解码器和方法
CN101364809B (zh) 解码器
Lee et al. Memory efficient multi-rate regular LDPC decoder for CMMB
Zolotarev et al. Usage of divergence within concatenated multithreshold decoding convolutional codes
JP4821724B2 (ja) 復号装置および復号方法
Sha et al. A memory efficient FPGA implementation of quasi-cyclic LDPC decoder
Sorensen Hardware Implementations of CCSDS Deep Space LDPC Codes for a Satellite Transponder
JP2007081602A (ja) 復号装置および復号方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20170111

Address after: Kanagawa Japan Atsugi Asahi 4-14-1

Patentee after: SONY semiconductor solutions

Address before: Tokyo, Japan, Japan

Patentee before: Sony Corp.

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

Granted publication date: 20100526

Termination date: 20180425

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