本発明の実施形態に係る復号装置について、図面を参照しながら説明する。
(実施形態1)
図1(a)は、デジタル通信システム1の構成を示すブロック図である。本実施形態におけるデジタル通信システム1は、無線送信装置001と無線受信装置002とから構成され、無線送信装置001は、符号化部001Aと、変調部001Bと、無線通信部001Cとから構成される。
なお、本実施形態では、M行xN列のパリティ検査行列HMNにより定義されるLDPC符号により符号化された符号データを、sum−product復号又はmin−sum復号(以下、特に区別する必要が無い場合は、LDPC復号という)により、繰り返し復号する場合について、以下に説明する。
符号化部001Aは、M行xN列のパリティ検査行列HMNにより定義されるLDPC符号により、入力された情報データDを、符号化し、生成されたNビットの符号語(以下、フレームデータFk)ごとに変調部001Bへ順次出力する。
変調部001Bは、符号化部001Aにから順次入力された、フレームデータFk(k=1,2,…,K;Kは任意の数)を所定の信号方式へ変調する。無線通信部001Cは、アンテナと無線通信モジュール等から構成され、変調後のフレームデータFkを増幅して通信路CHへ順次出力する。通信路CHにおいて、出力された変調後のフレームデータFkにノイズ成分が付加され、ノイズ成分が付加されたフレームデータFkが無線受信装置002により順次受信される。
無線受信装置002は、図1(a)に示すように、無線通信部002Aと、復調部002Bと、復号部002Cとから構成される。無線通信部002Aは、アンテナと無線通信モジュール等から構成され、無線送信装置001の無線通信部001Cにより出力され、通信路CHにおいてノイズ成分が付加されたフレームデータFkを順次受信する。
復調部002Bは、無線通信部002Aが受信したフレームデータFkを順次復調し、復調後のフレームデータFkは、復号部002Cに順次入力される。ここで、復調部002Bにより、第k番目に復号部002Cへ入力されるフレームデータFkを受信データFkということとする。
復号部002Cは、図1(b)に示すように、記憶部002C1と、復号処理部002C2と、を備える。
記憶部002C1は、ROM(Read Only Memory)、RAM(Random Access Memory)などから構成され、フレームデータ記憶部002C1aとして機能すると共に、復号処理部002C2を構成するCPU(Central Processing Unit)のワーキングエリア、CPUが実行する動作プログラムを格納するプログラムエリア、各種の算出式とパリティ検査行列HMNと後述する信頼度閾値γ1などの各種データを格納するデータエリア、などとして機能する。
フレームデータ記憶部002C1aは、復号処理部002C2の制御により、復調部002Bから順次入力される受信データFkを格納する。
復号処理部002C2は、CPUなどから構成され、CPUは記憶部002C1に格納されている動作プログラムを実行することで、図1(b)に示すように、低信頼度ノード検出部002C2aと、除外ノード検出部002C2bと、チェックノード処理部002C2cと、変数ノード処理部002C2dと、ビット推定部002C2eと、繰り返し回数判定部002C2fと、判定部002C2gと、推定ビット出力部002C2hとしての機能を実現する。
また、復号処理部002C2は、各機能部の制御処理を実行すると共に、フレームデータ記憶部002C1aに格納されている受信データFk(k=1,2,…,K)を順次読み出して、LPDC復号による復号処理を実行する。復号処理部002C2により読み出された処理対象の受信データFkは、低信頼度ノード検出部002C2aと、チェックノード処理部002C2cと、変数ノード処理部002C2dへ入力される。また、復号処理部002C2は、記憶部002C1から復号処理に必要な算出式などのデータを読み出して復号処理部002C2専用のレジストリに格納する。
LPDC復号は、タナーグラフと呼ばれる2部グラフ上でのメッセージパッシングアルゴリズムとして考えることができる。例えば、LPDC符号を定義するパリティ検査行列HMNが、図2(a)に示すような4行8列のパリティ検査行列だとすると、パリティ検査行列HMNを、図2(b)に示すような2部グラフで表現することができる。図中の、変数ノードbn(n=1,2,…,8)は、パリティ検査行列HMNの列に、チェックノードcm(m=1,…,4)は、パリティ検査行列HMNの行に、ノード間を結ぶエッジは、パリティ検査行列HMNの成分1に、それぞれ対応する。
例えば、図2(a)に示す、点線の丸で囲まれたパリティ検査行列HMNの成分1は、図2(b)に示す、変数ノードb6とチェックノードc2との間を結ぶ点線で表したエッジに対応する。つまり、パリティ検査行列HMNの第2行目に対応するチェックノードc2とエッジで結ばれる変数ノードは、パリティ検査行列HMNの第2行目において成分1を有する、第2列(第2ビット)、第3列(第3ビット)、第5列(第5ビット)、及び、第6列(第6ビット)にそれぞれ対応する変数ノードb2、b3、b5、及び、b6となる。
各チェックノードcmは、エッジで接続される変数ノードから送られて来る事前値比βmn(但し、送信先の変数ノードからの事前値比は除く)に基づいて、外部値比αmnを算出し、送信先の変数ノードへ算出した外部値比αmnを送信する。2部グラフにおいて、事前値比βmnは、変数ノードbnからチェックノードcmへ送信されるメッセージとして、外部値αmnは、チェックノードcmから変数ノードbnへ送信されるメッセージとして、考えることができる。
例えば、パリティ検査行列HMNが、図2(a)に示すような4行8列のパリティ検査行列だとすると、図3に示すように、変数ノードb1とb4とb5がチェックノードc1に接続する。この場合、例えば、送信先の変数ノードが変数ノードb1である場合は、チェックノードc1は、変数ノードb1から送られて来る事前値比β11を除いた変数ノードb4からの事前値比β14と変数ノードb5からの事前値比β15とに基づいて、外部値比α11を算出し、算出した外部値比α11を変数ノードb1へ送信する。また、例えば、送信先の変数ノードが変数ノードb4である場合は、チェックノードc1は、変数ノードb4から送られて来る事前値比β14を除いた変数ノードb1からの事前値比β11と変数ノードb5からの事前値比β15とに基づいて、外部値比α14を算出し、算出した外部値比α14を変数ノードb4へ送信する。
そして、各変数ノードbnは、エッジで接続されるチェックノードから送られて来る外部値比αmn(但し、送信先のチェックノードからの外部値比は除く)に基づいて、事前値比βmnを算出し、算出した事前値比βmnを送信先のチェックノードへ送信する。
例えば、パリティ検査行列HMNが、図2(a)に示すような4行8列のパリティ検査行列だとすると、図4に示すように、チェックノードc1とc3が変数ノードb1に接続する。この場合、送信先のチェックノードがチェックノードc1である場合は、変数ノードb1は、チェックノードc1から送られて来る外部値比α11を除いたチェックノードc3からの外部値比α31に基づいて、事前値比β11を算出し、算出した事前値比β11をチェックノードc1へ送信する。
図1(b)に戻り、低信頼度ノード検出部002C2aは、基本復号処理が繰り返されるたびに、各チェックノードcmに接続する変数ノード(処理対象の受信データFkの各ビット)の信頼度を算出し、算出した信頼度が記憶部002C1に格納されている信頼度閾値γ1以下である変数ノード(処理対象の受信データFkのビット)を各チェックノードcmに対して検出する。本実施形態においては、変数ノード処理部002C2dから入力される事前値比βmnの絶対値│βmn│を、チェックノードcmに接続する変数ノードbnの信頼度として算出する。この事前値比βmnは、2部グラフにおいては、変数ノードbnからチェックノードcmへ送信される事前値比である。なお、初回の基本復号処理では、低信頼度ノード検出部002C2aは、各変数ノードbnの信頼度として、事前値比βmnの初期値である対数尤度比λnの絶対値│λn│を算出する。ここで、対数尤度比λnは、sum−product復号と通常のmin−sum復号では、処理対象の受信データFkの第nビット(n=1,2,…,N)に対応するデータ値ynを通信路値で補正した値y’nであり、正規化min−sum復号では、データ値ynである。低信頼度ノード検出部002C2aは、算出した対数尤度比λnをチェックノード処理部002C2cと変数ノード処理部002C2dへ出力する。
そして、低信頼度ノード検出部002C2aは、信頼度閾値γ1以下である絶対値│βmn│のインデックス番号mとnの組(m,n)を除外ノード検出部002C2bへ出力する。例えば、事前値比β42の絶対値│β42│と事前値比β16の絶対値│β16│とが信頼度閾値γ1以下である場合は、組(4,2)と組(1,6)を除外ノード検出部002C2bへ出力する。また、初回の基本復号処理の際に、例えば、対数尤度比λ3の絶対値│λ3│が信頼度閾値γ1以下であり、チェックノードc2とc7とが変数ノードb3と接続する場合は、チェックノードc2のインデックス番号2と変数ノードb3のインデックス番号3との組(2,3)と、チェックノードc7のインデックス番号7と変数ノードb3のインデックス番号3との組(7,3)と、を除外ノード検出部002C2bへ出力する。検出した変数ノードに接続するチェックノードの情報は、パリティ検査行列HMNを参照することで、得ることができる。
事前値比βmnは、変数ノード処理部002C2dにより、次式を用いて求められる。
ここで、Σは、総和記号であり、B(n)は、変数ノードbnに接続するチェックノードの集合、\mは、チェックノードcmを含まない差集合である。αmnは、外部値比であり、チェックノード処理部002C2cにより求められる。
例えば、パリティ検査行列HMNが、図2(a)に例示するパリティ検査行列であった場合、変数ノードb1は、図4に示すように、チェックノードc1とc3と接続されている。この場合、例えば、変数ノードb1からチェックノードc1へ送信する事前値比β11を算出する際のB(1)\1は、変数ノードb1に接続するチェックノードの集合{c1,c3}から送信先のチェックノードc1を除いた集合{c3}となる。
図1(b)に戻り、除外ノード検出部002C2bは、低信頼度ノード検出部002C2aにより信頼度│βmn│が信頼度閾値γ1以下である変数ノード(処理対象の受信データFkのビット)が検出された場合、すなわち、チェックノードcmのインデックス番号mと変数ノードbnのインデックス番号nとの組(m,n)が低信頼度ノード検出部002C2aから入力された場合には、変数ノードbnをチェックノードcmにおける除外ノード(除外ビット)として、組(m,n)をチェックノード処理部002C2cへ出力する。この組(m,n)は、チェックノードcmにおける除外ノードbnを特定するために用いられる。
チェックノード処理部002C2cは、変数ノード処理部002C2dから入力される事前値比βmnに基づいて、パリティ検査行列HMNの構成成分Hmnのうちで、Hmn=1を満たす全ての組(m,n)について、外部値比αmnを算出する。この際、基本復号処理の繰り返し回数rがr≦R1の場合は、詳しくは後述する除外モードの算出式を用いて外部値比αmnを算出し、R1<r≦R2の場合は、通常モードの算出式を用いて外部値比αmnを算出する。ここで、R2は、基本復号処理の最大繰り返し回数の設定値であり、R1は、2≦R1≦R2を満たす予め設定された自然数である。そして、チェックノード処理部002C2cは、算出した外部値比αmnを、変数ノード処理部002C2dとビット推定部002C2eへ出力する。なお、事前値比βmnの初期値は対数尤度比λnとする。
LDPC復号の復号方式によって、チェックノード処理において外部値比αmnを算出するために用いる通常の算出式が異なることから、sum−product復号、通常のmin−sum復号、正規min−sum復号について、それぞれ通常モードの算出式と除外モードの算出式を以下に示す。
まず、復号方式が、sum−product復号の場合は、通常モードの算出式は、数2に示す算出式で定義される。数2に示す算出式は、外部値比αmnを求める際に通常用いられる算出式である。
ここで、ΠとΣは、それぞれ、総積記号と総和記号であり、A(m)は、チェックノードcmに接続する変数ノードの集合、\nは、変数ノードbnを含まない差集合である。また、関数sign(x)は、x>0の場合は、sign(x)=1となり、x<0の場合は、sign(x)=−1となるシグネチャ関数である。また、関数f(x)は、f(x)=log
e{(e
x+1)/(e
x−1)}で定義される関数で、eは自然対数の底(ネイピア数)である。
例えば、パリティ検査行列HMNが、図2(a)に例示するパリティ検査行列であった場合、チェックノードc1は、図3に示すように、変数ノードb1とb4とb5と接続されている。この場合、例えば、チェックノードc1から変数ノードb1へ送信する外部値比α11を算出する際のA(1)\1は、チェックノードc1に接続する変数ノードの集合{b1,b4,b5}から送信先の変数ノードb1を除いた集合{b4,b5}となる。また、例えば、チェックノードc1から変数ノードb4へ送信する外部値比α14を算出する際のA(1)\4は、集合{b1,b5}となる。
sum−product復号の場合における除外モードの算出式は、数3に示す算出式で定義される。この数3に示す算出式は、本発明特有の算出式である。
ここで、ΠとΣは、それぞれ、総積記号と総和記号であり、A(m)は、チェックノードcmに接続する変数ノードの集合である。また、関数sign(x)は、数2で定義したシグネチャ関数、関数f(x)は、数2で定義した関数f(x)と同じ関数、である。また、E(m)は、チェックノードcmに接続する変数ノードのうちで、除外ノード検出部002C2bにより除外ノードとされた変数ノードの集合である。例えば、図2の例において、除外ノード検出部002C2bにより、変数ノードb3、b5がチェックノードc2における除外ノードとされた場合には、E(2)は、{b3,b5}となる。また、\E(m)∪nは、E(m)に含まれる変数ノードと変数ノードbnを含まない差集合である。
復号方式が、通常のmin−sum復号の場合は、通常モードの算出式は、数4に示す算出式で定義される。この数4に示す算出式は、外部値比αmnを求める際に通常用いられる算出式である。
ここで、Πは、総積記号であり、A(m)は、チェックノードcmに接続する変数ノードの集合、\nは、変数ノードbnを含まない差集合である。また、関数sign(x)は、数2で定義したシグネチャ関数、min│βmn’│は、絶対値│βmn’│の最小値、である。
通常のmin−sum復号の場合における除外モードの算出式は、数5に示す算出式で定義される。この数5に示す算出式は、本発明特有の算出式である。
ここで、Πは、総積記号であり、A(m)は、チェックノードcmに接続する変数ノードの集合、\nは、変数ノードbnを含まない差集合である。また、関数sign(x)は、数2で定義したシグネチャ関数、min│βmn’│は、絶対値│βmn’│の最小値、である。また、E(m)は、チェックノードcmに接続する変数ノードのうちで、除外ノード検出部002C2bにより除外ノードとされた変数ノードの集合、\E(m)∪nは、E(m)に含まれる変数ノードと変数ノードbnを含まない差集合、である。
復号方式が、正規min−sum復号の場合は、通常モードの算出式は、数6に示す算出式で定義される。この数6に示す算出式は、外部値比αmnを求める際に通常用いられる算出式である。
ここで、Πは、総積記号であり、A(m)は、チェックノードcmに接続する変数ノードの集合、\nは、変数ノードbnを含まない差集合である。また、関数sign(x)は、数2で定義したシグネチャ関数、aは、正規化定数、min│βmn’│は、絶対値│βmn’│の最小値、である。
正規min−sum復号の場合における除外モードの算出式は、数7に示す算出式で定義される。この数7に示す算出式は、本発明特有の算出式である。
ここで、Πは、総積記号であり、A(m)は、チェックノードcmに接続する変数ノードの集合、\nは、変数ノードbnを含まない差集合である。また、関数sign(x)は、数2で定義したシグネチャ関数、min│βmn’│は、絶対値│βmn’│の最小値、である。また、E(m)は、チェックノードcmに接続する変数ノードのうちで、除外ノード検出部002C2bにより除外ノードとされた変数ノードの集合、\E(m)∪nは、E(m)に含まれる変数ノードと変数ノードbnを含まない差集合、である。
数3、数5、数7で定義される除外モードの算出式は、E(m)=0又はE(m)={bn}の場合、すなわち、チェックノードcmに接続する変数ノードの中に、チェックノードcmにおける除外ノードが存在しない場合、又は、チェックノードcmにおける除外ノードが外部値比αmnの送信先である変数ノードbnだけの場合には、E(m)∪n={bn}であることから、A(m)\E(m)∪n=A(m)\nとなり、それぞれ、数2、数4、数6で定義される通常モードの算出式と等しくなる。
数3、数5、数7でそれぞれ定義される除外モードの算出式は、総和Σ、又は、事前値比βmn’の絶対値│βmn’│の最小値を演算する際に、チェックノードcmに接続する変数ノードのうちで、除外ノード検出部002C2bにより除外ノードとされた変数ノードを除外して演算するように定義したものである。このように定義することで、除外ノードにおける低信頼度が他のノードに伝搬することを防ぐことが可能となる。このいわゆる誤り伝搬を防止することで、より少ない繰り返し回数でパリティ検査条件を満たすことから、効率的な復号処理を実現することが可能となる。
なお、記憶部002C1は、復号方式に応じて対応する通常モードと除外モードの算出式のペアを格納する。複数の復号方式を切替可能な場合は、記憶部002C1は、それらの復号方式に対応する通常モードと除外モードの算出式のペアをそれぞれ格納する。
図1(b)に戻り、変数ノード処理部002C2dは、チェックノード処理部002C2cから入力された外部値比αmnと低信頼度ノード検出部002C2aから入力された対数尤度比λnとに基づいて、上述の数1に示す算出式から事前値比βmnを算出する。そして、チェックノード処理部002C2cと、低信頼度ノード検出部002C2aと、ビット推定部002C2eとへ算出した事前値比βmnを出力する。なお、数1に示す事前値比βmnの算出式は通常の算出式と同じである。
ビット推定部002C2eは、チェックノード処理部002C2cから入力される外部値比αmnと変数ノード処理部002C2dから入力される事前値比βmnとに基づいて、推定ビット∧yn(n=1,2,…,N)を決定する。具体的には、数8に示す算出式により事後確率比Lnを算出し、算出した事後確率比LnがLn>0ならば、推定ビット∧yn=0、Ln<0ならば、推定ビット∧yn=1とすることで推定ビット∧ynを決定する。そして、ビット推定部002C2eは、決定した推定ビット∧yn(n=1,2,…,N)を判定部002C2gと推定ビット出力部002C2hへ出力する。
ここで、Σは、総和記号であり、B(n)は、変数ノードbnに接続するチェックノードの集合である。
繰り返し回数判定部002C2fは、カウンタC1を備え、カウンタC1のカウンタ値iに基づいて、基本復号処理の繰り返し回数rが、予め設定されている繰り返し回数R1とR2に達したか否かを判定し、判定結果をチェックノード処理部002C2cと推定ビット出力部002C2hへ通知する。
カウンタC1は、基本復号処理の繰り返し回数を管理するためのカウンタで、基本復号処理が繰り返されるたびに、繰り返し回数判定部002C2fによりインクリメントされる。なお、カウンタC1の初期設定値は”1”である。
判定部002C2gは、ビット推定部002C2eから入力される推定ビット∧yn(n=1,2,…,N)がパリティ検査条件(∧y1,∧y2,…,∧yN)HMN T=0を満たすか否かを判定する。ここで、HMN TはHMNの転置行列である。
推定ビット出力部002C2hは、判定部002C2gにより推定ビット∧ynがパリティ検査条件を満たすと判定された場合は、ビット推定部002C2eから入力された推定ビット∧ynを出力する。また、繰り返し回数判定部002C2fから基本復号処理の繰り返し回数rが最大繰り返し回数R2に達したとの判定結果が通知された場合には、パリティ検査条件を満たしていないと判定された場合であっても、推定ビット∧ynを出力する。そして、復号処理部002Cは、次の受信データFk+1をフレームデータ記憶部002C1aから読み出して、受信データFk+1に対する復号処理を開始し、全ての受信データFk(k=1,2,…,K)に対して、判定部002C2gが推定ビット∧ynを出力した時点で、復号処理を終了する。
ここで、図2と図5と図6とを参照して、具体例に基づいて、除外モードのチェックノード処理について説明する。図6は、初回以外の基本復号処理における除外モードのチェックノード処理を説明するための図である。
まず、図2と図5を参照して、初回の基本復号処理における除外モードのチェックノード処理について説明する。図2(a)は、パリティ検査行列HMNの例を示す図である。図2(b)は、図2(a)に例示するパリティ検査行列を2部グラフ(タナーグラフ)で表現した図である。図5(a)と(b)と(c)は、初回の基本復号処理における除外モードのチェックノード処理を説明するための図である。
例えば、パリティ検査行列HMNが、図2(a)に例示するパリティ検査行列で、各変数ノード(処理対象の受信データFkの各ビット)に対応する対数尤度比λnが、図5(a)に示すような値であったとする。また、信頼度閾値γ1=0.3とする。この場合、低信頼度ノード検出部002C2aは、図5(a)に示すように、各変数ノードbnの信頼度│βmn│として、対応する対数尤度比λnの絶対値である│λn│を算出する。
そして、信頼度閾値γ1=0.3であることから、低信頼度ノード検出部002C2aは、対数尤度比λnの絶対値│λn│が│λn│≦0.3を満たす変数ノードとして、変数ノードb1とb5を検出する。そして、低信頼度ノード検出部002C2aは、パリティ検査行列HMNを参照して、検出した変数ノードb1に接続するチェックノードc1とc3と、検出した変数ノードb5に接続するチェックノードc1とc2と、を特定し、接続関係にあるチェックノードと変数ノードのインデックス番号の組(1,1)、(3,1)、(1,5)、(2,5)を除外ノード検出部002C2bへ出力する。
そして、低信頼度ノード検出部002C2aからチェックノードと変数ノードのインデックス番号の組(1,1)、(3,1)、(1,5)、(2,5)が入力されると、除外ノード検出部002C2bは、変数ノードb1とb5を除外ノード(除外ビット)として、低信頼度ノード検出部002C2aから入力された組(1,1)、(3,1)、(1,5)、(2,5)をチェックノード処理部002C2cへ出力する。
そして、チェックノード処理部002C2cは、除外ノード検出部002C2bから除外ノードのインデックス番号とその除外ノードに接続するチェックノードのインデックス番号との組(1,1)、(3,1)、(1,5)、(2,5)が入力されると、初回の基本復号処理であることから、除外モードの算出式を用い、外部値比αmnを算出する。
例えば、2部グラフにおいてチェックノードc1から変数ノードb1へ送信する外部値比である外部値比α11を算出する場合について説明する。図5(b)に示すように、変数ノードb1、b4、b5がチェックノードc1に接続し、変数ノードb1とb5は、上述したようにチェックノードc1における除外ノードである。したがって、除外モードの算出式である数3、数5、数7におけるA(1)\E(1)∪1は、チェックノードc1に接続する変数ノードの集合{b1,b4,b5}から、チェックノードc1における除外ノードの集合{b1,b5}と送信先の変数ノードb1との和集合{b1,b5}を除いた差集合{b4}となる。
この場合、図5(b)に示すように、送信先の変数ノードb1の他に変数ノードb5を除いた変数ノードb4から送られてくる事前値比β14のみに基づいて、除外モードの算出式である数3、数5、数7におけるΣf(│βmn’│)又はmin│βmn’│を演算する。そして、この様に算出した外部値比α11を送信先の変数ノードb1へ送信する。すなわち、変数ノード処理部002C2dへ出力する。
また、例えば、2部グラフにおいてチェックノードc2から変数ノードb2へ送信する外部値比である外部値比α22を算出する場合は、図5(c)に示すように、変数ノードb2、b3、b5、b6がチェックノードc2に接続し、変数ノードb5は、上述したようにチェックノードc2における除外ノードである。したがって、除外モードの算出式である数3、数5、数7におけるA(2)\E(2)∪2は、チェックノードc2に接続する変数ノードの集合{b2,b3,b5,b6}から、チェックノードc2における除外ノードの集合{b5}と送信先の変数ノードb2との和集合{b2,b5}を除いた差集合{b3,b6}となる。
この場合、図5(c)に示すように、送信先の変数ノードb2の他に変数ノードb5を除いた、変数ノードb3とb6から送られてくる事前値比β23とβ26とに基づいて、除外モードの算出式である数3、数5、数7におけるΣf(│βmn’│)又はmin│βmn’│を演算する。そして、この様に算出した外部値比α22を、接続先の変数ノードb2へ送信する。すなわち、変数ノード処理部002C2dへ出力する。
次に、図2と図6を参照して、初回以外の基本復号処理における除外モードのチェックノード処理について説明する。図6(a)乃至(d)は、初回以外の基本復号処理における除外モードのチェックノード処理を説明するための図である。
例えば、パリティ検査行列HMNが、図2(a)に例示するパリティ検査行列である場合、各変数ノードbn(n=1,2,…,8)から接続先のチェックノードへ送信される事前値比βmnは、図6(b)に示すようになる。例えば、変数ノードb2はチェックノードc2とc3とc4と接続されていることから、変数ノードb2は、チェックノードc2に事前値比β22を、チェックノードc3に事前値比β32を、チェックノードc4に事前値比β42を送信する。
ここで、図6(b)に示す太線で囲まれた事前値比βmnの絶対値│βmn│が、信頼度閾値γ1以下であるとする。この場合、低信頼度ノード検出部002C2aは、太線で囲まれた事前値比βmnのインデックス番号mとnとの組(3,2)、(4,2)、(2,3)、(2,5)、(3,7)を除外ノード検出部002C2bへ出力する。
そして、低信頼度ノード検出部002C2aから組(3,2)、(4,2)、(2,3)、(2,5)、(3,7)が入力されると、除外ノード検出部002C2bは、変数ノードb2とb3とb5とb7をそれぞれ、図6(c)に示すように、チェックノードc3とc4における除外ノード(除外ビット)、チェックノードc2における除外ノード、チェックノードc2における除外ノード、チェックノードc3における除外ノード、として、組(3,2)、(4,2)、(2,3)、(2,5)、(3,7)をチェックノード処理部002C2cへ出力する。
そして、チェックノード処理部002C2cは、基本復号処理の繰り返し回数rがr≦R1の場合は、除外モードの算出式を用い、外部値比αmnを算出する。
例えば、2部グラフにおいてチェックノードc3から変数ノードb1へ送信する外部値比である外部値比α31を算出する場合について説明する。図6(d)に示すように、変数ノードb1、b2、b4、b6、b7がチェックノードc3に接続し、変数ノードb2とb7は、上述したようにチェックノードc3における除外ノードである。したがって、除外モードの算出式である数3、数5、数7におけるA(3)\E(3)∪1は、チェックノードc3に接続する変数ノードの集合{b1,b2,b4,b6,b7}から、チェックノードc3における除外ノードの集合{b2,b7}と送信先の変数ノードb1との和集合{b1,b2,b7}を除いた差集合{b4,b6}となる。
この場合、図6(d)に示すように、送信先の変数ノードb1の他に変数ノードb2とb7を除いた変数ノードb4とb6から送られてくる事前値比β34とβ36とに基づいて、除外モードの算出式である数3、数5、数7におけるΣf(│βmn’│)又はmin│βmn’│を演算する。そして、この様に算出した外部値比α31を送信先の変数ノードb1へ送信する。すなわち、変数ノード処理部002C2dへ出力する。
一方、基本復号処理の繰り返し回数rがR1<rの場合は、チェックノード処理部002C2cは、通常モードの算出式を用いて、外部値比αmnを算出し、算出した外部値比αmnを変数ノード処理部002C2dへ出力する。
次に、図7を参照して、本実施形態における復号処理のフローについて説明する。なお、各受信データFk(k=1,2,…,K)における復号処理は同じであることから、受信データF1における復号処理について以下説明する。また、この復号処理は、復号処理部002C2が、受信データF1をフレームデータ記憶部002C1aから読み出したことをトリガとして開始され、最終受信データFKに対する処理が完了した時点で終了する。
符号化部001AによりLDPC符号により符号化された情報データRは、フレームデータ(符号語)Fk(k=1,2,…,K)ごとに変調部001Bへ順次出力され、変調部001Bに順次入力されたフレームデータFkは、変調部001Bにより所定の信号方式へ順次変調される。変調されたフレームデータFkは、無線送信装置001の無線通信部001Cにより増幅され通信路CHへ順次出力される。
通信路CHにおいて、ノイズ成分が付加されたフレームデータFkは、無線受信装置002の無線通信部002Aにより順次受信され、復調部002Bへ順次入力される。復調部002Bに順次入力されたフレームデータFkは、復調部002Bにより順次復調され、復調後のフレームデータFkは受信データFkとして復号部002Cに順次入力され、フレームデータ記憶部002C1aに格納される。そして、復号処理部002C2は、フレームデータ記憶部002C1aから、復号処理するために受信データF1を読み出す。
繰り返し回数判定部002C2fは、カウンタC1のカウンタ値iを初期化する(ステップS101)。
そして、低信頼度ノード検出部002C2aは、事前値比βmn(又は、対数尤度比λn)に基づいて各変数ノードbnの信頼度、すなわち、事前値比βmnの絶対値│βmn│(又は、対数尤度比λnの絶対値│λn│)を算出し、算出した信頼度が信頼度閾値γ1以下である変数ノードを各チェックノードcmに対して検出する(ステップS102)。具体的には、カウンタC1のカウンタ値i=1の場合、すなわち、初回の基本復号処理である場合には、低信頼度ノード検出部002C2aは、絶対値│λn│が信頼度閾値γ1以下である対数尤度比λnに対応する変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mとの組(m,n)を除外ノード検出部002Cbへ出力する。初回以外の基本復号処理である場合には、低信頼度ノード検出部002C2aは、信頼度閾値γ1以下である絶対値│βmn│のインデックス番号mとnとの組(m,n)を除外ノード検出部002C2bへ出力する。
そして、除外ノード検出部002C2bは、低信頼度ノード検出部002C2aから組(m,n)が入力されると、変数ノードbnをチェックノードcmの除外ノードとして、組(m,n)をチェックノード処理部002C2cへ出力する(ステップS103)。例えば、組(2,3)が低信頼度ノード検出部002C2aから入力された場合は、変数ノードb3はチェックノードc2における除外ノードとなる。
そして、チェックノード処理部002C2cは、除外モードの算出式を用いて外部値比αmnを算出し、算出した外部値比αmnを変数ノード処理部002C2dとビット推定部002C2eへ出力する(ステップS104)。変数ノード処理部002C2dは、ステップS104の処理でチェックノード処理部002C2cから入力された外部値比αmnと対数尤度比λnとに基づいて、事前値比βmnを算出し、算出した事前値比βmnを低信頼度ノード検出部002C2aとチェックノード処理部002C2cとビット推定部002C2eへ出力する(ステップS105)。
そして、ビット推定部002C2eは、ステップS104の処理でチェックノード処理部002C2cから入力された外部値比αmnとステップS105の処理で変数ノード処理部002C2dから入力された事前値比βmnとに基づいて、推定ビット∧yn(n=1,2,…,N)を決定し、決定した推定ビット∧yn(n=1,2,…,N)を判定部002C2gと推定ビット出力部002C2hへ出力する(ステップS106)。そして、判定部002C2gは、ステップS106の処理でビット推定部002C2eから入力された推定ビット∧yn(n=1,2,…,N)が、パリティ検査条件を充足するか否かを判定する(ステップS107)。
推定ビット∧yn(n=1,2,…,N)が、パリティ検査条件を充足すると判定された場合には(ステップS107;YES)、推定ビット出力部002C2hは、推定ビット∧yn(n=1,2,…,N)を出力する(ステップS117)。そして、復号処理部002C2は、次の受信データF2を読み出して、受信データF2に対する復号処理を開始する。
一方、推定ビット∧yn(n=1,2,…,N)が、パリティ検査条件を充足しないと判定された場合には(ステップS107;NO)、繰り返し回数判定部002C2fは、カウンタC1のカウンタ値iがi=R1であるか否かを判定することで、基本復号処理の繰り返し回数r=R1か否かを判定する(ステップS108)。
基本復号処理の繰り返し回数rが設定値R1にまだ達していないと判定した場合には(ステップS108;NO)、繰り返し回数判定部002C2fは、カウンタC1をインクリメントし(ステップS109)、処理はステップS102の処理へ戻り、前述の処理を繰り返す。
一方、基本復号処理の繰り返し回数r=R1であると判定した場合には(ステップS108;YES)、繰り返し回数判定部002C2fは、さらに、カウンタC1のカウンタ値iがi=R2であるか否かを判定することで、基本復号処理の繰り返し回数rが最大繰り返し回数R2に達したか否かを判定する(ステップS110)。
基本復号処理の繰り返し回数rが最大繰り返し回数R2に達したと判定された場合には(ステップS110;YES)、推定ビット出力部002C2hは、ステップS106の処理でビット推定部002C2eから入力された推定ビット∧yn(n=1,2,…,N)を出力する(ステップS117)。そして、復号処理部002C2は、次の受信データF2を読み出して、受信データF2に対する復号処理を開始する。
一方、基本復号処理の繰り返し回数rがまだ最大繰り返し回数R2に達していないと判定された場合には(ステップS110;NO)、チェックノード処理部002C2cは、通常モードの算出式を用いて、ステップS105の処理で変数ノード処理部002C2dから入力された事前値比βmnに基づいて、外部値比αmnを算出し、算出した外部値比αmnを変数ノード処理部002C2dとビット推定部002C2eへ出力する(ステップS111)。
そして、変数ノード処理部002C2dは、ステップS111の処理でチェックノード処理部002C2cから入力された外部値比αmnと対数尤度比λnとに基づいて、事前値比βmnを算出し、算出したβmnを低信頼度ノード検出部002C2aとチェックノード処理部002C2cとビット推定部002C2eへ出力する(ステップS112)。
そして、ビット推定部002C2eは、ステップS111の処理でチェックノード処理部002C2cから入力された外部値比αmnとステップS112の処理で変数ノード処理部002C2dから入力された事前値比βmnとに基づいて、推定ビット∧yn(n=1,2,…,N)を決定し、決定した推定ビット∧yn(n=1,2,…,N)を判定部002C2gと推定ビット出力部002C2hへ出力する(ステップS113)。
そして、判定部002C2gは、ビット推定部002C2eから入力された推定ビット∧yn(n=1,2,…,N)が、パリティ検査条件を充足するか否かを判定する(ステップS114)。推定ビット∧yn(n=1,2,…,N)が、パリティ検査条件を充足すると判定された場合には(ステップS114;YES)、推定ビット出力部002C2hは、ステップS113の処理でビット推定部002C2eから入力された推定ビット∧yn(n=1,2,…,N)を出力する(ステップS117)。そして、復号処理部002C2は、次の受信データF2を読み出して、受信データF2に対する復号処理を開始する。
一方、推定ビット∧yn(n=1,2,…,N)が、パリティ検査条件を充足しないと判定された場合には(ステップS114;NO)、繰り返し回数判定部002C2fは、カウンタC1のカウンタ値iがi=R2であるか否かを判定することで、基本復号処理の繰り返し回数rが最大繰り返し回数R2に達したか否かを判定する(ステップS115)。
基本復号処理の繰り返し回数rが最大繰り返し回数R2にまだ達していないと判定した場合には(ステップS115;NO)、繰り返し回数判定部002C2fは、カウンタC1をインクリメントし(ステップS116)、処理はステップS111の処理へ戻り、前述の処理を繰り返す。
一方、基本復号処理の繰り返し回数rが最大繰り返し回数R2に達したと判定された場合には(ステップS115;YES)、推定ビット出力部002C2hは、ステップS113の処理でビット推定部002C2eから入力された推定ビット∧yn(n=1,2,…,N)を出力する(ステップS117)。そして、復号処理部002C2は、次の受信データF2を読み出して、受信データF2に対する復号処理を開始する。
実施形態1によれば、低信頼度ノード検出部002C2aは、初回の基本復号処理の際には、事前値比βmnの初期値である対数尤度比λnの絶対値│λn│を、各チェックノードcmに接続する変数ノードの信頼度として算出し、絶対値│λn│が信頼度閾値γ1以下である対数尤度比λnに対応する変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mの組(m,n)を除外ノード検出部002C2bを通してチェックノード検出部002C2cへ出力した。低信頼度ノード検出部002C2aは、初回以外の基本復号処理の際には、変数ノード処理部002C2dにより算出された事前値比βmnの絶対値│βmn│を、各チェックノードcmに接続する変数ノードの信頼度として算出し、絶対値│βmn│が信頼度閾値γ1以下である事前値比βmnのインデックス番号mとnとの組(m,n)を除外ノード検出部002C2bを通してチェックノード検出部002C2cへ出力した。そして、チェックノード処理部002C2cは、基本復号処理の繰り返し回数rがr≦R1の場合には、数3、数5、数7で定義される除外モードの算出式を用いて、外部値比αmnを算出した。除外モードの算出式は、総和Σ、又は、事前値比βmn’の絶対値│βmn’│の最小値を演算する際に、チェックノードcmに接続する変数ノードのうちで、除外ノード検出部002C2bにより除外ノードとされた変数ノードを除外して演算するように定義したものである。このように構成することで、除外ノードにおける低信頼度が他のノードに伝搬することを防ぐことが可能となる。このいわゆる誤り伝搬を防止することで、より少ない繰り返し回数でパリティ検査条件を満たすことから、効率的な復号処理を実現することが可能となる。
(実施形態2)
実施形態1においては、除外ノード検出部002C2bは、低信頼度ノード検出部002C2aから入力された変数ノードbnのインデックス番号nとチェックノードcmのインデックス番号mとの組(m,n)を、そのままチェックノード処理部002C2cへ出力した。
本実施形態においては、除外ノード検出部002C2bは、後述するテーブル記憶部002C1bに格納されている列重み情報テーブルT1を参照して、パリティ検査行列HMNの各列における列重み、すなわち、各列の成分1の数が予め設定されている列重み閾値W以下の列に対応する変数ノード(処理対象の受信データFkのビット)を特定する。そして、低信頼度ノード検出部002C2aから入力された組(m,n)のうちで、除外ノード検出部002C2bが特定した列重み閾値W以下の列に対応する変数ノードのインデックス番号を含む組を、チェックノード処理部002C2cへ出力する。つまり、除外ノードを誤りが起きやすい列重みが低い列に対応する変数ノードに限定する。
本実施形態における、デジタル通信システム1の基本的な構成は、実施形態1の場合と同じである。但し、図8に示すように、復号部002Cの構成が、実施形態1とでは異なり、記憶部002C1は、さらに、テーブル記憶部002C1bとして機能する。また、上述したように、除外ノード検出部002C2bが果たす役割が実施形態1とでは若干異なる。
テーブル記憶部002C1bは、図9(a)と(b)に例示する列重み情報テーブルT1を格納する。図9(a)と(b)に例示する列重み情報テーブルT1は、パリティ検査行列HMNが図2(a)に示すような4行8列のパリティ検査行列であり、列重み閾値W=2の場合の列重み情報テーブルT1の例である。図9(a)に示す列重み情報テーブルT1は、各列に対応する変数ノード(処理対象の受信データFkのビット)bn(n=1,2,…,8)と、その列の列重みと、フラグと、が対応付けられており、除外ノード検出部002C2bは、フラグ欄を参照することで、列重み閾値W以下の列に対応する変数ノード(処理対象の受信データFkのビット)を特定することが可能となる。また、図9(b)に示す列重み情報テーブルT1は、列重み閾値W以下の列に対応する変数ノード(処理対象の受信データFkのビット)の一覧を格納している。なお、列重み情報テーブルT1は、図9(a)と(b)に例示する構成に限定されるものではなく、除外ノード検出部002C2bが、列重み閾値W以下の列に対応する変数ノード(処理対象の受信データFkのビット)を特定可能であればよい。また、除外ノード検出部002C2bが、パリティ検査行列HMNから直接列重み閾値W以下の列に対応する変数ノードを特定するように構成してもよい。
除外ノード検出部002C2bは、テーブル記憶部002C1bに格納されている列重み情報テーブルT1を参照して、列重みが列重み閾値W以下のパリティ検査行列HMNの列に対応する変数ノード(処理対象の受信データFkのビット)を特定する。そして、低信頼度ノード検出部002C2aから入力された組(m,n)のうちで、除外ノード検出部002C2bが特定した列重み閾値W以下の列に対応する変数ノード(処理対象の受信データFkのビット)との組を、チェックノード処理部002C2cへ出力する。例えば、低信頼度ノード検出部002C2aから入力された組が(3,4)と(3,7)であり、除外ノード検出部002C2bが特定した列重み閾値W以下の列に対応する変数ノードが変数ノードb5とb7であった場合には、除外ノード検出部002C2bは、変数ノードb7をチェックノードc3における除外ノードとして組(3,7)をチェックノード処理部002C2cへ出力する。
ここで、図2と図9と図10を参照して、本実施形態における、初回の基本復号処理における除外モードのチェックノード処理について説明する。図10(a)と(b)は、パリティ検査行列HMNが図2(a)に示すような4行8列のパリティ検査行列であり、信頼度閾値γ1=0.3、列重み閾値W=2の場合の除外モードのチェックノード処理を説明するための図である。
低信頼度ノード検出部002C2aは、初回の基本復号処理では、対数尤度比λnの絶対値│λn│を各変数ノードの信頼度として算出する。対数尤度比λnの値が、図10(a)に示すような値であったとすると、低信頼度ノード検出部002C2aは、信頼度が信頼度閾値γ1=0.3以下の変数ノードとして、変数ノードb1、b4、b5を検出する。変数ノードb1は、チェックノードc1とc3に、変数ノードb4は、チェックノードc1とc3とc4に、変数ノードb5は、チェックノードc1とc2に、それぞれ接続することから、低信頼度ノード検出部002C2aは、組(1,1)、(3,1)、(1,4)、(3,4)、(4,4)、(1,5)、(2,5)を、除外ノード検出部002C2bへ出力する。
除外ノード検出部002C2bは、テーブル記憶部002C1bに格納されている列重み情報テーブルT1を参照して、列重み閾値W以下のパリティ検査行列HMNの列を特定する。パリティ検査行列HMNが図2(a)に示すような4行8列のパリティ検査行列であるときは、図10(a)に示すように、各列の列重みは第1列に対応する変数ノードb1から順番に、2、3、2、3、2、2、2、1である。この場合、列重み閾値W=2であることから、除外ノード検出部002C2bは、列重み閾値W以下の列に対応する変数ノードとして、変数ノードb1、b3、b5乃至b8を特定する。
そして、除外ノード検出部002C2bは、低信頼度ノード検出部002C2aから入力された組(1,1)、(3,1)、(1,4)、(3,4)、(4,4)、(1,5)、(2,5)のうちで、除外ノード検出部002C2bが特定した変数ノードのインデックス番号を含む組(1,1)、(3,1)、(1,5)、(2,5)を、チェックノード処理部002C2cへ出力する。すなわち、変数ノードb1をチェックノードc1とc3の除外ノードとして、変数ノードb5をチェックノードc1とc2の除外ノードとして、チェックノード処理部002C2cへ通知する。
チェックノード処理部002C2cは、初回の基本復号処理であることから、除外モードの算出式を用いて、外部値比αmnを算出する。例えば、2部グラフにおいて、チェックノードc1から変数ノードb1へ送信される外部値比である外部値比α11を算出する際には、上述したように変数ノードb5はチェックノードc1における除外ノードであることから、変数ノードb5を除外して総和Σ、又は、事前値比βmn’の絶対値│βmn’│の最小値を演算する。図10(b)に示すように、変数ノードb1、b4、b5がチェックノードc1に接続することから、除外モードの算出式である数3、数5、数7におけるA(1)\E(1)∪1は、チェックノードc1に接続する変数ノードの集合{b1,b4,b5}から、チェックノードc1における除外ノードの集合{b5}と送信先の変数ノードb1との和集合{b1,b5}を除いた差集合{b4}となる。
この場合、図10(b)に示すように、送信先の変数ノードb1の他に変数ノードb5を除いた変数ノードb4から送られてくる事前値比β14のみに基づいて、除外モードの算出式である数3、数5、数7におけるΣf(│βmn’│)又はmin│βmn’│を演算する。そして、この様に算出した外部値比α11を送信先の変数ノードb1へ送信する。すなわち、変数ノード処理部002C2dへ出力する。
次に、図2と図9と図11を参照して、初回以外の基本復号処理における除外モードのチェックノード処理について説明する。図11(a)と(b)は、パリティ検査行列HMNが図2(a)に示すような4行8列のパリティ検査行列であり、信頼度閾値γ1=0.3、列重み閾値W=2の場合の除外モードのチェックノード処理を説明するための図である。
パリティ検査行列HMNが、図2(a)に例示するパリティ検査行列である場合、各変数ノードbn(n=1,2,…,8)から接続先のチェックノードへ送信される事前値比βmnは、図11(a)に示すようになる。例えば、変数ノードb2はチェックノードc2とc3とc4と接続されていることから、変数ノードb2は、チェックノードc2に事前値比β22を、チェックノードc3に事前値比β32を、チェックノードc4に事前値比β42を送信する。
ここで、図11(a)に示す太線で囲まれた事前値比βmnの絶対値│βmn│が、信頼度閾値γ1以下であるとする。この場合、低信頼度ノード検出部002C2aは、太線で囲まれた事前値比βmnのインデックス番号mとnとの組(3,2)、(4,2)、(2,3)、(2,5)、(3,7)を除外ノード検出部002C2bへ出力する。
そして、除外ノード検出部002C2bは、テーブル記憶部002C1bに格納されている列重み情報テーブルT1を参照して、列重み閾値W以下のパリティ検査行列HMNの列を特定する。パリティ検査行列HMNが図2(a)に示すような4行8列のパリティ検査行列であるときは、図11(a)に示すように、各列の列重みは第1列に対応する変数ノードb1から順番に、2、3、2、3、2、2、2、1である。この場合、列重み閾値W=2であることから、除外ノード検出部002C2bは、列重み閾値W以下の列に対応する変数ノードとして、変数ノードb1、b3、b5乃至b8を特定する。
そして、除外ノード検出部002C2bは、低信頼度ノード検出部002C2aから入力された組(3,2)、(4,2)、(2,3)、(2,5)、(3,7)のうちで、除外ノード検出部002C2bが特定した変数ノードのインデックス番号を含む組(2,3)、(2,5)、(3,7)を、チェックノード処理部002C2cへ出力する。すなわち、変数ノードb3をチェックノードc2の除外ノードとして、変数ノードb5をチェックノードc2の除外ノードとして、変数ノードb7をチェックノードc3の除外ノードとして、チェックノード処理部002C2cへ通知する。
そして、チェックノード処理部002C2cは、基本復号処理の繰り返し回数rがr≦R1の場合は、除外モードの算出式を用い、外部値比αmnを算出する。
例えば、2部グラフにおいてチェックノードc3から変数ノードb1へ送信する外部値比である外部値比α31を算出する場合について説明する。図11(b)に示すように、変数ノードb1、b2、b4、b6、b7がチェックノードc3に接続し、変数ノードb7は、上述したようにチェックノードc3における除外ノードである。したがって、除外モードの算出式である数3、数5、数7におけるA(3)\E(3)∪1は、チェックノードc3に接続する変数ノードの集合{b1,b2,b4,b6,b7}から、チェックノードc3における除外ノードの集合{b7}と送信先の変数ノードb1との和集合{b1,b7}を除いた差集合{b2,b4,b6}となる。
この場合、図11(b)に示すように、送信先の変数ノードb1の他に変数ノードb7を除いた変数ノードb2とb4とb6から送られてくる事前値比β32とβ34とβ36とに基づいて、除外モードの算出式である数3、数5、数7におけるΣf(│βmn’│)又はmin│βmn’│を演算する。そして、この様に算出した外部値比α31を送信先の変数ノードb1へ送信する。すなわち、変数ノード処理部002C2dへ出力する。
一方、基本復号処理の繰り返し回数rがR1<rの場合は、チェックノード処理部002C2cは、通常モードの算出式を用いて、外部値比αmnを算出し、算出した外部値比αmnを変数ノード処理部002C2dへ出力する。
次に、図12を参照して、本実施形態における復号処理のフローについて説明する。なお、各受信データFk(k=1,2,…,K)における復号処理は同じであることから、受信データF1における復号処理について以下説明する。また、ステップS201以外の処理は実施形態1の場合と同じであることから、ステップS101乃至S104の処理について説明する。また、この復号処理は、復号処理部002C2が、受信データF1をフレームデータ記憶部002C1aから読み出したことをトリガとして開始され、最終受信データFKに対する処理が完了した時点で終了する。
符号化部001AによりLDPC符号により符号化された情報データRは、フレームデータ(符号語)Fk(k=1,2,…,K)ごとに変調部001Bへ順次出力され、変調部001Bに順次入力されたフレームデータFkは、変調部001Bにより所定の信号方式へ順次変調される。変調されたフレームデータFkは、無線送信装置001の無線通信部001Cにより増幅され通信路CHへ順次出力される。
通信路CHにおいて、ノイズ成分が付加されたフレームデータFkは、無線受信装置002の無線通信部002Aにより順次受信され、復調部002Bへ順次入力される。復調部002Bに順次入力されたフレームデータFkは、復調部002Bにより順次復調され、復調後のフレームデータFkは受信データFkとして復号部002Cに順次入力され、フレームデータ記憶部002C1aに格納される。そして、復号処理部002C2は、フレームデータ記憶部002C1aから、復号処理するために受信データF1を読み出す。
繰り返し回数判定部002C2fは、カウンタC1のカウンタ値iを初期化する(ステップS101)。
そして、低信頼度ノード検出部002C2aは、事前値比βmn(又は、対数尤度比λn)に基づいて各変数ノードbnの信頼度、すなわち、事前値比βmnの絶対値│βmn│(又は、対数尤度比λnの絶対値│λn│)を算出し、算出した信頼度が信頼度閾値γ1以下である変数ノードを各チェックノードcmに対して検出する(ステップS102)。具体的には、カウンタC1のカウンタ値i=1の場合、すなわち、初回の基本復号処理である場合には、低信頼度ノード検出部002C2aは、絶対値│λn│が信頼度閾値γ1以下である対数尤度比λnに対応する変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mとの組(m,n)を除外ノード検出部002Cbへ出力する。初回以外の基本復号処理である場合には、低信頼度ノード検出部002C2aは、絶対値│βmn│が信頼度閾値γ1以下である事前値比βmnのインデックス番号mとnとの組(m,n)を除外ノード検出部002C2bへ出力する。
そして、除外ノード検出部002C2bは、テーブル記憶部002C1bに格納されている列重み情報テーブルT1を参照して、列重みが列重み閾値W以下のパリティ検査行列HMNの列に対応する変数ノード(処理対象の受信データFkのビット)を特定する。そして、低信頼度ノード検出部002C2aから入力された組(m,n)のうちで、除外ノード検出部002C2bが特定した列重み閾値W以下の列に対応する変数ノード(処理対象の受信データFkのビット)との組を、チェックノード処理部002C2cへ出力する(ステップS201)。
そして、チェックノード処理部002C2cは、除外モードの算出式を用いて外部値比αmnを算出し、算出した外部値比αmnを変数ノード処理部002C2dとビット推定部002C2eへ出力する(ステップS104)。
本実施形態2によれば、低信頼度ノード検出部002C2aは、初回の基本復号処理の際には、事前値比βmnの初期値である対数尤度比λnの絶対値│λn│を、各チェックノードcmに接続する変数ノードの信頼度として算出し、絶対値│λn│が信頼度閾値γ1以下である対数尤度比λnに対応する変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mの組(m,n)を除外ノード検出部002C2bへ出力した。低信頼度ノード検出部002C2aは、初回以外の基本復号処理の際には、変数ノード処理部002C2dにより算出された事前値比βmnの絶対値│βmn│を、各チェックノードcmに接続する変数ノードの信頼度として算出し、絶対値│βmn│が信頼度閾値γ1以下である事前値比βmnのインデックス番号mとnとの組(m,n)を除外ノード検出部002C2bへ出力した。そして、除外ノード検出部002C2bは、誤りが起きやすい列重みが低いパリティ検査行列の列に対応する変数ノードを特定した。そして、低信頼度ノード検出部002C2aから入力された組(m,n)のうちで、除外ノード検出部002C2bが特定した列重み閾値W以下の列に対応する変数ノードのインデックス番号を含む組を、チェックノード処理部002C2cへ出力した。そして、チェックノード処理部002C2cは、基本復号処理の繰り返し回数rがr≦R1の場合には、数3、数5、数7で定義される除外モードの算出式を用いて、外部値比αmnを算出した。この除外モードの算出式は、総和Σ、又は、事前値比βmn’の絶対値│βmn’│の最小値を演算する際に、チェックノードcmに接続する変数ノードのうちで、除外ノード検出部002C2bにより除外ノードとされた変数ノードを除外して演算するように定義したものである。このように構成することで、誤りが起きやすい除外ノードの信頼度が信頼度閾値を越えるまで、除外ノードを除外して総和Σ、又は、事前値比βmn’の絶対値│βmn’│の最小値を演算することが可能となる。これにより、除外ノードにおける低信頼度が他のノードに伝搬することを防ぐことが可能となる。このいわゆる誤り伝搬を防止することで、より少ない繰り返し回数でパリティ検査条件を満たすことから、効率的な復号処理を実現することが可能となる。
図13は、従来のチェックノード処理を行った場合のビット誤り率BER(Bit Error Rate)特性と本発明のチェックノード処理を行った場合のBER特性を示す図である。なお、設定条件は、データビット長:203ビット、符号長:348ビット、符号化率:0.58、最大繰り返し回数:8回、フェージング周波数:41.7Hzである。図13に示すように、外部値比αmnを算出するに際し、信頼度の低い変数ノードを除外して総和Σ、又は、事前値比βmn’の絶対値│βmn’│の最小値を演算することで、復号性能が改善する。
(変形例1)
実施形態1と2においては、事前値比βmnを各チェックノードcmに接続する変数ノードの信頼度とした。本変形例においては、事後確率比Lnを各チェックノードcmに接続する変数ノードの信頼度とする。本変形例は、実施形態1と2のいずれに対しても適用可能であることから、実施形態2に本変形例を適用した場合について以下に説明する。
本変形例におけるデジタル通信システム1の基本的な構成は、実施形態2の場合と同じである。但し、図14に示すように、低信頼度ノード検出部002C2aと変数ノード処理部002C2dとビット推定部002C2eが果たす役割が実施形態2とでは若干異なる。
低信頼度ノード検出部002C2aは、基本復号処理が繰り返されるたびに、ビット推定部002C2eから入力される事後確率比Lnの絶対値│Ln│を、チェックノードcmに接続する変数ノードbnの信頼度として算出する。なお、初回の基本復号処理では、低信頼度ノード検出部002Caは、各変数ノードbnの信頼度として、事前値比βmnの初期値、すなわち、事後確率比Lnの初期値である対数尤度比λnの絶対値│λn│を算出する。ここで、対数尤度比λnは、sum−product復号と通常のmin−sum復号では、処理対象の受信データFkの第nビット(n=1,2,…,N)に対応するデータ値ynを通信路値で補正した値y’nであり、正規化min−sum復号では、データ値ynである。低信頼度ノード検出部002C2aは、算出した対数尤度比λnをチェックノード処理部002C2cと変数ノード処理部002C2dへ出力する。
そして、低信頼度ノード検出部002C2aは、絶対値│Ln│(又は、絶対値│λn│)が信頼度閾値γ1以下である事後確率比Ln(又は、対数尤度比λn)に対応する変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mの組(m,n)を除外ノード検出部002C2bへ出力する。例えば、事後確率比L2の絶対値│L2│と事後確率比L6の絶対値│L6│とが信頼度閾値γ1以下であり、変数ノードb2に接続するチェックノードがチェックノードc3とc4であり、変数ノードb6に接続するチェックノードがチェックノードc1とc3である場合には、組(3,2)、(4,2)、(1,6)、(3,6)を除外ノード検出部002C2bへ出力する。検出した変数ノードに接続するチェックノードの情報は、パリティ検査行列HMNを参照することで、得ることができる。
変数ノード処理部002C2dは、実施形態2においては、算出した事前値比βmnをチェックノード処理部002C2cと、低信頼度ノード検出部002C2aと、ビット推定部002C2eへを出力したが、本変形例では、算出した事前値比βmnをチェックノード処理部002C2cと、ビット推定部002C2eのみに出力する。
ビット推定部002C2eは、チェックノード処理部002C2cから入力される外部値比αmnと変数ノード処理部002C2dから入力される事前値比βmnとに基づいて、推定ビット∧yn(n=1,2,…,N)を決定する。具体的には、数8に示す算出式により事後確率比Lnを算出し、算出した事後確率比LnがLn>0ならば、推定ビット∧yn=0、Ln<0ならば、推定ビット∧yn=1とすることで推定ビット∧ynを決定する。そして、ビット推定部002C2eは、決定した推定ビット∧yn(n=1,2,…,N)を判定部002C2gと推定ビット出力部002C2hへ出力する。また、ビット推定部002C2eは、算出した事後確率比Lnを低信頼度ノード検出部002C2aへ出力する。
次に、図15を参照して、本変形例における復号処理のフローについて説明する。図15は、本変形例における復号処理のフローチャートの一部である。図15に示すフローチャートのステップS301の後の処理は、図7に示す実施形態1における復号処理のフローチャートのステップS103乃至S117の処理と、図12に示す実施形態2における復号処理のフローチャートのステップS201乃至S117の処理と、基本的に同じである。よって、ステップS101とステップS301の処理について、以下に説明する。
なお、各受信データFk(k=1,2,…,K)における復号処理は同じであることから、受信データF1における復号処理について以下説明する。また、この復号処理は、復号処理部002C2が、受信データF1をフレームデータ記憶部002C1aから読み出したことをトリガとして開始され、最終受信データFKに対する処理が完了した時点で終了する。
符号化部001AによりLDPC符号により符号化された情報データRは、フレームデータ(符号語)Fk(k=1,2,…,K)ごとに変調部001Bへ順次出力され、変調部001Bに順次入力されたフレームデータFkは、変調部001Bにより所定の信号方式へ順次変調される。変調されたフレームデータFkは、無線送信装置001の無線通信部001Cにより増幅され通信路CHへ順次出力される。
通信路CHにおいて、ノイズ成分が付加されたフレームデータFkは、無線受信装置002の無線通信部002Aにより順次受信され、復調部002Bへ順次入力される。復調部002Bに順次入力されたフレームデータFkは、復調部002Bにより順次復調され、復調後のフレームデータFkは受信データFkとして復号部002Cに順次入力され、フレームデータ記憶部002C1aに格納される。そして、復号処理部002C2は、フレームデータ記憶部002C1aから、復号処理するために受信データF1を読み出す。
繰り返し回数判定部002C2fは、カウンタC1のカウンタ値iを初期化する(ステップS101)。
そして、低信頼度ノード検出部002C2aは、事後確率比Ln(又は、対数尤度比λn)に基づいて各変数ノードbnの信頼度、すなわち、事後確率比Lnの絶対値│Ln│(又は、対数尤度比λnの絶対値│λn│)を算出し、算出した信頼度が信頼度閾値γ1以下である変数ノードを各チェックノードcmに対して検出する(ステップS301)。具体的には、カウンタC1のカウンタ値i=1の場合、すなわち、初回の基本復号処理である場合には、低信頼度ノード検出部002C2aは、絶対値│λn│が信頼度閾値γ1以下である対数尤度比λnに対応する変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mとの組(m,n)を除外ノード検出部002Cbへ出力する。初回以外の基本復号処理である場合には、低信頼度ノード検出部002C2aは、絶対値│Ln│が信頼度閾値γ1以下である事後確率比Lnに対応する変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mとの組(m,n)を除外ノード検出部002C2bへ出力する。
(変形例2)
実施形態1と2においては、低信頼度ノード検出部002C2aは、絶対値│βmn│が信頼度閾値γ1以下である事前値比βmnに対応するチェックノードcmと変数ノードbnのインデックス番号mとnとの組(m,n)を除外ノード検出部002C2bへ出力した。
本変形例においては、低信頼度ノード検出部002C2aは、絶対値│βmn│が信頼度閾値γ1以下である事前値比βmnに対応する変数ノードbnを検出し、検出した変数ノードbnのインデックス番号nとその変数ノードbnに接続する全てのチェックノードcmのインデックス番号mとの組(m,n)を除外ノード検出部002C2bへ出力する。
なお、本変形例は、実施形態1又は2のいずれに対しても適用可能であることから、実施形態2に本変形例を適用した場合について、以下に説明する。
本変形例におけるデジタル通信システム1の基本的な構成は、実施形態2の場合と同じである。但し、低信頼度ノード検出部002C2aと、除外ノード検出部002C2bが果たす役割が実施形態2とでは若干異なる。
低信頼度ノード検出部002C2aは、変数ノード処理部002C2dから入力される事前値比βmnの絶対値│βmn│が予め設定されている信頼度閾値γ1以下である事前値比に対応する変数ノードを検出する。すなわち、2部グラフにおいて、変数ノードbnが接続先のチェックノードcmに送信する事前値比βmnのうちで、その絶対値が基準値(信頼度閾値γ1)以下である事前値比が一つでも存在する場合には、低信頼度ノード検出部002C2aは、その変数ノードを検出する。
例えば、パリティ検査行列HMNが、図2(a)に例示するパリティ検査行列である場合には、各変数ノードbn(n=1,2,…,8)から接続先のチェックノードへ送信される事前値比βmnは、図16に示すようになる。例えば、変数ノードb2はチェックノードc2とc3とc4と接続されていることから、変数ノードb2は、チェックノードc2に事前値比β22を、チェックノードc3に事前値比β32を、チェックノードc4に事前値比β42を送信する。この場合、低信頼度ノード検出部002C2aは、事前値比β22、β32、β42の絶対値のうちのいずれかが信頼度閾値γ1以下の場合には、変数ノードb2を検出し、事前値比β22、β32、β42の絶対値の全てが信頼度閾値γ1より大きい場合には、変数ノードb2を検出しない。
そして、低信頼度ノード検出部002C2aは、検出した変数ノードbnを特定するための情報を除外ノード検出部002C2bへ出力する。
除外ノード検出部002C2bは、テーブル記憶部002C1bに格納されている列重み情報テーブルT1を参照して、列重みが列重み閾値W以下のパリティ検査行列HMNの列に対応する変数ノードbn(処理対象の受信データFkのビットbn)を特定する。そして、除外ノード検出部002C2bは、基本復号処理が繰り返されるたびに、特定した変数ノードのうちで、低信頼度ノード検出部002C2aにより検出された変数ノードを抽出し、抽出した変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mとの組(m,n)をチェックノード処理部002C2cへ出力する。
例えば、除外ノード検出部002C2bが特定した列重み閾値W以下の列に対応する変数ノードが変数ノードb1とb5とb7であり、低信頼度ノード検出部002C2aにより検出された変数ノードが変数ノードb4とb7である場合には、除外ノード検出部002C2bは、特定した変数ノードb1とb5とb7の中から、変数ノードb7を抽出する。チェックノードc1とc4が抽出した変数ノードb7に接続する場合には、除外ノード検出部002C2bは、変数ノードb7をチェックノードc1とc4における除外ノードとして、組(1,7)、(4,7)をチェックノード処理部002C2cへ出力する。
次に、図17を参照して、本変形例における復号処理のフローについて説明する。図17に示すフローチャートのステップS402の後の処理は、図7に示す実施形態1における復号処理のフローチャートのステップS104乃至S117の処理と基本的に同じである。よって、ステップS101乃至S104の処理について、以下に説明する。
なお、各受信データFk(k=1,2,…,K)における復号処理は同じであることから、受信データF1における復号処理について以下説明する。また、この復号処理は、復号処理部002C2が、受信データF1をフレームデータ記憶部002C1aから読み出したことをトリガとして開始され、最終受信データFKに対する処理が完了した時点で終了する。
符号化部001AによりLDPC符号により符号化された情報データRは、フレームデータ(符号語)Fk(k=1,2,…,K)ごとに変調部001Bへ順次出力され、変調部001Bに順次入力されたフレームデータFkは、変調部001Bにより所定の信号方式へ順次変調される。変調されたフレームデータFkは、無線送信機001の無線通信部001Cにより増幅され通信路CHへ順次出力される。
通信路CHにおいて、ノイズ成分が付加されたフレームデータFkは、無線受信機002の無線通信部002Aにより順次受信され、復調部002Bへ順次入力される。復調部002Bに順次入力されたフレームデータFkは、復調部002Bにより順次復調され、復調後のフレームデータFkは受信データFkとして復号部002Cに順次入力され、フレームデータ記憶部002C1aに格納される。そして、復号処理部002C2は、フレームデータ記憶部002C1aから、復号処理するために受信データF1を読み出す。
繰り返し回数判定部002C2fは、カウンタC1のカウンタ値iを初期化する(ステップS101)。
そして、低信頼度ノード検出部002C2aは、変数ノード処理部002C2dから入力される事前値比βmnに基づいて、信頼度が基準値(信頼度閾値γ1)以下の変数ノードを検出する。そして、低信頼度ノード検出部002C2aは、検出した変数ノードを特定するための情報を除外ノード検出部002C2bへ出力する(ステップS401)。
そして、除外ノード検出部002C2bは、テーブル記憶部002C1bに格納されている列重み情報テーブルT1を参照して、列重みが列重み閾値W以下のパリティ検査行列HMNの列に対応する変数ノード(処理対象の受信データFkのビット)を特定する。そして、除外ノード検出部002C2bは、特定した変数ノードのうちで、低信頼度ノード検出部002C2aにより検出された変数ノードを抽出し、抽出した変数ノードbnのインデックス番号nとその変数ノードbnに接続するチェックノードcmのインデックス番号mとの組(m,n)をチェックノード処理部002C2cへ出力する。(ステップS402)。
そして、チェックノード処理部002C2cは、除外モードの算出式を用いて外部値比αmnを算出し、算出した外部値比αmnを変数ノード処理部002C2dとビット推定部002C2eへ出力する(ステップS104)。
なお、上記実施形態における無線送信装置001と無線受信装置002は、それぞれ基地局及び移動情報端末に適用でき、ピアツーピア通信装置等に適用できる。
また、上記実施形態1と2において、LDPC符号により符号化された符号データをsum−product復号、min−sum復号により復号処理する場合について説明したが、これに限定されるものではなく、本発明は、符号化された符号データを確率伝搬法により復号する場合に適用可能である。
また、上記実施形態1と2において、図18に例示すように、基本復号処理の繰り返し回数rに従って、信頼度閾値γ1を段階的に大きくするように構成してもよい。
また、上記実施形態2において、図19に例示するように、低信頼度ノード検出部002C2aにより検出された信頼度の低い変数ノードの数に従って、列重み閾値Wを可変してもよい。
また、上記変形例2において、変数ノード処理部002C2dにより算出された事前値比βmnの絶対値│βmn│を信頼度としたが、事後確率比Lnの絶対値│Ln│を信頼度としてもよい。
また、上記変形例2において、変数ノードbnに接続する全てのチェックノードcmに対する事前値比βmnの絶対値│βmn│のうちのいずれかが信頼度閾値γ1以下の場合に、低信頼度ノード検出部002C2aは、変数ノードbnを検出すると説明したが、これに限定されるものではなく、例えば、絶対値│βmn│が信頼度閾値γ1以下の事前値比βmnの個数が規定数X以上の場合に、低信頼度ノード検出部002C2aは、変数ノードbnを検出するように構成してもよい。
なお、上記実施形態において、実行されるプログラムは、フレキシブルディスク、CD−ROM(Compact Disc Read-Only Memory)、DVD(Digital Versatile Disc)、MO(Magneto-Optical Disc)等のコンピュータで読み取り可能な記録媒体に格納して配布し、そのプログラムをインストールすることにより、上述の処理を実行することとしてもよい。
また、プログラムをインターネット等の通信ネットワーク上の所定のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、取得等するようにしてもよい。
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。