説明

LDPC符号検出装置及びLDPC符号検出方法

【課題】復号が収斂するための繰り返し回数が少なく復号特性に優れたLDPC符号検出技術を提供する。
【解決手段】すべての検査ノードについて、検査ノード選択手段7が優先度の高い順に順次選択する。検査ノード演算手段8は、選択された検査ノードについて、信頼度βに基づき、当該検査ノードに接続する各ビットノードに向け伝搬する信頼度αを算出し伝搬する。優先度更新手段9は、信頼度βに基づき信頼度が大きい順に検査ノードの優先度を決定し優先度を更新する。ビットノード演算手段11は、信頼度αが更新された場合、αの更新された検査行列の要素と同じ列に属するすべての非零要素に対応する各ビットノードについて信頼度βを算出し更新する。これにより、ノード間を信頼度が効率よく伝搬するため、サムプロダクト・アルゴリズムの収斂が促進される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、低密度パリティ検査(low density parity check:以下「LDPC」という。)符号を用いて受信値から送信符号を検出する符号検出技術に関する。
【背景技術】
【0002】
LDPC符号は、1960年代にGallagerによって発案され(非特許文献1参照)、1990年代後半にMacKayやNealらによって再発見された符号である。その符号特性はShannonの限界に迫ることが知られており、次世代の誤り訂正符号として有望視されている(非特許文献2,3参照)。
【0003】
LDPC符号は復号法としてサムプロダクト(Sum-Product)アルゴリズムを適用することにより、線形時間での復号と、優れた符号特性を達成することができる。このサムプロダクト・アルゴリズムは、パリティ・ビット数分の行処理と符号ビット数分の列処理からなるが、各行、各列処理は独立に計算してもよいことから、ハードウェアの並列実装に適している。
【0004】
以下、LDPC符号とその復号法について簡単に説明する。LDPC符号は、非常に疎な検査行列により定義される線形符号である。LDPC符号のパリティ検査行列による検査式の例を式(1)に示す。
【0005】
【数1】

【0006】
LDPC符号により符号化された情報源符号は、通信路を経て受信値(y,y,…,y)となり、検査行列式(1)により誤りの有無が検査される。ここで、LDPC符号を定義する検査行列式(1)は、図1に示すタナーグラフ(Tanner graph)で表現される。このタナーグラフは符号長分のビットノードb,b,…,bと検査ビット数分の検査ノードc,c,…,cによって構成され、2種類のノードは検査行列式(1)の1の位置によって枝(以下「内部辺」という。)で接続される。受信符号に誤りが生じた場合には、図1のタナーグラフに受信値(y,y,…,y)を入力し、サムプロダクト・アルゴリズムを実行する。
【0007】
サムプロダクト・アルゴリズムは、タナーグラフにおける信頼度を表す値αmn,βmnを算出し、これらの信頼度を互いのノードで繰り返し交換しながら誤り訂正を実行するアルゴリズムである。信頼度を表す値αmn,βmnとしては、確率量や対数尤度比などが用いられる。
【0008】
タナーグラフの各検査ノードからビットノードへの内部辺は、検査行列の各行成分に対応し、各検査ノードで算出される信頼度αmnは検査ノードからビットノードへ伝搬される。この操作を「行処理」という。また、タナーグラフの各ビットノードから検査ノードへの内部辺は、検査行列の各列成分に対応し、各ビットノードで算出される信頼度βmnはビットノードから検査ノードへ伝搬される。この操作を「列処理」という。
【0009】
以下ではサムプロダクト・アルゴリズムの詳細を説明するが、その前に、本明細書において使用する用語の定義を行う。
【0010】
〔定義1〕(事前確率、事後確率、外部確率)
事象Bが生起する確率をP(B)と記す。事象Aが起こったことが既知であるとき、事象Bが生起する条件付確率をP(B|A)と記す。このとき、ヘイズの定理より、式(2)が成立する。このとき、P(B)を「事前確率」、P(B|A)を「事後確率」、P(A|B)を「外部確率」という。
【0011】
【数2】

(定義終わり)
【0012】
〔定義2〕(レギュラーLDPC符号、イレギュラーLDPC符号)
LDPC符号のパリティ検査行列Hのm行目における非零要素の数(以下「行重み」という。)をw、n列目における非零要素の数(以下「列重み」という。)をwと記す。行重みwが各行において均一で且つ列重みwが各列において均一であるパリティ検査行列Hを持つLDPC符号を「レギュラーLDPC符号(regular LDPC code)」という。レギュラーLDPC符号以外のLDPC符号を「イレギュラーLDPC符号(irregular LDPC code)」という。
(定義終わり)
【0013】
〔定義3〕(非零成分のインデックス集合)
LDPC符号のパリティ検査行列を
【0014】
【数3】

と表す。パリティ検査行列の列のインデックス集合{1,2,…,N}の部分集合A(m)及び行のインデックス集合{1,2,…,M}の部分集合B(n)を式(4)及び式(5)により定義する。A(m),B(n)を「非零成分のインデックス集合」という。
【0015】
【数4】

(定義終わり)
【0016】
〔定義4〕(Gallagerのf関数)
以下の式(6)で定義される関数f(x)を「Gallagerのf関数」という。
【0017】
【数5】

(定義終わり)
【0018】
〔定理1〕
Gallagerのf関数について、以下の関係が成立する。
【0019】
【数6】

(定理終わり)
【0020】
信頼度を表す値αmn,βmnとして確率量rmn,qmnを用いたサムプロダクト・アルゴリズムの詳細は、以下の(アルゴリズム1)に示す通りである。尚、受信値y(n=1,2,…,N)の事前確率をpint(y)と記す。また、タナーグラフの各内部辺fmnにおいて、検査ノードcからビットノードbへ送られる外部確率量をrmn(fmn)、ビットノードbから検査ノードcへ送られる外部確率量をqmn(fmn)と記す。また、ビットノードbにおける事後確率をppost(y)と記す。
【0021】
〔アルゴリズム1〕(確率量を用いたサムプロダクト・アルゴリズム)
(ステップ1) [初期化]
事前確率をpint(y=0),pint(y=1)(n=1,2,…,N)とする。Hmn=1を満たすすべての組(m,n)に対して、内部辺における外部確率rmnをrmn(fmn=0)=1/2,rmn(fmn=1)=1/2を初期設定し、外部確率qmnをqmn(fmn)=pint(y)に初期設定する。また、繰り返し変数lを1に設定し、繰り返し最大回数をlmaxに設定する。
【0022】
(ステップ2) [検査ノード(行処理)]
m=1,2,…,Mの順にHmn=1を満たすすべての組(m,n)に対して、更新式(8)(9)により外部確率rmn(fmn=0),rmn(fmn=1)を更新する。
【0023】
【数7】

【0024】
(ステップ3) [ビットノード(列処理)]
n=1,2,…,Nの順にHmn=1を満たすすべての組(m,n)に対して、更新式(10)(11)により外部確率qmn(fmn=0),qmn(fmn=1)を更新する。
【0025】
【数8】

【0026】
(ステップ4) [一時推定語の計算]
n=1,2,…,Nについて、式(13)(14)により事後確率ppost(y=0),ppost(y=1)を算出し、式(16)により一時推定語y^を計算する。
【0027】
【数9】

【0028】
(ステップ5) [パリティ検査]
一時推定語(y^,y^,…,y^)が以下のパリティ検査式(17)を満たすか検査する。満たせばアルゴリズム終了。
【0029】
【数10】

【0030】
(ステップ6) [繰り返し回数カウント]
l≦lmaxならばl←l+1とし、(ステップ2)へ。
l>lmaxならば、復号エラーとなり一時推定語(y^,y^,…,y^)を出力してアルゴリズムを終了。
(アルゴリズム1終わり)
【0031】
また、信頼度を表す値αmn,βmnとして対数尤度比LLR(y)=ln(p(y=0)/p(y=1))を用いたサムプロダクト・アルゴリズムの詳細は、以下の(アルゴリズム2)に示す通りである。
【0032】
〔アルゴリズム2〕(対数尤度比を用いたサムプロダクト・アルゴリズム)
(ステップ1) [初期化]
n=1,2,…,Nに対して、yからλを式(18)により算出する。式(18)においてσは通信路の状態によって適宜設定される定数である。そして、Hmn=1を満たすすべての組(m,n)に対して、対数尤度比βmnをλに初期設定する(βmn=λ)。また、繰り返し変数lを1に設定し(l=1)、繰り返し最大回数をlmaxに設定する。
【0033】
【数11】

【0034】
(ステップ2) [検査ノード(行処理)]
m=1,2,…,Mの順にHmn=1を満たすすべての組(m,n)に対して、更新式(19)により対数尤度比αmnを更新する。ここで、f(x)はGallagerのf関数である。
【0035】
【数12】

【0036】
(ステップ3) [ビットノード(列処理)]
n=1,2,…,Nの順にHmn=1を満たすすべての組(m,n)に対して、更新式(20)により対数尤度比βmnを更新する。
【0037】
【数13】

【0038】
(ステップ4) [一時推定語の計算]
n=1,2,…,Nについて、式(21)により一時推定語y^を計算する。
【0039】
【数14】

【0040】
(ステップ5) [パリティ検査]
一時推定語(y^,y^,…,y^)が以下のパリティ検査式(22)を満たすか検査する。満たせばアルゴリズム終了。
【0041】
【数15】

【0042】
(ステップ6) [繰り返し回数カウント]
l≦lmaxならばl←l+1とし、(ステップ2)へ。
l>lmaxならば、復号エラーとなり一時推定語(y^,y^,…,y^)を出力してアルゴリズムを終了。
(アルゴリズム2終わり)
【0043】
(アルゴリズム2)において、Gallagerのf関数をハードウェアで実装する場合、一般的にはルックアップ・テーブルによる表引き、線形補完といった方法が採られる。そのため、ハードウェア・コストのかかる回路となる。そこで、このf関数を近似するミニサム(min-sum)アルゴリズムが広く適用されている。Gallagerのf関数はx>0のとき単調減少関数となり、特にxの値が小さいときの出力が支配的となる。従って、式(19)のf関数部を次の式(23)で近似することができる。
【0044】
【数16】

【0045】
式(23)の第3項の変形は(定理1)を利用している。このミニサム・アルゴリズムを用いれば、加算、最小、正負の判定、及び正負の符号乗算のみで復号が可能となり、復号用ハードウェアにおける行処理演算ユニットの並列配置が十分に可能となる。
【0046】
次に、従来のLDPC復号器のハードウェアの実装について説明する。LDPC復号器のハードウェアへの実装については、非特許文献4〜8において報告されている。非特許文献4,5に記載されたLDPC復号器は完全並列LDPC復号器(Full-Parallel LDPC Decoder)と呼ばれ、各行、各列処理用の演算ユニットをすべて実装し、すべての演算ユニットは、LDPC符号の検査行列に従って完全に結線されている。この実装法は復号器の処理性能を得る最も単純な方法であるが、符号長の大きなLDPC符号に対しては極めて困難であるため、ハードウェアの実装が難しい。
【0047】
このことから、ハードウェアの実装と処理性能の両面から見ると部分並列実装(Partial-Parallel LDPC Decoder)が最も有力かつ実用的な実装法であり、非特許文献6〜8などで報告されている。
【0048】
非特許文献7,8等でみられる従来の部分並列LDPC復号器(Partial-Parallel LDPC Decoder)では、行重みwと列重みwが一定であるレギュラーLDPC符号のパリティ検査行列に対し、(アルゴリズム2)の(ステップ2)の行処理と(ステップ3)の列処理を独立に並列実行する。
【0049】
更に、(ステップ2)においては、M個の検査ノードを列重みw個に分割し、w個の検査ノードを並列に処理する。(ステップ3)においては、N個のビットノードを行重みw個に分割しw個のビットノードを並列に処理する。このように、行処理、列処理をそれぞれ列重み、行重みで分割するために、レギュラーLDPC符号のパリティ検査行列を図2のように区分けして構成する(非特許文献8参照)。
【0050】
図2は、1区画がp×p個の要素からなる部分行列(以下「ブロック」という。)を横にw個、縦にw個並べて、w×w個のブロックから、縦M行、横N列のパリティ検査行列が構成されている。各ブロック内の斜線は、ブロック内における1の要素の位置を表している。図2の斜線は、各ブロックにおいて、対角成分が1である単位行列の各行を規則的に右シフトしている。シフトによってあふれたビットはブロック内の最左列に挿入している。このように構成することで、行重み、列重みがそれぞれ横のブロック数wと縦のブロック数wとなるレギュラーLDPC符号用のパリティ検査行列が得られる。図2の例では、行重みw=6、列重みw=3の(3,6)レギュラーLDPC符号のパリティ検査行列である。
【0051】
このように規則的に1を配置することによって、図1のタナーグラフにおいて、信頼度情報を交換するノード間の結線情報をメモリに記憶しておく必要がなくなる。
【0052】
ここで、パリティ検査行列をランダムに構成したい場合には、規則的に生成した各ブロック内でランダムに列置換,行置換を実行すれば、w並列の行処理とw並列の列処理が可能なパリティ検査行列が維持できる。この場合は、復号器は、パリティ検査行列の1の要素の位置を記憶するメモリが必要となる。
【特許文献1】特開2005−45735号公報
【非特許文献1】R. G. Gallager, Low-Density Parity-Check Codes, MIP Press, Cambridge, MA, 1963.
【非特許文献2】D. J. C. MacKay, "Good error-correcting codes based on very sparse matrices," IEEE Trans, on Information Theory, Vol.47, pp.498-519, 2001.
【非特許文献3】S.Y. Chung, G.P. Forney Jr., T.J. Richardson, R.L. Urbanke, "On the design of low-density parity-check codes within 0.0045 dB of the Shannon limit," IEEE Communications letters, Vol.5, No.2, Feb. 2001.
【非特許文献4】A. Blanksby and C. Howland, "A 690-mW 1-Gbps 1024-b, rate-1/2 Low-Density Parity-Check Code Decoder," IEEE Journal of Solid State Circuits, Vol.37, pp.404-412, Mar., 2002.
【非特許文献5】E. Liao, E. Yeo and B. Nikolie, "Low-density parity-check code constructions for hardware implementation," Proceedings 2004 IEEE International Conference on Communications, ICCf04y Paris, pp.2573-2577, June, 2004.
【非特許文献6】Y. Chen and D. Hocevar, "A FPGA and ASIC Implementation of Rate 1/2 8088-b Irregular Low Density Parity Check Decoder," IEEE Global Telecommunications Conference, GLOBECOM'QS, pp.113-117, 2003.
【非特許文献7】M. Mansour and N. Shanbhag, "Low Power VLSI Decoder Architectures for LDPC Codes," Proceedings of the International Symposium on Low Power Electronics and Design, pp.284-289, 2002.
【非特許文献8】Marjan Karkooti and Joseph R. Cavallaro, "Semi-Parallel Reconfigurable Architectures for Real-Time LDPC Decoding," IEEE Proceedings of International Conference on Information Technology: Coding and Computing, ITCC'04,
【非特許文献9】T.J. Richardson and R,L. Urbanke, "The capacity of low-density parity-check codes under message-passing decoding", IEEE Trans, on Information Theory, vol.42, no.2, pp.599-618, 2001.
【発明の開示】
【発明が解決しようとする課題】
【0053】
ここで、実用的な復号用ハードウェアを実装するために、一般的に必要とされる手続きは、以下の3点に要約される。
【0054】
(1)行処理、列処理で扱う少数中間値の量子化。
(2)ハードウェア規模削減を目的とする、ミニサム(min-sum)アルゴリズムを用いた行処理の近似。
(3)行処理、列処理の各演算ユニットの結線を簡易にするパリティ検査行列の利用。
【0055】
上記(1)(2)により、誤り訂正が完了するまで繰り返し実行される復号処理の計算精度が劣化する。また、(3)により、利用可能な検査行列が限定されてしまう。そのため、ランダムに構成された理想的なLDPC符号(非特許文献9参照)への対応が難しい。結果的に、上記の手続きを適用したハードウェアによる復号では、復号処理が収斂するまでにかかる繰り返し回数が増加する。加えて、LDPC復号の復号特性の劣化も招く。
【0056】
非特許文献5〜8に記載の従来のLDPC復号用のハードウェアも、上記の手続きを適用して実用的なハードウェアを実現しているが、これらの問題点に関しては考慮されていない。
【0057】
そこで、本発明の目的は、行処理、列処理で扱う中間値である信頼度情報の伝搬効率を改善することにより、復号が収斂するための繰り返し回数が少なく復号特性に優れたLDPC符号検出技術を提供することを目的とする。
【課題を解決するための手段】
【0058】
〔1〕本発明の基本的な考え方
上記目的を達成するために、本発明においては、以下の2つの手法を導入することにより、復号用ハードウェアにおける信頼度の伝搬効率を改善する。
【0059】
(1)行処理、列処理を独立に実行するのではなく、各行処理に連動してその検査ノードに属するビットノードの列処理をパイプライン的に実行することで、信頼度の伝搬効率を改善する。
(2)各行処理に対し、その検査ノードに属するビットノードの信頼度の高さで分類し、信頼度の高い検査ノードから順に行処理を実行する。
【0060】
上記従来の部分並列LDPC復号器では、図2における各ブロックの行処理と列処理をそれぞれ1行1列目から順に並列実行するため、信頼度の伝搬において以下の点で効率が悪い。
【0061】
(a)パリティ検査行列(図2)の「1」の要素は各ブロックによって位置がまったくずれているため、行処理、列処理を1行1列目から順番に実行すると、各ブロックの行処理による信頼度の更新位置と列処理による信頼度の更新位置がずれる。従って、行処理の更新結果が列処理に反映されるタイミングはすべて異なり、その反映が遅れるブロックもある。
【0062】
(b)受信符号における信頼度の高いビットは、符号毎に異なるため、その信頼度が高いビットが計算に含まれる順番も受信符号毎に異なる。
【0063】
これに対し、本発明では、行処理と列処理の信頼度の伝搬効率を改善する手法として以下の2つの手法を導入する。
【0064】
(A)各行処理に連動してその検査ノードに属するビットノードの列処理をパイプライン的に並列実行することで、信頼度の伝搬効率を改善する。
(B)各行処理に対し、その検査ノードに属するビットノードの信頼度の高さで分類し、信頼度の高い検査ノードから順に行処理を実行する。
【0065】
これらの手法を図3を用いて説明する。図3は(3,6)レギュラーLDPC符号のパリティ検査行列を表し、図2と同様にブロックに区分けされている。また、各ブロック内の斜線は、図2と同様、ブロック内における1の要素の位置を表している。
【0066】
手法(A)により、行処理は、まず図3の縦に並ぶ3つのブロックに対して、第i(1),i(2),i(3)行目を同時に実行する。この行処理によって、信頼度α(i(1),j(11)),…,α(i(1),j(16)),α(i(2),j(21)),…,α(i(2),j(26)),α(i(3),j(31)),…,α(i(3),j(36))が更新される。
【0067】
次に、各ブロックで更新されたαに対応する列処理をすべて実行する。例えば、図3の第1行1列ブロックでは、α(i(1),j(11))が更新され、第2行1列ブロックでは、α(i(2),j(21))が更新され、第3行1列ブロックでは、α(i(3),j(31))が更新される。従って、第1列目のブロックで更新されたαに対応する列は第1列ブロック内の第j(11),j(21),j(31)列目であり、これらのすべての列に対して列処理を実行する。この処理によって、第j(11)列目の処理によるβ(i(1),j(11)),β(i(21),j(11)),β(i(31),j(11))と、第j(21)列目の処理によるβ(i(11),j(21)),β(i(2),j(21)),β(i(31),j(21))と、第j(31)列目の処理によるβ(i(11),j(31)),β(i(21),j(31)),β(i(3),j(31))との信頼度が更新される。
【0068】
手法(B)では、まず、各行処理に対して、その検査ノードに属するビットノードに向けた信頼度αの大きさで分類する。信頼度αは、検査ノードからビットノードへ伝搬され、信頼度αを受け取ったビットノードは、(アルゴリズム2)の(ステップ4)で、他の検査ノードから伝搬される信頼度αとの総和式(21)で、そのビットの推定語を算出する。ビットの推定語は総和式(21)の符号で判定するため、総和の絶対値が大きいときは、特に信頼できる判定結果であるといえる。
【0069】
ここで、総和の要素は検査ノードから伝搬される信頼度αであることから、行処理で算出されるαの値が或る閾値を超えた値であった場合は、その検査ノードは高い信頼度を伝搬するノードであるとする。そして、高い信頼度は早めに伝搬されると、信頼度の伝搬効率が改善されると考えられる。そこで、高い信頼度を伝搬する検査ノードに対する行処理を先に処理することとする。
【0070】
ここで、ミニサム・アルゴリズムを利用した行処理は、式(23)となる。つまり、この行処理によって、集合n∈A(m)に関する|βmn|の最小値か2番目の最小値かの何れかが信頼度αとして伝搬される。
【0071】
そこで、行処理で算出される信頼度の高さは、以下の式(24)で判定する。ここで、信頼度の高さの閾値をTαとする。
【0072】
【数17】

【0073】
式(24)で閾値以上のときは信頼度が高く、下回るときは信頼度が低いとして、各検査ノードを2つに分類する。この判定式で信頼度が高い値を伝搬する検査ノードであると判定された時は、次の繰り返しの行処理において、先に実行される。尚、この判定は、すべての検査ノードに対して、行処理の繰り返し毎に実行される。
【0074】
また、式(24)では各検査ノードの優先度を2つのランクに分類する場合で説明したが、一般に、3以上のランクに優先度の分類を行うようにしてもよい。
【0075】
〔2〕本発明の構成
本発明に係るLDPC符号検出装置の第1の構成は、低密度パリティ検査(以下「LDPC」という。)符号のパリティ検査行列のタナーグラフに対応して設定された複数の検査ノード及び複数のビットノードの間で信頼度α,βを反復伝搬させ、その過程において信頼度βから算出される事後値の硬判定値をパリティ検査行列でパリティ検査することにより収斂判定し送信符号の推定値を決定するサムプロダクト・アルゴリズムを用いて、受信値からの符号検出を行うLDPC符号検出装置において、前記各検査ノードに対し、当該検査ノードに接続する前記各ビットノードより伝搬される信頼度βを記憶する検査ノード記憶手段;前記各ビットノードに対し、当該ビットノードに接続する前記各検査ノードより伝搬される信頼度αを記憶するビットノード記憶手段;前記各検査ノードの優先度を記憶する優先度記憶手段;すべての前記検査ノードについて、前記優先度の高い順に順次選択する検査ノード選択手段;前記検査ノード選択手段が選択する前記検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βに基づき、当該検査ノードに接続する前記各ビットノードに向け伝搬する信頼度αを算出し、前記ビットノード記憶手段内の対応する信頼度αを更新する検査ノード演算手段;前記各検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βに基づき信頼度が大きい順に当該検査ノードの優先度を決定し、前記優先度記憶手段内の対応する優先度を更新する優先度更新手段;及び、前記ビットノード記憶手段内の信頼度αが更新された場合、前記パリティ検査行列における信頼度αの更新された要素と同じ列に属するすべての非零要素に対応する前記各ビットノードについて、当該ビットノードに接続する前記各検査ノードに向け伝搬する信頼度βを算出し、前記検査ノード記憶手段内の対応する信頼度βを更新するビットノード演算手段;を備えたことを特徴とする。
【0076】
この構成により、検査ノード演算手段が当該検査ノードに接続する前記各ビットノードに向け伝搬する信頼度αを更新すると、ビットノード演算手段により、パリティ検査行列における信頼度αが更新された要素と同列の非零要素に対応する各ビットノードについて、当該ビットノードに接続する各検査ノードに向け伝搬される信頼度βがパイプライン的に更新される。これにより、各検査ノード及び各ビットノード間を信頼度が効率よく伝搬するため、サムプロダクト・アルゴリズムの収斂が促進される。
【0077】
また、各検査ノードは、優先度更新手段により、信頼度βに基づいて、信頼度が大きい順に優先度が決定される。そして、検査ノード選択手段により、優先度が高い順に、検査ノード演算手段によって信頼度αの更新を実行する検査ノードが選択される。従って、大きい信頼度βを持つ検査ノードから優先的に、各ビットノードへ信頼度情報が伝搬される。そして、その信頼度情報は、即座に(パイプライン的に)ビットノードから各検査ノードに伝搬される。このように、サムプロダクト・アルゴリズムの収斂を促進するのに寄与する信頼度情報ほど速くノード間を伝搬するため、サムプロダクト・アルゴリズムの収斂がより促進される。
【0078】
ここで、「信頼度」としては、確率又はそれに準じた値(対数尤度比等)が使用される。
【0079】
「優先度」とは、外部値演算手段により外部値の伝搬を行う際の優先順位を表す指標をいう。優先度更新手段が優先度を決定する方法としては、種々の方法が考えられるが、例えば、信頼度として対数尤度比を用いた場合には、式(24)のように閾値判定を用いて尤度を複数のランクに分類することにより優先度を決定する方法を用いることができる。
【0080】
尚、サムプロダクト・アルゴリズムの収束判定に使用する事後値の算出は、上述の式(13)(14)や式(21)に示したような公知の方法が用いられる。
【0081】
本発明に係るLDPC符号検出装置の第2の構成は、前記第1の構成において、前記パリティ検査行列は、列方向にM個、行方向にN個の部分行列に区分けされ、各区画における部分行列の各行の非零成分の数は1個又は0個に設定されたものであり、M個の区画行の各々に対応して設けられたM個の前記検査ノード記憶手段、前記優先度記憶手段、前記検査ノード選択手段、前記検査ノード演算手段、及び前記優先度更新手段を備え、N個の区画列の各々に対応して設けられたN個の前記ビットノード記憶手段、及び前記ビットノード演算手段を備え、前記各区画行の前記検査ノード選択手段、前記検査ノード演算手段、及び前記優先度更新手段は並列動作し、前記各区画列の前記ビットノード演算手段は並列動作することを特徴とする。
【0082】
この構成により、図3のように、部分行列(以下「ブロック」という。)に区分けされたパリティ検査行列において、このブロック行列の行方向及び列方向に並列に信頼度伝搬の処理がされるため、サムプロダクト・アルゴリズムを高速に実行させることが可能となる。
【0083】
本発明に係るLDPC符号検出装置の第3の構成は、前記第2の構成において、前記各区画列の前記ビットノード演算手段は、その演算処理を、前記各区画行の前記検査ノード選択手段、前記検査ノード演算手段、及び前記優先度更新手段の演算処理とパイプライン的に実行することを特徴とする。
【0084】
この構成によれば、図3のように、部分行列(以下「ブロック」という。)に区分けされたパリティ検査行列において、各区画行の検査ノード選択手段、検査ノード演算手段、及び優先度更新手段により信頼度α及び優先度の演算処理が終了すると、パイプライン的に並行して各区画列のビットノード演算手段の信頼度βの演算処理が行われる。従って、各ノード間の信頼度情報の伝搬が速く、またハードウェアの待ち時間も最小限に抑えられるため、サムプロダクト・アルゴリズムを高速に実行させることが可能となる。
【0085】
本発明に係るLDPC符号検出装置の第4の構成は、前記第1乃至3の何れか一の構成において、前記信頼度α,βは対数尤度比であり、前記優先度更新手段は、前記各検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βの最小値を閾値判定で分類することにより当該検査ノードの優先度を決定し、前記優先度記憶手段内の対応する優先度を更新することを特徴とする。
【0086】
このように、信頼度α,βとして対数尤度比を使用すれば、信頼度βからの優先度の決定処理の演算が容易化される。従って、ハードウェア・コストを下げ、高速化することが可能となる。
【0087】
本発明に係るLDPC符号検出装置の第5の構成は、前記第1乃至3の何れか一の構成において、前記検査ノード記憶手段には、前記各検査ノードcに対し、当該検査ノードcに接続する前記各ビットノードbより伝搬される信頼度βmnが記憶されており、前記ビットノード記憶手段には、前記各ビットノードbに対し、当該ビットノードbに接続する前記各検査ノードcより伝搬される信頼度αmnが記憶されており、前記検査ノード演算手段は、前記検査ノード選択手段が選択する前記検査ノードcについて、当該検査ノードcに向け伝搬される前記信頼度βmnに基づき、(数18)により当該検査ノードcに接続する前記各ビットノードbに向け伝搬する信頼度αmnを算出し、前記ビットノード記憶手段内の対応する信頼度αmnを更新するものであり、前記優先度更新手段は、前記各検査ノードcについて、(数19)で算出されるηの値を2値以上に量子化して大きい順に高い優先度に決定し、前記優先度記憶手段内の対応する優先度を更新するものであり、前記ビットノード演算手段は、前記ビットノード記憶手段内の信頼度αmnが更新された場合、更新されたすべての信頼度αmnに対応する前記各ビットノードbについて、当該ビットノードに接続する前記各検査ノードcm’に向け伝搬する信頼度βm’nを(数20)により算出し、前記検査ノード記憶手段内の対応する信頼度βm’nを更新するものであることを特徴とする。
【0088】
【数18】

【0089】
【数19】

【0090】
【数20】

【0091】
このように、信頼度α,βとして対数尤度比を使用することにより、信頼度α,βの更新演算が式(25)や式(27)のように簡単化される。また、優先度更新手段による優先度の決定は、式(26)の演算及びこれを量子化する演算となり簡略化される。
【0092】
本発明に係るLDPC符号検出装置の第6の構成は、前記第5の構成において、前記検査ノード演算手段及び前記優先度更新手段は、前記(数18)及び(数19)の演算を、それぞれ(数21)及び(数22)の近似式により実行することを特徴とする。
【0093】
【数21】

【0094】
【数22】

【0095】
このように、Gallagerのf関数をミニサム・アルゴリズムを用いて近似化することにより、加算、最小、正負の判定、及び正負の符号乗算のみで復号が可能となる。従って、ハードウェア・コストを下げ、高速化することが可能となる。
【0096】
本発明に係るLDPC符号検出方法は、LDPC符号のパリティ検査行列のタナーグラフに対応して設定された複数の検査ノード及び複数のビットノードの間で信頼度α,βを反復伝搬させ、その過程において信頼度βから算出される事後値の硬判定値をパリティ検査行列でパリティ検査することにより収斂判定し送信符号の推定値を決定するサムプロダクト・アルゴリズムを用いて、受信値yからの符号検出を行うLDPC符号検出方法において、前記各検査ノードに対し、当該検査ノードに接続する前記各ビットノードより伝搬される信頼度βを記憶する検査ノード記憶手段について、各信頼度βを前記受信値yにより初期化する検査ノード初期化ステップ;前記各ビットノードに対し、当該ビットノードに接続する前記各検査ノードより伝搬される信頼度αを記憶するビットノード記憶手段について、各信頼度αを所定の初期値に初期化するビットノード初期化ステップ;前記各検査ノードの優先度を記憶する優先度記憶手段の各優先値を所定の初期値に初期化する優先値初期化ステップ;並びに、前記各検査ノード及び前記各ビットノードの間で前記信頼度α,βを反復伝搬させ、その過程において信頼度βから算出される事後値の硬判定値をパリティ検査行列でパリティ検査することにより収斂判定し送信符号の推定値を決定する推定ステップ;を備え、前記推定ステップにおいては、すべての前記検査ノードについて、前記優先度の高い順に順次選択する検査ノード選択ステップ;前記検査ノード選択ステップで選択された前記検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βを検査ノード記憶手段から読み出し、読み出された各信頼度βに基づき当該検査ノードに接続する前記各ビットノードに向け伝搬する信頼度αを算出する検査ノード演算ステップ;前記各検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βに基づき当該検査ノードの優先度を決定し、前記優先度記憶手段内の対応する優先度を更新する優先度更新ステップ;及び、前記ビットノード記憶手段内の信頼度αが更新された場合、更新されたすべての信頼度αに対応する前記各ビットノードについて、当該ビットノードに接続する前記各検査ノードに向け伝搬する信頼度βを算出し、前記検査ノード記憶手段内の対応する信頼度βを更新するビットノード演算ステップ;からなる一連の演算処理を、前記検査ノード記憶手段内の信頼度βから算出される事後値を硬判定して得られる一次推定語とパリティ検査行列の積が0となるまで繰り返し実行することを特徴とする。
【0097】
本発明に係るプログラムは、コンピュータに読み込んで実行することにより、コンピュータを前記第1乃至6の何れか一の構成のLDPC符号検出装置として機能させることを特徴とする。
【発明の効果】
【0098】
以上のように、本発明によれば、検査ノードからビットノードに信頼度情報が伝搬されると、パリティ検査行列において伝搬された信頼度に対応する要素と同列の非零要素に対応する各ビットノードについて、当該ビットノードから各検査ノードに向け信頼度がパイプライン的に伝搬される。これにより、各検査ノード及び各ビットノード間を信頼度が効率よく伝搬するため、サムプロダクト・アルゴリズムの収斂が促進される。更に、大きい信頼度を有する検査ノードから順に信頼度の伝搬を実行することにより、サムプロダクト・アルゴリズムの収斂を促進するのに寄与する信頼度情報ほど速くノード間を伝搬するため、サムプロダクト・アルゴリズムの収斂がより促進される。その結果、復号が収斂するための繰り返し回数が少なく復号特性に優れたLDPC符号検出装置及びLDPC符号検出方法を提供することができる。
【発明を実施するための最良の形態】
【0099】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【実施例1】
【0100】
本実施例1においては、2元LDPC符号を取り扱う。図4は本発明の実施例1に係るLDPC符号検出装置1の構成を表すブロック図である。図4において、LDPC符号検出装置1は、受信値記憶手段2、ノード初期化手段3、受信値対数尤度演算手段4、検査ノード記憶手段5、ビットノード記憶手段6、検査ノード選択手段7、検査ノード演算手段8、優先度更新手段9、優先度記憶手段10、ビットノード演算手段11、硬判定手段12、及びパリティ判定手段13を備えている。
【0101】
検査ノード記憶手段5は、図1に示したようなタナーグラフの各検査ノードc(m=1,2,…,M)に対し、当該検査ノードcに接続する各ビットノード{b|n∈A(m)}より伝搬される信頼度{βmn|n∈A(m)}を記憶する。ビットノード記憶手段6は、図1に示したようなタナーグラフの各ビットノードb(n=1,2,…,N)に対し、当該ビットノードbに接続する各ビットノード{b|n∈A(m)}より伝搬される信頼度{βmn|n∈A(m)}を記憶する。優先度記憶手段10は、各検査ノードc(m=1,2,…,M)についての優先度を記憶する。受信値記憶手段2は、外部から入力されるLDPC符号のNビットの受信値(y,y,…,y)を一時記憶する。
【0102】
ノード初期化手段3は、検査ノード記憶手段5及びビットノード記憶手段6内の対数尤度比βmn、αmnの初期設定をする。また、内部変数として有する繰り返し変数l及び繰り返し最大回数をlmaxの初期設定をする。受信値対数尤度演算手段4は、受信値記憶手段2に一時記憶された受信値yから受信値対数尤度λを式(18)により算出する。
【0103】
検査ノード選択手段7は、優先度記憶手段10に記憶された優先度に基づいて、すべての検査ノードc(m=1,2,…,M)について優先度の高い順に順次選択する。
【0104】
検査ノード演算手段8は、検査ノード選択手段7が選択する検査ノードcについて、当該検査ノードcに向け伝搬される信頼度βmn(n∈A(m))に基づき、当該検査ノードcに接続する各ビットノードbに向け伝搬する信頼度αmn(n∈A(m))を算出し、ビットノード記憶手段6内の対応する信頼度αmnの値を更新する。
【0105】
優先度更新手段9は、各検査ノードc(m=1,2,…,M)について、当該検査ノードcに向け伝搬される信頼度βmnに基づき閾値判定により当該検査ノードcの優先度を決定し、優先度記憶手段10内の対応する優先度を更新する。
【0106】
ビットノード演算手段11は、ビットノード記憶手段6内の信頼度αmnが更新された場合、パリティ検査行列Hにおける信頼度αmnの更新された要素Hmnと同じ列に属するすべての非零要素Hi,n(i∈B(n))に対応する各ビットノードbi,nについて、当該ビットノードbi,nに接続する各検査ノードci,nに向け伝搬する信頼度βi,nを算出し、検査ノード記憶手段5内の対応する信頼度βi,nを更新する。
【0107】
硬判定手段12は、ビットノード記憶手段6に記憶された信頼度αmn(m∈B(n),n∈A(m))及び受信値対数尤度演算手段4が出力する受信値対数尤度λに基づき式(21)により一時推定語y^を算出する。
【0108】
パリティ判定手段13は、硬判定手段12が出力する一時推定語(y^,y^,…,y^)が式(22)のパリティ検査式を満たすか否かの判定を行う。
【0109】
以上のように構成された本実施例1に係るLDPC符号検出装置1において、以下その動作を図5のフローチャートを用いて説明する。尚、図5のフローチャートは、図3のパリティ検査行列の1つの区画行に関する処理を表すものであり、実際には各行区画において図5の処理が並列に実行されるものとする。
【0110】
まず、ステップS1において、受信値が受信値記憶手段2に入力され一時記憶されると、ノード初期化手段3は、受信値記憶手段2に一時記憶された受信値yからλを式(18)により算出する。そして、Hmn=1を満たすすべての組(m,n)に対して、検査ノード記憶手段5内の信頼度βmnをyに初期設定する。また、ビットノード記憶手段6内の信頼度αmnを0に初期設定する。また、内部変数として有するイテレータ(反復子)lを1に設定し、繰り返し最大回数をlmaxに設定する。
【0111】
ステップS2において、受信値対数尤度演算手段4は、式(18)により各受信値y(n=1,2,…,N)に対する受信値対数尤度λを算出する。また、優先度記憶手段10は、各検査ノードc(m=1,2,…,M)の優先度のランクrを1に設定する。
【0112】
ステップS3において、硬判定手段12は、受信値記憶手段2に記憶された各受信値y(n=1,2,…,N)に基づき、式(30)による硬判定を行い一時推定値y^を求める。
【0113】
【数23】

【0114】
ステップS4において、パリティ判定手段13は、ステップS3で得られた一時推定語y^=(y^,y^,…,y^)とパリティ検査表列Hに基づき、式(31)により一時推定語y^のパリティpar(y^)を計算する。
【0115】
【数24】

【0116】
ステップS5において、パリティ判定手段13は、パリティpar(y^)は0か1かを判定する。par(y^)が0であれば、y^=(y^,y^,…,y^)を復号語として出力して動作を終了する。par(y^)が1の場合、検査ノード選択手段7を呼び出して、ステップS6に移行する。
【0117】
ステップS6においては、検査ノード選択手段7は、選択する優先度レベルaを1に初期化する。そして、選択する行番号(検査ノードの番号)mを1に初期化する。
【0118】
ステップS7において、検査ノード選択手段7は、行番号mの優先度rが優先度レベルaと一致するか否かを判定する。一致しない場合にはステップS11に移行し、一致した場合には検査ノード選択手段7は検査ノードcを選択し次のステップS8へ移行する。
【0119】
ステップS8において、検査ノード演算手段8は、選択された行番号mの検査ノードcについて行処理を実行する。すなわち、検査ノード演算手段8は、Hmn=1を満たすすべての組(m,n)に対して、更新式(19)により信頼度αmnを計算する。そして、ビットノード記憶手段6内の信頼度αmnの値を更新する。図3の例では、このときα(i(p),j(p1)),…,α(i(p),j(p6))(p=1,2,3)が更新される。
【0120】
ステップS9において、優先度更新手段9は、選択された行番号mの検査ノードcの優先度rを計算し、優先度記憶手段10内の優先度rを更新する。ここで、優先度rの計算は式(32)により行われる。
【0121】
【数25】

【0122】
ステップS10において、ビットノード演算手段11は、すべての更新された信頼度αmnの属する各列について列処理を実行する。
【0123】
例えば、図3の例で言うと、第q区画列(q=1,2,…,6)においては、ステップS8でα(i(1),j(1q)),α(i(2),j(2q)),α(i(3),j(3q))が更新される。これらのαの属する列は、j(1q),j(2q),j(3q)である。従って、ビットノード演算手段11は、第q区画列の各ブロックにおいて、列j(1q),j(2q),j(3q)に属する非零要素の内部辺に接続するビットノードについて、信頼度βの計算を行う。すなわち、第1区画行q区画列では、β(i(1),j(1q)),β(i(1q),j(2q)),β(i(1q),j(3q))の計算を行い、第2区画行q区画列では、β(i(2),j(2q)),β(i(2q),j(3q)),β(i(3q),j(1q))の計算を行い、第3区画行q区画列では、β(i(3),j(3q)),β(i(1q),j(1q)),β(i(2q),j(2q))の計算を行う。
【0124】
計算されたそれぞれの信頼度βについて、検査ノード記憶手段5内の信頼度βが更新される。尚、ビットノード演算手段11による信頼度βの計算は、式(20)に従って実行される。
【0125】
ステップS11において、検査ノード選択手段7は、mがMに達したか否かを判定し、m<Mであれば、m←m+1として(ステップS12)、ステップS7に戻る。一方、m=Mならば、ステップS13に進む。
【0126】
ステップS13において、検査ノード選択手段7は、aが1であれば、a←0として(S14)、ステップS7に戻る。また、aが0であれば、ステップS3に戻る。
【0127】
ステップS3においては、硬判定手段12は、今度は検査ノード記憶手段5に記憶された信頼度αに基づき、式(21)による硬判定を行い一時推定値y^を求める。また、イテレータlをl←l+1とする。
【0128】
ステップS4において、パリティ判定手段13は、ステップS3で得られた一時推定語y^=(y^,y^,…,y^)とパリティ検査表列Hに基づき、式(31)により一時推定語y^のパリティpar(y^)を計算する。
【0129】
ステップS5において、パリティ判定手段13は、パリティpar(y^)は0か1かを判定する。par(y^)が0であれば、y^=(y^,y^,…,y^)を復号語として出力して動作を終了する。また、イテレータlがl>lmaxとなった場合には、復号エラーの信号とともにy^=(y^,y^,…,y^)を出力し、動作を終了する。par(y^)が1で且つl≦lmaxの場合、検査ノード選択手段7を呼び出して、ステップS6に移行し、以下同様の動作を繰り返す。
【0130】
以上の動作により、検査ノード演算手段8が当該検査ノードcに接続する各ビットノード{b|n∈A(m)}に向け伝搬する信頼度αmnを更新すると、ビットノード演算手段11により、パリティ検査行列Hにおける信頼度αmnが更新された要素と同列の非零要素に対応する各ビットノード{b}について、当該ビットノード{b}に接続する各検査ノードに向け伝搬される信頼度{βkj}がパイプライン的に更新される。これにより、各検査ノード及び各ビットノード間を信頼度が効率よく伝搬するため、サムプロダクト・アルゴリズムの収斂が促進される。
【0131】
また、各検査ノードcは、優先度更新手段9により、信頼度{βmn}に基づいて、信頼度rが大きい順に優先度が決定される。そして、検査ノード選択手段7により、優先度rが高い順に、検査ノード演算手段8による信頼度αmnの更新を実行する検査ノードcが選択される。従って、大きい信頼度βを持つ検査ノードから優先的に、各ビットノードへ信頼度情報が伝搬される。そして、その信頼度情報は、即座に(パイプライン的に)ビットノードから各検査ノードに伝搬される。このように、サムプロダクト・アルゴリズムの収斂を促進するのに寄与する信頼度情報ほど速くノード間を伝搬するため、サムプロダクト・アルゴリズムの収斂がより促進される。
【実施例2】
【0132】
実施例2では、実施例1のLDPC符号検出装置1をより具体的にハードウェアに実装した例について説明する。
【0133】
図6は、実施例2に係るLDPC符号検出装置1のアルゴリズム実行エンジン15のハードウェア構成を表す図である。図6は、図4において点線で囲まれたアルゴリズム実行エンジン15の部分に相当する。尚、本実施例においては、行重みw=6、列重みw=3の(3,6)レギュラーLDPC符号のLDPC復号装置を示しているが、行重みw,列重みwに関しては容易に一般化することができる。
【0134】
アルゴリズム実行エンジン15は、3つの行処理モジュール20−1〜20−3と6つの列処理モジュール21−1〜21−6を備えている。また、各行処理モジュール20−1〜20−3と各列処理モジュール21−1〜21−6の間には、図1のタナーグラフの内部辺に対応して設けられた6本の分岐した内部接続線26及び3本の内部接続線27が設けられている。タナーグラフの内部辺で接続された行処理モジュール20と列処理モジュール21同士が、各内部接続線26,27により接続されている。内部接続線26は、列処理モジュール21から行処理モジュール20へ信頼度βを伝達する線である。内部接続線27は、行処理モジュール20から列処理モジュール21へ信頼度αを伝達する線である。
【0135】
また、6本の内部接続線26のそれぞれには、6本の入力線28が接続されている。3本の内部接続線27のそれぞれには、3本の出力線29が接続されている。入力線28には、各βmnの初期値としての受信値yが入力される。また、出力線29からは、硬判定手段12に対してy^の計算に使用する信頼度αmnが出力される。
【0136】
各行処理モジュール20は、6組の検査ノード・メモリバンク22と、1つの検査関数ユニット23及び検査ノード選択ユニット30を備えている。各検査ノード・メモリバンク22が、図4の監査ノード記憶手段5に相当する。検査関数ユニット23は、図4の検査ノード演算手段8に相当する。検査ノード選択ユニット30は、図4の検査ノード選択手段7、優先度更新手段9、及び優先度記憶手段10に相当する。
【0137】
列処理モジュール21は、3つのビットノード・メモリバンク24と1つのビット関数ユニット25及びビットノード選択ユニット31を備えている。ビットノード・メモリバンク24は図4のビットノード記憶手段6に相当する。ビット関数ユニット25及びビットノード選択ユニット31は、図6のビットノード演算手段11に相当する。
【0138】
図7は、図6の各行処理モジュール20の詳細な構成を表す図である。6組の検査ノード・メモリバンク22は、信頼度βを記憶するためのβメモリバンク22a、及びパリティ検査行列Hにおけるβメモリバンク22a内の各信頼度の位置(以下「要素座標」という。)の情報を記憶する要素座標メモリバンク22bの組から構成されている。
【0139】
検査関数ユニット23は、6つの入力レジスタ35、セレクタ36、最小値演算器37、排他論理和回路38、フリップフロップ39、6つのマルチプレクサ40、及び6つの出力レジスタ41を備えている。
【0140】
検査ノード選択ユニット30は、コントローラ42、遅延レジスタ43、デマルチプレクサ44、第1アドレス・レジスタ45、第2アドレス・レジスタ46、及びマルチプレクサ47を備えている。
【0141】
検査ノード選択ユニット30の第1アドレス・レジスタ45には、優先度レベルが1の行の信頼度β及びその要素座標が格納された、検査ノード・メモリバンク22内のアドレスが記憶されている。また、第2アドレス・レジスタ46には、優先度レベルが0の行の信頼度β及びその要素座標が格納された、検査ノード・メモリバンク22内のアドレスが記憶されている。尚、第1アドレス・レジスタ45及び第2アドレス・レジスタ46は、シフト・レジスタにより構成されている。
【0142】
内部接続線26を介して、各ビット関数ユニット25から入力される信頼度β及びその要素座標が入力され、各βメモリバンク22a及び要素座標メモリバンク22bに保存される。
【0143】
図3より、第1区画行のブロックにおける1つの行処理では、6つの列ブロックから伝搬される信頼度β(i(1),j(11)),…,β(i(1),j(16))から計算するため、行処理モジュール20の検査ノード・メモリバンク22には、これらを保持する6つのβメモリバンク22aが用意されている。それぞれの列ブロックはp列のビットノードからなるため、各βメモリバンク22aはpワードのデータを保持する。このβメモリバンク22aは、各行ブロックにおける行番号をアドレスとして、その行番号に対応する列から算出された信頼度βを出力する。
【0144】
また、本実施例では、パリティ検査行列の各ブロックがランダムに構成された検査行列に対応するため、行番号の入力アドレスに対して対応するパリティ検査行列の非零要素の列番号を出力する要素座標メモリバンク22bも用意されている。
【0145】
各検査ノードにおける行処理演算を実行する場合、まず、検査ノード選択ユニット30が検査ノード・メモリバンク22から行処理を行う検査ノードにおける信頼度β及びその要素座標を選択する。
【0146】
この場合、検査ノード選択ユニット30は、優先度レベル1の行を選択する時には、マルチプレクサ47の接続を第1アドレス・レジスタ45の入力側に切り替える。そして、第1アドレス・レジスタ45から順次アドレス(行番号)を出力する。また、優先度レベル1の行を選択する時には、検査ノード選択ユニット30は、マルチプレクサ47の接続を第2アドレス・レジスタ46の入力側に切り替える。そして、第2アドレス・レジスタ46から順次アドレス(行番号)を出力する。
【0147】
第1アドレス・レジスタ45又は第2アドレス・レジスタ46から出力されたアドレスmは、各検査ノード・メモリバンク22及び遅延レジスタ43に入力される。各検査ノード・メモリバンク22は、入力されたアドレスmに格納された信頼度βmn及びその要素座標を出力する。これにより、優先度に応じて選択された行の信頼度βmnが検査関数ユニット23に出力される。なお、選択された信頼度βmnの要素座標は、内部接続線27を介して、タナーグラフの内部辺で接続された列処理モジュール21へ直接出力される。
【0148】
検査関数ユニット23においては、入力された信頼度βmnに基づき、信頼度αmnが式(19),(23)に従って計算され、出力される。出力された信頼度αmnは、内部接続線27を介して、タナーグラフの内部辺で接続された列処理モジュール21へ出力される。また、このとき、検査関数ユニット23は、選択された行の優先度の決定のための式(32)の左辺括弧内の|βmn|の最小値の計算も行う。そして、この|βmn|の最小値は検査ノード選択ユニット30のコントローラ42に出力される。
【0149】
コントローラ42は、入力された|βmn|の最小値と閾値Tαとを比較して式(32)に従って、デマルチプレクサ44の選択方向を切り換える。すなわち、|βmn|の最小値が閾値Tα以上の場合、デマルチプレクサ44は第1アドレス・レジスタ45を選択する。これにより、遅延レジスタ43に格納されたアドレスmは、優先度レベルが1の第1アドレス・レジスタ45に格納される。|βmn|の最小値が閾値Tα未満の場合、デマルチプレクサ44は第2アドレス・レジスタ46を選択する。これにより、遅延レジスタ43に格納されたアドレスmは、優先度レベルが0の第2アドレス・レジスタ46に格納される。
【0150】
検査関数ユニット23においては、信頼度βmnが入力された場合、ミニマムサム・アルゴリズムを実行する。まず、入力された信頼度{βmn|n∈A(m)}は、入力レジスタ35に一旦格納される。セレクタ36は、入力レジスタ35に格納された信頼度βmnを順次選択する。排他論理和回路38及びフリップフロップ39は、式(19)の左辺第1項の符号の計算を実行する。また、最小値演算器37は、式(23)に従って、|β|の最小値と2番目の最小値を求める。そして、何れかの値を信頼度αとして6つの列処理モジュール21へ伝搬する。尚、優先度rの判定で用いる|βmn|の最小値は、式(23)の計算において同時に得られるためこれを利用する。
【0151】
図8は、図6の各列処理モジュール21の詳細な構成を表す図である。3組のビットノード・メモリバンク24は、信頼度αを記憶するためのαメモリバンク24a、及びパリティ検査行列Hにおけるαメモリバンク24a内の各信頼度αの要素座標の情報を記憶する要素座標メモリバンク24bの組から構成されている。
【0152】
ビット関数ユニット25は、入力レジスタ50、加算器51、中間レジスタ52、加算器53、及び出力レジスタ54をそれぞれ3つずつ備えている。また、ビットノード選択ユニット31は、アドレス・レジスタ55及びセレクタ56を備えている。
【0153】
行処理モジュール20において、検査ノード選択ユニット30により選択された行mに対して信頼度αmnが計算されると、同時に、その選択された行mに対応するパリティ検査行列内の行における零要素の列番号が要素座標メモリバンク22bから出力される。この列番号は、内部接続線27を介して列処理モジュール21へ伝搬される。
【0154】
列処理モジュール21内では、その列番号に対応する列処理が実行される。6つの列処理モジュール21は、それぞれ3つの行処理モジュール20から算出される信頼度αとそれに対応する列番号を受け取る。信頼度αは、対応する列番号をアドレスとして、それぞれの行ブロックに対応するαメモリバンク24aに上書きされる。また、列番号は、ビットノード選択ユニット31内のアドレス・レジスタ55に保持して、順次3つの列番号に対応する列処理を実行する。列処理モジュール21内のビット関数ユニット25では、3つの行処理モジュール20から得られた新しい信頼度αから、式(20)に従って和を求める。そして、新しい信頼度βを各行処理モジュール20に伝搬する。
【0155】
ここで、1つの列処理に対して和を3つ出力するが、これを並列に実行するため、ビット関数ユニット25内には加算器51,53が3つ並列に配置されている。
【0156】
図9に、実施例1に係るLDPC符号検出装置1の行処理、列処理のタイミング・ダイアグラムを示す。行処理モジュール20では、ミニサム・アルゴリズムにより、入力された|β|を比較するが、高速な動作周波数を得るためには、1回の比較をクロックサイクル毎に実行しなければならない。そのため、クロックサイクル数は行重みw回必要となる。また、絶対値、比較と出力を図9のようにパイプラインで構成することによって、1回の行処理にかかるクロックサイクル数は10サイクルとなる。
【0157】
一方、列処理モジュール21では、一つ前の行処理に対応する列処理をパイプライン的に並列実行する。本実施例2の列処理モジュール21は、1回の行処理に対して3つの列処理が並列に実行されるが、これらを図9のように列処理内でパイプライン処理で実行する。これにより、合計6サイクルで列処理が完了する。
【0158】
従って、本実施例2のアーキテクチャでは、従来の復号と比較して3倍の列処理が必要となるが、この列処理は1回の行処理の処理サイクル数を超えない。そのため、1回の復号処理では、依然として行処理がネックとなり、従来の構成と比較しても処理速度が劣ることはない。
【図面の簡単な説明】
【0159】
【図1】(a)LDPC符号におけるパリティ検査行列の一例と、(b)そのパリティ検査行列に対応するタナーグラフを示す図である。
【図2】部分並列LDPC復号で用いるレギュラーLDPC符号のパリティ検査行列の区分け構造を表す図である。
【図3】(3,6)レギュラーLDPC符号のパリティ検査行列を表す図である。
【図4】本発明の実施例1に係るLDPC符号検出装置1の構成を表すブロック図である。
【図5】実施例1に係るLDPC符号検出装置1の動作を表すフローチャートである。
【図6】実施例2に係るLDPC符号検出装置1のアルゴリズム実行エンジン15部分のハードウェア構成を表す図である。
【図7】図6の各行処理モジュール20の詳細な構成を表す図である。
【図8】図6の各列処理モジュール21の詳細な構成を表す図である。
【図9】実施例1に係るLDPC符号検出装置1の行処理、列処理のタイミング・ダイアグラムである。
【符号の説明】
【0160】
1 LDPC符号検出装置
2 受信値記憶手段
3 ノード初期化手段
4 受信値対数尤度演算手段
5 検査ノード記憶手段
6 ビットノード記憶手段
7 検査ノード選択手段
8 検査ノード演算手段
9 優先度更新手段
10 優先度記憶手段
11 ビットノード演算手段
12 硬判定手段
13 パリティ判定手段
15 アルゴリズム実行エンジン
20 行処理モジュール
20−1,20−2,20−3 行処理モジュール
21−1,21−2,21−3,21−4,21−5,21−6 列処理モジュール
21 列処理モジュール
22 検査ノード・メモリバンク
22a βメモリバンク
22b 要素座標メモリバンク
23 検査関数ユニット
24 ビットノード・メモリバンク
24a αメモリバンク
24b 要素座標メモリバンク
25 ビット関数ユニット
26,27 内部接続線
28 入力線
29 出力線
30 検査ノード選択ユニット
31 ビットノード選択ユニット
35 入力レジスタ
36 セレクタ
37 最小値演算器
38 排他論理和回路
39 フリップフロップ
40 マルチプレクサ
41 出力レジスタ
42 コントローラ
43 遅延レジスタ
44 デマルチプレクサ
45 第1アドレス・レジスタ
46 第2アドレス・レジスタ
47 マルチプレクサ
50 入力レジスタ
51 加算器
52 中間レジスタ
53 加算器
54 出力レジスタ
55 アドレス・レジスタ
56 セレクタ





【特許請求の範囲】
【請求項1】
低密度パリティ検査(以下「LDPC」という。)符号のパリティ検査行列のタナーグラフに対応して設定された複数の検査ノード及び複数のビットノードの間で信頼度α,βを反復伝搬させ、その過程において信頼度βから算出される事後値の硬判定値をパリティ検査行列でパリティ検査することにより収束判定し送信符号の推定値を決定するサムプロダクト・アルゴリズムを用いて、受信値からの符号検出を行うLDPC符号検出装置において、
前記各検査ノードに対し、当該検査ノードに接続する前記各ビットノードより伝搬される信頼度βを記憶する検査ノード記憶手段;
前記各ビットノードに対し、当該ビットノードに接続する前記各検査ノードより伝搬される信頼度αを記憶するビットノード記憶手段;
前記各検査ノードの優先度を記憶する優先度記憶手段;
すべての前記検査ノードについて、前記優先度の高い順に順次選択する検査ノード選択手段;
前記検査ノード選択手段が選択する前記検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βに基づき、当該検査ノードに接続する前記各ビットノードに向け伝搬する信頼度αを算出し、前記ビットノード記憶手段内の対応する信頼度αを更新する検査ノード演算手段;
前記各検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βに基づき信頼度が大きい順に当該検査ノードの優先度を決定し、前記優先度記憶手段内の対応する優先度を更新する優先度更新手段;
及び、前記ビットノード記憶手段内の信頼度αが更新された場合、前記パリティ検査行列における信頼度αの更新された要素と同じ列に属するすべての非零要素に対応する前記各ビットノードについて、当該ビットノードに接続する前記各検査ノードに向け伝搬する信頼度βを算出し、前記検査ノード記憶手段内の対応する信頼度βを更新するビットノード演算手段;
を備えたLDPC符号検出装置。
【請求項2】
前記パリティ検査行列は、列方向にM個、行方向にN個の部分行列に区分けされ、各区画における部分行列の各行の非零成分の数は1個又は0個に設定されたものであり、
M個の区画行の各々に対応して設けられたM個の前記検査ノード記憶手段、前記優先度記憶手段、前記検査ノード選択手段、前記検査ノード演算手段、及び前記優先度更新手段を備え、
N個の区画列の各々に対応して設けられたN個の前記ビットノード記憶手段、及び前記ビットノード演算手段を備え、
前記各区画行の前記検査ノード選択手段、前記検査ノード演算手段、及び前記優先度更新手段は並列動作し、前記各区画列の前記ビットノード演算手段は並列動作すること
を特徴とする請求項1記載のLDPC符号検出装置。
【請求項3】
前記各区画列の前記ビットノード演算手段は、その演算処理を、前記各区画行の前記検査ノード選択手段、前記検査ノード演算手段、及び前記優先度更新手段の演算処理とパイプライン的に実行することを特徴とする請求項2記載のLDPC符号検出装置。
【請求項4】
前記信頼度α,βは対数尤度比であり、
前記優先度更新手段は、前記各検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βの最小値を閾値判定で分類することにより当該検査ノードの優先度を決定し、前記優先度記憶手段内の対応する優先度を更新すること
を特徴とする請求項1乃至3の何れか一記載のLDPC符号検出装置。
【請求項5】
前記検査ノード記憶手段には、前記各検査ノードcに対し、当該検査ノードcに接続する前記各ビットノードbより伝搬される信頼度βmnが記憶されており、
前記ビットノード記憶手段には、前記各ビットノードbに対し、当該ビットノードbに接続する前記各検査ノードcより伝搬される信頼度αmnが記憶されており、
前記検査ノード演算手段は、前記検査ノード選択手段が選択する前記検査ノードcについて、当該検査ノードcに向け伝搬される前記信頼度βmnに基づき、(数1)により当該検査ノードcに接続する前記各ビットノードbに向け伝搬する信頼度αmnを算出し、前記ビットノード記憶手段内の対応する信頼度αmnを更新するものであり、
前記優先度更新手段は、前記各検査ノードcについて、(数2)で算出されるηの値を2値以上に量子化して大きい順に高い優先度に決定し、前記優先度記憶手段内の対応する優先度を更新するものであり、
前記ビットノード演算手段は、前記ビットノード記憶手段内の信頼度αmnが更新された場合、更新されたすべての信頼度αmnに対応する前記各ビットノードbについて、当該ビットノードに接続する前記各検査ノードcm’に向け伝搬する信頼度βm’nを(数3)により算出し、前記検査ノード記憶手段内の対応する信頼度βm’nを更新するものであること
を特徴とする請求項1乃至4の何れか一記載のLDPC符号検出装置。
【数1】

【数2】

【数3】

【請求項6】
前記検査ノード演算手段及び前記優先度更新手段は、前記(数1)及び(数2)の演算を、それぞれ(数4)及び(数5)の近似式により実行することを特徴とする請求項5記載のLDPC符号検出装置。
【数4】

【数5】

【請求項7】
LDPC符号のパリティ検査行列のタナーグラフに対応して設定された複数の検査ノード及び複数のビットノードの間で信頼度α,βを反復伝搬させ、その過程において信頼度βから算出される事後値の硬判定値をパリティ検査行列でパリティ検査することにより収束判定し送信符号の推定値を決定するサムプロダクト・アルゴリズムを用いて、受信値yからの符号検出を行うLDPC符号検出方法において、
前記各検査ノードに対し、当該検査ノードに接続する前記各ビットノードより伝搬される信頼度βを記憶する検査ノード記憶手段について、各信頼度βを前記受信値yにより初期化する検査ノード初期化ステップ;
前記各ビットノードに対し、当該ビットノードに接続する前記各検査ノードより伝搬される信頼度αを記憶するビットノード記憶手段について、各信頼度αを所定の初期値に初期化するビットノード初期化ステップ;
前記各検査ノードの優先度を記憶する優先度記憶手段の各優先値を所定の初期値に初期化する優先値初期化ステップ;
並びに、前記各検査ノード及び前記各ビットノードの間で前記信頼度α,βを反復伝搬させ、その過程において信頼度βから算出される事後値の硬判定値をパリティ検査行列でパリティ検査することにより収束判定し送信符号の推定値を決定する推定ステップ;
を備え、
前記推定ステップにおいては、
すべての前記検査ノードについて、前記優先度の高い順に順次選択する検査ノード選択ステップ;
前記検査ノード選択ステップで選択された前記検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βを検査ノード記憶手段から読み出し、読み出された各信頼度βに基づき当該検査ノードに接続する前記各ビットノードに向け伝搬する信頼度αを算出する検査ノード演算ステップ;
前記各検査ノードについて、当該検査ノードに向け伝搬される前記信頼度βに基づき信頼度が大きい順に当該検査ノードの優先度を決定し、前記優先度記憶手段内の対応する優先度を更新する優先度更新ステップ;
及び、前記ビットノード記憶手段内の信頼度αが更新された場合、前記パリティ検査行列における信頼度αの更新された要素と同じ列に属するすべての非零要素に対応する前記各ビットノードについて、当該ビットノードに接続する前記各検査ノードに向け伝搬する信頼度βを算出し、前記検査ノード記憶手段内の対応する信頼度βを更新するビットノード演算ステップ;
からなる一連の演算処理を、前記検査ノード記憶手段内の信頼度βから算出される事後値を硬判定して得られる一次推定語とパリティ検査行列の積が0となるまで繰り返し実行すること
を特徴とするLDPC符号検出方法。
【請求項8】
コンピュータに読み込んで実行することにより、コンピュータを請求項1乃至6の何れか一に記載のLDPC符号検出装置として機能させることを特徴とするプログラム。





【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2006−279396(P2006−279396A)
【公開日】平成18年10月12日(2006.10.12)
【国際特許分類】
【出願番号】特願2005−93920(P2005−93920)
【出願日】平成17年3月29日(2005.3.29)
【出願人】(802000031)財団法人北九州産業学術推進機構 (187)
【出願人】(899000068)学校法人早稲田大学 (602)
【Fターム(参考)】