JP4780027B2 - Decoding device, control method, and program - Google Patents

Decoding device, control method, and program Download PDF

Info

Publication number
JP4780027B2
JP4780027B2 JP2007119093A JP2007119093A JP4780027B2 JP 4780027 B2 JP4780027 B2 JP 4780027B2 JP 2007119093 A JP2007119093 A JP 2007119093A JP 2007119093 A JP2007119093 A JP 2007119093A JP 4780027 B2 JP4780027 B2 JP 4780027B2
Authority
JP
Japan
Prior art keywords
message
calculation
node
supplied
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007119093A
Other languages
Japanese (ja)
Other versions
JP2008278187A (en
Inventor
峰志 横川
修 新谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2007119093A priority Critical patent/JP4780027B2/en
Publication of JP2008278187A publication Critical patent/JP2008278187A/en
Application granted granted Critical
Publication of JP4780027B2 publication Critical patent/JP4780027B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、復号装置、制御方法、及びプログラムに関し、特に、例えば、LDPC(Low Density Parity Check)符号を復号する復号装置の規模を削減することができるようにする復号装置、制御方法、及びプログラムに関する。   The present invention relates to a decoding device, a control method, and a program, and more particularly, for example, a decoding device, a control method, and a program that can reduce the scale of a decoding device that decodes an LDPC (Low Density Parity Check) code. About.

近年、例えば、移動体通信や深宇宙通信といった通信分野、及び地上波又は衛星ディジタル放送といった放送分野の研究が著しく進められているが、それに伴い、誤り訂正符号化及び復号の効率化を目的として符号理論に関する研究も盛んに行われている。   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, encoding methods that exhibit performance close to the Shannon limit include, 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's "RG Gallager," Low Density Parity Check Codes ", Cambridge, Massachusetts: MIT Press, 1963" 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で表すものとすると、そのような検査行列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, such a check matrix H is as follows: 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 of the message that takes consecutive values. This requires analysis with difficulty. Therefore, Gallager has proposed algorithm A or algorithm B as a decoding algorithm for LDPC codes.

LDPC符号の復号は、例えば、図2に示すような手順に従って行われる。なお、ここでは、符号長の長さのLDPC符号の受信データのi番目をU0(u0i)とし、チェックノードから出力されるj番目のメッセージ(チェックノードに接続しているj番目の枝から出力されるメッセージ)をujとし、バリアブルノードから出力されるi番目のメッセージ(バリアブルノードに接続しているi番目の枝から出力されるメッセージ)をviとする。また、ここでは、メッセージとは、値の"0"らしさを表す、いわゆる対数尤度比(log likelihood ratio)等を表現する実数値である。 The decoding of the LDPC code is performed, for example, according to a procedure as shown in FIG. Note that here, the i-th received data of the LDPC code having a code length is U 0 (u 0i ), and the j-th message output from the check node (the j-th branch connected to the check node) U j ) and the i-th message output from the variable node (message output from the i-th branch connected to the variable node) as v i . Further, here, the message is a real value representing a so-called log likelihood ratio or the like representing the value of “0” of the value.

まず、LDPC符号の復号においては、図2に示すように、ステップS11において、受信データU0(u0i)が受信され、メッセージujが"0"に初期化されるとともに、繰り返し処理のカウンタとしての整数をとる変数kが"0"に初期化され、処理は、ステップS12に進む。ステップS12において、受信データU0(u0i)を用いて、式(1)に示すバリアブルノードの演算を行うことによってメッセージviが求められ、さらに、このメッセージviを用いて、式(2)に示すチェックノードの演算を行うことによってメッセージujが求められる。 First, in decoding of an LDPC code, as shown in FIG. 2, in step S11, received data U 0 (u 0i ) is received, a message u j is initialized to “0”, and a counter for repetition processing is performed. The variable k taking an integer is initialized to “0”, and the process proceeds to step S12. In step S12, using the received data U 0 (u 0i ), a message v i is obtained by performing a variable node calculation shown in equation (1), and further using this message v i , equation (2) The message u j is obtained by performing the check node calculation shown in FIG.

Figure 0004780027
・・・(1)
Figure 0004780027
... (1)

Figure 0004780027
・・・(2)
Figure 0004780027
... (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) are the number of “1” s in the vertical direction (column) and horizontal direction (row) of the parity check matrix H, that is, the column weight ( This is a parameter that can be arbitrarily selected indicating the Hamming weight) and the row weight. For example, in the case of the (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 the target of the sum or product operation. The range of operation is 1 to d v -1 or 1 to d c -1. In addition, in the calculation shown in the equation (2), a table of the function R (v 1 , v 2 ) shown in the equation (3) in which 1 is obtained for two inputs v 1 and v 2 is created in advance. This can be done by using it continuously (recursively) as shown in equation (4).

Figure 0004780027
・・・(3)
Figure 0004780027
... (3)

Figure 0004780027
・・・(4)
Figure 0004780027
... (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 thereafter the same process is repeated.

また、ステップ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 a decoding result that is finally output by performing the calculation shown in Expression (5) is obtained. The LDPC code decoding process is completed.

Figure 0004780027
・・・(5)
Figure 0004780027
... (5)

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

このようなLDPC符号の復号では、例えば(3,6)符号の場合には、図3に示すように、各ノード間でメッセージの授受が行われる。なお、図3において"="(イコール)で示すノードは、バリアブルノードを表し、式(1)に示したバリアブルノードの演算が行われる。また、図3において"+"(プラス)で示すノードは、チェックノードを表し、式(2)に示したチェックノードの演算が行われる。特に、アルゴリズムAにおいては、メッセージを2元化し、"+"で示すチェックノードにて、dc-1個の入力メッセージ(チェックノードに入力されるメッセージvi)の排他的論理和演算を行い、"="で示すバリアブルノードにて、受信データRに対して、dv-1個の入力メッセージ(バリアブルノードに入力されるメッセージuj)が全て異なるビット値であった場合には、符号を反転して出力する。 In decoding of such an LDPC code, for example, in the case of (3, 6) code, messages are exchanged between the nodes as shown in FIG. In FIG. 3, a node indicated by “=” (equal) represents a variable node, and the variable node calculation shown in Expression (1) is performed. In FIG. 3, a node indicated by “+” (plus) represents a check node, and the calculation of the check node shown in Expression (2) is performed. In particular, in algorithm A, the message is binarized and an exclusive OR operation is performed on d c −1 input messages (messages v i input to the check node) at the check node indicated by “+”. , “=” In the variable node indicated by “=”, when d v −1 input messages (message u j input to the variable node) are all different bit values for the received data R Is inverted and output.

また、近年、LDPC符号の復号の実装法に関する研究も行われている。実装方法について述べる前に、まず、LDPC符号の復号を摸式化して説明する。   In recent years, research has also been conducted on implementation methods for decoding LDPC codes. 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)Hの例である。LDPC符号の検査行列Hは、図5のように、タナーグラフを用いて書き表すことができる。ここで、図5において、"+"で表されるのが、チェックノードであり、"="で表されるのが、バリアブルノードである。チェックノードとバリアブルノードは、それぞれ、検査行列の行と列に対応する。チェックノードとバリアブルノードとの間の結線は、枝(edge)であり、検査行列Hの"1"に相当する。すなわち、検査行列の第j行第i列のコンポーネントが1である場合には、図5において、上からi番目のバリアブルノード("="のノード)と、上からj番目のチェックノード("+"のノード)とが、枝により接続される。枝は、バリアブルノードに対応するLDPC符号(の受信データ)のビットが、チェックノードに対応する拘束条件を持つことを表す。なお、図5は、図4の検査行列Hのタナーグラフとなっている。   FIG. 4 is an example of a parity check matrix H of an LDPC code (coding rate 1/2, code length 12) of a (3, 6) code. The parity check matrix H of the LDPC code can be written using a Tanner graph as shown in FIG. Here, 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 H. That is, when the component in the j-th row and the 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 bit of the LDPC code (received data) corresponding to the variable node has a constraint condition corresponding to the check node. 5 is a Tanner graph of the parity check matrix H in 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において、バリアブルノードに接続している枝のうちのi番目の枝に対応するメッセージviは、バリアブルノードに接続している残りの枝からのメッセージu1及びu2と、受信データu0iとを用いて計算される。他の枝に対応するメッセージも同様に計算される。 In the variable node, as shown in FIG. 6, the variable node calculation of Expression (1) is performed. That is, in FIG. 6, the message v i corresponding to the i-th branch among the branches connected to the variable node is received with the messages u 1 and u 2 from the remaining branches connected to the variable node. Calculated using data 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(論理0)であり、x<0のとき-1(論理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 (logic 0) when x ≧ 0, and -1 (logic 1) when x <0.

Figure 0004780027
・・・(6)
Figure 0004780027
... (6)

さらに、x≧0において、非線形関数φ(x)=-ln(tanh(x/2))を定義すると、その逆関数φ-1(x)は、式φ-1(x)=2tanh-1(e-x)で表されるから、式(6)は、式(7)のように書くことができる。 Furthermore, when x ≧ 0, the nonlinear function φ (x) = − ln (tanh (x / 2)) is defined, and the inverse function φ −1 (x) is expressed by the equation φ −1 (x) = 2 tanh −1 Since it is expressed by (e −x ), Expression (6) can be written as Expression (7).

Figure 0004780027
・・・(7)
Figure 0004780027
... (7)

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

なお、関数φ(x)は、φ(x)=ln((ex+1)/(ex-1))とも表すことができ、x>0において、φ(x)=φ-1(x)、すなわち、非線形関数φ(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), that is, the calculation result of the nonlinear function φ (x) and the calculation result of the inverse function φ −1 (x) are the same. When the functions φ (x) and φ −1 (x) are implemented in hardware, they may be implemented using a LUT (Look Up Table), but both are the same LUT.

また、式(1)のバリアブルノードの演算は、式(5)と、次の式(8)とに分けることができる。   Further, the variable node calculation of Expression (1) can be divided into Expression (5) and the following Expression (8).

Figure 0004780027
・・・(8)
Figure 0004780027
... (8)

したがって、式(5)及び式(8)と、式(7)の演算を繰り返し行うことにより、式(1)のバリアブルノードの演算と、式(7)のチェックノードの演算を繰り返し行うことができる。この場合、式(5)及び式(8)のバリアブルノードの演算のうちの、式(5)の演算の結果を、そのまま、最終的な復号結果とすることができる。   Therefore, it is possible to repeatedly perform the calculation of the variable node of Expression (1) and the calculation of the check node of Expression (7) by repeatedly performing the calculations of Expression (5), Expression (8), and Expression (7). it can. In this case, the result of the calculation of Expression (5) among the calculations of the variable nodes of Expression (5) and Expression (8) can be used as the final decoding result as it is.

サムプロダクトアルゴリズムをハードウェアに実装して、復号装置とする場合、式(1)(、又は式(5)及び式(8))で表されるバリアブルノード演算(バリアブルノードの演算)及び式(7)で表されるチェックノード演算(チェックノードの演算)を、適度な回路規模と動作周波数で繰り返し行うことが必要である。   When the thumb product algorithm is implemented in hardware and used as a decoding device, the variable node calculation (variable node calculation) and the expression (1) (or (5) and (8)) It is necessary to repeat the check node calculation (check node calculation) represented by 7) with an appropriate circuit scale and operating frequency.

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

図8は、LDPC符号の復号を行う復号装置の構成例を示している。   FIG. 8 illustrates a configuration example of a decoding device that decodes an LDPC code.

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

すなわち、図8の復号装置は、メッセージ計算部101、メッセージメモリ104、受信データメモリ105、制御部106からなる。また、メッセージ計算部101は、バリアブルノード計算器102とチェックノード計算器103とから構成されている。   8 includes a message calculation unit 101, a message memory 104, a reception data memory 105, and a control unit 106. The message calculation unit 101 includes a variable node calculator 102 and a check node calculator 103.

図8の復号装置では、メッセージメモリ104からメッセージ計算部101に、メッセージが1つずつ読み出され、メッセージ計算部101において、そのメッセージを用いて、所望の枝に対応するメッセージが計算される。そして、その計算によって求められたメッセージが、メッセージメモリ104に格納されていく。図8の復号装置では、以上の処理が繰り返し行われ、いわゆる繰り返し復号が行われる。   In the decoding device of FIG. 8, messages are read one by one from the message memory 104 to the message calculation unit 101, and the message calculation unit 101 uses the messages to calculate a message corresponding to a desired branch. Then, the message obtained by the calculation is stored in the message memory 104. In the decoding apparatus of FIG. 8, the above process is repeatedly performed, so-called iterative decoding is performed.

すなわち、受信データメモリ105には、送信されてきたLDPC符号を受信することにより得られる、符号の0(又は1)らしさを表す対数尤度比である受信データ(LDPC符号)D100が供給され、受信データメモリ105は、その受信データD100を格納(記憶)する。   That is, the reception data memory 105 is supplied with reception data (LDPC code) D100, which is a log likelihood ratio representing the likelihood of 0 (or 1) of the code obtained by receiving the transmitted LDPC code, The reception data memory 105 stores (stores) the reception data D100.

バリアブルノード演算時には、受信データメモリ105は、制御部106から供給される制御信号に従って、記憶している受信データを読み出し、受信データD101として、メッセージ計算部101のバリアブルノード計算器102に供給する。   At the time of variable node calculation, the reception data memory 105 reads the stored reception data in accordance with the control signal supplied from the control unit 106, and supplies it to the variable node calculator 102 of the message calculation unit 101 as reception data D101.

また、バリアブルノード演算時には、メッセージメモリ104は、制御部106から供給される制御信号に従って、記憶しているメッセージ(チェックノードメッセージuj)D102を読み出し、バリアブルノード計算器102に供給する。バリアブルノード計算器102は、メッセージメモリ104から供給されるメッセージD102と受信データメモリ105から供給される受信データD101を用い、式(1)のバリアブルノード演算を行い、そのバリアブルノード演算の結果得られたメッセージ(バリアブルノードメッセージ)viを、メッセージD103として、メッセージメモリ104に供給する。 Further, at the time of variable node calculation, the message memory 104 reads the stored message (check node message u j ) D102 according to the control signal supplied from the control unit 106, and supplies it to the variable node calculator 102. The variable node calculator 102 uses the message D102 supplied from the message memory 104 and the reception data D101 supplied from the reception data memory 105 to perform the variable node calculation of Expression (1) and obtains the result of the variable node calculation. The message (variable node message) v i is supplied to the message memory 104 as a message D103.

そして、メッセージメモリ104は、以上のようにしてバリアブルノード計算器102から供給されるメッセージD103を記憶する。   The message memory 104 stores the message D103 supplied from the variable node calculator 102 as described above.

一方、チェックノード演算時には、メッセージメモリ104は、制御部106から供給される制御信号に従って、記憶しているバリアブルノードメッセージviを、メッセージD104として読み出し、チェックノード計算器103に供給する。 On the other hand, at the time of a check node calculation, the message memory 104 in accordance with the control signal supplied from the control unit 106, the variable node message v i that is stored, read as a message D104, and supplies to the check node calculator 103.

チェックノード計算器103は、メッセージメモリ104から供給されるメッセージD104を用いて、式(7)のチェックノード演算を行い、そのチェックノード演算によって求められたメッセージ(チェックノードメッセージ)ujを、メッセージD105として、メッセージメモリ104に供給する。 The check node calculator 103 uses the message D104 supplied from the message memory 104 to perform a check node calculation of Expression (7), and a message (check node message) u j obtained by the check node calculation is displayed as a message. The data is supplied to the message memory 104 as D105.

そして、メッセージメモリ104は、以上のようにしてチェックノード計算器103から供給されるメッセージD105を記憶する。   The message memory 104 stores the message D105 supplied from the check node calculator 103 as described above.

メッセージメモリ104が記憶したチェックノード計算器103からのメッセージD105、すなわち、チェックノードメッセージujは、次のバリアブルノード演算時に、メッセージD102として読み出され、バリアブルノード計算器102に供給される。 The message D105 from the check node calculator 103 stored in the message memory 104, that is, the check node message u j is read as a message D102 and supplied to the variable node calculator 102 at the time of the next variable node calculation.

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

バリアブルノード計算器102は、外部からメッセージ(データ)が供給(入力)される入力ポートとして、2つの入力ポートP101とP102を有し、外部にメッセージを供給(出力)するポートとして、1の出力ポートP103を有している。そして、バリアブルノード計算器102は、入力ポートP101とP102それぞれから入力されるメッセージを用いて、式(1)のバリアブルノード演算を行い、その結果得られるメッセージを、出力ポートP103から出力する。   The variable node calculator 102 has two input ports P101 and P102 as input ports to which messages (data) are supplied (input) from the outside, and one output as a port to supply (output) messages to the outside. It has a port P103. Then, the variable node calculator 102 performs the variable node calculation of Expression (1) using the messages input from the input ports P101 and P102, and outputs the resulting message from the output port P103.

すなわち、入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給される。また、入力ポートP102には、メッセージメモリ104から読み出されたメッセージD102(チェックノードメッセージuj)が供給される。 That is, the reception data D101 read from the reception data memory 105 is supplied to the input port P101. Further, the message D102 (check node message u j ) read from the message memory 104 is supplied to the input port P102.

バリアブルノード計算器102では、検査行列の各行に対応するチェックノードからのメッセージD102(メッセージuj)が入力ポートP102から1つずつ読み込まれ、そのメッセージD102が、演算器151とFIFOメモリ155に供給される。また、バリアブルノード計算器102では、受信データメモリ105から受信データD101が入力ポートP101から1つずつ読み込まれ、演算器157に供給される。 In the variable node calculator 102, the message D102 (message u j ) from the check node corresponding to each row of the check matrix is read one by one from the input port P102, and the message D102 is supplied to the calculator 151 and the FIFO memory 155. Is done. In the variable node calculator 102, the reception data D 101 is read from the reception data memory 105 one by one from the input port P 101 and supplied to the calculator 157.

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

検査行列の1列に亘るメッセージD102が1つずつ読み込まれ、レジスタ152に1列分のメッセージD102が積算された値が格納された場合、すなわち、レジスタ152に、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算された積算値(j=1からdvまでのΣuj)が格納された場合、セレクタ153は、レジスタ152に格納されている値、すなわち、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算された積算値D151(j=1からdvまでのΣuj)を選択し、レジスタ154に出力して格納させる。 When the message D102 over one column of the check matrix is read one by one and the value obtained by accumulating the message D102 for one column is stored in the register 152, that is, all over the one column of the check matrix are stored in the register 152. When the accumulated value (Σu j from j = 1 to d v ) obtained by accumulating the message D102 (message u j ) from the branch is stored, the selector 153 stores the value stored in the register 152, that is, select the message from all of the branches across one row of the parity check matrix D102 (message u j) the accumulated integrated values D151 (? uj j from j = 1 to d v), is stored in output register 154 .

レジスタ154は、格納している値D151を、値D152として、セレクタ153と演算器156に供給する。レジスタ152に1列分のメッセージD102が積算された値が格納される直前までは、セレクタ153は、レジスタ154から供給された値D152を選択し、レジスタ154に出力し再格納させる。すなわち、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算されるまで、レジスタ154は、前回積算された値を、セレクタ153と演算器156に供給する。 The register 154 supplies the stored value D151 as the value D152 to the selector 153 and the calculator 156. The selector 153 selects the value D152 supplied from the register 154, outputs it to the register 154, and stores it again until the value obtained by integrating the message D102 for one column is stored in the register 152. That is, until the message D102 (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 calculator 156.

一方、FIFOメモリ155は、レジスタ154から新たな値D152(j=1からdvまでのΣuj)が出力されるまでの間、チェックノードからのメッセージD102を遅延し、値D153として演算器156に供給する。演算器156は、レジスタ154から供給された値D152から、FIFOメモリ155から供給された値D153を減算する。すなわち、演算器156は、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)の積算値(j=1からdvまでのΣuj)から、求めたい枝からのメッセージujを減算して、その減算値(j=1からdv-1までのΣuj)を求め、演算器157に供給する。 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 D102 from the check node, calculator 156 as a value D153 To supply. The computing unit 156 subtracts the value D153 supplied from the FIFO memory 155 from the value D152 supplied from the register 154. That is, the arithmetic unit 156 determines the message u from the branch to be obtained from the integrated value (Σu j from j = 1 to d v ) of the message D102 (message u j ) from all the branches over one column of the check matrix. j is subtracted and the subtraction value (Σu j from j = 1 to d v −1) is obtained and supplied to the calculator 157.

演算器157は、入力ポートP101からの受信データD101と、演算器156からの減算値(j=1からdv-1までのΣuj)とを加算し、その結果得られる加算値をメッセージD103(メッセージvi)として、出力ポートP103から出力する。 The computing unit 157 adds the reception data D101 from the input port P101 and the subtraction value (Σu j from j = 1 to d v −1) from the computing unit 156, and sends the resulting addition value to the message D103. (Message v i ) is output from the output port P103.

以上のように、バリアブルノード計算器102では、式(1)のバリアブルノード演算(vi=uoi+Σuj)が行われ、その結果得られるメッセージ(バリアブルノードメッセージ)viが、出力ポートP103から出力される。 As described above, the variable node calculator 102 performs the variable node calculation (v i = u oi + Σu j ) of Expression (1), and the message (variable node message) v i obtained as a result is output port P103. Is output from.

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

チェックノード計算器103は、外部からメッセージ(データ)が供給(入力)される入力ポートとして、1つの入力ポートP111を有し、外部にメッセージを供給(出力)するポートとして、1の出力ポートP112を有している。そして、チェックノード計算器103は、入力ポートP111から入力されるメッセージを用いて、式(7)のチェックノード演算を行い、その結果得られるメッセージを、出力ポートP112から出力する。   The check node calculator 103 has one input port P111 as an input port to which a message (data) is supplied (input) from the outside, and one output port P112 as a port to supply (output) a message to the outside. have. Then, the check node calculator 103 performs the check node calculation of Expression (7) using the message input from the input port P111, and outputs the resulting message from the output port P112.

すなわち、入力ポートP111には、メッセージメモリ104から読み出されたメッセージD104(バリアブルノードメッセージvi)が供給される。 That is, the message D104 (variable node message v i ) read from the message memory 104 is supplied to the input port P111.

チェックノード計算器103では、検査行列の各列に対応するバリアブルノードからのメッセージD104(メッセージvi)が入力ポートP111から1つずつ読み込まれ、その最上位ビットを除く下位ビット、つまり、メッセージD104の絶対値D122(|vi|)が、LUT121に供給されるとともに、最上位ビット、つまりメッセージD104の符号ビット(正負を表すビット)D121が、EXOR回路129とFIFO(First In First Out)メモリ133にそれぞれ供給される。 In the check node calculator 103, the message D104 (message v i ) from the variable node corresponding to each column of the check matrix is read one by one from the input port P111, and the lower bits excluding the most significant bit, that is, the message D104. the absolute value of D122 (| v i |) is supplied to a LUT 121, the most significant bit, i.e., the sign bit D121 (bit representing the sign) messages D104, EXOR circuit 129 and FIFO (First in First Out) memory 133 respectively.

LUT121は、そこに入力される値を引数xとして、式(7)のチェックノード演算における非線形関数φ(x)の演算結果を出力するLUTであり、絶対値D122(|vi|)の供給に対して、非線形関数φ(|vi|)の演算を行った演算結果D123(φ(|vi|))を読み出し、演算器122とFIFOメモリ127に供給する。 The LUT 121 is an LUT that outputs the calculation result of the nonlinear function φ (x) in the check node calculation of Expression (7) using the value input thereto as an argument x, and supplies the absolute value D122 (| v i |) On the other hand, the calculation result D123 (φ (| v i |)) obtained by calculating the nonlinear function φ (| v i |) is read and supplied to the calculator 122 and the FIFO memory 127.

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

検査行列の1行に亘るメッセージD104が1つずつ読み込まれ、レジスタ123に1行分の演算結果D123が積算された積算値が格納された場合、セレクタ124は、レジスタ123に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)が積算された積算値D124(i=1からi=dcまでのΣφ(|vi|))を選択し、値D125として、レジスタ125に出力して格納させる。レジスタ125は、格納している値D125を、値D126として、セレクタ124と演算器126に供給する。 When the message D104 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 selector 124 stores the value stored in the register 123. , i.e., phi obtained from the messages D104 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) from the integrated value D124 (i = 1, which is accumulated up to i = d c Σφ (| v i |)) is selected and output to the register 125 as the value D125 for storage. The register 125 supplies the stored value D125 to the selector 124 and the calculator 126 as the value D126.

レジスタ123に1行分の演算結果D123が積算された積算値が格納される直前までは、セレクタ124は、レジスタ125から供給された値D126を選択し、レジスタ125に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ125は、前回積算されたφ(|vi|)の積算値を、セレクタ124と演算器126に供給する。 The selector 124 selects the value D126 supplied from the register 125, outputs it to the register 125, and stores it again until the integrated value obtained by integrating the operation results D123 for one row is stored in the register 123. That is, until φ (| v i |) obtained from the message D104 (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 calculator 126.

一方、FIFOメモリ127は、レジスタ125から新たな値D126(i=1からi=dcまでのΣφ(|vi|))が出力されるまでの間、LUT121が出力した演算結果D123(φ(|vi|))を遅延し、値D127として演算器126に供給する。演算器126は、レジスタ125から供給された値D126から、FIFOメモリ127から供給された値D127を減算し、その減算結果を、減算値D128としてLUT128に供給する。すなわち、演算器126は、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)の積算値(i=1からi=dcまでのΣφ(|vi|))から、求めたい枝からのメッセージ(i=dcのメッセージ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 computing unit 126 as a value D127. The arithmetic unit 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 subtraction value D128. That is, the arithmetic unit 126, phi obtained from the messages D104 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) integrated value from (i = 1 to i = d c of Σφ (| v i |)) from, obtained from the message (message v i of i = d c) from a desired branch phi (| v i |) is subtracted, the subtraction value (i = 1 Σφ (| v i |) from i to d c −1) is supplied to the LUT 128 as a subtraction value D128.

LUT128は、そこに入力される値を引数xとして、式(7)のチェックノード演算における非線形関数φ(x)の逆関数φ-1(x)の演算結果を出力するLUTであり、演算器126からの減算値D128(i=1からi=dc-1までのΣφ(|vi|))の供給に対して、逆関数φ-1(Σφ(|vi|))の演算を行った演算結果D129(φ-1(Σφ(|vi|)))を出力する。 The LUT 128 is an LUT that outputs a calculation result of the inverse function φ −1 (x) of the nonlinear function φ (x) in the check node calculation of Expression (7) using the value input thereto as an argument x. For the supply of the subtracted value D128 from 126 (Σφ (| v i |) from i = 1 to i = d c −1), the inverse function φ −1 (Σφ (| v i |)) is calculated. The operation result D129 (φ −1 (Σφ (| v i |))) is output.

なお、上述したように、同一の引数xに対する非線形関数φ(x)の演算結果と逆関数φ-1(x)の演算結果とは等しいので、LUT121と128とは、同一構成のLUTとなっている。 As described above, since the calculation result of the nonlinear function φ (x) and the calculation result of the inverse function φ −1 (x) for the same argument x are equal, the LUTs 121 and 128 are LUTs having the same configuration. ing.

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

検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納された場合、セレクタ131は、レジスタ130に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された値D131(i=1からi=dcまでのΠsign(vi))を選択し、値D132としてレジスタ132に出力して格納させる。レジスタ132は、格納している値D132を、値D133としてセレクタ131とEXOR回路134に供給する。 If (Paisign from i = 1 to d c (v i)) multiplication result D130 to the sign bit D121 is multiplied by the message D104 from all of the branches across one line of the parity check matrix stored in the register 130, the selector 131, Paisign the value stored in the register 130, i.e., the value D131 (i = 1 the sign bit D121 of the message D104 is multiplied from all of the branches across one line of the parity check matrix until i = d c (v i )) is selected and output to the register 132 as the value D132 for storage. The register 132 supplies the stored value D132 to the selector 131 and the EXOR circuit 134 as the value D133.

検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納される直前までは、セレクタ131は、レジスタ132から供給された値D133を選択し、レジスタ132に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)の符号ビットD121が乗算されるまで、レジスタ132は、前回格納した値を、セレクタ131とEXOR回路134に供給する。 It is (from i = 1 Πsign to d c (v i)) multiplication result D130 to the sign bit D121 is multiplied by the message D104 from all of the branches across one line of the parity check matrix until just before is stored in the register 130 The selector 131 selects the value D133 supplied from the register 132, outputs it to the register 132, and stores it again. That is, 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 D104 (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で除算し、除算結果を除算値D135として出力する。すなわち、EXOR回路134は、検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121(sign(vi))の乗算値を、求めたい枝からのメッセージD104の符号ビット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 the division result. Output as value D135. That is, the EXOR circuit 134 calculates the multiplication value of the sign bit D121 (sign (v i )) of the message D104 from all the branches over one row of the check matrix, and the sign bit D121 (sign of the message D104 from the branch to be obtained. (v i )), and the division value (Πsign (v i ) from i = 1 to i = d c −1) is output as the division value D135.

そして、チェックノード計算器103では、LUT128から出力された演算結果D129を下位ビットとするとともに、EXOR回路134から出力された除算値D135を最上位ビット(符号ビット)とするビット列がメッセージD105(メッセージuj)として、出力ポートP112から出力される。 Then, in the check node calculator 103, a bit string having the operation result D129 output from the LUT 128 as the lower bits and the division value D135 output from the EXOR circuit 134 as the most significant bit (sign bit) is a message D105 (message u j ) is output from the output port P112.

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

なお、図示しないが、図8の復号装置では、復号の最終段(例えば、あらかじめ定められた繰り返し復号の回数Nだけ行われるバリアブルノード演算及びチェックノード演算のうちの最後に行われるバリアブルノード演算)において、式(1)のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が、最終的な復号結果として出力される。   Although not shown, in the decoding apparatus of FIG. 8, the final stage of decoding (for example, variable node calculation performed at the last of variable node calculation and check node calculation performed for a predetermined number N of repeated decoding) In, instead of the variable node calculation of Expression (1), the calculation of Expression (5) is performed, and the calculation result is output as the final decoding result.

図8の復号装置によれば、メッセージメモリ104(図8)、バリアブルノード計算器102(図9)のFIFOメモリ155、チェックノード計算器103(図10)のFIFOメモリ127及び133の容量さえ足りれば、様々な検査行列のLDPC符号を復号することができる。   8, the message memory 104 (FIG. 8), the FIFO memory 155 of the variable node calculator 102 (FIG. 9), and the FIFO memories 127 and 133 of the check node calculator 103 (FIG. 10) are sufficient. If so, LDPC codes of various parity check matrices can be decoded.

次に、図11は、図8の復号装置のメッセージメモリ104に対するメッセージの読み書きのタイミングを示すタイミングチャートである。   Next, FIG. 11 is a timing chart showing message read / write timing with respect to the message memory 104 of the decoding apparatus of FIG.

図8の復号装置において、バリアブルノード演算時には、メッセージメモリ104から、チェックノードからのメッセージ(チェックノードメッセージ)ujが読み出され、メッセージ計算部101のバリアブルノード計算器102が、メッセージメモリ104から読み出されたメッセージujを用いてバリアブルノード演算を行う一方で、そのバリアブルノード演算の結果得られるメッセージ(バリアブルノードメッセージ)viが、メッセージメモリ104に書き込まれる。 In the decoding apparatus of FIG. 8, at the time of variable node calculation, a message (check node message) u j from the check node is read from the message memory 104, and the variable node calculator 102 of the message calculation unit 101 is read from the message memory 104. A variable node operation is performed using the read message u j , while a message (variable node message) v i obtained as a result of the variable node operation is written in the message memory 104.

また、チェックノード演算時には、メッセージメモリ104から、バリアブルノードからのメッセージ(バリアブルノードメッセージ)viが読み出され、メッセージ計算部101のチェックノード計算器103が、メッセージメモリ104から読み出されたメッセージviを用いてチェックノード演算を行う一方で、そのチェックノード演算の結果得られるメッセージ(チェックノードメッセージ)ujが、メッセージメモリ104に書き込まれる。 Further, during the check node calculation, a message (variable node message) v i is read from the message memory 104, and the check node calculator 103 of the message calculation unit 101 reads the message read from the message memory 104. While performing a check node operation using v i , a message (check node message) u j obtained as a result of the check node operation is written to the message memory 104.

したがって、図8の復号装置では、バリアブルノード演算時であっても、チェックノード演算時であっても、メッセージメモリ104からのメッセージの読み出しと、そのメッセージを用いたバリアブルノード演算又はチェックノード演算(以下、適宜、両方まとめて、単に、ノード演算ともいう)の結果得られるメッセージの書き込みとを同時に行う必要がある。   Therefore, in the decoding apparatus of FIG. 8, the message is read from the message memory 104 and the variable node calculation or the check node calculation using the message (either the variable node calculation or the check node calculation). Hereinafter, it is necessary to simultaneously write a message obtained as a result of the above (simply referred to as a node operation).

このため、メッセージメモリ104は、例えば、1つのバンク(メモリバンク)としての1つのRAM(Random Access Memory)#Aと、他の1つのバンクとしての他の1つのRAM#Bとから構成され、RAM#AとRAM#Bのそれぞれにアクセスすることにより、メッセージメモリ104に対しては、見かけ上、同時に、2つのアクセスを行うことが可能になっている。   For this reason, the message memory 104 includes, for example, one RAM (Random Access Memory) #A as one bank (memory bank) and one other RAM #B as another bank, By accessing each of RAM # A and RAM # B, the message memory 104 can be apparently accessed at the same time.

図11のタイミングチャートは、メッセージメモリ104を構成するRAM#AとRAM#Bのそれぞれに対する読み書きのタイミングを表している。   The timing chart of FIG. 11 represents the read / write timing for each of RAM # A and RAM # B constituting the message memory 104.

図11においては、まず最初に、RAM#Aから、あるチェックノード又はバリアブルノード(以下、適宜、両方まとめて、単に、ノードともいう)node#1の枝に対応するメッセージを求めるのに必要なメッセージが読み出され(R(node#1))、そのメッセージを用いてノード演算が行われる。そして、そのノード演算の結果得られる、ノードnode#1の枝(ノードnode#1に接続している枝)に対応するメッセージがRAM#Aに書き込まれる(W(node#1))のと同時に、RAM#Bから、次のノードnode#2の枝に対応するメッセージを求めるのに必要なメッセージが読み出され(R(node#2))、ノード演算が行われる。   In FIG. 11, first, it is necessary to obtain a message corresponding to a branch of a certain check node or variable node (hereinafter, collectively referred to as “node”) node # 1 from RAM #A. A message is read (R (node # 1)), and a node operation is performed using the message. Then, the message corresponding to the branch of the node node # 1 (the branch connected to the node node # 1) obtained as a result of the node calculation is written to the RAM # A at the same time as (W (node # 1)) From RAM # B, a message required to obtain a message corresponding to the branch of the next node node # 2 is read (R (node # 2)), and node calculation is performed.

さらに、そのノード演算の結果得られる、ノードnode#2の枝に対応するメッセージがRAM#Bに書き込まれる(W(node#2))のと同時に、RAM#Aから、次のノードnode#3の枝に対応するメッセージを求めるのに必要なメッセージが読み出され(R(node#3))、ノード演算が行われる。以下、同様にして、メッセージメモリ104を構成するRAM#AとRAM#Bのそれぞれに対するメッセージの読み書きが行われていく。   Further, a message corresponding to the branch of the node node # 2 obtained as a result of the node operation is written to the RAM # B (W (node # 2)), and at the same time, the next node node # 3 is read from the RAM # A. A message necessary to obtain a message corresponding to the branch of the node is read (R (node # 3)), and a node operation is performed. Thereafter, in the same way, reading and writing of messages to and from RAM #A and RAM #B constituting the message memory 104 are performed.

なお、図8の復号装置において、チェックノード演算とバリアブルノード演算とを交互に行う繰り返し復号によって、LDPC符号を復号する場合には、1回の復号(1セットのチェックノード演算とバリアブルノード演算)に、メッセージの数の2倍のクロック数が必要となり、高速な動作が要求されることになる。   In the decoding apparatus of FIG. 8, when decoding an LDPC code by iterative decoding in which check node calculation and variable node calculation are alternately performed, one decoding (one set of check node calculation and variable node calculation) is performed. In addition, the number of clocks is twice as many as the number of messages, and a high-speed operation is required.

そこで、特定の検査行列のLDPC符号については、メッセージ計算部101を複数であるp個設けることによって、p個のノードについてメッセージを同時に求め、1回の復号を、図8の復号装置の場合の1/pのクロック数で行うことができる復号装置、すなわち、それほど高くない動作周波数での動作が可能な復号装置が提案されている(例えば、特許文献1参照)。   Thus, for the LDPC code of a specific parity check matrix, by providing a plurality of p message calculators 101, messages are simultaneously obtained for p nodes, and one decoding is performed in the case of the decoding apparatus of FIG. There has been proposed a decoding device that can be operated at a clock number of 1 / p, that is, a decoding device that can operate at an operation frequency that is not so high (for example, see Patent Document 1).

特開2004-364233号公報JP 2004-364233 A

ところで、上述したように、メッセージ計算部101を構成するバリアブルノード計算器102(図9)には、演算器151及びレジスタ152でのメッセージの積算が終了するまで、メッセージを遅延するFIFOメモリ155が設けられている。同様に、チェックノード計算器103(図10)にも、演算器122及びレジスタ123での積算が終了するまで、メッセージ(から求められた値)φ(|vi|)を遅延するFIFOメモリ127と、EXOR回路129及びレジスタ130での符号ビットの相乗積の算出が終了するまで、メッセージ(の符号ビット)を遅延するFIFOメモリ133が設けられている。このように、LDPC符号を復号する復号装置においては、バリアブルノード演算や、チェックノード演算に用いるメッセージを一時記憶することにより、メッセージ(データ)を遅延するためのメモリが必要となる。 By the way, as described above, the variable node calculator 102 (FIG. 9) constituting the message calculation unit 101 has the FIFO memory 155 that delays messages until the integration of the messages in the arithmetic unit 151 and the register 152 is completed. Is provided. Similarly, the check node calculator 103 (FIG. 10) also has a FIFO memory 127 that delays the message (value obtained from) φ (| v i |) until the integration in the arithmetic unit 122 and the register 123 is completed. And a FIFO memory 133 that delays the message (its sign bit) until the calculation of the synergistic product of the sign bits in the EXOR circuit 129 and the register 130 is completed. As described above, a decoding device that decodes an LDPC code requires a memory for delaying a message (data) by temporarily storing a message used for variable node calculation or check node calculation.

ここで、バリアブルノード計算器102(図9)では、演算器151及びレジスタ152でのメッセージの積算として、バリアブルノードに接続している枝の数だけのメッセージの積算が行われるので、その積算が終了するまでメッセージを遅延するFIFOメモリ155は、少なくとも、その枝の数だけのメッセージ、つまり、検査行列の列の重みdvの最大値に等しい数のメッセージを記憶することができる容量を有する必要がある。 Here, in the variable node calculator 102 (FIG. 9), as the message accumulation in the arithmetic unit 151 and the register 152, the message accumulation is performed for the number of branches connected to the variable node. FIFO memory 155 for delaying a message until the end of at least a message by the number of branches, i.e., required to have a capacity capable of storing a message number equal to the maximum value of the weight d v column of the check matrix There is.

また、チェックノード計算器103(図10)では、演算器122及びレジスタ123での積算として、チェックノードに接続している枝の数だけのメッセージ(から求められた値)φ(|vi|)の積算が行われるので、その積算が終了するまでメッセージ(から求められた値)φ(|vi|)を遅延するFIFOメモリ127は、少なくとも、その枝の数だけのメッセージ、つまり、検査行列の行の重みdcの最大値に等しい数のメッセージ(から求められた値)φ(|vi|)を記憶することができる容量を有する必要がある。 Further, in the check node calculator 103 (FIG. 10), as the integration in the arithmetic unit 122 and the register 123, the message (the value obtained from the number of branches) connected to the check node (value obtained from the number) φ (| v i | ) Is performed, the FIFO memory 127 that delays the message (value obtained from it) φ (| v i |) until the integration is completed is at least the number of messages corresponding to the number of branches, that is, the inspection. It is necessary to have a capacity capable of storing a number of messages (value obtained from) φ (| v i |) equal to the maximum value of the matrix row weights d c .

さらに、チェックノード計算器103(図10)では、EXOR回路129及びレジスタ130での乗算として、チェックノードに接続している枝の数だけのメッセージ(の符号ビット)の乗算が行われるので、その乗算が終了するまでメッセージ(の符号ビット)を遅延するFIFOメモリ133は、少なくとも、その枝の数だけのメッセージ、つまり、検査行列の行の重みdcの最大値に等しい数のメッセージ(の符号ビット)を記憶することができる容量を有する必要がある。 Further, in the check node calculator 103 (FIG. 10), as the multiplication in the EXOR circuit 129 and the register 130, the message (the sign bit) is multiplied by the number of branches connected to the check node. FIFO memory 133 for delaying the message (sign bit) to the multiplication is completed, at least, the message of the number of its branches, that is, equal to the number of messages to the maximum value of the weight d c line of the check matrix (the code Bit)).

以上のように、LDPC符号を復号する復号装置には、メッセージを遅延するためのメモリが必要である。さらに、特に、ノードの数(degree)が多いLDPC符号を復号する復号装置を、それほど高くない動作周波数で動作させるためには、復号装置を、複数のノードのメッセージを並列で求めるのに複数のメッセージ計算部101を設けて構成する必要があり、この場合、メッセージを遅延するためのメモリがさらに必要となって、復号装置が大規模化することになる。   As described above, a decoding device that decodes an LDPC code requires a memory for delaying a message. Furthermore, in particular, in order to operate a decoding device that decodes an LDPC code having a large number of nodes at an operation frequency that is not so high, the decoding device is required to obtain a plurality of messages for a plurality of nodes in parallel. It is necessary to provide and configure the message calculation unit 101. In this case, a memory for delaying the message is further required, and the decoding apparatus becomes large-scale.

本発明は、このような状況に鑑みてなされたものであり、LDPC符号を復号する復号装置の規模を削減することができるようにするものである。   The present invention has been made in view of such a situation, and makes it possible to reduce the scale of a decoding apparatus that decodes an LDPC code.

本発明の一側面の復号装置は、LDPC(Low Density Parity Check)符号を復号する復号装置であり、前記LDPC符号の復号のためのバリアブルノードの演算、又はチェックノードの演算に用いるメッセージを記憶する記憶手段と、前記記憶手段に記憶されたメッセージを用いて、前記LDPC符号を定義する検査行列に基づき、前記バリアブルノードの演算、又は前記チェックノードの演算を行い、演算の結果得られるメッセージを出力するメッセージ計算手段とを備え、前記メッセージ計算手段が、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージを一時記憶することにより遅延する遅延メモリを有し、前記遅延メモリが、前記検査行列の重みの最大値よりも少ない数のメッセージを記憶し、前記メッセージ計算手段が出力するメッセージを前記記憶手段に書き込む書き込み制御と、前記メッセージ計算手段での演算に用いられる同一のメッセージを、前記記憶手段から2回読み出し、前記メッセージ計算手段に供給する読み出し制御とを行う制御手段と、前記遅延メモリで遅延されたメッセージと、前記記憶手段から2回目に読み出されたメッセージとのうちの一方を、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージとして選択する選択手段とをさらに備え、前記選択手段は、前記バリアブルノードの演算において、前記バリアブルノードに対応する前記検査行列の列の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記列の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択し、前記チェックノードの演算において、前記チェックノードに対応する前記検査行列の行の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記行の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択する復号装置である。 A decoding device according to one aspect of the present invention is a decoding device that decodes an LDPC (Low Density Parity Check) code, and stores a variable node calculation for decoding the LDPC code or a message used for a check node calculation. Using the storage means and the message stored in the storage means, based on the parity check matrix defining the LDPC code, performs the variable node calculation or the check node calculation, and outputs a message obtained as a result of the calculation Message calculation means, and the message calculation means includes a delay memory that is delayed by temporarily storing a message used for the variable node calculation or the check node calculation, and the delay memory includes the check storing fewer messages than the maximum value of the weight of the matrix, the message calculation means output Control means for performing write control for writing a message to the storage means, and read control for reading the same message used in the calculation in the message calculation means twice from the storage means and supplying the message to the message calculation means; Selecting means for selecting one of the message delayed in the delay memory and the message read out for the second time from the storage means as a message used in the variable node calculation or the check node calculation; The selection means further includes the delay memory when the column weight of the parity check matrix corresponding to the variable node is equal to or less than the number of messages that can be stored in the delay memory in the operation of the variable node. The delayed message is selected and the weight of the column is recorded in the delay memory. When it is not less than the number of memorable messages, the second message read from the storage means is selected, and in the check node calculation, the row weight of the check matrix corresponding to the check node is Select a message delayed in the delay memory when the delay memory is less than or equal to the number of messages that can be stored, and store when the weight of the row is not less than or equal to the number of messages that the delay memory can store This is a decryption device that selects a message read from the means for the second time.

かかる一側面の復号装置においては、メッセージを記憶する記憶手段に記憶されたメッセージを用いて、前記LDPC符号を定義する検査行列に基づき、前記バリアブルノードの演算、又は前記チェックノードの演算を行い、演算の結果得られるメッセージを出力するメッセージ計算手段が有する、メッセージを一時記憶することにより遅延する遅延メモリにおいて、前記検査行列の重みの最大値よりも少ない数のメッセージが記憶される。また、前記メッセージ計算手段が出力するメッセージを前記記憶手段に書き込む書き込み制御と、前記メッセージ計算手段での演算に用いられる同一のメッセージを、前記記憶手段から2回読み出し、前記メッセージ計算手段に供給する読み出し制御とが行われる。そして、前記遅延メモリで遅延されたメッセージと、前記記憶手段から2回目に読み出されたメッセージとのうちの一方を、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージとして選択するメッセージの選択では、前記バリアブルノードの演算において、前記バリアブルノードに対応する前記検査行列の列の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージが選択され、前記列の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージが選択される。また、前記チェックノードの演算において、前記チェックノードに対応する前記検査行列の行の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージが選択され、前記行の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージが選択される。 In the decoding device according to one aspect, using the message stored in the storage unit that stores the message, based on the parity check matrix that defines the LDPC code, the variable node or the check node is calculated, In a delay memory that is delayed by temporarily storing a message, which is included in the message calculation means for outputting a message obtained as a result of the operation, a number of messages smaller than the maximum value of the weight of the check matrix are stored. Further, the same message used for the write control for writing the message output from the message calculation means to the storage means and the calculation in the message calculation means is read twice from the storage means and supplied to the message calculation means. Read control is performed. A message that selects one of the message delayed in the delay memory and the message read out from the storage means for the second time as a message used for the variable node calculation or the check node calculation. In the calculation of the variable node, when the weight of the column of the check matrix corresponding to the variable node is equal to or less than the number of messages that can be stored in the delay memory in the calculation of the variable node, the message delayed in the delay memory Is selected and the message read out the second time from the storage means is selected when the weight of the column is not less than or equal to the number of messages that can be stored in the delay memory. In the check node calculation, when the weight of the row of the check matrix corresponding to the check node is equal to or less than the number of messages that can be stored in the delay memory, the message delayed in the delay memory is selected. When the weight of the row is not less than or equal to the number of messages that can be stored in the delay memory, the second message read from the storage means is selected.

本発明の一側面の制御方法、又は、プログラムは、LDPC(Low Density Parity Check)符号を復号する復号装置を制御する制御方法、又は、復号装置を制御するコンピュータに実行させるプログラムであり、前記復号装置が、前記LDPC符号の復号のためのバリアブルノードの演算、又はチェックノードの演算に用いるメッセージを記憶する記憶手段と、前記記憶手段に記憶されたメッセージを用いて、前記LDPC符号を定義する検査行列に基づき、前記バリアブルノードの演算、又は前記チェックノードの演算を行い、演算の結果得られるメッセージを出力するメッセージ計算手段とを備え、前記メッセージ計算手段が、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージを一時記憶することにより遅延する遅延メモリを有し、前記遅延メモリが、前記検査行列の重みの最大値よりも少ない数のメッセージを記憶する場合において、前記メッセージ計算手段が出力するメッセージを前記記憶手段に書き込む書き込み制御と、前記メッセージ計算手段での演算に用いられる同一のメッセージを、前記記憶手段から2回読み出し、前記メッセージ計算手段に供給する読み出し制御とを行い、前記バリアブルノードの演算において、前記バリアブルノードに対応する前記検査行列の列の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記列の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択し、前記チェックノードの演算において、前記チェックノードに対応する前記検査行列の行の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記行の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択するように、前記遅延メモリで遅延されたメッセージと、前記記憶手段から2回目に読み出されたメッセージとのうちの一方を、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージとして選択する選択手段を制御するステップを含む制御方法、又は、制御処理をコンピュータに実行させるプログラムである。   The control method or program according to one aspect of the present invention is a control method for controlling a decoding device that decodes an LDPC (Low Density Parity Check) code, or a program that is executed by a computer that controls the decoding device. A storage means for storing a message used for variable node computation or check node computation for decoding the LDPC code, and a test for defining the LDPC code using the message stored in the storage means A message calculation means for performing an operation of the variable node or an operation of the check node based on a matrix and outputting a message obtained as a result of the operation, wherein the message calculation means is the operation of the variable node or the check It has a delay memory that delays by temporarily storing messages used for node operations, When the delay memory stores a number of messages smaller than the maximum value of the weight of the parity check matrix, write control for writing the message output by the message calculation means to the storage means, and calculation by the message calculation means The same message used in the above is read from the storage means twice and supplied to the message calculation means, and in the variable node calculation, the column weight of the check matrix corresponding to the variable node is Selecting a message delayed in the delay memory when the delay memory is less than or equal to the number of messages that can be stored, and when the weight of the column is not less than or equal to the number of messages that the delay memory can store; Select the message read from the storage means the second time, and check the check node In the operation, when the row weight of the check matrix corresponding to the check node is equal to or less than the number of messages that can be stored in the delay memory, the message delayed in the delay memory is selected, and the row weight is selected. When the delay memory is not less than or equal to the number of messages that can be stored, the message delayed by the delay memory and 2 from the storage means so as to select the message read from the storage means for the second time. A control method including a step of controlling selection means for selecting one of the messages read out for the second time as a message used for the calculation of the variable node or the calculation of the check node, or the control process to the computer It is a program to be executed.

かかる一側面の制御方法、又は、プログラムにおいては、前記メッセージ計算手段が出力するメッセージを前記記憶手段に書き込む書き込み制御と、前記メッセージ計算手段での演算に用いられる同一のメッセージを、前記記憶手段から2回読み出し、前記メッセージ計算手段に供給する読み出し制御とが行われる。また、前記バリアブルノードの演算において、前記バリアブルノードに対応する前記検査行列の列の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記列の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択し、前記チェックノードの演算において、前記チェックノードに対応する前記検査行列の行の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記行の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択するように、選択手段が制御される。   In the control method or program according to one aspect, the write control for writing the message output from the message calculation unit to the storage unit and the same message used for the calculation in the message calculation unit are stored in the storage unit. Reading is performed twice, and reading control to be supplied to the message calculation means is performed. In the variable node calculation, when the weight of the column of the check matrix corresponding to the variable node is equal to or less than the number of messages that can be stored in the delay memory, the message delayed in the delay memory is selected. When the weight of the column is not less than or equal to the number of messages that can be stored in the delay memory, a message read out from the storage means for the second time is selected, and in the check node calculation, When the corresponding row weight of the check matrix is less than or equal to the number of messages that can be stored in the delay memory, a message delayed in the delay memory is selected, and the row weight is stored in the delay memory. Select to select the second message read from the storage means when not less than the number of possible messages Stage is controlled.

本発明の一側面によれば、LDPC符号を復号する復号装置の規模を削減することができる。   According to one aspect of the present invention, the scale of a decoding device that decodes an LDPC code can be reduced.

以下、本発明の実施の形態について、図面を参照しながら説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

前述したように、LDPC符号を復号する復号装置においては、バリアブルノードの演算や、チェックノード演算に用いるメッセージを一時記憶することにより、メッセージを遅延するためのメモリ(例えば、図9のFIFOメモリ155(図9)や、図10のFIFOメモリ127及び133)が必要となるが、まず最初に、そのようなメモリが不要な復号装置について説明する。   As described above, in a decoding device that decodes an LDPC code, a message for delaying a message (for example, the FIFO memory 155 of FIG. 9) is temporarily stored by storing a message used for variable node calculation or check node calculation. (FIG. 9) and the FIFO memories 127 and 133 in FIG. 10 are required. First, a decoding apparatus that does not require such a memory will be described.

図12は、メッセージを遅延するためのメモリが不要な復号装置の構成例を示すブロック図である。   FIG. 12 is a block diagram illustrating a configuration example of a decoding device that does not require a memory for delaying a message.

なお、図中、図8の復号装置と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。すなわち、図12の復号装置は、メッセージ計算部101に代えてメッセージ計算部171が設けられているとともに、制御部106に代えて制御部174が設けられている他は、図8の復号装置と同様に構成されている。   In the figure, portions corresponding to those of the decoding device of FIG. 8 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate. That is, the decoding device of FIG. 12 is different from the decoding device of FIG. 8 except that a message calculation unit 171 is provided instead of the message calculation unit 101 and a control unit 174 is provided instead of the control unit 106. It is constituted similarly.

図12の復号装置は、図8の復号装置と同様に、フルシリアルの復号を繰り返し行う。   The decoding apparatus in FIG. 12 repeatedly performs full serial decoding in the same manner as the decoding apparatus in FIG.

すなわち、図12の復号装置は、メッセージメモリ104、受信データメモリ105、メッセージ計算部171、制御部174からなる。また、メッセージ計算部171は、バリアブルノード計算器172とチェックノード計算器173とから構成されている。   12 includes a message memory 104, a reception data memory 105, a message calculation unit 171, and a control unit 174. The message calculation unit 171 includes a variable node calculator 172 and a check node calculator 173.

図12の復号装置では、メッセージメモリ104から、メッセージが1つずつ読み出され、メッセージ計算部171において、そのメッセージを用いて、所望の枝に対応するメッセージが計算される。そして、その計算によって求められたメッセージが、メッセージメモリ104に格納されていく。図12の復号装置では、以上の処理が繰り返し行われることで、繰り返し復号が行われる。   In the decoding device of FIG. 12, messages are read one by one from the message memory 104, and a message corresponding to a desired branch is calculated by the message calculation unit 171 using the messages. Then, the message obtained by the calculation is stored in the message memory 104. In the decoding device of FIG. 12, iterative decoding is performed by repeatedly performing the above processing.

すなわち、受信データメモリ105には、送信されてきたLDPC符号を受信することにより得られる、符号の0(又は1)らしさを表す対数尤度比である受信データ(LDPC符号)D100が供給され、受信データメモリ105は、その受信データD100を格納(記憶)する。   That is, the reception data memory 105 is supplied with reception data (LDPC code) D100, which is a log likelihood ratio representing the likelihood of 0 (or 1) of the code obtained by receiving the transmitted LDPC code, The reception data memory 105 stores (stores) the reception data D100.

バリアブルノード演算時には、受信データメモリ105は、制御部174から供給される制御信号に従って、記憶している受信データを読み出し、受信データD101として、メッセージ計算部171のバリアブルノード計算器172に供給する。   At the time of variable node calculation, the reception data memory 105 reads the stored reception data in accordance with the control signal supplied from the control unit 174, and supplies it as reception data D101 to the variable node calculator 172 of the message calculation unit 171.

また、バリアブルノード演算時には、メッセージメモリ104は、制御部174から供給される制御信号に従い、記憶している同一のメッセージを2回読み出して(注目しているバリアブルノードから出力されるバリアブルノードメッセージviを求めるのに必要なチェックノードメッセージ(注目しているバリアブルノードに接続されているチェックノードからのチェックノードメッセージ)ujを、2回繰り返し読み出して)、1回目に読み出したメッセージをメッセージD102として、バリアブルノード計算器172に供給し、2回目に読み出したメッセージをメッセージDD102として、バリアブルノード計算器172に供給する。バリアブルノード計算器172は、メッセージメモリ104から供給されるメッセージD102とDD102、及び受信データメモリ105から供給される受信データD101を用い、式(1)のバリアブルノード演算を行い、そのバリアブルノード演算の結果得られたメッセージ(バリアブルノードメッセージ)viを、メッセージD103として、メッセージメモリ104に供給する。 At the time of variable node calculation, the message memory 104 reads the same stored message twice according to the control signal supplied from the control unit 174 (variable node message v output from the variable node of interest). Check node message necessary to obtain i (check node message from the check node connected to the variable node of interest) u j is read twice, and the first read message is message D102 Is supplied to the variable node calculator 172, and the second read message is supplied as a message DD102 to the variable node calculator 172. The variable node calculator 172 uses the messages D102 and DD102 supplied from the message memory 104 and the reception data D101 supplied from the reception data memory 105 to perform the variable node calculation of Expression (1), and performs the variable node calculation. A message (variable node message) v i obtained as a result is supplied to the message memory 104 as a message D103.

そして、メッセージメモリ104は、制御部174から供給される制御信号に従い、バリアブルノード計算器172から供給されるメッセージD103を記憶する(書き込む)。   Then, the message memory 104 stores (writes) the message D103 supplied from the variable node calculator 172 in accordance with the control signal supplied from the control unit 174.

一方、チェックノード演算時には、メッセージメモリ104は、制御部174から供給される制御信号に従って、記憶している同一のメッセージ(バリアブルノードメッセージvi)を2回読み出して(注目しているチェックノードから出力されるチェックノードメッセージujを求めるのに必要なバリアブルノードメッセージ(注目しているチェックノードに接続されているバリアブルノードからのバリアブルノードメッセージ)viを、2回繰り返し読み出して)、1回目に読み出したメッセージをメッセージD104として、チェックノード計算器173に供給し、2回目に読み出したメッセージをメッセージDD104として、チェックノード計算器173に供給する。 On the other hand, during the check node calculation, the message memory 104 reads the same stored message (variable node message v i ) twice according to the control signal supplied from the control unit 174 (from the check node of interest). Variable node message necessary to obtain the output check node message u j (variable node message from the variable node connected to the check node of interest) v i is read twice, first time The message read out in (1) is supplied to the check node calculator 173 as a message D104, and the message read out second time is supplied as a message DD104 to the check node calculator 173.

チェックノード計算器173は、メッセージメモリ104から供給されるメッセージD104とDD104を用いて、式(7)のチェックノード演算を行い、そのチェックノード演算によって求められたメッセージ(チェックノードメッセージ)ujを、メッセージD105として、メッセージメモリ104に供給する。 The check node calculator 173 performs a check node operation of Expression (7) using the messages D104 and DD104 supplied from the message memory 104, and determines a message (check node message) u j obtained by the check node operation. The message D105 is supplied to the message memory 104.

そして、メッセージメモリ104は、制御部174から供給される制御信号に従い、チェックノード計算器173から供給されるメッセージD105を記憶する(書き込む)。   Then, the message memory 104 stores (writes) the message D105 supplied from the check node calculator 173 in accordance with the control signal supplied from the control unit 174.

メッセージメモリ104が記憶したチェックノード計算器173からのメッセージD105、すなわち、チェックノードメッセージujは、次のバリアブルノード演算時に、メッセージD102及びDD102として読み出され、バリアブルノード計算器172に供給される。 The message D105 from the check node calculator 173 stored in the message memory 104, that is, the check node message u j is read out as messages D102 and DD102 and supplied to the variable node calculator 172 at the next variable node calculation. .

図13は、図12のバリアブルノード計算器172の構成例を示している。   FIG. 13 shows a configuration example of the variable node calculator 172 of FIG.

なお、図中、図9のバリアブルノード計算器102と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。   In the figure, portions corresponding to the variable node calculator 102 in FIG. 9 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate.

バリアブルノード計算器172は、メッセージを遅延するためのメモリ(図9のバリアブルノード計算器102に設けられているFIFOメモリ155)を設けずに構成されている。   The variable node calculator 172 is configured without a memory (FIFO memory 155 provided in the variable node calculator 102 in FIG. 9) for delaying a message.

但し、バリアブルノード計算器172は、外部からメッセージ(データ)が供給(入力)される入力ポートとして、3つの入力ポートP101,P102,PD102を有している。   However, the variable node calculator 172 has three input ports P101, P102, and PD102 as input ports to which a message (data) is supplied (input) from the outside.

入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給(入力)される。また、入力ポートP102には、メッセージメモリ104から2回読み出される同一のメッセージD102及びDD102のうちの1回目に読み出されるメッセージD102が供給(入力)され、入力ポートPD102には、2回目に読み出されるメッセージDD102が供給される。   The reception data D101 read from the reception data memory 105 is supplied (input) to the input port P101. The input port P102 is supplied (input) with the message D102 read out the first time out of the same message D102 and DD102 read out twice from the message memory 104, and read out into the input port PD102 the second time. Message DD102 is provided.

チェックノード計算器173は、入力ポートP101,P102,PD102それぞれから入力されるメッセージを用いて、復号しようとするLDPC符号を定義する検査行列に基づき、式(1)のバリアブルノード演算を行い、その結果得られるメッセージを、出力ポートP103から出力する。   The check node calculator 173 performs a variable node calculation of Expression (1) based on a check matrix that defines an LDPC code to be decoded, using messages input from the input ports P101, P102, and PD102, The resulting message is output from the output port P103.

すなわち、入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給される。また、入力ポートP102には、メッセージメモリ104から読み出されたメッセージD102(チェックノードメッセージuj)が供給される。 That is, the reception data D101 read from the reception data memory 105 is supplied to the input port P101. Further, the message D102 (check node message u j ) read from the message memory 104 is supplied to the input port P102.

そして、バリアブルノード計算器172では、検査行列の各行に対応するチェックノードからのメッセージD102、すなわち、メッセージメモリ104から1回目に読み出されたメッセージujが、入力ポートP102から1つずつ入力され、そのメッセージD102が、演算器151に供給される。 In the variable node calculator 172, the message D102 from the check node corresponding to each row of the check matrix, that is, the message u j read from the message memory 104 for the first time is input one by one from the input port P102. The message D102 is supplied to the calculator 151.

また、バリアブルノード計算器172では、受信データメモリ105から受信データD101が入力ポートP101から1つずつ読み込まれ、演算器157に供給される。   In the variable node calculator 172, the reception data D 101 is read from the reception data memory 105 one by one from the input port P 101 and supplied to the calculator 157.

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

検査行列の1列に亘るメッセージD102が1つずつ読み込まれ、レジスタ152に1列分のメッセージD102が積算された値が格納された場合、すなわち、レジスタ152に、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算された積算値(j=1からdvまでのΣuj)が格納された場合、セレクタ153は、レジスタ152に格納されている値、すなわち、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算された積算値D151(j=1からdvまでのΣuj)を選択し、レジスタ154に出力して格納させる。 When the message D102 over one column of the check matrix is read one by one and the value obtained by accumulating the message D102 for one column is stored in the register 152, that is, all over the one column of the check matrix are stored in the register 152. When the accumulated value (Σu j from j = 1 to d v ) obtained by accumulating the message D102 (message u j ) from the branch is stored, the selector 153 stores the value stored in the register 152, that is, select the message from all of the branches across one row of the parity check matrix D102 (message u j) the accumulated integrated values D151 (? uj j from j = 1 to d v), is stored in output register 154 .

レジスタ154は、格納している値D151を、値D152として、セレクタ153と演算器156に供給する。レジスタ152に1列分のメッセージD102が積算された値が格納される直前までは、セレクタ153は、レジスタ154から供給された値D152を選択し、レジスタ154に出力し再格納させる。すなわち、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算されるまで、レジスタ154は、前回積算された値を、セレクタ153と演算器156に供給する。 The register 154 supplies the stored value D151 as the value D152 to the selector 153 and the calculator 156. The selector 153 selects the value D152 supplied from the register 154, outputs it to the register 154, and stores it again until the value obtained by integrating the message D102 for one column is stored in the register 152. That is, until the message D102 (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 calculator 156.

一方、レジスタ154から新たな値D152(j=1からdvまでのΣuj)の出力が開始されると、すなわち、レジスタ152に1列分のメッセージD102が積算された積算値(j=1からdvまでのΣuj)が格納された直後、バリアブルノード計算器172においては、メッセージD102(メッセージuj)と同一のメッセージDD102、すなわち、メッセージメモリ104から2回目に読み出されたメッセージujが、入力ポートPD102から1つずつ入力され、そのメッセージDD102が、演算器156に供給される。 On the other hand, upon output of a new value from the register 154 D152 (? Uj j from j = 1 to d v) is started, namely, the integrated value message D102 is integrated for one column in the register 152 (j = 1 Immediately after storing Σu j ) to d v , the variable node calculator 172 stores the same message DD102 as the message D102 (message u j ), that is, the message u read from the message memory 104 for the second time. j are input one by one from the input port PD102, and the message DD102 is supplied to the computing unit 156.

演算器156は、レジスタ154から供給された積算値D152から、入力ポートPD102からのメッセージDD102を減算する。すなわち、演算器156では、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)の積算値D152(j=1からdvまでのΣuj)から、求めたい枝からのメッセージuj(j=dvのuj)としてのメッセージDD102を減算して、減算値(j=1からdv-1までのΣuj)を求め、演算器157に供給する。 The arithmetic unit 156 subtracts the message DD102 from the input port PD102 from the integrated value D152 supplied from the register 154. That is, the message of the calculator 156, the message D102 from all edges over one row of the parity check matrix (? Uj j from j = 1 to d v) integrated value D152 of (message u j) from a desired branch The message DD102 as u j (j = d v u j ) is subtracted to obtain a subtraction value (Σu j from j = 1 to d v −1), which is supplied to the calculator 157.

演算器157は、入力ポートP101からの受信データD101と、演算器156からの減算値(j=1からdv-1までのΣuj)とを加算し、その結果得られる加算値をメッセージD103(メッセージvi)として、出力ポートP103から出力する。 The computing unit 157 adds the reception data D101 from the input port P101 and the subtraction value (Σu j from j = 1 to d v −1) from the computing unit 156, and sends the resulting addition value to the message D103. (Message v i ) is output from the output port P103.

以上のように、バリアブルノード計算器172では、式(1)のバリアブルノード演算が行われ、その結果得られるメッセージ(バリアブルノードメッセージ)viが、出力ポートP103から出力される。 As described above, the variable node calculator 172 performs the variable node calculation of Expression (1), and the message (variable node message) v i obtained as a result is output from the output port P103.

図14は、図12のチェックノード計算器173の構成例を示している。   FIG. 14 shows a configuration example of the check node calculator 173 of FIG.

なお、図中、図10のチェックノード計算器103と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。   In the figure, portions corresponding to the check node calculator 103 in FIG. 10 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.

チェックノード計算器173は、データを遅延するためのメモリ(図10のチェックノード計算器103に設けられているFIFOメモリ127及び133)を設けずに構成されている。   The check node calculator 173 is configured without providing a memory for delaying data (FIFO memories 127 and 133 provided in the check node calculator 103 in FIG. 10).

但し、チェックノード計算器173は、外部からメッセージ(データ)が供給(入力)される入力ポートとして、2つの入力ポートP111とPD111を有している。   However, the check node calculator 173 has two input ports P111 and PD111 as input ports to which a message (data) is supplied (input) from the outside.

入力ポートP111には、メッセージメモリ104から2回読み出される同一のメッセージD104及びDD104のうちの1回目に読み出されるメッセージD104が供給(入力)され、入力ポートPD111には、2回目に読み出されるメッセージDD104が供給される。   The message D104 read out the first time out of the same message D104 and DD104 read out twice from the message memory 104 is supplied (input) to the input port P111, and the message DD104 read out second time is supplied to the input port PD111. Is supplied.

チェックノード計算器173は、入力ポートP111とPD111それぞれから入力されるメッセージを用いて、復号しようとするLDPC符号を定義する検査行列に基づき、式(7)のチェックノード演算を行い、その結果得られるメッセージを、出力ポートP112から出力する。   The check node calculator 173 performs the check node calculation of Expression (7) based on the check matrix that defines the LDPC code to be decoded using the messages input from the input ports P111 and PD111, and obtains the result. Output message is output from the output port P112.

すなわち、入力ポートP111には、メッセージメモリ104から読み出されたメッセージD104(バリアブルノードメッセージuj)が供給される。 That is, the message D104 (variable node message u j ) read from the message memory 104 is supplied to the input port P111.

そして、チェックノード計算器173では、検査行列の各列に対応するバリアブルノードからのメッセージD104(メッセージvi)が入力ポートP111から1つずつ入力され、その最上位ビットを除く下位ビット、つまり、メッセージD104の絶対値D122(|vi|)が、LUT121に供給されるとともに、最上位ビット、つまりメッセージD104の符号ビットD121が、EXOR回路129に供給される。 Then, in the check node calculator 173, the message D104 (message v i ) from the variable node corresponding to each column of the check matrix is input one by one from the input port P111, and the lower bits excluding the most significant bit, that is, The absolute value D122 (| v i |) of the message D104 is supplied to the LUT 121, and the most significant bit, that is, the sign bit D121 of the message D104 is supplied to the EXOR circuit 129.

LUT121は、非線形関数φ(x)の演算結果を記憶しており、絶対値D122(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果D123(φ(|vi|))を読み出し、演算器122に供給する。 The LUT 121 stores the calculation result of the nonlinear function φ (x), and the calculation result D123 (φ that performs the calculation of the nonlinear function φ (| v i |) using the absolute value D122 (| v i |) as an argument. (| v i |)) is read out and supplied to the computing unit 122.

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

検査行列の1行に亘るメッセージD104が1つずつ読み込まれ、レジスタ123に1行分の演算結果D123が積算された積算値が格納された場合、セレクタ124は、レジスタ123に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)が積算された積算値D124(i=1からi=dcまでのΣφ(|vi|))を選択し、積算値D125として、レジスタ125に出力して格納させる。レジスタ125は、格納している積算値D125を、値D126として、セレクタ124と演算器126に供給する。 When the message D104 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 selector 124 stores the value stored in the register 123. , i.e., phi obtained from the messages D104 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) from the integrated value D124 (i = 1, which is accumulated up to i = d c Σφ (| v i |)) is selected and output to the register 125 for storage as the integrated value D125. The register 125 supplies the stored integrated value D125 to the selector 124 and the calculator 126 as a value D126.

レジスタ123に1行分の演算結果D123が積算された積算値が格納される直前までは、セレクタ124は、レジスタ125から供給された値D126を選択し、レジスタ125に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ125は、前回積算されたφ(|vi|)の積算値を、セレクタ124と演算器126に供給する。 The selector 124 selects the value D126 supplied from the register 125, outputs it to the register 125, and stores it again until the integrated value obtained by integrating the operation results D123 for one row is stored in the register 123. That is, until φ (| v i |) obtained from the message D104 (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 calculator 126.

一方、レジスタ125から新たな値D126(i=1からi=dcまでのΣφ(|vi|))の出力が開始されると、すなわち、レジスタ125に1行分の演算結果D123が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納された直後、チェックノード計算器173において、メッセージD104(メッセージvi)と同一のメッセージDD104、すなわち、メッセージメモリ104から2回目に読み出されたメッセージviが、入力ポートPD104から1つずつ入力され、そのメッセージDD104のうちのその最上位ビットを除く下位ビット、つまり、メッセージDD104の絶対値(|vi|)が、LUT135に供給されるとともに、最上位ビット、つまりメッセージDD104の符号ビットが、EXOR回路134に供給される。 On the other hand, (Sigma] [phi of i = 1 through i = d c (| v i |)) a new value D126 from the register 125 when the output of the start, that is, the operation result D123 is integrated for one row in the register 125 have been (from i = 1 to i = d c Σφ (| v i |)) integrated value immediately after the stored, in the check node calculator 173, messages D104 (message v i) the same messages DD104, i.e. , The message v i read from the message memory 104 for the second time is input one by one from the input port PD104, and the lower-order bits of the message DD104 excluding the most significant bit, that is, the absolute value of the message DD104 ( | v i |) is supplied to the LUT 135, and the most significant bit, that is, the sign bit of the message DD 104 is supplied to the EXOR circuit 134.

LUT135は、LUT121と同様のLUTで、メッセージDD104の絶対値(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果(φ(|vi|))を読み出し、演算器126に供給する。 The LUT 135 is the same LUT as the LUT 121, and the calculation result (φ (| v i |)) obtained by calculating the nonlinear function φ (| v i |) using the absolute value (| v i |) of the message DD104 as an argument. Is supplied to the calculator 126.

演算器126は、レジスタ125から供給された値D126から、LUT135からの演算結果(φ(|vi|))を減算し、減算結果を、減算値D128としてLUT128に供給する。すなわち、演算器126は、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)の積算値(i=1からi=dcまでのΣφ(|vi|))から、求めたい枝からのメッセージvi(i=dcのvi)としてのメッセージDD104から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc-1までのΣφ(|vi|))を減算値D128としてLUT128に供給する。 The calculator 126 subtracts the calculation result (φ (| v i |)) from the LUT 135 from the value D126 supplied from the register 125, and supplies the subtraction result to the LUT 128 as a subtraction value D128. That is, the arithmetic unit 126, phi obtained from the messages D104 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) integrated value from (i = 1 to i = d c Σφ (| v i |)) of the desired branch, subtract φ (| v i |) obtained from message DD104 as message v i (i = d c v i ) from the branch to be obtained. The value (Σφ (| v i |) from i = 1 to i = d c −1) is supplied to the LUT 128 as the subtraction value D128.

LUT128は、逆関数φ-1(x)の演算結果を記憶している、LUT121や135と同様のLUTであり、演算器126からの減算値D128(i=1からi=dc-1までのΣφ(|vi|))を引数として、逆関数φ-1(Σφ(|vi|))の演算を行った演算結果D129(φ-1(Σφ(|vi|)))を出力する。 The LUT 128 is an LUT similar to the LUT 121 or 135 that stores the calculation result of the inverse function φ −1 (x), and the subtraction value D 128 (i = 1 to i = d c −1) from the calculator 126. of Σφ (| v i |) a) as an argument, the inverse function φ -1 (Σφ (| v i |) a)) calculates the calculation result of the D129 () φ -1 (Σφ ( | | v i) Output.

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

検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納された場合、セレクタ131は、レジスタ130に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された値D131(i=1からi=dcまでのΠsign(vi))を選択し、値D132としてレジスタ132に出力して格納させる。レジスタ132は、格納している値D132を、値D133としてセレクタ131とEXOR回路134に供給する。 If (Paisign from i = 1 to d c (v i)) multiplication result D130 to the sign bit D121 is multiplied by the message D104 from all of the branches across one line of the parity check matrix stored in the register 130, the selector 131, Paisign the value stored in the register 130, i.e., the value D131 (i = 1 the sign bit D121 of the message D104 is multiplied from all of the branches across one line of the parity check matrix until i = d c (v i )) is selected and output to the register 132 as the value D132 for storage. The register 132 supplies the stored value D132 to the selector 131 and the EXOR circuit 134 as the value D133.

検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納される直前までは、セレクタ131は、レジスタ132から供給された値D133を選択し、レジスタ132に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)の符号ビットD121が乗算されるまで、レジスタ132は、前回格納した値を、セレクタ131とEXOR回路134に供給する。 It is (from i = 1 Πsign to d c (v i)) multiplication result D130 to the sign bit D121 is multiplied by the message D104 from all of the branches across one line of the parity check matrix until just before is stored in the register 130 The selector 131 selects the value D133 supplied from the register 132, outputs it to the register 132, and stores it again. That is, 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 D104 (message v i ) from all branches over one row of the check matrix is multiplied. .

一方、レジスタ132から新たな値D133(i=1からi=dcまでのΠsign(vi))がEXOR回路134に供給されたとき、すなわち、レジスタ130に1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された値D131(i=1からi=dcまでのΠsign(vi))が格納されたとき、上述したように、レジスタ125には、1行分の演算結果D123が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納される。 On the other hand, a new value from the register 132 D133 (from i = 1 to i = d c Πsign (v i )) when is supplied to the EXOR circuit 134, i.e., from all of the branches across one line to the register 130 when the sign bit D121 of the message D104 is multiplied value D131 to (Paisign of i = 1 through i = d c (v i) ) are stored, as described above, the register 125, the operation of one line result D123 is integrated integrated values (from i = 1 to i = d c Σφ (| v i |)) is stored.

レジスタ125に1行分の演算結果D123が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納されると、上述したように、チェックノード計算器173において、メッセージD104(メッセージvi)と同一のメッセージDD104、すなわち、メッセージメモリ104から2回目に読み出されたメッセージviが、入力ポートPD104から1つずつ入力され、そのメッセージDD104のうちのその最上位ビットを除く下位ビット、つまり、メッセージDD104の絶対値(|vi|)が、LUT135に供給されるとともに、最上位ビット、つまりメッセージDD104の符号ビットが、EXOR回路134に供給される。 Integration value calculation result D123 is integrated for one row in the register 125 (Sigma] [phi of i = 1 through i = d c (| v i |)) When is stored, as described above, the check node calculator At 173, the same message DD104 as the message D104 (message v i ), that is, the message v i read from the message memory 104 for the second time is input one by one from the input port PD104, and the message DD104 The low-order bits excluding the most significant bit, that is, the absolute value (| v i |) of the message DD104 is supplied to the LUT 135, and the most significant bit, that is, the sign bit of the message DD104 is supplied to the EXOR circuit 134. .

EXOR回路134は、レジスタ132から供給された値D133と、入力ポートPD104からのメッセージDD104の符号ビットとの排他的論理和を演算することにより、値D133を、メッセージDD104の符号ビットで除算し、除算結果を除算値D135として出力する。すなわち、EXOR回路134は、検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121の乗算値(i=1からi=dcまでのΠsign(vi))を、求めたい枝からのメッセージviとしてのメッセージDD104の符号ビット(i=dcのsign(vi))で除算して、その除算値(i=1からi=dc-1までのΠsign(vi))を除算値D135として出力する。 The EXOR circuit 134 calculates the exclusive OR of the value D133 supplied from the register 132 and the sign bit of the message DD104 from the input port PD104, thereby dividing the value D133 by the sign bit of the message DD104, The division result is output as a division value D135. That, EXOR circuit 134, branches multiplication value of the sign bit D121 of the message D104 from all of the branches across one line of the parity check matrix (Paisign of i = 1 to i = d c (v i) ), to be obtained is divided by the sign bit of the message DD104 serving as the message v i from (i = d c of sign (v i)), Πsign of the division value from (i = 1 to i = d c -1 (v i ) ) Is output as the division value D135.

そして、チェックノード計算器173では、LUT128から出力された演算結果D129を下位ビットとするとともに、EXOR回路134から出力された除算値D135を最上位ビット(符号ビット)とするビット列がメッセージD105(メッセージuj)として、出力ポートP112から出力される。 Then, in the check node calculator 173, a bit string having the operation result D129 output from the LUT 128 as the lower bit and the division value D135 output from the EXOR circuit 134 as the most significant bit (sign bit) is a message D105 (message u j ) is output from the output port P112.

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

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

次に、図15のフローチャートを参照して、図12の復号装置の制御部174によるメッセージメモリ104に対するメッセージ(データ)の読み書き制御の処理について説明する。   Next, with reference to a flowchart of FIG. 15, a description will be given of a process of reading / writing messages (data) to / from the message memory 104 by the control unit 174 of the decoding apparatus of FIG.

なお、以下、適宜、ノードにおいてメッセージを求めるのに用いられる、そのノードに入力されるメッセージを、入力メッセージというとともに、ノードにおいて、入力メッセージを用いて求められて出力されるメッセージを、出力メッセージという。   Note that, hereinafter, a message input to a node, which is used to obtain a message at a node as appropriate, is referred to as an input message, and a message obtained and output at the node using an input message is referred to as an output message. .

ステップS101において、制御部174は、ある注目しているノード(注目ノード)から出力される出力メッセージ(注目ノードに接続している枝から出力されるメッセージ)を求めるのに必要な入力メッセージ、すなわち、注目ノードに接続している枝から入力されるメッセージを読み出し、メッセージ計算部171に供給するように(入力メッセージの1回目の読み出しを行うように)、メッセージメモリ104を制御して、ステップS102に進む。   In step S101, the control unit 174 outputs an input message necessary for obtaining an output message (message output from a branch connected to the target node) output from a target node (target node), that is, The message memory 104 is controlled so that the message input from the branch connected to the node of interest is read and supplied to the message calculation unit 171 (the input message is read for the first time), and step S102 is performed. Proceed to

ステップS102では、制御部174は、直前のステップS101でメッセージメモリ104から読み出したのと同一の入力メッセージを読み出し、メッセージ計算部171に供給するように(入力メッセージの2回目の読み出しを行うように)、メッセージメモリ104を制御して、ステップS103に進む。   In step S102, the control unit 174 reads the same input message read from the message memory 104 in the immediately preceding step S101, and supplies it to the message calculation unit 171 (so that the input message is read for the second time). ), The message memory 104 is controlled, and the process proceeds to step S103.

すなわち、ステップS101及びS102では、メッセージ計算部171での演算(チェックノード演算又はバリアブルノード演算)に用いられる同一の入力メッセージを、メッセージメモリ104から2回読み出し、メッセージ計算部171に供給する読み出し制御が行われる。   That is, in steps S101 and S102, the same input message used for the calculation (check node calculation or variable node calculation) in the message calculation unit 171 is read from the message memory 104 twice and supplied to the message calculation unit 171. Is done.

ステップS103では、制御部174は、メッセージ計算部171がステップS101とS102でメッセージメモリ104から読み出された入力メッセージを用いて演算を行うことにより求めた出力メッセージを書き込むように、メッセージメモリ104を制御する。   In step S103, the control unit 174 writes the message memory 104 so that the message calculation unit 171 writes the output message obtained by performing the calculation using the input message read from the message memory 104 in steps S101 and S102. Control.

すなわち、ステップS103では、メッセージ計算部171が式(1)又は式(7)の演算を行うことによって出力する出力メッセージをメッセージメモリ104に書き込む書き込み制御が行われる。   That is, in step S103, write control is performed to write the output message to be output to the message memory 104 by the message calculation unit 171 performing the calculation of Expression (1) or Expression (7).

そして、ステップS103からステップS101に戻り、制御部174は、他のノードを新たな注目ノードとし、その新たな注目ノードから出力される出力メッセージを求めるのに必要な入力メッセージを読み出して、メッセージ計算部171に供給するように、メッセージメモリ104を制御し、以下、同様の処理を繰り返す。   Then, returning from step S103 to step S101, the control unit 174 sets another node as a new attention node, reads out an input message necessary to obtain an output message output from the new attention node, and calculates a message. The message memory 104 is controlled so as to be supplied to the unit 171, and the same processing is repeated thereafter.

メッセージメモリ104は、前述したように、RAM#AとRAM#Bとの2バンク構成になっており、制御部174は、そのRAM#AとRAM#Bのそれぞれを対象に、図15で説明した読み書き制御を行う。   As described above, the message memory 104 has a two-bank configuration of RAM # A and RAM # B, and the control unit 174 is described with reference to FIG. 15 for each of the RAM # A and RAM # B. Read / write control.

すなわち、図16は、図12の復号装置のメッセージメモリ104に対するメッセージの読み書きのタイミングを示すタイミングチャートである。   That is, FIG. 16 is a timing chart showing message read / write timing with respect to the message memory 104 of the decoding apparatus of FIG.

図16のタイミングチャートは、前述の図11のタイミングチャートと同様に、メッセージメモリ104を構成するRAM#AとRAM#Bのそれぞれに対する読み書きのタイミングを表している。   The timing chart of FIG. 16 represents the read / write timing for each of the RAM # A and RAM # B constituting the message memory 104, as in the timing chart of FIG.

図16においては、まず最初に、あるノードnode#1からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Aからの1回目の読み出しが行われる(R1(node#1))。その読み出しの終了後、ノードnode#1からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Aからの2回目の読み出しが行われる(R2(node#1))のと同時に、次のノードnode#2からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Bからの1回目の読み出しが行われる(R1(node#2))。   In FIG. 16, first, an input message necessary for obtaining an output message from a certain node node # 1 is read from RAM # A for the first time (R1 (node # 1)). After the reading is finished, the input message necessary to obtain the output message from node node # 1 is read from RAM # A for the second time (R2 (node # 1)) and the next An input message necessary for obtaining an output message from the node node # 2 is read from the RAM # B for the first time (R1 (node # 2)).

ノードnode#1からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Aからの2回目の読み出しが終了し、メッセージ計算部171において、ノードnode#1からの出力メッセージが求められると、そのノードnode#1からの出力メッセージがRAM#Aに書き込まれる(W(node#1))のと同時に、ノードnode#2からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Bからの2回目の読み出しが行われる(R2(node#2))。   When the second read from the RAM #A of the input message required to obtain the output message from the node node # 1 is completed, and the message calculation unit 171 obtains the output message from the node node # 1, The output message from node node # 1 is written to RAM # A (W (node # 1)), and at the same time, the input message required to obtain the output message from node node # 2 is output from RAM # B. Is read for the second time (R2 (node # 2)).

ノードnode#2からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Bからの2回目の読み出しが終了し、メッセージ計算部171において、ノードnode#2からの出力メッセージが求められると、そのノードnode#2からの出力メッセージがRAM#Bに書き込まれる(W(node#2))のと同時に、次のノードnode#3からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Aからの1回目の読み出しが行われる(R1(node#3))。   When the second read from the RAM #B of the input message necessary to obtain the output message from the node node # 2 is completed and the message calculation unit 171 obtains the output message from the node node # 2, The output message from that node node # 2 is written to RAM # B (W (node # 2)), and at the same time, the input message required to obtain the output message from the next node node # 3, RAM # The first reading from A is performed (R1 (node # 3)).

ノードnode#2からの出力メッセージのRAM#Bへの書き込みと、ノードnode#3からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Aからの1回目の読み出しとが終了すると、ノードnode#3からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Aからの2回目の読み出しが行われる(R2(node#3))のと同時に、次のノードnode#4からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Bからの1回目の読み出しが行われる(R1(node#4))。   When the output message from node node # 2 is written to RAM # B and the input message necessary to obtain the output message from node node # 3 is read from RAM # A for the first time, node The input message required to obtain the output message from node # 3 is read from RAM # A for the second time (R2 (node # 3)) and output from the next node node # 4 An input message necessary to obtain a message is read from RAM # B for the first time (R1 (node # 4)).

ノードnode#3からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Aからの2回目の読み出しが終了し、メッセージ計算部171において、ノードnode#3からの出力メッセージが求められると、そのノードnode#3からの出力メッセージがRAM#Aに書き込まれる(W(node#3))のと同時に、ノードnode#4からの出力メッセージを求めるのに必要な入力メッセージの、RAM#Bからの2回目の読み出しが行われる(R2(node#4))。   When the second reading from the RAM #A of the input message required to obtain the output message from the node node # 3 is completed and the message calculation unit 171 obtains the output message from the node node # 3, The output message from the node node # 3 is written to the RAM # A (W (node # 3)), and at the same time, the input message required to obtain the output message from the node node # 4 is output from the RAM # B. Is read for the second time (R2 (node # 4)).

以下、同様にして、メッセージメモリ104を構成するRAM#AとRAM#Bのそれぞれに対するメッセージの読み書きが行われていく。   Thereafter, in the same way, reading and writing of messages to and from RAM #A and RAM #B constituting the message memory 104 are performed.

図12の復号装置によれば、メッセージ計算部171において出力メッセージを求めるのに必要な(同一の)入力メッセージを、メッセージメモリ104から2回読み出すことによって、メッセージ計算部171の内部において、入力メッセージを遅延せずに済むので、メッセージ計算部171を、データを遅延するためだけのメモリ(図9のバリアブルノード計算器102に設けられているFIFOメモリ155、並びに図10のチェックノード計算器103に設けられているFIFOメモリ127及び133)を設けずに構成することができる。そして、その結果、復号装置の規模を削減することができる   According to the decoding device of FIG. 12, the input message necessary for obtaining the output message in the message calculation unit 171 is read twice from the message memory 104, so that the input message is received inside the message calculation unit 171. Therefore, the message calculation unit 171 can store the memory only for delaying data (the FIFO memory 155 provided in the variable node calculator 102 in FIG. 9 and the check node calculator 103 in FIG. 10). It is possible to configure without providing the provided FIFO memories 127 and 133). As a result, the scale of the decoding device can be reduced.

なお、データを遅延するためだけのメモリ(以下、適宜、遅延メモリという)を設けずに、メッセージメモリ104から同一の入力メッセージを2回読み出す図12の復号装置におけるメッセージメモリ104に対するメッセージの読み書きのタイミング(図16)と、遅延メモリを設けて、メッセージメモリ104から入力メッセージを1回だけ読み出す図8の復号装置におけるメッセージメモリ104に対するメッセージの読み書きのタイミング(図11)とを比較して分かるように、図12の復号装置は、あるノードからの出力メッセージを求めるためのメッセージメモリ104に対するメッセージの読み書きに、図8の復号装置の1.5倍程度の時間を要し、したがって、図8の復号装置と同一の回数の繰り返し復号を行うには、メッセージの読み書きに時間を要する分だけ高速に動作することが要求される(高速な動作クロックを必要とする)。   It should be noted that, without providing a memory only for delaying data (hereinafter referred to as a delay memory as appropriate), the same input message is read twice from the message memory 104. Comparing the timing (FIG. 16) with the read / write timing of the message memory 104 (FIG. 11) in the decoding apparatus of FIG. 8 that provides a delay memory and reads the input message from the message memory 104 only once. In addition, the decoding device of FIG. 12 takes about 1.5 times as long as the decoding device of FIG. 8 to read / write a message to / from the message memory 104 for obtaining an output message from a certain node. To perform iterative decoding the same number of times as It is required to operate only at a high speed amount that takes time to read and write di (requiring high-speed operation clock).

しかしながら、特に、ノードすべてについて、出力メッセージを求める演算を同時(並列)に行うフルパラレルの復号(full parallel decoding)を行う復号装置や、1つでもなくすべてでもないp個のノードについて、出力メッセージを求める演算を同時に行う一部並列の復号(例えば、特許文献1に記載の復号)を行う復号装置を、遅延メモリを設けて構成した場合には、多数の遅延メモリが必要となり、装置全体の規模に大きく影響する。   However, in particular, for all the nodes, the output message for the decoding device that performs full parallel decoding that performs the operation for obtaining the output message simultaneously (in parallel), and for p nodes that are not all but one. When a decoding device that performs partial parallel decoding (for example, decoding described in Patent Document 1) that simultaneously performs operations for obtaining a delay memory is provided, a large number of delay memories are required. It greatly affects the scale.

かかる復号装置において、図12の復号装置のように、メッセージメモリ104から同一の入力メッセージを2回読み出して、出力メッセージを求めることによって、遅延メモリを不要とする構成を採用することにより、復号装置において多少の高速な動作が要求されることにはなるが、その代償として、極めて大きな装置規模の削減の効果を得ることができる。   In such a decoding device, as in the decoding device of FIG. 12, by adopting a configuration that eliminates the need for a delay memory by reading the same input message twice from the message memory 104 and obtaining an output message, the decoding device However, in order to compensate for this, it is possible to obtain an extremely large reduction effect on the scale of the apparatus.

なお、本明細書では、説明を簡単にするために、フルシリアルの復号装置を説明するが、図12の復号装置を含め、以下説明する復号装置の構成や処理の方法は、フルパラレルの復号を行う復号装置や、一部並列の復号を行う復号装置に適用することができ、そのような復号装置に適用した場合に、特に大きな装置規模の削減の効果を得ることができる。   In this specification, for the sake of simplicity, a full serial decoding device will be described. However, the configuration and processing method of the decoding device described below, including the decoding device of FIG. The present invention can be applied to a decoding device that performs decoding and a decoding device that performs partial parallel decoding. When applied to such a decoding device, a particularly large reduction effect of the device scale can be obtained.

上述したように、図12の復号装置によれば、メッセージ計算部171において出力メッセージを求めるのに必要な(同一の)入力メッセージを、メッセージメモリ104から2回読み出すことによって、メッセージ計算部171の内部において、入力メッセージを遅延せずに済むので、遅延メモリ(図9のバリアブルノード計算器102に設けられているFIFOメモリ155、並びに図10のチェックノード計算器103に設けられているFIFOメモリ127及び133)が不要となるが、出力メッセージを求めるためのメッセージメモリ104に対するメッセージの読み書きに、図8の復号装置の1.5倍程度の時間を要することとなる。   As described above, according to the decoding device of FIG. 12, the message calculation unit 171 reads the input message necessary (identical) for obtaining the output message twice from the message memory 104, so that the message calculation unit 171 Since it is not necessary to delay the input message internally, a delay memory (a FIFO memory 155 provided in the variable node calculator 102 in FIG. 9 and a FIFO memory 127 provided in the check node calculator 103 in FIG. 10) is used. 133) becomes unnecessary, but it takes about 1.5 times as long as that of the decoding device of FIG. 8 to read and write the message to and from the message memory 104 for obtaining the output message.

さらに、遅延メモリが不要な図12の復号装置では、復号の対象のLDPC符号を定義する検査行列の重みが、メッセージ計算部171での演算に要する時間に対して小である場合には、メッセージメモリ104に対するメッセージの読み書きに、さらなる時間を要することとなる。   Furthermore, in the decoding apparatus of FIG. 12 that does not require a delay memory, if the weight of the check matrix that defines the LDPC code to be decoded is small with respect to the time required for the calculation in the message calculation unit 171, the message It takes more time to read and write messages to the memory 104.

すなわち、ノードに接続している、ある枝から出力されるメッセージ(出力メッセージ)は、そのノードに接続している枝すべてから入力されるメッセージ(入力メッセージ)の積算値から、出力メッセージを求めようとしている枝から入力される入力メッセージを減算すること等によって求められるため、検査行列の重みが、メッセージ計算部171での演算に要する時間に対して小である場合、つまり、メッセージメモリ104に対して読み書きされるメッセージの数が小である場合には、例えば、ノードに接続している枝すべてから入力される入力メッセージの積算値から減算すべき入力メッセージを、メッセージメモリ104から読み出すことができるのに、その積算値が求められるまで、入力メッセージの読み出しを待つ必要が生じることがある。また、メッセージメモリ104に出力メッセージの書き込みをすることができるのに、その出力メッセージが求められるまで、出力メッセージの書き込みを待つ必要が生じることがある。   That is, for a message (output message) output from a certain branch connected to a node, an output message will be obtained from the integrated value of messages (input messages) input from all branches connected to that node. When the weight of the check matrix is small with respect to the time required for the calculation in the message calculation unit 171, that is, for the message memory 104. When the number of messages read and written is small, for example, the input message to be subtracted from the integrated value of the input messages input from all branches connected to the node can be read from the message memory 104. However, it is necessary to wait for the input message to be read out until the integrated value is obtained. There is Rukoto. In addition, although an output message can be written to the message memory 104, it may be necessary to wait for the output message to be written until the output message is requested.

以上のように、メッセージメモリ104に対するメッセージの読み書きを待つ時間が生じる場合には、結果として、メッセージメモリ104に対するメッセージの読み書きに、さらなる時間を要することとなる。   As described above, when a time for waiting for reading / writing of a message to / from the message memory 104 occurs, as a result, it takes more time to read / write the message to / from the message memory 104.

メッセージメモリ104に対するメッセージの読み書きに時間を要すると、1回の復号に要する時間も大になり、その分だけ、繰り返し復号を行うことができる回数が減って、復号性能が劣化する(復号結果の信頼性が低くなる)ことになる。   If it takes time to read / write messages to / from the message memory 104, the time required for one decoding also increases, and the number of times that it is possible to perform iterative decoding decreases accordingly, and the decoding performance deteriorates (the decoding result Reliability will be reduced).

そこで、規模を削減しつつ、復号性能の劣化を抑制することができる復号装置について説明する。   Accordingly, a decoding device that can suppress degradation in decoding performance while reducing the scale will be described.

すなわち、図17は、本発明を適用した復号装置の第1実施の形態の構成例を示すブロック図である。   That is, FIG. 17 is a block diagram illustrating a configuration example of the first embodiment of the decoding device to which the present invention has been applied.

なお、図中、図12の復号装置と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。すなわち、図12の復号装置は、メッセージ計算部171に代えてメッセージ計算部181が設けられているとともに、制御部174に代えて制御部184が設けられている他は、図12の復号装置と同様に構成されている。   In the figure, portions corresponding to those of the decoding device of FIG. 12 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate. That is, the decoding apparatus of FIG. 12 is different from the decoding apparatus of FIG. 12 except that a message calculation unit 181 is provided instead of the message calculation unit 171 and a control unit 184 is provided instead of the control unit 174. It is constituted similarly.

図17の復号装置は、図12の復号装置と同様に、フルシリアルの復号を繰り返し行う。   The decoding device in FIG. 17 repeatedly performs full serial decoding in the same manner as the decoding device in FIG.

すなわち、図17の復号装置は、メッセージメモリ104、受信データメモリ105、メッセージ計算部181、制御部184からなる。また、メッセージ計算部181は、バリアブルノード計算器182とチェックノード計算器183とから構成されている。   17 includes a message memory 104, a reception data memory 105, a message calculation unit 181 and a control unit 184. The message calculation unit 181 includes a variable node calculator 182 and a check node calculator 183.

図17の復号装置では、メッセージメモリ104から、メッセージが1つずつ読み出され、メッセージ計算部181において、そのメッセージを用いて、復号の対象のLDPC符号を定義する検査行列に基づき、所望の枝に対応するメッセージが計算される。そして、その計算によって求められたメッセージが、メッセージメモリ104に格納されていく。図17の復号装置では、以上の処理が繰り返し行われることで、繰り返し復号が行われる。   In the decoding device of FIG. 17, messages are read one by one from the message memory 104, and the message calculation unit 181 uses the messages to determine a desired branch based on a parity check matrix that defines an LDPC code to be decoded. A message corresponding to is calculated. Then, the message obtained by the calculation is stored in the message memory 104. In the decoding device in FIG. 17, iterative decoding is performed by repeatedly performing the above processing.

すなわち、受信データメモリ105には、送信されてきたLDPC符号を受信することにより得られる、符号の0(又は1)らしさを表す対数尤度比である受信データ(LDPC符号)D100が供給され、受信データメモリ105は、その受信データD100を格納(記憶)する。   That is, the reception data memory 105 is supplied with reception data (LDPC code) D100, which is a log likelihood ratio representing the likelihood of 0 (or 1) of the code obtained by receiving the transmitted LDPC code, The reception data memory 105 stores (stores) the reception data D100.

バリアブルノード演算時には、受信データメモリ105は、制御部184から供給される制御信号に従って、記憶している受信データを読み出し、受信データD101として、メッセージ計算部181のバリアブルノード計算器182に供給する。   At the time of variable node calculation, the reception data memory 105 reads the stored reception data in accordance with the control signal supplied from the control unit 184, and supplies it to the variable node calculator 182 of the message calculation unit 181 as reception data D101.

また、バリアブルノード演算時には、メッセージメモリ104は、制御部184から供給される制御信号に従い、記憶している同一のメッセージを1回、又は2回読み出して、1回目に読み出したメッセージをメッセージD102として、バリアブルノード計算器182に供給し、2回目に読み出したメッセージをメッセージDD102として、バリアブルノード計算器182に供給する。バリアブルノード計算器182は、メッセージメモリ104から1回目に読み出されたメッセージD102、及び受信データメモリ105から供給される受信データD101を用い、さらには、メッセージメモリ104から2回目に読み出されたメッセージDD102を、必要に応じて用いて、式(1)のバリアブルノード演算を行い、そのバリアブルノード演算の結果得られたメッセージ(バリアブルノードメッセージ)viを、メッセージD103として、メッセージメモリ104に供給する。 Further, during the variable node calculation, the message memory 104 reads the same stored message once or twice according to the control signal supplied from the control unit 184, and the message read first time as the message D102. Then, the message is supplied to the variable node calculator 182 and the second read message is supplied to the variable node calculator 182 as a message DD102. The variable node calculator 182 uses the message D102 read from the message memory 104 for the first time and the reception data D101 supplied from the reception data memory 105, and further read from the message memory 104 for the second time. The message DD102 is used as necessary to perform the variable node calculation of Expression (1), and the message (variable node message) v i obtained as a result of the variable node calculation is supplied to the message memory 104 as the message D103. To do.

そして、メッセージメモリ104は、制御部184から供給される制御信号に従い、バリアブルノード計算器182から供給されるメッセージD103を記憶する(書き込む)。   The message memory 104 stores (writes) the message D103 supplied from the variable node calculator 182 in accordance with the control signal supplied from the control unit 184.

一方、チェックノード演算時には、メッセージメモリ104は、制御部184から供給される制御信号に従って、記憶している同一のメッセージ(バリアブルノードメッセージvi)を1回、又は2回読み出して、1回目に読み出したメッセージをメッセージD104として、チェックノード計算器183に供給し、2回目に読み出したメッセージをメッセージDD104として、チェックノード計算器183に供給する。 On the other hand, at the time of the check node calculation, the message memory 104 reads the same stored message (variable node message v i ) once or twice according to the control signal supplied from the control unit 184, and the first time The read message is supplied to the check node calculator 183 as a message D104, and the second read message is supplied to the check node calculator 183 as a message DD104.

チェックノード計算器183は、メッセージメモリ104から1回目に読み出されたメッセージD104を用い、さらには、メッセージメモリ104から2回目に読み出されたメッセージDD104を、必要に応じて用いて、式(7)のチェックノード演算を行い、そのチェックノード演算によって求められたメッセージ(チェックノードメッセージ)ujを、メッセージD105として、メッセージメモリ104に供給する。 The check node calculator 183 uses the message D104 read out from the message memory 104 for the first time, and further uses the message DD104 read out from the message memory 104 for the second time as necessary, using the formula ( The check node calculation of 7) is performed, and a message (check node message) u j obtained by the check node calculation is supplied to the message memory 104 as a message D105.

そして、メッセージメモリ104は、制御部184から供給される制御信号に従い、チェックノード計算器183から供給されるメッセージD105を記憶する(書き込む)。   The message memory 104 stores (writes) the message D105 supplied from the check node calculator 183 in accordance with the control signal supplied from the control unit 184.

メッセージメモリ104が記憶したチェックノード計算器183からのメッセージD105、すなわち、チェックノードメッセージujは、次のバリアブルノード演算時に、メッセージD102(さらには、メッセージDD102)として読み出され、バリアブルノード計算器182に供給される。 The message D105 from the check node calculator 183 stored in the message memory 104, that is, the check node message u j is read out as the message D102 (and further the message DD102) at the time of the next variable node calculation, and the variable node calculator 182.

なお、図17の復号装置において、制御部184は、メッセージメモリ104に対するメッセージ(データ)の読み書き制御として、図15のフローチャートで説明したように、図12の復号装置の制御部174と同様の読み書き制御を必要に応じて行う。   In the decoding device of FIG. 17, the control unit 184 performs read / write control similar to that of the control unit 174 of the decoding device of FIG. 12, as described in the flowchart of FIG. Control as needed.

さらに、制御部184は、制御信号C104を、メッセージ計算部181に供給することにより、そのメッセージ計算部181を構成するバリアブルノード計算器182、及びチェックノード計算器183を制御する。   Further, the control unit 184 supplies the control signal C104 to the message calculation unit 181 to control the variable node calculator 182 and the check node calculator 183 constituting the message calculation unit 181.

ここで、バリアブルノード計算器182は、制御部184からの制御信号C104に従い、メッセージメモリ104から2回目に読み出されたメッセージDD102を選択的に用いて、式(1)のバリアブルノード演算を行う。チェックノード計算器183も、制御部184からの制御信号C104に従い、メッセージメモリ104から2回目に読み出されたメッセージDD104を選択的に用いて、式(7)のチェックノード演算を行う。   Here, the variable node calculator 182 performs the variable node calculation of Expression (1) by selectively using the message DD102 read from the message memory 104 for the second time in accordance with the control signal C104 from the control unit 184. . The check node calculator 183 also performs the check node calculation of Expression (7) by selectively using the message DD104 read out from the message memory 104 a second time in accordance with the control signal C104 from the control unit 184.

図18は、図17のバリアブルノード計算器182の構成例を示している。   FIG. 18 shows a configuration example of the variable node calculator 182 of FIG.

なお、図中、図9のバリアブルノード計算器102、又は図13のバリアブルノード計算器172と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。   In the figure, portions corresponding to those of the variable node calculator 102 of FIG. 9 or the variable node calculator 172 of FIG. 13 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.

バリアブルノード計算器182は、メッセージを遅延するための遅延メモリとしての小FIFOメモリ161と、セレクタ162とを有している。   The variable node calculator 182 includes a small FIFO memory 161 as a delay memory for delaying a message, and a selector 162.

小FIFOメモリ161は、図9のFIFOメモリ155と同様に、チェックノードからのメッセージとしての、メッセージメモリ104から1回目に読み出されたメッセージD102を一時記憶することにより遅延する。   Similar to the FIFO memory 155 of FIG. 9, the small FIFO memory 161 is delayed by temporarily storing the message D102 read out from the message memory 104 for the first time as a message from the check node.

但し、図9のFIFOメモリ155は、少なくとも、検査行列の列の重みdvの最大値に等しい数のメッセージを記憶することができる容量を有していたが、小FIFOメモリ161は、検査行列の列の重みdvの最大値よりも少ない数(であって1以上)のメッセージを記憶する容量しか有していない。 However, although the FIFO memory 155 of FIG. 9 has a capacity capable of storing at least a number of messages equal to the maximum value of the column weights d v of the parity check matrix, the small FIFO memory 161 only has the capacity to store messages for fewer than the maximum value of the weight d v column (1 or a).

したがって、小FIFOメモリ161は、FIFOメモリ155よりも容量が小さいので、規模も小さい。   Therefore, the small FIFO memory 161 has a smaller capacity than the FIFO memory 155 and is therefore small in scale.

小FIFOメモリ161は、メッセージメモリ104から1回目に読み出されたメッセージD102を遅延し、セレクタ162のf端子に供給する。   The small FIFO memory 161 delays the message D102 read from the message memory 104 for the first time and supplies it to the f terminal of the selector 162.

セレクタ162は、入力端子として、f端子とm端子とを有しており、f端子には、上述したように、小FIFOメモリ161で遅延されたメッセージD102が供給される。また、セレクタ162のm端子には、メッセージメモリ104から2回目に読み出されたメッセージDD102が供給される。   The selector 162 has an f terminal and an m terminal as input terminals, and the message D102 delayed by the small FIFO memory 161 is supplied to the f terminal as described above. Further, the message DD102 read from the message memory 104 for the second time is supplied to the m terminal of the selector 162.

さらに、セレクタ162には、制御部184(図17)から制御信号C104が供給されるようになっている。   Furthermore, the control signal C104 is supplied to the selector 162 from the control unit 184 (FIG. 17).

セレクタ162は、制御部184からの制御信号C104に従い、小FIFOメモリ161で遅延されたメッセージD102と、メッセージメモリ104から2回目に読み出されたメッセージとのうちの一方を、バリアブルノードの演算に用いるメッセージとして選択し、値D153として、演算器156に供給する。   In accordance with the control signal C104 from the control unit 184, the selector 162 uses one of the message D102 delayed in the small FIFO memory 161 and the message read out from the message memory 104 for the second time as a variable node calculation. The message to be used is selected and supplied to the calculator 156 as a value D153.

なお、バリアブルノード計算器182には、入力ポートP101,P102,PD102の他、入力ポートP104を有しており、制御部184からの制御信号C104は、入力ポートP104を介して、セレクタ162に供給される。   The variable node calculator 182 has an input port P104 in addition to the input ports P101, P102, PD102, and a control signal C104 from the control unit 184 is supplied to the selector 162 via the input port P104. Is done.

また、制御部184は、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みが、小FIFOメモリ161が記憶可能なメッセージの数以下であるときには、小FIFOメモリ161で遅延されたメッセージD102を選択することをセレクタ162に指示する信号を、制御信号C104として、バリアブルノード計算器182に供給する。   In addition, when the weight of the column of the parity check matrix corresponding to the variable node to which the branch for which the message is to be obtained is connected is equal to or less than the number of messages that can be stored in the small FIFO memory 161, the control unit 184 A signal for instructing the selector 162 to select the message D102 delayed in the memory 161 is supplied to the variable node calculator 182 as the control signal C104.

さらに、制御部184は、バリアブルノードに対応する列の重みが、小FIFOメモリ161が記憶可能なメッセージの数以下でないときには、メッセージメモリ104から2回目に読み出されたメッセージDD102を選択することをセレクタ162に指示する信号を、制御信号C104として、バリアブルノード計算器182に供給する。   Furthermore, when the weight of the column corresponding to the variable node is not equal to or less than the number of messages that can be stored in the small FIFO memory 161, the control unit 184 selects the message DD102 read from the message memory 104 for the second time. A signal instructing the selector 162 is supplied to the variable node calculator 182 as the control signal C104.

ここで、制御部184は、小FIFOメモリ161で遅延されたメッセージD102を選択することをセレクタ162に指示する制御信号C104を、バリアブルノード計算器182に供給する場合、つまり、制御信号C104が、メッセージメモリ104から2回目に読み出されたメッセージDD102を選択することをセレクタ162に指示する信号でない場合には、メッセージメモリ104からのメッセージの読み出しについては、メッセージメモリ104からメッセージを1回だけ読み出す読み出し制御を行う。   Here, when the control unit 184 supplies the variable node calculator 182 with the control signal C104 that instructs the selector 162 to select the message D102 delayed in the small FIFO memory 161, that is, the control signal C104 is: When it is not a signal for instructing the selector 162 to select the message DD102 read for the second time from the message memory 104, the message is read from the message memory 104 only once for reading the message from the message memory 104. Read control is performed.

したがって、制御部184では、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みが、小FIFOメモリ161が記憶可能なメッセージの数以下でない場合には、図15で説明した、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御が行われるが、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みが、小FIFOメモリ161が記憶可能なメッセージの数以下である場合には、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御は行われず、1回だけ読み出す読み出し制御、すなわち、図15のステップS101及びS102のうちの、ステップS101だけが行われる。   Therefore, in the case where the weight of the check matrix column corresponding to the variable node to which the branch for which the message is to be obtained is connected is not less than or equal to the number of messages that can be stored in the small FIFO memory 161, the control unit 184 The readout control for reading the same message twice from the message memory 104 described in 15 is performed, but the column weight of the parity check matrix corresponding to the variable node to which the branch for which the message is sought is connected is small FIFO. If the number of messages that can be stored in the memory 161 is less than or equal to the number of messages that can be stored, the read control for reading the same message from the message memory 104 twice is not performed, and the read control for reading only once, that is, the steps S101 and S102 in FIG. Of these, only step S101 is performed.

以上のように構成されるバリアブルノード計算器182は、入力ポートP101,P102,PD102それぞれから入力されるメッセージを必要に応じて用いて、式(1)のバリアブルノード演算を行い、その結果得られるメッセージを、出力ポートP103から出力する。   The variable node calculator 182 configured as described above performs the variable node calculation of Expression (1) using the messages input from the input ports P101, P102, and PD102 as necessary, and is obtained as a result. The message is output from the output port P103.

すなわち、入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給される。また、入力ポートP102には、メッセージメモリ104から読み出されたメッセージD102(チェックノードメッセージuj)が供給される。 That is, the reception data D101 read from the reception data memory 105 is supplied to the input port P101. Further, the message D102 (check node message u j ) read from the message memory 104 is supplied to the input port P102.

そして、バリアブルノード計算器182では、検査行列の各行に対応するチェックノードからのメッセージD102、すなわち、メッセージメモリ104から1回目に読み出されたメッセージujが、入力ポートP102から1つずつ入力され、そのメッセージD102が、演算器151と小FIFO161に供給される。 In the variable node calculator 182, the message D102 from the check node corresponding to each row of the check matrix, that is, the message u j read out from the message memory 104 for the first time is input one by one from the input port P102. The message D102 is supplied to the calculator 151 and the small FIFO 161.

また、バリアブルノード計算器182では、受信データメモリ105から受信データD101が入力ポートP101から1つずつ読み込まれ、演算器157に供給される。   Further, the variable node calculator 182 reads the received data D101 from the received data memory 105 one by one from the input port P101 and supplies it to the calculator 157.

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

検査行列の1列に亘るメッセージD102が1つずつ読み込まれ、レジスタ152に1列分のメッセージD102が積算された値が格納された場合、すなわち、レジスタ152に、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算された積算値(j=1からdvまでのΣuj)が格納された場合、セレクタ153は、レジスタ152に格納されている値、すなわち、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算された積算値D151(j=1からdvまでのΣuj)を選択し、レジスタ154に出力して格納させる。 When the message D102 over one column of the check matrix is read one by one and the value obtained by accumulating the message D102 for one column is stored in the register 152, that is, all over the one column of the check matrix are stored in the register 152. When the accumulated value (Σu j from j = 1 to d v ) obtained by accumulating the message D102 (message u j ) from the branch is stored, the selector 153 stores the value stored in the register 152, that is, select the message from all of the branches across one row of the parity check matrix D102 (message u j) the accumulated integrated values D151 (? uj j from j = 1 to d v), is stored in output register 154 .

レジスタ154は、格納している値D151を、値D152として、セレクタ153と演算器156に供給する。レジスタ152に1列分のメッセージD102が積算された値が格納される直前までは、セレクタ153は、レジスタ154から供給された値D152を選択し、レジスタ154に出力し再格納させる。すなわち、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)が積算されるまで、レジスタ154は、前回積算された値を、セレクタ153と演算器156に供給する。 The register 154 supplies the stored value D151 as the value D152 to the selector 153 and the calculator 156. The selector 153 selects the value D152 supplied from the register 154, outputs it to the register 154, and stores it again until the value obtained by integrating the message D102 for one column is stored in the register 152. That is, until the message D102 (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 calculator 156.

一方、レジスタ154から新たな値D152(j=1からdvまでのΣuj)の出力が開始されると、すなわち、レジスタ152に1列分のメッセージD102が積算された積算値(j=1からdvまでのΣuj)が格納された直後、バリアブルノード計算器182においては、メッセージD102(メッセージuj)と同一のメッセージDD102、すなわち、メッセージメモリ104から2回目に読み出されたメッセージujが、入力ポートPD102から1つずつ入力され、そのメッセージDD102が、セレクタ162のm端子に供給される。 On the other hand, upon output of a new value from the register 154 D152 (? Uj j from j = 1 to d v) is started, namely, the integrated value message D102 is integrated for one column in the register 152 (j = 1 Immediately after storing Σu j ) to d v , the variable node calculator 182 stores the same message DD102 as the message D102 (message u j ), that is, the message u read from the message memory 104 for the second time. j is input one by one from the input port PD102, and the message DD102 is supplied to the m terminal of the selector 162.

また、小FIFOメモリ161は、レジスタ154から新たな値D152(j=1からdvまでのΣuj)が出力されるまでの間、メッセージメモリ104から1回目に読み出されたメッセージD102を遅延し、セレクタ162のf端子に供給する。 The small FIFO memory 161 is delayed for a message D102 read from the message memory 104 to first (from j = 1? Uj j to d v) a new value D152 from the register 154 until the output And supplied to the f terminal of the selector 162.

ここで、小FIFOメモリ161が記憶することができるメッセージの数がd1個であるとすると、小FIFOメモリ161は、上述したように、検査行列の列の重みdvの最大値よりも少ない数のメッセージを記憶する容量しか有していないため、レジスタ154に、検査行列の、ある1列に対応するdv個のメッセージD102の積算値(j=1からdvまでのΣuj)が格納され、レジスタ154から出力されるまでの間、小FIFOメモリ161において、その1列に対応するdv個のメッセージD102を遅延することができないことがある。 Here, if the number of messages that can be stored in the small FIFO memory 161 is d 1 , the small FIFO memory 161 is smaller than the maximum value of the column weight d v of the parity check matrix as described above. because only the capacity for storing the number of messages does not have to register 154, the parity check matrix, the integrated value of d v number of messages D102 corresponding to a certain one column (? uj j from j = 1 to d v) is stored, until it is outputted from the register 154, in a small FIFO memory 161, it may not be possible to delay d v number of messages D102 corresponding to the one row.

すなわち、小FIFOメモリ161が記憶することができるメッセージの数d1が、レジスタ152に積算値が格納されるdv個のメッセージD102が入力されるバリアブルノードに対応する検査行列の列の重みdvよりも小である場合には、小FIFOメモリ161では、その列に対応するdv個のメッセージD102のうちの、d1+1個目のメッセージが記憶されるときに、1個目のメッセージが出力されてしまうため、レジスタ154において、小FIFOメモリ161が記憶可能なメッセージの個数d1よりも多いdv個のメッセージD102の積算値が出力されるまでの間、そのdv個のメッセージD102すべてを、小FIFOメモリ161に記憶しておくことができない。 That is, the number d 1 of messages that can be small FIFO memory 161 stores is the column of the check matrix corresponding to the variable nodes d v number of message D102 that integrated value in the register 152 is stored is input weight d In the case where it is smaller than v , in the small FIFO memory 161, when d 1 + 1st message is stored out of d v messages D102 corresponding to the column, the first FIFO memory 161 Since the message is output, until the accumulated value of d v messages D102 larger than the number d 1 of messages that can be stored in the small FIFO memory 161 is output in the register 154, the d v All messages D102 cannot be stored in the small FIFO memory 161.

そこで、制御部184(図17)は、上述したように、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する列の重みdvが、小FIFOメモリ161が記憶可能なメッセージの数d1以下でないときには、メッセージメモリ104から2回目に読み出されたメッセージDD102を選択することをセレクタ162に指示する信号を、制御信号C104として、バリアブルノード計算器182に供給する。 Therefore, as described above, the control unit 184 (FIG. 17) sets the weight d v of the column corresponding to the variable node to which the branch for which the message is sought is connected to the message that the small FIFO memory 161 can store. when not the number d 1 below, a signal for instructing to select a message DD102 that is read from the message memory 104 to the second selector 162, as the control signal C 104, supplied to the variable node calculator 182.

バリアブルノード計算器182において、制御部184からの制御信号C104は、入力ポートP104を介して、セレクタ162に供給される。   In the variable node calculator 182, the control signal C104 from the control unit 184 is supplied to the selector 162 via the input port P104.

セレクタ162は、制御信号C104に従い、端子mに供給される、メッセージメモリ104から2回目に読み出されたメッセージDD102を選択し、値D153として演算器156に供給する。   The selector 162 selects the message DD102 read from the message memory 104 for the second time supplied to the terminal m in accordance with the control signal C104, and supplies the selected message DD102 to the calculator 156 as a value D153.

演算器156は、レジスタ154から供給された積算値D152から、セレクタ162からの値D153(いまの場合、入力ポートPD102からのメッセージDD102)を減算する。すなわち、演算器156では、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)の積算値D152(j=1からdvまでのΣuj)から、求めたい枝からのメッセージuj(j=dvのuj)としてのメッセージD153を減算して、減算値(j=1からdv-1までのΣuj)を求め、演算器157に供給する。 The computing unit 156 subtracts the value D153 from the selector 162 (in this case, the message DD102 from the input port PD102) from the integrated value D152 supplied from the register 154. That is, the message of the calculator 156, the message D102 from all edges over one row of the parity check matrix (? Uj j from j = 1 to d v) integrated value D152 of (message u j) from a desired branch The subtraction value (Σu j from j = 1 to d v −1) is obtained by subtracting the message D153 as u j (j = d v u j ) and supplied to the computing unit 157.

一方、制御部184(図17)は、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ161が記憶可能なメッセージの数d1以下であるときには、小FIFOメモリ161で遅延されたメッセージD102を選択することをセレクタ162に指示する信号を、制御信号C104として、バリアブルノード計算器182に供給する。 On the other hand, the control unit 184 (FIG. 17) determines that the column weight d v of the parity check matrix corresponding to the variable node to which the branch for which the message is to be obtained is connected is the number d of messages that the small FIFO memory 161 can store. When it is 1 or less, a signal for instructing the selector 162 to select the message D102 delayed in the small FIFO memory 161 is supplied to the variable node calculator 182 as the control signal C104.

バリアブルノード計算器182において、制御部184からの制御信号C104は、入力ポートP104を介して、セレクタ162に供給される。   In the variable node calculator 182, the control signal C104 from the control unit 184 is supplied to the selector 162 via the input port P104.

セレクタ162は、制御信号C104に従い、端子fに供給される、小FIFOメモリ161で遅延されたメッセージD102を選択し、値D153として演算器156に供給する。   The selector 162 selects the message D102 delayed by the small FIFO memory 161 supplied to the terminal f in accordance with the control signal C104, and supplies it to the computing unit 156 as a value D153.

ここで、小FIFOメモリ161が記憶することができるメッセージの数d1が、レジスタ152に積算値が格納されるdv個のメッセージD102が入力されるバリアブルノードに対応する検査行列の列の重みdvよりも小でない場合には、レジスタ152において、小FIFOメモリ161が記憶可能なメッセージの個数d1よりも多くないdv個のメッセージD102が積算されるまでの間、そのdv個のメッセージD102すべてを、小FIFOメモリ161に記憶しておくこと、つまり、dv個のメッセージD102が積算されるまでの間、そのdv個のメッセージD102すべてを遅延することができ、その遅延後のメッセージD102を、dv個のメッセージD102の積算が終了した後に出力することができる。 Here, the number d 1 of messages that can be small FIFO memory 161 is stored in the weights of the columns of the check matrix corresponding to the variable nodes d v number of message D102 that integrated value in the register 152 is stored is input If d v is not smaller than, at the register 152, until d v number of messages D102 small FIFO memory 161 is not greater than the number d 1 of storable messages are accumulated, the d v number of messages D102 of all, be stored in a small FIFO memory 161, that is, until d v number of message D102 is integrated, it is possible to delay all its d v number of messages D102, after the delay The message D102 can be output after the integration of the d v messages D102 is completed.

そこで、制御部184(図17)は、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ161が記憶可能なメッセージの数d1以下であるときには、小FIFOメモリ161で遅延されたメッセージD102を選択することをセレクタ162に指示する制御信号C104を、バリアブルノード計算器182のセレクタ162に供給し、これにより、セレクタ162では、小FIFOメモリ161で遅延されたメッセージD102が選択され、値D153として演算器156に供給される。 Therefore, the control unit 184 (FIG. 17) is the weight d v column of the check matrix corresponding to a variable node that branches trying to find a message is connected, the number of messages that can be stored is small FIFO memory 161 d When the value is 1 or less, the control signal C104 for instructing the selector 162 to select the message D102 delayed by the small FIFO memory 161 is supplied to the selector 162 of the variable node calculator 182. The message D102 delayed in the small FIFO memory 161 is selected and supplied to the calculator 156 as a value D153.

演算器156は、レジスタ154から供給された積算値D152から、セレクタ162からの値D153(いまの場合、小FIFOメモリ161で遅延されたメッセージD102)を減算する。すなわち、演算器156では、検査行列の1列に亘る全ての枝からのメッセージD102(メッセージuj)の積算値D152(j=1からdvまでのΣuj)から、求めたい枝からのメッセージuj(j=dvのuj)としてのメッセージD153を減算して、減算値(j=1からdv-1までのΣuj)を求め、演算器157に供給する。 The arithmetic unit 156 subtracts the value D153 from the selector 162 (in this case, the message D102 delayed by the small FIFO memory 161) from the integrated value D152 supplied from the register 154. That is, the message of the calculator 156, the message D102 from all edges over one row of the parity check matrix (? Uj j from j = 1 to d v) integrated value D152 of (message u j) from a desired branch The subtraction value (Σu j from j = 1 to d v −1) is obtained by subtracting the message D153 as u j (j = d v u j ) and supplied to the computing unit 157.

演算器157は、入力ポートP101からの受信データD101と、演算器156からの減算値(j=1からdv-1までのΣuj)とを加算し、その結果得られる加算値をメッセージD103(メッセージvi)として、出力ポートP103から出力する。 The computing unit 157 adds the reception data D101 from the input port P101 and the subtraction value (Σu j from j = 1 to d v −1) from the computing unit 156, and sends the resulting addition value to the message D103. (Message v i ) is output from the output port P103.

以上のように、バリアブルノード計算器182では、式(1)のバリアブルノード演算が行われ、その結果得られるメッセージ(バリアブルノードメッセージ)viが、出力ポートP103から出力される。 As described above, the variable node calculator 182 performs the variable node calculation of Expression (1), and the message (variable node message) v i obtained as a result is output from the output port P103.

図19は、図17のチェックノード計算器183の構成例を示している。   FIG. 19 shows a configuration example of the check node calculator 183 in FIG.

なお、図中、図10のチェックノード計算器103、及び図14のチェックノード計算器173と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。   In the figure, portions corresponding to the check node calculator 103 in FIG. 10 and the check node calculator 173 in FIG. 14 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.

チェックノード計算器183は、データを遅延するための遅延メモリとしての、小FIFOメモリ141及び143と、セレクタ142及び144とを有している。   The check node calculator 183 includes small FIFO memories 141 and 143 and selectors 142 and 144 as delay memories for delaying data.

小FIFOメモリ141は、図10のFIFOメモリ127と同様に、メッセージメモリ104から1回目に読み出されたメッセージD104からLUT121で求められた非線形関数φ(|vi|)の演算結果D123(φ(|vi|))を遅延する。 Similar to the FIFO memory 127 in FIG. 10, the small FIFO memory 141 is a calculation result D123 (φ of the nonlinear function φ (| v i |) obtained by the LUT 121 from the message D104 read from the message memory 104 for the first time. (| v i |)) is delayed.

但し、図10のFIFOメモリ127は、少なくとも、検査行列の行の重みdcの最大値に等しい数のメッセージ(から求められる非線形関数φ(|vi|)の演算結果)を記憶することができる容量を有していたが、小FIFOメモリ141は、検査行列の行の重みdcの最大値よりも少ない数(であって1以上)のメッセージを記憶する容量しか有していない。 However, FIFO memory 127 of Figure 10, at least, (a non-linear function obtained from phi () calculation result of | | v i) number messages equal to the maximum value of the weight d c line of the parity check matrix to store had a capacity to, small FIFO memory 141, has only the capacity to store messages maximum fewer than the weight d c line of the check matrix (1 or a).

したがって、小FIFOメモリ141は、FIFOメモリ127よりも容量が小さいので、規模も小さい。   Therefore, the small FIFO memory 141 has a smaller capacity than the FIFO memory 127 and is therefore smaller in scale.

小FIFOメモリ141は、メッセージメモリ104から1回目に読み出されたメッセージD104から求められた非線形関数φ(|vi|)の演算結果D123を遅延し、セレクタ142のf端子に供給する。 The small FIFO memory 141 delays the operation result D123 of the nonlinear function φ (| v i |) obtained from the message D104 read from the message memory 104 for the first time, and supplies it to the f terminal of the selector 142.

セレクタ142は、入力端子として、f端子とm端子とを有しており、f端子には、上述したように、小FIFOメモリ141で遅延された非線形関数φ(|vi|)の演算結果が供給される。また、セレクタ142のm端子には、メッセージメモリ104から2回目に読み出されたメッセージDD104からLUT135で求められた非線形関数φ(|vi|)の演算結果が供給される。 The selector 142 has an f terminal and an m terminal as input terminals, and the f terminal has a calculation result of the nonlinear function φ (| v i |) delayed by the small FIFO memory 141 as described above. Is supplied. The calculation result of the nonlinear function φ (| v i |) obtained by the LUT 135 from the message DD104 read out from the message memory 104 for the second time is supplied to the m terminal of the selector 142.

さらに、セレクタ142には、制御部184(図17)から制御信号C104が供給されるようになっている。   Further, the control signal C104 is supplied to the selector 142 from the control unit 184 (FIG. 17).

セレクタ142は、制御部184からの制御信号C104に従い、小FIFOメモリ141で遅延された、メッセージから求められた非線形関数φ(|vi|)の演算結果と、メッセージメモリ104から2回目に読み出されたメッセージから求められた非線形関数φ(|vi|)の演算結果とのうちの一方を、チェックノードの演算に用いるメッセージ(から求められた非線形関数φ(|vi|)の演算結果)として選択し、値D127として、演算器126に供給する。 The selector 142 reads the operation result of the nonlinear function φ (| v i |) obtained from the message delayed by the small FIFO memory 141 according to the control signal C104 from the control unit 184, and the second read from the message memory 104. One of the calculation results of the non-linear function φ (| v i |) obtained from the issued message is used to calculate the non-linear function φ (| v i |) obtained from the message (used in the check node calculation) Result) and supply it to the calculator 126 as the value D127.

小FIFOメモリ143は、図10のFIFOメモリ133と同様に、メッセージメモリ104から1回目に読み出されたメッセージD104の符号ビットD121を遅延する。   Similar to the FIFO memory 133 in FIG. 10, the small FIFO memory 143 delays the sign bit D121 of the message D104 read from the message memory 104 for the first time.

但し、図10のFIFOメモリ133は、少なくとも、検査行列の行の重みdcの最大値に等しい数のメッセージ(の符号ビット)を記憶することができる容量を有していたが、小FIFOメモリ143は、検査行列の行の重みdcの最大値よりも少ない数(であって1以上)のメッセージを記憶する容量しか有していない。 However, the FIFO memory 133 in FIG. 10, at least, had a capacity capable of storing the number of messages equal to the maximum value of the weight d c line of the check matrix (the sign bit) of the small FIFO memories 143 has only the capacity to store messages maximum fewer than the weight d c line of the check matrix (1 or a).

したがって、小FIFOメモリ143は、FIFOメモリ133よりも容量が小さいので、規模も小さい。   Therefore, the small FIFO memory 143 has a smaller capacity than the FIFO memory 133 and is therefore smaller in scale.

小FIFOメモリ143は、メッセージメモリ104から1回目に読み出されたメッセージD104の符号ビットD121を遅延し、セレクタ144のf端子に供給する。   The small FIFO memory 143 delays the sign bit D121 of the message D104 read from the message memory 104 for the first time, and supplies it to the f terminal of the selector 144.

セレクタ144は、入力端子として、f端子とm端子とを有しており、f端子には、上述したように、小FIFOメモリ143で遅延された、メッセージメモリ104から1回目に読み出されたメッセージD104の符号ビットが供給される。また、セレクタ142のm端子には、メッセージメモリ104から2回目に読み出されたメッセージDD104の符号ビットが供給される。   The selector 144 has an f terminal and an m terminal as input terminals, and the f terminal is read from the message memory 104 for the first time, delayed by the small FIFO memory 143 as described above. The sign bit of message D104 is supplied. Further, the sign bit of the message DD104 read from the message memory 104 for the second time is supplied to the m terminal of the selector 142.

さらに、セレクタ144には、制御部184(図17)から制御信号C104が供給されるようになっている。   Furthermore, the control signal C104 is supplied to the selector 144 from the control unit 184 (FIG. 17).

セレクタ144は、制御部184からの制御信号C104に従い、小FIFOメモリ143で遅延された符号ビットと、メッセージメモリ104から2回目に読み出されたメッセージの符号ビットとのうちの一方を、チェックノードの演算に用いるメッセージ(の符号ビット)として選択し、値D134として、EXOR回路134に供給する。   In accordance with the control signal C104 from the control unit 184, the selector 144 selects one of the sign bit delayed by the small FIFO memory 143 and the sign bit of the message read from the message memory 104 for the second time as a check node. Is selected as a message (sign bit thereof) to be used for the operation of, and supplied to the EXOR circuit 134 as a value D134.

なお、チェックノード計算器183には、入力ポートP111とPD111の他、入力ポートP114を有しており、制御部184からの制御信号C104は、入力ポートP114を介して、セレクタ142及び144に供給される。   The check node calculator 183 has an input port P114 in addition to the input ports P111 and PD111. The control signal C104 from the control unit 184 is supplied to the selectors 142 and 144 via the input port P114. Is done.

また、制御部184は、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みが、小FIFOメモリ143が記憶可能なメッセージ(から求められたφ(|vi|))の数以下であるとき(このときは、検査行列の行の重みが、小FIFOメモリ143が記憶可能なメッセージ(の符号ビット)の数以下であるときでもある)には、小FIFOメモリ141で遅延されたメッセージD104(から求められたφ(|vi|))を選択することをセレクタ142に指示するとともに、小FIFOメモリ143で遅延されたメッセージ(の符号ビット)を選択することをセレクタ144に指示する信号を、制御信号C104として、チェックノード計算器183に供給する。 In addition, the control unit 184 determines the row weight of the parity check matrix corresponding to the check node to which the branch for which the message is to be obtained is connected from the message that can be stored in the small FIFO memory 143 (φ (| v i |)) or less (in this case, the row weight of the parity check matrix is also less than or equal to the number of messages (sign bits) that can be stored in the small FIFO memory 143). Instructs the selector 142 to select the message D104 delayed from the FIFO memory 141 (determined from φ (| v i |)) and selects the message (the sign bit) delayed from the small FIFO memory 143. A signal for instructing the selector 144 to do so is supplied to the check node calculator 183 as the control signal C104.

さらに、制御部184は、チェックノードに対応する行の重みが、小FIFOメモリ141が記憶可能なメッセージ(から求められたφ(|vi|))の数以下でないとき(このときは、検査行列の行の重みが、小FIFOメモリ143が記憶可能なメッセージ(の符号ビット)の数以下でないときでもある)には、メッセージメモリ104から2回目に読み出されたメッセージDD104(から求められたφ(|vi|))を選択することをセレクタ142に指示するとともに、メッセージメモリ104から2回目に読み出されたメッセージDD104(の符号ビット)を選択することをセレクタ144に指示する信号を、制御信号C104として、チェックノード計算器183に供給する。 Furthermore, the control unit 184 determines that the weight of the row corresponding to the check node is not less than the number of messages that can be stored in the small FIFO memory 141 (φ (| v i |) obtained from) (in this case, the check (Even when the row weight of the matrix is not less than or equal to the number of messages (code bits) that can be stored in the small FIFO memory 143). (φ (| v i |)) is instructed to the selector 142, and a signal to instruct the selector 144 to select the message DD104 (the sign bit) read out from the message memory 104 for the second time. , And supplied to the check node calculator 183 as the control signal C104.

ここで、制御部184は、小FIFOメモリ141で遅延されたメッセージD104のφ(|vi|)を選択することをセレクタ142に指示する(とともに、小FIFOメモリ143で遅延されたメッセージD104の符号ビットを指示することをセレクタ144に指示する)制御信号C104を、チェックノード計算器183に供給する場合、つまり、制御信号C104が、メッセージメモリ104から2回目に読み出されたメッセージDD104のφ(|vi|)を選択することをセレクタ142に指示する信号でない場合には、メッセージメモリ104からのメッセージの読み出しについては、メッセージメモリ104からメッセージを1回だけ読み出す読み出し制御を行う。 Here, the control unit 184 instructs the selector 142 to select φ (| v i |) of the message D104 delayed by the small FIFO memory 141 (as well as the message D104 delayed by the small FIFO memory 143). When the control signal C104 (instructing the selector 144 to instruct the sign bit) is supplied to the check node calculator 183, that is, the control signal C104 is read from the message memory 104 for the second time φ If the signal is not a signal for instructing the selector 142 to select (| v i |), the reading of the message from the message memory 104 is controlled by reading the message from the message memory 104 only once.

したがって、制御部184では、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みが、小FIFOメモリ141が記憶可能なメッセージの数以下でない場合には、図15で説明した、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御が行われるが、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みが、小FIFOメモリ141が記憶可能なメッセージの数以下である場合には、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御は行われず、1回だけ読み出す読み出し制御、すなわち、図15のステップS101及びS102のうちの、ステップS101だけが行われる。   Therefore, in the control unit 184, when the row weight of the check matrix corresponding to the check node to which the branch for which the message is to be obtained is connected is not less than the number of messages that can be stored in the small FIFO memory 141, The readout control for reading the same message twice from the message memory 104 described in 15 is performed, but the weight of the row of the check matrix corresponding to the check node to which the branch for which the message is requested is connected is small FIFO. When the number of messages that can be stored in the memory 141 is less than or equal to the number of messages that can be stored, the read control for reading the same message twice from the message memory 104 is not performed, and the read control for reading only once, that is, the steps S101 and S102 in FIG. Of these, only step S101 is performed.

以上のように構成されるチェックノード計算器183は、入力ポートP111とPD111それぞれから入力されるメッセージを必要に応じて用いて、式(7)のチェックノード演算を行い、その結果得られるメッセージを、出力ポートP112から出力する。   The check node calculator 183 configured as described above performs the check node calculation of Expression (7) using the messages input from the input ports P111 and PD111 as necessary, and obtains the message obtained as a result. And output from the output port P112.

すなわち、入力ポートP111には、メッセージメモリ104から読み出されたメッセージD104(バリアブルノードメッセージuj)が供給される。 That is, the message D104 (variable node message u j ) read from the message memory 104 is supplied to the input port P111.

そして、チェックノード計算器183では、検査行列の各行に対応するバリアブルノードからのメッセージD104(メッセージvi)が入力ポートP111から1つずつ入力され、その最上位ビットを除く下位ビット、つまり、メッセージD104の絶対値D122(|vi|)が、LUT121に供給されるとともに、最上位ビット、つまりメッセージD104の符号ビットD121が、EXOR回路129と小FIFOメモリ143に供給される。 Then, in the check node calculator 183, the message D104 (message v i ) from the variable node corresponding to each row of the check matrix is inputted one by one from the input port P111, and the lower bits excluding the most significant bit, that is, the message The absolute value D122 (| v i |) of D104 is supplied to the LUT 121, and the most significant bit, that is, the sign bit D121 of the message D104 is supplied to the EXOR circuit 129 and the small FIFO memory 143.

LUT121は、絶対値D122(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果D123(φ(|vi|))を読み出し、演算器122と小FIFO141に供給する。 The LUT 121 reads the operation result D123 (φ (| v i |)) obtained by performing the operation of the nonlinear function φ (| v i |) using the absolute value D122 (| v i |) as an argument, The data is supplied to the FIFO 141.

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

検査行列の1行に亘るメッセージD104が1つずつ読み込まれ、レジスタ123に1行分の演算結果D123が積算された積算値が格納された場合、セレクタ124は、レジスタ123に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)が積算された積算値D124(i=1からi=dcまでのΣφ(|vi|))を選択し、積算値D125として、レジスタ125に出力して格納させる。レジスタ125は、格納している積算値D125を、値D126として、セレクタ124と演算器126に供給する。 When the message D104 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 selector 124 stores the value stored in the register 123. , i.e., phi obtained from the messages D104 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) from the integrated value D124 (i = 1, which is accumulated up to i = d c Σφ (| v i |)) is selected and output to the register 125 for storage as the integrated value D125. The register 125 supplies the stored integrated value D125 to the selector 124 and the calculator 126 as a value D126.

レジスタ123に1行分の演算結果D123が積算された積算値が格納される直前までは、セレクタ124は、レジスタ125から供給された値D126を選択し、レジスタ125に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ125は、前回積算されたφ(|vi|)の積算値を、セレクタ124と演算器126に供給する。 The selector 124 selects the value D126 supplied from the register 125, outputs it to the register 125, and stores it again until the integrated value obtained by integrating the operation results D123 for one row is stored in the register 123. That is, until φ (| v i |) obtained from the message D104 (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 calculator 126.

一方、レジスタ125から新たな値D126(i=1からi=dcまでのΣφ(|vi|))の出力が開始されると、すなわち、レジスタ125に1行分の演算結果D123が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納された直後、チェックノード計算器183において、メッセージD104(メッセージvi)と同一のメッセージDD104、すなわち、メッセージメモリ104から2回目に読み出されたメッセージviが、入力ポートPD111から1つずつ入力され、そのメッセージDD104のうちのその最上位ビットを除く下位ビット、つまり、メッセージDD104の絶対値(|vi|)が、LUT135に供給されるとともに、最上位ビット、つまりメッセージDD104の符号ビットが、セレクタ144のm端子に供給される。 On the other hand, (Sigma] [phi of i = 1 through i = d c (| v i |)) a new value D126 from the register 125 when the output of the start, that is, the operation result D123 is integrated for one row in the register 125 have been (from i = 1 to i = d c Σφ (| v i |)) integrated value immediately after the stored, in the check node calculator 183, messages D104 (message v i) the same messages DD104, i.e. The message v i read from the message memory 104 for the second time is input one by one from the input port PD111, and the lower-order bits of the message DD104 excluding the most significant bit, that is, the absolute value of the message DD104 ( | v i |) is supplied to the LUT 135, and the most significant bit, that is, the sign bit of the message DD 104 is supplied to the m terminal of the selector 144.

LUT135は、メッセージDD104の絶対値(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果(φ(|vi|))を読み出し、セレクタ142のm端子に供給する。 The LUT 135 reads the operation result (φ (| v i |)) obtained by performing the operation of the nonlinear function φ (| v i |) using the absolute value (| v i |) of the message DD104 as an argument, and m of the selector 142 Supply to the terminal.

また、小FIFOメモリ141は、レジスタ125から新たな値D126(i=1からdcまでのΣφ(|vi|))が出力されるまでの間、LUT121からのメッセージD104の演算結果D123(φ(|vi|))を遅延し、セレクタ142のf端子に供給する。 The small FIFO memory 141, a new value from the register 125 D126 (from i = 1 Sigma] [phi to d c (| v i |) ) until it is output, operation results of the messages D104 from LUT 121 D123 ( φ (| v i |)) is delayed and supplied to the f terminal of the selector 142.

ここで、小FIFOメモリ141が記憶することができるメッセージ(のφ(|vi|))の数がd2個であるとすると、小FIFOメモリ141は、上述したように、検査行列の行の重みdcの最大値よりも少ない数のメッセージ(のφ(|vi|))を記憶する容量しか有していないため、レジスタ125に、検査行列の、ある1行に対応するdc個のメッセージD104のφ(|vi|)の積算値(i=1からdcまでのΣφ(|vi|))が格納され、レジスタ125から出力されるまでの間、小FIFOメモリ141において、その1行に対応するdc個のメッセージD104のφ(|vi|)を遅延することができないことがある。 Here, if the number of messages (φ (| v i |)) that can be stored in the small FIFO memory 141 is d 2 , the small FIFO memory 141 stores the rows of the parity check matrix as described above. the weight d maximum number of messages (of φ (| v i |)) less than the c for only has capacity to store, in the register 125, the parity check matrix, d c corresponding to a certain one line The accumulated value of φ (| v i |) of each message D104 (Σφ (| v i |) from i = 1 to d c ) is stored and output from the register 125 until the small FIFO memory 141 is output. in, phi of d c number of messages D104 corresponding to the one line may not be able to delay (| | v i).

すなわち、小FIFOメモリ141が記憶することができるメッセージの数d2が、レジスタ125にφ(|vi|)の積算値が格納されるdc個のメッセージD102が入力されるチェックノードに対応する検査行列の行の重みdcよりも小である場合には、小FIFOメモリ141では、その行に対応するdc個のメッセージD104のうちの、d2+1個目のメッセージのφ(|vi|)が記憶されるときに、1個目のメッセージのφ(|vi|)が出力されてしまうため、レジスタ125において、小FIFOメモリ141が記憶可能なメッセージの個数d2よりも多いdc個のメッセージD104のφ(|vi|)が積算されるまでの間、そのdc個のメッセージD104のφ(|vi|)すべてを、小FIFOメモリ141に記憶しておくことができない。 That is, the number d 2 of messages that can be stored is small FIFO memory 141, the register 125 φ (| v i |) corresponding to the check node d c pieces of message D102 that integrated value is stored in is input If the weight is smaller than the row weight d c of the parity check matrix to be checked, the small FIFO memory 141 stores φ 2 (d 2 +1) message out of the d c messages D104 corresponding to that row. | v i |) is stored, φ (| v i |) of the first message is output. Therefore, in the register 125, the number of messages d 2 that can be stored in the small FIFO memory 141 is determined. Until φ (| v i |) of many d c messages D104 is accumulated, all φ (| v i |) of the d c messages D104 are stored in the small FIFO memory 141. I can't leave.

そこで、制御部184(図17)は、上述したように、メッセージを求めようとしている枝が接続しているチェックノードに対応する行の重みdcが、小FIFOメモリ141が記憶可能なメッセージの数d2以下でないときには、メッセージメモリ104から2回目に読み出されたメッセージDD104から求められたφ(|vi|)を選択することをセレクタ142に指示する信号を、制御信号C104として、チェックノード計算器183に供給する。 Therefore, the control unit 184 (FIG. 17), as described above, the weight d c in the row corresponding to the check node branches trying to find a message is connected, a small FIFO memory 141 is possible messages stored when not the number d 2 or less, phi obtained from the message DD104 that is read from the message memory 104 to the second (| v i |) a signal for instructing to select a selector 142, as the control signal C 104, checks This is supplied to the node calculator 183.

チェックノード計算器183において、制御部184からの制御信号C104は、入力ポートP114を介して、セレクタ142に供給される。   In the check node calculator 183, the control signal C104 from the control unit 184 is supplied to the selector 142 via the input port P114.

セレクタ142は、制御信号C104に従い、端子mに供給される、メッセージメモリ104から2回目に読み出されたメッセージDD102からLUT135で求められたφ(|vi|)を選択し、値D127として演算器126に供給する。 In accordance with the control signal C104, the selector 142 selects φ (| v i |) obtained by the LUT 135 from the message DD102 read from the message memory 104 for the second time supplied to the terminal m, and calculates it as a value D127. The device 126 is supplied.

一方、制御部184(図17)は、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みdcが、小FIFOメモリ141が記憶可能なメッセージの数d2以下であるときには、小FIFOメモリ141で遅延されたメッセージD104のφ(|vi|)を選択することをセレクタ142に指示する信号を、制御信号C104として、チェックノード計算器183に供給する。 On the other hand, the control unit 184 (FIG. 17) determines that the weight d c of the row of the check matrix corresponding to the check node to which the branch for which the message is to be obtained is connected is the number d of messages that the small FIFO memory 141 can store. When it is 2 or less, a signal instructing the selector 142 to select φ (| v i |) of the message D104 delayed in the small FIFO memory 141 is supplied to the check node calculator 183 as the control signal C104. .

チェックノード計算器183において、制御部184からの制御信号C104は、入力ポートP114を介して、セレクタ142に供給される。   In the check node calculator 183, the control signal C104 from the control unit 184 is supplied to the selector 142 via the input port P114.

セレクタ142は、制御信号C104に従い、端子fに供給される、小FIFOメモリ141で遅延されたメッセージD104のφ(|vi|)を選択し、値D127として演算器156に供給する。 The selector 142 selects φ (| v i |) of the message D104 delayed by the small FIFO memory 141 and supplied to the terminal f in accordance with the control signal C104, and supplies the selected value D127 to the calculator 156.

ここで、小FIFOメモリ141が記憶することができるメッセージの数d2が、レジスタ125に積算値が格納されるdc個のメッセージD104が入力されるチェックノードに対応する検査行列の行の重みdcよりも小でない場合には、レジスタ125において、小FIFOメモリ141が記憶可能なメッセージの個数d2よりも多くないdc個のメッセージD104のφ(|vi|)の積算値(i=1からdcまでのΣφ(|vi|))が出力されるまでの間、そのdc個のメッセージD104のφ(|vi|)すべてを、小FIFOメモリ141に記憶しておくこと、つまり、dc個のメッセージD104のφ(|vi|)が積算されるまでの間、そのdc個のメッセージD104のφ(|vi|)すべてを遅延することができ、その遅延後のメッセージD104のφ(|vi|)を、dc個のメッセージD104のφ(|vi|)の積算が終了した後に出力することができる。 Here, the number d 2 of messages that can be stored is small FIFO memory 141, the weight of the rows of the check matrix corresponding to the check nodes d c pieces of message D104 that integrated value in the register 125 is stored is input If it is not smaller than d c, the integrated value (i) of φ (| v i |) of d c messages D104 not more than the number d 2 of messages that can be stored in the small FIFO memory 141 in the register 125. = 1 to d c until Σφ (| v i |)) is output, all φ (| v i |) of the d c messages D104 are stored in the small FIFO memory 141. That is, until φ (| v i |) of d c messages D104 is accumulated, all φ (| v i |) of the d c messages D104 can be delayed. phi messages D104 after the delay (| v i |) a, d c number of the messages D104 of φ (| v i |) integrated is to be output after the completion of That.

そこで、制御部184(図17)は、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みdcが、小FIFOメモリ141が記憶可能なメッセージの数d2以下であるときには、小FIFOメモリ141で遅延されたメッセージD104のφ(|vi|)を選択することをセレクタ162に指示する制御信号C104を、チェックノード計算器183のセレクタ142に供給し、これにより、セレクタ142では、小FIFOメモリ141で遅延されたメッセージD104のφ(|vi|)が選択され、値D127として演算器126に供給される。 Therefore, the control unit 184 (FIG. 17) is the weight d c line of the check matrix corresponding to the check node branches trying to find a message is connected, the number of messages that can be stored is small FIFO memory 141 d When the value is 2 or less, the control signal C104 for instructing the selector 162 to select φ (| v i |) of the message D104 delayed by the small FIFO memory 141 is supplied to the selector 142 of the check node calculator 183. As a result, the selector 142 selects φ (| v i |) of the message D104 delayed by the small FIFO memory 141 and supplies it to the calculator 126 as the value D127.

演算器126は、レジスタ125から供給された値D126から、セレクタ142からの値D127(φ(|vi|))を減算し、減算結果を、減算値D128としてLUT128に供給する。すなわち、演算器126は、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)から求められたφ(|vi|)の積算値(i=1からi=dcまでのΣφ(|vi|))から、求めたい枝からのメッセージvi(i=dcのvi)から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc-1までのΣφ(|vi|))を減算値D128としてLUT128に供給する。 The arithmetic unit 126 subtracts the value D127 (φ (| v i |)) from the selector 142 from the value D126 supplied from the register 125, and supplies the subtraction result to the LUT 128 as the subtraction value D128. That is, the arithmetic unit 126, phi obtained from the messages D104 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) integrated value from (i = 1 to i = d c Σφ (| v i |)) of the desired branch, φ (| v i |) obtained from the message v i (i = d c v i ) from the branch to be obtained is subtracted, and the subtraction value (i = Σφ (| v i |)) from 1 to i = d c −1) is supplied to the LUT 128 as a subtraction value D128.

LUT128は、演算器126からの減算値D128(i=1からi=dc-1までのΣφ(|vi|))を引数として、逆関数φ-1(Σφ(|vi|))の演算を行った演算結果D129(φ-1(Σφ(|vi|)))を出力する。 The LUT 128 uses the subtraction value D128 (Σφ (| v i |) from i = 1 to i = d c −1) as an argument to the inverse function φ −1 (Σφ (| v i |)). The calculation result D129 (φ −1 (Σφ (| v i |))) obtained by performing the above calculation is output.

一方、EXOR回路129は、レジスタ130に格納されている値D131と符号ビットD121との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、乗算結果D130をレジスタ130に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された場合、レジスタ130はリセットされる。   On the other hand, the EXOR circuit 129 calculates the exclusive OR of the value D131 stored in the register 130 and the sign bit D121, thereby multiplying the sign bits, and re-stores the multiplication result D130 in the register 130. . When the sign bit D121 of the message D104 from all branches over one row of the check matrix is multiplied, the register 130 is reset.

検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納された場合、セレクタ131は、レジスタ130に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された値D131(i=1からi=dcまでのΠsign(vi))を選択し、値D132としてレジスタ132に出力して格納させる。レジスタ132は、格納している値D132を、値D133としてセレクタ131とEXOR回路134に供給する。 If (Paisign from i = 1 to d c (v i)) multiplication result D130 to the sign bit D121 is multiplied by the message D104 from all of the branches across one line of the parity check matrix stored in the register 130, the selector 131, Paisign the value stored in the register 130, i.e., the value D131 (i = 1 the sign bit D121 of the message D104 is multiplied from all of the branches across one line of the parity check matrix until i = d c (v i )) is selected and output to the register 132 as the value D132 for storage. The register 132 supplies the stored value D132 to the selector 131 and the EXOR circuit 134 as the value D133.

検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納される直前までは、セレクタ131は、レジスタ132から供給された値D133を選択し、レジスタ132に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD104(メッセージvi)の符号ビットD121が乗算されるまで、レジスタ132は、前回格納した値を、セレクタ131とEXOR回路134に供給する。 It is (from i = 1 Πsign to d c (v i)) multiplication result D130 to the sign bit D121 is multiplied by the message D104 from all of the branches across one line of the parity check matrix until just before is stored in the register 130 The selector 131 selects the value D133 supplied from the register 132, outputs it to the register 132, and stores it again. That is, 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 D104 (message v i ) from all branches over one row of the check matrix is multiplied. .

レジスタ132から新たな値D133(i=1からi=dcまでのΠsign(vi))がEXOR回路134に供給されたとき、すなわち、レジスタ130に1行に亘る全ての枝からのメッセージD104の符号ビットD121が乗算された値D131(i=1からi=dcまでのΠsign(vi))が格納されたとき、上述したように、レジスタ125には、1行分の演算結果D123が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納される。 When a new value from the register 132 D133 which (Paisign of i = 1 through i = d c (v i) ) is supplied to the EXOR circuit 134, i.e., messages from all of the branches across one line to the register 130 D104 when (Paisign of i = 1 through i = d c (v i) ) of the sign bits D121 is multiplied value D131 is stored, as described above, the register 125, one row of the result D123 There integrating integrated values (Sigma] [phi of i = 1 through i = d c (| v i |)) is stored.

レジスタ125に1行分の演算結果D123が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納されると、上述したように、チェックノード計算器183において、メッセージD104(メッセージvi)と同一のメッセージDD104、すなわち、メッセージメモリ104から2回目に読み出されたメッセージviが、入力ポートPD104から1つずつ入力され、そのメッセージDD104のうちのその最上位ビットを除く下位ビット、つまり、メッセージDD104の絶対値(|vi|)が、LUT135に供給されるとともに、最上位ビット、つまりメッセージDD104の符号ビットが、セレクタ144のm端子に供給される。 Integration value calculation result D123 is integrated for one row in the register 125 (Sigma] [phi of i = 1 through i = d c (| v i |)) When is stored, as described above, the check node calculator At 183, the same message DD104 as the message D104 (message v i ), that is, the message v i read from the message memory 104 for the second time is input one by one from the input port PD104, and the message DD104 The low-order bits excluding the most significant bit, that is, the absolute value (| v i |) of the message DD104 is supplied to the LUT 135, and the most significant bit, that is, the sign bit of the message DD104 is supplied to the m terminal of the selector 144. Is done.

また、小FIFOメモリ143は、レジスタ132から新たな値D133(i=1からi=dcまでのΠsign(vi))が出力されるまでの間、メッセージメモリ104から1回目に読み出されたメッセージD104の符号ビットD121を遅延し、セレクタ144のf端子に供給する。 The small FIFO memory 143, between (from i = 1 i = Πsign to d c (v i)) a new value D133 from the register 132 until the output is read out from the message memory 104 to the first The code bit D121 of the received message D104 is delayed and supplied to the f terminal of the selector 144.

ここで、小FIFOメモリ143が記憶することができるメッセージ(の符号ビット)の数が、小FIFOメモリ141と同一のd2個であるとすると、小FIFOメモリ143は、上述したように、検査行列の行の重みdcの最大値よりも少ない数のメッセージ(の符号ビット)を記憶する容量しか有していないため、レジスタ132に、検査行列の、ある1行に対応するdc個のメッセージD104の符号ビットD121の乗算結果(i=1からdcまでのΠsign(vi))が格納され、レジスタ132から出力されるまでの間、小FIFOメモリ143において、その1行に対応するdc個のメッセージD104の符号ビットD121を遅延することができないことがある。 Here, if the number of messages (the sign bits) that can be stored in the small FIFO memory 143 is d 2 which is the same as that of the small FIFO memory 141, the small FIFO memory 143 checks as described above. Since there is only a capacity to store a smaller number of messages (sign bits of) than the maximum value of the matrix row weights d c , the register 132 has d c corresponding to one row of the check matrix. is stored (Πsign (v i) from i = 1 to d c) multiplying the result of the sign bits D121 of the messages D104, until it is outputted from the register 132, in a small FIFO memory 143, corresponding to the one line It may not be possible to delay the sign bit D121 of d c messages D104.

すなわち、小FIFOメモリ143が記憶することができるメッセージの数d2が、レジスタ132に符号ビットD121の乗算結果が格納されるdc個のメッセージD102が入力されるチェックノードに対応する検査行列の行の重みdcよりも小である場合には、小FIFOメモリ143では、その行に対応するdc個のメッセージD104のうちの、d2+1個目のメッセージの符号ビットD121が記憶されるときに、1個目のメッセージの符号ビットD121が出力されてしまうため、レジスタ132において、小FIFOメモリ143が記憶可能なメッセージの個数d2よりも多いdc個のメッセージD104の符号ビットD121が格納されるまでの間、そのdc個のメッセージD104の符号ビットD121すべてを、小FIFOメモリ143に記憶しておくことができない。 That is, the number d 2 of messages that can be small FIFO memory 143 is stored by, the sign bit D121 to the register 132 the multiplication result of the check matrix corresponding to the check node to which d c pieces of message D102 to be stored is input If it is smaller than the weight d c line, in a small FIFO memory 143, of the d c number of messages D104 corresponding to that row, the sign bit D121 of d 2 +1 th message is stored in Rutoki, because the sign bits D121 of one second message from being output, the register 132, the sign bit of the message D104 of greater d c number than the number d 2 messages capable of storing a small FIFO memory 143 D121 There until it is stored, the code bit D121 all of its d c number of messages D104, can not be stored in a small FIFO memory 143.

そこで、制御部184(図17)は、上述したように、メッセージを求めようとしている枝が接続しているチェックノードに対応する行の重みdcが、小FIFOメモリ143が記憶可能なメッセージの数d2以下でないとき(このときは、行の重みdcが、小FIFOメモリ141が記憶可能なメッセージの数d2以下でないときでもある)には、メッセージメモリ104から2回目に読み出されたメッセージDD104の符号ビットを選択することをセレクタ144に指示する信号を、制御信号C104として、チェックノード計算器183に供給する。 Therefore, the control unit 184 (FIG. 17), as described above, the weight d c in the row corresponding to the check node branches trying to find a message is connected, a small FIFO memory 143 is possible messages stored (in this case, the weights d c rows, also when a small FIFO memory 141 is not the number d 2 the following messages can be stored) when not the number d 2 below is read from the message memory 104 to the second A signal for instructing the selector 144 to select the sign bit of the message DD104 is supplied to the check node calculator 183 as the control signal C104.

チェックノード計算器183において、制御部184からの制御信号C104は、入力ポートP114を介して、セレクタ144に供給される。   In the check node calculator 183, the control signal C104 from the control unit 184 is supplied to the selector 144 via the input port P114.

セレクタ144は、制御信号C104に従い、端子mに供給される、メッセージメモリ104から2回目に読み出されたメッセージDD102の符号ビットを選択し、値D134としてEXOR回路134に供給する。   The selector 144 selects the sign bit of the message DD102 read from the message memory 104 for the second time supplied to the terminal m in accordance with the control signal C104, and supplies it to the EXOR circuit 134 as a value D134.

一方、制御部184(図17)は、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みdcが、小FIFOメモリ143が記憶可能なメッセージの数d2以下であるときには、小FIFOメモリ143で遅延されたメッセージD104の符号ビットを選択することをセレクタ142に指示する信号を、制御信号C104として、チェックノード計算器183に供給する。 On the other hand, the control unit 184 (FIG. 17) is the weight d c line of the check matrix corresponding to the check node branches trying to find a message is connected, the number of messages that can be stored is small FIFO memory 143 d When it is 2 or less, a signal for instructing the selector 142 to select the sign bit of the message D104 delayed by the small FIFO memory 143 is supplied to the check node calculator 183 as the control signal C104.

チェックノード計算器183において、制御部184からの制御信号C104は、入力ポートP114を介して、セレクタ144に供給される。   In the check node calculator 183, the control signal C104 from the control unit 184 is supplied to the selector 144 via the input port P114.

セレクタ144は、制御信号C104に従い、端子fに供給される、小FIFOメモリ143で遅延されたメッセージD104の符号ビットを選択し、値D134としてEXOR回路134に供給する。   The selector 144 selects the sign bit of the message D104, which is supplied to the terminal f and delayed by the small FIFO memory 143, according to the control signal C104, and supplies it to the EXOR circuit 134 as the value D134.

EXOR回路134は、レジスタ132から供給された値D133と、セレクタ144からの符号ビットD134との排他的論理和を演算することにより、値D133を、符号ビットD134で除算し、除算結果を除算値D135として出力する。すなわち、EXOR回路134は、検査行列の1行に亘る全ての枝からのメッセージD104の符号ビットD121の乗算値D133(i=1からi=dcまでのΠsign(vi))を、求めたい枝からのメッセージviとしてのメッセージの符号ビットD134(i=dcのsign(vi))で除算して、その除算値(i=1からi=dc-1までのΠsign(vi))を除算値D135として出力する。 The EXOR circuit 134 calculates the exclusive OR of the value D133 supplied from the register 132 and the sign bit D134 from the selector 144, divides the value D133 by the sign bit D134, and divides the result of the division into a division value. Output as D135. That, EXOR circuit 134, (Paisign of i = 1 through i = d c (v i) ) multiplied value D133 of the sign bit D121 of the message D104 from all of the branches across one line of the parity check matrix, to be obtained is divided by the sign bit of the message as the message v i from branch D134 (i = d c of sign (v i)), Πsign of the division value from (i = 1 to i = d c -1 (v i )) Is output as the division value D135.

そして、チェックノード計算器183では、LUT128から出力された演算結果D129を下位ビットとするとともに、EXOR回路134から出力された除算値D135を最上位ビット(符号ビット)とするビット列がメッセージD105(メッセージuj)として、出力ポートP112から出力される。 Then, in the check node calculator 183, the bit string having the operation result D129 output from the LUT 128 as the lower bit and the division value D135 output from the EXOR circuit 134 as the most significant bit (sign bit) is the message D105 (message u j ) is output from the output port P112.

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

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

次に、図20のフローチャートを参照して、図17の制御部184が制御信号C104により、セレクタ142及び144(図19)、並びにセレクタ162(図18)を制御するセレクタ制御の処理について説明する。   Next, a selector control process in which the control unit 184 in FIG. 17 controls the selectors 142 and 144 (FIG. 19) and the selector 162 (FIG. 18) by the control signal C104 will be described with reference to the flowchart in FIG. .

なお、ここでは、説明を簡単にするために、小FIFOメモリ141及び143(図19)、並びに小FIFOメモリ161(図18)が記憶可能なメッセージの個数(以下、適宜、記憶可能個数という)は、すべて同一のd個であるとする。但し、小FIFOメモリ141及び143(図19)と、小FIFOメモリ161(図18)とが記憶可能なメッセージの個数は、異なっていても良い。   Here, for simplicity of explanation, the number of messages that can be stored in the small FIFO memories 141 and 143 (FIG. 19) and the small FIFO memory 161 (FIG. 18) (hereinafter referred to as the number that can be stored as appropriate). Are all the same d. However, the number of messages that can be stored in the small FIFO memories 141 and 143 (FIG. 19) and the small FIFO memory 161 (FIG. 18) may be different.

ステップS121において、制御部184は、メッセージを求めようとして注目しているノード(注目ノード)に対応する検査行列の重み(注目ノードがバリアブルノードである場合には、そのバリアブルノードに対応する列の重みであり、注目ノードがチェックノードである場合には、そのチェックノードに対応する行の重み)が、記憶可能個数dよりも大であるかどうかを判定する。   In step S121, the control unit 184 determines the weight of the check matrix corresponding to the node (attention node) that is focused on for the message (if the attention node is a variable node, the column of the column corresponding to the variable node). If the node of interest is a check node, it is determined whether or not the weight of the row corresponding to the check node is larger than the storable number d.

ステップS121において、注目ノードに対応する検査行列の重みが、記憶可能個数dより大でないと判定された場合、すなわち、注目ノードに接続している枝に対応する出力メッセージを求めるのに用いられる入力メッセージの個数が、記憶可能個数d以下である場合、処理は、ステップS122に進み、制御部184は、FIFOメモリの出力、すなわち、例えば、図18のバリアブルノード計算器182については、小FIFOメモリ161が出力するメッセージを、図19のチェックノード計算器183については、小FIFOメモリ141が出力するメッセージのφ(|vi|)と、小FIFOメモリ143が出力するメッセージの符号ビットとを、それぞれ選択することを指示する制御信号C104を出力し、処理は、ステップS121に戻る。 If it is determined in step S121 that the weight of the parity check matrix corresponding to the node of interest is not greater than the storable number d, that is, an input used to obtain an output message corresponding to the branch connected to the node of interest. When the number of messages is less than or equal to the storable number d, the process proceeds to step S122, and the control unit 184 outputs the output of the FIFO memory, that is, for example, the small FIFO memory for the variable node calculator 182 of FIG. the message 161 is output, the check node calculator 183 of FIG. 19, phi messages output by small FIFO memory 141 (| v i |) and, the sign bit of the message to be output is small FIFO memory 143, A control signal C104 instructing selection is output, and the process returns to step S121.

この場合、図18のバリアブルノード計算器182では、セレクタ162において、制御信号C104に従い、小FIFOメモリ161が出力するメッセージが選択され、演算器156に供給される。   In this case, in the variable node calculator 182 of FIG. 18, the message output from the small FIFO memory 161 is selected by the selector 162 in accordance with the control signal C104 and supplied to the calculator 156.

また、図19のチェックノード計算器183では、セレクタ142において、制御信号C104に従い、小FIFOメモリ141が出力するメッセージのφ(|vi|)が選択され、演算器126に供給されるとともに、セレクタ144において、制御信号C104に従い、小FIFOメモリ143が出力するメッセージの符号ビットが選択され、EXOR回路134に供給される。 In the check node calculator 183 of FIG. 19, the selector 142 selects φ (| v i |) of the message output from the small FIFO memory 141 according to the control signal C104 and supplies it to the calculator 126. In the selector 144, the sign bit of the message output from the small FIFO memory 143 is selected according to the control signal C104 and supplied to the EXOR circuit 134.

なお、入力メッセージの個数が、記憶可能個数d以下である場合、制御部184では、上述したように、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御(図15のステップS101及びS102の両方)は行われず、1回だけ読み出す読み出し制御(図15のステップS101)が行われる。   When the number of input messages is less than or equal to the storable number d, the control unit 184 reads out the same message twice from the message memory 104 as described above (both steps S101 and S102 in FIG. 15). ) Is not performed, and readout control (step S101 in FIG. 15) for reading only once is performed.

一方、ステップS121において、注目ノードに対応する検査行列の重みが、記憶可能個数dより大であると判定された場合、すなわち、注目ノードに接続している枝に対応する出力メッセージを求めるのに用いられる入力メッセージの個数が、記憶可能個数dを越えている場合、処理は、ステップS123に進み、制御部184は、メッセージメモリ104(図17)から2回目に読み出されたメッセージ(データ)、すなわち、例えば、図18のバリアブルノード計算器182については、メッセージメモリ104から2回目に読み出されたメッセージDD102を、図19のチェックノード計算器183については、メッセージメモリ104から2回目に読み出されたメッセージDD102からLUT135で求められたφ(|vi|)と、メッセージメモリ104から2回目に読み出されたメッセージDD102の符号ビットとを、それぞれ選択することを指示する制御信号C104を出力し、処理は、ステップS121に戻る。 On the other hand, when it is determined in step S121 that the weight of the check matrix corresponding to the node of interest is larger than the storable number d, that is, to obtain an output message corresponding to the branch connected to the node of interest. If the number of input messages used exceeds the storable number d, the process proceeds to step S123, and the control unit 184 reads the message (data) read out from the message memory 104 (FIG. 17) for the second time. That is, for example, the variable node calculator 182 in FIG. 18 reads the message DD102 read from the message memory 104 a second time, and the check node calculator 183 in FIG. Φ (| v i |) obtained by the LUT 135 from the issued message DD102 and the message memory 104 , The control signal C104 instructing to select each of the sign bits of the message DD102 read for the second time is output, and the process returns to step S121.

すなわち、この場合、制御部184では、上述したように、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御(図15のステップS101及びS102の両方)が行われ、これにより、メッセージメモリ104からは、同一のメッセージが2回読み出される。   That is, in this case, as described above, the control unit 184 performs read control (both steps S101 and S102 in FIG. 15) for reading the same message twice from the message memory 104. Reads the same message twice.

この場合、図18のバリアブルノード計算器182では、セレクタ162において、制御信号C104に従い、メッセージメモリ104から2回目に読み出されたメッセージDD102が選択され、演算器156に供給される。   In this case, in the variable node calculator 182 of FIG. 18, the selector 162 selects the message DD102 read out from the message memory 104 for the second time in accordance with the control signal C104 and supplies it to the calculator 156.

また、図19のチェックノード計算器183では、セレクタ142において、制御信号C104に従い、メッセージメモリ104から2回目に読み出されたメッセージDD102からLUT135で求められたφ(|vi|)が選択され、演算器126に供給されるとともに、セレクタ144において、制御信号C104に従い、メッセージメモリ104から2回目に読み出されたメッセージDD102の符号ビットが選択され、EXOR回路134に供給される。 Further, in the check node calculator 183 of FIG. 19, the selector 142 selects φ (| v i |) obtained by the LUT 135 from the message DD102 read from the message memory 104 for the second time in accordance with the control signal C104. The code bit of the message DD102 read out from the message memory 104 for the second time is selected by the selector 144 in accordance with the control signal C104 and supplied to the EXOR circuit 134.

以上のように、遅延メモリとして、検査行列の重みの最大値よりも少ない数のメッセージを記憶する小FIFOメモリ141及び143(図19)、並びに小FIFOメモリ161(図18)を設けるようにしたので、少なくとも検査行列の重みの最大値に等しい数のメッセージを記憶するFIFOメモリ127及び133(図10)、並びにFIFOメモリ155(図9)を設ける場合に比較して、復号装置の規模を削減することができる。   As described above, the small FIFO memories 141 and 143 (FIG. 19) and the small FIFO memory 161 (FIG. 18) for storing a smaller number of messages than the maximum value of the check matrix weight are provided as the delay memory. Therefore, the scale of the decoding apparatus is reduced as compared with the case where the FIFO memories 127 and 133 (FIG. 10) and the FIFO memory 155 (FIG. 9) storing at least the number of messages equal to the maximum value of the check matrix weight are provided. can do.

さらに、注目ノードに対応する検査行列の重みが、記憶可能個数d以下である場合(記憶可能個数dより大でない場合)には、FIFOメモリの出力を選択して、ノード(バリアブルノード、チェックノード)の演算に用いるので、少なくとも検査行列の重みの最大値に等しい数のメッセージを記憶するFIFOメモリ127及び133(図10)、並びにFIFOメモリ155(図9)を有する図8の復号装置と同様の時間でメッセージの読み書きを行うことができる。したがって、図8の復号装置と同様の回数だけ繰り返し復号を行うことができるので(1回の復号に要する時間が図8の復号装置と同様となるので)、復号性能が劣化することを防止(抑制)することができる。   Furthermore, if the weight of the parity check matrix corresponding to the node of interest is less than or equal to the storable number d (if it is not greater than the storable number d), the output of the FIFO memory is selected and the node (variable node, check node) 8), the FIFO memory 127 and 133 (FIG. 10) storing at least the number of messages equal to the maximum value of the check matrix weight, and the decoding apparatus of FIG. 8 having the FIFO memory 155 (FIG. 9) are used. You can read and write messages in the time. Accordingly, since iterative decoding can be performed the same number of times as in the decoding device of FIG. 8 (the time required for one decoding is the same as that of the decoding device of FIG. 8), deterioration of decoding performance is prevented ( Suppression).

また、注目ノードに対応する検査行列の重みが、記憶可能個数dより大である場合には、メッセージメモリ104から同一のメッセージを2回読み出し、2回目に読み出されたメッセージを選択して、ノードの演算に用いるので、注目ノードに対応する検査行列の重みが、記憶可能個数dより大であっても、LDPC符号の復号を行うことができる。   Further, when the weight of the check matrix corresponding to the node of interest is larger than the storable number d, the same message is read twice from the message memory 104, the second read message is selected, Since it is used for the node calculation, the LDPC code can be decoded even if the weight of the parity check matrix corresponding to the node of interest is larger than the storable number d.

以上から、図17の復号装置によれば、規模を削減しつつ、復号性能の劣化を抑制することができる。   From the above, according to the decoding device of FIG. 17, it is possible to suppress degradation in decoding performance while reducing the scale.

ところで、図17の復号装置では、出力メッセージを求める手段としてのメッセージ計算部181を、バリアブルノード演算を行うバリアブルノード計算器182と、チェックノード演算を行うチェックノード計算器183とで構成するようにしたが、出力メッセージを求める手段は、バリアブルノード演算を行う回路と、チェックノード演算を行う回路との一部を共有化して構成し、バリアブルノード演算とチェックノード演算とを、選択的に行うようにすることで、復号装置の規模の、さらなる削減をすることができる。   By the way, in the decoding apparatus of FIG. 17, the message calculation unit 181 as means for obtaining the output message is configured with a variable node calculator 182 that performs variable node calculation and a check node calculator 183 that performs check node calculation. However, the means for obtaining the output message is configured by sharing a part of the circuit that performs the variable node calculation and the circuit that performs the check node calculation so that the variable node calculation and the check node calculation are selectively performed. By doing so, the scale of the decoding device can be further reduced.

そこで、次に、バリアブルノード演算を行う回路と、チェックノード演算を行う回路との一部を共有化し、かつ、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリを設けた復号装置について説明するが、その前段階の準備として、バリアブルノード演算を行う回路と、チェックノード演算を行う回路との一部が共有化され、かつ、少なくとも、検査行列の重みの最大値に等しい数のメッセージを記憶する遅延メモリが設けられた復号装置について説明する。   Therefore, next, a delay memory for sharing a part of the circuit for performing the variable node operation and the circuit for performing the check node operation and storing a number of messages smaller than the maximum value of the check matrix weight is provided. The decoding apparatus will be described. As a preparation for the previous stage, a part of the circuit that performs the variable node calculation and the circuit that performs the check node calculation are shared, and at least equal to the maximum weight of the check matrix A decoding apparatus provided with a delay memory for storing a number of messages will be described.

すなわち、図21は、そのような復号装置の構成例を示すブロック図である。   That is, FIG. 21 is a block diagram showing an example of the configuration of such a decoding device.

なお、図中、図8の復号装置と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。すなわち、図21の復号装置は、メッセージ計算部101に代えてメッセージ計算部191が設けられているとともに、制御部106に代えて制御部192が設けられている他は、図8の復号装置と同様に構成されている。   In the figure, portions corresponding to those of the decoding device of FIG. 8 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate. That is, the decoding device of FIG. 21 is different from the decoding device of FIG. 8 except that a message calculation unit 191 is provided instead of the message calculation unit 101 and a control unit 192 is provided instead of the control unit 106. It is constituted similarly.

図21の復号装置は、図8の復号装置と同様に、フルシリアルの復号を繰り返し行う。   The decoding device in FIG. 21 repeatedly performs full serial decoding in the same manner as the decoding device in FIG.

図21の復号装置では、メッセージメモリ104からメッセージ計算部191に、入力メッセージが1つずつ読み出され、メッセージ計算部191において、その入力メッセージを用いて、所望の枝に対応する出力メッセージが計算される。そして、その計算によって求められた出力メッセージが、メッセージメモリ104に格納されていく。図21の復号装置では、以上の処理が繰り返し行われ、いわゆる繰り返し復号が行われる。   In the decoding device of FIG. 21, the input message is read one by one from the message memory 104 to the message calculation unit 191, and the message calculation unit 191 calculates an output message corresponding to a desired branch using the input message. Is done. The output message obtained by the calculation is stored in the message memory 104. In the decoding device of FIG. 21, the above processing is repeatedly performed, so-called iterative decoding is performed.

すなわち、受信データメモリ105には、送信されてきたLDPC符号を受信することにより得られる、符号の0(又は1)らしさを表す対数尤度比である受信データ(LDPC符号)D100が供給され、受信データメモリ105は、その受信データD100を記憶する。   That is, the reception data memory 105 is supplied with reception data (LDPC code) D100, which is a log likelihood ratio representing the likelihood of 0 (or 1) of the code obtained by receiving the transmitted LDPC code, The reception data memory 105 stores the reception data D100.

バリアブルノード演算時には、受信データメモリ105は、制御部192から供給される制御信号に従って、記憶している受信データを読み出し、受信データD101として、メッセージ計算部191に供給する。   During the variable node calculation, the reception data memory 105 reads the stored reception data in accordance with the control signal supplied from the control unit 192, and supplies it to the message calculation unit 191 as reception data D101.

また、バリアブルノード演算時には、メッセージメモリ104は、制御部192から供給される制御信号に従って、記憶しているメッセージD201を読み出し、メッセージ計算部191に供給する。さらに、バリアブルノード演算時には、制御部192は、制御信号C203として、バリアブルノード演算を指示する制御信号を、メッセージ計算部191に供給する。   Further, at the time of variable node calculation, the message memory 104 reads out the stored message D201 in accordance with the control signal supplied from the control unit 192 and supplies it to the message calculation unit 191. Further, at the time of variable node calculation, the control unit 192 supplies a control signal instructing variable node calculation to the message calculation unit 191 as the control signal C203.

メッセージ計算部191は、メッセージメモリ104から供給される入力メッセージD201と受信データメモリ105から供給される受信データD101を用い、制御部192からの制御信号C203に従って、式(1)のバリアブルノード演算を行い、そのバリアブルノード演算の結果得られた出力メッセージ(バリアブルノードメッセージ)viを、メッセージD202として、メッセージメモリ104に供給する。 The message calculation unit 191 uses the input message D201 supplied from the message memory 104 and the reception data D101 supplied from the reception data memory 105, and performs variable node calculation of Expression (1) according to the control signal C203 from the control unit 192. The output message (variable node message) v i obtained as a result of the variable node calculation is supplied to the message memory 104 as a message D202.

そして、メッセージメモリ104は、以上のようにしてメッセージ計算部191から供給されるメッセージD202を記憶する。   The message memory 104 stores the message D202 supplied from the message calculation unit 191 as described above.

一方、チェックノード演算時には、メッセージメモリ104は、制御部192から供給される制御信号に従って、記憶しているバリアブルノードメッセージviを、入力メッセージD201として読み出し、メッセージ計算部191に供給する。 On the other hand, during the check node calculation, the message memory 104 reads the stored variable node message v i as the input message D201 in accordance with the control signal supplied from the control unit 192, and supplies it to the message calculation unit 191.

さらに、チェックノード演算時には、制御部192は、制御信号C203として、チェックノード演算を指示する制御信号を、メッセージ計算部191に供給する。   Further, at the time of the check node calculation, the control unit 192 supplies a control signal instructing the check node calculation to the message calculation unit 191 as the control signal C203.

メッセージ計算部191は、メッセージメモリ104から供給される入力メッセージD201を用い、制御部192からの制御信号C203に従って、式(7)のチェックノード演算を行い、そのチェックノード演算にって求められた出力メッセージ(チェックノードメッセージ)ujを、メッセージD202として、メッセージメモリ104に供給する。 The message calculation unit 191 uses the input message D201 supplied from the message memory 104, performs the check node calculation of Expression (7) according to the control signal C203 from the control unit 192, and is obtained by the check node calculation. The output message (check node message) u j is supplied to the message memory 104 as the message D202.

そして、メッセージメモリ104は、以上のようにしてメッセージ計算部191から供給されるメッセージD202を記憶する。   The message memory 104 stores the message D202 supplied from the message calculation unit 191 as described above.

メッセージメモリ104が記憶したメッセージ計算部191からのチェックノードメッセージujとしてのメッセージD202は、次のバリアブルノード演算時に、メッセージD201として読み出され、メッセージ計算部191に供給される。 The message D202 as the check node message u j from the message calculation unit 191 stored in the message memory 104 is read as the message D201 and supplied to the message calculation unit 191 at the time of the next variable node calculation.

次に、図22は、図21のメッセージ計算部191の構成例を示している。   Next, FIG. 22 shows a configuration example of the message calculation unit 191 of FIG.

メッセージ計算部191は、外部からメッセージ(データ)が供給(入力)される入力ポートとして、2つの入力ポートP101とP201を有し、外部にメッセージを供給(出力)するポートとして、1の出力ポートP202を有している。さらに、メッセージ計算部191は、外部から制御信号が供給(入力)される入力ポートとして、1つの入力ポートP203を有している。   The message calculation unit 191 has two input ports P101 and P201 as input ports to which messages (data) are supplied (input) from the outside, and one output port as a port to supply (output) messages to the outside Has P202. Further, the message calculation unit 191 has one input port P203 as an input port to which a control signal is supplied (input) from the outside.

メッセージ計算部191は、入力ポートP201から入力されるメッセージ、さらには、必要に応じて、入力ポートP101から入力されるメッセージ(受信データ)を用い、入力ポートP203から入力される制御信号C203に従って、復号の対象のLDPC符号を定義する検査行列に基づき、式(1)のバリアブルノード演算又は式(7)のチェックノード演算を選択的に行い、その結果得られるメッセージを、出力ポートP202から出力する。   The message calculation unit 191 uses a message input from the input port P201, and further, if necessary, a message (received data) input from the input port P101, and according to a control signal C203 input from the input port P203, Based on the check matrix that defines the LDPC code to be decoded, the variable node operation of Equation (1) or the check node operation of Equation (7) is selectively performed, and the resulting message is output from the output port P202. .

すなわち、入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給される。また、入力ポートP201には、メッセージメモリ104から読み出されたメッセージD201(チェックノードメッセージuj又はバリアブルノードメッセージvi)が供給される。さらに、入力ポートP203には、制御部192からの制御信号C203が供給される。 That is, the reception data D101 read from the reception data memory 105 is supplied to the input port P101. Further, the message D201 (check node message u j or variable node message v i ) read from the message memory 104 is supplied to the input port P201. Further, the control signal C203 from the control unit 192 is supplied to the input port P203.

そして、入力ポートP101に供給された受信データD101は、演算器313に供給され、入力ポートP201に供給されたメッセージD201は、セレクタ301のv端子に供給される。さらに、入力ポートP201に供給されたメッセージD201のうちの最上位ビットを除く下位ビット、すなわち、メッセージD201の絶対値は、値D303として、LUT300に供給され、メッセージD201のうちの最上位ビット、すなわち、メッセージD201の符号ビットは、値D304として、EXOR回路306とFIFOメモリ320に供給される。   The reception data D101 supplied to the input port P101 is supplied to the calculator 313, and the message D201 supplied to the input port P201 is supplied to the v terminal of the selector 301. Further, the low-order bits excluding the most significant bit of the message D201 supplied to the input port P201, that is, the absolute value of the message D201 is supplied to the LUT 300 as the value D303, and the most significant bit of the message D201, that is, The sign bit of the message D201 is supplied to the EXOR circuit 306 and the FIFO memory 320 as a value D304.

また、入力ポートP203に供給された制御信号C203は、セレクタ301及び316に供給される。   The control signal C203 supplied to the input port P203 is supplied to the selectors 301 and 316.

セレクタ301及び316は、v端子とc端子とを有し、制御信号C203に従い、v端子又はc端子のうちのいずれかに供給される値を選択して、後段に出力する。すなわち、セレクタ301及び316は、制御信号C203がバリアブルノード演算を指示する制御信号である場合には、v端子に供給される値を選択して後段に出力し、制御信号C203がチェックノード演算を指示する制御信号である場合には、c端子に供給される値を選択して後段に出力する。   The selectors 301 and 316 have a v terminal and a c terminal, select a value supplied to either the v terminal or the c terminal according to the control signal C203, and output the selected value to the subsequent stage. That is, when the control signal C203 is a control signal for instructing variable node calculation, the selectors 301 and 316 select the value supplied to the v terminal and output it to the subsequent stage, and the control signal C203 performs check node calculation. In the case of the control signal to be instructed, the value supplied to the c terminal is selected and output to the subsequent stage.

その結果、メッセージ計算部191は、バリアブルノード演算時には、実質的に、図23に示す構成となって、バリアブルノード演算を行い、チェックノード演算時には、実質的に、図24に示す構成となって、チェックノード演算を行う。   As a result, the message calculation unit 191 substantially has the configuration shown in FIG. 23 during the variable node calculation, performs the variable node calculation, and substantially has the configuration shown in FIG. 24 during the check node calculation. , Perform a check node operation.

すなわち、図23は、バリアブルノード演算時のメッセージ計算部191の実質的な構成例を示している。   That is, FIG. 23 illustrates a substantial configuration example of the message calculation unit 191 at the time of variable node calculation.

なお、上述したように、バリアブルノード演算時には、セレクタ301及び316はv端子を選択するが、図23では、図22に図示した構成のうちの、セレクタ301及び316がv端子を選択することによってバリアブルノード演算時に(実質的に)機能しない部分(バリアブルノード演算に関係がない部分)の図示を省略してある。   As described above, in the variable node calculation, the selectors 301 and 316 select the v terminal. In FIG. 23, the selectors 301 and 316 in the configuration illustrated in FIG. 22 select the v terminal. A portion that does not (substantially) function at the time of variable node calculation (portion not related to variable node calculation) is not shown.

バリアブルノード演算時においては、入力ポートP101には、受信データメモリ105から1つずつ読み出された受信データD101が供給される。また、入力ポートP201には、メッセージメモリ104から1つずつ読み出された、検査行列の各行に対応するチェックノード(出力メッセージviを求めようとしているバリアブルノードに対応する列の、各行に対応するチェックノード)からのチェックノードメッセージujが、順次、メッセージD201として供給される。 At the time of variable node calculation, the reception data D101 read from the reception data memory 105 one by one is supplied to the input port P101. In addition, the input port P201 corresponds to each row of the check node corresponding to each row of the check matrix (one column corresponding to the variable node for which the output message v i is to be obtained) read from the message memory 104 one by one. Check node messages u j from the check nodes) are sequentially supplied as messages D201.

入力ポートP101に供給された受信データD101は、演算器313に供給される。   The reception data D101 supplied to the input port P101 is supplied to the calculator 313.

また、入力ポートP201に供給されたメッセージD201(メッセージuj)は、セレクタ301のv端子に供給され、バリアブルノード演算時にはv端子を選択しているセレクタ301から、メッセージD306として、演算器302とFIFOメモリ320に供給される。 Further, the message D201 (message u j ) supplied to the input port P201 is supplied to the v terminal of the selector 301. At the time of variable node calculation, the selector 301 selecting the v terminal receives a message D306 from the calculator 302. It is supplied to the FIFO memory 320.

演算器302は、セレクタ301からのメッセージD306(メッセージuj)とレジスタ303に格納されている値D307とを加算することにより、メッセージD306を積算し、その結果得られる積算値を、レジスタ303に再格納する。なお、検査行列の1列に亘る全ての枝からのメッセージD306が積算された場合、レジスタ303はリセットされる。 The computing unit 302 adds up the message D306 by adding the message D306 (message u j ) from the selector 301 and the value D307 stored in the register 303, and the integrated value obtained as a result is stored in the register 303. Store again. Note that when the messages D306 from all branches over one column of the check matrix are accumulated, the register 303 is reset.

検査行列の1列に亘るメッセージD201が1つずつ読み込まれ、レジスタ303に1列分のメッセージD306が積算された値が格納された場合、すなわち、レジスタ303に、検査行列の1列に亘る全ての枝からのメッセージD306(メッセージuj)が積算された積算値(j=1からdvまでのΣuj)が格納された場合、セレクタ304は、レジスタ303に格納されている値、すなわち、検査行列の1列に亘る全ての枝からのメッセージD306(メッセージuj)が積算された積算値D307(j=1からdvまでのΣuj)を選択し、レジスタ305に出力して格納させる。 When the message D201 over one column of the check matrix is read one by one and the value obtained by accumulating the message D306 for one column is stored in the register 303, that is, all over the one column of the check matrix are stored in the register 303. When the accumulated value (Σu j from j = 1 to d v ) obtained by accumulating the message D306 (message u j ) from the branch is stored, the selector 304 stores the value stored in the register 303, that is, select the message from all of the branches across one row of the parity check matrix D306 (message u j) the accumulated integrated values D307 (? uj j from j = 1 to d v), is stored in output register 305 .

レジスタ305は、格納している値D307を、値D308として、セレクタ304と演算器312に供給する。レジスタ303に1列分のメッセージD306が積算された値が格納される直前までは、セレクタ304は、レジスタ305から供給された値D308を選択し、レジスタ305に出力し再格納させる。すなわち、検査行列の1列に亘る全ての枝からのメッセージD306(メッセージuj)が積算されるまで、レジスタ305は、前回積算された値を、セレクタ304と演算器312に供給する。 The register 305 supplies the stored value D307 as the value D308 to the selector 304 and the calculator 312. The selector 304 selects the value D308 supplied from the register 305, outputs it to the register 305, and stores it again immediately before the value obtained by integrating the message D306 for one column is stored in the register 303. That is, until the message D306 (message u j ) from all branches over one column of the check matrix is accumulated, the register 305 supplies the previously accumulated value to the selector 304 and the calculator 312.

一方、FIFOメモリ320は、少なくとも、検査行列の重みの最大値と同一の数のメッセージを記憶することができる容量を有し、レジスタ305から新たな値D308(j=1からdvまでのΣuj)が出力されるまでの間、セレクタ301が出力したチェックノードからのメッセージD306を遅延し、値D315として演算器312に供給する。演算器312は、レジスタ305から供給された値D308から、FIFOメモリ320から供給された値D315を減算する。すなわち、演算器312は、検査行列の1列に亘る全ての枝からのメッセージD306(メッセージuj)の積算値D308(j=1からdvまでのΣuj)から、求めたい枝からのメッセージD315(uj)を減算して、減算値D316(j=1からdv-1までのΣuj)を求め、演算器313に供給する。 On the other hand, FIFO memory 320, at least, of a capacity capable of storing the maximum and same number of messages weight of the check matrix, a new value D308 (j = 1 from the register 305 to d v? Uj Until j ) is output, the message D306 from the check node output by the selector 301 is delayed and supplied to the computing unit 312 as a value D315. The calculator 312 subtracts the value D315 supplied from the FIFO memory 320 from the value D308 supplied from the register 305. That is, the arithmetic unit 312 determines the message from the branch to be obtained from the integrated value D308 (Σu j from j = 1 to d v ) of the message D306 (message u j ) from all the branches over one column of the check matrix. D315 is subtracted (u j), we obtain the subtraction value D316 (? uj j from j = 1 to d v -1), and supplies to the calculator 313.

演算器313は、入力ポートP101からの受信データD101と、演算器312からの減算値D316(j=1からdv-1までのΣuj)とを加算し、その結果得られる加算値D317(バリアブルノードメッセージvi)を、セレクタ316のv端子に供給する。 Calculator 313 adds the reception data D101 from the input port P101, the calculator 312 subtracts value from D316 by adding the (? Uj j from j = 1 to d v -1), the addition value obtained as a result D317 ( The variable node message v i ) is supplied to the v terminal of the selector 316.

セレクタ316は、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給される演算器313からの加算値D317を、メッセージD202(メッセージvi)として、出力ポートP202から出力する。 The selector 316 selects the v terminal at the time of variable node calculation, and outputs the addition value D317 from the calculator 313 supplied to the v terminal from the output port P202 as a message D202 (message v i ).

以上のように、セレクタ301及び304がv端子を選択しているメッセージ計算部191では、式(1)のバリアブルノード演算が行われ、その結果得られるメッセージ(バリアブルノードメッセージ)viが、出力ポートP202から出力される。 As described above, in the message calculation unit 191 in which the selectors 301 and 304 have selected the v terminal, the variable node calculation of Expression (1) is performed, and the resulting message (variable node message) v i is output. Output from port P202.

図24は、チェックノード演算時の図22のメッセージ計算部191の実質的な構成例を示している。   FIG. 24 shows a substantial configuration example of the message calculation unit 191 in FIG. 22 at the time of check node calculation.

なお、上述したように、チェックノード演算時には、セレクタ301及び316はc端子を選択するが、図24では、図22に図示した構成のうちの、セレクタ301及び316がc端子を選択することによってチェックノード演算時に(実質的に)機能しない部分(チェックノード演算に関係がない部分)の図示を省略してある。   As described above, in the check node calculation, the selectors 301 and 316 select the c terminal, but in FIG. 24, the selectors 301 and 316 in the configuration illustrated in FIG. 22 select the c terminal. A portion that does not function (substantially) at the time of the check node calculation (portion not related to the check node calculation) is not shown.

チェックノード演算時においては、入力ポートP201には、メッセージメモリ104から1つずつ読み出された、検査行列の各列に対応するバリアブルノード(出力メッセージujを求めようとしているチェックノードに対応する行の、各列に対応するバリアブルノード)からのバリアブルノードメッセージviが、順次、メッセージD201として供給される。 At the time of the check node calculation, the input port P201 corresponds to the variable node corresponding to each column of the parity check matrix read from the message memory 104 (the check node for which the output message u j is to be obtained). A variable node message v i from a variable node corresponding to each column in a row is sequentially supplied as a message D201.

入力ポートP201に供給されたメッセージD201(メッセージuj)のうちの最上位ビットを除く下位ビット、つまり、メッセージD201の絶対値D303(|vi|)は、LUT300に供給され、最上位ビット、つまりメッセージD201の符号ビットD304は、EXOR回路306とFIFOメモリ320にそれぞれ供給される。 The low-order bits excluding the most significant bit of the message D201 (message u j ) supplied to the input port P201, that is, the absolute value D303 (| v i |) of the message D201 is supplied to the LUT 300, and the most significant bit. That is, the sign bit D304 of the message D201 is supplied to the EXOR circuit 306 and the FIFO memory 320, respectively.

LUT300は、そこに入力される値を引数xとして、式(7)のチェックノード演算における非線形関数φ(x)の演算結果を出力するLUT(φ(x)の演算結果を記憶しているLUT)であり、絶対値D303(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果D305(φ(|vi|))を読み出し、セレクタ301のc端子に供給する。 The LUT 300 outputs a calculation result of the nonlinear function φ (x) in the check node calculation of Expression (7) using the value input thereto as an argument x, and a LUT that stores the calculation result of φ (x) ), And the calculation result D305 (φ (| v i |)) obtained by performing the calculation of the nonlinear function φ (| v i |) using the absolute value D303 (| v i |) as an argument is read out. Supply to the terminal.

セレクタ301は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるLUT300からの演算結果D305(φ(|vi|))を、演算結果D306(φ(|vi|))として、演算器302とFIFOメモリ320に供給する。 The selector 301 selects the c terminal during the check node calculation, and the calculation result D305 (φ (| v i |)) from the LUT 300 supplied to the c terminal is used as the calculation result D306 (φ (| v i |). )) To the computing unit 302 and the FIFO memory 320.

演算器302は、演算結果D306(φ(|vi|))とレジスタ303に格納されている値D307とを加算することにより、演算結果D306を積算し、その結果得られる積算値をレジスタ303に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD201の絶対値D303(|vi|)に対する演算結果D306(φ(|vi|))が積算された場合、レジスタ303はリセットされる。 The computing unit 302 adds the calculation result D306 (φ (| v i |)) and the value D307 stored in the register 303 to integrate the calculation result D306, and the integrated value obtained as a result is registered in the register 303. Store again. Note that when the operation result D306 (φ (| v i |)) for the absolute value D303 (| v i |) of the message D201 from all branches over one row of the check matrix is accumulated, the register 303 is reset. The

検査行列の1行に亘るメッセージD201が1つずつ読み込まれ、レジスタ303に1行分の演算結果D306が積算された積算値が格納された場合、セレクタ304は、レジスタ303に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD201(メッセージvi)から求められたφ(|vi|)が積算された積算値D307(i=1からi=dcまでのΣφ(|vi|))を選択し、レジスタ305に出力して格納させる。レジスタ305は、格納している積算値D307を、値D308として、セレクタ304と演算器312に供給する。 When the message D201 over one row of the check matrix is read one by one and the accumulated value obtained by accumulating the operation result D306 for one row is stored in the register 303, the selector 304 stores the value stored in the register 303. , i.e., phi obtained from the messages D201 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) from the integrated value D307 (i = 1, which is accumulated up to i = d c Σφ (| v i |)) is selected and output to the register 305 for storage. The register 305 supplies the stored integrated value D307 as a value D308 to the selector 304 and the calculator 312.

レジスタ303に1行分の演算結果D306が積算された積算値が格納される直前までは、セレクタ304は、レジスタ305から供給された値D308を選択し、レジスタ305に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD201(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ305は、前回積算されたφ(|vi|)の積算値を、セレクタ304と演算器312に供給する。 The selector 304 selects the value D308 supplied from the register 305, outputs it to the register 305, and stores it again immediately before the integrated value obtained by integrating the operation results D306 for one row is stored in the register 303. That is, until φ (| v i |) obtained from the message D201 (message v i ) from all branches over one row of the check matrix is accumulated, the register 305 accumulates φ (| v i |) is supplied to the selector 304 and the calculator 312.

一方、FIFOメモリ320は、レジスタ305から新たな値D308(i=1からi=dcまでのΣφ(|vi|))が出力されるまでの間、LUT300が出力した演算結果D306(φ(|vi|))を遅延し、値D315として演算器312に供給する。演算器312は、レジスタ305から供給された値D308から、FIFOメモリ320から供給された値D315を減算し、その減算結果を、減算値D316としてLUT314に供給する。すなわち、演算器312は、検査行列の1行に亘る全ての枝からのメッセージD201(メッセージvi)から求められたφ(|vi|)の積算値(i=1からi=dcまでのΣφ(|vi|))から、求めたい枝からのメッセージD201(メッセージvi)から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc-1までのΣφ(|vi|))を減算値D316としてLUT314に供給する。 On the other hand, FIFO memories 320, (from i = 1 i = Σφ to d c (| v i |) ) a new value D308 from the register 305 until it is output, the result calculation LUT300 has output D306 (phi (| v i |)) is delayed and supplied to the computing unit 312 as a value D315. The arithmetic unit 312 subtracts the value D315 supplied from the FIFO memory 320 from the value D308 supplied from the register 305, and supplies the subtraction result to the LUT 314 as a subtraction value D316. That is, the calculator 312, phi obtained from the messages D201 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) integrated value from (i = 1 to i = d c Σφ (| v i |)) of the desired branch is subtracted φ (| v i |) obtained from the message D201 (message v i ) from the branch to be obtained, and the subtraction value (i = 1 to i = d). Σφ (| v i |) up to c −1) is supplied to the LUT 314 as the subtraction value D316.

LUT314は、そこに入力される値を引数xとして、式(7)のチェックノード演算における非線形関数φ(x)の逆関数φ-1(x)の演算結果を出力するLUT(φ-1(x)の演算結果を記憶しているLUT)であり、演算器312からの減算値D316(i=1からi=dc-1までのΣφ(|vi|))を引数として、逆関数φ-1(Σφ(|vi|))の演算を行った演算結果D318(φ-1(Σφ(|vi|)))を出力する。 The LUT 314 outputs a calculation result of the inverse function φ −1 (x) of the nonlinear function φ (x) in the check node calculation of Expression (7) using the value input thereto as an argument x (φ −1 ( x) is an LUT that stores the calculation result of x), and the inverse function with the subtraction value D316 (Σφ (| v i |) from i = 1 to i = d c −1) from the calculator 312 as an argument φ -1 (Σφ (| v i |)) calculation results D318 of the operation was carried out in (φ -1 (Σφ (| v |))) outputs a.

なお、上述したように、非線形関数φ(x)の演算結果と逆関数φ-1(x)の演算結果とは等しいので、LUT300と314とは、同一構成のLUTとなっている。 As described above, since the calculation result of the nonlinear function φ (x) and the calculation result of the inverse function φ −1 (x) are equal, the LUTs 300 and 314 are LUTs having the same configuration.

以上の処理と並行して、EXOR回路306は、レジスタ307に格納されている値D310と符号ビット(正負を表すビット)D304との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、乗算結果D309を、レジスタ307に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304が乗算された場合、レジスタ307はリセットされる。   In parallel with the above processing, the EXOR circuit 306 calculates the exclusive OR of the value D310 stored in the register 307 and the sign bit (bit representing positive / negative) D304, thereby multiplying the sign bits. The multiplication result D309 is stored again in the register 307. When the sign bit D304 of the message D201 from all branches over one row of the check matrix is multiplied, the register 307 is reset.

検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304が乗算された乗算結果D309(i=1からdcまでのΠsign(vi))がレジスタ307に格納された場合、セレクタ308は、レジスタ307に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304が乗算された値D310(i=1からi=dcまでのΠsign(vi))を選択し、レジスタ309に出力して格納させる。レジスタ309は、格納している値D311を、セレクタ308とEXOR回路315に供給する。 If (Paisign from i = 1 to d c (v i)) multiplication result D309 to the sign bit D304 is multiplied by the messages D201 from all of the branches across one line of the parity check matrix stored in the register 307, the selector 308, Paisign the value stored in the register 307, i.e., the value D310 (i = 1 the sign bit D304 of the message D201 is multiplied from all of the branches across one line of the parity check matrix until i = d c (v i )) is selected and output to the register 309 for storage. The register 309 supplies the stored value D311 to the selector 308 and the EXOR circuit 315.

検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304が乗算された乗算結果D309(i=1からdcまでのΠsign(vi))がレジスタ307に格納される直前までは、セレクタ308は、レジスタ309から供給された値D311を選択し、レジスタ309に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD201(メッセージvi)の符号ビットD304が乗算されるまで、レジスタ309は、前回格納した値を、セレクタ308とEXOR回路315に供給する。 It is (from i = 1 Πsign to d c (v i)) multiplication result D309 to the sign bit D304 is multiplied by the messages D201 from all of the branches across one line of the parity check matrix until just before is stored in the register 307 The selector 308 selects the value D311 supplied from the register 309, outputs it to the register 309, and stores it again. That is, the register 309 supplies the previously stored value to the selector 308 and the EXOR circuit 315 until the sign bits D304 of the message D201 (message v i ) from all branches over one row of the parity check matrix are multiplied. .

一方、FIFOメモリ320は、レジスタ309から新たな値D311(i=1からi=dcまでのΠsign(vi))がEXOR回路315に供給されるまでの間、セレクタ301からの演算結果D306(φ(|vi|))とともに、符号ビットD304を遅延し、1ビットの値D313としてEXOR回路315に供給する。EXOR回路315は、レジスタ309から供給された値D311と、FIFOメモリ320から供給された値D313との排他的論理和を演算することにより、値D311を、値D313で除算し、除算結果を除算値D319として出力する。すなわち、EXOR回路315は、検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304(sign(vi))の乗算値(i=1からi=dcまでのΠsign(vi))を、求めたい枝からのメッセージD201の符号ビットD304(sign(vi))で除算して、その除算値(i=1からi=dc-1までのΠsign(vi))を除算値D319として出力する。 On the other hand, FIFO memories 320, between (from i = 1 i = Πsign to d c (v i)) a new value D311 from the register 309 until is supplied to the EXOR circuit 315, the operation result from the selector 301 D306 Along with (φ (| v i |)), the sign bit D304 is delayed and supplied to the EXOR circuit 315 as a 1-bit value D313. The EXOR circuit 315 calculates the exclusive OR of the value D311 supplied from the register 309 and the value D313 supplied from the FIFO memory 320, thereby dividing the value D311 by the value D313 and dividing the division result. Output as the value D319. That, EXOR circuit 315, the sign bit D304 of the messages D201 from all of the branches across one line of the parity check matrix (sign (v i)) of the multiplication value (Paisign of i = 1 through i = d c (v i )) Is divided by the sign bit D304 (sign (v i )) of the message D201 from the branch to be obtained, and the divided value (Πsign (v i ) from i = 1 to i = d c −1) is obtained. Output as division value D319.

そして、メッセージ計算部191では、LUT314から出力された演算結果D318を下位ビットとするとともに、EXOR回路315から出力された除算値D319を最上位ビット(符号ビット)とするビット列D320(チェックノードメッセージuj)が、セレクタ316のc端子に供給される。 Then, the message calculation unit 191 sets the operation result D318 output from the LUT 314 as the lower bit and the bit string D320 (check node message u) having the division value D319 output from the EXOR circuit 315 as the most significant bit (sign bit). j ) is supplied to the c terminal of the selector 316.

セレクタ316は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるビット列D320(メッセージuj)を、メッセージD202(メッセージvi)として、出力ポートP202から出力する。 The selector 316 selects the c terminal during the check node calculation, and outputs the bit string D320 (message u j ) supplied to the c terminal from the output port P202 as the message D202 (message v i ).

以上のように、セレクタ301及び304がc端子を選択しているメッセージ計算部191では、式(7)のチェックノード演算が行われ、その結果得られるメッセージ(チェックノードメッセージ)ujが、出力ポートP202から出力される。 As described above, in the message calculation unit 191 in which the selectors 301 and 304 have selected the c terminal, the check node calculation of Expression (7) is performed, and the resulting message (check node message) u j is output. Output from port P202.

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

図21の復号装置によれば、メッセージメモリ104と、メッセージ計算部191のFIFOメモリ320の容量さえ足りれば、様々な検査行列のLDPC符号を復号することができる。   21 can decode LDPC codes of various parity check matrices as long as the capacity of the message memory 104 and the FIFO memory 320 of the message calculation unit 191 is sufficient.

また、図21の復号装置のメッセージ計算部191(図22)では、図23と図24とを比較して分かるように、値の積算を行って積算値を出力する演算器302及びレジスタ303、積算値から、ある値を減算して減算値を出力するセレクタ304、レジスタ305、及び演算器312、並びに値を遅延する遅延メモリとしてのFIFOメモリ320が、バリアブルノード演算とチェックノード演算とで共有されているので、例えば、図8の復号装置のように、独立のバリアブルノード計算器102とチェックノード計算器103とを有するメッセージ計算部101よりも回路規模を小さくすることができる。   Further, in the message calculation unit 191 (FIG. 22) of the decoding device of FIG. 21, as can be seen by comparing FIG. 23 and FIG. 24, an arithmetic unit 302 and a register 303 that perform integration of values and output an integrated value, A selector 304, a register 305, and a calculator 312 that subtract a certain value from the integrated value and output a subtracted value, and a FIFO memory 320 as a delay memory that delays the value are shared by the variable node calculation and the check node calculation. Therefore, for example, the circuit scale can be made smaller than that of the message calculation unit 101 having the independent variable node calculator 102 and the check node calculator 103 as in the decoding device of FIG.

次に、図25は、本発明を適用した復号装置の第2実施の形態の構成例を示すブロック図である。   Next, FIG. 25 is a block diagram illustrating a configuration example of the second embodiment of the decoding device to which the present invention has been applied.

なお、図中、図21の復号装置の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。すなわち、図25の復号装置は、メッセージ計算部191に代えて、メッセージ計算部201が設けられているとともに、制御部192に代えて、制御部202が設けられている他は、図21の復号装置と同様に構成されている。   In the figure, portions corresponding to those of the decoding device of FIG. 21 are denoted by the same reference numerals, and description thereof will be omitted as appropriate. That is, the decoding device of FIG. 25 is provided with a message calculation unit 201 instead of the message calculation unit 191 and a decoding unit of FIG. 21 except that a control unit 202 is provided instead of the control unit 192. It is configured in the same way as the device.

図25の復号装置では、メッセージ計算部201が、図21の復号装置のメッセージ計算部191と同様に、バリアブルノード演算を行う回路と、チェックノード演算を行う回路との一部を共有する構成となっている。さらに、図25の復号装置では、バリアブルノード演算とチェックノード演算とを行うメッセージ計算部201が、図22のメッセージ計算部191のFIFOメモリ320のように、検査行列の重みの最大値に等しい数のメッセージを記憶する遅延メモリではなく、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリを有している。   In the decoding device of FIG. 25, the message calculation unit 201 shares a part of a circuit that performs variable node calculation and a circuit that performs check node calculation, similar to the message calculation unit 191 of the decoding device of FIG. It has become. Further, in the decoding apparatus of FIG. 25, the message calculation unit 201 that performs variable node calculation and check node calculation is a number equal to the maximum value of the check matrix weight as in the FIFO memory 320 of the message calculation unit 191 of FIG. The delay memory stores a number of messages smaller than the maximum value of the check matrix weights.

また、図25の復号装置では、制御部202が、メッセージメモリ104に対するメッセージ(データ)の読み書き制御として、図15のフローチャートで説明したように、図12の復号装置の制御部174と同様の読み書き制御を行う。   In the decoding device of FIG. 25, the control unit 202 performs read / write control similar to that of the control unit 174 of the decoding device of FIG. 12, as described in the flowchart of FIG. Take control.

さらに、制御部202は、図21の制御部192と同様に、制御信号C203を、メッセージ計算部201に供給し、その制御信号C203によって、式(1)のバリアブルノード演算、又は式(7)のチェックノード演算を行うことを、メッセージ計算部201に指示する。   Further, similarly to the control unit 192 of FIG. 21, the control unit 202 supplies the control signal C203 to the message calculation unit 201, and by the control signal C203, the variable node calculation of Expression (1) or Expression (7) The message calculation unit 201 is instructed to perform the check node calculation.

また、制御部202は、図20のフローチャートで説明したように、セレクタ制御の処理を行い、制御信号C104に相当する制御信号C204を、メッセージ計算部201に供給する。メッセージ計算部201は、制御部202からの制御信号C204に従い、メッセージメモリ104から2回目に読み出されるメッセージを選択的に用いて、式(1)のバリアブルノード演算や、式(7)のチェックノード演算を行う。   Further, as described in the flowchart of FIG. 20, the control unit 202 performs a selector control process, and supplies a control signal C204 corresponding to the control signal C104 to the message calculation unit 201. The message calculation unit 201 selectively uses the second message read from the message memory 104 in accordance with the control signal C204 from the control unit 202, and performs a variable node calculation of Expression (1) or a check node of Expression (7). Perform the operation.

以上のように構成される復号装置では、制御部202の制御に従い、メッセージメモリ104から、入力メッセージが1つずつ読み出され、メッセージ計算部201において、その入力メッセージを用いて、所望の枝に対応する出力メッセージが計算される。そして、その計算によって求められた出力メッセージが、メッセージメモリ104に格納されていく。図25の復号装置では、以上の処理が繰り返し行われ、フルシリアルの繰り返し復号が行われる。   In the decoding apparatus configured as described above, the input messages are read one by one from the message memory 104 according to the control of the control unit 202, and the message calculation unit 201 uses the input messages to make a desired branch. The corresponding output message is calculated. The output message obtained by the calculation is stored in the message memory 104. In the decoding device of FIG. 25, the above processing is repeated, and full serial iterative decoding is performed.

すなわち、受信データメモリ105には、受信データ(LDPC符号)D100が供給され、受信データメモリ105は、その受信データD100を格納(記憶)する。   In other words, the reception data (LDPC code) D100 is supplied to the reception data memory 105, and the reception data memory 105 stores (stores) the reception data D100.

バリアブルノード演算時には、受信データメモリ105は、制御部202から供給される制御信号に従って、記憶している受信データを読み出し、受信データD101として、メッセージ計算部201に供給する。   At the time of variable node calculation, the reception data memory 105 reads the stored reception data in accordance with the control signal supplied from the control unit 202, and supplies it to the message calculation unit 201 as reception data D101.

また、バリアブルノード演算時には、メッセージメモリ104は、制御部202から供給される制御信号に従い、記憶している同一のメッセージを1回、又は2回読み出して、1回目に読み出したメッセージをメッセージD201として、メッセージ計算部201に供給し、2回目に読み出したメッセージをメッセージDD201として、メッセージ計算部201に供給する。   Further, during the variable node calculation, the message memory 104 reads the same stored message once or twice according to the control signal supplied from the control unit 202, and the message read first time as the message D201. The message read to the message calculation unit 201 and read for the second time is supplied to the message calculation unit 201 as a message DD201.

メッセージ計算部201は、メッセージメモリ104から1回目に読み出されたメッセージD201、及び受信データメモリ105から供給される受信データD101、さらには、必要に応じて、メッセージメモリ104から2回目に読み出されたメッセージDD201を用い、制御部202から供給される制御信号C203が表すバリアブルノード演算の指示、及び制御部202から供給される制御信号C204に従って、復号の対象のLDPC符号を定義する検査行列に基づき、式(1)のバリアブルノード演算を行い、そのバリアブルノード演算の結果得られたメッセージ(バリアブルノードメッセージ)viを、メッセージD202として、メッセージメモリ104に供給する。 The message calculation unit 201 reads the message D201 read from the message memory 104 for the first time, the reception data D101 supplied from the reception data memory 105, and, if necessary, reads the message D201 from the message memory 104 for the second time. In accordance with the instruction of variable node calculation represented by the control signal C203 supplied from the control unit 202 and the control signal C204 supplied from the control unit 202, a check matrix that defines the LDPC code to be decoded is used. Based on the variable node calculation of Expression (1), the message (variable node message) v i obtained as a result of the variable node calculation is supplied to the message memory 104 as a message D202.

そして、メッセージメモリ104は、制御部202から供給される制御信号に従い、メッセージ計算部201から供給されるメッセージD202(バリアブルノードメッセージvi)を記憶する。 The message memory 104 stores a message D202 (variable node message v i ) supplied from the message calculation unit 201 in accordance with a control signal supplied from the control unit 202.

一方、チェックノード演算時には、メッセージメモリ104は、制御部202から供給される制御信号に従って、記憶している同一のメッセージ(バリアブルノードメッセージvi)を1回、又は2回読み出して、1回目に読み出したメッセージをメッセージD201として、メッセージ計算部201に供給し、2回目に読み出したメッセージをメッセージDD201として、メッセージ計算部201に供給する。 On the other hand, at the time of the check node calculation, the message memory 104 reads the same stored message (variable node message v i ) once or twice according to the control signal supplied from the control unit 202, and the first time The read message is supplied to the message calculation unit 201 as a message D201, and the second read message is supplied to the message calculation unit 201 as a message DD201.

メッセージ計算部201は、メッセージメモリ104から1回目に読み出されたメッセージD201、さらには、必要に応じて、メッセージメモリ104から2回目に読み出されたメッセージDD201を用い、制御部202からの制御信号C203が表すチェックノード演算の指示、及び制御部202から供給される制御信号C204に従って、復号の対象のLDPC符号を定義する検査行列に基づき、式(7)のチェックノード演算を行い、そのチェックノード演算によって求められたメッセージ(チェックノードメッセージ)ujを、メッセージD202として、メッセージメモリ104に供給する。 The message calculation unit 201 uses the message D201 read from the message memory 104 for the first time and, if necessary, the message DD201 read from the message memory 104 for the second time to control the message from the control unit 202. In accordance with the check node calculation instruction represented by the signal C203 and the control signal C204 supplied from the control unit 202, the check node calculation of Expression (7) is performed based on the check matrix that defines the LDPC code to be decoded, and the check A message (check node message) u j obtained by the node operation is supplied to the message memory 104 as a message D202.

そして、メッセージメモリ104は、制御部202から供給される制御信号に従い、メッセージ計算部201から供給されるメッセージD202(チェックノードメッセージuj)を記憶する。 The message memory 104 stores a message D202 (check node message u j ) supplied from the message calculation unit 201 in accordance with a control signal supplied from the control unit 202.

メッセージメモリ104が記憶したメッセージ計算部201からのメッセージD202、すなわち、チェックノードメッセージujは、次のバリアブルノード演算時に、メッセージD201、さらには、必要に応じてメッセージDD201として、1回、又は2回読み出され、メッセージ計算部201に供給される。 The message D202 from the message calculation unit 201 stored in the message memory 104, that is, the check node message u j is used as the message D201, and further as the message DD201 as needed at the time of the next variable node calculation, or once or 2 It is read once and supplied to the message calculation unit 201.

図26は、図25のメッセージ計算部201の構成例を示している。   FIG. 26 shows a configuration example of the message calculation unit 201 in FIG.

なお、図中、図22のメッセージ計算部191と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。   In the figure, portions corresponding to the message calculation unit 191 in FIG. 22 are denoted by the same reference numerals, and description thereof will be omitted as appropriate.

メッセージ計算部201には、図22の入力ポートP101,P201、及びP203の他に、入力ポートPD201及びP204が新たに設けられているとともに、LUT310及びセレクタ311が新たに設けられている。   In addition to the input ports P101, P201, and P203 in FIG. 22, the message calculation unit 201 is newly provided with input ports PD201 and P204, and a LUT 310 and a selector 311 are newly provided.

さらに、メッセージ計算部201には、図22のFIFOメモリ320に代えて、小FIFOメモリ317が設けられ、さらに、セレクタ318が新たに設けられている。   Further, the message calculation unit 201 is provided with a small FIFO memory 317 instead of the FIFO memory 320 of FIG. 22, and a selector 318 is newly provided.

入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給(入力)される。入力ポートP201には、メッセージメモリ104から2回読み出される同一のメッセージD201及びDD201のうちの1回目に読み出されるメッセージ(以下、適宜、1回目のメッセージともいう)D201が供給(入力)され、入力ポートPD201には、2回目に読み出されるメッセージ(以下、適宜、2回目のメッセージともいう)DD201が供給される。   The reception data D101 read from the reception data memory 105 is supplied (input) to the input port P101. The input port P201 is supplied with (inputted to) the input message D201 that is read twice from the message memory 104 and the message that is read first time (hereinafter also referred to as the first message as appropriate) D201. The port PD 201 is supplied with a message DD201 read out for the second time (hereinafter also referred to as a second message as appropriate) DD201.

入力ポートP203には、制御部202(図25)から制御信号C203が供給され、入力ポートP204には、制御部202から制御信号C204が供給される。   A control signal C203 is supplied from the control unit 202 (FIG. 25) to the input port P203, and a control signal C204 is supplied from the control unit 202 to the input port P204.

メッセージ計算部201は、入力ポートP201から入力される1回目のメッセージD201や、入力ポートPD201から入力される2回目のメッセージDD201、入力ポートP101から入力されるメッセージ(受信データ)を用い、入力ポートP203から入力される制御信号C203に従って、式(1)のバリアブルノード演算又は式(7)のチェックノード演算を行い、その結果得られるメッセージを、出力ポートP202から出力する。   The message calculation unit 201 uses the first message D201 input from the input port P201, the second message DD201 input from the input port PD201, and the message (received data) input from the input port P101. According to the control signal C203 input from P203, the variable node calculation of Expression (1) or the check node calculation of Expression (7) is performed, and the resulting message is output from the output port P202.

すなわち、入力ポートP101に供給された受信データD101は、演算器313に供給され、入力ポートP201に供給された1回目のメッセージD201は、セレクタ301のv端子と、小FIFOメモリ317に供給される。   That is, the received data D101 supplied to the input port P101 is supplied to the computing unit 313, and the first message D201 supplied to the input port P201 is supplied to the v terminal of the selector 301 and the small FIFO memory 317. .

さらに、入力ポートP201に供給された1回目のメッセージD201のうちの最上位ビットを除く下位ビット、すなわち、メッセージD201の絶対値は、値D303として、LUT300に供給され、1回目のメッセージD201のうちの最上位ビット、すなわち、メッセージD201の符号ビットは、値D304として、EXOR回路306に供給される。   Further, the low-order bits excluding the most significant bit of the first message D201 supplied to the input port P201, that is, the absolute value of the message D201 is supplied to the LUT 300 as the value D303, and is included in the first message D201. Most significant bit, that is, the sign bit of the message D201 is supplied to the EXOR circuit 306 as a value D304.

また、入力ポートPD201に供給された2回目のメッセージDD201は、セレクタ318のm端子に供給される。   The second message DD201 supplied to the input port PD201 is supplied to the m terminal of the selector 318.

さらに、入力ポートP203に供給された制御信号C203は、セレクタ301,311、及び316に供給される。   Further, the control signal C203 supplied to the input port P203 is supplied to the selectors 301, 311 and 316.

セレクタ301,311、及び316は、v端子とc端子とを有し、制御信号C203に従い、v端子又はc端子のうちのいずれかに供給される値を選択して、後段に出力する。すなわち、セレクタ301,311、及び316は、制御信号C203がバリアブルノード演算を指示する制御信号である場合には、v端子に供給される値を選択して後段に出力し、制御信号C203がチェックノード演算を指示する制御信号である場合には、c端子に供給される値を選択して後段に出力する。   The selectors 301, 311 and 316 have a v terminal and a c terminal, select a value supplied to either the v terminal or the c terminal according to the control signal C203, and output the selected value to the subsequent stage. That is, when the control signal C203 is a control signal instructing variable node calculation, the selectors 301, 311 and 316 select the value supplied to the v terminal and output it to the subsequent stage, and the control signal C203 is checked. In the case of a control signal instructing node calculation, the value supplied to the c terminal is selected and output to the subsequent stage.

その結果、図26のメッセージ計算部201では、制御信号C203がバリアブルノード演算を指示しているときには、バリアブルノード演算が行われ、制御信号C203がチェックノード演算を指示しているときには、チェックノード演算が行われる。   As a result, in the message calculation unit 201 in FIG. 26, the variable node calculation is performed when the control signal C203 indicates a variable node calculation, and the check node calculation is performed when the control signal C203 indicates a check node calculation. Is done.

なお、小FIFOメモリ317は、メッセージを遅延するための遅延メモリであり、メッセージメモリ104からの1回目のメッセージD201を、図22のFIFOメモリ320と同様に一時記憶して遅延する。   The small FIFO memory 317 is a delay memory for delaying messages, and temporarily stores and delays the first message D201 from the message memory 104 in the same manner as the FIFO memory 320 in FIG.

但し、図22のFIFOメモリ320は、少なくとも、検査行列の重み(列の重みdv及び行の重みdc)の最大値に等しい数のメッセージを記憶することができる容量を有していたが、小FIFOメモリ317は、検査行列の重みの最大値よりも少ない数(であって1以上)のメッセージを記憶する容量しか有していない。 However, the FIFO memory 320 in FIG. 22 has a capacity capable of storing at least a number of messages equal to the maximum value of the parity check matrix weight (column weight d v and row weight d c ). The small FIFO memory 317 has a capacity for storing a smaller number of messages (that is, 1 or more) than the maximum value of the check matrix weight.

したがって、小FIFOメモリ317は、FIFOメモリ320よりも容量が小さいので、規模も小さい。   Therefore, the small FIFO memory 317 has a smaller capacity than the FIFO memory 320 and is therefore smaller in scale.

小FIFOメモリ317は、上述したように、メッセージメモリ104からの1回目のメッセージD201を遅延し、セレクタ318のf端子に供給する。   As described above, the small FIFO memory 317 delays the first message D201 from the message memory 104 and supplies it to the f terminal of the selector 318.

セレクタ318は、入力端子として、f端子とm端子とを有しており、上述したように、f端子には、小FIFOメモリ317で遅延されたメッセージD201が供給され、m端子には、メッセージメモリ104からの2回目のメッセージDD201が供給される。   The selector 318 has f and m terminals as input terminals. As described above, the message D201 delayed by the small FIFO memory 317 is supplied to the f terminal, and the message is sent to the m terminal. A second message DD201 from the memory 104 is supplied.

さらに、セレクタ318には、制御部202(図25)から入力ポートP204に供給される制御信号C204が供給される。   Further, the control signal C204 supplied from the control unit 202 (FIG. 25) to the input port P204 is supplied to the selector 318.

セレクタ318は、制御部202からの制御信号C204に従い、小FIFOメモリ317で遅延された1回目のメッセージD201と、メッセージメモリ104からの2回目のメッセージDD201とのうちの一方を、バリアブルノード又はチェックノードの演算に用いるメッセージとして選択して出力する。   The selector 318 determines whether one of the first message D201 delayed by the small FIFO memory 317 and the second message DD201 from the message memory 104 is a variable node or check according to the control signal C204 from the control unit 202. Select and output as a message for node operation.

セレクタ318が出力するメッセージ、すなわち、小FIFOメモリ317で遅延された1回目のメッセージD201、又は、メッセージメモリ104からの2回目のメッセージDD201は、セレクタのv端子に供給されるとともに、そのうちの最上位ビットを除く下位ビット、つまり、絶対値は、値D312として、LUT310に供給され、最上位ビット、つまり、符号ビットは、値D313として、EXOR回路306に供給される。   The message output from the selector 318, that is, the first message D201 delayed in the small FIFO memory 317 or the second message DD201 from the message memory 104 is supplied to the v terminal of the selector, and the highest one of them. The lower bits excluding the upper bits, that is, the absolute value, is supplied to the LUT 310 as the value D312. The most significant bit, that is, the sign bit, is supplied to the EXOR circuit 306 as the value D313.

ここで、図25の復号装置において、制御部202は、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みが、小FIFOメモリ317が記憶可能なメッセージの数以下であるときには、小FIFOメモリ317で遅延された1回目のメッセージD201を選択することをセレクタ318に指示する信号を、制御信号C204として、メッセージ計算部201の入力ポートP204に供給する。   Here, in the decoding device in FIG. 25, the control unit 202 determines that the weight of the check matrix column corresponding to the variable node to which the branch for which the message is to be found is connected is the message that the small FIFO memory 317 can store. When the number is less than or equal to the number, a signal instructing the selector 318 to select the first message D201 delayed by the small FIFO memory 317 is supplied to the input port P204 of the message calculation unit 201 as the control signal C204.

また、制御部202は、バリアブルノードに対応する列の重みが、小FIFOメモリ317が記憶可能なメッセージの数以下でないときには、メッセージメモリ104からの2回目のメッセージDD201を選択することをセレクタ318に指示する信号を、制御信号C204として、メッセージ計算部201の入力ポートP204に供給する。   In addition, when the weight of the column corresponding to the variable node is not less than or equal to the number of messages that can be stored in the small FIFO memory 317, the control unit 202 causes the selector 318 to select the second message DD201 from the message memory 104. The instructing signal is supplied to the input port P204 of the message calculation unit 201 as the control signal C204.

なお、制御部202は、小FIFOメモリ317で遅延されたメッセージD201を選択することをセレクタ318に指示する制御信号C204を、メッセージ計算部201に供給する場合、つまり、制御信号C204が、メッセージメモリ104から2回目に読み出されたメッセージDD201を選択することをセレクタ318に指示する信号でない場合には、メッセージメモリ104からのメッセージの読み出しについては、メッセージメモリ104からメッセージを1回だけ読み出す読み出し制御を行う。   When the control unit 202 supplies the message calculation unit 201 with a control signal C204 that instructs the selector 318 to select the message D201 delayed by the small FIFO memory 317, that is, the control signal C204 is stored in the message memory. If the signal is not a signal for instructing the selector 318 to select the message DD201 read the second time from 104, the message read from the message memory 104 is read out only once. I do.

したがって、制御部202では、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みが、小FIFOメモリ317が記憶可能なメッセージの数以下でない場合には、図15で説明した、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御が行われるが、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みが、小FIFOメモリ317が記憶可能なメッセージの数以下である場合には、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御は行われず、1回だけ読み出す読み出し制御、すなわち、図15のステップS101及びS102のうちの、ステップS101だけが行われる。   Therefore, in the control unit 202, when the column weight of the check matrix corresponding to the variable node to which the branch for which the message is to be obtained is connected is not less than the number of messages that can be stored in the small FIFO memory 317, The readout control for reading the same message twice from the message memory 104 described in 15 is performed, but the column weight of the parity check matrix corresponding to the variable node to which the branch for which the message is sought is connected is small FIFO. When the number of messages that can be stored in the memory 317 is equal to or less than the number of messages that can be stored, the read control for reading the same message from the message memory 104 twice is not performed, and the read control for reading only once, that is, the steps S101 and S102 in FIG. Of these, only step S101 is performed.

次に、図27を参照して、図26のメッセージ計算部201で行われるバリアブルノード演算とチェックノード演算について説明する。   Next, the variable node calculation and the check node calculation performed by the message calculation unit 201 in FIG. 26 will be described with reference to FIG.

図27左側は、式(1)のバリアブルノード演算を行うバリアブルノードと、式(7)のチェックノード演算を行うチェックノードとを模式的に示している。   The left side of FIG. 27 schematically illustrates a variable node that performs the variable node calculation of Expression (1) and a check node that performs the check node calculation of Expression (7).

バリアブルノードでは、計算しようとしている枝(バリアブルノードに接続している枝のうちのi番目の枝)に対応するメッセージviが、バリアブルノードに繋がっている残りの枝からのメッセージu1,u2,・・・を、式(1)に示したように加算することによって求められる。 In the variable node, the message v i corresponding to the branch to be calculated (i-th branch among the branches connected to the variable node) is sent from the remaining branches connected to the variable node u 1 , u 2 ,... Are obtained by adding as shown in the equation (1).

また、チェックノードでは、計算しようとしている枝(チェックノードに接続している枝のうちのj番目の枝)に対応するメッセージujが、式(7)に示したように、チェックノードに繋がっている残りの枝からのメッセージv1,v2,・・・を引数xとする非線形関数φ(x)の演算結果を積算し、その結果得られる積算値を引数xとする逆関数φ-1(x)を演算することによって求められる。 In the check node, the message u j corresponding to the branch to be calculated (j-th branch among the branches connected to the check node) is connected to the check node as shown in Expression (7). Are integrated with the operation results of the non-linear function φ (x) with the arguments v 1 , v 2 ,... As arguments x, and the inverse function φ with the resulting integrated value as the argument x It is obtained by calculating 1 (x).

いま、ノードに入力されるデータ(入力前のデータ)を入力データというとともに、ノードから出力されるデータ(出力前のデータ)を出力データということとすると、図27左側のバリアブルノード及びチェックノードでの演算は、図27右側に示す演算と等価である。   Now, assuming that data input to a node (data before input) is referred to as input data and data output from the node (data before output) is referred to as output data, the variable node and check node on the left side of FIG. This calculation is equivalent to the calculation shown on the right side of FIG.

すなわち、図27右側では、バリアブルノードにおいて、図27左側のバリアブルノードと同一の演算によって、メッセージviが求められている。また、図27右側では、チェックノードにおいて非線形関数φ(x)の演算を行うのではなく、チェックノードに入力される入力データ(入力前のメッセージv1,v2,・・・)に、非線形関数φ(x)の演算を施してから、その演算結果が、チェックノードに入力され、チェックノードにおいて、非線形関数φ(x)の演算結果が積算されている。さらに、図27右側では、チェックノードにおいて逆関数φ-1(x)の演算を行うのではなく、チェックノードから出力された出力データ(逆関数φ-1(x)の演算が施される前の、非線形関数φ(x)の演算結果の積算値)に、逆関数φ-1(x)の演算が施され、これにより、メッセージujが求められている。 That is, on the right side of FIG. 27, the message v i is obtained at the variable node by the same calculation as the variable node on the left side of FIG. On the right side of FIG. 27, the nonlinear function φ (x) is not calculated at the check node, but the input data (messages v 1 , v 2 ,... Before input) input to the check node is nonlinear. After the calculation of the function φ (x), the calculation result is input to the check node, and the calculation result of the nonlinear function φ (x) is integrated at the check node. Further, on the right side of FIG. 27, the inverse function φ −1 (x) is not calculated at the check node, but the output data output from the check node (before the inverse function φ −1 (x) is calculated). (The integrated value of the calculation result of the nonlinear function φ (x)) is subjected to the calculation of the inverse function φ −1 (x), thereby obtaining the message u j .

図26のメッセージ計算部201では、図27右側に示したようにメッセージviとujを求めるバリアブルノード演算とチェックノード演算が行われる。 In the message calculation unit 201 in FIG. 26, variable node calculation and check node calculation for obtaining the messages v i and u j are performed as shown on the right side of FIG.

ここで、図27右側のバリアブルノードについては、バリアブルノードに入力される入力データと、バリアブルノードから出力された出力データのいずれに対しても、非線形関数φ(x)及び逆関数φ-1(x)の演算は施されない。一方、チェックノードについては、入力データに、非線形関数φ(x)の演算が施され、出力データに、逆関数φ-1(x)の演算が施される。 Here, with respect to the variable node on the right side of FIG. 27, the nonlinear function φ (x) and the inverse function φ −1 (with respect to both input data input to the variable node and output data output from the variable node. The operation x) is not performed. On the other hand, for the check node, the input data is subjected to the calculation of the nonlinear function φ (x), and the output data is subjected to the calculation of the inverse function φ −1 (x).

このため、バリアブルノード演算とチェックノード演算の両方を行う図26のメッセージ計算部201には、非線形関数φ(x)の演算を行う(演算結果を出力する)LUT300及び310と、逆関数φ-1(x)の演算を行う(演算結果を出力する)LUT314とが設けられている。 Therefore, the message calculation unit 201 in FIG. 26 that performs both the variable node calculation and the check node calculation performs the calculation of the nonlinear function φ (x) (outputs the calculation result), and the inverse function φ −. A LUT 314 that performs 1 (x) calculation (outputs the calculation result) is provided.

そして、メッセージ計算部201は、バリアブルノード演算時には、実質的に、バリアブルノードに対する入力データ及び出力データを、LUT300,310、及び314をバイパスさせる構成(後述する図28の構成)となって、図27右側でバリアブルノードについて説明した演算を行う。   In the variable node calculation, the message calculation unit 201 substantially bypasses the LUTs 300, 310, and 314 for input data and output data to the variable node (configuration in FIG. 28 described later). On the right side, the calculation described for the variable node is performed.

また、メッセージ計算部201は、チェックノード演算時には、チェックノードに入力される入力データを、LUT300又は310を経由させるとともに、チェックノードから出力された出力データを、LUT314を経由させる構成(後述する図29の構成)となって、図27右側でチェックノードについて説明した演算を行う。   Further, the message calculation unit 201 is configured to cause the input data input to the check node to pass through the LUT 300 or 310 and the output data output from the check node to pass through the LUT 314 at the time of the check node calculation (FIG. 29), the calculation described for the check node on the right side of FIG.

図28は、図27右側に示したバリアブルノード演算時の図26のメッセージ計算部201の実質的な構成例を示している。   FIG. 28 shows a substantial configuration example of the message calculation unit 201 of FIG. 26 at the time of variable node calculation shown on the right side of FIG.

なお、上述したように、バリアブルノード演算時には、セレクタ301,311、及び316はv端子を選択するが、図28では、図26に図示した構成のうちの、セレクタ301,311、及び316がv端子を選択することによってバリアブルノード演算時に機能しない部分(バリアブルノード演算に関係がない部分)の図示を省略してある。   As described above, in the variable node calculation, the selectors 301, 311 and 316 select the v terminal, but in FIG. 28, the selectors 301, 311 and 316 of the configuration shown in FIG. A portion that does not function during variable node calculation by selecting a terminal (portion not related to variable node calculation) is not shown.

メッセージ計算部201は、入力ポートP101及びP201それぞれから入力されるメッセージ、さらには、入力ポートPD201から入力されるメッセージを、必要に応じて用いて、式(1)のバリアブルノード演算を行い、その結果得られるメッセージD202を、出力ポートP202から出力する。   The message calculation unit 201 performs a variable node calculation of Expression (1) using a message input from each of the input ports P101 and P201, and further a message input from the input port PD201 as necessary, and The resulting message D202 is output from the output port P202.

すなわち、入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給される。また、入力ポートP201には、メッセージメモリ104から1つずつ読み出された、検査行列の各行に対応するチェックノードからの1回目のメッセージD201(チェックノードメッセージuj)が供給される。 That is, the reception data D101 read from the reception data memory 105 is supplied to the input port P101. Further, the first message D201 (check node message u j ) is supplied to the input port P201 from the check node corresponding to each row of the check matrix read out from the message memory 104 one by one.

入力ポートP101に供給された受信データD101は、演算器313に供給される。   The reception data D101 supplied to the input port P101 is supplied to the calculator 313.

また、入力ポートP201に供給されたメッセージD201(メッセージuj)は、セレクタ301のv端子に供給され、バリアブルノード演算時にはv端子を選択しているセレクタ301から、メッセージD306として、演算器302に供給される。 Also, the message D201 (message u j ) supplied to the input port P201 is supplied to the v terminal of the selector 301, and is sent to the computing unit 302 as a message D306 from the selector 301 that has selected the v terminal during variable node calculation. Supplied.

そして、演算器302、レジスタ303、セレクタ304、及びレジスタ305では、図23で説明したメッセージ計算部191と同様の処理が行われる。   The arithmetic unit 302, the register 303, the selector 304, and the register 305 perform the same processing as the message calculation unit 191 described with reference to FIG.

すなわち、演算器302は、セレクタ301からのメッセージD306(メッセージuj)とレジスタ303に格納されている値D307とを加算することにより、メッセージD306を積算し、その結果得られる積算値を、レジスタ303に再格納する。 That is, the computing unit 302 adds the message D306 by adding the message D306 (message u j ) from the selector 301 and the value D307 stored in the register 303, and the integrated value obtained as a result is stored in the register. Store again in 303.

そして、検査行列の1列に亘るメッセージD306が1つずつ読み込まれ、レジスタ303に、検査行列の1列に亘る全ての枝からのメッセージD306(メッセージuj)が積算された積算値(j=1からdvまでのΣuj)が格納された場合、セレクタ304は、レジスタ303に格納されている値、すなわち、検査行列の1列に亘る全ての枝からのメッセージD306(メッセージuj)が積算された積算値D307(j=1からdvまでのΣuj)を選択し、レジスタ305に出力して格納させる。 Then, a message D306 across one row of the parity check matrix are read in one by one, to the register 303, the message D306 integrated value (message u j) is accumulated from all of the branches across one row of the parity check matrix (j = When Σu j ) from 1 to d v is stored, the selector 304 receives the value stored in the register 303, that is, the message D306 (message u j ) from all branches over one column of the check matrix. select the integrated integrated values D307 (? uj j from j = 1 to d v), it is stored in output register 305.

レジスタ305は、格納している値D307を、値D308として、セレクタ304と演算器312に供給する。レジスタ303に1列分のメッセージD306が積算された値が格納される直前までは、セレクタ304は、レジスタ305から供給された値D308を選択し、レジスタ305に出力し再格納させる。すなわち、検査行列の1列に亘る全ての枝からのメッセージD306(メッセージuj)が積算されるまで、レジスタ305は、前回積算された値を、セレクタ304と演算器312に供給する。 The register 305 supplies the stored value D307 as the value D308 to the selector 304 and the calculator 312. The selector 304 selects the value D308 supplied from the register 305, outputs it to the register 305, and stores it again immediately before the value obtained by integrating the message D306 for one column is stored in the register 303. That is, until the message D306 (message u j ) from all branches over one column of the check matrix is accumulated, the register 305 supplies the previously accumulated value to the selector 304 and the calculator 312.

一方、レジスタ305から新たな値D308(j=1からdvまでのΣuj)の出力が開始されると、すなわち、レジスタ303に1列分のメッセージD201が積算された積算値(j=1からdvまでのΣuj)が格納された直後、メッセージ計算部201においては、メッセージD201(メッセージuj)と同一のメッセージDD201、すなわち、メッセージメモリ104からの2回目のメッセージujが、入力ポートPD201から1つずつ入力され、そのメッセージDD201が、セレクタ318のm端子に供給される。 On the other hand, upon output of a new value from the register 305 D308 (Σu j from j = 1 to d v) is started, namely, the integrated value message D201 is integrated for one column in the register 303 (j = 1 immediately after the? uj j) to d v is stored in the message calculation unit 201, the message D201 (message u j) the same messages DD201, i.e., the second message u j from the message memory 104, input The messages DD201 are input one by one from the port PD201 and supplied to the m terminal of the selector 318.

また、小FIFOメモリ317は、レジスタ305から新たな値D308(j=1からdvまでのΣuj)が出力されるまでの間、1回目のメッセージD201を遅延し、セレクタ318のf端子に供給する。 Also, the small FIFO memory 317 delays the first message D201 until a new value D308 (Σu j from j = 1 to d v ) is output from the register 305, and sends it to the f terminal of the selector 318. Supply.

ここで、小FIFOメモリ317が記憶することができるメッセージの数(記憶可能個数)がd個であるとすると、小FIFOメモリ317は、上述したように、検査行列の重みの最大値よりも少ない数のメッセージを記憶する容量しか有していないため、レジスタ305から、検査行列の、ある1列に対応するdv個のメッセージD201が積算された新たな値(積算値)D308(j=1からdvまでのΣuj)が出力されるまでの間、小FIFOメモリ317において、その1列に対応するdv個のメッセージD201を遅延することができないことがある。 Here, if the number of messages (storable number) that can be stored in the small FIFO memory 317 is d, the small FIFO memory 317 is smaller than the maximum weight of the parity check matrix as described above. because it does not only have capacity to store the number of messages, from the register 305, the parity check matrix, a new value d v number of messages D201 corresponding to a certain one row is accumulated (integrated value) d 308 (j = 1 In the small FIFO memory 317, it may not be possible to delay d v messages D201 corresponding to the one column until Σu j ) from to d v is output.

すなわち、小FIFOメモリ317が記憶することができるメッセージの数dが、レジスタ305に積算値が格納されるdv個のメッセージD201が入力されるバリアブルノードに対応する検査行列の列の重みdvよりも小である場合には、小FIFOメモリ317では、そのdv個のメッセージD201のうちの、d+1個目のメッセージが記憶されるときに、1個目のメッセージが出力されてしまうため、レジスタ305から、小FIFOメモリ317が記憶可能なメッセージの個数dよりも多いdv個のメッセージD201が積算された新たな値D308(積算値)が出力されるまでの間、そのdv個のメッセージD201すべてを、小FIFOメモリ317に記憶しておくことができない。 That is, the number d of messages that can be stored in the small FIFO memory 317 is the weight d v of the parity check matrix corresponding to the variable node to which d v messages D201 whose stored values are stored in the register 305 are input. If it is smaller than is that in the small FIFO memory 317, of its d v number of messages D201, when d + 1 th message is stored, 1 th message from being output Therefore, during the period from the register 305, to a small FIFO memory 317 is the new value d v number of messages D201 greater than the number d of storable messages is accumulated d 308 (integrated value) is output, the d v All the messages D201 cannot be stored in the small FIFO memory 317.

そこで、制御部202(図25)は、上述したように、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する列の重みdvが、小FIFOメモリ317が記憶可能なメッセージの数d以下でないときには、メッセージメモリ104からの2回目のメッセージDD201を選択することをセレクタ318に指示する制御信号C204を、メッセージ計算部201に供給する。 Therefore, as described above, the control unit 202 (FIG. 25) sets the weight d v of the column corresponding to the variable node to which the branch for which the message is sought is connected to the message that the small FIFO memory 317 can store. When the number d is not less than d, a control signal C204 for instructing the selector 318 to select the second message DD201 from the message memory 104 is supplied to the message calculation unit 201.

メッセージ計算部201において、制御部202からの制御信号C204は、入力ポートP204を介して、セレクタ318に供給される。   In the message calculation unit 201, the control signal C204 from the control unit 202 is supplied to the selector 318 via the input port P204.

セレクタ318は、制御信号C204に従い、端子mに供給される、メッセージメモリ104からの2回目のメッセージDD201を選択して出力する。   The selector 318 selects and outputs the second message DD201 from the message memory 104 supplied to the terminal m in accordance with the control signal C204.

一方、制御部202(図25)は、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ317が記憶可能なメッセージの数d以下であるときには、小FIFOメモリ317で遅延された1回目のメッセージD201を選択することをセレクタ318に指示する制御信号C204を、メッセージ計算部201に供給する。 On the other hand, the control unit 202 (FIG. 25) is the weight d v column of the check matrix corresponding to a variable node that branches trying to find a message is connected, the number of messages that can be stored is small FIFO memory 317 d When it is below, the message calculation unit 201 is supplied with a control signal C204 that instructs the selector 318 to select the first message D201 delayed in the small FIFO memory 317.

メッセージ計算部201において、制御部202からの制御信号C204は、入力ポートP204を介して、セレクタ318に供給される。   In the message calculation unit 201, the control signal C204 from the control unit 202 is supplied to the selector 318 via the input port P204.

セレクタ318は、制御信号C204に従い、端子fに供給される、小FIFOメモリ317で遅延された1回目のメッセージD201を選択して出力する。   The selector 318 selects and outputs the first message D201 delayed by the small FIFO memory 317 supplied to the terminal f in accordance with the control signal C204.

ここで、小FIFOメモリ317が記憶することができるメッセージの数dが、レジスタ305に積算値が格納されるdv個のメッセージD201に対応する検査行列の列の重みdvよりも小でない場合には、レジスタ305から、小FIFOメモリ317が記憶可能なメッセージの個数dよりも多くないdv個のメッセージD201が積算された新たな値(積算値)D308が出力されるまでの間、そのdv個のメッセージD201すべてを、小FIFOメモリ317に記憶しておくこと、つまり、dv個のメッセージD201が積算されるまでの間、そのdv個のメッセージD201すべてを遅延することができ、その遅延後のメッセージD201を、dv個のメッセージD201の積算が終了した後に出力することができる。 Here, when the number d of messages that can be small FIFO memory 317 stores is not smaller than the weight d v column of the check matrix corresponding to d v number of message D201 that integrated value in the register 305 is stored in the period from the register 305, until a new value d v number of messages D201 small FIFO memory 317 is not greater than the number d of storable messages are accumulated (integrated value) d 308 is output, the All d v messages D201 can be stored in the small FIFO memory 317, that is, all d v messages D201 can be delayed until d v messages D201 are accumulated. The delayed message D201 can be output after the integration of d v messages D201 is completed.

そこで、制御部202(図25)は、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ317が記憶可能なメッセージの数d以下であるときには、小FIFOメモリ317で遅延されたメッセージD201を選択することをセレクタ318に指示する制御信号C204を、メッセージ計算部201のセレクタ318に供給し、これにより、セレクタ318では、小FIFOメモリ317で遅延されたメッセージD201が選択され、セレクタ311に供給される。 Therefore, the control unit 202 (FIG. 25) determines that the column weight d v of the parity check matrix corresponding to the variable node to which the branch for which a message is to be obtained is connected is the number d of messages that the small FIFO memory 317 can store. When the following is true, the control signal C204 for instructing the selector 318 to select the message D201 delayed in the small FIFO memory 317 is supplied to the selector 318 of the message calculation unit 201. The message D201 delayed in the memory 317 is selected and supplied to the selector 311.

セレクタ311は、バリアブルノード演算時には、v端子を選択しており、そのv端子に供給される、セレクタ318からのメッセージ(2回目のメッセージDD201、又は、小FIFOメモリ317で遅延された1回目のメッセージD201)を、メッセージD315として、演算器312に供給する。   The selector 311 selects the v terminal at the time of variable node calculation, and the message from the selector 318 (second message DD201 or the first time delayed by the small FIFO memory 317) supplied to the v terminal is selected. The message D201) is supplied to the calculator 312 as the message D315.

演算器312は、レジスタ305から供給された積算値D308から、セレクタ311からのメッセージD315を減算する。すなわち、演算器312では、検査行列の1列に亘る全ての枝からのメッセージD201(メッセージuj)の積算値D308(j=1からdvまでのΣuj)から、求めたい枝からのメッセージuj(j=dvのuj)としてのメッセージD315を減算して、減算値D316(j=1からdv-1までのΣuj)を求め、演算器313に供給する。 The calculator 312 subtracts the message D315 from the selector 311 from the integrated value D308 supplied from the register 305. In other words, in the calculator 312, the message from the branch to be obtained from the integrated value D308 (Σu j from j = 1 to d v ) of the message D201 (message u j ) from all the branches over one column of the check matrix. subtracts the message D315 as u j (j = d v of u j), we obtain the subtraction value D316 (? uj j from j = 1 to d v -1), and supplies to the calculator 313.

演算器313は、入力ポートP101からの受信データD101と、演算器312からの減算値D316(j=1からdv-1までのΣuj)とを加算し、その結果得られる加算値D317(バリアブルノードメッセージvi)を、セレクタ316のv端子に供給する。 Calculator 313 adds the reception data D101 from the input port P101, the calculator 312 subtracts value from D316 by adding the (? Uj j from j = 1 to d v -1), the addition value obtained as a result D317 ( The variable node message v i ) is supplied to the v terminal of the selector 316.

セレクタ316は、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給される演算器313からの加算値D317を、メッセージD202(メッセージvi)として、出力ポートP202から出力する。 The selector 316 selects the v terminal at the time of variable node calculation, and outputs the addition value D317 from the calculator 313 supplied to the v terminal from the output port P202 as a message D202 (message v i ).

以上のように、セレクタ301及び304がv端子を選択しているメッセージ計算部201では、式(1)のバリアブルノード演算が行われ、その結果得られるメッセージ(バリアブルノードメッセージ)viが、出力ポートP202から出力される。 As described above, in the message calculation unit 201 in which the selectors 301 and 304 have selected the v terminal, the variable node calculation of Expression (1) is performed, and the resulting message (variable node message) v i is output. Output from port P202.

図29は、図27右側に示したチェックノード演算時の図26のメッセージ計算部201の実質的な構成例を示している。   FIG. 29 shows a substantial configuration example of the message calculation unit 201 of FIG. 26 at the time of the check node calculation shown on the right side of FIG.

なお、上述したように、チェックノード演算時には、セレクタ301,311、及び316はc端子を選択するが、図29では、図26に図示した構成のうちの、セレクタ301,311、及び316がc端子を選択することによってチェックノード演算時に機能しない部分(チェックノード演算に関係がない部分)の図示を省略してある。   As described above, in the check node calculation, the selectors 301, 311 and 316 select the c terminal. In FIG. 29, the selectors 301, 311 and 316 of the configuration shown in FIG. A portion that does not function at the time of check node calculation by selecting a terminal (portion not related to the check node calculation) is not shown.

チェックノード演算時においては、入力ポートP201には、メッセージメモリ104から1つずつ読み出された、検査行列の各列に対応するバリアブルノードからのバリアブルノードメッセージviが、順次、メッセージD201として供給される。 At the time of the check node calculation, the variable node message v i read from the message memory 104 one by one and corresponding to each column of the check matrix is sequentially supplied as the message D201 to the input port P201. Is done.

入力ポートP201に供給されたメッセージD201(メッセージvi)は、小FIFOメモリ317に供給される。さらに、メッセージD201のうちの最上位ビットを除く下位ビット、つまり、メッセージD201の絶対値D303(|vi|)が、LUT300に供給され、最上位ビット、つまりメッセージD201の符号ビットD304が、EXOR回路306に供給される。 The message D201 (message v i ) supplied to the input port P201 is supplied to the small FIFO memory 317. Further, the low-order bits of the message D201 excluding the most significant bit, that is, the absolute value D303 (| v i |) of the message D201 is supplied to the LUT 300, and the most significant bit, that is, the sign bit D304 of the message D201 is EXOR. This is supplied to the circuit 306.

そして、LUT300、セレクタ301、演算器302、レジスタ303、セレクタ304、レジスタ305、EXOR回路306、レジスタ307、セレクタ308、レジスタ309、演算器312、LUT314、EXOR回路315、及びセレクタ316において、図24で説明したメッセージ計算部191と同様の処理が行われる。   In the LUT 300, the selector 301, the arithmetic unit 302, the register 303, the selector 304, the register 305, the EXOR circuit 306, the register 307, the selector 308, the register 309, the arithmetic unit 312, the LUT 314, the EXOR circuit 315, and the selector 316, FIG. Processing similar to that of the message calculation unit 191 described in the above is performed.

すなわち、LUT300は、絶対値D303(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果D305(φ(|vi|))を読み出し、セレクタ301のc端子に供給する。 That is, the LUT 300 reads out the operation result D305 (φ (| v i |)) obtained by performing the operation of the nonlinear function φ (| v i |) using the absolute value D303 (| v i |) as an argument. Supply to the c terminal.

セレクタ301は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるLUT300からの演算結果D305(φ(|vi|))を、演算結果D306(φ(|vi|))として、演算器302に供給する。 The selector 301 selects the c terminal during the check node calculation, and the calculation result D305 (φ (| v i |)) from the LUT 300 supplied to the c terminal is used as the calculation result D306 (φ (| v i |). )) To the computing unit 302.

演算器302は、演算結果D306(φ(|vi|))とレジスタ303に格納されている値D307とを加算することにより、演算結果D306を積算し、その結果得られる積算値をレジスタ303に再格納する。 The computing unit 302 adds the calculation result D306 (φ (| v i |)) and the value D307 stored in the register 303 to integrate the calculation result D306, and the integrated value obtained as a result is registered in the register 303. Store again.

検査行列の1行に亘るメッセージD201が1つずつ読み込まれ、レジスタ303に1行分の演算結果D306が積算された積算値が格納された場合、セレクタ304は、レジスタ303に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD201(メッセージvi)から求められたφ(|vi|)が積算された積算値D307(i=1からi=dcまでのΣφ(|vi|))を選択し、レジスタ305に出力して格納させる。レジスタ305は、格納している積算値D307を、値D308として、セレクタ304と演算器312に供給する。 When the message D201 over one row of the check matrix is read one by one and the accumulated value obtained by accumulating the operation result D306 for one row is stored in the register 303, the selector 304 stores the value stored in the register 303. , i.e., phi obtained from the messages D201 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) from the integrated value D307 (i = 1, which is accumulated up to i = d c Σφ (| v i |)) is selected and output to the register 305 for storage. The register 305 supplies the stored integrated value D307 as a value D308 to the selector 304 and the calculator 312.

レジスタ303に1行分の演算結果D306が積算された積算値が格納される直前までは、セレクタ304は、レジスタ305から供給された値D308を選択し、レジスタ305に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD201(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ305は、前回積算されたφ(|vi|)の積算値を、セレクタ304と演算器312に供給する。 The selector 304 selects the value D308 supplied from the register 305, outputs it to the register 305, and stores it again immediately before the integrated value obtained by integrating the operation results D306 for one row is stored in the register 303. That is, until φ (| v i |) obtained from the message D201 (message v i ) from all branches over one row of the check matrix is accumulated, the register 305 accumulates φ (| v i |) is supplied to the selector 304 and the calculator 312.

レジスタ305から新たな値D308(i=1からi=dcまでのΣφ(|vi|))の出力が開始されると、すなわち、レジスタ305に1行分の演算結果D306が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納された直後、メッセージ計算部201において、メッセージD201(メッセージvi)と同一のメッセージDD201、すなわち、メッセージメモリ104からの2回目のメッセージviが、入力ポートPD201から1つずつ入力され、セレクタ318のm端子に供給される。 New value from the register 305 D 308 (Sigma] [phi of i = 1 through i = d c (| v i |)) the output of the start, i.e., calculation results D306 of one row in the register 305 is accumulated integrated value (i = from 1 to i = d c Σφ (| v i |)) immediately after the stored, the message calculation unit 201, the message D201 (message v i) the same messages DD201, i.e., the message memory The second message v i from 104 is input one by one from the input port PD 201 and supplied to the m terminal of the selector 318.

一方、小FIFOメモリ317は、レジスタ305から新たな値D308(i=1からdcまでのΣφ(|vi|))が出力されるまでの間、メッセージメモリ104からの1回目のメッセージD201を遅延し、セレクタ318のf端子に供給する。 On the other hand, the small FIFO memory 317, a new value from the register 305 D 308 (from i = 1 Sigma] [phi to d c (| v i |) ) until it is output, the first message from the message memory 104 D201 Is supplied to the f terminal of the selector 318.

ここで、小FIFOメモリ317が記憶することができるメッセージの数がd個であるとすると、小FIFOメモリ317は、上述したように、検査行列の重みの最大値よりも少ない数のメッセージを記憶する容量しか有していないため、レジスタ305から、検査行列の、ある1行に対応するdc個のメッセージD201のφ(|vi|)の新たな積算値(i=1からdcまでのΣφ(|vi|))が出力されるまでの間、小FIFOメモリ317において、その1行に対応するdc個のメッセージD201を遅延することができないことがある。 Here, if the number of messages that can be stored in the small FIFO memory 317 is d, the small FIFO memory 317 stores a smaller number of messages than the maximum value of the check matrix weight as described above. since only has capacity, from the register 305, the parity check matrix, phi of d c number of messages D201 corresponding to a certain one line (| v i |) new accumulated value from (i = 1 to d c of Σφ (| v i |) until) is output, in a small FIFO memory 317, it may not be possible to delay d c number of messages D201 corresponding to the one line.

すなわち、小FIFOメモリ317が記憶することができるメッセージの数dが、レジスタ305にφ(|vi|)の積算値が格納されるdc個のメッセージD201が入力されるチェックノードに対応する検査行列の行の重みdcよりも小である場合には、小FIFOメモリ317では、そのdc個のメッセージD201のうちの、d+1個目のメッセージが記憶されるときに、1個目のメッセージが出力されてしまうため、レジスタ305において、小FIFOメモリ317が記憶可能なメッセージの個数dよりも多いdc個のメッセージD201のφ(|vi|)が積算されるまでの間、そのdc個のメッセージD201すべてを、小FIFOメモリ317に記憶しておくことができない。 That is, the number d of messages that can be small FIFO memory 317 is stored in the in the register 305 φ (| v i |) integrated value of corresponding to the check node to which d c pieces of message D201 to be stored is input If it is smaller than the weight d c line of check matrix, the small FIFO memory 317, when one of its d c number of messages D201, d + 1 th message is stored, one since the eye of the message from being output, the register 305, the small FIFO memory 317 is φ of more d c number of messages D201 than the number d of storable messages until is integrated (| | v i) , all of its d c number of messages D201, can not be stored in a small FIFO memory 317.

そこで、制御部202(図25)は、上述したように、メッセージを求めようとしている枝が接続しているチェックノードに対応する行の重みdcが、小FIFOメモリ317が記憶可能なメッセージの数d以下でないときには、メッセージメモリ104からの2回目のメッセージDD201を選択することをセレクタ318に指示する制御信号C204を、メッセージ計算部201に供給する。 Therefore, the control unit 202 (FIG. 25), as described above, the weight d c in the row corresponding to the check node branches trying to find a message is connected, a small FIFO memory 317 is possible messages stored When the number d is not less than d, a control signal C204 for instructing the selector 318 to select the second message DD201 from the message memory 104 is supplied to the message calculation unit 201.

メッセージ計算部201において、制御部202からの制御信号C204は、入力ポートP204を介して、セレクタ318に供給される。   In the message calculation unit 201, the control signal C204 from the control unit 202 is supplied to the selector 318 via the input port P204.

セレクタ318は、制御信号C204に従い、端子mに供給される、メッセージメモリ104からの2回目のメッセージDD201を選択して出力する。   The selector 318 selects and outputs the second message DD201 from the message memory 104 supplied to the terminal m in accordance with the control signal C204.

一方、制御部202(図25)は、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みdcが、小FIFOメモリ317が記憶可能なメッセージの数d以下であるときには、小FIFOメモリ317で遅延された1回目のメッセージD201を選択することをセレクタ318に指示する制御信号C204を、メッセージ計算部201に供給する。 On the other hand, the control unit 202 (FIG. 25) is the weight d c line of the check matrix corresponding to the check node branches trying to find a message is connected, the number of messages that can be stored is small FIFO memory 317 d When it is below, the message calculation unit 201 is supplied with a control signal C204 that instructs the selector 318 to select the first message D201 delayed in the small FIFO memory 317.

メッセージ計算部201において、制御部202からの制御信号C204は、入力ポートP204を介して、セレクタ318に供給される。   In the message calculation unit 201, the control signal C204 from the control unit 202 is supplied to the selector 318 via the input port P204.

セレクタ318は、制御信号C204に従い、端子fに供給される、小FIFOメモリ317で遅延された1回目のメッセージD201のφ(|vi|)を選択して出力する。 The selector 318 selects and outputs φ (| v i |) of the first message D201 supplied to the terminal f and delayed by the small FIFO memory 317 in accordance with the control signal C204.

ここで、小FIFOメモリ317が記憶することができるメッセージの数dが、レジスタ305に積算値が格納されるdc個のメッセージD201が入力されるチェックノードに対応する検査行列の行の重みdcよりも小でない場合には、レジスタ305から、小FIFOメモリ317が記憶可能なメッセージの個数dよりも多くないdc個のメッセージD201のφ(|vi|)の新たな積算値(i=1からdcまでのΣφ(|vi|))が出力されるまでの間、そのdc個のメッセージD201すべてを、小FIFOメモリ317に記憶しておくこと、つまり、dc個のメッセージD201のφ(|vi|)が積算されるまでの間、そのdc個のメッセージD201すべてを遅延することができ、その遅延後のメッセージD201を、dc個のメッセージD201のφ(|vi|)の積算が終了した後に出力することができる。 Here, the number d of messages that can be small FIFO memory 317 stores are rows of check matrix corresponding to the check nodes d c pieces of message D201 that integrated value in the register 305 is stored is input weight d If it is not smaller than c, a new integrated value (i) of φ (| v i |) of d c messages D201 not larger than the number d of messages that can be stored in the small FIFO memory 317 from the register 305. = 1 to d c until Σφ (| v i |)) is output, all the d c messages D201 are stored in the small FIFO memory 317, that is, d c phi messages D201 (| v i |) until it is integrated, its d c number of messages D201 can defer all, the messages D201 after the delay of d c number of messages D201 phi ( | v i |) can be output after the integration is completed.

そこで、制御部202(図25)は、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みdcが、小FIFOメモリ317が記憶可能なメッセージの数d以下であるときには、小FIFOメモリ317で遅延されたメッセージD201のφ(|vi|)を選択することをセレクタ318に指示する制御信号C204を、メッセージ計算部201のセレクタ318に供給し、これにより、セレクタ318では、小FIFOメモリ317で遅延された1回目のメッセージD201が選択されて出力される。 Therefore, the control unit 202 (FIG. 25) determines that the weight d c of the check matrix row corresponding to the check node to which the branch for which a message is to be obtained is connected is the number d of messages that the small FIFO memory 317 can store. When it is below, the control signal C204 for instructing the selector 318 to select φ (| v i |) of the message D201 delayed by the small FIFO memory 317 is supplied to the selector 318 of the message calculation unit 201. Accordingly, the selector 318 selects and outputs the first message D201 delayed by the small FIFO memory 317.

セレクタ318が出力するメッセージ(小FIFOメモリ317で遅延された1回目のメッセージD201、又は、2回目のメッセージDD201)のうちの最上位ビットを除く下位ビット、つまり、絶対値D312(|vi|)は、LUT310に供給され、最上位ビット、つまり、符号ビットD313は、EXOR回路315に供給される。 Of the messages output by the selector 318 (the first message D201 delayed by the small FIFO memory 317 or the second message DD201), the least significant bits other than the most significant bit, that is, the absolute value D312 (| v i | ) Is supplied to the LUT 310, and the most significant bit, that is, the sign bit D313 is supplied to the EXOR circuit 315.

LUT310は、LUT300と同様のLUTで、メッセージの絶対値D312(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果D314(φ(|vi|))を読み出し、セレクタ311のc端子に供給する。 The LUT 310 is the same LUT as the LUT 300, and the operation result D314 (φ (| v i |) obtained by calculating the nonlinear function φ (| v i |) using the message absolute value D312 (| v i |) as an argument. ) And is supplied to the c terminal of the selector 311.

セレクタ311は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるLUT310からの演算結果D314(φ(|vi|))を、演算結果D315(φ(|vi|))として、演算器312に供給する。 The selector 311 at the time of a check node calculation selects the terminal c, the operation result from LUT310 supplied to the terminal c thereof D314 of (φ (|) | v i ), the operation result D315 (φ (| v i | )) To the calculator 312.

演算器312は、レジスタ305から供給された値D308から、セレクタ311から供給された値D315を減算し、その減算結果を、減算値D316としてLUT314に供給する。すなわち、演算器312は、検査行列の1行に亘る全ての枝からのメッセージD201(メッセージvi)から求められたφ(|vi|)の積算値D308(i=1からi=dcまでのΣφ(|vi|))から、求めたい枝からのメッセージ(メッセージvi)から求められたφ(|vi|)の値D315を減算して、その減算値(i=1からi=dc-1までのΣφ(|vi|))を減算値D316としてLUT314に供給する。 The arithmetic unit 312 subtracts the value D315 supplied from the selector 311 from the value D308 supplied from the register 305, and supplies the subtraction result to the LUT 314 as a subtraction value D316. That is, the calculator 312, phi obtained from the messages D201 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) of the integrated value D 308 (i = 1 from i = d c Σφ (| v i |)) until the value D315 of φ (| v i |) obtained from the message (message v i ) from the branch to be obtained is subtracted, and the subtraction value (from i = 1) Σφ (| v i |) up to i = d c −1) is supplied to the LUT 314 as a subtraction value D316.

LUT314は、演算器312からの減算値D316(i=1からi=dc-1までのΣφ(|vi|))を引数として、逆関数φ-1(Σφ(|vi|))の演算を行った演算結果D318(φ-1(Σφ(|vi|)))を出力する。 The LUT 314 uses the subtraction value D316 (Σφ (| v i |) from i = 1 to i = d c −1) as an argument to the inverse function φ −1 (Σφ (| v i |)). The calculation result D318 (φ −1 (Σφ (| v i |))) obtained by performing the above calculation is output.

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

検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304が乗算された乗算結果D309(i=1からdcまでのΠsign(vi))がレジスタ307に格納された場合、セレクタ308は、レジスタ307に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304が乗算された値D310(i=1からi=dcまでのΠsign(vi))を選択し、レジスタ309に出力して格納させる。レジスタ309は、格納している値D311を、セレクタ308とEXOR回路315に供給する。 If (Paisign from i = 1 to d c (v i)) multiplication result D309 to the sign bit D304 is multiplied by the messages D201 from all of the branches across one line of the parity check matrix stored in the register 307, the selector 308, Paisign the value stored in the register 307, i.e., the value D310 (i = 1 the sign bit D304 of the message D201 is multiplied from all of the branches across one line of the parity check matrix until i = d c (v i )) is selected and output to the register 309 for storage. The register 309 supplies the stored value D311 to the selector 308 and the EXOR circuit 315.

検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304が乗算された乗算結果D309(i=1からdcまでのΠsign(vi))がレジスタ307に格納される直前までは、セレクタ308は、レジスタ309から供給された値D311を選択し、レジスタ309に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD201(メッセージvi)の符号ビットD304が乗算されるまで、レジスタ309は、前回格納した値を、セレクタ308とEXOR回路315に供給する。 It is (from i = 1 Πsign to d c (v i)) multiplication result D309 to the sign bit D304 is multiplied by the messages D201 from all of the branches across one line of the parity check matrix until just before is stored in the register 307 The selector 308 selects the value D311 supplied from the register 309, outputs it to the register 309, and stores it again. That is, the register 309 supplies the previously stored value to the selector 308 and the EXOR circuit 315 until the sign bits D304 of the message D201 (message v i ) from all branches over one row of the parity check matrix are multiplied. .

一方、レジスタ307に1行に亘る全ての枝からのメッセージD201の符号ビットD304が乗算された値D310(i=1からi=dcまでのΠsign(vi))が格納されたとき、その値D301がセレクタ308で選択されて、レジスタ309に格納されるとともに、レジスタ305に、上述したように、1行分のメッセージD201のφ(|vi|)を積算した新たな積算値(i=1からi=dcまでのΣφ(|vi|))が格納される。 On the other hand, when the (Paisign of i = 1 through i = d c (v i) ) value D310 to the sign bit D304 is multiplied by the messages D201 from all of the branches across one line to the register 307 is stored, the The value D301 is selected by the selector 308 and stored in the register 309, and at the same time, a new integrated value (i) obtained by integrating φ (| v i |) of the message D201 for one line in the register 305 as described above. = from 1 to i = d c Σφ (| v i |)) is stored.

レジスタ305に新たな積算値(i=1からi=dcまでのΣφ(|vi|))が格納されると、上述したように、セレクタ318が、小FIFOメモリ317で遅延されたメッセージD201、又は2回目のメッセージDD201を選択して出力し、セレクタ318が出力するメッセージのうちの、最上位ビットを除く下位ビット、つまり、絶対値(|vi|)が、LUT310に供給され、最上位ビット、つまり、符号ビットD313が、EXOR回路315に供給される。 New accumulated value in the register 305 (Sigma] [phi of i = 1 through i = d c (| v i |)) When is stored, a message as described above, the selector 318, which is delayed by a small FIFO memory 317 D201 or the second message DD201 is selected and output, and the lower bits of the message output by the selector 318 except the most significant bit, that is, the absolute value (| v i |) is supplied to the LUT 310, The most significant bit, that is, the sign bit D313 is supplied to the EXOR circuit 315.

EXOR回路315は、レジスタ309に格納されて出力される新たな値D311と、セレクタ318からのメッセージの符号ビットとの排他的論理和を演算することにより、値D311を、セレクタ318からのメッセージの符号ビットD313で除算し、除算結果を除算値D319として出力する。すなわち、EXOR回路315は、検査行列の1行に亘る全ての枝からのメッセージD201の符号ビットD304の乗算値(i=1からi=dcまでのΠsign(vi))を、求めたい枝からのメッセージviの符号ビットD313(i=dcのsign(vi))で除算して、その除算値(i=1からi=dc-1までのΠsign(vi))を除算値D319として出力する。 The EXOR circuit 315 calculates the value D311 of the message from the selector 318 by calculating the exclusive OR of the new value D311 stored and output in the register 309 and the sign bit of the message from the selector 318. Divide by the sign bit D313 and output the division result as a division value D319. That, EXOR circuit 315, branches multiplication value of the sign bit D304 of the messages D201 from all of the branches across one line of the parity check matrix (Paisign of i = 1 to i = d c (v i) ), to be obtained Is divided by the sign bit D313 (i = d c sign (v i )) of the message v i and the divided value (Πsign (v i ) from i = 1 to i = d c −1) is divided. Output as the value D319.

そして、メッセージ計算部201では、LUT314から出力された演算結果D318を下位ビットとするとともに、EXOR回路315から出力された除算値D319を最上位ビット(符号ビット)とするビット列D320(メッセージuj)が、セレクタ316のc端子に供給される。 Then, in the message calculation unit 201, a bit string D320 (message u j ) having the calculation result D318 output from the LUT 314 as the lower bits and the division value D319 output from the EXOR circuit 315 as the most significant bit (sign bit). Is supplied to the c terminal of the selector 316.

セレクタ316は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるビット列D320(メッセージuj)を、メッセージD202として、出力ポートP202から出力する。 The selector 316 selects the c terminal during the check node calculation, and outputs the bit string D320 (message u j ) supplied to the c terminal from the output port P202 as the message D202.

以上のように、セレクタ301,311、及び316がc端子を選択しているメッセージ計算部201では、式(7)のチェックノード演算が行われ、その結果得られるメッセージ(チェックノードメッセージ)ujが、出力ポートP202から出力される。 As described above, in the message calculation unit 201 in which the selectors 301, 311, and 316 have selected the c terminal, the check node calculation of Expression (7) is performed, and the resulting message (check node message) u j Is output from the output port P202.

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

以上のように、図25の復号装置では、遅延メモリとして、検査行列の重みの最大値よりも少ない数のメッセージを記憶する小FIFOメモリ317(図26)を設けるようにしたので、少なくとも検査行列の重みの最大値に等しい数のメッセージを記憶するFIFOメモリ320(図22)を設ける場合に比較して、復号装置の規模を削減することができる。   As described above, in the decoding apparatus of FIG. 25, as the delay memory, the small FIFO memory 317 (FIG. 26) that stores a smaller number of messages than the maximum value of the weight of the parity check matrix is provided. Compared with the case where the FIFO memory 320 (FIG. 22) for storing a number of messages equal to the maximum value of the weights is provided, the scale of the decoding device can be reduced.

さらに、注目ノードに対応する検査行列の重みが、記憶可能個数d以下である場合(記憶可能個数dより大でない場合)には、小FIFOメモリ317の出力を選択して、ノード(バリアブルノード、チェックノード)の演算に用いるので、少なくとも検査行列の重みの最大値に等しい数のメッセージを記憶するFIFOメモリ320(図22)を有する図21の復号装置と同様の時間でメッセージの読み書きを行うことができる。したがって、図21(及び図8)の復号装置と同様の回数だけ繰り返し復号を行うことができるので(1回の復号に要する時間が図21(及び図8)の復号装置と同様となるので)、復号性能が劣化することを抑制することができる。   Furthermore, when the weight of the parity check matrix corresponding to the node of interest is less than or equal to the storable number d (when it is not greater than the storable number d), the output of the small FIFO memory 317 is selected and a node (variable node, Since it is used for the computation of the check node), the message is read and written at the same time as the decoding device of FIG. Can do. Therefore, iterative decoding can be performed as many times as the decoding device of FIG. 21 (and FIG. 8) (since the time required for one decoding is the same as that of the decoding device of FIG. 21 (and FIG. 8)). Therefore, it is possible to suppress degradation of the decoding performance.

また、注目ノードに対応する検査行列の重みが、記憶可能個数dより大である場合には、メッセージメモリ104から同一のメッセージを2回読み出し、2回目に読み出されたメッセージを選択して、ノードの演算に用いるので、注目ノードに対応する検査行列の重みが、記憶可能個数dより大であっても、LDPC符号の復号を行うことができる。   Further, when the weight of the check matrix corresponding to the node of interest is larger than the storable number d, the same message is read twice from the message memory 104, the second read message is selected, Since it is used for the node calculation, the LDPC code can be decoded even if the weight of the parity check matrix corresponding to the node of interest is larger than the storable number d.

以上から、図25の復号装置によれば、規模を削減しつつ、復号性能の劣化を抑制することができる。   From the above, according to the decoding device of FIG. 25, it is possible to suppress degradation of decoding performance while reducing the scale.

ここで、小FIFOメモリ317の記憶可能個数dが、例えば、3であり、復号の対象のLDPC符号を定義する検査行列が、例えば、図1に示した、各列の重みdvが3で、且つ、各行の重みが6の行列である場合には、記憶可能個数dである3が、検査行列の列の重みdvである3よりも小でなく、したがって、バリアブルノード演算時には、3個のメッセージD201が積算されるまでの間、小FIFOメモリ317において、その3個のメッセージD201すべてを遅延することができるから、セレクタ318では、端子fに供給される、小FIFOメモリ317で遅延された1回目のメッセージD201が選択される。 Here, the storable number d of the small FIFO memory 317 is 3, for example, and the parity check matrix defining the LDPC code to be decoded is, for example, the weight d v of each column shown in FIG. When the weight of each row is a matrix of 6, 3 that is the storable number d is not smaller than 3 that is the column weight d v of the parity check matrix. Since all the three messages D201 can be delayed in the small FIFO memory 317 until the number of messages D201 are accumulated, the selector 318 delays in the small FIFO memory 317 supplied to the terminal f. The first message D201 is selected.

また、この場合、記憶可能個数dである3が、検査行列の行の重みdcである6よりも小であり、したがって、チェックノード演算時には、記憶可能個数dである3よりも多い6個のメッセージD201のφ(|vi|)が積算されるまでの間、小FIFOメモリ317において、その6個のメッセージD201すべてを遅延することができないため、セレクタ318では、端子mに供給される、メッセージメモリ104からの2回目のメッセージDD201が選択される。 In this case, 3 is storable number d is a smaller than 6 is the weight d c line of the check matrix, therefore, at the time of a check node calculation, six more than 3 is storable number d Until φ (| v i |) of the message D201 is accumulated, all six messages D201 cannot be delayed in the small FIFO memory 317, and therefore the selector 318 supplies the message D201 to the terminal m. The second message DD201 from the message memory 104 is selected.

なお、図25の復号装置では、メッセージ計算部201において、バリアブルノードの演算を行う回路と、チェックノードの演算を行う回路との一部(演算器302、レジスタ303、セレクタ304、レジスタ305、及び演算器312)が共有化されているので、その共有化の分だけ、復号装置の規模を、より削減することができる。   In the decoding apparatus of FIG. 25, in the message calculation unit 201, a part of the circuit that performs the variable node calculation and the circuit that performs the check node calculation (the calculator 302, the register 303, the selector 304, the register 305, and Since the computing unit 312) is shared, the scale of the decoding device can be further reduced by the sharing.

次に、図30は、本発明を適用した復号装置の第3実施の形態の構成例を示すブロック図である。   Next, FIG. 30 is a block diagram illustrating a configuration example of the third embodiment of the decoding device to which the present invention has been applied.

なお、図中、図25の復号装置の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。すなわち、図30の復号装置は、メッセージ計算部201に代えて、メッセージ計算部211が設けられているとともに、制御部202に代えて、制御部212が設けられている他は、図25の復号装置と同様に構成されている。   In the figure, portions corresponding to those of the decoding device of FIG. 25 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate. That is, the decoding apparatus in FIG. 30 is provided with a message calculation unit 211 instead of the message calculation unit 201 and a control unit 212 in place of the control unit 202. It is configured in the same way as the device.

図30の復号装置では、メッセージ計算部211が、バリアブルノード演算を行う回路と、チェックノード演算を行う回路との一部を共有する構成となっている。さらに、図30の復号装置では、バリアブルノード演算とチェックノード演算とを行うメッセージ計算部211が、図22のメッセージ計算部191のFIFOメモリ320のように、検査行列の重みの最大値に等しい数のメッセージを記憶する遅延メモリではなく、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリを有している。   In the decoding device of FIG. 30, the message calculation unit 211 is configured to share a part of a circuit that performs variable node calculation and a circuit that performs check node calculation. Further, in the decoding apparatus of FIG. 30, the message calculation unit 211 that performs variable node calculation and check node calculation is a number equal to the maximum value of the check matrix weights as in the FIFO memory 320 of the message calculation unit 191 of FIG. The delay memory stores a number of messages smaller than the maximum value of the check matrix weights.

また、図30の復号装置では、制御部212が、メッセージメモリ104に対するメッセージ(データ)の読み書き制御として、図15のフローチャートで説明したように、図12の復号装置の制御部174と同様の読み書き制御を行う。   In the decoding device of FIG. 30, the control unit 212 performs read / write control similar to that of the control unit 174 of the decoding device in FIG. 12 as described in the flowchart of FIG. Take control.

さらに、制御部212は、制御信号C603を、メッセージ計算部211に供給し、その制御信号C603によって、バリアブルノード演算、又はチェックノード演算を行うことを、メッセージ計算部211に指示する。   Further, the control unit 212 supplies the control signal C603 to the message calculation unit 211, and instructs the message calculation unit 211 to perform variable node calculation or check node calculation with the control signal C603.

また、制御部212は、図20のフローチャートで説明したように、セレクタ制御の処理を行い、制御信号C104に相当する制御信号C604を、メッセージ計算部211に供給する。メッセージ計算部211は、制御部212からの制御信号C604に従い、メッセージメモリ104から2回目に読み出されたメッセージを選択的に用いて、バリアブルノード演算やチェックノード演算を行う。   Further, as described with reference to the flowchart of FIG. 20, the control unit 212 performs selector control processing, and supplies a control signal C604 corresponding to the control signal C104 to the message calculation unit 211. The message calculation unit 211 performs variable node calculation and check node calculation by selectively using the message read from the message memory 104 for the second time in accordance with the control signal C604 from the control unit 212.

図30の復号装置では、メッセージメモリ104に記憶されているメッセージが1つずつ読み出され、メッセージ計算部211に供給される。メッセージ計算部211は、メッセージメモリ104からのメッセージを用いて演算が行われ、その演算によって求められたメッセージが、メッセージメモリ104に格納される。図30の復号装置では、以上の処理が繰り返し行われ、フルシリアルの繰り返し復号が行われる。   In the decoding device of FIG. 30, messages stored in the message memory 104 are read one by one and supplied to the message calculation unit 211. The message calculation unit 211 performs an operation using the message from the message memory 104, and the message obtained by the operation is stored in the message memory 104. In the decoding device of FIG. 30, the above processing is repeated and full serial iterative decoding is performed.

すなわち、受信データメモリ105には、送信されてきたLDPC符号を受信することにより得られる受信データ(対数尤度比)D100が供給され、受信データメモリ105は、その受信データD100を記憶する。   That is, the reception data memory 105 is supplied with reception data (log likelihood ratio) D100 obtained by receiving the transmitted LDPC code, and the reception data memory 105 stores the reception data D100.

バリアブルノード演算時には、受信データメモリ105は、制御部212から供給される制御信号に従って、記憶している受信データを読み出し、受信データD101として、メッセージ計算部211に供給する。   During the variable node calculation, the reception data memory 105 reads the stored reception data in accordance with the control signal supplied from the control unit 212 and supplies it to the message calculation unit 211 as reception data D101.

また、バリアブルノード演算時には、メッセージメモリ104は、制御部212から供給される制御信号に従い、記憶している同一のメッセージを1回、又は2回読み出して、1回目に読み出したメッセージをメッセージD601として、メッセージ計算部211に供給し、2回目に読み出したメッセージをメッセージDD601として、メッセージ計算部211に供給する。   Further, during the variable node calculation, the message memory 104 reads the same stored message once or twice according to the control signal supplied from the control unit 212, and the message read first time as the message D601. The message read to the message calculation unit 211 and read for the second time is supplied to the message calculation unit 211 as a message DD601.

メッセージ計算部211は、メッセージメモリ104から供給される1回目のメッセージD601、及び受信データメモリ105から供給される受信データD101、さらには、必要に応じて、メッセージメモリ104からの供給される2回目のメッセージDD601を用い、制御部212から供給される制御信号C603及びC604に従って、検査行列に基づき、バリアブルノード演算を行い、そのバリアブルノード演算の結果得られたメッセージを、メッセージD622として、メッセージメモリ104に供給する。   The message calculation unit 211 receives the first message D601 supplied from the message memory 104, the reception data D101 supplied from the reception data memory 105, and the second time supplied from the message memory 104 as necessary. Message DD601 is used, variable node calculation is performed based on the check matrix in accordance with control signals C603 and C604 supplied from the control unit 212, and a message obtained as a result of the variable node calculation is set as message D622 in the message memory 104. To supply.

そして、メッセージメモリ104は、制御部212から供給される制御信号に従い、メッセージ計算部211から供給されるメッセージD622を記憶する。   The message memory 104 stores the message D622 supplied from the message calculation unit 211 in accordance with the control signal supplied from the control unit 212.

一方、チェックノード演算時には、メッセージメモリ104は、制御部212から供給される制御信号に従って、記憶している同一のメッセージを1回、又は2回読み出して、1回目に読み出したメッセージをメッセージD601として、メッセージ計算部211に供給し、2回目に読み出したメッセージをメッセージDD601として、メッセージ計算部211に供給する。   On the other hand, at the time of the check node calculation, the message memory 104 reads the same stored message once or twice according to the control signal supplied from the control unit 212, and the message read the first time as the message D601. The message read to the message calculation unit 211 and read for the second time is supplied to the message calculation unit 211 as a message DD601.

メッセージ計算部211は、メッセージメモリ104から供給される1回目のメッセージD601、さらには、必要に応じて、メッセージメモリ104から供給される2回目のメッセージDD601を用い、制御部212からの制御信号C603及びC604に従って、チェックノード演算を行い、そのチェックノード演算によって求められたメッセージを、メッセージD622として、メッセージメモリ104に供給する。   The message calculation unit 211 uses the first message D601 supplied from the message memory 104 and, if necessary, the second message DD601 supplied from the message memory 104 to control the control signal C603 from the control unit 212. And a check node operation according to C604, and a message obtained by the check node operation is supplied to the message memory 104 as a message D622.

そして、メッセージメモリ104は、制御部212から供給される制御信号に従い、メッセージ計算部211から供給されるメッセージD622を記憶する。   The message memory 104 stores the message D622 supplied from the message calculation unit 211 in accordance with the control signal supplied from the control unit 212.

ここで、図30のメッセージ計算部211で行われる演算について説明する。   Here, the calculation performed by the message calculation unit 211 in FIG. 30 will be described.

いま、チェックノードに接続している枝のうちのj番目の枝から出力されるメッセージ(データ)として、式u'j=φ(|uj|)×sign(uj)で表されるメッセージu'jを導入すると、式(1)と式(7)は、それぞれ、式(9)と式(10)に書き直すことができる。 Now, as a message (data) output from the jth branch of the branches connected to the check node, a message represented by the expression u ′ j = φ (| u j |) × sign (u j ) When u ′ j is introduced, Equation (1) and Equation (7) can be rewritten as Equation (9) and Equation (10), respectively.

Figure 0004780027
・・・(9)
Figure 0004780027
... (9)

Figure 0004780027
・・・(10)
Figure 0004780027
... (10)

ここで、式u'j=φ(|uj|)×sign(uj)を、メッセージujについて書き直すと、式uj-1(|u'j|)×sign(u'j)となる。この式uj-1(|u'j|)×sign(u'j)を、バリアブルノード演算の式(1)に代入することにより、新たなバリアブルノード演算の式としての式(9)を得ることができる。 Here, when the expression u ′ j = φ (| u j |) × sign (u j ) is rewritten for the message u j , the expression u j = φ −1 (| u ′ j |) × sign (u ′ j ). By substituting this expression u j = φ −1 (| u ′ j |) × sign (u ′ j ) into the expression (1) of the variable node calculation, the expression (9 ) Can be obtained.

また、式u'j=φ(|uj|)×sign(uj)に、チェックノード演算の式(7)を代入することにより、新たなチェックノード演算の式としての式(10)を得ることができる。 Further, by substituting the expression (7) of the check node calculation into the expression u ′ j = φ (| u j |) × sign (u j ), the expression (10) as a new check node calculation expression is obtained. Obtainable.

式(9)のバリアブルノード演算では、入力データ(メッセージ)u'jの絶対値|u'j|を引数とする逆関数φ-1(|u'j|)の演算が行われ、式(10)のチェックノード演算では、入力データviの絶対値|vi|を引数とする非線形関数φ(|vi|)の演算が行われる。ここで、非線形関数φ(x)とその逆関数φ-1(x)とは、x>0において等しい。したがって、式(9)及び式(10)のいずれでも、入力データxの絶対値|x|を引数として、関数φ(x)の演算が行われる。 In the variable node calculation of Expression (9), the inverse function φ −1 (| u ′ j |) is calculated using the absolute value | u ′ j | of the input data (message) u ′ j as an argument. In the check node calculation of 10), the calculation of the nonlinear function φ (| v i |) using the absolute value | v i | of the input data v i as an argument is performed. Here, the nonlinear function φ (x) and its inverse function φ −1 (x) are equal when x> 0. Therefore, in both formula (9) and formula (10), the function φ (x) is calculated using the absolute value | x | of the input data x as an argument.

そして、式(9)では、関数φ(x)の演算結果(φ-1(|u'j|)の演算結果)に入力データu'jの符号(sign(u'j))を考慮した値(φ-1(|u'j|)×sign(u'j))を積算し、その積算値に、受信データu0iを加算して、メッセージviが求められる。 In Expression (9), the sign of the input data u ′ j (sign (u ′ j )) is considered in the calculation result of the function φ (x) (the calculation result of φ −1 (| u ′ j |)). The value (φ −1 (| u ′ j |) × sign (u ′ j )) is integrated, and the received data u 0i is added to the integrated value to obtain the message v i .

また、式(10)では、関数φ(x)の演算結果(φ(|uj|)の演算結果)を積算し、それとは別に、入力データviの符号ビットの相乗積(Πsign(vi))を求め、関数φ(x)の演算結果の積算値と、符号ビットの相乗積とを乗算して、メッセージu'jが求められる。 In addition, in Expression (10), the calculation result of the function φ (x) (the calculation result of φ (| u j |)) is integrated, and separately, the product of the sign bits of the input data v i (Πsign (v i )) is obtained, and the integrated value of the operation result of the function φ (x) is multiplied by the product of the sign bits to obtain the message u ′ j .

図30のメッセージ計算部211では、式(9)のバリアブルノード演算と、式(10)のチェックノード演算とが行われる。   In the message calculation unit 211 of FIG. 30, the variable node calculation of Expression (9) and the check node calculation of Expression (10) are performed.

図31は、図30のメッセージ計算部211の構成例を示している。   FIG. 31 shows a configuration example of the message calculation unit 211 of FIG.

メッセージ計算部211には、入力ポートP101,P601,PD601,P603,P604と、出力ポートP622が設けられている。   The message calculation unit 211 is provided with input ports P101, P601, PD601, P603, and P604, and an output port P622.

入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給(入力)される。入力ポートP601には、メッセージメモリ104から2回読み出される同一のメッセージD601及びDD601のうちの1回目に読み出されるメッセージ(1回目のメッセージ)D601が供給(入力)され、入力ポートPD601には、2回目に読み出されるメッセージ(2回目のメッセージ)DD601が供給される。また、入力ポートP603には、制御部212(図30)からの制御信号C603が供給され、入力ポートP604には、制御部212からの制御信号C604が供給される。   The reception data D101 read from the reception data memory 105 is supplied (input) to the input port P101. The input port P601 is supplied (inputted) with the first message D601 (first message) D601 read out of the same message D601 and DD601 read twice from the message memory 104. A message (second message) DD601 read out the second time is supplied. Further, the control signal C603 from the control unit 212 (FIG. 30) is supplied to the input port P603, and the control signal C604 from the control unit 212 is supplied to the input port P604.

メッセージ計算部211は、入力ポートP601から入力される1回目のメッセージD601、さらには、入力ポートPD601から入力される2回目のメッセージDD601や、入力ポートP101から入力されるメッセージ(受信データ)を、必要に応じて用い、入力ポートP603から入力される制御信号C603及びC604に従って、検査行列に基づき、式(9)のバリアブルノード演算又は式(10)のチェックノード演算を行い、その結果得られるメッセージD622を、出力ポートP622から出力する。   The message calculation unit 211 receives the first message D601 input from the input port P601, the second message DD601 input from the input port PD601, and the message (received data) input from the input port P101. A message obtained as a result of performing a variable node operation of Equation (9) or a check node operation of Equation (10) based on the check matrix in accordance with control signals C603 and C604 input from the input port P603. D622 is output from the output port P622.

ここで、図32を参照して、図31のメッセージ計算部211で行われるバリアブルノード演算とチェックノード演算について説明する。   Here, with reference to FIG. 32, the variable node calculation and the check node calculation performed by the message calculation unit 211 of FIG. 31 will be described.

図32左側は、式(1)のバリアブルノード演算を行うバリアブルノードと、式(7)のチェックノード演算を行うチェックノードとを模式的に示しており、図27右側と同一の図である。   The left side of FIG. 32 schematically shows the variable node that performs the variable node calculation of Expression (1) and the check node that performs the check node calculation of Expression (7), and is the same diagram as the right side of FIG.

図32左側では、図27右側で説明したように、チェックノードに入力される入力データに、非線形関数φ(x)の演算を施してから、その演算結果が、チェックノードに入力され、チェックノードにおいて、非線形関数φ(x)の演算結果が積算されている。さらに、チェックノードから出力された出力データ(逆関数φ-1(x)の演算が施される前の、非線形関数φ(x)の演算結果の積算値)に、逆関数φ-1(x)の演算が施され、これにより、メッセージujが求められている。 On the left side of FIG. 32, as described on the right side of FIG. 27, after the operation of the nonlinear function φ (x) is performed on the input data input to the check node, the calculation result is input to the check node. , The calculation results of the nonlinear function φ (x) are integrated. Furthermore, (before the calculation of the inverse function phi -1 (x) is subjected, the integrated value of the calculation result of the nonlinear function phi (x)) output data output from the check node, the inverse function phi -1 (x ) And the message u j is obtained.

このメッセージujは、入力データとして、バリアブルノードに入力され、バリアブルノード演算に用いられる。 This message u j is input as input data to the variable node and used for variable node calculation.

したがって、図32左側に示したように、チェックノードから出力された出力データxに、逆関数φ-1(x)の演算を施す代わりに、図32右側に示すように、バリアブルノードに入力される入力データxに、逆関数φ-1(x)の演算を施しても、バリアブルノード演算とチェックノード演算を行うことができる。 Therefore, as shown on the left side of FIG. 32, instead of performing the operation of the inverse function φ −1 (x) on the output data x output from the check node, it is input to the variable node as shown on the right side of FIG. The variable node calculation and the check node calculation can be performed even if the inverse function φ −1 (x) is calculated on the input data x.

すなわち、図32右側では、式(9)で説明したように、バリアブルノードに入力される入力データに、逆関数φ-1(x)の演算が施され、バリアブルノードにおいて、その逆関数φ-1(x)の演算結果を積算することにより、メッセージviが求められている。また、図32右側では、式(10)で説明したように、チェックノードに入力される入力データに、非線形関数φ(x)の演算が施され、チェックノードにおいて、その非線形関数φ(x)の演算結果が積算されている。さらに、図32右側では、チェックノードにおいて、非線形関数φ(x)の演算結果を積算して得られる積算値が、(逆関数φ-1(x)の演算が施されずに)そのまま出力データu'jとして出力されている。 That is, in FIG. 32 right, as described in equation (9), the input data is input to the variable node calculation of the inverse function phi -1 (x) is subjected, in the variable node, the inverse function phi - The message v i is obtained by integrating the calculation results of 1 (x). On the right side of FIG. 32, as described in Expression (10), the input data input to the check node is subjected to the calculation of the nonlinear function φ (x), and the nonlinear function φ (x) is calculated at the check node. The calculation results of are integrated. Furthermore, on the right side of FIG. 32, the integrated value obtained by integrating the calculation results of the nonlinear function φ (x) at the check node is the output data as it is (without the calculation of the inverse function φ −1 (x)). It is output as u'j .

図31のメッセージ計算部211では、図32右側に示したようにメッセージviとu'jを求める式(9)のバリアブルノード演算と式(10)のチェックノード演算が行われる。 In the message calculation unit 211 of FIG. 31, the variable node calculation of Expression (9) and the check node calculation of Expression (10) for obtaining the messages v i and u ′ j are performed as shown on the right side of FIG.

このように、図31のメッセージ計算部211は、図32右側に示したメッセージviとu'jを求める式(9)のバリアブルノード演算と式(10)のチェックノード演算の両方を行うため、メッセージ計算部211(図31)には、チェックノードに入力される入力データxに対して、逆関数φ-1(x)と同一の演算結果が得られる非線形関数φ(x)の演算結果を出力するとともに、バリアブルノードに入力される入力データxに対して、逆関数φ-1(x)の演算結果を出力するLUT600(及びLUT610)が設けられている。 As described above, the message calculation unit 211 in FIG. 31 performs both the variable node calculation of Expression (9) and the check node calculation of Expression (10) for obtaining the messages v i and u ′ j shown on the right side of FIG. The message calculation unit 211 (FIG. 31) has a calculation result of the nonlinear function φ (x) that can obtain the same calculation result as the inverse function φ −1 (x) for the input data x input to the check node. And an LUT 600 (and LUT 610) for outputting the calculation result of the inverse function φ −1 (x) for the input data x input to the variable node.

そして、図31のメッセージ計算部211は、入力ポートP603に供給された制御信号C603に従って、その実質的な構成を変えて、式(9)のバリアブルノード演算と式(10)のチェックノード演算を選択的に行う。   Then, the message calculation unit 211 of FIG. 31 performs the variable node calculation of Expression (9) and the check node calculation of Expression (10) by changing the substantial configuration according to the control signal C603 supplied to the input port P603. Selectively.

すなわち、メッセージ計算部211(図31)は、セレクタ601,611、及び615を有しており、入力ポートP603に供給された制御信号C603は、セレクタ601,611、及び615に供給される。   That is, the message calculation unit 211 (FIG. 31) includes selectors 601, 611, and 615, and the control signal C603 supplied to the input port P603 is supplied to the selectors 601, 611, and 615.

セレクタ601,611、及び615は、v端子とc端子とを有し、制御信号C603に従い、v端子又はc端子のうちのいずれかに供給される値を選択して、後段に出力する。すなわち、セレクタ601,611、及び615は、制御信号C603がバリアブルノード演算を指示する制御信号である場合には、v端子に供給される値を選択して後段に出力し、制御信号C603がチェックノード演算を指示する制御信号である場合には、c端子に供給される値を選択して後段に出力する。   The selectors 601, 611, and 615 have a v terminal and a c terminal, select a value supplied to either the v terminal or the c terminal according to the control signal C603, and output the selected value to the subsequent stage. That is, when the control signal C603 is a control signal for instructing variable node calculation, the selectors 601, 611, and 615 select the value supplied to the v terminal and output it to the subsequent stage, and the control signal C603 is checked. In the case of a control signal instructing node calculation, the value supplied to the c terminal is selected and output to the subsequent stage.

その結果、図31のメッセージ計算部211では、制御信号C603がバリアブルノード演算を指示しているときには、バリアブルノード演算が行われ、制御信号C603がチェックノード演算を指示しているときには、チェックノード演算が行われる。   As a result, in the message calculation unit 211 of FIG. 31, when the control signal C603 indicates a variable node calculation, a variable node calculation is performed, and when the control signal C603 indicates a check node calculation, a check node calculation is performed. Is done.

すなわち、図33は、図32右側に示したバリアブルノード演算時の図31のメッセージ計算部211の実質的な構成例を示している。   That is, FIG. 33 shows a substantial configuration example of the message calculation unit 211 of FIG. 31 at the time of variable node calculation shown on the right side of FIG.

なお、上述したように、バリアブルノード演算時には、セレクタ601,611、及び615はv端子を選択するが、図33では、図31に図示した構成のうちの、セレクタ601,611、及び615がv端子を選択することによってバリアブルノード演算時に機能しない部分(バリアブルノード演算に関係がない部分)の図示を省略してある。   As described above, in the variable node calculation, the selectors 601, 611, and 615 select the v terminal. In FIG. 33, the selectors 601, 611, and 615 of the configuration illustrated in FIG. A portion that does not function during variable node calculation by selecting a terminal (portion not related to variable node calculation) is not shown.

メッセージ計算部211は、入力ポートP101,P601,PD601それぞれから入力されるメッセージを用いて、式(9)のバリアブルノード演算を行い、その結果得られるメッセージD622を、出力ポートP622から出力する。   The message calculation unit 211 performs the variable node calculation of Expression (9) using the messages input from the input ports P101, P601, and PD601, and outputs the resulting message D622 from the output port P622.

すなわち、入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給される。また、入力ポートP601には、メッセージメモリ104から1つずつ読み出された、検査行列の各行に対応するチェックノードからの1回目のメッセージD601(メッセージu'j)が供給される。 That is, the reception data D101 read from the reception data memory 105 is supplied to the input port P101. Further, the first message D601 (message u ′ j ) is supplied to the input port P601 from the check node corresponding to each row of the parity check matrix read out from the message memory 104 one by one.

入力ポートP101に供給された受信データD101は、演算器613に供給される。   The reception data D101 supplied to the input port P101 is supplied to the calculator 613.

また、入力ポートP601に供給されたメッセージD601(メッセージu'j)のうちの最上位ビットを除く下位ビット、つまり、メッセージD601の絶対値D603(|u'j|)は、LUT600に供給される。 Further, the low-order bits excluding the most significant bit of the message D601 (message u ′ j ) supplied to the input port P601, that is, the absolute value D603 (| u ′ j |) of the message D601 is supplied to the LUT 600. .

LUT600は、非線形関数φ(x)(及び逆関数φ-1(x))の演算結果を記憶しており、絶対値D603(|u'j|)を引数として、逆関数φ-1(|u'j|)の演算を行った演算結果D605(φ-1(|u'j|))を読み出して出力する。LUT600が出力する演算結果D605(φ-1(|u'j|))は、その最上位ビットに、入力ポートP601に供給されたメッセージD601(メッセージu'j)のうちの最上位ビット、つまりメッセージD601の符号ビットD604(sign(u'j))が付加されることにより、メッセージD606(チェックノードメッセージuj)とされ、セレクタ601のv端子に供給される。 The LUT 600 stores the calculation result of the nonlinear function φ (x) (and the inverse function φ −1 (x)), and takes the absolute value D603 (| u ′ j |) as an argument and the inverse function φ −1 (| u 'j |) calculates a calculation result of the D605 (φ -1 (| u' j |)) to read and output. The operation result D605 (φ −1 (| u ′ j |)) output from the LUT 600 is the most significant bit of the message D601 (message u ′ j ) supplied to the input port P601, that is, the most significant bit. By adding the sign bit D604 (sign (u ′ j )) of the message D601, the message D606 (check node message u j ) is obtained and supplied to the v terminal of the selector 601.

セレクタ601は、上述したように、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給されたメッセージD606(チェックノードメッセージuj)は、メッセージD607として、演算器602に供給される。 As described above, the selector 601 selects the v terminal at the time of the variable node calculation, and the message D606 (check node message u j ) supplied to the v terminal is supplied to the calculator 602 as the message D607. .

演算器602は、セレクタ601からのメッセージD607(メッセージuj)とレジスタ603に格納されている値D608とを加算することにより、メッセージD607を積算し、その結果得られる積算値を、レジスタ603に再格納する。なお、検査行列の1列に亘る全ての枝からの(メッセージu'jから得られた)メッセージD607が積算された場合、レジスタ603はリセットされる。 The computing unit 602 adds the message D607 (message u j ) from the selector 601 and the value D608 stored in the register 603 to add up the message D607, and the integrated value obtained as a result is stored in the register 603. Store again. Note that if the message D607 from all the branches over one column of the check matrix (obtained from the message u ′ j ) is accumulated, the register 603 is reset.

検査行列の1列に亘るメッセージD601が1つずつ読み込まれ、レジスタ603に1列分のメッセージD607が積算された値が格納された場合、すなわち、レジスタ603に、検査行列の1列に亘る全ての枝からのメッセージD607(メッセージuj)が積算された積算値(j=1からdvまでのΣuj)が格納された場合、セレクタ604は、レジスタ603に格納されている値、すなわち、検査行列の1列に亘る全ての枝からのメッセージD607(メッセージuj)が積算された積算値D608(j=1からdvまでのΣuj)を選択し、レジスタ605に出力して格納させる。 When the message D601 over one column of the check matrix is read one by one, and the value obtained by accumulating the message D607 for one column is stored in the register 603, that is, all over the one column of the check matrix are stored in the register 603. When the integrated value (Σu j from j = 1 to d v ) obtained by integrating the message D607 (message u j ) from the branch is stored, the selector 604 stores the value stored in the register 603, that is, select the message from all of the branches across one row of the parity check matrix D607 (message u j) the accumulated integrated values D608 (? uj j from j = 1 to d v), is stored in output register 605 .

レジスタ605は、格納している値D608を、値D609として、セレクタ604と演算器612に供給する。レジスタ603に1列分のメッセージD607が積算された値が格納される直前までは、セレクタ604は、レジスタ605から供給された値D609を選択し、レジスタ605に出力し再格納させる。すなわち、検査行列の1列に亘る全ての枝からのメッセージD607(メッセージuj)が積算されるまで、レジスタ605は、前回積算された値を、セレクタ604と演算器612に供給する。 The register 605 supplies the stored value D608 as the value D609 to the selector 604 and the calculator 612. The selector 604 selects the value D609 supplied from the register 605, outputs it to the register 605, and stores it again until the value obtained by integrating the message D607 for one column is stored in the register 603. That is, until the message D607 (message u j ) from all the branches over one column of the check matrix is accumulated, the register 605 supplies the previously accumulated value to the selector 604 and the calculator 612.

一方、入力ポートP601に供給されたメッセージD601(メッセージu'j)は、小FIFOメモリ616にも供給される。 On the other hand, the message D601 (message u ′ j ) supplied to the input port P601 is also supplied to the small FIFO memory 616.

小FIFOメモリ616は、メッセージを遅延するための遅延メモリであるが、検査行列の重み(列の重みdv及び行の重みdc)の最大値よりも少ない数(であって1以上)のメッセージを記憶する容量しか有していない、容量の小さいFIFOメモリである。 The small FIFO memory 616 is a delay memory for delaying a message, but has a number (one or more) smaller than the maximum value of the check matrix weight (column weight d v and row weight d c ). This is a small-capacity FIFO memory that has only the capacity to store messages.

小FIFOメモリ616は、メッセージメモリ104からの1回目のメッセージD601を遅延し、セレクタ617のf端子に供給する。   The small FIFO memory 616 delays the first message D601 from the message memory 104 and supplies it to the f terminal of the selector 617.

セレクタ617は、入力端子として、f端子とm端子とを有しており、f端子には、上述したように、小FIFOメモリ616で遅延されたメッセージD601が供給される。また、セレクタ617のm端子には、メッセージメモリ104から端子DD601に供給される2回目のメッセージPD601が供給される。   The selector 617 has an f terminal and an m terminal as input terminals, and the message D601 delayed by the small FIFO memory 616 is supplied to the f terminal as described above. The second message PD601 supplied from the message memory 104 to the terminal DD601 is supplied to the m terminal of the selector 617.

さらに、セレクタ617には、制御部212(図30)から入力ポートP604に供給された制御信号C604が供給される。   Further, the control signal C604 supplied from the control unit 212 (FIG. 30) to the input port P604 is supplied to the selector 617.

セレクタ617は、制御部212からの制御信号C604に従い、小FIFOメモリ616で遅延された1回目のメッセージD601と、メッセージメモリ104からの2回目のメッセージDD601とのうちの一方を、バリアブルノード演算に用いるメッセージとして選択して出力する。   The selector 617 performs one of the first message D601 delayed by the small FIFO memory 616 and the second message DD601 from the message memory 104 according to the control signal C604 from the control unit 212 for variable node calculation. Select and output as a message to use.

セレクタ617が出力するメッセージ、すなわち、小FIFOメモリ616で遅延された1回目のメッセージD601、又は、メッセージメモリ104からの2回目のメッセージDD601のうちの最上位ビットを除く下位ビット、つまり、絶対値は、値D613として、LUT610に供給され、最上位ビット、つまり、符号ビットD614は、LUT610の出力D615の符号ビットとされる。   The lower-order bits excluding the most significant bit of the message output from the selector 617, that is, the first message D601 delayed by the small FIFO memory 616 or the second message DD601 from the message memory 104, that is, the absolute value Is supplied to the LUT 610 as a value D613, and the most significant bit, that is, the sign bit D614 is used as the sign bit of the output D615 of the LUT 610.

ここで、図30の復号装置において、制御部212は、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ616が記憶可能なメッセージの数(記憶可能個数)d以下であるときには、小FIFOメモリ616で遅延された1回目のメッセージD601を選択することをセレクタ617に指示する制御信号C604をメッセージ計算部211の入力ポートP604に供給する。 Here, in the decoding device of FIG. 30, the control unit 212 can store the column weight d v of the parity check matrix corresponding to the variable node to which the branch for which the message is sought is connected, in the small FIFO memory 616. When the number of messages (storable number) is equal to or less than d, a control signal C604 for instructing the selector 617 to select the first message D601 delayed by the small FIFO memory 616 is input to the input port P604 of the message calculation unit 211. Supply.

さらに、制御部212は、バリアブルノードに対応する列の重みdvが、小FIFOメモリ616の記憶可能個数d以下でないときには、メッセージメモリ104からの2回目のメッセージDD601を選択することをセレクタ617に指示する制御信号C604を、メッセージ計算部211の入力ポートP604に供給する。 Furthermore, when the column weight d v corresponding to the variable node is not less than or equal to the number d that can be stored in the small FIFO memory 616, the control unit 212 selects the second message DD601 from the message memory 104 to the selector 617. The instructing control signal C604 is supplied to the input port P604 of the message calculation unit 211.

なお、制御部212は、小FIFOメモリ616で遅延されたメッセージD601を選択することをセレクタ617に指示する制御信号C604を、メッセージ計算部211に供給する場合、つまり、制御信号C604が、メッセージメモリ104から2回目に読み出されたメッセージDD601を選択することをセレクタ617に指示する信号でない場合には、メッセージメモリ104からのメッセージの読み出しについては、メッセージメモリ104からメッセージを1回だけ読み出す読み出し制御を行う。   When the control unit 212 supplies the message calculation unit 211 with a control signal C604 that instructs the selector 617 to select the message D601 delayed by the small FIFO memory 616, that is, the control signal C604 is stored in the message memory. In the case where the signal is not a signal for instructing the selector 617 to select the message DD601 read for the second time from 104, for reading the message from the message memory 104, read control for reading the message from the message memory 104 only once. I do.

したがって、制御部212では、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ616の記憶可能個数d以下でない場合には、図15で説明した、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御が行われるが、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ616の記憶可能個数d以下である場合には、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御は行われず、1回だけ読み出す読み出し制御、すなわち、図15のステップS101及びS102のうちの、ステップS101だけが行われる。 Therefore, in the control unit 212, when the column weight d v of the parity check matrix corresponding to the variable node to which the branch for which the message is to be obtained is connected is not less than or equal to the storable number d of the small FIFO memory 616, FIG. The readout control for reading the same message twice from the message memory 104 described in 15 is performed, but the column weight d v of the parity check matrix corresponding to the variable node to which the branch for which the message is requested is connected is: If the number of storable memories in the small FIFO memory 616 is less than or equal to d, read control for reading the same message from the message memory 104 twice is not performed, and read control for reading only once, ie, steps S101 and S102 in FIG. Of these, only step S101 is performed.

レジスタ605において、検査行列の1列に亘る全ての枝からのメッセージD607(メッセージuj)が積算された新たな値(積算値)D609(j=1からdvまでのΣuj)が格納され、その出力が開始されると、すなわち、レジスタ603に1列分のメッセージD607が積算された積算値(j=1からdvまでのΣuj)が格納された直後、LUT600と同一と同一の構成のLUT610が、セレクタ617から出力されるメッセージ(小FIFOメモリ616で遅延された1回目のメッセージD601、又は2回目のメッセージDD601)の絶対値D613(|u'j|)を引数として、逆関数φ(|u'j|)の演算を行った演算結果D615(φ-1(|u'j|))を読み出して出力する。 The register 605 stores a new value (integrated value) D609 (Σu j from j = 1 to d v ) obtained by integrating the message D607 (message u j ) from all branches over one column of the check matrix. When the output is started, that is, immediately after the accumulated value (Σu j from j = 1 to d v ) obtained by accumulating the message D607 for one column is stored in the register 603, it is the same as the LUT 600. The configuration LUT 610 reverses the absolute value D613 (| u ′ j |) of the message (the first message D601 delayed by the small FIFO memory 616 or the second message DD601) output from the selector 617 as an argument. An operation result D615 (φ −1 (| u ′ j |)) obtained by performing the operation of the function φ (| u ′ j |) is read and output.

LUT610が出力する演算結果D615(φ-1(|u'j|))は、その最上位ビットに、セレクタ617から出力されるメッセージ(小FIFOメモリ616で遅延された1回目のメッセージD601、又は2回目のメッセージDD601)(メッセージu'j)のうちの最上位ビット、つまり、符号ビットD614(sign(u'j))が付加されることにより、メッセージD616(チェックノードメッセージuj)とされ、セレクタ611のv端子に供給される。 The calculation result D615 (φ −1 (| u ′ j |)) output from the LUT 610 is stored in the most significant bit of the message output from the selector 617 (the first message D601 delayed by the small FIFO memory 616, or The most significant bit of the second message DD601) (message u ′ j ), that is, the sign bit D614 (sign (u ′ j )) is added to obtain a message D616 (check node message u j ). , And supplied to the v terminal of the selector 611.

セレクタ611は、上述したように、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給されたメッセージD616(チェックノードメッセージuj)は、メッセージD617として、演算器612に供給される。 As described above, the selector 611 selects the v terminal during the variable node calculation, and the message D616 (check node message u j ) supplied to the v terminal is supplied to the calculator 612 as the message D617. .

演算器612は、レジスタ605から供給された積算値D609(j=1からdvまでのΣuj)から、セレクタ611からのメッセージD617(j=dvのメッセージuj)を減算する。すなわち、演算器612では、検査行列の1列に亘る全ての枝からのメッセージD607(メッセージuj)の積算値D609(j=1からdvまでのΣuj)から、求めたい枝からのメッセージuj(j=dvのuj)としてのメッセージD617を減算して、減算値D618(j=1からdv-1までのΣuj)を求め、演算器613に供給する。 Calculator 612, from the supplied integrated value D609 (? Uj j from j = 1 to d v) from the register 605, subtracts the message from the selector 611 D617 (j = d v message u j) of. In other words, the computing unit 612 uses the message D607 (message u j ) from all branches over one column of the parity check matrix to calculate the message from the branch to be obtained from the integrated value D609 (Σu j from j = 1 to d v ). subtracts the message D617 as u j (j = d v of u j), we obtain the subtraction value D618 (? uj j from j = 1 to d v -1), and supplies the arithmetic unit 613.

演算器613は、入力ポートP101からの受信データD101と、演算器612からの減算値D618(j=1からdv-1までのΣuj)とを加算することにより、メッセージD619(バリアブルノードメッセージvi)を求め、セレクタ615のv端子に供給する。 Calculator 613 adds the reception data D101 from the input port P101, and by adding the subtracted value from the arithmetic unit 612 D618 (? Uj j from j = 1 to d v -1), the message D619 (variable node message v i ) is obtained and supplied to the v terminal of the selector 615.

セレクタ615は、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給される演算器613からのメッセージD619(バリアブルノードメッセージvi)を、メッセージD622として、出力ポートP622から出力する。 The selector 615 selects the v terminal during the variable node calculation, and outputs the message D619 (variable node message v i ) from the calculator 613 supplied to the v terminal as the message D622 from the output port P622.

以上のように、セレクタ601,611、及び615がv端子を選択しているメッセージ計算部211では、式(9)のバリアブルノード演算が行われ、その結果得られるメッセージ(バリアブルノードメッセージ)viが、出力ポートP622から出力される。 As described above, in the message calculation unit 211 in which the selectors 601, 611, and 615 have selected the v terminal, the variable node calculation of Expression (9) is performed, and the resulting message (variable node message) v i Is output from the output port P622.

次に、図34は、図32右側に示したチェックノード演算時の図31のメッセージ計算部211の実質的な構成例を示している。   Next, FIG. 34 illustrates a substantial configuration example of the message calculation unit 211 of FIG. 31 at the time of the check node calculation illustrated on the right side of FIG.

なお、上述したように、チェックノード演算時には、セレクタ601,611、及び615はc端子を選択するが、図34では、図31に図示した構成のうちの、セレクタ601,611、及び615がc端子を選択することによってチェックノード演算時に機能しない部分(チェックノード演算に関係がない部分)の図示を省略してある。   As described above, in the check node calculation, the selectors 601, 611, and 615 select the c terminal, but in FIG. 34, the selectors 601, 611, and 615 of the configuration illustrated in FIG. A portion that does not function at the time of check node calculation by selecting a terminal (portion not related to the check node calculation) is not shown.

チェックノード演算時においては、入力ポートP601には、メッセージメモリ104から1つずつ読み出された、検査行列の各列に対応するバリアブルノードからのバリアブルノードメッセージviが、順次、メッセージD601として供給される。 At the time of the check node calculation, the variable node messages v i read from the message memory 104 one by one and corresponding to each column of the check matrix are sequentially supplied as the message D601 to the input port P601. Is done.

入力ポートP601に供給されたメッセージD601(メッセージvi)のうちの最上位ビットを除く下位ビット、つまり、メッセージD601の絶対値D603(|vi|)は、LUT600に供給され、最上位ビット、つまりメッセージD601の符号ビットD604は、EXOR回路606に供給される。 The low-order bits excluding the most significant bit of the message D601 (message v i ) supplied to the input port P601, that is, the absolute value D603 (| v i |) of the message D601 is supplied to the LUT 600, and the most significant bit. That is, the sign bit D604 of the message D601 is supplied to the EXOR circuit 606.

LUT600は、絶対値D603(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果D605(φ(|vi|))を読み出し、セレクタ601のc端子に供給する。 The LUT 600 reads out the calculation result D605 (φ (| v i |)) obtained by calculating the nonlinear function φ (| v i |) using the absolute value D603 (| v i |) as an argument, and the c terminal of the selector 601 To supply.

セレクタ601は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるLUT600からの演算結果D605(φ(|vi|))を、演算結果D607(φ(|vi|))として、演算器602に供給する。 The selector 601 at the time of a check node calculation selects the terminal c, the operation result from LUT600 supplied to the terminal c thereof D605 of (φ (|) | v i ), the operation result D607 (φ (| v i | )) To the calculator 602.

演算器602は、演算結果D607(φ(|vi|))とレジスタ603に格納されている値D608とを加算することにより、演算結果D607を積算し、その結果得られる積算値をレジスタ603に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD601の絶対値D603(|vi|)に対する演算結果D607(φ(|vi|))が積算された場合、レジスタ603はリセットされる。 The calculator 602 adds the calculation result D607 (φ (| v i |)) and the value D608 stored in the register 603 to add up the calculation result D607, and the integrated value obtained as a result is registered in the register 603. Store again. Note that when the calculation result D607 (φ (| v i |)) for the absolute value D603 (| v i |) of the message D601 from all branches over one row of the check matrix is accumulated, the register 603 is reset. The

検査行列の1行に亘るメッセージD601が1つずつ読み込まれ、レジスタ603に1行分の演算結果D607が積算された積算値が格納された場合、セレクタ604は、レジスタ603に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD601(メッセージvi)から求められたφ(|vi|)が積算された積算値D608(i=1からi=dcまでのΣφ(|vi|))を選択し、レジスタ605に出力して格納させる。レジスタ605は、格納している積算値D608を、値D609として、セレクタ604と演算器612に供給する。 When the message D601 over one row of the check matrix is read one by one and the accumulated value obtained by accumulating the operation result D607 for one row is stored in the register 603, the selector 604 stores the value stored in the register 603. , i.e., phi obtained from the messages D601 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) from the integrated value D608 (i = 1, which is accumulated up to i = d c Σφ (| v i |)) is selected and output to the register 605 for storage. The register 605 supplies the stored integrated value D608 as the value D609 to the selector 604 and the calculator 612.

レジスタ603に1行分の演算結果D607が積算された積算値が格納される直前までは、セレクタ604は、レジスタ605から供給された値D609を選択し、レジスタ605に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD601(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ605は、前回積算されたφ(|vi|)の積算値を、セレクタ604と演算器612に供給する。 The selector 604 selects the value D609 supplied from the register 605, outputs it to the register 605, and stores it again until the integrated value obtained by integrating the operation result D607 for one row is stored in the register 603. That is, until φ (| v i |) obtained from the message D601 (message v i ) from all branches over one row of the check matrix is accumulated, the register 605 accumulates φ (| v The integrated value of i |) is supplied to the selector 604 and the calculator 612.

一方、入力ポートP601に供給されたメッセージD601(メッセージvi)は、小FIFOメモリ616にも供給される。 On the other hand, the message D601 (message v i ) supplied to the input port P601 is also supplied to the small FIFO memory 616.

小FIFOメモリ616は、上述したように、メッセージを遅延するための遅延メモリであるが、検査行列の重みの最大値よりも少ない数のメッセージを記憶する容量しか有していない、容量の小さいFIFOメモリであり、メッセージメモリ104からの1回目のメッセージD601を遅延し、セレクタ617のf端子に供給する。   As described above, the small FIFO memory 616 is a delay memory for delaying messages, but has only a capacity for storing a smaller number of messages than the maximum value of the check matrix weight, and has a small capacity FIFO. The first message D601 from the message memory 104 is delayed and supplied to the f terminal of the selector 617.

上述したように、図30の復号装置において、制御部212は、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みdcが、小FIFOメモリ616が記憶可能なメッセージの数(記憶可能個数)d以下であるときには、小FIFOメモリ616で遅延された1回目のメッセージD601を選択することをセレクタ617に指示する制御信号C604を、メッセージ計算部211の入力ポートP604を介して、セレクタ617に供給する。 As described above, in the decoding apparatus of FIG. 30, the control unit 212, the weight d c line of the check matrix corresponding to the check node branches trying to find a message is connected, a small FIFO memory 616 is stored When the number of possible messages (storable number) is less than or equal to d, the control signal C604 for instructing the selector 617 to select the first message D601 delayed by the small FIFO memory 616 is input to the message calculation unit 211. The data is supplied to the selector 617 via the port P604.

セレクタ617は、制御部212からの制御信号C604に従い、小FIFOメモリ616で遅延された1回目のメッセージD601を選択して出力する。   The selector 617 selects and outputs the first message D601 delayed by the small FIFO memory 616 in accordance with the control signal C604 from the control unit 212.

また、制御部212は、チェックノードに対応する列の重みdcが、小FIFOメモリ616の記憶可能個数d以下でないときには、メッセージメモリ104からの2回目のメッセージDD601を選択することをセレクタ617に指示する制御信号C604を、メッセージ計算部211の入力ポートP604に供給する。 The control unit 212, the weight d c of the column corresponding to the check node, when it is not less storable number d of the small FIFO memory 616 to select a second message DD601 from the message memory 104 to the selector 617 The instructing control signal C604 is supplied to the input port P604 of the message calculation unit 211.

さらに、制御部212では、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の列の重みdvが、小FIFOメモリ616の記憶可能個数d以下でない場合には、図15で説明した、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御が行われ、これにより、メッセージメモリ104から2回目に読み出されたメッセージDD601が、入力ポートPD601を介して、セレクタ617のm端子に供給される。 Further, the control unit 212, when the weight d v column of the check matrix corresponding to the check node branches trying to find a message is connected, not less storable number d of the small FIFO memory 616, FIG. 15, the read control for reading the same message twice from the message memory 104 is performed, whereby the message DD601 read from the message memory 104 for the second time is sent to the selector 617 via the input port PD601. Supplied to the m terminal.

セレクタ617は、制御部212からの制御信号C604に従い、メッセージメモリ104から入力ポートPD601を介して供給される2回目のメッセージDD601を選択して出力する。   The selector 617 selects and outputs the second message DD601 supplied from the message memory 104 via the input port PD601 in accordance with the control signal C604 from the control unit 212.

セレクタ617が出力するメッセージ(メッセージvi)、すなわち、小FIFOメモリ616で遅延された1回目のメッセージD601、又は、メッセージメモリ104からの2回目のメッセージDD601のうちの最上位ビットを除く下位ビット、つまり、絶対値は、値D613として、LUT610に供給され、最上位ビット、つまり、符号ビットD614は、EXOR回路614に供給される。 Message (message v i ) output by the selector 617, that is, the lower-order bits excluding the most significant bit of the first message D601 delayed by the small FIFO memory 616 or the second message DD601 from the message memory 104 That is, the absolute value is supplied to the LUT 610 as the value D613, and the most significant bit, that is, the sign bit D614 is supplied to the EXOR circuit 614.

レジスタ605において、新たな値D609(i=1からi=dcまでのΣφ(|vi|))の出力が開始されると、すなわち、レジスタ605に1行分の演算結果D607が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納された直後、LUT610は、セレクタ617から出力されるメッセージ(小FIFOメモリ616で遅延された1回目のメッセージD601、又は2回目のメッセージDD601)の絶対値D613(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果D615(φ(|vi|))を読み出し、セレクタ611のc端子に供給する。 In register 605, (Sigma] [phi of i = 1 through i = d c (| v i |)) a new value D609 when the output of the start, i.e., calculation results D607 of one row in the register 605 are accumulated and (from i = 1 to i = d c Σφ (| v i |)) integrated value immediately after the stored, LUT 610 is outputted from the selector 617 message (first delayed by a small FIFO memory 616 Operation result D615 (φ (| v i |)) obtained by calculating the nonlinear function φ (| v i |) using the absolute value D613 (| v i |) of the message D601 or the second message DD601) as an argument Is supplied to the c terminal of the selector 611.

セレクタ611は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるLUT610からの演算結果D615(φ(|vi|))を、演算結果D617(φ(|vi|))として、演算器612に供給する。 The selector 611 selects the c terminal during the check node calculation, and the calculation result D615 (φ (| v i |)) from the LUT 610 supplied to the c terminal is calculated as the calculation result D617 (φ (| v i |). )) To the calculator 612.

演算器612は、レジスタ605から供給された値D609から、セレクタ611から供給された値D617を減算し、その減算結果を、減算値D618として出力する。すなわち、演算器612は、検査行列の1行に亘る全ての枝からのメッセージD601(メッセージvi)から求められたφ(|vi|)の積算値D609(i=1からi=dcまでのΣφ(|vi|))から、求めたい枝からのメッセージDD601(メッセージvi)から求められたφ(|vi|)の値D617を減算して、その減算値(i=1からi=dc-1までのΣφ(|vi|))を減算値D618として出力する。 The arithmetic unit 612 subtracts the value D617 supplied from the selector 611 from the value D609 supplied from the register 605, and outputs the subtraction result as a subtraction value D618. That is, the calculator 612, phi obtained from the messages D601 from all of the branches across one line of the parity check matrix (message v i) (| v i | ) of the integrated value D609 (i = 1 from i = d c up to Σφ (| v i |) from), obtained from the messages from a desired branch DD601 (message v i) φ (| v i | subtracts the value D617 of), the subtraction value (i = 1 Σφ (| v i |)) from i to d c −1 is output as the subtraction value D618.

以上の処理と並行して、EXOR回路606は、レジスタ607に格納されている値D611と、1回目のメッセージD601(メッセージvi)の最上位ビットである符号ビットD604との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、乗算結果D610を、レジスタ607に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD601の符号ビットD604が乗算された場合、レジスタ607はリセットされる。 In parallel with the above processing, the EXOR circuit 606 performs exclusive OR between the value D611 stored in the register 607 and the sign bit D604 that is the most significant bit of the first message D601 (message v i ). By calculating, the sign bits are multiplied, and the multiplication result D610 is stored again in the register 607. Note that the register 607 is reset when the sign bit D604 of the message D601 from all branches over one row of the check matrix is multiplied.

検査行列の1行に亘る全ての枝からのメッセージD601の符号ビットD604が乗算された乗算結果D610(i=1からdcまでのΠsign(vi))がレジスタ607に格納された場合、セレクタ608は、レジスタ607に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD601の符号ビットD604が乗算された値D611(i=1からi=dcまでのΠsign(vi))を選択し、レジスタ609に出力して格納させる。レジスタ609は、格納している値D612を、セレクタ608とEXOR回路614に供給する。 If (Paisign from i = 1 to d c (v i)) multiplication result D610 to the sign bit D604 is multiplied by the messages D601 from all of the branches across one line of the parity check matrix stored in the register 607, the selector 608, Paisign the value stored in the register 607, i.e., the value D611 (i = 1 the sign bit D604 of the message D601 is multiplied from all of the branches across one line of the parity check matrix until i = d c (v i )) is selected and output to the register 609 for storage. The register 609 supplies the stored value D612 to the selector 608 and the EXOR circuit 614.

検査行列の1行に亘る全ての枝からのメッセージD601の符号ビットD604が乗算された乗算結果D610(i=1からdcまでのΠsign(vi))がレジスタ607に格納される直前までは、セレクタ608は、レジスタ609から供給される値D612を選択し、レジスタ609に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD601(メッセージvi)の符号ビットD604が乗算されるまで、レジスタ609は、前回格納した値を、セレクタ608とEXOR回路614に供給する。 It is (from i = 1 Πsign to d c (v i)) multiplication result D610 to the sign bit D604 is multiplied by the messages D601 from all of the branches across one line of the parity check matrix until just before is stored in the register 607 The selector 608 selects the value D612 supplied from the register 609, outputs it to the register 609, and stores it again. That is, the register 609 supplies the previously stored value to the selector 608 and the EXOR circuit 614 until the sign bit D604 of the message D601 (message v i ) from all branches over one row of the check matrix is multiplied. .

一方、レジスタ609から新たな値D612(i=1からi=dcまでのΠsign(vi))がEXOR回路614に供給されたとき、すなわち、レジスタ607に1行に亘る全ての枝からのメッセージD601の符号ビットD604が乗算された新たな値D611(i=1からi=dcまでのΠsign(vi))が格納されたとき、セレクタ608が、その値D611を選択して、レジスタ609に格納させるとともに、レジスタ605には、上述したように、1行分の演算結果D607が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納される。 On the other hand, a new value from the register 609 D612 (from i = 1 to i = d c Πsign (v i )) when is supplied to the EXOR circuit 614, i.e., from all of the branches across one line to the register 607 when a new value the sign bit D604 of the message D601 is multiplied D611 to (Paisign of i = 1 through i = d c (v i) ) are stored, the selector 608 selects the value D611, the register causes stored in 609, the register 605, as described above, the integrated value operation result D607 is integrated for one row (Sigma] [phi of i = 1 through i = d c (| v i |)) is stored Is done.

レジスタ605に1行分の演算結果D607が積算された積算値(i=1からi=dcまでのΣφ(|vi|))が格納されると、上述したようにして、セレクタ617が出力するメッセージ(メッセージvi)、すなわち、小FIFOメモリ616で遅延された1回目のメッセージD601、又は、メッセージメモリ104からの2回目のメッセージDD601のうちの最上位ビットである符号ビットD614が、EXOR回路614に供給される。 Integration value calculation result D607 is integrated for one row in the register 605 (Sigma] [phi of i = 1 through i = d c (| v i |)) When is stored, as described above, the selector 617 The message to be output (message v i ), that is, the sign bit D614 which is the most significant bit of the first message D601 delayed in the small FIFO memory 616 or the second message DD601 from the message memory 104, This is supplied to the EXOR circuit 614.

EXOR回路614は、レジスタ609に格納されて出力される新たな値D612と、セレクタ617からのメッセージの符号ビットD614との排他的論理和を演算することにより、値D612を、メッセージu'jを求めようとする枝からのメッセージviの符号ビットD614で除算し、除算結果を除算値D620として出力する。すなわち、EXOR回路614は、検査行列の1行に亘る全ての枝からのメッセージD601の符号ビットD604の乗算値(i=1からi=dcまでのΠsign(vi))を、求めたい枝からのメッセージviの符号ビットD614(i=dcのsign(vi))で除算して、その除算値(i=1からi=dc-1までのΠsign(vi))を除算値D620として出力する。 The EXOR circuit 614 calculates an exclusive OR of the new value D612 stored and output in the register 609 and the sign bit D614 of the message from the selector 617, thereby obtaining the value D612 and the message u ′ j divided by the sign bit D614 of the message v i from the branches to be obtained, and outputs the division result as a division value D620. That, EXOR circuit 614, branches multiplication value of the sign bit D604 of the message D601 from all of the branches across one line of the parity check matrix (Paisign of i = 1 to i = d c (v i) ), to be obtained is divided by the message v i (sign of i = d c (v i) ) the sign bit D614 of from dividing the (Πsign (v i) from i = 1 to i = d c -1) the division value Output as value D620.

そして、メッセージ計算部211では、演算器612から出力された減算値D618を下位ビットとするとともに、EXOR回路614から出力された除算値D620を最上位ビット(符号ビット)とするビット列D621(メッセージu'j)が、セレクタ615のc端子に供給される。 Then, the message calculation unit 211 uses the bit string D621 (message u) that uses the subtraction value D618 output from the arithmetic unit 612 as the lower bit and the division value D620 output from the EXOR circuit 614 as the most significant bit (sign bit). ' j ) is supplied to the c terminal of the selector 615.

セレクタ615は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるビット列D621(メッセージu'j)を、メッセージD622として、出力ポートP622から出力する。 The selector 615 selects the c terminal during the check node calculation, and outputs the bit string D621 (message u ′ j ) supplied to the c terminal from the output port P622 as the message D622.

以上のように、セレクタ601,611、及び615がc端子を選択しているメッセージ計算部211では、式(10)のチェックノード演算が行われ、その結果得られるメッセージ(メッセージ)u'jが、出力ポートP622から出力される。 As described above, in the message calculation unit 211 in which the selectors 601, 611, and 615 have selected the c terminal, the check node calculation of Expression (10) is performed, and the resulting message (message) u ′ j is , Output from the output port P622.

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

以上のように、図30の復号装置では、遅延メモリとして、検査行列の重みの最大値よりも少ない数のメッセージを記憶する小FIFOメモリ616(図31)を設けるようにしたので、少なくとも検査行列の重みの最大値に等しい数のメッセージを記憶するFIFOメモリ320(図22)を設ける場合に比較して、復号装置の規模を削減することができる。   As described above, in the decoding apparatus of FIG. 30, the small FIFO memory 616 (FIG. 31) for storing a smaller number of messages than the maximum weight of the parity check matrix is provided as the delay memory. Compared with the case where the FIFO memory 320 (FIG. 22) for storing a number of messages equal to the maximum value of the weights is provided, the scale of the decoding device can be reduced.

さらに、注目ノードに対応する検査行列の重みが、記憶可能個数d以下である場合(記憶可能個数dより大でない場合)には、小FIFOメモリ616の出力を選択して、ノード(バリアブルノード、チェックノード)の演算に用いるので、少なくとも検査行列の重みの最大値に等しい数のメッセージを記憶するFIFOメモリ320(図22)を有する図21の復号装置と同様の時間でメッセージの読み書きを行うことができる。したがって、図21の復号装置と同様の回数だけ繰り返し復号を行うことができるので(1回の復号に要する時間が図21の復号装置と同様となるので)、復号性能が劣化することを抑制することができる。   Further, when the weight of the parity check matrix corresponding to the node of interest is equal to or less than the storable number d (when it is not larger than the storable number d), the output of the small FIFO memory 616 is selected and a node (variable node, Since it is used for the computation of the check node), the message is read and written at the same time as the decoding device of FIG. 21 having the FIFO memory 320 (FIG. 22) storing at least the number of messages equal to the maximum value of the weight of the check matrix. Can do. Accordingly, iterative decoding can be performed the same number of times as the decoding device of FIG. 21 (the time required for one decoding is the same as that of the decoding device of FIG. 21), so that deterioration of decoding performance is suppressed. be able to.

また、注目ノードに対応する検査行列の重みが、記憶可能個数dより大である場合には、メッセージメモリ104から同一のメッセージを2回読み出し、2回目に読み出されたメッセージを選択して、ノードの演算に用いるので、注目ノードに対応する検査行列の重みが、記憶可能個数dより大であっても、LDPC符号の復号を行うことができる。   Further, when the weight of the check matrix corresponding to the node of interest is larger than the storable number d, the same message is read twice from the message memory 104, the second read message is selected, Since it is used for the node calculation, the LDPC code can be decoded even if the weight of the parity check matrix corresponding to the node of interest is larger than the storable number d.

以上から、図30の復号装置によれば、規模を削減しつつ、復号性能の劣化を抑制することができる。   From the above, according to the decoding device of FIG. 30, it is possible to suppress degradation of decoding performance while reducing the scale.

ここで、小FIFOメモリ616の記憶可能個数dが、例えば、3であり、復号の対象のLDPC符号を定義する検査行列が、例えば、図1に示した、各列の重みdvが3で、且つ、各行の重みが6の行列である場合には、記憶可能個数dである3が、検査行列の列の重みdvである3よりも小でなく、したがって、バリアブルノード演算時には、3個のメッセージD601が積算されるまでの間、小FIFOメモリ616において、その3個のメッセージD601すべてを遅延することができるから、セレクタ617では、端子fに供給される、小FIFOメモリ616で遅延された1回目のメッセージD601が選択される。 Here, the storable number d of the small FIFO memory 616 is 3, for example, and the parity check matrix defining the LDPC code to be decoded is, for example, the weight d v of each column shown in FIG. When the weight of each row is a matrix of 6, 3 that is the storable number d is not smaller than 3 that is the column weight d v of the parity check matrix. Since all three messages D601 can be delayed in the small FIFO memory 616 until the number of messages D601 is accumulated, the selector 617 delays the small FIFO memory 616 supplied to the terminal f. The first message D601 is selected.

また、この場合、記憶可能個数dである3が、検査行列の行の重みdcである6よりも小であり、したがって、チェックノード演算時には、記憶可能個数dである3よりも多い6個のメッセージD601のφ(|vi|)が積算されるまでの間、小FIFOメモリ616において、その6個のメッセージD601すべてを遅延することができないため、セレクタ617では、端子mに供給される、メッセージメモリ104からの2回目のメッセージDD601が選択される。 In this case, 3 is storable number d is a smaller than 6 is the weight d c line of the check matrix, therefore, at the time of a check node calculation, six more than 3 is storable number d Until φ (| v i |) of the message D601 is accumulated, since all the six messages D601 cannot be delayed in the small FIFO memory 616, the selector 617 supplies them to the terminal m. The second message DD601 from the message memory 104 is selected.

なお、図30の復号装置では、メッセージ計算部211において、バリアブルノードの演算を行う回路と、チェックノードの演算を行う回路との一部(LUT600、演算器602、レジスタ603、セレクタ604、レジスタ605、LUT610、及び演算器612)が共有化されているので、その共有化の分だけ、復号装置の規模を、より削減することができる。   In the decoding apparatus of FIG. 30, in the message calculation unit 211, a part of the circuit that performs the variable node calculation and the circuit that performs the check node calculation (LUT 600, calculator 602, register 603, selector 604, register 605). Since the LUT 610 and the arithmetic unit 612) are shared, the scale of the decoding apparatus can be further reduced by the sharing.

また、図30の復号装置のメッセージ計算部211では、ノードに入力される入力データxの絶対値|x|を引数として、同一の演算結果が得られる逆関数φ-1(x)と非線形関数φ(x)の演算をそれぞれ含む式(9)と式(10)にそれぞれ従って、バリアブルノード演算とチェックノード演算が行われる。 Further, in the message calculation unit 211 of the decoding device in FIG. 30, the inverse function φ −1 (x) and the nonlinear function that obtain the same calculation result using the absolute value | x | of the input data x input to the node as an argument. The variable node calculation and the check node calculation are performed according to the expressions (9) and (10) including the calculation of φ (x), respectively.

したがって、メッセージ計算部211には、図31に示したように、入力ポートP601から供給される1回目のメッセージに対して、逆関数φ-1(x)及び非線形関数φ(x)の演算を行うLUT600と、セレクタ617が出力するメッセージに対して、逆関数φ-1(x)及び非線形関数φ(x)の演算を行うLUT610との2つのLUTがあれば済み、図26に示したように、1回目のメッセージに対して非線形関数φ(x)の演算を行うLUT300、セレクタ318が出力するメッセージに対して非線形関数φ(x)の演算を行うLUT310、及び逆関数φ-1(x)の演算を行うLUT314の3つのLUTを必要とするメッセージ計算部201よりも、規模を削減することができる。 Accordingly, as shown in FIG. 31, the message calculation unit 211 calculates the inverse function φ −1 (x) and the nonlinear function φ (x) for the first message supplied from the input port P601. There are only two LUTs, the LUT 600 to be performed and the LUT 610 for calculating the inverse function φ −1 (x) and the nonlinear function φ (x) for the message output from the selector 617, as shown in FIG. In addition, the LUT 300 that calculates the nonlinear function φ (x) for the first message, the LUT 310 that calculates the nonlinear function φ (x) for the message output from the selector 318, and the inverse function φ −1 (x ), The scale can be reduced as compared with the message calculation unit 201 that requires three LUTs of the LUT 314.

次に、図35は、本発明を適用した復号装置の第4実施の形態の構成例を示すブロック図である。   Next, FIG. 35 is a block diagram illustrating a configuration example of the fourth embodiment of the decoding device to which the present invention has been applied.

なお、図中、図25の復号装置の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。すなわち、図35の復号装置は、メッセージ計算部201に代えて、メッセージ計算部221が設けられているとともに、制御部202に代えて、制御部222が設けられている他は、図25の復号装置と同様に構成されている。   In the figure, portions corresponding to those of the decoding device of FIG. 25 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate. That is, the decoding device of FIG. 35 is provided with a message calculation unit 221 instead of the message calculation unit 201 and a decoding unit of FIG. 25 except that a control unit 222 is provided instead of the control unit 202. It is configured in the same way as the device.

図35の復号装置では、メッセージ計算部221が、バリアブルノード演算を行う回路と、チェックノード演算を行う回路との一部を共有する構成となっている。さらに、図35の復号装置では、バリアブルノード演算とチェックノード演算とを行うメッセージ計算部221が、図22のメッセージ計算部191のFIFOメモリ320のように、検査行列の重みの最大値に等しい数のメッセージを記憶する遅延メモリではなく、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリを有している。   In the decoding device of FIG. 35, the message calculation unit 221 is configured to share a part of a circuit that performs variable node calculation and a circuit that performs check node calculation. Furthermore, in the decoding apparatus of FIG. 35, the number of message calculation units 221 that perform variable node calculation and check node calculation is equal to the maximum value of the parity check matrix weight as in the FIFO memory 320 of the message calculation unit 191 of FIG. The delay memory stores a number of messages smaller than the maximum value of the check matrix weights.

また、図35の復号装置では、制御部222が、メッセージメモリ104に対するメッセージ(データ)の読み書き制御として、図15のフローチャートで説明したように、図12の復号装置の制御部174と同様の読み書き制御を行う。   35, as described in the flowchart of FIG. 15, the controller 222 reads / writes the message (data) to / from the message memory 104 in the same manner as the controller 174 of the decoder of FIG. Take control.

さらに、制御部232は、制御信号C703を、メッセージ計算部211に供給し、その制御信号C703によって、バリアブルノード演算、又はチェックノード演算を行うことを、メッセージ計算部221に指示する。   Further, the control unit 232 supplies the control signal C703 to the message calculation unit 211, and instructs the message calculation unit 221 to perform variable node calculation or check node calculation with the control signal C703.

また、制御部222は、図20のフローチャートで説明したように、セレクタ制御の処理を行い、制御信号C104に相当する制御信号C704を、メッセージ計算部221に供給する。メッセージ計算部221は、制御部222からの制御信号C704に従い、メッセージメモリ104から2回目に読み出されたメッセージDD602を選択的に用いて、バリアブルノード演算やチェックノード演算を行う。   Further, as described with reference to the flowchart of FIG. 20, the control unit 222 performs selector control processing, and supplies the control signal C704 corresponding to the control signal C104 to the message calculation unit 221. The message calculation unit 221 performs variable node calculation and check node calculation by selectively using the message DD602 read out from the message memory 104 for the second time in accordance with the control signal C704 from the control unit 222.

図35の復号装置では、メッセージメモリ104に記憶されているメッセージが1つずつ読み出され、メッセージ計算部221に供給される。メッセージ計算部221は、メッセージメモリ104からのメッセージを用いて演算が行われ、その演算によって求められたメッセージが、メッセージメモリ104に格納される。図35の復号装置では、以上の処理が繰り返し行われ、フルシリアルの繰り返し復号が行われる。   35, the messages stored in the message memory 104 are read one by one and supplied to the message calculation unit 221. The message calculation unit 221 performs an operation using the message from the message memory 104, and the message obtained by the operation is stored in the message memory 104. In the decoding device of FIG. 35, the above processing is repeated, and full serial iterative decoding is performed.

すなわち、受信データメモリ105には、送信されてきたLDPC符号を受信することにより得られる受信データ(対数尤度比)D100が供給され、受信データメモリ105は、その受信データD100を記憶する。   That is, the reception data memory 105 is supplied with reception data (log likelihood ratio) D100 obtained by receiving the transmitted LDPC code, and the reception data memory 105 stores the reception data D100.

バリアブルノード演算時には、受信データメモリ105は、制御部222から供給される制御信号に従って、記憶している受信データを読み出し、受信データD101として、メッセージ計算部221に供給する。   During the variable node calculation, the reception data memory 105 reads the stored reception data in accordance with the control signal supplied from the control unit 222 and supplies it to the message calculation unit 221 as reception data D101.

また、バリアブルノード演算時には、メッセージメモリ104は、制御部222から供給される制御信号に従い、記憶している同一のメッセージを1回、又は2回読み出して、1回目に読み出したメッセージをメッセージD701として、メッセージ計算部221に供給し、2回目に読み出したメッセージをメッセージDD701として、メッセージ計算部221に供給する。メッセージ計算部221は、メッセージメモリ104から供給される1回目のメッセージD701、及び受信データメモリ105から供給される受信データD101、さらには、メッセージメモリ104から供給される2回目のメッセージDD701を、必要に応じて用い、制御部222から供給される制御信号C703及びC704に従って、検査行列に基づき、バリアブルノード演算を行い、そのバリアブルノード演算の結果得られたメッセージを、メッセージD722として、メッセージメモリ104に供給する。   Further, during variable node calculation, the message memory 104 reads the same stored message once or twice according to the control signal supplied from the control unit 222, and the message read first time is used as the message D701. The message read to the message calculation unit 221 and read for the second time is supplied to the message calculation unit 221 as a message DD701. The message calculation unit 221 requires the first message D701 supplied from the message memory 104, the reception data D101 supplied from the reception data memory 105, and the second message DD701 supplied from the message memory 104. In accordance with the control signals C703 and C704 supplied from the control unit 222, the variable node calculation is performed based on the check matrix, and the message obtained as a result of the variable node calculation is stored in the message memory 104 as a message D722. Supply.

そして、メッセージメモリ104は、制御部222から供給される制御信号に従い、メッセージ計算部221から供給されるメッセージD722を記憶する。   The message memory 104 stores a message D722 supplied from the message calculation unit 221 in accordance with a control signal supplied from the control unit 222.

一方、チェックノード演算時には、メッセージメモリ104は、制御部222から供給される制御信号に従って、記憶している同一のメッセージを1回、又は2回読み出して、1回目に読み出したメッセージをメッセージD701として、メッセージ計算部221に供給し、2回目に読み出したメッセージをメッセージDD701として、メッセージ計算部221に供給する。   On the other hand, at the time of the check node calculation, the message memory 104 reads the same stored message once or twice according to the control signal supplied from the control unit 222, and the message read first time as the message D701. The message read to the message calculation unit 221 and read for the second time is supplied to the message calculation unit 221 as a message DD701.

メッセージ計算部221は、メッセージメモリ104から供給される1回目のメッセージD701、さらには、メッセージメモリ104から供給される2回目のメッセージDD701を、必要に応じて用い、制御部222からの制御信号C703及びC704に従って、検査行列に基づき、チェックノード演算を行い、そのチェックノード演算によって求められたメッセージを、メッセージD722として、メッセージメモリ104に供給する。   The message calculation unit 221 uses the first message D701 supplied from the message memory 104 and the second message DD701 supplied from the message memory 104 as necessary, and controls the control signal C703 from the control unit 222. And C704, a check node operation is performed based on the check matrix, and a message obtained by the check node operation is supplied to the message memory 104 as a message D722.

そして、メッセージメモリ104は、制御部222から供給される制御信号に従い、メッセージ計算部221から供給されるメッセージD722を記憶する。   The message memory 104 stores a message D722 supplied from the message calculation unit 221 in accordance with a control signal supplied from the control unit 222.

ここで、図35のメッセージ計算部221で行われる演算について説明する。   Here, the calculation performed by the message calculation unit 221 in FIG. 35 will be described.

いま、バリアブルノードに接続している枝のうちのi番目の枝から出力されるメッセージ(データ)として、式v'i=φ(|vi|)×sign(vi)で表されるメッセージv'iを導入すると、式(1)及び式(7)は、式(11)ないし式(13)に書き直すことができる。 Now, as a message (data) output from the i-th branch among the branches connected to the variable node, a message represented by the expression v ′ i = φ (| v i |) × sign (v i ) When v ′ i is introduced, the equations (1) and (7) can be rewritten into the equations (11) to (13).

Figure 0004780027
・・・(11)
Figure 0004780027
(11)

Figure 0004780027
・・・(12)
Figure 0004780027
(12)

Figure 0004780027
・・・(13)
Figure 0004780027
... (13)

ここで、式(1)のバリアブルノード演算は、式(11)及び式(12)の演算に対応し、式(7)のチェックノード演算は、式(13)の演算に対応する。   Here, the variable node calculation of Expression (1) corresponds to the calculation of Expression (11) and Expression (12), and the check node calculation of Expression (7) corresponds to the calculation of Expression (13).

式(11)及び式(12)のバリアブルノード演算では、バリアブルノードに入力される入力データ(メッセージ)ujを、符号sign(uj)を含めて積算し(Σuj)、さらに、受信データu0iを加算して、その結果得られる加算値vi(=u0i+Σuj)の絶対値|vi|を引数とする非線形関数φ(|vi|)の演算を行うことにより、メッセージv'iが求められる。 In the variable node calculation of Expression (11) and Expression (12), the input data (message) u j input to the variable node is integrated including the sign (u j ) (Σu j ), and the received data By adding u 0i and calculating the nonlinear function φ (| v i |) with the absolute value | v i | of the resulting addition value v i (= u 0i + Σu j ) as an argument, Message v ' i is required.

また、式(13)のチェックノード演算では、チェックノードに入力される入力データ(メッセージ)v'iの絶対値|v'i|を積算し(Σ|v'i|)、その積算値Σ|v'i|を引数とする逆関数φ-1(Σ|v'i|)の演算を行う一方で、それとは別に、入力データv'iの符号ビットの相乗積(Πsign(v'i))を求め、逆関数φ-1(Σ|v'i|)の演算結果と、入力データv'iの符号ビットの相乗積Πsign(v'i)とを乗算して、メッセージujが求められる。 Further, in the check node calculation of Expression (13), the absolute value | v ′ i | of the input data (message) v ′ i input to the check node is integrated (Σ | v ′ i |), and the integrated value Σ While calculating the inverse function φ -1 (Σ | v ' i |) with | v' i | as an argument, separately, the product of sign bits of input data v ' i (Πsign (v' i )), And the result of the inverse function φ −1 (Σ | v ′ i |) is multiplied by the product Πsign (v ′ i ) of the sign bits of the input data v ′ i , and the message u j Desired.

ここで、上述したように、非線形関数φ(x)とその逆関数φ-1(x)とは、x>0において等しい。したがって、式(11)及び式(12)のバリアブルノード演算と、式(13)のチェックノード演算のいずれでも、出力データxの絶対値|x|を引数として、関数φ(x)(φ-1(x))の演算が行われることになる。 Here, as described above, the nonlinear function φ (x) and its inverse function φ −1 (x) are equal when x> 0. Therefore, in both the variable node calculation of Expressions (11) and (12) and the check node calculation of Expression (13), the function φ (x) (φ − 1 (x)) is calculated.

図35のメッセージ計算部221では、以上のような式(11)及び式(12)のバリアブルノード演算と、式(13)のチェックノード演算とが行われる。   In the message calculation unit 221 of FIG. 35, the variable node calculation of the above formulas (11) and (12) and the check node calculation of the formula (13) are performed.

図36は、図35のメッセージ計算部221の構成例を示している。   FIG. 36 shows a configuration example of the message calculation unit 221 of FIG.

メッセージ計算部221には、入力ポートP101,P701,PD701,P703,P704と、出力ポートP722が設けられている。   The message calculation unit 221 is provided with input ports P101, P701, PD701, P703, and P704, and an output port P722.

入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給(入力)される。入力ポートP701には、メッセージメモリ104から2回読み出される同一のメッセージD701及びDD701のうちの1回目に読み出されるメッセージ(1回目のメッセージ)D701が供給(入力)され、入力ポートPD701には、2回目に読み出されるメッセージ(2回目のメッセージ)DD701が供給される。また、入力ポートP703とP704には、制御部222(図35)からの制御信号C703とC704が、それぞれ供給される。   The reception data D101 read from the reception data memory 105 is supplied (input) to the input port P101. Of the same message D701 and DD701 read twice from the message memory 104, the message (first message) D701 read out the first time is supplied (input) to the input port P701. A message (second message) DD701 read out the second time is supplied. Control signals C703 and C704 from the control unit 222 (FIG. 35) are supplied to the input ports P703 and P704, respectively.

メッセージ計算部221は、入力ポートP701から入力される1回目のメッセージD701、入力ポートPD701から入力される2回目のメッセージDD701、入力ポートP101から入力されるメッセージ(受信データ)D101を、必要に応じて用い、入力ポートP703から入力される制御信号C703及びC704に従って、検査行列に基づき、式(11)及び式(12)のバリアブルノード演算、又は式(13)のチェックノード演算を行い、その結果得られるメッセージD722を、出力ポートP722から出力する。   The message calculation unit 221 receives a first message D701 input from the input port P701, a second message DD701 input from the input port PD701, and a message (received data) D101 input from the input port P101 as necessary. In accordance with the control signals C703 and C704 input from the input port P703, based on the parity check matrix, the variable node calculation of Expression (11) and Expression (12) or the check node calculation of Expression (13) is performed, and the result The obtained message D722 is output from the output port P722.

ここで、図37を参照して、図36のメッセージ計算部221で行われるバリアブルノード演算とチェックノード演算について説明する。   Here, with reference to FIG. 37, the variable node calculation and the check node calculation performed by the message calculation unit 221 in FIG. 36 will be described.

図37左側は、式(1)のバリアブルノード演算を行うバリアブルノードと、式(7)のチェックノード演算を行うチェックノードとを模式的に示しており、図27右側と同一の図である。   The left side of FIG. 37 schematically shows the variable node that performs the variable node calculation of Expression (1) and the check node that performs the check node calculation of Expression (7), and is the same view as the right side of FIG.

図37左側では、図27右側で説明したように、チェックノードに入力される入力データに、非線形関数φ(x)の演算を施してから、その演算結果が、チェックノードに入力され、チェックノードにおいて、非線形関数φ(x)の演算結果が積算されている。さらに、チェックノードから出力された出力データ(逆関数φ-1(x)の演算が施される前の、非線形関数φ(x)の演算結果の積算値)に、逆関数φ-1(x)の演算が施され、これにより、メッセージujが求められている。 On the left side of FIG. 37, as described on the right side of FIG. 27, after the operation of the nonlinear function φ (x) is performed on the input data input to the check node, the calculation result is input to the check node. , The calculation results of the nonlinear function φ (x) are integrated. Furthermore, (before the calculation of the inverse function phi -1 (x) is subjected, the integrated value of the calculation result of the nonlinear function phi (x)) output data output from the check node, the inverse function phi -1 (x ) And the message u j is obtained.

図37左側において、バリアブルノードから出力された出力データとしてのメッセージviは、チェックノードに入力される入力データxとして、上述したように、非線形関数φ(x)の演算が施されてから、チェックノードに入力される。 On the left side of FIG. 37, the message v i as output data output from the variable node is subjected to the calculation of the nonlinear function φ (x) as described above as the input data x input to the check node. Input to the check node.

したがって、図37左側に示したように、チェックノードに入力される入力データxに、非線形関数φ(x)の演算を施す代わりに、図37右側に示すように、バリアブルノードから出力された出力データx(バリアブルノードメッセージvi)に、非線形関数φ(x)の演算を施しても、バリアブルノード演算とチェックノード演算を行うことができる。 Therefore, as shown on the left side of FIG. 37, instead of performing the calculation of the nonlinear function φ (x) on the input data x inputted to the check node, the output outputted from the variable node as shown on the right side of FIG. Even if the calculation of the nonlinear function φ (x) is performed on the data x (variable node message v i ), the variable node calculation and the check node calculation can be performed.

すなわち、図37右側では、式(11)及び式(12)で説明したように、バリアブルノードにおいて、そのバリアブルノードに入力される入力データujが積算されることにより、メッセージviが求められ、出力データとして出力されている。そして、バリアブルノードから出力された(メッセージvi)に、非線形関数φ(x)の演算が施され、メッセージv'iが求められている。このメッセージv'i(メッセージviに、非線形関数φ(x)の演算を施した演算結果)は、チェックノードに入力され、式(13)で説明したように積算されて、出力データとして出力される。そして、その出力データ(メッセージviに、非線形関数φ(x)の演算を施した演算結果の積算値)に、逆関数φ-1(x)の演算が施されることにより、メッセージujが求められる。 That is, on the right side of FIG. 37, as described in Expression (11) and Expression (12), the message v i is obtained by integrating the input data u j input to the variable node in the variable node. Is output as output data. Then, the operation of the nonlinear function φ (x) is performed on (message v i ) output from the variable node, and the message v ′ i is obtained. This message v ′ i (the calculation result obtained by performing the calculation of the nonlinear function φ (x) on the message v i ) is input to the check node, integrated as described in Expression (13), and output as output data Is done. The output data (the integrated value of the operation result obtained by performing the operation of the nonlinear function φ (x) on the message v i ) is subjected to the operation of the inverse function φ −1 (x), whereby the message u j Is required.

図36のメッセージ計算部221では、図37右側に示したようにメッセージv'iとujを求める式(11)及び式(12)のバリアブルノード演算と式(13)のチェックノード演算が行われる。 In the message calculation unit 221 of FIG. 36, as shown on the right side of FIG. 37, the variable node calculation of the expressions (11) and (12) for obtaining the messages v ′ i and u j and the check node calculation of the expression (13) are performed. Is called.

このように、図36のメッセージ計算部221は、図37右側に示したメッセージv'iとujを求める式(11)及び式(12)のバリアブルノード演算と式(13)のチェックノード演算の両方を行うため、メッセージ計算部221には、バリアブルノードから出力された出力データxに対して、逆関数φ-1(x)と同一の演算結果が得られる非線形関数φ(x)の演算結果を出力するとともに、チェックノードから出力された出力データxに対して、逆関数φ-1(x)の演算結果を出力するLUT713が設けられている。 As described above, the message calculation unit 221 in FIG. 36 performs the variable node calculation of Expressions (11) and (12) and the check node calculation of Expression (13) for obtaining the messages v ′ i and u j shown on the right side of FIG. Therefore, the message calculation unit 221 calculates the nonlinear function φ (x) that can obtain the same calculation result as the inverse function φ −1 (x) for the output data x output from the variable node. A LUT 713 is provided for outputting the result and outputting the operation result of the inverse function φ −1 (x) for the output data x output from the check node.

そして、図36のメッセージ計算部221は、入力ポートP703に供給される制御信号C703に従って、その実質的な構成を変えて、式(11)及び式(12)のバリアブルノード演算と式(13)のチェックノード演算を選択的に行う。   Then, the message calculation unit 221 in FIG. 36 changes the substantial configuration according to the control signal C703 supplied to the input port P703, and performs the variable node calculation of Expression (11) and Expression (12) and Expression (13). The check node operation is selectively performed.

すなわち、メッセージ計算部221は、セレクタ700,705,712、及び715を有しており、入力ポートP703に供給された制御信号C703は、セレクタ700,705,712、及び715に供給される。   That is, the message calculation unit 221 includes selectors 700, 705, 712, and 715, and the control signal C703 supplied to the input port P703 is supplied to the selectors 700, 705, 712, and 715.

セレクタ700,705,712、及び715は、v端子とc端子とを有し、制御信号C703に従い、v端子又はc端子のうちのいずれかに供給される値を選択して、後段に出力する。すなわち、セレクタ700,705,712、及び715は、制御信号C703がバリアブルノード演算を指示する制御信号である場合には、v端子に供給される値を選択して後段に出力し、制御信号C703がチェックノード演算を指示する制御信号である場合には、c端子に供給される値を選択して後段に出力する。   The selectors 700, 705, 712, and 715 have a v terminal and a c terminal, select a value supplied to either the v terminal or the c terminal according to the control signal C703, and output the selected value to the subsequent stage. . That is, when the control signal C703 is a control signal for instructing variable node calculation, the selectors 700, 705, 712, and 715 select the value supplied to the v terminal and output it to the subsequent stage, and the control signal C703. Is a control signal for instructing a check node calculation, the value supplied to the c terminal is selected and output to the subsequent stage.

その結果、図36のメッセージ計算部221では、制御信号C703がバリアブルノード演算を指示しているときには、バリアブルノード演算が行われ、制御信号C703がチェックノード演算を指示しているときには、チェックノード演算が行われる。   As a result, in the message calculation unit 221 of FIG. 36, the variable node calculation is performed when the control signal C703 indicates a variable node calculation, and the check node calculation is performed when the control signal C703 indicates a check node calculation. Is done.

すなわち、図38は、図37右側に示したバリアブルノード演算時の図36のメッセージ計算部221の実質的な構成例を示している。   That is, FIG. 38 shows a substantial configuration example of the message calculation unit 221 of FIG. 36 at the time of variable node calculation shown on the right side of FIG.

なお、上述したように、バリアブルノード演算時には、セレクタ700,705,712、及び715はv端子を選択するが、図38では、図36に図示した構成のうちの、セレクタ700,705,712、及び715がv端子を選択することによってバリアブルノード演算時に機能しない部分(バリアブルノード演算に関係がない部分)の図示を省略してある。   As described above, in the variable node calculation, the selectors 700, 705, 712, and 715 select the v terminal, but in FIG. 38, the selectors 700, 705, 712, of the configurations illustrated in FIG. 715 and 715 select the v terminal, and portions that do not function during variable node computation (portions that are not related to variable node computation) are not shown.

メッセージ計算部221は、入力ポートP101,P701,PD701それぞれから入力されるメッセージを、必要に応じて用いて、式(11)及び式(12)のバリアブルノード演算を行い、その結果得られるメッセージD722を、出力ポートP722から出力する。   The message calculation unit 221 performs variable node calculation of Expressions (11) and (12) using the messages input from the input ports P101, P701, and PD701 as necessary, and a message D722 obtained as a result. Is output from the output port P722.

すなわち、入力ポートP101には、受信データメモリ105から読み出された受信データD101が供給される。また、入力ポートP701には、メッセージメモリ104から1つずつ読み出された、検査行列の各行に対応するチェックノードからの1回目のメッセージD701(メッセージuj)が供給される。 That is, the reception data D101 read from the reception data memory 105 is supplied to the input port P101. Further, the first message D701 (message u j ) is supplied to the input port P701 from the check node corresponding to each row of the parity check matrix read out from the message memory 104 one by one.

入力ポートP101に供給された受信データD101は、演算器711に供給される。   The reception data D101 supplied to the input port P101 is supplied to the calculator 711.

また、入力ポートP701に供給されたメッセージD701(メッセージuj)は、セレクタ700のv端子と、小FIFOメモリ716に供給される。 The message D701 (message u j ) supplied to the input port P701 is supplied to the v terminal of the selector 700 and the small FIFO memory 716.

セレクタ700は、上述したように、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給されたメッセージD701(チェックノードメッセージuj)は、メッセージD705として、演算器701に供給される。 As described above, the selector 700 selects the v terminal during the variable node calculation, and the message D701 (check node message u j ) supplied to the v terminal is supplied to the calculator 701 as the message D705. .

演算器701は、セレクタ700からのメッセージD705(メッセージuj)とレジスタ702に格納されている値D706とを加算することにより、メッセージD705を積算し、その結果得られる積算値を、レジスタ702に再格納する。なお、検査行列の1列に亘る全ての枝からのメッセージD705(メッセージuj)が積算された場合、レジスタ702はリセットされる。 The computing unit 701 adds the message D705 (message u j ) from the selector 700 and the value D706 stored in the register 702 to add up the message D705, and the integrated value obtained as a result is stored in the register 702. Store again. Note that when the message D705 (message u j ) from all branches over one column of the check matrix is accumulated, the register 702 is reset.

検査行列の1列に亘るメッセージD701(メッセージuj)が1つずつ読み込まれ、これにより、レジスタ702に1列分のメッセージD705(メッセージuj)が積算された値が格納された場合、すなわち、レジスタ702に、検査行列の1列に亘る全ての枝からのメッセージD705(メッセージuj)が積算された積算値(j=1からdvまでのΣuj)が格納された場合、セレクタ703は、レジスタ702に格納されている値、すなわち、検査行列の1列に亘る全ての枝からのメッセージD705(メッセージuj)が積算された積算値D706(j=1からdvまでのΣuj)を選択し、レジスタ704に出力して格納させる。 When the message D701 (message u j ) over one column of the check matrix is read one by one, and as a result, the value obtained by integrating the message D705 (message u j ) for one column is stored in the register 702, that is, When the accumulated value (Σu j from j = 1 to d v ) obtained by accumulating the message D 705 (message u j ) from all branches over one column of the check matrix is stored in the register 702, the selector 703. is,? uj j value stored in the register 702, i.e., the integrated value D706 (j = 1 to the message D705 (message u j) is accumulated from all of the branches across one row of the parity check matrix to d v ) Is selected and output to the register 704 for storage.

レジスタ704は、格納している値D706を、値D707として、セレクタ703と演算器710に供給する。レジスタ702に1列分のメッセージD705(メッセージuj)が積算された値が格納される直前までは、セレクタ703は、レジスタ704から供給された値D707を選択し、レジスタ704に出力し再格納させる。すなわち、検査行列の1列に亘る全ての枝からのメッセージD705(メッセージuj)が積算されるまで、レジスタ704は、前回積算された値を、セレクタ703と演算器710に供給する。 The register 704 supplies the stored value D706 as the value D707 to the selector 703 and the calculator 710. The selector 703 selects the value D707 supplied from the register 704, outputs it to the register 704, and stores it again until the value obtained by integrating the message D705 (message u j ) for one column is stored in the register 702. Let That is, until the message D705 (message u j ) from all branches over one column of the check matrix is accumulated, the register 704 supplies the previously accumulated value to the selector 703 and the calculator 710.

一方、入力ポートP701に供給されたメッセージD701(メッセージuj)は、上述したように、小FIFOメモリ716にも供給される。 On the other hand, the message D701 (message u j ) supplied to the input port P701 is also supplied to the small FIFO memory 716 as described above.

小FIFOメモリ716は、メッセージを遅延するための遅延メモリであるが、検査行列の重み(列の重みdv及び行の重みdc)の最大値よりも少ない数(であって1以上)のメッセージを記憶する容量しか有していない、容量の小さいFIFOメモリである。 The small FIFO memory 716 is a delay memory for delaying a message, but is a number (one or more) smaller than the maximum value of the check matrix weight (column weight d v and row weight d c ). This is a small-capacity FIFO memory that has only the capacity to store messages.

小FIFOメモリ716は、メッセージメモリ104からの1回目のメッセージD701を遅延し、セレクタ717のf端子に供給する。   The small FIFO memory 716 delays the first message D701 from the message memory 104 and supplies it to the f terminal of the selector 717.

セレクタ717は、入力端子として、f端子とm端子とを有しており、f端子には、上述したように、K小FIFOメモリ716で遅延されたメッセージD701が供給される。また、セレクタ717のm端子には、メッセージメモリ104から端子PD701に供給される2回目のメッセージDD701が供給される。   The selector 717 has an f terminal and an m terminal as input terminals, and the message D701 delayed by the K small FIFO memory 716 is supplied to the f terminal as described above. The second message DD701 supplied from the message memory 104 to the terminal PD701 is supplied to the m terminal of the selector 717.

さらに、セレクタ717には、制御部222(図35)から入力ポートP704に供給される制御信号C704が供給される。   Further, the control signal C704 supplied from the control unit 222 (FIG. 35) to the input port P704 is supplied to the selector 717.

セレクタ717は、制御部222からの制御信号C704に従い、小FIFOメモリ716で遅延された1回目のメッセージD701と、メッセージメモリ104からの2回目のメッセージDD701とのうちの一方を、バリアブルノード演算に用いるメッセージとして選択して出力する。   The selector 717 uses one of the first message D701 delayed by the small FIFO memory 716 and the second message DD701 from the message memory 104 according to the control signal C704 from the control unit 222 for variable node calculation. Select and output as a message to use.

セレクタ717が出力するメッセージ、すなわち、小FIFOメモリ716で遅延された1回目のメッセージD701、又は、メッセージメモリ104からの2回目のメッセージDD701は、セレクタ705のv端子に供給される。   The message output from the selector 717, that is, the first message D701 delayed by the small FIFO memory 716 or the second message DD701 from the message memory 104 is supplied to the v terminal of the selector 705.

ここで、図35の復号装置において、制御部222は、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ716が記憶可能なメッセージの数(記憶可能個数)d以下であるときには、小FIFOメモリ716で遅延された1回目のメッセージD701を選択することをセレクタ717に指示する制御信号C704を、メッセージ計算部211の入力ポートP704に供給する。 Here, in the decoding device of FIG. 35, the control unit 222 can store the column weight d v of the parity check matrix corresponding to the variable node to which the branch for which the message is sought is connected, in the small FIFO memory 716. When the number of messages (storable number) is less than or equal to d, the control signal C704 for instructing the selector 717 to select the first message D701 delayed by the small FIFO memory 716 is input to the input port P704 of the message calculation unit 211. To supply.

さらに、制御部222は、バリアブルノードに対応する列の重みdvが、小FIFOメモリ716の記憶可能個数d以下でないときには、メッセージメモリ104からの2回目のメッセージDD701を選択することをセレクタ717に指示する制御信号C704を、メッセージ計算部211の入力ポートP704に供給する。 Further, when the column weight d v corresponding to the variable node is not less than or equal to the storable number d of the small FIFO memory 716, the control unit 222 selects the second message DD 701 from the message memory 104 to the selector 717. The instructing control signal C704 is supplied to the input port P704 of the message calculation unit 211.

なお、制御部222は、小FIFOメモリ716で遅延されたメッセージD701を選択することをセレクタ717に指示する制御信号C704を、メッセージ計算部211に供給する場合、つまり、制御信号C704が、メッセージメモリ104から2回目に読み出されたメッセージDD701を選択することをセレクタ717に指示する信号でない場合には、メッセージメモリ104からのメッセージの読み出しについては、メッセージメモリ104からメッセージを1回だけ読み出す読み出し制御を行う。   Note that the control unit 222 supplies the message calculation unit 211 with a control signal C704 that instructs the selector 717 to select the message D701 delayed by the small FIFO memory 716, that is, the control signal C704 is the message memory. If the signal is not a signal for instructing the selector 717 to select the message DD 701 read for the second time from 104, the read control for reading the message from the message memory 104 is performed once for the message read from the message memory 104. I do.

したがって、制御部222では、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ716の記憶可能個数d以下でない場合には、図15で説明した、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御が行われるが、メッセージを求めようとしている枝が接続しているバリアブルノードに対応する検査行列の列の重みdvが、小FIFOメモリ716の記憶可能個数d以下である場合には、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御は行われず(行う必要がなく)、1回だけ読み出す読み出し制御、すなわち、図15のステップS101及びS102のうちの、ステップS101だけが行われる。 Therefore, in the control unit 222, when the column weight d v of the check matrix corresponding to the variable node to which the branch for which the message is to be obtained is connected is not less than or equal to the storable number d of the small FIFO memory 716, The readout control for reading the same message twice from the message memory 104 described in 15 is performed, but the column weight d v of the parity check matrix corresponding to the variable node to which the branch for which the message is requested is connected is: When the number of storable memories in the small FIFO memory 716 is equal to or less than d, read control for reading the same message from the message memory 104 twice is not performed (it is not necessary), that is, read control for reading only once, that is, FIG. Of these steps S101 and S102, only step S101 is performed.

一方、レジスタ704から新たな値D707(j=1からdvまでのΣuj)の出力が開始されると、すなわち、レジスタ702に1列分のメッセージD705(メッセージuj)が積算された積算値(j=1からdvまでのΣuj)が格納され、その積算値がセレクタ703で選択されて、レジスタ704に格納された直後、上述したようにして、セレクタ717が出力するメッセージ、すなわち、小FIFOメモリ716で遅延された1回目のメッセージメッセージD701(メッセージuj)、又は、2回目のメッセージDD701が、セレクタ705のv端子に供給される。 On the other hand, upon output of a new value from the register 704 D707 (? Uj j from j = 1 to d v) is started, namely, the integrated message D705 for one column in the register 702 (message u j) is accumulated stored value (? uj j from j = 1 to d v) is a message the integrated value is selected by the selector 703, immediately after being stored in the register 704, as described above, the selector 717 is output, The first message message D 701 (message u j ) delayed by the small FIFO memory 716 or the second message DD 701 is supplied to the v terminal of the selector 705.

セレクタ705は、上述したように、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給されたメッセージ(メッセージuj)は、メッセージD713として、演算器710に供給される。 As described above, the selector 705 selects the v terminal during variable node calculation, and the message (message u j ) supplied to the v terminal is supplied to the calculator 710 as the message D713.

演算器710は、レジスタ704から供給された積算値D707(j=1からdvまでのΣuj)から、セレクタ705からのメッセージD713(メッセージuj)を減算する。すなわち、演算器710では、検査行列の1列に亘る全ての枝からのメッセージD705(メッセージuj)の積算値D707(j=1からdvまでのΣuj)から、求めたい枝からのメッセージuj(j=dvのuj)としてのメッセージD713を減算して、減算値D714(j=1からdv-1までのΣuj)を求め、演算器711に供給する。 Calculator 710, from the supplied integrated value D707 (? Uj j from j = 1 to d v) from the register 704, subtracts the message from the selector 705 D713 (message u j). That is, the message of the calculator 710, the message D705 from all of the branches across one row of the parity check matrix (? Uj j from j = 1 to d v) integrated value D707 of (message u j) from a desired branch subtracts the message D713 as u j (j = d v of u j), we obtain the subtraction value D714 (? uj j from j = 1 to d v -1), and supplies the arithmetic unit 711.

演算器711は、入力ポートP101からの受信データD101と、演算器710からの減算値D714(j=1からdv-1までのΣuj)とを加算することにより、メッセージD715(バリアブルノードメッセージvi)を求めて出力する。 Calculator 711 adds the reception data D101 from the input port P101, and by adding the subtracted value D714 from the calculator 710 (? Uj j from j = 1 to d v -1), the message D715 (variable node message v i ) is obtained and output.

すなわち、以上により、式(11)の演算が行われ、演算器711からバリアブルノードメッセージviが出力される。 That is, the calculation of Expression (11) is performed as described above, and the variable node message v i is output from the calculator 711.

演算器711が出力するメッセージD715(メッセージvi)のうちの最上位ビットを除く下位ビット、つまり、メッセージD715の絶対値D716(|vi|)は、セレクタ712のv端子に供給され、最上位ビット、つまりメッセージD715(メッセージvi)の符号ビットD717(sign(vi))は、セレクタ715のv端子に供給される。 The low-order bits excluding the most significant bit of the message D715 (message v i ) output from the arithmetic unit 711, that is, the absolute value D716 (| v i |) of the message D715 is supplied to the v terminal of the selector 712, The upper bit, that is, the sign bit D717 (sign (v i )) of the message D715 (message v i ) is supplied to the v terminal of the selector 715.

セレクタ712は、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給される演算器711が出力するメッセージD715(メッセージvi)の絶対値D716(|vi|)を、絶対値D718として、LUT713に供給する。 The selector 712 selects the v terminal at the time of variable node calculation, and uses the absolute value D716 (| v i |) of the message D715 (message v i ) output from the calculator 711 supplied to the v terminal as the absolute value. This is supplied to the LUT 713 as D718.

LUT713は、セレクタ712からの絶対値D718(|vi|)を引数として、非線形関数φ(|vi|)の演算を行った演算結果D719(φ(|vi|))を読み出して出力する。 The LUT 713 reads out and outputs the calculation result D719 (φ (| v i |)) obtained by calculating the nonlinear function φ (| v i |) using the absolute value D718 (| v i |) from the selector 712 as an argument. To do.

セレクタ715も、バリアブルノード演算時にはv端子を選択しており、そのv端子に供給される演算器711が出力するメッセージD715(メッセージvi)の符号ビットD717(sign(vi))を、符号ビットD721(sign(vi))として出力する。 The selector 715 also selects the v terminal at the time of variable node calculation, and the sign bit D717 (sign (v i )) of the message D715 (message v i ) output from the calculator 711 supplied to the v terminal is encoded. Output as bit D721 (sign (v i )).

メッセージ計算部211は、セレクタ715が出力する符号ビットD721(sign(vi))を、LUT713が出力する演算結果D719(φ(|vi|))の符号ビットとして最上位ビットに付加することにより、メッセージD722(メッセージv'i)を得て、出力ポートP722から出力する。 The message calculation unit 211 adds the sign bit D721 (sign (v i )) output from the selector 715 to the most significant bit as the sign bit of the operation result D719 (φ (| v i |)) output from the LUT 713. Thus, the message D722 (message v ′ i ) is obtained and output from the output port P722.

以上により、式(12)の演算が行われ、メッセージv'iが求められる。 As described above, the calculation of Expression (12) is performed, and the message v ′ i is obtained.

以上のように、セレクタ700,705,712、及び715がv端子を選択しているメッセージ計算部221では、式(11)及び式(12)のバリアブルノード演算が行われ、その結果得られるメッセージv'iが、出力ポートP722から出力される。 As described above, in the message calculation unit 221 in which the selectors 700, 705, 712, and 715 have selected the v terminal, the variable node calculation of Expression (11) and Expression (12) is performed, and the message obtained as a result v ′ i is output from the output port P722.

次に、図39は、図37右側に示したチェックノード演算時の図36のメッセージ計算部221の実質的な構成例を示している。   Next, FIG. 39 shows a substantial configuration example of the message calculation unit 221 of FIG. 36 at the time of the check node calculation shown on the right side of FIG.

なお、上述したように、チェックノード演算時には、セレクタ700,705,712、及び715はc端子を選択するが、図39では、図36に図示した構成のうちの、セレクタ700,705,712、及び715がc端子を選択することによってチェックノード演算時に機能しない部分(チェックノード演算に関係がない部分)の図示を省略してある。   As described above, in the check node calculation, the selectors 700, 705, 712, and 715 select the c terminal, but in FIG. 39, the selectors 700, 705, 712, of the configuration illustrated in FIG. 715 and 715 select the c terminal, and a portion that does not function at the time of the check node calculation (portion not related to the check node calculation) is not shown.

チェックノード演算時においては、入力ポートP701には、メッセージメモリ104から1つずつ読み出された、検査行列の各列に対応するバリアブルノードからのバリアブルノードメッセージviから得られたメッセージ(式(11)及び式(12)のバリアブルノード演算によって求められたメッセージ)v'iが、順次、メッセージD701として供給される。 At the time of the check node calculation, the message obtained from the variable node message v i from the variable node corresponding to each column of the check matrix, read out from the message memory 104 one by one, is input to the input port P701. 11) and the message (v ′ i obtained by the variable node calculation of Expression (12)) are sequentially supplied as the message D701.

入力ポートP701に供給されたメッセージD701(メッセージv'i)のうちの最上位ビットを除く下位ビット、つまり、メッセージD701の絶対値D703(|v'i|)は、セレクタ700のc端子に供給され、最上位ビット、つまりメッセージD701の符号ビットD704は、EXOR回路706に供給される。 Of the message D701 (message v ′ i ) supplied to the input port P701, the lower bits excluding the most significant bit, that is, the absolute value D703 (| v ′ i |) of the message D701 is supplied to the c terminal of the selector 700. The most significant bit, that is, the sign bit D704 of the message D701 is supplied to the EXOR circuit 706.

セレクタ700は、チェックノード演算時にはc端子を選択しており、そのc端子に供給される、メッセージD701の絶対値D703(|v'i|)を、絶対値D705(|v'i|)として、演算器701に供給する。 The selector 700 selects the c terminal during the check node calculation, and the absolute value D703 (| v ′ i |) of the message D701 supplied to the c terminal is used as the absolute value D705 (| v ′ i |). , And supplied to the calculator 701.

演算器701は、絶対値D705(|v'i|)とレジスタ702に格納されている値D706とを加算することにより、絶対値D705を積算し、その結果得られる積算値をレジスタ702に再格納する。なお、検査行列の1行に亘る全ての枝からの(メッセージviから得られた)メッセージD701(v'i)の絶対値D705(D703)(|v'i|)が積算された場合、レジスタ702はリセットされる。 The computing unit 701 adds the absolute value D705 (| v ′ i |) and the value D706 stored in the register 702 to add up the absolute value D705, and re-adds the obtained integrated value to the register 702. Store. If the absolute values D705 (D703) (| v ' i |) of the message D701 (v ′ i ) (obtained from the message v i ) from all branches over one row of the check matrix are accumulated, Register 702 is reset.

検査行列の1行に亘る(メッセージviから得られた)メッセージD701が1つずつ読み込まれ、レジスタ702に1行分の絶対値D705が積算された積算値が格納された場合、セレクタ703は、レジスタ702に格納されている値、すなわち、検査行列の1行に亘る全ての枝からのメッセージD701(メッセージv'i)が積算された積算値D706(i=1からi=dcまでのΣ|v'i|)を選択し、レジスタ704に出力して格納させる。レジスタ704は、格納している積算値D706を、値D707として、セレクタ703と演算器710に供給する。 When the message D701 (obtained from the message v i ) over one row of the check matrix is read one by one and the accumulated value obtained by accumulating the absolute value D705 for one row is stored in the register 702, the selector 703 , the value stored in the register 702, i.e., from the integrated value D706 (i = 1 to the message D701 (message v 'i) is accumulated from all of the branches across one line of the parity check matrix until i = d c Σ | v ′ i |) is selected and output to the register 704 for storage. The register 704 supplies the stored integrated value D706 as a value D707 to the selector 703 and the calculator 710.

レジスタ702に1行分の絶対値D705が積算された積算値が格納される直前までは、セレクタ703は、レジスタ704から供給された値D707を選択し、レジスタ704に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD701(メッセージv'i)の絶対値|v'i|が積算されるまで、レジスタ704は、前回積算された絶対値|v'i|の積算値を、セレクタ703と演算器710に供給する。 The selector 703 selects the value D707 supplied from the register 704, outputs it to the register 704, and stores it again until the integrated value obtained by integrating the absolute value D705 for one row is stored in the register 702. That is, until the absolute value | v ′ i | of the message D701 (message v ′ i ) from all branches over one row of the check matrix is accumulated, the register 704 stores the absolute value | v ′ i accumulated last time. | Is supplied to the selector 703 and the calculator 710.

一方、入力ポートP701に供給されたメッセージD701(メッセージv'i)は、小FIFOメモリ716にも供給される。 On the other hand, the message D701 (message v ′ i ) supplied to the input port P701 is also supplied to the small FIFO memory 716.

小FIFOメモリ716は、上述したように、メッセージを遅延するための遅延メモリであるが、検査行列の重みの最大値よりも少ない数のメッセージを記憶する容量しか有していない、容量の小さいFIFOメモリであり、メッセージメモリ104からの1回目のメッセージD701を遅延し、セレクタ717のf端子に供給する。   As described above, the small FIFO memory 716 is a delay memory for delaying messages, but has only a capacity for storing a smaller number of messages than the maximum value of the check matrix weight, and has a small capacity FIFO. The first message D701 from the message memory 104 is delayed and supplied to the f terminal of the selector 717.

ここで、図35の復号装置において、制御部222は、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みdcが、小FIFOメモリ716が記憶可能なメッセージの数(記憶可能個数)d以下であるときには、小FIFOメモリ716で遅延された1回目のメッセージD701を選択することをセレクタ717に指示する制御信号C704を、メッセージ計算部221の入力ポートP704を介して、セレクタ717に供給する。 Here, in the decoding apparatus of FIG. 35, the control unit 222, the weight d c line of the check matrix corresponding to the check node branches trying to find a message is connected, a small FIFO memory 716 is capable of storing When the number of messages (storable number) is equal to or less than d, the control signal C704 for instructing the selector 717 to select the first message D701 delayed by the small FIFO memory 716 is input to the input port P704 of the message calculation unit 221. To the selector 717.

セレクタ717は、制御部222からの制御信号C704に従い、小FIFOメモリ716で遅延された1回目のメッセージD701を選択して出力する。   The selector 717 selects and outputs the first message D701 delayed by the small FIFO memory 716 in accordance with the control signal C704 from the control unit 222.

また、制御部222は、チェックノードに対応する行の重みdcが、小FIFOメモリ716の記憶可能個数d以下でないときには、メッセージメモリ104からの2回目のメッセージDD701を選択することをセレクタ717に指示する制御信号C704を、メッセージ計算部221の入力ポートP704に供給する。 The control unit 222, the weight d c in the row corresponding to the check node, when it is not less storable number d of the small FIFO memory 716 to select a second message DD701 from the message memory 104 to the selector 717 A control signal C704 to be instructed is supplied to the input port P704 of the message calculation unit 221.

さらに、制御部222では、メッセージを求めようとしている枝が接続しているチェックノードに対応する検査行列の行の重みdcが、小FIFOメモリ716の記憶可能個数d以下でないときには、図15で説明した、メッセージメモリ104から同一のメッセージを2回読み出す読み出し制御が行われ、これにより、メッセージメモリ104から2回目に読み出されたメッセージDD701が、入力ポートPD701を介して、セレクタ717のm端子に供給される。 Further, the control unit 222, when the weight d c line of the check matrix corresponding to the check node branches trying to find a message is connected, not less storable number d of the small FIFO memory 716, in Figure 15 The above-described read control for reading the same message from the message memory 104 twice is performed, whereby the message DD701 read from the message memory 104 for the second time is input to the m terminal of the selector 717 via the input port PD701. To be supplied.

セレクタ717は、制御部222からの制御信号C704に従い、メッセージメモリ104から入力ポートPD701を介して供給される2回目のメッセージDD701を選択して出力する。   The selector 717 selects and outputs the second message DD701 supplied from the message memory 104 via the input port PD701 in accordance with the control signal C704 from the control unit 222.

セレクタ717が出力するメッセージ(メッセージv'i)、すなわち、小FIFOメモリ716で遅延された1回目のメッセージD701、又は、メッセージメモリ104からの2回目のメッセージDD701のうちの最上位ビットを除く下位ビット、つまり、絶対値D711(|v'i|)は、セレクタ705のc端子に供給され、最上位ビット、つまり、符号ビットD712(sign(v'i))は、EXOR回路714に供給される。 The message (message v ′ i ) output by the selector 717, that is, the lower order except the most significant bit of the first message D 701 delayed by the small FIFO memory 716 or the second message DD 701 from the message memory 104 The bit, that is, the absolute value D711 (| v ′ i |) is supplied to the c terminal of the selector 705, and the most significant bit, that is, the sign bit D 712 (sign (v ′ i )) is supplied to the EXOR circuit 714. The

セレクタ705は、チェックノード演算時にはc端子を選択しており、そのc端子に供給されるメッセージ(v'i)の絶対値D711(|v'i|)を、絶対値D713(|v'i|)として、演算器710に供給する。 The selector 705 selects the c terminal at the time of the check node calculation, and the absolute value D711 (| v ′ i |) of the message (v ′ i ) supplied to the c terminal is converted into the absolute value D713 (| v ′ i |) Is supplied to the computing unit 710.

すなわち、レジスタ704において、新たな値D707(i=1からi=dcまでのΣφ(|v'i|))の出力が開始されると、つまり、レジスタ702に1行分の絶対値D705が積算された新たな積算値(i=1からi=dcまでのΣφ(|v'i|))が格納され、セレクタ703で選択されて、レジスタ704に格納された直後、セレクタ705からは、セレクタ717が出力するメッセージ(メッセージv'i)の絶対値D711(|v'i|)が、絶対値D713(|v'i|)として、演算器710に供給される。 That is, in the register 704, a new value D707 (Sigma] [phi of i = 1 through i = d c (| v ' i |)) the output of the start, that is, the absolute value of one row in the register 702 D705 There accumulated the new integrated value (Sigma] [phi of i = 1 through i = d c (| v ' i |)) is stored, is selected by the selector 703, immediately after being stored in the register 704, the selector 705 The absolute value D711 (| v ′ i |) of the message (message v ′ i ) output from the selector 717 is supplied to the computing unit 710 as the absolute value D713 (| v ′ i |).

演算器710は、レジスタ704から供給された値D707(Σ|v'i|)から、セレクタ705から供給された値D713(|v'i|)を減算し、その減算結果を、減算値D714として出力する。すなわち、演算器710は、検査行列の1行に亘る全ての枝からのメッセージD701(メッセージv'i)の絶対値|v'i|の積算値D707(i=1からi=dcまでのΣ|v'i|)から、求めたい枝からのメッセージ(i=dcのv'i)の絶対値D713(|v'i|)を減算して、その減算値(i=1からi=dc-1までのΣ|v'i|)を値D714として、セレクタ712のc端子に供給する。 Calculator 710, the value supplied D707 from the register 704 | '| from supplied from the selector 705 the value D713 (i (| v Σ v )' i |) subtracted, the subtraction result, the subtraction value D714 Output as. That is, the calculator 710, 'the absolute value of (i | v messages D701 from all of the branches across one line of the parity check matrix message v)' i | of the integrated value D707 (i = 1 to i = d c sigma | v 'i | from), the message (i = d c of v from a desired branch' absolute value of i) D713 (| v 'i |) is subtracted, i from the subtraction value (i = 1 Σ | v ′ i |) up to = d c −1 is supplied to the c terminal of the selector 712 as a value D714.

セレクタ712は、チェックノード演算時には、c端子を選択しており、そのc端子に供給される値D714(i=1からi=dc-1までのΣ|v'i|)を、値D718として、LUT713に供給する。 The selector 712 selects the c terminal at the time of the check node calculation, and uses the value D714 (Σ | v ′ i | from i = 1 to i = d c −1) supplied to the c terminal to the value D718. Is supplied to the LUT 713.

LUT713は、セレクタ712からの値D718(Σ|v'i|)を引数として、逆関数φ-1(Σ|v'i|)の演算を行った演算結果D719(φ-1(Σ|v'i|))を読み出して出力する。 The LUT 713 uses the value D718 (Σ | v ′ i |) from the selector 712 as an argument, and the operation result D719 (φ −1 (Σ | v) where the inverse function φ −1 (Σ | v ′ i |) is calculated. ' i |)) is read and output.

以上の処理と並行して、EXOR回路706は、レジスタ707に格納されている値D709と、1回目のメッセージD701(メッセージv'i)の最上位ビットである符号ビットD704(sign(v'i))との排他的論理和を演算することにより、符号ビットD704どうしの乗算を行い、乗算結果D708を、レジスタ707に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD701の符号ビットD704が乗算された場合、レジスタ707はリセットされる。 In parallel with the above processing, the EXOR circuit 706 generates the value D709 stored in the register 707 and the sign bit D704 (sign (v ′ i ) that is the most significant bit of the first message D701 (message v ′ i ). )) Is multiplied by the sign bit D704 and the multiplication result D708 is re-stored in the register 707. When the sign bit D704 of the message D701 from all branches over one row of the check matrix is multiplied, the register 707 is reset.

検査行列の1行に亘る全ての枝からのメッセージD701の符号ビットD704が乗算された乗算結果D708(i=1からdcまでのΠsign(v'i))がレジスタ707に格納された場合、セレクタ708は、レジスタ707に格納されている値D709、すなわち、検査行列の1行に亘る全ての枝からのメッセージD701の符号ビットD704が乗算された値D709(i=1からi=dcまでのΠsign(v'i))を選択し、レジスタ709に出力して格納させる。レジスタ709は、格納している値D710を、セレクタ708とEXOR回路714に供給する。 If the multiplication result of the sign bit D704 of the message D701 is multiplied from all of the branches across one line of the parity check matrix D708 (Πsign from i = 1 to d c (v 'i)) is stored in the register 707, the selector 708, the value stored in the register 707 D709, i.e., the value D709 (i = 1 the sign bit D704 of the message D701 is multiplied from all of the branches across one line of the parity check matrix until i = d c Πsign (v ′ i )) is selected and output to the register 709 for storage. The register 709 supplies the stored value D710 to the selector 708 and the EXOR circuit 714.

検査行列の1行に亘る全ての枝からのメッセージD701の符号ビットD704が乗算された乗算結果D708(i=1からdcまでのΠsign(v'i))がレジスタ707に格納される直前までは、セレクタ708は、レジスタ709から供給された値D710を選択し、レジスタ709に出力して再格納させる。すなわち、検査行列の1行に亘る全ての枝からのメッセージD701(メッセージv'i)の符号ビットD704が乗算されるまで、レジスタ709は、前回格納した値を、セレクタ708とEXOR回路714に供給する。 Until just before is stored in the register 707 (Πsign to d c (v 'i) from i = 1) the multiplication result D708 to the sign bit D704 is multiplied by the message D701 from all of the branches across one line of the parity check matrix The selector 708 selects the value D710 supplied from the register 709, outputs it to the register 709, and stores it again. That is, the register 709 supplies the previously stored value to the selector 708 and the EXOR circuit 714 until the sign bit D704 of the message D701 (message v ′ i ) from all the branches over one row of the check matrix is multiplied. To do.

一方、レジスタ709から新たな値D710(i=1からi=dcまでのΠsign(v'i))がEXOR回路714に供給されたとき、すなわち、レジスタ707に1行に亘る全ての枝からのメッセージD701の符号ビットD704が乗算された新たな値D709(i=1からi=dcまでのΠsign(v'i))が格納され、その新たな値D709がセレクタ708で選択されてレジスタ709に格納されたとき、レジスタ704には、上述したように、1行分の絶対値D705(|v'i|)が積算された積算値(i=1からi=dcまでのΣ|v'i|)が格納される。 On the other hand, when the new value from the register 709 D710 which (Paisign of i = 1 through i = d c (v 'i )) is supplied to the EXOR circuit 714, i.e., all of the branches across one line to the register 707 new value sign bit D704 of the message D701 is multiplied in D709 (Πsign of i = 1 through i = d c (v 'i )) are stored, the new value D709 is selected by the selector 708 registers when stored in 709, the register 704, as described above, the absolute value of one row D705 (| v 'i |) is accumulated integrated values from (i = 1 to i = d c Σ | v ' i |) is stored.

レジスタ704に1行分の絶対値D705が積算された積算値(i=1からi=dcまでのΣ|v'i|)が格納されると、上述したようにして、セレクタ717が出力するメッセージ(メッセージv'i)、すなわち、小FIFOメモリ716で遅延された1回目のメッセージD701、又は、メッセージメモリ104からの2回目のメッセージDD701の最上位ビットである符号ビットD712(sign(v'i))が、EXOR回路714に供給される。 Integrated value absolute value D705 for one row is accumulated in the register 704 (i = from 1 to i = d c Σ | v ' i |) when is stored, as described above, the selector 717 outputs Message (message v ′ i ), that is, the first bit D701 delayed in the small FIFO memory 716 or the sign bit D712 (sign (v) that is the most significant bit of the second message DD701 from the message memory 104 ' i )) is supplied to the EXOR circuit 714.

EXOR回路714は、レジスタ709から供給された新たな値D710と、セレクタ717が出力するメッセージ(v'i)の符号ビットD712との排他的論理和を演算することにより、値D710を、符号ビットD712で除算し、除算結果を除算値D720として、セレクタ715のc端子に供給する。すなわち、EXOR回路714は、検査行列の1行に亘る全ての枝からのメッセージD701の符号ビットD704の乗算値(i=1からi=dcまでのΠsign(v'i))を、求めたい枝からのメッセージv'iの符号ビットD712(i=dcのsign(v'i))で除算して、その除算値(i=1からi=dc-1までのΠsign(v'i))を除算値D720として、セレクタ715のc端子に供給する。 The EXOR circuit 714 calculates the exclusive DOR of the new value D710 supplied from the register 709 and the sign bit D712 of the message (v ′ i ) output from the selector 717 to obtain the value D710 as the sign bit. Divide by D712 and supply the result of division as a division value D720 to the c terminal of the selector 715. That, EXOR circuit 714, the multiplication value of the sign bit D704 of the message D701 from all of the branches across one line of the parity check matrix (Paisign of i = 1 to i = d c (v 'i )), to be obtained is divided by the message v from the branch 'sign bit of the i D712 (i = d c of sign (v' i)), the division value from (i = 1 to i = d c -1 Πsign (v 'i )) Is supplied to the c terminal of the selector 715 as a division value D720.

セレクタ715は、チェックノード演算時にはc端子を選択しており、そのc端子に供給される除算値D720(i=1からi=dc-1までのΠsign(v'i))を、符号ビットD721として出力する。 The selector 715 selects the c terminal at the time of the check node calculation, and uses a division value D720 (Πsign (v ′ i ) from i = 1 to i = d c −1) supplied to the c terminal as a sign bit. Output as D721.

そして、メッセージ計算部221では、以上のようにしてセレクタ715から出力された符号ビットD721(Πsign(v'i))を、LUT713が出力する演算結果D719(φ-1(Σ|v'i|))に符号ビットとして付加(乗算)することにより、式(13)で表されるメッセージ(チェックノードメッセージ)ujを得て、メッセージD722として、出力ポートP722から出力する。 Then, the message calculation unit 221 uses the sign bit D721 (Πsign (v ′ i )) output from the selector 715 as described above, and the calculation result D719 (φ −1 (Σ | v ′ i |) output from the LUT 713. )) Is added (multiplied) as a sign bit to obtain a message (check node message) u j represented by Expression (13), and is output from the output port P722 as a message D722.

以上のように、セレクタ700,705,712、及び715がc端子を選択しているメッセージ計算部221では、式(13)のチェックノード演算が行われ、その結果得られるメッセージujが、出力ポートP722から出力される。 As described above, in the message calculation unit 221 in which the selectors 700, 705, 712, and 715 have selected the c terminal, the check node calculation of Expression (13) is performed, and the message u j obtained as a result is output. Output from port P722.

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

以上のように、図35の復号装置では、遅延メモリとして、検査行列の重みの最大値よりも少ない数のメッセージを記憶する小FIFOメモリ716(図32)を設けるようにしたので、少なくとも検査行列の重みの最大値に等しい数のメッセージを記憶するFIFOメモリ320(図22)を設ける場合に比較して、復号装置の規模を削減することができる。   As described above, in the decoding apparatus of FIG. 35, as the delay memory, the small FIFO memory 716 (FIG. 32) for storing a smaller number of messages than the maximum value of the weight of the parity check matrix is provided. Compared with the case where the FIFO memory 320 (FIG. 22) for storing a number of messages equal to the maximum value of the weights is provided, the scale of the decoding device can be reduced.

さらに、注目ノードに対応する検査行列の重みが、記憶可能個数d以下である場合(記憶可能個数dより大でない場合)には、小FIFOメモリ716の出力を選択して、ノードの演算に用いるので、少なくとも検査行列の重みの最大値に等しい数のメッセージを記憶するFIFOメモリ320(図22)を有する図21の復号装置と同様の時間でメッセージの読み書きを行うことができる。したがって、図21の復号装置と同様の回数だけ繰り返し復号を行うことができるので(1回の復号に要する時間が図21の復号装置と同様となるので)、復号性能が劣化することを抑制することができる。   Further, when the weight of the parity check matrix corresponding to the node of interest is equal to or less than the storable number d (when it is not larger than the storable number d), the output of the small FIFO memory 716 is selected and used for the node calculation. Therefore, it is possible to read and write messages in the same time as the decoding apparatus of FIG. 21 having the FIFO memory 320 (FIG. 22) storing at least the number of messages equal to the maximum value of the weight of the parity check matrix. Accordingly, iterative decoding can be performed the same number of times as the decoding device of FIG. 21 (the time required for one decoding is the same as that of the decoding device of FIG. 21), so that deterioration of decoding performance is suppressed. be able to.

また、注目ノードに対応する検査行列の重みが、記憶可能個数dより大である場合には、メッセージメモリ104から同一のメッセージを2回読み出し、2回目に読み出されたメッセージを選択して、ノードの演算に用いるので、注目ノードに対応する検査行列の重みが、記憶可能個数dより大であっても、LDPC符号の復号を行うことができる。   Further, when the weight of the check matrix corresponding to the node of interest is larger than the storable number d, the same message is read twice from the message memory 104, the second read message is selected, Since it is used for the node calculation, the LDPC code can be decoded even if the weight of the parity check matrix corresponding to the node of interest is larger than the storable number d.

以上から、図35の復号装置によれば、規模を削減しつつ、復号性能の劣化を抑制することができる。   From the above, according to the decoding device of FIG. 35, it is possible to suppress degradation in decoding performance while reducing the scale.

ここで、小FIFOメモリ716の記憶可能個数dが、例えば、3であり、復号の対象のLDPC符号を定義する検査行列が、例えば、図1に示した、各列の重みdvが3で、且つ、各行の重みが6の行列である場合には、記憶可能個数dである3が、検査行列の列の重みdvである3よりも小でなく、したがって、バリアブルノード演算時には、3個のメッセージD701が積算されるまでの間、小FIFOメモリ716において、その3個のメッセージD701すべてを遅延することができるから、セレクタ717では、端子fに供給される、小FIFOメモリ716で遅延された1回目のメッセージD701が選択される。 Here, the storable number d of the small FIFO memory 716 is 3, for example, and the parity check matrix defining the LDPC code to be decoded is, for example, the weight d v of each column shown in FIG. When the weight of each row is a matrix of 6, 3 that is the storable number d is not smaller than 3 that is the column weight d v of the parity check matrix. Since all three messages D701 can be delayed in the small FIFO memory 716 until the number of messages D701 are accumulated, the selector 717 delays the small FIFO memory 716 supplied to the terminal f. The first message D701 thus selected is selected.

また、この場合、記憶可能個数dである3が、検査行列の行の重みdcである6よりも小であり、したがって、チェックノード演算時には、記憶可能個数dである3よりも多い6個のメッセージD701(メッセージv'i)の絶対値|v'i|が積算されるまでの間、小FIFOメモリ716において、その6個のメッセージD701すべてを遅延することができないため、セレクタ717では、端子mに供給される、メッセージメモリ104からの2回目のメッセージDD701が選択される。 In this case, 3 is storable number d is a smaller than 6 is the weight d c line of the check matrix, therefore, at the time of a check node calculation, six more than 3 is storable number d Since all the six messages D701 cannot be delayed in the small FIFO memory 716 until the absolute value | v ′ i | of the message D701 (message v ′ i ) is accumulated, the selector 717 The second message DD701 from the message memory 104 supplied to the terminal m is selected.

なお、図35の復号装置では、メッセージ計算部221において、バリアブルノードの演算を行う回路と、チェックノードの演算を行う回路との一部(演算器701、レジスタ702、セレクタ703、レジスタ704、演算器710、及びLUT713)が共有化されているので、その共有化の分だけ、復号装置の規模を、より削減することができる。   In the decoding apparatus of FIG. 35, the message calculation unit 221 includes a part of a circuit that performs a variable node operation and a circuit that performs a check node operation (an arithmetic unit 701, a register 702, a selector 703, a register 704, an operation Since the unit 710 and the LUT 713) are shared, the scale of the decoding device can be further reduced by the amount of sharing.

また、図35の復号装置のメッセージ計算部221では、ノードから出力された出力データxの絶対値|x|を引数として、同一の演算結果が得られる逆関数φ-1(x)と非線形関数φ(x)の演算をそれぞれ含む式(12)と式(13)をそれぞれ用いたバリアブルノード演算とチェックノード演算が行われる。 In the message calculation unit 221 of the decoding device in FIG. 35, the inverse function φ −1 (x) and the nonlinear function that can obtain the same calculation result using the absolute value | x | of the output data x output from the node as an argument. A variable node calculation and a check node calculation using Expression (12) and Expression (13) respectively including the calculation of φ (x) are performed.

したがって、メッセージ計算部221には、図36に示したように、出力データxの絶対値|x|に対して、逆関数φ-1(x)と非線形関数φ(x)の演算を行うLUT713の1つだけあれば済み、図26に示したLUT300,310、及び314の3つのLUTを必要とするメッセージ計算部201、さらには、図31に示したLUT600及び610の2つのLUTを必要とするメッセージ計算部211よりも、規模を削減することができる。 Therefore, as shown in FIG. 36, the message calculation unit 221 performs LUT 713 for calculating the inverse function φ −1 (x) and the nonlinear function φ (x) with respect to the absolute value | x | of the output data x. 26, and the message calculation unit 201 that requires three LUTs 300, 310, and 314 shown in FIG. 26, and two LUTs 600 and 610 shown in FIG. 31 are required. Thus, the scale can be reduced as compared with the message calculation unit 211.

以上のように、図17、図25、図30、及び図35の復号装置では、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリ(図18の小FIFOメモリ161、並びに図19の小FIFOメモリ141及び143、図26の小FIFOメモリ317、図31の小FIFOメモリ616、図36の小FIFOメモリ716)を設けるようにしたので、少なくとも、検査行列の重みの最大値と同一の数のメッセージを記憶する遅延メモリ(例えば、図9のFIFOメモリ155、並びに図10のFIFOメモリ127及び133、図22のFIFOメモリ320)を有する復号装置(図8、図21)に比較して、復号装置の規模を削減することができる。   As described above, in the decoding devices of FIGS. 17, 25, 30, and 35, the delay memory (the small FIFO memory 161 of FIG. 18 and the number of messages smaller than the maximum value of the parity check matrix weight) is stored. The small FIFO memories 141 and 143 in FIG. 19, the small FIFO memory 317 in FIG. 26, the small FIFO memory 616 in FIG. 31, and the small FIFO memory 716 in FIG. 36) are provided, so that at least the maximum value of the weight of the parity check matrix In a decoding device (FIG. 8, FIG. 21) having a delay memory (for example, FIFO memory 155 of FIG. 9, FIFO memories 127 and 133 of FIG. 10, and FIFO memory 320 of FIG. 22). In comparison, the scale of the decoding device can be reduced.

また、遅延メモリを有しない復号装置(図12)に比較して、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリ等の、少ない規模の増加によって、演算の効率を向上させること、つまり、少なくとも、検査行列の重みの最大値と同一の数のメッセージを記憶する遅延メモリを有する復号装置と同様の回数だけ繰り返し復号を行うことが可能となる。   Compared to a decoding device that does not have a delay memory (FIG. 12), the operation efficiency is improved by increasing the scale, such as a delay memory that stores a smaller number of messages than the maximum value of the check matrix weight. That is, at least, it is possible to perform decoding repeatedly as many times as the decoding device having a delay memory that stores the same number of messages as the maximum value of the weight of the parity check matrix.

ここで、以上のように、復号装置に、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリを設けることは、LDPC符号の符号長が長く、検査行列の行の重みに対して、列の重みが小である場合において、列の重みの最大値と同一の数(但し、行の重みの最大値より小の数)だけの遅延を行う遅延メモリを採用したときに、特に効果を発揮する。   Here, as described above, providing a delay memory that stores a smaller number of messages than the maximum value of the weight of the parity check matrix in the decoding device is that the code length of the LDPC code is long and the row weight of the parity check matrix is increased. On the other hand, when the column weight is small, when a delay memory that delays by the same number as the maximum value of the column weight (however, a number smaller than the maximum value of the row weight) is adopted, Especially effective.

すなわち、この場合、バリアブルノード演算は、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリで遅延されたメッセージを用いて行われることになるので、検査行列の重みの最大値と同一の数のメッセージを記憶する遅延メモリを有する復号装置と同様の回数だけ繰り返し復号を行うことができ、復号性能が劣化することを、より抑制しつつ、復号装置の規模を、より削減することができる。   That is, in this case, the variable node operation is performed using a message delayed by a delay memory that stores a smaller number of messages than the maximum value of the check matrix weight, and thus the maximum value of the check matrix weight. It is possible to repeatedly perform decoding as many times as a decoding device having a delay memory that stores the same number of messages, and to further reduce the scale of the decoding device while further suppressing deterioration of decoding performance be able to.

また、複数のノードのメッセージを並列で求めるために、複数のメッセージ計算部を設けて、復号装置を構成する場合には、メッセージ計算部の数だけ、遅延メモリが必要となるから、そのような場合も、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリを設けることによる、復号装置の規模の削減の効果は、大となる。   Further, in order to obtain a message of a plurality of nodes in parallel, when a plurality of message calculation units are provided and a decoding device is configured, as many delay memories as the number of message calculation units are required. Even in this case, the effect of reducing the scale of the decoding apparatus by providing a delay memory that stores a smaller number of messages than the maximum value of the check matrix weight is significant.

なお、本実施の形態では、検査行列の重みの最大値よりも少ない数のメッセージを記憶する遅延メモリとして、3個のメッセージを記憶する遅延メモリ(例えば、図26の小FIFOメモリ317等)を採用したが、遅延メモリは、3個のメッセージを記憶するメモリに限定されるものではなく、検査行列の重みの最大値よりも少ない数のメッセージを記憶するメモリであれば良い。   In the present embodiment, a delay memory that stores three messages (for example, the small FIFO memory 317 in FIG. 26) is used as a delay memory that stores a smaller number of messages than the maximum value of the check matrix weight. Although adopted, the delay memory is not limited to a memory that stores three messages, and may be a memory that stores a smaller number of messages than the maximum value of the check matrix weight.

また、メッセージメモリ104は、RAM#AとRAM#Bとの2バンクで構成することとしたが、メッセージメモリ104は、3以上のRAMで3バンク以上に構成することが可能である。   Further, the message memory 104 is composed of two banks, RAM # A and RAM # B, but the message memory 104 can be composed of three or more RAMs and three or more banks.

次に、制御部202(図25)等が行う図15に示したメッセージメモリ104に対する読み書き制御の処理、及び図20に示したセレクタ制御の処理は、専用のハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、マイクロコンピュータ(いわゆるマイコン)等のコンピュータにインストールされる。   Next, the read / write control process for the message memory 104 shown in FIG. 15 and the selector control process shown in FIG. 20 performed by the control unit 202 (FIG. 25) and the like can be performed by dedicated hardware. It can also be done by software. When a series of processing is performed by software, a program constituting the software is installed in a computer such as a microcomputer (so-called microcomputer).

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

プログラムは、コンピュータに内蔵されている記録媒体としての不揮発性メモリ905やROM903に予め記録しておくことができる。   The program can be recorded in advance in a nonvolatile memory 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)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。   Alternatively, the program is temporarily or permanently stored on a removable recording medium such as a flexible disk, CD-ROM (Compact Disc Read Only Memory), MO (Magneto Optical) disk, DVD (Digital Versatile Disc), magnetic disk, or semiconductor memory. Can be stored (recorded).

なお、プログラムは、上述したようなリムーバブル記録媒体から、あるいはネットワークを経由してコンピュータにインストールすることができる。   The program can be installed on the computer from the above-described removable recording medium or via a network.

コンピュータは、CPU(Central Processing Unit)902を内蔵している。CPU902には、バス901を介して、入出力インタフェース906が接続されており、CPU902は、ROM(Read Only Memory)903や不揮発性メモリ905にインストールされたプログラムを、RAM(Random Access Memory)904にロードして実行する。これにより、CPU902は、入出力インタフェース906を介して、メッセージメモリ104に対する読み書き制御(図15)や、セレクタ制御(図20)を行う。   The computer includes a CPU (Central Processing Unit) 902. An input / output interface 906 is connected to the CPU 902 via a bus 901, and the CPU 902 loads a program installed in a ROM (Read Only Memory) 903 or a nonvolatile memory 905 into a RAM (Random Access Memory) 904. Load and execute. As a result, the CPU 902 performs read / write control (FIG. 15) and selector control (FIG. 20) on the message memory 104 via the input / output interface 906.

ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。   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.

なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。   The embodiment of the present invention is not limited to the above-described embodiment, and various modifications can be made without departing from the gist of the present invention.

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. 従来の復号装置の一例の構成を示すブロック図である。It is a block diagram which shows the structure of an example of the conventional decoding apparatus. メッセージを1つずつ計算するバリアブルノード計算器102の構成例を示すブロック図である。It is a block diagram which shows the structural example of the variable node calculator 102 which calculates a message one by one. メッセージを1つずつ計算するチェックノード計算器103の構成例を示すブロック図である。It is a block diagram which shows the structural example of the check node calculator 103 which calculates a message one by one. メッセージメモリ104に対するメッセージの読み書きの従来のタイミングを示すタイミングチャートである。6 is a timing chart showing conventional timings for reading and writing messages to and from the message memory 104. メッセージを遅延するための遅延メモリを有しない復号装置の構成例を示すブロック図である。It is a block diagram which shows the structural example of the decoding apparatus which does not have a delay memory for delaying a message. バリアブルノード計算器172の構成例を示すブロック図である。6 is a block diagram illustrating a configuration example of a variable node calculator 172. FIG. チェックノード計算器173の構成例を示すブロック図である。6 is a block diagram illustrating a configuration example of a check node calculator 173. FIG. メッセージメモリ104に対する読み書き制御の処理を説明するフローチャートである。5 is a flowchart for explaining processing of read / write control for a message memory 104. メッセージメモリ104に対するメッセージの読み書きのタイミングを示すタイミングチャートである。6 is a timing chart showing message read / write timing with respect to the message memory 104; 本発明を適用した復号装置の第1実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of 1st Embodiment of the decoding apparatus to which this invention is applied. バリアブルノード計算器182の構成例を示すブロック図である。6 is a block diagram illustrating a configuration example of a variable node calculator 182. FIG. チェックノード計算器183の構成例を示すブロック図である。6 is a block diagram illustrating a configuration example of a check node calculator 183. FIG. セレクタ制御の処理を説明するフローチャートである。It is a flowchart explaining the process of selector control. バリアブルノード演算を行う回路とチェックノード演算を行う回路との一部が共有化された復号装置の構成例を示すブロック図である。FIG. 10 is a block diagram illustrating a configuration example of a decoding device in which a circuit that performs variable node calculation and a circuit that performs check node calculation are partially shared. メッセージ計算部191の構成例を示すブロック図である。3 is a block diagram illustrating a configuration example of a message calculation unit 191. FIG. バリアブルノード演算時のメッセージ計算部191の実質的な構成を示すブロック図である。It is a block diagram which shows the substantial structure of the message calculation part 191 at the time of variable node calculation. チェックノード演算時のメッセージ計算部191の実質的な構成を示すブロック図である。It is a block diagram which shows the substantial structure of the message calculation part 191 at the time of a check node calculation. 本発明を適用した復号装置の第2実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of 2nd Embodiment of the decoding apparatus to which this invention is applied. メッセージ計算部201の構成例を示すブロック図である。3 is a block diagram illustrating a configuration example of a message calculation unit 201. FIG. メッセージ計算部201が行うバリアブルノード演算とチェックノード演算を説明する図である。It is a figure explaining the variable node calculation and check node calculation which the message calculation part 201 performs. バリアブルノード演算時のメッセージ計算部201の実質的な構成を示すブロック図である。It is a block diagram which shows the substantial structure of the message calculation part 201 at the time of variable node calculation. チェックノード演算時のメッセージ計算部201の実質的な構成を示すブロック図である。It is a block diagram which shows the substantial structure of the message calculation part 201 at the time of check node calculation. 本発明を適用した復号装置の第3実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of 3rd Embodiment of the decoding apparatus to which this invention is applied. メッセージ計算部211の構成例を示すブロック図である。3 is a block diagram illustrating a configuration example of a message calculation unit 211. FIG. メッセージ計算部211が行うバリアブルノード演算とチェックノード演算を説明する図である。It is a figure explaining the variable node calculation and check node calculation which the message calculation part 211 performs. バリアブルノード演算時のメッセージ計算部211の実質的な構成を示すブロック図である。It is a block diagram which shows the substantial structure of the message calculation part 211 at the time of variable node calculation. チェックノード演算時のメッセージ計算部211の実質的な構成を示すブロック図である。It is a block diagram which shows the substantial structure of the message calculation part 211 at the time of a check node calculation. 本発明を適用した復号装置の第4実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of 4th Embodiment of the decoding apparatus to which this invention is applied. メッセージ計算部221の構成例を示すブロック図である。3 is a block diagram illustrating a configuration example of a message calculation unit 221. FIG. メッセージ計算部221が行うバリアブルノード演算とチェックノード演算を説明する図である。It is a figure explaining the variable node calculation and check node calculation which the message calculation part 221 performs. バリアブルノード演算時のメッセージ計算部221の実質的な構成を示すブロック図である。It is a block diagram which shows the substantial structure of the message calculation part 221 at the time of variable node calculation. チェックノード演算時のメッセージ計算部221の実質的な構成を示すブロック図である。It is a block diagram which shows the substantial structure of the message calculation part 221 at the time of a check node calculation. 本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。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

104 メッセージメモリ, 105 受信データメモリ, 121 LUT, 122
演算器, 123 レジスタ, 124 セレクタ, 125 レジスタ, 126 演算器, 128 LUT, 129 EXOR回路, 130 レジスタ, 131 セレクタ, 132 レジスタ, 134 EXOR回路, 135 LUT, 141 小FIFOメモリ, 142 セレクタ, 143 小FIFOメモリ, 144 セレクタ, 151 演算器, 152 レジスタ, 153 セレクタ, 154 レジスタ, 156,157 演算器, 161 小FIFOメモリ, 162 セレクタ, 171 メッセージ計算部, 172 バリアブルノード計算器, 173 チェックノード計算器, 174 制御部, 181 メッセージ計算部181, 182 バリアブルノード計算器, 183 チェックノード計算器, 184 制御部, 191 メッセージ計算部, 192 制御部, 201 メッセージ計算部, 202 制御部, 211 メッセージ計算部, 212 制御部, 221 メッセージ計算部, 222 制御部, 231 メッセージ計算部, 232 制御部, 300 LUT, 301 セレクタ, 302 演算器, 303 レジスタ, 304 セレクタ, 305 レジスタ, 306 EXOR回路, 307 レジスタ, 308 セレクタ, 309 レジスタ, 310 LUT, 311 セレクタ, 312,313 演算器, 314 LUT, 315 EXOR回路, 316 セレクタ, 317 小FIFOメモリ, 318 セレクタ, 320 FIFOメモリ, 600 LUT, 601 セレクタ, 602 演算器, 603 レジスタ, 604 セレクタ, 605 レジスタ, 606 EXOR回路, 607 レジスタ, 608 セレクタ, 609 レジスタ, 610 LUT, 611 セレクタ, 612,613 演算器, 614 EXOR回路, 615 セレクタ, 616 小FIFOメモリ, 617,700 セレクタ, 701 演算器, 702 レジスタ, 703 セレクタ, 704 レジスタ, 705 セレクタ, 706 EXOR回路, 707 レジスタ, 708 セレクタ, 709 レジスタ, 710,711 演算器, 712 セレクタ, 713 LUT, 714 EXOR回路, 715 セレクタ, 716 小FIFOメモリ, 717 セレクタ, 901 バス, 902 CPU, 903 ROM, 904 RAM, 905 不揮発性メモリ, 906 入出力インタフェース
104 message memory, 105 received data memory, 121 LUT, 122
Arithmetic unit, 123 register, 124 selector, 125 register, 126 arithmetic unit, 128 LUT, 129 EXOR circuit, 130 register, 131 selector, 132 register, 134 EXOR circuit, 135 LUT, 141 small FIFO memory, 142 selector, 143 small FIFO Memory, 144 selector, 151 calculator, 152 register, 153 selector, 154 register, 156, 157 calculator, 161 small FIFO memory, 162 selector, 171 message calculator, 172 variable node calculator, 173 check node calculator, 174 Control unit, 181 message calculation unit 181, 182 variable node calculator, 183 check node calculator, 184 control unit, 191 message calculation unit, 192 control unit, 201 message calculation unit, 202 Control unit, 211 message calculation unit, 212 control unit, 221 message calculation unit, 222 control unit, 231 message calculation unit, 232 control unit, 300 LUT, 301 selector, 302 computing unit, 303 register, 304 selector, 305 register, 306 EXOR circuit, 307 register, 308 selector, 309 register, 310 LUT, 311 selector, 312, 313 calculator, 314 LUT, 315 EXOR circuit, 316 selector, 317 small FIFO memory, 318 selector, 320 FIFO memory, 600 LUT, 601 Selector, 602 calculator, 603 register, 604 selector, 605 register, 606 EXOR circuit, 607 register, 608 selector, 609 register, 610 LUT, 611 selector, 612, 613 calculator, 61 4 EXOR circuit, 615 selector, 616 small FIFO memory, 617, 700 selector, 701 calculator, 702 register, 703 selector, 704 register, 705 selector, 706 EXOR circuit, 707 register, 708 selector, 709 register, 710, 711 operation 712 selector, 713 LUT, 714 EXOR circuit, 715 selector, 716 small FIFO memory, 717 selector, 901 bus, 902 CPU, 903 ROM, 904 RAM, 905 non-volatile memory, 906 I / O interface

Claims (8)

LDPC(Low Density Parity Check)符号を復号する復号装置において、
前記LDPC符号の復号のためのバリアブルノードの演算、又はチェックノードの演算に用いるメッセージを記憶する記憶手段と、
前記記憶手段に記憶されたメッセージを用いて、前記LDPC符号を定義する検査行列に基づき、前記バリアブルノードの演算、又は前記チェックノードの演算を行い、演算の結果得られるメッセージを出力するメッセージ計算手段と
を備え、
前記メッセージ計算手段は、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージを一時記憶することにより遅延する遅延メモリを有し、
前記遅延メモリは、前記検査行列の重みの最大値よりも少ない数のメッセージを記憶し、
前記メッセージ計算手段が出力するメッセージを前記記憶手段に書き込む書き込み制御と、前記メッセージ計算手段での演算に用いられる同一のメッセージを、前記記憶手段から2回読み出し、前記メッセージ計算手段に供給する読み出し制御とを行う制御手段と、
前記遅延メモリで遅延されたメッセージと、前記記憶手段から2回目に読み出されたメッセージとのうちの一方を、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージとして選択する選択手段と
をさらに備え、
前記選択手段は、
前記バリアブルノードの演算において、前記バリアブルノードに対応する前記検査行列の列の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記列の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択し、
前記チェックノードの演算において、前記チェックノードに対応する前記検査行列の行の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記行の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択する
復号装置。
In a decoding device that decodes LDPC (Low Density Parity Check) code,
Storage means for storing a message used for variable node calculation or check node calculation for decoding the LDPC code;
Message calculation means for performing an operation of the variable node or an operation of the check node based on a parity check matrix defining the LDPC code using a message stored in the storage means and outputting a message obtained as a result of the operation And
The message calculation means has a delay memory that delays by temporarily storing a message used for the variable node calculation or the check node calculation,
The delay memory stores a number of messages less than a maximum weight of the parity check matrix ;
Write control for writing a message output by the message calculation means to the storage means, and read control for reading the same message used for calculation in the message calculation means twice from the storage means and supplying the same to the message calculation means Control means for performing
Selecting means for selecting one of the message delayed in the delay memory and the message read out for the second time from the storage means as a message used in the variable node calculation or the check node calculation;
Further comprising
The selection means includes
In the calculation of the variable node, when the column weight of the check matrix corresponding to the variable node is equal to or less than the number of messages that can be stored in the delay memory, the message delayed in the delay memory is selected, When the weight of the column is not less than or equal to the number of messages that the delay memory can store, select the message read from the storage means a second time;
In the operation of the check node, when the weight of the row of the check matrix corresponding to the check node is equal to or less than the number of messages that can be stored in the delay memory, a message delayed in the delay memory is selected, A decoding device that selects a message read out second from the storage means when the weight of the row is not less than the number of messages that can be stored in the delay memory .
前記メッセージ計算手段は、
前記バリアブルノードの演算を行う回路と、前記チェックノードの演算を行う回路との一部が共有化されており、
前記バリアブルノードの演算と、前記チェックノードの演算とを、選択的に行う
請求項に記載の復号装置。
The message calculation means includes:
A part of the circuit that performs the operation of the variable node and the circuit that performs the operation of the check node are shared,
Wherein the variable node calculation, and a calculation of the check node decoding apparatus according to claim 1 selectively perform.
前記メッセージ計算手段は、
チェックノードに入力される入力データxに対して、非線形関数φ(x)=-ln(tanh(x/2))の演算結果を出力する1のLUT(Look Up Table)と、
チェックノードから出力された出力データxに対して、前記非線形関数の逆関数φ-1(x)=2tanh-1(e-x)の演算結果を出力する他の1のLUTと
を有し、
チェックノードの演算時には、データを、前記1のLUTと他の1のLUTを経由させ、
バリアブルノードの演算時には、データを、前記1のLUTと他の1のLUTをバイパスさせる
請求項に記載の復号装置。
The message calculation means includes:
1 LUT (Look Up Table) that outputs the calculation result of the nonlinear function φ (x) =-ln (tanh (x / 2)) for the input data x input to the check node;
With respect to the output data x output from the check node, another LUT that outputs the operation result of the inverse function φ −1 (x) = 2 tanh −1 (e −x ) of the nonlinear function, and
When calculating the check node, the data is passed through the one LUT and the other LUT,
The decoding device according to claim 2 , wherein during the variable node calculation, the data is bypassed between the one LUT and the other LUT.
前記メッセージ計算手段は、チェックノードに入力される入力データxに対して、逆関数φ-1(x)=2tanh-1(e-x)と同一の演算結果が得られる非線形関数φ(x)=-ln(tanh(x/2))の演算結果を出力するとともに、バリアブルノードに入力される入力データxに対して、前記逆関数φ-1(x)の演算結果を出力するLUT(Look Up Table)を有する
請求項に記載の復号装置。
The message calculation means is a non-linear function φ (x) for obtaining the same operation result as the inverse function φ −1 (x) = 2 tanh −1 (e −x ) for the input data x input to the check node. = -ln (tanh (x / 2)) Outputs the operation result and outputs the inverse function φ -1 (x) operation result for the input data x input to the variable node. The decoding device according to claim 2 , further comprising: Up Table).
前記メッセージ計算手段は、バリアブルノードから出力された出力データxに対して、逆関数φ-1(x)=2tanh-1(e-x)と同一の演算結果が得られる非線形関数φ(x)=-ln(tanh(x/2))の演算結果を出力するとともに、チェックノードから出力された出力データxに対して、前記逆関数φ-1(x)の演算結果を出力するLUT(Look Up Table)を有する
請求項に記載の復号装置。
The message calculation means is a non-linear function φ (x) for obtaining the same operation result as the inverse function φ −1 (x) = 2 tanh −1 (e −x ) for the output data x output from the variable node. = -ln (tanh (x / 2)) Outputs the operation result and outputs the operation result of the inverse function φ -1 (x) to the output data x output from the check node. The decoding device according to claim 2 , further comprising: Up Table).
前記記憶手段は、2以上のバンクを有する
請求項に記載の復号装置。
The decoding device according to claim 2 , wherein the storage unit includes two or more banks.
LDPC(Low Density Parity Check)符号を復号する復号装置を制御する制御方法において、
前記復号装置は、
前記LDPC符号の復号のためのバリアブルノードの演算、又はチェックノードの演算に用いるメッセージを記憶する記憶手段と、
前記記憶手段に記憶されたメッセージを用いて、前記LDPC符号を定義する検査行列に基づき、前記バリアブルノードの演算、又は前記チェックノードの演算を行い、演算の結果得られるメッセージを出力するメッセージ計算手段と
を備え、
前記メッセージ計算手段は、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージを一時記憶することにより遅延する遅延メモリを有し、
前記遅延メモリは、前記検査行列の重みの最大値よりも少ない数のメッセージを記憶する場合において、
前記メッセージ計算手段が出力するメッセージを前記記憶手段に書き込む書き込み制御と、前記メッセージ計算手段での演算に用いられる同一のメッセージを、前記記憶手段から2回読み出し、前記メッセージ計算手段に供給する読み出し制御とを行い、
前記バリアブルノードの演算において、前記バリアブルノードに対応する前記検査行列の列の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記列の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択し、
前記チェックノードの演算において、前記チェックノードに対応する前記検査行列の行の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記行の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択する
ように、前記遅延メモリで遅延されたメッセージと、前記記憶手段から2回目に読み出されたメッセージとのうちの一方を、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージとして選択する選択手段を制御する
ステップを含む制御方法。
In a control method for controlling a decoding device that decodes an LDPC (Low Density Parity Check) code,
The decoding device
Storage means for storing a message used for variable node calculation or check node calculation for decoding the LDPC code;
Message calculation means for performing an operation of the variable node or an operation of the check node based on a parity check matrix defining the LDPC code using a message stored in the storage means and outputting a message obtained as a result of the operation And
The message calculation means has a delay memory that delays by temporarily storing a message used for the variable node calculation or the check node calculation,
In the case where the delay memory stores a smaller number of messages than the maximum weight of the parity check matrix,
Write control for writing a message output by the message calculation means to the storage means, and read control for reading the same message used for calculation in the message calculation means twice from the storage means and supplying the same to the message calculation means And
In the calculation of the variable node, when the column weight of the check matrix corresponding to the variable node is equal to or less than the number of messages that can be stored in the delay memory, the message delayed in the delay memory is selected, When the weight of the column is not less than or equal to the number of messages that the delay memory can store, select the message read from the storage means a second time;
In the operation of the check node, when the weight of the row of the check matrix corresponding to the check node is equal to or less than the number of messages that can be stored in the delay memory, a message delayed in the delay memory is selected, A message delayed in the delay memory so as to select a message read out a second time from the storage means when the weight of the row is not less than or equal to the number of messages that the delay memory can store; A control method including a step of controlling selection means for selecting one of the messages read out from the storage means for the second time as a message used for the variable node calculation or the check node calculation.
LDPC(Low Density Parity Check)符号を復号する復号装置を制御するコンピュータに実行させるプログラムにおいて、
前記復号装置は、
前記LDPC符号の復号のためのバリアブルノードの演算、又はチェックノードの演算に用いるメッセージを記憶する記憶手段と、
前記記憶手段に記憶されたメッセージを用いて、前記LDPC符号を定義する検査行列に基づき、前記バリアブルノードの演算、又は前記チェックノードの演算を行い、演算の結果得られるメッセージを出力するメッセージ計算手段と
を備え、
前記メッセージ計算手段は、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージを一時記憶することにより遅延する遅延メモリを有し、
前記遅延メモリは、前記検査行列の重みの最大値よりも少ない数のメッセージを記憶する場合において、
前記メッセージ計算手段が出力するメッセージを前記記憶手段に書き込む書き込み制御と、前記メッセージ計算手段での演算に用いられる同一のメッセージを、前記記憶手段から2回読み出し、前記メッセージ計算手段に供給する読み出し制御とを行い、
前記バリアブルノードの演算において、前記バリアブルノードに対応する前記検査行列の列の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記列の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択し、
前記チェックノードの演算において、前記チェックノードに対応する前記検査行列の行の重みが、前記遅延メモリが記憶可能なメッセージの数以下であるときに、前記遅延メモリで遅延されたメッセージを選択し、前記行の重みが、前記遅延メモリが記憶可能なメッセージの数以下でないときに、前記記憶手段から2回目に読み出されたメッセージを選択する
ように、前記遅延メモリで遅延されたメッセージと、前記記憶手段から2回目に読み出されたメッセージとのうちの一方を、前記バリアブルノードの演算、又は前記チェックノードの演算に用いるメッセージとして選択する選択手段を制御する
ステップを含む制御処理を、コンピュータに実行させるプログラム。
In a program executed by a computer that controls a decoding device that decodes LDPC (Low Density Parity Check) code,
The decoding device
Storage means for storing a message used for variable node calculation or check node calculation for decoding the LDPC code;
Message calculation means for performing an operation of the variable node or an operation of the check node based on a parity check matrix defining the LDPC code using a message stored in the storage means and outputting a message obtained as a result of the operation And
The message calculation means has a delay memory that delays by temporarily storing a message used for the variable node calculation or the check node calculation,
In the case where the delay memory stores a smaller number of messages than the maximum weight of the parity check matrix,
Write control for writing a message output by the message calculation means to the storage means, and read control for reading the same message used for calculation in the message calculation means twice from the storage means and supplying the same to the message calculation means And
In the calculation of the variable node, when the column weight of the check matrix corresponding to the variable node is equal to or less than the number of messages that can be stored in the delay memory, the message delayed in the delay memory is selected, When the weight of the column is not less than or equal to the number of messages that the delay memory can store, select the message read from the storage means a second time;
In the operation of the check node, when the weight of the row of the check matrix corresponding to the check node is equal to or less than the number of messages that can be stored in the delay memory, a message delayed in the delay memory is selected, A message delayed in the delay memory so as to select a message read out a second time from the storage means when the weight of the row is not less than or equal to the number of messages that the delay memory can store; Control processing including a step of controlling selection means for selecting one of the messages read out from the storage means for the second time as a message used for the variable node calculation or the check node calculation is performed on the computer. The program to be executed.
JP2007119093A 2007-04-27 2007-04-27 Decoding device, control method, and program Expired - Fee Related JP4780027B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007119093A JP4780027B2 (en) 2007-04-27 2007-04-27 Decoding device, control method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007119093A JP4780027B2 (en) 2007-04-27 2007-04-27 Decoding device, control method, and program

Publications (2)

Publication Number Publication Date
JP2008278187A JP2008278187A (en) 2008-11-13
JP4780027B2 true JP4780027B2 (en) 2011-09-28

Family

ID=40055620

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007119093A Expired - Fee Related JP4780027B2 (en) 2007-04-27 2007-04-27 Decoding device, control method, and program

Country Status (1)

Country Link
JP (1) JP4780027B2 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4225163B2 (en) * 2003-05-13 2009-02-18 ソニー株式会社 Decoding device, decoding method, and program
JP4282558B2 (en) * 2004-06-30 2009-06-24 株式会社東芝 Low density parity check code decoder and method
JP4807063B2 (en) * 2005-12-20 2011-11-02 ソニー株式会社 Decoding device, control method, and program

Also Published As

Publication number Publication date
JP2008278187A (en) 2008-11-13

Similar Documents

Publication Publication Date Title
JP4807063B2 (en) Decoding device, control method, and program
JP4595650B2 (en) Decoding device and decoding method
JP4224777B2 (en) Decoding method, decoding apparatus, and program
JP4225163B2 (en) Decoding device, decoding method, and program
JP4622654B2 (en) Decoding device and decoding method
JP4487213B2 (en) Decoding apparatus and method, and program
JP4487212B2 (en) Decoding device and method, transmission / reception system, receiving device and method, and program
JP4702632B2 (en) ENCODING METHOD, ENCODING DEVICE, AND PROGRAM
Shimizu et al. Partially-parallel LDPC decoder based on high-efficiency message-passing algorithm
JP2007036776A (en) Decoding apparatus and decoding method
Cochachin et al. Density evolution thresholds for noise-against-noise min-sum decoders
JP4285148B2 (en) Decoding device, decoding method, and program
JP4780027B2 (en) Decoding device, control method, and program
JP2008301152A (en) Decoder and decoding method, and program
JP4729964B2 (en) Decoding device and decoding method
JP4284600B2 (en) Decoding device
JP4288582B2 (en) Decoding device, decoding method, and program
JP4822071B2 (en) Decoding device and decoding method
JP2010028408A (en) Information processing apparatus, information processing method, and program
JP4821724B2 (en) Decoding device and decoding method
JP2007081602A (en) Decoder and decoding method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110520

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

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

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

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees