以下、本技術の実施の形態について説明するが、その前に、LDPC符号について説明する。
<LDPC符号>
なお、LDPC符号は、線形符号であり、必ずしも2元である必要はないが、ここでは、2元であるものとして説明する。
LDPC符号は、そのLDPC符号を定義する検査行列(parity check matrix)が疎なものであることを最大の特徴とする。ここで、疎な行列とは、行列の要素の"1"の個数が非常に少ない行列(ほとんどの要素が0の行列)である。
図1は、LDPC符号の検査行列Hの例を示す図である。
図1の検査行列Hでは、各列の重み(列重み)("1"の数)(weight)が"3"であり、且つ、各行の重み(行重み)が"6"になっている。
LDPC符号による符号化(LDPC符号化)では、例えば、検査行列Hに基づいて生成行列Gを生成し、この生成行列Gを2元の情報ビットに対して乗算することで、符号語(LDPC符号)が生成される。
具体的には、LDPC符号化を行う符号化装置は、まず、検査行列Hの転置行列HTとの間に、式GHT=0が成立する生成行列Gを算出する。ここで、生成行列Gが、K×N行列である場合には、符号化装置は、生成行列Gに対してKビットからなる情報ビットのビット列(ベクトルu)を乗算し、Nビットからなる符号語c(=uG)を生成する。この符号化装置によって生成された符号語(LDPC符号)は、所定の通信路を介して受信側において受信される。
LDPC符号の復号は、Gallagerが確率復号(Probabilistic Decoding)と称して提案したアルゴリズムであって、バリアブルノード(variable node(メッセージノード(message node)とも呼ばれる))と、チェックノード(check node)とからなる、いわゆるタナーグラフ(Tanner graph)上での確率伝播(belief propagation)によるメッセージ・パッシング・アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノードとチェックノードを、単に、ノードともいう。
図2は、LDPC符号の復号の手順を示すフローチャートである。
なお、以下、適宜、受信側で受信したLDPC符号(1符号語)のi番目の符号ビットの、値の"0"らしさを対数尤度比(log likelihood ratio)で表現した実数値(受信LLR)を、受信値u0iともいう。また、チェックノードから出力されるメッセージをujとし、バリアブルノードから出力されるメッセージをviとする。
まず、LDPC符号の復号においては、図2に示すように、ステップS11において、LDPC符号が受信され、メッセージ(チェックノードメッセージ)ujが"0"に初期化されるとともに、繰り返し処理のカウンタとしての整数をとる変数kが"0"に初期化され、ステップS12に進む。ステップS12において、LDPC符号を受信して得られる受信値u0iに基づいて、式(1)に示す演算(バリアブルノード演算)を行うことによってメッセージ(バリアブルノードメッセージ)viが求められ、さらに、このメッセージviに基づいて、式(2)に示す演算(チェックノード演算)を行うことによってメッセージujが求められる。
ここで、式(1)と式(2)におけるdvとdcは、それぞれ、検査行列Hの縦方向(列)と横方向(行)の"1"の個数を示す任意に選択可能とされるパラメータである。例えば、図1に示したような列重みが3で、行重みが6の検査行列Hに対するLDPC符号((3,6)LDPC符号)の場合には、dv=3,dc=6となる。
なお、式(1)のバリアブルノード演算、及び(2)のチェックノード演算においては、それぞれ、メッセージを出力しようとする枝(edge)(バリアブルノードとチェックノードとを結ぶ線)から入力されたメッセージを、演算の対象としないことから、演算の範囲が、1ないしdv-1又は1ないしdc-1となっている。また、式(2)のチェックノード演算は、実際には、2入力v1,v2に対する1出力で定義される式(3)に示す関数R(v1,v2)のテーブルを予め作成しておき、これを式(4)に示すように連続的(再帰的)に用いることによって行われる。
ステップS12では、さらに、変数kが"1"だけインクリメントされ、ステップS13に進む。ステップS13では、変数kが所定の繰り返し復号回数Cよりも大きいか否かが判定される。ステップS13において、変数kがCよりも大きくないと判定された場合、ステップS12に戻り、以下、同様の処理が繰り返される。
また、ステップS13において、変数kがCよりも大きいと判定された場合、ステップS14に進み、式(5)に示す演算を行うことによって最終的に出力する復号結果としてのメッセージviが求められて出力され、LDPC符号の復号処理が終了する。
ここで、式(5)の演算は、式(1)のバリアブルノード演算とは異なり、バリアブルノードに接続している全ての枝からのメッセージujを用いて行われる。
図3は、(3,6)LDPC符号(符号化率1/2、符号長12)の検査行列Hの例を示す図である。
図3の検査行列Hでは、図1と同様に、列の重みが3に、行の重みが6に、それぞれなっている。
図4は、図3の検査行列Hのタナーグラフを示す図である。
ここで、図4において、プラス"+"で表わされるのが、チェックノードであり、イコール"="で表わされるのが、バリアブルノードである。チェックノードとバリアブルノードは、それぞれ、検査行列Hの行と列に対応する。チェックノードとバリアブルノードとの間の結線は、枝(edge)であり、検査行列の要素の"1"に相当する。
すなわち、検査行列の第j行第i列の要素が1である場合には、図4において、上からi番目のバリアブルノード("="のノード)と、上からj番目のチェックノード("+"のノード)とが、枝により接続される。枝は、バリアブルノードに対応する符号ビットが、チェックノードに対応する拘束条件を持つことを表す。
LDPC符号の復号方法であるサムプロダクトアルゴリズム(Sum Product Algorithm)では、バリアブルノード演算とチェックノード演算とが繰り返し行われる。
図5は、バリアブルノードで行われるバリアブルノード演算を示す図である。
バリアブルノードでは、計算しようとしている枝に対応するメッセージviは、バリアブルノードに繋がっている残りの枝からのメッセージu1およびu2と、受信値u0iを用いた式(1)のバリアブルノード演算により求められる。他の枝に対応するメッセージも同様に求められる。
図6は、チェックノードで行われるチェックノード演算を示す図である。
ここで、式(2)のチェックノード演算は、式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)の関係を用いて、式(6)に書き直すことができる。但し、sign(x)は、x≧0のとき1であり、x<0のとき-1である。
x≧0において、関数φ(x)を、式φ(x)=ln(tanh(x/2))と定義すると、式φ-1(x)=2tanh-1(e-x)が成り立つから、式(6)は、式(7)に変形することができる。
チェックノードでは、式(2)のチェックノード演算が、式(7)に従って行われる。
すなわち、チェックノードでは、図6のように、計算しようとしている枝に対応するメッセージujは、チェックノードに繋がっている残りの枝からのメッセージv1,v2,v3,v4,v5を用いた式(7)のチェックノード演算によって求められる。他の枝に対応するメッセージも同様に求められる。
なお、式(7)の関数φ(x)は、式φ(x)=ln((ex+1)/(ex-1))で表すことができ、x>0において、φ(x)=φ-1(x)である。関数φ(x)およびφ-1(x)をハードウェアに実装する際には、LUT(Look Up Table)を用いて実装される場合があるが、両者共に同一のLUTとなる。
<本技術を適用した伝送システムの構成例>
図7は、本技術を適用した伝送システム(システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは、問わない)の一実施の形態の構成例を示す図である。
図7において、伝送システムは、送信装置11と受信装置12とから構成される。
送信装置11は、例えば、テレビジョン放送の番組等の送信(放送)(伝送)を行う。すなわち、送信装置11は、例えば、番組としての画像データや音声データ等の、送信の対象である対象データをLDPC符号に符号化し、例えば、衛星回線や、地上波、ケーブル(有線回線)等の通信路13を介して送信する。
受信装置12は、送信装置11から通信路13を介して送信されてくるLDPC符号を受信し、対象データに復号して出力する。
ここで、図7の伝送システムで使用されるLDPC符号は、AWGN(Additive White Gaussian Noise)通信路で極めて高い能力を発揮することが知られている。
一方、通信路13では、バースト(burst)誤りやイレージャ(erasure)を発生することがある。例えば、特に、通信路13が地上波である場合、OFDM(Orthogonal Frequency Division Multiplexing)システムでは、D/U(Desired to Undesired Ratio)が0dB(Undesired=echoのパワーがDesired=メインパスのパワーと等しい)のマルチパス環境において、エコー(echo)(メインパス以外のパス)の遅延(delay)に応じて、特定のシンボルのパワーが0になってしまう(erasure)ことがある。
また、フラッタ(flutter)(遅延が0でドップラ(doppler)周波数の掛かったechoが加算される通信路)でも、D/Uが0dBである場合には、ドップラ周波数によって、特定の時刻のOFDMのシンボル全体のパワーが0になる(erasure)場合が生じる。
さらに、受信装置12側の、送信装置11からの信号を受信するアンテナ等の受信部(図示せず)から受信装置12までの配線の状況や、受信装置12の電源の不安定性により、バースト誤りが発生することがある。
一方、LDPC符号の復号においては、検査行列Hの列、ひいては、LDPC符号の符号ビットに対応するバリアブルノードにおいて、図5に示したように、LDPC符号の符号ビット(の受信値u0i)の加算を伴う式(1)のバリアブルノード演算が行われるため、そのバリアブルノード演算に用いられる符号ビットにエラーが生じると、求められるメッセージの精度が低下する。
そして、LDPC符号の復号では、チェックノードにおいて、そのチェックノードに繋がっているバリアブルノードで求められるメッセージを用いて、式(7)のチェックノード演算が行われるため、繋がっている複数のバリアブルノード(に対応するLDPC符号の符号ビット)が同時にエラー(イレージャを含む)となるチェックノードの数が多くなると、復号の性能が劣化する。
すなわち、例えば、チェックノードは、そのチェックノードに繋がっているバリアブルノードの2個以上が同時にイレージャになると、全バリアブルノードに、値が0である確率と1である確率とが等確率のメッセージを戻す。この場合、等確率のメッセージを戻すチェックノードは、1回の復号処理(1セットのバリアブルノード演算及びチェックノード演算)に寄与しないこととなり、その結果、復号処理の繰り返し回数を多く必要とすることになって、復号の性能が劣化し、さらに、LDPC符号の復号を行う受信装置12の消費電力が増大する。
そこで、図7の伝送システムでは、AWGN通信路(AWGNチャネル)での性能を維持しつつ、バースト誤りやイレージャへの耐性を向上させることが可能になっている。
<送信装置11の構成例>
図8は、図7の送信装置11の構成例を示すブロック図である。
送信装置11では、対象データとしての1以上のインプットストリーム(Input Streams)が、モードアダプテーション/マルチプレクサ(Mode Adaptation/Multiplexer)111に供給される。
モードアダプテーション/マルチプレクサ111は、モード選択、及び、そこに供給される1以上のインプットストリームの多重化等の処理を必要に応じて行い、その結果得られるデータを、パダー(padder)112に供給する。
パダー112は、モードアダプテーション/マルチプレクサ111からのデータに対して、必要なゼロ詰め(Nullの挿入)を行い、その結果得られるデータを、BBスクランブラ(BB Scrambler)113に供給する。
BBスクランブラ113は、パダー112からのデータに、BBスクランブル(Base-Band Scrambling)を施し、その結果得られるデータを、BCHエンコーダ(BCH encoder)114に供給する。
BCHエンコーダ114は、BBスクランブラ113からのデータをBCH符号化し、その結果得られるデータを、LDPC符号化の対象であるLDPC対象データとして、LDPCエンコーダ(LDPC encoder)115に供給する。
LDPCエンコーダ115(符号化部)は、BCHエンコーダ114からのLDPC対象データについて、例えば、LDPC符号のパリティビットに対応する部分であるパリティ行列が階段(dual diagonal)構造になっている検査行列等に従ったLDPC符号化を行い、LDPC対象データを情報ビットとするLDPC符号を出力する。
すなわち、LDPCエンコーダ115は、LDPC対象データを、例えば、DVB-S.2や、DVB-T.2,DVB-C.2,ATSC3.0等の所定の規格に規定されている(検査行列に対応する)LDPC符号、その他のLDPC符号に符号化するLDPC符号化を行い、その結果得られるLDPC符号を出力する。
ここで、DVB-S.2やATSC3.0の規格に規定されているLDPC符号は、IRA(Irregular Repeat Accumulate)符号であり、そのLDPC符号の検査行列におけるパリティ行列(の一部又は全部)は、階段構造になっている。パリティ行列、及び、階段構造については、後述する。また、IRA符号については、例えば、"Irregular Repeat-Accumulate Codes," H. Jin, A. Khandekar, and R. J. McEliece, in Proceedings of 2nd International Symposium on Turbo codes and Related Topics, pp. 1-8, Sept. 2000に記載されている。
LDPCエンコーダ115が出力するLDPC符号は、ビットインターリーバ(Bit Interleaver)116に供給される。
ビットインターリーバ116は、LDPCエンコーダ115からのLDPC符号について、後述するビットインターリーブを行い、そのビットインターリーブ後のLDPC符号を、マッパ(Mapper)117に供給する。
マッパ117は、ビットインターリーバ116からのLDPC符号を、そのLDPC符号の1ビット以上の符号ビットの単位(シンボル単位)で、直交変調の1つのシンボルを表す信号点にマッピングして直交変調(多値変調)を行う。
すなわち、マッパ117は、ビットインターリーバ116からのLDPC符号を、搬送波と同相のI成分を表すI軸と、搬送波と直交するQ成分を表すQ軸とで規定されるIQ平面であるコンスタレーション上の、LDPC符号の直交変調を行う変調方式で定める信号点にマッピングして直交変調を行う。
マッパ117で行われる直交変調の変調方式で使用するコンスタレーションの信号点の数が、2m個である場合、LDPC符号のmビットの符号ビットを、シンボル(1シンボル)として、マッパ117では、ビットインターリーバ116からのLDPC符号が、シンボル単位で、2m個の信号点のうちの、シンボルを表す信号点にマッピングされる。
ここで、マッパ117で行われる直交変調の変調方式としては、例えば、DVB-S.2やATSC3.0の規格等に規定されている変調方式、その他の変調方式、すなわち、例えば、BPSK(Binary Phase Shift Keying)や、QPSK(Quadrature Phase Shift Keying),8PSK(Phase-Shift Keying),16APSK(Amplitude Phase-Shift Keying),32APSK,16QAM(Quadrature Amplitude Modulation),16QAM,64QAM,256QAM,1024QAM,4096QAM,4PAM(Pulse Amplitude Modulation)等がある。マッパ117において、いずれの変調方式による直交変調が行われるかは、例えば、送信装置11のオペレータの操作等に従って、あらかじめ設定される。
マッパ117での処理により得られるデータ(シンボルを信号点にマッピングしたマッピング結果)は、時間インターリーバ(Time Interleaver)118に供給される。
時間インターリーバ118は、マッパ117からのデータについて、シンボル単位での時間インターリーブ(時間方向のインターリーブ)を行い、その結果得られるデータを、SISO/MISOエンコーダ(SISO/MISO(Single Input Single Output/Multiple Input Single Output) encoder)119に供給する。
SISO/MISOエンコーダ119は、時間インターリーバ118からのデータに、時空間符号化を施し、周波数インターリーバ(Frequency Interleaver)120に供給する。
周波数インターリーバ120は、SISO/MISOエンコーダ119からのデータについて、シンボル単位での周波数インターリーブ(周波数方向のインターリーブ)を行い、フレームビルダ/リソースアロケーション部(Frame Builder & Resource Allocation)131に供給する。
一方、BCHエンコーダ121には、例えば、BBシグナリング(Base Band Signalling)(BB Header)等の伝送制御用の制御データ(signalling)が供給される。
BCHエンコーダ121は、そこに供給される制御データを、BCHエンコーダ114と同様にBCH符号化し、その結果得られるデータを、LDPCエンコーダ122に供給する。
LDPCエンコーダ122は、BCHエンコーダ121からのデータを、LDPC対象データとして、LDPCエンコーダ115と同様にLDPC符号化し、その結果得られるLDPC符号を、マッパ123に供給する。
マッパ123は、マッパ117と同様に、LDPCエンコーダ122からのLDPC符号を、そのLDPC符号の1ビット以上の符号ビットの単位(シンボル単位)で、直交変調の1つのシンボルを表す信号点にマッピングして直交変調を行い、その結果得られるデータを、周波数インターリーバ124に供給する。
周波数インターリーバ124は、周波数インターリーバ120と同様に、マッパ123からのデータについて、シンボル単位での周波数インターリーブを行い、フレームビルダ/リソースアロケーション部131に供給する。
フレームビルダ/リソースアロケーション部131は、周波数インターリーバ120、及び、124からのデータ(シンボル)の必要な位置に、パイロット(Pilot)のシンボルを挿入し、その結果得られるデータ(シンボル)から、所定の数のシンボルで構成されるフレーム(例えば、PL(Physical Layer)フレームや、T2フレーム、C2フレーム等)を構成して、OFDM生成部(OFDM generation)132に供給する。
OFDM生成部132は、フレームビルダ/リソースアロケーション部131からのフレームから、そのフレームに対応するOFDM信号を生成し、通信路13(図7)を介して送信する。
なお、送信装置11は、例えば、時間インターリーバ118、SISO/MISOエンコーダ119、周波数インターリーバ120、及び、周波数インターリーバ124等の、図8に図示したブロックの一部を設けずに構成することができる。
<ビットインターリーバ116の構成例>
図9は、図8のビットインターリーバ116の構成例を示すブロック図である。
ビットインターリーバ116は、データをインターリーブする機能を有し、パリティインターリーバ(Parity Interleaver)23、グループワイズインターリーバ(Group-Wise Interleaver)24、及びブロックインターリーバ(Block Interleaver)25から構成される。
パリティインターリーバ23は、LDPCエンコーダ115からのLDPC符号のパリティビットを、他のパリティビットの位置にインターリーブするパリティインターリーブを行い、そのパリティインターリーブ後のLDPC符号を、グループワイズインターリーバ24に供給する。
グループワイズインターリーバ24は、パリティインターリーバ23からのLDPC符号について、グループワイズインターリーブを行い、そのグループワイズインターリーブ後のLDPC符号を、ブロックインターリーバ25に供給する。
ここで、グループワイズインターリーブでは、1符号分のLDPC符号を、その先頭から、後述するパラレルファクタPに等しい360ビット単位に区分した、その1区分の360ビットを、ビットグループとして、パリティインターリーバ23からのLDPC符号が、ビットグループ単位でインターリーブされる。
グループワイズインターリーブを行う場合には、グループワイズインターリーブを行わない場合に比較して、エラーレートを改善させることができ、その結果、データ伝送において、良好な通信品質を確保することができる。
ブロックインターリーバ25は、グループワイズインターリーバ24からのLDPC符号を逆多重化するためのブロックインターリーブを行うことで、例えば、1符号分のLDPC符号を、マッピングの単位であるmビットのシンボルにシンボル化し、マッパ117(図8)に供給する。
ここで、ブロックインターリーブでは、例えば、カラム(column)(縦)方向に所定のビット数を記憶する記憶領域としてのカラムが、ロウ(row)(横)方向に、シンボルのビット数mに等しい数だけ並んだ記憶領域に対して、グループワイズインターリーバ24からのLDPC符号が、カラム方向に書き込まれ、ロウ方向に読み出されることで、LDPC符号が、mビットのシンボルにシンボル化される。
<LDPC符号の検査行列>
図10は、図8のLDPCエンコーダ115でLDPC符号化に用いられる検査行列Hの例を示す図である。
検査行列Hは、LDGM(Low-Density Generation Matrix)構造になっており、LDPC符号の符号ビットのうちの、情報ビットに対応する部分の情報行列HAと、パリティビットに対応するパリティ行列HTとによって、式H=[HA|HT](情報行列HAの要素を左側の要素とし、パリティ行列HTの要素を右側の要素とする行列)で表すことができる。
ここで、1符号のLDPC符号(1符号語)の符号ビットのうちの情報ビットのビット数と、パリティビットのビット数を、それぞれ、情報長Kと、パリティ長Mというとともに、1個(1符号語)のLDPC符号の符号ビットのビット数を、符号長N(=K+M)という。
ある符号長NのLDPC符号についての情報長Kとパリティ長Mは、符号化率によって決まる。また、検査行列Hは、行×列がM×Nの行列(M行N列の行列)となる。そして、情報行列HAは、M×Kの行列となり、パリティ行列HTは、M×Mの行列となる。
図11は、図8のLDPCエンコーダ115でLDPC符号化に用いられる検査行列Hのパリティ行列HTの例を示す図である。
LDPCエンコーダ115でLDPC符号化に用いられる検査行列Hのパリティ行列HTとしては、例えば、DVB-T.2等の規格に規定されているLDPC符号の検査行列Hと同様のパリティ行列HTを採用することができる。
DVB-T.2等の規格に規定されているLDPC符号の検査行列Hのパリティ行列HTは、図11に示すように、1の要素が、いわば階段状に並ぶ階段構造の行列(lower bidiagonal matrix)になっている。パリティ行列HTの行重みは、1行目については1で、残りの全ての行については2になっている。また、列重みは、最後の1列については1で、残りの全ての列で2になっている。
以上のように、パリティ行列HTが階段構造になっている検査行列HのLDPC符号は、その検査行列Hを用いて、容易に生成することができる。
すなわち、LDPC符号(1符号語)を、行ベクトルcで表すとともに、その行ベクトルを転置して得られる列ベクトルを、cTと表す。また、LDPC符号である行ベクトルcのうちの、情報ビットの部分を、行ベクトルAで表すとともに、パリティビットの部分を、行ベクトルTで表すこととする。
この場合、行ベクトルcは、情報ビットとしての行ベクトルAと、パリティビットとしての行ベクトルTとによって、式c =[A|T](行ベクトルAの要素を左側の要素とし、行ベクトルTの要素を右側の要素とする行ベクトル)で表すことができる。
検査行列Hと、LDPC符号としての行ベクトルc=[A|T]とは、式HcT=0を満たす必要があり、かかる式HcT=0を満たす行ベクトルc=[A|T]を構成するパリティビットとしての行ベクトルTは、検査行列H=[HA|HT]のパリティ行列HTが、図11に示した階段構造になっている場合には、式HcT=0における列ベクトルHcTの1行目の要素から順に、各行の要素を0にしていくようにすることで、逐次的(順番)に求めることができる。
図12は、DVB-T.2等の規格に規定されているLDPC符号の検査行列Hを説明する図である。
DVB-T.2等の規格に規定されているLDPC符号の検査行列Hの1列目からのKX列については、列重みがXに、その後のK3列については、列重みが3に、その後のM-1列については、列重みが2に、最後の1列については、列重みが1に、それぞれなっている。
ここで、KX+K3+M-1+1は、符号長Nに等しい。
図13は、DVB-T.2等の規格に規定されているLDPC符号の各符号化率rについての、列数KX,K3、及びM、並びに、列重みXを示す図である。
DVB-T.2等の規格では、64800ビットと16200ビットの符号長NのLDPC符号が規定されている。
そして、符号長Nが64800ビットのLDPC符号については、11個の符号化率(nominal rate)1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5,5/6,8/9、及び9/10が規定されており、符号長Nが16200ビットのLDPC符号については、10個の符号化率1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5,5/6、及び8/9が規定されている。
ここで、以下、64800ビットの符号長Nを、64kビットともいい、16200ビットの符号長Nを、16kビットともいう。
LDPC符号については、検査行列Hの列重みが大の列に対応する符号ビットほど、エラーレートが低い傾向がある。
図12及び図13に示した、DVB-T.2等の規格に規定されている検査行列Hでは、先頭側(左側)の列ほど、列重みが大の傾向にあり、したがって、その検査行列Hに対応するLDPC符号については、先頭の符号ビットほど、エラーに強く(エラーに対する耐性があり)、終わりの符号ビットほど、エラーに弱い傾向がある。
<パリティインターリーブ>
図14ないし図16を参照して、図9のパリティインターリーバ23によるパリティインターリーブについて説明する。
図14は、LDPC符号の検査行列のタナーグラフ(の一部)の例を示す図である。
チェックノードは、図14に示すように、そのチェックノードに繋がっているバリアブルノード(に対応する符号ビット)の2個等の複数が同時にイレージャ等のエラーになると、そのチェックノードに繋がっている全バリアブルノードに、値が0である確率と1である確率とが等確率のメッセージを戻す。このため、同一のチェックノードに繋がっている複数のバリアブルノードが同時にイレージャ等になると、復号の性能が劣化する。
ところで、図8のLDPCエンコーダ115が出力するLDPC符号は、例えば、DVB-T.2等の規格に規定されているLDPC符号と同様に、IRA符号であり、検査行列Hのパリティ行列HTは、図11に示したように、階段構造になっている。
図15は、図11に示したように、階段構造になっているパリティ行列HTと、そのパリティ行列HTに対応するタナーグラフの例を示す図である。
図15のAは、階段構造になっているパリティ行列HTの例を示しており、図15のBは、図15のAのパリティ行列HTに対応するタナーグラフを示している。
階段構造になっているパリティ行列HTでは、各行において、1の要素が隣接する(1行目を除く)。このため、パリティ行列HTのタナーグラフにおいて、パリティ行列HTの値が1になっている隣接する2つの要素の列に対応する、隣接する2つのバリアブルノードは、同一のチェックノードに繋がっている。
したがって、バースト誤りやイレージャ等によって、上述の隣接する2つのバリアブルノードに対応するパリティビットが同時にエラーとなると、そのエラーとなった2つのパリティビットに対応する2つのバリアブルノード(パリティビットを用いてメッセージを求めるバリアブルノード)に繋がっているチェックノードは、値が0である確率と1である確率とが等確率のメッセージを、そのチェックノードに繋がっているバリアブルノードに戻すため、復号の性能が劣化する。そして、バースト長(連続してエラーとなるパリティビットのビット数)が大になると、等確率のメッセージを戻すチェックノードが増加し、復号の性能は、さらに劣化する。
そこで、パリティインターリーバ23(図9)は、上述した復号の性能の劣化を防止するため、LDPCエンコーダ115からの、LDPC符号のパリティビットを、他のパリティビットの位置にインターリーブするパリティインターリーブを行う。
図16は、図9のパリティインターリーバ23が行うパリティインターリーブ後のLDPC符号に対応する検査行列Hのパリティ行列HTを示す図である。
ここで、LDPCエンコーダ115が出力するLDPC符号に対応する検査行列Hの情報行列HAは、DVB-T.2等の規格に規定されているLDPC符号に対応する検査行列Hの情報行列と同様に、巡回構造になっている。
巡回構造とは、ある列が、他の列をサイクリックシフトしたものと一致している構造をいい、例えば、P列ごとに、そのP列の各行の1の位置が、そのP列の最初の列を、パリティ長Mを除算して得られる値qに比例する値等の所定の値だけ、列方向にサイクリックシフトした位置になっている構造も含まれる。以下、適宜、巡回構造におけるP列を、パラレルファクタという。
DVB-T.2等の規格に規定されているLDPC符号としては、図12及び図13で説明したように、符号長Nが64800ビットと16200ビットとの、2種類のLDPC符号があり、その2種類のLDPC符号のいずれについても、パラレルファクタPが、パリティ長Mの約数のうちの、1とMを除く約数の1つである360に規定されている。
また、パリティ長Mは、符号化率によって異なる値qを用いて、式M=q×P=q×360で表される素数以外の値になっている。したがって、値qも、パラレルファクタPと同様に、パリティ長Mの約数のうちの、1とMを除く約数の他の1つであり、パリティ長Mを、パラレルファクタPで除算することにより得られる(パリティ長Mの約数であるP及びqの積は、パリティ長Mとなる)。
パリティインターリーバ23は、上述したように、情報長をKとし、また、0以上P未満の整数をxとするとともに、0以上q未満の整数をyとすると、パリティインターリーブとして、NビットのLDPC符号の符号ビットのうちの、K+qx+y+1番目の符号ビットを、K+Py+x+1番目の符号ビットの位置にインターリーブする。
K+qx+y+1番目の符号ビット、及び、K+Py+x+1番目の符号ビットは、いずれも、K+1番目以降の符号ビットであるから、パリティビットであり、したがって、パリティインターリーブによれば、LDPC符号のパリティビットの位置が移動される。
このようなパリティインターリーブによれば、同一のチェックノードに繋がれるバリアブルノード(に対応するパリティビット)が、パラレルファクタP、すなわち、ここでは、360ビットだけ離れるので、バースト長が360ビット未満である場合には、同一のチェックノードに繋がっているバリアブルノードの複数が同時にエラーになる事態を避けることができ、その結果、バースト誤りに対する耐性を改善することができる。
なお、K+qx+y+1番目の符号ビットを、K+Py+x+1番目の符号ビットの位置にインターリーブするパリティインターリーブ後のLDPC符号は、元の検査行列Hの、K+qx+y+1番目の列を、K+Py+x+1番目の列に置換する列置換を行って得られる検査行列(以下、変換検査行列ともいう)のLDPC符号に一致する。
また、変換検査行列のパリティ行列には、図16に示すように、P列(図16では、360列)を単位とする擬似巡回構造が現れる。
ここで、擬似巡回構造とは、一部を除く部分が巡回構造になっている構造を意味する。
DVB-T.2等の規格に規定されているLDPC符号の検査行列に対して、パリティインターリーブに相当する列置換を施して得られる変換検査行列は、変換検査行列の右上隅部分の360行×360列の部分(後述するシフト行列)に、1の要素が1つだけ足らず(0の要素になっており)、その点で、(完全な)巡回構造ではなく、いわば、擬似巡回構造になっている。
LDPCエンコーダ115が出力するLDPC符号の検査行列に対する変換検査行列は、例えば、DVB-T.2等の規格に規定されているLDPC符号の検査行列に対する変換検査行列と同様に、擬似巡回構造になっている。
なお、図16の変換検査行列は、元の検査行列Hに対して、パリティインターリーブに相当する列置換の他、変換検査行列が、後述する構成行列で構成されるようにするための行の置換(行置換)も施された行列になっている。
図17は、図8のLDPCエンコーダ115、ビットインターリーバ116、及び、マッパ117で行われる処理を説明するフローチャートである。
LDPCエンコーダ115は、BCHエンコーダ114から、LDPC対象データが供給されるのを待って、ステップS101において、LDPC対象データを、LDPC符号に符号化し、そのLDPC符号を、ビットインターリーバ116に供給して、処理は、ステップS102に進む。
ビットインターリーバ116は、ステップS102において、LDPCエンコーダ115からのLDPC符号を対象として、ビットインターリーブを行い、そのビットインターリーブによって得られるシンボルを、マッパ117に供給して、処理は、ステップS103に進む。
すなわち、ステップS102では、ビットインターリーバ116(図9)において、パリティインターリーバ23が、LDPCエンコーダ115からのLDPC符号を対象として、パリティインターリーブを行い、そのパリティインターリーブ後のLDPC符号を、グループワイズインターリーバ24に供給する。
グループワイズインターリーバ24は、パリティインターリーバ23からのLDPC符号を対象として、グループワイズインターリーブを行い、ブロックインターリーバ25に供給する。
ブロックインターリーバ25は、グループワイズインターリーバ24によるグループワイズインターリーブ後のLDPC符号を対象として、ブロックインターリーブを行い、その結果得られるmビットのシンボルを、マッパ117に供給する。
マッパ117は、ステップS103において、ブロックインターリーバ25からのシンボルを、マッパ117で行われる直交変調の変調方式で定める2m個の信号点のいずれかにマッピングして直交変調し、その結果得られるデータを、時間インターリーバ118に供給する。
以上のように、パリティインターリーブや、グループワイズインターリーブを行うことで、LDPC符号の複数の符号ビットを1個のシンボルとして送信する場合のエラーレートを改善することができる。
ここで、図9では、説明の便宜のため、パリティインターリーブを行うブロックであるパリティインターリーバ23と、グループワイズインターリーブを行うブロックであるグループワイズインターリーバ24とを、別個に構成するようにしたが、パリティインターリーバ23とグループワイズインターリーバ24とは、一体的に構成することができる。
すなわち、パリティインターリーブと、グループワイズインターリーブとは、いずれも、メモリに対する符号ビットの書き込み、及び読み出しによって行うことができ、符号ビットの書き込みを行うアドレス(書き込みアドレス)を、符号ビットの読み出しを行うアドレス(読み出しアドレス)に変換する行列によって表すことができる。
したがって、パリティインターリーブを表す行列と、グループワイズインターリーブを表す行列とを乗算して得られる行列を求めておけば、それらの行列によって、符号ビットを変換することで、パリティインターリーブを行い、さらに、そのパリティインターリーブ後のLDPC符号をグループワイズインターリーブした結果を得ることができる。
また、パリティインターリーバ23とグループワイズインターリーバ24に加えて、ブロックインターリーバ25も、一体的に構成することが可能である。
すなわち、ブロックインターリーバ25で行われるブロックインターリーブも、LDPC符号を記憶するメモリの書き込みアドレスを、読み出しアドレスに変換する行列によって表すことができる。
したがって、パリティインターリーブを表す行列、グループワイズインターリーブを表す行列、及び、ブロックインターリーブを表す行列を乗算して得られる行列を求めておけば、それらの行列によって、パリティインターリーブ、グループワイズインターリーブ、及び、ブロックインターリーブを、一括して行うことができる。
なお、パリティインターリーブ及びグループワイズインターリーブのうちの一方又は量は、行わないこととすることができる。
<LDPCエンコーダ115の構成例>
図18は、図8のLDPCエンコーダ115の構成例を示すブロック図である。
なお、図8のLDPCエンコーダ122も、同様に構成される。
図12及び図13で説明したように、DVB-T.2等の規格では、64800ビットと16200ビットとの2通りの符号長NのLDPC符号が規定されている。
そして、符号長Nが64800ビットのLDPC符号については、11個の符号化率1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5,5/6,8/9、及び9/10が規定されており、符号長Nが16200ビットのLDPC符号については、10個の符号化率1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5,5/6、及び8/9が規定されている(図12及び図13)。
LDPCエンコーダ115は、例えば、このような、符号長Nが64800ビットや16200ビットの各符号化率のLDPC符号による符号化(誤り訂正符号化)を、符号長Nごと、及び符号化率ごとに用意された検査行列Hに従って行うことができる。
また、LDPCエンコーダ115は、符号長Nが17280ビットその他の任意の符号長Nの、符号化率が2/16, 3/16, 4/16, 5/16, 6/16, 7/16, 8/16, 9/16, 10/16, 11/16, 12/16, 13/16, 14/16その他の任意の符号化率rのLDPC符号の検査行列Hに従って、LDPC符号化を行うことができる。
LDPCエンコーダ115は、符号化処理部601と記憶部602とから構成される。
符号化処理部601は、符号化率設定部611、初期値テーブル読み出し部612、検査行列生成部613、情報ビット読み出し部614、符号化パリティ演算部615、及び制御部616から構成され、LDPCエンコーダ115に供給されるLDPC対象データのLDPC符号化を行い、その結果得られるLDPC符号を、ビットインターリーバ116(図8)に供給する。
すなわち、符号化率設定部611は、例えば、オペレータの操作等に応じて、LDPC符号の符号長Nや符号化率r、その他、LDPC符号を特定する特定情報を設定する。
初期値テーブル読み出し部612は、符号化率設定部611が設定した特定情報によって特定されるLDPC符号の検査行列を表す、後述する検査行列初期値テーブルを、記憶部602から読み出す。
検査行列生成部613は、初期値テーブル読み出し部612が読み出した検査行列初期値テーブルに基づいて、検査行列Hを生成し、記憶部602に格納する。例えば、検査行列生成部613は、符号化率設定部611が設定した符号長N及び符号化率rに応じた情報長K(=符号長N-パリティ長M)に対応する情報行列HAの1の要素を列方向に360列(パラレルファクタP)ごとの周期で配置して検査行列Hを生成し、記憶部602に格納する。
情報ビット読み出し部614は、LDPCエンコーダ115に供給されるLDPC対象データから、情報長K分の情報ビットを読み出す(抽出する)。
符号化パリティ演算部615は、検査行列生成部613が生成した検査行列Hを記憶部602から読み出し、その検査行列Hを用いて、情報ビット読み出し部614が読み出した情報ビットに対するパリティビットを所定の式に基づいて算出することにより、符号語(LDPC符号)を生成する。
制御部616は、符号化処理部601を構成する各ブロックを制御する。
記憶部602には、例えば、64800ビットや16200ビット等の符号長Nそれぞれについての、図12及び図13に示した複数の符号化率等それぞれに対応する複数の検査行列初期値テーブルや、符号長Nが17280ビットについての、符号化率が2/16, 3/16, 4/16, 5/16, 6/16, 7/16, 8/16, 9/16, 10/16, 11/16, 12/16, 13/16, 14/16それぞれに対応する検査行列初期値テーブル、その他任意の符号長Nで、任意の符号化率rのLDPC符号の検査行列Hの検査行列初期値テーブルが記憶される。また、記憶部602は、符号化処理部601の処理上必要なデータを一時記憶する。
図19は、図18のLDPCエンコーダ115の処理の例を説明するフローチャートである。
ステップS201において、符号化率設定部611は、LDPC符号化を行う符号長N及び符号化率r、その他のLDPC符号を特定する特定情報を設定する。
ステップS202において、初期値テーブル読み出し部612は、符号化率設定部611により設定された特定情報としての符号長N及び符号化率r等により特定される、予め定められた検査行列初期値テーブルを、記憶部602から読み出す。
ステップS203において、検査行列生成部613は、初期値テーブル読み出し部612が記憶部602から読み出した検査行列初期値テーブルを用いて、符号化率設定部611により設定された符号長N及び符号化率rのLDPC符号の検査行列Hを求め(生成し)、記憶部602に供給して格納する。
ステップS204において、情報ビット読み出し部614は、LDPCエンコーダ115に供給されるLDPC対象データから、符号化率設定部611により設定された符号長N及び符号化率rに対応する情報長K(=N×r)の情報ビットを読み出すとともに、検査行列生成部613が求めた検査行列Hを、記憶部602から読み出し、符号化パリティ演算部615に供給する。
ステップS205において、符号化パリティ演算部615は、情報ビット読み出し部614からの情報ビットと検査行列Hとを用い、式(8)を満たす符号語cのパリティビットを順次演算する。
HcT=0
・・・(8)
式(8)において、cは、符号語(LDPC符号)としての行ベクトルを表し、cTは、行ベクトルcの転置を表す。
ここで、上述したように、LDPC符号(1符号語)としての行ベクトルcのうちの、情報ビットの部分を、行ベクトルAで表すとともに、パリティビットの部分を、行ベクトルTで表す場合には、行ベクトルcは、情報ビットとしての行ベクトルAと、パリティビットとしての行ベクトルTとによって、式c =[A|T]で表すことができる。
検査行列Hと、LDPC符号としての行ベクトルc=[A|T]とは、式HcT=0を満たす必要があり、かかる式HcT=0を満たす行ベクトルc=[A|T]を構成するパリティビットとしての行ベクトルTは、検査行列H=[HA|HT]のパリティ行列HTが、図11に示した階段構造になっている場合には、式HcT=0における列ベクトルHcTの1行目の要素から順に、各行の要素を0にしていくようにすることで、逐次的に求めることができる。
符号化パリティ演算部615は、情報ビット読み出し部614からの情報ビットAに対して、パリティビットTを求め、その情報ビットAとパリティビットTとによって表される符号語c =[A|T]を、情報ビットAのLDPC符号化結果として出力する。
その後、ステップS206において、制御部616は、LDPC符号化を終了するかどうかを判定する。ステップS206において、LDPC符号化を終了しないと判定された場合、すなわち、例えば、LDPC符号化すべきLDPC対象データが、まだある場合、処理は、ステップS201(又は、ステップS204)に戻り、以下、ステップS201(又は、ステップS204)ないしS206の処理が繰り返される。
また、ステップS206において、LDPC符号化を終了すると判定された場合、すなわち、例えば、LDPC符号化すべきLDPC対象データがない場合、LDPCエンコーダ115は、処理を終了する。
LDPCエンコーダ115については、様々な符号長Nや符号化率rのLDPC符号の(検査行列を表す)検査行列初期値テーブルをあらかじめ用意することができる。LDPCエンコーダ115では、あらかじめ用意された検査行列初期値テーブルから生成される検査行列Hを用いて、様々な符号長Nや符号化率rのLDPC符号へのLDPC符号化を行うことができる。
<検査行列初期値テーブルの例>
検査行列初期値テーブルは、例えば、検査行列Hの、LDPC符号(検査行列Hによって定義されるLDPC符号)の符号長N及び符号化率rに応じた情報長Kに対応する情報行列HA(図10)の1の要素の位置を360列(パラレルファクタP)ごとに表すテーブルであり、各符号長N及び各符号化率rの検査行列Hごとに、あらかじめ作成される。
すなわち、検査行列初期値テーブルは、少なくとも、情報行列HAの1の要素の位置を360列(パラレルファクタP)ごとに表す。
また、検査行列Hには、パリティ行列HTの全部が階段構造になっている検査行列や、パリティ行列HTの一部が階段構造になっており、残りの部分が対角行列(単位行列)になっている検査行列がある。
以下、パリティ行列HTの一部が階段構造になっており、残りの部分が対角行列になっている検査行列を表す検査行列初期値テーブルの表現方式を、タイプA方式ともいう。また、パリティ行列HTの全部が階段構造になっている検査行列を表す検査行列初期値テーブルの表現方式を、タイプB方式ともいう。
また、タイプA方式の検査行列初期値テーブルが表す検査行列に対するLDPC符号を、タイプA符号ともいい、タイプB方式の検査行列初期値テーブルが表す検査行列に対するLDPC符号を、タイプB符号ともいう。
「タイプA」及び「タイプB」の呼称は、ATSC 3.0の規格に準じた呼称である。例えば、ATSC3.0では、タイプA符号及びタイプB符号の両方が採用されている。
なお、DVB-T.2等では、タイプB符号が採用されている。
図20は、タイプB方式の検査行列初期値テーブルの例を示す図である。
すなわち、図20は、DVB-T.2の規格に規定されている、符号長Nが16200ビットの、符号化率(DVB-T.2の表記上の符号化率)rが1/4のタイプB符号の(検査行列Hを表す)検査行列初期値テーブルを示している。
検査行列生成部613(図18)は、タイプB方式の検査行列初期値テーブルを用いて、以下のように、検査行列Hを求める。
図21は、タイプB方式の検査行列初期値テーブルから検査行列Hを求める方法を説明する図である。
すなわち、図21は、DVB-T.2の規格に規定されている、符号長Nが16200ビットの、符号化率rが2/3のタイプB符号の検査行列初期値テーブルを示している。
タイプB方式の検査行列初期値テーブルは、LDPC符号の符号長N及び符号化率rに応じた情報長Kに対応する情報行列HAの全体の1の要素の位置を、360列(パラレルファクタP)ごとに表すテーブルであり、そのi行目には、検査行列Hの1+360×(i-1)列目の1の要素の行番号(検査行列Hの1行目の行番号を0とする行番号)が、その1+360×(i-1)列目の列が持つ列重みの数だけ並んでいる。
ここで、タイプB方式の検査行列Hの、パリティ長Mに対応するパリティ行列HT(図10)は、図15に示したように階段構造に決まっているので、検査行列初期値テーブルにより、情報長Kに対応する情報行列HA(図10)を求めることができれば、検査行列Hを求めることができる。
タイプB方式の検査行列初期値テーブルの行数k+1は、情報長Kによって異なる。
情報長Kと、検査行列初期値テーブルの行数k+1との間には、式(9)の関係が成り立つ。
K=(k+1)×360
・・・(9)
ここで、式(9)の360は、図16で説明したパラレルファクタPである。
図21の検査行列初期値テーブルでは、1行目から3行目までに、13個の数値が並び、4行目からk+1行目(図21では、30行目)までに、3個の数値が並んでいる。
したがって、図21の検査行列初期値テーブルから求められる検査行列Hの列重みは、1列目から、1+360×(3-1)-1列目までは、13であり、1+360×(3-1)列目から、K列目までは、3である。
図21の検査行列初期値テーブルの1行目は、0,2084,1613,1548,1286,1460,3196,4297,2481,3369,3451,4620,2622となっており、これは、検査行列Hの1列目において、行番号が、0,2084,1613,1548,1286,1460,3196,4297,2481,3369,3451,4620,2622の行の要素が1であること(かつ、他の要素が0であること)を示している。
また、図21の検査行列初期値テーブルの2行目は、1,122,1516,3448,2880,1407,1847,3799,3529,373,971,4358,3108となっており、これは、検査行列Hの361(=1+360×(2-1))列目において、行番号が、1,122,1516,3448,2880,1407,1847,3799,3529,373,971,4358,3108の行の要素が1であることを示している。
以上のように、検査行列初期値テーブルは、検査行列Hの情報行列HAの1の要素の位置を360列ごとに表す。
検査行列Hの1+360×(i-1)列目以外の列、つまり、2+360×(i-1)列目から、360×i列目までの各列は、検査行列初期値テーブルによって定まる1+360×(i-1)列目の1の要素を、パリティ長Mに従って下方向(列の下方向)に、周期的にサイクリックシフトして配置したものになっている。
すなわち、例えば、2+360×(i-1)列目は、1+360×(i-1)列目を、M/360(=q)だけ下方向にサイクリックシフトしたものとなっており、次の3+360×(i-1)列目は、1+360×(i-1)列目を、2×M/360(=2×q)だけ下方向にサイクリックシフトしたもの(2+360×(i-1)列目を、M/360(=q)だけ下方向にサイクリックシフトしたもの)となっている。
いま、検査行列初期値テーブルのi行目(上からi番目)のj列目(左からj番目)の数値を、hi,jと表すとともに、検査行列Hのw列目の、j個目の1の要素の行番号を、Hw-jと表すこととすると、検査行列Hの1+360×(i-1)列目以外の列であるw列目の、1の要素の行番号Hw-jは、式(10)で求めることができる。
Hw-j=mod{hi,j+mod((w-1),P)×q,M)
・・・(10)
ここで、mod(x,y)はxをyで割った余りを意味する。
また、Pは、上述したパラレルファクタであり、本実施の形態では、例えば、DVB-T.2等やATSC3.0の規格と同様に、360である。さらに、qは、パリティ長Mを、パラレルファクタP(=360)で除算することにより得られる値M/360である。
検査行列生成部613(図18)は、検査行列初期値テーブルによって、検査行列Hの1+360×(i-1)列目の1の要素の行番号を特定する。
さらに、検査行列生成部613(図18)は、検査行列Hの1+360×(i-1)列目以外の列であるw列目の、1の要素の行番号Hw-jを、式(10)に従って求め、以上により得られた行番号の要素を1とする検査行列Hを生成する。
図22は、タイプA方式の検査行列Hの構造を示す図である。
タイプA方式の検査行列は、A行列、B行列、C行列、D行列、及び、Z行列で構成される。
A行列は、所定値M1と、LDPC符号の情報長K=符号長N×符号化率rとで表されるM1行K列の、検査行列Hの左上の行列である。
B行列は、M1行M1列の、A行列の右に隣接する階段構造の行列である。
C行列は、N-K-M1行K+M1列の、A行列及びB行列の下に隣接する行列である。
D行列は、N-K-M1行N-K-M1列の、C行列の右に隣接する単位行列である。
Z行列は、M1行N-K-M1列の、B行列の右に隣接するゼロ行列(0行列)である。
以上のようなA行列ないしD行列、及び、Z行列で構成されるタイプA方式の検査行列Hでは、A行列、及び、C行列の一部が、情報行列を構成しており、B行列、C行列の残りの部分、D行列、及び、Z行列が、パリティ行列を構成している。
なお、B行列は、階段構造の行列であり、D行列は、単位行列であるので、タイプA方式の検査行列Hのパリティ行列は、一部(B行列の部分)が階段構造になっており、残りの部分(D行列の部分)が対角行列(単位行列)になっている。
A行列及びC行列は、タイプB方式の検査行列Hの情報行列と同様に、パラレルファクタPの列(例えば、360列)ごとの巡回構造になっており、タイプA方式の検査行列初期値テーブルは、A行列及びC行列の1の要素の位置を360列ごとに表す。
ここで、上述したように、A行列、及び、C行列の一部は、情報行列を構成するから、A行列及びC行列の1の要素の位置を360列ごとに表すタイプA方式の検査行列初期値テーブルは、少なくとも、情報行列の1の要素の位置を360列ごとに表している、ということができる。
なお、タイプA方式の検査行列初期値テーブルは、A行列及びC行列の1の要素の位置を360列ごとに表すから、検査行列の一部(C行列の残りの部分)の1の要素の位置を360列ごとに表している、ということもできる。
図23は、タイプA方式の検査行列初期値テーブルの例を示す図である。
すなわち、図23は、符号長Nが35ビットの、符号化率rが2/7の検査行列Hを表す検査行列初期値テーブルの例を示している。
タイプA方式の検査行列初期値テーブルは、A行列及びC行列の1の要素の位置を、パラレルファクタPごとに表すテーブルであり、そのi行目には、検査行列Hの1+P×(i-1)列目の1の要素の行番号(検査行列Hの1行目の行番号を0とする行番号)が、その1+P×(i-1)列目の列が持つ列重みの数だけ並んでいる。
なお、ここでは、説明を簡単にするため、パラレルファクタPは、例えば、5であるとする。
タイプA方式の検査行列Hについては、パラメータとして、M1,M2,Q1、及び、Q2がある。
M1(図22)は、B行列のサイズを決めるパラメータであり、パラレルファクタPの倍数の値をとる。M1を調整することで、LDPC符号の性能は変化し、検査行列Hを決定するときに、所定の値に調整される。ここでは、M1として、パラレルファクタP=5の3倍の15が採用されていることとする。
M2(図22)は、パリティ長Mから、M1を減算した値M-M1をとる。
ここでは、情報長Kは、N×r=35×2/7=10であり、パリティ長Mは、N-K=35-10=25であるので、M2は、M-M1=25-15=10となる。
Q1は、式Q1=M1/Pに従って求められ、A行列におけるサイクリックシフトのシフト数(行数)を表す。
すなわち、タイプA方式の検査行列HのA行列の1+P×(i-1)列目以外の列、つまり、2+P×(i-1)列目から、P×i列目までの各列は、検査行列初期値テーブルによって定まる1+P×(i-1)列目の1の要素を下方向(列の下方向)に、周期的にサイクリックシフトして配置したものになっており、Q1は、A行列における、そのサイクリックシフトのシフト数を表す。
Q2は、式Q2=M2/Pに従って求められ、C行列におけるサイクリックシフトのシフト数(行数)を表す。
すなわち、タイプA方式の検査行列HのC行列の1+P×(i-1)列目以外の列、つまり、2+P×(i-1)列目から、P×i列目までの各列は、検査行列初期値テーブルによって定まる1+P×(i-1)列目の1の要素を下方向(列の下方向)に、周期的にサイクリックシフトして配置したものになっており、Q2は、C行列における、そのサイクリックシフトのシフト数を表す。
ここでは、Q1は、M1/P=15/5=3であり、Q2は、M2/P=10/5=2である。
図23の検査行列初期値テーブルでは、1行目と2行目に、3個の数値が並び、3行目から5行目までに、1個の数値が並んでおり、かかる数値の並びによれば、図23の検査行列初期値テーブルから求められる検査行列HのA行列及びC行列の部分の列重みは、1=1+5×(1-1)列目から、10=5×2列目までは、3であり、11=1+5×(3-1)列目から、25=5×5列目までは、1である。
すなわち、図23の検査行列初期値テーブルの1行目は、2,6,18となっており、これは、検査行列Hの1列目において、行番号が、2,6,18の行の要素が1であること(かつ、他の要素が0であること)を示している。
ここで、いまの場合、A行列(図22)は、15行10列(M1行K列)の行列であり、C行列(図22)は、10行25列(N-K-M1行K+M1列)の行列であるから、検査行列Hの行番号0ないし14の行は、A行列の行であり、検査行列Hの行番号15ないし24の行は、C行列の行である。
したがって、行番号が2,6,18の行(以下、行#2,#6,#18のように記載する)のうちの、行#2及び#6は、A行列の行であり、行#18は、C行列の行である。
図23の検査行列初期値テーブルの2行目は、2,10,19となっており、これは、検査行列Hの6(=1+5×(2-1))列目において、行#2,#10,#19の要素が1であることを示している。
ここで、検査行列Hの6(=1+5×(2-1))列目において、行#2,#10,#19のうちの、行#2及び#10は、A行列の行であり、行#19は、C行列の行である。
図23の検査行列初期値テーブルの3行目は、22となっており、これは、検査行列Hの11(=1+5×(3-1))列目において、行#22の要素が1であることを示している。
ここで、検査行列Hの11(=1+5×(3-1))列目において、行#22は、C行列の行である。
以下同様に、図23の検査行列初期値テーブルの4行目の19は、検査行列Hの16(=1+5×(4-1))列目において、行#19の要素が1であることを示しており、図23の検査行列初期値テーブルの5行目の15は、検査行列Hの21(=1+5×(5-1))列目において、行#15の要素が1であることを示している。
以上のように、検査行列初期値テーブルは、検査行列HのA行列及びC行列の1の要素の位置をパラレルファクタP=5列ごとに表す。
検査行列HのA行列及びC行列の1+5×(i-1)列目以外の列、つまり、2+5×(i-1)列目から、5×i列目までの各列は、検査行列初期値テーブルによって定まる1+5×(i-1)列目の1の要素を、パラメータQ1及びQ2に従って下方向(列の下方向)に、周期的にサイクリックシフトして配置したものになっている。
すなわち、例えば、A行列の、2+5×(i-1)列目は、1+5×(i-1)列目を、Q1(=3)だけ下方向にサイクリックシフトしたものとなっており、次の3+5×(i-1)列目は、1+5×(i-1)列目を、2×Q1(=2×3)だけ下方向にサイクリックシフトしたもの(2+5×(i-1)列目を、Q1だけ下方向にサイクリックシフトしたもの)となっている。
また、例えば、C行列の、2+5×(i-1)列目は、1+5×(i-1)列目を、Q2(=2)だけ下方向にサイクリックシフトしたものとなっており、次の3+5×(i-1)列目は、1+5×(i-1)列目を、2×Q2(=2×2)だけ下方向にサイクリックシフトしたもの(2+5×(i-1)列目を、Q2だけ下方向にサイクリックシフトしたもの)となっている。
図24は、図23の検査行列初期値テーブルから生成されるA行列を示す図である。
図24のA行列では、図23の検査行列初期値テーブルの1行目にしたがい、1(=1+5×(1-1))列目の行#2及び#6の要素が1になっている。
そして、2(=2+5×(1-1))列目から5(=5+5×(1-1))列目までの各列は、直前の列を、Q1=3だけ下方向にサイクリックシフトしたものになっている。
さらに、図24のA行列では、図23の検査行列初期値テーブルの2行目にしたがい、6(=1+5×(2-1))列目の行#2及び#10の要素が1になっている。
そして、7(=2+5×(2-1))列目から10(=5+5×(2-1))列目までの各列は、直前の列を、Q1=3だけ下方向にサイクリックシフトしたものになっている。
図25は、B行列のパリティインターリーブを示す図である。
検査行列生成部613(図18)は、検査行列初期値テーブルを用いて、A行列を生成し、そのA行列の右隣に、階段構造のB行列を配置する。そして、検査行列生成部613は、B行列をパリティ行列とみなして、階段構造のB行列の隣接する1の要素が、行方向に、パラレルファクタP=5だけ離れるように、パリティインターリーブを行う。
図25は、図24のB行列のパリティインターリーブ後のA行列及びB行列を示している。
図26は、図23の検査行列初期値テーブルから生成されるC行列を示す図である。
図26のC行列では、図23の検査行列初期値テーブルの1行目にしたがい、検査行列Hの1(=1+5×(1-1))列目の行#18の要素が1になっている。
そして、C行列の2(=2+5×(1-1))列目から5(=5+5×(1-1))列目までの各列は、直前の列を、Q2=2だけ下方向にサイクリックシフトしたものになっている。
さらに、図26のC行列では、図23の検査行列初期値テーブルの2行目ないし5行目にしたがい、検査行列Hの6(=1+5×(2-1))列目の行#19、11(=1+5×(3-1))列目の行#22、16(=1+5×(4-1))列目の行#19、及び、21(=1+5×(5-1))列目の行#15の要素が1になっている。
そして、7(=2+5×(2-1))列目から10(=5+5×(2-1))列目までの各列、12(=2+5×(3-1))列目から15(=5+5×(3-1))列目までの各列、17(=2+5×(4-1))列目から20(=5+5×(4-1))列目までの各列、及び、22(=2+5×(5-1))列目から25(=5+5×(5-1))列目までの各列は、直前の列を、Q2=2だけ下方向にサイクリックシフトしたものになっている。
検査行列生成部613(図18)は、検査行列初期値テーブルを用いて、C行列を生成し、そのC行列を、A行列及び(パリティインターリーブ後の)B行列の下に配置する。
さらに、検査行列生成部613は、B行列の右隣に、Z行列を配置するとともに、C行列の右隣に、D行列を配置し、図26に示す検査行列Hを生成する。
図27は、D行列のパリティインターリーブを示す図である。
検査行列生成部613は、図26の検査行列Hを生成した後、D行列をパリティ行列とみなして、単位行列のD行列の奇数行と次の偶数行との1の要素が、行方向に、パラレルファクタP=5だけ離れるように、(D行列のみの)パリティインターリーブを行う。
図27は、図26の検査行列Hについて、D行列のパリティインターリーブを行った後の検査行列Hを示している。
LDPCエンコーダ115(の符号化パリティ演算部615(図18))は、例えば、図27の検査行列Hを用いて、LDPC符号化(LDPC符号の生成)を行う。
ここで、図27の検査行列Hを用いて生成されるLDPC符号は、パリティインターリーブを行ったLDPC符号になっており、したがって、図27の検査行列Hを用いて生成されるLDPC符号については、パリティインターリーバ23(図9)において、パリティインターリーブを行う必要はない。すなわち、D行列のパリティインターリーブを行った後の検査行列Hを用いて生成されるLDPC符号は、パリティインターリーブを行ったLDPC符号になるため、かかるLDPC符号については、パリティインターリーバ23でのパリティインターリーブは、スキップされる。
図28は、図27の検査行列HのB行列、C行列の一部(C行列のうちの、B行列の下に配置されている部分)、及び、D行列に、パリティインターリーブを元に戻すパリティデインターリーブとしての列置換(column permutation)を行った検査行列Hを示す図である。
LDPCエンコーダ115では、図28の検査行列Hを用いて、LDPC符号化(LDPC符号の生成)を行うことができる。
図28の検査行列Hを用いて、LDPC符号化を行う場合、そのLDPC符号化によれば、パリティインターリーブを行っていないLDPC符号が得られる。したがって、図28の検査行列Hを用いて、LDPC符号化を行う場合には、パリティインターリーバ23(図9)において、パリティインターリーブが行われる。
図29は、図27の検査行列Hに、行置換(row permutation)を行うことにより得られる変換検査行列Hを示す図である。
変換検査行列は、後述するように、P×Pの単位行列、その単位行列の1のうち1個以上が0になった準単位行列、単位行列又は準単位行列をサイクリックシフトしたシフト行列、単位行列、準単位行列、又はシフト行列のうちの2以上の和である和行列、及び、P×Pの0行列の組合わせで表される行列になっている。
変換検査行列を、LDPC符号の復号に用いることにより、LDPC符号の復号において、後述するように、チェックノード演算、及びバリアブルノード演算を、P個同時に行うアーキテクチャを採用することができる。
<新LDPC符号>
LDPC符号を用いたデータ伝送において、良好な通信品質を確保する方法の1つとして、性能の良いLDPC符号を用いる方法がある。
以下では、性能の良い新たなLDPC符号(以下、新LDPC符号ともいう)について説明する。
新LDPC符号としては、例えば、パラレルファクタPが、DVB-T.2やATSC3.0等と同様の360で、巡回構造の検査行列Hに対応するタイプA符号やタイプB符号を採用することができる。
LDPCエンコーダ115(図8、図18)は、符号長Nが、64kビットよりも長い、例えば、69120ビットで、符号化率rが、例えば、2/16,3/16,4/16,5/16,6/16,7/16,8/16,9/16,10/16,11/16,12/16,13/16、又は、14/16のうちのいずれかのLDPC符号の検査行列初期値テーブル(から求められる検査行列H)を用いて、LDPC符号へのLDPC符号化を行うことができる。
また、LDPCエンコーダ115は、以下のような、符号長Nが、64kビットよりも短い、例えば、17280ビット(17kビット)で、符号化率rが、例えば、2/16,3/16,4/16,5/16,6/16,7/16,8/16,9/16,10/16,11/16,12/16,13/16、又は、14/16のうちのいずれかの新LDPC符号の検査行列初期値テーブル(から求められる検査行列H)を用いて、新LDPC符号へのLDPC符号化を行うことができる。
符号長Nが17280ビットの新LDPC符号へのLDPC符号化を行う場合、LDPCエンコーダ115(図8)の記憶部602には、新LDPC符号の検査行列初期値テーブルが記憶される。
図30は、符号長Nが17280ビットで、符号化率rが2/16の新LDPC符号としてのタイプA符号(以下、r=2/16のタイプA符号ともいう)の検査行列Hを表す(タイプA方式の)検査行列初期値テーブルの例を示す図である。
図31は、符号長Nが17280ビットで、符号化率rが3/16の新LDPC符号としてのタイプA符号(以下、r=3/16のタイプA符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図32は、符号長Nが17280ビットで、符号化率rが4/16の新LDPC符号としてのタイプA符号(以下、r=4/16のタイプA符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図33は、符号長Nが17280ビットで、符号化率rが5/16の新LDPC符号としてのタイプA符号(以下、r=5/16のタイプA符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図34は、符号長Nが17280ビットで、符号化率rが6/16の新LDPC符号としてのタイプA符号(以下、r=6/16のタイプA符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図35は、符号長Nが17280ビットで、符号化率rが7/16の新LDPC符号としてのタイプA符号(以下、r=7/16のタイプA符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図36は、符号長Nが17280ビットで、符号化率rが7/16の新LDPC符号としてのタイプB符号(以下、r=7/16のタイプB符号ともいう)の検査行列Hを表す(タイプB方式の)検査行列初期値テーブルの例を示す図である。
図37は、符号長Nが17280ビットで、符号化率rが8/16の新LDPC符号としてのタイプB符号(以下、r=8/16のタイプB符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図38は、符号長Nが17280ビットで、符号化率rが9/16の新LDPC符号としてのタイプB符号(以下、r=9/16のタイプB符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図39は、符号長Nが17280ビットで、符号化率rが10/16の新LDPC符号としてのタイプB符号(以下、r=10/16のタイプB符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図40は、符号長Nが17280ビットで、符号化率rが11/16の新LDPC符号としてのタイプB符号(以下、r=11/16のタイプB符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図41は、符号長Nが17280ビットで、符号化率rが12/16の新LDPC符号としてのタイプB符号(以下、r=12/16のタイプB符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図42は、符号長Nが17280ビットで、符号化率rが13/16の新LDPC符号としてのタイプB符号(以下、r=13/16のタイプB符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
図43は、符号長Nが17280ビットで、符号化率rが14/16の新LDPC符号としてのタイプB符号(以下、r=14/16のタイプB符号ともいう)の検査行列Hを表す検査行列初期値テーブルの例を示す図である。
新LDPC符号は、性能の良いLDPC符号になっている。
ここで、性能の良いLDPC符号とは、適切な検査行列Hから得られるLDPC符号である。
適切な検査行列Hとは、例えば、検査行列Hから得られるLDPC符号を、低いEs/N0、又はEb/No(1ビットあたりの信号電力対雑音電力比)で送信したときに、BER(bit error rate)(及びFER(frame error rate))をより小にする、所定の条件を満たす検査行列である。
適切な検査行列Hは、例えば、所定の条件を満たす様々な検査行列から得られるLDPC符号を、低いEs/Noで送信したときのBERを計測するシミュレーションを行うことにより求めることができる。
適切な検査行列Hが満たすべき所定の条件としては、例えば、デンシティエボリューション(Density Evolution)と呼ばれる符号の性能の解析法で得られる解析結果が良好であること、サイクル4と呼ばれる、1の要素のループが存在しないこと、等がある。
ここで、情報行列HAにおいて、サイクル4のように、1の要素が密集していると、LDPC符号の復号性能が劣化することが知られており、このため、検査行列Hには、サイクル4が存在しないことが望ましい。
検査行列Hにおいて、1の要素によって構成されるループの長さ(ループ長)の最小値は、ガース(girth)と呼ばれる。サイクル4が存在しないこととは、ガースが4より大であることを意味する。
なお、適切な検査行列Hが満たすべき所定の条件は、LDPC符号の復号性能の向上や、LDPC符号の復号処理の容易化(単純化)等の観点から適宜決定することができる。
図44及び図45は、適切な検査行列Hが満たすべき所定の条件としての解析結果が得られるデンシティエボリューションを説明する図である。
デンシティエボリューションとは、後述するデグリーシーケンス(degree sequence)で特徴付けられる符号長Nが∞のLDPC符号全体(アンサンブル(ensemble))に対して、そのエラー確率の期待値を計算する、符号の解析法である。
例えば、AWGNチャネル上で、ノイズの分散値を0からどんどん大きくしていくと、あるアンサンブルのエラー確率の期待値は、最初は0であるが、ノイズの分散値が、ある閾値(threshold)以上となると、0ではなくなる。
デンシティエボリューションによれば、そのエラー確率の期待値が0ではなくなる、ノイズの分散値の閾値(以下、性能閾値ともいう)を比較することで、アンサンブルの性能(検査行列の適切さ)の良し悪しを決めることができる。
なお、具体的なLDPC符号に対して、そのLDPC符号が属するアンサンブルを決定し、そのアンサンブルに対してデンシティエボリューションを行うと、そのLDPC符号のおおまかな性能を予想することができる。
したがって、性能の良いLDPC符号は、性能の良いアンサンブルを見つければ、そのアンサンブルに属するLDPC符号の中から見つけることができる。
ここで、上述のデグリーシーケンスとは、LDPC符号の符号長Nに対して、各値の重みをもつバリアブルノードやチェックノードがどれくらいの割合だけあるかを表す。
例えば、符号化率が1/2のregular(3,6)LDPC符号は、すべてのバリアブルノードの重み(列重み)が3で、すべてのチェックノードの重み(行重み)が6であるというデグリーシーケンスによって特徴付けられるアンサンブルに属する。
図44は、そのようなアンサンブルのタナーグラフ(Tanner graph)を示している。
図44のタナーブラフでは、図中丸印(○印)で示すバリアブルノードが、符号長Nに等しいN個だけ存在し、図中四角形(□印)で示すチェックノードが、符号長Nに符号化率1/2を乗算した乗算値に等しいN/2個だけ存在する。
各バリアブルノードには、列重みに等しい3本の枝(edge)が接続されており、したがって、N個のバリアブルノードに接続している枝は、全部で、3N本だけ存在する。
また、各チェックノードには、行重みに等しい6本の枝が接続されており、したがって、N/2個のチェックノードに接続している枝は、全部で、3N本だけ存在する。
さらに、図44のタナーグラフでは、1つのインターリーバが存在する。
インターリーバは、N個のバリアブルノードに接続している3N本の枝をランダムに並べ替え、その並べ替え後の各枝を、N/2個のチェックノードに接続している3N本の枝のうちのいずれかに繋げる。
インターリーバでの、N個のバリアブルノードに接続している3N本の枝を並べ替える並べ替えパターンは、(3N)!(=(3N)×(3N-1)×・・・×1)通りだけある。したがって、すべてのバリアブルノードの重みが3で、すべてのチェックノードの重みが6であるというデグリーリーケンスによって特徴付けられるアンサンブルは、(3N)!個のLDPC符号の集合となる。
性能の良いLDPC符号(適切な検査行列)を求めるシミュレーションでは、デンシティエボリューションにおいて、マルチエッジタイプ(multi-edge type)のアンサンブルを用いた。
マルチエッジタイプでは、バリアブルノードに接続している枝と、チェックノードに接続している枝とが経由するインターリーバが、複数(multi edge)に分割され、これにより、アンサンブルの特徴付けが、より厳密に行われる。
図45は、マルチエッジタイプのアンサンブルのタナーグラフの例を示している。
図45のタナーグラフでは、第1インターリーバと第2インターリーバとの2つのインターリーバが存在する。
また、図45のタナーグラフでは、第1インターリーバに繋がる枝が1本で、第2インターリーバに繋がる枝が0本のバリアブルノードがv1個だけ、第1インターリーバに繋がる枝が1本で、第2インターリーバに繋がる枝が2本のバリアブルノードがv2個だけ、第1インターリーバに繋がる枝が0本で、第2インターリーバに繋がる枝が2本のバリアブルノードがv3個だけ、それぞれ存在する。
さらに、図45のタナーグラフでは、第1インターリーバに繋がる枝が2本で、第2インターリーバに繋がる枝が0本のチェックノードがc1個だけ、第1インターリーバに繋がる枝が2本で、第2インターリーバに繋がる枝が2本のチェックノードがc2個だけ、第1インターリーバに繋がる枝が0本で、第2インターリーバに繋がる枝が3本のチェックノードがc3個だけ、それぞれ存在する。
ここで、デンシティエボリューションと、その実装については、例えば、"On the Design of Low-Density Parity-Check Codes within 0.0045 dB of the Shannon Limit", S.Y.Chung, G.D.Forney, T.J.Richardson,R.Urbanke, IEEE Communications Leggers, VOL.5, NO.2, Feb 2001に記載されている。
新LDPC符号(の検査行列)を求めるシミュレーションでは、マルチエッジタイプのデンシティエボリューションによって、BERが落ち始める(小さくなっていく)Eb/N0(1ビットあたりの信号電力対雑音電力比)である性能閾値が、所定値以下になるアンサンブルを見つけ、そのアンサンブルに属するLDPC符号の中から、QPSK等の1以上の直交変調を用いた場合のBERを小さくするLDPC符号を、性能の良いLDPC符号として選択した。
新LDPC符号(の検査行列を表す検査行列初期値テーブル)は、以上のようなシミュレーションにより求められた。
したがって、新LDPC符号によれば、データ伝送において、良好な通信品質を確保することができる。
図46は、新LDPC符号としてのタイプA符号の検査行列Hの列重みを説明する図である。
タイプA符号の検査行列Hについては、図46に示すように、A行列及びC行列の1列目からK1列の列重みをX1と、A行列及びC行列のその後のK2列の列重みをX2と、A行列及びC行列のさらにその後のK3列の列重みをX3と、C行列のさらにその後のM1列の列重みをXM1と、それぞれ表すこととする。
なお、K1+K2+K3は、情報長Kに等しく、M1+M2は、パリティ長Mに等しい。したがって、K1+K2+K3+M1+M2は、符号長N=17280ビットに等しい。
また、タイプA符号の検査行列Hについては、B行列の1列目からM1-1列の列重みは2であり、B行列のM1列目(最後の列)の列重みは1である。さらに、D行列の列重みは1であり、Z行列の列重みは0である。
図47は、図30ないし図35の(検査行列初期値テーブルが表す)タイプA符号の検査行列Hのパラメータを示す図である。
r=2/16,3/16,4/16,5/16,6/16,7/16のタイプA符号の検査行列HのパラメータとしてのK,X1,K1,X2,K2,X3,K3,XM1,M1,M2は、図47に示す通りになっている。
パラメータX1,K1,X2,K2,X3,K3,XM1,M1(又はM2)は、LDPC符号の性能(例えば、エラーレート等)がより向上するように設定される。
図48は、新LDPC符号としてのタイプB符号の検査行列Hの列重みを説明する図である。
タイプB符号の検査行列Hについては、図48に示すように、1列目からKX1列の列重みをX1と、その後のKX2列の列重みをX2と、その後のKX3列の列重みをX3と、その後のKX4列の列重みをX4と、その後のKY1列の列重みをY1と、それぞれ表すこととする。
なお、KX1+KX2+KX3+KX4+KY1は、情報長Kに等しく、KX1+KX2+KX3+KX4+KY1+Mは、符号長N=17280ビットに等しい。
また、タイプB符号の検査行列Hについては、最後のM列のうちの、最後の1列を除くM-1列の列重みは2であり、最後の1列の列重みは1である。
図49は、図36ないし図43の(検査行列初期値テーブルが表す)タイプB符号の検査行列Hのパラメータを示す図である。
r=7/16,8/16,9/16,10/16,11/16,12/16,13/16,14/16のタイプB符号の検査行列HのパラメータとしてのK,X1,KX1,X2,KX2,X3,KX3,X4,KX4,Y1,KY1,Mは、図49に示す通りになっている。
パラメータX1,KX1,X2,KX2,X3,KX3,X4,KX4,Y1,KY1は、LDPC符号の性能がより向上するように設定される。
新LDPC符号によれば、良好なBER/FERが実現されるとともに、シャノン限界に近いキャパシティ(通信路容量)が実現される。
<コンスタレーション>
図50ないし図74は、図7の伝送システムで採用し得るコンスタレーションの例を示す図である。
図7の伝送システムでは、例えば、変調方式(MODulation)とLDPC符号(CODe)との組み合わせであるMODCODに対して、そのMODCODで使用するコンスタレーションを設定することができる。
1のMODCODに対しては、1以上のコンスタレーションを設定することができる。
コンスタレーションには、信号点の配置が一様になっているUC(Uniform Constellation)と、一様になっていないNUC(Non Uniform Constellation)とがある。
また、NUCには、例えば、1D-NUC(1-dimensional (M2-QAM) non-uniform constellation)と呼ばれるコンスタレーションや、2D-NUC(2-dimensional (QQAM) non-uniform constellation)と呼ばれるコンスタレーション等がある。
一般に、UCよりも1D-NUCの方が、BERが改善し、さらに、1D-NUCよりも2D-NUCの方が、BERが改善する。
変調方式がQPSKのコンスタレーションは、UCになる。変調方式が16QAMや、64QAM,256QAM等のコンスタレーションとしては、例えば、UCや、2D-NUCを採用することができ、変調方式が1024QAMや4096QAM等のコンスタレーションとしては、例えば、UCや、1D-NUCを採用することができる。
図7の伝送システムでは、例えば、ATSC3.0や、DVB-C.2等で規定されているコンスタレーション、その他、エラーレートを良好にする様々なコンスタレーションを使用することができる。
すなわち、変調方式がQPSKである場合には、LDPC符号の各符号化率rについて、例えば、同一のUCを使用することができる。
また、変調方式が、16QAM,64QAM、又は、256QAMである場合には、LDPC符号の各符号化率rについて、例えば、同一のUCを使用することができる。さらに、変調方式が、16QAM,64QAM、又は、256QAMである場合には、例えば、LDPC符号の符号化率rそれぞれごとに異なる2D-NUCを使用することができる。
また、変調方式が、1024QAM又は4096QAMである場合には、LDPC符号の各符号化率rについて、例えば、同一のUCを使用することができる。さらに、変調方式が、1024QAM又は4096QAMである場合には、例えば、LDPC符号の符号化率rそれぞれごとに異なる1D-NUCを使用することができる。
ここで、QPSKのUCを、QPSK-UCとも記載し、2mQAMのUCを、2mQAM-UCとも記載する。また、2mQAMの1D-NUC及び2D-NUCを、それぞれ、2mQAM-1D-NUC及び2mQAM-2D-NUCとも記載する。
以下、ATSC3.0で規定されているコンスタレーションの幾つかについて説明する。
図50は、変調方式がQPSKである場合に、ATSC3.0で規定されているLDPC符号のすべての符号化率について使用されるQPSK-UCの信号点の座標を示す図である。
図50において、"Input Data cell y"は、QPSK-UCにマッピングする2ビットのシンボルを表し、"Constellation point zs"は、信号点zsの座標を表す。なお、信号点zsのインデクスsは(後述する信号点zqのインデクスqも同様)、シンボルの離散時間(あるシンボルと次のシンボルとの間の時間間隔)を表す。
図50では、信号点zsの座標は、複素数の形で表されており、jは、虚数単位(√(-1))を表す。
図51は、変調方式が16QAMである場合に、ATSC3.0で規定されているLDPC符号の符号化率r(CR)=2/15,3/15,4/15,5/15,6/15,7/15,8/15,9/15,10/15,11/15,12,15,13/15について使用される16QAM-2D-NUCの信号点の座標を示す図である。
図51では、図50と同様に、信号点zsの座標は、複素数の形で表されており、jは、虚数単位を表す。
図51において、w#kは、コンスタレーションの第1象限の信号点の座標を表す。
2D-NUCにおいて、コンスタレーションの第2象限の信号点は、第1象限の信号点を、Q軸に対して対称に移動した位置に配置され、コンスタレーションの第3象限の信号点は、第1象限の信号点を、原点に対して対称に移動した位置に配置される。そして、コンスタレーションの第4象限の信号点は、第1象限の信号点を、I軸に対して対称に移動した位置に配置される。
ここで、変調方式が2mQAMである場合には、mビットを1個のシンボルとして、その1個のシンボルが、そのシンボルに対応する信号点にマッピングされる。
mビットのシンボルは、例えば、0ないし2m-1の整数値で表現することができるが、いま、b=2m/4とすると、0ないし2m-1の整数値で表現されるシンボルy(0),y(1),・・・,y(2m-1)は、シンボルy(0)ないしy(b-1),y(b)ないしy(2b-1),y(2b)ないしy(3b-1)、及び、y(3b)ないしy(4b-1)の4つに分類することができる。
図51において、w#kのサフィックスkは、0ないしb-1の範囲の整数値をとり、w#kは、シンボルy(0)ないしy(b-1)の範囲のシンボルy(k)に対応する信号点の座標を表す。
そして、シンボルy(b)ないしy(2b-1)の範囲のシンボルy(k+b)に対応する信号点の座標は、-conj(w#k)で表され、シンボルy(2b)ないしy(3b-1)の範囲のシンボルy(k+2b)に対応する信号点の座標は、conj(w#k)で表される。また、シンボルy(3b)ないしy(4b-1)の範囲のシンボルy(k+3b)に対応する信号点の座標は、-w#kで表される。
ここで、conj(w#k)は、w#kの複素共役を表す。
例えば、変調方式が16QAMである場合には、m=4ビットのシンボルy(0),y(1),・・・,y(15)は、b=24/4=4として、シンボルy(0)ないしy(3),y(4)ないしy(7),y(8)ないしy(11)、及び、y(12)ないしy(15)の4つに分類される。
そして、シンボルy(0)ないしy(15)のうちの、例えば、シンボルy(12)は、シンボルy(3b)ないしy(4b-1)の範囲のシンボルy(k+3b)=y(0+3×4)であり、k=0であるから、シンボルy(12)に対応する信号点の座標は、-w#k=-w0となる。
いま、LDPC符号の符号化率r(CR)が、例えば、9/15であるとすると、図51によれば、変調方式が16QAMで、符号化率rが、9/15である場合のw0は、0.2386+j0.5296であるので、シンボルy(12)に対応する信号点の座標-w0は、-(0.2386+j0.5296)となる。
図52は、変調方式が1024QAMである場合に、ATSC3.0で規定されているLDPC符号の符号化率r(CR)=2/15,3/15,4/15,5/15,6/15,7/15,8/15,9/15,10/15,11/15,12,15,13/15について使用される1024QAM-1D-NUCの信号点の座標の例を示す図である。
図52において、u#kは、1D-NUCの信号点zsの座標としての複素数のリアルパートRe(zs)及びイマジナリパートIm(zs)を表し、位置ベクトルと呼ばれるベクトルu=(u0, u1,..., u#V-1)のコンポーネントである。位置ベクトルuのコンポーネントu#kの数Vは、式V=√(2m)/2で与えられる。
図53は、1024QAMのシンボルyと、位置ベクトルu(のコンポーネントu#k)との関係を示す図である。
いま、1024QAMの10ビットのシンボルyを、その先頭のビット(最上位ビット)から、y0,s,y1,s,y2,s,y3,s,y4,s,y5,s,y6,s,y7,s,y8,s,y9,sと表すこととする。
図53のAは、シンボルyの偶数番目の5ビットy1,s,y3,s,y5,s,y7,s,y9,sと、そのシンボルyに対応する信号点zsの(座標の)リアルパートRe(zs)を表すu#kとの対応関係を表している。
図53のBは、シンボルyの奇数番目の5ビットy0,s,y2,s,y4,s,y6,s,y8,sと、そのシンボルyに対応する信号点zsのイマジナリパートIm(zs)を表すu#kとの対応関係を表している。
1024QAMの10ビットのシンボルy=(y0,s,y1,s,y2,s,y3,s,y4,s,y5,s,y6,s,y7,s,y8,s,y9,s)が、例えば、(0,0,1,0,0,1,1,1,0,0)である場合、奇数番目の5ビット(y0,s,y2,s,y4,s,y6,s,y8,s)は、(0,1,0,1,0)であり、偶数番目の5ビット(y1,s,y3,s,y5,s,y7,s,y9,s)は、(0,0,1,1,0)である。
図53のAでは、偶数番目の5ビット(0,0,1,1,0)は、u11に対応付けられており、したがって、シンボルy=(0,0,1,0,0,1,1,1,0,0)に対応する信号点zsのリアルパートRe(zs)は、u11になる。
図53のBでは、奇数番目の5ビット(0,1,0,1,0)は、u3に対応付けられており、したがって、シンボルy=(0,0,1,0,0,1,1,1,0,0)に対応する信号点zsのイマジナリパートIm(zs)は、u3になる。
一方、LDPC符号の符号化率rが、例えば、6/15であるとすると、上述の図52によれば、変調方式が1024QAMで、LDPC符号の符号化率r(CR)=6/15である場合に使用される1D-NUCについては、u3は、0.1295であり、u11は、0.7196である。
したがって、シンボルy=(0,0,1,0,0,1,1,1,0,0)に対応する信号点zsのリアルパートRe(zs)は、u11=0.7196になり、イマジナリパートIm(zs)は、u3=0.1295になる。その結果、シンボルy=(0,0,1,0,0,1,1,1,0,0)に対応する信号点zsの座標は、0.7196+j0.1295で表される。
なお、1D-NUCの信号点は、コンスタレーションにおいて、I軸に平行な直線上やQ軸に平行な直線上に、格子状に並ぶ。但し、信号点どうしの間隔は、一定にはならない。また、信号点(にマッピングされたデータ)の送信にあたって、コンスタレーション上の信号点の平均電力は正規化することができる。正規化は、コンスタレーション上の信号点(の座標)のすべてについての絶対値の自乗平均値をPaveと表すこととすると、その自乗平均値Paveの平方根√Paveの逆数1/(√Pave)を、コンスタレーション上の各信号点zsに乗算することによって行うことができる。
図7の伝送システムでは、以上のようなATSC3.0で規定されているコンスタレーションを使用することができる。
図54ないし図65は、DVB-C.2で規定されているUCの信号点の座標を示す図である。
すなわち、図54は、DVB-C.2で規定されているQPSK-UC(QPSKのUC)の信号点の座標zqのリアルパートRe(zq)を示す図である。図55は、DVB-C.2で規定されているQPSK-UCの信号点の座標zqのイマジナリパートIm(zq)を示す図である。
図56は、DVB-C.2で規定されている16QAM-UC(16QAMのUC)の信号点の座標zqのリアルパートRe(zq)を示す図である。図57は、DVB-C.2で規定されている16QAM-UCの信号点の座標zqのイマジナリパートIm(zq)を示す図である。
図58は、DVB-C.2で規定されている64QAM-UC(64QAMのUC)の信号点の座標zqのリアルパートRe(zq)を示す図である。図59は、DVB-C.2で規定されている64QAM-UCの信号点の座標zqのイマジナリパートIm(zq)を示す図である。
図60は、DVB-C.2で規定されている256QAM-UC(256QAMのUC)の信号点の座標zqのリアルパートRe(zq)を示す図である。図61は、DVB-C.2で規定されている256QAM-UCの信号点の座標zqのイマジナリパートIm(zq)を示す図である。
図62は、DVB-C.2で規定されている1024QAM-UC(1024QAMのUC)の信号点の座標zqのリアルパートRe(zq)を示す図である。図63は、DVB-C.2で規定されている1024QAM-UCの信号点の座標zqのイマジナリパートIm(zq)を示す図である。
図64は、DVB-C.2で規定されている4096QAM-UC(4096QAMのUC)の信号点の座標zqのリアルパートRe(zq)を示す図である。図65は、DVB-C.2で規定されている4096QAM-UCの信号点の座標zqのイマジナリパートIm(zq)を示す図である。
なお、図54ないし図65において、yi,qは、2mQAMのmビット(例えば、QPSKでは2ビット)のシンボルの先頭から、i+1ビット目を表す。また、UCの信号点(にマッピングされたデータ)の送信にあたって、コンスタレーション上の信号点の平均電力は正規化することができる。正規化は、コンスタレーション上の信号点(の座標)のすべてについての絶対値の自乗平均値をPaveと表すこととすると、その自乗平均値Paveの平方根√Paveの逆数1/(√Pave)を、コンスタレーション上の各信号点zqに乗算することによって行うことができる。
図7の伝送システムでは、以上のようなDVB-C.2で規定されているUCを使用することができる。
すなわち、図30ないし図43の、符号長Nが17280ビットで、符号化率rが2/16,3/16,4/16,5/16,6/16,7/16,8/16,9/16,10/16,11/16,12/16,13/16、及び、14/16それぞれの(検査行列初期値テーブルに対応する)新LDPC符号については、図54ないし図65に示したUCを使用することができる。
図66ないし図74は、図30ないし図43の、符号長Nが17280ビットで、符号化率rが2/16,3/16,4/16,5/16,6/16,7/16,8/16,9/16,10/16,11/16,12/16,13/16、及び、14/16それぞれの新LDPC符号について使用し得るNUCの信号点の座標の例を示す図である。
すなわち、図66は、新LDPC符号について使用し得る16QAM-2D-NUCの信号点の座標の例を示す図である。
図67は、新LDPC符号について使用し得る64QAM-2D-NUCの信号点の座標の例を示す図である。
図68及び図69は、新LDPC符号について使用し得る256QAM-2D-NUCの信号点の座標の例を示す図である。
なお、図69は、図68に続く図である。
図66ないし図69では、図51と同様に、信号点zsの座標は、複素数の形で表されており、jは、虚数単位を表す。
図66ないし図69において、w#kは、図51と同様に、コンスタレーションの第1象限の信号点の座標を表す。
ここで、図51で説明したように、mビットのシンボルを、0ないし2m-1の整数値で表現することとし、b=2m/4とすると、0ないし2m-1の整数値で表現されるシンボルy(0),y(1),・・・,y(2m-1)は、シンボルy(0)ないしy(b-1),y(b)ないしy(2b-1),y(2b)ないしy(3b-1)、及び、y(3b)ないしy(4b-1)の4つに分類することができる。
図66ないし図69では、図51と同様に、w#kのサフィックスkは、0ないしb-1の範囲の整数値をとり、w#kは、シンボルy(0)ないしy(b-1)の範囲のシンボルy(k)に対応する信号点の座標を表す。
さらに、図66ないし図69では、図51と同様に、シンボルy(3b)ないしy(4b-1)の範囲のシンボルy(k+3b)に対応する信号点の座標は、-w#kで表される。
但し、図51では、シンボルy(b)ないしy(2b-1)の範囲のシンボルy(k+b)に対応する信号点の座標は、-conj(w#k)で表され、シンボルy(2b)ないしy(3b-1)の範囲のシンボルy(k+2b)に対応する信号点の座標は、conj(w#k)で表されるが、図66ないし図69では、conjの符号が逆になる。
すなわち、図66ないし図69では、シンボルy(b)ないしy(2b-1)の範囲のシンボルy(k+b)に対応する信号点の座標は、conj(w#k)で表され、シンボルy(2b)ないしy(3b-1)の範囲のシンボルy(k+2b)に対応する信号点の座標は、-conj(w#k)で表される。
図70は、新LDPC符号について使用し得る1024QAM-1D-NUCの信号点の座標の例を示す図である。
すなわち、図70は、1024QAM-1D-NUCの信号点zsの座標としての複素数のリアルパートRe(zs)及びイマジナリパートIm(zs)と、位置ベクトルu(のコンポーネントu#k)との関係を示す図である。
図71は、1024QAMのシンボルyと、図70の位置ベクトルu(のコンポーネントu#k)との関係を示す図である。
すなわち、いま、1024QAMの10ビットのシンボルyを、その先頭のビット(最上位ビット)から、y0,s,y1,s,y2,s,y3,s,y4,s,y5,s,y6,s,y7,s,y8,s,y9,sと表すこととする。
図71のAは、10ビットのシンボルyの(先頭から)奇数番目の5ビットy0,s,y2,s,y4,s,y6,s,y8,sと、そのシンボルyに対応する信号点zs(の座標)のリアルパートRe(zs)を表す位置ベクトルu#kとの対応関係を表している。
図71のBは、10ビットのシンボルyの偶数番目の5ビットy1,s,y3,s,y5,s,y7,s,y9,sと、そのシンボルyに対応する信号点zsのイマジナリパートIm(zs)を表す位置ベクトルu#kとの対応関係を表している。
1024QAMの10ビットのシンボルyが、図70及び図71で規定される1024QAM-1D-NUCの信号点zsにマッピングされるときの、その信号点zsの座標の求め方は、図52及び図53で説明した場合と同様であるため、説明を省略する。
図72は、新LDPC符号について使用し得る4096QAM-1D-NUCの信号点の座標の例を示す図である。
すなわち、図72は、4096QAM-1D-NUCの信号点zsの座標としての複素数のリアルパートRe(zs)及びイマジナリパートIm(zs)と、位置ベクトルu(u#k)との関係を示す図である。
図73及び図74は、4096QAMのシンボルyと、図72の位置ベクトルu(のコンポーネントu#k)との関係を示す図である。
すなわち、いま、4096QAMの12ビットのシンボルyを、その先頭のビット(最上位ビット)から、y0,s,y1,s,y2,s,y3,s,y4,s,y5,s,y6,s,y7,s,y8,s,y9,s,y10,s,y11,sと表すこととする。
図73は、12ビットのシンボルyの奇数番目の6ビットy0,s,y2,s,y4,s,y6,s,y8,s,y10,sと、そのシンボルyに対応する信号点zsのリアルパートRe(zs)を表す位置ベクトルu#kとの対応関係を表している。
図74は、12ビットのシンボルyの偶数番目の6ビットy1,s,y3,s,y5,s,y7,s,y9,s,y11,sと、そのシンボルyに対応する信号点zsのイマジナリパートIm(zs)を表す位置ベクトルu#kとの対応関係を表している。
4096QAMの12ビットのシンボルyが、図72ないし図74で規定される4096QAM-1D-NUCの信号点zsにマッピングされるときの、その信号点zsの座標の求め方は、図52及び図53で説明した場合と同様であるため、説明を省略する。
なお、図66ないし図74のNUCの信号点(にマッピングされたデータ)の送信にあたって、コンスタレーション上の信号点の平均電力は正規化することができる。正規化は、コンスタレーション上の信号点(の座標)のすべてについての絶対値の自乗平均値をPaveと表すこととすると、その自乗平均値Paveの平方根√Paveの逆数1/(√Pave)を、コンスタレーション上の各信号点zsに乗算することによって行うことができる。また、上述の図53では、シンボルyの奇数番目のビットが信号点zsのイマジナリパートIm(zs)を表す位置ベクトルu#kに対応付けられているとともに、シンボルyの偶数番目のビットが信号点zsのリアルパートRe(zs)を表す位置ベクトルu#kに対応付けられているが、図71、並びに、図73及び図74では、逆に、シンボルyの奇数番目のビットが信号点zsのリアルパートRe(zs)を表す位置ベクトルu#kに対応付けられているとともに、シンボルyの偶数番目のビットが信号点zsのイマジナリパートIm(zs)を表す位置ベクトルu#kに対応付けられている。
<ブロックインターリーバ25>
図75は、図9のブロックインターリーバ25で行われるブロックインターリーブを説明する図である。
ブロックインターリーブは、1符号語のLDPC符号を、その先頭から、パート1(part 1)と呼ばれる部分と、パート2(part 2)と呼ばれる部分とに分けて行われる。
パート1の長さ(ビット数)を、Npart1を表すとともに、パート2の長さを、Npart2と表すこととすると、Npart1+Npart2は、符号長Nに等しい。
観念的には、ブロックインターリーブでは、1方向としてのカラム(縦)方向に、Npart1/mビットを記憶する記憶領域としてのカラム(column)が、カラム方向と直交するロウ方向に、シンボルのビット数mに等しい数mだけ並べられ、各カラムが、上から、パラレルファクタPである360ビットの小単位に区切られる。この、カラムの小単位を、カラムユニットともいう。
ブロックインターリーブでは、図75に示すように、1符号語のLDPC符号のパート1を、カラムの1番目のカラムユニットの上から下方向(カラム方向)に書き込むことが、左から右方向のカラムに向かって行われる。
そして、右端のカラムの1番目のカラムユニットへの書き込みが終了すると、図75に示すように、左端のカラムに戻り、カラムの2番目のカラムユニットの上から下方向に書き込むことが、左から右方向のカラムに向かって行われ、以下、同様にして、1符号語のLDPC符号のパート1の書き込みが行われる。
1符号語のLDPC符号のパート1の書き込みが終了すると、図75に示すように、m個すべてのカラムの1行目から、ロウ方向に、mビット単位で、LDPC符号のパート1が読み出される。
このパート1のmビット単位は、mビットのシンボルとして、ブロックインターリーバ25からマッパ117(図8)に供給される。
mビット単位でのパート1の読み出しは、m個のカラムの下の行に向かって順次行われ、パート1の読み出しが終了すると、パート2は、先頭から、mビット単位に分割され、mビットのシンボルとして、ブロックインターリーバ25からマッパ117に供給される。
したがって、パート1は、インターリーブされながら、シンボル化され、パート2は、インターリーブされることなく、順次、mビットに区切って、シンボル化される。
カラムの長さであるNpart1/mは、パラレルファクタPである360の倍数であり、そのようにNpart1/mが360の倍数になるように、1符号語のLDPC符号は、パート1とパート2とに分けられる。
図76は、変調方式が、QPSK,16QAM,64QAM,256QAM,1024QAM、及び、4096QAMである場合それぞれの、符号長Nが69120ビットのLDPC符号のパート1及びパート2の例を示す図である。
図76では、変調方式が1024QAMである場合に、パート1が68400ビットで、パート2が720ビットになっており、変調方式が、QPSK,16QAM,64QAM,256QAM、及び、4096QAMである場合、いずれの場合も、パート1が69120ビットで、パート2が0ビットになっている。
<グループワイズインターリーブ>
図77は、図9のグループワイズインターリーバ24で行われるグループワイズインターリーブを説明する図である。
グループワイズインターリーブでは、図77に示すように、1符号語のLDPC符号を、その先頭から、パラレルファクタPに等しい360ビット単位に区分した、その1区分の360ビットを、ビットグループとして、1符号語のLDPC符号が、ビットグループ単位で、所定のパターン(以下、GWパターンともいう)に従ってインターリーブされる。
ここで、1符号語のLDPC符号をビットグループに区分したときの先頭からi+1番目のビットグループを、以下、ビットグループiとも記載する。
パラレルファクタPが360である場合、例えば、符号長Nが1800ビットのLDPC符号は、ビットグループ0,1,2,3,4の5(=1800/360)個のビットグループに区分される。さらに、例えば、符号長Nが69120ビットのLDPC符号は、ビットグループ0,1,・・・,191の192(=69120/360)個のビットグループに区分される。また、例えば、符号長Nが17280ビットのLDPC符号は、ビットグループ0,1,・・・,47の48(=17280/360)個のビットグループに区分される。
以下では、GWパターンを、ビットグループを表す数字の並びで表すこととする。例えば、符号長Nが1800ビットの、5個のビットグループ0,1,2,3,4のLDPC符号について、例えば、GWパターン4,2,0,3,1は、ビットグループ0,1,2,3,4の並びを、ビットグループ4,2,0,3,1の並びにインターリーブする(並び替える)ことを表す。
例えば、いま、符号長Nが1800ビットのLDPC符号の先頭からi+1番目の符号ビットを、xiで表すこととする。
この場合、GWパターン4,2,0,3,1のグループワイズインターリーブによれば、1800ビットのLDPC符号{x0,x1,...,x1799}は、{x1440,x1441,...,x1799},{x720,x721,...,x1079},{x0,x1,...,x359},{x1080,x1081,...,x1439},{x360,x361,...,x719}の並びにインターリーブされる。
GWパターンは、LDPC符号の符号長Nごとや、符号化率rごと、変調方式ごと、コンスタレーションごと、さらには、符号長N、符号化率r、変調方式、及び、コンスタレーションの2以上の組み合わせごとに設定することができる。
<LDPC符号に対するGWパターンの例>
図78は、符号長Nが69120ビットのLDPC符号に対するGWパターンの例を示す図である。
図78のGWパターンによれば、69120ビットのLDPC符号のビットグループ0ないし191の並びが、ビットグループ
191, 12, 188, 158, 173, 48, 75, 146, 113, 15, 51, 119, 132, 161, 91, 189, 142, 93, 120, 29, 156, 101, 100, 22, 165, 65, 98, 153, 127, 74, 39, 80, 38, 130, 148, 81, 13, 24, 125, 0, 174, 140, 124, 5, 68, 3, 104, 136, 63, 162, 106, 8, 25, 182, 178, 90, 96, 79, 168, 172, 128, 64, 69, 102, 45, 66, 86, 155, 163, 6, 152, 164, 108, 9, 111, 16, 177, 53, 94, 85, 72, 32, 147, 184, 117, 30, 54, 34, 70, 149, 157, 109, 73, 41, 131, 187, 185, 18, 4, 150, 92, 143, 14, 115, 20, 50, 26, 83, 36, 58, 169, 107, 129, 121, 43, 103, 21, 139, 52, 167, 19, 2, 40, 116, 181, 61, 141, 17, 33, 11, 135, 1, 37, 123, 180, 137, 77, 166, 183, 82, 23, 56, 88, 67, 176, 76, 35, 71, 105, 87, 78, 171, 55, 62, 44, 57, 97, 122, 112, 59, 27, 99, 84, 10, 134, 42, 118, 144, 49, 28, 126, 95, 7, 110, 186, 114, 151, 145, 175, 138, 133, 31, 179, 89, 46, 160, 170, 60, 154, 159, 47, 190
の並びにインターリーブされる。
<受信装置12の構成例>
図79は、図7の受信装置12の構成例を示すブロック図である。
OFDM処理部(OFDM operation)151は、送信装置11(図7)からのOFDM信号を受信し、そのOFDM信号の信号処理を行う。OFDM処理部151が信号処理を行うことにより得られるデータは、フレーム管理部(Frame Management)152に供給される。
フレーム管理部152は、OFDM処理部151から供給されるデータで構成されるフレームの処理(フレーム解釈)を行い、その結果得られる対象データの信号と、制御データの信号とを、周波数デインターリーバ(Frequency Deinterleaver)161と153とに、それぞれ供給する。
周波数デインターリーバ153は、フレーム管理部152からのデータについて、シンボル単位での周波数デインターリーブを行い、デマッパ(Demapper)154に供給する。
デマッパ154は、周波数デインターリーバ153からのデータ(コンスタレーション上のデータ)を、送信装置11側で行われる直交変調で定められる信号点の配置(コンスタレーション)に基づいてデマッピング(信号点配置復号)して直交復調し、その結果得られるデータ(LDPC符号(の尤度))を、LDPCデコーダ(LDPC decoder)155に供給する。
LDPCデコーダ155(復号部)は、デマッパ154からのLDPC符号のLDPC復号を行い、その結果得られるLDPC対象データ(ここでは、BCH符号)を、BCHデコーダ(BCH decoder)156に供給する。
BCHデコーダ156は、LDPCデコーダ155からのLDPC対象データのBCH復号を行い、その結果得られる制御データ(シグナリング)を出力する。
一方、周波数デインターリーバ161は、フレーム管理部152からのデータについて、シンボル単位での周波数デインターリーブを行い、SISO/MISOデコーダ(SISO/MISO decoder)162に供給する。
SISO/MISOデコーダ162は、周波数デインターリーバ161からのデータの時空間復号を行い、時間デインターリーバ(Time Deinterleaver)163に供給する。
時間デインターリーバ163は、SISO/MISOデコーダ162からのデータについて、シンボル単位での時間デインターリーブを行い、デマッパ(Demapper)164に供給する。
デマッパ164は、時間デインターリーバ163からのデータ(コンスタレーション上のデータ)を、送信装置11側で行われる直交変調で定められる信号点の配置(コンスタレーション)に基づいてデマッピング(信号点配置復号)して直交復調し、その結果得られるデータを、ビットデインターリーバ(Bit Deinterleaver)165に供給する。
ビットデインターリーバ165は、デマッパ164からのデータのビットデインターリーブを行い、そのビットデインターリーブ後のデータであるLDPC符号(の尤度)を、LDPCデコーダ166に供給する。
LDPCデコーダ166は、ビットデインターリーバ165からのLDPC符号のLDPC復号を行い、その結果得られるLDPC対象データ(ここでは、BCH符号)を、BCHデコーダ167に供給する。
BCHデコーダ167は、LDPCデコーダ155からのLDPC対象データのBCH復号を行い、その結果得られるデータを、BBデスクランブラ(BB DeScrambler)168に供給する。
BBデスクランブラ168は、BCHデコーダ167からのデータに、BBデスクランブルを施し、その結果得られるデータを、ヌル削除部(Null Deletion)169に供給する。
ヌル削除部169は、BBデスクランブラ168からのデータから、図8のパダー112で挿入されたNullを削除し、デマルチプレクサ(Demultiplexer)170に供給する。
デマルチプレクサ170は、ヌル削除部169からのデータに多重化されている1以上のストリーム(対象データ)それぞれを分離し、必要な処理を施して、アウトプットストリーム(Output stream)として出力する。
なお、受信装置12は、図79に図示したブロックの一部を設けずに構成することができる。すなわち、例えば、送信装置11(図8)を、時間インターリーバ118、SISO/MISOエンコーダ119、周波数インターリーバ120、及び、周波数インターリーバ124を設けずに構成する場合には、受信装置12は、送信装置11の時間インターリーバ118、SISO/MISOエンコーダ119、周波数インターリーバ120、及び、周波数インターリーバ124にそれぞれ対応するブロックである時間デインターリーバ163、SISO/MISOデコーダ162、周波数デインターリーバ161、及び、周波数デインターリーバ153を設けずに構成することができる。
<ビットデインターリーバ165の構成例>
図80は、図79のビットデインターリーバ165の構成例を示すブロック図である。
ビットデインターリーバ165は、ブロックデインターリーバ54、及びグループワイズデインターリーバ55から構成され、デマッパ164(図79)からのデータであるシンボルのシンボルビットの(ビット)デインターリーブを行う。
すなわち、ブロックデインターリーバ54は、デマッパ164からのシンボルのシンボルビットを対象として、図9のブロックインターリーバ25が行うブロックインターリーブに対応するブロックデインターリーブ(ブロックインターリーブの逆の処理)、すなわち、ブロックインターリーブによって並び替えられたLDPC符号の符号ビット(の尤度)の位置を元の位置に戻すブロックデインターリーブを行い、その結果得られるLDPC符号を、グループワイズデインターリーバ55に供給する。
グループワイズデインターリーバ55は、ブロックデインターリーバ54からのLDPC符号を対象として、図9のグループワイズインターリーバ24が行うグループワイズインターリーブに対応するグループワイズデインターリーブ(グループワイズインターリーブの逆の処理)、すなわち、例えば、図77で説明したグループワイズインターリーブによってビットグループ単位で並びが変更されたLDPC符号の符号ビットを、ビットグループ単位で並び替えることにより、元の並びに戻すグループワイズデインターリーブを行う。
ここで、デマッパ164から、ビットデインターリーバ165に供給されるLDPC符号に、パリティインターリーブ、グループワイズインターリーブ、及びブロックインターリーブが施されている場合、ビットデインターリーバ165では、パリティインターリーブに対応するパリティデインターリーブ(パリティインターリーブの逆の処理、すなわち、パリティインターリーブによって並びが変更されたLDPC符号の符号ビットを、元の並びに戻すパリティデインターリーブ)、ブロックインターリーブに対応するブロックデインターリーブ、及び、グループワイズインターリーブに対応するグループワイズデインターリーブのすべてを行うことができる。
但し、図80のビットデインターリーバ165では、ブロックインターリーブに対応するブロックデインターリーブを行うブロックデインターリーバ54、及び、グループワイズインターリーブに対応するグループワイズデインターリーブを行うグループワイズデインターリーバ55は、設けられているが、パリティインターリーブに対応するパリティデインターリーブを行うブロックは、設けられておらず、パリティデインターリーブは、行われない。
したがって、ビットデインターリーバ165(のグループワイズデインターリーバ55)から、LDPCデコーダ166には、ブロックデインターリーブ、及び、グループワイズデインターリーブが行われ、かつ、パリティデインターリーブが行われていないLDPC符号が供給される。
LDPCデコーダ166は、ビットデインターリーバ165からのLDPC符号のLDPC復号を、図8のLDPCエンコーダ115がLDPC符号化に用いたタイプB方式の検査行列Hに対して、パリティインターリーブに相当する列置換を少なくとも行って得られる変換検査行列や、タイプA方式の検査行列(図27)に行置換を行って得られる変換検査行列(図29)を用いて行い、その結果得られるデータを、LDPC対象データの復号結果として出力する。
図81は、図80のデマッパ164、ビットデインターリーバ165、及び、LDPCデコーダ166が行う処理を説明するフローチャートである。
ステップS111において、デマッパ164は、時間デインターリーバ163からのデータ(信号点にマッピングされたコンスタレーション上のデータ)をデマッピングして直交復調し、ビットデインターリーバ165に供給して、処理は、ステップS112に進む。
ステップS112では、ビットデインターリーバ165は、デマッパ164からのデータのデインターリーブ(ビットデインターリーブ)を行って、処理は、ステップS113に進む。
すなわち、ステップS112では、ビットデインターリーバ165において、ブロックデインターリーバ54が、デマッパ164からのデータ(シンボル)を対象として、ブロックデインターリーブを行い、その結果得られるLDPC符号の符号ビットを、グループワイズデインターリーバ55に供給する。
グループワイズデインターリーバ55は、ブロックデインターリーバ54からのLDPC符号を対象として、グループワイズデインターリーブを行い、その結果得られるLDPC符号(の尤度)を、LDPCデコーダ166に供給する。
ステップS113では、LDPCデコーダ166が、グループワイズデインターリーバ55からのLDPC符号のLDPC復号を、図8のLDPCエンコーダ115がLDPC符号化に用いた検査行列Hを用いて行い、すなわち、例えば、検査行列Hから得られる変換検査行列を用いて行い、その結果得られるデータを、LDPC対象データの復号結果として、BCHデコーダ167に出力する。
なお、図80でも、図9の場合と同様に、説明の便宜のため、ブロックデインターリーブを行うブロックデインターリーバ54と、グループワイズデインターリーブを行うグループワイズデインターリーバ55とを、別個に構成するようにしたが、ブロックデインターリーバ54とグループワイズデインターリーバ55とは、一体的に構成することができる。
また、送信装置11において、グループワイズインターリーブを行わない場合には、受信装置12は、グループワイズデインターリーブを行うグループワイズデインターリーバ55を設けずに構成することができる。
<LDPC復号>
図79のLDPCデコーダ166で行われるLDPC復号について、さらに説明する。
図79のLDPCデコーダ166では、上述したように、グループワイズデインターリーバ55からの、ブロックデインターリーブ、及び、グループワイズデインターリーブが行われ、かつ、パリティデインターリーブが行われていないLDPC符号のLDPC復号が、図8のLDPCエンコーダ115がLDPC符号化に用いたタイプB方式の検査行列Hに対して、パリティインターリーブに相当する列置換を少なくとも行って得られる変換検査行列や、タイプA方式の検査行列(図27)に行置換を行って得られる変換検査行列(図29)を用いて行われる。
ここで、LDPC復号を、変換検査行列を用いて行うことで、回路規模を抑制しつつ、動作周波数を十分実現可能な範囲に抑えることが可能となるLDPC復号が先に提案されている(例えば、特許第4224777号を参照)。
そこで、まず、図82ないし図85を参照して、先に提案されている、変換検査行列を用いたLDPC復号について説明する。
図82は、符号長Nが90で、符号化率が2/3のLDPC符号の検査行列Hの例を示す図である。
なお、図82では(後述する図83及び図84においても同様)、0を、ピリオド(.)で表現している。
図82の検査行列Hでは、パリティ行列が階段構造になっている。
図83は、図82の検査行列Hに、式(11)の行置換と、式(12)の列置換を施して得られる検査行列H'を示す図である。
行置換:6s+t+1行目→5t+s+1行目
・・・(11)
列置換:6x+y+61列目→5y+x+61列目
・・・(12)
但し、式(11)及び(12)において、s,t,x,yは、それぞれ、0≦s<5,0≦t<6,0≦x<5,0≦t<6の範囲の整数である。
式(11)の行置換によれば、6で割って余りが1になる1,7,13,19,25行目を、それぞれ、1,2,3,4,5行目に、6で割って余りが2になる2,8,14,20,26行目を、それぞれ、6,7,8,9,10行目に、という具合に置換が行われる。
また、式(12)の列置換によれば、61列目以降(パリティ行列)に対して、6で割って余りが1になる61,67,73,79,85列目を、それぞれ、61,62,63,64,65列目に、6で割って余りが2になる62,68,74,80,86列目を、それぞれ、66,67,68,69,70列目に、という具合に置換が行われる。
このようにして、図82の検査行列Hに対して、行と列の置換を行って得られた行列(matrix)が、図83の検査行列H'である。
ここで、検査行列Hの行置換を行っても、LDPC符号の符号ビットの並びには影響しない。
また、式(12)の列置換は、上述の、K+qx+y+1番目の符号ビットを、K+Py+x+1番目の符号ビットの位置にインターリーブするパリティインターリーブの、情報長Kを60と、パラレルファクタPを5と、パリティ長M(ここでは、30)の約数q(=M/P)を6と、それぞれしたときのパリティインターリーブに相当する。
したがって、図83の検査行列H'は、図82の検査行列(以下、適宜、元の検査行列という)Hの、K+qx+y+1番目の列を、K+Py+x+1番目の列に置換する列置換を、少なくとも行って得られる変換検査行列である。
図83の変換検査行列H'に対して、図82の元の検査行列HのLDPC符号に、式(12)と同一の置換を行ったものを乗じると、0ベクトルが出力される。すなわち、元の検査行列HのLDPC符号(1符号語)としての行ベクトルcに、式(12)の列置換を施して得られる行ベクトルをc'と表すこととすると、検査行列の性質から、HcTは、0ベクトルとなるから、H'c'Tも、当然、0ベクトルとなる。
以上から、図83の変換検査行列H'は、元の検査行列HのLDPC符号cに、式(12)の列置換を行って得られるLDPC符号c'の検査行列になっている。
したがって、元の検査行列HのLDPC符号cに、式(12)の列置換を行い、その列置換後のLDPC符号c'を、図83の変換検査行列H'を用いて復号(LDPC復号)し、その復号結果に、式(12)の列置換の逆置換を施すことで、元の検査行列HのLDPC符号を、その検査行列Hを用いて復号する場合と同様の復号結果を得ることができる。
図84は、5×5の行列の単位に間隔を空けた、図83の変換検査行列H'を示す図である。
図84においては、変換検査行列H'は、パラレルファクタPである5×5(=P×P)の単位行列、その単位行列の1のうち1個以上が0になった行列(以下、適宜、準単位行列という)、単位行列または準単位行列をサイクリックシフト(cyclic shift)した行列(以下、適宜、シフト行列という)、単位行列、準単位行列、またはシフト行列のうちの2以上の和(以下、適宜、和行列という)、5×5の0行列の組合わせで表されている。
図84の変換検査行列H'は、5×5の単位行列、準単位行列、シフト行列、和行列、0行列で構成されているということができる。そこで、変換検査行列H'を構成する、これらの5×5の行列(単位行列、準単位行列、シフト行列、和行列、0行列)を、以下、適宜、構成行列という。
P×Pの構成行列で表される検査行列のLDPC符号の復号には、チェックノード演算、及びバリアブルノード演算を、P個同時に行うアーキテクチャ(architecture)を用いることができる。
図85は、そのような復号を行う復号装置の構成例を示すブロック図である。
すなわち、図85は、図82の元の検査行列Hに対して、少なくとも、式(12)の列置換を行って得られる図84の変換検査行列H'を用いて、LDPC符号の復号を行う復号装置の構成例を示している。
図85の復号装置は、6つのFIFO3001ないし3006からなる枝データ格納用メモリ300、FIFO3001ないし3006を選択するセレクタ301、チェックノード計算部302、2つのサイクリックシフト回路303及び308、18個のFIFO3041ないし30418からなる枝データ格納用メモリ304、FIFO3041ないし30418を選択するセレクタ305、受信データを格納する受信データ用メモリ306、バリアブルノード計算部307、復号語計算部309、受信データ並べ替え部310、復号データ並べ替え部311からなる。
まず、枝データ格納用メモリ300と304へのデータの格納方法について説明する。
枝データ格納用メモリ300は、図84の変換検査行列H'の行数30を構成行列の行数(パラレルファクタP)5で除算した数である6つのFIFO3001ないし3006から構成されている。FIFO300y(y=1,2,・・・,6)は、複数の段数の記憶領域からなり、各段の記憶領域については、構成行列の行数及び列数(パラレルファクタP)である5つの枝に対応するメッセージを同時に読み出すこと、及び、書き込むことができるようになっている。また、FIFO300yの記憶領域の段数は、図84の変換検査行列の行方向の1の数(ハミング重み)の最大数である9になっている。
FIFO3001には、図84の変換検査行列H'の第1行目から第5行目までの1の位置に対応するデータ(バリアブルノードからのメッセージvi)が、各行共に横方向に詰めた形に(0を無視した形で)格納される。すなわち、第j行第i列を、(j,i)と表すこととすると、FIFO3001の第1段の記憶領域には、変換検査行列H'の(1,1)から(5,5)の5×5の単位行列の1の位置に対応するデータが格納される。第2段の記憶領域には、変換検査行列H'の(1,21)から(5,25)のシフト行列(5×5の単位行列を右方向に3つだけサイクリックシフトしたシフト行列)の1の位置に対応するデータが格納される。第3から第8段の記憶領域も同様に、変換検査行列H'と対応付けてデータが格納される。そして、第9段の記憶領域には、変換検査行列H'の(1,86)から(5,90)のシフト行列(5×5の単位行列のうちの1行目の1を0に置き換えて1つだけ左にサイクリックシフトしたシフト行列)の1の位置に対応するデータが格納される。
FIFO3002には、図84の変換検査行列H'の第6行目から第10行目までの1の位置に対応するデータが格納される。すなわち、FIFO3002の第1段の記憶領域には、変換検査行列H'の(6,1)から(10,5)の和行列(5×5の単位行列を右に1つだけサイクリックシフトした第1のシフト行列と、右に2つだけサイクリックシフトした第2のシフト行列の和である和行列)を構成する第1のシフト行列の1の位置に対応するデータが格納される。また、第2段の記憶領域には、変換検査行列H'の(6,1)から(10,5)の和行列を構成する第2のシフト行列の1の位置に対応するデータが格納される。
すなわち、重みが2以上の構成行列については、その構成行列を、重みが1であるP×Pの単位行列、単位行列の要素の1のうち1個以上が0になった準単位行列、又は単位行列もしくは準単位行列をサイクリックシフトしたシフト行列のうちの複数の和の形で表現したときの、その重みが1の単位行列、準単位行列、又はシフト行列の1の位置に対応するデータ(単位行列、準単位行列、又はシフト行列に属する枝に対応するメッセージ)は、同一アドレス(FIFO3001ないし3006のうちの同一のFIFO)に格納される。
以下、第3から第9段の記憶領域についても、変換検査行列H'に対応付けてデータが格納される。
FIFO3003ないし3006も同様に変換検査行列H'に対応付けてデータを格納する。
枝データ格納用メモリ304は、変換検査行列H'の列数90を、構成行列の列数(パラレルファクタP)である5で割った18個のFIFO3041ないし30418から構成されている。FIFO304x(x=1,2,・・・,18)は、複数の段数の記憶領域からなり、各段の記憶領域については、構成行列の行数及び列数(パラレルファクタP)である5つの枝に対応するメッセージを同時に読み出すこと、及び、書き込むことができるようになっている。
FIFO3041には、図84の変換検査行列H'の第1列目から第5列目までの1の位置に対応するデータ(チェックノードからのメッセージuj)が、各列共に縦方向に詰めた形に(0を無視した形で)格納される。すなわち、FIFO3041の第1段の記憶領域には、変換検査行列H'の(1,1)から(5,5)の5×5の単位行列の1の位置に対応するデータが格納される。第2段の記憶領域には、変換検査行列H'の(6,1)から(10,5)の和行列(5×5の単位行列を右に1つだけサイクリックシフトした第1のシフト行列と、右に2つだけサイクリックシフトした第2のシフト行列との和である和行列)を構成する第1のシフト行列の1の位置に対応するデータが格納される。また、第3段の記憶領域には、変換検査行列H'の(6,1)から(10,5)の和行列を構成する第2のシフト行列の1の位置に対応するデータが格納される。
すなわち、重みが2以上の構成行列については、その構成行列を、重みが1であるP×Pの単位行列、単位行列の要素の1のうち1個以上が0になった準単位行列、又は単位行列もしくは準単位行列をサイクリックシフトしたシフト行列のうちの複数の和の形で表現したときの、その重みが1の単位行列、準単位行列、又はシフト行列の1の位置に対応するデータ(単位行列、準単位行列、又はシフト行列に属する枝に対応するメッセージ)は、同一アドレス(FIFO3041ないし30418のうちの同一のFIFO)に格納される。
以下、第4及び第5段の記憶領域についても、変換検査行列H'に対応付けて、データが格納される。このFIFO3041の記憶領域の段数は、変換検査行列H'の第1列から第5列における行方向の1の数(ハミング重み)の最大数である5になっている。
FIFO3042と3043も同様に変換検査行列H'に対応付けてデータを格納し、それぞれの長さ(段数)は、5である。FIFO3044ないし30412も同様に、変換検査行列H'に対応付けてデータを格納し、それぞれの長さは3である。FIFO30413ないし30418も同様に、変換検査行列H'に対応付けてデータを格納し、それぞれの長さは2である。
次に、図85の復号装置の動作について説明する。
枝データ格納用メモリ300は、6つのFIFO3001ないし3006からなり、前段のサイクリックシフト回路308から供給される5つのメッセージD311が、図84の変換検査行列H'のどの行に属するかの情報(Matrixデータ)D312に従って、データを格納するFIFOを、FIFO3001ないし3006の中から選び、選んだFIFOに5つのメッセージD311をまとめて順番に格納していく。また、枝データ格納用メモリ300は、データを読み出す際には、FIFO3001から5つのメッセージD3001を順番に読み出し、次段のセレクタ301に供給する。枝データ格納用メモリ300は、FIFO3001からのメッセージの読み出しの終了後、FIFO3002ないし3006からも、順番に、メッセージを読み出し、セレクタ301に供給する。
セレクタ301は、セレクト信号D301に従って、FIFO3001ないし3006のうちの、現在データが読み出されているFIFOからの5つのメッセージを選択し、メッセージD302として、チェックノード計算部302に供給する。
チェックノード計算部302は、5つのチェックノード計算器3021ないし3025からなり、セレクタ301を通して供給されるメッセージD302(D3021ないしD3025)(式(7)のメッセージvi)を用いて、式(7)に従ってチェックノード演算を行い、そのチェックノード演算の結果得られる5つのメッセージD303(D3031ないしD3035)(式(7)のメッセージuj)をサイクリックシフト回路303に供給する。
サイクリックシフト回路303は、チェックノード計算部302で求められた5つのメッセージD3031ないしD3035を、対応する枝が変換検査行列H'において元となる単位行列(又は準単位行列)を幾つサイクリックシフトしたものであるかの情報(Matrixデータ)D305を元にサイクリックシフトし、その結果をメッセージD304として、枝データ格納用メモリ304に供給する。
枝データ格納用メモリ304は、18個のFIFO3041ないし30418からなり、前段のサイクリックシフト回路303から供給される5つのメッセージD304が変換検査行列H'のどの行に属するかの情報D305に従って、データを格納するFIFOを、FIFO3041ないし30418の中から選び、選んだFIFOに5つのメッセージD304をまとめて順番に格納していく。また、枝データ格納用メモリ304は、データを読み出す際には、FIFO3041から5つのメッセージD3061を順番に読み出し、次段のセレクタ305に供給する。枝データ格納用メモリ304は、FIFO3041からのデータの読み出しの終了後、FIFO3042ないし30418からも、順番に、メッセージを読み出し、セレクタ305に供給する。
セレクタ305は、セレクト信号D307に従って、FIFO3041ないし30418のうちの、現在データが読み出されているFIFOからの5つのメッセージを選択し、メッセージD308として、バリアブルノード計算部307と復号語計算部309に供給する。
一方、受信データ並べ替え部310は、通信路13を通して受信した、図82の検査行列Hに対応するLDPC符号D313を、式(12)の列置換を行うことにより並べ替え、受信データD314として、受信データ用メモリ306に供給する。受信データ用メモリ306は、受信データ並べ替え部310から供給される受信データD314から、受信LLR(対数尤度比)を計算して記憶し、その受信LLRを5個ずつまとめて受信値D309として、バリアブルノード計算部307と復号語計算部309に供給する。
バリアブルノード計算部307は、5つのバリアブルノード計算器3071ないし3075からなり、セレクタ305を通して供給されるメッセージD308(D3081ないしD3085)(式(1)のメッセージuj)と、受信データ用メモリ306から供給される5つの受信値D309(式(1)の受信値u0i)を用いて、式(1)に従ってバリアブルノード演算を行い、その演算の結果得られるメッセージD310(D3101ないしD3105)(式(1)のメッセージvi)を、サイクリックシフト回路308に供給する。
サイクリックシフト回路308は、バリアブルノード計算部307で計算されたメッセージD3101ないしD3105を、対応する枝が変換検査行列H'において元となる単位行列(又は準単位行列)を幾つサイクリックシフトしたものであるかの情報を元にサイクリックシフトし、その結果をメッセージD311として、枝データ格納用メモリ300に供給する。
以上の動作を1巡することで、LDPC符号の1回の復号(バリアブルノード演算及びチェックノード演算)を行うことができる。図85の復号装置は、所定の回数だけLDPC符号を復号した後、復号語計算部309及び復号データ並べ替え部311において、最終的な復号結果を求めて出力する。
すなわち、復号語計算部309は、5つの復号語計算器3091ないし3095からなり、セレクタ305が出力する5つのメッセージD308(D3081ないしD3085)(式(5)のメッセージuj)と、受信データ用メモリ306から供給される5つの受信値D309(式(5)の受信値u0i)を用い、複数回の復号の最終段として、式(5)に基づいて、復号結果(復号語)を計算して、その結果得られる復号データD315を、復号データ並べ替え部311に供給する。
復号データ並べ替え部311は、復号語計算部309から供給される復号データD315を対象に、式(12)の列置換の逆置換を行うことにより、その順序を並べ替え、最終的な復号結果D316として出力する。
以上のように、検査行列(元の検査行列)に対して、行置換と列置換のうちの一方又は両方を施し、P×Pの単位行列、その要素の1のうち1個以上が0になった準単位行列、単位行列もしくは準単位行列をサイクリックシフトしたシフト行列、単位行列、準単位行列、もしくはシフト行列の複数の和である和行列、P×Pの0行列の組合せ、つまり、構成行列の組み合わせで表すことができる検査行列(変換検査行列)に変換することで、LDPC符号の復号を、チェックノード演算とバリアブルノード演算を、検査行列の行数や列数より小さい数のP個同時に行うアーキテクチャを採用することが可能となる。ノード演算(チェックノード演算とバリアブルノード演算)を、検査行列の行数や列数より小さい数のP個同時に行うアーキテクチャを採用する場合、ノード演算を、検査行列の行数や列数に等しい数だけ同時に行う場合に比較して、動作周波数を実現可能な範囲に抑えて、多数の繰り返し復号を行うことができる。
図79の受信装置12を構成するLDPCデコーダ166は、例えば、図85の復号装置と同様に、チェックノード演算とバリアブルノード演算をP個同時に行うことで、LDPC復号を行うようになっている。
すなわち、いま、説明を簡単にするために、図8の送信装置11を構成するLDPCエンコーダ115が出力するLDPC符号の検査行列が、例えば、図82に示した、パリティ行列が階段構造になっている検査行列Hであるとすると、送信装置11のパリティインターリーバ23では、K+qx+y+1番目の符号ビットを、K+Py+x+1番目の符号ビットの位置にインターリーブするパリティインターリーブが、情報長Kを60に、パラレルファクタPを5に、パリティ長Mの約数q(=M/P)を6に、それぞれ設定して行われる。
このパリティインターリーブは、上述したように、式(12)の列置換に相当するから、LDPCデコーダ166では、式(12)の列置換を行う必要がない。
このため、図79の受信装置12では、上述したように、グループワイズデインターリーバ55から、LDPCデコーダ166に対して、パリティデインターリーブが行われていないLDPC符号、つまり、式(12)の列置換が行われた状態のLDPC符号が供給され、LDPCデコーダ166では、式(12)の列置換を行わないことを除けば、図85の復号装置と同様の処理が行われる。
すなわち、図86は、図79のLDPCデコーダ166の構成例を示す図である。
図86において、LDPCデコーダ166は、図85の受信データ並べ替え部310が設けられていないことを除けば、図85の復号装置と同様に構成されており、式(12)の列置換が行われないことを除いて、図85の復号装置と同様の処理を行うため、その説明は省略する。
以上のように、LDPCデコーダ166は、受信データ並べ替え部310を設けずに構成することができるので、図85の復号装置よりも、規模を削減することができる。
なお、図82ないし図86では、説明を簡単にするために、LDPC符号の符号長Nを90と、情報長Kを60と、パラレルファクタ(構成行列の行数及び列数)Pを5と、パリティ長Mの約数q(=M/P)を6と、それぞれしたが、符号長N、情報長K、パラレルファクタP、及び約数q(=M/P)のそれぞれは、上述した値に限定されるものではない。
すなわち、図8の送信装置11において、LDPCエンコーダ115が出力するのは、例えば、符号長Nを64800や、16200、69120、17280等と、情報長KをN-Pq(=N-M)と、パラレルファクタPを360と、約数qをM/Pと、それぞれするLDPC符号であるが、図86のLDPCデコーダ166は、そのようなLDPC符号を対象として、チェックノード演算とバリアブルノード演算をP個同時に行うことで、LDPC復号を行う場合に適用可能である。
また、LDPCデコーダ166でのLDPC符号の復号後、その復号結果のパリティの部分が不要であり、復号結果の情報ビットだけを出力する場合には、復号データ並べ替え部311なしで、LDPCデコーダ166を構成することができる。
<ブロックデインターリーバ54の構成例>
図87は、図80のブロックデインターリーバ54で行われるブロックデインターリーブを説明する図である。
ブロックデインターリーブでは、図75で説明したブロックインターリーバ25のブロックインターリーブと逆の処理が行われることで、LDPC符号の符号ビットの並びが元の並びに戻される(復元される)。
すなわち、ブロックデインターリーブでは、例えば、ブロックインターリーブと同様に、シンボルのビット数mに等しいm個のカラムに対して、LDPC符号を書き込んで読み出すことにより、LDPC符号の符号ビットの並びが元の並びに戻される。
但し、ブロックデインターリーブでは、LDPC符号の書き込みは、ブロックインターリーブにおいてLDPC符号を読み出す順に行われる。さらに、ブロックデインターリーブでは、LDPC符号の読み出しは、ブロックインターリーブにおいてLDPC符号を書き込む順に行われる。
すなわち、LDPC符号のパート1については、図87に示すように、m個すべてのカラムの1行目から、ロウ方向に、mビットのシンボル単位になっているLDPC符号のパート1が書き込まれる。すなわち、mビットのシンボルとなっているLDPC符号の符号ビットが、ロウ方向に書き込まれる。
mビット単位でのパート1の書き込みは、m個のカラムの下の行に向かって順次行われ、パート1の書き込みが終了すると、図87に示すように、カラムの1番目のカラムユニットの上から下方向に、パート1を読み出すことが、左から右方向のカラムに向かって行われる。
右端のカラムまでの読み出しが終了すると、図87に示すように、左端のカラムに戻り、カラムの2番目のカラムユニットの上から下方向にパート1を読み出すことが、左から右方向のカラムに向かって行われ、以下、同様にして、1符号語のLDPC符号のパート1の読み出しが行われる。
1符号語のLDPC符号のパート1の読み出しが終了すると、mビットのシンボル単位になっているパート2については、そのmビットのシンボル単位が、パート1の後に順次連結され、これにより、シンボル単位のLDPC符号は、元の1符号語のLDPC符号(ブロックインターリーブ前のLDCP符号)の符号ビットの並びに戻される。
<ビットデインターリーバ165の他の構成例>
図88は、図79のビットデインターリーバ165の他の構成例を示すブロック図である。
なお、図中、図80の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
すなわち、図88のビットデインターリーバ165は、パリティデインターリーバ1011が新たに設けられている他は、図80の場合と同様に構成されている。
図88では、ビットデインターリーバ165は、ブロックデインターリーバ54、グループワイズデインターリーバ55、及び、パリティデインターリーバ1011から構成され、デマッパ164からのLDPC符号の符号ビットのビットデインターリーブを行う。
すなわち、ブロックデインターリーバ54は、デマッパ164からのLDPC符号を対象として、送信装置11のブロックインターリーバ25が行うブロックインターリーブに対応するブロックデインターリーブ(ブロックインターリーブの逆の処理)、すなわち、ブロックインターリーブによって入れ替えられた符号ビットの位置を元の位置に戻すブロックデインターリーブを行い、その結果得られるLDPC符号を、グループワイズデインターリーバ55に供給する。
グループワイズデインターリーバ55は、ブロックデインターリーバ54からのLDPC符号を対象として、送信装置11のグループワイズインターリーバ24が行う並び替え処理としてのグループワイズインターリーブに対応するグループワイズデインターリーブを行う。
グループワイズデインターリーブの結果得られるLDPC符号は、グループワイズデインターリーバ55からパリティデインターリーバ1011に供給される。
パリティデインターリーバ1011は、グループワイズデインターリーバ55でのグループワイズデインターリーブ後の符号ビットを対象として、送信装置11のパリティインターリーバ23が行うパリティインターリーブに対応するパリティデインターリーブ(パリティインターリーブの逆の処理)、すなわち、パリティインターリーブによって並びが変更されたLDPC符号の符号ビットを、元の並びに戻すパリティデインターリーブを行う。
パリティデインターリーブの結果得られるLDPC符号は、パリティデインターリーバ1011からLDPCデコーダ166に供給される。
したがって、図88のビットデインターリーバ165では、LDPCデコーダ166には、ブロックデインターリーブ、グループワイズデインターリーブ、及び、パリティデインターリーブが行われたLDPC符号、すなわち、検査行列Hに従ったLDPC符号化によって得られるLDPC符号が供給される。
LDPCデコーダ166は、ビットデインターリーバ165からのLDPC符号のLDPC復号を、送信装置11のLDPCエンコーダ115がLDPC符号化に用いた検査行列Hを用いて行う。
すなわち、LDPCデコーダ166は、タイプB方式については、ビットデインターリーバ165からのLDPC符号のLDPC復号を、送信装置11のLDPCエンコーダ115がLDPC符号化に用いた(タイプB方式の)検査行列Hそのものを用いて、又は、その検査行列Hに対して、パリティインターリーブに相当する列置換を少なくとも行って得られる変換検査行列を用いて行う。また、LDPCデコーダ166は、タイプA方式については、ビットデインターリーバ165からのLDPC符号のLDPC復号を、送信装置11のLDPCエンコーダ115がLDPC符号化に用いた(タイプA方式の)検査行列(図27)に列置換を施して得られる検査行列(図28)、又は、LDPC符号化に用いた検査行列(図27)に行置換を施して得られる変換検査行列(図29)を用いて行う。
ここで、図88では、ビットデインターリーバ165(のパリティデインターリーバ1011)からLDPCデコーダ166に対して、検査行列Hに従ったLDPC符号化によって得られるLDPC符号が供給されるため、そのLDPC符号のLDPC復号を、送信装置11のLDPCエンコーダ115がLDPC符号化に用いたタイプB方式の検査行列Hそのもの、又は、LDPC符号化に用いたタイプA方式の検査行列(図27)に列置換を施して得られる検査行列(図28)を用いて行う場合には、LDPCデコーダ166は、例えば、メッセージ(チェックノードメッセージ、バリバブルノードメッセージ)の演算を1個のノードずつ順次行うフルシリアルデコーディング(full serial decoding)方式によるLDPC復号を行う復号装置や、メッセージの演算をすべてのノードについて同時(並列)に行うフルパラレルデコーディング(full parallel decoding)方式によるLDPC復号を行う復号装置で構成することができる。
また、LDPCデコーダ166において、LDPC符号のLDPC復号を、送信装置11のLDPCエンコーダ115がLDPC符号化に用いたタイプB方式の検査行列Hに対して、パリティインターリーブに相当する列置換を少なくとも行って得られる変換検査行列、又は、LDPC符号化に用いたタイプA方式の検査行列(図27)に行置換を施して得られる変換検査行列(図29)を用いて行う場合には、LDPCデコーダ166は、チェックノード演算、及びバリアブルノード演算を、P(又はPの1以外の約数)個同時に行うアーキテクチャの復号装置であって、変換検査行列を得るための列置換(パリティインターリーブ)と同様の列置換を、LDPC符号に施すことにより、そのLDPC符号の符号ビットを並び替える受信データ並べ替え部310を有する復号装置(図85)で構成することができる。
なお、図88では、説明の便宜のため、ブロックデインターリーブを行うブロックデインターリーバ54、グループワイズデインターリーブを行うグループワイズデインターリーバ55、及び、パリティデインターリーブを行うパリティデインターリーバ1011それぞれを、別個に構成するようにしたが、ブロックデインターリーバ54、グループワイズデインターリーバ55、及び、パリティデインターリーバ1011の2以上は、送信装置11のパリティインターリーバ23、グループワイズインターリーバ24、及び、ブロックインターリーバ25と同様に、一体的に構成することができる。
<受信システムの構成例>
図89は、受信装置12を適用可能な受信システムの第1の構成例を示すブロック図である。
図89において、受信システムは、取得部1101、伝送路復号処理部1102、及び、情報源復号処理部1103から構成される。
取得部1101は、番組の画像データや音声データ等のLDPC対象データを、少なくともLDPC符号化することで得られるLDPC符号を含む信号を、例えば、地上ディジタル放送、衛星ディジタル放送、CATV網、インターネットその他のネットワーク等の、図示せぬ伝送路(通信路)を介して取得し、伝送路復号処理部1102に供給する。
ここで、取得部1101が取得する信号が、例えば、放送局から、地上波や、衛星波、CATV(Cable Television)網等を介して放送されてくる場合には、取得部1101は、チューナやSTB(Set Top Box)等で構成される。また、取得部1101が取得する信号が、例えば、webサーバから、IPTV(Internet Protocol Television)のようにマルチキャストで送信されてくる場合には、取得部1101は、例えば、NIC(Network Interface Card)等のネットワークI/F(Inter face)で構成される。
伝送路復号処理部1102は、受信装置12に相当する。伝送路復号処理部1102は、取得部1101が伝送路を介して取得した信号に対して、伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施し、その結果得られる信号を、情報源復号処理部1103に供給する。
すなわち、取得部1101が伝送路を介して取得した信号は、伝送路で生じる誤りを訂正するための誤り訂正符号化を、少なくとも行うことで得られた信号であり、伝送路復号処理部1102は、そのような信号に対して、例えば、誤り訂正処理等の伝送路復号処理を施す。
ここで、誤り訂正符号化としては、例えば、LDPC符号化や、BCH符号化等がある。ここでは、誤り訂正符号化として、少なくとも、LDPC符号化が行われている。
また、伝送路復号処理には、変調信号の復調等が含まれることがある。
情報源復号処理部1103は、伝送路復号処理が施された信号に対して、圧縮された情報を元の情報に伸張する処理を少なくとも含む情報源復号処理を施す。
すなわち、取得部1101が伝送路を介して取得した信号には、情報としての画像や音声等のデータ量を少なくするために、情報を圧縮する圧縮符号化が施されていることがあり、その場合、情報源復号処理部1103は、伝送路復号処理が施された信号に対して、圧縮された情報を元の情報に伸張する処理(伸張処理)等の情報源復号処理を施す。
なお、取得部1101が伝送路を介して取得した信号に、圧縮符号化が施されていない場合には、情報源復号処理部1103では、圧縮された情報を元の情報に伸張する処理は行われない。
ここで、伸張処理としては、例えば、MPEGデコード等がある。また、伝送路復号処理には、伸張処理の他、デスクランブル等が含まれることがある。
以上のように構成される受信システムでは、取得部1101において、例えば、画像や音声等のデータに対して、MPEG符号化等の圧縮符号化が施され、さらに、LDPC符号化等の誤り訂正符号化が施された信号が、伝送路を介して取得され、伝送路復号処理部1102に供給される。
伝送路復号処理部1102では、取得部1101からの信号に対して、例えば、受信装置12が行うのと同様の処理等が、伝送路復号処理として施され、その結果得られる信号が、情報源復号処理部1103に供給される。
情報源復号処理部1103では、伝送路復号処理部1102からの信号に対して、MPEGデコード等の情報源復号処理が施され、その結果得られる画像、又は音声が出力される。
以上のような図89の受信システムは、例えば、ディジタル放送としてのテレビジョン放送を受信するテレビチューナ等に適用することができる。
なお、取得部1101、伝送路復号処理部1102、及び、情報源復号処理部1103は、それぞれ、1つの独立した装置(ハードウェア(IC(Integrated Circuit)等))、又はソフトウエアモジュール)として構成することが可能である。
また、取得部1101、伝送路復号処理部1102、及び、情報源復号処理部1103については、取得部1101と伝送路復号処理部1102とのセットや、伝送路復号処理部1102と情報源復号処理部1103とのセット、取得部1101、伝送路復号処理部1102、及び、情報源復号処理部1103のセットを、1つの独立した装置として構成することが可能である。
図90は、受信装置12を適用可能な受信システムの第2の構成例を示すブロック図である。
なお、図中、図89の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
図90の受信システムは、取得部1101、伝送路復号処理部1102、及び、情報源復号処理部1103を有する点で、図89の場合と共通し、出力部1111が新たに設けられている点で、図89の場合と相違する。
出力部1111は、例えば、画像を表示する表示装置や、音声を出力するスピーカであり、情報源復号処理部1103から出力される信号としての画像や音声等を出力する。すなわち、出力部1111は、画像を表示し、あるいは、音声を出力する。
以上のような図90の受信システムは、例えば、ディジタル放送としてのテレビジョン放送を受信するTV(テレビジョン受像機)や、ラジオ放送を受信するラジオ受信機等に適用することができる。
なお、取得部1101において取得された信号に、圧縮符号化が施されていない場合には、伝送路復号処理部1102が出力する信号が、出力部1111に供給される。
図91は、受信装置12を適用可能な受信システムの第3の構成例を示すブロック図である。
なお、図中、図89の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
図91の受信システムは、取得部1101、及び、伝送路復号処理部1102を有する点で、図89の場合と共通する。
但し、図91の受信システムは、情報源復号処理部1103が設けられておらず、記録部1121が新たに設けられている点で、図89の場合と相違する。
記録部1121は、伝送路復号処理部1102が出力する信号(例えば、MPEGのTSのTSパケット)を、光ディスクや、ハードディスク(磁気ディスク)、フラッシュメモリ等の記録(記憶)媒体に記録する(記憶させる)。
以上のような図91の受信システムは、テレビジョン放送を録画するレコーダ等に適用することができる。
なお、図91において、受信システムは、情報源復号処理部1103を設けて構成し、情報源復号処理部1103で、情報源復号処理が施された後の信号、すなわち、デコードによって得られる画像や音声を、記録部1121で記録することができる。
<コンピュータの一実施の形態>
次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
そこで、図92は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク705やROM703に予め記録しておくことができる。
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体711に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体711は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体711からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部708で受信し、内蔵するハードディスク705にインストールすることができる。
コンピュータは、CPU(Central Processing Unit)702を内蔵している。CPU702には、バス701を介して、入出力インタフェース710が接続されており、CPU702は、入出力インタフェース710を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部707が操作等されることにより指令が入力されると、それに従って、ROM(Read Only Memory)703に格納されているプログラムを実行する。あるいは、また、CPU702は、ハードディスク705に格納されているプログラム、衛星若しくはネットワークから転送され、通信部708で受信されてハードディスク705にインストールされたプログラム、又はドライブ709に装着されたリムーバブル記録媒体711から読み出されてハードディスク705にインストールされたプログラムを、RAM(Random Access Memory)704にロードして実行する。これにより、CPU702は、上述したフローチャートに従った処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU702は、その処理結果を、必要に応じて、例えば、入出力インタフェース710を介して、LCD(Liquid Crystal Display)やスピーカ等で構成される出力部706から出力、あるいは、通信部708から送信、さらには、ハードディスク705に記録等させる。
ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
また、プログラムは、1つのコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
なお、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、上述した新LDPC符号(の検査行列初期値テーブル)やGWパターンは、衛星回線や、地上波、ケーブル(有線回線)、その他の通信路13(図7)について用いることができる。さらに、新LDPC符号やGWパターンは、ディジタル放送以外のデータ伝送にも用いることができる。
なお、本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。