JP4743156B2 - 復号装置 - Google Patents

復号装置 Download PDF

Info

Publication number
JP4743156B2
JP4743156B2 JP2007119090A JP2007119090A JP4743156B2 JP 4743156 B2 JP4743156 B2 JP 4743156B2 JP 2007119090 A JP2007119090 A JP 2007119090A JP 2007119090 A JP2007119090 A JP 2007119090A JP 4743156 B2 JP4743156 B2 JP 4743156B2
Authority
JP
Japan
Prior art keywords
ram
check matrix
log
row
storage position
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.)
Expired - Fee Related
Application number
JP2007119090A
Other languages
English (en)
Other versions
JP2008278184A (ja
Inventor
仁 品川
弘幸 山岸
誠 野田
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2007119090A priority Critical patent/JP4743156B2/ja
Priority to KR1020080033163A priority patent/KR20080096387A/ko
Priority to US12/100,730 priority patent/US8205130B2/en
Priority to EP08007862A priority patent/EP1986329A1/en
Priority to CN2008100950526A priority patent/CN101295988B/zh
Publication of JP2008278184A publication Critical patent/JP2008278184A/ja
Application granted granted Critical
Publication of JP4743156B2 publication Critical patent/JP4743156B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/26Systems using multi-frequency codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Description

本発明は、簡単な構成で、LDPC符号の復号処理を、高速に実行することができるようにする復号装置に関する。
近年、例えば、移動体通信や深宇宙通信といった通信分野、及び地上波又は衛星ディジタル放送といった放送分野の研究が著しく進められているが、それに伴い、誤り訂正符号化及び復号の効率化を目的として符号理論に関する研究も盛んに行われている。
符号性能の理論的限界としては、いわゆるシャノン(C. E. Shannon)の通信路符号化定理によって与えられるシャノン限界が知られている。符号理論に関する研究は、このシャノン限界に近い性能を示す符号を開発することを目的として行われている。近年では、シャノン限界に近い性能を示す符号化方法として、例えば、並列連接畳み込み符号(PCCC(Parallel Concatenated Convolutional Codes))や、縦列連接畳み込み符号(SCCC(Serially Concatenated Convolutional Codes))といった、いわゆるターボ符号化(Turbo coding)と呼ばれる手法が開発されている。また、これらのターボ符号が開発される一方で、古くから知られる符号化方法である低密度パリティ検査符号(Low Density Parity Check codes)(以下、LDPC符号という)が脚光を浴びつつある。
LDPC符号は、R. G. Gallagerによる「R. G. Gallager, "Low Density Parity Check Codes", Cambridge, Massachusetts: M. I. T. Press, 1963」において最初に提案されたものであり、その後、「D. J. C. MacKay, "Good error correcting codes based on very sparse matrices", IEEE Trans. Inf. Theory, IT-45, pp. 399-431, 1999」や、「M. G. Luby, M. Mitzenmacher, M. A. Shokrollahi and D. A. Spielman, "Analysis of low density codes and improved designs using irregular graphs", in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998」等において再注目されるに至ったものである。
LDPC符号は、近年の研究により、ターボ符号等と同様に、符号長を長くしていくにしたがって、シャノン限界に近い性能が得られることがわかりつつある。また、LDPC符号は、最小距離が符号長に比例するという性質があることから、その特徴として、ブロック誤り確率特性がよく、さらに、ターボ符号等の復号特性において観測される、いわゆるエラーフロア現象が殆ど生じないことも利点として挙げられる(例えば、非特許文献1参照)。
LDPC符号は、行列内の非ゼロ値要素の数が非常に少ない、疎なパリティ検査行列Hにより定義される線形符号であり、検査行列Hの各行及び各列の非ゼロ値要素の数が一定のもので規定される符号をregular LDPC符号、そうでないものをirregular LDPC符号と呼ぶ。
LDPC符号の符号化は、検査行列Hをガウスの消去法と適切な列の入れ替えにより生成行列Gを生成し、kビットの情報ビットのベクトルsと生成行列Gとに基づいて、nビットの符号語のベクトルcを生成する。符号化に関する更なる詳細については、非特許文献2に記述されている。
LDPC符号の復号法としては、代表的なものにsum-product復号法がある。これは基本的にはBelief Propagation(BP)として知られているアルゴリズムと等価なものである。
また、LDPC符号を定義しているタナーグラフ上で動作するメッセージパッシングアルゴリズムに基づいた反復復号アルゴリズムにより復号される。
タナーグラフでは、変数ノードの各々は、検査行列Hの各列に対応し、チェックノードの各々は、検査行列Hの各行に対応する。また、このアルゴリズムの目標は、受信値より各送信シンボルに対応する事後確率を求めることであるが、一般にLDPC符号のタナーグラフはループを含むため、BPにより正確な事後確率は計算できず近似計算となる。ただし、グラフが疎である場合には、この近似手法が比較的良好な結果を与えることが知られている(例えば、非特許文献3参照)。
また、sum-product復号法におけるチェックノードから変数ノードへのメッセージαの更新に用いる変数ノードからチェックノードへのメッセージβを検査行列の行毎に更新することによって、イタレーション回数が少なくても通常のsum-product復号法と同等の性能を実現でき、メモリ量も削減できるアルゴリズム(Layered BPアルゴリズム)も提案されている(例えば、非特許文献4参照)。
これらのLDPC復号では、検査行列の行毎に一符号語分の対数尤度比ベクトル?=[λ1λ2 …λn …λN]または対数事後確率比ベクトルQ=[ q12 …qn … qN]の中からM行N列の検査行列Hのm行n列目の要素をhmnとしたときhmn = 1を満たすものを選択する必要があり、例えば、hmn = 1を満たす組がNH組あったとし、時間間隔をTSとすると、それぞれについて変数ノードからチェックノードへのメッセージの更新及びを行うのに、チェックノードから変数ノードへのメッセージの更新を行うのに、2×NH×TS の時間が必要となる。また、この変数ノードからチェックノードへのメッセージの更新及びチェックノードから変数ノードへのメッセージの更新をNI回繰り返し行うとすると、受信符号語を復号するのにかかる時間は、2×NH×NI×TS となる。一般的に復号に許容されるレイテンシは、2×NH×NI×TSよりも小さい場合が多く、この構成での実装は困難な場合がある。
そこで、sum-product復号法において、全ノードにおけるメッセージ更新の計算を同時に計算する構成が提案されている(例えば、非特許文献5参照)。この構成の場合、NH組の計算を1クロックで行うため、復号にかかる時間は、2×NI×TSとなりレイテンシを非常に小さくすることが可能となる。
また、検査行列に対して、行置換や列置換を施すことによって、構成行列(P×Pの単位行列、そのコンポーネントの1のうち1個以上が0になった準単位行列、単位行列若しくは準単位行列をサイクリックシフトしたシフト行列、単位行列、準単位行列、若しくはシフト行列の複数の和である和行列、またはP×Pのゼロ行列)の組み合わせで表すことができる検査行列に変換し、そうすることで、LDPC符号の復号におけるチェックノードから変数ノードへのメッセージの更新及び、変数ノードからチェックノードへのメッセージの更新の計算をP個並列に行うことが可能となる構成も提案されている(例えば、特許文献1参照)。これにより、復号にかかるクロック数を抑えつつ、回路規模も実現可能な範囲に抑えることが可能となる。この構成の場合、復号にかかる時間は2×NH×NI×TS / Pとなる。また、検査行列が上記構成行列の組合せで表されるとき、構成行列がゼロ行列のとき0、ゼロ行列でないとき1に置き換えて表現したM/P行N/P列の行列を重み行列と呼ぶ。
R. G. Gallager, "Low density parity check codes," IRE Trans. Inform. Theory, vol. 8, pp. 21-28, Jan. 1962.
D. J. C. MacKay, "Good error-correcting codes based on very sparse matrices," IEEE Trans. Inform. Theory, vol. 45, pp. 399-431, Oct. 1999.
和田山 正, "バースト通信路に適した反復復号法," 電子情報通信学会論文誌D-II, vol. J88-D-II, no.2, pp. 170-187, 2005.
D. E. Hocevar, "A reduced complexity decoder architecture via layered decoding of LDPC codes," IEEE Workshop on Signal Processing Systems, pp. 107-112, 2004.
C. Howland and A. Blanksby, "Parallel Decoding Architectures for Low Density Parity Check Codes," IEEE International Symposium on Circuits and Systems, vol. 4, pp. 742-745, May. 2001.
特開2004-343170号公報
しかしながら、非特許文献5の技術では、全てのノードにおけるメッセージ更新の計算を並列に行う必要があるため回路規模が増大してしまうという問題がある。また、この構成の場合、ノード間の接続を配線によって行うため複数の検査行列に対して復号器を共有することは困難であるという問題がある。
また、Layered BP復号法の場合には、検査行列の各行におけるhmn = 1を満たす複数のqnを一度に読み出し、検査行列1行分のメッセージ更新の計算を並列に行う構成が考えられるが、この構成を実現するためには、qnをレジスタに保存して、例えば、符号長個(N個)のqnの中から各行におけるhmn = 1を満たす複数のqnをセレクトするセレクタが必要になる。一般的に、LDPCの符号長は数千から数万と大きいことから、この構成の回路規模は増大してしまうと考えられる。
さらに、次世代無線LANなどに用いられる場合など実装するアプリケーションによっては、要求レイテンシが厳しく、特許文献1の構成でも要求レイテンシを満たせない場合が生じる。
本発明はこのような状況に鑑みてなされたものであり、簡単な構成で、LDPC符号の復号処理を、高速に実行することができるようにするものである。
本発明の一側面は、LDPC(Low Density Parity Check)符号の復号を行う復号装置において、1符号語分の対数尤度比または対数事後確率比を、それぞれ独立したアドレスに格納する複数の格納手段と、前記複数の格納手段のそれぞれに格納された前記1符号語分の対数尤度比または対数事後確率比の中から、前記LDPC符号の符号化処理において用いられた検査行列の、所定の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比であって、複数個の前記対数尤度比または対数事後確率比を同時に読み出す読み出し手段とを備え、前記検査行列の任意の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比を、前記複数の格納手段から全て読み出すのに必要な読み出し回数が、前記検査行列の行重みの最大値を、前記格納手段の個数で割った値の小数点以下を切り上げて整数化した数であり、前記検査行列の行重みの最大値を、前記格納手段の個数で割った値の小数点以下を切り上げて整数化した数の読み出し回数で、前記検査行列の任意の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比を、前記複数の格納手段から全て読み出せるように、前記1符号語分の対数尤度比または対数事後確率比のそれぞれを、前記複数の格納手段に格納する格納位置決定手段をさらに備える復号装置である。
前記格納手段のそれぞれが、前記LDPC符号の符号長、または検査行列の重み行列の列数を、前記格納手段の個数で割った値、または、その値に1を加算した値、もしくはその値に1を減算した値に対応するアドレス数を有し、前記1符号語分の対数尤度比または対数事後確率比が前記複数の格納手段に、それぞれ格納されるようにすることができる。
前記格納位置決定手段は、前記1符号語分の対数尤度比または対数事後確率比のそれぞれが格納された格納手段と前記アドレスを特定する格納位置決定情報を生成し、前記読み出し手段は、前記格納位置決定情報に基づいて、複数個の前記対数尤度比または対数事後確率比を同時に読み出すようにすることができる。
本発明の一側面においては、1符号語分の対数尤度比または対数事後確率比が、それぞれ独立したアドレスに格納され、前記複数の格納手段のそれぞれに格納された前記1符号語分の対数尤度比または対数事後確率比の中から、前記LDPC符号の符号化処理において用いられた検査行列の、所定の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比であって、複数個の前記対数尤度比または対数事後確率比が同時に読み出される。また、前記検査行列の任意の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比を、前記複数の格納手段から全て読み出すのに必要な読み出し回数が、前記検査行列の行重みの最大値を、前記格納手段の個数で割った値の小数点以下を切り上げて整数化した数であり、前記検査行列の行重みの最大値を、前記格納手段の個数で割った値の小数点以下を切り上げて整数化した数の読み出し回数で、前記検査行列の任意の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比を、前記複数の格納手段から全て読み出せるように、前記1符号語分の対数尤度比または対数事後確率比のそれぞれが、前記複数の格納手段に格納される。
本発明によれば、簡単な構成で、LDPC符号の復号処理を、高速に実行することができる。
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の復号装置は、LDPC(Low Density Parity Check)符号の復号を行う復号装置において、1符号語分の対数尤度比または対数事後確率比を、それぞれ独立したアドレスに格納する複数の格納手段(例えば、図4のRAM100乃至RAM103)と、前記複数の格納手段のそれぞれに格納された前記1符号語分の対数尤度比または対数事後確率比の中から、前記LDPC符号の符号化処理において用いられた検査行列の、所定の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比であって、複数個の前記対数尤度比または対数事後確率比を同時に読み出す読み出し手段(例えば、図9のステップS203の処理を実行する図5の復号部202)とを備え、前記検査行列の任意の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比を、前記複数の格納手段から全て読み出すのに必要な読み出し回数が、前記検査行列の行重みの最大値を、前記格納手段の個数で割った値の小数点以下を切り上げて整数化した数であり、前記検査行列の行重みの最大値を、前記格納手段の個数で割った値の小数点以下を切り上げて整数化した数の読み出し回数で、前記検査行列の任意の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比を、前記複数の格納手段から全て読み出せるように、前記1符号語分の対数尤度比または対数事後確率比のそれぞれを、前記複数の格納手段に格納する格納位置決定手段をさらに備える
以下、図面を参照して、本発明の実施の形態について説明する。
最初に、本発明で用いられるLDPC(Low Density Parity Check)符号の復号について説明する。
LDPC符号は、例えば、移動体通信や深宇宙通信といった通信分野、及び地上波又は衛星ディジタル放送といった放送分野において用いられる、低密度パリティ検査符号の誤り訂正符号化及び復号の方式である。
符号性能の理論的限界としては、いわゆるシャノン(C. E. Shannon)の通信路符号化定理によって与えられるシャノン限界が知られている。符号理論に関する研究は、このシャノン限界に近い性能を示す符号を開発することを目的として行われている。
近年では、シャノン限界に近い性能を示す符号化方法として、例えば、並列連接畳み込み符号(PCCC(Parallel Concatenated Convolutional Codes))や、縦列連接畳み込み符号(SCCC(Serially Concatenated Convolutional Codes))といった、いわゆるターボ符号化(Turbo coding)と呼ばれる手法が開発されているが、これらのターボ符号が開発される一方で、古くから知られる符号化方法であるLDPC符号が脚光を浴びつつある。
LDPC符号は、近年の研究により、ターボ符号等と同様に、符号長を長くしていくにしたがって、シャノン限界に近い性能が得られることがわかりつつある。また、LDPC符号は、最小距離が符号長に比例するという性質があることから、その特徴として、ブロック誤り確率特性がよく、さらに、ターボ符号等の復号特性において観測される、いわゆるエラーフロア現象が殆ど生じないことも利点として挙げられる。
LDPC符号は、行列内の非ゼロ値の要素の数が非常に少ない、疎なパリティ検査行列Hにより定義される線形符号であり、検査行列Hの各行及び各列の非ゼロ値要素の数が一定のもので規定される符号をregular LDPC符号、そうでないものをirregular LDPC符号と呼ぶ。
以下では二元LDPC符号を例に説明する。LDPC符号の符号化は、検査行列Hに基づいて生成行列Gを生成し、この生成行列Gを2元の情報メッセージに対して乗算することによって符号語を生成することで実現される。具体的には、LDPC符号による符号化を行う符号化装置は、まず、検査行列Hの転置行列HTとの間に、式G・HT=0が成立する生成行列Gを算出する。ここで、生成行列Gが、K×N行列である場合には、符号化装置は、生成行列Gに対してKビットからなる情報メッセージ(ベクトルs)を乗算し、Nビットからなる符号語のベクトルc(=s・G)を生成する。この符号化装置によって生成された符号語は、例えば値が「0」の符号ビットが「+1」に、値が「1」の符号ビットが「−1」にといったようにマッピングされて送信され、所定の通信路を介して受信側において受信されることになる。
LDPC符号の符号化は、検査行列をH、生成行列をG、Kビットの情報ビットのベクトルをs、Nビットの符号語のベクトルをcで表すと、以下の式(1)によってなされることになる。
Figure 0004743156
一方、LDPC符号の復号は、Gallagerが確率復号(Probabilistic Decoding)と称して提案
したアルゴリズムであって、変数ノード(variable node(メッセージノード(message node)とも呼ばれる。))と、チェックノード(check node)とからなる、いわゆるタナーグラフ(Tanner graph)上での確率伝播(belief propagation)によるメッセージ・パッシング・アルゴリズムによって行うことが可能である。
LDPC符号の復号法としては、代表的なものにsum-product復号法がある。これは基本的にはBelief Propagation(BP)として知られているアルゴリズムと等価なものである。
ここで、タナーグラフとは、検査行列Hが式(2)のように与えられたとき、図1で表されるものであり、図中の上側の白い円で示されたノードを変数ノードと呼び、下側の黒い円で示されたノードをチェックノードと呼ぶ。変数ノードの各々は検査行列Hの各列に対応し、チェックノードの各々は検査行列Hの各行に対応する。また、このアルゴリズムの目標は、受信値より各送信シンボルに対応する事後確率を求めることであるが、一般にLDPC符号のタナーグラフはループを含むため、BPにより正確な事後確率は計算できず近似計算となる。ただし、グラフが疎である場合には、この近似手法が比較的良好な結果を与えることが知られている。
Figure 0004743156
ここで、二元のLDPC符号についてsum-product復号法の手順を説明する。
符号Cは、符号長N、検査記号数Mの二元LDPC符号とし、式(3)で表される検査行列Hにより定義されるものとする。なお、以下において、「←」または「→」の記号は、変数などへの値の代入を表しており、「≡」の記号は、所定の値、変数などの定義を表すものとする。
Figure 0004743156
ここで、hmnは検査行列Hのm行n列目の要素を表しており、
変数mと変数nはそれぞれ1≦m≦M,1≦n≦Nを満たす整数である。
例えば、受信信号から得られる1符号語分の対数尤度比ベクトルΛ=[λ1 λ2 …λn …λN]の内、第n番目のビットの対数尤度比をλn(以下、適宜、単に、λnと示す)、m番目のチェックノードからn番目の変数ノードへ送られるメッセージをαmn(以下、適宜、単に、αmnと示す)、n番目の変数ノードからm番目のチェックノードに送られるメッセージをβmn(以下、適宜、単に、βmnと示す)とすると、sum-product復号法においては、次の「STEPA1」乃至「STEPA6」の各ステップの処理を行うことにより復号がなされる。
ここで、対数尤度比λnは、式(4)のように定義される。また、P(x|y)は、受信信号がyであったときに、本来の送信信号がxである条件付確率を表す。また、伝送路がAWGN(Additive White Gaussian Noise)通信路を仮定でき、その雑音の分散がσ2で表されるとき、λnは式(5)のように表すことができる。
Figure 0004743156
Figure 0004743156
STEPA1:初期化
hmn = 1を満たす全ての組(m, n)について、αmnを0に設定する。また、ループカウンタlを1に設定する。受信語ベクトルy=[y1 y2 … yn … yN]から1≦n≦Nの全てのnについてλnを式(5)に従って計算する。
STEPA2:変数ノード処理
hmn = 1を満たす全ての組(m, n)について、βmnを式(6)により計算する。ここで、n番目の変数ノードに接続するチェックノードの番号の集合をB(n)とする。
Figure 0004743156
STEPA3:チェックノード処理
hmn = 1を満たす全ての組(m, n)について、αmnを式(7)により計算する。ここで、m番目のチェックノードに接続する変数ノードの番号の集合をA(m)とする。
Figure 0004743156
ここで、
Figure 0004743156
Figure 0004743156
と定義される。
STEPA4:推定符号語の決定
1≦n≦Nの全てのnについて、式(10)を計算し、更に、式(10)により得られたqnを用いて式(11)を計算し、推定符号語ベクトルcハット(ただし、以下、明細書の文章中では、c_hと記載し、数式中では文字cの上に^を記載した記号をもって記載する)= [c_h1 c_h2 …c_hn …c_hN]を求める。ここで、式(10)のqnは対数事後確率比(以下、適宜、単に、qnと示す)である。
Figure 0004743156
Figure 0004743156
STEPA5:パリティ検査
推定符号語ベクトルc_h = [c_h1 c_h2 …c_hn …c_hN]が、式(12)を満たす場合、c_h = [c_h1 c_h2 …c_hn …c_hN]を推定符号語として出力し、処理は終了される。
Figure 0004743156
STEPA6:カウンタのインクリメント
l≦lmaxならば、l←l + 1とした後、STEPA2に戻る。l≦lmaxでなければc_h = [c_h1 c_h2 …c_hn …c_hN] を推定符号語として出力し、処理は終了される。なお、このsum-product復号法による復号については、非特許文献2と非特許文献3に詳細に記述されている。
また、上述したsum-product復号法における対数事後確率比qnの更新手順を行毎に行うことで、イタレーション回数が少なくても通常のsum-product復号法と同等の性能を実現でき、メモリ量も削減できるアルゴリズム(Layered BPアルゴリズム)も提案されている。Layered BP(アルゴリズム)復号法においては、次の「STEPB1」乃至「STEPB5」の各ステップの処理を行うことにより復号がなされる。
STEPB1:初期化
hmn=1を満たす全ての組(m, n)についてαmnを0に設定する。また、ループカウンタlを1に設定する。受信語ベクトルy=[y1 y2 … yn … yN]から1≦n≦Nの全てのnについてλnを式(5)に従って計算し、qnに代入する。
STEPB2:検査行列の行毎の変数ノード・チェックノード処理
検査行列の行毎に、hmn =1を満たす全ての組(m, n)について、式(13)乃至式(15)を順に計算する。すなわち、式(13)で求めたβnを用いて式(14)を計算し、式(14)により得られたαmnを用いて式(15)を計算し、検査行列Hの行毎に対数事後確率比qnを更新する。
Figure 0004743156
Figure 0004743156
Figure 0004743156
STEPB3:推定符号語の決定
1≦n≦Nの全てのnについて、STEPB2の結果得られるqnを用いて、式(11)を計算し、推定符号語ベクトルc_h = [c_h1 c_h2 …c_hn …c_hN]を求める。
STEPB4:パリティ検査
c_h = [c_h1 c_h2 …c_hn …c_hN]が、式(12)を満たす場合、c_h = [c_h1 c_h2 …c_hn …c_hN]を推定符号語として出力し、処理は終了される。
STEPB5:カウンタのインクリメント
l≦lmaxならば、l←l + 1とした後、STEPB2に戻る。l≦lmaxでなければc_h = [c_h1 c_h2 …c_hn …c_hN]を推定符号語として出力し、処理は終了される。
このように、LDPC符号の復号のパリティ検査においては、式(12)に示されるように、検査行列Hの転置行列と、推定符号語との積が演算され、その演算結果が0であるか否かが判定されるから、検査行列Hの各行において、非ゼロ値(「1」)の要素の位置に対応する(hmn = 1を満たす(m,n)に対応する)推定符号語のビットを抽出して、その抽出されたビット同士の間で排他的論理和を演算する必要がある。
そして、検査行列Hの転置行列と、推定符号語との積が0とならない場合、再度、変数ノード処理、チェックノード処理が行われ、対数事後確率比qnが再度演算されて更新されることになるが、このとき、再度演算されて更新される対数事後確率比qnは、上述した排他的論理和の演算に用いられるビットに対応する対数事後確率比qn、すなわち検査行列Hの各行において、hmn = 1を満たす(m,n)に対応するqnのみでよい。
このように、LDPC符号の復号を行う場合には、対数事後確率比qnを更新するために、式(6)乃至式(7)、式(13)乃至式(15)などの演算の処理を、検査行列Hの各行において計算する必要があるので、M行ある検査行列Hの行毎に、N個の対数尤度比λn (1≦n≦N)、またはN個の対数事後確率比qn (1≦n≦N)の中からhmn = 1を満たす(m,n)に対応するλnまたはqnのみを選択して抽出できるようにしなければ、効率的な復号の処理を実現することはできない。
従って、例えば、LDPC符号の復号を行う復号装置を構成する場合、M個ある検査行列Hの行毎に、メモリやレジスタなどに記憶されているN個の対数尤度比λn (1≦n≦N)、またはN個の対数事後確率比qn (1≦n≦N)の中からhmn =1を満たす(m,n)に対応するλnまたはqnを選択して出力するセレクタなどが従来より設けられていた。
例えば、復号装置のデコードレイテンシに十分な余裕がある場合には、N個のλnまたはN個のqnを、1つのRAM(Random Access Memory)に保存し、検査行列Hの各行におけるhmn =1を満たすλnまたはqnを、RAMのアドレスを指定することにより1つずつ読み出して計算を行えば良い。この構成を、以下、構成Aと称する。
しかし、構成Aの場合、復号が完了するまでに必要な処理の時間が増大する。例えば、検査行列Hにおいて、hmn = 1を満たす組(m,n)がNH個あったとし、復号の繰り返し回数をNIとする。いまの場合、検査行列HのM行分の復号を行うために、NH個の要素について、それぞれ変数ノード処理、チェックノード処理の計算が行われるので、2×NHクロックの処理が必要となる。また、この復号をNI回繰り返すことになるので、受信符号語を復号するのにかかる時間は、時間間隔をTSとすると、2×NH×NI×TS となる。
例えば、次に受信される符号語がレジスタやメモリなどに蓄積され終わるまでのクロック数をNBとすると、NB > 2×NH×NIであれば、この構成Aを採用することも可能である。しかし、NB <2×NH×NIである場合、構成Aを採用することはできない。また、構成Aでは、レイテンシを小さくしたい場合、復号が完了するまでに必要な処理のクロック数が多いため、高速な動作周波数が必要となり、実装が容易ではない。
sum-product復号法の復号装置の構成として、検査行列HのM行分の変数ノード処理、チェックノード処理の計算を同時に計算する構成も提案されている。この構成を、以下、構成Bと称する。構成Bの場合、検査行列HのM行分のNH個の要素についての、変数ノード処理、チェックノード処理の計算をそれぞれ1クロックで行うため、復号にかかる時間は、2×NI×TSとなり、例えば、構成Aの場合と比較してレイテンシを非常に小さくすることが可能となる。
しかしながら、構成Bの場合、検査行列HのM行分の計算を並列に行う必要があるため回路規模が増大してしまうという問題がある。また、構成Bの場合、符号長が異なるLDPC符号、符号化率が異なるLDPC符号、異なる検査行列を持つLDPC符号の復号を行う復号装置を、1つの復号装置として実現することは困難であり、符号依存性が高い構成といえる。
また、Layered BP復号法の復号装置を構成する場合には、検査行列Hの各行におけるhmn=1を満たす(m,n)に対応するλnまたはqnを一度に読み出し、検査行列Hの1行分の変数ノード処理及びチェックノード処理の計算を並列に行う構成が考えられるが、この構成を実現するためには、λnまたはqnをレジスタに保存して、N(符号長)個のqnの中から各行におけるhmn=1を満たす(m,n)に対応するλnまたはqnを逐次選択するセレクタが必要になる。一般的に、LDPC符号の符号長は数千から数万と大きいので、このような構成では、回路規模が非常に大きくなってしまう。
検査行列に対して、行置換や列置換を施すことによって、例えば、P×P(P行P列)の単位行列を構成行列とし、構成行列の組み合わせで表すことができる検査行列に変換し、そうすることで、LDPC符号の復号におけるチェックノード処理、変数ノード処理の計算をP個並列に行う構成も提案されている。この構成を、以下、構成Cと称する。構成Cによれば、受信符号語を復号するのにかかる時間は、2×NH×NI×TS/Pとなる。これにより、復号にかかる時間を抑えつつ、回路規模も実現可能な範囲に抑えることが可能となるが、次世代無線LANなど、極めて小さいレイテンシが要求される場合、やはり高速な動作周波数が必要となり、実装が容易ではない。
しかしながら、仮に、単純な構成で、検査行列の各行におけるhmn = 1を満たす(m,n)に対応するλnまたはqnを、最短の時間で複数個同時に選択する機能を実現することができれば、復号にかかる時間を少なくすることができ、また、回路規模もあまり大きくなることはない。
そこで、本発明においては、λnまたはqnを、1個ずつ、P個ずつ、または1行分全て選択するのではなく、検査行列の各行におけるhmn = 1を満たす(m,n)に対応するλnまたはqnを、最短の時間で複数個(v個またはv×P個)同時に選択する構成を採用する。
このような構成を採用することで、例えば、構成Cの場合と比較して、復号にかかる時間を、さらに抑制することができるとともに、構成Bの場合と比較して回路規模を小さくすることも可能となる。
例えば、N個のλnまたはqnの中から複数個のλnまたは複数個のqnを取り出すために、複数のRAMを用意し、各RAMの1つのアドレスにそれぞれ1個のλnまたは1個のqnを格納する。あるいはまた、検査行列がP行P列の構成行列で構成されている場合には、P個のλnまたはqnにより構成されるデータを複数個同時に取り出すために、各RAMの1つのアドレスにそれぞれP個のλnまたはP個のqnを格納する。
ただし、単純に(例えば、受信符号語の第1ビット目から順番に)複数のRAMにλnもしくはqnを格納しただけでは、λnまたはqnを取り出すときに、1つのRAMの異なるアドレスへの同時アクセスが生じる可能性が高く、検査行列における全ての行において、hmn = 1を満たす(m,n)に対応するλnもしくはqnを最短の時間で複数個同時に読み出すことは出来なくなる。
簡単な例を用いて説明する。例えば、式(16)で表されるような符号化率1/2、符号長24の符号語を符号化または復号するための検査行列Hに対して、式(17)で表される24個のqnをRAMa乃至RAMdの4つのRAMに分割して格納する場合、すなわち、qnを4つずつ同時に取り出す場合を考える。
Figure 0004743156
Figure 0004743156
いまの場合、符号長N=24であるので、qnを4つのRAMに分割して保存する場合、各RAMには6(= 24/4)のアドレスが必要となる。例えば、符号語の第1ビット目から順番にqnを、RAMa乃至RAMdに順に格納していくと、例えば、図2のようになる。
次に、図2のように格納されたqnの中から、検査行列Hの各行についてhmn = 1を満たすものを読み出す。
いまの場合、検査行列Hの第1行目では、(m, n) = (1, 1), (1, 2), (1, 4), (1, 6), (1, 10), (1, 13), (1, 14)がhmn = 1を満たすので、24個のqnの中から、これら7個の(m, n)に対応するq1, q2, q4, q6, q10, q13, q14を読み出せば良いのだが、図2に示されるように格納された場合、q2, q6, q10, q14が同一のRAM(RAMb)に格納されてしまっており、例えば、これら7個のqnを4つのRAMから7個の値を読み出そうとする際の最短時間である2クロックで読み出そうとすると、例えば、RAMbのアドレス[1]およびアドレス[2]を同時に読み出し、さらにアドレス[3]およびアドレス[4]を同時に読み出すなど、異なる2個のアドレスに同時アクセスしなければならない。また、RAMbの異なるアドレスへの同時アクセスを行うことなく、7個のqnを全て読み出そうとすると4クロックかかってしまい効率的ではない。
次に、図3のようにqnを、RAMa乃至RAMdに格納する場合を考える。この場合、検査行列Hの第1行目において読み出すべき、q1、q2、q4、q6、q10、q13、q14は、全て4つのRAMのそれぞれに均等に格納されており、検査行列Hの第1行目の読み出すべき7個のqnを、異なるアドレスへの同時アクセスを行うことなく2クロックで全て読み出すことが出来る。
さらに、図3のように、qnを、RAMa乃至RAMdに格納すれば、検査行列Hの第2行目以後についても、読み出すべきqnを、第1行目の場合と同様に2クロックで読み出すことができる。
従って、図3に示されるように、検査行列Hの第1行目乃至第12行目の各行において読み出すべきqnを、すべて2クロック以下で読み出すことができるように、qnのRAMへの格納位置を適切に設定すれば、1つずつqnを読み出す場合と比較して効率良く、高速にqnを読み出すことが可能となる。また、図3に示されるようにqnのRAMへの格納位置を適切に設定し、それぞれの格納位置を記憶しておくようにすれば、アドレスの指定により所望のqnを取り出すことが可能となるので、例えば、複数個のqnの中から、hmn = 1を満たす(m,n)に対応するqnを逐次選択するためのセレクタなども不要となる。
なお、qnのRAMへの格納位置を適切に設定するための処理については後述する。
さらに、図3に示されるようにqnのRAMへの格納位置を適切に設定すれば、1行分のhmn = 1を満たす(m,n)に対応するqnが各行における読み出しの最短時間である2クロックで読み出される。従って、読み出されたqnを用いて行われる変数ノード処理、チェックノード処理を2回に分けて行うようにすればよいので回路の共有化が図れ、1行分の変数ノード処理、チェックノード処理を、まとめて1回で行う構成の場合と比較して、回路規模を1/ Nrd(いまの場合、Nrd=2)に削減することが可能となる。
図3に示されるようにqnのRAMへの格納位置が適切に設定された場合、符号長をN、検査行列Hの行重みの最大値をwRMax、λnまたはqnを保存するRAMの数をNram、RAMのアドレス数をNaddr、検査行列Hの1行分のλnまたはqnを取り出すために必要なクロック数をNrdとすると、式(18)が成り立つ。Nramは、実装するシステムにおける要求レイテンシを満たすように、動作周波数や検査行列及び復号繰り返し回数などから定める。また、検査行列がP×Pの小行列の組合せで表されるとき、各RAMの1つのアドレスにP個のλnまたはqnを格納するため、見かけ上の符号長N'を式(19)のように定義する。ここで、N'がNramで割り切れ、そのNram個のRAMに均等にλnまたはqnが格納されるとすると、RAMのアドレス数Naddrは式(20)のように表される。
Figure 0004743156
Figure 0004743156
Figure 0004743156
なお、検査行列Hの行重みの最大値wRMaxは、検査行列Hの任意1行における、非ゼロ値の要素の最大数を表しており、例えば、式(16)の検査行列Hには、1行あたり、最大で7個の要素「1」が含まれているので、行重みの最大値wRMaxは、7となる。
また、検査行列Hが、例えば、式(21)に示されるようなサイクリック構造を持つP×P(P行P列)の小行列(いまの場合、P = 4)の組合せで構成されている場合には、P×P行列を1つのhmnの要素とみなすことで、上述した方式を適用することが出来る。この例では、検査行列Hが点線で区切られた複数の小行列により構成されている。すなわち、点線で区切られた1区画が1個の小行列であり、式(21)は、4×8=32個の小行列で構成され、それぞれの小行列は、4×4(4行4列)で構成されている。
Figure 0004743156
ここで、サイクリック構造とは、行列を構成する要素を、例えば、左右方向に、移動(シフト)させることで別の行列が得られる構造のことをいう。例えば、式(21)の最も左上側の小行列の第1行目乃至第4行目の要素を、すべて右方向に1だけシフトさせると、その小行列の右側に隣接する小行列と同じになる。
式(21)を、式(22)のようにみなし、各RAMに格納するλnまたはqnを1個から4個に変更することにより、本発明の構成を適用することが可能である。ただし、その際には、Nram×P個のデータをパラレルに処理する必要があるため、変数ノード処理、チェックノード処理を行う回路の規模もP倍になる。
本発明においては、一符号語分の対数事後確率比qnを更新する際に必要なαmn及びqnの値を、それぞれ複数のRAMに分割して格納することにより、一度に複数の値の読み出しまたは書き込みを行い復号する復号装置を実現する。
以下、本発明を、Layered BP復号法に適用した場合の例について図面を参照して説明する。
図4は、本発明を適用した復号装置の一実施の形態に係る構成例を示すブロック図である。この復号装置10は、例えば、図示せぬ他の装置からLDPC符号により符号化されて送信されてきた符号語を受信し、受信した符号語の誤り訂正を行って復号するようになされている。
また、ここでは、この復号装置10が、例えば、式(16)に示される検査行列Hを用いてLDPC符号により符号化された符号語を復号する例について説明する。式(16)にしめされる検査行列Hは、12行24列なので、検査行列の行と列を表す変数m, nはそれぞれ1≦m≦12,1≦n≦24を満たす整数となる。
同図に示される復号装置10の例では、受信符号語の対数尤度比λnまたは対数事後確率比qnを格納するRAMが、RAM100乃至RAM103の4個のRAMにより構成されている。いまの場合、RAMの数Nram=4であるから、式(20)により各RAMのアドレス数Naddr=6が算出される。RAM100乃至RAM103のアドレス数は、それぞれ6個(アドレス[1]乃至アドレス[6])とされている。
また、検査行列Hの行重みの最大値wRMax =7であるから、式(18)により、検査行列Hの1行分のλnまたはqnを取り出すために必要なクロック数Nrd=2と算出される。
また、この例では、αmnを記憶するRAMとしてRAM104乃至RAM107の4個のRAMが設けられている。いまの場合、RAM104乃至RAM107のアドレス数は、それぞれ24個(アドレス[1]乃至アドレス[24])とされている。
コントローラ112は、メモリなどを有する構成とされ、後述するように予め決定された受信符号語の対数尤度比λnまたは対数事後確率比qnの適切な格納位置を内部のメモリに記憶するようになされており、その情報を元に復号装置10の各部を制御する。
復号装置10による復号が行われる場合、最初に、復号すべき符号語が受信され、例えば、その符号語1語分の各ビットに対応する対数尤度比λnが、スイッチ108乃至スイッチ111のそれぞれに供給される。符号長が24ビットである場合、24個のλnが、例えば、λ1乃至λ24の順に、スイッチ108乃至スイッチ111のそれぞれに供給される。
このとき、コントローラ112は、内部のメモリなどに記憶されている格納位置に基づいて、スイッチ108乃至スイッチ111を制御する制御信号C11乃至制御信号c14を出力する。これにより、24個のλnは、スイッチ108乃至スイッチ111からそれぞれ信号d1乃至信号d4として出力され、RAM100乃至RAM103のそれぞれのアドレスに適切に格納されていくことになる。
この例では、RAM100乃至RAM103の格納位置がそれぞれq1乃至q24で示されており、この格納位置は、図3を参照して説明した格納位置と同様である。なお、まだqnが算出されていないとき、すなわち、受信した符号語の対数尤度比λnがRAM100乃至RAM103に格納されるときは、λ1乃至λ24がそれぞれq1乃至q24で示された格納位置に格納されるものとする。
そして、コントローラ112は、内部のメモリなどに記憶されている格納位置と、検査行列Hの情報に基づいて、制御信号c21乃至制御信号c24を出力し、RAM100乃至RAM103から、検査行列Hの第1行目においてhmn = 1を満たす(m,n)に対応するλnを、更新前の対数事後確率比qnとして読み出し、変数ノード処理部113に供給する。ここでは、最大4個のλnまたはqnが同時に読み出されて信号g1乃至信号g4として変数ノード処理部113に供給される。
なお、αmnの値は、初期値が0としてRAM104乃至RAM107に記憶されるか、または、はじめて読み出す際に0に初期化されており、コントローラ112から出力された制御信号c31乃至制御信号c34に基づいて、演算に必要となるαmnがRAM104乃至RAM107から信号a1乃至信号a4として読み出されて変数ノード処理部113に供給される。
変数ノード処理部113は、式(13)により示される演算を行い、βnを算出し、算出されたβnを、それぞれ信号b1乃至信号b4としてチェックノード処理部114及び遅延回路125に供給する。ここでは、RAM100乃至RAM103から同時に読み出されたλn(更新前のqn)について同時に演算がなされる。
チェックノード処理部114は、式(14)により示される演算を行い、αmnを更新する。更新されたαmnは、信号a1´乃至信号a4´として演算器115と、RAM104乃至RAM107とにそれぞれ供給され、RAM104乃至RAM107に記憶されているαmnの値が更新される。
遅延回路125は、チェックノード処理部114において、αmnの更新のための計算において生じる遅延分だけ信号b1乃至信号b4を遅延させる。
演算器115は、式(15)に示される演算を行い、更新された対数事後確率比qnを算出する。ここでは、遅延回路125及びチェックノード処理部114から同時に供給されたβn及び更新されたαmnの分だけ同時に対数事後確率比qnが算出され、それぞれ信号g1´乃至信号g4´としてスイッチ108乃至スイッチ111に供給される。
このとき、コントローラ112が、内部のメモリなどに記憶されている格納位置に基づいて、制御信号C11乃至制御信号C14を出力し、更新されたqnは、スイッチ108乃至スイッチ111からそれぞれ信号d1乃至信号d4として出力され、RAM100乃至RAM103のそれぞれのアドレスに適切に格納され、RAM100乃至RAM103に格納されている値が更新されていくことになる。この操作を検査行列の全ての行に対して行い、24個のqnを更新する。
検査行列Hの1行分のhmn = 1を満たす(m,n)に対応するλn(またはqn)が全て読み出されて変数ノード処理部113乃至演算器115の処理により更新された対数事後確率比qnが算出された後、RAM100乃至RAM103に格納されている対数事後確率比qnの値がそれぞれ読み出され、パリティ検査部116に供給される。なお、上述したように、Nrd(=2)回で、検査行列Hの1行分のhmn = 1を満たす(m,n)に対応するλn(またはqn)は全て読み出されることになる。
パリティ検査部116は、上述したLayered BP復号法の「STEPB3」と「STEPB4」の各ステップの処理を行って、パリティ検査の結果(OKまたはNG)を表す信号pを生成し、コントローラ112に供給する。
パリティ検査部116から結果NGを表す信号pが供給された場合、コントローラ112は、内部のメモリなどに記憶されている格納位置と、検査行列Hの情報に基づいて、制御信号c21乃至制御信号c24と、制御信号c31乃至制御信号c34を出力して、RAM100乃至RAM103から再び検査行列Hの第1行目においてhmn = 1を満たす(m,n)に対応する対数事後確率比qnを読み出し、また、RAM104乃至RAM107からそれらに対応するαmnを読み出し、演算器113に供給する。これにより、RAM100乃至RAM103に格納されている値がさらに更新されていくことになる。
パリティ検査部116から結果OKを表す信号pが供給された場合、コントローラ112は、制御信号c4を出力して、スイッチ117から1符号語分のqnを符号判定部118に出力させる。
そして、符号判定部118が、供給された信号の正または負の符号を判定し、例えば、正ならば「0」、負ならば「1」として、復号結果である1符号語分(24ビット)のデータを出力する。
図5は、コントローラ112の機能的構成例を示すブロック図である。
同図に示される格納位置決定部201は、RAM100乃至RAM103のそれぞれにおける、対数尤度比λnまたは対数事後確率比qnの格納位置(例えば、RAMを特定するID)を決定する処理を制御する。
格納位置決定部201により決定された格納位置は、制御部203に供給され、コントローラ112の内部のメモリなどに記憶される。
復号部202は、格納位置決定部201により決定された格納位置に基づいて、RAM100乃至RAM103のそれぞれに記憶されている対数尤度比λnまたは対数事後確率比qnを読み出し、受信した符号語を復号する処理を制御する。すなわち、復号部202は、上述した、Layered BP復号法の「STEPB1」乃至「STEPB5」の各ステップの処理を、復号装置10に実行させる。
制御部203は、例えば、格納位置決定部201、および復号部202に処理の実行を指令し、復号装置10の各部を制御する制御信号の生成など各種の処理を制御する。また、制御部203は、格納位置決定部201により決定された格納位置、および予め設定された検査行列Hを、内部のメモリに記憶したり、またそれらをメモリから読み出して、格納位置決定部201、または復号部202に供給する。
なお、ここでは、格納位置決定部201が、コントローラ112の機能ブロックとして設けられていると説明したが、格納位置決定部201が、必ずしも復号装置10に設けられている必要はない。例えば、復号装置10とは別の装置(例えば、パーソナルコンピュータなど)に格納位置決定部201と同等の機能ブロックが設けられることとし、その装置により決定された格納位置の情報が、例えば、通信により復号装置10に送信され、復号装置10のコントローラ112の内部のメモリに格納位置が記憶されるようにすることも可能である。
図6は、本発明における、対数尤度比λnまたは対数事後確率比qnのRAM100乃至RAM103への格納位置を適切に設定するための処理である、格納位置決定処理を説明するフローチャートである。この処理を実行することにより、復号装置10は、各λnまたはqnを、どのRAMのどのアドレスに格納すれば、復号を行うときλnまたはqnを最短の時間で取り出せるかを見つけ出す。すなわち、この処理が実行されることにより、図3を参照して上述したような格納位置が決定される。ここでは、この処理が、例えば、予め復号回路とは別の装置などによって実行され、その結果決定された格納位置がコントローラ112内の内部メモリに格納されるものとする。
また、ここでは、λnまたはqnを格納する複数のRAMであって、例えば4つのRAM(RAM100乃至RAM103)のそれぞれに対して、例えば、1, 2, 3, 4のように番号を割り当てることとする。以下で用いる格納位置候補r' = [r'1 r'2 … r'i … r'N'](以下、適宜、単に、r'と示す)は、qnがどのRAMに格納されるかを示しており、例えば、r'8 = 4であれば、q8のデータは番号「4」のRAM(RAM103)に格納されることを示す。
図6のステップS101において、格納位置決定部201は、複数のRAMのそれぞれへの格納位置候補の生成数をカウントする変数itrを0に初期化する。
ステップS102において、変数itrを1だけインクリメントする。
ステップS103において、格納位置決定部201は、図7を参照して後述する格納位置候補生成処理を実行し、第1回目の格納位置候補r' = [r'1 r'2 … r'i … r'N']を生成する。いまの場合、符号長Nは24なので、式(19)によりN´も24となる。したがって、ここでは、r'1乃至r'24の格納位置候補が生成されることになる。
ステップS104において、格納位置決定部201は、図8を参照して後述する格納位置候補チェック処理を実行する。これにより、ステップS103の処理で生成された第1回目の格納位置候補r' = [r'1 r'2 … r'i … r'N']に、N個のλnまたはN個のqnがそれぞれ格納された場合、hmn = 1を満たす(m,n)に対応するλnまたはqnを、Nrdクロック以下で読み出せるか否かが判定される。
いまの場合、RAM(RAM100乃至RAM103)の個数は4個なのでNram=4、RAMのアドレス数Naddr=6、行重みの最大値wRMax=7であるから、式(18)により、検査行列Hの1行分のλnまたはqnを取り出すために必要なクロック数Nrd=2となる。つまり、hmn=1を満たす(m,n)に対応するλnまたはqnを、2回以下で読み出すことができれば、その格納位置候補は、図3を参照して上述したように適切に設定された格納位置であるといえ、格納位置候補チェック処理のチェック結果はOKとなる。
一方、hmn=1を満たす(m,n)に対応するλnまたはqnを、2クロック以下で読み出すことができなければ、その格納位置候補は、適切に設定された格納位置であるといえず、さらに格納位置候補を生成する必要があるといえ、格納位置候補チェック処理のチェック結果はNGとなる。
ステップS104の処理の後、ステップS105において、格納位置決定部201は、格納位置候補チェック処理のチェック結果はOKであったか否かを判定する。チェック結果がOKではない(NG)と判定された場合、さらに格納位置候補を生成する必要があるので、処理は、ステップS107に進む。
ステップ107において、変数itrが候補の総数nMAXと異なるか否かを判定する。itrがnMAXと異なっていれば、まだ生成可能な候補が存在するので、S102に戻り、次の候補の生成を行う。
そして、ステップS103の処理で、第2回目の格納位置候補r' = [r'1 r'2 … r'i … r'N']が生成され、ステップS104の処理で、第2回目の格納位置候補r' = [r'1 r'2 … r'i … r'N']に、N個のλnまたはN個のqnがそれぞれ格納された場合、hmn = 1を満たす(m,n)に対応するλnまたはqnを、Nrdクロック以下で読み出せるか否かが判定される。
このように、ステップS105において、格納位置候補チェック処理のチェック結果はOKと判定されるまで、ステップ107及びステップS102乃至S105の処理が繰り返し実行される。ステップS105において、格納位置候補チェック処理のチェック結果はOKと判定された場合、ステップ106によって、格納位置候補r'を最終的に決定された格納位置rとして格納位置決定処理は終了する。この場合、例えば、図3を参照して上述したような適切な格納位置が決定されたことになる。
itrがnMAXと一致していれば、全ての候補が出尽くしたので、処理が終了する。この場合、いわば例外的に、λnまたはqnの格納位置として存在し得る格納位置候補を全て生成してチェックしたにも係らず、適切に設定された格納位置が見つからなかったことになる。
次に、図7のフローチャートを参照して、図6のステップS103の格納位置候補生成処理の詳細な例について説明する。
ステップS121において、格納位置決定部201は、変数itrが1であるか否かを判定する。例えば、格納位置候補生成処理で第1回目の格納位置候補が生成される場合、変数itrが1なので、処理は、ステップS124に進むことになる。
ステップS124において、格納位置決定部201は、変数iを1、格納位置候補r1を1にセットする。
そして処理は、ステップS123に進み、格納位置決定部201は、格納位置候補r'iの値がNramより大きいか否かを判定する。いまの場合、Nram=4であり、ステップS124の処理でセットされた変数iの値は1なので、格納位置候補r'1(=1)≦ Nram(=4)となり、処理はステップS125に進む。
ステップS125では、変数iの値が1だけインクリメントされ、ステップS126において、変数iがN´以下であるか否かが判定される。いまの場合変数i(=2)≦ N´(=24)となり、処理は、ステップS127に進む。
ステップS127において、格納位置決定部201は、格納位置候補r'iを1にセットする。いまの場合、格納位置候補r'2=1なる。そして、処理は、ステップS123に戻る。
そして、r'2(=1)≦ Nram(=4)なので、処理は、ステップS123からステップS125乃至S127へと進む。
このように、ステップS123及びステップ125乃至S144の処理が繰り返し実行され、変数iの値が25になったとき、格納位置候補r' = [1 1 … 1]つまり、r'1=1、r'2=1、r'3=1、・・・r'24=1とされており、これが第1回目に生成された格納位置候補となる。
ただし、この格納位置候補が生成された場合、N個のλnまたはN個のqnが全てRAM100に格納されることになるので、実際の格納位置としては不適切であり、当然ステップS104の処理によりチェック結果がNGとなる。
第2回目の格納位置候補が生成される場合、図6のステップS102により変数itrが2であるので、図7のステップS121の判定により、処理は、ステップS122に進む。
ステップS122において、格納位置決定部201は、変数iを1だけデクリメントする。これにより、iは24(=25−1)となる。そして、格納位置候補r'iを1だけインクリメントする。いまの場合、r'24が2(1+1)にセットされることになる。
そして処理は、ステップS123に進み、格納位置候補r'iの値がNramより大きいか否かを判定する。いまの場合、格納位置候補r'24(=2)≦ Nram(=4)となり、処理はステップS125に進む。
ステップS125では、変数iの値が1だけインクリメントされ、ステップS126において、変数iがN´以下であるか否かが判定される。いまの場合変数i(=25)> N´(=24)となり、処理が終了する。いまの場合、格納位置候補r'1=1、r'2=1、r'3=1、・・・r'23=1、r'24=2とされている。
同様に、第3回目の格納位置候補が生成される場合、格納位置候補r'1=1、r'2=1、r'3=1、・・・r'23=1、r'24=3となり、第4回目の格納位置候補が生成される場合、格納位置候補r'1=1、r'2=1、r'3=1、・・・r'23=1、r'24=4となる。
第5回目の格納位置候補が生成される場合、図7のステップS121の判定により、処理は、ステップS122に進み、格納位置決定部201は、変数iを1だけデクリメントする。これにより、iは24(=25−1)となる。そして、格納位置候補r'iを1だけインクリメントする。いまの場合、r'24が5(4+1)にセットされることになる。
そして処理は、ステップS123に進み、いまの場合、格納位置候補r'24(=5)> Nram(=4)となり、ステップS123の判定により、処理は、ステップS128に進む。
ステップS128において、格納位置決定部201は、変数iの値が1であるか否かを判定する。いまの場合、変数i=24なので、処理はステップS122に戻る。
ステップS122において、格納位置決定部201は、変数iを1だけデクリメントする。これにより、iは23(=24−1)となる。そして、格納位置候補r'iを1だけインクリメントする。これにより、r'23は2(=1+1)となる。
その後、処理は、ステップS123に進み、格納位置候補r'iの値がNramより大きいか否かが判定される。いまの場合、格納位置候補r'23(=2)≦ Nram(=4)となり、処理はステップS125に進む。
そして、ステップS125とステップS126の処理を経て、ステップS127に進み、格納位置候補r'24が1にセットされ、処理はステップS123に戻る。
さらに、ステップS123及びステップ125乃至S126の処理を経て、処理は終了する。いまの場合、格納位置候補r'1=1、r'2=1、r'3=1、・・・r'23=2、r'24=1とされている。
同様に、第6回目の格納位置候補が生成される場合、格納位置候補r'1=1、r'2=1、r'3=1、・・・r'23=2、r'24=2とされ、第7回目の格納位置候補が生成される場合、格納位置候補r'1=1、r'2=1、r'3=1、・・・r'23=2、r'24=3とされる。
このように、格納位置候補を繰り返して生成することにより、最大でNram N' = 424(4の24乗)通りの格納位置候補r'が生成されることになる。すなわち、第424回目の格納位置候補が生成される場合、格納位置候補r'1=4、r'2=4、r'3=4、・・・r'24=4とされる。なお、第424回目の格納位置候補が生成された後、図6のステップS104及びステップS105の処理を経てS107の処理に進む。図6のステップS107の処理において、変数itrが候補の総数nMAX(= 424)と等しいと判定されるので、格納位置決定処理が終了することになる。
次に、図8のフローチャートを参照して、図6のステップS104の格納位置候補チェック処理の詳細な例について説明する。
ステップS161において、格納位置決定部201は、ステップS102の処理で生成された格納位置候補r' = [r'1 r'2 … r'i … r'N']に基づいて、RAM100乃至RAM103にλnまたはqnを格納した場合、検査行列Hの各行において、hmn = 1を満たす(m,n)に対応するλnまたはqnが、RAM100乃至RAM103にそれぞれいくつ格納されているかをカウントし、カウント結果を、カウンタ値として保持する。
例えば、RAM100に格納されているλnまたはqnの個数をカウントしたカウンタ値、RAM101に格納されているλnまたはqnの個数をカウントしたカウンタ値、・・・のように、4つのRAMのそれぞれに対応して4つのカウンタ値が保持される。さらに、カウンタ値は、検査行列の各行(12行分)に対して取得されるので、いまの場合、48(=12×4)通りのカウンタ値が保持されることになる。
例えば、カウンタ値を格納する変数であるカウンタcntm,kを、予め定義しておく。ここで、変数mと変数kについて、
1≦m≦M´,1≦k≦Nram
とする。ここで、M'は式(23)のように定義されるものである。
Figure 0004743156
このカウンタcntm,kに、4つのRAMのそれぞれに格納されているλnまたはqnの個数をカウントしたカウンタ値が保持される。
例えば、ステップS103の処理で生成された格納位置候補r' = [r'1 r'2 … r'i … r'N']が[1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4]であった場合、検査行列Hが式(16)で表されるものであるとすると、検査行列の第1行目においてhmn = 1となるのは、(m, n) = (1, 1), (1, 2), (1, 4), (1, 6), (1, 10), (1, 13), (1, 14)であり、r'1 = 1, r'2 = 1, r'4 = 1, r'6 = 1, r'10 = 2, r'13 = 3, r'14 = 3であるので、検査行列Hの第1行目において取り出したいqn、つまり、q1, q2, q4, q6, q10, q13, q14は、番号「1」のRAM(RAM100)に4個、番号「2」のRAM(RAM101)に1個、番号「3」のRAM(RAM102)に2個、番号「4」のRAM(RAM103)に0個格納されていることになり、cnt1,1 = 4, cnt1,2 = 1, cnt1,3 = 2, cnt1,4 = 0となる。
ステップS162において、格納位置決定部201は、ステップS161の処理で得られた48通りのカウンタ値のうちのいずれかが、Nrdを超えているか否かを判定する。いまの場合、Nrdは2であるから、RAM100乃至RAM103のいずれかに、各行においてhmn = 1を満たす(m,n)に対応するλnまたはqnが、3個以上格納されている場合、ステップS162において、カウンタ値のうちのいずれかが、Nrdを超えていたと判定され、処理は、ステップS164に進む。
この場合、hmn = 1を満たす(m,n)に対応するλnまたはqnを、Nrdクロック以下で読み出せないことになるので、チェック結果NGを表すフラグなどが設定される。なお、上述した例の場合、cnt1,1(=4) > Nrd(= 2)であるので、この格納位置候補は不適であり、チェック結果NGになる。
一方、ステップS162において、格納位置決定部201は、ステップS161の処理で得られた48個のカウンタ値のうちのいずれも、Nrdを超えていないと判定された場合、処理は、ステップS163に進む。
この場合、例えば、図3のように、hmn = 1を満たす(m,n)に対応するλnまたはqnを、Nrd回以下のクロック数で読み出せることになるので、チェック結果OKを表すフラグなどが設定される。
このようにして、生成された格納位置候補が適切であるか否かがチェックされる。すなわち、検査行列Hの任意の1行において、読み出すべきqn(またはλn)を2回で全て読み出せるか否かがチェックされる。
なお、図6乃至図8を参照して上述した処理は、対数尤度比λnまたは対数事後確率比qnのRAM100乃至RAM103への格納位置を適切に設定するための処理の一例であって、他の方式により格納位置が適切に設定されるようにしてもよい。
例えば、候補r'において、λnまたはqnが各RAMに均等な個数格納されるような候補のみを生成してもよい。つまり、式(19)により求められるN'がNramで割り切れるときは、Naddr = N' / Nramとなるように格納位置候補が生成され、N'がNramで割り切れないときは、Naddr = ceil(N' / Nram)、またはNaddr = floor(N' / Nram)となるように格納位置候補が生成されるようにする。いまの場合、1符号語分の24個のqn(またはλn)が、4個のRAMにそれぞれ6個ずつ格納されるように格納位置候補が生成される。また、この場合、RAM100乃至RAM103のそれぞれが、LDPC符号の符号長(または検査行列の重み行列の列数)を、RAMの個数で割った値、または、その値に1を加算した値、もしくはその値に1を減算した値に対応するアドレス数を有することになる。
図7を参照して上述した処理では、生成される候補の総数は、Nram N'で表すことができると説明したが、この方式で格納位置候補を生成した場合、生成される格納位置候補の総数nMAXは、式(24)で表すことができる。ただし、記号“!”は階乗を表し、xCyはx個のものから異なるy個のものを選ぶ組合せの総数を表す。このようにすることで、格納位置候補生成処理で生成する候補の数を削減することができ、より効率的な検索が可能である。
Figure 0004743156
このように、図6乃至図8を参照して上述した処理とは異なる方式で格納位置が適切に設定されるようにしてもよい。要は、図3を参照して上述したような適切な格納位置が決定されるようにすればよい。
また、上述したように、格納位置決定部201により、例えば、図6乃至図8を参照して上述した処理が実行されることで、決定された格納位置は、制御部203に供給され、予めコントローラ112の内部のメモリなどに記憶される。すなわち、図6のステップS106の処理で、格納位置候補r' が決定された格納位置rとしてコントローラ112の内部のメモリなどに記憶される。
次に、図9のフローチャートを参照して、復号装置10による復号処理を説明する。この処理は、例えば、復号すべき符号語を受信したとき実行されるものとする。
ステップS201において、変数m及び変数lを1に初期化する。
ステップS202において、復号部202は、対数尤度比λnをRAM100乃至RAM103に格納する。
このとき、例えば、その符号語1語分の各ビットに対応する対数尤度比λnが、スイッチ108乃至スイッチ111のそれぞれに供給され、コントローラ112の内部のメモリなどに記憶されている格納位置に基づいて、スイッチ108乃至スイッチ111を制御する制御信号C11乃至制御信号C14が出力される。これにより、24個のλnがRAM100乃至RAM103のそれぞれのアドレスに適切に格納されていく。
なお、この後の処理で、RAM100乃至RAM103のそれぞれのアドレスに格納された24個の対数尤度比λnが、24個の対数事後確率比qnとして更新されていくことになる。
ステップS203において、復号部202は、検査行列Hの第m行目において、hmn = 1を満たす(m,n)に対応するλnをそれぞれRAM100乃至RAM103から読み出す。
このとき、コントローラ112の内部のメモリなどに記憶されている格納位置と、検査行列Hの情報に基づいて、制御信号c21乃至制御信号c24が出力され、RAM100乃至RAM103から、検査行列Hの第1行目においてhmn = 1を満たす(m,n)に対応するλnが更新前の対数事後確率比qnとして読み出され、変数ノード処理部113に供給される。また、制御信号c31乃至制御信号c34に基づいて、演算に必要となるαmnがRAM104乃至RAM107から信号a1乃至信号a4として読み出されて変数ノード処理部113に供給される。
ステップS204において、復号部202は、αmn、βnの値を計算する。
このとき、変数ノード処理部113が、式(13)により示される演算を行い、算出されたβnを、チェックノード処理部114に供給する。また、チェックノード処理部114が、式(14)により示される演算を行う。
ステップS205において、復号部202は、検査行列Hの1行分のhmn = 1を満たす(m,n)に対応するλn(またはqn)を全て、RAM100乃至RAM103から読み出したか否かを判定し、まだ読み出していないと判定された場合、処理は、ステップS203に戻り、ステップS203乃至ステップS205の処理が繰り返し実行される。
なお、図6乃至図8を参照して上述した処理が実行されて格納位置が決定されたことにより、あと1回のRAM100乃至RAM103から読み出しにより、検査行列Hの1行分のhmn = 1を満たす(m,n)に対応するλn(またはqn)は全て読み出されることになる。
ステップS205において、検査行列Hの1行分のhmn = 1を満たす(m,n)に対応するλn(またはqn)を全て、RAM100乃至RAM103から読み出したと判定された場合、すなわち、ステップS203乃至205の処理がそれぞれ2回ずつ実行された後、処理は、ステップS206に進む。
ステップS206において、復号部202は、式(13)により求めた検査行列1行分のβnを用いて、チェックノード処理部114により更新されたαmnを演算させ、更新されたαmnを、信号a1´乃至信号a4´として演算器115と、RAM104乃至RAM107とにそれぞれ供給する。さらに、演算器115が、式(15)に示される演算を行い、対数事後確率比qnが算出されてRAM100乃至RAM103に格納されている値が更新される。
ステップS207では、検査行列M行分、つまり検査行列の全ての行に対して、qnの更新を行ったか否かを判定する。いまの場合、Mは12である。ステップS207において、mがMと等しくないと判定された場合、まだ全ての行に対して計算が終了していないので、処理は、ステップS208に進み、mを1だけインクリメントして、ステップS203に戻る。一方、ステップS207において、mがMと等しいと判定された場合、全ての行に対して計算が終了しているので、処理は、ステップS209に進む。
ステップS209において、復号部202は、パリティ検査を行う。このとき、パリティ検査部116が、上述したLayered BP復号法の「STEPB3」と「STEPB4」の各ステップの処理を行って、パリティ検査の結果(OKまたはNG)を表す信号pを生成し、コントローラ112に供給する。
ステップS210において、復号部202は、ステップS209におけるパリティ検査の結果がOKであったか否か、または、繰り返し回数を表す変数lが繰り返し回数の上限であるlmaxに達したか否かを判定し、結果OKではなかった(結果NG)と判定された場合、処理は、ステップS211に進む。
ステップS211において、復号部202は、変数mの値を1に初期化し、変数lの値を1だけインクリメントし、ステップS203に戻り、それ以後の処理が繰り返し実行される。
ステップS210において、結果OKと判定された場合、または、繰り返し回数を表す変数lが繰り返し回数の上限であるlmaxに達したと判定された場合、処理は、ステップS212に進み、復号部202は、復号結果を出力する。
このとき、制御信号c4が出力されて、スイッチ117から1符号語分のqnが符号判定部118に出力される。そして、符号判定部118が、供給された信号の正または負の符号を判定し、例えば、正ならば「0」、負ならば「1」として、復号結果である1符号語分(24ビット)のデータを出力する。
このようにしてLDPC符号の復号が行われる。
このように、本発明によれば、λnまたはqnが複数個(Nram個)のRAMに格納され、検査行列の各行におけるhmn = 1を満たすλnまたはqnを複数個同時に読み出す構成とされるので、従来のように、λnまたはqnを1つのRAMに保存し、アドレス指定により1つずつ読み出す構成の場合と比較して、復号にかかるクロック数をNram分の1に抑えることが可能となる。
また、本発明によれば、検査行列1行分の計算(αmn、βn、qnの値の演算)がNrd回に分けて行われるので、検査行列1行分のλnまたはqnを、一度に全て読み出す構成であって、1行分の計算を並列に行う構成の場合と比較して、回路規模を1/Nrdに削減することが可能であるとともに、計算回路の共有化を図ることも可能である。
さらに、検査行列1行分のλnまたはqnを一度に全て読み出す構成の場合、λnまたはqnをレジスタなどに保持させて、その中から所望のλnまたはqnを逐次選択するセレクタなどが必要になるのに対して、本発明においては、そのセレクタが不要になるので回路規模の削減が可能となる。
また、本発明を、例えば、式(21)に示されるようなサイクリック構造を有する小行列によって構成される検査行列を用いるLDPC符号の復号装置に適用することも可能である。上述したように、式(21)は、32個の小行列で構成されており、それぞれの小行列は、4×4(4行4列)で構成されている。
図10は、本発明を適用した復号装置の別の構成例を示すブロック図である。同図の復号装置11は、式(21)に示される検査行列Hを用いてLDPC符号の復号を行う。
図10の例では、図4の場合と異なり、RAM100乃至RAM107の各RAMへ書き込むデータが1アドレスに対して1個ではなくP個(いまの場合、4個)になるため、最初に書き込まれる対数尤度比λnをP個蓄積してP個まとめて1個のデータとするシンボル連接回路123が設けられている。
例えば、1個のλnまたは1個のqnが1オクテットのデータとして表される場合、RAM100乃至RAM107の各RAMの1アドレスには、4オクテットのデータが書き込まれることになる。
また、図10の例では、図4の場合と異なり、復号結果を出力する前に、まとめて1個のデータとされていたものを、元のP個(いまの場合、4個)のデータに戻すシンボル分割回路124が設けられている。
従って、同図において、RAM100乃至RAM103に供給されるデータを表す信号d1乃至信号d4、RAM100乃至RAM103から読み出されたデータを表す信号g1乃至信号g4、RAM104乃至RAM107から読み出されたデータを表す信号a1乃至信号a4は、それぞれ、例えば4オクテット分のデータに対応する信号とされる。
さらに、図10の例では、図4の場合と異なり、RAM100乃至RAM103から出力された4個のデータのビット位置をシフトさせるサイクリックシフタ119乃至サイクリックシフタ122が設けられている。サイクリックシフタ119乃至122は、例えば、4個のλnまたは4個のqnに対応する4オクテットのデータを構成する各オクテットをシフトさせるようになされている。
式(21)を構成する32個の小行列は、4行4列で構成されているが、これらの小行列において、値が1(非ゼロ値)の要素は、1行あたり1のみである。従って、変数ノード処理部113に4個のλnまたは4個のqnを供給する場合、4個のλnまたは4個のqnの中から検査行列Hの非ゼロ値の要素に対応するλnまたはqn、すなわちhmn = 1を満たすλnまたはqnを特定する必要がある。
サイクリックシフタ119乃至122は、4個のλnまたは4個のqnに対応する4オクテットのデータのうち、hmn = 1を満たすλnまたはqnに対応するオクテットのデータを、例えば、第1オクテットにシフトさせるようになされている。なお、サイクリックシフタ119乃至122のそれぞれは、コントローラ112から出力される制御信号c51乃至制御信号c54により制御され、上述したようにデータをシフトさせる。
従って、同図においてサイクリックシフタ119乃至122から出力されるデータを表す信号g11乃至信号g14は、それぞれ信号g1乃至信号g4のデータのオクテット位置がシフトされた4オクテット分のデータに対応する信号とされる。
また、図10の変数ノード処理部113乃至演算器115、および遅延回路125は、それぞれ図4の場合と同様の処理を行うものであるが、例えば、それぞれ演算回路が4個並列に接続された構成とされ、4個のデータに対して処理が並列に行われるようになされている。
従って、同図における変数ノード処理部113から出力されるデータを表す信号b1乃至信号b4、チェックノード処理部114から出力されるデータを表す信号a1´乃至信号a4´、および演算器115から出力されるデータを表す信号g1´乃至信号g4´は、それぞれ、例えば4オクテット分のデータに対応する信号とされる。
図10の例における、それ以外の部分の構成は、図4の場合と同様である。
このように、本発明を適用して、サイクリック構造を有する小行列によって構成される検査行列を用いるLDPC符号の復号装置を構成することもできる。
さらに、本発明は、符号長がN(いまの場合、24)以下のものであれば、異なる符号化率、異なる符号長、または異なる検査行列を用いるLDPC符号の復号を行うことが可能である。
例えば、上述した例とは異なる符号化率、異なる符号長、または異なる検査行列を用いる場合、図6乃至図8を参照して上述した処理をあらためて行い、格納位置決定部201により新たな格納位置を決定させる。
そして、コントローラ112に、新たな格納位置と検査行列に対応して制御信号c11乃至制御信号c14、制御信号c21乃至制御信号c24、および制御信号c31乃至制御信号c34を出力させるようにすればよい。
ただし、新たに定まるNrd × M'の値が、元のNrd × M'の値以下である必要がある。
例として、例えば、式(16)で示された検査行列Hに代えて式(25)で示される検査行列Hを用いる場合を考える。式(25)の検査行列Hの場合、符号化率が2/3のLDPC符号に用いられるものとされ、行重みの最大値wRMax = 11とされる。いまの場合、Nram = 4であるので、式(18)によりNrd =3(= ceil(wRMax / Nram) = ceil(11/4))となる。
Figure 0004743156
この場合、図6乃至図8を参照して上述した処理により、格納位置を決定した場合、決定された格納位置候補r' = [r'1 r'2 … r'i … r'N']として、例えば、r' = [1 1 1 1 2 3 2 3 3 4 2 4 4 2 2 1 3 2 3 3 1 4 4 4]が得られる。この格納位置にqnなどを格納することで、検査行列が式(16)の場合と、回路構成を変更することなく、図4または図10を参照して上述した構成の復号装置10により、式(25)で示される検査行列Hを用いたLDPC符号を復号することが可能である。
なお、以上においては、Layered BP復号法の場合を例として説明したが、本発明を、sum-product復号法の復号装置に用いることも可能である。
なお、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば図11に示されるような汎用のパーソナルコンピュータ500などに、ネットワークや記録媒体からインストールされる。
図11において、CPU(Central Processing Unit)501は、ROM(Read Only Memory)502に記憶されているプログラム、または記憶部508からRAM(Random Access Memory)503にロードされたプログラムに従って各種の処理を実行する。RAM503にはまた、CPU501が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU501、ROM502、およびRAM503は、バス504を介して相互に接続されている。このバス504にはまた、入出力インタフェース505も接続されている。
入出力インタフェース505には、キーボード、マウスなどよりなる入力部506、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部507、ハードディスクなどより構成される記憶部508、モデム、LANカードなどのネットワークインタフェースカードなどより構成される通信部509が接続されている。通信部509は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース505にはまた、必要に応じてドライブ510が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア511が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部508にインストールされる。
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、インターネットなどのネットワークや、リムーバブルメディア511などからなる記録媒体からインストールされる。
なお、この記録媒体は、図11に示される、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フロッピディスク(登録商標)を含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア511により構成されるものだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM502や、記憶部508に含まれるハードディスクなどで構成されるものも含む。
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
タナーグラフの例を示す図である。 不適切なRAMの格納位置の例を示す図である。 適切なRAMの格納位置の例を示す図である。 本発明の一実施の形態に係る復号装置の構成例を示すブロック図である。 図4のコントローラで実行されるソフトウェアの機能的構成例を示すブロック図である。 格納位置決定処理の例を説明するフローチャートである。 格納位置候補生成処理の例を説明するフローチャートである。 格納位置候補チェック処理の例を説明するフローチャートである。 復号処理の例を説明するフローチャートである。 本発明の一実施の形態に係る復号装置の別の構成例を示すブロック図である。 パーソナルコンピュータの構成例を示すブロック図である。
符号の説明
10 復号装置, 100乃至107 RAM, 112 コントローラ, 113 変数ノード処理部, 114 チェックノード処理部, 115 演算器, 116 パリティ検査部, 118 符号判定部, 123 Pシンボル連接回路, 124 Pシンボル分割回路, 125 遅延回路, 201 格納位置決定部, 202 復号部, 203 制御部 500 パーソナルコンピュータ, 501 CPU, 511 リムーバブルメディア

Claims (3)

  1. LDPC(Low Density Parity Check)符号の復号を行う復号装置において、
    1符号語分の対数尤度比または対数事後確率比を、それぞれ独立したアドレスに格納する複数の格納手段と、
    前記複数の格納手段のそれぞれに格納された前記1符号語分の対数尤度比または対数事後確率比の中から、前記LDPC符号の符号化処理において用いられた検査行列の、所定の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比であって、複数個の前記対数尤度比または対数事後確率比を同時に読み出す読み出し手段とを備え、
    前記検査行列の任意の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比を、前記複数の格納手段から全て読み出すのに必要な読み出し回数が、
    前記検査行列の行重みの最大値を、前記格納手段の個数で割った値の小数点以下を切り上げて整数化した数であり、
    前記検査行列の行重みの最大値を、前記格納手段の個数で割った値の小数点以下を切り上げて整数化した数の読み出し回数で、
    前記検査行列の任意の1行における非ゼロ値の要素に対応する前記対数尤度比または対数事後確率比を、前記複数の格納手段から全て読み出せるように、前記1符号語分の対数尤度比または対数事後確率比のそれぞれを、前記複数の格納手段に格納する格納位置決定手段をさらに備える
    復号装置。
  2. 前記格納手段のそれぞれが、前記LDPC符号の符号長、または検査行列の重み行列の列数を、前記格納手段の個数で割った値、または、その値に1を加算した値、もしくはその値に1を減算した値に対応するアドレス数を有し、
    前記1符号語分の対数尤度比または対数事後確率比が前記複数の格納手段に、それぞれ格納される
    請求項に記載の復号装置。
  3. 前記格納位置決定手段は、前記1符号語分の対数尤度比または対数事後確率比のそれぞれが格納された格納手段と前記アドレスを特定する格納位置決定情報を生成し、
    前記読み出し手段は、前記格納位置決定情報に基づいて、複数個の前記対数尤度比または対数事後確率比を同時に読み出す
    請求項に記載の復号装置。
JP2007119090A 2007-04-27 2007-04-27 復号装置 Expired - Fee Related JP4743156B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007119090A JP4743156B2 (ja) 2007-04-27 2007-04-27 復号装置
KR1020080033163A KR20080096387A (ko) 2007-04-27 2008-04-10 디코딩 장치
US12/100,730 US8205130B2 (en) 2007-04-27 2008-04-10 Decoding apparatus
EP08007862A EP1986329A1 (en) 2007-04-27 2008-04-23 Decoding apparatus with a plurality of memories for decoding of LDPC codes
CN2008100950526A CN101295988B (zh) 2007-04-27 2008-04-28 解码设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007119090A JP4743156B2 (ja) 2007-04-27 2007-04-27 復号装置

Publications (2)

Publication Number Publication Date
JP2008278184A JP2008278184A (ja) 2008-11-13
JP4743156B2 true JP4743156B2 (ja) 2011-08-10

Family

ID=39651352

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007119090A Expired - Fee Related JP4743156B2 (ja) 2007-04-27 2007-04-27 復号装置

Country Status (5)

Country Link
US (1) US8205130B2 (ja)
EP (1) EP1986329A1 (ja)
JP (1) JP4743156B2 (ja)
KR (1) KR20080096387A (ja)
CN (1) CN101295988B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2944660B1 (fr) * 2009-04-16 2011-09-09 St Microelectronics Sa Decodeur ldpc
US8255759B2 (en) * 2009-10-29 2012-08-28 Qualcomm Incorporated APP (a priori probability) storage design for LTE turbo decoder with quadratic permutation polynomial interleaver
US8930791B2 (en) 2009-12-23 2015-01-06 Intel Corporation Early stop method and apparatus for turbo decoding
US8918695B2 (en) * 2009-12-23 2014-12-23 Intel Corporation Methods and apparatus for early stop algorithm of turbo decoding
US8996948B2 (en) * 2009-12-23 2015-03-31 Intel Corporation Methods, systems, and apparatus for tail termination of turbo decoding
RU2497277C2 (ru) * 2010-07-29 2013-10-27 Российская Федерация, от имени которой выступает государственный заказчик-Государственная корпорация по атомной энергии "Росатом" Способ сжатия двоичных данных в виде структурированных информационных блоков
CN103026770B (zh) * 2010-08-13 2015-03-11 华为技术有限公司 用于改善通信系统中的harq反馈的装置及方法
US8819517B1 (en) 2011-01-06 2014-08-26 Intel Corporation Systems and methods for a turbo decoder in a universal mobile telecommunication system (UMTS)
US8495455B1 (en) 2011-01-06 2013-07-23 Mindspeed Technologies, Inc. Systems and methods for parallel dual-mode turbo decoders
CN103532568A (zh) * 2012-07-03 2014-01-22 联咏科技股份有限公司 迭代译码装置及其相关译码方法
CN103401655B (zh) * 2013-08-14 2016-05-18 山东大学 一种用ldpc译码消息存储结构进行译码的方法
CN107005253B (zh) * 2015-02-10 2020-05-19 松下知识产权经营株式会社 一种解码装置
US10548158B2 (en) * 2016-03-10 2020-01-28 Huawei Technologies Co., Ltd. Message passing algorithm decoder and methods
KR102589918B1 (ko) * 2016-07-19 2023-10-18 삼성전자주식회사 저밀도 패리티 체크 디코더 및 그것을 포함하는 저장 장치
CN110768679B (zh) * 2019-10-30 2023-08-22 湖南国科微电子股份有限公司 64进制ldpc的码字校验方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004364233A (ja) * 2003-05-13 2004-12-24 Sony Corp 復号装置および復号方法、並びにプログラム
JP2006304129A (ja) * 2005-04-25 2006-11-02 Sony Corp 復号装置および復号方法
JP2007020068A (ja) * 2005-07-11 2007-01-25 Sony Corp 復号装置および復号方法
JP2008072247A (ja) * 2006-09-12 2008-03-27 Fujitsu Ltd Ldpc復号器の演算制御データ生成方法及びldpc復号器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928602B2 (en) * 2001-07-18 2005-08-09 Sony Corporation Encoding method and encoder
JP3837742B2 (ja) * 2003-02-21 2006-10-25 ソニー株式会社 復号装置および復号方法、記録再生装置、プログラム格納媒体、並びに、プログラム
JP4224777B2 (ja) 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
KR20040101743A (ko) * 2003-05-26 2004-12-03 삼성전자주식회사 통신 시스템에서 저밀도 패리티 검사 코드의 복호 장치 및방법
JP4296949B2 (ja) * 2004-02-03 2009-07-15 ソニー株式会社 復号装置及び方法、並びに情報処理装置及び方法
EP1806849A4 (en) * 2004-10-08 2008-03-05 Mitsubishi Electric Corp APPARATUS PROVIDING A VERIFICATION MATRIX AND COMMUNICATION APPARATUS
US8132080B2 (en) * 2005-07-13 2012-03-06 Mitsubishi Electric Corporation Communication apparatus and decoding method
JP4563454B2 (ja) * 2005-08-10 2010-10-13 三菱電機株式会社 検査行列生成方法、符号化方法、復号方法、通信装置、通信システム、符号化器および復号器
JP4607732B2 (ja) 2005-10-25 2011-01-05 株式会社フジシールインターナショナル 帯状フィルムの接続方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004364233A (ja) * 2003-05-13 2004-12-24 Sony Corp 復号装置および復号方法、並びにプログラム
JP2006304129A (ja) * 2005-04-25 2006-11-02 Sony Corp 復号装置および復号方法
JP2007020068A (ja) * 2005-07-11 2007-01-25 Sony Corp 復号装置および復号方法
JP2008072247A (ja) * 2006-09-12 2008-03-27 Fujitsu Ltd Ldpc復号器の演算制御データ生成方法及びldpc復号器

Also Published As

Publication number Publication date
KR20080096387A (ko) 2008-10-30
US20080270868A1 (en) 2008-10-30
CN101295988B (zh) 2012-06-06
CN101295988A (zh) 2008-10-29
EP1986329A1 (en) 2008-10-29
JP2008278184A (ja) 2008-11-13
US8205130B2 (en) 2012-06-19

Similar Documents

Publication Publication Date Title
JP4743156B2 (ja) 復号装置
JP6357572B2 (ja) 符号化装置、及び、符号化方法
JP4702632B2 (ja) 符号化方法および符号化装置、並びにプログラム
US7343548B2 (en) Method and apparatus for encoding and decoding data
US9608666B1 (en) Non-concatenated FEC codes for ultra-high speed optical transport networks
KR101227264B1 (ko) Ldpc 코드용 디코더
US10103751B2 (en) Non-concatenated FEC codes for ultra-high speed optical transport networks
US11245425B2 (en) Non-concatenated FEC codes for ultra-high speed optical transport networks
US8166363B2 (en) Decoding device and method
JP4622654B2 (ja) 復号装置および復号方法
US20050240853A1 (en) Decoding device, decoding method, and program
JP4858335B2 (ja) 符号化方法および符号化装置
US9825650B2 (en) Decoder architecture for cyclically-coupled quasi-cyclic low-density parity-check codes
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
JP4572937B2 (ja) 復号装置および方法、プログラム、並びに記録媒体
JP2014099931A (ja) 符号化方法、符号化器、復号器
JP5034588B2 (ja) 軟判定復号装置および軟判定復号プログラム
JP5500203B2 (ja) 軟判定復号装置および軟判定復号プログラム
JP5288222B2 (ja) 符号化方法および符号化装置
Angarita et al. Modified shuffled based architecture for high-throughput decoding of LDPC codes
JP2009100234A (ja) 符号化器、符号化方法、及び復号方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110328

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110425

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees