復号装置、復号方法、およびプログラム

申请号 JP2011043720 申请日 2011-03-01 公开(公告)号 JP5790029B2 公开(公告)日 2015-10-07
申请人 ソニー株式会社; 发明人 山岸 弘幸;
摘要
权利要求

LDPC符号のビットノード演算を複数の処理に分割して行うビットノード演算部と、 前記ビットノード演算部により分割して処理が行われる毎に、分割して行われた処理の結果に基づいて部分的なビット判定値を求め、復号を行うことを繰り返すビット判定部と、 前記LDPC符号のパリティチェック方程式を満たすか否かの判定を前記ビット判定部により求められた前記ビット判定値に基づいて行い、前記パリティチェック方程式を満たす場合に前記ビットノード演算と前記復号を終了させる判定部と を備える復号装置。前記判定部による直前の前記判定時に求められたシンドロームを保存するシンドローム保存部と、 前回の前記復号時に前記ビット判定部により求められた前記ビット判定値を保存するビット判定値保存部と をさらに備え、 前記判定部は、今回の前記復号時に前記ビット判定部により求められた前記ビット判定値と、前記ビット判定値保存部に保存されている前記ビット判定値との差分に基づいて、前記シンドローム保存部に保存されている前記シンドロームを更新し、更新した前記シンドロームに基づいて、前記判定を行う 請求項1に記載の復号装置。LDPC符号のビットノード演算を複数の処理に分割して行い、 分割した処理が行われる毎に、分割して行われた処理の結果に基づいて部分的なビット判定値を求めて復号を行うことを繰り返し、 前記LDPC符号のパリティチェック方程式を満たすか否かの判定を前記ビット判定値に基づいて行い、 前記パリティチェック方程式を満たす場合に前記ビットノード演算と前記復号を終了させる ステップを含む復号方法。LDPC符号のビットノード演算を複数の処理に分割して行い、 分割した処理が行われる毎に、分割して行われた処理の結果に基づいて部分的なビット判定値を求めて復号を行うことを繰り返し、 前記LDPC符号のパリティチェック方程式を満たすか否かの判定を前記ビット判定値に基づいて行い、 前記パリティチェック方程式を満たす場合に前記ビットノード演算と前記復号を終了させる ステップを含む処理をコンピュータに実行させるプログラム。

说明书全文

本技術は、復号装置、復号方法、およびプログラムに関し、特に、繰り返し復号の演算量を減らすことができるようにした復号装置、復号方法、およびプログラムに関する。

[LDPC符号について] 近年、誤り訂正符号としてLDPC(Low-Density Parity-Check)符号が注目されている(非特許文献1)。LDPC符号は、それを定義するパリティチェック行列が疎なものであることを特徴とする。疎な行列とは、行列の要素の"1"の個数が非常に少なく構成される行列をいう。

図1は、(12,6)LDPC符号のパリティチェック行列の例を示す図である。

図1のパリティチェック行列Hは、各列の重み("1"の数)が"3"、各行の重みが"6"の行列である。LDPC符号による符号化は、パリティチェック行列Hに基づいて生成行列Gを生成し、生成行列Gを2元の情報に乗算して符号語を生成することで実現される。

具体的には、LDPC符号による符号化を行う符号化装置は、パリティチェック行列Hの転置行列HTとの間にGHT=0が成立する生成行列Gを算出する。ここで、生成行列Gがk×n行列である場合には、符号化装置は、生成行列Gに対してkビットからなる情報を乗算し、nビットからなる符号語を生成する。符号化装置によって生成された符号語は、値が"0"の符号ビットが"+1"に、値が"1"の符号ビットが"−1"にマッピングされて送信され、所定の通信路を介して受信側において受信される。

一方、LDPC符号の復号方法としては、パリティチェック行列を2部グラフで表現し、チェックノードとビットノードの間で尤度情報を交換しながら繰り返し処理を行う方法が知られている。

図2は、図1のパリティチェック行列Hの2部グラフを示す図である。

図2の上段に示す白抜きの四がチェックノードを表し、下段に示す白抜きの丸がビットノードを表す。チェックノードはパリティチェック行列の行に対応し、ビットノードはパリティチェック行列の列に対応する。パリティチェック行列Hの0以外の要素をノード間の接続に対応させた場合、図2に示すように各チェックノードとビットノードがエッジで接続される。

[従来のBP復号] ここで、LDPC符号の復号方法の一つであるBP(Belief Propagation)復号について説明する。

符号ビット長をN、パリティチェック行数Mのパリティチェック行列をH=[Hmn]とする。mは行番号(チェックノード番号)を表し、0≦m

mn=1}とし、n番目のビットを用いてパリティチェック演算を行うパリティチェック番号の集合をM(n)={m | H

mn=1}とする。N(m)={n | H

mn=1}は、m番目のチェックノード(チェックノードm)に繋がるビットノードの集合を表し、M(n)={m | H

mn=1}は、n番目のビットノード(ビットノードn)に繋がるチェックノードの集合を表す。

n番目のビットの受信値から求まる初期の尤度をFn、i回目の復号処理におけるチェックノードmからビットノードnへの尤度をεmn(i)、i回目の復号処理におけるビットノードnからチェックノードmへの尤度をzmn(i)とする。また、i回目の復号処理によって得られたビットnの事後尤度をzn(i)とする。繰り返し復号は、復号処理があらかじめ定められた最大回数だけ繰り返し行われることによって実現される。この場合、BP復号は次のように表される。

初期化: LDPC復号回路は、iに1を設定する。 LDPC復号回路は、各zmn(0)にFnを設定する。

ステップ1: (i)チェックノード演算 LDPC復号回路は、全てのnと、m∈M(n)を満たす全てのmについて、次式(1)、(2)によりεmn(i)を求める。式(1)のn’は、N(m)に含まれるビットノードのうちの、nを除くビットノードを表す。

(ii)ビットノード演算 LDPC復号回路は、全てのmと、n∈N(m)を満たす全てのnについて、次式(3)によりzmn(i)を求め、式(4)によりzn(i)を求める。式(3)のm’は、M(n)に含まれるチェックノードのうちの、mを除くチェックノードを表す。

ステップ2: (i)硬判定 LDPC復号回路は、zn(i)>0である場合にはwn(i)=1、zn(i)<0である場合にはwn(i)=0として硬判定を行う。またLDPC復号回路は、硬判定の結果に基づいて、硬判定値(ビット判定値)を要素とするベクトルである判定値ベクトルw(i)=[wn(i)]を求める。

(ii)復号終了条件判定 LDPC復号回路は、パリティチェック方程式Hw(i)の演算であるパリティチェック演算を行う。LDPC復号回路は、パリティチェック方程式Hw(i)=0を満たす、すなわち0≦m

ステップ3: LDPC復号回路は、復号結果としてw(i)を出する。

BP復号は、以上のように1回の復号処理においてチェックノード演算が全て終了した後にビットノード演算を全て行うものである。すなわち、ステップ1の(i)のチェックノード演算においてεmn(i)を求め、その結果を用いて、(ii)のビットノード演算においてzmn(i),zn(i)を求めるようになされている。

[従来のgroup shuffled BP復号] ところで、LDPC符号の繰り返し復号において、復号が収束するまでの回数を少なくするための方法が提案されている(非特許文献2,3)。

非特許文献2には、ビットノード演算を分割して行うgroup shuffled BP復号が記載されている。また、特許文献1には、group shuffled BP復号回路を複数用いてレプリカ結合する復号回路が記載されている。特許文献2には、shuffled BP復号回路において尤度の更新スケジュールを変更することによって、効率よく復号できる復号装置ならびに方法が記載されている。

次に、group shuffled BP復号について説明する。group shuffled BP復号は次のように表される。ビットノードを分割するグループ数をG、各グループで処理するビットノードの数をNg=N/Gとする。

初期化: LDPC復号回路は、iに1を設定する。 LDPC復号回路は、各zmn(0)にFnを設定する。

ステップ1: LDPC復号回路は、処理対象とするビットノードのグループを表す変数gを0からG-1まで変えながら、(i)のチェックノード演算と(ii)のビットノード演算を繰り返す。すなわち、LDPC復号回路は、G個のチェックノードのグループのうちの1つ目のグループを対象としてチェックノード演算とビットノード演算を行う。次に、LDPC復号回路は、2つ目のグループを対象としてチェックノード演算とビットノード演算を行い、以降、3つ目以降のグループを順次対象として、チェックノード演算とビットノード演算を行う。

(i)チェックノード演算 LDPC復号回路は、gNg≦n<(g+1)Ngを満たすnと、m∈M(n)を満たすmについて、次式(6)、(7)によりεmn(i)を求める。

(ii)ビットノード演算 LDPC復号回路は、gNg≦n<(g+1)Ngを満たすnと、m∈M(n)を満たすmについて、次式(8)によりzmn(i)を求め、式(9)によりzn(i)を求める。

ステップ2: (i)硬判定 LDPC復号回路は、zn(i)>0である場合にはwn(i)=1、zn(i)<0である場合にはwn(i)=0として硬判定を行う。またLDPC復号回路は、硬判定の結果に基づいて、判定値ベクトルw(i)=[wn(i)]を求める。

(ii)復号終了条件判定 LDPC復号回路は、パリティチェック方程式Hw(i)=0を満たす、すなわち0≦m

ステップ3: LDPC復号回路は、復号結果としてw(i)を出力する。

図3は、以上のようなgroup shuffled BP復号を行うLDPC復号回路の構成を示すブロック図である。

図3のLDPC復号回路1は、チェックノード演算回路11、ビットノード演算回路12、硬判定回路13、パリティチェック回路14、および出力回路15から構成される。チェックノード演算回路11とビットノード演算回路12に対しては、n番目のビットの受信値から求まる初期の尤度であるFnが入力される。

チェックノード演算回路11は、ステップ1(i)の処理として説明したように、ビットノードの所定のグループを対象としてチェックノード演算を行い、εmn(i)を求める。チェックノード演算回路11はεmn(i)をビットノード演算回路12に出力する。

ビットノード演算回路12は、ステップ1(ii)の処理として説明したようにビットノード演算を行い、zmn(i)とzn(i)を求める。ビットノード演算回路12は、zn(i)を硬判定回路13に出力し、zmn(i)と、前回(i-1回目)の復号処理により求められたzmn(i-1)をチェックノード演算回路11に出力する。

硬判定回路13は、ステップ2(i)の処理として説明したように硬判定を行う。硬判定回路13は、判定値ベクトルwn(i)をパリティチェック回路14と出力回路15に出力する。

パリティチェック回路14は、ステップ2(ii)の処理として説明したように復号終了条件判定を行う。パリティチェック回路14は、符号ビット長に等しいNのビットノードについてのビットノード演算が終了する毎に、復号終了条件判定を1度行う。パリティチェック方程式Hw(i)=0を満たさない場合であって、復号処理の繰り返し回数があらかじめ定められた最大回数に到達していないとき、復号終了条件を満たさないと判定される。また、パリティチェック方程式Hw(i)=0を満たす場合、または、復号処理の繰り返し回数があらかじめ定められた最大回数に到達している場合、復号終了条件を満たすと判定される。

パリティチェック回路14は、復号終了条件を満たさないと判定した場合、iを1増やして復号処理を繰り返すことを指示する制御信号をチェックノード演算回路11とビットノード演算回路12に出力する。一方、パリティチェック回路14は、復号終了条件を満たすと判定した場合、そのことを表す信号を出力回路15に出力する。

出力回路15は、復号終了条件を満たすことを表す信号がパリティチェック回路14から供給された場合、判定値ベクトルwn(i)を復号結果として出力する。

[従来のlayered BP復号] 非特許文献3には、ターボ復号、あるいはlayered BP復号として知られる、チェックノード演算を複数の処理に分割して行う復号方法が記載されている。次に、Layered BP復号について説明する。Layered BP復号は次のように表される。

初期化: LDPC復号回路は、iに1を設定する。 LDPC復号回路は、各εmn(0)に0を設定する。

ステップ1: LDPC復号回路は、処理対象とするチェックノードを表す変数mを0からM-1まで変えながら、(i)のビットノード演算と(ii)のチェックノード演算を繰り返す。

(i)ビットノード演算 LDPC復号回路は、n∈N(m)を満たすnについて、次式(11)によりzmn(i-1)を求める。

(ii)チェックノード演算 LDPC復号回路は、n∈N(m)を満たすnについて、次式(12)、(13)によりεmn(i)を求める。

ステップ2: (i)硬判定 LDPC復号回路は、全てのnについて、次式(14)によりzn(i)を求める。

また、LDPC復号回路は、zn(i)>0である場合にはwn(i)=1、zn(i)<0である場合にはwn(i)=0として硬判定を行う。またLDPC復号回路は、硬判定の結果に基づいて、判定値ベクトルw(i)=[wn(i)]を求める。

(ii)復号終了条件判定 LDPC復号回路は、パリティチェック方程式Hw(i)=0を満たす、すなわち0≦m

ステップ3: LDPC復号回路は、復号結果としてw(i)を出力する。

非特許文献4には、受信語を硬判定したものが符号語の条件を満たすかどうかを復号処理の繰り返し前に判定し、符号語の条件を満たす場合には復号処理を繰り返さないようにする技術が記載されている。

特表2008−527760号公報

特開2008−16959号公報

R. G. Gallager, "Low-density parity-check codes," IRE Trans. Inform. Theory, vol. IT-8, pp. 21-28, Jan. 1962.

J. Zhang and M. Fossorier, “Shuffled belief propagation decoding,” Proc. 36th Annu. Asilomar Conf. Signals, Syst., Computers, pp. 8-15, Nov. 2002.

M. M. Mansour and N. R. Shanbhag, “Turbo decoder architecture for low-density parity-check codes,” Proc. Global Telecommun. Conf., pp. 1383-1388, Nov. 2002.

Timo Lehnigk-Emden, Norbert When and Friedbert Berens, “Enhanced iteration control for ultra low power LDPC decoding,” proceedings of ICT-MobileSummit 2008.

一般に、装置は低消費電力である方が望ましく、LDPC復号機能を搭載する装置についても同様である。LDPC復号はその演算量に応じた電力を消費する復号方法であるため、低消費電力を実現するためには、より少ない演算量となる復号方法の実現が求められる。

本技術はこのような状況に鑑みてなされたものであり、繰り返し復号の演算量を減らすことができるようにするものである。

本技術の一側面の復号装置は、LDPC符号のビットノード演算を複数の処理に分割して行うビットノード演算部と、前記ビットノード演算部により分割して処理が行われる毎に、分割して行われた処理の結果に基づいて部分的なビット判定値を求め、復号を行うことを繰り返すビット判定部と、前記LDPC符号のパリティチェック方程式を満たすか否かの判定を前記ビット判定部により求められた前記ビット判定値に基づいて行い、前記パリティチェック方程式を満たす場合に前記ビットノード演算と前記復号を終了させる判定部とを備える。

前記判定部による直前の前記判定時に求められたシンドロームを保存するシンドローム保存部と、前回の前記復号時に前記ビット判定部により求められた前記ビット判定値を保存するビット判定値保存部とをさらに設けることができる。この場合、前記判定部には、今回の前記復号時に前記ビット判定部により求められた前記ビット判定値と、前記ビット判定値保存部に保存されている前記ビット判定値との差分に基づいて、前記シンドローム保存部に保存されている前記シンドロームを更新させ、更新させた前記シンドロームに基づいて、前記判定を行わせることができる。

本技術の一側面においては、LDPC符号のビットノード演算が複数の処理に分割して行われ、分割した処理が行われる毎に、分割して行われた処理の結果に基づいて部分的なビット判定値を求めて復号を行うことが繰り返され、前記LDPC符号のパリティチェック方程式を満たすか否かの判定が前記ビット判定値に基づいて行われ、前記パリティチェック方程式を満たす場合に前記ビットノード演算と前記復号が終了する。

本技術によれば、繰り返し復号の演算量を減らすことができる。

パリティチェック行列の例を示す図である。

図1のパリティチェック行列の2部グラフを示す図である。

LDPC復号回路の構成を示すブロック図である。

本技術を適用したgroup shuffled BP復号の流れを示すフローチャートである。

図4の処理を行う復号回路の構成例を示すブロック図である。

シミュレーション結果を示す図である。

本技術を適用した他のgroup shuffled BP復号の流れを示すフローチャートである。

パリティチェック回路の構成例を示すブロック図である。

本技術を適用したlayered BP復号の流れを示すフローチャートである。

コンピュータの構成例を示すブロック図である。

以下、発明を実施するための形態について説明する。説明は以下の順序で行う。 1.第1の実施の形態(group shuffled BP復号の変形) 2.第2の実施の形態(layered BP復号の変形)

<第1の実施の形態> [group shuffled BP復号の変形] 従来のgroup shuffled BP復号では、チェックノード演算とビットノード演算からなる1回のステップ1の復号演算全体が終わる毎に、硬判定と復号終了条件判定が行われる。これに対して、本技術を適用したgroup shuffled BP復号においては、1回の復号演算を分割し、その分割した復号演算の間に、硬判定と復号終了条件判定が行われる。

分割した復号演算の間に復号終了条件を満たすと判定した場合には復号演算全体を終えることなく途中で処理を終了させることによって、同じ復号性能を維持しながら演算量を削減することが可能になる。

本技術を適用したgroup shuffled BP復号は次のように表される。

なお、ここでも、符号ビット長をN、パリティチェック行数Mのパリティチェック行列をH=[Hmn]とする。mは行番号(チェックノード番号)を表し、0≦m

mn=1}とし、n番目のビットを用いてパリティチェック演算を行うパリティチェック番号の集合をM(n)={m | H

mn=1}とする。

また、n番目のビットの受信値から求まる初期の尤度をFn、i回目の復号処理におけるチェックノードmからビットノードnへの尤度をεmn(i)、i回目の復号処理におけるビットノードnからチェックノードmへの尤度をzmn(i)とする。i回目の復号処理によって得られたビットnの事後尤度をzn(i)とする。ビットノードを分割するグループ数をG、各グループで処理するビットノードの数をNg=N/Gとする。

初期化: LDPC復号回路は、iに1を設定する。 LDPC復号回路は、各zmn(0)にFnを設定する。 LDPC復号回路は、Fn>0である場合にはwn(0)=1、Fn<0である場合にはwn(0)=0として硬判定を行う。またLDPC復号回路は、硬判定の結果に基づいて、判定値ベクトルw=[wn(0)]を求める。

ステップ1: LDPC復号回路は、処理対象とするビットノードのグループを表す変数gを0からG-1まで変えながら、(i)のチェックノード演算、(ii)のビットノード演算、(iii)の硬判定、および(iv)の復号終了条件判定を繰り返す。

すなわち、LDPC復号回路は、G個のチェックノードのグループのうちの1つ目のグループを対象としてチェックノード演算とビットノード演算を行った後、1つ目のグループを対象とした復号演算の結果に基づいて硬判定と復号終了条件判定を行う。LDPC復号回路は、復号終了条件を満たすと判定した場合、処理を終了させる。一方、復号終了条件を満たさないと判定した場合、LDPC復号回路は、2つ目以降のグループを順次対象として同様の処理を行う。

(i)チェックノード演算 LDPC復号回路は、gNg≦n<(g+1)Ngを満たすnと、m∈M(n)を満たすmについて、次式(16)、(17)によりεmn(i)を求める。

(ii)ビットノード演算 LDPC復号回路は、gNg≦n<(g+1)Ngを満たすnと、m∈M(n)を満たすmについて、次式(18)によりzmn(i)を求め、式(19)によりzn(i)を求める。

(iii)硬判定 LDPC復号回路は、gNg≦n<(g+1)Ngを満たすnについて、zn(i)>0である場合にはwn(i)=1、zn(i)<0である場合にはwn(i)=0として硬判定を行う。硬判定により、部分的な硬判定値が求められることになる。またLDPC復号回路は、硬判定の結果に基づいて、判定値ベクトルwのn番目の要素をwn(i-1)からwn(i)に更新する。

(iv)復号終了条件判定 LDPC復号回路は、パリティチェック方程式Hwの演算であるパリティチェック演算を行う。LDPC復号回路は、パリティチェック方程式Hw=0を満たす、すなわち0≦m

0≦m

ステップ2: LDPC復号回路は、復号処理の繰り返し回数があらかじめ定められた最大回数に到達した場合、ステップ3の処理を行う。一方、復号処理の繰り返し回数があらかじめ定められた最大回数に到達していない場合、LDPC復号回路はiを1増やしてステップ1の処理を行う。

ステップ3: LDPC復号回路は、復号結果として判定値ベクトルwを出力する。

以上の一連の流れを図4のフローチャートに示す。図4において破線L1で囲んで示す処理がステップ1の処理に対応し、一点鎖線L2で囲んで示す処理がステップ2の処理に対応する。図4のステップS1は初期化に対応し、ステップS9はステップ3の処理に対応する。適宜、各ステップの処理と、各ステップの処理を実行する構成との対応について図5(後述)の構成を用いて説明する。

すなわち、LDPC復号回路は、ステップS1において初期化を行い、ステップS2において変数gに0を設定する。初期化としてiに1を設定する処理と、ステップS2の変数gに0を設定する処理は図5のLDPC復号回路1の各回路により行われ、各zmn(0)にFnを設定する処理は、チェックノード演算回路11とビットノード演算回路12により行われる。また、初期化として判定値ベクトルw=[wn(0)]を求める処理は硬判定回路13により行われる。

また、LDPC復号回路は、ステップS3においてチェックノード演算を行い、ステップS4においてビットノード演算を行う。ステップS3のチェックノード演算はチェックノード演算回路11により行われ、ステップS4のビットノード演算はビットノード演算回路12により行われる。

LDPC復号回路は、ステップS5において硬判定を行い、ステップS6において、硬判定の結果に基づいて判定値ベクトルwを更新する。ステップS5の硬判定とステップS6の判定値ベクトルwの更新処理は硬判定回路13により行われる。

LDPC復号回路は、ステップS7においてパリティチェック演算を行い、ステップS8において、パリティチェック方程式Hw=0を満たすか否かを判定する。ステップS7のパリティチェック演算と、ステップS8の判定はパリティチェック回路14により行われる。LDPC復号回路は、パリティチェック方程式Hw=0を満たすとステップS8において判定した場合、ステップS9において判定値ベクトルwを出力し、処理を終了させる。判定値ベクトルwを出力する処理は出力回路15により行われる。

一方、パリティチェック方程式Hw=0を満たさないとステップS8において判定した場合、LDPC復号回路は、ステップS10において、変数gがG-1であるか否かを判定する。変数gがG-1ではないとステップS10において判定した場合、ステップS11において、変数gの値を1増やし、ステップS3以降の処理を繰り返す。ステップS10の判定はパリティチェック回路14により行われ、ステップS11の処理はLDPC復号回路1の各回路により行われる。

一方、変数gがG-1であるとステップS10において判定した場合、LDPC復号回路は、ステップS12において、iが最大回数に到達したか否かを判定する。iが最大回数に到達していないとステップS12において判定した場合、LDPC復号回路は、ステップS13において、変数iの値を1増やし、ステップS2以降の処理を繰り返す。ステップS12の判定はパリティチェック回路14により行われ、ステップS13の処理はLDPC復号回路1の各回路により行われる。

iが最大回数に到達したとステップS12において判定した場合、LDPC復号回路は、ステップS9において判定値ベクトルwを出力し、処理を終了させる。

従来のgroup shuffled BP復号では、1回の復号処理の途中でパリティチェック方程式Hw=0を満たす復号結果が得られたとしてもビットノードの全てのグループを対象とした復号演算が終了した後に復号終了条件判定が行われる。従って、1回の復号処理内でG回の復号演算が必ず行われる。一方、本技術を適用したgroup shuffled BP復号によれば、1回の復号処理の間に復号終了条件判定が行われるため、g

[回路構成] 図5は、本技術の一実施形態に係る復号装置21に設けられるLDPC復号回路1の構成例を示すブロック図である。図5に示す構成のうち、図3の構成と同じ構成には同じ符号を付してある。

図5のLDPC復号回路1は、チェックノード演算回路11、ビットノード演算回路12、硬判定回路13、パリティチェック回路14、出力回路15、および選択回路31から構成される。チェックノード演算回路11、ビットノード演算回路12、および選択回路31に対しては、n番目のビットの受信値から求まる初期の尤度であるFnが入力される。

チェックノード演算回路11は、変数gを0に設定し、ステップ1(i)の処理として説明したようにチェックノード演算を行い、εmn(i)を求める。チェックノード演算回路11はεmn(i)をビットノード演算回路12に出力する。チェックノード演算回路11は、適宜、出力回路15からの制御信号に従って変数gを1増やし、チェックノードのグループを切り替えてチェックノード演算を繰り返す。

ビットノード演算回路12は、ステップ1(ii)の処理として説明したように、チェックノード演算回路11により求められたεmn(i)を用いてzmn(i)とzn(i)を求める。ビットノード演算回路12は、zn(i)を選択回路31に出力し、zmn(i)と、直前の繰り返し復号により求められたzmn(i-1)をチェックノード演算回路11に出力する。

選択回路31は、初期化時、Fnを選択して硬判定回路13に出力する。また、選択回路31は、ビットノード演算回路12により求められたzn(i)が供給された場合、zn(i)を選択し、硬判定回路13に出力する。

硬判定回路13は、初期化時、選択回路31により選択されたFnに基づいて、Fn>0である場合にはwn(0)=1、Fn<0である場合にはwn(0)=0として硬判定を行い、判定値ベクトルw=[wn(0)]を求める。硬判定回路13は、判定値ベクトルwをパリティチェック回路14と出力回路15に出力する。

また、硬判定回路13は、ビットノード演算回路12により求められたzn(i)が選択回路31から供給された場合、ステップ1(iii)の処理として説明したように硬判定を行う。また、硬判定回路13は、硬判定の結果に基づいて判定値ベクトルwを更新し、更新後の判定値ベクトルwをパリティチェック回路14と出力回路15に出力する。

パリティチェック回路14は、ステップ1(iv)の処理として説明したように復号終了条件判定を行う。すなわち、パリティチェック回路14は、ビットノードの1つのグループ(Ng)を対象としたビットノード演算が終了する毎に、新たに得られた硬判定値を元に、復号終了条件判定を行う。

パリティチェック回路14は、復号終了条件を満たすと判定した場合、そのことを表す信号を出力回路15に出力する。一方、パリティチェック回路14は、復号終了条件を満たさないと判定した場合、変数gがG-1でないときには、変数gを1増やして演算を繰り返すことを指示する制御信号を出力する。また、パリティチェック回路14は、復号終了条件を満たさないと判定した場合、変数gがG-1であり、iが最大回数に到達していないときには、iを1増やして演算を繰り返すことを指示する制御信号を出力する。パリティチェック回路14から出力された制御信号はチェックノード演算回路11とビットノード演算回路12に供給される。

出力回路15は、復号終了条件を満たすことを表す信号がパリティチェック回路14から供給された場合、判定値ベクトルwを復号結果として出力する。

[シミュレーション結果] 図6は、従来のBP復号、従来のgroup shuffled BP復号、および本技術を適用したgroup shuffled BP復号のそれぞれの方法を用いてLDPC復号を行った場合の演算量のシミュレーション結果を表す図である。

シミュレーションモデルは、符号ビット長が1440、情報ビット長が1344のLDPC符号をBPSK変調によって変調して送信し、送信信号が白色雑音通信路を経た後に、復号処理の最大の繰り返し回数を16として繰り返し復号を行うものである。グラフの横軸は、ビットあたりのエネルギー(Eb)対雑音電力密度(N0)の比(Eb/N0)を表し、縦軸は、平均のビットノード演算数を符号ビット長で割った値(Nb)を表す。

図6に示すように、いずれの復号方法においても、Eb/N0の値が大きくなるに従って、Nbの値は小さくなっている。従来のBP復号と従来のgroup shuffled BP復号の場合、1回の復号処理において符号ビット長と同じ1440のビットノード演算が行われる。そのため、ビットノード演算数を符号ビット長で割って得られる値は、処理終了までの復号処理の繰り返し回数と等しい、1以上、16以下の整数の値となる。図6より、グラフで示された全てのEb/N0において、従来のBP復号より従来のgroup shuffled BP復号の方が少ない繰り返し回数で処理が完了していることが読み取れる。

1回の復号処理が途中で終了することがあるため、本技術を適用したgroup shuffled BP復号を用いた場合のビットノード演算数は、従来のgroup shuffled BP復号を用いた場合のビットノード演算数と等しいか、それより小さくなる。従来のgroup shuffled BP復号を用いた場合のビットノード演算数は、繰り返し回数と符号ビット長を乗算して得られた値によって表される。

図6より、グラフで示された全てのEb/N0において、本技術を適用したgroup shuffled BP復号を用いた場合のNbの値は、従来のgroup shuffled BP復号を用いた場合の値より小さくなっており、演算量が削減されたことが読み取れる。例えば、Eb/N0=6dBの条件では、従来のgroup shuffled BP復号ではNb=1.16であったのに対し、本技術を適用したgroup shuffled BP復号ではNb=0.87となり、演算量が約25%削減されている。

[パリティチェック演算について] 従来のgroup shuffled BP復号と比べた場合、本技術を適用したgroup shuffled BP復号では復号終了条件判定の回数(パリティチェック演算の回数)が約G倍となる。この場合であっても、全体の演算量が多くならないことについて説明する。

ここで、ステップ1(iii)で更新される硬判定値wn(i)の数(判定値ベクトルwの要素の数)は、nがgNg≦n<(g+1)Ngの範囲にある値であり、その数がNg個であることに着目する。

まず、ステップ1(iii)で硬判定値wn(i)が更新される前のパリティチェック方程式の左辺は、次式(21)で表される。式(21)は、式(20)の変数gにg-1を代入することによって導かれる。硬判定値wn(i)が更新される前のパリティチェック方程式の左辺で表される値をシンドロームSm’とする。

ステップ1(iii)で更新された、更新後の硬判定値wn(i)を用いた新しいシンドロームSmは、シンドロームSm’を用いて次式(22)のように求めることができる。

従来のgroup shuffled BP復号におけるパリティチェック演算は、硬判定によって新たに得られたN個全ての硬判定値wn(i)を用いて行う必要がある。これに対し、本技術を適用したgroup shuffled BP復号におけるシンドロームSmの演算は、直前に計算されたシンドロームSm’と、前回の復号処理で求められた硬判定値wn(i-1)とを保存しておけば、シンドロームSm’に対して、今回の復号処理で更新されたNg個のビットノードの硬判定値の差分だけを反映させればよいことが分かる。

シンドロームSmの演算量は、演算に用いる硬判定値wn(i)の数の違いから、従来のgroup shuffled BP復号におけるパリティチェック演算の演算量の約1/Gである。つまり、約G倍に回数が増加したパリティチェック演算の1回あたりの演算量は約1/Gとなる。その結果、従来のgroup shuffled BP復号におけるパリティチェック演算の演算量と、本技術を適用したgroup shuffled BP復号におけるパリティチェック演算の演算量は、ほぼ同等の演算量になる。

ここで説明したパリティチェック演算を組み込んだ、本技術を適用したgroup shuffled BP復号について説明する。

初期化: LDPC復号回路は、iに1を設定する。 LDPC復号回路は、各zmn(0)にFnを設定する。 LDPC復号回路は、Fn>0である場合にはwn(0)=1、Fn<0である場合にはwn(0)=0として、判定値ベクトルw=[wn(0)]を求める。 LDPC復号回路は、判定値ベクトルw=[wn(0)]を用いて、シンドロームSmを次式(23)により求める。

また、LDPC復号回路は、全てのm(0≦m

m=0を満たす場合はステップ3の処理を行う。すなわち、S

m=0を満たす場合、復号結果が出力され、処理が終了される。一方、全てのmについてS

m=0を満たさない場合、LDPC復号回路は、シンドロームS

m’としてS

mを代入し、ステップ1の処理を行う。

ステップ1: LDPC復号回路は、変数gを0からG-1まで変えながら、(i)のチェックノード演算、(ii)のビットノード演算、(iii)の硬判定、および(iv)の復号終了条件判定を繰り返す。

(i)チェックノード演算 LDPC復号回路は、gNg≦n<(g+1)Ngを満たすnと、m∈M(n)を満たすmについて、次式(24)、(25)によりεmn(i)を求める。

(ii)ビットノード演算 LDPC復号回路は、gNg≦n<(g+1)Ngを満たすnと、m∈M(n)を満たすmについて、次式(26)によりzmn(i)を求め、式(27)によりzn(i)を求める。

(iii)硬判定 LDPC復号回路は、gNg≦n<(g+1)Ngを満たすnについて、zn(i)>0である場合にはwn(i)=1、zn(i)<0である場合にはwn(i)=0として硬判定を行う。また、LDPC復号回路は、硬判定の結果に基づいて、判定値ベクトルwのn番目の要素をwn(i-1)からwn(i)に更新する。

(iv)復号終了条件判定 LDPC復号回路は、m∈{∪M(n) | gNg≦n<(g+1)Ng}を満たすm(gNg≦n<(g+1)Ngの範囲にあるビットノードnに繋がるチェックノードmの和集合に属するチェックノードm)について、シンドロームSmを次式(28)により更新する。

LDPC復号回路は、全てのm(0≦m

m=0を満たす場合はステップ3の処理を行う。

全てのmについてSm=0を満たさない場合であって、いまの変数gがG-1でないとき、LDPC復号回路は、シンドロームSm’に式(28)により求めたSmを代入し、変数gを1増やしてステップ1の処理を継続する。一方、全てのmについてSm=0を満たさない場合であって、いまの変数gがG-1であるとき、LDPC復号回路はステップ2の処理を行う。

ステップ2: LDPC復号回路は、復号処理の繰り返し回数があらかじめ定められた最大回数に到達した場合、ステップ3の処理を行う。一方、復号処理の繰り返し回数があらかじめ定められた最大回数に到達していない場合、LDPC復号回路はiを1増やしてステップ1の処理を行う。

ステップ3: LDPC復号回路は、復号結果として判定値ベクトルwを出力する。

以上の処理においては、初期化時に、判定値ベクトルw=[wn(0)]を元にしたシンドロームSm’を求める演算が必要になっている。このとき、Sm’=0を満たせば、その時点で復号結果を出力して処理を終了し、ステップ1、ステップ2の処理を行わないようにすることができる。

以上の一連の流れを図7のフローチャートに示す。図7において破線L11で囲んで示す処理がステップ1の処理に対応し、一点鎖線L12で囲んで示す処理がステップ2の処理に対応する。図7のステップS21は初期化に対応し、ステップS31はステップ3の処理に対応する。適宜、各ステップの処理と、各ステップの処理を実行する構成との対応について説明する。

すなわち、LDPC復号回路は、ステップS21において初期化を行い、ステップS22において変数gに0を設定する。また、LDPC復号回路は、ステップS23においてチェックノード演算を行い、ステップS24においてビットノード演算を行う。LDPC復号回路は、ステップS25において硬判定を行い、ステップS26において硬判定値を保存する。硬判定値を保存する処理は後述する図8の硬判定値保存回路41により行われる。

ステップS27において、LDPC復号回路は、硬判定の結果に基づいて判定値ベクトルwを更新する。LDPC復号回路は、ステップS28において、パリティチェック演算として、式(28)に従ってシンドロームSmの演算を行う。前回の復号処理(i-1回目の復号処理)において求められたシンドロームSmが保存されている場合、式(28)の演算においては、保存されていたシンドロームSmがシンドロームSm’として用いられる。LDPC復号回路は、ステップS29において、式(28)の演算により求めたシンドロームSmを保存する。

ステップS30において、LDPC復号回路はSm=0を満たすか否かを判定する。LDPC復号回路は、Sm=0を満たすとステップS30において判定した場合、ステップS31において判定値ベクトルwを出力し、処理を終了させる。

一方、Sm=0を満たさないとステップS30において判定した場合、LDPC復号回路は、ステップS32において、変数gがG-1であるか否かを判定する。変数gがG-1ではないとステップS32において判定した場合、ステップS33において、変数gの値を1増やし、ステップS23以降の処理を繰り返す。

一方、変数gがG-1であるとステップS32において判定した場合、LDPC復号回路は、ステップS34において、iが最大回数に到達したか否かを判定する。iが最大回数に到達していないとステップS34において判定した場合、LDPC復号回路は、ステップS35において、変数iの値を1増やし、ステップS22以降の処理を繰り返す。

iが最大回数に到達したとステップS34において判定した場合、LDPC復号回路は、ステップS31において判定値ベクトルwを出力し、処理を終了させる。

[パリティチェック回路の構成] 図8は、以上のようにして直前に計算されたシンドロームSm’と前回の復号処理で求められた硬判定値wn(i-1)とを保存し、復号終了条件判定を行うパリティチェック回路14の構成例を示すブロック図である。

パリティチェック回路14は、硬判定値保存回路41、シンドローム計算回路42、シンドローム保存回路43、および判定回路44から構成される。硬判定回路13から出力された硬判定値wn(i)は硬判定値保存回路41とシンドローム計算回路42に入力される。

硬判定値保存回路41は、硬判定回路13により求められた硬判定値wn(i)を保存する。また、硬判定値保存回路41は、iが1増加したとき、保存していた硬判定値wn(i)をwn(i-1)としてシンドローム計算回路42に出力する。

シンドローム計算回路42は、初期化時、硬判定回路13により求められた硬判定値wn(0)を用いて、式(23)に従ってシンドロームSmを求める。また、シンドローム計算回路42は、iが1以上であるとき、式(28)に従ってシンドロームSmを求める。シンドロームSmの演算には、シンドローム保存回路43から出力されたシンドロームSm’と、硬判定回路13により求められ、新たに更新された硬判定値wn(i)と、硬判定値保存回路41から出力された硬判定値wn(i-1)とが用いられる。シンドローム計算回路42は、新たに求めたシンドロームSmをシンドローム保存回路43と判定回路44に出力する。

シンドローム保存回路43は、シンドローム計算回路42により求められたシンドロームSmを保存する。シンドローム保存回路43は、硬判定値wn(i)が新たに求められたとき、保存していたシンドロームSmを、直前のシンドロームSm’としてシンドローム計算回路42に出力する。

判定回路44は、全てのmについてSm=0を満たすか否かを判定し、判定結果に基づいて、復号を終了するか、継続するかの動作を切り替えるための制御信号を出力する。判定回路44から出力された制御信号は、図5のチェックノード演算回路11とビットノード演算回路12に供給される。

<第2の実施の形態> [layered BP復号の変形] 繰り返し復号の1回の復号処理の間隔よりも短い間隔で復号終了条件判定を行い、復号終了条件を満たす場合には処理を終了させることはlayered BP復号に適用することも可能である。本技術を適用したlayered BP復号は次のように表される。

初期化: LDPC復号回路は、iに1を設定する。 LDPC復号回路は、各εmn(0)に0を設定する。 LDPC復号回路は、Fn>0である場合にはwn=1、Fn<0である場合にはwn=0として硬判定を行い、判定値ベクトルw=[wn]を求める。

LDPC復号回路は、パリティチェック方程式Hw=0を満たすか否かを判定し、満たすと判定した場合、ステップ3の処理を行う。一方、パリティチェック方程式Hw=0を満たさないと判定した場合、LDPC復号回路はステップ1の処理を行う。

ステップ1: LDPC復号回路は、変数mを0からM-1まで変えながら、(i)のビットノード演算、(ii)のチェックノード演算、(iii)の硬判定、および(iv)の復号終了条件判定を繰り返す。

すなわち、LDPC復号回路は、パリティチェック行列の1行目を対象としてビットノード演算とチェックノード演算を行った後、1行目を対象とした復号演算の結果に基づいて硬判定と復号終了条件判定を行う。LDPC復号回路は、復号終了条件判定によって復号終了条件を満たすと判定した場合、復号を終了させる。一方、復号終了条件を満たさないと判定した場合、LDPC復号回路は、2行目以降を順次対象として同様の処理を行う。

(i)ビットノード演算 LDPC復号回路は、n∈N(m)を満たすnについて、次式(29)によりzmn(i-1)を求める。

(ii)チェックノード演算 LDPC復号回路は、n∈N(m)を満たすnについて、次式(30)、(31)によりεmn(i)を求める。

(iii)硬判定 LDPC復号回路は、n∈N(m)を満たすnについて、次式(32)によりzn(i)を求める。

また、LDPC復号回路は、zn(i)>0である場合にはwn=1、zn(i)<0である場合にはwn=0として硬判定を行い、判定値ベクトルwを更新する。

(iv)復号終了条件判定 LDPC復号回路は、パリティチェック方程式Hw=0を満たす場合はステップ3の処理を行う。一方、LDPC復号回路は、パリティチェック方程式Hw=0を満たさない場合であって、いまの変数mがM-1でないとき、LDPC復号回路はmを1増やしてステップ1の処理を継続する。パリティチェック方程式Hw=0を満たさない場合であって、いまの変数mがM-1であるとき、LDPC復号回路はステップ2の処理を行う。

ステップ2: LDPC復号回路は、復号処理の繰り返し回数があらかじめ定められた最大回数に到達した場合、ステップ3の処理を行う。一方、復号処理の繰り返し回数があらかじめ定められた最大回数に到達していない場合、LDPC復号回路はiを1増やしてステップ1の処理を行う。

ステップ3: LDPC復号回路は、復号結果として判定値ベクトルwを出力する。

以上のような一連の流れを図9のフローチャートに示す。図9において破線L21で囲んで示す処理がステップ1の処理に対応し、一点鎖線L22で囲んで示す処理がステップ2の処理に対応する。図9のステップS51は初期化に対応し、ステップS59はステップ3の処理に対応する。

すなわち、LDPC復号回路は、ステップS51において初期化を行い、ステップS52において変数mに0を設定する。初期化としてiに1を設定する処理と、ステップS2の変数mに0を設定する処理はLDPC復号回路1の各回路により行われ、各εmn(0)に0を設定する処理は、チェックノード演算回路11とビットノード演算回路12により行われる。また、初期化として判定値ベクトルw=[wn(0)]を求める処理は硬判定回路13により行われる。

また、LDPC復号回路は、ステップS53においてビットノード演算を行い、ステップS54においてチェックノード演算を行う。ステップS53のビットノード演算はビットノード演算回路12により行われ、ステップS54のチェックノード演算はチェックノード演算回路11により行われる。

LDPC復号回路は、ステップS55において硬判定を行い、ステップS56において、硬判定の結果に基づいて判定値ベクトルwを更新する。ステップS55の硬判定とステップS56の判定値ベクトルwの更新処理は硬判定回路13により行われる。

LDPC復号回路は、ステップS57においてパリティチェック演算を行い、ステップS58においてパリティチェック方程式Hw=0を満たすか否かを判定する。ステップS57のパリティチェック演算と、ステップS58の判定はパリティチェック回路14により行われる。

LDPC復号回路は、パリティチェック方程式Hw=0を満たすとステップS58において判定した場合、ステップS59において判定値ベクトルwを出力し、処理を終了させる。判定値ベクトルwを出力する処理は出力回路15により行われる。

一方、パリティチェック方程式Hw=0を満たさないとステップS58において判定した場合、LDPC復号回路は、ステップS60において、変数mがM-1であるか否かを判定する。変数mがM-1ではないとステップS60において判定した場合、ステップS61において、変数mの値を1増やし、ステップS53以降の処理を繰り返す。

一方、変数mがM-1であるとステップS60において判定した場合、LDPC復号回路は、ステップS62において、iが最大回数に到達したか否かを判定する。iが最大回数に到達していないとステップS62において判定した場合、LDPC復号回路は、ステップS63において、変数iの値を1増やし、ステップS52以降の処理を繰り返す。ステップS60の判定はパリティチェック回路14により行われ、ステップS61の処理はLDPC復号回路1の各回路により行われる。

iが最大回数に到達したとステップS62において判定した場合、LDPC復号回路は、ステップS59において判定値ベクトルwを出力し、処理を終了させる。

従来のlayered BP復号では、1回の復号処理の途中でパリティチェック方程式Hw=0を満たす復号結果が得られたとしても全てのチェックノード演算を実行した後に復号終了条件判定が行われる。従って、1回の復号処理内でM回の復号演算が必ず行われる。一方、本技術を適用したlayered BP復号によれば、1回の復号処理の間に復号終了条件判定が行われるため、m

なお、本技術を適用したlayered BP復号においても、直前に計算されたシンドロームSm’と前回の復号処理で求められた硬判定値wn(i-1)とを保存しておき、上述したように、復号終了条件判定をシンドロームを用いて行うようにすることも可能である。

[コンピュータの構成例等] 上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。以上の処理をソフトウェアで実現することによって、LDPC復号にかかる時間を短縮することができる。

一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。

図10は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。

CPU(Central Processing Unit)51、ROM(Read Only Memory)52、RAM(Random Access Memory)53は、バス54により相互に接続されている。

バス54には、さらに、入出力インタフェース55が接続されている。入出力インタフェース55には、キーボード、マウスなどよりなる入力部56、ディスプレイ、スピーカなどよりなる出力部57が接続される。また、入出力インタフェース55には、ハードディスクや不揮発性のメモリなどよりなる記憶部58、ネットワークインタフェースなどよりなる通信部59、リムーバブルメディア61を駆動するドライブ60が接続される。

以上のように構成されるコンピュータでは、CPU51が、例えば、記憶部58に記憶されているプログラムを入出力インタフェース55及びバス54を介してRAM53にロードして実行することにより、上述した一連の処理が行われる。

CPU51が実行するプログラムは、例えばリムーバブルメディア61に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供され、記憶部58にインストールされる。

なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。

本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。

例えば、本技術は、以下のような構成もとることができる。

(1) 繰り返し復号の1回の復号処理の間隔よりも短い間隔で復号終了条件を満たすか否かの判定を行い、前記復号終了条件を満たす場合、1回の前記復号処理の途中で処理を終了させる判定部を備える 復号装置。

(2) 前記復号終了条件は、線形ブロック符号のパリティチェック方程式を満たすことである 前記(1)に記載の復号装置。

(3) 前記線形ブロック符号はLDPC符号である 前記(2)に記載の復号装置。

(4) ビットノード演算を複数の処理に分割して行うビットノード演算部と、 前記ビットノード演算部により分割して処理が行われる毎に、分割して行われた処理の結果に基づいて部分的なビット判定値を求め、復号を行うビット判定部と をさらに備え、 前記判定部は、前記ビット判定部により求められた前記ビット判定値に基づいて、前記復号終了条件を満たすか否かの判定を行う 前記(3)に記載の復号装置。

(5) 前記判定部による直前の前記復号終了条件を満たすか否かの判定時に求められたシンドロームを保存するシンドローム保存部と、 前回の前記復号処理時に前記ビット判定部により求められた前記ビット判定値を保存するビット判定値保存部と をさらに備え、 前記判定部は、今回の前記復号処理時に前記ビット判定部により求められた前記ビット判定値と、前記ビット判定値保存部に保存されている前記ビット判定値との差分に基づいて、前記シンドローム保存部に保存されている前記シンドロームを更新し、更新した前記シンドロームに基づいて、前記復号終了条件を満たすか否かの判定を行う 前記(4)に記載の復号装置。

(6) 前記判定部は、1回目の前記復号処理を開始する前に前記復号終了条件を満たすか否かの判定を行い、前記復号終了条件を満たす場合、前記繰り返し復号を行わない 前記(1)乃至(5)のいずれかに記載の復号装置。

(7) チェックノード演算を複数の処理に分割して行うチェックノード演算部をさらに備え、 前記ビット判定部は、前記チェックノード演算部により分割して処理が行われる毎に、分割して行われた処理の結果に基づいて前記ビット判定値を求める 前記(1)乃至(6)のいずれかに記載の復号装置。

1 LDPC復号回路, 11 チェックノード演算回路, 12 ビットノード演算回路, 13 硬判定回路, 14 パリティチェック回路, 15 出力回路, 31 選択回路, 41 硬判定値保存回路, 42 シンドローム計算回路, 43 シンドローム保存回路, 44 判定回路

QQ群二维码
意见反馈