(57)【特許請求の範囲】
【請求項１】
巡回置換サイズ可変の構造を持つ擬似巡回型の低密度パリティ検査符号の復号装置において、
前記低密度パリティ検査符号の受信値もしくは復号処理で発生する信頼度情報と前記受信値との和である累積信頼度情報を保持する複数の累積ＬＬＲメモリと、
前記信頼度情報の更新を行う低密度パリティ符号復号の列処理、行処理に対応する複数のプロセッサからなる、複数の列処理・行処理コンポーネントと、
前記累積ＬＬＲメモリと前記列処理・行処理コンポーネントの間において前記累積ＬＬＲメモリの１レコードにおけるデータ数に対応する並列度で多段にデータの巡回置換処理を行い、かつ、前記累積ＬＬＲメモリへの書き込み時に次の読み出し時の置換処理を合成した処理を実行する多段差分巡回置換手段と、
前記多段差分巡回置換手段の動作に合わせて前記累積ＬＬＲメモリへの受信データの書き込み時に受信データの置換処理を行う受信値整列手段と、
前記多段差分巡回置換手段の動作に合わせて前記累積ＬＬＲメモリの読み出し開始アドレスを保持し、読み出し時にはそのインクリメントを行うアドレス管理手段と、
前記多段差分巡回置換手段、前記受信値整列手段で使用するパラメータおよび前記アドレス管理手段で保持する、前記累積ＬＬＲメモリの読み出し開始アドレスを算出する制御手段と、
を少なくとも備えていることを特徴とする復号装置。
【請求項２】
前記アドレス管理手段は
前記累積ＬＬＲメモリの読み出し開始点となるアドレスを保持するカレントアドレスレジスタと、
前記カレントアドレスレジスタのアドレスを初期値として前記累積ＬＬＲメモリの読み出しアドレスおよび書き込みアドレスを制御するアドレス更新手段と、
を備え、
前記カレントアドレスレジスタは前記制御手段で計算された、当該メモリ領域の次の処理における読み出し開始アドレスを保持するように更新を行う、
ことを特徴とする請求項１に記載の復号装置。
【請求項３】
前記受信値整列手段は
受信データをレコード単位に整列して出力するレコード生成手段と、
前記多段差分巡回置換手段と同一の処理を行う多段巡回置換手段と、
前記レコード生成手段と前記多段巡回置換手段とで使用するパラメータを管理する受信値整列制御手段と、
を少なくとも備えていることを特徴とする請求項１または２に記載の復号装置。
【請求項４】
擬似巡回型の前記低密度パリティ検査符号のパリティ検査行列における各列ブロックの先頭の巡回置換は恒等変換であり、
前記受信値整列手段は、前記レコード生成手段と前記受信値整列制御手段とから成ることを特徴とする請求項３に記載の復号装置。
【請求項５】
前記累積信頼度情報から符号語ビットの０,１を判定した結果を保持する復号結果メモリと、
前記多段差分巡回置換手段の動作に合わせて前記復号結果メモリから復号結果を出力時に整列処理を行う出力整列手段と、
前記出力整列手段で使用するパラメータを算出する手段と、
を少なくとも備えていることを特徴とする請求項１ないし４のいずれかに記載の復号装置。
【請求項６】
前記出力整列手段は
前記多段差分巡回置換手段と同一の処理をビット単位で行う多段巡回置換手段と、
前記多段巡回置換手段の出力から出力系列を生成する出力系列形成手段と、
前記多段巡回置換手段と前記出力形成手段とで使用するパラメータを管理する出力整列制御手段と、
を少なくとも備えていることを特徴とする請求項５に記載の復号装置。
【請求項７】
擬似巡回型の前記低密度パリティ検査符号のパリティ検査行列における各列ブロックの先頭の巡回置換は恒等変換であり、
前記出力整列手段は、前記出力系列形成手段と前記出力整列制御手段とから成ることを特徴とする請求項６に記載の復号装置。
【請求項８】
巡回置換サイズ可変の構造を持つ擬似巡回型の低密度パリティ検査符号の復号方法であって、
前記低密度パリティ検査符号の受信値もしくは復号処理で発生する信頼度情報と前記受信値との和である累積信頼度情報をメモリに保持する保持ステップと、
前記信頼度情報の更新を行う低密度パリティ符号復号の列処理、行処理時に、前記メモリの１レコードにおけるデータ数に対応する並列度で多段にデータの巡回置換処理を行い、かつ、前記メモリへの書き込み時に次の読み出し時の置換処理を合成した処理を実行する多段差分巡回置換ステップと、
を少なくとも有し、
前記多段差分巡回置換ステップの動作に合わせて、前記メモリへの受信データの書き込み時に受信データの置換処理を行い、かつ、前記メモリの読み出し開始アドレスからの読み出し時に前記読み出し開始アドレスをインクリメントして保持し直すことを特徴とする復号方法。
【請求項９】
前記多段差分巡回置換ステップの動作に合わせて、前記累積信頼度情報から符号語ビットの０,１を判定した復号結果を整列処理して出力することを特徴とする請求項８に記載の復号方法。
【請求項１０】
擬似巡回型の前記低密度パリティ検査符号のパリティ検査行列における各列ブロックの先頭の巡回置換が恒等変換であることを特徴とする請求項８または９に記載の復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復号装置および復号方法に関し、特に、低密度パリティ検査(ＬＤＰＣ：Low-Density  Parity-Check)符号の復号装置および復号方法に関するものであり、例えば、通信システム・ストレージシステム等の高信頼化を図ることを可能とする復号装置および復号方法に関する。
【背景技術】
【０００２】
誤り訂正符号は、符号化、復号という処理によってデータ伝送時に混入するノイズの影響を低減する技術である。符号化は送信するデータに冗長を付加する処理であり、符号化されたデータを符号語と呼ぶ。通信路に送出された符号語はノイズの影響を受けて受信時には符号語の一部のビットが反転するといったエラーが起こる。復号はこのエラーの影響を受けた受信語から冗長を利用して元のデータに復元する処理である。【０００３】
ＬＤＰＣ符号は、１９６０年代に提案された誤り訂正符号であるが、ターボ符号（Turbo  Code）との関連が指摘され、１９９０年代後半になって注目を集めるようになった（例えば、非特許文献１参照。）。【０００４】
ＬＤＰＣ符号は、疎、かつ、タナーグラフで表現したときに小さなloop（ループ）の個数が小さいパリティ検査行列を持つ、ということで特徴付けられ、この性質から比較的効率の良い高性能復号方法が存在する。この復号方法はメッセージ・パッシング復号（Message-Passing  decoding,以下、ＭＰ復号と略す）と呼ばれている。【０００５】
ＬＤＰＣ符号のＭＰ復号法は、符号語ビットの信頼度情報をパリティ検査行列の列に対応する列処理および行に対応する行処理によって反復的に更新することによって実行される。行処理で生成される信頼度情報は外部情報と呼ばれる。この反復的更新の順序には任意性がある。行処理で更新した外部情報を同一iteration（反復）内でそれに続く行処理で利用するシリアルスケジュールは、レイヤードスケジューリングとも呼ばれて、例えば非特許文献２、非特許文献３に開示されている。【０００６】
受信値および信頼度情報は、一般に、対数尤度比(ＬＬＲ：Log-Likelihood  Ratio)の形で保持される。シリアルスケジュールの典型的な実装では、受信値もしくは受信値と外部情報との和である累積ＬＬＲを保持する複数のメモリと外部情報を保持する複数のメモリとが存在する。前者を累積ＬＬＲメモリ、後者を外部情報メモリ、総称してＬＬＲメモリと呼ぶことにする。【０００７】
復号処理の高速化は、複数の行に対して同時に行処理を行う並列化によって達成されるが、一般にはこれらのＬＬＲメモリへのアクセス方法、および、ＬＬＲメモリとプロセッサとの間のデータのルーティングが課題となる。かかる課題を効率良く処理することが可能な符号クラスとして擬似巡回型ＬＤＰＣ符号が知られている。【０００８】
擬似巡回型ＬＤＰＣ符号のパリティ検査行列の例を、図８に示す。図８に示すように、パリティ検査行列は、同一サイズの正方行列の部分行列から構成され、この部分行列は、零行列もしくは単位行列をシフトした、巡回置換を表す行列I(j,k)が対応する。なお、図８は、巡回置換サイズＺ＝５の場合のパリティ検査行列の例を示している。この部分行列単位の行、列成分をそれぞれ行ブロック、列ブロックと呼ぶことにする。巡回置換サイズＺ＝５の図８の例では、パリティ検査行列は、行ブロック０、１，２，３、列ブロック０，１，２，３，４から構成されている。また、パリティ検査行列において列、行の１の個数はそれぞれ列次数、行次数と呼ばれる。【０００９】
擬似巡回型ＬＤＰＣ符号では、同一列ブロックもしくは同一行ブロック内の列もしくは行は同一次数を持つ。列ブロックk（次数d_k,）において零行列ではない部分行列を上から順にI(0,k)，I(1,k)，…，I(d_k−１,k)と表す。I(j,k)は単位行列の各行に対するシフト値によって表すことができ、これをs(j,k)と表記する。例えば、s(j,k)＝0,1は、それぞれ、I(j,k)が単位行列、単位行列の各行を右に１巡回シフトした行列であることを表す。【００１０】
擬似巡回型ＬＤＰＣ符号では、巡回置換サイズＺに対して、Ｚ個の行単位で並列化を行うことで効率良く処理を行うことができる。このとき、累積ＬＬＲや外部情報は１個の列ブロックにおけるＺ個のデータを１レコードとして読み書きの単位とする。図９は、図８のパリティ検査行列に対する累積ＬＬＲメモリ構成、データ保持方法の模式図である。【００１１】
図９において、１レコードの"０  １  ２  ３  ４"は、各列ブロックにおける０から４までの位置(Ｚ＝５の場合)に対応するデータを保持することを表している。図８のパリティ検査行列において、列ブロック０と１、列ブロック３と４は、同時に、累積ＬＬＲメモリをアクセスすることがないので、同一累積ＬＬＲメモリに保持することができる。したがって、かかる場合には、図９のように、列ブロック０と１は累積ＬＬＲメモリ０、列ブロック２は累積ＬＬＲメモリ１、列ブロック３と４は累積ＬＬＲメモリ２と、３個の独立な累積ＬＬＲメモリで復号装置を構成することができる。【００１２】
累積ＬＬＲメモリからの読み込み時には、レコード単位で読み込んだデータを、バレルシフト（Barrel  Shift：巡回シフト）によって、I(j,k)に従って巡回置換し、列処理および行処理を行うコンポーネントに送る。ここで更新された累積ＬＬＲはI(j,k)の逆置換に対応する巡回置換を行い、累積ＬＬＲメモリへの書き込みを行う。【００１３】
モバイル通信などのアプリケーションでは、チャネルの状態や送信データサイズなどに柔軟に対応可能なフレーム構成が要求され、誤り訂正符号は符号長を可変とする必要が生じる。擬似巡回型ＬＤＰＣ符号では巡回置換サイズＺを可変とすることによりこれに対応することができる。【００１４】
しかし、巡回置換サイズＺを可変にした場合、その設定の細かさに応じて一般に並列化に伴う巡回置換手段のオーバーヘッドは大きくなる傾向にある。最も直截的な方法は、可能性のあるすべての巡回置換サイズＺに対して巡回置換手段をそれぞれ用意し、実際の巡回置換サイズＺの値によって切り替える方式である。しかし、かかる方式は、巡回置換サイズＺの種類が多い場合には非常に無駄が大きい。【００１５】
巡回置換サイズＺが或る整数の倍数であれば、行、列を入れ替えてこの整数のサイズの巡回置換から成る擬似巡回型ＬＤＰＣ符号で表すことができる。しかし、かかる方法も、巡回置換サイズＺを小刻みに設定が可能な場合には、小さな巡回置換サイズを持つ擬似巡回型ＬＤＰＣ符号として表されてしまうため、並列度はあまり大きくならず、高速化を図ることができない。【００１６】
一定の並列度Ｓ（＝ＬＬＲレコード内のデータ個数）の処理で任意のシフトサイズＺすなわち巡回置換サイズＺに対応可能であるような復号装置の実装は、符号長可変のアプリケーションに向けた復号装置の実装の一つの望ましい形態である。この場合、列処理・行処理コンポーネントにおいて、列処理１,列処理２のプロセッサもそれぞれＳ個用意すれば十分となり、Ｓ個単位でデータが入力されればこれらを効率良く動作させることができる。巡回置換サイズＺが２Ｓ以上という条件の下、このような方式の実現例が、特許文献１のＷＯ２００８/０６９２３１号公報に述べられている。【００１７】
前記特許文献１の手法は、信頼度情報を保持するＬＬＲメモリは並列度Ｓの倍数になるように巡回的に拡大した形でメモリにデータを保持する。図１０は、特許文献１における累積ＬＬＲメモリのデータ保持方法の模式図であり、巡回置換サイズＺ＝１５,並列度Ｓ＝６の場合のＬＬＲメモリの模式図である。図１０に示すように、最終レコードは列ブロックにおけるインデックスで１２,１３,１４,０,１,２に相当するデータで構成される。列ブロック当たりのＬＬＲメモリの深さＤは３となる。【００１８】
実際には、図１０のように、巡回置換サイズＺの最大値ＭａｘＺに対応するアラインメントで、列ブロック単位でデータは格納される。行処理も、このように巡回的に拡大した形で実行される。巡回置換処理は、サイズＳすなわち並列度Ｓのレコード単位の入力に対し、２個の隣接するレコードからシフトおよび選択スイッチによってI(j,k)に従うサイズＳでの出力を多段で実行する多段巡回置換手段で実現される。書き込み時にはI(j,k)の逆置換になるサイズＳでの多段巡回置換手段を実行し、メモリへの書き込みを行う。【００１９】
図１１は、従来の復号装置の構成を示す構成図であり、前記特許文献１によるシリアルスケジュールに対する復号装置の構成を示している。図１１において、ＲＯＭ１００は、図８におけるパリティ検査行列の構造およびI(j,k)の情報を保持するメモリである。また、累積ＬＬＲメモリ１０１は、図１０に示したように、受信値もしくは受信値と外部情報との和である累積ＬＬＲをＳ個のレコード単位（１度の読み書きの単位）で保持するメモリである。図１１は、累積ＬＬＲメモリ１０１が２個のイメージを表しているが、図８のパリティ検査行列を持つ符号であれば、図９に示したように、３個の累積ＬＬＲメモリ１０１を用意すれば十分となる。【００２０】
メモリ入力制御１０２は、パリティ検査行列の列ブロックの構造に合わせて復号装置に入力される受信値の累積ＬＬＲメモリへの振り分けを行う。レコード生成手段１０３ａは、復号装置の入力データである受信値をＳ個単位のレコードに生成する処理を行う。【００２１】
多段巡回置換手段１０６ａ，１０６ｂは、累積ＬＬＲに対して、それぞれ、I(j,k)とI(j,k)の逆置換I(j,k)^{-1}（シフト値では−s(j,k) mod Ｚ）とに相当する巡回置換処理をサイズＳのレコード単位の入出力で実行する。【００２２】
列処理・行処理コンポーネント１０５は、ＭＰ復号を実際に行う装置であり、Ｓ個の列処理・行処理コンポーネント１０５が独立に動作する。図１１では、外部情報メモリは、この列処理・行処理コンポーネント１０５の構成要素となっている形態で表しているが、累積ＬＬＲメモリ１０１と巡回置換処理との間に列処理手段を置く構成も考えられる。【００２３】
硬判定手段１０７は、累積ＬＬＲから復号結果の０,１の判定を行う。また、復号結果メモリ１０８は、硬判定手段１０７の硬判定結果を保持するメモリである。出力系列形成手段１０９ａは、復号結果において巡回的にパディングされている部分を削除して出力ビット列を形成する処理を行う。制御手段１１０ａは、復号開始時に巡回置換サイズＺに合わせたパラメータ調整と、I(j,k)に対応する列ブロックを処理する際にはそれに応じて列処理・行処理コンポーネント１０５および累積ＬＬＲメモリ１０１のアドレスを生成する。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】ＷＯ２００８/０６９２３１号公報,"DECODING DEVICE AND DECODING METHOD"（第８−１０頁）
【非特許文献】
【００２５】
【非特許文献１】D.J.C.Mackay："Good Error Correcting Codes based on Very Sparse Matrices"，IEEETransactions on Information Theory 45 pp.３９９-４３１, １９９９.
【非特許文献２】E. Boutillon, J. Castura, and F.R.Kschishcang:"Decoder-First Code Design"，the 2nd International Symposium on Turbo Codes and Related Topics," pp.４５９-４６２, ２０００.
【非特許文献３】D. E. Hocevar："A Reduced Complexity Decoder Architecture via Layered Decoding of ＬＤＰＣ Codes"，IEEESiPS 2004, pp.１０７-１１２, ２００４.
【発明の概要】
【発明が解決しようとする課題】
【００２６】
前記特許文献１の方式は、巡回置換サイズＺの可変性に基づく符号長可変の擬似巡回型ＬＤＰＣ符号の復号において、一定並列度Ｓで２Ｓ以上の任意の巡回置換サイズＺに対応可能であり、巡回置換サイズＺを細かく設定するアプリケーションに対しても効果的に並列化を実現することができる。しかし、図９のようなＺ＝Ｓの単純な場合と同一並列度で比較すると、巡回置換に必要な装置の規模は２，３倍程度となり、復号装置全体の複雑度にも大きな影響を与える。したがって、擬似巡回ＬＤＰＣ符号の復号において、巡回置換サイズＺ可変に伴う巡回置換処理のこのようなオーバーヘッドを改善する手法が望まれる。【００２７】
（本発明の目的）
本発明は、かかる問題に鑑みてなされたものであり、一定の並列度Ｓで任意の巡回置換サイズＺに対応可能で、かつ、装置規模の低減が可能な復号装置および復号方法を提供することを目的としている。
【課題を解決するための手段】
【００２８】
前述の課題を解決するため、本発明による復号装置および復号方法は、次のような特徴的な構成を採用している。下記（１）及び（８）なる番号は請求項の項番号にそれぞれ対応している。【００２９】
（１）巡回置換サイズ可変の構造を持つ擬似巡回型の低密度パリティ検査符号の復号装置において、
前記低密度パリティ検査符号の受信値もしくは復号処理で発生する信頼度情報と前記受信値との和である累積信頼度情報を保持する複数の累積ＬＬＲメモリと、
前記信頼度情報の更新を行う低密度パリティ符号復号の列処理、行処理に対応する複数のプロセッサからなる、複数の列処理・行処理コンポーネントと、
前記累積ＬＬＲメモリと前記列処理・行処理コンポーネントの間において前記累積ＬＬＲメモリの１レコードにおけるデータ数に対応する並列度で多段にデータの巡回置換処理を行い、かつ、前記累積ＬＬＲメモリへの書き込み時に次の読み出し時の置換処理を合成した処理を実行する多段差分巡回置換手段と、
前記多段差分巡回置換手段の動作に合わせて前記累積ＬＬＲメモリへの受信データの書き込み時に受信データの置換処理を行う受信値整列手段と、
前記多段差分巡回置換手段の動作に合わせて前記累積ＬＬＲメモリの読み出し開始アドレスを保持し、読み出し時にはそのインクリメントを行うアドレス管理手段と、
前記多段差分巡回置換手段、前記受信値整列手段で使用するパラメータおよび前記アドレス管理手段で保持する、前記累積ＬＬＲメモリの読み出し開始アドレスを算出する制御手段と、
を少なくとも備えている復号装置。
（８）巡回置換サイズ可変の構造を持つ擬似巡回型の低密度パリティ検査符号の復号方法であって、
前記低密度パリティ検査符号の受信値もしくは復号処理で発生する信頼度情報と前記受信値との和である累積信頼度情報をメモリに保持する保持ステップと、
前記信頼度情報の更新を行う低密度パリティ符号復号の列処理、行処理時に、前記メモリの１レコードにおけるデータ数に対応する並列度で多段にデータの巡回置換処理を行い、かつ、前記メモリへの書き込み時に次の読み出し時の置換処理を合成した処理を実行する多段差分巡回置換ステップと、
を少なくとも有し、
前記多段差分巡回置換ステップの動作に合わせて、前記メモリへの受信データの書き込み時に受信データの置換処理を行い、かつ、前記メモリの読み出し開始アドレスからの読み出し時に前記読み出し開始アドレスをインクリメントして保持し直す復号方法。
【発明の効果】
【００３０】
本発明の復号装置および復号方法によれば、以下のような効果を奏することができる。
本発明は、巡回置換行列のブロックから成る擬似巡回型ＬＤＰＣ符号の復号装置において、一定の並列度で任意の巡回置換サイズに対応可能な装置構成を示している。このような復号装置は、一定の並列度単位での多段巡回置換処理を行う手法を用いることによって実現することが可能であるが、本発明では、かかる手法に対して、累積ＬＬＲメモリへの受信値や信頼度情報の書き込み時において、次の読み込み時に適用される巡回置換処理と合成した差分置換処理を適用することによって読み込み時の多段巡回置換処理を不要とし、装置規模の改善を実現している。【００３１】
すなわち、本発明によって累積ＬＬＲメモリからの読み込み時の多段巡回置換手段を省略することができる。一方、書き込み時の多段巡回置換手段は本質的には前記特許文献１と同様の構成で実現することができる。なお、本発明の実現のためには、累積ＬＬＲメモリのアドレスを管理する機能と受信値入力整列の機能とを新たに追加する必要があるが、新たに追加するこれらの機能は、多段巡回置換手段と比べて遥かに小さい規模で実装することができる。つまり、本発明によって、巡回置換サイズの設定に対する高いフレキシビリティと高い並列度を保ったまま、復号装置の装置規模を改善することが可能となる。
【図面の簡単な説明】
【００３２】
【図１】本発明による復号装置の構成例を示す構成図である。
【図２】図１に示す復号装置のアドレス管理手段の内部構成の一例を表す構成図である。
【図３】図１に示す復号装置の受信値整列手段の内部構成の一例を表す構成図である。
【図４】図１に示す復号装置の出力整列手段の内部構成の一例を表す構成図である。
【図５】図１に示す復号装置の列処理・行処理コンポーネントの内部構成の一例を表す構成図である。
【図６】図１に示す復号装置の多段差分巡回置換手段の内部構成の一例を表す構成図である。
【図７Ａ】図６に示す多段差分巡回置換手段の動作の一例を説明するためのフローチャートである（その１）。
【図７Ｂ】図６に示す多段差分巡回置換手段の動作の一例を説明するためのフローチャートである（その２）。
【図８】擬似巡回型ＬＤＰＣ符号のパリティ検査行列の例を示す行列式である。
【図９】図８のパリティ検査行列に対する累積ＬＬＲメモリ構成、データ保持方法の模式図である。
【図１０】特許文献１における累積ＬＬＲメモリのデータ保持方法の模式図である。
【図１１】従来の復号装置の構成を示す構成図である。
【発明を実施するための形態】
【００３３】
以下、本発明による復号装置および復号方法の好適な実施例について添付図を参照して説明する。
【００３４】
図１は、本発明による復号装置の構成例を示す構成図である。以下、擬似巡回型ＬＤＰＣ符号の巡回置換サイズをＺ,復号処理並列度をＳとおく。並列度Ｓは固定であり、２Ｓ以上の大きさである巡回置換サイズＺは復号開始前に外部から任意に設定されるものとする。
【００３５】
図１の復号装置における各構成要素のうち、従来の図１１の復号装置と同一の機能を有する回路要素については、図１１と同じ符号を付して示しており、ここでの重複する説明は省略する。
【００３６】
受信値整列手段１０３はパリティ検査行列の各列ブロックに対して非零行列の部分行列I(０,k)に基づく順序でＳ個単位のレコードで受信値ＬＬＲの整列を行い、これが累積ＬＬＲメモリ１０１に書き込まれる。また、アドレス管理手段１０４は多段差分巡回置換手段１０６に合わせて累積ＬＬＲメモリ１０１へアクセスするためのアドレスの保持、更新を行う。
【００３７】
多段差分巡回置換手段１０６は列処理・行処理コンポーネント１０５が出力する累積ＬＬＲデータに対して、I(j+1,k)・I(j,k)^{-1}に対応する差分巡回置換処理(つまり(s(j+1,k)−s(j,k)) mod Ｚの巡回シフト処理)を並列度Ｓで実行する処理を行う。出力整列手段１０９は、復号結果の出力の際にI(0,k)の逆置換に対応する巡回置換を行い出力ビット列を整列する。制御手段１１０は、復号開始時に巡回置換サイズＺに合わせたパラメータ調整を行うとともに、受信値整列手段１０３、アドレス管理手段１０４、多段差分巡回置換手段１０６、出力整列手段１０９の動作に必要なパラメータやメモリアドレスなどの計算、設定を各列ブロックに対して行う。
【００３８】
なお、列処理・行処理コンポーネント１０５は、図１１と同様に、Ｓ個の行に対応するＳ個のコンポーネントが独立に動作する形で構成される。
【００３９】
以下、前述した各構成要素について詳しく説明する。
【００４０】
制御手段１１０は、復号開始時には巡回置換サイズＺに対応する、列ブロック当たりのメモリの深さＤと最終レコードのデータ数Ｅを次の[式１][式２]によって計算し、受信値整列手段１０３、アドレス管理手段１０４、多段差分巡回置換手段１０６に設定する。
[式１]      Ｄ← roundup(Ｚ/Ｓ).
[式２]      Ｅ← Ｚ Mod Ｓ.
【００４１】
ここで、"roundup()"は切り上げによる整数化を表す関数を示し、"x Mod y"はxのyに対する剰余であり１からyまでの値をとる。
【００４２】
また、個々のコンポーネントに対して、次のようなパラメータの生成を行う。
（ａ）受信値整列手段１０３に設定するパラメータ：復号処理開始時に各列ブロックに対してI(0,k)のシフト値s(0,k)に対して次の[式３]〜[式５]のOffset, Gap, Flagを生成する。
[式３]      Offset← s(j, k) mod Ｓ.
[式４]      Gap← truncate(s(j,k) / Ｓ).
[式５]      Flag← (Offset < Ｅ ? 0 : 1).
【００４３】
ここで、"mod Ｓ"は０からＳ−１の値を採ることを意味する。"truncate()"は切り捨てによる整数化を表す関数である。また、"(x < y ? : 0 : 1)"はx < yであれば０,そうでなければ１を返す関数を表す。
【００４４】
（ｂ）多段差分巡回置換手段１０６に設定するパラメータ：I(j,k)に対応するメッセージ更新処理時にはI(j,k), I(j + 1,k)に対応するシフト値s(j,k), s(j + 1,k)から次の[式６]〜[式８]を計算する。なお、[式６]、[式７]で列ブロックkの次数がd_kの場合には、巡回的にI(d_k,k)＝I(0,k)、s(d_k,k)＝s(0,k)とする。
[式６]      Offset'← ((s(j+1, k) − s(j, k)) mod Ｚ) mod Ｓ.
[式７]      Gap'← truncate(((s(j+1, k) - s(j, k)) mod Ｚ) / Ｓ).
[式８]      Flag'← (Offset'< Ｅ ? 0 : 1).
【００４５】
（ｃ）アドレス管理手段１０４に設定するパラメータ：復号開始時には列ブロックkに対しては[式４]、[式５]を用いて、次の[式９]の累積ＬＬＲメモリ１０１の最初の読み出しアドレスinit_addressを計算し、read_addressの初期値として設定する。
[式９]      init_address← (Gap + Flag).
【００４６】
一方、繰り返し処理中においては、I(j,k)に対応するメッセージ更新処理時にはアドレス管理手段１０４から入手した、列ブロックkに対応する現在の累積ＬＬＲメモリ１０１の読み出しアドレスであるread_addressに対して[式７]、[式８]を用いて、次の[式１０]に基づいてnext_addressを計算して、アドレス管理手段１０４では当該列ブロックの次のread_addressに設定する。
[式１０]      next_address← (Gap' + Flag' + read_address) mod Ｄ.
【００４７】
次に、前述した各構成要素の内部構成について図面を用いて詳しく説明する。
図２は、図１に示す復号装置のアドレス管理手段１０４の内部構成の一例を表す構成図である。アドレス管理手段１０４は、カレントアドレスレジスタ２０１、アドレス更新手段２０２を少なくとも備えている。
【００４８】
カレントアドレスレジスタ２０１は、各列ブロックに対して累積ＬＬＲメモリ１０１の読み出し開始アドレスであるread_addressを保持する。カレントアドレスレジスタ２０１の典型的な実装では、累積ＬＬＲメモリ１０１に対応するように用意して、各カレントアドレスレジスタ２０１は当該累積ＬＬＲメモリ１０１に対応する複数の列ブロックのread_addressを保持する。I(j,k)に対応する復号処理開始時にはこのread_addressをアドレス更新手段２０２に設定する。
【００４９】
制御手段１１０はアドレス更新手段２０２に設定したread_addressを受け取り、更新後のnext_addressを算出する。アドレス管理手段１０４はI(j + 1,k)に対応する復号処理時の列ブロックkに対する累積ＬＬＲメモリ１０１のread_addressとしてこれを保持する。
【００５０】
アドレス更新手段２０２は、累積ＬＬＲメモリ１０１に対応するように用意する。アドレス更新手段２０２はカウンタを保持し、mod Ｄでインクリメントを行う。該カウンタの初期値はカレントアドレスレジスタ２０１で保持するread_addressに設定される。累積ＬＬＲメモリ１０１の実際の物理アドレスはアドレス更新手段２０２で計算される値と当該列ブロックのメモリ上の領域に対応するオフセット値との和となる。
【００５１】
累積ＬＬＲメモリ１０１への書き込み処理は読み込みを行ったアドレスにその順序で書き込みを行う。このとき、書き込み時のアドレスは読み込み時のアドレスと同様のカウンタの初期値に設定して実現する。もしくは、読み込み時のアドレスをレジスタなどを用いてテンポラリに保持しておくことなどによって得ることができる。
【００５２】
次に、図３は、図１に示す復号装置の受信値整列手段１０３の内部構成の一例を表す構成図である。受信値整列手段１０３は、受信値整列制御手段３０１、レコード生成手段３０２、多段巡回置換手段３０３を少なくとも備えている。
【００５３】
受信値整列制御手段３０１は制御手段１１０によって設定されたパラメータに基づいてレコード生成手段３０２および多段巡回置換手段３０３の制御を行う。レコード生成手段３０２は最終レコードのデータ数Ｅと並列度Ｓとが一致しない場合に巡回的に先頭データを補完する形でＳ個単位のデータのレコードを生成し、多段巡回置換手段３０３に送る。多段巡回置換手段３０３は前述の[式３]〜[式５]のOffset, Gap, Flagに基づいて当該列ブロックI(0,k)に対応する多段巡回置換処理を行う。なお、多段巡回置換手段３０３は図１における多段差分巡回置換手段１０６と同一の構成で実現することができる。
【００５４】
本発明による擬似巡回ＬＤＰＣ符号の復号処理においては列ブロックkの復号結果の出力の際にもI(0,k)の逆置換に対応する巡回置換処理を実現する必要がある。図１の復号装置においてはこの処理を実現する手段を出力整列手段１０９として表している。
【００５５】
列ブロックkに対応する硬判定はI(d_k - 1,k)に対応する信頼度情報更新処理が終了した時点で行うものとする。このとき、制御手段１１０は出力整列手段１０９に対して次のパラメータを設定する。つまり、復号処理開始時に各列ブロックに関しI(０, k)^{-1}のシフト値(−s(０, k) mod Ｚ)に対して次の[式１１]〜[式１４]のOffset", Gap", Flag", output_addressを生成する。
[式１１]      Offset"← (− s(0,k) mod Ｚ) mod Ｓ.
[式１２]      Gap"← truncate(((   s(0,k)) mod Ｚ) / Ｓ).
[式１３]      Flag"← (Offset" < Ｅ ? 0 : 1).
[式１４]      output_address← (Gap" + Flag").
【００５６】
図４は、図１に示す復号装置の出力整列手段１０９の内部構成の一例を表す構成図である。出力整列手段１０９は、出力整列制御手段４０１、多段巡回置換手段４０２、出力系列形成手段４０３を少なくとも備えている。
【００５７】
出力整列制御手段４０１は制御手段１１０によって設定されたパラメータに基づいて多段巡回置換手段４０２および出力系列形成手段４０３の制御を行う。多段巡回置換手段４０２は[式１１]〜[式１３]のOffset", Gap", Flag"に基づいて当該列ブロックI(0, k)^{-1}に対応する多段巡回置換処理を行う。多段巡回置換手段４０２は図１における多段差分巡回置換手段１０６と同一の構成（ただしデータは１ビット）で実現することができる。
【００５８】
出力系列形成手段４０３は多段巡回置換手段４０２の出力をテンポラリに格納し、[式１４]のoutput_addressを開始点にmod Ｄで巡回的に読み出しを行い、最後に(Ｓ − Ｅ)個の巡回的にパディングを行ったビットを削除して出力系列の生成を行う。パリティ検査行列の各列ブロックの先頭の巡回置換I(0,k)が単位行列の場合は、図３、図４それぞれにおける多段巡回置換手段３０３，４０２が不要となり、簡易化を図ることが可能となる。
【００５９】
（動作例）
最初に、ＬＤＰＣ符号のＭＰ復号アルゴリズムの実施例について説明する。次数eの或る行において'１'が立っている位置をp_0, …, p_(e-1)とおく。また、p_kの列次数をd_kとして、対応する行に順に0,1, …, (d_k   1)とインデックスを付ける。p_kにおいてインデックスjに対応する行に対する行処理で生成される外部情報をλ(p_k,j)とおく。受信値および外部情報はすべて対数尤度比(ＬＬＲ：Log-Likelihood  Ratio)の形式で表されているものとする。このとき、p_kに対する累積ＬＬＲは次の［式１５］のように表すことができる。
[式１５]      V(p_k)← r(p_k) + λ(p_k, ０) + λ(p_k, 1) +
…+ λ(p_k, d_k − 1)
【００６０】
ここで、r(p_k)はp_kに対応する受信値であり、λ(p_k,j)は通常０に初期化する、もしくは、同等の処理を行って復号処理を開始する。p_kに対して今注目している行をi_k番目とする。シリアルスケジュールに基づくＭＰ復号では、このi_k行に対して次の[式１６]〜[式１８]の処理を行い、λ(p_k,j)およびV(p_k)の更新を行う。
[式１６]      τ(k)← V(p_k) − λ(p_k,i_k). (k = 0,1,…,e-1)
[式１７]      (λ(p_0,i_0),…, λ(p_(e-1), i_(e-1)) 
← F(τ(0), τ(1), …, τ(e-1)).
[式１８]      V(p_k)←  τ(k) + λ(p_k, d_k). (k = 0, 1,…, e -1).
【００６１】
ここでは、[式１６], [式１８]をそれぞれ列処理１、列処理２と呼ぶことにする。[式１７]のFは行処理を表す関数であり、sum-productアルゴリズムやnormalized  min-sumアルゴリズムなどが知られている。シリアルスケジュールでは、この一連の更新処理をパリティ検査行列の行に対して、順に行って、すべての行に対してこれを行う処理を1 iterationとする。各ビットの０,１の判定（硬判定）はV(p_k)の正負に基づいて行うことができる。ＬＤＰＣ符号は大きな符号長であっても行、列の次数が小さいため、[式１６]〜[式１８]の処理の複雑度は小さい。
【００６２】
図５は、図１に示す復号装置の列処理・行処理コンポーネント１０５の内部構成の一例を表す構成図であり、前述の[式１６]〜[式１８]を実行する列処理・行処理コンポーネントの構成を示している。列処理・行処理コンポーネント１０５は、列処理１コンポーネント５００、行処理ユニット５０１、列処理２コンポーネント５０２、外部情報メモリ５０３、テンポラリメモリ５０４を少なくとも備えている。
【００６３】
１行単位で処理を行う場合は、列処理１コンポーネント５００,列処理２コンポーネント５０２は、行次数個の[式１６]、[式１８]を行うプロセッサで構成される。テンポラリメモリ５０４は、[式１６]のτ(k)を保持し、[式１８]の計算を可能にする。
【００６４】
図６は、図１に示す復号装置の多段差分巡回置換手段１０６の内部構成の一例を表す構成図である。多段差分巡回置換手段１０６は、多段差分巡回置換制御手段６００、レジスタ更新手段６０１、データ抽出手段６０２を少なくとも備え、レジスタ更新手段６０１は複数のレジスタ６０３およびその更新を制御する切り替え手段６０４で構成され、データ抽出手段６０２は第１シフト手段６０５、第２シフト手段６０６および選択手段６０７で構成されている。
【００６５】
レジスタ更新手段６０１は列処理・行処理コンポーネント１０５から出力されたレコード単位のデータを保持するＦＩＦＯ（First-In  First-Out）の構造を基本とするが、先頭レコードを保持しておき、最終レコードの後の入力として挿入する機能および２時点分一度にシフトする機能も実現する構成となっている。
【００６６】
データ抽出手段６０２は隣接する２レコードからＳ個のデータを取り出す処理を行う。各レコードの（巡回的ではない）第１シフト手段６０５,第２シフト手段６０６および各ポジションでどちらのデータを選択するかという選択手段６０７で構成されている。選択手段６０７の動作は第１シフト手段６０５,第２シフト手段６０６のシフト値から決定され、このシフト値は、多段差分巡回置換制御手段６００で最終レコードのデータ数Ｅと前述の[式６]〜[式８]のFlag',Gap', Offset'を用いて決定することができる。
【００６７】
多段差分巡回置換制御手段６００はレジスタ更新手段６０１の制御およびデータ抽出手段６０２における第１シフト手段６０５,第２シフト手段６０６のシフト値、選択手段６０７の設定を行う。
【００６８】
なお、図３に示す受信値整列手段１０３の多段巡回置換手段３０３も前述の[式３]〜[式５]のFlag, Gap, Offsetを用いて図６と同一の構成で実現することができる。また、図４に示す出力整列手段１０９の多段巡回置換手段４０２も[式１２]〜[式１４]のFlag", Gap", Offset"を用いて図６と同一の構成で実現することができる。ただし、復号結果のため、データ幅は１ビットで十分となる。
【００６９】
図７Ａと図７Ｂは、図６に示す多段差分巡回置換手段１０６の動作の一例を説明するためのフローチャートであり、以下に、図７Ａと図７Ｂの主なステップについて説明する。
【００７０】
(ステップＳ７００)多段差分巡回置換手段１０６は[式７]のFlag'の値に依存して制御が異なる。
【００７１】
(ステップＳ７０１)"Retrieve(sh1, sh2)"は、データ抽出手段６０２において第１シフト手段６０５はシフト値sh1の左シフト、第２シフト手段６０６はシフト値sh2の右シフトを行い、選択手段６０７は、左からsh2個は第１シフト手段６０５からのデータを、右から(Ｓ- sh2)個は第２シフト手段６０６からのデータを選択してＳ個のレコードを生成して出力する。
【００７２】
(ステップＳ７０２)"Retrieve()"のsh1, sh2の値はI(j,k)のブロックの処理開始からの時点tとGap'または（Gap'+1）との比較結果に基づいて変更が行われる。
【００７３】
(ステップＳ７０３)ステップＳ７０２における具体的なsh1,sh2の変更値である。
【００７４】
(ステップＳ７０４)"Flag'= ０"の場合は先頭レコードを格納しておき、最終レコードに巡回的に付加する形で出力を生成する。
【００７５】
(ステップＳ７０５)"Flag'= １"の場合は、レジスタ更新手段６０１の複数のレジスタ６０３のうち、ステップＳ７０６でレジスタ１,レジスタ２をそのままにしてレジスタ３にデータを読み込む。しかる後は、本ステップＳ７０５に示すように、レジスタ１，２，３の値が更新される。
【００７６】
なお、図７Ａと図７Ｂのフローチャートではソフトウェア的なフローで記述しているが、ループ内は並列に動作することが可能なため、多段差分巡回置換手段１０６における動作は、(Ｄ + ２)回程度のサイクル数で実行することができる。
【００７７】
次に、擬似巡回型ＬＤＰＣ符号のパリティ検査行列における列ブロックkの次数が３、s(0,k)＝５, s(1,k)＝１１, s(2,k)＝３で、かつ、巡回置換サイズＺ＝１５,並列度Ｓ＝６の場合を例にとって、列ブロックkに対するＭＰ復号における巡回置換処理について本発明による復号装置の具体的な実施例を説明する。かかる数値例の場合は、
Ｄ＝roundup(１５/６)＝３,Ｅ＝１５ mod ６＝３
となる。
【００７８】
[受信値の累積ＬＬＲメモリ１０１への書き込み]
列ブロックkに対して受信値データは列ブロック内のインデックスで０,１,…,１４(＝Ｚ−１)に復号装置に読み込まれるものとする。このとき、受信値整列手段１０３におけるレコード生成手段３０２は最終レコードのデータ数Ｅ＝３に対応して次のようにＳ個単位のレコードのデータを生成し、多段巡回置換手段３０３に順に送信する。
(０)：０ １ ２ ３ ４ ５
(１)：      ６ ７ ８ ９ １０ １１
(２)：１２ １３ １４ ０ １ ２
【００７９】
多段巡回置換手段３０３にはs(0,k)＝５に対応して、[式３]〜[式５]のOffset＝５,Gap＝０,Flag＝１が設定される。多段巡回置換処理手段３０３はこのパラメータを利用して、図６と同様の構成を用いて次のようにデータを並べ直して出力を行う：
(０)：２ ３ ４ ５ ６ ７
(１)：    ５ ６ ７ ８ ９ １０
(２)：１１ １２ １３ １４ ０ １
【００８０】
また、アドレス管理手段１０４におけるアドレス更新手段２０２は、これをaddress０から順に累積ＬＬＲメモリ１０１に書き込みを行うようにアドレスを生成する。
address ０:２ ３ ４ ５ ６ ７
address１：    ５ ６ ７ ８ ９ １０
address２：１１ １２ １３ １４ ０ １
【００８１】
制御手段１１０では列ブロックkに対して Gap＝０, Flag＝１から[式９]によってinit_address＝(０ + １ ) mod ３ = １を算出し、これをアドレス管理手段１０４の列ブロックに対するread_addressの初期値として設定する。
【００８２】
[第１iterationにおけるI(0,k)(s(0,k)＝５)に対応する復号処理]
read_address＝１から順に読み込みを行い、列処理・行処理コンポーネント１０５では、次の順序で処理を行う。
(０)：  ５ ６ ７ ８ ９ １０
(１)：１１ １２ １３ １４ ０ １
(２)：２ ３ ４ ５ ６ ７
【００８３】
列処理・行処理コンポーネント１０５のデータ出力もこの順序で行われる。多段差分巡回置換手段１０６では、差分値(s(1,k) − s(0, k)) mod Ｚ＝６のシフトに基づく巡回置換処理を行う。[式６]〜[式８]のパラメータはOffset'＝０, Gap'＝１, Flag'＝０となる。このパラメータに基づいて多段差分巡回置換手段１０６は次のような出力を行う。
(０)：    ８ ９ １０ １１ １２ １３
(１)：１１ １２ １３ １４ ０ １
(２)：２ ３ ４ ５ ６ ７
【００８４】
アドレス管理手段１０４はこれを読み込み時と同じ順序のアドレスに書き込みを行う。
address１：    ８ ９ １０ １１ １２ １３
address２：１１ １２ １３ １４ ０ １
address０:２ ３ ４ ５ ６ ７
【００８５】
このように、読み込み時と同じ順序でアドレスに書き込みを行うことによって累積ＬＬＲメモリ１０１を多重に持つ必要はなく、上書きによる更新が可能となる。
【００８６】
なお、[式１０]において、next_address＝(Gap'+ Flag' + read_address ) mod Ｄ＝(１ + ０ + １) mod ３＝２となり、これがアドレス管理手段１０４で次のread_addressとして設定される。
【００８７】
[第１iterationにおけるI(1,k)(s(1,k)＝１１)に対応する復号処理]
read_address＝２から順に読み込みを行い、列処理・行処理コンポーネント１０５では次の順序で処理を行う。
(０)：１１ １２ １３ １４ ０ １
(１)：２ ３ ４ ５ ６ ７
(２)：    ８ ９ １０ １１ １２ １３
【００８８】
列処理・行処理コンポーネント１０５のデータ出力もこの順序で行われる。多段差分巡回置換手段１０６では差分値(s(2,k) − s(1,k)) mod Ｚ＝７のシフト値に基づく巡回置換処理を行う。[式６]〜[式８]のパラメータはOffset'＝１,Gap'＝１, Flag'＝０となる。このパラメータに基づいて多段差分巡回置換手段１０６は次のような出力を行う。
(０)：  ０ １ ２ ３ ４ ５
(１)：３ ４ ５ ６ ７ ８
(２)：９ １０ １１ １２ １３ １４
【００８９】
アドレス管理手段１０４はこれを読み込み時と同じ順序のアドレスに書き込みを行う。
address２：  ０ １ ２ ３ ４ ５
address０：３ ４ ５ ６ ７ ８
address１：９ １０ １１ １２ １３ １４
【００９０】
なお、[式１０]のnext_address＝(Gap'+ Flag' + read_address ) mod Ｄ＝(１ + ０ +２) mod ３＝０となり、これが次のread_addressとして設定される。
【００９１】
[第１iterationにおけるI(2,k)(s(2,k)＝３)に対応する復号処理]
read_address＝０から順に読み込みを行い、列処理・行処理コンポーネント１０５では次の順序で処理を行う。
(０)：３ ４ ５ ６ ７ ８
(１)：９ １０ １１ １２ １３ １４
(２)：    ０ １ ２ ３ ４ ５
【００９２】
列処理・行処理コンポーネント１０５のデータ出力もこの順序で行われる。多段差分巡回置換手段１０６では差分値(s(0,k) − s(2,k)) mod Ｚ＝２のシフト値に基づく巡回置換処理を行う。[式６]〜[式８]のパラメータはOffset'＝２,Gap'＝０, Flag'＝０となる。このパラメータに基づいて多段差分巡回置換手段１０６は次のような出力を行う。
(０)：    ５ ６ ７ ８ ９ １０
(１)：１１ １２ １３ １４ ０ １
(２)：２ ３ ４ ５ ６ ７
【００９３】
列ブロックkはI(2,k)のメッセージ更新処理終了後に硬判定を行うとすると、この復号結果はこのレコード構造で順に復号結果メモリ１０８に書き込まれる。復号結果メモリ１０８は上書きしても問題が起こらないため、累積ＬＬＲメモリ１０１とは異なって常にaddress０から書き込みを行って問題ない。累積ＬＬＲメモリ１０１に対して、アドレス管理手段１０４はこれを読み込み時と同じ順序のアドレスに書き込みを行う。
address０：    ５ ６ ７ ８ ９ １０
address１：１１ １２ １３ １４ ０ １
address２：２ ３ ４ ５ ６ ７
【００９４】
なお、[式１０]のnext_address＝(Gap'+ Flag' + read_address ) mod Ｄ＝(０ + ０ +０) mod ３＝０となり、アドレス管理手段ではこれを次のread_addressとして設定する。
【００９５】
[第２iterationにおけるI(0,k) (s(0,k)＝５)に対応する復号処理]
第１iterationにおけるI(0,k)に対応するメッセージ更新処理の場合と異なり、read_address＝０となっていることに注意する。本発明では、制御手段１１０とアドレス管理手段１０４とを用いて、このようなread_addressの動的な可能を行うことを可能にしている。
以降、第１iterationの場合と同様に、メッセージ更新処理が遂行される。
【００９６】
[復号結果の出力]
復号結果メモリ１０８にはI(2,k)に対応するメッセージ更新処理後に対応して、
address０：    ５ ６ ７ ８ ９ １０
address１：１１ １２ １３ １４ ０ １
address２：２ ３ ４ ５ ６ ７
の順序で復号結果のビットが格納されている。
【００９７】
出力生成時には復号結果メモリ１０８からこの順序で読み出され、(−s(0,k) mod Ｚ)＝１０に基づき[式１１]〜[式１３]のパラメータはOffset"＝４, Gap"＝１, Flag"＝１となり、出力整列手段１０９の多段巡回置換手段４０２は次のように復号結果を整列し、テンポラリに格納する。
(０)：    ６ ７ ８ ９ １０ １１
(１)：１２ １３ １４ ０ １ ２
(２)：０ １ ２ ３ ４ ５
【００９８】
出力系列形成手段４０３は[式１４]のoutput_address＝(Gap" + Flag")＝２を開始点に読み出しを行い、パディングを除去して０,１,２, …,１３,１４の元の順序での復号結果を出力する。
【００９９】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１００】
例えば、本発明の実施態様は、課題を解決するための手段における構成（１）及び（８）に加え、次のような構成として表現できる。下記（２）−（７）及び（９）−（１０）なる番号は、請求項の項番号にそれぞれ対応している。
（２）前記アドレス管理手段は
前記累積ＬＬＲメモリの読み出し開始点となるアドレスを保持するカレントアドレスレジスタと、
前記カレントアドレスレジスタのアドレスを初期値として前記累積ＬＬＲメモリの読み出しアドレスおよび書き込みアドレスを制御するアドレス更新手段と、
を備え、
前記カレントアドレスレジスタは前記制御手段で計算された、当該メモリ領域の次の処理における読み出し開始アドレスを保持するように更新を行う、上記（１）の復号装置。
（３）前記受信値整列手段は受信データをレコード単位に整列して出力するレコード生成手段と、
前記多段差分巡回置換手段と同一の処理を行う多段巡回置換手段と、
前記レコード生成手段と前記多段巡回置換手段とで使用するパラメータを管理する受信
値整列制御手段と、
を少なくとも備えている上記（１）または（２）の復号装置。
（４）擬似巡回型の前記低密度パリティ検査符号のパリティ検査行列における各列ブロックの先頭の巡回置換は恒等変換であり、
前記受信値整列手段は、前記レコード生成手段と前記受信値整列制御手段とから成る上記（３）の復号装置。
（５）前記累積信頼度情報から符号語ビットの０,１を判定した結果を保持する復号結果メモリと、
前記多段差分巡回置換手段の動作に合わせて前記復号結果メモリから復号結果を出力時に整列処理を行う出力整列手段と、
前記出力整列手段で使用するパラメータを算出する手段と、
を少なくとも備えている上記（１）ないし（４）のいずれかの復号装置。
（６）前記出力整列手段は
前記多段差分巡回置換手段と同一の処理をビット単位で行う多段巡回置換手段と、
前記多段巡回置換手段の出力から出力系列を生成する出力系列形成手段と、
前記多段巡回置換手段と前記出力形成手段とで使用するパラメータを管理する出力整列制御手段と、
を少なくとも備えている上記（５）の復号装置。
（７）擬似巡回型の前記低密度パリティ検査符号のパリティ検査行列における各列ブロックの先頭の巡回置換は恒等変換であり、
前記出力整列手段は、前記出力系列形成手段と前記出力整列制御手段とから成る上記（６）の復号装置。
（９）前記多段差分巡回置換ステップの動作に合わせて、前記累積信頼度情報から符号語ビットの０,１を判定した復号結果を整列処理して出力する上記（８）の復号方法。
（１０）擬似巡回型の前記低密度パリティ検査符号のパリティ検査行列における各列ブロックの先頭の巡回置換が恒等変換である上記（８）または（９）の復号方法。
【０１０１】
この出願は、２００９年３月１３日に出願された日本出願特願２００９−０６１１８４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１０２】
本発明はモバイル通信などにおける符号長可変の擬似巡回型ＬＤＰＣ符号の復号装置および復号方法に好適に適用することができる。
【符号の説明】
【０１０３】
１００      ＲＯＭ
１０１      累積ＬＬＲメモリ
１０２      メモリ入力制御
１０３      受信値整列手段
１０３ａ    レコード生成手段
１０４      アドレス管理手段
１０５      列処理・行処理コンポーネント
１０６      多段差分巡回置換手段
１０６ａ    多段巡回置換手段
１０６ｂ    多段巡回置換手段
１０７      硬判定手段
１０８      復号結果メモリ
１０９      出力整列手段
１０９ａ    出力系列形成手段
１１０      制御手段
１１０ａ    制御手段
２０１      カレントアドレスレジスタ
２０２      アドレス更新手段
３０１      受信値整列制御手段
３０２      レコード生成手段
３０３      多段巡回置換手段
４０１      出力整列制御手段
４０２      多段巡回置換手段
４０３      出力系列形成手段
５００      列処理１コンポーネント
５０１      行処理ユニット
５０２      列処理２コンポーネント
５０３      外部情報メモリ
５０４      テンポラリメモリ
６００      多段差分巡回置換制御手段
６０１      レジスタ更新手段
６０２      データ抽出手段
６０３      レジスタ
６０４      切り替え手段
６０５      第１シフト手段
６０６      第２シフト手段
６０７      選択手段
【図１】
0005510447.tif 000002
【図２】
0005510447.tif 000003
【図３】
0005510447.tif 000004
【図４】
0005510447.tif 000005
【図５】
0005510447.tif 000006
【図６】
0005510447.tif 000007
【図７Ａ】
0005510447.tif 000008
【図７Ｂ】
0005510447.tif 000009
【図８】
0005510447.tif 000010
【図９】
0005510447.tif 000011
【図１０】
0005510447.tif 000012
【図１１】
0005510447.tif 000013