明 細 書
復号装置および復号方法
技術分野
[0001] 本発明は、復号装置および復号方法に関し、特に、低密度パリティ検査符号 (LDP C符号)による符号ィ匕が施された符号の復号を行う復号装置および復号方法に関す る。
背景技術
[0002] 近年、例えば、移動体通信や深宇宙通信と!/、つた通信分野、及び地上波又は衛星 ディジタル放送といった放送分野の研究が著しく進められているが、それに伴い、誤 り訂正符号化及び復号の効率化を目的として符号理論に関する研究も盛んに行わ れている。
[0003] 符号性能の理論的限界としては、いわゆるシャノン (C. E. Shannon)の通信路符号 化定理によって与えられるシャノン限界が知られて 、る。符号理論に関する研究は、 このシャノン限界に近い性能を示す符号を開発することを目的として行われている。 近年では、シャノン限界に近い性能を示す符号ィ匕方法として、例えば、並列連接畳 み込み符号 (PCCC(Parallel Concatenated Convolutional Codes》や、縦列連接畳み 込み符号 (SCCC(Serially Concatenated Convolutional Codes》といった、いわゆるタ ーボ符号化 (Turbo coding)と呼ばれる手法が開発されている。また、これらのターボ 符号が開発される一方で、古くから知られる符号ィ匕方法である低密度パリティ検査符 号 (Low Density Parity Check codes) (以下、 LDPC符号という)が脚光を浴びつつあ る。
[0004] LDPC符号は、 R. G. Gallagerによる「R. G. Gallager, "Low Density Parity Check C odes", 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, "Analysi s of low density codes ana improved designs using irregular graphs , in Proceedings
of ACM Symposium on Theory of Computing, pp. 249-258, 1998」等において再注 目されるに至ったものである。
[0005] LDPC符号は、近年の研究により、ターボ符号等と同様に、符号長を長くしていくに したがって、シャノン限界に近い性能が得られることがわ力りつつある。また、 LDPC符 号は、最小距離が符号長に比例するという性質があることから、その特徴として、プロ ック誤り確率特性がよぐさらに、ターボ符号等の復号特性において観測される、いわ ゆるエラーフロア現象が殆ど生じないことも利点として挙げられる。
[0006] 以下、このような LDPC符号について具体的に説明する。なお、 LDPC符号は、線形 符号であり、必ずしも 2元である必要はないが、ここでは、 2元であるものとして説明す る。
[0007] LDPC符号は、その LDPC符号を定義する検査行列 (parity check matrix)が疎なも のであることを最大の特徴とするものである。ここで、疎な行列とは、行列のコンポ一 ネントの〃 1"の個数が非常に少なく構成されるものであり、疎な検査行列を Hで表すも のとすると、そのような検査行列 Hとしては、例えば、図 1に示すように、各列のハミン グ重み("1"の数) (weight)が" 3〃であり、且つ、各行のハミング重みが" 6〃であるもの等 がある。
[0008] このように、各行及び各列のハミング重みが一定である検査行列 Hによって定義さ れる LDPC符号は、レギュラー LDPC符号と称される。一方、各行及び各列のハミング 重みが一定でな 、検査行列 Hによって定義される LDPC符号は、イレギュラー LDPC 符号と称される。
[0009] このような LDPC符号による符号ィ匕は、検査行列 Hに基づいて生成行列 Gを生成し、 この生成行列 Gを 2元の情報メッセージに対して乗算することによって符号語を生成 することで実現される。具体的には、 LDPC符号による符号ィ匕を行う符号ィ匕装置は、ま ず、検査行列 Hの転置行列 Ητとの間に、式 GHT=0が成立する生成行列 Gを算出する 。ここで、生成行列 Gが、 kX n行列(k行 n列の行列)である場合には、検査行列 Hは、 n-k行 n列の行列である。
[0010] なお、例えば、 nビットの符号語じが、 kビットの情報メッセージ uに続けて、 n-kビットの ノ リティビットを配置したビット列に一致する組織符号である場合に、 n-k行 n列の検査
行列 Hにお 、て、 nビットの符号語 cのうちの kビットの情報メッセージ uに対応する n-k 行 k列の部分を情報部というとともに、 n-kビットのパリティビットに対応する n-k行 n-k 列の部分をパリティ部ということとすると、パリティ部が、下三角行列または上三角行 列になっていれば、情報メッセージ uの LDPC符号への符号ィ匕は、検査行列 Hを用い て行うことができる。
[0011] 即ち、例えば、検査行列 H力 図 2に示すように、情報部と、下三角行列のパリティ 部とで構成され、パリティ部の下三角の部分の要素が、すべて 1であるとすると、符号 語 cのパリティビットの 1番目のビットは、情報メッセージ uのうちの、検査行列 Hの情報 部の第 1行にぉ 、て 1になって!/、る要素に対応するビットの EXOR (排他的論理和)を 演算した値となる。
[0012] また、符号語 cのノ リティビットの 2番目のビットは、情報メッセージ uのうちの、検査行 列 Hの情報部の第 2行にぉ 、て 1になって 、る要素に対応するビットと、ノ リティビット の 1番目のビットの EXORを演算した値となる。
[0013] さらに、符号語 cのノ リティビットの 3番目のビットは、情報メッセージ uのうちの、検査 行列 Hの情報部の第 3行にぉ 、て 1になって 、る要素に対応するビットと、ノ リティビッ トの 1番目および 2番目のビットの EXORを演算した値となる。
[0014] 以下、同様にして、符号語 cのノ リティビットの潘目のビットは、情報メッセージ uのう ちの、検査行列 Hの情報部の第 i行にお 、て 1になって 、る要素に対応するビットと、 ノ リティビットの 1乃至卜 1番目のビットの EXORを演算した値となる。
[0015] 以上のようにして、 n-kビットのパリティビットを求め、 kビットの情報メッセージ uに続け て配置することにより、 nビットの符号語 cを得ることができる。
[0016] 一方、 LDPC符号の復号は、 Gallagerが確率復号 (Probabilistic Decoding)と称して 提案したアルゴリズムであって、ノ リアブルノード (variable node (メッセージノード (mes sage node)とも呼ばれる。;))と、チェックノード (check node)とからなる、いわゆるタナー グラフ (Tanner graph)上での確率伝播 (belief propagation)によるメッセージ ·パッシン グ.アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノード とチェックノードを、単に、ノードともいう。
[0017] し力しながら、確率復号においては、各ノード間で受け渡されるメッセージが実数値
であることから、解析的に解くためには、連続した値をとるメッセージの確率分布その ものを追跡する必要があり、非常に困難を伴う解析を必要とすることになる。そこで、 Gallagerは、 LDPC符号の復号アルゴリズムとして、アルゴリズム A又はアルゴリズム B を提案している。
[0018] LDPC符号の復号は、一般的には、図 3に示すような手順にしたがって行われる。な 、 :では、受信値を U (u )とし、チェックノードから出力されるメッセージを とし、 ノリアブルノードから出力されるメッセージを Vとする。また、ここでは、メッセージとは 、値の" 0〃らしさを、いわゆる対数尤度比 (log likelihood ratio)で表現した実数値であ る。さらに、受信値 Uの "0 "らしさの対数尤度比を、受信データ uと表すこととする。
0 0i
[0019] まず、 LDPC符号の復号においては、図 3に示すように、ステップ S11において、受 信値 U (u )が受信され、メッセージ uが" 0〃に初期化されるとともに、繰り返し処理の力
0 0i j
ゥンタとしての整数をとる変数 kが" 0Ίこ初期化され、ステップ S 12に進む。ステップ S 12において、受信値 U (u )に基づいて、式(1)に示す演算を行うことによってメッセ
0 0i
ージ Vが求められ、さらに、このメッセージ Vに基づいて、式(2)に示す演算を行うこと によってメッセージ uが求められる。
[0020] [数 1]
dv- 1
V i =U0 i + ∑ Uj
j =1
(1)
(2)
[0022] ここで、式(1)と式(2)における dvと は、それぞれ、検査行列 Hの縦方向(行方向) と横方向(列方向)の〃 1"の個数を示す任意に選択可能とされるパラメータであり、例 えば、(3,6)符号の場合には、 d =3, d =6となる。
[0023] なお、式(1)または(2)の演算においては、それぞれ、メッセージを出力しょうとする 枝 (edge)力も入力されたメッセージを、和または積演算のパラメータとしては用いな!/ヽ
ことから、和または積演算の範囲が、 1乃至 -1または 1乃至 d lとなっている。また、 式(2)に示す演算は、実際には、 2入力 V , Vに対する 1出力で定義される式(3)に
1 2
示す関数 R(v ,ν )のテーブルを予め作成しておき、これを式 (4)に示すように連続的(
1 2
再帰的)に用いることによって行われる。
[0024] [数 3] x=2tanh~1 {tanh (v,/2) tanh (v2/2) } =R ( , v2)
•••(3)
[0025] [数 4]
^:^ ^ ^, …!^ — 2, vdc—】))))
•••(4)
[0026] ステップ S12では、さらに、変数 kが "Γだけインクリメントされ、ステップ S13に進む。
ステップ S 13では、変数 kが所定の繰り返し復号回数 Ν以上であるか否かが判定され る。ステップ S 13において、変数 kが N以上ではないと判定された場合、ステップ S 12 に戻り、以下、同様の処理が繰り返される。
[0027] また、ステップ S 13において、変数 kが N以上であると判定された場合、ステップ S 14 に進み、式(5)に示す演算を行うことによって最終的に出力する復号結果としてのメ ッセージ Vが求められて出力され、 LDPC符号の復号処理が終了する。
[0028] [数 5]
dv
V = U0 i + ∑ Uj
J = 1
•••(5)
[0029] ここで、式(5)の演算は、式(1)の演算とは異なり、バリアブルノードに接続している 全ての枝からの入力メッセージを用いて行われる。
[0030] このような LDPC符号の復号は、例えば (3,6)符号の場合には、図 4に示すように、各 ノード間でメッセージの授受が行われる。なお、図 4における' '=〃で示すノード (バリア ブルノード)では、式(1)に示した演算が行われ、〃+"で示すノード (チェックノード)で は、式(2)に示した演算が行われる。特に、アルゴリズム Aにおいては、メッセージを 2
元化し、〃+"で示すノードにて、 d l個の入力メッセージの排他的論理和演算を行い 、 で示すノードにて、受信値 Rに対して、 d -1個の入力メッセージが全て異なるビッ ト値であった場合には、符号を反転して出力する。
[0031] また、一方で、近年、 LDPC符号の復号の実装法に関する研究も行われて 、る。実 装方法について述べる前に、まず、 LDPC符号の復号を摸式化して説明する。
[0032] 図 5は、(3,6)LDPC符号(符号化率 1/2、符号長 12)の検査行列 H(parity check matr ix)の例である。 LDPC符号の検査行列 Hは、図 6のように、タナーグラフを用いて書き 表すことができる。ここで、図 6において、 で表されるのが、チェックノードであり、 " = "で表されるのが、ノ リアブルノードである。チェックノードとバリアブルノードは、それ ぞれ、検査行列 Hの行と列に対応する。チェックノードとバリアブルノードとの間の結 線は、枝 (edge)であり、検査行列 Hの 'Tに相当する。即ち、検査行列 Hの第 j行第 i列 のコンポーネントが 1である場合には、図 6において、上から i番目のバリアブルノード ("="のノード)と、上から j番目のチェックノード ("+"のノード)とが、枝により接続される 。枝は、ノ リアブルノードに対応する符号ビットが、チェックノードに対応する拘束条 件を持つことを表す。なお、図 6は、図 5の検査行列 Hのタナーグラフとなっている。
[0033] LDPC符号の復号方法であるサムプロダクトアルゴリズム (Sum Product Algorithm)は 、 ノ リアブルノードの演算とチェックノードの演算とを繰り返し行う。
[0034] ノ リアブルノードでは、図 7のように、式(1)の演算を行う。すなわち、図 7において、 計算しょうとしている枝に対応するメッセージ Vは、ノ リアブルノードに繋がっている残 りの枝力 のメッセージ uおよび uと、受信情報 uを用いて計算される。他の枝に対応
1 2 0i
するメッセージも同様に計算される。
[0035] チェックノードの演算について説明する前に、式(2)を、式 a X b=exp{ln(|a|)+ln(|b|)}
X sign(a) X sign(b)の関係を用いて、式(6)のように書き直す。但し、 sign(x)は、 x≥0の とき 1であり、 x< 0のとき- 1である。
v dc- 1
=2tanh- exp - I n tanh x TT s i gn
2 i = 1
d i
•(6)
[0037] 更に、 x≥0において、 () (x)=ln(tanh(x/2》と定義すると、 φ— ^x^Stanh— — x)であるか ら、式 (6)は、式(7)のように書くことができる。
[0038] [数 7]
•••(7)
[0039] チェックノードでは、図 8のように、式(7)の演算を行う。すなわち、図 8において、計 算しょうとしている枝に対応するメッセージ uは、チェックノードに繋がっている残りの 枝力ゝらのメッセージ V ,ν ,ν ,ν ,νを用いて計算される。他の枝に対応するメッセージも
1 2 3 4 5
同様に計算される。
[0040] なお、関数 φ (X)は、 φ (x)=ln((ex+l)/(ex- 1》とも表すことができ、 x>0にお 、て、 φ (χ) = φ— )である。関数 φ および φ— )をノヽードウエアに実装する際には、 LUT(Look Up Table)を用いて実装される場合がある力 両者共に同一の LUTとなる。
[0041] サムプロダクトアルゴリズムをノヽードウエアに実装する場合、式(1)で表されるバリア ブルノード演算および式 (7)で表されるチェックノード演算を、適度な回路規模と動 作周波数で繰り返し行うことが必要である。
[0042] 復号装置の実装の例として、まず、単純に各ノードの演算を一つずつ順次行うこと によって復号を行う場合 (foil serial decoding)の実装法について説明する。
[0043] なお、ここでは、例えば、図 9の、 36 (行) X 108 (列)の検査行列 Hで表現される符
号 (符号化率 2/3、符号長 108)を復号することとする。図 9の検査行列 Hの 1の数は 32
3であり、従って、そのタナーグラフでは、枝の数は 323個となる。ここで、図 9の検査 行列 Hでは、 0を、 で表現している。
[0044] 図 10は、 LDPC符号の 1回復号を行う復号装置の構成例を示して!/ヽる。
[0045] 図 10の復号装置では、その動作する 1クロック (clock)ごとに、 1つの枝に対応するメ ッセージが計算される。
[0046] 即ち、図 10の復号装置は、 2つの枝用メモリ 100および 102、 1つのチェックノード 計算器 101、 1つのバリアブルノード計算器 103、 1つの受信用メモリ 104、 1つの制 御部 105からなる。
[0047] 図 10の復号装置では、枝用メモリ 100または 102からメッセージデータが 1つずつ 読み出され、そのメッセージデータを用いて、所望の枝に対応するメッセージデータ が計算される。そして、その計算によって求められたメッセージデータ力^つずつ後 段の枝用メモリ 102または 100に格納されていく。繰り返し復号を行う際には、この 1 回復号を行う図 10の復号装置を複数個縦列に連接するか、もしくは図 10の復号装 置を繰り返し用いることによって、繰り返し復号を実現する。なお、ここでは、例えば、 図 10の復号装置が複数個接続されているものとする。
[0048] 枝用メモリ 100は、前段の復号装置(図示せず)のバリアブルノード計算器 103から 供給されるメッセージ D100を、後段のチェックノード計算器 101が読み出す順番に格 納していく。そして、枝用メモリ 100は、チェックノード計算のフェーズでは、メッセージ D100を、格納してある順番通りに、メッセージ D101として、チェックノード計算器 101 に供給する。
[0049] チェックノード計算器 101は、制御部 105から供給される制御信号 D106に基づき、 枝用メモリ 100から供給されるメッセージ D101を用いて、式(7)に従って演算を行い、 その演算によって求められたメッセージ D102を、後段の枝用メモリ 102に供給する。
[0050] 枝用メモリ 102は、前段のチェックノード計算器 101から供給されるメッセージ D102 を、後段のバリアブルノード計算器 103が読み出す順番に格納していく。そして、枝 用メモリ 102は、ノ リアブルノード計算のフェーズでは、メッセージ D102を、格納して ある順番通りに、メッセージ D103として、ノ リアブルノード計算器 103に供給する。
[0051] さらに、バリアブルノード計算器 103には、制御部 105から制御信号 D107が供給さ れるとともに、受信用メモリ 104から受信データ D104が供給される。ノリアブルノード 計算器 103は、制御信号 D107に基づき、枝用メモリ 100から供給されるメッセージ D1 03と受信用メモリ 100から供給される受信データ D104を用い、式(1)に従って演算を 行い、その演算の結果得られるメッセージ D105を、図示せぬ後段の復号装置の枝用 メモリ 100に供給する。
[0052] 受信用メモリ 104には、 LDPC符号化された受信データ(LDPC符号)が格納される 。制御部 105は、バリアブルノード演算を制御する制御信号 D106と、チェックノード演 算を制御する制御信号 D107を、それぞれチヱックノード計算器 101とバリアブルノー ド計算器 103に供給する。制御部 105は、枝用メモリ 100に全ての枝のメッセージが 格納されたとき、チェックノード計算器 101に制御信号 D106を供給し、枝用メモリ 102 に全ての枝のメッセ一が格納されたとき、バリアブルノード計算器 103に制御信号 D1 07を供給する。
[0053] 図 11は、チェックノード演算を 1つずつ行う図 10のチェックノード計算器 101の構成 例を示している。
[0054] なお、図 11では、各メッセージが符号ビットを合わせて合計 6ビット (bit)に量子化さ れているものとして、チェックノード計算器 101を表している。また、図 11では、図 9の 検査行列 Hで表される LDPC符号のチェックノード演算が行われる。さらに、図 11のチ エックノード演算器 101には、クロック ckが供給され、このクロック ckは、必要なブロッ クに供給されるようになっている。そして、各ブロックは、クロック ck〖こ同期して処理を 行う。
[0055] 図 11のチェックノード計算器 101は、制御部 105から供給される、例えば、 1ビットの 制御信号 D106に基づき、枝用メモリ 100から 1つずつ読み込まれるメッセージ D101を 用いて、式(7)にしたがって演算を行う。
[0056] 即ち、チェックノード計算器 101では、検査行列 Hの各列に対応するバリアブルノー ドからの 6ビットのメッセージ D101 (メッセージ V )が 1つずつ読み込まれ、その下位ビッ トである絶対値 D122(|v|)が LUT121に、その最上位ビットである符号ビット D121が EX OR回路 129と FIFO(First In First Out)メモリ 133にそれぞれ供給される。また、チェ
ックノード計算器 101には、制御部 105から制御信号 D106が供給され、その制御信 号 D106は、セレクタ 124とセレクタ 131に供給される。
[0057] LUT121は、絶対値 D122(|v |)に対して、式(7)における φ (|ν|)の演算を行った 5ビッ トの演算結果 0123 ( φ (|ν |))を読み出し、加算器 122と FIFOメモリ 127に供給する。
[0058] カロ算器 122は、演算結果 0123 ( φ (|ν |))とレジスタ 123に格納されている 9ビットの 値 D124とを加算することにより、演算結果 D123を積算し、その結果得られる 9ビットの 積算値をレジスタ 123に再格納する。なお、検査行列 Ηの 1行に亘る全ての枝からの メッセージ D101の絶対値 D122(|v |)に対する演算結果が積算された場合、レジスタ 12
3はリセットされる。
[0059] 検査行列 Hの 1行に亘るメッセージ D101が 1つずつ読み込まれ、レジスタ 123に 1行 分の演算結果 D123が積算された積算値が格納された場合、制御部 105から供給さ れる制御信号 D106は、 0力ら 1に変ィ匕する。例えば、行の重み (row weight)が「9」で ある場合、制御信号 D106は、 1から 8クロック目までは、「0」となり、 9クロック目では「1 」となる。
[0060] 制御信号 D106が「1」の場合、セレクタ 124は、レジスタ 123に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101 (メッセージ v.)から求 められた φ (|v |)が積算された 9ビットの値 D124 (i= 1から i= dまでの∑ φ (|ν |))を選択 し、値 D125として、レジスタ 125に出力して格納させる。レジスタ 125は、格納してい る値 D125を、 9ビットの値 D126として、セレクタ 124と加算器 126に供給する。制御信 号 D106が「0」の場合、セレクタ 124は、レジスタ 125から供給された値 D126を選択し 、レジスタ 125に出力して再格納させる。即ち、検査行列 Hの 1行に亘る全ての枝から のメッセージ D101 (メッセージ V)から求められた φ (|v |)が積算されるまで、レジスタ 12 5は、前回積算された φ (|ν|)を、セレクタ 124と加算器 126に供給する。
[0061] 一方、 FIFOメモリ 127は、レジスタ 125から新たな値 D126 (i= lから i= dまでの∑ φ (|v|))が出力されるまでの間、 LUT121が出力した演算結果 D123 ( φ (|ν |))を遅延し 、 5ビットの値 D127として減算器 126に供給する。減算器 126は、レジスタ 125から供 給された値 D126から、 FIFOメモリ 127から供給された値 D127を減算し、その減算結 果を、 5ビットの減算値 D128として LUT128に供給する。即ち、減算器 126は、検査
行列 Hの 1行に亘る全ての枝からのメッセージ D101 (メッセージ V )から求められた φ (| v |)の積算値から、求めたい枝からのメッセージ D101 (メッセージ V )から求められた φ ( |v |)を減算して、その減算値 (i= lから i=d— 1までの∑ φ (|ν|))を減算値 D128として LUT128に供給する。
[0062] なお、減算器 126は、レジスタ 125から供給される 9ビットの値 D126から、 FIFOメモリ 127から供給される 5ビットの値 D127を減算するから、その減算結果は、最大で 9ビッ トとなり得るのに対して、 5ビットの減算値 D128を出力する。このため、レジスタ 125か ら供給される 9ビットの値 D126から、 FIFOメモリ 127から供給される 5ビットの値 D127 を減算した減算結果が、 5ビットで表せない場合、つまり、減算結果が、 5ビットで表す ことができる最大値(31 (2進数では 11111) )を越える場合には、減算器 126は、減 算結果を、 5ビットで表すことができる最大値にクリッピングし、 5ビットの減算値 D128 を出力する。
[0063] LUT128は、減算値 D128 (i= lから i=d— 1までの∑ φ (|ν |))に対して、式(7)にお ける φ— 1 (∑ φ (|ν |))の演算を行った 5ビットの演算結果 D129 ( _1(∑ (|ν|)))を出力 する。
[0064] 以上の処理と並行して、 EXOR回路 129は、レジスタ 130に格納されている 1ビット の値 D131と符号ビット D121との排他的論理和を演算することにより、符号ビットどうし の乗算を行い、 1ビットの乗算結果 D130をレジスタ 130に再格納する。なお、検査行 列 Ηの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121が乗算された場合 、レジスタ 130はリセットされる。
[0065] 検査行列 Ηの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121が乗算さ れた乗算結果 D130 (i= lから dまでの nsign(v))がレジスタ 130に格納された場合、 制御部 105から供給される制御信号 D106は、「0」から「1」に変化する。
[0066] 制御信号 D106が「1」の場合、セレクタ 131は、レジスタ 130に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121が乗 算された値 D131 (i= 1から i=dまでの nsign(v))を選択し、 1ビットの値 D132としてレ ジスタ 132に出力して格納させる。レジスタ 132は、格納している値 D132を、 1ビットの 値 D133としてセレクタ 131と EXOR回路 134に供給する。制御信号 D106が「0」の場
合、セレクタ 131は、レジスタ 132から供給された値 D133を選択し、レジスタ 132に出 力して再格納させる。即ち、検査行列 Hの 1行に亘る全ての枝力ものメッセージ D101 ( メッセージ V )の符号ビット D121が乗算されるまで、レジスタ 132は、前回格納した値を 、セレクタ 131と EXOR回路 134に供給する。
[0067] 一方、 FIFOメモリ 133は、レジスタ 132から新たな値 D133 (i= 1から i=dまでの Ilsi gn(v))が EXOR回路 134に供給されるまでの間、符号ビット D121を遅延し、 1ビットの 値 D134として EXOR回路 134に供給する。 EXOR回路 134は、レジスタ 132から供給 された値 D133と、 FIFOメモリ 133から供給された値 D134との排他的論理和を演算す ることにより、値 D133を、値 D134で除算し、 1ビットの除算結果を除算値 D135として出 力する。即ち、 EXOR回路 134は、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121 (sign(|v |))の乗算値を、求めたい枝からのメッセージ D101の 符号ビット D121 (sign(|v |))で除算して、その除算値 (i= lから i=d— 1までの risign(| v |))を除算値 D135として出力する。
[0068] チェックノード計算器 101では、 LUT128から出力された 5ビットの演算結果 D129を 下位 5ビットとするとともに、 EXOR回路 134から出力された 1ビットの除算値 D135を最 上位ビットとする合計 6ビットがメッセージ D102 (メッセージ u)として出力される。
[0069] 以上のように、チェックノード計算器 101では、式(7)の演算が行われ、メッセージ u が求められる。
[0070] なお、図 9の検査行列 Hの行の重みの最大は 9であるため、即ち、チヱックノードに 供給されるメッセージの最大数は 9であるため、チェックノード計算器 101は、 9個のメ ッセージ( φ (|v |))を遅延させる FIFOメモリ 127と FIFOメモリ 133を有して!/、る。
行の重みが 9未満の行のメッセージを計算するときには、 FIFOメモリ 127と FIFOメモリ 133における遅延量力 その行の重みの値に減らされる。
[0071] 図 12は、ノ リアブルノード演算を 1つずつ行う図 10のノ リアブルノード計算器 103 の構成例を示している。
[0072] なお、図 12では、各メッセージが符号ビットを合わせて合計 6ビット (bit)に量子化さ れているものとして、ノ リアブルノード計算器 103を表している。また、図 12では、図 9 の検査行列 Hで表される LDPC符号のノ リアブルノード演算が行われる。さらに、図 1
2のノ リアブルノード計算機 103には、クロック ckが供給され、クロック ckは、必要なブ ロックに供給されるようになっている。そして、各ブロックは、クロック ckに同期して処 理を行う。
[0073] 図 12のバリアブルノード計算器 103は、制御部 105から供給される、例えば、 1ビッ トの制御信号 D107に基づき、枝用メモリ 102から 1つずつ読み込まれるメッセージ D1 03と、受信用メモリ 104から読み込まれる受信データ D104を用いて、式(1)にしたが つて演算を行う。
[0074] 即ち、ノ リアブルノード計算器 103では、検査行列 Hの各行に対応するチェックノー ドからの 6ビットのメッセージ D103 (メッセージ u)が 1つずつ読み込まれ、そのメッセ一 ジ D103が、加算器 151と FIFOメモリ 155に供給される。また、ノ リアブルノード計算器 103では、受信用メモリ 104から 6ビットの受信データ D104が 1つずつ読み込まれ、加 算器 156に供給される。さらに、バリアブルノード計算器 103には、制御部 105から制 御信号 D107が供給され、その制御信号 D107は、セレクタ 153に供給される。
[0075] 加算器 151は、メッセージ D103 (メッセージ u)とレジスタ 152に格納されている 9ビッ トの値 D151とを加算することにより、メッセージ D103を積算し、その結果得られる 9ビッ トの積算値を、レジスタ 152に再格納する。なお、検査行列 Hの 1列に亘る全ての枝か らのメッセージ D103が積算された場合、レジスタ 152はリセットされる。
[0076] 検査行列 Hの 1列に亘るメッセージ D103が 1つずつ読み込まれ、レジスタ 152に 1列 分のメッセージ D103が積算された値が格納された場合、制御部 105から供給される 制御信号 D107は、「0」から「1」に変化する。例えば、列の重みが「5」である場合、制 御信号 D107は、 1から 4クロック目までは「0」となり、 5クロック目では「1」となる。
[0077] 制御信号 D107が「1」の場合、セレクタ 153は、レジスタ 152に格納されている値、 即ち、検査行列 Hの 1列に亘る全ての枝からのメッセージ D103 (メッセージ u)が積算 された 9ビットの値 D151 (i = lから dまでの∑u)を選択し、レジスタ 154に出力して格
V j
納させる。レジスタ 154は、格納している値 D151を、 9ビットの値 D152として、セレクタ 153と加減算器 156に供給する。制御信号 D107が「0」の場合、セレクタ 153は、レジ スタ 154から供給された値 D152を選択し、レジスタ 154に出力し再格納させる。即ち 、検査行列 Hの 1列に亘る全ての枝からのメッセージ D103 (メッセージ u)が積算され
るまで、レジスタ 154は、前回積算された値を、セレクタ 153と加減算器 156に供給す る。
[0078] 一方、 FIFOメモリ 155は、レジスタ 154から新たな値 D152 (j = lから dまでの∑u)が
V j 出力されるまでの間、チェックノードからのメッセージ D103を遅延し、 6ビットの値 D153 として加減算器 156に供給する。加減算器 156は、レジスタ 154から供給された値 D1 52から、 FIFOメモリ 155から供給された値 D153を減算する。即ち、加減算器 156は、 検査行列 Hの 1列に亘る全ての枝からのメッセージ D103 (メッセージ u)の積算値から 、求めたい枝からのメッセージ uを減算して、その減算値 (j = lから d— 1までの∑u) を求める。さらに、加減算器 156には、その減算値 (j = 1から d - 1までの∑ u)に、受 信用メモリ 104から供給された受信データ D104を加算して、その結果得られる 6ビット の値をメッセージ D105 (メッセージ V )として出力する。
[0079] 以上のように、ノ リアブルノード計算器 103では、式(1)の演算が行われ、メッセ一 ジ v.が求められる。
[0080] なお、図 9の検査行列 Hの列の重みの最大は 5であるため、即ち、バリアブルノード に供給されるメッセージの最大数は 5であるため、ノ リアブルノード計算器 103は、 5 個のメッセージ (u )を遅延させる FIFOメモリ 155を有して!/、る。列の重みが 5未満の 列のメッセージを計算するときには、 FIFOメモリ 155における遅延量力 その列の重 みの値に減らされる。
[0081] また、カロ減算器 156は、レジスタ 154から供給される 9ビットの値 D152から、 FIFOメ モリ 155から供給される 6ビットの値 D153を減算するとともに、受信用メモリ 104から供 給される 6ビットの受信データ D104を加算する演算を行うから、その演算結果は、 6ビ ットのメッセージ D105で表すことができる最小値未満となる力 または最大値を越える ことがある。加減算器 156は、演算結果が、 6ビットのメッセージ D105で表すことがで きる最小値未満である場合には、その最小値にクリッピングし、演算結果が、 6ビット のメッセージ D105で表すことができる最大値を越える場合には、その最大値にクリツ ビングする。
[0082] 図 10の復号装置では、検査行列 Hの重みにしたがって、制御部 105から制御信号 が与えられる。そして、図 10の復号装置によれば、枝用メモリ 100および 102、並び
にチェックノード計算器 101およびバリアブルノード計算器 103の FIFOメモリ 127, 1 33, 155の容量さえ足りれば、制御信号のみを変えることで様々な検査行列 Hの LDP C符号を復号することができる。
[0083] なお、図示しないが、図 10の復号装置において、復号の最終段においては、式(1 )のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が、最 終的な復号結果として出力される。
[0084] 図 10の復号装置を繰り返し用いて、 LDPC符号を復号する場合には、チェックノー ド演算とバリアブルノード演算とが交互に行われる。即ち、図 10の復号装置では、チ エックノード計算器 101によるチェックノード演算の結果を用いて、バリアブルノード計 算器 103によりバリアブルノード演算が行われ、ノリアブルノード計算器 103によるバ リアブルノード演算の結果を用いて、チェックノード計算器 101によりチェックノード演 算が行われる。
[0085] 従って、 323の枝を有する図 9の検査行列 Hを用いた 1回の復号に、 323 X 2=646ク ロック (clock)を必要とする。例えば、 50回の繰り返し復号を行うためには、符号長であ る 108個の符号(受信データ)を 1フレームとして、その 1フレームを受信する間に、 646 X 50=32300クロック動作することが必要であり、受信周波数の約 300 (^32300/108) 倍の高速動作が必要になる。受信周波数が数十 MHzであるとすると、 GHz以上の速 度での動作を要求されることになる
[0086] また、図 10の復号装置を、例えば、 50台連接して、 LDPC符号を復号する場合に は、 1フレーム (frame)目のバリアブルノード演算を行っている間に、 2フレーム目のチ エックノード演算を行い、 3フレーム目のバリアブルノード演算を行う、というように、複 数のノリアブルノード演算とチェックノード演算とを同時に行うことができる。この場合 、 108個の符号を受信する間に、 323個の枝を計算すればよいので、復号装置は、受 信周波数の約 3 (^323/108)倍の周波数で動作すればよいことになり、十分に実現 可能である。
しかしながら、この場合、回路規模が、単純には、図 10の復号装置の 50倍になる。
[0087] 次に、全ノードの演算を同時に行うことによって復号を行う場合 (foil parallel decodin g)の復号装置の実装法にっ 、て説明する。
[0088] この実装法については、例えば、非特許文献 1に記載されている。
[0089] 図 13は、図 9の検査行列 Hで表現される符号 (符号化率 2/3、符号長 108)を復号す る復号装置の一例の構成を示して ヽる。
[0090] 図 13の復号装置では、枝用メモリ 202または 206から、 323個ある枝に対応するメ ッセージデータを全て同時に読み出し、そのメッセージデータを用いて、 323個の枝 に対応する新たなメッセージデータを演算する。さらに、その演算の結果求められた 新たなメッセージデータが全て同時に後段の枝用メモリ 206または 202に格納されて いく。そして、図 13の復号装置を繰り返し用いることで繰り返し復号が実現される。
[0091] 図 13において、復号装置は、 1つの受信用メモリ 205、 2つの枝入れ替え装置 200 および 203、 2つの枝用メモリ 202および 206、 36個のチェックノード計算器 201乃
1 至 201 、 108個のノリアブルノード計算器 204乃至 204 力らなる。以下、各部に
36 1 108
ついて詳細に説明する。
[0092] 枝用メモリ 206は、前段のバリアブルノード計算器 204乃至 204 力ものメッセージ
1 108
D206乃至 D206 を全て同時に格納し、次の時刻(次のクロックのタイミング)に、メッ
1 108
セージ D206乃至 D206 を、メッセージ D207乃至 D207 として読み出し、次段の枝
1 108 1 108
入れ替え装置 200に、メッセージ D200(D200乃至 D200 )として供給する。枝入れ替
1 108
え装置 200は、枝用メモリ 206から供給されたメッセージ D200乃至 D200 の順番を
1 108
、図 9の検査行列 Hにしたがって並び替え (入れ替え)、チェックノード計算器 201乃
1 至 201 〖こ、メッセージ D201乃至 D201 として供給する。
36 1 36
[0093] チェックノード計算器 201乃至 201 は、枝入れ替え装置 200から供給されるメッセ
1 36
ージ D201乃至 D201 を用いて式(7)にしたがって演算を行い、その演算の結果得ら
1 36
れるメッセージ D202乃至 D202 を、枝用メモリ 202に供給する。
1 36
[0094] 枝用メモリ 202は、前段のチェックノード計算器 201乃至 201 力も供給されるメッ
1 36
セージ D202乃至 D202 を全て同時に格納し、次の時刻に、そのすベてのメッセージ
1 36
D202乃至 D202 を、メッセージ D203乃至 D203 として、次段の枝入れ替え装置 20
1 36 1 36
3に供給する。
[0095] 枝入れ替え装置 203は、枝用メモリ 202から供給されたメッセージ D203乃至 D203
1 3 の順番を図 9の検査行列 Hにしたがって並び替え、ノ リアブルノード計算器 204乃
至 204 〖こ、メッセージ D204乃至 D204 として供給する。
108 1 108
[0096] ノリアブルノード計算器 204乃至 204 は、枝入れ替え装置 203から供給されるメ
1 108
ッセージ D204乃至 D204 と、受信用メモリ 205から供給される受信データ D205乃
1 108 1 至 D205 を用いて式(1)にしたがって演算を行い、その演算の結果得られるメッセ
108 一 ジ D206乃至 D206 を、次段の枝用メモリ 206に供給する。
1 108
[0097] 図 14は、チェックノード演算を同時に行う図 13のチェックノード計算器 201 (m=l m
, 2, ···, 36)の構成例を示している。
[0098] 図 14のチェックノード計算器 201では、図 11のチェックノード計算器 101と同様に m
して、式(7)のチェックノード演算が行われる力 そのチェックノード演算力 すべての 枝について同時に行われる。
[0099] 即ち、図 14のチェックノード計算器 201では、枝入れ替え装置 200から供給される m
図 9の検査行列 Hの各列に対応するバリアブルノードからのメッセージ D221乃至 D22
1
1 (V)が全て同時に読み込まれ、それぞれの下位 5ビットである絶対値 D222乃至 D2
9 i 1
22 (|v|)力LUT221乃至 221にそれぞれ供給される。また、メッセージ D221乃至 D2
9 i 1 9 1
21 (V)の最上位ビットである 1ビットの符号ビット D223乃至 D223力 EXOR回路 226
9 i 1 9 1 乃至 226にそれぞれ供給されるとともに、 EXOR回路 225に供給される。
9
[0100] LUT221乃至 221は、絶対値 D222乃至 D222 (|v|)に対して、式(7)における φ(|
1 9 1 9 i
v I)の演算を行った 5ビットの演算結果 D224乃至 D224 ( φ (|v|))をそれぞれ読み出し i 1 9 i
、それぞれを減算器 223乃至 223【こ供給する。また、 LUT221乃至 221 ίま、演算
1 9 1 9 結果 D224乃至 D224 (φ (|ν|))を加算器 222に供給する。
1 9 i
[0101] 力!]算器 222は、演算結果 D224乃至 D224 ( φ ( |))の値の総和(1行分の演算結
1 9 i
果の総和)を演算し、 9ビットの演算結果 D225(i=lから 9の∑ φ (|v|))を、減算器 22 3乃至 223に供給する。減算器 223乃至 223は、演算結果 D225から、演算結果 D
1 9 1 9
224乃至 D224 ( φ (|ν|))をそれぞれ減算し、 5ビットの減算値 D227乃至 D227を、 L
1 9 i 1 9
UT224乃至 224に供給する。即ち、減算器 223乃至 223は、全ての枝からのメッ
1 9 1 9
セージ Vから求められた φ (|v|)の積算値から、求めたい枝からのメッセージ Vから求め られた φ(|ν|)を減算して、その減算値 D227乃至 D227 (i=lから 8までの∑ φ(|ν|))を i 1 9 i
LUT224乃至 224にそれぞれ供給する。 LUT224乃至 224は、減算値 D227乃至
D227に対して、式(7)における φ— ∑ φ (|ν|》の演算を行った 5ビットの演算結果 D22
9 i
8乃至 D228を読み出して出力する。
1 9
[0102] 一方、 EXOR回路 225は、全ての符号ビット D223乃至 D223の排他的論理和を演
1 9
算することにより、符号ビット D223乃至 D223の乗算を行い、 1ビットの乗算値 D226 (l
1 9
行分の符号ビットの乗算値(i= 1から 9までの nsign (v) ) )を EXOR回路 226乃至 22 i 1
6にそれぞれ供給する。 EXOR回路 226乃至 226は、乗算値 D226と符号ビット D22
9 1 9
3乃至 D223それぞれとの排他的論理を演算することにより、乗算値 D226を、符号ビ
1 9
ット D223乃至 D223それぞれで除算した 1ビットの除算値 D229乃至 D229 (i= lから
1 9 1 9
8までの nsign (V ) )を求めて出力する。
[0103] チェックノード計算器 201では、 LUT224乃至 224力 出力された 5ビットの演算 m 1 9
結果 D228乃至 D228それぞれを下位 5ビットとするとともに、 EXOR回路 226乃至 22
1 9 1
6力も出力された除算値 D229乃至 D229それぞれを最上位ビットとする合計 6ビット
9 1 9
力 チェックノード演算の結果得られるメッセージ D230乃至 D230として出力される。
1 9
[0104] 以上のように、チェックノード計算器 201では、式(7)の演算が行われ、メッセージ m
uが求められる。
[0105] なお、図 14では、各メッセージが符号ビットを合わせて合計 6ビットに量子化されて いるものとして、チェックノード計算器 201を表している。また、図 14の回路は 1つの m
チェックノードに相当する。ここで処理の対象として 、る図 9の検査行列 Hにつ 、ては 、その行数である 36行のチェックノードが存在するため、図 13の復号装置は、図 14 に示したようなチェックノード計算器 201を 36個有して!/、る。
m
[0106] ここで、図 14のチェックノード計算器 201では、 9個のメッセージを同時に計算する m
ことができる。そして、ここで処理の対象としている図 9の検査行列 Hの行の重みは、 第 1行が 8で、第 2乃至第 36行が 9であるため、即ち、チェックノードに供給されるメッ セージの数が、 8のケースが 1つと、 9のケースが 29あるため、チェックノード計算器 2 01は、図 14の回路と同様の 8つのメッセージを同時に計算することができる回路構
1
成となっており、残りのチェックノード計算器 201乃至 201 は、図 14の回路と同一
2 36
構成となっている。
[0107] 図 15は、バリアブルノード演算を同時に行う図 13のバリアブルノード計算器 204 (
p = l, 2, · · · , 108)の構成例を示している。
[0108] 図 15のバリアブルノード計算器 204では、図 12のバリアブルノード計算器 103と同
P
様にして、式(1)のノ リアブルノード演算が行われる力 そのノ リアブルノード演算が
、すべての枝について同時に行われる。
[0109] 即ち、図 15のバリアブルノード計算器 204では、枝入れ替え装置 203から供給さ
P
れる、検査行列 Hの各行に対応するチェックノードからの 6ビットのメッセージ D251乃
1 至 D251 (メッセージ u)が全て同時に読み込まれ、それぞれ加算器 252乃至 252に
5 j 1 5 供給されるとともに、加算器 251に供給される。また、バリアブルノード計算器 204に
P
は、受信用メモリ 205から受信データ D271が供給され、その受信データ D271は、カロ 減算器 252乃至 252に供給される。
1 5
[0110] カロ算器 251は、全てのメッセージ D251乃至 D251 (メッセージ u)を積算し、 9ビット
1 5 j
の積算値 D252 (1列分のメッセージの総和値 (j = 1から 5までの∑ u) )を加減算器 25 2乃至 252に供給する。カロ減算器 252乃至 252は、加算値 D252から、メッセージ D
1 5 1 5
251乃至 D251 (メッセージ u)をそれぞれ減算する。即ち、力!]減算器 252乃至 252
1 5 j 1 5 は、全ての枝からのメッセージ uの積算値 D252から、求めたい枝からのメッセージ D25 1乃至 D251 (メッセージ u)をそれぞれ減算して、その減算値 (j = lから 4までの∑u)
1 5 j j を求める。
[0111] さらに、加減算器 252乃至 252は、減算値 (j = lから 4までの∑u)に、受信データ
1 5 j
D271 (u )を加算して、 6ビットの加算値 D253乃至 D253を、ノ リアブルノード演算の
Oi 1 5
結果として出力する。
[0112] 以上のように、ノ リアブルノード計算器 204では、式(1)の演算が行われ、メッセ
P 一 ジ Vが求められる。
[0113] なお、図 15では、各メッセージが符号ビットを合わせて合計 6ビットに量子化されて いるものとして、ノ リアブルノード計算器 204を表している。また、図 15の回路は 1つ
P
のバリアブルノードに相当する。ここで処理の対象としている図 9の検査行列 Hについ ては、その列数である 108列のバリアブルノードが存在するから、図 13の復号装置は 、図 15に示したような回路を 108個有している。
[0114] ここで、図 15のバリアブルノード計算器 204では、 5個のメッセージを同時に計算
することができる。そして、ここで処理の対象としている図 9の検査行列 Hは、重みが 5 , 3, 2, 1の列が、それぞれ、 18列、 54列、 35列、 1列あるので、バリアブルノード計 算器 204乃至 204 のうちの 18個は、図 15の回路と同一構成となっており、残りの 5
1 108
4個、 35個、 1個は、図 15の回路と同様の 3, 2, 1つのメッセージをそれぞれ同時に 計算することができる回路構成となっている。
[0115] なお、図示しないが、図 13の復号装置においても、図 10における場合と同様に、 復号の最終段においては、式(1)のバリアブルノード演算の代わりに、式(5)の演算 が行われ、その演算結果が最終的な復号結果として出力される。
[0116] 図 13の復号装置によれば、 323個ある枝に対応するメッセージすべてを 1クロック で同時に計算することができる。
[0117] 図 13の復号装置を繰り返し用いて復号する場合には、チェックノード演算とバリア ブルノード演算とを交互に行い、 1回の復号を 2クロックで行うことができる。従って、 例えば、 50回の復号を行うためには、符号長が 108個の符号を 1フレームとする受信 データを受信する間に 2 X 50=100クロック動作すれば良いことになり、ほぼ受信周波 数と同一の動作周波数でよいことになる。一般的に、 LDPC符号は、符号長が数千か ら数万と大きいことから、図 13の復号装置を用いれば、復号回数を極めて多くするこ とができ、誤り訂正性能の向上を期待することができる。
[0118] し力しながら、図 13の復号装置は、タナーグラフのすべての枝に対応するメッセ一 ジの演算を、並列で行うため、回路規模が、符号長に比例して大きくなる。また、図 1 3の復号装置を、ある符号長の、ある符号化率の、ある検査行列 Hを持つ LDPC符号 の復号を行う装置として構成した場合、その復号装置において、他の符号長や、他 の符号化率、他の検査行列 Hを持つ LDPC符号の復号を行うことは困難となる。即ち 、図 13の復号装置は、図 10の復号装置のように、制御信号を変えるだけでは、様々 な符号を復号することに対処することが困難であり、符号依存性が高い。
[0119] 図 10および図 13の復号装置の他に、一つでも全てでもなぐ 4つずつのメッセージ の計算を同時に行う実装法について、例えば、非特許文献 2に述べられているが、こ の場合、メモリの異なるアドレスからの同時読み出し、もしくは同時書き込みを避ける ことが一般的には容易でなぐメモリアクセス制御が困難であるという問題がある。
[0120] この問題を解決するため、ランダムな符号ではなぐ部分的にパラレルな復号器の 実装に親和性の高い符号および復号装置について報告されている (例えば、非特許 文献 3と 4参照)。し力 ながら、非特許文献 3に記載されている復号装置の実現方法 は特定の符号のみに対応するものであり、 1つの復号器で様々な符号長、符号化率 の符号を復号することは困難である。
[0121] また、図 16に示すように、 6 X 6の単位行列、その単位行列の 1のうち 1個以上が 0 になった行列(以下、適宜、準単位行列という)、単位行列または準単位行列をサイク リックシフト (cyclic shift)した行列(以下、適宜、シフト行列という)、単位行列、準単位 行列、またはシフト行列のうちの 2以上 (複数)の和(以下、適宜、和行列という)、 6 X 6 の 0行列の組み合わせで表すことが可能な検査行列 Hを有する LDPC符号、もしくは 行や列の置換により、これらの行列の組み合わせで表すことが可能な検査行列 Hを 有する LDPC符号であれば、符号長、符号化率が異なる符号であっても復号可能な 復号装置がある (例えば、特許文献 1参照)。
[0122] なお、図 16の検査行列 Hは、図 9に示した検査行列 Hを、 6 X 6の行列の単位に間 隔を空けて表している。また、図 16の検査行列 Hを構成する 6 X 6の単位行列、準単 位行列、シフト行列、和行列、 0行列を、以下、適宜、構成行列という。
[0123] 図 17乃至図 22を参照して、図 16の検査行列 Hで表現される LDPC符号を復号する 復号装置について説明する。
[0124] 図 17は、図 16の検査行列 Hで表現される LDPC符号を復号する復号装置 400の構 成の一例を示すブロック図である。
[0125] 復号装置 400は、復号途中結果格納用メモリ 410、サイクリックシフト回路 411、 6つ の計算器 412乃至計算器 412力もなる計算部 412、復号途中結果格納用メモリ 41
1 6
3、サイクリックシフト回路 414、 6つの計算器 415乃至計算器 415からなる計算部 4
1 6
15、受信用メモリ 416、および制御部 417から構成される。
[0126] ここで、計算器 412 (k=l,2, · · · , 6)で行われる演算と、計算器 415で行われる演 k k
算について、式を用いて説明する。
[0127] 具体的には、計算部 412は、上述した式(7)と、以下に表す式 (8)にしたがう第 1の 演算を行い、その第 1の演算の結果である復号途中結果 uを復号途中結果格納用メ
モリ 410に供給して格納させる。計算部 415は、上述した式(5)にしたがう第 2の演算 を行い、その第 2の演算の結果である復号途中結果 Vを復号途中結果格納用メモリ 4 10に供給して格納させる。
[0128] [数 8]
V j— V"~ Udv
•••(8)
[0129] なお、式(8)の u は、検査行列 Hの i列のメッセージを求めようとする枝からのチエツ
dv
クノード演算の途中結果 (ここでは、チヱックノード演算結果そのもの)を表して 、る。 即ち、 u は、求めたい枝に対応する復号途中結果である。
dv
[0130] 即ち、上述した式(5)にしたがう第 2の演算の結果得られる復号途中結果 Vは、受信 値 uと検査行列 Hの i列の各行の 1に対応するすべての枝からのチェックノード演算
Oi
の復号途中結果 uとを加算したものであるので、上述した式(7)に用いられる値 Vは、 式(5)にしたがう第 2の演算の結果得られる復号途中結果 Vから、検査行列 Hの i列の 、各行の 1に対応する枝からのチヱックノード演算の復号途中結果 uのうち、メッセ一 ジを求めようとする枝力ものチェックノード演算の復号途中結果 u を引 、た値となる。
dv
つまり、式(7)の演算に用いられる値 Vを求める式(1)の演算は、上述した式(5)と式
(8)を組み合わせた演算である。
[0131] 従って、復号装置 400では、計算部 412による式(7)および式 (8)にしたがう第 1の 演算と、計算部 415による式 (5)にしたがう第 2の演算とが交互に行われ、計算部 41
5が、最後の第 2の演算の結果を復号結果として出力することにより、 LDPC符号の繰 り返し復号を行うことができる。
[0132] なお、ここでは、式(7)と式 (8)にしたがう第 1の演算結果を、復号途中結果 uと記載 するが、この復号途中結果 uは、式(7)のチ ックノード演算結果 uに等しい。
[0133] また、第 2の演算により求められる式(5)の Vは、式(1)のバリアブルノード演算結果
Vに対して、メッセージを求めようとする枝からのチェックノード演算結果 uを加算した ものであるから、検査行列 Hの 1列(1つのバリアブルノード)に対して、 1つだけ求めら れる。
[0134] 復号装置 400では、計算部 412が、計算部 415による第 2の演算の結果である検
查行列 Hの列に対応する復号途中結果 vを用いて、第 1の演算を行い、その演算の 結果得られる検査行列 Hの i列の、各行の 1に対応する枝のメッセージ (各チェックノ 一ドが各枝に出力するメッセージ)の枝力 のチェックノード演算の復号途中結果 uを 復号途中結果格納用メモリ 413に格納する。従って、復号途中結果格納用メモリ 41 3の容量は、チェックノード演算の結果を格納する場合と同様に、検査行列 Hの 1の 数 (全枝数)と量子化ビット数とを乗算した値となる。
[0135] 一方、計算部 415は、計算部 412による第 1の演算の結果である検査行列 Hの例 の、各行の" 1"に対応する復号途中結果 uと受信値 uを用いて、第 2の演算を行い、 その演算の結果得られる i列に対応する復号途中結果 Vを復号途中結果格納用メモリ 410に格納する。従って、復号途中結果格納用メモリ 410に必要な容量は、検査行 列 Hの" 1"の数より少ない検査行列 Hの列数、即ち、 LCPC符号の符号長と復号途中 結果 Vの量子化ビット数とを乗算した値となる。
[0136] その結果、バリアブルノード演算の結果を格納する場合に比べて、復号途中結果 格納用メモリ 410のメモリ容量を削減することができ、これにより、復号装置 400の回 路規模を小さくすることができる。
[0137] 以下、図 17の復号装置 400の各部の動作について詳細に説明する。
[0138] 復号途中結果格納用メモリ 410には、計算部 415から、計算部 415による第 2の演 算の結果である検査行列 Hの 6つの列に対応する 6つの復号途中結果 D415が供給 され、復号途中結果格納用メモリ 410は、計算部 415から供給された 6つの復号途中 結果 D415を、第 1アドレス力も順に格納 (記憶)する。
[0139] 即ち、復号途中結果格納用メモリ 410の第 1アドレスには、検査行列 Hの列に対応 する復号途中結果のうち、第 1列目力 第 6列目の復号途中結果 Vが格納される。そ して、同様に、第 2アドレスには、第 7列目力も第 12列目の復号途中結果 Vが格納さ れ、第 3アドレスには、第 13列目力も第 18列目の復号途中結果が格納される。以後 、同様に、第 103列目力も第 108列目までの復号途中結果 Vが、 6個ずつ、第 4ァドレ スカも第 18アドレスまで格納され、計 108個の復号途中結果 Vが復号途中結果格納 用メモリ 410に格納される。従って、復号途中結果格納用メモリ 410のワード (word) 数は、図 16の検査行列 Hの列数 (LDPC符号の符号長)である 108を、同時に読み書
きする復号途中結果の数である 6で割り算した 18となる。
[0140] また、復号途中結果格納用メモリ 410は、既に格納してある復号途中結果 D415か ら、後段の計算部 412が求めようとする復号途中結果 uの対応する検査行列 Hの行 において" 1"になっている復号途中結果 Vを 6つ同時に読み出し、復号途中結果 D41 0として、サイクリックシフト回路 411に供給する。
[0141] なお、復号途中結果格納用メモリ 410は、例えば、 6つの復号途中結果を同時に読 み書き可能なシングルポート RAMで構成される。また、復号途中結果格納用メモリ 41 0には、計算部 415の第 2の演算により演算された列に対応する復号途中結果 D414 が格納されるので、復号途中結果格納用メモリ 410に格納されるデータ量、即ち、復 号途中結果格納用メモリ 410に必要とされる記憶容量は、復号途中結果 D414の量 子化ビット数と、検査行列 Hの列数 (LDPC符号の符号長)との乗算値である。
[0142] サイクリックシフト回路 411には、復号途中結果格納用メモリ 410力も 6つの復号途 中結果 D410が供給されるとともに、制御部 417から、その復号途中結果 D410に対応 する検査行列 Hの 1が、検査行列 Hにおいて元となる単位行列などを幾つサイクリック シフトであるかの情報 (Matrixデータ)を表す制御信号 D619が供給される。サイクリツ クシフト回路 611は、制御信号 D619を元に、 6つの復号結果 D410を並べ替えるサイ クリックシフトを行い、その結果を復号途中結果 D411として、計算部 412に供給する。
[0143] 計算部 412は、 6つの計算器 412乃至 412力もなる。計算部 412には、サイクリツ
1 6
クシフト回路 411から、計算部 415による第 2の演算の結果得られた 6つの復号途中 結果 D411 (v)が供給されるとともに、復号途中結果格納用メモリ 413から、前回、計 算器 412乃至 412による第 1の演算の結果得られた 6つの復号途中結果 D413 (u)
1 6 j が供給され、その 6つの復号途中結果 D411と 6つの復号途中結果 D413が、計算器 4 12乃至 412にそれぞれ供給される。また、計算部 412には、制御部 417から制御
1 6
信号 D419が供給され、その制御信号 D419が、計算器 412乃至 412に供給される。
1 6
なお、制御信号 D419は、 6つの計算器 412乃至 412に共通の信号である。
1 6
[0144] 計算器 412乃至 412は、それぞれ復号途中結果 D411と復号途中結果 D413を用
1 6
V、て、式(7)と式 (8)にしたがって第 1の演算を行 、、復号途中結果 D412 (V )を求め る。計算部 412は、計算器 412乃至 412による演算の結果得られる検査行列 Hの 6
つの 1に対応する 6つの復号途中結果 D412を復号途中結果格納用メモリ 413に供 給する。
[0145] 復号途中結果格納用メモリ 413は、例えば、 6つの復号途中結果を同時に読み書 き可能な、 2つのシングルポート RAMカゝら構成される。復号途中結果格納用メモリ 41 3には、計算部 412から 6つの復号途中結果 D412が供給されるとともに、制御部 417 力も復号途中結果 413の読み書きを制御する制御信号 D420が供給される。
[0146] 復号途中結果格納用メモリ 413は、制御信号 D420に基づいて、計算部 412から供 給される 6つの復号途中結果 D412をまとめて格納すると同時に、既に格納してある 6 つの復号途中結果 D412を読み出し、復号途中結果 D413として、計算部 412とサイク リックシフト回路 414に供給する。即ち、復号途中結果格納用メモリ 413は、計算部 4 12とサイクリックシフト回路 414に供給する復号途中結果 D413の読み出しと、計算部 412から供給される復号途中結果 D412の書き込みとを、同時に行う。
[0147] なお、復号途中結果格納用メモリ 413には、計算部 412の第 1の演算により演算さ れた検査行列 Hの i列の、各行の 1に対応する枝力 の第 1の演算の復号途中結果 D 412が格納されるので、復号途中結果格納用メモリ 413に格納されるデータ量、即ち 、復号途中結果格納用メモリ 413に必要とされる記憶容量は、復号途中結果 D412の 量子化ビット数と、検査行列 Hの 1の数との乗算値となる。
[0148] サイクリックシフト回路 414には、復号途中結果格納用メモリ 413から 6つの復号途 中結果 D413 (復号途中結果 u)が供給されるとともに、制御部 417から、その復号途 中結果 D413に対応する検査行列 Hの 1が検査行列 Hにおいて元となる単位行列など を幾つサイクリックシフトしたものであるかの情報 (Matrixデータ)を表す制御信号 D42 1が供給される。サイクリックシフト回路 414は、制御信号 D421を元に、 6つの復号途 中結果 D413を並べ替えるサイクリックシフトを行 、、その結果を復号途中結果 D414と して、計算部 415に供給する。
[0149] 計算部 415は、 6つの計算器 415乃至 415力もなる。計算部 415には、サイクリツ
1 6
クシフト回路 414から 6つの復号途中結果 D414が供給され、その復号途中結果 D414 1S 計算器 415乃至 415のそれぞれに供給される。また、計算部 415には、受信用
1 6
メモリ 417から 6つの受信データ D417 (LDPC符号)が供給され、その受信データ D41
7が、計算器 415乃至 415のそれぞれに供給される。さらに、計算部 417には、制御
1 6
部 417から制御信号 D422が供給され、その制御信号 D422が計算器 415乃至 415
1 6 に供給される。なお、制御信号 D422は、 6つの計算器 417乃至 417に共通の信号
1 6
である。
[0150] 計算器 415乃至 415は、それぞれ復号途中結果 D414と受信データ D417とを用い
1 6
て、式(5)にしたがって、それぞれ第 2の演算を行い、復号途中結果 D415を求める。 計算部 415は、計算器 415乃至 415の第 2の演算の結果得られる 6つの復号途中
1 6
結果 D415(v)を、復号途中結果格納用メモリ 410に供給する。また、計算部 415は、 V、ま行う演算が最後の第 2の演算である場合、その演算の結果得られる 6つの復号 途中結果 D415を、最終的な復号結果として出力する。
[0151] 受信用メモリ 416は、通信路を通して受信した受信値 (符号ビット) D416から計算し た符号ビットの 0らしさの値である受信 LLR (対数尤度比)のデータ(受信データ) D41 6を格納する。
[0152] 即ち、受信用メモリ 416の第 1のアドレスには、検査行列 Hの列に対応する受信デ ータ D416のうち、検査行列 Hの第 1列目力も第 6列目までに対応する受信データ D41 6が格納される。そして、第 2のアドレスには、検査行列 Hの第 7列目力も第 12列目ま でに対応する受信データ D416が格納され、第 3アドレスには、検査行列 Hの第 13列 目力も第 18列目までに対応する受信データ D416が格納される。以後、同様に、第 4 アドレス力も第 18アドレスまでに、検査行列 Hの第 19列目力も第 108列目までに対 応する受信データ D416が、 6つずつ格納される。
[0153] そして、受信用メモリ 616は、既に格納している受信データ D416を、バリアブルノー ド演算に必要となる順番に 6つずつ読み出し、受信データ D417として計算部 415に 供給する。
[0154] なお、受信用メモリ 416は、例えば、 6つの受信データを同時に読み書き可能なシ ングルポート RAM力も構成される。また、受信用メモリ 416に格納されるデータ量、即 ち、受信用メモリ 315に必要とされる記憶容量は、 LDPC符号の符号長と、受信デー タ D416の量子化ビット数との乗算値である。さらに、受信用メモリ 416のワード (word) 数は、 LDPC符号の符号長、即ち、検査行列 Hの列数である 108を、同時に読み出
す受信データ D417の数である 6で割り算した値の 18である。
[0155] 制御部 417は、制御信号 D418をサイクリックシフト回路 411に、制御信号 D419を計 算部 412に供給することにより、それぞれを制御する。また、制御部 417は、制御信 号 D420を復号途中結果格納用メモリ 413に、制御信号 D421をサイクリックシフト回路 414に、制御信号 D421を計算部 415にそれぞれ供給することにより、それぞれを制 御する。
[0156] 復号途中結果格納用メモリ 410、サイクリックシフト回路 411、計算部 412、復号途 中結果格納用メモリ 413、サイクリックシフト回路 414、計算部 415の順で、データが 一巡することで、復号装置 400は、 1回の復号を行うことができる。復号装置 400では 、所定の回数だけ繰り返して復号が行われた後、計算部 415による第 2の演算の結 果である復号途中結果 D415が、最終的な復号結果として出力される。
[0157] 図 18は、図 17の計算部 412の計算器 412の構成例を示すブロック図である。
1
[0158] なお、図 18では、計算器 412について説明するが、計算器 412乃至計算器 412
1 2 6 も同様に構成される。
[0159] また、図 18では、前回の計算部 412による第 1の演算の結果得られる各復号途中 結果 (u )が符号ビットを合わせて合計 6ビット (bit)に量子化され、計算部 415による第 dv
2の演算の結果得られる各復号途中結果 (V)が 9ビットに量子化されているものとして 、計算器 412を表している。さらに、図 18の計算器 412には、クロック ckが供給され
1 1
、このクロック ckは、必要なブロックに供給されるようになっている。そして、各ブロック は、クロック ckに同期して処理を行う。
[0160] 図 18の計算器 412は、制御部 417から供給される制御信号 D419に基づいて、復
1
号途中結果格納用メモリ 413から 1つずつ読み込まれる、前回の計算部 412による 第 1の演算の結果得られた復号途中結果 D413 (u )と、サイクリックシフト回路 411か dv
ら 1つずつ読み込まれる復号途中結果 D411 (V)とを用いて、式(7)と式 (8)にしたがう 第 1の演算を行う。
[0161] 即ち、計算器 412には、サイクリックシフト回路 411から供給される 6つの 9ビットの
1
復号途中結果 D411(v)のうちの、 1つの復号途中結果 D411が供給されるとともに、復 号途中結果格納用メモリ 413から供給される、前回の計算部 412による演算の結果
である 6つの 6ビットの復号途中結果 D413 (u)のうちの、前回の計算部 412による演 算の結果である 1つの復号途中結果 D413が供給され、その 9ビットの復号途中結果 D411 (V)と 6ビットの復号途中結果 D413 (u )力 減算器 431に供給される。また、計
dv
算器 412には、制御部 417から制御信号 D419が供給され、その制御信号 D419がセ
1
レクタ 435とセレクタ 442に供給される。
[0162] 減算器 431は、 9ビットの復号途中結果 D411 (v)力も 6ビットの復号途中結果 D413 ( u)を減算し、その 6ビットの減算値 D431を出力する。即ち、減算器 431は、式 (8)に したがって演算を行い、その演算の結果である減算値 D431 (V )を出力する。
[0163] 減算器 431により出力された 6ビットの減算値 D431のうち、最上位ビットの正負を示 す符号ビット D432 (sign (v) )力 XOR回路 440に供給され、下位 5ビットの絶対値 D43 3 (|v |)力 SLUT432に供給される。
[0164] LUT432は、絶対値 D433(|v.|)に対して、式(7)における φ (|ν.|)の演算を行った 5ビッ トの演算結果 D434 ( φ (|ν |))を読み出し、加算器 433と FIFOメモリ 438に供給する。
[0165] カロ算器 433は、演算結果 D434 ( φ (|ν |))とレジスタ 434に格納されて!、る 9ビットの 値 D435とを加算することにより、演算結果 D434を積算し、その結果得られる 9ビットの 積算値をレジスタ 434に再格納する。なお、検査行列 Ηの 1行に亘る全ての 1に対応 する復号途中結果 D411から求められた絶対値 D433(|v |)に対する演算結果が積算さ れた場合、レジスタ 434はリセットされる。
[0166] 検査行列 Hの 1行に亘る復号途中結果 D411が 1つずつ読み込まれ、レジスタ 434に 1行分の演算結果 D434が積算された積算値が格納された場合、制御部 417から供 給される制御信号 D419は、 0から 1に変化する。例えば、行の重み (row weight)が「9 」である場合、制御信号 D419は、 1から 8クロック目までは、「0」となり、 9クロック目で は「1」となる。
[0167] 制御信号 D419が「1」の場合、セレクタ 435は、レジスタ 434に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての 1に対応する復号途中結果 D411 (復号途中結 果 V)から求められた φ (|v |)が積算された 9ビットの値 D435 (i= 1から i=dまでの∑ φ ( |v |))を選択し、値 D436として、レジスタ 436に出力して格納させる。レジスタ 436は、 格納している値 D436を、 9ビットの値 D437として、セレクタ 435とカロ算器 437に供給す
る。制御信号 D419が「0」の場合、セレクタ 435は、レジスタ 436から供給された値 D43 7を選択し、レジスタ 436に出力して再格納させる。即ち、検査行列 Hの 1行に亘る全 ての 1に対応する復号途中結果 D411 (復号途中結果 V)力も求められた φ (|v |)が積算 されるまで、レジスタ 436は、前回積算された φ (|v|)を、セレクタ 435とカロ算器 437に 供給する。
[0168] 一方、 FIFOメモリ 438は、レジスタ 436から新たな値 D437 (i= lから i=dまでの∑ φ (|ν|))が出力されるまでの間、 LUT432が出力した演算結果 ΙΜ34 ( φ (|ν |))を遅延し 、 5ビットの値 D438として減算器 437に供給する。減算器 437は、レジスタ 436から供 給された値 D437から、 FIFOメモリ 438から供給された値 D438を減算し、その減算結 果を、 5ビットの減算値 D439として LUT439に供給する。即ち、減算器 437は、検査 行列 Hの 1行に亘る全ての 1に対応する復号途中結果 D411 (復号途中結果 V)から求 められた φ (|ν |)の積算値から、求めたい枝に対応する復号途中結果、即ち、検査行 列 Ηの所定の 1に対応する復号途中結果 D411 (復号途中結果 V)から求められた φ (| vj)を減算して、その減算値 (i= lから i=d— 1までの∑ φ (|ν|))を減算値 D439として LUT439に供給する。
[0169] LUT439は、減算値 D439 (i= lから i=d— 1までの∑ φ (|v.|))に対して、式(7)にお ける φ— 1 (∑ φ (|ν |))の演算を行った 5ビットの演算結果 D440 ( _1(∑ (|ν|》)を出力 する。
[0170] 以上の処理と並行して、 EXOR回路 440は、レジスタ 441に格納されている 1ビット の値 D442と符号ビット D432との排他的論理和を演算することにより、符号ビットどうし の乗算を行い、 1ビットの乗算結果 D441をレジスタ 441に再格納する。なお、検査行 列 Ηの 1行に亘る全ての 1に対応する復号途中結果 D411から求められた符号ビット D 432が乗算された場合、レジスタ 441はリセットされる。
[0171] 検査行列 Ηの 1行に亘る全ての 1に対応する復号途中結果 D411から求められた符 号ビット D432が乗算された乗算結果 D441 (i= 1力ら dまでの nsign(v))がレジスタ 44 1に格納された場合、制御部 417から供給される制御信号 D419は、「0」から「1」に変 化する。
[0172] 制御信号 D419が「1」の場合、セレクタ 442は、レジスタ 441に格納されている値、
即ち、検査行列 Hの 1行に亘る全ての 1に対応する復号途中結果 D411から求められ た符号ビット D432が乗算された値 D442 (i= 1から 1= までの nsign(Vi))を選択し、 1 ビットの値 D443としてレジスタ 443に出力して格納させる。レジスタ 443は、格納して いる値 D443を、 1ビットの値 D444としてセレクタ 442と EXOR回路 445に供給する。制 御信号 D419が「0」の場合、セレクタ 442は、レジスタ 443から供給された値 D444を選 択し、レジスタ 443に出力して再格納させる。即ち、検査行列 Hの 1行に亘る全ての 1 に対応する復号途中結果 D411 (復号途中結果 V)力 求められた符号ビット D432が 乗算されるまで、レジスタ 443は、前回格納した値を、セレクタ 442と EXOR回路 445 に供給する。
[0173] 一方、 FIFOメモリ 444は、レジスタ 443から新たな値 D444 (i= 1から i=dまでの Ilsi gn(v))が EXOR回路 445に供給されるまでの間、符号ビット D432を遅延し、 1ビットの 値 D445として EXOR回路 445に供給する。 EXOR回路 445は、レジスタ 443から供給 された値 D444と、 FIFOメモリ 444力 供給された値 D445との排他的論理和を演算す ることにより、値 D444を、値 D445で除算し、 1ビットの除算結果を除算値 D446として出 力する。即ち、 EXOR回路 445は、検査行列 Hの 1行に亘る全ての 1に対応する復号 途中結果 D411から求められた符号ビット D432 (sign(v))の乗算値を、検査行列 Hの所 定の 1に対応する復号途中結果 D411から求められた符号ビット D432 (sign(v))で除 算して、その除算値 (i= lから i=d— 1までの nsign(v))を除算値 D446として出力す る。
[0174] 計算器 412では、 LUT439から出力された 5ビットの演算結果 D440を下位 5ビットと
1
するとともに、 EXOR回路 445から出力された 1ビットの除算値 D446を最上位ビットと する合計 6ビットが復号途中結果 D412 (復号途中結果 u)として出力される。
[0175] 以上のように、計算器 412では、式(7)と式 (8)の演算が行われ、復号途中結果 u
1 i が求められる。
[0176] なお、図 16の検査行列 Hの行の重みの最大は 9であるため、即ち、計算器 412に
1 供給される復号途中結果 D411 (V)と復号途中結果 D413 (u )の最大数は 9であるた dv
め、計算器 412は、 9個の復号途中結果 D411から求められる 9個の演算結果 D434 (
1
Φ (|ν|))を遅延させる FIFOメモリ 438と、 9個の符号ビット D432を遅延させる FIFOメモ
リ 444を有している。行の重みが 9未満の行のメッセージを計算するときには、 FIFOメ モリ 438と FIFOメモリ 444における遅延量力 その行の重みの値に減らされる。
[0177] 図 19は、図 17の計算部 415の計算器 415の構成例を示すブロック図である。
1
[0178] なお、図 19では、計算器 415について説明するが、計算器 415乃至計算器 415
1 2 6 も同様に構成される。
[0179] また、図 19では、計算部 412による第 1の演算の結果得られる各復号途中結果 (u )が符号ビットを合わせて合計 6ビットに量子化されているものとして、計算器 415を
1 表している。さらに、図 19の計算器 415には、クロック ckが供給され、このクロック ck
1
は、必要なブロックに供給されるようになっている。そして、各ブロックは、クロック ckに 同期して処理を行う。
[0180] 図 19の計算器 415は、制御部 417から供給される制御信号 D422に基づいて、受
1
信用メモリ 416から 1つずつ読み込まれる受信データ D417 (受信値 u )と、サイクリック
0i
シフト回路 414から 1つずつ読み込まれる復号途中結果 D414 (u)とを用いて、式(5) にしたがう第 2の演算を行う。
[0181] 即ち、計算器 415では、サイクリックシフト回路 414から、検査行列 Hの各行の 1に
1
対応する 6ビットの復号途中結果 D414 (復号途中結果 u)が 1つずつ読み込まれ、そ の復号途中結果 D414が、加算器 471に供給される。また、計算器 415では、受信用
1
メモリ 416から 6ビットの受信データ D417が 1つずつ読み込まれ、加算器 475に供給 される。さらに、計算器 415には、制御部 417から制御信号 D422が供給され、その
1
制御信号 D422は、セレクタ 473に供給される。
[0182] 加算器 471は、復号途中結果 D414 (復号途中結果 u)とレジスタ 472に格納されて いる 9ビットの値 D471とを加算することにより、復号途中結果 D414を積算し、その結果 得られる 9ビットの積算値を、レジスタ 472に再格納する。なお、検査行列 Hの 1列に 亘る全ての 1に対応する復号途中結果 D414が積算された場合、レジスタ 472はリセッ トされる。
[0183] 検査行列 Hの 1列に亘る復号途中結果 D414が 1つずつ読み込まれ、レジスタ 472 に 1列分の復号途中結果 D414が積算された値が格納された場合、制御部 417から 供給される制御信号 D422は、「0」から「1」に変化する。例えば、列の重みが「5」であ
る場合、制御信号 D422は、 1から 4クロック目までは「0」となり、 5クロック目では「1」と なる。
[0184] 制御信号 D422が「1」の場合、セレクタ 473は、レジスタ 472に格納されている値、 即ち、検査行列 Hの 1列に亘る全ての枝からの復号途中結果 D414 (復号途中結果 u ) が積算された 9ビットの値 D471 (j = lから dまでの∑u)を選択し、レジスタ 474に出力
V j
して格納させる。レジスタ 474は、格納している値 D471を、 9ビットの値 D472として、セ レクタ 471と加算器 475に供給する。制御信号 D422が「0」の場合、セレクタ 473は、 レジスタ 474力 供給された値 D472を選択し、レジスタ 474に出力し再格納させる。 即ち、検査行列 Hの 1列に亘る全ての枝からの復号途中結果 D414 (復号途中結果 u ) が積算されるまで、レジスタ 474は、前回積算された値を、セレクタ 473と加算器 475 に供給する。
[0185] カロ算器 475は、 9ビットの値 D472と、受信用メモリ 416から供給された 6ビットの受信 データ D417とを加算して、その結果得られる 6ビットの値を復号途中結果 D415 (復号 途中結果 V)として出力する。
[0186] 以上のように、計算器 415では、式(5)の演算が行われ、復号途中結果 Vが求めら
1
れる。
[0187] なお、図 9の検査行列 Hの列の重みの最大は 5であるため、即ち、計算器 415に供
1 給される復号途中結果 uの最大数は 5であるため、計算器 415は、 6ビットの復号途 j 1
中結果 uを最大 5個加算する。従って、計算器 415の出力は、 9ビットの値となってい j 1
る。
[0188] 図 20は、図 17の復号途中結果格納用メモリ 413の構成例を示すブロック図である
[0189] 復号途中結果格納用メモリ 413は、スィッチ 501と 504、および 2つのシングルポー ト RAMである復号途中結果格納用 RAM502と 503から構成される。
[0190] この復号途中結果格納用メモリ 413の各部について詳細に説明する前に、まず、 復号途中結果格納用 RAM502と 503へのデータの格納方法について説明する。
[0191] 復号途中結果格納用 RAM502と 503は、計算部 412による第 1の演算の結果得ら れ、スィッチ 501を介して供給された復号途中結果 D412を格納する。
[0192] 具体的には、復号途中結果格納用 RAM502の第 1アドレス力 第 9アドレスには、 図 16の検査行列 Hの第 1行目から第 6行目までの 1に対応する復号途中結果 D412( D501)力 各行ともに横方向(列方向)に詰めた形に (0を無視した形で)格納される。
[0193] 即ち、第 j行第冽を、(j,i)と表すこととすると、復号途中結果格納用 RAM502の第 1 アドレスには、図 16の検査行列 Hの構成行列である (1,1)から (6,6)の 6 X 6の単位行 列の 1に対応するデータ力 第 2アドレスには、図 16の検査行列 Hの構成行列である ( 1,25)から (6,30)のシフト行列(6 X 6)の単位行列を右方向に 5つだけサイクリックシフト したシフト行列)の 1に対応するデータが格納される。第 3アドレス力 第 8アドレスも 同様に図 16の検査行列 Hの構成行列と対応づけてデータが格納される。そして、第 9アドレスには、検査行列 Hの (1,102)から (6, 108)のシフト行列(6 X 6の単位行列のう ちの 1行目の 1を 0に置き換えて 1つだけ左方向にサイクリックシフトしたシフト行列)の 1に対応するデータが格納される。ここで、図 16の検査行列 Hの (1,102)から (6,108)の シフト行列においては、 1行目に 1がないため、第 9アドレスにはデータが格納されな い。
[0194] また、復号途中結果格納用 RAM502の第 10アドレス力も第 18アドレスには、図 16 の検査行列 Hの第 13行目から第 18行目までの 1に対応するデータが格納される。即 ち、第 10アドレスには、検査行列 Hの (13,7)から (18,12)の 6 X 6の単位行列を右方向 に 5つだけサイクリックシフトした行列の 1に対応するデータが格納され、第 11アドレス には、検査行列 Hの (13, 13)から(18, 18)の和行列(6 X 6の単位行列と、 6 X 6の単位 行列を右方向に 1つだけサイクリックシフトしたシフト行列との和である和行列)を構成 するシフト行列の 1に対応するデータが格納される。また、第 12アドレスには、検査行 列 Hの (13, 13)から(18, 18)の和行列を構成する単位行列の 1に対応するデータが格 納される。以下、第 13アドレス力も第 18アドレスについても、検査行列 Hに対応づけ てデータが格納される。
[0195] 即ち、重みが 2以上の構成行列については、その構成行列を、重みが 1である PX P の単位行列、そのコンポーネントである 1のうち 1個以上が 0になった準単位行列、ま たは単位行列もしくは準単位行列をサイクリックシフトしたシフト行列のうちの複数の 和の形で表現したときの、その重みが 1の単位行列、準単位行列、またはシフト行列
の 1の位置に対応するデータ(単位行列、準単位行列、またはシフト行列に属する枝 に対応するメッセージの復号途中結果)は、同一アドレスに格納される。
[0196] 同様に、復号途中結果格納用 RAM502の第 19アドレス力も第 27アドレスには、図 16の検査行列 Hに対応づけて、第 25行目力も第 30行目までの 1に対応するデータ が格納される。即ち、復号途中結果格納用 RAM502のワード数は、 27である。
[0197] 復号途中結果格納用 RAM503の第 1アドレス力 第 9アドレスには、図 16の検査行 列 Hの第 7行目力も第 12行目までの 1に対応する復号途中結果 D412(D502)力 各行 ともに横方向(列方向)に詰めた形に (0を無視した形で)格納される。
[0198] 即ち、復号途中結果格納用 RAM503の第 1アドレスには、検査行列 Hの構成行列 である (7,1)から (12,6)の和行列(6 X 6の単位行列を右方向に 2つだけサイクリックシフ トした第 1のシフト行列と、右方向に 4つだけサイクリックシフトした第 2のシフト行列の 和である和行列)を構成する第 1のシフト行列の 1に対応するデータが、第 2アドレス には、検査行列 Hの構成行列である (7,1)から (12,6)の和行列を構成する第 2のシフト 行列の 1に対応するデータが格納される。以下、第 3アドレス力ゝら第 9アドレスも同様 に検査行列 Hの構成行列と対応づけてデータが格納される。
[0199] 同様に、復号途中結果格納用 RAM503の第 10アドレス力も第 18アドレスには、図 16の検査行列 Hの第 19行目力も第 24行目までの 1に対応するデータが、第 19アド レス力も第 27アドレスには、検査行列 Hの第 31行目力も第 36行目までの 1に対応す るデータが、図 16の検査行列 Hに対応づけて格納される。即ち、復号途中結果格納 用 RAM503のワード数は、 27である。
[0200] 上述したように、復号途中結果格納用 RAM502と 503のワード (word)数は、 27であ る。即ち、ワード数は、検査行列 Hの行の重み (row weight)の 9と行数の 36とを乗算し 、その乗算結果 (検査行列 Hの 1の数)を、同時に読み出す復号途中結果 D501の数の 6で除算し、さらに、復号途中結果格納用メモリ 413が有する復号途中結果格納用 R AMの個数の 2で除算した値となる。
[0201] 以下、図 20の復号途中結果格納用メモリ 413の各部の動作について詳細に説明 する。
[0202] 復号途中結果格納用メモリ 413には、計算部 412により第 1の演算が行われる場合
、計算部 412から第 1の演算の結果得られる復号途中結果 D412 (Uj)が供給され、そ の復号途中結果 D412が復号途中結果格納用 RAM502または復号途中結果格納用 RAM503のうちの一方の所定のアドレスに書き込まれると同時に、他方から、前回の 計算部 412による第 1の演算の結果得られた復号途中結果 D412 (u)が読み出され、 計算部 412に出力される。一方、計算部 415により第 2の演算が行われる場合、復号 途中結果格納用メモリ 413は、復号途中結果格納用 RAM502または復号途中結果 格納用 RAM503に書き込みを行わず、どちらか一方の RAMの所定のアドレスから復 号途中結果を読み出して、サイクリックシフト回路 414に供給する。
[0203] スィッチ 501には、計算部 412から 6つの復号途中結果 D412が供給されるとともに 、その復号途中結果 D412を書き込むメモリとして、復号途中結果格納用 RAM502ま たは復号途中結果格納用 RAM503の一方の選択を表す制御信号 D420が制御部 4
1
17から供給される。スィッチ 501は、制御信号 D420に基づいて、復号途中結果格納
1
用 RAM502または復号途中結果格納用 RAM503の一方を選択し、その選択した一 方に、 6つの復号途中結果 D412を供給する。
[0204] 復号途中結果格納用 RAM502には、スィッチ 501から 6つの復号途中結果 D412が 、復号途中結果 D501として供給されるとともに、制御部 417からアドレスを表す制御 信号 D420が供給される。復号途中結果格納用 RAM502は、制御信号 D420が表す
2 2 アドレスに既に格納されている前回の計算部 412による第 1の演算の結果得られた 6 つの復号途中結果 D501を読み出し、復号途中結果 D503としてスィッチ 504に供給 する。また、復号途中結果格納用 RAM502は、制御信号 D420が表すアドレスに、ス
2
イッチ 501から供給された 6つの復号途中結果 D501を格納する (書き込む)。
[0205] 復号途中結果格納用 RAM503には、スィッチ 501から 6つの復号途中結果 D412が 、復号途中結果 D502として供給されるとともに、制御部 417からアドレスを表す制御 信号 D420が供給される。復号途中結果格納用 RAM503は、制御信号 D420が表す
3 3 アドレスに既に格納されている前回の計算部 412による第 1の演算の結果得られた 6 つの復号途中結果 D502を読み出し、復号途中結果 D504としてスィッチ 504に供給 する。また、復号途中結果格納用 RAM503は、制御信号 D420が表すアドレスに、ス
3
イッチ 501から供給された 6つの復号途中結果 D502を格納する (書き込む)。
[0206] スィッチ 504には、復号途中結果格納用 RAM502から復号途中結果 D503が供給さ れるか、ある!/ヽは復号途中結果格納用 RAM503から復号途中結果 D504が供給される 。また、制御部 417から、復号途中結果格納用 RAM502または復号途中結果格納用 RAM503の一方の選択を表す制御信号 D420が供給される。スィッチ 504は、制御
4
信号 D420に基づいて、復号途中結果格納用 RAM502または復号途中結果格納用
4
RAM503の一方を選択し、その選択した一方から供給された 6つの復号途中結果を 、 6つの復号途中結果 D413として計算部 412とサイクリックシフト回路 414に供給する
[0207] 図 21は、復号途中結果格納用メモリ 413の復号途中結果格納用 RAM502と復号 途中結果格納用 RAM503の読み出しと書き込みの動作を説明するタイミングチヤ一 トである。
[0208] なお、図 21において、横軸は、時間(t)を表している。また、図 21では、図 22の〇 印内に記載された数字 iの構成行列の 1に対応するデータの読み出しを Riと表し、そ のデータの書き込み (格納)を Wiと表す。
[0209] 復号途中結果格納用メモリ 413では、計算部 412により第 1の演算が行われる場合 、復号途中結果格納用 RAM502が、制御信号 D420に基づいて、既に格納している
2
、前回の計算部 412の第 1の演算の結果得られた復号途中結果 D501のうち、同一ァ ドレスに格納している検査行列 Hの第 1行目から第 6行目までの 1に対応する復号途 中結果 D501を、 1クロックに 6つずつ、 9回(9クロック分)読み出し(図中、 RO乃至 R8) 、スィッチ 504を介して、計算部 412に供給する。即ち、図 16の検査行列 Hの行重み は、 9であるため、検査行列 Hの各行の 1に対応する復号途中結果は 9つあり、復号 途中結果格納用 RAM502は、第 1行目から第 6行目までの 1に対応する 6つの復号 途中結果 D501を、 6つ単位で 9回読み出す。
[0210] 次に、復号途中結果格納用 RAM503は、制御信号 D420に基づいて、既に格納し
3
ている、前回の計算部 412による第 1の演算の結果得られた復号途中結果 D502のう ち、同一アドレスに格納している検査行列 Hの第 7行目力も第 12行目までの 1に対応 する復号途中結果 D502を、 6つ単位で 9回続けて読み出し (R9乃至 R17)、スィッチ 504を介して、計算部 412に供給する。
[0211] ここで、ノードを 1つずつ計算する計算器 412乃至 412または 415乃至 415では
1 6 1 6
、ノード次数 (node degree)分の遅延が生じる。例えば、計算器 412乃至 412では 9
1 6 クロック分の遅延が生じる。また、復号装置 400が 100MHzを超える高速動作を行う場 合、計算器 412乃至 412では、さらに 3クロック分程度の遅延が生じ、 3クロック分程
1 6
度のパイプラインィ匕が必要となる。
[0212] 即ち、計算部 412が第 1の演算を行うために必要な時間、即ち復号途中結果格納 用メモリ 413から復号途中結果 D413が読み出されてから、その復号途中結果 D413を 用いた第 1の演算の結果得られる復号途中結果 D412が復号途中結果格納メモリ 41 3に供給されるまでの時間は、 12クロック分の時間 T1となる。
[0213] この場合、復号途中結果格納用 RAM502から復号途中結果 D503の 1回目の読み 出し (RO)が開始されて力も T1時間後に、計算部 412から復号途中結果格納メモリ 4 13への、第 1の演算の結果得られる検査行列 Hの第 1行目から第 6行目までの 1に対 応する 6つの復号途中結果 D412の供給が開始される。その復号途中結果 D413は、 スィッチ 501を介して復号途中結果 D501として復号途中結果格納用 RAM502に供給 され、復号途中結果格納用 RAM502は、その復号途中結果 D501を、制御信号 D420 に基づいて、既に読み出された復号途中結果 D503が格納されていたアドレスに 9回
2
続けて格納する(WO乃至 W8)。
[0214] 即ち、復号途中結果格納用 RAM502により復号途中結果 D503の 9回の読み出し( RO乃至 R8)が終了してから、復号途中結果格納用 RAM502により復号途中結果 D5 01の 9回の格納(WO乃至 W8)が開始されるまでに、 3クロック分の時間 Tw(=Tl— 9)の待ち時間が生じる。
[0215] その結果、復号途中結果格納用 RAM503からの 9回の読み出し (R9乃至 R17)が 終了してから、時間 Twが経過後に復号途中結果格納用 RAM502への 9回の格納( WO乃至 W8)が終了する。従って、復号途中結果格納用 RAM503からの 9回の読み 出し (R9乃至 R17)が終了してから、復号途中結果格納用 RAM502からの 9回の読 み出し (R18乃至 R26)を開始するまでに、時間 Twの待ち時間が必要となる。
[0216] また、サムプロダクトアルゴリズムを近似して実装する方法なども提案されている力 この方法では、性能の劣化を招いてしまう。
[0217] 以上のように、サムプロダクトアルゴリズムをノヽードウエアに実装する場合には、上述 したように、枝に対応するメッセージの演算(チェックノード演算とバリアブルノード演 算、または第 1の演算と第 2の演算)を、 1つずつシリアル (serial)に行う方法、すべて 並列(フルパラレル (foil parallel))に行う方法、幾つかずつ並列(パラレル (parallel))に 行う方法がある。
[0218] し力しながら、 P個ずつ並列に行う方法では、 Pの値が大きいとき、特に計算機 412 の回路規模が大きくなつてしまう。例えば、 Pが 360、符号長が 64800のときに、計算部 412の回路規模は、復号装置 400の全体の 20%、復号装置 400のメモリ (例えば、 復号途中結果格納用メモリ 410、復号途中結果格納用メモリ 413、受信用メモリ 416 など)を除いた論理回路の 60%に達する場合がある。
[0219] また、図 21に示すように、復号途中結果格納用 RAM502と 503のいずれ力 も読 み出しが行われない時間 Twが生じる。即ち、時間 Twの間、第 1の演算を行う計算部 412には、復号途中結果 D413が供給されないので、計算部 412は、第 1の演算を行 わない(遊んでしまう)。特に、ノード次数が小さい場合、時間 Twは相対的に長くなり 、計算部 412を長い間無駄にしていることになる。
[0220] 非特許文献 1 : C. Howland and A. Blanksby, "Parallel Decoding Architectures for Lo w Density Parity Check Codes , Symposium on Circuits and Systems, 2001 非特許文献 2 : E. Yeo, P. Pakzad, B. Nikolic and V. Anantharam, "VLSI Architectur es for iterative Decoders in Magnetic Recording Channels", IEEE Transactions on Magnetics, Vol. 37, No. 2, March 2001
非特許文献 3 : T.Zhang,K.K.Parhi,,,Joint(3,k)- regular LDPC Code and decoder/ enco der design, "IEEE Transactions on Signal Processing, Vol.52, No.4, pp.1065-1079,Apri 1 2004
f^^ j¾ : M.M.Mansour,N.R.Shanbhag,"A novel design methodology for high— p erformance programmable decoder cores for AA- LDPC codes , " Proceedings of IEEE Workshop on Signal Processing Systems 2003(SIPS 2003),pp.29-34,Aug.2003 特許文献 1:特開 2004— 364233号公報
発明の開示
発明が解決しょうとする課題
[0221] 本発明は、このような状況に鑑みてなされたものであり、 LDPC符号の復号を、装置 の大規模ィ匕を抑えつつ精度良く行うことができるようにするものである。
課題を解決するための手段
[0222] 本発明の復号装置は、 LDPC符号の復号のためのチェックノードの演算を行う第 1 の演算部と、 LDPC符号の復号のためのバリアブルノードの演算を行う第 2の演算部 とを備え、第 1の演算部のみが N (Nは P未満の正の整数)個のチェックノードの演算を 同時に行うか、第 2の演算部のみが N個のバリアブルノードの演算を同時に行うか、ま たは第 1の演算部が N個のチヱックノードの演算を同時に行い、かつ第 2の演算部が N個のノ リアブルノードの演算を同時に行うことを特徴とする。
[0223] 本発明の復号方法は、 LDPC符号の復号のためのチェックノードの演算を行う第 1 の演算ステップと、 LDPC符号の復号のためのノ リアブルノードの演算を行う第 2の演 算ステップとを含み、第 1の演算ステップの処理のみが N (Nは P未満の正の整数)個 のチェックノードの演算を同時に行うか、第 2の演算ステップの処理のみ力 個のバリ ァブルノードの演算を同時に行うか、または第 1の演算ステップの処理が N個のチェッ クノードの演算を同時に行い、かつ第 2の演算ステップの処理力 個のノ リアブルノ ードの演算を同時に行うことを特徴とする。
[0224] 本発明においては、 N (Nは P未満の正の整数)個のチェックノードの演算を同時に 行う力 N個のバリアブルノードの演算を同時に行う力 または N個のチェックノードの 演算を同時に行い、かつ N個のバリアブルノードの演算を同時に行う。
発明の効果
[0225] 本発明によれば、 LDPC符号の復号を、装置の大規模ィ匕を抑えつつ精度良く行うこ とが可能となる。
図面の簡単な説明
[0226] [図 1]LDPC符号の検査行列 Hを説明する図である。
[図 2]パリティ部が下三角行列になっている検査行列 Hを示す図である。
[図 3]LDPC符号の復号手順を説明するフローチャートである。
[図 4]メッセージの流れを説明する図である。
[図 5]LDPC符号の検査行列 Hの例を示す図である。
[図 6]検査行列 Hのタナーグラフを示す図である。
[図 7]バリアブルノードを示す図である。
[図 8]チェックノードを示す図である。
[図 9]LDPC符号の検査行列 Hの例を示す図である。
[図 10]ノード演算を 1つずつ行う LDPC符号の復号装置の構成例を示すブロック図で ある。
[図 11]図 10のチェックノード計算器の構成例を示すブロック図である。
[図 12]図 10のノリアブルノード計算器の構成例を示すブロック図である。
[図 13]ノード演算を全て同時に行う LDPC符号の復号装置の構成例を示すブロック図 である。
[図 14]図 13のチェックノード計算器の構成例を示すブロック図である。
[図 15]図 13のノリアブルノード計算器の構成例を示すブロック図である。
[図 16]6 X 6単位に分割した検査行列 Hを示す図である。
[図 17]ノード演算を 6個同時に行う復号装置の構成例を示すブロック図である。
[図 18]図 17のチェックノード計算器の構成例を示すブロック図である。
[図 19]図 17のノリアブルノード計算器の構成例を示すブロック図である。
[図 20]図 17の復号途中結果格納用メモリの構成例を示すブロック図である。
[図 21]図 17の復号途中結果格納用 RAMの動作を説明するタイミングチャートである
[図 22]復号途中結果に対応する構成行列の位置を示す図である。
圆 23]本発明を適用した復号装置の第 1実施の形態の構成例を示すブロック図であ る。
[図 24]図 23の復号途中結果格納メモリの構成例を示すブロック図である。
[図 25]図 24の復号途中結果格納用 RAMの動作を説明するタイミングチャートである
[図 26]復号途中結果に対応する構成行列の位置を示す図である。
[図 27]図 23の復号装置の復号処理を説明するフローチャートである。
[図 28]本発明を適用した復号装置の第 2実施の形態の構成例を示すブロック図であ る。
[図 29]図 28の受信用メモリの構成例を示すブロック図である。
[図 30]図 28の復号途中結果格納用メモリの構成例を示すブロック図である。
[図 31]受信用メモリと復号途中結果格納用メモリの動作を説明するタイミングチャート である。
[図 32]本発明を適用した復号装置の第 3実施の形態の構成例を示すブロック図であ る。
[図 33]図 32の復号途中結果格納用メモリの構成例を示すブロック図である。
[図 34]本発明を適用した復号装置の第 4実施の形態の構成例を示すブロック図であ る。
[図 35]図 34の復号装置の復号処理を説明するフローチャートである。
符号の説明
[0227] 414 サイクリックシフト回路, 415 計算部, 416 受信用メモリ, 1000 復号 装置, 1101 サイクリックシフト回路, 1102 計算部, 1103, 1104 復号途中 結果格納用メモリ, 1105 制御部, 1202乃至 1205 復号途中結果格納用 RAM , 1499 制御部, 1500 受信用メモリ, 1600 復号途中結果格納用メモリ, 1 502, 1503 受信データ格納用メモリ, 1602, 1603 復号途中結果格納用メモリ , 1799 制御部, 1800 復号途中結果格納用メモリ, 1801, 1802 復号硬判 定結果格納用メモリ, 1803 復号軟判定結果格納用メモリ, 2000 サイクリックシ フト回路, 2001 シンドローム判定部, 2002 復号途中結果格納用メモリ, 200 3 制御部
発明を実施するための最良の形態
[0228] 以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細 に説明する。
[0229] 図 23は、図 16の検査行列 Hで表現される LDPC符号を復号する本発明を適用した 復号装置の第 1実施の形態の構成例を示している。
[0230] 図 23の復号装置 1000は、サイクリックシフト回路 414、計算部 415、受信用メモリ 41 6、サイクリックシフト回路 1101、 3つの計算器 1102乃至 1102からなる計算部 1102、
1 3
復号途中結果格納用メモリ 1103、復号途中結果格納用メモリ 1104、および制御部 11 05から構成される。なお、図 17と同一のものには、同一の符号を付してある。
[0231] サイクリックシフト回路 1101には、復号途中結果格納用メモリ 1104から 6つの復号途 中結果 D1104と、受信用メモリ 416から 6つの受信データ D417 (LDPC符号)が供給さ れる。また、サイクリックシフト回路 1101には、制御部 1105から、その復号途中結果 D1 104に対応する検査行列 Hの 1が、検査行列 Hにお 、て元となる単位行列などを幾つ サイクリックシフトしたものであるかの情報 (Matrixデータ)を表し、さらに 6つの復号途 中結果 D1104または受信データ D417のいずれを選択するかの情報を表す制御信号 D1106が供給される。
[0232] サイクリックシフト回路 1101は、制御信号 D1106を元に、 6つの復号途中結果 D1104 または受信データ D417を選択し、並べ替えるサイクリックシフトを行う。サイクリックシ フト回路 1101は、 6つの復号途中結果 D1104または受信データ D417をサイクリックシ フトした結果のうち、構成行列の上半分(1行目乃至 3行目)または下半分 (4行目乃 至 6行目)の 1に対応する 3つを復号途中結果 D1101として、計算部 1102に供給する
[0233] 計算部 1102は、 3つの計算器 1102乃至 1102からなる。計算部 1102には、サイクリツ
1 3
クシフト回路 1101から、計算部 415による第 2の演算の結果得られた 3つの復号途中 結果 DllOl (v)が供給されるとともに、復号途中結果格納用メモリ 1103から、前回計 算器 1102乃至 1102による第 1の演算の結果得られた構成行列の上半分または下半
1 3
分の 1に対応する 3つの復号途中結果 D1103 (u)が供給され、その 3つの復号途中 結果 D1101と 3つの復号途中結果 D1103が、計算器 1102乃至 1102に供給される。ま
1 3
た、計算部 1102には、制御部 1105力 制御信号 D1107が供給され、その制御信号 D 1107が、計算器 1102乃至 1102に供給される。なお、制御信号 D1107は、 3つの計算
1 3
器 1102乃至 1102に共通の信号である。
1 3
[0234] 計算器 1102乃至 1102は、図 18に示した計算器 412と同様に構成され、それぞれ
1 3 1
復号途中結果 D1101と D1103を用いて、式(7)と式(8)にしたがって第 1の演算を行
い、復号途中結果 D1102 (v )を求める。計算部 1102は、計算器 1102乃至 1102による
i 1 3 演算の結果得られる、構成行列の上半分または下半分の 3つの 1に対応する 3つの 復号途中結果 D1102を復号途中結果格納用メモリ 1103に供給する。
[0235] 復号途中結果格納用メモリ 1103は、例えば、 3つの復号途中結果 D1102を同時に 読み書き可能な、 4つのシングルポート RAM力 構成される。復号途中結果格納用メ モリ 1103には、計算部 1102から 3つの復号途中結果 D1102が供給されるとともに、制 御部 1105から復号途中結果格納用メモリ 1103の読み書きを制御する制御信号 D110 8が供給される。
[0236] 復号途中結果格納用メモリ 1103には、制御信号 D1108に基づいて、計算部 1102か ら供給される 3つの復号途中結果 D1102がまとめて格納されると同時に、既に格納し てある 3つの復号途中結果 D1102が読み出され、復号途中結果 D1103として、計算部 1102とサイクリックシフト回路 414に供給される。即ち、復号途中結果格納用メモリ 110 3に対して、計算部 1102とサイクリックシフト回路 414に供給する復号途中結果 D1103 の読み出しと、計算部 1103力 供給される復号途中結果 D1102の書き込みとが、同 時に行われる。
[0237] なお、復号途中結果格納用メモリ 1103には、計算部 1102の第 1の演算により演算さ れた検査行列 Hの i列の、各行の 1に対応する枝力 の第 1の演算の復号途中結果 D 1102が格納されるので、復号途中結果格納用メモリ 1103に格納されるデータ量、即 ち、復号途中結果格納用メモリ 1103に必要とされる記憶容量は、復号途中結果 D110 2の量子化ビット数と、検査行列 Hの 1の数との乗算値となる。
[0238] サイクリックシフト回路 414、計算部 415、および受信用メモリ 416は、図 17のそれ らと同一であるので説明は省略する。なお、サイクリックシフト回路 414は、復号途中 結果格納用メモリ 1103から 3つずつ供給される 6つの復号途中結果 D1103をサイタリ ックシフトし、 6つの復号途中結果 D414を計算部 415に供給する。
[0239] 復号途中結果格納用メモリ 1104には、サイクリックシフト回路 1101からの復号結果 D 1105が 6つずつ、第 1アドレス力 順に格納され、復号途中結果格納用メモリ 1104か らは既に格納してある復号結果 D1105が出力される。また、復号途中結果格納用メモ リ 1104には、計算部 415から供給された第 2の演算の結果である検査行列 Hの 6つの
列に対応する 6つの復号途中結果 D415が、第 1アドレス力 順に格納される。
[0240] 即ち、復号途中結果格納用メモリ 1104の第 1アドレスには、図 17の復号途中結果 格納用メモリ 410と同様に、検査行列 Hの列に対応する復号途中結果のうち、第 1列 目力 第 6列目の復号途中結果 Vが格納される。そして、同様に、第 2アドレスには、 第 7列目力も第 12列目の復号途中結果 Vが格納され、第 3アドレスには、第 13列目 力 第 18列目の復号途中結果が格納される。以後、同様に、第 19列目力も第 108 列目までの復号途中結果 Vが、 6個ずつ、第 4アドレス力も第 18アドレスまで格納され 、計 108個の復号途中結果 Vが復号途中結果格納用メモリ 1104に格納される。
[0241] 従って、復号途中結果格納用メモリ 1104のワード (word)数は、図 16の検査行列 H の列数 (LDPC符号の符号長)である 108を、同時に読み書きする復号途中結果の数 である 6で割り算した 18となる。
[0242] 復号途中結果格納用メモリ 1104からは、既に格納してある復号途中結果 D415から 、後段の計算部 1102が求めようとする復号途中結果 uの対応する検査行列 Hの行に おいて" 1"になっている復号途中結果 Vが 6つ同時に読み出され、復号途中結果 D11 04として、サイクリックシフト回路 1101に供給される。
[0243] なお、復号途中結果格納用メモリ 1104は、例えば、 6つの復号途中結果を同時に 読み書き可能なシングルポート RAMで構成される。また、復号途中結果格納用メモリ 1104には、計算部 415の第 2の演算により演算された列に対応する復号途中結果 D4 15が格納されるので、復号途中結果格納用メモリ 1104に格納されるデータ量、即ち、 復号途中結果格納用メモリ 1104に必要とされる記憶容量は、復号途中結果 D415の 量子化ビット数と、検査行列 Hの列数 (LDPC符号の符号長)との乗算値である。
[0244] 制御部 1105は、制御信号 D1106をサイクリックシフト回路 1101に、制御信号 D1107を 計算部 1102に供給することにより、それぞれを制御する。また、制御部 1105は、制御 信号 D1108を復号途中結果格納用メモリ 1103に、制御信号 D421をサイクリックシフト 回路 414に、制御信号 D422を計算部 415にそれぞれ供給することにより、それぞれ を制御する。
[0245] サイクリックシフト回路 1101、計算部 1102、復号途中結果格納用メモリ 1103、サイタリ ックシフト回路 414、計算部 415、復号途中結果格納用メモリ 1104の順で、データが
一巡することで、復号装置 1000は、 1回の復号を行うことができる。復号装置 1000で は、例えば、所定の回数だけ繰り返して復号が行われた後、計算部 415による第 2の 演算の結果である復号途中結果 D1104が、最終的な復号結果として出力される。
[0246] 図 24は、図 23の復号途中結果格納用メモリ 1103の構成例を示すブロック図である
[0247] 復号途中結果格納用メモリ 1103は、スィッチ 1201と 1206、並びに 4つのシングルポ ート RAMである復号途中結果格納用 RAM1202乃至 1205から構成される。
[0248] この復号途中結果格納用メモリ 1103の各部について詳細に説明する前に、まず、 復号途中結果格納用 RAM1202乃至 1205へのデータの格納方法について説明する
[0249] 復号途中結果格納用 RAM1202乃至 1205には、計算部 1102による第 1の演算の結 果得られ、スィッチ 1201を介して供給された復号途中結果 D1102が格納される。
[0250] 具体的には、復号途中結果格納用 RAM1202の第 1アドレス力 第 9アドレスには、 図 16の検査行列 Hの第 1行目から第 3行目までの 1に対応する復号途中結果 D1102( D1201)が、各行ともに横方向(列方向)に詰めた形に (0を無視した形で)格納される
[0251] 即ち、第 j行第冽を、(j,i)と表すこととすると、復号途中結果格納用 RAM1202の第 1 アドレスには、図 16の検査行列 Hの構成行列である (1,1)から (6,6)の 6 X 6の単位行 列の上半分(1乃至 3行目)の 1に対応するデータ力 第 2アドレスには、図 16の検査 行列 Hの構成行列である (1,25)から (6,30)のシフト行列(6 X 6)の単位行列を右方向 に 5つだけサイクリックシフトしたシフト行列)の上半分の 1に対応するデータが格納さ れる。第 3アドレス力も第 8アドレスも同様に図 16の検査行列 Hの構成行列の上半分 と対応づけてデータが格納される。
[0252] そして、第 9アドレスには、検査行列 Hの (1,103)から (6, 108)のシフト行列(6 X 6の単 位行列のうちの 1行目の" 1 "を" ΟΊこ置き換えて 1つだけ左方向にサイクリックシフトし たシフト行列)の上半分の〃 1Ίこ対応するデータが格納される。ここで、図 16の検査 行列 Hの (1,103)から (6,108)のシフト行列においては、 1行目に〃 1 "がないため、第 9ァ ドレスにはデータが格納されな!、。
[0253] また、復号途中結果格納用 RAM1202の第 10アドレス力も第 18アドレスには、図 16 の検査行列 Hの第 13行目から第 15行目までの〃 1Ίこ対応するデータが格納される。 即ち、第 10アドレスには、検査行列 Hの (13,7)から (18,12)の 6 X 6の単位行列を右方 向に 5つだけサイクリックシフトした行列の上半分の〃 1Ίこ対応するデータが格納され 、第 11アドレスには、検査行列 Hの (13,13)から(18,18)の和行列(6 X 6の単位行列と 、 6 X 6の単位行列を右方向に 1つだけサイクリックシフトしたシフト行列との和である 和行列)を構成するシフト行列の上半分の〃 1Ίこ対応するデータが格納される。
[0254] また、第 12アドレスには、検査行列 Hの (13,13)から(18,18)の和行列を構成する単 位行列の上半分の" 1Ίこ対応するデータが格納される。以下、第 13アドレス力も第 1 8アドレスにつ 、ても、検査行列 Hの構成行列の上半分に対応づけてデータが格納 される。
[0255] 同様に、復号途中結果格納用 RAM1202の第 19アドレス力も第 27アドレスには、図 16の検査行列 Hに対応づけて、第 25行目力も第 27行目までの〃 1Ίこ対応するデー タが格納される。即ち、復号途中結果格納用 RAM1202のワード数は、 27である。
[0256] また、復号途中結果格納用 RAM1203の第 1アドレス力も第 9アドレスには、図 16の 検査行列 Hの第 4行目から第 6行目までの〃 1Ίこ対応する復号途中結果 D1102(D120 2)が、各行ともに横方向に詰めた形に格納される。
[0257] 即ち、復号途中結果格納用 RAM1203の第 1アドレスには、図 16の検査行列 Hの構 成行列である (1,1)から (6,6)の 6 X 6の単位行列の下半分 (4乃至 6行目 )の" 1Ίこ対応 するデータが、第 2アドレスには、図 16の検査行列 Hの構成行列である (1,25)から (6,3 0)のシフト行列(6 X 6)の単位行列を右方向に 5つだけサイクリックシフトしたシフト行 列)の下半分の" 1Ίこ対応するデータが格納される。第 3アドレス力 第 9アドレスも同 様に図 16の検査行列 Hの構成行列の下半分と対応づけてデータが格納される。
[0258] また、復号途中結果格納用 RAM1203の第 10アドレス力も第 18アドレスには、図 16 の検査行列 Hの第 16行目から第 18行目までの〃 1Ίこ対応するデータが格納される。 即ち、第 10アドレスには、検査行列 Hの (13,7)から (18,12)の 6 X 6の単位行列を右方 向に 5つだけサイクリックシフトした行列の下半分の〃 1Ίこ対応するデータが格納され 、第 11アドレスには、検査行列 Hの (13,13)から(18,18)の和行列(6 X 6の単位行列と
、 6 X 6の単位行列を右方向に 1つだけサイクリックシフトしたシフト行列との和である 和行列)を構成するシフト行列の下半分の〃 1Ίこ対応するデータが格納される。また 、第 12アドレスには、検査行列 Hの (13,13)から(18,18)の和行列を構成する単位行列 の下半分の" 1Ίこ対応するデータが格納される。以下、第 13アドレス力も第 18ァドレ スについても、検査行列 Hの構成行列の下半分に対応づけてデータが格納される。
[0259] 同様に、復号途中結果格納用 RAM1203の第 19アドレス力も第 27アドレスには、図 16の検査行列 Hに対応づけて、第 28行目力も第 30行目までの〃 1Ίこ対応するデー タが格納される。即ち、復号途中結果格納用 RAM1203のワード数は、 27である。
[0260] 復号途中結果格納用 RAM1204の第 1アドレス力 第 9アドレスには、図 16の検査行 列 Hの第 7行目から第 9行目までの 1に対応する復号途中結果 D1102(D1203)が、各 行ともに横方向に詰めた形に格納される。
[0261] 即ち、復号途中結果格納用 RAM1204の第 1アドレスには、検査行列 Hの構成行列 である (7,1)から (12,6)の和行列(6 X 6の単位行列を右方向に 2つだけサイクリックシフ トした第 1のシフト行列と、右方向に 4つだけサイクリックシフトした第 2のシフト行列の 和である和行列)を構成する第 1のシフト行列の上半分(7乃至 9行目)の" 1Ίこ対応 するデータが、第 2アドレスには、検査行列 Hの構成行列である (7,1)から (12,6)の和行 列を構成する第 2のシフト行列の上半分の〃 1Ίこ対応するデータが格納される。以下 、第 3アドレス力 第 9アドレスも同様に検査行列 Hの構成行列の上半分と対応づけて データが格納される。
[0262] 同様に、復号途中結果格納用 RAM1204の第 10アドレス力も第 18アドレスには、図 16の検査行列 Hの第 19行目力 第 21行目までの〃 1Ίこ対応するデータが、第 19ァ ドレス力も第 27アドレスには、検査行列 Hの第 31行目力も第 33行目までの〃 1Ίこ対 応するデータが、図 16の検査行列 Hに対応づけて格納される。即ち、復号途中結果 格納用 RAM1204のワード数は、 27である。
[0263] 復号途中結果格納用 RAM1205の第 1アドレス力 第 9アドレスには、図 16の検査行 列 Hの第 10行目力 第 12行目までの" 1Ίこ対応する復号途中結果 D1102(D1204)が 、各行ともに横方向に詰めた形に格納される。
[0264] 即ち、復号途中結果格納用 RAM1205の第 1アドレスには、検査行列 Hの構成行列
である (7,1)から (12,6)の和行列(6 X 6の単位行列を右方向に 2つだけサイクリックシフ トした第 1のシフト行列と、右方向に 4つだけサイクリックシフトした第 2のシフト行列の 和である和行列)を構成する第 1のシフト行列の下半分(10乃至 12行目)の" 1Ίこ対 応するデータが、第 2アドレスには、検査行列 Hの構成行列である (7,1)から (12,6)の和 行列を構成する第 2のシフト行列の下半分の〃 1Ίこ対応するデータが格納される。以 下、第 3アドレス力 第 9アドレスも同様に検査行列 Hの構成行列の下半分と対応づ けてデータが格納される。
[0265] 同様に、復号途中結果格納用 RAM1205の第 10アドレス力も第 18アドレスには、図 16の検査行列 Hの第 22行目力も第 24行目までの〃 1Ίこ対応するデータが、第 19ァ ドレス力も第 27アドレスには、検査行列 Hの第 34行目力も第 36行目までの〃 1Ίこ対 応するデータが、図 16の検査行列 Hに対応づけて格納される。即ち、復号途中結果 格納用 RAM1205のワード数は、 27である。
[0266] 上述したように、復号途中結果格納用 RAM1202乃至 1205のワード (word)数は、 27 である。即ち、ワード数は、検査行列 Hの行の重み (row weight)の 9と行数の 36とを乗 算し、その乗算結果 (検査行列 Hの〃 1 "の数)を、同時に読み出す復号途中結果 D120 1の数の 3で除算し、さらに、復号途中結果格納用メモリ 1103が有する復号途中結果 格納用 RAMの個数の 4で除算した値となる。
[0267] 以下、図 24の復号途中結果格納用メモリ 1103の各部の動作について詳細に説明 する。
[0268] 復号途中結果格納用メモリ 1103には、計算部 1102により第 1の演算が行われる場 合、計算部 1102力 第 1の演算の結果得られる復号途中結果 D 1102 (u)が供給され 、その復号途中結果 D1102が復号途中結果格納用 RAM1202乃至 1205のいずれか 1 つの所定のアドレスに書き込まれると同時に、その他の 1つから、前回の計算部 1102 による第 1の演算の結果得られた復号途中結果 D1102が読み出され、復号途中結果 D1103として計算部 1102に出力される。一方、計算部 415により第 2の演算が行われ る場合、復号途中結果格納用メモリ 1103では、復号途中結果格納用 RAM1202乃至 1 205の書き込みが行われず、 V、ずれ力 1つの復号途中結果格納用 RAM1202乃至 120 5の所定のアドレス力も復号途中結果 D1102を読み出して、復号途中結果 D1103とし
てサイクリックシフト回路 414に供給される。
[0269] スィッチ 1201には、計算部 1102から 3つの復号途中結果 D1102が供給されるととも に、その復号途中結果 D1102を書き込むメモリとして、復号途中結果格納用 RAM120 2乃至 1205のいずれか 1つの選択を表す制御信号 D1108が制御部 1105から供給さ
1
れる。スィッチ 1201は、制御信号 D1108に基づいて、復号途中結果格納用 RAM 1202
1
乃至 1205のいずれ力 1つを選択し、その選択した復号途中結果格納用 RAM1202乃 至 1205に、 3つの復号途中結果 D1102を供給する。
[0270] 復号途中結果格納用 RAM1202乃至 1205には、スィッチ 1201から 3つの復号途中結 果 D1102が、それぞれ復号途中結果 D1201乃至 D1204として供給されるとともに、制 御部 1105からアドレスを表す制御信号 D1108乃至 D1108が供給される。復号途中結
2 5
果格納用 RAM1202乃至 1205は、それぞれ制御信号 D1108乃至 D1108が表すアドレ
2 5
スに既に格納されている前回の計算部 1102による第 1の演算の結果得られた 3つの 復号途中結果 D1201乃至 D1204を読み出し、復号途中結果 D1205乃至 D1208として スィッチ 1206に供給する。また、復号途中結果格納用 RAM1202乃至 1205には、それ ぞれ、制御信号 D1108乃至 D1108が表すアドレスに、スィッチ 1201力 供給された 3
2 5
つの復号途中結果 D1201乃至 D1204が格納される。
[0271] スィッチ 1206には、復号途中結果格納用 RAM1202からの復号途中結果 D1205、復 号途中結果格納用 RAM1203からの復号途中結果 D1206、復号途中結果格納用 RA M1204からの復号途中結果 D1207、または復号途中結果格納用 RAM1205からの復 号途中結果 D1208が供給される。
また、制御部 1105から、復号途中結果格納用 RAM1202乃至 1205のいずれか 1つの 選択を表す制御信号 D1108が供給される。スィッチ 1206は、制御信号 D1108に基づ
6 6 いて、復号途中結果格納用 RAM1202乃至 1205のいずれ力 1つを選択し、その選択 した 1つ力 供給された 3つの復号途中結果 D1205乃至 D1208が、 3つの復号途中結 果 D1103として計算部 1102またはサイクリックシフト回路 414に供給される。
[0272] 図 25は、復号途中結果格納用メモリ 1103の復号途中結果格納用 RAM1202乃至復 号途中結果格納用 RAM1205の読み出しと書き込みの動作を説明するタイミングチヤ ートである。
[0273] なお、図 25において、横軸は、時間(t)を表している。また、図 25では、図 26の〇 印内に記載された数字 i
0の構成行列の上半分の〃 1Ίこ対応するデータの読み出しを
Riと表し、そのデータの書き込み (格納)を Wiと表す。さらに、図 26の〇印内に記載
0 0
された数字 iの構成行列の下半分の〃 1〃に対応するデータの読み出しを Riと表し、
1 1 そのデータの書き込みを Wiと表す。
1
[0274] 復号途中結果格納用メモリ 1103では、計算部 1102により第 1の演算が行われる場 合、復号途中結果格納用 RAM1202から、制御信号 D1108に基づいて、既に格納し
2
ている、前回の計算部 1102の第 1の演算の結果得られた復号途中結果 D1201のうち 、同一アドレスに格納している検査行列 Hの第 1行目から第 3行目までの" 1Ίこ対応 する復号途中結果 D120KD1205)が、 3つずつ 9回(9クロック分)読み出され (RO乃
0 至 R8 )、スィッチ 1206を介して、復号途中結果 D1103として計算部 1102に供給される
0
。即ち、図 16の検査行列 Hの行重みは、 9であるため、検査行列 Hの各行の" 1Ίこ対 応する復号途中結果は 9つあり、復号途中結果格納用 RAM1202からは、第 1行目か ら第 3行目までの" 1Ίこ対応する 3つの復号途中結果 D1201が、 3つ単位で 9回読み 出される。
[0275] 次に、復号途中結果格納用 RAM 1203からは、制御信号 D1108に基づいて、既に
3
格納されている、前回の計算部 1102の第 1の演算の結果得られた復号途中結果 D12 02のうち、同一アドレスに格納されている検査行列 Hの第 4行目から第 6行目までの" 1Ίこ対応する復号途中結果 D1202が、 3つ単位で 9回続けて読み出され(図中、 RO
1 乃至 R8 )、スィッチ 1206を介して、計算部 1102に供給される。
1
[0276] ここで、計算部 1102が第 1の演算を行うために必要な時間、即ち復号途中結果格 納メモリ 1103から復号途中結果 D1103が読み出されてから、その復号途中結果 D110 3を用 、た第 1の演算の結果得られる復号途中結果 D 1102が復号途中結果格納メモ リ 1103に供給されるまでの時間は、 12クロック分の時間 T1であるものとする。
[0277] この場合、復号途中結果格納用 RAM1202から復号途中結果 D1205の 1回目の読 み出し (RO )が開始されてから T1時間後に、計算部 1102から復号途中結果格納用
0
メモリ 1103への、第 1の演算の結果得られる検査行列 Hの第 1行目から第 3行目まで の〃 1Ίこ対応する 3つの復号途中結果 D1102の供給が開始される。その復号途中結
果 D1102は、スィッチ 1201を介して復号途中結果 D1201として復号途中結果格納用 R AM1202に供給され、復号途中結果格納用 RAM1202には、その復号途中結果 D120 2が、制御信号 D1108に基づいて、既に読み出された復号途中結果 D1205が格納さ
2
れていたアドレスに 9回続けて格納される(WO乃至 W8;)。
0 0
[0278] 即ち、復号途中結果格納用 RAM1202からの復号途中結果 D1205の 9回の読み出し
(RO乃至 R8 )が終了してから、復号途中結果格納用 RAM1202への復号途中結果
0 0
D1201の 9回の格納(WO乃至 W8 )が開始されるまでに、 3クロック分の時間 Tw (二
0 0
T1 9)が生じる。その結果、復号途中結果格納用 RAM1203からの 9回の読み出し( RO乃至 R8 )が終了してから、時間 Twが経過後に復号途中結果格納用 RAM1202
1 1
への 9回の格納(WO乃至 W8 )が終了する。
0 0
[0279] し力しながら、復号途中結果格納用メモリ 1103では、次の第 1の演算に用いられる 検査行列 Hの第 7行目から第 9行目までの" 1Ίこ対応する復号途中結果 D1203が、復 号途中結果格納用 RAM1204に格納されているので、復号途中結果格納用 RAM 120 3からの 9回の読み出し (RO乃至 R8 )直後に、復号途中結果格納用 RAM 1204から
1 1
の 9回の読み出し (R9乃至 R17 )を行うことができる。
0 0
[0280] また、復号途中結果格納用 RAM1203からの 9回の読み出し (RO乃至 R8 )が終了
1 1 してから時間 Tw後に、復号途中結果格納用 RAM1203への復号途中結果 D1202の 9 回の格納 (WO乃至 W8 )が開始される。
1 1
[0281] 次に、復号途中結果格納用 RAM1204からの 9回の読み出し (R9乃至 R17 )が終
0 0 了した直後に、次の第 1の演算に用いられる検査行列 Hの第 10行目力も第 12行目ま での 1に対応する復号途中結果 D1204が、復号途中結果格納用 RAM1205から 9回読 み出される(R9乃至 R17 ) oまた、復号途中結果格納用 RAM1204からの 9回の読み
1 1
出し (R9乃至 R17 )が終了してから時間 Tw後に、復号途中結果格納用 RAM 1204
0 0
への復号途中結果 D1203の 9回の格納 (W9乃至 W17 )が開始される。
0 0
[0282] 復号途中結果格納用 RAM1205からの 9回の読み出し (R9乃至 R17 )が終了した
1 1
直後に、次の第 1の演算に用いられる検査行列 Hの第 13行目力 第 15行目までの〃 1Ίこ対応する復号途中結果 D1201が、復号途中結果格納用 RAM1202から 9回読み 出される(R18乃至 R26 ) oまた、復号途中結果格納用 RAM1205からの 9回の読み
出し (R9乃至 R17 )が終了してから時間 Tw後に、復号途中結果格納用 RAM 1205
1 1
への復号途中結果 D1204の 9回の格納 (W9乃至 W17 )が開始される。そして、以
1 1
降同様の処理が繰り返される。
[0283] 以上のように、復号途中結果格納用メモリ 1103では、検査行列 Hの 3行分の" 1Ίこ 対応する復号途中結果 D1102が、 4つの復号途中結果格納用 RAM1202乃至 1205に 順に格納されるので、計算部 1102が第 1の演算を行うために時間 T1が必要な場合 であっても、復号途中結果 D1103を計算部 1102に連続して出力することができる。そ の結果、計算部 1102では、連続して第 1の演算を行うことができる。
[0284] 図 27は、図 23の復号装置 1000の復号処理を説明するフローチャートである。この 処理は、例えば、受信用メモリ 416に復号すべき受信データが格納されたとき、開始 される。
[0285] ステップ S49において、制御部 1105は、復号途中結果格納用 RAM1202乃至 1205 のうちのいずれか 1つを読み出しメモリとして選択し、その選択を表す制御信号 D110 8をスィッチ 1206 (図 24)に供給する。スィッチ 1206は、制御信号 D1108に基づいて
6 6
、復号途中結果格納用 RAM1202乃至 1205を選択し、その選択した復号途中結果格 納用 RAM1202乃至 1205から 3つ単位で供給される復号途中結果 D1205乃至 D1208 を、復号途中結果 D1103としてサイクリックシフト回路 414と計算部 1102に供給する。
[0286] ステップ S49の処理後は、ステップ S50に進み、サイクリックシフト回路 414は、復号 途中結果格納用メモリ 1103 (のスィッチ 1206)から供給される、構成行列の上半分に 対応する 3つの復号途中結果 D1103と下半分に対応する 3つの復号途中結果 D1103 (u)とを合わせて、サイクリックシフトし、計算部 415に供給する。
[0287] 具体的には、サイクリックシフト回路 414には、復号途中結果格納用メモリ 1103から 3つ単位で復号途中結果 D1103が供給されるとともに、制御部 1105から、その復号途 中結果 D1103に対応する Matrixデータを表す制御信号 D421が供給される。サイクリツ クシフト回路 414は、制御信号 D421を元に、構成行列の上半分に対応する 3つの復 号途中結果 D1103と下半分に対応する 3つの復号途中結果 D1103とを合わせて、サ イクリックシフトし (並べ替え)、その結果を復号途中結果 D414として、計算部 415に 供給する。
[0288] ステップ S51において、計算部 415は、第 2の演算を行い、その演算の結果である 復号途中結果 D415を復号途中結果格納用メモリ 1104に供給する。
[0289] 具体的には、計算部 415には、ステップ S50でサイクリックシフト回路 414から 6つ の復号途中結果 D414が供給されるとともに、受信データ用メモリ 416から 6つの受信 データ D417が供給され、復号途中結果 D414と受信データ D417が、計算部 415の計 算器 415乃至 415それぞれに 1つずつ供給される。さらに、計算部 415には、制御
1 6
部 1105から制御信号 D422が供給され、その制御信号 D422が計算器 415乃至 415
1 6 に供給される。
[0290] 計算器 415乃至 415は、復号途中結果 D414と受信データ D417を用いて、制御信
1 6
号 D422に基づいて、式(5)にしたがって、それぞれ第 2の演算を行い、その第 2の演 算の結果得られる検査行列 Hの列に対応する復号途中結果 D415(v)を復号途中結 果格納用メモリ 1104に供給する。
[0291] なお、受信用メモリ 416から供給された受信データ D417に対して、まだ第 1の演算 が行われておらず、復号途中結果格納用メモリ 1103に復号途中結果 D1103が格納さ れていない場合、計算部 415は、復号途中結果 uを初期値に設定し、第 2の演算を 行う。
[0292] ステップ S51の処理後は、ステップ S52に進み、復号途中結果格納用メモリ 1104は 、ステップ S51で計算部 415から供給された復号途中結果 D415(v)を、同一アドレス に格納し、ステップ S 53に進む。
[0293] ステップ S53において、制御部 1105は、計算部 415により、検査行列 Hの列に対応 する全ての復号途中結果 D1104が演算された力どうかを判定し、全ての復号途中結 果 D1104が演算されていないと判定した場合、ステップ S49に戻り、上述した処理を 繰り返す。
[0294] 一方、ステップ S53において、制御部 1105は、計算部 415により、検査行列 Hの列 に対応する全ての復号途中結果 D1104が演算されたと判定した場合、ステップ S54 に進み、サイクリックシフト回路 1101は、制御部 1105力 供給される制御信号 D1106を 元に、復号途中結果格納用メモリ 1104から供給される 6つの復号途中結果 D1104(v) をサイクリックシフトし、その結果を 3つ単位で復号途中結果 D1101として、計算部 110
2に供給する。
[0295] ステップ S54の処理後は、ステップ S55に進み、計算部 1102は、第 1の演算を行い 、その第 1の演算の結果である復号途中結果 D 1102を復号途中結果格納用メモリ 110 3に供給する。
[0296] 具体的には、計算部 1102には、ステップ S54でサイクリックシフト回路 1101から 3つ の復号途中結果 DllOl(v)が供給されるとともに、後述するステップ S57で既に格納さ れた前回の計算部 1102による第 1の演算の結果得られた 3つの復号途中結果 D1102 (D1103) (u)が供給され、その復号途中結果 D1101と D1103が、計算部 1102の計算器 1102乃至 1102のそれぞれに 1つずつ供給される。さらに、計算部 1102には、制御部
1 3
1105から制御信号 D1107が供給され、その制御信号 D1107が計算器 1102乃至 1102
1 3 に供給される。
[0297] 計算器 1102乃至 1102は、それぞれ復号途中結果 D1101と D1103を用いて、制御
1 3
信号 D1107に基づいて、式(7)と式 (8)にしたがって、それぞれ第 1の演算を行い、そ の第 1の演算の結果得られる復号途中結果 D1102 (u)を復号途中結果格納用メモリ 1 103に供給する。
[0298] なお、受信用メモリ 416から供給された受信データ D417に対して、まだ第 1の演算 が行われておらず、復号途中結果格納用メモリ 1103に復号途中結果 D1103が格納さ れていない場合、計算部 1102は復号途中結果 u を 0に設定する。具体的には、例え dv
ば、受信データ D417に対する復号を行う前に、復号途中結果格納用メモリ 1103が 0 に初期化される力 または計算部 1102が復号途中結果格納用メモリ 1103からの入力 を 0にマスクする。
[0299] ステップ S55の処理後は、ステップ S56に進み、制御部 1105は、復号途中結果格 納用 RAM1202乃至 1205のうちのいずれ力 1つを格納メモリとして選択し、その選択を 表す制御信号 D1108をスィッチ 1201 (図 24)に供給する。スィッチ 1201は、制御信号
1
D1108に基づいて、 3つの復号途中結果 D1102を格納する復号途中結果格納用 RA
1
M1202乃至 1205を選択し、その選択した復号途中結果格納用 RAM1202乃至 1205に 、復号途中結果 D1102を供給する。
[0300] ステップ S56の処理後は、ステップ S57に進み、復号途中結果格納用 RAM1202乃
至 1205には、ステップ S56でスィッチ 1201力 供給された 3つの復号途中結果 D1201 乃至 D1204(D1102)が、同一のアドレスに格納され、ステップ S58に進む。
[0301] ステップ S58において、制御部 1105は、計算部 1102により、検査行列 Hの全ての" 1 〃に対応する復号途中結果 D1102が演算された力どうかを判定し、全ての復号途中 結果 D1102が演算されていないと判定した場合、ステップ S54に戻り、上述した処理 を繰り返す。
[0302] 一方、ステップ S57において、制御部 1105は、計算部 1102により、全ての" 1Ίこ対 応する復号途中結果 D1102が演算されたと判定した場合、処理を終了する。
[0303] なお、復号装置 1000は、復号回数だけ図 27の復号処理を繰り返し行い、最後の第 2の演算の結果得られるメッセージ D1104が、最終的な復号結果として出力される。
[0304] 上述した図 23の復号装置 1000では、計算部 1102が 3つの計算器 1102乃至 1102
1 3 から構成されたが、計算部 1102ではなぐ計算部 415が 3つの計算器 415乃至 415か
1 3 ら構成されるよう〖こしてもよい。この場合、 3つ単位で第 2の演算が行われ、復号途中 結果格納用メモリ 1104が 3つ以上の復号途中結果格納用メモリから構成される。また 、計算部 415と計算部 1102の両方が、それぞれ 3つの計算器 415乃至 415、計算器 1
1 3
102乃至 1102力も構成されるようにしてもよい。
1 3
[0305] 以上のように、図 23の復号装置 1000では、復号途中結果格納用メモリ 1103が 4つ の復号途中結果格納用 RAM1202乃至 1205から構成され、計算部 1102が 3つ単位で 第 1の演算を行うので、動作周波数を損なうことなぐ回路規模を削減することができ る。
[0306] 例えば、従来の 6つの計算器 412乃至 412を備える復号装置 400では、計算器 412
1 6 1 乃至 412による第 1の演算が必要とするクロック数は 72である力 図 23の復号装置 10
6
00では、計算器 1102乃至 1102による第 1の演算が必要とするクロック数は 117であり
1 3
、復号装置 400の場合の 1.6倍程度である。即ち、計算器 1102乃至 1102の数を半減
1 3
させたにも関わらず、クロック数は 2倍より小さい値となっている。
[0307] また、計算器 415乃至 415による第 2の演算が必要とするクロック数は 59クロックで
1 6
あるため、 1回の復号に要する時間は、復号装置 400と 1000で 131 ( = 72 + 59)対 176 ( = 117 + 59)となり、復号装置 1000の復号に要する時間は、復号装置 400に比べて 1.3
倍程度である。即ち、復号装置 1000の動作周波数は、復号装置 400に比べて 1.3倍 程度で済む。
[0308] さらに、第 1の演算が必要とするクロック数が小さい場合には、復号装置 400と 1000 における 1回の復号に要する時間の比率は小さくなる。例えば、検査行列 Hの各行の "1"の数が 4である場合、復号装置 400と 1000における第 1の演算に要する時間の比 率は、 37対 52であり、復号装置 1000における時間は、復号装置 1000に比べて 1.4倍 程度となる。
[0309] 図 28は、本発明を適用した復号装置 1000の第 2実施の形態の構成例を示すブロッ ク図である。
[0310] 図 28の復号装置 1000では、図 23の復号装置 1000の受信用メモリ 416の代わりに、 受信用メモリ 1400力 復号途中結果格納用メモリ 1104の代わりに復号途中結果格納 用メモリ 1401が、制御部 1105の代わりに制御部 1402が設けられている。受信用メモリ 1400には、制御部 1402力 受信データ格納用メモリ 1502と 1503 (後述する図 29)のい ずれか一方の選択を表す制御信号 D 1400が供給される。復号途中結果格納用メモリ 1401には、制御部 1402力 復号途中結果格納用メモリ 1602と 1603(後述する図 30)の いずれか一方の選択を表す制御信号 D1401が供給される。
[0311] 図 29は、図 28の受信用メモリ 1400の構成例を示すブロック図である。
[0312] 図 29の受信用メモリ 1400は、スィッチ 1501と 1504、並びに受信データ格納用メモリ 1 502と 1503から構成される。
[0313] スィッチ 1501には、通信路を通して受信した受信値 (符号ビット)力も計算した符号 ビットの 0らしさの値である受信 LLR (対数尤度比)のデータ (受信データ) D416が供給 されるとともに、制御部 1105力 受信データ格納用メモリ 1502と 1503のいずれか一方 の選択を表す制御信号 D1400が供給される。スィッチ 1501は、制御信号 D1400に基
1 1 づいて、受信データ D416を、受信データ D1501として受信データ格納用メモリ 1502に 、または受信データ D1502として受信データ格納用メモリ 1503に供給する。
[0314] 受信データ格納用メモリ 1502には、スィッチ 1501からの受信データ D1501が格納さ れ、また、受信データ格納用メモリ 1502からは、既に格納されている受信データ D150 1が、受信データ D1503としてスィッチ 1504に供給される。
受信データ格納用メモリ 1503には、受信データ格納用メモリ 1502と同様に、スィッチ 1 501からの受信データ D1502が格納され、また、受信データ格納用メモリ 1503からは、 既に格納している受信データ D 1504がスィッチ 1504に供給される。
[0315] なお、受信データ格納用メモリ 1502と 1503のそれぞれに格納されるデータ量、即ち 、受信データ格納用メモリ 1502と 1503のそれぞれに必要とされる記憶容量は、 LDPC 符号の符号長と、受信データの量子化ビット数との乗算値である。
[0316] スィッチ 1504には、制御部 1105力 受信データ格納用メモリ 1502と 1503の一方の選 択を表す制御信号 D1400が供給され、スィッチ 1504は、その制御信号 D1400に基づ
2 2 いて、受信データ格納用メモリ 1502からの受信データ D1503または受信データ格納 用メモリ 1503からの受信データ D1504を、受信データ D417としてサイクリックシフト回 路 1101と計算部 415に供給する。
[0317] なお、制御信号 D1400は、受信データ格納用メモリ 1502と 1503の一方の選択を表
1
し、制御信号 D1400は、他方の選択を表す。即ち、受信データ格納用メモリ 1502と 15
2
03の一方で書き込みが行われている間、他方で読出しが行われる。
[0318] 以上のように、受信用メモリ 1400では、 2つの受信データ格納用メモリ 1502と 1503が 設けられているので、一方で入力される受信データ D416を格納している間に、他方 で既に格納されている受信データ D417を出力することができる。その結果、受信用メ モリ 1400では、連続して入力される受信データ D416を、受信データ D417として連続 出力することができる。
[0319] 図 30を参照して、図 28の復号途中結果格納用メモリ 1401の構成を詳細に説明す る。
[0320] 図 30の復号途中結果格納用メモリ 1401は、スィッチ 1601, 1604、および 1605、並び に復号途中結果格納用メモリ 1602と 1603から構成される。
[0321] スィッチ 1601には、計算部 415から 3つの復号途中結果 D415が供給されるとともに 、制御部 1105力 復号途中結果格納用メモリ 1602と 1603の一方の選択を表す制御 信号 D1401が供給される。スィッチ 1601は、制御信号 D1401に基づいて、復号途中
1 1
結果 D415を、復号途中結果 D1601として復号途中結果格納用メモリ 1602に、または 復号途中結果 D1602として復号途中結果格納用メモリ 1603に供給する。
[0322] 復号途中結果格納用メモリ 1602には、スィッチ 1601力 の復号途中結果 D1601が 格納される。また、復号途中結果格納用メモリ 1602からは、既に格納されている復号 途中結果 D1601が、復号途中結果 D1603としてスィッチ 1604に供給されるとともに、復 号途中結果 D1604としてスィッチ 1605に供給される。復号途中結果格納用メモリ 1603 には、復号途中結果格納用メモリ 1602と同様に、スィッチ 1601からの復号途中結果 D 1602が格納される。また、復号途中結果格納用メモリ 1602からは、既に格納してある 復号途中結果 D 1602が、復号途中結果 D 1605としてスィッチ 1604に供給されるととも に、復号途中結果 D1606としてスィッチ 1605に供給される。
[0323] なお、復号途中結果格納用メモリ 1602と 1603のそれぞれに格納されるデータ量、即 ち、復号途中結果格納用メモリ 1602と 1603のそれぞれに必要とされる記憶容量は、 L DPC符号の符号長と、復号途中結果 D415の量子化ビット数との乗算値である。
[0324] スィッチ 1604には、制御部 1105力 復号途中結果格納用メモリ 1602と 1603の一方 の選択を表す制御信号 D1401が供給され、スィッチ 1604は、その制御信号 D1401に
2 2 基づいて、復号途中結果格納用メモリ 1602からの復号途中結果 D1603または復号途 中結果格納用メモリ 1603からの復号途中結果 D1605を、復号結果 D1402 (軟判定値) として出力する。
[0325] スィッチ 1605には、制御部 1105力 復号途中結果格納用メモリ 1602と 1603の一方 の選択を表す制御信号 D1401が供給され、スィッチ 1605は、その制御信号 D1401に
3 3 基づいて、復号途中結果格納用メモリ 1602からの復号途中結果 D1604、または復号 途中結果格納用メモリ 1603からの復号途中結果 D1606を、復号途中結果 D1403とし てサイクリックシフト回路 1101に出力する。
[0326] なお、制御信号 D1401は、復号途中結果格納用メモリ 1602と 1603の一方の選択を
2
表し、制御信号 D1401は、他方の選択を表す。即ち、復号途中結果格納用メモリ 160
3
2と 1603の一方に格納されている復号が完了した復号途中結果 D1603または D1605 力 復号結果 D1402として出力されている間、他方に格納されている復号途中の復 号途中結果 D 1604または D 1606が、復号結果 D 1403として出力される。
[0327] 以上のように、復号途中結果格納用メモリ 1401では、 2つの復号途中結果格納用メ モリ 1602と 1603が設けられているので、一方で復号途中の復号途中結果 D1601また
は D1602を格納し、他方で復号が完了した復号途中結果 D1601または D1602を格納 することができる。その結果、復号途中結果格納用メモリ 1401では、復号結果 D1402 を出力している間にも復号を行うことができ、これにより、例えば、連続して復号結果 D1402を出力することができる。
[0328] 図 31は、受信用メモリ 1400と復号途中結果格納用メモリ 1401の読み出し (出力)と書 き込み (格納)の動作を説明するタイミングチャートである。
[0329] なお、図 31において、横軸は時間(t)を表している。また、図 31において、受信デ 一タ# 1とは、受信用メモリ 1400に供給される i番目のフレームの受信データ D416を表 す。さらに、受信データ # iの復号途中結果 D1403を復号途中結果 # iと表し、受信デ 一タ# 1の復号結果 D1402を復号結果 # iと表す。図 31において、受信データ # iの 受信が開始されて力 終了するまでの時間に、 1つの受信データに対する復号が終 了するものとする。
[0330] 受信用メモリ 1400に受信データ # 2が入力されると、受信データ # 2がすべて入力 されるまでの時間 Taの間、その受信データ # 2がスィッチ 1501を介して、受信用デー タ格納用メモリ 1502に供給され、格納される。このとき、受信データ格納用メモリ 1503 から、既に格納されている受信データ # 1がスィッチ 1504に供給され、スィッチ 1504 は受信データ # 1をサイクリックシフト回路 1101および計算部 415に出力される。そし て、受信データ # 1の復号が行われる。
[0331] また、復号途中結果格納用メモリ 1401の復号途中結果格納用メモリ 1602には、スィ ツチ 1601を介して計算部 415から供給される復号途中結果 # 1が格納され、また、復 号途中結果格納用メモリ 1602からは、既に格納されている復号途中結果 # 1がサイク リックシフト回路 1101に供給される。復号途中結果格納用メモリ 1603には、スィッチ 16 04を介して、既に格納されている復号途中結果 # 0が、復号結果 # 0として出力され る。即ち、時間 Taの間に復号途中結果格納用メモリ 1401から復号途中結果 # 0が出 力される。
[0332] 時間 Taの後、受信用メモリ 1400に受信データ # 3が入力され、受信データ # 3がす ベて入力されるまでの時間 Tbの間、その受信データ # 3がスィッチ 1501を介して、受 信データ格納用メモリ 1503に供給され、格納される。このとき、受信データ格納用メモ
リ 1502からは、時間 Taに格納された受信データ # 2が読み出され、スィッチ 1504を介 してサイクリックシフト回路 1101および計算部 415に出力される。そして、受信データ # 2の復号が行われる。
[0333] また、復号途中結果格納用メモリ 1602からは、時間 Taの間に格納された復号途中 結果 # 1が、復号結果 # 1として出力される。即ち、時間 Taの後、時間 Tbの間に復 号途中結果格納用メモリ 1401から復号途中結果 # 1が復号結果 # 1として出力され る。復号途中結果格納用メモリ 1603には、スィッチ 1601を介して計算部 415から供給 される復号途中結果 # 2が格納され、また、復号途中結果格納用メモリ 1603からは、 既に格納してある復号途中結果 # 2がサイクリックシフト回路 1101に供給される。
[0334] 時間 Tbの後、受信用メモリ 1400に受信データ # 4が入力され、時間 Tcの間、時間 Taの場合と同様の処理が行われる。即ち、時間 Tbの後、時間 Tcの間、受信データ # 3がサイクリックシフト回路 1101と計算部 415に供給され、受信データ # 3の復号が 行われる。また、時間 Tbの間に格納された復号途中結果 # 2が、復号途中結果格納 用メモリ 1603から復号結果 # 2として出力される。
[0335] 以上のように、図 28の復号装置 1000では、連続して入力される受信データ D417を 順に復号し、その復号結果を連続して出力することができる。これにより、高速で復号 を行うことができる。即ち、復号装置 1000のスループットが向上する。
[0336] なお、図 29の受信用メモリ 1400の受信データ格納用メモリ 1502 (1503)の数と図 30 の復号途中結果格納用メモリ 1401の復号途中結果格納用メモリ 1602 (1603)の数は、 2つに限定されない。受信データ格納用メモリ 1502と復号途中結果格納用メモリ 1602 の数を増カロさせることにより、復号の繰り返し回数を増加させ、復号性能を改善するこ とがでさる。
[0337] 例えば、受信データ格納用メモリ 1502と復号途中結果格納用メモリ 1602が、それぞ れ 3つずつ設けられる場合、 1つの受信データ格納用メモリ 1502を受信データ D417 の格納用に、 1つの復号途中結果格納用メモリ 1602を復号結果 D1402の出力用に用 い、残りの 2つの受信データ格納用メモリ 1502と復号途中結果格納用メモリ 1602を復 号用に用いることができる。この場合、計算部 415と 1102を 2つずつ設ける必要があり 、回路規模は増大するが、復号の繰り返し回数を 2倍多くすることができる。
[0338] 図 32は、本発明を適用した復号装置 1000の第 3実施の形態の構成例を示すブロッ ク図である。
[0339] 図 32の復号装置 1000では、図 28の復号装置 1000の復号途中結果格納用メモリ 14 01の代わりに、復号途中結果格納用メモリ 1701が、制御部 1402の代わりに、制御部 1 799が設けられている。復号途中結果格納用メモリ 1701には、復号途中結果格納用メ モリ 1701の復号硬判定結果格納用メモリ 1802と 1803 (後述する図 33)のいずれか一 方の選択を表す制御信号 D1701が供給される。復号途中結果格納用メモリ 1701から は、復号が完了した復号途中結果 D415の硬判定値が復号結果 D1702として出力さ れ、復号途中の復号途中結果 D415の軟判定値が復号途中結果 D1703として出力さ れる。
[0340] 図 33は、図 32の復号途中結果格納用メモリ 1701の構成例を示すブロック図である
[0341] 図 32の復号途中結果格納用メモリ 1701は、スィッチ 1801, 1805、および 1806、復号 硬判定結果格納用メモリ 1802と 1803、並びに復号軟判定結果格納用メモリ 1804から 構成される。
[0342] スィッチ 1801には、計算部 415から 3つの復号途中結果 D415の硬判定値が復号硬 判定結果 D1801として供給されるとともに、制御部 1702から復号硬判定結果格納用メ モリ 1801と 1802の一方の選択を表す制御信号 D1701が供給される。スィッチ 1801は
1
、制御信号 D1701に基づいて、復号硬判定結果 D1801を、復号硬判定結果 D1803と
1
して復号硬判定結果格納用メモリ 1802に、または復号硬判定結果 D1804として復号 硬判定結果格納用メモリ 1803に供給する。
[0343] 復号硬判定結果格納用メモリ 1802には、スィッチ 1801力 の復号途中結果 D1803 が格納される。また、復号硬判定結果格納用メモリ 1802からは、既に格納してある復 号途中結果 D 1803が、復号途中結果 D 1805としてスィッチ 1805に供給されるとともに、 復号途中結果 D 1807としてスィッチ D 1806に供給される。
[0344] 復号途中結果格納用メモリ 1803には、復号途中結果格納用メモリ 1802と同様に、ス イッチ 1801からの復号途中結果 D1804を格納される。また、復号途中結果格納用メモ リ 1803からは、既に格納してある復号途中結果 D1804が、復号途中結果 D1806として
スィッチ 1805に供給されるとともに、復号途中結果 D1808としてスィッチ 1806に供給さ れる。
[0345] なお、復号硬判定結果格納用メモリ 1802と 1803のそれぞれに格納されるデータ量、 即ち、復号硬判定結果格納用メモリ 1802と 1803のそれぞれに必要とされる記憶容量 は、 LDPC符号の符号長と、復号途中結果 D415の硬判定値のビット数である 1ビットと の乗算値である。
[0346] 復号軟判定結果格納用メモリ 1804には、計算部 415から 3つの復号途中結果 D415 の上位 1ビットを除く軟判定値が復号軟判定結果 D1802として供給される。復号軟判 定結果格納用メモリ 1804には、復号軟判定結果 D1802が格納され、または、復号軟 判定結果格納用メモリ 1804からは、既に格納されている復号軟判定結果 D1802が復 号軟判定結果 D1811として出力される。
[0347] なお、復号軟判定結果格納用メモリ 1804に格納されるデータ量、即ち復号軟判定 結果格納用メモリ 1804に必要とされる記憶容量は、 LDPC符号の符号長と、軟判定値 の上位 1ビットを除く値のビット数 (復号途中結果 D415の量子化ビット数 1)との乗算 値である。
[0348] スィッチ 1805には、制御部 1702から復号硬判定結果格納用メモリ 1802と 1803の一 方の選択を表す制御信号 D1701が供給され、スィッチ 1805は、その制御信号 D1701
2 2 に基づいて、復号硬判定結果格納用メモリ 1802からの復号硬判定結果 D1805または 復号途中結果格納用メモリ 1803からの復号硬判定結果 D1806を、復号結果 D1702 ( 硬判定値)として出力する。
[0349] スィッチ 1806には、制御部 1702から復号硬判定結果格納用メモリ 1802と 1803の一 方の選択を表す制御信号 D1701が供給され、スィッチ 1805は、その制御信号 D1701
3 3 に基づいて、復号硬判定結果格納用メモリ 1802からの復号硬判定結果 D1807または 復号硬判定結果格納用メモリ 1803からの復号途中結果 D1808を、復号硬判定結果 D 1810として出力する。スィッチ 1806からの復号硬判定結果 D1810を上位 1ビットとし、 その下位ビットを復号軟判定結果格納用メモリ 1804からの復号軟判定結果 D1811と することにより得られる軟判定値が、復号途中結果 D1703としてサイクリックシフト回路 1101に出力される。
[0350] なお、制御信号 D1701は、復号途中結果格納用メモリ 1802と 1803の一方の選択を
2
表し、制御信号 D1701は、他方の選択を表す。即ち、復号途中結果格納用メモリ 180
3
2と 1803の一方に格納されている復号が完了した復号途中結果 D1805または D1806 力 復号結果 D1702として出力されている間、他方に格納されている復号途中の復 号途中結果 D1807または D1808が、復号硬判定結果 D1810として出力される。
[0351] 以上のように、復号途中結果格納用メモリ 1701では、復号途中結果 D415の硬判定 値が 2つの復号硬判定結果格納用メモリ 1802と 1803に格納され、復号途中結果 D41 5の上位 1ビットを除く軟判定値が 1つの復号軟判定結果格納用メモリ 1804に格納さ れるので、復号途中結果格納用メモリ 1701は、 LDPC符号の符号長と 1ビットとの乗算 値の 2倍と、 LDPC符号の符号長と (復号途中結果 D415の量子化ビット数 1)との乗 算値とを合計した記録容量を有すればょ ヽ。
[0352] 従って、復号途中結果格納用メモリ 1701を有する図 32の復号装置 1000では、 LDP C符号の符号長と、復号途中結果 D415の量子化ビット数との乗算値の 2倍の記憶容 量が必要である復号途中結果格納用メモリ 1401を有する図 28の復号装置に比べて 、回路規模を削減することができる。
[0353] 図 34は、本発明を適用した復号装置 1000の第 4実施の形態の構成例を示すブロッ ク図である。
[0354] 図 34の復号装置 1000は、 3つのシンドローム判定器 2001乃至 2001力 なるシンド
1 3
ローム判定部 2001を設け、サイクリックシフト回路 2000から出力される硬判定結果 D20 00のシンドローム演算を行 、、その演算の結果に基づ!/、て復号を終了する。
[0355] サイクリックシフト回路 2000は、制御信号 D1106を元に、 6つの復号途中結果 D1104 または受信データ D417を選択し、並べ替えるサイクリックシフトを行い、その結果のう ち、構成行列の上半分( 1行目乃至 3行目分)または下半分 (4行目乃至 6行目分)の 〃1"に対応する 3つを復号途中結果 D1999として、計算部 412に供給する。また、サイ クリックシフト回路 2000は、 6つの復号途中結果 D1104または受信データ D417をサイ クリックシフトした結果の硬判定値を硬判定結果 D2000としてシンドローム判定部 2000 に供給する。
[0356] シンドローム判定部 2001は、 3つのシンドローム判定器 2001乃至 2001から構成さ
れる。シンドローム判定部 2001には、サイクリックシフト回路 2000から出力される硬判 定結果 D2000が供給されるとともに、制御部 2003からシンドロームの演算を制御する 制御信号 D2001が供給され、シンドローム判定器 2001乃至 2001にそれぞれ供給さ
1 3
れる。
[0357] シンドローム判定器 2001乃至 2001は、それぞれ制御信号 D2001に基づいて、硬
1 3
判定結果 D2000のシンドロームの計算を行う。具体的には、シンドローム判定器 2001
1 乃至 2001は、検査行列 Hの行に対応する硬判定結果 D2000の排他的論理和(EXO
3
R)を計算し、その結果得られる値力 すべての行において〃 0 "であるかどうかを判定 する。シンドローム判定器 2001乃至 2001は、その判定結果 D2002を制御部 2003に
1 3
供給する。
[0358] なお、シンドローム判定部 2001によるシンドロームの演算と計算部 1102による第 1の 演算は、同時に行われるようにしてもよい。
[0359] 制御部 2003は、シンドローム判定部 2000から供給される判定結果 D2002に応じて、 復号を終了する。具体的には、制御部 2003は、判定結果 D2002に応じて、復号途中 結果格納用メモリ 2002に、復号途中結果 D415または復号結果 D1105を復号結果とし て出力させる制御信号 D2003を供給する。復号途中結果格納用メモリ 2002からは、 制御部 2003からの制御信号 D2003に基づいて、既に格納してある復号途中結果 D41 5または復号結果 D1105が復号結果として出力される力、または復号途中結果 D415 がサイクリックシフト回路 2000に供給される。
[0360] 図 35は、図 34の復号装置 1000の復号処理を説明するフローチャートである。この 処理は、例えば、受信用メモリ 416に復号すべき受信データ D416が格納されたとき、 開始される。
[0361] ステップ S71において、制御部 2003は、カウント値 Kを 0に設定し、ステップ S72に 進む。ステップ S72において、シンドローム判定部 2001 (のシンドローム判定器 2001
1 乃至 2001 )は、サイクリックシフト回路 2000から供給される硬判定結果 D2000のシンド
3
ロームを演算する。なお、最初のステップ S72では、シンドローム判定部 2001には、 受信データ D417がサイクリックシフトされた結果の硬判定値である硬判定結果 D2000 が供給され、シンドローム判定部 2001は、受信データ D417の硬判定結果 D2000のシ
ンドロームを演算する。
[0362] ステップ S72の処理後は、ステップ S73に進み、制御部 2003は、シンドローム判定 部 2001から供給される判定結果 D2002に基づいて、シンドローム力 0"であるかどう かを判定し、シンドローム力 0"ではないと判定された場合、ステップ S 74に進む。
[0363] ステップ S74において、制御部 2003は、カウント値 Kが所定の回数 N以上であるか どうかを判定し、所定の回数 N以上ではないと判定した場合、ステップ S75に進む。
[0364] ステップ S75乃至 S84の処理は、図 27のステップ S49乃至 S58の処理と同様であ るので、説明は省略する。
[0365] ステップ S84の処理後は、ステップ S85に進み、制御部 2003は、カウント値 Kを 1つ だけインクリメントし、ステップ S72に戻る。
[0366] ステップ S73にお!/、て、シンドローム力 0"であると判定された場合、ステップ S86 に進み、制御部 2003は復号を終了し、復号途中結果格納用メモリ 2002に格納されて いる復号途中結果 D415または復号結果 D1105を復号結果として出力する。なお、最 初のステップ S71でシンドローム力 0"であると判定された場合、復号が 1度も行われ ず、計算部 415に供給される受信データ D417 (復号結果 D1105)力 復号途中結果 格納用メモリ 2002を介して、そのまま復号結果として出力される。
[0367] また、ステップ S 74において、カウント値 Kが所定の回数 N以上であると判定された 場合にも、ステップ S86に進み、制御部 2003は復号を終了し、復号途中結果格納用 メモリ 2002に格納されている復号途中結果 D415を復号結果として出力する。
[0368] 以上のように、図 35の復号処理では、シンドロームが" ΟΊこなる場合、またはカウン ト値 Kが所定の回数 N以上になる場合 (N回復号が行われた場合)、復号が終了され る。これにより、シンドロームが "0"、即ち誤り数が 0である復号途中結果 D415がさらに 復号されて、誤り数が再び増加することを防止することができる。また、受信データ D4 16の SN (Signal Noise)比が大きい場合、復号性能を劣化させずに、復号回数を抑え ることができるので、復号装置 1000の消費電力を低減することができる。
[0369] なお、シンドローム判定部 2001の回路規模は一般的に小さぐシンドローム判定部 2 001を設けることによる復号装置 1000の回路規模の増加は無視することができる程度 に小さい。
[0370] また、図 34の復号装置 1000では、図 23の復号装置 1000にシンドローム判定部 200 1が設けられた力 2つのフェーズの演算(例えば、チェックノード演算とバリアブルノ ード演算、第 1の演算と第 2の演算など)によって復号を行う装置であれば、どのよう な装置にシンドローム判定部 2001が設けられるようにしてもよい。例えば、図 17の復 号装置 400、もしくは図 28または図 32の復号装置 1000にシンドローム判定部 2001が 設けられるようにしてもよい。
[0371] 本実施の形態では、復号途中結果格納メモリ 1103は、 4つの復号途中結果格納用 RAM1202乃至 1205力 構成されるようにした力 復号途中結果格納用 RAM1202乃 至 1205の数は 3つ以上であればどのような数であってもよい。復号途中結果格納用 R AM1202乃至 1205の数が増加すればするほど、復号装置の動作速度を速めることが できる。
[0372] また、本実施の形態では、第 1の演算と第 2の演算を繰り返し行うことにより復号を 行ったが、チェックノード演算とバリアブルノード演算を繰り返し行うことにより復号を 行うよう〖こすることちでさる。
[0373] なお、図 24の復号途中結果格納用 RAM1202乃至 1205、図 29の受信データ格納 用メモリ 1502と 1503、図 30の復号途中結果格納用メモリ 1602と 1603、図 33の復号硬 判定結果格納用メモリ 1802と 1803、並びに復号軟判定結果格納用メモリ 1804は、例 えば、 RAMの物理的なビットが足りない場合には、複数の RAMを用いて同じ制御信 号を与えることで、論理的に 1つの RAMとみなすことができる。
[0374] 上述の場合には、説明を簡単にするために、 Pが 6の場合、即ち、検査行列 Hを構 成する構成行列の行数および列数が 6の場合を例に挙げた力 構成行列の行数お よび列数 Pは必ずしも 6である必要はなぐ検査行列 Hによって異なる値を取ることもあ り得る。例えば、 Pは 360や 392であってもよい。
[0375] また、本実施の形態では、符号長 108、符号ィ匕率 2/3の LDPC符号を用いた力 LDP C符号の符号長や符号化率は、どのような値であってもよい。例えば、構成行列の行 数および列数 Pが 6の場合、枝総数が 6以下であれば、どのような符号長、符号化率 の LDPC符号でも、制御信号を代えるだけで、復号装置 1000を用いて復号可能であ る。
[0376] さらに、構成行列の行数および列数 Pが所定の値で、枝の総数がある値以下、 t 、 う条件を満たす、ある LDPC符号の復号装置は、その条件を満たす、任意の符号長 で、任意の符号ィ匕率の LDPC符号を復号することができる。
[0377] 検査行列 H力 構成行列の行数および列数 Pの倍数でな 、場合は、検査行列 Hの 端数の外側にすべて 0(all 0)の成分を付けて Pの倍数とみなして適用することができる 場合がある。
[0378] 上述した復号装置 1000では、計算部 1102の計算器 1102乃至 1102の数を P/2 ( = 3
1 3
)とした力 計算器 1102乃至 1102の数は P未満であればよい。なお、 Pが大きな素数
1 3
である場合においても、計算器 1102乃至 1102の数を Pの整数部の 1に近い整数個
1 3
にすればよい。
[0379] また、復号装置 1000では、計算部 1102ではなぐ計算部 415が P未満の計算器から 構成されるようにしてもよい。即ち、計算部 1102または計算部 415の少なくとも一方が 、 P未満の計算器から構成されればよぐ他方は、 P個の計算器カゝら構成されても、 P 未満の計算器から構成されてもょ 、。
[0380] 以上のように、 PX Pの単位行列、そのコンポーネントの〃 1 "のうち 1個以上が" ΟΊこ なった準単位行列、単位行列もしくは準単位行列をサイクリックシフトしたシフト行列、 単位行列、準単位行列、もしくはシフト行列の複数の和である和行列、 PX
の組み合わせで表すことができる検査行列 Hを持つ LDPC符号の復号を、第 1と第 2 の演算を P個または N個(Nは P未満の正の整数)同時に行うアーキテクチャ (architect ure)を採用することにより、第 1と第 2の演算を、 P個または N個同時に行うことで動作 周波数を実現可能な範囲に抑えることができ、多数の繰り返し復号を行うことを可能 にしつつ、メモリ(FIFOや RAM)への書き込みと読み出し時に、異なるアドレスへの同 時アクセスが起きることを防止することができる。
[0381] また、第 1または第 2の演算を N個同時に行うことにより、第 1と第 2の演算を P個同時 に行う場合に比べて、第 1の演算を行う計算部 1102を構成する計算器 1102乃至 110
1
2または第 2の演算を行う計算部 415を構成する計算器 415乃至 415の数を削減し
3 1 6
、回路規模を削減することができる。
[0382] 一般的に、 LDPC符号は符号長が数千力も数万と大きいため、 Pの値も数百の大き
さを持つものが使われる。その場合には、更に本発明に係る復号装置を用いる効果 は大きくなる。
[0383] また、本発明に係る復号装置は、サムプロダクトアルゴリズムを忠実に実装するもの であるため、メッセージの量子化以外の復号損失が起きることはな 、。
[0384] 以上の観点から、本発明に係る復号装置を用いることで、高性能な復号が可能に なる。
[0385] なお、上述した LDPC符号を復号する復号装置は、例えば、(ディジタル)衛星放送 を受信するチューナなどに適用することができる。