(57)【特許請求の範囲】
【請求項１】
受信語のエラー訂正を行う検査行列を用いて行処理演算を実行する行処理演算回路と、
受信語のエラー訂正を行う前記検査行列を用いて列処理演算を実行する列処理演算回路と、
前記行処理演算回路による行処理演算データを記憶する第１記憶手段と、
前記列処理演算回路による列処理演算データを記憶する第２記憶手段と、を備え、
前記検査行列は、列方向に列重みの２倍数で分割され、行方向に行重みの数で分割された複数の部分行列の集合として構成され、
前記部分行列の行重みはすべて１であるように構成され、
前記検査行列の列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列（但し、ｒは列重み番号）の列重みの合計はすべて１であるように構成され、
前記第１記憶手段は、前記検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに前記行処理演算データを記憶し、
前記第２記憶手段は、前記検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに前記列処理演算データを記憶し、
前記行処理演算回路は、前記第２記憶手段から読み出された列処理演算データを用いて列重みの２倍数の行処理演算を並行処理し、演算データを行重み番号及び列重み番号ごとに、前記第１記憶手段にそれぞれに書き込み、
前記列処理演算回路は、前記第１記憶手段から読み出された前記行処理演算データを用いて行重みの数の列処理演算を並行処理し、演算データを列重み番号及び行重み番号ごとに、前記第２記憶手段にそれぞれに書き込み、
前記列重みは前記部分行列の列重みであり、前記行重みは前記部分行列の行重みである
ことを特徴とする低密度パリティ検査符号の復号装置。
【請求項２】
前記第１記憶手段は、前記検査行列における２つの行のすべての「１」の要素に対応する行処理演算データを、列重み番号と行重み番号との組み合わせに対応させて、同時に２行書き込み可能な２ポートを有する複数のデュアルポートＲＡＭを有する
ことを特徴とする請求項１記載の復号装置。 
【請求項３】
前記第２記憶手段は、前記検査行列における２つの行のすべての「１」の要素に対応する列処理演算データを、列重み番号と行重み番号との組み合わせに対応させて、同時に２行読み出し可能な２ポートを有する複数のデュアルポートＲＡＭを有する
ことを特徴とする請求項１または２に記載の復号装置。
【請求項４】
受信語のエラー訂正を行う検査行列として、列方向に列重みの２倍数で分割し、行方向に行重みの数で行を分割することにより形成した複数の部分行列の集合であって、前記部分行列の行重みはすべて１であるように構成され、前記検査行列の列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列（但し、ｒは列重み番号）の列重みの合計はすべて１であるように構成された、複数の部分行列の集合を用い、
受信語データを入力することにより初期化された列処理演算データ第２記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込む第１ステップと、
前記検査行列の「１」の要素に対して、前記第２記憶手段に記憶された列処理演算データを読み出し、列重みの２倍数の並行処理により行処理演算を行い、演算データを第１記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込む第２ステップと、
前記検査行列の「１」の要素に対して、前記第１記憶手段に記憶された前記行処理演算データを読み出し、行重みの数の並行処理により列処理演算を行い、演算データを前記第２記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込むと共に、前記行処理演算データを用いて一時推定語を演算する第３ステップと、
前記第２ステップと前記第３ステップとをこの順に所定の回数繰り返す第４ステップと、を有し、
前記列重みは前記部分行列の列重みであり、前記行重みは前記部分行列の行重みである
ことを特徴とする低密度パリティ検査符号の復号方法。
【請求項５】
受信語のエラー訂正を行う検査行列を用いて行処理演算を実行する行処理演算回路と、
受信語のエラー訂正を行う前記検査行列を用いて列処理演算を実行する列処理演算回路と、
前記行処理演算回路による行処理演算データを記憶する第１記憶手段と、
前記列処理演算回路による列処理演算データを記憶する第２記憶手段と、
前記第１記憶手段に記憶された２つのデータのうちのいずれかを選択して出力する選択回路と、を備え、
前記検査行列は、列方向に列重みの２倍数で分割され、行方向に行重みの数で分割された複数の部分行列の集合として構成され、
前記検査行列の列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列（但し、ｒはすべての列重み番号の範囲）の列重みの合計はすべて１であるように構成され、
前記複数の部分行列のうち、行方向に連続した２つの部分行列の行重みの合計はすべて２であるように構成され、
前記第１記憶手段は、前記検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに前記行処理演算データを記憶し、
前記第２記憶手段は、前記検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに前記列処理演算データを記憶し、
前記行処理演算回路は、前記第２記憶手段から読み出された列処理演算データを用いて列重みの２倍数の行処理演算を並行処理し、演算データを行重み番号及び列重み番号ごとに、前記第１記憶手段にそれぞれに書き込み、
前記列処理演算回路は、前記選択回路により選択して出力された前記行処理演算データを用いて行重みの数の列処理演算を並行処理し、演算データを列重み番号及び行重み番号ごとに、前記第２記憶手段にそれぞれに書き込み、
前記列重みは前記部分行列の列重みであり、前記行重みは前記部分行列の行重みである
ことを特徴とする低密度パリティ検査符号の復号装置。
【請求項６】
前記第１記憶手段は、前記検査行列の２つの行のすべての「１」の要素に対応する行処理演算データを同時に２行書き込み可能な２ポートを有する複数のデュアルポートＲＡＭを有する
ことを特徴とする請求項５記載の復号装置。 
【請求項７】
前記第２記憶手段は、前記検査行列の２つの行のすべての「１」の要素に対応する列処理演算データを同時に２行読み出し可能な２ポートを有する複数のデュアルポートＲＡＭを有する
ことを特徴とする請求項５または６に記載の復号装置。
【請求項８】
前記第２記憶手段は、前記行方向に連続した２つの部分行列において、２つの列のすべての「１」の要素に対応する列処理演算データを同時に書き込み可能なデュアルポートＲＡＭを有する
ことを特徴とする請求項５〜７のいずれか１つに記載の復号装置。
【請求項９】
前記第１記憶手段は、前記行方向に連続した２つの部分行列において、２つの列のすべての「１」の要素に対応する行処理演算データを同時に読み出し可能なデュアルポートＲＡＭを有する
ことを特徴とする請求項５〜８のいずれか１つに記載の復号装置。
【請求項１０】
受信語のエラー訂正を行う検査行列として、列方向に列重みの２倍数で分割し、行方向に行重みの数で行を分割することにより形成した複数の部分行列の集合であって、前記検査行列の列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列（但し、ｒはすべての列重み番号の範囲）の列重みの合計はすべて１であるように構成され、前記複数の部分行列のうち、行方向に連続した２つの部分行列の行重みの合計はすべて２であるように構成された、複数の部分行列の集合を用い、
受信語データを入力することにより初期化された演算データを第２記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込む第１ステップと、
前記検査行列の「１」の要素に対して、前記第２記憶手段に記憶された列処理演算データを読み出し、列重みの２倍数の並行処理により行処理演算を行い、演算データを第１記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込む第２ステップと、
前記検査行列の「１」の要素に対して、前記第１記憶手段に記憶された２つの前記行処理演算データのいずれかを選択して読み出して、行重みの数の並行処理により列処理演算を行い、演算データを前記第２記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込むと共に、前記行処理演算データを用いて一時推定語を演算する第３ステップと、
前記第２ステップと前記第３ステップとをこの順に所定の回数繰り返す第４ステップと、を有し、
前記列重みは前記部分行列の列重みであり、前記行重みは前記部分行列の行重みである
ことを特徴とする低密度パリティ検査符号の復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復号装置および復号方法に関し、特に、低密度パリティ検査符号のデータの高速伝送を行う伝送路において生じるエラーの訂正を行うのに好適な復号装置および復号方法に関する。
【背景技術】
【０００２】
携帯電話に代表される移動体通信や無線ＬＡＮなどの通信分野に対する要求は高度化しており、そのための開発および研究が急速に進められている。特に、これらの分野においては、データ転送速度のより高速化が要求されている。データの高速伝送を行う伝送路においてはエラーを生じやすいために、低密度パリティ検査符号などを用いてエラー検出及び訂正を行う誤り訂正技術の開発および研究が盛んに行われている。
【０００３】
一般に、このような通信システムにおいては、送信したい情報データが生成行列により符号化され、さらに変調後送信される。受信された符号語は復調された後、検査行列により復号されて、情報データに復元される。
【０００４】
ここで用いられる低密度パリティ検査（ＬＤＰＣ：Low Density Parity Check）符号とは、「１」の要素が非常に少ない検査行列によって定義される線形符号を言う。また、ＬＤＰＣ符号は２元に限定されることはないが、以下の説明においては簡略化のために２元ＬＤＰＣ符号を用いる。
【０００５】
このＬＤＰＣ符号とｓｕｍ−ｐｒｏｄｕｃｔ復号法との組み合わせにより得られる復号特性は、ターボ符号の性能に匹敵し、符号長が長い場合にはむしろ上回る。すなわち、符号長が長い場合には、周波数利用効率（ビット／秒／Ｈｚ）の限界であるシャノン限界に非常に近い性能が得られる。この「シャノン限界」とは、伝送路の周波数帯域とＥｂ／Ｎｏ（ビット当り電力密度対雑音電力密度比をｄＢで表わす）で決定される。ＬＤＰＣ符号の他の利点として、符号長および符号化率を様々に構成できる柔軟性、良好なブロック誤り率特性、エラーフロア現象の少なさなどがある。
【０００６】
ところで、上記検査行列を用いた復号には、演算回路、メモリ回路などから構成される復号装置が用いられる（例えば特許文献１）。システム要求の高度化に伴い演算データを一時記憶させるメモリ回路規模は増大する。回路規模の縮小のために、メモリ回路としてはレジスタよりもＲＡＭ（Random Access Memory）が適している。
【特許文献１】特開２００４−３６４２３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＲＡＭを用いた場合、検査行列へのアクセスの際にデータの並べ替えが必要となる。データ並べ替えを行うには、多入力の選択回路を必要とするために、このままでは回路規模の縮小が不十分であり、復号装置のサイズの増大、処理速度の低下及び消費電力の増加などの点で改善すべき余地がある。
【０００８】
本発明は、かかる課題の認識に基づいてなされたものであり、その目的は、データの高速伝送を行う伝送路において生じるエラーの訂正を行うのに好適な、回路規模が縮小された、低密度パリティ検査符号の復号装置および復号方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明によれば、受信語のエラー訂正を行う検査行列を用いて行処理演算を実行する行処理演算回路と、
受信語のエラー訂正を行う前記検査行列を用いて列処理演算を実行する列処理演算回路と、前記行処理演算回路による行処理演算データを記憶する第１記憶手段と、前記列処理演算回路による列処理演算データを記憶する第２記憶手段と、を備え、前記検査行列は、列方向に列重みの２倍数で分割され、行方向に行重みの数で分割された複数の部分行列の集合として構成され、前記部分行列の行重みはすべて１であるように構成され、前記検査行列の列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列（但し、ｒは列重み番号）の列重みの合計はすべて１であるように構成され、前記第１記憶手段は、前記検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに前記行処理演算データを記憶し、前記第２記憶手段は、前記検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに前記列処理演算データを記憶し、前記行処理演算回路は、前記第２記憶手段から読み出された列処理演算データを用いて列重みの２倍数の行処理演算を並行処理し、演算データを行重み番号及び列重み番号ごとに、前記第１記憶手段にそれぞれに書き込み、前記列処理演算回路は、前記第１記憶手段から読み出された前記行処理演算データを用いて行重みの数の列処理演算を並行処理し、演算データを列重み番号及び行重み番号ごとに、前記第２記憶手段にそれぞれに書き込むことを特徴とする低密度パリティ検査符号の復号装置が提供される。
この復号装置によれば、検査行列は、列方向に列重みの２倍数で分割され、行方向に行重みの数で分割された複数の部分行列の集合として構成されると共に、部分行列の行重みは全て１で、列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列の列重みとの合計が全て１であるように構成されている。
行処理演算回路及び列処理演算回路は、この検査行列を用いて受信語のエラー訂正を行う行処理演算及び列処理演算をそれぞれ実行し、その結果を行処理演算データ及び列処理演算データとして、行重み番号及び列重み番号ごとに第１記憶手段及び第２記憶手段のそれぞれ書き込む。第１記憶手段及び第２記憶手段では、検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに、行処理演算データ及び列処理演算データをそれぞれ記憶するようになっている。
ここで、行処理演算回路は、第２記憶手段から列処理演算データを読み出して、列重みの２倍数の行処理演算を並行処理する。このとき列処理演算データは、列処理演算回路によって行重み番号及び列重み番号ごとに第２記憶手段に書き込まれているので、行処理演算回路では、データを並び替えずとも、第２記憶手段から行処理に必要な列処理演算データを読み出すことができる。
また、列処理演算回路は、第１記憶手段から行処理演算データを読み出して行重み数の列処理演算を並行処理するが、このときも行処理演算データが行処理演算回路によって行重み番号及び列重み番号ごとに第１記憶手段に書き込まれているので、データを並び替えずとも、第１記憶手段から列処理に必要な行処理演算データを読み出すことができる。
このようにデータを並び替えずに行処理演算及び列処理演算をそれぞれ並行処理できるので、従来必要とされた選択回路が省略可能となり、回路規模を縮小することができる。
【００１０】
また、本発明によれば、受信語のエラー訂正を行う検査行列として、列方向に列重みの２倍数で分割し、行方向に行重みの数で行を分割することにより形成した複数の部分行列の集合であって、前記部分行列の行重みはすべて１であるように構成され、前記検査行列の列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列（但し、ｒは列重み番号）の列重みの合計はすべて１であるように構成された、複数の部分行列の集合を用い、受信語データを入力することにより初期化された演算データを第２記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込む第１ステップと、前記検査行列の「１」の要素に対して、前記第２記憶手段に記憶された列処理演算データを読み出し、列重みの２倍数の並行処理により行処理演算を行い、演算データを第１記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込む第２ステップと、前記検査行列の「１」の要素に対して、前記第１記憶手段に記憶された前記行処理演算データを読み出し、行重みの数の並行処理により列処理演算を行い、演算データを前記第２記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込むと共に、前記行処理演算データを用いて一時推定語を演算する第３ステップと、前記第２ステップと前記第３ステップとをこの順に所定の回数繰り返す第４ステップと、
を備えたことを特徴とする低密度パリティ検査符号の復号方法が提供される。
この復号方法によれば、検査行列は、列方向に列重みの２倍数で分割され、行方向に行重みの数で分割された複数の部分行列の集合として構成されると共に、部分行列の行重みは全て１で、列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列の列重みとの合計が全て１であるように構成されている。
まず、第１ステップにおいて、受信語データを初期化された列処理演算データとして第２記憶手段に書き込む。このとき、初期化された列処理演算データは、同一行重み番号及び同一列重み番号ごとに第２記憶手段に記憶される。これにより、次の第２ステップでは、第２記憶手段からデータを並び替えずに列処理演算データを読み出して、検査行列の「１」の要素に対して、列重み数の２倍の行処理演算を並行処理することができる。
そして、第２ステップの並行処理結果は、行処理演算データとして、同一行重み番号及び同一列重み番号ごとに第１記憶手段に記憶される。これにより、次の第３ステップでは、第１記憶手段からデータを並び替えずに行処理演算データを読み出して、検査行列の「１」の要素に対して、行重み数の列処理演算を並行処理できる。また、第１記憶手段から読み出した行処理演算データを用いて一時推定語の演算も行うことができる。
そして、第３ステップに並行処理結果は、列処理演算データとして、同一行重み番号及び同一列重み番号ごとに第２記憶手段に記憶される。これにより、以降、行処理演算及び列処理演算の並行処理を所定回数繰り返し実行しても（第４ステップ）、データを並び替えずにすむ。
このように行演算処理及び列演算処理の並行処理に際して、データの並び替えが不要であるので、従来必要とされた選択回路が省略可能となり、回路規模を縮小することができる。
【００１１】
また、本発明によれば、受信語のエラー訂正を行う検査行列を用いて行処理演算を実行する行処理演算回路と、受信語のエラー訂正を行う前記検査行列を用いて列処理演算を実行する列処理演算回路と、前記行処理演算回路による行処理演算データを記憶する第１記憶手段と、前記列処理演算回路による列処理演算データを記憶する第２記憶手段と、前記第１記憶手段に記憶された２つのデータのうちのいずれかを選択して出力する選択回路と、を備え、前記検査行列は、列方向に列重みの２倍数で分割され、行方向に行重みの数で分割された複数の部分行列の集合として構成され、前記検査行列の列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列（但し、ｒはすべての列重み番号の範囲）の列重みの合計はすべて１であるように構成され、前記複数の部分行列のうち、行方向に連続した２つの部分行列の行重みの合計はすべて２であるように構成され、前記第１記憶手段は、前記検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに前記行処理演算データを記憶し、前記第２記憶手段は、前記検査行列の「１」の要素について、同一行重み番号及び同一列重み番号ごとに前記列処理演算データを記憶し、前記行処理演算回路は、前記第２記憶手段から読み出された列処理演算データを用いて列重みの２倍数の行処理演算を並行処理し、演算データを行重み番号及び列重み番号ごとに、前記第１記憶手段にそれぞれに書き込み、前記列処理演算回路は、前記選択回路により選択して出力された前記行処理演算データを用いて行重みの数の列処理演算を並行処理し、演算データを列重み番号及び行重み番号ごとに、前記第２記憶手段にそれぞれに書き込むことを特徴とする低密度パリティ検査符号の復号装置が提供される。
この復号装置においては、検査行列が行方向に連続した２つの部分行列の行重みの合計がすべて２であるように構成し、請求項１記載の復号装置における検査行列よりも自由度を持たせ、設計を容易にしている。
このような構成の検査行列を用いることにより、列処理演算回路で行重み数の列処理演算を並行処理するためには、選択回路によって、第１記憶手段から該列処理演算に必要な行処理演算データを選択する、すなわちデータの並び替えが必要となるが、行処理演算回路で列重みの２倍数の行処理演算を並行処理するためには、請求項１記載の復号装置と同様にデータの並び替えは不要である。
この結果、選択回路は列処理演算用にのみ設ければよく、従来よりも必要な選択回路数を減数することができ、回路規模を縮小できる。
【００１２】
また、本発明によれば、受信語のエラー訂正を行う検査行列として、列方向に列重みの２倍数で分割し、行方向に行重みの数で行を分割することにより形成した複数の部分行列の集合であって、前記検査行列の列方向に連続した（２ｒ−１）番目の部分行列の列重みと２ｒ番目の部分行列（但し、ｒはすべての列重み番号の範囲）の列重みの合計はすべて１であるように構成され、前記複数の部分行列のうち、行方向に連続した２つの部分行列の行重みの合計はすべて２であるように構成された、複数の部分行列の集合を用い、
受信語データを入力しすることにより初期化された演算データを第２記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込む第１ステップと、前記検査行列の「１」の要素に対して、前記第２記憶手段に記憶された列処理演算データを読み出し、列重みの２倍数の並行処理により行処理演算を行い、演算データを第１記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込む第２ステップと、前記検査行列の「１」の要素に対して、前記第１記憶手段に記憶された２つの前記行処理演算データのいずれかを選択して読み出して、行重みの数の並行処理により列処理演算を行い、演算データを前記第２記憶手段に行重み番号及び列重み番号ごとにそれぞれに書き込むと共に、前記行処理演算データを用いて一時推定語を演算する第３ステップと、前記第２ステップと前記第３ステップとをこの順に所定の回数繰り返す第４ステップと、を備えたことを特徴とする低密度パリティ検査符号の復号方法が提供される。
この復号方法においては、検査行列が行方向に連続した２つの部分行列の行重みの合計がすべて２であるように構成し、請求項４記載の復号方法における検査行列よりも自由度を持たせ、設計を容易にしている。
このような構成の検査行列を用いることにより、第３ステップの行重み数の列処理演算を並行処理するためには、第１記憶手段から該列処理演算に必要な行処理演算データを選択する、すなわちデータの並び替えが必要となるが、第２ステップの行処理演算で列重みの２倍数の行処理演算を並行処理するためには、請求項４と同様にデータの並び替えは不要である。
この結果、選択回路は列処理演算用にのみに設ければよく、従来よりも必要な選択回路数を減数することができ、回路規模を縮小できる。
【発明の効果】
【００１３】
本発明によれば、データの高速伝送を行う伝送路において生じるエラーの訂正を行うのに好適な、回路規模が縮小された、低密度パリティ検査符号の復号装置および復号方法が提供される。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について、図面を参照しつつ説明する。  
図１は、本発明の第１具体例にかかる低密度パリティ検査（ＬＤＰＣ）符号の復号装置２４のブロック図である。受信語データはシリアル−パラレル変換回路５２、入力バッファ５４を通り、制御部４０へ入力された受信語有効信号により制御された、列処理演算回路４４及び一時推定語演算回路５０へ入力される。
【００１５】
列処理演算回路４４で演算された列処理演算データは、第２記憶手段４６に並列処理により書き込まれる（但し初回は、初期化ステップである）。行処理演算回路４２は、第２記憶手段４６のデータを並列処理により読み出し、行処理演算を行う。行処理演算データは、第１記憶手段４８へ並列処理により書き込まれる。
【００１６】
この行処理演算及び列処理演算が、所定の回数だけ繰り返されたのち、一時推定語演算回路５０にて一時推定語が演算されて、出力バッファ５６、パラレル−シリアル変換回路５８を経由して復号語データとして取り出される。
【００１７】
図２は、図１に例示された本具体例の復号装置２４が組み込まれた受信器を表すブロック図である。この受信器は、例えば、携帯電話などの移動無線機器やＰＤＡ（Personal Digital Data Assistant）に用いられる。アンテナ２０により受信された信号は、復調回路２２にて復調され、本具体例による復号装置２４により復号される。
【００１８】
さらに、この受信器は、復号された映像信号や音声信号などのデータを処理する映像／音声信号処理回路２８、復号装置２４や映像／音声信号処理回路２８を制御するＣＰＵ（Central Processing Unit）２６，信号処理された音声信号を外部に発音するスピーカ３４、信号処理された映像信号を表示するモニタ３２などを備えている。
【００１９】
次に、本具体例にかかるＬＤＰＣ符号の復号に用いる検査行列について詳細に説明する。  図３は、本具体例に用いられるＨで表される検査行列１０の基本構成を表す。検査行列１０は、Ｍ行×Ｎ列で構成される。また、行はＰｍ個に分割され、列はＰｎ個に分割される。この結果、検査行列１０は、（Ｍ／Ｐｍ）行×（Ｎ／Ｐｎ）列で構成され、Ｈｓｕｂ［ｉ］［ｊ］で表される部分行列１２がＰｍ×Ｐｎ個が集合したと取り扱うことができる。ここで、Ｐｍは列重みを２倍した整数とするので、偶数値となる。また、Ｐｎは、行重みと同一の整数とする。
【００２０】
さらに、本具体例においては、行方向に沿って奇数である（２ｒ−１）番目と偶数である２ｒ番目（但し、ｒ＝１，２、・・・、Ｐｍ／２）の部分行列Ｈｓｕｂ［２ｒ−１］［ｃ］及びＨｓｕｂ［２ｒ］［ｃ］（但し、ｃ＝１，２、・・・、Ｐｎ）とにおいて、列重みの和を１とする。一方、各部分行列における行重みはそれぞれに１とする。なお行重みとは、ひとつの行における「１」の要素の数を表す。同様に、列重みとは、ひとつの列における「１」の要素の数を表す。
【００２１】
図４は、部分行列１２の一例をより具体的に表す図である。Ｈｓｕｂ［２ｒ−１］［ｃ］およびＨｓｕｂ［２ｒ］［ｃ］で表される、列方向に沿って連続した２個の部分行列１２の各要素が、それぞれに例示される。「列方向に沿って連続する」ことを以下では、「縦に連続する」と表現する。行重みはそれぞれに１とされ、列数はＮ／Ｐｎとされる。また、列重みは、２個の部分行列のいずれかの列において１とされ、縦に連続した２個の部分行列の列重みの和は１となる。
【００２２】
次に、このような検査行列１０を用いてエラー検出及びエラー訂正を行うための演算式を理解するのに必要なタナーグラフについて説明する。  
図５は、Ｍ行×Ｎ列なる検査行列におけるタナーグラフであり、Ｎ個のビット・ノード（○印で表す）とＭ個のチェック・ノード（□印で表す）とからなる。そして、検査行列において、「１」なる要素の行と列に対応するノード間を線で結ぶ。ＬＤＰＣ符号の復号は、このようなタナーグラフにおけるビット・ノード、チェック・ノード間のメッセージである対数尤度比（ＬＬＲ：Log-Likelihood Ratio）のやりとりを繰り返すことにより復号を行う。
【００２３】
次に、このようなタナーグラフを用いて行う演算ステップについて説明する。検査行列１０における要素をＨｍｎと表し、ｍ行目において「１」となる要素を有する列番号の集合Ｎ（ｍ）、及びｎ列目において「１」となる要素を有する行番号の集合Ｍ（ｎ）を以下のように定義する。
Ｎ（ｍ）＝｛ｎ：Ｈｍｎ＝１｝
Ｍ（ｎ）＝｛ｍ：Ｈｍｎ＝１｝
また、ビット・ノードからチェック・ノードへ送られるメッセージをＺｍｎとし、チェック・ノードからビット・ノードへ送られるメッセージをＬｍｎと定義する。さらに、受信語からのメッセージをｙｎと定義する。
【００２４】
まず、図６は、行処理演算におけるノード間のやり取りを表すタナーグラフである。チェック・ノードｍからビット・ノードＮ（ｍ）＝ｎ１へ渡されるメッセージＬｍｎ１は、当該チェック・ノードｍに結びついているビット・ノードのうち、当該メッセージが渡されるビット・ノードｎ１を除く他のビット・ノードからのメッセージ（Ｚｍｎ２，Ｚｍｎ３，・・・）から演算される。このときの演算式の一例を以下に示す。
【００２５】
【数１】
0004819470.tif 000002
ｔａｎｈ関数を用いた演算式は、ｓｇｎ関数のｐｒｏｄｕｃｔとｍｉｎ関数との積として近似することができる。
【００２６】
ここで、ｓｇｎ関数は、以下の（２）式で示される。なお、演算式は（１）式に限定されることは無く、例えば、Ｇａｌｌａｇｅｒのｆ関数などとすることができる。
【００２７】
【数２】
0004819470.tif 000003
【００２８】
また、図７は、列処理演算におけるノード間のやりとりを表すタナーグラフである。ビット・ノードｎからチェック・ノードｍ１へ渡されるメッセージＺｍ１ｎは、当該ビット・ノードｎに結びついているチェック・ノードのうち、当該メッセージが渡されるチェック・ノードｍ１を除く他のチェック・ノードからのメッセージ（Ｌｍ２ｎ，Ｌｍ３ｎ、・・・）から演算される。このときの演算式を、以下に示す。
【００２９】
【数３】
0004819470.tif 000004
【００３０】
Ｚｍｎは、Ｌｍ'ｎのｓｕｍと受信語ｙｎとの和で表される。ＬＤＰＣ符号の復号処理は、上記のような処理を繰り返すので「ｓｕｍ−ｐｒｏｄｕｃｔ復号法」とも呼ばれる。この場合、時間計算量は符号長について線形時間であり、この復号アルゴリズムは本質的に並列アルゴリズムであるために並列分散型ハードウェア実装に適している。
【００３１】
次に、復号処理の流れを説明する。  
図８は、本具体例にかかる復号方法を表わすフロー図である。まず、符号語を受信する（Ｓ１００）。次に、反復回数をカウントするカウンタＴをＴ＝１に初期化し、Ｈｍｎ＝１であるすべての要素に対して、受信語ｙｎを用いてＺｍｎ＝ｙｎのように初期化する（Ｓ１０２）。より具体的には、第１記憶手段４８から列処理演算回路４４への入力データをすべて「０」とする。こうすると、列処理演算回路４４からの出力が受信語ｙｎのみとなり、第２記憶手段４６のデータを受信語に初期化できる。
【００３２】
次に、第２記憶手段４６から列処理演算データを読み出し、行処理演算を列重みの２倍数で並行処理を行い、検査行列１０における「１」の要素に対応してチェック・ノードからビット・ノードへ渡される演算データを第１記憶手段４８を構成する第１メモリ素子群に行重み番号及び列重み番号ごとにそれぞれ記憶させる。この行処理演算は、（１）式を用いてすべてのｍ、ｎに対して実行される（Ｓ１０４）。以下において、「行処理」とは、列処理演算データの読み出し、行処理演算、第１記憶手段への書き込みを含むものとする。また、「行重み番号」とは、検査行列の同一行の「１」なる要素に対して、当該要素の列番号の小さい順に１から割り振った番号である。同様に、「列重み番号」とは、検査行列の同一列の「１」なる要素に対して、当該要素の行番号の小さい順に１から割り振った番号である。
【００３３】
次に、第１記憶手段４８から行処理演算データを読み出し、列処理演算を行重みの数で並行処理を行い、検査行列における「１」の要素に対応してビット・ノードからチェック・ノードへ渡される演算データを第２記憶手段４６を構成する第２メモリ素子群に行重み番号及び列重み番号ごとにそれぞれ記憶させる。この列処理演算は、（３）式を用いてすべてのｍ，ｎに対して実行される。また、一時推定語ｃｎの演算を（４）式を用いてすべてのｍ、ｎに対して実行する（Ｓ１０６）。以下において、「列処理」とは、行処理演算データの読み出し、列処理演算、第２記憶手段への書き込みを含むものとする。
【００３４】
【数４】
0004819470.tif 000005
次に、反復回数判定を行う（Ｓ１０８）。ここでカウンタＴ＜ｉｔであれば、カウンタＴをインクレメントして、行処理演算を行うステップＳ１０４へ戻る。この繰り返しサイクルは、Ｔ＝ｉｔとなるまで継続される。ここで、例えば，ｉｔ＝５０とすることができるがこれに限定される必要はなく、収束が早ければｉｔはより小であっても良い。Ｔ＝ｉｔで復号処理は終了する（Ｓ１１０）。
【００３５】
最終的に、エラー訂正がなされた一時推定語ｃｎが得られる。  
ここで、再び図１に例示される復号装置２４に戻って、その構成要素に関し補足説明を行う。受信語データはまずシリアル−パラレル変換を行うＳ／Ｐ回路５２へ入力される。入力バッファ５４は、受信語を記憶するメモリから構成される。この入力バッファ５４は、列処理演算において並列処理ができるように、ひとつの受信語から列処理演算に必要なデータを複数同時に出力できるように構成される。具体的には、入力バッファへの書き込み時に、データの並べ替えを行う。
【００３６】
出力バッファ５６は、一時推定語演算データを記憶するメモリにより構成される。この一時推定語は、パラレル−シリアル変換を行うＰ／Ｓ回路５８へ入力される。制御部４０は、入力バッファ５４、第１記憶手段４８、第２記憶手段４６、行処理演算回路４２列処理演算回路４４、出力バッファ５６などの動作を制御する。
なお、行処理演算に必要なデータの総ビット数は、
量子化ビット数×行重み×Ｐｍ（列重みの２倍）
と表わされる。
【００３７】
また、列処理演算に必要な第１記憶手段４８から読み出されるデータの総ビット数は、
量子化ビット数×列重み×Ｐｎ（行重み）
と表わされる。
【００３８】
さらに、一時推定語演算に必要な第１記憶手段４８からの読み出しデータの総ビット数は、
量子化ビット数×列重み×Ｐｎ（行重み）
と表わされる。
【００３９】
さらに、入力バッファ５４からの読み出しデータの総ビット数は、
量子化ビット数×Ｐｎ（行重み）
と表わされる。
【００４０】
次に、行処理演算回路４２、第１記憶手段４８、列処理演算回路４４、第２記憶手段４６間で実行されるデータの受け渡しに関して、より詳細に説明をする。ここで第１記憶手段４８、及び第２記憶手段４６を構成するメモリ素子群としては、例えばデュアルポートＲＡＭを用いることができる。
【００４１】
図９は、デュアルポートメモリであるデュアルポートＲＡＭ６０を記憶手段のメモリ素子群として用いた場合の、記憶データの構成の一例を示す図である。この記憶データの構成は、図３に例示される検査行列１０を構成する部分行列１２のうち、列に沿って（２ｒ−１）番目と２ｒ番目（但し、ｒ＝１，２、・・・、Ｐｍ／２）を一組とした行列と対応させる。すなわち、このような２個が組み合わされた部分行列はそれぞれ行重みが１であり、列重みが１とできる。
【００４２】
この結果、デュアルポートＲＡＭ６０の各々に、行重み１かつ列重み１の部分行列の「１」の要素に対応した演算結果を記憶させることができる。従って第１記憶手段４８及び第２記憶手段４６は、Ｐｎ個×Ｐｍ／２個のデュアルポートＲＡＭ６０から構成される。図９において、Ｐｎを行重みと一致させ、Ｐｍ／２を列重みと一致させる。本明細書においては、ＲＡＭ［ｊ］［ｋ］なる表現により位置を表わすことにし、ｋを「行重み番号」、ｊを「列重み番号」とする。なお、図示していないが、デュアルポートＲＡＭ６０の各ポートが、図３に例示される部分行列１２の各要素へのアクセスに使用される。また、演算データは、行番号順にデュアルポートＲＡＭ６０へ記憶させることができる。
【００４３】
続いて、検査行列Ｈの行重みを７とし（Ｐｎ＝７を意味する）、列重みを３（Ｐｍ＝６を意味する）とした場合についてより具体的に説明をする。ここで、復号方法の流れは、図８に例示されるフロー図に従うものとする。
【００４４】
図１０は、行処理演算ステップ（Ｓ１０４）における記憶手段と行処理演算回路４２との接続を表わすブロック図である。行処理演算においては、始めに第２記憶手段４６から必要データを読み出す。この場合、検査行列の同一行の「１」なる要素に対応するデータが必要である。本具体例においては行重みが７であるので、１行あたり７個のデータ（ビット・ノード数に対応）が必要である。図６には、７個のビット・ノードが例示されている。また、行処理は列重み３の２倍数である６並列処理が行われるので７個×６（行）＝４２個のデータが必要となる。
【００４５】
１行分のデータは、行重み番号（ｋ）の番号順に第２メモリ素子群の対応するデュアルポートＲＡＭ４７に記憶されている。このデータは、行番号順に記憶させてあるので、７個すべてのデュアルポートＲＡＭに行番号を示す同一のアドレスを与えることにより、１回のアクセスで７個のデータを並列に読み出すことができる。また、第２記憶手段４６もデュアルポートＲＡＭであるので、２行分のデータを同時に読み出すことができる。
【００４６】
さらに、このデュアルポートＲＡＭ構成を、列重みと同数の３組配置することにより、７個×６（行）＝４２個のデータを同時に読み出すことができる。このように、読み出された列処理データは、行ごとに行処理演算回路４２へ入力される。この場合、行処理演算回路４２も６並列分配置することにより、６行分の行処理演算が並列処理できる。
【００４７】
行処理演算回路４２における演算データは、第１記憶手段４８を構成するデュアルポートＲＡＭ４９へ、書き込まれる。４２個の演算データは、６並列処理により１回のアクセスで書き込み可能である。
【００４８】
図１１は、列処理演算ステップ（Ｓ１０６）における記憶手段と列処理演算回路との接続を表わすブロック図である。列処理演算においては、始めに第１記憶手段４８から必要データを読み出す。この場合、検査行列の同一列の「１」なる要素に対応するデータが必要である。本具体例においては列重みが３であるので、１列当たり３個のデータ（チェック・ノード数に対応）が必要である。図７には、３個のチェック・ノードが例示されている。また、列処理は７並列処理が行われるので３個×７（列）＝２１個のデータが必要となる。
【００４９】
１列分のデータは、列重み番号（ｊ）の番号順に第１メモリ素子群の対応するデュアルポートＲＡＭ４９に記憶されている。このデータは、１回のアクセスで３個のデータを読み出すことができる。また、このデュアルポートＲＡＭ構成を、行重みと同数の７組配置することにより３個×７（列）＝２１個のデータを同時に読み出すことができる。ここで、第１記憶手段４８を構成するデュアルポートＲＡＭ４９は行番号順にデータが記憶されているので、当該データの読み出しアドレスは、当該データの行番号に対応したアドレスを指定する必要がある。この読み出しアドレスの指定は、制御部４０において行う。
【００５０】
図１２は、このアドレス指定を説明する図である。列番号変換メモリ６４を用いて列番号から行番号に対応するアドレスへの変換を行う。当該メモリのアドレスに列処理演算対象の列番号を与える。列処理演算対象の列数は７であるが、ひとつの列番号から当該２１個分の行番号に対応したアドレスが出力されるように、あらかじめメモリ内容を設定しておくことで変換を実現する。
【００５１】
第１記憶手段４８から読み出したデータは、列ごとに列処理演算回路４４へ入力される。列処理演算回路４４は７並列処理が可能とされる。また、一時推定語演算回路５０も７並列処理が可能とされる。
【００５２】
次に、列処理演算回路４４からの出力データを、第２記憶手段４６を構成するデュアルポートＲＡＭ４７へ書き込む。２１個のデータは均等に書き込まれるので、１回のアクセスですべてのデータの書き込みが可能である。
【００５３】
次に、比較例との対比により、第１具体例における利点をより明確にする。  
図１３は、比較例にかかるＬＤＰＣ符号の復号装置を表わすブロック図である。なお、第１具体例と同様の構成要素には同一番号を付して詳細な説明を省略する。本比較例においては、検査行列を行方向及び列方向に分割して、並列処理を行うことにより復号処理時間を短縮している。また、回路規模を縮小するために、第１記憶手段４８及び第２記憶手段４６にはＲＡＭが用いられており、かつ並列処理のためにＲＡＭは複数個が用いられている。さらに、検査行列においては図１４に例示されるようにランダムに「１」が配置されている。本比較例においては、検査行列の行重みを４、列重みを３としている。
【００５４】
まず、比較例の行処理演算につき説明する。  
図１５は、検査行列の一例を表わす図である。  
また、図１６は、行処理演算時のメモリ接続を表わすブロック図である。第２記憶手段４６及び第１記憶手段４８は１００列ごとにデータを列番号順に記憶させている
検査行列における１行目の「１」の要素が、４列目、２０１列目、４８０列目、９９８列目であったとすると、当該要素に対するデータが、記憶手段を構成するＲＡＭに散在する。この結果、各ＲＡＭの出力から行処理演算に必要なデータのみを選択するための選択回路６６が必要となる。また、演算データを各ＲＡＭへ書き込む際にも、当該行の４個の「１」の要素に対応する複数のＲＡＭに、対応するデータを選択して渡すための選択回路６６が必要となる。
【００５５】
次に、比較例の列処理演算につき説明する。  
図１７は、検査行列の一例を表わす図である。  
また、図１８は、列処理演算時のメモリ接続を表わすブロック図である。第２記憶手段４６及び第１記憶手段４８は１００行ごとのデータを行番号順に記憶させている。
【００５６】
検査行列の「１」の要素がランダムに配置されており、一列目の「１」の要素が、２行目、１５２行目、４５０行目であったとすると、当該要素に対するデータは、各ＲＡＭに散在する。この結果、各ＲＡＭの出力から列処理演算に必要なデータのみを選択する選択回路６６が必要になる。また、演算データを各ＲＡＭへ書き込む際も、当該列の３個の「１」の要素に対応する複数のＲＡＭに、対応するデータを選択して渡すための選択回路６６が必要となる。
【００５７】
以上説明したように、比較例においては、検査行列が「１」をランダムに配置する構成である場合、第１記憶手段４８及び第２記憶手段４６の入力及び出力側には選択回路６６が必要である。この選択回路６６は、並列処理数分必要である。演算処理時間を短縮するために並列処理数を増やすと、それに応じて選択回路６６も増える。この選択回路６６は回路規模が大となり、装置の大型化および消費電力増大を招く。
【００５８】
これに対して、第１具体例においては、検査行列を（行重み×列重みの２倍）数の部分行列に分割し、複数のＲＡＭに「１」を分散させている。これにより、第１記憶手段４８、第２記憶手段４６の記憶データを並び替えずとも、行処理演算及び列処理演算をそれぞれ並行処理できると共に、デュアルポートＲＡＭ６０を用いることで、データの読み出し、書込み時間を低減することもできる。これにより、（行重み×列重み）数のデュアルポートＲＡＭ６０に、行重み番号（ｋ）及び列重み番号（ｊ）に対応したデータを記憶させることが可能となるので、選択回路６６が不要であり、回路規模を７から２０％縮小できる。この結果、演算処理時間の短縮、小型、低消費電力が可能な復号装置が実現できる。
【００５９】
次に、本発明の第２具体例にかかる低密度パリティ検査符号の復号装置及び復号方法について説明する。  
図１９は、第２具体例における検査行列の一例である。各部分行列において、「１」の要素はランダムに配置されているが、行重みは、０、１，２のいずれかとされ、列重みは、０または１とされる。
【００６０】
ここで、縦に連続した（２ｒ−１）番目と２ｒ番目（但し、ｒ＝１，２、・・・、Ｐｍ／２）の部分行列をあわせた行列における列重みの合計をすべて１とする。また、行方向に沿って連続した２個のペア部分行列を合わせた行列の行重みをすべて２とする。なお、「行方向に沿って連続する」ことを以下では、「横に連続する」と呼ぶことにする。
【００６１】
図１９の例においては、列ブロック番号＝２であるＨｓｕｂ［２ｒ−１］［２］とＨｓｕｂ［２ｒ］［２］とが縦に連続して配置され、列ブロック＝３であるＨｓｕｂ［２ｒ―１］［３］とＨｓｕｂ［２ｒ］［３］とが縦に連続して配置されている。
【００６２】
一方、列ブロック＝２に属するＨｓｕｂ［２ｒ−１］［２］と列ブロック＝３に属するＨｓｕｂ［２ｒ−１］［３］とは横に連続したペア部分行列を構成している、同様に、列ブロック＝２に属するＨｓｕｂ［２ｒ］［２］と列ブロック＝３に属するＨｓｕｂ［２ｒ］［３］とは横に連続したペア部分行列を構成している。このペア部分行列の位置は、特に限定されない。例えば、列ブロック番号が、１番と２番、２番と３番、３番と４番、４番と５番などの組み合わせを任意に選択できる。
【００６３】
次に、第２具体例における処理の流れを、より詳細に説明する。  
図２０は、各部分行列１２を２行×４列とし、列ブロック番号＝２及び列ブロック番号＝３に属する部分行列により横に連続したペア部分行列１３を２組縦に連続して設けた検査行列の例である。この場合、２個のペア行列１３において、行重みをすべて２としている。２個のペア部分行列１３以外の部分行列においては行重みをすべて１とする。また、２組のペア部分行列１３は、縦方向に（２ｒ−１）番目と２ｒ番目（但し、ｒは１〜Ｐｍ／２の自然数のひとつ）の部分行列に位置する。
【００６４】
第２具体例においても、行処理演算は第１具体例と同様であるので、列処理演算のみについて説明を行う。図２０に例示される検査行列において、各部分行列の１列目、２列目に対する列処理演算対象の「１」の要素の行重み番号は、列ブロック番号と一致するので、第１具体例と同様の列処理演算を行うことができる。
【００６５】
また、各部分行列の３列目の列処理演算において、列ブロック番号が１、及び列ブロック番号が４以上における列処理演算対象の「１」の要素の行重み番号は、列ブロック番号と一致しているので、第１具体例と同様の列処理演算を行うことができる。
【００６６】
次に、第１具体例とは列処理演算が異なる列ブロック番号＝２及び列ブロック番号＝３について以下に説明を行う。  
図２１は、列処理演算におけるメモリ接続を表わすブロック図である。第１具体例の対応するブロック図は図１１に例示されており、図２０は第１具体例と異なる箇所のみを表わしている。
【００６７】
列ブロック番号＝３における３列目、すなわち検査行列１０における１１列目における列処理演算対象の「１」の要素は、４行目、６行目、９行目のそれぞれ位置している。これらを｛要素（４，１１）、要素（６，１１）、要素（９，１１）｝と表記する。さらに、当該要素の行重み番号、列重み番号を｛重み（ｋ＝行重み番号、ｊ＝列重み番号）｝と表記する。
【００６８】
要素（４，１１）の重み（ｋ＝２、ｊ＝１）であり、列ブロック番号とは重み番号が異なる。この場合、当該データは図２１におけるデュアルポートＲＡＭで構成されるＲＡＭ−Ａ［１］［２］（ｋ＝２、ｊ＝１）に記憶されている。当該データの読み出しは、ＲＡＭ−Ａ［１］［２］のポート２を使って行われる。この読み出しデータは、選択指示回路７２（＃３）により選択回路６６を制御することにより列処理演算回路４４（＃３）へ渡される。
【００６９】
一方、要素（６，１１）及び要素（９，１１）の行重み番号は３であり列ブロック番号＝３と一致する。この場合は、当該データをＲＡＭ−Ａ［２］［３］及びＲＡＭ−Ａ［３］［３］からそれぞれ読み出し、選択指示回路７２（＃３）により選択回路６６を制御することにより列処理演算回路４４（＃３）へ渡される。このように、列処理演算に必要なデータ３個は、すべて同時に対応するデュアルポートＲＡＭから読み出される。
【００７０】
続いて列処理演算データが列処理演算回路４４（＃３）からデュアルポートＲＡＭ４９である、ＲＡＭ−Ｂ［１］［２］、ＲＡＭ−Ｂ［２］［３］、ＲＡＭ−Ｂ［３］［３］へ書き込まれるが、この際、ＲＡＭ−Ｂ［１］［２］  への書き込みにはポート２を使い、それ以外はポート１を使って書き込む。このように、すべてのデータをデュアルポートＲＡＭ４９へ同時に書き込むことができる。
【００７１】
続いて、列ブロック番号＝２における３列目の列処理演算について説明する。この場合、列処理演算対象の「１」の要素の行重み番号はすべて２であり、列ブロック番号と一致する。従って、ＲＡＭ−Ａ［１］［２］、ＲＡＭ−Ａ［２］［２］、ＲＡＭ−Ａ［３］［２］のポート１からデータを同時に読み出し、選択指示回路７０（＃２）により選択回路６６を制御することにより列ブロック番号＝２の３列目の列処理演算に必要なデータを列処理演算回路４４（＃２）へ渡す。
【００７２】
列処理演算データは、ＲＡＭ−Ｂ［１］［２］、ＲＡＭ−Ｂ［２］［２］、ＲＡＭ−Ｂ［３］［２］のポート１を使い各メモリにそれぞれ書き込まれる。なお、選択指示回路７０（＃２）及び７２（＃３）は、メモリを用いて実現できる。メモリのアドレスに列処理演算対象の列番号を与え、データバスからあらかじめ検査行列に対応した選択指示信号を記憶しておく。
【００７３】
次に、各部分行列の４列目の列処理演算について説明する。列ブロック番号＝１及び列ブロック番号＝４以上における列処理演算対象の「１」の要素の行重み番号は、列ブロック番号と一致するので、第１具体例と同様にできる。列ブロック番号＝２及び列ブロック番号＝３の列処理演算を図２１のメモリ接続を用いて説明する。
【００７４】
列ブロック番号＝２における４列目、すなわち検査行列１０の８列目の列演算対象の「１」の要素は、２行目、７行目、９行目に位置する。これらを、｛要素（２，８）、要素（７，８）、要素（９，８）｝と表記する。また、要素（２，８）の重み（ｋ＝３、ｊ＝１）であり、列ブロック番号＝２と重み番号が異なる。この場合、データはＲＡＭ−Ａ［１］［３］（ｋ＝３、ｊ＝１）に記憶されている。  
当該データは、ＲＡＭ−Ａ［１］［３］のポート２を使って読み出される。続いて、選択指示回路７２（＃３）により制御された選択回路６６により当該データが列処理演算回路４４へ渡される。
【００７５】
一方、要素（７，８）、要素（９，８）の行重み番号は２であり、列ブロック番号と一致する。従って、当該データはＲＡＭ−Ａ［２］［２］、ＲＡＭ−Ａ［３］［２］から読み出され、選択回路６６により選択されて列処理演算回路４４へ渡される。この用に、列処理演算に必要なデータ３個は、すべて同時にＲＡＭ−Ａから読み出される。列処理演算データは、ＲＡＭ−Ｂ［１］［３］，ＲＡＭ−Ｂ［２］［２］，ＲＡＭ−Ｂ［３］［２］に書き込まれるが、この際ＲＡＭ−Ｂ［１］［３］への書き込みにはポート２を使い、それ以外にはポート１を使う。
【００７６】
列ブロック番号＝３の４列目における列処理演算対象の「１」の要素の行重みはすべて３であり、列ブロック番号と一致する。従って、ＲＡＭ−Ａ［１］［３］、ＲＡＭ−Ａ［２］［３］、ＲＡＭ−Ａ［３］［３］のポート１からデータが同時に読み出され、選択回路６６はポート１からの出力を選択するように制御される。この結果、列ブロック番号＝３の４列目の列処理演算に必要なデータが列処理演算回路４４（＃３）へ渡される。列処理演算データは、ＲＡＭ−Ｂ［１］［３］、ＲＡＭ−Ｂ［２］［３］、ＲＡＭ−Ｂ［３］［３］のポート１を使い各メモリに書き込まれる。このようにして、すべてのデータをデュアルポートＲＡＭ４９に同時書き込みできる。
【００７７】
第２具体例においては、選択指示回路及び最小限の選択回路が必要である。しかし、図１３に例示される比較例に対して選択回路数は極めて少ないので、回路規模の増大は最小限にすることができる。
【００７８】
第２具体例の利点は、第１具体例と比べて検査行列１０の設計が容易となることである。ＬＤＰＣ符号の復号のための検査行列を構成する方法のひとつに、乱数を用いて列置換を行うＧａｌｌａｇｅｒによる構成法がある。第２具体例においては、横方向ペア部分行列１３により、検査行列構成により自由度をもたせることができるので、設計がより容易となる。
【００７９】
さらに、第１具体例と同様に、第２具体例においても、検査行列を部分行列に分割し、「１」を分散させている。また、デュアルポートＲＡＭ６０を用いて、データ読み出し、書きこみ時間を低減している。この結果、行重み×列重み数のデュアルポートＲＡＭ６０に、行重み番号（ｋ）及び列重み番号（ｊ）に対応したデータを記憶させることが可能となるので、選択回路数を低減できる。この結果、演算処理時間の短縮、小型、低消費電力が可能な復号装置が実現できる。
【００８０】
第１具体例及び第２具体例において説明したようなＬＤＰＣ符号の復号装置及び復号方法を用いることにより、データの高速伝送路において生じるエラー検出及び訂正することができる。この結果、ブロック誤り率が低く、エラーフロアの少ない高速伝送路が実現できる。
【００８１】
以上、図面を参照しつつ本発明の実施の形態について説明した。しかし本発明は、これら具体例には限定されない。例えば、ＬＤＰＣ復号装置を構成する記憶手段、メモリ素子、演算回路、Ｓ／Ｐ回路、Ｐ／Ｓ回路、バッファ回路などに関して、また復号方法に関して、当業者が各種の設計変更を加えたものであっても、本発明の要旨を有する限り本発明の範囲に包含される。
【図面の簡単な説明】
【００８２】
【図１】本発明の第１具体例にかかる低密度パリティ検査（ＬＤＰＣ）符号の復号装置のブロック図である。
【図２】第１具体例にかかる復号装置が組み込まれた受信器を表わすブロック図である。
【図３】第１具体例におけるＬＤＰＣ符号の検査行列を表わす図である。
【図４】第１具体例におけるＬＤＰＣ符号の検査行列の一例を表わす図である。
【図５】タナーグラフを表わす図である。
【図６】行処理演算処理を説明するためのタナーグラフである。
【図７】列処理演算処理を説明するためのタナーグラフである。
【図８】本具体例にかかる低密度パリティ検査符号の復号方法を説明するフロー図である。
【図９】第１具体例におけるデュアルポートＲＡＭの構成を表わす図である。
【図１０】第１具体例にかかる復号装置におけるデュアルポートＲＡＭと行処理演算回路との接続を表わすブロック図である。
【図１１】第１具体例にかかる復号装置におけるデュアルポートＲＡＭと列処理演算回路との接続を表わすブロック図である。
【図１２】列番号変換メモリを表わす図である。
【図１３】比較例にかかるＬＤＰＣ符号の復号装置を表わすブロック図である。
【図１４】比較例における検査行列の一例である。
【図１５】比較例における行処理演算を説明するための検査行列の一例である。
【図１６】比較例における行処理演算時のメモリ接続を表わすブロック図である。
【図１７】比較例における列処理演算を説明するための検査行列の一例である。
【図１８】比較例における列処理演算時のメモリ接続表わすブロック図である。
【図１９】第２具体例における検査行列である。
【図２０】第２具体例における検査行列のより詳細な例である。
【図２１】第２具体例における列処理演算時のメモリ接続を表わすブロック図である。
【符号の説明】
【００８３】
１０  検査行列
１２  部分行列
１３  横方向ペア部分行列
２０  アンテナ
２２  復調回路
２４  復号装置
２６  ＣＰＵ
２８  映像／音声信号処理回路
３２  モニタ
３４  スピーカ
４０  制御部
４２  行処理演算回路
４４  列処理演算回路
４６  第２記憶手段
４７  デュアルポートＲＡＭ
４８  第１記憶手段
４９  デュアルポートＲＡＭ
５０  一時推定語演算回路
５２  Ｓ／Ｐ回路
５４  入力バッファ
５６  出力バッファ
５８  Ｐ／Ｓ回路
６０  ＲＡＭ  
６４  列番号変換メモリ
６６  選択回路
７０  選択指示回路
７２  選択指示回路
【図１】
0004819470.tif 000006
【図２】
0004819470.tif 000007
【図３】
0004819470.tif 000008
【図４】
0004819470.tif 000009
【図５】
0004819470.tif 000010
【図６】
0004819470.tif 000011
【図７】
0004819470.tif 000012
【図８】
0004819470.tif 000013
【図９】
0004819470.tif 000014
【図１０】
0004819470.tif 000015
【図１１】
0004819470.tif 000016
【図１２】
0004819470.tif 000017
【図１３】
0004819470.tif 000018
【図１４】
0004819470.tif 000019
【図１５】
0004819470.tif 000020
【図１６】
0004819470.tif 000021
【図１７】
0004819470.tif 000022
【図１８】
0004819470.tif 000023
【図１９】
0004819470.tif 000024
【図２０】
0004819470.tif 000025
【図２１】
0004819470.tif 000026