JP2006304131A - 復号装置および復号方法 - Google Patents

復号装置および復号方法 Download PDF

Info

Publication number
JP2006304131A
JP2006304131A JP2005125964A JP2005125964A JP2006304131A JP 2006304131 A JP2006304131 A JP 2006304131A JP 2005125964 A JP2005125964 A JP 2005125964A JP 2005125964 A JP2005125964 A JP 2005125964A JP 2006304131 A JP2006304131 A JP 2006304131A
Authority
JP
Japan
Prior art keywords
decoding
intermediate result
calculation
decoding intermediate
supplied
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
JP2005125964A
Other languages
English (en)
Other versions
JP4729964B2 (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 JP2005125964A priority Critical patent/JP4729964B2/ja
Publication of JP2006304131A publication Critical patent/JP2006304131A/ja
Application granted granted Critical
Publication of JP4729964B2 publication Critical patent/JP4729964B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】復号の性能を向上させ、さらに消費電力を削減する。
【解決手段】計算部1102は、チェックノードの演算とバリアブルノードの演算の一部である第1の演算を行う。計算部415は、バリアブルノードの演算の他の一部である第2の演算を行う。第1と第2の演算が繰り返し行われることにより、LDPC符号の復号が行われる。また、シンドローム判定部2001は、第2の演算の結果得られる復号途中結果D2000のシンドロームを演算する。制御部2003は、シンドローム判定部2001により得られるシンドロームに基づいて、復号を終了させる。本発明は、例えば、衛星放送を受信するチューナに適用できる。
【選択図】図34

Description

本発明は、復号装置および復号方法に関し、特に、低密度パリティ検査符号(LDPC符号)による符号化が施された符号の復号を行う復号装置および復号方法に関する。
近年、例えば、移動体通信や深宇宙通信といった通信分野、及び地上波又は衛星ディジタル放送といった放送分野の研究が著しく進められているが、それに伴い、誤り訂正符号化及び復号の効率化を目的として符号理論に関する研究も盛んに行われている。
符号性能の理論的限界としては、いわゆるシャノン(C. E. Shannon)の通信路符号化定理によって与えられるシャノン限界が知られている。符号理論に関する研究は、このシャノン限界に近い性能を示す符号を開発することを目的として行われている。近年では、シャノン限界に近い性能を示す符号化方法として、例えば、並列連接畳み込み符号(PCCC(Parallel Concatenated Convolutional Codes))や、縦列連接畳み込み符号(SCCC(Serially Concatenated Convolutional Codes))といった、いわゆるターボ符号化(Turbo coding)と呼ばれる手法が開発されている。また、これらのターボ符号が開発される一方で、古くから知られる符号化方法である低密度パリティ検査符号(Low Density Parity Check codes)(以下、LDPC符号という)が脚光を浴びつつある。
LDPC符号は、R. G. Gallagerによる「R. G. Gallager, "Low Density Parity Check Codes", Cambridge, Massachusetts: M. I. T. Press, 1963」において最初に提案されたものであり、その後、「D. J. C. MacKay, "Good error correcting codes based on very sparse matrices", 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」等において再注目されるに至ったものである。
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行列(k行n列の行列)である場合には、検査行列Hは、n-k行n列の行列である。
なお、例えば、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)と称して提案したアルゴリズムであって、バリアブルノード(variable node(メッセージノード(message node)とも呼ばれる。))と、チェックノード(check node)とからなる、いわゆるタナーグラフ(Tanner graph)上での確率伝播(belief propagation)によるメッセージ・パッシング・アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノードとチェックノードを、単に、ノードともいう。
しかしながら、確率復号においては、各ノード間で受け渡されるメッセージが実数値であることから、解析的に解くためには、連続した値をとるメッセージの確率分布そのものを追跡する必要があり、非常に困難を伴う解析を必要とすることになる。そこで、Gallagerは、LDPC符号の復号アルゴリズムとして、アルゴリズムA又はアルゴリズムBを提案している。
LDPC符号の復号は、一般的には、図3に示すような手順にしたがって行われる。なお、ここでは、受信値をU0(u0i)とし、チェックノードから出力されるメッセージをujとし、バリアブルノードから出力されるメッセージをviとする。また、ここでは、メッセージとは、値の"0"らしさを、いわゆる対数尤度比(log likelihood ratio)で表現した実数値である。さらに、受信値U0の"0"らしさの対数尤度比を、受信データu0iと表すこととする。
まず、LDPC符号の復号においては、図3に示すように、ステップS11において、受信値U0(u0i)が受信され、メッセージujが"0"に初期化されるとともに、繰り返し処理のカウンタとしての整数をとる変数kが"0"に初期化され、ステップS12に進む。ステップS12において、受信値U0(u0i)に基づいて、式(1)に示す演算を行うことによってメッセージviが求められ、さらに、このメッセージviに基づいて、式(2)に示す演算を行うことによってメッセージujが求められる。
Figure 2006304131
・・・(1)
Figure 2006304131
・・・(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 2006304131
・・・(3)
Figure 2006304131
・・・(4)
ステップS12では、さらに、変数kが"1"だけインクリメントされ、ステップS13に進む。ステップS13では、変数kが所定の繰り返し復号回数N以上であるか否かが判定される。ステップS13において、変数kがN以上ではないと判定された場合、ステップS12に戻り、以下、同様の処理が繰り返される。
また、ステップS13において、変数kがN以上であると判定された場合、ステップS14に進み、式(5)に示す演算を行うことによって最終的に出力する復号結果としてのメッセージvが求められて出力され、LDPC符号の復号処理が終了する。
Figure 2006304131
・・・(5)
ここで、式(5)の演算は、式(1)の演算とは異なり、バリアブルノードに接続している全ての枝からの入力メッセージを用いて行われる。
このようなLDPC符号の復号は、例えば(3,6)符号の場合には、図4に示すように、各ノード間でメッセージの授受が行われる。なお、図4における"="で示すノード(バリアブルノード)では、式(1)に示した演算が行われ、"+"で示すノード(チェックノード)では、式(2)に示した演算が行われる。特に、アルゴリズムAにおいては、メッセージを2元化し、"+"で示すノードにて、dc-1個の入力メッセージの排他的論理和演算を行い、"="で示すノードにて、受信値Rに対して、dv-1個の入力メッセージが全て異なるビット値であった場合には、符号を反転して出力する。
また、一方で、近年、LDPC符号の復号の実装法に関する研究も行われている。実装方法について述べる前に、まず、LDPC符号の復号を摸式化して説明する。
図5は、(3,6)LDPC符号(符号化率1/2、符号長12)の検査行列H(parity check matrix)の例である。LDPC符号の検査行列Hは、図6のように、タナーグラフを用いて書き表すことができる。ここで、図6において、"+"で表されるのが、チェックノードであり、"="で表されるのが、バリアブルノードである。チェックノードとバリアブルノードは、それぞれ、検査行列Hの行と列に対応する。チェックノードとバリアブルノードとの間の結線は、枝(edge)であり、検査行列Hの"1"に相当する。即ち、検査行列Hの第j行第i列のコンポーネントが1である場合には、図6において、上からi番目のバリアブルノード("="のノード)と、上からj番目のチェックノード("+"のノード)とが、枝により接続される。枝は、バリアブルノードに対応する符号ビットが、チェックノードに対応する拘束条件を持つことを表す。なお、図6は、図5の検査行列Hのタナーグラフとなっている。
LDPC符号の復号方法であるサムプロダクトアルゴリズム(Sum Product Algorithm)は、バリアブルノードの演算とチェックノードの演算とを繰り返し行う。
バリアブルノードでは、図7のように、式(1)の演算を行う。すなわち、図7において、計算しようとしている枝に対応するメッセージviは、バリアブルノードに繋がっている残りの枝からのメッセージu1およびu2と、受信情報u0iを用いて計算される。他の枝に対応するメッセージも同様に計算される。
チェックノードの演算について説明する前に、式(2)を、式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)の関係を用いて、式(6)のように書き直す。但し、sign(x)は、x≧0のとき1であり、x<0のとき-1である。
Figure 2006304131
・・・(6)
更に、x≧0において、φ(x)=ln(tanh(x/2))と定義すると、φ-1(x)=2tanh-1(e-x)であるから、式(6)は、式(7)のように書くことができる。
Figure 2006304131
・・・(7)
チェックノードでは、図8のように、式(7)の演算を行う。すなわち、図8において、計算しようとしている枝に対応するメッセージujは、チェックノードに繋がっている残りの枝からのメッセージv1,v2,v3,v4,v5を用いて計算される。他の枝に対応するメッセージも同様に計算される。
なお、関数φ(x)は、φ(x)=ln((ex+1)/(ex-1))とも表すことができ、x>0において、φ(x)=φ-1(x)である。関数φ(x)およびφ-1(x)をハードウェアに実装する際には、LUT(Look Up Table)を用いて実装される場合があるが、両者共に同一のLUTとなる。
サムプロダクトアルゴリズムをハードウェアに実装する場合、式(1)で表されるバリアブルノード演算および式(7)で表されるチェックノード演算を、適度な回路規模と動作周波数で繰り返し行うことが必要である。
復号装置の実装の例として、まず、単純に各ノードの演算を一つずつ順次行うことによって復号を行う場合(full serial decoding)の実装法について説明する。
なお、ここでは、例えば、図9の、36(行)×108(列)の検査行列Hで表現される符号(符号化率2/3、符号長108)を復号することとする。図9の検査行列Hの1の数は323であり、従って、そのタナーグラフでは、枝の数は323個となる。ここで、図9の検査行列Hでは、0を、"."で表現している。
図10は、LDPC符号の1回復号を行う復号装置の構成例を示している。
図10の復号装置では、その動作する1クロック(clock)ごとに、1つの枝に対応するメッセージが計算される。
即ち、図10の復号装置は、2つの枝用メモリ100および102、1つのチェックノード計算器101、1つのバリアブルノード計算器103、1つの受信用メモリ104、1つの制御部105からなる。
図10の復号装置では、枝用メモリ100または102からメッセージデータが1つずつ読み出され、そのメッセージデータを用いて、所望の枝に対応するメッセージデータが計算される。そして、その計算によって求められたメッセージデータが1つずつ後段の枝用メモリ102または100に格納されていく。繰り返し復号を行う際には、この1回復号を行う図10の復号装置を複数個縦列に連接するか、もしくは図10の復号装置を繰り返し用いることによって、繰り返し復号を実現する。なお、ここでは、例えば、図10の復号装置が複数個接続されているものとする。
枝用メモリ100は、前段の復号装置(図示せず)のバリアブルノード計算器103から供給されるメッセージD100を、後段のチェックノード計算器101が読み出す順番に格納していく。そして、枝用メモリ100は、チェックノード計算のフェーズでは、メッセージD100を、格納してある順番通りに、メッセージD101として、チェックノード計算器101に供給する。
チェックノード計算器101は、制御部105から供給される制御信号D106に基づき、枝用メモリ100から供給されるメッセージD101を用いて、式(7)に従って演算を行い、その演算によって求められたメッセージD102を、後段の枝用メモリ102に供給する。
枝用メモリ102は、前段のチェックノード計算器101から供給されるメッセージD102を、後段のバリアブルノード計算器103が読み出す順番に格納していく。そして、枝用メモリ102は、バリアブルノード計算のフェーズでは、メッセージD102を、格納してある順番通りに、メッセージD103として、バリアブルノード計算器103に供給する。
さらに、バリアブルノード計算器103には、制御部105から制御信号D107が供給されるとともに、受信用メモリ104から受信データD104が供給される。バリアブルノード計算器103は、制御信号D107に基づき、枝用メモリ100から供給されるメッセージD103と受信用メモリ100から供給される受信データD104を用い、式(1)に従って演算を行い、その演算の結果得られるメッセージD105を、図示せぬ後段の復号装置の枝用メモリ100に供給する。
受信用メモリ104には、LDPC符号化された受信データ(LDPC符号)が格納される。制御部105は、バリアブルノード演算を制御する制御信号D106と、チェックノード演算を制御する制御信号D107を、それぞれチェックノード計算器101とバリアブルノード計算器103に供給する。制御部105は、枝用メモリ100に全ての枝のメッセージが格納されたとき、チェックノード計算器101に制御信号D106を供給し、枝用メモリ102に全ての枝のメッセーが格納されたとき、バリアブルノード計算器103に制御信号D107を供給する。
図11は、チェックノード演算を1つずつ行う図10のチェックノード計算器101の構成例を示している。
なお、図11では、各メッセージが符号ビットを合わせて合計6ビット(bit)に量子化されているものとして、チェックノード計算器101を表している。また、図11では、図9の検査行列Hで表されるLDPC符号のチェックノード演算が行われる。さらに、図11のチェックノード演算器101には、クロックckが供給され、このクロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。
図11のチェックノード計算器101は、制御部105から供給される、例えば、1ビットの制御信号D106に基づき、枝用メモリ100から1つずつ読み込まれるメッセージD101を用いて、式(7)にしたがって演算を行う。
即ち、チェックノード計算器101では、検査行列Hの各列に対応するバリアブルノードからの6ビットのメッセージD101(メッセージvi)が1つずつ読み込まれ、その下位ビットである絶対値D122(|vi|)がLUT121に、その最上位ビットである符号ビットD121がEXOR回路129とFIFO(First In First Out)メモリ133にそれぞれ供給される。また、チェックノード計算器101には、制御部105から制御信号D106が供給され、その制御信号D106は、セレクタ124とセレクタ131に供給される。
LUT121は、絶対値D122(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D123(φ(|vi|))を読み出し、加算器122とFIFOメモリ127に供給する。
加算器122は、演算結果D123(φ(|vi|))とレジスタ123に格納されている9ビットの値D124とを加算することにより、演算結果D123を積算し、その結果得られる9ビットの積算値をレジスタ123に再格納する。なお、検査行列Hの1行に亘る全ての枝からのメッセージD101の絶対値D122(|vi|)に対する演算結果が積算された場合、レジスタ123はリセットされる。
検査行列Hの1行に亘るメッセージD101が1つずつ読み込まれ、レジスタ123に1行分の演算結果D123が積算された積算値が格納された場合、制御部105から供給される制御信号D106は、0から1に変化する。例えば、行の重み(row weight)が「9」である場合、制御信号D106は、1から8クロック目までは、「0」となり、9クロック目では「1」となる。
制御信号D106が「1」の場合、セレクタ124は、レジスタ123に格納されている値、即ち、検査行列Hの1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)が積算された9ビットの値D124(i=1からi=dcまでのΣφ(|vi|))を選択し、値D125として、レジスタ125に出力して格納させる。レジスタ125は、格納している値D125を、9ビットの値D126として、セレクタ124と加算器126に供給する。制御信号D106が「0」の場合、セレクタ124は、レジスタ125から供給された値D126を選択し、レジスタ125に出力して再格納させる。即ち、検査行列Hの1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)が積算されるまで、レジスタ125は、前回積算されたφ(|vi|)を、セレクタ124と加算器126に供給する。
一方、FIFOメモリ127は、レジスタ125から新たな値D126(i=1からi=dcまでのΣφ(|vi|))が出力されるまでの間、LUT121が出力した演算結果D123(φ(|vi|))を遅延し、5ビットの値D127として減算器126に供給する。減算器126は、レジスタ125から供給された値D126から、FIFOメモリ127から供給された値D127を減算し、その減算結果を、5ビットの減算値D128としてLUT128に供給する。即ち、減算器126は、検査行列Hの1行に亘る全ての枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)の積算値から、求めたい枝からのメッセージD101(メッセージvi)から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc−1までのΣφ(|vi|))を減算値D128としてLUT128に供給する。
なお、減算器126は、レジスタ125から供給される9ビットの値D126から、FIFOメモリ127から供給される5ビットの値D127を減算するから、その減算結果は、最大で9ビットとなり得るのに対して、5ビットの減算値D128を出力する。このため、レジスタ125から供給される9ビットの値D126から、FIFOメモリ127から供給される5ビットの値D127を減算した減算結果が、5ビットで表せない場合、つまり、減算結果が、5ビットで表すことができる最大値(31(2進数では11111))を越える場合には、減算器126は、減算結果を、5ビットで表すことができる最大値にクリッピングし、5ビットの減算値D128を出力する。
LUT128は、減算値D128(i=1からi=dc−1までのΣφ(|vi|))に対して、式(7)におけるφ-1(Σφ(|vi|))の演算を行った5ビットの演算結果D129(φ-1(Σφ(|vi|)))を出力する。
以上の処理と並行して、EXOR回路129は、レジスタ130に格納されている1ビットの値D131と符号ビットD121との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D130をレジスタ130に再格納する。なお、検査行列Hの1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された場合、レジスタ130はリセットされる。
検査行列Hの1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された乗算結果D130(i=1からdcまでのΠsign(vi))がレジスタ130に格納された場合、制御部105から供給される制御信号D106は、「0」から「1」に変化する。
制御信号D106が「1」の場合、セレクタ131は、レジスタ130に格納されている値、即ち、検査行列Hの1行に亘る全ての枝からのメッセージD101の符号ビットD121が乗算された値D131(i=1からi=dcまでのΠsign(vi))を選択し、1ビットの値D132としてレジスタ132に出力して格納させる。レジスタ132は、格納している値D132を、1ビットの値D133としてセレクタ131とEXOR回路134に供給する。制御信号D106が「0」の場合、セレクタ131は、レジスタ132から供給された値D133を選択し、レジスタ132に出力して再格納させる。即ち、検査行列Hの1行に亘る全ての枝からのメッセージD101(メッセージvi)の符号ビットD121が乗算されるまで、レジスタ132は、前回格納した値を、セレクタ131とEXOR回路134に供給する。
一方、FIFOメモリ133は、レジスタ132から新たな値D133(i=1からi=dcまでのΠsign(vi))がEXOR回路134に供給されるまでの間、符号ビットD121を遅延し、1ビットの値D134としてEXOR回路134に供給する。EXOR回路134は、レジスタ132から供給された値D133と、FIFOメモリ133から供給された値D134との排他的論理和を演算することにより、値D133を、値D134で除算し、1ビットの除算結果を除算値D135として出力する。即ち、EXOR回路134は、検査行列Hの1行に亘る全ての枝からのメッセージD101の符号ビットD121(sign(|vi|))の乗算値を、求めたい枝からのメッセージD101の符号ビットD121(sign(|vi|))で除算して、その除算値(i=1からi=dc−1までのΠsign(|vi|))を除算値D135として出力する。
チェックノード計算器101では、LUT128から出力された5ビットの演算結果D129を下位5ビットとするとともに、EXOR回路134から出力された1ビットの除算値D135を最上位ビットとする合計6ビットがメッセージD102(メッセージuj)として出力される。
以上のように、チェックノード計算器101では、式(7)の演算が行われ、メッセージujが求められる。
なお、図9の検査行列Hの行の重みの最大は9であるため、即ち、チェックノードに供給されるメッセージの最大数は9であるため、チェックノード計算器101は、9個のメッセージ(φ(|vi|))を遅延させるFIFOメモリ127とFIFOメモリ133を有している。行の重みが9未満の行のメッセージを計算するときには、FIFOメモリ127とFIFOメモリ133における遅延量が、その行の重みの値に減らされる。
図12は、バリアブルノード演算を1つずつ行う図10のバリアブルノード計算器103の構成例を示している。
なお、図12では、各メッセージが符号ビットを合わせて合計6ビット(bit)に量子化されているものとして、バリアブルノード計算器103を表している。また、図12では、図9の検査行列Hで表されるLDPC符号のバリアブルノード演算が行われる。さらに、図12のバリアブルノード計算機103には、クロックckが供給され、クロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。
図12のバリアブルノード計算器103は、制御部105から供給される、例えば、1ビットの制御信号D107に基づき、枝用メモリ102から1つずつ読み込まれるメッセージD103と、受信用メモリ104から読み込まれる受信データD104を用いて、式(1)にしたがって演算を行う。
即ち、バリアブルノード計算器103では、検査行列Hの各行に対応するチェックノードからの6ビットのメッセージD103(メッセージuj)が1つずつ読み込まれ、そのメッセージD103が、加算器151とFIFOメモリ155に供給される。また、バリアブルノード計算器103では、受信用メモリ104から6ビットの受信データD104が1つずつ読み込まれ、加算器156に供給される。さらに、バリアブルノード計算器103には、制御部105から制御信号D107が供給され、その制御信号D107は、セレクタ153に供給される。
加算器151は、メッセージD103(メッセージuj)とレジスタ152に格納されている9ビットの値D151とを加算することにより、メッセージD103を積算し、その結果得られる9ビットの積算値を、レジスタ152に再格納する。なお、検査行列Hの1列に亘る全ての枝からのメッセージD103が積算された場合、レジスタ152はリセットされる。
検査行列Hの1列に亘るメッセージD103が1つずつ読み込まれ、レジスタ152に1列分のメッセージD103が積算された値が格納された場合、制御部105から供給される制御信号D107は、「0」から「1」に変化する。例えば、列の重みが「5」である場合、制御信号D107は、1から4クロック目までは「0」となり、5クロック目では「1」となる。
制御信号D107が「1」の場合、セレクタ153は、レジスタ152に格納されている値、即ち、検査行列Hの1列に亘る全ての枝からのメッセージD103(メッセージuj)が積算された9ビットの値D151(j=1からdVまでのΣuj)を選択し、レジスタ154に出力して格納させる。レジスタ154は、格納している値D151を、9ビットの値D152として、セレクタ153と加減算器156に供給する。制御信号D107が「0」の場合、セレクタ153は、レジスタ154から供給された値D152を選択し、レジスタ154に出力し再格納させる。即ち、検査行列Hの1列に亘る全ての枝からのメッセージD103(メッセージuj)が積算されるまで、レジスタ154は、前回積算された値を、セレクタ153と加減算器156に供給する。
一方、FIFOメモリ155は、レジスタ154から新たな値D152(j=1からdVまでのΣuj)が出力されるまでの間、チェックノードからのメッセージD103を遅延し、6ビットの値D153として加減算器156に供給する。加減算器156は、レジスタ154から供給された値D152から、FIFOメモリ155から供給された値D153を減算する。即ち、加減算器156は、検査行列Hの1列に亘る全ての枝からのメッセージD103(メッセージuj)の積算値から、求めたい枝からのメッセージujを減算して、その減算値(j=1からdv−1までのΣuj)を求める。さらに、加減算器156には、その減算値(j=1からdv−1までのΣuj)に、受信用メモリ104から供給された受信データD104を加算して、その結果得られる6ビットの値をメッセージD105(メッセージvi)として出力する。
以上のように、バリアブルノード計算器103では、式(1)の演算が行われ、メッセージviが求められる。
なお、図9の検査行列Hの列の重みの最大は5であるため、即ち、バリアブルノードに供給されるメッセージの最大数は5であるため、バリアブルノード計算器103は、5個のメッセージ(uj)を遅延させるFIFOメモリ155を有している。列の重みが5未満の列のメッセージを計算するときには、FIFOメモリ155における遅延量が、その列の重みの値に減らされる。
また、加減算器156は、レジスタ154から供給される9ビットの値D152から、FIFOメモリ155から供給される6ビットの値D153を減算するとともに、受信用メモリ104から供給される6ビットの受信データD104を加算する演算を行うから、その演算結果は、6ビットのメッセージD105で表すことができる最小値未満となるか、または最大値を越えることがある。加減算器156は、演算結果が、6ビットのメッセージD105で表すことができる最小値未満である場合には、その最小値にクリッピングし、演算結果が、6ビットのメッセージD105で表すことができる最大値を越える場合には、その最大値にクリッピングする。
図10の復号装置では、検査行列Hの重みにしたがって、制御部105から制御信号が与えられる。そして、図10の復号装置によれば、枝用メモリ100および102、並びにチェックノード計算器101およびバリアブルノード計算器103のFIFOメモリ127,133,155の容量さえ足りれば、制御信号のみを変えることで様々な検査行列HのLDPC符号を復号することができる。
なお、図示しないが、図10の復号装置において、復号の最終段においては、式(1)のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が、最終的な復号結果として出力される。
図10の復号装置を繰り返し用いて、LDPC符号を復号する場合には、チェックノード演算とバリアブルノード演算とが交互に行われる。即ち、図10の復号装置では、チェックノード計算器101によるチェックノード演算の結果を用いて、バリアブルノード計算器103によりバリアブルノード演算が行われ、バリアブルノード計算器103によるバリアブルノード演算の結果を用いて、チェックノード計算器101によりチェックノード演算が行われる。
従って、323の枝を有する図9の検査行列Hを用いた1回の復号に、323×2=646クロック(clock)を必要とする。例えば、50回の繰り返し復号を行うためには、符号長である108個の符号(受信データ)を1フレームとして、その1フレームを受信する間に、646×50=32300クロック動作することが必要であり、受信周波数の約300(≒32300/108)倍の高速動作が必要になる。受信周波数が数十MHzであるとすると、GHz以上の速度での動作を要求されることになる
また、図10の復号装置を、例えば、50台連接して、LDPC符号を復号する場合には、1フレーム(frame)目のバリアブルノード演算を行っている間に、2フレーム目のチェックノード演算を行い、3フレーム目のバリアブルノード演算を行う、というように、複数のバリアブルノード演算とチェックノード演算とを同時に行うことができる。この場合、108個の符号を受信する間に、323個の枝を計算すればよいので、復号装置は、受信周波数の約3(≒323/108)倍の周波数で動作すればよいことになり、十分に実現可能である。しかしながら、この場合、回路規模が、単純には、図10の復号装置の50倍になる。
次に、全ノードの演算を同時に行うことによって復号を行う場合(full parallel decoding)の復号装置の実装法について説明する。
この実装法については、例えば、非特許文献1に記載されている。
図13は、図9の検査行列Hで表現される符号(符号化率2/3、符号長108)を復号する復号装置の一例の構成を示している。
図13の復号装置では、枝用メモリ202または206から、323個ある枝に対応するメッセージデータを全て同時に読み出し、そのメッセージデータを用いて、323個の枝に対応する新たなメッセージデータを演算する。さらに、その演算の結果求められた新たなメッセージデータが全て同時に後段の枝用メモリ206または202に格納されていく。そして、図13の復号装置を繰り返し用いることで繰り返し復号が実現される。
図13において、復号装置は、1つの受信用メモリ205、2つの枝入れ替え装置200および203、2つの枝用メモリ202および206、36個のチェックノード計算器2011乃至20136、108個のバリアブルノード計算器2041乃至204108からなる。以下、各部について詳細に説明する。
枝用メモリ206は、前段のバリアブルノード計算器2041乃至204108からのメッセージD2061乃至D206108を全て同時に格納し、次の時刻(次のクロックのタイミング)に、メッセージD2061乃至D206108を、メッセージD2071乃至D207108として読み出し、次段の枝入れ替え装置200に、メッセージD200(D2001乃至D200108)として供給する。枝入れ替え装置200は、枝用メモリ206から供給されたメッセージD2001乃至D200108の順番を、図9の検査行列Hにしたがって並び替え(入れ替え)、チェックノード計算器2011乃至20136に、メッセージD2011乃至D20136として供給する。
チェックノード計算器2011乃至20136は、枝入れ替え装置200から供給されるメッセージD2011乃至D20136を用いて式(7)にしたがって演算を行い、その演算の結果得られるメッセージD2021乃至D20236を、枝用メモリ202に供給する。
枝用メモリ202は、前段のチェックノード計算器2011乃至20136から供給されるメッセージD2021乃至D20236を全て同時に格納し、次の時刻に、そのすべてのメッセージD2021乃至D20236を、メッセージD2031乃至D20336として、次段の枝入れ替え装置203に供給する。
枝入れ替え装置203は、枝用メモリ202から供給されたメッセージD2031乃至D20336の順番を図9の検査行列Hにしたがって並び替え、バリアブルノード計算器2041乃至204108に、メッセージD2041乃至D204108として供給する。
バリアブルノード計算器2041乃至204108は、枝入れ替え装置203から供給されるメッセージD2041乃至D204108と、受信用メモリ205から供給される受信データD2051乃至D205108を用いて式(1)にしたがって演算を行い、その演算の結果得られるメッセージD2061乃至D206108を、次段の枝用メモリ206に供給する。
図14は、チェックノード演算を同時に行う図13のチェックノード計算器201m(m=1,2,・・・,36)の構成例を示している。
図14のチェックノード計算器201mでは、図11のチェックノード計算器101と同様にして、式(7)のチェックノード演算が行われるが、そのチェックノード演算が、すべての枝について同時に行われる。
即ち、図14のチェックノード計算器201mでは、枝入れ替え装置200から供給される図9の検査行列Hの各列に対応するバリアブルノードからのメッセージD2211乃至D2219(vi)が全て同時に読み込まれ、それぞれの下位5ビットである絶対値D2221乃至D2229(|vi|)がLUT2211乃至2219にそれぞれ供給される。また、メッセージD2211乃至D2219(vi)の最上位ビットである1ビットの符号ビットD2231乃至D2239が、EXOR回路2261乃至2269にそれぞれ供給されるとともに、EXOR回路225に供給される。
LUT2211乃至2219は、絶対値D2221乃至D2229(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D2241乃至D2249(φ(|vi|))をそれぞれ読み出し、それぞれを減算器2231乃至2239に供給する。また、LUT2211乃至2219は、演算結果D2241乃至D2249(φ(|vi|))を加算器222に供給する。
加算器222は、演算結果D2241乃至D2249(φ(|vi|))の値の総和(1行分の演算結果の総和)を演算し、9ビットの演算結果D225(i=1から9のΣφ(|vi|))を、減算器2231乃至2239に供給する。減算器2231乃至2239は、演算結果D225から、演算結果D2241乃至D2249(φ(|vi|))をそれぞれ減算し、5ビットの減算値D2271乃至D2279を、LUT2241乃至2249に供給する。即ち、減算器2231乃至2239は、全ての枝からのメッセージviから求められたφ(|vi|)の積算値から、求めたい枝からのメッセージviから求められたφ(|vi|)を減算して、その減算値D2271乃至D2279(i=1から8までのΣφ(|vi|))をLUT2241乃至2249にそれぞれ供給する。LUT2241乃至2249は、減算値D2271乃至D2279に対して、式(7)におけるφ-1(Σφ(|vi|))の演算を行った5ビットの演算結果D2281乃至D2289を読み出して出力する。
一方、EXOR回路225は、全ての符号ビットD2231乃至D2239の排他的論理和を演算することにより、符号ビットD2231乃至D2239の乗算を行い、1ビットの乗算値D226(1行分の符号ビットの乗算値(i=1から9までのΠsign(vi)))をEXOR回路2261乃至2269にそれぞれ供給する。EXOR回路2261乃至2269は、乗算値D226と符号ビットD2231乃至D2239それぞれとの排他的論理を演算することにより、乗算値D226を、符号ビットD2231乃至D2239それぞれで除算した1ビットの除算値D2291乃至D2299(i=1から8までのΠsign(vi))を求めて出力する。
チェックノード計算器201mでは、LUT2241乃至2249から出力された5ビットの演算結果D2281乃至D2289それぞれを下位5ビットとするとともに、EXOR回路2261乃至2269から出力された除算値D2291乃至D2299それぞれを最上位ビットとする合計6ビットが、チェックノード演算の結果得られるメッセージD2301乃至D2309として出力される。
以上のように、チェックノード計算器201mでは、式(7)の演算が行われ、メッセージujが求められる。
なお、図14では、各メッセージが符号ビットを合わせて合計6ビットに量子化されているものとして、チェックノード計算器201mを表している。また、図14の回路は1つのチェックノードに相当する。ここで処理の対象としている図9の検査行列Hについては、その行数である36行のチェックノードが存在するため、図13の復号装置は、図14に示したようなチェックノード計算器201mを36個有している。
ここで、図14のチェックノード計算器201mでは、9個のメッセージを同時に計算することができる。そして、ここで処理の対象としている図9の検査行列Hの行の重みは、第1行が8で、第2乃至第36行が9であるため、即ち、チェックノードに供給されるメッセージの数が、8のケースが1つと、9のケースが29あるため、チェックノード計算器2011は、図14の回路と同様の8つのメッセージを同時に計算することができる回路構成となっており、残りのチェックノード計算器2012乃至20136は、図14の回路と同一構成となっている。
図15は、バリアブルノード演算を同時に行う図13のバリアブルノード計算器204p(p=1,2,・・・,108)の構成例を示している。
図15のバリアブルノード計算器204pでは、図12のバリアブルノード計算器103と同様にして、式(1)のバリアブルノード演算が行われるが、そのバリアブルノード演算が、すべての枝について同時に行われる。
即ち、図15のバリアブルノード計算器204pでは、枝入れ替え装置203から供給される、検査行列Hの各行に対応するチェックノードからの6ビットのメッセージD2511乃至D2515(メッセージuj)が全て同時に読み込まれ、それぞれ加算器2521乃至2525に供給されるとともに、加算器251に供給される。また、バリアブルノード計算器204pには、受信用メモリ205から受信データD271が供給され、その受信データD271は、加減算器2521乃至2525に供給される。
加算器251は、全てのメッセージD2511乃至D2515(メッセージuj)を積算し、9ビットの積算値D252(1列分のメッセージの総和値(j=1から5までのΣuj))を加減算器2521乃至2525に供給する。加減算器2521乃至2525は、加算値D252から、メッセージD2511乃至D2515(メッセージuj)をそれぞれ減算する。即ち、加減算器2521乃至2525は、全ての枝からのメッセージujの積算値D252から、求めたい枝からのメッセージD2511乃至D2515(メッセージuj)をそれぞれ減算して、その減算値(j=1から4までのΣuj)を求める。
さらに、加減算器2521乃至2525は、減算値(j=1から4までのΣuj)に、受信データD271(u0i)を加算して、6ビットの加算値D2531乃至D2535を、バリアブルノード演算の結果として出力する。
以上のように、バリアブルノード計算器204pでは、式(1)の演算が行われ、メッセージviが求められる。
なお、図15では、各メッセージが符号ビットを合わせて合計6ビットに量子化されているものとして、バリアブルノード計算器204pを表している。また、図15の回路は1つのバリアブルノードに相当する。ここで処理の対象としている図9の検査行列Hについては、その列数である108列のバリアブルノードが存在するから、図13の復号装置は、図15に示したような回路を108個有している。
ここで、図15のバリアブルノード計算器204pでは、5個のメッセージを同時に計算することができる。そして、ここで処理の対象としている図9の検査行列Hは、重みが5,3,2,1の列が、それぞれ、18列、54列、35列、1列あるので、バリアブルノード計算器2041乃至204108のうちの18個は、図15の回路と同一構成となっており、残りの54個、35個、1個は、図15の回路と同様の3,2,1つのメッセージをそれぞれ同時に計算することができる回路構成となっている。
なお、図示しないが、図13の復号装置においても、図10における場合と同様に、復号の最終段においては、式(1)のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が最終的な復号結果として出力される。
図13の復号装置によれば、323個ある枝に対応するメッセージすべてを1クロックで同時に計算することができる。
図13の復号装置を繰り返し用いて復号する場合には、チェックノード演算とバリアブルノード演算とを交互に行い、1回の復号を2クロックで行うことができる。従って、例えば、50回の復号を行うためには、符号長が108個の符号を1フレームとする受信データを受信する間に2×50=100クロック動作すれば良いことになり、ほぼ受信周波数と同一の動作周波数でよいことになる。一般的に、LDPC符号は、符号長が数千から数万と大きいことから、図13の復号装置を用いれば、復号回数を極めて多くすることができ、誤り訂正性能の向上を期待することができる。
しかしながら、図13の復号装置は、タナーグラフのすべての枝に対応するメッセージの演算を、並列で行うため、回路規模が、符号長に比例して大きくなる。また、図13の復号装置を、ある符号長の、ある符号化率の、ある検査行列Hを持つLDPC符号の復号を行う装置として構成した場合、その復号装置において、他の符号長や、他の符号化率、他の検査行列Hを持つLDPC符号の復号を行うことは困難となる。即ち、図13の復号装置は、図10の復号装置のように、制御信号を変えるだけでは、様々な符号を復号することに対処することが困難であり、符号依存性が高い。
図10および図13の復号装置の他に、一つでも全てでもなく、4つずつのメッセージの計算を同時に行う実装法について、例えば、非特許文献2に述べられているが、この場合、メモリの異なるアドレスからの同時読み出し、もしくは同時書き込みを避けることが一般的には容易でなく、メモリアクセス制御が困難であるという問題がある。
この問題を解決するため、ランダムな符号ではなく、部分的にパラレルな復号器の実装に親和性の高い符号および復号装置について報告されている(例えば、非特許文献3と4参照)。しかしながら、非特許文献3に記載されている復号装置の実現方法は特定の符号のみに対応するものであり、1つの復号器で様々な符号長、符号化率の符号を復号することは困難である。
また、図16に示すように、6×6の単位行列、その単位行列の1のうち1個以上が0になった行列(以下、適宜、準単位行列という)、単位行列または準単位行列をサイクリックシフト(cyclic shift)した行列(以下、適宜、シフト行列という)、単位行列、準単位行列、またはシフト行列のうちの2以上(複数)の和(以下、適宜、和行列という)、6×6の0行列の組み合わせで表すことが可能な検査行列Hを有するLDPC符号、もしくは行や列の置換により、これらの行列の組み合わせで表すことが可能な検査行列Hを有するLDPC符号であれば、符号長、符号化率が異なる符号であっても復号可能な復号装置がある(例えば、特許文献1参照)。
なお、図16の検査行列Hは、図9に示した検査行列Hを、6×6の行列の単位に間隔を空けて表している。また、図16の検査行列Hを構成する6×6の単位行列、準単位行列、シフト行列、和行列、0行列を、以下、適宜、構成行列という。
図17乃至図22を参照して、図16の検査行列Hで表現されるLDPC符号を復号する復号装置について説明する。
図17は、図16の検査行列Hで表現されるLDPC符号を復号する復号装置400の構成の一例を示すブロック図である。
復号装置400は、復号途中結果格納用メモリ410、サイクリックシフト回路411、6つの計算器4121乃至計算器4126からなる計算部412、復号途中結果格納用メモリ413、サイクリックシフト回路414、6つの計算器4151乃至計算器4156からなる計算部415、受信用メモリ416、および制御部417から構成される。
ここで、計算器412k(k=1,2,・・・,6)で行われる演算と、計算器415kで行われる演算について、式を用いて説明する。
具体的には、計算部412は、上述した式(7)と、以下に表す式(8)にしたがう第1の演算を行い、その第1の演算の結果である復号途中結果ujを復号途中結果格納用メモリ410に供給して格納させる。計算部415は、上述した式(5)にしたがう第2の演算を行い、その第2の演算の結果である復号途中結果vを復号途中結果格納用メモリ410に供給して格納させる。
Figure 2006304131
・・・(8)
なお、式(8)のudvは、検査行列Hのi列のメッセージを求めようとする枝からのチェックノード演算の途中結果(ここでは、チェックノード演算結果そのもの)を表している。即ち、udvは、求めたい枝に対応する復号途中結果である。
即ち、上述した式(5)にしたがう第2の演算の結果得られる復号途中結果vは、受信値u0iと検査行列Hのi列の各行の1に対応するすべての枝からのチェックノード演算の復号途中結果ujとを加算したものであるので、上述した式(7)に用いられる値viは、式(5)にしたがう第2の演算の結果得られる復号途中結果vから、検査行列Hのi列の、各行の1に対応する枝からのチェックノード演算の復号途中結果ujのうち、メッセージを求めようとする枝からのチェックノード演算の復号途中結果udvを引いた値となる。つまり、式(7)の演算に用いられる値viを求める式(1)の演算は、上述した式(5)と式(8)を組み合わせた演算である。
従って、復号装置400では、計算部412による式(7)および式(8)にしたがう第1の演算と、計算部415による式(5)にしたがう第2の演算とが交互に行われ、計算部415が、最後の第2の演算の結果を復号結果として出力することにより、LDPC符号の繰り返し復号を行うことができる。
なお、ここでは、式(7)と式(8)にしたがう第1の演算結果を、復号途中結果ujと記載するが、この復号途中結果ujは、式(7)のチェックノード演算結果ujに等しい。
また、第2の演算により求められる式(5)のvは、式(1)のバリアブルノード演算結果viに対して、メッセージを求めようとする枝からのチェックノード演算結果ujを加算したものであるから、検査行列Hの1列(1つのバリアブルノード)に対して、1つだけ求められる。
復号装置400では、計算部412が、計算部415による第2の演算の結果である検査行列Hの列に対応する復号途中結果vを用いて、第1の演算を行い、その演算の結果得られる検査行列Hのi列の、各行の1に対応する枝のメッセージ(各チェックノードが各枝に出力するメッセージ)の枝からのチェックノード演算の復号途中結果ujを復号途中結果格納用メモリ413に格納する。従って、復号途中結果格納用メモリ413の容量は、チェックノード演算の結果を格納する場合と同様に、検査行列Hの1の数(全枝数)と量子化ビット数とを乗算した値となる。
一方、計算部415は、計算部412による第1の演算の結果である検査行列Hのi列の、各行の“1”に対応する復号途中結果ujと受信値u0iを用いて、第2の演算を行い、その演算の結果得られるi列に対応する復号途中結果vを復号途中結果格納用メモリ410に格納する。従って、復号途中結果格納用メモリ410に必要な容量は、検査行列Hの“1”の数より少ない検査行列Hの列数、即ち、LCPC符号の符号長と復号途中結果vの量子化ビット数とを乗算した値となる。
その結果、バリアブルノード演算の結果を格納する場合に比べて、復号途中結果格納用メモリ410のメモリ容量を削減することができ、これにより、復号装置400の回路規模を小さくすることができる。
以下、図17の復号装置400の各部の動作について詳細に説明する。
復号途中結果格納用メモリ410には、計算部415から、計算部415による第2の演算の結果である検査行列Hの6つの列に対応する6つの復号途中結果D415が供給され、復号途中結果格納用メモリ410は、計算部415から供給された6つの復号途中結果D415を、第1アドレスから順に格納(記憶)する。
即ち、復号途中結果格納用メモリ410の第1アドレスには、検査行列Hの列に対応する復号途中結果のうち、第1列目から第6列目の復号途中結果vが格納される。そして、同様に、第2アドレスには、第7列目から第12列目の復号途中結果vが格納され、第3アドレスには、第13列目から第18列目の復号途中結果が格納される。以後、同様に、第103列目から第108列目までの復号途中結果vが、6個ずつ、第4アドレスから第18アドレスまで格納され、計108個の復号途中結果vが復号途中結果格納用メモリ410に格納される。従って、復号途中結果格納用メモリ410のワード(word)数は、図16の検査行列Hの列数(LDPC符号の符号長)である108を、同時に読み書きする復号途中結果の数である6で割り算した18となる。
また、復号途中結果格納用メモリ410は、既に格納してある復号途中結果D415から、後段の計算部412が求めようとする復号途中結果ujの対応する検査行列Hの行において“1”になっている復号途中結果vを6つ同時に読み出し、復号途中結果D410として、サイクリックシフト回路411に供給する。
なお、復号途中結果格納用メモリ410は、例えば、6つの復号途中結果を同時に読み書き可能なシングルポートRAMで構成される。また、復号途中結果格納用メモリ410には、計算部415の第2の演算により演算された列に対応する復号途中結果D414が格納されるので、復号途中結果格納用メモリ410に格納されるデータ量、即ち、復号途中結果格納用メモリ410に必要とされる記憶容量は、復号途中結果D414の量子化ビット数と、検査行列Hの列数(LDPC符号の符号長)との乗算値である。
サイクリックシフト回路411には、復号途中結果格納用メモリ410から6つの復号途中結果D410が供給されるとともに、制御部417から、その復号途中結果D410に対応する検査行列Hの1が、検査行列Hにおいて元となる単位行列などを幾つサイクリックシフトであるかの情報(Matrixデータ)を表す制御信号D619が供給される。サイクリックシフト回路611は、制御信号D619を元に、6つの復号結果D410を並べ替えるサイクリックシフトを行い、その結果を復号途中結果D411として、計算部412に供給する。
計算部412は、6つの計算器4121乃至4126からなる。計算部412には、サイクリックシフト回路411から、計算部415による第2の演算の結果得られた6つの復号途中結果D411(v)が供給されるとともに、復号途中結果格納用メモリ413から、前回、計算器4121乃至4126による第1の演算の結果得られた6つの復号途中結果D413(uj)が供給され、その6つの復号途中結果D411と6つの復号途中結果D413が、計算器4121乃至4126にそれぞれ供給される。また、計算部412には、制御部417から制御信号D419が供給され、その制御信号D419が、計算器4121乃至4126に供給される。なお、制御信号D419は、6つの計算器4121乃至4126に共通の信号である。
計算器4121乃至4126は、それぞれ復号途中結果D411と復号途中結果D413を用いて、式(7)と式(8)にしたがって第1の演算を行い、復号途中結果D412(vi)を求める。計算部412は、計算器4121乃至4126による演算の結果得られる検査行列Hの6つの1に対応する6つの復号途中結果D412を復号途中結果格納用メモリ413に供給する。
復号途中結果格納用メモリ413は、例えば、6つの復号途中結果を同時に読み書き可能な、2つのシングルポートRAMから構成される。復号途中結果格納用メモリ413には、計算部412から6つの復号途中結果D412が供給されるとともに、制御部417から復号途中結果413の読み書きを制御する制御信号D420が供給される。
復号途中結果格納用メモリ413は、制御信号D420に基づいて、計算部412から供給される6つの復号途中結果D412をまとめて格納すると同時に、既に格納してある6つの復号途中結果D412を読み出し、復号途中結果D413として、計算部412とサイクリックシフト回路414に供給する。即ち、復号途中結果格納用メモリ413は、計算部412とサイクリックシフト回路414に供給する復号途中結果D413の読み出しと、計算部412から供給される復号途中結果D412の書き込みとを、同時に行う。
なお、復号途中結果格納用メモリ413には、計算部412の第1の演算により演算された検査行列Hのi列の、各行の1に対応する枝からの第1の演算の復号途中結果D412が格納されるので、復号途中結果格納用メモリ413に格納されるデータ量、即ち、復号途中結果格納用メモリ413に必要とされる記憶容量は、復号途中結果D412の量子化ビット数と、検査行列Hの1の数との乗算値となる。
サイクリックシフト回路414には、復号途中結果格納用メモリ413から6つの復号途中結果D413(復号途中結果uj)が供給されるとともに、制御部417から、その復号途中結果D413に対応する検査行列Hの1が検査行列Hにおいて元となる単位行列などを幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表す制御信号D421が供給される。サイクリックシフト回路414は、制御信号D421を元に、6つの復号途中結果D413を並べ替えるサイクリックシフトを行い、その結果を復号途中結果D414として、計算部415に供給する。
計算部415は、6つの計算器4151乃至4156からなる。計算部415には、サイクリックシフト回路414から6つの復号途中結果D414が供給され、その復号途中結果D414が、計算器4151乃至4156のそれぞれに供給される。また、計算部415には、受信用メモリ417から6つの受信データD417(LDPC符号)が供給され、その受信データD417が、計算器4151乃至4156のそれぞれに供給される。さらに、計算部417には、制御部417から制御信号D422が供給され、その制御信号D422が計算器4151乃至4156に供給される。なお、制御信号D422は、6つの計算器4171乃至4176に共通の信号である。
計算器4151乃至4156は、それぞれ復号途中結果D414と受信データD417とを用いて、式(5)にしたがって、それぞれ第2の演算を行い、復号途中結果D415を求める。計算部415は、計算器4151乃至4156の第2の演算の結果得られる6つの復号途中結果D415(v)を、復号途中結果格納用メモリ410に供給する。また、計算部415は、いま行う演算が最後の第2の演算である場合、その演算の結果得られる6つの復号途中結果D415を、最終的な復号結果として出力する。
受信用メモリ416は、通信路を通して受信した受信値(符号ビット)D416から計算した符号ビットの0らしさの値である受信LLR(対数尤度比)のデータ(受信データ)D416を格納する。
即ち、受信用メモリ416の第1のアドレスには、検査行列Hの列に対応する受信データD416のうち、検査行列Hの第1列目から第6列目までに対応する受信データD416が格納される。そして、第2のアドレスには、検査行列Hの第7列目から第12列目までに対応する受信データD416が格納され、第3アドレスには、検査行列Hの第13列目から第18列目までに対応する受信データD416が格納される。以後、同様に、第4アドレスから第18アドレスまでに、検査行列Hの第19列目から第108列目までに対応する受信データD416が、6つずつ格納される。
そして、受信用メモリ616は、既に格納している受信データD416を、バリアブルノード演算に必要となる順番に6つずつ読み出し、受信データD417として計算部415に供給する。
なお、受信用メモリ416は、例えば、6つの受信データを同時に読み書き可能なシングルポートRAMから構成される。また、受信用メモリ416に格納されるデータ量、即ち、受信用メモリ315に必要とされる記憶容量は、LDPC符号の符号長と、受信データD416の量子化ビット数との乗算値である。さらに、受信用メモリ416のワード(word)数は、LDPC符号の符号長、即ち、検査行列Hの列数である108を、同時に読み出す受信データD417の数である6で割り算した値の18である。
制御部417は、制御信号D418をサイクリックシフト回路411に、制御信号D419を計算部412に供給することにより、それぞれを制御する。また、制御部417は、制御信号D420を復号途中結果格納用メモリ413に、制御信号D421をサイクリックシフト回路414に、制御信号D421を計算部415にそれぞれ供給することにより、それぞれを制御する。
復号途中結果格納用メモリ410、サイクリックシフト回路411、計算部412、復号途中結果格納用メモリ413、サイクリックシフト回路414、計算部415の順で、データが一巡することで、復号装置400は、1回の復号を行うことができる。復号装置400では、所定の回数だけ繰り返して復号が行われた後、計算部415による第2の演算の結果である復号途中結果D415が、最終的な復号結果として出力される。
図18は、図17の計算部412の計算器4121の構成例を示すブロック図である。
なお、図18では、計算器4121について説明するが、計算器4122乃至計算器4126も同様に構成される。
また、図18では、前回の計算部412による第1の演算の結果得られる各復号途中結果(udv)が符号ビットを合わせて合計6ビット(bit)に量子化され、計算部415による第2の演算の結果得られる各復号途中結果(v)が9ビットに量子化されているものとして、計算器4121を表している。さらに、図18の計算器4121には、クロックckが供給され、このクロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。
図18の計算器4121は、制御部417から供給される制御信号D419に基づいて、復号途中結果格納用メモリ413から1つずつ読み込まれる、前回の計算部412による第1の演算の結果得られた復号途中結果D413(udv)と、サイクリックシフト回路411から1つずつ読み込まれる復号途中結果D411(v)とを用いて、式(7)と式(8)にしたがう第1の演算を行う。
即ち、計算器4121には、サイクリックシフト回路411から供給される6つの9ビットの復号途中結果D411(v)のうちの、1つの復号途中結果D411が供給されるとともに、復号途中結果格納用メモリ413から供給される、前回の計算部412による演算の結果である6つの6ビットの復号途中結果D413(uj)のうちの、前回の計算部412による演算の結果である1つの復号途中結果D413が供給され、その9ビットの復号途中結果D411(v)と6ビットの復号途中結果D413(udv)が、減算器431に供給される。また、計算器4121には、制御部417から制御信号D419が供給され、その制御信号D419がセレクタ435とセレクタ442に供給される。
減算器431は、9ビットの復号途中結果D411(v)から6ビットの復号途中結果D413(uj)を減算し、その6ビットの減算値D431を出力する。即ち、減算器431は、式(8)にしたがって演算を行い、その演算の結果である減算値D431(vi)を出力する。
減算器431により出力された6ビットの減算値D431のうち、最上位ビットの正負を示す符号ビットD432(sign(vi))がEXOR回路440に供給され、下位5ビットの絶対値D433(|vi|)がLUT432に供給される。
LUT432は、絶対値D433(|vi|)に対して、式(7)におけるφ(|vi|)の演算を行った5ビットの演算結果D434(φ(|vi|))を読み出し、加算器433とFIFOメモリ438に供給する。
加算器433は、演算結果D434(φ(|vi|))とレジスタ434に格納されている9ビットの値D435とを加算することにより、演算結果D434を積算し、その結果得られる9ビットの積算値をレジスタ434に再格納する。なお、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411から求められた絶対値D433(|vi|)に対する演算結果が積算された場合、レジスタ434はリセットされる。
検査行列Hの1行に亘る復号途中結果D411が1つずつ読み込まれ、レジスタ434に1行分の演算結果D434が積算された積算値が格納された場合、制御部417から供給される制御信号D419は、0から1に変化する。例えば、行の重み(row weight)が「9」である場合、制御信号D419は、1から8クロック目までは、「0」となり、9クロック目では「1」となる。
制御信号D419が「1」の場合、セレクタ435は、レジスタ434に格納されている値、即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411(復号途中結果v)から求められたφ(|vi|)が積算された9ビットの値D435(i=1からi=dcまでのΣφ(|vi|))を選択し、値D436として、レジスタ436に出力して格納させる。レジスタ436は、格納している値D436を、9ビットの値D437として、セレクタ435と加算器437に供給する。制御信号D419が「0」の場合、セレクタ435は、レジスタ436から供給された値D437を選択し、レジスタ436に出力して再格納させる。即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411(復号途中結果v)から求められたφ(|vi|)が積算されるまで、レジスタ436は、前回積算されたφ(|vi|)を、セレクタ435と加算器437に供給する。
一方、FIFOメモリ438は、レジスタ436から新たな値D437(i=1からi=dcまでのΣφ(|vi|))が出力されるまでの間、LUT432が出力した演算結果D434(φ(|vi|))を遅延し、5ビットの値D438として減算器437に供給する。減算器437は、レジスタ436から供給された値D437から、FIFOメモリ438から供給された値D438を減算し、その減算結果を、5ビットの減算値D439としてLUT439に供給する。即ち、減算器437は、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411(復号途中結果v)から求められたφ(|vi|)の積算値から、求めたい枝に対応する復号途中結果、即ち、検査行列Hの所定の1に対応する復号途中結果D411(復号途中結果v)から求められたφ(|vi|)を減算して、その減算値(i=1からi=dc−1までのΣφ(|vi|))を減算値D439としてLUT439に供給する。
LUT439は、減算値D439(i=1からi=dc−1までのΣφ(|vi|))に対して、式(7)におけるφ-1(Σφ(|vi|))の演算を行った5ビットの演算結果D440(φ-1(Σφ(|vi|)))を出力する。
以上の処理と並行して、EXOR回路440は、レジスタ441に格納されている1ビットの値D442と符号ビットD432との排他的論理和を演算することにより、符号ビットどうしの乗算を行い、1ビットの乗算結果D441をレジスタ441に再格納する。なお、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411から求められた符号ビットD432が乗算された場合、レジスタ441はリセットされる。
検査行列Hの1行に亘る全ての1に対応する復号途中結果D411から求められた符号ビットD432が乗算された乗算結果D441(i=1からdcまでのΠsign(vi))がレジスタ441に格納された場合、制御部417から供給される制御信号D419は、「0」から「1」に変化する。
制御信号D419が「1」の場合、セレクタ442は、レジスタ441に格納されている値、即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411から求められた符号ビットD432が乗算された値D442(i=1からi=dcまでのΠsign(vi))を選択し、1ビットの値D443としてレジスタ443に出力して格納させる。レジスタ443は、格納している値D443を、1ビットの値D444としてセレクタ442とEXOR回路445に供給する。制御信号D419が「0」の場合、セレクタ442は、レジスタ443から供給された値D444を選択し、レジスタ443に出力して再格納させる。即ち、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411(復号途中結果v)から求められた符号ビットD432が乗算されるまで、レジスタ443は、前回格納した値を、セレクタ442とEXOR回路445に供給する。
一方、FIFOメモリ444は、レジスタ443から新たな値D444(i=1からi=dcまでのΠsign(vi))がEXOR回路445に供給されるまでの間、符号ビットD432を遅延し、1ビットの値D445としてEXOR回路445に供給する。EXOR回路445は、レジスタ443から供給された値D444と、FIFOメモリ444から供給された値D445との排他的論理和を演算することにより、値D444を、値D445で除算し、1ビットの除算結果を除算値D446として出力する。即ち、EXOR回路445は、検査行列Hの1行に亘る全ての1に対応する復号途中結果D411から求められた符号ビットD432(sign(vi))の乗算値を、検査行列Hの所定の1に対応する復号途中結果D411から求められた符号ビットD432(sign(vi))で除算して、その除算値(i=1からi=dc−1までのΠsign(vi))を除算値D446として出力する。
計算器4121では、LUT439から出力された5ビットの演算結果D440を下位5ビットとするとともに、EXOR回路445から出力された1ビットの除算値D446を最上位ビットとする合計6ビットが復号途中結果D412(復号途中結果uj)として出力される。
以上のように、計算器4121では、式(7)と式(8)の演算が行われ、復号途中結果ujが求められる。
なお、図16の検査行列Hの行の重みの最大は9であるため、即ち、計算器4121に供給される復号途中結果D411(v)と復号途中結果D413(udv)の最大数は9であるため、計算器4121は、9個の復号途中結果D411から求められる9個の演算結果D434(φ(|vi|))を遅延させるFIFOメモリ438と、9個の符号ビットD432を遅延させるFIFOメモリ444を有している。行の重みが9未満の行のメッセージを計算するときには、FIFOメモリ438とFIFOメモリ444における遅延量が、その行の重みの値に減らされる。
図19は、図17の計算部415の計算器4151の構成例を示すブロック図である。
なお、図19では、計算器4151について説明するが、計算器4152乃至計算器4156も同様に構成される。
また、図19では、計算部412による第1の演算の結果得られる各復号途中結果(uj)が符号ビットを合わせて合計6ビットに量子化されているものとして、計算器4151を表している。さらに、図19の計算器4151には、クロックckが供給され、このクロックckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロックckに同期して処理を行う。
図19の計算器4151は、制御部417から供給される制御信号D422に基づいて、受信用メモリ416から1つずつ読み込まれる受信データD417(受信値u0i)と、サイクリックシフト回路414から1つずつ読み込まれる復号途中結果D414(uj)とを用いて、式(5)にしたがう第2の演算を行う。
即ち、計算器4151では、サイクリックシフト回路414から、検査行列Hの各行の1に対応する6ビットの復号途中結果D414(復号途中結果uj)が1つずつ読み込まれ、その復号途中結果D414が、加算器471に供給される。また、計算器4151では、受信用メモリ416から6ビットの受信データD417が1つずつ読み込まれ、加算器475に供給される。さらに、計算器4151には、制御部417から制御信号D422が供給され、その制御信号D422は、セレクタ473に供給される。
加算器471は、復号途中結果D414(復号途中結果uj)とレジスタ472に格納されている9ビットの値D471とを加算することにより、復号途中結果D414を積算し、その結果得られる9ビットの積算値を、レジスタ472に再格納する。なお、検査行列Hの1列に亘る全ての1に対応する復号途中結果D414が積算された場合、レジスタ472はリセットされる。
検査行列Hの1列に亘る復号途中結果D414が1つずつ読み込まれ、レジスタ472に1列分の復号途中結果D414が積算された値が格納された場合、制御部417から供給される制御信号D422は、「0」から「1」に変化する。例えば、列の重みが「5」である場合、制御信号D422は、1から4クロック目までは「0」となり、5クロック目では「1」となる。
制御信号D422が「1」の場合、セレクタ473は、レジスタ472に格納されている値、即ち、検査行列Hの1列に亘る全ての枝からの復号途中結果D414(復号途中結果uj)が積算された9ビットの値D471(j=1からdVまでのΣuj)を選択し、レジスタ474に出力して格納させる。レジスタ474は、格納している値D471を、9ビットの値D472として、セレクタ471と加算器475に供給する。制御信号D422が「0」の場合、セレクタ473は、レジスタ474から供給された値D472を選択し、レジスタ474に出力し再格納させる。即ち、検査行列Hの1列に亘る全ての枝からの復号途中結果D414(復号途中結果uj)が積算されるまで、レジスタ474は、前回積算された値を、セレクタ473と加算器475に供給する。
加算器475は、9ビットの値D472と、受信用メモリ416から供給された6ビットの受信データD417とを加算して、その結果得られる6ビットの値を復号途中結果D415(復号途中結果v)として出力する。
以上のように、計算器4151では、式(5)の演算が行われ、復号途中結果vが求められる。
なお、図9の検査行列Hの列の重みの最大は5であるため、即ち、計算器4151に供給される復号途中結果ujの最大数は5であるため、計算器4151は、6ビットの復号途中結果ujを最大5個加算する。従って、計算器4151の出力は、9ビットの値となっている。
図20は、図17の復号途中結果格納用メモリ413の構成例を示すブロック図である。
復号途中結果格納用メモリ413は、スイッチ501と504、および2つのシングルポートRAMである復号途中結果格納用RAM502と503から構成される。
この復号途中結果格納用メモリ413の各部について詳細に説明する前に、まず、復号途中結果格納用RAM502と503へのデータの格納方法について説明する。
復号途中結果格納用RAM502と503は、計算部412による第1の演算の結果得られ、スイッチ501を介して供給された復号途中結果D412を格納する。
具体的には、復号途中結果格納用RAM502の第1アドレスから第9アドレスには、図16の検査行列Hの第1行目から第6行目までの1に対応する復号途中結果D412(D501)が、各行ともに横方向(列方向)に詰めた形に(0を無視した形で)格納される。
即ち、第j行第i列を、(j,i)と表すこととすると、復号途中結果格納用RAM502の第1アドレスには、図16の検査行列Hの構成行列である(1,1)から(6,6)の6×6の単位行列の1に対応するデータが、第2アドレスには、図16の検査行列Hの構成行列である(1,25)から(6,30)のシフト行列(6×6)の単位行列を右方向に5つだけサイクリックシフトしたシフト行列)の1に対応するデータが格納される。第3アドレスから第8アドレスも同様に図16の検査行列Hの構成行列と対応づけてデータが格納される。そして、第9アドレスには、検査行列Hの(1,102)から(6,108)のシフト行列(6×6の単位行列のうちの1行目の1を0に置き換えて1つだけ左方向にサイクリックシフトしたシフト行列)の1に対応するデータが格納される。ここで、図16の検査行列Hの(1,102)から(6,108)のシフト行列においては、1行目に1がないため、第9アドレスにはデータが格納されない。
また、復号途中結果格納用RAM502の第10アドレスから第18アドレスには、図16の検査行列Hの第13行目から第18行目までの1に対応するデータが格納される。即ち、第10アドレスには、検査行列Hの(13,7)から(18,12)の6×6の単位行列を右方向に5つだけサイクリックシフトした行列の1に対応するデータが格納され、第11アドレスには、検査行列Hの(13,13)から(18,18)の和行列(6×6の単位行列と、6×6の単位行列を右方向に1つだけサイクリックシフトしたシフト行列との和である和行列)を構成するシフト行列の1に対応するデータが格納される。また、第12アドレスには、検査行列Hの(13,13)から(18,18)の和行列を構成する単位行列の1に対応するデータが格納される。以下、第13アドレスから第18アドレスについても、検査行列Hに対応づけてデータが格納される。
即ち、重みが2以上の構成行列については、その構成行列を、重みが1であるP×Pの単位行列、そのコンポーネントである1のうち1個以上が0になった準単位行列、または単位行列もしくは準単位行列をサイクリックシフトしたシフト行列のうちの複数の和の形で表現したときの、その重みが1の単位行列、準単位行列、またはシフト行列の1の位置に対応するデータ(単位行列、準単位行列、またはシフト行列に属する枝に対応するメッセージの復号途中結果)は、同一アドレスに格納される。
同様に、復号途中結果格納用RAM502の第19アドレスから第27アドレスには、図16の検査行列Hに対応づけて、第25行目から第30行目までの1に対応するデータが格納される。即ち、復号途中結果格納用RAM502のワード数は、27である。
復号途中結果格納用RAM503の第1アドレスから第9アドレスには、図16の検査行列Hの第7行目から第12行目までの1に対応する復号途中結果D412(D502)が、各行ともに横方向(列方向)に詰めた形に(0を無視した形で)格納される。
即ち、復号途中結果格納用RAM503の第1アドレスには、検査行列Hの構成行列である(7,1)から(12,6)の和行列(6×6の単位行列を右方向に2つだけサイクリックシフトした第1のシフト行列と、右方向に4つだけサイクリックシフトした第2のシフト行列の和である和行列)を構成する第1のシフト行列の1に対応するデータが、第2アドレスには、検査行列Hの構成行列である(7,1)から(12,6)の和行列を構成する第2のシフト行列の1に対応するデータが格納される。以下、第3アドレスから第9アドレスも同様に検査行列Hの構成行列と対応づけてデータが格納される。
同様に、復号途中結果格納用RAM503の第10アドレスから第18アドレスには、図16の検査行列Hの第19行目から第24行目までの1に対応するデータが、第19アドレスから第27アドレスには、検査行列Hの第31行目から第36行目までの1に対応するデータが、図16の検査行列Hに対応づけて格納される。即ち、復号途中結果格納用RAM503のワード数は、27である。
上述したように、復号途中結果格納用RAM502と503のワード(word)数は、27である。即ち、ワード数は、検査行列Hの行の重み(row weight)の9と行数の36とを乗算し、その乗算結果(検査行列Hの1の数)を、同時に読み出す復号途中結果D501の数の6で除算し、さらに、復号途中結果格納用メモリ413が有する復号途中結果格納用RAMの個数の2で除算した値となる。
以下、図20の復号途中結果格納用メモリ413の各部の動作について詳細に説明する。
復号途中結果格納用メモリ413には、計算部412により第1の演算が行われる場合、計算部412から第1の演算の結果得られる復号途中結果D412(uj)が供給され、その復号途中結果D412が復号途中結果格納用RAM502または復号途中結果格納用RAM503のうちの一方の所定のアドレスに書き込まれると同時に、他方から、前回の計算部412による第1の演算の結果得られた復号途中結果D412(uj)が読み出され、計算部412に出力される。一方、計算部415により第2の演算が行われる場合、復号途中結果格納用メモリ413は、復号途中結果格納用RAM502または復号途中結果格納用RAM503に書き込みを行わず、どちらか一方のRAMの所定のアドレスから復号途中結果を読み出して、サイクリックシフト回路414に供給する。
スイッチ501には、計算部412から6つの復号途中結果D412が供給されるとともに、その復号途中結果D412を書き込むメモリとして、復号途中結果格納用RAM502または復号途中結果格納用RAM503の一方の選択を表す制御信号D4201が制御部417から供給される。スイッチ501は、制御信号D4201に基づいて、復号途中結果格納用RAM502または復号途中結果格納用RAM503の一方を選択し、その選択した一方に、6つの復号途中結果D412を供給する。
復号途中結果格納用RAM502には、スイッチ501から6つの復号途中結果D412が、復号途中結果D501として供給されるとともに、制御部417からアドレスを表す制御信号D4202が供給される。復号途中結果格納用RAM502は、制御信号D4202が表すアドレスに既に格納されている前回の計算部412による第1の演算の結果得られた6つの復号途中結果D501を読み出し、復号途中結果D503としてスイッチ504に供給する。また、復号途中結果格納用RAM502は、制御信号D4202が表すアドレスに、スイッチ501から供給された6つの復号途中結果D501を格納する(書き込む)。
復号途中結果格納用RAM503には、スイッチ501から6つの復号途中結果D412が、復号途中結果D502として供給されるとともに、制御部417からアドレスを表す制御信号D4203が供給される。復号途中結果格納用RAM503は、制御信号D4203が表すアドレスに既に格納されている前回の計算部412による第1の演算の結果得られた6つの復号途中結果D502を読み出し、復号途中結果D504としてスイッチ504に供給する。また、復号途中結果格納用RAM503は、制御信号D4203が表すアドレスに、スイッチ501から供給された6つの復号途中結果D502を格納する(書き込む)。
スイッチ504には、復号途中結果格納用RAM502から復号途中結果D503が供給されるか、あるいは復号途中結果格納用RAM503から復号途中結果D504が供給される。また、制御部417から、復号途中結果格納用RAM502または復号途中結果格納用RAM503の一方の選択を表す制御信号D4204が供給される。スイッチ504は、制御信号D4204に基づいて、復号途中結果格納用RAM502または復号途中結果格納用RAM503の一方を選択し、その選択した一方から供給された6つの復号途中結果を、6つの復号途中結果D413として計算部412とサイクリックシフト回路414に供給する。
図21は、復号途中結果格納用メモリ413の復号途中結果格納用RAM502と復号途中結果格納用RAM503の読み出しと書き込みの動作を説明するタイミングチャートである。
なお、図21において、横軸は、時間(t)を表している。また、図21では、図22の○印内に記載された数字iの構成行列の1に対応するデータの読み出しをRiと表し、そのデータの書き込み(格納)をWiと表す。
復号途中結果格納用メモリ413では、計算部412により第1の演算が行われる場合、復号途中結果格納用RAM502が、制御信号D4202に基づいて、既に格納している、前回の計算部412の第1の演算の結果得られた復号途中結果D501のうち、同一アドレスに格納している検査行列Hの第1行目から第6行目までの1に対応する復号途中結果D501を、1クロックに6つずつ、9回(9クロック分)読み出し(図中、R0乃至R8)、スイッチ504を介して、計算部412に供給する。即ち、図16の検査行列Hの行重みは、9であるため、検査行列Hの各行の1に対応する復号途中結果は9つあり、復号途中結果格納用RAM502は、第1行目から第6行目までの1に対応する6つの復号途中結果D501を、6つ単位で9回読み出す。
次に、復号途中結果格納用RAM503は、制御信号D4203に基づいて、既に格納している、前回の計算部412による第1の演算の結果得られた復号途中結果D502のうち、同一アドレスに格納している検査行列Hの第7行目から第12行目までの1に対応する復号途中結果D502を、6つ単位で9回続けて読み出し(R9乃至R17)、スイッチ504を介して、計算部412に供給する。
ここで、ノードを1つずつ計算する計算器4121乃至4126または4151乃至4156では、ノード次数(node degree)分の遅延が生じる。例えば、計算器4121乃至4126では9クロック分の遅延が生じる。また、復号装置400が100MHzを超える高速動作を行う場合、計算器4121乃至4126では、さらに3クロック分程度の遅延が生じ、3クロック分程度のパイプライン化が必要となる。
即ち、計算部412が第1の演算を行うために必要な時間、即ち復号途中結果格納用メモリ413から復号途中結果D413が読み出されてから、その復号途中結果D413を用いた第1の演算の結果得られる復号途中結果D412が復号途中結果格納メモリ413に供給されるまでの時間は、12クロック分の時間T1となる。
この場合、復号途中結果格納用RAM502から復号途中結果D503の1回目の読み出し(R0)が開始されてからT1時間後に、計算部412から復号途中結果格納メモリ413への、第1の演算の結果得られる検査行列Hの第1行目から第6行目までの1に対応する6つの復号途中結果D412の供給が開始される。その復号途中結果D413は、スイッチ501を介して復号途中結果D501として復号途中結果格納用RAM502に供給され、復号途中結果格納用RAM502は、その復号途中結果D501を、制御信号D4202に基づいて、既に読み出された復号途中結果D503が格納されていたアドレスに9回続けて格納する(W0乃至W8)。
即ち、復号途中結果格納用RAM502により復号途中結果D503の9回の読み出し(R0乃至R8)が終了してから、復号途中結果格納用RAM502により復号途中結果D501の9回の格納(W0乃至W8)が開始されるまでに、3クロック分の時間Tw(=T1−9)の待ち時間が生じる。
その結果、復号途中結果格納用RAM503からの9回の読み出し(R9乃至R17)が終了してから、時間Twが経過後に復号途中結果格納用RAM502への9回の格納(W0乃至W8)が終了する。従って、復号途中結果格納用RAM503からの9回の読み出し(R9乃至R17)が終了してから、復号途中結果格納用RAM502からの9回の読み出し(R18乃至R26)を開始するまでに、時間Twの待ち時間が必要となる。
また、サムプロダクトアルゴリズムを近似して実装する方法なども提案されているが、この方法では、性能の劣化を招いてしまう。
以上のように、サムプロダクトアルゴリズムをハードウェアに実装する場合には、上述したように、枝に対応するメッセージの演算(チェックノード演算とバリアブルノード演算、または第1の演算と第2の演算)を、1つずつシリアル(serial)に行う方法、すべて並列(フルパラレル(full parallel))に行う方法、幾つかずつ並列(パラレル(parallel))に行う方法がある。
しかしながら、P個ずつ並列に行う方法では、Pの値が大きいとき、特に計算機412の回路規模が大きくなってしまう。例えば、Pが360、符号長が64800のときに、計算部412の回路規模は、復号装置400の全体の20%、復号装置400のメモリ(例えば、復号途中結果格納用メモリ410、復号途中結果格納用メモリ413、受信用メモリ416など)を除いた論理回路の60%に達する場合がある。
また、図21に示すように、復号途中結果格納用RAM502と503のいずれからも読み出しが行われない時間Twが生じる。即ち、時間Twの間、第1の演算を行う計算部412には、復号途中結果D413が供給されないので、計算部412は、第1の演算を行わない(遊んでしまう)。特に、ノード次数が小さい場合、時間Twは相対的に長くなり、計算部412を長い間無駄にしていることになる。
さらに、上述した復号装置では、予め決められた所定の回数だけ復号が行われる。
C. Howland and A. Blanksby, "Parallel Decoding Architectures for Low Density Parity Check Codes", Symposium on Circuits and Systems, 2001 E. Yeo, P. Pakzad, B. Nikolic and V. Anantharam, "VLSI Architectures for iterative Decoders in Magnetic Recording Channels", IEEE Transactions on Magnetics, Vol. 37, No. 2, March 2001 T.Zhang,K.K.Parhi,"Joint(3,k)-regular LDPC Code and decoder/encoder design,"IEEE Transactions on Signal Processing,Vol.52,No.4,pp.1065-1079,April 2004 M.M.Mansour,N.R.Shanbhag,"A novel design methodology for high-performance programmable decoder cores for AA-LDPC codes,"Proceedings of IEEE Workshop on Signal Processing Systems 2003(SIPS 2003),pp.29-34,Aug.2003 特開2004−364233号公報
本発明は、このような状況に鑑みてなされたものであり、復号の性能を向上させ、さらに消費電力を削減することができるようにするものである。
本発明の復号装置は、LDPC符号の復号のためのチェックノードの演算とバリアブルノードの演算の一部である第1の演算を行う第1の演算手段と、LDPC符号の復号のためのバリアブルノードの演算の他の一部である第2の演算を行う第2の演算手段と、第2の演算手段により得られる演算結果のシンドロームを演算するシンドローム演算手段と、第1と第2の演算手段を制御する制御手段とを備え、第1と第2の演算手段は、第1と第2の演算を繰り返し行うことにより、LDPC符号の復号を行い、制御手段は、シンドローム演算手段により得られるシンドロームに基づいて、復号を終了させることを特徴とする。
本発明の復号方法は、LDPC符号の復号のためのチェックノードの演算とバリアブルノードの演算の一部である第1の演算を行う第1の演算ステップと、LDPC符号の復号のためのバリアブルノードの演算の他の一部である第2の演算を行う第2の演算ステップと、第2の演算ステップの処理により得られる演算結果のシンドロームを演算するシンドローム演算ステップと、第1と第2の演算ステップの処理を制御する制御ステップとを含み、第1と第2の演算ステップの処理は、第1と第2の演算を繰り返し行うことにより、LDPC符号の復号を行い、制御ステップの処理は、シンドローム演算ステップの処理により得られるシンドロームに基づいて、復号を終了させることを特徴とする。
本発明においては、LDPC符号の復号のためのチェックノードの演算とバリアブルノードの演算の一部である第1の演算と、バリアブルノードの演算の他の一部である第2の演算を繰り返し行うことにより、LDPC符号の復号を行う。また、第2の演算の結果のシンドロームを演算し、そのシンドロームに基づいて、復号を終了させる。
本発明によれば、復号の性能を向上させ、さらに消費電力を削減することが可能となる。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
請求項1に記載の復号装置は、
LDPC(Low Density Parity Check)符号の復号装置(例えば、図34の復号装置1000)であって、
前記LDPC符号の復号のためのチェックノードの演算とバリアブルノードの演算の一部である第1の演算を行う第1の演算手段(例えば、図34の計算部1102)と、
前記LDPC符号の復号のための前記バリアブルノードの演算の他の一部である第2の演算を行う第2の演算手段(例えば、図34の計算部415)と、
前記第2の演算手段により得られる演算結果のシンドロームを演算するシンドローム演算手段(例えば、図34のシンドローム判定部2001)と、
前記第1と第2の演算手段を制御する制御手段(例えば、図34の制御部2003)と
を備え、
前記第1と第2の演算手段は、前記第1と第2の演算を繰り返し行うことにより、前記LDPC符号の復号を行い(図35のステップS77とS81の処理)、
前記制御手段は、前記シンドローム演算手段により得られるシンドロームに基づいて、前記復号を終了させる(例えば、図35のステップS86の処理)
ことを特徴とする。
請求項7に記載の復号方法は、
LDPC(Low Density Parity Check)符号の復号装置(例えば、図34の復号装置1000)の復号方法であって、
前記LDPC符号の復号のためのチェックノードの演算とバリアブルノードの演算の一部である第1の演算を行う第1の演算ステップ(例えば、図35のステップS81)と、
前記LDPC符号の復号のための前記バリアブルノードの演算の他の一部である第2の演算を行う第2の演算ステップ(例えば、図35のステップS77)と、
前記第2の演算ステップの処理により得られる演算結果のシンドロームを演算するシンドローム演算ステップ(例えば、図35のステップS72)と、
前記第1と第2の演算ステップの処理を制御する制御ステップ(例えば、図35のステップS86)と
を含み、
前記第1と第2の演算ステップの処理は、前記第1と第2の演算を繰り返し行うことにより、前記LDPC符号の復号を行い(例えば、図35のステップS77とS81の処理)、
前記制御ステップの処理は、前記シンドローム演算ステップの処理により得られるシンドロームに基づいて、前記復号を終了させる(例えば、図35のステップS86の処理)
ことを特徴とする。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
図23は、図16の検査行列Hで表現されるLDPC符号を復号する本発明を適用した復号装置の第1実施の形態の構成例を示している。
図23の復号装置1000は、サイクリックシフト回路414、計算部415、受信用メモリ416、サイクリックシフト回路1101、3つの計算器11021乃至11023からなる計算部1102、復号途中結果格納用メモリ1103、復号途中結果格納用メモリ1104、および制御部1105から構成される。なお、図17と同一のものには、同一の符号を付してある。
サイクリックシフト回路1101には、復号途中結果格納用メモリ1104から6つの復号途中結果D1104と、受信用メモリ416から6つの受信データD417(LDPC符号)が供給される。また、サイクリックシフト回路1101には、制御部1105から、その復号途中結果D1104に対応する検査行列Hの1が、検査行列Hにおいて元となる単位行列などを幾つサイクリックシフトしたものであるかの情報(Matrixデータ)を表し、さらに6つの復号途中結果D1104または受信データD417のいずれを選択するかの情報を表す制御信号D1106が供給される。
サイクリックシフト回路1101は、制御信号D1106を元に、6つの復号途中結果D1104または受信データD417を選択し、並べ替えるサイクリックシフトを行う。サイクリックシフト回路1101は、6つの復号途中結果D1104または受信データD417をサイクリックシフトした結果のうち、構成行列の上半分(1行目乃至3行目)または下半分(4行目乃至6行目)の1に対応する3つを復号途中結果D1101として、計算部1102に供給する。
計算部1102は、3つの計算器11021乃至11023からなる。計算部1102には、サイクリックシフト回路1101から、計算部415による第2の演算の結果得られた3つの復号途中結果D1101(v)が供給されるとともに、復号途中結果格納用メモリ1103から、前回計算器11021乃至11023による第1の演算の結果得られた構成行列の上半分または下半分の1に対応する3つの復号途中結果D1103(uj)が供給され、その3つの復号途中結果D1101と3つの復号途中結果D1103が、計算器11021乃至11023に供給される。また、計算部1102には、制御部1105から制御信号D1107がきょうきゅうされ、その制御信号D1107が、計算器11021乃至11023に供給される。なお、制御信号D1107は、3つの計算器11021乃至11023に共通の信号である。
計算器11021乃至11023は、図18に示した計算器4121と同様に構成され、それぞれ復号途中結果D1101とD1103を用いて、式(7)と式(8)にしたがって第1の演算を行い、復号途中結果D1102(vi)を求める。計算部1102は、計算器11021乃至11023による演算の結果得られる、構成行列の上半分または下半分の3つの1に対応する3つの復号途中結果D1102を復号途中結果格納用メモリ1103に供給する。
復号途中結果格納用メモリ1103は、例えば、3つの復号途中結果D1102を同時に読み書き可能な、4つのシングルポートRAMから構成される。復号途中結果格納用メモリ413には、計算部412から3つの復号途中結果D1102が供給されるとともに、制御部1105から復号途中結果格納用メモリ1103の読み書きを制御する制御信号D1108が供給される。
復号途中結果格納用メモリ1103は、制御信号D1108に基づいて、計算部1102から供給される3つの復号途中結果D1102をまとめて格納すると同時に、既に格納してある3つの復号途中結果D1102を読み出し、復号途中結果D1103として、計算部1102とサイクリックシフト回路414に供給する。即ち、復号途中結果格納用メモリ1103は、計算部1102とサイクリックシフト回路414に供給する復号途中結果D1103の読み出しと、計算部1103から供給される復号途中結果D1102の書き込みとを、同時に行う。
なお、復号途中結果格納用メモリ1103には、計算部1102の第1の演算により演算された検査行列Hのi列の、各行の1に対応する枝からの第1の演算の復号途中結果D1102が格納されるので、復号途中結果格納用メモリ1103に格納されるデータ量、即ち、復号途中結果格納用メモリ1103に必要とされる記憶容量は、復号途中結果D1102の量子化ビット数と、検査行列Hの1の数との乗算値となる。
サイクリックシフト回路414、計算部415、および受信用メモリ416は、図17のそれらと同一であるので説明は省略する。なお、サイクリックシフト回路414は、復号途中結果格納用メモリ1103から3つずつ供給される6つの復号途中結果D1103をサイクリックシフトし、6つの復号途中結果D414を計算部415に供給する。
復号途中結果格納用メモリ1104は、サイクリックシフト回路1101からの復号結果D1105を6つずつ、第1アドレスから順に格納したり、既に格納してある復号結果D1105を出力する。また、復号途中結果格納用メモリ1104は、計算部415から供給された第2の演算の結果である検査行列Hの6つの列に対応する6つの復号途中結果D415を、第1アドレスから順に格納(記憶)する。
即ち、復号途中結果格納用メモリ1104の第1アドレスには、図17の復号途中結果格納用メモリ410と同様に、検査行列Hの列に対応する復号途中結果のうち、第1列目から第6列目の復号途中結果vが格納される。そして、同様に、第2アドレスには、第7列目から第12列目の復号途中結果vが格納され、第3アドレスには、第13列目から第18列目の復号途中結果が格納される。以後、同様に、第19列目から第108列目までの復号途中結果vが、6個ずつ、第4アドレスから第18アドレスまで格納され、計108個の復号途中結果vが復号途中結果格納用メモリ1104に格納される。
従って、復号途中結果格納用メモリ1104のワード(word)数は、図16の検査行列Hの列数(LDPC符号の符号長)である108を、同時に読み書きする復号途中結果の数である6で割り算した18となる。
復号途中結果格納用メモリ1104は、既に格納してある復号途中結果D415から、後段の計算部1102が求めようとする復号途中結果ujの対応する検査行列Hの行において“1”になっている復号途中結果vを6つ同時に読み出し、復号途中結果D1104として、サイクリックシフト回路1101に供給する。
なお、復号途中結果格納用メモリ1104は、例えば、6つの復号途中結果を同時に読み書き可能なシングルポートRAMで構成される。また、復号途中結果格納用メモリ1104には、計算部415の第2の演算により演算された列に対応する復号途中結果D414が格納されるので、復号途中結果格納用メモリ410に格納されるデータ量、即ち、復号途中結果格納用メモリ410に必要とされる記憶容量は、復号途中結果D414の量子化ビット数と、検査行列Hの列数(LDPC符号の符号長)との乗算値である。
制御部1105は、制御信号D1106をサイクリックシフト回路1101に、制御信号D1107を計算部1102に供給することにより、それぞれを制御する。また、制御部1105は、制御信号D1108を復号途中結果格納用メモリ1103に、制御信号D421をサイクリックシフト回路414に、制御信号D422を計算部415にそれぞれ供給することにより、それぞれを制御する。
サイクリックシフト回路1101、計算部1102、復号途中結果格納用メモリ1103、サイクリックシフト回路414、計算部415、復号途中結果格納用メモリ1104の順で、データが一巡することで、復号装置1000は、1回の復号を行うことができる。復号装置1000では、例えば、所定の回数だけ繰り返して復号が行われた後、計算部415による第2の演算の結果である復号途中結果D1104が、最終的な復号結果として出力される。
図24は、図23の復号途中結果格納用メモリ1103の構成例を示すブロック図である。
復号途中結果格納用メモリ1103は、スイッチ1201と1206、並びに4つのシングルポートRAMである復号途中結果格納用RAM1202乃至1205から構成される。
この復号途中結果格納用メモリ1103の各部について詳細に説明する前に、まず、復号途中結果格納用RAM1202乃至1205へのデータの格納方法について説明する。
復号途中結果格納用RAM1202乃至1205は、計算部1102による第1の演算の結果得られ、スイッチ1201を介して供給された復号途中結果D1102を格納する。
具体的には、復号途中結果格納用RAM1202の第1アドレスから第9アドレスには、図16の検査行列Hの第1行目から第3行目までの1に対応する復号途中結果D1102(D1201)が、各行ともに横方向(列方向)に詰めた形に(0を無視した形で)格納される。
即ち、第j行第i列を、(j,i)と表すこととすると、復号途中結果格納用RAM1202の第1アドレスには、図16の検査行列Hの構成行列である(1,1)から(6,6)の6×6の単位行列の上半分(1乃至3行目)の1に対応するデータが、第2アドレスには、図16の検査行列Hの構成行列である(1,25)から(6,30)のシフト行列(6×6)の単位行列を右方向に5つだけサイクリックシフトしたシフト行列)の上半分の1に対応するデータが格納される。第3アドレスから第8アドレスも同様に図16の検査行列Hの構成行列の上半分と対応づけてデータが格納される。
そして、第9アドレスには、検査行列Hの(1,103)から(6,108)のシフト行列(6×6の単位行列のうちの1行目の1を0に置き換えて1つだけ左方向にサイクリックシフトしたシフト行列)の上半分の1に対応するデータが格納される。ここで、図16の検査行列Hの(1,103)から(6,108)のシフト行列においては、1行目に1がないため、第9アドレスにはデータが格納されない。
また、復号途中結果格納用RAM1202の第10アドレスから第18アドレスには、図16の検査行列Hの第13行目から第15行目までの1に対応するデータが格納される。即ち、第10アドレスには、検査行列Hの(13,7)から(18,12)の6×6の単位行列を右方向に5つだけサイクリックシフトした行列の上半分の1に対応するデータが格納され、第11アドレスには、検査行列Hの(13,13)から(18,18)の和行列(6×6の単位行列と、6×6の単位行列を右方向に1つだけサイクリックシフトしたシフト行列との和である和行列)を構成するシフト行列の上半分の1に対応するデータが格納される。
また、第12アドレスには、検査行列Hの(13,13)から(18,18)の和行列を構成する単位行列の上半分の1に対応するデータが格納される。以下、第13アドレスから第18アドレスについても、検査行列Hの構成行列の上半分に対応づけてデータが格納される。
同様に、復号途中結果格納用RAM1202の第19アドレスから第27アドレスには、図16の検査行列Hに対応づけて、第25行目から第27行目までの1に対応するデータが格納される。即ち、復号途中結果格納用RAM1202のワード数は、27である。
また、復号途中結果格納用RAM1203の第1アドレスから第9アドレスには、図16の検査行列Hの第4行目から第6行目までの1に対応する復号途中結果D1102(D1202)が、各行ともに横方向に詰めた形に格納される。
即ち、復号途中結果格納用RAM1203の第1アドレスには、図16の検査行列Hの構成行列である(1,1)から(6,6)の6×6の単位行列の下半分(4乃至6行目)の1に対応するデータが、第2アドレスには、図16の検査行列Hの構成行列である(1,25)から(6,30)のシフト行列(6×6)の単位行列を右方向に5つだけサイクリックシフトしたシフト行列)の下半分の1に対応するデータが格納される。第3アドレスから第9アドレスも同様に図16の検査行列Hの構成行列の下半分と対応づけてデータが格納される。
また、復号途中結果格納用RAM1203の第10アドレスから第18アドレスには、図16の検査行列Hの第16行目から第18行目までの1に対応するデータが格納される。即ち、第10アドレスには、検査行列Hの(13,7)から(18,12)の6×6の単位行列を右方向に5つだけサイクリックシフトした行列の下半分の1に対応するデータが格納され、第11アドレスには、検査行列Hの(13,13)から(18,18)の和行列(6×6の単位行列と、6×6の単位行列を右方向に1つだけサイクリックシフトしたシフト行列との和である和行列)を構成するシフト行列の下半分の1に対応するデータが格納される。また、第12アドレスには、検査行列Hの(13,13)から(18,18)の和行列を構成する単位行列の下半分の1に対応するデータが格納される。以下、第13アドレスから第18アドレスについても、検査行列Hの構成行列の下半分に対応づけてデータが格納される。
同様に、復号途中結果格納用RAM1203の第19アドレスから第27アドレスには、図16の検査行列Hに対応づけて、第28行目から第30行目までの1に対応するデータが格納される。即ち、復号途中結果格納用RAM1203のワード数は、27である。
復号途中結果格納用RAM1204の第1アドレスから第9アドレスには、図16の検査行列Hの第7行目から第9行目までの1に対応する復号途中結果D1102(D1203)が、各行ともに横方向に詰めた形に格納される。
即ち、復号途中結果格納用RAM1204の第1アドレスには、検査行列Hの構成行列である(7,1)から(12,6)の和行列(6×6の単位行列を右方向に2つだけサイクリックシフトした第1のシフト行列と、右方向に4つだけサイクリックシフトした第2のシフト行列の和である和行列)を構成する第1のシフト行列の上半分(7乃至9行目)の1に対応するデータが、第2アドレスには、検査行列Hの構成行列である(7,1)から(12,6)の和行列を構成する第2のシフト行列の上半分の1に対応するデータが格納される。以下、第3アドレスから第9アドレスも同様に検査行列Hの構成行列の上半分と対応づけてデータが格納される。
同様に、復号途中結果格納用RAM1204の第10アドレスから第18アドレスには、図16の検査行列Hの第19行目から第21行目までの1に対応するデータが、第19アドレスから第27アドレスには、検査行列Hの第31行目から第33行目までの1に対応するデータが、図16の検査行列Hに対応づけて格納される。即ち、復号途中結果格納用RAM1204のワード数は、27である。
復号途中結果格納用RAM1205の第1アドレスから第9アドレスには、図16の検査行列Hの第10行目から第12行目までの1に対応する復号途中結果D1102(D1204)が、各行ともに横方向に詰めた形に格納される。
即ち、復号途中結果格納用RAM1205の第1アドレスには、検査行列Hの構成行列である(7,1)から(12,6)の和行列(6×6の単位行列を右方向に2つだけサイクリックシフトした第1のシフト行列と、右方向に4つだけサイクリックシフトした第2のシフト行列の和である和行列)を構成する第1のシフト行列の下半分(10乃至12行目)の1に対応するデータが、第2アドレスには、検査行列Hの構成行列である(7,1)から(12,6)の和行列を構成する第2のシフト行列の下半分の1に対応するデータが格納される。以下、第3アドレスから第9アドレスも同様に検査行列Hの構成行列の下半分と対応づけてデータが格納される。
同様に、復号途中結果格納用RAM1205の第10アドレスから第18アドレスには、図16の検査行列Hの第22行目から第24行目までの1に対応するデータが、第19アドレスから第27アドレスには、検査行列Hの第34行目から第36行目までの1に対応するデータが、図16の検査行列Hに対応づけて格納される。即ち、復号途中結果格納用RAM1205のワード数は、27である。
上述したように、復号途中結果格納用RAM1202乃至1204のワード(word)数は、27である。即ち、ワード数は、検査行列Hの行の重み(row weight)の9と行数の36とを乗算し、その乗算結果(検査行列Hの1の数)を、同時に読み出す復号途中結果D1201の数の3で除算し、さらに、復号途中結果格納用メモリ1103が有する復号途中結果格納用RAMの個数の4で除算した値となる。
以下、図24の復号途中結果格納用メモリ1103の各部の動作について詳細に説明する。
復号途中結果格納用メモリ1103には、計算部1102により第1の演算が行われる場合、計算部1102から第1の演算の結果得られる復号途中結果D1102(uj)が供給され、その復号途中結果D1102が復号途中結果格納用RAM1202乃至1204のいずれか1つの所定のアドレスに書き込まれると同時に、その他の1つから、前回の計算部1102による第1の演算の結果得られた復号途中結果D1102が読み出され、復号途中結果D1103として計算部1102に出力される。一方、計算部415により第2の演算が行われる場合、復号途中結果格納用メモリ1103では、復号途中結果格納用RAM1202乃至1204の書き込みが行われず、いずれか1つの復号途中結果格納用RAM1202乃至1204の所定のアドレスから復号途中結果D1102を読み出して、復号途中結果D1103としてサイクリックシフト回路414に供給される。
スイッチ1201には、計算部1102から3つの復号途中結果D1102が供給されるとともに、その復号途中結果D1102を書き込むメモリとして、復号途中結果格納用RAM1202乃至1205のいずれか1つの選択を表す制御信号D11081が制御部1105から供給される。スイッチ1201は、制御信号D11081に基づいて、復号途中結果格納用RAM1202乃至1205のいずれか1つを選択し、その選択した復号途中結果格納用RAM1202乃至1205に、3つの復号途中結果D1102を供給する。
復号途中結果格納用RAM1202乃至1205には、スイッチ1201から3つの復号途中結果D1102が、それぞれ復号途中結果D1201乃至D1204として供給されるとともに、制御部1105からアドレスを表す制御信号D11082乃至D11085が供給される。復号途中結果格納用RAM1202乃至1205は、それぞれ制御信号D11082乃至D11085が表すアドレスに既に格納されている前回の計算部1102による第1の演算の結果得られた3つの復号途中結果D1201乃至D1204を読み出し、復号途中結果D1205乃至D1208としてスイッチ1206に供給する。また、復号途中結果格納用RAM1202乃至1205は、それぞれ、制御信号D11082乃至D11085が表すアドレスに、スイッチ1201から供給された3つの復号途中結果D1201乃至D1204を格納する(書き込む)。
スイッチ1206には、復号途中結果格納用RAM1202からの復号途中結果D1205、復号途中結果格納用RAM1203からの復号途中結果D1206、復号途中結果格納用RAM1204からの復号途中結果D1207、または復号途中結果格納用RAM1205からの復号途中結果D1208が供給される。また、制御部1105から、復号途中結果格納用RAM1202乃至1205のいずれか1つの選択を表す制御信号D11086が供給される。スイッチ1206は、制御信号D11086に基づいて、復号途中結果格納用RAM1202乃至1205のいずれか1つを選択し、その選択した1つから供給された3つの復号途中結果D1205乃至D1208を、3つの復号途中結果D1103として計算部1102またはサイクリックシフト回路414に供給する。
図25は、復号途中結果格納用メモリ1103の復号途中結果格納用RAM1202と復号途中結果格納用RAM1204の読み出しと書き込みの動作を説明するタイミングチャートである。
なお、図25において、横軸は、時間(t)を表している。また、図25では、図26の○印内に記載された数字i0の構成行列の上半分の1に対応するデータの読み出しをRi0と表し、そのデータの書き込み(格納)をWi0と表す。さらに、図26の○印内に記載された数字i1の構成行列の下半分の1に対応するデータの読み出しをRi1と表し、そのデータの書き込みをWi1と表す。
復号途中結果格納用メモリ1103では、計算部1102により第1の演算が行われる場合、復号途中結果格納用RAM1202が、制御信号D11082に基づいて、既に格納している、前回の計算部1102の第1の演算の結果得られた復号途中結果D1201のうち、同一アドレスに格納している検査行列Hの第1行目から第3行目までの1に対応する復号途中結果D1201(D1205)を、3つずつ9回(9クロック分)読み出し(R00乃至R80)、スイッチ1206を介して、復号途中結果D1103として計算部1102に供給する。即ち、図16の検査行列Hの行重みは、9であるため、検査行列Hの各行の1に対応する復号途中結果は9つあり、復号途中結果格納用RAM1202は、第1行目から第3行目までの1に対応する3つの復号途中結果D1201を、3つ単位で9回読み出す。
次に、復号途中結果格納用RAM1203は、制御信号D11083に基づいて、既に格納している、前回の計算部1102の第1の演算の結果得られた復号途中結果D1202のうち、同一アドレスに格納している検査行列Hの第4行目から第6行目までの1に対応する復号途中結果D1202を、3つ単位で9回続けて読み出し(図中、R01乃至R81)、スイッチ1206を介して、計算部1102に供給する。
ここで、計算部1102が第1の演算を行うために必要な時間、即ち復号途中結果格納メモリ1103から復号途中結果D1103が読み出されてから、その復号途中結果D1103を用いた第1の演算の結果得られる復号途中結果D1102が復号途中結果格納メモリ1103に供給されるまでの時間は、12クロック分の時間T1であるものとする。
この場合、復号途中結果格納用RAM1202から復号途中結果D1205の1回目の読み出し(R00)が開始されてからT1時間後に、計算部1102から復号途中結果格納用メモリ1103への、第1の演算の結果得られる検査行列Hの第1行目から第3行目までの1に対応する3つの復号途中結果D1102の供給が開始される。その復号途中結果D1102は、スイッチ1201を介して復号途中結果D1201として復号途中結果格納用RAM1202に供給され、復号途中結果格納用RAM1202は、その復号途中結果D1202を、制御信号D11082に基づいて、既に読み出された復号途中結果D1205が格納されていたアドレスに9回続けて格納する(W00乃至W80)。
即ち、復号途中結果格納用RAM1202により復号途中結果D1205の9回の読み出し(R00乃至R80)が終了してから、復号途中結果格納用RAM1202により復号途中結果D1201の9回の格納(W00乃至W80)が開始されるまでに、3クロック分の時間Tw(=T1−9)が生じる。その結果、復号途中結果格納用RAM1203からの9回の読み出し(R01乃至R81)が終了してから、時間Twが経過後に復号途中結果格納用RAM1202への9回の格納(W00乃至W80)が終了する。
しかしながら、復号途中結果格納用メモリ1103では、次の第1の演算に用いられる検査行列Hの第7行目から第9行目までの1に対応する復号途中結果D1203が、復号途中結果格納用RAM1204に格納されているので、復号途中結果格納用RAM1203からの9回の読み出し(R01乃至R81)直後に、復号途中結果格納用RAM1204からの9回の読み出し(R90乃至R170)を行うことができる。
また、復号途中結果格納用RAM1203からの9回の読み出し(R01乃至R81)が終了してから時間Tw後に、復号途中結果格納用RAM1203により復号途中結果D1202の9回の格納(W01乃至W81)が開始される。
次に、復号途中結果格納用RAM1204からの9回の読み出し(R90乃至R170)が終了した直後に、次の第1の演算に用いられる検査行列Hの第10行目から第12行目までの1に対応する復号途中結果D1204が、復号途中結果格納用RAM1205から9回読み出される(R91乃至R171)。また、復号途中結果格納用RAM1204からの9回の読み出し(R90乃至R170)が終了してから時間Tw後に、復号途中結果格納用RAM1204により復号途中結果D1203の9回の格納(W90乃至W170)が開始される。
復号途中結果格納用RAM1205からの9回の読み出し(R91乃至R171)が終了した直後に、次の第1の演算に用いられる検査行列Hの第13行目から第15行目までの1に対応する復号途中結果D1201が、復号途中結果格納用RAM1202から9回読み出される(R180乃至R260)。また、復号途中結果格納用RAM1205からの9回の読み出し(R91乃至R171)が終了してから時間Tw後に、復号途中結果格納用RAM1205により復号途中結果D1204の9回の格納(W91乃至W171)が開始される。そして、以降同様の処理が繰り返される。
以上のように、復号途中結果格納用メモリ1103では、検査行列Hの3行分の1に対応する復号途中結果D1102が、4つの復号途中結果格納用RAM1202乃至1205に順に格納されるので、計算部1102が第1の演算を行うために時間T1が必要な場合であっても、復号途中結果D1103を計算部1102に連続して出力することができる。その結果、計算部1102では、連続して第1の演算を行うことができる。
図27は、図23の復号装置1000の復号処理を説明するフローチャートである。この処理は、例えば、受信用メモリ416に復号すべき受信データが格納されたとき、開始される。
ステップS49において、制御部1105は、復号途中結果格納用RAM1202乃至1205のうちのいずれか1つを読み出しメモリとして選択し、その選択を表す制御信号D11086をスイッチ1206(図24)に供給する。スイッチ1206は、制御信号D11086に基づいて、復号途中結果格納用RAM1202乃至1205を選択し、その選択した復号途中結果格納用RAM1202乃至1205から3つ単位で供給される復号途中結果D1205乃至D1208を、復号途中結果D1103としてサイクリックシフト回路414と計算部1102に供給する。
ステップS49の処理後は、ステップS50に進み、サイクリックシフト回路414は、復号途中結果格納用メモリ1103(のスイッチ1206)から供給される、構成行列の上半分に対応する3つの復号途中結果D1103と下半分に対応する3つの復号途中結果D1103(uj)とを合わせて、サイクリックシフトし、計算部415に供給する。
具体的には、サイクリックシフト回路414には、復号途中結果格納用メモリ1103から3つ単位で復号途中結果D1103が供給されるとともに、制御部1105から、その復号途中結果D1103に対応するMatrixデータを表す制御信号D421が供給される。サイクリックシフト回路414は、制御信号D421を元に、構成行列の上半分に対応する3つの復号途中結果D1103と下半分に対応する3つの復号途中結果D1103とを合わせて、サイクリックシフトし(並べ替え)、その結果を復号途中結果D414として、計算部415に供給する。
ステップS51において、計算部415は、第2の演算を行い、その演算の結果である復号途中結果D415を復号途中結果格納用メモリ1104に供給する。
具体的には、計算部415には、ステップS50でサイクリックシフト回路414から6つの復号途中結果D414が供給されるとともに、受信データ用メモリ416から6つの受信データD417が供給され、復号途中結果D414と受信データD417が、計算部415の計算器4151乃至4156それぞれに1つずつ供給される。さらに、計算部415には、制御部1105から制御信号D422が供給され、その制御信号D422が計算器4151乃至4156に供給される。
計算器4151乃至4156は、復号途中結果D414と受信データD417を用いて、制御信号D422に基づいて、式(5)にしたがって、それぞれ第2の演算を行い、その第2の演算の結果得られる検査行列Hの列に対応する復号途中結果D415(v)を復号途中結果格納用メモリ1104に供給する。
なお、受信用メモリ416から供給された受信データD417に対して、まだ第1の演算が行われておらず、復号途中結果格納用メモリ1103に復号途中結果D1103が格納されていない場合、計算部415は、復号途中結果ujを初期値に設定し、第2の演算を行う。
ステップS51の処理後は、ステップS52に進み、復号途中結果格納用メモリ1104は、ステップS51で計算部415から供給された復号途中結果D415(v)を、同一アドレスに格納し、ステップS53に進む。
ステップS53において、制御部1105は、計算部415により、検査行列Hの列に対応する全ての復号途中結果D1104が演算されたかどうかを判定し、全ての復号途中結果D1104が演算されていないと判定した場合、ステップS49に戻り、上述した処理を繰り返す。
一方、ステップS53において、制御部1105は、計算部415により、検査行列Hの列に対応する全ての復号途中結果D1104が演算されたと判定した場合、ステップS54に進み、サイクリックシフト回路1101は、制御部1105から供給される制御信号D1106を元に、復号途中結果格納用メモリ1104から供給される6つの復号途中結果D1104(v)をサイクリックシフトし、その結果を3つ単位で復号途中結果D1101として、計算部1102に供給する。
ステップS54の処理後は、ステップS55に進み、計算部1102は、第1の演算を行い、その第1の演算の結果である復号途中結果D1102を復号途中結果格納用メモリ1103に供給する。
具体的には、計算部1102には、ステップS54でサイクリックシフト回路1101から3つの復号途中結果D1101(v)が供給されるとともに、後述するステップS57で既に格納された前回の計算部1102による第1の演算の結果得られた3つの復号途中結果D1102(D1103)(uj)が供給され、その復号途中結果D1101とD1103が、計算部1102の計算器11021乃至11023のそれぞれに1つずつ供給される。さらに、計算部1102には、制御部1105から制御信号D1107が供給され、その制御信号D1107が計算器11021乃至11023に供給される。
計算器11021乃至11023は、それぞれ復号途中結果D1101とD1103を用いて、制御信号D1107に基づいて、式(7)と式(8)にしたがって、それぞれ第1の演算を行い、その第1の演算の結果得られる復号途中結果D1102(uj)を復号途中結果格納用メモリ1103に供給する。
なお、受信用メモリ416から供給された受信データD417に対して、まだ第1の演算が行われておらず、復号途中結果格納用メモリ1103に復号途中結果D1103が格納されていない場合、計算部1102は復号途中結果udvを0に設定する。具体的には、例えば、受信データD417に対する復号を行う前に、復号途中結果格納用メモリ1103が0に初期化されるか、または計算部1102が復号途中結果格納用メモリ1103からの入力を0にマスクする。
ステップS55の処理後は、ステップS56に進み、制御部1105は、復号途中結果格納用RAM1202乃至1205のうちのいずれか1つを格納メモリとして選択し、その選択を表す制御信号D11081をスイッチ1201(図24)に供給する。スイッチ1201は、制御信号D11081に基づいて、3つの復号途中結果D1102を格納する復号途中結果格納用RAM1202乃至1205を選択し、その選択した復号途中結果格納用RAM1202乃至1205に、復号途中結果D1102を供給する。
ステップS56の処理後は、ステップS57に進み、復号途中結果格納用RAM1202乃至1205は、ステップS56でスイッチ1201から供給された3つの復号途中結果D1201乃至D1204(D1102)を、同一のアドレスに格納し、ステップS58に進む。
ステップS58において、制御部1105は、計算部1102により、検査行列Hの全ての1に対応する復号途中結果D1102が演算されたかどうかを判定し、全ての復号途中結果D1102が演算されていないと判定した場合、ステップS54に戻り、上述した処理を繰り返す。
一方、ステップS57において、制御部1105は、計算部1102により、全ての1に対応する復号途中結果D1102が演算されたと判定した場合、処理を終了する。
なお、復号装置1000は、復号回数だけ図27の復号処理を繰り返し行い、最後の第2の演算の結果得られるメッセージD1104が、最終的な復号結果として出力される。
上述した図23の復号装置1000では、計算部1102が3つの計算器11021乃至11023から構成されたが、計算部1102ではなく、計算部415が3つの計算器4151乃至4153から構成されるようにしてもよい。この場合、3つ単位で第2の演算が行われ、復号途中結果格納用メモリ1104が3つ以上の復号途中結果格納用メモリから構成される。また、計算部415と計算部1102の両方が、それぞれ3つの計算器4151乃至4153、計算器11021乃至11023から構成されるようにしてもよい。
以上のように、図23の復号装置1000では、復号途中結果格納用メモリ1103が4つの復号途中結果格納用RAM1202乃至1205から構成され、計算部1102が3つ単位で第1の演算を行うので、動作周波数を損なうことなく、回路規模を削減することができる。
例えば、従来の6つの計算器4121乃至4126を備える復号装置400では、計算器4121乃至4126による第1の演算が必要とするクロック数は72であるが、図23の復号装置1000では、計算器11021乃至11023による第1の演算が必要とするクロック数は117であり、復号装置400の場合の1.6倍程度である。即ち、計算器11021乃至11023の数を半減させたにも関わらず、クロック数は2倍より小さい値となっている。
また、計算器4151乃至4156による第2の演算が必要とするクロック数は59クロックであるため、1回の復号に要する時間は、復号装置400と1000で131(=72+59)対176(=117+59)となり、復号装置1000の復号に要する時間は、復号装置400に比べて1.3倍程度である。即ち、復号装置1000の動作周波数は、復号装置400に比べて1.3倍程度で済む。
さらに、第1の演算が必要とするクロック数が小さい場合には、復号装置400と1000における1回の復号に要する時間の比率は小さくなる。例えば、検査行列Hの各行の1の数が4である場合、復号装置400と1000における第1の演算に要する時間の比率は、37対52であり、復号装置1000における時間は、復号装置1000に比べて1.4倍程度となる。
図28は、本発明を適用した復号装置1000の第2実施の形態の構成例を示すブロック図である。
図28の復号装置1000では、図23の復号装置1000の受信用メモリ416の代わりに、受信用メモリ1400が、復号途中結果格納用メモリ1104の代わりに復号途中結果格納用メモリ1401が、制御部1105の代わりに制御部1402が設けられている。受信用メモリ1400には、制御部1402から受信データ格納用メモリ1502と1503(後述する図29)のいずれか一方の選択を表す制御信号D1400が供給される。復号途中結果格納用メモリ1401には、制御部1402から復号途中結果格納用メモリ1602と1603(後述する図30)のいずれか一方の選択を表す制御信号D1401が供給される。
図29は、図28の受信用メモリ1400の構成例を示すブロック図である。
図29の受信用メモリ1400は、スイッチ1501と1504、並びに受信データ格納用メモリ1502と1503から構成される。
スイッチ1501には、通信路を通して受信した受信値(符号ビット)から計算した符号ビットの0らしさの値である受信LLR(対数尤度比)のデータ(受信データ)D416が供給されるとともに、制御部1105から受信データ格納用メモリ1502と1503のいずれか一方の選択を表す制御信号D14001が供給される。スイッチ1501は、制御信号D14001に基づいて、受信データD416を、受信データD1501として受信データ格納用メモリ1502に、または受信データD1502として受信データ格納用メモリ1503に供給する。
受信データ格納用メモリ1502は、スイッチ1501からの受信データD1501を格納したり、既に格納している受信データD1501を、受信データD1503としてスイッチ1504に供給する。受信データ格納用メモリ1503は、受信データ格納用メモリ1502と同様に、スイッチ1501からの受信データD1502を格納したり、既に格納している受信データD1504をスイッチ1504に供給する。
なお、受信データ格納用メモリ1502と1503のそれぞれに格納されるデータ量、即ち、受信データ格納用メモリ1502と1503のそれぞれに必要とされる記憶容量は、LDPC符号の符号長と、受信データの量子化ビット数との乗算値である。
スイッチ1504には、制御部1105から受信データ格納用メモリ1502と1503の一方の選択を表す制御信号D14002が供給され、スイッチ1504は、その制御信号D14002に基づいて、受信データ格納用メモリ1502からの受信データD1503または受信データ格納用メモリ1503からの受信データD1504を、受信データD417としてサイクリックシフト回路1101と計算部415に供給する。
なお、制御信号D14001は、受信データ格納用メモリ1502と1503の一方の選択を表し、制御信号D14002は、他方の選択を表す。即ち、受信データ格納用メモリ1502と1503の一方で書き込みが行われている間、他方で読出しが行われる。
以上のように、受信用メモリ1400では、2つの受信データ格納用メモリ1502と1503が設けられているので、一方で入力される受信データD416を格納している間に、他方で既に格納されている受信データD417を出力することができる。その結果、受信用メモリ1400では、連続して入力される受信データD416を、受信データD417として連続出力することができる。
図30を参照して、図28の復号途中結果格納用メモリ1401の構成を詳細に説明する。
図30の復号途中結果格納用メモリ1401は、スイッチ1601,1604、および1605、並びに復号途中結果格納用メモリ1602と1603から構成される。
スイッチ1601には、計算部415から3つの復号途中結果D415が供給されるとともに、制御部1105から復号途中結果格納用メモリ1602と1603の一方の選択を表す制御信号D14011が供給される。スイッチ1601は、制御信号D14011に基づいて、復号途中結果D415を、復号途中結果D1601として復号途中結果格納用メモリ1602に、または復号途中結果D1602として復号途中結果格納用メモリ1603に供給する。
復号途中結果格納用メモリ1602は、スイッチ1601からの復号途中結果D1601を格納する。また、復号途中結果格納用メモリ1602は、既に格納してある復号途中結果D1601を、復号途中結果D1603としてスイッチ1604に供給するとともに、復号途中結果D1604としてスイッチ1605に供給する。復号途中結果格納用メモリ1603は、復号途中結果格納用メモリ1602と同様に、スイッチ1601からの復号途中結果D1602を格納する。また、復号途中結果格納用メモリ1602は、既に格納してある復号途中結果D1602を、復号途中結果D1605としてスイッチ1604に供給するとともに、復号途中結果D1606としてスイッチ1605に供給する。
なお、復号途中結果格納用メモリ1602と1603のそれぞれに格納されるデータ量、即ち、復号途中結果格納用メモリ1602と1603のそれぞれに必要とされる記憶容量は、LDPC符号の符号長と、復号途中結果D415の量子化ビット数との乗算値である。
スイッチ1604には、制御部1105から復号途中結果格納用メモリ1602と1603の一方の選択を表す制御信号D14012が供給され、スイッチ1604は、その制御信号D14012に基づいて、復号途中結果格納用メモリ1602からの復号途中結果D1603または復号途中結果格納用メモリ1603からの復号途中結果D1605を、復号結果D1402(軟判定値)として出力する。
スイッチ1605には、制御部1105から復号途中結果格納用メモリ1602と1603の一方の選択を表す制御信号D14013が供給され、スイッチ1605は、その制御信号D14013に基づいて、復号途中結果格納用メモリ1602からの復号途中結果D1604、または復号途中結果格納用メモリ1603からの復号途中結果D1606を、復号途中結果D1403としてサイクリックシフト回路1101に出力する。
なお、制御信号D14012は、復号途中結果格納用メモリ1602と1603の一方の選択を表し、制御信号D14013は、他方の選択を表す。即ち、復号途中結果格納用メモリ1602と1603の一方に格納されている復号が完了した復号途中結果D1603またはD1605が、復号結果D1402として出力されている間、他方に格納されている復号途中の復号途中結果D1604またはD1606が、復号結果D1403として出力される。
以上のように、復号途中結果格納用メモリ1401では、2つの復号途中結果格納用メモリ1602と1603が設けられているので、一方で復号途中の復号途中結果D1601またはD1602を格納し、他方で復号が完了した復号途中結果D1601またはD1602を格納することができる。その結果、復号途中結果格納用メモリ1401では、復号結果D1402を出力している間にも復号を行うことができ、これにより、例えば、連続して復号結果D1402を出力することができる。
図31は、受信用メモリ1400と復号途中結果格納用メモリ1401の読み出し(出力)と書き込み(格納)の動作を説明するタイミングチャートである。
なお、図31において、横軸は時間(t)を表している。また、図31において、受信データ#iとは、受信用メモリ1400に供給されるi番目のフレームの受信データD416を表す。さらに、受信データ#iの復号途中結果D1403を復号途中結果#iと表し、受信データ#iの復号結果D1402を復号結果#iと表す。図31において、受信データ#iの受信が開始されてから終了するまでの時間に、1つの受信データに対する復号が終了するものとする。
受信用メモリ1400に受信データ#2が入力されると、受信データ#2がすべて入力されるまでの時間Taの間、その受信データ#2がスイッチ1501を介して、受信用データ格納用メモリ1502に供給され、格納される。このとき、受信データ格納用メモリ1503から、既に格納されている受信データ#1がスイッチ1504に供給され、スイッチ1504は受信データ#1をサイクリックシフト回路1101および計算部415に出力される。そして、受信データ#1の復号が行われる。
また、復号途中結果格納用メモリ1401の復号途中結果格納用メモリ1602は、スイッチ1601を介して計算部415から供給される復号途中結果#1を格納したり、既に格納してある復号途中結果#1をサイクリックシフト回路1101に供給する。復号途中結果格納用メモリ1603は、スイッチ1604を介して、既に格納してある復号途中結果#0を、復号結果#0として出力する。即ち、時間Taの間に復号途中結果格納用メモリ1401から復号途中結果#0が出力される。
時間Taの後、受信用メモリ1400に受信データ#3が入力され、受信データ#3がすべて入力されるまでの時間Tbの間、その受信データ#3がスイッチ1501を介して、受信データ格納用メモリ1503に供給され、格納される。このとき、受信データ格納用メモリ1502は、時間Taに格納された受信データ#2を読み出し、スイッチ1504を介してサイクリックシフト回路1101および計算部415に出力する。そして、受信データ#2の復号が行われる
また、復号途中結果格納用メモリ1602は、時間Taの間に格納された復号途中結果#1を、復号結果#1として出力する。即ち、時間Taの後、時間Tbの間に復号途中結果格納用メモリ1401から復号途中結果#1が復号結果#1として出力される。復号途中結果格納用メモリ1603は、スイッチ1601を介して計算部415から供給される復号途中結果#2を格納したり、既に格納してある復号途中結果#2をサイクリックシフト回路1101に供給する。
時間Tbの後、受信用メモリ1400に受信データ#4が入力され、時間Tcの間、時間Taの場合と同様の処理が行われる。即ち、時間Tbの後、時間Tcの間、受信データ#3がサイクリックシフト回路1101と計算部415に供給され、受信データ#3の復号が行われる。また、時間Tbの間に格納された復号途中結果#2が、復号途中結果格納用メモリ1603から復号結果#2として出力される。
以上のように、図28の復号装置1000では、連続して入力される受信データD417を順に復号し、その復号結果を連続して出力することができる。これにより、高速で復号を行うことができる。即ち、復号装置1000のスループットが向上する。
なお、図29の受信用メモリ1400の受信データ格納用メモリ1502(1503)の数と図30の復号途中結果格納用メモリ1401の復号途中結果格納用メモリ1602(1603)の数は、2つに限定されない。受信データ格納用メモリ1502と復号途中結果格納用メモリ1602の数を増加させることにより、復号の繰り返し回数を増加させ、復号性能を改善することができる。
例えば、受信データ格納用メモリ1502と復号途中結果格納用メモリ1602が、それぞれ3つずつ設けられる場合、1つの受信データ格納用メモリ1502を受信データD417の格納用に、1つの復号途中結果格納用メモリ1602を復号結果D1402の出力用に用い、残りの2つの受信データ格納用メモリ1502と復号途中結果格納用メモリ1602を復号用に用いることができる。この場合、計算部415と1102を2つずつ設ける必要があり、回路規模は増大するが、復号の繰り返し回数を2倍多くすることができる。
図32は、本発明を適用した復号装置1000の第3実施の形態の構成例を示すブロック図である。
図32の復号装置1000では、図28の復号装置1000の復号途中結果格納用メモリ1401の代わりに、復号途中結果格納用メモリ1701が、制御部1402の代わりに、制御部1799が設けられている。復号途中結果格納用メモリ1701には、復号途中結果格納用メモリ1701の復号硬判定結果格納用メモリ1802と1803(後述する図33)のいずれか一方の選択を表す制御信号D1701が供給される。復号途中結果格納用メモリ1701は、復号が完了した復号途中結果D415の硬判定値を復号結果D1702として出力し、復号途中の復号途中結果D415の軟判定値を復号途中結果D1703とし出力する。
図33は、図32の復号途中結果格納用メモリ1701の構成例を示すブロック図である。
図32の復号途中結果格納用メモリ1701は、スイッチ1801,1805、および1806、復号硬判定結果格納用メモリ1802と1803、並びに復号軟判定結果格納用メモリ1804から構成される。
スイッチ1801には、計算部415から3つの復号途中結果D415の硬判定値が復号硬判定結果D1801として供給されるとともに、制御部1702から復号硬判定結果格納用メモリ1801と1802の一方の選択を表す制御信号D17011が供給される。スイッチ1801は、制御信号D17011に基づいて、復号硬判定結果D1801を、復号硬判定結果D1803として復号硬判定結果格納用メモリ1802に、または復号硬判定結果D1804として復号硬判定結果格納用メモリ1803に供給する。
復号硬判定結果格納用メモリ1802は、スイッチ1801からの復号途中結果D1803を格納しする。また、復号硬判定結果格納用メモリ1802は、既に格納してある復号途中結果D1803を、復号途中結果D1805としてスイッチ1805に供給するとともに、復号途中結果D1807としてスイッチD1806に供給する。
復号途中結果格納用メモリ1803は、復号途中結果格納用メモリ1802と同様に、スイッチ1801からの復号途中結果D1804を格納する。また、復号途中結果格納用メモリ1803は、既に格納してある復号途中結果D1804を、復号途中結果D1806としてスイッチ1805に供給するとともに、復号途中結果D1808としてスイッチ1806に供給する。
なお、復号硬判定結果格納用メモリ1802と1803のそれぞれに格納されるデータ量、即ち、復号硬判定結果格納用メモリ1802と1803のそれぞれに必要とされる記憶容量は、LDPC符号の符号長と、復号途中結果D415の硬判定値のビット数である1ビットとの乗算値である。
復号軟判定結果格納用メモリ1804には、計算部415から3つの復号途中結果D415の上位1ビットを除く軟判定値が復号軟判定結果D1802として供給される。復号軟判定結果格納用メモリ1804は、復号軟判定結果D1802を格納したり、既に格納してある復号軟判定結果D1802を復号軟判定結果D1811として出力する。
なお、復号軟判定結果格納用メモリ1804に格納されるデータ量、即ち復号軟判定結果格納用メモリ1804に必要とされる記憶容量は、LDPC符号の符号長と、軟判定値の上位1ビットを除く値のビット数(復号途中結果D415の量子化ビット数−1)との乗算値である。
スイッチ1805には、制御部1702から復号硬判定結果格納用メモリ1802と1803の一方の選択を表す制御信号D17012が供給され、スイッチ1805は、その制御信号D17012に基づいて、復号硬判定結果格納用メモリ1802からの復号硬判定結果D1805または復号途中結果格納用メモリ1803からの復号硬判定結果D1806を、復号結果D1702(硬判定値)として出力する。
スイッチ1806には、制御部1702から復号硬判定結果格納用メモリ1802と1803の一方の選択を表す制御信号D17013が供給され、スイッチ1805は、その制御信号D17013に基づいて、復号硬判定結果格納用メモリ1802からの復号硬判定結果D1807または復号硬判定結果格納用メモリ1803からの復号途中結果D1808を、復号硬判定結果D1810として出力する。スイッチ1806からの復号硬判定結果D1810を上位1ビットとし、その下位ビットを復号軟判定結果格納用メモリ1804からの復号軟判定結果D1811とすることにより得られる軟判定値が、復号途中結果D1703としてサイクリックシフト回路1101に出力される。
なお、制御信号D17012は、復号途中結果格納用メモリ1802と1803の一方の選択を表し、制御信号D17013は、他方の選択を表す。即ち、復号途中結果格納用メモリ1802と1803の一方に格納されている復号が完了した復号途中結果D1805またはD1806が、復号結果D1702として出力されている間、他方に格納されている復号途中の復号途中結果D1807またはD1808が、復号硬判定結果D1810として出力される。
以上のように、復号途中結果格納用メモリ1701では、復号途中結果D415の硬判定値を2つの復号硬判定結果格納用メモリ1802と1803に格納し、復号途中結果D415の上位1ビットを除く軟判定値を1つの復号軟判定結果格納用メモリ1804に格納するので、復号途中結果格納用メモリ1701は、LDPC符号の符号長と1ビットとの乗算値の2倍と、LDPC符号の符号長と(復号途中結果D415の量子化ビット数−1)との乗算値とを合計した記録容量を有すればよい。
従って、復号途中結果格納用メモリ1701を有する図32の復号装置1000では、LDPC符号の符号長と、復号途中結果D415の量子化ビット数との乗算値の2倍の記憶容量が必要である復号途中結果格納用メモリ1401を有する図28の復号装置に比べて、回路規模を削減することができる。
図34は、本発明を適用した復号装置1000の第4実施の形態の構成例を示すブロック図である。
図34の復号装置1000は、3つのシンドローム判定器20011乃至20013からなるシンドローム判定部2001を設け、サイクリックシフト回路2000から出力される硬判定結果D2000のシンドローム演算を行い、その演算の結果に基づいて復号を終了する。
サイクリックシフト回路2000は、制御信号D1106を元に、6つの復号途中結果D1104または受信データD417を選択し、並べ替えるサイクリックシフトを行い、その結果のうち、構成行列の上半分(1行目乃至3行目分)または下半分(4行目乃至6行目分)の1に対応する3つを復号途中結果D1999として、計算部412に供給する。また、サイクリックシフト回路2000は、6つの復号途中結果D1104または受信データD417をサイクリックシフトした結果の硬判定値を硬判定結果D2000としてシンドローム判定部2000に供給する。
シンドローム判定部2001は、3つのシンドローム判定器20011乃至20013から構成される。シンドローム判定部2001には、サイクリックシフト回路2000から出力される硬判定結果D2000が供給されるとともに、制御部2003からシンドロームの演算を制御する制御信号D2001が供給され、シンドローム判定器20011乃至20013にそれぞれ供給される。
シンドローム判定器20011乃至20013は、それぞれ制御信号D2001に基づいて、硬判定結果D2000のシンドロームの計算を行う。具体的には、シンドローム判定器20011乃至20013は、検査行列Hの行に対応する硬判定結果D2000の排他的論理和(EXOR)を計算し、その結果得られる値が、すべての行において0であるかどうかを判定する。シンドローム判定器20011乃至20013は、その判定結果D2002を制御部2003に供給する。
なお、シンドローム判定部2001によるシンドロームの演算と計算部1102による第1の演算は、同時に行われるようにしてもよい。
制御部2003は、シンドローム判定部2000から供給される判定結果D2002に応じて、復号を終了する。具体的には、制御部2003は、判定結果D2002に応じて、復号途中結果格納用メモリ2002に、復号途中結果D415または復号結果D1105を復号結果として出力させる制御信号D2003を供給する。復号途中結果格納用メモリ2002は、制御部2003からの制御信号D2003に基づいて、既に格納してある復号途中結果D415または復号結果D1105を復号結果として出力するか、または復号途中結果D415をサイクリックシフト回路2000に供給する。
図35は、図34の復号装置1000の復号処理を説明するフローチャートである。この処理は、例えば、受信用メモリ416に復号すべき受信データD416が格納されたとき、開始される。
ステップS71において、制御部2003は、カウント値Kを0に設定し、ステップS72に進む。ステップS72において、シンドローム判定部2001(のシンドローム判定器20011乃至20013)は、サイクリックシフト回路2000から供給される硬判定結果D2000のシンドロームを演算する。なお、最初のステップS72では、シンドローム判定部2001には、受信データD417がサイクリックシフトされた結果の硬判定値である硬判定結果D2000が供給され、シンドローム判定部2001は、受信データD417の硬判定結果D2000のシンドロームを演算する。
ステップS72の処理後は、ステップS73に進み、制御部2003は、シンドローム判定部2001から供給される判定結果D2002に基づいて、シンドロームが0であるかどうかを判定し、シンドロームが0ではないと判定された場合、ステップS74に進む。
ステップS74において、制御部2003は、カウント値Kが所定の回数N以上であるかどうかを判定し、所定の回数N以上ではないと判定した場合、ステップS75に進む。
ステップS75乃至S84の処理は、図27のステップS49乃至S58の処理と同様であるので、説明は省略する。
ステップS84の処理後は、ステップS85に進み、制御部2003は、カウント値Kを1つだけインクリメントし、ステップS72に戻る。
ステップS73において、シンドロームが0であると判定された場合、ステップS86に進み、制御部2003は復号を終了し、復号途中結果格納用メモリ2002に格納されている復号途中結果D415または復号結果D1105を復号結果として出力する。なお、最初のステップS71でシンドロームが0であると判定された場合、復号が1度も行われず、計算部415に供給される受信データD417(復号結果D1105)が、復号途中結果格納用メモリ2002を介して、そのまま復号結果として出力される。
また、ステップS74において、カウント値Kが所定の回数N以上であると判定された場合にも、ステップS86に進み、制御部2003は復号を終了し、復号途中結果格納用メモリ2002に格納されている復号途中結果D415を復号結果として出力する。
以上のように、図35の復号処理では、シンドロームが0になる場合、またはカウント値Kが所定の回数N以上になる場合(N回復号が行われた場合)、復号が終了される。これにより、シンドロームが0、即ち誤り数が0である復号途中結果D415がさらに復号されて、誤り数が再び増加することを防止することができる。また、受信データD416のSN(Signal Noise)比が大きい場合、復号性能を劣化させずに、復号回数を抑えることができるので、復号装置1000の消費電力を低減することができる。
なお、シンドローム判定部2001の回路規模は一般的に小さく、シンドローム判定部2001を設けることによる復号装置1000の回路規模の増加は無視することができる程度に小さい。
また、図34の復号装置1000では、図23の復号装置1000にシンドローム判定部2001が設けられたが、第1の演算と第2の演算によって復号を行う装置であれば、どのような装置にシンドローム判定部2001が設けられるようにしてもよい。例えば、図17の復号装置400、もしくは図28または図32の復号装置1000にシンドローム判定部2001が設けられるようにしてもよい。
本実施の形態では、復号途中結果格納メモリ1103は、4つの復号途中結果格納用RAM1202乃至1205から構成されるようにしたが、復号途中結果格納用RAM1202乃至1205の数は3つ以上であればどのような数であってもよい。復号途中結果格納用RAM1202乃至1205の数が増加すればするほど、復号装置の動作速度を速めることができる。
また、図23、図28、および図32の復号装置1000では、第1の演算と第2の演算を繰り返し行うことにより復号を行ったが、チェックノード演算とバリアブルノード演算を繰り返し行うことにより復号を行うようにすることもできる。
なお、図24の復号途中結果格納用RAM1202乃至1205、図29の受信データ格納用メモリ1502と1503、図30の復号途中結果格納用メモリ1602と1603、図33の復号硬判定結果格納用メモリ1802と1803、並びに復号軟判定結果格納用メモリ1804は、例えば、RAMの物理的なビットが足りない場合には、複数のRAMを用いて同じ制御信号を与えることで、論理的に1つのRAMとみなすことができる。
上述の場合には、説明を簡単にするために、Pが6の場合、即ち、検査行列Hを構成する構成行列の行数および列数が6の場合を例に挙げたが、構成行列の行数および列数Pは必ずしも6である必要はなく、検査行列Hによって異なる値を取ることもあり得る。例えば、Pは360や392であってもよい。
また、本実施の形態では、符号長108、符号化率2/3のLDPC符号を用いたが、LDPC符号の符号長や符号化率は、どのような値であってもよい。例えば、構成行列の行数および列数Pが6の場合、枝総数が6以下であれば、どのような符号長、符号化率のLDPC符号でも、制御信号を代えるだけで、復号装置1000を用いて復号可能である。
さらに、構成行列の行数および列数Pが所定の値で、枝の総数がある値以下、という条件を満たす、あるLDPC符号の復号装置は、その条件を満たす、任意の符号長で、任意の符号化率のLDPC符号を復号することができる。
検査行列Hが、構成行列の行数および列数Pの倍数でない場合は、検査行列Hの端数の外側にすべて0(all 0)の成分を付けてPの倍数とみなして適用することができる場合がある。
上述した復号装置1000では、計算部1102の計算器11021乃至11023の数をP/2(=3)としたが、計算器11021乃至11023の数はP未満であればよい。なお、Pが大きな素数である場合においても、計算器11021乃至11023の数をPの整数部の1に近い整数個にすればよい。
以上のように、P×Pの単位行列、そのコンポーネントの1のうち1個以上が0になった準単位行列、単位行列もしくは準単位行列をサイクリックシフトしたシフト行列、単位行列、準単位行列、もしくはシフト行列の複数の和である和行列、P×Pの0行列の組み合わせで表すことができる検査行列Hを持つLDPC符号の復号を、第1と第2の演算をP個またはN個(NはP未満の正の整数)同時に行うアーキテクチャ(architecture)を採用することにより、第1と第2の演算を、P個またはN個同時に行うことで動作周波数を実現可能な範囲に抑えることができ、多数の繰り返し復号を行うことを可能にしつつ、メモリ(FIFOやRAM)への書き込みと読み出し時に、異なるアドレスへの同時アクセスが起きることを防止することができる。
また、第1または第2の演算をN個同時に行うことにより、第1と第2の演算をP個同時に行う場合に比べて、第1の演算を行う計算部1102を構成する計算器11021乃至11023または第2の演算を行う計算部415を構成する計算器4151乃至4156の数を削減し、回路規模を削減することができる。
さらに、シンドローム判定部2000が、第2の演算の結果得られる復号途中結果の硬判定値である硬判定結果D2000のシンドロームの演算を行い、制御部2003が、そのシンドロームに基づいて、復号を終了させるので、復号の性能を向上させ、さらに消費電力を削減することができる。
一般的に、LDPC符号は符号長が数千から数万と大きいため、Pの値も数百の大きさを持つものが使われる。その場合には、更に本発明に係る復号装置を用いる効果は大きくなる。
また、本発明に係る復号装置は、サムプロダクトアルゴリズムを忠実に実装するものであるため、メッセージの量子化以外の復号損失が起きることはない。
以上の観点から、本発明に係る復号装置を用いることで、高性能な復号が可能になる。
なお、上述したLDPC符号を復号する復号装置は、例えば、(ディジタル)衛星放送を受信するチューナなどに適用することができる。
LDPC符号の検査行列Hを説明する図である。 パリティ部が下三角行列になっている検査行列Hを示す図である。 LDPC符号の復号手順を説明するフローチャートである。 メッセージの流れを説明する図である。 LDPC符号の検査行列Hの例を示す図である。 検査行列Hのタナーグラフを示す図である。 バリアブルノードを示す図である。 チェックノードを示す図である。 LDPC符号の検査行列Hの例を示す図である。 ノード演算を1つずつ行うLDPC符号の復号装置の構成例を示すブロック図である。 図10のチェックノード計算器の構成例を示すブロック図である。 図10のバリアブルノード計算器の構成例を示すブロック図である。 ノード演算を全て同時に行うLDPC符号の復号装置の構成例を示すブロック図である。 図13のチェックノード計算器の構成例を示すブロック図である。 図13のバリアブルノード計算器の構成例を示すブロック図である。 6×6単位に分割した検査行列Hを示す図である。 ノード演算を6個同時に行う復号装置の構成例を示すブロック図である。 図17のチェックノード計算器の構成例を示すブロック図である。 図17のバリアブルノード計算器の構成例を示すブロック図である。 図17の復号途中結果格納用メモリの構成例を示すブロック図である。 図17の復号途中結果格納用RAMの動作を説明するタイミングチャートである。 復号途中結果に対応する構成行列の位置を示す図である。 本発明を適用した復号装置の第1実施の形態の構成例を示すブロック図である。 図23の復号途中結果格納メモリの構成例を示すブロック図である。 図24の復号途中結果格納用RAMの動作を説明するタイミングチャートである。 復号途中結果に対応する構成行列の位置を示す図である。 図23の復号装置の復号処理を説明するフローチャートである。 本発明を適用した復号装置の第2実施の形態の構成例を示すブロック図である。 図28の受信用メモリの構成例を示すブロック図である。 図28の復号途中結果格納用メモリの構成例を示すブロック図である。 受信用メモリと復号途中結果格納用メモリの動作を説明するタイミングチャートである。 本発明を適用した復号装置の第3実施の形態の構成例を示すブロック図である。 図32の復号途中結果格納用メモリの構成例を示すブロック図である。 本発明を適用した復号装置の第4実施の形態の構成例を示すブロック図である。 図34の復号装置の復号処理を説明するフローチャートである。
符号の説明
414 サイクリックシフト回路, 415 計算部, 416 受信用メモリ, 1000 復号装置, 1101 サイクリックシフト回路, 1102 計算部, 1103,1104 復号途中結果格納用メモリ, 1105 制御部, 1202乃至1205 復号途中結果格納用RAM, 1499 制御部, 1500 受信用メモリ, 1600 復号途中結果格納用メモリ, 1502,1503 受信データ格納用メモリ, 1602,1603 復号途中結果格納用メモリ, 1799 制御部, 1800 復号途中結果格納用メモリ, 1801,1802 復号硬判定結果格納用メモリ, 1803 復号軟判定結果格納用メモリ, 2000 サイクリックシフト回路, 2001 シンドローム判定部, 2002 復号途中結果格納用メモリ, 2003 制御部

Claims (7)

  1. LDPC(Low Density Parity Check)符号の復号装置であって、
    前記LDPC符号の復号のためのチェックノードの演算とバリアブルノードの演算の一部である第1の演算を行う第1の演算手段と、
    前記LDPC符号の復号のための前記バリアブルノードの演算の他の一部である第2の演算を行う第2の演算手段と、
    前記第2の演算手段により得られる演算結果のシンドロームを演算するシンドローム演算手段と、
    前記第1と第2の演算手段を制御する制御手段と
    を備え、
    前記第1と第2の演算手段は、前記第1と第2の演算を繰り返し行うことにより、前記LDPC符号の復号を行い、
    前記制御手段は、前記シンドローム演算手段により得られるシンドロームに基づいて、前記復号を終了させる
    ことを特徴とする復号装置。
  2. 前記シンドローム演算手段は、前記第1の演算手段による第1の演算と同時に、前記シンドロームを演算する
    ことを特徴とする請求項1に記載の復号装置。
  3. 前記シンドローム演算手段は、前記LDPC符号の受信情報のシンドロームも演算し、
    前記制御手段は、さらに、前記シンドローム演算手段により得られる前記受信情報のシンドロームに基づいて、前記第1と第2の演算手段に前記第1と第2の演算を行わせずに、前記受信情報を前記LDPC符号の復号結果とする
    ことを特徴とする請求項1に記載の復号装置。
  4. 前記受信情報を記憶する受信情報記憶手段と、
    前記第2の演算手段により得られる演算結果を記憶する演算結果記憶手段と
    をさらに備える
    ことを特徴とする請求項3に記載の復号装置。
  5. 前記制御手段は、前記シンドローム演算手段により得られる前記受信情報のシンドロームに基づいて、前記受信情報記憶手段に記憶されている前記受信情報を、前記演算結果記憶手段に記憶させる
    ことを特徴とする請求項4に記載の復号装置。
  6. 前記制御手段は、前記受信情報を、前記第2の演算手段を介して前記演算結果記憶手段に記憶させる
    ことを特徴とする請求項5に記載の復号装置。
  7. LDPC(Low Density Parity Check)符号の復号装置の復号方法であって、
    前記LDPC符号の復号のためのチェックノードの演算とバリアブルノードの演算の一部である第1の演算を行う第1の演算ステップと、
    前記LDPC符号の復号のための前記バリアブルノードの演算の他の一部である第2の演算を行う第2の演算ステップと、
    前記第2の演算ステップの処理により得られる演算結果のシンドロームを演算するシンドローム演算ステップと、
    前記第1と第2の演算ステップの処理を制御する制御ステップと
    を含み、
    前記第1と第2の演算ステップの処理は、前記第1と第2の演算を繰り返し行うことにより、前記LDPC符号の復号を行い、
    前記制御ステップの処理は、前記シンドローム演算ステップの処理により得られるシンドロームに基づいて、前記復号を終了させる
    ことを特徴とする復号方法。
JP2005125964A 2005-04-25 2005-04-25 復号装置および復号方法 Expired - Fee Related JP4729964B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005125964A JP4729964B2 (ja) 2005-04-25 2005-04-25 復号装置および復号方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005125964A JP4729964B2 (ja) 2005-04-25 2005-04-25 復号装置および復号方法

Publications (2)

Publication Number Publication Date
JP2006304131A true JP2006304131A (ja) 2006-11-02
JP4729964B2 JP4729964B2 (ja) 2011-07-20

Family

ID=37471859

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005125964A Expired - Fee Related JP4729964B2 (ja) 2005-04-25 2005-04-25 復号装置および復号方法

Country Status (1)

Country Link
JP (1) JP4729964B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008278191A (ja) * 2007-04-27 2008-11-13 Sony Corp 復号装置および復号方法
CN110277999A (zh) * 2018-03-16 2019-09-24 爱思开海力士有限公司 Ldpc解码装置、包括其的存储器系统及其方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004364233A (ja) * 2003-05-13 2004-12-24 Sony Corp 復号装置および復号方法、並びにプログラム
JP2005065066A (ja) * 2003-08-19 2005-03-10 Sony Corp 復号装置および復号方法、並びにプログラム
JP2005065065A (ja) * 2003-08-19 2005-03-10 Sony Corp 復号装置および復号方法、並びにプログラム
JP2006304129A (ja) * 2005-04-25 2006-11-02 Sony Corp 復号装置および復号方法
JP2006304130A (ja) * 2005-04-25 2006-11-02 Sony Corp 復号装置および復号方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004364233A (ja) * 2003-05-13 2004-12-24 Sony Corp 復号装置および復号方法、並びにプログラム
JP2005065066A (ja) * 2003-08-19 2005-03-10 Sony Corp 復号装置および復号方法、並びにプログラム
JP2005065065A (ja) * 2003-08-19 2005-03-10 Sony Corp 復号装置および復号方法、並びにプログラム
JP2006304129A (ja) * 2005-04-25 2006-11-02 Sony Corp 復号装置および復号方法
JP2006304130A (ja) * 2005-04-25 2006-11-02 Sony Corp 復号装置および復号方法
WO2006115164A1 (ja) * 2005-04-25 2006-11-02 Sony Corporation 復号装置および復号方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008278191A (ja) * 2007-04-27 2008-11-13 Sony Corp 復号装置および復号方法
CN110277999A (zh) * 2018-03-16 2019-09-24 爱思开海力士有限公司 Ldpc解码装置、包括其的存储器系统及其方法
CN110277999B (zh) * 2018-03-16 2023-03-14 爱思开海力士有限公司 Ldpc解码装置、包括其的存储器系统及其方法

Also Published As

Publication number Publication date
JP4729964B2 (ja) 2011-07-20

Similar Documents

Publication Publication Date Title
JP4622654B2 (ja) 復号装置および復号方法
KR101090001B1 (ko) 복호 장치 및 복호 방법, 및 기록 매체
JP4224777B2 (ja) 復号方法および復号装置、並びにプログラム
JP4595650B2 (ja) 復号装置および復号方法
JP4487213B2 (ja) 復号装置および方法、並びにプログラム
JP4807063B2 (ja) 復号装置、制御方法、およびプログラム
JP4487212B2 (ja) 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
JP4293172B2 (ja) 復号装置および復号方法
JP2007036776A (ja) 復号装置および復号方法
JP4285148B2 (ja) 復号装置および復号方法、並びにプログラム
JP4729964B2 (ja) 復号装置および復号方法
JP4730592B2 (ja) 復号装置および復号方法
JP4822071B2 (ja) 復号装置および復号方法
JP4284600B2 (ja) 復号装置
JP4288582B2 (ja) 復号装置および復号方法、並びにプログラム
JP4821724B2 (ja) 復号装置および復号方法
JP2007081602A (ja) 復号装置および復号方法
Zhu et al. Aggregated circulant matrix based LDPC codes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100513

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100705

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110404

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

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees