以下、図を参照して本発明の実施の形態について説明する。
図5は、本発明を適用したIRA(Irregular Repeat Accumulate)型準巡回符号の符号化に用いられるパリティ検査行列HQCIRA1の例を示している。IRA型準巡回符号とは、準巡回符号のパリティ検査行列と、IRA符号のパリティ検査行列の両方の性質を有するパリティ検査行列を持つ線形符号のことである。なお、図5においては、有限体を、2(素数のべき乗)を元とする有限体F2上として説明する。
図5の例において、パリティ検査行列HQCIRA1は、情報長kが15ビットの情報を、符号長nが25ビットの、巡回正方行列のサイズm,符号長n=n0×m,情報長k=k0×m,l:=(符号長n−情報長k)/m=n0−k0(図5の例の場合、n=25,k=15,m=5,n0=5,k0=3,l=2)で表されるIRA型準巡回符号に符号化するためのパリティ検査行列である。なお、IRA型準巡回符号において、従来の準巡回符号と同様に、n0およびlは、m×mの巡回正方行列を要素とした場合のパリティ検査行列の列数と行数を表す。換言すると、n0,k0,およびlは、m個をひと塊と考えた場合の、それぞれ符号長、情報長、およびパリティ数を表す。
このパリティ検査行列HQCIRA1は、10(行)×25(列)の元で構成される。また、パリティ検査行列HQCIRA1は、情報長k(15)の元で構成される情報部101、および、符号長n−情報長k(10)の元で構成されるパリティ部102からなる。したがって、IRA型準巡回符号の復号にあたっては、情報部101は、IRA型準巡回符号の情報ビットと乗算され、パリティ部102は、IRA型準巡回符号のパリティビットと乗算される。
情報部101は、それぞれ5(行)×5(列)の元からなる巡回正方行列である行列HI11,行列HI12,行列HI13,行列HI21,行列HI22,および行列HI23(行列HIxy(1≦x≦2),(1≦y≦3))を要素とする2(行)×3(列)の準巡回行列で構成される。すなわち、情報部101は、l(行)×k0(列)の準巡回行列で構成される。
情報部101の行列HI11は、第1行目が「11000」であり、第2行目が「01100」であり、第3行目が「00110」であり、第4行目が「00011」であり、第5行目が「10001」である5×5の巡回正方行列である。情報部101の行列HI12は、第1行目が「10100」であり、第2行目が「01010」であり、第3行目が「00101」であり、第4行目が「10010」であり、第5行目が「01001」である5×5の巡回正方行列である。情報部101の行列HI13は、第1行目が「11100」であり、第2行目が「01110」であり、第3行目が「00111」であり、第4行目が「10011」であり、第5行目が「11001」である5×5の巡回正方行列である。
情報部101の行列HI21は、第1行目が「10110」であり、第2行目が「01011」であり、第3行目が「10101」であり、第4行目が「11010」であり、第5行目が「01101」である5×5の巡回正方行列である。情報部101の行列HI22は、第1行目が「01100」であり、第2行目が「00110」であり、第3行目が「00011」であり、第4行目が「10001」であり、第5行目が「11000」である5×5の巡回正方行列である。情報部101の行列HI23は、第1行目が「01000」であり、第2行目が「00100」であり、第3行目が「00010」であり、第4行目が「00001」であり、第5行目が「10000」である5×5の巡回正方行列である。
したがって、準巡回行列としての情報部101の第1行目(以下、適宜、上ブロックとも称する)の行列HI1y(1≦y≦3)における各行は、7個の“1”と、8個の“0”で構成されており、それぞれの行列HI1yにおいて、各行は、直上の行における各値の位置を1つ右に移動(シフト)させて表される。準巡回行列としての情報部101の第2行目(以下、適宜、下ブロックとも称する)の行列HI2y(1≦y≦3)における各行は、6個の“1”と、9個の“0”で構成されており、それぞれの行列HI2yにおいて、各行は、直上の行における各値の位置を1つ右に移動(シフト)させて表される。すなわち、情報部101のそれぞれの行列HIxyの各行の値は、直上の行の値を次々に巡回するようにそれぞれ構成されている。
一方、パリティ部102は、非零元(図5の例の場合、“1”)が階段状に並び、残りを零元“0”が埋めている10(行)×10(列)の正方行列である行列HPで構成される。パリティ部102の行列HPは、第1行目が「1000000000」であり、第2行目が「1100000000」であり、第3行目が「0110000000」であり、第4行目が「0011000000」であり、第5行目が「0001100000」であり、第6行目が「0000110000」であり、第7行目が「0000011000」であり、第8行目が「0000001100」であり、第9行目が「0000000110」であり、第10行目が「0000000011」である10×10の正方行列である。この行列HPは、各行の2個の“1”を1つずつ右側に移動(シフト)して表すことができる行列となっており、階段状の構造を有している(ただし、第1行目のみ、1個の“1”)。
以上のように、IRA型準巡回符号のパリティ検査行列HQCIRA1は、IRA符号のパリティ検査行列のように、零元および非零元が任意に並んだ情報部101と、非零元が階段状に並び、残りを零元が埋めているパリティ部102を有しており、さらに、このパリティ検査行列HQCIRA1の情報部101は、準巡回符号のパリティ検査行列のように、巡回行列を要素として構成される。
ここで、IRA型準巡回符号への符号化を行う符号化装置は、パリティ検査行列Hの転地行列HTとの間に、式GHT=0が成立する生成行列Gを算出し、その生成行列Gに対して情報語を乗算して、符号語cを生成することにより、IRA型準巡回符号の符号化を行う。したがって、符号化装置は、パリティ検査行列Hとの間に、式HcT=0(上付きのTは、転置を表す)が成立する符号語cを求めることにより、情報のIRA型準巡回符号の符号化を行うことができる。
したがって、符号化装置では、パリティ検査行列Hの各行の“1”のある位置に対応する符号語cのF2上の和が0になる符号語cを生成すればよい。具体的には、図5のパリティ検査行列HQCIRA1の第1行目は、情報部101に、7個の“1”があり、パリティ部102の1列目(情報部101の先頭列から16列目)に“1”がある。したがって、符号化装置は、第1行目の情報部101の“1”のある位置に対応する符号語cの値、すなわち、符号語cの15ビットからなる情報の値(情報ビット)のうち、情報部101の“1”のある位置に対応するすべての情報ビット(7個の情報ビット)のF2上の和(排他的論理和)を演算し、その値を符号語cの16ビット目のパリティとすることにより、第1行目の“1”のある位置に対応する符号語cの値のF2上の和が0になるようにすることができる。
例えば、第1行目の情報部101の“1”のある位置に対応する7個の情報ビットのF2上の和が、“1”であった場合、符号化装置は、符号語cの16ビット目のパリティを“1”にする。この場合、第1行目の情報部101の“1”のある位置に対応する7個の情報ビットのF2上の和が、“1”であり、符号語cの16ビット目のパリティが“1”であるので、パリティ検査行列HQCIRA1の第1行目の“1”のある位置に対応する符号語cの値のF2上の和は0になる。
パリティ検査行列HQCIRA1の第2行目は、情報部101に、7個の“1”があり、パリティ部102の1列目と2列目(情報部101の先頭列から16列目と17列目)に“1”がある。したがって、符号化装置は、第2行目の情報部101の“1”のある位置に対応する7個の情報ビットと、第1行目の演算で既に求められた符号語cの16ビット目のパリティの値のF2上の和を演算し、その値を符号語cの17ビット目のパリティとすることにより、第2行目の“1”のある位置に対応する符号語cの値のF2上の和が0になるようにすることができる。
例えば、第2行目の情報部101の“1”のある位置に対応する7個の情報ビットのF2上の和が、“0”であり、符号語cの16ビット目のパリティの値が“1”であった場合、符号化装置は、符号語cの17ビット目のパリティを“1”にする。この場合、第1行目の情報部101の“1”のある位置に対応する7個の情報ビットのF2上の和が、“0”であり、符号語cの16ビット目のパリティが“1”、17ビット目のパリティが“1”であるので、パリティ検査行列HQCIRA1の第2行目の“1”のある位置に対応する符号語cの値のF2上の和は0になる。
符号化装置は、パリティ検査行列HQCIRA1の第3行目乃至第5行目においても、第2行目と同様に、パリティ検査行列HQCIRA1の行毎の“1”のある位置に対応する7個の情報ビットと、直前に求められたパリティビットのF2上の和を演算することにより、パリティ(ビット)を1つずつ求める。また、符号化装置は、パリティ検査行列HQCIRA1の第6行目乃至第10行目においては、パリティ検査行列HQCIRA1の行毎の“1”のある位置に対応する6個の情報ビットと、直前に求められたパリティビットのF2上の和を演算することにより、パリティ(ビット)を1つずつ求める。これにより、符号化装置においては、最終的に、10ビットのパリティが求まる。したがって、符号化装置は、15ビットの情報ビットと、10ビットのパリティビットとを合わせて、25ビットの符号語cを生成することにより、パリティ検査行列HQCIRA1を用いて、情報のIRA型準巡回符号化することができる。
さらに、パリティ検査行列HQCIRA1において、情報部101の“1”のある位置は、図2を用いて上述した従来のIRA符号のパリティ検査行列と異なり、ランダムではなく、各行列HIxyにおいて、直上の行における各値の位置を1つ右に移動(シフト)させて表すことができる。すなわち、情報部101のそれぞれの行の“1”のある位置に対応する情報は、準巡回符号の符号化装置と同様に、シフトレジスタを用いて、簡単に求めることができる。
以上のように、この符号化装置においては、シフトレジスタを用いて、パリティ検査行列の情報部の非零元に対応する情報のF2上の和が求められ、その情報のF2上の和と、直前に求められたパリティを用いて、F2上の和(排他的論理和)を演算することにより、新たなパリティを求めることができる。
図6は、本発明を適用した符号化装置121の構成例を表す。符号化装置121は、図5のパリティ検査行列HQCIRA1に従って、入力されるデータ(情報ビット)をIRA型準巡回符号化し、符号ビットとして出力する処理を行う。パリティ検査行列HQCIRA1の情報部101のHIxyの第i行(1≦i≦15)に対応する情報ビットをmiとし、符号化装置121から出力される符号ビットをci(1≦i≦25)とする。符号化装置121には、時刻1乃至15で、情報ビットm1,m2,m3,…,m15が入力される。
図6の例において、制御部131は、内蔵するクロックに基づいて、計時動作を行い、パリティ検査行列HQCIRA1に従って、スイッチ133,136および138を所定の端子に設定する(切り替える)制御を行う。具体的には、制御部131は、時刻t1乃至時刻t15のとき、スイッチ133をD端子に設定し、入力される情報ビットm1,m2,m3,…,m15を、各レジスタ134−1乃至134−15に格納させるとともに、スイッチ138をD端子に設定し、入力される情報ビットm1,m2,m3,…,m15を、そのまま符号ビットc1=m1,c2=m2,c3=m3,…,c15=m15として後段に出力させる。
また、制御部131は、時刻t16乃至時刻t25で、スイッチ133をP端子に設定し、レジスタ134−1乃至134−15に格納されている情報ビットmiを巡回させるとともに、スイッチ138をP端子に設定し、符号化装置121内で演算された結果であるパリティビットを、符号ビットc16,c17,c18,…,c25として後段に出力させる。さらに、制御部131は、時刻t16乃至時刻t20で、スイッチ136をA1端子に設定し、加算器135−1からの演算結果を演算器141に供給させ、時刻t21乃至時刻t25で、スイッチ136をA2端子に設定し、加算器135−2からの演算結果を演算器141に供給させる。
セパレータ132は、シリアルに入力される情報ビットmiを、各情報ビットmiが対応するレジスタ134−1乃至134−15に格納されるように、k0本(すなわち、3本)のパラレルに分配し、分配された情報ビットmiを、スイッチ133に供給する。具体的には、セパレータ132は、情報ビットm1,m2,m3,m4,m5が、レジスタ134−1乃至134−5に格納されるように、情報ビットm6,m7,m8,m9,m10が、レジスタ134−6乃至134−10に格納されるように、情報ビットm11,m12,m13,m14,m15が、レジスタ134−11乃至134−15に格納されるように、情報ビットmiを3本のパラレルに分配する。
スイッチ133は、レジスタ134−1乃至134−5が接続されるスイッチ133−1、レジスタ134−6乃至134−10が接続されるスイッチ133−2、および、レジスタ134−11乃至134−15が接続されるスイッチ133−3により構成される。スイッチ133−1乃至133−3は、P端子とD端子を有しており、制御部131の制御により、P端子とD端子のうちの一方に設定される。スイッチ133−1乃至133−3は、制御部131の制御により、D端子に設定されると、セパレータ132からの情報ビットmiを、各レジスタ134−1乃至134−15に格納し、P端子に設定されると、レジスタ134−1乃至134−15に格納された情報ビットmiを、3個の各ループで巡回させる。
すなわち、スイッチ133−1は、制御部131の制御により、D端子に設定されると、セパレータ132からの情報ビットm1,m2,m3,m4,m5を、各レジスタ134−1乃至134−5に格納し、P端子に設定されると、レジスタ134−1乃至134−5に格納された情報ビットを、レジスタ134−1乃至134−5のループで巡回させる。スイッチ133−2は、制御部131の制御により、D端子に設定されると、セパレータ132からの情報ビットm6,m7,m8,m9,m10を、それぞれのレジスタ134−6乃至134−10に格納し、P端子に設定されると、レジスタ134−6乃至134−10に格納された情報ビットを、レジスタ134−6乃至134−10のループで巡回させる。スイッチ133−3は、制御部131の制御により、D端子に設定されると、セパレータ132からの情報ビットm11,m12,m13,m14,m15を、それぞれのレジスタ134−11乃至134−15に格納し、P端子に設定されると、レジスタ134−11乃至134−15に格納された情報ビットを、レジスタ134−11乃至134−15のループで巡回させる。
レジスタ134−1乃至134−15は、入力される情報(ビット)と同じ数のシフトレジスタにより構成され、入力される情報ビットmiを格納する。レジスタ134−1乃至134−15は、k0個(すなわち、3個)のループが繰り返されるように、それぞれm台(すなわち、5台)ずつ、レジスタ134−1乃至134−5、レジスタ134−6乃至134−10、およびレジスタ134−11乃至134−15として接続されて構成されている。
加算器135−1および135−2(これらを個々に区別する必要がない場合、加算器135と称する)は、パリティ検査行列HQCIRA1の情報部101の各行の非零元に応じた値が入力されるように予め設定されている。したがって、加算器135−1には、パリティ検査行列HQCIRA1の情報部101の上ブロック(HI1y(1≦y≦3))の各行の非零元に応じた値として、レジスタ134−1,134−2,134−6,134−8,134−11,134−12,および134−13から7つの値が入力される。一方、加算器135−2には、パリティ検査行列HQCIRA1の情報部101の下ブロック(HI2y(1≦y≦3))の各行の非零元に応じた値として、レジスタ134−1,134−3,134−4,134−7,134−8,および134−12から6つの値が入力される。
加算器135−1および135−2は、各行の非零元に応じた値が入力されると、入力された値のF2上の和を演算する。なお、符号化装置121においては、加算器135は、l=n0−k0(いまの場合、2)個設けられる。すなわち、加算器135は、行列を要素とした場合の、パリティ検査行列HQCIRA1の情報部101の行数分設けられる。
スイッチ136は、加算器135−1に接続されるA1端子、加算器135−2に接続されるA2端子を有しており、制御部131の制御により、設定された端子に接続される加算器135の加算(演算)結果である、情報部101の各行の非零元に応じた値のF2上の和を、アキュムレータ137に供給する。なお、スイッチ136のA1端子も、加算器135の数(l=n0−k0)だけ設けられる。
アキュムレータ137は、演算器141およびレジスタ142により構成される。演算器141は、スイッチ136からの演算結果と、レジスタ142に記憶されている直前に求められたパリティビットのF2上の和を演算することにより、IRA型準巡回符号のパリティ(ビット)を求め、求められたパリティビットをレジスタ142に供給する。レジスタ142は、シフトレジスタなどにより構成され、演算器141からのパリティビットを格納し、格納されるパリティビットを、演算器141に供給するともに、P端子を選択しているスイッチ138を介して、符号ビットc16,c17,c18,…,c25として後段に出力する。
スイッチ138は、制御部131の制御により、P端子に設定されると、入力される情報ビットmiを、符号ビットciとして後段に出力し、制御部131の制御により、D端子に設定されると、アキュムレータ137からのパリティビットを、そのまま、符号ビットciとして後段に出力する。
次に、図7のフローチャートを参照して、符号化装置121の符号化処理を詳しく説明する。パリティ検査行列HQCIRA1の情報部101のHIxyの第i行(1≦i≦15)に対応する情報ビットをmiとし、符号化装置121から出力される符号ビットをci(1≦i≦25)とする。セパレータ132には、時刻t1乃至時刻t15で、情報ビットm1,m2,m3,…,m15が入力される。
ステップS11において、制御部131は、スイッチ133をD端子に設定し、入力される情報ビットm1,m2,m3,…,m15を、各レジスタ134−1乃至134−15に格納させるとともに、スイッチ138をD端子に設定し、入力される情報ビットm1,m2,m3,…,m15を、符号ビットc1=m1,c2=m2,c3=m3,…,c15=m15として後段に出力させ、ステップS12に進む。
具体的には、時間t1乃至時間t15において、スイッチ133−1がD端子に設定されると、セパレータ132からの情報ビットm1,m2,m3,m4,およびm5は、順に、各レジスタ134−1乃至134−5に格納され、スイッチ133−2がD端子に設定されると、セパレータ132からの情報ビットm6,m7,m8,m9,およびm10は、順に、各レジスタ134−6乃至134−10に格納され、スイッチ133−3がD端子に設定されると、セパレータ132からの情報ビットm11,m12,m13,m14,およびm15は、順に、各レジスタ134−11乃至134−15に格納される。そして、スイッチ138は、制御部131の制御により、D端子に設定されるので、入力される情報ビットm1,m2,m3,…,m15を、そのまま符号ビットc1=m1,c2=m2,c3=m3,…,c15=m15として、後段に出力する。
制御部131は、内蔵するクロックに基づいて、時刻t16になったと判定すると、ステップS12において、スイッチ133および138をP端子に設定させ、スイッチ136を、パリティ検査行列HQCIRA1に応じた設定にさせ、ステップS13に進む。これにより、ステップS2においては、加算器135にパリティ検査行列HQCIRA1に応じた値が入力され、入力された値のF2上の和(排他的論理和)が加算器135により演算され、その加算結果が、演算器141に供給される。
ステップS12の処理を具体的に説明する。制御部131は、時刻t16で、各レジスタ134−1乃至134−15に格納された情報ビットmiの巡回を開始させる。スイッチ133−1がP端子に設定されると、レジスタ134−1乃至134−5に格納された情報ビットm1,m2,m3,m4,およびm5は、レジスタ134−1乃至134−5のループで巡回し始める。スイッチ133−2がP端子に設定されると、レジスタ134−6乃至134−10に格納された情報ビットm6,m7,m8,m9,およびm10は、レジスタ134−6乃至134−10のループで巡回し始める。スイッチ133−2がP端子に設定されると、レジスタ134−11乃至134−15に格納された情報ビットm11,m12,m13,m14,およびm15は、レジスタ134−11乃至134−15のループで巡回し始める。
加算器135は、パリティ検査行列HQCIRA1に応じた値、すなわち、パリティ検査行列HQCIRA1の情報部101の各行の非零元に応じた値が入力されるように予め設定されている。したがって、各ループが巡回し始めると、加算器135−1には、レジスタ134−1,134−2,134−6,134−8,134−11,134−12,および134−13に格納されている7つの情報の値(情報ビット)が入力され、加算器135−2には、レジスタ134−1,134−3,134−4,134−7,134−8,および134−12から6つの情報の値が入力される。
また、制御部131は、パリティ検査行列HQCIRA1の情報部101の各行に応じて、時刻t16乃至時刻t20において、スイッチ136をA1端子に設定し、加算器135−1からの演算結果を、演算器141に供給させ、時刻t21乃至時刻t25において、スイッチ136をA2端子に設定し、加算器135−2からの演算結果を、演算器141に供給させる。
以上により、例えば、時刻t16において、パリティ検査行列HQCIRA1の情報部101の第1行目に対応する値(m1,m2,m6,m8,m11,m12,およびm13)が、加算器135−1に入力され、加算器135−1は、入力されたパリティ検査行列HQCIRA1の情報部101の第1行目に対応する値のF2上の和を演算する。このとき、スイッチ136がA1端子に設定されているので、加算器135−1により演算された第1行目の演算結果(すなわち、パリティ検査行列HQCIRA1の情報部101の第1行目の非零元に応じた値のF2上の和)は、スイッチ136を介して演算器141に供給される。
例えば、時刻t17において、パリティ検査行列HQCIRA1の情報部101の第2行目に対応する値(m2,m3,m7,m9,m12,m13,およびm14)が加算器135−1に入力され、加算器135−1は、入力されたパリティ検査行列HQCIRA1の情報部101の第2行目に対応する値のF2上の和を演算する。このとき、スイッチ136がA1端子に設定されているので、加算器135−1により演算された第2行目の演算結果は、スイッチ136を介して、演算器141に供給される。
時刻t18乃至時刻t20においても、時刻t16および時刻t17の場合と同様な処理がそれぞれ実行される。すなわち、加算器135−1により、入力されたパリティ検査行列HQCIRA1の情報部101の対象行(処理の対象となる行)に対応する値のF2上の和が演算され、演算された対象行の演算結果は、演算器141に供給される。
さらに、例えば、時刻t21において、パリティ検査行列HQCIRA1の情報部101の第6行目に対応する値(m1,m3,m4,m7,m8,およびm12)が加算器135−2に入力され、加算器135−2は、入力されたパリティ検査行列HQCIRA1の情報部101の第6行目に対応する値のF2上の和を演算する。このとき、スイッチ136がA2端子に設定されているので、加算器135−2により演算された第6行目の演算結果は、スイッチ136を介して、演算器141に供給される。
例えば、時刻t22において、パリティ検査行列HQCIRA1の情報部101の第7行目に対応する値(m2,m4,m5,m8,m9,およびm13)が加算器135−2に入力され、加算器135−2は、入力されたパリティ検査行列HQCIRA1の情報部101の第7行目に対応する値のF2上の和を演算する。このとき、スイッチ136がA2端子に設定されているので、加算器135−2により演算された第7行目の演算結果は、スイッチ136を介して、演算器141に供給される。
時刻t23乃至時刻t25においても、時刻t21および時刻t22の場合と同様な処理が実行され、加算器135−2により、入力されたパリティ検査行列HQCIRA1の情報部101の対象行に対応する値のF2上の和が演算され、演算された対象行の演算結果は、スイッチ136を介して、演算器141に供給される。
以上のように、ステップS12において、加算器135−1または135−2から、パリティ検査行列HQCIRA1の情報部101の対象行の非零元に対応する値のF2上の和が、演算器141に供給され、処理は、ステップS13に進む。
ステップS13において、レジスタ142は、後述するステップS15において格納したパリティビットを、演算器141に供給し、ステップS14に進む。なお、符号化処理の開始時には、レジスタ142に、初期値として、“0”が格納される。したがって、最初のステップS13の処理においては、レジスタ142は、“0”を演算器141に供給する。
ステップS14において、演算器141は、加算器135−1または135−2から供給されるパリティ検査行列HQCIRA1の情報部101の対象行の演算結果と、レジスタ142に格納されたパリティビットとのF2上の和を演算することにより、新たなパリティ(ビット)を求め、求められたパリティビットを、レジスタ142に供給し、ステップS15に進む。レジスタ142は、ステップS15において、供給されたパリティビットを格納し、ステップS16に進み、供給されたパリティビットを、P端子が選択されているスイッチ138を介して、符号ビットciとして後段に出力し、ステップS17に進む。
ステップS17において、制御部131は、内蔵するクロックに基づいて、時刻t25になり、すべての符号ビットciを出力したか否かを判断し、まだ、時刻t25になっておらず、すべての符号ビットciを出力していないと判断した場合、ステップS12に戻り、それ以降の処理を繰り返す。ステップS17において、制御部131は、時刻t25であり、すべての符号ビットciを出力したと判断した場合、符号化処理を終了する。
これにより、符号ビットは、符号ビットc16,c17,c18,c19,c20,c21,c22,c23,c24,c25の順で後段に出力される。すなわち、符号化装置121においては、最終的に、10ビットのパリティが求められ、15ビットの情報ビットと、10ビットのパリティビットとを合わせて、25ビットのIRA型準巡回符号が生成される。以上のようにして、符号化装置121においては、パリティ検査行列HQCIRA1を用いて、情報がIRA型準巡回符号化される。
以上のように、パリティ検査行列HQCIRA1の情報部101が準巡回行列で表され、シフトレジスタを用いて、パリティ検査行列HQCIRA1の情報部101の各行の非零元に応じた値の和が簡単に求められるので、求められた各行の非零元に応じた値の和と、その直前に求められたパリティビットのみを用いて、F2上の和(排他的論理和)を演算することにより、新たなパリティビットを求めることができる。
したがって、従来のように高価なランダムインタリーバを用いることなく、符号化装置121のように、簡単なシフトレジスタを用いて、コストを上げることなく、簡単な構成の符号化装置を実現することができる。
図8は、本発明を適用したIRA型準巡回符号の符号化に用いられるパリティ検査行列HQCIRA2の例を示している。図8のパリティ検査行列HQCIRA2は、図5のパリティ検査行列HQCIRA1の他の例であるため、その詳細な説明は繰り返しになるので、適宜省略する。なお、以下、有限体を、有限体Fq(q=ps,p:素数,s:自然数)上として説明する。
図8の例において、パリティ検査行列HQCIRA2は、情報長k=15の情報を、符号長n=25の、巡回正方行列のサイズm,符号長n=n0×m,情報長k=k0×m,l:=(符号長n−情報長k)/m=n0−k0(図8の例の場合、n=25,k=15,m=5,n0=5,k0=3,l=2)で表されるIRA型準巡回符号に符号化するためのパリティ検査行列である。なお、パリティ検査行列HQCIRA2において、a,b,c,d,e,f,g,h,i,j,o,p,r,s,t∈Fqであり、hは、可逆元(h・h-1=0)であるとする。
このパリティ検査行列HQCIRA2は、10(行)×25(列)の元で構成される。また、パリティ検査行列HQCIRA2は、情報長k(15)の元で構成される情報部201、および、符号長n−情報長k(10)の元で構成されるパリティ部202からなる。情報部201は、それぞれ5(行)×5(列)の元からなる巡回正方行列である行列HI11,行列HI12,行列HI13,行列HI21,行列HI22,および行列HI23(行列HIxy(1≦x≦2),(1≦y≦3))を要素とする2(行)×3(列)の準巡回行列で構成される。
情報部201の行列HI11は、第1行目が「ab000」であり、第2行目が「0ab00」であり、第3行目が「00ab0」であり、第4行目が「000ab」であり、第5行目が「b000a」である5×5の巡回正方行列である。情報部201の行列HI12は、第1行目が「c0d00」であり、第2行目が「0c0d0」であり、第3行目が「00c0d」であり、第4行目が「d00c0」であり、第5行目が「0d00c」である5×5の巡回正方行列である。情報部201の行列HI13は、第1行目が「efg00」であり、第2行目が「0efg0」であり、第3行目が「00efg」であり、第4行目が「g00ef」であり、第5行目が「fg00e」である5×5の巡回正方行列である。
情報部201の行列HI21は、第1行目が「j0op0」であり、第2行目が「0j0op」であり、第3行目が「p0j0o」であり、第4行目が「op0j0」であり、第5行目が「0op0j」である5×5の巡回正方行列である。情報部201の行列HI22は、第1行目が「0rs00」であり、第2行目が「00rs0」であり、第3行目が「000rs」であり、第4行目が「s000r」であり、第5行目が「rs000」である5×5の巡回正方行列である。情報部201の行列HI23は、第1行目が「0t000」であり、第2行目が「00t00」であり、第3行目が「000t0」であり、第4行目が「0000t」であり、第5行目が「t0000」である5×5の巡回正方行列である。
したがって、情報部201の上ブロック(行列HI1y(1≦y≦3))の各行は、7個の非零元と、8個の零元“0”で構成されており、各行列HI1yにおいて、各行は、直上の行における各値の位置を1つ右に移動(シフト)させて表される。情報部201の下ブロック(行列HI2y(1≦y≦3))の各行は、6個の非零元と、9個の零元“0”で構成されており、行列HI2yにおいて、各行は、各直上の行における各値の位置を1つ右に移動(シフト)させて表される。すなわち、情報部201の各行列HIxyの各行の値は、直上の行の値を次々に巡回するようにそれぞれ構成されている。
一方、パリティ部202は、非零元(図8の例の場合、“h”および“i”)が階段状に並び、残りを零元“0”が埋めている10(行)×10(列)の正方行列である行列HPで構成される。パリティ部202の行列HPは、第1行目が「h000000000」であり、第2行目が「ih00000000」であり、第3行目が「0ih0000000」であり、第4行目が「00ih000000」であり、第5行目が「000ih00000」であり、第6行目が「0000ih0000」であり、第7行目が「00000ih000」であり、第8行目が「000000ih00」であり、第9行目が「0000000ih0」であり、第10行目が「00000000ih」である10×10の正方行列である。この行列HPは、各行の “h”および“i”を1つずつ右側に移動(シフト)して表すことができる行列となっており、階段状の構造を有している(ただし、第1行目のみ、1個の“h”)。
以上のように、IRA型準巡回符号のパリティ検査行列HQCIRA2は、IRA符号のパリティ検査行列のように、零元および非零元が任意に並んだ情報部201と、非零元が階段状に並び、残りを零元が埋めているパリティ部202を有しており、さらに、パリティ検査行列HQCIRA2の情報部201は、準巡回符号のパリティ検査行列のように、巡回行列を要素として構成される。
図9は、本発明を適用した符号化装置221の構成例を表す。なお、図9の符号化装置221は、乗算器231−1乃至231−13、および乗算器232が追加されている点、並びに、アキュムレータ137の代わりに、アキュムレータ233が追加されている点を除いて、その他の構成は、上述した図6の符号化装置121と同様の構成であり、その詳細な説明は繰り返しになるので、適宜省略する。
図9の符号化装置221は、図8のパリティ検査行列HQCIRA2に従って、入力されるデータ(情報シンボル)をIRA型準巡回符号化し、符号シンボルとして出力する処理を行う。パリティ検査行列HQCIRA2の情報部201のHIxyの第u行(1≦u≦15)に対応する情報シンボルをmuとし、符号化装置221から出力される符号シンボルをcu(1≦u≦25)とする。符号化装置221には、時刻t1乃至時刻t15で、情報シンボルm1,m2,m3,…,m15が入力される。
図9の例においては、制御部131は、内蔵するクロックに基づいて、計時動作を行い、パリティ検査行列HQCIRA2に従って、スイッチ133,136および138を所定の端子に設定する(切り替える)制御を行う。セパレータ132は、シリアルに入力される情報シンボルmuを、各情報シンボルmuが対応するレジスタ134−1乃至134−15に格納されるように、3本のパラレルに分配し、分配された情報シンボルmuを、スイッチ133に供給する。
スイッチ133−1乃至133−3は、制御部131の制御により、D端子に設定されると、セパレータ132からの情報シンボルmuを、各レジスタ134−1乃至134−15に格納し、P端子に設定されると、レジスタ134−1乃至134−15に格納された情報シンボルmuを、3個の各ループで巡回させる。レジスタ134−1乃至134−15は、シフトレジスタにより構成され、入力される情報シンボルmuを格納する。レジスタ134−1乃至134−15は、3個のループが繰り返されるように、5台ずつ、レジスタ134−1乃至134−5、レジスタ134−6乃至134−10、およびレジスタ134−11乃至134−15として接続されて構成されている。
加算器135−1および135−2は、パリティ検査行列HQCIRA2の情報部201の各行の非零元に応じた値が入力されるように、各レジスタ134−1乃至134−15との接続と、その接続の間に設けられる乗算器231−1乃至231−13が予め設定されている。なお、乗算器231−1乃至231−13の数は、情報部201の非零元の数により求められる。
具体的には、乗算器231−1は、レジスタ134−1と加算器135−1の間に設けられ、レジスタ134−1からの情報シンボルmuを“a”倍する。乗算器231−2は、レジスタ134−6と加算器135−1の間に設けられ、レジスタ134−6からの情報シンボルmuを“c”倍する。乗算器231−3は、レジスタ134−11と加算器135−1の間に設けられ、レジスタ134−11からの情報シンボルmuを“e”倍する。乗算器231−4は、レジスタ134−1と加算器135−2の間に設けられ、レジスタ134−11からの情報シンボルmuを“j”倍する。乗算器231−5は、レジスタ134−2と加算器135−1の間に設けられ、レジスタ134−2からの情報シンボルmuを“b”倍する。乗算器231−6は、レジスタ134−12と加算器135−1の間に設けられ、レジスタ134−12からの情報シンボルmuを“f”倍する。乗算器231−7は、レジスタ134−7と加算器135−2の間に設けられ、レジスタ134−7からの情報シンボルmuを“r”倍する。
乗算器231−8は、レジスタ134−12と加算器135−2の間に設けられ、レジスタ134−12からの情報シンボルmuを“t”倍する。乗算器231−9は、レジスタ134−8と加算器135−1の間に設けられ、レジスタ134−8からの情報シンボmuルを“d”倍する。乗算器231−10は、レジスタ134−13と加算器135−1の間に設けられ、レジスタ134−13からの情報シンボルmuを“g”倍する。乗算器231−11は、レジスタ134−3と加算器135−2の間に設けられ、レジスタ134−3からの情報シンボルmuを“o”倍する。乗算器231−12は、レジスタ134−8と加算器135−2の間に設けられ、レジスタ134−8からの情報シンボルmuを“s”倍する。乗算器231−13は、レジスタ134−4と加算器135−2の間に設けられ、レジスタ134−4からの情報シンボルmuを“p”倍する。
したがって、加算器135−1には、パリティ検査行列HQCIRA2の情報部201の上ブロック(HI1y(1≦y≦3))の各行の非零元に応じた値として、レジスタ134−1からの情報シンボルmuが、乗算器231−1により“a”倍された値、レジスタ134−2からの情報シンボルmuが、乗算器231−5により“b”倍された値、レジスタ134−6からの情報シンボルmuが、乗算器231−2により“c”倍された値、レジスタ134−8からの情報シンボルmuが、乗算器231−9により“d”倍された値、レジスタ134−11の情報シンボルmuが、乗算器231−3により“e”倍された値、レジスタ134−12の情報シンボルmuが、乗算器231−6により“f”倍された値、および、レジスタ134−13からの情報シンボルmuが、乗算器231−10により“g”倍された値が入力される。
一方、加算器135−2には、パリティ検査行列HQCIRA2の情報部201の下ブロック(HI2y(1≦y≦3))の各行の非零元に応じた値として、レジスタ134−1からの情報シンボルmuが、乗算器231−4により“j”倍された値、レジスタ134−3からの情報シンボルmuが、乗算器231−11により“o”倍された値、レジスタ134−4からの情報シンボルmuが、乗算器231−13により“p 倍された値、レジスタ134−7からの情報シンボルmuが、乗算器231−7により“r”倍された値、レジスタ134−8の情報シンボルmuが、乗算器231−12により“s”倍された値、および、レジスタ134−12からの情報シンボルmuが、乗算器231−8により“t”倍された値が入力される。
加算器135−1および135−2は、各行の非零元に応じた値が入力されると、入力された値のFq上の和を演算する。スイッチ136は、加算器135−1に接続されるA1端子、加算器135−2に接続されるA2端子を有しており、制御部131の制御により、設定された端子に接続される加算器135の演算結果である、各行の非零元に応じた値の和を、乗算器232を介して、アキュムレータ233に出力する。乗算器232は、スイッチ136とアキュムレータ233の間に設けられ、スイッチ136からのパリティを、“−h-1”倍し、“−h-1”倍された演算結果を、アキュムレータ233に供給する。
アキュムレータ233は、演算器141、レジスタ142、および乗算器241により構成される。演算器141は、乗算器232からの“−h-1”倍された演算結果と、レジスタ142からのパリティに乗算器241により“i”倍された値とのFq上の和を演算することにより、新たなパリティ(シンボル)を求め、求められたパリティシンボルを、レジスタ142に供給する。レジスタ142は、シフトレジスタなどにより構成され、演算器141からのパリティシンボルを格納し、格納されるパリティシンボルを、乗算器241を介して、演算器141に供給するともに、P端子を選択しているスイッチ138を介して、符号シンボルc16,c17,c18,…,c25として後段に出力する。乗算器241は、レジスタ142からのパリティを、“i”倍し、“i”倍された値を、演算器141に供給する。
スイッチ138は、制御部131の制御により、P端子に設定されると、入力される情報シンボルmuを、符号シンボルcuとして後段に出力し、制御部131の制御により、D端子に設定されると、アキュムレータ233からのパリティシンボルを、そのまま、符号シンボルcuとして後段に出力する。
次に、図10のフローチャートを参照して、符号化装置221の符号化処理を詳しく説明する。なお、図10のステップS31、およびS35乃至S38は、図7のステップS11、およびS14乃至S17と同様の処理を行うため、その詳細な説明は、繰り返しになるので適宜省略する。
パリティ検査行列HQCIRA2の情報部201のHIxyの第u行(1≦u≦15)に対応する情報シンボルをmuとし、符号化装置121から出力される符号シンボルをcu(1≦u≦25)とする。セパレータ132には、時刻t1乃至時刻t15で、情報シンボルm1,m2,m3,…,m15が入力される。
ステップS31において、制御部131は、スイッチ133をD端子に設定し、入力される情報シンボルm1,m2,m3,…,m15を、各レジスタ134−1乃至134−15に格納させるとともに、スイッチ138をD端子に設定し、入力される情報シンボルm1,m2,m3,…,m15を、符号シンボルc1=m1,c2=m2,c3=m3,…,c15=m15として後段に出力させ、ステップS32に進む。
制御部131は、内蔵するクロックに基づいて、時刻t16になったと判定すると、ステップS32において、スイッチ133および138をP端子に設定させ、スイッチ136を、パリティ検査行列HQCIRA2に応じた設定にさせ、ステップS33に進む。これにより、ステップS32においては、加算器135にパリティ検査行列HQCIRA2に応じた値が入力され、入力された値のF2上の和が加算器135により演算され、その演算(加算)結果が、乗算器232に供給される。
ステップS32の処理を具体的に説明する。制御部131は、各レジスタ134−1乃至134−15に格納された情報シンボルmuの巡回を開始させる。スイッチ133−1がP端子に設定されると、レジスタ134−1乃至134−15に格納された情報シンボルは、図7を参照して上述した3つのループでそれぞれ巡回し始める。
加算器135−1および135−2は、図9を参照して上述したように、パリティ検査行列HQCIRA2の情報部201の各行の非零元に応じた値が入力されるように、各レジスタ134−1乃至134−15との接続と、その接続の間に設けられる乗算器231−1乃至231−13が予め設定されている。したがって、各ループが巡回し始めると、加算器135−1には、パリティ検査行列HQCIRA2の情報部201の上ブロック(HI1y(1≦y≦3))の各行の非零元に応じた値として、レジスタ134−1からの情報シンボルmuが、乗算器231−1により“a”倍された値、レジスタ134−2からの情報シンボルmuが、乗算器231−5により“b”倍された値、レジスタ134−6からの情報シンボルmuが、乗算器231−2により“c”倍された値、レジスタ134−8からの情報シンボルmuが、乗算器231−9により“d”倍された値、レジスタ134−11の情報シンボルmuが、乗算器231−3により“e”倍された値、レジスタ134−12の情報シンボルmuが、乗算器231−6により“f”倍された値、および、レジスタ134−13からの情報シンボルmuが、乗算器231−10により“g”倍された値が入力される。
一方、加算器135−2には、パリティ検査行列HQCIRA2の情報部201の下ブロック(HI2y(1≦y≦3))の各行の非零元に応じた値として、レジスタ134−1からの情報シンボルmuが、乗算器231−4により“j”倍された値、レジスタ134−3からの情報シンボルmuが、乗算器231−11により“o”倍された値、レジスタ134−4からの情報シンボルmuが、乗算器231−13により“p”倍された値、レジスタ134−7からの情報シンボルmuが、乗算器231−7により“r”倍された値、レジスタ134−8の情報シンボルmuが、乗算器231−12により“s”倍された値、および、レジスタ134−12からの情報シンボルmuが、乗算器231−8により“t”倍された値が入力される。
また、制御部131は、パリティ検査行列HQCIRA2の情報部201の各行に応じて、時刻t16乃至時刻t20において、スイッチ136をA1端子に設定し、加算器135−1からの演算結果を、乗算器232に供給させ、時刻t21乃至時刻t25において、スイッチ136をA2端子に設定し、加算器135−2からの演算結果を、乗算器232に供給させる。
以上により、例えば、時刻t16において、パリティ検査行列HQCIRA2の情報部201の第1行目に対応する値(a・m1,b・m2,c・m6,d・m8,e・m11,f・m12,およびg・m13)が、加算器135−1に入力され、加算器135−1は、入力されたパリティ検査行列HQCIRA2の情報部201の第1行目に対応する値のFq上の和を演算する。このとき、スイッチ136がA1端子に設定されているので、加算器135−1により演算された演算結果である、パリティ検査行列HQCIRA2の情報部201の第1行目の非零元の位置に対応する値の和は、スイッチ136を介して、乗算器232に供給される。
例えば、時刻t17において、パリティ検査行列HQCIRA2の情報部201の第2行目に対応する値(a・m2,b・m3,c・m7,d・m9,e・m12,f・m13,およびg・m14)が加算器135−1に入力され、加算器135−1は、入力されたパリティ検査行列HQCIRA2の情報部201の第2行目に対応する値のFq上の和を演算する。このとき、スイッチ136がA1端子に設定されているので、加算器135−1により演算された第2行目の演算結果は、スイッチ136を介して、乗算器232に供給される。
時刻t18乃至時刻t20においても、時刻t16および時刻t17の場合と同様な処理が実行され、加算器135−1により、入力されたパリティ検査行列HQCIRA2の情報部201の対象行に対応する値のFq上の和が演算され、演算された対象行の演算結果は、スイッチ136を介して、乗算器232に供給される。
また、例えば、時刻t21のとき、パリティ検査行列HQCIRA2の情報部201の第6行目に対応する値(j・m1,o・m3,p・m4,r・m7,s・m8,およびt・m12)が加算器135−2に入力され、加算器135−2は、入力されたパリティ検査行列HQCIRA2の情報部201の第6行目に対応する値のFq上の和を演算する。このとき、スイッチ136がA2端子に設定されているので、加算器135−2により演算された第6行目の演算結果は、スイッチ136を介して、乗算器232に供給される。
例えば、時刻t22のとき、パリティ検査行列HQCIRA2の情報部201の第7行目に対応する値(j・m2,o・m4,p・m5,r・m8,s・m9,およびt・m13)が加算器135−2に入力され、加算器135−2は、入力されたパリティ検査行列HQCIRA2の情報部201の第7行目に対応する値のFq上の和を演算する。このとき、スイッチ136がA2端子に設定されているので、加算器135−2により演算された第7行目の演算結果は、スイッチ136を介して、乗算器232に供給される。
時刻t23乃至時刻t25においても、時刻t21および時刻t22の場合と同様な処理が実行され、加算器135−2により、入力されたパリティ検査行列HQCIRA2の情報部201の対象行に対応する値のFq上の和が演算され、演算された対象行の演算結果は、スイッチ136を介して、乗算器232に供給される。
以上のように、ステップS12において、加算器135−1または135−2から、パリティ検査行列HQCIRA2の情報部201の対象行の非零元の位置に対応する値の和が乗算器232に供給され、処理は、ステップS33に進む。
乗算器232は、ステップS33において、加算器135−1または135−2からの演算結果に、“−h-1”倍し、“−h-1”倍された値を、演算器141に供給し、ステップS34に進む。ステップS34において、レジスタ142は、後述するステップS36において格納したパリティシンボルを、乗算器241により“i”倍させ、“i”倍されたパリティシンボルを、演算器141に供給し、ステップS35に進む。
ステップS35において、演算器141は、乗算器232からの“−h-1”倍された対象行のパリティシンボルと、乗算器241により“i”倍されたパリティシンボルとのFq上の和を演算することにより、新たなパリティシンボルを求め、求められたパリティシンボルを、レジスタ142に供給し、ステップS36に進む。レジスタ142は、ステップS36において、供給されたパリティシンボルを格納し、ステップS37に進み、供給されたパリティシンボルを、P端子が選択されているスイッチ138を介して、符号シンボルcuとして後段に出力し、ステップS38に進む。
ステップS38において、制御部131は、内蔵するクロックに基づいて、時刻t25になり、すべての符号シンボルを出力したか否かを判断し、まだ、時刻t25になっておらず、すべての符号シンボルを出力していないと判断した場合、ステップS32に戻り、それ以降の処理を繰り返す。ステップS38において、制御部131は、時刻t25であり、すべての符号シンボルcuを出力したと判断した場合、符号化処理を終了する。
これにより、符号シンボルは、符号シンボルc16,c17,c18,c19,c20,c21,c22,c23,c24,c25の順で後段に出力される。すなわち、符号化装置221においては、最終的に、10シンボルのパリティが求められ、15シンボルの情報シンボルと、10シンボルのパリティシンボルとを合わせて、25シンボルのIRA型準巡回符号が生成されることにより、パリティ検査行列HQCIRA2を用いて、情報をIRA型準巡回符号の符号化を行うことができる。
以上のように、パリティ検査行列HQCIRA2の情報部201が準巡回行列で表され、シフトレジスタを用いて、パリティ検査行列HQCIRA2の情報部201の各行の非零元の位置に応じた値の和が簡単に求められるので、求められた各行の非零元に応じた値の和と、その直前に求められたパリティシンボルのみを用いて、Fq上の和(排他的論理和)を演算することにより、新たなパリティシンボルを求めることができる。
したがって、従来のように高価なランダムインタリーバを用いることなく、符号化装置221のように、簡単なシフトレジスタを用いて、コストを上げることなく、簡単な構成の符号化装置を実現することができる。
図11は、本発明を適用したIRA型準巡回符号の符号化に用いられるパリティ検査行列HQCIRA3の例を示している。図11のパリティ検査行列HQCIRA3は、図8のパリティ検査行列HQCIRA2の他の例であるため、その詳細な説明は繰り返しになるので、適宜省略する。
図11の例において、パリティ検査行列HQCIRA3は、情報長k=15の情報を、符号長n=25の、巡回正方行列のサイズm,符号長n=n0×m,情報長k=k0×m,l:=(符号長n−情報長k)/m=n0−k0(図11の例の場合、n=25,k=15,m=5,n0=5,k0=3,l=2)で表されるIRA型準巡回符号に符号化するためのパリティ検査行列である。なお、パリティ検査行列HQCIRA3において、a,b,c,d,e,f,g,h,i,j,o,p,r,s,t,z∈Fqであり、hおよびzは、可逆元(h・h-1=z・z-1=0)であるとする。
このパリティ検査行列HQCIRA3は、10(行)×25(列)の元で構成される。また、パリティ検査行列HQCIRA3は、情報長k(15)の元で構成される情報部301、および、符号長n−情報長k(10)の元で構成されるパリティ部302により構成される。情報部301は、図8のパリティ検査行列HQCIRA2の情報部201と同様に構成される。すなわち、情報部301は、それぞれ5(行)×5(列)の巡回正方行列である行列HI11,行列HI12,行列HI13,行列HI21,行列HI22,および行列HI23(行列HIxy(1≦x≦2),(1≦y≦3))を要素とする2(行)×3(列)の準巡回行列で構成される。
したがって、情報部301の上ブロック(行列HI1y(1≦y≦3))の各行は、7個の非零元と、8個の零元“0”で構成されており、各行列HI1yにおいて、各行は、直上の行における各値の位置を1つ右に移動(シフト)させて表される。情報部301の下ブロック(行列HI2y(1≦y≦3))の各行は、6個の非零元と、9個の零元“0”で構成されており、行列HI2yにおいて、各行は、各直上の行における各値の位置を1つ右に移動(シフト)させて表される。すなわち、情報部301の各行列HIxyの各行の値は、直上の行の値を次々に巡回するようにそれぞれ構成されている。
一方、パリティ部302は、IRA符号のパリティ検査行列の性質を維持させつつ、パリティ部302に巡回性を持たせるようにしたものであり、それぞれ5(行)×5(列)の元からなる行列HP11,行列HP12,行列HP21,および行列HP22を要素とする2(行)×2(列)の準巡回行列のような行列で構成される。なお、パリティ検査行列HQCIRA3は、パリティ部302において、h=zとし、行や列の入れ替えを行うことにより、図8のパリティ検査行列HQCIRA2と同じ行列に変更することができる。すなわち、h=zとした場合、パリティ検査行列HQCIRA3は、図8のパリティ検査行列HQCIRA2と同値となる。
パリティ部302の行列HP11は、第1行目が「h0000」であり、第2行目が「0h000」であり、第3行目が「00h00」であり、第4行目が「000h0」であり、第5行目が「0000h」である5×5の巡回正方行列である。パリティ部302の行列HP12は、第1行目が「00000」であり、第2行目が「i0000」であり、第3行目が「0i000」であり、第4行目が「00i00」であり、第5行目が「000i0」である5×5の正方行列である。パリティ部302の行列HP21は、第1行目が「i0000」であり、第2行目が「0i000」であり、第3行目が「00i00」であり、第4行目が「000i0」であり、第5行目が「0000i」である5×5の巡回正方行列である。パリティ部302の行列HP22は、第1行目が「z0000」であり、第2行目が「0z000」であり、第3行目が「00z00」であり、第4行目が「000z0」であり、第5行目が「0000z」である5×5の巡回正方行列である。
行列HP11,行列HP12,行列HP21,および行列HP22において、各行は、各直上の行における各値の位置を1つ右に移動(シフト)させて表される。すなわち、情パリティ部302の各行列HPの各行の値も、直上の行の値を次々に巡回するようにそれぞれ構成されている。
以上のように、IRA型準巡回符号のパリティ検査行列HQCIRA3も、IRA符号のパリティ検査行列のように、零元および非零元が任意に並んだ情報部301と、非零元が階段状に並び、残りを零元が埋めているパリティ部302を有しており、さらに、このパリティ検査行列HQCIRA3の情報部301は、準巡回符号のパリティ検査行列のように、巡回行列を要素として構成され、パリティ検査行列HQCIRA3のパリティ部302は、巡回性を有するように構成されている。
図12は、本発明を適用した符号化装置321の構成例を表す。なお、図12の符号化装置321は、乗算器232が除かれている点、並びに、乗算器331−1および331−2が追加されている点を除いて、その他の構成は、上述した図9の符号化装置221と同様の構成であり、その詳細な説明は繰り返しになるので、適宜省略する。
図12の符号化装置321は、図11のパリティ検査行列HQCIRA3に従って、入力されるデータ(情報シンボル)をIRA型準巡回符号化し、符号シンボルとして出力する処理を行う。パリティ検査行列HQCIRA3の情報部301のHIxyの第u行(1≦u≦15)に対応する情報シンボルをmuとし、符号化装置321から出力される符号シンボルをcu(1≦u≦25)とする。符号化装置321には、時刻t1乃至時刻t15で、情報シンボルm1,m2,m3,…,m15が入力される。
図12の例においては、制御部131は、内蔵するクロックに基づいて、計時動作を行い、パリティ検査行列HQCIRA3に従って、スイッチ133,136および138を所定の端子に設定する(切り替える)制御を行う。具体的には、制御部131は、時刻t1乃至時刻t15のとき、スイッチ133をD端子に設定し、入力される情報シンボルmuを、各レジスタ134−1乃至134−15に格納させるとともに、スイッチ138をD端子に設定し、入力される情報シンボルmuを、そのまま符号シンボルcuとして後段に出力させる。また、制御部131は、時刻t16乃至時刻t25で、スイッチ133をP端子に設定し、レジスタ134−1乃至134−15に格納されている情報シンボルmuを巡回させるとともに、スイッチ138をP端子に設定し、符号化装置321内で演算された結果であるパリティシンボルを、符号シンボルcuとして後段に出力させる。
さらに、制御部131は、時刻t16,t18,t20,t22,および時刻t24で、スイッチ136をA1端子に設定し、加算器135−1からの演算結果を演算器141に供給させ、時刻t17,t19,t21,t23,および時刻t25で、スイッチ136をA2端子に設定し、加算器135−2からの演算結果を演算器141に供給させる。これにより、符号シンボルc16,c21,c17,c22,c18,c23,c19,c24,c20,c25の順で後段に出力される。
セパレータ132は、シリアルに入力される情報シンボルmuを、各情報シンボルmuが対応するレジスタ134−1乃至134−15に格納されるように、3本のパラレルに分配し、分配された情報シンボルmuを、スイッチ133に供給する。
スイッチ133−1乃至133−3は、制御部131の制御により、D端子に設定されると、セパレータ132からの情報シンボルmuを、各レジスタ134−1乃至134−15に格納し、P端子に設定されると、レジスタ134−1乃至134−15に格納された情報シンボルmuを、3個の各ループで巡回させる。レジスタ134−1乃至134−15は、シフトレジスタにより構成され、入力される情報シンボルmuを格納する。レジスタ134−1乃至134−15は、3個のループが繰り返されるように、それぞれ5台ずつ、レジスタ134−1乃至134−5、レジスタ134−6乃至134−10、およびレジスタ134−11乃至134−15として接続されて構成されている。
加算器135−1および135−2は、パリティ検査行列HQCIRA3の情報部301の各行の非零元に応じた値が入力されるように、各レジスタ134−1乃至134−15との接続と、その接続の間に設けられる乗算器231−1乃至231−13が予め設定されている。なお、乗算器231−1乃至231−13の数は、情報部301の上ブロックおよび下ブロックの非零元の数により求められる。
加算器135−1および135−2は、各行の非零元に応じた値が入力されると、入力された値のFq上の和を演算する。乗算器331−1は、加算器135−1とスイッチ136の間に設けられ、加算器135−1の演算結果を、“−h-1”倍する。乗算器331−2は、加算器135−2とスイッチ136の間に設けられ、加算器135−2の演算結果を、“−z-1”倍する。なお、以下、乗算器331−1および331−2は、特に区別する必要がない場合、単に、乗算器331と称する。
スイッチ136は、乗算器331−1に接続されるA1端子、乗算器331−2に接続されるA2端子を有しており、制御部131の制御により、設定された端子に接続される乗算器331により所定倍された各行の演算結果を、アキュムレータ233に出力する。スイッチ136がA1端子に設定された場合、スイッチ136は、乗算器331−1により“−h-1”倍された各行の演算結果をアキュムレータ233に出力する。スイッチ136がA2端子に設定された場合、スイッチ136は、乗算器331−2により“−z-1”倍された各行の演算結果をアキュムレータ233に出力する。
アキュムレータ233は、演算器141、レジスタ142、および乗算器241により構成される。演算器141は、スイッチ136からの所定倍された演算結果と、レジスタ142からのパリティに乗算器241により“i”倍された値とのFq上の和を演算することにより、新たなパリティ(シンボル)を求め、求められたパリティシンボルを、レジスタ142に供給する。レジスタ142は、シフトレジスタなどにより構成され、演算器141からのパリティシンボルを格納し、格納されるパリティシンボルを、乗算器241を介して、演算器141に供給するともに、P端子を選択しているスイッチ138を介して、符号シンボルc16,c21,c17,c22,c18,c23,c19,c24,c20,c25として後段に出力する。乗算器241は、レジスタ142からのパリティを、“i”倍し、“i”倍された値を、演算器141に供給する。
次に、図13のフローチャートを参照して、符号化装置521の符号化処理を詳しく説明する。なお、図13のステップS51,およびS54乃至S58は、図11のステップS31,およびS34乃至S38と同様の処理を行うため、その詳細な説明は、繰り返しになるので適宜省略する。
パリティ検査行列HQCIRA3の情報部301のHIxyの第u行(1≦u≦15)に対応する情報シンボルをmuとし、符号化装置521から出力される符号シンボルをcu(1≦u≦25)とする。セパレータ132には、時刻t1乃至時刻t15で、情報シンボルm1,m2,m3,…,m15が入力される。
ステップS51において、制御部131は、スイッチ133をD端子に設定し、入力される情報シンボルm1,m2,m3,…,m15を、各レジスタ134−1乃至134−15に格納させるとともに、スイッチ138をD端子に設定し、入力される情報シンボルm1,m2,m3,…,m15を、符号シンボルc1=m1,c2=m2,c3=m3,…,c15=m15として後段に出力させ、ステップS52に進む。
制御部131は、内蔵するクロックに基づいて、時刻t16になったと判定すると、ステップS52において、スイッチ133および138をP端子に設定させ、ステップS53に進み、スイッチ136を、パリティ検査行列HQCIRA3に応じた設定にさせ、ステップS54に進む。これにより、ステップS52においては、加算器135にパリティ検査行列HQCIRA3に応じた値が入力され、入力された値のFq上の和が加算器135により演算され、その演算結果が、所定の乗算器331に供給される。そして、ステップS53においては、乗算器331により加算器135からの演算結果が所定倍され、所定倍された演算結果が、演算器141に供給される。
ステップS52およびS53処理を具体的に説明する。制御部131は、ステップS52において、各レジスタ134−1乃至134−15に格納された情報シンボルmuの巡回を開始させる。スイッチ133−1がP端子に設定されると、レジスタ134−1乃至134−15に格納された情報シンボルは、図7を参照して上述した3つのループでそれぞれ巡回し始める。
加算器135−1および135−2は、図11を参照して上述したように、パリティ検査行列HQCIRA3の情報部301の各行の非零元に応じた値が入力されるように、各レジスタ134−1乃至134−15との接続と、その接続の間に設けられる乗算器231−1乃至231−13が予め設定されている。したがって、各ループが巡回し始めると、加算器135−1には、パリティ検査行列HQCIRA3の情報部301の上ブロック(HI1y(1≦y≦3))の各行の非零元に応じた値が入力される。加算器135−1は、入力された値のFq上の和を演算し、各行に対応する演算結果を、乗算器331−1に供給する。乗算器331−1は、加算器135−1からの演算結果を、“−h-1”倍する。
一方、加算器135−2には、パリティ検査行列HQCIRA1の情報部101の下ブロック(HI2b(1≦b≦3))の各行の非零元に応じた値が入力される。加算器135−2は、入力された値のFq上の和を演算し、各行に対応する演算結果を、乗算器331−2に供給する。乗算器331−2は、加算器135−2からの演算結果を、“−z-1”倍する。
そして、制御部131は、時刻t16,t18,t20,t22,および時刻t24で、スイッチ136をA1端子に設定し、加算器135−1からの−h-1された演算結果を演算器141に供給させ、時刻t17,t19,t21,t23,および時刻t25で、スイッチ136をA2端子に設定し、加算器135−2からの−z-1された演算結果を演算器141に供給させる。
以上により、例えば、時刻t16において、パリティ検査行列HQCIRA3の情報部301の第1行目に対応する値(a・m1,b・m2,c・m6,d・m8,e・m11,f・m12,およびg・m13)が、加算器135−1に入力され、加算器135−1は、入力されたパリティ検査行列HQCIRA3の情報部301の第1行目に対応する値のFq上の和を演算し、演算結果である、パリティ検査行列HQCIRA3の情報部301の第1行目に対応する値のFq上の和を、乗算器331−1に供給する。乗算器331−1は、加算器135−1からの演算結果を、“−h-1”倍する。このとき、スイッチ136がA1端子に設定されているので、乗算器331−1により“−h-1”倍された情報部301の第1行目の演算結果は、スイッチ136を介して、演算器141に供給される。
例えば、時刻t17において、パリティ検査行列HQCIRA3の情報部301の第6行目に対応する値(j・m1,o・m3,p・m4,r・m7,s・m8,およびt・m12)が加算器135−2に入力され、加算器135−2は、入力されたパリティ検査行列HQCIRA3の情報部301の第6行目に対応する値のFq上の和を演算し、演算結果を、乗算器331−2に供給する。乗算器331−2は、加算器135−2からの演算結果を、“−z-1”倍する。このとき、スイッチ136がA2端子に設定されているので、乗算器331−2により“−z-1”倍された情報部301の第6行目の演算結果は、スイッチ136を介して、演算器141に供給される。
例えば、時刻t18において、パリティ検査行列HQCIRA3の情報部301の第2行目に対応する値(a・m2,b・m3,c・m7,d・m9,e・m12,f・m13,およびg・m14)が加算器135−1に入力され、加算器135−1は、入力されたパリティ検査行列HQCIRA3の情報部301の第2行目に対応する値のFq上の和を演算し、演算結果を、乗算器331−1に供給する。乗算器331−1は、加算器135−1からの演算結果を、“−h-1”倍する。このとき、スイッチ136がA1端子に設定されているので、乗算器331−1により“−h-1”倍された情報部301の第2行目の演算結果は、スイッチ136を介して、演算器141に供給される。
例えば、時刻t19において、パリティ検査行列HQCIRA3の情報部301の第7行目に対応する値(j・m2,o・m4,p・m5,r・m8,s・m9,およびt・m13)が加算器135−2に入力され、加算器135−2は、入力されたパリティ検査行列HQCIRA3の情報部301の第7行目に対応する値のFq上の和を演算し、演算結果を、パリティ検査行列HQCIRA3の情報部301の第7行目の演算結果として、乗算器331−2に供給する。乗算器331−2は、加算器135−2からの演算結果を、“−z-1”倍する。このとき、スイッチ136がA2端子に設定されているので、乗算器331−2により“−z-1”倍された情報部301の第7行目の演算結果は、スイッチ136を介して、演算器141に供給される。
以上のような処理と同様な処理が、時刻t20乃至時刻t25においても実行され、乗算器331−1により“−h-1”倍された情報部301の対象行の演算結果、または、乗算器331−2により“−z-1”倍された情報部301の対象行の演算結果は、スイッチ136を介して、演算器141に供給される。
以上のように、ステップS52およびS53において、加算器135−1または135−2から、パリティ検査行列HQCIRA3の情報部301の対象行の演算結果が、乗算器331−1または331−2を介して、所定倍されて、演算器141に供給され、処理は、ステップS54に進む。
ステップS54において、レジスタ142は、後述するステップS56において格納したパリティシンボルを、乗算器241により“i”倍させ、“i”倍されたパリティシンボルを、演算器141に供給し、ステップS55に進む。
ステップS55において、演算器141は、乗算器232からの所定倍された対象行の演算結果と、乗算器241により“i”倍されたパリティシンボルとのFq上の和を演算することにより、新たなパリティシンボルを求め、求められたパリティシンボルを、レジスタ142に供給し、ステップS56に進む。レジスタ142は、ステップS56において、供給されたパリティシンボルを格納し、ステップS57に進み、供給されたパリティシンボルを、P端子が選択されているスイッチ138を介して、符号シンボルcuとして後段に出力し、ステップS58に進む。
ステップS58において、制御部131は、内蔵するクロックに基づいて、時刻t25になり、すべての符号シンボルcuを出力したか否かを判断し、まだ、時刻t25になっておらず、すべての符号シンボルcuを出力していないと判断した場合、ステップS52に戻り、それ以降の処理を繰り返す。ステップS38において、制御部131は時刻t25になり、すべての符号シンボルcuを出力したと判断した場合、符号化処理を終了する。
これにより、符号シンボルは、符号シンボルc16,c21,c17,c22,c18,c23,c19,c24,c20,c25の順で後段に出力される。すなわち、符号化装置221においては、最終的に、10シンボルのパリティが求められ、15シンボルの情報シンボルと、10シンボルのパリティシンボルとを合わせて、25シンボルのIRA型準巡回符号が生成される。以上のようにして、符号化装置321においては、パリティ検査行列HQCIRA3を用いて、情報がIRA型準巡回符号化される。
以上のように、パリティ検査行列HQCIRA3の情報部301が準巡回行列で表され、シフトレジスタを用いて、パリティ検査行列HQCIRA3の情報部301の各行の非零元に応じた値の和が簡単に求められるので、求められた各行の非零元に応じた値の和と、その直前に求められたパリティシンボルのみを用いて、Fq上の和(排他的論理和)を演算することにより、新たなパリティシンボルを求めることができる。
したがって、従来のように高価なランダムインタリーバを用いることなく、符号化装置321のように、簡単なシフトレジスタを用いて、コストを上げることなく、簡単な構成の符号化装置を実現することができる。
図14は、本発明を適用した符号化装置521の構成例を表す。なお、図14の符号化装置521は、図6の符号化装置121、図9の符号化装置221、および図12の符号化装置321の構成例をまとめて表した構成概念図であり、その詳細な説明は繰り返しになるので、適宜省略する。
図14の符号化装置521は、例えば、有限体Fq(q=ps,p:素数,s:自然数)上の任意のIRA型準巡回符号で、情報長k,符号長n,巡回正方行列のサイズm,符号長n=n0×m,情報長k=k0×m,l:=(符号長n−情報長k)/m=n0−k0で表されるIRA型準巡回符号の符号化装置であり、このIRA型準巡回符号するためのパリティ検査行列Hを用いて、入力されるデータ(情報長kの情報)をIRA型準巡回符号化し、符号(符号長nの符号)として出力する処理を行う。すなわち、符号化装置521には、情報長kの情報が入力され、符号長nの符号が出力される。
図14の例においては、制御部131は、内蔵するクロックに基づいて、計時動作を行い、パリティ検査行列Hに応じて、スイッチ133,136および138を所定の端子に設定する(切り替える)制御を行う。セパレータ132は、シリアルに入力される情報が対応するレジスタ134−1乃至134−kに格納されるように、k0本のパラレルに分配し、分配された情報を、スイッチ133に供給する。
スイッチ133−1乃至133−k0は、制御部131の制御により、D端子に設定されると、セパレータ132からの情報を、各レジスタ134−1乃至134−kに格納し、P端子に設定されると、レジスタ134−1乃至134−kに格納された情報を、k0個の各ループで巡回させる。
レジスタ134−1乃至134−kは、情報長kと同数個のシフトレジスタにより構成され、入力される情報を格納する。レジスタ134−1乃至134−kは、k0個のループが繰り返されるように、それぞれm個ずつ、レジスタ134−1乃至134−m、レジスタ134−(m+1)乃至134−2m、レジスタ134−(2m+1)乃至134−3m、…として接続されて構成されている。
加算器135−1および135−2は、IRA型準巡回符号のパリティ検査行列Hの情報部の各行の非零元に応じた値が入力されるように、各レジスタ134−1乃至134−kとの接続と、その接続の間に設けられる乗算器531−1乃至531−lが予め設定されている。乗算器531−1乃至531−lは、パリティ検査行列Hの情報部の各行の非零元に応じた数設けられ、各レジスタ134−1乃至134−kからの情報を所定倍して、接続される加算器135−1乃至135−lに供給する。具体的には、パリティ検査行列Hの情報部を構成する要素(行列)のうち1番上の段(行)の要素の非零元に対応する“h11”倍,“h12”倍,…,“h1w1”倍を行うw1個の乗算器531−1、パリティ検査行列Hの情報部を構成する要素(行列)の上から2番目の段(行)の要素の非零元に対応する“h21”倍,“h22”倍,…,“h2w2”倍を行うw2個の乗算器531−2,そして、さらに、パリティ検査行列Hの情報部を構成する要素(行列)の上からl番目の段(行)の要素(行列)の非零元に対応する“hl1”倍,“hl2”倍,…,“hlwl”倍を行うwl個の乗算器531―lが示されている(h11,h12,h1w1,h21,h22,h2w2,hl1,hl2,hlwl∈Fq)。なお、図12の例の場合、乗算器531−1乃至531−lは、説明の便宜上、それぞれ、乗算器がw1,w2,…,wl個ずつまとめて番号が付されている。
加算器135−1乃至135−lは、例えば、情報部の各行列を要素とした場合、パリティ検査行列Hの情報部の行数(l=n0−k0個)設けられ、各行の非零元に応じた値が入力されると、入力された値のFq上の和を演算する。乗算器532−1乃至532−lは、加算器135−1乃至135−lとスイッチ136の間に設けられ、加算器135−1の演算結果を、所定倍する。具体的には、乗算器532−1は、加算器135−1の演算結果を、“−p1 -1”倍する。乗算器532−2は、加算器135−1の演算結果を、“−p2 -1”倍する。乗算器532−lは、加算器135−lの演算結果を、“−pl -1”倍する(p1,p2,pl∈Fq)。
スイッチ136は、乗算器532−1に接続されるA1端子、乗算器532−2に接続されるA2端子,…,乗算器532−lに接続されるAl端子を有しており、制御部131の制御により、設定された端子に接続される乗算器331により所定倍された各行の演算結果を、アキュムレータ533に出力する。スイッチ136がA1端子に設定された場合、スイッチ136は、乗算器532−1により“−p1 -1”倍された各行の演算結果をアキュムレータ533に出力する。スイッチ136がA2端子に設定された場合、スイッチ136は、乗算器532−2により“−p2 -1”倍された各行の演算結果をアキュムレータ533に出力する。スイッチ136がAl端子に設定された場合、スイッチ136は、乗算器532−lにより“−pl -1”倍された各行の演算結果をアキュムレータ533に出力する。
アキュムレータ533は、図9のアキュムレータ233と同様の構成をしており、演算器141、レジスタ142、および乗算器541により構成される。演算器141は、スイッチ136からの所定倍された演算結果と、レジスタ142からのパリティに乗算器241により“i”が乗算された値とのFq上の和を演算することにより、新たなパリティを求め、求められたパリティを、レジスタ142に供給する。レジスタ142は、シフトレジスタなどにより構成され、演算器141からのパリティを格納し、格納されるパリティを、乗算器541を介して、“q”倍して、演算器141に供給するともに、P端子を選択しているスイッチ138を介して、符号として後段に出力する。乗算器541は、レジスタ142からのパリティに、“q”倍し、“q”倍された値を、演算器141に供給する(q∈Fq)。
なお、符号化装置521による符号化処理は、図7、図11、および図13を参照して上述した符号化処理のいずれかと同様の処理を行うため、繰り返しになるので、その説明を省略するが、符号化装置521においても、最終的に、10のパリティが求められ、15の情報と、10のパリティとを合わせて、25のIRA型準巡回符号が生成される。
以上のように、本発明によれば、IRA型準巡回符号のパリティ検査行列Hの情報部が準巡回行列で表され、シフトレジスタを用いて、パリティ検査行列の情報部のパリティが簡単に求められるので、求められたパリティと、その直前に求められたパリティのみを用いて、Fq上の和(排他的論理和)を演算することにより、新たなパリティを求めることができる。
したがって、従来のように高価なランダムインタリーバを用いることなく、簡単なシフトレジスタを用いて、コストを上げることなく、簡単な構成の符号化装置を実現することができる。
なお、上記説明において、加算器135に入力される値の数は、パリティ検査行列Hの情報部の各行の非零元に依存する。したがって、より低密度なパリティ検査行列を用いる場合(すなわち、符号がLDPC(Low Density Parity Check)符号である場合)、入力される値の数が減り、より低いコストでの符号化を実現することができる。
また、上記説明においては、符号の線形空間として有限体Fqを用いて説明したが、任意の環Rであっても、本発明を適用することができる。
本明細書において、フローチャートに示されるステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
101 情報部,102 パリティ部,121 符号化装置,131 制御部,132 セパレータ,133,133−1乃至133−3 スイッチ,134−1乃至134−15 レジスタ,135−1,135−2 加算器,136 スイッチ,137 アキュムレータ,138 スイッチ,141 演算器,142 レジスタ,201 情報部,202 パリティ部,221 符号化装置,231−1乃至231−13,232 乗算器,233 アキュムレータ,241 乗算器,301 情報部,302 パリティ部,321 符号化装置,331−1,331−2 乗算器,521 符号化装置