JP6605839B2 - 復号装置、復号方法及びプログラム - Google Patents

復号装置、復号方法及びプログラム Download PDF

Info

Publication number
JP6605839B2
JP6605839B2 JP2015095405A JP2015095405A JP6605839B2 JP 6605839 B2 JP6605839 B2 JP 6605839B2 JP 2015095405 A JP2015095405 A JP 2015095405A JP 2015095405 A JP2015095405 A JP 2015095405A JP 6605839 B2 JP6605839 B2 JP 6605839B2
Authority
JP
Japan
Prior art keywords
row processing
value
calculation unit
output value
input
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.)
Active
Application number
JP2015095405A
Other languages
English (en)
Other versions
JP2016213649A (ja
Inventor
一右 土井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2015095405A priority Critical patent/JP6605839B2/ja
Priority to US15/044,569 priority patent/US10256838B2/en
Publication of JP2016213649A publication Critical patent/JP2016213649A/ja
Application granted granted Critical
Publication of JP6605839B2 publication Critical patent/JP6605839B2/ja
Active 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/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • 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/1122Soft-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 storing only the first and second minimum values per check node

Landscapes

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

Description

本発明の実施形態は復号装置、復号方法及びプログラムに関する。
LDPC(Low−Density Parity−Check)符号は、情報伝送レートの理論上の限界値であるシャノン限界に非常に近い誤り訂正能力を持つ誤り訂正符号として注目を集めている。例えばLDPC符号の復号処理をハードウェアにより実現し、通信システム及びストレージシステム等に適用する試みが盛んに行われている。LDPC符号の様々な復号アルゴリズムが提案されてきたが、最も一般的な復号アルゴリズムは、SPA(Sum−Product−Algorithm)である。SPAは誤り訂正能力が最も高い復号アルゴリズムとして知られている。
特許第4929342号公報 特許第5018807号公報 特開2014−140111号公報
A High Performance and Programmable Decoder VLSI for Structured LDPC Codes, ISCIT 2006 On implementation of min−sum algorithm for decoding low−density parity−check (LDPC) codes,Global Telecommunications Conference, 2002. GLOBECOM 02.IEEE (Volume:2)P1349−1353 LDPC符号の簡易復号法とその離散化密度発展法―δ−Min復号法の離散化密度発展法による特性評価―,信学技報RDC2005−42 IEEE Commun. Lett., vol.6, pp.208−210 2002, "Density evolution for two improved bp−based decoding algorithms of LDPC codes" IEEE COMMUNICATIONS LETTERS, VOL.10,NO.6,JUNE 2006,P.483−485,"Adaptive Offset Min−Sum Algorithm for Low−Density Parity Check Codes" ICSP2008 Proceedings, "Modified Normalized Min−Sum Decoding of LDPC Codes"
しかしながらLDPC符号の復号処理を行う回路の規模、及び、LDPC符号の復号処理を行うプログラムに使用できるメモリ等の復号装置のリソースに制限がある場合、LDPC符号の復号処理を精度良く行うことが難しかった。
実施形態の復号装置は、LDPC符号の復号装置であって、第1演算部と、第2演算部と、選択部と、を備える。第1演算部は、第1の復号アルゴリズムに基づく行処理を行う。第2演算部は、前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う。選択部は、所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値を選択する。前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)である。前記所定の判定条件は、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値以上の場合、前記第2演算部による行処理の出力値を選択し、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である。
実施形態の通信システムの構成の例を示す図。 実施形態の復号装置の構成の例を示す図。 実施形態の行処理演算部の構成の例を示す図。 実施形態の第1演算部の構成の例を示す図。 実施形態のΦテーブルの設定値の例を示す図。 実施形態のΦテーブルの設定値の例を示す図。 実施形態の第2演算部の構成の例を示す図。 Gallagerの関数f(x)を示す図。 実施形態の復号装置の動作例を示すフローチャート。 実施形態の行処理演算部の動作例を示すフローチャート。 実施形態の変形例の通信システムの構成の例を示す図。 実施形態の変形例の検査行列の例1を示す図。 実施形態の変形例の検査行列の例2を示す図。 実施形態の変形例の検査行列の例3を示す図。 例1の検査行列を使用した場合のシミュレーション結果の値を示す図。 例2の検査行列を使用した場合のシミュレーション結果の値を示す図。 例3の検査行列を使用した場合のシミュレーション結果の値を示す図。 例1の検査行列を使用した場合のシミュレーション結果のグラフを示す図。 例2の検査行列を使用した場合のシミュレーション結果のグラフを示す図。 例3の検査行列を使用した場合のシミュレーション結果のグラフを示す図。 実施形態の復号装置のハードウェア構成の例を示す図。
以下に添付図面を参照して、復号装置、復号方法及びプログラムの実施形態を詳細に説明する。
図1は実施形態の通信システムの構成の例を示す図である。実施形態の通信システム10は、符号化装置20、通信路30及び復号装置40を備える。符号化装置20は、通信路30を介して送信される送信データに生成行列Gを掛けることにより、LDPC符号データを生成する。通信路30は、LDPC符号データの伝送に使用される媒体である。通信路30は、無線方式でも有線方式でもよく、また無線方式及び有線方式が組み合わされていてもよい。
復号装置40は、通信路30から受信データを受信すると、検査行列Hを使用して当該受信データの誤りを訂正することにより、復号データ(LDPC符号データ)を生成する。検査行列Hの各成分の値は0又は1である。LDPC符号の検査行列Hは、1の数が少ない疎行列である。また生成行列G及び検査行列Hは、GH=0の関係を満たす。ここでHは、Hの転置行列を表す。
次に実施形態の復号装置40の構成例を示し、下記式(1)の検査行列Hを用いて復号した時の復号動作について説明する。
Figure 0006605839
式(1)の検査行列Hは、3行6列の場合の例である。式(1)の検査行列Hの行重みは3であり、列重みは1又は2である。ここで行重みとは、行に含まれる1を示す成分の数である。また列重みとは、列に含まれる1を示す成分の数である。実施形態の説明では、式(1)の検査行列Hが使用される場合について説明する。なお検査行列Hは式(1)の検査行列に限られず任意でよい。
図2は実施形態の復号装置40の構成の例を示す図である。実施形態の復号装置40は、受信部41、復号データメモリ42、行処理演算部43、検査行列データメモリ44、行処理メモリ45、二値化部46及び検査部47を備える。
受信部41は、符号化装置20から通信路30を介して受信データRを受信すると、通信路30のモデルと受信データRから、アナログの復号データD’の初期値D’(init)を計算し、復号データメモリ42に記憶する。ここで、nは、検査行列の列番号(データ番号)であり、nは1〜6となる。アナログの復号データD’は下記式(2)により表される。
Figure 0006605839
ここでP(D=0)は、バイナリ復号データDが0である確率を表し、P(D=1)は、Dが1である確率を表している。P(D=0)>P(D=1)の場合、復号データD’は正の数となり、値が大きいほどDが0である確率が大きいことを示す。P(D=0)<P(D=1)の場合、復号データD’は負の数となり、値が小さいほどRが1である確率が大きいことを示す。P(D=0)=P(D=1)の場合、復号データD’は0となり、Rが0である確率と、Rnが1である確率と、が等しいことを示す。
そして、D’の初期値D’(init)は、受信データと通信路モデルから計算され、下記式(3)となっている。
Figure 0006605839
受信データRの1データあたりのビット数は任意でよい。実施形態の説明では、受信データRのデータ長が6であり、受信データR(=(R,R,R,R,R,R))から計算されたD’(init)〜D’(init)が、復号データメモリ42に格納される場合を例にして説明する。
受信部41が、D’(init)を復号データメモリ42に記憶した後、行処理演算部43が、行処理メモリ45を初期化する。行処理メモリ45には、行処理演算の確率値α=(αm1,αm2,αm3,αm4,αm5,αm6)が格納されている。ここで、mは検査行列の行番号を示しており、mは、1〜3となる。行処理演算の確率値は、m行の行処理演算に着目した時の、復号データDの対数確率比となっており、下記式(4)となっている。
Figure 0006605839
数式(4)の分母及び分子の意味は、m行の行処理演算に着目している点以外は、数式(2)の分母及び分子の意味と同じなので、説明を割愛する。復号装置40が復号を実施する前は、行処理演算部43により行処理演算が実施されていないため、復号データが0か1かは全く分からない。よって、行処理演算部43は全てのαの値を0に初期化する。
復号データメモリ42と行処理メモリ45の初期化が行われた後、行処理演算部43が行処理を行う。行処理演算部43は、検査行列Hの行毎に行処理を繰り返すことにより、アナログの受信データRの誤りを訂正する。行処理は、復号データD’、及び、行処理演算の確率値αmnを更新する処理である。
具体的には、まず行処理演算部43は、検査行列データメモリ44から検査行列Hを読み出す。
次に、行処理演算部43は、復号データメモリ42からアナログの復号データD’を読み出し、行処理メモリ45から行処理演算の確率値αmnを読み出す。ここでmは検査行列Hの行番号で、nは行処理対象の行に含まれる1を示す成分の列番号である。
行処理演算部43は、行処理演算の確率値αmnと復号データD’を読み出した後、検査行列Hの行毎に行処理を行う。検査行列Hの各行の行処理では、復号データD’が更新され、行処理演算の確率値αmnが更新される。
例えば式(1)の検査行列Hの1行目の行処理の場合、1を示す成分の列番号は2,3,4なので、復号データD’,D’及びD’が更新される。行処理演算部43は、1行目の行処理を行う場合、復号データメモリ42から復号データD’(n=2,3,4)を読み出す。行処理演算部43は、1行目の行処理により得られた復号データD’(n=2,3,4)により、復号データメモリ42の復号データD’(n=2,3,4)を更新する。そして、行処理演算の確率値の場合、1を示す成分の列番号は2,3,4なので、行処理演算の確率値α12,α13及びα14が読み出され、更新される。行処理演算部43の行処理の詳細な説明については後述する。
行処理演算部43は、行処理が終了すると、アナログの復号データD’=(D’,D’,D’,D’,D’,D’)の読出し要求を、二値化部46に入力する。例えば式(1)の検査行列Hの行処理の場合、行処理演算部43は、検査行列Hの3行目の行処理が終了すると、読出し要求を二値化部46に入力する。
二値化部46は、行処理演算部43から読み出し要求を受け付けると、復号データメモリ42からアナログの復号データD’=(D’,D’,D’,D’,D’,D’)を読み出す。二値化部46は、アナログの復号データD’=(D’,D’,D’,D’,D’,D’)を、閾値判定によってバイナリの復号データD=(D,D,D,D,D,D)に変換する。すなわち各Dは0又は1である。二値化部46はバイナリの復号データDを検査部47に入力する。
検査部47は、二値化部46からバイナリの復号データD=(D,D,D,D,D,D)を受け付けると、当該復号データDをパリティ検査する。具体的には、検査部47は、検査行列データメモリ43から検査行列Hを読み出し、S=D×H=(S,S,S)によりシンドロームSを算出する。
そして検査部47は、S≠(0,0,0)の場合、行処理の再実行通知を行処理演算部43に入力する。行処理演算部43は、検査部47から再実行通知を受け付けると、1回目の行処理により更新されたアナログの復号データD’=(D’,D’,D’,D’,D’,D’)、及び、行処理演算の確率値αmnを使用して、2回目の行処理を検査行列Hの1行目から再び行う。
なお行処理演算部43の行処理は、S=(0,0,0)又は所定の反復復号回数(第4閾値)に達するまで繰り返し行われる。N回目の行処理に使用されるアナログの復号データD’、及び、行処理演算の確率値αmnの初期値には、N−1回目の行処理により得られた値が使用される。所定の反復復号回数(第4閾値)に達するまでに、S=(0,0,0)にならない場合、受信データRから復号データDが得られず、復号に失敗する。
検査部47は、S=(0,0,0)の場合、復号データD=(D,D,D,D,D,D)を出力する。また検査部47は、S≠(0,0,0)、かつ、所定の反復復号回数に達した場合、受信データR=(R,R,R,R,R,R)からデジタルの復号データD=(D,D,D,D,D,D)が得られないことを示すエラーを出力する。
次に行処理演算部43の行処理について具体的に説明する。
図3は実施形態の行処理演算部43の構成の例を示す図である。実施形態の行処理演算部43は、減算部401、第1演算部402、第2演算部403、選択部404、符号値演算部405、乗算部406及び加算部407を備える。
減算部401は、復号データメモリ42からアナログの復号データD’を読み出し、行処理メモリ45から行処理演算の確率値αmnを読み出すと、D’−αmnを算出する。減算部401は、D’−αmnを第1演算部402、第2演算部403、選択部404及び加算部407に入力する。
第1演算部402は、減算部401からD’−αmnを受け付けると、第2演算部403で使用される復号アルゴリズムよりも誤り訂正能力が高い復号アルゴリズムに基づく行処理により、αmnの絶対値|αmn|を算出する。実施形態の説明では、第1演算部402で使用される復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2)の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPAである。
第1演算部402の行処理の詳細について説明する。
図4は実施形態の第1演算部402の構成の例を示す図である。実施形態の第1演算部402は、ABS(Absolute value)部421、FF(Flip Flop)部422、1/2部423、Φ部424、FF部425、加算部426、FF部427、FF部428、FF部429、Q−R部430、1/2部431、Φ部432及びFF部433を備える。
第1演算部402は下記式(5)の演算を行う。
Figure 0006605839
ここでmは検査行列Hの行番号である。nは検査行列Hの列番号である。
A(m)は行処理対象の行に含まれる1を示す成分の列番号の集合である。例えば上述の式(1)の検査行列Hの場合、A(1)={2,3,4}、A(2)={1,4,5}、A(3)={3,5,6}である。
A(m)\nは差集合である。例えば上述の式(1)の検査行列Hの場合、A(1)\2={3,4}、A(1)\3={2,4}、A(1)\4={2,3}である。
Φ及びΦはGallagerの関数f(x)=−log{tanh(x/2)}を計算するためのテーブルである。実施形態では、Φ=Φ=−log{tanh(x)}の入力値xと出力値Φ(x)(Φ(x))との対応が記憶されている。
図5は実施形態のΦテーブルの設定値の例を示す図である。図5の例は、入力値xのビット数が7ビット(整数3ビット、小数4ビット)であり、出力値Φ(x)のビット数が10ビット(整数4ビット、小数6ビット)である場合を示す。例えば入力値xが1の場合、7ビットの2進数では0000001である。下位4ビットが小数ビットなので、入力値xが1の場合、浮動小数点形式では、1/16=0.0625となる。また例えば入力値xが1の場合、出力値Φ(1)は178である。178は、10ビットの2進数では0010110010である。上位4ビットが整数ビットであり、下位6ビットが小数ビットなので、出力値Φ(x)が178の場合、浮動小数点形式では、2+1/2+1/4+1/32=2.78125となる。
図6は実施形態のΦテーブルの設定値の例を示す図である。図6の例は、入力値xのビット数が10ビット(整数3ビット、小数7ビット)であり、出力値Φ(x)のビット数が7ビット(整数4ビット、小数3ビット)である場合を示す。図6のΦテーブルの説明は、図5のΦテーブルの説明と同様なので省略する。
第1演算部402が、上述のΦテーブル及びΦテーブルを利用して、Gallagerの関数f(x)=−log{tanh(x/2)}の演算を行うことにより、LDPC符号の復号処理に必要なリソースを抑えることができる。
図4に戻り、第1演算部402の処理について、上述の式(1)の検査行列Hの1行目の行処理の場合を例にして具体的に説明する。m=1、A(1)={2,3,4}なので、ABS部421は、減算器401からD’−α12、D’−α13及びD’−α14を順に受け付ける。ABS部421は、それぞれの絶対値|D’−α12|、|D’−α13|及び|D’−α14|を順に算出し、当該絶対値|D’−α12|、|D’−α13|及び|D’−α14|を順にFF部422に入力する。
1/2部423は、FF部422から絶対値|D’−α12|、|D’−α13|及び|D’−α14|を順に読み出すと、それぞれを2で除算する。1/2部423は、絶対値|D’−α12|/2、|D’−α13|/2及び|D’−α14|/2を順にΦ部424に入力する。
Φ部424は、1/2部423から絶対値|D’−α12|/2、|D’−α13|/2及び|D’−α14|/2を順に受け付けると、Φテーブル(図5参照)を参照して、Φ(|D’−α12|/2)、Φ(|D’−α13|/2)及びΦ(|D’−α14|/2)を順に算出する。Φ部424は、Φ(|D’−α12|/2)、Φ(|D’−α13|/2)及びΦ(|D’−α14|/2)を順に、FF部425に入力する。またΦ部424は、Φ(|D’−α12|/2)、Φ(|D’−α13|/2)及びΦ(|D’−α14|/2)を順に、FF部428に入力する。
FF部425、加算部426及びFF部427は、下記式(6)により演算値Qを算出する。
Figure 0006605839
上述の式(1)の検査行列Hの一行目の行処理の場合、式(6)により、Q=Φ(|D’−α12|/2)+Φ(|D’−α13|/2)+Φ(|D’−α14|/2)が算出される。
一方、FF部428及びFF部429は、下記式(7)の演算値Rを保持する。
Figure 0006605839
上述の式(1)の検査行列Hの一行目の行処理の場合、式(7)の演算値Rは、Φ(|D’−α12|/2)、Φ(|D’−α13|/2)及びΦ(|D’−α14|/2)である。
Q−R部430は、FF部427から演算値Qを読み出し、FF部429から演算値Rを読み出すと、Q−Rを算出する。上述の式(1)の検査行列Hの一行目の行処理の場合、Q−R=Φ(|D’−α13|/2)+Φ(|D’−α14|/2)、Q−R=Φ(|D’−α12|/2)+Φ(|D’−α14|/2)、及び、Q−R=Φ(|D’−α12|/2)+Φ(|D’−α13|/2)が算出される。Q−R部430は、Q−R=Φ(|D’−α13|/2)+Φ(|D’−α14|/2)、Q−R=Φ(|D’−α12|/2)+Φ(|D’−α14|/2)、及び、Q−R=Φ(|D’−α12|/2)+Φ(|D’−α13|/2)を順に1/2部431に入力する。
1/2部431は、Q−R部430からQ−R=Φ(|D’−α13|/2)+Φ(|D’−α14|/2)、Q−R=Φ(|D’−α12|/2)+Φ(|D’−α14|/2)、及び、Q−R=Φ(|D’−α12|/2)+Φ(|D’−α13|/2)を順に受け付けると、それぞれを2で除算する。1/2部431は、(Q−R)/2={Φ(|D’−α13|/2)+Φ(|D’−α14|/2)}/2、(Q−R)/2={Φ(|D’−α12|/2)+Φ(|D’−α14|/2))/2、及び、(Q−R)/2={Φ(|D’−α12|/2)+Φ(|D’−α13|/2))}/2を順にΦ部432に入力する。
Φ部432は、1/2部431から(Q−R)/2={Φ(|D’−α13|/2)+Φ(|D’−α14|/2)}/2、(Q−R)/2={Φ(|D’−α12|/2+Φ(|D’−α14|/2))/2、及び、(Q−R)/2={Φ(|D’−α12|/2)+Φ(|D’−α13|/2))}/2を順に受け付けると、Φテーブル(図6参照)を参照して、上述の式(5)の絶対値|α12|、|α13|及び|α14|を順に算出する。Φ部432は、絶対値|α12|、|α13|及び|α14|を順に、FF部433に入力する。なおFF部433の絶対値|α12|、|α13|及び|α14|は、後述の選択部404により読み出される。
図3に戻り、第2演算部403は、減算部401からD’−αmnを受け付けると、第1演算部402で使用される復号アルゴリズムよりも誤り訂正能力が低い復号アルゴリズムに基づく行処理により、αmnの絶対値|αmn|を算出する。実施形態の説明では、第2演算部403で使用される復号アルゴリズムはMSA(Min−Sum−Algorithm)である。
次に第2演算部403の行処理について説明する。
図7は実施形態の第2演算部403の構成の例を示す図である。実施形態の第2演算部403は、ABS部441、FF部442、比較部443、メモリ444、選択部445及びFF部446を備える。
第2演算部403は下記式(8)の演算を行う。
Figure 0006605839
m、n、A(m)、及びA(m)\nの説明は、上述の式(5)の場合と同じなので省略する。
第2演算部403の処理について、上述の式(1)の検査行列Hの1行目の行処理の場合を例にして具体的に説明する。m=1、A(1)={2,3,4}なので、ABS部441は、減算部401からD’−α12、D’−α13及びD’−α14を順に受け付ける。ABS部441は、それぞれの絶対値|D’−α12|、|D’−α13|及び|D’−α14|を順に算出し、当該絶対値|D’−α12|、|D’−α13|及び|D’−α14|を順にFF部442に入力する。
比較部443は、絶対値|D’−α12|、|D’−α13|及び|D’−α14|のうち、最小値と2番目に小さい値とを選択部445に入力する。メモリ444は、比較部443の比較処理に使用される。メモリ444は、最小値及び2番目に小さい値を記憶する。具体的には、比較部443は、FF部442から絶対値|D’−α12|を受け付けると、当該絶対値|D’−α12|をメモリ444に記憶する。次に、比較部443は、FF部442から絶対値|D’ −α13|を受け付けると、当該絶対値|D’ −α13|をメモリ444に記憶する。次に、比較部443は、FF部442から絶対値|D’ −α14|を受け付けると、当該絶対値|D’ −α14|と、メモリ444に記憶されている絶対値|D’−α12|及び|D’−α13|と、を比較する。比較部443は、絶対値|D’−α12|、|D’−α13|及び|D’−α14|のうち、最小値と2番目に小さい値とを選択部445に入力する。
以下、実施形態の説明では、|D’−α12|<|D’−α13|<|D’−α14|とし、比較部443が、|D’−α12|及び|D’−α13|を選択部445に入力する場合について説明する。
選択部445は、比較部443から|D’−α12|及び|D’−α13|を受け付けると、上述の式(8)に基づいて|D’−α12|又は|D’−α13|を選択することにより、絶対値|α12|、|α13|及び|α14|を順に、FF部446に入力する。具体的には、最小値が|D’−α12|であり、2番目に小さい値が|D’−α13|であるため、|α12|=|D’−α13|、|α13|=|D’−α12|、|α14|=|D’−α12|となる。なおFF部446の絶対値|α12|、|α13|及び|α14|は、後述の選択部404により読み出される。
図3に戻り、選択部404は、第1演算部402から受け付けた|αmn|、及び、第2演算部403から受け付けた|αmn|のうち、演算誤差の少ない方の|αmn|を判定条件に基づいて選択し、当該|αmn|を乗算部406に入力する。
ここで第1演算部402の演算誤差について説明する。第1演算部402の演算では、Gallagerの関数f(x)の演算が、Φテーブル(図5参照)及びΦテーブル(図6参照)を利用して行われている。
図8はGallagerの関数f(x)を示す図である。なお横軸のxは、Φテーブル及びΦテーブルの入力値xの浮動小数点形式で表されている。図8に示されるように、x→0のとき、f(x)=−log(tanh(x/2))→∞となる。しかしながらΦテーブル及びΦテーブルでは、x=0の場合に、浮動小数点形式で表した場合の出力値f(x)が約5.5になるように上限値が設定されているので、xが0に近づくほど、出力値f(x)の演算誤差が大きくなる。
D’は、各行の行処理が行われるたびに更新されているが、行処理による誤り訂正が正常に行われている場合、D’の信頼度は上昇し、D’の絶対値が上昇する。反復復号が1回(つまり、全行の行処理)実施されると、D’はn番目の列の列重みの数だけ、更新される。従って、行処理の反復復号回数が増加すると、D’の絶対値は、非常に大きくなる。従って、Φテーブルの入力値x(=|D’−αmn|)は大きく、Φテーブルの入力値xは小さくなる傾向になり、Φ(x)の誤差が大きくなる。よって、第1演算部402により行われるSPAに基づく行処理は、誤り訂正能力が大きいが、反復復号回数が増加すると出力値Φ(x)の誤差が大きくなる。
例えば検査行列Hの行重みが3であり、Φテーブルの入力値xが13、10、9の場合、Φテーブルの出力値Φ(x)=|α|は全て上限値5.5(浮動小数点形式)となる。それに対し、実際にGallagerの関数を用いた場合の出力値|α|はそれぞれ約8.68、8.98、9.95(浮動小数点形式)となる。よって、このような場合に、復号装置40がΦテーブル及びΦテーブルを利用したSPAに基づく行処理を行うと、実際にGallagerの関数を用いた場合に対する演算誤差が発生する。よって、復号に失敗する確率が上がる。
一方、第2演算部403の行処理では、入力値xが13、10、9の場合、上述の式(8)により、|α|は9,9,10となる。したがって第1演算部402の行処理よりも第2演算部403の行処理の方が、実際にGallagerの関数を用いた場合に対する演算誤差が小さい。
つまり、Φテーブル及びΦテーブルを利用したSPAに基づく行処理を行うと、演算誤差が発生する必要条件は、Φテーブルの入力値xの全てが、Φテーブルの出力最大値5.5(浮動小数点方式)よりも大きくなることであると言える。
選択部404は、判定条件に基づいて、第1演算部402から受け付けた|αmn|、又は、第2演算部403から受け付けた|αmn|を選択し、当該|αmn|を乗算部406に入力する。ここで判定条件の例について説明する。
<第1演算部402、第2演算部403への入力値の絶対値|D’−αmn|を参照する場合1>
Φテーブルの出力値Φ(x)は入力値xが0に近づくとき増加するが、入力値xが0に近づくほど出力値Φ(x)の演算誤差が大きくなる。選択部404は、第1演算部402に入力された複数のD’−αmnの絶対値|D’−αmn|のうち、最小値の|D’−αmn|が閾値(第1閾値)以上の場合、第2演算部403から受け付けた|αmn|を選択し、第1演算部402に入力された最小値の|D’−αmn|が閾値未満の場合、第1演算部402から受け付けた|αmn|を選択してもよい。
これにより第1演算部402の演算誤差が小さい場合には、第1演算部402による行処理の出力値|αmn|を利用し、第1演算部402の演算誤差が大きい場合には、第2演算部403による行処理の出力値|αmn|を利用することができる。
上述の<第1演算部402、第2演算部403への入力値の絶対値|D’−αmn|を参照する場合1>は、後述の実施形態の変形例で説明するシミュレーション結果のFirstMin(図13A乃至図14C参照)に対応する。
<第1演算部402、第2演算部403への入力値の絶対値|D’−αmn|を参照する場合2>
第1演算部402に入力される入力値D’−αmnは、その絶対値|D’−αmn|が小さいほど信頼性が低い。すなわち絶対値|D’−αmn|が最小になるD’−αmnは最も信頼性が低い。最小の絶対値|D’−αmn|の行処理では、2番目に信頼性の低い|D’−αmn|から、1番信頼性の高い|D’−αmn|が使用される。そのため2番目に信頼性の低い|D’−αmn|が閾値(第2閾値)以上の場合、最も信頼性の低い|D’−αmn|の行処理の演算誤差が大きくなる。
選択部404は、第1演算部402に入力された複数のD’−αmnのうち、2番目に絶対値が小さいD’−αmnが閾値(第2閾値)以上の場合、第2演算部403から受け付けた|αmn|を選択し、第1演算部402に入力された複数のD’−αmnのうち、2番目に絶対値が小さいD’−αmnが閾値以上でない場合、第1演算部402から受け付けた|αmn|を選択してもよい。
これにより第1演算部402に入力された複数のD’−αmnのうち、絶対値が最小のD’−αmnの出力値|αmn|の閾値を判定する場合よりも、1番信頼性の低いD’−αmnの行処理の演算誤差を抑えることができる。したがって高い誤り訂正効果が期待できる。
上述の<第1演算部402、第2演算部403への入力値の絶対値|D’−αmn|を参照する場合2>は、後述の実施形態の変形例で説明するシミュレーション結果のSecondMin(図13A乃至図14C参照)に対応する。
なお複数の|D’−αmn|の最小値及び2番目に小さい値は、第2演算部403による行処理により得られる。したがって選択部404は、閾値判定を行うときに、第1演算部402、第2演算部403への入力値の絶対値|D’−αmn|の替わりに、第2演算部403による行処理の結果を利用しても良い。
<行処理の反復復号回数を参照する場合>
行処理の反復復号回数が増加すると、Φテーブルの入力値xが小さくなり、出力値Φ(x)が大きくなる傾向がある。選択部404は、第1演算部402の行処理演算の反復復号回数を閾値(第3閾値)判定してもよい。すなわち選択部404は、反復復号回数が閾値以下の場合、第演算部40から受け付けた|αmn|を選択し、反復復号回数が閾値より大きい場合、第2演算部403から受け付けた|αmn|を選択してもよい。これにより第1演算部402の演算誤差が小さい場合には、第1演算部402による行処理の出力値を利用し、第1演算部402の演算誤差が大きい場合には、第2演算部403による行処理の出力値を利用することができる。
なお選択部404による上述の判定に使用される閾値は、実施環境に応じて任意に定めてよい。ただし、Φテーブル及びΦテーブルを利用したSPAに基づく行処理の演算誤差が発生する必要条件は、第1演算部402、第2演算部403への入力値|D’−αmn|が全て、Φテーブルの出力値の最大値5.5(浮動小数点方式)よりも大きくなることなので、第1閾値と第2閾値は、Φテーブルの出力値の最大値Tよりも大きくなければならない。
上述の<行処理の反復復号回数を参照する場合>は、後述の実施形態の変形例で説明するシミュレーション結果のCnt(図13A乃至図14C参照)に対応する。
また選択部404は、第1演算部402、第2演算部403への入力値の絶対値の閾値判定、及び、第1演算部402による行処理の反復復号回数の閾値判定を組み合わせてもよい。
例えば選択部404は、第1演算部402による反復復号回数が閾値より大きい場合に、第1演算部402に入力される複数の入力値の絶対値のうち、最小値又は2番目に小さい値の閾値判定を行うようにしてもよい。すなわち選択部404は、第1演算部402による反復復号回数が閾値以下の場合、第1演算部402による行処理の出力値を選択する。そして選択部404は、第1演算部402による反復復号回数が閾値より大きくなった場合、第1演算部402に入力される複数の入力値の絶対値のうち、最小値又は2番目に小さい値に応じて、第1演算部402による行処理の出力値、又は、第2演算部403による行処理の出力値を選択するようにしてもよい。
上述の<第1演算部402、第2演算部403への入力値|αmn|を参照する場合2>と、上述の<行処理の反復復号回数を参照する場合>と、を組み合わせた場合は、後述の実施形態の変形例で説明するシミュレーション結果のSecondMin&Cnt(図13A乃至図13C参照)に対応する。
一方、符号値演算部405は、行処理メモリ45から行処理演算の確率値αmnを読み出すと、下記式(9)により、sign(αmn)を算出する。
Figure 0006605839
m、n、A(m)、及びA(m)\nの説明は、上述の式(5)の場合と同じなので省略する。sign(αmn)はαmnの符号値(1又は−1)を示す。符号値演算部405は、sign(αmn)を乗算部406に入力する。
乗算部406は、選択部404から|αmn|を受け付け、符号値演算部405からsign(αmn)を受け付けると、αmn(out)=sign(αmn)×|αmn|によりαmn(out)を算出する。乗算部406は当該αmn(out)を行処理メモリ45に記憶する。また乗算部406は当該αmn(out)を加算部407に入力する。
加算部407は、減算部401からD’−αmnを受け付け、乗算部406からαmn(out)を受け付けると、D’(out)=D’−αmn+αmn(out)によりD’(out)を算出する。そして加算部407は当該D’(out)を復号データメモリ42に記憶する。
次に実施形態の復号方法について説明する。実施形態の説明では、受信データRのデータ長が6である場合を例にして説明する。また受信データRをR=(R,R,R,R,R,R)と表す。
図9は実施形態の復号装置の動作例を示すフローチャートである。はじめに、受信部41が、符号化装置20から通信路30を介してアナログの受信データR=(R,R,R,R,R,R)を受信する(ステップS1)。次に、受信部41は、アナログの受信データR=(R,R,R,R,R,R)から、アナログの復号データD’=(D,D,D,D,D,D)の初期値を計算し、復号データメモリ42に記憶する(ステップS2)。
次に、行処理演算部43が、復号データメモリ42からアナログの復号データD’(nは行処理対象の行に含まれる1を示す成分の列番号)を読み出す(ステップS3)。次に、行処理演算部43は、検査行列Hの行毎に行処理を行うことにより、アナログの受信データRの誤りを訂正する(ステップS4)。なおステップS4の詳細な説明は、図10を参照して後述する。ステップS4の処理により、復号データメモリ42に記憶されたアナログの復号データD’、及び、行処理メモリ45に記憶された行処理演算の確率値αmnが更新される。
次に、二値化部46が、アナログの復号データD’=(D’,D’,D’,D’,D’,D’)を、閾値判定によってバイナリの復号データD=(D,D,D,D,D,D)に変換する(ステップS5)。
次に、検査部47が、バイナリの復号データD=(D,D,D,D,D,D)のパリティ検査がOKであるか否かを判定する(ステップS6)。具体的には、検査部47は、S=D×H=(S,S,S)により算出されたシンドロームS=(0,0,0)である場合、パリティ検査がOKであると判定する。
パリティ検査がOKである場合(ステップS6、Yes)、検査部47は、デジタルの復号データD=(D,D,D,D,D,D)を出力する(ステップS10)。
パリティ検査がNGである場合(ステップS6、No)、検査部47は、第1演算部による行処理の反復復号回数が閾値(第4閾値)以上であるか否かを判定する(ステップS7)。
反復復号回数が閾値未満の場合(ステップS7、Yes)、検査部47が、反復復号回数をインクリメントし(ステップS8)、復号処理はステップS4に戻る。
反復復号回数が閾値以上の場合(ステップS7、No)、検査部47は、アナログの受信データR=(R,R,R,R,R,R)からデジタルの復号データD=(D,D,D,D,D,D)が得られないことを示すエラーを出力する(ステップS9)。
次に、ステップS4の検査行列Hに基づく行処理の詳細について説明する。
図10は実施形態の行処理演算部43の動作例を示すフローチャートである。はじめに、減算部401が、復号データメモリ42からアナログの復号データD’を読み出し、行処理メモリ45から行処理演算の確率値αmnを読み出して、D’−αmnを算出する(ステップS21)。
次に、第1演算部402が、第2演算部403で使用される復号アルゴリズムよりも誤り訂正能力が高い復号アルゴリズムに基づく行処理を行う(ステップS22−1)。実施形態の説明では、第1演算部402で使用される復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2)の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPAである。
また、第2演算部403が、第1演算部402で使用される復号アルゴリズムよりも誤り訂正能力が低い復号アルゴリズムに基づく行処理を行う(ステップS22−2)。実施形態の説明では、第2演算部403で使用される復号アルゴリズムはMSAである。
次に、選択部404が、ステップS22−1による行処理の出力値|αmn|、又は、ステップS22−2による行処理の出力値|αmn|のうち、いずれか一方の行処理の出力値|αmn|を、上述の判定条件に基づいて選択する(ステップS23)。
次に、符号値演算部405が、上述の式(9)により、符号値sign(αmn)を算出する(ステップS24)。次に、乗算部406が、αmn(out)=sign(αmn)×|αmn|によりαmn(out)を算出する(ステップS25)。次に、乗算部406は当該αmn(out)を行処理メモリ45に記憶する(ステップS26)。
次に、加算部407が、D’(out)=D’−αmn+αmn(out)によりD’(out)を算出する(ステップS27)。次に、加算部407は当該D’(out)を復号データメモリ42に記憶する(ステップS28)。
以上説明したように、実施形態の復号装置40では、第1演算部402が、第1の復号アルゴリズム(実施形態の説明では、Gallagerの関数f(x)を、テーブルを利用した演算により実現するSPA)に基づく行処理を行う。また第2演算部403が、第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズム(実施形態の説明ではMSA)に基づく行処理を行う。そして選択部404は、第1演算部402による行処理の出力値の誤差が、第2演算部403による行処理の出力値の誤差よりも大きい場合、第2演算部403による行処理の出力値を選択する。これにより実施形態の復号装置40によれば、復号装置40のリソースに制限がある場合でも、LDPC符号の復号処理をより高い精度で行うことができる。
なお上述の第2演算部403の第2の復号アルゴリズムは、Offset−MinSum−Algorithm、及び、Adaptive−Offset−MinSum−Algorithm等でもよい。
(実施形態の変形例)
次に実施形態の変形例について説明する。実施形態の変形例では、通信システム10の構成が上述の実施形態と異なる。実施形態の変形例の説明では、上述の実施形態と異なる箇所について説明し、上述の実施形態と同様の説明については省略する。また実施形態の変形例の説明では、実施形態の変形例の通信システム10で、復号装置40が行処理を行った場合のシミュレーションの結果についても説明する。
図11は実施形態の変形例の通信システム10の構成の例を示す図である。実施形態の通信システム10は、復号装置40、参照シンドローム演算装置50及び送信装置60を備える。復号装置40及び参照シンドローム演算装置50は、第1通信路30aを介して接続されている。第1通信路30aは、参照シンドロームの伝送に使用される媒体である。参照シンドロームは参照シンドローム演算装置50により生成される。具体的には、参照シンドローム演算装置50は、送信データに検査行列Hの転置行列を掛けることにより、参照シンドロームを生成する。参照シンドローム演算装置50は参照シンドロームを、第1通信路30aを介して復号装置40に送信する。
また復号装置40及び送信装置60は、第2通信路30bを介して接続されている。第2通信路30bは、送信データの伝送に使用される媒体である。送信装置60は送信データを、第2通信路30bを介して復号装置40に送信する。
復号装置40は、参照シンドローム演算装置50から第1通信路30aを介して参照シンドロームを受信し、送信装置60から第2通信路30bを介して受信データを受信すると、参照シンドロームに基づいて受信データの誤りを訂正することにより、復号データ(送信データ)を生成する。具体的には、復号装置40は、受信データに検査行列Hの転置行列を掛けることにより生成されたシンドロームが、参照シンドロームに一致するまで、受信データを行処理することにより、復号データを生成する。
なお第1通信路30a及び第2通信路30bは、無線方式でも有線方式でもよく、また無線方式及び有線方式が組み合わされていてもよい。また第1通信路30a及び第2通信路30bを同一の通信路30にしてもよい。ただし復号装置40が、シンドロームを誤りがない状態で受信できるようにする必要がある。
次に実施形態の変形例の通信システム10で、復号装置40が行処理を行った場合のシミュレーション結果について説明する。
まず第2通信路30bの通信路モデルについて説明する。通信路モデルには、例えば加法性白色ガウス雑音モデル(AWGN:Additive White Gaussian Noise)、及び、二元対象通信路(BSC:Binary Symmetric Channel)等がある。通信路モデルがBSCの場合、復号装置40のアナログの復号データD’の初期値aは、bERに基づいて決定される。具体的には、受信データRが0の場合、a=log{(1−bER)/bER}となり、受信データRが1の場合、a=−log{(1−bER)/bER}となる。ここでbERは、BSCの誤り率である。実施形態の変形例のシミュレーション結果の説明では、第2通信路30bの通信路モデルはBSCとする。
図12Aは実施形態の変形例の検査行列Hの例1を示す図である。図12Aは、検査行列Hの行重みが19〜23であり、列重みが3又は11である場合を示す。検査行列の行サイズは19712ビット、列サイズは75392ビットである。すなわち例1の検査行列Hは、19712行、75392列の行列である。割合は、検査行列Hの行数(列数)に対する当該行重み(列重み)を有する行の数(列の数)の割合を示す。例えば行重みが21である行の割合は、検査行列Hの行数の29.8701%である。
図12Bは実施形態の変形例の検査行列の例2を示す図である。検査行列の行サイズは24576ビットで、列サイズは86016ビットである。すなわち例2の検査行列Hは、24576行、86016列の行列である。図12Cは実施形態の変形例の検査行列の例3を示す図である。検査行列の行サイズは31488ビット、列サイズは84608ビットである。すなわち例3の検査行列Hは、31488行、84608列の行列である。図12B及び図12Cの説明は、図12Aと同様なので省略する。
次に図13A乃至図14Cを参照して、図12A乃至図12Cの検査行列Hを使用した場合のシミュレーション結果について説明する。
図13Aは例1の検査行列を使用した場合のシミュレーション結果の値を示す図である。図13Bは例2の検査行列を使用した場合のシミュレーション結果の値を示す図である。図13Cは例3の検査行列を使用した場合のシミュレーション結果の値を示す図である。bERは、第2通信路30bの誤り率を示す。Decoding Failure Rateは、受信データRから復号データDを得られない場合の確率を示す。
また図14Aは例1の検査行列を使用した場合のシミュレーション結果のグラフを示す図である。図14Bは例2の検査行列を使用した場合のシミュレーション結果のグラフを示す図である。図14Cは例3の検査行列を使用した場合のシミュレーション結果のグラフを示す図である。横軸はbERである。縦軸はDecoding Failure Rateである。
SPA(Flo)は、SPAを浮動小数点形式の演算で行う復号方法を示す。すなわちSPA(Flo)は、Gallagerの関数f(x)=−log(tanh(x/2)の演算を、上述のΦテーブル及びΦテーブルを利用した演算に置き換えない場合のSPAを示す。
Delta−MSA(Flo)は、δ−MSA(非特許文献3参照)を浮動小数点形式の演算で行う復号方法を示す。
Table−SPAは、Gallagerの関数f(x)=−log(tanh(x/2)の演算を、上述のΦテーブル及びΦテーブルを利用した固定小数点形式の演算で行うSPAによる復号方法を示す。すなわちTable−SPAは、上述の第1演算部402による行処理に対応する。
SecondMinは、上述の実施形態で説明した<第1演算部402、第2演算部403への入力値の絶対値|D’−αmn|を参照する場合2>の復号方法を示す。
FirstMinは、上述の実施形態で説明した<第1演算部402、第2演算部403への入力値の絶対値|D’−αmn|を参照する場合1>の復号方法を示す。
SecondMin&Cntは、上述の実施形態で説明した<第1演算部402、第2演算部403への入力値の絶対値|D’−αmn|を参照する場合2>と、上述の実施形態で説明した<行処理の反復復号回数を参照する場合>と、を組み合わせた復号方法を示す。
Cntは、上述の実施形態で説明した<行処理の反復復号回数を参照する場合>の復号方法を示す。
上述の復号方法のうち、SecondMin、FirstMin、SecondMin&Cnt、及び、Cntが、実施形態の変形例の復号装置40の復号方法である。
次にシミュレーションの条件について説明する。
シミュレーションでは、固定小数点形式の演算で復号した場合、復号データDの1データ辺りのビット幅は、整数6ビット及び小数3ビットを含む9ビットである。行処理の確率値αmnのビット幅は、整数4ビット及び小数3ビットを含む7ビットである。Table−SPA、SecondMin、FirstMin、SecondMin&Cnt、及び、Cntが、固定小数点形式の演算で復号を実施している。
Φ1テーブル及びΦ2テーブルの構成は、上述の実施形態で説明した図5及び図6と同じである。FirstMinの閾値(第1閾値)、及び、SecondMinの閾値(第2閾値)は、Φ2テーブルの出力値の最大値5.5(浮動小数点形式)を小数点で四捨五入した6である。Cntの反復復号回数による閾値(第3閾値)は30である。SecondMin&Cntの閾値は、反復復号回数が10回以上(第3閾値)で、かつ、第1演算部402に入力された複数の入力値の絶対値のうち、絶対値が2番目に小さい値が6以上(第2閾値)である。実際に復号する場合、上記閾値を、行処理の確率値αmnのビット幅と同じビット幅の固定小数点形式に変換して、判定に利用する。
次にシミュレーションの結果について説明する。
SPA(Flo)は、全ての検査行列Hのシミュレーション結果において、最も性能が高い。しかしながらSPA(Flo)を、例えばハードウェアにより実現する場合、他の復号方法よりも回路規模が増大する可能性がある。
Delta−MSA(Flo)は、図12Aに示す検査行列Hを使用したシミュレーション結果(図13A及び図14A参照)では、最も性能が低い。また図12Bに示す検査行列Hを使用したシミュレーション結果(図13B及び図14B参照)では、Delta−MSA(Flo)は、他の復号方法と比べて性能は低めである。しかしながらbERが0.039から0.04付近の値の場合、Delta−MSA(Flo)は、Table−SPA及びFirstMinよりも性能がよい。また図12Cに示す検査行列Hを使用したシミュレーション結果(図13C及び図14C参照)でも、Delta−MSA(Flo)は、他の復号方法と比べて性能は低めである。しかしながらbERが0.058から0.0585付近の値の場合、Delta−MSA(Flo)は、Table−SPA及びFirstMinよりも性能がよい。
Table−SPAは、図12Aに示す検査行列Hを使用したシミュレーション結果(図13A及び図14A参照)では、Cntと同等の性能を有する。また図12Bに示す検査行列Hを使用したシミュレーション結果(図13B及び図14B参照)では、Table−SPAは、FirstMinと同等の性能を有する。この場合、Table−SPAは、bERが0.0405付近よりも小さい値で性能が劣化している。また図12Cに示す検査行列Hを使用したシミュレーション結果(図13C及び図14C参照)でも、Table−SPAは、bERが0.059付近よりも小さい値で性能が劣化している。
ここで図12B及び図12Cの検査行列Hを使用した場合のTable−SPAの性能劣化の原因について説明する。図12A、図12B及び図12Cの検査行列Hの行重みの最小値は、それぞれ19、13、11である。
一般に、行処理による誤り訂正が正常に動作している場合、行処理演算の出力値αmn(out)の絶対値は、上昇する傾向にあるが、行重みが小さいほど上昇幅が大きい。例えば行重みが8であり、SPAによる演算装置に入力される複数のD’−αmnの絶対値が全て5である場合、|αmn(out)|は約2.92となる。一方、行重みが4であり、SPAによる演算装置に入力される複数のD’−αmnの絶対値が全て5である場合、|αmn(out)|は約3.61となる。Table−SPAも、SPAと同じく、行重みが小さいほど上昇幅が大きい。
よって、行処理演算が終了した後に、行処理演算部43がD’を更新する時、D’(out)はD’−αmn+αmn(out)により計算されるため、行重みが小さいほど、D’の絶対値の上昇幅が大きくなる。反復復号が1回(つまり、全ての行に対する行処理)実施されると、D’はn番目の列の列重みの数だけ、更新される。αmnのビット幅に基づく最大値をαmn(max)とすると、受信データRの誤り訂正がうまくいっている場合、D’は、列重み×αmn(max)に近づく。よって、Table−SPAによる演算装置に入力される絶対値|D’−αmn|が増加し、Table−SPAは演算誤差が発生する可能性が高くなる。
したがって図12Aの検査行列Hよりも行重みの最小値がより小さい図12B及び図12Cの検査行列の場合、Table−SPAは性能の劣化が発生する。特に行重みの最小値が最も小さい図12Cの検査行列Hを使用した場合、Table−SPAの復号に失敗する確率(Decoding Failure Rate)がより大きいことがわかる。
SecondMinは、図12Aに示す検査行列Hを使用したシミュレーション結果(図13A及び図14A参照)では、SPA(Flo)、FirstMin、及び、SecondMin&Cntと同等の性能を有する。また図12Bに示す検査行列Hを使用したシミュレーション結果(図13B及び図14B参照)では、SecondMinは、SPA(Flo)、及び、SecondMin&Cntと同等の性能を有する。また図12Cに示す検査行列Hを使用したシミュレーション結果(図13C及び図14C参照)では、SecondMinは2番目に性能が高い。
FirstMinは、図12Aに示す検査行列Hを使用したシミュレーション結果(図13A及び図14A参照)では、SPA(Flo)、SecondMin、及び、SecondMin&Cntと同等の性能を有する。また図12Bに示す検査行列Hを使用したシミュレーション結果(図13B及び図14B参照)では、FirstMinは、Table−SPAと同等の性能を有する。また図12Cに示す検査行列Hを使用したシミュレーション結果(図13C及び図14C参照)では、FirstMinは、他の復号方法に比べて性能は低めである。
First−MinとSecond−Minとを比べると、Second−Minの方が性能がよい。これは、First−Minでは、信頼性が最も低いデータを訂正する際の演算誤差がSecond−Minの場合よりも大きいことが原因である。
SecondMin&Cntは、全ての検査行列Hのシミュレーション結果において、SPA(Flo)と同等の性能を有する。すなわちSecondMin&Cntは、全ての検査行列Hのシミュレーション結果において、最も性能が高い。SecondMin&Cntは、Gallagerの関数f(x)=−log(tanh(x/2)の演算が、上述のΦテーブル及びΦテーブルを利用した演算に置き換えられている。そのためSecondMin&Cntをハードウェアにより実現する場合、SPA(Flo)をハードウェアにより実現する場合よりも回路規模を抑えることができる。またSecondMin&Cntをソフトウェアにより実現する場合であっても、上述のΦテーブル及びΦテーブルを利用することにより、Gallagerの関数f(x)=−log(tanh(x/2)の演算をテーブルで実現する場合のテーブルサイズを抑えることができる。
Cntは、図12Aに示す検査行列Hを使用したシミュレーション結果(図13A及び図14A参照)では、Table−SPAと同等の性能を有する。また図12Bに示す検査行列Hを使用したシミュレーション結果(図13B及び図14B参照)では、Cntは、他の復号方法に比べて標準的な性能を有する。また図12Cに示す検査行列Hを使用したシミュレーション結果(図13C及び図14C参照)でも、Cntは、他の復号方法に比べて標準的な性能を有する。
なお実施形態の変形例では、第2通信路30bの通信路モデルをBSCとして説明したが、第2通信路30bがAWGNの場合でも同様である。
また、第2演算部403のアルゴリズムとしてMSAを利用したが、行処理演算の出力結果が、行処理演算部43への入力値D’及びαmnから算出される|D’−αmn|の最小値と2番目に小さい値から求められるアルゴリズムであれば、何でもよい。例えば、非特許文献4のOffset−MinSum−Algorithm(O−MSA)や非特許文献5のAdaptive−Offset−Minsum−Algorithm(AO−MSA)、非特許文献6のNormalized−MinSum−Algorithm(N−MSA)が挙げられる。非特許文献にある復号計算式を見ると、O−MSAやAO−MSAは、MSAの|αmn|の更新結果から、一定量のオフセット値を引いた値となっている。また、N−MSAは、MSAの更新結果を一定量の割合で変化させている。
よって、Table−SPAの演算誤差が発生する|D’−αmn|が入力された場合でも、Table−SPAに比べて、演算誤差が抑えることができるため、第2演算部403のアルゴリズムとして、O−MSA、AO−MSA又はN−MSA等を利用しても良い。
なお上述の実施形態の復号装置40の機能は、プログラムにより実現してもよい。最後に、実施形態の復号装置40をプログラムにより実現する場合のハードウェア構成の例について説明する。
図15は実施形態の復号装置40のハードウェア構成の例を示す図である。実施形態の復号装置40は、制御装置101、主記憶装置102、補助記憶装置103、表示装置104、入力装置105及び通信装置106を備える。制御装置101、主記憶装置102、補助記憶装置103、表示装置104、入力装置105及び通信装置106は、バス110を介して接続されている。復号装置40は、例えばスマートデバイス及びパーソナルコンピュータ等である。
制御装置101は補助記憶装置103から主記憶装置102に読み出されたプログラムを実行する。主記憶装置102はROM及びRAM等のメモリである。補助記憶装置103はメモリカード及びSSD(Solid State Drive)等である。
表示装置104は情報を表示する。表示装置104は、例えば液晶ディスプレイである。入力装置105は、情報の入力を受け付ける。入力装置105は、例えばキーボード等である。なお表示装置104及び入力装置105は、表示機能と入力機能とを有する液晶タッチパネル等でもよい。通信装置106は他の装置と通信する。
復号装置40で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、メモリカード、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
また復号装置40で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また復号装置40が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
また復号装置40のプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
復号装置40で実行されるプログラムは、上述の実施形態の復号装置40の構成(機能ブロック)のうち、プログラムにより実現可能な機能ブロックを含むモジュール構成となっている。プログラムにより実現可能な機能ブロックは、例えば受信部41、行処理演算部43、二値化部46及び検査部47等である。
プログラムにより実現される機能ブロックは、制御装置101が補助記憶装置103等の記憶媒体からプログラムを読み出して実行することにより、プログラムにより実現される機能ブロックが主記憶装置102にロードされる。すなわちプログラムにより実現される機能ブロックは、主記憶装置102上に生成される。
なお実施形態の復号装置40の機能ブロックを、プログラムと、IC(Integrated Circuit)等のハードウェアと、を組み合わせることにより実現してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10 通信システム
20 符号化装置
30 通信路
30a 第1通信路
30b 第2通信路
40 復号装置
41 受信部
42 復号データメモリ
43 行処理演算部
44 検査行列データメモリ
45 行処理メモリ
46 二値化部
47 検査部
50 参照シンドローム演算装置
60 送信装置
401 減算部
402 第1演算部
403 第2演算部
404 選択部
405 符号値演算部
406 乗算部
407 加算部
421 ABS(Absolute value)部
422 FF(Flip Flop)部
423 1/2部
424 Φ
425 FF部
426 加算部
427 FF部
428 FF部
429 FF部
430 Q−R部
431 1/2部
432 Φ
433 FF部

Claims (18)

  1. LDPC符号の復号装置であって、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部と、を備え、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値以上の場合、前記第2演算部による行処理の出力値を選択し、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号装置。
  2. 前記第1閾値は、前記第1演算部による行処理の出力値を決定するテーブルの出力値の最大値よりも大きい、
    請求項1に記載の復号装置。
  3. LDPC符号の復号装置であって、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部と、を備え、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値以上の場合、前記第2演算部による行処理の出力値を選択し、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号装置。
  4. 前記第2閾値は、前記第1演算部による行処理の出力値を決定するテーブルの出力値の最大値よりも大きい、
    請求項3に記載の復号装置。
  5. LDPC符号の復号装置であって、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部と、を備え、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号装置。
  6. LDPC符号の復号装置であって、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部と、を備え、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上、かつ、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号装置。
  7. LDPC符号の復号装置であって、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部と、を備え、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上、かつ、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号装置。
  8. 前記第2の復号アルゴリズムは、前記第2演算部に入力される入力値の絶対値のうち、最小値と2番目に小さい値とを用いて行処理の出力値を計算するアルゴリズムである、
    請求項1乃至7のいずれか1項に記載の復号装置。
  9. LDPC符号の復号装置の復号方法であって、
    第1演算部が、第1の復号アルゴリズムに基づく行処理を行うステップと、
    第2演算部が、前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行うステップと、
    選択部が、所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択するステップと、を含み、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値以上の場合、前記第2演算部による行処理の出力値を選択し、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号方法。
  10. LDPC符号の復号装置の復号方法であって、
    第1演算部が、第1の復号アルゴリズムに基づく行処理を行うステップと、
    第2演算部が、前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行うステップと、
    選択部が、所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択するステップと、を含み、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値以上の場合、前記第2演算部による行処理の出力値を選択し、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号方法。
  11. LDPC符号の復号装置の復号方法であって、
    第1演算部が、第1の復号アルゴリズムに基づく行処理を行うステップと、
    第2演算部が、前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行うステップと、
    選択部が、所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択するステップと、を含み、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号方法。
  12. LDPC符号の復号装置の復号方法であって、
    第1演算部が、第1の復号アルゴリズムに基づく行処理を行うステップと、
    第2演算部が、前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行うステップと、
    選択部が、所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択するステップと、を含み、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上、かつ、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号方法。
  13. LDPC符号の復号装置の復号方法であって、
    第1演算部が、第1の復号アルゴリズムに基づく行処理を行うステップと、
    第2演算部が、前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行うステップと、
    選択部が、所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択するステップと、を含み、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上、かつ、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    復号方法。
  14. LDPC符号の復号装置を、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部、として機能させ、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値以上の場合、前記第2演算部による行処理の出力値を選択し、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    プログラム。
  15. LDPC符号の復号装置を、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部、として機能させ、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値以上の場合、前記第2演算部による行処理の出力値を選択し、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    プログラム。
  16. LDPC符号の復号装置を、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部、として機能させ、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    プログラム。
  17. LDPC符号の復号装置を、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部、として機能させ、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上、かつ、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値の最小値が第1閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    プログラム。
  18. LDPC符号の復号装置を、
    第1の復号アルゴリズムに基づく行処理を行う第1演算部と、
    前記第1の復号アルゴリズムよりも誤り訂正能力の低い第2の復号アルゴリズムに基づく行処理を行う第2演算部と、
    所定の判定条件に基づいて、前記第1演算部による行処理の出力値か、前記第2演算部による行処理の出力値かを選択する選択部、として機能させ、
    前記第1の復号アルゴリズムは、Gallagerの関数f(x)=−log(tanh(x/2))の演算を、入力値xと出力値f(x)との組を記憶するテーブルを利用した演算に置き換えたSPA(Sum−Product−Algorithm)であり、
    前記所定の判定条件は、行処理の反復復号回数が第3閾値以上、かつ、前記第1演算部に入力された複数の入力値のうち、前記入力値の絶対値が2番目に小さい入力値が第2閾値以上の場合、前記第2演算部による行処理の出力値を選択し、行処理の反復復号回数が第3閾値未満の場合、前記第1演算部による行処理の出力値を選択する判定条件である、
    プログラム。
JP2015095405A 2015-05-08 2015-05-08 復号装置、復号方法及びプログラム Active JP6605839B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015095405A JP6605839B2 (ja) 2015-05-08 2015-05-08 復号装置、復号方法及びプログラム
US15/044,569 US10256838B2 (en) 2015-05-08 2016-02-16 Decoding apparatus, decoding method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015095405A JP6605839B2 (ja) 2015-05-08 2015-05-08 復号装置、復号方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2016213649A JP2016213649A (ja) 2016-12-15
JP6605839B2 true JP6605839B2 (ja) 2019-11-13

Family

ID=57222966

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015095405A Active JP6605839B2 (ja) 2015-05-08 2015-05-08 復号装置、復号方法及びプログラム

Country Status (2)

Country Link
US (1) US10256838B2 (ja)
JP (1) JP6605839B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190030923A (ko) * 2017-09-15 2019-03-25 에스케이하이닉스 주식회사 에러 정정 회로, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5166074B2 (ja) * 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
KR101526317B1 (ko) * 2008-05-09 2015-06-11 삼성전자주식회사 계층적 디코딩 장치
JP5018807B2 (ja) 2009-02-26 2012-09-05 富士通株式会社 復号化装置
JP4929342B2 (ja) 2009-12-15 2012-05-09 インターナショナル・ビジネス・マシーンズ・コーポレーション ノイズ分散による入力対数尤度比のスケーリングに基づくsum−product復号法(ビリーフプロパゲーション法)の計算手法
JP2014140111A (ja) 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
US9477546B2 (en) * 2013-06-21 2016-10-25 Marvell World Trade Ltd. Methods and apparatus for optimizing lifespan of a storage device
CN105814799B (zh) * 2013-12-09 2019-03-01 三菱电机株式会社 纠错解码装置
JP6511284B2 (ja) * 2015-02-13 2019-05-15 パナソニック株式会社 最小値選択回路、復号器及び最小値選択方法

Also Published As

Publication number Publication date
US10256838B2 (en) 2019-04-09
JP2016213649A (ja) 2016-12-15
US20160329909A1 (en) 2016-11-10

Similar Documents

Publication Publication Date Title
US10630316B2 (en) Bit flipping algorithm for providing soft information during hard decision hard decoding
KR102274328B1 (ko) 체크 노드 계산유닛을 관리하는 방법, 장치, 및 상기 방법을 실행하기 위한 소프트웨어
JP4062435B2 (ja) 誤り訂正符号復号装置
CN109818625B (zh) 低密度奇偶检查码译码器
US8166363B2 (en) Decoding device and method
US20170093428A1 (en) Techniques for adaptive ldpc decoding
US20200044668A1 (en) Method for ldpc decoding, ldpc decoder and storage device
JP2011004229A (ja) 復号方法及び復号装置
US11177834B2 (en) Communication method and apparatus using polar codes
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
JP6605839B2 (ja) 復号装置、復号方法及びプログラム
JP4545217B1 (ja) 復号装置および復号方法
JP2006340016A (ja) 誤り訂正符号復号装置及びそれを用いた復号方法
US11476870B2 (en) Variable node processing methods and devices for message-passing decoding of non-binary codes
JP2008153874A (ja) 軟判定復号装置、軟判定復号方法および軟判定復号プログラム
KR101683939B1 (ko) Ldpc 코드 디코딩 장치
JP5132738B2 (ja) 誤り訂正復号器及び受信機
JP2010028408A (ja) 情報処理装置、情報処理方法、およびプログラム
JP4973647B2 (ja) 誤り訂正符号の復号評価装置
US20210295153A1 (en) Learning device
JP5018807B2 (ja) 復号化装置
JP7003007B2 (ja) 量子暗号通信装置、量子暗号通信システム、量子暗号通信方法及びプログラム
JP2008016901A (ja) 低密度パリティ検査符号データを復号する復号方法、装置及びプログラム
EP3591845A1 (en) Sorting device and method for elementary check node processing for message-passing decoding of non-binary codes
JP4341643B2 (ja) 復号装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181204

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190416

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190611

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: 20190917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191017

R151 Written notification of patent or utility model registration

Ref document number: 6605839

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151