JP2009100423A - 復号装置および方法、並びにプログラム - Google Patents

復号装置および方法、並びにプログラム Download PDF

Info

Publication number
JP2009100423A
JP2009100423A JP2007272519A JP2007272519A JP2009100423A JP 2009100423 A JP2009100423 A JP 2009100423A JP 2007272519 A JP2007272519 A JP 2007272519A JP 2007272519 A JP2007272519 A JP 2007272519A JP 2009100423 A JP2009100423 A JP 2009100423A
Authority
JP
Japan
Prior art keywords
matrix
unit
shift
quasi
decoding
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.)
Granted
Application number
JP2007272519A
Other languages
English (en)
Other versions
JP4487213B2 (ja
Inventor
Mineshi Yokogawa
峰志 横川
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 JP2007272519A priority Critical patent/JP4487213B2/ja
Priority to EP08253305A priority patent/EP2051386A3/en
Priority to TW097139363A priority patent/TWI371930B/zh
Priority to KR1020080101735A priority patent/KR20090040225A/ko
Priority to US12/252,470 priority patent/US8281205B2/en
Priority to CN2008101705377A priority patent/CN101414834B/zh
Publication of JP2009100423A publication Critical patent/JP2009100423A/ja
Application granted granted Critical
Publication of JP4487213B2 publication Critical patent/JP4487213B2/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/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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
    • 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/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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1165QC-LDPC codes as defined for the digital video broadcasting [DVB] specifications, e.g. DVB-Satellite [DVB-S2]
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • 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/6577Representation or format of variables, register sizes or word-lengths and quantization
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

【課題】LDPC復号装置等の回路規模縮小を図る。
【解決手段】受信値バッファ500は、通信路を通して受信したデータD500を1符号分蓄え、受信値格納メモリ501に転送する。ここで、検査行列の列の並び替えは符号系列の並び替えに相当する。よって、制御部506の制御に基づいて、次のような並び替え処理が受信値バッファ500において実行される。即ち、データD500を表す検査行列は、6×6の構成行列の集合体として表されている。そこで、6×6の構成行列を並び替えの単位として、その6×6の構成行列を、所定規則に基づいて、3×3の構成行列の集合体となる行列に並び替えを行う、といった並び替え処理が実行される。これにより、その後段では、3×3の構造のLDPC符号の復号動作と同様の動作が実現可能になる。本発明はLDPC符号の復号装置に適用可能である。
【選択図】図12

Description

本発明は、復号装置および方法並びにプログラムに関し、特に、構造の異なる複数のLDPC符号の復号ができ、かつ、回路規模縮小も図ることができる復号装置および方法並びにプログラムに関する。
通信システムにおいては、コーディングを使用して雑音のある通信チャネルに渡る信頼性ある通信が行われている。例えば、衛星ネットワークのようなワイヤレス(または無線)システムでは、地理的および環境的要因からの雑音源が多い。これらの通信チャネルは固定容量を表し、ある信号対雑音比(SNR)におけるシンボル当たりのビットに関して表すことができ、シャノン限界として知られる理論的上限を規定している。結果として、コーディング設計はこのシャノン限界に近づくレートを達成することを目的としている。この目的は、帯域幅制約衛星システムに対して特に密接な関係がある。
近年では、シャノン限界に近い性能を示す符号化方法として、例えば、並列連接畳み込み符号(PCCC(Parallel Concatenated Convolutional Codes))や、縦列連接畳み込み符号(SCCC(Serially Concatenated Convolutional Codes))といった、いわゆるターボ符号化(Turbo coding)と称される手法が開発されている。また、これらのターボ符号が開発される一方で、古くから知られる符号化方法である低密度パリティ検査符号(Low Density Parity Check codes)(以下、LDPC符号と称する)が脚光を浴びつつある。
LDPC符号は、R. G. Gallagerによる非特許文献1において最初に提案されたものであり、その後、非特許文献2,3等において再注目されるに至ったものである。
LDPC符号は、近年の研究により、ターボ符号等と同様に、符号長を長くしていくに従って、シャノン限界に近い性能が得られることがわかりつつある。また、LDPC符号は、最小距離が符号長に比例するという性質があることから、その特徴として、ブロック誤り確率特性がよく、さらに、ターボ符号等の復号特性において観測される、いわゆるエラーフロア現象が殆ど生じないことが利点として挙げられる。
以下、このようなLDPC符号について具体的に説明する。なお、LDPC符号は、線形符号であり、必ずしも2元である必要はないが、ここでは、2元であるものとして説明する。
LDPC符号は、そのLDPC符号を定義する検査行列(parity check matrix)が疎なものであることを最大の特徴とするものである。ここで、疎な行列とは、行列のコンポーネントの"1"の個数が非常に少なく構成されるものであり、疎な検査行列をHで表すものとすると、そのような検査行列Hとしては、例えば、図1に示すように、各列のハミング重み("1"の数)(weight)が"3"であり、且つ、各行のハミング重みが"6"であるもの等がある。
このように、各行及び各列のハミング重みが一定である検査行列Hによって定義されるLDPC符号は、レギュラーLDPC符号と称される。一方、各行及び各列のハミング重みが一定でない検査行列Hによって定義されるLDPC符号は、イレギュラーLDPC符号と称される。
このようなLDPC符号による符号化は、検査行列Hに基づいて生成行列Gを生成し、この生成行列Gを2元の情報メッセージに対して乗算することによって符号語を生成することで実現される。具体的には、LDPC符号による符号化を行う符号化装置は、まず、検査行列Hの転置行列HTとの間に、式GHT=0が成立する生成行列Gを算出する。ここで、生成行列Gが、k×n行列である場合には、符号化装置は、生成行列Gに対してkビットからなる情報メッセージ(ベクトルu)を乗算し、nビットからなる符号語c(=uG)を生成する。この符号化装置によって生成された符号語は、値が"0"の符号ビットが"+1"に、値が"1"の符号ビットが"−1"にといったようにマッピングされて送信され、所定の通信路を介して受信側において受信されることになる。
なお、例えば、nビットの符号語cが、kビットの情報メッセージuに続けて、n-kビットのパリティビットを配置したビット列に一致する組織符号である場合に、n-k行n列の検査行列Hにおいて、nビットの符号語cのうちのkビットの情報メッセージuに対応するn-k行k列の部分を情報部というとともに、n-kビットのパリティビットに対応するn-k行n-k列の部分をパリティ部ということとすると、パリティ部が、下三角行列または上三角行列になっていれば、情報メッセージuのLDPC符号への符号化は、検査行列Hを用いて行うことができる。
即ち、例えば、検査行列Hが、図2に示すように、情報部と、下三角行列のパリティ部とで構成され、パリティ部の下三角の部分の要素が、すべて1であるとすると、符号語cのパリティビットの1番目のビットは、情報メッセージuのうちの、検査行列Hの情報部の第1行において1になっている要素に対応するビットのEXOR(排他的論理和)を演算した値となる。
また、符号語cのパリティビットの2番目のビットは、情報メッセージuのうちの、検査行列Hの情報部の第2行において1になっている要素に対応するビットと、パリティビットの1番目のビットのEXORを演算した値となる。
さらに、符号語cのパリティビットの3番目のビットは、情報メッセージuのうちの、検査行列Hの情報部の第3行において1になっている要素に対応するビットと、パリティビットの1番目および2番目のビットのEXORを演算した値となる。
以下、同様にして、符号語cのパリティビットのi番目のビットは、情報メッセージuのうちの、検査行列Hの情報部の第i行において1になっている要素に対応するビットと、パリティビットの1乃至i-1番目のビットのEXORを演算した値となる。
以上のようにして、n-kビットのパリティビットを求め、kビットの情報メッセージuに続けて配置することにより、nビットの符号語cを得ることができる。
一方、LDPC符号の復号は、Gallagerが確率復号(Probabilistic Decoding)と称して提案したアルゴリズムであって、バリアブルノード(バリアブルノード(メッセージノード(message node)とも呼ばれる。))と、チェックノード(チェックノード)とからなる、いわゆるタナーグラフ(Tanner graph)上での確率伝播(belief propagation)によるメッセージ・パッシング・アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノードとチェックノードを、単に、ノードともいう。
しかしながら、確率復号においては、各ノード間で受け渡されるメッセージが実数値であることから、解析的に解くためには、連続した値をとるメッセージの確率分布そのもを追跡する必要があり、非常に困難を伴う解析を必要とすることになる。そこで、Gallagerは、LDPC符号の復号アルゴリズムとして、アルゴリズムA又はアルゴリズムBを提案している。
LDPC符号の復号は、例えば、図3に示すような手順に従って行われる。なお、ここでは、符号長の長さのLDPC符号の受信データのi番目をU0(u0i)とし、チェックノードから出力されるj番目のメッセージ(チェックノードに接続しているj番目の枝から出力されるメッセージ)をujとし、バリアブルノードから出力されるi番目のメッセージ(バリアブルノードに接続しているi番目の枝から出力されるメッセージ)をviとする。また、ここでは、メッセージとは、値の"0"らしさを表す、いわゆる対数尤度比(log likelihood ratio)等を表現する実数値である。
まず、LDPC符号の復号においては、図3に示すように、ステップS11において、受信データU0(u0i)が受信され、メッセージujが"0"に初期化されるとともに、繰り返し処理のカウンタとしての整数をとる変数kが"0"に初期化され、処理は、ステップS12に進む。ステップS12において、受信データU0(u0i)を用いて、式(1)に示すバリアブルノードの演算を行うことによってメッセージviが求められ、さらに、このメッセージviを用いて、式(2)に示すチェックノードの演算を行うことによってメッセージujが求められる。
Figure 2009100423
・・・(1)
Figure 2009100423
・・・(2)
ここで、式(1)と式(2)におけるdvとdcは、それぞれ、検査行列Hの縦方向(列)と横方向(行)の"1"の個数、つまり、列の重み(ハミング重み)と行の重みを示す任意に選択可能とされるパラメータであり、例えば、(3,6)符号の場合には、dv=3,dc=6となる。
なお、式(1)又は(2)の演算においては、それぞれ、メッセージを出力しようとする枝(edge)から入力されたメッセージを、和又は積演算の対象としては用いないことから、和又は積演算の範囲が、1ないしdv-1又は1ないしdc-1となっている。また、式(2)に示す演算は、2入力v1,v2に対して1が得られる式(3)に示す関数R(v1,v2)のテーブルを予め作成しておき、これを式(4)に示すように連続的(再帰的)に用いることによって行うことができる。
Figure 2009100423
・・・(3)
Figure 2009100423
・・・(4)
ステップS12では、さらに、変数kが"1"だけインクリメントされ、処理は、ステップS13に進む。ステップS13では、変数kが所定の繰り返し復号回数N以上であるか否かが判定される。ステップS13において、変数kがN以上ではないと判定された場合、処理は、ステップS12に戻り、以下、同様の処理が繰り返される。
また、ステップS13において、変数kがN以上であると判定された場合、処理は、ステップS14に進み、式(5)に示す演算を行うことによって最終的に出力する復号結果としてのメッセージvが求められて出力され、LDPC符号の復号処理が終了する。
Figure 2009100423
・・・(5)
ここで、式(5)の演算は、式(1)の演算とは異なり、バリアブルノードに接続している全ての枝からのメッセージujを用いて行われる。
このようなLDPC符号の復号では、例えば(3,6)符号の場合には、図4に示すように、各ノード間でメッセージの授受が行われる。なお、図4において"="(イコール)で示すノードは、バリアブルノードを表し、式(1)に示したバリアブルノードの演算が行われる。また、図4において"+"(プラス)で示すノードは、チェックノードを表し、式(2)に示したチェックノードの演算が行われる。特に、アルゴリズムAにおいては、メッセージを2元化し、"+"で示すチェックノードにて、dc-1個の入力メッセージ(チェックノードに入力されるメッセージvi)の排他的論理和演算を行い、"="で示すバリアブルノードにて、受信データRに対して、dv-1個の入力メッセージ(バリアブルノードに入力されるメッセージuj)が全て異なるビット値であった場合には、符号を反転して出力する。
また、近年、LDPC符号の復号の実装法に関する研究も行われている。実装方法について述べる前に、まず、LDPC符号の復号を摸式化して説明する。
図5は、(3,6)符号のLDPC符号(符号化率1/2、符号長12)の検査行列(parity check matrix)Hの例である。LDPC符号の検査行列Hは、図6のように、タナーグラフを用いて書き表すことができる。ここで、図6において、"+"で表されるのが、チェックノードであり、"="で表されるのが、バリアブルノードである。チェックノードとバリアブルノードは、それぞれ、検査行列の行と列に対応する。チェックノードとバリアブルノードとの間の結線は、枝(edge)であり、検査行列Hの"1"に相当する。すなわち、検査行列の第j行第i列のコンポーネントが1である場合には、図6において、上からi番目のバリアブルノード("="のノード)と、上からj番目のチェックノード("+"のノード)とが、枝により接続される。枝は、バリアブルノードに対応するLDPC符号(の受信データ)のビットが、チェックノードに対応する拘束条件を持つことを表す。なお、図6は、図5の検査行列Hのタナーグラフとなっている。
LDPC符号の復号方法であるサムプロダクトアルゴリズム(Sum Product Algorithm)は、バリアブルノードの演算とチェックノードの演算とを繰り返し行う。
バリアブルノードでは、図7のように、式(1)のバリアブルノードの演算を行う。すなわち、図7において、バリアブルノードに接続している枝のうちのi番目の枝に対応するメッセージviは、バリアブルノードに接続している残りの枝からのメッセージu1及びu2と、受信データu0iとを用いて計算される。他の枝に対応するメッセージも同様に計算される。
チェックノードの演算について説明する前に、式(2)を、式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)の関係を用いて、式(6)のように書き直す。但し、sign(x)は、x≧0のとき1(論理0)であり、x<0のとき-1(論理1)である。
Figure 2009100423
・・・(6)
さらに、x≧0において、非線形関数φ(x)=-ln(tanh(x/2))を定義すると、その逆関数φ-1(x)は、式φ-1(x)=2tanh-1(e-x)で表されるから、式(6)は、式(7)のように書くことができる。
Figure 2009100423
・・・(7)
チェックノードでは、図8のように、式(7)のチェックノードの演算を行う。すなわち、図8において、チェックノードに接続している枝のうちのj番目の枝に対応するメッセージujは、チェックノードに繋がっている残りの枝からのメッセージv1,v2,v3,v4,v5を用いて計算される。他の枝に対応するメッセージも同様に計算される。
なお、関数φ(x)は、φ(x)=ln((ex+1)/(ex-1))とも表すことができ、x>0において、φ(x)=φ-1(x)、すなわち、非線形関数φ(x)の演算結果と、その逆関数φ-1(x)の演算結果とは同一である。関数φ(x)及びφ-1(x)をハードウェアに実装する際には、LUT(Look Up Table)を用いて実装される場合があるが、両者は同一のLUTとなる。
また、式(1)のバリアブルノードの演算は、式(5)と、次の式(8)とに分けることができる。
Figure 2009100423
・・・(8)
したがって、式(5)及び式(8)と、式(7)の演算を繰り返し行うことにより、式(1)のバリアブルノードの演算と、式(7)のチェックノードの演算を繰り返し行うことができる。この場合、式(5)及び式(8)のバリアブルノードの演算のうちの、式(5)の演算の結果を、そのまま、最終的な復号結果とすることができる。
サムプロダクトアルゴリズムをハードウェアに実装して、復号装置とする場合、式(1)(、又は式(5)及び式(8))で表されるバリアブルノード演算(バリアブルノードの演算)及び式(7)で表されるチェックノード演算(チェックノードの演算)を、適度な回路規模と動作周波数で繰り返し行うことが必要である。
以下、このような復号装置の実装の例について説明する。
LDPC符号の復号アルゴリズムは、その特徴として極めて高い並列処理復号装置の実装を可能とする。しかしながら、符号長が大きい符号の完全並列復号装置は回路規模が非常に大きくなり、実現が困難である。
そこで、近年、現実的な回路規模での復号装置の実装に適した構造を持つLDPC符号が提案され、DVB-S.2(ETSI EN302307)等の伝送方式に採用されている。よって、以下、かかるLDPC符号を、DVB-S.2のLDPC符号と称する。
DVB-S.2のLDPC符号は、検査行列に対して行/列置換を施すことにより、次のような構造を持つ行列により表すことができるようになっている。
即ち、P=360としたとき、P×Pの単位行列、その単位行列のコンポーネントである1のうち1個以上が0になった行列(以下、適宜、準単位行列という)、単位行列または準単位行列をサイクリックシフト(cyclic shift)した行列(以下、適宜、シフト行列という)、単位行列、準単位行列、またはシフト行列のうちの2以上(複数)の和(以下、適宜、和行列という)、P×Pの0行列を構成行列として、複数の構成行列の組合わせにより構成される検査行列によって、DVB-S.2のLDPC符号は表すことができるようになっている。なお、以下、かかる構造の検査行列を、P×Pの構造の検査行列と称する。そして、以下、P×Pの構造の検査行列で表されるLDPC符号を、「Pの符号」と称する。
このような「Pの符号」を用いることで、P個の受信値(Pビット)およびP個のメッセージ(Pビット)を同時に処理する復号装置が実装可能となっている。
ただし、以下では説明を容易なものとすべく、P=6として説明を行っていく。図9は、符号化率2/3、符号長108のLDPC符号を表す検査行列であって、6×6の構造の検査行列の一例を示している。なお、図9の例では、6×6の構造を明確なものとすべく、6×6の各構成行列の間には間隔が空けられている。また、図9の例では、見易さのため、「0」の代わりに「.」と記述されている。即ち、図9の例の検査行列は、6×6の単位行列、その単位行列の1のうち1個が0になった準単位行列、それらのシフト行列、それらの和行列、6×6の0行列といった構成行列の組合わせにより構成されている。
図10は、このような「P=6のLDPC符号」を復号する復号装置の一例を示している。
図10の例の復号装置は、受信値バッファ200、受信値格納メモリ201、ノード演算部202、シフト部203、メッセージ格納メモリ204、および復号結果格納メモリ205を含むように構成されている。
受信値バッファ200は、通信路を通して受信したデータD200を1符号分蓄え、データD201として受信値格納メモリ201に転送する。なお、受信値バッファ200に採用されている伝送方式によっては、受信値バッファ200において符号ビットの並び替えが行われる場合もある。
受信値格納メモリ201は、受信値データD201を図9の検査行列の列の順に6個(1個は6ビット)ずつを同時に読み出し、即ち、6×6の構成行列を単位として読み出し、それらを6個の受信データD202として、ノード演算部202に供給する。
ノード演算部202は、6つのノード演算器210−1乃至210−6を有している。6つのノード演算器210−1乃至210−6は、受信値格納メモリ201から供給される6個の受信データD202のうちの所定の1個と、メッセージ格納メモリ204から供給される6個のメッセージD205のうちの所定の1個とを用いて、図示せぬ制御部の指示に基づいて、チェックノード演算またはバリアブルノード演算をそれぞれ並行に行い、計算したメッセージD203をシフト部203にそれぞれ供給する。即ち、ノード演算器210−1乃至210−6によってそれぞれ同時演算された6個のメッセージD203が出力されて、シフト部203に供給される。また、バリアブルノード演算時には、ノード演算器210−1乃至210−6によってそれぞれ演算された6個の復号結果D206が同時に出力されて、復号結果格納メモリ205に供給される。
シフト部203には、ノード演算部202から6個のメッセージD203が供給される場合、それに対応する枝が図9の検査行列において元となる単位行列などを幾つサイクリックシフトしたものであるかの情報が図示せぬ制御部から提供される。そこで、シフト部203は、この情報に基づいて、6個のメッセージD203を並べ替えるサイクリックシフトを行い、その結果をメッセージD204として、メッセージ格納メモリ204に供給する。
メッセージ格納メモリ204は、シフト部203から供給された6個のメッセージD204を、図示せぬ制御部から指定されるアドレスに格納する。また、メッセージ格納メモリ204は、図示せぬ制御部から指定されるアドレスから読みだした6個のデータを6個のメッセージD205としてノード演算部202に供給する。
復号結果格納メモリ205は、ノード演算部202のノード演算器210−1乃至210−6から同時にそれぞれ供給される6ビット分の復号結果D206、即ち6個の復号結果D206を格納し、復号が完了した後に、復号結果D207として出力する。
なお、この図10の復号装置は、各種メモリへの読み書きの順番やシフト量を適切に制御することで、単一の符号のみならず、同じ構造を持つ別の符号の復号を行なうこともできる。
図11は、ノード演算部202の6つのノード演算器210−1乃至210−6のそれぞれの構成例を示している。なお、以下、6つのノード演算器210−1乃至210−6を個々に区別する必要がない場合、単に、ノード演算器210と称する。
図11の例のノード演算器210は、式(1)に従ったバリアブルノード演算と、式(7)に従ったチェックノード演算とを相互に切り替えて行うことができる。
ノード演算器210は、外部からメッセージ(データ)が供給(入力)される入力ポートとして、2つの入力ポートP301,P302を有している。すなわち、入力ポートP301には、図10の受信値格納メモリ201から読み出された受信データD202が供給される。入力ポートP302には、図10のメッセージ格納メモリ204から読み出されたメッセージD205が供給される。
また、ノード演算器210は、図10のシフト部203に対してメッセージD203を供給(出力)する出力ポートP303と、図10の復号結果格納メモリ205に対して復号結果D206を供給(出力)する出力ポートP304を有している。
ノード演算器210は、セレクタ301,316,318を有している。これらのセレクタ301,316,318が“v”の側を選択した場合には、ノード演算器210はバリアブルノード演算を行うことになる。これに対して、セレクタ301,316,318が“c”の側を選択した場合には、ノード演算器210はチェックノード演算を行うことになる。
まず、バリアブルノード演算を行う場合の動作の観点から、ノード演算器210の説明をする。
メッセージ格納メモリ204から供給される1列分のチェックノードからのメッセージD205が入力ポートP302を介して、メッセージD301(メッセージuj)として一つずつ入力され、セレクタ301を通過してメッセージD306として加算器302に入力される。加算器302には、セレクタ317の出力データD323も入力される。即ち、メッセージD306に対して、セレクタ317の出力データD323が加算されて、その加算値がレジスタ303に格納される。
ここで、セレクタ317の入力がレジスタ303の出力データD307側に切り替えられている場合、加算器302において、メッセージD306に対して、レジスタ303に格納してあるデータD307が加算されて、その加算値がレジスタ303に再格納される。
一方、セレクタ317の入力がセレクタ318の出力データD322側に切り替えられている場合、加算器302において、メッセージD306に対して、セレクタ318の出力データD322が加算される。即ち、セレクタ318の出力データD322とは、入力ポートP301に受信データD300として受信された受信データD202(u0i)である。よって、加算器302において、メッセージD306に対して、受信データD202(u0i)が加算されて、その加算値がレジスタ303に格納される。
このような動作が1列分繰り返されると、レジスタ303には、j=1からdvまでのΣuj+u0iに相当するデータが蓄積される。かかるデータD307(j=1からdvまでのΣuj+u0i)は、セレクタ304を介してレジスタ305に格納される。
一方、遅延用FIFO310は、レジスタ305から新たなデータD308(j=1からdvまでのΣuj+u0i)が出力されるまでの間、セレクタ301が出力したチェックノードからのメッセージD306を遅延し、遅延入力メッセージD315として減算器312に供給する。
遅延入力メッセージD315は、減算器312においてレジスタ305の出力データD308から減算されて、その減算値D316(j=1からdv-1までのΣuj+u0i)がセレクタ316を通過して、メッセージD321となる。このメッセージD312が、出力メッセージD203として出力ポートP303から出力されて図10のシフト部203に供給される。
以上の内容を換言すると、ノード演算器210は、バリアブルノードに繋がっている全てのチェックノードからのメッセージと受信データの和から、求めたいチェックノードからのメッセージを引いて、求めたい枝 (edge)へのメッセージを計算することで、式(1)の演算を実現している。
次に、チェックノード演算を行う場合の動作の観点から、ノード演算器210の説明をする。
図10のメッセージ格納メモリ204から供給される1行分のバリアブルノードからのメッセージD205が入力ポートP302を介して、メッセージD301(メッセージvi)として一つずつ入力され、その絶対値D303(|vi|)がLUT300に供給される。
LUT300は、そこに入力される値を引数xとして、式(7)のチェックノード演算における非線形関数φ(x)の演算結果を出力するLUTであり、絶対値D303(|vi|)の供給に対して、非線形関数φ(|vi|)の演算を行った演算結果D305(φ(|vi|))を読み出す。
この演算結果D305(φ(|vi|))は、セレクタ301を通過してメッセージD306として加算器302に入力される。加算器302において、このメッセージD306に対して、セレクタ317の出力データD323が加算されて、即ち、レジスタ303に格納してあるデータD307が加算されて、その加算値がレジスタ303に再格納される。このように、データD307は、演算結果D305(φ(|vi|))の積算値となる。
1行分のメッセージD301(メッセージvi)の各演算結果D305(φ(|vi|))が積算されると、その積算値D307(i=1からdcまでのΣφ(|vi|))はセレクタ304を通過して、レジスタ305に格納される。
一方、遅延用FIFO310は、レジスタ305から新たなデータD308(i=1からdcまでのΣφ(|vi|))が出力されるまでの間、セレクタ301の出力データD306、即ち、LUT300の演算結果D305を遅延し、遅延データD315として減算器312に供給する。
減算器312において、レジスタ305に格納されている積算メッセージD308から、遅延データD315が減算され、その減算値D316(i=1からdc-1までのΣφ(|vi|))はLUT314に供給される。
LUT314は、そこに入力される値を引数xとして、式(7)のチェックノード演算における非線形関数φ(x)の逆関数φ-1(x)の演算結果を出力するLUTであり、減算器312からの減算値D316(i=1からdc-1までのΣφ(|vi|))の供給に対して、逆関数φ-1(Σφ(|vi|))の演算を行った演算結果D318(φ-1(Σφ(|vi|)))を出力する。
以上の処理と並行して、各メッセージD301の正負を表す符号ビット(sign bit)D304 (sign(vi))と、レジスタ307に格納されている値D310との排他的論理和がEXOR回路306において演算されることで、その演算結果D309がレジスタ307に再格納される。
レジスタ307において、1行分の符号ビットが積算されたところで、その積算値D310(i=1からdcまでのΠsign(vi))がセレクタ308を通過して、レジスタ309に格納される。
一方、遅延用FIFO310は、レジスタ309から新たなデータD311(i=1からdcまでのΠsign(vi))が出力されるまでの間、積算に用いられた符号ビットD304(sign(vi))を遅延し、遅延符号ビットD313 としてEXOR回路315に供給する。
この遅延符号ビットD313と、レジスタ309の積算値D311との排他的論理和がEXOR回路315において演算されることで、その演算結果、即ちi=1からdc-1までのΠsign(vi)が符号ビットD319として出力される。
最終的に、LUT314の演算結果D318(φ-1(Σφ(|vi|)))に対して、この符号ビットD319が付加された値D320が、セレクタ316を通過してメッセージD321となる。このメッセージD312が、出力メッセージD203として出力ポートP303から出力されて図10のシフト部203に供給される。
以上の内容を換言すると、ノード演算器210は、チェックノードに繋がっている全てのバリアブルノードからのメッセージの和から、求めたいバリアブルノードからのメッセージを引くことで、式(7)の演算を実現している。
また、ノード演算器210は、復号の最終段(例えば、あらかじめ定められた繰り返し復号の回数Nだけ行われるバリアブルノード演算及びチェックノード演算のうちの最後に行われるバリアブルノード演算)において、式(1)のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果、即ち、レジスタ305からの出力データD308が、復号結果D206として出力ポートP304から出力されて図10の復号結果格納メモリ205に供給される。
なお、図10の例の復号装置は、「P=6の符号」の復号装置であるが、Pが6以外の「Pの符号」の復号装置も基本的に図10の例と基本的に同様の構成を取ることができる。
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 parse matrices", Submitted to 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
しかしながら、「Pの符号」の復号装置を、従来の技術で図10の例と同様の構成で実現する場合、ノード演算器は6並列でなくP並列必要となる。また、シフト部も、6×6ではなくP×Pのサイクリックしフトを行う必要がある。さらにまた、各種メモリも、6個のデータではなくP個のデータを同時に読み書きできる必要がある。
よって、Pの値が大きい場合には、復号装置全体の回路規模が増大してしまうという問題が生ずる。
また、従来の復号装置では、「Pの符号」以外の例えば「Qの符号」の復号を行なうことができない。従って、ひとつの伝送システムに用いる符号はすべて、「Pの符号」であることが必要であった。そのため、例えば、伝送レートの高い固定受信機向けのサービス用に「Pの符号」、伝送レートは低いが消費電力制限の大きい携帯型受信機向けのサービス用には「Qの符号」を採用するような伝送システムでは、共用受信機を構成する場合に、「Pの符号」と「Qの符号」のそれぞれに対して専用の復号装置を別々に設ける必要がある、といった問題も生じてしまう。
本発明は、このような状況に鑑みてなされたものであり、構造の異なる複数のLDPC符号の復号ができ、回路規模縮小も図ることができる復号装置を提供することを目的とするものである。
本発明の一側面の復号装置は、LDPC(Low Density Parity Check)符号を復号する復号装置であって、前記LDPC符号が、P×Pの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはP×Pの0行列を第1の構成行列として、複数の前記第1の構成行列の組合せによる第1の構造の検査行列で元々表現されるか、または、元々の検査行列の行と列のうちの少なくとも1以上の置換により前記第1の構造の行列で表現される場合、FをPの1以外の約数としたとき、前記LDPC符号を受信した結果得られる受信値を復号するための演算として、F個のチェックノードの演算またはF個のバリアブルノードの演算を並列的に行い、各演算の結果得られるF個のメッセージを出力するメッセージ計算手段と、前記メッセージ計算手段から出力されるF個の前記メッセージに対して、F×Fのサイクリックシフトを行って出力するシフト手段と、前記シフト手段から出力されるF個の前記メッセージの書き込み、書き込まれたF個の前記メッセージの読み出し、または、F個の前記受信値の読み出し若しくは書き込みができる記憶手段と、F×Fの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはF×Fの0行列を第2の構成行列として、複数の前記第2の構成行列の組合せによる第2の構造の行列を定義した場合に、前記第1の構造の検査行列で表現される前記受信値に対して少なくとも列置換処理若しくはそれと等価な処理を施すことで、前記メッセージ計算手段への前記受信値の提供の制御として、前記第2の構成行列に対応するF個の前記受信値を単位とする提供の制御を行う制御手段とを備える。
前記列置換処理として、P=F×Jとして、前記第1の構造の行列を構成する前記複数の第1の構成行列のP個の列に対して列番号0乃至P-1を付したとして、前記第1の構成行列を処理単位として、処理対象の前記第1の構成行列に対して列置換を施すことで、処理対象の前記第1の構成行列を、前記列番号をJで除算した余りが同一になる列同士で構成される複数の前記第2の構成行列によって区分する処理を含んでいる。
前記LDPC符号を受信することにより得られる受信値をバッファリングするバッファ手段をさらに備え、前記制御手段は、前記バッファ手段において、前記第1の構造の行列の形態で受信される前記受信値を並び替えて、前記第2の構造の行列の形態でバッファリングさせる制御を行い、前記第2の構造の行列の形態でバッファリングされた前記受信値を、前記第2の構成行列に対応するF個の前記受信値を単位として、前記記憶手段を介して前記メッセージ計算手段に提供する制御を行う。
前記制御手段は、前記第1の構造の行列の形態で受信される前記受信値の中から、前記第2の構造の行列に変化した場合に前記第2の構成行列に対応するF個の前記受信値を選択して、選択したF個の前記受信値を、前記記憶手段を介して前記メッセージ計算手段に提供する制御を行う。
本発明の一側面の復号方法およびプログラムは、本発明の一側面の上述した復号装置に対応する方法およびプログラムである。
本発明の一側面の復号装置および方法並びにプログラムにおいては、LDPC(Low Density Parity Check)符号を復号する復号装置において、次のような処理がなされる。即ち、前記LDPC符号が、P×Pの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはP×Pの0行列を第1の構成行列として、複数の前記第1の構成行列の組合せによる第1の構造の検査行列で元々表現されるか、または、元々の検査行列の行と列のうちの少なくとも1以上の置換により前記第1の構造の行列で表現される場合に、FをPの1以外の約数としたとき、前記LDPC符号を受信した結果得られる受信値を復号するための演算として、F個のチェックノードの演算またはF個のバリアブルノードの演算を並列的に行い、各演算の結果得られるF個のメッセージを出力するメッセージ計算処理が行われる。また、前記メッセージ計算処理の結果出力されるF個の前記メッセージに対して、F×Fのサイクリックシフトを行って出力するシフト処理が行われる。また、前記シフト処理の結果出力されるF個の前記メッセージの書き込み、書き込まれたF個の前記メッセージの読み出し、または、F個の前記受信値の読み出し若しくは書き込みがほぼ同時に行われる。そして、F×Fの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはF×Fの0行列を第2の構成行列として、複数の前記第2の構成行列の組合せによる第2の構造の行列を定義した場合に、前記第1の構造の検査行列で表現される前記受信値に対して少なくとも列置換処理若しくはそれと等価な処理を施すことで、前記メッセージ計算処理に対する前記受信値の提供の制御として、前記第2の構成行列に対応するF個の前記受信値を単位とする提供の制御が行われる。
本発明によれば、LDPC(Low Density Parity Check)符号を復号する復号装置を提供できる。特に、構造の異なる複数のLDPC符号の復号ができ、回路規模縮小も図ることができる。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、明細書または図面における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、明細書または図面に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、明細書または図面に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
本発明の一側面の復号装置は、
LDPC(Low Density Parity Check)符号を復号する復号装置(例えば図12の復号装置)であって、
前記LDPC符号が、
P×Pの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはP×Pの0行列を第1の構成行列として、複数の前記第1の構成行列の組合せによる第1の構造の検査行列(例えば、図9のP=6の場合の検査行列)で元々表現されるか、または、元々の検査行列の行と列のうちの少なくとも1以上の置換により前記第1の構造の行列で表現される場合、
FをPの1以外の約数としたとき、
前記LDPC符号を受信した結果得られる受信値を復号するための演算として、F個のチェックノードの演算またはF個のバリアブルノードの演算を並列的に行い、各演算の結果得られるF個のメッセージを出力するメッセージ計算手段(例えば、図12のF=3とした場合の3つのノード演算器510−1乃至510−3を含むノード演算部502)と、
前記メッセージ計算手段から出力されるF個の前記メッセージに対して、F×Fのサイクリックシフトを行って出力するシフト手段(例えば図12のシフト部503)と、
前記シフト手段から出力されるF個の前記メッセージの書き込み、書き込まれたF個の前記メッセージの読み出し、または、F個の前記受信値の読み出し若しくは書き込みができる記憶手段(例えば、図12のメッセージ格納メモリ504や受信値格納メモリ501)と、
F×Fの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはF×Fの0行列を第2の構成行列(例えば、図13の6×6の行列を第1の構成行列とした場合に、その第1の構成行列の行/列が置換された図14の6×6の行列を点線で区分した4×4の各行列が第2の構成行列となっている)として、複数の前記第2の構成行列の組合せによる第2の構造の行列を定義した場合に、前記第1の構造の検査行列で表現される前記受信値に対して少なくとも列置換処理若しくはそれと等価な処理を施すことで、前記メッセージ計算手段への前記受信値の提供の制御として、前記第2の構成行列に対応するF個の前記受信値を単位とする提供の制御を行う制御手段(例えば図12の制御部506)とを備える。
前記LDPC符号を受信することにより得られる受信値をバッファリングするバッファ手段(例えば図12の受信値バッファ500)をさらに備え、
前記制御手段は、
前記バッファ手段において、前記第1の構造の行列の形態で受信される前記受信値を並び替えて、前記第2の構造の行列の形態でバッファリングさせる制御を行い、
前記第2の構造の行列の形態でバッファリングされた前記受信値を、前記第2の構成行列に対応するF個の前記受信値を単位として、前記記憶手段を介して前記メッセージ計算手段に提供する制御を行う。
次に、本発明の手法について説明する。
本明細書でいう「Pの符号」とは、準巡回(QC(Quasi Cyclic))符号の性質を持ったLDPC符号のひとつである。
ここでQC符号とは、任意の符号語を、ある自然数の周期だけ巡回シフトした系列が、元の符号語以外の符号語となる符号のことをいう。
QC符号の検査行列は、巡回行列(cyclic matrix)を用いて表すことができる。かかる巡回行列が、本明細書でいうシフト行列であり、全ての列がある任意の列、例えば最初の列の巡回シフト(サイクリックシフト)である行列として定義される。
「Pの符号」に含まれるシフト行列は、上述したように、P×Pの単位行列または準単位行列がサイクリックシフトされて生成される。即ち、P×Pの単位行列または準単位行列に対して、サイクリックシフトを1列ずつ順次施していくことで、相異なる種類のシフト行列が順次生成されていくことになる。そして、P列分のサイクリックシフトが行われると、元の単位行列または準単位行列が再度得られることになる。即ち、このようなサイクリックシフトの単位がPとなっている。
ここで、留意すべき点は、厳密には、「Pの符号」で用いられる「準単位行列」とそのシフト行列は、QC符号には含まれない点である。即ち、「Pの符号」を含むDVB-S2のLDPC符号には行/列置換後に、右上の1個所のみ、「準単位行列」が現れる。その意味で、厳密には、DVB-S2のLDPC符号は、QC符号ではない。ただし、DVB-S2のLDPC符号の復号器では、この欠けた部分に簡単な例外処理を施しているだけなので、復号器のアーキテクチャとしては、QCの場合と何等違いはない。以上のことから、「Pの符号」は、QC符号のひとつであると記述せずに、QC符号の性質を持ったと記述した次第である。
換言すると、P×Pのシフト行列、その生成元となるP×Pの単位行列若しくはP×Pの準単位行列、これらの和であるP×Pの和行列、P×Pの0行列を構成行列として、各構成行列を規則的に配置させた行列が、P×Pの構造の検査行列である。「Pの符号」は、このような規則的な構造の検査行列として表すことができるゆえ、準巡回符号の性質を持っているのである。
即ち、「Pの符号」とは、P×Pのシフト行列等のP×Pの構成行列を単位として構成されるという規則性を有している。よって、「Pの符号」の復号装置を、従来の技術で図10の例と同様の構成で実現する場合、ノード演算器は6並列でなくP並列必要となっていた。また、シフト部も、6×6ではなくP×Pのサイクリックシフトを行う必要があった。さらにまた、各種メモリも、6個のデータではなくP個のデータを同時に読み書きできる必要があった。
そこで、本発明人は、P×Pの構造の検査行列に対して、行や列の置換を行うことで、F×Fの構成行列(ただし、Fは1以外のPの約数)を規則的に配置させた行列に並び替える処理またはそれと等価な処理(以下、これらをまとめて並び替え処理と称する)を実行し、並び替え処理後の行列を用いて復号を行う、といった手法を発明した。ここで、F×Fの構成行列の種類としてはP×Pの構成行列と同種類の行列、即ち、F×Fの単位行列、F×Fの準単位行列、F×Fのシフト行列、および、F×Fの和行列、F×Fの0行列が存在する。
なお、並び替える処理またはそれと等価な処理をまとめて並び替え処理と呼称することにしたのは、次の理由による。即ち、P×Pの構造の検査行列に対して行または列を実際に並び替えて行列の構造を変換させた状態でメモリに格納させた後に、復号する(ノード演算器側に提供する)ことは必須ではないからである。即ち、例えば、P×Pの構造のままで検査行列をメモリに格納させ、ノード演算器に提供する段階で、行または列を並び替える手法と等価な手法により、選択的にメモリから読み出してノード演算器に提供してもよいからである。即ち、ノード演算器からすると、検査行列の並び替えが行われた状態と等価な状態で、各受信データが提供されれば足りるからである。
換言すると、本発明の手法とは、P×Pの構造の検査行列で表現される受信値に対して少なくとも列の置換をする処理若しくはそれと等価な処理を含む並び替え処理を施す手法であり、これにより、ノード演算器への受信値の提供の制御として、F×Fの構成行列に対応するF個の受信値を単位とした提供を実現する手法であるといえる。
このような本発明の手法を適用することで、「Pの符号」を復号する場合でも、ノード演算器の並列数をP並列からF並列に削減することができる。また、シフト部も、P×PではなくF×Fのサイクリックシフトを行えば足りるようになる。さらにまた、各種メモリも、P個のデータではなくF個のデータを同時に読み書きできればよくなる。
以上のように、本発明の手法を適用することで、復号装置全体として、従来の復号装置と比較して大幅に回路規模を削減できるようになる。ただし、詳細については後述するが、Pの約数は複数存在する場合があり、かかる場合に、最小値をFとする必要はなく、伝送レートや回路の動作周波数に応じた最適値をFとして採用すると好適である。
さらにまた、詳細については後述するが、Pとは異なる値であって1(という値)以外のQが、Fを約数に持つ場合、即ち、FがPとQの公約数の場合、本発明の手法を適用することで、上述のF並列のノード演算器等を構成とする復号装置を用いて、「Pの符号」のみならず「Qの符号」も選択的に切り換えて復号することが可能になる。
具体的には例えば、P=6に対してF=3とした場合には、本発明の手法を適用することで、復号装置は、図12の構成を取ることができる。即ち、図12は、本発明を適用した復号装置の構成例を示している。
図12の例の復号装置は、受信値バッファ500、受信値格納メモリ501、ノード演算部502、シフト部503、メッセージ格納メモリ504、復号結果格納メモリ505、および制御部506を含むように構成されている。
このように、図12の例の復号装置は、全体の構成、即ち、各構成要素(ブロック)の繋がりや、復号装置全体からみた場合の各構成要素の役割(機能)は、制御部506を除き、上述の図10の例の復号装置と基本的に同様である。しかしながら、各構成要素の視点からすると、次のような違いがある。
即ち、図10の例の受信値バッファ200、受信値格納メモリ201、メッセージ格納メモリ204、および復号結果格納メモリ205は、P=6個のデータ(6ビット)を同時に読み書きできるメモリ構成をとっている。これに対して、受信値バッファ500、受信値格納メモリ501、メッセージ格納メモリ504、復号結果格納メモリ505は、F=3個のデータ(3ビット)を同時に読み書きできるメモリ構成をとっている。
また、図10の例のシフト部203は、6×6(=P×P)のサイクリックシフトを行う構成を有している。これに対して、図12の例のシフト部503は、3×3(=F×F)のサイクリックシフトを行う構成を有している。
また、図10の例のノード演算部202は、P=6個のノード演算器210−1乃至210−6を有している。これに対して、図12の例のノード演算部502は、F=3個のノード演算器510−1乃至510−3を有している。
よって、以上の各構成要素の違いがあることから、図12の例の復号装置は全体として、図10の例の従来の復号装置と比較して、回路規模が縮小された装置として構成することができる。
なお、ノード演算器510−1乃至510−3は、図11の構成のノード演算器210をそのまま採用することができる。もっとも、ノード演算器510−1乃至510−3自体は、図11の構成以外の構成を採用した場合にも、本発明を適用できることは言うまでも無い。
また、ノード演算器510−1乃至510−3の代わりに、3つのバリアブルノード演算器と3つのチェックノード演算器とが別々の回路として構成されている復号装置に対しても、本発明を適用できることも言うまでも無い。
さらにまた、ノード演算器510−1乃至510−3を用いずにバリアブルノード演算を行う場合にも、本発明を適用できることも言うまでも無い。
以下、図12の例の復号装置の動作について説明する。
なお、後述するように、図12の例の復号装置は、Fを約数に持つ任意のPについて、「Pの符号」を復号することができる。ただし、動作の説明をする際には、図10の例の従来の復号装置との比較を容易なものとすべく、復号対象は、図9の6×6の構造の検査行列で示される「P=6のLDPC符号」であるとする。
受信値バッファ500は、通信路を通して受信したデータD500を1符号分蓄え、受信値格納メモリ501に転送する。
ここで、検査行列の列の並び替えは符号系列の並び替えに相当する。よって、制御部506の制御に基づいて、次のような並び替え処理が受信値バッファ500において実行される。
即ち、図9の検査行列は、6×6の構成行列の集合体として表されている。そこで、6×6の構成行列を並び替えの単位として、その6×6の構成行列を、所定規則に基づいて、3×3の構成行列の集合体となる行列に並び替えを行う、といった並び替え処理が実行される。ここで、所定規則としては、行番号または列番号を2で割った余りが同一になる行と列同士で構成される行列を、即ち、遇数または奇数でそれぞれ区分した行列を、3×3の構成行列とする、といった規則が採用されているとする。
具体的には例えば、図13は、図9の検査行列の構成行列の一例であって、6×6のシフト行列を示している。図13において、○(丸印)内の数値は列番号を示しており、□(四角印)内の数値は行番号を示している。
この図13の6×6のシフト行列に対して、上述の規則に従った並び替え処理が施されると、図14の行列が得られることとなる。図14の行列は、図中点線で区分されているように、3×3の0行列、3×3の準単位行列、3×3のシフト行列といったように、3×3の構成行列(点線で区分されている4つの構成行列)で構成されていることがわかる。
以上のような並び替え処理が、その他の6×6の各構成行列にもそれぞれ施される。その結果、図9の6×6の構造の検査行列は、図15の構造の行列に並び替えられることになる。なお、図15の例では、3×3の構成行列を単位として区分されていることを明確にすべく、3×3の各構成行列の間には間隔が空けられている。即ち、図15の例の行列は、3×3の単位行列、3×3の準単位行列、3×3のシフト行列、3×3の和行列、3×3の0行列の組合わせにより構成されている。
よって、図12の受信値格納メモリ501の後段の動作は、6(=P)が3(=F)に変化した以外は、図10の受信値格納メモリ201の後段の動作と同様となる。換言すると、あたかも「P=3の符号」を復号するのと全く同様の動作が行われる。
なお、伝送方式として、そもそも符号ビットの順番を入れ替えて通信路に送出する方式が採用されている場合は、その並び替えも、上述の並び替え処理とともにまたはその前後に、受信値バッファ500において行われる。
以上、Fとして、P=6の約数である3を採用した場合の例について説明した。当然ながら、P=6の別の約数(1を除く)、即ち2を採用することもできる。ただし、この場合、図9の6×6の構造の検査行列に施される並び替え処理において採用される所定規則とは、次のような規則となる。即ち、行番号または列番号を3で割った余りが同一になる行と列同士で構成される行列を、2×2の構成行列とする、といった規則が採用される。
具体的には例えば、図13の6×6のシフト行列に対して、かかる規則に従った並び替え処理が施されると、図16の行列が得られる。図16の行列は、図中点線で区分されているように、2×2の0行列、2×2の準単位行列、2×2のシフト行列といったように、2×2の構成行列(点線で区分されている9つの構成行列)で構成されていることがわかる。
よって、この場合も、受信値格納メモリ501の後段の動作は、6(=P)が2(=F)に変化した以外は、図10の例の受信値格納メモリ201以降の後段の動作と同様になる。換言すると、あたかも「P=2のLDPC符号」を復号するのと全く同様の動作が行われる。
即ち、F=2とした場合には、復号装置は、図12の構成をとる必要はなく、2並列のノード演算器、2×2のサイクリックシフトを行うシフト部、および、2個のデータ(2bit)のデータを同時に読み書きできる各種メモリを有する構成を取れば足りる。
さらに、以上においてはPが6である場合の例について説明したが、当然ながらPは6以外となる場合がある。例えば、検査行列の構造によっては、P=360となる場合がある。このように任意の値がPとなる場合でも、本発明の手法は適用可能である。そして、本発明の手法によれば、Pが決定した後は、1以外の任意の約数をFとして採用することも可能である。
即ち、任意のPと、そのPの約数のうちの1を除く任意のFが採用された場合、P×Pの構造の検査行列(PのLDPC符号)に対して、次のような所定規則に従った並び替え処理を施すとで、F並列のノード演算器、F×Fのサイクリックシフトを行うシフト部、および、F個のデータ(Fビット)のデータを同時に読み書きできる各種メモリを有する構成で、復号装置を実装できるようになる。
この場合の所定規則とは、P=F×Jとすると、行番号0乃至P-1または列番号0乃至P-1をJで割った余りが同一になる行と列同士で構成される行列を、F×Fの構成行列とする、といった規則となる。そして、かかる規則に従った並び替え処理が、P×Pの構造の検査行列を構成するP×Pの各種構成行列のそれぞれに施されることになる。
なお、上述したように、ここでいう並べ替え処理とは、P×Pの構造の検査行列を並び替えた状態でメモリに記録することまでに限定する処理ではない。即ち、上述の例では、受信値バッファ500において並び替え処理が実行され、並び替え後の行列がいったん格納されて、その並び替え後の行列が、受信値格納メモリ501を介してノード演算部502に提供されていた。しかしながら、ノード演算部502の前段のメモリでは、P×Pの構造の検査行列のまま格納させておき、かかるメモリからノード演算部502に対して提供する際に、上述の所定規則に従った並び替え処理を読み出しの処理として適用し、即ち、上述の所定規則に従って選択的にメモリからデータを読み出して、ノード演算部502に提供するようにしてもよい。即ち、ここでいう並べ替え処理とは、このような読み出し処理も含めた広義な概念の処理である。なお、読み出し処理の制御については、制御部(図12の例では制御部506)に担当させれば容易に実現可能である。
また、上述の例とは、符号長108,符号化率2/3の例であったが、これらの値は例示にしか過ぎないことは言うまでもない。即ち、例えば、P=6となり、エッジ総数が同じかそれ以下であれば、任意の符号長、任意の符号化率を採用しても、制御信号を変えることで、同一の復号装置を用いて復号することが可能である。さらに、Pが同じで符号長とエッジの総数がそれぞれ所定値以下であるという条件を満たす符号の復号装置は、同じ条件を満たし得る符号長、異なる符号化率の符号であっても復号することができる。
以上の内容をまとめると、本発明を適用することで、Pの値に拘束されることなく、伝送レートや動作周波数に応じて、復号の並列性Fを可能な範囲内(Pの約数という範囲内)で任意に選択できる。これにより、回路規模の小さい復号装置を開発することが容易に可能になる。
即ち、例えば、Pが例えば360のときには、 Fは360,180,120といった約数の中から任意のものを選択することができる。このFは、上述した如くノード演算器の並列数になっていることからもわかるように、本発明を採用した場合には復号の並列性を示す値であるといえる。そこで、復号装置の開発者等は、復号の並列性を考慮しつつ、伝送レートと回路の動作周波数に応じて最適な値をFとして選ぶことができるようになる。
即ち、必要な伝送レートに対して、F として大きい値のPの約数を選択ときには、復号の並列性が必要以上に高いため、復号に必要な時間よりも長い間隔でしかデータが到来しない。そこで、データが到来する時間と復号に必要な時間が同程度になるように、Pの約数のうちの適当な値をFとして選ぶことで、復号の並列性を下げ、その結果、復号装置の回路規模を削減できる。また、将来的に回路が高速動作するようになれば、Fとして小さい値を採用したとしても、復号装置の並列性を下げても従来と同等の性能を達成することが可能になる。
さらに、PとQ(ただし、P > Q)が公約数を持つとき、その公約数を復号の並列性Fとして採用した復号装置は、「Pの符号」と「Qの符号」の両者を復号することが可能である。
従って、例えば、高い伝送レートを必要とするサービスには大きな「Pの符号」を用い、携帯型受信機用サービス(それゆえ伝送レートが低くてよいサービス)には小さな「Qの符号」を用いた場合でも、1つの復号装置で、どちらのサービスの符号も復号できる復号機能を備えた共通受信装置を実現することができる。
即ち、共通受信装置を実現可能であることは、「Pの符号」と「Q の符号」の両方を伝送システムの中に共存させることを可能にする。
例えば、DVB-S.2のLDPC符号を8PSK,30Msym/sで送信する場合には、符号ビットのビットレートは90Mbpsになる。検査行列の列重みの平均は概ね3.5程度であるため、符号1ビット当たりに必要な演算量は、復号回数を50回とすると、3.5×50×2=350程度になる。よって、クロック数としては、この演算量に、回路の効率性として仮に1.5を掛けた数が必要になる。そのクロック数を演算の並列性360で割ると、復号装置は90Mbps×350×1.5/360=131.25MHzで動作すればよいことになる。
この場合、復号の並列性をP=360とした従来の復号装置では、360個のデータを同時に読み書きできるメモリを実現すべく、ビット数が大きく、ワード数の少ない面積効率の悪いRAMを採用する必要があった。また、かかる従来の復号装置では、ノード演算器も360個有する必要があった。このようなことから、従来の復号装置は、回路規模が非常に大きなものであった。
ここで、仮に、DVB-S.2のLDPC符号を、上述の90Mbpsよりも低い伝送方式、例えば15Mbpsの伝送方式に応用する場合、復号の並列性をF=60としても、同じ動作周波数で同じ復号回数を実現すること、即ち同じ復号性能を達成することができる。
復号の並列性をF=60とすることができれば、同時に読み書きすべきデータが60個で済む。よって、メモリを構成する場合には、上述の従来の面積効率の悪いRAMと比較してワード数が6倍のRAMであって、そのビット数を減らした同一総数のRAMを採用することができる。或いは、そのビット数自体は同一のRAMを採用した場合でも、RAMの総数を減らすことが可能になる。いずれにしても、同じビット数のデータを保存するための面積効率が格段に上がることになる。また、ノード演算器の数もF=60個になるため、論理回路の規模も減らすことができる。
即ち、DVB-S.2のLDPC符号を、例えば地上波の放送に利用する場合、消費電力の問題で携帯型移動受信機での受信は難しくなる。そこで、例えば携帯型受信機向けには、Qを60としたより短い符号長の符号を用いてサービスを行う場合が想定できる。そのような場合であっても、本発明を適用することで、復号の並列性をF=60として符号長64800の符号まで復号できる復号装置であって、「P=360の符号」と「Q=60の符号」の両者を復号可能な復号装置を容易に実現することができる。よって、かかる復号装置を備えた受信装置は、固定受信用サービス(「P=360の符号」を用いるサービス)と、携帯型受信機用サービス(「Q=60の符号」を用いるサービス)の両方を受信することが可能になる。
以上の内容をまとめると、本発明を適用することで、大きな値Pを持つLDPC符号の復号装置を、その約数Fに基づいて実装することが可能になる。即ち、ビットレートの低い伝送方式や、将来回路が高速化した場合には、従来と比較して回路規模の小さい復号装置を実現することが可能になる。
また、本発明を適用することで、公約数Fを持つ整数に基づく符号は、全てFに基づく復号装置で復号することができるようになる。よって、伝送レートや受信形態の異なるサービスに応じて、適した大きさのLDPC符号をひとつの伝送システムに共存させることが可能になる。
即ち、上述の例の伝送システムは、「Pの符号」と「Qの符号」の2種類のみが用いられたが、1以外の整数値Fの倍数となる相異なる複数の整数値のうちの、システムの設計者等により選択されたK個(Kは2以上の整数値)の整数値α(αは、選択されたK個の整数値を示す)のそれぞれに対応するK種類の「αの符号」を用いることが可能になる。
ところで、上述した一覧表示処理も含む一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。
上述した一連の処理をソフトウエアにより実行させる場合、本発明が適用される復号装置は、例えば、図17に示されるコンピュータで構成することもできる。
図17において、CPU(Central Processing Unit)1001は、ROM(Read Only Memory)1002に記録されているプログラム、または記憶部1008からRAM(Random Access Memory)1003にロードされたプログラムに従って各種の処理を実行する。RAM1003にはまた、CPU1001が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU1001、ROM1002、およびRAM1003は、バス1004を介して相互に接続されている。このバス1004にはまた、入出力インターフェース1005も接続されている。
入出力インターフェース1005には、キーボード、マウスなどよりなる入力部1006、ディスプレイなどよりなる出力部1007、ハードディスクなどより構成される記憶部1008、および、モデム、ターミナルアダプタなどより構成される通信部1009が接続されている。通信部1009は、インターネットを含むネットワークを介して他の装置(図示せず)との間で行う通信を制御する。
入出力インターフェース1005にはまた、必要に応じてドライブ1010が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどよりなるリムーバブルメディア1011が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部1008にインストールされる。
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
このようなプログラムを含む記録媒体は、図17に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フロッピディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア(パッケージメディア)1211により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM1002や、記憶部1008に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置や処理部により構成される装置全体を表すものである。
LDPC 符号の検査行列の例を示す図である。 LDPC符号の下三角形な検査行列の例を示す図である。 LDPC符号を復号する際の一連の処理行程を説明するフローチャートである。 メッセージの流れの説明図である。 (3,6) LDPC 符号の 検査行列の例を示す図である。 図5の検査行列のタナーグラフを示す図である。 バリアブルノードでのメッセージ計算を説明する図である。 チェックノードでのメッセージ計算を説明する図である。 6×6の構造の検査行列の例を示す図である。 LDPC 符号の従来の復号装置の構成例を示すブロック図である。 ノード演算器の構成例を示すブロック図である。 本発明が適用されるLDPC符号の構成例を示すブロック図である。 6×6のシフト行列の一例を示す図である。 図13のシフト行列の行や列を並べることで、3×3の構成行列を生成する手法を説明する図である。 図9の6×6の構造の検査行列に対して、図14の手法の並び替え処理を施すことで得られる3×3の構造の行列を示す図である。 図13のシフト行列の行や列を並べることで、2×2の構成行列を生成する手法を説明する図である。 本発明が適用される復号装置の他の実施形態としての、コンピュータの構成例を示すブロック図である。
符号の説明
500 受信値バッファ, 501 受信値格納メモリ, 502 ノード演算部, 503 シフト部, 504 復号結果格納メモリ, 505 メッセージ格納メモリ, 1001 CPU, 1002 ROM, 1003 RAM, 1008 記憶部, 1010 リムーバブルメディア

Claims (6)

  1. LDPC(Low Density Parity Check)符号を復号する復号装置において、
    前記LDPC符号が、
    P×Pの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはP×Pの0行列を第1の構成行列として、複数の前記第1の構成行列の組合せによる第1の構造の検査行列で元々表現されるか、または、元々の検査行列の行と列のうちの少なくとも1以上の置換により前記第1の構造の行列で表現される場合、
    FをPの1以外の約数としたとき、
    前記LDPC符号を受信した結果得られる受信値を復号するための演算として、F個のチェックノードの演算またはF個のバリアブルノードの演算を並列的に行い、各演算の結果得られるF個のメッセージを出力するメッセージ計算手段と、
    前記メッセージ計算手段から出力されるF個の前記メッセージに対して、F×Fのサイクリックシフトを行って出力するシフト手段と、
    前記シフト手段から出力されるF個の前記メッセージの書き込み、書き込まれたF個の前記メッセージの読み出し、または、F個の前記受信値の読み出し若しくは書き込みができる記憶手段と、
    F×Fの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはF×Fの0行列を第2の構成行列として、複数の前記第2の構成行列の組合せによる第2の構造の行列を定義した場合に、前記第1の構造の検査行列で表現される前記受信値に対して少なくとも列置換処理若しくはそれと等価な処理を施すことで、前記メッセージ計算手段への前記受信値の提供の制御として、前記第2の構成行列に対応するF個の前記受信値を単位とする提供の制御を行う制御手段と
    を備える復号装置。
  2. 前記列置換処理として、
    P=F×Jとして、前記第1の構造の行列を構成する前記複数の第1の構成行列のP個の列に対して列番号0乃至P-1を付したとして、
    前記第1の構成行列を処理単位として、
    処理対象の前記第1の構成行列に対して列置換を施すことで、処理対象の前記第1の構成行列を、前記列番号をJで除算した余りが同一になる列同士で構成される複数の前記第2の構成行列によって区分する
    処理を含んでいる
    請求項1に記載の復号装置。
  3. 前記LDPC符号を受信することにより得られる受信値をバッファリングするバッファ手段をさらに備え、
    前記制御手段は、
    前記バッファ手段において、前記第1の構造の行列の形態で受信される前記受信値を並び替えて、前記第2の構造の行列の形態でバッファリングさせる制御を行い、
    前記第2の構造の行列の形態でバッファリングされた前記受信値を、前記第2の構成行列に対応するF個の前記受信値を単位として、前記記憶手段を介して前記メッセージ計算手段に提供する制御を行う
    請求項1に記載の復号装置。
  4. 前記制御手段は、
    前記第1の構造の行列の形態で受信される前記受信値の中から、前記第2の構造の行列に変化した場合に前記第2の構成行列に対応するF個の前記受信値を選択して、選択したF個の前記受信値を、前記記憶手段を介して前記メッセージ計算手段に提供する制御を行う
    請求項1に記載の復号装置。
  5. LDPC(Low Density Parity Check)符号を復号する復号装置の復号方法において、
    前記LDPC符号が、
    P×Pの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはP×Pの0行列を第1の構成行列として、複数の前記第1の構成行列の組合せによる第1の構造の検査行列で元々表現されるか、または、元々の検査行列の行と列のうちの少なくとも1以上の置換により前記第1の構造の行列で表現される場合に、
    FをPの1以外の約数としたとき、
    前記LDPC符号を受信した結果得られる受信値を復号するための演算として、F個のチェックノードの演算またはF個のバリアブルノードの演算を並列的に行い、各演算の結果得られるF個のメッセージを出力するメッセージ計算手段と、
    前記メッセージ計算手段から出力されるF個の前記メッセージに対して、F×Fのサイクリックシフトを行って出力するシフト手段と、
    前記シフト手段から出力されるF個の前記メッセージの書き込み、書き込まれたF個の前記メッセージの読み出し、または、F個の前記受信値の読み出し若しくは書き込みができる記憶手段とを備える前記復号装置が実行するステップとして、
    F×Fの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはF×Fの0行列を第2の構成行列として、複数の前記第2の構成行列の組合せによる第2の構造の行列を定義した場合に、前記第1の構造の検査行列で表現される前記受信値に対して少なくとも列置換処理若しくはそれと等価な処理を施すことで、前記メッセージ計算手段への前記受信値の提供の制御として、前記第2の構成行列に対応するF個の前記受信値を単位とする提供の制御を行う
    ステップを含む復号方法。
  6. LDPC(Low Density Parity Check)符号を復号する復号装置を制御するコンピュータであって、
    前記LDPC符号が、
    P×Pの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはP×Pの0行列を第1の構成行列として、複数の前記第1の構成行列の組合せによる第1の構造の検査行列で元々表現されるか、または、元々の検査行列の行と列のうちの少なくとも1以上の置換により前記第1の構造の行列で表現される場合に、
    FをPの1以外の約数としたとき、
    前記LDPC符号を受信した結果得られる受信値を復号するための演算として、F個のチェックノードの演算またはF個のバリアブルノードの演算を並列的に行い、各演算の結果得られるF個のメッセージを出力するメッセージ計算手段と、
    前記メッセージ計算手段から出力されるF個の前記メッセージに対して、F×Fのサイクリックシフトを行って出力するシフト手段と、
    前記シフト手段から出力されるF個の前記メッセージの書き込み、書き込まれたF個の前記メッセージの読み出し、または、F個の前記受信値の読み出し若しくは書き込みができる記憶手段とを備える前記復号装置を制御する前記コンピュータに、
    F×Fの単位行列、その単位行列のコンポーネントである1のうちの1個以上が0になった行列である準単位行列、前記単位行列もしくは準単位行列をサイクリックシフトした行列であるシフト行列、前記単位行列、準単位行列、もしくはシフト行列のうちの複数の和である和行列、またはF×Fの0行列を第2の構成行列として、複数の前記第2の構成行列の組合せによる第2の構造の行列を定義した場合に、前記第1の構造の検査行列で表現される前記受信値に対して少なくとも列置換処理若しくはそれと等価な処理を施すことで、前記メッセージ計算手段への前記受信値の提供の制御として、前記第2の構成行列に対応するF個の前記受信値を単位とする提供の制御を行う
    ステップを実行させるプログラム。
JP2007272519A 2007-10-19 2007-10-19 復号装置および方法、並びにプログラム Expired - Fee Related JP4487213B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2007272519A JP4487213B2 (ja) 2007-10-19 2007-10-19 復号装置および方法、並びにプログラム
EP08253305A EP2051386A3 (en) 2007-10-19 2008-10-09 Partly-parallel message passing decoding for different structured LDPC codes
TW097139363A TWI371930B (en) 2007-10-19 2008-10-14 Decoding apparatus, decoding method and program
KR1020080101735A KR20090040225A (ko) 2007-10-19 2008-10-16 복호장치, 복호방법 및 프로그램
US12/252,470 US8281205B2 (en) 2007-10-19 2008-10-16 LDPC decoding apparatus, decoding method and program
CN2008101705377A CN101414834B (zh) 2007-10-19 2008-10-17 解码设备和解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007272519A JP4487213B2 (ja) 2007-10-19 2007-10-19 復号装置および方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2009100423A true JP2009100423A (ja) 2009-05-07
JP4487213B2 JP4487213B2 (ja) 2010-06-23

Family

ID=40257089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007272519A Expired - Fee Related JP4487213B2 (ja) 2007-10-19 2007-10-19 復号装置および方法、並びにプログラム

Country Status (6)

Country Link
US (1) US8281205B2 (ja)
EP (1) EP2051386A3 (ja)
JP (1) JP4487213B2 (ja)
KR (1) KR20090040225A (ja)
CN (1) CN101414834B (ja)
TW (1) TWI371930B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010093541A (ja) * 2008-10-08 2010-04-22 Sony Corp サイクリックシフト装置、サイクリックシフト方法、ldpc復号装置、テレビジョン受像機、及び、受信システム
JP2010278912A (ja) * 2009-05-29 2010-12-09 Sony Corp 受信装置、受信方法、およびプログラム、並びに受信システム
JP2010278910A (ja) * 2009-05-29 2010-12-09 Sony Corp 受信装置、受信方法、およびプログラム、並びに受信システム
US8667376B2 (en) 2008-11-07 2014-03-04 Nec Corporation Decoding device, data communication apparatus having the decoder device, and data memory
JP2017506469A (ja) * 2014-02-21 2017-03-02 ゼットティーイー コーポレーションZte Corporation 構造化されたldpcのコーディング方法、デコーディング方法、コーディング装置及びデコーディング装置

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8358447B2 (en) 2007-07-31 2013-01-22 Samsung Electronics Co., Ltd. Scanner module and image scanning apparatus employing the same
US8379275B2 (en) 2007-07-31 2013-02-19 Samsung Electronics Co., Ltd. Scanner module and image scanning apparatus employing the same
JP4487212B2 (ja) * 2007-10-19 2010-06-23 ソニー株式会社 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
US8612823B2 (en) * 2008-10-17 2013-12-17 Intel Corporation Encoding of LDPC codes using sub-matrices of a low density parity check matrix
CN101777921B (zh) * 2010-01-28 2013-04-17 中国人民解放军国防科学技术大学 用于显式存储片上系统的结构化ldpc码译码方法及装置
CN102480336B (zh) * 2010-11-30 2014-04-09 中国科学院微电子研究所 一种准循环低密度奇偶校验码的通用快速译码协处理器
JP5952072B2 (ja) * 2012-04-26 2016-07-13 ルネサスエレクトロニクス株式会社 符号化装置、復号化装置及び伝送システム
US8972834B2 (en) * 2012-08-28 2015-03-03 Hughes Network Systems, Llc System and method for communicating with low density parity check codes
KR102068030B1 (ko) 2012-12-11 2020-01-20 삼성전자 주식회사 메모리 컨트롤러 및 그 동작방법
EP2833554B8 (en) * 2013-07-31 2018-06-06 Alcatel Lucent Encoder and decoder
CN104917536B (zh) * 2014-03-11 2019-11-12 中兴通讯股份有限公司 一种支持低码率编码的方法及装置
CN107437946A (zh) * 2014-09-10 2017-12-05 上海数字电视国家工程研究中心有限公司 Ldpc码的编码方法
US10050642B2 (en) * 2016-03-17 2018-08-14 Silicon Motion Inc. Low power scheme for bit flipping low density parity check decoder
KR102589918B1 (ko) * 2016-07-19 2023-10-18 삼성전자주식회사 저밀도 패리티 체크 디코더 및 그것을 포함하는 저장 장치
CN107659317A (zh) * 2017-10-30 2018-02-02 南京扬贺扬微电子科技有限公司 快速转化生成矩阵的方法
CN110048805B (zh) * 2018-12-11 2021-08-31 西安电子科技大学 低密度奇偶校验码的译码控制系统及方法、无线通信系统
CN110298847B (zh) * 2019-06-27 2021-06-04 浙江工业大学 一种长时间背景收集的背景建模方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030033570A1 (en) * 2001-05-09 2003-02-13 Khannanov Roman R. Method and apparatus for encoding and decoding low density parity check codes and low density turbo product codes
ATE556491T1 (de) * 2002-07-03 2012-05-15 Dtvg Licensing Inc Methode und verfahren für die speicherverwaltung in low density parity check (ldpc) decodern
US7162684B2 (en) * 2003-01-27 2007-01-09 Texas Instruments Incorporated Efficient encoder for low-density-parity-check codes
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
JP4224777B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
US7296208B2 (en) * 2003-07-03 2007-11-13 The Directv Group, Inc. Method and system for generating parallel decodable low density parity check (LDPC) codes
FI121431B (fi) * 2004-09-13 2010-11-15 Tamfelt Pmc Oy Paperikoneessa käytettävä kudosrakenne ja menetelmä sen valmistamiseksi
US7996746B2 (en) * 2004-10-12 2011-08-09 Nortel Networks Limited Structured low-density parity-check (LDPC) code
CN100550655C (zh) * 2004-11-04 2009-10-14 中兴通讯股份有限公司 一种低密度奇偶校验码的编码器/译码器及其生成方法
WO2006059688A1 (ja) 2004-12-02 2006-06-08 Mitsubishi Denki Kabushiki Kaisha 復号装置及び通信装置
JP4622654B2 (ja) * 2005-04-25 2011-02-02 ソニー株式会社 復号装置および復号方法
JP4595650B2 (ja) * 2005-04-25 2010-12-08 ソニー株式会社 復号装置および復号方法
JP2006340016A (ja) 2005-06-01 2006-12-14 Toshiba Microelectronics Corp 誤り訂正符号復号装置及びそれを用いた復号方法
KR100946905B1 (ko) * 2005-09-27 2010-03-09 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 신호 송수신 장치 및 방법
US7707479B2 (en) * 2005-12-13 2010-04-27 Samsung Electronics Co., Ltd. Method of generating structured irregular low density parity checkcodes for wireless systems
KR100899738B1 (ko) * 2006-02-02 2009-05-27 삼성전자주식회사 노드 메모리 기반의 ldpc 복호기 및 복호방법
US7805652B1 (en) * 2006-02-10 2010-09-28 Marvell International Ltd. Methods for generating and implementing quasi-cyclic irregular low-density parity check codes
JP2007272519A (ja) 2006-03-31 2007-10-18 Ntt Comware Corp ドキュメント暗号化制御装置及びドキュメント暗号化制御方法
JP4702632B2 (ja) * 2007-04-06 2011-06-15 ソニー株式会社 符号化方法および符号化装置、並びにプログラム
EP2147504A2 (en) * 2007-04-13 2010-01-27 University College Dublin An encoding scheme, and a decoding scheme using a series of ldpc codes based on finite inversive spaces
JP2008301152A (ja) 2007-05-31 2008-12-11 Sony Corp 復号装置および方法、並びにプログラム
EP2091156B1 (en) * 2008-02-18 2013-08-28 Samsung Electronics Co., Ltd. Apparatus and method for channel encoding and decoding in a communication system using low-density parity-check codes

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010093541A (ja) * 2008-10-08 2010-04-22 Sony Corp サイクリックシフト装置、サイクリックシフト方法、ldpc復号装置、テレビジョン受像機、及び、受信システム
US8612835B2 (en) 2008-10-08 2013-12-17 Sony Corporation Cyclic shift device, cyclic shift method, LDPC decoding device, television receiver, and reception system
US8667376B2 (en) 2008-11-07 2014-03-04 Nec Corporation Decoding device, data communication apparatus having the decoder device, and data memory
JP5488472B2 (ja) * 2008-11-07 2014-05-14 日本電気株式会社 復号装置、この復号装置を有するデータ通信装置およびデータ記憶装置
JP2010278912A (ja) * 2009-05-29 2010-12-09 Sony Corp 受信装置、受信方法、およびプログラム、並びに受信システム
JP2010278910A (ja) * 2009-05-29 2010-12-09 Sony Corp 受信装置、受信方法、およびプログラム、並びに受信システム
JP2017506469A (ja) * 2014-02-21 2017-03-02 ゼットティーイー コーポレーションZte Corporation 構造化されたldpcのコーディング方法、デコーディング方法、コーディング装置及びデコーディング装置
US10320419B2 (en) 2014-02-21 2019-06-11 Zte Corporation Encoding method, decoding method, encoding device and decoding device for structured LDPC

Also Published As

Publication number Publication date
TW200926616A (en) 2009-06-16
EP2051386A2 (en) 2009-04-22
US8281205B2 (en) 2012-10-02
TWI371930B (en) 2012-09-01
JP4487213B2 (ja) 2010-06-23
US20090106620A1 (en) 2009-04-23
KR20090040225A (ko) 2009-04-23
EP2051386A3 (en) 2010-03-31
CN101414834A (zh) 2009-04-22
CN101414834B (zh) 2011-10-19

Similar Documents

Publication Publication Date Title
JP4487213B2 (ja) 復号装置および方法、並びにプログラム
JP4487212B2 (ja) 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
JP4224777B2 (ja) 復号方法および復号装置、並びにプログラム
JP4225163B2 (ja) 復号装置および復号方法、並びにプログラム
JP4622654B2 (ja) 復号装置および復号方法
JP4285148B2 (ja) 復号装置および復号方法、並びにプログラム
JP2008301152A (ja) 復号装置および方法、並びにプログラム
JP4729964B2 (ja) 復号装置および復号方法
JP4284600B2 (ja) 復号装置
JP4821724B2 (ja) 復号装置および復号方法
JP4730592B2 (ja) 復号装置および復号方法
JP4822071B2 (ja) 復号装置および復号方法
JP4288582B2 (ja) 復号装置および復号方法、並びにプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100304

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100317

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees