(57)【特許請求の範囲】
【請求項１】
データ系列からシンドローム及び消失データを生成する入力パラメータ演算手段と、
所定の復号演算操作を示す命令コードに基づいて、前記シンドローム及び消失データを用いた復号演算を行ない、誤り値データ及び誤り位置データを生成する復号演算手段と、
前記誤り値データ及び誤り位置データを用いて訂正操作を行なう訂正操作手段と、
を有するリードソロモン復号装置において、
前記復号演算手段が、
ガロア体での積和演算を1ステップで実行する演算処理部と、
少なくとも第1の入力ポート、第2の入力ポート及び第3の入力ポートと、
前記第1の入力ポート及び前記第2の入力ポートから入力されたデータを乗算する乗算器と、
前記乗算器の出力データと前記第3の入力ポートから入力されたデータとの加算を行なう加算器と、
前記命令コードを記憶する第1の記憶手段と、
前記命令コードの実行順序を制御するシーケンサと、
前記演算処理部の演算結果を一時的に記憶する複数の作業レジスタを備える第2の記憶手段と、
前記命令コードに基づいて、前記複数の作業レジスタの記憶内容をそれぞれ前記第1〜3の入力ポートに出力するポート選択手段と、
を備える、
リードソロモン復号装置。
【請求項２】
前記第2の記憶手段が、前記命令コードに応じて決定した前記作業レジスタに前記演算処理部からの演算結果を記憶し、
前記ポート選択手段が、前記複数の作業レジスタの記憶内容をそれぞれ前記第1〜3の入力ポートの何れかに出力可能である、
請求項1に記載のリードソロモン復号装置。
【請求項３】
前記第2の記憶手段が、前記複数の作業レジスタとしてシフトレジスタを用いており、前記演算処理部からの演算結果を所定の作業レジスタに最初に記憶し、
前記ポート選択手段が、前記複数の作業レジスタの記憶内容をそれぞれ前記第1〜3の入力ポートの何れかに出力可能である、
請求項1に記載のリードソロモン復号装置。
【請求項４】
前記命令コードが、オペレーションフィールドと、前記複数の作業レジスタの記憶内容をそれぞれ前記復号演算手段の前記第1〜3の入力ポートの何れに出力するかを示すフィールドとを有する、
請求項1乃至3の何れかに記載のリードソロモン復号装置。
【請求項５】
前記復号演算手段が、
ガロア体GF(2i)の第1の元αW(AW, i-1, AW, i-2, AW, i-3, …, AW, 3, AW, 2, AW, 1, AW, 0)Tと第2の元αV(AV, i-1, AV, i-2, AV, i-3, …, AV, 3, AV, 2, AV, 1, AV, 0)Tとの乗算を行なう乗算器であって、
前記第1の元と前記ガロア体の原始元αのα0, α1, α2, α3, …, αi-3, αi-2, αi-1とのそれぞれの演算を並列に行なうi個の乗算部と、
前記i個の乗算部の乗算結果と前記AV, 0, AV, 1, AV, 2, AV, 3, …, AV, i-3, AV, i-2, AV, i-1とのそれぞれの論理積演算を並列に行なうi個の論理積演算部と、
前記i個の論理積演算部の演算結果を加算する加算部と、
を備える乗算器を有する、
請求項1乃至4の何れかに記載のリードソロモン復号装置。
【請求項６】
前記復号演算手段が、
ガロア体GF(2i)の第1の元αW(AW, i-1, AW, i-2, AW, i-3, …, AW, 3, AW, 2, AW, 1, AW, 0)Tと第2の元αV(AV, i-1, AV, i-2, AV, i-3, …, AV, 3, AV, 2, AV, 1, AV, 0)Tとの乗算を行なう乗算器であって、
前記第1の元と前記AV, 0, AV, 1, AV, 2, AV, 3, …, AV, i-3, AV, i-2, AV, i-1とのそれぞれの論理積演算を並列に行なうi個の論理積演算部と、
前記i個の論理積演算部の乗算結果と前記ガロア体の原始元αのα0, α1, α2, α3, …, αi-3, αi-2, αi-1とのそれぞれの乗算を並列に行なうi個の乗算部と、
前記i個の乗算部の乗算結果を加算する加算部と、
を備える乗算器を有する、
請求項1乃至4の何れかに記載のリードソロモン復号装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記録媒体やディジタル伝送の誤り訂正符号化として用いられるリードソロモン符号化された信号を復号するリードソロモン復号装置に関する。
【０００２】
【従来の技術および発明が解決しようとする課題】
リード・ソロモン符号（以下ＲＳ符号）は、その符号化効率の良さとバーストエラーに対する適正から、主に記録媒体やディジタル伝送の外符号に用いられている。
例えばコンパクトディスクで採用されているエラー訂正符号は、ＣＩＲＣ訂正符号（クロスインターリーブ・リード・ソロモン符号）と称され、インターリーブの技法と組み合わせた積符号である。その外符号としてＲＳ（２８、２４）符号が、内符号としてＲＳ（３２、２８）符号が採用されていて、それぞれＣ２符号及びＣ１符号と呼ばれる。いずれの符号とも、ひとつのＲＳ符号化シンボルは１バイトで構成され、ひとつのＲＳ符号化ブロックは４バイトのパリティ検査列を含んでいる。
【０００３】
一般に、ＲＳ符号は２ｔシンボルの検査列でｔシンボルの訂正が可能である。ｔシンボルの訂正にはｔ個の誤り位置とそのそれぞれの誤りに対応したｔ個の誤りの値を知る必要がある。ＲＳ符号はｔ個の誤りの発生に対し、復号側でシンドローム演算をすることで２ｔ個の線形独立な方程式を得る。この方程式を解くことで２ｔ個の未知数である、前記ｔ個の誤り位置とそのそれぞれの誤り位置に対応した前記ｔ個の誤りの値を求めることができる。
【０００４】
一方、ＣＩＲＣ符号のように積符号の構成を取っているものは、内符号に対する内側ＲＳ復号において訂正できなかったＲＳ符号化ブロックや誤訂正の可能性の比較的高いＲＳ符号化ブロックに消失フラグを付加することで、外符号に対応した外側ＲＳ復号において消失エラー訂正が可能になる。消失フラグが付加された内符号の消失シンボルはデ・インターリーブによって複数の外側のＲＳ符号化ブロックに分散される。消失エラー訂正では、前記消失シンボルに誤りが存在すると仮定してシンドローム演算から得られる連立方程式を解く。誤り位置を既知として解くので最大２ｔ個の誤りを値を求めることができる。即ち、２ｔシンボルの検査列を持つＲＳ符号に対しては、消失エラー訂正を実行することで最大２ｔシンボルの誤り訂正が可能である。
【０００５】
ＣＩＲＣ符号を例に挙げて、消失エラー訂正の手法を説明する。
ＣＩＲＣ符号の場合、内符号であるＣ１符号のＲＳ復号（Ｃ１復号）において消失フラグを付加することで、外符号であるＣ２符号のＲＳ復号（Ｃ２復号）で消失エラー訂正が可能である。Ｃ１符号、Ｃ２符号ともにｔ＝２であるから、Ｃ１復号は最大２バイトの訂正が、Ｃ２復号の消失エラー訂正では最大４バイトの訂正がそれぞれ可能である。そのＣ２復号におけるシンドロームｓ0 〜ｓ3 と、誤り値ｅ1 〜ｅ4 が次のようにして求められる。
ＣＩＲＣ符号の符号生成多項式Ｇｅ（ｘ）は、下記式（１）で示される。
【０００６】
【数１】
0003850511.tif 000002
【０００７】
ここでαはガロア体の原始元である。このとき、入力系列からシンドローム演算により得たｓ0 〜ｓ3 は、前記ｘ1 〜ｘ4 およびｅ1 〜ｅ4 との間に下記式（２）で示される関係がある。
【０００８】
【数２】
0003850511.tif 000003
【０００９】
ここで記号‘・’はガロア体上の乗算を示し、記号‘＋’はガロア体上の加算を示す。以下、あるガロア体の元同士の四則演算は、そのガロア体上での演算を示すこととする。
前記式（２）を連立方程式を解いて、未知数である誤り値ｅ1 〜ｅ4 を求めると次のようになる
まず、ｅ4 は、下記式（３）として得られる。
【００１０】
【数３】
0003850511.tif 000004
【００１１】
この得られたｅ4 を前記式（２）に代入して３つの等式から成る連立方程式を再構成する。即ち、ＣＩＲＣ符号で用いられているガロア体は加算と減算が同じであることに注意して下記式（４）のように修正することで、前記式（２）の連立方程式は下記式（５）に変形される。
【００１２】
【数４】
0003850511.tif 000005
【００１３】
【数５】
0003850511.tif 000006
【００１４】
これは、連立方程式の解を、手計算で順に求めるときによく用いられる手法である。次に、式（５）の連立方程式を解いてｅ3 を求めると、下記式（６）のようになる。
【００１５】
【数６】
0003850511.tif 000007
【００１６】
同様にして修正を施すことで、前記式（５）の連立方程式は下記式（７），（８）のように変形される。
【００１７】
【数７】
0003850511.tif 000008
【００１８】
【数８】
0003850511.tif 000009
【００１９】
さらに、式（８）の連立方程式を解いてｅ2 を求めると、下記式（９）となる。
【００２０】
【数９】
0003850511.tif 000010
【００２１】
次に、この求めたｅ2 を前記式（８）に代入して下記式（１０）を得る。
【００２２】
【数１０】
0003850511.tif 000011
【００２３】
このようにして、誤り値ｅ1 〜ｅ4 を順次求めることができる。
上述した手法において、情報として元来もっているものと、実際の復号の際に行われる演算操作とを区別するために、記号‘＝’と‘←’とを使い分けている。つまり、実際の復号演算に対応するのは、式（３）、（４）、（６）、（７）、（９）および（１０）であり、少なくとも、ガロア体上の加算が２３回、乗算が１７回、除算が３回必要である。
一方、消去エラー訂正を行わない場合には、Ｃ２復号で最大２バイトまで訂正（２重エラー訂正）ができる。このときは、シンドロームｓ0 〜ｓ3 から、誤り値ｅ1 ，ｅ2 と誤り位置ｘ’1 ，ｘ’2 を求める。
以上は、４重消去エラー訂正、すなわち、消去位置の数が４の場合の復号演算処理過程である。
【００２４】
以下、従来のリードソロモン復号装置について説明する。
図９は、従来のリードソロモン復号装置１の構成図である。
図９に示すように、リードソロモン復号装置１は、メモリブロック２、バスＩ／Ｆブロック３および復号演算処理部４を備えている。
メモリブロック２は、スクラッチパッドメモリ５，６およびスイッチ７，８を備えている。
スイッチ７は、入力データを選択的にスクラッチパッドメモリ５，６に出力する。スイッチ８は、スクラッチパッドメモリ５の記憶内容を選択的に訂正操作実行器１２に出力する。
【００２５】
バスＩ／Ｆブロック３は、入力パラメータ演算器９、レジスタＢOUT １０、バイナリカウンタ１１、訂正操作実行器１２およびレジスタＢIN１３を備えている。
復号演算処理部４は、スイッチ１４、レジスタＧIN１５、レジスタＧOUT １６および復号演算器１７を備えている。
図１０は、リードソロモン復号装置１の動作時におけるデータおよび構成要素の時系列的な状態を示し、（Ａ）は入力データ、（Ｂ）は出力データ、（Ｃ）はレジスタＢOUT １０の記憶状態、（Ｄ）はレジスタＢIN１３の記憶状態、（Ｅ）はレジスタＧOUT １６の記憶状態、（Ｆ）はレジスタＧIN１５の記憶状態、（Ｇ）は復号演算器１７の処理状態をそれぞれ示している。
【００２６】
図１０に示すように、メモリブロック２のスクラッチパッドメモリ５においてＣ１符号に関する入力データの入出力を行っているときには、バスＩ／Ｆブロック３はＣ１符号に関する入力データ対して、入力パラメータ演算器９において復号演算入力パラメータの計算を行い、訂正操作実行器１２において訂正操作を行っている。また、このとき、復号演算処理部４ではＣ２符号に関する入力データについてＣ２復号処理が行われている。
【００２７】
また、スクラッチパッドメモリ６においてＣ２符号に関する入力データの入出力を行っているときには、バスＩ／Ｆブロック３はＣ２符号に関する入力データ対して、入力パラメータ演算器９において復号演算入力パラメータの計算を行い、訂正操作実行器１２において訂正操作を行っている。また、このとき、復号演算処理部４ではＣ１符号に関する入力データについてＣ１復号処理が行われている。
【００２８】
ここで、復号演算入力パラメータとは、具体的には、シンドローム（Ｓ）および消失位置（Ｉ）である。
シンドローム（Ｓ）は、図９に示す入力パラメータ演算器９およびレジスタＢOUT １０の組み合わせによって演算される。
図１１は、入力パラメータ演算器９およびレジスタＢOUT １０の構成図である。
図１１に示すように、入力パラメータ演算器９は、乗算器２４〜２７、加算器２０〜２３、消去フラグ検出器２８および分配器２９を備えている。
また、レジスタＢOUT １０は、レジスタ３０〜３３およびレジスタ３４〜３７を備えている。
【００２９】
乗算器２４〜２７は、乗算係数が固定値のガロア体の乗算器であり、それぞれ×α0 、×α1 、×α2 、×α3 の乗算を行う。
消去フラグ検出器２８は、入力データに含まれる消去フラグが「１」であるか否かを検出する。
分配器２９は、入力データに含まれる各ＲＳシンボル位置と対応して動作するバイナリカウンタ１１の出力をレジスタＢOUT １０のレジスタ３４〜３７のいずれかに出力して記憶させる。
このレジスタ３４〜３７の記憶結果が消失位置（Ｉ）を示す。
【００３０】
消失位置（Ｉ）は、図９に示す復号演算器１７において、後述するコンバータにより、ガロア体の表現に、すなわち「ｉ」から「αi 」に変換される。
具体的には、Ｉ＝｛ｉ1 ，ｉ2 ，ｉ3 ，ｉ4 ｝が、Ｘ＝｛ｘ1 ，ｘ2 ，ｘ3 ，ｘ4 ｝に変換される。
【００３１】
４重消失エラー訂正を実行する場合の前記式（３），（４），（６），（７）および（１０）に対応する復号演算は、復号演算処理部４において実行され、レジスタＢOUT １０からの復号演算入力パラメータＳ＝｛ｓ0 ，ｓ1 ，ｓ2 ，ｓ3 ｝と、Ｉ＝｛ｉ1 ，ｉ2 ，ｉ3 ，ｉ4 ｝を変換して得られたＸ＝｛ｘ1 ，ｘ2 ，ｘ3 ，ｘ4 ｝とを用いて、復号演算出力パラメータＥ＝｛ｅ1 ，ｅ2 ，ｅ3 ，ｅ4 ｝およびＸ’＝Ｘ＝｛ｘ1 ，ｘ2 ，ｘ3 ，ｘ4 ｝を得る。消失エラー訂正を行わない場合には、前述した２重エラー訂正においては、復号演算入力パラメータＳ＝｛ｓ0 ，ｓ1 ，ｓ2 ，ｓ3 ｝を用いて、復号演算出力パラメータＥ＝｛ｅ1 ，ｅ2 ｝およびＸ’＝｛ｘ’1 ，ｘ’2 ｝を得る。
【００３２】
誤り位置ＸあるいはＸ’は、復号演算処理部４において、後述するコンバータで、指数値に、すなわちαi からｉに変換される。具体的には、Ｘ’＝Ｘ＝｛ｘ1 ，ｘ2 ，ｘ3 ，ｘ4 ｝がＩ＝｛ｉ1 ，ｉ2 ，ｉ3 ，ｉ4 ｝に変換され、Ｘ’＝｛ｘ’1 ，ｘ’2 ｝がＩ’＝｛ｉ’1 ，ｉ’2 ｝に変換される。
【００３３】
図１２は、訂正操作実行器１２およびレジスタＢIN１３の構成図である。
図１２に示すように、訂正操作実行器１２は、比較器４０、加算器４５およびゲートロジック４６を備えている。
また、レジスタＢIN１３は、レジスタ４１〜４４およびレジスタ４７〜５０を備えている。
【００３４】
バスＩ／Ｆブロック３は、レジスタＧOUT １６から入力した誤り値（Ｅ）と誤り位置（Ｉ’）とを用いて、訂正操作を実行する。
バイナリカウンタ１１は、スイッチ７，８によるスクラッチパッドメモリ５，６からの出力の切り換わりに対応して動作し、バイナリカウンタ１１のバイナリカウンタ値が誤り位置（Ｉ’）の構成要素のいずれか（ｉ’n ）と一致したときに、ゲートロジック４６から対応する誤り値ｅn が加算器４５に出力される。そして、加算器４５において、誤り値ｅn と、スイッチ８からのメモリブロックのデータ出力とについて、ガロア体の加算が行われ、加算結果が出力データとなる。
【００３５】
次に、復号演算処理部４について説明する。
図１３は、復号演算処理部４の構成図である。
図１３に示すように、復号演算処理部４は、マイクロコードＲＯＭ５０、シーケンサ５１、デスティネイションコントローラ５２、ワーキングレジスタ５３、ＧＬＵ(Global Logic Unit) ５４、ポート選択器５５を備えている。
【００３６】
ＣＩＲＣ符号のようにｔが４より小さく、連立方程式から解が直接的に求められる場合で、かつ、処理スピードが比較的遅くても良いときには、復号演算処理部４としては、ＲＩＳＣ(Reduced Instruction Set Computer)型のものが用いられる。
復号演算処理部４では、各演算は逐次的に行われ、演算セットは、ＧＬＵ５４として時分割共有化される。また、一連の演算処理は、マイクロコード化されて、インストラクションコードとしてマイクロコードＲＯＭ５０に格納され、シーケンサ５１からのＲＯＭアドレスによって、処理順序（メモリからの読み出し順序）が制御される。
【００３７】
また、途中の演算結果は、予め用意された複数のワーキングレジスタ５３に一時的に記憶されるが、どのワーキングレジスタ５３に記憶するかも、インストラクションコード内のデスティネイションコントロールコードに記述されている。この手法によれば、処理スピードの制限はあるものの、ＧＬＵ５４の時分割共有化による装置の縮小化ができると共に、演算処理のマイクロコード化により設計の自由度を高めることができる。
例えば、２つのガロア体の元同士の加算は、各ビットの排他的論理和に相当し、復号演算処理部４では１ステップで実現できる。すなわち、ＧＬＵ５４は、ビット毎の排他的論理和の機能を含んでいる。但し、ガロア体における乗算は、加算に比べてはるかに複雑であり、これをＲＯＭを用いて実現しようとすると、２バイトのアドレス入力に対して１バイトの出力を得ることになり、非常に規模が大きくなってしまう。
【００３８】
ＧＬＵ５４の構成について説明する。
図１４は、ＧＬＵ５４の構成図である。
図１４に示すように、ＧＬＵ５４は、オペレイションロジック６０，６１、コンバータ６２，６３およびオペレイションセレクタ６４を備えている。
ＧＬＵ５４では、２つの入力データａ，ｂのガロア体の元のそれぞれを、コンバータ６２において、対応する原始元の指数の値に変換、すなわちαi をｉに変換し、指数同士の加算を実行する。そして、その得られた加算結果を、コンバータ６３において、対応するガロア体の元に変換、すなわち、ｉをαi に変換する。
【００３９】
例えば、αv とαw の乗算を実行して、αV+W を得るには、ＧＬＵ５４において、下記式（１１）に示す４つの演算処理が必要で、少なくとも４ステップを要する。
【００４０】
【数１１】
0003850511.tif 000012
【００４１】
除算も同様で、乗算における指数部の加算の代わりに指数部の減算を実行する。
従って、上述した手法では、誤り値ｅ1 〜ｅ4 を求めるには、上記式（３），（４），（６），（７），（９）および（１０）における乗算・除算が２０回あるので、これだけでも８０ステップ以上必要となる。これに、２３回の加算を含めると、合計１０３ステップ以上必要となる。そのため、高速処理の要求に応えることができない。
なお、ｔが４より大きい場合には、前記式（２）に示したような連立方程式を解くことは非現実的であるため、ユークリッド復号法などの繰り返しアルゴリズムが採用される。
しかしながら、いずれにしても、ガロア体の乗算や除算に４ステップも必要となると、高速処理の実現は困難である。
【００４２】
一方、ＣＤ−ＲＯＭのデータ再生におけるスピードの要求は、現在、２倍速から１２倍速以上にまで高まっており、誤り訂正の処理ステップ数の制限が日増しに厳しくなってきている。さらには、光学系の読み取り誤差が、当然大きくなってくるわけで、前記消失エラー訂正による訂正能力の強化が強く望まれている。つまり、より高い機能を、より少ないステップ数で実現する必要がある。
【００４３】
１２倍速対応のＣ１復号およびＣ２復号を実現するには、例えば演算の１ステップを１６ＭＨｚの１クロック内で終了するとすれば、Ｃ１とＣ２の１回ずつの復号を、１９２ステップ以内で実行する必要がある。これには分岐処理等の周辺処理を含めての条件なので、Ｃ２復号のコアの処理はその１／４以内のステップ数で実現する必要がある。
しかしながら、従来の構成では、例えばＣ２復号で消失エラー訂正を行うときに、その訂正コアの処理だけで１０３ステップ以上の演算ステップ数を要し、高速処理の要求に答えることができない。
【００４４】
本発明は、上述した従来技術に鑑みてなされ、回路規模を大幅に増大させることなく、復号演算を高速に行うことが可能なリードソロモン復号装置を提供することを目的とする。
【００４５】
本発明によれば、データ系列からシンドローム及び消失データを生成する入力パラメータ演算手段と、所定の復号演算操作を示す命令コードに基づいて、前記シンドローム及び消失データを用いた復号演算を行ない、誤り値データ及び誤り位置データを生成する復号演算手段と、前記誤り値データ及び誤り位置データを用いて訂正操作を行なう訂正操作手段とを有するリードソロモン復号装置において、
前記復号演算手段が、ガロア体での積和演算を1ステップで実行する演算処理部と、少なくとも第1の入力ポート、第2の入力ポート及び第3の入力ポートと、前記第1の入力ポート及び前記第2の入力ポートから入力されたデータを乗算する乗算器と、前記乗算器の出力データと前記第3の入力ポートから入力されたデータとの加算を行なう加算器と、前記命令コードを記憶する第1の記憶手段と、前記命令コードの実行順序を制御するシーケンサと、前記演算処理部の演算結果を一時的に記憶する複数の作業レジスタを備える第2の記憶手段と、前記命令コードに基づいて、前記複数の作業レジスタの記憶内容をそれぞれ前記第1〜3の入力ポートに出力するポート選択手段とを備える、
リードソロモン復号装置が提供される。
【００４９】
好ましくは、前記第2の記憶手段が、前記命令コードに応じて決定した前記作業レジスタに前記演算処理部からの演算結果を記憶し、前記ポート選択手段が、前記複数の作業レジスタの記憶内容をそれぞれ前記第1〜3の入力ポートの何れかに出力可能である。
【００５０】
また好ましくは、前記第2の記憶手段が、前記複数の作業レジスタとしてシフトレジスタを用いており、前記演算処理部からの演算結果を所定の作業レジスタに最初に記憶し、  前記ポート選択手段が、前記複数の作業レジスタの記憶内容をそれぞれ前記第1〜3の入力ポートの何れかに出力可能である。
【００５１】
好ましくは、前記命令コードが、オペレーションフィールドと、前記複数の作業レジスタの記憶内容をそれぞれ前記復号演算手段の前記第1〜3の入力ポートの何れに出力するかを示すフィールドとを有する。
【００５２】
好ましくは、前記復号演算手段が、ガロア体GF(2i)の第1の元αW(AW, i-1, AW, i-2, AW, i-3, …, AW, 3, AW, 2, AW, 1, AW, 0)Tと第2の元αV(AV, i-1, AV, i-2, AV, i-3, …, AV, 3, AV, 2, AV, 1, AV, 0)Tとの乗算を行なう乗算器であって、前記第1の元と前記ガロア体の原始元αのα0, α1, α2, α3, …, αi-3, αi-2, αi-1とのそれぞれの演算を並列に行なうi個の乗算部と、前記i個の乗算部の乗算結果と前記AV, 0, AV, 1,
AV, 2, AV, 3, …, AV, i-3, AV, i-2, AV, i-1とのそれぞれの論理積演算を並列に行なうi個の論理積演算部と、前記i個の論理積演算部の演算結果を加算する加算部とを備える乗算器を有する。
【００５３】
好ましくは、前記復号演算手段が、ガロア体GF(2i)の第1の元αW(AW, i-1, AW, i-2, AW, i-3, …, AW, 3, AW, 2, AW, 1, AW, 0)Tと第2の元αV(AV, i-1, AV, i-2, AV, i-3, …, AV, 3, AV, 2, AV, 1, AV, 0)Tとの乗算を行なう乗算器であって、前記第1の元と前記AV, 0, AV, 1, AV, 2, AV, 3, …, AV, i-3, AV, i-2, AV, i-1とのそれぞれの論理積演算を並列に行なうi個の論理積演算部と、前記i個の論理積演算部の乗算結果と前記ガロア体の原始元αのα0, α1, α2, α3, …, αi-3, αi-2, αi-1とのそれぞれの乗算を並列に行なうi個の乗算部と、前記i個の乗算部の乗算結果を加算する加算部とを備える乗算器を有する。
【００５４】
【発明の実施の形態】
以下、本発明の実施形態に係わるリードソロモン復号装置について説明する。高速処理を実現するひとつの直接的な手法は、１ステップでガロア体の乗・除算を実現することである。これはＲＯＭで実現できるが、かなり大きなもの（それぞれ容量６４Ｋバイト）になることを先に述べた。ところが、乗算についてはその規則性を利用して、高速な乗算回路が３００ゲート程度で実現できる。
一例として、ガロア体ＧＦ（２i ）でｉ＝８の場合を示す。
まず、ガロア体ＧＦ（２8 ）の原始元をαとして、その任意の元αv は下記式（１２），（１３）のように表現できる。
【００５５】
【数１２】
0003850511.tif 000013
【００５６】
【数１３】
0003850511.tif 000014
【００５７】
ここで、Ａv,i ＝０あるいは１であり、v は任意の整数である。また、（αv ）は元αv の列ベクトル表現を示し、（…）T は転置行列を表す。
ここで前記ガロア体の任意の元αv とαw ：（Ａw ,7  Ａw ,6... Ａw ,1  Ａw ,0）T との乗算を考える。前記式（１３）から下記式（１４）が成り立つ。
【００５８】
【数１４】
0003850511.tif 000015
【００５９】
この式（１４）を列ベクトルで表現して、下記式（１５）を得る。
【００６０】
【数１５】
0003850511.tif 000016
【００６１】
ここで［×αi ］はαi を乗じることに相当する行列で８×８行列である。つまり、下記式（１６）が成り立つ。
【００６２】
【数１６】
0003850511.tif 000017
【００６３】
具体的には、ＣＩＲＣ符号のガロア体の下記式（１７）に示す体生成多項式から、下記式（１８），（１９）が成り立つ。
【００６４】
【数１７】
0003850511.tif 000018
【００６５】
【数１８】
0003850511.tif 000019
【００６６】
【数１９】
0003850511.tif 000020
【００６７】
前記式（１５）から、ガロア体の乗算回路は、図１に示すように、２つの入力（αw ，αv ）のうち、片方の元に乗算器１１１〜１１８によってα0 〜α7 を乗じたものを、もう片方の各ビットを一方の入力とするＡＮＤゲート１２１〜１２８によってゲートして、８個の８バイトの出力を得て、それらの加算（ビットごとの排他的論理和）をＧＦ加算器１２９によって演算する構成で実現できる。前記式（１８）、（１９）より［×α0 ］〜［×α7 ］のそれぞれに対応した各係数乗算回路は、それぞれ３〜２１個の排他的論理和ゲートを施すとガロア体の乗算回路全体を３００ゲートくらいで実現できる。この係数乗算回路は、掛ける値が固定値の乗算回路である。
この乗算回路単体の遅延量は、例えば１０ｎｓ以下であり、１６ＭＨZ の周期で１ステップでの処理が十分可能である。
【００６８】
なお、前記式（１５）は、下記式（２０）のように変形できる。
【００６９】
【数２０】
0003850511.tif 000021
【００７０】
これに対応して、ガロア体の乗算回路は、図２のようにＡＮＤゲートを入力側に配置することも可能である。すなわち、２つの入力（αw ，αv ）のＡＮＤをＡＮＤゲート１３１〜１３８によって求め、その結果に、乗算器１４１〜１４８によってα0 〜α7 を乗じたものを、ＧＦ加算器１２９によって加算する構成で実現できる。
【００７１】
ガロア体の除算については、まず、割る方の元の逆元を求めてから、割られる方の元との乗算を、前記乗算回路で実行する。つまり、２ステップを要することになる。前記逆元を求めるには、８ビットの入力に対し、８ビットの出力を得ればよいので、容量２５６バイトのＲＯＭで実現できる。これは、例えば５００ゲート相当であり、回路規模上もさほどインパクトがない。
【００７２】
以上より８００ゲートの回路でガロア体の乗算が１ステップで、除算が２ステップでそれぞれ実行可能となる。これにより、前記式（３）、（４）、（６）、（７）、（９）、及び（１０）の１７回の乗算は１７ステップで、３回の除算は６ステップで実現でき、２３回（２３ステップ）の加算を含めて合計４６ステップで実現できる。
これは、従来の半分以下のステップ数であるものの、多機能の要求に答えるには不十分である。例えば、オーディオ再生の場合は消失エラー訂正なし、データ再生の場合は消失エラー訂正ありといった複数の用途に対応するとき、メモリに記憶するマイクロコード（インストラクション・コードのセット）の増加を防ぐために、共通の処理はサブルーチン化してできるだけマイクロコードを共有化する必要がある。また、前記式（３）、（４）、（６）、（７）、（９）、及び（１０）の演算は、４重消失エラー訂正の場合であるが、消失シンボルの数により３重消失エラー訂正等にも対応しなければならない。すると、分岐処理等の周辺処理が増大し、ますます各訂正コアの処理に使用できるステップ数が限られてくる。
【００７３】
そのため、ステップ数を削減するために以下のような工夫を施す。
前記式（３）の分子の項は下記式（２１）のように変形できる。
【００７４】
【数２１】
0003850511.tif 000022
【００７５】
次に、シンドロームを修正することで前記式（６）によるｅ3 を得るが、下記式（２２），（２３）に示すように、同じく積和演算の形が現れるように変形する。
【００７６】
【数２２】
0003850511.tif 000023
【００７７】
【数２３】
0003850511.tif 000024
【００７８】
残りはそのままで、下記式（２４），（２５），（２６）に示すようになる。
【００７９】
【数２４】
0003850511.tif 000025
【００８０】
【数２５】
0003850511.tif 000026
【００８１】
【数２６】
0003850511.tif 000027
【００８２】
上記式（２１）〜（２６）によれば、積和演算が数多く出現するが、図３に示すように、グローバルロジックユニット（ＧＬＵ）として３入力の積和演算ユニットを用いることで、１ステップで積和演算のそれぞれを実現できる。このときの復号演算処理部１０４を図３に、ＧＬＵ周辺構成図を図４に示す（ただし、破線の信号を含まない）。
【００８３】
以下、本実施形態に係わるリードソロモン復号装置１０１の構成について詳細に説明する。
リードソロモン復号装置１０１の全体構成は、基本的に、図９に示す従来のリードソロモン復号装置１と同じである。但し、リードソロモン復号装置１０１の復号演算処理部は、復号演算処理部４とは異なる。
図３は、リードソロモン復号装置１０１の復号演算処理部１０４の構成図である。
図３に示すように、復号演算処理部１０４は、マイクロコードＲＯＭ１５０、シーケンサ１５１、デスティネイションコントローラ１５２、ワーキングレジスタ１５３、ＧＬＵ(Global Logic Unit) １５４、ポート選択器１５５を備えている。
【００８４】
復号演算処理部１０４としては、例えばＲＩＳＣ型のものが用いられる。
復号演算処理部１０４では、各演算は逐次的に行われ、演算セットは、ＧＬＵ１５４において時分割共有化される。、また、一連の演算処理は、マイクロコード化されて、インストラクションコードとしてマイクロコードＲＯＭ１５０に格納され、シーケンサ１５１からのＲＯＭアドレスによって、処理順序（メモリからの読み出し順序）が制御される。
【００８５】
また、途中の演算結果は、予め用意された複数のワーキングレジスタ１５３に一時的に記憶されるが、どのワーキングレジスタ１５３ａ，１５３ｂ，１５３ｃに記憶するかは、デスティネイションコントローラ１５２を介して入力されるデスティネイションコントロールコード内に記述されている。
【００８６】
図４は、ＧＬＵ１５４の構成図である。
図４に示すように、ＧＬＵ１５４は、オペレイションロジック１６０，１６１、ＧＦインバージョンＲＯＭ１６２、ＧＦ乗算加算ロジック１６３およびオペレイションセレクタ１６４を備えている。
ここで、ＧＦインバージョンＲＯＭ１６２は、入力のガロア体の逆元を出力する（入力：α1 →出力：α-1）。
【００８７】
図５は、ＧＬＵ１５４のＧＦ乗算加算ロジック１６３およびワーキングレジスタ１５３の構成図である。
図５に示すように、ＧＦ乗算加算ロジック１６３には、乗算器１６３ａおよび加算器１６３ｂが備えられている。乗算器１６３ａとしては、前述した図１に示す乗算器１１０あるいは図２に示す乗算器１３０が用いられ、１ステップでガロア体ＧＦ（２8 ）の乗算を実現する。
また、ワーキングレジスタ１５３には、レジスタ１５３ａ，１５３ｂ，１５３ｃが備えられている。
【００８８】
前記式（２１）の分子の演算を１ステップ毎に書き直すと下記式（２７）に示すようになる。
【００８９】
【数２７】
0003850511.tif 000028
【００９０】
ここでＡ〜Ｃは、それぞれワーキングレジスタ１５３内のレジスタ１５３ａ，１５３ｂ，１５３ｃを示し、Ａ（ｚ）は、レジスタ１５３ａの内容が「ｚ」であることを示す。また、右辺の入力側の時制は、左辺の出力側のそれに対し１ステップ前の時制である。そして、各ステップの右辺の３つの値は、ＧＬＵ１５４のｃ，ｂ，ａそれぞれのポートの入力信号である。。例えば、第１のステップ（１：）では、ｃポートには「ｓ1 」、ｂポートには「ｘ2 」およびａポートには「ｓ0 」が入力されている。
デスティネーションコントロールコードに基づいて、デスティネイションコントローラ１５２は、ＧＬＵ１５４からのＧＬＵデータＳ１５４が、ワーキングレジスタ１５３内のどのレジスタ１５３ａ，１５３ｂ，１５３ｃに取り込まれるかを制御する。例えば、前記式（２７）の第１ステップ（１：）においては、ＧＬＵデータＳ１５４である「ｓ1 ＋ｘ2 ・ｓ0 」は、レジスタ１５３ａに取り込まれる。
【００９１】
このように前記式（２１）の分子の演算は、６回の積和演算で実行でき、残りは加算が３回、乗算が２回、除算が１回で、前記誤り値ｅ4 を求めることができる。
また、前記式（２２）のシンドロームの修正も積和演算が２回、加算が１回、乗算が１回で実行できる。
同様にして前記式（２３）の演算は積和演算が３回、加算が２回、乗算が１回、除算が１回で実行され、続く前記式（２４）のシンドロームの修正は、積和演算が１回、加算が１回である。
さらに前記式（２５）では積和演算が１回、加算が１回、除算が１回で実行され、続く前記式（２６）は、加算が１回である。
このように、Ｃ２符号の４重消失エラー訂正は積和演算が１３回、加算が９回、乗算が４回、除算が３回で実行され、総ステップ数は１３＋９＋４＋３×２＝３２ステップ、即ち。従来方法の１／３以下のステップ数で実現できる。
【００９２】
次に、図３に示すインストラクションコードＳ１５０に関して説明する。
図６は、インストラクションコードＳ１５０のフォーマットを説明するための図である。
乗算、加算、除算（逆元を求めてから乗算）の各演算処理では、入力が２つ以下であるため、インストラクションコードＳ１５０は、４フィールドで構成される（図６の実線）。すなわち、インストラクションコードＳ１５０には、それぞれのフィールドにＧＬＵ１５４がどの演算を実行するかを示すオペレーションコードＳ１５０ａと、２つの入力ポート（ここでは、ａポートおよびｂポートとする）に、どの信号を入力するかを示すａポートセレクトコードＳ１５０ｂおよびｂポートセレクトコードＳ１５０ｃと、ＧＬＵ１５４の出力であるＧＬＵデータＳ１５４をワーキングレジスタ１５３のどのレジスタに入力するかを示すデスティネーションコントロールコードＳ１５０ｄが含まれる。例えば、前記４つのフィールドのそれぞれを４ビットで構成すると、演算は最大１６個、入力元はそれぞれ１６個、出力先も１６個の指定が、それぞれ可能である。
【００９３】
図５に示すＧＦ乗算加算ロジック１６３を内蔵したＧＬＵ１５４においては、３入力の選択が必要で、積和演算のときだけ入力セレクトフィールドが３つになる。図６の破線に示すように、この３つめの入力ポート（ｃポートとする）の選択指定のためにさらに４ビット必要とすると、インストラクションコードＳ１５０は全部で５フィールド分の２０ビットになる。ところが、このｃポートの入力セレクトフィールドは積和演算以外では使用しないので無駄が多く不経済である。
【００９４】
図７に示すデスティネイションコントローラ２５２およびワーキングレジスタ２５３は、上述した不経済性を改善するもので、オペレーションコードが積和演算を指定したときは、ＧＬＵ１５４からのＧＬＵデータＳ１５４をレジスタ２５３ａに固定して記憶させるように、デスティネイションコントローラ２５２がワーキングレジスタ２５３を制御する。このようにすることで、ＧＬＵ１５４からのＧＬＵデータＳ１５４の出力先の制御が不要になるため、デスティネーションコントロールコードが不要になる。このようにすることで、積和演算のときにのみ、図８に示すように、デスティネーションコントロールコードの代わりにｃポートセレクトコードを配置することができる。つまり、図８のように、この同じフィールドに、デスティネーションコントロールコードとｃポートセレクトコードとを時分割で配置できる。このようにすると、インストラクションコードＳ１５０は４フィールド分だけ用意すれば良く、インストラクションコードのビット数は増えないため、回路が大規模化するのを避けることができる。
なお、積和演算以外の演算が指定されたときは、ワーキングレジスタ２５３のレジスタ２５３ａ，２５３ｂ，２５３ｃをデスティネーションコントロールコードにより制御すれば、レジスタ２５３ａ，２５３ｂ，２５３ｃを通常のワーキングレジスタとして使用できる。
【００９５】
このとき、復号演算処理部１０４は、図３で、破線の信号による制御、すなわち、オペレイションコードＳ１５０ａによるデスティネイションコントローラ１５２の制御を含む。
さらに、図７では、積和演算が続くときのことを考慮してレジスタ２５３ａ，２５３ｂ，２５３ｃをシフトレジスタ構成とした。
【００９６】
以下、図７および図８に示す構成を用いた場合における前記式（２１）の分子の演算について、具体的な信号の流れを説明する。
このときの信号の流れは、下記式（２８）に示される。
【００９７】
【数２８】
0003850511.tif 000029
【００９８】
ここで、(.) は内容が省略されていることを示す。各ステップにおける３つの処理は同時に行われ、右辺の入力側は、左辺の出力側のそれに対し１ステップ前の時制である。また、各ステップの最初の行の右辺の３つの値は、ＧＬＵ１５４のｃ，ｂ，ａそれぞれのポート入力信号である。
このように前記式（２１）の分子の演算を、本実施形態でも６ステップで実行でき、前記４重消失エラー訂正の総ステップ数は３２ステップで実現できる。
【００９９】
本実施形態はさまざまな変形可能である。具体的には、前記式（２０）に示した式の変化はいろいろ考えられる。例えは、下記式（２９）のように変形することもできる。
【０１００】
【数２９】
0003850511.tif 000030
【０１０１】
この場合でも、同様に積和演算回路を利用できる。また、本実施形態では、ｅ4 から求めたが、他の誤り値から順次得ることもできる。さらには、図３では、ガロア体の逆元演算をＲＯＭで構成したが、ロジック回路でも構成できる。
なお、本発明は、ＣＩＲＣ符号に限らず、また、消失エラー訂正に限らず積和演算を含む一般のＲＳ復号装置にも適用できる。
【０１０２】
以上説明したように、リードソロモン復号装置１０１によれば、積和演算を１ステップで実現でき、比較的小規模なＲＯＭ１５０を用いて、訂正処理を短時間で行なうことができる。
また、リードソロモン復号装置１０１によれば、図７に示す構成および図８に示すインストラクションコードＳ１５０のフォーマットを採用することで、インストラクションコードＳ１５０のビット数を抑え、回路が大規模化することを効果的に回避できる。
【０１０３】
【発明の効果】
以上説明したように、本発明のリードソロモン復号装置によれば、回路規模を大幅に増大させることなく、復号演算を高速に行うことが可能である。
【図面の簡単な説明】
【図１】図１は、本発明の実施形態に係わるガロア体の乗算器の構成図である。
【図２】図２は、本発明の実施形態に係わるガロア体のその他の乗算器の構成図である。
【図３】図３は、本発明の実施形態に係わるリードソロモン復号装置の復号演算処理部の構成図である。
【図４】図４は、図３に示すＧＬＵの構成図である。
【図５】図５は、図４に示すＧＦ積和演算ロジックおよびワーキングレジスタの構成図である。
【図６】図６は、図３に示すインストラクションコードのフォーマットを説明するための図である。
【図７】図７は、図４に示すワーキングレジスタのその他の構成図である。
【図８】図８は、図３に示すインストラクションコードのその他のフォーマットを説明するための図である。
【図９】図９は、従来のリードソロモン復号装置の構成図である。
【図１０】図１０は、図９に示すリードソロモン復号装置の動作時におけるデータおよび構成要素の時系列的な状態を示し、（Ａ）は入力データ、（Ｂ）は出力データ、（Ｃ）はレジスタＢOUT の記憶状態、（Ｄ）はレジスタＢINの記憶状態、（Ｅ）はレジスタＧOUT の記憶状態、（Ｆ）はレジスタＧINの記憶状態、（Ｇ）は復号演算器の処理状態をそれぞれ示している。
【図１１】図１１は、図９に示す入力パラメータ演算器およびレジスタの構成図である。
【図１２】図１２は、図９に示す訂正操作実行器およびレジスタの構成図である。
【図１３】図１３は、図９に示す復号演算処理部の構成図である。
【図１４】図１４は、図１３に示すＧＬＵの構成図である。
【符号の説明】
１０４…復号演算処理部、１５０…マイクロコード、１５１…シーケンサ、１５２…デスティネイションコントローラ、１５３…ワーキングレジスタ、１５４…ＧＬＵ、１５５…ポート選択器、１６０，１６１…オペレイションロジック、１６２…ＧＦインバージョンＲＯＭ、１６３…ＧＦ乗算加算ロジック、１６４…オペレイションセレクタ
【図１】
0003850511.tif 000031
【図２】
0003850511.tif 000032
【図３】
0003850511.tif 000033
【図４】
0003850511.tif 000034
【図５】
0003850511.tif 000035
【図６】
0003850511.tif 000036
【図７】
0003850511.tif 000037
【図８】
0003850511.tif 000038
【図９】
0003850511.tif 000039
【図１０】
0003850511.tif 000040
【図１１】
0003850511.tif 000041
【図１２】
0003850511.tif 000042
【図１３】
0003850511.tif 000043
【図１４】
0003850511.tif 000044