JP4730592B2 - Decoding device and decoding method - Google Patents

Decoding device and decoding method Download PDF

Info

Publication number
JP4730592B2
JP4730592B2 JP2005201609A JP2005201609A JP4730592B2 JP 4730592 B2 JP4730592 B2 JP 4730592B2 JP 2005201609 A JP2005201609 A JP 2005201609A JP 2005201609 A JP2005201609 A JP 2005201609A JP 4730592 B2 JP4730592 B2 JP 4730592B2
Authority
JP
Japan
Prior art keywords
decoding
calculation
decoding intermediate
supplied
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005201609A
Other languages
Japanese (ja)
Other versions
JP2007020068A (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 JP2005201609A priority Critical patent/JP4730592B2/en
Publication of JP2007020068A publication Critical patent/JP2007020068A/en
Application granted granted Critical
Publication of JP4730592B2 publication Critical patent/JP4730592B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

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

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

符号性能の理論的限界としては、いわゆるシャノン(C. E. Shannon)の通信路符号化定理によって与えられるシャノン限界が知られている。符号理論に関する研究は、このシャノン限界に近い性能を示す符号を開発することを目的として行われている。近年では、シャノン限界に近い性能を示す符号化方法として、例えば、並列連接畳み込み符号(PCCC(Parallel Concatenated Convolutional Codes))や、縦列連接畳み込み符号(SCCC(Serially Concatenated Convolutional Codes))といった、いわゆるターボ符号化(Turbo coding)と呼ばれる手法が開発されている。また、これらのターボ符号が開発される一方で、古くから知られる符号化方法である低密度パリティ検査符号(Low Density Parity Check codes)(以下、LDPC符号という)が脚光を浴びつつある。   As the theoretical limit of code performance, the Shannon limit given by the so-called Shannon (C. E. Shannon) channel coding theorem is known. Research on code theory is being conducted with the goal of developing codes that exhibit performance close to the Shannon limit. In recent years, 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,“ Low Density Parity Check Codes ”, Cambridge, Massachusetts: MIT Press, 1963 by RG Gallager, and then“ DJC MacKay, “Good error correcting codes based on very sparse matrices ”, Submitted to IEEE Trans. Inf. Theory, IT-45, pp. 399-431, 1999” and “MG Luby, M. Mitzenmacher, MA Shokrollahi and DA Spielman,” Analysis of low density codes and improved designs using irregular graphs ”, in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998”.

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

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

LDPC符号は、そのLDPC符号を定義する検査行列(parity check matrix)が疎なものであることを最大の特徴とするものである。ここで、疎な行列とは、行列のコンポーネントの”1”の個数が非常に少なく構成されるものであり、疎な検査行列をHで表すものとすると、そのような検査行列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行列(k行n列の行列)である場合には、検査行列Hは、n-k行n列の行列である。 Such encoding into an LDPC code is realized by generating a generator matrix G based on the parity check matrix H and generating a codeword by multiplying the binary information message by the generator matrix G. The 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 generation matrix G is a k × n matrix (a matrix of k rows and n columns), the check matrix H is a matrix of nk rows and n columns.

なお、例えば、nビットの符号語cが、kビットの情報メッセージuに続けて、n-kビットのパリティビットを配置したビット列に一致する組織符号である場合に、n-k行n列の検査行列Hにおいて、nビットの符号語cのうちのkビットの情報メッセージuに対応するn-k行k列の部分を情報部というとともに、n-kビットのパリティビットに対応するn-k行n-k列の部分をパリティ部ということとすると、パリティ部が、下三角行列または上三角行列になっていれば、情報メッセージuのLDPC符号への符号化は、検査行列Hを用いて行うことができる。   For example, when an n-bit codeword c is a systematic code that matches a bit string in which nk-bit parity bits are arranged following the k-bit information message u, in a check matrix H of nk rows and n columns The portion of nk rows and k columns corresponding to the k-bit information message u in the n-bit code word c is referred to as the information portion, and the portion of the nk rows and nk columns corresponding to the nk bit parity bits is referred to as the parity portion. Then, if the parity part is a lower triangular matrix or an upper triangular matrix, encoding of the information message u into an LDPC code can be performed using the check matrix H.

即ち、例えば、検査行列Hが、図2に示すように、情報部と、下三角行列のパリティ部とで構成され、パリティ部の下三角の部分の要素が、すべて1であるとすると、符号語cのパリティビットの1番目のビットは、情報メッセージuのうちの、検査行列Hの情報部の第1行において1になっている要素に対応するビットのEXOR(排他的論理和)を演算した値となる。   That is, for example, as shown in FIG. 2, if the parity check matrix H is composed of an information part and a parity part of a lower triangular matrix, and the elements of the lower triangular part of the parity part are all 1, The first bit of the parity bit of the word c calculates the EXOR (exclusive OR) of the bit corresponding to the element which is 1 in the first row of the information part of the check matrix H of the information message u It becomes the value.

また、符号語cのパリティビットの2番目のビットは、情報メッセージuのうちの、検査行列Hの情報部の第2行において1になっている要素に対応するビットと、パリティビットの1番目のビットのEXORを演算した値となる。   The second bit of the parity bit of the codeword c is the bit corresponding to the element that is 1 in the second row of the information part of the check matrix H of the information message u and the first of the parity bits. This is the value obtained by calculating the EXOR of the bits.

さらに、符号語cのパリティビットの3番目のビットは、情報メッセージuのうちの、検査行列Hの情報部の第3行において1になっている要素に対応するビットと、パリティビットの1番目および2番目のビットのEXORを演算した値となる。   Further, the third bit of the parity bit of the codeword c is the bit corresponding to the element that is 1 in the third row of the information part of the check matrix H of the information message u and the first of the parity bits. And the value obtained by calculating EXOR of the second bit.

以下、同様にして、符号語cのパリティビットのi番目のビットは、情報メッセージuのうちの、検査行列Hの情報部の第i行において1になっている要素に対応するビットと、パリティビットの1乃至i-1番目のビットのEXORを演算した値となる。   In the same manner, the i-th bit of the parity bit of the codeword c is the same as the bit corresponding to the element corresponding to the element that is 1 in the i-th row of the information part of the check matrix H of the information message u, and the parity. This is a value obtained by calculating the EXOR of the 1st to i-1th bits.

以上のようにして、n-kビットのパリティビットを求め、kビットの情報メッセージuに続けて配置することにより、nビットの符号語cを得ることができる。   As described above, n-k parity bits are obtained and arranged after the k-bit information message u, whereby an n-bit code word c can be obtained.

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

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

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

まず、LDPC符号の復号においては、図3に示すように、ステップ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. 3, in step S11, a received value U 0 (received data u 0i ) is received, a message u j is initialized to “0”, and an iterative process is performed. The variable k, which takes an integer as a counter, is initialized to “0”, and the process proceeds to step S12. In step S12, based on the received value U 0 (received data u 0i ), the message v i is obtained by performing the calculation shown in the equation (1). Further, based on this message v i , the equation (2) The message u j is obtained by performing the calculation shown in FIG.

Figure 0004730592
・・・(1)
Figure 0004730592
... (1)

Figure 0004730592
・・・(2)
Figure 0004730592
... (2)

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

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

Figure 0004730592
・・・(3)
Figure 0004730592
... (3)

Figure 0004730592
・・・(4)
Figure 0004730592
... (4)

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

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

Figure 0004730592
・・・(5)
Figure 0004730592
... (5)

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

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

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

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

バリアブルノードでは、図7のように、式(1)の演算を行う。すなわち、図7において、計算しようとしている枝に対応するメッセージviは、バリアブルノードに繋がっている残りの枝からのメッセージu1およびu2と、受信データu0iを用いて計算される。他の枝に対応するメッセージも同様に計算される。 In the variable node, the calculation of Expression (1) is performed as shown in FIG. That is, in FIG. 7, the message v i corresponding to the branch to be calculated is calculated using the messages u 1 and u 2 from the remaining branches connected to the variable node and the received 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であり、x<0のとき-1である。   Before explaining the operation of the check node, the expression (2) is changed to the expression a × b = exp {ln (| a |) + ln (| b |)} × sign (a) × sign (b). And rewrite as equation (6). However, sign (x) is 1 when x ≧ 0, and −1 when x <0.

Figure 0004730592
・・・(6)
Figure 0004730592
... (6)

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

Figure 0004730592
・・・(7)
Figure 0004730592
... (7)

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

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

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

復号装置の実装の例として、各ノードの演算を複数個ずつ順次行うことによって復号を行う場合(partly parallel decoding)の実装法について説明する。   As an example of implementation of a decoding apparatus, an implementation method in the case of performing decoding by sequentially performing a plurality of operations at each node (partly parallel decoding) will be described.

なお、ここでは、例えば、図9の、36(行)×108(列)の検査行列Hで表現される符号(符号化率2/3、符号長108)を復号することとする。図9の検査行列Hの1の数は323であり、従って、そのタナーグラフでは、枝の数は323個となる。ここで、図9の検査行列Hでは、0を、”.”で表している。また、図9の検査行列Hは、6×6行列の単位に間隔を空けて表している。   Here, for example, a code (coding rate 2/3, code length 108) represented by a check matrix H of 36 (rows) × 108 (columns) in FIG. 9 is decoded. The number of 1s in the parity check matrix H in FIG. 9 is 323. Therefore, in the Tanner graph, the number of branches is 323. Here, in the parity check matrix H in FIG. 9, 0 is represented by “.”. Also, the parity check matrix H in FIG. 9 is expressed with an interval in units of 6 × 6 matrices.

図9においては、検査行列Hは、6×6の単位行列、その単位行列の1のうち1個以上が0になった行列(以下、適宜、準単位行列という)、単位行列または準単位行列をサイクリックシフト(cyclic shift)した行列(以下、適宜、シフト行列という)、単位行列、準単位行列、またはシフト行列のうちの2以上(複数)の和(以下、適宜、和行列という)、6×6の0行列の組み合わせで表されている。   In FIG. 9, a check matrix H is a 6 × 6 unit matrix, a matrix in which one or more of the unit matrices are 0 (hereinafter referred to as a quasi-unit matrix as appropriate), a unit matrix or a quasi-unit matrix. A cyclic shift matrix (hereinafter referred to as a shift matrix as appropriate), a unit matrix, a quasi-unit matrix, or a sum of two or more of a shift matrix (hereinafter referred to as a sum matrix as appropriate), It is represented by a combination of 6 × 6 zero matrices.

なお、図9の検査行列Hを構成する6×6の単位行列、準単位行列、シフト行列、和行列、0行列を、以下、適宜、構成行列という。   Note that the 6 × 6 unit matrix, quasi-unit matrix, shift matrix, sum matrix, and zero matrix constituting the parity check matrix H in FIG.

図10乃至図14を参照して、図9の検査行列Hで表現されるLDPC符号を復号する復号装置について説明する。   A decoding apparatus that decodes the LDPC code represented by parity check matrix H in FIG. 9 will be described with reference to FIGS. 10 to 14.

図10は、図9の検査行列Hで表現されるLDPC符号を復号する復号装置400の構成の一例を示すブロック図である。   FIG. 10 is a block diagram illustrating an exemplary configuration of decoding apparatus 400 that decodes the LDPC code represented by parity check matrix H in FIG.

復号装置400は、復号途中結果格納用メモリ410、サイクリックシフト回路411、6つの計算器4121乃至計算器4126からなる計算部412、復号途中結果格納用メモリ413、サイクリックシフト回路414、6つの計算器4151乃至計算器4156からなる計算部415、受信用メモリ416、および制御部417から構成される。 The decoding device 400 includes a decoding intermediate result storage memory 410, a cyclic shift circuit 411, a calculation unit 412 including six calculators 412 1 to 412 6 , a decoding intermediate result storage memory 413, a cyclic shift circuit 414, The calculation unit 415 includes six calculators 415 1 to 415 6 , a reception memory 416, and a control unit 417.

ここで、計算器412k(k=1,2,・・・,6)で行われる演算と、計算器415kで行われる演算について、式を用いて説明する。 Here, the calculation performed by the calculator 412 k (k = 1, 2,..., 6) and the calculation performed by the calculator 415 k will be described using equations.

計算部412は、上述した式(7)と、以下に表す式(8)とにしたがう第1の演算を行い、その第1の演算の結果である復号途中結果ujを復号途中結果格納用メモリ413に供給して格納させる。計算部415は、上述した式(5)にしたがう第2の演算を行い、その第2の演算の結果である復号途中結果vを復号途中結果格納用メモリ410に供給して格納させる。 The calculation unit 412 performs the first calculation according to the above-described equation (7) and the following equation (8), and stores the decoding intermediate result u j that is the result of the first calculation for the decoding intermediate result. The data is supplied to the memory 413 and stored. The calculation unit 415 performs the second calculation according to the above-described equation (5), and supplies the decoding intermediate result v, which is the result of the second calculation, to the decoding intermediate result storage memory 410 for storage.

Figure 0004730592
・・・(8)
Figure 0004730592
... (8)

なお、式(8)のudvは、検査行列Hのi列のメッセージを求めようとする枝からのチェックノード演算の途中結果(ここでは、チェックノードのメッセージそのもの)を表している。即ち、udvは、求めたい枝に対応する復号途中結果である。 Note that u dv in Expression (8) represents an intermediate result of a check node calculation from a branch for which a message of i columns of the check matrix H is to be obtained (in this case, the check node message itself). That is, u dv is a decoding intermediate result corresponding to the branch to be obtained.

上述した式(5)にしたがう第2の演算の結果得られる復号途中結果vは、受信データu0iと検査行列Hのi列の各行の1に対応するすべての枝からのチェックノード演算の復号途中結果ujとを加算したものであるので、上述した式(7)に用いられる値viは、式(5)にしたがう第2の演算の結果得られる復号途中結果vから、検査行列Hのi列の、各行の1に対応する枝からのチェックノード演算の復号途中結果ujのうち、メッセージを求めようとする枝からのチェックノード演算の復号途中結果udvを引いた値となる。つまり、式(7)の演算に用いられる値viを求める式(1)の演算は、上述した式(5)と式(8)を組み合わせた演算である。 The decoding intermediate result v obtained as a result of the second operation according to the above equation (5) is the decoding of the check node operation from all branches corresponding to 1 in each row of the i columns of the received data u 0i and the check matrix H. Since the intermediate result u j is added, the value v i used in the above equation (7) is obtained from the decoding intermediate result v obtained as a result of the second operation according to the equation (5) from the check matrix H. In the decoding intermediate result u j of the check node operation from the branch corresponding to 1 of each row in the i column, the value obtained by subtracting the decoding intermediate result u dv of the check node operation from the branch for which a message is to be obtained is obtained. . That is, the calculation of the expression (1) for obtaining the value v i used for the calculation of the expression (7) is a combination of the above expressions (5) and (8).

従って、復号装置400では、計算部412による式(7)および式(8)にしたがう第1の演算と、計算部415による式(5)にしたがう第2の演算とが交互に行われ、計算部415が、最後の第2の演算の結果を復号結果として出力することにより、LDPC符号の繰り返し復号を行うことができる。   Accordingly, in the decoding device 400, the first calculation according to the equations (7) and (8) by the calculation unit 412 and the second calculation according to the equation (5) by the calculation unit 415 are alternately performed, and the calculation is performed. The unit 415 outputs the result of the last second operation as a decoding result, so that it is possible to perform LDPC code iterative decoding.

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

また、第2の演算により求められる式(5)のvは、式(1)のバリアブルノード演算結果viに対して、メッセージを求めようとする枝からのチェックノードのメッセージujを加算したものであるから、検査行列Hの1列(1つのバリアブルノード)に対して、1つだけ求められる。 In addition, v in Expression (5) obtained by the second operation is obtained by adding the message u j of the check node from the branch for which a message is to be obtained to the variable node calculation result v i in Expression (1). Therefore, only one is obtained for one column (one variable node) of the check matrix H.

復号装置400では、計算部412が、計算部415による第2の演算の結果である検査行列Hの列に対応する復号途中結果vを用いて、第1の演算を行い、その演算の結果得られる検査行列Hのi列の、各行の1に対応する枝のメッセージ(各チェックノードが各枝に出力するメッセージ)の枝からのチェックノード演算の復号途中結果ujを復号途中結果格納用メモリ413に格納する。従って、復号途中結果格納用メモリ413の容量は、チェックノード演算の結果を格納する場合と同様に、検査行列Hの1の数(全枝数)と量子化ビット数とを乗算した値となる。 In decoding apparatus 400, calculation unit 412 performs the first calculation using decoding intermediate result v corresponding to the column of parity check matrix H that is the result of the second calculation by calculation unit 415, and obtains the result of the calculation. Decoding intermediate result u j of the check node operation from the branch of the message corresponding to 1 in each row (message output by each check node to each branch) of i columns of the parity check matrix H It stores in 413. Therefore, the capacity of the decoding intermediate result storage memory 413 is a value obtained by multiplying the number of 1 (the number of all branches) of the parity check matrix H and the number of quantization bits as in the case of storing the result of the check node calculation. .

一方、計算部415は、計算部412による第1の演算の結果である検査行列Hのi列の、各行の”1”に対応する復号途中結果ujと受信データu0iを用いて、第2の演算を行い、その演算の結果得られるi列に対応する復号途中結果vを復号途中結果格納用メモリ410に格納する。従って、復号途中結果格納用メモリ410に必要な容量は、検査行列Hの”1”の数より少ない検査行列Hの列数、即ち、LCPC符号の符号長と復号途中結果vの量子化ビット数とを乗算した値となる。 On the other hand, the calculation unit 415 uses the decoding intermediate result u j corresponding to “1” in each row of the i matrix of the parity check matrix H, which is the result of the first calculation by the calculation unit 412, and the received data u 0i . 2 is performed, and the decoding intermediate result v corresponding to the i column obtained as a result of the calculation is stored in the decoding intermediate result storage memory 410. Therefore, the required capacity of the decoding intermediate result storage memory 410 is the number of columns of the parity check matrix H smaller than the number of “1” of the parity check matrix H, that is, the code length of the LCPC code and the number of quantization bits of the decoding intermediate result v It becomes the value which multiplied.

その結果、バリアブルノード演算の結果を格納する場合に比べて、復号途中結果格納用メモリ410のメモリ容量を削減することができ、これにより、復号装置400の回路規模を小さくすることができる。   As a result, the memory capacity of the decoding intermediate result storage memory 410 can be reduced as compared with the case where the result of the variable node calculation is stored, whereby the circuit scale of the decoding device 400 can be reduced.

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

復号途中結果格納用メモリ410には、計算部415から、計算部415による第2の演算の結果である検査行列Hの6つの列に対応する6つの復号途中結果D415が供給され、復号途中結果格納用メモリ410は、計算部415から供給された6つの復号途中結果D415を、第1アドレスから順に格納(記憶)する。   The decoding intermediate result storage memory 410 is supplied with six decoding intermediate results D415 corresponding to the six columns of the check matrix H, which is the result of the second calculation by the calculation unit 415, from the calculation unit 415. The storage memory 410 stores (stores) the six decoding intermediate results D415 supplied from the calculation unit 415 in order from the first address.

即ち、復号途中結果格納用メモリ410の第1アドレスには、検査行列Hの列に対応する復号途中結果のうち、第1列目から第6列目の復号途中結果vが格納される。そして、同様に、第2アドレスには、第7列目から第12列目の復号途中結果vが格納され、第3アドレスには、第13列目から第18列目の復号途中結果が格納される。以後、同様に、第103列目から第108列目までの復号途中結果vが、6個ずつ、第4アドレスから第18アドレスまで格納され、計108個の復号途中結果vが復号途中結果格納用メモリ410に格納される。従って、復号途中結果格納用メモリ410のワード(word)数は、図9の検査行列Hの列数(LDPC符号の符号長)である108を、同時に読み書きする復号途中結果の数である6で割り算した18となる。   That is, the first address of the decoding intermediate result storage memory 410 stores the decoding intermediate results v from the first column to the sixth column among the decoding intermediate results corresponding to the columns of the check matrix H. Similarly, the second address stores the decoding intermediate result v of the seventh column to the twelfth column, and the third address stores the decoding intermediate result of the thirteenth column to the eighteenth column. Is done. Thereafter, in the same manner, decoding intermediate results v from the 103rd column to the 108th column are stored in increments of 6 from the 4th address to the 18th address, and a total of 108 decoding intermediate results v are stored during the decoding. Stored in the memory 410. Therefore, the number of words in the decoding intermediate result storage memory 410 is 6 which is the number of decoding intermediate results simultaneously reading and writing 108, which is the number of columns of the check matrix H (code length of the LDPC code) in FIG. Divide by 18.

また、復号途中結果格納用メモリ410は、既に格納してある復号途中結果D415から、後段の計算部412が求めようとする復号途中結果ujの対応する検査行列Hの行において”1”になっている復号途中結果vを6つ同時に読み出し、復号途中結果D410として、サイクリックシフト回路411に供給する。 Further, the decoding intermediate result storage memory 410 sets “1” in the row of the check matrix H corresponding to the decoding intermediate result u j to be obtained by the calculation unit 412 at the subsequent stage from the already stored intermediate decoding result D415. Six decoding intermediate results v are simultaneously read and supplied to the cyclic shift circuit 411 as decoding intermediate results D410.

なお、復号途中結果格納用メモリ410は、例えば、6つの復号途中結果vを同時に読み書き可能なシングルポートRAMで構成される。また、復号途中結果格納用メモリ410には、計算部415の第2の演算により演算された列に対応する復号途中結果D415が格納されるので、復号途中結果格納用メモリ410に格納されるデータ量、即ち、復号途中結果格納用メモリ410に必要とされる記憶容量は、復号途中結果D415の量子化ビット数と、検査行列Hの列数(LDPC符号の符号長)との乗算値である。   Note that the decoding intermediate result storage memory 410 is composed of, for example, a single-port RAM that can simultaneously read and write six decoding intermediate results v. Further, since the decoding intermediate result D415 corresponding to the column calculated by the second calculation of the calculation unit 415 is stored in the decoding intermediate result storage memory 410, the data stored in the decoding intermediate result storage memory 410 is stored in the decoding intermediate result storage memory 410. The storage capacity required for the amount, that is, the decoding result storage memory 410 is a product of the number of quantization bits of the decoding result D415 and the number of columns of the check matrix H (code length of the LDPC code). .

サイクリックシフト回路411には、復号途中結果格納用メモリ410から6つの復号途中結果D410が供給されるとともに、制御部417から、その復号途中結果D410に対応する検査行列Hの1が、検査行列Hにおいて元となる単位行列などを幾つサイクリックシフトであるかの情報(Matrixデータ)を表す制御信号D418が供給される。サイクリックシフト回路611は、制御信号D418を元に、6つの復号途中結果D410を並べ替えるサイクリックシフトを行い、その結果を復号途中結果D411(D4111乃至D4116)として、計算部412に供給する。 The cyclic shift circuit 411 is supplied with the six decoding intermediate results D410 from the decoding intermediate result storage memory 410, and the control unit 417 adds 1 of the check matrix H corresponding to the decoding intermediate result D410 to the check matrix. A control signal D418 representing information (Matrix data) indicating the number of cyclic shifts of the original unit matrix and the like in H is supplied. The cyclic shift circuit 611 performs cyclic shift to rearrange the six decoding intermediate results D410 based on the control signal D418, and supplies the result to the calculation unit 412 as decoding intermediate results D411 (D411 1 to D411 6 ). To do.

計算部412は、6つの計算器4121乃至4126からなる。計算部412には、サイクリックシフト回路411から、計算部415による第2の演算の結果得られた6つの復号途中結果D411(v)が供給されるとともに、復号途中結果格納用メモリ413から、前回、計算器4121乃至4126による第1の演算の結果得られた6つの復号途中結果D413(D4131乃至D4136)(uj)が供給され、その6つの復号途中結果D411と6つの復号途中結果D413が、計算器4121乃至4126にそれぞれ供給される。また、計算部412には、制御部417から制御信号D419が供給され、その制御信号D419が、計算器4121乃至4126に供給される。なお、制御信号D419は、6つの計算器4121乃至4126に共通の信号である。 The calculation unit 412 includes six calculators 412 1 to 412 6 . The calculation unit 412 is supplied with six decoding intermediate results D411 (v) obtained as a result of the second calculation by the calculation unit 415 from the cyclic shift circuit 411, and from the decoding intermediate result storage memory 413, Six decoding intermediate results D413 (D413 1 to D413 6 ) (u j ) obtained as a result of the first calculation by the calculators 412 1 to 412 6 are supplied last time, and the six decoding intermediate results D411 and six The decoding intermediate result D413 is supplied to the calculators 412 1 to 412 6 , respectively. Further, the calculation unit 412 is supplied with the control signal D419 from the control unit 417, and the control signal D419 is supplied to the calculators 412 1 to 412 6 . The control signal D419 is a signal common to the six calculators 412 1 to 412 6 .

計算器4121乃至4126は、それぞれ復号途中結果D411と復号途中結果D413を用いて、式(7)と式(8)にしたがって第1の演算を行い、復号途中結果D412(D4121乃至D4126)(uj)を求める。計算部412は、計算器4121乃至4126による演算の結果得られる検査行列Hの6つの1に対応する6つの復号途中結果D412を復号途中結果格納用メモリ413に供給する。 The calculators 412 1 to 412 6 perform the first calculation according to the equations (7) and (8) using the decoding intermediate result D411 and the decoding intermediate result D413, respectively, and perform decoding intermediate results D412 (D412 1 to D412). 6 ) Find (u j ). The calculation unit 412 supplies six decoding intermediate results D412 corresponding to six ones of the check matrix H obtained as a result of the calculation by the calculators 412 1 to 412 6 to the decoding intermediate result storage memory 413.

復号途中結果格納用メモリ413は、例えば、6つの復号途中結果D412を同時に読み書き可能な、2つのシングルポートRAMから構成される。復号途中結果格納用メモリ413には、計算部412から6つの復号途中結果D412が供給されるとともに、制御部417から復号途中結果413の読み書きを制御する制御信号D420(D4201乃至D4204)が供給される。 The decoding intermediate result storage memory 413 includes, for example, two single-port RAMs that can simultaneously read and write six decoding intermediate results D412. Six decoding intermediate results D412 are supplied from the calculation unit 412 to the decoding intermediate result storage memory 413, and a control signal D420 (D420 1 to D420 4 ) for controlling reading / writing of the decoding intermediate result 413 from the control unit 417. Supplied.

復号途中結果格納用メモリ413は、制御信号D420に基づいて、計算部412から供給される6つの復号途中結果D412をまとめて格納すると同時に、既に格納してある6つの復号途中結果D412を読み出し、復号途中結果D413として、計算部412とサイクリックシフト回路414に供給する。即ち、復号途中結果格納用メモリ413は、計算部412とサイクリックシフト回路414に供給する復号途中結果D413の読み出しと、計算部412から供給される復号途中結果D412の書き込みとを、同時に行う。   Based on the control signal D420, the decoding intermediate result storage memory 413 stores the six decoding intermediate results D412 supplied from the calculation unit 412 together, and simultaneously reads the six decoding intermediate results D412 already stored. The decoding result D413 is supplied to the calculation unit 412 and the cyclic shift circuit 414. That is, the decoding intermediate result storage memory 413 simultaneously reads the decoding intermediate result D413 supplied to the calculation unit 412 and the cyclic shift circuit 414 and writes the decoding intermediate result D412 supplied from the calculation unit 412.

なお、復号途中結果格納用メモリ413には、計算部412の第1の演算により演算された検査行列Hのi列の、各行の1に対応する枝からの第1の演算の復号途中結果D412が格納されるので、復号途中結果格納用メモリ413に格納されるデータ量、即ち、復号途中結果格納用メモリ413に必要とされる記憶容量は、復号途中結果D412の量子化ビット数と、検査行列Hの1の数との乗算値となる。   The decoding intermediate result storage memory 413 stores the decoding intermediate result D412 of the first calculation from the branch corresponding to 1 in each row of i columns of the check matrix H calculated by the first calculation of the calculation unit 412. Therefore, the amount of data stored in the decoding intermediate result storage memory 413, that is, the storage capacity required for the decoding intermediate result storage memory 413, is determined by the number of quantization bits of the decoding intermediate result D412 and the check. It is a multiplication value of the number of 1 in the matrix H.

サイクリックシフト回路414には、復号途中結果格納用メモリ413から6つの復号途中結果D413(復号途中結果uj)が供給されるとともに、制御部417から、その復号途中結果D413に対応する検査行列Hの1が検査行列Hにおいて元となる単位行列などを幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D421が供給される。サイクリックシフト回路414は、制御信号D421を元に、6つの復号途中結果D413を並べ替えるサイクリックシフトを行い、その結果を復号途中結果D414として、計算部415に供給する。 The cyclic shift circuit 414 is supplied with six decoding intermediate results D413 (decoding intermediate results u j ) from the decoding intermediate result storage memory 413, and from the control unit 417, a check matrix corresponding to the decoding intermediate result D413. A control signal D421 representing information (Matrix data) indicating how many 1s of H are cyclic shifts of the original unit matrix in the check matrix H is supplied. The cyclic shift circuit 414 performs a cyclic shift to rearrange the six decoding intermediate results D413 based on the control signal D421, and supplies the result to the calculation unit 415 as a decoding intermediate result D414.

計算部415は、6つの計算器4151乃至4156からなる。計算部415には、サイクリックシフト回路414から6つの復号途中結果D414(D4141乃至D4146)が供給され、その復号途中結果D414が、計算器4151乃至4156のそれぞれに供給される。また、計算部415には、受信用メモリ417に記憶されている6つの受信データD416が、受信データD417(LDPC符号)(D4171乃至D4176)として供給され、その受信データD417が、計算器4151乃至4156のそれぞれに供給される。さらに、計算部417には、制御部417から制御信号D422が供給され、その制御信号D422が計算器4151乃至4156に供給される。なお、制御信号D422は、6つの計算器4171乃至4176に共通の信号である。 The calculation unit 415 includes six calculators 415 1 to 415 6 . Six decoding intermediate results D414 (D414 1 to D414 6 ) are supplied from the cyclic shift circuit 414 to the calculation unit 415, and the decoding intermediate results D414 are supplied to the calculators 415 1 to 415 6 respectively. The calculation unit 415 is supplied with six reception data D416 stored in the reception memory 417 as reception data D417 (LDPC code) (D417 1 to D417 6 ), and the reception data D417 is calculated by the calculator. 415 1 to 415 6 are supplied. Further, a control signal D422 is supplied from the control unit 417 to the calculation unit 417, and the control signal D422 is supplied to the calculators 415 1 to 415 6 . The control signal D422 is a signal common to the six calculators 417 1 to 417 6 .

計算器4151乃至4156は、それぞれ復号途中結果D414と受信データD417とを用いて、式(5)にしたがって、それぞれ第2の演算を行い、復号途中結果D415(D4151乃至D4156)を求める。計算部415は、計算器4151乃至4156の第2の演算の結果得られる6つの復号途中結果D415(v)を、復号途中結果格納用メモリ410に供給する。また、計算部415は、いま行う演算が最後の第2の演算である場合、その演算の結果得られる6つの復号途中結果D415を、最終的な復号結果として出力する。 The calculators 415 1 to 415 6 use the decoding intermediate result D414 and the received data D417, respectively, to perform the second calculation according to the equation (5), respectively, and obtain the decoding intermediate result D415 (D415 1 to D415 6 ). Ask. The calculation unit 415 supplies six decoding intermediate results D415 (v) obtained as a result of the second calculation of the calculators 415 1 to 415 6 to the decoding intermediate result storage memory 410. Further, when the operation to be performed is the last second operation, the calculation unit 415 outputs six decoding intermediate results D415 obtained as a result of the operation as final decoding results.

受信用メモリ416は、通信路を通して受信した受信値(符号のビット)U0から計算した符号のビットの0らしさの値である受信LLR(対数尤度比)のデータ(受信データ)D416(u0i)を格納する。 Receiving memory 416, the data (received data) received values received through a communication path (sign bit) received LLR is zero likelihood value of a bit of code calculated from U 0 (log likelihood ratio) D416 (u 0i ) is stored.

即ち、受信用メモリ416の第1のアドレスには、検査行列Hの列に対応する受信データD416のうち、検査行列Hの第1列目から第6列目までに対応する受信データD416が格納される。そして、第2のアドレスには、検査行列Hの第7列目から第12列目までに対応する受信データD416が格納され、第3アドレスには、検査行列Hの第13列目から第18列目までに対応する受信データD416が格納される。以後、同様に、第4アドレスから第18アドレスまでに、検査行列Hの第19列目から第108列目までに対応する受信データD416が、6つずつ格納される。   That is, among the reception data D416 corresponding to the column of the check matrix H, the reception data D416 corresponding to the first to sixth columns of the check matrix H is stored in the first address of the reception memory 416. Is done. Then, received data D416 corresponding to the seventh column to the twelfth column of the parity check matrix H is stored at the second address, and the thirteenth column to the eighteenth column of the parity check matrix H are stored at the third address. The reception data D416 corresponding to the columns are stored. Thereafter, similarly, received data D416 corresponding to the 19th column to the 108th column of the check matrix H is stored 6 by 6 from the 4th address to the 18th address.

そして、受信用メモリ616は、既に格納している受信データD416を、バリアブルノード演算に必要となる順番に6つずつ読み出し、受信データD4171乃至D4176として計算部415に供給する。 The receiving memory 616, already by that reception data D416 to store, read by six in the order required for a variable node calculation, and supplies the calculation unit 415 as reception data D417 1 to D417 6.

なお、受信用メモリ416は、例えば、6つの受信データD416を同時に読み書き可能なシングルポートRAMから構成される。また、受信用メモリ416に格納されるデータ量、即ち、受信用メモリ315に必要とされる記憶容量は、LDPC符号の符号長と、受信データD416の量子化ビット数との乗算値である。さらに、受信用メモリ416のワード(word)数は、LDPC符号の符号長、即ち、検査行列Hの列数である108を、同時に読み出す受信データD417(D416)の数である6で割り算した値の18である。   Note that the reception memory 416 is composed of, for example, a single-port RAM that can simultaneously read and write six reception data D416. The amount of data stored in the reception memory 416, that is, the storage capacity required for the reception memory 315 is a product of the code length of the LDPC code and the number of quantization bits of the reception data D416. Further, the number of words in the reception memory 416 is a value obtained by dividing the code length of the LDPC code, that is, the number of columns of the check matrix H, by 6, which is the number of received data D417 (D416) to be read simultaneously. 18 of.

制御部417は、制御信号D418をサイクリックシフト回路411に、制御信号D419を計算部412に供給することにより、それぞれを制御する。また、制御部417は、制御信号D420を復号途中結果格納用メモリ413に、制御信号D421をサイクリックシフト回路414に、制御信号D422を計算部415にそれぞれ供給することにより、それぞれを制御する。   The control unit 417 controls the control signal D418 by supplying the control signal D418 to the cyclic shift circuit 411 and the control signal D419 to the calculation unit 412. In addition, the control unit 417 controls the control signal D420 by supplying the control signal D420 to the decoding intermediate result storage memory 413, the control signal D421 to the cyclic shift circuit 414, and the control signal D422 to the calculation unit 415, respectively.

復号途中結果格納用メモリ410、サイクリックシフト回路411、計算部412、復号途中結果格納用メモリ413、サイクリックシフト回路414、計算部415の順で、データが一巡することで、復号装置400は、1回の復号を行うことができる。復号装置400では、所定の回数だけ繰り返して復号が行われた後、計算部415による第2の演算の結果である復号途中結果D415が、最終的な復号結果として出力される。   The decoding apparatus 400 performs a round of data in the order of the decoding intermediate result storage memory 410, the cyclic shift circuit 411, the calculation unit 412, the decoding intermediate result storage memory 413, the cyclic shift circuit 414, and the calculation unit 415. One decoding can be performed. In the decoding device 400, after decoding is repeated a predetermined number of times, a decoding intermediate result D415, which is the result of the second calculation by the calculation unit 415, is output as the final decoding result.

図11は、図10の計算部412の詳細構成例を示すブロック図である。   FIG. 11 is a block diagram illustrating a detailed configuration example of the calculation unit 412 in FIG.

図11の計算部412には、サイクリックシフト回路411から、6つの復号途中結果D4111乃至D4116が供給されるとともに、復号途中結果格納用メモリ413から、前回、計算器4121乃至4126による第1の演算の結果得られた6つの復号途中結果D4131乃至D4136が供給され、その6つの復号途中結果D4111乃至D4116と6つの復号途中結果D4131乃至D4136が、計算器4121乃至4126にそれぞれ供給される。 The calculation unit 412 of FIG. 11 is supplied with six decoding intermediate results D411 1 to D411 6 from the cyclic shift circuit 411, and from the decoding intermediate result storage memory 413, the previous calculators 412 1 to 412 6. first decoding intermediate results D413 1 to D413 6 resulting six arithmetic is supplied by its six decoding intermediate results D411 1 to D411 6 six decoding intermediate results D413 1 to D413 6 is, calculator 412 1 to 412 6 are supplied.

また、計算部412には、制御部417から制御信号D419が供給され、その制御信号D419が、計算器4121乃至4126に供給される。計算器4121乃至4126は、それぞれ復号途中結果D411k(k=1,2,・・・,6)と復号途中結果D413kを用いて、式(7)と式(8)にしたがって第1の演算を行い、復号途中結果D413kを求める。計算部412は、計算器4121乃至4126による演算の結果得られる検査行列Hの6つの1に対応する6つの復号途中結果D4121乃至D4126を復号途中結果格納用メモリ413に供給する。 Further, the calculation unit 412 is supplied with the control signal D419 from the control unit 417, and the control signal D419 is supplied to the calculators 412 1 to 412 6 . The calculators 412 1 to 412 6 use the decoding intermediate result D411 k (k = 1, 2,..., 6) and the decoding intermediate result D413 k , respectively, according to equations (7) and (8). 1 is calculated to obtain a decoding intermediate result D413 k . Calculation unit 412 supplies the calculator 412 1 to 412 6 by six six corresponding decoding one of the check matrix H obtained as a result of the operation intermediate results D412 1 to D412 6 decoding intermediate result storage memory 413.

図12は、図10の計算部412の計算器412kの構成例を示すブロック図である。 FIG. 12 is a block diagram illustrating a configuration example of the calculator 412 k of the calculation unit 412 in FIG.

図12では、前回の計算部412による第1の演算の結果得られる各復号途中結果D412k(D413k)(udv)が符号ビットを合わせて合計6ビット(bit)に量子化され、計算部415による第2の演算の結果得られる各復号途中結果D415(D411k)(v)が9ビットに量子化されているものとして、計算器412kを表している。さらに、図12の計算器412kには、クロックckが供給され、このクロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。 In FIG. 12, each decoding intermediate result D412 k (D413 k ) (u dv ) obtained as a result of the first calculation by the previous calculation unit 412 is quantized to a total of 6 bits (bits) including the sign bits. The calculator 412 k is represented on the assumption that each decoding intermediate result D415 (D411 k ) (v) obtained as a result of the second calculation by the unit 415 is quantized to 9 bits. Furthermore, a clock ck is supplied to the calculator 412 k in FIG. 12, and this clock ck is supplied to a necessary block. Each block performs processing in synchronization with the clock ck.

図12の計算器412kは、制御部417から供給される制御信号D419に基づいて、復号途中結果格納用メモリ413から1つずつ読み込まれる、前回の計算部412による第1の演算の結果得られた復号途中結果D413k(udv)と、サイクリックシフト回路411から1つずつ読み込まれる復号途中結果D411k(v)とを用いて、式(7)と式(8)にしたがう第1の演算を行う。 The calculator 412 k of FIG. 12 obtains the result of the first calculation by the previous calculation unit 412 that is read one by one from the decoding intermediate result storage memory 413 based on the control signal D419 supplied from the control unit 417. and it was decoded intermediate results D413 k (u dv), by using the cyclic shift circuit 411 one by one from the decoding intermediate results to be read D411 k (v), first according to equation (8) and equation (7) Perform the operation.

即ち、計算器412kには、サイクリックシフト回路411から供給される6つの9ビットの復号途中結果D4111乃至D4116(v)のうちの、1つの復号途中結果D411kが供給されるとともに、復号途中結果格納用メモリ413から供給される、前回の計算部412による演算の結果である6つの6ビットの復号途中結果D4131乃至D4136(uj)のうちの、前回の計算部412による演算の結果である1つの復号途中結果D413kが供給され、その9ビットの復号途中結果D411k(v)と6ビットの復号途中結果D413k(udv)が、減算器431に供給される。また、計算器412kには、制御部417から制御信号D419が供給され、その制御信号D419がセレクタ435とセレクタ442に供給される。 That is, the calculator 412 k is supplied with one decoding intermediate result D411 k among the six 9-bit decoding intermediate results D411 1 to D411 6 (v) supplied from the cyclic shift circuit 411. The previous calculation unit 412 out of the six 6-bit decoding intermediate results D413 1 to D413 6 (u j ), which are supplied from the decoding intermediate result storage memory 413 and are the result of the calculation by the previous calculation unit 412. one decoding intermediate results D413 k is the calculated result is supplied by its 9-bit decoding intermediate results D411 k (v) and 6-bit decoding intermediate results D413 k (u dv) is supplied to the subtracter 431 The Further, the control signal D419 is supplied from the control unit 417 to the calculator 412 k , and the control signal D419 is supplied to the selector 435 and the selector 442.

減算器431は、9ビットの復号途中結果D411k(v)から6ビットの復号途中結果D413k(uj)を減算し、その6ビットの減算値D431(vi)を出力する。即ち、減算器431は、式(8)にしたがって演算を行い、その演算の結果である減算値D431を出力する。 Subtractor 431, 9-bit decoding intermediate results D411 k (v) from 6-bit decoding intermediate results subtracted D413 k (u j), and outputs the 6-bit subtraction value D431 (v i). That is, the subtractor 431 performs an operation according to the equation (8), and outputs a subtraction value D431 that is the result of the operation.

減算器431により出力された6ビットの減算値D431のうち、最上位ビットの正負を示す符号ビットD432(sign(vi))がEXOR回路440に供給され、下位5ビットの絶対値D433(|vi|)がLUT432に供給される。 Of the 6-bit subtraction value D431 output by the subtractor 431, the sign bit D432 (sign (v i )) indicating the sign of the most significant bit is supplied to the EXOR circuit 440, and the absolute value D433 (| v i |) is supplied to the LUT 432.

LUT432は、絶対値D433(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D434(φ(|vi|))を読み出し、加算器433とFIFOメモリ438に供給する。 The LUT 432 reads out the 5-bit calculation result D434 (φ (| v i |)) obtained by performing the calculation of φ (| v i |) in Expression (7) with respect to the absolute value D433 (| v i |). To the adder 433 and the FIFO memory 438.

加算器433は、演算結果D434(φ(|vi|))とレジスタ434に格納されている9ビットの値D435とを加算することにより、演算結果D434を積算し、その結果得られる9ビットの積算値をレジスタ434に再格納する。なお、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411kから求められた絶対値D433(|vi|)に対する演算結果D434が積算された場合、レジスタ434はリセットされる。 The adder 433 adds the operation result D434 (φ (| v i |)) and the 9-bit value D435 stored in the register 434, thereby accumulating the operation result D434, and 9 bits obtained as a result. Is stored again in the register 434. Note that when the operation result D434 for the absolute value D433 (| v i |) obtained from the decoding intermediate result D411 k corresponding to all 1s in one row of the check matrix H is accumulated, the register 434 is reset. .

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

制御信号D419が「1」の場合、セレクタ435は、レジスタ434に格納されている値、即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411k(v)から求められたφ(|vi|)が積算された9ビットの値D435(i=1からi=dcまでのΣφ(|vi|))を選択し、値D436として、レジスタ436に出力して格納させる。レジスタ436は、格納している値D436を、9ビットの値D437として、セレクタ435と加算器437に供給する。制御信号D419が「0」の場合、セレクタ435は、レジスタ436から供給された値D437を選択し、レジスタ436に出力して再格納させる。即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411k(v)から求められたφ(|vi|)が積算されるまで、レジスタ436は、前回積算されたφ(|vi|)を、セレクタ435と加算器437に供給する。 When the control signal D419 is “1”, the selector 435 is obtained from the value stored in the register 434, that is, the decoding intermediate result D411 k (v) corresponding to all 1s over one row of the check matrix H. and φ (| v i |) 9-bit value that is accumulated D435 (Sigma] [phi of i = 1 through i = d c (| v i |)) is selected, as a value D436, and outputs this to the register 436 Store. The register 436 supplies the stored value D436 to the selector 435 and the adder 437 as a 9-bit value D437. When the control signal D419 is “0”, the selector 435 selects the value D437 supplied from the register 436, outputs it to the register 436, and stores it again. That is, until the φ (| v i |) obtained from the decoding intermediate result D411 k (v) corresponding to all 1s in one row of the check matrix H is accumulated, the register 436 accumulates φ previously accumulated. (| v i |) is supplied to the selector 435 and the adder 437.

一方、FIFOメモリ438は、レジスタ436から新たな値D437(i=1からi=dcまでのΣφ(|vi|))が出力されるまでの間、LUT432が出力した演算結果D434(φ(|vi|))を遅延し、5ビットの値D438として減算器437に供給する。減算器437は、レジスタ436から供給された値D437から、FIFOメモリ438から供給された値D438を減算し、その減算結果を、5ビットの減算値D439としてLUT439に供給する。即ち、減算器437は、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411k(v)から求められたφ(|vi|)の積算値から、求めたい枝に対応する復号途中結果、即ち、検査行列Hの所定の1に対応する復号途中結果D411k(v)から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc−1までのΣφ(|vi|))を減算値D439としてLUT439に供給する。 On the other hand, FIFO memories 438, (from i = 1 i = Σφ to d c (| v i |) ) a new value D437 from the register 436 until it is output, the result calculation LUT432 has output D434 (phi (| v i |)) is delayed and supplied to the subtractor 437 as a 5-bit value D438. The subtracter 437 subtracts the value D438 supplied from the FIFO memory 438 from the value D437 supplied from the register 436, and supplies the subtraction result to the LUT 439 as a 5-bit subtraction value D439. That is, the subtracter 437 corresponds to the branch to be obtained from the integrated value of φ (| v i |) obtained from the decoding intermediate result D411 k (v) corresponding to all 1s over one row of the check matrix H. The subtraction value (i = 1 to i) is obtained by subtracting φ (| v i |) obtained from the decoding intermediate result to be performed, that is, the decoding intermediate result D411 k (v) corresponding to the predetermined 1 of the parity check matrix H. Σφ (| v i |) up to = d c −1 is supplied to the LUT 439 as the subtraction value D439.

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

以上の処理と並行して、EXOR回路440は、レジスタ441に格納されている1ビットの値D442と符号ビットD432との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D441をレジスタ441に再格納する。なお、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411kから求められた符号ビットD432が乗算された場合、レジスタ441はリセットされる。 In parallel with the above processing, the EXOR circuit 440 performs an exclusive OR operation between the 1-bit value D442 stored in the register 441 and the sign bit D432, thereby multiplying the sign bits by 1 The bit multiplication result D441 is re-stored in the register 441. Incidentally, when the sign bits D432 obtained from the decoding intermediate results D411 k corresponding to all 1 across one line of the parity check matrix H have been multiplied, the register 441 is reset.

検査行列Hの1行に亘る全ての1に対応する復号途中結果D411から求められた符号ビットD432が乗算された乗算結果D441(i=1からdcまでのΠsign(vi))がレジスタ441に格納された場合、制御部417から供給される制御信号D419は、「0」から「1」に変化する。 (Paisign from i = 1 to d c (v i)) multiplication result D441 with sign bit D432 is multiplied by the obtained from the decoding intermediate result D411 corresponding to all 1 across one line of the parity check matrix H register 441 Stored in the control signal 419, the control signal D419 supplied from the control unit 417 changes from “0” to “1”.

制御信号D419が「1」の場合、セレクタ442は、レジスタ441に格納されている値、即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411kから求められた符号ビットD432が乗算された値D442(i=1からi=dcまでのΠsign(vi))を選択し、1ビットの値D443としてレジスタ443に出力して格納させる。レジスタ443は、格納している値D443を、1ビットの値D444としてセレクタ442とEXOR回路445に供給する。制御信号D419が「0」の場合、セレクタ442は、レジスタ443から供給された値D444を選択し、レジスタ443に出力して再格納させる。即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411k(v)から求められた符号ビットD432が乗算されるまで、レジスタ443は、前回格納した値を、セレクタ442とEXOR回路445に供給する。 When the control signal D419 is “1”, the selector 442 uses the value stored in the register 441, that is, the sign bit obtained from the decoding intermediate result D411 k corresponding to all 1s over one row of the check matrix H. D432 selects the multiplied value D442 (Πsign of i = 1 through i = d c (v i) ), and stores and outputs a 1-bit value D443 to the register 443. The register 443 supplies the stored value D443 to the selector 442 and the EXOR circuit 445 as a 1-bit value D444. When the control signal D419 is “0”, the selector 442 selects the value D444 supplied from the register 443, outputs it to the register 443, and stores it again. That is, until the sign bit D432 obtained from the decoding intermediate result D411 k (v) corresponding to all 1s in one row of the check matrix H is multiplied, the register 443 stores the previously stored value as the selector 442. This is supplied to the EXOR circuit 445.

一方、FIFOメモリ444は、レジスタ443から新たな値D444(i=1からi=dcまでのΠsign(vi))がEXOR回路445に供給されるまでの間、符号ビットD432を遅延し、1ビットの値D445としてEXOR回路445に供給する。EXOR回路445は、レジスタ443から供給された値D444と、FIFOメモリ444から供給された値D445との排他的論理和を演算することにより、値D444を、値D445で除算し、1ビットの除算結果を除算値D446として出力する。即ち、EXOR回路445は、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411kから求められた符号ビットD432(sign(vi))の乗算値を、検査行列Hの所定の1に対応する復号途中結果D411kから求められた符号ビットD432(sign(vi))で除算して、その除算値(i=1からi=dc−1までのΠsign(vi))を除算値D446として出力する。 On the other hand, FIFO memories 444, between (from i = 1 i = Πsign to d c (v i)) a new value D444 from the register 443 until is supplied to the EXOR circuit 445 delays the sign bit D432, The 1-bit value D445 is supplied to the EXOR circuit 445. The EXOR circuit 445 calculates the exclusive OR of the value D444 supplied from the register 443 and the value D445 supplied from the FIFO memory 444, thereby dividing the value D444 by the value D445 and dividing by 1 bit. The result is output as the division value D446. That is, the EXOR circuit 445 uses the multiplication value of the sign bit D432 (sign (v i )) obtained from the decoding intermediate result D411 k corresponding to all 1s over one row of the parity check matrix H as the predetermined value of the parity check matrix H. code bits obtained from the decoding intermediate results D411 k corresponding to one of the D432 (sign (v i)) is divided by, Paisign of the division value from (i = 1 to i = d c -1 (v i ) ) Is output as the division value D446.

計算器412kでは、LUT439から出力された5ビットの演算結果D440を下位5ビットとするとともに、EXOR回路445から出力された1ビットの除算値D446を最上位ビットとする合計6ビットが復号途中結果D412k(uj)として出力される。 In the calculator 412 k , the 5-bit calculation result D440 output from the LUT 439 is set to the lower 5 bits, and a total of 6 bits including the 1-bit division value D446 output from the EXOR circuit 445 as the most significant bit is being decoded. The result is output as D412 k (u j ).

以上のように、計算器412kでは、式(7)と式(8)の演算が行われ、復号途中結果ujが求められる。 As described above, the calculator 412 k performs the calculations of Expressions (7) and (8), and obtains a decoding intermediate result u j .

なお、図9の検査行列Hの行の重みの最大は9であるため、即ち、計算器412kに供給される復号途中結果D411k(v)と復号途中結果D413k(udv)の最大数は9であるため、計算器412kは、9個の復号途中結果D411kから求められる9個の演算結果D434(φ(|vi|))を遅延させるFIFOメモリ438と、9個の符号ビットD432を遅延させるFIFOメモリ444を有している。行の重みが9未満の行のメッセージを計算するときには、FIFOメモリ438とFIFOメモリ444における遅延量が、その行の重みの値に減らされる。 Incidentally, since the maximum weight of the rows of the check matrix H of FIG. 9 is a 9, i.e., the maximum calculator 412 decoding intermediate results supplied to k D411 k (v) decoding intermediate results D413 k (u dv) Since the number is 9, the calculator 412 k includes nine FIFO results 438 for delaying nine calculation results D434 (φ (| v i |)) obtained from the nine decoding intermediate results D411 k , and nine A FIFO memory 444 for delaying the sign bit D432 is provided. When calculating a message for a row with a row weight less than 9, the amount of delay in the FIFO memory 438 and FIFO memory 444 is reduced to the value of the row weight.

以上のように、図12の計算器412kでは、FIFOメモリ438と444が、演算結果D434または符号ビットD432を格納することにより遅延を行うため、チェックノード次数(検査行列Hの行の重み)が大きい場合、FIFOメモリ438と444以外の演算を行う論理回路に比べて、FIFOメモリ438と444を構成するメモリの回路規模が膨大になる。 As described above, in the calculator 412 k of FIG. 12, the FIFO memories 438 and 444 perform delay by storing the calculation result D434 or the sign bit D432, so that the check node order (the weight of the row of the check matrix H) Is large, the circuit scale of the memory constituting the FIFO memories 438 and 444 becomes enormous compared to a logic circuit that performs operations other than the FIFO memories 438 and 444.

例えば、各計算器412kのFIFOメモリ438と444がシフトレジスタを用いて構成される場合、FIFOメモリ438と444は、格納する演算結果D434または符号ビットD432のビット数分のフリップフロップを必要とし、回路規模が膨大になる。また、FIFOメモリ438と444が、FIFOやRAM(Random Access Memory)などのメモリマクロを用いて構成される場合、一般的に、小さいメモリマクロは、格納する演算結果D434または符号ビットD432のビット数に対して相対的に大きくなるため、回路規模が膨大になる。 For example, when the FIFO memories 438 and 444 of each calculator 412 k are configured using shift registers, the FIFO memories 438 and 444 require flip-flops corresponding to the number of operation results D434 or sign bits D432 to be stored. The circuit scale becomes enormous. In addition, when the FIFO memories 438 and 444 are configured by using a memory macro such as a FIFO or a RAM (Random Access Memory), generally, the small memory macro is the number of bits of the operation result D434 or the sign bit D432 to be stored. As a result, the circuit scale becomes enormous.

図13は、図10の計算部415の計算器415kの構成例を示すブロック図である。 FIG. 13 is a block diagram illustrating a configuration example of the calculator 415 k of the calculation unit 415 of FIG.

なお、図13では、計算部412による第1の演算の結果得られる各復号途中結果D412k(D414k)(uj)が符号ビットを合わせて合計6ビットに量子化されているものとして、計算器415kを表している。さらに、図13の計算器415kには、クロックckが供給され、このクロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。 In FIG. 13, it is assumed that each decoding intermediate result D412 k (D414 k ) (u j ) obtained as a result of the first calculation by the calculation unit 412 is quantized to a total of 6 bits including the sign bit, Represents the calculator 415 k . Further, a clock ck is supplied to the calculator 415 k in FIG. 13, and this clock ck is supplied to a necessary block. Each block performs processing in synchronization with the clock ck.

図13の計算器415kは、制御部417から供給される制御信号D422に基づいて、受信用メモリ416から1つずつ読み込まれる受信データD417k(u0i)と、サイクリックシフト回路414から1つずつ読み込まれる復号途中結果D414k(uj)とを用いて、式(5)にしたがう第2の演算を行う。 The calculator 415 k in FIG. 13 receives received data D417 k (u 0i ) read from the receiving memory 416 one by one based on the control signal D422 supplied from the control unit 417, and 1 from the cyclic shift circuit 414. A second calculation according to the equation (5) is performed using the decoding intermediate result D414 k (u j ) read one by one.

即ち、計算器415kでは、サイクリックシフト回路414から、検査行列Hの各行の1に対応する6ビットの復号途中結果D414k(uj)が1つずつ読み込まれ、その復号途中結果D414が、加算器471に供給される。また、計算器415kでは、受信用メモリ416から6ビットの受信データD417kが1つずつ読み込まれ、加算器475に供給される。さらに、計算器415kには、制御部417から制御信号D422が供給され、その制御信号D422は、セレクタ473に供給される。 That is, the calculator 415 k reads one-bit 6-bit decoding result D414 k (u j ) corresponding to 1 in each row of the check matrix H from the cyclic shift circuit 414 one by one. , And supplied to the adder 471. The calculator 415 k reads 6-bit reception data D417 k one by one from the reception memory 416 and supplies the read data D417 k to the adder 475. Further, the control signal D422 is supplied from the control unit 417 to the calculator 415 k , and the control signal D422 is supplied to the selector 473.

加算器471は、復号途中結果D414k(uj)とレジスタ472に格納されている9ビットの値D471とを加算することにより、復号途中結果D414kを積算し、その結果得られる9ビットの積算値を、レジスタ472に再格納する。なお、検査行列Hの1列に亘る全ての1に対応する復号途中結果D414kが積算された場合、レジスタ472はリセットされる。 The adder 471 by adding the decoded intermediate results D414 k (u j) a register 472 to store has been has 9-bit value D471, the decoding intermediate result by integrating D414 k, of 9 bits obtained as a result The integrated value is stored again in the register 472. Incidentally, if the decoding intermediate results D414 k corresponding to all 1 across one row of the parity check matrix H is integrated, the register 472 is reset.

検査行列Hの1列に亘る復号途中結果D414kが1つずつ読み込まれ、レジスタ472に1列分の復号途中結果D414kが積算された値が格納された場合、制御部417から供給される制御信号D422は、「0」から「1」に変化する。例えば、列の重みが「5」である場合、制御信号D422は、1から4クロック目までは「0」となり、5クロック目では「1」となる。 When the decoding intermediate result D414 k over one column of the check matrix H is read one by one and the value obtained by integrating the decoding intermediate result D414 k for one column is stored in the register 472, it is supplied from the control unit 417. The control signal D422 changes from “0” to “1”. For example, when the column weight is “5”, the control signal D422 is “0” from the first to the fourth clock, and “1” at the fifth clock.

制御信号D422が「1」の場合、セレクタ473は、レジスタ472に格納されている値、即ち、検査行列Hの1列に亘る全ての枝からの復号途中結果D414k(uj)が積算された9ビットの値D471(j=1からdVまでのΣuj)を選択し、レジスタ474に出力して格納させる。レジスタ474は、格納している値D471を、9ビットの値D472として、セレクタ473と加算器475に供給する。制御信号D422が「0」の場合、セレクタ473は、レジスタ474から供給された値D472を選択し、レジスタ474に出力し再格納させる。即ち、検査行列Hの1列に亘る全ての枝からの復号途中結果D414k(uj)が積算されるまで、レジスタ474は、前回積算された値を、セレクタ473と加算器475に供給する。 When the control signal D422 is “1”, the selector 473 accumulates the values stored in the register 472, that is, the decoding intermediate results D414 k (u j ) from all the branches over one column of the check matrix H. 9-bit value D471 (from j = 1? uj j to d V) is selected, it is stored in output register 474. The register 474 supplies the stored value D471 to the selector 473 and the adder 475 as a 9-bit value D472. When the control signal D422 is “0”, the selector 473 selects the value D472 supplied from the register 474, outputs it to the register 474, and stores it again. In other words, the register 474 supplies the previously accumulated value to the selector 473 and the adder 475 until the decoding intermediate results D414 k (u j ) from all branches over one column of the check matrix H are accumulated. .

加算器475は、9ビットの値D472と、受信用メモリ416から供給された6ビットの受信データD417kとを加算して、その結果得られる6ビットの値を復号途中結果D415k(v)として出力する。 The adder 475 adds the 9-bit value D472 and the 6-bit reception data D417 k supplied from the reception memory 416, and decodes the 6-bit value obtained as a result of the decoding halfway result D415 k (v). Output as.

以上のように、計算器415kでは、式(5)の演算が行われ、復号途中結果vが求められる。 As described above, the calculator 415 k performs the calculation of Expression (5) and obtains a decoding intermediate result v.

なお、図9の検査行列Hの列の重みの最大は5であるため、即ち、計算器415kに供給される復号途中結果ujの最大数は5であるため、計算器415kは、6ビットの復号途中結果ujを最大5個加算する。従って、計算器415kの出力は、9ビットの値となっている。 Since the maximum column weight of the parity check matrix H in FIG. 9 is 5, that is, the maximum number of decoding intermediate results u j supplied to the calculator 415 k is 5, the calculator 415 k is A maximum of five 6-bit decoding intermediate results u j are added. Therefore, the output of the calculator 415 k is a 9-bit value.

図14は、図10の復号途中結果格納用メモリ413の構成例を示すブロック図である。   FIG. 14 is a block diagram illustrating a configuration example of the decoding intermediate result storage memory 413 of FIG.

復号途中結果格納用メモリ413は、スイッチ501と504、および2つのシングルポートRAMである復号途中結果格納用RAM502と503から構成される。   The decoding intermediate result storage memory 413 includes switches 501 and 504 and decoding intermediate result storage RAMs 502 and 503 which are two single-port RAMs.

この復号途中結果格納用メモリ413の各部について詳細に説明する前に、まず、復号途中結果格納用RAM502と503へのデータの格納方法について説明する。   Before describing each part of the decoding intermediate result storage memory 413 in detail, first, a method of storing data in the decoding intermediate result storage RAMs 502 and 503 will be described.

復号途中結果格納用RAM502と503は、計算部412による第1の演算の結果得られ、スイッチ501を介して供給された6つの復号途中結果D412(D4121乃至D4126)(uj)を格納する。 The decoding intermediate result storage RAMs 502 and 503 store six decoding intermediate results D412 (D412 1 to D412 6 ) (u j ) obtained as a result of the first calculation by the calculation unit 412 and supplied via the switch 501. To do.

具体的には、復号途中結果格納用RAM502の第1アドレスから第9アドレスには、図9の検査行列Hの第1行目から第6行目までの1に対応する復号途中結果D412(D501)が、各行ともに横方向(列方向)に詰めた形に(0を無視した形で)格納される。   Specifically, the decoding intermediate result D412 (D501) corresponding to 1 from the first row to the sixth row of the parity check matrix H in FIG. ) Are stored in a form packed in the horizontal direction (column direction) for each row (ignoring 0).

即ち、第j行第i列を、(j,i)と表すこととすると、復号途中結果格納用RAM502の第1アドレスには、図9の検査行列Hの構成行列である(1,1)から(6,6)の6×6の単位行列の1に対応するデータが、第2アドレスには、図9の検査行列Hの構成行列である(1,25)から(6,30)のシフト行列(6×6)の単位行列を右方向に5つだけサイクリックシフトしたシフト行列)の1に対応するデータが格納される。第3アドレスから第8アドレスも同様に図9の検査行列Hの構成行列と対応づけてデータが格納される。そして、第9アドレスには、検査行列Hの(1,102)から(6,108)のシフト行列(6×6の単位行列のうちの1行目の1を0に置き換えて1つだけ左方向にサイクリックシフトしたシフト行列)の1に対応するデータが格納される。ここで、図9の検査行列Hの(1,102)から(6,108)のシフト行列においては、1行目に1がないため、第9アドレスにはデータが格納されない。   That is, if the j-th row and the i-th column are represented as (j, i), the first address of the decoding intermediate result storage RAM 502 is the constituent matrix of the check matrix H of FIG. 9 (1, 1). The data corresponding to 1 of the 6 × 6 unit matrix from (6,6) to (6,6) is at the second address from (1,25) to (6,30) which is the component matrix of the check matrix H in FIG. Data corresponding to 1 of a shift matrix (shift matrix obtained by cyclically shifting a unit matrix of 6 × 6) by five in the right direction) is stored. Similarly, data is stored in association with the configuration matrix of the check matrix H in FIG. At the ninth address, the shift matrix (1,102) to (6,108) of the parity check matrix H (1 in the first row of the 6 × 6 unit matrix is replaced with 0 and cyclically leftward by one). Data corresponding to 1 of the shifted shift matrix) is stored. Here, in the shift matrix from (1,102) to (6,108) of parity check matrix H in FIG. 9, since there is no 1 in the first row, no data is stored at the ninth address.

また、復号途中結果格納用RAM502の第10アドレスから第18アドレスには、図9の検査行列Hの第13行目から第18行目までの1に対応するデータが格納される。即ち、第10アドレスには、検査行列Hの(13,7)から(18,12)の6×6の単位行列を右方向に5つだけサイクリックシフトした行列の1に対応するデータが格納され、第11アドレスには、検査行列Hの(13,13)から(18,18)の和行列(6×6の単位行列と、6×6の単位行列を右方向に1つだけサイクリックシフトしたシフト行列との和である和行列)を構成するシフト行列の1に対応するデータが格納される。また、第12アドレスには、検査行列Hの(13,13)から(18,18)の和行列を構成する単位行列の1に対応するデータが格納される。以下、第13アドレスから第18アドレスについても、検査行列Hに対応づけてデータが格納される。   Also, data corresponding to 1 from the 13th to the 18th rows of the parity check matrix H in FIG. 9 is stored in the 10th to 18th addresses of the decoding intermediate result storage RAM 502. That is, at the 10th address, data corresponding to 1 of the matrix obtained by cyclically shifting the 6 × 6 unit matrix from (13,7) to (18,12) of the check matrix H by five to the right is stored. At the eleventh address, the sum matrix of (13,13) to (18,18) of the check matrix H (6 × 6 unit matrix and 6 × 6 unit matrix only one cyclically in the right direction) The data corresponding to 1 of the shift matrix constituting the sum matrix with the shifted shift matrix) is stored. Further, data corresponding to 1 of the unit matrix constituting the sum matrix of (13,13) to (18,18) of the check matrix H is stored at the twelfth address. Hereinafter, the data corresponding to the check matrix H is also stored for the 13th to 18th addresses.

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

同様に、復号途中結果格納用RAM502の第19アドレスから第27アドレスには、図9の検査行列Hに対応づけて、第25行目から第30行目までの1に対応するデータが格納される。即ち、復号途中結果格納用RAM502のワード数は、27である。   Similarly, data corresponding to 1 from the 25th row to the 30th row is stored in the 19th to 27th addresses of the decoding intermediate result storage RAM 502 in association with the parity check matrix H in FIG. The That is, the number of words in the decoding intermediate result storage RAM 502 is 27.

復号途中結果格納用RAM503の第1アドレスから第9アドレスには、図9の検査行列Hの第7行目から第12行目までの1に対応する復号途中結果D412(D502)が、各行ともに横方向(列方向)に詰めた形に(0を無視した形で)格納される。   Decoding intermediate result D412 (D502) corresponding to 1 from the seventh to the twelfth rows of parity check matrix H of FIG. 9 is stored in each of the first to ninth addresses of decoding intermediate result storage RAM 503 for each row. It is stored in a form packed in the horizontal direction (column direction) (ignoring 0).

即ち、復号途中結果格納用RAM503の第1アドレスには、検査行列Hの構成行列である(7,1)から(12,6)の和行列(6×6の単位行列を右方向に2つだけサイクリックシフトした第1のシフト行列と、右方向に4つだけサイクリックシフトした第2のシフト行列の和である和行列)を構成する第1のシフト行列の1に対応するデータが、第2アドレスには、検査行列Hの構成行列である(7,1)から(12,6)の和行列を構成する第2のシフト行列の1に対応するデータが格納される。以下、第3アドレスから第9アドレスも同様に検査行列Hの構成行列と対応づけてデータが格納される。   That is, at the first address of the decoding intermediate result storage RAM 503, the sum matrix (6 × 6 unit matrix of 2 × 6 × 6), which is the component matrix of the check matrix H, is added in the right direction. Data corresponding to 1 of the first shift matrix constituting the first shift matrix that is cyclically shifted only by 1 and the sum matrix that is the sum of the second shift matrix that is cyclically shifted by 4 in the right direction, In the second address, data corresponding to 1 of the second shift matrix constituting the sum matrix of (7,1) to (12,6), which is the constituent matrix of the check matrix H, is stored. Thereafter, data is stored in association with the configuration matrix of the check matrix H in the same manner from the third address to the ninth address.

同様に、復号途中結果格納用RAM503の第10アドレスから第18アドレスには、図9の検査行列Hの第19行目から第24行目までの1に対応するデータが、第19アドレスから第27アドレスには、検査行列Hの第31行目から第36行目までの1に対応するデータが、図9の検査行列Hに対応づけて格納される。即ち、復号途中結果格納用RAM503のワード数は、27である。   Similarly, data corresponding to 1 from the 19th row to the 24th row of the parity check matrix H in FIG. 9 is stored in the decoding intermediate result storage RAM 503 from the 19th address to the 18th address. At address 27, data corresponding to 1 from the 31st row to the 36th row of the parity check matrix H is stored in association with the parity check matrix H of FIG. That is, the number of words in the decoding intermediate result storage RAM 503 is 27.

上述したように、復号途中結果格納用RAM502と503のワード(word)数は、27である。即ち、ワード数は、検査行列Hの行の重み(row weight)の9と行数の36とを乗算し、その乗算結果(検査行列Hの1の数)を、同時に読み出す復号途中結果D413kの数の6で除算し、さらに、復号途中結果格納用メモリ413が有する復号途中結果格納用RAMの個数の2で除算した値となる。 As described above, the number of words in the decoding intermediate result storage RAMs 502 and 503 is 27. That is, the word number multiplies the 36 9 and rows of the weights of the rows of the check matrix H (row weight), the multiplication result (the number of 1 in the parity check matrix H), at the same time reads the decoding intermediate results D413 k Then, the result is divided by 2 of the number of decoding intermediate result storage RAMs included in the decoding intermediate result storage memory 413.

以下、図14の復号途中結果格納用メモリ413の各部の動作について詳細に説明する。   Hereinafter, the operation of each part of the decoding intermediate result storage memory 413 in FIG. 14 will be described in detail.

復号途中結果格納用メモリ413には、計算部412により第1の演算が行われる場合、計算部412から第1の演算の結果得られる6つの復号途中結果D412(uj)が供給され、その復号途中結果D412が復号途中結果格納用RAM502または復号途中結果格納用RAM503のうちの一方の所定のアドレスに書き込まれると同時に、他方から、前回の計算部412による第1の演算の結果得られた復号途中結果D412(uj)が読み出され、復号途中結果D413kとして計算部412に出力される。一方、計算部415により第2の演算が行われる場合、復号途中結果格納用メモリ413は、復号途中結果格納用RAM502または復号途中結果格納用RAM503に書き込みを行わず、どちらか一方のRAMの所定のアドレスから復号途中結果D503またはD504を読み出して、復号途中結果D413としてサイクリックシフト回路414に供給する。 When the first calculation is performed by the calculation unit 412, six decoding intermediate results D 412 (u j ) obtained as a result of the first calculation are supplied from the calculation unit 412 to the decoding intermediate result storage memory 413. The decoding intermediate result D412 is written to one predetermined address of the decoding intermediate result storage RAM 502 or the decoding intermediate result storage RAM 503, and at the same time, the result of the first calculation by the previous calculation unit 412 is obtained from the other. Decoding intermediate result D412 (u j ) is read and output to calculation unit 412 as decoding intermediate result D413 k . On the other hand, when the second calculation is performed by the calculation unit 415, the decoding intermediate result storage memory 413 does not write to the decoding intermediate result storage RAM 502 or the decoding intermediate result storage RAM 503, and the predetermined calculation of either one of the RAMs is not performed. The decoding halfway result D503 or D504 is read from the address of, and supplied to the cyclic shift circuit 414 as the decoding halfway result D413.

スイッチ501には、計算部412から6つの復号途中結果D412が供給されるとともに、その復号途中結果D412を書き込むメモリとして、復号途中結果格納用RAM502または復号途中結果格納用RAM503の一方の選択を表す制御信号D4201が制御部417から供給される。スイッチ501は、制御信号D4201に基づいて、復号途中結果格納用RAM502または復号途中結果格納用RAM503の一方を選択し、その選択した一方に、6つの復号途中結果D412を供給する。 The switch 501 is supplied with six decoding intermediate results D412 from the calculation unit 412, and represents either selection of the decoding intermediate result storage RAM 502 or the decoding intermediate result storage RAM 503 as a memory for writing the decoding intermediate result D412. control signal D420 1 is supplied from the control unit 417. Switch 501 based on the control signal D420 1, selects one of the decoding intermediate result storage RAM502 or decoding intermediate result storage RAM 503, one of the the selected supplies six decoding intermediate results D412.

復号途中結果格納用RAM502には、スイッチ501から6つの復号途中結果D412が、復号途中結果D501として供給されるとともに、制御部417からアドレスを表す制御信号D4202が供給される。復号途中結果格納用RAM502は、制御信号D4202が表すアドレスに既に格納されている前回の計算部412による第1の演算の結果得られた6つの復号途中結果D501を読み出し、復号途中結果D503としてスイッチ504に供給する。また、復号途中結果格納用RAM502は、制御信号D4202が表すアドレスに、スイッチ501から供給された6つの復号途中結果D501を格納する(書き込む)。 The decoding intermediate result storage RAM 502, 6 single decoding intermediate results D412 from the switch 501, is supplied as a decoded intermediate results D501, the control signal D420 2 representing the address is supplied from the control unit 417. Decoding intermediate result storage RAM502 reads the control signal D420 2 addresses already previous stored calculator 412 according to the first calculation result obtained six decoding intermediate results representative D501, as a decoding intermediate result D503 Supply to switch 504. Further, the decoding intermediate result storage RAM502 in the address indicated by the control signal D420 2, stores the six decoding intermediate results D501 supplied from the switch 501 (write).

復号途中結果格納用RAM503には、スイッチ501から6つの復号途中結果D412が、復号途中結果D502として供給されるとともに、制御部417からアドレスを表す制御信号D4203が供給される。復号途中結果格納用RAM503は、制御信号D4203が表すアドレスに既に格納されている前回の計算部412による第1の演算の結果得られた6つの復号途中結果D502を読み出し、復号途中結果D504としてスイッチ504に供給する。また、復号途中結果格納用RAM503は、制御信号D4203が表すアドレスに、スイッチ501から供給された6つの復号途中結果D502を格納する(書き込む)。 The decoding intermediate result storage RAM 503, 6 single decoding intermediate results D412 from the switch 501, is supplied as a decoded intermediate results D502, the control signal D420 3 representing the address supplied from the controller 417. Decoding intermediate result storage RAM503 reads the control signal D420 3 represents addresses already stored first according to the previous calculation portion 412 and the calculation results obtained six decoding intermediate results D502, as a decoding intermediate result D504 Supply to switch 504. Further, the decoding intermediate result storage RAM503 in the address indicated by the control signal D420 3, stores the six decoding intermediate results D502 supplied from the switch 501 (write).

スイッチ504には、復号途中結果格納用RAM502から復号途中結果D503が供給されるか、あるいは復号途中結果格納用RAM503から復号途中結果D504が供給される。また、制御部417から、復号途中結果格納用RAM502または復号途中結果格納用RAM503の一方の選択を表す制御信号D4204が供給される。スイッチ504は、制御信号D4204に基づいて、復号途中結果格納用RAM502または復号途中結果格納用RAM503の一方を選択し、その選択した一方から供給された6つの復号途中結果D503またはD504を、6つの復号途中結果D413として計算部412とサイクリックシフト回路414に供給する。 The switch 504 is supplied with the decoding intermediate result D503 from the decoding intermediate result storage RAM 502 or the decoding intermediate result D504 from the decoding intermediate result storage RAM 503. Further, the control unit 417, the control signal D420 4 that represents the selection of one of the decoding intermediate result storage RAM502 or decoding intermediate result storage RAM503 is supplied. Switch 504, based on the control signal D420 4, selects one of the decoding intermediate result storage RAM502 or decoding intermediate result storage RAM 503, the six decoding intermediate results D503 or D504 supplied from one of the the selected, 6 Two decoding intermediate results D413 are supplied to the calculation unit 412 and the cyclic shift circuit 414.

ところで、近年、連接符号の内符号の復号出力や繰り返し復号法の各繰り返しの出力を軟出力とすることで、シンボル誤り確率を小さくする研究がなされており、それに適した復号方法としてBCJRアルゴリズムが注目されている。   By the way, in recent years, studies have been made to reduce the symbol error probability by making the decoding output of the inner code of the concatenated code and the output of each repetition of the iterative decoding method soft, and the BCJR algorithm is suitable as a decoding method. Attention has been paid.

そこで、チェックノード演算を行う方法として、上述したGallagerにより提案されたLDPC符号の復号アルゴリズムではなく、検査行列Hの1行に対応するLDPC符号を1つのパリティ検査符号とみなして、そのパリティ検査符号の2つのステート(遷移状態)のトレリスに基づいて、Bahlらにより提案されたBCJRアルゴリズムを適用する方法が考案されている(例えば、非特許文献1参照)。   Therefore, as a method of performing the check node calculation, the LDPC code corresponding to one row of the check matrix H is regarded as one parity check code, not the LDPC code decoding algorithm proposed by Gallager, and the parity check code is used. A method of applying the BCJR algorithm proposed by Bahl et al. Has been devised based on the trellis of these two states (transition states) (see, for example, Non-Patent Document 1).

BCJRアルゴリズムにおいては、復号結果として各シンボルを出力するのではなく、各シンボルの尤度を出力することができる。即ち、軟出力(Soft-output)を行うことができる。   In the BCJR algorithm, instead of outputting each symbol as a decoding result, the likelihood of each symbol can be output. That is, soft output can be performed.

以下、BCJRアルゴリズムについて説明する。   Hereinafter, the BCJR algorithm will be described.

まず最初に、トレリス線図で表すことが可能な符号(以下、トレリス符号という)のM個のステートをm(=0,1,・・・,M-1)とし、時刻tのステートをStとする。また、時刻tにおける入力をit、出力をXt、出力系列をX t(=Xt,Xt+1,・・・,X)とする。このとき、時刻tにおける各ステート間の遷移確率pt(m|m´)は、以下の式(9)で表される。 First, M states of codes (hereinafter referred to as trellis codes) that can be represented by a trellis diagram are set to m (= 0, 1,..., M−1), and the state at time t is set to S. t . Further, it is assumed that the input at time t is i t , the output is X t , and the output series is X t ′ t (= X t , X t + 1 ,..., X t ′ ). At this time, the transition probability p t (m | m ′) between the states at time t is expressed by the following equation (9).

Figure 0004730592
・・・(9)
Figure 0004730592
... (9)

なお、Pr{A|B}は、Bが起こった条件のもとでのAが起こる条件付き確率を表すものとする。また、トレリス符号化は、ステートS0(=0)から始まり、出力系列Xτ 1を出力して、ステートSτ(=0)で終了するものとする。 Note that P r {A | B} represents the conditional probability that A will occur under the condition where B occurs. Also, trellis coding starts from state S 0 (= 0), outputs an output sequence X τ 1 , and ends at state S τ (= 0).

トレリス符号化を行う符号化装置が出力する出力系列Xτ 1は、雑音のある無記憶通信路を介して、受信語Yτ 1(=Yt,Yt+1,・・・,Y)として、トレリス復号を行う復号装置で受信される。即ち、雑音のある無記憶通信路では、出力系列Xτ 1が入力され、受信語Yτ 1が復号装置に出力される。このとき、雑音のある無記憶通信路の遷移確率は、すべてのt(1≦t≦τ)について、以下の式(10)を満たすWによって定義される。 The output sequence X τ 1 output from the encoding device that performs trellis encoding is received via a noisy memoryless communication channel, and the received word Y τ 1 (= Y t , Y t + 1 ,..., Y t ′ ) Is received by a decoding device that performs trellis decoding. That is, in the no-memory channel with noise, the output sequence X τ 1 is input and the received word Y τ 1 is output to the decoding device. At this time, the transition probability of the no-memory channel with noise is defined by W satisfying the following expression (10) for all t (1 ≦ t ≦ τ).

Figure 0004730592
・・・(10)
Figure 0004730592
... (10)

いま、λtを以下の式(11)で定義すると、λtは受信語Yτ 1が復号装置で受信されたときの、時刻tでの入力itの尤度を表し、復号装置で復号結果として出力される軟出力となる。 Now, defining lambda t by the following equation (11), lambda t represents the likelihood of the input i t in the received word Y tau 1 is when it is received by the decoding apparatus, the time t, decoded by the decoding device The resulting soft output is obtained.

Figure 0004730592
・・・(11)
Figure 0004730592
(11)

ここで、確率αt(m),βt(m)、およびγt(m´,m,i)を、以下の式(12)乃至(14)で定義する。 Here, the probabilities α t (m), β t (m), and γ t (m ′, m, i) are defined by the following equations (12) to (14).

Figure 0004730592
・・・(12)
Figure 0004730592
(12)

Figure 0004730592
・・・(13)
Figure 0004730592
... (13)

Figure 0004730592
・・・(14)
Figure 0004730592
(14)

なお、Pr{A;B}はAとBが共に起こる確率を表すものとする。 Note that P r {A; B} represents the probability that both A and B occur.

図15に示すように、式(12)で定義された確率αt-1(m)は、トレリス符号化が開始されるときのステートS0(=0)から、復号装置で受信される受信語Yt 1を基に、時系列順に算出した時刻t-1における各ステートmの通過確率を表している。 As shown in FIG. 15, the probability α t−1 (m) defined by Equation (12) is received from the state S 0 (= 0) when trellis coding is started and received by the decoding device. It represents the passing probability of each state m at time t−1 calculated in chronological order based on the word Y t 1 .

また、式(13)で定義された確率βt(m)は、トレリス符号化が終了するときのステートSτ(=0)から、復号装置で受信される受信語Yτ t+1を基に、時系列の逆順に算出した時刻tにおける各ステートmの通過確率を表している。 Further, the probability β t (m) defined by the equation (13) is based on the received word Y τ t + 1 received by the decoding device from the state S τ (= 0) when the trellis encoding is completed. The passing probability of each state m at time t calculated in reverse order of the time series is shown.

さらに、式(14)で定義された確率γt(m´,m,i)は、時刻tにおける受信語Ytと入力itの確率を基に算出した、時刻tにステートmとm´間を遷移する各枝の出力の受信確率を表している。 Further, the formula (14) in a defined probability gamma t (m', m, i) is calculated based on the probability of the received word Y t and the input i t at time t, and state m at time t m' It represents the reception probability of the output of each branch that transitions between them.

ここで、確率αt(m),βt(m)、およびγt(m´,m,i)を用いると、軟出力λtは、以下の式(15)で表される。 Here, when the probabilities α t (m), β t (m), and γ t (m ′, m, i) are used, the soft output λ t is expressed by the following equation (15).

Figure 0004730592
・・・(15)
Figure 0004730592
... (15)

また、確率αt(m),βt(m)、およびγt(m´,m,i)は、以下の式(16)乃至(18)でも表される。 Probabilities α t (m), β t (m), and γ t (m ′, m, i) are also expressed by the following equations (16) to (18).

Figure 0004730592
・・・(16)
Figure 0004730592
... (16)

Figure 0004730592
・・・(17)
Figure 0004730592
... (17)

Figure 0004730592
・・・(18)
Figure 0004730592
... (18)

従って、復号装置では、式(15)乃至(18)を用いて、軟出力λtを求めることができる。具体的には、まず最初に、復号装置は、受信語Ytを受信するごとに、式(16)と式(18)を用いて、確率γt(m´,m,i)とαt(m)を求める。そして、復号装置は、受信語Yτ 1をすべて受信した後、式(17)を用いて、すべての時刻t,ステートmについて、確率βt(m)を求める。最後に、復号装置は、式(15)を用いて、軟出力λtを求める。以上のようにして、BCJRアルゴリズムでは、軟出力λtが求められる。 Therefore, in the decoding device, the soft output λ t can be obtained using the equations (15) to (18). Specifically, first, every time the received word Y t is received, the decoding device uses the equations (16) and (18) to calculate the probabilities γ t (m ′, m, i) and α t. Find (m). Then, after receiving all the received words Y τ 1 , the decoding apparatus obtains the probability β t (m) for all times t and states m using equation (17). Finally, the decoding apparatus obtains the soft output λ t using Equation (15). As described above, the soft output λ t is obtained in the BCJR algorithm.

次に、BCJRアルゴリズムを適用してチェックノード演算を行う方法について説明する。   Next, a method for performing a check node calculation by applying the BCJR algorithm will be described.

図16は、符号長が7のパリティ検査符号のトレリスを示している。   FIG. 16 shows a trellis of a parity check code having a code length of 7.

図16に示すように、トレリス符号化が開始されるときのステートS0は0である。また、トレリスの時刻t(図16の場合、t=0,1,・・・,7)(トレリスセクション)に対応するパリティ検査符号の符号ビットが0である場合、ステートStは前のステートmと同一のステートmに留まり(St=St-1)、符号ビットが1である場合、ステートStは前のステートmと異なるステートmに遷移する(St≠St-1)。そして、最後のステートであるステートS7は0となる。即ち、パリティ検査符号の「1」の数は、偶数である。 As shown in FIG. 16, state S 0 is 0 when trellis encoding is started. If the sign bit of the parity check code corresponding to the trellis time t (in the case of FIG. 16, t = 0, 1,..., 7) (trellis section) is 0, the state St is the previous state. stays in m the same state m (S t = S t-1), if the sign bit is 1, the state S t is a transition to a different state m the previous state m (S t ≠ S t-1) . The state S 7 which is the last state is 0. That is, the number of parity check codes “1” is an even number.

図16のトレリスでは、確率αtとβtは、上述した式(12)と(13)で表される。一方、パリティ検査符号のビットが1である確率とステートmが遷移する確率が等しいので、確率γtは、以下の式(19)で定義される。 In the trellis shown in FIG. 16, the probabilities α t and β t are expressed by the above-described equations (12) and (13). On the other hand, since the probability that the bit of the parity check code is 1 is equal to the probability that the state m transitions, the probability γ t is defined by the following equation (19).

Figure 0004730592
・・・(19)
Figure 0004730592
... (19)

従って、図16のトレリスでは、上述した式(12)、(13)、および(19)を用いて、軟出力λtを求めることができる。 Therefore, in the trellis shown in FIG. 16, the soft output λ t can be obtained using the above-described equations (12), (13), and (19).

ここで、Δαt,Δβt、Δγt、Δλt、およびQを、確率αtt、およびγtの対数を用いて、以下の式(20)乃至(24)で定義する。 Here, Δα t , Δβ t , Δγ t , Δλ t , and Q are defined by the following equations (20) to (24) using the logarithms of the probabilities α t , β t , and γ t .

Figure 0004730592
・・・(20)
Figure 0004730592
... (20)

Figure 0004730592
・・・(22)
Figure 0004730592
(22)

Figure 0004730592
・・・(22)
Figure 0004730592
(22)

Figure 0004730592
・・・(23)
Figure 0004730592
(23)

Figure 0004730592
・・・(24)
Figure 0004730592
... (24)

このとき、ΔαとΔβの更新式は、以下の式(25)と(26)で表される。   At this time, the update formulas of Δα and Δβ are expressed by the following formulas (25) and (26).

Figure 0004730592
・・・(25)
Figure 0004730592
... (25)

Figure 0004730592
・・・(26)
Figure 0004730592
... (26)

また、外部情報(Extrinsic Information)ΔλEtは以下の式(27)で表される。 Further, extrinsic information Δλ Et is expressed by the following equation (27).

Figure 0004730592
・・・(27)
Figure 0004730592
... (27)

外部情報ΔλEtは、式(24)のQを再帰的に用いて以下の式(28)で表すことができる。 The external information Δλ Et can be expressed by the following equation (28) by recursively using Q in the equation (24).

Figure 0004730592
・・・(28)
Figure 0004730592
... (28)

ここで、Q(x,y)については、以下の式(29)が成り立つ。   Here, for Q (x, y), the following equation (29) holds.

Figure 0004730592
・・・(29)
Figure 0004730592
... (29)

そこで、式(28)のΔγ0,・・・, Δγt-1,Δγt+1,・・・,Δγτ―1をメッセージv1,・・・, vdc-1に、外部情報ΔλEtをメッセージujに置換し、置換後の式(28)を、式(29)を用いて変形すると、メッセージujは、以下の式(30)で表される。 So, Δγ 0 of equation (28), ···, Δγ t -1, Δγ t + 1, ···, message v 1 the Δγ τ-1, ···, to v dc-1, external information Δλ When Et is replaced with the message u j and the replaced expression (28) is transformed using the expression (29), the message u j is expressed by the following expression (30).

Figure 0004730592
・・・(30)
Figure 0004730592
... (30)

なお、式(24)のQ(x,y)は式(3)のR(x,y)と等しいため、式(30)は、上述した式(4)と等価である。従って、復号装置は、Δγtをメッセージviとするとともに、外部情報ΔλEtをメッセージujとして、式(27)で表される外部情報ΔλEt(メッセージuj)の演算を行うことにより、BCJRアルゴリズムを用いて、チェックノード演算を行うことができる。 In addition, since Q (x, y) in Expression (24) is equal to R (x, y) in Expression (3), Expression (30) is equivalent to Expression (4) described above. Therefore, the decoding apparatus performs the calculation of the external information Δλ Et (message u j ) represented by the equation (27) using Δγ t as the message v i and the external information Δλ Et as the message u j , Check node operations can be performed using the BCJR algorithm.

次に、図17を参照して、BCJRアルゴリズムを用いてチェックノード演算を行う復号装置600について説明する。   Next, with reference to FIG. 17, a description will be given of a decoding device 600 that performs a check node operation using the BCJR algorithm.

図17は、復号装置600の構成の一例を示している。なお、図10と同一のものには同一の符号を付してあり、説明は適宜省略する。   FIG. 17 shows an example of the configuration of the decoding device 600. In addition, the same code | symbol is attached | subjected to the same thing as FIG. 10, and description is abbreviate | omitted suitably.

図17の復号装置600は、復号途中結果格納用メモリ410、サイクリックシフト回路411、復号途中結果格納用メモリ413、サイクリックシフト回路414、6つの計算器4151乃至計算器4156からなる計算部415、および受信用メモリ416が設けられている点で、図10の復号装置400と共通するが、6つの計算器6111乃至計算器6116からなる計算部611と制御部612が新たに設けられている点で、図10の復号装置400と異なっている。 Decoding device in FIG. 17 600, the decoding intermediate result storage memory 410, the cyclic shift circuit 411, the decoding intermediate result storage memory 413, consisting of the cyclic shift circuit 414,6 one calculators 415 1 to calculator 415 6 calculated 10 is the same as the decoding device 400 in FIG. 10 in that a calculation unit 611 including six calculators 611 1 to 611 6 and a control unit 612 are newly provided. It is different from the decoding device 400 of FIG. 10 in that it is provided.

計算部611は、6つの計算器6111乃至6116からなる。計算部611には、サイクリックシフト回路411から、計算部415による第2の演算の結果得られた6つの復号途中結果D4111乃至D4116(v)が供給されるとともに、復号途中結果格納用メモリ413から、前回、計算器4121乃至4126による第1の演算の結果得られた6つの復号途中結果D413(D4131乃至D4136)(uj)が供給され、復号途中結果D411kと復号途中結果D413kが、計算器4121乃至4126にそれぞれ供給される。 The calculation unit 611 includes six calculators 611 1 to 611 6 . The calculation unit 611 is supplied with six decoding intermediate results D411 1 to D411 6 (v) obtained as a result of the second calculation by the calculation unit 415 from the cyclic shift circuit 411 and for storing the decoding intermediate result. Six decoding intermediate results D413 (D413 1 to D413 6 ) (u j ) obtained as a result of the first calculation by the calculators 412 1 to 412 6 last time are supplied from the memory 413, and the decoding intermediate result D411 k The decoding intermediate result D413 k is supplied to the calculators 412 1 to 412 6 , respectively.

また、計算部611には、制御部612から制御信号D611とD612が供給され、その制御信号D611とD612が、計算器6111乃至6116に供給される。なお、制御信号D611とD612は、6つの計算器6111乃至6116に共通の信号である。 The calculation unit 611 is supplied with control signals D611 and D612 from the control unit 612, and the control signals D611 and D612 are supplied to the calculators 611 1 to 611 6 . The control signals D611 and D612 are signals common to the six calculators 611 1 to 611 6 .

各計算器611kは、復号途中結果D411kと復号途中結果D413kを用いて、BCJRアルゴリズムに基づく式(25)乃至式(27)にしたがうチェックノード演算と、式(8)の演算とからなる第3の演算を行い、復号途中結果D412(D4121乃至D4126)(uj)を求める。計算部611は、計算器6111乃至6116による演算の結果得られる検査行列Hの6つの1に対応する6つの復号途中結果D4121乃至D4126を、復号途中結果格納用メモリ413に供給する。 Each calculator 611 k uses the decoding intermediate result D411 k and the decoding intermediate result D413 k to calculate the check node according to the equations (25) to (27) based on the BCJR algorithm and the operation of equation (8). A third calculation is performed to obtain a decoding intermediate result D412 (D412 1 to D412 6 ) (u j ). Calculation unit 611 supplies the calculators 611 1 to 611 6 decoding intermediate results D412 1 to D412 6 six corresponding to six 1 of the check matrix H obtained as a result of calculation by, the decoding intermediate result storage memory 413 .

制御部612は、制御信号D418をサイクリックシフト回路411に、制御信号D611とD612を計算部611に供給することにより、それぞれを制御する。また、制御部612は、制御信号D420を復号途中結果格納用メモリ413に、制御信号D421をサイクリックシフト回路414に、制御信号D422を計算部415にそれぞれ供給することにより、それぞれを制御する。   The control unit 612 controls the control signal D418 by supplying the control signal D418 to the cyclic shift circuit 411 and the control signals D611 and D612 to the calculation unit 611, respectively. In addition, the control unit 612 controls the control signal D420 by supplying the control signal D420 to the decoding intermediate result storage memory 413, the control signal D421 to the cyclic shift circuit 414, and the control signal D422 to the calculation unit 415, respectively.

図18は、図17の計算部611の計算器611kの構成例を示すブロック図である。 FIG. 18 is a block diagram illustrating a configuration example of the calculator 611 k of the calculation unit 611 in FIG.

図18の計算器611kは、制御部612から供給される制御信号D611に基づいて、復号途中結果格納用メモリ413から1つずつ読み込まれる、前回の計算部611による第1の演算の結果得られた復号途中結果D413k(udv)と、サイクリックシフト回路411から1つずつ読み込まれる復号途中結果D411k(v)とを用いて、式(25)乃至式(28)にしたがうチェックノード演算と、式(8)にしたがう演算とからなる第3の演算を行う。 The calculator 611 k in FIG. 18 obtains the result of the first calculation by the previous calculation unit 611 that is read one by one from the decoding intermediate result storage memory 413 based on the control signal D611 supplied from the control unit 612. and it was decoded intermediate results D413 k (u dv), by using the cyclic shift circuit 411 one by one from the decoding intermediate results to be read D411 k (v), the check nodes according to equation (25) through (28) A third calculation including the calculation and the calculation according to the equation (8) is performed.

即ち、計算器611kには、サイクリックシフト回路411から供給される6つの復号途中結果D4111乃至D4116(v)のうちの、1つの復号途中結果D411kが供給されるとともに、復号途中結果格納用メモリ413から供給される、前回の計算部611による演算の結果である6つの復号途中結果D4131乃至D4136(uj)のうちの、前回の計算部611による演算の結果である1つの復号途中結果D413kが供給され、その復号途中結果D411k(v)と6ビットの復号途中結果D413k(udv)が、減算器631に供給される。また、計算器6111kには、制御部612から制御信号D611とD612が供給され、その制御信号D611がセレクタ633と640に供給され、制御信号D612がセレクタ637に供給される。 In other words, the calculator 611 k is supplied with one decoding intermediate result D411 k out of the six decoding intermediate results D411 1 to D411 6 (v) supplied from the cyclic shift circuit 411 and is also in the middle of decoding. Of the six decoding intermediate results D413 1 to D413 6 (u j ), which are supplied from the result storage memory 413 and are the result of the previous calculation by the calculation unit 611, are the results of the previous calculation by the calculation unit 611. one decoding intermediate results D413 k is supplied, the decoded intermediate result D411 k (v) and 6-bit decoding intermediate results D413 k (u dv) is supplied to the subtractor 631. Further, the control signal 611 and D612 are supplied from the control unit 612 to the calculator 6111 k , the control signal D611 is supplied to the selectors 633 and 640, and the control signal D612 is supplied to the selector 637.

減算器631は、復号途中結果D411k(v)から復号途中結果D413k(uj)を減算し、その減算値D621を出力する。即ち、減算器431は、式(8)にしたがって演算を行い、その演算の結果である減算値D621(vi)(Δγt)を出力する。減算器631により出力された減算値D621は、Q演算回路632、セレクタ633、およびLIFO(Last In First Out)メモリ638に供給される。 Subtractor 631 subtracts the decoded intermediate results D413 k (u j) from the decoding intermediate results D411 k (v), and outputs the subtracted value D621. That is, the subtractor 431 performs an operation according to the equation (8), and outputs a subtraction value D621 (v i ) (Δγ t ) that is the result of the operation. The subtraction value D621 output from the subtractor 631 is supplied to a Q operation circuit 632, a selector 633, and a LIFO (Last In First Out) memory 638.

Q演算回路632は、減算器631からの減算値D621と、レジスタ634から供給される値D624(Δαt)とを用いて、式(25)にしたがう演算(Q(Δαt-1,Δγt-1))(以下、α演算という)を行い、その結果得られる演算結果D622(Δαt)をセレクタ633に供給する。 The Q calculation circuit 632 uses the subtraction value D621 from the subtractor 631 and the value D624 (Δα t ) supplied from the register 634 to calculate (Q (Δα t−1 , Δγ t ) according to the equation (25). -1 )) (hereinafter referred to as α calculation), and an operation result D622 (Δα t ) obtained as a result is supplied to the selector 633.

検査行列Hの1行に亘る復号途中結果D411kが1つ読み込まれ、最初の復号途中結果D411kの減算値D621が減算器631から出力される場合、制御部612から供給される制御信号D611は、0から1に変化する。例えば、行の重みが「6」である場合、制御信号D611は、1クロック目が、「1」となり、2乃至6クロック目では「0」となる。 When one decoding intermediate result D411 k over one row of the check matrix H is read and the subtraction value D621 of the first decoding intermediate result D411 k is output from the subtractor 631, the control signal D611 supplied from the control unit 612 Changes from 0 to 1. For example, when the row weight is “6”, the control signal D611 is “1” at the first clock and “0” at the second to sixth clocks.

制御信号D611が「1」の場合、セレクタ633は、減算器631からの減算値D621(Δγ1)を選択し、値D623(Δα1)として、レジスタ633に出力して格納させる。一方、制御信号D611が「0」の場合、セレクタ633は、Q演算回路632から供給された演算結果D622を選択し、値D623としてレジスタ634に出力して格納させる。 When the control signal D611 is “1”, the selector 633 selects the subtraction value D621 (Δγ 1 ) from the subtractor 631, outputs the value D623 (Δα 1 ) to the register 633 for storage. On the other hand, when the control signal D611 is “0”, the selector 633 selects the calculation result D622 supplied from the Q calculation circuit 632, and outputs the value D623 to the register 634 for storage.

レジスタ634は、セレクタ633からの値D623をQ演算回路632とLIFOメモリ635に供給する。LIFOメモリ635は、例えば、シフトレジスタを用いて構成され、少なくともチェックノード次数(Check node degree)と量子化ビット数とを乗算した値分のフリップフロップを必要とする。   The register 634 supplies the value D623 from the selector 633 to the Q operation circuit 632 and the LIFO memory 635. The LIFO memory 635 is configured using, for example, a shift register, and requires flip-flops corresponding to a value obtained by multiplying at least the check node degree and the quantization bit number.

LIFOメモリ635は、レジスタ634からの値D623を記憶する。LIFOメモリ635は、既に記憶している、検査行列Hの1行に対応する値D623(同一のチェックノードに属する値D623)を、入力された順番とは逆の順番で最後に記憶されたものから順に、値D625としてQ演算器636とセレクタ637に供給する。   The LIFO memory 635 stores the value D623 from the register 634. The LIFO memory 635 stores the value D623 (value D623 belonging to the same check node) corresponding to one row of the check matrix H, which has been stored last, in the order opposite to the input order. Are sequentially supplied to the Q calculator 636 and the selector 637 as a value D625.

Q演算器636は、LIFOメモリ635からの値D625(Δγt)と、レジスタ641からの値D630と(Δβt-1)を用いて、式(28)にしたがう演算(Q(Δαt,Δβt+1))(以下、λE演算という)を行い、その演算の結果得られる演算結果D626(外部情報ΔλEt)をセレクタ637に供給する。 The Q calculator 636 uses the value D625 (Δγ t ) from the LIFO memory 635 and the value D630 and (Δβ t−1 ) from the register 641 to calculate (Q (Δα t , Δβ) according to the equation (28). t + 1 )) (hereinafter referred to as λ E operation), and an operation result D626 (external information Δλ Et ) obtained as a result of the operation is supplied to the selector 637.

以上の処理と並行して、LIFOメモリ638は、減算器631からの減算値D621を記憶する。なお、LIFOメモリ638は、LIFOメモリ635と同様に、例えば、シフトレジスタを用いて構成され、少なくともチェックノード次数(Check node degree)と量子化ビット数とを乗算した値分のフリップフロップを必要とする。   In parallel with the above processing, the LIFO memory 638 stores the subtraction value D621 from the subtractor 631. Like the LIFO memory 635, the LIFO memory 638 is configured using, for example, a shift register, and requires a flip-flop corresponding to a value obtained by multiplying at least the check node degree and the number of quantization bits. To do.

LIFOメモリ638は、既に記憶している、検査行列Hの1行に対応する減算値D621を、入力された順番とは逆の順番で最後に記憶されたものから順に、値D627としてQ演算器639とセレクタ640に供給する。   The LIFO memory 638 stores the subtraction value D621 corresponding to one row of the check matrix H, which has already been stored, as a value D627 in order from the last stored in the reverse order to the input order, as a Q calculator 639 and selector 640.

Q演算回路639は、LIFOメモリ638から値D627(Δγt)と、レジスタ640から供給される値D630(Δβt+1)とを用いて、式(26)にしたがう演算(Q(Δβt+1,Δγt))(以下、β演算という)を行い、その結果得られる演算結果D628(Δβt)をセレクタ640に供給する。 The Q operation circuit 639 uses the value D627 (Δγ t ) from the LIFO memory 638 and the value D630 (Δβ t + 1 ) supplied from the register 640 to perform an operation (Q (Δβ t + 1 , Δγ t )) (hereinafter referred to as β calculation), and the operation result D628 (Δβ t ) obtained as a result is supplied to the selector 640.

制御信号D611が「1」の場合、即ち検査行列Hの1行に亘る復号途中結果D411kのうちの、最後に計算器611kに供給される復号途中結果D411kに対応する値D627がLIFOメモリ638から出力される場合、セレクタ640は、LIFOメモリ638からの値D627(Δγτ-1)を選択し、値D629(Δβτ-1)として、レジスタ641に出力して格納させる。一方、制御信号D611が「0」の場合、セレクタ640は、Q演算回路639から供給された演算結果D628を選択し、値D629としてレジスタ641に出力して格納させる。 When the control signal D611 is “1”, that is, the value D627 corresponding to the decoding intermediate result D411 k that is finally supplied to the calculator 611 k among the decoding intermediate results D411 k for one row of the check matrix H is LIFO. When output from the memory 638, the selector 640 selects the value D627 (Δγ τ-1 ) from the LIFO memory 638, and outputs the value D629 (Δβ τ-1 ) to the register 641 for storage. On the other hand, when the control signal D611 is “0”, the selector 640 selects the calculation result D628 supplied from the Q calculation circuit 639, and outputs the value D629 to the register 641 for storage.

レジスタ641は、セレクタ640からの値D629を、値D630としてQ演算回路636と639、並びにセレクタ637に供給する。   The register 641 supplies the value D629 from the selector 640 to the Q arithmetic circuits 636 and 639 and the selector 637 as the value D630.

検査行列Hの1行に亘る復号途中結果D411が1つ供給され、最初の復号途中結果D411kに対応する値D630がレジスタ641から出力される場合、制御部612から供給される制御信号D612は、0から1に変化する。次に、検査行列Hの1行に亘る復号途中結果D411kが1つずつ供給され、最後の復号途中結果D411に対応する値D625がLIFOメモリ635から出力されるまで、制御信号D612は0となる。そして、最後の復号途中結果D411kに対応する値D625がLIFOメモリ635から出力される場合、制御信号D612は2となる。 When one decoding intermediate result D411 over one row of the check matrix H is supplied and the value D630 corresponding to the first decoding intermediate result D411 k is output from the register 641, the control signal D612 supplied from the control unit 612 is , Change from 0 to 1. Next, the decoding signal D612 k for one row of the check matrix H is supplied one by one, and the control signal D612 remains 0 until the value D625 corresponding to the last decoding result D411 is output from the LIFO memory 635. Become. When the value D625 corresponding to the final decoding intermediate result D411 k is output from the LIFO memory 635, the control signal D612 becomes 2.

制御信号D612が「1」の場合、セレクタ637は、レジスタ641からの値D625(Δα1)を選択し、値D631(ΔλE1)として、レジスタ642に出力して格納させる。また、制御信号D612が「0」の場合、セレクタ637は、Q演算回路632から供給された演算結果D626を選択し、値D631としてレジスタ634に出力して格納させる。さらに、制御信号D612が「2」の場合、セレクタ637は、LIFOメモリ635からの値D630(Δβτ―1)を選択し、値D631(ΔλEτ-1)として、レジスタ642に出力して格納させる。 When the control signal D612 is “1”, the selector 637 selects the value D625 (Δα 1 ) from the register 641 and outputs the value D631 (Δλ E1 ) to the register 642 for storage. When the control signal D612 is “0”, the selector 637 selects the calculation result D626 supplied from the Q calculation circuit 632, and outputs it to the register 634 as the value D631 for storage. Further, when the control signal D612 is “2”, the selector 637 selects the value D630 (Δβ τ−1 ) from the LIFO memory 635 and outputs the value D631 (Δλ Eτ−1 ) to the register 642 for storage. Let

レジスタ642は、セレクタ637からの値D631(外部情報ΔλEt)を記憶する。レジスタ642は、既に記憶している値D631を、復号途中結果D412k(uj)として出力する。 The register 642 stores the value D631 (external information Δλ Et ) from the selector 637. The register 642 outputs the already stored value D631 as a decoding intermediate result D412 k (u j ).

以上のように、計算器611kでは、第3の演算が行われ、復号途中結果ujが求められる。 As described above, the calculator 611 k performs the third calculation and obtains a decoding intermediate result u j .

上述したように、図18の計算器611kでは、LIFOメモリ635と638が、値D624または減算値D621を格納することにより入出力の順番を逆にするため、チェックノード次数が大きい場合、LIFOメモリ635と638以外の演算を行う論理回路に比べて、LIFOメモリ635と638を構成するメモリの回路規模が膨大になる。 As described above, in the calculator 611 k of FIG. 18, the LIFO memories 635 and 638 reverse the order of input and output by storing the value D624 or the subtraction value D621. Compared to a logic circuit that performs operations other than the memories 635 and 638, the circuit scale of the memory constituting the LIFO memories 635 and 638 becomes enormous.

例えば、各計算器611kのLIFOメモリ635と638がシフトレジスタを用いて構成される場合、LIFOメモリ635と638は、格納する値D624または減算値D621のビット数分のフリップフロップを必要とし、回路規模が膨大になる。また、LIFOメモリ635と638が、LIFOやRAMなどのメモリマクロを用いて構成される場合、一般的に、小さいメモリマクロは、格納する値D624または減算値D621のビット数に対して相対的に大きくなるため、回路規模が膨大になる。 For example, if the LIFO memories 635 and 638 of each calculator 611 k are configured using shift registers, the LIFO memories 635 and 638 require flip-flops corresponding to the number of bits of the stored value D624 or subtraction value D621, The circuit scale becomes enormous. In addition, when the LIFO memories 635 and 638 are configured using memory macros such as LIFO and RAM, generally, a small memory macro is relatively relative to the number of bits of the stored value D624 or subtraction value D621. Since it becomes large, the circuit scale becomes enormous.

なお、上述した図10と図17は、復号装置の実装の例として、各ノードの演算を1つや全てでもない、ある数のノードの演算を同時に行う(partly parallel decoding)復号装置400と600であるが、その他各ノードの演算を1つずつ順次行うことによって、LDPC符号の復号を行う(full serial decoding)復号装置や、全ノードの演算を同時に行うことによって復号を行う(full parallel decoding)復号装置(非特許文献2)も提案されている。   Note that FIGS. 10 and 17 described above are examples of the implementation of the decoding apparatus, in which the decoding apparatuses 400 and 600 perform operations of a certain number of nodes at the same time (partly parallel decoding). There are other decoding devices that perform LDPC code decoding (full serial decoding) by sequentially performing each node operation one by one, or decoding by performing all node operations simultaneously (full parallel decoding) An apparatus (Non-Patent Document 2) has also been proposed.

また、サムプロダクトアルゴリズムを近似して実装する方法なども提案されているが、この方法では、性能の劣化を招いてしまう。   Also, a method of approximating and implementing the sum product algorithm has been proposed, but this method causes performance degradation.

Bahl,Cocke,Jelinek and Raviv,”Optimal decoding of linear codes for minimizing symbol error rate”,IEEE Trans Inf.Theory,vol.IT-20,pp.284-287,Mar.1974Bahl, Cocke, Jelinek and Raviv, “Optimal decoding of linear codes for minimizing symbol error rate”, IEEE Trans Inf. Theory, vol.IT-20, pp.284-287, Mar. 1974 C. Howland and A. Blanksby, ”Parallel Decoding Architectures for Low Density Parity Check Codes”, Symposium on Circuits and Systems, 2001C. Howland and A. Blanksby, “Parallel Decoding Architectures for Low Density Parity Check Codes”, Symposium on Circuits and Systems, 2001

上述した図10の復号装置400では、各計算器412kは、2つのFIFOメモリ438と444から構成されるので、計算器412kの数に比例して、FIFOメモリ438と444の数が多くなる。その結果、計算部412のメモリの回路規模が大きくなり、復号装置400全体の回路規模が大きくなる。 In the decoding apparatus 400 of FIG. 10 described above, each calculator 412 k is composed of two FIFO memories 438 and 444. Therefore, the number of FIFO memories 438 and 444 is larger in proportion to the number of calculators 412 k. Become. As a result, the circuit scale of the memory of the calculation unit 412 increases, and the circuit scale of the entire decoding device 400 increases.

同様に、図17の復号装置600では、各計算器611kが、2つのLIFOメモリ635と638から構成されるので、計算器611kの数に比例して、計算部611のメモリの回路規模が大きくなり、復号装置600全体の回路規模が大きくなる。 Similarly, in the decoding device 600 of FIG. 17, each calculator 611 k is composed of two LIFO memories 635 and 638, so that the circuit scale of the memory of the calculator 611 is proportional to the number of calculators 611 k. Increases, and the circuit scale of the entire decoding apparatus 600 increases.

本発明は、このような状況に鑑みてなされたものであり、LDPC符号の復号性能を損なうことなく、復号装置の回路規模の削減を行うことができるようにするものである。   The present invention has been made in view of such circumstances, and is intended to reduce the circuit scale of a decoding device without impairing the decoding performance of an LDPC code.

本発明の一側面の復号装置は、LDPC(Low Density Parity Check)符号の復号装置であって、前記LDPC符号の復号のためのP(1より大きい整数)個の演算を同時に行う演算手段を備え、前記演算手段は、複数のデータを積算し、前記複数のデータの積算値から、前記複数のデータそれぞれを減算する演算を含むチェックノードの演算を行う前記P個の演算器と、前記積算値から減算する前記複数のデータを記憶する、ビット幅が、前記データの量子化幅のP倍で、ワード数が前記LDPC符号の検査行列の行の重みに等しい1個の遅延用の記憶手段とを備え、前記演算器は、前記記憶手段を用いて、前記複数のデータの積算値から、前記記憶手段で遅延された前記複数のデータそれぞれを減算する復号装置である。A decoding device according to an aspect of the present invention is a decoding device for an LDPC (Low Density Parity Check) code, and includes a calculation unit that simultaneously performs P (integer greater than 1) operations for decoding the LDPC code. The computing means integrates a plurality of data, the P computing units for computing a check node including a computation for subtracting each of the plurality of data from an integrated value of the plurality of data, and the integrated value Storing a plurality of data to be subtracted from, a delay storage unit having a bit width P times the quantization width of the data and a number of words equal to a row weight of the parity check matrix of the LDPC code; The arithmetic unit is a decoding device that subtracts each of the plurality of data delayed by the storage means from an integrated value of the plurality of data using the storage means.

本発明の一側面の復号方法は、LDPC(Low Density Parity Check)符号の復号のためのP(1より大きい整数)個の演算を同時に行う演算手段を備え、前記演算手段は、複数のデータを積算し、前記複数のデータの積算値から、前記複数のデータそれぞれを減算する演算を含むチェックノードの演算を行う前記P個の演算器と、前記積算値から減算する前記複数のデータを記憶する、ビット幅が、前記データの量子化幅のP倍で、ワード数が前記LDPC符号の検査行列の行の重みに等しい1個の遅延用の記憶手段とを備えるLDPC符号の復号装置の前記演算器が、前記記憶手段を用いて、前記複数のデータの積算値から、前記記憶手段で遅延された前記複数のデータそれぞれを減算するステップを含む復号方法である A decoding method according to an aspect of the present invention includes calculation means for simultaneously performing P (integer greater than 1) calculations for decoding LDPC (Low Density Parity Check) codes, and the calculation means includes a plurality of data sets. The P computing units that perform a check node operation including an operation of performing integration and subtracting each of the plurality of data from the integrated value of the plurality of data, and the plurality of data to be subtracted from the integrated value are stored. The operation of an LDPC code decoding device comprising: one storage means for delay, the bit width of which is P times the quantization width of the data and the number of words is equal to the row weight of the parity check matrix of the LDPC code The decoding method includes a step of subtracting each of the plurality of data delayed by the storage means from an integrated value of the plurality of data using the storage means .

本発明の一側面においては、ビット幅が、前記データの量子化幅のP倍で、ワード数が前記LDPC符号の検査行列の行の重みに等しい1個の遅延用の記憶手段において、前記積算値から減算する前記複数のデータが記憶される。そして、前記演算器において、前記記憶手段を用いて、前記複数のデータの積算値から、前記記憶手段で遅延された前記複数のデータそれぞれが減算される。In one aspect of the present invention, in the one storage unit for delay, the bit width is P times the quantization width of the data and the number of words is equal to a row weight of the parity check matrix of the LDPC code. The plurality of data to be subtracted from the value is stored. In the computing unit, each of the plurality of data delayed by the storage means is subtracted from the integrated value of the plurality of data using the storage means.

本発明の一側面によれば、LDPC符号の復号性能を損なうことなく、復号装置の回路規模の削減を行うことができる。   According to one aspect of the present invention, it is possible to reduce the circuit scale of a decoding device without impairing the decoding performance of an LDPC code.

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

図19は、本発明の一実施の形態の、LDPC符号を復号する復号装置800の第1の構成例を示している。なお、図中、図10の復号装置400と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。   FIG. 19 illustrates a first configuration example of a decoding apparatus 800 that decodes an LDPC code according to an embodiment of the present invention. In the figure, portions corresponding to those of the decoding device 400 in FIG. 10 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate.

図19の復号装置800は、復号途中結果格納用メモリ410、サイクリックシフト回路411、復号途中結果格納用メモリ413、サイクリックシフト回路414、6つの計算器4151乃至計算器4156からなる計算部415、受信用メモリ416、および制御部417が設けられている点で、図10の復号装置400と共通するが、計算部412に代えて計算部811が設けられている点で、図10の復号装置400と相違している。 Decoding apparatus of FIG. 19 800, the decoding intermediate result storage memory 410, the cyclic shift circuit 411, the decoding intermediate result storage memory 413, consisting of the cyclic shift circuit 414,6 one calculators 415 1 to calculator 415 6 calculated 10 is the same as the decoding device 400 in FIG. 10 in that a unit 415, a reception memory 416, and a control unit 417 are provided, but in that a calculation unit 811 is provided instead of the calculation unit 412. This is different from the decoding device 400 of FIG.

ここで、図19の復号装置800では、例えば、前述の図9に示した検査行列Hで表されるLDPC符号(符号化率2/3、符号長108)の復号が行われることとする。後述する図27の復号装置800においても同様である。   Here, in decoding apparatus 800 in FIG. 19, for example, the LDPC code (coding rate 2/3, code length 108) represented by check matrix H shown in FIG. 9 described above is decoded. The same applies to a decoding apparatus 800 in FIG. 27 described later.

図19の復号装置800では、計算部811が第1の演算を6個ずつ行い、計算部415が第2の演算を6個ずつ行い、これらの第1の演算と第2の演算とが交互に行われることによって、LDPC符号が復号される。   In the decoding apparatus 800 of FIG. 19, the calculation unit 811 performs six first operations, and the calculation unit 415 performs six second operations. The first operation and the second operation are alternately performed. As a result, the LDPC code is decoded.

即ち、受信用メモリ416には、LDPC符号の受信値U0が受信され、受信データD416(u0i)が供給されて、記憶される。そして、受信用メモリ416は、既に記憶している受信データD416から、第2の演算に必要となる順に6つの受信データD416を読み出し、受信データD4171乃至D4176(D417)として計算部415に供給する。 That is, the reception value U 0 of the LDPC code is received in the reception memory 416, and the reception data D416 (u 0i ) is supplied and stored. Then, the reception memory 416 reads the six reception data D416 in the order necessary for the second calculation from the reception data D416 already stored, and stores the reception data D417 1 to D417 6 (D417) in the calculation unit 415. Supply.

そして、計算部415は、LDPC符号の復号のための第2の演算を行う。   Then, the calculation unit 415 performs a second calculation for decoding the LDPC code.

即ち、復号途中結果格納用メモリ413には、後述する計算部811による第1の演算の結果としての復号途中結果D4121乃至D4126(uj)が格納されており、復号途中結果格納用メモリ413は、既に格納してある復号途中結果D412のうち、6つの復号途中結果D4121乃至D4126を、復号途中結果D4131乃至D4136として、サイクリックシフト回路414と計算部811に供給する。 That is, the decoding intermediate result storage memory 413 stores decoding intermediate results D412 1 to D412 6 (u j ) as a result of the first calculation by the calculation unit 811 described later, and the decoding intermediate result storage memory 413 supplies the six decoding intermediate results D412 1 to D412 6 among the decoding intermediate results D412 already stored as the decoding intermediate results D413 1 to D413 6 to the cyclic shift circuit 414 and the calculation unit 811.

サイクリックシフト回路414は、制御部417からの制御信号D421に基づき、復号途中結果D4131乃至D4136をサイクリックシフトし、その結果を復号途中結果D4141乃至D4146として計算部415に供給する。さらに、計算部415には、制御部417から制御信号D422が供給されるとともに、受信用メモリ416から6つの受信データD4171乃至D4176が供給される。 The cyclic shift circuit 414 cyclically shifts the decoding intermediate results D413 1 to D413 6 based on the control signal D421 from the control unit 417, and supplies the results as decoding intermediate results D414 1 to D414 6 to the calculation unit 415. . Further, the calculation unit 415 is supplied with the control signal D422 from the control unit 417 and is also supplied with the six reception data D417 1 to D417 6 from the reception memory 416.

計算器415は、計算器4151乃至4156から構成され、各計算器415kは前述の図13に示したように構成されている。各計算器415kは、制御信号D422に基づき、サイクリックシフト回路414から供給される復号途中結果D414k(uj)と、受信用メモリ416から供給される受信データD417k(u0i)とを用い、式(5)にしたがって第2の演算を行う。そして、各計算器415kは、第2の演算の結果得られる復号途中結果D415k(v)を、復号途中結果格納用メモリ410に供給する。 The calculator 415 includes calculators 415 1 to 415 6 , and each calculator 415 k is configured as shown in FIG. Based on the control signal D422, each calculator 415 k receives a decoding intermediate result D414 k (u j ) supplied from the cyclic shift circuit 414 and received data D417 k (u 0i ) supplied from the reception memory 416. And the second calculation is performed according to the equation (5). Then, each calculator 415 k supplies the decoding intermediate result D 415 k (v) obtained as a result of the second calculation to the decoding intermediate result storage memory 410.

復号途中結果格納用メモリ410は、計算部415から供給される、6つの第2の演算の結果である復号途中結果D4151乃至D4156(D415)(v)を格納していく。そして、復号途中結果格納用メモリ410は、既に格納してある復号途中結果D415から、6つの復号途中結果D415を、復号途中結果D410として読み出し、サイクリックシフト回路411に供給する。サイクリックシフト回路411は、制御部417から供給される制御信号D418に基づき、6つの復号途中結果D410をサイクリックシフトし、その結果を復号途中結果D4111乃至D4116として計算部811に供給する。 The decoding intermediate result storage memory 410 stores decoding intermediate results D415 1 to D415 6 (D415) (v), which are the results of the six second operations, supplied from the calculation unit 415. Then, the decoding intermediate result storage memory 410 reads six decoding intermediate results D415 as the decoding intermediate results D410 from the already stored decoding intermediate results D415, and supplies them to the cyclic shift circuit 411. The cyclic shift circuit 411 cyclically shifts the six decoding intermediate results D410 based on the control signal D418 supplied from the control unit 417, and supplies the results to the calculation unit 811 as decoding intermediate results D411 1 to D411 6. .

計算部811は、LDPC符号の復号のための第1の演算を行う。   The calculation unit 811 performs a first calculation for decoding the LDPC code.

即ち、計算部811は、制御部417から供給される制御信号D419に基づき、サイクリックシフト回路411から供給される6つの復号途中結果D4111乃至D4116(v)と、復号途中結果格納用メモリ413から供給される、前回の計算部811による第1の演算の結果得られた復号途中結果D4131乃至D4136とを用いて、式(7)と式(8)にしたがって第1の演算を行い、その第1の演算によって求められた6つの復号途中結果D4121乃至D4126(uj)を、復号途中結果格納用メモリ413に供給する。 That is, the calculation unit 811 is based on the control signal D419 supplied from the control unit 417, and includes six decoding intermediate results D411 1 to D411 6 (v) supplied from the cyclic shift circuit 411 and a decoding intermediate result storage memory. Using the decoding intermediate results D413 1 to D413 6 obtained as a result of the first calculation by the previous calculation unit 811 supplied from 413, the first calculation is performed according to Expression (7) and Expression (8). Then, the six decoding intermediate results D412 1 to D412 6 (u j ) obtained by the first calculation are supplied to the decoding intermediate result storage memory 413.

復号途中結果格納用メモリ413は、計算部811から供給される復号途中結果D4121乃至D4126を格納していく。そして、復号途中結果格納用メモリ413に記憶された復号途中結果D412は、上述したように復号途中結果D4131乃至D4136として読み出され、サイクリックシフト回路414と計算部811に供給される。 The decoding intermediate result storage memory 413 stores the decoding intermediate results D412 1 to D412 6 supplied from the calculation unit 811. Then, the decoding intermediate result D412 stored in the decoding intermediate result storage memory 413 is read as decoding intermediate results D413 1 to D413 6 as described above, and supplied to the cyclic shift circuit 414 and the calculation unit 811.

図20は、図19の計算部811の詳細構成例を示すブロック図である。   FIG. 20 is a block diagram illustrating a detailed configuration example of the calculation unit 811 in FIG.

図20の計算部811は、6つの計算器8211乃至8216とFIFOメモリ822から構成される。 Calculation unit 811 of FIG. 20 is composed of six calculators 821 1 to 821 6 and the FIFO memory 822.

図20の計算部811は、6つの復号途中結果D411乃至D4116と6つの復号途中結果D4131乃至D4136とを用いて第1の演算を行う点で、前述の図11の計算部412と共通するが、各計算器4121乃至4126ごとに設けられるFIFOメモリ438と444の代わりに、6つの計算器8211乃至8216に共通の1つのFIFOメモリ822が新たに設けられている点で、図11の計算部412と異なっている。 The calculation unit 811 of FIG. 20 performs the first calculation using the six decoding intermediate results D411 to D411 6 and the six decoding intermediate results D413 1 to D413 6, and the calculation unit 412 of FIG. Although it is common, instead of the FIFO memories 438 and 444 provided for each of the calculators 412 1 to 412 6 , one FIFO memory 822 common to the six calculators 821 1 to 821 6 is newly provided. Thus, the calculation unit 412 of FIG. 11 is different.

即ち、計算部811には、サイクリックシフト回路411から6つの6ビットの復号途中結果D4111乃至D4116が供給されるとともに、復号途中結果格納用メモリ413から6つの6ビットの復号途中結果D4131乃至D4136が供給され、それぞれ、計算器8211乃至8216に1つずつ供給される。また、計算部811には、制御部417から1ビットの制御信号D419が供給され、計算器8211乃至8216に供給される。 That is, six 6-bit decoding intermediate results D411 1 to D411 6 are supplied from the cyclic shift circuit 411 to the calculation unit 811, and six 6-bit decoding intermediate results D413 from the decoding intermediate result storage memory 413. 1 to D413 6 are supplied to the calculators 821 1 to 821 6 , respectively. Further, the calculation unit 811, a control signal D419 for one bit from the control unit 417 is supplied, is supplied to the calculator 821 1 to 821 6.

各計算器821kは、積算前演算器831k、積算器832k、および積算後演算器833kから構成される。 Each calculator 821 k includes a pre-integration calculator 831 k , an integrator 832 k , and a post-integration calculator 833 k .

積算前演算器831kは、6ビットの復号途中結果D411kとD413kを用いて、式(8)の演算とφ(|vi|)の演算(以下、積算前演算という)を行う。そして、積算前演算器831kは、積算前演算の結果得られる6ビットの演算結果D831k(φ(|vi|))をFIFOメモリ822に供給するとともに、積算部833kに供給する。 The pre-integration calculator 831 k performs the calculation of Expression (8) and the calculation of φ (| v i |) (hereinafter referred to as pre-integration calculation) using the 6-bit decoding intermediate results D411 k and D413 k . Then, the pre-integration calculator 831 k supplies a 6-bit calculation result D831 k (φ (| v i |)) obtained as a result of the pre-integration calculation to the FIFO memory 822 and also to the integration unit 833 k .

積算器832kは、積算前演算器831kからの演算結果D831kを用いて、制御信号D419に基づいて、i=1からi=dcまでのΣφ(|vi|)の演算と、i=1からi=dcまでのΠsign(vi)の演算(以下、積算演算という)を行う。積算器832kは、積算演算のi=1からi=dcまでのΣφ(|vi|)の演算の結果得られる9ビットの値D437k(i=1からi=dcまでのΣφ(|vi|))と、i=1からi=dcまでのΠsign(vi)の演算の結果得られる5ビットの値D438k(i=1からi=dcまでのΠsign(vi))とを、積算後演算器833kに供給する。 Integrator 832 k, using the calculation results D831 k from the integrated front calculator 831 k, based on the control signal D419, Sigma] [phi of i = 1 through i = d c and operations, (| | v i) operation Πsign from i = 1 to i = d c (v i) ( hereinafter, referred to as accumulated operation) is performed. Integrator 832 k are, Sigma] [phi from the totalizing i = 1 to i = d c (| v i |) Σφ from the value D437 k (i = 1 of the resulting 9-bit operation until i = d c of (| v i |)) and, i = from 1 to i = d Πsign to c (v i) 5-bit value obtained as a result of the operation of the D438 k (i = 1 to i = d c Πsign (v i )) is supplied to the post-integration computing unit 833 k .

積算後演算器833kは、積算器832kからの値D437k(i=1からi=dcまでのΣφ(|vi|))と値D438k(i=1からi=dcまでのΠsign(vi))、並びにFIFOメモリ822からの6ビットの演算結果D832kを用いて、i=1からi=dc−1までのΣφ(|vi|)に対する、式(7)におけるφ-1(Σφ(|vi|))の演算と、i=1からi=dc−1までのΠsign(vi)の演算(以下、積算後演算という)を行う。そして、積算後演算器833kは、積算後演算の結果得られる復号途中結果D412k(uj)を出力する。 Integrated after calculator 833 k is, (Sigma] [phi of i = 1 through i = d c (| v i |)) value D437 k from multiplier 832 k from the value D438 k (i = 1 to i = d c Πsign (v i )) and the 6-bit calculation result D832 k from the FIFO memory 822, the equation (7) for Σφ (| v i |) from i = 1 to i = d c −1 The calculation of φ -1 (Σφ (| v i |)) and the calculation of Πsign (v i ) from i = 1 to i = d c −1 (hereinafter referred to as post-integration calculation) are performed. Then, the post-integration computing unit 833 k outputs a decoding intermediate result D412 k (u j ) obtained as a result of the post-integration computation.

FIFOメモリ822は、例えば、RAMなどのメモリマクロから構成される。FIFOメモリ822のビット幅は、量子化ビット数と、積算前演算器831kから供給される演算結果D831kの数である6とを乗算した値であり、ワード数は、チェックノード次数である。 The FIFO memory 822 is composed of a memory macro such as a RAM, for example. The bit width of the FIFO memory 822 is a value obtained by multiplying the number of quantization bits by 6, which is the number of calculation results D831 k supplied from the pre-integration calculator 831 k , and the number of words is the check node order. .

FIFOメモリ822は、6つの積算前演算器8311乃至8316からそれぞれ供給される6ビットの6つの演算結果D8311乃至D8316、即ち計36ビットの演算結果D8311乃至D8316を格納し、9クロック分遅延する。そして、FIFOメモリ822は、既に格納されている計36ビットの演算結果D8311乃至D8316を、演算結果D8321乃至D8326として読み出し、6ビットの演算結果D832kを1つずつ積算後演算器8331乃至8336に供給する。 The FIFO memory 822 stores six 6-bit calculation results D831 1 to D831 6 respectively supplied from the six pre-integration calculators 831 1 to 8316, that is, 36-bit calculation results D831 1 to D831 6 , Delay by 9 clocks. Then, FIFO memories 822, already a total 36 bits of the operation result D831 1 to D831 6 stored, the operation result D832 read as 1 to D832 6, one by one calculation result D832 k of 6 bits accumulated after calculator 833 1 to 833 6 .

以上のように、計算部412kでは、式(7)と式(8)にしたがう第1の演算が行われ、復号途中結果ujが求められる。 As described above, the calculation unit 412 k performs the first calculation according to the equations (7) and (8), and obtains a decoding intermediate result u j .

図20の計算部811では、計算器8211乃至8216に共通のFIFOメモリ822が設けられるので、計算器4121乃至4126のそれぞれにFIFOメモリ438と444が設けられる図12の計算部412に比べて、計算部811の回路規模を小さくすることができる。 In the calculation unit 811 of FIG. 20, since the FIFO memories 822 common to the calculators 821 1 to 821 6 are provided, the calculation units 412 of FIG. 12 in which the FIFO memories 438 and 444 are provided in the calculators 412 1 to 412 6 , respectively. As compared with the above, the circuit scale of the calculation unit 811 can be reduced.

即ち、一般的に、RAMなどのメモリマクロは、同一のビット数とワード数で構成される場合、それを構成するメモリマクロの数が少ないほど、回路規模は小さくなる。従って、復号装置800の計算部811において、6つのFIFOメモリ438と444に代えて、共通の1つのFIFOメモリ822を設けることにより、復号装置800の復号性能を損なうことなく、回路規模を削減することができる。   That is, generally, when a memory macro such as a RAM is configured with the same number of bits and the same number of words, the smaller the number of memory macros constituting the memory macro, the smaller the circuit scale. Therefore, in the calculation unit 811 of the decoding device 800, by replacing the six FIFO memories 438 and 444 with one common FIFO memory 822, the circuit scale can be reduced without impairing the decoding performance of the decoding device 800. be able to.

なお、6つのFIFOメモリ438または444のビット数またはワード数が多く、6つのFIFOメモリ438と444を、共通の1つのFIFOメモリ822で構成させることができない場合、1つではなく、計算器821kの数である6よりも少ない複数のFIFOメモリ822で構成させるようにしてもよい。 Note that when the number of bits or words of the six FIFO memories 438 or 444 is large and the six FIFO memories 438 and 444 cannot be configured by a common FIFO memory 822, the calculator 821 is used instead of one. You may make it comprise with several FIFO memory 822 smaller than six which is the number of k .

ここで、図21を参照して、図20の計算器821kと、前述の図12の計算器412kとの関係を説明する。 Here, the relationship between the calculator 821 k in FIG. 20 and the calculator 412 k in FIG. 12 will be described with reference to FIG.

図21は、前述の図12と同一の図である。   FIG. 21 is the same diagram as FIG.

図21に示すように、復号途中結果D411kが入力されてから、FIFOメモリ438と444に演算結果D434または符号ビットD432が供給されるまでの積算前演算を行うブロックAが、積算前演算器831kに対応している。 As shown in FIG. 21, a block A that performs pre-integration computation after the decoding intermediate result D411 k is input until the computation results D434 or the sign bit D432 is supplied to the FIFO memories 438 and 444 It corresponds to 831 k .

また、FIFOメモリ438による遅延と並行してi=1からi=dcまでのΣφ(|vi|)の演算を行うブロックB1と、FIFOメモリ444による遅延と並行してi=1からi=dcまでのΠsign(vi)の演算を行うブロックB2が、積算器832kに対応している。即ち、積算演算を行うブロックB1とB2が、積算器832kに対応している。 Further, Sigma] [phi of in parallel with the delay due to the FIFO memory 438 from i = 1 to i = d c (| v i |) and the block B1 for performing operations, in parallel with the delay due to the FIFO memory 444 from i = 1 i = block B2 for performing the calculation of Πsign (v i) to d c is corresponding to the integrator 832 k. That is, the blocks B1 and B2 that perform integration calculation correspond to the integrator 832 k .

さらに、FIFOメモリ438と444により遅延された値D438またはD445が出力されてから積算後演算を行うブロックCが、積算後演算器833kに対応している。 Further, a block C that performs post-integration computation after the value D438 or D445 delayed by the FIFO memories 438 and 444 is output corresponds to the post-integration computing unit 833 k .

即ち、積算前演算器831kは、図22に示すように構成される。なお、図12と同一のものには、同一の符号を付してあり、説明は適宜省略する。このことは、後述する図23と図24においても同様である。 That is, the pre-integration calculator 831 k is configured as shown in FIG. In addition, the same code | symbol is attached | subjected to the same thing as FIG. 12, and description is abbreviate | omitted suitably. This also applies to FIGS. 23 and 24 described later.

図22の積算前演算器831kは、減算器431とLUT432から構成される。 The pre-integration calculator 831 k in FIG. 22 includes a subtracter 431 and an LUT 432.

減算器431は、式(8)にしたがって、9ビットの復号途中結果D411k(v)から6ビットの復号途中結果D413k(uj)を減算し、その6ビットの減算値D431(vi)を出力する。 Subtractor 431, according to equation (8), 9-bit decoding intermediate results D411 k (v) from 6-bit decoding intermediate results D413 k a (u j) is subtracted, the 6-bit subtraction value D431 (v i ) Is output.

減算器431により出力された6ビットの減算値D431のうち、下位5ビットの絶対値D433(|vi|)がLUT432に供給される。 Of the 6-bit subtraction value D431 output by the subtractor 431, the lower 5-bit absolute value D433 (| v i |) is supplied to the LUT 432.

LUT432は、絶対値D433(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D434(φ(|vi|))を読み出し、出力する。 The LUT 432 reads out the 5-bit calculation result D434 (φ (| v i |)) obtained by performing the calculation of φ (| v i |) in Expression (7) with respect to the absolute value D433 (| v i |). ,Output.

これにより、LUT432により出力された5ビットの演算結果D434を下位5ビットとするとともに、減算器431から出力された減算値D431のうちの、最上位ビットの正負を示す符号ビットD432(sign(vi))を最上位ビットとする合計6ビットが、積算前演算の演算結果D831k(φ(|vi|)×sign(vi))として出力される。 As a result, the 5-bit calculation result D434 output from the LUT 432 is set to the lower 5 bits, and the sign bit D432 (sign (v ()) indicating the sign of the most significant bit in the subtraction value D431 output from the subtractor 431 is displayed. A total of 6 bits with i )) as the most significant bit are output as the calculation result D831 k (φ (| v i |) × sign (v i )) of the pre-integration calculation.

また、積算器832kは、図23に示すように構成される。 Further, the integrator 832 k is configured as shown in FIG.

図23の積算器832kは、レジスタ434、セレクタ435、レジスタ436、レジスタ441、セレクタ443、レジスタ443、加算器851、およびEXOR回路852から構成される。 Multiplier 832 k in FIG. 23 is comprised of a register 434, a selector 435, a register 436, a register 441, a selector 443, register 443, adder 851 and the EXOR circuit 852,.

積算器832kには、積算前演算器831kから6ビットの演算結果D831k(φ(|vi|)×sign(vi))が供給される。そして、6ビットの演算結果D831kのうち下位5ビットが、演算結果D851(φ(|vi|))として、加算器851に供給され、最上位ビットの符号ビットが、符号ビットD852(sign(vi))としてEXOR回路852に供給される。即ち、演算結果D851は、演算結果D434と同一であり、符号ビットD852は符号ビットD432と同一である。 The accumulator 832 k is supplied with a 6-bit calculation result D831 k (φ (| v i |) × sign (v i )) from the pre-accumulation calculator 831 k . Then, the lower 5 bits of the 6-bit operation result D831 k are supplied to the adder 851 as the operation result D851 (φ (| v i |)), and the sign bit of the most significant bit is the sign bit D852 (sign (V i )) and supplied to the EXOR circuit 852. That is, the calculation result D851 is the same as the calculation result D434, and the sign bit D852 is the same as the sign bit D432.

また、積算器832kには、制御部417から制御信号D419が供給され、セレクタ435と442に供給される。 The integrator 832 k is supplied with a control signal D419 from the control unit 417 and is supplied to selectors 435 and 442.

加算器851は、図12の加算器433と同様に、5ビットの演算結果D851(φ(|vi|))とレジスタ434に格納されている9ビットの値D435とを加算することにより、演算結果D851を積算し、その結果得られる9ビットの積算値をレジスタ434に再格納する。 The adder 851 adds the 5-bit calculation result D851 (φ (| v i |)) and the 9-bit value D435 stored in the register 434, similarly to the adder 433 in FIG. The operation result D851 is integrated, and the 9-bit integrated value obtained as a result is stored in the register 434 again.

制御信号D419が「1」である場合、セレクタ435は、レジスタ434に格納されている値、即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411k(v)から求められたφ(|vi|)が積算された9ビットの値D435(i=1からi=dcまでのΣφ(|vi|))を選択し、値D436として、レジスタ436に出力して格納させる。 When the control signal D419 is “1”, the selector 435 obtains the value stored in the register 434, that is, the decoding intermediate result D411 k (v) corresponding to all 1s over one row of the check matrix H. It was φ (| v i |) 9-bit value that is accumulated D435 (Sigma] [phi of i = 1 through i = d c (| v i |)) is selected, as a value D436, and outputs this to the register 436 To store.

制御信号D419が「0」の場合、セレクタ435は、レジスタ436から供給された値D437を選択し、レジスタ436に出力して再格納させる。レジスタ436は、格納している値D436を、9ビットの値D437として、セレクタ435と積算後演算器833kに供給する。 When the control signal D419 is “0”, the selector 435 selects the value D437 supplied from the register 436, outputs it to the register 436, and stores it again. Register 436 supplies and has a value D436 to store, as a 9-bit value D437, the integrated post calculator 833 k and a selector 435.

以上の処理と並行して、EXOR回路852は、図10のEXOR回路440と同様に、レジスタ441に格納されている1ビットの値D442と符号ビットD852との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D441をレジスタ441に再格納する。   In parallel with the above processing, the EXOR circuit 852 calculates the exclusive OR of the 1-bit value D442 stored in the register 441 and the sign bit D852, similarly to the EXOR circuit 440 of FIG. Then, multiplication of the sign bits is performed, and the 1-bit multiplication result D441 is re-stored in the register 441.

制御信号D419が「1」の場合、セレクタ442は、レジスタ441に格納されている値、即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411kから求められた符号ビットD432が乗算された値D442(i=1からi=dcまでのΠsign(vi))を選択し、1ビットの値D443としてレジスタ443に出力して格納させる。 When the control signal D419 is “1”, the selector 442 uses the value stored in the register 441, that is, the sign bit obtained from the decoding intermediate result D411 k corresponding to all 1s over one row of the check matrix H. D432 selects the multiplied value D442 (Πsign of i = 1 through i = d c (v i) ), and stores and outputs a 1-bit value D443 to the register 443.

制御信号D419が「0」の場合、セレクタ442は、レジスタ443から供給された値D444を選択し、レジスタ443に出力して再格納させる。レジスタ443は、格納している値D443を、1ビットの値D444としてセレクタ442と積算後演算器833kに供給する。 When the control signal D419 is “0”, the selector 442 selects the value D444 supplied from the register 443, outputs it to the register 443, and stores it again. Register 443, a and has a value D443 to store supplies a selector 442 on the integrated after calculator 833 k as 1-bit value D444.

さらに、積算後演算器833kは、図24に示すようになる。 Further, the post-integration computing unit 833 k is as shown in FIG.

図24の積算後演算器833kは、LUT439、減算器871、およびEXOR回路872から構成される。 The post-integration computing unit 833 k in FIG. 24 includes an LUT 439, a subtracter 871, and an EXOR circuit 872.

減算器871は、図12の減算器437と同様に構成される。減算器871には、積算器832kから供給される値D437と、FIFOメモリ822から供給される演算結果D832k(φ(|vi|)×sign(vi))のうちの下位5ビットである値D871(φ(|vi|))とが供給される。減算器871は、値D437(i=1からi=dcまでのΣφ(|vi|))から演算結果D871を減算し、その減算結果を、5ビットの減算値D439(i=1からi=dc-1までのΣφ(|vi|))としてLUT439に供給する。 The subtractor 871 is configured in the same manner as the subtracter 437 in FIG. The subtractor 871 includes the lower 5 bits of the value D437 supplied from the accumulator 832 k and the calculation result D832 k (φ (| v i |) × sign (v i )) supplied from the FIFO memory 822. A value D871 (φ (| v i |)) is supplied. Subtractor 871, (Sigma] [phi (from i = 1 to i = d c | v i | )) value D437 is subtracted from the calculation result D871, the subtraction result, the 5 bits from the subtraction value D439 (i = 1 Σφ (| v i |) up to i = d c −1) and supplied to the LUT 439.

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

EXOR回路872は、図10のEXOR回路445と同様に構成される。EXOR回路872には、FIFOメモリ822から演算結果D832kのうちの最上位である符号ビットD872(sign(vi))が供給されるとともに、積算器8321から値D444が供給される。EXOR回路872は、符号ビットD872と値D444との排他的論理和を演算することにより、値D444を、符号ビットD872で除算し、1ビットの除算結果を除算値D446(i=1からi=dc−1までのΠsign(vi))として出力する。 The EXOR circuit 872 is configured similarly to the EXOR circuit 445 of FIG. The EXOR circuit 872, together with the sign bit D872 from the FIFO memory 822 which is the highest among the calculation results D832 k (sign (v i) ) is supplied, the value D444 supplied from the multiplier 832 1. The EXOR circuit 872 calculates the exclusive OR of the sign bit D872 and the value D444, thereby dividing the value D444 by the sign bit D872 and dividing the 1-bit division result by the divided value D446 (i = 1 to i = output as Πsign (v i )) up to d c -1.

以上により、LUT439から出力された5ビットの演算結果D440を下位5ビットとするとともに、EXOR回路445から出力された1ビットの除算値D446を最上位ビットとする合計6ビットが復号途中結果D412k(uj)として出力される。 As described above, the 5-bit operation result D440 output from the LUT 439 is set to the lower 5 bits, and the total 6 bits including the 1-bit division value D446 output from the EXOR circuit 445 as the most significant bit is the decoding intermediate result D412 k Output as (u j ).

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

ステップS50において、サイクリックシフト回路414は、復号途中結果格納用メモリ413から供給された後述するステップS56で格納される6つの復号途中結果D413(uj)を、サイクリックシフトし、計算部415に供給する。 In step S50, the cyclic shift circuit 414 cyclically shifts six decoding intermediate results D413 (u j ) stored in step S56 described later supplied from the decoding intermediate result storage memory 413, and calculates the calculation unit 415. To supply.

具体的には、サイクリックシフト回路414には、復号途中結果格納用メモリ413から6つの復号途中結果D4131乃至D4136が供給されるとともに、制御部417から、その復号途中結果D413に対応する検査行列の1が検査行列において元となる単位行列などを幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D421が供給される。サイクリックシフト回路414は、制御信号D421を元に、6つの復号途中結果D4131乃至D4136をサイクリックシフトし(並べ替え)、その結果を復号途中結果D4141乃至D4146として、計算部415に供給する。 Specifically, the cyclic shift circuit 414 is supplied with six decoding intermediate results D413 1 to D413 6 from the decoding intermediate result storage memory 413, and corresponds to the decoding intermediate result D413 from the control unit 417. A control signal D421 representing information (Matrix data) indicating how many 1s of the parity check matrix is the cyclic shift of the original unit matrix in the parity check matrix is supplied. The cyclic shift circuit 414 cyclically shifts (rearranges) the six decoding intermediate results D413 1 to D413 6 based on the control signal D421, and the calculation results are used as decoding intermediate results D414 1 to D414 6 as a calculation unit 415. To supply.

なお、受信用メモリ416から供給された受信データD417に対して、まだ第1の演算が行われておらず、復号途中結果格納用メモリ413に復号途中結果D412が格納されていない場合、計算部415は、復号途中結果ujを初期値に設定する。 If the first calculation has not yet been performed on the reception data D417 supplied from the reception memory 416 and the decoding intermediate result D412 is not stored in the decoding intermediate result storage memory 413, the calculation unit In step S415, the decoding intermediate result u j is set to an initial value.

ステップS50の処理後は、ステップS51に進み、計算部415は、第2の演算を行い、その演算の結果である復号途中結果D4151乃至D4156を復号途中結果格納用メモリ410に供給する。 After the processing of step S50, the process proceeds to step S51, where the calculation unit 415 performs the second calculation and supplies the decoding intermediate results D415 1 to D415 6 which are the results of the calculation to the decoding intermediate result storage memory 410.

具体的には、計算部415には、ステップS50でサイクリックシフト回路414から6つの復号途中結果D4141乃至D4146が供給されるとともに、受信データ用メモリ416から6つの受信データD4171乃至D4176が供給され、復号途中結果D4151乃至D4156と受信データD4171乃至D4176が、計算部415の計算器4151乃至4156それぞれに1つずつ供給される。さらに、計算部415には、制御部417から制御信号D422が供給され、その制御信号D422が計算器4151乃至4156に供給される。 Specifically, the calculation unit 415 is supplied with the six decoding intermediate results D414 1 to D414 6 from the cyclic shift circuit 414 in step S50 and the six reception data D417 1 to D417 from the reception data memory 416. 6 is supplied, and decoding results D415 1 to D415 6 and received data D417 1 to D417 6 are supplied to the calculators 415 1 to 415 6 of the calculation unit 415 one by one. Further, a control signal D422 is supplied to the calculation unit 415 from the control unit 417, and the control signal D422 is supplied to the calculators 415 1 to 415 6 .

各計算器415kは、復号途中結果D414kと受信データD417kを用いて、制御信号D422に基づいて、式(5)にしたがう第2の演算を行い、その演算の結果得られる検査行列の列に対応する復号途中結果D415k(v)を復号途中結果格納用メモリ410に供給する。 Each calculator 415 k performs a second calculation according to the equation (5) based on the control signal D422 using the decoding intermediate result D414 k and the received data D417 k, and the check matrix obtained as a result of the calculation is calculated. The decoding intermediate result D415 k (v) corresponding to the column is supplied to the decoding intermediate result storage memory 410.

ステップS51の処理後は、ステップS52に進み、復号途中結果格納用メモリ410は、ステップS51で計算部415から供給された6つの復号途中結果D4151乃至D4156を、同一アドレスに格納し、ステップS53に進む。 After the process of step S51, the process proceeds to step S52, and the decoding intermediate result storage memory 410 stores the six decoding intermediate results D415 1 to D415 6 supplied from the calculation unit 415 in step S51 at the same address. Proceed to S53.

ステップS53において、制御部417は、計算部415により、検査行列の列に対応する全ての復号途中結果D415が演算されたかどうかを判定し、全ての復号途中結果D415が演算されていないと判定した場合、ステップS50に戻り、上述した処理を繰り返す。   In step S53, the control unit 417 determines whether all the decoding intermediate results D415 corresponding to the columns of the check matrix are calculated by the calculation unit 415, and determines that all the decoding intermediate results D415 are not calculated. If so, the process returns to step S50 and the above-described processing is repeated.

一方、ステップS53において、制御部417は、計算部415により、検査行列の列に対応する全ての復号途中結果D415が演算されたと判定した場合、ステップS54に進み、サイクリックシフト回路411は、復号途中結果格納用メモリ410から供給される復号途中結果D410(v)をサイクリックシフトする。   On the other hand, in step S53, when the control unit 417 determines that all the decoding intermediate results D415 corresponding to the columns of the check matrix have been calculated by the calculation unit 415, the control unit 417 proceeds to step S54, and the cyclic shift circuit 411 The decoding intermediate result D410 (v) supplied from the intermediate result storage memory 410 is cyclically shifted.

具体的には、サイクリックシフト回路411には、復号途中結果格納用メモリ410から6つの復号途中結果D410が供給されるとともに、制御部417から、その復号途中結果D410に対応する検査行列の1が検査行列において元となる単位行列などを幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D418が供給される。サイクリックシフト回路411は、制御信号D418を元に、6つの復号途中結果D410をサイクリックシフトし(並べ替え)、その結果を復号途中結果D4111乃至D4116として、計算部811に供給する。 Specifically, the cyclic shift circuit 411 is supplied with six decoding intermediate results D410 from the decoding intermediate result storage memory 410, and from the control unit 417, 1 of the parity check matrix corresponding to the decoding intermediate result D410. Is supplied with a control signal D418 representing information (Matrix data) indicating how many cyclic shifts of the original unit matrix in the parity check matrix. The cyclic shift circuit 411 cyclically shifts (rearranges) the six decoding intermediate results D410 based on the control signal D418, and supplies the results as decoding intermediate results D411 1 to D411 6 to the calculation unit 811.

ステップS54の処理後は、ステップS55に進み、計算部811は、6個の第1の演算を同時に行い、その演算結果である復号途中結果D4121乃至D4126を復号途中結果格納用メモリ413に供給する。なお、この第1の演算の処理の詳細については、図26を参照して後述する。 After the process of step S54, the process proceeds to step S55, where the calculation unit 811 performs the six first calculations simultaneously, and the decoding intermediate results D412 1 to D412 6 as the calculation results are stored in the decoding intermediate result storage memory 413. Supply. Details of the processing of the first calculation will be described later with reference to FIG.

ステップS55の処理後は、ステップS56に進み、復号途中結果格納用メモリ413は、ステップS55で計算部412から供給された6つの復号途中結果D4121乃至D4126を、同一のアドレスに格納し、ステップS57に進む。 After the process of step S55, the process proceeds to step S56, and the decoding intermediate result storage memory 413 stores the six decoding intermediate results D412 1 to D412 6 supplied from the calculation unit 412 in step S55 at the same address, Proceed to step S57.

ステップS57において、制御部417は、計算部412により、検査行列の全ての1に対応する復号途中結果D412が演算されたかどうかを判定し、全ての復号途中結果D412が演算されていないと判定した場合、ステップS54に戻り、上述した処理を繰り返す。   In step S57, the control unit 417 determines whether or not the decoding intermediate results D412 corresponding to all 1s of the check matrix have been calculated by the calculation unit 412 and determines that all the decoding intermediate results D412 have not been calculated. If so, the process returns to step S54 and the above-described processing is repeated.

一方、ステップS57において、制御部417は、計算部412により、全ての1に対応する復号途中結果D412が演算されたと判定した場合、処理を終了する。   On the other hand, when the control unit 417 determines in step S57 that the calculation unit 412 has calculated the intermediate decoding results D412 corresponding to all 1, the processing ends.

なお、復号装置400は、復号回数だけ図25の復号処理を繰り返し行ない、最後の第2の演算の結果得られる復号途中結果D415が、最終的な復号結果として出力される。   Note that the decoding device 400 repeats the decoding process of FIG. 25 as many times as the number of decoding times, and a decoding intermediate result D415 obtained as a result of the last second calculation is output as a final decoding result.

図26は、図25のステップS55の第1の演算処理を説明するフローチャートである。なお、この第1の演算処理は、各計算器812kごとに行われる。 FIG. 26 is a flowchart for describing the first calculation process in step S55 of FIG. This first calculation process is performed for each calculator 812 k .

ステップS61において、図25のステップS54でサイクリックシフト回路411から供給される復号途中結果D411k(v)と、図25のステップS56で既に格納された前回の計算部811による第1の演算の結果得られた復号途中結果D413k(uj)とを用いて、積算前演算を行い、その結果得られる演算結果D831kを共通のFIFOメモリ822と積算器832に供給する。 In step S61, the decoding intermediate result D411 k (v) supplied from the cyclic shift circuit 411 in step S54 of FIG. 25 and the first calculation by the previous calculation unit 811 already stored in step S56 of FIG. Using the obtained decoding intermediate result D413 k (u j ), the pre-integration calculation is performed, and the calculation result D831 k obtained as a result is supplied to the common FIFO memory 822 and the accumulator 832.

ステップS61の処理後は、ステップS62に進み、FIFOメモリ822は、ステップS61で供給される演算結果D831kを格納し、9クロック分の遅延を行うとともに、積算器832kは、制御部417からの制御信号D419と演算結果D831kを用いて、積算演算を行い、その結果得られる値D437kとD444kを積算後演算器833kに供給する。 After the processing of step S61, the process proceeds to step S62, and the FIFO memory 822 stores the calculation result D831 k supplied in step S61, delays 9 clocks, and the integrator 832 k The control signal D419 and the calculation result D831 k are used for the integration calculation, and the values D437 k and D444 k obtained as a result are supplied to the post-integration calculator 833 k .

ステップS63の処理後は、ステップS64に進み、積算後演算器833kは、ステップS62で供給される値D437とD444、並びにFIFOメモリ822から供給される演算結果D832k(D831k)を用いて、積算後演算を行い、その演算の結果得られる復号途中結果D412k(uj)を復号途中結果格納用メモリ413に供給して、処理を終了する。 After the process at step S63, the process proceeds to step S64, the integrated post calculator 833 k is step S62 supplied values D437 and at D444, and by using the calculation result D832 k (D831 k) supplied from the FIFO memory 822 Then, the post-integration calculation is performed, the decoding intermediate result D412 k (u j ) obtained as a result of the calculation is supplied to the decoding intermediate result storage memory 413, and the process ends.

図27は、本発明の一実施の形態の、LDPC符号を復号する復号装置800の第2の構成例を示している。なお、図中、図17の復号装置600と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。   FIG. 27 illustrates a second configuration example of a decoding apparatus 800 that decodes an LDPC code according to an embodiment of the present invention. In the figure, portions corresponding to those of the decoding device 600 of FIG. 17 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate.

図27の復号装置800は、復号途中結果格納用メモリ410、サイクリックシフト回路411、復号途中結果格納用メモリ413、サイクリックシフト回路414、6つの計算器4151乃至計算器4156からなる計算部415、受信用メモリ416、および制御部612が設けられている点で、図17の復号装置600と共通するが、計算部611に代えて計算部1001が新たに設けられている点で、図17の復号装置600と相違している。 Decoding apparatus of FIG. 27 800, the decoding intermediate result storage memory 410, the cyclic shift circuit 411, the decoding intermediate result storage memory 413, consisting of the cyclic shift circuit 414,6 one calculators 415 1 to calculator 415 6 calculated 17 is the same as the decoding device 600 in FIG. 17 in that a receiving unit 415, a receiving memory 416, and a control unit 612 are provided. However, a calculating unit 1001 is newly provided instead of the calculating unit 611. This is different from the decoding device 600 of FIG.

図27の復号装置800では、計算部1001がBCJRアルゴリズムに基づいて、第3の演算を6個ずつ行い、計算部415が第2の演算を6個ずつ行い、これらの第3の演算と第2の演算とが交互に行われることによって、LDPC符号が復号される。   In the decoding apparatus 800 of FIG. 27, the calculation unit 1001 performs six third operations on the basis of the BCJR algorithm, and the calculation unit 415 performs six second operations on each basis. The LDPC code is decoded by alternately performing the operation of 2.

即ち、計算部1001には、LDPC符号の復号のための第3の演算を行う。サイクリックシフト回路411から、計算部415による第2の演算の結果得られた6つの復号途中結果D4111乃至D4116(v)が供給されるとともに、復号途中結果格納用メモリ413から、前回の計算部1001による第3の演算の結果得られた6つの復号途中結果D4131乃至D4136(uj)が供給される。また、計算部1001には、制御部612から制御信号D611とD612が供給される。 That is, the calculation unit 1001 performs a third calculation for decoding the LDPC code. Six cyclic intermediate results D411 1 to D411 6 (v) obtained as a result of the second calculation by the calculation unit 415 are supplied from the cyclic shift circuit 411, and the previous decoding result storage memory 413 stores Six decoding intermediate results D413 1 to D413 6 (u j ) obtained as a result of the third calculation by the calculation unit 1001 are supplied. Further, control signals D611 and D612 are supplied from the control unit 612 to the calculation unit 1001.

計算部811は、制御信号D611に基づき、6つの復号途中結果D4111乃至D4116(v)と復号途中結果D4131乃至D4136とを用いて、式(25)乃至(27)にしたがうチェックノード演算と、式(8)にしたがう演算とからなる第3の演算を行い、その第3の演算によって求められた6つの復号途中結果D4121乃至D4126(uj)を、復号途中結果格納用メモリ413に供給する。 Calculation unit 811, based on the control signal D611, using six decoding intermediate results D411 1 to D411 6 and (v) decoding intermediate results D413 1 to D413 6, check nodes according to equation (25) to (27) A third calculation consisting of the calculation and the calculation according to the equation (8) is performed, and the six decoding intermediate results D412 1 to D412 6 (u j ) obtained by the third calculation are used for storing the decoding intermediate result This is supplied to the memory 413.

図28は、図27の計算部1001の詳細構成例を示すブロック図である。   FIG. 28 is a block diagram illustrating a detailed configuration example of the calculation unit 1001 of FIG.

図28の計算部1001は、6つの計算器1110k、並びにLIFOメモリ1111と1112から構成される。 The calculation unit 1001 in FIG. 28 includes six calculators 1110 k and LIFO memories 1111 and 1112.

図28の計算部1001は、6つの復号途中結果D411乃至D4116を用いて、6つのD4121乃至D4126を同時に求める点で、前述の図17の計算部611と共通するが、各計算器6111乃至6116ごとに設けられるLIFOメモリ635と638の代わりに、6つの計算器11101乃至11106に共通のLIFOメモリ1111と1112が新たに設けられている点で、図17の計算部611と異なっている。 The calculation unit 1001 in FIG. 28 is common to the calculation unit 611 in FIG. 17 described above in that the six D412 1 to D412 6 are obtained simultaneously using the six decoding intermediate results D411 to D411 6 . 17 instead of the LIFO memories 635 and 638 provided for each of the 611 1 to 611 6 , the LIFO memories 1111 and 1112 common to the six calculators 1110 1 to 1110 6 are newly provided. 611 is different.

即ち、計算部1001には、サイクリックシフト回路411から6つの6ビットの復号途中結果D4111乃至D4116が供給されるとともに、復号途中結果格納用メモリ413から6つの6ビットの復号途中結果D4131乃至D4136が供給され、それぞれ、計算器11101乃至11106に1つずつ供給される。また、計算部811には、制御部612から制御信号D611とD612が供給され、計算器11101乃至11106に供給される。 That is, six 6-bit decoding intermediate results D411 1 to D411 6 are supplied from the cyclic shift circuit 411 to the calculation unit 1001, and six 6-bit decoding intermediate results D413 are received from the decoding intermediate result storage memory 413. 1 to D413 6 are supplied to the calculators 1110 1 to 1110 6 , respectively. Further, control signals D611 and D612 are supplied from the control unit 612 to the calculation unit 811 and supplied to the calculators 1110 1 to 1110 6 .

各計算器1110kは、減算器1121k、α演算器1122k、β演算器1123k、およびλE演算器1124kから構成される。 Each calculator 1110 k includes a subtractor 1121 k , an α calculator 1122 k , a β calculator 1123 k , and a λ E calculator 1124 k .

減算器1121kは、6ビットの復号途中結果D411k(v)とD413k(uj)を用いて、式(8)の演算を行う。そして、減算器1121kは、式(8)の演算の結果得られる6つの減算値D6211乃至D6216(vi)(Δγt)を、α演算器1122kに供給するとともに、減算値D6211乃至D6216をLIFOメモリ1112に供給する。 Subtractor 1121 k, using the 6-bit decoding intermediate results D411 k (v) and D413 k (u j), performing the calculation of Equation (8). Then, the subtractor 1121 k supplies the six subtraction values D621 1 to D621 6 (v i ) (Δγ t ) obtained as a result of the calculation of Expression (8) to the α arithmetic unit 1122 k and the subtraction value D621. 1 to D621 6 are supplied to the LIFO memory 1112.

α演算器1122kは、制御信号D611に基づいて、減算器1121kからの減算値D621kを用いて、α演算を行い、その結果得られる値D624k(Δαt)をLIFOメモリ1111に供給する。 The α calculator 1122 k performs α calculation using the subtraction value D621 k from the subtractor 1121 k based on the control signal D611, and supplies the resultant value D624 k (Δα t ) to the LIFO memory 1111. To do.

LIFOメモリ1111は、例えば、RAMなどのメモリマクロから構成される。LIFOメモリ1111のビット幅は、量子化ビット数と、α演算器1122kから供給される値D624kの数である6とを乗算した値であり、ワード数は、チェックノード次数である。LIFOメモリ1111は、α演算器11221乃至11226から供給される値D6241乃至D6246を記憶する。 The LIFO memory 1111 is composed of a memory macro such as a RAM, for example. The bit width of the LIFO memory 1111 is a value obtained by multiplying the number of quantization bits by 6, which is the number of values D624 k supplied from the α calculator 1122 k , and the number of words is the check node order. LIFO memory 1111 stores a value D624 1 to D624 6 supplied from α calculator 1122 1 to 1122 6.

LIFOメモリ1111は、既に記憶している値D6241乃至D6246を、入力された順番とは逆の順番に、値D6251乃至D6256として読み出し、1つずつ、λE演算器11241乃至11246に供給する。 LIFO memory 1111, already by that value D624 1 to D624 6 which stores, in reverse order of the input order, read the value D625 1 to D625 6, one by 1, lambda E calculator 1124 1 to 1124 Supply to 6 .

以上の処理と並行して、LIFOメモリ1112は、減算器11211乃至11216から供給される6つの減算値D6211乃至D6216(Δγt)を格納する。なお、LIFOメモリ1112は、LIFOメモリ1111と同様に、例えば、RAMなどのメモリマクロから構成され、LIFOメモリ1111のビット幅は、量子化ビット数と、減算器1121kから供給される減算値D621kのビット数である6とを乗算した値であり、ワード数は、チェックノード次数である。 In parallel with the above processing, LIFO memory 1112 stores the subtractor 1121 1 to 1121 of 6 six supplied from the subtraction value D621 1 to D621 6 (Δγ t). Incidentally, LIFO memory 1112, similarly to the LIFO memory 1111, for example, is composed of the memory macros of RAM, etc. bit width of LIFO memory 1111, the subtraction value is supplied and the number of quantization bits, a subtracter 1121 k D621 This is a value obtained by multiplying 6 which is the number of bits of k , and the number of words is the check node order.

LIFOメモリ1112は、既に記憶している6つの減算値D6211乃至D6216を、入力された順番とは逆の順番に、値D6171乃至D6176として読み出し、1つずつ、β演算器11231乃至11236に供給する。 LIFO memory 1112, already six for storing the subtraction value D621 1 to D621 6, the reverse order of the input order, read the value D617 1 to D617 6, one by 1, beta calculator 1123 1 or supplied to the 1123 6.

β演算器1123kは、制御信号D611に基づいて、値D617k(Δγt)を用いて、β演を行い、その結果得られる値D630k(Δβt)をλE演算器1124kに供給する。 The β calculator 1123 k performs β operation using the value D617 k (Δγ t ) based on the control signal D611, and supplies the resulting value D630 k (Δβ t ) to the λ E calculator 1124 k . To do.

λE演算器1124kは、制御信号D611に基づき、LIFOメモリ113からの値D625k(Δγt)とβ演算器1123kからの値D630k(Δβt-1)とを用いて、λE演算を行い、その演算の結果得られる復号途中結果D412k(外部情報ΔλEt)(uj)を出力する。 The λ E computing unit 1124 k uses the value D625 k (Δγ t ) from the LIFO memory 113 and the value D630 k (Δβ t−1 ) from the β computing unit 1123 k based on the control signal D611, and λ E An operation is performed, and a decoding intermediate result D412 k (external information Δλ Et ) (u j ) obtained as a result of the operation is output.

以上のように、計算部1101では、第3の演算が行われ、復号途中結果ujが求められる。 As described above, the calculation unit 1101 performs the third calculation and obtains the decoding intermediate result u j .

図28の計算部1101では、計算器11101乃至11106に共通のLIFOメモリ1111と1112が設けられるので、計算器6111乃至6116のそれぞれにLIFOメモリ635と638が設けられる図17の計算部611に比べて、計算部1001の回路規模を小さくすることができる。 In the calculation unit 1101 in FIG. 28, the LIFO memories 1111 and 1112 common to the calculators 1110 1 to 1110 6 are provided. Therefore, the LIFO memories 635 and 638 are provided in the calculators 611 1 to 611 6 , respectively. Compared to the unit 611, the circuit scale of the calculation unit 1001 can be reduced.

即ち、一般的に、RAMなどのメモリマクロは、同一のビット数とワード数で構成される場合、それを構成するメモリマクロの数が少ないほど、回路規模は小さくなる。従って、復号装置800の計算部1101において、6つのLIFOメモリ635と638に代えて、共通のLIFOメモリ1111と1112を設けることにより、復号装置800の復号性能を損なうことなく、回路規模を削減することができる。   That is, generally, when a memory macro such as a RAM is configured with the same number of bits and the same number of words, the smaller the number of memory macros constituting the memory macro, the smaller the circuit scale. Therefore, in the calculation unit 1101 of the decoding device 800, instead of the six LIFO memories 635 and 638, the common LIFO memories 1111 and 1112 are provided, thereby reducing the circuit scale without impairing the decoding performance of the decoding device 800. be able to.

なお、6つのLIFOメモリ635または638のビット数またはワード数が多く、6つのLIFOメモリ635と638を、共通のLIFOメモリ1111と1112で構成させることができない場合、1つずつではなく、計算器1110kの数である6よりも少ない複数ずつのLIFOメモリ1111と1112で構成させるようにしてもよい。 If the number of bits or words of the six LIFO memories 635 or 638 is large and the six LIFO memories 635 and 638 cannot be constituted by the common LIFO memories 1111 and 1112, the calculator is not one by one. A plurality of LIFO memories 1111 and 1112 which are smaller than 6 which is the number of 1110 k may be used.

ここで、図29を参照して、図28の計算器1110kと、前述の図18の計算器611kとの関係を説明する。 Here, with reference to FIG. 29, the relationship between the calculator 1110 k of FIG. 28 and the calculator 611 k of FIG.

図29は、前述の図18と同一の図である。   FIG. 29 is the same as FIG. 18 described above.

図29に示すように、復号途中結果D411kが入力されてから、LIFOメモリ638に減算値D621が供給されるまでの式(8)の演算を行うブロックPが、計算器1110kの減算器1121kに対応している。 As shown in FIG. 29, a block P that performs the calculation of Expression (8) from when the decoding intermediate result D411 k is input until the subtraction value D621 is supplied to the LIFO memory 638 is a subtracter of the calculator 1110 k . It corresponds to 1121 k .

また、式(8)の演算が行われてから、LIFOメモリ635に値D624が供給されるまでのα演算を行うブロックQが、α演算器1122kに対応している。 Also, the block Q that performs the α calculation after the calculation of Expression (8) until the value D624 is supplied to the LIFO memory 635 corresponds to the α calculator 1122 k .

さらに、LIFOメモリ638から値D627が出力されてから、Q演算器636に値D630が供給されるまでのβ演算を行うブロックRが、β演算器1123kに対応している。 Further, a block R that performs β calculation from when the value D627 is output from the LIFO memory 638 to when the value D630 is supplied to the Q calculator 636 corresponds to the β calculator 1123 k .

また、Q演算器636に値D625と値D630が供給されてから、復号途中結果D412kを出力するまでのλE演算を行うブロックSが、λE演算器1124kに対応している。 Further, the block S that performs the λ E calculation from when the value D625 and the value D630 are supplied to the Q calculator 636 until the decoding intermediate result D412 k is output corresponds to the λ E calculator 1124 k .

即ち、減算器1121kは、図30に示すように構成される。なお、図18と同一のものには、同一の符号を付してあり、説明は適宜省略する。このことは、後述する図31乃至図33においても同様である。 That is, the subtractor 1121 k is configured as shown in FIG. In addition, the same code | symbol is attached | subjected to the same thing as FIG. 18, and description is abbreviate | omitted suitably. This also applies to FIGS. 31 to 33 described later.

図30の減算器1121kは、減算器631から構成される。 The subtractor 1121 k in FIG. 30 includes a subtracter 631.

減算器1121kには、サイクリックシフト回路411から供給される6つの復号途中結果D4111乃至D4116(v)のうちの、1つの復号途中結果D411kが供給されるとともに、復号途中結果格納用メモリ413から供給される、前回の計算部1001による演算の結果である6つの復号途中結果D4131乃至D4136(uj)のうちの、1つの復号途中結果D413kが供給される。 The subtractor 1121 k is supplied with one decoding intermediate result D411 k out of the six decoding intermediate results D411 1 to D411 6 (v) supplied from the cyclic shift circuit 411 and stores the decoding intermediate result. One decoding intermediate result D413 k out of the six decoding intermediate results D413 1 to D413 6 (u j ), which is the result of the previous calculation performed by the calculation unit 1001, is supplied from the memory 413.

減算器631は、式(8)にしたがって、復号途中結果D411k(v)から復号途中結果D413k(uj)を減算し、その結果得られる減算値D621k(vi)(Δγt)をLIFOメモリ1112とα演算器1122kに供給する。 Subtractor 631, the formula (8) in accordance with the decoded intermediate result by subtracting the decoded intermediate results D413 k (u j) from D411 k (v), the resulting subtraction value D621 k (v i) (Δγ t) Is supplied to the LIFO memory 1112 and the α calculator 1122 k .

また、α演算器1122kは、図31に示すように構成される。図31のα演算器1122kは、Q演算回路632、セレクタ633、およびレジスタ634から構成される。 Further, the α calculator 1122 k is configured as shown in FIG. The α calculator 1122 k in FIG. 31 includes a Q calculation circuit 632, a selector 633, and a register 634.

Q演算回路632は、減算器1121kからの減算値D621k(Δγt-1)と、レジスタ634から供給される値D624k(Δαt-1)とを用いて、α演算(Q(Δαt-1,Δγt-1))を行い、その結果得られる演算結果D622(Δαt)をセレクタ633に供給する。 The Q calculation circuit 632 uses the subtraction value D621 k (Δγ t−1 ) from the subtractor 1121 k and the value D624 k (Δα t−1 ) supplied from the register 634 to perform an α calculation (Q (Δα t−1 , Δγ t−1 )), and the operation result D622 (Δα t ) obtained as a result is supplied to the selector 633.

制御信号D611が「1」の場合、セレクタ633は、減算器631からの減算値D621(Δγ1)を選択し、値D623(Δα1)として、レジスタ633に出力して格納させる。一方、制御信号D611が「0」の場合、セレクタ633は、Q演算回路632から供給された演算結果D622を選択し、値D623としてレジスタ634に出力して格納させる。 When the control signal D611 is “1”, the selector 633 selects the subtraction value D621 (Δγ 1 ) from the subtractor 631, outputs the value D623 (Δα 1 ) to the register 633 for storage. On the other hand, when the control signal D611 is “0”, the selector 633 selects the calculation result D622 supplied from the Q calculation circuit 632, and outputs the value D623 to the register 634 for storage.

レジスタ634は、セレクタ633からの値D623を、値D624kとして、Q演算回路632とLIFOメモリ1111に供給する。 Register 634 supplies the value D623 from the selector 633 as a value D624 k, the Q calculation circuit 632 and the LIFO memory 1111.

さらに、β演算器1123kは、図32に示すように構成される。図32のβ演算器1123kは、Q演算回路639、セレクタ640、およびレジスタ641から構成される。 Further, the β calculator 1123 k is configured as shown in FIG. The β calculator 1123 k in FIG. 32 includes a Q calculation circuit 639, a selector 640, and a register 641.

β演算器1123kには、LIFOメモリ1112から値D627kが供給される。 The value D627 k is supplied from the LIFO memory 1112 to the β calculator 1123 k .

Q演算回路639は、LIFOメモリ1112からの値D627(Δγt)と、レジスタ641から供給される値D630k(Δβt)とを用いて、β演算(Q(Δβt+1,Δγt))を行い、その結果得られる演算結果D628(Δβt)をセレクタ640に供給する。 The Q calculation circuit 639 uses the value D627 (Δγ t ) from the LIFO memory 1112 and the value D630 k (Δβ t ) supplied from the register 641 to perform a β calculation (Q (Δβ t + 1 , Δγ t ). ) And the operation result D628 (Δβ t ) obtained as a result is supplied to the selector 640.

制御信号D611が「1」の場合、セレクタ640は、LIFOメモリ638からの値D627k(Δγτ-1)を選択し、値D629(Δβτ-1)として、レジスタ641に出力して格納させる。一方、制御信号D611が「0」の場合、セレクタ640は、Q演算回路639から供給された演算結果D628(Δβt)を選択し、値D629(Δβt)としてレジスタ641に出力して格納させる。 When the control signal D611 is “1”, the selector 640 selects the value D627 k (Δγ τ−1 ) from the LIFO memory 638, and outputs the value D629 (Δβ τ−1 ) to the register 641 for storage. . On the other hand, when the control signal D611 is “0”, the selector 640 selects the calculation result D628 (Δβ t ) supplied from the Q calculation circuit 639, and outputs it to the register 641 as the value D629 (Δβ t ) for storage. .

レジスタ641は、セレクタ640からの値D629を、値D630k(Δβt+1)として、Q演算回路639とλE演算器1124kに供給する。 The register 641 supplies the value D629 from the selector 640 as the value D630 k (Δβ t + 1 ) to the Q calculation circuit 639 and the λ E calculator 1124 k .

また、λE演算器1124kは、図33に示すように構成される。λE演算器1124kは、Q演算回路636、セレクタ637、およびレジスタ642から構成される。 The λ E computing unit 1124 k is configured as shown in FIG. The λ E calculator 1124 k includes a Q calculation circuit 636, a selector 637, and a register 642.

λE演算器1124kには、LIFOメモリ1111から値D625k(Δαt)が供給されるとともに、β演算器1123kから値D630k(Δβt+1)が供給される。 A value D625 k (Δα t ) is supplied from the LIFO memory 1111 to the λ E calculator 1124 k , and a value D630 k (Δβ t + 1 ) is supplied from the β calculator 1123 k .

Q演算回路636は、値D625kとD630kを用いて、λE演算(Q(Δαt,Δβt+1))を行い、その演算の結果得られる演算結果D626(外部情報ΔλEt)をセレクタ637に供給する。 The Q calculation circuit 636 performs λ E calculation (Q (Δα t , Δβ t + 1 )) using the values D625 k and D630 k, and calculates the calculation result D626 (external information Δλ Et ) obtained as a result of the calculation. This is supplied to the selector 637.

制御信号D611が「1」の場合、セレクタ637は、β演算器1123kからの値D625k(Δα1)を選択し、値D631(外部情報ΔλEt)として、レジスタ642に出力して格納させる。また、制御信号D611が「0」の場合、セレクタ633は、Q演算回路632から供給された演算結果D626を選択し、値D631としてレジスタ634に出力して格納させる。さらに、制御信号D611が「2」の場合、セレクタ637は、LIFOメモリ635からの値D630(Δβτ―1)を選択し、値D631(外部情報ΔλEt)として、レジスタ642に出力して格納させる。 When the control signal D611 is “1”, the selector 637 selects the value D625 k (Δα 1 ) from the β calculator 1123 k and outputs the value D631 (external information Δλ Et ) to the register 642 for storage. . When the control signal D611 is “0”, the selector 633 selects the calculation result D626 supplied from the Q calculation circuit 632, and outputs it to the register 634 as the value D631 for storage. Further, when the control signal D611 is “2”, the selector 637 selects the value D630 (Δβ τ−1 ) from the LIFO memory 635, and outputs the value D631 (external information Δλ Et ) to the register 642 for storage. Let

レジスタ642は、セレクタ637からの値D631を記憶する。レジスタ642は、既に記憶している値D631(外部情報ΔλEt)を、復号途中結果D412k(uj)として出力する。 The register 642 stores the value D631 from the selector 637. The register 642 outputs the already stored value D631 (external information Δλ Et ) as a decoding intermediate result D412 k (u j ).

以上のように、計算器1110kでは、第3の演算が行われ、復号途中結果ujが求められる。 As described above, the calculator 1110 k performs the third calculation and obtains the decoding intermediate result u j .

次に、図34を参照して、図28の計算部1001による第3の演算処理を説明する。なお、この第3の演算処理は、各計算器1110kごとに行われる。 Next, with reference to FIG. 34, the third calculation process by the calculation unit 1001 in FIG. 28 will be described. This third calculation process is performed for each calculator 1110 k .

ステップS81において、減算器1121kは、サイクリックシフト回路411から供給される復号途中結果D411k(v)と、既に格納された前回の計算部1110による第3の演算の結果得られた復号途中結果D413k(uj)とを用いて、式(8)にしたがう演算(減算)を行い、その結果得られる減算値D621kを、α演算器1122kと共通のLIFOメモリ1112に供給する。 In step S81, the subtractor 1121 k receives the decoding intermediate result D411 k (v) supplied from the cyclic shift circuit 411 and the decoding intermediate result obtained as a result of the third calculation performed by the previous calculation unit 1110. Using the result D413 k (u j ), the calculation (subtraction) according to the equation (8) is performed, and the subtraction value D621 k obtained as a result is supplied to the LIFO memory 1112 shared with the α calculator 1122 k .

ステップS81の処理後は、ステップS82に進み、α演算器1122kは、制御部612からの制御信号D611と、ステップS81で供給される減算値D621kとを用いて、α演算を行い、その結果得られる値D624kをLIFOメモリ1111に出力する。LIFOメモリ1111は、値D624kを記憶し、既に記憶している値D624kを、入力された順番と逆の順番で値D625kとして読み出して、λE演算器1124kに供給する。 After the process of step S81, the process proceeds to step S82, where the α calculator 1122 k performs an α calculation using the control signal D611 from the control unit 612 and the subtraction value D621 k supplied in step S81, and outputs the resulting value D624 k in LIFO memory 1111. LIFO memory 1111 stores a value D624 k, already the value D624 k which is stored, and in the opposite order entered read as a value D625 k, and supplies the lambda E calculator 1124 k.

この処理と並行して、LIFOメモリ1112は、ステップS81で供給される減算値D621kを記憶し、既に記憶している減算値D621kを値D627kとして、入力された順番と逆の順番でβ演算器1123kに供給する。β演算器1123は、制御部612からの制御信号D611と値D627kとを用いてβ演算を行い、その結果得られる値D630kをλE演算器1124kに供給する。 In parallel with this processing, the LIFO memory 1112 stores the subtraction value D621 k supplied in step S81, and uses the already stored subtraction value D621 k as the value D627 k in the reverse order of the input order. Supplied to β calculator 1123 k . The β calculator 1123 performs β calculation using the control signal D611 from the control unit 612 and the value D627 k, and supplies a value D630 k obtained as a result to the λ E calculator 1124 k .

ステップS82の処理後は、ステップS83に進み、λE演算器1124kは、制御信号612からの制御信号D612、並びにステップS82で供給される値D624kとD630kを用いてλE演算を行い、その結果得られる復号途中結果D412kを復号途中結果格納用メモリ413に供給して、処理を終了する。 After the step S82, the process proceeds to step S83, lambda E calculator 1124 k performs lambda E operation using the control signal D612, and the value D624 k and D630 k supplied in step S82 from the control signal 612 The decoding intermediate result D412 k obtained as a result is supplied to the decoding intermediate result storage memory 413, and the process ends.

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

また、本実施の形態では、符号長108、符号化率2/3のLDPC符号を用いたが、LDPC符号の符号長や符号化率は、どのような値であってもよい。例えば、構成行列の行数および列数Pが6の場合、枝総数が6以下であれば、どのような符号長、符号化率のLDPC符号でも、制御信号を代えるだけで、復号装置800を用いて復号可能である。   In this embodiment, an LDPC code having a code length of 108 and an encoding rate of 2/3 is used. However, the LDPC code may have any code length and encoding rate. For example, when the number of rows and the number of columns P of the configuration matrix is 6, if the total number of branches is 6 or less, the LDPC code of any code length and coding rate can be used to change the decoding device 800 by simply changing the control signal. And can be decrypted.

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

また、計算部811を構成する計算器821kの数および計算器821kの回路の構成は、上述した例に限定されない。また、FIFOメモリ822は、RAMに限定されず、レジスタファイルやFIFOなど、その他のメモリマクロにより構成されるようにしてもよい。 Further, the number of calculators 821 k constituting the calculator 811 and the circuit configuration of the calculator 821 k are not limited to the above-described example. Further, the FIFO memory 822 is not limited to the RAM, and may be configured by other memory macros such as a register file and a FIFO.

同様に、計算部1101を構成する計算器1110kの数および計算器1110kの回路の構成は、上述した例に限定されない。また、LIFOメモリ1111と1112は、RAMに限定されず、レジスタファイルやLIFOなど、その他のメモリマクロにより構成されるようにしてもよい。 Similarly, the number of calculators 1110 k constituting the calculation unit 1101 and the circuit configuration of the calculator 1110 k are not limited to the above-described example. Further, the LIFO memories 1111 and 1112 are not limited to RAM, and may be configured by other memory macros such as a register file and LIFO.

また、本発明は、第1の演算と第2の演算を交互に行う復号装置800ではなく、チェックノード演算とバリアブルノード演算を交互に行う復号装置にも適用することができる。この場合、チェックノード演算を行うチェックノード演算器は、図22の積算前演算器831kの減算器431を削除するか、または図28の減算器1121kを削除することにより、構成され、バリアブルノード演算を行うバリアブルノード演算器は、図13の計算器415kの最後に減算器431(631)を加えることにより構成される。 Further, the present invention can be applied not to the decoding device 800 that alternately performs the first operation and the second operation, but also to a decoding device that alternately performs the check node operation and the variable node operation. In this case, the check node computing unit that performs the check node computation is configured by deleting the subtracter 431 of the pre-integration computing unit 831 k of FIG. 22 or by deleting the subtractor 1121 k of FIG. A variable node computing unit that performs node computation is configured by adding a subtracter 431 (631) to the end of the calculator 415 k of FIG.

以上のように、図19と図27の復号装置800では、計算部811(1001)が、計算器821k(計算器1110k)の数である6個より少ない数の遅延用のFIFOメモリ822(LIFOメモリ1111と1112)を備えるので、LDPC符号の復号性能を損なうことなく、復号装置800の回路規模の削減を行うことができる。 As described above, in the decoding device 800 shown in FIGS. 19 and 27, the calculation unit 811 (1001) has a number of FIFO memories 822 for delay smaller than the number of calculators 821 k (calculators 1110 k ). Since (LIFO memories 1111 and 1112) are provided, the circuit scale of the decoding apparatus 800 can be reduced without impairing the decoding performance of the LDPC code.

一般的に、LDPC符号は符号長が数千から数万と大きいため、Pの値も数百の大きさを持つものが使われる。その場合には、更に本発明に係る復号装置800を用いる効果は大きくなる。   In general, since the LDPC code has a code length as large as several thousand to several tens of thousands, a code having a P value of several hundreds is used. In that case, the effect of using the decoding device 800 according to the present invention is further increased.

また、本発明に係る復号装置800は、サムプロダクトアルゴリズムを忠実に実装するものであるため、メッセージの量子化以外の復号損失が起きることはない。   Further, since the decoding apparatus 800 according to the present invention faithfully implements the thumb product algorithm, no decoding loss other than message quantization occurs.

なお、上述したLDPC符号を復号する復号装置は、例えば、(ディジタル)衛星放送を受信するチューナなどに適用することができる。   Note that the decoding device that decodes the LDPC code described above can be applied to, for example, a tuner that receives a (digital) satellite broadcast.

LDPC符号の検査行列Hを説明する図である。It is a figure explaining the check matrix H of an LDPC code. パリティ部が下三角行列になっている検査行列Hを示す図である。It is a figure which shows the check matrix H whose parity part is a lower triangular matrix. LDPC符号の復号手順を説明するフローチャートである。It is a flowchart explaining the decoding procedure of an LDPC code. メッセージの流れを説明する図である。It is a figure explaining the flow of a message. LDPC符号の検査行列Hの例を示す図である。It is a figure which shows the example of the check matrix H of a LDPC code. 検査行列Hのタナーグラフを示す図である。6 is a diagram illustrating a Tanner graph of a check matrix H. FIG. バリアブルノードを示す図である。It is a figure which shows a variable node. チェックノードを示す図である。It is a figure which shows a check node. LDPC符号の検査行列Hの例を示す図である。It is a figure which shows the example of the check matrix H of a LDPC code. ノード演算を6個同時に行う復号装置の構成例を示すブロック図である。It is a block diagram which shows the structural example of the decoding apparatus which performs six node calculations simultaneously. 図10の計算部の構成例を示すブロック図である。It is a block diagram which shows the structural example of the calculation part of FIG. 図11の計算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the calculator of FIG. 図10の計算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the calculator of FIG. 図10の復号途中結果格納用メモリの構成例を示すブロック図である。It is a block diagram which shows the structural example of the memory for decoding result storage of FIG. トレリスを説明する図である。It is a figure explaining a trellis. パリティ検査符号のトレリスを説明する図である。It is a figure explaining the trellis of a parity check code. BCJRアルゴリズムを用いてチェックノード演算を行う復号装置の構成例を示すブロック図である。It is a block diagram which shows the structural example of the decoding apparatus which performs a check node calculation using BCJR algorithm. 図17の計算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the calculator of FIG. 本発明の一実施の形態の、LDPC符号を復号する復号装置の第1の構成例を示すブロック図である。It is a block diagram which shows the 1st structural example of the decoding apparatus which decodes an LDPC code of one embodiment of this invention. 図19の計算部の詳細構成例を示すブロック図である。It is a block diagram which shows the detailed structural example of the calculation part of FIG. 図20の計算器と図12の計算器との関係を説明する図である。It is a figure explaining the relationship between the calculator of FIG. 20, and the calculator of FIG. 積算前演算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the calculator before integration. 積算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of an integrator. 積算後演算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of the computing unit after integration. 図19の復号装置の復号処理を説明するフローチャートである。It is a flowchart explaining the decoding process of the decoding apparatus of FIG. 図25のステップS55の第1の演算処理を説明するフローチャートである。It is a flowchart explaining the 1st calculation process of step S55 of FIG. 本発明の一実施の形態の、LDPC符号を復号する復号装置の第2の構成例を示すブロック図である。It is a block diagram which shows the 2nd structural example of the decoding apparatus which decodes an LDPC code of one embodiment of this invention. 図27の計算部の詳細構成例を示すブロック図である。It is a block diagram which shows the detailed structural example of the calculation part of FIG. 図28の計算器と図18の計算器との関係を説明する図である。It is a figure explaining the relationship between the calculator of FIG. 28 and the calculator of FIG. 減算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of a subtractor. α演算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of an alpha calculator. β演算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of a beta calculator. λE演算器の構成例を示すブロック図である。It is a block diagram which shows the structural example of a (lambda) E calculator. 図28の計算部による第3の演算処理を説明するフローチャートである。It is a flowchart explaining the 3rd arithmetic processing by the calculation part of FIG.

符号の説明Explanation of symbols

410 復号途中結果格納用メモリ, 411 サイクリックシフト回路, 413 復号途中結果格納用メモリ, 414 サイクリックシフト回路, 415 計算部, 416 受信用メモリ, 417 制御部, 612 制御部, 800 復号装置, 811 計算部, 821 計算器, 822 FIFOメモリ, 831 積算前演算器, 832 積算器, 833 積算後演算器, 1001 計算部, 1110 計算器, 1111,1112 LIFOメモリ, 1121 減算器,1122 α演算器, 1123 β演算器, 1124 λE演算器 410 decoding intermediate result storage memory, 411 cyclic shift circuit, 413 decoding intermediate result storage memory, 414 cyclic shift circuit, 415 calculation unit, 416 reception memory, 417 control unit, 612 control unit, 800 decoding device, 811 Calculator, 821 calculator, 822 FIFO memory, 831 calculator before integration, 832 calculator, 833 calculator after integration, 1001 calculator, 1110 calculator, 1111, 1112 LIFO memory, 1121 subtractor, 1122 α calculator, 1123 β calculator, 1124 λ E calculator

Claims (5)

LDPC(Low Density Parity Check)符号の復号装置であって、
前記LDPC符号の復号のためのP(1より大きい整数)個の演算を同時に行う演算手段
を備え、
前記演算手段は、
複数のデータを積算し、前記複数のデータの積算値から、前記複数のデータそれぞれを減算する演算を含むチェックノードの演算を行う前記P個の演算器と、
前記積算値から減算する前記複数のデータを記憶する、ビット幅が、前記データの量子化幅のP倍で、ワード数が前記LDPC符号の検査行列の行の重みに等しい1個の遅延用の記憶手段と
を備え、
前記算器は、前記記憶手段を用いて、前記複数のデータの積算値から、前記記憶手段で遅延された前記複数のデータそれぞれを減算する
復号装置。
LDPC (Low Density Parity Check) code decoding device,
Computation means for simultaneously performing P (integer greater than 1) computations for decoding the LDPC code,
The computing means is
The P number of arithmetic units that perform a check node operation including an operation of integrating a plurality of data and subtracting each of the plurality of data from an integrated value of the plurality of data ,
The plurality of data to be subtracted from the integrated value is stored, the bit width is P times the quantization width of the data, and the number of words is equal to the weight of a row of the parity check matrix of the LDPC code . Storage means, and
The arithmetic unit is using said storage means, from the integrated value of the plurality of data, decoding apparatus for subtracting the plurality of data respectively delayed by the storage means.
前記記憶手段は、RAM(Random Access Memory)である
請求項に記載の復号装置。
The decoding device according to claim 1 , wherein the storage unit is a RAM (Random Access Memory).
前記記憶手段は、FIFO(First In First Out)である
請求項に記載の復号装置。
The decoding device according to claim 1 , wherein the storage means is a FIFO (First In First Out).
前記記憶手段は、レジスタファイルである
請求項に記載の復号装置。
Said storage means, decoding apparatus according to claim 1, wherein the register file.
LDPC(Low Density Parity Check)符号の復号のためのP(1より大きい整数)個の演算を同時に行う演算手段を備え、
前記演算手段は、
複数のデータを積算し、前記複数のデータの積算値から、前記複数のデータそれぞれを減算する演算を含むチェックノードの演算を行う前記P個の演算器と、
前記積算値から減算する前記複数のデータを記憶する、ビット幅が、前記データの量子化幅のP倍で、ワード数が前記LDPC符号の検査行列の行の重みに等しい1個の遅延用の記憶手段と
を備えるLDPC号の復号装置の
前記演算器が、前記記憶手段を用いて、前記複数のデータの積算値から、前記記憶手段で遅延された前記複数のデータそれぞれを減算する
ステップを含む復号方法。
Computation means for simultaneously performing P (integer greater than 1) operations for decoding LDPC (Low Density Parity Check) codes,
The computing means is
The P number of arithmetic units that perform a check node operation including an operation of integrating a plurality of data and subtracting each of the plurality of data from an integrated value of the plurality of data,
The plurality of data to be subtracted from the integrated value is stored, the bit width is P times the quantization width of the data, and the number of words is equal to the weight of a row of the parity check matrix of the LDPC code. Storage means
The decoding device of LDPC sign-comprising
The decoding method includes a step in which the computing unit subtracts each of the plurality of data delayed by the storage means from an integrated value of the plurality of data using the storage means .
JP2005201609A 2005-07-11 2005-07-11 Decoding device and decoding method Expired - Fee Related JP4730592B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005201609A JP4730592B2 (en) 2005-07-11 2005-07-11 Decoding device and decoding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005201609A JP4730592B2 (en) 2005-07-11 2005-07-11 Decoding device and decoding method

Publications (2)

Publication Number Publication Date
JP2007020068A JP2007020068A (en) 2007-01-25
JP4730592B2 true JP4730592B2 (en) 2011-07-20

Family

ID=37756792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005201609A Expired - Fee Related JP4730592B2 (en) 2005-07-11 2005-07-11 Decoding device and decoding method

Country Status (1)

Country Link
JP (1) JP4730592B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4743156B2 (en) 2007-04-27 2011-08-10 ソニー株式会社 Decoding device
JP6290057B2 (en) 2014-09-22 2018-03-07 株式会社東芝 Decoding device, decoding method, and memory system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3898574B2 (en) * 2002-06-05 2007-03-28 富士通株式会社 Turbo decoding method and turbo decoding apparatus
JP4185314B2 (en) * 2002-06-07 2008-11-26 富士通株式会社 Information recording / reproducing apparatus, optical disc apparatus, and data reproducing method
JP4062435B2 (en) * 2002-12-03 2008-03-19 日本電気株式会社 Error correction code decoding apparatus
JP4225163B2 (en) * 2003-05-13 2009-02-18 ソニー株式会社 Decoding device, decoding method, and program
JP2005045735A (en) * 2003-07-25 2005-02-17 Sony Corp Code detecting apparatus and method, decoding apparatus and method, and information processing apparatus and method
JP4285148B2 (en) * 2003-08-19 2009-06-24 ソニー株式会社 Decoding device, decoding method, and program
JP4284600B2 (en) * 2003-08-19 2009-06-24 ソニー株式会社 Decoding device

Also Published As

Publication number Publication date
JP2007020068A (en) 2007-01-25

Similar Documents

Publication Publication Date Title
KR101158919B1 (en) Decoding method, decoding device, and recording medium
JP4622654B2 (en) Decoding device and decoding method
KR101090001B1 (en) Decoding device, decoding method, and recording medium
JP4595650B2 (en) Decoding device and decoding method
JP4487213B2 (en) Decoding apparatus and method, and program
JP4293172B2 (en) Decoding device and decoding method
JP4487212B2 (en) Decoding device and method, transmission / reception system, receiving device and method, and program
JP2007036776A (en) Decoding apparatus and decoding method
Wang et al. A memory efficient partially parallel decoder architecture for QC-LDPC codes
JP4730592B2 (en) Decoding device and decoding method
JP4285148B2 (en) Decoding device, decoding method, and program
JP4729964B2 (en) Decoding device and decoding method
JP4284600B2 (en) Decoding device
JP4821724B2 (en) Decoding device and decoding method
JP4822071B2 (en) Decoding device and decoding method
JP2010028408A (en) Information processing apparatus, information processing method, and program
JP2007081602A (en) Decoder and decoding method
Cui Low-complexity high-speed VLSI design of low-density parity-check decoders

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080618

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100603

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100721

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110324

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110406

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

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees