JP2009260692A - 復号装置及び復号方法 - Google Patents

復号装置及び復号方法 Download PDF

Info

Publication number
JP2009260692A
JP2009260692A JP2008107719A JP2008107719A JP2009260692A JP 2009260692 A JP2009260692 A JP 2009260692A JP 2008107719 A JP2008107719 A JP 2008107719A JP 2008107719 A JP2008107719 A JP 2008107719A JP 2009260692 A JP2009260692 A JP 2009260692A
Authority
JP
Japan
Prior art keywords
matrix
column
row
message
order
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.)
Pending
Application number
JP2008107719A
Other languages
English (en)
Inventor
Takuya Shirato
琢也 白戸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pioneer Corp
Original Assignee
Pioneer Electronic Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Pioneer Electronic Corp filed Critical Pioneer Electronic Corp
Priority to JP2008107719A priority Critical patent/JP2009260692A/ja
Publication of JP2009260692A publication Critical patent/JP2009260692A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

【課題】LDPC符号で符号化されたデータを復号する復号装置において、P個の枝に対応したメッセージを同時に更新する構成を確実かつ効率的に可能とする。
【解決手段】復号装置は、低密度パリティ検査符号によって符号化されたデータを、低密度パリティ検査符号を規定する検査行列を用いて復号する。検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない1種類の基本構成行列を0から(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは巡回シフト量が互いに異なる複数の巡回シフト行列の和行列のいずれかである構成行列で、基礎行列の各要素の値と巡回シフト行列の巡回シフト量とが対応するように置き換えることで生成されている。
【選択図】図5

Description

本発明は、LDPC(Low Density Parity Check:低密度パリティ検査)符号によって符号化されたデータを復号する復号装置、及び復号方法の技術分野に関する。
この種の復号装置によって復号されるLDPC符号は、要素‘0’の数に対して要素‘1’の数が非常に少ないような疎な検査行列によって定義される誤り訂正符号である。LDPC符号はR.G.Gallagerにより1963年に初めて提案されたが、当時は計算機の性能がそれほど高くないこともありあまり注目されなかった。しかし近年D.J.C.MacKayやM.G.Lubyらにより再評価され、符号長を長くしていくと符号性能の理論的限界であるシャノン限界に迫る性能を示す符号としてターボ符号と共に注目を集めており、通信、放送、ストレージといった様々な分野で研究が行われている。
上述したLDPC符号語の復号をハードウェアで行う場合、例えばハードウェアの1クロック毎に1本の枝に対応したメッセージを求めるのでは復号にかかるクロック数が多くなり過ぎ、他方で、全ての枝に対応したメッセージを同時に求めるのでは、回路規模が大きくなり過ぎてしまう。
このため、もとの検査行列に対して行・列置換を行うことで得られる、P行P列の構成行列の組合せで表される変換検査行列を用いて、1クロック毎にP個の枝に対応したメッセージを同時に求めることができ、Pの値を変化させることで復号にかかるクロック数と回路規模をトレードオフで柔軟に調整することが可能な復号装置を提供するという技術が開示されている(特許文献1参照)。
特開2004−343170号公報
しかしながら、上述した技術では、行処理及び列処理の結果として同時に出力されたP個のメッセージをFIFO(First-In First-Out)もしくはRAMに格納する際に、複数あるFIFOから格納先FIFOを適切に選択、又はRAMの格納先アドレスを適切に選択すると共にP個のメッセージを夫々適切なビット位置に格納することが要求される。ここで、上述した特許文献1には、格納先FIFOを選択するためには格納するメッセージが検査行列のどの行(列)に属するかの情報に従い、RAMの格納先アドレスを選択するためには書き込もうとしているメッセージが次に読み出される際に何番目に読み出されるかを求めその位置に書き込む、という記載しかなく、これらの情報の求め方や保持の方法に関して具体的な記載はされていない。即ち、上述した技術では、メッセージの格納が適切に行えないおそれがあるという技術的問題点がある。
本発明は、例えば上述した問題点に鑑みなされたものであり、1クロック毎にP個の枝に対応したメッセージを同時に求めることができPの値を変化させることで、復号にかかるクロック数と回路規模をトレードオフで柔軟に調整することが可能なLDPC符号の復号装置及び復号方法を提供することを課題とする。
本発明の第1の復号装置は上記課題を解決するために、低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号装置であって、前記検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない1種類の基本構成行列を0から(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記巡回シフト行列の前記巡回シフト量とが対応するように置き換えることで生成されている。
本発明の第1の復号装置によれば、その動作時に、復号手段によって前記検査行列を用いた復号が行われる。検査行列は、m行n列の基礎行列の各要素が、P行P列の構成行列で置き換えられたものである。構成行列は、ゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない1種類の基本構成行列を0から(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである。
巡回シフトとは行列の要素をすべて行方向(右方向)に移動させ、一番右側の列にあった要素は一番左側の列に巡回させるように移動させることを言い、巡回シフト量とは何列分移動させるかを表す。巡回シフト量が0の場合は元の行列そのものとなる。尚、ここでの巡回シフトは、行方向の巡回シフトとして説明したが、列方向の巡回シフトであってもよい。
LDPC符号によって符号化されたデータは、複数のチェックノード及び複数の変数ノードを含む二部グラフであるタナーグラフにおいて、メッセージと呼ばれる情報がやり取りされることで復号される。メッセージは、チェックノード及び変数ノード間を結ぶ枝に沿って送られる。
しかしながら、上述した復号を行う場合、例えばハードウェアの1クロック毎に1本の枝に対応したメッセージを求めるのでは復号に時間がかかり過ぎ、他方で、全ての枝に対応したメッセージを同時に求めるのでは、回路規模が大きくなり過ぎてしまう。1クロック毎にP個の枝に対応したメッセージを同時に求めるようにすれば、Pの値を変化させることでクロック数と回路規模をトレードオフで柔軟に調整することが可能である。そのためにはP行の行処理及びP列の列処理を並行して行う必要があるが、通常はP行(列)の内のある行(列)の処理は終わっても他の行(列)の処理はまだ終わっていないといった状況が起こり処理装置の制御が複雑になってしまう。
しかるに本発明では特に、上述したような特徴を持つP行P列の構成行列で基礎行列の各要素が置き換えられて得られる検査行列を用いている。このため、P行の行処理又はP列の列処理を並列に実行しても、P行(列)の内のある行(列)の処理は終わっても他の行(列)の処理はまだ終わっていないといった状況は起こりえない。したがって1クロック毎にP個の枝に対応したメッセージを同時に求める構成が容易に実現できる。
以上説明したように、本発明の第1の復号装置によれば、P個の枝に対応したメッセージを同時に求め、Pの値を変化させることでクロック数と回路規模をトレードオフで柔軟に調整することが可能なLDPC復号器を簡単かつ効率的に実現可能である。
本発明の第1の復号装置の一態様では、前記1種類の基本構成行列は単位行列である。
この態様によれば、基本構成行列が、単位行列とされるため、各メッセージの構成行列内での行番号と列番号との対応関係がより簡単なものとなる。よって、メッセージの格納先の選択を、より簡単なものとすることができる。
本発明の第2の復号装置は上記課題を解決するために、低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号装置であって、前記検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない2種類以上の基本構成行列、互いに同じ位置に‘1’が存在しない複数の基本構成行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記2種類以上の基本構成行列とが対応するように置き換えることで生成されている。
本発明の第2の復号装置によれば、その動作時に、復号手段によって前記検査行列を用いた復号が行われる。検査行列は、m行n列の基礎行列の各要素が、P行P列のゼロ行列、又は構成行列のいずれかで置き換えられたものである。構成行列は、各行各列に夫々‘1’が一つしか存在しない2種類以上の基本構成行列、又は互いに同じ位置に‘1’が存在しない複数の基本構成行列の和行列である。
本発明では、基礎行列における各要素の置き換えは、基礎行列の各要素の値と前記2種類以上の基本構成行列とが対応するように行われている。即ち、同じ値をもつ要素は、同じ行列へと置き換えられ、互いに異なる値を持つ要素は、互いに異なる行列へと置き換えられる。
上述したような特徴を持つP行P列の構成行列で基礎行列の各要素が置き換えられて得られる検査行列を用いることにより、第1の復号装置と同様に1クロック毎にP個の枝に対応したメッセージを同時に求める構成が容易に実現できる。
以上説明したように、本発明の第2の復号装置によれば、P個の枝に対応したメッセージを同時に求め、Pの値を変化させることでクロック数と回路規模をトレードオフで柔軟に調整することが可能なLDPC復号器を簡単かつ効率的に実現可能である。
本発明の第1及び第2の復号装置の一態様では、同時にP個ずつの列メッセージを受け取り、前記列メッセージによって行メッセージを更新し、同時にP個ずつの前記更新された行メッセージを出力する行処理手段と、同時にP個ずつの行メッセージを受け取り、前記行メッセージによって前記列メッセージを更新し、同時にP個ずつの前記更新された列メッセージを出力する列処理手段と、前記P個の行メッセージを同時に読み出し又は書き込み可能な行メッセージ記憶手段と、前記P個の列メッセージを同時に読み出し又は書き込み可能な列メッセージ記憶手段とを更に備える。
この態様によれば、行処理手段、列処理手段、行メッセージ記憶手段及び列メッセージ記憶手段を備えることで、復号手段は1クロック毎にP個の枝に対応したメッセージを同時に更新することが可能となり、Pの値を適当に定めることで復号にかかるクロック数と回路規模をトレードオフで柔軟に調節することができる。尚、ここでの「同時」とは、例えばハードウェアにおける1クロックでまとめて実行可能という意味であり、時間的には厳密に同時でなくともよい。
上述した行メッセージ記憶手段及び列メッセージ記憶手段を更に備える態様では、前記行メッセージ記憶手段及び前記列メッセージ記憶手段は、夫々P個のRAM(Random Access Memory)を含んでいるように構成してもよい。
このように構成すれば、行メッセージ記憶手段及び列メッセージ記憶手段が、確実にP個の行メッセージ又は列メッセージを同時に読み書きすることができる。
上述した行メッセージ記憶手段及び列メッセージ記憶手段を更に備える態様では、前記行メッセージ記憶手段及び前記列メッセージ記憶手段は、夫々前記行メッセージ及び前記列メッセージの量子化ビット数のP倍のビット幅を有するシフトレジスタを含んでいるように構成してもよい。
このように構成すれば、行メッセージ記憶手段には行メッセージの量子化ビット数のP倍のビット幅を有するシフトレジスタが含まれ、列メッセージ記憶手段には列メッセージの量子化ビット数のP倍のビット幅を有するシフトレジスタが含まれる。よって、行メッセージ記憶手段及び列メッセージ記憶手段が確実にP個の行メッセージ及び列メッセージを同時に読み書きすることができる。
尚、「量子化ビット数」とは、アナログ信号からデジタル信号への変換の際に、信号を何段階の数値で表現するかを示す値である。具体的には、量子化ビット数の値が高いほど、元の信号に忠実なデータが得られるが、データ量はその分増大する。
上述した行メッセージ記憶手段及び列メッセージ記憶手段が、夫々P個のRAMを含む態様では、前記行メッセージ記憶手段は、前記行メッセージを、前記検査行列における列方向に詰めてP列毎にとびとびに、同一の前記RAMに格納し、前記列メッセージ記憶手段は、前記列メッセージを、前記検査行列における行方向に詰めてP行毎にとびとびに、同一の前記RAMに格納するように構成してもよい。
このように構成すれば、行メッセージ記憶手段においては、行メッセージが、検査行列における列方向に詰めて格納される。具体的には、基礎行列からの置き換えによって得られた検査行列において、要素が‘0’となる部分(即ち、メッセージが値を持たない部分)については、情報が無いものと扱われて、列方向で次の要素に係る情報が詰めて格納される。これにより、行メッセージ記憶手段の記憶容量を少なくすることができる。
また、行メッセージ記憶手段においては、行メッセージが、検査行列におけるP列毎にとびとびに同一のRAMに格納される。具体的には、例えば検査行列における1列目に係る行メッセージが格納されたRAMには、1+P列、1+2P列、1+3P列…に係る行メッセージが格納される。別の言い方をすれば、構成行列における列番号が同じ行メッセージ同士は同一のRAMに格納される。このように行メッセージを格納すれば、互いに同時に読み書きする必要のあるP個の行メッセージ(これらは一の構成行列に含まれる)が常にP個別々のRAMに格納されるので、確実にP個の行メッセージを同時に読み書きすることができる。更に、上述したように、行メッセージが列方向に詰めて格納されたとしても、構成行列は各列に‘1’(即ち、情報を有する要素)が1つしかないような行列であるため、互いに同時に読み書きする必要のあるP個の行メッセージは、各RAMにおける同一のアドレスに格納されることとなる。よって、行メッセージを列方向に詰めて格納しても、格納先アドレスが、列毎にバラバラになってしまうことを防止でき、P個のRAM夫々に対し共通のアドレスにアクセスすることで同時に必要となるP個の行メッセージを読み書きすることができる。
他方で、列メッセージ記憶手段においても、上述した行メッセージ記憶手段と同様に、列メッセージが、検査行列における行方向に詰めて格納される。また、列メッセージが、P行毎にとびとびに同一のRAMに格納される。(構成行列における行番号が同じ列メッセージ同士は同一のRAMに格納される。)よって行メッセージと同様に、列メッセージ記憶手段の記憶容量を少ないものとしつつ、同時に読み書きする必要のあるP個の列メッセージを常にP個別々のRAMに格納し、さらに共通のアドレスへのアクセスで同時に必要となるP個の列メッセージを読み書きすることが可能となる。
以上説明したように、本構成に係る復号装置によれば、行メッセージ記憶手段及び列メッセージ記憶手段の記憶容量を低減させつつ、各メッセージを好適に格納することが可能となり、より好適なデータの復号が可能である。尚、行メッセージ記憶手段及び列メッセージ記憶手段の、いずれか一方において上述したような処理を行うようにしても、その一方における効果は得られる。
上述した行メッセージ記憶手段及び列メッセージ記憶手段がシフトレジスタを含む態様では、前記行メッセージ記憶手段は、前記行メッセージを、前記検査行列における列方向に詰めてP列毎にとびとびに、前記シフトレジスタにおける同一のビット位置に格納し、前記列メッセージ記憶手段は、前記列メッセージを、前記検査行列における行方向に詰めてP行毎にとびとびに、前記シフトレジスタにおける同一のビット位置に格納する。
このように構成すれば、行メッセージ記憶手段においては、行メッセージが、検査行列における列方向に詰めて格納される。具体的には、基礎行列からの置き換えによって得られた検査行列において、要素が‘0’となる部分(即ち、メッセージが値を持たない部分)については、情報が無いものと扱われて、列方向で次の要素に係る情報が詰めて格納される。これにより、行メッセージ記憶手段の記憶容量を少なくすることができる。
また、行メッセージ記憶手段においては、行メッセージが、検査行列におけるP列毎にとびとびにシフトレジスタの同一ビット位置に格納される。具体的には、例えば1列目に係る行メッセージが格納されたビット位置には、1+P列、1+2P列、1+3P列…に係る行メッセージが格納される。別の言い方をすれば、構成行列における列番号が同じ行メッセージ同士はシフトレジスタの同一ビット位置に格納される。このように行メッセージを格納すれば、互いに同時に読み書きする必要のあるP個の行メッセージ(これらは一の構成行列に含まれる)が常に同一シフトレジスタ中の別々のビット位置に格納される。更に上述したように、行メッセージが列方向に詰めて格納されたとしても、構成行列は各列に‘1’(即ち、情報を有する要素)が1つしかないような行列であるため、同一の構成行列に含まれるP個のメッセージは、シフトレジスタにおける同一の深さ位置に格納されることとなる。よって、行メッセージを列方向に詰めて格納しても、格納先シフトレジスタ深さ位置が、列毎にバラバラになってしまうことを防止でき、一つのシフトレジスタに対しアクセスすることで同時に必要となるP個のメッセージを読み書きすることができる。
他方で、列メッセージ記憶手段においても、上述した行メッセージ記憶手段と同様に、列メッセージが、検査行列における行方向に詰めて格納される。また、列メッセージが、P行毎にとびとびにシフトレジスタの同一のビット位置に格納される。(構成行列における行番号が同じ列メッセージ同士はシフトレジスタの同一ビット位置に格納される。)よって行メッセージ記憶手段と同様に列メッセージ記憶手段の記憶容量を少ないものとしつつ、一つのシフトレジスタへのアクセスで同時に必要となるP個の列メッセージを読み書きすることが可能となる。
以上説明したように、本構成に係る復号装置によれば、行メッセージ記憶手段及び列メッセージ記憶手段の記憶容量を低減させつつ、各メッセージを好適に格納することが可能となり、より好適なデータの復号が可能である。尚、行メッセージ記憶手段及び列メッセージ記憶手段の、いずれか一方において上述したような処理を行うようにしても、その一方における効果は得られる。
上述した、行メッセージ及び列メッセージを行方向又は列方向に詰めて、とびとびに格納する態様では、前記基礎行列におけるゼロ行列以外で置き換えられる要素を、第i(但し、iは1からmまでの整数)行目内で第1の順序に並べ、前記第1の順序に並べられた要素からなる要素群を、第2の順序で格納する行メッセージ格納先メモリ番号記憶手段と、前記基礎行列におけるゼロ行列以外で置き換えられる要素を、第j(但し、jは1からnまでの整数)列目内で第3の順序に並べ、前記第3の順序に並べられた要素からなる要素群を、第4の順序で格納する列メッセージ格納先メモリ番号記憶手段と、前記基礎行列におけるゼロ行列以外で置き換えられる要素に対して、前記第3の順序及び前記第4の順序に基づいて列処理番号を付与し、前記列処理番号を、前記第1の順序及び前記第2の順序に従って格納する行メッセージ格納先アドレス記憶手段と、前記基礎行列におけるゼロ行列以外で置き換えられる要素に対して、前記第1の順序及び前記第2の順序に基づいて行処理番号を付与し、前記行処理番号を、前記第3の順序及び前記第4の順序に従って格納する列メッセージ格納先アドレス記憶手段とを更に備えるように構成してもよい。
このように構成すれば、行メッセージ格納先メモリ番号記憶手段によって、基礎行列におけるゼロ行列以外で置き換えられる要素が、先ず、第i行目内で第1の順序に並べられる。(第1の順序はすべての行において共通でもよいし、各行で異なる順序としてもよい)尚、この際、ゼロ行列で置き換えられる要素を考えていないのは、メッセージが対応する値を有しないため、上述したように詰めて格納されるからである。
続いて、第1の順序で並べ替えられた要素は各行毎に1つの要素群とされる。そして要素群は、第2の順序で行メッセージ格納先メモリ番号記憶手段に格納される。尚、ここでの「第1の順序」とは、各行内において行処理に係る列メッセージを読み出す順序でありなおかつ更新された行メッセージを書き込む順序でもある。「第2の順序」とは、どのような行の順番で各行の行処理を行うかを表す。第1の順序、第2の順序共に予め所定の順序として設定されている。
また他方で、基礎行列におけるゼロ行列以外で置き換えられる要素が、先ず、第j列目内で第3の順序に並べ替えられる(第3の順序はすべての列において共通でもよいし、各列で異なる順序としてもよい)。
続いて、第3の順序で並べ替えられた要素は各列毎に1つの要素群とされる。そして要素群は、第4の順序で列メッセージ格納先メモリ番号記憶手段に格納される。尚、ここでの「第3の順序」とは各列内において列処理に係る行メッセージを読み出す順序でありなおかつ更新された列メッセージを書き込む順序でもある。「第4の順序」とは、どのような列の順序で各列の列処理を行うかを表す。第3の順序、第4の順序共に予め所定の順序として設定されている。
ここで、行メッセージは行処理装置から行毎に出力されるが、格納先の行メッセージ記憶装置にはP‘列’毎にとびとびに格納しなければならない。他方で、列メッセージは列処理装置から列毎に出力されるが、格納先の列メッセージ記憶装置にはP‘行’毎にとびとびに格納しなければならない。したがって、行メッセージ及び列メッセージを行メッセージ記憶装置及び列メッセージ記憶装置に含まれるメモリ(例えばP個のRAM)の内のどれに格納すればよいかという問題が生じる。
これに対して上述の行メッセージ格納先メモリ番号記憶手段に格納された要素は、行処理装置により更新され同時にP個ずつ出力された行メッセージを行メッセージ記憶手段に書き込む際の、格納先メモリを決める情報となっており、P個の行メッセージをこの情報に従って並び替えることで適切な格納先に割り振られる。具体的には、例えば基本構成行列が単位行列であり、基礎行列の各要素の値と、巡回シフト行列の巡回シフト量とが対応するような変換で検査行列が得られる場合、行メッセージ格納先メモリ番号記憶手段に格納された値分だけ、P個の行メッセージを巡回させるように並べ替えて行メッセージ記憶手段に送ればよい。よって、より容易に行メッセージ格納先メモリを選択することができる。
他方で、上述の列メッセージ格納先メモリ番号記憶手段に格納された要素は、列処理装置により更新され同時にP個ずつ出力された列メッセージを列メッセージ記憶手段に書き込む際の、格納先メモリを決める情報となっており、P個の列メッセージをこの情報に従って並び替えることで適切な格納先に割り振られる。具体的には、例えば基本構成行列が単位行列であり、基礎行列の各要素の値と、巡回シフト行列の巡回シフト量とが対応するような変換で検査行列が得られる場合、列メッセージ格納先メモリ番号記憶手段に格納された値分だけ、P個の列メッセージを(行メッセージの場合とは逆向きに)巡回させるように並べ替えて列メッセージ記憶手段に送ればよい。よって、上述した行メモリ番号記憶手段の場合と同様に、容易に列メッセージ格納先メモリを選択することができる。
本態様では更に、基礎行列におけるゼロ行列以外で置き換えられる要素は、第3の順序及び第4の順序に基づいて列処理番号が付与され、第1の順序及び第2の順序に従って行メッセージ格納先アドレス記憶手段に格納される。即ち、ゼロ行列以外で置き換えられる要素は、先ず第3の順序及び第4の順序(即ち、列処理に係る順序)に基づいて、列処理番号が付与される。続いて、付与された列処理番号は、第1の順序及び第2の順序(即ち、行処理に係る順序)に従って、行メッセージ格納先アドレス記憶手段に格納される。
また他方で、検査行列におけるゼロ行列以外で置き換えられる要素は、第1の順序及び第2の順序に基づいて行処理番号が付与され、第3の順序及び第4の順序に従って列メッセージ格納先アドレス記憶手段に格納される。即ち、ゼロ行列以外で置き換えられる要素は、先ず第1の順序及び第2の順序(即ち、行処理に係る順序)に基づいて、行処理番号が付与される。続いて、付与された行処理番号は、第3の順序及び第4の順序(即ち、列処理に係る順序)に従って、列メッセージ格納先アドレス記憶手段に格納される。
行・列処理の後でメッセージを記憶装置等に書き込む際に、記憶されたメッセージが次回に読み込まれる順番を書き込み先アドレスとして書き込みを行うことにより、メッセージを読み込む際の処理を軽減することができる。即ち、メッセージを読み込む際には、アドレスの昇順で読み込めば済む。但し、行処理と列処理でメッセージを処理する順番が異なるため、書き込み先アドレスを選択する処理は、通常複雑なものとなってしまう。
これに対しても本発明は特に、行メッセージ格納先アドレス記憶手段に格納された列処理番号は、行処理装置によって更新され同時にP個ずつ出力された行メッセージを行メッセージ記憶手段に書き込む際の格納先アドレス情報となっており、このアドレスに従って書き込めば、次回の列処理において読み出されるべき順番どおりにアドレス0から順に書き込まれることになる。これにより、より容易に行メッセージを格納することが可能となる。
他方で列メッセージ格納先アドレス記憶手段に格納された行処理番号は、上述した行メッセージ格納先アドレス記憶手段の場合と同様に、列処理装置によって更新され同時にP個ずつ出力された列メッセージを列メッセージ記憶手段に書き込む際の格納先アドレス情報となっており、このアドレスに従って書き込めば、次回の行処理において読み出されるべき順番どおりにアドレス0から順に書き込まれることになる。これにより、より容易に列メッセージを格納することが可能となる。
以上説明したように、本構成に係る復号装置によれば、行処理装置及び列処理装置により更新され出力された行メッセージ及び列メッセージを、より好適に行メッセージ記憶手段及び列メッセージ記憶手段に格納することが可能である。
上述した行メッセージ格納先メモリ番号記憶手段及び列メッセージ格納先メモリ番号記憶手段を備える態様では、前記第1の順序、前記第2の順序、前記第3の順序及び前記第4の順序は、いずれも昇順又はいずれも降順であるように構成してもよい。
このように構成すれば、第1の順序、第2の順序、第3の順序及び第4の順序がいずれも昇順又は降順に統一されているため、行メッセージ格納先メモリ番号記憶手段、列メッセージ格納先メモリ番号記憶手段、行メッセージ格納先アドレス記憶手段及び列メッセージ格納先アドレス記憶手段における処理を比較的簡単なものとすることができる。よって、装置の構成や制御方法を簡易なものとしつつ、効率的な復号を行うことが可能である。尚、第1の順序、第2の順序、第3の順序及び第4の順序のいずれかが、昇順又は降順とされる場合であっても、処理を簡単化するという効果は少なからず得られる。
或いは、上述した行メッセージ格納先メモリ番号記憶手段、列メッセージ格納先メモリ番号記憶手段、行メッセージ格納先アドレス記憶手段及び列メッセージ格納先アドレス記憶手段を備える態様では、前記行処理手段から同時にP個ずつ出力される前記行メッセージに対し、前記行メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフト又は並べ替えを行う第1巡回シフト・並べ替え手段と、前記行メッセージ格納先アドレス記憶手段に格納された前記列処理番号に従って、前記行メッセージを前記行メッセージ記憶手段に格納する第1格納手段と、前記列処理手段から同時にP個ずつ出力される列メッセージに対し、前記列メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフト又は並べ替えを行う第2巡回シフト手段・並べ替え手段と、前記列メッセージ格納先アドレス記憶手段に格納された前記行処理番号に従って、前記列メッセージを前記列メッセージ記憶手段に格納する第2格納手段とを更に備えるように構成してもよい。
このように構成すれば、第1巡回シフト・並べ替え手段において、行メッセージは、行メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフトされる、又は並べ替えられる。そして、巡回シフト又は並べ替えられた行メッセージは、第1格納手段によって、行メッセージ格納先アドレス記憶手段に格納された列処理番号に従って、行メッセージ記憶手段に格納される。これにより、行メッセージは、行メッセージ記憶装置に含まれる適切なメモリの、次回の読み出しが容易となるような適切なアドレス位置に格納される。即ち、行メッセージをより好適に行処理結果記憶手段に格納することが可能となる。
また、第2巡回シフト・並べ替え手段において、列メッセージは、列メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフトされる、又は並べ替えられる。そして、巡回シフト又は並べ替えられた列メッセージは、第2格納手段によって、列メッセージ格納先アドレス記憶手段に格納された行処理番号に従って、列メッセージ記憶手段に格納される。これにより、列メッセージは、列メッセージ記憶装置に含まれる適切なメモリの、次回の読み出しが容易となるような適切なアドレス位置に格納される。即ち、列メッセージをより好適に行処理結果記憶手段に格納することが可能となる。
以上説明したように、本構成に係る復号装置によれば、行処理結果及び列処理結果によって得られた行メッセージ及び列メッセージを、より好適且つ確実に、行処理結果記憶手段及び列処理結果記憶手段に格納することが可能である。
本発明の第1の復号方法は上記課題を解決するために、低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号方法であって、前記検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない1種類の基本構成行列を0から(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記巡回シフト行列の前記巡回シフト量とが対応するように置き換えることで生成されている。
本発明の第1の復号方法によれば、基礎行列の要素を1種類の基本構成行列を基にした上述のような特徴を持つP行P列の構成行列に置き換えることで得られた検査行列を用いて復号が行われるため、上述した本発明の復号装置の場合と同様に、P個の枝に対応するメッセージを同時に求めるLDPC復号を、簡単かつ効率的に実現することが可能である。
尚、本発明の第1の復号方法においても、上述した本発明の第1の復号装置における各種態様と同様の各種態様を採ることが可能である。
本発明の第2の復号方法は上記課題を解決するために、低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号方法であって、前記検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない2種類以上の基本構成行列、互いに同じ位置に‘1’が存在しない複数の基本構成行列の和行列、のいずれかである構成行列で、前記基礎行列の各要素の値と前記2種類以上の基本構成行列とが対応するように置き換えることで生成されている。
本発明の第2の復号方法によれば、基礎行列の要素を上述のような特徴を持つ2種類以上の基本構成行列を含む構成行列に置き換えることで得られた検査行列を用いて復号が行われるため、上述した本発明の復号装置の場合と同様に、P個の枝に対応するメッセージを同時に求めるLDPC復号を、簡単かつ効率的に実現することが可能である。
尚、本発明の第2の復号方法においても、上述した本発明の第2の復号装置における各種態様と同様の各種態様を採ることが可能である。
本発明の作用及び他の利得は後に説明する実施するための最良の形態から明らかにされる。
以下では、本発明の実施形態について図を参照しつつ説明する。
先ず、本発明の復号装置によって復号されるデータを符号化するLDPC符号について、図1から図4を参照して説明する。ここに図1は、LDPC符号を規定する検査行列Hの一例を示す図であり、図2は、検査行列Hに対応して生成されるタナーグラフの一例を示す図である。
図1及び図2において、LDPC符号によって符号化された符号語データは、検査行列と1対1対応したタナーグラフと呼ばれる二部グラフ上においてメッセージと呼ばれる情報が繰り返しやり取りされることで復号される。尚、検査行列Hは、典型的には非常に多い行数及び列数(例えば、数千から数万)によって構成され、また要素‘0’に比べて要素‘1’が極めて少ない行列であるが、図1及び以降の図については、説明の便宜上、比較的行数及び列数が少なく、また要素‘1’の数が比較的多い行列として図示してある。
タナーグラフは検査行列Hの行数Mに等しい数のチェックノードと検査行列Hの列数Nに等しい数の変数ノードを含む。図1及び図2の例では検査行列Hの行数が7、列数が16なのでタナーグラフには7個のチェックノードと16個の変数ノードが含まれる。図2におけるチェックノードc0〜c6は、検査行列Hの第0行目〜第6行目に夫々対応している。(本発明の説明中では、行列の行・列番号、装置番号、メモリのアドレス等は1ではなく0から始まるものとしている。)また変数ノードv0〜v15は、検査行列Hの第0列目〜第15列目に夫々対応している。チェックノードと変数ノードの間を結ぶ線を枝と呼び、これは検査行列H中の要素‘1’に対応している。検査行列Hの第i行第j列の要素が‘1’の場合、チェックノードciと変数ノードvjが枝で結ばれている。したがって、枝は検査行列H中の要素‘1’と同じ数だけ存在する。具体的には、図1に示す検査行列Hの0行0列目の要素は‘1’であるので、チェックノードc0及び変数ノードv0間には枝が存在する。これに対し、検査行列Hの0行1列目の要素は‘0’であるので、チェックノードc0及び変数ノードv1間には枝が存在しない。
チェックノードから変数ノードへ枝に沿って送られるのは対数外部値比αと呼ばれる情報で、変数ノードからチェックノードへ枝に沿って送られるのは対数事前値比βと呼ばれる情報である。対数外部値比αと対数事前値比βを合わせてメッセージと呼ぶ。以降では、対数外部値比α及び対数事前値比βと、メッセージという表現を適宜使い分けながら説明する。また対数外部値比αを「α」、対数事前値比βを「β」と省略して呼ぶこともある。対数外部値比αと対数事前値比βは検査行列Hと同じ形の行列として表され、検査行列において要素が‘1’である部分のみ値を持つ。図1で示した検査行列の場合、図3及び図4に示すように対数外部値比αと対数事前値比βは*印の部分のみ値を持つ。チェックノードciから変数ノードvjへ送られる対数外部値比αi,jはαを行列で表した場合第i行第j列の要素であり、式(1)によって求められる。
Figure 2009260692
変数ノードvjからチェックノードciへ送られる対数事前値比βi,jはβを行列で表した場合第i行第j列の要素であり、式(2)によって求められる。
Figure 2009260692
ここで関数fはGallager関数でありf(x)=ln[{exp(x)+1}/{exp(x)−1}]、A(i)は検査行列の第i行目において要素が‘1’である列インデックス集合、B(j)は検査行列の第j列目において要素が‘1’である行インデックス集合、A(i)\jはA(i)からjを除いた集合を表し、λはj番目の受信値yと通信路モデルによって決まる受信LLR(Log Likelihood Ratio:対数尤度比)であり、BPSK変調+AWGN通信路の場合λ=2y/σ(σはノイズの分散)である。
式(1)及び式(2)を見ると、αの計算にはβが用いられ、βの計算にはαが用いられている。LDPC符号の復号においてはαの計算とβの計算とが交互に繰り返し行われる。すなわちβを用いて計算(更新)されたαを用いてβを更新し、さらに更新されたβを用いてαを更新する・・・という処理を繰り返す。
図3は、行処理について対数外部値比及び対数事前値比を用いて示す概念図であり、図4は、列処理について対数外部値比及び対数事前値比を用いて示す概念図である。
図3に示すように、αの更新作業を行列上で考えると、βの値を行毎に用いてαの値を行毎に更新するので、αを更新する作業を行処理と呼ぶ。行処理はすべての行に対して行われる。また、αは行処理により更新されるメッセージであるので、以降の説明において行メッセージαもしくは行メッセージとも表現する。
図4に示すように、対数事前値比βの更新作業を行列上で考えると、αの値を列毎に用いてβの値を列毎に更新するので、βを更新する作業を列処理と呼ぶ。列処理はすべての列に対して行われる。また、βは列処理により更新されるメッセージであるので、以降の説明において列メッセージβもしくは列メッセージとも表現する。
行処理による行メッセージαの更新と列処理による列メッセージβの更新とを繰り返した後、下記の式(3)で表される推定シンボル系列
Figure 2009260692
は、下記の式(4)に従って求められる。
Figure 2009260692
ここで、推定シンボル系列が下記の式(5)のような検査方程式
Figure 2009260692
を満足する場合、推定シンボル系列を復号結果として出力し、検査方程式を満足しない場合はαとβの更新をさらに繰り返す。一般にはαとβの更新を反復する最大回数を決めておき、最大回数の反復を行っても検査方程式を満足しない場合は、例えば誤り検出信号と共に最終的な推定シンボル系列をさらに後段の別の誤り訂正復号器(例えばリードソロモン復号器)に渡す、といった処理が行われる。以上がLDPC符号語の一般的な復号の説明である。
次に、本実施形態に係る復号装置の構成及び動作について説明する。尚、以下では本実施形態に係る復号方法を、本実施形態に係る復号装置の動作と併せて説明する。
<第1実施形態>
先ず、第1実施形態に係る復号装置の構成について、図5を参照して説明する。ここに図5は、第1実施形態に係る復号装置の構成を示すブロック図である。また図6は、行処理装置の構成を示すブロック図であり、図7は、列処理装置の構成を示すブロック図である。
図5において、第1実施形態に係る復号装置は、行処理装置群101と、列処理装置群102と、行メッセージ記憶装置103と、列メッセージ記憶装置104と、受信LLR記憶装置105と、行メッセージ格納先メモリ番号ROM106と、列メッセージ格納先メモリ番号ROM107と、行メッセージ格納先アドレスROM108と、列メッセージ格納先アドレスROM109と、巡回シフト回路110及び111と、推定符号語計算部112と、検査方程式チェック部113と、制御部114とを備えて構成されている。
図6において、行処理装置群101は、本発明の「行処理手段」の一例であり、例えば並列動作可能なP個の行処理装置200を含んで構成されている。行処理装置200は、絶対値計算部201と、f関数計算部202及び207と、積算器203と、イネーブル付きレジスタ204及び210と、遅延素子205及び211と、減算器206と、符号(±)計算部208と、XOR計算部209及び212とを備えてなる。
f関数計算部202及び207は、例えばルックアップテーブルを用いて実現する。遅延素子205及び211は、検査行列Hの行重み(1行内に存在する‘1’の数)と同じクロック数だけ入力データを遅延させる素子であり、例えば行重みと同じ段数のシフトレジスタを用いて実現する。
以下、行処理装置200の動作について説明する。行処理装置200は、上述した式(1)の計算を行う装置であり、列メッセージβの1行分(ここでは第i行とする)の要素βi,j’j’∈A(i)が1クロック毎に順に入力される。入力されたβi,j’j’∈A(i)は、まず絶対値計算部201と符号計算部208に送られる。絶対値計算部201から出力された|βi,j’ |j’∈A(i)は、f関数計算部202に入力され、f(|βi,j’ |)j’∈A(i)となり、積算器203で1行分積算され、下記の式(6)で表される値となる。
Figure 2009260692
f関数計算部202の出力は遅延素子205にも送られ、行重みと同じクロック数だけ遅延された(積算器203の積算が終わるのを待った)後、減算器206に送られる。減算器206では1行分すべての和である式(6)で表される値から、1つの値f(|βi,j |)j∈A(i)が減算された、下記の式(7)で表される値
Figure 2009260692
がすべてのj∈A(i)に関して順に出力される。
1行分すべての和である式(6)で表される値は、すべてのj∈A(i)に関して減算を行っている間変わらないようにイネーブル付きレジスタ204を通して減算器206に入力される。(イネーブル付きレジスタ204は1行分の積算が終わった時点でのみイネーブルされる。)減算器206から順に出力される式(7)で表される値はf関数計算部207に送られ、下記の式(8)で表される値
Figure 2009260692
となり、式(1)の絶対値部分が得られたことになる。
次に、符号部分の計算を説明する。符号計算部208は、入力の符号がマイナスの場合“1”を出力し、入力の符号がプラスの場合“0”を出力する。入力されたβi,j’j’∈A(i)の正負を表す1、0の情報は、XOR計算部209に送られる。XOR計算部209は、入力の一つが自身の出力となっており、1行分のβi,j’j’∈A(i)の符号の正負を表す1、0の情報を用いたXOR演算を行い、下記の式(9)で表される値
Figure 2009260692
を計算する。この結果は行内で負の要素が奇数個である場合は“1”となり、偶数個である場合は“0”となる。符号計算部208の出力は遅延素子211にも送られ、行重みと同じクロック数だけ遅延された(XOR計算部209の計算が終わるのを待った)後、XOR計算部212に送られ、先ほどのXOR計算部209の出力である数式(9)で表される値と再びXOR計算が行われて、下記の式(10)で表される値
Figure 2009260692
がすべてのj∈A(i)に関して順に出力される。イネーブル付きレジスタ210は、上述の絶対値計算の場合と同様に、式(9)で表される値がすべてのj∈A(i)に関してXOR計算を行っている間、変わらないようにするためのものである。以上が行処理装置200の動作についての説明である。
図5に戻り、行処理装置群101は、例えば並列動作可能なP個の上述した行処理装置200を含んでいるので同時にP個ずつの列メッセージを受け取り、行メッセージを更新し、更新した行メッセージを同時にP個ずつ出力する。言い換えれば、P行分の行処理を並列に行う。
図7において、列処理装置群102は、本発明の「列処理手段」の一例であり、例えば並列動作可能なP個の列処理装置300を含んで構成されている。列処理装置300は、積算器301と、イネーブル付きレジスタ302と、遅延素子303と、加減算器304とを備えてなる。
遅延素子303は検査行列Hの列重み(1列内に存在する‘1’の数)と同じクロック数だけ入力データを遅延させる素子で、例えば列重みと同じ段数のシフトレジスタを用いて実現する。以下、列処理装置300の動作について説明する。
列処理装置300は上述した式(2)の計算を行う装置であり、行メッセージαの1列分(ここでは第j列とする)の要素αi’,ji’∈B(j)が1クロック毎に順に入力される。入力されたαi’,ji’∈B(j)は、積算器301で積算され、下記の式(11)で表される値となる。
Figure 2009260692
αi’,ji’∈B(j)は遅延素子303にも送られ、列重みと同じクロック数だけ遅延された(積算器301の積算が終わるのを待った)後、加減算器304に送られる。加減算器304には第j列目に対応した受信LLRλjと先ほどの積算器301からの式(11)で表される値と遅延素子303で遅延されたαi,ji∈B(j)が入力され、下記の式(12)
Figure 2009260692
が計算される。1列分すべての和である式(11)で表される値は、すべてのi∈A(j)に関して減算を行っている間、変わらないようにイネーブル付きレジスタ302を通して加減算器304に入力される。(イネーブル付きレジスタ302は1列分の積算が終わった時点でのみイネーブルされる。)以上が列処理装置300の動作についての説明である。
再び図5に戻り、列処理装置群102は、例えば並列動作可能なP個の上述した列処理装置300を含んでいるので、同時にP個ずつの行メッセージを受け取り、列メッセージを更新し、更新した列メッセージを同時にP個ずつ出力する。言い換えれば、P列分の列処理を並列に行う。
行メッセージ記憶装置103は、例えばP個のRAMやシフトレジスタ等を含んで構成されており、P個のデータを同時に読み出し又は書き込むことが可能とされている。行メッセージ記憶装置103は、本発明の「行メッセージ記憶手段」の一例であり、行処理装置群101から同時にP個ずつ出力される行メッセージを一時的に格納し、列処理装置群102に同時にP個ずつ出力する。
列メッセージ記憶装置104は、例えばP個のRAMやシフトレジスタ等を含んで構成されており、P個のデータを同時に読み出し又は書き込むことが可能とされている。列メッセージ記憶装置104は、本発明の「列メッセージ記憶手段」の一例であり、列処理装置軍102から同時にP個ずつ出力される列メッセージを一時的に格納し、行処理装置群101に同時にP個ずつ出力する。
受信LLR記憶装置105は、例えばP個のRAMやシフトレジスタ等を含んで構成されており、P個のデータを同時に読み出すことが可能とされている。受信LLR記憶装置105は、列処理装置群102及び推定符号語計算部112に対して、夫々同時にP個ずつの受信LLRを出力する。
行メッセージ格納先メモリ番号ROM106は、本発明の「行メッセージ格納先メモリ番号記憶手段」の一例であり、後述するように、基礎行列のゼロ行列以外で置き換えられる要素を所定の順番で記憶させておく。
列メッセージ格納先メモリ番号ROM107は、本発明の「列メッセージ格納先メモリ番号記憶手段」の一例であり、後述するように、基礎行列のゼロ行列以外で置き換えられる要素を所定の順番で記憶させておく。
行メッセージ格納先アドレスROM108は、本発明の「行メッセージ格納先アドレス記憶手段」の一例であり、後述するように、基礎行列のゼロ行列以外で置き換えられる要素に所定の順番で番号を付与し、付与した番号を所定の順番で記憶させておく。
列メッセージ格納先アドレスROM109は、本発明の「列メッセージ格納先アドレス記憶手段」の一例であり、後述するように、基礎行列のゼロ行列以外で置き換えられる要素に所定の順番で番号を付与し、付与した番号を所定の順番で記憶させておく。
巡回シフト回路110及び111は、本発明の「第1巡回シフト・並べ替え手段」「第2巡回シフト手段・並べ替え手段」の一例であり、入力されたP個のメッセージを巡回シフトさせて出力する。尚、巡回シフト回路110及び111は、マルチプレクサを利用した並べ替え回路等によって置き換えることも可能である。
推定符号語計算部112は、例えば演算回路等を含んで構成されており、入力される行メッセージ及び受信LLRから推定符号語を計算する。式(3)の計算を行う推定符号語の計算は、式(2)の計算を行う列処理と非常に似ているので、推定符号語計算部112と列処理装置群102を一つにまとめてもよい。
検査方程式チェック部113は、例えば演算回路等を含んで構成されており、推定符号語計算部112から出力される推定符号語が、検査方程式を満足するか否かを判定する。また、判定結果を制御部114に出力する。
制御部114は、例えば演算回路等を含んで構成されており、検査方程式チェック部113における判定結果を受けて、装置の反復処理を終了させて、推定符号語を復号結果として出力するように制御する。尚、制御部114は、上述した制御に加えて、装置全体の様々な制御を行う。
次に、第1実施形態に係る復号装置における復号の際に用いられる検査行列Hについて、図8及び図9を参照して説明する。ここに図8は、検査行列Hの基礎となる基礎行列Hbaseの一例を示す行列図であり、図9は、基礎行列Hbaseから変換された検査行列Hの一例を示す行列図である。尚、検査行列Hは、要素‘0’及び要素‘1’がマトリクス状に並ぶ行列であるが、図9では、ゼロ行列として置き換えられた部分に大きく‘0’と記載し、それ以外の部分で要素が‘0’となる部分は空白として図示してある。これは以降の図においても同様とする。
図8において、基礎行列Hbaseは、負の要素‘−1’と、負でない要素‘0’〜‘4’との、計6種類の要素を含んで構成されている。ここで、本発明の「基礎行列」の一例である基礎行列Hbaseは、各要素をP行P列(ここでは、P=5)のゼロ行列、又は基本構成行列である単位行列を0〜(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列、のいずれかである構成行列に置き換えることで、本発明の「検査行列」の一例である検査行列Hに変換される。尚、基本構成行列は単位行列に限らず、各行各列に夫々‘1’が一つしか存在しないP行P列の行列に代えることも可能である。その場合については第2実施形態で説明する。
図9において、基礎行列Hbaseは、負の要素‘−1’がP行P列のゼロ行列に置き換えられている。また、負でない要素‘0’〜‘4’は、各要素の値が巡回シフト量と対応するように、単位行列の巡回シフト行列として置き換えられている。即ち、要素‘0’は巡回シフトされない単位行列そのものとして置き換えられ、要素‘1’は、単位行列を右方向に1列シフトさせた行列に置き換えられる。それ以外の要素も同様に、単位行列を右方向に2列〜4列シフトさせた行列に置き換えられる。単位行列を右方向に5列シフトさせた行列は、元の単位行列に戻る。よって、基礎行列Hbaseには5以上の要素は含まれない。
続いて、第1実施形態に係る復号装置の動作について、図5に加えて、図10及び図11を参照して説明する。ここに図10は、第1実施形態に係る復号装置の初期化段階と反復0回目の動作について示すフローチャートであり、図11は、第1実施形態に係る復号装置の反復1回目以降の動作について示すフローチャートである。尚、以下では図8及び図9で示した検査行列Hを用いて復号する場合について説明する。
(初期化)
図10において、第1実施形態に係る復号装置の動作が開始されると、先ず制御部114が反復回数Lに‘0’を代入し、L=0とする(ステップS1)。続いて、図5には図示しない前段の復調装置から送られてくる受信LLR系列λを受信LLR格納用メモリ105に格納する(ステップS2)。受信LLR系列λは、N個のデータλ〜λN−1からなる。
ここで‘N’は符号長に等しく、検査行列Hの列数でもある。受信LLR格納用メモリ105は、同時にP個ずつのデータを読み出し可能となっており、たとえばP個のRAMを含んで構成される。P個のRAMをλRAM0〜λRAM(P−1)とすると、検査行列Hの第0列〜第(P−1)列に対応する受信LLRλ〜λP−1を夫々λRAM0〜λRAM(P−1)のアドレス0に格納し、第P列〜第(2P−1)列に対応する受信LLRλ〜λ2P−1を夫々λRAM0〜λRAM(P−1)のアドレス1に格納し、第2P列〜第(3P−1)列に対応する受信LLRλ2P〜λ3P−1を夫々λRAM0〜λRAM(P−1)のアドレス2に格納し、・・・のように格納する。受信LLRλの格納アドレスは後述する「第4の順序」に対応したものである。
図10に戻り、更に行メッセージαと列メッセージβをゼロに初期化する(ステップS3)。但し、ここでは必ずしも行メッセージ記憶装置103と列メッセージ刻装置104の内容をゼロに書き換える必要はなく、直後の行・列処理で両記憶装置の値を読み出さなければそれで構わない。
以上の動作が初期化段階の動作であり、以降は実際に列処理及び行処理が繰り返し行われることで、データが復号される。
(反復0回目の処理)
復号動作時には、先ず受信LLR記憶装置105から同時にP個ずつ読み出される受信LLRλ、及び行メッセージ記憶装置103から同時にP個ずつ読み出される行メッセージαが、列処理装置群102に送られる。列処理装置群102は、受信LLRλ及び行メッセージαを用いて列処理を行う(ステップS4)。尚、L=0回目では行メッセージαはゼロに初期化されているため、ここで行メッセージαを読み出す意味は無いが、L=1回目以降の処理において同じ動作で済むように、ここでは敢えて行メッセージαを読み出すようにしている。列処理が行われると、列処理装置群102からは更新された列メッセージβが同時にP個ずつ出力される。また、上述した列処理と並行して、受信LLRλ及び行メッセージαは、推定符号語計算部112にも送られている。推定符号語計算部112は、受信LLRλ及び行メッセージαから、反復0回目における推定符号語を計算する。
列処理によって出力された列メッセージβは、巡回シフト回路111によって列メッセージ格納先メモリ番号ROM107の内容に従った巡回シフト量だけ巡回シフトされる。列メッセージ記憶装置104は、巡回シフトされた列メッセージβを列メッセージ格納先アドレスROM109の内容に従ったアドレスに格納する(ステップS5)。尚、上述した受信LLRλ及び行メッセージαがメモリから読み出される順番、巡回シフト回路111の動作、列メッセージ格納先メモリ番号ROM107の内容、列メッセージ格納先アドレスROM109の内容などの詳細は、L=1回目以降の反復処理の説明の際に述べる。
検査方程式チェック部113は、推定符号語計算部112において算出された推定符号語が、検査方程式を満足するか否かを判定する(ステップS6)。ここで、推定符号語が検査方程式を満足すると判定されると(ステップS6:YES)、制御部114から反復を終える指示が出て、このときの推定符号語が装置から出力される(ステップS7)。即ち、データの復号は終了する。他方で、推定符号語が検査方程式を満足しないと判定されると(ステップS6:NO)、装置は1回目の反復処理を開始する。
(反復1回目以降の処理)
図11において、反復処理が開始されると、先ず制御部114が反復回数LにL+1を代入する(ステップS11)。即ち、反復回数Lは、インクリメントされる。続いて、反復回数Lが最大反復回数Lmaxを越えているか否かを判定する(ステップS12)。ここで、反復回数Lが最大反復回数Lmaxを越えている場合(ステップS12:NO)、装置は1回前の反復時(即ち、Lが1少ない時点)の推定符号語を復号結果として出力して処理を終了する(ステップS18)。このとき1回前の反復時の推定符号語を出力せずに検査方程式を満足しないことを示す制御信号を出力し誤り検出としてもよい。他方で、反復回数Lが最大反復回数Lmaxを越えていない場合(ステップS12:YES)、1回前の列処理によって更新された列メッセージβを用いて、行処理(行メッセージαの更新)が行われる(ステップS13)。行処理の際には、先ず列メッセージβが列メッセージ記憶装置104から同時にP個ずつ読み出され、行処理装置群101に送られる。
ここで、列メッセージβが列メッセージ記憶装置104にどのように格納されているかについて、図12及び図13を参照して説明する。ここに図12は、列メッセージβの一例を示す行列図であり、図13は、列メッセージβの各要素の格納について示す概念図である。尚、図12では、βを構成する各要素を、適宜省略して図示してある。また、上述したように、列メッセージ記憶装置104はP個のデータを同時に読み出し、又は書き込み可能なメモリであればよいが、ここではP個(即ち、5個)のRAMによって構成されている場合を例にとり説明する。図13では、列メッセージ記憶装置104に含まれる5個のRAMを、夫々βRAM0〜βRAM4として図示してある。
図12に示すように、列メッセージβは検査行列H(図9参照)と対応した形をしており、検査行列H中で‘1’となっているところに値(βi,j,x)を持っている。βi,j,xの3つの添え字(i,j,x)は、iが行ブロック番号、jが列ブロック番号、xがブロック(構成行列)内での行番号を表している。尚、行ブロックとは、図中における横方向の実線で区切られたブロックを指しており、上から順に行ブロック0、行ブロック1、行ブロック2、・・・と並んでいる。列ブロックは、図中における縦方向の実線で区切られたブロックを指しており、左から順に列ブロック0、列ブロック1、列ブロック2、・・・と並んでいる。ブロック内での行番号は、図中における上にあるものから順に0、1、2、3、4となっている。同一ブロック内のβi,j,xの添え字i及びjは全て同じになる。ここで、行ブロック番号(即ち、添え字i)が0であるということは、P行P列の構成行列で置き換える前の基礎行列Hbase(図8参照)において、第0行目の要素であった、という意味である。これは、列ブロック番号についても同様である。
図12及び図13において、列メッセージβの各要素βi,j,xは、列メッセージ記憶装置104を構成する5個のRAM(βRAM0〜βRAM4)に、P行毎にとびとびに格納されている。即ち、各行ブロック内での0行目の要素がβRAM0に、1行目の値がβRAM1にというように格納されている。従って、βi,j,xの3つ目の添え字xは、格納先のβRAMxのメモリ番号xとも言える。
一のβRAMxにおいて各要素βi,j,xは、各行を図における左から右に、上の行から下の行に向かう順番で格納されている。また、格納はβRAMxの各々において、アドレス0から開始される。具体的には、βRAM0にはアドレス0にβ0,0,0、アドレス1にβ0,1,0、アドレス2にβ0,2,0というような順で格納されている。ここで特に、βi,j,xの値が存在しない部分(即ち、検査行列において‘0’となっている部分)については、値が詰めて格納されている。すなわち、アドレス4にβ0,4,0が格納されると、アドレス5にβ0,6,0が格納される。以降は同じ行に値がないため、P(=5)行下の行に移り、β1,1,0がアドレス6に格納される。
行処理装置群101における一の行処理装置は、図3で示したように、1つの行の中に存在するβi,j,xを用いて、それらと同じ位置に対応するαi,j,y(図14参照)を順に出力する。P個の行夫々を処理する行処理装置を行処理装置0〜行処理装置4とすると、行処理装置0は、先ずβRAM0のアドレス0から順に読み出されたβ0,0,0、β0,1,0、β0,2,0、β0,3,0、β0,4,0、β0,6,0を用いて、α0,0,0、α0,1,3、α0,2,3、α0,3,1、α0,4,0、α0,6,3を更新する。そして、更新されたα0,0,0、α0,1,3、α0,2,3、α0,3,1、α0,4,0、α0,6,3を順に出力する。出力されたαi,j,yの格納については後述する。P個の行処理装置は全て並列に動作する。よって、行処理装置0が検査行列Hの第0行目の行処理を行っている間、行処理装置1は検査行列Hの第1行目の行処理を、行処理装置2は検査行列Hの第2行目の行処理を、行処理装置3は検査行列Hの第3行目の行処理を、行処理装置4は検査行列Hの第4行目の行処理を夫々行う。こうして検査行列Hの第0行目から第4行目(即ち、行ブロック0)の行処理が終わると、続けて第5行目から第9行目(即ち、行ブロック1)の行処理が行われ(行処理装置0が第5行目を、行処理装置1が第6行目を、・・・行処理装置4が第9行目を夫々処理する)、更に行ブロック2、行ブロック3と続けて処理される。
本実施形態に係る復号装置では、列メッセージβの各要素βi,j,xを図13に示すように格納してあるので、βRAM0〜βRAM4の各々のアドレス0から順番に読み出して、行処理装置0〜行処理装置4に夫々そのまま受け渡せば、上述したような行処理がスムーズに行える。
図11に戻り、行処理が終わると、出力された行メッセージαを行メッセージ記憶装置103に格納する(ステップS14)。続いて、列処理装置群102が、格納された行メッセージα及び受信LLRλを用いて、列処理(列メッセージβの更新)を行う。列処理の際には、行メッセージαが、行メッセージ記憶装置103から同時にP個ずつ読み出され、列処理装置群102を構成するP個の列処理装置(列処理装置0〜列処理装置4)に送られる。
以下では、行メッセージαが行メッセージ記憶装置103にどのように格納されているかについて、図14及び図15を参照して詳細に説明する。ここに図14は、行メッセージαの一例を示す行列図であり、図15は、行メッセージαの各要素の格納について示す概念図である。尚、行メッセージ記憶装置103は、上述した列メッセージ記憶装置104と同様に、P個のRAM(αRAM0〜αRAM4)により構成されているものとして説明する。
図14に示すように、行メッセージαは、列メッセージβと同様に、検査行列Hに対応した形をしており、検査行列H中で‘1’となっているところに値を持っている。行メッセージαを構成する要素αi,j,yの3つの添え字は、iが行ブロック番号、jが列ブロック番号、yがブロック(構成行列)内での列番号を夫々表している。添え字i及びjは、βi,j,xと同じように、行ブロック番号と列ブロック番号(即ち、基礎行列Hbaseにおける行番号、列番号)を表すが、3つ目の添え字yだけはβi,j,xのxと異なり、ブロック(構成行列)内での‘列’番号を表している。検査行列Hにおける同じ位置に存在する行メッセージαi,j,yと列メッセージβi,j,xのxとyの値が異なる点に注意すべきであり、本発明のポイントは構成行列に特別な条件を課すことでx及びy間での相互の変換が元となる基礎行列の要素の値に応じて決まるようにしている点にある。
図15において、行メッセージ記憶装置103を構成する5個のRAM(αRAM0〜αRAM4)には、P列毎にとびとびに、αi,j,yの値が分配され、格納されている。即ち、各列ブロックにおける0列目の値がαRAM0に、1列目の値がαRAM1にというように格納されている。従って、αi,j,yの3つ目の添え字yは、格納先のαRAMyのメモリ番号yとも言える。この点については、βi,j,xと同様である。
一のαRAMyにおいて各要素αi,j,yは、各列を図における上から下に、左の列から右の列に向かう順番で格納されている。また、格納はαRAMyの各々において、アドレス0から開始される。具体的には、αRAM0にはアドレス0にα0,0,0、アドレス1にα2,0,0、アドレス2にα3,0,0というような順で格納されている。また、α3,0,0が格納されると、以降は同じ列に値がないため、P列右の列に移り、α0,1,0がアドレス3に格納される。ここで特に、αi,j,yの値が存在しない部分(即ち、検査行列において‘0’となっている部分)については、値が詰めて格納されている。
列処理装置群102における一の列処理装置は、図4で示したように、1つの列の中に存在するαi,j,yを用いて、それらと同じ位置に対応するβi,j,xを順に出力する(実際にはαだけでなく、その列に対応する受信LLRλも用いる)。例えば、列処理装置0は、先ずαRAM0のアドレス0から順に読み出されたα0,0,0、α2,0,0、α3,0,0と、受信LLR記憶装置のアドレス0から読み出された検査行列の第0列に対応する受信LLRλ0を用いて、β0,0,0、β2,0,1、β3,0,0を更新する。そして、更新されたβ0,0,0、β2,0,1、β3,0,0を順に出力する。出力されたβ0,0,0、β2,0,1、β3,0,0は、図13で説明した通りに格納されるべきであるが、これをどのように実現するか(βRAM0〜βRAM4のどれに、またどのアドレスに格納するか)は後述する。
P個の列処理装置は全て並列に動作する。よって、列処理装置0が検査行列Hの第0列目の列処理を行っている間、列処理装置1は検査行列Hの第1列目の列処理を、列処理装置2は検査行列Hの第2列目の列処理を、列処理装置3は検査行列Hの第3列目の列処理を、列処理装置4は検査行列Hの第4列目の列処理を夫々行う。こうして検査行列Hの第0列目から第4列目(即ち、列ブロック0)の列処理が終わると、続けて第5列目から第9列目(即ち、列ブロック1)の列処理が行われ(列処理装置0が第5列目を、列処理装置1が第6列目を、・・・列処理装置4が第9列目を夫々処理する)、更に列ブロック2、列ブロック3、・・・と続けて処理される。
本実施形態に係る復号装置では、行メッセージαの各要素αi,j,yを図15に示すように格納してあるので、αRAM0〜αRAM4の各々のアドレス0から順番に読み出して、列処理装置0〜列処理装置4に夫々そのまま受け渡せば、上述したような列処理がスムーズに行える。
上述のように、行メッセージα及び列メッセージβがともに、読み出されるべき順に各RAMの連続したアドレス位置に格納されているので、読み出しの際は何も問題ないが、行・列処理装置から出力された値を書き込む際には、どのRAMのどのアドレスに書き込むかが問題となる。「書き込もうとしているメッセージを用いて次回の処理を行う処理装置にデータを渡すRAMに、次回読み出されるときの順番のとおり」に格納すればいいわけであるが、具体的には基礎行列Hbaseの情報を、所定のルールに基づいて記録した記憶装置(例えば、ROM)に基づいて書き込み先のRAMとアドレスを決める。
以下では、行処理装置及び列処理装置によって出力された行メッセージα及び列メッセージβの、書き込み時の処理について、図12から図15に加えて、図16から図21を参照して詳細に説明する。ここに図16は、行メッセージαの書き込み先メモリ選択時の処理について示す概念図であり、図17は、列メッセージβの書き込み先メモリ選択時の処理について示す概念図である。また図18は、行メッセージ格納先メモリ番号ROMに格納された情報を示す概念図であり、図19は行メッセージ格納先アドレスROMに格納された情報を示す概念図である。図20は、列メッセージ格納先メモリ番号ROMに格納された情報を示す概念図であり、図21は、列メッセージ格納先アドレスROMに格納された情報を示す概念図である。
図12、図13、図14、図15おいて、行処理装置0が検査行列Hにおける第0行目の行処理を左から右に向かって行う場合、β0,0,0、β0,1,0、β0,2,0、β0,3,0、β0,4,0、β0,6,0がβRAM0のアドレス0から順に読み出され、これらを用いて更新されたα0,0,0、α0,1,3、α0,2,3、α0,3,1、α0,4,0、α0,6,3が出力される。ここで、添え字i及びjはβi,j,x及びαi,j,y間で共通であり、3つ目の添え字だけが変化している点に着目する。3つ目の添え字は、格納先のRAMのメモリ番号でもあると前述したが、この場合、出力されたαi,j,yは順に、αRAM0、αRAM3、αRAM3、RAM1、RAM0、RAM3に格納されるべきである。格納先であるαRAMyのメモリ番号yを順に並べてみると、0、3、3、1、0、3となる。これは、基礎行列Hbaseの0行目におけるゼロ行列以外で置き換えられる要素(−1以外の要素)を左から右に並べたものと同じである(図8参照)。
図16において、行処理装置0が検査行列Hの第0行目の行処理を行うのと並行して、行処理装置1は検査行列Hの第1行目の行処理を行う。これにより、β0,0,1、β0,1,1、β0,2,1、β0,3,1、β0,4,1、β0,6,1がβRAM1のアドレス0から順に読み出され、これらを用いて更新されたα0,0,1、α0,1,4、α0,2,4、α0,3,2、α0,4,1、α0,6,4が順に出力される。ここでも上述した行処理装置0の場合と同様に、添え字i及びjはβi,j,x及びαi,j,y間で共通であり、3つ目の添え字だけが変化している。行処理装置1から出力されたαi,j,yの格納先であるαRAMyのメモリ番号yを順に並べてみると、1、4、4、2、1、4となる。これは、行処理装置0の場合(0、3、3、1、0、3)に、全て1ずつ足したものとなっている。
同様に、行処理装置2、3、4の場合の格納先αRAMメモリ番号yは、行処理装置0の場合の0、3、3、1、0、3に、注目している行処理装置番号を加えたものとなる。但し、装置番号を加えた結果が5以上になった場合は、mod5(5で割った余り)とする。このようになるのは、検査行列Hを構成するブロック(構成行列)が、単位行列を巡回シフトした巡回シフト行列となっているためである。
行メッセージαは検査行列HにおいてP列毎にとびとびに同一のRAMに格納されるので、P行P列の構成行列内での列番号(0〜P−1)に等しいメモリ番号のαRAMに格納される。したがって書き込み先メモリ番号を求めるには行処理装置xが処理するメッセージの構成行列内での行番号xを構成行列内での列番号yに変換してやればよい。構成行列がP行P列の単位行列を0〜(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列となっている場合、巡回シフト量がsである構成行列中の一つの‘1’に注目するとその構成行列内での行番号xと列番号yとの間には、y=x+s(modP)なる関係が成立する。したがって、行処理装置xから出力されるαi,j,yは、出力された順にメモリ番号yがx+s(mod5)であるαRAMyに書き込まれればよい。ここでsは行ブロック0の巡回シフト量(すなわちHbaseの第0行)を左から右に向かって順に読んでいった値である。行処理装置0〜行処理装置4の5つすべての出力をこの法則に従って各αRAMに分配して格納すればよいが、実はこの処理は図16に示すように5つの行処理装置からの出力を、行ブロック0の巡回シフト量(0、3、3、1、0、3)と同じ分だけ巡回シフトすることでまとめて実現できる。
5つの行処理装置が0行目から4行目まで(即ち、行ブロック0)の行処理を終えると、次に5行目から9行目まで(即ち、行ブロック1)の行処理が行われる。ここでも、更新されたαi,j,yの書き込み先であるαRAMyのメモリ番号yは、行処理装置番号xを行ブロック1の巡回シフト量を左から右に並べた(2、1、3、2、3、0)に加えたものとなる。また、これは、検査行列Hの10行目以降(即ち、行ブロック2以降)でも同様である。
以上の結果から、行メッセージαを書き込む際の書き込み先であるαRAMyのメモリ番号yは、例えば図18に示すような、基礎行列Hbaseにおけるゼロ行列以外で置き換えられる要素を、各行左から右へ、上の行から下の行に向かって順に記録した行メッセージ格納先メモリ番号ROM106によって決めることができる。尚、ここでの各行左から右へという順番が、本発明の「第1の順序」の一例であり、上の行から下の行にという順番が、本発明の「第2の順序」の一例である。行メッセージαは、行メッセージ格納先メモリ番号ROM106に格納された値分だけ、巡回シフト回路110によって巡回シフトされた後に格納される。尚、図18のように基礎行列Hbaseの情報を記憶することで必要な記憶容量が少なくて済むという利点もある。即ち、図18では基礎行列Hbaseの要素‘−1’を記憶する必要がなく、更に‘−1’以外の要素も「第何行第何列か」という情報を記憶する必要がない。
次に、αRAMy内での書き込み先アドレスについて説明する。
図16において、行処理装置0が、初めに実行する第0行目の行処理では、上述したように、α0,0,0、α0,1,3、α0,2,3、α0,3,1、α0,4,0、α0,6,3が順に出力される。ここでαi,j,yは、次回の列処理の際に図14における各列を上から下に、左の列から右の列に向かって順番に読み出される。このような順番でα0,0,0が読み出される順番を考えると、0番目であることが分かる。即ち、α0,0,0は、次回の列処理で0番目に読み出されるように、アドレス0に書き込まれればよい。
続いて、行処理装置0からα0,0,0の次に出力されるα0,1,3の場合を考えると、3番目(即ち、α0,0,3、α2,0,3、α3,0,3、α0,1,3の順で3番目)にくるので、次回の列処理で3番目に読み出されるように、アドレス3に書き込まれればよい。以下同様に、行処理装置0から出力されるα0,2,3、α0,3,1、α0,4,0、α0,6,3は、アドレス6、9、12、18に夫々書き込まれればよい。これらのアドレスを順に並べると、0、3、6、9、12、18となる。
ここで特に、行処理装置0が検査行列Hの第0行目の行処理を行っているのと並行して、行処理装置1〜行処理装置4は、夫々第1行目〜第4行目の行処理を行う。そして、行処理装置1〜行処理装置4から出力されるαi,j,yの書き込み先アドレスを、上述した行処理装置0の場合と同様に数えて考えてみると、順番に0、3、6、9、12、18となり、行処理装置0の場合と同じになる。これは構成行列の各列に必ず‘1’が一つずつ存在するようになっており、αの要素を列方向に詰めるように格納しても一の構成行列に含まれるメッセージ同士は常に同じアドレスに格納されるからである。
また、第5行目から第9行目まで(即ち、行ブロック1)の行処理についても同様に考えると、書き込み先アドレスを並べたものは、4、7、10、15、19、21となり、第10行目から第14行目(即ち、行ブロック2)では、1、8、13、16、20、22となり、第15行目から第19行目(即ち、行ブロック3)では、2、5、11、14、17、23となる。
以上の結果から、行メッセージαを書き込む際のαRAMyにおけるアドレスは、例えば図19に示すような、基礎行列Hbaseのゼロ行列以外で置き換えられる要素に、各列上から下(これは本発明の「第3の順序」の一例である)へ、左の列から右の列に向かって(これは本発明の「第4の順序」の一例である)順に番号を与え(この番号は本発明の「列処理番号」の一例である)、その番号を各行左から右(これは本発明の「第1の順序」の一例である)へ、上の行から下の行に向かって(これは本発明の「第2の順序」の一例である)順に記録した行メッセージ格納先アドレスROM108の内容によって決まる。行メッセージ書き込み時には行メッセージ格納先アドレスROM108のアドレス0から順に読み出した値のアドレスに、更新された行メッセージが順に格納される。
再び図11に戻り、行処理(ステップS13)と更新された行メッセージ(対数外部値比)αの格納(ステップS14)が終わると、受信LLRλと更新された行メッセージαを用いて、列処理(列メッセージβの更新)を行う(ステップS15)。ここで、列処理装置群102によって更新されたβの格納も、上述したαと同じように、基礎行列Hbaseのゼロ行列以外に置き換えられる要素を、縦方向に詰めた形で、各列を上から下に、左の列から右の列に向かって順に記録した列メッセージ格納先メモリ番号ROM107(図20参照)によって、格納先のβRAMxのメモリ番号xを決めることができる。尚、ここでの各列を上から下にという順番が、本発明の「第3の順序」の一例であり、左の列から右の列に向かってという順番が、本発明の「第4の順序」の一例である。また、基礎行列Hbaseのゼロ行列以外で置き換えられる要素に、各行左から右に、上の行から下の行に向かって順に番号を与え、その番号を縦方向に詰めた形で各列を上から下に、左の列から右の列に向かって順に記録した列メッセージ格納先アドレスROM109(図21参照)の内容をアドレス0から順に読み出した値が、共通の書き込み先アドレスになる。但し、列処理装置yから出力されたβの書き込み先メモリ番号xの求め方は、列メッセージ格納先メモリ番号ROM107から読み出した巡回シフト量sを用いてx=P−s+y(modP)となり、αの場合(y=x+s(modP))と異なり、実際の各βRAMへの振り分けは図17に示すようにαの場合とは逆方向の巡回シフトによってまとめて実現できる。以上のように、列メッセージβは、列メッセージ記憶装置104に格納される(ステップS16)。
上述したL=0回目の処理と同様に、列処理が行われると同時に、受信LLRλと行メッセージαは推定符号語計算部112にも送られ、反復L回目での推定符号語が計算される。推定符号語は検査方程式チェック部113に送られ、検査方程式を満足した場合(ステップS17:YES)、制御部114から反復を終える指示が出て、このときの推定符号語が復号結果として出力される(ステップS18)。推定符号語が検査方程式を満足しない場合は(ステップS17:NO)、反復回数Lがインクリメントされて、繰り返し上述したような一連の処理が行われる。以上のような反復処理によって、データは復号される。
ここで、第1実施形態に係る復号装置の変形例について、図22から図25を参照して説明する。ここに図22は、行メッセージ格納先メモリ番号ROM106及び列メッセージ格納先アドレスROM109と、列メッセージ格納先メモリ番号ROM107との関係を示す概念図である。図23は、RAMの代わりにシフトレジスタを用いて行メッセージ記憶装置103及び列メッセージ記憶装置104を構成する場合の概念図である。また図24は、行メッセージ格納先シフトレジスタ番号ROMに格納される情報を示す概念図であり、図25は、列メッセージ格納先シフトレジスタ番号ROMに格納される情報を示す概念図である。
図22において、行メッセージ格納先メモリ番号ROM106に格納された情報を、列メッセージ格納先アドレスROM109に格納されたアドレス順で読むと、列メッセージ格納先メモリ番号ROM107に格納された情報と同じものとなる。よって、列メッセージ格納先メモリ番号ROM107は構成に含まれなくともよい。また、列メッセージ格納先メモリ番号ROM107に代えて、行メッセージ格納先メモリ番号ROM106を含まないように構成してもよい。この場合、行メッセージ格納先メモリ番号ROM106に格納される情報は、列メッセージ格納先メモリ番号ROM107に格納された情報を、行メッセージ格納先アドレスROM108に格納されたアドレス順で読むことで得られる。
図23において、図5に示すような、行メッセージ記憶装置103及び列メッセージ記憶装置104を、RAMではなくシフトレジスタによって構成することも可能である。この場合は図23に示すように、行ブロック数と同じ個数のβ格納用シフトレジスタ(βシフトレジスタ0〜3)と列ブロック数と同じ個数のα格納用シフトレジスタ(αシフトレジスタ0〜7)によって構成される。βシフトレジスタはβの量子化ビット数のP倍のビット幅を持ち、深さは行重みに等しい。αシフトレジスタはαの量子化ビット数のP倍のビット幅を持ち、深さは列重みに等しい。
図23においては破線で区切られた部分がメッセージ一つ分のビット幅になっている。一のブロック(構成行列)に含まれるP個のメッセージはシフトレジスタの同一深さ位置に連結して格納される。βシフトレジスタ0〜3を横方向に連結して考えるとRAMを用いた場合のβRAM0〜βRAM4と同じようになり、αシフトレジスタ0〜7を縦方向に連結して考えるとRAMを用いた場合のαRAM0〜αRAM4と同じようになる。
RAMを用いた場合のメッセージをどのRAMに格納するかという問題は、シフトレジスタを用いた場合はどのビット位置に格納するかという問題になり、この問題に対してはRAMを用いた場合と同様に、行メッセージ格納先メモリ番号ROM106及び列メッセージ格納先メモリ番号ROM107の内容に従って巡回シフトを行えばよい。またRAMを用いた場合のメッセージをRAM上のどのアドレスに格納するかという問題は、シフトレジスタを用いた場合はどのシフトレジスタに格納するかという問題になり、この問題に対しては、行メッセージ格納先アドレスROM108を、基礎行列Hbaseの第j列目におけるゼロ行列以外で置き換えられる要素を全てjに変えて、横方向に詰めた形で各行を左から右に、上の行から下の行に向かって順に記録した行メッセージ格納先シフトレジスタ番号ROM(図24参照)に変更し、また、列メッセージ格納先アドレスROM109を、基礎行列Hbaseの第i行目におけるゼロ行列以外で置き換えられる要素を全てiに変えて、縦方向に詰めた形で各列を上から下に、左の列から右の列に向かって順に記録した列メッセージ格納先シフトレジスタ番号ROM(図25参照)に変更する。これらのROMから読み出しされた値が、書き込み先シフトレジスタ番号となる。
行処理と列処理は交互に行われるため、列処理装置は前の行処理が終わるまで動作することができず、また行処理装置は前の列処理が終わるまで動作することができない。これでは効率が悪いので、2つの符号語を同時に復号するようにして装置の動作効率を上げるような構成も可能である。2つの符号語をCev、Codとすると、行メッセージ記憶装置103、列メッセージ記憶装置104及び受信LLR記憶装置105を夫々CevとCodの2つの符号語の情報を格納できるように2セットずつ用意する。行処理装置がCevに対して行処理を行っている間に列処理装置がCodに対して列処理を行い、その後、行処理装置がCodに対して行処理を行っている間に列処理装置がCevに対して列処理を行う、というようにすれば行処理装置と列処理装置が互いの動作の終了を待つ必要がなくなり効率よい復号が可能となる。
以上説明したように、第1実施形態に係る復号装置及び復号方法によれば、P個の枝に対応したメッセージを同時に更新するLDPC復号を確実かつ効率的に行うことが可能である。
<第2実施形態>
次に、第2実施形態に係る復号装置について、図26から図29を参照して説明する。尚、第2実施形態は、上述の第1実施形態と比べて、基礎行列から検査行列を得る際に要素の置き換えに用いる構成行列及びその元となる基本構成行列が異なり、装置の構成及び動作については概ね同様である。このため第2実施形態では、第1実施形態と異なる部分について詳細に説明し、その他の重複する部分については適宜説明を省略する。
先ず、第2実施形態で用いる基本構成行列について、図26を参照して説明する。ここに図26は、第2実施形態に係る基本構成行列とそれをもとにした構成行列の一例を示す図であり、図27は、図8に示す基礎行列の各要素を第2実施形態に係る構成行列で置き換えることで得られる検査行列の一例を示す行列図である。
図26において、基本構成行列は、第1実施形態においては単位行列であったのに対し各行各列に夫々‘1’が一つだけ存在する行列となっている。構成行列はこの基本構成行列を0から4の間の巡回シフト量で右方向へ巡回シフトした巡回シフト行列もしくはゼロ行列のいずれかとなっている。図8に示す基礎行列Hbaseの各要素をその値に応じた第2実施形態にかかる構成行列で置き換えると図27に示す検査行列が得られる。
続いて、第2実施形態における行メッセージ格納先メモリの選択について、図28及び図29を参照して説明する。ここに図28は、第2実施形態に係る行メッセージ格納先メモリの選択について示す概念図であり、図29は、図28に示す処理を行う回路の一例を示す回路図である。尚、列メッセージ格納先メモリの選択については行メッセージ格納先メモリの選択と同様の考え方で実現できるのでここでは省略する。
構成行列内での行番号がxである行の行処理を行う、行処理装置xが出力する行メッセージの格納先メモリαRAMyのメモリ番号yを求めるには、格納しようとする行メッセージに対応した検査行列中の‘1’の構成行列内での行番号xを構成行列内での列番号yに変換する必要がある。第1実施形態ではゼロ行列を除いた構成行列はすべて単位行列を巡回シフトしたものであったので、この変換は構成行列の巡回シフト量と同じだけ行メッセージを巡回シフトすればよかったが、第2実施形態では巡回シフトを行う前に基本構成行列の形に応じた並べ替えを行う必要がある。
図26に示す基本構成行列を用いる場合、図28に示すようにまず行処理装置0〜行処理装置4の出力をそれぞれ中間出力0、3、2、1、4になるように並べ替え、その後に構成行列の巡回シフト量と同じだけ巡回シフトを行う。中間出力への並べ替えがこのようになるのは基本構成行列の第0行目から第4行目までの‘1’が存在する列番号が0、3、2、1、4となっているからである。尚、図28に示すような並べ替えと巡回シフトを続けて行う動作は図29に示すようにマルチプレクサを用いることでまとめて行うことも可能である。図28と図29では入力(行処理装置0〜行処理装置4の出力及び構成行列の巡回シフト量)と出力(αRAM0からαRAM4)の関係は同じになっている。
以上説明したように、第2実施形態に係る復号装置及び復号方法によれば、基本構成行列が単位行列でない場合であっても、第1実施形態と同様に、P個の枝に対応したメッセージを同時に更新するLDPC復号を確実かつ効率的に行うことが可能である。
<第3実施形態>
次に、第3実施形態に係る復号装置について、図30から図35を参照して説明する。尚、第3実施形態は、上述の第1実施形態及び第2実施形態と比べて、基礎行列とその格納方法が異なり、装置の構成及び動作については概ね同様である。このため第3実施形態では、第1実施形態及び第2実施形態と異なる部分について詳細に説明し、その他の重複する部分については適宜説明を省略する。
先ず、第3実施形態で用いられる基礎行列Hbase及び検査行列Hについて、図30及び図31を参照して説明する。ここに図30は、検査行列Hの基礎となる基礎行列Hbaseの一例を示す行列図であり、図31は、図30に示す基礎行列Hbaseから得られた検査行列Hを示す行列図である。
図30において、第3実施形態に係る復号装置において用いられる基礎行列Hbaseは、0行1列目や1行2列目等、要素が部分的に2つの値を含んでいる。基礎行列Hbaseは、各要素をP行P列(ここでは、P=5)のゼロ行列、単位行列を0から(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列、互いに巡回シフト量が異なる複数の巡回シフト行列の和行列、のいずれかである構成行列で置き換えることで、検査行列Hに変換される。
図31において、基本行列Hbaseは、負の要素‘−1’がゼロ行列に置き換えられる。また、負でない要素‘0’から‘4’は、各要素の値が巡回シフト量と対応するように、単位行列の巡回シフト行列として置き換えられる。ここで特に、2つの値が含まれるような要素は、各値に対応して置き換えられる2つの行列の和行列と置き換えられる。具体的には、基礎行列Hbaseの0行1列目の‘3’及び‘4’の2つの値をもつ要素は、巡回シフト量が3である巡回シフト行列及び巡回シフト量が4である行列の和行列と置き換えられる。同様に、1行2列目の‘1’及び‘2’の2つの値をもつ要素は、巡回シフト量が1である巡回シフト行列、及び巡回シフト量が2である巡回シフト行列の和行列と置き換えられる。上述したように、和行列を用いて置き換えることで、要素が2つの値を持つ場合であっても、P行P列の構成行列1つで各要素を置き換え、基本行列Hbaseを変換することができる。
続いて、和行列が含まれる検査行列Hによる復号での動作の違いについて、図32から図35を参照して説明する。ここに図32は、行メッセージ格納先メモリ番号ROMに格納された情報を示す概念図であり、図33は、行メッセージ格納先アドレスROMに格納された情報を示す概念図である。また図34は、列メッセージ格納先メモリ番号ROMに格納された情報を示す概念図であり、図35は、列メッセージ格納先アドレスROMに格納された情報を示す概念図である。
図32において、基礎行列Hbaseの各要素が、行メッセージ格納先メモリ番号ROM106に並べて格納される際には、要素が2つの値を持つ場合、2つの要素は連続した2つの要素として扱われる。具体的には、図に示すように左から右へ情報が格納される場合、0、3、4、1・・・の順番で格納される。2つの要素の格納順(この場合、3、4か4、3か)はどちらでも構わないが、後述する行メッセージ格納先アドレスROM108に格納する列処理番号の付与の順序がこれと一致する必要がある。
図33において、基礎行列Hbaseの負でない要素に対して各列で上から下に、左の列から右の列に向かって列処理番号を付与する。要素が2つの値を持つ場合には2つ夫々に番号を付与する。2つの要素に番号を付与する順番は、前述の行メッセージ格納先メモリ番号ROMへ2つの値を格納する順番と同じにする。そして付与した番号を各行で左から右に、上の行から下の行に向かって行メッセージ格納先アドレスROM108に格納する。2つの値に付与した番号は番号の付与と同じ順序で格納される。
図34に示す列メッセージ格納先メモリ番号ROM107及び図35に示す列メッセージ格納先アドレスROM109においても同様にHbaseの負でない要素及び負でない要素に付与した番号を格納する。このように情報が格納されることで、上述した第1実施形態及び第2実施形態と同様の処理によって、データを復号することが可能となる。
尚、Hbaseの要素が3つ以上の値を持つ場合でも同様の格納方法を用いれば第1実施形態及び第2実施形態と同様の処理によって、データを復号することが可能となる。
以上説明したように、第3実施形態に係る復号装置及び復号方法によれば、構成行列に巡回シフト量が互いに異なる複数の巡回シフト行列の和行列を含むような検査行列Hを用いる場合であっても、第1実施形態及び第2実施形態と同様に、P個の枝に対応したメッセージを同時に更新するLDPC復号を確実かつ効率的に行うことが可能である。
<第4実施形態>
次に、第4実施形態に係る復号装置について、図36及び図37を参照して説明する。尚、第4実施形態は、上述の第1実施形態ないし第3実施形態と比べて、基礎行列から検査行列を得る際に要素の置き換えに用いる構成行列の元となる基本構成行列が2種類以上存在する点が異なり、装置の構成及び動作については概ね同様である。このため第4実施形態では、第1実施形態ないし第3実施形態と異なる部分について詳細に説明し、その他の重複する部分については適宜説明を省略する。
先ず、第4実施形態で用いられる基本構成行列について、図36を参照して説明する。図36は、5種類の基本構成行列を含んだ構成行列の一例であり、5種類の基本構成行列は夫々パターン0、パターン1、パターン2、パターン3、パターン4とする。パターン0〜パターン4は互いに同じ位置に‘1’が存在しないようになっている。尚、パターン4はパターン0を右に4つ巡回シフトしたものとなっているが、このようにいくつかのパターンが他のパターンを巡回シフトしたものとなっていても構わないが、すべてのパターンが1つのパターンを巡回シフトしたものである場合は第2実施形態と全く同じになる。
第4実施形態においては、例えば図8に示す基礎行列Hbaseの各要素を、ゼロ行列もしくはその要素の値に対応した図36に示すパターンの基本構成行列で置き換えることで検査行列が得られる。第4実施形態においては、行処理装置群101及び列処理装置群102から同時にP個ずつ出力される行メッセージ及び列メッセージを適切な格納先メモリに割り振るために巡回シフト回路110及び111の代わりに例えば図37に示すような並べ替え回路を用いる。
図37は、図36に示す5種類の基本構成行列を用いた場合の行メッセージ並べ替え回路の一例である。列メッセージ並べ替え回路については行メッセージ並べ替え回路と同様の考え方で実現できるので省略する。
図37において、図36に示す基本構成行列の第0行目の‘1’に注目すると、パターン0では第0列目に存在するので、第0列目のメッセージを格納するαRAM0への出力に繋がるマルチプレクサのパターン値が0の場合に選択される入力に行処理装置0の出力が入力されるようになっている。パターン1では第0行目の‘1’は第1列目に存在するので、第1列目のメッセージを格納するαRAM1への出力に繋がるマルチプレクサのパターン値が1の場合に選択される入力にも行処理装置0からの出力が入力されるようになっている。同様に行処理装置0からの出力は、αRAM2への出力に繋がるマルチプレクサのパターン値が2の場合に選択される入力、αRAM3への出力に繋がるマルチプレクサのパターン値が3の場合に選択される入力、αRAM4への出力に繋がるマルチプレクサのパターン値が4の場合に選択される入力にも入力されるようになっている。行処理装置1〜4からの出力に関しても図36における基本構成行列の第1〜4行目に存在する‘1’の列番号に注目して行処理装置0からの出力の場合と同様に考えれば図37に示すような接続になる。
以上説明したように、第4実施形態に係る復号装置及び復号方法によれば、基本構成行列が2種類以上存在する場合であっても、第1実施形態ないし第3実施形態と同様に、P個の枝に対応したメッセージを同時に更新するLDPC復号を確実かつ効率的に行うことが可能である。
本発明は、上述した実施形態に限られるものではなく、特許請求の範囲及び明細書全体から読み取れる発明の要旨或いは思想に反しない範囲で適宜変更可能であり、そのような変更を伴う復号装置及び復号方法もまた本発明の技術的範囲に含まれるものである。
LDPC符号を定義する検査行列の一例を示す行列図である。 図1に示す検査行列に係るタナーグラフの図である。 行処理について対数外部値比及び対数事前値比を用いて示す概念図である。 列処理について対数外部値比及び対数事前値比を用いて示す概念図である。 第1実施形態に係る復号装置の構成を示すブロック図である。 行処理装置の構成を示すブロック図である。 列処理装置の構成を示すブロック図である。 検査行列Hの基礎となる基本行列Hbaseの一例を示す行列図である。 基本行列Hbaseから変換された検査行列Hの一例を示す行列図である。 第1実施形態に係る復号装置の初期化段階及び反復0回目の動作について示すフローチャートである。 第1実施形態に係る復号装置の反復1回目以降の動作について示すフローチャートである。 対数事前値比βの一例を示す行列図である。 対数事前値比βの各要素の格納について示す概念図である。 対数外部値比αの一例を示す行列図である。 対数外部値比αの各要素の格納について示す概念図である。 対数外部値比αの格納先メモリの選択について示す概念図である。 対数事前値比βの格納先メモリの選択について示す概念図である。 行メッセージ格納先メモリ番号ROMに格納された情報を示す概念図である。 行メッセージ格納先アドレスROMに格納された情報を示す概念図である。 列メッセージ格納先メモリ番号ROMに格納された情報を示す概念図である。 列メッセージ格納先アドレスROMに格納された情報を示す概念図である。 行メッセージ格納先メモリ番号ROM及び列メッセージ格納先アドレスROMと、列メッセージ格納先メモリ番号ROMとの関係を示す概念図である。 行メッセージ記憶装置及び列メッセージ記憶装置がRAMの代わりにシフトレジスタを含むような構成にした場合について示す概念図である。 行メッセージ格納先シフトレジスタ番号ROMに格納される情報を示す概念図である。 列メッセージ格納先シフトレジスタ番号ROMに格納される情報を示す概念図である。 第2実施形態に係る基本構成行列及び構成行列の一例を示す行列図である。 第2実施形態に係る検査行列の一例を示す行列図である。 第2実施形態に係る行メッセージ格納先メモリの選択について示す概念図である。 図28に示す処理を行う回路の一例を示す回路図である。 第3実施形態に係る基礎行列の一例を示す行列図である。 第3実施形態に係る検査行列の一例を示す行列図である。 第3実施形態に係る行メッセージ格納先メモリ番号ROMに格納される情報を示す概念図である。 第3実施形態に係る行メッセージ格納先アドレスROMに格納される情報を示す概念図である。 第3実施形態に係る列メッセージ格納先メモリ番号ROMに格納される情報を示す概念図である。 第3実施形態に係る列メッセージ格納先アドレスROMに格納される情報を示す概念図である。 第4実施形態に係る基本構成行列及び構成行列の一例を示す行列図である。 第4実施形態に係る並べ替え回路について示す回路図である。
符号の説明
101…行処理装置群、102…列処理装置群、103…行メッセージ記憶装置、104…列メッセージ記憶装置、105…受信LLRλ格納用メモリ、106…行メッセージ格納先メモリ番号ROM、107…列メッセージ格納先メモリ番号ROM、108…行メッセージ格納先アドレスROM、109…列メッセージ格納先アドレスROM、110,111…巡回シフト回路、112…推定符号語計算部、113…検査方程式チェック部、114…制御部、200…行処理装置、201…絶対値計算部、202,207…f関数計算部、203,301…積算器、204,210,302…イネーブル付きレジスタ、205,211,303…遅延素子、206…減算器、208…符号(±)計算部208、209,212…XOR計算部、300…列処理装置、304…加減算器

Claims (13)

  1. 低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号装置であって、
    前記検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない1種類の基本構成行列を0から(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記巡回シフト行列の前記巡回シフト量とが対応するように置き換えることで生成されている
    ことを特徴とする復号装置。
  2. 前記1種類の基本構成行列は単位行列であることを特徴とする請求項1に記載の復号装置。
  3. 低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号装置であって、
    前記検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない2種類以上の基本構成行列、互いに同じ位置に‘1’が存在しない複数の基本構成行列の和行列、のいずれかである構成行列で、前記基礎行列の各要素の値と前記2種類以上の基本構成行列とが対応するように置き換えることで生成されている
    ことを特徴とする復号装置。
  4. 同時にP個ずつの列メッセージを受け取り、前記列メッセージによって行メッセージを更新し、同時にP個ずつの前記更新された行メッセージを出力する行処理手段と、
    同時にP個ずつの行メッセージを受け取り、前記行メッセージによって前記列メッセージを更新し、同時にP個ずつの前記更新された列メッセージを出力する列処理手段と、
    前記P個の行メッセージを同時に読み出し又は書き込み可能な行メッセージ記憶手段と、
    前記P個の列メッセージを同時に読み出し又は書き込み可能な列メッセージ記憶手段と
    を更に備えることを特徴とする請求項1から3のいずれか一項に記載の復号装置。
  5. 前記行メッセージ記憶手段及び前記列メッセージ記憶手段は、夫々P個のRAMを含んでいることを特徴とする請求項4に記載の復号装置。
  6. 前記行メッセージ記憶手段及び前記列メッセージ記憶手段は、夫々前記行メッセージ及び前記列メッセージの量子化ビット数のP倍のビット幅を有するシフトレジスタを含んでいることを特徴とする請求項4に記載の復号装置。
  7. 前記行メッセージ記憶手段は、前記行メッセージを、前記検査行列における列方向に詰めてP列毎にとびとびに、同一の前記RAMに格納し、
    前記列メッセージ記憶手段は、前記列メッセージを、前記検査行列における行方向に詰めてP行毎にとびとびに、同一の前記RAMに格納する
    ことを特徴とする請求項5に記載の復号装置。
  8. 前記行メッセージ記憶手段は、前記行メッセージを、前記検査行列における列方向に詰めてP列毎にとびとびに、前記シフトレジスタにおける同一のビット位置に格納し、
    前記列メッセージ記憶手段は、前記列メッセージを、前記検査行列における行方向に詰めてP行毎にとびとびに、前記シフトレジスタにおける同一のビット位置に格納する
    ことを特徴とする請求項6に記載の復号装置。
  9. 前記基礎行列におけるゼロ行列以外で置き換えられる要素を、第i(但し、iは1からmまでの整数)行目内で第1の順序に並べ、前記第1の順序に並べられた要素からなる要素群を、第2の順序で格納する行メッセージ格納先メモリ番号記憶手段と、
    前記基礎行列におけるゼロ行列以外で置き換えられる要素を、第j(但し、jは1からnまでの整数)列目内で第3の順序に並べ、前記第3の順序に並べられた要素からなる要素群を、第4の順序で格納する列メッセージ格納先メモリ番号記憶手段と、
    前記基礎行列におけるゼロ行列以外で置き換えられる要素に対して、前記第3の順序及び前記第4の順序に基づいて列処理番号を付与し、前記列処理番号を、前記第1の順序及び前記第2の順序に従って格納する行メッセージ格納先アドレス記憶手段と、
    前記基礎行列におけるゼロ行列以外で置き換えられる要素に対して、前記第1の順序及び前記第2の順序に基づいて行処理番号を付与し、前記行処理番号を、前記第3の順序及び前記第4の順序に従って格納する列メッセージ格納先アドレス記憶手段と
    を更に備えることを特徴とする請求項7又は8に記載の復号装置。
  10. 前記第1の順序、前記第2の順序、前記第3の順序及び前記第4の順序は、いずれも昇順又はいずれも降順であることを特徴とする請求項9に記載の復号装置。
  11. 前記行処理手段から同時にP個ずつ出力される前記行メッセージに対し、前記行メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフト又は並べ替えを行う第1巡回シフト・並べ替え手段と、
    前記行メッセージ格納先アドレス記憶手段に格納された前記列処理番号に従って、前記行メッセージを前記行メッセージ記憶手段に格納する第1格納手段と、
    前記列処理手段から同時にP個ずつ出力される列メッセージに対し、前記列メッセージ格納先メモリ番号記憶手段に格納された要素に基づいて巡回シフト又は並べ替えを行う第2巡回シフト手段・並べ替え手段と、
    前記列メッセージ格納先アドレス記憶手段に格納された前記行処理番号に従って、前記列メッセージを前記列メッセージ記憶手段に格納する第2格納手段と
    を更に備えることを特徴とする請求項9又は10に記載の復号装置。
  12. 低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号方法であって、
    前記検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない1種類の基本構成行列を0から(P−1)の間の巡回シフト量で巡回シフトした巡回シフト行列、若しくは前記巡回シフト量が互いに異なる複数の前記巡回シフト行列の和行列のいずれかである構成行列で、前記基礎行列の各要素の値と前記巡回シフト行列の前記巡回シフト量とが対応するように置き換えることで生成されている
    ことを特徴とする復号方法。
  13. 低密度パリティ検査符号によって符号化されたデータを、前記低密度パリティ検査符号を規定する検査行列を用いて復号する復号方法であって、
    前記検査行列は、m行n列(但し、m及びnはm<nである自然数)の基礎行列の各要素を、P行P列(但し、Pは自然数)のゼロ行列、又は各行各列に夫々‘1’が一つしか存在しない2種類以上の基本構成行列、互いに同じ位置に‘1’が存在しない複数の基本構成行列の和行列、のいずれかである構成行列で、前記基礎行列の各要素の値と前記2種類以上の基本構成行列とが対応するように置き換えることで生成されている
    ことを特徴とする復号方法。
JP2008107719A 2008-04-17 2008-04-17 復号装置及び復号方法 Pending JP2009260692A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008107719A JP2009260692A (ja) 2008-04-17 2008-04-17 復号装置及び復号方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008107719A JP2009260692A (ja) 2008-04-17 2008-04-17 復号装置及び復号方法

Publications (1)

Publication Number Publication Date
JP2009260692A true JP2009260692A (ja) 2009-11-05

Family

ID=41387539

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008107719A Pending JP2009260692A (ja) 2008-04-17 2008-04-17 復号装置及び復号方法

Country Status (1)

Country Link
JP (1) JP2009260692A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011205578A (ja) * 2010-03-26 2011-10-13 Toshiba Corp 誤り検出訂正回路、メモリコントローラ、および半導体メモリ装置
US9189328B2 (en) 2012-12-11 2015-11-17 Samsung Electronics Co., Ltd. Memory controller and method of operating the same
WO2019003888A1 (ja) * 2017-06-26 2019-01-03 ソニーセミコンダクタソリューションズ株式会社 情報処理装置及び方法
CN112152637A (zh) * 2020-09-10 2020-12-29 中科院计算技术研究所南京移动通信与计算创新研究院 Dvb-s2 ldpc译码变量节点更新模块及其实现方法
CN115425988A (zh) * 2022-07-29 2022-12-02 北京融为科技有限公司 一种高速ldpc全模式列变换方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011205578A (ja) * 2010-03-26 2011-10-13 Toshiba Corp 誤り検出訂正回路、メモリコントローラ、および半導体メモリ装置
US9189328B2 (en) 2012-12-11 2015-11-17 Samsung Electronics Co., Ltd. Memory controller and method of operating the same
WO2019003888A1 (ja) * 2017-06-26 2019-01-03 ソニーセミコンダクタソリューションズ株式会社 情報処理装置及び方法
JPWO2019003888A1 (ja) * 2017-06-26 2020-04-23 ソニーセミコンダクタソリューションズ株式会社 情報処理装置及び方法
JP7110191B2 (ja) 2017-06-26 2022-08-01 ソニーセミコンダクタソリューションズ株式会社 情報処理装置及び方法
CN112152637A (zh) * 2020-09-10 2020-12-29 中科院计算技术研究所南京移动通信与计算创新研究院 Dvb-s2 ldpc译码变量节点更新模块及其实现方法
CN112152637B (zh) * 2020-09-10 2024-04-30 南京中科晶上通信技术有限公司 Dvb-s2 ldpc译码变量节点更新模块及其实现方法
CN115425988A (zh) * 2022-07-29 2022-12-02 北京融为科技有限公司 一种高速ldpc全模式列变换方法
CN115425988B (zh) * 2022-07-29 2024-02-09 北京融为科技有限公司 一种高速ldpc全模式列变换方法

Similar Documents

Publication Publication Date Title
KR101789959B1 (ko) 구조적 ldpc의 인코딩 방법, 디코딩 방법, 인코딩 장치 및 디코딩 장치
JP7372369B2 (ja) 構造的ldpcの符号化、復号化方法および装置
RU2395902C2 (ru) Способы и устройство ldpc-кодирования
US7343548B2 (en) Method and apparatus for encoding and decoding data
JP4622654B2 (ja) 復号装置および復号方法
KR101227264B1 (ko) Ldpc 코드용 디코더
JP4602406B2 (ja) データをエンコード及びデコードするための方法並びに装置
JP4702632B2 (ja) 符号化方法および符号化装置、並びにプログラム
JPWO2010073922A1 (ja) 誤り訂正符号化装置、復号装置、符号化方法、復号方法、及びそのプログラム
JP2006304132A (ja) 符号装置および符号化方法
JP4357561B2 (ja) 符号化装置及び符号化方法
JP2007215089A (ja) 復号装置及び復号方法
JP2009260692A (ja) 復号装置及び復号方法
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
KR100918741B1 (ko) 이동 통신 시스템에서 채널 부호화 장치 및 방법
JP2007036776A (ja) 復号装置および復号方法
CN114499541A (zh) 分层译码方法、装置、终端设备及介质
JP5510447B2 (ja) 復号装置および復号方法
JP4645645B2 (ja) 復号装置及び検査行列生成方法
JP2005065066A (ja) 復号装置および復号方法、並びにプログラム
JP4729964B2 (ja) 復号装置および復号方法
JP2011072020A (ja) 復号装置
WO2024106297A1 (ja) ターボ符号設計方法、ターボ符号設計装置およびターボ符号設計プログラムを格納する記録媒体
JP4283829B2 (ja) 低密度パリティチェック符号復号装置
JP4803134B2 (ja) パリティ検査復号装置