JP2010041628A - 符号化装置、符号化方法および符号化プログラム - Google Patents
符号化装置、符号化方法および符号化プログラム Download PDFInfo
- Publication number
- JP2010041628A JP2010041628A JP2008204846A JP2008204846A JP2010041628A JP 2010041628 A JP2010041628 A JP 2010041628A JP 2008204846 A JP2008204846 A JP 2008204846A JP 2008204846 A JP2008204846 A JP 2008204846A JP 2010041628 A JP2010041628 A JP 2010041628A
- Authority
- JP
- Japan
- Prior art keywords
- data
- intermediate data
- parity
- partial
- storage unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
【課題】計算量を削減することができる符号化装置を提供する。
【解決手段】符号化装置であって、メモリ12と、データをc個のシンボルずつの部分データに区切り、部分データと要素が全て零となる全零以外の係数とから、全ての要素の組み合わせの係数について中間データを生成し、メモリ12に記憶する中間データ生成部11と、線形符号の生成行列のパリティの位置にあたる部分をc行ごとの部分行列に分割し、部分行列の列の値と同一の要素の組み合わせの係数に基づいて生成される中間データをメモリ12から読み出して、パリティを生成するパリティ生成部13とを備え、中間データ生成部11は、全ての部分データに対して中間データを生成してメモリ12に記憶し、パリティ生成部13は、全ての部分行列に対して中間データをメモリ12から読み出して、列ごとに全ての読み出された中間データを累積することでそれぞれの列に対応するパリティを生成する。
【選択図】図1
【解決手段】符号化装置であって、メモリ12と、データをc個のシンボルずつの部分データに区切り、部分データと要素が全て零となる全零以外の係数とから、全ての要素の組み合わせの係数について中間データを生成し、メモリ12に記憶する中間データ生成部11と、線形符号の生成行列のパリティの位置にあたる部分をc行ごとの部分行列に分割し、部分行列の列の値と同一の要素の組み合わせの係数に基づいて生成される中間データをメモリ12から読み出して、パリティを生成するパリティ生成部13とを備え、中間データ生成部11は、全ての部分データに対して中間データを生成してメモリ12に記憶し、パリティ生成部13は、全ての部分行列に対して中間データをメモリ12から読み出して、列ごとに全ての読み出された中間データを累積することでそれぞれの列に対応するパリティを生成する。
【選択図】図1
Description
本発明は、LDPC(Low Density Parity Check)符号等の線形符号の符号化方法および符号化装置に関するものである。
近年、訂正能力に優れた符号として、LDPC符号が有力視されている(例えば、非特許文献1〜3)。
IPネットワークで、映像や音声のストリーミング伝送を行なう場合、リアルタイム性を維持するためにロストしたパケットを再送しないUDP(User Datagram Protocol)で送るケースがある。そのような場合に、伝送経路に無線で伝送する区間があれば、ロストするパケットへの対策が必要になる。この対策としては、パケットをインターリーブして誤り訂正符号化することが考えられる。使用する誤り訂正符号としては、インターリーブ長を長くしやすいLDPC符号も有力な候補である。
例えば、図6に示すように、p×kビットのデータをpビットずつのブロックとし、各ブロックから1ビットずつ得たkビットのデータを符号化して、(n−k)ビットのパリティをつけていくと、トータルでp×(n−k)ビットのパリティが付加されることになり、これらのパリティで(n−k)ブロックとなる。伝送する時には、1個のブロックを1個のパケットのデータとして、それぞれヘッダ情報(UDPヘッダ/IPヘッダなど)を付加し、IPパケットを構成する。インターリーブは、1個のブロックから1ビットではなく複数のビットを集めて1個の符号語に符号化しても構わないし、複数のブロックから1ビットずつ集めて符号化しても構わない。
ここで、データは変形せずに、パリティを付加するだけの組織符号(Systematic code)として説明している。組織符号は、データが変換される非組織符号と比較すると、消失したパケットを訂正復元できなかった場合にも、受信できたパケットはそのまま使えるという利点がある。
伝送後に、n個のパケットが揃わなくても、失われたパケットのデータを消失として、p個の符号語の全てに誤り訂正処理を行なって、1ビットずつ復元していけば、元のブロックを復元することが可能である。IPパケットはイーサネット(登録商標)ではパケット長の最大値が1,500バイトとなっており、IPヘッダ長は標準で20バイト、UDPヘッダ長は8バイトであるので、データは最大1,472バイト=11,776ビットまで使用可能である。ストリーミング伝送を行なう場合は、1個のパケットに載せるデータはできるだけ多くし、ヘッダにより増加する伝送レートをできるだけ少なくして効率よく伝送することが要求されるので、1個のIPパケットに載せるデータは10,000ビット程度にはなると考えられる。1個のIPパケットから1ビットずつ集めてインターリーブするものとして、IPパケットを符号の1個のシンボルとしてみなすと、シンボル同士の加算は、10,000ビット程度の排他的論理和(exclusive−or)を実行することになる。
以下に、LDPC符号の符号化について、説明する。
LDPC符号は、線形符号(Linear Code)の1種であるが、線形符号は、k行n列の生成行列Gと、G・HT=0となる(n−k)行n列の検査行列Hにより、符号の構造を定義できる。H・GT=0と記述しても良い。
また、LDPC符号の「LDPC」は、Low density parity checkであり、検査行列Hの要素のうち非零の要素が非常に少ない(低密度である)という意味である。つまり、非零の要素が低密度であるとは、複数の要素のうち、零の要素の数の割合が多いことをいう。非零の要素の割合が、2〜3%程度の符号もあるが、符号長が大きい符号では1%を下回るのが普通である。しかし、生成行列Gは、非零の要素が低密度ではない。符号長がnで、情報シンボル数がkの組織符号では、k行n列の生成行列Gの左からk列は単位行列であるが、残りの(n−k)列については、符号にもよるが大体1/2程度の要素が非零である。即ちk×n個の要素のうち、k+(k×(n−k)/2)個の要素が非零である。
R. G. Gallager, "Low density parity check codes", in Research Monograph series. Cambridge, MIT Press (1963) D. J. MacKay, "Good error-correcting codes based on very sparse matrices", IEEE Trans. Inform. Theory, vol.45, pp.399-431 (1999) R. M. Tanner, "A recursive approach to low complexity codes", IEEE Trans. Inform. Theory, vol.27, pp.533-547 (1981)
R. G. Gallager, "Low density parity check codes", in Research Monograph series. Cambridge, MIT Press (1963) D. J. MacKay, "Good error-correcting codes based on very sparse matrices", IEEE Trans. Inform. Theory, vol.45, pp.399-431 (1999) R. M. Tanner, "A recursive approach to low complexity codes", IEEE Trans. Inform. Theory, vol.27, pp.533-547 (1981)
しかしながら、従来の符号化の処理では、計算量が膨大になるという課題がある。
つまり、実際の符号化の処理は、データ(ベクトル)D=(d0,d1,…,d(k-1))に、生成行列Gをかけて、符号語(ベクトル)C=(c0,c1,…,c(n-1))=D・Gを得ることによりなされる。この構成では、要素がガロア体GF(2)の要素であったとしても、計算量はおおよそ(n−k)×(k/2−1)回のシンボルの加算が必要である。1個のシンボルの加算が10,000ビット程度の排他的論理和(exclusive−or)処理であり、膨大な計算量となるため、符号化の処理時間や処理のリソースが要求される。
そこで、本発明は、上記課題を解決するために、計算量を削減することができる符号化装置を提供することを目的とする。
上記目的を達成するために、本発明に係る符号化装置は、K個のシンボルのデータを、パリティを含む符号長がNでありデータ数がKである線形符号に符号化する符号化装置であって、データを記憶する記憶部と、前記K個のシンボルのデータをc個のシンボルずつに、k個(kは、K/cを切り上げた整数)の部分データに区切り、(i+1)番目(iは、0から(k−1)までの整数)の前記部分データ(d0,d1,…,d(c-1))と要素が全て零となる全零以外の係数(a0,a1,…,a(c-1))とから、全ての要素の組み合わせの前記係数について中間データ(a0・d0+a1・d1+…+a(c-1)・d(c-1))を生成し、前記中間データを前記記憶部に記憶する中間データ生成部と、前記線形符号の生成行列のパリティの位置にあたる部分をc行ごとの部分行列に分割し、(i+1)番目の前記部分行列の(j+1)番目(jは、0から(N−K−1)までの整数)の列の値と同一の要素の組み合わせの前記係数に基づいて生成される前記中間データを前記記憶部から読み出して、全ての列についての前記中間データからそれぞれの列に対応するパリティを生成するパリティ生成部とを備え、前記中間データ生成部は、全ての前記部分データに対して前記中間データを生成して前記記憶部に記憶し、前記パリティ生成部は、全ての前記部分行列に対して前記中間データを前記記憶部から読み出して、前記列ごとに全ての前記読み出された中間データを累積することでそれぞれの列に対応するパリティを生成する。
これによれば、データ及び生成行列を複数のグループに区切り、そのグループ単位で中間データを生成し、生成された中間データからパリティを生成する。これにより、同じ計算で生成される中間データが複数ある場合は、1回の計算のみで当該中間データを生成することができるので、重複して計算が行われるのを避けることができ、計算量の削減を図ることができる。
また、前記中間データ生成部は、中間データ(a0・d0+a1・d1+…+a(y-1)・d(y-1))(y=1,2,…,(c−1))が生成されており、ayが零でない場合には、当該中間データにay・dyを加算することで、中間データ(a0・d0+a1・d1+…+a(y-1)・d(y-1)+ay・dy)を生成することにしてもよい。
これによれば、既に計算され生成された中間データを利用して、新たに中間データを計算し生成することができるので、計算量の削減を図ることができる。
また、前記中間データ生成部は、(i+1)番目の部分データによる中間データをi番目の部分データによる中間データに上書きすることで、(i+1)番目の部分データによる中間データを前記記憶部に記憶することにしてもよい。
これによれば、記憶部の中間データ領域の必要量は、データ全体分の中間データの容量ではなく、1個の部分データによる中間データの容量で済ませることが可能となるため、中間データ領域を大幅に削減することが可能となる。
また、本発明は、このような符号化装置として実現できるだけでなく、その装置を構成する処理部をステップとする方法として実現したりすることができる。さらに、本発明は、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを記録したコンピュータ読み取り可能なCD−ROMなどの記録媒体として実現したり、そのプログラムを示す情報、データ又は信号として実現したりすることもできる。そして、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。
以上のように、本発明によれば、データ及び生成行列をグループ単位にまとめて中間データ生成し、当該中間データからパリティを生成することにより、計算量の削減を図ることができる。
以下に、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態1における符号化装置10の機能的な構成の一例を示すブロック図である。
図1は、本発明の実施の形態1における符号化装置10の機能的な構成の一例を示すブロック図である。
図1に示すように、実施の形態1の符号化装置10は、中間データ生成部11、メモリ12、及びパリティ生成部13を備えている。符号化装置10は、CPU(Central Processing Unit)等を備え、入力されたkシンボルのデータを符号化して、nシンボルの符号語を出力するコンピュータである。
ここで、メモリ12は、入力されるデータ、パリティ、及び後述する中間データテーブル12aなどを記憶している不揮発性メモリ等である。
中間データ生成部11は、入力されたデータを複数の部分データに区切り、全ての部分データに対して中間データを生成し、中間データをメモリ12に記憶する。
具体的には、中間データ生成部11は、k個のシンボルのデータをc個のシンボルずつに、x個(xは、k/cを切り上げた整数)の部分データに区切り、(i+1)番目(iは、0から(x−1)までの整数)の部分データ(d0,d1,…,d(c-1))と要素が全て零となる全零以外の係数(m0,m1,…,m(c-1))とから、全ての要素の組み合わせの係数について中間データ(m0・d0+m1・d1+…+m(c-1)・d(c-1))を生成する。また、中間データ生成部11は、生成された中間データをメモリ12に記憶されている中間データテーブル12aに書き込み、中間データテーブル12aを更新していく。
図2A及び図2Bは、中間データテーブル12aの一例を示す図である。
図2Aに示すように、中間データテーブル12aは、部分データ、係数、及び中間データなどからなるテーブルであり、係数により、対応する中間データを参照できる。
部分データは、入力されたk個のシンボルのデータがc個のシンボルずつに区切られたデータの集まりである。例えば、入力されたデータD=(d0,d1,…,d(k-1))に対し、部分データD0=(d0,d1,…,d(c-1))である。なお、ここでは、データDの各要素は、2進数の値であり、0か1である。
係数は、c個の要素で構成された、全零以外の全ての要素の組み合わせの係数(m0,m1,…,m(c-1))である。なお、ここでは、係数の各要素は、2進数の値であり、0か1である。例えば、cが4の場合、係数は(1,0,0,0)、(0,1,0,0)、…、(1,1,1,1)の15通りである。但し、1の要素が1個の組み合わせである(1,0、0、0)、(0,1,0,0)、(0,0,1,0)、(0,0,0,1)については、中間データを計算する必要がないので、中間データテーブル12aから省略することもできる。
中間データは、部分データと係数に対応して算出されるデータである。具体的には、データD0=(d0,d1,…,d(c-1))及び係数(m0,m1,…,m(c-1))に対して、中間データは、m0・d0+m1・d1+…+m(c-1)・d(c-1)で算出される。
図1に戻り、パリティ生成部13は、線形符号の生成行列のパリティの位置にあたる部分を複数の部分行列に分割し、全ての部分行列に対して中間データをメモリ12から読み出して、部分行列の列ごとに全ての読み出された中間データを累積することでそれぞれの列に対応するパリティを計算し、生成する。
具体的には、パリティ生成部13は、線形符号の生成行列のパリティの位置にあたる部分をc行ごとの部分行列に分割し、(i+1)番目の部分行列の(j+1)番目(jは、0から(n−k−1)までの整数)の列の値と同一の要素の組み合わせの係数に基づいて生成された中間データをメモリ12から読み出して、全ての列についての中間データからそれぞれの列に対応するパリティを計算し、生成する。
なお、部分データD1による中間データの生成を、パリティの計算において、部分データD0による中間データを用いた計算が終了した後に行なうように処理すれば、部分データD1による中間データを、部分データD0による中間データに上書きして中間データテーブルに記憶させることができる。部分データD(i+1)による中間データと部分データDiによる中間データに関しても同様であるので、中間データ領域の必要量は、データ全体分の中間データの容量ではなく、1個の部分データによる中間データの容量で済ませることが可能となる。
つまり、中間データ生成部11は、(i+1)番目の部分データD(i+1)による中間データをi番目の部分データDiによる中間データに上書きすることで、(i+1)番目の部分データD(i+1)による中間データをメモリ12に記憶する。そして、この場合には、図2Bに示すように、中間データテーブル12aは、係数及び中間データなどからなるテーブルであればよく、係数により、対応する中間データを参照できる。
図3は、符号化装置10が実行する符号化の処理を示すフローチャートである。
以下の処理が、iが0から(x−1)まで繰り返される(S101、S111)。
まず、中間データ生成部11は、入力されたデータを複数の部分データに区切ることで、(i+1)番目の部分データを選択する(S102)。
そして、中間データ生成部11は、全ての部分データに対して(i+1)番目の中間データを生成し、生成された中間データをメモリ12の中間データテーブル12aに書き込み、中間データテーブル12aを更新していくことで、当該中間データをメモリ12に記憶する(S104)。
次に、パリティ生成部13は、線形符号の生成行列のパリティの位置にあたる部分をc行ずつ区切った場合に、(i+1)番目となる部分行列の情報を選択する(S106)。
そして、パリティ生成部13は、部分行列の各列に対応する中間データをメモリ12から読み出す(S108)。具体的には、パリティ生成部13は、部分行列の列の値をもとにして、中間データテーブル12aに記憶されている中間データを、読み出す。
そして、パリティ生成部13は、部分行列の全ての列について読み出された中間データをそれぞれ累積することで、各列に対応するパリティを計算し生成する(S110)。
このように、iが0から(x−1)まで繰り返す(S101、S111)ことにより、パリティが生成される。
なお、S104の処理で生成された中間データを記憶させる時に、直前のループで記憶させた領域に上書きして記憶させれば、中間データ領域を大幅に削減することが可能となる。
図4A〜図4Cは、符号化装置10の符号化処理の一例を具体的に説明する図である。
符号の生成行列Gは図4Aに示すようにk行n列の行列であり、符号語のデータ部を生成する左から1列目からk列目の部分(以下、データ位置部分と呼ぶ)は単位行列であり、符号語のパリティ部を生成する左から(k+1)列目からn列目の部分(以下、パリティ位置部分と呼ぶ)にあるu行v列の要素はg(u-1),(v-k-1)で表わしている。
本発明では、図4Bに示すように、パリティ位置部分をc行ずつに区切った部分行列を単位として処理を繰り返すことを特徴としている。部分行列は、x=ceil(k/c)個になる。即ち、xはk/cを切り上げた値であり、kがcで割り切れればx=(k/c)、kがcで割り切れなければx=int(k/c)+1である。なお、int関数は、与えられた数値以下の整数で一番大きいものを返す関数である。
図4Cにこの部分行列の詳細を示す。上から(i+1)個目の部分行列Gi=(Qi,0,Qi,1,…,Qi,(n-k-1))の、(j+1)番目の列はQi,j=(gc×i,j,gc×i+1,j,…,gc×i+(c-1),j)Tとなる。記号Tは、転置行列を表わす。
中間データ生成部11は、データD=(d0,d1,…,d(k-1))をcシンボルずつに区切った部分データDi=(dc×i,dc×i+1,…,dc×i+(c-1))から、全零以外の全ての係数(m0,m1,…,m(c-1))について中間データMi[m0,m1,…,m(c-1)]=m0・dc×i+m1・dc×i+1+…+m(c-1)・dc×i+(c-1)を生成し、メモリ12の中間データ領域の中間データテーブル12aに書込む。
パリティ生成部13は、部分データDiに対応する部分行列Giのそれぞれの列データに基づいて計算されている中間データMi[Qi,j T]を、メモリ12の中間データ領域の中間データテーブル12aから読み出す。また、メモリ12のパリティ領域からパリティpjを読み出して、中間データMi[Qi,j T]を加算し、加算した結果をパリティ領域に書き戻す。これをj=0,1,…,(n−k−1)について実行する。
上記の、中間データ生成部11による中間データMiの生成と、パリティ生成部13によるパリティpj(j=0,1,…,(n−k−1))の計算を、i=0,1,…,(x−1)について繰り返し実行する。
これらの計算の間、必要に応じて、入力されたデータはメモリ12のデータ領域で保持しておき、パリティ計算のタイミングと合わせて、符号語としてデータとパリティを出力する。
従来のように生成行列GとデータDを乗算して符号化する構成では、要素がガロア体GF(2)の要素であったとしても、計算量はおおよそ(n−k)×(k/2−1)回のシンボルの加算が必要であるとしたが、本発明では、パリティ生成部13での計算量は(n−k)×(x−1)回のシンボルの加算に減らしており、中間データ生成部11で(2c−1)個の中間データをx回計算するために必要なシンボルの加算回数が(n−k)×k×(c−2)/2/cより少なければ、符号化装置全体での計算量を削減することが可能である。LDPC符号は、通常データシンボル数kは数百〜数千以上のオーダであり、パリティシンボル数(n−k)も数百以上のオーダであるので、cが3〜10程度の値であれば、計算量削減が可能である。
このように、データ及び生成行列を複数のグループに区切り、そのグループ単位で中間データを生成し、生成された中間データからパリティを生成する。これにより、同じ計算で生成される中間データが複数ある場合は、1回の計算のみで当該中間データを生成することができるので、重複して計算が行われるのを避けることができ、計算量の削減を図ることができる。
なお、中間データ生成部11は、iの値が変わる都度に、変わる前の処理で生成された中間データを、変わった後の処理で生成された中間データで上書きすることが可能である。
また、全零の係数から生成される中間データについての領域は不要としているが、それだけでなく、1個の要素が‘1’で残りの要素が‘0’である係数により生成される中間データは、それと全く同じ値がデータ領域に存在するので、これらを記憶する領域も省略しても良い。
なお、初期値の処理方法は、符号化開始時にメモリ12のパリティ領域に全て0を書込むか、パリティの最初の項の計算時にメモリ12に書込むのみの処理を行なうなどいくつか考えられるが、いずれであっても上記の加算回数の概算には影響しない。
なお、生成行列Gの情報は、パリティ生成部13が保持する構成としているが、メモリ12に生成行列Gの情報のための領域を設けて、パリティ生成部13がその領域にアクセスするという構成であっても、本発明は適用可能である。
また、生成行列Gは、符号ごとに固有の行列であるので、使われている符号に合わせた生成行列Gの情報を選択するもしくは入力する機能を備えれば、複数の符号を扱う符号化装置10を構成できることは明らかである。
また、cが3〜10程度の値としたが、上限とした値10はnやk、符号の符号化率の値によって変わるものである。
(実施の形態2)
次に、本発明の実施の形態2について説明する。上記実施の形態1では、中間データ生成部11は、全零以外の全ての要素の組み合わせの係数について中間データを生成することとしたが、本実施の形態2では、中間データ生成部11は、既に生成された中間データを利用して、新たに中間データを生成する。
次に、本発明の実施の形態2について説明する。上記実施の形態1では、中間データ生成部11は、全零以外の全ての要素の組み合わせの係数について中間データを生成することとしたが、本実施の形態2では、中間データ生成部11は、既に生成された中間データを利用して、新たに中間データを生成する。
図5は、本発明の実施の形態2における中間データ生成部11の構成の一例を示すブロック図である。図5に示すように、中間データ生成部11は、加算部21、j−ビットカウンタ22、及び選択部23を備えている。
本実施の形態2では、中間データ生成部11は、中間データ(b0・d0+b1・d1+…+b(j-1)・d(j-1))(j=1,2,…,(c−1))が生成されており、bjが零でない場合には、当該中間データにbj・djを加算することで、中間データ(b0・d0+b1・d1+…+b(j-1)・d(j-1)+bj・dj)を生成する。
以下に、中間データ生成部11の中間データの生成について、具体的に説明する。
入力される部分データDi=(dc×i,dc×i+1,…,dc×i+(c-1))の最初の要素であるdc×iは、中間データMi[1,0,0,…,0]として、そのまま選択部23から出力される。
j−ビットカウンタ22は、入力されるDi=(dc×i,dc×i+1,…,dc×i+(c-1))の要素のそれぞれであるdc×i+jに対し、j−ビットのカウンタとして、(b0,b1,…,b(j-1))が(0,0,…,0)から(1,1,…,1)までをカウントアップする。
カウントアップに従って、(b0,b1,…,b(j-1))=(0,0,…,0)の時は、選択部23はdc×i+jを中間データMi[(j個の0),1,((c−j−1)個の0)]として出力する。(b0,b1,…,b(j-1))が(1,0,…,0)〜(1,1,…,1)である時は、加算部21は順次、メモリ12から読み出したMi[b0,b1,…,b(j-1),0,0,…,0]の値を読み出し、dc×i+jを加算した値Mi[b0,b1,…,b(j-1),1,0,…,0]=dc×i+j+Mi[b0,b1,…,b(j-1),0,0,…,0]を選択部23から出力する。
例えば、中間データテーブル12aにおいて、部分データD0=(d0,d1,d2,d3)での係数(1,0,1,1)に対する中間データは、部分データD0=(d0,d1,d2,d3)での係数(1,0,1,0)に対する中間データにd3を加算した値である。
上記の構成により、(2c−c−1)回のシンボルの加算により、cシンボルの部分データから、(2c−1)個の中間データを生成することを可能とした。
このように、既に計算され生成された中間データを利用して、新たに中間データを計算し生成することができるので、計算量の削減を図ることができる。
以下の表に、従来の符号化装置と本発明の符号化装置のそれぞれにおいて、実際にどの程度の回数の加算を行なって符号化を行なっているのかを示す。符号は、それぞれ符号化率(データ長/符号長)は3/4として、検査行列を乱数で生成したものである。処理をまとめた行数cについては、従来比が最小となる値を選んでいる。この結果からも、本発明により、加算回数を削減し、符号化の処理速度を高速化することが可能であることは明確となっている。
なお、実施の形態1の中間データ生成部11は、中間データをメモリ12に出力するだけになっている。これに対し、本実施例(実施の形態2)の中間データ生成部11は、それと機能は全く同じであるが、中間データの生成に、先に計算した中間データを利用することにより、計算量を削減しようとしているため、メモリ12へのデータの指示情報とメモリ12からの中間データの読出しが存在する。
また、本発明において演算を加算として説明しているが、これは符号の要素に応じた演算を意味している。例えば、符号がガロア体GF(q)の要素で構成されていればaとbの加算は(a+b)mod qのことであり、ガロア体GF(2)の要素で構成されていれば、加算は排他的論理和(exclusive−or)のことである。また、tビットのガロア体GF(2)の要素からなるブロックを符号の1シンボルとした場合は、t個の排他的論理和(exclusive−or)を並列して実行する演算を意味している。
以上、本発明に係る符号化装置について、上記実施の形態を用いて説明したが、本発明は、これに限定されるものではない。
つまり、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
例えば、本実施の形態では、データ及び係数の各要素は2進数であることとしたが、データ及び係数の各要素は2進数に限定されず、3進数などであってもよい。
また、本実施の形態では、中間データ生成部11などの各構成要素は、ソフトウェアにより構成されていることとしたが、専用のハードウェアにより構成されていてもよい。つまり、ブロック図(図1及び図5など)の各機能ブロックは、典型的には集積回路であるLSIとして実現されていてもよい。なお、これらは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。
本発明に係る符号化装置、符号化方法、及び符号化プログラムは、処理速度を高速化することができ、ネットワーク伝送時のパケットロスのような消失訂正の用途に有用である。
10 符号化装置
11 中間データ生成部
12 メモリ
12a 中間データテーブル
13 パリティ生成部
21 加算部
22 j−ビットカウンタ
23 選択部
11 中間データ生成部
12 メモリ
12a 中間データテーブル
13 パリティ生成部
21 加算部
22 j−ビットカウンタ
23 選択部
Claims (5)
- K個のシンボルのデータを、パリティを含む符号長がNでありデータ数がKである線形符号に符号化する符号化装置であって、
データを記憶する記憶部と、
前記K個のシンボルのデータをc個のシンボルずつに、k個(kは、K/cを切り上げた整数)の部分データに区切り、(i+1)番目(iは、0から(k−1)までの整数)の前記部分データ(d0,d1,…,d(c-1))と要素が全て零となる全零以外の係数(a0,a1,…,a(c-1))とから、全ての要素の組み合わせの前記係数について中間データ(a0・d0+a1・d1+…+a(c-1)・d(c-1))を生成し、前記中間データを前記記憶部に記憶する中間データ生成部と、
前記線形符号の生成行列のパリティの位置にあたる部分をc行ごとの部分行列に分割し、(i+1)番目の前記部分行列の(j+1)番目(jは、0から(N−K−1)までの整数)の列の値と同一の要素の組み合わせの前記係数に基づいて生成される前記中間データを前記記憶部から読み出して、全ての列についての前記中間データからそれぞれの列に対応するパリティを生成するパリティ生成部とを備え、
前記中間データ生成部は、全ての前記部分データに対して前記中間データを生成して前記記憶部に記憶し、
前記パリティ生成部は、全ての前記部分行列に対して前記中間データを前記記憶部から読み出して、前記列ごとに全ての前記読み出された中間データを累積することでそれぞれの列に対応するパリティを生成する
ことを特徴とする符号化装置。 - 前記中間データ生成部は、中間データ(a0・d0+a1・d1+…+a(y-1)・d(y-1))(y=1,2,…,(c−1))が生成されており、ayが零でない場合には、当該中間データにay・dyを加算することで、中間データ(a0・d0+a1・d1+…+a(y-1)・d(y-1)+ay・dy)を生成する
ことを特徴とする請求項1に記載の符号化装置。 - 前記中間データ生成部は、(i+1)番目の部分データによる中間データをi番目の部分データによる中間データに上書きすることで、(i+1)番目の部分データによる中間データを前記記憶部に記憶する
ことを特徴とする請求項1に記載の符号化装置。 - K個のシンボルのデータを、パリティを含む符号長がNでありデータ数がKである線形符号に符号化する符号化方法であって、
コンピュータが、前記K個のシンボルのデータをc個のシンボルずつに、k個(kは、K/cを切り上げた整数)の部分データに区切り、(i+1)番目(iは、0から(k−1)までの整数)の前記部分データ(d0,d1,…,d(c-1))と要素が全て零となる全零以外の係数(a0,a1,…,a(c-1))とから、全ての要素の組み合わせの前記係数について中間データ(a0・d0+a1・d1+…+a(c-1)・d(c-1))を生成し、データを記憶するための記憶部に前記中間データを記憶する中間データ生成ステップと、
コンピュータが、前記線形符号の生成行列のパリティの位置にあたる部分をc行ごとの部分行列に分割し、(i+1)番目の前記部分行列の(j+1)番目(jは、0から(N−K−1)までの整数)の列の値と同一の要素の組み合わせの前記係数に基づいて生成される前記中間データを前記記憶部から読み出して、全ての列についての前記中間データからそれぞれの列に対応するパリティを生成するパリティ生成ステップとを含み、
前記中間データ生成ステップでは、コンピュータが、全ての前記部分データに対して前記中間データを生成して前記記憶部に記憶し、
前記パリティ生成ステップでは、コンピュータが、全ての前記部分行列に対して前記中間データを前記記憶部から読み出して、前記列ごとに全ての前記読み出された中間データを累積することでそれぞれの列に対応するパリティを生成する
ことを特徴とする符号化方法。 - K個のシンボルのデータを、パリティを含む符号長がNでありデータ数がKである線形符号に符号化するためのプログラムであって、
前記K個のシンボルのデータをc個のシンボルずつに、k個(kは、K/cを切り上げた整数)の部分データに区切り、(i+1)番目(iは、0から(k−1)までの整数)の前記部分データ(d0,d1,…,d(c-1))と要素が全て零となる全零以外の係数(a0,a1,…,a(c-1))とから、全ての要素の組み合わせの前記係数について中間データ(a0・d0+a1・d1+…+a(c-1)・d(c-1))を生成し、データを記憶するための記憶部に前記中間データを記憶する中間データ生成ステップと、
前記線形符号の生成行列のパリティの位置にあたる部分をc行ごとの部分行列に分割し、(i+1)番目の前記部分行列の(j+1)番目(jは、0から(N−K−1)までの整数)の列の値と同一の要素の組み合わせの前記係数に基づいて生成される前記中間データを前記記憶部から読み出して、全ての列についての前記中間データからそれぞれの列に対応するパリティを生成するパリティ生成ステップとをコンピュータに実行させ、
前記中間データ生成ステップでは、全ての前記部分データに対して前記中間データを生成して前記記憶部に記憶し、
前記パリティ生成ステップでは、全ての前記部分行列に対して前記中間データを前記記憶部から読み出して、前記列ごとに全ての前記読み出された中間データを累積することでそれぞれの列に対応するパリティを生成する
ことを特徴とするプログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008204846A JP2010041628A (ja) | 2008-08-07 | 2008-08-07 | 符号化装置、符号化方法および符号化プログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008204846A JP2010041628A (ja) | 2008-08-07 | 2008-08-07 | 符号化装置、符号化方法および符号化プログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010041628A true JP2010041628A (ja) | 2010-02-18 |
Family
ID=42013647
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008204846A Pending JP2010041628A (ja) | 2008-08-07 | 2008-08-07 | 符号化装置、符号化方法および符号化プログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2010041628A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10568212B2 (en) | 2014-11-28 | 2020-02-18 | Intel Corporation | Manufacturing method for multi-layer printed circuit board |
| CN113890542A (zh) * | 2020-07-01 | 2022-01-04 | 旺宏电子股份有限公司 | 存储器控制器及存储器装置 |
-
2008
- 2008-08-07 JP JP2008204846A patent/JP2010041628A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10568212B2 (en) | 2014-11-28 | 2020-02-18 | Intel Corporation | Manufacturing method for multi-layer printed circuit board |
| CN113890542A (zh) * | 2020-07-01 | 2022-01-04 | 旺宏电子股份有限公司 | 存储器控制器及存储器装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8352847B2 (en) | Matrix vector multiplication for error-correction encoding and the like | |
| KR102347823B1 (ko) | 구조화된 ldpc의 부호화 및 복호화 방법 및 장치 | |
| CN101073205B (zh) | 低密度奇偶校验编码器和解码器以及低密度奇偶校验编码和解码方法 | |
| KR101421286B1 (ko) | 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치 | |
| KR101730277B1 (ko) | 송신 장치 및 송신 방법 | |
| CN102870330B (zh) | 编码设备、纠错码配置方法及其程序 | |
| WO2004107585A1 (ja) | 復号方法および復号装置、プログラム、記録再生装置および方法、並びに、再生装置および方法 | |
| KR20080077992A (ko) | 검사 행렬 생성 방법, 부호화 방법, 통신 장치, 통신시스템, 부호화기 | |
| CN101080874B (zh) | 纠错编码装置以及在其中使用的纠错编码方法 | |
| WO2014122772A1 (ja) | 誤り訂正符号の検査行列のデータ構造、並びに誤り訂正符号の符号化率可変装置および可変方法 | |
| WO2015135298A1 (zh) | 一种支持低码率编码的方法及装置、计算机存储介质 | |
| JP4602406B2 (ja) | データをエンコード及びデコードするための方法並びに装置 | |
| KR100918741B1 (ko) | 이동 통신 시스템에서 채널 부호화 장치 및 방법 | |
| EP2309650B1 (en) | A systematic encoder with arbitrary parity positions | |
| US7502988B2 (en) | Decoding and error correction for algebraic geometric codes | |
| EP1798861A1 (en) | LDPC encoding through decoding algorithm | |
| US7392454B2 (en) | Error locating methods and devices for algebraic geometric codes | |
| US20170288697A1 (en) | Ldpc shuffle decoder with initialization circuit comprising ordered set memory | |
| JP4591371B2 (ja) | Qc符号の符号化方法 | |
| JP2010041628A (ja) | 符号化装置、符号化方法および符号化プログラム | |
| JP2009182421A (ja) | 復号化方法及び復号化装置 | |
| JP2008526086A (ja) | チャネルコードを用いた復号化装置及び方法 | |
| KR101436973B1 (ko) | 슈퍼차지드 코드들 | |
| Van Wonterghem et al. | On constructions of Reed-Muller subcodes | |
| KR101405961B1 (ko) | Ldpc 코드를 이용한 부호화/복호화 방법 |