(57)【要約】【課題】マルチレートに対応した復号装置を提供する。【解決手段】符号化率の異なる複数の低密度パリティ検査符号を使い分けることができる復号装置であって、前記複数の低密度パリティ検査符号に対応する複数の検査行列Ｈは、低密度パリティ検査符号の符号長Ｎ及び検査行列Ｈの列重みｗｃが共通している。しかも、検査行列Ｈに含まれる非零要素の列位置を示す数の集合が前記複数の検査行列間で共通している。ただし、行重みｗｒが複数の検査行列Ｈ間で異なることで複数の検査行列Ｈの符号化率Ｒが異なっている。【選択図】図１２
2011072020.tif 000002
【特許請求の範囲】
【請求項１】
符号化率の異なる複数の低密度パリティ検査符号を使い分けることができる復号装置であって、
前記複数の低密度パリティ検査符号に対応する複数の検査行列は、
低密度パリティ検査符号の符号長及び検査行列の列重みが共通しているとともに、
検査行列に含まれる非零要素の列位置を示す数の集合が前記複数の検査行列間で共通しており、
行重みが複数の検査行列間で異なることで複数の検査行列の符号化率が異なっている
ものを含むことを特徴とする復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、低密度パリティ検査符号の復号装置に関するものである。
【背景技術】
【０００２】
近年、誤り訂正技術の一つとして、低密度パリティ検査（ＬＤＰＣ：Low-Density Parity-Check）符号と、その復号法であるsum−product復号法とが注目されている（非特許文献１及び特許文献１参照）。
【０００３】
ＬＤＰＣ符号は、非常に疎な検査行列により定義される線形符号であり、Ｇａｌｌａｇｅｒによって発明されたものである。このＬＤＰＣ符号では、白色ガウス通信路のシャノン（Shannon）限界まで、０．００４ｄＢという復号特性が得られることが知られている。また、sum-product復号法は、並列処理による復号処理を実行するため、符号長を長くすることができるとともに処理能力を向上させることができる。
【０００４】
ＬＤＰＣ符号においては、より良い訂正能力を得るには、検査行列として適切なものを定義する必要がある。ここで、Ｇａｌｌａｇｅｒによって提案された検査行列の生成法は、次の通りである。
まず、生成対象の検査行列Ｈは、列重み（列のハミング重み；各列の１（非零要素）の個数）がｗｃ、行重み（行のハミング重み；各行の１（非零要素）の個数）がｗｒであるものとする。この場合、検査行列Ｈを、図２２に示すように、検査行列Ｈの行方向にｗｃ＝３個のブロックに分ける。
【０００５】
また、ここでは行重みｗｒ＝６とし、第１ブロック（Ｈ１）において、第１行目の第１列目〜第６列目に「１」（非零要素）が配置され、第２行目の第７〜第１２列目に「１」（非零要素）が配置され、以下同様に、第１ブロック内の以下の行についても「１」（非零要素）が配置される。ここでは、第１ブロック（Ｈ１）における各列の列重みが１となるように配置される。
【０００６】
そして、第１ブロック内の任意の列を、乱数を用いて再配置（入れ替え）し、これを適当な回数繰り返したものを第１ブロックとする。第１ブロックの各列の重みは１であるので、列を入れ替えても列の重みは１のままである。
第２ブロック以降についても、第１ブロックと同様に乱数（他のブロックとは別の乱数）を用いて列の入れ替え処理を行い、非零要素の配置が各ブロックで異なるようにする。
以上の処理をｗｃ＝３個のブロックについて行えば、列重みがｗｃのパリティ検査行列が生成される。
【０００７】
ＬＤＰＣ符号では、上記のように乱数を用いて検査行列を決定するのが一般的である。つまり、乱数を用いることで検査行列における「１」（非零要素）の配置に規則性が無くなり訂正能力を確保することができる。
【０００８】
また、近年、通信エラーの状態に応じて、通信の場所ごとに検査行列を変化させることが望まれている。つまり、通信社間で複数の符号を使い分けることで、効率のよい通信を実現できる。例えば、ＷｉＭＡＸでは、１１４通りの符号が規定され、ＩＥＥＥ８０２．１１ｎでは、１２通りの符号が規定されている。
【０００９】
ここで、非特許文献２には、マルチレートに対応したＬＣＰＤ符号の復号器が開示されている。非特許文献２の復号器では、ハードウェアで実装することを考慮して、検査行列の構造としてブロック分割形を採用しており、検査行列を符号化率に応じて分割するものとなっている。検査行列を符号化率に応じて分割することで、複数の検査行列があってもハードウェア構成が膨大にならない復号器を構成することができる。
そして、Ｓ／Ｎ比が劣悪な時は符号化率の低い検査行列の構成をとり、Ｓ／Ｎ比が良好な時は符号化率を高めることで復号スループットを高めることができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−２６９５３５号公報
【非特許文献】
【００１１】
【非特許文献１】和田山正、「低密度パリティ検査符号とその復号法について」、信学技報、ＭＲ２００１−８３、２００１年１２月
【非特許文献２】今井優太（他４名）、「動的再構成可能なマルチレート対応ＬＤＰＣ符号復号器の実装」、信学技報、ＲＥＣＯＮＦ２００６−４３、２００６年１１月
【発明の概要】
【発明が解決しようとする課題】
【００１２】
非特許文献２の復号器では、符号化率として「０．５」、「０．６２５」、「０．７５」
の３つの場合が示されており、符号化率に応じて検査行列を分割することにより、各符号化率での符号長Ｎは、それぞれ、１５３６ビット、２０４８ビット、３０７２ビットになることが示されている。
【００１３】
上記のように非特許文献２の復号器では、符号化率Ｒが高くなるほど符号長Ｎが長くなり、符号化率が低いほど符号長が短くなっている。特許文献２では、ハードウェアでの実装を優先してブロック分割形という構成を採用したため、符号化率を下げるほど符号長が短くなるという結果が生じているものと推察される。
【００１４】
しかし、低Ｓ／Ｎ比など通信環境が劣悪な時は、符号化率Ｒを低くして誤り訂正能力を高めるために、情報ビットに付加される冗長ビットを多くして符号長Ｎを長くするのが、一般的な考え方である。なお、ここで、符号長Ｎは、情報ビット数Ｋと冗長ビット数Ｍとの和であり、符号化率Ｒは、「情報ビット数Ｋ／符号長Ｎ」で表される。
【００１５】
したがって、符号化率Ｒを低くしたい場合に、符号長Ｎが短くなると、十分な数の冗長ビットを付加できなくなるおそれがあり、非特許文献２のように符号化率を下げるほど符号長が短くなるという点は、一般的な冗長ビットの付加の仕方と整合せず、不利な制約となる。
よって、符号化率（訂正能力）は、符号長が連動して変化することなく変更できるのが望ましい。
【００１６】
一方、ハードウェア実装の観点からは、複数の符号化率に対応した複数の検査行列それぞれの回路が全く別のものになると、回路規模が膨大となる。したがって、回路規模が膨大になるのを避けようとすると、従来は、非特許文献２のように、符号化率を下げるほど符号長が短くなるという不利な制約を受けざるを得なかった。
【００１７】
そこで、本発明の目的は、符号化率を下げるほど符号長が短くなるという不利な制約を受けることなく、異なる符号化率に対応した複数の検査行列を用いることができるが、ハードウェア実装された場合であっても、回路規模の膨大化の抑制を可能とすることにある。
また、本発明の他の目的は、ルールに基づいて表現できる検査行列を提供することである。
【課題を解決するための手段】
【００１８】
本発明は、符号化率の異なる複数の低密度パリティ検査符号を使い分けることができる復号装置であって、前記複数の低密度パリティ検査符号に対応する複数の検査行列は、低密度パリティ検査符号の符号長及び検査行列の列重みが共通しているとともに、検査行列に含まれる非零要素の列位置を示す数の集合が前記複数の検査行列間で共通しており、行重みが複数の検査行列間で異なることで複数の検査行列の符号化率が異なっているものを含むことを特徴とする復号装置である。
【００１９】
ここで、列重みとは、検査行列の各列に含まれる非零要素の数であり、行重みとは、検査行列の各行に含まれる非零要素の数である。なお、低密度パリティ検査符号の正則な検査行列においては、「検査行列における非零要素の総数」＝「列重み×検査行列の列数」＝「行重み×検査行列の行数」が成り立つ。
【００２０】
本発明によれば、複数の符号化率に対応した複数の検査行列において、符号長が共通しているため、符号化率によって符号長が変化することはない。
そして、本発明では、複数の検査行列において列重みも共通しているため、「検査行列における非零要素の総数」＝「列重み×検査行列の列数（符号長）」という関係式より、符号化率の異なる複数の検査行列間でも、非零要素の総数は共通する。つまり、検査行列に含まれる非零要素の列位置を示す数の集合の要素数が、複数の検査行列間で共通する。
【００２１】
すると、「検査行列における非零要素の総数」＝「行重み×検査行列の行数（冗長ビット数）」という関係式より、行重みが複数の検査行列間で異なることで符号化率を異ならせると、複数の検査行列間で、符号長が共通しつつ、行数（冗長ビット）が異なることになる。
このように、符号化率を変えるために、共通した符号長において行重みを変えると、検査行列の行数が変化し、これは冗長ビットを増減することになる。つまり、行重みの変更は、ある符号長において情報ビットの占める割合を変更することになり、符号化率を変更する際の一般的な考え方に準拠したものとなる。
【００２２】
しかも、本発明では、複数の検査行列の符号長及列重みが共通しているとともに、検査行列に含まれる非零要素の列位置を示す数の集合が前記複数の検査行列間で共通しているため、検査行列を用いた処理を回路実装する場合には、共通点に関する回路を複数の検査行列で共用でき、回路規模の膨大化を防止することができる。
そして、上記本発明では、非零要素の列位置を示す数の集合の要素である「列位置を示す数」それぞれが、検査行列のどの行に配置されるかを、行重みに応じて変更すればよい。
【００２３】
なお、本発明において、複数の検査行列間の上記のような関係は、復号装置が使い分ける複数の検査行列すべてにおいて満たされている必要はなく、復号装置が使い分ける複数の検査行列のうちの「一部の複数の検査行列」が、上記のような関係を満たしていればよい。
【００２４】
前記符号長をＮとし、前記検査行列の列重みをｗｃとし、前記検査行列の行重みをｗｒとし、前記Ｎに対して互いに素である少なくともｗｃ個の数をＡ１，・・，Ａｊ（ただし、ｊは、ｗｃ以上の数であり、Ａ１，・・・，Ａｊはそれぞれ異なる数）としたときに、前記検査行列のそれぞれの行には、当該検査行列の行数に応じた個数の数列であって、それぞれが以下の条件（Ａ）〜（Ｂ）を満たす数列に含まれる各数に対応した列位置に非零要素が配置されているのが好ましい。
（Ａ）検査行列の行数に応じた数の数列それぞれは、以下の条件（Ｃ）〜（Ｄ）を満たす基礎数列を、ｗｒ個の数ごとに分割した部分数列である。
（Ｂ）検査行列の行数に応じた個数の部分数列は、それぞれ、検査行列のいずれか一の行に割り当てられている。
（Ｃ）前記基礎数列に含まれる数は、１〜Ｎの自然数である。
（Ｄ）前記基礎数列において、１〜Ｎの自然数それぞれの出現回数は、列重みの値ｗｃと同じである。
（Ｅ）前記基礎数列は、公差がＡ１，・・，ＡｊのいずれかであるＸ個の等差数列（ただし、当該数列に含まれる任意の数ｙＡと当該数ｙＡに隣り合う数ｙＢとの差がＡでない場合があっても、ｙＡと（ｙＢ＋Ｎ）との差がＡであれば、ｙＡとｙＢの差はＡであるとみなす）を連結したものである。
【００２５】
上記検査行列は、上記条件に従っているものの、乱数で生成したものと同様な良好な訂正能力を有することを、本発明者は見出した。
なお、検査行列の各行に存在する非零要素の位置を示す「数」からなる数列には、１つの行について、複数パターンをとり得る。例えば、上記（Ａ）〜（Ｅ）の条件を満たす検査行列であっても、当該検査行列のある一つの行に存在する非零要素の位置を示す「数」を小さい順に並べた数列は、上記（Ｅ）の条件（等差数列）を満たすとは限らない。
しかし、本発明では、「等差数列に含まれる各数に対応した列位置に非零要素が配置されて」いればよく、検査行列における非零要素の並びを基準に考えた数列が、条件（Ｅ）を満たすか否かは考慮しなくともよい。つまり、検査行列の各行が、条件（Ｅ）を満たす数列を持ち得るものであれば足りる。
【００２６】
前記基礎数列における複数の部分数列の並び順と、前記部分数列が割り当てられている検査行列の各行の並び順とが一致するように、複数の部分数列が検査行列の各行に割り当てられているのが好ましい。
【００２７】
また、通信レートに応じて検査行列の行重みを変更することでマルチレートに対応するのが好ましい。
【００２８】
また、検査行列の生成方法に係る本発明は、低密度パリティ検査符号の符号長Ｎと、前記Ｎに対して互いに素である数値Ａと、検査行列の行重みｗｒを用いて、低密度パリティ検査符号の検査行列を生成する方法であって、通信レートに応じて前記ｗｒを変更する行重み変更ステップと、検査行列に含まれるＰ個（Ｐは２以上の自然数）の行それぞれが有する非零要素の位置を算出する位置算出ステップと、前記位置算出ステップによって算出された位置に、非零要素を配置する配置ステップと、を含み、前記位置算出ステップでは、変数ｘを、初期値ｘ１から（ｘ１＋（Ｎ−１））まで増加させつつ、（Ａ×ｘ）をＮで割ったときの剰余を求める演算を行って、Ｎ個の演算結果を取得し、前記配置ステップでは、Ｎ個の演算結果からなる数列を、ｗｒ個の数からなるＰ個の部分数列に分割し、Ｐ個の部分数列に含まれる数を非零要素の列位置として、対応するＰ個の行に非零要素を配置し、ことを特徴とする検査行列生成方法である。
【発明の効果】
【００２９】
本発明によれば、符号化率を下げるほど符号長が短くなるという制約を受けることなく、異なる符号化率に対応した複数の検査行列を用いることができるものの、ハードウェア実装された場合であっても、回路規模の膨大化の抑制が可能である。
【図面の簡単な説明】
【００３０】
【図１】通信システムの構成を概略的に示す図である。
【図２】送信データと復調データの対応の一例を示す図である。
【図３】復号化器の構成を概略的に示す図である。
【図４】参考的に示す検査行列（本発明の実施形態ではない）の一例である。
【図５】図４に示す検査行列のタナーグラフである。
【図６】一次推定語生成部のブロック図である。
【図７】実施形態に係る検査行列の１例を示す図である。
【図８】比較例に係る検査行列を示す図である。
【図９】検査行列の生成の仕方に関する説明図である。
【図１０】基礎数列の説明図である。
【図１１】列重み及び行重みと符号化率の関係図である。
【図１２】符号化率Ｒ＝１／２の検査行列である。
【図１３】符号化率Ｒ＝２／３の検査行列である。
【図１４】符号化率Ｒ＝３／４の検査行列である。
【図１５】符号化率Ｒ＝１３／１６の検査行列である。
【図１６】ＢＥＲ特性図である。
【図１７】外部値対数比算出部の構成図である。
【図１８】行処理部の構成図である。
【図１９】最小値探索部の構成図である。
【図２０】最小値探索部の構成図である。
【図２１】最小値探索部の構成図である。
【図２２】従来の検査行列の生成方法の説明図である。
【発明を実施するための形態】
【００３１】
以下、本発明の実施形態を、図面を参照して説明する。
図１は、本発明の実施形態に係る復号装置（復号器）５を有する通信システムの構成の一例を示す図である。図１において、通信システムの送信側通信装置は、送信情報に誤り訂正用の冗長ビットを付加して送信符号を生成する符号化器１と、この符号化器１からの（Ｋ＋Ｍ）ビットの符号を所定の方式に従って変調して通信路３へ出力する変調器２とを含む。
【００３２】
符号化器１は、Ｋビットの情報に対し、パリティ計算用の冗長ビットＭビットを付加して、（Ｋ＋Ｍ）＝ＮビットのＬＤＰＣ符号（低密度パリティ検査符号）を生成する。
【００３３】
変調器２は、この通信路３の構成に応じて、振幅変調、位相変調、コード変調、周波数変調または直交周波数分割多重変調などの変調を行なう。たとえば、通信路３が、光ファイバの場合、変調器２においては、レーザダイオードの輝度を送信情報ビット値に応じて変更させることにより、光の強度変調（一種の振幅変調）を行なっている。たとえば、送信データビットが“０”の場合には、”＋１”に変換して、レーザダイオードの発光強度を強くして送信し、また送信データビットが“１”の場合、”−１”に変換して、レーザダイオードの発光強度を弱くして送信する。
【００３４】
通信システムの受信側通信装置は、通信路３を介して送信された変調信号に復調処理を施して、（Ｋ＋Ｍ）ビットのデジタル符号を復調する復調器４と、この復調器４からの（Ｋ＋Ｍ）ビットの符号にパリティ検査行列に基づく復号処理を施して元のＫビットの情報を再生する復号器（復号装置）５が設けられる。
【００３５】
復調器４は、この通信路３における送信形態に応じて復調処理を行なう。たとえば、振幅変調、位相変調、コード変調、周波数変調および直交周波数分割多重変調等の場合、復調器４において、振幅復調、位相復調、コード復調、および周波数復調等の処理が行なわれる。
【００３６】
図２は、通信路３が光ファイバの場合の変調器２および復調器４の出力データの対応関係を一覧にして示す図である。図２において、上述のように、通信路３が光ファイバの場合、変調器２においては、送信データが“０”のときには、”１”に変換され、送信用のレーザダイオード（発光ダイオード）の発光強度が強くなり、また送信データビットが“１”のときには、”−１”に変換され、レーザダイオードの発光強度を弱くして送信する。
【００３７】
この通信路３における伝送損失等により、復調器４に伝達される光強度は、最も強い強度から最も弱い強度までの間のアナログ的な強度分布を有する。復調器４においては、この入力された光信号に量子化処理（アナログ／デジタル変換）を行なって、この受光レベルを検出する。
図２においては、８段階に受光レベルが量子化された場合の受信信号強度を示す。すなわち、受光レベルがデータ“７”のときには、発光強度がかなり強く、受光レベルが“０”のときには、光強度がかなり弱い状態である。各受光レベルは、符号付きデータに対応づけられ、復調器４から出力される。この復調器４の出力は、受光レベルが“７”のときにはデータ“３”が出力され、受光レベルが“０”のときには、データ“−４”が出力される。したがってこの復調器４からは、１ビットの受信信号に対し、多値量子化された信号が出力される。
【００３８】
復号化器５は、この復調器４から与えられた（Ｋ＋Ｍ）ビットの受信情報（各ビットは、多値情報を含む）を入力し、sum-product復号法又はmin-sum復号法に従って低密度パリティ検査行列を適用して、元のＫビットの情報を復元する。
【００３９】
なお、この図２においては、復調器４において、８レベルに量子化されたビットが生成されている。しかしながら、一般に、この復調器４においては、Ｌ値（Ｌ≧２）に量子化されたビットを用いて復号処理を行なうことができる。
【００４０】
また、図２においては、比較器を用いて、あるしきい値を使って受信信号のレベルを判定し、２値信号を生成してもよい。
【００４１】
図３は、復号器５の構成を概略的に示す図である。この図３においては、復調器４および通信路３も併せて示す。復調器４は、通信路３から与えられた信号を復調する復調回路４ａと、この復調回路４ａにより生成されたアナログ復調信号をデジタル信号に変換するアナログ／デジタル変換回路４ｂを含む。
このアナログ／デジタル変換回路４ｂの出力データＸｎが復号器５へ与えられる。この復号器５へ与えられるデータＸｎは、Ｌ値（Ｌ≧２）のデータである。以下、データＸｎは、多値量子化データであるため、シンボルと称す。復号化器５は、この入力シンボルＸｎ系列に対しsum-product復号法又はmin-sum復号法などの復号法に従って復号処理を行なって符号ビットＣｎを生成する。
【００４２】
復号器５は、復調器４からの復調シンボルＸｎの対数尤度比λｎを生成する対数尤度比算出部６と、対数尤度比λｎ及びパリティ検査行列に基づく繰り返し演算によって復号演算処理を行う外部値対数比算出部（復号処理部）７と、外部値対数比算出部７によって算出された外部値対数比αｍｎ及び対数尤度比λｎに基づいて復号語を生成する復号語生成部１９９と、を含む。
【００４３】
対数尤度比算出部６は、この受信信号のノイズ情報と独立に、対数尤度比λｎを生成する。通常、ノイズ情報を考慮した場合、この対数尤度比λｎは、Ｘｎ／（２・σ・σ）で与えられる。ここで、σは、ノイズの分散を示す。
しかしながら、本実施の形態においては、この対数尤度比算出部６は、バッファ回路または定数乗算回路で形成され、対数尤度比λｎは、Ｘｎ・ｆで与えられる。ここで、ｆは非ゼロの正の数である。また、min-sum復号方法においては、検査行列に基づく復号処理（行処理）において、最小値を利用して演算を行なうため、信号処理において線形性が維持される。このため、ノイズ情報に従って出力データを正規化するなどの処理は不要である。この場合ノイズ情報を利用せずに、対数尤度比を算出することにより、回路構成が簡略化され、また計算処理も簡略化される。
【００４４】
ここでの外部値対数比算出部７は、min-sum復号方法によって復号処理を行うものとする。なお、復号法は、sum-product復号法でもよい。
外部値対数比算出部７は、次式（１）及び（２）に従って演算処理を行い、パリティ検査行列の行の各要素（非零要素：１）についての処理（行処理）、及び列についての各要素（非零要素：１）についての処理（列処理）を繰り返し実行する。
【数１】
2011072020.tif 000003
【００４５】
ここで、上式（１）および（２）それぞれにおいて、ｎ’∈Ａ（ｍ）＼ｎおよびｍ’∈Ｂ（ｎ）＼ｍは、自身を除く要素を意味する。
外部値対数比αｍｎについては、ｎ’≠ｎであり、事前値対数比βｍｎについては、ｍ’≠ｍである。また、αおよびβの行列内の位置を示す添え字“ｍｎ”は、通常は下付文字で示されるが、本明細書においては、読みやすさのために、「横並びの文字」で示す。
【００４６】
また、関数ｓｉｇｎ（ｘ）は、次式（３）で定義される。
【数２】
2011072020.tif 000004
【００４７】
また、集合Ａ（ｍ）およびＢ（ｎ）は、２元Ｍ・Ｎ行列Ｈ＝［Ｈｍｎ］を復号対象のＬＤＰＣ符号の検査行列とした場合、集合［１，Ｎ］＝｛１，２，…，Ｎ｝の部分集合である。
Ａ（ｍ）＝｛ｎ：Ｈｍｎ＝１｝ …（４）
Ｂ（ｎ）＝｛ｍ：Ｈｍｎ＝１｝ …（５）
【００４８】
すなわち、上記部分集合Ａ（ｍ）は、検査行列Ｈの第ｍ行目において１（非零要素）が立っている列インデックスの集合を意味し、部分集合Ｂ（ｎ）は、検査行列Ｈの第ｎ列目において１（非零要素）が立っている行インデックスの集合を示す。
【００４９】
具体的に、今、図４に示す検査行列Ｈを考える。この図４に示す検査行列Ｈにおいては、第１行の第１列から第３列に“１”が立ち、また第２行の第３列および第４列に“１”が立ち、また第３行の第４列から第６列に、“１”が立つ。したがって、この場合、部分集合Ａ（ｍ）は以下のようになる。
【００５０】
Ａ（１）＝｛１，２，３｝
Ａ（２）＝｛３，４｝
Ａ（３）＝｛４，５，６｝
【００５１】
同様に、部分集合Ｂ（ｎ）については、以下のようになる。
Ｂ（１）＝Ｂ（２）＝｛１｝
Ｂ（３）＝｛１，２｝
Ｂ（４）＝｛２，３｝
Ｂ（５）＝Ｂ（６）＝｛３｝
【００５２】
この検査行列Ｈにおいて、タナー（Tanner）グラフを用いた場合、列に対応する変数ノードと行に対応するチェックノードの接続関係が、この“１”により示される。これを、本明細書においては「“１”が立つ」と称している。すなわち、図５に示すように、変数ノード１，２，３は、チェックノードＸ（第１行）に接続され、変数ノード３，４が、チェックノードＹ（第２行）に接続される。変数ノード４，５，６が、チェックノードＺ（第３行）に接続される。この変数ノードが検査行列Ｈの列に対応し、チェックノードＸ，ＹおよびＺが、この検査行列Ｈの各行に対応する。従って、図４に示す検査行列は、情報ビットが３ビット、冗長ビットが３ビットの合計６ビットの符号長の符号に対して適用される。
【００５３】
ＬＤＰＣの検査行列Ｈでは、“１”の数は少なく、低密度の検査行列であり、これにより、計算量を低減できる。
【００５４】
この変数ノードとチェックノードの間で各条件確率Ｐ（Ｘｉ｜Ｙｉ）を伝播させ、ＭＡＰアルゴリズムに従って、もっともらしい符号を各変数ノードについて決定する。ここで、条件付確率Ｐ（Ｘｉ｜Ｙｉ）は、Ｙｉの条件下でＸｉとなる確率を示す。
【００５５】
再び、図３を参照して、外部値対数比αｍｎ及び対数尤度比λｎに基づいて復号語を生成する復号語生成部１９９は、一次推定語生成部１８０と、復号語決定部１９０とを含む。
【００５６】
図６は、一次推定語生成部１８０の構成を表す図である。
図６を参照して、一次推定語生成部１８０は、Ｑｎ算出部１４０と、Ｃｎ算出部１４１とを含む。
【００５７】
Ｑｎ算出部１４０は、対数尤度比算出部６からの対数尤度比λと、外部対数比算出部７からの外部値対数比αｍｎとを用いて、次式（６）に従って、推定受信語（Ｑ１，Ｑ２，・・・，ＱＮ）を算出する。
【数３】
2011072020.tif 000005
【００５８】
Ｃｎ算出部１４１は、次式（７）に従って、一次推定語（Ｃ１，Ｃ２，・・・，ＣＮ）を算出する。ここで、（Ｃ１，Ｃ２，・・・，ＣＮ）の標記は、Ｎビットの一次推定語の第１ビット（ＬＳＢ：Least Significant Bit）がＣ１であり、第２ビットがＣ２であり、第Ｎビット（ＭＳＮ）がＣＮであることを表す。
【００５９】
【数４】
2011072020.tif 000006
【００６０】
再び、図３を参照して、復号語決定部１９０は、一次推定語生成部１８０から一次推定語（Ｃ１，Ｃ２，・・・，ＣＮ）が符号語を構成しているかどうかを検査する。復号語決定部１９０は、次式（８）が成立する場合、つまり、シンドロームが“０”となる場合には、外部値対数比算出部７の繰り返し演算を終了させて、一次推定語（Ｃ１，Ｃ２，・・・，ＣＮ）のうちのＫビットの情報ビット部分、すなわち、（Ｃ１，Ｃ２，・・・，ＣＫ）を復号語として復号器５の外部に出力する。また、復号語決定部１９０は、ループの回数、つまり外部値対数比算出部７の演算の繰り返し回数が所定値を超えたときにも、外部値対数比算出部７の繰り返し演算を終了させて、一次推定語（Ｃ１，Ｃ２，・・・，ＣＮ）のうちのＫビットの情報ビット部分、すなわち、（Ｃ１，Ｃ２，・・・，ＣＫ）を復号語として復号器５の外部に出力する。
（Ｃ１，Ｃ２，・・・，ＣＮ）・Ｈｔ＝０（ただし、Ｈｔは、Ｈの転置を表す・・・（８）
【００６１】
以上のような本実施形態の復号器５は、複数の検査行列を使い分けて、複数の符号に対応することができる。本実施形態では、復号装置４は、符号化率の異なる複数の低密度パリティ検査符号を使い分けることができる。符号化率は、マルチレートに対応可能な通信装置における通信レートに応じて決定でき、高速のレートであれば符号化率を小さくし、低速のレートであれば符号化率を大きくする。なお、通信レートは、通信装置が検出したＳＮ比又はＣＩＮ比等の通信路品質に応じて決定され、復号装置は、決定された符号化率に対応する検査行列を用いて復号を行う。本実施形態では、異なる符号化率に対応するため、検査行列の行重みを変更する。
【００６２】
［検査行列について］
さて、図７は、本実施形態の復号器５において用いられるＬＤＰＣ符号の検査行列Ｈ９６の具体例を示している。図７の検査行列Ｈ９６は、符号長Ｎ＝９６、行重みｗｒ＝６、列重みｗｃ＝３の正則な検査行列（行列サイズ＝４８×９６）を示している。図７においては、検査行列の「１」（非零要素）のあるところは、点で示されている。図７の検査行列Ｈ９６において、非零要素を示す点は２８８個ある。
【００６３】
また、比較例として、図８に、図２２に示すＧａｌｌａｇｅｒの方法（乱数ベースの方法）で生成した同サイズの正則検査行列を示した。なお、図８の検査行列は、行重みｗｒ及び列重みｗｃも、図７のものと同様である。
図８の検査行列は、規則性がないため、この検査行列を表現するための情報としては、少なくとも２０１６ビットが必要である。つまり、図８の検査行列を表現するためには、各行における点の位置（列番号；列インデックス）を列挙しておき、１行当たりの点数が６個であることを利用して、各行内で列挙された点の位置を記録すれば各行を再現することができる。したがって、この方式では、それぞれの点が、１〜９６の数値をとり、１点あたり７ビット必要であるため、２８８点で、７×２８８×＝２０１６が必要である。
【００６４】
一方、本実施形態に係る図７の検査行列Ｈ９６では、符号長Ｎに対して互いに素である３つの数値Ａ１，Ａ２，Ａ３で表現することができる。ここで、数値Ａ１，Ａ２，Ａ３は、符号長Ｎよりも小さい値をとるものとすると、一つの数値は７ビットで表現できるため、７×３＝２１ビットで足り、Ｎを加えても、７×４＝２８ビットで足りることになる。なお、本実施形態において、数値Ａ１〜Ａ３は、列重みｗｃに対応した個数が用意される。
なお、Ｎに対して互いに素である複数の数値Ａ１，Ａ２，Ａ３を区別せずに総称する場合は、単に「数値Ａ」という。
【００６５】
図７の検査行列Ｈ９６は列重みｗｃが３であることに対応して、検査行列Ｈ９６を行方向に３つに分割した部分行列（ブロック）Ｈ１〜Ｈ３としてみた場合に、図９に示すように、第１ブロックＨ１は数値Ａ１によって、第２ブロックＨ２は数値Ａ２によって、第３ブロックは数値Ａ３によって生成される。つまり、それぞれのブロックは、数値Ａが与えられることで構成できる。また、Ｎに対して互いに素である数値ＡをＡ１〜Ａ３のように異ならせることで、非零要素の配置が異なる複数のブロックＨ１〜Ｈ３を生成できる。
【００６６】
図７の検査行列Ｈ９６において、各ブロックＨ１〜Ｈ３は、列重みが１であり、行重みが６の部分行列となっており、これらのブロックＨ１〜Ｈ３を結合することで、図７の検査行列Ｈ９６が得られる。
図７の各ブロックＨ１〜Ｈ３では、斜め方向を向く点（非零要素）の列が、略一定間隔をおいて略規則正しく並んでいる。点の列の傾きや点の列の間隔はブロックＨ１〜Ｈ３ごとに異なる。
【００６７】
図７の各ブロックＨ１〜Ｈ３では、一見すると（マクロ的にみると）、斜め方向を向く点の列が、直線的に並んでいるようにみえる。しかし、図７の点の列は、厳密にみると（ミクロ的にみると）、直線的に点（非零要素）が並んでいるのではなく、やや蛇行しながら並んでいる。前述のように各ブロックＨ１〜Ｈ３の列重みは、それぞれ１であり、各ブロックＨ１〜Ｈ３において一つの列位置には一つの点（非零要素）しか存在しないようにするため、点の列がやや蛇行したり、点の列を構成する点の間隔が異なっていたりする。
【００６８】
図７の検査行列Ｈ９６では、点の列が略等間隔であり、しかも、点（非零要素）の分布が検査行列全体で一様な疎行列となっているため、訂正能力に悪影響を与える短いサイクルが発生しにくく、良好な訂正能力が得られる。
【００６９】
［本実施形態に係る検査行列の生成規則］
本実施形態の復号器５は、上記のような特性を持つ検査行列Ｈ９６を用いて復号を行う。この検査行列Ｈ９６の第１ブロックＨ１の生成規則は、次のとおりである。なお、各ブロックＨ１〜Ｈ３に含まれる行数Ｐは、Ｐ＝行長さＭ／列重みｗｒ＝４８／３＝１６である。
【００７０】
（０：行重み変更ステップ）通信レートに応じて行重みｗｒを決定する。
（１）符号長（検査行列の列方向長さ）をＮとする。
（２）Ｎと互いに素である数値をＡ１とする。
（３）変数ｘが、初期値ｘ１から（ｘ１＋（Ｎ−１））になるまで下記（３−１）（３−２）の処理を繰り返す（Ｎ回の繰り返し処理）。なお、ここでは、初期値ｘ１＝１とする。
（３−１：位置算出ステップ）ｍｏｄ（Ａ１×ｘ，Ｎ）を計算し、その結果に１を加える。つまり、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”を計算する。なお、ｍｏｄ（Ａ１×ｘ，Ｎ）は、（Ａ１×ｘ）をＮで割ったときの剰余を求める関数である。
（３−２：配置ステップ）第１ブロックＨ１中の、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の結果（列インデックス）が示す列位置に非零要素「１」を配置する。例えば、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の演算結果が「１０」であれば、指定された行の１０列目に「１」を立てる。「１」が配置される行は、第１ブロックＨ１の１行目からＰ行目まで順次切り替わる。各行には、行重みｗｒに対応した数の「１」が順次配置され、一つの行に、行重み分の数の「１」を立てたら、次の行に移って、同様に行重み分の数の「１」を立てる。
【００７１】
ここで、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”によって算出された数は、検査行列において「１」が配置されるべき列位置（列インデックス）を示しており、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の値が示す列位置に「１」が立てられる。
【００７２】
Ａ１とＮとは互いに素な数であるため、ｘが１〜（Ｎ−１）までの数値をとる場合、Ａ１×ｘがＮによって割り切れることはない。つまり、ｘが１〜（Ｎ−１）までの数値をとる場合、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”は、２〜Ｎまでの数値を唯一１回のみ発生することになる。そして、ｘ＝Ｎになると、Ａ１×ｘがＮによって割り切れ、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の演算結果が１となる。
【００７３】
このように、ｘが１〜Ｎまでの数値をとると、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”は、１〜Ｎまでの数値を唯一１回のみ発生する。
つまり、Ｎ回の計算結果として、１〜Ｎまでの数値を重複させることなく、全ての値を生成でき、このため、この計算結果を基に、検査行列（の各ブロックＨ１〜Ｈ３）に非零要素「１」を配置すれば、それぞれのブロックには、全ての列に対して、それぞれ１点のみ非零要素「１」を配置することができる。
【００７４】
なお、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の式において、本質的な演算は、“ｍｏｄ（Ａ１×ｘ，Ｎ）”である。“＋１”は、“ｍｏｄ（Ａ１×ｘ，Ｎ）”の演算結果（０〜Ｎ−１の範囲をとる）を、検査行列の列インデックス（１〜Ｎの範囲をとる）に対応させるための変換処理である。したがって、例えば、検査行列の列インデックスの範囲を（０〜Ｎ−１）にするのであれば、“＋１”の演算は不要である。
【００７５】
また、上記生成規則では、ｘの初期値ｘ１を１としたが、例えば、その他の数値としてもよい。例えば、ｘを０〜Ｎ−１の範囲で繰り返しても良い。ｘの初期値を調整すると、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の計算で生成される数値がずれるが、１〜Ｎまでの数値を唯一１回のみ発生することには変わりなく、ｘの初期値を調整しても同様な性質の検査行列が得られる。
【００７６】
さて、以下では、前記位置算出ステップ３−１及び前記配置ステップ３−２をより具体的に説明する。なお、ここでは、Ｎ＝９６，Ａ１＝２９とする。また、Ｎ＝９６とＡ１＝２９とは互いに素である。
前記位置算出ステップ３−１を初期値ｘ１から６回（行重みの値）まで繰り返すと、下記のように｛３０，５９，８８，２１，５０，７９｝の計６個の数が求まる。
ｍｏｄ（２９×１，９６）＋１＝３０
ｍｏｄ（２９×２，９６）＋１＝５９
ｍｏｄ（２９×３，９６）＋１＝８８
ｍｏｄ（２９×４，９６）＋１＝２１
ｍｏｄ（２９×５，９６）＋１＝５０
ｍｏｄ（２９×６，９６）＋１＝７９
【００７７】
配置ステップ３−２では、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”が求まると、順次、検査行列（の第１ブロックＨ１）中に「１」を立てていく。つまり、第１ブロックＨ１の１行目から開始し、当該１行目の３０列目、５９列目、８８列目、２１列目、５０列目、７９列目に、「１」を立てる。ここでは、行重みｗｒ＝６であるから、６回の繰り返しで、１行目に「１」を配置できたことになる。
【００７８】
１行目への「１」の配置が完了すると、次の行に「１」を配置する。つまり、７回目（ｘ＝７）〜１２回目（ｘ＝１２）の繰り返しでは、２行目について、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”が示す列位置に「１」を立てていく。
同様に、１３回目〜１８回目の繰り返しでは、３行目に「１」を立て、以下、これを繰り返していき、第１ブロックＨ１を構成する１行目〜Ｐ行目（１６行目）までにＮ個の「１」を立てることができる。
【００７９】
上記生成規則は、数値Ａ２によって生成される第２ブロックＨ２、数値Ａ３によって生成される第３ブロックにも適用される。この場合、上記生成規則の「Ａ１」を「Ａ２」乃至「Ａ３」に置きかえれば良い。また、上記生成規則の「Ａ１」を「Ａ１」に限定しないように抽象化するには、上記生成規則の「Ａ１」を「Ａ」とすればよい。
【００８０】
したがって、検査行列Ｈ９６の第２ブロックＨ２を構成する（Ｐ＋１）行目〜（２×Ｐ）行目には、変数Ａ２を用いた位置算出ステップの演算結果に基づき、Ｎ個の「１」が立てられる。また、検査行列Ｈ９６の第３ブロックＨ３の（２×Ｐ＋１）行目〜（３×Ｐ）行目には、変数Ａ３を用いた位置算出ステップの演算結果に基づき、Ｎ個の「１」が立てられる。
【００８１】
以下は、検査行列Ｈ９６の第１ブロックＨ１を数値Ａ１＝２９で、第２ブロックＨ２を数値Ａ２＝３１で、第３ブロックＨ３を数値Ａ３＝３７で、位置算出ステップを実行した場合の演算結果を示している。
【００８２】
第１ブロックＨ１
１行目：３０，５９，８８，２１，５０，７９
２行目：１２，４１，７０，  ３，３２，６１
３行目：９０，２３，５２，８１，１４，４３
４行目：７２，  ５  ３４，６３，９２，２５
５行目：５４，８３，１６，４５，７４，  ７
６行目：３６，６５，９４，２７，５６，８５
７行目：１８，４７，７６，  ９，３８，６７
８行目：９６，２９，５８，８７，２０，４９
９行目：７８，１１，４０，６９，  ２，３１
１０行目：６０，８９，２２，５１，８０，１３
１１行目：４２，７１，  ４，３３，６２，９１
１２行目：２４，５３，８２，１５，４４，７３
１３行目：  ６，３５，６４，９３，２６，５５
１４行目：８４，１７，４６，７５，  ８，３７
１５行目：６６，９５，２８，５７，８６，１９
１６行目：４８，７７，１０，３９，６８，  １
【００８３】
第２ブロックＨ２
１７行目：３２，６３，９４，２９，６０，９１
１８行目：２６，５７，８８，２３，５４，８５
１９行目：２０，５１，８２，１７，４８，７９
２０行目：１４，４５，７６，１１，４２，７３
２１行目：  ８，３９，７０，  ５，３６，６７
２２行目：  ２，３３，６４，９５，３０，６１
２３行目：９２，２７，５８，８９，２４，５５
２４行目：８６，２１，５２，８３，１８，４９
２５行目：８０，１５，４６，７７，１２，４３
２６行目：７４，  ９，４０，７１，  ６，３７
２７行目：６８，  ３，３４，６５，９６，３１
２８行目：６２，９３，２８，５９，９０，２５
２９行目：５６，８７，２２，５３，８４，１９
３０行目：５０，８１，１６，４７，７８，１３
３１行目：４４，７５，１０，４１，７２，  ７
３２行目：３８，６９，  ４，３５，６６，  １
【００８４】
第３ブロックＨ３
３３行目：３８，７５，１６，５３，９０，３１
３４行目：６８，  ９，４６，８３，２４，６１
３５行目：  ２，３９，７６，１７，５４，９１
３６行目：３２，６９，１０，４７，８４，２５
３７行目：６２，  ３，４０，７７，１８，５５
３８行目：９２，３３，７０，１１，４８，８５
３９行目：２６，６３，  ４，４１，７８，１９
４０行目：５６，９３，３４，７１，１２，４９
４１行目：８６，２７，６４，  ５，４２，７９
４２行目：２０，５７，９４，３５，７２，１３
４３行目：５０，８７，２８，６５，  ６，４３
４４行目：８０，２１，５８，９５，３６，７３
４５行目：１４，５１，８８，２９，６６，  ７
４６行目：４４，８１，２２，５９，９６，３７
４７行目：７４，１５，５２，８９，３０，６７
４８行目：  ８，４５，８２，２３，６０，  １
【００８５】
このようにして得られた（Ｎ×３）個の数値（列位置）に「１」（図７の点）を配置したものが、図７に示す検査行列Ｈ９６である。
上記からも明かであるように、上記生成規則の配置ステップ３−２は、Ｎ個（＝９６個）
Ｎ個の演算結果からなる数列を、検査行列Ｈ９６の行重ｗｒの数（＝６）からなるＰ個（＝１６個）の部分数列Ｓ１〜ＳＰに分割し、Ｐ個の部分数列Ｓ１〜ＳＰに含まれる数を非零要素の列位置として、対応するＰ個の行（１行目〜Ｐ行目）に非零要素を配置して各ブロックＨ１〜Ｈ３を生成するものということができる。
【００８６】
なお、算出された（Ｎ×３）個の列位置を示す数値と図７の点との対応を容易にするため、各行の数値（列位置）を、左から小さい順に並び替えたものを下記に示す。
第１ブロックＨ１
１行目：２１，３０，５０，５９，７９，８８
２行目：  ３，１２，３２，４１，６１，７０
３行目：１４，２３，４３，５２，８１，９０
４行目：  ５，２５，３４，６３，７２，９２
５行目：  ７，１６，４５，５４，７４，８３
６行目：２７，３６，５６，６５，８５，９４
７行目：  ９，１８，３８，４７，６７，７６
８行目：２０，２９，４９，５８，８７，９６
９行目：  ２，１１，３１，４０，６９，７８
１０行目：１３，２２，５１，６０，８０，８９
１１行目：  ４，３３，４２，６２，７１，９１
１２行目：１５，２４，４４，５３，７３，８２
１３行目：  ６，２６，３５，５５，６４，９３
１４行目：  ８，１７，３７，４６，７５，８４
１５行目：１９，２８，５７，６６，８６，９５
１６行目：  １，１０，３９，４８，６８，７７
【００８７】
第２ブロックＨ２
１７行目：２９，３２，６０，６３，９１，９４
１８行目：２３，２６，５４，５７，８５，８８
１９行目：１７，２０，４８，５１，７９，８２
２０行目：１１，１４，４２，４５，７３，７６
２１行目：  ５，  ８，３６，３９，６７，７０
２２行目：  ２，３０，３３，６１，６４，９５
２３行目：２４，２７，５５，５８，８９，９２
２４行目：１８，２１，４９，５２，８３，８６
２５行目：１２，１５，４３，４６，７７，８０
２６行目：  ６，  ９，３７，４０，７１，７４
２７行目：  ３，３１，３４，６５，６８，９６
２８行目：２５，２８，５９，６２，９０，９３
２９行目：１９，２２，５３，５６，８４，８７
３０行目：１３，１６，４７，５０，７８，８１
３１行目：  ７，１０，４１，４４，７２，７５
３２行目：  １，  ４，３５，３８，６６，６９
【００８８】
第３ブロックＨ３
３３行目：１６，３１，３８，５３，７５，９０
３４行目：  ９，２４，４６，６１，６８，８３
３５行目：  ２，１７，３９，５４，７６，９１
３６行目：１０，２５，３２，４７，６９，８４
３７行目：  ３，１８，４０，５５，６２，７７
３８行目：１１，３３，４８，７０，８５，９２
３９行目：  ４，１９，２６，４１，６３，７８
４０行目：１２，３４，４９，５６，７１，９３
４１行目：  ５，２７，４２，６４，７９，８６
４２行目：１３，２０，３５，５７，７２，９４
４３行目：  ６，２８，４３，５０，６５，８７
４４行目：２１，３６，５８，７３，８０，９５
４５行目：  ７，１４，２９，５１，６６，８８
４６行目：２２，３７，４４，５９，８１，９６
４７行目：１５，３０，５２，６７，７４，８９
４８行目：  １，  ８，２３，４５，６０，８２
【００８９】
各行に対応する部分数列Ｓ１〜Ｓ４８に含まれる数を小さい順に置きかえた上記結果から明らかなように、第１ブロックＨ１においては、数を小さい順に置きかえた数列の隣り合う数の差が、９前後の値又は２０前後の値となっている。このため、図７に示すように、第１ブロックＨ１では、斜め方向の「点の列」の間隔が、列方向に約１０となっている。
また、第２ブロックＨ２においては、数を小さい順に置きかえた数列の隣り合う数の差が、３前後の値又は２８前後の値となっている。このため、図７に示すように、第２ブロックＨ２では、斜め方向の「点の列」の間隔が、列方向に約３０となっている。
さらに、第３ブロックＨ３においては、数を小さい順に置きかえた数列の隣り合う数の差が、７前後の値、１５前後の値、又は２２前後の値となっている。このため、図７に示すように、第３ブロックＨ３では、斜め方向の「点の列」の間隔が、列方向に約７となっている。
なお、第１〜第３ブロックＨ１，Ｈ２，Ｈ３では、数値Ａ１，Ａ２，Ａ３がそれぞれ異なることから、「点の列」の傾きも、それぞれ異なる。
【００９０】
［本実施形態に係る検査行列の性質］
本実施形態に係る検査行列Ｈ９６の性質は、以下の通りである。
ここで、上記のように“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”をｘ＝１〜ＮまでＮ回繰り返して得られた演算結果を、その算出順に並べた数列Ｓとして考え、下記のように表現する。なお、以下では、｛｝を、数列を囲む記号として用いる。
数列Ｓ：｛ｙ１，ｙ２，・・・，ｙＮ｝
【００９１】
また、第１ブロックＨ１を構成する１行目〜Ｐ行目までの各行における非零要素の列位置を示す部分数列Ｓ１〜ＳＰを、下記のように表現する。
１行目に対応する部分数列  Ｓ１：｛ｙ１，ｙ２，・・・，ｙ６｝
２行目に対応する部分数列  Ｓ２：｛ｙ７，ｙ８，・・・，ｙ１２｝
・                              ・
・                              ・
・                              ・
Ｐ−１行目に対応する部分数列ＳＰ−１：｛ｙＮ−１１，ｙＮ―１０，・・・，ｙＮ−６｝
Ｐ行目に対応する部分数列  ＳＰ：｛ｙＮ−５，ｙＮ−４，・・・，ｙＮ｝
【００９２】
前記数列Ｓは、部分数列Ｓ１〜ＳＰを用いると、部分数列Ｓ１〜ＳＰの連結数列として表現でき、具体的には下記のとおりである。
数列Ｓ＝｛ｙ１，ｙ２，・・・，ｙＮ｝＝｛Ｓ１，Ｓ２，・・・，ＳＰ−１，ＳＰ｝
【００９３】
上記の部分数列Ｓ１〜ＳＰは、位置算出ステップにおける演算処理内容から明らかなように、次の性質（１）（２）を有する。
（性質１）前記部分数列Ｓ１〜ＳＰは、行ごとに異なるものである。
（性質２）前記部分数列Ｓ１〜ＳＰに含まれる数は、１〜Ｎの自然数である。
【００９４】
さらに、部分数列Ｓ１〜ＳＰは、公差がＡ１である等差数列となっている（性質３）。
これは、ｍｏｄ（Ａ１×ｘ，Ｎ）の演算で、ｘを１つずつ増加させると、Ａ１×ｘは、Ａ１（＝２９）ずつ大きくなり、ｍｏｄ（Ａ１×ｘ，Ｎ）によって算出される剰余もＡ１（＝２９）ずつ大きくなるからである。
【００９５】
例えば、第１行目に対応する第１部分数列Ｓ１は、前述のように｛３０，５９，８８，２１，５０，７９｝である。この場合、第１部分数列Ｓ１の第１項の「３０」と、これと隣り合う第２項の「５９」との間の差は、Ａ１＝２９である。
他の項についても同様に差が２９であるが、第４項の「８８」と第５項の「２１」との間の差は、「−６７」であり、「２９」ではない。
これは、ｍｏｄ（Ａ１×ｘ，Ｎ）という剰余を求める演算の性質上、ｍｏｄ（Ａ１×ｘ，Ｎ）の演算結果がＮを超えず、ｘを順次増加させると、ｍｏｄ（Ａ１×ｘ，Ｎ）も増加するものの、１〜Ｎの間で循環的に増加するからである。
【００９６】
ｍｏｄ（Ａ１×ｘ，Ｎ）が１〜Ｎの間で循環的に増加するという前提の下では、数列中の隣り合う数の差がＡ１でなくても、当該差（第１部分数列Ｓ１の第４項の「８８」と第５項の「２１」との間の差の場合「−６７」）にＮ＝９６を加えた値が、Ａ１であれば、差はＡ１とみなしてよい。
このような例外は、他の部分数列Ｓ２〜ＳＰにおいても存在するが、このような例外について数値間の差を、Ａ１であるとみなすことで、全ての部分数列Ｓ１〜ＳＰは、「公差Ａ１の等差数列である」ということができる。
【００９７】
つまり、上記（性質３）を言い換えると次の通りである。
（性質３）部分数列Ｓ１〜ＳＰは公差がＡ１である等差数列である（ただし、当該部分数列Ｓ１〜ＳＰに含まれる任意の数ｙＡと当該数ｙＡに隣り合う数ｙＢとの差がＡでない場合があっても、ｙＡと（ｙＢ＋Ｎ）との差がＡであれば、ｙＡとｙＢの差はＡであるとみなす）。
【００９８】
さらに、Ａ１とＮが互いに素であるという条件から、部分数列Ｓ１〜ＳＰは、次の性質も有する。
（性質４）同一の公差Ａを持つ複数の等差数列（部分数列Ｓ１〜ＳＰ）において、１〜Ｎの自然数それぞれの出現回数は、１回以内である。
【００９９】
また、上記生成規則に従って生成した検査行列Ｈ９６の部分数列Ｓ１〜ＳＰは、次の性質も有する。
（性質５）Ｐ個の部分数列Ｓ１〜ＳＰは、連結数列ＳをＰ分割したものである。
（性質６）Ｐ個の部分数列Ｓ１〜ＳＰは、前記連結数列ＳにおけるＰ個の前記部分数列Ｓ１〜ＳＰの並び順と、Ｐ個の連続する行（１行目〜Ｐ行目）の並び順と、が一致するように、前記検査行列Ｈ９６に含まれるＰ個の連続する行（１行目〜Ｐ行目）に、それぞれ割り当てられている。
【０１００】
また、上記生成規則に従って生成した連結数列Ｓは、次の性質を有する。
（性質７）前記連結数列Ｓは、Ｐ個の連続する行（１行目〜Ｐ行目）に含まれる非零要素の総数に対応した個数の「数」を有する。
（性質８）前記連結数列Ｓに含まれる数は、１〜Ｎの自然数である。
（性質９）前記連結数列Ｓにおいて、１〜Ｎの自然数それぞれの出現回数は、１回以内である。
（性質１０）前記連結数列Ｓは、公差がＡ１である等差数列である（ただし、当該連結数列に含まれる任意の数ｙＡと当該数ｙＡに隣り合う数ｙＢとの差がＡ１でない場合があっても、ｙＡと（ｙＢ＋Ｎ）との差がＡ１であれば、ｙＡとｙＢの差はＡ１であるとみなす）。
【０１０１】
上記（性質１０）に示すように、数列Ｓ：｛ｙ１，ｙ２，・・・，ｙＮ｝も公差がＡ１である等差数列である。これは、（性質３）同様、ｍｏｄ（Ａ１×ｘ，Ｎ）という剰余を求める演算の性質上、明かである。
【０１０２】
なお、（性質６）は、生成規則の配置ステップ３−２において、当該（性質６）を満たすように、「１」が配置される行を、第１ブロックＨ１の１行目からＰ行目まで順次切り替えることによって成立する性質であるため、例えば、まず、１行目からＰ行目までの奇数行に順次切り替えて「１」を配置し、その後、１行目からＰ行目までの偶数行に順次切り替えて「１」を配置するといった切り替えルールを採用した場合には、（性質６）は成立しない。
また、性質１〜１０を満たす検査行列を生成した後、検査行列に含まれる行（列）同士の行置換（列置換）を行った場合も、（性質６）が失われる。
ただし、このような特殊な切り替えルールを採用しても、数値Ａ１から、性質１〜４を満たすブロックが生成されることに変わりはない。
また、上記のような場合、上記（性質６）を下記のように言い換えることで、行置換等を行って上記（性質５）を満たさなくなった場合も、性質５〜１０を満たすということができる。
【０１０３】
（性質６）Ｐ個の数列は、前記検査行列に含まれるＰ個の行又はＰ個の列に、それぞれ割り当てられている。
【０１０４】
なお、上記性質１〜１０は、第１ブロックＨ１の数列群Ｓ１〜ＳＰについて説明したが、他のブロックＨ２，Ｈ３の数列群についても同様に成り立つ。つまり、他のブロックＨ２，Ｈ３は、Ｎと互いに素である数値が、第１ブロックＨ１と異なるだけであり、その他の点は、第１ブロックＨ１と同様に生成されたものだからである。
したがって、性質１〜１０は、検査行列Ｈ９６全体で成り立つ。また、性質１〜１０は、符号長Ｎに関係なく成立するため、性質１〜１０は、任意の符号長（列長さ）の検査行列Ｈに、一般化できる。
【０１０５】
［数値Ａ１，Ａ２，Ａ２の決定方法］
検査行列Ｈ９６を生成するための生成情報である数値Ａ１，Ａ２，Ａ３の決定手順は、例えば、下記の通りである。ここで、数値Ａ１，Ａ２，Ａ３は、それぞれ、Ｎと互いに素な数値である。また、数値Ａ１，Ａ２，Ａ３は、それぞれ異なる数値である。なお、ここでは、数値Ａ１，Ａ２，Ａ３＜Ｎとする。
【０１０６】
（決定手順１）集合１を作成する。
Ｎを因数分解することで得られた数の集合を集合１とする。Ｎが９６の場合、集合１は、（２，２，２，２，２，３）である。
【０１０７】
（決定手順２）集合２を作成する。
Ｎまでの素数を集合２とする。Ｎが９６の場合、集合２は、（２，３，５，７，１１，１３，１７，１９，２３，２９，３１，３７，４１，４３，４７）である。
【０１０８】
（決定手順３）集合３を作成する。
集合２より集合１の要素を取り除いたものを集合３とする、Ｎが９６の場合、集合２は、（５，７，１１，１３，１７，１９，２３，２９，３１，３７，４１，４３，４７）である。
【０１０９】
（決定手順４）数値Ａ１，Ａ２，Ａ３の候補の組の集合を作る。
集合３より、列重みｗｃ（＝３）に相当する数の要素を取りし、それらの３つの数値Ａ１，Ａ２，Ａ３の組を候補の一つとする。候補は、集合３の要素数が１３個あることから、１３Ｃ３＝２８６通りできる。２８６通りの候補を集合４とする。
【０１１０】
（決定手順５）集合４より、候補の組（Ａ１，Ａ２，Ａ３）を一つ取り出し、上記生成規則に従って、検査行列を生成する。
【０１１１】
（決定手順６）決定手順５で生成された検査行列の評価を行う。評価は、サイクルの有無、行列のランクの計算、行列の重み分布の評価、Ｓｔｏｐｐｉｎｎｇ  Ｓｅｔの分布などによって行うことができる。
【０１１２】
（決定手順６）決定手順５，６を２８６個の候補すべてについて行い、優れた訂正能力を有する検査行列を生成できる候補の組（Ａ１，Ａ２，Ａ３）を決定する。
【０１１３】
Ｎと互いに素である数値Ａを使って検査行列を生成する本実施形態の方法においては、決定手順５のような評価を行わなくても、ある程度の訂正能力が得られるが、決定手順５のように評価を介在させることで、特に優れた検査行列を選択することができる。
また、Ｎと互いに素である数値Ａを使って検査行列を生成する本実施形態の方法においては、上記の決定手順に従うことで、大量の候補の組（Ａ１，Ａ２，Ａ３）をコンピュータ演算によって自動的に生成することができる。よって、多数の候補について評価を行うことができ、当該評価を経て決定された数値（Ａ１，Ａ２，Ａ３）は、訂正能力が非常に優れた検査行列を生成するものとなることが期待できる。
【０１１４】
なお、上記決定手順では、Ａ（Ａ１，Ａ２，Ａ３）として、素数が選ばれるが、Ａとしては、複数の素数の積となる数であってもよく、Ｎと互いに素である数は、素数に限定されるものではない。
【０１１５】
［検査行列の生成情報について］
本実施形態の検査行列の上記生成規則によれば、復号器５が、当該生成規則に従って検査行列を生成するには、少なくとも列重みｗｃに対応した数の数値Ａ１，Ａ２，Ａ３が検査行列の生成情報としてあれば良い。従って、復号器５は、検査行列に含まれる全ての「１」の位置を示す情報を記憶していなくとも、より少ない数の数値Ａ１，Ａ２，Ａ３を記憶しておくことで、前記生成規則を実行する生成部（図示省略）によって、当該数値Ａ１，Ａ２，Ａ３を用いて、動的に検査行列を生成することができる。
【０１１６】
また、復号器５が、生成規則に従って検査行列を生成するには、数値Ａ１，Ａ２，Ａ３のほか、検査行列の符号長（検査行列の列方向長さ）Ｎが、検査行列の生成情報として必要である。
また、上記生成規則に従って、検査行列に「１」を立てるには、１つの行に含まれる「１」の個数（行重み）ｗｒも、検査行列の生成情報として必要である。この行重みｗｒの情報を用いることで、異なる符号化率に対応する複数の検査行列を生成することができる。
【０１１７】
以下、Ｎのように検査行列のサイズに関するパラメータや、ｗｒのように「１」の数に関するパラメータについて、考察する。
まず、正則検査行列において、列方向長さ（符号長）をＮ、行方向長さをＭ、１行当たりの「１」の個数（行重み）をｗｒ、１列当たりの「１」の個数（列重み）をｗｃとする。この検査行列に含まれる「１」の全数は、次のように表現される。
（１の全数）＝ｗｒ×Ｍ＝ｗｃ×Ｎ
上記式より、Ｍ／Ｎ＝ｗｃ／ｗｒが成り立つ。
【０１１８】
また、符号化率をＲとし、情報記号数をＫとすると、
符号化率Ｒ＝Ｋ／Ｎ
＝（Ｎ−Ｍ）／Ｎ
＝１−Ｍ／Ｎ
＝１−ｗｃ／ｗｒ
となる。
上記式において、Ｍ／Ｎは、検査行列のサイズを示しており、ｗｃ／ｗｒは「１」を立てる割合を示している。
【０１１９】
ここで、復号器５を有する通信装置が、符号化率Ｒ及び符号長Ｎを、固定の値で通信を行うことを前提とした場合、復号器５は、数値Ａ１，Ａ２，Ａ３を取得するだけで、様々な検査行列を生成することができる（Ｎやｗｒは復号器５にとって既知であるから）。
つまり、前述のように、復号器５は、復号器５（通信装置）が備えている記憶部（図示省略）に記憶された数値Ａ１，Ａ２，Ａ３を、当該記憶部から取得し、前記生成規則に従って検査行列を生成して復号を行うことができる。この場合、復号器５が、複数種類の検査行列を記憶しておく場合でも、検査行列を記憶するためのメモリの大きさを小さくできる。
特に、ＷｉＭＡＸなどの規格（通信方式）では、複数の異なる検査行列を使い分けることが要求されており、このようなシステムにおいて、上記検査行列を活用する事は、複数の検査行列を記憶するメモリを削減する上でメリットは大である。
【０１２０】
また、復号器５の外部から数値Ａ１，Ａ２，Ａ３を取得（例えば、他の復号器から通信路を介して受信）し、前記生成規則に従って検査行列を生成して復号を行うこともできる。この場合、検査行列の情報を、復号器（通信装置）間で、通信によってやりとりすることで、エラー状況などの通信状況に応じて検査行列を通信中に変更することができる。しかも、検査行列の情報を他の復号装置に送っても、検査行列を少ない情報で表現できるため、通信負荷の増大を防止できる。
【０１２１】
一方、復号器５を有する通信装置が、符号化率Ｒを通信状況に応じて変化させる場合、例えば、Ｎやｗｃを固定値とした場合、上記式によれば、ｗｒを復号器（通信装置）間で通信によって通知し合うことで、実現できる。つまり、ｗｒを変更することで、符号化率を変更できる。そして、１行当たりの「１」の数をｗｒに応じて決定して、検査行列を生成すればよい。
つまり、本実施形態の復号器５（通信装置）には、通信品質状況（エラー状況）に応じて変動する符号化率に応じてｗｒを決定し、それを他の復号器５（通信装置）へ送信する機能を具備させることができる。そして、ｗｒを受信した復号器５（通信装置）は、数値Ａのほか、受信したｗｒを用いて、検査行列を生成することができる。
【０１２２】
［符号化率Ｒと行重みｗｒの関係］
図１０は、符号化率Ｒと行重みの関係を示す図である。まず、検査行列全体に含まれる“１”の列位置を示す数列を「基礎数列」というものとすると、基礎数列は、前述の検査行列Ｈ９６は、数値Ａ１によって生成される第１の連結数列（公差がＡ１の等差数列）Ｓ、数値Ａ２によって生成される第２の連結数列（公差がＡ２の等差数列）Ｓ、及び数値Ａ３によって生成される第３の連結数列（公差がＡ３の等差数列）Ｓを連結したものである。
【０１２３】
ここで、基礎数列を構成する連結数列Ｓの個数ｊは、列重みｗｃ以上である。つまり、連結数列Ｓに含まれる数の個数がＮ個である場合、連結数列Ｓの個数ｊは列重みｗｃに等しい。また、連結数列Ｓに含まれる数の個数が、Ｎ個未満である場合、連結数列Ｓの個数ｊは列重みｗｃよりも多く必要である。
【０１２４】
そして、前述のように、ｊ個の連結数列Ｓ，Ｓ，Ｓは、それぞれ、Ｐ個の部分数列Ｓ１〜ＳＰから構成されている。各部分数列Ｓ１〜ＳＰは、検査行列の各行に対応し、部分数列の総数Ｐ×ｊと検査行列の行数は同じであるから、検査行列の行数Ｍは、Ｐ×ｊとなる。
また、部分数列の個数Ｐは、連結数列の長さＮを、１個の部分数列の長さｗｒで割った数に等しい。したがって、Ｍ＝Ｎ・ｊ／ｗｒである。
【０１２５】
したがって、１個の部分数列の長さ（行重み；１行あたりの“１”の個数）ｗｒを変えると、検査行列の行数Ｍが変わる。つまり、検査行列の列数（符号長）Ｎを変えずに、行数（冗長ビット数）Ｍを変えることができる。
ここで、符号化率Ｒ＝１−Ｍ／Ｎであるから、Ｍを変えることで、符号化率Ｒを変更することにある。
このように、本実施形態では、符号化率が異なる検査行列が、共通の基礎数列に基づいて、行重みを変更することで得られる。したがって、異なる符号化率に対応した複数の検査行列が必要であっても、基礎行列は共通のものを用いることができる。
【０１２６】
符号化率は、列重みｗｃ及び行重みｗｒを用いて、図１２に示すように決定できる。図１２に示すように、列重みｗｃが３である場合、行重みｗｒを６，９，１２，１５にすることで、符号化率Ｒは、１／２，２／３，３／４，４／５となる。また、列重みｗｃが４である場合、行重みｗｒを８，１２にすることで、符号化率は１／２，２／３になる。
【０１２７】
上記のように、符号長Ｎと列重みｗｃが決まれば、行重みｗｃを変更することで符号化率Ｒを変更することが可能である。なお、当然であるが、符号長Ｎや列重みｗｃを調整することでも符号化率を変更することができる。
【０１２８】
前記基礎数列の考え方を導入すると、本実施形態の検査行列は、次の性質Ａ〜Ｅを有するということができる。
（性質Ａ）検査行列の行数に応じた数の数列それぞれは、以下の条件（Ｃ）〜（Ｄ）を満たす基礎数列を、ｗｒ個の数ごとに分割した部分数列である。
（性質Ｂ）検査行列の行数に応じた個数の部分数列は、それぞれ、検査行列のいずれか一の行に割り当てられている。
（性質Ｃ）前記基礎数列に含まれる数は、１〜Ｎの自然数である。
（性質Ｄ）前記基礎数列において、１〜Ｎの自然数それぞれの出現回数は、列重みの値ｗｃと同じである。
（性質Ｅ）前記基礎数列は、公差がＡ１，・・，ＡｊのいずれかであるＸ個の等差数列（ただし、当該数列に含まれる任意の数ｙＡと当該数ｙＡに隣り合う数ｙＢとの差がＡでない場合があっても、ｙＡと（ｙＢ＋Ｎ）との差がＡであれば、ｙＡとｙＢの差はＡであるとみなす）を連結したものである。
【０１２９】
なお、本実施形態では、上記性質Ｂに関し、基礎数列における複数の部分数列の並び順と、部分数列が割り当てられている検査行列の各行の並び順とが一致するように、複数の部分数列が検査行列の各行に割り当てられている。ただし、前述のように行置換などを行った場合のように並び順が一致しなくてもよく、行置換などを行っても誤り訂正能力には差が生じない。
【０１３０】
図１２〜図１５は、共通の基礎行列から行重みｗｒを変更することで生成された複数の検査行列を示している。図１２〜図１５の検査行列は、いずれも、符号長Ｎ＝５７６、列重みｗｃ＝３（＝ｊ）、Ｎと互いに素である数値（Ａ１〜Ａｊ）＝（Ａ１，Ａ２，Ａ３）＝（５，６１，５５７）である。基礎数列は、Ａ１，Ａ２，Ａ３を用いて“ｍｏｄ（Ａ×ｘ、Ｎ）＋１”の式によって生成されたものであるため、図１２〜図１５の各検査行列において基礎数列は共通している。なお、ここでは、ｘの初期値ｘ１を０とした。
【０１３１】
図１２の検査行列（符号長Ｎ，行重みｗｒ、数値Ａ１，数値Ａ２，数値Ａ３）＝（５７６，６，５，６１，５５７）の“１”の総数ｎｚは１７２８である（図１３〜図１４の検査行列も同様）。また、行数Ｍは２８８であり、符号化率Ｒ＝１−ｗｃ／ｗｒ＝１−３／６＝１／２である。
【０１３２】
図１２（ｂ）の拡大図に示すように、行重みｗｒが６であることに対応して、１つの行には、６個の点（“１”）が配置されている。
【０１３３】
図１３の検査行列（符号長Ｎ，行重みｗｒ、数値Ａ１，数値Ａ２，数値Ａ３）＝（５７６，９，５，６１，５５７）の“１”の行数Ｍは１９２であり、符号化率Ｒ＝１−ｗｃ／ｗｒ＝１−３／９＝２／３である。図１３（ｂ）の拡大図に示すように、行重みｗｒが９であることに対応して、１つの行には、９個の点（“１”）が配置されている。
【０１３４】
図１４の検査行列（符号長Ｎ，行重みｗｒ、数値Ａ１，数値Ａ２，数値Ａ３）＝（５７６，１２，５，６１，５５７）の“１”の行数Ｍは１４４であり、符号化率Ｒ＝１−ｗｃ／ｗｒ＝１−３／１２＝３／４である。図１４（ｂ）の拡大図に示すように、行重みｗｒが１２であることに対応して、１つの行には、１２個の点（“１”）が配置されている。
【０１３５】
図１５の検査行列（符号長Ｎ，行重みｗｒ、数値Ａ１，数値Ａ２，数値Ａ３）＝（５７６，１６，５，６１，５５７）の“１”の行数Ｍは１０８であり、符号化率Ｒ＝１−ｗｃ／ｗｒ＝１−３／１６＝１３／１６である。図１５（ｂ）の拡大図に示すように、行重みｗｒが１６であることに対応して、１つの行には、１６個の点（“１”）が配置されている。
【０１３６】
上記のように図１２〜図１５の検査行列は、すべて共通の基礎数列を有している。換言すると、検査行列に含まれる非零要素の列位置を示す数の集合が図１２〜図１５に示す複数の検査行列間で共通しているといえる。ただし、本実施形態では、単に「非零要素の列位置を示す数の集合」が共通しているだけでなく、等差数列を連結した基礎数列が共通している。
【０１３７】
図１６は、図１２〜図１５の検査行列を用いて復号した場合のＢＥＲ（Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ）特性を示している。なお、図１６には、誤り訂正を行わなかった場合のＢＥＲ特性の、参考のため「訂正なし」として表している。
図１６に示すように、図１２〜図１５の検査行列は、符号化率Ｒに応じた訂正能力を有している。また、図１２〜図１５の検査行列を用いると、エラーフロアーを引かず良好な特性になることを示している。
【０１３８】
［復号器の回路構成］
図１７は、図３に示した復号器５における外部値対数比算出部７のブロック図を示している。外部値対数比算出部７は、ｍｉｎ−ｓｕｍ復号法による場合、前述の式（１）の行処理及び式（２）の列処理の繰り返しによって復号が行われる。したがって、外部値対数比算出部７は、図１７に示すように行処理を行う行処理部７ａと列処理を行う列処理部７ｂを備えている。
【０１３９】
ここで、行処理は、式（１）のｓｉｇｎで示す符号決定のための演算と、式（１）のｍｉｎで示す最小値を探索するための演算に大別される。なお、符号決定と最小値探索とはλｎ＋βｍｎに対して行われるため、λｎとβｍｎを加算する処理も必要である。
したがって、行処理部７ａは、図１８に示すように、λｎとβｍｎの加算を行う加算部７ａ−１、式（１）のｓｉｎｇ演算を行う符号処理部７ａ−２、式（１）の最小値探索を行う最小値探索部７ａを備えている。そして、符号処理部７ａ−２と最小値探索部７ａ−３の結果は符号乗算部７ａ−４によって乗算され、式（１）に示すαｍｎが求められる。
【０１４０】
図１９は行重みｗｒ＝６の場合（図１２の検査行列）の最小値探索部７ａ−３の回路構成を示し、図２０は行重みｗｒ＝９の場合（図１３の検査行列）の最小値探索部７ａ−３の回路構成を示している。ここでの最小値探索部は、ある行ｍにおけるλｎ＋βｍｎの最小値を求めるためにトーナメント方式を採用している。つまり、２つの値うちの小さい値を出力する比較器２００を複数備え、比較を順次行っていくことで、最小値を求める。なお、式（１）では、自身を除く要素についての最小値であるから、実際には、自身の要素を除いたλｎ’＋βｍｎ’の最小値を算出するため、自身の要素は最小値探索部に入力されない。例えば、１行１列目の要素α１１を求めるための最小値探索では、対応する（λ１＋β１１）は、最小値探索部への入力から除外され、１行目の他の要素の中から最小値が探索される。
【０１４１】
図１９及び図２０の最小値探索部７ａ−３では、行ごとに最小値を求めるための処理回路３００，３０１が設けられており、１行あたりの非零要素の数だけ最小値探索の処理が繰り返し行われる。各処理回路３００，３０１では、検査行列の１行あたりの非零要素の数（行重み）−１の比較器２００が設けられており、行毎に最小値を求めるためのトーナメント方式での演算が行われる。
したがって、図１９及び図２０では、各処理回路３００，３０１内の比較器２００の数が異なり、処理回路３００，３０１の総数も異なる。つまり、図１９及び図２０では、最小値探索部７ａ−３の回路構成が異なる。
【０１４２】
ただし、図１９及び図２０に示すように、最小値探索部７ａ−３への入力内容は、全体としてみれば、共通している。つまり、本実施形態では、複数の検査行列間で、非零要素の列位置を示す基礎数列が共通しているため、λｎ＋βｍｎも（行位置ｍは別として）共通する。そして、図１９及び図２０においては、各λｎ＋βｍｎが、どの行ｍの処理回路３００に与えられるかという点が異なるだけである。
【０１４３】
したがって、図１９及び図２０の回路では、最小値探索部７ａ−３自体の構成と、各λｎ＋βｍｎがどの行の処理回路３００に割り当てられるか（βｍｎのｍを何にするか）という点は、異ならせる必要があるものの、λｎ＋βｍｎの演算を行う加算部７ａ−１は共通化することができる。これにより回路規模の膨大化を抑制できる。
【０１４４】
図２１は、最小値探索部７ａ−３の他の例を示している。図２１は、行重みが異なる検査行列について最小値探索部７ａ−３を共通化したものである。ここでは最小値を探索するための処理回路３０２は、行単位ではなく、複数の行重みの最小公倍数単位で設けられている。例えば、図１９のように行重み＝６であり、図２０のように行重み＝９である場合について、両者を共通化するには、６と９の最小公倍数である１８個の入力（λｎ’＋βｍｎ’）から最小値を求める回路が一つの処理回路３０２としてあればよい。なお、実際には自身の要素は除かれるため、処理回路３０２を用いた実際の演算では１７個の入力から最小値が求められる。
【０１４５】
図２１において実線で示す比較器２００は、行重み６の場合の、各行（３行分）の最小値を求めるためのものである。また、図２１において、点線で示す比較器２００は、行重み６の場合の比較結果を一部利用して、行重み９の場合の各行（２行分）の最小値をもめるためのものである。
図２１の処理回路３０２では、複数の行重みについての出力を共に出力できるため、処理回路３０２を行重みごとに設ける必要がない。しかも、比較器２００は、異なる行重み間で共用されているため、素子数の増加が抑えられている。
【０１４６】
そして、図２１の最小値探索部７ａ−３では、処理回路３０２から出力される各行重みの出力から、選択された行重みについての出力（最小値）を選択して出力するためのセレクタ３０４が設けられている。セレクタは、選択された行重み情報ｗｒによって、どの最小値を出力するかを決定することができる。なお、行重みは、通信装置の通信レートに応じて決定される。
【０１４７】
本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である
例えば、本実施形態の検査行列に基づく処理（行処理又は列処理）は、ハードウェアによって実行される必要はなく、コンピュータプログラムによって実行されてもよい。また、基礎数列は、等差数列を連結したものに限られず、どのような数列であってもよい。さらに、最小値を求める処理回路は、トーナメント方式に限られず、分布数えソートをベースとした方式であってもよい。なお、分布数えソートをベースとした方式は、例えば、“前畠貴、「ＦＵＭＰ−ＡＰＰ復号法によるＬＤＰＣ復号器の実装」、電子情報通信学会、信学技報、ＣＡＳ２００６、ｐｐ．８−２０  ２００６年６月”に開示されている。
【符号の説明】
【０１４８】
１  符号化器
２  変調器
３  通信路
４  復調器
５  復号器
Ｈ  検査行列
Ｎ  符号長
ｗｃ  列重み
ｗｒ  行重み
Ｒ  符号化率
【図１】
2011072020.tif 000007
【図２】
2011072020.tif 000008
【図３】
2011072020.tif 000009
【図４】
2011072020.tif 000010
【図５】
2011072020.tif 000011
【図６】
2011072020.tif 000012
【図９】
2011072020.tif 000013
【図１０】
2011072020.tif 000014
【図１１】
2011072020.tif 000015
【図１７】
2011072020.tif 000016
【図１８】
2011072020.tif 000017
【図１９】
2011072020.tif 000018
【図２０】
2011072020.tif 000019
【図２１】
2011072020.tif 000020
【図２２】
2011072020.tif 000021
【図７】
2011072020.tif 000022
【図８】
2011072020.tif 000023
【図１２】
2011072020.tif 000024
【図１３】
2011072020.tif 000025
【図１４】
2011072020.tif 000026
【図１５】
2011072020.tif 000027
【図１６】
2011072020.tif 000028
【手続補正書】
【提出日】平成22年12月2日(2010.12.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
検査行列を用いて、低密度パリティ検査符号の復号を行う復号装置であって、
符号化率の異なる複数の検査行列を使い分けることができるよう構成されている復号装置。