(58)【調査した分野】(Int.Cl.,DB名)
リピートアキュミュレート疑似巡回低密度パリティチェック符号化方式で生成された符号語であって、それぞれがQ個のビットからなるN個の巡回ブロックで構成される符号語のビットの並び替え処理を行い、M個のビットずつ分割して生成されるN×Q/M個のコンステレーション語を変調して送信された信号を処理する信号処理方法であって、
前記符号語は、パリティ部分にパリティインターリーブが施されており、
前記ビットの並び替え処理は、
ビットの並び替えを規定したビットパーミュテーション規則に従う前記符号語のビットの並び替えを行うビットパーミュテーション処理
を含み、
前記Nは前記Mの倍数でなく、
前記ビットパーミュテーション規則は、NをMで割った余りをXとすると、N’=N−X個の巡回ブロックに対して適用される第1の規則と、X個の巡回ブロックに対して適用される前記第1の規則とは異なる第2の規則とを含み、
前記第1の規則は、前記N’=N−X個の巡回ブロックのそれぞれにおいて前記巡回ブロックのQ個のビットがいずれのビットもQ個のコンステレーション語の同じビットインデックスのビットに割り当てられ、前記Q個のコンステレーション語のそれぞれは当該Q個のコンステレーション語に共通するM個の前記巡回ブロックのそれぞれの1個のビットから構成されるように、前記符号語のビットを並び替える規則であり、
前記信号処理方法は、
前記N×Q/M個のコンステレーション語を変調して送信された信号を復調して復調信号を生成する復調ステップと、
前記ビットパーミュテーション規則に基づいて前記復調信号をデコードして、前記リピートアキュミュレート疑似巡回低密度パリティチェック符号化方式による符号化前のデータを生成するデコードステップと、
を有することを特徴とする信号処理方法。
リピートアキュミュレート疑似巡回低密度パリティチェック符号化方式で生成された符号語であって、それぞれがQ個のビットからなるN個の巡回ブロックで構成される符号語のビットの並び替え処理を行い、M個のビットずつ分割して生成されるN×Q/M個のコンステレーション語を変調して送信された信号を処理する信号処理装置であって、
前記符号語は、パリティ部分にパリティインターリーブが施されており、
前記ビットの並び替え処理は、
ビットの並び替えを規定したビットパーミュテーション規則に従う前記符号語のビットの並び替えを行うビットパーミュテーション処理
を含み、
前記Nは前記Mの倍数でなく、
前記ビットパーミュテーション規則は、NをMで割った余りをXとすると、N’=N−X個の巡回ブロックに対して適用される第1の規則と、X個の巡回ブロックに対して適用される前記第1の規則とは異なる第2の規則とを含み、
前記第1の規則は、前記N’=N−X個の巡回ブロックのそれぞれにおいて前記巡回ブロックのQ個のビットがいずれのビットもQ個のコンステレーション語の同じビットインデックスのビットに割り当てられ、前記Q個のコンステレーション語のそれぞれは当該Q個のコンステレーション語に共通するM個の前記巡回ブロックのそれぞれの1個のビットから構成されるように、前記符号語のビットを並び替える規則であり、
前記信号処理装置は、
前記N×Q/M個のコンステレーション語を変調して送信された信号を復調して復調信号を生成する復調部と、
前記ビットパーミュテーション規則に基づいて前記復調信号をデコードして、前記リピートアキュミュレート疑似巡回低密度パリティチェック符号化方式による符号化前のデータを生成するデコード部と、
を有することを特徴とする信号処理装置。
【発明を実施するための形態】
【0013】
≪発明をするに至った経緯≫
図1は、一般的なビットインターリーブ符号化変調(bit-interleaved coding and modulation:BICM)エンコーダを含むトランスミッタの構成を示すブロック図である。
図1に示すトランスミッタ100は、入力プロセシングユニット110、BICMエンコーダ(低密度パリティチェック(low-density parity check:LDPC)エンコーダ120、ビットインターリーバ130、コンステレーションマッパ140を含む)、およびモジュレータ150を備える。
【0014】
入力プロセシングユニット110は、入力ビットストリームを所定長の複数ブロックに変換する。LDPCエンコーダ120は、LDPC符号を用いてブロックを符号語に符号化し、符号語をビットインターリーバ130に送信する。ビットインターリーバ130は、LDPC符号語に対してインターリーブ処理を施し、インターリーブ処理を施した後、セル語(コンステレーション語)の列に分割する。コンステレーションマッパ140は各セル語(コンステレーション語)をコンステレーション(例えば、QAM)の列にマッピングする。出力端の一般的なモジュレータ150は、BICMエンコーダの出力からRF(Radio Frequency)電力増幅器までのすべての処理ブロックを含む。
【0015】
LDPC符号は、パリティチェック行列(Parity-check Matrix:PCM)により完全に定義される線形誤り訂正符号である。PCMは2値の疎行列であり、符号語ビット(変数ノードとも称される)とパリティチェック(検査ノードとも称される)の連結(connection)を示す。PCMの列および行は、それぞれ、変数ノードおよび検査ノードに対応する。変数ノードと検査ノードの結合は、PCMにおいて、「1」という要素で示されている。
【0016】
LDPC符号には、疑似巡回低密度パリティチェック(quasi-cyclic low-density parity check:QC LDPC)符号と呼ばれる種類が存在する。QC LDPC符号は、特にハードウェア実装に適した構成を有する。事実、今日の規格のほとんどにおいてQC LDPC符号が用いられている。QC LDPC符号のPCMは、複数の巡回行列を有する特別な構成となっている。巡回行列とは、各行がその直前の行の要素を1つ巡回シフトした形になっている正方行列であり、重ね合わされた斜めの列(folded diagonal)が1つ、2つ、または、それ以上存在し得る。各巡回行列のサイズはQ×Qである。ここでQはQC LDPC符号の巡回係数(cyclic factor)と称される。上記のような疑似巡回の構造により、Q個の検査ノードを並列処理することができ、QC LDPC符号は効率的なハードウェア実装を行うために明らかに有利な符号である。
【0017】
図2は、一例として、巡回係数Q=8であるQC LDPC符号のPCMを示す図である。なお、
図2および後述する
図3から
図5において、最も小さな四角の1つがPCMの1つの要素を表しており、そのうち黒塗りの四角の要素は「1」、それ以外の要素は「0」である。このPCMは、重ね合わされた斜めの列が1つまたは2つある巡回行列を有する。このQC LDPC符号は8×6=48ビットのブロックを8×12=96ビットの符号語に符号化する。従って、このQC LDPC符号の符号化率は48/96=1/2である。符号語ビットはQビットを有する複数のブロックに分割される。巡回係数Qビットのブロックを本明細書では巡回ブロック(または、巡回グループ)と称する。
【0018】
QC LDPC符号には、リピートアキュミュレート疑似巡回低密度パリティチェック(repeat-accumulate quasi-cyclic low-density parity check:RA QC LDPC)符号という特別な種類が存在する。RA QC LDPC符号は、符号化が容易であることで知られており、数多くの規格(例えば、DVB−S2規格、DVB−T2規格、DVB−C2規格といった第二世代DVB規格)において採用されている。PCMの右側はパリティビットに対応し、その部分における「1」の要素の配置は階段構造となっている。
図3に符号化率が2/3であるRA QC LDPC符号のPCMを例示する。
【0019】
なお、DVB−TはDigital Video Broadcasting - Terrestrialの略であり、DVB−S2はDigital Video Broadcasting - Second Generation Satelliteの略であり、DVB−T2はDigital Video Broadcasting - Second Generation Terrestrialの略であり、DVB−C2はDigital Video Broadcasting - Second Generation Cableの略語である。
【0020】
図3に示すPCMに対してこの行の並び順を換える簡単な行パーミュテーションを施すことによって、
図4に示すように、パリティ部分を除いたRA QC LDPC符号の擬似巡回構造が明らかになる。行パーミュテーションは単にグラフ上の表現を変更することを意味し、符号の定義には一切の影響を与えない。
【0021】
行パーミュテーションが施された
図4に示すPCMのパリティビットのみにビットの並び順を換える適切なパーミュテーションを施すことにより、PCMのパリティ部分も疑似巡回構造を有するようになる。この手法は当技術分野で周知であり、DVB−T2規格等ではパリティインターリーブまたはパリティパーミュテーションという名称で用いられている。
図4に示すPCMに対してパリティパーミュテーションを施した結果得られるPCMを
図5に示す。
【0022】
通常、LDPC符号語はビット毎に重要度が異なり、また、コンステレーションはビット毎にロバストレベルが異なる。LDPC符号語のビットを直接、即ちインターリーブせずにコンステレーションにマッピングすると、最適な性能には至らない。このため、LDPC符号語のビットをコンステレーションにマッピングする前にLDPC符号語のビットがインターリーブされる必要がある。
【0023】
この目的のために、
図1に示すように、LDPCエンコーダ120とコンステレーションマッパ140の間にビットインターリーバ130が設けられている。ビットインターリーバ130を入念に設計することによって、LDPC符号語のビットとコンステレーションにより符号化されるビットとの関連性が向上し、受信性能の改善に繋がる。その性能は、通常、SN比(Signal to Noise Ratio:SNR)の関数としての符号誤り率(Bit Error Rate:BER)を用いて測定される。
【0024】
LDPC符号語のビット毎に重要度が異なる主な理由は、全てのビットに対して同じ回数のパリティチェックが施されるとは限らないことである。符号語ビット(変数ノード)に施されるパリティチェックの回数(検査ノードの数)が多いほど、反復LDPC復号処理において符号語ビットの重要度は高くなる。もう一つの理由は、LDPC符号のタナーグラフ表現における巡回に対する連結性(connectivity)が変数ノード毎に異なることである。このために、符号語ビットに同じ回数のパリティチェックが施されたとしても、符号語ビットの重要度が異なる可能性がある。これらの見解は当技術分野で周知である。原則として、変数ノードと連結する検査ノードの数が大きくなると、その変数ノードの重要度は増す。
【0025】
特にQC LDPC符号の場合、Qビットの巡回ブロックに含まれる全てのビットは、同じ回数のパリティチェックが施され、タナーグラフにおける巡回に対する連結性が同じであるため、同じ重要度を有する。
【0026】
同様に、コンステレーションにおいて符号化されたビットのロバストレベルが異なることも周知の事実である。例えば、複素直交振幅変調(quadrature amplitude modulation:QAM)コンステレーションは2つのそれぞれ独立したパルス振幅変調(pulse amplitude modulation:PAM)シンボルから成り、そのうち1つが実数部に対応し、もう1つが虚数部に対応する。2つのPAMシンボルはそれぞれ同じ数Mのビットを符号化する。グレイ符号を用いた8PAMシンボルを示す
図6に示されるように、1つのPAMシンボルにおいて符号化されたビットのロバストレベルは互いに異なる。このようにロバストレベルが互いに異なるのは、各ビット(0または1)によって定義される2つのサブセット間の距離が、ビット毎に異なるためである。この距離が大きいほど、そのビットのロバストレベルまたは信頼度は高い。
図6では、ビットb3のロバストレベルが最も高く、ビットb1のロバストレベルが最も低い。
【0027】
従って、16QAMコンステレーションは4個のビットを符号化し、2つのロバストレベルを有する。64QAMコンステレーションは6個のビットを符号化し、3つのロバストレベルを有する。256QAMコンステレーションは8個のビットを符号化し、4つのロバストレベルを有する。
【0028】
本明細書では、説明のために、以下のパラメータを用いる。
【0029】
巡回係数:Q=8
1つのLDPC符号語の巡回ブロック数:N=12
1つのコンステレーションのビット数:M=4、即ち16QAM
上記パラメータでは、1つのLDPC符号語がマッピングされるコンステレーション数はQ×N/M=24である。通常、パラメータQおよびNの選択は、システムがサポートする全てのコンステレーションについて、Q×NがMの倍数となるように行われなければならない。
【0030】
図7は上記パラメータに対応する一般的なインターリーバの構成を示すブロック図である。
図7において、QB1、・・・、QB12は12個の巡回ブロックであり、C1、・・・、C24は24個のコンステレーション語である。
図7の例では、ビットインターリーバ710は、LDPC符号語の96ビットをインターリーブする。
【0031】
従来のビットインターリーバとして、DVB−T2規格(ETSI EN 302 755)のものが知られている。DVB−T2規格はテレビジョン規格であるDVB−T規格を改良したものであり、デジタル地上テレビジョン放送用の第2世代ベースライン送信システムについて記載されている。DVB−T2規格には、デジタルテレビジョンサービスや一般的なデータを送信するためのチャネル符号化変調システムについて詳述されている。
【0032】
図8(a)は、DVB−T2規格で用いられるモジュレータ(DVB−T2モジュレータ)の構成を示すブロック図である。
図8(a)に示すDVB−T2モジュレータ800は、入力プロセッシングユニット810、BICMエンコーダ820、フレームビルダー830、およびOFDMジェネレータ840を備える。
【0033】
入力プロセシングユニット810は、入力ビットストリームを所定長の複数ブロックに変換する。BICMエンコーダ820は、入力に対してBICM処理を施す。フレームビルダー830は、BICMエンコーダ820からの入力等を用いてDVB−T2方式の伝送フレーム構成を生成する。OFDMジェネレータ840はDVB−T2方式の伝送フレーム構成に対して、パイロット付加、高速逆フーリエ変換、ガードインターバル挿入などを行い、DVB−T2方式の送信信号を出力する。
【0034】
DVB−T2規格で用いられるBICMは、ETSI規格 EN 302 755の第6章で説明されている。当規格は本明細書において援用されおり、以下にその説明を記す。
【0035】
図8(b)は、
図8(a)に示すDVB−T2モジュレータのBICMエンコーダ820の構成を示すブロック図である。ただし、
図8(b)では、BCH外符号化、コンステレーション回転、セルインターリーバ、時間インターリーバなどを省略している。
【0036】
BICMエンコーダ820は、LDPCエンコーダ821、ビットインターリーバ(パリティインターリーバ822、カラム‐ロウインターリーバ823を含む)、ビット−セルデマルチプレクサ824、およびQAMマッパ825を備える。
【0037】
LDPCエンコーダ821は、LDPC符号を用いてブロックを符号語に符号化する。ビットインターリーバ(パリティインターリーバ822、カラム‐ロウインターリーバ823)は、符号語のビットに対してその並び順を換えるインターリーブ処理を施す。ビット−セルデマルチプレクサ824は、インターリーブ処理が施された符号語のビットをセル語(コンステレーション語)に多重分離する。QAMマッパ825は、セル語(コンステレーション語)を複素QAMシンボルにマッピングする。なお、複素QAMシンボルはセルとも称される。事実、ビット−セルデマルチプレクサ824は、ビットインターリーバの一部であるとみなされてもよい。この場合、DVB−T2規格に基づくBICMエンコーダは、
図1に示される標準構成を備えるとみなすことができる。
【0038】
DVB−T2規格において用いられるLDPC符号は、巡回係数Q=360を有するRA QC LDPC符号である。DVB−T2規格では、符号語長として16200ビットと64800ビットの2つが定義されている。符号語長が16200ビットであるLDPC符号および符号語長が64800ビットであるLDPC符号を、本明細書では、16K符号(または、16K LDPC符号)および64K符号(または、64K LDPC符号)と称する。1つの符号語に含まれる巡回ブロック数は、16K符号の場合は45個、64K符号の場合は180個である。これらの2つのブロック長(符号語長)に対応する使用可能な符号は、DVB−T2規格であるETSI EN 302 755の表A.1〜表A.6に列挙されている。
【0039】
ビットインターリーバは、QPSKより大きいコンステレーションに対してのみ利用され、パリティインターリーバ822、カラム‐ロウインターリーバ823、およびビット‐セルデマルチプレクサ824を備える。なお、DVB−T2規格の定義では、ビット‐セルデマルチプレクサ824はビットインターリーバに含まれない。しかしながら、本発明は、コンステレーションマッピング前にLDPC符号に施すインターリーブに関するものであるので、ビット‐セルデマルチプレクサ824もビットインターリーブの一部として取り扱うものとする。
【0040】
パリティインターリーバ822は、上述したように(
図4および
図5参照)、パリティビットの疑似巡回構造を明らかにするため、符号語のパリティビットの並び順を換えるパリティパーミュテーションを行う。
【0041】
カラム‐ロウインターリーバ823は、概念的には、LDPC符号語のビットを、インターリーバ行列の列に沿って書き込み、行に沿って読み出すことによって機能する。LDPC符号語に含まれる最初のビットが最初に書き込まれ、最初に読み出される。カラム‐ロウインターリーバ823は、LDPC符号語のビットを書き込んだ後、ビットの読み出しを開始する前に、その列に対してビットを所定数の位置だけ巡回的にずらす。これはDVB−T2規格においてカラムツイスト(column twisting)と呼ばれる。上記2つのLDPC符号語長と様々なコンステレーションサイズとに対応するインターリーバ行列の列数Ncと行数Nrを以下の表1に示す。
【0043】
256QAMコンステレーションで16K符号の場合を除き、列数Ncは、1つのコンステレーションのビット数の2倍である。この例外の理由は、LDPC符号語長である16200は、16、即ち256QAMコンステレーションにおけるビット数の2倍、の倍数でないためである。
【0044】
カラム‐ロウインターリーバ823の16K符号の符号語のビットの書き込み処理および読み出し処理を、列数が12の場合について
図9(a)、(b)に、列数が8の場合について
図10(a)、(b)に示す。各図において、小さな四角はそれぞれLDPC符号語の1ビットに対応し、黒塗りの四角はLDPC符号語の先頭ビットを示す。矢印は、ビットがインターリーバ行列に書き込まれ、インターリーバ行列から読み出される順序を示す。例えば、インターリーバ行列の列数が12の場合、16K符号の符号語のビットは、
図9(a)に示すように、(行1、列1)、(行2、列1)、・・・、(行1350、列1)、(行1、列2)、・・・、(行1350、列12)の順序で書き込まれ、
図9(b)に示すように、(行1、列1)、(行1、列2)、・・・、(行1、列12)、(行2、列1)、・・・、(行1350、列12)の順序で読み出される。なお、カラムツイスト処理は
図9(a)、(b)および
図10(a)、(b)には示されていない。
【0045】
QAMマッピングに先立ち、ビット‐セルデマルチプレクサ824は、各LDPC符号語を多重分離することで複数の並列ビットストリームを得る。ストリームの数は、256QAMコンステレーションで16K LDPC符号の場合を除き、1つのQAMコンステレーションにおいて符号化されるビット数Mの2倍、即ち2×Mである。また、256QAMコンステレーションで16K LDPC符号の場合、ストリームの数は、1つのQAMコンステレーションにおいて符号化されるビット数Mである。1つのコンステレーションにおいて符号化されるMビットを、セル語(または、コンステレーション語)と称する。以下のように、16K LDPC符号では、1つの符号語から得られるセル語の数は16200/Mである。
【0046】
QPSKの場合、8100セル
16QAMの場合、4050セル
64QAMの場合、2700セル
256QAMの場合、2025セル
上記の表1によると、QPSKより大きなコンステレーションについては、並列ストリームの数はカラム‐ロウインターリーバの列数に等しい。16K LDPC符号について、16QAMコンステレーション、64QAMコンステレーション、256QAMコンステレーションに対応するビット‐セルデマルチプレクサを、それぞれ、
図11、
図12、
図13に示す。なお、ビットの表記はDVB−T2規格で用いられているものである。
【0047】
ビット‐セルデマルチプレクサは、
図11(
図12、
図13)に示すように、シンプルデマルチプレクサ1110(1210、1310)とデマルチパーミュテーションユニット1120(1220、1320)を備える。
【0048】
ビット‐セルデマルチプレクサは、シンプルデマルチプレクサ1110(1210、1310)によって、インターリーブ処理が施されたLDPC符号語を単に多重分離することに加え、デマルチパーミュテーションユニット1120(1220、1320)によって、多重分離された並列ビットストリームに対してその並び順を換えるパーミュテーション処理を行う。
【0049】
ただし、カラム‐ロウインターリーバが用いられている場合(16QAMコンステレーション以上)、並列ビットストリームの数はカラム‐ロウインターリーバの列数と同一であるため、ビットストリームのパーミュテーションはカラム‐ロウインターリーバの列に対してその並び順を換えるパーミュテーションと同等である点を認識することが重要である。これが、ビット‐セルデマルチプレクサによるパーミュテーションをビットインターリーバの一部とみなすことができる、理由である。
【0050】
本質的に、DVB−T2規格において用いられるビットインターリーバには2つの問題が付随する。
【0051】
1つ目の問題は、LDPC符号語における巡回ブロックの数がビットインターリーバ行列の列数の倍数でない場合、並列性が損なわれるという問題である。並列性が低下するとレイテンシが増大する。これは特にレシーバにおいて反復BICM復号が用いられている場合に問題となる。この状況は、DVB−T2規格の場合、LDPC符号語長とコンステレーションのサイズの組み合わせのいくつかで起こる。
【0052】
図14および
図15は、16K LDPC符号において、それぞれインターリーバ行列の列数が8および12である場合に起こる上記の状況を示す図である。16QAMコンステレーションおよび256QAMコンステレーションでは、8列のインターリーバ行列が使用される。64QAMコンステレーションでは、12列のインターリーバ行列が使用される。グリッドはLDPC符号語を表し、小さな四角はLDPC符号語の1ビットを表し、行は巡回ブロックに対応し、列は複数の巡回ブロックにおいて互いに同一のビットインデックスを有するビットに対応する。黒塗りの四角は、インターリーバ行列の先頭行における8ビットおよび12ビットを表している。なお、分かり易くするため、1つの巡回ブロックのビット数を360から72に減らして図示しているものの、これにより理解度に影響が及ぶことはない。
【0053】
2つ目の問題は、DVB−T2規格において、可能なビットインターリーバの構成の数が、ビットインターリーバ行列の列数によって制限されることである。
【0054】
DVB−T2ビットインターリーバのさらなる問題は、カラムツイスト処理によって、パーミュテーションの規則性および並列性がさらに損なわれるということである。
図16および
図17は、それぞれ
図14および
図15と同様の状況を示しているが、カラムツイスト処理が適用されている点が異なる。16K LDPC符号でインターリーバ行列が8列の場合に、DVB−T2ビットインターリーバにおいて用いられる列毎のカラムツイスト値は(0,0,0,1,7,20,20,21)である。また、16K LDPC符号でインターリーバ行列が12列の場合に、DVB−T2ビットインターリーバにおいて用いられる列毎のカラムツイスト値は、(0,0,0,2,2,2,3,3,3,6,7,7)である。
【0055】
したがって、レイテンシを低減し並列性を高めたビットインターリーバを提供する必要がある。これらの特性は、特に反復BICM復号において重要である。
【0056】
≪発明者が得た知見≫
発明者は、鋭意研究を行った結果、以下の2つの条件が満たされるとき、非常に効率的なインターリーバが提供できるという知見を得た。
【0057】
(条件1)
各コンステレーション語のM個のビットが、LDPC符号語のM個の異なる巡回ブロックにマッピングされる。これは、LDPC符号語のM個の異なる巡回ブロックから1ビットずつコンステレーション語にマッピングする、ことと等価である。この概要を
図18(a)に示す。
【0058】
(条件2)
M個の巡回ブロックにマッピングされるすべてのコンステレーション語が、当該M個の巡回ブロックのみにマッピングされる。これは、QビットからなるM個の異なる巡回ブロックのM×Q個のビットの全ては、Q個のコンステレーション語にのみマッピングされる、ことと等価である。この概要を
図18(b)に示す。
【0059】
上記条件では、ちょうどQ個のコンステレーション語は、各M個の巡回ブロックにマッピングされていることになる。
【0060】
≪実施の形態(その1)≫
以下、上記の条件1、条件2を満たすビットインターリーバ(並列ビットインターリーバ)の詳細について説明する。なお、以下において、実質的に同じ処理内容、および、同じ処理内容を行う構成ユニットには同じ符号を付す。
【0061】
本明細書では、M個の巡回ブロックよりなるグループのそれぞれ、または、Q個のコンステレーション語よりなるグループのそれぞれを、セクション(または、インターリーバセクション)と呼ぶ。
【0062】
図19および
図20は、本発明の一実施形態に係る、上記パラメータ(Q=8、M=4、N=12)に対応する条件1、条件2を満たすビットインターリーバによるマッピングの機能を示す図および当該ビットインターリーバの一構成例を示すブロック図である。
【0063】
図19および
図20では、QC−LDPC符号の符号語は、それぞれがQ=8個のビットからなるN=12個の巡回ブロックQB1〜QB12で構成されている。24個のコンステレーション語はそれぞれM=4個のビットからなり、それぞれが2
M=16個のコンステレーションポイントのいずれか1つを示す。ビットインターリーバは、N/M=3個のセクションに分けられ、24個のコンステレーション語はN/M=3個のセクションのいずれか1つに関連付けられる。
【0064】
ビットインターリーバ2000は、ビットパーミュテーションユニット2010を有し、ビットパーミュテーションユニット2010は互いに独立して(互いに依存せずに)動作するN/M(=3)個のセクションパーミュテーションユニット2021、2022、2023を有する。なお、セクションパーミュテーションユニットを3つ備えるようにする代わりに、例えば、1つのセクションパーミュテーションユニットを用いて処理対象を時系列に切り替えながら後述する3つのセクションパーミュテーション処理を行うようにしてもよい。
【0065】
セクションパーミュテーションユニット(2021、2022、2023)は、互いに独立して(互いに依存せずに)、8個のコンステレーション語(C1〜C8、C9〜C16、C17〜C24)の各々に、4個の巡回ブロック(QB1〜QB4、QB5〜QB8、QB9〜QB12)のそれぞれから1ビットずつマッピングされるように、4個の巡回ブロックの計32個のビットに対してその並び順を換えるセクションパーミュテーション処理を施す。
【0066】
上述の2つの条件1、条件2は、単に、ビットインターリーバがN/M個の並列セクションに分けられることを保証するだけのものである。これらの並列セクションに対して施すセクションパーミュテーション処理に、互いに同じパーミュテーション規則が適用されてもよいし、互いに異なるパーミュテーション規則が適用されてもよいし、一部だけが互いに同じパーミュテーション規則が適用されてもよい。
【0067】
例えば、セクションパーミュテーションユニットは、巡回ブロックのQ個のビット(LDPC復号処理において重要度が互いに等しい)を、Q個のコンステレーション語の同じビットインデックスのビット(ロバストレベルが互いに等しい)にマッピングするようにしてもよい。それぞれの巡回ブロックにおいて、Q個のビットは、順に、あるいはパーミュテーションされた順に並べることができる。後者を
図21(a)、(b)を用いて、前者を
図22(a)、(b)を用いて説明する。
【0068】
図21(a)は、
図20のセクションパーミュテーションユニットの一構成例を示す図である。
【0069】
セクションパーミュテーションユニット2101は、巡回ブロック内パーミュテーションユニット2111〜2114、およびカラム‐ロウパーミュテーションユニット2131を有する。なお、巡回ブロック内パーミュテーションユニットを4つ備えるようにする代わりに、例えば1つの巡回ブロック内パーミュテーションユニットを用いて処理対象を時系列に切り替えながら後述する4つの巡回ブロック内パーミュテーション処理を行うようにしてもよい。
【0070】
巡回ブロック内パーミュテーションユニット(2111〜2114)は、巡回ブロック(QB1〜QB4)のQ個(8個)のビットに対してその並び順を換える巡回ブロック内パーミュテーション処理を施す。1つのセクション内の巡回ブロックに対して施す巡回ブロック内パーミュテーション処理に、例えば、互いに同じパーミュテーション規則が適用されてもよいし、互いに異なるパーミュテーション規則が適用されてもよいし、一部だけが互いに同じパーミュテーション規則が適用されてもよい。
【0071】
カラム‐ロウパーミュテーションユニット2131は、M×Q個(32個)のビットに対してこの並び順を換えるカラム‐ロウパーミュテーション処理を施す。詳述すれば、カラム‐ロウパーミュテーションユニット2131は、M×Q個(32個)のビットをQ列M行(8列4行)の行列の行方向に書き込み、書き込んだM×Q個(32個)のビットを列方向に読み出すことと等価なカラム‐ロウパーミュテーション処理を行う。なお、カラム‐ロウパーミュテーションユニット2131によるカラム‐ロウパーミュテーション処理は、
図9(a)、(b)の12列1350行がQ列M行に置き換わり、書き込み処理が列方向から行方向に、読み出し処理が行方向から列方向に換わったものである。
【0072】
図21(b)は、
図21(a)のセクションパーミュテーションユニットによるマッピングの機能を示す図である。
図21(b)では、各コンステレーション語のM=4個のビットがb1〜b4で示されている。
【0073】
ただし、セクションパーミュテーション処理において巡回ブロック内パーミュテーション処理が実施されなくてもよい。
【0074】
図20のセクションパーミュテーションの別の例である、巡回ブロック内パーミュテーション処理を実施しないセクションパーミュテーションユニットの一構成例およびこのセクションパーミュテーションユニットによるマッピングの機能を
図22(a)および
図22(b)に示す。セクションパーミュテーションユニット2201は、カラム‐ロウパーミュテーションユニット2131を有し、カラム‐ロウパーミュテーション処理のみ行う。
図22(b)では、各コンステレーション語のM=4個のビットがb1〜b4で示されている。
【0075】
ただし、巡回ブロックQB5〜QB8、QB9〜QB12に対して、
図21および
図22でそれぞれ説明したセクションパーミュテーションが行われるようにしてもよい。
【0076】
本発明の他の実施の形態では、ビットインターリーバは、セクションパーミュテーション処理を行う前に、付加的にN個の巡回ブロックに対してその並び順を換える巡回ブロックパーミュテーション処理を行う。付加的に巡回ブロックパーミュテーション処理を施すビットインターリーバの一構成例を
図23に示す。ここでの巡回ブロックパーミュテーションは、DVB−T2規格におけるビット‐セルデマルチプレクサによるパーミュテーションと同様の役割を果たすものである。
【0077】
図23に示すビットインターリーバ2300は、巡回ブロックパーミュテーションユニット2310と、ビットパーミュテーションユニット2010(セクションパーミュテーションユニット2021〜2023を含む)を備える。
【0078】
巡回ブロックパーミュテーションユニット2310は、巡回ブロックQB1〜QB12に対してその並び順を換える巡回ブロックパーミュテーション処理2311〜2318を施す。なお、巡回ブロックパーミュテーション処理2311〜2318で用いられるパーミュテーション規則は互いに同じである。
【0079】
N個の巡回ブロックに対して施す巡回ブロックパーミュテーションは、それによりLDPC符号語のビットをコンステレーションのビットに最適にマッピングすることが可能となり、受信性能の最適化につながるため、特に有益である。
【0080】
図24は、
図23のビットインターリーバの一構成例を示すブロック図である。
図24のビットインターリーバ2400は、下記のステージA、B、Cの3つのパーミュテーション処理を実施する。
【0081】
ステージA:巡回ブロック(間)パーミュテーション
ステージB:巡回ブロック内パーミュテーション
ステージC:カラム‐ロウパーミュテーション
ここで、巡回ブロック(間)パーミュテーションは符号語を構成するN個の巡回ブロックの並び順を換えるパーミュテーションであり、巡回ブロック内パーミュテーションは巡回ブロックを構成するQ個のビットの並び順を換えるパーミュテーションであり、カラム‐ロウパーミュテーションは、セクションを構成するM×Q個のビットの並び順を換えるパーミュテーションである。
【0082】
図24に示すビットインターリーバ2400は、巡回ブロックパーミュテーションユニット2310と、ビットパーミュテーションユニット2010(セクションパーミュテーションユニット2101〜2103)を備える。セクションパーミュテーションユニット2101(2102、2103)は、巡回ブロック内パーミュテーションユニット2111〜2114(2115〜2118、2119〜2122)と、カラム‐ロウパーミュテーションユニット2131(2132、2133)を備える。
【0083】
ビットインターリーバ2400は、巡回ブロックパーミュテーションユニット2310によって巡回ブロック(間)パーミュテーションを行い(ステージA)、巡回ブロック内パーミュテーションユニット2111〜2122によって巡回ブロック内パーミュテーションを行い(ステージB)、カラム‐ロウパーミュテーションユニット2131〜2133)によってカラム‐ロウパーミュテーションを行う(ステージC)。
【0084】
図24に示すビットインターリーバから巡回ブロック内パーミュテーションユニット2111〜2122を取り除いて、巡回ブロック内パーミュテーションを行わないように、ビットインターリーバを構成してもよい。また、ビットインターリーバは、巡回ブロック内パーミュテーションを、巡回ブロック(間)パーミュテーションの後に実施する代わりに、巡回ブロック(間)パーミュテーションの前に実施してもよく、巡回ブロック(間)パーミュテーションの前後で実施するようにしてもよい。
【0085】
なお、複数の巡回ブロック内パーミュテーションユニットは互いに同様の構成であってもよい。このため、複数の巡回ブロック内パーミュテーションユニットは同一の機能リソース(ハードウェアブロックなど)によって実装可能である。また、複数の巡回ブロック内パーミュテーションは巡回的なシフト処理からなっていてもよく、この場合、バレルシフタを用いた効率的なハードウェア実装が可能となる。LDPCデコーダに用いているバレルシフタを利用して実装することも可能である。
【0086】
以下、条件1、条件2を満たすビットインターリーブ処理を行うビットインターリーバを含むトランスミッタの一構成例について
図25を用いて説明する。
【0087】
図25は、本発明のさらに他の実施形態に係るトランスミッタの一構成例を示すブロック図である。
図25に示すトランスミッタ2500は、BICMエンコーダ(LDPCエンコーダ2510、ビットインターリーバ2520、コンステレーションマッパ2530を含む)と、モジュレータ2540を備える。
【0088】
LDPCエンコーダ2510は、入力ブロックをQC−LDPC符号を用いて符号語に符号化し、符号語をビットインターリーバ2520へ出力する。
【0089】
ビットインターリーバ2520は、LDPCエンコーダ2510からQC−LDPC符号の符号語を受け取る。この符号語は、N=12個の巡回ブロックからなり、各巡回ブロックはQ=8個のビットからなる。そして、ビットインターリーバ2520は、符号語のビットに対してその並び順を換えるビットインターリーブ処理を施す。ビットインターリーバ2520は、ビットインターリーブ処理が施された符号語を、それぞれM=4個のビットよりなり、それぞれが2
M=16個の所定のコンステレーションポイントのいずれか1つを示す複数のコンステレーション語に分割してコンステレーションマッパ2530へ出力する。ただし、ビットインターリーバ2520は、ビットインターリーブ処理として、例えば
図19から
図22で説明した、または、その変形として説明したビットパーミュテーション処理を行う。または、ビットインターリーバ2520は、ビットインターリーブ処理として、ビットパーミュテーション処理に加えて、例えば
図23から
図24で説明した、または、その変形として説明した巡回ブロックパーミュテーション処理を追加的に行ってもよい。
【0090】
コンステレーションマッパ2530は、ビットインターリーバ2520からコンステレーション語を受け取り、受け取ったコンステレーション語に対してコンステレーションマッピング処理を行う。
【0091】
モジュレータ2740は、直交周波数分割多重(orthogonal frequency division multiplexing:OFDM)変調などを行って送信信号を生成する。
【0092】
以下、条件1、条件2を満たすビットインターリーブ処理を行うビットインターリーバを含むBICMエンコーダの一実装例について
図26を用いて説明する。
【0093】
図26は、本発明のさらに他の実施の形態に係るBICMエンコーダの一実装例を示すブロック図である。
図26のBICMエンコーダ2600は、上記パラメータ(Q=8、N=12、M=4)に対応するものである。
【0094】
図26に示すBICMエンコーダ2600は、メインメモリ2601、LDPCコントローラ2611、ローテータ2612、検査ノードプロセッサ群2613、デローテータ2614、QBカウンタ2631、テーブル2632、インターリーバ2633、レジスタ群2634、インターリーバ2635、およびマッパ群2651を備える。
【0095】
図26では、Q=8であることを考慮して、メインメモリ2601の読み出しが8ビットずつ行われ、検査ノードプロセッサ群2613には8個の検査ノードプロセッサがあり、マッパ群2651には8個のマッパが存在する。また、M=4であることを考慮して、レジスタ群2634には4個のレジスタがある。
【0096】
メインメモリ2601は、送信すべきビット列を例えば入力プロセシングユニット(不図示)から受け取り、受け取ったビット列を保持する。
【0097】
LDPCコントローラ2611は、メインメモリ2601に対して読み出しアドレスを出力し、これによりメインメモリ2601はビット列の先頭から8ビットずつローテータ2612へ出力する。ローテータ2612は、LDPCコントローラ2611による制御を受けて、メインメモリ2601から供給される8ビットを所定数巡回シフトし、巡回シフト後の8ビットを検査ノードプロセッサ群2613の各検査ノードプロセッサに対して1ビットずつ出力する。各検査ノードプロセッサ群2613の各検査ノードプロセッサは、LDPCコントローラ2611による制御を受けて、入力された1ビットに対して検査ノード処理を行い、1ビットの処理結果をデローテータ2614へ出力する。デローテータ2614は、LDPCコントローラ2611による制御を受けて、検査ノードプロセッサ群2613から受け取った8ビットをローテータ2612による巡回シフトを打ち消すように所定数巡回シフトし、巡回シフト後の8ビットをメインメモリ2601へ出力する。LDPCコントローラ2611は、メインメモリ2601に対して書き込みアドレスを出力し、これによりメインメモリ2601はデローテータ2614から供給される8ビットを保持する。ただし、LDPCコントローラ2611、ローテータ2612、検査ノードプロセッサ群2613、およびデローテータ2614が、
図25におけるBICMエンコーダのLDPCエンコーダ2510を構成する。
【0098】
QBカウンタ2631は0から11までカウントするものであり、カウンタ値をテーブル2632へ出力する。なお、QBカウンタ2631によるカウント動作はN=12を考慮したものである。
【0099】
テーブル2632は、巡回ブロックパーミュテーションの規則を記憶した単純なルックアップテーブルである。つまり、テーブル2632は、N=12個の巡回ブロックの読み出し順序の情報(QBカウンタ2631による12個のカウンタ値にそれぞれ異なる巡回ブロックを対応付けた情報)を保持している。テーブル2632は、QBカウンタ2631から供給されるカウンタ値に対応した巡回ブロック1個分のビット(Q=8個のビット)がメインメモリ2601からインターリーバ2633へ供給されるように、メインメモリ2601に対して読み出しアドレスを出力する。これにより、メインメモリ2601はQBカウンタ2631のカウンタ値に対応した巡回ブロック1個分のビットをインターリーバ2633へ出力する。なお、このテーブル2632の処理によって巡回ブロックパーミュテーション(ステージA)が実現される。
【0100】
インターリーバ2633は、メインメモリ2601から供給された巡回ブロック1個分のビットを所定数巡回シフトさせて、レジスタ群2634の1段目のレジスタに出力する。なお、このインターリーバ2633の処理によって巡回ブロック内パーミュテーション(ステージB)が実現される。ただし、レジスタ群2634の各レジスタは制御パルスを受けたタイミングで巡回ブロック1個分のビットを保持し、保持した巡回ブロック1個分のビットを次に制御パルスを受け取るまで出力し続ける。
【0101】
QBカウンタ2631のカウンタ値「0」〜「3」に対して上記の処理内容が実施されると、インターリーバ2635には巡回ブロック4個分のビット(32個のビット)が入力される。このタイミングで、インターリーバ2635は、入力された巡回ブロック4個分のビットに対してインターリーブ処理を施してマッパ群2651の各マッパにコンステレーション語の1個分のビット(M=4個のビット)を出力する。インターリーブ処理により、各マッパには、レジスタ群2634の4個のレジスタのそれぞれから1ビットずつ計4ビットが供給される。なお、インターリーバ2635の処理によってカラム−ロウパーミュテーション(ステージC)が実現される。
【0102】
ただし、QBカウンタ2631、テーブル2632、インターリーバ2633、レジスタ群2634、及びインターリーバ2635が、
図25におけるBICMエンコーダのビットインターリーバ2520を構成する。
【0103】
マッパ群2651の各マッパはインターリーバ2635から供給された4個のビットをコンステレーションにマッピングし、マッピング結果を出力する。ただし、マッパ群2651が、
図25におけるBICMエンコーダのコンステレーションマッパ2530を構成する。
【0104】
1つの符号語に対して、上記一連の処理がQBカウンタ2631のカウンタ値「0」から「3」、「4」から「7」、「8」から「11」の計3回行われる。
【0105】
なお、
図26の一実装例では、並列に動作するQ個のマッパを含むが、より並列度を低く、又は、高くして、BICMエンコーダを実装することも可能である。例えば、ビットインターリーバにおける並列インターリーバセクションの数、すなわち、N/Mを増加させることによって、並列性を簡単に上げることができることは容易に分かる。このような手法では、Q×N/M個のマッパを並列にすることによって並列化を最大化することができる。ビットインターリーバにはそのような並列性を何の障害もなく実現することができるというメリットがある。
【0106】
以下、条件1、条件2を満たすビットインターリーブ処理を施すビットインターリーバを含むトランスミッタからの信号を受信するレシーバについて図面を用いて説明する。
【0107】
図27は、本発明のさらに他の実施の形態に係る非反復BICMデコーダを有するレシーバの一構成例を示すブロック図である。レシーバは、トランスミッタと逆の動作を行う。
【0108】
図27に示すレシーバ2700は、モジュレータ2710、および非反復BICMデコーダ(コンステレーションデマッパ2720、およびビットデインターリーバ2730、LDPCデコーダ2740を含む)を備える。
【0109】
デモジュレータ2710は、OFDMなどによる復調処理を行い、復調処理結果を出力する。
【0110】
非反復BICMデコーダのコンステレーションデマッパ2720は、モジュレータ2710からの入力に対してデマッピング処理を施して所謂ソフトビット列を生成し、生成したソフトビット列をコンステレーションデマッパ2730へ出力する。各ソフトビットは各ビットが0になるか1になるかの確率を示す尺度である。通常、ソフトビットは対数尤度比(loglikelihood ratios: LLRs)で表され、以下のように定義される。
【0111】
LLR(b)=ln[p(b=0)/p(b=1)]
p(b=0)はビットbが0である確率を示し、p(b=1)はビットbが1である確率を示す。ただし、p(b=0)+p(b=1)=1が成り立つ。
【0112】
ビットデインターリーバ2730は、コンステレーションデマッパ2720から出力されるソフトビット列に対して、
図25のトランスミッタ内のビットインターリーバがビット列に対して施したビットインターリーブ処理を打ち消して元の並びに戻すインターリーブ処理(ビットデインターリーブ処理)を行う。
【0113】
LDPCデコーダ2740は、ビットデインターリーバ2730からビットデインターリーブが施されたソフトビット列を受け取り、受け取ったソフトビット列を用いてLDPC復号処理を行う。
【0114】
顕著な受信性能の向上が得られる技法の一つとして、反復BICM復号処理がある。反復BICMデコーダについて
図28を用いて説明する。
【0115】
図28は、本発明のさらに他の実施の形態に係る反復BICMデコーダを有するレシーバの一構成例を示すブロック図である。レシーバは、トランスミッタと逆の動作を行う。
【0116】
図28に示すレシーバ2800は、モジュレータ2710、および反復BICMデコーダ(コンステレーションデマッパ2720、ビットデインターリーバ2730、LDPCデコーダ2740、減算ユニット2760、ビットインターリーバ2750)を備える。
【0117】
図28のレシーバ2800は、コンステレーションデマッパ2720によってコンステレーションデマッピング処理、ビットデインターリーブ2730によるビットデインターリーブ処理、LDPCデコーダ2740によるLDPC復号処理を行う。
【0118】
LDPC復号の反復処理を1回または複数回実行した後、減算ユニット2760がLDPCデコーダ2740の出力からLDPCデコーダ2740の入力を減算し、減算の結果得られた外部情報(extrinsic information)をビットインターリーバ2750へ出力する。ビットインターリーバ2750は、外部情報に対して、
図25のトランスミッタ内のビットインターリーバがビット列に対して施したビットインターリーブ処理と同じインターリーブ規則のインターリーブ処理を行う。そして、ビットインターリーバ2750は、インターリーブ処理を施した外部情報をコンステレーションデマッパ2720へフィードバックする。コンステレーションデマッパ2720は、フィードバックされた外部情報を事前情報(a-priori information)として用いて、より信頼性の高いLLR値を算出する。そして、ビットデインターリーバ2730は、新たに算出されたLLR値に対して
図25のトランスミッタ内のビットインターリーバがビット列に対して施したビットインターリーブ処理を打ち消して元の並びに戻すインターリーブ処理(ビットデインターリーブ処理)を行う。LDPCデコーダ2740は、ビットデインターリーブ処理が施されたLLR値を用いてLDPC復号処理を行う。
【0119】
図28に示すように、反復復号のループは、四つの要素、すなわち、コンステレーションデマッパ2720、ビットデインターリーバ2730、LDPCデコーダ2740、およびビットインターリーバ2750からなる。ビットデインターリーバ2730とビットインターリーバ2750は、レイテンシが非常に低く、理想的にはゼロであって、かつ簡易な構成であれば、レシーバの効率的な実装が可能となる。上述したビットデインターリーバ2730とビットインターリーバ2750は両方の条件を満たす。
【0120】
非常に効率的な並列実装を実現する反復BICMデコーダの一実装例について
図29を用いて説明する。
【0121】
図29は、本発明のさらに他の実施の形態に係るBICMデコーダの一実装例を示すブロック図である。
図29のBICMデコーダ2900は、上記パラメータ(Q=8、N=12、M=4)に対応するものである。
【0122】
図29に示すBICMデコーダ2900は、メインLLRメモリ2901、バッファLLRメモリ2902、LDPCコントローラ2911、ローテータ2912、検査ノードプロセッサ群2913、デローテータ2914、QBカウンタ2931、テーブル2932、減算ユニット2933、インターリーバ2934、レジスタ群2935、インターリーバ2936、デマッパ群2937、デインターリーバ2938、レジスタ群2939、デインターリーバ2940、および遅延ユニット2941を備える。
【0123】
図29では、Q=8であることを考慮して、メインLLRメモリ2901およびバッファLLRメモリ2902の読み出しが8個のLLR値ずつ行われ、検査ノードプロセッサ群2913には8個の検査ノードプロセッサがあり、デマッパ群2951には8個のデマッパが存在する。また、M=4であることを考慮して、レジスタ群2935、2972には4個のレジスタがある。
【0124】
デマッパ群2937の各デマッパは、デモジュレータ(不図示)の出力を用いてデマッピング処理を行い、これにより得られたLLR値をデインターリーバ2938へ出力する。ただし、デマッパ群2937が、
図28における反復BICMデコーダのコンステレーションデマッパ2720を構成する。
【0125】
デインターリーバ2938は、LLR値に対してデインターリーブ処理(トランスミッタによるステージCによるインターリーブを打ち消すインターリーブ処理)を施し、デインターリーブ後のLLR値をレジスタ群2939の各レジスタに出力する。ただし、レジスタのそれぞれには巡回ブロック1個分のLLR値(8個のLLR値)が格納される。レジスタ群2939では、レジスタに保持された巡回ブロック1個分のLLR値が順次後段に出力され、各レジスタの保持内容が順次更新されていく。デインターリーバ2940は、供給される巡回ブロック1個分のLLR値(8個のLLR値)に対してインターリーブ処理(トランスミッタによるステージBによるインターリーブを打ち消すインターリーブ処理)を施し、テーブル2932の保持内容(後述)に従ってメインLLRメモリ2901およびバッファLLRメモリ2902に書き込む。なお、テーブル2932の保持内容に従うメインLLRメモリ2901およびバッファLLRメモリ2902への書き込みより、トランスミッタによるステージAによるインターリーブを打ち消すインターリーブ処理が実現される。
【0126】
このようにして、メインLLRメモリ2901は、デインターリーブ処理後のLLR値を記憶し、LDPCデコーダ(LDPCコントローラ2911、ローテータ2912、検査ノードプロセッサ群2913、デローテータ2914)によっても用いられる。LDPC復号処理は、1または複数の反復によりなる反復処理である。LDPC復号処理の各反復において、メインLLRメモリ2901内のLLR値が更新される。反復BICM復号処理に必要な外部情報を算出するため、古いLLR値はバッファLLRメモリ2902に保持される。
【0127】
ここで、LDPCデコーダの処理を記載する。
【0128】
LDPCコントローラ2911は、LDPC符号のパリティチェック行列に従ってメインLLRメモリ2901に対して読み出しアドレスを出力し、これによりメインLLRメモリ2901は巡回ブロック1個分ずつLLR値をローテータ2912へ順次出力する。ローテータ2912は、LDPCコントローラ2911による制御を受けて、メインLLRメモリ2901から順次供給される巡回ブロック1個分のLLR値を所定数巡回シフトし、巡回シフト後のLLR値を検査ノードプロセッサ群2913の各検査ノードプロセッサに対して1個ずつ順次出力する。各検査ノードプロセッサ群2913の各検査ノードプロセッサは、LDPCコントローラ2911による制御を受けて、順次入力された一連のLLR値に対して検査ノード処理を行う。次に、検査ノードプロセッサ群2913の各検査ノードプロセッサは、LDPCコントローラ2911による制御を受けて、検査ノード処理の結果である一連のLLR値を順次出力する。デローテータ2914は、LDPCコントローラ2911による制御を受けて、検査ノードプロセッサ群2913から順次受け取った巡回ブロック1個分の処理結果をローテータ2912による巡回シフトを打ち消すように所定数巡回シフトし、巡回シフト後の処理結果をメインLLRメモリ2901へ順次出力する。LDPCコントローラ2911は、LDPC符号のパリティチェック行列に従ってメインLLRメモリ2901に対して書き込みアドレスを出力し、これによりメインLLRメモリ2901はデローテータ2914から順次供給される巡回ブロック1個分の処理結果を保持する。LDPCコントローラ2911は、LDPC符号のパリティチェック行列に従って、以上の処理を繰り返して実行する。
【0129】
LDPC反復処理を所定の回数実行した後、BICM反復処理が実行される。LDPCおよびBICM反復処理を、それぞれ、内的反復処理および外的反復処理とも呼ぶ。なお、これら二種類の反復処理をオーバーラップさせて実装することも可能である。これにより、収束のスピードを上げることができる。BICMおよびLDPC復号処理は、当技術分野において周知であるため、詳細な説明は省略する。
【0130】
QBカウンタ2931は0から11までカウントするものであり、カウンタ値をテーブル2932へ出力する。なお、QBカウンタ2931によるカウント動作はN=12を考慮したものである。
【0131】
テーブル2932は、巡回ブロックパーミュテーションの規則を記憶した単純なルックアップテーブルである。つまり、テーブル2932は、N=12個の巡回ブロックの読み出し順序(書き込み順序)の情報(QBカウンタ2631による12個のカウンタ値にそれぞれ異なる巡回ブロックを対応付けた情報)を保持している。テーブル2932は、QBカウンタ2931から供給されるカウンタ値に対応した巡回ブロック1個分のLLR値がメインLLRメモリ2901およびバッファLLRメモリ2902から減算ユニット群2933へ供給されるように、メインLLRメモリ2901およびバッファLLRメモリ2902に対して読み出しアドレスを出力する。これにより、メインLLRメモリ2901およびバッファLLRメモリ2902はそれぞれQBカウンタ2931のカウンタ値に対応した巡回ブロック1個分のLLR値を減算ユニット2934へ出力する。ここで、メインLLRメモリ2901およびバッファLLRメモリ2902からのLLR値の読み出し位置と、メインLLRメモリ2901およびバッファLLRメモリ2902への当該LLR値の書き込み位置とが一致するように、遅延ユニット2941よる遅延調整が施される。なお、このテーブル2932の処理によって巡回ブロックパーミュテーション(ステージA)に相当するパーミュテーションが実現される。
【0132】
減算ユニット群の各減算ユニット2933は、メインLLRメモリ2901の出力からからバッファLLRメモリ2902の出力を減算し、減算の結果得られた巡回ブロック1個分の外部情報(8個の外部情報)をインターリーバ2934に出力する。
【0133】
インターリーバ2934は、減算ユニット2933から供給された巡回ブロック1個分の外部情報を、所定数巡回シフトさせて、レジスタ群2935の1段目のレジスタに出力する。なお、このインターリーバ2934の処理によって巡回ブロック内パーミュテーション(ステージB)に相当する処理が実現される。ただし、レジスタ群2935の各レジスタは制御パルスを受けて8個のビットを保持し、保持した8個のビットを次に制御パルスを受け取るまで出力し続ける。
【0134】
QBカウンタ2931のカウンタ値「0」〜「3」に対して上記の処理内容が実施されると、インターリーバ2936には巡回ブロック4個分の外部情報(32個の外部情報)が入力される。このタイミングで、インターリーバ2936は、入力された巡回ブロック4個分の外部情報に対してインターリーブ処理を施して、デマッパ群2937の各デマッパにコンステレーション語の1個分の外部情報(M=4個の外部情報)を出力する。インターリーブ処理により、デマッパ群2951の各デマッパには、レジスタ群2935の4個のレジスタのそれぞれから1個ずつ計4個の外部情報が供給される。なお、インターリーバ2936の処理によってカラム−ロウパーミュテーション(ステージC)に相当する処理が実現される。
【0135】
ただし、QBカウンタ2931、テーブル2932、インターリーバ2934、レジスタ群2935、及びインターリーバ2936が、
図28におけるBICMデコーダのビットインターリーバ2750を構成する。
【0136】
デマッパ群2937の各デマッパは、インターリーバ2936から供給された4個の外部情報を事前情報として用いてデマッピング処理を行い、新たなLLR値をデインターリーバ2938へ出力する。
【0137】
デインターリーバ2938は、LLR値に対してデインターリーブ処理(トランスミッタによるステージCによるインターリーブを打ち消すインターリーブ処理)を施し、デインターリーブ後のLLR値をレジスタ群2939の各レジスタに出力する。ただし、レジスタのそれぞれには巡回ブロック1個分のLLR値(8個のLLR値)が格納される。レジスタ群2939では、レジスタに保持された巡回ブロック1個分のLLR値が順次後段に出力され、各レジスタの保持内容が順次更新されていく。デインターリーバ2940は、供給される巡回ブロック1個分のLLR値(8個のLLR値)に対してデインターリーブ処理(トランスミッタによるステージBによるインターリーブを打ち消すインターリーブ処理)を施し、メインLLRメモリ2901およびバッファLLRメモリ2902に出力する。メインLLRメモリ2901およびバッファLLRメモリ2902は、テーブル2932から遅延ユニット2941を介して書き込みアドレスを受け取り、受け取った書き込みアドレスに従い、デインターリーバ2940から受け取った巡回ブロック1個分のLLR値(8個のLLR値)を保持する。テーブル2932に従った書き込み処理により、トランスミッタによるステージAによるインターリーブを打ち消すインターリーブ処理(デインターリーブ処理)が実現される。
【0138】
1つの符号語に対して、上記一連の処理がQBカウンタ2931のカウンタ値「0」から「3」、「4」から「7」、「8」から「11」の計3回行われる。
【0139】
ただし、QBカウンタ2931、テーブル2932、デインターリーバ2938、レジスタ群2939、及びデインターリーバ2940が、
図28におけるBICMデコーダのビットデインターリーバ2730を構成する。
【0140】
インターリーバ2934およびデインターリーバ2940は再構成可能であり、一定のハードウェアコストがかかるが、コストは入念な設計によって最小限に抑えることができる。インターリーバ2936およびデインターリーバ2938は、カラム‐ロウパーミュテーションを実装するものであり、このパーミュテーションは所定のコンステレーションサイズについて一定である。したがって、実装コストは小さい。
【0141】
なお、
図29の一実装例では、並列に動作するQ個のデマッパを含むが、より並列度を低く、又は、高くして、反復BICMデコーダを実装することも可能である。例えば、ビットインターリーバにおける並列インターリーバセクションの数、すなわち、N/Mを増加させることによって、並列性を簡単に上げることができることは容易に分かる。このような手法では、Q×N/M個のデマッパを並列にすることによって並列化を最大化することができる。上述したビットインターリーバにはそのような並列性を何の障害もなく実現することができるというメリットがある。
【0142】
≪発明者によるさらなる検討≫
上述した条件1、条件2を満たすインターリーバ(並列インターリーバ)では、コンステレーション語のビット数Mが巡回ブロック数Nの約数になることを前提としている。しかしながら、常に、MがNの約数になるとは限らない。例として、DVB−T2規格で使用される16K LDPC符号を挙げることができ、16K LDPC符号の符号語はN=45個の巡回ブロックを有する。MがNの約数にならない場合、Mが偶数であるQAMコンステレーションなどの正方形コンステレーションに対するマッピングは容易ではない。
【0143】
従って、N個の巡回ブロックから1以上の巡回ブロックを除外し、残った巡回ブロックのみに対して上記の実施の形態(その1)で説明したインターリーバ(並列インターリーバ)を適用することは、特有の解決方法であると言える。
【0144】
言い換えると、ビットインターリーバは、N個の巡回ブロックの中からコンステレーション語のビット数Mの倍数となるN’個の巡回ブロックを選択する。ビットインターリーバは、選択したN’個の巡回ブロックを、それぞれがM個の巡回ブロックを含むように、N’/M個のセクションに分割し、各セクションに対してセクションパーミュテーションを施す。除外された(選択されなかった)巡回ブロックのビットは、インターリーブされなくてもよいし、インターリーブされてもよい。
特に、実施の形態に係るビットインターリーブ方法は、疑似巡回低密度パリティチェック符号を用いた通信システムにおけるビットインターリーブ方法であって、前記ビットインターリーブ方法は、それぞれがQ個のビットからなるN個の巡回ブロックで構成される前記疑似巡回低密度パリティチェック符号の符号語を受信する受信ステップと、前記符号語のビットに対して当該符号語のビットの並び順を換えるビットパーミュテーション処理を施すビットパーミュテーションステップと、前記ビットパーミュテーション処理が施された符号語を、それぞれがM個のビットよりなり、それぞれが所定のコンステレーションの2
M個のコンステレーションポイントのいずれか1つを示す複数のコンステレーション語に分割する分割ステップと、を有し、N個の巡回ブロックの中から、M(Mはコンステレーション語あたりのビット数である。)の倍数となるN’個の巡回ブロックのサブセットを選択する選択ステップと、前記ビットパーミュテーション処理が施される前の前記符号語はN’/M個のセクションに分割され、各前記セクションはM個の前記巡回ブロックからなり、各前記コンステレーション語は、前記N’/M個のセクションのうちの一つと関連付けられており、前記ビットパーミュテーションステップは、各前記コンステレーション語が、関連付けられている前記セクション中のM個の異なる前記巡回ブロックのそれぞれの1個のビットからなる計M個のビットから構成され、各前記セクションのすべてのビットが当該セクションに関連付けられているQ個の前記コンステレーション語にのみにマッピングされるように、前記ビットパーミュテーション処理を行うことを特徴とする。
同様に、実施の形態に係るビットインターリーバは、疑似巡回低密度パリティチェック符号を用いる通信システムにおけるビットインターリーバであって、前記ビットインターリーバは、それぞれがQ個のビットからなるN個の巡回ブロックで構成される前記疑似巡回低密度パリティチェック符号の符号語を受信し、前記符号語のビットに対して当該符号語のビットの並び順を換えるビットパーミュテーション処理を施し、前記ビットパーミュテーション処理が施された符号語を、それぞれがM個のビットよりなり、それぞれが所定のコンステレーションの2
M個のコンステレーションポイントのいずれか1つを示す複数のコンステレーション語に分割されるように出力するビットパーミュテーション部と、N個の巡回ブロックの中から、M(Mはコンステレーション語あたりのビット数である。)の倍数となるN’個の巡回ブロックのサブセットを選択する選択部と、を備え、前記ビットパーミュテーション処理が施される前の前記符号語はN’/M個のセクションに分割され、各前記セクションはM個の前記巡回ブロックからなり、各前記コンステレーション語はN’/M個の前記セクションのうちのいずれか1つと関連付けられており、前記ビットパーミュテーション部は、各前記コンステレーション語が、関連付けられている前記セクション中のM個の異なる前記巡回ブロックのそれぞれの1個のビットからなる計M個のビットから構成され、各前記セクションのすべてのビットが当該セクションに関連付けられているQ個の前記コンステレーション語にのみにマッピングされるように、前記ビットパーミュテーション処理を行うことを特徴とする。
また、前記符号語のビットは、前記選択された前記N’個の巡回ブロックのサブセットに含まれず、ビットの並び順を換える対象とされないままにされるビット群、または、前記選択された前記N’個の巡回ブロックのサブセットに含まれず、選択されなかった巡回ブロックのみに適用される、前記ビットパーミュテーション処理からは独立したビットの並び順を換える対象となるビット群を含むとしても構わない。
【0145】
この構成によれば、ビットインターリーブを最大化できる。
例えば、除外される巡回ブロックは、変数ノードの重みが最も小さい巡回ブロックであってもよい。RA QC LDPC符号(
図5参照)の場合、例えば、除外される巡回ブロックは、バリティ部分(重み2の変数ノードを有する)の巡回ブロックであってもよく、この場合、例えば符号語の最後から1以上の巡回ブロックであってもよい。
また、前記選択ステップは、各巡回ブロックに含まれるビットの重要度に基づいて、前記巡回ブロックを選択するとしても構わない。
【0146】
また、前記各巡回ブロックに含まれるビットの重要度は、関連するパリティビットの数に基づいて決定されるとしても構わない。
【0147】
また、前記符号語は、リピートアキュミュレート疑似巡回低密度パリティチェック符号であって、前記選択されなかった巡回ブロックは、符号語のパリティセクションに対応するとしても構わない。
【0148】
この構成によれば、符号語に関係するビットのほとんどを、最適なインターリーブに取り込むことができる。インターリーブにおいて取り込まれないビットの数を減らすことは、全体的な効率を大きく向上させることができる。
また、選択されたN’個の巡回ブロックのサブセットは、符号語の最初のビットを有する巡回ブロックから連続するN’個のブロックにより構成されるとしても構わない。
【0149】
この構成によれば、ハードウェアの実装をさらに簡易にすることができる。特に、リピートアキュミュレート疑似巡回低密度パリティチェック符号のパリティチェック行列の場合には、符号語の最終ビットは、ビットの関連性が最も低くなる。
図30は、実施の形態(その1)で説明したインターリーブ方法を適用する適用対象の巡回ブロックと適用しない適用対象外の巡回ブロック(除外される巡回ブロック)を示す図である。但し、
図30は、符号がDVB−T2規格で定義されている16K LDPC符号であり、コンステレーションが16QAMコンステレーションである場合に対する図である。
図30の例では、適用対象の巡回ブロックは44個の巡回ブロック(1、・・・、44)であり、適用対象外の巡回ブロック(除外される巡回ブロック)はその最終行の1個の巡回ブロック45のみである。また、4個の黒四角が1番目のコンステレーション語の4ビットを表す。
【0150】
一般に、インターリーバセクション(M個の巡回ブロックからなるセクション)の数は、floor(N/M)であり、除外される巡回ブロックの数はrem(N,M)である。ここで、floor(N/M)はN/M以下の最大の整数値を返す関数であり、rem(N,M)は、NをMで割った剰余値を返す関数である。
【0151】
表2に、DVB−T2規格における16K LDPC符号(N=45個の巡回ブロックを有する)に関する、様々なコンステレーションサイズ(コンステレーションのビット数M)に対するセクション数と除外される巡回ブロック数を示す。
【0153】
上記に説明した条件1、条件2を満たすインターリーブ方法では、各コンステレーション語はM個の巡回ブロックにマッピングされる。しかしながら、大きなサイズのコンステレーション(コンステレーションポイント数が多いコンステレーション)に対して、条件1、条件2を満たすインターリーブ方法を適用する場合、非常に多い遅延レジスタが必要となる(
図26及び
図29で説明した実装例を参照)。非常に多い遅延レジスタの使用は、回路面積および消費電力の増大につながる。加えて、コンステレーション語がマッピングされる巡回ブロック数を減少させることは、外(BICM)のイタレーションと内(LDPC)のイタレーション間のオーバーラッピングを増大させるために有益であり、全体のBICM復号のレイテンシを減少させる。
【0154】
各コンステレーション語の2ビット以上を同じ巡回ブロックにマッピングすることによって、コンステレーション語がマッピングされる巡回ブロックの数を減少させることができる。同じ巡回ブロックにマッピングされるコンステレーション語のビットの数をフォルディング係数と称し、Fと記す。例えば、コンステレーションが16QAMコンステレーションであり、F=2の場合、コンステレーション語は4個の巡回ブロックの代わりに2個の巡回ブロックにのみマッピングされる。唯一の制約は、フォルディング係数F(1より大きい整数)がMとQの約数でなければならない、ということである。なお、F=1は、フォルディングなし、つまり、実施の形態(その1)に対応する。
【0155】
複素QAMコンステレーションシンボルは、2つの同等の実PAM(pulse−amplitude modulation)シンボルに分離することができる。従って、QAMコンステレーションのMビットは、2つの同等の実PAMシンボルのM/2ビットのセットに分割することができ、コンステレーション語のビットは同じM/2個の巡回ブロックにマッピングすることができる。F=2であるフォルディング係数は、QAMコンステレーションにとって有益な値である。
【0156】
実数分解できない複素コンステレーション、例えばDVB−S2規格で使用されるような、8PSK(phase shift keying)、16APSK(amplitude phase shift keying)、32APSKなどでは、フォルディング手法の利用は容易ではない。しかしながら、FがMの約数であれば、フォルディングの手法の利用は可能である。しかしながら、各巡回ブロックのビットの全てがコンステレーションの同一のロバストレベルのビットにのみマッピングされることをもはや保証することはできない。
【0157】
フォルディングを用いる手法では、例えば、各巡回ブロックのビットの全てがコンステレーションの同一のロバストレベルのビットにマッピングされることは望ましい。
【0158】
フォルディングは、除外される巡回ブロックの数を減らし、又は、除外される巡回ブロックの数を0にする付加的な利点を持つ。上記説明したように、実施の形態(その1)で説明したインターリーバ(並列インターリーバ)を適用するためには、符号語を構成する巡回ブロックのいくつかを除外する必要がある。
【0159】
フォルディングなし(F=1)の場合、M個の巡回ブロックからなるグループの数(セクション数)はfloor(N/M)であり、除外される巡回ブロック数はrem(N,M)である。一方、フォルディングありの場合、M/F個の巡回ブロックからなるグループの数はfloor(N/(M/F))であり、除外される巡回ブロック数はrem(N,M/F)である。この具体的な数値の例として、DVB−T2規格に使用されるLDPC符号について表3に示す。
【0161】
発明者は、フォルディング(Fが2以上の整数)を行うためには、条件1、条件2を、下記の条件1A、条件2Aに変更する必要があるとの知見を得た。
【0162】
(条件1A)
各コンステレーション語のM個のビットが、LDPC符号語のM/F個の異なる巡回ブロックにマッピングされる。これは、LDPC符号語のM/F個の異なる巡回ブロックからF個のビットずつコンステレーション語にマッピングする、ことと等価である。この概要を
図31(a)に示す。
【0163】
(条件2A)
M/F個の巡回ブロックにマッピングされるすべてのコンステレーション語が、当該M/F個の巡回ブロックのみにマッピングされる。これは、QビットからなるM/F個の異なる巡回ブロックのM×Q/F個のビットの全ては、Q/F個のコンステレーション語にのみマッピングされる、ことと等価である。この概要を
図31(b)に示す。
【0164】
なお、F=1はフォルディングなしであり、条件1A、条件2Aは、条件1、条件2と同一になる。
【0165】
≪実施の形態(その2)≫
以下、上記の条件1A、条件2Aを満たすビットインターリーバ(並列ビットインターリーバ)の詳細について説明する。なお、以下において、実質的に同じ処理内容、および、同じ処理内容を行う構成ユニットには同じ符号を付す。
【0166】
本明細書では、M/F個の巡回ブロックよりなるグループのそれぞれ、または、Q/F個のコンステレーション語よりなるグループのそれぞれを、フォルディングセクション(または、フォルディングインターリーバセクション)と呼ぶ。
【0167】
なお、F=1の場合(フォルディングなし)、フォルディングインターリーバセクションはインターリーバセクションと一致し、ビットインターリーバは実施の形態(その1)のビットインターリーバと同一構成になる。
【0168】
図32は、本発明のさらに他の実施形態に係る、Q=8、M=4、N=12、F=2に対応する条件1A、条件2Aを満たすビットインターリーバの一構成例を示すブロック図である。
【0169】
図32では、QC−LDPC符号の符号語は、それぞれがQ=8個のビットからなるN=12個の巡回ブロックQB1〜QB12で構成されている。24個のコンステレーション語はそれぞれM=4個のビットからなり、それぞれが2
M=16個のコンステレーションポイントのいずれか1つを示す。ビットインターリーバは、F×N/M=6個のフォルディングセクションに分けられ、24個のコンステレーション語はF×N/M=6個のフォルディングセクションのいずれか1つに関連付けられる。
【0170】
ビットインターリーバ2000Aは、ビットパーミュテーションユニット2010Aを有し、ビットパーミュテーションユニット2010Aは互いに独立して(互いに依存せずに)動作するF×N/M=6個のフォルディングセクションパーミュテーションユニット2021A〜2026Aを有する。なお、フォルディングセクションパーミュテーションユニットを6つ備えるようにする代わりに、1つのフォルディングセクションパーミュテーションユニットを用いて処理対象を時系列に切り替えながら後述する6つのフォルディングセクションパーミュテーション処理を行うようにしてもよい。
【0171】
フォルディングセクションパーミュテーションユニット(2021A、2022A、2023A、2024A、2025A、2026A)は、互いに独立して(互いに依存せずに)、4個のコンステレーション語(C1〜C4、C5〜C8、C9〜C12、C13〜C16、C17〜C20、C21〜C24)の各々に、M/F=2個の巡回ブロック(QB1〜QB2、QB3〜QB4、QB5〜QB6、QB7〜QB8、QB9〜QB10、QB11〜QB12)のそれぞれからF=2個のビットずつマッピングされるように、2個の巡回ブロックの計16個のビットに対してその並び順を換えるフォルディングセクションパーミュテーション処理を施す。
【0172】
上述の2つの条件1A、条件2Aは、単に、ビットインターリーバがF×N/M個の並列フォルディングセクションに分けられることを保証するだけのものである。これらの並列フォルディングセクションに対して施すフォルディングセクションパーミュテーション処理に、互いに同じパーミュテーション規則が適用されてもよいし、互いに異なるパーミュテーション規則が適用されてもよいし、一部だけが互いに同じパーミュテーション規則が適用されてもよい。
【0173】
例えば、フォルディングセクションパーミュテーションユニットは、巡回ブロックのQ個のビットを、Q/F個のコンステレーション語の同一のロバストレベルを有するビットにマッピングするようにしてもよい。これについて、Q=8、M=4を例に挙げて、
図33及び
図34を用いて説明する。
【0174】
図34(a)は、F=1(フォルディングなし)の(フォルディング)セクションパーミュテーションユニットの一構成例を示すブロック図であり、
図22(a)と同一構成である。
【0175】
図34(b)は、
図32のうちの、F=2(フォルディングあり)の場合の2つのフォルディングセクションパーミュテーションユニットの一構成例を示すブロック図である。
【0176】
但し、
図34(b)の例では、コンステレーションが16QAMコンステレーションである。このため、コンステレーションのビットには2つのロバストレベルがあり、ビットb1とビットb3が同一のロバストレベル、ビットb2とビットb4が同一のロバストレベルである。
【0177】
フォルディングセクションパーミュテーションユニット2201A(2202A)は、カラム‐ロウパーミュテーションユニット2131A(2132A)を有する。
【0178】
カラム‐ロウパーミュテーションユニット2131A(2132A)は、巡回ブロックQB1〜QB2(QB3〜QB4)のQ×M/F=16個のビットに対してこの並び順を換えるカラム‐ロウパーミュテーション処理を施す。詳述すれば、カラム‐ロウパーミュテーションユニット2131A(2132A)は、Q×M/F=16個のビットをQ列M/F行=8列2行の行列の行方向に書き込み、書き込んだ16個のビットを列方向に読み出すことと等価なカラム‐ロウパーミュテーション処理を行う。なお、カラム‐ロウパーミュテーションユニット2131A、2132Aによるカラム‐ロウパーミュテーション処理は、
図9(a)、(b)の12列1350行がQ列M/F行に置き換わり、書き込み処理が列方向から行方向に、読み出し処理が行方向から列方向に換わったものである。
【0179】
なお、フォルディング係数Fのフォルディングによって、1つのコンステレーション語にマッピングされる巡回ブロック数が減少する。これにより、カラム‐ロウパーミュテーションにおける行列の行数はMからM/Fに減少する。
【0180】
図33(a)は、
図34(a)の(フォルディング)セクションパーミュテーションユニットによるマッピングの機能を示す図であり、
図33(b)は、
図34(a)の2つのフォルディングセクションパーミュテーションユニットによるマッピングの機能を示す図である。
図33(a)、(b)では、各コンステレーション語のM=4個のビットがb1〜b4で示されている。なお、太線で囲っている部分はコンステレーション語C1についてのマッピングを表している。
【0181】
図33(a)、
図34(a)の例では、1つの巡回ブロックの8ビット(同じ重要度を有する)は、8個のコンステレーション語の同一ビットインデックスを有するビット(同じロバストレベルを有する)にマッピングされている。また、
図33(b)、
図34(b)の例では、1つの巡回ブロックの8ビット(同じ重要度を有する)は、4個のコンステレーション語の同じロバストレベルのビットにマッピングされている。
【0182】
ただし、巡回ブロックQB5〜QB6、QB7〜QB8、QB9〜QB10、QB11〜QB12に対して、
図34(b)で説明したフォルディングセクションパーミュテーションが行われるようにしてもよい。
【0183】
なお、
図34(a)、(b)のフォルディングセクションパーミュテーションユニットにおいて、カラム‐ロウパーミュテーションの前段に巡回ブロックQB1〜QB4のビットに対してその並び順を換える巡回ブロック内パーミュテーションを行うユニットを追加してもよい。
【0184】
本発明のさらに他の実施の形態では、ビットインターリーバは、フォルディングセクションパーミュテーション処理を行う前に、付加的にN個の巡回ブロックに対してその並び順を換える巡回ブロックパーミュテーション処理を行う。付加的に巡回ブロックパーミュテーション処理を施すビットインターリーバの一構成例を
図35に示す。
【0185】
図35に示すビットインターリーバ2300Aは、巡回ブロックパーミュテーションユニット2310と、ビットパーミュテーションユニット2010A(フォルディングセクションパーミュテーションユニット2021A〜2026Aを含む)を備える。
【0186】
図36は、
図35のビットインターリーバの一構成例を示すブロック図である。
【0187】
図36のビットインターリーバ2400Aは、巡回ブロックパーミュテーションユニット2310と、ビットパーミュテーションユニット2200A(フォルディングセクションパーミュテーションユニット2201A〜2206Aを含む)を有する。
【0188】
フォルディングセクションパーミュテーションユニット2201A〜2206Aは、それぞれ、カラム‐ロウパーミュテーションユニット2131A〜2136Aを備える。カラム‐ロウパーミュテーションユニット2133A〜2136Aは、それぞれ、カラム‐ロウパーミュテーションユニット2133A〜2132Aと実質的に同じパーミュテーション処理を行う。
【0189】
なお、
図35、
図36のビットインターリーバにおいて、巡回ブロックパーミュテーションの前段または後段に巡回ブロックQB1〜QB12のビットに対してその並び順を換える巡回ブロック内パーミュテーションを行うユニットを追加してもよい。
【0190】
以下、条件1A、条件2Aを満たすビットインターリーブ処理を行うビットインターリーバを含むトランスミッタの一構成例について
図37を用いて説明する。
【0191】
図37は、本発明のさらに他の実施形態に係るトランスミッタの一構成例を示すブロック図である。
図37に示すトランスミッタ2500Aは、
図25のトランスミッタ2500のビットインターリーバ2520がビットインターリーバ2520Aに置き換わった構成である。
【0192】
ビットインターリーバ2520Aは、LDPCエンコーダ2510からQC−LDPC符号の符号語を受け取る。この符号語は、N=12個の巡回ブロックからなり、各巡回ブロックはQ=8個のビットからなる。そして、ビットインターリーバ2520Aは、符号語のビットに対してその並び順を換えるビットインターリーブ処理を施す。ビットインターリーバ2520Aは、ビットインターリーブ処理が施された符号語を、それぞれM=4個のビットよりなり、それぞれが2
M=16個の所定のコンステレーションポイントのいずれか1つを示す複数のコンステレーション語に分割してコンステレーションマッパ2530へ出力する。ただし、ビットインターリーバ2520Aは、ビットインターリーブ処理として、例えば
図32から
図34で説明した、または、その変形として説明したビットパーミュテーション処理を行う(F=1を除く)。または、ビットインターリーバ2520Aは、ビットインターリーブ処理として、ビットパーミュテーション処理に加えて(F=1を除く)、例えば
図35および
図36で説明した、または、その変形として説明した巡回ブロックパーミュテーション処理を追加的に行ってもよい。
【0193】
以下、条件1A、条件2Aを満たすビットインターリーブ処理を施すビットインターリーバを含むトランスミッタからの信号を受信するレシーバについて図面を用いて説明する。
【0194】
図38は、本発明のさらに他の実施の形態に係る非反復BICMデコーダを有するレシーバの一構成例を示すブロック図である。レシーバは、トランスミッタと逆の動作を行う。
図38に示すレシーバ2700Aは、
図27のレシーバ2700のビットデインターリーバ2730がビットデインターリーバ2730Aに置き換わった構成である。
【0195】
ビットデインターリーバ2730Aは、コンステレーションデマッパ2720から出力されるソフトビット列に対して、トランスミッタ2500A内のビットインターリーバ2520Aがビット列に対して施したビットインターリーブ処理を打ち消して元の並びに戻すインターリーブ処理(ビットデインターリーブ処理)を行う。
【0196】
図39は、本発明のさらに他の実施の形態に係る非反復BICMデコーダを有するレシーバの一構成例を示すブロック図である。レシーバは、トランスミッタと逆の動作を行う。
図39に示すレシーバ2800Aは、
図28のレシーバ2800のビットデインターリーバ2730およびビットインターリーバ2750がビットデインターリーバ2730Aおよびビットデインターリーバ2750Aに置き換わった構成である。
【0197】
ビットインターリーバ2750Aは、外部情報(extrinsic information)に対して、トランスミッタ2500A内のビットインターリーバ2520Aがビット列に対して施したビットインターリーブ処理と同じインターリーブ規則のインターリーブ処理を行う。
【0198】
ハードウェアの実装の観点から、例えば、フォルディングは1つのコンステレーション語のビットがより少ないLLRメモリロケーションに配置されるようにしてもよい。通常、デコーダにおけるLLRメモリは、G×N個のアドレス指定可能なロケーションを有し、各ロケーションはQ/G個のLLR値を保持することが可能になっている。Gは、Qの約数である実装パラメータであり、メモリ粒度(granularity)と称する。デコーダ内のLLRメモリロケーションと、M=4、F=2、Q=12、G=1〜12に対応する1番目のコンステレーション語のLLR値の配置箇所を
図40に示す。
【0199】
メモリロケーションにおけるLLR値の数、すなわち、Q/Gは、Fの倍数である必要があり、各コンステレーションのLLR値が、メモリの全ロケーションにおいて同じ位置に格納される。これは、いずれのコンステレーション語におけるLLR値も、M/F個のメモリロケーションに格納されることを保証する。これに反する例が
図40のG=4に示され、各メモリロケーションは12/4=3個のLLR値を格納する。2番目と5番目のコンステレーション語のLLR値は2つのメモリロケーションの代わりに4つのメモリロケーションに保持される。
【0200】
F=2のフォルディングが適用される得る単純なQAMコンステレーションの場合に加えて、2以上のコンステレーションシンボルが結合復号(jointly decode)されるときにフォルディングは非常に有用である。結合復号は、例えば、ブロック符号(時空間符号、周波数空間符号など)の最尤復号または2次元以上の回転コンステレーションに対して必要となる。
【0201】
一般に、ブロック符号は、2以上の入力シンボル(x
1、・・・、x
K)を2以上の出力シンボル(y
1、・・・、y
L)に符号化する。ここで、LはK以下である。ブロック符号は、L行K列の生成行列によってモデル化される。ここで、入力信号ベクトルXに生成行列Gを左乗算することによって、出力信号ベクトルYが得られる(Y=GX)。
【0202】
入力信号ベクトルXおよび出力信号ベクトルYの要素は、生成行列Gの要素と同じく、実数または複素数となり得る。符号の種類によっては、出力信号ベクトルYは、異なる時間スロット或いは異なる周波数スロットで送信され、異なるアンテナを用いて送信され、又は、異なる時間スロット或いは異なる周波数スロットおよび異なるアンテナを用いて送信されることがある。
【0203】
レシーバでは、入力信号ベクトルXの全要素の復号のために、最尤復号が要求される。MIMO(multiple-input multiple-output)通信システム用のブロック符号として、アラモウチ(Alamouti)符号、Golden符号、および空間多重が挙げられる。
【0204】
K個のシンボルが同じブロックに符号化されている場合、フォルディング係数はKまで使用可能であることは明らかである。さらに、シンボルがQAMシンボル(2つの分離可能なPAMシンボルを含む)ならば、使用可能なフォルディング係数は2×Kまで増加し得る。
【0205】
本発明のさらに他の実施形態によれば、異なるサイズのコンステレーション、すなわち、ハイブリッドコンステレーションが結合符号化されている場合には、2つのコンステレーションは互いに異なるロバストレベルを有しているので、例えば、一方のコンステレーション語のビットにマッピングする巡回ブロックと他方のコンステレーション語のビットにマッピングする巡回ブロックは互いに異なるようにする。
【0206】
ここで、2つの送信アンテナを用いた符号空間多重MIMOシステムを例に挙げて説明する。符号化前の複素信号をX=[x
1 x
2]とする。ここでx
1はQPSKが施された信号であり、x
2は16QAMが施された信号である。符号化後の複素信号をY=[y
1 y
2]とする。ここでy
1およびy
2はそれぞれ第1アンテナおよび第2アンテナにより送信される信号である。Yは、Xに2行2列の生成行列G(要素は、実数でも複素数でもよい)を左乗算することにより得られる(Y=GX)。
【0207】
例えば、QPSKシンボルと16QAMシンボルとを同じブロック符号に多重化する場合、フォルディング係数F=2に対するマッピングの一例を
図41に示す。
図41では、巡回ブロックにおける最初の7ビットだけを示している。2つの複素シンボルx
1およびx
2は次のような構造を有する。
【0208】
x
1は実数部がb1、虚数部がb2で与えられるQPSKシンボルである。
【0209】
x
2は実数部がb3、b4、虚数部がb5、b6で与えられる16QAMシンボルである。
【0210】
2つのシンボルは、レシーバで結合復号され、これにより、いわゆるコンステレーションブロックあるいは生成されたブロックが作られる。
【0211】
全体の6ビットのコンステレーションブロックは、3つのロバストレベルを有することとなる。
【0212】
レベル1:QPSKのb1とb2はQB1にマッピングされる。
【0213】
レベル2:16QAMのb3とb5はQB2にマッピングされる。
【0214】
レベル3:16QAMのb4とb6はQB3にマッピングされる。
【0215】
なお、一方のコンステレーションのビット数をM1、他方のコンステレーションのビット数をM2とした場合、N個の巡回グループを、M1個の巡回ブロックからなる1以上のグループと、M2個の巡回ブロックからなる1以上のグループに分割して、ビットインターリーブ処理を施す。
【0216】
≪実施の形態(その3)≫
以下、NがMの倍数ではなく、フォルディングを行う場合のインターリーバの一例について記載する。
【0217】
図42は、一例として、F=2のインターリーブ処理を適用する適用対象の巡回ブロックと適用しない適用対象外の巡回ブロック(除外される巡回ブロック)を示す図である。但し、
図42は、符号がDVB−T2規格で定義されている16K LDPC符号であり、コンステレーションが16QAMコンステレーションである場合に対する図である。
図42の例では、適用対象の巡回ブロックは44個の巡回ブロック(1、・・・、44)であり、適用対象外の巡回ブロック(除外される巡回ブロック)はその最終行の1個の巡回ブロック45のみである。また、4個の黒四角が1番目のコンステレーション語の4ビットを表す。
【0218】
図43は、NがMの倍数ではなく、フォルディングを行う場合のビットインターリーバの一構成例を示すブロック図である。説明を簡単にするために、N=13、Q=8、M=4、F=2とする。
【0219】
フォルディングセクション数はfloor(N/(M/F))=6、除外される巡回ブロック数はrem(N、M/F)=1である。
【0220】
ビットインターリーバ2000Bは、巡回ブロックQB1〜QB13のうち、13−1=12個の巡回ブロックQB1〜QB12を条件A1、条件A2を満たすインターリーバを適用する巡回ブロックに選択する。そして、ビットインターリーバ2000B内のビットパーミュテーションユニット2010Aは選択した12個の巡回ブロックに対して
図32を用いて説明したパーミュテーション処理を行う。なお、巡回ブロックQB13のビットは、インターリーブされずにコンステレーション語にマッピングされるようになっているが、インターリーブしてからコンステレーション語にマッピングされるようにしてもよい。
【0221】
なお、NがMの倍数ではなく、フォルディングを行わないインターリーバの一例として、
図43のビットパーミュテーションユニット2010Aを
図20のビットパーミュテーションユニット2010に置き換えた構成を挙げることができる。
以下、表3で説明したDVB−T2規格で用いられるLDPC符号に対する、セクションパーミュテーションの具体例について説明する。
(例1A)N=45,Q=360,M=4,フォルディングなし(F=1)の場合
図44(a)は、N=45,Q=360,M=4でフォルディングなし(F=1)の場合の、セクションパーミュテーションの構造を示す図である。
【0222】
ビットインターリーバ4400Aは、45個の巡回ブロックQB1〜QB45のうち、44個の巡回ブロックQB1〜QB44を選択してサブセットとする。
【0223】
サブセットは、それぞれ4個の巡回ブロックからなるセクション1〜11までの11個のセクションに分けられる。例えば、セクション1は巡回ブロックQB1〜QB4から構成され、セクション11は、巡回ブロックQB41〜QB44から構成される。
【0224】
ビットインターリーバ4400A内の11個のセクションパーミュテーションユニット(4401、・・・、4411)は、それぞれ4個ずつの巡回ブロックに対して
図32を用いて説明したパーミュテーション処理を行う。
【0225】
なお、巡回ブロックQB45のビットは、インターリーブされずにコンステレーション語にマッピングされるようになっている。
(例1B)N=45,Q=360,M=4でフォルディングあり(F=2)の場合
図44(b)は、N=45,Q=360,M=4でフォルディングあり(F=2)の場合の、セクションパーミュテーションの構造を示す図である。
【0226】
ビットインターリーバ4400Bは、45個の巡回ブロックQB1〜QB45のうち、44個の巡回ブロックQB1〜QB44を選択してサブセットとする。
【0227】
サブセットは、それぞれ2個の巡回ブロックからなるセクション1〜22までの22個のセクションに分けられる。
【0228】
ビットインターリーバ4400B内の22個のセクションパーミュテーションユニット(4421、4422、・・・、4442)は、それぞれ2個ずつの巡回ブロックに対して
図32を用いて説明したパーミュテーション処理を行う。
【0229】
なお、巡回ブロックQB45のビットは、インターリーブされずにコンステレーション語にマッピングされるようになっている。
【0230】
(例2A)N=45,Q=360,M=6でフォルディングなし(F=1)の場合
図45(a)は、N=45,Q=360,M=6でフォルディングなし(F=1)の場合の、セクションパーミュテーションの構造を示す図である。
【0231】
ビットインターリーバ4500Aは、45個の巡回ブロックQB1〜QB45のうち、42個の巡回ブロックQB1〜QB42を選択してサブセットとする。
【0232】
サブセットは、それぞれ6個の巡回ブロックからなるセクション1〜7までの7個のセクションに分けられる。例えば、セクション1は巡回ブロックQB1〜QB6から構成され、セクション7は、巡回ブロックQB37〜QB42から構成される。
【0233】
ビットインターリーバ4500A内の7個のセクションパーミュテーションユニット(4501、・・・、4507)は、それぞれ6個ずつの巡回ブロックに対して
図32を用いて説明したパーミュテーション処理を行う。
【0234】
巡回ブロックQB43〜QB45は、サブセットに含まれない巡回ブロックである。
【0235】
巡回ブロックQB43,QB44のビットは、インターリーブされずにコンステレーション語にマッピングされるようになっている。
【0236】
これに対して、巡回ブロックQB45のビットは、巡回ブロック内パーミュテーションユニット4545により、その並び順を換える巡回ブロック内パーミュテーション処理が施される。
【0237】
つまり、巡回ブロックQB43,QB44のビットは、サブセットに含まれず、ビットの並び順を換える対象とされないままにされている。これに対して、巡回ブロックQB45のビットは、同じくサブセットには含まれないが、セクションパーミュテーションユニット(4501、・・・・、4507)からは独立した(separate)巡回ブロック内パーミュテーションユニット4545により、並び順が換えられている。
【0238】
なお、
図45(a)の例では、巡回ブロックQB43〜QB45のうちで、巡回ブロックQB45だけを並び換えるとしているが、巡回ブロックQB43〜QB45の全ビットに対してパーミュテーションを施してもよい。また、巡回ブロックQB43〜QB45においてそれぞれ巡回ブロック内パーミュテーションを施しても構わない。
【0239】
(例2B)N=45,Q=360,M=6でフォルディングあり(F=2)の場合
図45(b)は、N=45,Q=360,M=6でフォルディングあり(F=2)の場合の、セクションパーミュテーションの構造を示す図である。
【0240】
ビットインターリーバ4500Bは、45個の巡回ブロックQB1〜QB45のすべてを選択してサブセットとして構成している。
【0241】
サブセットは、それぞれ3個の巡回ブロックからなるセクション1〜15までの15個のセクションに分けられる。
【0242】
ビットインターリーバ4500B内の15個のセクションパーミュテーションユニット(4511、・・・、4526)は、それぞれ3個ずつの巡回ブロックに対して
図32を用いて説明したパーミュテーション処理を行う。
【0243】
≪実施の形態(その4)≫
ここまで、効率的なビットインターリーブ方法について説明してきた。ところで、LDPC復号処理における無効検査ノードの存在は誤り訂正能力を低下させる可能性がある。発明者らは、上記ビットインターリーブ方法において、無効検査ノードの発生を抑制する方法について更なる知見を得た。以下、無効検査ノードがどのように発生するか、そして、これをどのように解消するかを説明する。
無効検査ノードは、同じ検査ノードにつながる2以上のLDPCの変数ノードが、同じコンステレーションからマッピングされる場合に発生する。仮に、コンステレーションが深い歪の影響を受けている場合、コンステレーションデマッパの出力である関連するLLR値は、極小または0になる。
仮に、2以上の変数ノードが、同じ検査ノードに連結しており、当該検査ノードのLLR値が0あるいは非常に小さい値である場合、この検査ノードを誤り訂正処理に使用することができなくなるので、少なくとも、第1のLDPC復号の反復処理では、結果的に、値の収束が遅くなる。このような検査ノードを、無効検査ノードと呼称する。
以下においては、どのような場合に、そのような無効検査ノードが発生するのかを、具体例を示しながら説明する。
図5に示す、パリティチェック行列によって定義されるLDPC符号の、
図5の上から3つ目の巡回ブロックの検査ノード(検査ノードCN17〜CN24を参照のこと)を考えてみる。
図46においては、パリティ検査ノード17〜24に連結されている変数ノードがハイライトされている。即ち、検査ノードと変数ノードとが連結されている部分のみ黒四角で表現している。
このコネクションは、並列構造と巡回パーミュテーションとがより明瞭に理解できるように、
図47に示すように記載することができる。8つの検査ノードそれぞれは、巡回パーミュテーションを通して、8つの変数ノードに接続される。ここで、巡回パーミュテーションは、パリティチェック行列の巡回シフト対数に関連する。例えば、
図47において、3番目の巡回ブロック(QB3)の各ビットは、検査ノードに2回連結されている。
図47においては、最初の検査ノード(CN17参照)と変数ノードとのコネクションがハイライト(太線で記載)されている。なお、このハイライトは、単に検査ノード17と変数ノードとのコネクションをわかりやすくするためのものであり、検査ノード17に特別な意味があるわけではない。
【0244】
上述の通り、
図46と
図47とは対応関係にあり、例えば、
図46においては、検査ノード17(CN17、
図46の行列の上から17行目)と、2つ目の巡回ブロック(QB2、
図46の行列の左から9〜16列目に対応)の変数ノードとでは、QB2の右端の変数ノード(
図46の行列の左から16列目)と検査ノード17と連結されている(
図46の行列の上から17行目、左から16列目が黒四角になっている)ことがわかる。一方、
図47においても検査ノード17(左端の黒四角)と、2つ目の巡回ブロック(QB2)の右端の変数ノード(黒丸)が連結されている。
検査ノード17〜24に接続される8つの巡回ブロックについて、
図48(a)〜
図48(h)は、マッピングの1つの見方を示している。
図48(a)〜
図48(h)の各図面は、各検査ノード17〜24に連結している変数ノードをハイライトしている。
図48(a)〜
図48(h)それぞれにおいて、一つの四角は、各巡回ブロックの各変数ノードを示しており、検査ノードに連結している変数ノードは黒四角で示している。また、
図47において、検査ノード17と変数ノードとのコネクションをハイライトしているが、
図48(a)においても同様の連結関係をもっており、
図48(a)と
図47においてハイライトした内容とが対応していることがわかる。
以下では、無効検査ノードが発生する場合の2つの事例を示す。なお、ここに示すのは、一例である。
図49(a)〜
図49(h)は、第1の事例を示している。
図49(a)〜
図49(h)では、
図48(a)〜
図48(h)に示したマッピングを基に、16QAMのコンステレーションに、フォルディング係数Fを2として、QB14とQB15とがマッピングされている例を示している。
図49(a)〜
図49(h)の太線で囲われた4つの四角が1つのコンステレーションに対応する。
図49(a)〜
図49(h)の場合、歪(フェージング)の影響を深く受けたコンステレーション各々は、2つの検査ノードを無効にしてしまう。歪の影響を受けた各コンステレーションに応じて、無効となる検査ノードは、以下の通りである。
・C1が歪の影響を受けた場合:検査ノード17、18(
図49(a)、(b)参照)
・C2が歪の影響を受けた場合:検査ノード19、20(
図49(c)、(d)参照)
・C3が歪の影響を受けた場合:検査ノード21、22(
図49(e)、(f)参照)
・C4が歪の影響を受けた場合:検査ノード23、24(
図49(g)、(h)参照)
図50(a)〜
図50(h)は、第2の事例を示している。
図50(a)〜
図50(h)では、
図48(a)〜
図48(h)に示したマッピングを基に、16QAMのコンステレーションに、フォルディング係数Fを2として、QB4とQB5とがマッピングされている例を示している。
図50(a)〜
図50(h)の太線で囲われた4つの四角が1つのコンステレーションに対応する。
図50(a)〜
図50(h)の場合、歪(フェージング)の影響を深く受けたコンステレーション各々は、1つの検査ノードを無効にしてしまう。歪の影響を受けた各コンステレーションに応じて、無効となる検査ノードは、以下の通りである。
・C1が歪の影響を受けた場合:検査ノード21(
図50(e)参照)
・C2が歪の影響を受けた場合:検査ノード23(
図50(g)参照)
・C3が歪の影響を受けた場合:検査ノード17(
図50(a)参照)
・C4が歪の影響を受けた場合:検査ノード19(
図50(c)参照)
無効検査ノードの発生は、同じ検査ノードに連結されている複数の変数ノードを同じコンステレーションにマッピングすることを避けることで抑制できる。これは、並列ビットインターリーブにおいては、巡回ブロック内のビットに対して更なるパーミュテーションを施すことで、実現できる。この無効検査ノードの発生を抑制するためのパーミュテーションを、以降、巡回ブロック内パーミュテーションと呼称する。また、巡回ブロック内パーミュテーションは、基本的に適用する巡回ブロックに応じて異なるものとなる。
巡回ブロック内パーミュテーションは、1以上の巡回シフトにより実現すると構成の実現が容易である。1回だけの巡回シフトの場合、LDPCデコーダに構成された(再構成可能な)ローテータと逆ローテータを再利用することができ、これにより、回路の複雑度を抑制することができる。
図51(a)および
図51(b)は、それぞれ、Q=8とした場合であって、巡回ブロックについて1回シフトおよび2回シフトを実行する巡回ブロック内インターリーバの構成を示している。
図51(a)および
図51(b)に示すように、当該巡回ブロック内インターリーバ(5100A、5100B)は、各巡回ブロックに対して実行するシフトのシフト値を保持するテーブルB(5101A、5101B)と、1又は2の再構成可能なローテータ(5102A、5102B、5103B)からなる。巡回ブロック内インターリーバは(5100A、5100B)、どの巡回ブロックが処理対象であるかを示す巡回ブロックインデックスの入力を受け付けて、テーブルB(5101A、5101B)に示される巡回ブロックに対応するシフト値を特定し、当該シフト値をローテータに設定する。ローテータ(5102A、5102B、5103B)は、入力された巡回ブロックの各ビットを、シフト値で指定された値だけ巡回シフトさせて、シフト後のビット列(巡回ブロック内パーミュテーションが施された巡回ブロック)を出力する。巡回ブロック内インターリーバは、
図21(b)や
図24に示す巡回ブロック内パーミュテーションに相当する。なお、ここでテーブルB(5101A、5101B)に示されるシフト値は、ビット列の右方向に、検査ノードに連結している変数ノードが同じコンステレーションにマッピングされることを回避できる値が記憶されているものとする。
図49(a)〜
図49(h)および
図50(a)〜
図50(h)を参照すると、これらの場合では、シフト値を以下のように設定することで、無効検査ノードの発生を抑制することができる。即ち、
図49(a)〜
図49(h)それぞれについて、QB14に対して、シフト値を2に設定し、右方向に2巡回シフトさせればよい。また、
図50(a)〜
図50(h)のQB4に対して、シフト値を3に設定し、右方向に3巡回シフトさせればよい。このような巡回シフトを、
図49(a)〜
図49(h)および
図50(a)〜
図50(h)にそれぞれ施した結果を、
図52(a)〜
図52(h)および
図53(a)〜
図53(h)に示す。なお、ここでは、実現が容易な例として、
図50(a)〜
図50(h)のQB4全てに対して右方向に3ビット巡回シフトさせる構成を示しているが、
図50(b)、
図50(d)、
図50(f)、
図50(h)については、元々検査ノードに連結する変数ノードが異なるコンステレーションにマッピングされているため、巡回ブロック内パーミュテーションを施さなくともよい。
なお、巡回シフトが必要ない巡回ブロックが入力された場合には、シフト値としては、0が設定され、巡回シフトされることなく入力されたビット列がそのまま出力される。
したがって、LDPC符号における無効検査ノードの数は、各巡回ブロックに対して、適切なパーミュテーションを施すことで、最小限に抑制することが可能である。当然に、巡回ブロック内パーミュテーションは、LDPC符号が変更される度―例えば、採用している符号のPCMが変更された場合など―に、最適化する必要がある。この巡回ブロック内パーミュテーションを実現するにあたって、予め定められた複数のPCMからなるPCMの(限定された)セット(種別)の各PCMに応じた最適なパーミュテーション方法(あるいはシフト値などのパラメータ。当該パラメータは、実質的にパーミュテーション手法と同義である)を予め記憶しておくと有効である。上述の
図51(a)におけるテーブルBの保持が、このパーミュテーション方法の記憶に該当する。これによって、例えば、符号化率などが変更されてPCMが変更された場合に、適切なパラメータを有するセットを選択することで、最適なパーミュテーション手法に変更できる。なお、PCMあるいは予め定められたPCMのセットそれぞれに対して最適な巡回ブロック内パーミュテーションは、既知の最適化処理、例えば、総当たり攻撃(brute force)、焼きなまし法(simulated annealing)、モンテカルロ法(Monte-Carlo)などにより導出することができる。
図54は、
図24と同様に、フォルディング係数を2に設定した場合の並列ビットインターリーバ5400における巡回ブロック内パーミュテーション5410の機能構成を示す概念図である。動作内容については、
図54と
図24との差異は、フォルディング係数を4から2にしただけで、セクションパーミュテーションが2巡回ブロック分で実行される以外は、
図24の場合と同様であるので、説明を割愛する。また、受信については、この
図54に示される各矢印が逆方向になり、それぞれのユニットが実行される処理が送信側で実行される内容とは逆の処理が実行されるだけであるので、詳細な説明を割愛する。
図55は、本実施の形態(その4)に係るQ=8、M=4、F=2とした場合のBICMエンコーダの一実装例を示すブロック図である。
【0245】
図55に示すようにBICMエンコーダ5500は、メインメモリ5501、LDPCコントローラ5511、ローテータ5512、検査ノードプロセッサ群5513、デローテータ5514、QBカウンタ5531、QBパーミュテーションテーブル5532、インターリーバ5533、レジスタ群5534、インターリーバ5535、QBシフトテーブル5536、およびマッパ群5551を備える。
【0246】
図26と比較すればわかるように、
図55に示すBICMエンコーダは、フォルディング係数を2としたことにより、レジスタ群5534の個数およびマッパ群5551の個数が4から2に減じたこと以外に、テーブルAに換えてQBパーミュテーションテーブル5532、QBシフトテーブル5536を保持している点が異なる。以下、
図26との差異について説明し、それ以外の構成については、
図26と共通するので、説明を割愛する。
【0247】
QBカウンタ5531は、処理対象となる巡回ブロックの番号を、QBパーミュテーションテーブル5532に通知する。
【0248】
QBパーミュテーションテーブル5532は、
図26におけるテーブル2632と同様のルックアップテーブルである。
【0249】
QBシフトテーブル5536は、各巡回ブロックについて、ビット列を巡回シフトさせるシフト値を保持する。QBシフトテーブル5536は、QBパーミュテーションテーブル5532から通知された巡回ブロックの番号に応じて、シフト値を決定し、ローテータ(インターリーバB)5533に通知する。なお、QBシフトテーブル5536は、
図51のテ0ブルB(5101A、5101B)に相当する。
【0250】
ローテータ(インターリーバB)5533は、通知されたシフト値に従って、入力されたビット列を右方向にシフト値分だけ巡回シフトさせて、レジスタ5534に出力する。ローテータ(インターリーバB)5533は、BICMエンコーダ5500において巡回ブロック内パーミュテーションを実行する素子、即ち、
図54の巡回ブロック内パーミュテーション5410に相当する素子である。また、カラムロウインターリーバ(インターリーバC)5535は、
図54のカラムロウパーミュテーションに相当する素子であり、ここでは、8(Q)×2(M/F)個のビットを2(M/F)行8(Q)列の行列に行方向で書き込んで、列方向で読み出す処理を実行する。
図56は、本実施の形態(その4)に係るQ=8、M=4、F=2とした場合の反復BICMデコーダの一実装例を示すブロック図である。
【0251】
図56に示すように反復BICMデコーダ5600は、メインLLRメモリ5601、バッファLLRメモリ5602、LDPCコントローラ5611、ローテータ5612、検査ノードプロセッサ群5613、デローテータ5614、QBカウンタ5631、テーブル5632、減算ユニット5633、インターリーバ5634、レジスタ群5635、インターリーバ5636、デマッパ群5637、デインターリーバ5638、レジスタ群5639、デインターリーバ5640、遅延ユニット5641、およびQBシフトテーブル5642を備える。
【0252】
図29と比較すればわかるように、
図56に示す反復BICMデコーダ5600は、フォルディング係数を2としたことにより、レジスタ群5535、5539の個数およびデマッパ群5637の個数が4から2に減じたこと以外に、テーブルAに換えてQBパーミュテーションテーブル5632、QBシフトテーブル5642を保持している点が異なる。以下、
図29との差異について説明し、それ以外の構成については、
図29と共通するので、説明を割愛する。
【0253】
QBカウンタ5631は、処理対象となる巡回ブロックの番号を、QBパーミュテーションテーブル5632に通知する。
【0254】
QBパーミュテーションテーブル5632は、
図29におけるテーブルA2932と同様のルックアップテーブルである。
【0255】
QBシフトテーブル5642は、各巡回ブロックについて、ビット列を巡回シフトさせるシフト値を保持する。QBシフトテーブル5642は、QBパーミュテーションテーブル5632から通知された巡回ブロックの番号に応じて、シフト値を決定し、ローテータ(インターリーバB)5634に通知する。また、当該シフト値は、巡回ブロック内パーミュテーションのための巡回シフトによるインターリーブを基に戻すために、遅延素子5641を介して、デローテータ(デインターリーバB)5640にも通知される。なお、QBシフトテーブル5642は、
図51のテ0ブルB(5101A、5101B)に相当する。
【0256】
ローテータ(インターリーバB)5634は、QBシフトテーブル5642から通知されたシフト値に従って、入力されたビット列を巡回シフトさせて、レジスタ5635に出力する。ローテータ(インターリーバB)5634は、反復BICMデコーダ5600において巡回ブロック内パーミュテーションを実行する素子である。
【0257】
また、デローテータ(デインターリーバB)5640は、QBシフトテーブル5642から通知されたシフト値に従って、レジスタ5639から入力されたビット列を、ローテータ(インターリーバB)5634とは逆方向に巡回シフトさせて、メインLLRメモリ5601に出力する。
【0258】
なお、カラム−ロウインターリーバ(インターリーバC)5636は、
図29のインターリーバC2936に相当し、カラム−ロウデインターリーバ(デインターリーバC)5638は、
図29のインターリーバC2938に相当する。
【0259】
以上の構成を備えることにより、BICMエンコーダは、巡回ブロック内パーミュテーションを簡易な構成で実現でき、検査ノードに連結する変数ノードが複数、同じコンステレーションにマッピングされることを回避できる。これにより、検査ノードが誤り訂正に用いることができない無効検査ノードとなる可能性を低減することができる。
≪補足1≫
本発明は上記の実施の形態で説明した内容に限定されず、本発明の目的とそれに関連又は付随する目的を達成するためのいかなる形態においても実施可能であり、例えば、以下であってもよい。
【0260】
(1)上記の実施の形態(その1)では、パラメータとしてN=12、Q=8、M=4を例に挙げて説明したが、パラメータN、M、Qの値はこれに限定されるものではなく、NがMの倍数であればよい。なお、NがMの2以上の倍数である場合には、ビットインターリービングの処理を、複数のセクションに分割して実行することが可能になる。
【0261】
(2)フォルディングあり(Fが2以上の整数)の実施の形態(その2)では、パラメータとしてN=12、Q=8、M=4を、フォルディング係数としてF=2を例に挙げて説明したが、パラメータN、M、Qの値やフォルディング係数Fの値はこれに限定されるものではない。FがMおよびQのそれぞれの約数であり、NがM/Fの倍数であればよい。
【0262】
(3)フォルディングありの実施の形態(その2)では、Fの値を16QAMコンステレーションの同一のロバストレベルを有するビット数「2」として説明したが、これに限定されるものではない。Fの値はコンステレーションの同一のロバストレベルを有するビット数とする他、Fの値をコンステレーションの同一のロバストレベルのビット数以外にしてもよい。
【0263】
(4)フォルディングありの実施の形態(その2)では、フォルディング係数F=2でQAMコンステレーションが16QAMコンステレーションであるとして説明したが、これに限定されるものではなく、F=2で、QAMコンステレーションが16QAMコンステレーション以外のQAMコンステレーション(例えば、64QAMコンステレーション、256QAMコンステレーション)などであってもよい。
【0264】
(5)上記実施の形態(その4)において、テーブルB、QBシフトテーブルでは、ビット列右方向への巡回シフト値を記憶保持していることとした。しかし、これらのテーブルは、検査ノードに連結している変数ノードが複数同じコンステレーションにマッピングされるのを回避できるのであれば、シフト方向は左方向であってもよいし、シフト値は必要最低限ではなくそれ以上シフトさせてもよい。
【0265】
また、巡回シフトではなく、規則性のない巡回ブロック内パーミュテーションを実行して、1つのコンステレーションに、検査ノードに連結している変数ノードが複数発生することがないようにしてもよい。ただし、規則性のない巡回ブロック内パーミュテーションの場合、送信側から受信側にその巡回ブロック内パーミュテーションの手法を伝達するか、予め送信側と受信側とで、その規則性のない巡回ブロック内パーミュテーションについてPCMごとにどの手法を用いるか定めておく必要がある。
【0266】
(6)上記の実施形態では、コンステレーションとして16QAM(M=4)を例に挙げて説明したが、コンステレーションとして、QPSKやQAMなどのような特定の変調方式の他に、例えば、DVB−S2規格において利用される円形コンステレーションや、多次元コンステレーションなど様々な変調方式を用いることができる。
【0267】
(7)上記の実施形態で説明した方法または装置を、ソフトウェアによって実現してもよいし、ハードウェアによって実現してもよく、特定の形態に限定されるものではない。具体的には、上記の実施形態は、コンピュータ、マイクロプロセッサ、マイクロコントローラなどが上記の実施形態で説明した方法や装置のすべてのステップを実行できるようなコンピュータ実行可能命令を、コンピュータ読み取り可能媒体上で具現化した形態で実施してもよい。また、上記の実施形態は、ASIC(Application−Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)の形態で実施してもよい。
【0268】
≪補足2≫
本発明に係るインターリーブ方法、インターリーバ、デインターリーブ方法、デインターリーバ、およびデコーダとその効果について説明する。
【0269】
本発明の一態様である第1のビットインターリーブ方法は、疑似巡回低密度パリティチェック符号を用いる通信システムにおけるビットインターリーブ方法であって、それぞれがQ個のビットからなるN個の巡回ブロックで構成される前記疑似巡回低密度パリティチェック符号の符号語を受信する受信ステップと、前記符号語に対して当該符号語のビットの並び順を換えるビットパーミュテーション処理を施すビットパーミュテーションステップと、ビットパーミュテーション処理が施された符号語を、それぞれM個のビットからなり、それぞれが2
M個の所定のコンステレーションポイントのいずれか1つを示す複数のコンステレーション語に分割する分割ステップと、前記巡回ブロックに対して当該巡回ブロックのビットの並び順を換える巡回ブロック内パーミュテーション処理を施す巡回ブロック内パーミュテーションステップとを含み、前記分割ステップは、前記ビットパーミュテーション処理が施された符号語を、それぞれM/F(Fは正の整数)個の巡回ブロックからなるF×N/M個のセクションに分割した上で、各コンステレーション語がいずれか1つのセクションに関連付けられるように、コンステレーション語に分割し、前記ビットパーミュテーション処理は、各コンステレーション語が、関連付けられている前記セクション中のM/F個の前記パーミュテーション処理後の巡回ブロックからF個ずつ抽出したビットから構成されるように施されることを特徴とする。
【0270】
本発明の一態様である第1のビットインターリーバは、疑似巡回低密度パリティチェック符号を用いる通信システムのためのビットインターリーバであって、それぞれがQ個のビットからなるN個の巡回ブロックで構成される前記疑似巡回低密度パリティチェック符号の符号語を受信し、前記符号語に対して当該符号語のビットの並び順を換えるビットパーミュテーション処理を施すビットパーミュテーション部と、ビットパーミュテーション処理が施された符号語を、それぞれM個のビットからなり、それぞれが2
M個の所定のコンステレーションポイントのいずれか1つを示す複数のコンステレーション語に分割する分割部と、前記巡回ブロックに対して当該巡回ブロックのビットの並び順を換える巡回ブロック内パーミュテーション処理を施す巡回ブロック内パーミュテーション部とを含み、前記分割部は、前記ビットパーミュテーション処理が施された符号語を、それぞれM/F(Fは正の整数)個の巡回ブロックからなるF×N/M個のセクションに分割した上で、各コンステレーション語がいずれか1つのセクションに関連付けられるように、コンステレーション語に分割し、前記ビットパーミュテーション処理は、各コンステレーション語が、関連付けられている前記セクション中のM/F個の前記パーミュテーション処理後の巡回ブロックからF個ずつ抽出したビットから構成されるように施される。
【0271】
ここで、分割とは、上述の実施の形態においては、BICMエンコーダ、BICMデコーダが実行するものであり、メインメモリ、メインLLRメモリからの巡回ブロック分のビット列の読み出しが相当する。
【0272】
これらによれば、高い並列性を持つビットインターリーブ処理の実施が可能になるのに加えて、回路面積および消費電力の削減が達成される。また、巡回ブロック内パーミュテーションを実行することにより、検査ノードが、受信側における誤り訂正に利用できない無効検査ノードとなる可能性を低減できる可能性が高まる。
本発明の一態様である第2のビットインターリーブ方法は、第1のビットインターリーブ方法において、前記巡回ブロック内パーミュテーションは、QC‐LDPC符号の共通の検査ノードにつながる符号語のビットが、それぞれ異なるコンステレーション語にマッピングされるように行われる。
【0273】
また、本発明の一態様である第2のビットインターリーバは、第1のビットインターリーバにおいて、前記巡回ブロック内パーミュテーションは、QC‐LDPC符号の共通の検査ノードにつながる符号語のビットが、それぞれ異なるコンステレーション語にマッピングされるように行われる。
【0274】
これによれば、検査ノードが、受信側における誤り訂正に利用できない無効検査ノードとなる可能性を低減できることを保証できる。
本発明の一態様である第3のビットインターリーブ方法は、第2のビットインターリーブ方法において、前記巡回ブロックに対して施される巡回ブロック内パーミュテーションの少なくとも一つは、少なくとも巡回ブロックを構成するビット列のサブセットに対して、巡回シフトさせることである。
【0275】
また、本発明の一態様である第3のビットインターリーバは、第2のビットインターリーバにおいて、前記巡回ブロックに対して施される巡回ブロック内パーミュテーションの少なくとも一つは、少なくとも巡回ブロックを構成するビット列のサブセットに対して、巡回シフトさせることである。
【0276】
これによれば、巡回シフトという簡易な構成で、巡回ブロック内パーミュテーションを実現できる。
本発明の一態様である第4のビットインターリーブ方法は、第1のビットインターリーブ方法において、更に、セクションを構成するQ×M/Fビットを、M/F行Q列の行列に行方向で書き込み、列方向で読み出すことで実現されるカラム‐ロウパーミュテーションを、各セクションを構成するQ×M/Fビットに対して施すカラム‐ロウパーミュテーションステップを含む。
【0277】
また、本発明の一態様である第4のビットインターリーバは、第1のビットインターリーバにおいて、更に、セクションを構成するQ×M/Fビットを、M/F行Q列の行列に行方向で書き込み、列方向で読み出すことで実現されるカラム‐ロウパーミュテーションを、各セクションを構成するQ×M/Fビットに対して施すカラム‐ロウパーミュテーション部を含む。
本発明の一態様である第5のビットインターリーブ方法は、第1のビットインターリーブ方法において、更に、各巡回ブロックに対して、通信システムにおいて採用されている特定のQC−LDPC符号に応じて決定される巡回ブロック内パーミュテーション方法であって、予め定めた複数の巡回ブロック内パーミュテーション方法の中から1つの巡回ブロック内パーミュテーション方法を選択する選択ステップを含む。
【0278】
また、本発明の一態様である第5のビットインターリーバは、第1のビットインターリーバにおいて、更に、各巡回ブロックに対して、通信システムにおいて採用されている特定のQC−LDPC符号に応じて決定される巡回ブロック内パーミュテーション方法であって、予め定めた複数の巡回ブロック内パーミュテーション方法の中から1つの巡回ブロック内パーミュテーション方法を選択する選択部を含む。
【0279】
これにより、PCMに応じて定まる巡回ブロック内パーミュテーションの手法を、一意に特定して、エンコードが実現できる。
本発明の一態様である第1のビットデインターリーブ方法は、QC‐LDPC符号の通信システムにおけるビットストリームのビットデインターリーブ方法であって、N・Qビットから成るビット列を受信する受信ステップと、受信した前記ビット列に対して、QCLDPC符号の符号語を復元するために、請求項1記載のビットインターリーブ方法と逆手順の処理を施す逆ビットパーミュテーションステップとを含むことを特徴とする。
【0280】
本発明の一態様である第1のビットデインターリーバは、QC‐LDPC符号の通信システムにおけるビットストリームのビットデインターリーバであって、N・Qビットから成るビット列を受信する受信し、受信した前記ビット列に対して、QCLDPC符号の符号語を復元するために、請求項7記載のビットインターリーバと逆手順のビットパーミュテーション処理を施す逆ビットパーミュテーション部とを含むことを特徴とする。
【0281】
本発明の一態様である第1のデコーダは、疑似巡回低密度パリティチェック符号を用いるビットインターリーブおよび変調システムのためのデコーダであって、対応するビットが0であるか1であるかの可能性を示すソフトビット列を生成するコンステレーションデマッパと、クレーム12記載の前記ソフトビット列をデインターリーブするデインターリーバと、デインターリーブされた前記ソフトビット列をデコードする低密度チェックパリティチェックデコーダとを備えることを特徴とする。
【0282】
本発明の一態様である第2のデコーダは、第1のデコーダにおいて、前記低密度パリティチェックデコーダの入力と出力との差分を算出する減算器と、上記第1のインターリーバであって、前記差分をコンステレーションデマッパにフィードバックするインターリーバとを備える。
【0283】
これらによれば、高い並列性を持つビットデインターリーブ処理の実施が可能になる。