JP4288582B2 - Decoding device, decoding method, and program - Google Patents
Decoding device, decoding method, and program Download PDFInfo
- Publication number
- JP4288582B2 JP4288582B2 JP2003290605A JP2003290605A JP4288582B2 JP 4288582 B2 JP4288582 B2 JP 4288582B2 JP 2003290605 A JP2003290605 A JP 2003290605A JP 2003290605 A JP2003290605 A JP 2003290605A JP 4288582 B2 JP4288582 B2 JP 4288582B2
- Authority
- JP
- Japan
- Prior art keywords
- frame
- decoding
- message
- variable node
- calculation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Description
本発明は、復号装置および復号方法、並びにプログラムに関し、特に、低密度パリティ検査符号による符号化が施された符号の復号を行う復号装置および復号方法、並びにプログラムに関する。 The present invention relates to a decoding device, a decoding method, and a program, and more particularly to a decoding device, a decoding method, and a program for decoding a code that has been encoded by a low-density parity check code.
近年、例えば、移動体通信や深宇宙通信といった通信分野、及び地上波又は衛星ディジタル放送といった放送分野の研究が著しく進められているが、それに伴い、誤り訂正符号化及び復号の効率化を目的として符号理論に関する研究も盛んに行われている。 In recent years, for example, the field of communication such as mobile communication and deep space communication and the field of broadcasting such as terrestrial or satellite digital broadcasting have been remarkably advanced. Research on coding theory is also actively conducted.
符号性能の理論的限界としては、いわゆるシャノン(C. E. Shannon)の通信路符号化定理によって与えられるシャノン限界が知られている。符号理論に関する研究は、このシャノン限界に近い性能を示す符号を開発することを目的として行われている。近年では、シャノン限界に近い性能を示す符号化方法として、例えば、並列連接畳み込み符号(PCCC(Parallel Concatenated Convolutional Codes))や、縦列連接畳み込み符号(SCCC(Serially Concatenated Convolutional Codes))といった、いわゆるターボ符号化(Turbo coding)と呼ばれる手法が開発されている。また、これらのターボ符号が開発される一方で、古くから知られる符号化方法である低密度パリティ検査符号(Low Density Parity Check codes)(以下、LDPC符号という)が脚光を浴びつつある。 As the theoretical limit of code performance, the Shannon limit given by the so-called Shannon (C. E. Shannon) channel coding theorem is known. Research on code theory is being conducted with the goal of developing codes that exhibit performance close to the Shannon limit. In recent years, as a coding method showing performance close to the Shannon limit, for example, so-called turbo codes such as parallel concatenated convolutional codes (PCCC (Parallel Concatenated Convolutional Codes)) and tandem concatenated convolutional codes (SCCC) A technique called Turbo coding has been developed. While these turbo codes are being developed, low density parity check codes (hereinafter referred to as LDPC codes), which is an encoding method that has been known for a long time, are attracting attention.
LDPC符号は、R. G. Gallagerによる「R. G. Gallager, "Low Density Parity Check Codes", Cambridge, Massachusetts: M. I. T. Press, 1963」において最初に提案されたものであり、その後、「D. J. C. MacKay, "Good error correcting codes based on very sparse matrices", Submitted to IEEE Trans. Inf. Theory, IT-45, pp. 399-431, 1999」や、「M. G. Luby, M. Mitzenmacher, M. A. Shokrollahi and D. A. Spielman, "Analysis of low density codes and improved designs using irregular graphs", in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998」等において再注目されるに至ったものである。 The LDPC code was first proposed in "RG Gallager," Low Density Parity Check Codes ", Cambridge, Massachusetts: MIT Press, 1963 by RG Gallager, and then" DJC MacKay, "Good error correcting codes based on very sparse matrices ", Submitted to IEEE Trans. Inf. Theory, IT-45, pp. 399-431, 1999" and "MG Luby, M. Mitzenmacher, MA Shokrollahi and DA Spielman," Analysis of low density codes and improved designs using irregular graphs ", in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998".
LDPC符号は、近年の研究により、ターボ符号等と同様に、符号長を長くしていくにしたがって、シャノン限界に近い性能が得られることがわかりつつある。また、LDPC符号は、最小距離が符号長に比例するという性質があることから、その特徴として、ブロック誤り確率特性がよく、さらに、ターボ符号等の復号特性において観測される、いわゆるエラーフロア現象が殆ど生じないことも利点として挙げられる。 Recent studies have shown that LDPC codes can achieve performance close to the Shannon limit as the code length is increased, similar to turbo codes and the like. In addition, since the LDPC code has the property that the minimum distance is proportional to the code length, its characteristic is that the block error probability characteristic is good, and furthermore, the so-called error floor phenomenon observed in the decoding characteristic such as turbo code is observed. An advantage is that it hardly occurs.
以下、このようなLDPC符号について具体的に説明する。なお、LDPC符号は、線形符号であり、必ずしも2元である必要はないが、ここでは、2元であるものとして説明する。 Hereinafter, such an LDPC code will be specifically described. Note that the LDPC code is a linear code and does not necessarily need to be binary, but will be described here as being binary.
LDPC符号は、そのLDPC符号を定義する検査行列(parity check matrix)が疎なものであることを最大の特徴とするものである。ここで、疎な行列とは、行列のコンポーネントの"1"の個数が非常に少なく構成されるものであり、疎な検査行列をHで表すものとすると、そのような検査行列としては、例えば、図1に示すように、各列のハミング重み("1"の数)(weight)が"3"であり、且つ、各行のハミング重みが"6"であるもの等がある。 The LDPC code is characterized by the fact that the parity check matrix that defines the LDPC code is sparse. Here, the sparse matrix is configured so that the number of "1" of the matrix components is very small. If the sparse check matrix is represented by H, as such a check matrix, for example, As shown in FIG. 1, the hamming weight (number of “1” s) (weight) of each column is “3” and the hamming weight of each row is “6”.
このように、各行及び各列のハミング重みが一定である検査行列Hによって定義されるLDPC符号は、レギュラーLDPC符号と称される。一方、各行及び各列のハミング重みが一定でない検査行列Hによって定義されるLDPC符号は、イレギュラーLDPC符号と称される。 Thus, an LDPC code defined by a parity check matrix H in which the Hamming weight of each row and each column is constant is referred to as a regular LDPC code. On the other hand, an LDPC code defined by a parity check matrix H in which the Hamming weight of each row and each column is not constant is referred to as an irregular LDPC code.
このようなLDPC符号による符号化は、検査行列Hに基づいて生成行列Gを生成し、この生成行列Gを2元の情報メッセージに対して乗算することによって符号語を生成することで実現される。具体的には、LDPC符号による符号化を行う符号化装置は、まず、検査行列Hの転置行列HTとの間に、式GHT=0が成立する生成行列Gを算出する。ここで、生成行列Gが、k×n行列である場合には、符号化装置は、生成行列Gに対してkビットからなる情報メッセージ(ベクトルu)を乗算し、nビットからなる符号語c(=uG)を生成する。この符号化装置によって生成された符号語は、値が"0"の符号ビットが"+1"に、値が"1"の符号ビットが"−1"にといったようにマッピングされて送信され、所定の通信路を介して受信側において受信されることになる。 Such an LDPC code encoding is realized by generating a generator matrix G based on the check matrix H and generating a codeword by multiplying the binary information message by the generator matrix G. . Specifically, the encoding device which performs encoding by LDPC codes, first, between the transposed matrix H T of the parity check matrix H, calculates a generator matrix G which formula GH T = 0 is established. Here, when the generator matrix G is a k × n matrix, the encoding device multiplies the generator matrix G by an information message (vector u) consisting of k bits, and a codeword c consisting of n bits. (= UG) is generated. The codeword generated by this encoding device is transmitted after being mapped such that the sign bit having a value of “0” is “+1”, the sign bit having a value of “1” is “−1”, and the like. The signal is received on the receiving side via a predetermined communication path.
一方、LDPC符号の復号は、Gallagerが確率復号(Probabilistic Decoding)と称して提案したアルゴリズムであって、バリアブルノード(variable node(メッセージノード(message node)とも呼ばれる。))と、チェックノード(check node)とからなる、いわゆるタナーグラフ(Tanner graph)上での確率伝播(belief propagation)によるメッセージ・パッシング・アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノードとチェックノードを、単に、ノードともいう。 On the other hand, decoding of an LDPC code is an algorithm proposed by Gallager called probabilistic decoding (Probabilistic Decoding), which is a variable node (also called a message node) and a check node (check node). ) And a message passing algorithm based on belief propagation on a so-called Tanner graph. Here, hereinafter, the variable node and the check node are also simply referred to as nodes as appropriate.
しかしながら、確率復号においては、各ノード間で受け渡されるメッセージが実数値であることから、解析的に解くためには、連続した値をとるメッセージの確率分布そのものを追跡する必要があり、非常に困難を伴う解析を必要とすることになる。そこで、Gallagerは、LDPC符号の復号アルゴリズムとして、アルゴリズムA又はアルゴリズムBを提案している。 However, in probabilistic decoding, since the message passed between each node is a real value, in order to solve it analytically, it is necessary to track the probability distribution itself of messages that take consecutive values. It will require analysis with difficulty. Therefore, Gallager has proposed algorithm A or algorithm B as a decoding algorithm for LDPC codes.
LDPC符号の復号は、一般的には、図2に示すような手順にしたがって行われる。なお、ここでは、受信値をU0(u0i)とし、チェックノードから出力されるメッセージをujとし、バリアブルノードから出力されるメッセージをviとする。また、ここでは、メッセージとは、値の"0"らしさを、いわゆる対数尤度比(log likelihood ratio)で表現した実数値である。 The decoding of the LDPC code is generally performed according to a procedure as shown in FIG. Here, the received value is U 0 (u 0i ), the message output from the check node is u j, and the message output from the variable node is v i . Further, here, the message is a real value expressing the value of “0” as a so-called log likelihood ratio.
まず、LDPC符号の復号においては、図2に示すように、ステップS11において、受信値U0(u0i)が受信され、メッセージujが"0"に初期化されるとともに、繰り返し処理のカウンタとしての整数をとる変数kが"0"に初期化され、ステップS12に進む。ステップS12において、受信値U0(u0i)に基づいて、式(1)に示す演算を行うことによってメッセージviが求められ、さらに、このメッセージviに基づいて、式(2)に示す演算を行うことによってメッセージujが求められる。 First, in decoding of the LDPC code, as shown in FIG. 2, in step S11, the received value U 0 (u 0i ) is received, the message u j is initialized to “0”, and the counter of the iterative process is performed. The variable k taking an integer is initialized to “0”, and the process proceeds to step S12. In step S12, based on the received value U 0 (u 0i ), the message v i is obtained by performing the calculation shown in the equation (1). Further, based on the message v i , the message v i is expressed in the equation (2). A message u j is obtained by performing an operation.
ここで、式(1)と式(2)におけるdvとdcは、それぞれ、検査行列Hの縦方向(列)と横方向(行)の"1"の個数を示す任意に選択可能とされるパラメータであり、例えば、(3,6)符号の場合には、dv=3,dc=6となる。 Here, d v and d c in Equation (1) and Equation (2) can be arbitrarily selected to indicate the number of “1” s in the vertical direction (column) and horizontal direction (row) of the parity check matrix H, respectively. For example, in the case of a (3, 6) code, d v = 3 and d c = 6.
なお、式(1)または(2)の演算においては、それぞれ、メッセージを出力しようとする枝(edge)から入力されたメッセージを、和または積演算のパラメータとしては用いないことから、和または積演算の範囲が、1乃至dv-1または1乃至dc-1となっている。また、式(2)に示す演算は、実際には、2入力v1,v2に対する1出力で定義される式(3)に示す関数R(v1,v2)のテーブルを予め作成しておき、これを式(4)に示すように連続的(再帰的)に用いることによって行われる。 Note that in the calculation of the expression (1) or (2), the message input from the edge to which the message is to be output is not used as a parameter for the sum or product operation. The range of operation is 1 to d v -1 or 1 to d c -1. In addition, the calculation shown in equation (2) actually creates a table of function R (v 1 , v 2 ) shown in equation (3) defined by one output for two inputs v 1 and v 2 in advance. This is done by using it continuously (recursively) as shown in equation (4).
ステップS12では、さらに、変数kが"1"だけインクリメントされ、ステップS13に進む。ステップS13では、変数kが所定の繰り返し復号回数N以上であるか否かが判定される。ステップS13において、変数kがN以上ではないと判定された場合、ステップS12に戻り、以下、同様の処理が繰り返される。 In step S12, the variable k is further incremented by “1”, and the process proceeds to step S13. In step S13, it is determined whether or not the variable k is equal to or greater than a predetermined iterative decoding count N. If it is determined in step S13 that the variable k is not equal to or greater than N, the process returns to step S12, and the same processing is repeated thereafter.
また、ステップS13において、変数kがN以上であると判定された場合、ステップS14に進み、式(5)に示す演算を行うことによって最終的に出力する復号結果としてのメッセージviが求められて出力され、LDPC符号の復号処理が終了する。 If it is determined in step S13 that the variable k is greater than or equal to N, the process proceeds to step S14, and a message v i as a decoding result to be finally output is obtained by performing the calculation shown in equation (5). And the LDPC code decoding process ends.
ここで、式(5)の演算は、式(1)の演算とは異なり、バリアブルノードに接続している全ての枝からの入力メッセージを用いて行われる。 Here, unlike the operation of equation (1), the operation of equation (5) is performed using input messages from all branches connected to the variable node.
このようなLDPC符号の復号は、例えば(3,6)符号の場合には、図3に示すように、各ノード間でメッセージの授受が行われる。なお、図3における"="で示すノード(バリアブルノード)では、式(1)に示した演算が行われ、"+"で示すノード(チェックノード)では、式(2)に示した演算が行われる。特に、アルゴリズムAにおいては、メッセージを2元化し、"+"で示すノードにて、dc-1個の入力メッセージの排他的論理和演算を行い、"="で示すノードにて、受信値Rに対して、dv-1個の入力メッセージが全て異なるビット値であった場合には、符号を反転して出力する。 For example, in the case of a (3, 6) code, such an LDPC code is decoded as shown in FIG. In FIG. 3, the calculation shown in Expression (1) is performed at the node indicated by “=” (variable node), and the calculation shown in Expression (2) is performed at the node indicated by “+” (check node). Done. In particular, in algorithm A, the message is binarized, and the exclusive OR operation of d c −1 input messages is performed at the node indicated by “+”, and the received value is obtained at the node indicated by “=”. For R, if d v −1 input messages all have different bit values, the sign is inverted and output.
また、一方で、近年、LDPC符号の復号の実装法に関する研究も行われている。実装方法について述べる前に、まず、LDPC符号の復号を摸式化して説明する。 On the other hand, in recent years, research on an implementation method for decoding an LDPC code is also being conducted. Before describing the mounting method, first, decoding of an LDPC code will be schematically described.
図4は、(3,6)LDPC符号(符号化率1/2、符号長12)の検査行列(parity check matrix)の例である。LDPC符号の検査行列は、図5のように、タナーグラフを用いて書き表すことができる。ここで、図5において、"+"で表わされるのが、チェックノードであり、"="で表わされるのが、バリアブルノードである。チェックノードとバリアブルノードは、それぞれ、検査行列の行と列に対応する。チェックノードとバリアブルノードとの間の結線は、枝(edge)であり、検査行列の"1"に相当する。即ち、検査行列の第j行第i列のコンポーネントが1である場合には、図5において、上からi番目のバリアブルノード("="のノード)と、上からj番目のチェックノード("+"のノード)とが、枝により接続される。枝は、バリアブルノードに対応する符号ビットが、チェックノードに対応する拘束条件を持つことを表わす。なお、図5は、図4の検査行列のタナーグラフとなっている。
FIG. 4 is an example of a parity check matrix of a (3, 6) LDPC code (
LDPC符号の復号方法であるサムプロダクトアルゴリズム(Sum Product Algorithm)は、バリアブルノードの演算とチェックノードの演算とを繰り返し行う。 The Sum Product Algorithm, which is an LDPC code decoding method, repeatedly performs a variable node operation and a check node operation.
バリアブルノードでは、図6のように、式(1)の演算を行う。すなわち、図6において、計算しようとしている枝に対応するメッセージviは、バリアブルノードに繋がっている残りの枝からのメッセージu1およびu2と、受信情報u0iを用いて計算される。他の枝に対応するメッセージも同様に計算される。 In the variable node, the calculation of Expression (1) is performed as shown in FIG. That is, in FIG. 6, the message v i corresponding to the branch to be calculated is calculated using the messages u 1 and u 2 from the remaining branches connected to the variable node and the reception information u 0i . Messages corresponding to other branches are similarly calculated.
チェックノードの演算について説明する前に、式(2)を、式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)の関係を用いて、式(6)のように書き直す。但し、sign(x)は、x≧0のとき1であり、x<0のとき-1である。 Before explaining the operation of the check node, the expression (2) is changed to the expression a × b = exp {ln (| a |) + ln (| b |)} × sign (a) × sign (b). And rewrite as equation (6). However, sign (x) is 1 when x ≧ 0, and −1 when x <0.
更に、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).
チェックノードでは、図7のように、式(7)の演算を行う。すなわち、図7において、計算しようとしている枝に対応するメッセージujは、チェックノードに繋がっている残りの枝からのメッセージv1,v2,v3,v4,v5を用いて計算される。他の枝に対応するメッセージも同様に計算される。 In the check node, the calculation of Expression (7) is performed as shown in FIG. That is, in FIG. 7, the message u j corresponding to the branch to be calculated is calculated using the messages v 1 , v 2 , v 3 , v 4 , v 5 from the remaining branches connected to the check node. The Messages corresponding to other branches are similarly calculated.
なお、関数φ(x)は、φ(x)=ln((ex+1)/(ex-1))とも表すことができ、x>0において、φ(x)=φ-1(x)である。関数φ(x)およびφ-1(x)をハードウェアに実装する際には、LUT(Look Up Table)を用いて実装される場合があるが、両者共に同一のLUTとなる。 The function φ (x) can also be expressed as φ (x) = ln ((e x +1) / (e x −1)). When x> 0, φ (x) = φ −1 ( x). When the functions φ (x) and φ −1 (x) are mounted on hardware, they may be mounted using a LUT (Look Up Table), but both are the same LUT.
サムプロダクトアルゴリズムをハードウェアに実装する場合、式(1)で表わされるバリアブルノード演算および式(7)で表わされるチェックノード演算とを、適度な回路規模と動作周波数で繰り返し行うことが必要である。 When the thumb product algorithm is implemented in hardware, it is necessary to repeatedly perform the variable node operation represented by Expression (1) and the check node operation represented by Expression (7) with an appropriate circuit scale and operating frequency. .
復号装置の実装の例として、まず、単純に各ノードの演算を一つずつ順次行うことによって復号を行う場合(full serial decoding)の実装法について説明する。 As an example of implementation of a decoding device, first, an implementation method in the case where decoding is performed by simply performing operations of each node one by one (full serial decoding) will be described.
なお、ここでは、例えば、図8の、30(行)×90(列)の検査行列で表現される符号(符号化率2/3、符号長90)を復号することとする。図8の検査行列の1の数は269であり、従って、そのタナーグラフでは、枝の数は269個となる。ここで、図8の検査行列では、0を、"."で表現している。
Here, for example, a code (
図9は、LDPC符号の1回復号を行う復号装置の構成例を示している。 FIG. 9 illustrates a configuration example of a decoding device that performs one-time decoding of an LDPC code.
図9の復号装置では、その動作する1クロック(clock)ごとに、1つの枝に対応するメッセージが計算される。 In the decoding device of FIG. 9, a message corresponding to one branch is calculated for each clock that operates.
即ち、図9の復号装置は、2つの枝用メモリ100および102、1つのチェックノード計算器101、1つのバリアブルノード計算器103、1つの受信用メモリ104、1つの制御部105からなる。
9 includes two
図9の復号装置では、枝用メモリ100または102からメッセージデータが1つずつ読み出され、そのメッセージデータを用いて、所望の枝に対応するメッセージデータが計算される。そして、その計算によって求められたメッセージデータが1つずつ後段の枝用メモリ102または100に格納されていく。繰り返し復号を行う際には、この1回復号を行う図9の復号装置を複数個縦列に連接するか、もしくは図9の復号装置を繰り返し用いることによって、繰り返し復号を実現する。なお、ここでは、例えば、図9の復号装置が複数個接続されているものとする。
In the decoding device of FIG. 9, message data is read one by one from the
枝用メモリ100は、前段の復号装置(図示せず)のバリアブルノード計算器103から供給されるメッセージD100を、後段のチェックノード計算器101が読み出す順番に格納していく。そして、枝用メモリ100は、チェックノード計算のフェーズでは、メッセージD100を、格納してある順番通りに、メッセージD101として、チェックノード計算器101に供給する。
The
チェックノード計算器101は、制御部105から供給される制御信号D106に基づき、枝用メモリ100から供給されるメッセージD101を用いて、式(7)に従って演算を行い、その演算によって求められたメッセージD102を、後段の枝用メモリ102に供給する。
Based on the control signal D106 supplied from the
枝用メモリ102は、前段のチェックノード計算器101から供給されるメッセージD102を、後段のバリアブルノード計算器103が読み出す順番に格納していく。そして、枝用メモリ102は、バリアブルノード計算のフェーズでは、メッセージD102を、格納してある順番通りに、メッセージD103として、バリアブルノード計算器103に供給する。
The
さらに、バリアブルノード計算器103には、制御部105から制御信号D107が供給されるとともに、受信用メモリ104から受信データD104が供給される。バリアブルノード計算器103は、制御信号D107に基づき、枝用メモリ100から供給されるメッセージD103と受信用メモリ100から供給される受信データD104を用い、式(1)に従って演算を行い、その演算の結果得られるメッセージD105を、図示せぬ後段の復号装置の枝用メモリ100に供給する。
Further, the control signal D107 is supplied from the
受信用メモリ104には、LDPC符号化された受信データ(LDPC符号)が格納される。制御部105は、バリアブルノード演算を制御する制御信号D106と、チェックノード演算を制御する制御信号D107を、それぞれチェックノード計算器101とバリアブルノード計算器103に供給する。制御部105は、枝用メモリ100に全ての枝のメッセージが格納されたとき、チェックノード計算器101に制御信号D106を供給し、枝用メモリ102に全ての枝のメッセーが格納されたとき、バリアブルノード計算器103に制御信号D107を供給する。
The
図10は、チェックノード演算を1つずつ行う図9のチェックノード計算器101の構成例を示している。
FIG. 10 shows a configuration example of the
なお、図10では、各メッセージが符号ビットを合わせて合計6ビット(bit)に量子化されているものとして、チェックノード計算器101を表している。また、図10では、図8の検査行列で表わされるLDPC符号のチェックノード演算が行われる。さらに、図10のチェックノード演算器101には、クロックckが供給され、このクロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。
In FIG. 10, the
図10のチェックノード計算器101は、制御部105から供給される、例えば、1ビットの制御信号D106に基づき、枝用メモリ100から1つずつ読み込まれるメッセージD101を用いて、式(7)にしたがって演算を行う。
The
即ち、チェックノード計算器101では、検査行列の各列に対応するバリアブルノードからの6ビットのメッセージD101(メッセージvi)が1つずつ読み込まれ、その下位ビットである絶対値D122(|vi|)がLUT121に、その最上位ビットである符号ビットD121がEXOR回路129とFIFO(First In First Out)メモリ133にそれぞれ供給される。また、チェックノード計算器101には、制御部105から制御信号D106が供給され、その制御信号D106は、セレクタ124とセレクタ131に供給される。
That is, the
LUT121は、絶対値D122(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D123(φ(|vi|))を読み出し、加算器122とFIFOメモリ127に供給する。
The
加算器122は、演算結果D123(φ(|vi|))とレジスタ123に格納されている9ビットの値D124とを加算することにより、演算結果D123を積算し、その結果得られる9ビットの積算値をレジスタ123に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD101の絶対値D122(|vi|)に対する演算結果が積算された場合、レジスタ123はリセットされる。
The
検査行列の1行に亘るメッセージD101が1つずつ読み込まれ、レジスタ123に1行分の演算結果D123が積算された積算値が格納された場合、制御部105から供給される制御信号D106は、0から1に変化する。例えば、行の重み(row weight)が「9」である場合、制御信号D106は、1から8クロック目までは、「0」となり、9クロック目では「1」となる。
When the message D101 over one row of the check matrix is read one by one and the accumulated value obtained by integrating the operation result D123 for one row is stored in the
制御信号D106が「1」の場合、セレクタ124は、レジスタ123に格納されている値、即ち、検査行列の1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)が積算された9ビットの値D124(i=1からi=dcまでのΣφ(|vi|))を選択し、値D125として、レジスタ125に出力して格納させる。レジスタ125は、格納している値D125を、9ビットの値D126として、セレクタ124と加算器126に供給する。制御信号D106が「0」の場合、セレクタ124は、レジスタ125から供給された値D126を選択し、レジスタ125に出力して再格納させる。即ち、検査行列の1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ125は、前回積算されたφ(|vi|)を、セレクタ124と加算器126に供給する。
When the control signal D106 is "1",
一方、FIFOメモリ127は、レジスタ125から新たな値D126(i=1からi=dcまでのΣφ(|vi|))が出力されるまでの間、LUT121が出力した演算結果D123(φ(|vi|))を遅延し、5ビットの値D127として減算器126に供給する。減算器126は、レジスタ125から供給された値D126から、FIFOメモリ127から供給された値D127を減算し、その減算結果を、5ビットの減算値D128としてLUT128に供給する。即ち、減算器126は、検査行列の1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)の積算値から、求めたい枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc−1までのΣφ(|vi|))を減算値D128としてLUT128に供給する。
On the other hand,
LUT128は、減算値D128(i=1からi=dc−1までのΣφ(|vi|))に対して、式(7)におけるφ-1(Σφ(|vi|))の演算を行った5ビットの演算結果D129(φ-1(Σφ(|vi|)))を出力する。
The
以上の処理と並行して、EXOR回路129は、レジスタ130に格納されている1ビットの値D131と符号ビットD121との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D130をレジスタ130に再格納する。なお、検査行列の1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された場合、レジスタ130はリセットされる。
In parallel with the above processing, the
検査行列の1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納された場合、制御部105から供給される制御信号D106は、「0」から「1」に変化する。
If (Paisign from i = 1 to d c (v i)) multiplication result D130 to the sign bit D121 is multiplied by the message D101 from all of the branches across one line of the parity check matrix stored in the
制御信号D106が「1」の場合、セレクタ131は、レジスタ130に格納されている値、即ち、検査行列の1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された値D131(i=1からi=dcまでのΠsign(vi))を選択し、1ビットの値D132としてレジスタ132に出力して格納させる。レジスタ132は、格納している値D132を、1ビットの値D133としてセレクタ131とEXOR回路134に供給する。制御信号D106が「0」の場合、セレクタ131は、レジスタ132から供給された値D133を選択し、レジスタ132に出力して再格納させる。即ち、検査行列の1行に亘る全ての枝からのメッセージD101(メッセージvi)の符号ビットD121が乗算されるまで、レジスタ132は、前回格納した値を、セレクタ131とEXOR回路134に供給する。
When the control signal D106 is “1”, the
一方、FIFOメモリ133は、レジスタ132から新たな値D133(i=1からi=dcまでのΠsign(vi))がEXOR回路134に供給されるまでの間、符号ビットD121を遅延し、1ビットの値D134としてEXOR回路134に供給する。EXOR回路134は、レジスタ132から供給された値D133と、FIFOメモリ133から供給された値D134との排他的論理和を演算することにより、値D133を、値D134で除算し、1ビットの除算結果を除算値D135として出力する。即ち、EXOR回路134は、検査行列の1行に亘る全ての枝からのメッセージD101の符号ビットD121(sign(|vi|))の乗算値を、求めたい枝からのメッセージD101の符号ビットD121(sign(|vi|))で除算して、その除算値(i=1からi=dc−1までのΠsign(|vi|))を除算値D135として出力する。
On the other hand,
チェックノード計算器101では、LUT128から出力された5ビットの演算結果D129を下位5ビットとするとともに、EXOR回路134から出力された1ビットの除算値D135を最上位ビットとする合計6ビットがメッセージD102(メッセージuj)として出力される。
In the
以上のように、チェックノード計算器101では、式(7)の演算が行われ、メッセージujが求められる。
As described above, the
なお、図8の検査行列の行の重みの最大は9であるため、即ち、チェックノードに供給されるメッセージの最大数は9であるため、チェックノード計算器101は、9個のメッセージ(φ(|vi|))を遅延させるFIFOメモリ127とFIFOメモリ133を有している。行の重みが9未満の行のメッセージを計算するときには、FIFOメモリ127とFIFOメモリ133における遅延量が、その行の重みの値に減らされる。
Note that since the maximum row weight of the parity check matrix in FIG. 8 is 9, that is, the maximum number of messages supplied to the check node is 9, the
図11は、バリアブルノード演算を1つずつ行う図9のバリアブルノード計算器103の構成例を示している。
FIG. 11 shows a configuration example of the
なお、図11では、各メッセージが符号ビットを合わせて合計6ビット(bit)に量子化されているものとして、バリアブルノード計算器103を表している。また、図11では、図8の検査行列で表わされるLDPC符号のバリアブルノード演算が行われる。さらに、図11のバリアブルノード計算機103には、クロックckが供給され、クロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。
In FIG. 11, the
図11のバリアブルノード計算器103は、制御部105から供給される、例えば、1ビットの制御信号D107に基づき、枝用メモリ102から1つずつ読み込まれるメッセージD103と、受信用メモリ104から読み込まれる受信データD104を用いて、式(1)にしたがって演算を行う。
The
即ち、バリアブルノード計算器103では、検査行列の各行に対応するチェックノードからの6ビットのメッセージD103(メッセージuj)が1つずつ読み込まれ、そのメッセージD103が、加算器151とFIFOメモリ155に供給される。また、バリアブルノード計算器103では、受信用メモリ104から6ビットの受信データD104が1つずつ読み込まれ、加算器156に供給される。さらに、バリアブルノード計算器103には、制御部105から制御信号D107が供給され、その制御信号D107は、セレクタ153に供給される。
That is, the
加算器151は、メッセージD103(メッセージuj)とレジスタ152に格納されている9ビットの値D151とを加算することにより、メッセージD103を積算し、その結果得られる9ビットの積算値を、レジスタ152に再格納する。なお、検査行列の1列に亘る全ての枝からのメッセージD103が積算された場合、レジスタ152はリセットされる。
The
検査行列の1列に亘るメッセージD103が1つずつ読み込まれ、レジスタ152に1列分のメッセージD103が積算された値が格納された場合、制御部105から供給される制御信号D107は、「0」から「1」に変化する。例えば、列の重みが「5」である場合、制御信号D107は、1から4クロック目までは「0」となり、5クロック目では「1」となる。
When the message D103 over one column of the check matrix is read one by one and the value obtained by integrating the message D103 for one column is stored in the
制御信号D107が「1」の場合、セレクタ153は、レジスタ152に格納されている値、即ち、検査行列の1列に亘る全ての枝からのメッセージD103(メッセージuj)が積算された9ビットの値D151(j=1からdVまでのΣuj)を選択し、レジスタ154に出力して格納させる。レジスタ154は、格納している値D151を、9ビットの値D152として、セレクタ153と加減算器156に供給する。制御信号D107が「0」の場合、セレクタ153は、レジスタ154から供給された値D152を選択し、レジスタ154に出力し再格納させる。即ち、検査行列の1列に亘る全ての枝からのメッセージD103(メッセージuj)が積算されるまで、レジスタ154は、前回積算された値を、セレクタ153と加減算器156に供給する。
When the control signal D107 is “1”, the
一方、FIFOメモリ155は、レジスタ154から新たな値D152(j=1からdVまでのΣuj)が出力されるまでの間、チェックノードからのメッセージD103を遅延し、6ビットの値D153として加減算器156に供給する。加減算器156は、レジスタ154から供給された値D152から、FIFOメモリ155から供給された値D153を減算する。即ち、加減算器156は、検査行列の1列に亘る全ての枝からのメッセージD103(メッセージuj)の積算値から、求めたい枝からのメッセージujを減算して、その減算値(j=1からdv−1までのΣuj)を求める。さらに、加減算器156には、その減算値(j=1からdv−1までのΣuj)に、受信用メモリ104から供給された受信データD104を加算して、その結果得られる6ビットの値をメッセージD105(メッセージvi)として出力する。
On the other hand,
以上のように、バリアブルノード計算器103では、式(1)の演算が行われ、メッセージviが求められる。
As described above, the
なお、図8の検査行列の列の重みの最大は5であるため、即ち、バリアブルノードに供給されるメッセージの最大数は5であるため、バリアブルノード計算器103は、5個のメッセージ(uj)を遅延させるFIFOメモリ155を有している。列の重みが5未満の列のメッセージを計算するときには、FIFOメモリ155における遅延量が、その列の重みの値に減らされる。
Since the maximum column weight of the parity check matrix in FIG. 8 is 5, that is, the maximum number of messages supplied to the variable node is 5, the
図9の復号装置では、検査行列の重みにしたがって、制御部105から制御信号が与えられる。そして、図9の復号装置によれば、枝用メモリ100および102、並びにチェックノード計算器101およびバリアブルノード計算器103のFIFOメモリ127,133,155の容量さえ足りれば、制御信号のみを変えることで様々な検査行列のLDPC符号を復号することができる。
In the decoding apparatus in FIG. 9, a control signal is given from the
なお、図示しないが、図9の復号装置において、復号の最終段においては、式(1)のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が、最終的な復号結果として出力される。 Although not shown in the figure, in the decoding apparatus of FIG. 9, in the final stage of decoding, the calculation of Expression (5) is performed instead of the variable node calculation of Expression (1). Output as decryption result.
図9の復号装置を繰り返し用いて、LDPC符号を復号する場合には、チェックノード演算とバリアブルノード演算とが交互に行われる。即ち、図9の復号装置では、チェックノード計算器101によるチェックノード演算の結果を用いて、バリアブルノード計算器103によりバリアブルノード演算が行われ、バリアブルノード計算器103によるバリアブルノード演算の結果を用いて、チェックノード計算器101によりチェックノード演算が行われる。
When the LDPC code is decoded by repeatedly using the decoding device of FIG. 9, the check node calculation and the variable node calculation are alternately performed. That is, in the decoding apparatus of FIG. 9, the variable node calculation is performed by the
従って、269の枝を有する図8の検査行列を用いた1回の復号に、269×2=538クロック(clock)を必要とする。例えば、50回の繰り返し復号を行うためには、符号長である90個の符号(受信データ)を1フレームとして、その1フレームを受信する間に、538×50=26900クロック動作することが必要であり、受信周波数の約300(≒26900/90)倍の高速動作が必要になる。受信周波数が数十MHzであるとすると、GHz以上の速度での動作を要求されることになり実装は容易ではない。 Therefore, 269 × 2 = 538 clocks are required for one decoding using the parity check matrix of FIG. 8 having 269 branches. For example, in order to perform 50 times of iterative decoding, it is necessary that 90 codes (received data), which is the code length, be one frame, and that 538 × 50 = 26900 clock operation be performed during the reception of that one frame. Therefore, a high-speed operation of about 300 (≈26900 / 90) times the reception frequency is required. If the reception frequency is several tens of MHz, it is required to operate at a speed of GHz or higher, and implementation is not easy.
また、図9の復号装置を、例えば、50台連接して、LDPC符号を復号する場合には、1フレーム(frame)目のバリアブルノード演算を行っている間に、2フレーム目のチェックノード演算を行い、3フレーム目のバリアブルノード演算を行う、というように、複数のバリアブルノード演算とチェックノード演算とを同時に行うことができる。この場合、90個の符号を受信する間に、269個の枝を計算すればよいので、復号装置は、受信周波数の約3(≒269/90)倍の周波数で動作すればよいことになり、十分に実現可能である。しかしながら、この場合、回路規模が、単純には、図9の復号装置の50倍になる。 In addition, for example, when decoding the LDPC code by connecting 50 decoding apparatuses as shown in FIG. 9, the check node calculation of the second frame is performed while the variable node calculation of the first frame is performed. A plurality of variable node computations and check node computations can be performed simultaneously, such as performing variable node computations in the third frame. In this case, since 269 branches may be calculated while 90 codes are received, the decoding apparatus only needs to operate at a frequency about 3 (≈269 / 90) times the reception frequency. Is fully feasible. However, in this case, the circuit scale is simply 50 times that of the decoding apparatus of FIG.
次に、全ノードの演算を同時に行うことによって復号を行う場合(full parallel decoding)の復号装置の実装法について説明する。 Next, a description will be given of a method for implementing a decoding apparatus when decoding is performed by performing operations on all nodes simultaneously (full parallel decoding).
この実装法については、例えば、非特許文献1に記載されている。
This mounting method is described in
図12は、図8の検査行列で表現される符号(符号化率2/3、符号長90)を復号する復号装置の一例の構成を示している。
FIG. 12 illustrates a configuration of an example of a decoding device that decodes a code (
図12の復号装置では、枝用メモリ202または206から、269個ある枝に対応するメッセージデータを全て同時に読み出し、そのメッセージデータを用いて、269個の枝に対応する新たなメッセージデータを演算する。さらに、その演算の結果求められた新たなメッセージデータが全て同時に後段の枝用メモリ206または202に格納されていく。そして、図12の復号装置を繰り返し用いることで繰り返し復号が実現される。
In the decoding device of FIG. 12, all message data corresponding to 269 branches are simultaneously read from the
図12において、復号装置は、1つの受信用メモリ205、2つの枝入れ替え装置200および203、2つの枝用メモリ202および206、30個のチェックノード計算器2011乃至20130、90個のバリアブルノード計算器2041乃至20490からなる。以下、各部について詳細に説明する。
In FIG. 12, the decoding device includes one
枝用メモリ206は、前段のバリアブルノード計算器2041乃至20490からのメッセージD2061乃至D20690を全て同時に格納し、次の時刻(次のクロックのタイミング)に、メッセージD2061乃至D20690を、メッセージD2071乃至D20790として読み出し、次段の枝入れ替え装置200に、メッセージD200(D2001乃至D20090)として供給する。枝入れ替え装置200は、枝用メモリ206から供給されたメッセージD2001乃至D20090の順番を、図8の検査行列にしたがって並び替え(入れ替え)、チェックノード計算器2011乃至20130に、メッセージD2011乃至D20130として供給する。
チェックノード計算器2011乃至20130は、枝入れ替え装置200から供給されるメッセージD2011乃至D20130を用いて式(7)にしたがって演算を行い、その演算の結果得られるメッセージD2021乃至D20230を、枝用メモリ202に供給する。
The check node calculators 201 1 to 201 30 perform computations according to the equation (7) using the messages D201 1 to D201 30 supplied from the branch switching apparatus 200, and messages D202 1 to D202 30 obtained as a result of the computations. Is supplied to the
枝用メモリ202は、前段のチェックノード計算器2011乃至20130から供給されるメッセージD2021乃至D20230を全て同時に格納し、次の時刻に、そのすべてのメッセージD2021乃至D20230を、メッセージD2031乃至D20330として、次段の枝入れ替え装置203に供給する。
枝入れ替え装置203は、枝用メモリ202から供給されたメッセージD2031乃至D20330の順番を図8の検査行列にしたがって並び替え、バリアブルノード計算器2041乃至20490に、メッセージD2041乃至D20490として供給する。
バリアブルノード計算器2041乃至20490は、枝入れ替え装置203から供給されるメッセージD2041乃至D20490と、受信用メモリ205から供給される受信データD2051乃至D20590を用いて式(1)にしたがって演算を行い、その演算の結果得られるメッセージD2061乃至D20690を、次段の枝用メモリ206に供給する。
The
図13は、チェックノード演算を同時に行う図12のチェックノード計算器201m(m=1,2,・・・,30)の構成例を示している。 FIG. 13 shows a configuration example of the check node calculator 201 m (m = 1, 2,..., 30) of FIG.
図13のチェックノード計算器201mでは、図10のチェックノード計算器101と同様にして、式(7)のチェックノード演算が行われるが、そのチェックノード演算が、すべての枝について同時に行われる。
The check node calculator 201 m in FIG. 13 performs the check node calculation of Expression (7) in the same manner as the
即ち、図13のチェックノード計算器201mでは、枝入れ替え装置200から供給される図8の検査行列の各列に対応するバリアブルノードからのメッセージD2211乃至D2219(vi)が全て同時に読み込まれ、それぞれの下位5ビットである絶対値D2221乃至D2229(|vi|)がLUT2211乃至2219にそれぞれ供給される。また、メッセージD2211乃至D2219(vi)の最上位ビットである1ビットの符号ビットD2231乃至D2239が、EXOR回路2261乃至2269にそれぞれ供給されるとともに、EXOR回路225に供給される。
That is, the check node calculator 201 m in FIG. 13 simultaneously reads all the messages D221 1 to D221 9 (v i ) from the variable nodes corresponding to the columns of the parity check matrix in FIG. They are, respectively, the lower 5 bits in which the absolute value D222 1 to D222 9 (| v i |) is supplied to LUT221 1 to 221 9. Further, 1-bit sign bits D223 1 to D223 9 which are the most significant bits of the messages D221 1 to D221 9 (v i ) are supplied to the EXOR circuits 226 1 to 226 9 and supplied to the
LUT2211乃至2219は、絶対値D2221乃至D2229(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D2241乃至D2249(φ(|vi|))をそれぞれ読み出し、それぞれを減算器2231乃至2239に供給する。また、LUT2211乃至2219は、演算結果D2241乃至D2249(φ(|vi|))を加算器222に供給する。
LUT221 1 to 221 9, the absolute value D222 1 to D222 9 (| v i |) with respect to, phi in the formula (7) (| v i | ) 5 -bit operation result of the operation of D224 1 to D224 9 (φ (| v i |)) is read out and supplied to the subtracters 223 1 to 223 9 respectively. The LUTs 221 1 to 221 9 supply the operation results D224 1 to D224 9 (φ (| v i |)) to the
加算器222は、演算結果D2241乃至D2249(φ(|vi|))の値の総和(1行分の演算結果の総和)を演算し、9ビットの演算結果D225(i=1から9のΣφ(|vi|))を、減算器2231乃至2239に供給する。減算器2231乃至2239は、演算結果D225から、演算結果D2241乃至D2249(φ(|vi|))をそれぞれ減算し、5ビットの減算値D2271乃至D2279を、LUT2241乃至2249に供給する。即ち、減算器2231乃至2239は、全ての枝からのメッセージviから求められたφ(|vi|)の積算値から、求めたい枝からのメッセージviから求められたφ(|vi|)を減算して、その減算値D2271乃至D2279(i=1から8までのΣφ(|vi|))をLUT2241乃至2249にそれぞれ供給する。LUT2241乃至2249は、減算値D2271乃至D2279に対して、式(7)におけるφ-1(Σφ(|vi|))の演算を行った5ビットの演算結果D2281乃至D2289を読み出して出力する。
The
一方、EXOR回路225は、全ての符号ビットD2231乃至D2239の排他的論理和を演算することにより、符号ビットD2231乃至D2239の乗算を行い、1ビットの乗算値D226(1行分の符号ビットの乗算値(i=1から9までのΠsign(vi)))をEXOR回路2261乃至2269にそれぞれ供給する。EXOR回路2261乃至2269は、乗算値D226と符号ビットD2231乃至D2239それぞれとの排他的論理を演算することにより、乗算値D226を、符号ビットD2231乃至D2239それぞれで除算した1ビットの除算値D2291乃至D2299(i=1から8までのΠsign(vi))を求めて出力する。
On the other hand,
チェックノード計算器201mでは、LUT2241乃至2249から出力された5ビットの演算結果D2281乃至D2289それぞれを下位5ビットとするとともに、EXOR回路2261乃至2269から出力された除算値D2291乃至D2299それぞれを最上位ビットとする合計6ビットが、チェックノード演算の結果得られるメッセージD2301乃至D2309として出力される。 In the check node calculator 201 m , the 5-bit calculation results D228 1 to D228 9 output from the LUTs 224 1 to 224 9 are set to the lower 5 bits, and the division value D229 output from the EXOR circuits 226 1 to 226 9 is used. 1 to D229 9 total 6 bits of the most significant bit, respectively, are outputted as a message D230 1 to D230 9 obtained as a result of the check node operation.
以上のように、チェックノード計算器201mでは、式(7)の演算が行われ、メッセージujが求められる。 As described above, in the check node calculator 201 m , the calculation of Expression (7) is performed and the message u j is obtained.
なお、図13では、各メッセージが符号ビットを合わせて合計6ビットに量子化されているものとして、チェックノード計算器201mを表している。また、図13の回路は1つのチェックノードに相当する。ここで処理の対象としている図8の検査行列については、その行数である30行のチェックノードが存在するため、図12の復号装置は、図13に示したようなチェックノード計算器201mを30個有している。 In FIG. 13, the check node calculator 201 m is represented on the assumption that each message is quantized to a total of 6 bits including the sign bit. The circuit in FIG. 13 corresponds to one check node. Since the check matrix of FIG. 8 to be processed here has 30 check nodes, which is the number of rows, the decoding device of FIG. 12 uses the check node calculator 201 m as shown in FIG. 30 are included.
ここで、図13のチェックノード計算器201mでは、9個のメッセージを同時に計算することができる。そして、ここで処理の対象としている図8の検査行列の行の重みは、第1行が8で、第2乃至第30行が9であるため、即ち、チェックノードに供給されるメッセージの数が、8のケースが1つと、9のケースが29あるため、チェックノード計算器2011は、図13の回路と同様の8つのメッセージを同時に計算することができる回路構成となっており、残りのチェックノード計算器2012乃至20130は、図13の回路と同一構成となっている。 Here, the check node calculator 201 m in FIG. 13 can simultaneously calculate nine messages. The weights of the check matrix in FIG. 8 to be processed here are 8 for the first row and 9 for the second to 30th rows, that is, the number of messages supplied to the check node. but one of 8 cases, for 9 cases 29, the check node calculator 201 1 has a circuit configuration that can calculate the same eight messages and the circuit of Figure 13 at the same time, the remaining The check node calculators 201 2 to 20 30 have the same configuration as the circuit of FIG.
図14は、バリアブルノード演算を同時に行う図12のバリアブルノード計算器204p(p=1,2,・・・,90)の構成例を示している。 FIG. 14 shows a configuration example of the variable node calculator 204 p (p = 1, 2,..., 90) of FIG.
図14のバリアブルノード計算器204pでは、図11のバリアブルノード計算器103と同様にして、式(1)のバリアブルノード演算が行われるが、そのバリアブルノード演算が、すべての枝について同時に行われる。
In the
即ち、図14のバリアブルノード計算器204pでは、枝入れ替え装置203から供給される、検査行列の各行に対応するチェックノードからの6ビットのメッセージD2511乃至D2515(メッセージuj)が全て同時に読み込まれ、それぞれ加算器2521乃至2525に供給されるとともに、加算器251に供給される。また、バリアブルノード計算器204pには、受信用メモリ205から受信データD271が供給され、その受信データD271は、加減算器2521乃至2525に供給される。
That is, in the
加算器251は、全てのメッセージD2511乃至D2515(メッセージuj)を積算し、9ビットの積算値D252(1列分のメッセージの総和値(j=1から5までのΣuj))を加減算器2521乃至2525に供給する。加減算器2521乃至2525は、加算値D252から、メッセージD2511乃至D2515(メッセージuj)をそれぞれ減算する。即ち、加減算器2521乃至2525は、全ての枝からのメッセージujの積算値D252から、求めたい枝からのメッセージD2511乃至D2515(メッセージuj)をそれぞれ減算して、その減算値(j=1から4までのΣuj)を求める。
The
さらに、加減算器2521乃至2525は、減算値(j=1から4までのΣuj)に、受信データD271(u0i)を加算して、6ビットの加算値D2531乃至D2535を、バリアブルノード演算の結果として出力する。
Further, the adder /
以上のように、バリアブルノード計算器204pでは、式(1)の演算が行われ、メッセージviが求められる。
As described above, the
なお、図14では、各メッセージが符号ビットを合わせて合計6ビットに量子化されているものとして、バリアブルノード計算器204pを表している。また、図14の回路は1つのバリアブルノードに相当する。ここで処理の対象としている図8の検査行列については、その列数である90列のバリアブルノードが存在するから、図12の復号装置は、図14に示したような回路を90個有している。
In FIG. 14, the
ここで、図14のバリアブルノード計算器204pでは、5個のメッセージを同時に計算することができる。そして、ここで処理の対象としている図8の検査行列は、重みが5,3,2,1の列が、それぞれ、15列、45列、29列、1列あるので、バリアブルノード計算器2041乃至20490のうちの15個は、図14の回路と同一構成となっており、残りの45個、29個、1個は、図14の回路と同様の3,2,1つのメッセージをそれぞれ同時に計算することができる回路構成となっている。
Here, the
なお、図示しないが、図12の復号装置においても、図9における場合と同様に、復号の最終段においては、式(1)のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が最終的な復号結果として出力される。 Although not shown, in the decoding apparatus of FIG. 12 as well, in the final stage of decoding, the calculation of Expression (5) is performed instead of the variable node calculation of Expression (1). The calculation result is output as the final decoding result.
図12の復号装置によれば、269個ある枝に対応するメッセージすべてを1クロックで同時に計算することができる。 According to the decoding apparatus of FIG. 12, all the messages corresponding to 269 branches can be calculated simultaneously in one clock.
図12の復号装置を繰り返し用いて復号する場合には、チェックノード演算とバリアブルノード演算とを交互に行い、1回の復号を2クロックで行うことができる。従って、例えば、50回の復号を行うためには、符号長が90個の符号を1フレームとする受信データを受信する間に2×50=100クロック動作すれば良いことになり、ほぼ受信周波数と同一の動作周波数でよいことになる。一般的に、LDPC符号は、符号長が数千から数万と大きいことから、図12の復号装置を用いれば、復号回数を極めて多くすることができ、誤り訂正性能の向上を期待することができる。 When the decoding apparatus of FIG. 12 is repeatedly used for decoding, check node calculation and variable node calculation can be alternately performed, and one decoding can be performed in two clocks. Therefore, for example, in order to perform decoding 50 times, it is only necessary to operate 2 × 50 = 100 clocks during reception of reception data having a code length of 90 codes as one frame, and the reception frequency is almost the same. The same operating frequency is sufficient. In general, an LDPC code has a code length as large as several thousand to several tens of thousands. Therefore, if the decoding apparatus shown in FIG. 12 is used, the number of times of decoding can be extremely increased, and an improvement in error correction performance can be expected. it can.
しかしながら、図12の復号装置は、タナーグラフのすべての枝に対応するメッセージの演算を、並列で行うため、回路規模が、符号長に比例して大きくなる。また、図12の復号装置を、ある符号長の、ある符号化率の、ある検査行列を持つLDPC符号の復号を行う装置として構成した場合、その復号装置において、他の符号長や、他の符号化率、他の検査行列を持つLDPC符号の復号を行うことは困難となる。即ち、図12の復号装置は、図9の復号装置のように、制御信号を変えるだけでは、様々な符号を復号することに対処することが困難であり、符号依存性が高い。 However, since the decoding apparatus of FIG. 12 performs message operations corresponding to all branches of the Tanner graph in parallel, the circuit scale increases in proportion to the code length. In addition, when the decoding apparatus of FIG. 12 is configured as an apparatus that decodes an LDPC code having a certain check length and having a certain coding rate, in the decoding apparatus, other code lengths, It becomes difficult to decode an LDPC code having a coding rate and another check matrix. That is, like the decoding device of FIG. 9, the decoding device of FIG. 12 is difficult to cope with decoding various codes only by changing the control signal, and has high code dependency.
また、サムプロダクトアルゴリズムを近似して実装する方法なども提案されているが、この方法では、性能の劣化を招いてしまう。
上述したように、図9の復号装置を繰り返し用いて、LDPC符号の復号を行う場合、1フレームに対するチェックノード演算とバリアブルノード演算とは交互に行われる。即ち、図9の復号装置では、チェックノード計算器101とバリアブルノード計算器103のうちの一方の演算が終了し、その演算結果が枝用メモリ102または100に格納されるまで、チェックノード計算器101とバリアブルノード計算器103のうちの他方は、待機する必要があった。
As described above, when the LDPC code is decoded by repeatedly using the decoding apparatus of FIG. 9, the check node calculation and the variable node calculation for one frame are alternately performed. That is, in the decoding apparatus of FIG. 9, the
従って、図9の復号装置では、チェックノード計算器101とバリアブルノード計算器103のうちのどちらか一方が演算を行っている時間には、他方は演算を行わないことになり、必要なスループットを満たした上で、復号回数を増やすためには、復号装置を高速に動作させる必要があった。
Therefore, in the decoding device of FIG. 9, during the time when either one of the
しかしながら、復号装置を高速に動作させる場合、復号装置の動作周波数が高くなるため、消費電力が大となり、さらに、装置を構成する部分としても、高速動作に対応することができるものを用いる必要がある。一方、復号装置の動作周波数を抑えるために復号回数を抑えると、復号装置の復号性能を向上させることが困難であった。 However, when the decoding device is operated at high speed, the operating frequency of the decoding device increases, so that power consumption is large, and it is also necessary to use a component that can support high-speed operation as a part constituting the device. is there. On the other hand, if the number of times of decoding is suppressed to suppress the operating frequency of the decoding device, it is difficult to improve the decoding performance of the decoding device.
本発明は、このような状況に鑑みてなされたものであり、動作周波数および回路規模を抑えつつ、復号性能を向上させることができるようにするものである。 The present invention has been made in view of such circumstances, and is intended to improve decoding performance while suppressing the operating frequency and circuit scale.
本発明の復号装置は、LDPC符号を符号長であるフレーム単位で復号する復号装置であって、LDPC符号の第1のフレームと第2のフレームを交互に選択する選択手段と、第1のフレームと第2のフレームのうちの、選択手段により選択されていないフレームのLDPC符号の復号のためのチェックノードの演算を行うチェックノード計算手段と、第1のフレームと第2のフレームのうちの、選択手段により選択されたフレームのLDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算手段とを備えることを特徴とする。 The decoding apparatus according to the present invention is a decoding apparatus that decodes an LDPC code in units of frames having a code length, the selection means for alternately selecting a first frame and a second frame of an LDPC code, and a first frame And a check node calculation means for performing a check node operation for decoding an LDPC code of a frame not selected by the selection means, and a first frame and a second frame, Variable node calculation means for performing variable node calculation for decoding the LDPC code of the frame selected by the selection means.
第1のフレームと第2のフレームのLDPC符号を記憶するフレーム記憶手段と、フレーム記億手段に記憶された第1のフレームまたは第2のフレームのうちの、選択手段により選択されたフレームのLDPC符号をバリアブルノード計算手段に供給する供給手段とをさらに備えるようにすることができる。 Frame storage means for storing LDPC codes of the first frame and the second frame, and LDPC of the frame selected by the selection means among the first frame or the second frame stored in the frame storage means Supply means for supplying the code to the variable node calculation means can be further provided.
チェックノード計算手段により第1のフレームと第2のフレームのうちの一方のフレームのチェックノードの演算が行われるとき、バリアブルノード計算手段は、他方のフレームのバリアブルノードの演算を行うようにすることができる。 When the check node calculation unit calculates the check node of one of the first frame and the second frame, the variable node calculation unit calculates the variable node of the other frame. Can do.
チェックノードの演算、またはバリアブルノードの演算のうちの一方の演算に用いられる枝に対応するメッセージデータの読み出しと、他方の演算の結果得られる枝に対応するメッセージデータの書き込みとが同時に行われるメッセージ記憶手段をさらに備えるようにすることができる。 A message in which reading of message data corresponding to a branch used for one of a check node operation or a variable node operation and writing of message data corresponding to a branch obtained as a result of the other operation are performed simultaneously A storage means may be further provided.
メッセージ記憶手段は、デュアルポートRAM(Random Access Memory)であるようにすることができる。 The message storage means may be a dual port RAM (Random Access Memory).
第1のフレームと第2のフレームは、連続する2つのフレームであるようにすることができる。 The first frame and the second frame can be two consecutive frames.
本発明の復号方法は、LDPC符号を符号長であるフレーム単位で復号する復号装置の復号方法であって、LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップと、第1のフレームと第2のフレームのうちの、選択ステップの処理により選択されていないフレームのLDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップと、第1のフレームと第2のフレームのうちの、選択ステップの処理により選択されたフレームのLDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップとを含むことを特徴とする。 The decoding method of the present invention is a decoding method of a decoding apparatus that decodes an LDPC code in units of frames that are code lengths, and includes a selection step of alternately selecting a first frame and a second frame of an LDPC code, A check node calculation step for performing a check node operation for decoding an LDPC code of a frame that is not selected by the processing of the selection step among the first frame and the second frame, and the first frame and the second frame And a variable node calculation step of performing a variable node calculation for decoding an LDPC code of the frame selected by the processing of the selection step in the frame.
本発明のプログラムは、LDPC符号の符号長であるフレーム単位の復号をコンピュータに行わせるプログラムであって、LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップと、第1のフレームと第2のフレームのうちの、選択ステップの処理により選択されていないフレームのLDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップと、第1のフレームと第2のフレームのうちの、選択ステップの処理により選択されたフレームのLDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップとを備えることを特徴とする。 A program according to the present invention is a program for causing a computer to perform decoding in units of frames, which is the code length of an LDPC code, a selection step of alternately selecting a first frame and a second frame of an LDPC code, A check node calculation step for calculating a check node for decoding an LDPC code of a frame not selected by the selection step processing of the first frame and the second frame, and a first frame and a second frame And a variable node calculation step for performing a variable node calculation for decoding the LDPC code of the frame selected by the selection step processing.
本発明においては、それぞれ符号長である、LDPC符号の第1のフレームと第2のフレームが交互に選択される。そして、第1のフレームと第2のフレームのうちの、選択されていないフレームのLDPC符号の復号のためのチェックノードの演算が行われ、第1のフレームと第2のフレームのうちの、選択されたフレームのLDPC符号の復号のためのバリアブルノードの演算が行われる。 In the present invention, the first frame and the second frame of the LDPC code, each having a code length, are alternately selected. Then, a check node operation for decoding an LDPC code of an unselected frame of the first frame and the second frame is performed, and a selection is made between the first frame and the second frame. A variable node is calculated for decoding the LDPC code of the received frame.
本発明によれば、2つのフレームのLDPC符号の復号処理を行なうことができるので、LDPC符号の復号を効率よく行うようにすることができ、また、復号性能を向上させることが可能となる。 According to the present invention, since the decoding process of the LDPC code of two frames can be performed, it is possible to efficiently decode the LDPC code and improve the decoding performance.
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。 Embodiments of the present invention will be described below. Correspondences between constituent elements described in the claims and specific examples in the embodiments of the present invention are exemplified as follows. This description is to confirm that specific examples supporting the invention described in the claims are described in the embodiments of the invention. Therefore, even if there are specific examples that are described in the embodiment of the invention but are not described here as corresponding to the configuration requirements, the specific examples are not included in the configuration. It does not mean that it does not correspond to a requirement. On the contrary, even if a specific example is described here as corresponding to a configuration requirement, this means that the specific example does not correspond to a configuration requirement other than the configuration requirement. not.
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。 Further, this description does not mean that all the inventions corresponding to the specific examples described in the embodiments of the invention are described in the claims. In other words, this description is an invention corresponding to the specific example described in the embodiment of the invention, and the existence of an invention not described in the claims of this application, that is, in the future, a divisional application will be made. Nor does it deny the existence of an invention added by amendment.
請求項1に記載の復号装置(例えば、図15の復号装置400)は、LDPC(Low Density Parity Check)符号を符号長であるフレーム単位で復号する復号装置であって、前記LDPC符号の第1のフレーム(例えば、奇数フレーム)と第2のフレーム(例えば、偶数フレーム)を交互に選択する選択手段(例えば、図15の制御部401)と、前記第1のフレームと前記第2のフレームのうちの、前記選択手段により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算手段(例えば、図15のチェックノード計算器301)と、前記第1のフレームと前記第2のフレームのうちの、前記選択手段により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算手段(例えば、図15のバリアブルノード計算器303)とを備えることを特徴とする。
The decoding device according to claim 1 (for example, the
請求項2に記載の復号装置は、請求項1に記載の復号装置であって、前記第1のフレームと前記第2のフレームの前記LDPC符号を記憶するフレーム記憶手段(例えば、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403)と、前記フレーム記億手段に記憶された前記第1のフレームまたは前記第2のフレームのうちの、前記選択手段により選択されたフレームの前記LDPC符号を前記バリアブルノード計算手段に供給する供給手段(例えば、セレクタ404)とをさらに備えることを特徴とする。
A decoding device according to
請求項4に記載の復号装置は、請求項1に記載の復号装置であって、前記チェックノードの演算、または前記バリアブルノードの演算のうちの一方の演算に用いられる枝に対応するメッセージデータの読み出しと、他方の演算の結果得られる枝に対応するメッセージデータの書き込みとが同時に行われるメッセージ記憶手段(例えば、図15の枝用メモリ300と枝用メモリ302)をさらに備えることを特徴とする。
The decoding device according to
請求項7に記載の復号方法は、LDPC(Low Density Parity Check)符号を符号長であるフレーム単位で復号する復号装置の復号方法であって、前記LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップ(例えば、図16のステップS22、ステップS28)と、前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップ(例えば、図17のステップS42)と、前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップ(例えば、図18のステップS62)とを含むことを特徴とする。 The decoding method according to claim 7 is a decoding method of a decoding device that decodes an LDPC (Low Density Parity Check) code in units of a frame having a code length, the first frame and the second frame of the LDPC code. Selection step (for example, step S22 and step S28 in FIG. 16), and the LDPC of the frame that has not been selected by the processing of the selection step among the first frame and the second frame. A check node calculation step (for example, step S42 in FIG. 17) for calculating a check node for decoding a code, and the selection step of the first frame and the second frame are selected. A variable node calculation step for calculating a variable node for decoding the LDPC code of the frame (for example, step S62 in FIG. 18) Characterized in that it comprises and.
請求項8に記載のプログラムの各ステップの具体例も、請求項7に記載の復号方法の各ステップの発明の実施の形態における具体例と同様である。 A specific example of each step of the program according to claim 8 is also the same as the specific example in the embodiment of the invention of each step of the decoding method according to claim 7.
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。 Hereinafter, specific embodiments to which the present invention is applied will be described in detail with reference to the drawings.
図15は、本発明を適用した復号装置400の構成例を示すブロック図である。
FIG. 15 is a block diagram showing a configuration example of a
復号装置400は、枝用メモリ300、チェックノード計算器301、枝用メモリ302、バリアブルノード計算器303、制御部401、奇数フレーム受信用メモリ402、偶数フレーム受信用メモリ403、およびセレクタ404から構成される。
The
復号装置400では、1つの枝に対応するメッセージを1つずつ計算し、2フレームの受信データの復号を同時に行う。
In the
即ち、復号装置400では、チェックノード計算器301が、枝用メモリ300からメッセージデータを1つずつ読み出し、そのメッセージデータを用いて、チェックノード演算を行うと同時に、バリアブルノード計算器303が、枝用メモリ302からメッセージデータを1つずつ読み出し、そのメッセージデータを用いて、バリアブルノード演算を行う。そして、チェックノード計算器301が、チェックノード演算の結果得られるメッセージデータを1つずつ枝用メモリ302に格納すると同時に、バリアブルノード計算器303が、バリアブルノード演算の結果得られるメッセージデータを1つずつ枝用メモリ300に格納する。なお、チェックノード計算器301とバリアブルノード計算器303は、図10に示したチェックノード計算器101とバリアブルノード計算器103とそれぞれ同様に構成される。但し、チェックノード計算器301とバリアブルノード計算器303は、制御部401の制御にしたがい、あるフレームのチェックノード演算と、他のフレームのバリアブルノード演算を同時に(同一のタイミングで)行うようになっている。
That is, in the
枝用メモリ300は、バリアブルノード計算器303によるバリアブルノード演算の結果得られる枝に対応するメッセージ(データ)を格納し、既に格納してあるメッセージをチェックノード計算器301に供給する。即ち、枝用メモリ300は、バリアブルノード計算器303から供給され、チェックノード計算器301が演算する順番に格納してあるメッセージD401を1つずつ読み出し、チェックノード計算器301に供給すると同時に、バリアブルノード計算器303が出力するメッセージD405をメッセージD400として受信し、枝用メモリ300の既に読み出されたメッセージ(メッセージD401)が記憶されていたアドレスに書き込む。即ち、枝用メモリ300は、チェックノード演算に用いられるメッセージ(データ)D401の読み出しと、バリアブルノード演算の結果得られるメッセージ(データ)D400の書き込みとを、同時に行う。
The
なお、枝用メモリ300には、バリアブルノード計算器303のバリアブルノード演算により演算された枝に対応するメッセージが格納されるので、枝用メモリ300に格納されるデータ量、即ち、枝用メモリ300に必要とされる記憶容量は、メッセージの量子化ビット数と、全枝数との乗算値となる。このことは、前述の図9の枝用メモリ100についても同様である。
Since the
チェックノード計算器301には、枝用メモリ300からメッセージD401が供給されるとともに、制御部401から制御信号D408が供給される。チェックノード計算器301は、制御部401から供給される制御信号D408に基づき、前述の図9のチェックノード計算器101と同様に、枝用メモリ300から供給されるメッセージD401を用い、式(7)にしたがって、LDPC符号の復号のためのチェックノードの演算を行い、その演算によって求められたメッセージD402を、枝用メモリ302に供給する。チェックノード計算器301の詳細構成は、図10に示したチェックノード計算器101と同様である。
The
枝用メモリ302は、チェックノード計算器301によるチェックノード演算の結果得られる枝に対応するメッセージ(データ)を格納し、既に格納してあるメッセージをバリアブルノード計算器303に供給する。即ち、枝用メモリ302は、チェックノード計算器301から供給され、バリアブルノード計算器303が演算する順番に格納してあるメッセージD403を1つずつ読み出し、バリアブルノード計算器303に供給すると同時に、チェックノード計算器301が出力するメッセージD402を受信し、枝用メモリ302の既に読み出されたメッセージ(メッセージD403)が記憶されていたアドレスに書き込む。即ち、枝用メモリ302は、バリアブルノード演算に用いられるメッセージ(データ)D403の読み出しと、チェックノード演算の結果得られるメッセージ(データ)D402の書き込みとを、同時に行う。
The
なお、枝用メモリ302には、チェックノード計算器301のチェックノード演算により演算された枝に対応するメッセージが格納されるので、枝用メモリ301に格納されるデータ量、即ち、枝用メモリ302に必要とされる記憶容量は、メッセージの量子化ビット数と、全枝数との乗算値となる。このことは、前述の図9の枝用メモリ102についても同様である。
Since the
なお、枝用メモリ300と302は、同時に読み書き可能な、例えば、デュアルポートRAMで構成することができる。
Note that the
バリアブルノード計算器303には、枝用メモリ302からメッセージD403が供給される。また、バリアブルノード計算器303には、制御部401から制御信号D409が供給されるとともに、セレクタ404からLDPC符号の受信データD404が供給される。バリアブルノード計算器303は、制御信号D409に基づき、前述の図9のバリアブルノード計算器103と同様に、枝用メモリ302から供給されるメッセージD403とセレクタ404から供給される受信データD404を用い、式(1)にしたがって、LDPC符号の復号のためのバリアブルノード演算を行い、その演算の結果得られる枝に対応するメッセージD405を、メッセージD400として枝用メモリ300に供給する。バリアブルノード計算器303の詳細構成は、図11に示したバリアブルノード計算器103と同様である。
The
制御部401は、制御信号D408をチェックノード計算器301に、制御信号D409をバリアブルノード計算器303に、制御信号D410をセレクタ404にそれぞれ供給することにより制御する。
The
奇数フレーム受信用メモリ402は、例えば、最初のフレームから奇数番目のフレーム(以下、適宜、奇数フレームと称する)のLDPC符号化された受信データ(LDPC符号)D406を格納(記億)する。また、奇数フレーム受信用メモリ402は、既に格納されている受信データD406を読み出し、セレクタ404に供給する。
The odd-
偶数フレーム受信用メモリ403は、例えば、最初のフレームから偶数番目のフレーム(以下、適宜、偶数フレームと称する)のLDPC符号化された受信データ(LDPC符号)D407を格納(記億)する。また、偶数フレーム受信用メモリ403は、既に格納されている受信データD407を読み出し、セレクタ404に供給する。
The even
なお、フレーム単位の受信データは、図示せぬ受信部から奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に供給されて記憶される。また、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に格納されるデータ量、即ち、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に必要とされる記憶容量は、LDPC符号の符号長と、受信データの量子化ビット数との乗算値である。
The received data in units of frames is supplied from an unshown receiving unit to the odd
セレクタ404は、制御部401から供給される制御信号D410に基づいて、奇数フレーム受信用メモリ402から供給される受信データD406、または偶数フレーム受信用メモリ403から供給される受信データD407のうちのどちらか一方を、受信データD404として、バリアブルノード計算器303と、上述した式(5)の演算を行う不図示のブロックに供給する。
Based on the control signal D410 supplied from the
図16は、図15の復号装置400の復号処理を説明するフローチャートである。この処理は、例えば、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に、奇数フレームである1番目のフレームと偶数フレームである2番目のフレームの受信データが格納されたとき、開始される。このとき、奇数フレーム受信用メモリ402が、格納している奇数フレームである1番目のフレームの受信データD406を読み出して、セレクタ404に供給するとともに、偶数フレーム受信用メモリ403が、格納している偶数フレームである2番目のフレームの受信データD407を読み出して、セレクタ404に供給する。
FIG. 16 is a flowchart for explaining the decoding process of the
なお、復号装置400の復号回数Nは、例えば、あるフレームの受信データすべてが受信されてから、次のフレームの受信データすべてが受信されるまでの時間と、復号装置400の動作周波数とに基づいて、あらかじめ設定されている。また、ここでは、2フレームの受信後、その2フレームの復号を、次の2フレームを受信するまでの間、繰り返し行うものとする。
Note that the number of decoding times N of the
ステップS21において、制御部401は、不図示のカウンタの値Kを0に初期化し、ステップS22に進む。ステップS22において、制御部401は、バリアブルノード計算器303の対象フレームとして、奇数フレーム(第1のフレーム)または偶数フレーム(第2のフレーム)のうちの奇数フレームを選択し、制御信号D410が奇数フレームを選択するように設定する。即ち、制御部401は、奇数フレームの選択を表す制御信号D410をセレクタ404に供給する。このとき、セレクタ404は、制御部401から供給された制御信号D410にしたがい、奇数フレーム受信用メモリ402から供給された奇数フレームの受信データD406、または偶数フレーム受信用メモリ403から供給された偶数フレームの受信データD407のうちの対象フレーム(いまの場合、奇数フレーム)となっている受信データを選択し、受信データD404としてバリアブルノード計算器303に供給する。そして、制御部401は、ステップS22から、ステップS23−1とステップS23−2に進む。
In step S21, the
なお、ステップS23−1乃至ステップS27−1と、ステップS23−2乃至ステップS27−2は、同時に行われる。 Note that steps S23-1 to S27-1 and steps S23-2 to S27-2 are performed simultaneously.
ステップS23−1において、制御部401は、制御信号D408を0に設定し、チェックノード計算器301に供給し、ステップS24−1に進む。
In step S23-1, the
ステップS24−1において、チェックノード計算器301は、枝用メモリ300から後述するステップS30−2で格納された、対象フレームとして選択されていない方のフレーム(以下、適宜、非対象フレームという)である偶数フレームに対するバリアブルノード演算の結果得られるメッセージviを読み出し、式(7)にしたがって、非対象フレームに対するチェックノード演算を行う。
In step S 24-1, the
ステップS24−1の処理後は、ステップS25−1に進み、制御部401は、チェックノード計算器301が、検査行列の1行分のメッセージviを読み出したかどうかを判定し、検査行列の1行分のメッセージviを読み出していないと判定した場合、ステップS24−1に戻り、上述した処理を繰り返す。
After the process of step S24-1, the process proceeds to step S25-1, and the
ステップS25−1において、制御部401は、検査行列の1行に亘るメッセージviを読み出したと判定した場合、ステップS26−1に進み、制御信号D408を1に設定する。
例えば、検査行列の行の重みが「9」である場合、制御部401は、ステップS24−1とステップS25−1の処理を9回繰り返し行い、ステップS25−1からステップS26−1に進む。
In step S25-1, when the
For example, when the row weight of the parity check matrix is “9”, the
ステップS26−1の処理後は、ステップS27−1に進み、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了したかどうかを判定する。ステップS26−1において、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了していないと判定した場合、ステップS23−1に戻り、上述した処理を繰り返す。
After the processing of step S26-1, the process proceeds to step S27-1, and the
ステップS27−1において、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了したと判定した場合、ステップS28に進む。
If the
なお、カウンタの値Kが0である場合、非対象フレームに対して、後述するステップS30−2の処理が行われていないので、上述したステップS23−1乃至S27−1の処理は行なわれない。 If the value K of the counter is 0, the processing in steps S30-1 to S27-1 described above is not performed on the non-target frame because the processing in step S30-2 described later is not performed. .
一方、ステップS23−2において、制御部401は、制御信号D409を0に設定し、バリアブルノード計算器303に供給して、ステップS24−2に進む。
On the other hand, in step S23-2, the
ステップS24−2において、バリアブルノード計算器303は、枝用メモリ302から、後述するステップS30−1で格納された、対象フレームである奇数フレームに対するチェックノード演算の結果得られるメッセージujを読み出し、式(1)にしたがって、対象フレームに対するバリアブルノード演算を行う。なお、バリアブルノード計算器303は、最初のバリアブルノード演算を行う場合、即ち、カウンタの値Kが0である場合、まだステップS30−1の処理が行なわれていないので、メッセージujを初期値に設定し、バリアブルノード演算を行う。そして、バリアブルノード計算器303は、バリアブルノード演算の結果得られるメッセージviを枝用メモリ300に格納する。
In step S24-2, the
ステップS24−2の処理後は、ステップS25−2に進み、制御部401は、バリアブルノード計算器303が、検査行列の1列分のメッセージujを読み出したかどうかを判定し、検査行列の1列分のメッセージujを読み出していないと判定した場合、ステップS24−2に戻り、上述した処理を繰り返す。
After the processing of step S24-2, the process proceeds to step S25-2, and the
ステップS25−2において、制御部401は、検査行列の1列分のメッセージujを読み出したと判定した場合、ステップS26−2に進み、制御信号D409を1に設定する。
例えば、検査行列の列の重みが「5」である場合、制御部401は、ステップS24−2とステップS25−2の処理を5回繰り返し行い、ステップS25−2からステップS26−2に進む。
When determining in step S25-2 that the message u j for one column of the check matrix has been read, the
For example, when the column weight of the parity check matrix is “5”, the
ステップS26−2の処理後は、ステップS27−2に進み、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了したかどうかを判定する。ステップS26−2において、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了していないと判定した場合、ステップS23−2に戻り、上述した処理を繰り返す。
After the process of step S26-2, the process proceeds to step S27-2, and the
ステップS27−2において、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了したと判定した場合、ステップS28に進む。
In step S27-2, when the
ステップS23−1乃至ステップS27−1およびステップS23−2乃至ステップS27−2のように、復号装置400では、チェックノード計算器301による非対象フレームである偶数フレームに対するチェックノード演算と、バリアブルノード計算器303による対象フレームである奇数フレームに対するバリアブルノード演算とが、同時に行われる。
As in steps S23-1 to S27-1 and S23-2 to S27-2, in the
ステップS28において、制御部401は、バリアブルノード計算器303の対象フレームとして、奇数フレーム(第1のフレーム)または偶数フレーム(第2のフレーム)のうちの偶数フレームを選択し、制御信号D410が偶数フレームを選択するように設定する。即ち、制御部401は、偶数フレームの選択を表す制御信号D410をセレクタ404に供給する。このとき、セレクタ404は、制御部401から供給された制御信号D410にしたがい、奇数フレーム受信用メモリ402から供給された奇数フレームの受信データD406、または偶数フレーム受信用メモリ403から供給された偶数フレームの受信データD407のうちの対象フレーム(いまの場合、偶数フレーム)となっている受信データを選択し、受信データD404としてバリアブルノード計算器303に供給する。そして、制御部401は、ステップS28から、ステップS29−1とステップS29−2に進む。
In step S28, the
なお、ステップS29−1乃至ステップS33−1と、ステップS29−2乃至ステップS33−2とは、同時に行われる。 In addition, step S29-1 thru | or step S33-1 and step S29-2 thru | or step S33-2 are performed simultaneously.
ステップS29−1において、制御部401は、制御信号D408を0に設定し、チェックノード計算器301に供給し、ステップS30−1に進む。
In step S29-1, the
ステップS30−1において、チェックノード計算器301は、枝用メモリ300から、ステップS24−2で格納された、非対象フレームである奇数フレームに対するバリアブルノード演算の結果得られるメッセージviを読み出し、式(7)にしたがって、非対象フレームに対するチェックノード演算を行う。そして、チェックノード計算器301は、チェックノード演算の結果得られるメッセージujを枝用メモリ302に格納する。
In step S30-1, the
ステップS30−1の処理後は、ステップS31−1に進み、制御部401は、チェックノード計算器301が、検査行列の1行分のメッセージviを読み出したかどうかを判定し、検査行列の1行分のメッセージviを読み出していないと判定した場合、ステップS30−1に戻り、上述した処理を繰り返す。
After the process of step S30-1, the process proceeds to step S31-1, and the
ステップS31−1において、制御部401は、検査行列の1行分のメッセージviを読み出したと判定した場合、ステップS32−1に進み、制御信号D408を1に設定する。
例えば、検査行列の行の重みが「9」である場合、制御部401は、ステップS30−1とステップS31−1の処理を9回繰り返し行い、ステップS31−1からステップS32−1に進む。
In step S31-1, when it is determined that the message v i for one row of the check matrix has been read, the
For example, when the row weight of the parity check matrix is “9”, the
ステップS32−1の処理後は、ステップS33−1に進み、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了したかどうかを判定する。ステップS32−1において、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了していないと判定した場合、ステップS29−1に戻り、上述した処理を繰り返す。
After the process of step S32-1, the process proceeds to step S33-1, and the
ステップS33−1において、制御部401は、1フレーム分の受信データに対するチェックノード演算が終了したと判定した場合、ステップS34に進む。
In step S33-1, when the
一方、ステップS29−2において、制御部401は、制御信号D409を0に設定し、バリアブルノード計算器303に供給し、ステップS30−2に進む。
On the other hand, in step S29-2, the
ステップS30−2において、バリアブルノード計算器303は、枝用メモリ302から、ステップS24−1で格納された、対象フレームである偶数フレームに対するチェックノード演算の結果得られるメッセージujを読み出し、式(1)にしたがって、対象フレームに対するバリアブルノード演算を行う。そして、バリアブルノード計算器303は、バリアブルノード演算の結果得られるメッセージviを枝用メモリ300に格納する。
In step S30-2, the
ステップS30−2の処理後は、ステップS31−2に進み、制御部401は、バリアブルノード計算器303が、検査行列の1列分のメッセージujを読み出したかどうかを判定し、検査行列の1列分のメッセージujを読み出していないと判定した場合、ステップS30−2に戻り、上述した処理を繰り返す。
After the processing of step S30-2, the process proceeds to step S31-2, and the
ステップS31−2において、制御部401は、検査行列の1列分のメッセージujを読み出したと判定した場合、ステップS32−2に進み、制御信号D409を1に設定する。
例えば、検査行列の列の重みが「5」である場合、制御部401は、ステップS30−2とステップS31−2の処理を5回繰り返し行い、ステップS31−2からステップS32−2に進む。
In step S31-2, when the
For example, when the column weight of the parity check matrix is “5”, the
ステップS32−2の処理後は、ステップS33−2に進み、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了したかどうかを判定する。ステップS33−2において、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了していないと判定した場合、ステップS29−2に戻り、上述した処理を繰り返す。
After the process of step S32-2, the process proceeds to step S33-2, and the
ステップS33−2において、制御部401は、1フレーム分の受信データに対するバリアブルノード演算が終了したと判定した場合、ステップS34に進む。
In step S33-2, when the
ステップS29−1乃至ステップS33−1およびステップS29−2乃至ステップS33−2のように、復号装置400では、チェックノード計算器301による非対象フレームである奇数フレームに対するチェックノード演算とバリアブルノード計算器303による対象フレームである偶数フレームに対するバリアブルノード演算とが、同時に行われる。
As in steps S29-1 to S33-1 and steps S29-2 to S33-2, in the
ステップS34において、制御部401は、復号回数を表わすカウンタの値Kを1だけインクリメントし、ステップS35に進む。ステップS35において、制御部401は、カウンタの値Kが、予め設定された復号回数N以上であるかどうかを判定する。
In step S34, the
ステップS35において、カウンタの値Kが、復号回数N以上ではない(Nより小さい)と判定した場合、ステップS22に戻り、制御部401は、対象フレームを奇数フレームに変更し、制御信号D410が奇数フレームを選択するように設定される。従って、制御部401は、奇数フレームと偶数フレームを交互に、対象フレームとして選択する。そして、制御部401は、ステップS22からステップS23−1とステップS23−2に進み、上述した処理を繰り返す。
If it is determined in step S35 that the counter value K is not equal to or greater than the decoding count N (less than N), the process returns to step S22, the
以上のように、制御部401が、奇数フレームと偶数フレームを交互に、対象フレームとして選択し、バリアブルノード計算器303が、その選択された対象フレームのバリアブルノード演算を行うとともに、チェックノード計算器301が、奇数フレームと偶数フレームのうちの、非対象フレームのチェックノード演算を行うので、バリアブルノード計算器303では、奇数フレームと偶数フレームのバリアブルノードの演算が交互に行われ、チェックノード計算器301では、偶数フレームと奇数フレームのチェックノード演算が交互に行われる。
As described above, the
従って、奇数フレームと偶数フレームのうちの一方のバリアブルノード演算と他方のチェックノード演算とが同時に行われ、その後、他方のバリアブルノード演算と一方のチェックノード演算とが同時に行われることが繰り返される。 Therefore, one variable node operation and the other check node operation of the odd frame and the even frame are performed simultaneously, and thereafter, the other variable node operation and one check node operation are performed simultaneously.
一方、ステップS35において、制御部401は、カウンタの値KがN以上であると判定した場合、即ち、奇数フレームのN回の復号が終了した場合、ステップS35からステップS36に進む。このとき、不図示のブロックは、N回の復号が終了した奇数フレームについて、上述した式(5)にしたがって演算を行い、その演算結果をその奇数フレームの最終的な復号結果として出力するとともに、チェックノード計算器301は、偶数フレームに対して最後のチェックノード演算を行う。そして、偶数フレームのN回の復号が終了され、不図示のブロックは、そのN回の復号が終了した偶数フレームについて、上述した式(5)にしたがって演算を行い、その演算結果を、その偶数フレームの最終的な復号結果として出力する。
On the other hand, in step S35, when the
ステップS36において、制御部401は、復号すべき受信データが、まだ存在するかどうかを判定し、存在すると判定した場合、即ち、次の奇数フレームと偶数フレームの受信データが受信され、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403にそれぞれ供給された場合、奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403は、その奇数フレームと偶数フレームの受信データをそれぞれ記憶し、記憶した奇数フレームの受信データD406と偶数フレームの受信データD407をセレクタ404に供給して、ステップS21に戻り、以下、同様の処理が繰り返される。
In step S36, the
一方、ステップS36において、制御部401は、復号すべきフレームの受信データが存在しないと判定した場合、処理を終了する。
On the other hand, in step S36, when the
次に、図17と図18のフローチャートを用いて、図15のチェックノード計算器301とバリアブルノード計算器303の演算処理について説明する。なお、図17のチェックノード計算器301のチェックノード演算処理と、図18のバリアブルノード計算器303のバリアブルノード演算処理は、同時に行なわれる。
Next, calculation processing of the
図17は、図15のチェックノード計算器301のチェックノード演算処理を説明するフローチャートである。
FIG. 17 is a flowchart for explaining the check node calculation processing of the
ステップS41において、チェックノード計算器301は、枝用メモリ300から、バリアブルノード計算器303によるバリアブルノード演算の結果得られる枝に対応するメッセージD405(メッセージv)を取得し(読み出し)、ステップS42に進む。
In step S41, the
ステップS42において、チェックノード計算器301は、制御部401から供給される制御信号D408に基づき、メッセージD405を用いて、上述した式(7)にしたがって、チェックノード演算を行う。
In step S42, the
即ち、チェックノード計算器301は、既に枝用メモリ300に格納されているメッセージ、つまり、バリアブルノード計算器303の前回の処理対象である対象フレーム(奇数フレームと偶数フレームのうち、今回、対象フレームとして、制御部401により選択されていない非対象フレーム)に対するバリアブルノード演算の結果得られる枝に対応するメッセージD405を用いてチェックノード演算を行う。
That is, the
ステップS42の処理後は、ステップS43に進み、チェックノード計算器301は、チェックノード演算の結果得られる枝に対応するメッセージD402(メッセージu)を、枝用メモリ302に供給して格納し(書き込み)、いま非対象フレームとなっているフレームに対する処理を終了する。
After the processing of step S42, the process proceeds to step S43, and the
図18は、図15のバリアブルノード計算器303のバリアブルノード演算処理を説明するフローチャートである。
FIG. 18 is a flowchart for explaining variable node calculation processing of the
ステップS61において、バリアブルノード計算器303は、枝用メモリ302から、チェックノード計算器301によるチェックノード演算の結果得られる枝に対応するメッセージD403(メッセージu)を取得するとともに、セレクタ404を介して、奇数フレーム受信用メモリ402または偶数フレーム受信用メモリ403から対象フレームの受信データD404を取得する。なお、セレクタ404を介して供給された受信データD404のフレーム(対象フレーム)に対して、まだチェックノード演算が行われておらず、枝用メモリ302にメッセージD403が格納されていない場合、バリアブルノード計算器303は、メッセージD403を取得する代わりに、メッセージuを初期値に設定する。
In step S 61, the
ステップS61の処理後は、ステップS62に進み、バリアブルノード計算器303は、制御部401から供給される制御信号D409に基づいて、メッセージD403と対象フレームの受信データD404を用いて、上述した式(1)にしたがってバリアブルノード演算を行う。そして、バリアブルノード計算器303は、ステップS62からステップS63に進み、バリアブルノード演算の結果得られる枝に対応するメッセージD405(メッセージv)を枝用メモリ300に供給して格納し、いま対象フレームとなっているフレームに対する処理を終了する。
After the process of step S61, the process proceeds to step S62, and the
以上のように、チェックノード計算器301において、2つのフレームのチェックノード演算を交互に行うとともに、バリアブルノード計算器303において、その2つのフレームのバリアブルノード演算を交互に行うことにより、チェックノード計算器301とバリアブルノード計算器303では、2つのフレームのうちの一方のチェックノード演算またはバリアブルノード演算と、他方のバリアブルノード演算またはチェックノード演算とが、同時に演算が行われるので、理論的には、前述の図9の場合の2倍の回数の復号を行うことができる。
As described above, the
なお、図16では、奇数フレームと偶数フレームの2つのフレームの受信データの復号を、次の2つのフレームの受信データすべてを受信するまでの間行うようにしたが、1つのフレームの受信データの受信後、その受信データの復号を、その後の2つのフレームの受信データすべてを受信するまでの間行うこともできる。 In FIG. 16, the reception data of the two frames of the odd frame and the even frame is decoded until all the reception data of the next two frames are received. After reception, the received data can be decoded until all the received data of the subsequent two frames are received.
図19は、1フレームの受信データすべてを受信し終わるごとに、その1フレームの受信データの復号を開始し、各フレームにつき、次の2フレームの受信データすべてを受信するまで、復号を行う場合の、図15の復号装置400の処理の概要を説明するタイミングチャートである。
FIG. 19 shows a case where decoding of reception data of one frame is started every time reception of all reception data of one frame is completed, and decoding is performed until reception of all reception data of the next two frames is received for each frame. It is a timing chart explaining the outline | summary of the process of the
なお、図19において(後述する図20においても同様)、横軸は、時間を表している。また、図19では、復号回数は8回に設定されている。 In FIG. 19 (the same applies to FIG. 20 described later), the horizontal axis represents time. In FIG. 19, the number of times of decoding is set to 8.
図19上から1番目は、復号装置400が受信する受信データのフレームを表している。なお、n番目のフレームを、フレーム#nと表わすこととする。
The first from the top in FIG. 19 represents a frame of received data received by the
いま、フレーム#nに注目すると、復号装置400は、フレーム#nの受信データのすべての受信が完了し、その次の(連続する)フレーム#n+1の受信データの受信が開始されると、フレーム#nの復号を開始する。
Now, focusing on frame #n,
即ち、復号装置400では、バリアブルノード計算器303が、まず、フレーム#nの受信データを用いて、フレーム#nの1回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。さらに、チェックノード計算器301が、1回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの1回目のチェックノード演算を行い、その演算結果としてのメッセージを得る(図19上から2番目)。そして、バリアブルノード計算器303が、1回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの2回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る。さらに、チェックノード計算器301が、2回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの2回目のチェックノード演算を行い、その演算結果としてのメッセージを得る。以下、同様にして、復号装置400では、フレーム#nに対して、4回ずつのバリアブルノード演算とチェックノード演算が行われる。
That is, in the
その後、フレーム#n+1の受信データのすべての受信が完了する直前において、バリアブルノード計算器303が、4回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの5回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。
Thereafter, immediately before the reception of all the received data of frame # n + 1 is completed, the
そして、フレーム#n+1の受信データのすべての受信が完了し、その次のフレーム#n+2の受信データの受信が開始されると(図19上から1番目)、チェックノード計算器301が、5回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの5回目のチェックノード演算を行い、その演算結果としてのメッセージを得る(図19上から2番目)。さらに、バリアブルノード計算器303が、5回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの6回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る。さらに、チェックノード計算器301が、6回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの6回目のチェックノード演算を行い、その演算結果としてのメッセージを得る。以下、同様にして、復号装置400では、フレーム#nに対して、延べ8回ずつのバリアブルノード演算とチェックノード演算が行われる。
When reception of all received data of frame # n + 1 is completed and reception of received data of the next frame # n + 2 is started (first from the top in FIG. 19), the
その後、復号装置400では、8回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、式(5)の演算が行われ、これにより、フレーム#nの最終的な復号結果が求められる(図19下から1番目)。
After that, the
一方、復号装置400では、フレーム#n+1の受信データのすべての受信が完了し、その次のフレーム#n+2の受信データの受信が開始されると(図19上から1番目)、フレーム#nの復号と並列して、フレーム#n+1の復号が開始される。
On the other hand, in
即ち、フレーム#n+2の受信データの受信が開始されると、上述したように、チェックノード計算器301が、フレーム#nの5回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの5回目のチェックノード演算を行い、その演算結果としてのメッセージを得るが(図19上から2番目)、そのタイミングでは、バリアブルノード計算器303が、直前に受信が完了したフレーム#n+1の受信データを用いて、フレーム#n+1の1回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。つまり、フレーム#nの5回目のチェックノード演算と、フレーム#n+1の1回目のバリアブルノード演算とが、同時に行われる。
That is, when reception of the reception data of frame # n + 2 is started, as described above, the
その後、上述したように、バリアブルノード計算器303が、フレーム#nの5回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの6回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得るが(図19上から3番目)、そのタイミングでは、チェックノード計算器301が、フレーム#n+1の1回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#n+1の1回目のチェックノード演算を行い、その演算結果としてのメッセージを得る(図19上から2番目)。つまり、フレーム#nの6回目のバリアブルノード演算と、フレーム#n+1の1回目のチェックノード演算とが、同時に行われる。
After that, as described above, the
以下、同様にして、フレーム#nのチェックノード演算と、フレーム#n+1のバリアブルノード演算とが同時に行われることと、フレーム#nのバリアブルノード演算と、フレーム#n+1のチェックノード演算とが同時に行われることが、交互に繰り返される。 Hereinafter, similarly, the check node operation of frame #n and the variable node operation of frame # n + 1 are performed simultaneously, the variable node operation of frame #n, and the check node operation of frame # n + 1 are performed simultaneously. Are repeated alternately.
そして、フレーム#nに対して、延べ8回ずつのバリアブルノード演算とチェックノード演算が行われると、上述したように、8回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、式(5)の演算が行われ、これにより、フレーム#nの最終的な復号結果が求められる(図19下から1番目)。 Then, when variable node calculation and check node calculation are performed eight times in total for frame #n, as described above, the message as the result of the eighth check node calculation and the received data of frame #n are Thus, the calculation of Expression (5) is performed, and thereby the final decoding result of frame #n is obtained (first from the bottom in FIG. 19).
フレーム#nに対して、延べ8回ずつのバリアブルノード演算とチェックノード演算が行われた時点では、フレーム#n+1に対しては、4回ずつバリアブルノード演算とチェックノード演算が行われている。そして、フレーム#nの最終的な復号結果が得られると、バリアブルノード計算器303が、フレーム#n+1の4回目のチェックノード演算結果としてのメッセージと、フレーム#n+1の受信データを用いて、フレーム#n+1の5回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。
At the time when the variable node calculation and the check node calculation are performed a total of eight times for the frame #n, the variable node calculation and the check node calculation are performed four times for the frame # n + 1. When the final decoding result of frame #n is obtained, the
この時点で、フレーム#n+2の受信データのすべての受信が完了し(図19上から1番目)、その次のフレーム#n+3の受信データの受信が開始され、チェックノード計算器301が、フレーム#n+1の5回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#n+1の5回目のチェックノード演算を行い、その演算結果としてのメッセージを得る(図19上から2番目)。そのタイミングでは、バリアブルノード計算器303が、直前に受信が完了したフレーム#n+2の受信データを用いて、フレーム#n+2の1回目のバリアブルノード演算を行い、その演算結果としてのメッセージを得る(図19上から3番目)。つまり、フレーム#n+1の5回目のチェックノード演算と、フレーム#n+2の1回目のバリアブルノード演算とが、同時に行われる。
At this point, reception of all reception data of frame # n + 2 is completed (first from the top in FIG. 19), reception of reception data of the next frame # n + 3 is started, and the
以下、同様にして、フレーム#n+1のチェックノード演算と、フレーム#n+2のバリアブルノード演算とが同時に行われることと、フレーム#n+1のバリアブルノード演算と、フレーム#n+2のチェックノード演算とが同時に行われることが、交互に繰り返される。 Hereinafter, similarly, the check node operation of frame # n + 1 and the variable node operation of frame # n + 2 are performed simultaneously, the variable node operation of frame # n + 1, and the check node operation of frame # n + 2 are performed simultaneously. Are repeated alternately.
そして、フレーム#n+1に対して、延べ8回ずつのバリアブルノード演算とチェックノード演算が行われると、8回目のチェックノード演算結果としてのメッセージと、フレーム#n+1の受信データを用いて、式(5)の演算が行われ、これにより、フレーム#n+1の最終的な復号結果が求められる(図19下から1番目)。 Then, when variable node calculation and check node calculation are performed 8 times in total for frame # n + 1, the message (the result of the eighth check node calculation) and the received data of frame # n + 1 are used. 5) is performed, and thereby the final decoding result of frame # n + 1 is obtained (first from the bottom in FIG. 19).
フレーム#n+2以降のフレームも、同様にして復号されていく。 Frames after frame # n + 2 are similarly decoded.
以上のように、2つのフレームのうちの一方のチェックノード演算と、他方のバリアブルノード演算とを同時に行い、その後、他方のバリアブルノード演算と、一方のチェックノード演算とを同時に行うことを繰り返すことにより、1つのフレームのバリアブルノード演算だけを行い、その後、その1つのフレームのチェックノード演算だけを行うことを繰り返す場合に比較して、単純には、復号回数を2倍にすることができる。 As described above, one check node operation of two frames and the other variable node operation are simultaneously performed, and then the other variable node operation and one check node operation are simultaneously performed. Thus, the number of times of decoding can be simply doubled as compared to the case where only variable node calculation of one frame is performed and then only check node calculation of the one frame is repeated.
即ち、図20は、1つのフレームのバリアブルノード演算だけを行い、その後、その1つのフレームのチェックノード演算だけを行うことを繰り返す復号を行う従来の復号装置(例えば、図9の復号装置)の復号処理を説明するタイミングチャートである。 That is, FIG. 20 shows a conventional decoding apparatus (for example, the decoding apparatus in FIG. 9) that performs decoding by repeatedly performing only variable node calculation for one frame and then performing only check node calculation for that one frame. It is a timing chart explaining a decoding process.
なお、図20では、1フレームの受信データを受信するのに要する時間と、復号の動作周波数のいずれも、図19における場合と同一であるとする。 In FIG. 20, it is assumed that both the time required to receive one frame of received data and the decoding operating frequency are the same as those in FIG.
図20上から1番目は、従来の復号装置が受信する受信データのフレームを表しており、いまの場合、図19上から1番目と同一である。 The first from the top in FIG. 20 represents a frame of received data received by the conventional decoding device, and in this case, is the same as the first from the top in FIG.
いま、フレーム#nに注目すると、従来の復号装置は、フレーム#nの受信データのすべての受信が完了し、その次のフレーム#n+1の受信データの受信が開始されると、フレーム#nの復号を開始する。 Now, paying attention to frame #n, the conventional decoding apparatus completes reception of all received data of frame #n, and when reception of received data of the next frame # n + 1 is started, Start decryption.
即ち、従来の復号装置では、まず、フレーム#nの受信データを用いて、フレーム#nの1回目のバリアブルノード演算が行われ、その演算結果としてのメッセージが得られる(図20上から3番目)。さらに、フレーム#nの1回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの1回目のチェックノード演算が行われ、その演算結果としてのメッセージが得られる(図20上から2番目)。そして、フレーム#nの1回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、フレーム#nの2回目のバリアブルノード演算が行われ、その演算結果としてのメッセージが得られる。さらに、フレーム#nの2回目のバリアブルノード演算結果としてのメッセージを用いて、フレーム#nの2回目のチェックノード演算が行われ、その演算結果としてのメッセージが得られる。以下、同様にして、従来の復号装置では、フレーム#nに対して、4回ずつのバリアブルノード演算とチェックノード演算が行われる。 That is, in the conventional decoding device, first, the first variable node calculation of frame #n is performed using the received data of frame #n, and a message as the calculation result is obtained (third from the top in FIG. 20). ). Further, the first check node calculation of frame #n is performed using the message as the first variable node calculation result of frame #n, and the message as the calculation result is obtained (second from the top in FIG. 20). ). Then, the second variable node calculation of frame #n is performed using the message as the first check node calculation result of frame #n and the received data of frame #n, and the message as the calculation result is obtained. It is done. Further, the second check node calculation of frame #n is performed using the message as the second variable node calculation result of frame #n, and the message as the calculation result is obtained. Similarly, in the conventional decoding device, the variable node calculation and the check node calculation are performed four times for frame #n.
その後、フレーム#n+1の受信データのすべての受信が完了する直前において、フレーム#nの4回目のチェックノード演算結果としてのメッセージと、フレーム#nの受信データを用いて、式(5)の演算が行われ、これにより、フレーム#nの最終的な復号結果が求められる(図20下から1番目)。 Thereafter, immediately before the reception of all the received data of frame # n + 1 is completed, the calculation of Expression (5) is performed using the message as the fourth check node calculation result of frame #n and the received data of frame #n. As a result, the final decoding result of frame #n is obtained (first from the bottom in FIG. 20).
即ち、従来の復号装置では、フレーム#nのバリアブルノード演算またはチェックノード演算のいずれか一方が行われている間、他方の演算は行われない。このため、フレーム#nの受信データの復号は、例えば、その次のフレーム#n+1の受信データすべての受信が完了するまでの1フレームの期間に完了しなければならず、このため、フレーム#nについては、4回、即ち、図19における場合の1/2の回数の復号しか行うことができない。 That is, in the conventional decoding apparatus, while either the variable node calculation or the check node calculation of frame #n is performed, the other calculation is not performed. For this reason, the decoding of the received data of frame #n must be completed in the period of one frame until the reception of all the received data of the next frame # n + 1 is completed. Can be decoded only four times, that is, half the number of times of decoding in the case of FIG.
フレーム#nの最終的な復号結果が求められた後、フレーム#n+1の受信データのすべての受信が完了し、その次のフレーム#n+2の受信データの受信が開始されると、従来の復号装置は、上述したフレーム#nの復号を行う場合と同様に、フレーム#n+1の復号を開始する。従って、フレーム#n+1についても、図19における場合の1/2の回数である4回の復号しか行うことができない。 After the final decoding result of frame #n is obtained, when reception of all reception data of frame # n + 1 is completed and reception of reception data of the next frame # n + 2 is started, a conventional decoding device Starts decoding frame # n + 1 as in the case of decoding frame #n described above. Therefore, the frame # n + 1 can be decoded only four times, which is half the number in the case of FIG.
フレーム#n+2以降のフレームも、同様にして復号されていくため、やはり、図19における場合の1/2の回数である4回の復号しか行うことができない。 Since the frames after frame # n + 2 are also decoded in the same manner, the decoding can be performed only four times, which is half the number in FIG.
逆に言えば、図15の復号装置400は、従来の復号装置の2倍の回数の復号を行うことができる。
In other words, the
なお、図16のフローチャートで説明したように、2フレームの受信データすべてが受信されるのを待って、その2フレームの受信データの復号を、その次の2フレームの受信データすべてが受信されるまでの間行う場合であっても、また、図19で説明したように、1フレームの受信データすべてを受信するたびに、その1フレームの受信データの復号を、その次の2フレームの受信データすべてが受信されるまでの間行う場合であっても、復号回数は、従来の復号装置の2倍の回数とすることができる。但し、1フレームの受信データすべてを受信するたびに、その1フレームの受信データの復号を、その次の2フレームの受信データすべてが受信されるまでの間行う場合は、2フレームの受信データすべてが受信されるのを待って、その2フレームの受信データの復号を、その次の2フレームの受信データすべてが受信されるまでの間行う場合よりも、最初の1フレーム目の復号結果を、早期に得ることができる。 Note that, as described with reference to the flowchart of FIG. 16, after all the received data of two frames are received, the received data of the two frames are decoded, and all the received data of the next two frames are received. Even when the process is performed until the first frame, as described with reference to FIG. 19, each time all received data of one frame is received, the received data of the next two frames are decoded. Even if it is performed until all are received, the number of times of decoding can be set to twice that of the conventional decoding device. However, every time all the received data of one frame is received, when the received data of one frame is decoded until all the received data of the next two frames are received, all the received data of two frames Than the case where the received data of the two frames is decoded until all the received data of the next two frames are received, the decoding result of the first frame is Can be obtained early.
以上のように、復号装置400では、図9の復号装置の受信用メモリ104を、2つの奇数フレーム受信用メモリ402と偶数フレーム受信用メモリ403に変更するとともに、図9の制御部105を、制御部401に変更し、セレクタ404を新たに設けるという、僅かな変更を加えるだけで、従来に比べて効率の良い復号を行うことができる。
As described above, in the
また、復号装置400では、同一の動作周波数で、従来の2倍の復号回数の復号を行うことができ、これにより、復号性能を改善することができる。また、従来と同一の復号回数にした場合、復号装置400では、動作周波数を半分にすることができ、消費電力を抑えることがきる。従って、復号装置400では、消費電力を抑えて、従来と同一の性能の復号を行うことができる。
Also, the
なお、復号装置400は、全ての枝のメッセージを同時に行う復号装置やP個の枝のメッセージを同時に行う復号装置にも適用することができる。
Note that the
さらに、枝用メモリ300と枝用メモリ302は、デュアルポートRAMではなく、複数個のシングルポートRAMから構成されるようにしてもよい。この場合、1つのシングルポートRAMへの読み出しと書き込みが同時に重ならないように制御を行う必要がある。複数個のシングルポートRAMを用いた場合、デュアルポートRAMを用いる場合に比べて、復号装置400の回路規模を小さくすることができる。
Further, the
また、上述した説明では、奇数フレームと偶数フレームの2つのフレームの復号処理(バリアブルノードとチェックノードの演算)を同時に行うようにしたが、復号装置400を複数個接続することにより、3つ以上のフレームの復号処理を同時に行うようにすることもできる。 In the above description, the decoding process (arithmetic operation of the variable node and the check node) of two frames of the odd number frame and the even number frame is performed at the same time. It is also possible to simultaneously perform the decoding processing of the frames.
次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。 Next, the series of processes described above can be performed by hardware or software. When a series of processing is performed by software, a program constituting the software is installed in a general-purpose computer or the like.
そこで、図21は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。 Thus, FIG. 21 shows a configuration example of an embodiment of a computer in which a program for executing the series of processes described above is installed.
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク905やROM903に予め記録しておくことができる。
The program can be recorded in advance in a
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体911に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体911は、いわゆるパッケージソフトウエアとして提供することができる。
Alternatively, the program is stored temporarily on a
なお、プログラムは、上述したようなリムーバブル記録媒体911からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部908で受信し、内蔵するハードディスク905にインストールすることができる。
The program is installed in the computer from the
コンピュータは、CPU(Central Processing Unit)902を内蔵している。CPU902には、バス901を介して、入出力インタフェース910が接続されており、CPU902は、入出力インタフェース910を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部907が操作等されることにより指令が入力されると、それにしたがって、ROM(Read Only Memory)903に格納されているプログラムを実行する。あるいは、また、CPU902は、ハードディスク905に格納されているプログラム、衛星若しくはネットワークから転送され、通信部908で受信されてハードディスク905にインストールされたプログラム、またはドライブ909に装着されたリムーバブル記録媒体911から読み出されてハードディスク905にインストールされたプログラムを、RAM(Random Access Memory)904にロードして実行する。これにより、CPU902は、上述したフローチャートにしたがった処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU902は、その処理結果を、必要に応じて、例えば、入出力インタフェース910を介して、LCD(Liquid Crystal Display)やスピーカ等で構成される出力部906から出力、あるいは、通信部908から送信、さらには、ハードディスク905に記録等させる。
The computer includes a CPU (Central Processing Unit) 902. An input /
ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。 Here, in this specification, the processing steps for describing a program for causing a computer to perform various types of processing do not necessarily have to be processed in time series according to the order described in the flowchart, but in parallel or individually. This includes processing to be executed (for example, parallel processing or processing by an object).
また、プログラムは、1のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。 Further, the program may be processed by one computer or may be distributedly processed by a plurality of computers. Furthermore, the program may be transferred to a remote computer and executed.
300 枝用メモリ, 301 チェックノード計算器, 302 枝用メモリ, 303 バリアブルノード計算器, 400 復号装置, 401 制御部, 402 奇数フレーム受信用メモリ, 403 偶数フレーム受信用メモリ, 404 セレクタ, 901 バス, 902 CPU, 903 ROM, 904 RAM, 905 ハードディスク, 906 出力部, 907 入力部, 908 通信部, 909 ドライブ, 910 入出力インタフェース, 911 リムーバブル記録媒体 300 branch memory, 301 check node calculator, 302 branch memory, 303 variable node calculator, 400 decoding device, 401 control unit, 402 odd frame reception memory, 403 even frame reception memory, 404 selector, 901 bus, 902 CPU, 903 ROM, 904 RAM, 905 hard disk, 906 output unit, 907 input unit, 908 communication unit, 909 drive, 910 input / output interface, 911 removable recording medium
Claims (8)
前記LDPC符号の第1のフレームと第2のフレームを交互に選択する選択手段と、
前記第1のフレームと前記第2のフレームのうちの、前記選択手段により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算手段と、
前記第1のフレームと前記第2のフレームのうちの、前記選択手段により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算手段と
を備えることを特徴とする復号装置。 A decoding device that decodes LDPC (Low Density Parity Check) codes in units of frames that are code lengths ,
Selection means for alternately selecting the first frame and the second frame of the LDPC code;
Check node calculation means for performing a check node operation for decoding the LDPC code of a frame not selected by the selection means of the first frame and the second frame;
Variable node calculation means for calculating a variable node for decoding the LDPC code of the frame selected by the selection means of the first frame and the second frame is provided. Decoding device.
前記第1のフレームと前記第2のフレームの前記LDPC符号を記憶するフレーム記憶手段と、
前記フレーム記億手段に記憶された前記第1のフレームまたは前記第2のフレームのうちの、前記選択手段により選択されたフレームの前記LDPC符号を前記バリアブルノード計算手段に供給する供給手段と
をさらに備える
ことを特徴とする復号装置。 The decoding device according to claim 1,
Frame storage means for storing the LDPC codes of the first frame and the second frame;
A supply means for supplying the LDPC code of the frame selected by the selection means to the variable node calculation means among the first frame or the second frame stored in the frame storage means; A decoding apparatus comprising:
前記チェックノード計算手段により前記第1のフレームと前記第2のフレームのうちの一方のフレームのチェックノードの演算が行われるとき、前記バリアブルノード計算手段は、他方のフレームのバリアブルノードの演算を行う
ことを特徴とする復号装置。 The decoding device according to claim 1,
When the check node calculation unit calculates the check node of one of the first frame and the second frame, the variable node calculation unit calculates the variable node of the other frame. A decoding device characterized by the above.
前記チェックノードの演算、または前記バリアブルノードの演算のうちの一方の演算に用いられる枝に対応するメッセージデータの読み出しと、他方の演算の結果得られる枝に対応するメッセージデータの書き込みとが同時に行われるメッセージ記憶手段をさらに備える
ことを特徴とする復号装置。 The decoding device according to claim 1,
Reading the message data corresponding to the branch used for one of the check node operation or the variable node operation and writing the message data corresponding to the branch obtained as a result of the other operation are performed simultaneously. And a message storage means.
前記メッセージ記憶手段は、デュアルポートRAM(Random Access Memory)である
ことを特徴とする復号装置。 The decoding device according to claim 4, wherein
The message storage means is a dual port RAM (Random Access Memory).
前記第1のフレームと前記第2のフレームは、連続する2つのフレームである
ことを特徴とする復号装置。 The decoding device according to claim 1,
The decoding device, wherein the first frame and the second frame are two consecutive frames.
前記LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップと、
前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップと、
前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップと
を含むことを特徴とする復号方法。 A decoding method of a decoding device that decodes LDPC (Low Density Parity Check) code in units of frames that are code lengths ,
A selection step of alternately selecting a first frame and a second frame of the LDPC code;
A check node calculation step of performing a check node operation for decoding the LDPC code of a frame that has not been selected by the processing of the selection step among the first frame and the second frame;
A variable node calculation step of performing a variable node calculation for decoding the LDPC code of the frame selected by the selection step processing of the first frame and the second frame. Decoding method.
前記LDPC符号の第1のフレームと第2のフレームを交互に選択する選択ステップと、
前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されていないフレームの前記LDPC符号の復号のためのチェックノードの演算を行うチェックノード計算ステップと、
前記第1のフレームと前記第2のフレームのうちの、前記選択ステップの処理により選択されたフレームの前記LDPC符号の復号のためのバリアブルノードの演算を行うバリアブルノード計算ステップと
を備えることを特徴とするプログラム。 A program that causes a computer to perform decoding in units of frames, which is the code length of an LDPC (Low Density Parity Check) code,
A selection step of alternately selecting a first frame and a second frame of the LDPC code;
A check node calculation step of performing a check node operation for decoding the LDPC code of a frame that has not been selected by the processing of the selection step among the first frame and the second frame;
A variable node calculation step of performing a variable node calculation for decoding the LDPC code of the frame selected by the selection step processing of the first frame and the second frame. Program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003290605A JP4288582B2 (en) | 2003-08-08 | 2003-08-08 | Decoding device, decoding method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003290605A JP4288582B2 (en) | 2003-08-08 | 2003-08-08 | Decoding device, decoding method, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005064735A JP2005064735A (en) | 2005-03-10 |
JP4288582B2 true JP4288582B2 (en) | 2009-07-01 |
Family
ID=34368592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003290605A Expired - Fee Related JP4288582B2 (en) | 2003-08-08 | 2003-08-08 | Decoding device, decoding method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4288582B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4807063B2 (en) * | 2005-12-20 | 2011-11-02 | ソニー株式会社 | Decoding device, control method, and program |
-
2003
- 2003-08-08 JP JP2003290605A patent/JP4288582B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2005064735A (en) | 2005-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4807063B2 (en) | Decoding device, control method, and program | |
JP4224777B2 (en) | Decoding method, decoding apparatus, and program | |
JP4622654B2 (en) | Decoding device and decoding method | |
JP4595650B2 (en) | Decoding device and decoding method | |
KR101090001B1 (en) | Decoding device, decoding method, and recording medium | |
JP4487213B2 (en) | Decoding apparatus and method, and program | |
JP4293172B2 (en) | Decoding device and decoding method | |
JP4487212B2 (en) | Decoding device and method, transmission / reception system, receiving device and method, and program | |
JP2007036776A (en) | Decoding apparatus and decoding method | |
JP2005051469A (en) | Encoding device and encoding method, and program | |
JP4285148B2 (en) | Decoding device, decoding method, and program | |
JP4288582B2 (en) | Decoding device, decoding method, and program | |
JP4729964B2 (en) | Decoding device and decoding method | |
JP4284600B2 (en) | Decoding device | |
JP2008301152A (en) | Decoder and decoding method, and program | |
JP4822071B2 (en) | Decoding device and decoding method | |
JP2010028408A (en) | Information processing apparatus, information processing method, and program | |
JP4821724B2 (en) | Decoding device and decoding method | |
JP4780027B2 (en) | Decoding device, control method, and program | |
JP2007081602A (en) | Decoder and decoding method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060629 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081127 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090114 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090305 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090318 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120410 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |