JP4288582B2 - Decoding device, decoding method, and program - Google Patents

Decoding device, decoding method, and program Download PDF

Info

Publication number
JP4288582B2
JP4288582B2 JP2003290605A JP2003290605A JP4288582B2 JP 4288582 B2 JP4288582 B2 JP 4288582B2 JP 2003290605 A JP2003290605 A JP 2003290605A JP 2003290605 A JP2003290605 A JP 2003290605A JP 4288582 B2 JP4288582 B2 JP 4288582B2
Authority
JP
Japan
Prior art keywords
frame
decoding
message
variable node
calculation
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
JP2003290605A
Other languages
Japanese (ja)
Other versions
JP2005064735A (en
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 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
Priority to JP2003290605A priority Critical patent/JP4288582B2/en
Publication of JP2005064735A publication Critical patent/JP2005064735A/en
Application granted granted Critical
Publication of JP4288582B2 publication Critical patent/JP4288582B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Description

本発明は、復号装置および復号方法、並びにプログラムに関し、特に、低密度パリティ検査符号による符号化が施された符号の復号を行う復号装置および復号方法、並びにプログラムに関する。   The present invention relates to a decoding device, a decoding method, and a program, and more particularly to a decoding device, a decoding method, and a program for decoding a code that has been encoded by a low-density parity check code.

近年、例えば、移動体通信や深宇宙通信といった通信分野、及び地上波又は衛星ディジタル放送といった放送分野の研究が著しく進められているが、それに伴い、誤り訂正符号化及び復号の効率化を目的として符号理論に関する研究も盛んに行われている。   In recent years, for example, the field of communication such as mobile communication and deep space communication and the field of broadcasting such as terrestrial or satellite digital broadcasting have been remarkably advanced. Research on coding theory is also actively conducted.

符号性能の理論的限界としては、いわゆるシャノン(C. E. Shannon)の通信路符号化定理によって与えられるシャノン限界が知られている。符号理論に関する研究は、このシャノン限界に近い性能を示す符号を開発することを目的として行われている。近年では、シャノン限界に近い性能を示す符号化方法として、例えば、並列連接畳み込み符号(PCCC(Parallel Concatenated Convolutional Codes))や、縦列連接畳み込み符号(SCCC(Serially Concatenated Convolutional Codes))といった、いわゆるターボ符号化(Turbo coding)と呼ばれる手法が開発されている。また、これらのターボ符号が開発される一方で、古くから知られる符号化方法である低密度パリティ検査符号(Low Density Parity Check codes)(以下、LDPC符号という)が脚光を浴びつつある。   As the theoretical limit of code performance, the Shannon limit given by the so-called Shannon (C. E. Shannon) channel coding theorem is known. Research on code theory is being conducted with the goal of developing codes that exhibit performance close to the Shannon limit. In recent years, as a coding method showing performance close to the Shannon limit, for example, so-called turbo codes such as parallel concatenated convolutional codes (PCCC (Parallel Concatenated Convolutional Codes)) and tandem concatenated convolutional codes (SCCC) A technique called Turbo coding has been developed. While these turbo codes are being developed, low density parity check codes (hereinafter referred to as LDPC codes), which is an encoding method that has been known for a long time, are attracting attention.

LDPC符号は、R. G. Gallagerによる「R. G. Gallager, "Low Density Parity Check Codes", Cambridge, Massachusetts: M. I. T. Press, 1963」において最初に提案されたものであり、その後、「D. J. C. MacKay, "Good error 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 and D. A. Spielman, "Analysis of low density codes and improved designs using irregular graphs", in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998」等において再注目されるに至ったものである。   The LDPC code was first proposed in "RG Gallager," Low Density Parity Check Codes ", Cambridge, Massachusetts: MIT Press, 1963 by RG Gallager, and then" DJC MacKay, "Good error correcting codes based on very sparse matrices ", Submitted to IEEE Trans. Inf. Theory, IT-45, pp. 399-431, 1999" and "MG Luby, M. Mitzenmacher, MA Shokrollahi and DA Spielman," Analysis of low density codes and improved designs using irregular graphs ", in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998".

LDPC符号は、近年の研究により、ターボ符号等と同様に、符号長を長くしていくにしたがって、シャノン限界に近い性能が得られることがわかりつつある。また、LDPC符号は、最小距離が符号長に比例するという性質があることから、その特徴として、ブロック誤り確率特性がよく、さらに、ターボ符号等の復号特性において観測される、いわゆるエラーフロア現象が殆ど生じないことも利点として挙げられる。   Recent studies have shown that LDPC codes can achieve performance close to the Shannon limit as the code length is increased, similar to turbo codes and the like. In addition, since the LDPC code has the property that the minimum distance is proportional to the code length, its characteristic is that the block error probability characteristic is good, and furthermore, the so-called error floor phenomenon observed in the decoding characteristic such as turbo code is observed. An advantage is that it hardly occurs.

以下、このようなLDPC符号について具体的に説明する。なお、LDPC符号は、線形符号であり、必ずしも2元である必要はないが、ここでは、2元であるものとして説明する。   Hereinafter, such an LDPC code will be specifically described. Note that the LDPC code is a linear code and does not necessarily need to be binary, but will be described here as being binary.

LDPC符号は、そのLDPC符号を定義する検査行列(parity check matrix)が疎なものであることを最大の特徴とするものである。ここで、疎な行列とは、行列のコンポーネントの"1"の個数が非常に少なく構成されるものであり、疎な検査行列をHで表すものとすると、そのような検査行列としては、例えば、図1に示すように、各列のハミング重み("1"の数)(weight)が"3"であり、且つ、各行のハミング重みが"6"であるもの等がある。   The LDPC code is characterized by the fact that the parity check matrix that defines the LDPC code is sparse. Here, the sparse matrix is configured so that the number of "1" of the matrix components is very small. If the sparse check matrix is represented by H, as such a check matrix, for example, As shown in FIG. 1, the hamming weight (number of “1” s) (weight) of each column is “3” and the hamming weight of each row is “6”.

このように、各行及び各列のハミング重みが一定である検査行列Hによって定義されるLDPC符号は、レギュラーLDPC符号と称される。一方、各行及び各列のハミング重みが一定でない検査行列Hによって定義されるLDPC符号は、イレギュラーLDPC符号と称される。   Thus, an LDPC code defined by a parity check matrix H in which the Hamming weight of each row and each column is constant is referred to as a regular LDPC code. On the other hand, an LDPC code defined by a parity check matrix H in which the Hamming weight of each row and each column is not constant is referred to as an irregular LDPC code.

このようなLDPC符号による符号化は、検査行列Hに基づいて生成行列Gを生成し、この生成行列Gを2元の情報メッセージに対して乗算することによって符号語を生成することで実現される。具体的には、LDPC符号による符号化を行う符号化装置は、まず、検査行列Hの転置行列HTとの間に、式GHT=0が成立する生成行列Gを算出する。ここで、生成行列Gが、k×n行列である場合には、符号化装置は、生成行列Gに対してkビットからなる情報メッセージ(ベクトルu)を乗算し、nビットからなる符号語c(=uG)を生成する。この符号化装置によって生成された符号語は、値が"0"の符号ビットが"+1"に、値が"1"の符号ビットが"−1"にといったようにマッピングされて送信され、所定の通信路を介して受信側において受信されることになる。 Such an LDPC code encoding is realized by generating a generator matrix G based on the check matrix H and generating a codeword by multiplying the binary information message by the generator matrix G. . Specifically, the encoding device which performs encoding by LDPC codes, first, between the transposed matrix H T of the parity check matrix H, calculates a generator matrix G which formula GH T = 0 is established. Here, when the generator matrix G is a k × n matrix, the encoding device multiplies the generator matrix G by an information message (vector u) consisting of k bits, and a codeword c consisting of n bits. (= UG) is generated. The codeword generated by this encoding device is transmitted after being mapped such that the sign bit having a value of “0” is “+1”, the sign bit having a value of “1” is “−1”, and the like. The signal is received on the receiving side via a predetermined communication path.

一方、LDPC符号の復号は、Gallagerが確率復号(Probabilistic Decoding)と称して提案したアルゴリズムであって、バリアブルノード(variable node(メッセージノード(message node)とも呼ばれる。))と、チェックノード(check node)とからなる、いわゆるタナーグラフ(Tanner graph)上での確率伝播(belief propagation)によるメッセージ・パッシング・アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノードとチェックノードを、単に、ノードともいう。   On the other hand, decoding of an LDPC code is an algorithm proposed by Gallager called probabilistic decoding (Probabilistic Decoding), which is a variable node (also called a message node) and a check node (check node). ) And a message passing algorithm based on belief propagation on a so-called Tanner graph. Here, hereinafter, the variable node and the check node are also simply referred to as nodes as appropriate.

しかしながら、確率復号においては、各ノード間で受け渡されるメッセージが実数値であることから、解析的に解くためには、連続した値をとるメッセージの確率分布そのものを追跡する必要があり、非常に困難を伴う解析を必要とすることになる。そこで、Gallagerは、LDPC符号の復号アルゴリズムとして、アルゴリズムA又はアルゴリズムBを提案している。   However, in probabilistic decoding, since the message passed between each node is a real value, in order to solve it analytically, it is necessary to track the probability distribution itself of messages that take consecutive values. It will require analysis with difficulty. Therefore, Gallager has proposed algorithm A or algorithm B as a decoding algorithm for LDPC codes.

LDPC符号の復号は、一般的には、図2に示すような手順にしたがって行われる。なお、ここでは、受信値をU0(u0i)とし、チェックノードから出力されるメッセージをujとし、バリアブルノードから出力されるメッセージをviとする。また、ここでは、メッセージとは、値の"0"らしさを、いわゆる対数尤度比(log likelihood ratio)で表現した実数値である。 The decoding of the LDPC code is generally performed according to a procedure as shown in FIG. Here, the received value is U 0 (u 0i ), the message output from the check node is u j, and the message output from the variable node is v i . Further, here, the message is a real value expressing the value of “0” as a so-called log likelihood ratio.

まず、LDPC符号の復号においては、図2に示すように、ステップS11において、受信値U0(u0i)が受信され、メッセージujが"0"に初期化されるとともに、繰り返し処理のカウンタとしての整数をとる変数kが"0"に初期化され、ステップS12に進む。ステップS12において、受信値U0(u0i)に基づいて、式(1)に示す演算を行うことによってメッセージviが求められ、さらに、このメッセージviに基づいて、式(2)に示す演算を行うことによってメッセージujが求められる。 First, in decoding of the LDPC code, as shown in FIG. 2, in step S11, the received value U 0 (u 0i ) is received, the message u j is initialized to “0”, and the counter of the iterative process is performed. The variable k taking an integer is initialized to “0”, and the process proceeds to step S12. In step S12, based on the received value U 0 (u 0i ), the message v i is obtained by performing the calculation shown in the equation (1). Further, based on the message v i , the message v i is expressed in the equation (2). A message u j is obtained by performing an operation.

Figure 0004288582
・・・(1)
Figure 0004288582
... (1)

Figure 0004288582
・・・(2)
Figure 0004288582
... (2)

ここで、式(1)と式(2)におけるdvとdcは、それぞれ、検査行列Hの縦方向(列)と横方向(行)の"1"の個数を示す任意に選択可能とされるパラメータであり、例えば、(3,6)符号の場合には、dv=3,dc=6となる。 Here, d v and d c in Equation (1) and Equation (2) can be arbitrarily selected to indicate the number of “1” s in the vertical direction (column) and horizontal direction (row) of the parity check matrix H, respectively. For example, in the case of a (3, 6) code, d v = 3 and d c = 6.

なお、式(1)または(2)の演算においては、それぞれ、メッセージを出力しようとする枝(edge)から入力されたメッセージを、和または積演算のパラメータとしては用いないことから、和または積演算の範囲が、1乃至dv-1または1乃至dc-1となっている。また、式(2)に示す演算は、実際には、2入力v1,v2に対する1出力で定義される式(3)に示す関数R(v1,v2)のテーブルを予め作成しておき、これを式(4)に示すように連続的(再帰的)に用いることによって行われる。 Note that in the calculation of the expression (1) or (2), the message input from the edge to which the message is to be output is not used as a parameter for the sum or product operation. The range of operation is 1 to d v -1 or 1 to d c -1. In addition, the calculation shown in equation (2) actually creates a table of function R (v 1 , v 2 ) shown in equation (3) defined by one output for two inputs v 1 and v 2 in advance. This is done by using it continuously (recursively) as shown in equation (4).

Figure 0004288582
・・・(3)
Figure 0004288582
... (3)

Figure 0004288582
・・・(4)
Figure 0004288582
... (4)

ステップS12では、さらに、変数kが"1"だけインクリメントされ、ステップS13に進む。ステップS13では、変数kが所定の繰り返し復号回数N以上であるか否かが判定される。ステップS13において、変数kがN以上ではないと判定された場合、ステップS12に戻り、以下、同様の処理が繰り返される。   In step S12, the variable k is further incremented by “1”, and the process proceeds to step S13. In step S13, it is determined whether or not the variable k is equal to or greater than a predetermined iterative decoding count N. If it is determined in step S13 that the variable k is not equal to or greater than N, the process returns to step S12, and the same processing is repeated thereafter.

また、ステップS13において、変数kがN以上であると判定された場合、ステップS14に進み、式(5)に示す演算を行うことによって最終的に出力する復号結果としてのメッセージviが求められて出力され、LDPC符号の復号処理が終了する。 If it is determined in step S13 that the variable k is greater than or equal to N, the process proceeds to step S14, and a message v i as a decoding result to be finally output is obtained by performing the calculation shown in equation (5). And the LDPC code decoding process ends.

Figure 0004288582
・・・(5)
Figure 0004288582
... (5)

ここで、式(5)の演算は、式(1)の演算とは異なり、バリアブルノードに接続している全ての枝からの入力メッセージを用いて行われる。   Here, unlike the operation of equation (1), the operation of equation (5) is performed using input messages from all branches connected to the variable node.

このようなLDPC符号の復号は、例えば(3,6)符号の場合には、図3に示すように、各ノード間でメッセージの授受が行われる。なお、図3における"="で示すノード(バリアブルノード)では、式(1)に示した演算が行われ、"+"で示すノード(チェックノード)では、式(2)に示した演算が行われる。特に、アルゴリズムAにおいては、メッセージを2元化し、"+"で示すノードにて、dc-1個の入力メッセージの排他的論理和演算を行い、"="で示すノードにて、受信値Rに対して、dv-1個の入力メッセージが全て異なるビット値であった場合には、符号を反転して出力する。 For example, in the case of a (3, 6) code, such an LDPC code is decoded as shown in FIG. In FIG. 3, the calculation shown in Expression (1) is performed at the node indicated by “=” (variable node), and the calculation shown in Expression (2) is performed at the node indicated by “+” (check node). Done. In particular, in algorithm A, the message is binarized, and the exclusive OR operation of d c −1 input messages is performed at the node indicated by “+”, and the received value is obtained at the node indicated by “=”. For R, if d v −1 input messages all have different bit values, the sign is inverted and output.

また、一方で、近年、LDPC符号の復号の実装法に関する研究も行われている。実装方法について述べる前に、まず、LDPC符号の復号を摸式化して説明する。   On the other hand, in recent years, research on an implementation method for decoding an LDPC code is also being conducted. Before describing the mounting method, first, decoding of an LDPC code will be schematically described.

図4は、(3,6)LDPC符号(符号化率1/2、符号長12)の検査行列(parity check matrix)の例である。LDPC符号の検査行列は、図5のように、タナーグラフを用いて書き表すことができる。ここで、図5において、"+"で表わされるのが、チェックノードであり、"="で表わされるのが、バリアブルノードである。チェックノードとバリアブルノードは、それぞれ、検査行列の行と列に対応する。チェックノードとバリアブルノードとの間の結線は、枝(edge)であり、検査行列の"1"に相当する。即ち、検査行列の第j行第i列のコンポーネントが1である場合には、図5において、上からi番目のバリアブルノード("="のノード)と、上からj番目のチェックノード("+"のノード)とが、枝により接続される。枝は、バリアブルノードに対応する符号ビットが、チェックノードに対応する拘束条件を持つことを表わす。なお、図5は、図4の検査行列のタナーグラフとなっている。   FIG. 4 is an example of a parity check matrix of a (3, 6) LDPC code (coding rate 1/2, code length 12). The parity check matrix of the LDPC code can be written using a Tanner graph as shown in FIG. In FIG. 5, “+” represents a check node, and “=” represents a variable node. Check nodes and variable nodes correspond to the rows and columns of the parity check matrix, respectively. The connection between the check node and the variable node is an edge and corresponds to “1” of the parity check matrix. That is, when the component in the j-th row and i-th column of the parity check matrix is 1, the i-th variable node ("=" node) from the top and the j-th check node ("from the top) in FIG. + "Node") are connected by a branch. The branch indicates that the sign bit corresponding to the variable node has a constraint condition corresponding to the check node. Note that FIG. 5 is a Tanner graph of the parity check matrix of FIG.

LDPC符号の復号方法であるサムプロダクトアルゴリズム(Sum Product Algorithm)は、バリアブルノードの演算とチェックノードの演算とを繰り返し行う。   The Sum Product Algorithm, which is an LDPC code decoding method, repeatedly performs a variable node operation and a check node operation.

バリアブルノードでは、図6のように、式(1)の演算を行う。すなわち、図6において、計算しようとしている枝に対応するメッセージviは、バリアブルノードに繋がっている残りの枝からのメッセージu1およびu2と、受信情報u0iを用いて計算される。他の枝に対応するメッセージも同様に計算される。 In the variable node, the calculation of Expression (1) is performed as shown in FIG. That is, in FIG. 6, the message v i corresponding to the branch to be calculated is calculated using the messages u 1 and u 2 from the remaining branches connected to the variable node and the reception information u 0i . Messages corresponding to other branches are similarly calculated.

チェックノードの演算について説明する前に、式(2)を、式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)の関係を用いて、式(6)のように書き直す。但し、sign(x)は、x≧0のとき1であり、x<0のとき-1である。   Before explaining the operation of the check node, the expression (2) is changed to the expression a × b = exp {ln (| a |) + ln (| b |)} × sign (a) × sign (b). And rewrite as equation (6). However, sign (x) is 1 when x ≧ 0, and −1 when x <0.

Figure 0004288582
・・・(6)
Figure 0004288582
... (6)

更に、x≧0において、φ(x)=ln(tanh(x/2))と定義すると、φ-1(x)=2tanh-1(e-x)であるから、式(6)は、式(7)のように書くことができる。 Furthermore, when x ≧ 0 and φ (x) = ln (tanh (x / 2)) is defined, φ −1 (x) = 2 tanh −1 (e −x ), so equation (6) is It can be written as equation (7).

Figure 0004288582
・・・(7)
Figure 0004288582
... (7)

チェックノードでは、図7のように、式(7)の演算を行う。すなわち、図7において、計算しようとしている枝に対応するメッセージujは、チェックノードに繋がっている残りの枝からのメッセージv1,v2,v3,v4,v5を用いて計算される。他の枝に対応するメッセージも同様に計算される。 In the check node, the calculation of Expression (7) is performed as shown in FIG. That is, in FIG. 7, the message u j corresponding to the branch to be calculated is calculated using the messages v 1 , v 2 , v 3 , v 4 , v 5 from the remaining branches connected to the check node. The Messages corresponding to other branches are similarly calculated.

なお、関数φ(x)は、φ(x)=ln((ex+1)/(ex-1))とも表すことができ、x>0において、φ(x)=φ-1(x)である。関数φ(x)およびφ-1(x)をハードウェアに実装する際には、LUT(Look Up Table)を用いて実装される場合があるが、両者共に同一のLUTとなる。 The function φ (x) can also be expressed as φ (x) = ln ((e x +1) / (e x −1)). When x> 0, φ (x) = φ −1 ( x). When the functions φ (x) and φ −1 (x) are mounted on hardware, they may be mounted using a LUT (Look Up Table), but both are the same LUT.

サムプロダクトアルゴリズムをハードウェアに実装する場合、式(1)で表わされるバリアブルノード演算および式(7)で表わされるチェックノード演算とを、適度な回路規模と動作周波数で繰り返し行うことが必要である。   When the thumb product algorithm is implemented in hardware, it is necessary to repeatedly perform the variable node operation represented by Expression (1) and the check node operation represented by Expression (7) with an appropriate circuit scale and operating frequency. .

復号装置の実装の例として、まず、単純に各ノードの演算を一つずつ順次行うことによって復号を行う場合(full serial decoding)の実装法について説明する。   As an example of implementation of a decoding device, first, an implementation method in the case where decoding is performed by simply performing operations of each node one by one (full serial decoding) will be described.

なお、ここでは、例えば、図8の、30(行)×90(列)の検査行列で表現される符号(符号化率2/3、符号長90)を復号することとする。図8の検査行列の1の数は269であり、従って、そのタナーグラフでは、枝の数は269個となる。ここで、図8の検査行列では、0を、"."で表現している。   Here, for example, a code (coding rate 2/3, code length 90) represented by a parity check matrix of 30 (rows) × 90 (columns) in FIG. 8 is decoded. The number of 1s in the parity check matrix in FIG. 8 is 269. Therefore, in the Tanner graph, the number of branches is 269. Here, in the parity check matrix of FIG. 8, 0 is represented by “.”.

図9は、LDPC符号の1回復号を行う復号装置の構成例を示している。   FIG. 9 illustrates a configuration example of a decoding device that performs one-time decoding of an LDPC code.

図9の復号装置では、その動作する1クロック(clock)ごとに、1つの枝に対応するメッセージが計算される。   In the decoding device of FIG. 9, a message corresponding to one branch is calculated for each clock that operates.

即ち、図9の復号装置は、2つの枝用メモリ100および102、1つのチェックノード計算器101、1つのバリアブルノード計算器103、1つの受信用メモリ104、1つの制御部105からなる。   9 includes two branch memories 100 and 102, one check node calculator 101, one variable node calculator 103, one reception memory 104, and one control unit 105.

図9の復号装置では、枝用メモリ100または102からメッセージデータが1つずつ読み出され、そのメッセージデータを用いて、所望の枝に対応するメッセージデータが計算される。そして、その計算によって求められたメッセージデータが1つずつ後段の枝用メモリ102または100に格納されていく。繰り返し復号を行う際には、この1回復号を行う図9の復号装置を複数個縦列に連接するか、もしくは図9の復号装置を繰り返し用いることによって、繰り返し復号を実現する。なお、ここでは、例えば、図9の復号装置が複数個接続されているものとする。   In the decoding device of FIG. 9, message data is read one by one from the branch memory 100 or 102, and message data corresponding to a desired branch is calculated using the message data. The message data obtained by the calculation is stored in the branch memory 102 or 100 in the subsequent stage one by one. When iterative decoding is performed, iterative decoding is realized by connecting a plurality of decoding devices of FIG. 9 that perform this one-time decoding in a column or by repeatedly using the decoding device of FIG. Here, for example, it is assumed that a plurality of decoding devices in FIG. 9 are connected.

枝用メモリ100は、前段の復号装置(図示せず)のバリアブルノード計算器103から供給されるメッセージD100を、後段のチェックノード計算器101が読み出す順番に格納していく。そして、枝用メモリ100は、チェックノード計算のフェーズでは、メッセージD100を、格納してある順番通りに、メッセージD101として、チェックノード計算器101に供給する。   The branch memory 100 stores the message D100 supplied from the variable node calculator 103 of the preceding decoding device (not shown) in the order in which the subsequent check node calculator 101 reads the message D100. In the check node calculation phase, the branch memory 100 supplies the message D100 to the check node calculator 101 as the message D101 in the stored order.

チェックノード計算器101は、制御部105から供給される制御信号D106に基づき、枝用メモリ100から供給されるメッセージD101を用いて、式(7)に従って演算を行い、その演算によって求められたメッセージD102を、後段の枝用メモリ102に供給する。   Based on the control signal D106 supplied from the control unit 105, the check node calculator 101 uses the message D101 supplied from the branch memory 100 to perform an operation according to Expression (7), and obtains the message obtained by the operation. D102 is supplied to the branch memory 102 in the subsequent stage.

枝用メモリ102は、前段のチェックノード計算器101から供給されるメッセージD102を、後段のバリアブルノード計算器103が読み出す順番に格納していく。そして、枝用メモリ102は、バリアブルノード計算のフェーズでは、メッセージD102を、格納してある順番通りに、メッセージD103として、バリアブルノード計算器103に供給する。   The branch memory 102 stores the message D102 supplied from the previous check node calculator 101 in the order in which the subsequent variable node calculator 103 reads the message D102. In the variable node calculation phase, the branch memory 102 supplies the message D102 to the variable node calculator 103 as the message D103 in the stored order.

さらに、バリアブルノード計算器103には、制御部105から制御信号D107が供給されるとともに、受信用メモリ104から受信データD104が供給される。バリアブルノード計算器103は、制御信号D107に基づき、枝用メモリ100から供給されるメッセージD103と受信用メモリ100から供給される受信データD104を用い、式(1)に従って演算を行い、その演算の結果得られるメッセージD105を、図示せぬ後段の復号装置の枝用メモリ100に供給する。   Further, the control signal D107 is supplied from the control unit 105 to the variable node calculator 103, and the reception data D104 is supplied from the reception memory 104. Based on the control signal D107, the variable node calculator 103 uses the message D103 supplied from the branch memory 100 and the received data D104 supplied from the reception memory 100 to perform an operation according to the equation (1), and The message D105 obtained as a result is supplied to the branch memory 100 of the decoding device in the subsequent stage (not shown).

受信用メモリ104には、LDPC符号化された受信データ(LDPC符号)が格納される。制御部105は、バリアブルノード演算を制御する制御信号D106と、チェックノード演算を制御する制御信号D107を、それぞれチェックノード計算器101とバリアブルノード計算器103に供給する。制御部105は、枝用メモリ100に全ての枝のメッセージが格納されたとき、チェックノード計算器101に制御信号D106を供給し、枝用メモリ102に全ての枝のメッセーが格納されたとき、バリアブルノード計算器103に制御信号D107を供給する。   The reception memory 104 stores LDPC-encoded reception data (LDPC code). The control unit 105 supplies a control signal D106 for controlling the variable node calculation and a control signal D107 for controlling the check node calculation to the check node calculator 101 and the variable node calculator 103, respectively. The control unit 105 supplies the control signal D106 to the check node calculator 101 when all branch messages are stored in the branch memory 100, and when all branch messages are stored in the branch memory 102, A control signal D107 is supplied to the variable node calculator 103.

図10は、チェックノード演算を1つずつ行う図9のチェックノード計算器101の構成例を示している。   FIG. 10 shows a configuration example of the check node calculator 101 of FIG. 9 that performs check node operations one by one.

なお、図10では、各メッセージが符号ビットを合わせて合計6ビット(bit)に量子化されているものとして、チェックノード計算器101を表している。また、図10では、図8の検査行列で表わされるLDPC符号のチェックノード演算が行われる。さらに、図10のチェックノード演算器101には、クロックckが供給され、このクロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。   In FIG. 10, the check node calculator 101 is represented on the assumption that each message is quantized to a total of 6 bits including code bits. Further, in FIG. 10, a check node calculation of the LDPC code represented by the parity check matrix of FIG. 8 is performed. Further, a clock ck is supplied to the check node computing unit 101 in FIG. 10, and this clock ck is supplied to a necessary block. Each block performs processing in synchronization with the clock ck.

図10のチェックノード計算器101は、制御部105から供給される、例えば、1ビットの制御信号D106に基づき、枝用メモリ100から1つずつ読み込まれるメッセージD101を用いて、式(7)にしたがって演算を行う。   The check node calculator 101 in FIG. 10 is supplied from the control unit 105, for example, based on the 1-bit control signal D106, and using the message D101 read one by one from the branch memory 100, Equation (7) Therefore, calculation is performed.

即ち、チェックノード計算器101では、検査行列の各列に対応するバリアブルノードからの6ビットのメッセージD101(メッセージvi)が1つずつ読み込まれ、その下位ビットである絶対値D122(|vi|)がLUT121に、その最上位ビットである符号ビットD121がEXOR回路129とFIFO(First In First Out)メモリ133にそれぞれ供給される。また、チェックノード計算器101には、制御部105から制御信号D106が供給され、その制御信号D106は、セレクタ124とセレクタ131に供給される。 That is, the check node calculator 101 reads one 6-bit message D101 (message v i ) from the variable node corresponding to each column of the parity check matrix one by one, and the absolute value D122 (| v i ) as its lower bits. |) Is supplied to the LUT 121, and the sign bit D121 which is the most significant bit is supplied to the EXOR circuit 129 and the FIFO (First In First Out) memory 133, respectively. The check node calculator 101 is supplied with a control signal D106 from the control unit 105, and the control signal D106 is supplied to the selector 124 and the selector 131.

LUT121は、絶対値D122(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D123(φ(|vi|))を読み出し、加算器122とFIFOメモリ127に供給する。 The LUT 121 reads the 5-bit operation result D123 (φ (| v i |)) obtained by performing the operation of φ (| v i |) in the equation (7) with respect to the absolute value D122 (| v i |). The adder 122 and the FIFO memory 127 are supplied.

加算器122は、演算結果D123(φ(|vi|))とレジスタ123に格納されている9ビットの値D124とを加算することにより、演算結果D123を積算し、その結果得られる9ビットの積算値をレジスタ123に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD101の絶対値D122(|vi|)に対する演算結果が積算された場合、レジスタ123はリセットされる。 The adder 122 adds the operation result D123 (φ (| v i |)) and the 9-bit value D124 stored in the register 123, thereby accumulating the operation result D123, and 9 bits obtained as a result. Is stored again in the register 123. Note that the register 123 is reset when the calculation results for the absolute value D122 (| v i |) of the message D101 from all branches over one row of the check matrix are accumulated.

検査行列の1行に亘るメッセージD101が1つずつ読み込まれ、レジスタ123に1行分の演算結果D123が積算された積算値が格納された場合、制御部105から供給される制御信号D106は、0から1に変化する。例えば、行の重み(row weight)が「9」である場合、制御信号D106は、1から8クロック目までは、「0」となり、9クロック目では「1」となる。   When the message D101 over one row of the check matrix is read one by one and the accumulated value obtained by integrating the operation result D123 for one row is stored in the register 123, the control signal D106 supplied from the control unit 105 is: It changes from 0 to 1. For example, when the row weight is “9”, the control signal D106 is “0” from the first to the eighth clock, and “1” at the ninth clock.

制御信号D106が「1」の場合、セレクタ124は、レジスタ123に格納されている値、即ち、検査行列の1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)が積算された9ビットの値D124(i=1からi=dcまでのΣφ(|vi|))を選択し、値D125として、レジスタ125に出力して格納させる。レジスタ125は、格納している値D125を、9ビットの値D126として、セレクタ124と加算器126に供給する。制御信号D106が「0」の場合、セレクタ124は、レジスタ125から供給された値D126を選択し、レジスタ125に出力して再格納させる。即ち、検査行列の1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ125は、前回積算されたφ(|vi|)を、セレクタ124と加算器126に供給する。 When the control signal D106 is "1", selector 124 selects the value stored in the register 123, i.e., phi obtained from the messages D101 from all of the branches across one line of the parity check matrix (message v i) ( | v i |) 9-bit value that is accumulated D124 (Sigma] [phi of i = 1 through i = d c (| v i |) select), as a value D125, and stores and outputs to the register 125. The register 125 supplies the stored value D125 to the selector 124 and the adder 126 as a 9-bit value D126. When the control signal D106 is “0”, the selector 124 selects the value D126 supplied from the register 125, outputs it to the register 125, and stores it again. That is, until φ (| v i |) obtained from the message D101 (message v i ) from all branches over one row of the check matrix is accumulated, the register 125 accumulates φ (| v i |) is supplied to the selector 124 and the adder 126.

一方、FIFOメモリ127は、レジスタ125から新たな値D126(i=1からi=dcまでのΣφ(|vi|))が出力されるまでの間、LUT121が出力した演算結果D123(φ(|vi|))を遅延し、5ビットの値D127として減算器126に供給する。減算器126は、レジスタ125から供給された値D126から、FIFOメモリ127から供給された値D127を減算し、その減算結果を、5ビットの減算値D128としてLUT128に供給する。即ち、減算器126は、検査行列の1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)の積算値から、求めたい枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc−1までのΣφ(|vi|))を減算値D128としてLUT128に供給する。 On the other hand, FIFO memories 127, (from i = 1 i = Σφ to d c (| v i |) ) a new value D126 from the register 125 until it is output, the result calculation LUT121 has output D123 (phi (| v i |)) is delayed and supplied to the subtractor 126 as a 5-bit value D127. The subtractor 126 subtracts the value D127 supplied from the FIFO memory 127 from the value D126 supplied from the register 125, and supplies the subtraction result to the LUT 128 as a 5-bit subtraction value D128. In other words, the subtractor 126 determines the message D101 () from the branch to be obtained from the integrated value of φ (| v i |) obtained from the message D101 (message v i ) from all the branches over one row of the check matrix. Φ (| v i |) obtained from the message v i ) is subtracted, and the subtraction value (Σφ (| v i |) from i = 1 to i = d c −1) is used as the subtraction value D128. To supply.

LUT128は、減算値D128(i=1からi=dc−1までのΣφ(|vi|))に対して、式(7)におけるφ-1(Σφ(|vi|))の演算を行った5ビットの演算結果D129(φ-1(Σφ(|vi|)))を出力する。 The LUT 128 calculates φ −1 (Σφ (| v i |)) in Expression (7) with respect to the subtraction value D128 (Σφ (| v i |) from i = 1 to i = d c −1). A 5-bit calculation result D129 (φ −1 (Σφ (| v i |))) is output.

以上の処理と並行して、EXOR回路129は、レジスタ130に格納されている1ビットの値D131と符号ビットD121との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D130をレジスタ130に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された場合、レジスタ130はリセットされる。   In parallel with the above processing, the EXOR circuit 129 multiplies the sign bits by calculating an exclusive OR of the 1-bit value D131 stored in the register 130 and the sign bit D121. The bit multiplication result D130 is stored again in the register 130. When the sign bit D121 of the message D101 from all branches over one row of the check matrix is multiplied, the register 130 is reset.

検査行列の1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納された場合、制御部105から供給される制御信号D106は、「0」から「1」に変化する。 If (Paisign from i = 1 to d c (v i)) multiplication result D130 to the sign bit D121 is multiplied by the message D101 from all of the branches across one line of the parity check matrix stored in the register 130, the control The control signal D106 supplied from the unit 105 changes from “0” to “1”.

制御信号D106が「1」の場合、セレクタ131は、レジスタ130に格納されている値、即ち、検査行列の1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された値D131(i=1からi=dcまでのΠsign(vi))を選択し、1ビットの値D132としてレジスタ132に出力して格納させる。レジスタ132は、格納している値D132を、1ビットの値D133としてセレクタ131とEXOR回路134に供給する。制御信号D106が「0」の場合、セレクタ131は、レジスタ132から供給された値D133を選択し、レジスタ132に出力して再格納させる。即ち、検査行列の1行に亘る全ての枝からのメッセージD101(メッセージvi)の符号ビットD121が乗算されるまで、レジスタ132は、前回格納した値を、セレクタ131とEXOR回路134に供給する。 When the control signal D106 is “1”, the selector 131 is the value stored in the register 130, that is, the value D131 (multiplied by the sign bit D121 of the message D101 from all the branches over one row of the check matrix). select i = from 1 to i = d c Πsign (v i )), and stores and outputs a 1-bit value D132 to the register 132. The register 132 supplies the stored value D132 to the selector 131 and the EXOR circuit 134 as a 1-bit value D133. When the control signal D106 is “0”, the selector 131 selects the value D133 supplied from the register 132, outputs it to the register 132, and stores it again. In other words, the register 132 supplies the previously stored value to the selector 131 and the EXOR circuit 134 until the sign bit D121 of the message D101 (message v i ) from all branches over one row of the check matrix is multiplied. .

一方、FIFOメモリ133は、レジスタ132から新たな値D133(i=1からi=dcまでのΠsign(vi))がEXOR回路134に供給されるまでの間、符号ビットD121を遅延し、1ビットの値D134としてEXOR回路134に供給する。EXOR回路134は、レジスタ132から供給された値D133と、FIFOメモリ133から供給された値D134との排他的論理和を演算することにより、値D133を、値D134で除算し、1ビットの除算結果を除算値D135として出力する。即ち、EXOR回路134は、検査行列の1行に亘る全ての枝からのメッセージD101の符号ビットD121(sign(|vi|))の乗算値を、求めたい枝からのメッセージD101の符号ビットD121(sign(|vi|))で除算して、その除算値(i=1からi=dc−1までのΠsign(|vi|))を除算値D135として出力する。 On the other hand, FIFO memories 133, between (from i = 1 i = Πsign to d c (v i)) a new value D133 from the register 132 until is supplied to the EXOR circuit 134 delays the sign bit D121, The 1-bit value D134 is supplied to the EXOR circuit 134. The EXOR circuit 134 calculates the exclusive OR of the value D133 supplied from the register 132 and the value D134 supplied from the FIFO memory 133, thereby dividing the value D133 by the value D134 and dividing by 1 bit. The result is output as the division value D135. That is, the EXOR circuit 134 uses the sign bit D121 of the message D101 from the branch to be obtained as the multiplication value of the sign bit D121 (sign (| v i |)) of the message D101 from all branches over one row of the check matrix. Divide by (sign (| v i |)) and output the divided value (Πsign (| v i |) from i = 1 to i = d c −1) as a divided value D135.

チェックノード計算器101では、LUT128から出力された5ビットの演算結果D129を下位5ビットとするとともに、EXOR回路134から出力された1ビットの除算値D135を最上位ビットとする合計6ビットがメッセージD102(メッセージuj)として出力される。 In the check node calculator 101, the 5-bit operation result D129 output from the LUT 128 is set to the lower 5 bits, and the total 6 bits including the 1-bit division value D135 output from the EXOR circuit 134 as the most significant bit is a message. D102 (message u j ) is output.

以上のように、チェックノード計算器101では、式(7)の演算が行われ、メッセージujが求められる。 As described above, the check node calculator 101 performs the calculation of Expression (7) to obtain the message u j .

なお、図8の検査行列の行の重みの最大は9であるため、即ち、チェックノードに供給されるメッセージの最大数は9であるため、チェックノード計算器101は、9個のメッセージ(φ(|vi|))を遅延させるFIFOメモリ127とFIFOメモリ133を有している。行の重みが9未満の行のメッセージを計算するときには、FIFOメモリ127とFIFOメモリ133における遅延量が、その行の重みの値に減らされる。 Note that since the maximum row weight of the parity check matrix in FIG. 8 is 9, that is, the maximum number of messages supplied to the check node is 9, the check node calculator 101 has nine messages (φ FIFO memory 127 and FIFO memory 133 for delaying (| v i |)). When calculating a message for a row with a row weight less than 9, the amount of delay in the FIFO memory 127 and the FIFO memory 133 is reduced to the value of the row weight.

図11は、バリアブルノード演算を1つずつ行う図9のバリアブルノード計算器103の構成例を示している。   FIG. 11 shows a configuration example of the variable node calculator 103 of FIG. 9 that performs variable node operations one by one.

なお、図11では、各メッセージが符号ビットを合わせて合計6ビット(bit)に量子化されているものとして、バリアブルノード計算器103を表している。また、図11では、図8の検査行列で表わされるLDPC符号のバリアブルノード演算が行われる。さらに、図11のバリアブルノード計算機103には、クロックckが供給され、クロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。   In FIG. 11, the variable node calculator 103 is represented on the assumption that each message is quantized to a total of 6 bits including code bits. Further, in FIG. 11, a variable node calculation of the LDPC code represented by the parity check matrix of FIG. 8 is performed. Further, the variable node computer 103 of FIG. 11 is supplied with a clock ck, and the clock ck is supplied to a necessary block. Each block performs processing in synchronization with the clock ck.

図11のバリアブルノード計算器103は、制御部105から供給される、例えば、1ビットの制御信号D107に基づき、枝用メモリ102から1つずつ読み込まれるメッセージD103と、受信用メモリ104から読み込まれる受信データD104を用いて、式(1)にしたがって演算を行う。   The variable node calculator 103 shown in FIG. 11 is supplied from the control unit 105, for example, based on a 1-bit control signal D107, and is read from the branch memory 102 one by one and the reception memory 104. Using received data D104, calculation is performed according to equation (1).

即ち、バリアブルノード計算器103では、検査行列の各行に対応するチェックノードからの6ビットのメッセージD103(メッセージuj)が1つずつ読み込まれ、そのメッセージD103が、加算器151とFIFOメモリ155に供給される。また、バリアブルノード計算器103では、受信用メモリ104から6ビットの受信データD104が1つずつ読み込まれ、加算器156に供給される。さらに、バリアブルノード計算器103には、制御部105から制御信号D107が供給され、その制御信号D107は、セレクタ153に供給される。 That is, the variable node calculator 103 reads 6-bit messages D103 (message u j ) from the check node corresponding to each row of the check matrix one by one, and the message D103 is read into the adder 151 and the FIFO memory 155. Supplied. Further, the variable node calculator 103 reads 6-bit reception data D104 one by one from the reception memory 104 and supplies it to the adder 156. Further, the control signal D107 is supplied from the control unit 105 to the variable node calculator 103, and the control signal D107 is supplied to the selector 153.

加算器151は、メッセージD103(メッセージuj)とレジスタ152に格納されている9ビットの値D151とを加算することにより、メッセージD103を積算し、その結果得られる9ビットの積算値を、レジスタ152に再格納する。なお、検査行列の1列に亘る全ての枝からのメッセージD103が積算された場合、レジスタ152はリセットされる。 The adder 151 adds the message D103 (message u j ) and the 9-bit value D151 stored in the register 152 to accumulate the message D103, and the resulting 9-bit accumulated value is stored in the register. Store again in 152. Note that when the messages D103 from all branches over one column of the check matrix are accumulated, the register 152 is reset.

検査行列の1列に亘るメッセージD103が1つずつ読み込まれ、レジスタ152に1列分のメッセージD103が積算された値が格納された場合、制御部105から供給される制御信号D107は、「0」から「1」に変化する。例えば、列の重みが「5」である場合、制御信号D107は、1から4クロック目までは「0」となり、5クロック目では「1」となる。   When the message D103 over one column of the check matrix is read one by one and the value obtained by integrating the message D103 for one column is stored in the register 152, the control signal D107 supplied from the control unit 105 is “0”. To "1". For example, when the column weight is “5”, the control signal D107 is “0” from the first to the fourth clock, and “1” at the fifth clock.

制御信号D107が「1」の場合、セレクタ153は、レジスタ152に格納されている値、即ち、検査行列の1列に亘る全ての枝からのメッセージD103(メッセージuj)が積算された9ビットの値D151(j=1からdVまでのΣuj)を選択し、レジスタ154に出力して格納させる。レジスタ154は、格納している値D151を、9ビットの値D152として、セレクタ153と加減算器156に供給する。制御信号D107が「0」の場合、セレクタ153は、レジスタ154から供給された値D152を選択し、レジスタ154に出力し再格納させる。即ち、検査行列の1列に亘る全ての枝からのメッセージD103(メッセージuj)が積算されるまで、レジスタ154は、前回積算された値を、セレクタ153と加減算器156に供給する。 When the control signal D107 is “1”, the selector 153 has 9 bits obtained by integrating the values stored in the register 152, that is, the messages D103 (message u j ) from all branches over one column of the check matrix. select the value D151 (? uj j from j = 1 to d V), and stores and outputs to the register 154. The register 154 supplies the stored value D151 to the selector 153 and the adder / subtracter 156 as a 9-bit value D152. When the control signal D107 is “0”, the selector 153 selects the value D152 supplied from the register 154, outputs it to the register 154, and stores it again. That is, until the message D103 (message u j ) from all branches over one column of the check matrix is accumulated, the register 154 supplies the previously accumulated value to the selector 153 and the adder / subtractor 156.

一方、FIFOメモリ155は、レジスタ154から新たな値D152(j=1からdVまでのΣuj)が出力されるまでの間、チェックノードからのメッセージD103を遅延し、6ビットの値D153として加減算器156に供給する。加減算器156は、レジスタ154から供給された値D152から、FIFOメモリ155から供給された値D153を減算する。即ち、加減算器156は、検査行列の1列に亘る全ての枝からのメッセージD103(メッセージuj)の積算値から、求めたい枝からのメッセージujを減算して、その減算値(j=1からdv−1までのΣuj)を求める。さらに、加減算器156には、その減算値(j=1からdv−1までのΣuj)に、受信用メモリ104から供給された受信データD104を加算して、その結果得られる6ビットの値をメッセージD105(メッセージvi)として出力する。 On the other hand, FIFO memories 155, between (from j = 1? Uj j to d V) a new value D152 from the register 154 until the output delays the message D103 from check nodes, as a 6-bit value D153 This is supplied to the adder / subtracter 156. The adder / subtracter 156 subtracts the value D153 supplied from the FIFO memory 155 from the value D152 supplied from the register 154. That is, the adder / subtracter 156 subtracts the message u j from the branch to be obtained from the integrated value of the message D103 (message u j ) from all branches over one column of the check matrix, and the subtraction value (j = Find Σu j ) from 1 to d v −1. Further, the adder / subtracter 156 adds the reception data D104 supplied from the reception memory 104 to the subtraction value (Σu j from j = 1 to d v −1), and a 6-bit obtained as a result. The value is output as message D105 (message v i ).

以上のように、バリアブルノード計算器103では、式(1)の演算が行われ、メッセージviが求められる。 As described above, the variable node calculator 103 performs the calculation of Expression (1) to obtain the message v i .

なお、図8の検査行列の列の重みの最大は5であるため、即ち、バリアブルノードに供給されるメッセージの最大数は5であるため、バリアブルノード計算器103は、5個のメッセージ(uj)を遅延させるFIFOメモリ155を有している。列の重みが5未満の列のメッセージを計算するときには、FIFOメモリ155における遅延量が、その列の重みの値に減らされる。 Since the maximum column weight of the parity check matrix in FIG. 8 is 5, that is, the maximum number of messages supplied to the variable node is 5, the variable node calculator 103 uses five messages (u a FIFO memory 155 for delaying j ). When calculating a message for a column with a column weight less than 5, the amount of delay in the FIFO memory 155 is reduced to the value of the column weight.

図9の復号装置では、検査行列の重みにしたがって、制御部105から制御信号が与えられる。そして、図9の復号装置によれば、枝用メモリ100および102、並びにチェックノード計算器101およびバリアブルノード計算器103のFIFOメモリ127,133,155の容量さえ足りれば、制御信号のみを変えることで様々な検査行列のLDPC符号を復号することができる。   In the decoding apparatus in FIG. 9, a control signal is given from the control unit 105 according to the weight of the check matrix. Then, according to the decoding apparatus of FIG. 9, only the control signal is changed as long as the capacity of the FIFO memories 127, 133, and 155 of the branch memories 100 and 102 and the check node calculator 101 and the variable node calculator 103 is sufficient. Thus, LDPC codes of various check matrices can be decoded.

なお、図示しないが、図9の復号装置において、復号の最終段においては、式(1)のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が、最終的な復号結果として出力される。   Although not shown in the figure, in the decoding apparatus of FIG. 9, in the final stage of decoding, the calculation of Expression (5) is performed instead of the variable node calculation of Expression (1). Output as decryption result.

図9の復号装置を繰り返し用いて、LDPC符号を復号する場合には、チェックノード演算とバリアブルノード演算とが交互に行われる。即ち、図9の復号装置では、チェックノード計算器101によるチェックノード演算の結果を用いて、バリアブルノード計算器103によりバリアブルノード演算が行われ、バリアブルノード計算器103によるバリアブルノード演算の結果を用いて、チェックノード計算器101によりチェックノード演算が行われる。   When the LDPC code is decoded by repeatedly using the decoding device of FIG. 9, the check node calculation and the variable node calculation are alternately performed. That is, in the decoding apparatus of FIG. 9, the variable node calculation is performed by the variable node calculator 103 using the check node calculation result by the check node calculator 101, and the variable node calculation result by the variable node calculator 103 is used. Thus, the check node calculator 101 performs a check node calculation.

従って、269の枝を有する図8の検査行列を用いた1回の復号に、269×2=538クロック(clock)を必要とする。例えば、50回の繰り返し復号を行うためには、符号長である90個の符号(受信データ)を1フレームとして、その1フレームを受信する間に、538×50=26900クロック動作することが必要であり、受信周波数の約300(≒26900/90)倍の高速動作が必要になる。受信周波数が数十MHzであるとすると、GHz以上の速度での動作を要求されることになり実装は容易ではない。   Therefore, 269 × 2 = 538 clocks are required for one decoding using the parity check matrix of FIG. 8 having 269 branches. For example, in order to perform 50 times of iterative decoding, it is necessary that 90 codes (received data), which is the code length, be one frame, and that 538 × 50 = 26900 clock operation be performed during the reception of that one frame. Therefore, a high-speed operation of about 300 (≈26900 / 90) times the reception frequency is required. If the reception frequency is several tens of MHz, it is required to operate at a speed of GHz or higher, and implementation is not easy.

また、図9の復号装置を、例えば、50台連接して、LDPC符号を復号する場合には、1フレーム(frame)目のバリアブルノード演算を行っている間に、2フレーム目のチェックノード演算を行い、3フレーム目のバリアブルノード演算を行う、というように、複数のバリアブルノード演算とチェックノード演算とを同時に行うことができる。この場合、90個の符号を受信する間に、269個の枝を計算すればよいので、復号装置は、受信周波数の約3(≒269/90)倍の周波数で動作すればよいことになり、十分に実現可能である。しかしながら、この場合、回路規模が、単純には、図9の復号装置の50倍になる。   In addition, for example, when decoding the LDPC code by connecting 50 decoding apparatuses as shown in FIG. 9, the check node calculation of the second frame is performed while the variable node calculation of the first frame is performed. A plurality of variable node computations and check node computations can be performed simultaneously, such as performing variable node computations in the third frame. In this case, since 269 branches may be calculated while 90 codes are received, the decoding apparatus only needs to operate at a frequency about 3 (≈269 / 90) times the reception frequency. Is fully feasible. However, in this case, the circuit scale is simply 50 times that of the decoding apparatus of FIG.

次に、全ノードの演算を同時に行うことによって復号を行う場合(full parallel decoding)の復号装置の実装法について説明する。   Next, a description will be given of a method for implementing a decoding apparatus when decoding is performed by performing operations on all nodes simultaneously (full parallel decoding).

この実装法については、例えば、非特許文献1に記載されている。   This mounting method is described in Non-Patent Document 1, for example.

図12は、図8の検査行列で表現される符号(符号化率2/3、符号長90)を復号する復号装置の一例の構成を示している。   FIG. 12 illustrates a configuration of an example of a decoding device that decodes a code (coding rate 2/3, code length 90) represented by the parity check matrix in FIG.

図12の復号装置では、枝用メモリ202または206から、269個ある枝に対応するメッセージデータを全て同時に読み出し、そのメッセージデータを用いて、269個の枝に対応する新たなメッセージデータを演算する。さらに、その演算の結果求められた新たなメッセージデータが全て同時に後段の枝用メモリ206または202に格納されていく。そして、図12の復号装置を繰り返し用いることで繰り返し復号が実現される。   In the decoding device of FIG. 12, all message data corresponding to 269 branches are simultaneously read from the branch memory 202 or 206, and new message data corresponding to 269 branches are calculated using the message data. . Further, all new message data obtained as a result of the calculation are simultaneously stored in the subsequent branch memory 206 or 202. Then, iterative decoding is realized by repeatedly using the decoding device of FIG.

図12において、復号装置は、1つの受信用メモリ205、2つの枝入れ替え装置200および203、2つの枝用メモリ202および206、30個のチェックノード計算器2011乃至20130、90個のバリアブルノード計算器2041乃至20490からなる。以下、各部について詳細に説明する。 In FIG. 12, the decoding device includes one reception memory 205, two branch switching devices 200 and 203, two branch memories 202 and 206, thirty check node calculators 201 1 to 201 30 , and 90 variable variables. The node calculators 204 1 to 204 90 are included . Hereinafter, each part will be described in detail.

枝用メモリ206は、前段のバリアブルノード計算器2041乃至20490からのメッセージD2061乃至D20690を全て同時に格納し、次の時刻(次のクロックのタイミング)に、メッセージD2061乃至D20690を、メッセージD2071乃至D20790として読み出し、次段の枝入れ替え装置200に、メッセージD200(D2001乃至D20090)として供給する。枝入れ替え装置200は、枝用メモリ206から供給されたメッセージD2001乃至D20090の順番を、図8の検査行列にしたがって並び替え(入れ替え)、チェックノード計算器2011乃至20130に、メッセージD2011乃至D20130として供給する。 Branch memory 206 stores all messages D206 1 to D206 90 from the preceding variable node calculator 204 1 to 204 90 At the same time, the next time (the timing of the next clock), a message D206 1 to D206 90 The messages D207 1 to D207 90 are read out and supplied as messages D200 (D200 1 to D200 90 ) to the branch switching apparatus 200 in the next stage. Branch swapping device 200, the order of the supplied message D200 1 to D200 90 from the branch memory 206, rearrangement according check matrix of FIG. 8 (replacement), the check node calculator 201 1 to 201 30, the message D201 Supply as 1 to D201 30 .

チェックノード計算器2011乃至20130は、枝入れ替え装置200から供給されるメッセージD2011乃至D20130を用いて式(7)にしたがって演算を行い、その演算の結果得られるメッセージD2021乃至D20230を、枝用メモリ202に供給する。 The check node calculators 201 1 to 201 30 perform computations according to the equation (7) using the messages D201 1 to D201 30 supplied from the branch switching apparatus 200, and messages D202 1 to D202 30 obtained as a result of the computations. Is supplied to the branch memory 202.

枝用メモリ202は、前段のチェックノード計算器2011乃至20130から供給されるメッセージD2021乃至D20230を全て同時に格納し、次の時刻に、そのすべてのメッセージD2021乃至D20230を、メッセージD2031乃至D20330として、次段の枝入れ替え装置203に供給する。 Branch memory 202, the message D202 1 to D202 30 supplied from the preceding check node calculator 201 1 to 201 30 store all simultaneously, the next time, all of its messages D202 1 to D202 30, the message As D203 1 to D203 30 , they are supplied to the branch replacement device 203 at the next stage.

枝入れ替え装置203は、枝用メモリ202から供給されたメッセージD2031乃至D20330の順番を図8の検査行列にしたがって並び替え、バリアブルノード計算器2041乃至20490に、メッセージD2041乃至D20490として供給する。 Branch swapping device 203 rearranges the order of the supplied message D203 1 to D203 30 from the branch memory 202 in accordance with the parity check matrix of FIG. 8, the variable node calculator 204 1 to 204 90, the message D 204 1 to D 204 90 Supply as.

バリアブルノード計算器2041乃至20490は、枝入れ替え装置203から供給されるメッセージD2041乃至D20490と、受信用メモリ205から供給される受信データD2051乃至D20590を用いて式(1)にしたがって演算を行い、その演算の結果得られるメッセージD2061乃至D20690を、次段の枝用メモリ206に供給する。 The variable node calculators 204 1 to 204 90 use the messages D204 1 to D204 90 supplied from the branch switching device 203 and the received data D205 1 to D205 90 supplied from the reception memory 205 to formula (1). Accordingly, an operation is performed, and messages D206 1 to D206 90 obtained as a result of the operation are supplied to the branch memory 206 at the next stage.

図13は、チェックノード演算を同時に行う図12のチェックノード計算器201m(m=1,2,・・・,30)の構成例を示している。 FIG. 13 shows a configuration example of the check node calculator 201 m (m = 1, 2,..., 30) of FIG.

図13のチェックノード計算器201mでは、図10のチェックノード計算器101と同様にして、式(7)のチェックノード演算が行われるが、そのチェックノード演算が、すべての枝について同時に行われる。 The check node calculator 201 m in FIG. 13 performs the check node calculation of Expression (7) in the same manner as the check node calculator 101 in FIG. 10, and the check node calculation is simultaneously performed for all branches. .

即ち、図13のチェックノード計算器201mでは、枝入れ替え装置200から供給される図8の検査行列の各列に対応するバリアブルノードからのメッセージD2211乃至D2219(vi)が全て同時に読み込まれ、それぞれの下位5ビットである絶対値D2221乃至D2229(|vi|)がLUT2211乃至2219にそれぞれ供給される。また、メッセージD2211乃至D2219(vi)の最上位ビットである1ビットの符号ビットD2231乃至D2239が、EXOR回路2261乃至2269にそれぞれ供給されるとともに、EXOR回路225に供給される。 That is, the check node calculator 201 m in FIG. 13 simultaneously reads all the messages D221 1 to D221 9 (v i ) from the variable nodes corresponding to the columns of the parity check matrix in FIG. They are, respectively, the lower 5 bits in which the absolute value D222 1 to D222 9 (| v i |) is supplied to LUT221 1 to 221 9. Further, 1-bit sign bits D223 1 to D223 9 which are the most significant bits of the messages D221 1 to D221 9 (v i ) are supplied to the EXOR circuits 226 1 to 226 9 and supplied to the EXOR circuit 225, respectively. The

LUT2211乃至2219は、絶対値D2221乃至D2229(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D2241乃至D2249(φ(|vi|))をそれぞれ読み出し、それぞれを減算器2231乃至2239に供給する。また、LUT2211乃至2219は、演算結果D2241乃至D2249(φ(|vi|))を加算器222に供給する。 LUT221 1 to 221 9, the absolute value D222 1 to D222 9 (| v i |) with respect to, phi in the formula (7) (| v i | ) 5 -bit operation result of the operation of D224 1 to D224 9 (φ (| v i |)) is read out and supplied to the subtracters 223 1 to 223 9 respectively. The LUTs 221 1 to 221 9 supply the operation results D224 1 to D224 9 (φ (| v i |)) to the adder 222.

加算器222は、演算結果D2241乃至D2249(φ(|vi|))の値の総和(1行分の演算結果の総和)を演算し、9ビットの演算結果D225(i=1から9のΣφ(|vi|))を、減算器2231乃至2239に供給する。減算器2231乃至2239は、演算結果D225から、演算結果D2241乃至D2249(φ(|vi|))をそれぞれ減算し、5ビットの減算値D2271乃至D2279を、LUT2241乃至2249に供給する。即ち、減算器2231乃至2239は、全ての枝からのメッセージviから求められたφ(|vi|)の積算値から、求めたい枝からのメッセージviから求められたφ(|vi|)を減算して、その減算値D2271乃至D2279(i=1から8までのΣφ(|vi|))をLUT2241乃至2249にそれぞれ供給する。LUT2241乃至2249は、減算値D2271乃至D2279に対して、式(7)におけるφ-1(Σφ(|vi|))の演算を行った5ビットの演算結果D2281乃至D2289を読み出して出力する。 The adder 222 calculates the sum of the values of the calculation results D224 1 to D224 9 (φ (| v i |)) (sum of the calculation results for one row), and calculates the 9-bit calculation result D225 (from i = 1). 9 Σφ (| v i |)) is supplied to the subtracters 223 1 to 223 9 . The subtracters 223 1 to 223 9 subtract the calculation results D224 1 to D224 9 (φ (| v i |)) from the calculation result D225, respectively, and subtract the 5-bit subtraction values D227 1 to D227 9 to the LUTs 224 1 to 224 9 That is, the subtracters 223 1 to 223 9 obtain φ (|) obtained from the message v i from the branch to be obtained from the integrated value of φ (| v i |) obtained from the message v i from all the branches. v i |) is subtracted and the subtraction values D227 1 to D227 9 (Σφ (| v i |) from i = 1 to 8) are supplied to the LUTs 224 1 to 224 9 , respectively. The LUTs 224 1 to 224 9 perform 5-bit calculation results D228 1 to D228 9 obtained by performing the calculation of φ −1 (Σφ (| v i |)) in Expression (7) for the subtraction values D227 1 to D227 9 . Is read and output.

一方、EXOR回路225は、全ての符号ビットD2231乃至D2239の排他的論理和を演算することにより、符号ビットD2231乃至D2239の乗算を行い、1ビットの乗算値D226(1行分の符号ビットの乗算値(i=1から9までのΠsign(vi)))をEXOR回路2261乃至2269にそれぞれ供給する。EXOR回路2261乃至2269は、乗算値D226と符号ビットD2231乃至D2239それぞれとの排他的論理を演算することにより、乗算値D226を、符号ビットD2231乃至D2239それぞれで除算した1ビットの除算値D2291乃至D2299(i=1から8までのΠsign(vi))を求めて出力する。 On the other hand, EXOR circuit 225, by calculating all the exclusive OR of the sign bit D223 1 to D223 9, multiplies the sign bits D223 1 to D223 9, 1 bit multiplier D226 (for one row The multiplication value of the sign bit (i sign (v i ) from 1 to 9) is supplied to the EXOR circuits 226 1 to 226 9 , respectively. EXOR circuit 226 1 through 226 9, by calculating an exclusive OR of the multiplication value D226 and the sign bit D223 1 to D223 9 respectively, 1-bit multiplication value D226, divided by the sign bit D223 1 to D223 9 respectively The division values D229 1 to D229 9 (Πsign (v i ) from i = 1 to 8) are obtained and output.

チェックノード計算器201mでは、LUT2241乃至2249から出力された5ビットの演算結果D2281乃至D2289それぞれを下位5ビットとするとともに、EXOR回路2261乃至2269から出力された除算値D2291乃至D2299それぞれを最上位ビットとする合計6ビットが、チェックノード演算の結果得られるメッセージD2301乃至D2309として出力される。 In the check node calculator 201 m , the 5-bit calculation results D228 1 to D228 9 output from the LUTs 224 1 to 224 9 are set to the lower 5 bits, and the division value D229 output from the EXOR circuits 226 1 to 226 9 is used. 1 to D229 9 total 6 bits of the most significant bit, respectively, are outputted as a message D230 1 to D230 9 obtained as a result of the check node operation.

以上のように、チェックノード計算器201mでは、式(7)の演算が行われ、メッセージujが求められる。 As described above, in the check node calculator 201 m , the calculation of Expression (7) is performed and the message u j is obtained.

なお、図13では、各メッセージが符号ビットを合わせて合計6ビットに量子化されているものとして、チェックノード計算器201mを表している。また、図13の回路は1つのチェックノードに相当する。ここで処理の対象としている図8の検査行列については、その行数である30行のチェックノードが存在するため、図12の復号装置は、図13に示したようなチェックノード計算器201mを30個有している。 In FIG. 13, the check node calculator 201 m is represented on the assumption that each message is quantized to a total of 6 bits including the sign bit. The circuit in FIG. 13 corresponds to one check node. Since the check matrix of FIG. 8 to be processed here has 30 check nodes, which is the number of rows, the decoding device of FIG. 12 uses the check node calculator 201 m as shown in FIG. 30 are included.

ここで、図13のチェックノード計算器201mでは、9個のメッセージを同時に計算することができる。そして、ここで処理の対象としている図8の検査行列の行の重みは、第1行が8で、第2乃至第30行が9であるため、即ち、チェックノードに供給されるメッセージの数が、8のケースが1つと、9のケースが29あるため、チェックノード計算器2011は、図13の回路と同様の8つのメッセージを同時に計算することができる回路構成となっており、残りのチェックノード計算器2012乃至20130は、図13の回路と同一構成となっている。 Here, the check node calculator 201 m in FIG. 13 can simultaneously calculate nine messages. The weights of the check matrix in FIG. 8 to be processed here are 8 for the first row and 9 for the second to 30th rows, that is, the number of messages supplied to the check node. but one of 8 cases, for 9 cases 29, the check node calculator 201 1 has a circuit configuration that can calculate the same eight messages and the circuit of Figure 13 at the same time, the remaining The check node calculators 201 2 to 20 30 have the same configuration as the circuit of FIG.

図14は、バリアブルノード演算を同時に行う図12のバリアブルノード計算器204p(p=1,2,・・・,90)の構成例を示している。 FIG. 14 shows a configuration example of the variable node calculator 204 p (p = 1, 2,..., 90) of FIG.

図14のバリアブルノード計算器204pでは、図11のバリアブルノード計算器103と同様にして、式(1)のバリアブルノード演算が行われるが、そのバリアブルノード演算が、すべての枝について同時に行われる。 In the variable node calculator 204 p in FIG. 14, the variable node calculation of Expression (1) is performed in the same manner as the variable node calculator 103 in FIG. 11, but the variable node calculation is simultaneously performed for all branches. .

即ち、図14のバリアブルノード計算器204pでは、枝入れ替え装置203から供給される、検査行列の各行に対応するチェックノードからの6ビットのメッセージD2511乃至D2515(メッセージuj)が全て同時に読み込まれ、それぞれ加算器2521乃至2525に供給されるとともに、加算器251に供給される。また、バリアブルノード計算器204pには、受信用メモリ205から受信データD271が供給され、その受信データD271は、加減算器2521乃至2525に供給される。 That is, in the variable node calculator 204 p of FIG. 14, all of the 6-bit messages D251 1 to D251 5 (message u j ) supplied from the branch replacement device 203 from the check nodes corresponding to each row of the check matrix are simultaneously transmitted. It is read and supplied to the adders 252 1 to 252 5 and supplied to the adder 251. Further, the variable node calculator 204 p, the reception data D271 supplied from the receiving memory 205, the received data D271 are supplied to the subtracter 252 1 to 252 5.

加算器251は、全てのメッセージD2511乃至D2515(メッセージuj)を積算し、9ビットの積算値D252(1列分のメッセージの総和値(j=1から5までのΣuj))を加減算器2521乃至2525に供給する。加減算器2521乃至2525は、加算値D252から、メッセージD2511乃至D2515(メッセージuj)をそれぞれ減算する。即ち、加減算器2521乃至2525は、全ての枝からのメッセージujの積算値D252から、求めたい枝からのメッセージD2511乃至D2515(メッセージuj)をそれぞれ減算して、その減算値(j=1から4までのΣuj)を求める。 The adder 251 accumulates all the messages D251 1 to D251 5 (message u j ), and adds a 9-bit accumulated value D252 (total value of messages for one column (Σu j from j = 1 to 5)). This is supplied to the adders / subtracters 252 1 to 252 5 . The adders / subtracters 252 1 to 252 5 subtract the messages D251 1 to D251 5 (message u j ) from the added value D252. That is, the adder / subtracters 252 1 to 252 5 subtract the messages D251 1 to D251 5 (message u j ) from the branches to be obtained from the integrated values D252 of the messages u j from all the branches, respectively. (Σu j from j = 1 to 4) is obtained.

さらに、加減算器2521乃至2525は、減算値(j=1から4までのΣuj)に、受信データD271(u0i)を加算して、6ビットの加算値D2531乃至D2535を、バリアブルノード演算の結果として出力する。 Further, the adder / subtracters 252 1 to 252 5 add the reception data D271 (u 0i ) to the subtraction value (Σu j from j = 1 to 4), and add 6-bit addition values D253 1 to D253 5 , Output as a result of variable node operation.

以上のように、バリアブルノード計算器204pでは、式(1)の演算が行われ、メッセージviが求められる。 As described above, the variable node calculator 204 p performs the calculation of Expression (1) to obtain the message v i .

なお、図14では、各メッセージが符号ビットを合わせて合計6ビットに量子化されているものとして、バリアブルノード計算器204pを表している。また、図14の回路は1つのバリアブルノードに相当する。ここで処理の対象としている図8の検査行列については、その列数である90列のバリアブルノードが存在するから、図12の復号装置は、図14に示したような回路を90個有している。 In FIG. 14, the variable node calculator 204 p is represented on the assumption that each message is quantized to a total of 6 bits including the sign bits. The circuit in FIG. 14 corresponds to one variable node. Since the parity check matrix in FIG. 8 to be processed here has 90 variable nodes, which is the number of columns, the decoding device in FIG. 12 has 90 circuits as shown in FIG. ing.

ここで、図14のバリアブルノード計算器204pでは、5個のメッセージを同時に計算することができる。そして、ここで処理の対象としている図8の検査行列は、重みが5,3,2,1の列が、それぞれ、15列、45列、29列、1列あるので、バリアブルノード計算器2041乃至20490のうちの15個は、図14の回路と同一構成となっており、残りの45個、29個、1個は、図14の回路と同様の3,2,1つのメッセージをそれぞれ同時に計算することができる回路構成となっている。 Here, the variable node calculator 204 p in FIG. 14 can simultaneously calculate five messages. 8 has 15 columns, 45 columns, 29 columns, and 1 column, respectively, so that the variable node calculator 204 has the columns of weights 5, 3, 2, and 1, respectively. the 15 of 1 to 204 90, and a circuit having the same configuration of Figure 14, the remaining 45, 29, one is the same 3,2,1 single message and the circuit of Figure 14 Each circuit configuration can be calculated simultaneously.

なお、図示しないが、図12の復号装置においても、図9における場合と同様に、復号の最終段においては、式(1)のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が最終的な復号結果として出力される。   Although not shown, in the decoding apparatus of FIG. 12 as well, in the final stage of decoding, the calculation of Expression (5) is performed instead of the variable node calculation of Expression (1). The calculation result is output as the final decoding result.

図12の復号装置によれば、269個ある枝に対応するメッセージすべてを1クロックで同時に計算することができる。   According to the decoding apparatus of FIG. 12, all the messages corresponding to 269 branches can be calculated simultaneously in one clock.

図12の復号装置を繰り返し用いて復号する場合には、チェックノード演算とバリアブルノード演算とを交互に行い、1回の復号を2クロックで行うことができる。従って、例えば、50回の復号を行うためには、符号長が90個の符号を1フレームとする受信データを受信する間に2×50=100クロック動作すれば良いことになり、ほぼ受信周波数と同一の動作周波数でよいことになる。一般的に、LDPC符号は、符号長が数千から数万と大きいことから、図12の復号装置を用いれば、復号回数を極めて多くすることができ、誤り訂正性能の向上を期待することができる。   When the decoding apparatus of FIG. 12 is repeatedly used for decoding, check node calculation and variable node calculation can be alternately performed, and one decoding can be performed in two clocks. Therefore, for example, in order to perform decoding 50 times, it is only necessary to operate 2 × 50 = 100 clocks during reception of reception data having a code length of 90 codes as one frame, and the reception frequency is almost the same. The same operating frequency is sufficient. In general, an LDPC code has a code length as large as several thousand to several tens of thousands. Therefore, if the decoding apparatus shown in FIG. 12 is used, the number of times of decoding can be extremely increased, and an improvement in error correction performance can be expected. it can.

しかしながら、図12の復号装置は、タナーグラフのすべての枝に対応するメッセージの演算を、並列で行うため、回路規模が、符号長に比例して大きくなる。また、図12の復号装置を、ある符号長の、ある符号化率の、ある検査行列を持つLDPC符号の復号を行う装置として構成した場合、その復号装置において、他の符号長や、他の符号化率、他の検査行列を持つLDPC符号の復号を行うことは困難となる。即ち、図12の復号装置は、図9の復号装置のように、制御信号を変えるだけでは、様々な符号を復号することに対処することが困難であり、符号依存性が高い。   However, since the decoding apparatus of FIG. 12 performs message operations corresponding to all branches of the Tanner graph in parallel, the circuit scale increases in proportion to the code length. In addition, when the decoding apparatus of FIG. 12 is configured as an apparatus that decodes an LDPC code having a certain check length and having a certain coding rate, in the decoding apparatus, other code lengths, It becomes difficult to decode an LDPC code having a coding rate and another check matrix. That is, like the decoding device of FIG. 9, the decoding device of FIG. 12 is difficult to cope with decoding various codes only by changing the control signal, and has high code dependency.

また、サムプロダクトアルゴリズムを近似して実装する方法なども提案されているが、この方法では、性能の劣化を招いてしまう。
C. Howland and A. Blanksby, "Parallel Decoding Architectures for Low Density Parity Check Codes", Symposium on Circuits and Systems, 2001
Also, a method of approximating and implementing the sum product algorithm has been proposed, but this method causes performance degradation.
C. Howland and A. Blanksby, "Parallel Decoding Architectures for Low Density Parity Check Codes", Symposium on Circuits and Systems, 2001

上述したように、図9の復号装置を繰り返し用いて、LDPC符号の復号を行う場合、1フレームに対するチェックノード演算とバリアブルノード演算とは交互に行われる。即ち、図9の復号装置では、チェックノード計算器101とバリアブルノード計算器103のうちの一方の演算が終了し、その演算結果が枝用メモリ102または100に格納されるまで、チェックノード計算器101とバリアブルノード計算器103のうちの他方は、待機する必要があった。   As described above, when the LDPC code is decoded by repeatedly using the decoding apparatus of FIG. 9, the check node calculation and the variable node calculation for one frame are alternately performed. That is, in the decoding apparatus of FIG. 9, the check node calculator 101 is operated until one operation of the check node calculator 101 and the variable node calculator 103 is completed and the operation result is stored in the branch memory 102 or 100. The other of 101 and the variable node calculator 103 had to wait.

従って、図9の復号装置では、チェックノード計算器101とバリアブルノード計算器103のうちのどちらか一方が演算を行っている時間には、他方は演算を行わないことになり、必要なスループットを満たした上で、復号回数を増やすためには、復号装置を高速に動作させる必要があった。   Therefore, in the decoding device of FIG. 9, during the time when either one of the check node calculator 101 or the variable node calculator 103 is performing computation, the other is not performing computation, and the required throughput is reduced. In order to increase the number of times of decoding after satisfying this requirement, it was necessary to operate the decoding device at high speed.

しかしながら、復号装置を高速に動作させる場合、復号装置の動作周波数が高くなるため、消費電力が大となり、さらに、装置を構成する部分としても、高速動作に対応することができるものを用いる必要がある。一方、復号装置の動作周波数を抑えるために復号回数を抑えると、復号装置の復号性能を向上させることが困難であった。   However, when the decoding device is operated at high speed, the operating frequency of the decoding device increases, so that power consumption is large, and it is also necessary to use a component that can support high-speed operation as a part constituting the device. is there. On the other hand, if the number of times of decoding is suppressed to suppress the operating frequency of the decoding device, it is difficult to improve the decoding performance of the decoding device.

本発明は、このような状況に鑑みてなされたものであり、動作周波数および回路規模を抑えつつ、復号性能を向上させることができるようにするものである。   The present invention has been made in view of such circumstances, and is intended to improve decoding performance while suppressing the operating frequency and circuit scale.

本発明の復号装置は、LDPC符号を符号長であるフレーム単位で復号する復号装置であって、LDPC符号の第1のフレームと第2のフレームを交互に選択する選択手段と、第1のフレームと第2のフレームのうちの、選択手段により選択されていないフレームのLDPC符号の復号のためのチェックノードの演算を行うチェックノード計算手段と、第1のフレームと第2のフレームのうちの、選択手段により選択されたフレームのLDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算手段とを備えることを特徴とする。 The decoding apparatus according to the present invention is a decoding apparatus that decodes an LDPC code in units of frames having a code length, the selection means for alternately selecting a first frame and a second frame of an LDPC code, and a first frame And a check node calculation means for performing a check node operation for decoding an LDPC code of a frame not selected by the selection means, and a first frame and a second frame, Variable node calculation means for performing variable node calculation for decoding the LDPC code of the frame selected by the selection means.

第1のフレームと第2のフレームのLDPC符号を記憶するフレーム記憶手段と、フレーム記億手段に記憶された第1のフレームまたは第2のフレームのうちの、選択手段により選択されたフレームのLDPC符号をバリアブルノード計算手段に供給する供給手段とをさらに備えるようにすることができる。   Frame storage means for storing LDPC codes of the first frame and the second frame, and LDPC of the frame selected by the selection means among the first frame or the second frame stored in the frame storage means Supply means for supplying the code to the variable node calculation means can be further provided.

チェックノード計算手段により第1のフレームと第2のフレームのうちの一方のフレームのチェックノードの演算が行われるとき、バリアブルノード計算手段は、他方のフレームのバリアブルノードの演算を行うようにすることができる。   When the check node calculation unit calculates the check node of one of the first frame and the second frame, the variable node calculation unit calculates the variable node of the other frame. Can do.

チェックノードの演算、またはバリアブルノードの演算のうちの一方の演算に用いられる枝に対応するメッセージデータの読み出しと、他方の演算の結果得られる枝に対応するメッセージデータの書き込みとが同時に行われるメッセージ記憶手段をさらに備えるようにすることができる。   A message in which reading of message data corresponding to a branch used for one of a check node operation or a variable node operation and writing of message data corresponding to a branch obtained as a result of the other operation are performed simultaneously A storage means may be further provided.

メッセージ記憶手段は、デュアルポートRAM(Random Access Memory)であるようにすることができる。   The message storage means may be a dual port RAM (Random Access Memory).

第1のフレームと第2のフレームは、連続する2つのフレームであるようにすることができる。   The first frame and the second frame can be two consecutive frames.

本発明の復号方法は、LDPC符号を符号長であるフレーム単位で復号する復号装置の復号方法であって、LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップと、第1のフレームと第2のフレームのうちの、選択ステップの処理により選択されていないフレームのLDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップと、第1のフレームと第2のフレームのうちの、選択ステップの処理により選択されたフレームのLDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップとを含むことを特徴とする。 The decoding method of the present invention is a decoding method of a decoding apparatus that decodes an LDPC code in units of frames that are code lengths, and includes a selection step of alternately selecting a first frame and a second frame of an LDPC code, A check node calculation step for performing a check node operation for decoding an LDPC code of a frame that is not selected by the processing of the selection step among the first frame and the second frame, and the first frame and the second frame And a variable node calculation step of performing a variable node calculation for decoding an LDPC code of the frame selected by the processing of the selection step in the frame.

本発明のプログラムは、LDPC符号の符号長であるフレーム単位の復号をコンピュータに行わせるプログラムであって、LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップと、第1のフレームと第2のフレームのうちの、選択ステップの処理により選択されていないフレームのLDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップと、第1のフレームと第2のフレームのうちの、選択ステップの処理により選択されたフレームのLDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップとを備えることを特徴とする。 A program according to the present invention is a program for causing a computer to perform decoding in units of frames, which is the code length of an LDPC code, a selection step of alternately selecting a first frame and a second frame of an LDPC code, A check node calculation step for calculating a check node for decoding an LDPC code of a frame not selected by the selection step processing of the first frame and the second frame, and a first frame and a second frame And a variable node calculation step for performing a variable node calculation for decoding the LDPC code of the frame selected by the selection step processing.

本発明においては、それぞれ符号長である、LDPC符号の第1のフレームと第2のフレーム交互に選択される。そして、第1のフレームと第2のフレームのうちの、選択されていないフレームのLDPC符号の復号のためのチェックノードの演算が行われ、第1のフレームと第2のフレームのうちの、選択されたフレームのLDPC符号の復号のためのバリアブルノードの演算が行われる。 In the present invention, the first frame and the second frame of the LDPC code, each having a code length, are alternately selected. Then, a check node operation for decoding an LDPC code of an unselected frame of the first frame and the second frame is performed, and a selection is made between the first frame and the second frame. A variable node is calculated for decoding the LDPC code of the received frame.

本発明によれば、2つのフレームのLDPC符号の復号処理を行なうことができるので、LDPC符号の復号を効率よく行うようにすることができ、また、復号性能を向上させることが可能となる。   According to the present invention, since the decoding process of the LDPC code of two frames can be performed, it is possible to efficiently decode the LDPC code and improve the decoding performance.

以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。   Embodiments of the present invention will be described below. Correspondences between constituent elements described in the claims and specific examples in the embodiments of the present invention are exemplified as follows. This description is to confirm that specific examples supporting the invention described in the claims are described in the embodiments of the invention. Therefore, even if there are specific examples that are described in the embodiment of the invention but are not described here as corresponding to the configuration requirements, the specific examples are not included in the configuration. It does not mean that it does not correspond to a requirement. On the contrary, even if a specific example is described here as corresponding to a configuration requirement, this means that the specific example does not correspond to a configuration requirement other than the configuration requirement. not.

さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。   Further, this description does not mean that all the inventions corresponding to the specific examples described in the embodiments of the invention are described in the claims. In other words, this description is an invention corresponding to the specific example described in the embodiment of the invention, and the existence of an invention not described in the claims of this application, that is, in the future, a divisional application will be made. Nor does it deny the existence of an invention added by amendment.

請求項1に記載の復号装置(例えば、図15の復号装置400)は、LDPC(Low Density Parity Check)符号を符号長であるフレーム単位で復号する復号装置であって、前記LDPC符号の第1のフレーム(例えば、奇数フレーム)と第2のフレーム(例えば、偶数フレーム)を交互に選択する選択手段(例えば、図15の制御部401)と、前記第1のフレームと前記第2のフレームのうちの、前記選択手段により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算手段(例えば、図15のチェックノード計算器301)と、前記第1のフレームと前記第2のフレームのうちの、前記選択手段により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算手段(例えば、図15のバリアブルノード計算器303)とを備えることを特徴とする。 The decoding device according to claim 1 (for example, the decoding device 400 in FIG. 15) is a decoding device that decodes an LDPC (Low Density Parity Check) code in units of frames that are code lengths, and includes a first of the LDPC codes. Selection means (for example, the control unit 401 in FIG. 15) for alternately selecting the second frame (for example, odd frame) and the second frame (for example, even frame), the first frame, and the second frame Check node calculation means (for example, check node calculator 301 in FIG. 15) for performing a check node calculation for decoding the LDPC code of a frame not selected by the selection means, and the first frame And a variable node calculator for performing a variable node operation for decoding the LDPC code of the frame selected by the selection means of the second frame. (E.g., variable node calculator 303 of FIG. 15), characterized in that it comprises a.

請求項2に記載の復号装置は、請求項1に記載の復号装置であって、前記第1のフレームと前記第2のフレームの前記LDPC符号を記憶するフレーム記憶手段(例えば、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403)と、前記フレーム記億手段に記憶された前記第1のフレームまたは前記第2のフレームのうちの、前記選択手段により選択されたフレームの前記LDPC符号を前記バリアブルノード計算手段に供給する供給手段(例えば、セレクタ404)とをさらに備えることを特徴とする。   A decoding device according to claim 2 is the decoding device according to claim 1, wherein the frame storage means (for example, for receiving odd frames) stores the LDPC codes of the first frame and the second frame. Memory 402, even frame reception memory 403), and the LDPC code of the frame selected by the selection means among the first frame or the second frame stored in the frame storage means. It further comprises supply means (for example, a selector 404) for supplying variable node calculation means.

請求項4に記載の復号装置は、請求項1に記載の復号装置であって、前記チェックノードの演算、または前記バリアブルノードの演算のうちの一方の演算に用いられる枝に対応するメッセージデータの読み出しと、他方の演算の結果得られる枝に対応するメッセージデータの書き込みとが同時に行われるメッセージ記憶手段(例えば、図15の枝用メモリ300と枝用メモリ302)をさらに備えることを特徴とする。   The decoding device according to claim 4 is the decoding device according to claim 1, wherein message data corresponding to a branch used for one of the computation of the check node or the computation of the variable node is stored. It further comprises message storage means (for example, branch memory 300 and branch memory 302 in FIG. 15) for simultaneously reading and writing message data corresponding to the branch obtained as a result of the other operation. .

請求項7に記載の復号方法は、LDPC(Low Density Parity Check)符号を符号長であるフレーム単位で復号する復号装置の復号方法であって、前記LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップ(例えば、図16のステップS22、ステップS28)と、前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップ(例えば、図17のステップS42)と、前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップ(例えば、図18のステップS62)とを含むことを特徴とする。 The decoding method according to claim 7 is a decoding method of a decoding device that decodes an LDPC (Low Density Parity Check) code in units of a frame having a code length, the first frame and the second frame of the LDPC code. Selection step (for example, step S22 and step S28 in FIG. 16), and the LDPC of the frame that has not been selected by the processing of the selection step among the first frame and the second frame. A check node calculation step (for example, step S42 in FIG. 17) for calculating a check node for decoding a code, and the selection step of the first frame and the second frame are selected. A variable node calculation step for calculating a variable node for decoding the LDPC code of the frame (for example, step S62 in FIG. 18) Characterized in that it comprises and.

請求項8に記載のプログラムの各ステップの具体例も、請求項7に記載の復号方法の各ステップの発明の実施の形態における具体例と同様である。   A specific example of each step of the program according to claim 8 is also the same as the specific example in the embodiment of the invention of each step of the decoding method according to claim 7.

以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。   Hereinafter, specific embodiments to which the present invention is applied will be described in detail with reference to the drawings.

図15は、本発明を適用した復号装置400の構成例を示すブロック図である。   FIG. 15 is a block diagram showing a configuration example of a decoding device 400 to which the present invention is applied.

復号装置400は、枝用メモリ300、チェックノード計算器301、枝用メモリ302、バリアブルノード計算器303、制御部401、奇数フレーム受信用メモリ402、偶数フレーム受信用メモリ403、およびセレクタ404から構成される。   The decoding device 400 includes a branch memory 300, a check node calculator 301, a branch memory 302, a variable node calculator 303, a control unit 401, an odd frame reception memory 402, an even frame reception memory 403, and a selector 404. Is done.

復号装置400では、1つの枝に対応するメッセージを1つずつ計算し、2フレームの受信データの復号を同時に行う。   In the decoding device 400, messages corresponding to one branch are calculated one by one, and two frames of received data are decoded simultaneously.

即ち、復号装置400では、チェックノード計算器301が、枝用メモリ300からメッセージデータを1つずつ読み出し、そのメッセージデータを用いて、チェックノード演算を行うと同時に、バリアブルノード計算器303が、枝用メモリ302からメッセージデータを1つずつ読み出し、そのメッセージデータを用いて、バリアブルノード演算を行う。そして、チェックノード計算器301が、チェックノード演算の結果得られるメッセージデータを1つずつ枝用メモリ302に格納すると同時に、バリアブルノード計算器303が、バリアブルノード演算の結果得られるメッセージデータを1つずつ枝用メモリ300に格納する。なお、チェックノード計算器301とバリアブルノード計算器303は、図10に示したチェックノード計算器101とバリアブルノード計算器103とそれぞれ同様に構成される。但し、チェックノード計算器301とバリアブルノード計算器303は、制御部401の制御にしたがい、あるフレームのチェックノード演算と、他のフレームのバリアブルノード演算を同時に(同一のタイミングで)行うようになっている。   That is, in the decoding device 400, the check node calculator 301 reads message data one by one from the branch memory 300, performs check node calculation using the message data, and at the same time, the variable node calculator 303 The message data is read from the memory 302 one by one, and the variable node calculation is performed using the message data. The check node calculator 301 stores the message data obtained as a result of the check node operation one by one in the branch memory 302, and at the same time, the variable node calculator 303 obtains one message data obtained as a result of the variable node operation. One by one is stored in the branch memory 300. The check node calculator 301 and the variable node calculator 303 are configured in the same manner as the check node calculator 101 and the variable node calculator 103 shown in FIG. However, under the control of the control unit 401, the check node calculator 301 and the variable node calculator 303 perform a check node calculation for a certain frame and a variable node calculation for another frame at the same time (at the same timing). ing.

枝用メモリ300は、バリアブルノード計算器303によるバリアブルノード演算の結果得られる枝に対応するメッセージ(データ)を格納し、既に格納してあるメッセージをチェックノード計算器301に供給する。即ち、枝用メモリ300は、バリアブルノード計算器303から供給され、チェックノード計算器301が演算する順番に格納してあるメッセージD401を1つずつ読み出し、チェックノード計算器301に供給すると同時に、バリアブルノード計算器303が出力するメッセージD405をメッセージD400として受信し、枝用メモリ300の既に読み出されたメッセージ(メッセージD401)が記憶されていたアドレスに書き込む。即ち、枝用メモリ300は、チェックノード演算に用いられるメッセージ(データ)D401の読み出しと、バリアブルノード演算の結果得られるメッセージ(データ)D400の書き込みとを、同時に行う。   The branch memory 300 stores a message (data) corresponding to a branch obtained as a result of the variable node calculation by the variable node calculator 303 and supplies the already stored message to the check node calculator 301. That is, the branch memory 300 reads the messages D401 supplied from the variable node calculator 303 and stored in the order in which the check node calculator 301 operates, and supplies them to the check node calculator 301 at the same time. The message D405 output from the node calculator 303 is received as the message D400, and written to the address where the already read message (message D401) of the branch memory 300 is stored. That is, the branch memory 300 simultaneously reads the message (data) D401 used for the check node calculation and writes the message (data) D400 obtained as a result of the variable node calculation.

なお、枝用メモリ300には、バリアブルノード計算器303のバリアブルノード演算により演算された枝に対応するメッセージが格納されるので、枝用メモリ300に格納されるデータ量、即ち、枝用メモリ300に必要とされる記憶容量は、メッセージの量子化ビット数と、全枝数との乗算値となる。このことは、前述の図9の枝用メモリ100についても同様である。   Since the branch memory 300 stores messages corresponding to the branches calculated by the variable node calculation of the variable node calculator 303, the amount of data stored in the branch memory 300, that is, the branch memory 300 is stored. The required storage capacity is a product of the number of quantization bits of the message and the total number of branches. The same applies to the branch memory 100 shown in FIG.

チェックノード計算器301には、枝用メモリ300からメッセージD401が供給されるとともに、制御部401から制御信号D408が供給される。チェックノード計算器301は、制御部401から供給される制御信号D408に基づき、前述の図9のチェックノード計算器101と同様に、枝用メモリ300から供給されるメッセージD401を用い、式(7)にしたがって、LDPC符号の復号のためのチェックノードの演算を行い、その演算によって求められたメッセージD402を、枝用メモリ302に供給する。チェックノード計算器301の詳細構成は、図10に示したチェックノード計算器101と同様である。   The check node calculator 301 is supplied with a message D401 from the branch memory 300 and a control signal D408 from the control unit 401. Based on the control signal D408 supplied from the control unit 401, the check node calculator 301 uses the message D401 supplied from the branch memory 300 in the same manner as the check node calculator 101 in FIG. ), A check node operation for decoding the LDPC code is performed, and the message D402 obtained by the operation is supplied to the branch memory 302. The detailed configuration of the check node calculator 301 is the same as that of the check node calculator 101 shown in FIG.

枝用メモリ302は、チェックノード計算器301によるチェックノード演算の結果得られる枝に対応するメッセージ(データ)を格納し、既に格納してあるメッセージをバリアブルノード計算器303に供給する。即ち、枝用メモリ302は、チェックノード計算器301から供給され、バリアブルノード計算器303が演算する順番に格納してあるメッセージD403を1つずつ読み出し、バリアブルノード計算器303に供給すると同時に、チェックノード計算器301が出力するメッセージD402を受信し、枝用メモリ302の既に読み出されたメッセージ(メッセージD403)が記憶されていたアドレスに書き込む。即ち、枝用メモリ302は、バリアブルノード演算に用いられるメッセージ(データ)D403の読み出しと、チェックノード演算の結果得られるメッセージ(データ)D402の書き込みとを、同時に行う。   The branch memory 302 stores a message (data) corresponding to a branch obtained as a result of the check node calculation by the check node calculator 301 and supplies the already stored message to the variable node calculator 303. That is, the branch memory 302 is supplied from the check node calculator 301 and reads out the messages D403 stored one by one in the order in which the variable node calculator 303 calculates and supplies them to the variable node calculator 303. The message D402 output from the node calculator 301 is received and written to the address where the already read message (message D403) in the branch memory 302 is stored. That is, the branch memory 302 simultaneously reads a message (data) D403 used for variable node calculation and writes a message (data) D402 obtained as a result of the check node calculation.

なお、枝用メモリ302には、チェックノード計算器301のチェックノード演算により演算された枝に対応するメッセージが格納されるので、枝用メモリ301に格納されるデータ量、即ち、枝用メモリ302に必要とされる記憶容量は、メッセージの量子化ビット数と、全枝数との乗算値となる。このことは、前述の図9の枝用メモリ102についても同様である。   Since the branch memory 302 stores a message corresponding to the branch calculated by the check node calculation of the check node calculator 301, the amount of data stored in the branch memory 301, that is, the branch memory 302 is stored. The required storage capacity is a product of the number of quantization bits of the message and the total number of branches. The same applies to the branch memory 102 in FIG.

なお、枝用メモリ300と302は、同時に読み書き可能な、例えば、デュアルポートRAMで構成することができる。   Note that the branch memories 300 and 302 can be configured by, for example, a dual port RAM that can be read and written simultaneously.

バリアブルノード計算器303には、枝用メモリ302からメッセージD403が供給される。また、バリアブルノード計算器303には、制御部401から制御信号D409が供給されるとともに、セレクタ404からLDPC符号の受信データD404が供給される。バリアブルノード計算器303は、制御信号D409に基づき、前述の図9のバリアブルノード計算器103と同様に、枝用メモリ302から供給されるメッセージD403とセレクタ404から供給される受信データD404を用い、式(1)にしたがって、LDPC符号の復号のためのバリアブルノード演算を行い、その演算の結果得られる枝に対応するメッセージD405を、メッセージD400として枝用メモリ300に供給する。バリアブルノード計算器303の詳細構成は、図11に示したバリアブルノード計算器103と同様である。   The variable node calculator 303 is supplied with a message D403 from the branch memory 302. The variable node calculator 303 is supplied with a control signal D409 from the control unit 401 and is also supplied with received data D404 of an LDPC code from the selector 404. Based on the control signal D409, the variable node calculator 303 uses the message D403 supplied from the branch memory 302 and the received data D404 supplied from the selector 404, similarly to the variable node calculator 103 of FIG. A variable node operation for decoding the LDPC code is performed according to the equation (1), and a message D405 corresponding to a branch obtained as a result of the operation is supplied to the branch memory 300 as a message D400. The detailed configuration of the variable node calculator 303 is the same as that of the variable node calculator 103 shown in FIG.

制御部401は、制御信号D408をチェックノード計算器301に、制御信号D409をバリアブルノード計算器303に、制御信号D410をセレクタ404にそれぞれ供給することにより制御する。   The control unit 401 performs control by supplying the control signal D408 to the check node calculator 301, the control signal D409 to the variable node calculator 303, and the control signal D410 to the selector 404.

奇数フレーム受信用メモリ402は、例えば、最初のフレームから奇数番目のフレーム(以下、適宜、奇数フレームと称する)のLDPC符号化された受信データ(LDPC符号)D406を格納(記億)する。また、奇数フレーム受信用メモリ402は、既に格納されている受信データD406を読み出し、セレクタ404に供給する。   The odd-frame reception memory 402 stores, for example, the received data (LDPC code) D406 of LDPC-encoded data from the first frame to the odd-numbered frame (hereinafter referred to as an odd-numbered frame as appropriate). Also, the odd frame reception memory 402 reads out the reception data D406 already stored and supplies it to the selector 404.

偶数フレーム受信用メモリ403は、例えば、最初のフレームから偶数番目のフレーム(以下、適宜、偶数フレームと称する)のLDPC符号化された受信データ(LDPC符号)D407を格納(記億)する。また、偶数フレーム受信用メモリ403は、既に格納されている受信データD407を読み出し、セレクタ404に供給する。   The even frame reception memory 403 stores (stores billions) LDPC-encoded received data (LDPC code) D407 of even-numbered frames from the first frame (hereinafter referred to as even-numbered frames as appropriate), for example. Further, the even frame reception memory 403 reads the received data D407 that has already been stored, and supplies it to the selector 404.

なお、フレーム単位の受信データは、図示せぬ受信部から奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に供給されて記憶される。また、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に格納されるデータ量、即ち、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に必要とされる記憶容量は、LDPC符号の符号長と、受信データの量子化ビット数との乗算値である。   The received data in units of frames is supplied from an unshown receiving unit to the odd frame receiving memory 402 and the even frame receiving memory 403 and stored therein. The amount of data stored in the odd frame reception memory 402 and the even frame reception memory 403, that is, the storage capacity required for the odd frame reception memory 402 and the even frame reception memory 403 is the code of the LDPC code. This is a product of the length and the number of quantization bits of the received data.

セレクタ404は、制御部401から供給される制御信号D410に基づいて、奇数フレーム受信用メモリ402から供給される受信データD406、または偶数フレーム受信用メモリ403から供給される受信データD407のうちのどちらか一方を、受信データD404として、バリアブルノード計算器303と、上述した式(5)の演算を行う不図示のブロックに供給する。   Based on the control signal D410 supplied from the control unit 401, the selector 404 selects either the reception data D406 supplied from the odd frame reception memory 402 or the reception data D407 supplied from the even frame reception memory 403. One of them is supplied as received data D404 to a variable node calculator 303 and a block (not shown) that performs the calculation of the above-described equation (5).

図16は、図15の復号装置400の復号処理を説明するフローチャートである。この処理は、例えば、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に、奇数フレームである1番目のフレームと偶数フレームである2番目のフレームの受信データが格納されたとき、開始される。このとき、奇数フレーム受信用メモリ402が、格納している奇数フレームである1番目のフレームの受信データD406を読み出して、セレクタ404に供給するとともに、偶数フレーム受信用メモリ403が、格納している偶数フレームである2番目のフレームの受信データD407を読み出して、セレクタ404に供給する。   FIG. 16 is a flowchart for explaining the decoding process of the decoding device 400 of FIG. This process is started when, for example, the received data of the first frame that is an odd frame and the second frame that is an even frame are stored in the odd frame reception memory 402 and the even frame reception memory 403. . At this time, the odd frame reception memory 402 reads out the received data D406 of the first frame, which is the stored odd frame, and supplies it to the selector 404, and the even frame reception memory 403 stores it. The reception data D407 of the second frame, which is an even frame, is read and supplied to the selector 404.

なお、復号装置400の復号回数Nは、例えば、あるフレームの受信データすべてが受信されてから、次のフレームの受信データすべてが受信されるまでの時間と、復号装置400の動作周波数とに基づいて、あらかじめ設定されている。また、ここでは、2フレームの受信後、その2フレームの復号を、次の2フレームを受信するまでの間、繰り返し行うものとする。   Note that the number of decoding times N of the decoding device 400 is based on, for example, the time from when all received data of a certain frame is received until all received data of the next frame is received, and the operating frequency of the decoding device 400. Are set in advance. Also, here, after receiving two frames, the decoding of the two frames is repeated until the next two frames are received.

ステップS21において、制御部401は、不図示のカウンタの値Kを0に初期化し、ステップS22に進む。ステップS22において、制御部401は、バリアブルノード計算器303の対象フレームとして、奇数フレーム(第1のフレーム)または偶数フレーム(第2のフレーム)のうちの奇数フレームを選択し、制御信号D410が奇数フレームを選択するように設定する。即ち、制御部401は、奇数フレームの選択を表す制御信号D410をセレクタ404に供給する。このとき、セレクタ404は、制御部401から供給された制御信号D410にしたがい、奇数フレーム受信用メモリ402から供給された奇数フレームの受信データD406、または偶数フレーム受信用メモリ403から供給された偶数フレームの受信データD407のうちの対象フレーム(いまの場合、奇数フレーム)となっている受信データを選択し、受信データD404としてバリアブルノード計算器303に供給する。そして、制御部401は、ステップS22から、ステップS23−1とステップS23−2に進む。   In step S21, the control unit 401 initializes a counter value K (not shown) to 0, and proceeds to step S22. In step S22, the control unit 401 selects an odd frame of the odd frame (first frame) or the even frame (second frame) as the target frame of the variable node calculator 303, and the control signal D410 is an odd number. Set to select a frame. That is, the control unit 401 supplies a control signal D410 indicating selection of an odd frame to the selector 404. At this time, in accordance with the control signal D410 supplied from the control unit 401, the selector 404 receives the odd frame received data D406 supplied from the odd frame received memory 402 or the even frame supplied from the even frame received memory 403. Of the received data D407, the received data in the target frame (in this case, an odd frame) is selected and supplied to the variable node calculator 303 as received data D404. Then, the control unit 401 proceeds from step S22 to steps S23-1 and S23-2.

なお、ステップS23−1乃至ステップS27−1と、ステップS23−2乃至ステップS27−2は、同時に行われる。   Note that steps S23-1 to S27-1 and steps S23-2 to S27-2 are performed simultaneously.

ステップS23−1において、制御部401は、制御信号D408を0に設定し、チェックノード計算器301に供給し、ステップS24−1に進む。   In step S23-1, the control unit 401 sets the control signal D408 to 0, supplies it to the check node calculator 301, and proceeds to step S24-1.

ステップS24−1において、チェックノード計算器301は、枝用メモリ300から後述するステップS30−2で格納された、対象フレームとして選択されていない方のフレーム(以下、適宜、非対象フレームという)である偶数フレームに対するバリアブルノード演算の結果得られるメッセージviを読み出し、式(7)にしたがって、非対象フレームに対するチェックノード演算を行う。 In step S 24-1, the check node calculator 301 uses the frame not selected as the target frame (hereinafter referred to as a non-target frame as appropriate) stored in step S 30-2, which will be described later, from the branch memory 300. The message v i obtained as a result of the variable node calculation for a certain even frame is read, and the check node calculation for the non-target frame is performed according to Expression (7).

ステップS24−1の処理後は、ステップS25−1に進み、制御部401は、チェックノード計算器301が、検査行列の1行分のメッセージviを読み出したかどうかを判定し、検査行列の1行分のメッセージviを読み出していないと判定した場合、ステップS24−1に戻り、上述した処理を繰り返す。 After the process of step S24-1, the process proceeds to step S25-1, and the control unit 401 determines whether the check node calculator 301 has read the message v i for one row of the check matrix, and determines 1 of the check matrix. If it is determined that the message v i for the line has not been read, the process returns to step S24-1, and the above-described processing is repeated.

ステップS25−1において、制御部401は、検査行列の1行に亘るメッセージviを読み出したと判定した場合、ステップS26−1に進み、制御信号D408を1に設定する。
例えば、検査行列の行の重みが「9」である場合、制御部401は、ステップS24−1とステップS25−1の処理を9回繰り返し行い、ステップS25−1からステップS26−1に進む。
In step S25-1, when the control unit 401 determines that the message v i over one row of the check matrix has been read, the control unit 401 proceeds to step S26-1 and sets the control signal D408 to 1.
For example, when the row weight of the parity check matrix is “9”, the control unit 401 repeats the processes of step S24-1 and step S25-1 nine times, and proceeds from step S25-1 to step S26-1.

ステップS26−1の処理後は、ステップS27−1に進み、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了したかどうかを判定する。ステップS26−1において、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了していないと判定した場合、ステップS23−1に戻り、上述した処理を繰り返す。   After the processing of step S26-1, the process proceeds to step S27-1, and the control unit 401 determines whether or not the check node calculation for the received data for one frame has been completed. In step S26-1, when the control unit 401 determines that the check node calculation for the received data for one frame has not been completed, the control unit 401 returns to step S23-1 and repeats the above-described processing.

ステップS27−1において、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了したと判定した場合、ステップS28に進む。   If the control unit 401 determines in step S27-1 that the check node calculation for the received data for one frame has been completed, the process proceeds to step S28.

なお、カウンタの値Kが0である場合、非対象フレームに対して、後述するステップS30−2の処理が行われていないので、上述したステップS23−1乃至S27−1の処理は行なわれない。   If the value K of the counter is 0, the processing in steps S30-1 to S27-1 described above is not performed on the non-target frame because the processing in step S30-2 described later is not performed. .

一方、ステップS23−2において、制御部401は、制御信号D409を0に設定し、バリアブルノード計算器303に供給して、ステップS24−2に進む。   On the other hand, in step S23-2, the control unit 401 sets the control signal D409 to 0, supplies it to the variable node calculator 303, and proceeds to step S24-2.

ステップS24−2において、バリアブルノード計算器303は、枝用メモリ302から、後述するステップS30−1で格納された、対象フレームである奇数フレームに対するチェックノード演算の結果得られるメッセージujを読み出し、式(1)にしたがって、対象フレームに対するバリアブルノード演算を行う。なお、バリアブルノード計算器303は、最初のバリアブルノード演算を行う場合、即ち、カウンタの値Kが0である場合、まだステップS30−1の処理が行なわれていないので、メッセージujを初期値に設定し、バリアブルノード演算を行う。そして、バリアブルノード計算器303は、バリアブルノード演算の結果得られるメッセージviを枝用メモリ300に格納する。 In step S24-2, the variable node calculator 303 reads from the branch memory 302 the message u j obtained as a result of the check node calculation for the odd frame, which is the target frame, stored in step S30-1 described later. A variable node calculation is performed on the target frame according to Expression (1). When the variable node calculator 303 performs the first variable node calculation, that is, when the value K of the counter is 0, the process of step S30-1 has not been performed yet, so the message u j is set to the initial value. And variable node calculation is performed. Then, the variable node calculator 303 stores the message v i obtained as a result of the variable node calculation in the branch memory 300.

ステップS24−2の処理後は、ステップS25−2に進み、制御部401は、バリアブルノード計算器303が、検査行列の1列分のメッセージujを読み出したかどうかを判定し、検査行列の1列分のメッセージujを読み出していないと判定した場合、ステップS24−2に戻り、上述した処理を繰り返す。 After the processing of step S24-2, the process proceeds to step S25-2, and the control unit 401 determines whether the variable node calculator 303 has read the message u j for one column of the check matrix, and determines 1 of the check matrix. If it is determined that the message u j for the column has not been read, the process returns to step S24-2 and the above-described processing is repeated.

ステップS25−2において、制御部401は、検査行列の1列分のメッセージujを読み出したと判定した場合、ステップS26−2に進み、制御信号D409を1に設定する。
例えば、検査行列の列の重みが「5」である場合、制御部401は、ステップS24−2とステップS25−2の処理を5回繰り返し行い、ステップS25−2からステップS26−2に進む。
When determining in step S25-2 that the message u j for one column of the check matrix has been read, the control unit 401 proceeds to step S26-2 and sets the control signal D409 to 1.
For example, when the column weight of the parity check matrix is “5”, the control unit 401 repeats the processes of step S24-2 and step S25-2 five times, and proceeds from step S25-2 to step S26-2.

ステップS26−2の処理後は、ステップS27−2に進み、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了したかどうかを判定する。ステップS26−2において、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了していないと判定した場合、ステップS23−2に戻り、上述した処理を繰り返す。   After the process of step S26-2, the process proceeds to step S27-2, and the control unit 401 determines whether or not the variable node calculation for the received data for one frame is completed. In step S26-2, when the control unit 401 determines that the variable node calculation for the received data for one frame is not completed, the control unit 401 returns to step S23-2 and repeats the above-described processing.

ステップS27−2において、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了したと判定した場合、ステップS28に進む。   In step S27-2, when the control unit 401 determines that the variable node calculation for the received data for one frame has been completed, the control unit 401 proceeds to step S28.

ステップS23−1乃至ステップS27−1およびステップS23−2乃至ステップS27−2のように、復号装置400では、チェックノード計算器301による非対象フレームである偶数フレームに対するチェックノード演算と、バリアブルノード計算器303による対象フレームである奇数フレームに対するバリアブルノード演算とが、同時に行われる。   As in steps S23-1 to S27-1 and S23-2 to S27-2, in the decoding device 400, check node calculation and variable node calculation for even frames that are non-target frames by the check node calculator 301 are performed. The variable node calculation for the odd frame which is the target frame by the device 303 is performed simultaneously.

ステップS28において、制御部401は、バリアブルノード計算器303の対象フレームとして、奇数フレーム(第1のフレーム)または偶数フレーム(第2のフレーム)のうちの偶数フレームを選択し、制御信号D410が偶数フレームを選択するように設定する。即ち、制御部401は、偶数フレームの選択を表す制御信号D410をセレクタ404に供給する。このとき、セレクタ404は、制御部401から供給された制御信号D410にしたがい、奇数フレーム受信用メモリ402から供給された奇数フレームの受信データD406、または偶数フレーム受信用メモリ403から供給された偶数フレームの受信データD407のうちの対象フレーム(いまの場合、偶数フレーム)となっている受信データを選択し、受信データD404としてバリアブルノード計算器303に供給する。そして、制御部401は、ステップS28から、ステップS29−1とステップS29−2に進む。   In step S28, the control unit 401 selects an odd frame (first frame) or an even frame (second frame) as a target frame of the variable node calculator 303, and the control signal D410 is an even number. Set to select a frame. That is, the control unit 401 supplies a control signal D410 indicating selection of an even frame to the selector 404. At this time, in accordance with the control signal D410 supplied from the control unit 401, the selector 404 receives the odd frame received data D406 supplied from the odd frame received memory 402 or the even frame supplied from the even frame received memory 403. Of the received data D407, the received data that is the target frame (in this case, an even frame) is selected and supplied to the variable node calculator 303 as received data D404. Then, the control unit 401 proceeds from step S28 to step S29-1 and step S29-2.

なお、ステップS29−1乃至ステップS33−1と、ステップS29−2乃至ステップS33−2とは、同時に行われる。   In addition, step S29-1 thru | or step S33-1 and step S29-2 thru | or step S33-2 are performed simultaneously.

ステップS29−1において、制御部401は、制御信号D408を0に設定し、チェックノード計算器301に供給し、ステップS30−1に進む。   In step S29-1, the control unit 401 sets the control signal D408 to 0, supplies it to the check node calculator 301, and proceeds to step S30-1.

ステップS30−1において、チェックノード計算器301は、枝用メモリ300から、ステップS24−2で格納された、非対象フレームである奇数フレームに対するバリアブルノード演算の結果得られるメッセージviを読み出し、式(7)にしたがって、非対象フレームに対するチェックノード演算を行う。そして、チェックノード計算器301は、チェックノード演算の結果得られるメッセージujを枝用メモリ302に格納する。 In step S30-1, the check node calculator 301 reads from the branch memory 300 the message v i obtained as a result of the variable node calculation for the odd frame, which is the non-target frame, stored in step S24-2. According to (7), a check node calculation is performed on the non-target frame. Then, the check node calculator 301 stores the message u j obtained as a result of the check node calculation in the branch memory 302.

ステップS30−1の処理後は、ステップS31−1に進み、制御部401は、チェックノード計算器301が、検査行列の1行分のメッセージviを読み出したかどうかを判定し、検査行列の1行分のメッセージviを読み出していないと判定した場合、ステップS30−1に戻り、上述した処理を繰り返す。 After the process of step S30-1, the process proceeds to step S31-1, and the control unit 401 determines whether the check node calculator 301 has read the message v i for one row of the check matrix, and determines 1 of the check matrix. When it is determined that the message v i for the line has not been read, the process returns to step S30-1, and the above-described processing is repeated.

ステップS31−1において、制御部401は、検査行列の1行分のメッセージviを読み出したと判定した場合、ステップS32−1に進み、制御信号D408を1に設定する。
例えば、検査行列の行の重みが「9」である場合、制御部401は、ステップS30−1とステップS31−1の処理を9回繰り返し行い、ステップS31−1からステップS32−1に進む。
In step S31-1, when it is determined that the message v i for one row of the check matrix has been read, the control unit 401 proceeds to step S32-1, and sets the control signal D408 to 1.
For example, when the row weight of the parity check matrix is “9”, the control unit 401 repeats the processes of step S30-1 and step S31-1 nine times, and proceeds from step S31-1 to step S32-1.

ステップS32−1の処理後は、ステップS33−1に進み、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了したかどうかを判定する。ステップS32−1において、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了していないと判定した場合、ステップS29−1に戻り、上述した処理を繰り返す。   After the process of step S32-1, the process proceeds to step S33-1, and the control unit 401 determines whether or not the check node calculation for the received data for one frame is completed. In step S32-1, when the control unit 401 determines that the check node calculation for the received data for one frame has not been completed, the control unit 401 returns to step S29-1 and repeats the above-described processing.

ステップS33−1において、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了したと判定した場合、ステップS34に進む。   In step S33-1, when the control unit 401 determines that the check node calculation for the received data for one frame has been completed, the control unit 401 proceeds to step S34.

一方、ステップS29−2において、制御部401は、制御信号D409を0に設定し、バリアブルノード計算器303に供給し、ステップS30−2に進む。   On the other hand, in step S29-2, the control unit 401 sets the control signal D409 to 0, supplies it to the variable node calculator 303, and proceeds to step S30-2.

ステップS30−2において、バリアブルノード計算器303は、枝用メモリ302から、ステップS24−1で格納された、対象フレームである偶数フレームに対するチェックノード演算の結果得られるメッセージujを読み出し、式(1)にしたがって、対象フレームに対するバリアブルノード演算を行う。そして、バリアブルノード計算器303は、バリアブルノード演算の結果得られるメッセージviを枝用メモリ300に格納する。 In step S30-2, the variable node calculator 303 reads, from the branch memory 302, the message u j obtained as a result of the check node calculation for the even frame that is the target frame, stored in step S24-1. According to 1), variable node calculation is performed on the target frame. Then, the variable node calculator 303 stores the message v i obtained as a result of the variable node calculation in the branch memory 300.

ステップS30−2の処理後は、ステップS31−2に進み、制御部401は、バリアブルノード計算器303が、検査行列の1列分のメッセージujを読み出したかどうかを判定し、検査行列の1列分のメッセージujを読み出していないと判定した場合、ステップS30−2に戻り、上述した処理を繰り返す。 After the processing of step S30-2, the process proceeds to step S31-2, and the control unit 401 determines whether the variable node calculator 303 has read the message u j for one column of the parity check matrix and determines 1 of the parity check matrix. If it is determined that the message u j for the column has not been read, the process returns to step S30-2 and the above-described processing is repeated.

ステップS31−2において、制御部401は、検査行列の1列分のメッセージujを読み出したと判定した場合、ステップS32−2に進み、制御信号D409を1に設定する。
例えば、検査行列の列の重みが「5」である場合、制御部401は、ステップS30−2とステップS31−2の処理を5回繰り返し行い、ステップS31−2からステップS32−2に進む。
In step S31-2, when the control unit 401 determines that the message u j for one column of the check matrix has been read, the control unit 401 proceeds to step S32-2 and sets the control signal D409 to 1.
For example, when the column weight of the parity check matrix is “5”, the control unit 401 repeats the processes of step S30-2 and step S31-2 five times, and proceeds from step S31-2 to step S32-2.

ステップS32−2の処理後は、ステップS33−2に進み、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了したかどうかを判定する。ステップS33−2において、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了していないと判定した場合、ステップS29−2に戻り、上述した処理を繰り返す。   After the process of step S32-2, the process proceeds to step S33-2, and the control unit 401 determines whether or not the variable node calculation for the received data for one frame has been completed. In step S33-2, when the control unit 401 determines that the variable node calculation for the reception data for one frame is not completed, the control unit 401 returns to step S29-2 and repeats the above-described processing.

ステップS33−2において、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了したと判定した場合、ステップS34に進む。   In step S33-2, when the control unit 401 determines that the variable node calculation for the reception data for one frame is completed, the control unit 401 proceeds to step S34.

ステップS29−1乃至ステップS33−1およびステップS29−2乃至ステップS33−2のように、復号装置400では、チェックノード計算器301による非対象フレームである奇数フレームに対するチェックノード演算とバリアブルノード計算器303による対象フレームである偶数フレームに対するバリアブルノード演算とが、同時に行われる。   As in steps S29-1 to S33-1 and steps S29-2 to S33-2, in the decoding device 400, the check node calculator 301 performs a check node operation on an odd frame that is a non-target frame and a variable node calculator. The variable node calculation for the even frame, which is the target frame, is performed at the same time.

ステップS34において、制御部401は、復号回数を表わすカウンタの値Kを1だけインクリメントし、ステップS35に進む。ステップS35において、制御部401は、カウンタの値Kが、予め設定された復号回数N以上であるかどうかを判定する。   In step S34, the control unit 401 increments a counter value K representing the number of decodings by 1, and proceeds to step S35. In step S <b> 35, the control unit 401 determines whether or not the counter value K is equal to or greater than a preset number of times of decoding N.

ステップS35において、カウンタの値Kが、復号回数N以上ではない(Nより小さい)と判定した場合、ステップS22に戻り、制御部401は、対象フレームを奇数フレームに変更し、制御信号D410が奇数フレームを選択するように設定される。従って、制御部401は、奇数フレームと偶数フレームを交互に、対象フレームとして選択する。そして、制御部401は、ステップS22からステップS23−1とステップS23−2に進み、上述した処理を繰り返す。   If it is determined in step S35 that the counter value K is not equal to or greater than the decoding count N (less than N), the process returns to step S22, the control unit 401 changes the target frame to an odd frame, and the control signal D410 is an odd number. Set to select a frame. Therefore, the control unit 401 alternately selects odd frames and even frames as target frames. Then, the control unit 401 proceeds from step S22 to step S23-1 and step S23-2, and repeats the above-described processing.

以上のように、制御部401が、奇数フレームと偶数フレームを交互に、対象フレームとして選択し、バリアブルノード計算器303が、その選択された対象フレームのバリアブルノード演算を行うとともに、チェックノード計算器301が、奇数フレームと偶数フレームのうちの、非対象フレームのチェックノード演算を行うので、バリアブルノード計算器303では、奇数フレームと偶数フレームのバリアブルノードの演算が交互に行われ、チェックノード計算器301では、偶数フレームと奇数フレームのチェックノード演算が交互に行われる。   As described above, the control unit 401 alternately selects an odd frame and an even frame as a target frame, and the variable node calculator 303 performs a variable node calculation of the selected target frame, and a check node calculator Since 301 performs a check node calculation of non-target frames among odd frames and even frames, the variable node calculator 303 alternately calculates variable nodes of odd frames and even frames. In 301, check node operations of even frames and odd frames are alternately performed.

従って、奇数フレームと偶数フレームのうちの一方のバリアブルノード演算と他方のチェックノード演算とが同時に行われ、その後、他方のバリアブルノード演算と一方のチェックノード演算とが同時に行われることが繰り返される。   Therefore, one variable node operation and the other check node operation of the odd frame and the even frame are performed simultaneously, and thereafter, the other variable node operation and one check node operation are performed simultaneously.

一方、ステップS35において、制御部401は、カウンタの値KがN以上であると判定した場合、即ち、奇数フレームのN回の復号が終了した場合、ステップS35からステップS36に進む。このとき、不図示のブロックは、N回の復号が終了した奇数フレームについて、上述した式(5)にしたがって演算を行い、その演算結果をその奇数フレームの最終的な復号結果として出力するとともに、チェックノード計算器301は、偶数フレームに対して最後のチェックノード演算を行う。そして、偶数フレームのN回の復号が終了され、不図示のブロックは、そのN回の復号が終了した偶数フレームについて、上述した式(5)にしたがって演算を行い、その演算結果を、その偶数フレームの最終的な復号結果として出力する。   On the other hand, in step S35, when the control unit 401 determines that the counter value K is equal to or greater than N, that is, when decoding of the odd-numbered frame N times is completed, the control unit 401 proceeds from step S35 to step S36. At this time, the block (not shown) performs an operation according to the above-described equation (5) for the odd frame for which decoding of N times is completed, and outputs the operation result as the final decoding result of the odd frame. The check node calculator 301 performs the last check node calculation for even frames. Then, the N decoding of the even frame is completed, and the block (not shown) performs the calculation according to the above-described equation (5) for the even frame for which the N decoding has been completed, Output as the final decoding result of the frame.

ステップS36において、制御部401は、復号すべき受信データが、まだ存在するかどうかを判定し、存在すると判定した場合、即ち、次の奇数フレームと偶数フレームの受信データが受信され、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403にそれぞれ供給された場合、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403は、その奇数フレームと偶数フレームの受信データをそれぞれ記憶し、記憶した奇数フレームの受信データD406と偶数フレームの受信データD407をセレクタ404に供給して、ステップS21に戻り、以下、同様の処理が繰り返される。   In step S36, the control unit 401 determines whether there is still reception data to be decoded. If it is determined that the reception data is present, that is, reception data of the next odd frame and even frame is received, and odd frame reception is performed. Memory 402 and even frame reception memory 403, odd frame reception memory 402 and even frame reception memory 403 store the received data of the odd frame and even frame, respectively, and the stored odd frame Received data D406 and even-frame received data D407 are supplied to the selector 404, the process returns to step S21, and the same processing is repeated thereafter.

一方、ステップS36において、制御部401は、復号すべきフレームの受信データが存在しないと判定した場合、処理を終了する。   On the other hand, in step S36, when the control unit 401 determines that there is no received data of the frame to be decoded, the process ends.

次に、図17と図18のフローチャートを用いて、図15のチェックノード計算器301とバリアブルノード計算器303の演算処理について説明する。なお、図17のチェックノード計算器301のチェックノード演算処理と、図18のバリアブルノード計算器303のバリアブルノード演算処理は、同時に行なわれる。   Next, calculation processing of the check node calculator 301 and the variable node calculator 303 in FIG. 15 will be described using the flowcharts in FIGS. 17 and 18. Note that the check node calculation process of the check node calculator 301 in FIG. 17 and the variable node calculation process of the variable node calculator 303 in FIG. 18 are performed simultaneously.

図17は、図15のチェックノード計算器301のチェックノード演算処理を説明するフローチャートである。   FIG. 17 is a flowchart for explaining the check node calculation processing of the check node calculator 301 in FIG.

ステップS41において、チェックノード計算器301は、枝用メモリ300から、バリアブルノード計算器303によるバリアブルノード演算の結果得られる枝に対応するメッセージD405(メッセージv)を取得し(読み出し)、ステップS42に進む。   In step S41, the check node calculator 301 acquires (reads out) the message D405 (message v) corresponding to the branch obtained as a result of the variable node calculation by the variable node calculator 303 from the branch memory 300, and proceeds to step S42. move on.

ステップS42において、チェックノード計算器301は、制御部401から供給される制御信号D408に基づき、メッセージD405を用いて、上述した式(7)にしたがって、チェックノード演算を行う。   In step S42, the check node calculator 301 performs a check node calculation according to the above-described equation (7) using the message D405 based on the control signal D408 supplied from the control unit 401.

即ち、チェックノード計算器301は、既に枝用メモリ300に格納されているメッセージ、つまり、バリアブルノード計算器303の前回の処理対象である対象フレーム(奇数フレームと偶数フレームのうち、今回、対象フレームとして、制御部401により選択されていない非対象フレーム)に対するバリアブルノード演算の結果得られる枝に対応するメッセージD405を用いてチェックノード演算を行う。   That is, the check node calculator 301 determines that the message already stored in the branch memory 300, that is, the target frame that is the previous processing target of the variable node calculator 303 (the current frame of the odd frame and the even frame). The check node calculation is performed using the message D405 corresponding to the branch obtained as a result of the variable node calculation on the non-target frame not selected by the control unit 401.

ステップS42の処理後は、ステップS43に進み、チェックノード計算器301は、チェックノード演算の結果得られる枝に対応するメッセージD402(メッセージu)を、枝用メモリ302に供給して格納し(書き込み)、いま非対象フレームとなっているフレームに対する処理を終了する。   After the processing of step S42, the process proceeds to step S43, and the check node calculator 301 supplies the message D402 (message u) corresponding to the branch obtained as a result of the check node calculation to the branch memory 302 for storage (writing). ), The process for the non-target frame is terminated.

図18は、図15のバリアブルノード計算器303のバリアブルノード演算処理を説明するフローチャートである。   FIG. 18 is a flowchart for explaining variable node calculation processing of the variable node calculator 303 of FIG.

ステップS61において、バリアブルノード計算器303は、枝用メモリ302から、チェックノード計算器301によるチェックノード演算の結果得られる枝に対応するメッセージD403(メッセージu)を取得するとともに、セレクタ404を介して、奇数フレーム受信用メモリ402または偶数フレーム受信用メモリ403から対象フレームの受信データD404を取得する。なお、セレクタ404を介して供給された受信データD404のフレーム(対象フレーム)に対して、まだチェックノード演算が行われておらず、枝用メモリ302にメッセージD403が格納されていない場合、バリアブルノード計算器303は、メッセージD403を取得する代わりに、メッセージuを初期値に設定する。   In step S 61, the variable node calculator 303 acquires a message D 403 (message u) corresponding to the branch obtained as a result of the check node calculation by the check node calculator 301 from the branch memory 302 and also via the selector 404. The reception data D404 of the target frame is acquired from the odd frame reception memory 402 or the even frame reception memory 403. If no check node operation has been performed on the frame (target frame) of the reception data D404 supplied via the selector 404 and the message D403 is not stored in the branch memory 302, the variable node The calculator 303 sets the message u to an initial value instead of acquiring the message D403.

ステップS61の処理後は、ステップS62に進み、バリアブルノード計算器303は、制御部401から供給される制御信号D409に基づいて、メッセージD403と対象フレームの受信データD404を用いて、上述した式(1)にしたがってバリアブルノード演算を行う。そして、バリアブルノード計算器303は、ステップS62からステップS63に進み、バリアブルノード演算の結果得られる枝に対応するメッセージD405(メッセージv)を枝用メモリ300に供給して格納し、いま対象フレームとなっているフレームに対する処理を終了する。   After the process of step S61, the process proceeds to step S62, and the variable node calculator 303 uses the message D403 and the received data D404 of the target frame based on the control signal D409 supplied from the control unit 401, the above formula ( Variable node calculation is performed according to 1). Then, the variable node calculator 303 proceeds from step S62 to step S63, and supplies and stores the message D405 (message v) corresponding to the branch obtained as a result of the variable node calculation to the branch memory 300. The process for the current frame is terminated.

以上のように、チェックノード計算器301において、2つのフレームのチェックノード演算を交互に行うとともに、バリアブルノード計算器303において、その2つのフレームのバリアブルノード演算を交互に行うことにより、チェックノード計算器301とバリアブルノード計算器303では、2つのフレームのうちの一方のチェックノード演算またはバリアブルノード演算と、他方のバリアブルノード演算またはチェックノード演算とが、同時に演算が行われるので、理論的には、前述の図9の場合の2倍の回数の復号を行うことができる。   As described above, the check node calculator 301 alternately performs the check node calculation of two frames, and the variable node calculator 303 alternately performs the variable node calculation of the two frames, thereby calculating the check node calculation. In the unit 301 and the variable node calculator 303, since one check node operation or variable node operation of the two frames and the other variable node operation or check node operation are performed simultaneously, theoretically Thus, decoding can be performed twice as many times as in FIG.

なお、図16では、奇数フレームと偶数フレームの2つのフレームの受信データの復号を、次の2つのフレームの受信データすべてを受信するまでの間行うようにしたが、1つのフレームの受信データの受信後、その受信データの復号を、その後の2つのフレームの受信データすべてを受信するまでの間行うこともできる。   In FIG. 16, the reception data of the two frames of the odd frame and the even frame is decoded until all the reception data of the next two frames are received. After reception, the received data can be decoded until all the received data of the subsequent two frames are received.

図19は、1フレームの受信データすべてを受信し終わるごとに、その1フレームの受信データの復号を開始し、各フレームにつき、次の2フレームの受信データすべてを受信するまで、復号を行う場合の、図15の復号装置400の処理の概要を説明するタイミングチャートである。   FIG. 19 shows a case where decoding of reception data of one frame is started every time reception of all reception data of one frame is completed, and decoding is performed until reception of all reception data of the next two frames is received for each frame. It is a timing chart explaining the outline | summary of the process of the decoding apparatus 400 of FIG.

なお、図19において(後述する図20においても同様)、横軸は、時間を表している。また、図19では、復号回数は8回に設定されている。   In FIG. 19 (the same applies to FIG. 20 described later), the horizontal axis represents time. In FIG. 19, the number of times of decoding is set to 8.

図19上から1番目は、復号装置400が受信する受信データのフレームを表している。なお、n番目のフレームを、フレーム#nと表わすこととする。   The first from the top in FIG. 19 represents a frame of received data received by the decoding device 400. Note that the nth frame is represented as frame #n.

いま、フレーム#nに注目すると、復号装置400は、フレーム#nの受信データのすべての受信が完了し、その次の(連続する)フレーム#n+1の受信データの受信が開始されると、フレーム#nの復号を開始する。   Now, focusing on frame #n, decoding apparatus 400 completes reception of reception data of frame #n, and when reception of reception data of the next (continuous) frame # n + 1 is started, Start decoding of #n.

即ち、復号装置400では、バリアブルノード計算器303が、まず、フレーム#nの受信データを用いて、フレーム#nの1回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。さらに、チェックノード計算器301が、1回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの1回目のチェックノード演算を行い、その演算結果としてのメッセージを得る(図19上から2番目)。そして、バリアブルノード計算器303が、1回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの2回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る。さらに、チェックノード計算器301が、2回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの2回目のチェックノード演算を行い、その演算結果としてのメッセージを得る。以下、同様にして、復号装置400では、フレーム#nに対して、4回ずつのバリアブルノード演算とチェックノード演算が行われる。   That is, in the decoding device 400, the variable node calculator 303 first performs the first variable node calculation of the frame #n using the received data of the frame #n, and obtains a message as the calculation result (FIG. 19). 3rd from the top). Further, the check node calculator 301 performs the first check node calculation of the frame #n using the message as the first variable node calculation result, and obtains the message as the calculation result (from the top 2 in FIG. 19). Th). Then, the variable node calculator 303 performs the second variable node calculation of the frame #n using the message as the first check node calculation result and the received data of the frame #n, and the message as the calculation result. Get. Further, the check node calculator 301 performs the second check node calculation of the frame #n using the message as the second variable node calculation result, and obtains the message as the calculation result. Similarly, in decoding apparatus 400, variable node calculation and check node calculation are performed four times for frame #n.

その後、フレーム#n+1の受信データのすべての受信が完了する直前において、バリアブルノード計算器303が、4回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの5回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。   Thereafter, immediately before the reception of all the received data of frame # n + 1 is completed, the variable node calculator 303 uses the message as the result of the fourth check node calculation and the received data of frame #n to generate frame #n. The fifth variable node calculation is performed, and a message as the calculation result is obtained (third from the top in FIG. 19).

そして、フレーム#n+1の受信データのすべての受信が完了し、その次のフレーム#n+2の受信データの受信が開始されると(図19上から1番目)、チェックノード計算器301が、5回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの5回目のチェックノード演算を行い、その演算結果としてのメッセージを得る(図19上から2番目)。さらに、バリアブルノード計算器303が、5回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの6回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る。さらに、チェックノード計算器301が、6回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの6回目のチェックノード演算を行い、その演算結果としてのメッセージを得る。以下、同様にして、復号装置400では、フレーム#nに対して、延べ8回ずつのバリアブルノード演算とチェックノード演算が行われる。   When reception of all received data of frame # n + 1 is completed and reception of received data of the next frame # n + 2 is started (first from the top in FIG. 19), the check node calculator 301 performs the fifth time. The fifth check node calculation of frame #n is performed using the message as the variable node calculation result of No. 2 to obtain a message as the calculation result (second from the top in FIG. 19). Further, the variable node calculator 303 performs the sixth variable node calculation of the frame #n using the message as the fifth check node calculation result and the received data of the frame #n, and the message as the calculation result. Get. Further, the check node calculator 301 performs the sixth check node calculation of the frame #n using the message as the sixth variable node calculation result, and obtains the message as the calculation result. Thereafter, similarly, in decoding apparatus 400, a variable node calculation and a check node calculation are performed a total of eight times for frame #n.

その後、復号装置400では、8回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、式(5)の演算が行われ、これにより、フレーム#nの最終的な復号結果が求められる(図19下から1番目)。   After that, the decoding apparatus 400 performs the calculation of Expression (5) using the message as the eighth check node calculation result and the received data of the frame #n, whereby the final decoding of the frame #n is performed. The result is obtained (first from the bottom in FIG. 19).

一方、復号装置400では、フレーム#n+1の受信データのすべての受信が完了し、その次のフレーム#n+2の受信データの受信が開始されると(図19上から1番目)、フレーム#nの復号と並列して、フレーム#n+1の復号が開始される。   On the other hand, in decoding apparatus 400, when reception of all received data of frame # n + 1 is completed and reception of received data of the next frame # n + 2 is started (first from the top in FIG. 19), frame #n In parallel with decoding, decoding of frame # n + 1 is started.

即ち、フレーム#n+2の受信データの受信が開始されると、上述したように、チェックノード計算器301が、フレーム#nの5回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの5回目のチェックノード演算を行い、その演算結果としてのメッセージを得るが(図19上から2番目)、そのタイミングでは、バリアブルノード計算器303が、直前に受信が完了したフレーム#n+1の受信データを用いて、フレーム#n+1の1回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。つまり、フレーム#nの5回目のチェックノード演算と、フレーム#n+1の1回目のバリアブルノード演算とが、同時に行われる。   That is, when reception of the reception data of frame # n + 2 is started, as described above, the check node calculator 301 uses the message as the fifth variable node calculation result of frame #n to use the message of frame #n. The fifth check node calculation is performed to obtain a message as the calculation result (second from the top in FIG. 19), but at that timing, the variable node calculator 303 receives the received data of frame # n + 1 that has just been received. Is used, the first variable node calculation of frame # n + 1 is performed, and a message as the calculation result is obtained (third from the top in FIG. 19). That is, the fifth check node calculation for frame #n and the first variable node calculation for frame # n + 1 are performed simultaneously.

その後、上述したように、バリアブルノード計算器303が、フレーム#nの5回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの6回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得るが(図19上から3番目)、そのタイミングでは、チェックノード計算器301が、フレーム#n+1の1回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#n+1の1回目のチェックノード演算を行い、その演算結果としてのメッセージを得る(図19上から2番目)。つまり、フレーム#nの6回目のバリアブルノード演算と、フレーム#n+1の1回目のチェックノード演算とが、同時に行われる。   After that, as described above, the variable node calculator 303 uses the message as the fifth check node calculation result of the frame #n and the received data of the frame #n to execute the sixth variable node calculation of the frame #n. To obtain a message as the calculation result (third from the top in FIG. 19), at that timing, the check node calculator 301 uses the message as the first variable node calculation result of frame # n + 1, The first check node calculation of frame # n + 1 is performed, and a message as the calculation result is obtained (second from the top in FIG. 19). That is, the sixth variable node calculation for frame #n and the first check node calculation for frame # n + 1 are performed simultaneously.

以下、同様にして、フレーム#nのチェックノード演算と、フレーム#n+1のバリアブルノード演算とが同時に行われることと、フレーム#nのバリアブルノード演算と、フレーム#n+1のチェックノード演算とが同時に行われることが、交互に繰り返される。   Hereinafter, similarly, the check node operation of frame #n and the variable node operation of frame # n + 1 are performed simultaneously, the variable node operation of frame #n, and the check node operation of frame # n + 1 are performed simultaneously. Are repeated alternately.

そして、フレーム#nに対して、延べ8回ずつのバリアブルノード演算とチェックノード演算が行われると、上述したように、8回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、式(5)の演算が行われ、これにより、フレーム#nの最終的な復号結果が求められる(図19下から1番目)。   Then, when variable node calculation and check node calculation are performed eight times in total for frame #n, as described above, the message as the result of the eighth check node calculation and the received data of frame #n are Thus, the calculation of Expression (5) is performed, and thereby the final decoding result of frame #n is obtained (first from the bottom in FIG. 19).

フレーム#nに対して、延べ8回ずつのバリアブルノード演算とチェックノード演算が行われた時点では、フレーム#n+1に対しては、4回ずつバリアブルノード演算とチェックノード演算が行われている。そして、フレーム#nの最終的な復号結果が得られると、バリアブルノード計算器303が、フレーム#n+1の4回目のチェックノード演算結果としてのメッセージと、フレーム#n+1の受信データを用いて、フレーム#n+1の5回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。   At the time when the variable node calculation and the check node calculation are performed a total of eight times for the frame #n, the variable node calculation and the check node calculation are performed four times for the frame # n + 1. When the final decoding result of frame #n is obtained, the variable node calculator 303 uses the message as the fourth check node calculation result of frame # n + 1 and the received data of frame # n + 1 to The fifth variable node calculation of # n + 1 is performed, and a message as the calculation result is obtained (third from the top in FIG. 19).

この時点で、フレーム#n+2の受信データのすべての受信が完了し(図19上から1番目)、その次のフレーム#n+3の受信データの受信が開始され、チェックノード計算器301が、フレーム#n+1の5回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#n+1の5回目のチェックノード演算を行い、その演算結果としてのメッセージを得る(図19上から2番目)。そのタイミングでは、バリアブルノード計算器303が、直前に受信が完了したフレーム#n+2の受信データを用いて、フレーム#n+2の1回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。つまり、フレーム#n+1の5回目のチェックノード演算と、フレーム#n+2の1回目のバリアブルノード演算とが、同時に行われる。   At this point, reception of all reception data of frame # n + 2 is completed (first from the top in FIG. 19), reception of reception data of the next frame # n + 3 is started, and the check node calculator 301 Using the message as the fifth variable node calculation result of n + 1, the fifth check node calculation of frame # n + 1 is performed to obtain the message as the calculation result (second from the top in FIG. 19). At that timing, the variable node calculator 303 performs the first variable node calculation of the frame # n + 2 using the received data of the frame # n + 2 that has been received immediately before, and obtains a message as the calculation result (see FIG. 19 Third from top). That is, the fifth check node calculation for frame # n + 1 and the first variable node calculation for frame # n + 2 are performed simultaneously.

以下、同様にして、フレーム#n+1のチェックノード演算と、フレーム#n+2のバリアブルノード演算とが同時に行われることと、フレーム#n+1のバリアブルノード演算と、フレーム#n+2のチェックノード演算とが同時に行われることが、交互に繰り返される。   Hereinafter, similarly, the check node operation of frame # n + 1 and the variable node operation of frame # n + 2 are performed simultaneously, the variable node operation of frame # n + 1, and the check node operation of frame # n + 2 are performed simultaneously. Are repeated alternately.

そして、フレーム#n+1に対して、延べ8回ずつのバリアブルノード演算とチェックノード演算が行われると、8回目のチェックノード演算結果としてのメッセージと、フレーム#n+1の受信データを用いて、式(5)の演算が行われ、これにより、フレーム#n+1の最終的な復号結果が求められる(図19下から1番目)。   Then, when variable node calculation and check node calculation are performed 8 times in total for frame # n + 1, the message (the result of the eighth check node calculation) and the received data of frame # n + 1 are used. 5) is performed, and thereby the final decoding result of frame # n + 1 is obtained (first from the bottom in FIG. 19).

フレーム#n+2以降のフレームも、同様にして復号されていく。   Frames after frame # n + 2 are similarly decoded.

以上のように、2つのフレームのうちの一方のチェックノード演算と、他方のバリアブルノード演算とを同時に行い、その後、他方のバリアブルノード演算と、一方のチェックノード演算とを同時に行うことを繰り返すことにより、1つのフレームのバリアブルノード演算だけを行い、その後、その1つのフレームのチェックノード演算だけを行うことを繰り返す場合に比較して、単純には、復号回数を2倍にすることができる。   As described above, one check node operation of two frames and the other variable node operation are simultaneously performed, and then the other variable node operation and one check node operation are simultaneously performed. Thus, the number of times of decoding can be simply doubled as compared to the case where only variable node calculation of one frame is performed and then only check node calculation of the one frame is repeated.

即ち、図20は、1つのフレームのバリアブルノード演算だけを行い、その後、その1つのフレームのチェックノード演算だけを行うことを繰り返す復号を行う従来の復号装置(例えば、図9の復号装置)の復号処理を説明するタイミングチャートである。   That is, FIG. 20 shows a conventional decoding apparatus (for example, the decoding apparatus in FIG. 9) that performs decoding by repeatedly performing only variable node calculation for one frame and then performing only check node calculation for that one frame. It is a timing chart explaining a decoding process.

なお、図20では、1フレームの受信データを受信するのに要する時間と、復号の動作周波数のいずれも、図19における場合と同一であるとする。   In FIG. 20, it is assumed that both the time required to receive one frame of received data and the decoding operating frequency are the same as those in FIG.

図20上から1番目は、従来の復号装置が受信する受信データのフレームを表しており、いまの場合、図19上から1番目と同一である。   The first from the top in FIG. 20 represents a frame of received data received by the conventional decoding device, and in this case, is the same as the first from the top in FIG.

いま、フレーム#nに注目すると、従来の復号装置は、フレーム#nの受信データのすべての受信が完了し、その次のフレーム#n+1の受信データの受信が開始されると、フレーム#nの復号を開始する。   Now, paying attention to frame #n, the conventional decoding apparatus completes reception of all received data of frame #n, and when reception of received data of the next frame # n + 1 is started, Start decryption.

即ち、従来の復号装置では、まず、フレーム#nの受信データを用いて、フレーム#nの1回目のバリアブルノード演算が行われ、その演算結果としてのメッセージが得られる(図20上から3番目)。さらに、フレーム#nの1回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの1回目のチェックノード演算が行われ、その演算結果としてのメッセージが得られる(図20上から2番目)。そして、フレーム#nの1回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの2回目のバリアブルノード演算が行われ、その演算結果としてのメッセージが得られる。さらに、フレーム#nの2回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの2回目のチェックノード演算が行われ、その演算結果としてのメッセージが得られる。以下、同様にして、従来の復号装置では、フレーム#nに対して、4回ずつのバリアブルノード演算とチェックノード演算が行われる。   That is, in the conventional decoding device, first, the first variable node calculation of frame #n is performed using the received data of frame #n, and a message as the calculation result is obtained (third from the top in FIG. 20). ). Further, the first check node calculation of frame #n is performed using the message as the first variable node calculation result of frame #n, and the message as the calculation result is obtained (second from the top in FIG. 20). ). Then, the second variable node calculation of frame #n is performed using the message as the first check node calculation result of frame #n and the received data of frame #n, and the message as the calculation result is obtained. It is done. Further, the second check node calculation of frame #n is performed using the message as the second variable node calculation result of frame #n, and the message as the calculation result is obtained. Similarly, in the conventional decoding device, the variable node calculation and the check node calculation are performed four times for frame #n.

その後、フレーム#n+1の受信データのすべての受信が完了する直前において、フレーム#nの4回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、式(5)の演算が行われ、これにより、フレーム#nの最終的な復号結果が求められる(図20下から1番目)。   Thereafter, immediately before the reception of all the received data of frame # n + 1 is completed, the calculation of Expression (5) is performed using the message as the fourth check node calculation result of frame #n and the received data of frame #n. As a result, the final decoding result of frame #n is obtained (first from the bottom in FIG. 20).

即ち、従来の復号装置では、フレーム#nのバリアブルノード演算またはチェックノード演算のいずれか一方が行われている間、他方の演算は行われない。このため、フレーム#nの受信データの復号は、例えば、その次のフレーム#n+1の受信データすべての受信が完了するまでの1フレームの期間に完了しなければならず、このため、フレーム#nについては、4回、即ち、図19における場合の1/2の回数の復号しか行うことができない。   That is, in the conventional decoding apparatus, while either the variable node calculation or the check node calculation of frame #n is performed, the other calculation is not performed. For this reason, the decoding of the received data of frame #n must be completed in the period of one frame until the reception of all the received data of the next frame # n + 1 is completed. Can be decoded only four times, that is, half the number of times of decoding in the case of FIG.

フレーム#nの最終的な復号結果が求められた後、フレーム#n+1の受信データのすべての受信が完了し、その次のフレーム#n+2の受信データの受信が開始されると、従来の復号装置は、上述したフレーム#nの復号を行う場合と同様に、フレーム#n+1の復号を開始する。従って、フレーム#n+1についても、図19における場合の1/2の回数である4回の復号しか行うことができない。   After the final decoding result of frame #n is obtained, when reception of all reception data of frame # n + 1 is completed and reception of reception data of the next frame # n + 2 is started, a conventional decoding device Starts decoding frame # n + 1 as in the case of decoding frame #n described above. Therefore, the frame # n + 1 can be decoded only four times, which is half the number in the case of FIG.

フレーム#n+2以降のフレームも、同様にして復号されていくため、やはり、図19における場合の1/2の回数である4回の復号しか行うことができない。   Since the frames after frame # n + 2 are also decoded in the same manner, the decoding can be performed only four times, which is half the number in FIG.

逆に言えば、図15の復号装置400は、従来の復号装置の2倍の回数の復号を行うことができる。   In other words, the decoding device 400 of FIG. 15 can perform decoding twice as many times as the conventional decoding device.

なお、図16のフローチャートで説明したように、2フレームの受信データすべてが受信されるのを待って、その2フレームの受信データの復号を、その次の2フレームの受信データすべてが受信されるまでの間行う場合であっても、また、図19で説明したように、1フレームの受信データすべてを受信するたびに、その1フレームの受信データの復号を、その次の2フレームの受信データすべてが受信されるまでの間行う場合であっても、復号回数は、従来の復号装置の2倍の回数とすることができる。但し、1フレームの受信データすべてを受信するたびに、その1フレームの受信データの復号を、その次の2フレームの受信データすべてが受信されるまでの間行う場合は、2フレームの受信データすべてが受信されるのを待って、その2フレームの受信データの復号を、その次の2フレームの受信データすべてが受信されるまでの間行う場合よりも、最初の1フレーム目の復号結果を、早期に得ることができる。   Note that, as described with reference to the flowchart of FIG. 16, after all the received data of two frames are received, the received data of the two frames are decoded, and all the received data of the next two frames are received. Even when the process is performed until the first frame, as described with reference to FIG. 19, each time all received data of one frame is received, the received data of the next two frames are decoded. Even if it is performed until all are received, the number of times of decoding can be set to twice that of the conventional decoding device. However, every time all the received data of one frame is received, when the received data of one frame is decoded until all the received data of the next two frames are received, all the received data of two frames Than the case where the received data of the two frames is decoded until all the received data of the next two frames are received, the decoding result of the first frame is Can be obtained early.

以上のように、復号装置400では、図9の復号装置の受信用メモリ104を、2つの奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に変更するとともに、図9の制御部105を、制御部401に変更し、セレクタ404を新たに設けるという、僅かな変更を加えるだけで、従来に比べて効率の良い復号を行うことができる。   As described above, in the decoding device 400, the reception memory 104 of the decoding device in FIG. 9 is changed to two odd frame reception memory 402 and even frame reception memory 403, and the control unit 105 in FIG. Decoding can be performed more efficiently than in the prior art, with only a slight change of changing to the control unit 401 and providing a new selector 404.

また、復号装置400では、同一の動作周波数で、従来の2倍の復号回数の復号を行うことができ、これにより、復号性能を改善することができる。また、従来と同一の復号回数にした場合、復号装置400では、動作周波数を半分にすることができ、消費電力を抑えることがきる。従って、復号装置400では、消費電力を抑えて、従来と同一の性能の復号を行うことができる。   Also, the decoding device 400 can perform decoding twice as many times as the conventional decoding at the same operating frequency, thereby improving the decoding performance. In addition, when the decoding frequency is the same as that in the prior art, the decoding device 400 can halve the operating frequency and suppress power consumption. Therefore, the decoding device 400 can perform decoding with the same performance as the conventional one while suppressing power consumption.

なお、復号装置400は、全ての枝のメッセージを同時に行う復号装置やP個の枝のメッセージを同時に行う復号装置にも適用することができる。   Note that the decoding device 400 can also be applied to a decoding device that simultaneously performs messages for all branches and a decoding device that simultaneously performs messages for P branches.

さらに、枝用メモリ300と枝用メモリ302は、デュアルポートRAMではなく、複数個のシングルポートRAMから構成されるようにしてもよい。この場合、1つのシングルポートRAMへの読み出しと書き込みが同時に重ならないように制御を行う必要がある。複数個のシングルポートRAMを用いた場合、デュアルポートRAMを用いる場合に比べて、復号装置400の回路規模を小さくすることができる。   Further, the branch memory 300 and the branch memory 302 may be configured by a plurality of single port RAMs instead of the dual port RAMs. In this case, it is necessary to perform control so that reading and writing to one single-port RAM do not overlap at the same time. When a plurality of single-port RAMs are used, the circuit scale of the decoding device 400 can be reduced as compared with the case where a dual-port RAM is used.

また、上述した説明では、奇数フレームと偶数フレームの2つのフレームの復号処理(バリアブルノードとチェックノードの演算)を同時に行うようにしたが、復号装置400を複数個接続することにより、3つ以上のフレームの復号処理を同時に行うようにすることもできる。   In the above description, the decoding process (arithmetic operation of the variable node and the check node) of two frames of the odd number frame and the even number frame is performed at the same time. It is also possible to simultaneously perform the decoding processing of the frames.

次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。   Next, the series of processes described above can be performed by hardware or software. When a series of processing is performed by software, a program constituting the software is installed in a general-purpose computer or the like.

そこで、図21は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。   Thus, FIG. 21 shows a configuration example of an embodiment of a computer in which a program for executing the series of processes described above is installed.

プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク905やROM903に予め記録しておくことができる。   The program can be recorded in advance in a hard disk 905 or a ROM 903 as a recording medium built in the computer.

あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体911に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体911は、いわゆるパッケージソフトウエアとして提供することができる。   Alternatively, the program is stored temporarily on a removable recording medium 911 such as a flexible disk, a CD-ROM (Compact Disc Read Only Memory), an MO (Magneto Optical) disk, a DVD (Digital Versatile Disc), a magnetic disk, or a semiconductor memory. It can be stored permanently (recorded). Such a removable recording medium 911 can be provided as so-called package software.

なお、プログラムは、上述したようなリムーバブル記録媒体911からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部908で受信し、内蔵するハードディスク905にインストールすることができる。   The program is installed in the computer from the removable recording medium 911 as described above, or transferred from the download site to the computer wirelessly via a digital satellite broadcasting artificial satellite, LAN (Local Area Network), The program can be transferred to a computer via a network such as the Internet. The computer can receive the program transferred in this way by the communication unit 908 and install it in the built-in hard disk 905.

コンピュータは、CPU(Central Processing Unit)902を内蔵している。CPU902には、バス901を介して、入出力インタフェース910が接続されており、CPU902は、入出力インタフェース910を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部907が操作等されることにより指令が入力されると、それにしたがって、ROM(Read Only Memory)903に格納されているプログラムを実行する。あるいは、また、CPU902は、ハードディスク905に格納されているプログラム、衛星若しくはネットワークから転送され、通信部908で受信されてハードディスク905にインストールされたプログラム、またはドライブ909に装着されたリムーバブル記録媒体911から読み出されてハードディスク905にインストールされたプログラムを、RAM(Random Access Memory)904にロードして実行する。これにより、CPU902は、上述したフローチャートにしたがった処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU902は、その処理結果を、必要に応じて、例えば、入出力インタフェース910を介して、LCD(Liquid Crystal Display)やスピーカ等で構成される出力部906から出力、あるいは、通信部908から送信、さらには、ハードディスク905に記録等させる。   The computer includes a CPU (Central Processing Unit) 902. An input / output interface 910 is connected to the CPU 902 via a bus 901, and the CPU 902 operates an input unit 907 including a keyboard, a mouse, a microphone, and the like by the user via the input / output interface 910. When a command is input as a result, the program stored in a ROM (Read Only Memory) 903 is executed accordingly. Alternatively, the CPU 902 may be a program stored in the hard disk 905, a program transferred from a satellite or a network, received by the communication unit 908 and installed in the hard disk 905, or a removable recording medium 911 attached to the drive 909. The program read and installed in the hard disk 905 is loaded into a RAM (Random Access Memory) 904 and executed. Thereby, the CPU 902 performs processing according to the above-described flowchart or processing performed by the configuration of the above-described block diagram. Then, the CPU 902 outputs the processing result from the output unit 906 configured with an LCD (Liquid Crystal Display), a speaker, or the like via the input / output interface 910, or from the communication unit 908 as necessary. Transmission, and further recording on the hard disk 905 is performed.

ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。   Here, in this specification, the processing steps for describing a program for causing a computer to perform various types of processing do not necessarily have to be processed in time series according to the order described in the flowchart, but in parallel or individually. This includes processing to be executed (for example, parallel processing or processing by an object).

また、プログラムは、1のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。   Further, the program may be processed by one computer or may be distributedly processed by a plurality of computers. Furthermore, the program may be transferred to a remote computer and executed.

LDPC符号の検査行列Hを説明する図である。It is a figure explaining the check matrix H of an LDPC code. LDPC符号の復号手順を説明するフローチャートである。It is a flowchart explaining the decoding procedure of an LDPC code. メッセージの流れを説明する図である。It is a figure explaining the flow of a message. LDPC符号の検査行列の例を示す図である。It is a figure which shows the example of the test matrix of a LDPC code. 検査行列のタナーグラフを示す図である。It is a figure which shows the Tanner graph of a check matrix. バリアブルノードを示す図である。It is a figure which shows a variable node. チェックノードを示す図である。It is a figure which shows a check node. LDPC符号の検査行列の例を示す図である。It is a figure which shows the example of the test matrix of a LDPC code. ノード演算を1つずつ行うLDPC符号の復号装置の構成例を示すブロック図である。It is a block diagram which shows the structural example of the decoding apparatus of the LDPC code which performs node calculation one by one. メッセージを1つずつ計算するチェックノード計算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the check node calculator which calculates a message one by one. メッセージを1つずつ計算するバリアブルノード計算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the variable node calculator which calculates a message one by one. ノード演算を全て同時に行うLDPC符号の復号装置の構成例を示すブロック図である。It is a block diagram which shows the structural example of the decoding apparatus of the LDPC code which performs all node calculations simultaneously. メッセージを同時に計算するチェックノード計算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the check node calculator which calculates a message simultaneously. メッセージを同時に計算するバリアブルノード計算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the variable node calculator which calculates a message simultaneously. 本発明を適用した復号装置の一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of one Embodiment of the decoding apparatus to which this invention is applied. 図15の復号装置の復号処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the decoding apparatus of FIG. 図15のチェックノード計算器のチェックノード演算処理を説明するフローチャートである。It is a flowchart explaining the check node calculation process of the check node calculator of FIG. 図15のバリアブルノード計算器のバリアブルノード演算処理を説明するフローチャートである。It is a flowchart explaining the variable node calculation process of the variable node calculator of FIG. 図15の復号装置の復号処理を説明するタイミングチャートである。It is a timing chart explaining the decoding process of the decoding apparatus of FIG. 1つのフレームのチェックノード演算とバリアブルノード演算を交互に行う復号装置の処理を説明するタイミングチャートである。It is a timing chart explaining the process of the decoding apparatus which performs the check node calculation and variable node calculation of one frame alternately. 本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of one Embodiment of the computer to which this invention is applied.

符号の説明Explanation of symbols

300 枝用メモリ, 301 チェックノード計算器, 302 枝用メモリ, 303 バリアブルノード計算器, 400 復号装置, 401 制御部, 402 奇数フレーム受信用メモリ, 403 偶数フレーム受信用メモリ, 404 セレクタ, 901 バス, 902 CPU, 903 ROM, 904 RAM, 905 ハードディスク, 906 出力部, 907 入力部, 908 通信部, 909 ドライブ, 910 入出力インタフェース, 911 リムーバブル記録媒体   300 branch memory, 301 check node calculator, 302 branch memory, 303 variable node calculator, 400 decoding device, 401 control unit, 402 odd frame reception memory, 403 even frame reception memory, 404 selector, 901 bus, 902 CPU, 903 ROM, 904 RAM, 905 hard disk, 906 output unit, 907 input unit, 908 communication unit, 909 drive, 910 input / output interface, 911 removable recording medium

Claims (8)

LDPC(Low Density Parity Check)符号を符号長であるフレーム単位で復号する復号装置であって、
前記LDPC符号の第1のフレームと第2のフレームを交互に選択する選択手段と、
前記第1のフレームと前記第2のフレームのうちの、前記選択手段により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算手段と、
前記第1のフレームと前記第2のフレームのうちの、前記選択手段により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算手段と
を備えることを特徴とする復号装置。
A decoding device that decodes LDPC (Low Density Parity Check) codes in units of frames that are code lengths ,
Selection means for alternately selecting the first frame and the second frame of the LDPC code;
Check node calculation means for performing a check node operation for decoding the LDPC code of a frame not selected by the selection means of the first frame and the second frame;
Variable node calculation means for calculating a variable node for decoding the LDPC code of the frame selected by the selection means of the first frame and the second frame is provided. Decoding device.
請求項1に記載の復号装置であって、
前記第1のフレームと前記第2のフレームの前記LDPC符号を記憶するフレーム記憶手段と、
前記フレーム記億手段に記憶された前記第1のフレームまたは前記第2のフレームのうちの、前記選択手段により選択されたフレームの前記LDPC符号を前記バリアブルノード計算手段に供給する供給手段と
をさらに備える
ことを特徴とする復号装置。
The decoding device according to claim 1,
Frame storage means for storing the LDPC codes of the first frame and the second frame;
A supply means for supplying the LDPC code of the frame selected by the selection means to the variable node calculation means among the first frame or the second frame stored in the frame storage means; A decoding apparatus comprising:
請求項1に記載の復号装置であって、
前記チェックノード計算手段により前記第1のフレームと前記第2のフレームのうちの一方のフレームのチェックノードの演算が行われるとき、前記バリアブルノード計算手段は、他方のフレームのバリアブルノードの演算を行う
ことを特徴とする復号装置。
The decoding device according to claim 1,
When the check node calculation unit calculates the check node of one of the first frame and the second frame, the variable node calculation unit calculates the variable node of the other frame. A decoding device characterized by the above.
請求項1に記載の復号装置であって、
前記チェックノードの演算、または前記バリアブルノードの演算のうちの一方の演算に用いられる枝に対応するメッセージデータの読み出しと、他方の演算の結果得られる枝に対応するメッセージデータの書き込みとが同時に行われるメッセージ記憶手段をさらに備える
ことを特徴とする復号装置。
The decoding device according to claim 1,
Reading the message data corresponding to the branch used for one of the check node operation or the variable node operation and writing the message data corresponding to the branch obtained as a result of the other operation are performed simultaneously. And a message storage means.
請求項4に記載の復号装置であって、
前記メッセージ記憶手段は、デュアルポートRAM(Random Access Memory)である
ことを特徴とする復号装置。
The decoding device according to claim 4, wherein
The message storage means is a dual port RAM (Random Access Memory).
請求項1に記載の復号装置であって、
前記第1のフレームと前記第2のフレームは、連続する2つのフレームである
ことを特徴とする復号装置。
The decoding device according to claim 1,
The decoding device, wherein the first frame and the second frame are two consecutive frames.
LDPC(Low Density Parity Check)符号を符号長であるフレーム単位で復号する復号装置の復号方法であって、
前記LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップと、
前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップと、
前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップと
を含むことを特徴とする復号方法。
A decoding method of a decoding device that decodes LDPC (Low Density Parity Check) code in units of frames that are code lengths ,
A selection step of alternately selecting a first frame and a second frame of the LDPC code;
A check node calculation step of performing a check node operation for decoding the LDPC code of a frame that has not been selected by the processing of the selection step among the first frame and the second frame;
A variable node calculation step of performing a variable node calculation for decoding the LDPC code of the frame selected by the selection step processing of the first frame and the second frame. Decoding method.
LDPC(Low Density Parity Check)符号の符号長であるフレーム単位の復号をコンピュータに行わせるプログラムであって、
前記LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップと、
前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップと、
前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップと
を備えることを特徴とするプログラム。
A program that causes a computer to perform decoding in units of frames, which is the code length of an LDPC (Low Density Parity Check) code,
A selection step of alternately selecting a first frame and a second frame of the LDPC code;
A check node calculation step of performing a check node operation for decoding the LDPC code of a frame that has not been selected by the processing of the selection step among the first frame and the second frame;
A variable node calculation step of performing a variable node calculation for decoding the LDPC code of the frame selected by the selection step processing of the first frame and the second frame. Program.
JP2003290605A 2003-08-08 2003-08-08 Decoding device, decoding method, and program Expired - Fee Related JP4288582B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003290605A JP4288582B2 (en) 2003-08-08 2003-08-08 Decoding device, decoding method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003290605A JP4288582B2 (en) 2003-08-08 2003-08-08 Decoding device, decoding method, and program

Publications (2)

Publication Number Publication Date
JP2005064735A JP2005064735A (en) 2005-03-10
JP4288582B2 true JP4288582B2 (en) 2009-07-01

Family

ID=34368592

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003290605A Expired - Fee Related JP4288582B2 (en) 2003-08-08 2003-08-08 Decoding device, decoding method, and program

Country Status (1)

Country Link
JP (1) JP4288582B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4807063B2 (en) * 2005-12-20 2011-11-02 ソニー株式会社 Decoding device, control method, and program

Also Published As

Publication number Publication date
JP2005064735A (en) 2005-03-10

Similar Documents

Publication Publication Date Title
JP4807063B2 (en) Decoding device, control method, and program
JP4224777B2 (en) Decoding method, decoding apparatus, and program
JP4622654B2 (en) Decoding device and decoding method
JP4595650B2 (en) Decoding device and decoding method
KR101090001B1 (en) Decoding device, decoding method, and recording medium
JP4487213B2 (en) Decoding apparatus and method, and program
JP4293172B2 (en) Decoding device and decoding method
JP4487212B2 (en) Decoding device and method, transmission / reception system, receiving device and method, and program
JP2007036776A (en) Decoding apparatus and decoding method
JP2005051469A (en) Encoding device and encoding method, and program
JP4285148B2 (en) Decoding device, decoding method, and program
JP4288582B2 (en) Decoding device, decoding method, and program
JP4729964B2 (en) Decoding device and decoding method
JP4284600B2 (en) Decoding device
JP2008301152A (en) Decoder and decoding method, and program
JP4822071B2 (en) Decoding device and decoding method
JP2010028408A (en) Information processing apparatus, information processing method, and program
JP4821724B2 (en) Decoding device and decoding method
JP4780027B2 (en) Decoding device, control method, and program
JP2007081602A (en) Decoder and decoding method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090114

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090305

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090318

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees