(57)【要約】ＬＤＰＣデコーダにより、ＬＬＲ‐ＢＰアルゴリズムに基づいた複数のサーキュラントより成るパリティチェックマトリックスＨにより表されるＬＤＰＣコードを反復復号する。第１の計算手段（１０１０）により、次の反復に対し、第１のメモリ（１００５）に記憶された対応するシンボル値の表現と、前の反復からのチェックノードメッセージΛmnとから、シンボルメッセージλnmを計算する。シャフラ（１０３０）により、第１の計算手段（１０１０）から受けたシンボルメッセージのシーケンスを、対応するサブマトリックス中のゼロでないエレメントの位置に応じて変更する。第２の計算手段（ＤＰ‐０，ＤＰ‐１，ＤＰ‐Ｄ−１）により、バレルシフタから受けたシンボルメッセージに応じてチェックノードメッセージを計算し、この計算したチェックノードメッセージの表現を第２のメモリ（１０５０）内に記憶させる。第３の計算手段（１０２０）により、第１及び第２の計算手段の出力に応じて第１のメモリ内のシンボル値の表現を更新する。“スタッガード”又は“シャフルド”ＬＤＰＣデコーディングの原理を用いる。一実施例は、多重対角サーキュラントに対し設計する。
2010532128.tif 000002
【特許請求の範囲】
【請求項１】
ガロアフィールド上のＬＤＰＣコードを反復復号するＬＤＰＣデコーダであって、ＬＤＰＣコードは、複数のサブマトリックスより成る予め決定したＭ×ＮのパリティチェックマトリックスＨにより表され、各サブマトリックスはゼロマトリックスか、又は各行及び列におけるゼロでないエレメントの個数が同じであるマトリックスであり、ＬＤＰＣデコーダは、シンボルメッセージλnmをそれぞれのシンボルノードｎ（０≦ｎ＜Ｎ）から、接続されているチェックノードｍ（０≦ｍ＜Ｍ）に送給するとともに、チェックノードメッセージΛmnをそれぞれのチェックノードｍから、接続されているシンボルノードｎに送給することを表すＬＬＲ‐ＢＰ（Log-Likelihood Ratio Belief-Propagation ）アルゴリズムに基づいており、シンボルノードとチェックノードとの間の接続は、前記パリティチェックマトリックスＨにより規定される当該ＬＤＰＣデコーダにおいて、このＬＤＰＣデコーダが、
‐  各シンボルノードに対し、前記ＬＤＰＣコードの対応するシンボルのそれぞれのシンボル値の表現を記憶する第１のメモリと、
‐  それぞれのチェックノードメッセージΛmnの表現を記憶する第２のメモリと、
‐  次の反復に対し、前記第１のメモリに記憶された対応するシンボル値の表現からシンボルメッセージλnmを計算するとともに、前の反復からチェックノードメッセージを計算する第１の計算手段と、
‐  この第１の計算手段から、第１のシーケンスで配置されたシンボルメッセージを受け、このシンボルメッセージを、対応するサブマトリックスにおけるゼロでないエレメントの位置に応じた異なるシーケンスで生ぜしめるシャフラと、
‐  前記ＬＬＲ‐ＢＰアルゴリズムに応じて、チェックノードメッセージを計算するとともに、計算したこのチェックノードメッセージの表現を前記第２のメモリに記憶させる第２の計算手段であって、この計算は、それぞれのチェックノードによりバレルシフタから受けたシンボルメッセージに応じて行うようにした当該第２の計算手段と、
‐  前記第１及び第２の計算手段の出力に応じて前記第１のメモリ内のシンボル値の表現を更新する第３の計算手段と
を具えるＬＤＰＣデコーダ。
【請求項２】
請求項１に記載のＬＤＰＣデコーダにおいて、前記サブマトリックスの少なくとも１つが、各行及び列に少なくとも２つのゼロでないエレメントを有するマトリックス（以後マルチマトリックスと称する）であり、前記第１の計算手段は、マルチマトリックスにおけるゼロでないエレメントのそれぞれ１つにそれぞれ対応する関連のチェックノードメッセージに応じてこのマルチマトリックスに対応するシンボルメッセージ
【数１】
2010532128.tif 000041
を計算するように配置されているＬＤＰＣデコーダ。
【請求項３】
請求項２に記載のＬＤＰＣデコーダにおいて、前記第１の計算手段は、各反復において関連のチェックノードメッセージのそれぞれ１つを計算結果と合成することにより、単一のシンボルノードに関連するシンボルメッセージを反復計算するように配置されているＬＤＰＣデコーダ。
【請求項４】
請求項１に記載のＬＤＰＣデコーダにおいて、ＬＬＲ‐ＢＰアルゴリズムは、min-sum アルゴリズムに基づいており、ＬＤＰＣエンコーダが、シンボルメッセージの値に補正係数αを乗じる補正手段と、値を予め決定した範囲に制限する飽和手段とを有しており、これら補正手段及び飽和手段は前記第１の計算手段と前記シャフラとの間に配置されているＬＤＰＣデコーダ。
【請求項５】
請求項１に記載のＬＤＰＣデコーダにおいて、シンボルメッセージの表現が、予め決定したシーケンスで前記第１のメモリ内に記憶されており、ＬＤＰＣデコーダは、前記第２の計算手段と前記第３の計算手段との間に配置されて前記予め決定したシーケンスに対応するシーケンスでチェックノードメッセージを生じる更なるシャフラを有しているＬＤＰＣデコーダ。
【請求項６】
請求項１に記載のＬＤＰＣデコーダにおいて、ＬＬＲ‐ＢＰアルゴリズムは、min-sum アルゴリズムに基づいており、前記第２の計算手段は、チェックノードメッセージを圧縮し、このチェックノードメッセージを圧縮形態で前記第２のメモリに記憶させる圧縮手段を有し、前記第１の計算手段は、前記第２のメモリから読み出したチェックノードメッセージを解凍する解凍手段を有しているＬＤＰＣデコーダ。
【請求項７】
請求項１に記載のＬＤＰＣデコーダにおいて、前記サブマトリックスは、ゼロマトリックスか又は少なくとも１つの対角を有する対角マトリックスであるサーキュラントであり、少なくとも１つのサーキュラントは、単位マトリックスを少なくとも１つの位置に亘って回転させることにより形成した対角マトリックスであり、前記シャフラは、サーキュラントの回転に応じてシンボルメッセージのシーケンスを変更するバレルシフタであるＬＤＰＣデコーダ。
【請求項８】
ガロアフィールド上のＬＤＰＣコードを反復復号するＬＤＰＣデコーディング方法であって、ＬＤＰＣコードは、複数のサブマトリックスより成る予め決定したＭ×ＮのパリティチェックマトリックスＨにより表し、各サブマトリックスはゼロマトリックスか、又は各行及び列におけるゼロでないエレメントの個数が同じであるマトリックスとし、前記ＬＤＰＣデコーディング方法は、シンボルメッセージλnmをそれぞれのシンボルノードｎ（０≦ｎ＜Ｎ）から、接続されているチェックノードｍ（０≦ｍ＜Ｍ）に送給するとともに、チェックノードメッセージΛmnをそれぞれのチェックノードｍから、接続されているシンボルノードｎに送給することを表すＬＬＲ‐ＢＰ（Log-Likelihood Ratio Belief-Propagation ）アルゴリズムに基づかせ、シンボルノードとチェックノードとの間の接続は、前記パリティチェックマトリックスＨにより規定する当該ＬＤＰＣデコーディング方法において、このＬＤＰＣデコーディング方法は、
‐  各シンボルノードに対し、前記ＬＤＰＣコードの対応するシンボルのそれぞれのシンボル値の表現を第１のメモリに記憶させるステップと、
‐  それぞれのチェックノードメッセージΛmnの表現を第２のメモリに記憶させるステップと、
‐  次の反復に対し、前記第１のメモリに記憶された対応するシンボル値の表現からシンボルメッセージλnmを計算するとともに、前の反復からチェックノードメッセージを計算する第１の計算を実行するステップと、
‐  この第１の計算により生ぜしめられ、第１のシーケンスで配置されたシンボルメッセージを受け、このシンボルメッセージを、対応するサブマトリックスにおけるゼロでないエレメントの位置に応じた異なるシーケンスで生ぜしめるシャフル処理を実行するステップと、
‐  前記ＬＬＲ‐ＢＰアルゴリズムに応じて、チェックノードメッセージを計算するとともに、計算したこのチェックノードメッセージの表現を前記第２のメモリに記憶させる第２の計算であって、この計算は、それぞれのチェックノードによりバレルシフタから受けたシンボルメッセージに応じて行う当該第２の計算を実行するステップと、
‐  前記第１及び第２の計算の出力に応じて前記第１のメモリ内のシンボル値の表現を更新するステップと
を具えるＬＤＰＣデコーディング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＤＰＣデコーダ及びＬＤＰＣデコーディング方法に関するものである。
【背景技術】
【０００２】
情報源と受信機との間の伝送においては、何らかの伝送エラーが生じるおそれがある。これらエラーの幾つかは、エラー訂正コードを用いて検出するとともに訂正することができる。低密度パリティチェック（ＬＤＰＣ）コードは一種のエラー訂正コードであり、これらはブロックコード（又は等価的にはパリティチェックコード）であり、パリティチェックマトリックスＨにより規定される。これらはガロアフィールドＧＦ（２）上のＬＤＰＣコードの場合に、（Gallager氏の論文“Low-Density Parity Check Code ”, 1963,MITにおいて）R. G. Gallager氏により1963年に発表されたものである。その原理は、濃度の高いガオラフィールド、すなわちｒを素数としたＧＦ（ｒq ）上で（D. J. C. Mackay 及びM. C. Davey 氏著“Low Density Check Code Over GF(q) ”、Cavendish Laboratory、Cambridge 、United Kingdom、1998において）1998年にMackay氏により一般化された。ＬＤＰＣコードは種々の伝送システムに、例えば、衛星通信、無線伝送、光ファイバに用いることができるとともに、種々の記録媒体に、例えば、ハードディスクドライブ、光ディスク、磁気バンドに用いることができる。ＬＤＰＣを用いるシステムの例は、ＤＶＢ‐Ｓ２、ＤＭＢ‐Ｔ（中国のＤＶＢテレストリアル規格：地上デジタルテレビジョン放送規格）、ＳＴｉＭｉ（中国のＤＶＢ衛星規格）、ＩＥＥＥ８０２．１１ｎ及び８０２．１６ｅである。
【０００３】
ＬＤＰＣコードは、Ｍ行Ｎ列の大きさのパリティチェックマトリックスＨにより規定されており、Ｍは（チェックノードに相当する）制約の個数であり、Ｎは変数（シンボルノードによって表わされる、コードのシンボルの推定値）の個数である。位置（ｍ，ｎ）におけるマトリックスのゼロでない入力は、変数ｖn が制約ｃm に加わることを表わす。最新の標準化されたシステムは、サーキュラントと称されるブロック（マトリックス）に細分されたパリティチェックマトリックスを用いている。サーキュラントは、ゼロマトリックス（全てのエレメントがゼロ）であるか、又は単位（アイデンティティ）マトリックスに基づくものである。単位マトリックスに基づくサーキュラントは、単一対角（単位マトリックス自体又はその回転バージョン）とするか、又は多重対角を有するようにしうる。通常、正常な順序での配列でメモリ内に記憶されている変数を、単位マトリックスの回転により規定される位置まで回転させるのに、いわゆるバレルシフタが用いられる。低価格で実現される最新技術は、2006年のIEEE ProceedingsにおけるJ. Dielissen氏等の論文“Low cost LDPC decoder for DVB-S2”（以後［Dielissen, ＤＡＴＥ］と称する）に記載されている。しかし、このアーキテクチュアによっては、“多重対角”を有するＬＤＰＣコードを解決しえない。多重対角の処理は一層複雑であること明らかである。米国特許公開第US2005/0138519A1号明細書には、多重対角サーキュラントに対処するように設計されたアーキテクチュアが開示されている。しかし、このアーキテクチュアは、“多重対角”を解決する必要のない廉価なインスタンス化に向けて拡張しうるものではない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許公開第US2005/0138519A1号明細書
【非特許文献】
【０００５】
【非特許文献１】Gallager氏の論文“Low-Density Parity Check Code ”, 1963,MIT
【非特許文献２】D. J. C. Mackay 氏及びM. C. Davey 氏著“Low Density Check Code Over GF(q) ”、Cavendish Laboratory、Cambridge 、United Kingdom、1998
【非特許文献３】2006年のIEEE ProceedingsにおけるJ. Dielissen氏等の論文“Low cost LDPC decoder for DVB-S2”
【非特許文献４】IEEE Journal of solid-state circuits Vol. 21, No. 2, February 1992における論文“A New Design of a Fast Barrel Switch Network”（G. M. Tharakan及びS. M. Kang氏著）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
拡張可能であり、好ましくは単一又は多重対角サーキュラントを有する幾つかなの標準化システムに対し用いうるようにしたＬＤＰＣデコーディングアーキテクチュアを提供するのが有利である。
【課題を解決するための手段】
【０００７】
かかる目的を良好に達成するために、本発明の第１の態様では、ガロアフィールド上のＬＤＰＣコードを反復復号するＬＤＰＣデコーダであって、ＬＤＰＣコードは、複数のサブマトリックスより成る予め決定したＭ×ＮのパリティチェックマトリックスＨにより表され、各サブマトリックスはゼロマトリックスか、又は各行及び列におけるゼロでないエレメントの個数が同じであるマトリックスであり、ＬＤＰＣデコーダは、シンボルメッセージλnmをそれぞれのシンボルノードｎ（０≦ｎ＜Ｎ）から、接続されているチェックノードｍ（０≦ｍ＜Ｍ）に送給するとともに、チェックノードメッセージΛmnをそれぞれのチェックノードｍから、接続されているシンボルノードｎに送給することを表すＬＬＲ‐ＢＰ（Log-Likelihood Ratio Belief-Propagation ；対数尤度比信念伝搬法）アルゴリズムに基づいており、シンボルノードとチェックノードとの間の接続は、前記パリティチェックマトリックスＨにより規定される当該ＬＤＰＣデコーダにおいて、このＬＤＰＣデコーダが、
‐  各シンボルノードに対し、前記ＬＤＰＣコードの対応するシンボルのそれぞれのシンボル値の表現を記憶する第１のメモリ（１００５）と、
‐  それぞれのチェックノードメッセージΛmnの表現を記憶する第２のメモリ（１０１５）と、
‐  次の反復に対し、前記第１のメモリに記憶された対応するシンボル値の表現からシンボルメッセージλnmを計算するとともに、前の反復からチェックノードメッセージを計算する第１の計算手段（１０１０）と、
‐  この第１の計算手段から、第１のシーケンスで配置されたシンボルメッセージを受け、このシンボルメッセージを、対応するサブマトリックスにおけるゼロでないエレメントの位置に応じた異なるシーケンスで生ぜしめるシャフラ（１０３０）と、
‐  前記ＬＬＲ‐ＢＰアルゴリズムに応じて、チェックノードメッセージを計算するとともに、計算したこのチェックノードメッセージの表現を前記第２のメモリに記憶させる第２の計算手段であって、この計算は、それぞれのチェックノードによりバレルシフタから受けたシンボルメッセージに応じて行うようにした当該第２の計算手段（ＤＰ‐０，ＤＰ‐１，ＤＰ‐Ｄ−１）と、
‐  前記第１及び第２の計算手段の出力に応じて前記第１のメモリ内のシンボル値の表現を更新する第３の計算手段（１０２０）と
を具えるＬＤＰＣデコーダを提供する。
【０００８】
本発明によるアーキテクチュアでは、（しばしばλnmメッセージと称される）シンボルメッセージを直線領域内で（すなわち、シャフラの前で）計算する。このことは、この計算をシャフル領域で行う従来の解決策と相違することである。この本発明によるアーキテクチュアによれば、単一又は多重対角システムに適したエンコーダを形成するのを、主要な設計変更を行うことなく達成しうる。更に、製造費の低減化が可能となる。従属請求項６に記載したように、サブマトリックスはサーキュラントとすることができ、シャフラはバレルシフタとして構成しうる。
【０００９】
本発明による例では、前記サブマトリックスの少なくとも１つを、各行及び列に少なくとも２つのゼロでないエレメントを有するマトリックス（以後マルチマトリックスと称する）とし、前記第１の計算手段は、マルチマトリックスにおけるゼロでないエレメントのそれぞれ１つにそれぞれ対応する関連のチェックノードメッセージに応じてこのマルチマトリックスに対応するシンボルメッセージ
【数１】
2010532128.tif 000003
を計算するように配置する。
【００１０】
シンボルメッセージを直線領域で処理することにより、複数の、ゼロでないエレメント（例えば、多重対角）を有する上述したようなサブマトリックスを処理するのが簡単化される。従属請求項３に記載したように、関連する１つのチェックノードメッセージからの情報をその都度中間結果と合成する簡単な反復構造で、上述したようなマルチマトリックスを対処しうる。
【００１１】
本発明の一例では、前記ＬＬＲ‐ＢＰアルゴリズムを、min-sum アルゴリズムに基づかせ、ＬＤＰＣエンコーダが、シンボルメッセージの値に補正係数αを乗じる補正手段と、値を予め決定した範囲に制限する飽和手段とを有し、これら補正手段及び飽和手段は前記第１の計算手段とバレルシフタとの間に配置する。補正及び飽和処理をバレルシフタの前で実行することにより、バレルシフタは一層制限した値の範囲で動作し、従って、一層廉価に構成しうる。
【００１２】
本発明による一例では、シンボルメッセージの表現を、予め決定したシーケンスで前記第１のメモリ内に記憶させ、ＬＤＰＣデコーダは、前記第２の計算手段と前記第３の計算手段との間に配置されて前記予め決定したシーケンスに対応するシーケンスでチェックノードメッセージを生じる更なるバレルシフタを有するようにする。本発明によるアーキテクチュアでは、逆方向経路（すなわち、第１のメモリに向かう経路）内にも更なるバレルシフタを設けることができる。このようにすることにより、順方向経路におけるバレルシフタの制御を簡単化する。
【００１３】
本発明の一実施例では、前記ＬＬＲ‐ＢＰアルゴリズムを、min-sum アルゴリズムに基づかせ、前記第２の計算手段は、チェックノードメッセージを圧縮し、このチェックノードメッセージを圧縮形態で前記第２のメモリに記憶させる圧縮手段を有し、前記第１の計算手段は、前記第２のメモリから読み出したチェックノードメッセージを解凍する解凍手段を有するようにする。チェックノードメッセージを圧縮形態で記憶させることにより、製造費が廉価となる。本発明によるアーキテクチュアは、圧縮したチェックノードメッセージと、解凍したチェックノードメッセージとの双方に対し動作しうる。
【００１４】
本発明の目的を達成させるために、ガロアフィールド上のＬＤＰＣコードを反復復号するＬＤＰＣデコーディング方法であって、ＬＤＰＣコードは、複数のサーキュラントより成る予め決定したＭ×ＮのパリティチェックマトリックスＨにより表され、各サーキュラントはゼロマトリックスか、又は少なくとも１つの対角を有する対角マトリックスとし、少なくとも１つのサーキュラントは単位マトリックスを少なくとも１つの位置に亘って回転させることにより形成した対角マトリックスとし、前記ＬＤＰＣデコーディング方法は、シンボルメッセージλnmをそれぞれのシンボルノードｎ（０≦ｎ＜Ｎ）から、接続されているチェックノードｍ（０≦ｍ＜Ｍ）に送給するとともに、チェックノードメッセージΛmnをそれぞれのチェックノードｍから、接続されているシンボルノードｎに送給することを表すＬＬＲ‐ＢＰ（Log-Likelihood Ratio Belief-Propagation ）アルゴリズムに基づかせ、シンボルノードとチェックノードとの間の接続は、前記パリティチェックマトリックスＨにより規定する当該ＬＤＰＣデコーディング方法において、このＬＤＰＣデコーディング方法は、
‐  各シンボルノードに対し、前記ＬＤＰＣコードの対応するシンボルのそれぞれのシンボル値の表現を第１のメモリに記憶させるステップと、
‐  それぞれのチェックノードメッセージΛmnの表現を第２のメモリに記憶させるステップと、
‐  次の反復に対し、前記第１のメモリに記憶された対応するシンボル値の表現からシンボルメッセージλnmを計算するとともに、前の反復からチェックノードメッセージを計算する第１の計算を実行するステップと、
‐  この第１の計算により生ぜしめられ、第１のシーケンスで配置されたシンボルメッセージを受け、このシンボルメッセージを、サーキュラントの回転に応じた異なるシーケンスで生ぜしめるバレルシフト処理を実行するステップと、
‐  前記ＬＬＲ‐ＢＰアルゴリズムに応じて、チェックノードメッセージを計算するとともに、計算したこのチェックノードメッセージの表現を前記第２のメモリに記憶させる第２の計算であって、この計算は、それぞれのチェックノードによりバレルシフタから受けたシンボルメッセージに応じて行う当該第２の計算を実行するステップと、
‐  前記第１及び第２の計算の出力に応じて前記第１のメモリ内のシンボル値の表現を更新するステップと
を具えるＬＤＰＣデコーディング方法を提供する。
【００１５】
本発明の上述した及びその他の態様は、以下の実施例に関する説明から明らかとなるであろう。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明を用いうる代表的なシステムを示すブロック線図である。
【図２】図２は、デコーディング処理を可視化したタナーグラフを示す。
【図３】図３は、２つのノード群における反復（繰り返し）を実行する一例を示す。
【図４】図４は、サーキュラントパリティチェックマトリックスを示す。
【図５】図５Ａ及び５Ｂは、バレルシフタの役割を示す。
【図６】図６は、従来技術のデータ経路を示す。
【図７】図７は、min-sum アルゴリズムに対するデータ経路の詳細を示す。
【図８】図８は、従来のトップレベルアーキテクチュアを示す。
【図９】図９は、圧縮型Λ記憶装置を用いている従来のデータ経路を示す。
【図１０】図１０は、本発明によるＬＤＰＣデコーダの基本的なインプリメンテーションを示す。
【図１１】図１１は、バレルシフタの前でmin-sum アルゴリズムに基づいて補正及び飽和を実行するステップを示す。
【図１２】図１２は、好適なデータ経路を示す。
【図１３】図１３は、多重対角に対処するアーキテクチュアを示す。
【図１４】図１４は、圧縮型Λ記憶装置と組み合わせたアーキテクチュアを示す。
【発明を実施するための形態】
【００１７】
図中、異なるものとして説明しない限り、同じ機能を表すのに同じ符号を用いている。図１は、本発明を用いうる代表的なシステム１００を示すブロック線図である。このシステムは、ＬＤＰＣエンコーダ１１０とＬＤＰＣデコーダ１２０とを有している。符号化された信号は、無線又は有線ネットワークのような伝送媒体１３０を介して伝送することができる。符号化された信号は、ハードディスク又は光学式記憶装置のような記憶システムに記憶させることもできることが分かるであろう。この場合、媒体１３０が記憶システムを表す。信号の暗号化／解読、変調／復調等のような、図１に図示していない他の処理も追加することができる。このような追加の処理は周知であり、本発明の一部を成すものではない。
【００１８】
ＬＤＰＣエンコーディング／デコーディング自体は周知である。ここでは、これらの周知の点を簡単に説明するだけとする。簡単な例では、（単一ビットである又は複数のビットを用いて表しうるシンボルと称しうる）ある二進情報を符号化（エンコード）することがエンコーダ１１０のタスクである。値“０”；“０”；“０”；“１”をそれぞれ有する４つの情報ビットＳ１；Ｓ２；Ｓ３；Ｓ４を伝送する必要があるものとする。これらのビットは、マトリックスの形態に配置されている。伝送エラーを検出して訂正しうるようにするために、最初に追加のパリティビットを計算する。これらのパリティビットは、マトリックスの行及び列の双方又は何れか一方に対し、予め決定されたパリティ式が満足されるようなものである。パリティ式は、ガロアフィールドＧＦ（ｒq ）上の式であり、このガロアフィールドでは、ｒが素数であり、ｑは例えば、ＧＦ（２）、ＧＦ（４）、ＧＦ（８）上で、更に一般的にはＧＦ（２q ）上で整数である。本例では、この式は、各行及び列における全てのビットの合計が０モジュロ２（すなわち、ＧＦ（２）における式）に等しくなるようなものである。行及び列の全てに且つパリティ行及び列にもパリティを付加することにより、本例では３×３マトリックスを得ることができる。すなわち、
【数２】
2010532128.tif 000004
が得られる。ビットＰ1 〜Ｐ5 はパリティビットである。以下の６つのパリティチェック式が満足される。
Ｓ1 ＋Ｓ2 ＋Ｐ1 ＝０mod２
Ｓ3 ＋Ｓ4 ＋Ｐ2 ＝０mod２
Ｐ3 ＋Ｐ4 ＋Ｐ5 ＝０mod２
Ｓ1 ＋Ｓ3 ＋Ｐ3 ＝０mod２
Ｓ2 ＋Ｓ4 ＋Ｐ4 ＝０mod２
Ｐ1 ＋Ｐ2 ＋Ｐ5 ＝０mod２
【００１９】
パリティチェック式は、以下の形態にしうる、いわゆるパリティチェックマトリックスＨにより表すことができる。
【数３】
2010532128.tif 000005
ここで、シンボルの配列は、Ｓ1  Ｓ2  Ｐ1  Ｓ3  Ｓ4  Ｐ2  Ｐ3  Ｐ4  Ｐ5 となるように選択する。マトリックスを配列し直すことによりシンボルの他の配列も同様に選択することができる。マトリックスＨにおける列数は、伝送する必要があるビット（シンボル）（システマチックビットと、計算したパリティチェックビットとの双方）の個数に相当する。マトリックスＨにおけるゼロでないエレメントの位置には、どのビットがどの式で確認されるかの情報が含まれている（例えば、Ｓ1 ＋Ｓ2 ＋Ｐ1 ＝０mod２ が第１の行で確認され、Ｓ3 ＋Ｓ4 ＋Ｐ2 ＝０mod２ が第２の行で確認される等）。
【００２０】
低密度パリティチェック（ＬＤＰＣ）コードは、このスパース（疎）パリティチェックマトリックスＨにより特定しうる。“低密度”とは、マトリックスＨにおいて“１”が“０”よりも著しく少ないことを意味する。コードの構造は、パリティチェックマトリックスＨにより完全に表される。実際には、マトリックスＨが有する“１”のエレメントは本例で示すよりも著しく少ない。後の説明で、Ｎはコードワードの長さを表し、Ｍはパリティチェック式の個数を表す。従って、パリティチェックマトリックスＨは、エレメント“０”又は“１”を有するＭ列及びＮ行より成る。このマトリックス中の行はパリティチェック式であり、行中に“１”を有するエレメントの組はこの式の引数である。インデックスｍを有するパリティチェック式の場合、０≦ｍ＜Ｍが、検査されるコードワードシンボル位置の組Ｎ（ｍ）、すなわち、
Ｎ（ｍ）＝｛ｎ｜ｎ＝０，１，…，Ｎ−１；Ｈmn≠０｝
を規定する。
【００２１】
Ｎ（ｍ）におけるエレメントの個数をＫm と称する。同様に、コードワードシンボル位置ｎに対しては、０≦ｎ＜Ｎが、シンボル位置ｎを検査するパリティチェック式のインデックスの組Ｍ（ｎ）、すなわち、
Ｍ（ｎ）＝｛ｍ｜ｍ＝０，１，…，Ｍ−１；Ｈmn≠０｝
を規定する。
【００２２】
Ｍ（ｎ）におけるエレメントの個数をＪn と称する。
【００２３】
ＬＤＰＣアルゴリズムは、しばしば、二部グラフであるタナーグラフにより可視化される。このことは、グラフのノードが２つの独特な組に分断されており、エッジは２つの異なる種類のノードを接続しているだけである。その一例を、上述したマトリックスＨを示す図２に示す。ノードの２つの群をそれぞれシンボルノード（左側のノード）及びチェックノード（右側のノード）と称する。シンボルノードの個数は、マトリックスＨの列Ｎの本数、すなわち伝送されるパリティビット及びシンボルの総数に相当する。チェックノードの個数は、マトリックスＨが有する行Ｍの本数に相当し、これはパリティチェック式の個数に等しい。Ｈmn＝１の場合で且つその場合に限り、ｎ番目のシンボルノード（１≦ｎ≦Ｎ）とｍ番目のチェックノード（１≦ｍ≦Ｍ）とが接続される。上述した例の場合、第１のチェックノードＣＮ−１が第１、第２及び第３のシンボルノードに接続されており、このことは、第１のパリティチェック式においてＳ1 ＋Ｓ2 ＋Ｐ1 ＝０mod２ が確認されることを意味する。
【００２４】
ＬＤＰＣコードのデコーディングは、接続ノード間の通過メッセージであって送信ノードが真であると信じられる値（より一般的には確率）を表しているメッセージに基づいて行われる。このようなデコーディングアルゴリズムの最適化としては種々のものが知られている。これらのアルゴリズムは一般的に、信念（確率）伝搬アルゴリズム（ＢＰ）や、メッセージ通過アルゴリズム（ＭＰＡ）や、sum-product アルゴリズム（ＳＰＡ）と称されている。アルゴリズムは一般的に、乗算を加算に代えるために、対数領域で実行される。ＬＤＰＣデコーダは、“ハードビット”、すなわち、二進シンボル値で動作するのではなく、一般的にデータのいくつかのビット、例えば、８ビットを用いて実行される“ソフトビット”で動作する。これらのビットで表される整数値は、符号化されたシンボルビットが０又は１である可能性がどのくらいであるかの尺度となる。例えば、整数は、範囲［−１２７，１２７］から取り出すことができる。ここで、−１２７は“確実に０”を意味し、−１００は、“たぶん０”を意味し、０は“０である可能性と、１である可能性とが同程度”を意味し、１００は“たぶん１”を意味し、１２７は“確実に１”を意味し、等である。充分な回数の反復後、全てのパリティチェックが満足されたか又は最大回数の反復に達したかに応じ、又シンボルに対する記憶値に基づいて、硬判定、すなわち、復号化ビットを供給しうる。ＬＤＰＣデコーダはソフトビットで初期化されるものであり、これらのソフトビットは、ビットをエンコーダから受信した記憶システム又は伝送の復調器から供給される。例えば、初期段階の従来の無線受信機は、各ビットに対し、受信したビット／シンボルを表す内部アナログ電圧が所定のしきい値からどの程度異なるかを表す整数の尺度を生じる。シンボルノードｎを初期化するソフトビット値を図２にＬn として示してある。一般に、ＬＤＰＣデコーダは、直接尤度（可能性）に基づいて動作させずに、受信情報の対数尤度比（ＬＬＲ）、例えば、“０”が伝送される確率を、“１”が伝送される確率で割った式の対数（又は逆に、“１”が伝送される確率を、“０”が伝送される確率で割った式の対数）に基づいて動作させる。一般に、ｙが既に生じたものとした場合のｘの条件付対数尤度比は、
【数４】
2010532128.tif 000006
である。
【００２５】
この式は、伝送システムを知った上で“解く”ことができる。例えば、簡単な伝送システムでは、伝送すべきビットを、指数が等しい２つの値（例えば、＋１及び−１として表される値）の一方にマッピングしうる（例えば、二進値“０”のビットを＋１にマッピングし、二進値“１”のビットを−１にマッピングする）。エンコーダとデコーダとの間の伝送チャネルは、（ガウス雑音が加わった）ガウスチャネルとして表すことができる。伝送される“１”及び“０”の尤度が等しいものとすると、
【数５】
2010532128.tif 000007
となる。ここで、ｒは受信ビットの値であり、σ2 は雑音分散である。
【００２６】
本発明で用いているＬＤＰＣの復号化は、ＬＬＲが対数尤度比を表す、対数領域における“信念伝搬法に基づく”（ＢＰBased ）アルゴリズム（ＬＬＲ‐ＢＰ based）である。このアルゴリズムは、J. Chen 氏等著“Reduced complexity decoding of LDPC codes ”,IEEE Transactions on Communications, volume 53, pp. 1288-1299, 2005で説明されているように、双曲線関数、ギャラガー（Gallager）のアプローチ、ヤコビアン（Jacobian）変換、最小関数を有する近似ＢＰ、正規化ＢＰ又はこれらの組み合わせに基づかせることができる。以後、このようなアルゴリズムをＬＬＲ‐ＢＰ basedアルゴリズムと称する。このようなアルゴリズムの好適な形態は、正規化min-sum ＬＬＰＣデコーディングアルゴリズムである。このアルゴリズムは、より一般的な信念伝搬（ＢＰ）デコーディングのパーフォーマンスレベルに近い又はしばしば同等なパーフォーマンスレベルを達成するとともに、重大なハードウェアの利点を提供する。以下の詳細な説明は、正規化min-sum アルゴリズムに基づくものであるが、その概念は他の形態の信念伝搬アルゴリズムにも等しく良好に適用されるものである。
【００２７】
グラフの頂点（Ｖ）の組は、Ｎ個のシンボルノードの組とＭ個のパリティチェックノードの組との結合である。エッジ（Ｅ）の組はＨmn＝１である全てのエッジ（ｍ，ｎ）より成る。ＬＤＰＣアルゴリズムの従来の反復は、シンボルノード（Ｎ）からエッジ（Ｅ）を経てチェックノード（Ｍ）に送信されて、返信される情報より成る。該当するシンボルノードはインデックスｎで表され、チェックノードはインデックスｍで表される。
【００２８】
min-sum アルゴリズムの所定の反復ｉに対しては、以下の変数が規定される（図２にはメッセージも示されている）。
‐  Ｌn ：入力メッセージをシンボルノードｎで表現したｘビットである。例えば、符号化されたワードを伝送するのに、ＢＰＳＫ変調が用いられている場合、Ｌn は、
【数６】
2010532128.tif 000008
となる。ここで、ｙn は受信したＢＰＳＫシンボル値であり、σ2 は雑音分散である。変調技術としては適切な如何なるものも用いうることを理解すべきである。
‐  ［数１］：  ｉ番目の反復においてシンボルノードｎからチェックノードｍに送信されるメッセージである。
このメッセージを“シンボルメッセージ”とも称する。このシンボルメッセージは、一般に、（Ｌn である）シンボルノードｎで受信したもとの値と、接続されたチェックノードから受信した更新メッセージとに依存する。従って、第１の反復では、Ｌn のみがシンボルメッセージとして送信される。チェックノードからの更新メッセージを、
【数７】
2010532128.tif 000009
として表す。従来のＬＤＰＣデコーディングでは、［数１］を次式（２）となるように選択しうる。
【数８】
2010532128.tif 000010
【００２９】
この式では、加算は、シンボルノードｎが接続されている（Ｍ（ｎ）である）全てのチェックノードｍ’に亘って行われるが、メッセージが送信されたチェックノードに亘っては行われないことに注意すべきである。このことは不安定性を回避するためである。更に、更新メッセージ
【数９】
2010532128.tif 000011
は、前の反復ｉ−１から得られることに注意すべきである。以下に説明するように、上述したことは厳密には必要ない。
【数１０】
2010532128.tif 000012
：ｉ番目の反復においてチェックノードｍからシンボルノードｎに送信されたメッセージである。このメッセージを、“チェックノードメッセージ”とも称する。このメッセージは、チェックノードｍが受信するシンボルメッセージに依存する。このメッセージを
【数１１】
2010532128.tif 000013
として初期化しうる。
【００３０】
このメッセージの更新は、チェックノードが受信する全てのシンボルメッセージに基づいて、すなわち、チェックノードメッセージが送信されようとしているシンボルノードｎを除いて、（Ｎ（ｍ）である）チェックノードｍに接続された全てのシンボルノードから行うのが好ましい。現在の反復の開始時におけるメッセージ値のみに関する更新に基づき且つmin-sum アルゴリズムを用いて、次式（３）を得る。
【数１２】
2010532128.tif 000014
ここで、ＸＯＲは、ブールＸＯＲ関数の等価符号、すなわち、ＸＯＲ（−，−）＝＋として規定される。αは、正規化されたmin-sum アルゴリズムで周知である補正係数である。
‐  λn ：デコーダの出力メッセージである。通常、λnmの場合と相違し、デコーダの出力メッセージλn は代表的にシンボルノードｎに得られる全ての情報を用いるものであり、最後の反復Ｉに必要となるだけである。
【数１３】
2010532128.tif 000015
【００３１】
上記の式（４）においては、反復ｉにおけるデコーディングは、前の反復ｉ−１の終了時に得られた情報に静的に基づいている。このような反復の形態は、ヤコビの反復法として見られる。このアルゴリズムは、“スタッガードデコーディング”、“ターボデコーディングＬＤＰＣ”、“シャッフルドデコーディング”及び“レイヤードデコーディング”としても知られている技術であるガウス‐ザイデル反復を含むように変更させることができる。この種類のＬＤＰＣデコーディングでは、デコーディングは前の反復の終了時に得られた情報に静的に基づくのではなく、現在の反復ｉで得られた情報を直ちに用いる。この目的のために、ＬＤＰＣのチェックノード中心処理を用いる。Ｌn と、最大でチェックノードとシンボルノードとの間のデータメッセージまでとの合計より成る変数
【数１４】
2010532128.tif 000016
、すなわち、
【数１５】
2010532128.tif 000017
を用いる。
【００３２】
この式では、集合
【数１６】
2010532128.tif 000018
は、チェックノードｍによる処理の前の現在の反復中に既に更新されたメッセージに関するものであり、Ｒ（ｎ，ｍ）＝Ｍ（ｎ）＼Ｕ（ｎ，ｍ）はまだ更新されていない残りのメッセージの集合である。ヤコビの反復法の場合、Ｕ（ｎ，ｍ）＝φが、ガウス‐ザイデルの場合、Ｕ（ｎ，ｍ）が、
【数１７】
2010532128.tif 000019
として規定される。
【００３３】
この式は、幾つかのチェックノードにおける並列更新を可能にする。第１のサイクルで更新されたチェックノードはｍ1 と称され、第２のサイクルで更新されたチェックノードはｍ2 と称され、以下順次同様である。一般に、全てのチェックノードを並列に更新しうるわけではない。その理由は、全てのチェックノードを並列に更新することにより、メモリのコンフリクトが生じる為である。スケジュールに応じてチェックノードを並列検査のサイクルに割り当てる。
【００３４】
次式
【数１８】
2010532128.tif 000020
により、
【数１９】
2010532128.tif 000021
の値が与えられ、現在のチェックノードｍx における
【数２０】
2010532128.tif 000022
を計算した後、［数１４］が
【数２１】
2010532128.tif 000023
として更新される。
【００３５】
従って、この式では、ｍx+1 が、前のサイクルでチェックノードｍx （又は並列処理されたチェックノードの集合）が処理された後に処理されたチェックノード（又は並列処理されたチェックノードの集合）となる。図３は、反復ｉを２つのメイングループで実行した場合のこの状態を示す。第１のメイングループでは、チェックノードＣＮ‐１〜ＣＮ‐３が処理され（集合ｍ1 を形成し）、同じ反復での次の第２のメイングループでは、残りのチェックノードＣＮ‐４〜ＣＮ‐６が処理される（集合ｍ2 を形成する）。
【００３６】
ＤＶＢ‐Ｓ２、８０２．１１ｎ、８０２．１６ｅ、ＤＭＢ‐Ｔ及びＳＴｉＭｉのような現在の通信標準規格に合致したＬＤＰＣコードは全て準巡回構造を有している。このことは、シンボルノードとチェックノードとの間（例えば、Ｎ（ｍ）とＭ（ｎ）との間）の相互接続を表すＨマトリックスがサーキュラントから構成されていることを意味する。これらのサーキュラントは、ある角度に亘って回転されたゼロマトリックス又は単位マトリックスから構成されている。ある標準規格では、１つのサーキュラントに多重対角が生じる。ＤＶＢ‐Ｓ２では、ＬＤＰＣコードは６４８００ビットより成っており、コードレート１／２の場合、その半分がシステムビット（エンコーダへの原入力ビット）であり、他の半分がパリティビットである。全部で３２４００のパリティ式を用いることにより、Ｈマトリックスに６４８００列及び３２４００行を与える。マトリックスは３６０×３６０のブロック（サーキュラント）に細分される。図４は、サーキュラントのＨマトリックスの代表的な構造を示す。本例では、サーキュラントは４×４ブロックのみである。サーキュラント４００は単位マトリックスである。サーキュラント４１０は１位置だけ右に回転されている。サーキュラント４２０は３位置だけ右に回転されている。右への回転は左への回転とみなすこともできること勿論である。サーキュラントによりＨマトリックスを構成するのに好ましい特性は、１つの（サブ）サーキュラントに属する全てのデータを、メモリの１ラインに記憶でき、１クロックサイクルで取り出すことができ、回転により正しいデータ経路に送ることができるようにするとともに、データ経路がチェックノードにより表される処理の少なくとも一部を実行するようにすることである。図５Ａ及び５Ｂは、サーキュラントの行を並列に検査する状態を示す。マトリックスの各行は、それぞれのデータ経路により検査される。図５の例では、１つのサーキュラントが４つの行を有し、従って、４つの式をそれぞれのデータ経路により並列に検査するのが好ましい。図５Ａは、反復の開始時にシンボルノードが値ａ〜ｚを記憶することを示している。第１の式（＝第１のデータ経路ＤＰ‐１）はａ，ｆ及びｚを有するシンボルノードを検査する必要がある（本例では、…により表される中間のサーキュラントは無視した）。第２の式はｂ，ｇ，ｗを検査し、第３の式はｃ，ｈ，ｘを検査し、第４の式はｄ，ｅ，ｙを検査する必要がある。図５Ｂは、各行の寸法をサーキュラントの寸法としたメモリMem 内にシンボル値を如何に記憶しうるかを示す。本例では、順次の各行が対応するシンボルノード値のエレメントを記憶する。いわゆるバレルシフタＢＳが、行をメモリから読み出し、適切な個所で、行中のエレメントを回転させる。本例では、エレメントａ〜ｄが、単位マトリックスである第１のサーキュラントに対応する。この場合、回転は必要ない。次の群のエレメントｅ〜ｈは第２のサーキュラントに対応する。このサーキュラントは、１位置だけ右に回転させた単一対角である。逆回転Ｒ１（すなわち、３位置だけ右に回転させたのと同じである、１位置だけ左に回転）を実行することにより、第１のデータ経路により作用させる必要があるエレメント���第１の“列”にも存在するようになる。同様に、最後の群のエレメントｗ〜ｚは、３位置だけ右に回転させた単一対角を有する最後のサーキュラントに対応する。エレメントを３位置だけ左に（又は１位置だけ右に）回転させることにより、第１のデータ経路により作用させる必要がある最後の群のエレメントも第１の“列”に存在するようになる。従って、第１のデータ経路ＤＰ‐１には、バレルシフタにより生ぜしめられた第１の列をローディングさせることができる。第２の列は、第２のデータ経路ＤＰ‐２に対してエレメントを自動的に与える。バレルシフタ自体はエレメントを回転させるものとして周知であり、所望の出力をそれぞれのデータ経路に生ぜしめる。バレルシフタの一例は、IEEE Journal of solid-state circuits Vol. 21, No. 2, February 1992における論文である“A New Design of a Fast Barrel Switch Network”（G. M. Tharakan及びS. M. Kang氏著）にも開示されている。図５Ｂに示す構成とは異なる構成をも用いることができる。サーキュラントを用いる代わりに、１のエレメントの個数を行及び列の各々で同じにしたサブマトリックスを用いる場合にも上述したのと同じ概念を適用しうることを理解すべきである。この場合、回転を実行する代わりに、僅かに複雑な置換を実行する必要がある。この置換を実行するユニットをシャフラとみなすことができる。以下の説明は、サーキュラントに主点をおくものであり、バレルシフタとしてシャフラを参照する。多重対角のサーキュラントは、複数のゼロでないエレメントの個数を行及び列の各々で同じとした、サブマトリックスの特別な種類のものであることを理解すべきである。本発明によるアーキテクチュアはサーキュラントに対し詳述するが、より一般的な場合に対しても同様に適用しうるものである。
【００３７】
ＬＤＰＣデコーダの従来のアーキテクチュアのカーネルは、図６に示すデータ経路により形成されている。上述したように、
【数２２】
2010532128.tif 000024
は、これらの値を記憶する第１のメモリから順次に到来する
【数２３】
2010532128.tif 000025
から
【数２４】
2010532128.tif 000026
を減算することにより形成される。λnmは、図６に６１０として示す式（３）を計算するのに用いられる。自分自身を除く全てのパーティシパントに対し全ての最小値を計算する必要がある場合には、式の集合は２つのみの出力値、すなわち、全体的に最小値及び１つであるが最小値を有する。最小値の位置（すなわち、最小値を与えるパーティシパントの識別）も記憶される。これらの２つの値を計算することを“ランニングベクトルの計算”と称され、ベクトルはΛm として示される。個々のΛmnの計算がこのベクトルの解凍となる。ランニングベクトルの計算及び解凍をブロック６３０として示す。このような圧縮／解凍自体はmin-sum アルゴリズムに対して周知である。Λm を計算するのと同時にΛnmが後に使用するためにバッファに、好ましくはＦＩＦＯ６２０に記憶される。このことは、次のＫm サイクル中、次のパリティチェック式に対し繰り返され、一方、現在のパリティチェック式に対しては個々の
【数２５】
2010532128.tif 000027
が上述した解凍により計算される。［数２５］はブロック６４０においてＦＩＦＯ６２０からのλnmに加算され、その結果、新たな
【数２６】
2010532128.tif 000028
（式７）が得られる。従って、データ経路が１つのパリティ式のＫm λn を生じ、次の式に対しＫm λn を受ける。このデータ経路は１クロックサイクル当たりチェックノードとシンボルノードとの間の１つの接続に対処する。ｎ1 ＝ｎ2 に対しλn2の書き込みの前にλn1の読み出しを回避するために、パリティ式の順序を静的に決定する必要がある。このことが達成されないと、ノーオペレーションを挿入する必要があり、処理能力を低下させてしまう。上述したように、パリティ式を同時に計算しうるように、殆どのＬＤＰＣコードはサーキュラント構造から成っている。コードのサーキュラント寸法がデータ経路の個数に等しく、１つのサーキュラントにある対角が多くとも１つである場合には、デコーダは、メモリのコンフリクトを生じることなく複数のパリティチェック式を計算しうる。
【００３８】
図７は、min-sum アルゴリズムに対する図６のブロック６３０の従来構造を詳細に示している。ブロック７１０は、式（３）に示すように、補正係数αを入力に乗算することを示している。ブロック７３０は、ランニングベクトルの計算を示す。ブロック７４０は解凍を示す。ブロック７２０は、ブロック７１０の出力の範囲を、予め決定した範囲、代表的には８ビットに減少させる飽和関数を示す。飽和は、クリッピング／丸め込み又はスケーリングのような適切な如何なる方法でも行うことができる。このこと自体は周知である。
【００３９】
図８は、Ｄ並列のデータ経路ＤＰ‐０〜ＤＰ‐Ｄ−１を有する従来のトップレベルのアーキテクチュアを示しており、各データ経路は、図６に示され図７で詳述しているデータ経路に相当する。このアーキテクチュアでは、第１のメモリλmem がλn 値を記憶し、メモリ“ΛMem0”〜“ΛMemD-1”として示す第２のメモリが、解凍したΛmn値を記憶する。本例では、メモリ“ΛMem0”が値Λ0n，ΛDn，Λ2Dn ，…を記憶し、メモリ“ΛMem1”が値Λ1n，Λ1+Dn，Λ1+2Dn ，…を記憶し、以下順次同様である。
【００４０】
この提案されたアーキテクチュアの（メモリ）効率は、データ経路への／データ経路からのデータの集合が常にメモリ内の１ワードに存在するようにする特性を用いることにより達成されている。［Dielissen, ＤＡＴＥ］に記載されている技術を適用すると、サーキュラントが複数の小さなサブサーキュラントに分割され、これに対して対角特性が与えられている。
【００４１】
殆どの標準規格の場合、ＬＤＰＣデコーダに必要とするシリコン領域の大部分が、Λメモリを有する第２のメモリで使われる。これらのメモリに記憶される大きさには、式の最小値又は１つであるが最小値のみを含んでいる為、これらの値を前述したように圧縮することができる。圧縮係数は、
【数２７】
2010532128.tif 000029
であり、ここでｂは大きさを記憶するのに必要なビット数であり、Ｋは式中のパーティシパントの個数である。Ｋが３０に等しい場合、この圧縮係数は１０である。図９は、圧縮型Λ記憶装置を用いるためのデータ経路における変更を示す。図９は、図６と図７との組み合わせであり、ΛメモリがΛmn値を圧縮形態で記憶するものである。このことは、メモリ内に記憶すべき値を解凍ブロック７４０の前でタッピングすることにより図９に表すことができる。圧縮した記憶値を用いうるようにするために、更なる解凍ブロック９１０を記憶装置の後に用いる。
【００４２】
しかし、圧縮型Λ記憶装置を用いるには以下のような幾つかの注意点がある。
‐  Λメモリにおける全記憶容量は、１つの標準規格に対し要求された全てのコードに依存させる。一例として、ＤＶＢ‐Ｓ２は規定された１２レートを有し、Ｋは４〜３０の範囲にある。メモリ内に記憶する必要があるベクトルの個数は各レートに対し異なる。ＤＶＢ‐Ｓ２で使用するレートを１０とした場合、上述したことは、ｂ＝５であるものとすると、全体の圧縮係数は３．４であることを意味する。
‐  Λメモリの１ワードに
【数２８】
2010532128.tif 000030
ビットを書き込む代わりに、Ｋサイクルを用いて読み出し及び書き込みを行ない、これにより特別な論理の犠牲の下でメモリの領域利用を高める。
‐  ２ポートメモリが得られ、高さが既に固定されているＦＰＧＡ技術を対象とする場合、Λの圧縮は如何なる利点をももたらすものではない。
‐  処理すべき“副層”の個数がだいぶ少ない場合には、圧縮型メモリの高さは、圧縮により領域上の利点が殆ど得られない程度に低くなりうる。
【００４３】
図８に示すアーキテクチュアは、順方向経路にバレルシフタＢＳ‐１を用い、逆方向経路にバレルシフタＢＳ‐２を用いていることを示している。バレルシフタＢＳ‐１は、アドレス発生器“Addr gen”から回転命令を受ける。これらの命令（又はその反転バージョン）はバレルシフタＢＳ‐１及びＢＳ‐２を接続しているＦＩＦＯにも記憶される為、正しいサイクル数後にバレルシフタＢＳ‐２は、バレルシフタＢＳ‐１が成した回転に対して逆の回転をシーケンスの同じエレメント上で実行しうる。このアーキテクチュアは、逆方向の経路におけるバレルシフタＢＳ‐２を省略することにより更に最適化しうる。このような構成では、順方向経路におけるバレルシフタＢＳ‐１が、データを逆方向に回転させて第１のメモリ“λmem ”内に書き込むという事実を補償する必要がある。図８では、単一のバレルシフタのアーキテクチュアを個別に示していない。図８のＩ／Ｏコントローラ“IO Contr”及びアドレス発生器“Addr gen”は、バレルシフタＢＳ‐１を制御するように適切にプログラミングしうる。このこと自体は当業者の技術範囲内のものである。
【００４４】
上述したアーキテクチュア自体は単一対角のサーキュラントに対し有効なものである。これらのアーキテクチュアは以下の計算を行う。
【数２９】
2010532128.tif 000031
【００４５】
シンボルノードｎを同じサーキュラント（例えば、二重対角）における２つのチェックノードに接続されている例として、以下の状態が生じる。
【数３０】
2010532128.tif 000032
【００４６】
図１０は、本発明によるＬＤＰＣデコーダのアーキテクチュアの基本的構成を示す。このＬＤＰＣデコーダは、各シンボルノードｎに対し、ＬＤＰＣコードの対応するシンボルそれぞれのシンボル値λn の表現を記憶する第１のメモリ１００５を有する。ＬＤＰＣのシンボルが０からＮ−１まで順次に番号付けされているものとすると、シンボルノードｎに対しｎ番目のシンボルが記憶される。ＬＤＰＣデコーダは更に、それぞれのチェックノードメッセージΛmnの表現を記憶する第２のメモリ１０１５を有する。本例では、この第２のメモリ１０１５を、図８に示すように、複数のメモリ、好ましくはＦＩＦＯに細分する。ＬＤＰＣデコーダは更に、次の反復に対し、第１のメモリ１００５に記憶された対応するシンボル値の表現からのシンボルメッセージλnmと、前の反復からのチェックノードメッセージΛmnとを計算する第１の計算手段１０１０を有する。一実施例では、この第１の計算手段１０１０が前述した式（７）に応じて
【数３１】
2010532128.tif 000033
を計算する。各データ経路０〜Ｄ−１では、シンボルノードの異なる１つに対し計算を行う。Ｄ個の計算が並列に行われる。従って、第１のバッチでは、ノード０〜Ｄ−１が処理され、第２のバッチでは、ノードＤ〜２Ｄ−１が処理され、以下順次同様となる。この場合、第１の計算手段１０１０は、Ｄ個の減算が並列に行われるように配置する。ＬＤＰＣデコーダは更に、第１のシーケンスで配置した第１の計算手段１０１０からシンボルメッセージを得るとともに、このシンボルメッセージをサーキュラントの回転に応じて異なるシーケンスで生じるバレルシフタ１０３０を有する。このバレルシフタ１０３０は原理的に図５Ｂにつき前述したのと同じにでき、この場合、シンボルノードのシーケンスに応じて配置したシンボルメッセージを受信することができ、これらのシンボルメッセージは、含まれる対角マトリックスへの単位マトリックスの回転と比較して反対に回転させることにより再配置し、最後にこれらのシンボルメッセージを列方向に生ぜしめる。バレルシフタの作用は、シーケンスを、サーキュラントにより規定されたように簡単に変更させることにある。
【００４７】
ＬＤＰＣデコーダは更に、ＬＬＲ‐ＢＰ（Log-Likelihood Ratio Belief-Propagation ）アルゴリズムに応じて、チェックノードメッセージΛmnを計算するとともに、計算したこれらのチェックノードメッセージを第２のメモリ１０１５内に記憶させる第２の計算手段を有する。この計算は、それぞれのチェックノードｍによりバレルシフタ１０３０から供給されたシンボルメッセージλnmに依存する。この第２の計算手段により実行される計算の少なくとも一部分は、バレルシフタ１０３０後のデータ経路ＤＰ‐０〜ＤＰ‐Ｄ−１内で、従って、回転領域内で実行される。一実施例では、min-sum アルゴリズムを用い、第２の計算手段が、式（３）による［数１２］を計算する。
【００４８】
ＬＤＰＣデコーダは更に、第１及び第２の計算手段の出力に応じて第１のメモリ内のシンボル値の表現を更新する第３の計算手段１０２０を有する。好適実施例では、第３の計算手段１０２０は式（８）による［数２１］を計算する。
【００４９】
本例の場合、図８の既知のアーキテクチュアとの主たる相違は、
【数３２】
2010532128.tif 000034
の計算を“直線領域”で、例えば、バレルシフタ１０３０の前で行うことである。ＦＩＦＯ１０４０へのλnmの記憶及びλn を得るための加算
【数３３】
2010532128.tif 000035
もバレルシフタの前で、すなわち、直線領域で実行する。
【００５０】
本発明の一実施例では、シンボルメッセージの表現を前述したように、予め決定したシーケンスで第１のメモリ内に記憶する。ＬＤＰＣデコーダは、この予め決定したシーケンスに対応するシーケンスでチェックノードメッセージを生ぜしめるために、第２の計算手段と第３の計算手段１０２０との間に配置した他のバレルシフタ１０３５を有する。前述したように、逆方向経路におけるバレルシフタ１０３５は、第１のメモリ内で用いられている最初のシーケンスを回復させる。
【００５１】
図１１に示す他の実施例では、ＬＬＲ‐ＢＰアルゴリズムがmin-sum アルゴリズムに基づくようにし、ＬＤＰＣエンコーダが、シンボルメッセージの値に補正係数αを乗じる補正手段と、値を予め決定した範囲に制限する飽和手段とを有するようにする。補正手段自体は、図７にブロック７１０として既に示されており、飽和手段はブロック７２０として示されている。補正は飽和前で最初に行うのが好ましい（補正により値の範囲を予め低減させることができる）。図１１に示すように、ブロック１１１０として示す、補正手段と飽和手段との組み合わせを、第１の計算手段とバレルシフタとの間に配置する。これにより、ＬＤＰＣエンコーダを構成しうる集積回路の領域（面積）の犠牲を異ならせる。すなわち、バレルシフタの前でαの乗算及び飽和処理を行うことにより、バレルシフタ１０３０が、他の場合のλn 幅よりも１〜３ビットだけ少ないΛmnのビット幅を有しうるようになる。正負符号を記憶するには、１つの１ビットＦＩＦＯを追加する必要があることに注意すべきである。１ビットＦＩＦＯは、図１２にブロック１２３０として示してある。しかし、ＸＯＲの合計を、バレルシフタを介して伝達し、このＸＯＲをλメモリ１００５の前で加算器に直接供給する場合には、最適にはこの１ビットＦＩＦＯを省略しうる。
【００５２】
図１１に示すような好適実施例では、第２の計算手段により達成されるデータ経路が、図１２に示すように極めて簡単となる。ブロック１２１０は、原理的に図７のブロック７３０に対して示すのと同じであるランニングベクトルの計算を示す。ブロック１２２０は、原理的に図７のブロック７４０に対して示すのと同じであるベクトル圧縮を示す。ブロック１２３０は、正負符号を記憶する１ビットＦＩＦＯを示す。
【００５３】
図１０及び１１に示すアーキテクチュアは、多重対角のコンフリクトを対処するように極めて容易に変更しうる。このような実施例では、少なくとも１つのサーキュラントを、複数の対角を有するマトリックスとし、各対角は、単位マトリックスをそれぞれ異なる個数の位置に亘って回転させることにより形成する。この場合、第１の計算手段１０１０を、各チェックノードメッセージがサーキュラント中の１つの対角にそれぞれ対応する複数の関連するチェックノードメッセージに応じて、多重対角サーキュラントに相当するシンボルメッセージ［数１］を計算するように配置する。従って、サーキュラントが２つの対角を有する場合には、第１の計算手段が２つの個別の［数１］を発生し、サーキュラントが３つの対角を有する場合には、第１の計算手段が３つの個別の［数１］を発生し、以下順次同様である。第１の計算手段は、各反復で、関連のチェックノードメッセージΛmnのそれぞれ１つを計算結果に合成することにより単一のシンボルノードｎに関連するシンボルメッセージ［数１］を反復して計算するように配置するのが好ましい。この反復構成を図１３に示す。前述したアーキテクチュアにおけるように、ＦＩＦＯ１０４０は［数１］を記憶でき、ブロック１０２０で
【数３４】
2010532128.tif 000036
と、
【数３５】
2010532128.tif 000037
とを加算することにより、新たな［数１４］を計算する。二重対角の場合には、ブロック１０１０がチェックノードメッセージ
【数３６】
2010532128.tif 000038
及び
【数３７】
2010532128.tif 000039
を二度減算する。次に、ＦＩＦＯ１０４０が、
【数３８】
2010532128.tif 000040
を記憶する。ブロック１０２０で新たな［数３６］及び［数３７］を加算することにより、新たな［数１４］を計算する。一例として、シンボルノードｎが同じサーキュラントにおける２つのチェックノード１及び４（例えば、二重対角）に接続されているものとすると、値λn ＝Ｌn ＋Λ1n＋Λ4nが第１のメモリ１００５から読み出される。最初に、２つの減算器を用いてブロック１０１０で上記の値からΛ1nを減算する。Ｌn ＋Λ4nである１つの出力がバレルシフタ１０３０に供給され、これと同じ値がＦＩＦＯ１０４０にも記憶される。第２のサイクルでは、双方の減算器によりΛ4nが減算される。バレルシフタへのデータ経路には依然としてλn ＝Ｌn ＋Λ1n＋Λ4nが供給され、従って、一方の減算器によるΛ4nの減算後に、バレルシフタにＬn ＋Λ1nが（随意であること勿論であるが補正及び飽和処理後に）供給される。このサイクルでは、他方の減算器にブロック１０１０中のマルチプレクサの第２の経路を経てＬn ＋Λ4nが供給される。従って、Λ4nを減算することにより、Ｌn がＦＩＦＯ１０４０に記憶される。この場合、１ビットＦＩＦＯを構成する必要があることに注意すべきである。
【００５４】
図８、１０、１１及び１３に示すアーキテクチュアはΛmnメッセージを記憶するのにＦＩＦＯを用いている。前述したように、圧縮型Λ記憶装置を適用することにより領域を節約しうる。この点を本発明によるアーキテクチュアで実行するために、図１４に示すように、正負符号と大きさとを分離させる。正負符号は、戻りのバレルシフタ１０３５の後に取り出してバッファ（好ましくはＦＩＦＯ）１４２０に記憶させる。大きさに対しては、図９の場合のように、データ経路からベクトルを取り出し、バッファ（好ましくはＦＩＦＯ）１４１０に記憶させる。解凍ユニット９１０は図９に示すのと同様である。バレルシフタ１０３５と同じ機能を実行する第３のバレルシフタ１４３０を加える。
【００５５】
本発明は、ソフトウェアと同様にハードウェアで、例えば、デジタル信号プロセッサ（ＤＳＰ）又は最適化させたＶＬＩＷプロセッサで実行しうることに注意すべきである。ソフトウェアで実行する場合、図面中のブロックが機能的なソフトウェアユニットを表わすものとして見ることができる。従って、本発明はコンピュータプログラム、特に本発明を実現するようにした担体上又は内のコンピュータプログラムにも拡張されるものである。このプログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形態のようなソースコードとオブジェクトコードとの中間のコードの形態とするか、又は本発明による方法の実行に用いるのに適した他の如何なる形態にもすることができる。担体は、プログラムを実行しうる如何なるエンティティ又はデバイスにもすることができる。例えば、担体には、ＲＯＭ、例えば、ＣＤＲＯＭ又は半導体ＲＯＭのような記憶媒体、又はフロッピー（登録商標）ディスク又はハードディスクのような磁気記録媒体を含めることができる。更に、担体は、電気ケーブル又は光ケーブルを介して或いは無線又はその他の手段により伝達しうる電気信号又は光信号のような送信可能な担体とすることができる。プログラムをこのような信号で実現する場合、担体を上述したケーブル又はその他の装置或いは手段で構成することができる。或いはまた、担体を、プログラムが実現されている集積回路であって、関連の方法を実行するようにするか、又はその実行に用いるための集積回路とすることができる。
【００５６】
本発明は上述した実施例に限定されるものではなく、当業者は特許請求の範囲から逸脱することなしに他の多くの実施例を設計しうるものであることに注意すべきである。本発明は、幾つかの個別の素子を有するハードウェアにより、又適切にプログラミングしたコンピュータにより構成しうる。又、幾つかの手段を列挙している装置の請求項では、これらの手段の幾つかを１つの同じハードウェア装置で構成しうるものである。更に、ある手段を互いに異なる従属請求項に述べているという単なる事実は、これらの手段の組み合わせの使用が有利ではないということを意味するものではない。
【図１】
2010532128.tif 000042
【図２】
2010532128.tif 000043
【図３】
2010532128.tif 000044
【図４】
2010532128.tif 000045
【図５Ａ】
2010532128.tif 000046
【図５Ｂ】
2010532128.tif 000047
【図６】
2010532128.tif 000048
【図７】
2010532128.tif 000049
【図８】
2010532128.tif 000050
【図９】
2010532128.tif 000051
【図１０】
2010532128.tif 000052
【図１１】
2010532128.tif 000053
【図１２】
2010532128.tif 000054
【図１３】
2010532128.tif 000055
【図１４】
2010532128.tif 000056
【手続補正書】
【提出日】平成22年3月2日(2010.3.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項４
【補正方法】変更
【補正の内容】
【請求項４】
請求項１に記載のＬＤＰＣデコーダにおいて、ＬＬＲ‐ＢＰアルゴリズムは、min-sum アルゴリズムに基づいており、前記ＬＤＰＣデコーダが、シンボルメッセージの値に補正係数αを乗じる補正手段と、値を予め決定した範囲に制限する飽和手段とを有しており、これら補正手段及び飽和手段は前記第１の計算手段と前記シャフラとの間に配置されているＬＤＰＣデコーダ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明によるアーキテクチュアでは、（しばしばλnmメッセージと称される）シンボルメッセージを直線領域内で（すなわち、シャフラの前で）計算する。このことは、この計算をシャフル領域で行う従来の解決策と相違することである。この本発明によるアーキテクチュアによれば、単一又は多重対角システムに適したエンコーダを形成するのを、主要な設計変更を行うことなく達成しうる。更に、製造費の低減化が可能となる。従属請求項７に記載したように、サブマトリックスはサーキュラントとすることができ、シャフラはバレルシフタとして構成しうる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
本発明の一例では、前記ＬＬＲ‐ＢＰアルゴリズムを、min-sum アルゴリズムに基づかせ、ＬＤＰＣデコーダが、シンボルメッセージの値に補正係数αを乗じる補正手段と、値を予め決定した範囲に制限する飽和手段とを有し、これら補正手段及び飽和手段は前記第１の計算手段とバレルシフタとの間に配置する。補正及び飽和処理をバレルシフタの前で実行することにより、バレルシフタは一層制限した値の範囲で動作し、従って、一層廉価に構成しうる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
図１１に示す他の実施例では、ＬＬＲ‐ＢＰアルゴリズムがmin-sum アルゴリズムに基づくようにし、ＬＤＰＣデコーダが、シンボルメッセージの値に補正係数αを乗じる補正手段と、値を予め決定した範囲に制限する飽和手段とを有するようにする。補正手段自体は、図７にブロック７１０として既に示されており、飽和手段はブロック７２０として示されている。補正は飽和前で最初に行うのが好ましい（補正により値の範囲を予め低減させることができる）。図１１に示すように、ブロック１１１０として示す、補正手段と飽和手段との組み合わせを、第１の計算手段とバレルシフタとの間に配置する。これにより、ＬＤＰＣデコーダを構成しうる集積回路の領域（面積）の犠牲を異ならせる。すなわち、バレルシフタの前でαの乗算及び飽和処理を行うことにより、バレルシフタ１０３０が、他の場合のλn 幅よりも１〜３ビットだけ少ないΛmnのビット幅を有しうるようになる。正負符号を記憶するには、１つの１ビットＦＩＦＯを追加する必要があることに注意すべきである。１ビットＦＩＦＯは、図１２にブロック１２３０として示してある。しかし、ＸＯＲの合計を、バレルシフタを介して伝達し、このＸＯＲをλメモリ１００５の前で加算器に直接供給する場合には、最適にはこの１ビットＦＩＦＯを省略しうる。
【国際調査報告】
2010532128.tif 000057
2010532128.tif 000058
2010532128.tif 000059