JP2009100222A - 低密度パリティ検査符号の復号装置およびその方法 - Google Patents

低密度パリティ検査符号の復号装置およびその方法 Download PDF

Info

Publication number
JP2009100222A
JP2009100222A JP2007269411A JP2007269411A JP2009100222A JP 2009100222 A JP2009100222 A JP 2009100222A JP 2007269411 A JP2007269411 A JP 2007269411A JP 2007269411 A JP2007269411 A JP 2007269411A JP 2009100222 A JP2009100222 A JP 2009100222A
Authority
JP
Japan
Prior art keywords
row
data
column
processing
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007269411A
Other languages
English (en)
Inventor
Hironori Uchikawa
川 浩 典 内
Yasuhiro Harada
田 康 祐 原
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007269411A priority Critical patent/JP2009100222A/ja
Priority to US12/233,673 priority patent/US8086932B2/en
Publication of JP2009100222A publication Critical patent/JP2009100222A/ja
Pending legal-status Critical Current

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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • 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
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • H03M13/112Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule with correction functions for the min-sum rule, e.g. using an offset or a scaling factor
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • 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
    • H03M13/658Scaling by multiplication or division
    • 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
    • H03M13/6583Normalization other than scaling, e.g. by subtraction

Abstract

【課題】低密度パリティ検査符号の復号に要する演算量を低減することにより高い復号スループットを得る。
【解決手段】本発明の一態様としての復号装置は、検査行列により定義される低密度パリティ検査符号を復号する復号装置であって、検査行列の行毎に、行処理演算を行うことにより行処理演算データを計算する行処理演算手段と、検査行列の行毎に、前記行により規定されるパリティ検査式の成立に対する信頼性の程度を表す信頼度係数を計算する信頼度係数計算手段と、検査行列の列毎に、列処理演算を行うことにより列処理演算データを計算する列処理演算手段と、前記行処理演算手段の処理と前記信頼度係数計算手段の処理と前記列処理演算手段の処理とを1セットとして繰り返し実行し、前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては前記行処理演算手段の処理と前記信頼度係数計算手段の処理を省略する繰り返し制御手段と、を備える。
【選択図】図1

Description

本発明は、通信システムや記録システムなどに用いられるLDPC(Low Density Parity Check:低密度パリティ検査) 符号を復号する復号装置および復号方法に関し、特に復号アルゴリズムに関わる。
LDPC符号は、パリティ検査行列を用いて行処理演算と列処理演算と呼ばれる確率計算を繰り返し行い、受信語データの事後確率を求めることで復号する。
行処理演算とは、パリティ検査行列における行(パリティ検査式)毎に、「1」の要素に対応する列処理演算データを用いて「1」の要素毎の行処理演算データを求める処理である。また列処理演算とは、パリティ検査行列における列毎に、「1」の要素に対応する行処理演算データを用いて「1」の要素毎の列処理演算データを求める処理である。一般には、パリティ検査行列の全ての行に対して行処理演算を行った後、全ての列に対して列処理演算を行う。
LDPC符号の復号処理において、パリティ検査行列の行方向に処理演算を行う行処理演算は、非線形関数の計算を行うため特に演算量が大きい。そのため、一般には非特許文献1で提案されているように、パリティ検査行列における各行の各々において、「1」の要素毎に、当該要素を除く他の「1」の要素に対応する列処理演算データのうち最小値を、当該「1」の要素に対する行処理演算データとして求めるmin-sum復号が用いられる。
Marc P. C. Fossorier, M. Mihaljevic and H. Imai"Reduced Complexity Iterative Decoding of Low-Density Parity Check Codes Based on Belief Propagaton" IEEE Trans..on Commun. Vol.47, No.5, pp.673-680, May. 1999
しかしながらmin-sum復号を用いても、列処理演算データの最小値を計算するための比較演算を行(パリティ検査式)に含まれる「1」の数分だけ繰り返し行わなければならず、復号処理全体の中に占める行処理演算の量は依然として大きい。特に符号化率の高いLDPC符号では、行(パリティ検査式)に含まれる「1」の数が多いため、演算量が特に大きくなり、復号スループットが低下するといった問題があった。
本発明は、低密度パリティ検査符号の復号に要する演算量を低減することにより高い復号スループットを得ることができるようにした低密度パリティ検査符号の復号装置および復号方法を提供する。
本発明の一態様としての復号装置は、
検査行列により定義される低密度パリティ検査符号を復号する復号装置であって、
受信語データを受信する受信手段と、
前記受信手段により受信された受信語データを、初期化された列処理演算データとして行番号および列番号ごとに記憶する列処理演算データ記憶手段と、
行処理演算データの書き込み要求を受けて前記行処理演算データを行番号および列番号ごとに記憶する行処理演算データ記憶手段と、
前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段に記憶された前記列処理演算データを読み出し、行処理演算を行うことにより前記「1」の要素に対する行処理演算データを計算し、計算された行処理演算データの前記書き込み要求を前記行処理演算記憶手段に行う、行処理演算手段と、
前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段に記憶された前記列処理演算データを読み出し、前記行により規定されるパリティ検査式の成立に対する信頼性の程度を表す信頼度係数を計算する信頼度係数計算手段と、
前記検査行列の列毎に、「1」の要素に対して前記行処理演算データ記憶手段に記憶された前記行処理演算データを読み出し、列処理演算を行うことにより前記「1」の要素に対する前記列処理演算データを計算し、計算された列処理演算データを行番号および列番号ごとに前記列処理演算データ記憶手段に書き込む列処理演算手段と、
前記行処理演算手段の処理と前記信頼度係数計算手段の処理と前記列処理演算手段の処理とを1セットとして繰り返し実行し、前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては前記行処理演算手段の処理と前記信頼度係数計算手段の処理を省略する繰り返し制御手段と、
を備える。
本発明の一態様としての復号装置は、
検査行列により定義される低密度パリティ検査符号を復号する復号装置であって、
受信語データを受信する受信手段と、
前記受信手段により受信された前記受信語データを記憶するデータ記憶手段と、
行番号および列番号ごとに初期化された行処理演算データを記憶する行処理演算データ記憶手段と、
列処理演算データの書き込み要求を受けて前記列処理演算データを行番号および列番号ごとに記憶する列処理演算データ記憶手段と、
前記検査行列の行毎に、「1」の要素に対して前記データ記憶手段から前記受信語データを読み出すとともに前記行処理演算データ記憶手段から前記行処理演算データを読み出し、列処理演算を行うことにより前記「1」の要素に対する列処理演算データを計算し、前記列処理演算データの書き込み要求を前記列処理演算データ記憶手段に行う列処理演算手段と、
前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段から前記列処理演算データを読み出し、行処理演算を行うことにより前記「1」の要素に対する前記行処理演算データを計算し、計算した行処理演算データを行番号および列番号ごとに行処理演算データ記憶手段に書き込む行処理演算手段と、
前記検査行列の行毎に、前記列処理演算データ記憶手段から読み出した前記列処理演算データを用いて前記行により規定されるパリティ検査式の成立に対する信頼性の程度を表す信頼度係数を計算する信頼度係数計算手段と、
前記検査行列の行毎に、前記列処理演算手段により計算された前記列処理演算データと、前記行処理演算手段により計算された前記行処理演算データとに基づいて前記データ記憶手段内の前記受信語データを更新するデータ更新手段と、
前記列処理演算手段の処理、前記行処理演算手段の処理、前記信頼度係数計算手段の処理および前記データ更新手段の処理を1セットとして繰り返し実行し、前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては前記列処理演算手段の処理、前記行処理演算手段の処理、前記信頼度係数計算手段の処理および前記データ更新手段の処理の実行を省略する繰り返し制御手段と、
を備える。
本発明の一態様としての復号方法は、
検査行列により定義される低密度パリティ検査符号を復号する復号方法であって、
受信語データを受信することにより、初期化された列処理演算データを行番号および列番号ごとに列処理演算データ記憶手段に書き込み、
前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段に記憶された前記列処理演算データを読み出し、行処理演算を行うことにより前記「1」の要素に対する行処理演算データを計算し、計算した行処理演算データを行番号および列番号ごとに行処理演算データ記憶手段に書き込み、
前記検査行列の行毎に、前記列処理演算データ記憶手段から読み出した列処理演算データを用いて前記行により規定されるパリティ検査式の成立性に対する信頼性の程度を表す信頼度係数を計算し、
前記検査行列の列毎に、「1」の要素に対して前記行処理演算データ記憶手段に記憶された前記行処理演算データを読み出し、列処理演算を行うことにより前記「1」の要素に対する前記列処理演算データを計算し、計算した列処理演算データを行番号および列番号ごとに前記列処理演算データ記憶手段に書き込み、
前記行処理演算データの計算および書き込み、前記信頼度係数の計算、および前記列処理演算データの計算および書き込みを1セットとして繰り返し実行し、前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては前記行処理演算データの計算および書き込み、ならびに前記信頼度係数の計算を省略する
ことを特徴とする。
本発明の一態様としての復号方法は、
検査行列により定義される低密度パリティ検査符号を復号する復号方法であって、
受信語データを受信し、受信した受信語データをデータ記憶手段に書き込み、
前記検査行列の行毎に、「1」の要素に対して前記データ記憶手段から前記受信語データを読み出すとともに、初期化された行処理演算データを行番号および列番号ごとに記憶した行処理演算データ記憶手段から「1」の要素に対して前記行処理演算データを読み出し、列処理演算を行うことにより前記「1」の要素に対する列処理演算データを計算し、前記列処理演算データを行番号および列番号ごとに列処理演算データ記憶手段に書き込み、
前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段から前記列処理演算データを読み出し、行処理演算を行うことにより前記「1」の要素に対する前記行処理演算データを計算し、計算した行処理演算データを行番号および列番号ごとに行処理演算データ記憶手段に書き込み、
前記検査行列の行毎に、前記列処理演算データ記憶手段から読み出した前記列処理演算データを用いて前記行により規定されるパリティ検査式の成立に対する信頼性の度合いを表す信頼度係数を計算し、
前記検査行列の行毎に、前記第4の処理で計算された前記列処理演算データと、前記第5の処理で計算された前記行処理演算データとに基づいて前記データ記憶手段内の前記受信語データを更新し、
前記列処理演算データの計算および書き込み、前記行処理演算データの計算および書き込み、前記信頼度係数の計算、および前記受信語データの更新を1セットとして繰り返し実行し、
前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては、前記列処理演算データの計算および書き込み、前記行処理演算データの計算および書き込み、前記信頼度係数の計算、および前記受信語データの更新を省略する、
ことを特徴とする。
本発明により、低密度パリティ検査符号の復号にかかる演算量を低減し、高い復号スループットを得ることができる。
以下、図面を参照しながら本実施形態について詳細に説明する。
図1は、本発明の第1の実施形態に係わる復号装置の構成を示すブロック図である。なお、この復号装置は、符号化を行う符号化装置の構成も同時に備えていてもよい。
上記復号装置は、入力メモリ101、スケジューラ(繰り返し制御手段、終了手段)102、行処理部(行処理演算手段、信頼度係数計算手段)103、中間メモリ(行処理演算データ記憶手段、列処理演算データ記憶手段)104、列処理部(列処理演算手段、データ補正手段)105、硬判定部106、パリティ検査部107、及び出力バッファ(出力手段)108を備える。
入力メモリ101は、図示しない前段の信号処理部から入力される受信語データ(符号データフレーム)を受け取り、受け取った受信語データを、復号処理の間、保持する。入力メモリ101はたとえば受信語データを受信する受信手段を含む。受信語データは、符号化装置で生成される符号語のビット数と同数の要素からなり、各要素はそれぞれ対応するビットの対数尤度比(LLR:Log Likelihood Rate)を表す。入力メモリ101に保持される受信語データの各対数尤度比は入力LLRと称する。
ここで対数尤度比(LLR)とは、データビットが0である確率P(x=0)と1である確率P(x=1)の比の対数値(底は自然対数)をとったもので、以下の式で表される。
Figure 2009100222
受信語データの一例を図9に示す。ここでは7ビットからなる符号語に対応する受信語データが示され、受信語データは7個のLLR(入力LLR)からなる。
スケジューラ(繰り返し制御手段)102は、復号処理全体の制御を行う。スケジューラ102は、行処理部103及び列処理部105へそれぞれ行処理(行処理演算と、シンドローム値(信頼度係数)演算)、および列処理(列処理演算と、出力LLR(補正LLR)演算)の実行を指示する。本実施形態では、行処理および列処理を1セットとし、このセットを1回以上繰り返し実行することで復号が行われる。
また、スケジューラ102は、復号開始時に入力メモリ101内の受信語データ(入力LLR)を中間メモリ104に送出することを入力メモリ101に指示する。
またスケジューラ102は、列処理部105による列処理のタイミングに合わせて、入力メモリ101内の受信語データ(入力LLR)を列処理部105へ出力するように入力メモリ101に指示する。
また、スケジューラ102は、パリティ検査部107から入力されるパリティ検査結果(真OR偽)、及び現時点までに行った復号の繰り返し回数から、復号処理を終了するか否かを判断し、復号処理の終了を決定したときは、復号結果(復号語)を、図示しない後段の信号処理部へ出力するよう出力バッファ108へ指示する。
また,スケジューラ102は、必要最小限の行処理のみを実行するよう行処理部103を制御することで、復号処理全体で必要となる演算量を削減し、復号スループットを向上することを特徴としている。この特徴の詳細については、行処理部103および列処理部105の後に、説明する。
中間メモリ104は、行処理部103と列処理部105間でデータをやりとりするために用いられる。復号開始時は、スケジューラ102の指示に応じて入力メモリ101から入力される受信語データ(入力LLR)を、初期化された列処理演算データ(列要素LLR)として、パリティ検査行列における行番号および列番号ごとに記憶する。
パリティ検査行列の一例を図9(B)に示す。このパリティ検査行列は7ビットの符号語に対応するものであり、たとえば図9(A)の受信語データの復号に用いることができる。列処理演算データの例を図10(B)に示す(詳細は後述する)。パリティ検査行列における列の個数はたとえば受信語データの要素数と同一であり、同一の列番号の各行要素には同一の入力LLR(受信語データにおいて列番号に対応する入力LLR)が、初期化された列処理演算データとして中間メモリ104に記憶される。ただし、初期化された列処理演算データは、パリティ検査行列において「1」の要素ついてだけ記憶し、「0」の要素については、演算で使用しないため、記憶しなくてもよい。たとえば図9(B)のパリティ検査行列の場合、z14,z16,z17などは記憶してなくてもよい。
行処理部(行処理演算手段、信頼度係数計算手段)103は、スケジューラ102から指定される行インデックスのパリティ検査式に従って行処理(行処理演算と、シンドローム値(信頼度係数)演算)を実行する。ここで行インデックスとは、LDPC(Low Density Parity Check:低密度パリティ検査)符号のパリティ検査行列の行インデックスを意味する。
行処理部103は、具体的には、検査行列における指定された行の「1」の要素に対して中間メモリ104に記憶された列処理演算データ(最初は初期化された列処理演算データ)を読み出し、行処理演算を行うことにより、前記「1」の要素に対する行要素LLR(行処理演算データ)を計算する。
また、行処理部103は、上記行処理で読み出された列処理演算データを用いて、上記指定された行のパリティ検査式の成立に対する信頼性の程度を表すシンドローム値(信頼度係数)を計算する。
行処理部103は、シンドローム値(信頼度係数)をスケジューラ102へ出力し、行要素LLR(行処理演算データ)を行番号および列番号ごとに中間メモリ104へ書き込む。
なお、後述するように1回目の復号では、行処理部103は、スケジューラ102から全ての行インデックスを順次指定されるが、2回目あるいはそれ以降の復号では、最小限の行インデックスが指定され、これにより、復号処理全体で必要となる演算量を低減している。
ここでシンドローム値(信頼度係数)は以下の数式2により、行要素LLR(行処理演算データ)は数式3により求められる。
Figure 2009100222
上記の数式2および数式3において、mはパリティ検査式の行インデックスを表し、nは列インデックスを表す。図9(B)の場合、mは1〜3、nは1〜7である。
N(m)は行インデックスmのパリティ検査式において「1」の値をもつ列インデックスの集合を表し、N(m)\nは、集合N(m)のうちnを除いた列インデックスの部分集合を表す。
Figure 2009100222

Figure 2009100222
の符号を示し、
Figure 2009100222
は列要素LLR(列処理演算データ)
Figure 2009100222
の符号を示す。
Figure 2009100222
は、列インデックス集合N(m)に含まれる列インデックスに対応する列要素LLR(列処理演算データ)
Figure 2009100222
のうち、絶対値が最も小さい列要素LLR(列処理演算データ)を示す。同様に
Figure 2009100222
は、列インデックス集合N(m)\nに含まれる列インデックスに対応する列要素LLR(列処理演算データ)
Figure 2009100222
のうち、絶対値が最も小さい列要素LLR(列処理演算データ)を示す。
iは復号処理の繰り返し回数を表し、i回目の復号処理における行処理演算で得られる行要素LLR(行処理演算データ)
Figure 2009100222
は、i−1回目の復号処理で得られる列要素LLR(列処理演算データ)
Figure 2009100222
を用いて計算される。なお1回目の復号処理では、
Figure 2009100222
となる(中間メモリ104の説明を参照)。Fnは、図示しない前段の信号処理部から復号装置へ入力される入力LLR(受信語データ)を表す。
上記の数式2に従ってシンドローム値(信頼度係数)を具体的に求める様子と、上記の数式3にしたがって行要素LLR(行処理演算データ)を具体的に求める様子とを図10(B)に示す。ここでは行要素LLR(行処理演算データ)としてr11を求める例が示され、またシンドローム値(信頼度係数)としてs1を求める例が示される。ただしパリティ検査行列は図9(B)に示すものであるとする。r11を求めるには、1行目で「1」の要素に対応する列処理演算データz12,z13,z15を中間メモリ104から読み出し(z11は用いない)上記数式2に従って計算すればよい。また、行要素LLR(行処理演算データ)s1を求めるには、1行目で「1」の要素に対応する列処理演算データz11,z12,z13,z15を中間メモリ104から読み出し、上記数式3に従って計算すればよい。
ここで数式2および数式3を比べると分かるように、シンドローム値(信頼度係数)
Figure 2009100222
の計算では行インデックスmのパリティ検査式に含まれる全ての列インデックスの列要素LLR(列処理演算データ)
Figure 2009100222
を用いるのに対し、行要素LLR(行処理演算データ)
Figure 2009100222
の計算では着目している列インデックスnを除いた列要素LLR(列処理演算データ)
Figure 2009100222
を用いて計算する。そのため、行要素LLR(行処理演算データ)
Figure 2009100222
の計算の際に数式3を用いず、数式4を用いて計算する方法もある。この方法では、シンドローム値(信頼度係数)を計算する際に、絶対値が最小の列要素LLR(列処理演算データ)だけではなく、絶対値が最小の列要素LLRの列インデックス
Figure 2009100222
と,2番目に絶対値が最小な列要素LLR(列処理演算データ)を
Figure 2009100222
として保持しておく。
Figure 2009100222
また、行処理演算では、数式3の代わりに、
Figure 2009100222
に対し係数αを乗算する数式5、もしくは係数βを減算する数式6を用いてもよい。
Figure 2009100222
上記数式6においてmax(x、y)は、xもしくはyのうち、どちらか大きな方を出力する関数である。これらの数式5および数式6に示すアルゴリズムはmodified-min-sumアルゴリズムと呼ばれ、一般に数式3で示すmin-sumアルゴリズムよりも復号性能がよい。
列処理部105は、スケジューラ102から指定される列インデックスの列について列処理(列処理演算、出力LLR(補正LLR)演算)を実行する。列処理部105は、すべての列インデックスについてスケジューラ102から順次、指定され、指定された各列インデックスについて列処理を行う。
具体的には、検査行列における指定された列の「1」の要素に対して中間メモリ104に記憶された行要素LLR(行処理演算データ)を読み出し、読み出した行要素LLR(行処理演算データ)と、入力メモリ101から入力される入力LLR(受信語データにおいて、スケジューラ102により指定された列に対応するLLR)とに基づき、列処理演算を行うことにより、前記「1」の要素に対する列要素LLR(列処理演算データ)を計算する。列処理部105は、計算した列要素LLR(列処理演算データ)を、行番号および列番号ごとに中間メモリ104に書き込む(以前の値は更新されるものとする)。以下に、列要素LLR(列処理演算データ)
Figure 2009100222
を求める計算式を示す。
Figure 2009100222
ここで、Fnは列インデックスnの入力LLR(受信語データ)を表し、
Figure 2009100222
は行処理部103で計算される行要素LLR(行処理演算データ)を表す。さらにM(n)\mは、集合M(n)のうちmを除いた行インデックスの部分集合を表す。
上記の数式7に従って列要素LLR(列処理演算データ)を求める様子を図10(A)に示す。ここではz11を求める例が示される。ただしパリティ検査行列は図9(B)に示すものであるとする。z11を求めるには、1列目で「1」の要素に対応する列処理演算データr21を中間メモリ104から読み出し(z31は用いない)、また、1列目に対応する入力LLR(受信語データ)F1を入力メモリ101から読み出し、上記数式7に従って計算すればよい。
また列処理部105は、スケジューラ102から指定された列における「1」の要素に対して、中間メモリ104に記憶された行要素LLR(行処理演算データ)を読み出し、読み出した前記行処理演算データに基づき、入力メモリ101から入力される入力LLR(受信語データにおいて、スケジューラ102により指定された列に対応するLLR)を補正することにより、出力LLR(補正LLR)を計算する。列処理部105は、計算した、出力LLR(補正LLR)を硬判定部106に出力する。つまり、入力メモリ101に入力された受信語データ(入力LLR)は、行処理および列処理により、補正受信語データ(出力LLRあるいは補正LLR)へ補正されて、出力される。
ここで出力LLR(補正LLR)
Figure 2009100222
を求める計算式を以下に示す。以下のように入力LLRFnと行要素LLR(行処理演算データ)
Figure 2009100222
から出力LLR
Figure 2009100222
が求まる。
Figure 2009100222
数式7の列要素LLR(列処理演算データ)
Figure 2009100222
が、着目している行インデックスの行要素LLR(行処理演算データ)
Figure 2009100222
を第2項の総和に含めないのに対し、出力LLR(補正LLR)
Figure 2009100222
の計算では、着目している行インデックスを含めて、列インデックスnの列中に“1”が存在する行インデックスの行要素LLR(行処理演算データ)
Figure 2009100222
を第2項の総和に含める。つまり、出力LLR(補正LLR)
Figure 2009100222
は、列インデックスnの列中に“1”が存在する行のパリティ検査式を用いて計算された行要素LLR(行処理演算データ)
Figure 2009100222
の総和を、入力LLR Fnに加算した値となる。
上記の数式8に従って出力LLR(補正LLR)を求める様子を図10(A)に示す。ここではz2を求める例が示される。ただしパリティ検査行列は図9(B)に示すものであるとする。z2を求めるには、2列目で「1」の要素に対応する行要素LLR(行処理演算データ)r12,r32を中間メモリ104から読み出し、また、2列目に対応する入力LLR(受信語データ)F2を入力メモリ101から読み出し、上記数式8に従って計算すればよい。
中間メモリ104は、上述したように、行処理部103と列処理部105間でデータをやりとりするために用いられ、行処理部103から書き込まれる行要素LLR(行処理演算データ)
Figure 2009100222
と、列処理部105から書き込まれる列要素LLR(列処理演算データ)
Figure 2009100222
を保持する。中間メモリ104は行処理部103および列処理部105からの書き込み要求を受けて、行要素LLR(行処理演算データ)
Figure 2009100222
と列要素LLR(列処理演算データ)
Figure 2009100222
とを記憶する。中間メモリ104は、必要に応じて行要素LLR(行処理演算データ)
Figure 2009100222
を列処理部105へ、列要素LLR(列処理演算データ)
Figure 2009100222
を行処理部103へ、それぞれ出力する。
図2は、スケジューラ102の詳細ブロック図である。ただし、図2では、行処理の計算量の低減に関わるブロックのみを示し、その他の基本的な処理を行うブロック、たとえば復号の繰り返し回数をカウントするカウンタ等の表示は省略している。
スケジューラ102は行処理判定部201と行処理制御部202を備える。
行処理判定部201はシンドロームチェック部201A、シンドローム値判定部201B、及び行処理判定メモリ201C(フラグ記憶手段、フラグ初期化手段)を有する。
行判定処理部201は、行処理部103から行ごとに入力されるシンドローム値(信頼度係数)を符号と絶対値とに分離し、符号の情報をシンドロームチェック部201A、絶対値の情報をシンドローム値判定部201Bにそれぞれ入力する。
シンドロームチェック部201Aはシンドローム値の符号の正負を検査し、正の場合に真を、負の場合に偽を行処理判定メモリ201Cへ出力する。
シンドローム値判定部201Bは、入力された絶対値があらかじめ定義した閾値よりも大きいかどうかを判定し、閾値よりも大きい場合には真を、閾値以下の場合には偽を行処理判定メモリ201Cへ出力する。なお、ここでの閾値は計算機シミュレーションなどの数値実験によりあらかじめ求めておくものとする。また閾値は、行インデックス毎に異なる値を設定してもよい。
行処理判定メモリ201Cは、検査行列の行インデックス毎に処理フラグを有する。処理フラグの初期値はたとえば真(第2の値)に設定されている。行処理判定メモリ201Cは、シンドロームチェック部201A及びシンドローム値判定部201Bからの入力が共に真である場合に、スケジューラ102へ入力されたシンドローム値に対応する行インデックスの処理フラグを偽(第1の値)にする。上述したように、行インデックスとは、LDPC(Low Density Parity Check:低密度パリティ検査)符号のパリティ検査行列の行インデックスを意味する。
行処理制御部202は、行処理判定メモリ201Cに基づき、次に処理すべき行インデックスを選択し、選択した行インデックスを指定することにより行処理の実行を行処理部103へ指示する。この際、処理フラグが偽である行インデックスの行処理はスキップするように行インデックスの番号を選択する。選択の方法は、たとえば行インデックス番号の昇順である。1つの行処理が終了するごとに(シンドローム値(信頼度係数)が行処理部103から入力されるごとに)、次に処理すべき行インデックスを選択し、選択した行インデックスを行処理部103に指示する。このように必要最小限の行処理のみを実行するよう行処理部103を制御することで、復号処理全体で必要となる計算量を削減し、復号スループットを向上することができる。
硬判定部106は、列処理部105から入力される出力LLR(補正LLR)の正負を判定する。正の時は0、負のときは1と判定する。ビット毎に判定された0または1の硬判定結果(硬判定データ)はパリティ検査部107と出力バッファ108とへ出力される。
パリティ検査部107は、硬判定部106から入力される硬判定データが、LDPC符号のパリティ検査式(検査行列における各行の検査式)を満たすかどうかを検査し、パリティ検査式がすべて満たされるか否かを示す検査結果をスケジューラ102へ出力する。
出力バッファ108は、硬判定部106から入力される硬判定データを保持する。出力バッファ108は、スケジューラ102から出力の指示がなされた硬判定データを、図示しない後段の信号処理部へ出力する。出力の指示がなかった硬判定データはたとえば廃棄する。スケジューラ102では、硬判定部106から真(すべての検査式が満たされる)を示す検査結果が入力されたとき、この検査結果が得られた硬判定データを出力するように出力バッファ108に指示する。
次に、上記のような構成を有する復号装置の動作について説明する。
図3は、図1の復号装置の動作の流れを示したフローチャートである。なお、図3ではmが行インデックス、nが列インデックスを表し、パリティ検査行列の行数をM、列数をNとする。また、iを繰り返し回数とし、Imaxを最大繰り返し回数とする。処理302〜処理308が行処理に相当し、処理309〜処理312が列処理に相当する。
図示しない前段の信号処理部より、受信語データ(入力LLR)が図1の復号装置に入力される。受信語データが全て入力されると、復号装置は復号処理を開始する。なお入力された受信語データは、復号処理が行われる間、入力メモリ101において保持される。
まず、ステップ301では初期処理を行う。具体的には、行処理判定メモリ201Cにおける行処理フラグを全て真(第2の値)にし、さらに繰り返し回数iを1に設定する。
次にステップ302で、行処理を実行する行インデックスmを1に設定する。
次にステップ303で、行インデックスmの行処理フラグが真かどうかを判定し、行処理フラグが偽(第1の値)の場合には、行処理演算とシンドローム値(信頼度係数)演算とをスキップし、ステップ307へ進む。行処理フラグが真の場合には、ステップ304にて行インデックスmについて行処理演算を実行する。そして、続くステップ305で、シンドローム値(信頼度係数)の絶対値が予め定めた閾値より大きく、かつ、シンドローム値(信頼度係数)の符号が0(正)かどうかを判定する(シンドローム値(信頼度係数)演算)。
ステップ305の判定がNOの場合にはステップ307へ進む。ステップ305の判定がYESの場合にはステップ306へ進み、行インデックスmの行処理フラグを偽に設定する。
ステップ307では、行インデックスmが最終行インデックスMであるかどうかを判定し、NOの場合にはステップ308で行インデックスmをインクリメントし、ステップ303へ戻る。
ステップ307の判定がYESの場合にはステップ309に進み、列インデックスnを1に設定する。そしてステップ310で列インデックスnについて列処理を実行する。
続いて、ステップ311で列インデックスnが最終列インデックスNであるかどうかを判定し、NOの場合にはステップ312において列インデックスnをインクリメントし、処理310へ戻る。
ステップ311の判定がYESの場合には、硬判定を行った後、ステップ313においてパリティ検査を行う。パリティ検査の結果が真(すべての検査式が満たされる)の場合には復号処理を終了し、硬判定により得られた硬判定データを復号度データとして出力し、偽の場合にはステップ314へ進む。
ステップ314では繰り返し回数iが最大繰り返し数Imaxに達したかどうかを判定し、YESの場合には復号処理を終了する。硬判定により得られた硬判定データは後段に出力してもよいし廃棄してもよい。NOの場合にはステップ315で繰り返し回数iをインクリメントした後、ステップ302へ戻る。
ところで、図3の説明では、ステップ313において繰り返し1回毎にパリティ検査を行うこととしたが、複数回の繰り返し毎にパリティ検査を行っても良い(その場合、出力LLR(補正LLR)演算も複数回の繰り返し毎に行っても良い)。繰り返し1回毎に行う場合に比べ、余分に繰り返しが発生する可能性があるが、本発明では行処理フラグにより行処理を制御するため、演算量が大きな行処理に関しては余分な演算量は発生しない。例えば平均的に繰り返しが5回発生するような環境では、パリティ検査を繰り返し5回毎に行うように設定することで1〜4回目のパリティ検査にかかる演算量を削減することができる。
また、行処理フラグが偽(“0”)ということは、パリティ検査を満たしていることを意味するので、全ての行インデックスの行処理フラグの論理和が偽になった時点で処理完了を判断し、パリティ検査を行うことなく、硬判定を行い、復号処理を終了するようにしてもよい。
図4は、ガウス性熱雑音通信路において本実施形態の復号装置と従来の復号装置との行処理演算量の比を示すグラフである。このグラフは本発明者らによる独自の数値実験の結果に基づき得られたものである。また図5は、第1の実施形態の復号装置と従来の復号装置のそれぞれのビット誤り率(BER)特性を示すグラフである。
LDPC符号の検査行列としては、符号長1004bit、パリティ長502bit、符号化率0.5のレギュラーLDPC符号の検査行列を用い、最大繰り返し数を20回とし、変調方式はBPSKとした。
図4において、横軸がEb/N0(ビット当たりのエネルギー対雑音電力比)を示し、縦軸が従来方式の行処理演算量を1とした場合の本発明の行処理演算量を示している。図4より、本実施形態によれば従来方式と比べ行処理演算量が1割弱削減できていることが理解される。
また図5から、本実施形態と従来方式とのビット誤り率特性がほぼ同一であることが確認できる。
以上から、本実施形態により、ビット誤り率特性をほとんど劣化させることなく、行処理演算量を1割弱削減できることが分かる。
以上のように本実施形態によれば、min-sum復号の行処理で得られるシンドローム値(信頼度係数)が閾値を満たすときは行処理フラグを偽に設定し、行処理フラグが真である行のみ行処理を実行するよう制御する。これにより、必要最低限の行処理のみが実行されるため、復号全体の演算量を削減することができ、復号スループットを向上することができる。
次に本発明の第2の実施形態について説明する。
図6に本発明の第2の実施形態に係わる復号装置の構成を示すブロック図である。
第1の実施形態の復号装置は行処理と列処理がそれぞれ一括して実行されるFlooding Schedule型であったのに対し、第2の実施形態の復号装置は、行処理と列処理が、行インデックス毎に逐次的に実行されるSequential Schedule型となっていることを特徴とする。なお、この復号装置は、符号化装置の構成をさらに備えていてもよい。
図6の復号装置は、LLRメモリ(受信手段、データ記憶手段)601、LLR更新処理部(列処理演算手段、行処理演算手段、信頼度係数計算手段、データ更新手段、列処理演算データ記憶手段)602、中間メモリ(行処理演算データ記憶手段)603、スケジューラ(繰り返し制御手段、フラグ記憶手段、フラグ初期化手段)604、及び硬判定部605を備える。
LLRメモリ601は、図示しない前段の信号処理部から入力される受信語データ(入力LLR)を記憶し、これを復号完了まで、出力LLRとして、保持する。受信語データは第1の実施形態と同様、符号語の各ビットに対応する入力LLRからなっている。LLRメモリ601は、スケジューラ604からの指示により、保持している出力LLRを、LLR更新処理部602との間で入出力し、出力LLRはLLR更新処理部602にて更新される。そしてLLR更新処理完了時にはLLRメモリ601は、硬判定部605へ、更新された受信語データ(更新された出力LLR)を全て出力する。
LLR更新処理部602は、スケジューラ604からの実行指示に従い、LLRメモリ601から入力される出力LLRと、中間メモリ603から入力される行要素LLR(行処理演算データ)とを用いて、指定された行インデックス毎に、行処理(シンドローム値(信頼度係数)演算、行処理演算)および列処理(列処理演算、更新処理)を実行する。LLR更新処理部602は、シンドローム値(信頼度係数)をスケジューラ602へ出力し、行要素LLR(行処理演算データ)を中間メモリ603へ書き込み、出力LLRをLLRメモリ601へ書き込む。列処理演算データについては、LLR更新処理部602は、たとえば自身の内部で保持する。つまりLLR更新処理部602は、書き込み要求を受けて列処理演算データを行番号および列番号ごとに記憶する列処理演算データ記憶手段を含んでもよい。この列処理演算データ記憶手段は中間メモリ603に備えさせてもよい。
以下、数式を用いて行インデックスmに対して行われる、行処理(シンドローム値(信頼度係数)演算、行処理演算)および列処理(列処理演算、更新演算)について説明する。
まず、出力LLRqn と行要素LLR(行処理演算データ)
Figure 2009100222
とを用いて以下の式により列処理演算を行うことにより、列要素LLR(列処理演算データ)を計算する。
Figure 2009100222
なお、復号開始時(i=1)にはqmn=qn=Fn となる。Fnは、図示しない前段の信号処理部から復号装置へ入力されるLLR(受信語データ)である。続いて行処理(シンドローム値(信頼度係数)演算と、行処理演算)を実行し、シンドローム値(信頼度係数)
Figure 2009100222
と行要素LLR(行処理演算データ)
Figure 2009100222
を以下の数式10および数式11により求める。
Figure 2009100222
nは列インデックスを表し、iは復号の繰り返し回数を表す。
N(m)は行インデックスmのパリティ検査式において“1”の値をもつ列インデックスの集合を表す。
N(m)\nは、集合N(m)のうちnを除いた列インデックスの部分集合を表す。
sign(x)、 min(x)は、本発明の第1の実施形態で説明した関数である。
ここで本発明の第1の実施形態と同様に、行要素LLR(行演算処理データ)
Figure 2009100222
の計算は数式10ではなく、シンドローム値
Figure 2009100222
を利用する数式4を用いて計算してもよいし、さらに数式5および数式6のようなmodified-min-sumアルゴリズムを用いてもよい。
数式10により、各列インデックスの行要素LLR(行処理演算データ)
Figure 2009100222
が計算された後、以下の数式12に示す更新演算により出力LLRqnを更新する。なお2回目以降の繰り返しにおける復号処理では、qnの値は、1つ前の復号処理で更新されたものを引き続き使用する。
Figure 2009100222
このように、LLR更新処理部602では、行毎に、行処理と列処理を行うことにより、出力LLRをパリティ検査式毎に更新するという特徴をもつ。
中間メモリ603は、LLR更新処理部602の説明から理解されるように、LLR更新処理部602により計算される行要素LLR(行処理演算データ)
Figure 2009100222
を、LLR更新処理部602からの書き込み要求を受けて、記憶する。中間メモリ603は、復号処理の実行の間、書き込み要求された行要素LLR(行処理演算データ)
Figure 2009100222
を保持する。
スケジューラ604は、復号処理全体の制御を行う。
具体的にはスケジューラ604は、LLR更新処理部602へLLR更新処理(行処理および列処理)の実行を指示する。
また、スケジューラ604は、LLR更新処理部602から入力されるシンドローム値(信頼度係数)、及びあらかじめ与えられる最大繰り返し回数から復号処理を終了するかどうかを判断する。
また、スケジューラ604は、復号処理の終了を決定した際には、更新された受信語データ、すなわち更新された出力LLRを硬判定部605へ出力するようLLRメモリ601へ指示する。
図7は、スケジューラ604の詳細ブロック図である。
スケジューラ604はLLR更新処理判定部701、LLR更新処理制御部702、シンドローム累積部703、繰り返し回数カウント部704、及び復号完了判定部(終了手段)705を備える。
LLR更新処理判定部701はシンドロームチェック部701A、シンドローム値判定部701B、及びLLR更新処理判定メモリ701Cを有する。
LLP更新処理判定部701は、LLR更新処理部602から行毎に入力されるシンドローム値(信頼度係数)を符号と絶対値に分離し、符号の情報をシンドロームチェック部701Aに、絶対値の情報をシンドローム値判定部701Bにそれぞれ入力する。
シンドロームチェック部701Aは、シンドローム値(信頼度係数)の符号の正負を検査し、正の場合に真を、負の場合に偽を行処理判定メモリ701C及びシンドローム累積部703へ出力する。
シンドローム値判定部701Bは、入力された絶対値があらかじめ定義した閾値よりも大きいかどうかを判定し、閾値よりも大きい場合には真を、小さい場合には偽をLLR更新処理判定メモリ701Cへ出力する。なお、閾値はあらかじめ計算機シミュレーションなどの数値実験により求めるものとする。 また閾値は、行インデックス毎に異なる値を設定してもよい。
LLR更新処理判定メモリ701Cは、検査行列における行インデックス毎にLLR更新処理フラグを保持する。LLR更新処理フラグの初期値はたとえば真(第2の値)に設定されている。LLR更新処理判定メモリ701Cは、シンドロームチェック部701A及びシンドローム値判定部701Bからの入力が共に真である場合に、LLR更新処理部602から入力されたシンドローム値に対応する行インデックスのLLR更新処理フラグを偽(第1の値)にする。行インデックスとは、第1の実施形態と同様、LDPC符号のパリティ検査行列の行インデックスを意味する。
LLR更新処理制御部702は、LLR更新処理判定メモリ701Cに基づき、次にLLR更新処理を行うべき行インデックスを選択し、選択した行インデックスを指定することによりLLR更新処理の実行をLLR更新処理部602へ指示する。この際、LLR更新処理フラグが偽である行インデックスのLLR更新処理はスキップするように行インデックスを選択する。行インデックスの選択方法は、たとえば行インデックス番号の昇順である。このように必要最小限のLLR更新処理のみを実行するようLLR更新処理部602を制御することで、復号処理全体で必要となる演算量を削減し、復号スループットを向上することができる。
シンドローム累積部703は、シンドローム累積部703は、シンドロームチェック部701Aから行インデックス毎に入力されるシンドロームチェック結果(真(“1”)または偽(“0”))をすべての行について累積(論理積)することによりシンドローム累積値を得る。すべての行についてシンドロームチェック結果が真となったときのみ、シンドローム累積値は真となり、1つでもシンドロームチェック結果が偽である行があるときシンドローム累積値は偽となる。シンドローム累積部703は、シンドローム累積値を、復号完了判定部705へ出力する。
繰り返し回数カウント部704は、復号処理の繰り返し回数をカウントし、 繰り返し回数を復号完了判定部705へ出力する。
復号完了判定部705は、シンドローム累積部703から入力されるシンドローム累積値が真になったとき、または繰り返し回数カウント部704から入力される繰り返し回数があらかじめ設定された最大繰り返し数に達したとき、復号処理の完了を判定する。復号完了判定部705は、復号処理の完了を判定したとき、更新された出力LLR(更新された受信語データ)を硬判定部605へ出力するようLLRメモリ601へ指示する。
硬判定部605は、LLRメモリ601から入力される出力LLRの正負を判定し、正の時は0、負のときは1を選択する。ビット毎に判定された0または1である硬判定データは、図示しない後段の信号処理部へ出力される。
次に、上記のような構成を有する復号装置の動作について説明する。
図8は、図6の復号装置の動作の流れを示すフローチャートである。なお、図8ではmが行インデックス、Mがパリティ検査行列の行数を表し、iは繰り返し回数、Imaxは最大繰り返し回数を表す。
図示しない前段の信号処理部より、受信語データ(入力LLR)が復号装置に入力され、受信語データが全て入力されると、復号処理が開始される。入力された受信語データ(入力LLR)は、復号処理の間、LLRメモリ601で出力LLRとして保持され、復号処理により更新される。
まず、ステップ801では初期処理を行う。具体的には、LLR更新処理判定メモリ701Cが持つLLR更新処理フラグを全て真にし、繰り返し回数iを1に設定する。
次にステップ802で、LLR更新処理を実行する行インデックスmを1に設定する。
次にステップ803で行インデックスmのLLR更新処理フラグが真かどうかを判定し、LLR更新処理フラグが真でない場合、LLR更新処理をスキップし、ステップ807へ進む。LLR更新処理フラグが真の場合には、ステップ804にて行インデックスmについてLLR更新処理を実行し、続くステップ805でシンドローム値(信頼度係数)の絶対値が予め定めた閾値より大きくかつ、シンドローム値(信頼度係数)の符号が0かどうかを判定する。
ステップ805の判定がNOの場合にはステップ807へ進む。一方、ステップ805の判定がYESの場合にはステップ806へ進み、行インデックスmのLLR更新処理フラグを偽に設定する。
ステップ807では、行インデックスmが最終行インデックスMであるかどうかを判定し、NOの場合にはステップ808において行インデックスmをインクリメントし、ステップ803へ戻る。
ステップ807の判定がYESの場合にはステップ809に進み、シンドローム累積値の判定を行う。シンドローム累積値が真の場合には、硬判定を行った後、復号処理を終了し、偽の場合にはステップ810へ進む。
ステップ810では繰り返し回数iが最大繰り返し数Imaxに達したかどうかを判定する。Imaxに達した場合には、たとえば硬判定を行った後、復号処理を終了し、達していない場合にはステップ811において繰り返し回数iをインクリメントした後、ステップ802へ戻る。
以上のように本実施形態によれば、min-sum復号のLLR更新処理で得られるシンドローム値(信頼度係数)が閾値を満たすときはLLR更新処理フラグを偽に設定し、LLR更新処理フラグが真の行のみLLR更新処理を実行するよう制御する。これにより、必要最低限のLLR更新処理のみの実行が可能となるため、復号全体の演算量を削減することができ、復号スループットを向上することができる。
本発明はLDPC符号を用いるシステムであれば、いかなるシステムに対しても応用可能である。例えば通信システム、放送システムをはじめ、磁気記録システム、光ディスクシステム、更には半導体メモリ等、様々なストレージシステムでも用いることが可能である。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の第1の実施形態に係る復号装置の構成を示すブロック図。 図1の復号装置におけるスケジューラのブロック図。 本発明の第1の実施形態に係る復号方法を説明するフローチャート。 本発明の第1の実施形態と従来方式との行処理の演算量比を示すグラフ。 本発明の第1の実施形態と従来方式のビット誤り率特性を表すグラフ。 本発明の第2の実施形態に係る復号装置の構成を示すブロック図。 図6のスケジューラのブロック図。 本発明の第2の実施形態に係る復号方法を説明するフローチャート。 受信語データの一例とおよびパリティ検査行列の一例を示す図。 行処理および列処理を説明する図。
符号の説明
101:入力メモリ(受信手段)
102:スケジューラ(繰り返し制御手段、終了手段、フラグ記憶手段、フラグ初期化手段)
103:行処理部(行処理演算手段、信頼度係数計算手段)
104:中間メモリ(行処理演算データ記憶手段、列処理演算データ記憶手段)
105:列処理部(列処理演算手段、データ補正手段)
106:硬判定部
107:パリティ検査部
108:出力バッファ
201:行処理判定部
202:行処理制御部。
201A:シンドロームチェック部
201B:シンドローム値判定部
201C:行処理判定メモリ
601:LLRメモリ(受信手段、データ記憶手段)601
602:LLR更新処理部(列処理演算手段、行処理演算手段、信頼度係数計算手段、データ更新手段、列処理演算データ記憶手段)
603:中間メモリ(行処理演算データ記憶手段)
604:スケジューラ(繰り返し制御手段、フラグ記憶手段、フラグ初期化手段)
605:硬判定部
701:LLR更新処理判定部
702:LLR更新処理制御部
703:シンドローム累積部
704:繰り返し回数カウント部
705:復号完了判定部(終了手段)
701A:シンドロームチェック部
701B:シンドローム値判定部
701C:LLR更新処理判定メモリ

Claims (12)

  1. 検査行列により定義される低密度パリティ検査符号を復号する復号装置であって、
    受信語データを受信する受信手段と、
    前記受信手段により受信された受信語データを、初期化された列処理演算データとして行番号および列番号ごとに記憶する列処理演算データ記憶手段と、
    行処理演算データの書き込み要求を受けて前記行処理演算データを行番号および列番号ごとに記憶する行処理演算データ記憶手段と、
    前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段に記憶された前記列処理演算データを読み出し、行処理演算を行うことにより前記「1」の要素に対する行処理演算データを計算し、計算された行処理演算データの前記書き込み要求を前記行処理演算記憶手段に行う、行処理演算手段と、
    前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段に記憶された前記列処理演算データを読み出し、前記行により規定されるパリティ検査式の成立に対する信頼性の程度を表す信頼度係数を計算する信頼度係数計算手段と、
    前記検査行列の列毎に、「1」の要素に対して前記行処理演算データ記憶手段に記憶された前記行処理演算データを読み出し、列処理演算を行うことにより前記「1」の要素に対する前記列処理演算データを計算し、計算された列処理演算データを行番号および列番号ごとに前記列処理演算データ記憶手段に書き込む列処理演算手段と、
    前記行処理演算手段の処理と前記信頼度係数計算手段の処理と前記列処理演算手段の処理とを1セットとして繰り返し実行し、前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては前記行処理演算手段の処理と前記信頼度係数計算手段の処理を省略する繰り返し制御手段と、
    を備えた、低密度パリティ検査符号の復号装置。
  2. 前記セットを1回以上繰り返したとき、前記検査行列の「1」の要素に対して、前記行処理演算データ記憶手段に記憶された前記行処理演算データを読み出し、読み出した前記行処理演算データに基づき前記受信語データを補正して補正受信語データを生成するデータ生成手段と、
    前記補正受信語データを硬判定することにより硬判定データを取得する硬判定手段と、
    前記検査行列に基づき前記硬判定データをパリティ検査し、前記パリティ検査の結果が真であるときは、前記硬判定データを復号語データとして出力するパリティ検査手段と、を備え、
    前記繰り返し制御手段は、前記パリティ検査の結果が偽であるときは、前記セットの繰り返し実行を引き続き行う、
    ことを特徴とする請求項1に記載の復号装置。
  3. 前記検査行列における全ての行に対して前記信頼度係数が前記閾値を満たしたとき、または前記セットを所定回数繰り返し実行したとき、前記繰り返し制御手段による繰り返し実行を終了させる終了手段と、
    前記検査行列の「1」の要素に対して、前記行処理演算データ記憶手段に記憶された前記行処理演算データを読み出し、読み出した前記行処理演算データに基づき前記受信語データを補正して補正受信語データを生成するデータ生成手段と、
    前記補正受信語データを硬判定することにより硬判定データを取得する硬判定手段と、
    前記硬判定データを復号語データとして出力する出力手段と、
    をさらに備えた請求項1に記載の復号装置。
  4. 前記検査行列の行毎に、第1の値または第2の値を示すフラグを記憶するフラグ記憶手段と、
    前記行毎の前記フラグを前記第2の値に初期化するフラグ初期化手段と、をさらに備え、
    前記信頼度係数計算手段は、前記行毎の前記信頼度係数が前記閾値を満たしたときは、前記行毎の前記フラグを第1の値に変更し、
    前記繰り返し制御手段は、前記行毎に前記フラグ記憶手段を参照することにより前記行毎の前記信頼度係数が前記閾値を満たすかどうかを判断する、
    ことを特徴とする請求項1ないし3のいずれか一項に記載の復号装置。
  5. 検査行列により定義される低密度パリティ検査符号を復号する復号装置であって、
    受信語データを受信する受信手段と、
    前記受信手段により受信された前記受信語データを記憶するデータ記憶手段と、
    行番号および列番号ごとに初期化された行処理演算データを記憶する行処理演算データ記憶手段と、
    列処理演算データの書き込み要求を受けて前記列処理演算データを行番号および列番号ごとに記憶する列処理演算データ記憶手段と、
    前記検査行列の行毎に、「1」の要素に対して前記データ記憶手段から前記受信語データを読み出すとともに前記行処理演算データ記憶手段から前記行処理演算データを読み出し、列処理演算を行うことにより前記「1」の要素に対する列処理演算データを計算し、前記列処理演算データの書き込み要求を前記列処理演算データ記憶手段に行う列処理演算手段と、
    前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段から前記列処理演算データを読み出し、行処理演算を行うことにより前記「1」の要素に対する前記行処理演算データを計算し、計算した行処理演算データを行番号および列番号ごとに行処理演算データ記憶手段に書き込む行処理演算手段と、
    前記検査行列の行毎に、前記列処理演算データ記憶手段から読み出した前記列処理演算データを用いて前記行により規定されるパリティ検査式の成立に対する信頼性の程度を表す信頼度係数を計算する信頼度係数計算手段と、
    前記検査行列の行毎に、前記列処理演算手段により計算された前記列処理演算データと、前記行処理演算手段により計算された前記行処理演算データとに基づいて前記データ記憶手段内の前記受信語データを更新するデータ更新手段と、
    前記列処理演算手段の処理、前記行処理演算手段の処理、前記信頼度係数計算手段の処理および前記データ更新手段の処理を1セットとして繰り返し実行し、前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては前記列処理演算手段の処理、前記行処理演算手段の処理、前記信頼度係数計算手段の処理および前記データ更新手段の処理の実行を省略する繰り返し制御手段と、
    を備えた低密度パリティ検査符号の復号装置。
  6. 前記検査行列におけるすべての行について前記信頼度係数が前記閾値を満たしたとき、または、所定回数の前記繰り返しを行ったとき、前記繰り返し制御手段による繰り返し実行を終了させる終了手段と、
    前記データ記憶手段から前記受信語データを読み出し、硬判定を行うことにより、復号語データを出力する、硬判定手段と、
    をさらに備えたことを特徴とする請求項5に記載の復号装置。
  7. 前記検査行列の行毎に、第1の値または第2の値を示すフラグを記憶するフラグ記憶手段と、
    前記行毎の前記フラグを前記第2の値に初期化するフラグ初期化手段と、をさらに備え、
    前記信頼度係数計算手段は、前記行毎の前記信頼度係数が前記閾値を満たしたときは、前記行毎の前記フラグを第1の値に変更し、
    前記繰り返し制御手段は、前記行毎に前記フラグ記憶手段を参照することにより前記行毎の前記信頼度係数が前記閾値を満たすかどうかを判断する、
    ことを特徴とする請求項5に記載の復号装置。
  8. 検査行列により定義される低密度パリティ検査符号を復号する復号方法であって、
    受信語データを受信することにより、初期化された列処理演算データを行番号および列番号ごとに列処理演算データ記憶手段に書き込み、
    前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段に記憶された前記列処理演算データを読み出し、行処理演算を行うことにより前記「1」の要素に対する行処理演算データを計算し、計算した行処理演算データを行番号および列番号ごとに行処理演算データ記憶手段に書き込み、
    前記検査行列の行毎に、前記列処理演算データ記憶手段から読み出した列処理演算データを用いて前記行により規定されるパリティ検査式の成立性に対する信頼性の程度を表す信頼度係数を計算し、
    前記検査行列の列毎に、「1」の要素に対して前記行処理演算データ記憶手段に記憶された前記行処理演算データを読み出し、列処理演算を行うことにより前記「1」の要素に対する前記列処理演算データを計算し、計算した列処理演算データを行番号および列番号ごとに前記列処理演算データ記憶手段に書き込み、
    前記行処理演算データの計算および書き込み、前記信頼度係数の計算、および前記列処理演算データの計算および書き込みを1セットとして繰り返し実行し、前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては前記行処理演算データの計算および書き込み、ならびに前記信頼度係数の計算を省略する
    ことを特徴とする低密度パリティ検査符号の復号方法。
  9. 前記セットを1回以上繰り返し実行したとき、前記検査行列の「1」の要素に対して、前記行処理演算データ記憶手段に記憶された前記行処理演算データを読み出し、読み出した前記行処理演算データに基づき前記受信語データを補正し、
    補正した受信語データを硬判定することにより硬判定データを取得し、
    前記検査行列に基づき前記硬判定データをパリティ検査し、
    前記パリティ検査の結果が真であるときは、前記硬判定データを復号語データとして出力し、
    前記パリティ検査の結果が偽であるときは、前記セットの繰り返し実行を引き続き行う、
    ことを特徴とする請求項8に記載の復号方法
  10. 前記検査行列における全ての行に対して前記信頼度係数が前記閾値を満たしたとき、または前記セットを所定回数繰り返し実行したとき、前記セットの繰り返し実行を終了し、
    前記検査行列の「1」の要素に対して、前記行処理演算データ記憶手段に記憶された前記行処理演算データを読み出し、読み出した前記行処理演算データに基づき前記受信語データを補正して補正受信語データを生成し、
    前記補正受信語データを硬判定することにより硬判定データを取得し、
    前記硬判定データを復号語データとして出力する、
    ことを特徴とする請求項8に記載の復号方法。
  11. 検査行列により定義される低密度パリティ検査符号を復号する復号方法であって、
    受信語データを受信し、受信した受信語データをデータ記憶手段に書き込み、
    前記検査行列の行毎に、「1」の要素に対して前記データ記憶手段から前記受信語データを読み出すとともに、初期化された行処理演算データを行番号および列番号ごとに記憶した行処理演算データ記憶手段から「1」の要素に対して前記行処理演算データを読み出し、列処理演算を行うことにより前記「1」の要素に対する列処理演算データを計算し、前記列処理演算データを行番号および列番号ごとに列処理演算データ記憶手段に書き込み、
    前記検査行列の行毎に、「1」の要素に対して前記列処理演算データ記憶手段から前記列処理演算データを読み出し、行処理演算を行うことにより前記「1」の要素に対する前記行処理演算データを計算し、計算した行処理演算データを行番号および列番号ごとに行処理演算データ記憶手段に書き込み、
    前記検査行列の行毎に、前記列処理演算データ記憶手段から読み出した前記列処理演算データを用いて前記行により規定されるパリティ検査式の成立に対する信頼性の度合いを表す信頼度係数を計算し、
    前記検査行列の行毎に、前記第4の処理で計算された前記列処理演算データと、前記第5の処理で計算された前記行処理演算データとに基づいて前記データ記憶手段内の前記受信語データを更新し、
    前記列処理演算データの計算および書き込み、前記行処理演算データの計算および書き込み、前記信頼度係数の計算、および前記受信語データの更新を1セットとして繰り返し実行し、
    前記セットを繰り返し実行する間において前記信頼度係数が閾値を満たした行に対しては、前記列処理演算データの計算および書き込み、前記行処理演算データの計算および書き込み、前記信頼度係数の計算、および前記受信語データの更新を省略する、
    ことを特徴とする低密度パリティ検査符号の復号方法。
  12. 前記検査行列におけるすべての行について前記信頼度係数が前記閾値を満たしたとき、または、前記セットを所定回数繰り返し実行したとき、前記セットの繰り返し実行を終了し、
    前記データ記憶手段から前記受信語データを読み出し、硬判定を行うことにより、復号語データを出力する、
    ことを特徴とする請求項11に記載の復号方法。
JP2007269411A 2007-10-16 2007-10-16 低密度パリティ検査符号の復号装置およびその方法 Pending JP2009100222A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007269411A JP2009100222A (ja) 2007-10-16 2007-10-16 低密度パリティ検査符号の復号装置およびその方法
US12/233,673 US8086932B2 (en) 2007-10-16 2008-09-19 Apparatus and method for decoding low-density parity check code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007269411A JP2009100222A (ja) 2007-10-16 2007-10-16 低密度パリティ検査符号の復号装置およびその方法

Publications (1)

Publication Number Publication Date
JP2009100222A true JP2009100222A (ja) 2009-05-07

Family

ID=40535373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007269411A Pending JP2009100222A (ja) 2007-10-16 2007-10-16 低密度パリティ検査符号の復号装置およびその方法

Country Status (2)

Country Link
US (1) US8086932B2 (ja)
JP (1) JP2009100222A (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011041256A (ja) * 2009-08-14 2011-02-24 Mitsubishi Electric Research Laboratories Inc メッセージパッシングを使用して符号を復号するための方法及び復号器
JP2012500514A (ja) * 2008-08-15 2012-01-05 エルエスアイ コーポレーション 複数のチェックノード・アルゴリズムを用いる誤り訂正デコーダ
JP2013098793A (ja) * 2011-11-01 2013-05-20 Toshiba Corp 半導体メモリ装置および復号方法
US8458555B2 (en) 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US8464142B2 (en) 2010-04-23 2013-06-11 Lsi Corporation Error-correction decoder employing extrinsic message averaging
US8499226B2 (en) 2010-06-29 2013-07-30 Lsi Corporation Multi-mode layered decoding
JP2013150194A (ja) * 2012-01-20 2013-08-01 Jvc Kenwood Corp 復号装置および復号方法
US8504900B2 (en) 2010-07-02 2013-08-06 Lsi Corporation On-line discovery and filtering of trapping sets
JP2014017734A (ja) * 2012-07-10 2014-01-30 Toshiba Corp 受信機及び受信方法
US8768990B2 (en) 2011-11-11 2014-07-01 Lsi Corporation Reconfigurable cyclic shifter arrangement
US9124297B2 (en) 2012-11-01 2015-09-01 Avago Technologies General Ip (Singapore) Pte. Ltd. Trapping-set database for a low-density parity-check decoder
JP2020511079A (ja) * 2017-03-09 2020-04-09 エルジー エレクトロニクス インコーポレイティド Ldpc符号の階層的復号の方法及びそのための装置
KR102247164B1 (ko) * 2020-06-23 2021-05-03 한국과학기술원 채널 복호기의 동작과 결합한 플래시 메모리 읽기 방법 및 그 장치

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9191256B2 (en) * 2012-12-03 2015-11-17 Digital PowerRadio, LLC Systems and methods for advanced iterative decoding and channel estimation of concatenated coding systems
CN105814799B (zh) * 2013-12-09 2019-03-01 三菱电机株式会社 纠错解码装置
WO2021171506A1 (ja) * 2020-02-27 2021-09-02 三菱電機株式会社 復号方法、復号装置、制御回路およびプログラム記憶媒体
TWI712269B (zh) * 2020-05-06 2020-12-01 國立交通大學 以低密度奇偶校驗碼作為錯誤更正碼的資料解碼及其傳輸方法
JP2022124682A (ja) * 2021-02-16 2022-08-26 キオクシア株式会社 メモリシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL9100218A (nl) * 1991-02-07 1992-09-01 Philips Nv Encodeer/decodeer-schakeling, alsmede digitaal video-systeem voorzien van de schakeling.
JP3714910B2 (ja) * 2001-02-20 2005-11-09 株式会社エヌ・ティ・ティ・ドコモ ターボ受信方法及びその受信機
EP2025062A1 (en) * 2006-04-28 2009-02-18 Intel Corporation Multi-theshold message passing decoding of low density parity check codes using the min-sum principle

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516330B2 (en) 2008-08-15 2013-08-20 Lsi Corporation Error-floor mitigation of layered decoders using LMAXB-based selection of alternative layered-decoding schedules
US8683299B2 (en) 2008-08-15 2014-03-25 Lsi Corporation Adjusting input samples in turbo equalization schemes to break trapping sets
JP2012500514A (ja) * 2008-08-15 2012-01-05 エルエスアイ コーポレーション 複数のチェックノード・アルゴリズムを用いる誤り訂正デコーダ
US8555129B2 (en) 2008-08-15 2013-10-08 Lsi Corporation Error-floor mitigation of layered decoders using non-standard layered-decoding schedules
US8464129B2 (en) 2008-08-15 2013-06-11 Lsi Corporation ROM list-decoding of near codewords
US8464128B2 (en) 2008-08-15 2013-06-11 Lsi Corporation Breaking unknown trapping sets using a database of known trapping sets
JP2011041256A (ja) * 2009-08-14 2011-02-24 Mitsubishi Electric Research Laboratories Inc メッセージパッシングを使用して符号を復号するための方法及び復号器
US8464142B2 (en) 2010-04-23 2013-06-11 Lsi Corporation Error-correction decoder employing extrinsic message averaging
US8499226B2 (en) 2010-06-29 2013-07-30 Lsi Corporation Multi-mode layered decoding
US8458555B2 (en) 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US8504900B2 (en) 2010-07-02 2013-08-06 Lsi Corporation On-line discovery and filtering of trapping sets
US8751895B2 (en) 2011-11-01 2014-06-10 Kabushiki Kaisha Toshiba Semiconductor memory device and decoding method
JP2013098793A (ja) * 2011-11-01 2013-05-20 Toshiba Corp 半導体メモリ装置および復号方法
US8768990B2 (en) 2011-11-11 2014-07-01 Lsi Corporation Reconfigurable cyclic shifter arrangement
JP2013150194A (ja) * 2012-01-20 2013-08-01 Jvc Kenwood Corp 復号装置および復号方法
JP2014017734A (ja) * 2012-07-10 2014-01-30 Toshiba Corp 受信機及び受信方法
US9124297B2 (en) 2012-11-01 2015-09-01 Avago Technologies General Ip (Singapore) Pte. Ltd. Trapping-set database for a low-density parity-check decoder
JP2020511079A (ja) * 2017-03-09 2020-04-09 エルジー エレクトロニクス インコーポレイティド Ldpc符号の階層的復号の方法及びそのための装置
US11206042B2 (en) 2017-03-09 2021-12-21 Lg Electronics Inc. Layered decoding method for LDPC code and device therefor
KR102247164B1 (ko) * 2020-06-23 2021-05-03 한국과학기술원 채널 복호기의 동작과 결합한 플래시 메모리 읽기 방법 및 그 장치

Also Published As

Publication number Publication date
US20090100312A1 (en) 2009-04-16
US8086932B2 (en) 2011-12-27

Similar Documents

Publication Publication Date Title
JP2009100222A (ja) 低密度パリティ検査符号の復号装置およびその方法
JP4038519B2 (ja) 統合ノード処理を用いる低密度パリティ検査符号の復号方法及び装置
KR101535225B1 (ko) 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치
US8607118B2 (en) Iterative decoding method and apparatus
US9026886B1 (en) Methods and systems for reconfigurable LDPC decoders
US9432053B1 (en) High speed LDPC decoder
US9319069B2 (en) Reduced complexity non-binary LDPC decoding algorithm
WO2015139160A1 (zh) 一种动态阈值比特翻转的ldpc码硬判决译码方法
JP4651600B2 (ja) 低密度パリティ検査復号器における検査ノード更新方法
JP5631846B2 (ja) 半導体メモリ装置および復号方法
US20200044668A1 (en) Method for ldpc decoding, ldpc decoder and storage device
US8347172B2 (en) Method for decoding using dynamic scheduling scheme for low density parity check codes and apparatus thereof
JP5723975B2 (ja) Ldpcコードの復号のための方法、システム、およびプログラム
US9564921B1 (en) Method and system for forward error correction decoding based on a revised error channel estimate
JP2008219528A (ja) Ldpc符号検出装置及びプログラム
JP4551740B2 (ja) 低密度パリティチェック符号復号器及び方法
US11750219B2 (en) Decoding method, decoder, and decoding apparatus
KR101630114B1 (ko) 최소합 알고리즘을 이용한 ldpc 복호화 장치 및 방법
JP2010535459A (ja) 線形計画法復号のための座標上昇法
JP2006523989A (ja) 可変長誤り訂正符号の構築のための方法および装置
US20230412197A1 (en) Acceleration of s-polar ecc throughput by scheduler
KR101412171B1 (ko) Ldpc 코드 디코딩 장치 및 방법
KR101112121B1 (ko) 저밀도 패리티 검사 부호를 위한 복잡도와 대기시간을 줄인 동적 스케줄링 기법을 이용한 복호 방법 및 장치
JP5772622B2 (ja) 復号装置および復号方法
JP2006523399A (ja) 可変長誤り訂正符号の構築のための方法および装置