(57)【要約】  データ変換手段が、第１の記憶手段に記憶されたデータと第２の記憶手段に記憶されたデータとから、列ベクトルと一対一に対応する第１の中間データを生成する。チェックノード処理手段が、第１の中間データと受信データの加算結果に基づいて、第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成する。データ変換手段が、第１の中間データを用いて第２の記憶手段に記憶されたデータを更新するとともに、チェックノード処理手段によって生成された第２の中間データを用いて第１の記憶手段に記憶されたデータを更新する。データ変換手段とチェックノード処理手段による処理により復号結果のデータを生成する。
2009075143.tif 000002
【特許請求の範囲】
【請求項１】
低密度パリティ検査符号を用いて符号化された受信データの誤り訂正を行う復号装置であって、
前記低密度パリティ検査符号の検査行列の列ベクトルの数と同数のデータを記憶する第１の記憶手段と、
前記第１の記憶手段と同数のデータを記憶する第２の記憶手段と、
データ変換手段と、
チェックノード処理手段と、を有し、
前記データ変換手段が、前記第１の記憶手段に記憶されたデータと前記第２の記憶手段に記憶されたデータとから、前記列ベクトルと一対一に対応する第１の中間データを生成し、
前記チェックノード処理手段が、前記第１の中間データと前記受信データの加算結果に基づいて、前記第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成し、
前記データ変換手段が、前記第１の中間データを用いて前記第２の記憶手段に記憶されたデータを更新するとともに、前記チェックノード処理手段によって生成された前記第２の中間データを用いて前記第１の記憶手段に記憶されたデータを更新し、
前記データ変換手段と前記チェックノード処理手段による処理により復号結果のデータを生成する、復号装置。
【請求項２】
前記データ変換手段と前記チェックノード処理手段による処理を複数回繰り返すことにより、前記第１の記憶手段のデータと前記第２の記憶手段のデータを繰り返し更新することで前記復号結果のデータを得る、請求項１に記載の復号装置。
【請求項３】
前記データ変換手段は、
前記第１の記憶手段に記憶されたデータか、あるいは前記第１の記憶手段に記憶されたデータから前記第２の記憶手段に記憶されたデータを減算した結果のいずれかを選択することによって、前記第１の中間データを生成し、
前記第２の記憶手段に記憶されたデータか、あるいは前記第１の記憶手段に記憶されたデータから前記第２の記憶手段に記憶されたデータを減算した結果のいずれかを選択することによって、前記第２の記憶手段に記憶されたデータを更新する、請求項１に記載の復号装置。
【請求項４】
前記チェックノード処理手段は、前記検査行列の行ベクトルの各々について、該行ベクトルの非零成分と交わる前記列ベクトルと一対一に対応する前記第１の中間データと前記受信データとの和から、前記第１の記憶手段のデータの内、前記列ベクトルに対応するデータを更新するための第２の中間データを生成し、
前記データ変換手段は、一通りの行ベクトルについて前記チェックノード処理手段による該データの更新を終了する毎に、前記第１の中間データとして、前記第１の記憶手段に記憶されたデータから前記第２の記憶手段に記憶されたデータを減算した結果を選択し、前記第２の記憶手段に記憶されたデータの更新データとして、前記第１の記憶手段に記憶されたデータから前記第２の記憶手段に記憶されたデータを減算した結果を選択する、請求項１に記載の復号装置。
【請求項５】
前記低密度パリティ検査符号は、前記検査行列がサイズｍ（ｍは正の整数）の巡回置換行列か、あるいは零行列を成分とするｒ行ｎ列（ｒ，ｎは正の整数）のブロック行列である、擬似巡回低密度パリティ検査符号であり、
前記第１の記憶手段および前記第２の記憶手段は、ワード数がｍ／ｐ（ｐはｍの約数）のｎ個のランダム・アクセス・メモリであり、
前記データ変換手段は、並列で処理を行う最大ｎ個のデータ変換器を有し、
前記チェックノード処理手段は、前記データ変換器からの長さｐのデータを巡回シフトする最大ｎ個の第１のシフト回路と、最大ｎ個の前記第１のシフト回路からの長さがｐである最大ｎ個のデータを長さが最大ｎであるｐ個のデータに整列する第１のデータ整列器と、前記第１のデータ整列器からのｐ個のデータを並列で処理するｐ個のチェックノード処理器と、ｐ個の前記チェックノード処理器からの長さが最大ｎであるｐ個のデータを長さがｐである最大ｎ個のデータに整列する第２のデータ整列器と、前記第２のデータ整列器からの最大ｎ個のデータを、前記第１のシフト回路の巡回シフトと逆に巡回シフトする最大ｎ個の第２のシフト回路と、を有し、
前記チェックノード処理手段と前記データ変換手段によって、前記第１の記憶手段および前記第２の記憶手段のデータを最大ｎ個ずつ並列で更新する、請求項４に記載の復号装置。
【請求項６】
蓄積装置に蓄積するデータを、低密度パリティ検査符号を用いて符号化する符号化装置と、
前記低密度パリティ検査符号の検査行列の列ベクトルの数と同数のデータを記憶する第１の記憶手段と、前記第１の記憶手段と同数のデータを記憶する第２の記憶手段と、データ変換手段と、チェックノード処理手段と、を有し、前記データ変換手段が、前記第１の記憶手段に記憶されたデータと前記第２の記憶手段に記憶されたデータとから、前記列ベクトルと一対一に対応する第１の中間データを生成し、前記チェックノード処理手段が、前記第１の中間データと前記蓄積装置に蓄積されたデータとの加算結果に基づいて、前記第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成し、前記データ変換手段が、前記第１の中間データを用いて前記第２の記憶手段に記憶されたデータを更新するとともに、前記チェックノード処理手段によって生成された前記第２の中間データを用いて前記第１の記憶手段に記憶されたデータを更新し、前記データ変換手段と前記チェックノード処理手段による処理により復号結果のデータを生成する、復号装置と、を有するデータ蓄積装置。
【請求項７】
低密度パリティ検査符号を用いて符号化したデータを送信する送信装置と、
前記低密度パリティ検査符号の検査行列の列ベクトルの数と同数のデータを記憶する第１の記憶手段と、前記第１の記憶手段と同数のデータを記憶する第２の記憶手段と、データ変換手段と、チェックノード処理手段と、を有し、前記データ変換手段が、前記第１の記憶手段に記憶されたデータと前記第２の記憶手段に記憶されたデータとから、前記列ベクトルと一対一に対応する第１の中間データを生成し、前記チェックノード処理手段が、前記第１の中間データと前記送信装置からの受信データとの加算結果に基づいて、前記第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成し、前記データ変換手段が、前記第１の中間データを用いて前記第２の記憶手段に記憶されたデータを更新するとともに、前記チェックノード処理手段によって生成された前記第２の中間データを用いて前記第１の記憶手段に記憶されたデータを更新し、前記データ変換手段と前記チェックノード処理手段による処理により復号結果のデータを生成する、受信装置と、を有するデータ通信システム。
【請求項８】
低密度パリティ検査符号を用いて符号化された受信データの誤り訂正を行う復号方法であって、
前記低密度パリティ検査符号の検査行列の列ベクトルの数と同数のデータを第１の記憶手段に記憶するとともに、前記第１の記憶手段と同数のデータを第２の記憶手段に記憶し、
前記第１の記憶手段に記憶されたデータと前記第２の記憶手段に記憶されたデータとから、前記列ベクトルと一対一に対応する第１の中間データを生成し、
前記第１の中間データと前記受信データの加算結果に基づいて、前記第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成し、
前記第１の中間データを用いて前記第２の記憶手段に記憶されたデータを更新するとともに、前記第２の中間データを用いて前記第１の記憶手段に記憶されたデータを更新し、
前記データ変換手段と前記チェックノード処理手段による処理により復号結果のデータを生成する、復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報系列に冗長系列を付加して符号化されたデータから、情報系列を復号するとともに冗長系列を用いた誤り訂正を行う技術に関する。
【背景技術】
【０００２】
衛星通信や移動体通信などの通信システムには、所要電力の低減やアンテナの小型化など、システム構成上の要件がある。それらの要件を満たすために、大きな符号化利得を得ることのできる誤り訂正符号化技術が導入されている。【０００３】
低密度パリティ検査符号は、非常に大きな符号化利得を有する誤り訂正符号として知られており、様々な通信システムやデータを記録する記憶装置への導入が進んでいる。低密度パリティ検査符号は、特定の誤り訂正符号化方式を意味するものではなく、検査行列が疎であるという特徴を有する誤り訂正符号の総称である。検査行列が疎とは、検査行列のほとんどの成分が０であり、１である成分の数が非常に少ないことをいう。低密度パリティ検査符号は、検査行列によって特徴付けられる。【０００４】
疎な検査行列を選択し、繰り返し復号方式を用いることにより、理論的な限界に近い、非常に大きな符号化利得を持つ誤り訂正符号化方式を実現することが可能となる（文献２、３参照）。このような方式には、例えばサム・プロダクト（ｓｕｍ−ｐｒｏｄｕｃｔ）アルゴリズムあるいはミン・サム（ｍｉｎ−ｓｕｍ）アルゴリズムを用いることができる。【０００５】
文献４には、低密度パリティ検査符号の復号方法の一例が開示されている。復号装置は、受信データを一定長のブロックに区切り、ブロック毎に、誤り訂正の対象となる受信データと、メッセージと呼ばれる復号処理の過程で生じるデータとを保持し、検査行列を用いてメッセージを更新しながら受信データの誤りを訂正する。ここでは１ブロックがＮ個（Ｎは１より大きい整数）の受信データからなるものとする。また検査行列は、各成分が０または１のＮ行Ｒ列（ＲはＮ以下の正の整数）の行列であるものとする。【０００６】
受信データの各々がｂ個（ｂは正の整数）のビットで表現されるとすると、Ｎ個の受信データからなるブロックを保持するのにｂ×Ｎビット分の記憶領域が必要とされる。一方、メッセージの保持については、検査行列の非零成分の個数分だけのメッセージを保持するので、ｂ×（非零成分の個数）ビット分の記憶領域が必要とされる。非零成分は値が０ではなく１である成分のことである。【０００７】
また、データをＲＡＭ（ランダムアクセスメモリー）に保持し、複数のデータに同時にアクセスしながら並列処理を行えば、復号処理を高速化することができる。ただし、同時にアクセスすることのできるデータを増加させて並列処理を実現するには、データを複数のＲＡＭに分割して記録しておくことが必要となる。そのため復号装置の回路規模が増大するとともに、アドレス生成などの処理が複雑化する。【０００８】
ＲＡＭの個数については装置構成によって解決する方法（文献５参照）があるが、この方法では復号処理の誤り率特性が大幅に劣化する。また、ＲＡＭではなく、シフトレジスタを用いることにより回路構成を単純化するという手法があるが（文献１参照）、その手法では、ブロックの長さＮが数万ビットを超えるような場合や、冗長ビット数が多く符号化率が著しく小さい場合には回路規模が大きくなる。【０００９】
＜文献リスト＞
文献１：  特開２００７−０８９０６４号公報
文献２：  ロバート  ギャラガ（Ｒｏｂｅｒｔ  Ｇａｌｌａｇｅｒ）、“ロー・デンシティ  パリティ・チェック  コーズ（Ｌｏｗ−Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ−Ｃｈｅｃｋ  Ｃｏｄｅｓ）”、アイトリプルイー  トランザクションズ  オン  インフォメーション  セオリー（ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ）、１９６２年１月、第２１頁から第２８頁
文献３：  ディー・ジェー・シー  マッカイ（Ｄ．Ｊ．Ｃ．  ＭａｃＫａｙ）、“グット  エラー・コレクティング  コーズ  ベースト  オン  ベリー  スパース  メトリシィーズ（Ｇｏｏｄ  Ｅｒｒｏｒ−Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅｓ  Ｂａｓｅｄ  ｏｎ  ｖｅｒｙ  ｓｐａｒｓｅ  ｍａｔｒｉｃｅｓ）”、アイトリプルイー  トランザクションズ  オン  インフォメーション  セオリー（ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ）、１９９９年３月、第３９９頁から第４３１頁
文献４：  エラン・シャロン（Ｅｒａｎ  Ｓｈａｒｏｎ）、シモン・リシン（ＳｉｍｏｎＬｉｔｓｙｎ）、ヤコブ・ゴールドバーガー（Ｊａｃｏｂ  Ｇｏｌｄｂｅｒｇｅｒ）、“アン  エフィシェント  メッセージ・パッシング  スケジュール  フォー  エル・ディー・ピー・シー  デコーディング（Ａｎ  Ｅｆｆｉｃｉｅｎｔ  Ｍｅｓｓａｇｅ−Ｐａｓｓｉｎｇ  Ｓｃｈｅｄｕｌｅ  ｆｏｒ  ＬＤＰＣ  Ｄｅｃｏｄｉｎｇ）”、プロシーディングス  ２００４  アイトリプルイー  コンベンション  オブ  エレクトリカル  アンド  エレクトロニクス  エンジニアーズ  イン  イスラエル（Ｐｒｏｃｅｅｄｉｎｇｓ  ２００４  ＩＥＥＥ  Ｃｏｎｖｅｎｔｉｏｎ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ  ｉｎ  Ｉｓｒａｅｌ）、２００４年９月、第２２３頁から第２２６頁
文献５：  イー・イェオ（Ｅ  Ｙｅｏ）、ピー・パザド（Ｐ．Ｐａｋｚａｄ）、ビー・ニコリック（Ｂ．Ｎｉｋｏｌｉｃ）、ヴィー・アナンタラン（Ｖ  Ａｎａｎｔｈａｒａｍ）、“ハイ  スループット  ロー・デンシティ  パリティ・チェック  デコーダー  アーキテクチャ（Ｈｉｇｈ  Ｔｈｒｏｕｇｈｐｕｔ  Ｌｏｗ−Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ−Ｃｈｅｃｋ  Ｄｅｃｏｄｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）”、２００１  アイトリプルイー  グローバル  テレコミュニケーションズ  コンファレンス（２００１  ＩＥＥＥ  Ｇｌｏｂａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｃｏｎｆｅｒｅｎｃｅ）、２００１年１１月、第３０１９頁から第３０２４頁
【発明の開示】
【００１０】
上述したような方法で低密度パリティ検査符号を復号する場合、復号処理の過程で一時的に生じるデータを記憶するために大きな記憶領域が必要とされる。例えば、文献４に開示された復号方法では、一時的に生成されるデータ（メッセージ）を保持するために、検査行列中の非零成分の個数に比例した大きさの記憶領域が必要となる。
【００１１】
特に衛星通信や移動体通信では装置規模と消費電力に対する条件が厳しく、記憶容量および回路規模の削減が強く求められる。復号処理の過程で一時的に生じるデータを使用しないような方法を採用すればデータの保持が不要となるので、記憶領域は削減される。しかし、そのような方法では復号処理の誤り率特性が劣化する。
【００１２】
上述したように、誤り訂正を伴うデータの復号において、良好な誤り率特性を確保しつつ、記憶領域を低減することは困難であった。
【００１３】
本発明の目的は、少ない記憶容量で良好な誤り率特性を確保することのできる低密度パリティ検査符号の復号技術を提供することである。
【００１４】
上記目的を達成するために、本発明の一態様による復号装置は、低密度パリティ検査符号を用いて符号化された受信データの誤り訂正を行う復号装置であって、
前記低密度パリティ検査符号の検査行列の列ベクトルの数と同数のデータを記憶する第１の記憶手段と、
前記第１の記憶手段と同数のデータを記憶する第２の記憶手段と、
データ変換手段と、
チェックノード処理手段と、を有し、
前記データ変換手段が、前記第１の記憶手段に記憶されたデータと前記第２の記憶手段に記憶されたデータとから、前記列ベクトルと一対一に対応する第１の中間データを生成し、
前記チェックノード処理手段が、前記第１の中間データと前記受信データの加算結果に基づいて、前記第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成し、
前記データ変換手段が、前記第１の中間データを用いて前記第２の記憶手段に記憶されたデータを更新するとともに、前記チェックノード処理手段によって生成された前記第２の中間データを用いて前記第１の記憶手段に記憶されたデータを更新し、
前記データ変換手段と前記チェックノード処理手段による処理により復号結果のデータを生成する。
【００１５】
本発明の一態様によるデータ蓄積装置は、
蓄積装置に蓄積するデータを、低密度パリティ検査符号を用いて符号化する符号化装置と、
前記低密度パリティ検査符号の検査行列の列ベクトルの数と同数のデータを記憶する第１の記憶手段と、前記第１の記憶手段と同数のデータを記憶する第２の記憶手段と、データ変換手段と、チェックノード処理手段と、を有し、前記データ変換手段が、前記第１の記憶手段に記憶されたデータと前記第２の記憶手段に記憶されたデータとから、前記列ベクトルと一対一に対応する第１の中間データを生成し、前記チェックノード処理手段が、前記第１の中間データと前記蓄積装置に蓄積されたデータとの加算結果に基づいて、前記第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成し、前記データ変換手段が、前記第１の中間データを用いて前記第２の記憶手段に記憶されたデータを更新するとともに、前記チェックノード処理手段によって生成された前記第２の中間データを用いて前記第１の記憶手段に記憶されたデータを更新し、前記データ変換手段と前記チェックノード処理手段による処理により復号結果のデータを生成する、復号装置と、を有している。
【００１６】
本発明の一態様によるデータ通信システムは、
低密度パリティ検査符号を用いて符号化したデータを送信する送信装置と、
前記低密度パリティ検査符号の検査行列の列ベクトルの数と同数のデータを記憶する第１の記憶手段と、前記第１の記憶手段と同数のデータを記憶する第２の記憶手段と、データ変換手段と、チェックノード処理手段と、を有し、前記データ変換手段が、前記第１の記憶手段に記憶されたデータと前記第２の記憶手段に記憶されたデータとから、前記列ベクトルと一対一に対応する第１の中間データを生成し、前記チェックノード処理手段が、前記第１の中間データと前記送信装置からの受信データとの加算結果に基づいて、前記第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成し、前記データ変換手段が、前記第１の中間データを用いて前記第２の記憶手段に記憶されたデータを更新するとともに、前記チェックノード処理手段によって生成された前記第２の中間データを用いて前記第１の記憶手段に記憶されたデータを更新し、前記データ変換手段と前記チェックノード処理手段による処理により復号結果のデータを生成する、受信装置と、を有している。
【００１７】
本発明の一態様による復号方法は、低密度パリティ検査符号を用いて符号化された受信データの誤り訂正を行う復号方法であって、
前記低密度パリティ検査符号の検査行列の列ベクトルの数と同数のデータを第１の記憶手段に記憶するとともに、前記第１の記憶手段と同数のデータを第２の記憶手段に記憶し、
前記第１の記憶手段に記憶されたデータと前記第２の記憶手段に記憶されたデータとから、前記列ベクトルと一対一に対応する第１の中間データを生成し、
前記第１の中間データと前記受信データの加算結果に基づいて、前記第１の記憶手段に記憶されたデータを更新するための第２の中間データを生成し、
前記第１の中間データを用いて前記第２の記憶手段に記憶されたデータを更新するとともに、前記第２の中間データを用いて前記第１の記憶手段に記憶されたデータを更新し、
前記データ変換手段と前記チェックノード処理手段による処理により復号結果のデータを生成する。
【図面の簡単な説明】
【００１８】
【図１Ａ】本実施形態の復号装置の構成例を示すブロック図である。
【図１Ｂ】本実施形態の復号装置の動作例を示すフローチャートである。
【図２】図１Ａに示したデータ変換器１３の構成例を示すブロック図である。
【図３】図１Ａに示したチェックノード処理器１４の構成例を示すブロック図である。
【図４】図１Ａのメモリブロック（Ｆ）１１の構成例を示すブロック図である。
【図５】図１Ａに示したメモリブロック（Ｌ（１），Ｌ（２））１２の構成例を示すブロック図である。
【図６】並列型のチェックノード処理装置を示すブロック図である。
【図７】本実施形態の復号装置の動作を時系列で示したタイムチャートである。
【図８】本実施形態の復号装置を用いたデータ通信システムの構成を示すブロック図である。
【発明を実施するための最良の形態】
【００１９】
本発明の実施形態について図面を参照して詳細に説明する。【００２０】
図１Ａは、本実施形態の復号装置の構成例を示すブロック図である。図１Ｂは、本実施形態の復号装置の動作例を示すフローチャートである。本実施形態の復号装置は、低密度パリティ検査符号のデータを生成する符号化装置（不図示）からデータを受信し、データから情報系列を復号する装置である。【００２１】
図１Ａを参照すると、復号装置１０はメモリブロック（Ｆ）１１、メモリブロック（Ｌ（１），Ｌ（２））１２、データ変換器１３、チェックノード処理器１４、および加算器１５を有している。復号装置１０は通信路（不図示）からの受信データ系列を入力とする。受信データ系列は低密度パリティ検査符号で符号化されている。一般に、受信データには雑音などによって誤りが生じている。復号装置１０は、受信データから送信ビット列を推定し、推定された送信ビット列を出力する。【００２２】
低密度パリティ検査符号は、式（１）に示すような、各成分が０あるいは１のいずれかであるＲ行Ｎ列の検査行列によって特徴付けられる。ここでＮは１より大きい整数であり、ＲはＮ以下の正の整数である。【００２３】
【数１】
2009075143.tif 000003
また、特に、式（１）の検査行列が行ベクトルと列ベクトルの入れ替えによって、式（２）の形に変形できる場合、低密度パリティ検査符号は擬似巡回低密度パリティ検査符号の一種であるといえる。【００２４】
【数２】
2009075143.tif 000004
なお、式（２）は、ｍ×ｍ行列（ｍはＮの約数）を成分とする、ｒ×ｎブロック行列（ｒ＝Ｒ／ｍ、ｎ＝Ｎ／ｍ）である。ｍ×ｍ行列Ｉｓ，ｔ（０≦ｓ＜ｒ、０≦ｔ＜ｎ）のそれぞれは巡回置換行列かあるいは成分が全て零の行列である。【００２５】
ここでは通信路からの受信データ列をＦ０，Ｆ１，・・・，ＦＮ−１とする。また、受信データ列を構成する各シンボルＦｉがｂビットで表現されるものとする。ｉは０からＮ−１の整数であり、ｂは正の整数である。【００２６】
メモリブロック（Ｆ）１１は、受信データ系列Ｆ０，Ｆ１，・・・，ＦＮ−１を記憶する装置であり、ｂ×Ｎビットの記憶容量が必要とされる。【００２７】
メモリブロック（Ｌ（１），Ｌ（２））１２は、復号処理において一時的に保持すべきデータＬ０（１），Ｌ１（１），・・・，ＬＮ−１（１）、Ｌ０（２），Ｌ１（２），・・・，ＬＮ−１（２）を記憶する装置であり、２×ｂ×Ｎビットの記憶容量が必要とされる。データＬ０（１），Ｌ１（１），・・・，ＬＮ−１（１）、Ｌ０（２），Ｌ１（２），・・・，ＬＮ−１（２）については後述する。【００２８】
式（１）に示した検査行列のＲ個の各行ベクトル（ｈｉ，０，ｈｉ，１，…，ｈｉ，Ｎ−１）（ｉは０≦ｉ＜Ｒの整数）は、０からＮ−１までのＮ個の整数からなる集合の部分集合Ｕ（ｉ）によって、非零成分の位置を式（３）のように示すことができる。即ち、Ｕ（ｉ）は検査行列の第ｉ行ベクトルの非零成分の位置を示す集合である。メモリブロック（Ｌ（１），Ｌ（２））１２には、Ｕ（ｉ）によって定めまるアドレスのデータが保持される。データ変換器１３、チェックノード処理部１４、および加算器１５の具体的な動作は後述する。【００２９】
【数３】
2009075143.tif 000005
図２は、図１Ａに示したデータ変換器１３の構成例を示すブロック図である。図２を参照すると、データ変換器１３は、ビット結合部２１Ａ，２１Ｂ、ビット分割部２２Ａ，２２Ｂ、加算部２３、減算部２４、セレクタ２５，２７、および遅延部３６を有している。【００３０】
データ変換器１３は、図１Ａのメモリブロック（Ｌ（１），Ｌ（２））１２から読み出された２ｂビットのデータと、チェックノード処理器１４の出力であるｂビットのデータとを入力としている。メモリブロック（Ｌ（１），Ｌ（２））１２から読み出された２ｂビットのデータはビット分割部２２Ａ、減算部２４、およびセレクタ２５によってｂビットのデータに変換され、図１Ａの加算器１５へ出力される。【００３１】
また、このｂビットのデータはビット結合部２１Ａ、遅延部２６、およびビット分割部２２Ｂを経て、加算器２３にて、図１Ａのチェックノード処理器１４からの出力であるｂビットのデータに加算され、ビット結合部２１Ａを経て２ｂビットのデータに変換された後に、メモリブロック（Ｌ（１），Ｌ（２））１２に出力される。この２ｂビットのデータはメモリブロック（Ｌ（１），Ｌ（２））１２に書き込まれる。【００３２】
なお図２に示した構成は、２ｂビットのデータが、図１Ａに示したメモリブロック（Ｆ）１１内の同一アドレスに保持される場合の例である。２ｂビットのデータを２つのｂビットのデータに分割して保持する場合にはビット分割部２２Ａ，
２２Ｂとビット結合部２１Ａ，２１Ｂが不要となる。【００３３】
図３は、図１Ａに示したチェックノード処理器１４の構成例を示すブロック図である。図３を参照すると、チェックノード処理器１４は、ビット分割部３１Ａ〜３１Ｃ、データ変換テーブル３２Ａ〜３２Ｃ、加算部３３、減算部３４Ａ〜３４Ｃ、データ変換テーブル３５Ａ〜３５Ｃ、ビット結合部３６Ａ〜３６Ｃ、および排他的論理和演算器３７，３８Ａ〜３８Ｃを有している。【００３４】
チェックノード処理器１４は、図１Ａの加算器１５からの出力を入力としている。チェックノード処理器１４からの出力は、図１Ａのデータ変換器１３へ入力される。チェックノード処理器１４は、図１Ｂに示したフローチャート中のステップ１０３の処理を実行する。【００３５】
この処理に用いる関数の例として、関数ｆ（Ｚ〜）は式（４）で示され、逆関数ｆ−１（Ｚ〜）は式（５）で示される。【００３６】
【数４】
2009075143.tif 000006
式（４）の関数ｆ（Ｚ〜）は、入力Ｚ〜に対して、Ｚ〜＜０であるときに１を返し、それ以外の場合に０を返す関数ｓｉｇｎの結果と、双曲線正接関数の対数に対応する値の２つを返す関数である。式（４）の関数ｆ（Ｚ〜）の逆関数ｆ−１（Ｓ，Ｚ）は、２つの数値Ｓ，Ｚを入力し、式（５）の右辺に示されている値を返す関数である。【００３７】
【数５】
2009075143.tif 000007
チェックノード処理器１４は、メモリブロック（Ｌ（１），Ｌ（２））のデータの更新を所定回だけ繰り返す。式（４）にある双曲線正接関数の対数の演算はデータ変換テーブル３２により行われ、式（５）の右辺にある関数演算はデータ変換テーブル３５により行われる。【００３８】
次に、低密度パリティ検査符号の復号装置を、式（２）に検査行列が示された擬似巡回低密度パリティ検査符号に適用する場合の例について説明する。式（２）の検査行列は上述したようにｍ×ｍ行列（ｍはＮの約数）を成分とするブロック行列である。ここでは並列処理数ｐをｍの約数とする場合について説明する。【００３９】
図４は、図１Ａのメモリブロック（Ｆ）１１の構成例を示すブロック図である。図４を参照すると、メモリブロック（Ｆ）１１は、ｎ個（ｎ＝Ｎ／ｍ）のＲＡＭ４１を有している。各ＲＡＭ４１は、ビット長がｂｐであり、ワード数がｍ／ｐである。よって、ｎ個のＲＡＭ４１の記憶容量の総計はｂＮビットとなる。【００４０】
各ＲＡＭ４１の各アドレスにはｐ個分の受信データが保持される。第ｊ番目（０≦ｊ＜ｎ）のＲＡＭ４１の第ｋ番目（０≦ｋ＜ｍ／ｐ）のアドレスには、式（６）によって示されるｐ個の受信データが保持される。【００４１】
【数６】
2009075143.tif 000008
メモリブロック（Ｆ）１１に保持されている受信データは復号処理を実行する間に繰り返し参照される。各ＲＡＭ４１に対する読み出しアドレスを生成する方法については後述する。【００４２】
図５は、図１Ａに示したメモリブロック（Ｌ（１），Ｌ（２））１２の構成例を示すブロック図である。図５を参照すると、メモリブロック（Ｌ（１），Ｌ（２））１２は、ｎ個のＲＡＭ５１を有している。各ＲＡＭ５１は、ビット長が２ｂｐであり、ワード数がｍ／ｐである。よって、ｎ個のＲＡＭ５１の記憶容量の総計はｂＮビットである。各ＲＡＭ５１の各アドレスには２ｐ個分の中間データが保持される。第ｊ番目（０≦ｊ＜ｎ）のＲＡＭの第ｋ番目（０≦ｋ＜ｍ／ｐ）のアドレスには、式（７）に示される２ｐ個のデータが保持される。【００４３】
【数７】
2009075143.tif 000009
メモリブロック（Ｌ（１），Ｌ（２））１２に保持されるデータは復号処理の間に参照と更新が繰り返される。各ＲＡＭ５１の読み出しアドレスおよび書き込みアドレスを生成する方法については後述する。【００４４】
次に、図１Ｂのフローチャートを用いて本実施形態の復号装置の動作について説明する。まず、式（１）の検査行列を有する低密度パリティ検査符号を復号する復号装置について説明する。それに続いて、式（２）の検査行列を有する擬似巡回低密度パリティ検査符号を復号する復号装置に並列処理を適用した場合について説明する。【００４５】
図１Ｂを参照すると、復号装置１０はまず初期化の処理を行う（ステップ１０１）。初期化処理において、復号装置１０はメモリブロック（Ｆ）１１に受信データ列をＦ０，Ｆ１，・・・，ＦＮ−１を記録する。ここで、受信データ列を構成する各シンボルＦｉはｂビットで表現されている（０≦ｉ＜Ｎ，ｂは整数）。また、復号装置１０はメモリブロック（Ｌ（１），Ｌ（２））１２中のデータＬ０（１），Ｌ１（１），・・・，ＬＮ−１（１）、Ｌ０（２），Ｌ１（２），・・，ＬＮ−１（２）を全て０に初期化する。さらに、復号装置１０は、復号処理の繰り返し回数をカウントするカウンターを初期化（ｔ＝１）する。なお、このカウンターの構成は自明であるため、記述の煩雑さを考慮して、図１Ａのブロック図から省略してある。【００４６】
初期化処理に続いて、復号装置１０は、検査行列の行ベクトルのインデックスである変数ｉを初期値の０にセットする（ステップ１０２）。【００４７】
続いて、復号装置１０は、第ｉ行ベクトルの非零成分の位置を示す集合Ｕ（ｉ）（式（３）参照）中の各成分ｊについて、Ｌｊ（１）を更新する（ステップ１０３）。その際、復号装置１０は、データＦｊをメモリブロック（Ｆ）１１より読み出し、データＬｊ（１），Ｌｊ（２）をメモリブロック（Ｌ（１），Ｌ（２））１２より読み出す。そして、復号装置１０は、加算器１５にてＦｊ＋Ｌｊ（１）を算出する。復号装置１０は、Ｕ（ｉ）に含まれる全てのｊについてＦｊ＋Ｌｊ（１）を算出し、チェックノード処理器１４に入力する。それにより、チェックノード処理器１４はＵ（ｉ）に含まれる全ての整数ｊについて処理を行い、その処理結果を新たな値としてＬｊ（１）を更新することとなる。新たな値はメモリブロック（Ｌ（１），Ｌ（２））１２に書き込まれる。この間、各ｊ＝０，１，・・・，Ｎ−１に関して、データＦｊ，Ｌｊ（１），Ｌｊ（２）は検査行列における第ｊ列ベクトルの非零成分の回数だけアクセスされる。【００４８】
復号装置１０は、ステップ１０３の処理を、検査行列の各行ベクトルに対応するｉ＝０，１，・・・，Ｒ−１について順次行う（ステップ１０４、１０５）。【００４９】
次に、復号装置１０は、Ｆｊ＋Ｌｊ（１）が負の値であるときｘｊ＝１とし、そうでないときｘｊ＝０とするようにしてｘｊを決定する（ステップ１０６）。復号装置１０は、ステップ１０２〜１０６の処理を、検査行列と（ｘ０，ｘ１，・・・，ｘＮ−１）の積ＨｘＴ＝０、またはｔ＝Ｔｍａｘ（ｔの最大値）のいずれかの条件が満たされるまで繰り返す（ステップ１０７〜１０９）。【００５０】
ここで、実際には、図２に示したデータ変換器１３による処理（ステップ１０９）が入るが、その処理については後述する。【００５１】
以上の処理で得られる（ｘ０，ｘ１，・・・，ｘＮ−１）と検査行列の積により算出されるシンドロームが０であれば、復号装置１０は（ｘ０，ｘ１，・・・，ｘＮ−１）を送信データ列と推定し、その送信データ列を出力して復号処理を終了する（ステップ１１０）。なお、検査行列と（ｘ０，ｘ１，・・・ｘＮ−１）の積を算出する装置は、記述の煩雑さを考慮して図１Ａのブロック図から省略してある。【００５２】
ここで上記ステップ１０９におけるデータ変換器１３の動作について説明する。【００５３】
ステップ１０９の処理は、ｊ＝０，１，・・・，Ｎ−１に関して、メモリブロック（Ｌ（１），Ｌ（２））中のデータＬｊ（１）とＬｊ（２）とを各々データＬｊ（１）−Ｌｊ（２）とＬｊ（１）−Ｌｊ（２）に更新する処理である。この更新処理は復号処理の繰り返し毎に１回ずつ行われる。上述のように各繰り返しにおいて、データＬｊ（１），Ｌｊ（２）は検査行列おける第ｊ列ベクトルの非零成分の回数だけアクセスされるが、データ変換器１３では、１回目のアクセスでデータＬｊ（１），Ｌｊ（２）を読み出した時にのみ、これらを各々Ｌｊ（１）＝Ｌｊ（１）−Ｌｊ（２）とＬｊ（２）＝Ｌｊ（１）−Ｌｊ（２）と更新し、出力する構成となっている。【００５４】
なお、図２には、メモリブロック（Ｌ（１），Ｌ（２））１２が各アドレスに２ｂビットのデータを保持し、その上位ｂビットがＬｊ（１）であり、下位ｂビットがＬｊ（２）であるとしたときのデータ変換器１３の構成が示されている。即ち、図２において、メモリブロック（Ｌ（１），Ｌ（２））１２のアドレスｊ（０≦ｊ＜Ｎ）から２ｂビットのデータが読み出され、それがデータ変換器１３の入力となる。その２ｂビットのデータの上位ｂビットがＬｊ（１）であり、下位ｂビットがＬｊ（２）である。その２ｂビットのデータがビット分割部２２Ａによって上位ｂビット（Ｌｊ（１））と下位ｂビット（Ｌｊ（２））に分割される。セレクタ２５へは、Ｌｊ（１）と、減算部２４を介したＬｊ（１）−Ｌｊ（２）とが入力される。【００５５】
前述のように、各繰り返しにおいて、アドレスｊへのアクセスが１回目の場合には、セレクタ２５においてＬｊ（１）−Ｌｊ（２）が選択され、そうでない場合にはＬｊ（１）が選択される。セレクタの出力は、加算器１５へ出力されるとともに、ビット結合部２１Ａで下位ｂビットにＬｊ（２）が結合され、遅延部２６へ入力される。【００５６】
遅延部２６は入力した信号をチェックノード処理器１４の処理に要する時間分だけ遅延させた後、ビット分割部２２Ｂに入力する。ビット分割部２２Ｂは、入力した信号を、上位ｂビットと下位ｂビットに分割し、それらを共にセレクタ２７へ入力する。上位ｂビットはＬｊ（１）かあるいはＬｊ（１）−Ｌｊ（２）であり、下位ｂビットはＬｊ（２）である。上位ｂビットは加算部２３へも入力され、そこで、チェックノード処理器１４からのデータに加算される。加算部２３による加算結果と、セレクタ２７から出力されたｂビットとがビット結合部２１Ｂで結合され、メモリブロック（Ｌ（１），Ｌ（２））のアドレスｊへ保存される。【００５７】
これにより、データ変換器１３は、データＬ（１）か、あるいはデータＬ（１）からデータＬ（２）を減算した結果のいずれかを選択することによって、加算器１５に送るデータを生成することになる。また、データ変換器１３は、データＬ（２）か、あるいはデータＬ（１）からデータＬ（２）を減算した結果のいずれかを選択することによって、データＬ（２）を更新することになる。【００５８】
以上説明したように、本実施形態によれば、メモリブロック（Ｌ（１），Ｌ（２））１２に保持したデータを変換しながら処理することにより復号結果を得るので、検査行列の各列ベクトルに対して、ｂビットのデータＬ（１）とｂビットのデータＬ（２）との合計２ｂビットのデータを保持すればよく、データを保持するための記憶容量が既存の復号方法よりも少なく済む。【００５９】
具体的には、本実施形態によれば、検査行列の各列ベクトル、例えば第ｊ列ベクトル（ｊ＝０，１，・・・，Ｎ−１）に対して合計２ｂビットのデータＬｊ（１），Ｌｊ（２）を保持し、そのデータを更新しながら処理を行う。各行ベクトル、例えば第ｉ行ベクトル（ｉ＝０，１，・・・，Ｒ−１）と、集合Ｕ（ｉ）の成分に対し、各々ｂビットのデータを保持し、それを更新しながら処理を行う既存の復号方法よりも本実施形態の復号方法の方が、データを保持するための記憶容量が少なく済む。【００６０】
なお、本実施形態の復号装置１０は、自身の備えるメモリブロック（Ｆ）１１に受信データを保持して処理を実行することとしたが、本発明はこれに限定されるものではない。他の例として、低密度パリティ検査符号を用いて符号化されたデータを記録した記録媒体を復号装置１０に装着し、復号装置１０が記録媒体に記録されているデータを参照しながら、そのデータを復号することにしてもよい。その場合、メモリブロック（Ｆ）１１は不要となる。【００６１】
また、上述した本実施形態の復号装置１０では、列ベクトル毎にデータを読み出し、チェックノード処理をしてデータを更新し、記憶するといった一連の処理を逐次的に繰り返すこととした。しかし、本発明はこの構成に限定されるものではない。他の例として、並列処理を導入することによって、上述した復号処理を高速化することにしてもよい。【００６２】
式（２）に示した検査行列を有する擬似巡回低密度パリティ検査符号の復号処理に並列処理を適用した場合を例示する。ここでは、上述した並列処理数ｐを式（２）の検査行列の成分となる巡回行列のサイズｍの約数とした場合について説明する。この場合、メモリブロック（Ｆ）１１とメモリブロック（Ｌ（１），Ｌ（２））１２は、それぞれ図４と図５に示したものと同じ構成である。また、各メモリブロック内のＲＡＭにおけるデータ構造は式（６）と式（７）に示したものと同じである。また、各メモリブロック内に含まれるＲＡＭの数は同じｎ個である。さらに各ＲＡＭにアクセスするためのアドレスの生成方法については、上述した逐次的処理を行なう実施形態と同様に、メモリブロック（Ｆ）１１とメモリブロック（Ｌ（１），Ｌ（２））１２とで同じ方法である。そのため、ここではメモリブロック（Ｌ（１），Ｌ（２））１２についてのみ説明することにする。ｎ個の各ＲＡＭの各々にｒ個の初期アドレス値Ａ（ｉ，ｊ）（０≦ｉ＜ｒ，０≦ｊ＜ｎ）を割り当てる。第ｊ番目のＲＡＭの第ｉ番目の初期アドレス値Ａ（ｉ，ｊ）を次のように決める。【００６３】
【数８】
2009075143.tif 000010
ここで、ｋ（ｉ，ｊ）は、式（２）の検査行列に関する（ｉ，ｊ）成分であるｍ×ｍ巡回置換行列Ｉｉ，ｊの第１行ベクトルにおける非零成分位置を表す整数である（０≦ｋ（ｉ，ｊ）＜ｍ）。アドレス値Ａ（ｉ，ｊ）はｋ（ｉ，ｊ）をｍ／ｐで割った剰余に一致する。各ＲＡＭの読み出しと書き込みに関するアドレス生成は全てｒ個のパターンからなる。これらｒ個のパターンは初期アドレス値が異なるだけで、単に１を加算することによってそれ以降のアドレス値を生成するという点では同一である。【００６４】
アドレス生成の各パターンはｍ／ｐ単位時間周期で変わる。例えば、第ｊ番目のＲＡＭの最初の初期アドレス値はＡ（０，ｊ）であり、式（７）においてｋ＝Ａ（０，ｊ）としたデータが読み出される。次いで読み出されるのがアドレス値Ａ（０，ｊ）＋１のデータであり、これは式（７）においてｋ＝Ａ（０，ｊ）＋１としたものである。以下同様にアドレス値に１を加算する。ただし、アドレス値ｍ／ｐ−１の次はアドレス値０とし、その後アドレス値Ａ（０，ｊ）−１のデータ読み出しまで同様に続ける。【００６５】
次いで読み出されるのが次の初期アドレス値Ａ（１，ｊ）に対応するデータである。以下、上述と同様の手順でデータを読み出す。ｉ＝０，１，・・・，ｒ−１のｒ個のパターンの初期アドレス値Ａ（ｉ，ｊ）の全てについて同様の処理を行うことが１回の繰り返し復号処理に相当する。１回の繰り返し復号処理を終えたら初めに戻り、同様の処理を予め定められた最大繰り返し回数分だけ繰り返す。【００６６】
以上のように、ｎ個のＲＡＭに関するアドレス生成はＭＯＤ（ｍ／ｐ）のカウンターを用いて行うことができる。また、このカウンター値（アドレス値）がｍ／ｐ−１から０となるタイミングで１ビットの信号を出力する。これは、図６に示した並列型のチェックノード処理装置中のシフト回路６２，６３で使用される。【００６７】
メモリブロック（Ｌ（１），Ｌ（２））１２から読み出される式（７）の各データは、データ幅を２ｂビットから２ｂｐビットに拡大され、並列型のデータ変換器に入力される。並列型データ変換器の処理は、図２に示したデータ変換器１３と同様であり、データ変換器１３がＲＡＭと同数のｎ個だけ配置される。並列型のデータ変換器を通して得られるＬ（１）部分のｂｐビットのデータは、メモリブロック（Ｆ）１１から読み出された式（６）のｂｐビットのデータと加算される。なお、この加算はｂビット単位で行われる。【００６８】
このような手順による加算で生成された、ＲＡＭの個数と同数のｎ個のｂｐビットのデータは全て並列型のチェックノード処理装置へ入力される。【００６９】
図６は、並列型のチェックノード処理装置を示すブロック図である。並列型のチェックノード処理装置は、図１Ｂにおけるステップ１０３の処理をｐ個分並列に実行する。【００７０】
図６を参照すると、並列型のチェックノード処理装置は、ｐ個のチェックノード処理器６１、２ｎ個のシフト回路６２，６３、および２個のデータ整列器６４，６５を有している。チェックノード処理器６１は、図３に示したチェックノード処理器１４と同じものである。シフト回路６２，６３はｂ×ｐビットの情報を入力とし、その入力をｂビット毎に巡回シフトして出力する回路である。シフト回路６２，６３のシフト量は、式（２）に示した検査行列に依存して定まる。【００７１】
図６に示した並列型のチェックノード処理装置では、ｎ個のｂｐビットのデータの各々はシフト回路６２へ入力される。並列型のチェックノード処理装置はｎ個のシフト回路６２を備えており、その各々にｂｐビットのデータが入力される。シフト回路６２は入力されたｂｐビットのデータをｂビット単位で予め定められた分だけ巡回シフトして出力する。そのシフト量は、ＲＡＭに関する初期アドレス値（式（８）参照）に基づいて、式（９）によって定まる。【００７２】
【数９】
2009075143.tif 000011
初期アドレス値Ａ（ｉ，ｊ）からアドレス値ｍ／ｐ−１まで順次読み出される第ｊ番目のＲＡＭデータに対応するシフト量は式（９）のｓ（ｉ，ｊ）に一致する。次いでアドレス値０からアドレス値Ａ（ｉ，ｊ）−１まで順次読み出される第ｊ番目のＲＡＭデータに対応するシフト量はｓ（ｉ，ｊ）＋１に一致する。ここで、ｓ（ｉ，ｊ）＋１＝ｐであればシフト量が０として、入力をそのまま出力することになる。上記のＲＡＭのアドレス生成の説明において述べたように、アドレス値がｍ／ｐ−１から０となるタイミングで出される１ビットの信号を利用して、シフト量がｓ（ｉ，ｊ）からｓ（ｉ，ｊ）＋１に切り替えられる。【００７３】
ｎ個のシフト回路６２の各々の出力はｂｐビットである。データ整列器６４は、ｎ個のシフト回路６２の各出力のデータからｐ個のチェックノード処理器への入力を生成する装置である。データ整列器６４は、ｎ個の各シフト回路の出力ｂｐビットを入力し、これらをｂビット毎に区切って表記した、ｊ＝０，１，・・・，ｎ−１のｎ個のデータ（ｄ０（ｊ），ｄ１（ｊ），・・・，ｄｐ−１（ｊ））を整列させることにより、ｉ＝０，１，・・・，ｐ−１のｐ個の（ｄｉ（０），ｄｉ（１），・・・，ｄｉ（ｎ―１））を生成し、それぞれを対応するチェックノード処理器６１に出力する。【００７４】
ｐ個の各チェックノード処理器６１は、ｎｂビットのデータ（ｄｉ（０），ｄｉ（１），・・・，ｄｉ（ｎ―１））を入力し、それらに対して所定の処理を行い、処理結果であるｎｂビットのデータを出力する。それぞれｎｂビットからなるｐ個の出力データはデータ整列器６５に入力される。データ整列器６５では、データ整列器６４とは逆の方法で、ｐ個のｎｂビットからなる出力データを、ｎ個のｂｐビットからなるデータに整列させ、それぞれをシフト回路６３へ入力する。シフト回路６３は、シフト回路６２による巡回シフトを元に戻す役割をはたす。即ち、シフト回路６３のシフト量とシフト回路６２のシフト量の和がｐもしくは０に一致する。図６に示した並列型のチェックノード処理装置から出力されたデータに対する処理は、上述した逐次的な処理を行う実施形態のデータ変換器１３による処理と同じである。ただし、本実施形態ではｎ個のデータ変換器１３が並列で処理を行う。【００７５】
図７は、本実施形態の復号装置の動作を時系列で示したタイムチャートである。メモリブロック（Ｆ）１１のｎ個のＲＡＭに受信データが保持されている状態で復号処理を開始する。ｎ個のＲＡＭに保持される受信データは、１シンボル＝ｂビットとして、ｎ×ｐ×（ｍ／ｐ）シンボル分である。図７は、メモリブロック（Ｆ）１１とメモリブロック（Ｌ（１），Ｌ（２））１２に含まれるｎ個のＲＡＭの内の１つのＲＡＭ内に注目し、そのデータの更新について１周期分の処理の流れが示されている。他のｎ−１個のＲＡＭについても初期アドレス値、およびシフト回路におけるシフト量の設定以外は、これと同じである。【００７６】
最上段の処理の流れを見ると、まず、設定された初期アドレス値Ａ（式（８）参照）を用いて、メモリブロック（Ｆ）１１からｂビット×ｐのデータを読み出し、メモリブロック（Ｌ（１），Ｌ（２））１２からｂビット×ｐ×２のデータを読み出し、それらを加算器あるいはデータ変換器および加算器を介して、シフト回路６２に入力する。なお、ここでのデータ変換処理は、ｂビット×ｐ×２のデータを上位ｂビット×ｐと下位ｂビット×ｐとに分離し、差分の算出や結合を行うものである。このデータ変換処理は基本的に上述したデータ変換器１３の処理と同じである。上述したデータ変換器１３の処理は、ここでのデータ変換処理におけるｐ＝１の場合の処理である。【００７７】
初期シフト量ｓは初期アドレス値Ａと式（９）によって定まる。シフト回路６２の出力は、他のｎ−１個のＲＡＭからシフト回路６２を経由して導かれたデータと共にデータ整列器６４によって整列され、チェックノード処理器６１に入力される。チェックノード処理器６１によって処理されたデータは、データ整列器６５により、データ整列器６４と逆の整列方法で整列された後にシフト回路６３によりシフトされる。このｂビット×ｐのデータはデータ変換器によってｂビット×ｐのデータと結合される。結合によって得られたｂビット×ｐ×２のデータは、メモリブロック（Ｌ（１），Ｌ（２））１２のＲＡＭのアドレス値Ａに書き込まれる。【００７８】
以上の処理をアドレス値Ａ＋１，Ａ＋２，・・・に保持されている各ＲＡＭデータに対して、図７に示されているようにパイプラインで実行する。例えば第１周期が終了すると、初期アドレス値とシフト量をセットし直して第２周期を実行し、ＲＡＭデータを更新する。ｒ個の全ての初期アドレス値について処理を実行していき、合計ｒ周期が終了すると１回の復号処理が終了したことになる。これが予め定められた最大指定回数だけ繰り返される。【００７９】
なお、上述した各実施形態では、図１Ｂのステップ１０３のチェックノード処理において、式（４）および式（５）を用い、双曲線正接関数の対数によってＬｊ（１）を算出する例を示したが、本発明はこれに限定されるものではない。他の例として、式（１０）を用いてＬｊ（１）を算出することにしてもよい。【００８０】
【数１０】
2009075143.tif 000012
式（１０）を用いたチェックノード処理では加算器からの入力としてＦＫ＋βＬｋ（１））が必要である。そのため、加算器１５は、メモリブロック（Ｆ）１１のデータと、メモリブロック（Ｌ（１），Ｌ（２））１２からデータ変換器１３を経て得られるデータとを加算するとき、メモリブロック（Ｌ（１），Ｌ（２））１２からデータ変換器１３を経て得られるデータに重み付けをすることとする。式（１０）ではβが重みを表している。重み値βは検査行列（式（１）、式（２））の選択に応じて調整すればよい。また、重み値βは必ずしも一定である必要はなく、適応的に変化させてもよい。【００８１】
入力の最上位ビット部分が正負の極性を表し、残りのビット部分が絶対値を表している場合、式（１０）を用いたチェックノード処理では、最上位ビット部分の排他的論理和と、残りのビット部分の最小値とを算出すればよいことになる。これは、式（４）および式（５）を用いて行うチェックノード処理と比較して、双曲線正接関数の対数関数を利用することに起因して必要となるテーブル３２，３５が不要となる。その結果として、チェックノード処理を単純な比較回路で実現できるという利点がある。【００８２】
次に、上述した復号装置を用いたデータ通信システムを例示する。【００８３】
図８は、本実施形態の復号装置を用いたデータ通信システムの構成を示すブロック図である。図８を参照すると、データ通信システム８０は送信装置８１と受信装置８２とを有している。【００８４】
送信装置８１は、符号化装置８３、同期制御・変調器入力生成装置８４、および変調器８５を有している。符号化装置８３は、低密度パリティ検査符号を用いて符号化したデータを出力する。同期制御・変調器入力生成装置８４は、符号化装置８３からの出力を、受信装置８２での同期を可能にするフレームにのせ、変調器８５の変調方式に適合するデータに変換して出力する。変調器８５は、同期制御・変調器入力生成装置８４は所定の変調方式で変調して送出する。変調器８５の出力は通信路を介して受信装置８２にて受信される。【００８５】
受信装置８２は、復調器８６、同期制御・復号装置入力生成装置８７、および復号装置８８を有している。復調器８６は、通信路からの信号を受信し、変調器８５の変調方式に対応する方式で復調を行い、得られたデータを出力する。同期制御・復号装置入力生成装置８７は、復調器８６から出力されたデータのフレーム同期をとり、復号装置８６への入力に適合するデータに変換して出力する。復号装置８８は、同期制御・復号装置入力生成装置８７から出力されたデータから、上述の実施形態に示した処理によって低密度パリティ検査符号の復号を行い、得られたデータを出力する。【００８６】
なお、ここでは上述した実施形態の復号装置を通信システムに適用した例を示したが、復号装置は他にも適用することができる。他の例としてデータ蓄積システムに、上述の復号装置を適用することもできる。誤り訂正技術を用いることにより、蓄積したデータの信頼性向上を図ったデータ蓄積システムにおいて、低密度パリティ検査符号を用いて符号化したデータを蓄積装置に蓄積し、蓄積装置から取り出したデータを復号装置で復号するという形態が考えられる。【００８７】
次に、上述した復号方法について数値を用いた具体例を示す。【００８８】
ここでは、式（１）に示した検査行列のサイズがＮ＝４０９５、Ｒ＝５０４であるとする。また、式（２）で定義される集合Ｕ（ｉ）は、ｉが０≦ｉ＜５０４であり、Ｕ（ｉ）の成分数が全て６４に一致するとする。その場合、通信システムを例にとれば、フレーム長が４０９５ビットのフレームを単位としてビット列を転送するシステムとするができる。その場合、一般的には、１フレーム中の約１０％が誤り訂正のための冗長部分となる。復号装置への入力データを構成する各シンボルのビット幅ｂが６ビットであるとすると、復号装置では、メモリブロック（Ｆ）１１として４０９５×６ビットの記憶容量が必要とされる以外に、メモリブロック（Ｌ（１），Ｌ（２））１２に必要な記憶容量は２×４０９５×６ビットである。この数値例を文献４に開示された既存の復号方法を用いる復号装置と比較すると記憶容量が約７５％削減されている。その一方で誤り率特性の劣化は０．１〜０．２ｄＢ程度に抑えられている。【００８９】
以上、実施形態を参照して本発明を説明したが、本発明は実施形態に限定されるものではない。クレームに定義された本発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【００９０】
この出願は、２００７年１２月１３日に出願された日本出願特願２００７−３２１９２８を基礎として優先権の利益を主張するものであり、その開示の全てを引用によってここに取り込む。
【図１Ａ】
2009075143.tif 000013
【図１Ｂ】
2009075143.tif 000014
【図２】
2009075143.tif 000015
【図３】
2009075143.tif 000016
【図４】
2009075143.tif 000017
【図５】
2009075143.tif 000018
【図６】
2009075143.tif 000019
【図７】
2009075143.tif 000020
【図８】
2009075143.tif 000021
【国際調査報告】
2009075143.tif 000022
2009075143.tif 000023