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

Decoding device, decoding method, and program Download PDF

Info

Publication number
JP2005065065A
JP2005065065A JP2003294894A JP2003294894A JP2005065065A JP 2005065065 A JP2005065065 A JP 2005065065A JP 2003294894 A JP2003294894 A JP 2003294894A JP 2003294894 A JP2003294894 A JP 2003294894A JP 2005065065 A JP2005065065 A JP 2005065065A
Authority
JP
Japan
Prior art keywords
message
node
supplied
calculation
decoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003294894A
Other languages
Japanese (ja)
Other versions
JP4284600B2 (en
Inventor
Mineshi Yokogawa
峰志 横川
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 JP2003294894A priority Critical patent/JP4284600B2/en
Publication of JP2005065065A publication Critical patent/JP2005065065A/en
Application granted granted Critical
Publication of JP4284600B2 publication Critical patent/JP4284600B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To reduce the circuit scale of a decoding device, concerning the decoding device, a decoding method, and a program for decoding codes encoded by low density parity check codes. <P>SOLUTION: A control unit 316 selects any one of a check node calculator 313 for performing operation of check node for decoding an LDPC code and a variable node calculator 312 for performing operation of variable node for decoding the LDPC code, and supplies a selecting signal D323 indicating the selection to a switch 311 and a selector 314. A branch memory 310 stores the message D314 of the result of the variable node operation, and the message D315 of the result of the check node operation. The switch 311 supplies the message D311 stored in the branch memory 310 to the check node calculator 313 or the variable node calculator 312 on the basis of the selecting signal D323. This device is applicable to a decoding device for decoding an LDPC code. <P>COPYRIGHT: (C)2005,JPO&NCIPI

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), message v i is obtained by performing the calculation shown in Equation (1), further, on the basis of this message v i, shown in Equation (2) A message u j is obtained by performing an operation.

Figure 2005065065
・・・(1)
Figure 2005065065
... (1)

Figure 2005065065
・・・(2)
Figure 2005065065
... (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 2005065065
・・・(3)
Figure 2005065065
... (3)

Figure 2005065065
・・・(4)
Figure 2005065065
... (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)に示す演算を行うことによって最終的に出力する復号結果としてのメッセージvが求められて出力され、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 the message v as the decoding result that is finally output is obtained by performing the calculation shown in equation (5). The LDPC code decoding process ends.

Figure 2005065065
・・・(5)
Figure 2005065065
... (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 2005065065
・・・(6)
Figure 2005065065
... (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 2005065065
・・・(7)
Figure 2005065065
... (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. When all branch messages are stored in the branch memory 100, the control unit 105 supplies the control signal D106 to the check node calculator 101, 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 the division value (Πsign (| v i |) from i = 1 to i = d c −1) is output as the division 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, operation at a speed of GHz or higher is required.

また、図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. 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 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)). The data 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の復号装置では、バリアブルノードの演算結果を格納する枝用メモリ100およびチェックノードの演算結果を格納する枝用メモリ102の2つのメモリが設けられ、枝用メモリ100および枝用メモリ102は、全枝数に対応するメッセージを格納しているため、大容量のメモリを必要とし、復号装置の回路規模が大きくなるという問題があった。   In the decoding device of FIG. 9, two memories, a branch memory 100 for storing the calculation result of the variable node and a branch memory 102 for storing the calculation result of the check node, are provided, and the branch memory 100 and the branch memory 102 are provided. Since messages corresponding to the total number of branches are stored, there is a problem that a large-capacity memory is required and the circuit scale of the decoding device increases.

また、図9の復号装置では、チェックノード計算器101およびバリアブルノード計算器103の2つの計算器が設けられているため、復号装置の回路規模が大きくなってしまう。   In addition, since the decoding device of FIG. 9 includes two calculators, the check node calculator 101 and the variable node calculator 103, the circuit scale of the decoding device increases.

このように、図9の復号装置では、回路規模が大きくなってしまうため、コストが高くなったり、装置の消費電力が大きくなるといった問題があった。   As described above, the decoding device of FIG. 9 has a problem that the circuit scale becomes large, resulting in an increase in cost and an increase in power consumption of the device.

本発明は、このような状況に鑑みてなされたものであり、復号装置の回路規模を小さくすることができるようにするものである。   The present invention has been made in view of such a situation, and makes it possible to reduce the circuit scale of a decoding device.

本発明の第1の復号装置は、LDPC符号の復号のためのチェックノードの演算を、必要なメッセージを用いて行うチェックノード計算手段と、LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算手段と、チェックノードの演算、またはバリアブルノードの演算の結果得られるメッセージを記憶する記憶手段と、記憶手段に記憶されたメッセージを、チェックノード計算手段、またはバリアブルノード計算手段のうちの一方を選択して供給する供給手段とを備えることを特徴とする。   The first decoding apparatus of the present invention requires check node calculation means for performing a check node operation for decoding an LDPC code using a necessary message, and a variable node operation for decoding an LDPC code. Variable node calculation means using a message, storage means for storing a check node calculation or a message obtained as a result of variable node calculation, and a message stored in the storage means for check node calculation means or variable And a supply means for selecting and supplying one of the node calculation means.

記憶手段は、デュアルポートRAM(Random Access Memory)またはシングルポートRAM(Random Access Memory)であるようにすることができる。   The storage means may be a dual port RAM (Random Access Memory) or a single port RAM (Random Access Memory).

本発明の第1の復号方法は、チェックノード計算手段によるLDPC符号の復号のためのチェックノードの演算を、必要なメッセージ用いて行うチェックノード計算ステップと、バリアブルノード計算手段によるLDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算ステップと、チェックノードの演算、またはバリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、記憶手段に記憶されたメッセージを、チェックノード計算手段、またはバリアブルノード計算手段のうちの一方に供給する供給ステップとを含むことを特徴とする。   A first decoding method of the present invention includes a check node calculation step in which a check node calculation for decoding an LDPC code by a check node calculation unit is performed using a necessary message, and decoding of an LDPC code by a variable node calculation unit. Variable node calculation step for performing a variable node calculation for the required message, a storage step for storing a check node or a message obtained as a result of the variable node calculation in the storage unit, and storing in the storage unit And a supplying step of supplying the received message to one of the check node calculation means and the variable node calculation means.

本発明の第1のプログラムは、チェックノード計算手段によるLDPC符号の復号のためのチェックノードの演算を、必要なメッセージを用いて行うチェックノード計算ステップと、 バリアブルノード計算手段によるLDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算ステップと、チェックノードの演算、またはバリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、記憶手段に記憶されたメッセージを、チェックノード計算手段、またはバリアブルノード計算手段のうちの一方に供給する供給ステップとを備えることを特徴とする。   The first program of the present invention includes a check node calculation step in which a check node calculation for decoding an LDPC code by a check node calculation unit is performed using a necessary message, and decoding of an LDPC code by a variable node calculation unit. Variable node calculation step for performing a variable node calculation for the required message, a storage step for storing a check node or a message obtained as a result of the variable node calculation in the storage unit, and storing in the storage unit A supply step of supplying the received message to one of the check node calculation means and the variable node calculation means.

本発明の第2の復号装置は、LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方を選択する選択手段と、選択手段により選択されたチェックノードの演算、またはバリアブルノードの演算を、必要なメッセージを用いて行うノード計算手段と、ノード計算手段によるチェックノードの演算、またはバリアブルノードの演算の結果得られるメッセージを記憶する記憶手段と、
記憶手段に記憶されたメッセージを、ノード計算手段に供給する供給手段とを備えることを特徴とする。
The second decoding apparatus of the present invention includes: a selection unit that selects one of a check node calculation for decoding an LDPC code or a variable node calculation; and a check node selected by the selection unit, or A node calculation means for performing a variable node operation using a necessary message; a storage means for storing a check node operation by the node calculation means or a message obtained as a result of the variable node operation;
And a supply means for supplying the message stored in the storage means to the node calculation means.

記憶手段は、デュアルポートRAM(Random Access Memory)またはシングルポートRAM(Random Access Memory)であるようにすることができる。   The storage means may be a dual port RAM (Random Access Memory) or a single port RAM (Random Access Memory).

本発明の第2の復号方法は、LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方を選択する選択ステップと、選択ステップの処理により選択されたチェックノードの演算、またはバリアブルノードの演算を、ノード計算手段に、必要なメッセージを用いて行わせるノード計算ステップと、ノード計算手段によるチェックノードの演算、またはバリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、記憶ステップの処理により記憶されたメッセージを、ノード計算手段に供給する供給ステップとを含むことを特徴とする。   The second decoding method of the present invention includes a selection step for selecting one of a check node operation for decoding an LDPC code or a variable node operation, and an operation for a check node selected by the processing of the selection step. Or a node calculation step for causing the node calculation means to perform a variable node calculation using a necessary message, and a message obtained as a result of the check node calculation or variable node calculation by the node calculation means is stored in the storage means. And a supplying step of supplying the message stored by the processing of the storing step to the node calculating means.

本発明の第2のプログラムは、LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方を選択する選択ステップと、選択ステップの処理により選択されたチェックノードの演算、またはバリアブルノードの演算を、ノード計算手段に、必要なメッセージを用いて行わせるノード計算ステップと、ノード計算手段によるチェックノードの演算、またはバリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、記憶ステップの処理により記憶されたメッセージを、ノード計算手段に供給する供給ステップとを備えることを特徴とする。   A second program of the present invention includes a selection step for selecting one of a check node operation for decoding an LDPC code or a variable node operation, and a check node operation selected by the processing of the selection step, Alternatively, a node calculation step for causing the node calculation means to perform a variable node calculation using a necessary message and a message obtained as a result of the check node calculation or the variable node calculation by the node calculation means are stored in the storage means. A storage step and a supply step of supplying the message stored by the processing of the storage step to the node calculation means are provided.

本発明の第3の復号装置は、LDPC符号の復号のためのチェックノードの演算を、必要なメッセージを用いて行うチェックノード計算手段と、LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算手段と、チェックノード計算の結果得られるメッセージを記憶する第1の記憶手段と、バリアブルノード計算の結果得られるメッセージを記憶する第2の記憶手段とを備え、第1の記憶手段と第2の記憶手段が、1つの記憶手段に共有化されていることを特徴とする。   The third decoding apparatus according to the present invention requires check node calculation means for performing a check node operation for decoding an LDPC code using a necessary message, and a variable node operation for decoding an LDPC code. Variable node calculation means using a message, first storage means for storing a message obtained as a result of check node calculation, and second storage means for storing a message obtained as a result of variable node calculation, The first storage means and the second storage means are shared by one storage means.

さらに、チェックノード計算手段とバリアブルノード計算手段が、1つのノード計算手段に共有化されているようにすることができる。   Further, the check node calculation means and the variable node calculation means can be shared by one node calculation means.

第1の本発明においては、LDPC符号の復号のためのチェックノードの演算が、チェックノード計算手段により必要なメッセージを用いて行われ、LDPC符号の復号のためのバリアブルノードの演算が、バリアブルノード計算手段により必要なメッセージを用いて行われる。そして、チェックノードの演算、またはバリアブルノードの演算の結果得られるメッセージが記憶され、記憶されたメッセージが、チェックノード計算手段、またはバリアブルノード計算手段のうちの一方を選択して供給される。   In the first aspect of the present invention, the check node calculation for decoding the LDPC code is performed by using the necessary message by the check node calculation means, and the variable node calculation for decoding the LDPC code is performed by the variable node. This is done by using a necessary message by the calculation means. Then, a message obtained as a result of the check node calculation or the variable node calculation is stored, and the stored message is supplied by selecting one of the check node calculation means and the variable node calculation means.

第2の本発明においては、LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方が選択され、選択されたチェックノードの演算、またはバリアブルノードの演算が、ノード計算手段により、必要なメッセージを用いて行われる。そして、チェックノードの演算、またはバリアブルノードの演算の結果得られるメッセージが記憶され、記憶されたメッセージが、ノード計算手段に供給される。   In the second aspect of the present invention, one of a check node operation or a variable node operation for decoding an LDPC code is selected, and the selected check node operation or variable node operation is performed as a node calculation. By means, the necessary message is used. Then, a message obtained as a result of the check node calculation or the variable node calculation is stored, and the stored message is supplied to the node calculation means.

第3の本発明においては、LDPC符号の復号のためのチェックノードの演算が、必要なメッセージを用いて行われ、LDPC符号の復号のためのバリアブルノードの演算が、必要なメッセージを用いて行われる。そして、チェックノード計算の結果得られるメッセージが第1の記憶手段に記憶され、バリアブルノード計算の結果得られるメッセージが第2の記憶手段に記憶される。第1の記憶手段と第2の記憶手段は、1つの記憶手段に共有化されている。   In the third aspect of the present invention, a check node operation for decoding an LDPC code is performed using a necessary message, and a variable node operation for decoding an LDPC code is performed using a necessary message. Is called. Then, a message obtained as a result of the check node calculation is stored in the first storage means, and a message obtained as a result of the variable node calculation is stored in the second storage means. The first storage means and the second storage means are shared by one storage means.

本発明によれば、LDPC符号の復号装置の回路規模を小さくすることができるので、コストを削減し、装置の消費電力を削減することができる。   According to the present invention, the circuit scale of the LDPC code decoding apparatus can be reduced, so that the cost can be reduced and the power consumption of the apparatus can be reduced.

以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。   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に記載の復号装置は、LDPC(Low Density Parity Check)符号を復号する復号装置であって、前記LDPC符号の復号のためのチェックノードの演算を、必要なメッセージを用いて行うチェックノード計算手段(例えば、図15のバリアブルノード計算器312)と、前記LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算手段(例えば、図15のチェックノード計算器313)と、前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶する記憶手段(例えば、図15の枝用メモリ310)と、前記記憶手段に記憶された前記メッセージを、前記チェックノード計算手段、または前記バリアブルノード計算手段のうちの一方を選択して供給する供給手段(例えば、図15のスイッチ311)とを備えることを特徴とする。   The decoding device according to claim 1, wherein the decoding device decodes an LDPC (Low Density Parity Check) code, and performs a check node operation for decoding the LDPC code using a necessary message. A calculation means (for example, the variable node calculator 312 in FIG. 15) and a variable node calculation means (for example, a check node calculation in FIG. 15) for performing a variable node calculation for decoding the LDPC code using a necessary message. 313), storage means (for example, branch memory 310 in FIG. 15) for storing a message obtained as a result of the check node operation or the variable node operation, and the message stored in the storage means Supply means for selecting and supplying one of the check node calculation means and the variable node calculation means (example: For example, a switch 311) in FIG. 15 is provided.

請求項3に記載の復号方法は、LDPC(Low Density Parity Check)符号を復号する復号装置の復号方法であって、チェックノード計算手段(例えば、図15のチェックノード計算器313)による前記LDPC符号の復号のためのチェックノードの演算を、必要なメッセージ用いて行うチェックノード計算ステップ(例えば、図16のステップS29)と、バリアブルノード計算手段(例えば、図15のバリアブルノード計算器312)による前記LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算ステップ(例えば、図16のステップS23)と、前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、前記記憶手段に記憶された前記メッセージを、前記チェックノード計算手段、または前記バリアブルノード計算手段のうちの一方に供給する供給ステップ(例えば、図16のステップS22またはステップS28)と
を含むことを特徴とする。
The decoding method according to claim 3 is a decoding method of a decoding device for decoding an LDPC (Low Density Parity Check) code, and the LDPC code by a check node calculation means (for example, the check node calculator 313 in FIG. 15). The check node calculation step (for example, step S29 in FIG. 16) in which the calculation of the check node for decoding is performed using a necessary message, and the variable node calculation means (for example, the variable node calculator 312 in FIG. 15). A variable node calculation step (for example, step S23 in FIG. 16) in which a variable node calculation for decoding an LDPC code is performed using a necessary message, and the result of the check node calculation or the variable node calculation are obtained. Storing the stored message in the storage means, and storing the message in the storage means The message, characterized in that it comprises a said check node calculation means or supplying step of supplying to one of the variable node calculation means (e.g., step S22 or step S28 in FIG. 16).

請求項5に記載の復号装置は、LDPC(Low Density Parity Check)符号を復号する復号装置であって、前記LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方を選択する選択手段(例えば、図17の制御部356)と、前記選択手段により選択された前記チェックノードの演算、または前記バリアブルノードの演算を、必要なメッセージを用いて行うノード計算手段(例えば、図17のノード計算器354)と、前記ノード計算手段による前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶する記憶手段(例えば、図17の枝用メモリ351または352)と、前記記憶手段に記憶された前記メッセージを、前記ノード計算手段に供給する供給手段(例えば、図17のスイッチ350)とを備えることを特徴とする。   The decoding device according to claim 5 is a decoding device that decodes an LDPC (Low Density Parity Check) code, and performs one of a check node operation and a variable node operation for decoding the LDPC code. A selection means (for example, the control unit 356 in FIG. 17) to select, and a node calculation means (for example, to perform the calculation of the check node selected by the selection means or the calculation of the variable node using a necessary message) The node calculator 354) of FIG. 17 and a storage means (for example, branch memory 351 or 352 of FIG. 17) for storing a message obtained as a result of the computation of the check node by the node computation means or the computation of the variable node. And supply means for supplying the message stored in the storage means to the node calculation means (for example, in FIG. And a switch 350).

請求項7に記載の復号方法は、LDPC(Low Density Parity Check)符号を復号する復号装置の復号方法であって、前記LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方を選択する選択ステップ(例えば、図19のステップS41またはステップS47)と、前記選択ステップの処理により選択された前記チェックノードの演算、または前記バリアブルノードの演算を、ノード計算手段(例えば、図17のノード計算器354)に、必要なメッセージを用いて行わせるノード計算ステップ(例えば、図19のステップS43またはステップS49)と、前記ノード計算手段による前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶手段(例えば、図17の枝用メモリ351または352)に記憶させる記憶ステップ(例えば、図19のステップS45またはステップS51)と、前記記憶ステップの処理により記憶された前記メッセージを、前記ノード計算手段に供給する供給ステップ(例えば、図19のステップS42またはステップS48)とを含むことを特徴とする。   The decoding method according to claim 7 is a decoding method of a decoding device that decodes an LDPC (Low Density Parity Check) code, and includes a check node calculation or a variable node calculation for decoding the LDPC code. A selection step (for example, step S41 or step S47 in FIG. 19), and the calculation of the check node selected by the processing of the selection step or the calculation of the variable node is performed by a node calculation means (for example, A node calculation step (for example, step S43 or step S49 in FIG. 19) that causes the node calculator 354) in FIG. 17 to perform using a necessary message, the calculation of the check node by the node calculation means, or the variable node A message obtained as a result of the operation of the storage means (for example, the branch memory 3 in FIG. 51 or 352) and a supply step (for example, FIG. 19) for supplying the message stored by the processing of the storage step to the node calculation means. Step S42 or step S48).

請求項9に記載の復号装置は、前記LDPC符号の復号のためのチェックノードの演算を、必要なメッセージを用いて行うチェックノード計算手段(例えば、図15のチェックノード計算器312)と、前記LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算手段(例えば、図15のバリアブルノード計算器312)と、前記チェックノード計算の結果得られるメッセージを記憶する第1の記憶手段(例えば、図15の枝用メモリ310)と、前記バリアブルノード計算の結果得られるメッセージを記憶する第2の記憶手段(例えば、図15の枝用メモリ310)とを備え、前記第1の記憶手段と前記第2の記憶手段が、1つの記憶手段に共有化されている
ことを特徴とする。
The decoding device according to claim 9, check node calculation means (for example, check node calculator 312 in FIG. 15) that performs a check node operation for decoding the LDPC code using a necessary message; Variable node calculation means (for example, variable node calculator 312 in FIG. 15) that performs a variable node calculation for decoding an LDPC code using a necessary message, and a message obtained as a result of the check node calculation are stored. First storage means (for example, the branch memory 310 in FIG. 15) and second storage means (for example, the branch memory 310 in FIG. 15) for storing a message obtained as a result of the variable node calculation; The first storage unit and the second storage unit are shared by one storage unit.

請求項10に記載の復号装置は、請求項9に記載の復号装置であって、さらに、前記チェックノード計算手段(例えば、図17のノード計算器)と前記バリアブルノード計算手段(例えば、図17のノード計算器)が、1つのノード計算手段に共有化されていることを特徴とする。   The decoding device according to claim 10 is the decoding device according to claim 9, and further includes the check node calculation means (for example, the node calculator of FIG. 17) and the variable node calculation means (for example, FIG. 17). Node calculator) is shared by one node calculation means.

請求項4に記載のプログラムの各ステップの具体例も、請求項3に記載の復号方法の各ステップの発明の実施の形態における具体例と、請求項8に記載のプログラムの各ステップの具体例も、請求項7に記載の復号方法の各ステップの発明の実施の形態における具体例と、同様である。   A specific example of each step of the program according to claim 4 is also a specific example in the embodiment of the invention of each step of the decoding method according to claim 3, and a specific example of each step of the program according to claim 8. Is 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は、本発明を適用した復号装置の一実施の形態の構成例を示すブロック図である。   FIG. 15 is a block diagram showing a configuration example of an embodiment of a decoding device to which the present invention is applied.

なお、図15では、LDPC符号の1回の復号を行う復号装置300の例を示している。繰り返し復号は、復号装置300を複数個縦列に接続して用いるか、あるいは、復号装置300を繰り返し用いることにより行うことができる。   FIG. 15 illustrates an example of a decoding device 300 that performs one decoding of an LDPC code. The iterative decoding can be performed by connecting a plurality of decoding devices 300 in a column or using the decoding devices 300 repeatedly.

復号装置300は、枝用メモリ310、スイッチ311、バリアブルノード計算器312、チェックノード計算器313、セレクタ314、受信用メモリ315、および制御部316から構成される。   The decoding device 300 includes a branch memory 310, a switch 311, a variable node calculator 312, a check node calculator 313, a selector 314, a reception memory 315, and a control unit 316.

復号装置300では、バリアブルノード計算器312によるバリアブルノードの演算の結果得られる枝に対応するメッセージ(メッセージvi)、またはチェックノード計算器313によるチェックノードの演算の結果得られる枝に対応するメッセージ(メッセージuj)が、1つの枝用メモリ310に格納される。 In the decoding device 300, a message (message v i ) corresponding to a branch obtained as a result of the variable node calculation by the variable node calculator 312 or a message corresponding to a branch obtained as a result of the check node calculation by the check node calculator 313. (Message u j ) is stored in one branch memory 310.

枝用メモリ310には、バリアブルノード計算器312によるバリアブルノード演算の結果得られる枝に対応するメッセージ(データ)D314、またはチェックノード計算器313によるチェックノード演算の結果得られる枝に対応するメッセージ(データ)D315のうちの一方が、メッセージD310として、セレクタ314から供給される。枝用メモリ310は、セレクタ314から供給されたメッセージD310を格納(記憶)し、既に格納してあるメッセージD311をスイッチ311に供給する。なお、枝用モリ310は、チェックノード計算器313による最後のチェックノード演算の結果得られる枝に対応するメッセージD315を格納する場合には、そのメッセージD315を、上述した式(5)の演算を行う不図示のブロックに供給する。   In the branch memory 310, a message (data) D314 corresponding to a branch obtained as a result of the variable node calculation by the variable node calculator 312 or a message corresponding to a branch obtained as a result of the check node calculation by the check node calculator 313 ( One of the data (D315) is supplied from the selector 314 as the message D310. The branch memory 310 stores (stores) the message D310 supplied from the selector 314, and supplies the already stored message D311 to the switch 311. When the branch memory 310 stores the message D315 corresponding to the branch obtained as a result of the last check node calculation by the check node calculator 313, the message D315 is subjected to the calculation of the above-described equation (5). Supply to a block (not shown)

即ち、枝用メモリ310は、セレクタ314から供給され、バリアブルノード計算器312、またはチェックノード計算器313が演算する順番に格納してあるメッセージD310を1つずつ読み出し、メッセージD311として、スイッチ311に供給すると同時に、セレクタ314が出力するメッセージD310を受信し、枝用メモリ310の既に読み出されたメッセージ(メッセージD311)が記憶されていたアドレスに書き込む。即ち、枝用メモリ310は、スイッチ311に供給するメッセージ(データ)D311の読み出しと、セレクタ314から供給されるメッセージ(データ)D310の書き込みとを、同時に行う。   That is, the branch memory 310 reads one message D310 supplied from the selector 314 and stored in the order that the variable node calculator 312 or the check node calculator 313 operates, and sends it to the switch 311 as a message D311. At the same time, the message D310 output from the selector 314 is received and written to the address where the already read message (message D311) of the branch memory 310 is stored. That is, the branch memory 310 simultaneously reads the message (data) D311 supplied to the switch 311 and writes the message (data) D310 supplied from the selector 314.

なお、枝用メモリ310には、バリアブルノード計算器312のバリアブルノード演算、またはチェックノード計算器313のチェックノード演算により演算された枝に対応するメッセージが格納されるので、枝用メモリ310に格納されるデータ量、即ち、枝用メモリ310に必要とされる記憶容量は、メッセージの量子化ビット数と、全枝数との乗算値となる。このことは、前述の図9の枝用メモリ100および枝用メモリ102についても同様である。   The branch memory 310 stores a message corresponding to a branch calculated by the variable node calculation of the variable node calculator 312 or the check node calculation of the check node calculator 313. Therefore, the branch memory 310 stores the message. The amount of data to be processed, that is, the storage capacity required for the branch memory 310 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 and the branch memory 102 shown in FIG.

また、枝用メモリ310は、読み出しと書き込みが同時に可能な、例えば、デュアルポートRAMで構成することができる。   Further, the branch memory 310 can be configured by, for example, a dual port RAM capable of reading and writing simultaneously.

スイッチ311には、枝用メモリ310からメッセージD311が供給されるとともに、制御部316からバリアブルノード計算器312、またはチェックノード計算器313のうちの一方の選択を表す選択信号D323が供給される。スイッチ311は、選択信号D323に基づいて、メッセージD311を、バリアブルノード計算器312、またはチェックノード計算器313のうちの一方に供給する。即ち、スイッチ311は、メッセージD311を、メッセージD312としてバリアブルノード計算器312に供給するか、またはメッセージD313としてチェックノード計算器313に供給する。   The switch 311 is supplied with a message D311 from the branch memory 310 and a selection signal D323 indicating selection of one of the variable node calculator 312 or the check node calculator 313 from the control unit 316. The switch 311 supplies the message D311 to one of the variable node calculator 312 or the check node calculator 313 based on the selection signal D323. That is, the switch 311 supplies the message D311 to the variable node calculator 312 as the message D312 or to the check node calculator 313 as the message D313.

バリアブルノード計算器312には、スイッチ311から、バリアブルノード演算に必要なメッセージD312が供給される。また、バリアブルノード計算器312には、制御部316から制御信号D321が供給されるとともに、受信用メモリ315からLDPC符号の受信データD316が供給される。バリアブルノード計算器312は、制御信号D321に基づき、前述の図9のバリアブルノード計算器103と同様に、スイッチ311から供給されるメッセージD312と受信用メモリ315から供給される受信データD316を用い、式(1)にしたがって、LDPC符号の復号のためのバリアブルノード演算を行い、その演算の結果得られる枝に対応するメッセージD314(メッセージvi)を、セレクタ314に供給する。バリアブルノード計算器312の詳細構成は、図11に示したバリアブルノード計算器103と同様である。 The variable node calculator 312 is supplied from the switch 311 with a message D312 necessary for variable node calculation. The variable node calculator 312 is supplied with the control signal D321 from the control unit 316 and is also supplied with the reception data D316 of the LDPC code from the reception memory 315. Based on the control signal D321, the variable node calculator 312 uses the message D312 supplied from the switch 311 and the reception data D316 supplied from the reception memory 315, 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 D314 (message v i ) corresponding to the branch obtained as a result of the operation is supplied to the selector 314. The detailed configuration of the variable node calculator 312 is the same as that of the variable node calculator 103 shown in FIG.

チェックノード計算器313には、スイッチ311から、チェックノード演算に必要なメッセージD313が供給されるとともに、制御部316から制御信号D322が供給される。チェックノード計算器313は、制御部316から供給される制御信号D322に基づき、前述の図9のチェックノード計算器101と同様に、スイッチ311から供給されるメッセージD313を用い、式(7)にしたがって、LDPC符号の復号のためのチェックノードの演算を行い、その演算によって求められたメッセージD315(メッセージuj)を、セレクタ314に供給する。チェックノード計算器313の詳細構成は、図10に示したチェックノード計算器101と同様である。 The check node calculator 313 is supplied from the switch 311 with a message D313 necessary for the check node calculation, and also supplied with a control signal D322 from the control unit 316. Based on the control signal D322 supplied from the control unit 316, the check node calculator 313 uses the message D313 supplied from the switch 311 as in the above-described check node calculator 101 in FIG. Accordingly, the check node for decoding the LDPC code is calculated, and the message D315 (message u j ) obtained by the calculation is supplied to the selector 314. The detailed configuration of the check node calculator 313 is the same as that of the check node calculator 101 shown in FIG.

セレクタ314には、制御部316からバリアブルノード計算器312、またはチェックノード計算器313のうちの一方の選択を表す選択信号D323が供給される。また、セレクタ314には、バリアブルノード計算器312からメッセージD314が供給されるとともに、チェックノード計算器313からメッセージD315が供給される。セレクタ314は、選択信号D323に基づいて、メッセージD314、またはメッセージD315のうちの一方を選択し、メッセージD310として、枝用メモリ310に供給する。   The selector 314 is supplied with a selection signal D323 indicating selection of one of the variable node calculator 312 or the check node calculator 313 from the control unit 316. The selector 314 is supplied with the message D314 from the variable node calculator 312 and the message D315 from the check node calculator 313. The selector 314 selects either the message D314 or the message D315 based on the selection signal D323, and supplies the selected message D314 to the branch memory 310 as the message D310.

受信用メモリ315は、LDPC符号化された受信データ(LDPC符号)D316を格納(記憶)する。受信用メモリ315は、格納されている受信データD316を読み出し、バリアブルノード計算器312と、式(5)の演算を行う不図示のブロックに供給する。   The reception memory 315 stores (stores) LDPC-encoded reception data (LDPC code) D316. The reception memory 315 reads the stored reception data D316 and supplies it to the variable node calculator 312 and a block (not shown) that performs the calculation of Expression (5).

なお、受信データは、図示せぬ受信部から受信用メモリ315に供給されて記憶される。また、受信用メモリ315に格納されるデータ量、即ち、受信用メモリ315に必要とされる記憶容量は、LDPC符号の符号長と、受信データの量子化ビット数との乗算値である。   The reception data is supplied from the reception unit (not shown) to the reception memory 315 and stored. The amount of data stored in the reception memory 315, that is, the storage capacity required for the reception memory 315 is a product of the code length of the LDPC code and the number of quantization bits of the reception data.

制御部316は、制御信号D321をバリアブルノード計算器312に供給することにより、バリアブルノード計算器312を制御し、制御信号D322をチェックノード計算器313に供給することにより、チェックノード計算器313を制御する。また、制御部316は、バリアブルノード計算器312とチェックノード計算器313のうちの一方の選択を表す選択信号D323を、スイッチ311とセレクタ314に供給することにより、スイッチ311とセレクタ314を制御する。   The control unit 316 controls the variable node calculator 312 by supplying the control signal D321 to the variable node calculator 312 and supplies the control signal D322 to the check node calculator 313, thereby causing the check node calculator 313 to Control. In addition, the control unit 316 controls the switch 311 and the selector 314 by supplying a selection signal D323 indicating selection of one of the variable node calculator 312 and the check node calculator 313 to the switch 311 and the selector 314. .

図16は、図15の復号装置300の復号処理を説明するフローチャートである。この処理は、例えば、受信用メモリ315に復号すべき受信データが格納されたとき、開始される。   FIG. 16 is a flowchart for explaining the decoding process of the decoding device 300 of FIG. This process is started, for example, when reception data to be decoded is stored in the reception memory 315.

ステップS21において、制御部316は、バリアブルノード計算器312とチェックノード計算器313のうち、バリアブルノード計算器312を選択し、その選択を表す選択信号D323を生成して、スイッチ311とセレクタ314に供給する。   In step S21, the control unit 316 selects the variable node calculator 312 from among the variable node calculator 312 and the check node calculator 313, generates a selection signal D323 indicating the selection, and sends the selection signal D323 to the switch 311 and the selector 314. Supply.

ステップS21の処理後は、ステップS22に進み、スイッチ311は、ステップS21で供給された制御信号D323に基づいて、バリアブルノード計算器312とチェックノード計算器313のうち一方を選択し、その選択した一方の計算器に、枝用メモリ310から、メッセージD311として1つずつ読み出された、後述するステップS31で格納されたメッセージD310(メッセージuj)を供給する。即ち、ここでは、ステップS21で供給された制御信号D323は、バリアブルノード計算器312の選択を表しているので、スイッチ311は、バリアブルノード計算器312を選択し、その選択したバリアブルノード計算器312に、バリアブルノード演算に必要なメッセージD311を、メッセージD312として供給する。 After the process of step S21, the process proceeds to step S22, and the switch 311 selects one of the variable node calculator 312 and the check node calculator 313 based on the control signal D323 supplied in step S21, and selects the selected node. One computer is supplied with the message D310 (message u j ) stored in step S31, which will be described later, read out one by one from the branch memory 310 as the message D311. That is, here, since the control signal D323 supplied in step S21 represents selection of the variable node calculator 312, the switch 311 selects the variable node calculator 312 and selects the selected variable node calculator 312. In addition, a message D311 necessary for variable node calculation is supplied as a message D312.

なお、受信用メモリ315から供給された受信データD316に対して、まだチェックノード演算が行われておらず、枝用メモリ310にメッセージD311が格納されていない場合、バリアブルノード計算器312は、バリアブルノード演算に用いるメッセージを初期値に設定する。   Note that when the check node operation is not yet performed on the reception data D316 supplied from the reception memory 315 and the message D311 is not stored in the branch memory 310, the variable node calculator 312 Sets the message used for node operation to the initial value.

ステップS22の処理後は、ステップS23に進み、バリアブルノード計算器312は、バリアブルノード演算を行う。即ち、バリアブルノード計算器312には、受信用メモリ315から受信データD316が供給されるとともに、制御部316から制御信号D321が供給される。バリアブルノード計算器312は、制御信号D321に基づいて、受信データD316とステップS22でスイッチ311から供給されたメッセージD312とを用いて、上述した式(1)にしたがってバリアブルノードの演算を行う。   After the processing of step S22, the process proceeds to step S23, and the variable node calculator 312 performs variable node calculation. That is, the variable node calculator 312 is supplied with the reception data D316 from the reception memory 315 and the control signal D321 from the control unit 316. Based on the control signal D321, the variable node calculator 312 uses the received data D316 and the message D312 supplied from the switch 311 in step S22 to calculate the variable node according to the above-described equation (1).

即ち、制御部316がバリアブルノード計算器312に供給する制御信号D321は、前述の図11で説明した制御信号D107に対応するものであり、バリアブルノード計算器312は、制御信号D321にしたがい、スイッチ311を介して、枝用メモリ310から必要なメッセージD311(D312)を読み出すとともに、受信用メモリ315から供給された受信データD316を用いて、バリアブルノード演算を行う。   That is, the control signal D321 supplied from the control unit 316 to the variable node calculator 312 corresponds to the control signal D107 described with reference to FIG. 11, and the variable node calculator 312 switches according to the control signal D321. A necessary message D311 (D312) is read out from the branch memory 310 via 311 and a variable node calculation is performed using the reception data D316 supplied from the reception memory 315.

ステップS23の処理後は、ステップS24に進み、バリアブルノード計算器312は、バリアブルノード演算の結果得られるメッセージD314(メッセージvi)をセレクタ314に出力し、ステップS25に進む。 After the process of step S23, the process proceeds to step S24, and the variable node calculator 312 outputs the message D314 (message v i ) obtained as a result of the variable node calculation to the selector 314, and the process proceeds to step S25.

ステップS25において、セレクタ314は、ステップS21で供給された選択信号D323に基づいて、バリアブルノード計算器312とチェックノード計算器313のうちの一方を選択し、その選択した一方から出力されるメッセージを、メッセージD310として、枝用メモリ310に格納する。ここでは、選択信号D323は、バリアブルノード計算器312の選択を表しているので、セレクタ314は、ステップS24で出力されたバリアブルノード演算の結果得られるメッセージD314を、メッセージD310として枝用メモリ310に格納する。即ち、セレクタ314は、バリアブルノード計算器312とチェックノード計算器313のうち、いま、演算が行われている計算器から出力されるメッセージを枝用メモリ310に供給し、格納させる。   In step S25, the selector 314 selects one of the variable node calculator 312 and the check node calculator 313 based on the selection signal D323 supplied in step S21, and outputs a message output from the selected one. The message D310 is stored in the branch memory 310. Here, since the selection signal D323 indicates selection of the variable node calculator 312, the selector 314 outputs the message D314 obtained as a result of the variable node calculation output in step S24 to the branch memory 310 as the message D310. Store. In other words, the selector 314 supplies the branch memory 310 with the message output from the calculator currently performing the computation among the variable node calculator 312 and the check node calculator 313 and stores it.

ステップS25の処理後は、ステップS26に進み、制御部316は、バリアブルノード計算器312により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS22に戻り、上述した処理を繰り返す。   After the processing of step S25, the process proceeds to step S26, and the control unit 316 determines whether or not the message of the total number of branches has been calculated by the variable node calculator 312 and determines that the message of the total number of branches has not been calculated. If so, the process returns to step S22 and the above-described processing is repeated.

一方、ステップS26において、制御部316は、バリアブルノード計算器312により、全枝数のメッセージが演算されたと判定した場合、ステップS27に進み、制御部316は、チェックノード計算器313を選択し、ステップS21で生成したバリアブルノード計算器312の選択を表す制御信号D323を、チェックノード計算器313の選択を表す制御信号D323に変更する。   On the other hand, in step S26, when the control unit 316 determines that the message of the total number of branches has been calculated by the variable node calculator 312, the process proceeds to step S27, and the control unit 316 selects the check node calculator 313, The control signal D323 indicating selection of the variable node calculator 312 generated in step S21 is changed to a control signal D323 indicating selection of the check node calculator 313.

ステップS27の処理後は、ステップS28に進み、スイッチ311は、ステップS27で変更された制御信号D323に基づいて、バリアブルノード計算器312とチェックノード計算器313のうち一方を選択し、その選択した一方に、枝用メモリ310から、メッセージD311として1つずつ読み出された、ステップS25で格納されたメッセージD310(メッセージvi)を供給する。ここでは、ステップS27で変更された制御信号D323は、チェックノード計算器312の選択を表しているので、スイッチ311は、チェックノード計算器313を選択し、その選択したチェックノード計算器313に、チェックノード演算に必要なメッセージD311を、メッセージD313として供給する。 After the process of step S27, the process proceeds to step S28, and the switch 311 selects one of the variable node calculator 312 and the check node calculator 313 based on the control signal D323 changed in step S27, and selects the selected node. On the other hand, the message D310 (message v i ) stored in step S25, which is read one by one as the message D311 from the branch memory 310, is supplied. Here, since the control signal D323 changed in step S27 represents the selection of the check node calculator 312, the switch 311 selects the check node calculator 313, and the selected check node calculator 313 A message D311 necessary for the check node calculation is supplied as a message D313.

ステップS28の処理後は、ステップS29に進み、チェックノード計算器313は、チェックノード演算を行う。即ち、チェックノード計算器313には、制御部316から制御信号D322が供給される。チェックノード計算器313は、制御信号D322に基づき、メッセージD313を用いて、上述した式(7)にしたがって、チェックノード演算を行う。   After the process of step S28, the process proceeds to step S29, and the check node calculator 313 performs a check node calculation. That is, the control signal D322 is supplied from the control unit 316 to the check node calculator 313. Based on the control signal D322, the check node calculator 313 performs a check node calculation according to the above-described equation (7) using the message D313.

即ち、制御部316がチェックノード計算器313に供給する制御信号D322は、前述の図10で説明した制御信号D106に対応するものであり、チェックノード計算器313は、制御信号D322にしたがい、スイッチ311を介して、枝用メモリ310から必要なメッセージD313を読み出しながらチェックノードの演算を行う。   That is, the control signal D322 supplied from the control unit 316 to the check node calculator 313 corresponds to the control signal D106 described with reference to FIG. 10, and the check node calculator 313 switches according to the control signal D322. The check node is calculated while reading out the necessary message D313 from the branch memory 310 via 311.

ステップS29の処理後は、ステップS30に進み、チェックノード計算器313は、チェックノードの演算の結果得られるメッセージD315(メッセージuj)をセレクタ314に出力して、ステップS31に進む。 After the processing of step S29, the process proceeds to step S30, where the check node calculator 313 outputs a message D315 (message u j ) obtained as a result of the check node calculation to the selector 314, and proceeds to step S31.

ステップS31において、セレクタ314は、ステップS27で変更された選択信号D323に基づいて、バリアブルノード計算器312とチェックノード計算器313のうち一方を選択し、その選択した一方から出力されるメッセージを、メッセージD310として枝用メモリ310に供給し、格納させる。ここでは、選択信号D323は、チェックノード計算器313の選択を表しているので、セレクタ314は、ステップS30で出力されたチェックノード演算の結果得られるメッセージD315を、メッセージD310として枝用メモリ310に格納する。即ち、セレクタ314は、バリアブルノード計算器312とチェックノード計算器313のうち、いま、演算が行われている計算器から出力されるメッセージを枝用メモリ310に供給し、格納させる。   In step S31, the selector 314 selects one of the variable node calculator 312 and the check node calculator 313 based on the selection signal D323 changed in step S27, and outputs a message output from the selected one. The message D310 is supplied to the branch memory 310 and stored. Here, since the selection signal D323 indicates the selection of the check node calculator 313, the selector 314 outputs the message D315 obtained as a result of the check node calculation output in step S30 to the branch memory 310 as the message D310. Store. In other words, the selector 314 supplies the branch memory 310 with the message output from the calculator currently performing the computation among the variable node calculator 312 and the check node calculator 313 and stores it.

ステップS31の処理後は、ステップS32に進み、制御部316は、チェックノード計算器313により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS28に戻り、上述した処理を繰り返す。   After the processing of step S31, the process proceeds to step S32, and the control unit 316 determines whether or not the message of all branches is calculated by the check node calculator 313, and determines that the message of all branches is not calculated. If so, the process returns to step S28 and the above-described processing is repeated.

一方、ステップS32において、制御部316は、チェックノード計算器312により、全枝数のメッセージが演算されたと判定した場合、処理を終了する。   On the other hand, when the check node calculator 312 determines that the message of the total number of branches has been calculated in step S32, the control unit 316 ends the process.

なお、復号装置300は、復号回数だけ図16の復号処理を繰り返し行ない、枝用メモリ310に、最後のチェックノード演算の結果得られるメッセージD315(メッセージuj)が格納された場合、枝用メモリ310は、そのメッセージD315を上述した式(5)の演算を行う不図示のブロックに供給する。不図示のブロックには、さらに、受信用メモリ315から受信データD316が供給され、不図示のブロックは、メッセージD315と受信データD316を用いて、式(5)の演算を行い、その演算結果を最終的な復号結果として出力する。 Note that the decoding device 300 repeats the decoding process of FIG. 16 as many times as the number of decoding, and when the message D315 (message u j ) obtained as a result of the last check node operation is stored in the branch memory 310, the branch memory 310 supplies the message D315 to a block (not shown) that performs the calculation of the above-described equation (5). The block (not shown) is further supplied with reception data D316 from the reception memory 315. The block (not shown) uses the message D315 and the reception data D316 to perform the calculation of Expression (5), and the calculation result is obtained. Output as the final decoding result.

上述したように、枝用メモリ310には、バリアブルノード計算器312とチェックノード計算器313のうち、いま、演算が行われている計算器から出力されるメッセージが格納される。即ち、バリアブルノード演算は、チェックノード演算の結果であるメッセージujを用いて行われ、チェックノード演算は、バリアブルノード演算の結果であるメッセージviを用いて行われるため、復号装置300では、バリアブルノード演算とチェックノード演算が交互に行われる。従って、バリアブルノード計算器312とチェックノード計算器313のうち、いま、演算が行われている計算器から出力されるメッセージを格納することにより、バリアブルノード演算の結果を格納する枝用メモリとチェックノード演算の結果を格納する枝用メモリを共有化して1つのメモリにすることができ、バリアブルノード演算の結果得られるメッセージを格納する枝用メモリ100とチェックノード演算の結果得られるメッセージを格納する枝用メモリ102とを別々に有する図9の復号装置に比べて、復号装置300の回路規模を小さくすることができる。 As described above, the branch memory 310 stores a message output from the calculator currently performing the computation among the variable node calculator 312 and the check node calculator 313. That is, the variable node operation is performed using the message u j that is the result of the check node operation, and the check node operation is performed using the message v i that is the result of the variable node operation. Variable node calculation and check node calculation are performed alternately. Therefore, by storing the message output from the calculator currently performing the calculation among the variable node calculator 312 and the check node calculator 313, the branch memory storing the result of the variable node calculation and the check are stored. The branch memory for storing the result of the node operation can be shared into one memory, and the branch memory 100 for storing the message obtained as a result of the variable node operation and the message obtained as a result of the check node operation are stored. The circuit scale of the decoding device 300 can be reduced as compared with the decoding device of FIG. 9 having the branch memory 102 separately.

なお、枝用メモリ310は、デュアルポートRAMではなく、複数個のシングルポートRAMから構成されるようにしてもよい。この場合、1つのシングルポートRAMへの読み出しと書き込みが同時に重ならないように制御を行う必要がある。複数個のシングルポートRAMを用いた場合、デュアルポートRAMを用いる場合に比べて、復号装置300の回路規模を小さくすることができる。   The branch memory 310 may be composed of 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 300 can be reduced as compared with the case where a dual-port RAM is used.

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

なお、図17では、LDPC符号の1回の復号を行う復号装置340の例を示している。繰り返し復号は、復号装置340を複数個縦列に接続して用いるか、あるいは、復号装置340を繰り返し用いることにより行うことができる。   Note that FIG. 17 illustrates an example of a decoding device 340 that performs one decoding of an LDPC code. The iterative decoding can be performed by connecting a plurality of decoding devices 340 in cascade or by repeatedly using the decoding device 340.

復号装置340は、スイッチ350、枝用メモリ351、枝用メモリ352、セレクタ353、ノード計算器354、受信用メモリ355、および制御部356から構成される。   The decoding device 340 includes a switch 350, a branch memory 351, a branch memory 352, a selector 353, a node calculator 354, a reception memory 355, and a control unit 356.

復号装置340では、ノード計算器354がバリアブルノード演算とチェックノード演算を交互に行い、バリアブルノード演算の結果得られるメッセージ(メッセージvi)とチェックノード演算の結果得られるメッセージ(メッセージuj)が、枝用メモリ351または枝用メモリ352に格納される。即ち、バリアブルノード計算器とチェックノード計算器が共有化され、1つのノード計算器354で、バリアブルノード演算とチェックノード演算の両方が行われる。 In the decoding device 340, the node calculator 354 alternately performs a variable node calculation and a check node calculation, and a message (message v i ) obtained as a result of the variable node calculation and a message (message u j ) obtained as a result of the check node calculation are displayed. , And stored in the branch memory 351 or the branch memory 352. That is, the variable node calculator and the check node calculator are shared, and one variable calculator 354 performs both the variable node calculation and the check node calculation.

スイッチ350には、ノード計算器354からメッセージD350が供給されるとともに、制御部356から、メッセージD350を格納する(書き込む)メモリとして、枝用メモリ351または枝用メモリ352のうち一方の選択を表す選択信号D363が供給される。スイッチ350は、選択信号D363に基づいて、ノード計算器354から供給されるメッセージD350を、枝用メモリ351にメッセージD351として供給するか、あるいは枝用メモリ352にメッセージD352として供給する。   The switch 350 is supplied with a message D350 from the node calculator 354, and represents selection of either the branch memory 351 or the branch memory 352 as a memory for storing (writing) the message D350 from the control unit 356. A selection signal D363 is supplied. Based on the selection signal D363, the switch 350 supplies the message D350 supplied from the node calculator 354 to the branch memory 351 as the message D351 or to the branch memory 352 as the message D352.

枝用メモリ351には、例えば、ノード計算器312によるバリアブルノード演算の結果得られる枝に対応するメッセージD350が、メッセージD351として、スイッチ350から供給される。枝用メモリ351は、メッセージD351を、チェックノード演算を行う順番に格納していく。そして、枝用メモリ351は、格納してある順番どおりに、メッセージD351を、メッセージD353として、セレクタ353に供給する。   For example, a message D350 corresponding to a branch obtained as a result of the variable node calculation by the node calculator 312 is supplied from the switch 350 to the branch memory 351 as a message D351. The branch memory 351 stores the message D351 in the order in which the check node calculation is performed. Then, the branch memory 351 supplies the message D351 to the selector 353 as the message D353 in the stored order.

枝用メモリ352には、例えば、ノード計算器354によるチェックノード演算の結果得られる枝に対応するメッセージD350が、メッセージD352として、スイッチ350から供給される。枝用メモリ352は、メッセージD352を、バリアブルノード演算を行う順番に格納していく。そして、枝用メモリ352は、格納してある順番どおりに、メッセージD352を、メッセージD354としてセレクタ353に供給する。なお、枝用メモリ352は、ノード計算器354による最後のチェックノード演算の結果得られるメッセージD350を格納する場合には、そのメッセージD350を、上述した式(5)の演算を行う不図示のブロックに供給する。   For example, a message D350 corresponding to a branch obtained as a result of the check node calculation by the node calculator 354 is supplied from the switch 350 to the branch memory 352 as a message D352. The branch memory 352 stores the message D352 in the order in which the variable node calculation is performed. Then, the branch memory 352 supplies the message D352 to the selector 353 as the message D354 in the stored order. When the branch memory 352 stores a message D350 obtained as a result of the last check node calculation by the node calculator 354, the message D350 is a block (not shown) that performs the calculation of the above-described equation (5). To supply.

なお、枝用メモリ351には、ノード計算器354のバリアブルノード演算の結果得られた枝に対応するメッセージが格納され、枝用メモリ352には、ノード計算器354のチェックノード演算の結果得られた枝に対応するメッセージが格納されるので、枝用メモリ351および枝用メモリ352に格納されるデータ量、即ち、枝用メモリ351および枝用メモリ352に必要とされる記憶容量は、メッセージの量子化ビット数と、全枝数との乗算値となる。   The branch memory 351 stores a message corresponding to the branch obtained as a result of the variable node calculation of the node calculator 354, and the branch memory 352 obtains the result of the check node calculation of the node calculator 354. Since the messages corresponding to the branches are stored, the amount of data stored in the branch memory 351 and the branch memory 352, that is, the storage capacity required for the branch memory 351 and the branch memory 352 is determined as follows. This is a product of the number of quantization bits and the number of all branches.

セレクタ353には、枝用メモリ351からメッセージD353が供給されるとともに、枝用メモリ352からメッセージD354が供給される。また、セレクタ353には、制御部356から、ノード計算器354に供給するメッセージを読み出すメモリとして、枝用メモリ351または枝用メモリ352のうち一方の選択を表す選択信号D364が供給される。セレクタ353は、選択信号D364に基づいて、枝用メモリ351と枝用メモリ352のうち一方を選択し、その選択した枝用メモリから格納されるメッセージ(メッセージD353またはメッセージD354)を、メッセージD355として、ノード計算器354に供給する。   The selector 353 is supplied with the message D353 from the branch memory 351 and the message D354 from the branch memory 352. The selector 353 is supplied with a selection signal D364 indicating selection of one of the branch memory 351 and the branch memory 352 as a memory for reading a message to be supplied from the control unit 356 to the node calculator 354. The selector 353 selects one of the branch memory 351 and the branch memory 352 based on the selection signal D364, and a message (message D353 or message D354) stored from the selected branch memory is used as the message D355. To the node calculator 354.

ノード計算器354には、セレクタ353からメッセージD355が供給されるとともに、受信用メモリ355から受信データD356が供給される。また、ノード計算器354には、制御部356から、いま、ノード計算器354で行う演算として、バリアブルノード演算とチェックノード演算のうち一方の選択を表す選択信号D361と、ノード演算を制御する制御信号D362が供給される。ノード計算器354は、選択信号D361に基づき、バリアブルノード演算とチェックノード演算のうち、制御部356により選択された方の演算を行う。即ち、ノード計算器354は、制御信号D362に基づき、セレクタ353から供給されるメッセージD355と受信用メモリ355から供給される受信データD356を用い、式(1)にしたがって、LDPC符号の復号のためのバリアブルノード演算を行うか、あるいは、セレクタ353から供給されるメッセージD355を用い、式(7)にしたがって、LDPC符号の復号のためのチェックノードの演算を行う。   The node calculator 354 is supplied with the message D355 from the selector 353 and the reception data D356 from the reception memory 355. Further, the node calculator 354 receives from the control unit 356 a selection signal D361 representing one of a variable node calculation and a check node calculation as a calculation performed by the node calculator 354, and a control for controlling the node calculation. Signal D362 is provided. Based on the selection signal D361, the node calculator 354 performs the operation selected by the control unit 356 among the variable node calculation and the check node calculation. That is, the node calculator 354 uses the message D355 supplied from the selector 353 and the reception data D356 supplied from the reception memory 355 based on the control signal D362 to decode the LDPC code according to the equation (1). Or the check node for decoding the LDPC code is performed according to Expression (7) using the message D355 supplied from the selector 353.

そして、ノード計算器354は、バリアブルノード演算またはチェックノード演算の結果得られる枝に対応するメッセージ(メッセージviまたはメッセージuj)を、メッセージD350として、スイッチ350に供給する。 Then, the node calculator 354 supplies a message (message v i or message u j ) corresponding to a branch obtained as a result of the variable node calculation or the check node calculation to the switch 350 as a message D350.

受信用メモリ355は、LDPC符号化された受信データ(LDPC符号)D356を格納(記憶)する。受信用メモリ355は、格納されている受信データD356を読み出し、ノード計算器354と式(5)の演算を行う不図示のブロックに供給する。   The reception memory 355 stores (stores) LDPC-encoded reception data (LDPC code) D356. The reception memory 355 reads the stored reception data D356 and supplies it to the node calculator 354 and a block (not shown) that performs the calculation of Expression (5).

なお、受信データは、図示せぬ受信部から受信用メモリ355に供給されて記憶される。また、受信用メモリ355に格納されるデータ量、即ち、受信用メモリ355に必要とされる記憶容量は、LDPC符号の符号長と、受信データの量子化ビット数との乗算値である。   The reception data is supplied to and stored in the reception memory 355 from a reception unit (not shown). The amount of data stored in the reception memory 355, that is, the storage capacity required for the reception memory 355 is a product of the code length of the LDPC code and the number of quantization bits of the reception data.

制御部356は、いま、ノード計算器354で行う演算として、バリアブルノード演算とチェックノード演算のうち一方を選択し、その選択を表す選択信号D361と、制御信号D362をノード計算器354に供給することにより、ノード計算器354を制御する。また、制御部356は、枝用メモリ351と枝用メモリ352のうち一方を読み出すメモリとして選択し、他方を書き込むメモリとして選択する。そして、制御部356は、メッセージD350を格納する(書き込む)メモリとして、枝用メモリ351と枝用メモリ352のうちの一方の選択を表す選択信号D363をスイッチ350に供給することにより、スイッチ350を制御するとともに、ノード計算器354に供給するメッセージD355を読み出すメモリとして、他方の選択を表す選択信号D364をセレクタ353に供給することにより、セレクタ353を制御する。   The control unit 356 selects one of the variable node calculation and the check node calculation as the calculation performed by the node calculator 354 and supplies the selection signal D361 indicating the selection and the control signal D362 to the node calculator 354. Thus, the node calculator 354 is controlled. In addition, the control unit 356 selects one of the branch memory 351 and the branch memory 352 as a memory for reading, and selects the other as a memory for writing. Then, the control unit 356 supplies a selection signal D363 indicating selection of one of the branch memory 351 and the branch memory 352 to the switch 350 as a memory for storing (writing) the message D350. The selector 353 is controlled by supplying a selection signal D364 representing the other selection to the selector 353 as a memory for reading the message D355 supplied to the node calculator 354.

図18は、図17のノード計算器354の構成例を示すブロック図である。   FIG. 18 is a block diagram illustrating a configuration example of the node calculator 354 of FIG.

図18のノード計算器354は、チェックノード演算またはバリアブルノード演算を行う。   The node calculator 354 in FIG. 18 performs a check node operation or a variable node operation.

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

図18のノード計算器354は、制御部356から供給される、例えば、1ビットの制御信号D362と1ビットの選択信号D361に基づき、枝用メモリ351または枝用メモリ352から1つずつ読み出され、セレクタ353を介して供給されるチェックノード演算に必要なメッセージD355を用いて、式(7)にしたがってチェックノード演算を行うか、あるいはバリアブルノード演算に必要なメッセージD355と受信用メモリ355から供給される受信データD356を用いて、式(1)にしたがってバリアブルノード演算を行う。   The node calculator 354 of FIG. 18 reads from the branch memory 351 or the branch memory 352 one by one based on, for example, the 1-bit control signal D362 and the 1-bit selection signal D361 supplied from the control unit 356. Then, using the message D355 required for the check node calculation supplied via the selector 353, the check node calculation is performed according to the equation (7), or the message D355 required for the variable node calculation and the reception memory 355 are used. A variable node calculation is performed according to the equation (1) using the supplied reception data D356.

即ち、ノード計算器354では、検査行列の各列に対応するバリアブルノードからの6ビットのメッセージ、または検査行列の各行に対応するチェックノードからの6ビットのメッセージがメッセージD355として1つずつ読み込まれると、その下位5ビットである絶対値D402がLUT401に、その最上位ビットである符号ビットD401がEXOR回路411とFIFOメモリ415にそれぞれ供給される。また、ノード計算器354では、1つずつ読み込まれた6ビットのメッセージD355がセレクタ402に供給される。   That is, in the node calculator 354, a 6-bit message from the variable node corresponding to each column of the check matrix or a 6-bit message from the check node corresponding to each row of the check matrix is read one by one as the message D355. Then, the absolute value D402 which is the lower 5 bits is supplied to the LUT 401, and the sign bit D401 which is the most significant bit is supplied to the EXOR circuit 411 and the FIFO memory 415, respectively. In the node calculator 354, a 6-bit message D355 read one by one is supplied to the selector 402.

さらに、ノード計算器354には、制御部356から制御信号D362が供給され、その制御信号D362は、セレクタ405とセレクタ413に供給される。また、ノード計算器354には、制御部356から、チェックノード演算またはバリアブルノード演算のうち、いま、ノード計算器354で行う演算として一方の選択を表す選択信号D361が供給され、その選択信号D361がセレクタ402とセレクタ419に供給される。さらに、ノード計算器354には、受信用メモリ355から受信データD356が供給され、その受信データD356が加算器417に供給される。   Further, the control signal D362 is supplied from the control unit 356 to the node calculator 354, and the control signal D362 is supplied to the selector 405 and the selector 413. The node calculator 354 is supplied from the control unit 356 with a selection signal D361 representing one of the check node calculation and variable node calculation as the calculation performed by the node calculator 354, and the selection signal D361. Is supplied to the selector 402 and the selector 419. Further, the reception data D356 is supplied from the reception memory 355 to the node calculator 354, and the reception data D356 is supplied to the adder 417.

まず最初に、検査行列の各行に対応するチェックノードからの6ビットのメッセージ(メッセージuj)が、メッセージD355として1つずつ読み込まれた場合のノード計算器354の処理について説明する。このとき、制御部356は、チェックノード演算またはバリアブルノード演算のうちの、バリアブルノード演算を、いま、ノード計算器354で行う演算として選択し、枝用メモリ351または枝用メモリ352のうち、チェックノードからの枝に対応するメッセージが格納された枝用メモリ352を、メッセージを読み出すメモリとして選択する制御信号D364をセレクタ353に供給する。また、制御部356は、いま、ノード計算器354で行う演算として、バリアブルノード演算を選択しているので、ノード演算を制御するための制御信号D362の値を、ノード計算器354が1列に亘るメッセージを読み込む毎に、“0”から“1”に変更する。さらに、制御部356は、バリアブルノード演算の選択を表す制御信号D361を、ノード計算器354に供給する。 First, the processing of the node calculator 354 when a 6-bit message (message u j ) from the check node corresponding to each row of the check matrix is read one by one as the message D355 will be described. At this time, the control unit 356 selects the variable node operation of the check node operation or the variable node operation as the operation to be performed by the node calculator 354 and checks the branch memory 351 or the branch memory 352. The selector 353 is supplied with a control signal D364 that selects the branch memory 352 storing a message corresponding to the branch from the node as a memory for reading the message. Further, since the control unit 356 has selected the variable node calculation as the calculation performed by the node calculator 354, the value of the control signal D362 for controlling the node calculation is displayed in one column by the node calculator 354. Each time a message is read, it is changed from “0” to “1”. Furthermore, the control unit 356 supplies a control signal D361 indicating selection of variable node calculation to the node calculator 354.

このように、制御部356により、いま、ノード計算器354で行う演算として、バリアブルノード演算が選択された場合、ノード計算器354は、制御部356から供給される、例えば、1ビットの制御信号D362に基づき、枝用メモリ351または枝用メモリ352から1つずつ読み込まれるメッセージD355を用いて、式(1)にしたがって演算を行う。   Thus, when the variable node operation is selected by the control unit 356 as the operation to be performed by the node calculator 354, the node calculator 354 is supplied from the control unit 356, for example, a 1-bit control signal. Based on D362, using the message D355 read one by one from the branch memory 351 or the branch memory 352, the calculation is performed according to Expression (1).

なお、ノード計算器354がバリアブルノード演算を行う場合、制御部356から供給される制御信号D361に基づいて、セレクタ402が、メッセージD355と値D404のうち、値D355を選択し、セレクタ419が、値D421と値D419のうち、値D421を選択する。従って、以下の説明では、セレクタ402とセレクタ419により選択される値の演算についてのみ説明する。   When the node calculator 354 performs variable node calculation, the selector 402 selects the value D355 from the message D355 and the value D404 based on the control signal D361 supplied from the control unit 356, and the selector 419 A value D421 is selected from the values D421 and D419. Therefore, in the following description, only calculation of values selected by the selector 402 and the selector 419 will be described.

ノード計算器354では、検査行列の各行に対応するチェックノードからの6ビットのメッセージD355(メッセージuj)が1つずつ読み込まれ、6ビットのメッセージD355は、セレクタ402を介して、値D405として加算器403とFIFOメモリ408に供給される。 The node calculator 354 reads one 6-bit message D355 (message u j ) from the check node corresponding to each row of the parity check matrix, and the 6-bit message D355 is passed through the selector 402 as a value D405. The data is supplied to the adder 403 and the FIFO memory 408.

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

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

制御信号D362が「1」の場合、セレクタ405は、レジスタ404に格納されている値、即ち、検査行列の1列に亘る全ての枝からのメッセージD355(メッセージuj)が積算された9ビットの値D406(j=1からj=dvまでのΣuj)を選択し、値D407として、レジスタ406に出力して格納させる。レジスタ406は、格納している値D407を、9ビットの値D408として、セレクタ405と加算器407に供給する。 When the control signal D362 is “1”, the selector 405 adds the value stored in the register 404, that is, 9 bits obtained by integrating the message D355 (message u j ) from all branches over one column of the check matrix. select the value D406 (? uj j from j = 1 to j = d v), as a value D407, and stores and outputs to the register 406. The register 406 supplies the stored value D407 to the selector 405 and the adder 407 as a 9-bit value D408.

制御信号D362が「0」の場合、セレクタ405は、レジスタ406から供給された値D408を選択し、レジスタ406に出力して再格納させる。即ち、検査行列の1列に亘る全ての枝からのメッセージD355(メッセージuj)が積算されるまで、レジスタ406は、前回積算されたujを、セレクタ405と加算器407に供給する。 When the control signal D362 is “0”, the selector 405 selects the value D408 supplied from the register 406, outputs it to the register 406, and stores it again. That is, the register 406 supplies u j accumulated last time to the selector 405 and the adder 407 until the message D355 (message u j ) from all the branches over one column of the check matrix is accumulated.

一方、FIFOメモリ408は、レジスタ406から新たな値D408(j=1からj=dvまでのΣuj)が出力されるまでの間、セレクタ402が出力した6ビットの値D405(uj)を遅延し、6ビットの値D409として減算器407に供給する。減算器407は、レジスタ406から供給された値D408から、FIFOメモリ408から供給された値D409を減算し、その減算結果を、9ビットの減算値D410として、クリップ回路409と加算器417に供給する。即ち、減算器407は、検査行列の1列に亘る全ての枝からのメッセージD355(メッセージuj)の積算値から、求めたい枝からのメッセージD355(メッセージuj)を減算して、その減算値(j=1からj=dv−1までのΣuj)を減算値D410として、加算器417に供給する。 On the other hand, FIFO memories 408, between (from j = 1? Uj j to j = d v) a new value D408 from the register 406 until the output of the 6-bit selector 402 outputs a value D405 (u j) Is supplied to the subtractor 407 as a 6-bit value D409. The subtractor 407 subtracts the value D409 supplied from the FIFO memory 408 from the value D408 supplied from the register 406, and supplies the subtraction result to the clip circuit 409 and the adder 417 as a 9-bit subtraction value D410. To do. That is, the subtractor 407, from the integrated value of message D355 (message u j) from all of the branches across one row of the check matrix, by subtracting the messages from a desired branch D355 (message u j), the subtraction The value (Σu j from j = 1 to j = d v −1) is supplied to the adder 417 as the subtraction value D410.

加算器417では、減算器407から9ビットの減算値D410が供給されるとともに、受信用メモリ355から60ビットの受信値D356が供給される。加算器417は、減算値D410(j=1からj=dv−1までのΣuj)に、受信用メモリ355から供給された受信データD356(受信値u0i)を加算して、その結果得られる90ビットの値D420をクリップ回路418に供給する。 In the adder 417, a 9-bit subtraction value D410 is supplied from the subtractor 407, and a 60-bit reception value D356 is supplied from the reception memory 355. The adder 417 adds the reception data D356 (reception value u 0i ) supplied from the reception memory 355 to the subtraction value D410 (Σu j from j = 1 to j = d v −1), and the result The obtained 90-bit value D420 is supplied to the clip circuit 418.

クリップ回路418は、9ビットの値D420をクリップし、その下位6ビットの値D421(メッセージvi)をセレクタ419を介して、メッセージD350として出力する。 The clip circuit 418 clips the 9-bit value D420 and outputs the lower 6-bit value D421 (message v i ) as the message D350 via the selector 419.

以上のように、制御部356により、ノード計算器354で行う演算として、バリアブルノード演算が選択された場合、ノード計算器354では、式(1)の演算が行われ、メッセージviが求められる。 As described above, when the variable node operation is selected as the operation performed by the node calculator 354 by the control unit 356, the node calculator 354 performs the operation of Expression (1) and obtains the message v i. .

次に、検査行列の各列に対応するバリアブルノードからの6ビットのメッセージ(メッセージvi)が、メッセージD355として1つずつ読み込まれた場合のノード計算器354の処理について説明する。このとき、制御部356は、チェックノード演算またはバリアブルノード演算のうちの、チェックノード演算を、いま、ノード計算器354で行う演算として選択し、枝用メモリ351または枝用メモリ352のうち、バリアブルノードからの枝に対応するメッセージが格納された枝用メモリ351を、メッセージを読み出すメモリとして選択する制御信号D364をセレクタ353に供給する。また、制御部356は、いま、ノード計算器354で行う演算として、チェックノード演算を選択しているので、ノード演算を制御するための制御信号D362の値を、ノード計算器354が1行に亘るメッセージを読み込む毎に、“0”から“1”に変更する。さらに、制御部356は、チェックノード演算の選択を表す制御信号D361を、ノード計算器354に供給する。 Next, the processing of the node calculator 354 when a 6-bit message (message v i ) from the variable node corresponding to each column of the check matrix is read one by one as the message D355 will be described. At this time, the control unit 356 selects the check node operation of the check node operation or the variable node operation as the operation to be performed by the node calculator 354, and selects the variable memory from the branch memory 351 or the branch memory 352. The selector 353 is supplied with a control signal D364 for selecting the branch memory 351 storing a message corresponding to the branch from the node as a memory for reading the message. Further, since the control unit 356 has selected the check node calculation as the calculation performed by the node calculator 354, the value of the control signal D362 for controlling the node calculation is set to one line by the node calculator 354. Each time a message is read, it is changed from “0” to “1”. Further, the control unit 356 supplies a control signal D361 indicating selection of the check node calculation to the node calculator 354.

このように、制御部356により、いま、ノード計算器354で行う演算として、チェックノード演算が選択された場合、ノード計算器354は、制御部356から供給される、例えば、1ビットの制御信号D362に基づき、枝用メモリ351または枝用メモリ352から1つずつ読み込まれるメッセージD355を用いて、式(7)にしたがって演算を行う。   As described above, when the check node calculation is selected by the control unit 356 as the calculation performed by the node calculator 354, the node calculator 354 supplies the control signal 356, for example, a 1-bit control signal. Based on D362, using the message D355 read one by one from the branch memory 351 or the branch memory 352, the calculation is performed according to Expression (7).

なお、ノード計算器354がチェックノード演算を行う場合、制御部356から供給される制御信号D361に基づいて、セレクタ402が、メッセージD355と値D404のうち、値D404を選択し、セレクタ419が、値D421と値D419のうち、値D419を選択する。従って、以下の説明では、セレクタ402とセレクタ419により選択される値の演算についてのみ説明する。   When the node calculator 354 performs the check node calculation, the selector 402 selects the value D404 from the message D355 and the value D404 based on the control signal D361 supplied from the control unit 356, and the selector 419 The value D419 is selected from the value D421 and the value D419. Therefore, in the following description, only calculation of values selected by the selector 402 and the selector 419 will be described.

ノード計算器354では、検査行列の各列に対応するバリアブルノードからの6ビットのメッセージD355(メッセージvi)が1つずつ読み込まれ、その下位5ビットである絶対値D402(|vi|)がLUT401に、その最上位ビットである符号ビットD401(sign(vi))がEXOR回路411とFIFOメモリ415にそれぞれ供給される。 The node calculator 354 reads one 6-bit message D355 (message v i ) from the variable node corresponding to each column of the parity check matrix one by one, and the absolute value D402 (| v i |) which is the lower 5 bits thereof. Is supplied to the LUT 401 and the sign bit D401 (sign (v i )) which is the most significant bit is supplied to the EXOR circuit 411 and the FIFO memory 415, respectively.

LUT401は、絶対値D402(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D403(φ(|vi|))を読み出し、出力する。そして、読み出された演算結果D403において、1ビットの値である“0”が最上位ビットに付加されることにより、ビット拡張が行われ、そのビット拡張の結果である6ビットの値D404(φ(|vi|))が、セレクタ402を介して、6ビットの値D405として加算器403とFIFOメモリ408に供給される。 The LUT 401 reads the 5-bit calculation result D403 (φ (| v i |)) obtained by performing the calculation of φ (| v i |) in the expression (7) with respect to the absolute value D402 (| v i |). ,Output. Then, in the read calculation result D403, 1-bit value “0” is added to the most significant bit to perform bit expansion, and the 6-bit value D404 ( φ (| v i |)) is supplied to the adder 403 and the FIFO memory 408 through the selector 402 as a 6-bit value D405.

加算器403は、値D405(φ(|vi|))とレジスタ404に格納されている9ビットの値D406とを加算することにより、値D405を積算し、その結果得られる9ビットの積算値をレジスタ404に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD355の絶対値D402(|vi|)に対する値D405が積算された場合、レジスタ404はリセットされる。 The adder 403 adds the value D405 (φ (| v i |)) and the 9-bit value D406 stored in the register 404, thereby adding up the value D405, and the resulting 9-bit integration. The value is stored again in the register 404. Note that when the value D405 for the absolute value D402 (| v i |) of the message D355 from all branches over one row of the check matrix is accumulated, the register 404 is reset.

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

制御信号D362が「1」の場合、セレクタ405は、レジスタ404に格納されている値、即ち、検査行列の1行に亘る全ての枝からのメッセージD355(メッセージvi)から求められたφ(|vi|)が積算された9ビットの値D406(i=1からi=dcまでのΣφ(|vi|))を選択し、値D407として、レジスタ406に出力して格納させる。レジスタ406は、格納している値D407を、9ビットの値D408として、セレクタ405と加算器407に供給する。 When the control signal D362 is "1", the selector 405, the value stored in the register 404, i.e., phi obtained from the messages D355 from all of the branches across one line of the parity check matrix (message v i) ( | v i |) 9-bit value that is accumulated is D406 (Sigma] [phi of i = 1 through i = d c (| v i |) select), as a value D407, and stores and outputs to the register 406. The register 406 supplies the stored value D407 to the selector 405 and the adder 407 as a 9-bit value D408.

制御信号D362が「0」の場合、セレクタ405は、レジスタ406から供給された値D408を選択し、レジスタ406に出力して再格納させる。即ち、検査行列の1行に亘る全ての枝からのメッセージD355(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ406は、前回積算されたφ(|vi|)を、セレクタ405と加算器407に供給する。 When the control signal D362 is “0”, the selector 405 selects the value D408 supplied from the register 406, outputs it to the register 406, and stores it again. That is, until φ (| v i |) obtained from the message D355 (message v i ) from all the branches over one row of the check matrix is accumulated, the register 406 stores φ (| v i |) is supplied to the selector 405 and the adder 407.

一方、FIFOメモリ408は、レジスタ406から新たな値D408(i=1からi=dcまでのΣφ(|vi|))が出力されるまでの間、セレクタ402が出力した値D405(φ(|vi|))を遅延し、6ビットの値D409として減算器407に供給する。減算器407は、レジスタ406から供給された値D408から、FIFOメモリ408から供給された値D409を減算し、その減算結果を、9ビットの減算値D410として、クリップ回路409と加算器417に供給する。即ち、減算器407は、検査行列の1行に亘る全ての枝からのメッセージD355(メッセージvi)から求められたφ(|vi|)の積算値から、求めたい枝からのメッセージD355(メッセージvi)から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc−1までのΣφ(|vi|))を減算値D410として、クリップ回路409に供給する。 On the other hand, FIFO memories 408, (Sigma] [phi of i = 1 through i = d c (| v i |)) a new value D408 from the register 406 until it is output, the value selector 402 has output D405 (phi (| v i |)) is delayed and supplied to the subtractor 407 as a 6-bit value D409. The subtractor 407 subtracts the value D409 supplied from the FIFO memory 408 from the value D408 supplied from the register 406, and supplies the subtraction result to the clip circuit 409 and the adder 417 as a 9-bit subtraction value D410. To do. In other words, the subtractor 407 calculates the message D355 () from the branch to be obtained from the integrated value of φ (| v i |) obtained from the message D355 (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 D410. This is supplied to the clip circuit 409.

クリップ回路409は、加算器407から供給される9ビットの減算値D410をクリップし、その下位5ビットの値D411(i=1からi=dc−1までのΣφ(|vi|))をLUT410に供給する。 The clip circuit 409 clips the 9-bit subtraction value D410 supplied from the adder 407, and the lower 5-bit value D411 (Σφ (| v i |) from i = 1 to i = d c −1). Is supplied to the LUT 410.

LUT410は、値D411(i=1からi=dc−1までのΣφ(|vi|))に対して、式(7)におけるφ-1(Σφ(|vi|))の演算を行った5ビットの演算結果D412(φ-1(Σφ(|vi|)))を出力する。 The LUT 410 calculates φ −1 (Σφ (| v i |)) in Expression (7) for the value D411 (Σφ (| v i |) from i = 1 to i = d c −1). The performed 5-bit operation result D412 (φ −1 (Σφ (| v i |))) is output.

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

検査行列の1行に亘る全ての枝からのメッセージD355の符号ビットD401(sign(vi))が乗算された乗算結果D413(i=1からdcまでのΠsign(vi))がレジスタ412に格納された場合、制御部356から供給される制御信号D362は、「0」から「1」に変化する。 The multiplication result D413 (Πsign (v i ) from i = 1 to d c ) obtained by multiplying the sign bit D401 (sign (v i )) of the message D355 from all the branches over one row of the check matrix is the register 412. Stored in the control signal 362, the control signal D362 supplied from the control unit 356 changes from “0” to “1”.

制御信号D362が「1」の場合、セレクタ413は、レジスタ412に格納されている値、即ち、検査行列の1行に亘る全ての枝からのメッセージD355の符号ビットD401が乗算された値D414(i=1からi=dcまでのΠsign(vi))を選択し、1ビットの値D415としてレジスタ414に出力して格納させる。レジスタ414は、格納している値D415を、1ビットの値D416として、セレクタ413とEXOR回路416に供給する。 When the control signal D362 is “1”, the selector 413 selects the value stored in the register 412, that is, the value D414 (multiplied by the sign bit D401 of the message D355 from all branches of one row of the check matrix). select Πsign from i = 1 to i = d c (v i) ), and stores and outputs a 1-bit value D415 to the register 414. The register 414 supplies the stored value D415 as a 1-bit value D416 to the selector 413 and the EXOR circuit 416.

制御信号D362が「0」の場合、セレクタ413は、レジスタ414から供給された値D416を選択し、レジスタ414に出力して再格納させる。即ち、検査行列の1行に亘る全ての枝からのメッセージD355(メッセージvi)の符号ビットD401が乗算されるまで、レジスタ414は、前回格納した値を、セレクタ413とEXOR回路416に供給する。 When the control signal D362 is “0”, the selector 413 selects the value D416 supplied from the register 414, outputs it to the register 414, and stores it again. That is, the register 414 supplies the previously stored value to the selector 413 and the EXOR circuit 416 until the sign bit D401 of the message D355 (message v i ) from all branches over one row of the check matrix is multiplied. .

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

LUT410から出力された5ビットの演算結果D412を下位5ビットとするとともに、EXOR回路416から出力された1ビットの除算値D418を最上位ビットとする合計6ビットの値D419(メッセージuj)がセレクタ419を介して、メッセージD350として出力される。 A 5-bit operation result D412 output from the LUT 410 is set to the lower 5 bits, and a total 6-bit value D419 (message u j ) using the 1-bit division value D418 output from the EXOR circuit 416 as the most significant bit is obtained. It is output as a message D350 via the selector 419.

以上のように、制御部356により、ノード計算器354で行う演算として、チェックノード演算が選択された場合、ノード計算器354では、式(7)の演算が行われ、メッセージujが求められる。 As described above, when the check node operation is selected as the operation performed by the node calculator 354 by the control unit 356, the node calculator 354 performs the operation of Expression (7) and obtains the message u j. .

上述したように、ノード計算器354では、バリアブルノード演算とチェックノード演算に必要な共通のブロックを、共有化することにより、バリアブルノード演算とチェックノード演算に必要なブロックを別々に有する場合に比べて、ノード計算器354の回路規模を小さくすることができる。   As described above, the node calculator 354 shares the common blocks necessary for the variable node calculation and the check node calculation, and thereby has a block necessary for the variable node calculation and the check node calculation separately. Thus, the circuit scale of the node calculator 354 can be reduced.

ここで、図18のノード計算器354では、図10のチェックノード計算器と図11のバリアブルノード計算器103において、加算器122と加算器151が、加算器403で、レジスタ123とレジスタ152が、レジスタ4040で、セレクタ124とセレクタ153が、セレクタ405で、レジスタ125とレジスタ154が、レジスタ406で、加算器126と加減算器156の加算部分が、加算器407で、FIFOメモリ127とFIFOメモリ155が、FIFOメモリ408で、それぞれ共有化されている。   Here, in the node calculator 354 in FIG. 18, the adder 122 and the adder 151 in the check node calculator in FIG. 10 and the variable node calculator 103 in FIG. 11 are added, and the register 123 and the register 152 are added in the adder 403. In the register 4040, the selector 124 and the selector 153, the selector 405, the register 125 and the register 154, the register 406, and the addition part of the adder 126 and the adder / subtractor 156 are the adder 407, the FIFO memory 127, and the FIFO memory. 155 are shared by the FIFO memory 408, respectively.

なお、ノード計算器354では、チェックノード演算が行われるときには、検査行列の各行の行の重みに基づいて、FIFOメモリ408とFIFOメモリ415における遅延量が、その行の重みの値に減らされ、バリアブルノード演算が行われるときには、検査行列の各列の列の重みに基づいて、FIFOメモリ408における遅延量が、その列の重みの値に減らされる。   In the node calculator 354, when the check node calculation is performed, the delay amount in the FIFO memory 408 and the FIFO memory 415 is reduced to the value of the weight of the row based on the row weight of each row of the check matrix. When a variable node operation is performed, based on the column weight of each column of the check matrix, the delay amount in the FIFO memory 408 is reduced to the value of the column weight.

図19は、図17の復号装置340の復号処理を説明するフローチャートである。この処理は、例えば、受信用メモリ355に復号すべき受信データが格納されたとき、開始される。なお、図19において、例えば、バリアブルノード演算の結果得られるメッセージ(メッセージvi)が枝用メモリ351に、チェックノード演算の結果得られるメッセージ(メッセージuj)が枝用メモリ352に、それぞれ格納されるものとする。但し、メッセージviを枝用メモリ352に、メッセージujを枝用メモリ351に、それぞれ格納してもよい。 FIG. 19 is a flowchart for explaining the decoding process of the decoding device 340 of FIG. This process is started, for example, when reception data to be decoded is stored in the reception memory 355. In FIG. 19, for example, a message (message v i ) obtained as a result of the variable node calculation is stored in the branch memory 351, and a message (message u j ) obtained as the result of the check node calculation is stored in the branch memory 352, respectively. Shall be. However, the message v i may be stored in the branch memory 352, and the message u j may be stored in the branch memory 351.

ステップS41において、制御部356は、いま、ノード計算器354で行う演算として、バリアブルノード演算とチェックノード演算のうち、バリアブルノード演算を選択し、その選択を表す選択信号D361をノード計算器354に供給する。また、制御部356は、後述するステップS51で、チェックノード演算の結果得られるメッセージD350(メッセージuj)が格納される枝用メモリ352を、ノード計算器354に供給するメッセージを読み出すメモリとして選択し、その選択を表す選択信号D364をセレクタ353に供給するとともに、枝用メモリ351を、後述するステップS45で、バリアブルノードの演算の結果得られるメッセージD350(メッセージvi)を格納する(書き込む)メモリとして選択し、その選択を表す選択信号D363をスイッチ350に供給する。 In step S41, the control unit 356 selects a variable node operation from among the variable node operation and the check node operation as an operation to be performed by the node calculator 354, and sends a selection signal D361 indicating the selection to the node calculator 354. Supply. In step S51, which will be described later, the control unit 356 selects the branch memory 352 storing the message D350 (message u j ) obtained as a result of the check node calculation as a memory for reading a message to be supplied to the node calculator 354. Then, the selection signal D364 representing the selection is supplied to the selector 353, and the branch memory 351 stores (writes) the message D350 (message v i ) obtained as a result of the variable node calculation in step S45 described later. A selection signal D363 indicating the selection is supplied to the switch 350 as a memory.

ステップS41の処理後は、ステップS42に進み、セレクタ353は、ステップS41で供給される選択信号D364に基づいて、ノード計算器354に、枝用メモリ351または枝用メモリ352から供給されるメッセージを、メッセージD355として供給する。即ち、ここでは、ステップS41で供給された選択信号D364は、チェックノードからの枝に対応するメッセージが格納された枝用メモリ352の選択を表しているので、セレクタ353は、枝用メモリ352から1つずつ読み出されたメッセージD354(メッセージuj)を、メッセージD355としてノード計算器354に供給する。 After the processing in step S41, the process proceeds to step S42, and the selector 353 sends a message supplied from the branch memory 351 or the branch memory 352 to the node calculator 354 based on the selection signal D364 supplied in step S41. , Supplied as message D355. That is, here, since the selection signal D364 supplied in step S41 represents the selection of the branch memory 352 in which the message corresponding to the branch from the check node is stored, the selector 353 receives from the branch memory 352. The message D354 (message u j ) read one by one is supplied to the node calculator 354 as a message D355.

なお、受信用メモリ355から供給された受信データD356に対して、まだチェックノード演算が行われておらず、枝用メモリ352にメッセージD352が格納されていない場合、ノード計算器354は、メッセージujを初期値に設定する。 Note that if the check node operation has not yet been performed on the reception data D356 supplied from the reception memory 355 and the message D352 is not stored in the branch memory 352, the node calculator 354 determines that the message u Set j to the initial value.

ステップS42の処理後は、ステップS43に進み、ノード計算器354は、バリアブルノード演算を行う。即ち、ノード計算器354には、受信用メモリ355から受信データD356が供給されるとともに、制御部356から制御信号D362が供給される。ノード計算器354は、制御信号D362に基づいて、受信データD356とステップS42でセレクタ353から供給されたメッセージD355とを用いて、上述した式(1)にしたがってバリアブルノードの演算を行う。   After step S42, the process proceeds to step S43, and the node calculator 354 performs variable node calculation. That is, the node calculator 354 is supplied with the reception data D356 from the reception memory 355 and the control signal D362 from the control unit 356. Based on the control signal D362, the node calculator 354 uses the received data D356 and the message D355 supplied from the selector 353 in step S42 to perform a variable node calculation according to the above equation (1).

即ち、ノード計算器354は、制御信号D362にしたがい、セレクタ353を介して、枝用メモリ352から必要なメッセージD354(D355)を読み出すとともに、受信用メモリ355から供給された受信データD356を用いて、バリアブルノード演算を行う。   That is, the node calculator 354 reads the necessary message D354 (D355) from the branch memory 352 via the selector 353 according to the control signal D362, and uses the reception data D356 supplied from the reception memory 355. , Variable node calculation is performed.

ステップS43の処理後は、ステップS44に進み、ノード計算器354は、バリアブルノード演算の結果得られるメッセージD350(メッセージvi)をスイッチ350に出力し、ステップS45に進む。 After the process of step S43, the process proceeds to step S44, and the node calculator 354 outputs the message D350 (message v i ) obtained as a result of the variable node calculation to the switch 350, and proceeds to step S45.

ステップS45において、スイッチ350は、ステップS41で供給された、メッセージD350を格納するメモリとして、枝用メモリ351と枝用メモリ352のうち一方の選択を表す選択信号D363に基づいて、ノード計算器354から出力されるメッセージD350を、枝用メモリ351または枝用メモリ352に格納する。ここでは、選択信号D363は、メッセージD350を格納するメモリとして、枝用メモリ351の選択を表しているので、スイッチ350は、ステップS44で出力されたバリアブルノード演算の結果得られるメッセージD350を、メッセージD351として枝用メモリ351に格納する。即ち、スイッチ350は、枝用メモリ351と枝用メモリ352のうち、ノード計算器354に供給するメッセージを読み出すメモリとして選択された枝用メモリではない方のメモリに、メッセージD350を書き込む。   In step S45, the switch 350 uses the node calculator 354 based on a selection signal D363 representing one of the branch memory 351 and the branch memory 352 as the memory for storing the message D350 supplied in step S41. Is stored in the branch memory 351 or the branch memory 352. Here, since the selection signal D363 represents the selection of the branch memory 351 as the memory for storing the message D350, the switch 350 displays the message D350 obtained as a result of the variable node calculation output in step S44 as the message. This is stored in the branch memory 351 as D351. That is, the switch 350 writes the message D350 in the memory other than the branch memory selected as the memory for reading the message to be supplied to the node calculator 354 out of the branch memory 351 and the branch memory 352.

ステップS45の処理後は、ステップS46に進み、制御部356は、ノード計算器354により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS42に戻り、上述した処理を繰り返す。   After the processing of step S45, the process proceeds to step S46, and the control unit 356 determines whether or not the message of all branches is calculated by the node calculator 354, and determines that the message of all branches is not calculated. If so, the process returns to step S42 and the above-described processing is repeated.

一方、ステップS46において、制御部356は、ノード計算器354により、全枝数のメッセージが演算されたと判定した場合、ステップS47に進み、制御部356は、いま、ノード計算器354で行う演算として、チェックノード演算を選択し、ステップS41で生成したバリアブルノード演算の選択を表す制御信号D361を、チェックノード演算の選択を表す制御信号D361に変更する。また、制御部356は、ステップS45で、バリアブルノード演算の結果得られるメッセージ(メッセージvi)が格納された枝用メモリ351を、ノード計算器354に供給するメッセージを読み出すメモリとして選択し、その選択を表す選択信号D364をセレクタ353に供給するとともに、枝用メモリ352を、後述するステップS51で、チェックノードの演算の結果得られるメッセージD350(メッセージuj)を格納する(書き込む)メモリとして選択し、その選択を表す選択信号D363をスイッチ350に供給する。 On the other hand, when the control unit 356 determines in step S46 that the message of the total number of branches has been calculated by the node calculator 354, the control unit 356 proceeds to step S47, and the control unit 356 now performs the calculation performed by the node calculator 354. Then, the check node calculation is selected, and the control signal D361 indicating the selection of the variable node calculation generated in step S41 is changed to the control signal D361 indicating the selection of the check node calculation. In step S45, the control unit 356 selects the branch memory 351 in which the message (message v i ) obtained as a result of the variable node calculation is stored as a memory for reading the message to be supplied to the node calculator 354. A selection signal D364 representing selection is supplied to the selector 353, and the branch memory 352 is selected as a memory for storing (writing) the message D350 (message u j ) obtained as a result of the check node calculation in step S51 described later. Then, the selection signal D363 indicating the selection is supplied to the switch 350.

ステップS47の処理後は、ステップS48に進み、セレクタ353は、ステップS47で供給される選択信号D364に基づいて、ノード計算器354に、枝用メモリ351または枝用メモリ352から供給されるメッセージを、メッセージD355として供給する。即ち、ここでは、ステップS47で供給された選択信号D364は、バリアブルノードからの枝に対応するメッセージが格納された枝用メモリ351の選択を表しているので、セレクタ353は、枝用メモリ351から1つずつ読み出されたメッセージD353(メッセージvi)を、メッセージD355としてノード計算器354に供給する。 After the processing in step S47, the process proceeds to step S48, and the selector 353 sends a message supplied from the branch memory 351 or the branch memory 352 to the node calculator 354 based on the selection signal D364 supplied in step S47. , Supplied as message D355. That is, here, since the selection signal D364 supplied in step S47 represents the selection of the branch memory 351 in which the message corresponding to the branch from the variable node is stored, the selector 353 receives from the branch memory 351. The message D353 (message v i ) read one by one is supplied to the node calculator 354 as a message D355.

ステップS48の処理後は、ステップS49に進み、ノード計算器354は、チェックノード演算を行う。即ち、ノード計算器354には、制御信号D362が供給される。ノード計算器354は、制御信号D362に基づいて、ステップS48でセレクタ353から供給されたメッセージD355を用いて、上述した式(7)にしたがってチェックノードの演算を行う。   After the process of step S48, the process proceeds to step S49, and the node calculator 354 performs a check node calculation. That is, the node calculator 354 is supplied with the control signal D362. Based on the control signal D362, the node calculator 354 uses the message D355 supplied from the selector 353 in step S48 to calculate the check node according to the above-described equation (7).

即ち、制御部356により、いま、ノード計算器354で行う演算として、チェックノード演算が選択された場合、制御部356がノード計算器354に供給する制御信号D362は、前述の図10で説明した制御信号D106に対応するものであり、ノード計算器354は、制御信号D362にしたがい、セレクタ353を介して、枝用メモリ351から必要なメッセージD353(D355)を読み出しながらチェックノードの演算を行う。   That is, when the check node operation is selected by the control unit 356 as the operation to be performed by the node calculator 354, the control signal D362 supplied to the node calculator 354 by the control unit 356 has been described with reference to FIG. The node calculator 354 corresponds to the control signal D106. The node calculator 354 performs a check node calculation while reading the necessary message D353 (D355) from the branch memory 351 via the selector 353 according to the control signal D362.

ステップS49の処理後は、ステップS50に進み、ノード計算器354は、チェックノード演算の結果得られるメッセージD350(メッセージuj)をスイッチ350に出力し、ステップS51に進む。 After the process of step S49, the process proceeds to step S50, and the node calculator 354 outputs the message D350 (message u j ) obtained as a result of the check node calculation to the switch 350, and proceeds to step S51.

ステップS51において、スイッチ350は、ステップS47で供給された、メッセージD350を格納するメモリとして、枝用メモリ351と枝用メモリ352のうち一方の選択を表す選択信号D363に基づいて、ノード計算器354から出力されるメッセージD350を、枝用メモリ351または枝用メモリ352に格納する。ここでは、選択信号D363は、メッセージD350を格納するメモリとして、枝用メモリ352の選択を表しているので、スイッチ350は、ステップS50で出力されたチェックノード演算の結果得られるメッセージD350を、メッセージD352として枝用メモリ352に格納する。即ち、スイッチ350は、枝用メモリ351と枝用メモリ352のうち、ノード計算器354に供給するメッセージを読み出すメモリとして選択された枝用メモリではない方のメモリに、メッセージD350を書き込む。   In step S51, the switch 350 uses the node calculator 354 based on the selection signal D363 representing the selection of one of the branch memory 351 and the branch memory 352 as the memory for storing the message D350 supplied in step S47. Is stored in the branch memory 351 or the branch memory 352. Here, since the selection signal D363 represents the selection of the branch memory 352 as the memory for storing the message D350, the switch 350 displays the message D350 obtained as a result of the check node operation output in step S50 as the message. It is stored in the branch memory 352 as D352. That is, the switch 350 writes the message D350 in the memory other than the branch memory selected as the memory for reading the message to be supplied to the node calculator 354 out of the branch memory 351 and the branch memory 352.

ステップS51の処理後は、ステップS52に進み、制御部356は、ノード計算器354により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS48に戻り、上述した処理を繰り返す。   After the processing of step S51, the process proceeds to step S52, and the control unit 356 determines whether or not the message of all branches is calculated by the node calculator 354, and determines that the message of all branches is not calculated. If so, the process returns to step S48 and the above-described processing is repeated.

一方、ステップS52において、制御部356は、ノード計算器354により、全枝数のメッセージが演算されたと判定した場合、処理を終了する。   On the other hand, in step S52, when the control unit 356 determines that the message of all branches has been calculated by the node calculator 354, the process ends.

なお、復号装置340は、復号回数だけ図19の復号処理を繰り返し行ない、枝用メモリ352に、最後のチェックノード演算の結果得られるメッセージD350(メッセージuj)が格納された場合、枝用メモリ352は、そのメッセージD350を上述した式(5)の演算を行う不図示のブロックに供給する。不図示のブロックには、さらに、受信用メモリ355から受信データD356が供給され、不図示のブロックは、メッセージD350と受信データD356を用いて、式(5)の演算を行い、その演算結果を最終的な復号結果として出力する。 Note that the decoding device 340 repeats the decoding process of FIG. 19 as many times as the number of decoding, and when the message D350 (message u j ) obtained as a result of the last check node operation is stored in the branch memory 352, the branch memory 352 supplies the message D350 to a block (not shown) that performs the calculation of the above-described equation (5). The block (not shown) is further supplied with reception data D356 from the reception memory 355. The block (not shown) performs the calculation of Expression (5) using the message D350 and the reception data D356, and the calculation result is obtained. Output as the final decoding result.

上述したように、ノード計算器354では、バリアブルノード演算とチェックノード演算の両方の演算が行われる。即ち、バリアブルノード演算は、チェックノード演算の結果であるメッセージujを用いて行われ、チェックノード演算は、バリアブルノード演算の結果であるメッセージviを用いて行われるため、復号装置340では、バリアブルノード演算とチェックノード演算が交互に行われる。ノード計算器354では、バリアブルノード演算とチェックノード演算に必要な共通のブロックを共有化し、バリアブルノード演算とチェックノード演算を交互に行うことにより、バリアブルノード計算器とチェックノード計算器を共有化して1つのノード計算器にすることができ、バリアブルノード演算を行うバリアブルノード計算器101とチェックノード計算器103とを別々に有する図9の復号装置に比べて、復号装置340の回路規模を小さくすることができる。 As described above, the node calculator 354 performs both the variable node calculation and the check node calculation. That is, the variable node operation is performed using the message u j that is the result of the check node operation, and the check node operation is performed using the message v i that is the result of the variable node operation. Variable node calculation and check node calculation are performed alternately. The node calculator 354 shares the common blocks necessary for the variable node calculation and the check node calculation, and alternately performs the variable node calculation and the check node calculation, thereby sharing the variable node calculator and the check node calculator. The circuit scale of the decoding device 340 can be reduced compared to the decoding device of FIG. 9 that can be configured as a single node calculator and separately includes the variable node calculator 101 and the check node calculator 103 that perform variable node operations. be able to.

図20は、本発明を適用した復号装置の、さらに他の一実施の形態の構成例を示すブロック図である。   FIG. 20 is a block diagram illustrating a configuration example of still another embodiment of a decoding device to which the present invention has been applied.

なお、図20では、LDPC符号の1回の復号を行う復号装置430の例を示している。繰り返し復号は、復号装置430を複数個縦列に接続して用いるか、あるいは、復号装置430を繰り返し用いることにより行うことができる。   FIG. 20 shows an example of a decoding device 430 that performs one decoding of an LDPC code. The iterative decoding can be performed by connecting a plurality of decoding devices 430 in a column or using the decoding devices 430 repeatedly.

復号装置430では、図17の枝用メモリ351と枝用メモリ352が1つの枝用メモリ440で共有化され、ノード計算器354のバリアブルノード演算またはチェックノード演算の結果得られるメッセージが、1つの枝用メモリ440に格納される。   In the decoding device 430, the branch memory 351 and the branch memory 352 in FIG. 17 are shared by one branch memory 440, and a message obtained as a result of the variable node calculation or the check node calculation of the node calculator 354 is one. Stored in the branch memory 440.

復号装置430は、ノード計算器354、受信用メモリ355、枝用メモリ440、および制御部441から構成される。即ち、復号装置430は、図17の復号装置340の枝用メモリ351と枝用メモリ352を共有化して枝用メモリ440にし、スイッチ350とセレクタ353を削除したものである。   The decoding device 430 includes a node calculator 354, a reception memory 355, a branch memory 440, and a control unit 441. That is, the decoding device 430 shares the branch memory 351 and the branch memory 352 of the decoding device 340 of FIG. 17 into the branch memory 440, and deletes the switch 350 and the selector 353.

なお、図17と同一の符号を付したもの、即ち、図20の復号装置430のノード計算器354と受信用メモリ355は、図17のそれらと同一のものであり、説明は繰り返しになるので省略する。   Note that the same reference numerals as those in FIG. 17, that is, the node calculator 354 and the reception memory 355 of the decoding device 430 in FIG. 20 are the same as those in FIG. 17, and the description will be repeated. Omitted.

枝用メモリ440には、ノード計算器354から、ノード計算器354によるチェックノード演算、またはバリアブルノード演算の結果得られる枝に対応するメッセージD440が供給され、枝用メモリ440は、ノード計算器354から供給されたメッセージD440を格納(記憶)し、既に格納してあるメッセージD441をノード計算器354に供給する。   The branch memory 440 is supplied from the node calculator 354 with a message D440 corresponding to a branch obtained as a result of the check node calculation or variable node calculation by the node calculator 354. The branch memory 440 stores the node calculator 354. Is stored (stored), and the already stored message D441 is supplied to the node calculator 354.

即ち、枝用メモリ440は、ノード計算器354から供給され、ノード計算器354がバリアブルノード演算、またはチェックノード演算を行う順番に格納してあるメッセージD440を1つずつ読み出し、メッセージD441として、ノード計算器354に供給すると同時に、ノード計算器354が出力するメッセージD440を受信し、枝用メモリ440の既に読み出されたメッセージ(メッセージD441)が記憶されていたアドレスに書き込む。即ち、枝用メモリ440は、ノード計算器354に供給するメッセージD441の読み出しと、ノード計算器354から供給されるメッセージD440の書き込みとを、同時に行う。   That is, the branch memory 440 is supplied from the node calculator 354, and reads out the messages D440 stored one by one in the order in which the node calculator 354 performs variable node calculation or check node calculation. At the same time as it is supplied to the calculator 354, the message D440 output from the node calculator 354 is received and written to the address where the already read message (message D441) of the branch memory 440 is stored. That is, the branch memory 440 simultaneously reads the message D441 supplied to the node calculator 354 and writes the message D440 supplied from the node calculator 354.

なお、枝用メモリ440には、ノード計算器354のバリアブルノード演算、またはチェックノード演算により演算された枝に対応するメッセージが格納されるので、枝用メモリ440に格納されるデータ量、即ち、枝用メモリ440に必要とされる記憶容量は、メッセージの量子化ビット数と、全枝数との乗算値となる。   The branch memory 440 stores a message corresponding to the branch calculated by the variable node calculation or the check node calculation of the node calculator 354. Therefore, the amount of data stored in the branch memory 440, that is, The storage capacity required for the branch memory 440 is a product of the number of message quantization bits and the total number of branches.

また、枝用メモリ440は、読み出しと書き込みが同時に可能な、例えば、デュアルポートRAMで構成することができる。   Further, the branch memory 440 can be configured by, for example, a dual port RAM capable of reading and writing simultaneously.

制御部441は、図17で説明したノード計算器356と同様に、いま、ノード計算器354で行う演算として、バリアブルノード演算とチェックノード演算のうち一方を選択する選択信号D361と、制御信号D362をノード計算器354に供給することにより、ノード計算器354を制御する。   As in the case of the node calculator 356 described with reference to FIG. 17, the control unit 441 now selects the selection signal D361 for selecting one of the variable node calculation and the check node calculation as the calculation performed by the node calculator 354, and the control signal D362. Is supplied to the node calculator 354 to control the node calculator 354.

図21は、図20の復号装置430の復号処理を説明するフローチャートである。この処理は、例えば、受信用メモリ355に復号すべき受信データが格納されたとき、開始される。   FIG. 21 is a flowchart for explaining the decoding process of the decoding device 430 of FIG. This process is started, for example, when reception data to be decoded is stored in the reception memory 355.

ステップS61において、制御部441は、いま、ノード計算器354で行う演算として、バリアブルノード演算とチェックノード演算のうち、バリアブルノード演算を選択し、その選択を表す選択信号D361をノード計算器354に供給する。   In step S61, the control unit 441 selects a variable node operation from among the variable node operation and the check node operation as the operation performed by the node calculator 354, and sends a selection signal D361 indicating the selection to the node calculator 354. Supply.

ステップS61の処理後は、ステップS62に進み、ノード計算器354は、バリアブルノード演算を行う。即ち、ノード計算器354には、受信用メモリ355から受信データD356が供給されるとともに、枝用メモリ440から、後述するステップS67で格納されたメッセージD440(メッセージuj)が、メッセージD441として供給される。また、ノード計算器354には、制御部441から制御信号D362が供給される。そして、ノード計算器354は、前述した図19のステップS43と同様に、制御信号D362に基づいて、受信データD356とメッセージD355とを用いて、上述した式(1)にしたがってバリアブルノードの演算を行う。 After the processing of step S61, the process proceeds to step S62, and the node calculator 354 performs variable node calculation. That is, the node data 356 is supplied from the reception memory 355 to the node calculator 354, and the message D440 (message u j ) stored in step S67 described later is supplied as the message D441 from the branch memory 440. Is done. The node calculator 354 is supplied with a control signal D362 from the control unit 441. Then, similarly to step S43 of FIG. 19 described above, the node calculator 354 calculates the variable node according to the above equation (1) using the reception data D356 and the message D355 based on the control signal D362. Do.

なお、受信用メモリ355から供給された受信データD356に対して、まだチェックノード演算が行われておらず、枝用メモリ440にメッセージD440が格納されていない場合、ノード計算器354は、バリアブルノード演算に用いるメッセージを初期値に設定する。   Note that if the check node operation has not yet been performed on the reception data D356 supplied from the reception memory 355 and the message D440 is not stored in the branch memory 440, the node calculator 354 determines whether the variable node Sets the message used for calculation to the initial value.

ステップS62の処理後は、ステップS63に進み、ノード計算器354は、バリアブルノード演算の結果得られるメッセージ(メッセージvi)D440を枝用メモリ440に格納し、ステップS64に進む。 After the process of step S62, the process proceeds to step S63, and the node calculator 354 stores the message (message v i ) D440 obtained as a result of the variable node calculation in the branch memory 440, and proceeds to step S64.

ステップS64において、制御部441は、ノード計算器354により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS62に戻り、上述した処理を繰り返す。   In step S64, the control unit 441 determines whether or not the message of the total number of branches has been calculated by the node calculator 354. When determining that the message of the total number of branches has not been calculated, the control unit 441 returns to step S62, and Repeat the process.

一方、ステップS64において、制御部441は、ノード計算器442により、全枝数のメッセージが演算されたと判定した場合、ステップS65に進み、制御部441は、いま、ノード計算器354で行う演算として、チェックノード演算を選択し、ステップS61で生成したバリアブルノード演算の選択を表す制御信号D361を、チェックノードの選択を表す制御信号D361に変更する。   On the other hand, in step S64, when the control unit 441 determines that the message of the total number of branches has been calculated by the node calculator 442, the control unit 441 proceeds to step S65, and the control unit 441 now performs an operation to be performed by the node calculator 354. Then, the check node calculation is selected, and the control signal D361 indicating the selection of the variable node calculation generated in step S61 is changed to the control signal D361 indicating the selection of the check node.

ステップS65の処理後は、ステップS66に進み、ノード計算器354は、チェックノード演算を行う。即ち、ノード計算器354には、枝用メモリ440からステップS63で格納されたメッセージD440(メッセージvi)がメッセージD441として供給されるとともに、制御部441から制御信号D362が供給される。ノード計算器354は、前述した図19のステップS49と同様に、制御信号D362に基づいて、枝用メモリ440から供給されたメッセージD441を用いて、上述した式(7)にしたがってチェックノードの演算を行う。 After the process of step S65, the process proceeds to step S66, and the node calculator 354 performs a check node calculation. That is, the node calculator 354 is supplied with the message D440 (message v i ) stored in step S63 from the branch memory 440 as the message D441, and is also supplied with the control signal D362 from the control unit 441. The node calculator 354 uses the message D441 supplied from the branch memory 440 based on the control signal D362 as in step S49 of FIG. 19 described above to calculate the check node according to the above equation (7). I do.

ステップS66の処理後は、ステップS67に進み、ノード計算器354は、チェックノード演算の結果得られるメッセージ(メッセージuj)D440を枝用メモリ440に格納し、ステップS68に進む。 After the process of step S66, the process proceeds to step S67, and the node calculator 354 stores the message (message u j ) D440 obtained as a result of the check node calculation in the branch memory 440, and proceeds to step S68.

ステップS68において、制御部441は、ノード計算器354により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS66に戻り、上述した処理を繰り返す。   In step S68, the control unit 441 determines whether or not the message of the total number of branches has been calculated by the node calculator 354. When determining that the message of the total number of branches has not been calculated, the control unit 441 returns to step S66, and Repeat the process.

一方、ステップS68において、制御部441は、ノード計算器354により、全枝数のメッセージが演算されたと判定した場合、処理を終了する。   On the other hand, in step S68, when the control unit 441 determines that the message of all branches has been calculated by the node calculator 354, the process ends.

なお、復号装置430は、復号回数だけ図21の復号処理を繰り返し行ない、枝用メモリ440に、最後のチェックノード演算の結果得られるメッセージD440(メッセージuj)が格納された場合、枝用メモリ440は、そのメッセージD440を上述した式(5)の演算を行う不図示のブロックに供給する。不図示のブロックには、さらに、受信用メモリ355から受信データD356が供給され、不図示のブロックは、メッセージD440と受信データD356を用いて、式(5)の演算を行い、その演算結果を最終的な復号結果として出力する。 The decoding device 430 repeatedly performs the decoding process of FIG. 21 as many times as the number of decoding times, and when the message D440 (message u j ) obtained as a result of the last check node operation is stored in the branch memory 440, the branch memory 440 supplies the message D440 to a block (not shown) that performs the calculation of the above-described equation (5). The block (not shown) is further supplied with reception data D356 from the reception memory 355. The block (not shown) performs the calculation of Expression (5) using the message D440 and the reception data D356, and the calculation result is obtained. Output as the final decoding result.

このように、復号装置430では、計算器を共有化し、さらに枝用メモリを共有化するので、枝用メモリを共有化した図15に示す復号装置300や計算器を共有化した図17の復号装置340よりも、さらに回路規模を小さくすることができる。   As described above, since the decoding device 430 shares the calculator and further shares the branch memory, the decoding device 300 shown in FIG. 15 sharing the branch memory and the decoding of FIG. 17 sharing the calculator. The circuit scale can be further reduced as compared with the device 340.

なお、枝用メモリ440は、デュアルポートRAMではなく、複数個のシングルポートRAMから構成されるようにしてもよい。この場合、1つのシングルポートRAMへの読み出しと書き込みが同時に重ならないように制御を行う必要がある。複数個のシングルポートRAMを用いた場合、デュアルポートRAMを用いる場合に比べて、復号装置430の回路規模を小さくすることができる。   The branch memory 440 may be composed of 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 430 can be reduced as compared with the case where a dual-port RAM is used.

ところで、図15乃至図21では、メッセージを1つずつ復号する復号装置の例を示したが、計算器の共有化、メモリの共有化は、メッセージをP個(複数個)ずつ同時に復号する復号装置にも適用することができる。以下、メッセージをP個ずつ同時に復号する復号装置について説明する。   By the way, in FIGS. 15 to 21, an example of a decoding device that decodes messages one by one has been shown. However, sharing of a computer and sharing of memory are decoding by simultaneously decoding P (plural) messages. It can also be applied to devices. Hereinafter, a decoding apparatus that simultaneously decodes P messages one by one will be described.

図22は、5×5の行列の単位に間隔を空けた30×90の検査行列の例を示している。なお、図22の検査行列自体は、図8に示した検査行列と同一である。   FIG. 22 shows an example of a 30 × 90 parity check matrix that is spaced in 5 × 5 matrix units. Note that the parity check matrix of FIG. 22 is the same as the parity check matrix shown in FIG.

図22においては、検査行列は、5×5の単位行列、その単位行列のコンポーネントである1のうち1個以上が0になった行列(以下、適宜、準単位行列という)、単位行列または準単位行列をサイクリックシフト(cyclic shift)した行列(以下、適宜、シフト行列という)、単位行列、準単位行列、またはシフト行列のうちの2以上(複数)の和(以下、適宜、和行列という)、5×5の0行列の組み合わせで表わされている。なお、図22の検査行列で表現されるLDPC符号は、符号化率2/3、符号長90である。   In FIG. 22, the check matrix is a 5 × 5 unit matrix, a matrix in which one or more of the unit matrix components 1 is 0 (hereinafter referred to as a quasi-unit matrix as appropriate), a unit matrix, A sum of two or more of a unit matrix, a cyclic matrix (hereinafter referred to as a shift matrix), a unit matrix, a quasi-unit matrix, or a shift matrix (hereinafter referred to as a sum matrix as appropriate). ) It is represented by a combination of 5 × 5 0 matrices. Note that the LDPC code represented by the parity check matrix in FIG. 22 has a coding rate of 2/3 and a code length of 90.

図22の検査行列は、5×5の単位行列、準単位行列、シフト行列、和行列、0行列で構成されているということができる。そこで、検査行列を構成する、これらの5×5の行列を、以下、適宜、構成行列という。   It can be said that the parity check matrix in FIG. 22 includes a 5 × 5 unit matrix, a quasi-unit matrix, a shift matrix, a sum matrix, and a zero matrix. Therefore, these 5 × 5 matrices constituting the check matrix are hereinafter appropriately referred to as constituent matrices.

図23は、図22の検査行列で表現されるLDPC符号を復号する復号装置の構成例を示している。   FIG. 23 illustrates a configuration example of a decoding device that decodes the LDPC code represented by the parity check matrix of FIG.

図23の復号装置500は、スイッチ510および515、6つのFIFO5111乃至5116からなる枝データ格納メモリ511、セレクタ512、5つのチェックノード計算器5131乃至5135からなるチェックノード計算部513、2つのサイクリックシフト回路514および520、18個のFIFO5161乃至51618からなる枝データ格納メモリ516、セレクタ517、受信情報を格納する受信データ用メモリ518、バリアブルノード計算部519、制御部521から構成される。 23 includes a switch 510 and 515, a branch data storage memory 511 including six FIFOs 511 1 to 511 6 , a selector 512, a check node calculator 513 including five check node calculators 513 1 to 513 5 , From two cyclic shift circuits 514 and 520, a branch data storage memory 516 comprising 18 FIFOs 516 1 to 516 18 , a selector 517, a reception data memory 518 for storing reception information, a variable node calculation unit 519, and a control unit 521 Composed.

この復号装置500の各部について詳細に説明する前に、まず、枝データ格納メモリ511と516へのデータの格納方法について説明する。   Before describing each part of the decoding device 500 in detail, first, a method for storing data in the branch data storage memories 511 and 516 will be described.

枝データ格納メモリ511は、検査行列の行数30を構成行列の行数5で除算した数である6つのFIFO5111乃至5116から構成されている。FIFO511y(y=1,2,・・・,6)は、構成行列の行数および列数である5つの枝に対応するメッセージを同時に読み出しもしくは書き込むことができるようになっており、その長さ(段数)は、検査行列の行方向の1の数(ハミング重み)の最大数である9になっている。 The branch data storage memory 511 is composed of six FIFOs 511 1 to 511 6 that are the number obtained by dividing the number of rows of the check matrix by the number of rows of the constituent matrix. The FIFO 511 y (y = 1, 2,..., 6) can simultaneously read or write messages corresponding to five branches that are the number of rows and the number of columns of the configuration matrix, and its length. The size (number of stages) is 9, which is the maximum number of 1s (Humming weights) in the row direction of the check matrix.

FIFO5111には、図22の検査行列の第1行目から第5行目までの1の位置に対応するデータが、各行共に横方向に詰めた形に(0を無視した形で)格納される。すなわち、第j行第i列を、(j,i)と表すこととすると、FIFO5111の第1の要素(第1段)には、検査行列の(1,1)から(5,5)の5×5の単位行列の1の位置に対応するデータが格納される。第2の要素には、検査行列の(1,21)から(5,25)のシフト行列(5×5の単位行列を右方向に3つだけサイクリックシフトしたシフト行列)の1の位置に対応するデータが格納される。第3から第8の要素も同様に検査行列と対応づけてデータが格納される。そして、第9の要素には、検査行列の(1,86)から(5,90)のシフト行列(5×5の単位行列のうちの1行目の1を0に置き換えて1つだけ左にサイクリックシフトしたシフト行列)の1の位
置に対応するデータが格納される。ここで、検査行列の(1,86)から(5,90)のシフト行列においては、1行目に1がないため、FIFO5111の1行目のみ要素数は8、残りの行は要素数が9となる。
In the FIFO 511 1 , data corresponding to positions 1 from the first row to the fifth row of the parity check matrix of FIG. 22 is stored in a form packed horizontally (ignoring 0). The That is, if the j-th row and the i-th column are represented as (j, i), the first element (first stage) of the FIFO 511 1 includes (1, 1) to (5, 5) of the parity check matrix. The data corresponding to the position of 1 in the 5 × 5 unit matrix is stored. The second element contains the shift matrix (1,21) to (5,25) shift matrix (shift matrix obtained by cyclically shifting three 5 × 5 unit matrices to the right by 3) in the second element. Corresponding data is stored. Similarly, the third to eighth elements store data in association with the check matrix. The ninth element includes a shift matrix (1,86) to (5,90) of the parity check matrix (1 in the first row of the 5 × 5 unit matrix is replaced with 0 and left by one). The data corresponding to the position 1 of the shift matrix (cyclically shifted to 1) is stored. Here, in the shift matrix (1,86) to (5,90) of the check matrix, since there is no 1 in the first row, the number of elements is 8 only in the first row of FIFO5111, and the remaining rows are the number of elements. Becomes 9.

FIFO5112には、図22の検査行列の第6行目から第10行目までの1の位置に対応するデータが格納される。すなわち、FIFO5112の第1の要素には、検査行列の(6,1)から(10,5)の和行列(5×5の単位行列を右に1つだけサイクリックシフトした第1のシフト行列と、右に2つだけサイクリックシフトした第2のシフト行列の和である和行列)を構成する第1のシフト行列の1の位置に対応するデータが格納される。また、第2の要素には、検査行列の(6,1)から(10,5)の和行列を構成する第2のシフト行列の1の位置に対応するデータが格納される。 The FIFO 511 2 stores data corresponding to 1 position from the sixth row to the tenth row of the parity check matrix in FIG. In other words, the first element of the FIFO 511 2 includes a first matrix obtained by cyclically shifting one (5 × 5 unit matrix) to the right by a sum matrix (6,1) to (10,5) of the check matrix. The data corresponding to the 1 position of the first shift matrix constituting the matrix and the sum matrix that is the sum of the second shift matrix cyclically shifted by two to the right is stored. The second element stores data corresponding to position 1 of the second shift matrix constituting the sum matrix of (6,1) to (10,5) of the check matrix.

即ち、重みが2以上の構成行列については、その構成行列を、重みが1であるP×Pの単位行列、そのコンポーネントである1のうち1個以上が0になった準単位行列、または単位行列もしくは準単位行列をサイクリックシフトしたシフト行列のうちの複数の和の形で表現したときの、その重みが1の単位行列、準単位行列、またはシフト行列の1の位置に対応するデータ(単位行列、準単位行列、またはシフト行列に属する枝に対応するメッセージ)は、同一アドレス(FIFO5111乃至5116のうちの同一のFIFO)に格納される。 That is, for a configuration matrix with a weight of 2 or more, the configuration matrix is a P × P unit matrix with a weight of 1, a quasi-unit matrix with one or more of its components being 0, or a unit When the matrix or the quasi-unit matrix is expressed in the form of a plurality of shift matrices obtained by cyclic shift, the data corresponding to the position of the unit matrix, the quasi-unit matrix, or the shift matrix having a weight of 1 ( Messages corresponding to branches belonging to a unit matrix, a quasi-unit matrix, or a shift matrix are stored in the same address (the same FIFO among the FIFOs 511 1 to 511 6 ).

以下、第3から第9の要素についても、検査行列に対応づけてデータが格納される。FIFO5112は全行共に要素数は9となる。 Hereinafter, the third to ninth elements are also stored in association with the check matrix. The FIFO 511 2 has 9 elements for all rows.

FIFO5113乃至5116も同様に検査行列に対応づけてデータを格納し、各FIFO5113乃至5116それぞれの長さは9である。 Similarly, the FIFOs 511 3 to 511 6 store data in association with the check matrix, and the length of each of the FIFOs 511 3 to 511 6 is 9.

枝データ格納メモリ516は、検査行列の列数90を、構成行列の列数である5で割った18個のFIFO5161乃至51618から構成されている。FIFO516x(x=1,2,・・・,18)は、構成行列の行数および列数である5つの枝に対応するメッセージを同時に読み出しもしくは書き込むことができるようになっている。 The branch data storage memory 516 includes 18 FIFOs 516 1 to 516 18 obtained by dividing the number of columns of the check matrix by 90, which is the number of columns of the configuration matrix. The FIFO 516 x (x = 1, 2,..., 18) can simultaneously read or write messages corresponding to five branches that are the number of rows and the number of columns of the configuration matrix.

FIFO5161には、図22の検査行列の第1列目から第5列目までの1の位置に対応するデータが、各列共に縦方向に詰めた形に(0を無視した形で)格納される。すなわち、FIFO5161の第1の要素(第1段)には、検査行列の(1,1)から(5,5)の5×5の単位行列の1の位置に対応するデータが格納される。第2の要素には、検査行列の(6,1)から(10,5)の和行列(5×5の単位行列を右に1つだけサイクリックシフトした第1のシフト行列と、右に2つだけサイクリックシフトした第2のシフト行列との和である和行列)を構成する第1のシフト行列の1の位置に対応するデータが格納される。また、第3の要素には、検査行列の(6,1)から(10,5)の和行列を構成する第2のシフト行列の1の位置に対応するデータが格納される。 The FIFO516 1, data corresponding to the first position to the fifth row from the first row of the parity check matrix, (in the form ignoring 0) into a form packed in the longitudinal direction in each column both in FIG. 22 stores Is done. That is, the first element (first stage) of the FIFO 516 1 stores data corresponding to the position of 1 in the 5 × 5 unit matrix from (1,1) to (5,5) of the check matrix. . The second element includes the sum matrix (6,1) to (10,5) of the check matrix (a first shift matrix obtained by cyclically shifting one 5 × 5 unit matrix to the right, and the right The data corresponding to the position of 1 of the first shift matrix constituting the sum matrix with the second shift matrix shifted by two cyclic shifts) is stored. The third element stores data corresponding to position 1 of the second shift matrix constituting the sum matrix (6,1) to (10,5) of the check matrix.

即ち、重みが2以上の構成行列については、その構成行列を、重みが1であるP×Pの単位行列、そのコンポーネントである1のうち1個以上が0になった準単位行列、または単位行列もしくは準単位行列をサイクリックシフトしたシフト行列のうちの複数の和の形で表現したときの、その重みが1の単位行列、準単位行列、またはシフト行列の1の位置に対応するデータ(単位行列、準単位行列、またはシフト行列に属する枝に対応するメッセージ)は、同一アドレス(FIFO5161乃至51618のうちの同一のFIFO)に格納される。 That is, for a configuration matrix with a weight of 2 or more, the configuration matrix is a P × P unit matrix with a weight of 1, a quasi-unit matrix with one or more of its components being 0, or a unit When the matrix or the quasi-unit matrix is expressed in the form of a plurality of shift matrices obtained by cyclic shift, the data corresponding to the position of the unit matrix, the quasi-unit matrix, or the shift matrix having a weight of 1 ( Messages corresponding to branches belonging to the unit matrix, the quasi-unit matrix, or the shift matrix are stored in the same address (the same FIFO among the FIFOs 516 1 to 516 18 ).

以下、第4および第5の要素についても、検査行列に対応づけて、データが格納される。このFIFO5161の要素数(段数)は、検査行列の第1列から第5列における行方向の1の数(ハミング重み)の最大数である5になっている。 Hereinafter, data is also stored for the fourth and fifth elements in association with the check matrix. The number of elements (the number of stages) of the FIFO 516 1 is 5, which is the maximum number of 1s (Hamming weights) in the row direction in the first column to the fifth column of the parity check matrix.

FIFO5162と5163も同様に検査行列に対応づけてデータを格納し、それぞれの長さ(段数)は、5である。FIFO5164乃至51612も同様に検査行列に対応づけてデータを格納し、それぞれの長さは3である。FIFO51613乃至51618も同様に検査行列に対応づけてデータを格納し、それぞれの長さは2である。但し、FIFO51618の第1の要素は、検査行列の(1,86)から(5,90)に相当し、第5列目(検査行列の(1,90)から(5,90))に1がないため、データは格納されない。 Similarly, the FIFOs 516 2 and 516 3 store data in association with the check matrix, and their length (number of stages) is 5. Similarly, the FIFOs 516 4 to 516 12 store data in association with the check matrix, and each has a length of 3. Similarly, the FIFOs 516 13 to 516 18 store data in association with the check matrix, and each has a length of 2. However, the first element of the FIFO 516 18 corresponds to (1,86) to (5,90) of the check matrix, and the fifth column ((1,90) to (5,90) of the check matrix) Since there is no 1, no data is stored.

以下、図23の復号装置500の各部の動作について詳細に説明する。   Hereinafter, the operation of each unit of the decoding device 500 of FIG. 23 will be described in detail.

スイッチ510には、サイクリックシフト回路520から5つのメッセージ(データ)D519が供給されるとともに、制御部521から検査行列のどの行に属するかの情報(Matrixデータ)を表す制御信号D520が供給される。制御信号D520にしたがって、5つのメッセージ(データ)D519を格納するFIFOを、FIFO5111乃至5116の中から選択し、選択したFIFOに5つのメッセージデータD519をまとめて順番に供給していく。 The switch 510 is supplied with five messages (data) D519 from the cyclic shift circuit 520, and is also supplied with a control signal D520 representing information (Matrix data) of which row of the parity check matrix belongs from the control unit 521. The In accordance with the control signal D520, a FIFO for storing five messages (data) D519 is selected from the FIFOs 511 1 to 511 6 , and the five message data D519 are collectively supplied to the selected FIFO in order.

枝データ格納メモリ511は、6つのFIFO5111乃至5116からなる。枝データ格納メモリ511のFIFO5111乃至5116には、スイッチ510から、5つのメッセージD519がまとめて順番に供給され、FIFO5111乃至5116は、5つのメッセージD519をまとめて順番に格納していく。また、枝データ格納メモリ511は、データを読み出す際には、FIFO5111から5つのメッセージ(データ)D5111を順番に読み出し、次段のセレクタ512に供給する。枝データ格納メモリ511は、FIFO5111からのメッセージD5111の読み出しの終了後、FIFO5112乃至5116からも、順番に、メッセージD5111乃至D5116をそれぞれ読み出し、セレクタ512に供給する。 The branch data storage memory 511 includes six FIFOs 511 1 to 511 6 . The FIFO511 1 to 511 6 the edge data storage memory 511, the switch 510, the five messages D519 supplied sequentially together, FIFO511 1 to 511 6, will be stored in sequence together five messages D519 . Also, the edge data storage memory 511, when reading data, sequentially reads five messages from FIFO511 1 (data) D511 1, supplied to the next stage of the selector 512. Edge data storage memory 511, after the end of the message D511 1 read from FIFO511 1, from FIFO511 2 to 511 6, in turn, read the message D511 1 to D511 6 respectively, to the selector 512.

セレクタ512には、制御部521から、FIFO5111乃至5116のうち、メッセージデータを読み出すFIFO(現在データが読み出されているFIFO)の選択を表す選択信号D521が供給されるとともに、枝データ格納メモリ511から5つのメッセージ(データ)D5111乃至D5116が供給される。セレクタ512は、選択信号D521にしたがって、FIFO5111乃至5116のうちの、現在データが読み出されているFIFOを選択し、その選択したFIFOから供給された5つのメッセージデータを、メッセージD512として、チェックノード計算部513に供給する。 The selector 512 is supplied from the control unit 521 with a selection signal D521 indicating selection of a FIFO (FIFO from which data is currently read) from which the message data is read out of the FIFOs 511 1 to 511 6 , and stores branch data. Five messages (data) D511 1 to D511 6 are supplied from the memory 511. The selector 512 selects a FIFO from which data is currently read out of the FIFOs 511 1 to 511 6 according to the selection signal D521, and sets five message data supplied from the selected FIFO as a message D512. This is supplied to the check node calculation unit 513.

チェックノード計算部513は、5つのチェックノード計算器5131乃至5135からなる。チェックノード計算部513には、セレクタ512を介して5つのメッセージD512が供給され、そのメッセージD512が、チェックノード計算器5131乃至5135のそれぞれに1つずつ供給される。また、チェックノード計算部513には、制御部521から制御信号D522が供給され、その制御信号D522が、チェックノード計算器5131乃至5135に供給される。チェックノード計算器5131乃至5135は、それぞれメッセージD512を用いて、式(7)にしたがって演算を行い、その演算の結果メッセージD513を得る。チェックノード計算部513は、チェックノード計算器5131乃至5135による演算の結果得られる5つのメッセージD513をサイクリックシフト回路514に供給する。 The check node calculation unit 513 includes five check node calculators 513 1 to 513 5 . The check node calculation unit 513 is supplied with five messages D512 via the selector 512, and the message D512 is supplied to each of the check node calculators 513 1 to 513 5 . The check node calculator 513 is supplied with a control signal D522 from the controller 521, and the control signal D522 is supplied to the check node calculators 513 1 to 513 5 . Each of the check node calculators 513 1 to 513 5 performs an operation according to Expression (7) using the message D512, and obtains a result message D513 of the operation. The check node calculation unit 513 supplies five messages D513 obtained as a result of the calculation by the check node calculators 513 1 to 513 5 to the cyclic shift circuit 514.

ここで、制御部521からチェックノード計算部513に供給される制御信号D522は、図10の制御信号D106に対応するものであり、チェックノード計算部5131乃至5135それぞれは、図10に示したチェックノード計算器101と同様に構成される。 Here, the control signal D522 supplied from the control unit 521 to the check node calculation unit 513 corresponds to the control signal D106 in FIG. 10, and each of the check node calculation units 513 1 to 513 5 is shown in FIG. The check node calculator 101 is configured in the same manner.

サイクリックシフト回路514には、チェックノード計算部513で計算された5つのメッセージD513が供給されるとともに、制御部521から、そのメッセージD513に対応する枝が検査行列において元となる単位行列を幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D523が供給される。サイクリックシフト回路514は、制御信号D523を元に、5つのメッセージD513を並べ替えるサイクリックシフトを行い、その結果をメッセージD514として、スイッチ515に供給する。   The cyclic shift circuit 514 is supplied with the five messages D513 calculated by the check node calculation unit 513, and from the control unit 521, determines how many unit matrices whose branches corresponding to the message D513 are based on the check matrix. A control signal D523 representing information (Matrix data) as to whether the data has been cyclically shifted is supplied. The cyclic shift circuit 514 performs a cyclic shift that rearranges the five messages D513 based on the control signal D523, and supplies the result to the switch 515 as a message D514.

スイッチ515には、サイクリックシフト回路514から供給される5つのメッセージ(データ)D514が検査行列のどの列に属するかの情報を表す制御信号D524が供給されるとともに、サイクリックシフト回路514から、メッセージD514が供給される。スイッチ515は、制御信号D524にしたがって、メッセージD514を格納するFIFOを、FIFO5161乃至51618の中から選択し、選択したFIFOに5つのメッセージD514をまとめて順番に供給していく。 The switch 515 is supplied with a control signal D524 indicating information on which column of the check matrix the five messages (data) D514 supplied from the cyclic shift circuit 514 belong to, and from the cyclic shift circuit 514, Message D514 is provided. The switch 515 selects a FIFO storing the message D514 from the FIFOs 516 1 to 516 18 according to the control signal D524, and supplies the five messages D514 to the selected FIFO in order.

枝データ格納メモリ516は、18個のFIFO5161乃至51618からなる。枝データ格納メモリ516のFIFO5161乃至51618には、スイッチ515から5つのメッセージD514がまとめて順番に供給され、FIFO5161乃至51618は、その5つのメッセージD514をまとめて順番に格納していく。また、枝データ格納メモリ516は、データを読み出す際には、FIFO5161から5つのメッセージD5151を順番に読み出し、次段のセレクタ517に供給する。枝データ格納メモリ516は、FIFO5161からのデータの読み出しの終了後、FIFO5162乃至51618からも、順番に、メッセージD5152乃至D51518を読み出し、セレクタ517に供給する。 The branch data storage memory 516 includes 18 FIFOs 516 1 to 516 18 . The FIFO516 1 to 516 18 the edge data storage memory 516, five messages D514 from the switch 515 is supplied to the collectively turn, FIFO516 1 to 516 18, will store in sequence summarizes the five messages D514 . Also, the edge data storage memory 516, when reading data, sequentially reads five messages D515 1 from FIFO516 1, supplied to the next stage of the selector 517. The branch data storage memory 516 reads the messages D515 2 to D515 18 in order from the FIFOs 516 2 to 516 18 and supplies them to the selector 517 after the reading of data from the FIFO 516 1 is completed.

セレクタ517には、制御部521からFIFO5161乃至51618のうち、メッセージデータを読み出すFIFO(現在データが読み出されているFIFO)の選択を表す選択信号D525が供給されるとともに、枝データ格納メモリ516からメッセージデータD5151乃至D51518が供給される。セレクタ517は、選択信号D525にしたがって、FIFO5161乃至51618のうちの、現在データが読み出されているFIFOを選択し、その選択したFIFOから供給される5つのメッセージデータを、メッセージD516として、バリアブルノード計算部519に供給する。 The selector 517 is supplied from the control unit 521 with a selection signal D525 indicating selection of the FIFO (FIFO from which data is currently read) from which the message data is read out of the FIFOs 516 1 to 516 18 , and the branch data storage memory. Message data D515 1 to D515 18 are supplied from 516. The selector 517 selects the FIFO from which the current data is read out of the FIFOs 516 1 to 516 18 according to the selection signal D525, and sets five message data supplied from the selected FIFO as a message D516. This is supplied to the variable node calculation unit 519.

一方、受信データ用メモリ518は、通信路を通して受信した受信信号から、受信LLR(対数尤度比)を計算しており、その計算した受信LLRを5つまとめて受信データD517としてバリアブルノード計算部519に供給する。   On the other hand, the reception data memory 518 calculates a reception LLR (log likelihood ratio) from the reception signal received through the communication path, and collects the calculated reception LLRs as reception data D517 as a variable node calculation unit. 519.

バリアブルノード計算部519は、5つのバリアブルノード計算器5191乃至5195からなる。バリアブルノード計算部519には、セレクタ517を介して5つのメッセージD516が供給され、そのメッセージD516が、バリアブルノード計算器5191乃至5195のそれぞれに1つずつ供給される。また、バリアブルノード計算部519には、受信データ用メモリ518から5つの受信データD517が供給され、その受信データD517が、バリアブルノード計算器5191乃至5195のそれぞれに1つずつ供給される。さらに、バリアブルノード計算部519には、制御部521から制御信号D526が供給され、その制御信号D526がバリアブルノード計算器5191乃至5195に供給される。 The variable node calculation unit 519 includes five variable node calculators 519 1 to 519 5 . Five messages D516 are supplied to the variable node calculator 519 via the selector 517, and one message D516 is supplied to each of the variable node calculators 519 1 to 519 5 . The variable node calculation unit 519 is supplied with five reception data D517 from the reception data memory 518, and the reception data D517 is supplied to each of the variable node calculators 519 1 to 519 5 . Further, the control signal D526 is supplied from the control unit 521 to the variable node calculation unit 519, and the control signal D526 is supplied to the variable node calculators 519 1 to 519 5 .

バリアブルノード計算器5191乃至5195は、メッセージD516と受信データD517とを用いて、式(1)にしたがって、それぞれ演算を行い、その演算の結果メッセージD518を得る。バリアブルノード計算部519は、バリアブルノード計算器5191乃至5195の結果得られる5つのメッセージD518を、サイクリックシフト回路520に供給する。 The variable node calculators 519 1 to 519 5 use the message D516 and the received data D517 to perform calculations according to the equation (1), and obtain a message D518 as a result of the calculation. The variable node calculation unit 519 supplies the five messages D518 obtained as a result of the variable node calculators 519 1 to 519 5 to the cyclic shift circuit 520.

ここで、制御部521からバリアブルノード計算部519に供給される制御信号D526は、図11の制御信号D107に対応するものであり、バリアブルノード計算器5191乃至5195それぞれは、図11のバリアブルノード計算器103と同様に構成される。 Here, the control signal D526 supplied from the control unit 521 to the variable node calculation unit 519 corresponds to the control signal D107 in FIG. 11, and each of the variable node calculators 519 1 to 519 5 has the variable signal in FIG. The configuration is the same as that of the node calculator 103.

サイクリックシフト回路520には、バリアブルノード計算部519から5つのメッセージD518が供給されるとともに、制御部521から、そのメッセージD518に対応する枝が検査行列において元となる単位行列を幾つサイクリックシフトしたものであるかの情報を表す制御信号D527が供給される。サイクリックシフト回路520は、制御信号D527を元に、メッセージD527を並べ替えるサイクリックシフトを行い、その結果をメッセージD519として、スイッチ510に供給する。   The cyclic shift circuit 520 is supplied with five messages D518 from the variable node calculation unit 519, and the control unit 521 cyclically shifts the unit matrix from which the branch corresponding to the message D518 is based on the check matrix. A control signal D527 indicating information on whether or not it has been supplied is supplied. The cyclic shift circuit 520 performs a cyclic shift for rearranging the messages D527 based on the control signal D527, and supplies the result to the switch 510 as a message D519.

なお、制御部521は、制御信号D520、選択信号D521、制御信号D522乃至D524、選択信号D525、制御信号D526とD527を、スイッチ510、セレクタ512、チェックノード計算部513、サイクリックシフト回路514、スイッチ515、セレクタ517、バリアブルノード計算部519、サイクリックシフト回路520にそれぞれ供給することにより、それぞれを制御する。   The control unit 521 includes a control signal D520, a selection signal D521, control signals D522 to D524, a selection signal D525, control signals D526 and D527, a switch 510, a selector 512, a check node calculation unit 513, a cyclic shift circuit 514, These are supplied to the switch 515, the selector 517, the variable node calculation unit 519, and the cyclic shift circuit 520, respectively, to control each.

以上の動作を一巡することで、LDPC符号の1回の復号を行うことができる。図23の復号装置500は、所定の回数だけLDPC符号を復号した後、図示しないが、式(5)にしたがって最終的な復号結果を求めて出力する。   The LDPC code can be decoded once by completing the above operation. After decoding the LDPC code a predetermined number of times, decoding apparatus 500 in FIG. 23 obtains and outputs a final decoding result according to equation (5), although not shown.

なお、枝データ(枝に対応するメッセージ)が欠けている箇所に関しては、メモリ格納時(枝データ格納メモリ511と516へのデータ格納時)には、何のメッセージも格納せず、また、ノード演算時(チェックノード計算部513でのチェックノード演算時とバリアブルノード計算部519でのバリアブルノード演算時)にも何の演算も行わない。   In addition, regarding the portion where the branch data (message corresponding to the branch) is missing, no message is stored when the memory is stored (when the data is stored in the branch data storage memories 511 and 516), and the node No calculation is performed even during the calculation (when the check node is calculated by the check node calculation unit 513 and when the variable node is calculated by the variable node calculation unit 519).

図24は、本発明を適用した図22の検査行列Hで表現されるLDPC符号を復号する復号装置の一実施の形態の構成例を示している。   FIG. 24 shows a configuration example of an embodiment of a decoding device that decodes the LDPC code represented by the parity check matrix H of FIG. 22 to which the present invention is applied.

図24の復号装置530では、図23のサイクリックシフト回路514および520が共有化され、1つのサイクリックシフト回路551となっている。   In the decoding device 530 of FIG. 24, the cyclic shift circuits 514 and 520 of FIG. 23 are shared to form one cyclic shift circuit 551.

復号装置530は、3つのスイッチ540、541、および546、18個のFIFO5421乃至54218からなる枝データ格納メモリ542、セレクタ543、受信情報を格納する受信データ用メモリ544、5つのバリアブルノード計算器5451乃至5455からなるチェックノード計算部545、6つのFIFO5471乃至5476からなる枝データ格納メモリ547、セレクタ548、5つのチェックノード計算器5491乃至5496からなるチェックノード計算部549、セレクタ550、サイクリックシフト回路551、制御部552から構成される。 The decoding device 530 includes three switches 540, 541 and 546, a branch data storage memory 542 composed of 18 FIFOs 542 1 to 542 18 , a selector 543, a reception data memory 544 for storing reception information, and five variable node calculations. A check node calculation unit 545 including units 545 1 to 545 5, a branch data storage memory 547 including six FIFOs 547 1 to 547 6 , a selector 548, and five check node calculators 549 1 to 549 6. , A selector 550, a cyclic shift circuit 551, and a control unit 552.

スイッチ540には、サイクリックシフト回路551から5つのメッセージデータD550が供給されるとともに、制御部552から、バリアブルノード計算部545またはチェックノード計算部549のうち、いま、演算が行われる計算部として一方の選択を表す選択信号D551が供給される。スイッチ540は、選択信号D551に基づいて、スイッチ541とスイッチ546のうち一方を、メッセージデータD550を供給するスイッチとして選択し、その選択したスイッチにメッセージデータD550を供給する。   The switch 540 is supplied with five message data D550 from the cyclic shift circuit 551, and among the variable node calculation unit 545 or the check node calculation unit 549 from the control unit 552 as a calculation unit to be operated now. A selection signal D551 representing one selection is supplied. Based on the selection signal D551, the switch 540 selects one of the switch 541 and the switch 546 as a switch for supplying the message data D550, and supplies the message data D550 to the selected switch.

スイッチ541には、スイッチ540からメッセージデータD550が供給されるとともに、制御部552から検査行列のどの列に属するかの情報(Matrixデータ)を表す制御信号D552が供給される。スイッチ541は、制御信号D552にしたがって、5つのメッセージD550を格納するFIFOを、枝データ格納メモリ542のFIFO5421乃至54218の中から選択し、選択したFIFOに5つのメッセージD550をまとめて順番に供給していく。 The switch 541 is supplied with message data D550 from the switch 540, and is also supplied with a control signal D552 indicating information (Matrix data) of which column of the parity check matrix belongs from the control unit 552. The switch 541 selects the FIFO storing the five messages D550 from the FIFOs 542 1 to 542 18 of the branch data storage memory 542 according to the control signal D552, and puts together the five messages D550 into the selected FIFO in order. Supply.

枝データ格納メモリ542は、図23の枝データ格納メモリ516と同様に、18個のFIFO5421乃至54218からなる。枝データ格納メモリ542のFIFO5421乃至54218には、スイッチ541から5つのメッセージD550がまとめて順番に供給され、FIFO5421乃至54218は、その5つのメッセージD550をまとめて順番に格納していく。また、枝データ格納メモリ542は、データを読み出す際には、FIFO5421から5つのメッセージD5421を順番に読み出し、セレクタ543に供給する。枝データ格納メモリ542は、FIFO5421からのデータの読み出しの終了後、FIFO5422乃至54218からも、順番に、メッセージD5422乃至D54218を読み出し、セレクタ543に供給する。 The branch data storage memory 542 includes 18 FIFOs 542 1 to 542 18 as with the branch data storage memory 516 of FIG. The FIFO 542 1 to 542 18 the edge data storage memory 542, five messages D550 from the switch 541 is supplied to the collectively turn, FIFO 542 1 to 542 18, will store in sequence summarizes the five messages D550 . Also, the edge data storage memory 542, when reading data, sequentially reads five messages D542 1 from FIFO 542 1, to the selector 543. The branch data storage memory 542 reads the messages D542 2 to D542 18 in order from the FIFOs 542 2 to 542 18 and supplies them to the selector 543 after reading of the data from the FIFO 542 1 is completed.

セレクタ543には、制御部552からFIFO5421乃至54218のうち、メッセージデータを読み出すFIFO(現在データが読み出されているFIFO)の選択を表す選択信号D553が供給されるとともに、枝データ格納メモリ542からメッセージ(データ)D5421乃至D54218が供給される。セレクタ543は、図23のセレクタ517と同様に、制御部521から供給される選択信号D553にしたがって、FIFO5421乃至54218のうちの、現在データが読み出されているFIFOを選択し、その選択したFIFOから供給される5つのメッセージデータを、メッセージ(データ)D543として、バリアブルノード計算部545に供給する。 The selector 543 is supplied from the control unit 552 with a selection signal D553 indicating selection of a FIFO (FIFO from which data is currently read) from which the message data is read out of the FIFOs 542 1 to 542 18 and the branch data storage memory. Messages (data) D542 1 to D542 18 are supplied from 542. In the same manner as the selector 517 in FIG. 23, the selector 543 selects a FIFO from which data is currently read from among the FIFOs 542 1 to 542 18 in accordance with the selection signal D553 supplied from the control unit 521, and selects the selected FIFO. The five pieces of message data supplied from the FIFO are supplied to the variable node calculation unit 545 as message (data) D543.

一方、受信データ用メモリ544は、通信路を通して受信した受信信号から、受信LLR(対数尤度比)を計算しており、その計算した受信LLRを5つまとめて受信データD544としてバリアブルノード計算部545に供給する。   On the other hand, the reception data memory 544 calculates a reception LLR (log-likelihood ratio) from the reception signal received through the communication path, and combines the calculated reception LLRs into reception data D544 as a variable node calculation unit. 545.

バリアブルノード計算部545は、図23のバリアブルノード計算部519と同様に、5つのバリアブルノード計算器5451乃至5455からなる。バリアブルノード計算部545には、セレクタ543を介して5つのメッセージD543が供給され、そのメッセージD543が、バリアブルノード計算器5451乃至5455のそれぞれに1つずつ供給される。また、バリアブルノード計算部545には、受信データ用メモリ544から5つの受信データD544が供給され、その受信データD544が、バリアブルノード計算器5451乃至5455のそれぞれに1つずつ供給される。さらに、バリアブルノード計算部545には、制御部552から制御信号D554が供給され、その制御信号D554がバリアブルノード計算器5451乃至5455に供給される。 The variable node calculation unit 545 includes five variable node calculators 545 1 to 545 5 , similar to the variable node calculation unit 519 of FIG. Five messages D543 are supplied to the variable node calculator 545 via the selector 543, and one message D543 is supplied to each of the variable node calculators 545 1 to 545 5 . The variable node calculation unit 545 is supplied with five reception data D544 from the reception data memory 544, and the reception data D544 is supplied to each of the variable node calculators 545 1 to 545 5 . Further, the control signal D554 is supplied from the control unit 552 to the variable node calculation unit 545, and the control signal D554 is supplied to the variable node calculators 545 1 to 545 5 .

バリアブルノード計算器5451乃至5455は、メッセージD543と受信データD544とを用いて、式(1)にしたがって、それぞれ演算を行い、その演算の結果、メッセージD545を得る。即ち、バリアブルノード計算部545は、LDPC符号の復号のための5個のバリアブルノードの演算を行い、その演算の結果、5つのメッセージD545を同時に求める。そして、バリアブルノード計算部545は、バリアブルノード計算器5451乃至5455の結果得られる5つのメッセージD545を、セレクタ550に供給する。 The variable node calculators 545 1 to 545 5 each perform an operation according to the equation (1) using the message D543 and the received data D544, and obtain a message D545 as a result of the operation. That is, the variable node calculation unit 545 calculates five variable nodes for decoding the LDPC code, and simultaneously obtains five messages D545 as a result of the calculation. Then, the variable node calculation unit 545 supplies the five messages D545 obtained as a result of the variable node calculators 545 1 to 545 5 to the selector 550.

ここで、制御部552からバリアブルノード計算部545に供給される制御信号D554は、図11の制御信号D107に対応するものであり、バリアブルノード計算器5451乃至5455それぞれは、図11のバリアブルノード計算器103と同様に構成される。 Here, the control signal D554 supplied from the control unit 552 to the variable node calculation unit 545 corresponds to the control signal D107 of FIG. 11, and each of the variable node calculators 545 1 to 545 5 is shown in FIG. The configuration is the same as that of the node calculator 103.

スイッチ546には、スイッチ540から、5つのメッセージ(データ)D550が供給されるとともに、そのメッセージ(データ)D550が検査行列のどの行に属するかの情報を表す制御信号D555が制御部552から供給される。スイッチ546は、制御部552から供給される制御信号D555にしたがって、メッセージD550を格納するFIFOを、枝データ格納メモリ547のFIFO5471乃至54718の中から選択し、選択したFIFOに5つのメッセージD550をまとめて順番に供給していく。 The switch 546 is supplied with five messages (data) D550 from the switch 540 and a control signal D555 indicating information indicating which row of the check matrix the message (data) D550 belongs to from the control unit 552. Is done. The switch 546 selects a FIFO for storing the message D550 from the FIFOs 547 1 to 547 18 of the branch data storage memory 547 according to the control signal D555 supplied from the control unit 552, and five messages D550 are stored in the selected FIFO. Are supplied in order.

枝データ格納メモリ547は、図23の枝データ格納メモリ511と同様に、6つのFIFO5471乃至54718からなる。枝データ格納メモリ547のFIFO5471乃至5476には、スイッチ546から、5つのメッセージD550がまとめて順番に供給され、FIFO5471乃至5476は、5つのメッセージD550をまとめて順番に格納していく。また、枝データ格納メモリ547は、データを読み出す際には、FIFO5471から5つのメッセージ(データ)D5461を順番に読み出し、次段のセレクタ548に供給する。枝データ格納メモリ547は、FIFO5471からのメッセージD5461の読み出しの終了後、FIFO5472乃至5476からも、順番に、メッセージD5462乃至D5466を読み出し、セレクタ548に供給する。 The branch data storage memory 547 includes six FIFOs 547 1 to 547 18 as in the branch data storage memory 511 of FIG. The FIFO547 1 to 547 6 the edge data storage memory 547, the switch 546, the five messages D550 supplied sequentially together, FIFO547 1 to 547 6, will be stored in sequence together five messages D550 . Also, the edge data storage memory 547, when reading data, sequentially reads five messages from FIFO547 1 (data) D546 1, supplied to the next stage of the selector 548. Edge data storage memory 547, after the end of the message D546 1 read from FIFO547 1, from FIFO547 2 to 547 6, in turn, reads the message D546 2 to D546 6, to the selector 548.

セレクタ548には、制御部552から、FIFO5471乃至5476のうち、メッセージデータを読み出すFIFO(現在データが読み出されているFIFO)の選択を表す選択信号D556が供給されるとともに、枝データ格納メモリ547から5つのメッセージ(データ)D5461乃至D5466が供給される。セレクタ548は、選択信号D546にしたがって、FIFO5471乃至5476のうちの、現在データが読み出されているFIFOを選択し、その選択したFIFOから供給された5つのメッセージデータを、メッセージD547として、チェックノード計算部549に供給する。 The selector 548 is supplied from the control unit 552 with a selection signal D556 indicating selection of a FIFO (FIFO from which data is currently read) from among the FIFOs 547 1 to 547 6 to read message data, and stores branch data. Five messages (data) D546 1 to D546 6 are supplied from the memory 547. The selector 548 selects the FIFO from which the current data is read out of the FIFOs 547 1 to 547 6 according to the selection signal D546, and sets five message data supplied from the selected FIFO as a message D547. This is supplied to the check node calculation unit 549.

チェックノード計算部549は、図23のチェックノード計算部513と同様に、5つのチェックノード計算器5491乃至5495からなる。チェックノード計算部549には、セレクタ548を介して5つのメッセージD547が供給され、そのメッセージD547が、チェックノード計算器5491乃至5495のそれぞれに1つずつ供給される。また、チェックノード計算部549には、制御部552から制御信号D557が供給され、その制御信号D557が、チェックノード計算器5491乃至5495に供給される。チェックノード計算器5491乃至5495は、それぞれメッセージD547を用いて、式(7)にしたがって演算を行い、その演算の結果、5つのメッセージD548を同時に求める。即ち、チェックノード計算部513は、LDPC符号の復号のための5個のチェックノード演算を行い、その演算の結果、5つのメッセージD548を得る。そして、チェックノード計算部513は、その5つのメッセージD548をセレクタ550に供給する。 The check node calculation unit 549 includes five check node calculators 549 1 to 549 5 as with the check node calculation unit 513 in FIG. Five messages D547 are supplied to the check node calculator 549 via the selector 548, and one message D547 is supplied to each of the check node calculators 549 1 to 549 5 . Further, the control signal D557 is supplied from the control unit 552 to the check node calculation unit 549, and the control signal D557 is supplied to the check node calculators 549 1 to 549 5 . Each of the check node calculators 549 1 to 549 5 performs an operation according to the equation (7) using the message D547, and simultaneously determines five messages D548 as a result of the operation. That is, the check node calculation unit 513 performs five check node operations for decoding the LDPC code, and obtains five messages D548 as a result of the operation. Then, the check node calculation unit 513 supplies the five messages D548 to the selector 550.

ここで、制御部552からチェックノード計算部549に供給される制御信号D557は、図10の制御信号D106に対応するものであり、チェックノード計算部5491乃至5495それぞれは、図10に示したチェックノード計算器101と同様に構成される。 Here, the control signal D557 supplied from the control unit 552 to the check node calculation unit 549 corresponds to the control signal D106 of FIG. 10, and each of the check node calculation units 549 1 to 549 5 is shown in FIG. The check node calculator 101 is configured in the same manner.

セレクタ550には、バリアブルノード計算部545からメッセージD545が供給されるとともに、チェックノード計算部549からメッセージD548が供給される。また、セレクタ550には、制御部552から、バリアブルノード計算部545とチェックノード計算部549のうち、いま、演算が行われる計算部として一方の選択を表す選択信号D558が供給される。セレクタ550は、選択信号D558に基づいて、バリアブルノード計算部545によるバリアブルノード演算の結果得られる5個の枝に対応するメッセージD545と、チェックノード計算部549によるチェックノード演算の結果得られる5つの枝に対応するメッセージD548のうち一方を選択し、その選択したメッセージをメッセージD549として、サイクリックシフト回路551に供給する。   The selector 550 is supplied with the message D545 from the variable node calculation unit 545 and the message D548 from the check node calculation unit 549. Further, the selector 550 is supplied with a selection signal D558 representing one of the variable node calculation unit 545 and the check node calculation unit 549 as a calculation unit to be operated. The selector 550, based on the selection signal D558, receives the message D545 corresponding to the five branches obtained as a result of the variable node calculation by the variable node calculation unit 545, and the five obtained as a result of the check node calculation by the check node calculation unit 549. One of the messages D548 corresponding to the branch is selected, and the selected message is supplied to the cyclic shift circuit 551 as the message D549.

サイクリックシフト回路551には、セレクタ550からメッセージD549が供給されるとともに、制御部552から、そのメッセージD549に対応する枝が検査行列において元となる単位行列を幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D559が供給される。サイクリックシフト回路551は、制御信号D559を元に、5つのメッセージD549をサイクリックシフトし(並べ替え)、その結果をメッセージD550として、スイッチ540に供給する。   The cyclic shift circuit 551 is supplied with the message D549 from the selector 550, and from the control unit 552, how many branches corresponding to the message D549 are obtained by cyclically shifting the original unit matrix in the check matrix. The control signal D559 representing the information (Matrix data) is supplied. The cyclic shift circuit 551 cyclically shifts (rearranges) the five messages D549 based on the control signal D559, and supplies the result to the switch 540 as a message D550.

なお、制御部552は、選択信号D551をスイッチ540に、制御信号D552をスイッチ541に、選択信号D553をセレクタ543に供給することにより、それぞれを制御する。また、制御部552は、制御信号D554をバリアブルノード計算部545に、制御信号D555をスイッチ546に供給することにより、それぞれを制御する。さらに、制御部552は、選択信号D556をセレクタ548に、制御信号D557をチェックノード計算部549に、選択信号D558をセレクタ550に、制御信号D559をサイクリックシフト回路551に供給することにより、それぞれを制御する。   Note that the control unit 552 controls the selection signal D551 by supplying the selection signal D551 to the switch 540, the control signal D552 to the switch 541, and the selection signal D553 to the selector 543, respectively. In addition, the control unit 552 controls the control signal D554 by supplying the control signal D554 to the variable node calculation unit 545 and the control signal D555 to the switch 546, respectively. Further, the control unit 552 supplies the selection signal D556 to the selector 548, the control signal D557 to the check node calculation unit 549, the selection signal D558 to the selector 550, and the control signal D559 to the cyclic shift circuit 551, respectively. To control.

以上の動作を一巡することで、LDPC符号の1回の復号を行うことができる。図24の復号装置530は、所定の回数だけLDPC符号を復号した後、図示しないが、式(5)にしたがって最終的な復号結果を求めて出力する。   The LDPC code can be decoded once by completing the above operation. After decoding the LDPC code a predetermined number of times, the decoding device 530 in FIG. 24 obtains and outputs a final decoding result according to Equation (5), although not shown.

なお、枝データ(枝に対応するメッセージ)が欠けている箇所に関しては、メモリ格納時(枝データ格納メモリ542と547へのデータ格納時)には、何のメッセージも格納せず、また、ノード演算時(バリアブルノード計算部545でのバリアブルノード演算時とチェックノード計算部549でのチェックノード演算時と)にも何の演算も行わない。   In addition, regarding the portion where the branch data (message corresponding to the branch) is missing, no message is stored when the memory is stored (when the data is stored in the branch data storage memories 542 and 547), and the node No computation is performed during computation (variable node computation in the variable node computation unit 545 and check node computation in the check node computation unit 549).

図25は、図24の復号装置530の復号処理を説明するフローチャートである。この処理は、例えば、受信データ用メモリ544に復号すべき受信データが格納されたとき、開始される。   FIG. 25 is a flowchart for explaining the decoding process of the decoding device 530 of FIG. This process is started, for example, when reception data to be decoded is stored in the reception data memory 544.

ステップS81において、制御部552は、バリアブルノード計算部545とチェックノード計算部549のうち、いま、演算が行われる計算部として、バリアブルノード計算部545を選択し、その選択を表す選択信号D551と選択信号D558を、スイッチ540とセレクタ550にそれぞれ供給する。   In step S81, the control unit 552 selects the variable node calculation unit 545 as the calculation unit to be operated among the variable node calculation unit 545 and the check node calculation unit 549, and selects a selection signal D551 indicating the selection. The selection signal D558 is supplied to the switch 540 and the selector 550, respectively.

ステップS81の処理後は、ステップS82に進み、バリアブルノード計算部545は、バリアブルノード演算を行う。   After the process of step S81, the process proceeds to step S82, and the variable node calculation unit 545 performs a variable node calculation.

具体的には、バリアブルノード計算部545には、セレクタ543を介して、5つのメッセージD543(メッセージuj)が供給される。即ち、枝データ格納メモリ542は、後述するステップS93で格納されたFIFO5421から5つのメッセージD5421を順番に読み出し、その後、FIFO5422乃至54218からも、順番に、メッセージD5422乃至D54218を読み出して、セレクタ543に供給する。 Specifically, five messages D543 (message u j ) are supplied to the variable node calculation unit 545 via the selector 543. That is, the branch data storage memory 542 sequentially reads five messages D542 1 from the FIFO 542 1 stored in step S93, which will be described later, and then sequentially sends the messages D542 2 to D542 18 from the FIFOs 542 2 to 542 18 as well. Read and supply to the selector 543.

セレクタ543には、制御部552からFIFO5421乃至54218のうち、メッセージ(データ)を読み出すFIFO(現在データが読み出されているFIFO)の選択を表す選択信号D553が供給されるとともに、枝データ格納メモリ542からメッセージデータD5421乃至D54218が供給される。セレクタ543は、選択信号D553にしたがって、FIFO5421乃至54218のうちの、現在データが読み出されているFIFOを選択し、その選択したFIFOから供給される5つのメッセージデータを、メッセージD543として、バリアブルノード計算部545に供給する。 The selector 543 is supplied with a selection signal D553 indicating selection of a FIFO (FIFO from which data is currently being read) from among the FIFOs 542 1 to 542 18 from the control unit 552, and branch data. Message data D542 1 to D542 18 are supplied from the storage memory 542. The selector 543 selects the FIFO from which the current data is read out of the FIFOs 542 1 to 542 18 according to the selection signal D553, and sets five message data supplied from the selected FIFO as a message D543. This is supplied to the variable node calculation unit 545.

なお、受信用メモリ544から供給された受信データD544に対して、まだチェックノード演算が行われておらず、枝データ格納メモリ542にメッセージD550が格納されていない場合、バリアブルノード計算部545は、メッセージujを初期値に設定する。 Note that when the check node operation has not yet been performed on the reception data D544 supplied from the reception memory 544 and the message D550 is not stored in the branch data storage memory 542, the variable node calculation unit 545 Set message u j to the initial value.

また、バリアブルノード計算部545には、受信データ用メモリ544から5つの受信データD544(受信値u0i)が供給され、その受信データD544が、バリアブルノード計算器5451乃至5455のそれぞれに1つずつ供給される。さらに、バリアブルノード計算部545には、制御部552から制御信号D554が供給され、その制御信号D554がバリアブルノード計算器5451乃至5455に供給される。 The variable node calculation unit 545 is supplied with five reception data D544 (reception value u 0i ) from the reception data memory 544, and the reception data D544 is 1 for each of the variable node calculators 545 1 to 545 5. Supplied one by one. Further, the control signal D554 is supplied from the control unit 552 to the variable node calculation unit 545, and the control signal D554 is supplied to the variable node calculators 545 1 to 545 5 .

バリアブルノード計算器5451乃至5455は、メッセージD543と受信データD544とを用いて、制御信号D554に基づいて、式(1)にしたがって、それぞれ演算を行い、その演算の結果5つのメッセージD545を同時に求める。 The variable node calculators 545 1 to 545 5 use the message D543 and the received data D544 to perform calculations according to the expression (1) based on the control signal D554, and obtain five messages D545 as a result of the calculation. Ask at the same time.

即ち、制御部552がバリアブルノード計算部545に供給する制御信号D554は、前述の図11で説明した制御信号D107に対応するものであり、バリアブルノード計算器5451乃至5455は、制御信号D544にしたがい、セレクタ543を介して、枝データ格納メモリ542から必要なメッセージD543(D542)を、それぞれ1つずつ読み出すとともに、受信データ用メモリ544から供給された受信データD544を用いて、バリアブルノード演算を行い、その演算の結果5つのメッセージD545を同時に求める。 That is, the control signal D554 supplied from the control unit 552 to the variable node calculation unit 545 corresponds to the control signal D107 described with reference to FIG. 11, and the variable node calculators 545 1 to 545 5 are controlled by the control signal D544. Accordingly, the necessary messages D543 (D542) are read one by one from the branch data storage memory 542 via the selector 543, and variable node calculation is performed using the reception data D544 supplied from the reception data memory 544. And five messages D545 are obtained simultaneously as a result of the calculation.

ステップS82の処理後は、ステップS83に進み、バリアブルノード計算部545は、バリアブルノード計算器5451乃至5455のバリアブルノード演算の結果得られる5つのメッセージD545(メッセージvi)をセレクタ550に出力し、ステップS84に進む。 After the process of step S82, the process proceeds to step S83, and the variable node calculation unit 545 outputs five messages D545 (message v i ) obtained as a result of the variable node calculation of the variable node calculators 545 1 to 545 5 to the selector 550. Then, the process proceeds to step S84.

ステップS84において、セレクタ550は、ステップS81で供給された選択信号D558に基づいて、バリアブルノード計算部545とチェックノード計算部549のうちの一方を選択し、一方から出力されるメッセージを、メッセージD549として、サイクリックシフト回路551に供給(出力)する。ここでは、選択信号D558は、バリアブルノード計算部545の選択を表しているので、セレクタ550は、ステップS83で出力されたバリアブルノード演算の結果得られる5つのメッセージD545を、メッセージD549としてサイクリックシフト回路551に供給する。即ち、セレクタ550は、バリアブルノード計算部545とチェックノード計算部549のうち、いま、演算が行われている計算器から出力されるメッセージをサイクリックシフト回路551に供給する。   In step S84, the selector 550 selects one of the variable node calculation unit 545 and the check node calculation unit 549 based on the selection signal D558 supplied in step S81, and sends a message output from one of the messages to the message D549. Is supplied (output) to the cyclic shift circuit 551. Here, since the selection signal D558 represents the selection of the variable node calculation unit 545, the selector 550 cyclically shifts the five messages D545 obtained as a result of the variable node calculation output in step S83 as the message D549. This is supplied to the circuit 551. In other words, the selector 550 supplies the cyclic shift circuit 551 with a message output from the calculator currently performing the calculation among the variable node calculation unit 545 and the check node calculation unit 549.

ステップS84の処理後は、ステップS85に進み、サイクリックシフト回路551は、セレクタ550から供給された5つのメッセージD549を、サイクリックシフトする(並べ替える)。   After the process of step S84, the process proceeds to step S85, and the cyclic shift circuit 551 cyclically shifts (reorders) the five messages D549 supplied from the selector 550.

具体的には、サイクリックシフト回路551には、セレクタ550からメッセージD549が供給されるとともに、制御部552から、そのメッセージD549に対応する枝が検査行列において元となる単位行列を幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D559が供給される。サイクリックシフト回路551は、制御信号D559を元に、5つのメッセージD549をサイクリックシフトし、その結果をメッセージD550として、スイッチ540に供給する。   Specifically, the cyclic shift circuit 551 is supplied with the message D549 from the selector 550, and the control unit 552 cyclically shifts the unit matrix from which the branch corresponding to the message D549 is based on the check matrix. The control signal D559 representing the information (Matrix data) as to whether or not it has been supplied is supplied. The cyclic shift circuit 551 cyclically shifts five messages D549 based on the control signal D559, and supplies the result to the switch 540 as a message D550.

ステップS85の処理後は、ステップS86に進み、スイッチ540は、ステップS81で供給された制御信号D551に基づいて、枝データ格納メモリ542と枝データ格納メモリ547のうち一方を選択し、その選択した一方の枝データ格納メモリに、スイッチを介して、ステップS85で、サイクリックシフト回路550から供給される5つのメッセージD550を供給する。即ち、ここでは、ステップS81で供給された制御信号D551は、バリアブルノード計算部545の選択を表しているので、スイッチ540は、バリアブルノードからのメッセージを格納する枝データ格納メモリ547を選択し、その選択した枝データ格納メモリ547に、スイッチ546を介して、メッセージD550を供給する。   After the process of step S85, the process proceeds to step S86, and the switch 540 selects one of the branch data storage memory 542 and the branch data storage memory 547 based on the control signal D551 supplied in step S81, and selects the selected one. In step S85, the five messages D550 supplied from the cyclic shift circuit 550 are supplied to one branch data storage memory via the switch. That is, here, since the control signal D551 supplied in step S81 represents the selection of the variable node calculation unit 545, the switch 540 selects the branch data storage memory 547 for storing the message from the variable node, A message D550 is supplied to the selected branch data storage memory 547 via the switch 546.

具体的には、スイッチ546には、スイッチ540から、5つのメッセージ(データ)D550が供給されるとともに、そのメッセージ(データ)D550が検査行列のどの行に属するかの情報を表す制御信号D555が供給される。スイッチ546は、制御信号D555にしたがって、メッセージD550を格納するFIFOを、枝データ格納メモリ547のFIFO5471乃至5476の中から選択し、選択したFIFOに5つのメッセージデータD550をまとめて順番に供給していく。 Specifically, five messages (data) D550 are supplied from the switch 540 to the switch 546, and a control signal D555 indicating information on which row of the check matrix the message (data) D550 belongs to. Supplied. The switch 546 selects the FIFO storing the message D550 from the FIFOs 547 1 to 547 6 of the branch data storage memory 547 according to the control signal D555, and supplies the five message data D550 to the selected FIFO in order. I will do it.

そして、枝データ格納メモリ547のFIFO5471乃至54718は、スイッチ546から供給された5つのメッセージデータD550をまとめて順番に格納していく。 The FIFOs 547 1 to 547 18 of the branch data storage memory 547 collectively store the five message data D550 supplied from the switch 546 in order.

ステップS86の処理後は、ステップS87に進み、制御部552は、バリアブルノード計算部545により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS82に戻り、上述した処理を繰り返す。   After the processing of step S86, the process proceeds to step S87, and the control unit 552 determines whether the message of all branches is calculated by the variable node calculation unit 545, and determines that the message of all branches is not calculated. If so, the process returns to step S82 and the above-described processing is repeated.

一方、ステップS87において、バリアブルノード計算部545は、全枝数のメッセージが演算されたと判定した場合、ステップS88に進み、制御部552は、いま、演算が行われる計算部として、チェックノード計算部549を選択し、ステップS81で生成したバリアブルノード計算部545の選択を表す選択信号D551とD558を、チェックノード計算部549の選択を表す選択信号D551とD558に変更する。   On the other hand, when the variable node calculation unit 545 determines in step S87 that the message of all branches has been calculated, the process proceeds to step S88, and the control unit 552 now checks the check node calculation unit as the calculation unit on which the calculation is performed. 549 is selected, and the selection signals D551 and D558 representing selection of the variable node calculation unit 545 generated in step S81 are changed to selection signals D551 and D558 representing selection of the check node calculation unit 549.

ステップS88の処理後は、ステップS89に進み、チェックノード計算部549は、チェックノード演算を行う。   After the processing of step S88, the process proceeds to step S89, and the check node calculation unit 549 performs check node calculation.

具体的には、チェックノード計算部549には、セレクタ548を介して、5つのメッセージD547が供給される。即ち、枝データ格納メモリ547は、ステップS86で格納されたFIFO5471から5つのメッセージD5461(メッセージvi)を順番に読み出し、その後、FIFO5472乃至5476からも、順番に、メッセージデータD5462乃至D5466を読み出し、セレクタ548に供給する。 Specifically, five messages D547 are supplied to the check node calculation unit 549 via the selector 548. That is, the branch data storage memory 547 sequentially reads five messages D546 1 (message v i ) from the FIFO 547 1 stored in step S86, and then sequentially reads the message data D546 2 from the FIFOs 547 2 to 547 6. To D546 6 are read out and supplied to the selector 548.

セレクタ548には、制御部552からFIFO5471乃至5476のうち、メッセージデータを読み出すFIFO(現在データが読み出されているFIFO)の選択を表す選択信号D556が供給されるとともに、枝データ格納メモリ547からメッセージデータD5461乃至D5466が供給される。セレクタ548は、選択信号D556にしたがって、FIFO5471乃至5476のうちの、現在データが読み出されているFIFOを選択し、その選択したFIFOから供給される5つのメッセージデータを、メッセージD547として、チェックノード計算部549に供給する。 The selector 548 is supplied from the control unit 552 with a selection signal D556 indicating selection of a FIFO (FIFO from which data is currently read) from among the FIFOs 547 1 to 547 6 to read message data, and a branch data storage memory. Message data D546 1 to D546 6 are supplied from 547. The selector 548 selects the FIFO from which the current data is read out of the FIFOs 547 1 to 547 6 according to the selection signal D556, and sets five message data supplied from the selected FIFO as a message D547. This is supplied to the check node calculation unit 549.

また、チェックノード計算部549には、制御部552から制御信号D557が供給される。チェックノード計算部549のチェックノード計算器5491乃至5495は、制御信号D557に基づいて、メッセージD547を用いて、上述した式(7)にしたがって、チェックノード演算を行い、その演算結果である5つのメッセージD548(メッセージuj)を同時に求める。 In addition, the control signal D557 is supplied from the control unit 552 to the check node calculation unit 549. Based on the control signal D557, the check node calculators 549 1 to 549 5 of the check node calculation unit 549 perform the check node calculation according to the above-described equation (7) using the message D547, and the result is the calculation result. Five messages D548 (message u j ) are obtained simultaneously.

即ち、制御部552がチェックノード計算部549に供給する制御信号D557は、前述の図10で説明した制御信号D106に対応するものであり、チェックノード計算器5491乃至5495は、制御信号D557にしたがい、セレクタ548を介して、枝データ格納メモリ547から必要なメッセージD547(D546)を、それぞれ1つずつ読み出しながら、チェックノード演算を行い、その演算の結果5つのメッセージD548を同時に求める。 That is, the control signal D557 supplied from the control unit 552 to the check node calculation unit 549 corresponds to the control signal D106 described with reference to FIG. 10, and the check node calculators 549 1 to 549 5 receive the control signal D557. Accordingly, the check node operation is performed while reading the necessary messages D547 (D546) from the branch data storage memory 547 one by one via the selector 548, and five messages D548 are obtained simultaneously as a result of the operation.

ステップS89の処理後は、ステップS90に進み、チェックノード計算部549は、チェックノードの演算の結果得られる5つのメッセージD548をセレクタ550に出力して、ステップS91に進む。   After the process of step S89, the process proceeds to step S90, and the check node calculation unit 549 outputs five messages D548 obtained as a result of the check node calculation to the selector 550, and the process proceeds to step S91.

ステップS91において、セレクタ555は、ステップS88で変更された選択信号D558に基づいて、バリアブルノード計算部545とチェックノード計算部549のうち一方を選択し、一方から出力されるメッセージを、メッセージD549として、サイクリックシフト回路551に供給する。ここでは、選択信号D558は、チェックノード計算部549の選択を表しているので、セレクタ550は、ステップS90で出力されたチェックノード演算の結果得られるメッセージD548を、メッセージD549としてサイクリックシフト回路551に格納する。即ち、セレクタ550は、バリアブルノード計算部545とチェックノード計算部549のうち、いま、演算が行われている計算部から出力されるメッセージをサイクリックシフト回路551に供給する。   In step S91, the selector 555 selects one of the variable node calculation unit 545 and the check node calculation unit 549 based on the selection signal D558 changed in step S88, and a message output from one of them is set as a message D549. To the cyclic shift circuit 551. Here, since the selection signal D558 represents the selection of the check node calculation unit 549, the selector 550 uses the message D548 obtained as a result of the check node calculation output in step S90 as the message D549 and the cyclic shift circuit 551. To store. That is, the selector 550 supplies the cyclic shift circuit 551 with a message output from the calculation unit currently performing the calculation among the variable node calculation unit 545 and the check node calculation unit 549.

ステップS91の処理後は、ステップS92に進み、サイクリックシフト回路551は、セレクタ550から供給された5つのメッセージD549を、サイクリックシフトする。   After the process of step S91, the process proceeds to step S92, and the cyclic shift circuit 551 cyclically shifts the five messages D549 supplied from the selector 550.

具体的には、サイクリックシフト回路551には、セレクタ550からメッセージD549が供給されるとともに、制御部552から、そのメッセージD549に対応する枝が検査行列において元となる単位行列を幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D559が供給される。サイクリックシフト回路551は、制御信号D559を元に、5つのメッセージD549をサイクリックシフトし、その結果をメッセージD550として、スイッチ540に供給する。   Specifically, the cyclic shift circuit 551 is supplied with the message D549 from the selector 550, and the control unit 552 cyclically shifts the unit matrix from which the branch corresponding to the message D549 is based on the check matrix. The control signal D559 representing the information (Matrix data) as to whether or not it has been supplied is supplied. The cyclic shift circuit 551 cyclically shifts five messages D549 based on the control signal D559, and supplies the result to the switch 540 as a message D550.

ステップS92の処理後は、ステップS93に進み、スイッチ540は、ステップS88で変更された制御信号D551に基づいて、枝データ格納メモリ542と枝データ格納メモリ547のうち一方を選択し、その選択した一方の枝データ格納メモリに、スイッチを介して、ステップS91でサイクリックシフト回路550から供給される5つのメッセージD550を供給する。即ち、ここでは、ステップS88で供給された制御信号D551は、チェックノード計算部549の選択を表しているので、スイッチ540は、チェックノードからのメッセージを格納する枝データ格納メモリ542を選択し、その選択した枝データ格納メモリ542に、スイッチ541を介して、メッセージD540を供給する。   After the processing of step S92, the process proceeds to step S93, and the switch 540 selects one of the branch data storage memory 542 and the branch data storage memory 547 based on the control signal D551 changed in step S88, and selects the selected one. Five messages D550 supplied from the cyclic shift circuit 550 in step S91 are supplied to one branch data storage memory via a switch. That is, here, since the control signal D551 supplied in step S88 represents the selection of the check node calculation unit 549, the switch 540 selects the branch data storage memory 542 for storing the message from the check node, A message D540 is supplied to the selected branch data storage memory 542 via the switch 541.

具体的には、スイッチ542には、スイッチ540から、5つのメッセージ(データ)D550が供給されるとともに、そのメッセージ(データ)D550が検査行列のどの列に属するかの情報を表す制御信号D552が供給される。スイッチ541は、制御信号D552にしたがって、メッセージD550を格納するFIFOを、枝データ格納メモリ542のFIFO5421乃至54218の中から選び、選んだFIFOに5つのメッセージデータD550をまとめて順番に供給していく。 Specifically, five messages (data) D550 are supplied from the switch 540 to the switch 542, and a control signal D552 indicating information on which column of the check matrix the message (data) D550 belongs to. Supplied. The switch 541 selects the FIFO storing the message D550 from the FIFOs 542 1 to 542 18 of the branch data storage memory 542 according to the control signal D552, and supplies the five message data D550 to the selected FIFO in order. To go.

そして、枝データ格納メモリ542のFIFO5421乃至54218は、スイッチ541から供給された5つのメッセージデータD550をまとめて順番に格納していく。 The FIFOs 542 1 to 542 18 of the branch data storage memory 542 collectively store the five message data D550 supplied from the switch 541 in order.

ステップS93の処理後は、ステップS94に進み、制御部552は、チェックノード計算部549により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS89に戻り、上述した処理を繰り返す。   After the processing of step S93, the process proceeds to step S94, and the control unit 552 determines whether the message of the total number of branches has been calculated by the check node calculation unit 549, and determines that the message of the total number of branches has not been calculated. If so, the process returns to step S89 and the above-described processing is repeated.

一方、ステップS94において、制御部552は、チェックノード計算部549により、全枝数のメッセージが演算されたと判定した場合、処理を終了する。   On the other hand, in step S94, when the check node calculation unit 549 determines that the message of all branches has been calculated, the control unit 552 ends the process.

なお、復号装置530は、復号回数だけ図25の復号処理を繰り返し行ない、枝データ格納メモリ542に、最後のチェックノード演算の結果得られるメッセージD550(メッセージuj)が格納された場合、枝データ格納メモリ542は、そのメッセージD550を上述した式(5)の演算を行う不図示のブロックに供給する。不図示のブロックには、さらに受信用メモリ544から受信データD544が供給され、不図示のブロックは、メッセージD550と受信データD544を用いて、式(5)の演算を行い、その演算結果を最終的な復号結果として出力する。 Note that the decoding device 530 repeats the decoding process of FIG. 25 as many times as the number of decoding times, and when the message D550 (message u j ) obtained as a result of the last check node operation is stored in the branch data storage memory 542, the branch data The storage memory 542 supplies the message D550 to a block (not shown) that performs the calculation of Expression (5) described above. The reception data D544 is further supplied from the reception memory 544 to the block (not shown), and the block (not shown) performs the calculation of Expression (5) using the message D550 and the reception data D544, and the calculation result is finalized. Output as a typical decryption result.

上述したように、サイクリックシフト回路551には、バリアブルノード計算部545とチェックノード計算部549のうち、いま、演算が行われている計算部から出力されるメッセージが供給される。即ち、バリアブルノード演算は、チェックノード演算の結果であるメッセージujを用いて行われ、チェックノード演算は、バリアブルノード演算の結果であるメッセージviを用いて行われるため、復号装置530では、バリアブルノード演算とチェックノード演算が交互に行われる。従って、バリアブルノード計算部545とチェックノード計算部549のうち、いま、演算が行われている計算部から出力されるメッセージをサイクリックシフトすることにより、バリアブルノード演算の結果であるメッセージをサイクリックシフトするサイクリックシフト回路とチェックノード演算の結果であるメッセージをサイクリックシフトするサイクリックシフト回路を共有化して1つのサイクリックシフト回路にすることができ、バリアブルノード演算の結果であるメッセージをサイクリックシフトするサイクリックシフト回路520とチェックノード演算の結果であるメッセージをサイクリックシフトするサイクリックシフト回路513とを別々に有する図23の復号装置500に比べて、復号装置530の回路規模を小さくすることができる。 As described above, the cyclic shift circuit 551 is supplied with a message output from the calculation unit that is currently performing the computation among the variable node calculation unit 545 and the check node calculation unit 549. That is, the variable node operation is performed using the message u j that is the result of the check node operation, and the check node operation is performed using the message v i that is the result of the variable node operation. Variable node calculation and check node calculation are performed alternately. Accordingly, the cyclic node shifts the message output from the calculation unit currently performing the calculation among the variable node calculation unit 545 and the check node calculation unit 549, so that the message that is the result of the variable node calculation is cyclic. The cyclic shift circuit that shifts and the cyclic shift circuit that cyclically shifts the message that is the result of the check node operation can be shared to form one cyclic shift circuit, and the message that is the result of the variable node operation can be The circuit scale of the decoding device 530 is smaller than that of the decoding device 500 of FIG. 23 that has a cyclic shift circuit 520 that performs click shift and a cyclic shift circuit 513 that cyclically shifts the message that is the result of the check node operation. You It is possible.

図26は、本発明を適用した図22の検査行列Hで表現されるLDPC符号を復号する復号装置の他の一実施の形態の構成例を示している。   FIG. 26 illustrates a configuration example of another embodiment of a decoding device that decodes the LDPC code represented by the parity check matrix H of FIG. 22 to which the present invention has been applied.

図26の復号装置570では、図24のバリアブルノード計算部545およびチェックノード計算器549がさらに共有化され、1つのノード計算部581となっている。   In the decoding device 570 of FIG. 26, the variable node calculation unit 545 and the check node calculator 549 of FIG. 24 are further shared to form one node calculation unit 581.

復号装置570は、スイッチ540、スイッチ541、枝データ格納メモリ542、セレクタ543、受信データ用メモリ544、スイッチ546、枝データ格納メモリ547、セレクタ548、サイクリックシフト回路551、セレクタ580、ノード計算部581、および制御部582から構成される。即ち、図26の復号装置570は、図24の復号装置530のバリアブルノード計算部545およびチェックノード計算部549をさらに供有化してノード計算部581にし、セレクタ550をセレクタ580に、制御部552を制御部582に代えたものである。   The decoding device 570 includes a switch 540, a switch 541, a branch data storage memory 542, a selector 543, a reception data memory 544, a switch 546, a branch data storage memory 547, a selector 548, a cyclic shift circuit 551, a selector 580, and a node calculation unit. 581 and a control unit 582. That is, the decoding device 570 of FIG. 26 further provides the variable node calculation unit 545 and the check node calculation unit 549 of the decoding device 530 of FIG. 24 as the node calculation unit 581, the selector 550 as the selector 580, and the control unit 552. Is replaced with the control unit 582.

なお、図24と同一の符号を付したもの、即ち、図26の復号装置570のスイッチ540、スイッチ541、枝データ格納メモリ542、セレクタ543、受信データ用メモリ544、スイッチ546、枝データ格納メモリ547、セレクタ548、およびサイクリックシフト回路551は、図24の復号装置530のそれらと同一のものであり、説明は繰り返しになるので省略する。   24, that is, the switch 540, the switch 541, the branch data storage memory 542, the selector 543, the reception data memory 544, the switch 546, and the branch data storage memory of the decoding device 570 in FIG. 547, the selector 548, and the cyclic shift circuit 551 are the same as those of the decoding device 530 of FIG.

セレクタ580には、セレクタ543を介して、枝データ格納メモリ542に格納されているチェックノード演算の結果である5つのメッセージD543(メッセージuj)が供給されるとともに、セレクタ548を介して、枝データ格納メモリ547に格納されているバリアブルノード演算の結果である5つのメッセージD547(メッセージvi)が供給される。また、セレクタ580には、制御部582から、バリアブルノード演算とチェックノード演算のうち、いま、ノード計算部581で行う演算として一方の選択を表す選択信号D582が供給される。セレクタ580は、制御部582からの選択信号D582に基づいて、メッセージD543とメッセージD547のうち一方を選択し、その選択したメッセージをメッセージD580として、ノード計算部581に供給する。 The selector 580 is supplied with five messages D543 (message u j ), which are the results of the check node operation stored in the branch data storage memory 542, via the selector 543, and via the selector 548, the branch Five messages D547 (message v i ) that are the results of the variable node calculation stored in the data storage memory 547 are supplied. The selector 580 is supplied with a selection signal D582 indicating one of the variable node calculation and the check node calculation as the calculation performed by the node calculation unit 581. The selector 580 selects one of the message D543 and the message D547 based on the selection signal D582 from the control unit 582, and supplies the selected message to the node calculation unit 581 as the message D580.

ノード計算部581は、5つのノード計算器5811乃至5815からなる。ノード計算部581には、セレクタ580を介して5つのメッセージD580が供給され、そのメッセージD580が、ノード計算器5811乃至5815のそれぞれに1つずつ供給される。また、ノード計算部581には、受信データ用メモリ544から5つの受信データD544が供給され、その受信データD544が、ノード計算器5811乃至5815のそれぞれに1つずつ供給される。さらに、ノード計算部581には、制御部582から制御信号D583が供給されるとともに、バリアブルノード演算またはチェックノード演算のうち、いま、ノード計算部581で行う演算として一方の選択を表す選択信号D584が供給され、その制御信号D583と選択信号D584がノード計算器5811乃至5815に供給される。 The node calculation unit 581 includes five node calculators 581 1 to 5815 5 . The node calculator 581 is supplied with the five messages D580 through the selector 580, the message D580 is supplied one by one to each of the node calculator 581 1 to 581 5. Further, the node calculator 581, five received data D544 from the reception data memory 544 is supplied, the reception data D544 is supplied one by one to each of the node calculator 581 1 to 581 5. Further, the control signal D583 is supplied from the control unit 582 to the node calculation unit 581, and a selection signal D584 representing one selection as an operation to be performed by the node calculation unit 581 among the variable node calculation or the check node calculation. and the logic circuit selecting signal D584 and the control signal D583 is supplied to the node calculator 581 1 to 581 5.

ノード計算器5811乃至5815は、制御部582選択信号D584に基づき、バリアブルノード演算とチェックノード演算のうち一方を選択し、その選択した演算を行う。即ち、ノード計算器5811乃至5815は、制御信号D583に基づき、セレクタ580から供給されるメッセージD580と、受信用メモリ544から供給される受信データD544とを用い、式(1)にしたがって、それぞれ、LDPC符号の復号のためのバリアブルノード演算を行うか、あるいは、セレクタ580から供給されるメッセージD580を用い、式(7)にしたがって、それぞれ、LDPC符号の復号のためのチェックノードの演算を行う。つまり、ノード計算部581では、LDPC符号の復号のための5個のバリアブルノード演算、または5個のチェックノード演算が行われる。 The node calculators 581 1 to 5815 5 select one of the variable node calculation and the check node calculation based on the control unit 582 selection signal D584, and perform the selected calculation. That is, the node calculators 581 1 to 5815 5 use the message D580 supplied from the selector 580 and the reception data D544 supplied from the reception memory 544 based on the control signal D583, and according to the equation (1). Each performs variable node calculation for decoding the LDPC code, or uses the message D580 supplied from the selector 580 to perform check node calculation for decoding the LDPC code, respectively, according to Equation (7). Do. That is, the node calculation unit 581 performs five variable node calculations or five check node calculations for decoding the LDPC code.

そして、ノード計算器5811乃至5815は、バリアブルノード演算またはチェックノード演算の結果得られる枝に対応する5つのメッセージを、メッセージD581として、サイクリックシフト回路551に供給する。 Then, the node calculators 581 1 to 581 5 supply five messages corresponding to the branches obtained as a result of the variable node calculation or the check node calculation to the cyclic shift circuit 551 as the message D581.

ここで、制御部582からノード計算部581に供給される制御信号D583と選択信号D584は、図18の制御部356からノード計算器354に供給される制御信号D362と選択信号D361に対応するものであり、ノード計算器5811乃至5815それぞれは、図18のノード計算器354と同様に構成される。 Here, the control signal D583 and the selection signal D584 supplied from the control unit 582 to the node calculation unit 581 correspond to the control signal D362 and the selection signal D361 supplied from the control unit 356 to the node calculator 354 in FIG. , and the each node calculator 581 1 to 581 5, and similarly to the node calculator 354 of FIG. 18.

制御部582は、選択信号D551スイッチ540に、制御信号D552をスイッチ541に、選択信号D553をセレクタ543に、制御信号D555をスイッチ546に、選択信号D556をセレクタ548に、制御信号D559をサイクリックシフト回路551に、選択信号D582をセレクタ580に、制御信号D583と選択信号D584をノード計算部581に、それぞれ供給することにより、それぞれを制御する。   The control unit 582 cyclically selects the selection signal D551 switch 540, the control signal D552 to the switch 541, the selection signal D553 to the selector 543, the control signal D555 to the switch 546, the selection signal D556 to the selector 548, and the control signal D559. By supplying the selection signal D582 to the selector 580 and the control signal D583 and the selection signal D584 to the node calculation unit 581 respectively to the shift circuit 551, the control is performed.

図27は、図26の復号装置570の復号処理を説明するフローチャートである。この処理は、例えば、受信データ用メモリ544に復号すべき受信データが格納されたとき、開始される。   FIG. 27 is a flowchart for explaining the decoding process of the decoding device 570 of FIG. This process is started, for example, when reception data to be decoded is stored in the reception data memory 544.

ステップS101において、制御部582は、バリアブルノード演算とチェックノード演算のうち、いま、ノード計算部581で行う演算として、バリアブルノード演算を選択し、その選択を表す選択信号D551、D582、D584を、スイッチ540、セレクタ580、ノード計算部581にそれぞれ供給する。   In step S101, the control unit 582 selects a variable node operation as an operation to be performed by the node calculation unit 581 among the variable node operation and the check node operation, and selects selection signals D551, D582, and D584 indicating the selection. The data are supplied to the switch 540, the selector 580, and the node calculator 581, respectively.

ステップS101の処理後は、ステップS102に進み、セレクタ580は、ステップS101で制御部582から供給された選択信号D582に基づいて、ノード計算部581に、メッセージD580を供給する。ここでは、制御部582から供給される選択信号D582は、バリアブルノード演算の選択を表しているので、セレクタ580は、後述するステップS113で、バリアブルノード演算に用いられるチェックノード演算の結果得られるメッセージ(メッセージuj)を格納する枝データ格納メモリ542から、セレクタ543を介して供給されるメッセージD543を、メッセージD580として、ノード計算部581に供給する。 After the processing in step S101, the process proceeds to step S102, and the selector 580 supplies the message D580 to the node calculation unit 581 based on the selection signal D582 supplied from the control unit 582 in step S101. Here, since the selection signal D582 supplied from the control unit 582 indicates selection of variable node calculation, the selector 580 obtains a message obtained as a result of the check node calculation used for variable node calculation in step S113 described later. The message D543 supplied via the selector 543 is supplied from the branch data storage memory 542 storing (message u j ) to the node calculation unit 581 as the message D580.

即ち、枝データ格納メモリ542は、後述するステップS113で格納されたFIFO5421から5つのメッセージD5421を順番に読み出し、その後、FIFO5422乃至54218からも、順番に、メッセージD5422乃至D54218を読み出し、セレクタ543に供給する。 That is, the branch data storage memory 542 sequentially reads five messages D542 1 from the FIFO 542 1 stored in step S113 described later, and then sequentially sends the messages D542 2 to D542 18 from the FIFOs 542 2 to 542 18 as well. Read and supply to selector 543.

セレクタ543には、制御部552からFIFO5421乃至54218のうち、メッセージデータを読み出すFIFO(現在データが読み出されているFIFO)の選択を表す選択信号D553が供給されるとともに、枝データ格納メモリ542からメッセージデータD5421乃至D54218が供給される。セレクタ543は、選択信号D553にしたがって、FIFO5421乃至54218のうちの、現在データが読み出されているFIFOを選択し、その選択したFIFOから供給される5つのメッセージデータD542を、メッセージデータD543として、セレクタ580に供給する。そして、セレクタ580は、制御部582から供給される選択信号D582に基づいて、セレクタ543から供給されるメッセージD543(メッセージuj)を選択し、そのメッセージD543を、メッセージD580として、ノード計算部581に供給する。 The selector 543 is supplied from the control unit 552 with a selection signal D553 indicating selection of a FIFO (FIFO from which data is currently read) from which the message data is read out of the FIFOs 542 1 to 542 18 and the branch data storage memory. Message data D542 1 to D542 18 are supplied from 542. The selector 543 selects the FIFO from which the current data is read out of the FIFOs 542 1 to 542 18 in accordance with the selection signal D553, and selects five message data D542 supplied from the selected FIFO as message data D543. To the selector 580. Then, the selector 580 selects the message D543 (message u j ) supplied from the selector 543 based on the selection signal D582 supplied from the control unit 582, and the node calculation unit 581 uses the message D543 as the message D580. To supply.

なお、受信用メモリ544から供給された受信データD544に対して、まだチェックノード演算が行われておらず、枝データ格納メモリ542にメッセージD550が格納されていない場合、枝用データ格納メモリ542は、セレクタ543とセレクタ580を介して、メッセージD580をノード計算部582に供給せず、ノード計算部582は、メッセージujを初期値に設定する。 Note that when the check node operation has not been performed on the reception data D544 supplied from the reception memory 544 and the message D550 is not stored in the branch data storage memory 542, the branch data storage memory 542 The message D580 is not supplied to the node calculation unit 582 via the selector 543 and the selector 580, and the node calculation unit 582 sets the message u j to an initial value.

ステップS102の処理後は、ステップS103に進み、ノード計算部581は、バリアブルノード演算を行い、その演算結果をサイクリックシフト回路551に供給する。   After step S102, the process proceeds to step S103, where the node calculation unit 581 performs variable node calculation and supplies the calculation result to the cyclic shift circuit 551.

具体的には、ノード計算部581には、ステップS102でセレクタ580から5つのメッセージD580が供給されるとともに、受信データ用メモリ544から5つの受信データD544が供給され、メッセージD580と受信データD544が、ノード計算部581のノード計算器5811乃至5815のそれぞれに1つずつ供給される。さらに、ノード計算部581には、制御部582から制御信号D583と選択信号D584が供給され、その制御信号D583と選択信号D584がノード計算器5811乃至5815に供給される。 Specifically, the node calculator 581 is supplied with the five messages D580 from the selector 580 in step S102 and the five received data D544 from the received data memory 544, and the message D580 and the received data D544 are received. , One is supplied to each of the node calculators 581 1 to 5815 5 of the node calculator 581. Further, the node calculator 581 is supplied with the control signal D583 and the selection signal D584 from the control unit 582, the selection signal D584 and the control signal D583 is supplied to the node calculator 581 1 to 581 5.

ノード計算器5811乃至5815は、選択信号D584に基づいて、いま行う演算を選択する。即ち、ここでは、制御部582から供給される選択信号D584は、バリアブルノード演算の選択を表しているので、ノード計算器5811乃至5815は、制御部582により選択されたバリアブルノード演算を行う。つまり、ノード計算器5811乃至5815は、メッセージD580と受信データD544とを用いて、制御信号D583に基づいて、式(1)にしたがって、それぞれ演算を行い、その演算の結果得られるメッセージD581をサイクリックシフト回路551に供給する。 The node calculators 581 1 to 5815 5 select an operation to be performed based on the selection signal D584. That is, here, the selection signal D584 supplied from the control unit 582, since it represents the selection of the variable node operation, the node calculator 581 1 to 581 5 performs variable node operation selected by the control unit 582 . In other words, the node calculator 581 1 to 581 5, using messages D580 and the reception data D544, based on the control signal D583, according to equation (1), respectively performs a calculation, obtained as a result of the operation message D581 Is supplied to the cyclic shift circuit 551.

ここで、制御部582がノード計算部581に供給する制御信号D583と選択信号D584は、前述の図18で説明した制御信号D362と選択信号D361にそれぞれ対応するものであり、ノード計算器5811乃至5815は、選択信号D584に基づいて、いま行う演算を選択し、制御信号D582にしたがい、セレクタ543と580を介して、枝データ格納メモリ542から必要なメッセージD543(D542)を、それぞれ1つずつ読み出すとともに、受信データ用メモリ544から供給された受信データD544を用いて、バリアブルノード演算を行い、その演算の結果得られるメッセージD581をサイクリックシフト回路551に供給する。 Here, the control signal D583 and the selection signal D584 supplied from the control unit 582 to the node calculation unit 581 respectively correspond to the control signal D362 and the selection signal D361 described with reference to FIG. 18, and the node calculator 581 1. to 581 5, based on the selection signal D584, select the operation performed now, follow the control signal D582, via the selector 543 and 580, the message D543 (D542) required from the edge data storage memory 542, respectively 1 While reading each one, variable node calculation is performed using the reception data D544 supplied from the reception data memory 544, and a message D581 obtained as a result of the calculation is supplied to the cyclic shift circuit 551.

ステップS104の処理後は、ステップS105に進み、サイクリックシフト回路551は、ノード計算部581から供給されたバリアブルノード演算の結果得られる5個の枝に対応する5つのメッセージD581を、サイクリックシフトする。   After the processing in step S104, the process proceeds to step S105, where the cyclic shift circuit 551 cyclically shifts five messages D581 corresponding to the five branches obtained as a result of the variable node calculation supplied from the node calculation unit 581. To do.

具体的には、サイクリックシフト回路551には、ノード計算部581からメッセージD581が供給されるとともに、制御部582から、そのメッセージD581に対応する枝が検査行列において元となる単位行列を幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D559が供給される。サイクリックシフト回路551は、制御信号D559を元に、5つのメッセージD581をサイクリックシフトし、その結果をメッセージD550として、スイッチ540に供給する。   Specifically, the cyclic shift circuit 551 is supplied with the message D581 from the node calculation unit 581, and from the control unit 582, the unit corresponding to the branch corresponding to the message D581 is generated from the cyclic matrix. A control signal D559 representing information (Matrix data) as to whether it has been click-shifted is supplied. The cyclic shift circuit 551 cyclically shifts five messages D581 based on the control signal D559, and supplies the result to the switch 540 as a message D550.

ステップS105の処理後は、ステップS106に進み、スイッチ540は、ステップS101で供給された制御信号D551に基づいて、枝データ格納メモリ542と枝データ格納メモリ547のうち一方を選択し、その選択した一方の枝データ格納メモリに、スイッチを介して、ステップS105でサイクリックシフト回路550から供給される5つのメッセージD550を供給する。即ち、ここでは、ステップS101で供給された制御信号D551は、バリアブルノード演算の選択を表しているので、スイッチ540は、バリアブルノードからのメッセージを格納する枝データ格納メモリ547を選択し、その選択した枝データ格納メモリ547に、スイッチ546を介して、メッセージD550を供給する。   After the process of step S105, the process proceeds to step S106, and the switch 540 selects one of the branch data storage memory 542 and the branch data storage memory 547 based on the control signal D551 supplied in step S101, and selects the selected one. Five messages D550 supplied from the cyclic shift circuit 550 in step S105 are supplied to one branch data storage memory via a switch. That is, here, since the control signal D551 supplied in step S101 represents selection of variable node calculation, the switch 540 selects the branch data storage memory 547 for storing the message from the variable node and selects the selection. The message D550 is supplied to the branch data storage memory 547 via the switch 546.

具体的には、スイッチ546には、スイッチ540から、5つのメッセージ(データ)D550が供給されるとともに、そのメッセージ(データ)D550が検査行列のどの行に属するかの情報を表す制御信号D555が供給される。スイッチ546は、制御信号D555にしたがって、メッセージD550を格納するFIFOを、枝データ格納メモリ547のFIFO5471乃至5476の中から選択し、選択したFIFOに5つのメッセージデータD550をまとめて順番に供給していく。 Specifically, five messages (data) D550 are supplied from the switch 540 to the switch 546, and a control signal D555 indicating information on which row of the check matrix the message (data) D550 belongs to. Supplied. The switch 546 selects the FIFO storing the message D550 from the FIFOs 547 1 to 547 6 of the branch data storage memory 547 according to the control signal D555, and supplies the five message data D550 to the selected FIFO in order. I will do it.

そして、枝データ格納メモリ547のFIFO5471乃至54718は、スイッチ546から供給された5つのメッセージデータD550(メッセージvi)をまとめて順番に格納していく。 Then, the FIFOs 547 1 to 547 18 of the branch data storage memory 547 collectively store the five message data D550 (message v i ) supplied from the switch 546 in order.

ステップS106の処理後は、ステップS107に進み、制御部582は、ノード計算部581により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS102に戻り、上述した処理を繰り返す。   After the processing of step S106, the process proceeds to step S107, and the control unit 582 determines whether or not the message of the total number of branches has been calculated by the node calculation unit 581 and determines that the message of the total number of branches has not been calculated. If so, the process returns to step S102 and the above-described processing is repeated.

一方、ステップS107において、制御部582は、ノード計算部581により、全枝数のメッセージが演算されたと判定した場合、ステップS108に進み、制御部582は、いま、ノード計算部581で行う演算として、チェックノード演算を選択し、ステップS101で生成したバリアブルノード演算の選択を表す選択信号D551、D582、D584を、チェックノード演算の選択を表す選択信号D551、D582、D584に変更する。   On the other hand, in step S107, when the control unit 582 determines that the message of all branches has been calculated by the node calculation unit 581, the control unit 582 proceeds to step S108, and the control unit 582 now performs the calculation performed by the node calculation unit 581. Then, the check node calculation is selected, and the selection signals D551, D582, and D584 that indicate the selection of the variable node calculation generated in step S101 are changed to the selection signals D551, D582, and D584 that indicate the selection of the check node calculation.

ステップS108の処理後は、ステップS109に進み、セレクタ580は、ステップS101で制御部582から供給された選択信号D582に基づいて、ノード計算部581に、メッセージD580を供給する。ここでは、ステップS108で変更された選択信号D582は、チェックノード演算の選択を表しているので、セレクタ580は、ステップS106で、チェックノード演算に用いられるバリアブルノード演算の結果得られるメッセージ(メッセージvi)を格納する枝データ格納メモリ547から、セレクタ548を介して供給されるメッセージD547を、メッセージD580として、ノード計算部581に供給する。 After the processing in step S108, the process proceeds to step S109, and the selector 580 supplies the message D580 to the node calculation unit 581 based on the selection signal D582 supplied from the control unit 582 in step S101. Here, since the selection signal D582 changed in step S108 represents the selection of the check node operation, the selector 580 obtains a message (message v) obtained as a result of the variable node operation used for the check node operation in step S106. The message D547 supplied via the selector 548 is supplied from the branch data storage memory 547 storing i ) to the node calculation unit 581 as the message D580.

即ち、枝データ格納メモリ547は、ステップS106で格納されたFIFO5471から5つのメッセージD5461を順番に読み出し、その後、FIFO5472乃至5476からも、順番に、メッセージデータD5462乃至D5466を読み出し、セレクタ548に供給する。 That is, the branch data storage memory 547 sequentially reads the five messages D546 1 from the FIFO 547 1 stored in step S106, and then sequentially reads the message data D546 2 to D546 6 from the FIFOs 547 2 to 547 6 as well. , Supplied to the selector 548.

セレクタ548には、制御部582からFIFO5471乃至5476のうち、メッセージデータを読み出すFIFO(現在データが読み出されているFIFO)の選択を表す選択信号D556が供給されるとともに、枝データ格納メモリ547からメッセージデータD5461乃至D5466が供給される。セレクタ548は、選択信号D556にしたがって、FIFO5471乃至5476のうちの、現在データが読み出されているFIFOを選択し、その選択したFIFOから供給される5つのメッセージデータD546を、メッセージD547として、セレクタ580に供給する。そして、セレクタ580は、制御部582から供給される選択信号D582に基づいて、セレクタ548から供給されるメッセージD547(メッセージvi)を選択し、そのメッセージD547を、メッセージD580として、ノード計算部581に供給する。 The selector 548 is supplied from the control unit 582 with a selection signal D556 indicating the selection of the FIFO (FIFO from which data is currently read) from among the FIFOs 547 1 to 547 6 to read message data, and the branch data storage memory. Message data D546 1 to D546 6 are supplied from 547. The selector 548 selects the FIFO from which the current data is read out of the FIFOs 547 1 to 547 6 in accordance with the selection signal D556, and sets five message data D546 supplied from the selected FIFO as a message D547. , Supplied to the selector 580. Then, the selector 580 selects the message D547 (message v i ) supplied from the selector 548 based on the selection signal D582 supplied from the control unit 582, and the node calculation unit 581 uses the message D547 as the message D580. To supply.

ステップS109の処理後は、ステップS110に進み、ノード計算部581は、チェックノード演算を行い、その演算結果をサイクリックシフト回路551に供給する。   After the process of step S109, the process proceeds to step S110, where the node calculation unit 581 performs a check node calculation and supplies the calculation result to the cyclic shift circuit 551.

具体的には、ノード計算部581には、ステップS109でセレクタ580から5つのメッセージD580が供給され、メッセージD580が、ノード計算部581のノード計算器5811乃至5815のそれぞれに1つずつ供給される。さらに、ノード計算部581には、制御部582から制御信号D583と選択信号D584が供給され、その制御信号D583と選択信号D584がノード計算器5811乃至5815に供給される。 Specifically, five messages D580 are supplied from the selector 580 to the node calculator 581 in step S109, and one message D580 is supplied to each of the node calculators 581 1 to 5815 5 of the node calculator 581. Is done. Further, the node calculator 581 is supplied with the control signal D583 and the selection signal D584 from the control unit 582, the selection signal D584 and the control signal D583 is supplied to the node calculator 581 1 to 581 5.

ノード計算器5811乃至5815は、選択信号D584に基づいて、いま行う演算を選択する。即ち、ここでは、制御部582から供給される選択信号D584は、チェックノード演算の選択を表しているので、ノード計算器5811乃至5815は、制御部582により選択されたチェックノード演算を行う。つまり、ノード計算器5811乃至5815は、メッセージD580を用いて、制御信号D583に基づいて、式(7)にしたがって、それぞれ演算を行い、その演算の結果得られるメッセージD581をサイクリックシフト回路551に供給する。 The node calculators 581 1 to 5815 5 select an operation to be performed based on the selection signal D584. That is, here, the selection signal D584 supplied from the control unit 582, since it represents the check node operation, the node calculator 581 1 to 581 5, a check node calculation, which is selected by the control unit 582 . That is, node calculator 581 1 to 581 5, using the message D580, based on the control signal D583, according to equation (7), respectively performs the operation, the cyclic shift circuit messages D581 obtained as a result of the calculation 551 is supplied.

ここで、制御部582がノード計算部581に供給する制御信号D583と選択信号D584は、前述の図18で説明した制御信号D362と選択信号D361にそれぞれ対応するものであり、ノード計算器5811乃至5815は、選択信号D584に基づいて、いま行う演算を選択し、制御信号D582にしたがい、セレクタ543と580を介して、枝データ格納メモリ542から必要なメッセージD543(D542)を、それぞれ1つずつ読み出しながら、チェックノード演算を行い、その演算の結果得られるメッセージD581をサイクリックシフト回路551に供給する。 Here, the control signal D583 and the selection signal D584 supplied from the control unit 582 to the node calculation unit 581 respectively correspond to the control signal D362 and the selection signal D361 described with reference to FIG. 18, and the node calculator 581 1. to 581 5, based on the selection signal D584, select the operation performed now, follow the control signal D582, via the selector 543 and 580, the message D543 (D542) required from the edge data storage memory 542, respectively 1 A check node operation is performed while reading each data, and a message D581 obtained as a result of the operation is supplied to the cyclic shift circuit 551.

ステップS111の処理後は、ステップS112に進み、サイクリックシフト回路551は、ノード計算部581から供給されたチェックノード演算の結果得られる5個の枝に対応する5つのメッセージD581を、サイクリックシフトする。   After the processing of step S111, the process proceeds to step S112, where the cyclic shift circuit 551 cyclically shifts five messages D581 corresponding to the five branches obtained as a result of the check node calculation supplied from the node calculation unit 581. To do.

具体的には、サイクリックシフト回路551には、ノード計算部581からメッセージD581が供給されるとともに、制御部582から、そのメッセージD581に対応する枝が検査行列において元となる単位行列を幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D559が供給される。サイクリックシフト回路551は、制御信号D559を元に、5つのメッセージD581をサイクリックシフトし、その結果をメッセージD550として、スイッチ540に供給する。   Specifically, the cyclic shift circuit 551 is supplied with the message D581 from the node calculation unit 581, and from the control unit 582, the unit corresponding to the branch corresponding to the message D581 is generated from the cyclic matrix. A control signal D559 representing information (Matrix data) as to whether it has been click-shifted is supplied. The cyclic shift circuit 551 cyclically shifts five messages D581 based on the control signal D559, and supplies the result to the switch 540 as a message D550.

ステップS112の処理後は、ステップS113に進み、スイッチ540は、ステップS108で変更された制御信号D551に基づいて、枝データ格納メモリ542と枝データ格納メモリ547のうち一方を選択し、その選択した一方の枝データ格納メモリに、スイッチを介して、ステップS112で、サイクリックシフト回路551から供給される5つのメッセージD550を供給する。即ち、ここでは、ステップS108で変更された制御信号D551は、チェックノード演算の選択を表しているので、スイッチ540は、チェックノードからのメッセージを格納する枝データ格納メモリ542を選択し、その選択した枝データ格納メモリ542に、スイッチ541を介して、メッセージD550を供給する。   After the process of step S112, the process proceeds to step S113, and the switch 540 selects one of the branch data storage memory 542 and the branch data storage memory 547 based on the control signal D551 changed in step S108, and selects the selected one. In step S112, five messages D550 supplied from the cyclic shift circuit 551 are supplied to one branch data storage memory via a switch. That is, here, since the control signal D551 changed in step S108 represents the selection of the check node calculation, the switch 540 selects the branch data storage memory 542 for storing the message from the check node and selects the selection. The message D550 is supplied to the branch data storage memory 542 via the switch 541.

具体的には、スイッチ542には、スイッチ540から、5つのメッセージ(データ)D550が供給されるとともに、そのメッセージ(データ)D550が検査行列のどの列に属するかの情報を表す制御信号D552が供給される。スイッチ546は、制御信号D552にしたがって、メッセージD550を格納するFIFOを、枝データ格納メモリ542のFIFO5421乃至54218の中から選択し、選択したFIFOに5つのメッセージデータD550をまとめて順番に供給していく。 Specifically, five messages (data) D550 are supplied from the switch 540 to the switch 542, and a control signal D552 indicating information on which column of the check matrix the message (data) D550 belongs to. Supplied. The switch 546 selects the FIFO storing the message D550 from the FIFOs 542 1 to 542 18 of the branch data storage memory 542 according to the control signal D552, and supplies the five message data D550 to the selected FIFO in order. I will do it.

そして、枝データ格納メモリ542のFIFO5421乃至54218は、スイッチ541から供給された5つのメッセージデータD550をまとめて順番に格納していく。 The FIFOs 542 1 to 542 18 of the branch data storage memory 542 collectively store the five message data D550 supplied from the switch 541 in order.

ステップS113の処理後は、ステップS114に進み、制御部582は、ノード計算部581により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS109に戻り、上述した処理を繰り返す。   After the processing of step S113, the process proceeds to step S114, and the control unit 582 determines whether or not the message of the total number of branches has been calculated by the node calculation unit 581 and determines that the message of the total number of branches has not been calculated. In the case, the process returns to step S109 and the above-described processing is repeated.

一方、ステップS114において、制御部582は、チェックノード計算器581により、全枝数のメッセージが演算されたと判定した場合、処理を終了する。   On the other hand, when the check node calculator 581 determines in step S114 that the message of all branches has been calculated, the control unit 582 ends the process.

なお、復号装置570は、復号回数だけ図27の復号処理を繰り返し行ない、枝データ格納メモリ542に最後のチェックノード演算の結果得られるメッセージD550が格納された場合、枝データ格納メモリ542は、そのメッセージD550を上述した式(5)の演算を行う不図示のブロックに供給する。不図示のブロックには、さらに、受信データ用メモリ544から受信データD544が供給され、不図示のブロックは、メッセージD550と受信データD544を用いて、式(5)の演算を行い、その演算結果を最終的な復号結果として出力する。   The decoding device 570 repeats the decoding process of FIG. 27 as many times as the number of decoding times, and when the message D550 obtained as a result of the last check node operation is stored in the branch data storage memory 542, the branch data storage memory 542 The message D550 is supplied to a block (not shown) that performs the calculation of the above formula (5). The block (not shown) is further supplied with reception data D544 from the reception data memory 544. The block (not shown) performs the calculation of Expression (5) using the message D550 and the reception data D544, and the calculation result is as follows. Is output as the final decoding result.

上述したように、ノード計算部581では、バリアブルノード演算とチェックノード演算の両方の演算が行われる。即ち、バリアブルノード演算は、チェックノード演算の結果であるメッセージujを用いて行われ、チェックノード演算は、バリアブルノード演算の結果であるメッセージviを用いて行われるため、復号装置570では、バリアブルノード演算とチェックノード演算が交互に行われる。従って、ノード計算部581のノード計算器5811乃至5815は、バリアブルノード演算とチェックノード演算に必要な共通のブロックをそれぞれ共有化し、バリアブルノード演算とチェックノード演算を交互に行うことにより、バリアブルノード計算器とチェックノード計算器を共有化して、それぞれ1つのノード計算器にすることができ、バリアブルノード演算を行うバリアブルノード計算部545とチェックノード計算部549とを別々に有する図24の復号装置530に比べて、さらに復号装置570の回路規模を小さくすることができる。 As described above, the node calculation unit 581 performs both the variable node calculation and the check node calculation. That is, the variable node operation is performed using the message u j that is the result of the check node operation, and the check node operation is performed using the message v i that is the result of the variable node operation. Variable node calculation and check node calculation are performed alternately. Therefore, the node calculator 581 1 to 581 5 of the node calculator 581, by performing a common blocks required for a variable node calculation and a check node calculation respectively share, alternately variable node calculation and a check node calculation, variable The node calculator and the check node calculator can be shared to form one node calculator, and each of the nodes shown in FIG. 24 has a variable node calculation unit 545 and a check node calculation unit 549 that perform variable node calculation separately. Compared to the device 530, the circuit scale of the decoding device 570 can be further reduced.

上術した説明では、枝データ格納にFIFOを用いたが(枝データ格納メモリ542と547をFIFOで構成するようにしたが)、FIFOの代わりにRAMを用いても構わない。その場合、RAMには、P個の枝情報(枝に対応するメッセージ)を同時に読み出すことの出来るビット幅と、枝総数/Pのワード(word)数が必要となる。さらに、RAMへの書き込みは、検査行列の情報から、書き込もうとしているデータが次に読み出される際に何番目に読み出されるかを求め、その位置に書き込む。また、RAMからの読み出しの際には、アドレスの先頭から順次データを読み出す。FIFOの代わりにRAMを用いると、セレクタ541および546は不要になる。   In the above description, the FIFO is used for storing the branch data (the branch data storage memories 542 and 547 are configured by the FIFO), but a RAM may be used instead of the FIFO. In this case, the RAM needs a bit width from which P pieces of branch information (messages corresponding to the branches) can be read simultaneously and the number of words of the total number of branches / P. Further, in writing to the RAM, the number of the data to be written is read when the data to be written is read next from the information in the check matrix, and the data is written at that position. When reading from the RAM, data is read sequentially from the beginning of the address. If RAM is used instead of FIFO, selectors 541 and 546 are not required.

このように、枝データ格納にFIFOの代わりにRAMを用い、枝データ格納メモリ542および枝データ格納メモリ547をさらに共有化した復号装置を図28に示す。   FIG. 28 shows a decoding apparatus in which RAM is used instead of FIFO for branch data storage and the branch data storage memory 542 and branch data storage memory 547 are further shared.

図28は、本発明を適用した図22の検査行列Hで表現されるLDPC符号を復号する復号装置のさらに他の一実施の形態の構成例を示している。   FIG. 28 illustrates a configuration example of still another embodiment of a decoding device that decodes an LDPC code represented by the parity check matrix H of FIG. 22 to which the present invention has been applied.

図28の復号装置600では、図26の枝データ格納メモリ542および枝データ格納メモリ547がさらに共有化され、1つの枝用格納メモリ610となっている。   In the decoding device 600 of FIG. 28, the branch data storage memory 542 and the branch data storage memory 547 of FIG. 26 are further shared to form one branch storage memory 610.

復号装置600は、受信データ用メモリ544、サイクリックシフト回路551、ノード計算部581、枝用メモリ610、および制御部611から構成される。即ち、図28の復号装置600は、図26の復号装置570の枝データ格納メモリ542および枝データ格納メモリ547を共有化して枝用メモリ610にし、スイッチ540、セレクタ580を削除して、制御部582を制御部611に代えたものである。   The decoding device 600 includes a reception data memory 544, a cyclic shift circuit 551, a node calculation unit 581, a branch memory 610, and a control unit 611. That is, the decoding device 600 of FIG. 28 shares the branch data storage memory 542 and the branch data storage memory 547 of the decoding device 570 of FIG. 26 into the branch memory 610, deletes the switch 540 and the selector 580, and 582 is replaced with a control unit 611.

なお、図26と同一の符号を付したもの、即ち、図28の復号装置600の受信データ用メモリ544、サイクリックシフト回路551、およびノード計算部581は、図26の復号装置570のそれらと同一のものであり、説明は繰り返しになるので省略する。   26, that is, the received data memory 544, the cyclic shift circuit 551, and the node calculation unit 581 of the decoding device 600 of FIG. 28 are the same as those of the decoding device 570 of FIG. Since the description is the same, the description will be omitted.

枝用メモリ610には、サイクリックシフト回路551から、ノード計算部581によるチェックノードの演算、またはバリアブルノードの演算の結果得られる5個の枝に対応する5つのメッセージD611がサイクリックシフトされた5つのメッセージD550が供給され、枝用メモリ610は、サイクリックシフト回路551から供給された5つのメッセージD550を同一アドレスに格納(記憶)し、既に格納してある5つのメッセージD550を、5つのメッセージD610として、5つ同時に読み出し、ノード計算部581に供給する。   In the branch memory 610, five messages D611 corresponding to five branches obtained as a result of the check node calculation by the node calculation unit 581 or the variable node calculation are cyclically shifted from the cyclic shift circuit 551. Five messages D550 are supplied, and the branch memory 610 stores (stores) the five messages D550 supplied from the cyclic shift circuit 551 at the same address, and stores the five messages D550 already stored in five Five messages D610 are simultaneously read and supplied to the node calculator 581.

即ち、枝用メモリ610は、サイクリックシフト回路551から供給され、ノード計算部581がバリアブルノード演算またはチェックノード演算に用いる順番に、同一アドレスに格納してある5つのメッセージD550を読み出し、メッセージD610として、5つ同時にノード計算部581に供給すると同時に、サイクリックシフト回路551が出力する5つのメッセージD550を受信し、枝用メモリ610の既に読み出されたメッセージ(メッセージD610)が記憶されていたアドレスに、5つ同時に書き込む。即ち、枝用メモリ610は、ノード計算部581に供給するメッセージD610の5つ同時の読み出しと、ノード計算部581から供給されるメッセージD550の5つ同時の書き込みとを、同時に行う。   That is, the branch memory 610 is supplied from the cyclic shift circuit 551, and reads the five messages D550 stored at the same address in the order used by the node calculation unit 581 for the variable node calculation or the check node calculation. At the same time, the five messages D550 output from the cyclic shift circuit 551 are received at the same time as the five messages are supplied to the node calculation unit 581, and the already read message (message D610) in the branch memory 610 is stored. Write five addresses simultaneously. That is, the branch memory 610 simultaneously reads five messages D610 supplied to the node calculation unit 581 and simultaneously writes five messages D550 supplied from the node calculation unit 581.

なお、枝用メモリ610には、ノード計算部581のバリアブルノード演算、またはチェックノード演算により演算された枝に対応するメッセージがサイクリックシフトされた結果が格納されるので、枝用メモリ610に格納されるデータ量、即ち、枝用メモリ610に必要とされる記憶容量は、メッセージの量子化ビット数と、全枝数との乗算値となる。   The branch memory 610 stores a result obtained by cyclically shifting the message corresponding to the branch calculated by the variable node calculation or the check node calculation of the node calculation unit 581, and is stored in the branch memory 610. The amount of data to be processed, that is, the storage capacity required for the branch memory 610 is a product of the number of quantization bits of the message and the total number of branches.

また、枝用メモリ610は、読み出しと書き込みが同時に可能な、例えば、デュアルポートRAMで構成することができる。   Further, the branch memory 610 can be configured by, for example, a dual port RAM capable of reading and writing simultaneously.

制御部611は、制御信号D559、または制御信号D583と選択信号D584を、サイクリックシフト回路551、またはノード計算部581にそれぞれ供給することにより、それぞれを制御する。   The control unit 611 controls the control signal D559 or the control signal D583 and the selection signal D584 by supplying them to the cyclic shift circuit 551 or the node calculation unit 581, respectively.

図29は、図28の復号装置600の復号処理を説明するフローチャートである。この処理は、例えば、受信データ用メモリ544に復号すべき受信データが格納されたとき、開始される。   FIG. 29 is a flowchart for explaining the decoding process of the decoding device 600 of FIG. This process is started, for example, when reception data to be decoded is stored in the reception data memory 544.

ステップS121において、制御部611は、バリアブルノード演算とチェックノード演算のうち、いま、ノード計算部581で行う演算として、バリアブルノード演算を選択し、その選択を表す選択信号D584を、ノード計算部581に供給する。   In step S <b> 121, the control unit 611 selects a variable node operation as an operation to be performed by the node calculation unit 581 out of the variable node operation and the check node operation, and receives a selection signal D584 indicating the selection as the node calculation unit 581. To supply.

ステップS121の処理後は、ステップS122に進み、ノード計算部581は、ステップS121で制御部611から供給された選択信号D584に基づいて、バリアブルノード演算とチェックノード演算のうち、いま行う演算として、バリアブルノード演算を選択し、バリアブルノード演算を行う。   After the process of step S121, the process proceeds to step S122, and the node calculation unit 581 performs the current calculation of the variable node calculation and the check node calculation based on the selection signal D584 supplied from the control unit 611 in step S121. A variable node calculation is selected and a variable node calculation is performed.

具体的には、ノード計算部581には、枝用メモリ610から、後述するステップS129で格納(記憶)されたチェックノードからの5つのメッセージD610(メッセージuj)が供給されるとともに、受信データ用メモリ544から5つの受信データD544が供給され、メッセージD610と受信データD544が、ノード計算部581のノード計算器5811乃至5815のそれぞれに1つずつ供給される。また、ノード計算部581には、制御部611から制御信号D583と選択信号D584が供給される。 Specifically, the node calculation unit 581 is supplied with five messages D610 (message u j ) from the check node stored (stored) in step S129 described later from the branch memory 610 and received data. from use the memory 544 has five received data D544 are supplied, the message D610 as reception data D544 are supplied one by one to each of the node calculator 581 1 to 581 5 of the node calculator 581. Further, the control signal D583 and the selection signal D584 are supplied from the control unit 611 to the node calculation unit 581.

なお、受信用メモリ544から供給された受信データD544に対して、まだチェックノード演算が行われておらず、枝用メモリ610にメッセージD550(D610)が格納されていない場合、枝用メモリ610は、メッセージD610をノード計算部581に供給せず、ノード計算部581は、メッセージujを初期値に設定する。 Note that if the check node operation has not yet been performed on the reception data D544 supplied from the reception memory 544 and the message D550 (D610) is not stored in the branch memory 610, the branch memory 610 , The message D610 is not supplied to the node calculation unit 581, and the node calculation unit 581 sets the message u j to an initial value.

ノード計算器5811乃至5815は、選択信号D584に基づいて、いま行う演算を選択する。即ち、ここでは、制御部611から供給される選択信号D584は、バリアブルノード演算の選択を表しているので、ノード計算器5811乃至5815は、バリアブルノード演算を行う。つまり、ノード計算器5811乃至5815は、メッセージD610と受信データD544とを用いて、制御信号D583に基づいて、式(1)にしたがって、それぞれ演算を行い、その演算の結果であるメッセージD611を得る。 The node calculators 581 1 to 5815 5 select an operation to be performed based on the selection signal D584. That is, here, the selection signal D584 supplied from the control unit 611, since it represents the selection of the variable node operation, the node calculator 581 1 to 581 5, performs variable node operation. In other words, the node calculator 581 1 to 581 5, using messages D610 and the reception data D544, based on the control signal D583, according to equation (1), respectively performs the operation, the message is the result of the calculation D611 Get.

ここで、制御部582がノード計算部581に供給する制御信号D583と選択信号D584は、前述の図18で説明した制御信号D362と選択信号D361にそれぞれ対応するものであり、ノード計算器5811乃至5815は、選択信号D584に基づいて、いま行う演算を選択し、制御信号D583にしたがい、枝用格納メモリ610から必要なメッセージD610を、それぞれ1つずつ読み出すとともに、受信データ用メモリ544から必要な受信データD544を、それぞれ1つずつ読み出して、バリアブルノード演算を行い、その演算の結果であるメッセージD611を得る。 Here, the control signal D583 and the selection signal D584 supplied from the control unit 582 to the node calculation unit 581 respectively correspond to the control signal D362 and the selection signal D361 described with reference to FIG. 18, and the node calculator 581 1. to 581 5, based on the selection signal D584, select the operation performed now, follow the control signal D583, the message D610 required from the branch for storing memory 610, reads out one each, from the reception data memory 544 The necessary reception data D544 is read one by one, variable node calculation is performed, and a message D611 as a result of the calculation is obtained.

ステップS122の処理後は、ステップS123に進み、ノード計算部581は、バリアブルノードの演算の結果得られる5個の枝に対応する5つのメッセージD611を、サイクリックシフト回路551に供給し、ステップS124に進む。   After the processing of step S122, the process proceeds to step S123, and the node calculation unit 581 supplies five messages D611 corresponding to the five branches obtained as a result of the variable node calculation to the cyclic shift circuit 551, and step S124. Proceed to

ステップS124において、サイクリックシフト回路551は、ノード計算部581から供給された5つのメッセージD611を、サイクリックシフトし、その結果を5つのメッセージD550として、枝用メモリ610の既に読みだされたメッセージ(D610)のアドレスに格納(記憶)する。なお、5つのメッセージD550は、同一のアドレスに格納される。   In step S124, the cyclic shift circuit 551 cyclically shifts the five messages D611 supplied from the node calculation unit 581, and uses the result as five messages D550, which has already been read from the branch memory 610. Store (store) at address (D610). The five messages D550 are stored at the same address.

ステップS124の処理後は、ステップS125に進み、ノード計算部581は、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS122に戻り、上述した処理を繰り返す。   After the processing of step S124, the process proceeds to step S125, and the node calculation unit 581 determines whether or not the message for all branches has been calculated. If it is determined that the message for all branches has not been calculated, the process proceeds to step S122. Return and repeat the process described above.

一方、ステップS125において、制御部611は、ノード計算部581により、全枝数のメッセージが演算されたと判定した場合、ステップS126に進み、制御部611は、いま、演算を行う演算として、チェックノード演算を選択し、ステップS121で生成したバリアブルノード演算の選択を表す選択信号D584を、チェックノード演算の選択を表す選択信号D584に変更する。   On the other hand, in step S125, when the control unit 611 determines that the message of the total number of branches has been calculated by the node calculation unit 581, the control unit 611 proceeds to step S126, and the control unit 611 determines that the check node An operation is selected, and the selection signal D584 indicating selection of the variable node calculation generated in step S121 is changed to a selection signal D584 indicating selection of the check node calculation.

ステップS126の処理後は、ステップS127に進み、ノード計算部581は、ステップS126で変更された選択信号D584に基づいて、バリアブルノード演算とチェックノード演算のうち、いま行う演算として、チェックノード演算を選択し、チェックノード演算を行う。   After the process of step S126, the process proceeds to step S127, and the node calculation unit 581 performs a check node calculation as an operation to be performed among the variable node calculation and the check node calculation based on the selection signal D584 changed in step S126. Select and perform check node operation.

具体的には、ノード計算部581には、枝用メモリ610から、ステップS124で格納(記憶)されたバリアブルノードからの5つのメッセージD610が供給され、メッセージD610が、ノード計算部581のノード計算器5811乃至5815のそれぞれに1つずつ供給される。 Specifically, the node calculation unit 581 is supplied with five messages D610 from the variable node stored (stored) in step S124 from the branch memory 610, and the message D610 is calculated by the node calculation unit 581. One is supplied to each of the devices 581 1 to 5815 5 .

ノード計算器5811乃至5815は、ステップS126で変更された選択信号D584に基づいて、いま行う演算を選択する。即ち、ここでは、選択信号D584は、チェックノード演算の選択を表しているので、ノード計算器5811乃至5815は、チェックノード演算を行う。つまり、ノード計算器5811乃至5815は、メッセージD610を用いて、制御信号D583に基づいて、式(7)にしたがって、それぞれ演算を行い、その演算の結果であるメッセージD611を得る。 The node calculators 581 1 to 5815 5 select an operation to be performed based on the selection signal D584 changed in step S126. That is, here, the selection signal D584, since it represents the check node operation, the node calculator 581 1 to 581 5, a check node operation. That is, the node calculators 581 1 to 5815 5 each perform an operation according to the equation (7) based on the control signal D583 using the message D610, and obtain a message D611 that is a result of the operation.

ここで、制御部582がノード計算部581に供給する制御信号D583と選択信号D584は、前述の図18で説明した制御信号D362と選択信号D361にそれぞれ対応するものであり、ノード計算器5811乃至5815は、選択信号D584に基づいて、いま行う演算を選択し、制御信号D583にしたがい、枝用格納メモリ610から必要なメッセージD610を、それぞれ1つずつ読み出しながら、チェックノード演算を行い、その演算の結果であるメッセージD611を得る。 Here, the control signal D583 and the selection signal D584 supplied from the control unit 582 to the node calculation unit 581 respectively correspond to the control signal D362 and the selection signal D361 described with reference to FIG. 18, and the node calculator 581 1. to 581 5, based on the selection signal D584, select the operation performed now, follow the control signal D583, the message D610 required from the branch for storing memory 610, while reading one each, performs a check node operation, A message D611 that is a result of the calculation is obtained.

ステップS127の処理後は、ステップS128に進み、ノード計算部581は、チェックノードの演算の結果得られる枝に対応するメッセージD611を、サイクリックシフト回路551に供給し、ステップS129に進む。   After the process of step S127, the process proceeds to step S128, and the node calculation unit 581 supplies the message D611 corresponding to the branch obtained as a result of the check node operation to the cyclic shift circuit 551, and the process proceeds to step S129.

ステップS129において、サイクリックシフト回路551は、ノード計算部581から供給された5つのメッセージD611を、サイクリックシフトし、その結果をメッセージD550として、枝用メモリ610の既に読みだされたメッセージのアドレスに格納する。なお、5つのメッセージD550は、同一のアドレスに格納(記憶)される。   In step S129, the cyclic shift circuit 551 cyclically shifts the five messages D611 supplied from the node calculation unit 581, and uses the result as the message D550 for the address of the message that has already been read from the branch memory 610. To store. The five messages D550 are stored (stored) at the same address.

ステップS129の処理後は、ステップS130に進み、制御部611は、ノード計算部581により、全枝数のメッセージが演算されたかどうかを判定し、全枝数のメッセージが演算されていないと判定した場合、ステップS127に戻り、上述した処理を繰り返す。   After the process of step S129, the process proceeds to step S130, and the control unit 611 determines whether or not the message of the total number of branches has been calculated by the node calculation unit 581 and determines that the message of the total number of branches has not been calculated. In the case, the process returns to step S127, and the above-described processing is repeated.

一方、ステップS130において、制御部611は、ノード計算器581により、全枝数のメッセージが演算されたと判定した場合、処理を終了する。   On the other hand, in step S130, when the control unit 611 determines that the message of all branches has been calculated by the node calculator 581, the process ends.

なお、復号装置600は、復号回数だけ図29の復号処理を繰り返し行ない、枝用メモリ610に最後のチェックノード演算の結果得られるメッセージD550(メッセージuj)が供給された場合、枝用メモリ610は、そのメッセージD550を上述した式(5)の演算を行う不図示のブロックに供給する。不図示のブロックには、さらに、受信データ用メモリ544から受信データD544が供給され、不図示のブロックは、メッセージD550と受信データD544を用いて、式(5)の演算を行い、その演算結果を最終的な復号結果として出力する。 Note that the decoding device 600 repeats the decoding process of FIG. 29 as many times as the number of decoding times, and when the message D550 (message u j ) obtained as a result of the last check node calculation is supplied to the branch memory 610, the branch memory 610 Supplies the message D550 to a block (not shown) that performs the calculation of the above-described equation (5). The block (not shown) is further supplied with reception data D544 from the reception data memory 544. The block (not shown) performs the calculation of Expression (5) using the message D550 and the reception data D544, and the calculation result is as follows. Is output as the final decoding result.

上述したように、枝用メモリ610では、バリアブルノード演算またはチェックノード演算の結果得られるメッセージのうち、いま行われている演算の結果得られるメッセージが格納される。即ち、バリアブルノード演算は、チェックノード演算の結果であるメッセージujを用いて行われ、チェックノード演算は、バリアブルノード演算の結果であるメッセージviを用いて行われるため、復号装置660では、バリアブルノード演算とチェックノード演算が交互に行われる。従って、復号装置600では、いま行われている演算の結果得られるメッセージを格納することにより、バリアブルノード演算の結果得られるメッセージを格納する枝データ格納メモリ542とチェックノード演算の結果得られるメッセージを格納する枝データ格納メモリ547を共有化して、1つの枝用メモリ610にすることができ、バリアブルノードのメッセージを格納するメモリ542と、チェックノードのメッセージを格納するメモリ547を別々に有する図26の復号装置570に比べて、さらに、復号装置600の回路規模を小さくすることができる。 As described above, the branch memory 610 stores a message obtained as a result of the currently executed operation among messages obtained as a result of the variable node operation or the check node operation. That is, the variable node calculation is performed using the message u j that is the result of the check node calculation, and the check node calculation is performed using the message v i that is the result of the variable node calculation. Variable node calculation and check node calculation are performed alternately. Therefore, in the decoding device 600, by storing the message obtained as a result of the current operation, the branch data storage memory 542 for storing the message obtained as a result of the variable node operation and the message obtained as a result of the check node operation are stored. The branch data storage memory 547 to be stored can be shared to form one branch memory 610. The memory 542 for storing a variable node message and the memory 547 for storing a check node message are separately provided. Compared to the decoding device 570, the circuit scale of the decoding device 600 can be further reduced.

図30は、本発明を適用した図22の検査行列Hで表現されるLDPC符号を復号する復号装置の他の一実施の形態の構成例を示している。   FIG. 30 illustrates a configuration example of another embodiment of a decoding device that decodes the LDPC code represented by the parity check matrix H of FIG. 22 to which the present invention has been applied.

図30の復号装置600では、図28のノード計算部581のノード計算器5811乃至ノード計算器5815のそれぞれを構成する各ブロック(演算素子)がさらに共有化され、計算部641の計算器6411乃至計算器6415となっている。 In the decoding device 600 of FIG. 30, each block (arithmetic element) constituting each of the node calculators 581 1 to 5815 5 of the node calculator 581 of FIG. 28 is further shared, and the calculator of the calculator 641 641 1 to calculator 641 5 .

ここで、計算部641の計算器6411乃至計算器6415で行われる計算について説明する。 Here, calculations performed by the calculators 641 1 to 641 5 of the calculator 641 will be described.

計算部641では、バリアブルノード演算またはチェックノード演算を行い、その演算の結果得られるメッセージを出力して枝用メモリに格納するのではなく、バリアブルノード演算またはチェックノード演算の途中結果を出力して、メモリ640に格納する。   The calculation unit 641 performs a variable node operation or a check node operation, outputs a message obtained as a result of the operation and stores it in the branch memory, and outputs an intermediate result of the variable node operation or the check node operation. Stored in the memory 640.

具体的には、計算部641は、上述した式(1)および以下に表す式(8)にしたがう第1の演算と、以下の式(9)にしたがう第2の演算を行い、その第1の演算結果である復号途中結果vi'と第2の演算結果である復号途中結果ujをメモリ640に格納させる。 Specifically, the calculation unit 641 performs a first calculation according to the above-described formula (1) and the following formula (8), and a second calculation according to the following formula (9). The decoding intermediate result v i ′ that is the result of the calculation and the decoding intermediate result u j that is the second calculation result are stored in the memory 640.

Figure 2005065065
・・・(8)
Figure 2005065065
... (8)

Figure 2005065065
・・・(9)
Figure 2005065065
... (9)

即ち、式(8)で表される復号途中結果vi'の絶対値|vi'|は、その右辺の絶対値|φ(|vi|)|に等しい。また、φ(x)は、x≧0で、φ(x)=ln((ex+1)/(ex−1))=ln(1+2/(ex−1))で定義されるので、φ(x)≧0となり、|φ(|vi|)|は、φ(|vi|)に等しい。従って、復号途中結果vi'の絶対値|vi'|は、φ(|vi|)に等しい。さらに、φ(x)≧0であるので、式(8)で表される復号途中結果vi'の符号ビットsign(vi')は、その右辺の符号ビットsign(vi)に等しい。これにより、上述した式(7)のφ(|vi|)は、|vi'|に置換でき、式(7)のsign(vi)は、sign(vi')に置換できるので、上述した式(7)で表されるメッセージujは、復号途中結果vi'を用いて、上述した式(9)で表すことができる。 That is, the absolute value | v i '| of the decoding intermediate result v i ' represented by the equation (8) is equal to the absolute value | φ (| v i |) | Further, φ (x) is defined by x ≧ 0 and φ (x) = ln ((e x +1) / (e x −1)) = ln (1 + 2 / (e x −1)). , Φ (x) ≧ 0, and | φ (| v i |) | is equal to φ (| v i |). Therefore, the absolute value | v i '| of the decoding result v i ' is equal to φ (| v i |). Further, since φ (x) ≧ 0, the sign bit sign (v i ′) of the decoding intermediate result v i ′ represented by the equation (8) is equal to the sign bit sign (v i ) on the right side. As a result, φ (| v i |) in equation (7) described above can be replaced with | v i '|, and sign (v i ) in equation (7) can be replaced with sign (v i '). The message u j represented by the above-described equation (7) can be represented by the above-described equation (9) using the decoding intermediate result v i ′.

従って、計算部641が、式(1)および式(8)にしたがう第1の演算と、式(9)にしたがう第2の演算を交互に行い、最後の第2の演算の後、不図示のブロックが上述した式(5)の演算を行うことにより、LDPC符号の繰り返し復号を行うことができる。   Accordingly, the calculation unit 641 alternately performs the first calculation according to the expressions (1) and (8) and the second calculation according to the expression (9), and is not illustrated after the last second calculation. This block performs the calculation of the above equation (5), so that iterative decoding of the LDPC code can be performed.

なお、ここでは、式(9)にしたがう第2の演算結果を、復号途中結果ujと記載するが、この復号途中結果ujは、式(7)のチェックノード演算結果ujに等しい。 Here, the second calculation result according to the equation (9) is described as a decoding intermediate result u j, and this decoding intermediate result u j is equal to the check node calculation result u j of the equation (7).

図30の復号装置630は、この計算部641を、図28のノード計算部581の代わりに備え、枝用メモリ610をメモリ640に、制御部611を制御部642に代えたものである。   The decoding device 630 in FIG. 30 includes the calculation unit 641 instead of the node calculation unit 581 in FIG. 28, and the branch memory 610 is replaced with the memory 640 and the control unit 611 is replaced with the control unit 642.

即ち、復号装置630は、受信データ用メモリ544、サイクリックシフト回路551、メモリ640、計算部641、および制御部642から構成される。   That is, the decoding device 630 includes a reception data memory 544, a cyclic shift circuit 551, a memory 640, a calculation unit 641, and a control unit 642.

なお、図28と同一の符号を付したもの、即ち、図30の復号装置630の受信データ用メモリ544とサイクリックシフト回路551は、図28の復号装置600のそれらと同一のものであり、説明は繰り返しになるので省略する。   28, ie, the received data memory 544 and the cyclic shift circuit 551 of the decoding device 630 of FIG. 30 are the same as those of the decoding device 600 of FIG. The description will be omitted because it is repeated.

メモリ640には、サイクリックシフト回路551から、計算部641による演算結果である5つの復号途中結果D642がサイクリックシフトされた5つの復号途中結果D640が供給され、メモリ640は、サイクリックシフト回路551から供給された5つの復号途中結果D640を同一アドレスに、5つ同時に格納(記憶)し、既に格納してある5つの復号途中結果D640を、5つ同時に、5つのメッセージD641として、計算部641に供給する。なお、メモリ650は、計算部641による最後の第2の演算の結果得られる復号途中結果D630を格納する場合には、その復号途中結果D630を、上述した式(5)の演算を行う不図示のブロックに供給する。   The memory 640 is supplied from the cyclic shift circuit 551 with five decoding intermediate results D640 obtained by cyclically shifting the five decoding intermediate results D642, which are the operation results of the calculation unit 641, and the memory 640 includes the cyclic shift circuit. Five decoding intermediate results D640 supplied from 551 are simultaneously stored (stored) in the same address, and five already stored decoding intermediate results D640 are simultaneously used as five messages D641 as a calculation unit. 641. Note that, when the memory 650 stores the decoding intermediate result D630 obtained as a result of the last second calculation by the calculation unit 641, the decoding intermediate result D630 is calculated using the above-described equation (5). Supply to the block.

即ち、メモリ640は、サイクリックシフト回路551から供給され、同一アドレスに格納してある5つの復号途中結果D640を5つ同時に読み出し、復号途中結果D641として、計算部641に供給すると同時に、サイクリックシフト回路551が出力する5つの復号途中結果D640を受信し、メモリ640の既に読み出された復号途中結果(復号途中結果D640)が記憶されていたアドレスに、5つ同時に書き込む。即ち、メモリ640は、計算部641に供給する復号途中結果D640の5つ同時の読み出しと、計算部641から供給される復号途中結果D640の5つ同時の書き込みとを、同時に行う。   That is, the memory 640 reads out five decoding intermediate results D640 supplied from the cyclic shift circuit 551 and stored at the same address at the same time, and supplies them to the calculation unit 641 as the decoding intermediate results D641 simultaneously. Five decoding intermediate results D640 output from the shift circuit 551 are received, and five of them are written simultaneously to the address where the decoding intermediate results (decoding intermediate results D640) already read out of the memory 640 are stored. That is, the memory 640 simultaneously reads five decoding intermediate results D640 supplied to the calculation unit 641 and simultaneously writes five decoding intermediate results D640 supplied from the calculation unit 641.

なお、メモリ640には、計算部641の第1の演算、または第2の演算により演算された復号途中結果がサイクリックシフトされた結果が格納されるので、メモリ640に格納されるデータ量、即ち、枝用メモリ640に必要とされる記憶容量は、メッセージの量子化ビット数と、図22の検査行列Hの“1”の数との乗算値となる。   The memory 640 stores the result of cyclic shift of the decoding intermediate result calculated by the first calculation or the second calculation of the calculation unit 641, so that the amount of data stored in the memory 640, That is, the storage capacity required for the branch memory 640 is a product of the number of quantization bits of the message and the number of “1” in the check matrix H of FIG.

また、メモリ640は、読み出しと書き込みが同時に可能な、例えば、デュアルポートRAMで構成することができる。   In addition, the memory 640 can be configured by, for example, a dual port RAM capable of reading and writing simultaneously.

計算部641は、5つの計算器6411乃至6415からなる。計算部641には、メモリ640から5つの復号途中結果D641が供給され、そのメッセージD641が、計算器6411乃至6415のそれぞれに1つずつ供給される。また、計算部641には、受信データ用メモリ544から5つの受信データD544が供給され、その受信データD544が、計算器6411乃至6415のそれぞれに1つずつ供給される。さらに、計算部641には、制御部642から制御信号D583が供給されるとともに、第1の演算または第2の演算のうち、いま計算部641で行う演算として一方の選択を表す選択信号D643が供給され、その制御信号D583と選択信号D643が計算器6411乃至6415に供給される。 The calculation unit 641 includes five calculators 641 1 to 641 5 . The calculation unit 641, D641 from the memory 640 five decoding intermediate results is supplied, the message D641 is supplied one by one to each of the calculators 641 1 to 641 5. Further, the calculation unit 641, five received data D544 from the reception data memory 544 are supplied, the reception data D544 is supplied one by one to each of the calculators 641 1 to 641 5. Further, a control signal D583 is supplied to the calculation unit 641 from the control unit 642, and a selection signal D643 representing one of the first calculation or the second calculation as the calculation performed by the calculation unit 641 is received. is supplied, the select signal D643 and the control signal D583 is supplied to the calculator 641 1 to 641 5.

計算器6411乃至6415は、選択信号D643に基づき、第1の演算と第2の演算のうち一方を選択し、その選択した演算を行う。即ち、計算器6411乃至6415は、制御信号D643に基づき、メモリ640から供給される復号途中結果D641と受信用メモリ544から供給され受信データD544とを用い、式(1)と式(8)にしたがって、それぞれ、LDPC符号の復号のための第1の演算を行うか、あるいは、メモリ640から供給されるメッセージD641を用い、式(9)にしたがって、それぞれ、LDPC符号の復号のための第2の演算を行う。 The calculators 641 1 to 641 5 select one of the first calculation and the second calculation based on the selection signal D643 and perform the selected calculation. That is, the calculators 641 1 to 641 5 use the decoding intermediate result D641 supplied from the memory 640 and the received data D544 supplied from the receiving memory 544 based on the control signal D643, and the expressions (1) and (8) ) To perform the first operation for decoding the LDPC code, respectively, or use the message D641 supplied from the memory 640 and respectively to decode the LDPC code according to equation (9). A second calculation is performed.

そして、計算器6411乃至6415は、第1の演算または第2の演算の結果得られる5つの復号途中結果を、復号途中結果D642として、サイクリックシフト回路551に供給する。 Then, the calculators 641 1 to 641 5 supply five decoding intermediate results obtained as a result of the first calculation or the second calculation to the cyclic shift circuit 551 as decoding intermediate results D642.

制御部642は、制御信号D559、または制御信号D583と選択信号D643を、サイクリックシフト回路551、または計算部641にそれぞれ供給することにより、それぞれを制御する。   The control unit 642 controls the control signal D559 or the control signal D583 and the selection signal D643 by supplying them to the cyclic shift circuit 551 or the calculation unit 641, respectively.

図31は、図30の計算器6411の構成例を示すブロック図である。 Figure 31 is a block diagram showing a configuration example of a calculator 641 1 in FIG. 30.

図31の計算器6411は、第1の演算または第2の演算を行う。 Calculator 641 1 of Figure 31 performs the first operation or the second operation.

なお、図31では、計算器6411の構成について説明するが、図30の計算器6412乃至6414も、図31の計算器6411と同様に構成される。 In FIG. 31, the configuration of the calculator 641 1 will be described. The calculators 641 2 to 641 4 in FIG. 30 are also configured in the same manner as the calculator 641 1 in FIG.

また、図31では、復号途中結果が符号ビットを合わせて合計6ビット(bit)に量子化されているものとして、計算器6411を表している。さらに、図31の計算器6411には、クロックckが供給され、このクロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。 Further, in FIG. 31, as the decoding intermediate result is quantized into a total of 6 bits (bit) to match the sign bit represents a calculator 641 1. Further, the calculator 641 1 of FIG. 31, the clock ck is supplied, the clock ck is to be supplied to the necessary blocks. Each block performs processing in synchronization with the clock ck.

図31の計算器6411は、セレクタ661、積算部701、加算器666、セレクタ667、FIFOメモリ669、セレクタ670、減算器671、LUT672、乗算部702、FIFOメモリ678、EXOR回路679、セレクタ680から構成される。また、積算部701は、加算器662、レジスタ663、セレクタ664、およびレジスタ665から構成され、乗算部702は、EXOR回路673、レジスタ674、セレクタ675、およびレジスタ676から構成される。 Calculator 641 1 in FIG. 31, a selector 661, integrating unit 701, an adder 666, a selector 667, FIFO memory 669, a selector 670, a subtracter 671, LUT672, multiplication unit 702, FIFO memory 678, EXOR circuit 679, a selector 680 Consists of The accumulating unit 701 includes an adder 662, a register 663, a selector 664, and a register 665. The multiplying unit 702 includes an EXOR circuit 673, a register 674, a selector 675, and a register 676.

図31の計算器6411は、制御部642から供給される、例えば、1ビットの制御信号D583と1ビットの選択信号D643に基づき、メモリ640から1つずつ読み出される復号途中結果D641を用いて、式(9)にしたがって第2の演算を行うか、あるいは復号途中結果D641と受信データ用メモリ544から供給される受信データD544を用いて、式(1)と式(8)にしたがって第1の演算を行う。 Calculator 641 1 of FIG. 31 is supplied from the control unit 642, for example, based on 1-bit control signal D583 and 1-bit selection signal D643, by using the decoding intermediate results D641 read out from the memory 640 one by one The second calculation is performed according to the equation (9), or the first calculation is performed according to the equations (1) and (8) using the decoding intermediate result D641 and the reception data D544 supplied from the reception data memory 544. Perform the operation.

即ち、計算器6411では、検査行列の各列の1に対応する6ビットの復号途中結果(Vi)、または検査行列の各行の1に対応する6ビットの復号途中結果(uj)が復号途中結果D641として1つずつ読み込まれると、その下位5ビットである絶対値D662がFIFOメモリ669に供給されるとともに、その絶対値D662において、1ビットの値である“0”が最上位ビットに付加されることにより、ビット拡張が行われ、そのビット拡張の結果である6ビットの値D663が、セレクタ661に供給される。また、復号途中結果D641の最上位ビットである符号ビットD661がEXOR回路673とFIFOメモリ678にそれぞれ供給される。さらに、計算器6411では、1つずつ読み込まれた6ビットの復号途中結果D641がセレクタ661に供給される。 That is, the calculator 6411 1 generates a 6-bit decoding intermediate result (V i ) corresponding to 1 of each column of the parity check matrix or a 6-bit decoding intermediate result (u j ) corresponding to 1 of each row of the parity check matrix. When the decoding result D641 is read one by one, the lower 5 bits of the absolute value D662 is supplied to the FIFO memory 669, and in the absolute value D662, the 1-bit value “0” is the most significant bit. To the bit extension, and a 6-bit value D663 as a result of the bit extension is supplied to the selector 661. Also, the sign bit D661 which is the most significant bit of the decoding intermediate result D641 is supplied to the EXOR circuit 673 and the FIFO memory 678, respectively. Further, the calculator 641 1, one by one imported 6-bit decoding intermediate results D641 are supplied to the selector 661.

また、計算器6411には、制御部642から制御信号D583が供給され、その制御信号D583は、セレクタ664とセレクタ675に供給される。また、計算器6411には、制御部642から、第1の演算または第2の演算のうち一方の選択を表す選択信号D643が供給され、その選択信号D643がセレクタ661、セレクタ667、およびセレクタ670に供給される。さらに、計算器6411には、受信データ用メモリ544から受信データD544が供給され、その受信データD544が加算器666に供給される。 Further, the control signal D583 is supplied from the control unit 642 to the calculator 6411 1 , and the control signal D583 is supplied to the selector 664 and the selector 675. Further, the calculator 641 1, the control unit 642, a selection signal D643 representative of the one of the selection of the first operation or the second operation is supplied, the selection signal D643 is a selector 661, a selector 667, and the selector 670. Further, the reception data D544 is supplied from the reception data memory 544 to the calculator 6411 1 , and the reception data D544 is supplied to the adder 666.

まず最初に、検査行列の各行の1に対応する6ビットの復号途中結果ujが、復号途中結果D641として1つずつ読み込まれた場合の計算器6411の処理について説明する。このとき、制御部642は、第1の演算または第2の演算のうちの、第1の演算を、いま、計算器6411で行う演算として選択し、その選択を表す選択信号D583を計算器6411に供給するとともに、演算を制御するための制御信号D583の値を、計算器6411が1列に亘る復号途中結果(検査行列Hの各列の1に対応する第2の演算結果)を読み込む毎に、“0”から“1”に変更する。 First, the decoding intermediate result u j of 6 bits corresponding to one row of the parity check matrix will be described calculator 641 first processing when read in one by one as the decoding intermediate results D641. At this time, the control unit 642 selects the first calculation of the first calculation or the second calculation as the calculation to be performed by the calculator 6411 1 , and selects the selection signal D583 indicating the selection as the calculator. 641 and supplies to 1, the value of the control signal D583 for controlling the operation calculator 641 1 (second calculation result corresponding to one of the columns of the check matrix H) decoding intermediate results across one row Is changed from “0” to “1”.

このように、制御部642により、いま、計算器6411で行う演算として、第1の演算が選択された場合、計算器6411では、制御部642から供給される、例えば、1ビットの制御信号D583に基づき、メモリ640から1つずつ読み込まれる復号途中結果D641を用いて、式(1)と式(8)にしたがって演算を行う。 Thus, the control unit 642, now as operation performed by the calculator 641 1, when the first operation is selected, the calculator 641 1, supplied from the control unit 642, for example, 1-bit control Based on the signal D583, the calculation is performed according to the equations (1) and (8) using the decoding intermediate result D641 read from the memory 640 one by one.

計算器6411では、検査行列の各行の1に対応する6ビットの復号途中結果D641(復号途中結果uj)が1つずつ読み込まれ、その下位5ビットである絶対値D662(|uj|)がFIFOメモリ669に供給されるとともに、その絶対値D662において、1ビットの値である“0”が最上位ビットに付加されることにより、ビット拡張が行われ、そのビット拡張の結果である6ビットの値D663が、セレクタ661に供給される。また、復号途中結果D641の最上位ビットである符号ビットD661(sign(uj))がEXOR回路673とFIFOメモリ678にそれぞれ供給される。さらに、計算器6411では、1つずつ読み込まれた6ビットの復号途中結果D641がセレクタ661に供給される。 The calculator 641 1, the decoding intermediate results of 6 bits corresponding to one row of the check matrix D641 (decoding intermediate results u j) are read in one by one, the absolute value is the lower 5 bits D662 (| u j | ) Is supplied to the FIFO memory 669, and in the absolute value D662, 1-bit value “0” is added to the most significant bit, so that bit expansion is performed, and this is the result of the bit expansion. A 6-bit value D663 is supplied to the selector 661. Also, the sign bit D661 (sign (u j )) which is the most significant bit of the decoding intermediate result D641 is supplied to the EXOR circuit 673 and the FIFO memory 678, respectively. Further, the calculator 641 1, one by one imported 6-bit decoding intermediate results D641 are supplied to the selector 661.

セレクタ661には、6ビットの復号途中結果D641(復号途中結果uj)と6ビットの値D663が供給される。また、セレクタ661には、第1の演算と第2の演算のうち一方の選択を表す選択信号D643が供給される。セレクタ661は、選択信号D643に基づいて、復号途中結果D641と値D663のうち一方を選択し、その選択した一方を値D664として、加算器662に供給する。ここでは、選択信号D643は、第1の演算の選択を表しているので、セレクタ661は、値D641(uj)を、値D664として加算器662に供給する。 The selector 661 is supplied with a 6-bit decoding intermediate result D641 (decoding intermediate result u j ) and a 6-bit value D663. The selector 661 is supplied with a selection signal D643 indicating selection of one of the first calculation and the second calculation. The selector 661 selects one of the decoding intermediate result D641 and the value D663 based on the selection signal D643, and supplies the selected one to the adder 662 as a value D664. Here, since the selection signal D643 indicates the selection of the first calculation, the selector 661 supplies the value D641 (u j ) to the adder 662 as the value D664.

積算部701の加算器662は、値D641(uj)とレジスタ663に格納されている9ビットの値D665とを加算することにより、値D641を積算し、その結果得られる9ビットの積算値をレジスタ663に再格納する。なお、検査行列の1列に亘る1に対応する復号途中結果D641が積算された場合、レジスタ663はリセットされる。 The adder 662 of the integrating unit 701 adds the value D641 (u j ) and the 9-bit value D665 stored in the register 663 to integrate the value D641, and the 9-bit integrated value obtained as a result. Is stored again in the register 663. When the decoding intermediate result D641 corresponding to 1 over one column of the check matrix is accumulated, the register 663 is reset.

検査行列の1列に亘る復号途中結果D641(検査行列の各行の1に対応するすべての復号途中結果D641)が1つずつ読み込まれ、レジスタ663に1列分の値D641が積算された積算値(j=1からj=dvまでのΣuj)が格納された場合、制御部642から供給される制御信号D583は、0から1に変化する。例えば、列の重みが「5」である場合、制御信号D583は、1から4クロック目までは、「0」となり、5クロック目では「1」となる。 Decoding intermediate result D641 (all decoding intermediate results D641 corresponding to 1 in each row of the check matrix) is read one by one and the integrated value obtained by accumulating the value D641 for one column in the register 663 When (Σu j from j = 1 to j = d v ) is stored, the control signal D583 supplied from the control unit 642 changes from 0 to 1. For example, when the column weight is “5”, the control signal D583 is “0” from the first to the fourth clock, and “1” at the fifth clock.

制御信号D583が「1」の場合、セレクタ664は、レジスタ663に格納されている値、即ち、検査行列の1列に亘る1に対応する復号途中結果D641(復号途中結果uj)が積算された9ビットの値D665(j=1からj=dvまでのΣuj)を選択し、値D666として、レジスタ665に出力して格納させる。レジスタ665は、格納している値D666を、9ビットの値D667として、セレクタ664、加算器666、およびセレクタ667に供給する。 When the control signal D583 is “1”, the selector 664 accumulates the value stored in the register 663, that is, the decoding intermediate result D641 (decoding intermediate result u j ) corresponding to 1 over one column of the check matrix. was selected 9-bit value D665 (? uj j from j = 1 to j = d v), as a value D666, and stores and outputs to the register 665. The register 665 supplies the stored value D666 to the selector 664, the adder 666, and the selector 667 as a 9-bit value D667.

制御信号D583が「0」の場合、セレクタ661は、レジスタ665から供給された値D667を選択し、レジスタ665に出力して再格納させる。即ち、検査行列の1列に亘る1に対応する復号途中結果D641(復号途中結果uj)が積算されるまで、レジスタ665は、前回積算されたujを、セレクタ664、加算器666、およびセレクタ667に供給する。 When the control signal D583 is “0”, the selector 661 selects the value D667 supplied from the register 665, outputs it to the register 665, and stores it again. That is, until the decoding intermediate result D641 (decoding intermediate result u j ) corresponding to 1 over one column of the parity check matrix is integrated, the register 665 converts the previous integrated u j into the selector 664, the adder 666, and This is supplied to the selector 667.

加算器666では、レジスタ665から値D667が供給されるとともに、受信データ用メモリ544から受信データD544(LDPC符号)が供給される。加算器666は、値D667に、受信データ用メモリ544から供給された受信データD544(受信値u0i)を加算して、その結果得られる値D668をセレクタ667に供給する。 In the adder 666, the value D667 is supplied from the register 665, and the reception data D544 (LDPC code) is supplied from the reception data memory 544. The adder 666 adds the reception data D544 (reception value u 0i ) supplied from the reception data memory 544 to the value D667, and supplies the value D668 obtained as a result to the selector 667.

セレクタ667には、加算器666から値D668が供給されるとともに、レジスタ665から値D667が供給される。また、セレクタ667には、制御部642から、第1の演算と第2の演算のうち一方の選択を表す選択信号D643が供給される。セレクタ667は、選択信号D643に基づいて、値D668と値D667のうち一方を選択し、その選択した値を、値D669として、減算器671に供給する。ここでは、選択信号D643は、第1の演算の選択を表しているので、セレクタ667は、値D668を選択し、値D669として減算器671に供給する。   The selector 667 is supplied with the value D668 from the adder 666 and the value D667 from the register 665. Further, the selector 667 is supplied with a selection signal D643 indicating selection of one of the first calculation and the second calculation from the control unit 642. The selector 667 selects one of the value D668 and the value D667 based on the selection signal D643, and supplies the selected value to the subtracter 671 as the value D669. Here, since the selection signal D643 represents selection of the first calculation, the selector 667 selects the value D668 and supplies it to the subtractor 671 as the value D669.

一方、FIFOメモリ669は、レジスタ665から新たな値D667(j=1からj=dvまでのΣuj)が出力されるまでの間、メモリ640から供給された5ビットの復号途中結果D641の絶対値(|uj|)を遅延し、5ビットの値D670として出力する。その値D670において、1ビットの値である“0”が最上位ビットに付加されることにより、ビット拡張が行われ、そのビット拡張の結果である6ビットの値D671が、セレクタ670に供給される。 On the other hand, FIFO memories 669, (from j = 1 j = d v up to? Uj j) a new value D667 from the register 665 until it is output, 5 bits supplied from the memory 640 decoding intermediate results of D641 The absolute value (| u j |) is delayed and output as a 5-bit value D670. In the value D670, “0”, which is a 1-bit value, is added to the most significant bit to perform bit extension, and a 6-bit value D671 resulting from the bit extension is supplied to the selector 670. The

以上の処理と並行して、乗算部702のEXOR回路673は、レジスタ674に格納されている1ビットの値D673と符号ビットD661との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D672をレジスタ674に再格納する。なお、検査行列の1列に亘る1に対応する復号途中結果D641の符号ビットD661が乗算された場合、レジスタ674はリセットされる。   In parallel with the above processing, the EXOR circuit 673 of the multiplying unit 702 multiplies the sign bits by calculating the exclusive OR of the 1-bit value D673 stored in the register 674 and the sign bit D661. The 1-bit multiplication result D672 is re-stored in the register 674. In addition, when the sign bit D661 of the decoding intermediate result D641 corresponding to 1 over one column of the check matrix is multiplied, the register 674 is reset.

検査行列の1列に亘る1に対応する復号途中結果D641の符号ビットD661が乗算された乗算結果D672がレジスタ674に格納された場合、制御部642から供給される制御信号D583は、「0」から「1」に変化する。   When the multiplication result D672 obtained by multiplying the code bit D661 of the decoding intermediate result D641 corresponding to 1 over one column of the check matrix is stored in the register 674, the control signal D583 supplied from the control unit 642 is “0”. Changes to "1".

制御信号D583が「1」の場合、セレクタ675は、レジスタ674に格納されている値、即ち、検査行列の1列に亘る1に対応する復号途中結果D641の符号ビットD661が乗算された値D673を選択し、1ビットの値D674としてレジスタ676に出力して格納させる。レジスタ676は、格納している値D674を、1ビットの値D675として、セレクタ675とEXOR回路679に供給する。   When the control signal D583 is “1”, the selector 675 multiplies the value stored in the register 674, that is, the value D673 obtained by multiplying the sign bit D661 of the decoding intermediate result D641 corresponding to 1 over one column of the check matrix. Is output to the register 676 and stored as a 1-bit value D674. The register 676 supplies the stored value D674 to the selector 675 and the EXOR circuit 679 as a 1-bit value D675.

制御信号D583が「0」の場合、セレクタ675は、レジスタ674から供給された値D675を選択し、レジスタ676に出力して再格納させる。即ち、検査行列の1列に亘る1に対応する復号途中結果D641の符号ビットD661が乗算されるまで、レジスタ676は、前回格納した値を、セレクタ675とEXOR回路679に供給する。   When the control signal D583 is “0”, the selector 675 selects the value D675 supplied from the register 674, outputs it to the register 676, and stores it again. In other words, the register 676 supplies the previously stored value to the selector 675 and the EXOR circuit 679 until the sign bit D661 of the decoding intermediate result D641 corresponding to 1 over one column of the check matrix is multiplied.

一方、FIFOメモリ678は、レジスタ676から新たな値D675がEXOR回路679に供給されるまでの間、符号ビットD661(sign(uj))を遅延し、1ビットの値D676として、出力する。FIFOメモリ678から出力された1ビットの値D676(sign(uj))を最上位ビットとするとともに、FIFOメモリ669から出力された5ビットの値D670(|uj|)を下位5ビットとした合計6ビットの値D678(uj)は、セレクタ670に供給される。また、1ビットの値D676は、EXOR回路679に供給される。 On the other hand, the FIFO memory 678 delays the sign bit D661 (sign (u j )) until a new value D675 is supplied from the register 676 to the EXOR circuit 679, and outputs it as a 1-bit value D676. The 1-bit value D676 (sign (u j )) output from the FIFO memory 678 is set as the most significant bit, and the 5-bit value D670 (| u j |) output from the FIFO memory 669 is set as the lower 5 bits. The total 6-bit value D678 (u j ) thus supplied is supplied to the selector 670. The 1-bit value D676 is supplied to the EXOR circuit 679.

セレクタ670には、FIFOメモリ669から6ビットの値D671が供給されるとともに、6ビットの値D678(uj)が供給される。また、セレクタ670には、制御部642から選択信号D643が供給される。セレクタ670は、第1の演算または第2の演算のうち一方の選択を表す選択信号D643に基づいて、値D671と値D678のうち一方を選択し、その選択した値を値D679として減算器671に供給する。ここでは、選択信号D643は、第1の演算の選択を表しているので、値D678(uj)を値D679として、減算器671に出力する。 The selector 670 is supplied with a 6-bit value D671 from the FIFO memory 669 and a 6-bit value D678 (u j ). The selector 670 is supplied with a selection signal D643 from the control unit 642. The selector 670 selects one of the value D671 and the value D678 based on the selection signal D643 indicating selection of one of the first calculation and the second calculation, and uses the selected value as the value D679 as a subtracter 671. To supply. Here, since the selection signal D643 represents the selection of the first calculation, the value D678 (u j ) is output to the subtracter 671 as the value D679.

減算器671は、セレクタ667から供給された9ビットの値D669から、セレクタ670から供給された6ビットの値D679を減算し、その減算結果を、6ビットの減算値D680として出力する。即ち、減算器671は、検査行列の1列に亘る1に対応する復号途中結果D641(復号途中結果uj)の積算値と受信データD643(受信値u0i)との加算値から、検査行列の所定の1に対応する復号途中結果D641(uj)を減算して、その減算値(j=1からj=dv−1までのΣujと受信値u0iの加算値、即ち、vi)を6ビットの減算値D680として出力する。即ち、減算器671では、検査行列の各列の1に対応する復号結果のうち、検査行列の所定の1に対応する復号結果以外のすべてを積算した値と、受信データD544を加算した値が減算値D680として出力される。出力された減算値D680は、その下位5ビットを値D681(|vi|)として、LUT672に供給され、上位1ビットを符号ビットD683(sign(vi))として、セレクタ680に供給される。ここでいう「所定の1」に対応する復号結果とは、式(1)と(8)の演算により復号途中結果vi’を求めたい枝からのメッセージに対応するujである。 The subtractor 671 subtracts the 6-bit value D679 supplied from the selector 670 from the 9-bit value D669 supplied from the selector 667, and outputs the subtraction result as a 6-bit subtraction value D680. That is, the subtractor 671 determines the parity check matrix from the sum of the integration value of the decoding intermediate result D641 (decoding intermediate result u j ) corresponding to 1 over one column of the parity check matrix and the reception data D643 (reception value u 0i ). The subtraction result D641 (u j ) corresponding to the predetermined 1 is subtracted, and the subtraction value (the sum of Σu j from j = 1 to j = d v −1 and the received value u 0i , that is, v i ) is output as a 6-bit subtraction value D680. That is, in the subtracter 671, among the decoding results corresponding to 1 of each column of the parity check matrix, a value obtained by adding all of the decoding results other than the decoding result corresponding to the predetermined 1 of the parity check matrix and the value obtained by adding the reception data D544 are obtained. Output as subtraction value D680. The output subtraction value D680 is supplied to the LUT 672 with the lower 5 bits as the value D681 (| v i |), and is supplied to the selector 680 with the upper 1 bit as the sign bit D683 (sign (v i )). . The decoding result corresponding to “predetermined 1” here is u j corresponding to the message from the branch for which the decoding intermediate result v i ′ is to be obtained by the operations of equations (1) and (8).

LUT672は、値D681(|vi|)に対してφの演算を行った5ビットの演算結果D682(φ(|vi|))を出力する。即ち、値D681に対してφの関数を用いて変換された値が、演算結果D682として読み出され、出力される。 The LUT 672 outputs a 5-bit calculation result D682 (φ (| v i |)) obtained by calculating φ for the value D681 (| v i |). In other words, a value obtained by converting the value D681 by using the function of φ is read and output as the calculation result D682.

一方、EXOR回路679は、レジスタ676から供給された1ビットの値D675と、FIFOメモリ678から供給された1ビットの値D676との排他的論理和を演算することにより、値D675を、値D676で除算し、1ビットの除算結果を除算値D684として、セレクタ680に供給する。   On the other hand, the EXOR circuit 679 calculates the exclusive DOR of the 1-bit value D675 supplied from the register 676 and the 1-bit value D676 supplied from the FIFO memory 678 to obtain the value D675 as the value D676. The 1-bit division result is supplied to the selector 680 as a division value D684.

セレクタ680には、減算器671から供給された1ビットの符号ビットD683(sign(vi))が供給されるとともに、EXOR回路679から1ビットの除算値D684が供給される。また、セレクタ680には、制御部642から選択信号D643が供給される。セレクタ680は、第1の演算または第2の演算のうち一方の選択を表す選択信号D643に基づいて、符号ビットD683と除算値D684のうち一方を選択し、その選択した1ビットの値をD685として、出力する。ここでは、選択信号は、第1の演算の選択を表しているので、値D683(sign(vi))を、値D685として出力する。 The selector 680 is supplied with the 1-bit sign bit D683 (sign (v i )) supplied from the subtractor 671 and the EXOR circuit 679 with the 1-bit division value D684. The selector 680 is supplied with a selection signal D643 from the control unit 642. The selector 680 selects one of the sign bit D683 and the division value D684 based on the selection signal D643 indicating selection of either the first operation or the second operation, and sets the selected 1-bit value to D685. As output. Here, since the selection signal represents the selection of the first calculation, the value D683 (sign (v i )) is output as the value D685.

LUT672から出力された5ビットの演算結果D682(φ(|vi|)を下位5ビットとするとともに、セレクタ680から出力された1ビットの値D685(sign(vi))を最上位ビットとする合計6ビットの復号途中結果D642(復号途中結果vi’)が出力される。即ち、演算結果D682と値D685が乗算され、検査行列の所定の1に対応する第1の演算結果である復号途中結果D642が出力される。 The 5-bit operation result D682 (φ (| v i |) output from the LUT 672 is set to the lower 5 bits, and the 1-bit value D685 (sign (v i )) output from the selector 680 is set to the most significant bit. A decoding intermediate result D642 (decoding intermediate result v i ′) of 6 bits in total is output, that is, the operation result D682 and the value D685 are multiplied to be the first operation result corresponding to the predetermined 1 of the parity check matrix. Decryption intermediate result D642 is output.

以上のように、制御部642により、計算器6411で行う演算として、第1の演算が選択された場合、計算器6411では、式(1)と式(8)の演算が行われ、復号途中結果vi’が求められる。 As described above, the control unit 642, a calculation performed in the calculator 641 1, when the first operation is selected, the calculator 641 1, the operation of equation (1) and equation (8) is performed, A decryption result v i 'is obtained.

次に、検査行列の各列の1に対応する6ビットの復号途中結果vi'が、復号途中結果D641として1つずつ読み込まれた場合の計算器6411の処理について説明する。このとき、制御部642は、第1の演算または第2の演算のうちの、第2の演算を、いま、計算器6411で行う演算として選択し、その選択を表す選択信号D583を計算器6411に供給するとともに、演算を制御するための制御信号D583の値を、計算器6411が1行に亘る復号途中結果(検査行列Hの各行の1に対応する第1の演算の結果)を読み込む毎に、“0”から“1”に変更する。 Next, the way the corresponding 6-bit decoding one of each column of the check matrix results v i 'is explained calculator 641 first processing when read in one by one as the decoding intermediate results D641. At this time, the control unit 642 selects the second calculation of the first calculation or the second calculation as the calculation to be performed by the calculator 6411 1 and selects the selection signal D583 indicating the selection as the calculator. 641 1, and the value of the control signal D583 for controlling the calculation is calculated by the calculator 641 1 during decoding (the result of the first calculation corresponding to 1 in each row of the check matrix H). Is changed from “0” to “1”.

計算器6411では、制御部642が第2の演算を、いま、計算器6411で行う演算として選択した場合も、第1の演算を選択した場合と同様に演算が行われるが、選択信号D643が第2の演算の選択を表しているため、セレクタ661、セレクタ667、セレクタ670、およびセレクタ680では、上述した選択信号D643が第1の演算の選択を表している場合と異なる他方の値が選択される。 In the calculator 641 1 , even when the control unit 642 selects the second calculation as the calculation performed by the calculator 6411 1 , the calculation is performed in the same manner as when the first calculation is selected. Since D643 represents the selection of the second operation, in selector 661, selector 667, selector 670, and selector 680, the other value different from the case where the selection signal D643 described above represents the selection of the first operation. Is selected.

即ち、制御部642により、いま、計算器6411で行う演算として、第2の演算が選択された場合、計算器6411では、制御部642から供給される、例えば、1ビットの制御信号D583に基づき、メモリ640から1つずつ読み込まれる復号途中結果D641を用いて、式(9)にしたがって演算を行う。 That is, the control unit 642, now as operation performed by the calculator 641 1, when the second operation is selected, the calculator 641 1, supplied from the control unit 642, for example, 1-bit control signal D583 Based on the above, the calculation is performed according to the equation (9) using the intermediate decoding result D641 read from the memory 640 one by one.

計算器6411では、検査行列の各列の1に対応する6ビットの復号途中結果D641(復号途中結果vi')が1つずつ読み込まれ、その下位ビットである絶対値D662(|vi'|)がFIFOメモリ669に供給されるとともに、その絶対値D662において、1ビットの値である“0”が最上位ビットに付加されることにより、ビット拡張が行われ、そのビット拡張の結果である6ビットの値D663が、セレクタ661に供給される。また、復号途中結果D641の最上位ビットである符号ビットD661(sign(vi'))がEXOR回路673とFIFOメモリ678にそれぞれ供給される。さらに、計算器6411では、1つずつ読み込まれた6ビットの復号途中結果D641がセレクタ661に供給される。 The calculator 641 1, 6-bit decoding intermediate results corresponding to 1 in each column of the check matrix D641 (decoding intermediate results v i ') are read in one by one, the absolute value is the lower bit D662 (| v i '|) Is supplied to the FIFO memory 669, and in the absolute value D662, 1-bit value “0” is added to the most significant bit to perform bit expansion, and the result of the bit expansion A 6-bit value D663 is supplied to the selector 661. Also, the sign bit D661 (sign (v i ′)) which is the most significant bit of the decoding intermediate result D641 is supplied to the EXOR circuit 673 and the FIFO memory 678, respectively. Further, the calculator 641 1, one by one imported 6-bit decoding intermediate results D641 are supplied to the selector 661.

セレクタ661には、6ビットの復号途中結果D641と6ビットの値D663(|vi'|)が供給される。また、セレクタ661には、第1の演算と第2の演算のうち一方の選択を表す選択信号D643が供給される。セレクタ661は、選択信号D643に基づいて、復号途中結果D641と値D663のうち一方を選択し、その一方を値D664として、加算器662に供給する。ここでは、選択信号D643は、第2の演算の選択を表しているので、セレクタ661は、値D663(|vi'|)を、値D664として加算器662に供給する。 The selector 661 is supplied with a 6-bit decoding intermediate result D641 and a 6-bit value D663 (| v i '|). The selector 661 is supplied with a selection signal D643 indicating selection of one of the first calculation and the second calculation. The selector 661 selects one of the decoding intermediate result D641 and the value D663 based on the selection signal D643, and supplies one of them as a value D664 to the adder 662. Here, since the selection signal D643 indicates selection of the second calculation, the selector 661 supplies the value D663 (| v i '|) to the adder 662 as the value D664.

積算部701の加算器662は、値D664(|vi'|)とレジスタ663に格納されている9ビットの値D665とを加算することにより、値D664を積算し、その結果得られる9ビットの積算値をレジスタ663に再格納する。なお、検査行列の1行に亘る1に対応する復号途中結果D641の絶対値D662(|vi|)に対する値D664が積算された場合レジスタ663はリセットされる。 The adder 662 of the accumulating unit 701 adds the value D664 (| v i '|) and the 9-bit value D665 stored in the register 663, thereby accumulating the value D664, and the 9-bit obtained as a result. Is stored again in the register 663. Note that the register 663 is reset when the value D664 for the absolute value D662 (| v i |) of the decoding intermediate result D641 corresponding to 1 over one row of the parity check matrix is accumulated.

検査行列の1行に亘る復号途中結果D641(検査行列の各列のすべての復号途中結果D641)が1つずつ読み込まれ、レジスタ663に1行分の値D664が積算された積算値が格納された場合、制御部642から供給される制御信号D583は、0から1に変化する。例えば、行の重みが「9」である場合、制御信号D583は、1から8クロック目までは、「0」となり、9クロック目では「1」となる。   The decoding intermediate result D641 (all decoding intermediate results D641 of each column of the check matrix) for one row of the check matrix is read one by one, and the integrated value obtained by integrating the value D664 for one row is stored in the register 663. In this case, the control signal D583 supplied from the control unit 642 changes from 0 to 1. For example, when the row weight is “9”, the control signal D583 is “0” from the first to the eighth clock, and “1” at the ninth clock.

制御信号D583が「1」の場合、セレクタ664は、レジスタ663に格納されている値、即ち、検査行列の1行に亘る1に対応する復号途中結果D641の絶対値(|vi’|)が積算された9ビットの値D665(i=1からi=dcまでのΣ|vi’|)を選択し、値D666として、レジスタ665に出力して格納させる。レジスタ665は、格納している値D666を、9ビットの値D667として、セレクタ664、加算器666、およびセレクタ667に供給する。 When the control signal D583 is “1”, the selector 664 selects the value stored in the register 663, that is, the absolute value (| v i '|) of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix. There accumulated a 9-bit value D665 (from i = 1 to i = d c Σ | v i '|) is selected, as a value D666, and stores and outputs to the register 665. The register 665 supplies the stored value D666 to the selector 664, the adder 666, and the selector 667 as a 9-bit value D667.

制御信号D583が「0」の場合、セレクタ664は、レジスタ665から供給された値D667を選択し、レジスタ665に出力して再格納させる。即ち、検査行列の1行に亘る1に対応する復号途中結果D641の絶対値D664(|vi’|)が積算されるまで、レジスタ665は、前回積算された|vi’|を、セレクタ664、加算器666、およびセレクタ667に供給する。 When the control signal D583 is “0”, the selector 664 selects the value D667 supplied from the register 665, outputs it to the register 665, and stores it again. That is, until the absolute value D664 (| v i '|) of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix is accumulated, the register 665 selects | v i ' | 664, an adder 666, and a selector 667.

加算器666では、レジスタ665から値D667が供給されるとともに、受信データ用メモリ544から受信データD544が供給される。加算器666は、値D667に、受信データ用メモリ544から供給された受信データD544を加算して、その結果得られる値D668をセレクタ667に供給する。   In the adder 666, the value D667 is supplied from the register 665, and the reception data D544 is supplied from the reception data memory 544. The adder 666 adds the reception data D544 supplied from the reception data memory 544 to the value D667, and supplies the resulting value D668 to the selector 667.

セレクタ667には、加算器666から値D668が供給されるとともに、レジスタ665から値D667が供給される。また、セレクタ667には、制御部642から、第1の演算と第2の演算のうち一方の選択を表す選択信号D643が供給される。セレクタ667は、選択信号D643に基づいて、値D668と値D667のうち一方を選択し、その選択した値を、値D669として、減算器671に供給する。ここでは、選択信号D643は、第1の演算の選択を表しているので、セレクタ667は、値D667を選択し、値D669として減算器671に供給する。   The selector 667 is supplied with the value D668 from the adder 666 and the value D667 from the register 665. Further, the selector 667 is supplied with a selection signal D643 indicating selection of one of the first calculation and the second calculation from the control unit 642. The selector 667 selects one of the value D668 and the value D667 based on the selection signal D643, and supplies the selected value to the subtracter 671 as the value D669. Here, since the selection signal D643 indicates selection of the first calculation, the selector 667 selects the value D667 and supplies it to the subtractor 671 as the value D669.

一方、FIFOメモリ669は、レジスタ665から新たな値D667(i=1からi=dCまでのΣ|vi’|)が出力されるまでの間、メモリ640から供給された5ビットの復号途中結果D641の絶対値D662(|vi’|)を遅延し、5ビットの値D670として出力する。その値D670において、1ビットの値である“0”が最上位ビットに付加されることにより、ビット拡張が行われ、そのビット拡張の結果である6ビットの値D671(|vi’|)が、セレクタ670に供給される。 On the other hand, the FIFO memory 669 decodes the 5-bit supplied from the memory 640 until a new value D667 (Σ | v i '| from i = 1 to i = d C ) is output from the register 665. The absolute value D662 (| v i '|) of the midway result D641 is delayed and output as a 5-bit value D670. In the value D670, 1-bit value “0” is added to the most significant bit to perform bit expansion, and the 6-bit value D671 (| v i '|) as a result of the bit expansion. Is supplied to the selector 670.

以上の処理と並行して、乗算部702のEXOR回路673は、レジスタ674に格納されている1ビットの値D673と符号ビットD661(sign(vi’))との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D672をレジスタ674に再格納する。なお、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661が乗算された場合、レジスタ674はリセットされる。 In parallel with the above processing, the EXOR circuit 673 of the multiplication unit 702 calculates the exclusive OR of the 1-bit value D673 stored in the register 674 and the sign bit D661 (sign (v i ′)). Thus, the sign bits are multiplied and the 1-bit multiplication result D672 is stored again in the register 674. Note that when the decoding bit D661 of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix is multiplied, the register 674 is reset.

検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661が乗算された乗算結果D672がレジスタ674に格納された場合、制御部642から供給される制御信号D583は、「0」から「1」に変化する。   When the multiplication result D672 obtained by multiplying the sign bit D661 of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix is stored in the register 674, the control signal D583 supplied from the control unit 642 is “0”. Changes to "1".

制御信号D583が「1」の場合、セレクタ675は、レジスタ674に格納されている値、即ち、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661が乗算された値D673(i=1からi=dcまでのΠsign(vi’))を選択し、1ビットの値D674としてレジスタ676に出力して格納させる。レジスタ676は、格納している値D674を、1ビットの値D675として、セレクタ675とEXOR回路679に供給する。 When the control signal D583 is “1”, the selector 675 has the value D673 obtained by multiplying the value stored in the register 674, that is, the code bit D661 of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix. (i = 1 from up to i = d c Πsign (v i ')) is selected, to store output as 1-bit value D674 to the register 676. The register 676 supplies the stored value D674 to the selector 675 and the EXOR circuit 679 as a 1-bit value D675.

制御信号D583が「0」の場合、セレクタ675は、レジスタ676から供給された値D675を選択し、レジスタ676に出力して再格納させる。即ち、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661が乗算されるまで、レジスタ676は、前回格納した値を、セレクタ675とEXOR回路679に供給する。   When the control signal D583 is “0”, the selector 675 selects the value D675 supplied from the register 676, outputs it to the register 676, and stores it again. In other words, the register 676 supplies the previously stored value to the selector 675 and the EXOR circuit 679 until the sign bit D661 of the decoding intermediate result D641 corresponding to 1 over one row of the parity check matrix is multiplied.

一方、FIFOメモリ678は、レジスタ676から新たな値D675がEXOR回路679に供給されるまでの間、符号ビットD661を遅延し、1ビットの値D676として、出力する。FIFOメモリ678から出力された1ビットの値D676を最上位ビットとするとともに、FIFOメモリ669から出力された5ビットの値D670を下位5ビットとした合計6ビットの値D678は、セレクタ670に供給される。また、1ビットの値D676は、EXOR回路679に供給される。   On the other hand, the FIFO memory 678 delays the sign bit D661 until a new value D675 is supplied from the register 676 to the EXOR circuit 679, and outputs it as a 1-bit value D676. A 1-bit value D676 output from the FIFO memory 678 is set as the most significant bit, and a total 6-bit value D678 including the 5-bit value D670 output from the FIFO memory 669 as the lower 5 bits is supplied to the selector 670. Is done. The 1-bit value D676 is supplied to the EXOR circuit 679.

セレクタ670には、FIFOメモリ669から6ビットの値D671(|vi’|)が供給されるとともに、6ビットの値D678が供給される。また、セレクタ670には、制御部642から選択信号D643が供給される。セレクタ670は、第1の演算または第2の演算のうち一方の選択を表す選択信号D643に基づいて、値D671と値D678のうち一方を選択し、その選択した値を値D679として減算器671に供給する。ここでは、選択信号D643は、第2の演算の選択を表しているので、値D671(|vi’|)を値D679として、減算器671に出力する。 The selector 670 is supplied with a 6-bit value D671 (| v i '|) from the FIFO memory 669 and a 6-bit value D678. The selector 670 is supplied with a selection signal D643 from the control unit 642. The selector 670 selects one of the value D671 and the value D678 based on the selection signal D643 indicating selection of one of the first calculation and the second calculation, and uses the selected value as the value D679 as a subtracter 671. To supply. Here, since the selection signal D643 represents the selection of the second calculation, the value D671 (| v i '|) is output to the subtractor 671 as the value D679.

減算器671は、セレクタ667から供給された9ビットの値D669から、セレクタ670から供給された6ビットの値D679を減算し、その減算結果を、6ビットの減算値D680として出力する。即ち、減算器671は、検査行列の1行に亘る1に対応する復号途中結果D641の絶対値D662 (|vi’|)の積算値から、検査行列の所定の1に対応する復号途中結果D641の絶対値(|vi’|)を減算して、その減算値(i=1からi=dc−1までのΣ|vi’|)を6ビットの減算値D680として出力する。即ち、減算器671では、検査行列の1行に亘る1に対応する復号途中結果D641の絶対値D662のうち、検査行列の所定の1に対応する復号途中結果D641以外の全てが積算された値が減算値D681として出力される。出力された減算値D680は、その下位5ビットが値D681として、LUT672に供給され、最上位ビットが符号ビットD683として、セレクタ680に供給される。ここでいう「所定の1」に対応する復号結果とは、式(9)の演算によりメッセージujを求めたい枝からのメッセージに対応するvi’である。 The subtractor 671 subtracts the 6-bit value D679 supplied from the selector 670 from the 9-bit value D669 supplied from the selector 667, and outputs the subtraction result as a 6-bit subtraction value D680. That is, the subtractor 671 calculates the decoding intermediate result corresponding to a predetermined 1 of the parity check matrix from the integrated value of the absolute value D662 (| v i '|) of the decoding intermediate result D641 corresponding to 1 over one row of the parity check matrix. The absolute value (| v i '|) of D641 is subtracted, and the subtraction value (Σ | v i ' | from i = 1 to i = d c -1) is output as a 6-bit subtraction value D680. That is, in the subtracter 671, a value obtained by integrating all of the absolute values D662 of the decoding intermediate result D641 corresponding to 1 over one row of the parity check matrix except for the decoding intermediate result D641 corresponding to the predetermined 1 of the parity check matrix. Is output as the subtraction value D681. The output subtraction value D680 is supplied to the LUT 672 as its lower 5 bits as a value D681 and supplied to the selector 680 as its most significant bit as a sign bit D683. The decoding result corresponding to “predetermined 1” here is v i ′ corresponding to the message from the branch for which the message u j is to be obtained by the calculation of Expression (9).

LUT672は、値D681(i=1からi=dc−1までのΣ(vi’))に対してφ-1の演算を行った5ビットの演算結果D682(φ-1(Σ(vi’)))を出力する。即ち、LUT672では、値D681に対してφの逆関数であるφ-1の関数を用いて変換された値が読み出され、演算結果D682として出力される。 The LUT 672 calculates a 5-bit calculation result D682 (φ −1 (Σ (v (v) ′)) by performing φ −1 calculation on the value D681 (Σ (v i ′) from i = 1 to i = d c −1) i '))) is output. That is, in the LUT 672, a value obtained by converting the value D681 using a function of φ −1 that is an inverse function of φ is read and output as a calculation result D682.

即ち、φは、φ=φ-1となる関数だから、φのLUTを、φ-1のLUTとしても使える。即ち、φ=φ-1のLUTは共有化できる。 That is, since φ is a function such that φ = φ −1 , the LUT of φ can be used as the LUT of φ −1 . That is, the LUT with φ = φ −1 can be shared.

一方、EXOR回路679は、レジスタ676から供給された1ビットの値D675と、FIFOメモリ678から供給された1ビットの値D676との排他的論理和を演算することにより、値D675を、値D676で除算し、1ビットの除算結果を除算値D684として、セレクタ680に供給する。即ち、EXOR回路679は、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661の乗算値(i=1からi=dcまでのΠsign(vi’))を、検査行列の所定の1に対応する復号途中結果D641の符号ビットD661で除算して、その除算値を除算値D684(i=1からi=dc−1までのΠsign(vi’))として、セレクタ680に供給する。即ち、EXOR回路679では、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661のうち、検査行列の所定の1に対応する符号ビットD661以外のすべてが乗算された値が、除算値D684として出力される。ここでいう「所定の1」に対応する復号途中結果D641とは、式(9)の演算(第2の演算)によりメッセージujを求めたい枝からのメッセージに対応するvi’である。 On the other hand, the EXOR circuit 679 calculates the exclusive DOR of the 1-bit value D675 supplied from the register 676 and the 1-bit value D676 supplied from the FIFO memory 678 to obtain the value D675 as the value D676. The 1-bit division result is supplied to the selector 680 as a division value D684. That, EXOR circuit 679, the multiplication value of the sign bit D661 of the decoding intermediate result D641 corresponding to one across one line of the parity check matrix (Paisign of i = 1 to i = d c (v i ' )), inspection Dividing by the sign bit D661 of the decoding intermediate result D641 corresponding to the predetermined 1 of the matrix, and the division value as a division value D684 (684sign (v i ′) from i = 1 to i = d c −1), This is supplied to the selector 680. That is, in the EXOR circuit 679, a value obtained by multiplying all the sign bits D661 of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix except the sign bit D661 corresponding to the predetermined 1 of the check matrix is obtained. , And output as a division value D684. The decoding intermediate result D641 corresponding to “predetermined 1” here is v i ′ corresponding to the message from the branch for which the message u j is to be obtained by the operation of Equation (9) (second operation).

セレクタ680には、減算器671から供給された1ビットの符号ビットD683が供給されるとともに、EXOR回路679から1ビットの除算値D684が供給される。また、セレクタ680には、制御部642から選択信号D643が供給される。セレクタ680は、第1の演算または第2の演算のうち一方の選択を表す選択信号D643に基づいて、符号ビットD683と除算値D684のうち一方を選択し、その選択した1ビットの値をD685として、出力する。ここでは、選択信号は、第2の演算の選択を表しているので、除算値D684(i=1からi=dc−1までのΠsign(vi’))を、値D685として出力する。 The selector 680 is supplied with the 1-bit sign bit D683 supplied from the subtractor 671 and the EXOR circuit 679 with the 1-bit division value D684. The selector 680 is supplied with a selection signal D643 from the control unit 642. The selector 680 selects one of the sign bit D683 and the division value D684 based on the selection signal D643 indicating selection of either the first operation or the second operation, and sets the selected 1-bit value to D685. As output. Here, since the selection signal indicates selection of the second calculation, the division value D684 (Πsign (v i ′) from i = 1 to i = d c −1) is output as the value D685.

LUT672から出力された5ビットの演算結果D682を下位5ビットとするとともに、セレクタ680から出力された1ビットの値D685を最上位ビットとする合計6ビットの復号途中結果D642(uj)が出力される。即ち、演算結果D682と値D685が乗算され、検査行列の検査行列の所定の1に対応する第2の演算結果である6ビットの復号結果D642(uj)が出力される。 The 5-bit operation result D682 output from the LUT 672 is set to the lower 5 bits, and a total 6-bit decoding result D642 (u j ) is output using the 1-bit value D685 output from the selector 680 as the most significant bit. Is done. That is, the operation result D682 and the value D685 are multiplied, and a 6-bit decoding result D642 (u j ) that is a second operation result corresponding to a predetermined 1 of the parity check matrix is output.

以上のように、制御部642により、計算器6411で行う演算として、第2の演算が選択された場合、計算器6411では、式(9)の演算が行われ、復号途中結果ujが求められる。 As described above, the control unit 642, a calculation performed in the calculator 641 1, when the second operation is selected, the calculator 641 1, the calculation of the equation (9) is performed, the decoding intermediate result u j Is required.

上述したように、計算器6411では、第1の演算の結果である復号途中結果vi’と第2の演算の結果である復号途中結果ujを出力して、メモリ640に格納させることにより、LUTを共有化することができ、ノード計算器581k(K=1,2・・・5)に比べて、計算器6411の回路規模を小さくすることができる。また、計算器6411では、φとφ-1のLUTを1つのLUT672に共有化することができるので、図28のノード計算器581kに比べて、効率よく演算を行うことができる。 As described above, the calculator 6411 1 outputs the decoding intermediate result v i ′ that is the result of the first calculation and the decoding intermediate result u j that is the result of the second calculation, and stores them in the memory 640. Thus, the LUT can be shared, and the circuit scale of the calculator 6411 1 can be reduced as compared with the node calculator 581 k (K = 1, 2,... 5). Further, the calculator 641 1, it is possible to share a single LUT672 the LUT of phi and phi -1, it can be performed as compared with the node calculator 581 k in FIG. 28, the efficient operation.

なお、計算器6411では、第2の演算が行われるときには、検査行列の各行の行の重みに基づいて、FIFOメモリ669とFIFOメモリ678における遅延量が、その行の重みの値に減らされ、第1の演算が行われるときには、検査行列の各列の列の重みに基づいて、FIFOメモリ669とFIFOメモリ678における遅延量が、その列の重みの値に減らされる。 In calculator 6411 1 , when the second calculation is performed, the delay amount in FIFO memory 669 and FIFO memory 678 is reduced to the value of the weight of the row based on the row weight of each row of the check matrix. When the first calculation is performed, the delay amount in the FIFO memory 669 and the FIFO memory 678 is reduced to the weight value of the column based on the column weight of each column of the parity check matrix.

また、図31の計算器6411では、LUT672は、出力側に設けたが、入力側、即ち、セレクタ661の前段に設けてもよい。 Further, the calculator 641 1 of FIG. 31, LUT672 is provided on the output side, the input side, i.e., may be provided before the selector 661.

図32は、図31の復号装置630の復号処理を説明するフローチャートである。この処理は、例えば、受信データ用メモリ544に復号すべき受信データが格納されたとき、開始される。   FIG. 32 is a flowchart for explaining the decoding process of the decoding device 630 in FIG. This process is started, for example, when reception data to be decoded is stored in the reception data memory 544.

ステップS141において、制御部642は、第1の演算と第2の演算のうち、いま、演算を行う演算として、第1の演算を選択し、その選択を表す選択信号D643を、計算部641に供給する。   In step S141, the control unit 642 selects the first calculation as the calculation to be performed among the first calculation and the second calculation, and sends the selection signal D643 indicating the selection to the calculation unit 641. Supply.

ステップS141の処理後は、ステップS142に進み、計算部641は、ステップS141で制御部642から供給された選択信号D643に基づいて、第1の演算と第2の演算のうち、いま計算部641で行う演算として、第1の演算を選択し、第1の演算を行う。   After the processing in step S141, the process proceeds to step S142, and the calculation unit 641 now calculates the calculation unit 641 out of the first calculation and the second calculation based on the selection signal D643 supplied from the control unit 642 in step S141. As the calculation performed in step 1, the first calculation is selected and the first calculation is performed.

具体的には、計算部641には、メモリ640から、後述するステップS149で格納された5つの復号途中結果D640(復号途中結果uj)が供給されるとともに、受信データ用メモリ544から5つの受信データD544(受信値u0i)が供給され、復号途中結果D640と受信データD544が、計算部641の計算器6411乃至6415のそれぞれに1つずつ供給される。また、計算部641には、制御部642から制御信号D583と選択信号D643が供給される。 Specifically, the calculation unit 641 is supplied with five decoding intermediate results D640 (decoding intermediate result u j ) stored in step S149 described later from the memory 640, and five from the reception data memory 544. receive data D544 (reception values u 0i) is supplied, the decoding intermediate results D640 and the received data D544, supplied one for each calculator 641 1 to 641 5 calculator 641. The calculation unit 641 is supplied with a control signal D583 and a selection signal D643 from the control unit 642.

なお、受信用メモリ544から供給された受信データD544に対して、まだ第2の演算が行われておらず、メモリ640に復号途中結果D640(D641)が格納されていない場合、メモリ640は、復号途中結果D640を計算部641に供給せず、計算部641は、復号途中結果ujを初期値に設定する。 If the second calculation has not yet been performed on the reception data D544 supplied from the reception memory 544 and the decoding intermediate result D640 (D641) is not stored in the memory 640, the memory 640 The decoding intermediate result D640 is not supplied to the calculating unit 641, and the calculating unit 641 sets the decoding intermediate result u j to an initial value.

計算器6411乃至6415は、選択信号D643に基づいて、いま行う演算を選択する。即ち、ここでは、制御部642から供給される選択信号D643は、第1の演算の選択を表しているので、計算器6411乃至6415は、第1の演算を行う。つまり、計算器6411乃至6415は、復号途中結果D640と受信データD544とを用いて、制御信号D583に基づいて、式(9)にしたがって、それぞれ演算を行い、その演算の結果である復号途中結果D642(vi)を得る。 The calculators 641 1 to 641 5 select an operation to be performed based on the selection signal D643. That is, here, the selection signal D643 supplied from the control unit 642, since it represents the selection of the first operation calculators 641 1 to 641 5 performs the first operation. That is, the calculators 641 1 to 641 5 use the decoding intermediate result D640 and the received data D544, respectively, based on the control signal D583, according to the equation (9), and perform decoding that is the result of the calculation. An intermediate result D642 (v i ) is obtained.

前述の図31で説明したように、計算器6411乃至6415は、選択信号D643に基づいて、いま行う演算を選択し、メモリ640から必要な復号途中結果D640を、それぞれ1つずつ読み出すとともに、受信データ用メモリ544から必要な受信データD544を1つずつ読み出して、第1の演算を行い、その演算の結果である復号途中結果D642を得る。 As described above with reference to FIG. 31, the calculators 641 1 to 641 5 select an operation to be performed based on the selection signal D643 and read out the necessary decoding intermediate results D640 one by one from the memory 640. The necessary reception data D544 is read one by one from the reception data memory 544, the first calculation is performed, and a decoding intermediate result D642, which is the result of the calculation, is obtained.

ステップS142の処理後は、ステップS143に進み、計算部641は、第1の演算の結果得られる5つの復号途中結果D642を、サイクリックシフト回路551に供給し、ステップS144に進む。   After the process of step S142, the process proceeds to step S143, and the calculation unit 641 supplies the five intermediate decoding results D642 obtained as a result of the first calculation to the cyclic shift circuit 551, and the process proceeds to step S144.

ステップS144において、サイクリックシフト回路551は、計算部641から供給された5つの復号途中結果D642を、サイクリックシフトし、その結果である5つの復号途中結果D640をメモリ640の既に読みだされた復号途中結果(D641)のアドレスに格納する。なお、5つの復号途中結果D640は、同一のアドレスに格納される。   In step S144, the cyclic shift circuit 551 cyclically shifts the five decoding intermediate results D642 supplied from the calculation unit 641, and the five decoding intermediate results D640, which are the results, have already been read from the memory 640. Stored in the address of the decoding result (D641). Note that the five intermediate decoding results D640 are stored at the same address.

ステップS144の処理後は、ステップS145に進み、制御部642は、計算部641により、全ての復号途中結果が演算されたかどうか、即ち、図22の検査行列Hの“1”の数分の復号途中結果が演算されたかどうかを判定し、全ての復号途中結果が演算されていないと判定した場合、ステップS142に戻り、上述した処理を繰り返す。   After the processing in step S144, the process proceeds to step S145, and the control unit 642 decodes all the decoding intermediate results by the calculation unit 641, that is, decoding for the number of “1” s in the check matrix H in FIG. It is determined whether or not intermediate results have been calculated. If it is determined that not all decoding intermediate results have been calculated, the process returns to step S142 and the above-described processing is repeated.

一方、ステップS145において、制御部642は、計算部641により、全ての復号途中結果が演算されたと判定した場合、ステップS146に進み、制御部642は、いま、演算を行う演算として、第2の演算を選択し、ステップS141で生成した第1の演算の選択を表す選択信号D643を、第2の演算の選択を表す選択信号D643に変更する。   On the other hand, in step S145, when the control unit 642 determines that all the decoding intermediate results have been calculated by the calculation unit 641, the control unit 642 proceeds to step S146, and the control unit 642 now determines the second calculation as the calculation to be performed. The calculation is selected, and the selection signal D643 representing the selection of the first calculation generated in step S141 is changed to the selection signal D643 representing the selection of the second calculation.

ステップS146の処理後は、ステップS147に進み、計算部641は、ステップS146で変更された選択信号D643に基づいて、第1の演算と第2の演算のうち、いま行う演算として、第2の演算を選択し、第2の演算を行う。   After the process of step S146, the process proceeds to step S147, and the calculation unit 641 performs the second calculation as the present calculation to be performed among the first calculation and the second calculation based on the selection signal D643 changed in step S146. An operation is selected and a second operation is performed.

具体的には、計算部641には、メモリ640から、ステップS144で格納された5つの復号途中結果D640が、復号途中結果D641として供給され、復号途中結果D641が、計算部641の計算器6411乃至6415のそれぞれに1つずつ供給される。 Specifically, the decoding unit 641 is supplied with the five decoding intermediate results D640 stored in step S144 from the memory 640 as decoding intermediate results D641, and the decoding intermediate result D641 is a calculator 641 of the calculator 641. one for each 1 to 641 5 is supplied.

計算器6411乃至6415は、ステップS146で変更された選択信号D643に基づいて、いま行う演算を選択する。即ち、ここでは、選択信号D643は、第2の演算の選択を表しているので、計算器6411乃至6415は、第2の演算を行う。つまり、計算器6411乃至6415は、復号途中結果D641を用いて、制御信号D583に基づいて、式(1)と式(8)にしたがって、それぞれ演算を行い、その演算の結果である復号途中結果D642(uj)を得る。 The calculators 641 1 to 641 5 select the operation to be performed based on the selection signal D643 changed in step S146. That is, here, the selection signal D643 is because it represents the selection of the second operation, calculators 641 1 to 641 5, a second operation. That is, the calculators 641 1 to 641 5 perform computations according to the equations (1) and (8) based on the control signal D583 using the decoding intermediate result D641, respectively, and the decoding that is the result of the computation An intermediate result D642 (u j ) is obtained.

前述の図31で説明したように、計算器6411乃至6415は、選択信号D643に基づいて、いま行う演算を選択し、メモリ640ら必要な復号途中結果D641を、それぞれ1つずつ読み出しながら、第2の演算を行い、その演算の結果である復号途中結果D642を得る。 As described above with reference to FIG. 31, the calculators 641 1 to 641 5 select an operation to be performed based on the selection signal D643 and read out the decoding intermediate results D641 required by the memory 640 one by one. The second calculation is performed, and a decoding intermediate result D642 which is the result of the calculation is obtained.

ステップS147の処理後は、ステップS148に進み、計算部641は、第2の演算の結果得られる5つの復号途中結果D642を、サイクリックシフト回路551に供給し、ステップS149に進む。   After the process of step S147, the process proceeds to step S148, and the calculation unit 641 supplies the five intermediate decoding results D642 obtained as a result of the second calculation to the cyclic shift circuit 551, and the process proceeds to step S149.

ステップS149において、サイクリックシフト回路551は、計算部641から供給された5つの復号途中結果D642を、サイクリックシフトし、その結果を5つの復号途中結果D640として、メモリ640の既に読みだされた復号途中結果(D641)のアドレスに格納する。なお、5つの復号途中結果D640は、同一のアドレスに格納される。   In step S149, the cyclic shift circuit 551 cyclically shifts the five decoding intermediate results D642 supplied from the calculation unit 641, and the results are already read from the memory 640 as the five decoding intermediate results D640. Stored in the address of the decoding result (D641). Note that the five intermediate decoding results D640 are stored at the same address.

ステップS149の処理後は、ステップS150に進み、制御部642は、計算部641により、全ての復号途中結果が演算されたかどうかを判定し、全ての復号途中結果が演算されていないと判定した場合、ステップS147に戻り、上述した処理を繰り返す。   After the processing of step S149, the process proceeds to step S150, and the control unit 642 determines whether all the decoding intermediate results have been calculated by the calculation unit 641, and determines that all the decoding intermediate results have not been calculated. Returning to step S147, the above-described processing is repeated.

一方、ステップS150において、制御部642は、計算部641により、全ての復号途中結果が演算されたと判定した場合、処理を終了する。   On the other hand, in step S150, when the control unit 642 determines that all the decoding intermediate results have been calculated by the calculation unit 641, the control unit 642 ends the process.

なお、復号装置630は、復号回数だけ図32の復号処理を繰り返し行ない、メモリ640に、最後の第1の演算の結果得られる復号途中結果D642(uj)が格納された場合、その復号途中結果D642(uj)を上述した式(5)の演算を行う不図示のブロックに供給する。不図示のブロックには、さらに受信データ用メモリ544から受信データD544が供給され、不図示のブロックは、復号途中結果D642と受信データD544を用いて、式(5)の演算を行い、その演算結果を最終的な復号結果として出力する。 Note that the decoding device 630 repeatedly performs the decoding process of FIG. 32 as many times as the number of decoding, and when the decoding intermediate result D642 (u j ) obtained as a result of the last first calculation is stored in the memory 640, the decoding is in progress The result D642 (u j ) is supplied to a block (not shown) that performs the calculation of the above equation (5). Reception data D544 is further supplied from the reception data memory 544 to the block not shown. The block (not shown) performs the calculation of Expression (5) using the decoding intermediate result D642 and the reception data D544. The result is output as the final decoding result.

図33は、図31の計算器6411の第1の演算処理を説明するフローチャートである。なお、図33のフローチャートは、図32のステップS142の第1の演算の処理を詳細に説明するフローチャートである。 Figure 33 is a flowchart illustrating a first operation processing calculator 641 1 in FIG. 31. Note that the flowchart in FIG. 33 is a flowchart for explaining in detail the processing of the first calculation in step S142 in FIG.

図33では、図31の計算器6411の処理について説明するが、タの計算器6412乃至計算器6415でも同様の処理が行なわれる。 In Figure 33, will be described calculator 641 1 of the processing of FIG. 31, the same processing even calculators 641 2 to calculator 641 5 of data is performed.

ステップS161において、積算部701は、復号途中結果D641(uj)を積算する。 In step S161, the accumulation unit 701 accumulates the decoding intermediate result D641 (u j ).

具体的には、積算部701の加算器662は、メモリ640から供給される6ビットの値D641(uj)と、レジスタ663に格納されている9ビットの値D665とを加算することにより、値D641を積算し、その結果得られる9ビットの積算値(第1の積算値)をレジスタ663に再格納する。 Specifically, the adder 662 of the accumulating unit 701 adds the 6-bit value D641 (u j ) supplied from the memory 640 and the 9-bit value D665 stored in the register 663, thereby The value D641 is integrated, and the 9-bit integrated value (first integrated value) obtained as a result is stored in the register 663 again.

検査行列の1列に亘る復号途中結果D641(検査行列の各行の1に対応するすべての復号途中結果D641)が1つずつ読み込まれ、レジスタ663に1列分の値D641が積算された積算値(j=1からj=dvまでのΣuj)が格納された場合、制御部642から供給される制御信号D583は、0から1に変化する。 Decoding intermediate result D641 (all decoding intermediate results D641 corresponding to 1 in each row of the check matrix) is read one by one and the integrated value obtained by accumulating the value D641 for one column in the register 663 When (Σu j from j = 1 to j = d v ) is stored, the control signal D583 supplied from the control unit 642 changes from 0 to 1.

制御信号D583が「1」の場合、セレクタ664は、レジスタ663に格納されている値、即ち、検査行列の1列に亘る1に対応する復号途中結果D641(復号途中結果uj)が積算された9ビットの値D665(j=1からj=dvまでのΣuj)を選択し、値D666として、レジスタ665に出力して格納させる。レジスタ665は、格納している値D666を、9ビットの値D667として、セレクタ664と加算器666に供給する。 When the control signal D583 is “1”, the selector 664 accumulates the value stored in the register 663, that is, the decoding intermediate result D641 (decoding intermediate result u j ) corresponding to 1 over one column of the check matrix. was selected 9-bit value D665 (? uj j from j = 1 to j = d v), as a value D666, and stores and outputs to the register 665. The register 665 supplies the stored value D666 to the selector 664 and the adder 666 as a 9-bit value D667.

制御信号D583が「0」の場合、セレクタ661は、レジスタ665から供給された値D667を選択し、レジスタ665に出力して再格納させる。即ち、検査行列の1列に亘る1に対応する復号途中結果D641(復号途中結果uj)が積算されるまで、レジスタ665は、前回積算されたujを、セレクタ664と加算器666に供給する。 When the control signal D583 is “0”, the selector 661 selects the value D667 supplied from the register 665, outputs it to the register 665, and stores it again. That is, until the decoding intermediate result D641 (decoding intermediate result u j ) corresponding to 1 over one column of the parity check matrix is integrated, the register 665 supplies u j previously integrated to the selector 664 and the adder 666. To do.

ステップS161の処理後は、ステップS162に進み、加算器666は、ステップS161で求められた積算値である値D667と、受信データ用メモリ544から供給される受信データD544(LDPC符号)とを加算して、値D666(加算値)を求め、セレクタ667を介して、減算器671に供給する。   After the process of step S161, the process proceeds to step S162, where the adder 666 adds the value D667 that is the integrated value obtained in step S161 and the reception data D544 (LDPC code) supplied from the reception data memory 544. Then, a value D666 (added value) is obtained and supplied to the subtracter 671 via the selector 667.

ステップS162の処理後は、ステップS163に進み、減算器671は、加算器666から供給された値D669(値D667)から、検査行列の所定の1に対応する復号途中結果D641(uj)を減算して、その減算値(j=1からj=dv−1までのΣujと受信値u0iの加算値、即ち、vi)を6ビットの減算値D680(第1の減算値)として出力する。 After the processing of step S162, the process proceeds to step S163, and the subtractor 671 calculates the decoding intermediate result D641 (u j ) corresponding to the predetermined 1 of the parity check matrix from the value D669 (value D667) supplied from the adder 666. The subtraction value (the sum of Σu j from j = 1 to j = d v −1 and the reception value u 0i , that is, v i ) is subtracted 6-bit subtraction value D680 (first subtraction value) Output as.

具体的には、FIFOメモリ669は、レジスタ665から新たな値D667(j=1からj=dvまでのΣuj)が出力されるまでの間、メモリ640から供給された5ビットの復号途中結果D641の絶対値(|uj|)を遅延し、5ビットの値D670として出力する。 Specifically, FIFO memories 669, between (from j = 1? Uj j to j = d v) a new value D667 from the register 665 until the output, 5 bits of the decoded middle supplied from the memory 640 The absolute value (| u j |) of the result D641 is delayed and output as a 5-bit value D670.

一方、FIFOメモリ678は、レジスタ676から新たな値D675がEXOR回路679に供給されるまでの間、メモリ640から供給される復号途中結果D641の符号ビットD661(sign(uj))を遅延し、1ビットの値D676として、出力する。 On the other hand, the FIFO memory 678 delays the sign bit D661 (sign (u j )) of the decoding intermediate result D641 supplied from the memory 640 until the new value D675 is supplied from the register 676 to the EXOR circuit 679. Output as 1-bit value D676.

FIFOメモリ678から出力された1ビットの値D676(sign(uj))を最上位ビットとするとともに、FIFOメモリ669から出力された5ビットの値D670(|uj|)を下位5ビットとした合計6ビットの値D678(uj)は、セレクタ670を介して、減算器671に供給される。 The 1-bit value D676 (sign (u j )) output from the FIFO memory 678 is set as the most significant bit, and the 5-bit value D670 (| u j |) output from the FIFO memory 669 is set as the lower 5 bits. The total 6-bit value D678 (u j ) is supplied to the subtracter 671 via the selector 670.

減算器671は、セレクタ667を介して、レジスタ665から供給された9ビットの値D669から、セレクタ670を介して供給された6ビットの値D679を減算し、その減算結果を、6ビットの減算値D680として出力する。即ち、減算器671は、検査行列の1列に亘る1に対応する復号途中結果D641(復号途中結果uj)の積算値と受信データD643(受信値u0i)との加算値から、検査行列の所定の1に対応する復号途中結果D641(uj)を減算して、その減算値(j=1からj=dv−1までのΣujと受信値u0iの加算値、即ち、vi)を6ビットの減算値D680として出力する。即ち、減算器671では、検査行列の各列の1に対応する復号結果のうち、検査行列の所定の1に対応する復号結果以外のすべてを積算した値と、受信データD544を加算した値が減算値D680として出力される。ここでいう「所定の1」に対応する復号結果とは、式(1)と式(8)の演算によりメッセージvi’を求めたい枝からのメッセージに対応するujである。 The subtractor 671 subtracts the 6-bit value D679 supplied via the selector 670 from the 9-bit value D669 supplied from the register 665 via the selector 667 and subtracts the subtraction result to 6-bit subtraction. Output as the value D680. That is, the subtractor 671 determines the parity check matrix from the sum of the integration value of the decoding intermediate result D641 (decoding intermediate result u j ) corresponding to 1 over one column of the parity check matrix and the reception data D643 (reception value u 0i ). The subtraction result D641 (u j ) corresponding to the predetermined 1 is subtracted, and the subtraction value (the sum of Σu j from j = 1 to j = d v −1 and the received value u 0i , that is, v i ) is output as a 6-bit subtraction value D680. That is, in the subtracter 671, among the decoding results corresponding to 1 of each column of the parity check matrix, a value obtained by adding all of the decoding results other than the decoding result corresponding to the predetermined 1 of the parity check matrix and the value obtained by adding the reception data D544 are obtained. Output as subtraction value D680. The decoding result corresponding to “predetermined 1” here is u j corresponding to the message from the branch for which the message v i ′ is to be obtained by the calculation of Expression (1) and Expression (8).

そして、出力された減算値D680は、その下位5ビットを値D681(|vi|)として、LUT672に供給され、上位1ビットを符号ビットD683(sign(vi))として、セレクタ680を介して出力される。 The output subtraction value D680 is supplied to the LUT 672 with the lower 5 bits as the value D681 (| v i |), and the higher 1 bit as the sign bit D683 (sign (v i )) via the selector 680. Is output.

ステップS163の処理後は、ステップS164に進み、LUT672は、減算器671から供給される減算値D680の下位5ビット(絶対値)である値D681(|vi|)に対して、φの関数を用いて変換した変換値(第1の変換値)を読み出し、出力する。即ち、LUT672は、値D681に対してφの演算を行った5ビットの演算結果D682(φ(|vi|))を出力する。 After the process of step S163, the process proceeds to step S164, and the LUT 672 performs a function of φ on the value D681 (| v i |) which is the lower 5 bits (absolute value) of the subtraction value D680 supplied from the subtractor 671. The conversion value (first conversion value) converted using is read and output. That is, the LUT 672 outputs a 5-bit calculation result D682 (φ (| v i |)) obtained by performing φ calculation on the value D681.

ステップS164の処理後は、ステップS165に進み、計算器6411では、LUT672から出力された5ビットの演算結果D682(φ(|vi|)と、セレクタ680から出力された1ビットの値D685(sign(vi))が乗算され、検査行列の所定の1に対応する第1の演算結果である復号途中結果D642として出力される。即ち、計算器6411では、5ビットの演算結果D682(φ(|vi|)を下位5ビットとするとともに、1ビットの値D685(sign(vi))を最上位ビットとする合計6ビットの復号途中結果D642(復号途中結果vi’)(第2の乗算値)が出力される。そして、計算器6411は処理を終了する。 After the processing in step S164, the process proceeds to step S165, and the calculator 6411 1 outputs the 5-bit calculation result D682 (φ (| v i |) output from the LUT 672 and the 1-bit value D685 output from the selector 680. (Sign (v i )) is multiplied and output as a decoding intermediate result D642 which is a first operation result corresponding to a predetermined 1 of the parity check matrix, that is, the calculator 6411 1 has a 5-bit operation result D682. (6 (total decoding result v i ′) of 6 bits in total, with φ (| v i |) as the lower 5 bits and a 1-bit value D685 (sign (v i )) as the most significant bit (second multiplier) is output. the calculator 641 1 ends the process.

以上のように、計算器6411では、式(1)と式(8)の演算が行われ、復号途中結果vi’が求められる。 As described above, the calculator 641 1, operation of equation (1) and equation (8) is performed, the decoding intermediate results v i 'is obtained.

図34は、図30の計算器6411の第2の演算処理を説明するフローチャートである。なお、図33のフローチャートは、図32のステップS147の第2の演算の処理を詳細に説明するフローチャートである。 Figure 34 is a flow chart for explaining a second operation processing calculator 641 1 in FIG. 30. Note that the flowchart in FIG. 33 is a flowchart for explaining in detail the processing of the second calculation in step S147 in FIG.

図33では、図31の計算器6411の処理について説明するが、他の計算器6412乃至計算器6415でも同様の処理が行なわれる。 In Figure 33, it will be described calculator 641 1 of the processing of FIG. 31, the other calculators 641 2 to calculator 641 5 even similar processing is performed.

ステップS181において、積算部701は、メモリ640から供給される復号途中結果viの絶対値|vi|を積算する。 In step S181, the integrating unit 701 integrates the absolute values | v i | of the decoding intermediate results v i supplied from the memory 640.

具体的には、計算器6411では、検査行列の各列の1に対応する6ビットの復号途中結果D641(復号途中結果vi’)が1つずつ読み込まれ、その下位ビットである絶対値D662(|vi’|)がFIFOメモリ669に供給されるとともに、その絶対値D662において、1ビットの値である“0”が最上位ビットに付加されることにより、ビット拡張が行われ、そのビット拡張の結果である6ビットの値D663が、セレクタ661を介して、積算部701の加算器662に供給される。 Specifically, the calculator 641 in 1, 6-bit decoding intermediate results corresponding to 1 in each column of the check matrix D641 (decoding intermediate results v i ') are read in one by one, the absolute value is the lower bits D662 (| v i '|) is supplied to the FIFO memory 669, and in the absolute value D662, 1-bit value “0” is added to the most significant bit, thereby performing bit expansion. A 6-bit value D663 as a result of the bit expansion is supplied to the adder 662 of the accumulating unit 701 via the selector 661.

積算部701の加算器662は、値D664(D663(|vi’|))とレジスタ663に格納されている9ビットの値D665とを加算することにより、値D664を積算し、その結果得られる9ビットの積算値(第2の積算値)をレジスタ663に再格納する。 The adder 662 of the accumulating unit 701 adds the value D664 (D663 (| v i '|)) and the 9-bit value D665 stored in the register 663, thereby accumulating the value D664. The 9-bit integrated value (second integrated value) is stored in the register 663 again.

検査行列の1行に亘る復号途中結果D641(検査行列の各列のすべての復号途中結果D641)が1つずつ読み込まれ、レジスタ663に1行分の値D664が積算された積算値が格納された場合、制御部642から供給される制御信号D583は、0から1に変化する。   The decoding intermediate result D641 (all decoding intermediate results D641 of each column of the check matrix) for one row of the check matrix is read one by one, and the integrated value obtained by integrating the value D664 for one row is stored in the register 663. In this case, the control signal D583 supplied from the control unit 642 changes from 0 to 1.

制御信号D583が「1」の場合、セレクタ664は、レジスタ663に格納されている値、即ち、検査行列の1行に亘る1に対応する復号途中結果D641の絶対値(|vi’|)が積算された9ビットの値D665(i=1からi=dcまでのΣ|vi’|)を選択し、値D666として、レジスタ665に出力して格納させる。レジスタ665は、格納している値D666を、9ビットの値D667として、セレクタ664に供給するとともに、セレクタ667を介して減算器671に供給する。 When the control signal D583 is “1”, the selector 664 selects the value stored in the register 663, that is, the absolute value (| v i '|) of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix. There accumulated a 9-bit value D665 (from i = 1 to i = d c Σ | v i '|) is selected, as a value D666, and stores and outputs to the register 665. The register 665 supplies the stored value D666 as a 9-bit value D667 to the selector 664 and also supplies it to the subtracter 671 via the selector 667.

制御信号D583が「0」の場合、セレクタ664は、レジスタ665から供給された値D667を選択し、レジスタ665に出力して再格納させる。即ち、検査行列の1行に亘る1に対応する復号途中結果D641の絶対値D664(|vi’|)が積算されるまで、レジスタ665は、前回積算された|vi’|を、セレクタ664に供給するとともに、セレクタ667を介して減算器671に供給する。 When the control signal D583 is “0”, the selector 664 selects the value D667 supplied from the register 665, outputs it to the register 665, and stores it again. That is, until the absolute value D664 (| v i '|) of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix is accumulated, the register 665 selects | v i ' | In addition, the signal is supplied to the subtracter 671 via the selector 667.

ステップS181の処理後は、ステップS182に進み、減算器671は、セレクタ667を介して、レジスタ665から供給された9ビットの値D669から、所定の復号途中結果vi’の絶対値|vi’|を減算し、その減算結果を、6ビットの減算値D680(第2の減算値)として出力する。 After the process of step S181, the process proceeds to step S182, where the subtractor 671 determines the absolute value | v i of the predetermined decoding intermediate result v i ′ from the 9-bit value D669 supplied from the register 665 via the selector 667. '| Is subtracted, and the subtraction result is output as a 6-bit subtraction value D680 (second subtraction value).

具体的には、FIFOメモリ669は、レジスタ665から新たな値D667(i=1からi=dCまでのΣ|vi’|)が出力されるまでの間、メモリ640から供給された5ビットの復号途中結果D641の絶対値D662(|vi’|)を遅延し、5ビットの値D670として出力する。その値D670において、1ビットの値である“0”が最上位ビットに付加されることにより、ビット拡張が行われ、そのビット拡張の結果である6ビットの値D671(|vi’|)が、セレクタ670を介して、減算器671に供給される。 Specifically, the FIFO memory 669 is supplied from the memory 640 until the new value D667 (Σ | v i ′ from i = 1 to i = d C ) is output from the register 665. The absolute value D662 (| v i '|) of the bit decoding result D641 is delayed and output as a 5-bit value D670. In the value D670, 1-bit value “0” is added to the most significant bit to perform bit expansion, and the 6-bit value D671 (| v i '|) as a result of the bit expansion. Is supplied to the subtractor 671 via the selector 670.

減算器671は、レジスタ665から供給された検査行列の1行に亘る1に対応する復号途中結果D641の絶対値D662(|vi’|)の積算値から、FIFOメモリ669から供給された検査行列の所定の1に対応する復号途中結果D641の絶対値(|vi’|)を減算して、その減算値(i=1からi=dc−1までのΣ|vi’|)を6ビットの減算値D680として出力する。即ち、減算器671では、検査行列の1行に亘る1に対応する復号途中結果D641の絶対値D662のうち、検査行列の所定の1に対応する復号途中結果D641以外の全てが積算された値が減算値D681として出力される。ここでいう「所定の1」に対応する復号結果とは、式(9)の演算によりメッセージujを求めたい枝からのメッセージに対応するvi’である。 The subtracter 671 uses the integrated value of the absolute value D662 (| v i '|) of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix supplied from the register 665, and the check supplied from the FIFO memory 669. The absolute value (| v i '|) of the decoding intermediate result D641 corresponding to the predetermined 1 of the matrix is subtracted, and the subtraction value (Σ | v i ' | from i = 1 to i = d c −1). Is output as a 6-bit subtraction value D680. That is, in the subtracter 671, a value obtained by integrating all of the absolute values D662 of the decoding intermediate result D641 corresponding to 1 over one row of the parity check matrix except for the decoding intermediate result D641 corresponding to the predetermined 1 of the parity check matrix. Is output as the subtraction value D681. The decoding result corresponding to “predetermined 1” here is v i ′ corresponding to the message from the branch for which the message u j is to be obtained by the calculation of Expression (9).

そして、出力された減算値D680は、その下位5ビットである絶対値が値D681として、LUT672に供給される。   Then, the output subtraction value D680 is supplied to the LUT 672 as the absolute value of the lower 5 bits as the value D681.

ステップS182の処理後は、ステップS183に進み、LUT672は、減算器671から供給される減算値D680の絶対値である値D681(i=1からi=dc−1までのΣ(vi’))に対して、φの逆関数であるφ-1の関数を用いて変換された値(第2の変換値)が読み出され、φ-1の演算を行った5ビットの演算結果D682(φ-1(Σ(vi’)))を出力する。即ち、LUT672は、値D681(i=1からi=dc−1までのΣ(vi’))に対してφ-1の演算を行った5ビットの演算結果D682(φ-1(Σ(vi’)))を出力する。 After the process of step S182, the process proceeds to step S183, and the LUT 672 causes the value D681 (i = 1 to i = d c −1 from Σ (v i ′) which is the absolute value of the subtraction value D680 supplied from the subtractor 671. )), A value (second converted value) converted by using a function of φ −1 which is an inverse function of φ is read, and a 5-bit operation result D682 obtained by performing an operation of φ −1-1 (Σ (v i '))) is output. That is, the LUT 672 calculates a 5-bit calculation result D682 (φ −1 (Σ) obtained by performing a calculation of φ −1 on the value D681 (Σ (v i ′) from i = 1 to i = d c −1). (V i '))) is output.

ステップS183の処理後は、ステップS184に進み、乗算部702は、復号途中結果vi’の符号ビットを乗算する。 After the process of step S183, the process proceeds to step S184, where the multiplier 702 multiplies the sign bit of the decoding intermediate result v i ′.

具体的には、計算器6411では、復号途中結果D641の最上位ビットである符号ビットD661(sign(vi’))がEXOR回路673とFIFOメモリ678にそれぞれ供給される。そして、乗算部702のEXOR回路673は、レジスタ674に格納されている1ビットの値D673と符号ビットD661(sign(vi’))との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D672をレジスタ674に再格納する。 Specifically, the calculator 641 1, the sign bit D661 which is the most significant bit of the decoding intermediate result D641 (sign (v i ') ) are supplied to the EXOR circuit 673 and FIFO memory 678. Then, the EXOR circuit 673 of the multiplication unit 702 calculates the exclusive OR of the 1-bit value D673 stored in the register 674 and the sign bit D661 (sign (v i ′)), thereby obtaining sign bits. The 1-bit multiplication result D672 is stored again in the register 674.

検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661が乗算された乗算結果D672がレジスタ674に格納された場合、制御部642から供給される制御信号D583は、「0」から「1」に変化する。   When the multiplication result D672 obtained by multiplying the sign bit D661 of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix is stored in the register 674, the control signal D583 supplied from the control unit 642 is “0”. Changes to "1".

制御信号D583が「1」の場合、セレクタ675は、レジスタ674に格納されている値、即ち、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661が乗算された値D673(i=1からi=dcまでのΠsign(vi’))を選択し、1ビットの値D674としてレジスタ676に出力して格納させる。レジスタ676は、格納している値D674を、1ビットの値D675として、セレクタ675とEXOR回路679に供給する。 When the control signal D583 is “1”, the selector 675 has the value D673 obtained by multiplying the value stored in the register 674, that is, the code bit D661 of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix. (i = 1 from up to i = d c Πsign (v i ')) is selected, to store output as 1-bit value D674 to the register 676. The register 676 supplies the stored value D674 to the selector 675 and the EXOR circuit 679 as a 1-bit value D675.

制御信号D583が「0」の場合、セレクタ675は、レジスタ676から供給された値D675を選択し、レジスタ676に出力して再格納させる。即ち、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661が乗算されるまで、レジスタ676は、前回格納した値を、セレクタ675とEXOR回路679に供給する。   When the control signal D583 is “0”, the selector 675 selects the value D675 supplied from the register 676, outputs it to the register 676, and stores it again. In other words, the register 676 supplies the previously stored value to the selector 675 and the EXOR circuit 679 until the sign bit D661 of the decoding intermediate result D641 corresponding to 1 over one row of the parity check matrix is multiplied.

ステップS184の処理後は、ステップS185に進み、EXOR回路679は、レジスタ676から供給された1ビットの値D675、所定の復号途中結果vi’の符号ビットsign(vi’)を除算し、その除算結果を、1ビットの除算値D684(符号乗算値)として、セレクタ680を介して出力する。 After the process of step S184, the process proceeds to step S185, and the EXOR circuit 679 divides the 1-bit value D675 supplied from the register 676 and the sign bit sign (v i ') of the predetermined decoding intermediate result v i ', The division result is output as a 1-bit division value D684 (sign multiplication value) via the selector 680.

即ち、FIFOメモリ678は、レジスタ676から新たな値D675がEXOR回路679に供給されるまでの間、符号ビットD661を遅延し、1ビットの値D676として、EXOR回路679に供給する。   That is, the FIFO memory 678 delays the sign bit D661 until the new value D675 is supplied from the register 676 to the EXOR circuit 679, and supplies the delayed sign bit D661 to the EXOR circuit 679.

EXOR回路679は、レジスタ676から供給された1ビットの値D675と、FIFOメモリ678から供給された1ビットの値D676との排他的論理和を演算することにより、値D675を、値D676で除算し、1ビットの除算結果を除算値D684として、セレクタ680に供給する。即ち、EXOR回路679は、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661の乗算値(i=1からi=dcまでのΠsign(vi’))を、検査行列の所定の1に対応する復号途中結果D641の符号ビットD661で除算して、その除算値を除算値D684(i=1からi=dc−1までのΠsign(vi’))として、セレクタ680に供給する。即ち、EXOR回路679では、検査行列の1行に亘る1に対応する復号途中結果D641の符号ビットD661のうち、検査行列の所定の1に対応する符号ビットD661以外のすべてが乗算された値が、除算値D684として、セレクタ680を介して出力される。ここでいう「所定の1」に対応する復号結果とは、式(9)の演算によりメッセージujを求めたい枝からのメッセージに対応するvi’である。 The EXOR circuit 679 calculates the exclusive OR of the 1-bit value D675 supplied from the register 676 and the 1-bit value D676 supplied from the FIFO memory 678, thereby dividing the value D675 by the value D676. The 1-bit division result is supplied to the selector 680 as a division value D684. That, EXOR circuit 679, the multiplication value of the sign bit D661 of the decoding intermediate result D641 corresponding to one across one line of the parity check matrix (Paisign of i = 1 to i = d c (v i ' )), inspection Dividing by the sign bit D661 of the decoding intermediate result D641 corresponding to the predetermined 1 of the matrix, and the division value as a division value D684 (684sign (v i ′) from i = 1 to i = d c −1), This is supplied to the selector 680. That is, in the EXOR circuit 679, a value obtained by multiplying all the sign bits D661 of the decoding intermediate result D641 corresponding to 1 over one row of the check matrix except the sign bit D661 corresponding to the predetermined 1 of the check matrix is obtained. The divided value D684 is output via the selector 680. The decoding result corresponding to “predetermined 1” here is v i ′ corresponding to the message from the branch for which the message u j is to be obtained by the calculation of Expression (9).

ステップS185の処理後は、ステップS186に進み、計算器6411では、即ち、LUT672から出力された5ビットの演算結果D682と、EXOR回路679からセレクタ680を介して出力された1ビットの値D685とが乗算され、検査行列の所定の1に対応する第2の演算結果である6ビットの復号結果D642(uj)として出力される。即ち、5ビットの演算結果D682を下位5ビットとするとともに、1ビットの値D685を最上位ビットとする合計6ビットの復号途中結果D642(uj)(第1の乗算値)が出力される。そして、計算器6411は処理を終了する。 After the processing in step S185, the process proceeds to step S186, where the calculator 6411 1 , that is, the 5-bit calculation result D682 output from the LUT 672 and the 1-bit value D685 output from the EXOR circuit 679 via the selector 680 are obtained. Are multiplied and output as a 6-bit decoded result D642 (u j ) which is a second calculation result corresponding to a predetermined 1 of the parity check matrix. That is, a 5-bit decoding result D642 (u j ) (first multiplication value) is output with the 5-bit operation result D682 as the lower 5 bits and the 1-bit value D685 as the most significant bit. . The calculator 641 1 ends the process.

以上のように、計算器6411では、式(9)の演算が行われ、復号途中結果ujが求められる。 As described above, the calculator 641 1, performs the operation of equation (9), the decoding intermediate results u j is obtained.

なお、上述したサイクリックシフト回路には、バレルシフタを用いると回路規模を小さくしながら所望の操作を実現できる。   If a barrel shifter is used for the above-described cyclic shift circuit, a desired operation can be realized while reducing the circuit scale.

また、FIFOやRAMの物理的なビット幅が足りない場合には、複数のRAMを用いて同じ制御信号を与えることで、論理的に1つのRAMとみなすことができる。   When the physical bit width of the FIFO or RAM is insufficient, it can be logically regarded as one RAM by giving the same control signal using a plurality of RAMs.

さらに、上述の場合には、説明を簡単にするために、Pが5の場合、即ち、検査行列を構成する構成行列の行数および列数が5の場合を例に挙げたが、構成行列の行数および列数Pは必ずしも5である必要はなく、検査行列によって異なる値を取ることもあり得る。例えば、Pは360や392であってもよい。   Further, in the above case, for the sake of simplicity of explanation, the case where P is 5, that is, the case where the number of rows and the number of columns of the constituent matrix constituting the parity check matrix is five is taken as an example. The number of rows and the number of columns P need not necessarily be 5, and may take different values depending on the parity check matrix. For example, P may be 360 or 392.

また、本実施の形態では、符号長90、符号化率2/3のLDPC符号を用いたが、LDPC符号の符号長や符号化率は、幾つであっても構わない。例えば、構成行列の行数および列数Pが5の場合、枝総数が5以下であれば、どのような符号長、符号化率のLDPC符号でも、制御信号を代えるだけで、図24の復号装置530、図26の復号装置570、図28の復号装置600、図30の復号装置630を用いて復号可能である。   In this embodiment, an LDPC code having a code length of 90 and a coding rate of 2/3 is used. However, the LDPC code may have any number of code lengths and coding rates. For example, when the number of rows and the number of columns P of the configuration matrix is 5, and the total number of branches is 5 or less, the LDPC code of any code length and coding rate can be used to perform the decoding of FIG. Decoding is possible using the apparatus 530, the decoding apparatus 570 in FIG. 26, the decoding apparatus 600 in FIG. 28, and the decoding apparatus 630 in FIG.

さらに、構成行列の行数および列数Pが所定の値で、枝の総数がある値以下、という条件を満たすあるLDPC符号の復号装置は、その条件を満たす、任意の符号長で、任意の符号化率のLDPC符号を復号することができる。   Further, a certain LDPC code decoding apparatus that satisfies the condition that the number of rows and the number of columns P of the configuration matrix are predetermined values and the total number of branches is equal to or less than a certain value, an arbitrary code length that satisfies the conditions, and an arbitrary code length An LDPC code with a coding rate can be decoded.

検査行列が、構成行列の行数および列数Pの倍数でない場合は、検査行列の端数の外側にすべて0(all 0)の成分を付けてPの倍数とみなして適用できることがある。   When the parity check matrix is not a multiple of the number of rows and the number of columns P of the constituent matrix, it may be applied by adding all 0 (all 0) components outside the fraction of the parity check matrix and considering it as a multiple of P.

また、本実施の形態では、検査行列は構成行列から構成したが、検査行列は、構成行列から構成されなくてもよい。   Further, in the present embodiment, the parity check matrix is configured from a configuration matrix, but the parity check matrix may not be configured from a configuration matrix.

次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。   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.

そこで、図34は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。   Therefore, FIG. 34 shows a configuration example of an embodiment of a computer in which a program for executing the above-described series of processing 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 a single computer, or may be processed in a distributed manner 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 check 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 check 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. 本発明を適用した復号装置の他の一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of other one Embodiment of the decoding apparatus to which this invention is applied. 図17の復号装置のノード計算器の詳細構成例を示すブロック図である。It is a block diagram which shows the detailed structural example of the node calculator of the decoding apparatus of FIG. 図17の復号装置の復号処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the decoding apparatus of FIG. 本発明を適用した復号装置の他の一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of other one Embodiment of the decoding apparatus to which this invention is applied. 図20の復号装置の復号処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the decoding apparatus of FIG. LDPC符号の検査行列の例を示す図である。It is a figure which shows the example of the check matrix of a LDPC code. 復号装置の構成例を示すブロック図である。It is a block diagram which shows the structural example of a decoding apparatus. 本発明を適用した復号装置の他の一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of other one Embodiment of the decoding apparatus to which this invention is applied. 図24の復号装置の復号処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the decoding apparatus of FIG. 本発明を適用した復号装置の他の一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of other one Embodiment of the decoding apparatus to which this invention is applied. 図26の復号装置の復号処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the decoding apparatus of FIG. 本発明を適用した復号装置の他の一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of other one Embodiment of the decoding apparatus to which this invention is applied. 図28の復号装置の復号処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the decoding apparatus of FIG. 本発明を適用した復号装置の他の一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of other one Embodiment of the decoding apparatus to which this invention is applied. 図30の計算器の詳細構成例を示すブロック図である。It is a block diagram which shows the detailed structural example of the calculator of FIG. 図30の復号装置の復号処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the decoding apparatus of FIG. 図31の計算器の第1の演算処理を説明するフローチャートである。It is a flowchart explaining the 1st arithmetic processing of the calculator of FIG. 図31の計算器の第2の演算処理を説明するフローチャートである。It is a flowchart explaining the 2nd arithmetic processing of the calculator of FIG. 本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。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 復号装置, 310 枝用メモリ, 311 スイッチ, 312 バリアブルノード計算器, 313 チェックノード計算器, 314 セレクタ, 315 受信用メモリ, 316制御部, 340 復号装置, 350 スイッチ, 351 枝用メモリ, 352 枝用メモリ, 353 セレクタ, 354 ノード計算器, 355 受信用メモリ, 356 制御部, 430 復号装置, 440 枝用メモリ, 441 ノード計算器, 442 受信用メモリ, 443 制御部, 530 復号装置, 540 スイッチ, 541 スイッチ, 542 枝データ格納メモリ, 543 セレクタ, 544 受信データ用メモリ, 545 バリアブルノード計算部, 546 スイッチ, 547 枝データ格納メモリ, 548 セレクタ, 549 チェックノード計算部, 550 セレクタ, 551 サイクリックシフト回路, 552 制御部, 570 復号装置, 580 セレクタ, 581 ノード計算部, 582 制御部, 600 復号装置, 610 枝用メモリ, 611 制御部, 630 復号装置, 640 メモリ, 641 計算部, 642 制御部, 901 バス, 902 CPU, 903 ROM, 904 RAM, 905 ハードディスク, 906 出力部, 907 入力部, 908 通信部, 909 ドライブ, 910 入出力インタフェース, 911 リムーバブル記録媒体   300 Decoder, 310 Branch Memory, 311 Switch, 312 Variable Node Calculator, 313 Check Node Calculator, 314 Selector, 315 Receiving Memory, 316 Control Unit, 340 Decoder, 350 Switch, 351 Branch Memory, 352 Branch Memory, 353 selector, 354 node calculator, 355 reception memory, 356 control unit, 430 decoding device, 440 branch memory, 441 node calculator, 442 reception memory, 443 control unit, 530 decoding device, 540 switch, 541 switch, 542 branch data storage memory, 543 selector, 544 received data memory, 545 variable node calculation unit, 546 switch, 547 branch data storage memory, 548 selector 549 check node calculation unit, 550 selector, 551 cyclic shift circuit, 552 control unit, 570 decoding device, 580 selector, 581 node calculation unit, 582 control unit, 600 decoding device, 610 branch memory, 611 control unit, 630 decoding Device, 640 memory, 641 calculation unit, 642 control unit, 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 recoding media

Claims (10)

LDPC(Low Density Parity Check)符号を復号する復号装置であって、
前記LDPC符号の復号のためのチェックノードの演算を、必要なメッセージを用いて行うチェックノード計算手段と、
前記LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算手段と、
前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶する記憶手段と、
前記記憶手段に記憶された前記メッセージを、前記チェックノード計算手段、または前記バリアブルノード計算手段のうちの一方を選択して供給する供給手段と
を備えることを特徴とする復号装置。
A decoding device for decoding LDPC (Low Density Parity Check) code,
Check node calculation means for performing a check node operation for decoding the LDPC code using a necessary message;
Variable node calculation means for performing a variable node operation for decoding the LDPC code using a necessary message;
Storage means for storing a message obtained as a result of the operation of the check node or the operation of the variable node;
A decoding device comprising: a supply unit that selectively supplies one of the check node calculation unit and the variable node calculation unit to the message stored in the storage unit.
請求項1に記載の復号装置であって、
前記記憶手段は、デュアルポートRAM(Random Access Memory)またはシングルポートRAM(Random Access Memory)である
ことを特徴とする復号装置。
The decoding device according to claim 1,
The decoding device, wherein the storage means is a dual port RAM (Random Access Memory) or a single port RAM (Random Access Memory).
LDPC(Low Density Parity Check)符号を復号する復号装置の復号方法であって、
チェックノード計算手段による前記LDPC符号の復号のためのチェックノードの演算を、必要なメッセージ用いて行うチェックノード計算ステップと、
バリアブルノード計算手段による前記LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算ステップと、
前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、
前記記憶手段に記憶された前記メッセージを、前記チェックノード計算手段、または前記バリアブルノード計算手段のうちの一方に供給する供給ステップと
を含むことを特徴とする復号方法。
A decoding method of a decoding device for decoding LDPC (Low Density Parity Check) code,
A check node calculation step for performing a check node operation for decoding the LDPC code by a check node calculation means using a necessary message;
A variable node calculation step for performing a variable node calculation for decoding the LDPC code by a variable node calculation means using a necessary message;
A storage step of storing in a storage means a message obtained as a result of the operation of the check node or the operation of the variable node;
And a supply step of supplying the message stored in the storage means to one of the check node calculation means and the variable node calculation means.
LDPC(Low Density Parity Check)符号の復号をコンピュータに行わせるプログラムであって、
チェックノード計算手段による前記LDPC符号の復号のためのチェックノードの演算を、必要なメッセージを用いて行うチェックノード計算ステップと、
バリアブルノード計算手段による前記LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算ステップと、
前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、
前記記憶手段に記憶された前記メッセージを、前記チェックノード計算手段、または前記バリアブルノード計算手段のうちの一方に供給する供給ステップと
を備えることを特徴とするプログラム。
A program that causes a computer to decode LDPC (Low Density Parity Check) code,
A check node calculation step of performing a check node operation for decoding the LDPC code by a check node calculation means using a necessary message;
A variable node calculation step for performing a variable node calculation for decoding the LDPC code by a variable node calculation means using a necessary message;
A storage step of storing in a storage means a message obtained as a result of the operation of the check node or the operation of the variable node;
A supply step of supplying the message stored in the storage means to one of the check node calculation means or the variable node calculation means.
LDPC(Low Density Parity Check)符号を復号する復号装置であって、
前記LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方を選択する選択手段と、
前記選択手段により選択された前記チェックノードの演算、または前記バリアブルノードの演算を、必要なメッセージを用いて行うノード計算手段と、
前記ノード計算手段による前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶する記憶手段と、
前記記憶手段に記憶された前記メッセージを、前記ノード計算手段に供給する供給手段と
を備えることを特徴とする復号装置。
A decoding device for decoding LDPC (Low Density Parity Check) code,
A selection means for selecting one of a check node operation for decoding the LDPC code or a variable node operation;
Node calculation means for performing the calculation of the check node selected by the selection means or the calculation of the variable node using a necessary message;
Storage means for storing a message obtained as a result of the computation of the check node by the node computation means or the computation of the variable node;
A decoding device comprising: a supply unit configured to supply the message stored in the storage unit to the node calculation unit.
請求項5に記載の復号装置であって、
前記記憶手段は、デュアルポートRAM(Random Access Memory)またはシングルポートRAM(Random Access Memory)である
ことを特徴とする復号装置。
The decoding device according to claim 5,
The decoding device, wherein the storage means is a dual port RAM (Random Access Memory) or a single port RAM (Random Access Memory).
LDPC(Low Density Parity Check)符号を復号する復号装置の復号方法であって、
前記LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方を選択する選択ステップと、
前記選択ステップの処理により選択された前記チェックノードの演算、または前記バリアブルノードの演算を、ノード計算手段に、必要なメッセージを用いて行わせるノード計算ステップと、
前記ノード計算手段による前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、
前記記憶ステップの処理により記憶された前記メッセージを、前記ノード計算手段に供給する供給ステップと
を含むことを特徴とする復号方法。
A decoding method of a decoding device for decoding LDPC (Low Density Parity Check) code,
A selection step of selecting one of a check node operation for decoding the LDPC code or a variable node operation;
A node calculation step for causing the node calculation means to perform an operation of the check node selected by the processing of the selection step or an operation of the variable node using a necessary message;
A storage step of storing in the storage means a message obtained as a result of the calculation of the check node by the node calculation means or the calculation of the variable node;
And a supply step of supplying the message stored by the processing of the storage step to the node calculation means.
LDPC(Low Density Parity Check)符号の復号をコンピュータに行わせるプログラムであって、
前記LDPC符号の復号のためのチェックノードの演算、またはバリアブルノードの演算のうちの一方を選択する選択ステップと、
前記選択ステップの処理により選択された前記チェックノードの演算、または前記バリアブルノードの演算を、ノード計算手段に、必要なメッセージを用いて行わせるノード計算ステップと、
前記ノード計算手段による前記チェックノードの演算、または前記バリアブルノードの演算の結果得られるメッセージを記憶手段に記憶させる記憶ステップと、
前記記憶ステップの処理により記憶された前記メッセージを、前記ノード計算手段に供給する供給ステップと
を備えることを特徴とするプログラム。
A program that causes a computer to decode LDPC (Low Density Parity Check) code,
A selection step of selecting one of a check node operation for decoding the LDPC code or a variable node operation;
A node calculation step for causing the node calculation means to perform an operation of the check node selected by the processing of the selection step or an operation of the variable node using a necessary message;
A storage step of storing in the storage means a message obtained as a result of the calculation of the check node by the node calculation means or the calculation of the variable node;
And a supplying step of supplying the message stored by the processing of the storing step to the node calculating means.
前記LDPC符号の復号のためのチェックノードの演算を、必要なメッセージを用いて行うチェックノード計算手段と、
前記LDPC符号の復号のためのバリアブルノードの演算を、必要なメッセージを用いて行うバリアブルノード計算手段と、
前記チェックノード計算の結果得られるメッセージを記憶する第1の記憶手段と、
前記バリアブルノード計算の結果得られるメッセージを記憶する第2の記憶手段と
を備え、
前記第1の記憶手段と前記第2の記憶手段が、1つの記憶手段に共有化されている
ことを特徴とする復号装置。
Check node calculation means for performing a check node operation for decoding the LDPC code using a necessary message;
Variable node calculation means for performing a variable node operation for decoding the LDPC code using a necessary message;
First storage means for storing a message obtained as a result of the check node calculation;
Second storage means for storing a message obtained as a result of the variable node calculation,
The decoding apparatus, wherein the first storage unit and the second storage unit are shared by one storage unit.
請求項9に記載の復号装置であって、
さらに、前記チェックノード計算手段と前記バリアブルノード計算手段が、1つのノード計算手段に共有化されている
ことを特徴とする復号装置。
The decoding device according to claim 9, wherein
Furthermore, the check node calculation unit and the variable node calculation unit are shared by a single node calculation unit.
JP2003294894A 2003-08-19 2003-08-19 Decoding device Expired - Fee Related JP4284600B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003294894A JP4284600B2 (en) 2003-08-19 2003-08-19 Decoding device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003294894A JP4284600B2 (en) 2003-08-19 2003-08-19 Decoding device

Publications (2)

Publication Number Publication Date
JP2005065065A true JP2005065065A (en) 2005-03-10
JP4284600B2 JP4284600B2 (en) 2009-06-24

Family

ID=34371293

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003294894A Expired - Fee Related JP4284600B2 (en) 2003-08-19 2003-08-19 Decoding device

Country Status (1)

Country Link
JP (1) JP4284600B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006304131A (en) * 2005-04-25 2006-11-02 Sony Corp Decoding apparatus and decoding method
JP2007020068A (en) * 2005-07-11 2007-01-25 Sony Corp Decoding equipment and decoding method
JP2007174027A (en) * 2005-12-20 2007-07-05 Sony Corp Decoding device, control method, and program

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006304131A (en) * 2005-04-25 2006-11-02 Sony Corp Decoding apparatus and decoding method
JP2007020068A (en) * 2005-07-11 2007-01-25 Sony Corp Decoding equipment and decoding method
JP2007174027A (en) * 2005-12-20 2007-07-05 Sony Corp Decoding device, control method, and program
US7937648B2 (en) 2005-12-20 2011-05-03 Sony Corporation Decoding device, control method, and program
KR101283087B1 (en) 2005-12-20 2013-07-05 소니 주식회사 Decoding device, control method, and recording medium

Also Published As

Publication number Publication date
JP4284600B2 (en) 2009-06-24

Similar Documents

Publication Publication Date Title
JP4225163B2 (en) Decoding device, decoding method, and program
JP4487213B2 (en) Decoding apparatus and method, and program
JP4487212B2 (en) Decoding device and method, transmission / reception system, receiving device and method, and program
JP4622654B2 (en) Decoding device and decoding method
JP4807063B2 (en) Decoding device, control method, and program
JP4224777B2 (en) Decoding method, decoding apparatus, and program
JP4595650B2 (en) Decoding device and decoding method
JP4293172B2 (en) Decoding device and decoding method
JP2008259051A (en) Encoding method and encoding apparatus, and program
JP2007036776A (en) Decoding apparatus and decoding method
JP4285148B2 (en) Decoding device, decoding method, and program
JP4284600B2 (en) Decoding device
JP4729964B2 (en) Decoding device and decoding method
JP2008301152A (en) Decoder and decoding method, and program
JP4730592B2 (en) Decoding device and decoding method
JP4288582B2 (en) Decoding device, decoding method, and program
JP4821724B2 (en) Decoding device and decoding method
JP4822071B2 (en) Decoding device and decoding method
JP2007081602A (en) Decoder and decoding method
JP2008278187A (en) Decoding device, control method, and program

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: 20081202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090116

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: 20090226

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: 20090311

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

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees