JP2005045735A - 符号検出装置及び方法、復号装置及び方法、並びに情報処理装置及び方法 - Google Patents
符号検出装置及び方法、復号装置及び方法、並びに情報処理装置及び方法 Download PDFInfo
- Publication number
- JP2005045735A JP2005045735A JP2003280427A JP2003280427A JP2005045735A JP 2005045735 A JP2005045735 A JP 2005045735A JP 2003280427 A JP2003280427 A JP 2003280427A JP 2003280427 A JP2003280427 A JP 2003280427A JP 2005045735 A JP2005045735 A JP 2005045735A
- Authority
- JP
- Japan
- Prior art keywords
- check
- message
- node
- code
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
【課題】1回の繰り返し処理において2回以上演算器を使用して符号検出する際に、各ノード間でやりとりするメッセージを保存するメモリ等の回路構成を簡略化する。
【解決手段】符号検出装置1は、ビットノードYnからチェックノードXmへ渡すメッセージQm,n(m∈M(n))を算出するビットノード処理演算部7と、チェックノードからビットノードへ渡すメッセージRm,n(m∈M(n))を算出するチェックノード処理演算部5と、Qm,n(m∈M(n))を格納するメモリ4と、処理演算部5の演算結果を格納するメモリ6とを有し、チェックノード処理演算器5は、逐次入力されるメッセージQm,n(m∈M(n))から一旦、Am,Bmを求め、再びメッセージQm,n(m∈M(n))が逐次入力され、これと、算出されたAm,BmとからメッセージRm,n(m∈M(n))を逐次算出してビットノード処理演算部7へ出力する。
【選択図】図3
【解決手段】符号検出装置1は、ビットノードYnからチェックノードXmへ渡すメッセージQm,n(m∈M(n))を算出するビットノード処理演算部7と、チェックノードからビットノードへ渡すメッセージRm,n(m∈M(n))を算出するチェックノード処理演算部5と、Qm,n(m∈M(n))を格納するメモリ4と、処理演算部5の演算結果を格納するメモリ6とを有し、チェックノード処理演算器5は、逐次入力されるメッセージQm,n(m∈M(n))から一旦、Am,Bmを求め、再びメッセージQm,n(m∈M(n))が逐次入力され、これと、算出されたAm,BmとからメッセージRm,n(m∈M(n))を逐次算出してビットノード処理演算部7へ出力する。
【選択図】図3
Description
本発明は、低密度パリティ検査符号(LDPC:low density parity check code)の軟判定復号を行うための符号検出装置及び方法、及びこれを使用した復号装置及び方法、並びに情報処理装置及び方法に関する。
低密度パリティ検査符号(以下、LDPC符号という。)は、1962年、Robert G. Gallagerによって発表された線形符号の一種であり、そのパリティ検査行列の非零の要素数が全要素数に対して少ない(低密度である)ことが特徴となっている(下記非特許文献1参照)。
また、LDPC符号はパリティ検査行列の2部グラフ(bipartite graph)に、短いサイクルが含まれないことから、繰り返し復号によって良好なビットエラー特性を示すことが知られている。
符号長NのLDPC符号の任意の符号語ベクトルcは、M行N列のパリティ検査行列をHとすると、下記式(1)を満たす。
上式(1)は、M個のパリティ検査方程式を表している。Hの階数(rank)が(N−K)(Kは次元)で与えられるとき、このLDPC符号の符号化率はK/Nで与えられる。M>N−Kの場合、冗長なパリティ検査方程式があることを意味する。
図1は、2元(binary)LDPC符号のパリティ検査行列の例である。この7行21列の行列の階数は6であり、これによって定まる符号は符号長N=21、次元K=15の線形符号となる。この行列において各行における非零の要素数(“1”の数)(ハミング重み)Wrは全て6、各列における非零の要素数(“1”の数)(ハミング重み)Wcは全て2である。このようにWr、Wcが均一なパリティ検査行列を持つLDPC符号はレギュラー(regular)LDPC符号と呼ばれる。
LDPC符号は、線形符号であり、2元に限るものではなく、2元符号以外の場合においても同様の議論ができることは勿論であるが、以下の説明においては、全て2元符号の場合を例に説明する。
先ず、情報語(メッセージ)をLDPC符号化し、パリティ検査行列によって符号検出する方法について説明する。LDPC符号を得るためには、始めに、M行N列、K次元のパリティ検査行列Hから、K行N列の生成行列G(GHT=0を満たす)を求めておく。そして、Kビットの2元メッセージ(m0m1・・・mK―1)に生成行列Gを乗算することによりNビットの符号語((m0m1・・・mK−1)G=(c0c1・・・cN−1))を得る。このようにして得られた符号語は、変調器を介して通信路へ送出され、受信側で受信信号として受信される。この受信信号が復調されたのち、パリティ検査行列により復号され、送信メッセージの推定値(Kビット(m0^m1^・・・mK−1^))として出力される。
次に、受信された受信信号から符号を検出する符号検出方法について詳細に説明する。LDPC符号は、パリティ検査行列或いは2部グラフを元に、メッセージパッシング(message-passing)アルゴリズムによって符号検出できることが知られている。M行N列のパリティ検査行列を表現した2部グラフは、チェック(check)に対応するM個のノード(node)(チェックノード)、変数(variable)に対応するN個のノード(変数ノード)、及びノードを接続するエッジ(edge)により構成される。エッジはパリティ検査行列の非零要素の場所に対応しており、第m行第n列の要素が零でない場合にのみm番目のチェックノードとn番目の変数ノードとがエッジで接続される。上述したように、ここでは2元符号の場合について説明するため、以降では、変数ノードをビットノードと表現する。
図2は、図1のパリティ検査行列に対応した2部グラフを示しており、丸(〇)で表された7個のチェックノードXm(X0〜X6)と、四角(□)で表された21個のビットノードYn(Y0〜Y20)とで構成されている。各チェックノードXmには6本のエッジが、各ビットノードYnには2本のエッジがそれぞれ接続されている。
LDPC符号は、エッジで接続されたチェックノードXmとビットノードYnとのノード間にメッセージを伝搬させ、ビットノードXmからチェックノードYn、チェックノードYnからビットノードXmへのメッセージ交換を繰り返して行う、メッセージパッシングアルゴリズム(あるいはsum-productアルゴリズム)によるSISO(Soft-In Soft-Out)復号方法により符号検出することができる。このメッセージパッシングアルゴリズムは、次のような手順を繰り返すことで実現される。
[1]手順0−初期化
各ビットノードYnから出るすべてのエッジについて、ビットノードYnからチェックノードXmに伝搬されるメッセージq0 m,n,q1 m,nを事前確率p0 n,p1 nに初期化する。ここでpx nとはビットnが“x”である事前確率を表すものとする。
各ビットノードYnから出るすべてのエッジについて、ビットノードYnからチェックノードXmに伝搬されるメッセージq0 m,n,q1 m,nを事前確率p0 n,p1 nに初期化する。ここでpx nとはビットnが“x”である事前確率を表すものとする。
[2]手順1−チェックノードにおける処理
各チェックノードXmから出るすべてのエッジについて、チェックノードXmからビットノードYnに伝搬されるメッセージr0 m,n,r1 m,nを次式に従って求める。
各チェックノードXmから出るすべてのエッジについて、チェックノードXmからビットノードYnに伝搬されるメッセージr0 m,n,r1 m,nを次式に従って求める。
[3]手順2−ビットノードにおける処理
必要に応じて各ビットの事後確率q0 n、q1 nを、次式により求める。
必要に応じて各ビットの事後確率q0 n、q1 nを、次式により求める。
更に繰り返しが必要な場合、次式に従ってビットノードYnからチェックノードXmに伝搬されるメッセージを計算する。
メッセージパッシングアルゴリズムによる復号は、終了条件を満たすまで手順1と手順2とを繰り返し、最後に硬判定復号で情報語が推定される。繰り返しの終了条件は、
1)繰り返しが予め定めた回数に達した時点で終了
2)予め定めた繰り返し回数に達していない場合でも硬判定結果がパリティチェックを満たせば終了
等が一般的である。ここで、パリティチェックは、下記(5)のように示される。
1)繰り返しが予め定めた回数に達した時点で終了
2)予め定めた繰り返し回数に達していない場合でも硬判定結果がパリティチェックを満たせば終了
等が一般的である。ここで、パリティチェックは、下記(5)のように示される。
終了条件が上記の1番目としたときの、復号アルゴリズムのフローチャートを図26に示す。即ち、図26に示すように、ビットノードYnからチェックノードXmへのメッセージq0 m,n,q1 m,nを事前確率p0 n,p1 nに初期化する。(ステップS21:手順0)。
次に、各チェックノードXmからビットノードYnへのメッセージr0 m,n,r1 m,nを計算する(ステップS22:手順1)。
そして、各ビットノードYnにおいて、事後確率q0 n、q1 n及び硬判定結果c^を計算し、更にチェックノードXmへのメッセージq0 m,n,q1 m,nを計算する(ステップS23:手順2)。
その後、規定の繰り返し回数に達しているか否かを判定し(ステップS24)、規定の繰り返し回数を超えない場合は、ステップS21〜ステップS23の処理を繰り返し、規定の繰り返し回数を超えた場合には、硬判定復号し(ステップS25)、処理を終了する。また、上述した如く、予め定めた繰り返し回数に達していない場合であっても、硬判定結果c^がパリティチェックHc^=0を満たしている場合は、処理を終了するようにしてもよい。
なお、上記のアルゴリズムと等価な計算方法として、対数尤度比LLR(Log-Likelihood Ratio)を用いて対数領域での計算式に変形すれば、乗算に相当する演算は、全て加算に置き換えられ、ハードウェアやソフトウェアによる処理を簡略化できる。対数領域における演算のアルゴリズムを以下に示す。
[1]手順0−初期化
各ビットノードYnから出るすべてのエッジについて、エッジを伝搬するメッセージQm,nを各ビットの事前対数尤度比Pnで初期化する。ここで、エッジを伝搬するメッセージQm,n及び各ビットの事前対数尤度比Pnは、夫々下記(6−1)及び(6−2)のように定義される。
各ビットノードYnから出るすべてのエッジについて、エッジを伝搬するメッセージQm,nを各ビットの事前対数尤度比Pnで初期化する。ここで、エッジを伝搬するメッセージQm,n及び各ビットの事前対数尤度比Pnは、夫々下記(6−1)及び(6−2)のように定義される。
[2]手順1−チェックノードにおける処理
各チェックノードXmから出るすべてのエッジについて、エッジを伝搬するメッセージRm,nを下記式(7−1)により計算する。ここで、Am、Bm、及びメッセージRm,nは下記(7−2)乃至(7−4)のように定義され、f(β)、αm,n、及びβm,nは下記(7−5)乃至(7−7)で示される。
各チェックノードXmから出るすべてのエッジについて、エッジを伝搬するメッセージRm,nを下記式(7−1)により計算する。ここで、Am、Bm、及びメッセージRm,nは下記(7−2)乃至(7−4)のように定義され、f(β)、αm,n、及びβm,nは下記(7−5)乃至(7−7)で示される。
[3]手順2−ビットノードにおける処理
各ビットの下記(8)に定義される事後対数尤度比Qnを、下記式(9)により求める。
各ビットの下記(8)に定義される事後対数尤度比Qnを、下記式(9)により求める。
更に繰り返しが必要な場合、下記式(10)に従ってビットノードYnからチェックノードXmに伝搬されるメッセージQm,nを計算する。
ここで、チェックノードXmからビットノードYnへのメッセージRm,nを求める際に使用される、上記(7−2)及び(7−3)にて定義されるAm、Bmの物理的な意味については次のように解釈できる。Amf(Bm)を計算すると、下記式(11)となる。
ここで、r0 m、r1 mを、以下式(12−1)及び(12−2)のように定義した。
ビットノードYnからチェックノードXmへのメッセージq0 m,n及びq1 m,nを夫々下記(13−1)及び(13−2)としたとき、r0 mは、m番目のチェックを満たす確率に相当する。
即ち、Am、Bmは、各ビットノードYn(n∈N(m))からチェックノードXmへのメッセージQm,n又はq0 m,n、q1 m,nに基づいた、m番目のチェックを満たす確率の間接的な表現に相当する。
以上の対数尤度比を用いた場合であって、終了条件が上記の1番目、即ち、手順1と手順2の繰り返しが予め定めた回数に達した時点で終了としたときの、復号アルゴリズムのフローチャートを図27に示す。即ち、図27に示すように、ビットノードYnからチェックノードXmへのメッセージQm,nを事前対数尤度比Pnに初期化する。(ステップS31:手順0)。
次に、各チェックノードXmからビットノードYnへのメッセージRm,nを計算する(ステップS32:手順1)。
そして、各ビットノードYnにおいて、事後対数尤度比Qn及び硬判定結果c^を計算し、更にチェックノードXmへのメッセージQm,nを計算する(ステップS33:手順2)。
その後、規定の繰り返し回数に達しているか否かを判定し(ステップS34)、規定の繰り返し回数を超えない場合は、ステップS31〜ステップS33の処理を繰り返し、規定の繰り返し回数を超えた場合には、硬判定復号し(ステップS35)、処理を終了する。また、上述した如く、予め定めた繰り返し回数に達していない場合であっても、硬判定結果c^がパリティチェックHc^=0を満たしている場合は、処理を終了するようにしてもよい。
なお、以下の説明においては、簡単のため対数尤度比を用いた演算方法にて復号する場合について説明するが、上述の如く事前確率及び事後確率を用いた方法としてもよいことは勿論である。
次に、以上のような手順1及び手順2の演算を繰り返し行ってLDCP符号を復号する復号装置について説明する。従来、実施又は提案されているLDPC符号の復号装置は、繰り返し毎に同じ演算器を使用するか、否かによって次の2種類に分類することができる。
タイプA:繰り返し毎に違う演算器を使用する
タイプB:繰り返し毎に同じ演算器を使用する
タイプA:繰り返し毎に違う演算器を使用する
タイプB:繰り返し毎に同じ演算器を使用する
タイプAの復号装置では、繰り返し処理をパイプライン化することによって、繰り返し回数に依らず高スループットを得ることができる。しかし繰り返し回数に比例した数の演算器が必要となるため、回路規模が非常に大きくなる。
一方、タイプBの復号装置の場合、繰り返し回数に応じてスループットが制限されるが、繰り返し回数に依らず回路規模は一定である。また、(i+1)回目の繰り返し処理はi回目の結果を利用するため、同じ回路で演算を行うためには結果を保存する記憶領域が必要となる。
例えば、A. J. Blanksby等による下記非特許文献2に記載の復号装置においては、ビットノードYnからチェックノードXmへのメッセージQm,nをレジスタに記憶する構成となっている。
また、後述するT. Zhang等による下記非特許文献3の復号装置、及びM. M. Mansour等による下記非特許文献4の復号装置においては、ビットノードYnからチェックノードXmへのメッセージQm,n、チェックノードXmからビットノードYnへのメッセージRm,nの両方をRAMに記憶する構成となっている。
これらタイプA及びタイプBの2つの分類においては、スループットの要求が厳しい場合にはタイプA、回路規模の制約が厳しい場合はタイプBが有利となる。
次に、繰り返し処理1回のあたりの演算に関するパラレル度について考える。メッセージパッシングアルゴリズムを用いたLDPC符号の復号装置では、各チェックノードXmにおける計算、各ビットノードYnにおける計算は他のノードの計算結果に依存しないため、これらの演算をパラレルに実行することができる。一方、列方向の非零要素数Wcが同数の各ビットノードYnでは、ビットノードYnからチェックノードXmへ伝搬されるメッセージQm,nの演算器は同じ構造となり、また行方向の非零要素数Wrが同数の各チェックノードXmでは、チェックノードXmからビットノードYnへ伝搬されるメッセージRm,nの演算器は同じ構造となる。従って、1つの演算器を時分割で複数のノードの処理に対応させる構造とすれば、少ない演算器の構成で復号装置を実現できる。
従来、実施あるいは提案されているLDPC符号の復号装置は、繰り返し処理1回あたりの演算のパラレル度によって次の2種類に分類できる。
タイプ1:M個の各チェックノードXmにおける処理、N個の各ビットノードYnにおける処理を、全てパラレルで独立した演算器により行う
タイプ2:チェックノードXm、ビットノードYnの両方、あるいはいずれかを、複数のグループに分けて、各グループ内の処理をパラレルに、別のグループの処理を時分割(シリアル)で行う
タイプ2:チェックノードXm、ビットノードYnの両方、あるいはいずれかを、複数のグループに分けて、各グループ内の処理をパラレルに、別のグループの処理を時分割(シリアル)で行う
ここで、タイプ1の構成では、各チェックノードXmの個数Mと同数のチェックノード処理演算器を有し、各ビットノードYnの個数Nと同数のビットノード処理演算器を有する。チェックノード処理演算器、及びビットノード処理演算器は、上述の夫々手順1及び手順2の演算を行う演算器である。このように、ノードに対応した個数の演算器を用意することにより、繰り返し処理1回にかかるクロックサイクル数が少ない、即ち、1回の繰り返し処理は、チェックノードにおける演算とビットノードにおける演算の例えば1クロックとなるため、高いスループットが得られる(例えば下記特許文献1及び非特許文献2参照)。
非特許文献2に記載の復号装置においては、実際にスループット1Gb/s、符号長1024bitsのLDPC符号の復号回路をLSI(large scale integrated circuit)で実現している。しかし、上記タイプ1に示すパラレルの復号装置は、下記の問題点が挙げられる。
(問題点1)符号長の長い符号、パリティチェック数の多い符号の復号回路は回路規模の点で実現が難しい
(問題点2)メッセージ伝搬のための配線は2部グラフのエッジに相当しており、演算器間を接続する配線数が多いため、LSIやFPGA(Field Programmable Gate Array)等ではルーティングが困難となる
(問題点2)メッセージ伝搬のための配線は2部グラフのエッジに相当しており、演算器間を接続する配線数が多いため、LSIやFPGA(Field Programmable Gate Array)等ではルーティングが困難となる
また、上記タイプ2は、グループ毎に演算器を時分割で再利用する構成となり、チェックノードXmの個数M、及びビットノードYnの個数Nよりも、夫々チェックノード処理演算器及びビットノード処理演算器が少なくてすむ。従って、タイプ1の構成と比較すると、グループの数に応じてスループットが低下するが、小さな回路規模で実現できるため、タイプ1の構成の(問題点1)に示した、符号長の大きな符号、パリティチェック数の多い符号への対応が可能となる。しかし、タイプ2の構成では、演算器への入出力を切り替えるために、メッセージを保存するメモリが必要となる。また、着目しているノードのデータを選択する機構、保管場所を制御する機構が必要となる。
特に、全てのノードを異なるグループに分割した場合、即ち、チェックノード処理演算器及びビットノード処理演算器を各1つずつとした場合には、完全なシリアル処理となる。シリアル処理は、高いスループットは得られないが、一般的なコンピュータにおいて復号アルゴリズムをソフトウェアで実現する場合や、回路規模の小さなハードウェアで実現する場合に適している。
タイプ2の構成による復号装置の具体的な実現手段は、非特許文献3乃至5等に記載されている。それぞれの回路構成を図28乃至図30に示す。なお、図28乃至図30においては、初期化や繰り返し終了条件の判断部は省略している。チェックノード処理演算器は手順1の演算を行うブロックであり、ビットノード処理演算器は手順2の演算を行うブロックである。各演算器の間には、演算器を共有して入出力を切り替えるためのメモリがある。
これら非特許文献3乃至5における復号装置の分類タイプと、復号装置の具体的なパラメータ(ノード数、演算器数)を下記表1に示す。この表1から非特許文献3乃至5の復号装置において、1つの演算器がいくつかのノードによって共有されていることがわかる。
次に、図28乃至図30に示す非特許文献3乃至5に記載の復号装置について詳細に説明する。なお、図28乃至図30において、同一の構成要素には、同一の符号を付してその詳細な説明は省略する。
先ず、図28に示すように、非特許文献3に記載の復号装置101は、上述したタイプBで且つタイプ2に分類されるもの、即ち、繰り返し毎に同じ演算器を使用し、且つ各演算器が時分割で複数のノードの処理を行うタイプの復号装置である。この復号装置101は、事前値が入力され、事前値を格納するメモリ103と、ビットノードYnにおける演算を行うビットノード処理演算器104と、チェックノードXmにおける演算を行うチェックノード処理演算器105と、ビットノードYnからチェックノードXmへのメッセージQm,n及びチェックノードXmからビットノードYnへのメッセージRm,nを格納するメモリ106と、ビットノード処理演算器104の結果に応じて硬判定復号を行い、推定された情報語を出力する硬判定復号器107とから構成される。この復号装置101は、上記表1に示すように、ビットノード処理演算器104及びチェックノード処理演算器105共に1つの演算器に256個のノードが対応するものとなっている。
また、この図28に示す復号装置101は、メモリがメモリ106の1つであるのに対し、図29に示すように、非特許文献4に記載の復号装置110は、同じくタイプBで且つタイプ2に分類されるものであるが、ビットノード処理演算器104において算出されたビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ108と、チェックノード処理演算器105において算出されたチェックノードXmからビットノードYnへのメッセージRm,nを格納するメモリ109とで個別に2つのメモリを有している。この復号装置110は、上記表1に示すように、ビットノード処理演算器104及びチェックノード処理演算器105共に1つの演算器に211個のノードが対応するものとなっている。
また、非特許文献5に記載の復号装置は、タイプAで且つタイプ2に分類されるもの、即ち、繰り返し毎に異なる演算器を使用し、且つ各演算器が時分割で複数のノードの処理を行うタイプの復号装置である。この復号装置は、上記表1に示すように、全てのビットノード(N=4608)が1つのビットノード処理演算器により演算され、また、1つのチェックノード処理演算器により、128個のチェックノードの演算が行われるものとなっており、これらの演算器が繰り返し処理回数分用意される。
この復号装置を図30に示す。なお、図30においては、簡単のため、ビットノード処理演算器及びチェックノード処理演算器を各1つずつのみ示す。即ち、図30に示すように、タイプA且つタイプ2に分類される復号装置120は、事前値を格納するメモリ113と、事前値を入力してk回の繰り返し演算処理の後に硬判定復号により推定された情報語を出力する硬判定復号器107とを有する。即ち、手順1及び手順2の繰り返し演算の回数がk回で硬判定復号される復号装置であって、繰り返し演算の回数分のk個の演算部1210〜121k-1を有している。演算部1210は、初期化(手順0)を含めた演算を行う部分であり、事前値が入力され、ビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ1180と、チェックノードにおける手順1の演算を行うチェックノード処理演算器1150と、チェックノードXmからビットノードYnへのメッセージRm,nを格納するメモリ1190及びメッセージRm,nからビットノードYnにおける手順2の演算を行うビットノード処理演算器1140とを有する。この演算部1210よりも後段の演算部1211〜121k−1においては、手順1及び手順2を演算する演算部となっており、例えば演算部1211は、メッセージQm,nを格納するメモリ1181、チェックノード処理演算器1151、メッセージRm,nを格納するメモリ1191、ビットノード処理演算器とから構成される。そして、最終段のビットノード処理演算器114k−1における演算結果が上述の硬判定復号器107に入力され処理が完了するものである。
ここで、上述の非特許文献3及び非特許文献4による構成では、演算器の入出力を切り替えるために、メモリにおいて、RAMを複数のバンクに分割して同時に異なるアドレスのデータにアクセスする方法を用いている。以下、このことについて更に詳細に説明する。
図31は、上述したアルゴリズムにおいて、手順1及び手順2を行う要部を模式的に示すブロック図である。上述のアルゴリズムに従うと、図31に示すように、例えば、ビットノードYnからチェックノードXmへ渡されるメッセージQm,nを格納するメモリ(RAM)128を有する場合、リード時には、チェックノード処理演算器125に入力するWr(図1に示すパリティ検査行列の符号語である場合はWr=6)個のQm,n(n∈N(m))(データD14)をメモリ128から読み出し、ライト時にはビットノード処理演算器124から求まるWc(図1に示す行列においては、Wc=2)個のQm,n(m∈M(n))(データD13)をメモリ128に書き込む。
同様に、チェックノードXmからビットノードYnに渡されるメッセージRm,nを格納するメモリ(RAM)129を有する場合、リード時にはビットノードYnの演算器124に入力するWc個のRm,n(m∈M(n))(データD12)を読み出し、ライト時にはチェックノードXmの演算器125から求まるWr個のRm,n(n∈N(m))(データD11)を書き込む。ここで、N(m)は、パリティ検査行列第m行における非零要素の列番号、M(n)は、パリティ検査行列第n列における非零要素の行番号に対応する。
このメッセージQm,n、Rm,nの読み出し及び書き込みについて更に詳細に説明する。ここでは、図31に示すビットノード処理演算器124において算出されたビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ128と、チェックノード処理演算器125において算出されたチェックノードXmからビットノードYnへのメッセージRm,nを格納するメモリ129において、各メモリ128、129が各ノード毎のアドレスにデータを保存する場合を例にとって説明する。
図32(a)及び(b)は、図1に示す行列を使用した復号装置において、夫々メッセージQm,nを格納するRAM及びメッセージRm,nを格納するRAMのアドレスを模式的に示す図である。
チェックノードXmにおける処理においては、N個のビットのうち、非零要素(Wr=6)分のデータD11(メッセージRm,n(n∈N(m)))がチェックノード処理演算器125によりメモリ129に書き込まれる。
ビットノードYnにおける処理においては、ビットノード処理演算器124により、メモリ129からM個のチェックのうち、非零要素(Wc=2)分のデータD12(メッセージRm,n(m∈M(n))が読み出される。そして、読み出されたデータD12から、ビットノード処理演算器124にてメッセージQm,n(m∈M(n))が算出され、この算出されたメッセージQm,n(m∈M(n))がデータD13としてメモリ128に書き込まれる。
そして、チェックノードXmにおける処理において、チェックノード処理演算器125が、メモリ128からデータD14(メッセージQm,n(n∈N(m)))を読み出し、これよりメッセージRm,n(n∈N(m))を算出する。
ここで、図32(a)及び(b)に示すように、メモリ128及びメモリ129において、例えばビットノードY0におけるチェックノードXmへのメッセージQm,0を算出する場合は、データD12としてメッセージR0,0及びR6,0が必要になり、チェックノードX0におけるビットノードYnへのメッセージR0,nを算出する場合は、データD14として、Q0,0、Q0,1、Q0,3、Q0,11、Q0,13、及びQ0,17が必要である。これらのデータは、メモリ128、129にランダムアクセスすることで読み出すことが可能であるものの、メモリにアクセスする回数が多くなるため、スループットが極めて悪くなる。
そこで、行単位又は列単位にアクセスすれば、スループットを向上することができる。しかしながら、上述したように、各演算器124、125におけるメモリ128、129の読み出し位置及び書き込み位置(同時にアクセスするデータの格納場所)が列又は行と異なっている。従って、例えばビットノード処理演算器124における処理、即ち列単位のアクセスに都合がよいようなメモリ構成とすると、チェックノード処理演算器125における処理、即ち行単位のアクセスに不都合が生じてしまう。
そこで、上述の例えば非特許文献3及び非特許文献4のように、メッセージQm,n、Rm,nを格納するメモリを複数バンクに分割してメモリへのアクセスの簡素化を図ったり、非特許文献5のように、FIFO(first in first out)にメッセージを入力し、必要なデータを選択する選択器を備えるような構成にする等の工夫がなされている。
R.G.ギャラガ(R. G. Gallager)著,「LDCP符号(Low Density Parity Check Codes)」,エムアイティープレス(MIT Press),1963年 A. J. Blanksby and C. J. Howland著,"A 690-mW 1-Gb/s 1024-b, Rate-1/2 Low-Density Parity-Check Code Decoder",アイイーイーイー・ジャーナル・オブ・ソリッド・ステイト・サーキット(IEEE Journal of Solid-State Circuits),2002年3月,第37巻,第3号,pp404−412 T. Zhang and K. K. Parhi著,"A 54 MBP (3,6)-REGULAR FPGA LDPC DECODER",アイイーイーイー・ワークショップ・オン・シグナル・プロセッシング・システムズ(IEEE Workshop on Signal Processing Systems),2002年,pp 127−132 M. M. Mansour and N. R. Shanbhag著、「LDPC符号のためのロウパワーVLSIデコーダの構成(Low-Power VLSI Decoder Architectures for LDPC Codes)」,プロシーデングス・オブ・ザ・2002・インターナショナル・シンポジウム・オン・ロウ・パワー・エレクトロニクス・アンド・デザイン(Proceedings of the 2002 International Symposium on Low Power Electronics and Design),2002年,pp.284−289 E. Yeo, P. Pakzad, B. Nikolic and V. Anantharam著,「マグネティックレコーダチャネルにおける繰り返し復号のためのVLSIの構成(VLSI Architectures for Iterative Decoders in Magnetic Recording Channels)」、アイイーイーイー・トランザクション・オン・マグネティクス(IEEE Transactions on Magnetics),2001年3月,第37巻,第2号,pp748−755 特開2002−33670号公報
R.G.ギャラガ(R. G. Gallager)著,「LDCP符号(Low Density Parity Check Codes)」,エムアイティープレス(MIT Press),1963年 A. J. Blanksby and C. J. Howland著,"A 690-mW 1-Gb/s 1024-b, Rate-1/2 Low-Density Parity-Check Code Decoder",アイイーイーイー・ジャーナル・オブ・ソリッド・ステイト・サーキット(IEEE Journal of Solid-State Circuits),2002年3月,第37巻,第3号,pp404−412 T. Zhang and K. K. Parhi著,"A 54 MBP (3,6)-REGULAR FPGA LDPC DECODER",アイイーイーイー・ワークショップ・オン・シグナル・プロセッシング・システムズ(IEEE Workshop on Signal Processing Systems),2002年,pp 127−132 M. M. Mansour and N. R. Shanbhag著、「LDPC符号のためのロウパワーVLSIデコーダの構成(Low-Power VLSI Decoder Architectures for LDPC Codes)」,プロシーデングス・オブ・ザ・2002・インターナショナル・シンポジウム・オン・ロウ・パワー・エレクトロニクス・アンド・デザイン(Proceedings of the 2002 International Symposium on Low Power Electronics and Design),2002年,pp.284−289 E. Yeo, P. Pakzad, B. Nikolic and V. Anantharam著,「マグネティックレコーダチャネルにおける繰り返し復号のためのVLSIの構成(VLSI Architectures for Iterative Decoders in Magnetic Recording Channels)」、アイイーイーイー・トランザクション・オン・マグネティクス(IEEE Transactions on Magnetics),2001年3月,第37巻,第2号,pp748−755
以上をまとめると、繰り返し毎に異なる演算器を使用するタイプA及び繰り返し毎に同一の演算器を使用するタイプBの2つの分類において、タイプAの復号装置では、繰り返し処理をパイプライン化することによって、繰り返し回数に依らず高スループットを得ることができるが、繰り返し回数に比例した数の演算器が必要となるため、回路規模が極めて大きくなる。一方、タイプBの復号装置の場合、回路規模を小さくできるものの繰り返し回数に応じてスループットが制限されてしまう。
また、M個の各チェックノードXmにおける処理、N個の各ビットノードYnにおける処理を、全てパラレルで独立した演算器により行うタイプ1と、チェックノードXm、ビットノードYnの両方、あるいはいずれかを、複数のグループに分けて、各グループ内の処理をパラレルに、別のグループの処理を時分割(シリアル)で行うタイプ2の分類においては、いずれの場合においても以下に示す問題点がある。
即ち、タイプ1の復号装置では、ノードに対応した個数の演算器を用意することにより、繰り返し処理1回にかかるクロックサイクル数が少ない、即ち、1回の繰り返し処理は、チェックノードにおける演算とビットノードにおける演算の1クロック等となるため、高いスループットが得られるものの、符号長の長い符号、パリティチェック数の多い符号の復号回路は回路規模の点で実現が難しく、メッセージ伝搬のための配線は2部グラフのエッジに相当しており、演算器間を接続する配線数が多いため、LSIやFPGA等ではルーティングが困難となる。
一方、タイプ2の復号装置は、グループ毎に演算器を時分割で再利用する構成となり、チェックノードXmの個数M、及びビットノードYnの個数Nよりも、夫々チェックノード処理演算器及びビットノード処理演算器が少なくてすむ。従って、タイプ1の構成と比較すると、グループの数に応じてスループットが低下するが、小さな回路規模で実現できるため、符号長の大きな符号、パリティチェック数の多い符号への対応が可能となる。しかしながら、タイプ2の構成では、演算器への入出力を切り替えるために、メッセージを保存するメモリが必要となる。また、着目しているノードのデータ(メッセージ)を選択する機構、メッセージを保管する場所を制御する機構が必要となる。
特に、タイプ2の復号装置の場合、全てのノードを異なるグループに分割した場合、即ち、チェックノード処理演算器及びビットノード処理演算器を各1つずつとした場合には、完全なシリアル処理となり、高いスループットが得られない。
従って、上述した如く、繰り返し毎に異なる演算器を使用するようなタイプAの復号装置であっても、繰り返し毎に同一の演算器を使用するようなタイプBであっても、例えばタイプ2のように演算器を時分割で再利用するような復号装置の構成にした場合、高スループットを得るためには、同時に複数のメッセージを処理する必要があるが、同時にアクセスするデータの格納場所がリード時とライト時で異なるため、例えば上記非特許文献3、4に記載の復号装置においては、RAMを複数のバンクに分割する必要があり、構造が複雑となる。また、非特許文献5による復号装置においては、タイプA且つタイプ2の構成であり、共用した演算器への入出力を切り替えるために、演算器とメモリとの間にマルチプレクサ、及びデマルチプレクサが存在しており(図示せず)、それらの回路が複雑になるという問題点がある。
本発明は、このような従来の実情に鑑みて提案されたものであり、1回の繰り返し処理において2回以上演算器を使用して符号検出する際に、各ノード間でやりとりするメッセージを保存するメモリ等の回路構成を極めて簡略化することができる符号検出装置及び方法、またこれを使用した復号装置及び方法、並びに情報処理装置及び方法を提供することを目的とする。
上述した目的を達成するために、本発明に係る符号検出装置は、入力された低密度パリティ検査符号から、低密度パリティ検査行列に対応した複数のチェックノード及び複数の変数ノードの間でメッセージを伝搬させるメッセージパッシングアルゴリズムを用いて符号検出する符号検出装置において、各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算手段と、上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算手段とを有することを特徴とする。
本発明においては、従来は変数ノード処理演算手段の入出力データと、チェックノード処理演算手段の入出力データとが異なる要素からなるメッセージであったのに対し、本発明では、チェックノード処理演算手段は、変数ノード処理演算手段が出力した変数ノード毎の第1のメッセージを受け取り、算出したメッセージをチェックノード毎ではなく、変数ノード毎にまとめた第2のメッセージとして出力するため、変数ノード処理演算手段の出力データと、チェックノード処理演算手段の入力データとが同様の要素、即ち、少なくとも一の変数ノードと、該一の変数ノードに接続された全てのチェックノードとの間でやりとりするメッセージとすることができると共に、チェックノード処理演算手段が出力する第2のメッセージは、これを変数ノード処理演算手段がそのまま使用してチェックノードへのメッセージを算出することができるメッセージであり、チェックノード処理演算手段の出力データと変数ノード処理演算手段の入力データとが同様の要素、即ち、少なくとも一の変数ノードと、該一の変数ノードに接続された全てのチェックノードとの間でやりとりするメッセージとすることができる。
また、上記チェックノード処理演算手段は、入力された上記第1のメッセージからチェックを満たす確率又は当該確率に準じた値を求める第1の演算と、該第1の演算にて得られた該チェックを満たす確率又は当該確率に準じた値に基づき、上記第2のメッセージを求める第2の演算とを実行することができ、一旦チェックを満たす確率又は当該確率に準じた値を求めることで、変数ノード毎の第2のメッセージを出力可能となる。ここで、確率とは対数尤度比を含むものである。
更に、上記変数ノード処理演算手段からの上記第1のメッセージを保存する第1の記憶手段を有し、上記チェックノード処理演算手段は、上記第1の記憶手段から上記第1のメッセージを読み出すことができ、上述したように、チェックノード処理演算手段の入出力データと、変数ノード処理演算手段の入出力データが同一の要素からなるメッセージであるため、第1の記憶手段には、変数ノード処理演算手段から変数ノード毎の第1のメッセージが書き込まれ、チェックノード処理演算手段から変数ノード毎の第1のメッセージが読み出されることとなり、各処理演算手段が書き込むデータ・読み出すデータを同一アドレスで管理することができると共に、第1の記憶手段にアクセスを迅速化することができる。
更にまた、上記チェックノード処理演算手段における演算結果を記憶する第2の記憶手段を有し、上記第1の演算では、1以上の上記変数ノードからの1以上の上記第1のメッセージが逐次入力され、該1以上の上記第1のメッセージが渡された全てのチェックノードにおけるチェックを満たす確率又は当該確率に準じた値を逐次更新し、上記第2の演算では、再び上記1以上の上記変数ノードからの1以上の上記第1のメッセージが逐次入力され、上記第1の演算にて更新が終了したチェックを満たす確率又は当該確率に準じた値と、上記1以上の第1のメッセージとから、該1以上の上記第1のメッセージが渡された全てのチェックノードから該1以上の上記変数ノードへ渡す上記第2のメッセージを逐次算出し、上記第2の記憶手段は、上記逐次更新されるチェックを満たす確率又は当該確率に準じた値、又は更新が終了したチェックを満たす確率又は当該確率に準じた値を記憶することができる。
また、上記低密度パリティ検査符号は、任意の符号語をp回、巡回置換したものもまた符号語になる準巡回符号(quasi-cyclic code:QC符号)であって、更に上記QC符号は、p=1である巡回符号とすることができ、この場合、上記第2の記憶手段は、上記チェックノードと同数のシフトレジスタと、上記チェックノード処理演算手段からの演算結果により上記シフトレジスタのデータを更新する更新手段とを有し、上記シフトレジスタは、更新されたデータを出力することができ、パリティ検査行列をQC符号とすることで、第2の記憶手段の構成を簡略化することができる。
更に、上記変数ノード処理演算手段は、上記pの倍数個の変数ノードから、該pの倍数個の変数ノードに接続される全てのチェックノードに渡す上記第1のメッセージを並列に演算し、上記第2の記憶手段は、上記pの倍数個の変数ノードにエッジにより接続された全てのチェックノードに対して当該p個の変数ノードから渡される上記第1のメッセージにより更新された当該チェックノードにおけるチェックを満たす確率又は当該確率に準じた値を記憶することができ、QC符号であると、チェックノード処理演算におけるスループットを向上することができる。
更にまた、上記チェックノード処理演算手段が上記チェックを満たす確率又は当該確率に準じた値を算出する第1フェーズにおける演算処理と、上記チェックノード処理演算手段が上記第2のメッセージを算出し上記変数ノード処理演算手段が上記第1のメッセージを算出する第2フェーズにおける演算処理とを繰り返す繰り返し演算処理の繰り返し回数を制御する制御手段を有し、例えば上記繰り返し演算を所定の回数実行したり、上記事後確率が所定の条件を満たすまで実行したりすることができる。
また、上記チェックノード処理演算手段は、上記第1フェーズにおける上記第1の演算を実行する第1フェーズ用処理演算手段と、上記第2フェーズにおける上記第2の演算を行う第2フェーズ用処理演算手段とを有し、上記第1フェーズ用処理演算手段は、上記第2フェーズ用処理演算手段が上記第2の演算を実行直後に、次の繰り返し演算における上記第1の演算を実行することができ、第2フェーズと次の繰り返し演算の第1フェーズとをオーバーラップして行なうことにより、スループットを約2倍に向上することができる。
また、本発明に係る符号検出方法は、入力された低密度パリティ検査符号から、低密度パリティ検査行列に対応した複数のチェックノード及び複数の変数ノードの間でメッセージを伝搬させるメッセージパッシングアルゴリズムを用いて符号検出する符号検出方法において、各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算工程と、上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算工程とを有することを特徴とする。
本発明においては、チェックノード処理演算工程における入出力データ、即ちチェックノードから変数ノードへのメッセージと、変数ノード処理演算工程における入出力データ、即ち変数ノードからチェックノードへのメッセージとを同一の要素からなるメッセージとすることができ、データの入出力の制御が簡単化する。
本発明に係る復号装置は、入力された低密度パリティ検査符号から、メッセージパッシングアルゴリズムを用いて複数のチェックノードと複数の変数ノードとの間でメッセージを伝搬させて符号検出して復号する復号装置において、各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算手段と、上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算手段と、上記第2のメッセージから事後確率を算出し、該事後確率の硬判定復号をする復号手段とを有することを特徴とする。
本発明においては、変数ノード処理演算手段の出力データと、チェックノード処理演算手段の入力データとが同様の要素、即ち、少なくとも一の変数ノードに接続された全てのチェックノードに対するメッセージとしたパリティ符号検出装置を備えた復号装置として利用することができ、例えば通信路を介して送信されることにより雑音の影響を受けた符号語から精度よく符号検出することができる。
また、上記復号手段では、上記硬判定結果からパリティ部分を除去することができ、これにより組織符号のLDPC符号の復号が可能になる。
また、本発明に係る復号方法は、上述の入力された低密度パリティ検査符号から、メッセージパッシングアルゴリズムを用いて複数のチェックノードと複数の変数ノードとの間でメッセージを伝搬させて符号検出して復号する方法である。
本発明に係る情報処理装置は、メッセージから低密度パリティ検査符号に符号化され記録されたデータを再生する情報処理装置において、上記記録されたデータを読み出し、メッセージパッシングアルゴリズムを用いて複数のチェックノードと複数の変数ノードとの間でメッセージを伝搬させて低密度パリティ検査符号の符号を検出して再生する再生手段を有し、上記再生手段は、各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算手段と、上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算手段と、上記第2のメッセージから事後確率を算出し、該事後確率の硬判定復号をする復号手段とを有することを特徴とする。
本発明においては、変数ノード処理演算手段の出力データと、チェックノード処理演算手段の入力データとが同様の要素、即ち、少なくとも一の変数ノードに接続された全てのチェックノードに対するメッセージとしたパリティ符号検出装置を備えた情報処理装置とすることができ、記録時又は再生時等におけるデータの誤りを精度よく訂正することができる。
また、情報語を低密度パリティ検査符号に符号化する符号化手段と、上記低密度パリティ検査符号を記録する記録手段とを有することができ、記録再生装置として使用することができる。
また、本発明に係る情報処理方法は、メッセージから低密度パリティ検査符号に符号化され記録されたデータを再生する方法である。
本発明に係る符号検出装置及び方法においては、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージ(第1のメッセージ)に基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力することができ、このことにより、変数ノード処理演算手段の出力データと、チェックノード処理演算手段の入力データとを同様の要素、即ち、少なくとも一の変数ノードと、該少なくとも一の変数ノードに接続された全てのチェックノードとの間でやりとりするメッセージとすることができ、従ってノード間でやり取りするメッセージを保存するメモリ構成を簡略化することができると共にメモリへのアクセスが迅速化する。
また、複数のチェックノードと複数の変数ノードとの間でメッセージを伝搬させて符号検出するメッセージパッシングアルゴリズムを用いて低密度パリティ検査符号を復号する際、ノード間でやり取りするメッセージを保存するメモリ構成を簡略化することにより、回路構成を簡略化及び小型化した復号装置及び情報処理装置、並びにメモリの書き込み・読み出しが容易な復号方法及び情報処理方法を提供することができる。
以下、本発明を適用した最良の実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、従来とは異なる手順により演算することで、回路構成を極めて簡素化したLDPC符号の符号検出装置及びこれを備える各種情報処理装置に適用したものである。
(1)パリティ検査行列
図1は、7行21列のパリティ検査行列を示す図である。図1に示すパリティ検査行列は、階数が6、これによって定まる符号は符号長N=21、次元K=15の線形符号となる。この行列において各行における非零、即ち1の要素数Wrは全て6で一定であり、各列における非零、即ち1の要素数Wcは全て2で一定であるregular LDPC符号である。
図1は、7行21列のパリティ検査行列を示す図である。図1に示すパリティ検査行列は、階数が6、これによって定まる符号は符号長N=21、次元K=15の線形符号となる。この行列において各行における非零、即ち1の要素数Wrは全て6で一定であり、各列における非零、即ち1の要素数Wcは全て2で一定であるregular LDPC符号である。
図2は、図1に示すパリティ検査行列に対応した2部グラフ示す図である。図2に示すように、M行N列のパリティ検査行列を表現した2部グラフは、チェックに対応するM個のノード(チェックノードXm)、変数に対応するN個のノード(ビットノード(変数ノード)Yn)、及びチェックノードXmとビットノードYnとを接続するエッジにより構成される。エッジはパリティ検査行列の非零要素の場所に対応しており、第m行第n列の要素が零でない場合にのみm番目のチェックノードXmとn番目のビットノードYnとがエッジで接続される。
(2)メッセージパッシングアルゴリズム
ここでは先ず、本発明の理解を容易とするため、エッジで接続されたチェックノードXmとビットノードYnとのノード間にメッセージを伝搬させる通常のメッセージパッシングアルゴリズムによるLDPC符号の符号検出方法について説明する。メッセージパッシングアルゴリズムによるLDPC符号の符号検出は、次のような手順を繰り返すことで実現される。
ここでは先ず、本発明の理解を容易とするため、エッジで接続されたチェックノードXmとビットノードYnとのノード間にメッセージを伝搬させる通常のメッセージパッシングアルゴリズムによるLDPC符号の符号検出方法について説明する。メッセージパッシングアルゴリズムによるLDPC符号の符号検出は、次のような手順を繰り返すことで実現される。
[1]手順0−初期化
各ビットノードYnから出るすべてのエッジについて、ビットノードYnからチェックノードXmに伝搬されるメッセージq0 m,n,q1 m,nを事前確率p0 n,p1 nに初期化する。ここでpx nとはビットnが“x”である事前確率を表すものとする。
各ビットノードYnから出るすべてのエッジについて、ビットノードYnからチェックノードXmに伝搬されるメッセージq0 m,n,q1 m,nを事前確率p0 n,p1 nに初期化する。ここでpx nとはビットnが“x”である事前確率を表すものとする。
[2]手順1−チェックノードにおける処理
各チェックノードXmから出るすべてのエッジについて、チェックノードXmからビットノードYnに伝搬されるメッセージr0 m,n,r1 m,nを次式に従って求める。
各チェックノードXmから出るすべてのエッジについて、チェックノードXmからビットノードYnに伝搬されるメッセージr0 m,n,r1 m,nを次式に従って求める。
[3]手順2−ビットノードにおける処理
必要に応じて各ビットの事後確率q0 n、q1 nを、次式により求める。
必要に応じて各ビットの事後確率q0 n、q1 nを、次式により求める。
更に繰り返しが必要な場合、次式に従ってビットノードYnからチェックノードXmに伝搬されるメッセージを計算する。
メッセージパッシングアルゴリズムによる復号は、終了条件を満たすまで手順1と手順2とを繰り返し、最後に硬判定復号で情報語が推定される。繰り返しの終了条件は、
1)繰り返しが予め定めた回数に達した時点で終了
2)予め定めた繰り返し回数に達していない場合でも硬判定結果がパリティチェックを満たせば終了
等が一般的である。ここで、パリティチェックは、下記(5)のように示される。
1)繰り返しが予め定めた回数に達した時点で終了
2)予め定めた繰り返し回数に達していない場合でも硬判定結果がパリティチェックを満たせば終了
等が一般的である。ここで、パリティチェックは、下記(5)のように示される。
このようなアルゴリズムと等価な計算方法として、対数尤度比LLR(Log-Likelihood Ratio)を用いて対数領域での計算式に変形すれば、乗算に相当する演算は、全て加算に置き換えられ、ハードウェアやソフトウェアによる処理を簡略化できる。対数領域における演算のアルゴリズムを以下に示す。
[1]手順0−初期化
各ビットノードYnから出るすべてのエッジについて、エッジを伝搬するメッセージQm,nを各ビットの事前対数尤度比Pnで初期化する。ここで、エッジを伝搬するメッセージQm,n及び各ビットの事前対数尤度比Pnは、夫々下記(6−1)及び(6−2)のように定義される。
各ビットノードYnから出るすべてのエッジについて、エッジを伝搬するメッセージQm,nを各ビットの事前対数尤度比Pnで初期化する。ここで、エッジを伝搬するメッセージQm,n及び各ビットの事前対数尤度比Pnは、夫々下記(6−1)及び(6−2)のように定義される。
[2]手順1−チェックノードにおける処理
各チェックノードXmから出るすべてのエッジについて、エッジを伝搬するメッセージRm,nを下記式(7−1)により計算する。ここで、Am、Bm、及びメッセージRm,nは下記(7−2)乃至(7−4)のように定義され、f(β)、αm,n、及びβm,nは下記(7−5)乃至(7−7)で示される。
各チェックノードXmから出るすべてのエッジについて、エッジを伝搬するメッセージRm,nを下記式(7−1)により計算する。ここで、Am、Bm、及びメッセージRm,nは下記(7−2)乃至(7−4)のように定義され、f(β)、αm,n、及びβm,nは下記(7−5)乃至(7−7)で示される。
[3]手順2−ビットノードにおける処理
各ビットの下記(8)に定義される事後対数尤度比Qnを、下記式(9)により求める。
各ビットの下記(8)に定義される事後対数尤度比Qnを、下記式(9)により求める。
更に繰り返しが必要な場合、下記式(10)に従ってビットノードYnからチェックノードXmに伝搬されるメッセージQm,nを計算する。
ここで、チェックノードXmからビットノードYnへのメッセージRm,nを求める際に使用される、上記(7−2)及び(7−3)にて定義されるAm、Bmの物理的な意味については次のように解釈できる。Amf(Bm)を計算すると、下記式(11)のように書ける。
ここで、r0 m、r1 mを、以下式(12−1)及び(12−2)のように定義した。
ビットノードYnからチェックノードXmへのメッセージq0 m,n及びq1 m,nを夫々下記(13−1)及び(13−2)としたとき、上記(12−1)に示すr0 mは、チェックを満たす確率に相当する。
即ち、Am、Bmは、各ビットノードYn(n∈N(m))からチェックノードXmへのメッセージQm,n又はq0 m,n、q1 m,nに基づいた、チェックを満たす確率の間接的な表現に相当する。
(3)第1の実施の形態
次に、本発明の第1の実施の形態について詳細に説明する。上述のようなパリティ検査行列によるLDPC符号の通常の符号検出方法に対し、本発明では、繰り返し処理1回あたりの演算において演算器を複数回用いる方法であり、且つ先に示した従来のタイプ2の構成とは異なる回路構成を提案するものである。
次に、本発明の第1の実施の形態について詳細に説明する。上述のようなパリティ検査行列によるLDPC符号の通常の符号検出方法に対し、本発明では、繰り返し処理1回あたりの演算において演算器を複数回用いる方法であり、且つ先に示した従来のタイプ2の構成とは異なる回路構成を提案するものである。
従来のタイプ2の構成は、チェックノードXm(X0〜XM−1のM個)における処理で用いる演算器は、ビットノードYn(Y0〜YN−1のN個)からチェックノードXmへのメッセージQm,n(n∈N(m))を入力として受け取り、チェックノードXmからビットノードYnへのメッセージRm,n(n∈N(m))を出力する構成であり、着目しているチェックノードXmを順次切り替えることにより、全てのチェックノードXmの処理を終える動作を行う。ここで、N(m)は、パリティ検査行列第m行における非零要素の列番号、M(n)は、パリティ検査行列第n列における非零要素の行番号に対応する。
即ち、例えば図1に示すパリティ検査行列の場合であれば、最初に着目するチェックノードX0において、チェックX0のエッジに接続されたビットノードY0、Y1、Y3、Y11、Y13、Y17から夫々メッセージQm,n(n∈N(m))(計6個のメッセージQm,n)を受け取り、これらから、各ビットノードY0、Y1、Y3、Y11、Y13、Y17に渡すメッセージRm,n(n∈N(m))(計6個のメッセージRm,n)を算出する処理を行った後、次に着目するチェックノードX1における演算を行うといったように、着目するチェックノードXmを順次切替え演算を行っている。
これに対して、本実施の形態にて用いられる演算器は、チェックノードXmに着目して演算を行わず、常にビットノードYnに着目した演算を行う。即ち、図1に示すパリティ検査行列であれば、着目しているビットノードYnを順次切り替えながら、ビットノードYnからチェックノードXmへの第1のメッセージとしてのメッセージQm,n(m∈M(n))(計2つのメッセージQm,n)を入力として受け取る。即ち、先ず、ビットノードY0に接続された全てのチェックノードX0、X6がビットノードY0からメッセージQm,n(m∈M(n))を受け取り、次に、ビットノードY1に接続された全てのチェックノードX0、X3がビットノードY1からメッセージQm,n(m∈M(n))を受け取るといったように、ビットノードYnから逐次メッセージQm,n(m∈M(n))を受け取り、メッセージQm,n(m∈M(n))を受け取ったチェックノードXmについて、逐次演算を繰り返すことで、一旦、上記式(7−2)及び(7−3)に示すAm、Bm、或いはチェックを満たす確率r0 mやそれに準じた値等を求める。このように、全てのビットノードYnからのメッセージQm,n(m∈M(n))を受け取り終わった時点で、全てのチェックノードXmにおける上記式(7−2)及び(7−3)に示すAm、Bm、或いはチェックを満たす確率r0 mやそれに準じた値が求まる。
その後、再びビットノードYnからチェックノードXmへのメッセージQm,n(m∈M(n))を入力として受け取り、求めたAm、Bmと、受け取ったQm,n(m∈M(n))とから、チェックノードXmからビットノードYnへの第2のメッセージとしてのメッセージRm,n(m∈M(n))(計2つのメッセージRm,n)を出力する。即ち、上述と同様に、ビットノードY0に接続された全てのチェックノードX0、X6がビットノードY0からメッセージQm,n(m∈M(n))(Q0,0、Q6,0)を受け取り、これにより、チェックノードX0、X6がメッセージQm,n(m∈M(n))を渡されたビットノードY0に対して送るメッセージRm,n(m∈M(n))(R0,0、R6,0)を算出して出力し、次に、ビットノードY1に接続された全てのチェックノードX0、X3がビットノードY1からメッセージQm,n(m∈M(n))(Q0,1、Q3,1)を受け取り、同じく、チェックノードX0、X3がメッセージQm,n(m∈M(n))を渡されたビットノードY1に対して送るメッセージRm,n(m∈M(n))(R0,1、R3,1)を算出して出力するといったような処理を繰り返す。このように、ビットノードYnから、順次メッセージQm,n(m∈M(n))を渡さることで、ビットノードYnへメッセージRm,n(m∈M(n))が順次出力されるものである。
ここで、チェックを満たす確率に準じた値とは、r0 mをある特定の関数によって変換された値を指し、逆関数等の別の関数によって元のr0 mやその近似値を導き出すことのできる値を指す。
(3−1)符号検出装置
以下、本実施の形態について更に詳細に説明する。図3は、本発明の実施の形態における符号検出装置を示すブロック図である。本実施の形態における符号検出装置は、説明の簡単のため、図1に示すM行N列、各行における非零要素数Wr=6、各列における非零要素数Wc=2のパリティ検査行列を有するLDPC符号、即ち、階数が6、これによって定まる符号は符号長N=21、次元K=15の線形符号の符号検出を行うものとして説明するが、実際には符号長は例えば100〜65K等で、例えば後述する記録再生装置等においてはセクタ単位を符号長とする等することができ、また、各列における非零要素数Wcは3以上であるのが一般的である。また、この図3においては、初期化の処理を行う処理部、及び繰り返し終了条件の判断部は図示を省略している。更に、以下の実施の形態においては、LLRを用いた対数領域のアルゴリズムを示すが、確率を用いたアルゴリズムも同様に構成できることは勿論である。
以下、本実施の形態について更に詳細に説明する。図3は、本発明の実施の形態における符号検出装置を示すブロック図である。本実施の形態における符号検出装置は、説明の簡単のため、図1に示すM行N列、各行における非零要素数Wr=6、各列における非零要素数Wc=2のパリティ検査行列を有するLDPC符号、即ち、階数が6、これによって定まる符号は符号長N=21、次元K=15の線形符号の符号検出を行うものとして説明するが、実際には符号長は例えば100〜65K等で、例えば後述する記録再生装置等においてはセクタ単位を符号長とする等することができ、また、各列における非零要素数Wcは3以上であるのが一般的である。また、この図3においては、初期化の処理を行う処理部、及び繰り返し終了条件の判断部は図示を省略している。更に、以下の実施の形態においては、LLRを用いた対数領域のアルゴリズムを示すが、確率を用いたアルゴリズムも同様に構成できることは勿論である。
図3に示すように、符号検出装置1は、着目しているビットノードYnの番号(0〜N−1番目)を表すカウンタ2と、事前値(事前対数尤度比)Pnを格納するメモリ3と、ビットノードYnからチェックノードXmへのメッセージQm,n(m∈M(n))を格納する第1の記憶手段としてのメモリ4と、メッセージQm,n(m∈M(n))から下記(7−2)及び(7−3)に示すAm、Bmを逐次更新し、チェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))を算出するチェックノード処理演算器5と、チェックノード処理演算器5により算出されたAm、Bmを格納する第2の記憶手段としてのメモリ6と、ビットノードYnからチェックノードXmへのメッセージQm,n(m∈M(n))を算出するビットノード処理演算器7とを有する。先ず、本符号検出装置1の動作に対応した手順について説明する。
[1]手順0−初期化
各ビットノードYnから出るすべてのエッジについて、エッジを伝搬するメッセージQm,n(m∈M(n))を各ビットの事前対数尤度比(事前値)Pnで初期化する。
各ビットノードYnから出るすべてのエッジについて、エッジを伝搬するメッセージQm,n(m∈M(n))を各ビットの事前対数尤度比(事前値)Pnで初期化する。
[2]手順1'
各チェックノードXmについて、下記式(7−2)、(7−3)に定義されるAm、Bmを求める。
各チェックノードXmについて、下記式(7−2)、(7−3)に定義されるAm、Bmを求める。
[3]手順2'
各ビットノードYnに入る全てのエッジに関して下記式(7−1)によりメッセージRm,n(m∈M(n))を求める。また、各ビットの事後対数尤度比(事後値)Qnを、下記式(9)により求める。
各ビットノードYnに入る全てのエッジに関して下記式(7−1)によりメッセージRm,n(m∈M(n))を求める。また、各ビットの事後対数尤度比(事後値)Qnを、下記式(9)により求める。
更に、繰り返し処理が必要な場合、次式に従ってビットノードYnからチェックノードXmに伝搬されるメッセージQm,n(m∈M(n))を下記式(10)により更新する。
上述した従来の手順1、手順2と比べると、チェックノードXmにおける従来の処理([2]手順1)が、本発明においては手順1'と手順2'の2つの手順に分割されている。従来の構成では、ビットノードYnからチェックノードXmへのメッセージQm,n(αm,n,βm,n)は、上述の手順1に示すように、一度のみ参照していたが、本実施の形態における方式では手順1'と手順2'の2回参照することになる。即ち、各チェックノードXmは、手順1'と手順2'とで同じメッセージQm,nを重複して受け取ることになる。また、ビットノードYnからチェックノードXmへのメッセージQm,nは、従来は、図32(a)に示すメッセージQm,n(n∈N(m))(データD14)であったが、本実施の形態においては、図32(a)に示すメッセージQm,n(m∈M(n))(データD13)となっている。
チェックノード処理演算器5及びビットノード処理演算器7による繰り返し処理1回の動作は、2つのフェーズにより実行される。第1フェーズではチェックノード処理演算器5により手順1'に対応した演算を行い、続いて第2フェーズではチェックノード処理演算器5及びビットノード処理演算器7により手順2'に対応した演算を行う。
次に、符号検出装置の各構成ブロックについて詳細に説明する。以上の処理を実行するために、各ブロックは次のような動作をする。
カウンタ2は、着目しているビットノードYnの番号を表すカウンタであり、第1フェーズ、第2フェーズのそれぞれにおいて、0からN−1の値をカウントする。つまり、1回の繰り返し処理の間にN進カウンタは2周することになる。
事前値Pnを格納するメモリ3は、入力された事前値PnをビットノードYnの番号のアドレスに格納する。またカウンタの値nに応じて事前値Pnを出力する。
ビットノードYnからチェックノードXmへのメッセージQm,n(m∈M(n))を格納するメモリ4は、1つのアドレスnでビットノードYnから出るすべてのメッセージQm,n(m∈M(n))、即ち本実施の形態においては、2つのメッセージQm,nに同時にアクセスできる構成とする。第1フェーズでは読み出しのみ、第2フェーズでは読み出し及び書き込み共に行う。
チェックノード処理演算器5は、第1フェーズ(手順1’)では、ビットノードYnに対応したメッセージQm,n(m∈M(n))を読み出し、αm,n、f(βm,n)を計算し、ビットノードYnに接続された全てのチェックノードXm(m∈M(n))に関してメモリ6から各々Am、Bmを入力として受け取り、Am×αm,n,Bm+f(βm,n)を計算、即ちAm、Bmを更新してメモリ6に出力する。第2フェーズでは、再びビットノードYnに対応したメッセージQm,n(m∈M(n))を読み出し、ビットノードYnに接続された全てのチェックノードXm(m∈M(n))に関してメモリ6から更新が終了したAm、Bmを入力として受け取り、Rm,n=(Am/αm,n)f(Bm−f(βm,n))(m∈M(n))を算出し、ビットノード処理演算器7に出力する。
Am、Bmを格納するメモリ6は、第1フェーズは、Am、Bmを逐次更新するモードとして動作する。最初に全てのチェックノードXmに関してAm=1、Bm=0に初期化を行う。ビットノードYnに関連するチェックノードXm(m∈M(n))について、現在、途中まで求まっているAm、Bmをチェックノード処理演算器5に出力し、次に、チェックノード処理演算器5からAm×αm,n,Bm+f(βm,n))を受け取ってAm、Bmを更新する。第1フェーズの終わりには手順1'の式(16−1)及び(16−2)で表された夫々Am及びBmが求まる。
第2フェーズではビットノードYnに関連するチェックノードXm(m∈M(n))について、Am、Bmをチェックノード処理演算器5へ出力する。
ビットノード処理演算器7は、第2フェーズでのみ動作する。ビットノードYnに入るメッセージRm,n(m∈M(n))をチェックノード処理演算器5から受け取り、メモリ3から事前値Pnを受け取り、上記式(9)に示す事後値Qn又は硬判定結果cn^、及びチェックノードXmへのメッセージQm,n=Qn−Rm,n(m∈M(n))を出力する。
以上の構成とすることで、ビットノードYnからチェックノードXmへのメッセージQm,n(m∈M(n))を格納するメモリ4は、読み出し時、書き込み時ともに、着目しているビットノードYnのアドレスで、Qm,n(m∈M(n))にアクセスできるため、1つのRAMで実現可能となる。
図4は、本実施の形態におけるチェックノード処理演算器5とビットノード処理演算器7との間でやり取りされるデータの流れを示す図である。上述したように、手順1及び手順2の演算を繰り返す従来の符号検出装置においては、図31及び図32に示したように、ビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリは、チェックノード処理演算器における読み出し時には行方向(データD14)に、ビットノード処理演算器による書き込み時には列方向(データD13)にアクセスする必要があるため、行単位、列単位にアクセスしてスループットを向上させるためにはメモリを複数バンクに分ける等、構成が複雑化していた。
これに対して、本実施の形態においては、チェックノード処理演算器5は、ビットノードに着目した演算を行うため、図4に示すように、ビットノード処理演算器7からメモリ4に書き込まれたデータD1(メッセージQm,n(m∈M(n)))と同じ列方向のデータD2(メッセージQm,n(m∈M(n)))をチェックノード処理演算器5が読み出して使用する。このように、上述の図31に示すチェックノード処理演算器におけるメモリの読み出しデータは、データD14(メッセージQm,n(n∈N(m)))ではなく、データD13(メッセージQm,n(m∈M(n)))となるため、書き込み及び読み出しを同一のアドレスとすることができ、回路設計を極めて簡略にすることができる。
具体的には、列方向の非零要素数がWcのレギュラーLDPC符号の場合、1つのメッセージQm,nを表現するビット数をqとすると、メッセージQm,n(m∈M(n))は(Wc×q)ビットで表せるため、(Wc×q)ビット、NワードのRAMで実現できる。
また、事前値Pnを格納するメモリ3、ビットノードYnからチェックノードXmへのメッセージを格納するメモリ4は、いずれもアクセスするアドレスが1ずつ変化するため、巡回シフトレジスタによる構成とすることが可能である。
更に、チェックノード処理演算器5におけるαm,n、f(βm,n)の演算をビットノード処理演算器7で行って、ビットノードYnからチェックノードXmへのメッセージを格納するメモリにはαm,n、f(βm,n)を保存する構成としてもよい。この場合、後述する第1フェーズ用チェックノード処理演算器75aと第2フェーズ用チェックノード処理演算器75b(図20参照)とで重複していたαm,n、f(βm,n)の計算をビットノード処理演算器の1箇所で行うことができる。
(3−2)チェックノード処理演算器
上述した如く、本実施の形態における符号検出装置においては、ビットノード処理演算器7及びチェックノード処理演算器5が共にビットノードに着目した演算を行うため、メッセージQm,nを格納するメモリの回路構成を簡略化できる。ここで、ビットノードYnに着目して上述の手順1’の演算を行うチェックノード処理演算器の具体例について詳細に説明する。
上述した如く、本実施の形態における符号検出装置においては、ビットノード処理演算器7及びチェックノード処理演算器5が共にビットノードに着目した演算を行うため、メッセージQm,nを格納するメモリの回路構成を簡略化できる。ここで、ビットノードYnに着目して上述の手順1’の演算を行うチェックノード処理演算器の具体例について詳細に説明する。
図5は、本実施の形態の符号検出装置におけるチェックノード処理演算器の一具体例を示すブロック図である。図5に示すように、チェックノード処理演算器10は、非零要素数Wcと同数の処理部100、101(以下、10tという。)を有し、各処理部10tには、メモリ4から読み出されたビットノードからチェックノードへのメッセージQm,n(m∈M(n))と、メモリ6から読み出されたAm、Bm(m∈M(n))とが入力され、第1フェーズでは、順次Am、Bmを更新して出力し、第2フェーズでは、チェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))を出力するための演算を行う。
例えば、処理部100には、メッセージQm_t(n),n=Qm_0(n),n、Am_t(n)=Am_0(n)、Bm_t(n)=Bm_0(n)が入力される。ここで、Qm_t(n),n、Am_t(n)、Bm_t(n)は、ビットノードYnからエッジによって接続されたWc個のチェックノードXm(m∈M(n))のうち、t番目のエッジに接続された夫々チェックノードXmに対するメッセージ、Am、Bmを示す。本実施の形態においては、Wc=2としているので、t=0又は1である。
この処理部100は、メッセージQm_0(n),nが入力されると、メッセージQm_0(n),nの符号部分であるαm_0(n),nと入力されるAm_0(n)とを乗算又は除算したAm_0(n)を出力する乗算器11と、メッセージQm_0(n),nの絶対値であるβm_0(n),nを上記式(7−5)に従って関数fで変換したf(βm_0(n),n)を出力する変換器12と、変換したf(βm_0(n),n)と入力されるBm_0(n)とを加算したBm_0(n)を出力する加算器13と、入力されるBm_0(n)から変換したf(βm_0(n),n)を減算する加算器14と、加算器14の減算結果を上記式(7−5)に従って変換する変換器15と、変換器15の変換結果と更新されたAm_0(n)とを乗算してチェックノードXmからビットノードYnへのメッセージRm_0(n),nを出力する乗算器16とを有する。ここで加算器13と加算器14は加減算の制御信号を用いることで共用することも可能である。
次に、このチェックノード処理演算器の動作について詳細に説明する。図6は、図1に示すパリティ検査行列(各列の非零要素数Wc=2)を有するLPDC符号の符号を検出する場合の、各時刻(カウント値)毎にビットノードYnからチェックノードに渡されるメッセージQm,n(m∈M(n))を説明するための2部グラフを示す図である。上述したように、図3に示すカウンタ2は、上記手順1’及び手順2’からなる演算のうち、i回目の演算の第1フェーズでカウント値Ti_1=0〜N−1をカウントし、i回目の演算の第2フェーズで、カウント値Ti_2=0〜N−1をカウントするものとする。図6(a)乃至(c)は、夫々第1フェーズにおけるカウント値Ti_1=0、1、N−1において、チェックノード処理演算器10がメモリ6から読み出すメッセージQm,n(m∈M(n))を示す。
チェックノード処理演算器10は、カウンタ2のカウント値Ti_1=0〜N−1の間の第1フェーズでは、乗算器11、変換器12及び加算器13により、Am_0(n)、Bm_0(n)を更新する。全てのAm、Bmは、先ずAm=1、Bm=0に初期化される。カウンタ2のカウント値Ti_1が0からN−1へ変化すると、着目するビットノードYnもY0〜YN−1へ変化する。
例えば、着目するビットノードYnの1番目のエッジに接続されたチェックノードXmへのメッセージQm_0(n),nからAm、Bmを演算する処理部100においては、図6(a)に示すように、カウント値Ti_1=0で、メモリ4からビットノードY0の1番目のエッジに接続されたチェックノードX0へのメセージQm_0(0),0(=Q0,0)が読み出され、メモリ6から初期値Am_0(0)=1、Bm_0(0)=0が読み出されて処理部100に供給され、Am_0(0)、Bm_0(0)(チェックノードX0におけるAm、Bm)が更新される。また、同時(カウント値Ti_1=0)に、処理部101には、メモリ4からビットノードY0の2番目のエッジに接続されたチェクノードX6へのメセージQm_1(0),0(=Q6,0)が読み出され、メモリ6から初期値Am_1(0)=1、Bm_1(0)=0が読み出されて処理部101に供給され、Am_1(0)、Bm_1(0)(チェックノードX6におけるAm、Bm)が更新される。
そして、図6(b)に示すように、次のカウントTi_1=1においては、着目するビットノードYnがY1に移動し、処理部100には、ビットノードY1の1番目のエッジに接続されたチェックノードX0へのメセージQm_0(1),1(=Q0,1)がメモリ4から読み出され、Am_0(1)、Bm_0(1)(チェックノードX0におけるAm、Bm)が更新される。また、処理部101には、ビットノードY1の2番目のエッジに接続されたチェックノードX3へのメセージQm_1(1),1(=Q3,1)がメモリ4から読み出され、Am_1(1)、Bm_1(1)(チェックノードX3におけるAm、Bm)が更新される。
そして、カウント値がN−1になるまで逐次Am_t(n)、Bm_t(n)を更新する。即ち、図6(c)に示すように、カウント値がN−1において、着目するビットノードYnがYN−1に移動し、処理部100には、ビットノードYN−1の1番目のエッジに接続されたチェックノードX1へのメッセージメセージQm_0(N−1),N−1(=Q1,N−1)が供給され、これによりAm_0(N−1)、Bm_0(N−1)(チェックノードX1におけるAm、Bm)が更新される。また、処理部101には、ビットノードYN−1の2番目のエッジに接続されたチェックノードX3へのメッセージメセージQm_1(N−1),N−1(=Q3,N−1)が供給され、これによりAm_1(N−1)、Bm_1(N−1)(チェックノードX3におけるAm、Bm)が更新される。
以上のカウントTi_1=N−1までに更新されたAm_t(n)、Bm_t(n)は、上記(7−2)及び(7−3)を満たすAm、Bmである。
次のカウント値Ti_2=0〜N−1の間の第2フェーズにおいては、乗算器11、変換器12、加算器14、変換器15、及び乗算器16により、第1フェーズにて求められたAm、Bmを使用してメッセージRm_t(n),nの演算が行われる。
例えば、第2フェーズのカウント値Ti_2=0における処理部100においては、図6(d)に示すように、ビットノードY0の1番目のエッジに接続されたチェックノードX0へのメセージQm_0(0),0(=Q0,0)が再びメモリ4から読み出され、メモリ6から上述の第1フェーズで求めたAm_0(0)=A0、Bm_0(0)=B0が読み出されて処理部100に供給される。
そして、処理部100では、乗算器11にてA0とビットノードY0からのメッセージQ0,0から求まるα0,0が除算され、A0/α0,0が出力される。また、加算器14にて、B0−f(β0,0)が求められ、これを更に変換器15にて関数fにて変換したものと、上記乗算器11の出力A0/α0,0とを乗算器16にて乗算することで、上記式(7−1)に示す、ビットノードY0の1番目のエッジに接続されたチェックノードXm=X0からビットノードY0へ渡されるメッセージR0,0が算出される。
このように、本実施の形態のチェックノード処理演算器10においては、各ビットノードYn毎からのメッセージQm,n(m∈M(n))により演算を行うため、ビットノードYnとエッジにより接続されたチェックノードの個数、即ちWc個の処理部を有し、各処理部にて各ビットノードYnの各エッジにて伝搬されるメッセージを処理演算することで、チェックノード処理演算器において、ビットノードに着目した演算を行うようにしたものである。
また、チェックノード処理演算器において第2フェーズで求めたチェックノードからビットノードへのメッセージRm_t(n),nが、図3に示すビットノード処理演算器7に供給される。ここで、図6(d)に示す場合、カウント値Ti_2=0で出力されるメッセージRm_t(n),nは、Rm_0(n),n(=R0,0)、Rm_1(n),n(=R6,0)である。従って、これら2つの値から、ビットノード処理演算器7では、上述の式(10)により、次の繰り返し演算における第1フェーズにて使用するためのメッセージQm_t(n),nを演算してメモリ4に格納することができる。即ち、チェックノード処理演算器から出力されるメッセージRm,nは、従来は、図32(b)に示すように、行方向のデータD11(Rm,n(n∈N(m)))であったのに対し、本実施の形態においては、ビットノード処理演算器が読み出したい列方向のデータD12(Rm,n(m∈M(n)))となり、図4に示すように、入力されたデータD2(Qm,n(m∈M(n)))を使用してそのまま演算することができるので、メッセージRm,nを格納するメモリは不要となっている。
(3−3)Am、Bmを格納するメモリ
次に、上述のチェックノード処理演算器により更新されたAm、Bmを格納するメモリについて詳細に説明する。本実施の形態においては、ビットノード処理演算器がビットノードYnに着目しての第1フェーズ及び第2フェーズの演算を行うために、Am、Bmを格納するメモリが必要である。図3に示す符号検出装置1において、このAm、Bmを格納するメモリ6は次の機能を備える。
次に、上述のチェックノード処理演算器により更新されたAm、Bmを格納するメモリについて詳細に説明する。本実施の形態においては、ビットノード処理演算器がビットノードYnに着目しての第1フェーズ及び第2フェーズの演算を行うために、Am、Bmを格納するメモリが必要である。図3に示す符号検出装置1において、このAm、Bmを格納するメモリ6は次の機能を備える。
(機能1)ビットノードYnに関連するチェックノードXm(m∈M(n)について、Am、Bmを選択して出力する
(機能2)Am×αm,n,Bm+f(βm,n)を受け取って新たにAm、Bmとし、m番目の保管場所に保存する
(機能2)Am×αm,n,Bm+f(βm,n)を受け取って新たにAm、Bmとし、m番目の保管場所に保存する
任意のパリティ検査行列の場合、各列における非零要素数Wcの最大値の数だけのリードポート、ライトポートが必要である。図7は、本実施の形態の符号検出装置におけるAmを格納するメモリを示すブロック図である。チェックノードXmの個数分、即ちM個の保存場所のうち適切なWc箇所のAmを更新するための更新手段としての更新回路31と、M個のAmを保存するM個の保管場所(メモリ)320〜326と、M個の保存場所320〜326から適切なWc箇所のAmを選択して出力するための選択手段としての選択回路33と、更新回路31及び選択回路33に対して適切なWc箇所を指定する制御部34とを有する。
制御部34は、着目するビットノードYnにエッジが接続されるチェックノードXm(m∈M(n))を指定するための情報を保存するメモリを有し、図3に示すカウンタ2から入力されるカウント値のタイミングで、当該チェックノードXm((m∈M(n)))を指定する情報を読み出し、更新回路31及び選択回路33に供給する。即ち、例えば、ビットノードY0に対してはチェックノードX0、X6に対する保存場所320、326に各回路がアクセスするよう制御信号を出力する。これにより、選択回路33は、保存場所320、326を指定してそのAmを読み出し、更新回路31は、保存場所320、326のデータを更新する。
図8は、図7に示すAmを格納するメモリ30の更に具体的な構成を示すブロック図である。上述したように、各列における非零要素数Wc=2である場合、各カウント値において、2つのAm、Bmが更新される。
図8に示すように、Amを格納するメモリ30において、図7に示す更新回路31として、更新されたAm_t(n)(t=0,1、m_t(n)=0〜M−1、n=0〜N−1)を所定の保存箇所に選択出力するためにチェックノードXm毎に、マルチプレクサ36m(360〜36M−1)が設けられる。また、図7に示す保存場所320〜326としてレジスタ37m(370〜37M−1)が設けられ、選択回路33として、カウント値が示す着目しているビットノードYnにエッジが接続されたチェックノードXm(m∈M(n))に対応したレジスタ37mからのデータを選択してAm_t(n)を出力するマルチプレクサ38t(380〜38Wc−1)が設けられ、更にこれら各部を制御する制御回路39が設けられている。
制御回路39は、各マルチプレクサ36m、38tの選択信号端子及びレジスタ37mのイネーブル端子に、着目しているビットノードYnと接続されているチェックノードXm_t(n)に対応した制御信号を入力する。ここで、マルチプレクサ36mの選択信号端子及びレジスタ37mのイネーブル端子には、更新したAm_t(n)に対応するチェックノードXm_t(n)を示す制御信号が入力され、マルチプレクサ38tの選択信号端子には、チェックノード処理演算器にて使用されるAm_t(n)に対応したチェックノードXm_t(n)を示す制御信号が供給され、このチェックノードXm_t(n)に対応したAm_t(n)がチェックノード処理演算器に読み出されるようになされる。即ち、上述したように、カウント値Ti_1=0のとき、着目しているビットノードYn=Y0であり、これに接続されたチェックノードXm_0(0)、Xm_1(0)、は、X0、X6である。
入力されたAm_t(n)はマルチプレクサ36mを介して制御信号により指定される、チェックノードXm_t(n)に対応したレジスタ37mに供給される。一方、制御信号により、カウント値が示す着目しているビットノードYnにエッジが接続されたチェックノードXm(m∈M(n))に対応したレジスタ37mから所定のAm_t(n)が読み出されてマルチプレクサ380、381を介して出力される。
このように、本実施の形態におけるAmを格納するメモリは、チェックノードXmと同数のレジスタを有し、ビットノードYnを順次選択するカウント値の回数分、更新されることで上記式(7−2)に示すAmが格納されたものとなる。Bmを格納するメモリに関しても同様の構成とすることができる。
(3−4)符号検出方法
次に、本実施の形態における符号検出方法について説明する。図9(a)は、本実施の形態における符号検出方法を示すフローチャートであり、図9(b)は、各処理工程を擬似的に示すプログラムコードを示す図である。図9に示すように、先ず、ビットノードYnからチェックノードXmへのメッセージQm,nが事前値Pnにより初期化され(ステップS1、SP1)、第1フェーズの演算が行われる(ステップS2、SP2)。第1フェーズでは、まず、全てのAm、BmがAm=1、Bm=0に初期化され、次いでチェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))を算出するためのAm、Bmの更新が行なわれる。Am、Bmの更新は、カウント値の順に一のビットノードYnからのメッセージが読み出され、メッセージに含まれる2つのチェックノードXmに対するAm、Bmが更新され、最後のビットノードY20からのメッセージQm,n(m∈M(n))(Q1,20、Q3,20)によるA1、A3、B1、B3の更新が終了した時点で、全てのチェックノードXmにおける上記(7−2)、(7−3)に示すAm、Bmが求まる。
次に、本実施の形態における符号検出方法について説明する。図9(a)は、本実施の形態における符号検出方法を示すフローチャートであり、図9(b)は、各処理工程を擬似的に示すプログラムコードを示す図である。図9に示すように、先ず、ビットノードYnからチェックノードXmへのメッセージQm,nが事前値Pnにより初期化され(ステップS1、SP1)、第1フェーズの演算が行われる(ステップS2、SP2)。第1フェーズでは、まず、全てのAm、BmがAm=1、Bm=0に初期化され、次いでチェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))を算出するためのAm、Bmの更新が行なわれる。Am、Bmの更新は、カウント値の順に一のビットノードYnからのメッセージが読み出され、メッセージに含まれる2つのチェックノードXmに対するAm、Bmが更新され、最後のビットノードY20からのメッセージQm,n(m∈M(n))(Q1,20、Q3,20)によるA1、A3、B1、B3の更新が終了した時点で、全てのチェックノードXmにおける上記(7−2)、(7−3)に示すAm、Bmが求まる。
次に、更新済みのAm、Bmと、上述のステップS2で使用したビットノードYnからチェックノードXmへのメッセージQm,n(m∈M(n))により、チェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))が算出される(ステップS3、SP3)。この場合も、カウント値の順に一のビットノードYnからのメッセージQm,n(m∈M(n))が読み出され、メッセージQm,n(m∈M(n))が渡される2つのチェックノードXmにおいてメッセージRm,nが算出され、この2つのメッセージメッセージRm,nからなるメッセージRm,n(m∈M(n))が出力される。
そして、各カウント値が示すチェックノードXm(m∈M(n))からのメッセージRm,n(m∈M(n))から、事後値Qn及び当該チェックノードに渡すメッセージQm,n(m∈M(n))が算出される(ステップS4、SP4)。
そして、以上のステップS2〜ステップS4までの繰り返し回数が規定の回数に達したか否かが判定され(ステップS5)、規定の繰り返し回数に達していない場合は、再びステップS2〜ステップS4までの処理を繰り返し、規定の繰り返し回数に達している場合は、硬判定復号が行われ、その結果が出力される(ステップS6)。また、ステップS4、SP4において、メッセージQm,n(m∈M(n))を算出する過程において得られる事後値Qnが所定の条件に達しているか否かを検出し、事後値Qnが所定の条件、即ちパリティチェックを満たしている場合は、繰り返し処理を中止してステップS6の硬判定復号を行うようにしてもよい。
(3−5)通信装置
次に、以上説明した符号検出装置を備えた情報処理装置の一例としての通信装置について説明する。本符号検出装置1により、符号検出を行うためには、先ず、情報語(メッセージ)を例えば図1に示すようなパリティ検査行列を有する符号語に符号化する必要がある。即ち、そのような符号語を通信路を介して伝送した場合、伝送過程で雑音等の影響により誤りが生じた場合であっても、受信された受信語は、本符号検出装置1により符号検出を行うことができ、もとのメッセージに復号することができる。
次に、以上説明した符号検出装置を備えた情報処理装置の一例としての通信装置について説明する。本符号検出装置1により、符号検出を行うためには、先ず、情報語(メッセージ)を例えば図1に示すようなパリティ検査行列を有する符号語に符号化する必要がある。即ち、そのような符号語を通信路を介して伝送した場合、伝送過程で雑音等の影響により誤りが生じた場合であっても、受信された受信語は、本符号検出装置1により符号検出を行うことができ、もとのメッセージに復号することができる。
図10は、本実施の形態における通信装置を示すブロック図である。図10に示すように、通信装置80は、情報語(メッセージ)からLDPC符号を生成するLPDC符号化部81と、LPDC符号化された符号語を変調する変調部82と、変調された符号語を伝送する通信路83と、通信路83からの受信語を受け取り復調する復調部84と、復調された受信語から符号を検出する符号検出装置としてのLDPC復号部85とを有する。
LDPC符号化部81は、情報語をLDPC符号に変換する。M行N列、K次元のパリティ検査行列Hにて符号検出が可能なLDPC符号を得るためには、先ず、そのパリティ検査行列Hから、K行N列の生成行列G(GHT=0を満たす)を求める。即ち、図1に示すパリティ検査行列Hは、各行にWr(=6)個、各列にWc(=2)個の非零要素1を持ち、それ以外の成分はすべて0であるように構成される。このパリティ検査行列Hから生成行列GTを、下記式(14−1)に示す拘束条件を満たすように構成する。このような拘束条件を満たす生成行列は簡単に構成することができる。即ち、パリティ検査行列を、H=(H1,H2)と、2つの部分行列H1:M×K行列、H2:M×M行列で表すと、生成行列GTは、下記式(14−2)により定義される。
ただし、生成行列GTを上記式(14−2)右辺の形とするためには、生成行列Gおよび検査行列Hの適切な列の入れ替えを必要とする場合がある。その場合、列の入れ替えを行わない検査行列Hに対して上記式(14−1)を満たす(転置後の)生成行列GTは上記式(14−2)右辺に対して行の入れ替えを施したものとなる。
次に、送信者はKビットの2元メッセージ(m0m1・・・mK−1)に対して、生成行列Gを乗算することによりNビットの符号語((m0m1・・・mK−1)G=(c0c1・・・cN−1))を得る。
そして、LDPC符号化部81にて得られた符号語は、変調部82を介して通信路83へ送出され、受信側で受信信号として受信される。この受信信号が復調部84にて復調されたのち、LDPC復号部85にて符号検出がなされる。即ち、上述したように、受信信号から事前確率p0 n,p1 n、又は事前対数尤度比Pnを求め、これをメッセージq0 m,n,q1 m,n、又はメッセージQm,nとして初期化する。そして、上述した手順1’及び手順2’で示される演算を所定の回数か又は上記式(5)に示すパリティチェックを満たすまで繰り返し演算することにより、下記(15)に示す送信信号の推定値(Kビット)を推定結果を得る。更に、この推定結果を硬判定復号し、これを出力するものである。
このように、本実施の形態における符号検出装置及びこれを備えた通信装置においては、ビットノードの演算は各ビットノード毎に、チェックノードの演算は各チェックノード毎に行っていた従来の演算方法と異なり、チェックノードの演算及びビットノードの演算共に各ビットノード毎に演算を行うようにしたので、ビットノード処理部とチェックノード処理部との間で伝送されるメッセージを格納しておくメモリが極めて簡便な構成となる。
従来例で示したように、全てのメッセージ計算をパラレルに実行する復号回路は高いスループットが得られるが、スループット要求に余裕がある場合は、メッセージを計算する演算器を複数回利用する構成が回路規模や配線の実現の点で望ましい。このような構成による従来の方法は、メッセージを保存するRAMを複数に分割する必要があったり、マルチプレクサなどの回路が複雑になっていた。即ち、ビットノード処理演算器が書き込むメッセージとチェックノード処理演算器が読み出すメッセージ、及びチェックノード処理演算器が書き込むメッセージとビットノード処理演算器が読み出すメッセージが従来は異なっていたため、メモリを複数バンクに分割する等して回路が複雑化していたのに対し、本実施の形態においては、ビットノード処理演算及びビットノード処理演算のいずれの演算においてもビットノード毎に行なうようにしたので、これらのメッセージを同一アドレスで管理することができ、回路設計を簡略化することができる。
(4)第2の実施の形態
次に、本発明の第2の実施の形態について説明する。上述の第1の実施の形態においては、Am、Bmを格納するメモリ6は、チェックノードXmの個数分のレジスタを用意し、更新されたチェックノードXmに対応するレジスタを選択して更新し、更に所定のレジスタを選択してレジスタからAm、Bm、を読み出すものであったが、本実施の形態においては、このメモリ6の構成を更に簡略化するものである。なお、その他の構成は図3に示す符号検出装置と同様の構成であり、詳細な説明は省略する。
次に、本発明の第2の実施の形態について説明する。上述の第1の実施の形態においては、Am、Bmを格納するメモリ6は、チェックノードXmの個数分のレジスタを用意し、更新されたチェックノードXmに対応するレジスタを選択して更新し、更に所定のレジスタを選択してレジスタからAm、Bm、を読み出すものであったが、本実施の形態においては、このメモリ6の構成を更に簡略化するものである。なお、その他の構成は図3に示す符号検出装置と同様の構成であり、詳細な説明は省略する。
(4−1)パリティ検査行列
パリティ検査表列が巡回符号の場合、パリティ検査行列の各列を他の列の巡回シフトとする構成にすることができる。パリティ検査行列第n列の非零要素の行番号をM(n)とすると、下記式(16)としたとき、加算をmod Mの演算として、下記(17)となるパリティ検査行列を構成することができる。
パリティ検査表列が巡回符号の場合、パリティ検査行列の各列を他の列の巡回シフトとする構成にすることができる。パリティ検査行列第n列の非零要素の行番号をM(n)とすると、下記式(16)としたとき、加算をmod Mの演算として、下記(17)となるパリティ検査行列を構成することができる。
図11は、生成多項式x4+x3+x2+1の(7,3)巡回符号のパリティ検査行列H2を示す図である。このパリティ検査行列H2のパリティの数は4であり、7つのパリティ検査方程式のうち3つは冗長なものである。この行列の場合、各列における非零要素数Wc=3、行数(パリティ検査方程式)M=7であり、下記(18)となり、各列が巡回シフトの関係になっていることが確かめられる。
(4−2)チェックノード処理演算器及びAm、Bmを格納するメモリ
このパリティ検査行列に先に示したLDPC符号の符号検出装置を適用する場合、上述の第1の実施の形態と同様な構成のチェックノード処理演算器及びAm、Bmを格納するメモリとすると、夫々図12及び図13に示すようになる。
このパリティ検査行列に先に示したLDPC符号の符号検出装置を適用する場合、上述の第1の実施の形態と同様な構成のチェックノード処理演算器及びAm、Bmを格納するメモリとすると、夫々図12及び図13に示すようになる。
即ち、図12に示すように、本実施の形態におけるチェックノード処理演算器20は、図11に示すパリティ検査行列の各列における非零要素数Wc=3と同数の処理部100〜102(以下、10tという。)を有し、各処理部10tには、メモリ4から読み出されたビットノードからチェックノードへのメッセージQm,nと、メモリ6から読み出されたAm、Bmが入力され、第1フェーズでは、順次Am、Bmを更新し、第2フェーズでは、チェックノードXmからビットノードYnへのメッセージRm,nを出力するための演算を行う。
そして、上述の図5に示すチェックノード処理演算器10と同様に、例えば、チェックノード処理演算器20の処理部100には、メッセージQm_t(n),n=Qm_0(n),n、Am_t(n)=Am_0(n)、Bm_t(n)=Bm_0(n)が入力される。ここで、Qm_t(n),n、Am_t(n)、Bm_t(n)は、ビットノードYnからエッジによって接続されたWc個のチェックノードXmのうち、t番目のエッジに接続された夫々チェックノードXmに対するメッセージ、Am、Bmを示し、本実施の形態においては、Wc=3としているので、t=0〜2となる。
このように、本実施の形態においても、チェックノード処理演算器20は、各ビットノードYn毎に演算を行うため、ビットノードYnとエッジにより接続されたチェックノードの個数、即ちWc個の処理部を有し、各処理部にて各ビットノードYnの各エッジにて伝搬されるメッセージを処理演算することで、チェックノード処理演算器において、ビットノードに着目した演算を行うようにしたものである。これにより、第1の実施の形態において説明したように、ビットノード処理演算器から出力されるビットノードYnからチェックノードXmへのメッセージQm,nと、チェックノード処理演算器にて使用されるメッセージQm,nとは、いずれもメッセージQm,n(m∈M(n))、即ち図32(b)に示すデータD13となる。このことにより、ビットノード処理演算器により書き込みとチェックノード処理演算器による読み出しとが同一アドレスで管理することができるため、これを格納するメモリ4の構成を簡略化することができる。
また、チェックノード処理演算器において第2フェーズで求めたチェックノードからビットノードへのメッセージRm,nが、ビットノード処理演算器に供給され、ビットノード処理演算器では、上述の式(10)により、次の繰り返し演算における第1フェーズにて使用するためのメッセージQm,nを演算してメモリ4に格納することができる。即ち、チェックノード処理演算器から出力されるメッセージRm,nは、従来は、図32(b)に示すように、行方向のデータD11であったのに対し、本実施の形態においては、ビットノード処理演算器が読み出したい列方向のデータD12となり、入力されたデータを使用してそのまま演算することができる。
また、図12に示すチェックノード処理演算器20により更新されたAm、Bmを格納するメモリは、図8に示したメモリ30と同様に構成することができる。即ち、ビットノードYnに関連するチェックノードXm(m∈M(n))について、Am、Bmを選択して出力する機能、及びAm×αm,n,Bm+f(βm,n)を受け取って新たにAm、Bmとし、保管場所mに保存する機能とを有するもとして構成すればよい。
例えば、図13に示すように、Amを格納するメモリ21は、各列における非零要素数Wc=3である場合、各カウント値において、3つのAm、Bmが更新されるものであり、上述の図8に示すメモリ20に対して、マルチプレクサ382を付加したものとなっている。即ち、チェックノードXm毎に設けられたマルチプレクサ36m(360〜36M−1)及びレジスタ37m(370〜37M−1)と、上述のチェックノード処理演算器に供給されるメッセージQm_t(n),nに対応したAm_t(n)を出力するマルチプレクサ38t(380〜38Wc−1)と、これらを制御する制御回路39とを有する。
このように、本実施の形態におけるAmを格納するメモリは、チェックノードXmと同数のレジスタを有し、ビットノードYnを順次選択するカウント数回更新されることで、上記式(7−2)に示すAmが格納されたものとなる。Bmを格納するメモリに関しても同様の構成とすることができる。
(4−3)巡回行列の場合のAm、Bmを格納するメモリ
ところで、本実施の形態におけるパリティ検査行列は、上述した如く、巡回行列である。このように、パリティ検査行列が巡回行列である場合、行列の規則性を利用することで上述のAmを格納するメモリ21及びBmを格納するメモリを簡単な構成で実現することができる。
ところで、本実施の形態におけるパリティ検査行列は、上述した如く、巡回行列である。このように、パリティ検査行列が巡回行列である場合、行列の規則性を利用することで上述のAmを格納するメモリ21及びBmを格納するメモリを簡単な構成で実現することができる。
図14(a)は、Amを格納するメモリ40を示すブロック図、図14(b)は、メモリ40の一部を拡大して示すブロック図である。図中においてAの添え字及びαの第1番目の添え字における加算はmod Mの演算である。本実施の形態においては、パリティ検査行列の構成から、Amを格納するメモリにおいて、Amを読み出す場所Wc個、書き込む場所Wc個の相対位置は、全ての列に共通していることから、上述の図7に示したように、M個からWc個のデータを選択する選択回路(マルチプレクサ38t)、M個の保管場所であるレジスタ37mの適切な場所に、Wc個のデータを保管させる回路(マルチプレクサ36m)は不要となる。
即ち、図14に示すように、本実施の形態におけるAmを格納するメモリ40は、更新された各Am(An〜An+6)を格納するため、チェックノードXm(図11に示す巡回行列の場合は、M=7)と同数設けられたシフトレジスタ410〜416と、非零要素の位置に対応して設けられたWc個(図11に示す巡回行列の場合は、Wc=3)の選択回路(マルチプレクサ)42a〜42cとから構成することができる。
選択回路42a〜42cには、制御信号が供給され、繰り返し処理における第1フェーズ又は第2フェーズのうちどちらのフェーズを実行中かによって後述する2つのデータから出力する出力データを切り替える。図11に示す巡回行列は、非零要素が最初に表れる行を0行目とすると、非零要素が2番目、3番目に表れる行は、+4行目、+5行目となっている。そして、図14(b)に示すように、メモリ40における選択回路42aには、前段のレジスタ410に格納されたAn(データD22)と、更新されたAm=An×αn,n(データD21)とが入力され、第1フェーズでは、データD21を出力データD23として出力する。同様に、選択回路42bは更新されたAm=An+4×αn+4,nを、選択回路43cは更新されたAm=An+5×αn+5,nを選択して出力する。一方、第2フェーズにおいては、前段のレジスタ410に格納されたAn(データD22)を出力データD23として後段のレジスタ416に出力する。また、データD22は、第1フェーズ及び第2フェーズ共に、レジスタ410〜416の内容を巡回する際に出力され、チェックノード処理演算器へ入力される。また、Bmを格納するメモリに関しても同様の回路を実現することができることは勿論である。
また、図14に示すメモリ40は、Am、Bmを格納するメモリをシフトレジスタで構成するものとしたが、これらはFIFOでも同様に実現することができる。図15は、図14に示すシフトレジスタをFIFOに置き換えたもの、即ち図11に示す(7,3)巡回符号の場合にAmを格納するメモリをFIFOで実現した場合の回路構成を示すブロック図である。
図15に示すように、メモリ43は、長さが4のFIFO440と、長さが1のFIFO441と、長さが2のFIFO442とを有し、更に各FIFO440〜442の出力を更新するための、図14と同様に動作するマルチプレクサ42a〜42cとを有している。このように、シフトレジスタをFIFOに置き換えて構成してもよい。また、Bmを格納するメモリについても同様にFIFOを利用して構成することができる。
本実施の形態においても、第1の実施の形態と同様の効果を奏する。即ち、メッセージを格納するメモリの構成等を簡単にすることができる。更に、本実施の形態においては、行列の規則性を利用することにより、レジスタ410〜416の内容を巡回シフトさせるか、又はFIFO440〜442を使用することによって、図13に示すメモリ21と同等の機能を実現することができるため、回路構成を更に簡単化することができる。
(5)第3の実施の形態
次に、本発明の第3の実施の形態について説明する。上述の第2の実施の形態においては、巡回符号の規則性を利用してメモリの構成を簡略化するものであったが、本実施の形態においては、第2の実施の形態とは異なる検査行列の規則性を利用してメモリの構成の簡略化、演算のスループットの向上を図るものである。
次に、本発明の第3の実施の形態について説明する。上述の第2の実施の形態においては、巡回符号の規則性を利用してメモリの構成を簡略化するものであったが、本実施の形態においては、第2の実施の形態とは異なる検査行列の規則性を利用してメモリの構成の簡略化、演算のスループットの向上を図るものである。
(5−1)パリティ検査行列
先ず、本実施の形態にて使用するパリティ検査行列について説明する。線形符号Cのうち、任意の符号語w(Cの要素)をpだけ巡回置換したものがまたCに属するものを準巡回符号(Quasi-Cyclic Code:QC符号)と呼ぶ。QC符号のなかでもp=1を満たすものは巡回符号である。上述の図1に示すパリティ検査行列は、p=3のQC符号であり、例えば1乃至3列目の1行目の要素(1,1,0)は、4乃至6列目の2行目の要素(1,1,0)となっている。
先ず、本実施の形態にて使用するパリティ検査行列について説明する。線形符号Cのうち、任意の符号語w(Cの要素)をpだけ巡回置換したものがまたCに属するものを準巡回符号(Quasi-Cyclic Code:QC符号)と呼ぶ。QC符号のなかでもp=1を満たすものは巡回符号である。上述の図1に示すパリティ検査行列は、p=3のQC符号であり、例えば1乃至3列目の1行目の要素(1,1,0)は、4乃至6列目の2行目の要素(1,1,0)となっている。
QC符号の場合、パリティ検査行列の列をpずつ区切り、それぞれを組として見たとき、各組を他の組の巡回シフトとする構成にすることができる。パリティ検査行列第n列の非零要素の行番号M(n)を下記(19)としたとき、加算をmod Mの演算として、下記(20)となるパリティ検査行列を構成することができる。
このようなパリティ検査行列に、LDPC符号の符号検出装置を適用する場合には、p列1組の演算をパラレルに行う構成とすれば、巡回符号の場合と同様に行列の規則性を利用することでAm、Bmを格納するメモリを簡単に実現することができる。
(5−2)符号検査装置
p列1組の演算をパラレルに行う構成の場合も、基本的な回路構成は、上述の図3に示す第1の実施の形態の符号検査装置と同様であるが、各ブロックの動作が第1の実施の形態とは異なる。図16は、本第3の実施の形態における符号検査装置を示すブロック図である。
p列1組の演算をパラレルに行う構成の場合も、基本的な回路構成は、上述の図3に示す第1の実施の形態の符号検査装置と同様であるが、各ブロックの動作が第1の実施の形態とは異なる。図16は、本第3の実施の形態における符号検査装置を示すブロック図である。
本実施の形態における符号検出装置51は、カウンタ52、事前値(事前対数尤度比)Pnを格納するメモリ53、ビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ54と、ビットノードYnに着目したチェックノードの演算を行うチェックノード処理演算器55と、Am、Bmを格納するメモリ56と、ビットノードの演算を行うビットノード処理演算器57とを有する。
カウンタ52は、着目しているビットノードYnのp個1組の番号をカウント値により示す。第1フェーズ、第2フェーズの夫々において、0〜(N/p)−1の値をカウントする。
事前値Pnを格納するメモリ53は、入力された事前値PnをビットノードYnのp個1組の番号のアドレスに格納する。また、カウンタ52のカウント値cに応じて、下記(21)で示される事前値Pnを出力する。
ビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ54は、1つのアドレスcで、下記(22)に示すビットノードYnの夫々から出るすべてのメッセージQm,nが同時にアクセスできる構成とする。第1フェーズでは読み出し時のみ、第2フェーズでは書き込み、読み出し共に行う。
チェックノード処理演算器55は、上記(22)に示すビットノードYnの夫々に対応したメッセージQm,nを読み出し、αm,n、f(βm,n)を計算する。第1フェーズでは下記(23)に示すビットノードXmに関して各々Am、Bmを入力として受け取り、下記(24)、(25)を計算して出力し、メモリ56に格納されているAm、Bmを更新する。
第2フェーズではAm、Bmをメモリ56から入力として受け取り、また、上記(22)に示すビットノードYnの夫々に対応したメッセージQm,nを再び読み出し下記式(26)で示すRm,nを出力する。
Am、Bmを格納するメモリ56は、第1フェーズでは、Am、Bmを逐次求めるモードとして動作する。最初にすべてのビットノードYnに関してAm=1,Bm=0に初期化を行う。次に、上記(22)に示すビットノードYnの夫々に関連する上記(23)に示すチェックノードXmについて、現在途中まで求まっているAm、Bmを出力し、チェックノード処理演算器で求まった上記(24)及び(25)に示す値を受け取り、これをAm、Bmとして更新する。第1フェーズの処理が終了すると手順1'の式で表された上記式(7−2)及び(7−3)で示すAm、Bmが求まる。
第2フェーズでは、ビットノードYnに関連する上記(23)に示すチェックノードXmについて、第1フェーズにて求められたAm、Bmを出力する。
ビットノード処理演算器57は、第2フェーズでのみ動作する。上記(22)に示すビットノードYnの夫々に送られるメッセージRm,nをチェックノード処理演算器55から受け取り、事前値Pnをメモリ53から受け取り、上記式(27)で示される事後値Qn又は硬判定結果cn^、及びチェックノードXmへのメッセージQm,n=Qn−Rm,nを出力する。
また、ビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ54は、列方向の非零要素数がWcのレギュラーLDPC符号の場合、Qm,nを表現するビット数をqとすると、第1の実施の形態と同様、ビットノード処理演算器57による書き込みとチェックノード処理演算器55による読み出しアドレスが同一なため、(Wc×q×p)ビット、N/pワードのRAMで実現することができる。
(5−3)Am、Bmを格納するメモリの構成
次に、Am、Bmを格納するメモリ56について詳細に説明する。上述したように、図1に示すパリティ検査行列は、p=3である(21,15)QC符号(符号長21、情報記号数15)のパリティ検査行列となっている。この図1に示す行列の場合、各列の非零要素数Wc=2、行数(パリティ検査方程式)M=7であり、パリティ検査行列第n列の非零要素の行番号M(n)は下記(28)のようになり、3列ずつの各組が巡回シフトの関係になっている。
次に、Am、Bmを格納するメモリ56について詳細に説明する。上述したように、図1に示すパリティ検査行列は、p=3である(21,15)QC符号(符号長21、情報記号数15)のパリティ検査行列となっている。この図1に示す行列の場合、各列の非零要素数Wc=2、行数(パリティ検査方程式)M=7であり、パリティ検査行列第n列の非零要素の行番号M(n)は下記(28)のようになり、3列ずつの各組が巡回シフトの関係になっている。
この図1に示すパリティ検査行列にLDPC符号の符号検出装置を適用する場合、巡回符号の場合と同様に、Amを格納するメモリを図17のように構成することができる。即ち、図17に示すように、3列の非零要素数は6であり、チェックノードの数は7であるので、7つのレジスタ610〜616と、6つのαm,nによりAmを更新するマルチプレクサ62a〜62eとを有する。図17において、Aの添え字及びαの第1番目の添え字における加算はmod Mの演算である。
ここで、マルチプレクサ62aに入力される更新されたAmは、Ai×αi,3i×αi,3i+1である。これは、図1に示すパリティ検査行列において、例えば0列及び1列目において、0行目が共に非零要素となっているため、1回の処理で2つのメッセージQm,nが入力され、従って、2つのαm,nが入力されるためであり、従ってマルチプレクサが非零要素数より1つ少なくなっている。
このように、本実施の形態においても第1の実施の形態と同様の効果を奏すると共に、行列の規則性を利用することにより、第1の実施の形態における任意のパリティ検査行列に対するAm、Bmを格納可能なメモリに比較して、回路構成が更に簡単となる。また、第2の実施の形態においては、1つずつのビットノードを順に処理する構成であったのに対し、本実施の形態においては、3つずつのビットノードの処理をまとめて行うことにより、スループットを容易に向上することができる。また、Bmを格納するメモリに関しても同様に構成でき、更にシフトレジスタの代わりにFIFOを使用したものとしてもよい。
(6)第4の実施の形態
次に、本発明の第4の実施の形態について説明する。第3の実施の形態におけるQC符号のLDPC符号の符号検出装置は、QC符号の複数組の演算をパラレル処理することが可能である。本実施の形態においては、QC符号の複数組の演算をパラレル処理することにより更にスループットを向上したものである。
次に、本発明の第4の実施の形態について説明する。第3の実施の形態におけるQC符号のLDPC符号の符号検出装置は、QC符号の複数組の演算をパラレル処理することが可能である。本実施の形態においては、QC符号の複数組の演算をパラレル処理することにより更にスループットを向上したものである。
(6−1)パリティ検査行列
QC符号のパラメータをp(巡回符号の場合はp=1として考える)、処理のパラレルの度合いをsとすれば、符号検出装置の回路構成は、図16と同様となり、各ブロックの動作は、第3の実施の形態において説明したQC符号の場合の「p」を「p×s」としたものとすることができる。
QC符号のパラメータをp(巡回符号の場合はp=1として考える)、処理のパラレルの度合いをsとすれば、符号検出装置の回路構成は、図16と同様となり、各ブロックの動作は、第3の実施の形態において説明したQC符号の場合の「p」を「p×s」としたものとすることができる。
ここで、符号検出装置の回路構成は、図16とほぼ同様のものとなるが、Am、Bmを格納するメモリに関しては、その構成が異なり、各Am、Bmを保存するレジスタの内容をs個間隔で巡回シフトさせる構造とすることで実現することができる。
また、ビットノードYnからチェックノードXmへのメッセージを格納するメモリは、列方向の非零要素数がWcのレギュラーLDPC符号の場合、Qm,nを表現するビット数をqとすると、(Wc×q×p×s)ビット、N/(p×s)ワードのRAMで実現することができる。
図18は、生成多項式x4+x3+x+1の(6,2)巡回符号のパリティ検査行列H3を示す。この行列H3の場合、各列における非零要素数Wc=3、行数(パリティ検査方程式)M=6であり、パリティ検査行列第n列の非零要素の行番号M(n)は下記(29)となり、各列が巡回シフトの関係になっていることが確かめられる。
(6−2)Am、Bmを格納するメモリ
このパリティ検査行列H3にパラレル度s=2のLDPC符号の符号検出装置を適用する場合のAmを格納するメモリを図19に示す。図中においてAの添え字及びαの第1番目の添え字における加算はmod Mの演算である。各Amを保存するレジスタの内容をs=2個間隔で巡回シフトさせることによって機能を実現している。即ち、第3の実施の形態においては、行列の巡回構造を利用して、シフトレジスタを巡回シフトさせるものであったが、本実施の形態においては、2列同時に処理することでスループットを向上するものである。
このパリティ検査行列H3にパラレル度s=2のLDPC符号の符号検出装置を適用する場合のAmを格納するメモリを図19に示す。図中においてAの添え字及びαの第1番目の添え字における加算はmod Mの演算である。各Amを保存するレジスタの内容をs=2個間隔で巡回シフトさせることによって機能を実現している。即ち、第3の実施の形態においては、行列の巡回構造を利用して、シフトレジスタを巡回シフトさせるものであったが、本実施の形態においては、2列同時に処理することでスループットを向上するものである。
図19に示すように、例えば偶数行目及び奇数行目に対応した夫々レジスタ630、632、634及び631、633、635と、夫々マルチプレクサ64a、64b及び64c、64dとを備えることで、2つ分のビットノードYnに接続された全てのチェックノードXmに対応したAmを一度に更新することができる。なお、パラレル度sに伴い、メモリからメッセージQm,n(m∈M(n))を読み出す個数及びこれを処理するチェックノード処理演算器における各処理部も増やすものとする。
また、パラレル度sを上げれば、回路が大型化するものの、より高いスループットを得ることができる。また、Bmを格納するメモリに関しても同様に構成することができ、シフトレジスタの代わりにFIFOを使用してもよいことは勿論である。
(7)第5の実施の形態
次に、本発明の第5の実施の形態について説明する。本実施の形態においては、第1フェーズ及び第2フェーズの処理を同時に行うことにより、第1フェーズの次に第2フェーズの処理を行う例えば第1の実施の形態に比してスループットを約2倍に向上させたものである。
次に、本発明の第5の実施の形態について説明する。本実施の形態においては、第1フェーズ及び第2フェーズの処理を同時に行うことにより、第1フェーズの次に第2フェーズの処理を行う例えば第1の実施の形態に比してスループットを約2倍に向上させたものである。
上述の第1乃至第4の実施の形態においては、LDPC符号の符号検出装置は、図3又は図16に示したような構成である。即ち、繰り返し処理の1回の動作は2つのフェーズにより実行される。このような構成に対して、Am、Bmを格納するメモリを二重化し、チェックノード処理演算器を第1フェーズ、第2フェーズのそれぞれに対応した動作が独立に行えるように回路を多重化することにより、連続した繰り返し処理において、2つのフェーズの処理をオーバーラップさせることができる。つまり、Am、Bmを格納するメモリ及びチェックノード処理演算器を多重化することにより、着目しているビットノードYnに関して、i回目の繰り返しの第2フェーズにおける処理の後に続けて(i+1)回目の繰り返しの第1フェーズにおける処理を実行することができ、これら2つのフェーズを時間的にオーバーラップさせることができる。
(7−1)符号検出装置
図20は、本実施の形態における符号検出装置を示すブロック図である。図20に示すように、着目しているビットノードYnの番号(0〜N−1番目)を表すカウンタ72と、事前値(事前対数尤度比)Pnを格納するメモリ73と、ビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ74と、着目するビットノードYnをカウント値に合わせて変化させながらチェックノードXmからビットノードYnへのメッセージRm,nを算出する演算を行うチェックノード処理演算器75と、上記(7−2)及び(7−3)に示すAm、Bmを格納するメモリ76と、ビットノードYnからチェックノードXmへのメッセージQm,n等を算出するビットノード処理演算器77とを有する。
図20は、本実施の形態における符号検出装置を示すブロック図である。図20に示すように、着目しているビットノードYnの番号(0〜N−1番目)を表すカウンタ72と、事前値(事前対数尤度比)Pnを格納するメモリ73と、ビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ74と、着目するビットノードYnをカウント値に合わせて変化させながらチェックノードXmからビットノードYnへのメッセージRm,nを算出する演算を行うチェックノード処理演算器75と、上記(7−2)及び(7−3)に示すAm、Bmを格納するメモリ76と、ビットノードYnからチェックノードXmへのメッセージQm,n等を算出するビットノード処理演算器77とを有する。
ここで、チェックノード処理演算器75は、第1フェーズの演算を行う第1フェーズ用処理演算器75aと、第2フェーズの演算を行う第2フェーズ用処理演算器75bとを有する。また、Am、Bmを格納するメモリ76は、第1フェーズにより更新されていくAm、Bmを格納するため、又は第1フェーズにて求められたAm、Bmを第2フェーズで出力するための第1のメモリ76a及び第2のメモリ76bと、第1のメモリ76a及び第2のメモリ76bの出力を第1フェーズ用処理演算器75a又は第2フェーズ用処理演算器75bに振り分けるための選択回路76cとを有する。
次に、本符号検出装置70の各ブロックにおける動作について説明する。カウンタ72は、着目しているビットノードYnの番号を表し、0からN−1の値をカウントするN進カウンタである。1回の繰り返し処理の間に、カウンタ72は2周するが、i回目の繰り返し処理の第2フェーズと、(i+1)回目の繰り返し処理の第1フェーズとは処理が時間的にオーバーラップする。
事前値(事前対数尤度比)Pnを格納するメモリ73は、入力された事前値PnをビットノードYnの番号nのアドレスに格納し、カウンタの値nに応じて事前値Pnを出力する。
ビットノードYnからチェックノードXmへのメッセージQm,nを格納するメモリ74は、1つのアドレスでビットノードYnから出るすべてのメッセージ、即ちQm,n(m∈M(n))に含まれるメッセージに同時にアクセスできる構成とする。
また、第1フェーズ用チェックノード処理演算器75aは、ビットノード処理演算器77から出力されるメッセージQm,n(m∈M(n))を受け取り、αm,n、f(βm,n)を計算する。そして、ビットノードYnに接続されたチェックノードXm(m∈M(n))に関して各々Am、Bmを、例えば第1のメモリ76aから受け取り、Am×αm,n,Bm+f(βm,n)を計算して出力し、演算したAm×αm,n,Bm+f(βm,n)を第1のメモリ76aに書き込む。
第2フェーズ用チェックノード処理演算器75bは、ビットノードYnに対応したメッセージQm,n(m∈M(n))を読み出し、αm,n、f(βm,n)を計算する。そして、チェックノードXm(m∈M(n))に関して例えば第2のメモリ76bから各々Am、Bmを入力として受け取り、Rm,n=(Am/αm,n)f(Bm−f(βm,n))を出力する。
Am、Bmを格納するメモリ76は、第1フェーズにおいては、Am、Bmを逐次更新するモードとして動作する。最初にすべてのチェックノードXmに関してAm=1,Bm=0に初期化を行う。ビットノードYnに関連するチェックノードXm(m∈M(n))について、現在途中まで求まっているAm、Bmを出力し、Am×αm,n,Bm+f(βm,n)を受け取ってAm、Bmとして更新する。第1フェーズの終わりには手順1'の式(7−2)及び(7−3)で示されるAm、Bmが求まる。また、第2フェーズにおいては、ビットノードYnに関連するチェックノードXm(m∈M(n))について、Am、Bmを出力する。
図21は、Am、Bmを格納するメモリ76が処理するデータをタイミングチャートに示した図である。図21に示すように、第1のメモリ76a、第2のメモリ76bは、互いに異なるフェーズで動作する。つまり、第1のメモリ76aが第1フェーズで動作しているときには、第2のメモリ76bは第2フェーズで動作し、第1のメモリ76aが第2フェーズで動作しているときには、第2のメモリ76bは第1フェーズで動作する。(i+1)回目の第1のフェーズは、i回目の第2のフェーズの結果を使用して行われる。
選択回路76cは、第1のメモリ76a及び第2のメモリ76bのうち、第1フェーズで動作している一方のメモリの出力を第1フェーズ用チェックノード処理演算器75aへ、第1のメモリ76a及び第2のメモリ76bのうち、第2フェーズで動作している他方のメモリの出力を第2フェーズ用チェックノード処理演算器75bへ振り分ける。
ビットノード処理演算器77は、ビットノードYnに入るメッセージRm,n(m∈M(n))と事前値Pnを受け取り、上記式(9)で示す事後値Qn、又は硬判定結果、及び上記式(10)に示すチェックノードXmへのメッセージQm,n=Qn−Rm,nを出力する。
ここで、メモリ74にi回目の繰り返し演算処理の第2フェーズにより求められたQm,n(m∈M(n))が保存されているとする。このとき、第1のメモリ76aには、(i+2)回目の繰り返し演算処理の第1フェーズ用の、逐次更新されるAm,Bmを格納するメモリとなり、第2のメモリ76bは、(i+1)回目の繰り返し演算処理の第2フェーズで使用される更新済みのAm,Bmを格納するメモリとなっているものとする。
この場合、第2フェーズ用チェックノード処理演算器75bは、(i+1)回目の繰り返し演算処理の第2フェーズの処理を実行する。即ち、メモリ74の着目しているビットノードYnの番号に対応したアドレスnから、i回目の繰り返し演算処理の第2フェーズの演算結果(データD31)としてのメッセージQm,n(m∈M(n))を読み出し、例えば第2のメモリ76bに格納されている、(i+1)回目の繰り返し演算処理の第1フェーズにより更新終了したAm、Bmを用いてチェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))を求める。続けてビットノード処理演算器77はメッセージRm,n(m∈M(n))を受け取りビットノードYnからチェックノードXmへの(i+1)回目の繰り返し演算処理結果(データD32)としてのメッセージQm,n(m∈M(n))を求めて、メモリ74のアドレスnに格納すると同時に、この値(データD32)を第1フェーズ用チェックノード処理演算器75aに送り、(i+2)回目の繰り返し演算処理の第1フェーズの処理を行い、例えば第1のメモリ76aのAm、Bmを更新しておく。以上の操作を、カウンタのカウント値に合わせて、着目するビットノード番号を変化させながら行う。
(7−2)符号検出方法
次に、本実施の形態の符号検出方法について説明する。図22(a)は、本実施の形態の符号検出方法を示すフローチャート、図22(b)は、図22(a)の処理に対応する擬似的なプログラムコードを示す図である。
次に、本実施の形態の符号検出方法について説明する。図22(a)は、本実施の形態の符号検出方法を示すフローチャート、図22(b)は、図22(a)の処理に対応する擬似的なプログラムコードを示す図である。
図22(a)及び(b)に示すように、先ずビットノードYnからチェックノードXmへのメッセージQm,nを、例えば受信するか又は読み出したデータ(以下、受信語という。)に基く値Pnにより初期化する。そして、このメッセージQm,nに基づき第1フェーズの演算が行われる。即ち、先ず、全てのAm,BmがAm=1、Bm=0に初期化され、次いでチェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))を算出するためのAm、Bmの更新が行なわれる。Am、Bmの更新は、図9に示した第1の実施の形態と同様であり、最後のビットノードYN−1からのメッセージによるAm、Bmの更新が終了した時点で、上記(7−2)、(7−3)に示すAm、Bmが求まる。(ステップS11、SP11)。
次に、チェックノード処理演算器にて第2フェーズの演算が行われると共に、ビットノード処理演算器にてメッセージQm,nが求められ、続いてチェックノード処理演算器にて次の繰り返しの第1フェーズの処理が行われる(ステップS12、SP12)。即ち、第2フェーズ用処理演算器75bでは、繰り返し演算処理(i+1)回目における更新済みのAm、Bm(以下、Am’、Bm’という。)と、前のステップ(1回目はS11、2回目以降はS12)で得られた繰り返し処理i回目におけるビットノードYnからチェックノードXmへのメッセージQm,n(m∈M(n))により、チェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))が算出される。この値を用いてビットノード処理演算器において、ビットノードYnからチェックノードXmへの繰り返し演算処理(i+1)回目におけるメッセージQm,nが算出される。
また、第1フェーズ用処理演算器75aにおいては、全てのAm,BmがAm=1、Bm=0に初期化され、次いで上述の繰り返し演算処理(i+1)回目におけるメッセージQm,nを使用して、チェックノードXmからビットノードYnへのメッセージRm,n(m∈M(n))を算出するための、繰り返し演算処理(i+2)回目におけるAm、Bmの更新が行なわれる。
ここで、図20に示すチェックノード処理演算器75の第2フェーズ用処理演算器75bがメモリ74から読み出すデータD31は、前のステップ(1回目はS11、2回目以降はS12)にて得られたメッセージQm,n(m∈M(n))であり、第1フェーズ用処理演算器75bに入力されるデータD32は、同じステップS12中にて算出されるQm,n(m∈M(n))である。即ち、メモリ74は、データD31が第2フェーズ用処理演算器75bにて読み出されると直ぐ、ビットノード処理演算器77によりデータD32が書き込まれる。
そして、以上のステップS12の繰り返し回数が規定の回数に達したか否かが判定され(ステップS13)、規定の繰り返し回数に達していない場合は、ステップS12の処理を繰り返し、規定の繰り返し回数に達している場合は、硬判定復号が行われ、その結果が出力される(ステップS14)。また、ステップS12において、事後値Qnの硬判定結果がチェックを満たしているか否かを検出し、繰り返し処理を中止してステップS14の硬判定復号を行うようにしてもよい。
本実施の形態においては、第1の実施の形態と同様の効果を奏すると共に、チェックノード処理演算器及びメモリ76を多重化することにより、第1の実施の形態に比して回路規模は若干大きくなるものの、ほぼ2倍の処理速度を得ることができ、スループットを向上することができ。また、本実施の形態においても、上述した如く、チェックノード処理演算器におけるαm,n、f(βm,n)の演算をビットノード処理演算器で行って、ビットノードYnからチェックノードXmへのメッセージを格納するメモリにはαm,n、f(βm,n)を保存する構成としてもよい。この場合、第1フェーズ用チェックノード処理演算器75aと第2フェーズ用チェックノード処理演算器75bとで重複していたαm,n、f(βm,n)の計算をビットノード処理演算器の1箇所で行うことができる。
(7−3)復号装置
更に、図20に示すLDPC符号の符号検出装置70からの硬判定結果から情報語を推定して出力する硬判定復号装置78とを組み合わせることで、図23に示すLDPC符号の復号装置79を実現することができる。特に、LDPC符号が組織符号である場合、硬判定復号装置78は、パリティ部を除去する装置となる。また、本実施の形態に限らず、上述の第1乃至第4の実施の形態においても、同様に復号装置を構成することができる。
更に、図20に示すLDPC符号の符号検出装置70からの硬判定結果から情報語を推定して出力する硬判定復号装置78とを組み合わせることで、図23に示すLDPC符号の復号装置79を実現することができる。特に、LDPC符号が組織符号である場合、硬判定復号装置78は、パリティ部を除去する装置となる。また、本実施の形態に限らず、上述の第1乃至第4の実施の形態においても、同様に復号装置を構成することができる。
本復号装置においても、第1の実施の形態と同様の効果を奏し、ビットノードから出力されるメッセージとチェックノードが読み出すメッセージとは同一のアドレスで管理することができるため装置の回路構成が簡略化すると共に、図20に示す符号検出装置と組み合わせることで高スループットの復号装置を得ることができる。
また、QC符号(巡回符号を含む)の場合や、QC符号の複数組の演算をパラレル処理する場合においても、本実施の形態と同様の構成、即ち、Am、Bmを格納するメモリ、及びチェックノード処理演算器を多重化することによりスループットを向上することが可能である。
(8)変形例
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、以上説明した第1乃至第5の実施の形態における符号検出装置や復号装置を利用したストレージ(記憶装置)、記録再生を行う情報処理装置、送受信装置等に適用することができる。
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、以上説明した第1乃至第5の実施の形態における符号検出装置や復号装置を利用したストレージ(記憶装置)、記録再生を行う情報処理装置、送受信装置等に適用することができる。
図24及び図25は、本実施の形態における符号検出装置(復号装置)を備える記録再生装置を示すブロック図である。図24に示すように、記録再生装置86は、音楽又は映像等のメッセージに上記式(14−2)に示す生成行列Gを乗算してLDPC符号を生成するLDPC符号化部81と、生成されたLDPC符号をチャネル符号化する符号化部87と、チャネル符号化されたデータを記録し、記録された符号を読み出す記録/再生部88と、読み出したデータからチャネルを検出し、チャネル毎に復号するチャネル復号部89と、チャネル毎に復号されたデータから符号検出するLPDC復号部85とを有する。LPDC復号部85にて符号検出されたデータは、メッセージに復号される。
また、図25に示す他の記録再生装置90は、音楽又は映像等のメッセージをチャネル符号化する符号化部91と、チャネル符号化された符号語に対するLDPCパリティを生成するパリティ生成部92と、チャネル符号化部91にパリティ生成部92が生成したLDPCパリティを挿入した符号語を生成するパリティ挿入部93と、パリティが挿入された符号語を記録し、記録された符号語を読み出す記録/再生部94と、読み出した符号語からチャネルを検出するチャネル検出部95と、チャネル毎のデータに対して符号検出するLPDC復号部96と、LPDC復号部96にて符号検出されたデータからパリティを除去するパリティ除去部97と、パリティが除去されたチャネル毎の符号を復号するチャネル復号部98とを有する。
このように、本実施の形態における符号検出装置は、通信路を介して送受信されるようなデータの雑音の影響を除去するような受信装置の他、記録再生時の書き込みエラーや、読み出しの際の信号の訛り等による誤りを訂正する各種記録再生装置等に適用することができ、このことにより、各種装置の回路構成を簡略化することができ、各種装置を小型化し、生産性を向上することができる。
1,51 符号検出装置、2,52,72 カウンタ、3,4,6,40,43,54,73,74,75,103,106,108,113,118k-1,119k-1 メモリ、5,10,55,75,105,115k-1 チェックノード処理演算器、7,57,77,104,114k-1 ビットノード処理演算器、10t 処理部、31 更新回路、320〜326 保管場所、33,42a〜42c 選択回路、34,39 制御部、38t,36m,42a〜42c,62a〜62e マルチプレクサ、37m,610〜616 レジスタ、410〜416 シフトレジスタ、440〜442 FIFO、80 通信装置、81 LPDC符号化部、82 変調部、83 通信路、84 復調部、5 LDPC復号部、86 記録再生装置、87 チャネル符号化部、88 記録/再生部、89 チャネル復号部、90 記録再生装置、91 チャネル符号化部、92 パリティ生成部、93 パリティ挿入部、94 記録/再生部、95 チャネル検出部、96 LPDC復号部、97 パリティ除去部、98 チャネル復号部、101,110,120 復号装置、107 硬判定復号器、1210〜121k-1 演算部Xm チェックノード、Yn ビットノード
Claims (37)
- 入力された低密度パリティ検査符号から、低密度パリティ検査行列に対応した複数のチェックノード及び複数の変数ノードの間でメッセージを伝搬させるメッセージパッシングアルゴリズムを用いて符号検出する符号検出装置において、
各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算手段と、
上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算手段とを有する
ことを特徴とする符号検出装置。 - 上記チェックノード処理演算手段は、入力された上記第1のメッセージからチェックを満たす確率又は当該確率に準じた値を求める第1の演算と、該第1の演算にて得られた該チェックを満たす確率又は当該確率に準じた値に基づき、上記第2のメッセージを求める第2の演算とを実行する
ことを特徴とする請求項1記載の符号検出装置。 - 上記変数ノード処理演算手段からの上記第1のメッセージを保存する第1の記憶手段を有し、
上記チェックノード処理演算手段は、上記第1の記憶手段から上記第1のメッセージを読み出す
ことを特徴とする請求項1記載の符号検出装置。 - 上記チェックノード処理演算手段における演算結果を記憶する第2の記憶手段を有する
ことを特徴とする請求項1記載の符号検出装置。 - 上記チェックノード処理演算手段における演算結果を記憶する第2の記憶手段を有し、
上記第1の演算では、1以上の上記変数ノードからの1以上の上記第1のメッセージが逐次入力され、該1以上の上記第1のメッセージが渡された全てのチェックノードにおけるチェックを満たす確率又は当該確率に準じた値を逐次更新し、
上記第2の演算では、再び上記1以上の上記変数ノードからの1以上の上記第1のメッセージが逐次入力され、上記第1の演算にて更新が終了したチェックを満たす確率又は当該確率に準じた値と、上記1以上の第1のメッセージとから、該1以上の上記第1のメッセージが渡された全てのチェックノードから該1以上の上記変数ノードへ渡す上記第2のメッセージを逐次算出し、
上記第2の記憶手段は、上記逐次更新されるチェックを満たす確率又は当該確率に準じた値、又は更新が終了したチェックを満たす確率又は当該確率に準じた値を記憶する
ことを特徴とする請求項2記載の符号検出装置。 - 上記低密度パリティ検査符号は、任意の符号語をp回、巡回置換したものもまた符号語になる準巡回符号であることを特徴とする請求項1記載の符号検出装置。
- 上記準巡回符号は、p=1である巡回符号であることを特徴とする請求項6記載の符号検出装置。
- 上記第2の記憶手段は、上記チェックノードと同数のメモリと、該メモリのデータを更新する更新手段と、上記メモリを選択してデータを出力する選択手段と、上記更新手段及び選択手段を制御する制御手段とを有する
ことを特徴とする請求項4記載の符号検出装置。 - 上記チェックノード処理演算手段における演算結果を記憶する第2の記憶手段を有し、
上記第2の記憶手段は、上記チェックノードと同数のシフトレジスタと、上記チェックノード処理演算手段からの演算結果により上記シフトレジスタのデータを更新する更新手段とを有し、上記シフトレジスタは、更新されたデータを出力する
ことを特徴とする請求項6記載の符号検出装置。 - 上記変数ノード処理演算手段は、上記pの倍数個の変数ノードから、該pの倍数個の変数ノードに接続される全てのチェックノードに渡す上記第1のメッセージを並列して演算する
ことを特徴とする請求項6記載の符号検出装置。 - 上記低密度パリティ検査符号は、任意の符号語をp回、巡回置換したものもまた符号語になる準巡回符号であって、
上記チェックノード処理演算手段における演算結果を記憶する第2の記憶手段を有し、
上記第2の記憶手段は、上記pの倍数個の変数ノードにエッジにより接続された全てのチェックノードに対して当該pの倍数個の変数ノードから渡される上記第1のメッセージにより更新された当該チェックノードにおけるチェックを満たす確率又は当該確率に準じた値を記憶する
ことを特徴とする請求項2記載の符号検出装置。 - 上記変数ノード処理演算手段は、上記第2のメッセージから事後確率を算出し、該事後確率の硬判定復号結果を符号検出結果として出力する
ことを特徴とする請求項1記載の符号検出装置。 - 上記チェックノード処理演算手段が上記チェックを満たす確率又は当該確率に準じた値を算出する第1フェーズにおける演算処理と、上記チェックノード処理演算手段が上記第2のメッセージを算出し上記変数ノード処理演算手段が上記第1のメッセージを算出する第2フェーズにおける演算処理とを繰り返す繰り返し演算処理の繰り返し回数を制御する制御手段を有する
ことを特徴とする請求項2記載の符号検出装置。 - 上記制御手段は、上記繰り返し演算処理を、所定の回数実行するよう制御する
ことを特徴とする請求項13記載の符号検出装置。 - 上記変数ノード処理演算手段は、上記第2のメッセージから算出した事後確率から硬判定復号結果を算出し、
上記制御手段は、上記繰り返し演算処理を、上記硬判定復号結果が所定の条件を満たすまで実行するよう制御する
ことを特徴とする請求項13記載の符号検出装置。 - 上記チェックノード処理演算手段を、同一の繰り返し演算処理に2回以上使用する
ことを特徴とする請求項13記載の符号検出装置。 - 上記チェックノード処理演算手段は、上記第1の演算を実行した後、上記第2の演算を実行する
ことを特徴とする請求項1記載の符号検出装置。 - 上記チェックノード処理演算手段は、上記第1フェーズにおける上記第1の演算を実行する第1フェーズ用処理演算手段と、上記第2フェーズにおける上記第2の演算を行う第2フェーズ用処理演算手段とを有し、
上記第1フェーズ用処理演算手段は、上記第2フェーズ用処理演算手段が上記第2の演算を実行中に、次の繰り返し演算における上記第1の演算を実行する
ことを特徴とする請求項13記載の符号検出装置。 - 入力された低密度パリティ検査符号から、低密度パリティ検査行列に対応した複数のチェックノード及び複数の変数ノードの間でメッセージを伝搬させるメッセージパッシングアルゴリズムを用いて符号検出する符号検出方法において、
各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算工程と、
上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算工程とを有する
ことを特徴とする符号検出方法。 - 上記チェックノード処理演算工程は、入力された上記第1のメッセージからチェックを満たす確率又は当該確率に準じた値を求める第1の演算工程と、該第1の演算にて得られた該チェックを満たす確率又は当該確率に準じた値に基づき、上記第2のメッセージを求める第2の演算工程とを有する
ことを特徴とする請求項19記載の符号検出方法。 - 上記チェックノード処理演算工程では、上記変数ノード処理演算工程にて得られた上記変数ノード毎の第1のメッセージを保存する第1の記憶手段から上記変数ノード毎の第1のメッセージを読み出す
ことを特徴とする請求項19記載の符号検出方法。 - 上記チェックノード処理演算工程における演算結果を第2の記憶手段に記憶する記憶工程を有する
ことを特徴とする請求項19記載の符号検出方法。 - 上記チェックノード処理演算工程における演算結果を第2の記憶手段に記憶する記憶工程を有し、
上記第1の演算工程では、1以上の上記変数ノードからの1以上の上記第1のメッセージが逐次入力され、該1以上の上記第1のメッセージが渡された全てのチェックノードにおけるチェックを満たす確率又は当該確率に準じた値を逐次更新し、
上記第2の演算工程では、再び上記1以上の上記変数ノードからの1以上の上記第1のメッセージが逐次入力され、上記第1の演算にて更新が終了したチェックを満たす確率又は当該確率に準じた値と、上記1以上の第1のメッセージとから、該1以上の上記第1のメッセージが渡された全てのチェックノードから該1以上の上記変数ノードへ渡す上記第2のメッセージを逐次算出し、
上記記憶工程では、上記逐次更新されるチェックを満たす確率又は当該確率に準じた値、又は更新が終了したチェックを満たす確率又は当該確率に準じた値を記憶する
ことを特徴とする請求項20記載の符号検出方法。 - 上記低密度パリティ検査符号は、任意の符号語をp回、巡回置換したものもまた符号語になる準巡回符号であることを特徴とする請求項19記載の符号検出方法。
- 上記準巡回符号は、p=1である巡回符号であることを特徴とする請求項24記載の符号検出方法。
- チェックノード処理演算工程における演算結果により、チェックノードと同数設けられたメモリに保存されたデータを更新する更新工程と、
チェックノード処理演算工程にて使用されるデータを上記メモリから出力する出力工程とを有する
ことを特徴とする請求項19記載の符号検出方法。 - 上記低密度パリティ検査符号は、任意の符号語をp回、巡回置換したものもまた符号語になる準巡回符号であって、
チェックノード処理演算工程における演算結果により、上記チェックノードと同数のシフトレジスタに保存されたデータを更新する更新工程と、
チェックノード処理演算工程にて使用されるデータを上記シフトレジスタから出力する出力工程とを有する
ことを特徴とする請求項19記載の符号検出方法。 - 上記変数ノード処理演算工程では、上記pの倍数個の変数ノードから、該pの倍数個の変数ノードに接続される全てのチェックノードに渡す上記第1のメッセージを並列に演算する
ことを特徴とする請求項24記載の符号検出方法。 - 上記低密度パリティ検査符号は、任意の符号語をp回、巡回置換したものもまた符号語になる準巡回符号であって、
上記pの倍数個の変数ノードにエッジにより接続された全てのチェックノードに対して当該pの倍数個の変数ノードから渡される上記第1のメッセージにより更新された当該チェックノードにおけるチェックを満たす確率又は当該確率に準じた値を第2の記憶手段に記憶する記憶工程を有する
ことを特徴とする請求項20記載の符号検出方法。 - 上記チェックノード処理演算工程の上記第1の演算工程にて上記チェックを満たす確率又は当該確率に準じた値を算出する処理を実行する第1フェーズと、上記チェックノード処理演算工程の上記第2の演算工程にて上記第2のメッセージを算出し上記変数ノード処理演算工程にて上記第1のメッセージを算出する第2フェーズとを繰り返す繰り返し演算処理の繰り返し回数を制御する制御工程を有する
ことを特徴とする請求項20記載の符号検出方法。 - 上記チェックノード処理演算工程は、上記第1フェーズにおける上記第1の演算を実行する第1フェーズ用処理演算工程と、上記第2フェーズにおける上記第2の演算を行う第2フェーズ用処理演算工程とを有し、
上記第2フェーズ用処理演算工程と、次の繰り返し演算における上記第1フェーズ用処理演算工程とを同時に実行する
ことを特徴とする請求項30記載の符号検出方法。 - 入力された低密度パリティ検査符号から、メッセージパッシングアルゴリズムを用いて複数のチェックノードと複数の変数ノードとの間でメッセージを伝搬させて符号検出して復号する復号装置において、
各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算手段と、
上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算手段と、
上記第2のメッセージから事後確率を算出し、該事後確率の硬判定復号をする復号手段とを有する
ことを特徴とする復号装置。 - 上記復号手段は、上記硬判定復号結果からパリティ部分を除去することを特徴とする請求項32記載の復号装置。
- 入力された低密度パリティ検査符号から、メッセージパッシングアルゴリズムを用いて複数のチェックノードと複数の変数ノードとの間でメッセージを伝搬させて符号検出して復号する復号方法において、
各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算工程と、
上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算工程と、
上記第2のメッセージから事後確率を算出し、該事後確率の硬判定復号をする復号工程とを有する
ことを特徴とする復号方法。 - メッセージから低密度パリティ検査符号に符号化され記録されたデータを再生する情報処理装置において、
上記記録されたデータを読み出し、メッセージパッシングアルゴリズムを用いて複数のチェックノードと複数の変数ノードとの間でメッセージを伝搬させて低密度パリティ検査符号の符号を検出して再生する再生手段を有し、
上記再生手段は、
各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算手段と、
上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算手段と、
上記第2のメッセージから事後確率を算出し、該事後確率の硬判定復号をする復号手段と
を有することを特徴とする情報処理装置。 - 上記メッセージを低密度パリティ検査符号に符号化する符号化手段と、
上記符号化されたメッセージを記録する記録手段とを有する
ことを特徴とする請求項35記載の情報処理装置。 - メッセージから低密度パリティ検査符号に符号化され記録されたデータを再生する情報処理方法において、
上記記録されたデータを読み出し、メッセージパッシングアルゴリズムを用いて複数のチェックノードと複数の変数ノードとの間でメッセージを伝搬させて低密度パリティ検査符号の符号を検出して再生する再生工程を有し、
上記再生工程は、
各変数ノードについて、一の変数ノードに接続された全てのチェックノードへ渡すメッセージを第1のメッセージとして各変数ノード毎に算出する変数ノード処理演算工程と、
上記第1のメッセージを入力とし、各チェックノードについて、一のチェックノードに接続された全ての変数ノードからのメッセージに基づき、チェックノードから変数ノードへ渡すメッセージを算出し、一の変数ノードに接続された全てのチェックノードから当該一の変数ノードが受け取るメッセージを第2のメッセージとして出力するチェックノード処理演算工程と、
上記第2のメッセージから事後確率を算出し、該事後確率の硬判定復号をする復号工程と
を有することを特徴とする情報処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003280427A JP2005045735A (ja) | 2003-07-25 | 2003-07-25 | 符号検出装置及び方法、復号装置及び方法、並びに情報処理装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003280427A JP2005045735A (ja) | 2003-07-25 | 2003-07-25 | 符号検出装置及び方法、復号装置及び方法、並びに情報処理装置及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005045735A true JP2005045735A (ja) | 2005-02-17 |
Family
ID=34266260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003280427A Withdrawn JP2005045735A (ja) | 2003-07-25 | 2003-07-25 | 符号検出装置及び方法、復号装置及び方法、並びに情報処理装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005045735A (ja) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005223440A (ja) * | 2004-02-03 | 2005-08-18 | Sony Corp | 復号装置及び方法、並びに情報処理装置及び方法 |
WO2006106841A1 (ja) * | 2005-03-31 | 2006-10-12 | Mitsubishi Denki Kabushiki Kaisha | 誤り訂正符号化装置 |
JP2007020068A (ja) * | 2005-07-11 | 2007-01-25 | Sony Corp | 復号装置および復号方法 |
WO2007034870A1 (ja) * | 2005-09-26 | 2007-03-29 | Nec Corporation | 復号装置および受信装置 |
JP2007110265A (ja) * | 2005-10-11 | 2007-04-26 | Samsung Electronics Co Ltd | 復号装置および復号方法 |
WO2007080827A1 (ja) * | 2006-01-10 | 2007-07-19 | Mitsubishi Electric Corporation | 検査行列生成方法 |
JP2008259051A (ja) * | 2007-04-06 | 2008-10-23 | Sony Corp | 符号化方法および符号化装置、並びにプログラム |
US7451376B2 (en) | 2005-05-31 | 2008-11-11 | Kabushiki Kaisha Toshiba | Decoder and decoding method for decoding irregular low-density parity-check codes |
JP2008544721A (ja) * | 2005-06-27 | 2008-12-04 | トムソン ライセンシング | 反復デコーダの電力削減のための方法及び装置 |
JP2009159643A (ja) * | 2009-04-15 | 2009-07-16 | Mobile Techno Corp | 低密度パリティチェック符号復号装置及び方法 |
US7886208B2 (en) | 2006-02-02 | 2011-02-08 | Samsung Electronics Co., Ltd | LDPC decoding apparatus and method based on node memory |
US8156399B2 (en) | 2006-08-17 | 2012-04-10 | Mobile Techno Corp. | Low density parity check codes decoder and method thereof |
JP2020511079A (ja) * | 2017-03-09 | 2020-04-09 | エルジー エレクトロニクス インコーポレイティド | Ldpc符号の階層的復号の方法及びそのための装置 |
-
2003
- 2003-07-25 JP JP2003280427A patent/JP2005045735A/ja not_active Withdrawn
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005223440A (ja) * | 2004-02-03 | 2005-08-18 | Sony Corp | 復号装置及び方法、並びに情報処理装置及び方法 |
WO2006106841A1 (ja) * | 2005-03-31 | 2006-10-12 | Mitsubishi Denki Kabushiki Kaisha | 誤り訂正符号化装置 |
JP4917023B2 (ja) * | 2005-03-31 | 2012-04-18 | 三菱電機株式会社 | 誤り訂正符号化装置 |
US8122324B2 (en) | 2005-03-31 | 2012-02-21 | Mitsubishi Electric Corporation | Error correction coding apparatus |
US7451376B2 (en) | 2005-05-31 | 2008-11-11 | Kabushiki Kaisha Toshiba | Decoder and decoding method for decoding irregular low-density parity-check codes |
US8171367B2 (en) | 2005-06-27 | 2012-05-01 | Thomson Licensing | Stopping criteria in iterative decoders |
JP2008544721A (ja) * | 2005-06-27 | 2008-12-04 | トムソン ライセンシング | 反復デコーダの電力削減のための方法及び装置 |
JP2007020068A (ja) * | 2005-07-11 | 2007-01-25 | Sony Corp | 復号装置および復号方法 |
US8074142B2 (en) | 2005-09-26 | 2011-12-06 | Nec Corporation | Decoding device and receiving device |
WO2007034870A1 (ja) * | 2005-09-26 | 2007-03-29 | Nec Corporation | 復号装置および受信装置 |
JP2007089064A (ja) * | 2005-09-26 | 2007-04-05 | Nec Corp | 復号装置および受信装置 |
JP2007110265A (ja) * | 2005-10-11 | 2007-04-26 | Samsung Electronics Co Ltd | 復号装置および復号方法 |
JP4598085B2 (ja) * | 2006-01-10 | 2010-12-15 | 三菱電機株式会社 | 検査行列生成方法 |
JPWO2007080827A1 (ja) * | 2006-01-10 | 2009-06-11 | 三菱電機株式会社 | 検査行列生成方法 |
WO2007080827A1 (ja) * | 2006-01-10 | 2007-07-19 | Mitsubishi Electric Corporation | 検査行列生成方法 |
US7886208B2 (en) | 2006-02-02 | 2011-02-08 | Samsung Electronics Co., Ltd | LDPC decoding apparatus and method based on node memory |
US8156399B2 (en) | 2006-08-17 | 2012-04-10 | Mobile Techno Corp. | Low density parity check codes decoder and method thereof |
JP4702632B2 (ja) * | 2007-04-06 | 2011-06-15 | ソニー株式会社 | 符号化方法および符号化装置、並びにプログラム |
JP2008259051A (ja) * | 2007-04-06 | 2008-10-23 | Sony Corp | 符号化方法および符号化装置、並びにプログラム |
JP2009159643A (ja) * | 2009-04-15 | 2009-07-16 | Mobile Techno Corp | 低密度パリティチェック符号復号装置及び方法 |
JP2020511079A (ja) * | 2017-03-09 | 2020-04-09 | エルジー エレクトロニクス インコーポレイティド | Ldpc符号の階層的復号の方法及びそのための装置 |
US11206042B2 (en) | 2017-03-09 | 2021-12-21 | Lg Electronics Inc. | Layered decoding method for LDPC code and device therefor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6555759B2 (ja) | 構造化されたldpcのコーディング方法、デコーディング方法、コーディング装置及びデコーディング装置 | |
US9544090B2 (en) | Hard input low density parity check decoder | |
JP5483875B2 (ja) | Ldpc符号のブロックおよびレートに独立な復号の方法および装置 | |
US9015550B2 (en) | Low density parity check layer decoder for codes with overlapped circulants | |
JP4702632B2 (ja) | 符号化方法および符号化装置、並びにプログラム | |
JP5199463B2 (ja) | ターボldpc復号 | |
JP4296949B2 (ja) | 復号装置及び方法、並びに情報処理装置及び方法 | |
US8065598B1 (en) | Low latency programmable encoder with outer systematic code and low-density parity-check code | |
JP5112468B2 (ja) | 誤り検出訂正回路、メモリコントローラ、および半導体メモリ装置 | |
US8656249B2 (en) | Multi-level LDPC layer decoder | |
KR101405962B1 (ko) | Ldpc 코드를 이용한 복호화 방법 | |
US8572463B2 (en) | Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size | |
US10367526B2 (en) | Irregular low density parity check processing system with non-uniform scaling | |
US20140053037A1 (en) | Multi-Level LDPC Layered Decoder With Out-Of-Order Processing | |
US20160020783A1 (en) | Low Density Parity Check Decoder With Relative Indexing | |
JP2010532128A (ja) | シャッフルldpcデコーディング | |
KR20140039125A (ko) | 부분 로컬 반복을 수행하는 ldpc 디코더 | |
US20110083058A1 (en) | Trapping set based ldpc code design and related circuits, systems, and methods | |
CN103187979A (zh) | 基于混合域fft的非二进制ldpc解码器 | |
JP2005045735A (ja) | 符号検出装置及び方法、復号装置及び方法、並びに情報処理装置及び方法 | |
JP2014099944A (ja) | ハードウェア共用および直列和積アーキテクチャを用いる低密度パリティ検査復号の方法および装置 | |
US10419026B2 (en) | Method and apparatus for efficient data decoding | |
JP2006100941A (ja) | 信号処理装置、低密度パリティ検査符号の符号化方法および復号方法 | |
JP5500357B2 (ja) | 符号化装置、および符号化方法 | |
趙雄心 | Research on LDPC Decoder Design Methodology for Error-Correcting Performance and Energy-Efficiency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20061003 |