近年、誤り訂正符号として、Low-Density Parity-Check(LDPC)符号が注目されている(非特許文献1)。
LDPC符号のパリティ検査行列に特定の規則性をもたせると符号設計が容易になり、さらにその規則性を用いることで符号化回路や復号回路を構成しやすくなるという利点がある。特に、準巡回構造の規則性を用いたLDPC符号が多く研究されている(非特許文献2,3)。
任意の符号語をpシンボル巡回シフトしたものがまた符号語となる、符号長N=pL,情報語長Kの線形ブロック符号は、(N,K)準巡回符号(quasi-cyclic)と呼ばれている(非特許文献4)。
図1は、p=2の2元(12,7)準巡回符号のパリティ検査行列の例を示す図である。図1において、破線で区切った6行2列の各部分行列は、それぞれ、左隣の部分行列を下方向に1行だけ巡回シフトした構造になっている。
非特許文献4には、K段巡回シフトレジスタとそれに接続した複数のXOR回路からパリティビットを逐次出力する符号化回路が開示されている。また、特許文献1には、準巡回符号の別の符号化方法として、p個の生成多項式を繰り返し用いて組織符号に符号化する方法が開示されている。
特許文献1に記載された符号化方法は、全ての符号語が、次数の異なるp個の生成多項式の線形加算で表されるという性質を元にしている。つまり、任意の符号多項式c(x)は、次式(1)で表される。
式(1)において、qj(xp)はxpの多項式であり、gj(x)は、生成多項式と呼ばれる、次数がdeg(gi(x)) mod p = jを満たす最小次数の符号多項式である。
情報シンボル列を[a
0 a
1 ... a
K-1]、パリティシンボル列を[-r
0 -r
1 ... -r
N-K-1]とすると、情報多項式a(x)は次式(2)、パリティ多項式r(x)は次式(3)でそれぞれ表される。
このとき、組織符号化されたシンボル列[a
0 a
1 ... a
K-1 -r
0 -r
1 ... -r
N-K-1]は、符号多項式c(x) = a(x)x
N-K - r(x)と表される。従って、組織符号化は、次式(4)を満たすパリティ多項式を求めることで行うことができる。
特許文献1および2には、情報シンボルをpビット単位で、またはpの倍数のビット単位で入力することにより、クロックサイクル毎の生成多項式の選択を必要とせず、簡易な回路によってパリティビットの生成が可能であることが記載されている。
図2は、情報ビットをmpビット単位で入力し、組織符号に符号化する符号化回路の構成例を示すブロック図である。
符号化回路1は、遅延回路11、パリティ生成回路12、およびマルチプレクサ13から構成される。1クロックサイクル毎にmp(pの倍数)ビット単位で入力された情報ビットは、遅延回路11とパリティ生成回路12に入力される。また、図示せぬ制御回路から入力された制御信号は、パリティ生成回路12とマルチプレクサ13に入力される。
遅延回路11は、mpビット単位で入力された情報ビットを、パリティ生成回路12によるパリティビットの生成にかかる時間だけ遅延させ、マルチプレクサ13に出力する。
パリティ生成回路12は、入力された情報ビットに基づいてパリティビットを生成し、mpビット単位でマルチプレクサ13に出力する。
マルチプレクサ13は、遅延回路11から供給された情報ビットに、パリティ生成回路12により生成されたパリティビットを付加して符号ビットを生成し、mpビット単位で出力する。
図3は、図2のパリティ生成回路12の構成例を示すブロック図である。
図3に示すように、パリティ生成回路12は、組み合わせ回路21とN-K段レジスタ22から構成される。mpビットの情報ビットは組み合わせ回路21に入力される。組み合わせ回路21には制御信号も入力される。
N-K段レジスタ22に記憶されている値(レジスタ値)は、mpビット単位で組み合わせ回路21に入力される情報ビットと、前時刻のレジスタ値により更新される。K個の情報ビットとN-K個の0の入力が終了したとき、N-K段レジスタ22内においてはパリティビットが求められている。
パリティビットが求められた後、N-K段レジスタ22は、制御信号により、mpビット単位のシフトレジスタとして動作する。N-K段レジスタ22において求められたパリティビットが、mpビット単位で出力される。
例えば、パリティ検査行列が図1のp=2の準巡回符号であり、特許文献2に記載されているようなパラレル度mp=4の符号化回路を構成する場合を考える。この場合、4つの生成多項式は次のようになる。
g0(x) = x8+x4+1
g1(x) = x5+x4+x3+1
g2(x) = x6+x3+x
g3(x) = x7+x4+x2+x+1
図4は、4ビット単位(パラレル度mp=4)でパラレル処理を行い、パリティビットを生成するパリティ生成回路12の回路構成の例を示す図である。
図4に示すように、情報ビットは、パリティビットの数(N-K個)だけ0を追加した形で、入力端子I1乃至I4のそれぞれに1ビットずつ入力される。入力端子I1に入力された情報ビットはXOR回路S0-0に供給され、入力端子I2に入力された情報ビットはXOR回路S2-3に供給される。入力端子I3に入力された情報ビットはXOR回路S3-2に供給され、入力端子I4に入力された情報ビットはXOR回路S3-1に供給される。
入力端子I5には制御信号が入力される。情報ビットと0の入力が行われている間、制御信号として値1の信号が入力され、情報ビットと0の入力が終了したとき、制御信号として値0の信号が入力される。入力端子I5に入力された制御信号は、AND回路A1乃至A4に供給される。
レジスタR0は、XOR回路S1-0による演算結果の値を記憶する。レジスタR0に記憶された値を表す信号はXOR回路S0-4に供給される。
レジスタR1は、XOR回路S2-1による演算結果の値を記憶する。レジスタR1に記憶された値を表す信号は、AND回路A1に供給されるとともに、パリティビットとして出力端子O4から出力される。
レジスタR2は、XOR回路S3-2による演算結果の値を記憶する。レジスタR2に記憶された値を表す信号は、AND回路A2に供給されるとともに、パリティビットとして出力端子O3から出力される。
レジスタR3は、XOR回路S1-3による演算結果の値を記憶する。レジスタR3に記憶された値を表す信号は、AND回路A3に供給されるとともに、パリティビットとして出力端子O2から出力される。
レジスタR4は、XOR回路S1-4による演算結果の値を記憶する。レジスタR4に記憶された値を表す信号は、AND回路A4に供給されるとともに、パリティビットとして出力端子O1から出力される。
レジスタR0乃至R4により、図3のN-K段レジスタ22が構成される。
XOR回路S0-0は、入力端子I1に入力された情報ビットと、AND回路A4による演算結果の値に基づいて排他的論理和演算を行う。XOR回路S0-4は、レジスタR0に記憶された値と、AND回路A4による演算結果の値に基づいて排他的論理和演算を行う。
破線#0で囲んで示すように、XOR回路S0-0とS0-4を含む構成が、生成多項式g0(x)の演算を行う構成になる。XOR回路S0-0の場所は生成多項式g0(x)の次数が0の項(1)に対応し、XOR回路S0-4の場所は生成多項式g0(x)の次数が4の項に対応する。
XOR回路S3-0は、XOR回路S0-0による演算結果の値と、AND回路A3による演算結果の値に基づいて排他的論理和演算を行う。XOR回路S3-1は、入力端子I4に入力された情報ビットと、AND回路A3による演算結果の値に基づいて排他的論理和演算を行う。
XOR回路S3-2は、入力端子I3に入力された情報ビットと、AND回路A3による演算結果の値に基づいて排他的論理和演算を行う。XOR回路S3-2による演算結果はレジスタR2に記憶される。XOR回路S3-4は、XOR回路S0-4による演算結果の値と、AND回路A3による演算結果の値に基づいて排他的論理和演算を行う。
破線#3で囲んで示すように、XOR回路S3-0,S3-1,S3-2,S3-4を含む構成が、生成多項式g3(x)の演算を行う構成になる。XOR回路S3-0の場所は生成多項式g3(x)の次数が0の項に対応し、XOR回路S3-1の場所は生成多項式g3(x)の次数が1の項に対応する。XOR回路S3-2の場所は生成多項式g3(x)の次数が2の項に対応し、XOR回路S3-4の場所は生成多項式g3(x)の次数が4の項に対応する。
XOR回路S2-1は、XOR回路S3-1による演算結果の値と、AND回路A2による演算結果の値に基づいて排他的論理和演算を行う。XOR回路S2-1による演算結果はレジスタR1に記憶される。XOR回路S2-3は、入力端子I2に入力された情報ビットと、AND回路A2による演算結果の値に基づいて排他的論理和演算を行う。
破線#2で囲んで示すように、XOR回路S2-1とXOR回路S2-3を含む構成が、生成多項式g2(x)の演算を行う構成になる。XOR回路S2-1の場所は生成多項式g2(x)の次数が1の項に対応し、XOR回路S2-3の場所は生成多項式g2(x)の次数が3の項に対応する。
XOR回路S1-0は、XOR回路S3-0による演算結果の値と、AND回路A1による演算結果の値に基づいて排他的論理和演算を行う。XOR回路S1-0による演算結果はレジスタR0に記憶される。XOR回路S1-3は、XOR回路S2-3による演算結果の値と、AND回路A1による演算結果の値に基づいて排他的論理和演算を行う。XOR回路S1-3による演算結果はレジスタR3に記憶される。XOR回路S1-4は、XOR回路S3-4による演算結果の値と、AND回路A1による演算結果の値に基づいて排他的論理和演算を行う。XOR回路S1-4による演算結果はレジスタR4に記憶される。
破線#1で囲んで示すように、XOR回路S1-0,S1-3,S1-4を含む構成が、生成多項式g1(x)の演算を行う構成になる。XOR回路S1-0の場所は生成多項式g1(x)の次数が0の項に対応し、XOR回路S1-3の場所は生成多項式g1(x)の次数が3の項に対応する。XOR回路S1-4の場所は生成多項式g1(x)の次数が4の項に対応する。
図4のAND回路およびXOR回路により、図3の組み合わせ回路21が構成される。
このような構成を有するパリティ生成回路12においては、符号化を行う前に、全てのレジスタ(レジスタR0乃至R4)が0に初期化される。情報ビットは、パリティビットの数だけ0を追加した形で、1クロックサイクル毎に4ビット単位で入力される。情報ビットが入力されている間の制御信号の値は1になる。
全ての情報ビットと0の入力が終了したとき、レジスタR0乃至R4においては、それぞれパリティビットが求められている。レジスタR0乃至R4において求められた5ビットのパリティビットは、値0の制御信号が入力されることに応じて、出力端子O1乃至O4から4ビット単位で順次出力される。
このような構成を有するパリティ生成回路12においては、パリティビットの生成に必要なクロックサイクル数はN/(mp)で表され、N-K段レジスタ22からパリティビットを出力するのにかかるクロックサイクル数はceil((N-K)/(mp))で表される。このとき、符号化回路の出力の最大スループットTは、T=fN/(N/(mp)+ceil((N-K)/(mp)))となる。ceil(x)は、xを下回らない最小の整数を表す。
パリティ生成回路12の必要パラレル度は、動作周波数と要求スループットから決定される。この場合において、パリティ生成回路12に対する情報ビットの入力パラレル数は、パラレル度mpに等しい数である必要がある。また、パリティ出力のパラレル数に関しても、N-K段レジスタ22のシフト動作を利用するため、パリティ生成回路12の出力のパラレル度に等しい数である必要がある。
[符号化回路の構成]
図7は、本発明の一実施形態に係る符号化回路の構成例を示すブロック図である。
図7に示すように、情報ビットの入力と符号ビットの出力がともにqビットパラレルである準巡回符号の符号化回路51は、入力のパラレル度がqの倍数ではないパラレル度mpのパリティ生成回路63を有している。qは、上述したような他の要因で決まる入出力シンボルのパラレル数である。
また、符号化回路51は、遅延回路61、入力パラレル変換回路62、およびマルチプレクサ64を有している。入力パラレル変換回路62は、パリティ生成回路63の前段に設けられる。1クロックサイクル毎にqビット単位で入力される情報ビットは、遅延回路61と入力パラレル変換回路62に供給される。また、図示せぬ制御回路から入力された制御信号はパリティ生成回路63とマルチプレクサ64に入力される。
遅延回路61は、qビット単位で入力された情報ビットを、入力パラレル変換回路62による変換と、パリティ生成回路63によるパリティビットの生成にかかる時間だけ遅延させ、マルチプレクサ64に出力する。
入力パラレル変換回路62は、パラレル数qの情報ビットをパラレル数mpの情報ビットに変換し、パリティ生成回路63に出力する。入力パラレル変換回路62を設けることにより、パリティ生成回路63の入力のパラレル度をqの倍数とする必要がなくなる。
具体的には、入力パラレル変換回路62は、1クロックサイクル毎にqビット単位で入力される情報ビットを内部のバッファに蓄積(記憶)し、蓄積した情報ビットがmpビット以上になったタイミングで、蓄積した情報ビットのうち、蓄積した順にmpビット分の情報ビットをパリティ生成回路63に出力し、残りの情報ビットを蓄積し続ける。
図8は、入力パラレル変換回路62の構成例を示すブロック図である。
図8に示すように、入力パラレル変換回路62は、バッファ71とバッファ制御回路72から構成される。
バッファ71は、1クロックサイクル毎にqビット単位で入力される情報ビットを蓄積する。
バッファ制御回路72は、バッファ71の情報ビットの蓄積量を監視し、蓄積された情報ビットがmpビット以上になったタイミングで、先に蓄積した情報ビットから順に、mpビット単位でパリティ生成回路63に出力させる。また、バッファ制御回路72は、イネーブル信号をパリティ生成回路63に出力する。イネーブル信号の値は、バッファ71からmpビット単位の情報ビットを出力するタイミングでは1であり、それ以外のタイミングでは0である。
図7の説明に戻り、パリティ生成回路63は、mpビット単位で入力された情報ビットに基づいてパリティビットを生成し、qビット単位でマルチプレクサ64に出力する。パリティ生成回路63においては、入力パラレル変換回路62のバッファ71の情報ビットの蓄積量がmpビット以上になったタイミングで、レジスタの更新が行われることになる。
マルチプレクサ64は、遅延回路61から供給された情報ビットに、パリティ生成回路63により生成されたパリティビットを付加して符号ビットを生成し、qビット単位で出力する。パリティ生成回路63により生成されたパリティビットは、遅延回路61において遅延された、パリティビットの生成に用いられた情報ビットと同じ情報ビットに付加されることになる。
このように、pとqの最小公倍数mLpよりも小さなパラレル度を持つパリティ生成回路63を用いて、情報ビットの入力と符号ビットの出力がともにqビットパラレルである準巡回符号の符号化回路を実現することが可能になる。すなわち、図5のmLpビットパラレル符号化回路42を用いた符号化回路31と較べて、回路構成を簡略化することが可能になる。
図9は、q=16,mp=30とし、16ビットパラレルの情報ビットを30ビットパラレルの情報ビットに変換する入力パラレル変換回路62のバッファ蓄積量の遷移を示す図である。
図9の横軸はクロックサイクル数を表し、縦軸はバッファ71のバッファ蓄積量を表す。
符号化回路51には、1クロックサイクル毎に16ビットの情報ビットが入力される。図9に示すように、最初のクロックサイクル(1クロックサイクル目)のタイミングでは、バッファ71には16ビットの情報ビットが蓄積される。
次のクロックサイクル(2クロックサイクル目)のタイミングでは、1クロックサイクル目に蓄積された16ビットの情報ビットと、2クロックサイクル目に新たに入力された16ビットの情報ビットの、あわせて32ビットが蓄積される。
このとき、バッファ71に蓄積された情報ビットが、パリティ生成回路63のパラレル度以上(mp=30以上)になるため、最初のクロックサイクルで入力された16ビットの情報ビットと、2クロックサイクル目に入力された16ビットのうちの14ビットの情報ビットの、あわせて30ビットがパリティ生成回路63に出力される。また、2クロックサイクル目に入力された16ビットのうちの、出力された14ビットを除く残りの2ビットがバッファ71に蓄積され続ける。
次のクロックサイクル(3クロックサイクル目)のタイミングでは、2クロックサイクル目に出力されずに残った2ビットの情報ビットと、新たに入力された16ビットの情報ビットの、あわせて18ビットが蓄積される。
入力パラレル変換回路62においては、以上の処理が繰り返される。
例えば15クロックサイクル目までに注目すると、1クロックサイクル目から15クロックサイクル目までのうち、図9に示すように2,4,6,8,10,12,14,15クロックサイクル目において、バッファ71に蓄積された情報ビットが30ビット以上になる。このタイミングで、入力パラレル変換回路62は30ビットの情報ビットをパリティ生成回路63に出力する。パリティ生成回路63は、入力パラレル変換回路62から供給された30ビットの情報ビットに基づいてレジスタ値を更新する。
図6を参照して説明したように、16ビット入力を240ビットパラレルに変換する図5の入力パラレル変換バッファ41から情報ビットが出力されるタイミングは、15クロックサイクルに1回の規則的なタイミングである。これに対して、図7の入力パラレル変換回路62から情報ビットが出力されるタイミングは、1クロックサイクルおき、あるいは、連続したクロックサイクルのタイミングになる。14クロックサイクル目と15クロックサイクル目においては情報ビットが連続して出力される。
パリティ生成回路63のレジスタ更新の間隔が不規則になるため、レジスタ更新のタイミング(30ビットの出力タイミング)を指示するイネーブル信号が、入力パラレル変換回路62からパリティ生成回路63に供給される。パリティ生成回路63においては、入力パラレル変換回路62から値1のイネーブル信号が供給されたとき、レジスタの値を更新する動作が行われる。
図10は、図7のパリティ生成回路63の構成例を示すブロック図である。
図10に示すように、パリティ生成回路63は、組み合わせ回路81とN-K段レジスタ82から構成される。入力パラレル変換回路62からmpビット単位で出力された情報ビットと、符号化回路51の外部から供給された制御信号は組み合わせ回路81に入力される。また、入力パラレル変換回路62から出力されたイネーブル信号はN-K段レジスタ82に入力される。
0で初期化されたN-K段レジスタ82に保持されている値は、mpビット単位で組み合わせ回路81に入力される情報ビットと、前時刻のレジスタ値により更新される。最後にN-K個の0が入力された後、N-K段レジスタ82内にパリティビットが求められている。
パリティビットが求められた後、N-K段レジスタ82は、制御信号により、qビット単位のシフトレジスタとして動作する。N-K段レジスタ82により求められたパリティビットが、qビット単位でマルチプレクサ64に出力される。
図11は、4ビット単位(パラレル度mp=4)で入力される情報ビットに基づいてパリティビットを生成し、3ビット単位(q=3)でパリティビットを出力するパリティ生成回路63の回路構成の例を示す図である。
上述したように、パリティ検査行列が図1に示すp=2の準巡回符号である場合、パラレル度mp=4の符号化回路における4つの生成多項式は次のようになる。
g0(x) = x8+x4+1
g1(x) = x5+x4+x3+1
g2(x) = x6+x3+x
g3(x) = x7+x4+x2+x+1
図11において、図4に示す構成と同じ構成には同じ符号を付してある。重複する説明については適宜省略する。
図11に示すように、入力パラレル変換回路62から出力された情報ビットは、パリティビットの数だけ0を追加した形で、1クロックサイクル毎に入力端子I1乃至I4のそれぞれに1ビットずつ入力される。
入力端子I5には制御信号が入力される。パリティ生成回路63に対してK=7個の情報ビットとN-K=5個の0の入力が行われている間、制御信号の値は1であり、情報ビットと0の入力が終了したとき、制御信号の値は0になる。入力端子I5に入力された制御信号は、選択回路s1とs2に供給される。
入力端子I6には、入力パラレル変換回路62から出力されたイネーブル信号が入力される。イネーブル信号の値は、入力パラレル変換回路62からパリティ生成回路63に情報ビットが供給されるタイミングでは1であり、それ以外のタイミングでは0である。
レジスタR0は、イネーブル信号の値が1であるとき値の更新動作を行い、XOR回路S1-0による演算結果の値を記憶する。レジスタR0に記憶された値を表す信号はXOR回路S0-4に供給されるとともに、選択回路s1に供給される。
レジスタR1は、イネーブル信号の値が1であるとき値の更新動作を行い、XOR回路S2-1による演算結果の値を記憶する。レジスタR1に記憶された値を表す信号は、選択回路s2に供給されるとともに、XOR回路S1-0,S1-3,S1-4に供給される。
レジスタR2は、イネーブル信号の値が1であるとき値の更新動作を行い、XOR回路S3-2による演算結果の値を記憶する。レジスタR2に記憶された値を表す信号は、レジスタR5に供給されるとともに、XOR回路S2-1とS2-3に供給される。
レジスタR3は、イネーブル信号の値が1であるとき値の更新動作を行い、選択回路s1により選択された信号により表される値を記憶する。レジスタR3に記憶された値を表す信号は、XOR回路S3-0,S3-1,S3-2,S3-4に供給されるとともに、パリティビットとして出力端子O2から出力される。
レジスタR4は、イネーブル信号の値が1であるとき値の更新動作を行い、選択回路s2により選択された信号により表される値を記憶する。レジスタR4に記憶された値を表す信号は、XOR回路S0-0とS0-4に供給されるとともに、パリティビットとして出力端子O1から出力される。
レジスタR5は、レジスタR2から出力された信号により表される値を記憶する。レジスタR5に記憶された値を表す信号は、パリティビットとして出力端子O3から出力される。
選択回路s1は、値1の制御信号が供給されている場合、XOR回路S1-3による演算結果を表す信号を選択し、レジスタR3に出力する。また、選択回路s1は、値0の制御信号が供給されている場合、レジスタR0に記憶された値を表す信号を選択し、レジスタR3に出力する。
選択回路s2は、値1の制御信号が供給されている場合、XOR回路S1-4による演算結果を表す信号を選択し、レジスタR4に出力する。また、選択回路s2は、値0の制御信号が供給されている場合、レジスタR1に記憶された値を表す信号を選択し、レジスタR4に出力する。
レジスタR0乃至R5、および選択回路s1,s2が、図10のN-K段レジスタ82に対応する。
XOR回路S0-0は、入力端子I1に入力された情報ビットと、レジスタR4に記憶された値に基づいて排他的論理和演算を行う。XOR回路S0-4は、レジスタR0に記憶された値と、レジスタR4に記憶された値に基づいて排他的論理和演算を行う。
XOR回路S3-0は、XOR回路S0-0による演算結果の値と、レジスタR3に記憶された値に基づいて排他的論理和演算を行う。XOR回路S3-1は、入力端子I4に入力された情報ビットと、レジスタR3に記憶された値に基づいて排他的論理和演算を行う。
XOR回路S3-2は、入力端子I3に入力された情報ビットと、レジスタR3に記憶された値に基づいて排他的論理和演算を行う。XOR回路S3-2による演算結果はレジスタR2に記憶される。XOR回路S3-4は、XOR回路S0-4による演算結果の値と、レジスタR3に記憶された値に基づいて排他的論理和演算を行う。
XOR回路S2-1は、XOR回路S3-1による演算結果の値と、レジスタR2に記憶された値に基づいて排他的論理和演算を行う。XOR回路S2-1による演算結果はレジスタR1に記憶される。XOR回路S2-3は、入力端子I2に入力された情報ビットと、レジスタR2に記憶された値に基づいて排他的論理和演算を行う。
XOR回路S1-0は、XOR回路S3-0による演算結果の値と、レジスタR1に記憶された値に基づいて排他的論理和演算を行う。XOR回路S1-0による演算結果はレジスタR0に記憶される。XOR回路S1-3は、XOR回路S2-3による演算結果の値と、レジスタR1に記憶された値に基づいて排他的論理和演算を行う。XOR回路S1-3による演算結果を表す信号は選択回路s1に供給される。XOR回路S1-4は、XOR回路S3-4による演算結果の値と、レジスタR1に記憶された値に基づいて排他的論理和演算を行う。XOR回路S1-4による演算結果を表す信号は選択回路s2に供給される。
図11のXOR回路が、図10の組み合わせ回路81に対応する。
図12は、図11の構成の一部を示す図である。
図12Aはk≧mpである部分の構成を示し、図12Bはq≦k<mpである部分の構成を示す。時刻iのN-K段レジスタ82の値(N-K段レジスタ82のレジスタの値)をRk[i]とする。kは、0からN-K-1までの整数である。
k=4とすると、図12AのRk[i]は、時刻iにおける図11のレジスタR4の値に対応する。また、図11の例においてはmp=4,q=3であるから、図12AのRk-q[i]は、時刻iにおける図11のレジスタR1の値に対応し、Rk-mp[i]は、時刻iにおける図11のレジスタR0の値に対応する。
k=3とすると、図12BのRk[i]は、時刻iにおける図11のレジスタR3の値に対応する。また、図12BのRk-q[i]は、時刻iにおける図11のレジスタR0の値に対応する。
このとき、レジスタR4には、図12Aに示すように、レジスタR0の値から、選択信号の値が1となる場所に対応した、生成多項式のx4の係数のそれぞれが減算された値が入力される。イネーブル信号の値が1であるときにレジスタR4の値が更新される。
また、レジスタR3には、図12Bに示すように、入力端子I2に入力された情報ビットa0, a4または0から、選択信号の値が1となる場所に対応した、生成多項式のx3の係数のそれぞれが減算された値が入力される。イネーブル信号の値が1であるときにレジスタR3の値が更新される。
K=7個の情報ビットおよびN-K=5個の0の入力が終了した場合、制御信号の値は0になる。このとき、レジスタR4には、図12Aに示すようにレジスタR1の値を表す信号が入力され、レジスタR4の値が更新される。また、レジスタR3には、図12Bに示すようにレジスタR0の値を表す信号が入力され、レジスタR3の値が更新される。
これにより、K個の情報ビットおよびN-K個の0の入力が終了したタイミングでは、レジスタR4からパリティビットr0が出力され、レジスタR3からパリティビットr1が出力される。
次の時刻には、レジスタR2に記憶されている値を1時刻だけ遅延させたレジスタR5からパリティビットr2が出力される。また、レジスタR4からパリティビットr3が出力され、レジスタR3からパリティビットr4が出力される。
このように、N-K段レジスタ82のパリティビット出力時の動作は、q=3ビット単位のシフトレジスタの動作となり、その出力は3ビットのパラレル出力になる。
図11の例においては、パリティビットの生成に必要なクロックサイクル数はN/(mp)、N-K段レジスタ82からパリティビットを出力するのにかかるクロックサイクル数はceil((N-K)/q)で求められる。このとき、符号化回路51の出力の最大スループットTは、T=fN/(N/(mp)+ceil((N-K)/q))となる。
図13は、図4に示すパリティ生成回路12の構成の一部を示す図である。
図13Aはk≧mpである部分の構成を示し、図13Bはk<mpである部分の構成を示す。
k=4とすると、図13AのRk[i]は、時刻iにおける図4のレジスタR4の値に対応する。また、図4の例においてはmp=4であるから、図13AのRk-mp[i]は、時刻iにおける図4のレジスタR0の値に対応する。k=3とすると、図13BのRk[i]は、時刻iにおける図4のレジスタR3の値に対応する。
時刻i+1のレジスタ値Rk[i+1]は、時刻iのレジスタ値Rk-mp[i]または情報ビット、選択信号、および制御信号から決定される。図13Aにおいては、レジスタ値Rk[i+1]が、時刻iのレジスタ値Rk-mp[i]、選択信号、および制御信号から決定される。一方、図13Bにおいては、レジスタ値Rk[i+1]が、時刻iの情報ビット、選択信号、および制御信号から決定される。制御信号の値は、情報ビットが入力される区間は1とされる。選択信号の値が1のとき、生成多項式の係数の減算が実施される。
情報ビットの入力が終了し、制御信号の値が0になったとき、時刻i+1のレジスタ値Rk[i+1]は、単に、時刻iのレジスタ値Rk-mp[i]、または情報ビットがシフトして置き換わる。つまり、N-K段レジスタ22は、mpビット単位のシフト動作を行う回路になる。そのため、図3のパリティ生成回路12は、パリティビット出力のパラレル度がmpになっている。
いま、符号化回路の入出力を、図7の符号化回路51のようにqビットパラレルとする場合を考える。この場合、図4の構成を用いたときには、mpビットからqビットへの変換を行う回路をパリティ生成回路12の後段に設ける必要がある。しかし、パリティ生成回路12に対する情報ビットの入力が終了したとき、N-K段レジスタ22においてはパリティビットが求められているため、一旦、パリティビットをパリティ生成回路12からmpビットパラレルで出力し、その変換回路においてqビットパラレルに変換するのは無駄である。図11の構成を採用することにより、このような無駄を省くことが可能になる。
[符号化処理]
ここで、図14のフローチャートを参照して、図7の符号化回路51の処理について説明する。図14の処理は、Kビットの情報ビットを符号化する毎に行われる。
ステップS1において、符号化回路51の遅延回路61は、qビット単位で入力された情報ビットを遅延させ、マルチプレクサ64は遅延したqビットの情報ビットを出力する。
ステップS2において、入力パラレル変換回路62は、qビット単位で入力される情報ビットをバッファ71(図8)に蓄積する。
ステップS3において、バッファ制御回路72は、バッファ71の情報ビットの蓄積量がmpビットを超えたか否かを判定し、超えていないと判定した場合、ステップS1に戻り、それ以降の処理を繰り返す。
バッファ71の情報ビットの蓄積量がmpビットを超えたとステップS3において判定した場合、ステップS4において、バッファ制御回路72は、バッファ71に蓄積された情報ビットのうち、mpビット分の情報ビットをパリティ生成回路63に出力する。
ステップS5において、パリティ生成回路63は、mpビット単位で入力された情報ビットに基づいてパリティビットを生成するための演算を行う。
ステップS6において、制御信号が0かどうかを判定し、0でないと判定した場合、ステップ1に戻り、それ以降の処理を繰り返す。
制御信号が0であるとステップS6において判定した場合、ステップS7において、パリティ生成回路63は、生成したパリティビットをqビット単位でマルチプレクサ64に出力し、マルチプレクサ64は、生成したパリティビットをqビット単位で出力する。
[符号化回路の他の構成]
図15は、本発明の一実施形態に係る符号化回路の他の構成例を示すブロック図である。
図15に示す構成のうち、図7に示す構成と同じ構成には同じ符号を付してある。重複する説明については適宜省略する。
図15の例においては、図7のパリティ生成回路63に代えてパリティ生成回路91が設けられ、パリティ生成回路91の後段にパリティパラレル変換バッファ92が設けられている。1クロックサイクル毎にqビット単位で入力される情報ビットは、遅延回路61と入力パラレル変換回路62に供給される。また、図示せぬ制御回路から入力された制御信号は、パリティパラレル変換バッファ92とマルチプレクサ64に入力される。
パリティ生成回路91は、入力パラレル変換回路62からmpビット単位で入力された情報ビットに基づいてパリティビットを生成し、N-Kビット同時にパリティパラレル変換バッファ92に出力する。パリティ生成回路91においても、入力パラレル変換回路62のバッファ71の情報ビットの蓄積量がmpビット以上になったタイミングで、レジスタの更新が行われる。
パリティパラレル変換バッファ92は、制御信号の値が0であるとき、パリティ生成回路91からN-Kビット同時に出力されたパリティビットを一時的に記憶し、qビット単位で出力する。パリティ生成回路91に対してK個の情報ビットとN-K個の0の入力が行われている間、制御信号の値は1であり、情報ビットと0の入力が終了したとき、制御信号の値は0になる。
図15の構成においては、演算により求められたパリティビットをN-K段レジスタを用いてqビット単位でパリティ生成回路91から出力するのではなく、N-Kビットのパリティビットをパリティパラレル変換バッファ92に一時的に記憶させ、パリティパラレル変換バッファ92をqビット単位のシフトレジスタとして機能させることで、パリティビットのqビットパラレル出力を実現するようになされている。すなわち、パリティ生成回路91内のN-K段レジスタは、図10のN-K段レジスタ82とは異なりシフトレジスタとしては動作しない。
マルチプレクサ64は、遅延回路61から供給された情報ビットに、パリティパラレル変換バッファ92からqビット単位で供給されたパリティビットを付加することによって符号ビットを生成し、qビット単位で出力する。パリティ生成回路91により生成されたパリティビットは、遅延回路61において遅延された、パリティビットの生成に用いられた情報ビットと同じ情報ビットに付加される。
図16は、図15のパリティ生成回路91の構成例を示すブロック図である。
図16に示すように、パリティ生成回路91は、組み合わせ回路101とN-K段レジスタ102から構成される。入力パラレル変換回路62から出力されたmpビットの情報ビットは組み合わせ回路101に入力される。また、入力パラレル変換回路62から出力されたイネーブル信号はN-K段レジスタ102に入力される。シフトレジスタとしての動作を行わないから、外部から符号化回路51に入力された制御信号はパリティ生成回路91には入力されない。
0で初期化されたN-K段レジスタ102に保持されている値は、mpビット単位で組み合わせ回路101に入力される情報ビットと、前時刻のレジスタ値により更新される。最後にN-K個の0が入力された後、N-K段レジスタ102内にパリティビットが求められている。求められたN-Kビットのパリティビットは、パリティパラレル変換バッファ92に一度に出力される。
図17は、4ビット単位(パラレル度mp=4)で入力される情報ビットに基づいてパリティビットを生成し、5ビット(N-K=5)同時に出力するパリティ生成回路91の回路構成の例を示す図である。
図17に示すように、パリティ生成回路91は、選択回路が設けられていない点と制御信号が入力されない点を除いて、図11のパリティ生成回路63の構成と同様の構成を有する。重複する説明については適宜省略する。
入力パラレル変換回路62から出力された情報ビットは、パリティビットの数だけ0を追加した形で、1クロックサイクル毎に入力端子I1乃至I4のそれぞれに1ビットずつ入力される。
入力端子I6には、入力パラレル変換回路62から出力されたイネーブル信号が入力される。イネーブル信号の値は、入力パラレル変換回路62(バッファ71)からパリティ生成回路91に情報ビットが供給されるタイミングでは1であり、それ以外のタイミングでは0である。
レジスタR0は、イネーブル信号の値が1であるとき値の更新動作を行い、XOR回路S1-0による演算結果の値を記憶する。レジスタR0に記憶された値を表す信号はXOR回路S0-4に供給されるとともに、パリティビットとして出力端子O5から出力される。
レジスタR1は、イネーブル信号の値が1であるとき値の更新動作を行い、XOR回路S2-1による演算結果の値を記憶する。レジスタR1に記憶された値を表す信号は、XOR回路S1-0,S1-3,S1-4に供給されるとともに、パリティビットとして出力端子O4から出力される。
レジスタR2は、イネーブル信号の値が1であるとき値の更新動作を行い、XOR回路S3-2による演算結果の値を記憶する。レジスタR2に記憶された値を表す信号は、XOR回路S2-1とS2-3に供給されるとともに、パリティビットとして出力端子O3から出力される。
レジスタR3は、イネーブル信号の値が1であるとき値の更新動作を行い、XOR回路S1-3による演算結果の値を記憶する。レジスタR3に記憶された値を表す信号は、XOR回路S3-0,S3-1,S3-2,S3-4に供給されるとともに、パリティビットとして出力端子O2から出力される。
レジスタR4は、イネーブル信号の値が1であるとき値の更新動作を行い、XOR回路S1-4による演算結果の値を記憶する。レジスタR4に記憶された値を表す信号は、XOR回路S0-0とS0-4に供給されるとともに、パリティビットとして出力端子O1から出力される。
レジスタR0乃至R4が、図16のN-K段レジスタ102に対応する。また、図17に示すXOR回路が、図16の組み合わせ回路101に対応する。
図17に示すように、例えばK=7個の情報ビットとN-K=5個の0の入力が終了したとき、レジスタR0乃至R4にはパリティビットが求められている。求められた5ビット全てのパリティビットは同時に出力され、後段のパリティパラレル変換バッファ92に記憶される。パリティパラレル変換バッファ92がq=3ビット単位のシフトレジスタとして動作することによって、パリティビットの3ビットパラレル出力(マルチプレクサ64に対する入力)が実現される。
これにより、シフトレジスタ動作を行うための制御を、パリティ生成回路(パリティ生成回路91)を対象として行う必要がなくなる。
図15の構成は、図7の構成と比べて、パリティパラレル変換バッファ92のメモリであるN-Kビット分のメモリを多く用意する必要がある。しかし、パリティビットをパリティ生成回路91から出力している間はN-K段レジスタ102が利用されないため、次の符号語の符号化を連続して行わせることができ、これにより、より高いスループットを実現することが可能になる。図17の構成の場合、符号化回路51の出力の最大スループットTはT=fmpにより表される。
[符号化処理]
ここで、図18のフローチャートを参照して、図15の符号化回路51の処理について説明する。図18の処理は、Kビットの情報ビットを符号化する毎に行われる。
図18のステップS11乃至S15の処理は、図14のステップS1乃至S5の処理と同じ処理である。すなわち、ステップS11において、符号化回路51の遅延回路61は、qビット単位で入力された情報ビットを遅延させ、マルチプレクサ64は遅延したqビットの情報ビットを出力する。
ステップS12において、入力パラレル変換回路62は、qビット単位で入力される情報ビットをバッファ71に蓄積する。
ステップS13において、バッファ制御回路72は、バッファ71の情報ビットの蓄積量がmpビットを超えたか否かを判定する。
バッファ71の情報ビットの蓄積量がmpビットを超えたとステップS13において判定した場合、ステップS14において、バッファ制御回路72は、バッファ71に蓄積された情報ビットのうち、mpビット分の情報ビットをパリティ生成回路91に出力する。
ステップS15において、パリティ生成回路91は、mpビット単位で入力された情報ビットに基づいてパリティビットを生成するための演算を行う。
ステップS16において、制御信号が0かどうかを判定し、0でないと判定した場合、ステップ11に戻り、それ以降の処理を繰り返す。
制御信号が0であるとステップS16において判定した場合、ステップS17において、パリティ生成回路91は、生成したN-Kビットの全てのパリティビットを出力する。
ステップS18において、パリティパラレル変換バッファ92は、パリティ生成回路91からN-Kビット同時に出力されたパリティビットを一時的に記憶し、qビット単位でマルチプレクサ64に出力し、マルチプレクサ64は、生成したパリティビットをqビット単位で出力する。
[適用例]
図19は、通信システムの構成を示す図である。
図19の通信システムは送信装置111と受信装置112から構成される。送信装置111は、準巡回符号符号化回路121、変調回路122、および信号送出回路123を含み、受信装置112は、信号受信回路131、復調回路132、および誤り訂正復号回路133を含む。
送信装置111の準巡回符号符号化回路121は図7または図15の構成を有する。準巡回符号符号化回路121は、外部から入力された送信対象のデータを上述したようにして組織符号化し、符号化して得られた符号ビットからなる送信データを変調回路122に出力する。
変調回路122は、準巡回符号符号化回路121から供給された送信データを所定の変調方式で変調し、変調後の送信データを信号送出回路123に出力する。
信号送出回路123は、変調後の送信データを送信する。信号送出回路123から出力された送信データは、ケーブルを介して、または電波を介して受信装置112により受信される。
受信装置112の信号受信回路131は、送信装置111から送信されてきたデータを受信し、復調回路132に出力する。
復調回路132は、信号受信回路131において受信されたデータに対して復調処理を施し、復調後のデータを誤り訂正復号回路133に出力する。
誤り訂正復号回路133は、復調回路132から供給されたデータに付加されているパリティビットを用いて、適宜、情報ビットの誤り訂正を行い、誤り訂正後のデータを受信データとして出力する。
図20は、記録システムの構成を示す図である。
図20の記録システムは記録装置141と再生装置142から構成される。記録装置141は、準巡回符号符号化回路151、チャネル符号化回路152、および信号記録回路153を含み、再生装置142は、信号再生回路161、チャネル復号回路162、および誤り訂正復号回路163を含む。
記録装置141の準巡回符号符号化回路151は、図7または図15の構成を有する。準巡回符号符号化回路151は、外部から入力された記録対象のデータを上述したようにして組織符号化し、符号化して得られた符号ビットからなる記録データをチャネル符号化回路152に出力する。
チャネル符号化回路152は、準巡回符号符号化回路151から供給された記録データに対してチャネル符号化を施し、記録データを信号記録回路153に出力する。
信号記録回路153は、チャネル符号化回路152から供給された記録データをハードディスク、フラッシュメモリ、光ディスクなどの記録媒体143に記録する。信号記録回路153によりデータが記録された記録媒体143は再生装置142に提供される。
再生装置142の信号再生回路161は、記録媒体143に記録されたデータを読み出す。信号再生回路161は、読み出したデータを再生し、再生して得られたデータをチャネル復号回路162に出力する。
チャネル復号回路162は、信号再生回路161により再生されたデータに対してチャネル復号処理を施し、復号して得られたデータを誤り訂正復号回路163に出力する。
誤り訂正復号回路163は、チャネル復号回路162から供給されたデータに付加されているパリティビットを用いて、適宜、情報ビットの誤り訂正を行い、誤り訂正後のデータを再生データとして出力する。
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。