(57)【要約】【課題】フレーム長および最大誤り訂正数を任意に設定することができるリードソロモン符号化回路を提供する。【解決手段】本発明の符号化回路は、データを入力してそれぞれ定数倍する複数の定数倍回路１１０−０〜１１０−１９と、各定数倍回路に対応して設けられたレジスタ１２０−０〜１２０−１９と、対応する定数倍回路の演算結果と前段レジスタの格納データとの和を次段レジスタに格納する第１加算器１３０−１〜１３０−１９と、レジスタ１２０−０〜１２０−１９の格納データを入力し、いずれかの格納データを最大誤り訂正数に応じて選択的に出力するセレクタ１５３と、セレクタ１５３から出力された格納データと外部入力データとの和を定数倍回路１１０−０〜１１０−１９に供給する第２加算器１６１とを備える。最大誤り訂正数に応じてレジスタの格納データを選択的に出力することができるので、フレーム長および最大誤り訂正数を任意に設定することができる。【選択図】　　　図１
2004120419.tif 000002
【特許請求の範囲】
【請求項１】
同じデータを入力してそれぞれ定数倍する、複数の定数倍回路と、
それぞれの前記定数倍回路に対応して設けられた、複数のレジスタと、
対応する前記定数倍回路の演算結果と前段のレジスタの格納データとの和を次段のレジスタに格納する、複数の第１加算器と、
前記レジスタの格納データをそれぞれ入力し、いずれかの前記格納データを最大誤り訂正数に応じて選択的に出力するセレクタと、
前記セレクタから出力された前記格納データと外部入力データとの和を前記定数倍回路に供給する第２加算器と、
を備えることを特徴とするリードソロモン符号化回路。
【請求項２】
シンドローム多項式を用いて復号化を行うリードソロモン復号化回路であって、
データを格納する、複数のレジスタと、
対応する前記レジスタの格納データを定数倍する、複数の定数倍回路と、
対応する前記定数倍回路の演算結果と外部入力データとの和を演算する、複数の加算器と、
対応する前記加算器の演算結果と前記外部入力データの一方を選択して、対応する前記レジスタに格納する、複数の第１セレクタと、
前記レジスタの前記格納データまたは「０」の一方を選択出力する、複数の第２セレクタと、
最大誤り訂正数に応じて前記第２セレクタの選択を制御する制御回路と、
を備えることを特徴とするリードソロモン復号化回路。
【請求項３】
シンドローム多項式から生成された誤り位置多項式および誤り評価多項式を用いて復号化を行うリードソロモン復号化回路であって、
上段レジスタおよび下段レジスタと、入力データと前記下段レジスタの格納データとの積を演算する乗算器と、前記上段レジスタの格納データと前記乗算器の演算結果との和を演算する加算器と、前記下段レジスタの格納データまたは第１入力値を選択的に前記上段レジスタに格納する上段セレクタと、前記第１入力値または第２入力値を選択的に前記下段レジスタに格納する下段セレクタとを備える、初段の演算ブロックと、
上段レジスタおよび下段レジスタと、入力データと前記下段レジスタの格納データとの積を演算する乗算器と、前記上段レジスタの格納データと前記乗算器の演算結果との和を演算する加算器と、前記下段レジスタの格納データまたは前段の前記加算器の演算結果を選択的に前記上段レジスタに格納する上段セレクタと、前段の前記加算器の演算結果または前段の前記下段レジスタの格納データを選択的に前記下段レジスタに格納する下段セレクタとを備える、第２〜第ｎ段の演算ブロックと、
上段レジスタおよび下段レジスタと、入力データと前記下段レジスタの格納データとの積を演算する乗算器と、前記上段レジスタの格納データと前記乗算器の演算結果との和を演算する加算器と、前記下段レジスタの格納データまたは前段の前記加算器の演算結果を選択的に前記上段レジスタに格納する上段セレクタと、前段の前記加算器の演算結果、前段の前記下段レジスタの格納データまたは前記シンドローム多項式の係数を選択的に前記下段レジスタに格納する下段セレクタとを備える、第ｎ＋１〜第ｍ段（ｍ＞ｎ＋１）の演算ブロックと、
上段レジスタおよび下段レジスタと、入力データと前記下段レジスタの格納データとの積を演算する乗算器と、前記下段レジスタの格納データまたは前段の前記加算器の演算結果を選択的に前記上段レジスタに格納する上段セレクタと、前段の前記加算器の演算結果、前段の前記下段レジスタの格納データまたは前記シンドローム多項式の係数を選択的に前記下段レジスタに格納する下段セレクタとを備える、最終段の演算ブロックと、
前記最終段の演算ブロックに設けられた前記下段レジスタの格納データまたは前記誤り位置多項式の０次項を選択的に出力する逆元演算用セレクタと、
前記第３セレクタから出力されたデータの逆元を演算する逆元器と、
前記逆元器の演算結果と最終段の前記上段レジスタの格納データとの積を演算し、演算結果を前記初段〜最終段の前記第１乗算器に出力するデータ生成用乗算器と、
前記シンドローム多項式の係数のいずれかまたは値「１」を選択的に前記第３セレクタに供給するために前記第ｎ＋１〜最終段の演算ブロックの下段セレクタ毎に設けられた、入力制御セレクタと、
前記下段レジスタの格納データのいずれかを前記誤り位置多項式の０次項として前記逆元演算用セレクタに供給する第１出力制御セレクタと、
前記上段レジスタの格納データを、誤り位置多項式および誤り評価多項式の係数として順次読み出すための第２出力制御セレクタと、
最大誤り訂正数に応じて、前記入力制御レジスタ、前記第１出力制御セレクタおよび前記第２出力制御セレクタの選択を制御する制御回路と、
を備えることを特徴とするリードソロモン復号化回路。
【請求項４】
誤り位置多項式から生成した誤り位置および誤り評価多項式から生成した誤り評価値を用いて復号化を行うリードソロモン復号化回路であって、
（ａ）　入力データを（αｈ）Ｋ＋１倍（ｈ＝１，２，３，・・・）する、複数の第１定数倍回路と、
第１レジスタと、この第１レジスタの格納データをαｈ　倍する第１定数倍器と、対応する前記第１定数倍回路の演算結果または前記第１定数倍器の演算結果の一方を選択して前記第１レジスタに格納する第１セレクタとを備える、複数の第２定数倍回路と、
それぞれの前記第１レジスタの格納データおよび値「１」の和を演算する第１加算器と、
前記第１加算器の演算結果を値「０」と比較する判断回路と、
を備える誤り位置演算回路と、
（ｂ）　入力データを（αｉ）Ｋ＋１倍（ｉ＝１，３，５，・・・）する、複数の第３定数倍回路と、
第２レジスタと、この第２レジスタの格納データをαｉ　倍する第２定数倍器と、対応する前記第３定数倍回路の演算結果または前記第２定数倍器の演算結果の一方を選択して前記第２レジスタに格納する第２セレクタとを備える、複数の第４定数倍回路と、
入力データを（αｊ）Ｋ＋１倍（ｊ＝１，２，３，・・・）する、複数の第５定数倍回路と、
第３レジスタと、この第３レジスタの格納データをαｊ　倍する第３定数倍器と、対応する前記第５定数倍回路の演算結果または前記第３定数倍器の演算結果の一方を選択して前記第３レジスタに格納する第３セレクタとを備える、複数の第６定数倍回路と、
それぞれの前記第２レジスタの格納データの和を演算する第２加算器と、
前記第２加算器の逆元を演算する逆元器と、
それぞれの前記第３レジスタの格納データおよび前記誤り評価多項式の０次項ω０　の和を演算する第３加算器と、
前記第３加算器の演算結果と前記逆元器の演算結果との積を演算する乗算器と、
を備える誤り評価値演算回路と、
（ｃ）　対応する前記第１定数倍回路に入力データとして前記誤り位置多項式の係数σ１，σ２，・・・を供給し、対応する前記第３定数倍回路に入力データとして前記誤り位置多項式の微分式の係数σ１，σ３，・・・を供給し、対応する前記第５定数倍回路に入力データとして前記誤り評価多項式の係数ω１，ω２，・・・を供給し、対応する係数が存在しない前記第１、第３、第５定数倍回路に値「０」を供給し、且つ、前記第１、第３、第５定数倍回路にパラメータＫとして短縮符号を供給する制御回路と、
を備えることを特徴とするリードソロモン復号化回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、デジタルデータをリードソロモン符号化する回路およびリードソロモン符号化されたデジタルデータを復号化する回路に関する。
【０００２】
【従来の技術】
デジタルデータの通信や記録を行う際には、ノイズなどに起因して誤りが発生する場合がある。このような誤りを検出・訂正するための技術として、誤り訂正符号を用いる技術が知られている。誤り訂正符号としては、例えばリードソロモン符号が知られている（下記特許文献１、非特許文献１および２参照）。
【０００３】
通常のリードソロモン符号化処理では、まず、被処理データが複数のブロックに分割される。ここで、１ブロックのデータをｋバイトとすると、このデータは、下記の多項式（１）で表すことができる。
【０００４】
Ｉ（Ｘ）＝ｉ０＋ｉ１Ｘ＋ｉ３Ｘ２＋・・・＋ｉＭ−１Ｘｋ−１　　　・・・（１）
次に、多項式Ｉ（Ｘ）　にＸＮ−ｋ　を乗算する。ここで、Ｎは後述の符号長である。この乗算結果ＸＮ−ｋＩ（Ｘ）は、次に、所定の生成多項式Ｇ（Ｘ）　で除算される。この除算により、商Ｑ（Ｘ）　および剰余Ｒ（Ｘ）　が得られる。ＸＮ−ｋＩ（Ｘ）、Ｇ（Ｘ）　、Ｑ（Ｘ）　およびＲ（Ｘ）　には、下式（２）の関係が成立する。
【０００５】
ＸＮ−ｋＩ（Ｘ）＝Ｇ（Ｘ）Ｑ（Ｘ）＋Ｒ（Ｘ）　　・・・（２）
ここで、式（２）を変形した後、Ｒ（Ｘ）　に−Ｒ（Ｘ）　を代入することにより、下式（３）が得られる。
【０００６】
ＸＮ−ｋＩ（Ｘ）＋Ｒ（Ｘ）＝Ｇ（Ｘ）Ｑ（Ｘ）　　・・・（３）
ＸＮ−ｋＩ（Ｘ）　およびＲ（Ｘ）　は、１個のフレームに格納されて、送信データあるいは記録データ等になる。一般に、ＸＮ−ｋＩ（Ｘ）　を情報語と称し、Ｒ（Ｘ）　を検査語と称する。
【０００７】
これらのデータＸＮ−ｋＩ（Ｘ），Ｒ（Ｘ）　が送信あるいは記録・読み出し等されるときに、データ誤りが発生する場合がある。リードソロモン符号化されたデータを多項式Ｕ（Ｘ）＝ＸＮ−ｋＩ（Ｘ）＋Ｒ（Ｘ）で表すと、誤り発生後のデータＶ（Ｘ）　は下記の多項式（４）で表すことができる。ここで、ｅ（Ｘ）　は、誤り多項式である。
【０００８】
Ｖ（Ｘ）＝Ｕ（Ｘ）＋ｅ（Ｘ）＝ＸＮ−ｋＩ（Ｘ）＋Ｒ（Ｘ）＋ｅ（Ｘ）　　・・・（４）
リードソロモン復号化処理では、まず、誤りを含むデータＶ（Ｘ）　を上述の生成多項式Ｇ（Ｘ）　で除算して、剰余Ｓ（Ｘ）　を求める。式（３）、（４）から解るように、誤り発生前のデータＵ（Ｘ）　は、生成多項式Ｇ（Ｘ）　で割り切れる。このため、この除算によって得られた剰余Ｓ（Ｘ）　は、誤り多項式ｅ（Ｘ）　を生成多項式Ｇ（Ｘ）　で除算したときの剰余に等しくなる。
【０００９】
したがって、この剰余Ｓ（Ｘ）　から誤り多項式ｅ（Ｘ）　を一義的に確定できる場合には、誤りを訂正することが可能になる。剰余Ｓ（Ｘ）　は、一般に、シンドロームと称される。リードソロモン復号化では、検査語Ｒ（Ｘ）　が２Ｔ個の場合に、最大Ｔ個の誤りを検出することが可能になる。
【００１０】
【特許文献１】
特開２００２−７６９０９号公報
【非特許文献１】
「実戦誤り訂正技術」　トリケップス社　第８６頁の図４
【非特許文献２】
今井秀樹著「符号理論」　電子情報通信学会　第１６５頁〜第１７２頁
【００１１】
【発明が解決しようとする課題】
上述のように、１個のデータブロックに対応するリードソロモン符号は、１個のフレームに格納される。
【００１２】
ここで、フレームの符号長（シンボルデータの個数）Ｎは、固定的でなく、圧縮・伸張が可能である。さらには、最大誤り検出数Ｔも固定的ではなく、状況に応じて変更することが可能である。
【００１３】
１シンボルデータのビット幅をＭビットとした場合、フレームの最大符号長は２Ｍ　となる。したがって、図１９に示したように、フレームの符号長Ｎは、２Ｍ　−Ｋで表すことができる。Ｋは、符号長の短縮分を表し、短縮符号と称することにする。また、上述のように、最大誤り訂正数がＴの場合、検査語のシンボル数は２Ｔになる。このため、情報語のシンボル数（すなわち式（１）、（２）のｋ）は、Ｎ−２Ｔ（＝２Ｍ　−Ｋ−２Ｔ）になる。
【００１４】
リードソロモン符号を扱う符号化回路および復号化回路は、これらのパラメータＮ，Ｔを自由に変更できるように構成されることが望ましい。パラメータＮ，Ｔを自由に変更できることとすれば、符号化回路および復号化回路の汎用性を高めることができるからである。
【００１５】
従来のリードソロモン符号化回路としては、例えば、上記非特許文献１に記載された回路等が知られている。また、従来のリードソロモン復号化回路としては、上記特許文献１および非特許文献２の回路等が知られている。しかしながら、これらの回路は、特定のフレーム長Ｎおよび最大誤り訂正数Ｔについてのみ使用することができ、これらの値Ｎ，Ｔを任意に設定することはできない。
【００１６】
このような理由から、フレーム長および最大誤り訂正数を任意に設定することができるリードソロモン符号化回路およびリードソロモン復号化回路が嘱望されていた。
【００１７】
【課題を解決するための手段】
（１）第１の発明は、リードソロモン符号化回路に関する。
【００１８】
そして、同じデータを入力してそれぞれ定数倍する複数の定数倍回路と、それぞれの定数倍回路に対応して設けられた複数のレジスタと、対応する定数倍回路の演算結果と前段のレジスタの格納データとの和を次段のレジスタに格納する複数の第１加算器と、レジスタの格納データをそれぞれ入力し、いずれかの格納データを最大誤り訂正数に応じて選択的に出力するセレクタと、セレクタから出力された格納データと外部入力データとの和を定数倍回路に供給する第２加算器とを備える。
【００１９】
このような構成によれば、最大誤り訂正数に応じてレジスタの格納データを選択的に出力することができるので、フレーム長および最大誤り訂正数を任意に設定することができる。
【００２０】
（２）第２の発明は、シンドローム多項式を用いて復号化を行うリードソロモン復号化回路に関する。
【００２１】
そして、データを格納する複数のレジスタと、対応するレジスタの格納データを定数倍する複数の定数倍回路と、対応する定数倍回路の演算結果と外部入力データとの和を演算する複数の加算器と、対応する加算器の演算結果と外部入力データの一方を選択して、対応するレジスタに格納する複数の第１セレクタと、レジスタの格納データまたは「０」の一方を選択出力する複数の第２セレクタと、最大誤り訂正数に応じて第２セレクタの選択を制御する制御回路とを備える。
【００２２】
このような構成によれば、存在しない係数に対応する第２セレクタからは「０」を出力させることができ、したがって、フレーム長および最大誤り訂正数の変化に対応してシンドローム多項式の次数を変化させることができる。
【００２３】
（３）第３の発明は、シンドローム多項式から生成された誤り位置多項式および誤り評価多項式を用いて復号化を行うリードソロモン復号化回路に関する。
【００２４】
そして、上段レジスタおよび下段レジスタと、入力データと下段レジスタの格納データとの積を演算する乗算器と、上段レジスタの格納データと乗算器の演算結果との和を演算する加算器と、下段レジスタの格納データまたは第１入力値を選択的に上段レジスタに格納する上段セレクタと、第１入力値または第２入力値を選択的に下段レジスタに格納する下段セレクタとを備える、初段の演算ブロックと、上段レジスタおよび下段レジスタと、入力データと下段レジスタの格納データとの積を演算する乗算器と、上段レジスタの格納データと乗算器の演算結果との和を演算する加算器と、下段レジスタの格納データまたは前段の加算器の演算結果を選択的に上段レジスタに格納する上段セレクタと、前段の加算器の演算結果または前段の下段レジスタの格納データを選択的に下段レジスタに格納する下段セレクタとを備える、第２〜第ｎ段の演算ブロックと、上段レジスタおよび下段レジスタと、入力データと下段レジスタの格納データとの積を演算する乗算器と、上段レジスタの格納データと乗算器の演算結果との和を演算する加算器と、下段レジスタの格納データまたは前段の加算器の演算結果を選択的に上段レジスタに格納する上段セレクタと、前段の加算器の演算結果、前段の下段レジスタの格納データまたはシンドローム多項式の係数を選択的に下段レジスタに格納する下段セレクタとを備える、第ｎ＋１〜第ｍ段（ｍ＞ｎ＋１）の演算ブロックと、上段レジスタおよび下段レジスタと、入力データと下段レジスタの格納データとの積を演算する乗算器と、下段レジスタの格納データまたは前段の加算器の演算結果を選択的に上段レジスタに格納する上段セレクタと、前段の加算器の演算結果、前段の下段レジスタの格納データまたはシンドローム多項式の係数を選択的に下段レジスタに格納する下段セレクタとを備える、最終段の演算ブロックと、最終段の演算ブロックに設けられた下段レジスタの格納データまたは誤り位置多項式の０次項を選択的に出力する逆元演算用セレクタと、第３セレクタから出力されたデータの逆元を演算する逆元器と、逆元器の演算結果と最終段の上段レジスタの格納データとの積を演算し、演算結果を初段〜最終段の第１乗算器に出力するデータ生成用乗算器と、シンドローム多項式の係数のいずれかまたは値「１」を選択的に第３セレクタに供給するために前記第ｎ＋１〜最終段の演算ブロックのセレクタ毎に設けられた入力制御セレクタと、下段レジスタの格納データのいずれかを誤り位置多項式の０次項として逆元演算用セレクタに供給する第１出力制御セレクタと、上段レジスタの格納データを誤り位置多項式および誤り評価多項式の係数として順次読み出すための第２出力制御セレクタと、最大誤り訂正数に応じて入力制御レジスタ、第１出力制御セレクタおよび第２出力制御セレクタの選択を制御する制御回路とを備える。
【００２５】
このような構成によれば、初期設定でシンドローム多項式の係数が格納される下段レジスタ、誤り位置多項式の０次項が最終的に格納される下段レジスタおよび誤り位置多項式および誤り評価多項式の係数が最終的に格納される上段レジスタを、最大誤り訂正数に応じて任意に変更することができる。このため、任意の次数のシンドローム多項式を生成することができる。したがって、フレーム長および最大誤り訂正数の変化に対応して、誤り位置多項式および誤り評価多項式の次数を変化させることができる。
【００２６】
（４）第４の発明は、誤り位置多項式から生成した誤り位置および誤り評価多項式から生成した誤り評価値を用いて復号化を行うリードソロモン復号化回路に関する。
【００２７】
そして、以下の回路（ａ）　、（ｂ）　、（ｃ）　を備える。
【００２８】
（ａ）入力データを（αｈ）Ｋ＋１倍（ｈ＝１，２，３，・・・）する複数の第１定数倍回路と、第１レジスタとこの第１レジスタの格納データをαｈ　倍する第１定数倍器と対応する第１定数倍回路の演算結果または第１定数倍器の演算結果の一方を選択して第１レジスタに格納する第１セレクタとを備える複数の第２定数倍回路と、それぞれの第１レジスタの格納データおよび値「１」の和を演算する第１加算器と、第１加算器の演算結果を値「０」と比較する判断回路とを備える誤り位置演算回路
（ｂ）入力データを（αｉ）Ｋ＋１倍（ｉ＝１，３，５，・・・）する複数の第３定数倍回路と、第２レジスタとこの第２レジスタの格納データをαｉ　倍する第２定数倍器と対応する第３定数倍回路の演算結果または第２定数倍器の演算結果の一方を選択して第２レジスタに格納する第２セレクタとを備える複数の第４定数倍回路と、入力データを（αｊ）Ｋ＋１倍（ｊ＝１，２，３，・・・）する複数の第５定数倍回路と、第３レジスタとこの第３レジスタの格納データをαｊ　倍する第３定数倍器と対応する第５定数倍回路の演算結果または第３定数倍器の演算結果の一方を選択して第３レジスタに格納する第３セレクタとを備える複数の第６定数倍回路と、それぞれの第２レジスタの格納データの和を演算する第２加算器と、第２加算器の逆元を演算する逆元器と、それぞれの第３レジスタの格納データおよび誤り評価多項式の０次項ω０　の和を演算する第３加算器と、第３加算器の演算結果と逆元器の演算結果との積を演算する乗算器とを備える誤り評価値演算回路
（ｃ）対応する第１定数倍回路に入力データとして誤り位置多項式の係数σ１，σ２，・・・を供給し、対応する第３定数倍回路に入力データとして誤り位置多項式の微分式の係数σ１，σ３，・・・を供給し、対応する第５定数倍回路に入力データとして誤り評価多項式の係数ω１，ω２，・・・を供給し、対応する係数が存在しない第１、第３、第５定数倍回路に値「０」を供給し、且つ、第１、第３、第５定数倍回路にパラメータＫとして短縮符号を供給する制御回路
このような構成によれば、第１、第３、第５定数倍回路によって、短縮符号の変化を吸収することができる。また、誤り評価多項式および誤り評価多項式の不存在の係数を「０」とすることで、これらの多項式の次数変化に対応することができる。したがって、フレーム長および最大誤り訂正数に拘わらず、誤り位置および誤り評価値を検出することができる。
【００２９】
【発明の実施の形態】
以下、この発明の実施の形態について、図面を用いて説明する。なお、図中、各構成成分の大きさ、形状および配置関係は、本発明が理解できる程度に概略的に示してあるにすぎず、また、以下に説明する数値的条件は単なる例示にすぎない。
【００３０】
第１の実施の形態
まず、第１の実施の形態として、この発明に係るリードソロモン符号化回路の実施の形態を説明する。ここでは、最大誤り訂正数Ｔを０〜１０の間で変更することができるようにリードソロモン符号化回路を構成した例を説明する。
【００３１】
図１は、この実施の形態に係るリードソロモン符号化回路の要部構成を概略的に示す回路図である。また、図２は、図１に示されたリードソロモン符号化回路の仕様を示す表である。
【００３２】
図１に示したように、このリードソロモン符号化回路１００は、定数倍回路１１０−０〜１１０−１９と、データフリップフロップ１２０−０〜１２０−１９と、加算器１３０−１〜１３０−１９と、データフリップフロップ１４１，１４２と、セレクタ１５１，１５２，１５３と、加算器１６１とを備えている。
【００３３】
定数倍回路１１０−０〜１１０−１９は、シンボルデータと生成多項式Ｇ（Ｘ）　との積を計算する。ここで、生成多項式Ｇ（Ｘ）　は、下式（５）で表される。
【００３４】
Ｇ（Ｘ）＝Ｇ２Ｔ−１Ｘ２Ｔ−１＋Ｇ２Ｔ−２Ｘ２Ｔ−２＋・・・＋Ｇ１Ｘ＋Ｇ０　・・・（５）
図２に示したように、この実施形態では１シンボルデータは８ビットなので、各定数倍回路１１０−０〜１１０−１９には、８ビットのデータが、並列に入力される。定数倍回路１１０−０，１１０−１，・・・，１１０−１９は、これらのデータに、生成多項式Ｇ（Ｘ）　の各項の係数Ｇ０　，Ｇ１　，・・・Ｇ２Ｔ−１を積算する。このため、定数倍回路の個数は、生成多項式Ｇ（Ｘ）　の係数の個数（この実施の形態では２０）と一致する。図３は、定数倍回路１１０−０〜１１０−１９の内部構成を示す回路図である。図３に示したように、各定数倍回路１１０−０〜１１０−１９は、積算器３１０とセレクタ３２０とを備えている。積算器３１０は、セレクタ３２０に選択された定数を、入力データに積算する。セレクタ３２０は、外部から、複数種類の定数を入力し、図示しない制御回路から入力された制御信号に基づいて、いずれかの定数を選択する。この実施の形態では、セレクタ３２０から入力される定数として、「０」が含まれることとする。
【００３５】
データフリップフロップ１２０−０〜１２０−１９は、対応する定数倍回路１１０−０〜１１０−１９から、演算結果を入力して保持する。保持されたデータＤ０〜Ｄ１９　は、それぞれ、対応する加算器１３０−１〜１３０−１９に送られる。加えて、データフリップフロップ１２０−１，１２０−３，・・・，１２０−１９に保持されたデータＤ０〜Ｄ１９　は、セレクタ１５２に送られる。
【００３６】
また、データフリップフロップ１４１は、外部から入力されるシンボルデータを一時的に保持し、データフリップフロップ１４２は外部に出力される符号化データを一時的に保持する。
【００３７】
セレクタ１５１は、通過したシンボルデータの個数を係数するカウンタと、この計数値ＣをＮ−２Ｔと比較する比較器とを備えている（図示せず）。そして、Ｃ≦Ｎ−２Ｔの場合は加算器１６１の出力Ｓ０　を選択し、Ｃ＞Ｎ−２Ｔの場合は「０」を選択する（図４参照）。選択された値は、定数倍回路１１０−０〜１１０−１９に送られる。
【００３８】
セレクタ１５２は、セレクタ１５１と同様、通過したシンボルデータの個数を計数するカウンタと、この計数値ＣをＮ−２Ｔと比較する比較器とを備えている（図示せず）。そして、Ｃ≦Ｎ−２Ｔの場合はデータフリップフロップ１４１の出力Ｓ２　を選択し、Ｃ＞Ｎ−２Ｔの場合はセレクタ１５３の出力Ｓ１　を選択する（図４参照）。選択された値は、データフリップフロップ１４２に送られる。
【００３９】
セレクタ１５３は、データフリップフロップ１２０−１，１２０−３，・・・，１２０−１９の保持データを入力し、最大誤り訂正数Ｔに応じて、いずれかを選択する。この選択は、図示しない制御回路の制御によって行われる。最大誤り訂正数Ｔとセレクタ１５３の選択との関係を、図５に示す。
【００４０】
加算器１６１は、データフリップフロップ１４１の保持された入力データと、セレクタ１５２で選択されたデータとを、加算する。
【００４１】
次に、リードソロモン符号化回路１００の動作原理を説明する。
【００４２】
リードソロモン符号化処理を行う際には、初期設定として、定数Ｇ０　〜Ｇ１９（定数倍回路１１０−０〜１１０−１９）の設定、セレクタ１５３で選択されるデータの設定およびセレクタ１５１，１５２で使用される比較値（Ｎ−２Ｔ）の設定が行われる。以下、最大誤り訂正数Ｔが「２」で、符号長Ｎが「１６」の場合を例に採って説明する。
【００４３】
Ｔ＝２の場合、２Ｔ−１＝３であるから、生成多項式は、Ｇ（Ｘ）＝Ｇ３Ｘ３＋Ｇ２Ｘ２＋Ｇ１Ｘ１＋Ｇ０の形をとる（図２参照）。例えばＧ３＝１、Ｇ２＝０、Ｇ１＝１、Ｇ０＝１とすると、Ｇ（Ｘ）＝Ｘ３＋Ｘ＋１である。このため、定数倍回路１１０−０，１１０−１，１１０−３の定数Ｇ０　，Ｇ１　，Ｇ３　は「１」に設定され、定数倍回路１１０−２の定数Ｇ２　は「０」に設定される。この場合、他の定数倍回路１１０−４〜１１０−１９は、使用されない。したがって、セレクタ１５３は、データフリップフロップ１２０−３の出力を選択するように設定される（図５参照）。また、他の定数倍回路１１０−４〜１１０−１９が使用されないことより、定数Ｇ４　〜Ｇ１９の設定は不要である。
【００４４】
また、図２および図１９に示したように、情報語の長さはＮ−２Ｔであり、検査語の長さは２Ｔである。すなわち、リードソロモン符号化回路１００は、Ｎ−２Ｔ個の情報語を用いて、２Ｔ個の検査語を算出する。Ｔ＝２且つＮ＝１６の場合、情報語の長さは「１２」となり、検査語の長さは「４」となる。情報語の長さＮ−２Ｔ（例えば「１２」）は、比較値として、セレクタ１５１，１５２に格納される。
【００４５】
図１の回路において、リードソロモン符号化処理を行う場合には、Ｎ−２Ｔ個（ここでは１２個）の情報語が、データフリップフロップ１４１を介して、順次入力される。これらの情報語は、加算器１６１およびセレクタ１５２に供給される。
【００４６】
加算器１６１に供給された情報語には、データフリップフロップ１２０−３の出力値（初期値は「０」に設定される）が加算される。上述したように、セレクタ１５１は、入力データの個数がＮ−２Ｔに達するまでは、加算器１６１の出力データＳ０　を選択する。これにより、素子１１０−０〜１１０−３，１２０−０〜１２０−３，１３０−１〜１３０−３からなる除算器は、演算ＸＮ−ｋＩ（Ｘ）／Ｇ（Ｘ）　を実行する（上式（２）参照）。この除算器の動作原理は、従来の除算器と同じであるので省略する。この演算によって得られる商Ｑ（Ｘ）　は、データフリップフロップ１２０−３から出力される。しかし、セレクタ１５２はデータＳ１　を選択していないので、商Ｑ（Ｘ）　は廃棄されることになる。このとき、セレクタ１５２からは、Ｎ−２Ｔ個の情報語ＸＮ−ｋＩ（Ｘ）が、そのまま、順次出力される。Ｎ−２Ｔ番目の情報語についての除算処理が終了したときに、データフリップフロップ１２０−１〜１２０−３に格納された値が、剰余Ｒ（Ｘ）　の各項である。その後、セレクタ１５１は選択データを「０」に切り換え、且つ、セレクタ１５２は選択データをＳ１　に切り換える。これにより、剰余すなわち検査語Ｒ（Ｘ）　の各項は、データフリップフロップ１２０−１〜１２０−３をシフトして、データフリップフロップ１４２から順次出力される。
【００４７】
このように、この実施の形態に係るリードソロモン符号化回路１００は、フレーム長Ｎおよび最大誤り訂正数Ｔを任意に変更することができる。
【００４８】
第２の実施の形態
次に、第２の実施の形態として、この発明に係るリードソロモン復号化回路の実施の形態を説明する。ここでは、最大誤り訂正数Ｔを０〜１０の間で変更することができるようにリードソロモン復号化回路を構成した例を説明する。
【００４９】
図６は、この実施の形態に係るリードソロモン復号化回路６００の全体構成を示すブロック図である。図６に示されたように、このリードソロモン復号化回路６００は、制御部６１０、バッファ部６２０、シンドローム多項式生成部６３０、誤り多項式生成部６４０、チェン検索部６５０および加算器６６０を備えている。
【００５０】
制御部６１０は、外部から情報語ＸＮ−ｋＩ（Ｘ）および検査語Ｒ（Ｘ）を入力する。制御部６１０は、バッファ部６２０に情報語ＸＮ−ｋＩ（Ｘ）を出力し、且つ、シンドローム多項式生成部６３０にＸＮ−ｋＩ（Ｘ）＋Ｒ（Ｘ）　を出力する。加えて、制御部６１０は、バッファ部、６２０シンドローム多項式生成部６３０、誤り多項式生成部６４０およびチェン検索部６５０に対する動作制御を行う。
【００５１】
バッファ部６２０は、制御部６１０から入力された情報語ＸＮ−ｋＩ（Ｘ）を蓄積し、加算器６６０に供給する。バッファ部６２０は、最大符号長すなわち２Ｍ　バイトの情報語ＸＮ−ｋＩ（Ｘ）を蓄積できるように、構成される。２Ｍ　バイトの情報語を蓄積できれば、パラメータＮ，Ｔの値に拘わらず、１シンボル分の情報語を蓄積することができるからである。但し、複数シンボルの復号化処理を連続的に行えるようにリードソロモン復号化回路６００を構成する場合には、２個のバッファを設けるなどの設計変更が必要になる。バッファ部６２０は、例えばＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）等のメモリ回路を用いて構成される。
【００５２】
シンドローム多項式生成部６３０は、ＸＮ−ｋＩ（Ｘ）＋Ｒ（Ｘ）　を用いて、シンドローム多項式Ｓ（Ｘ）　の各係数を生成する。シンドローム多項式Ｓ（Ｘ）　は、下式（６）で表される。すなわち、パラメータＴ（最大誤り訂正数）の値に応じて、シンドローム多項式Ｓ（Ｘ）　の最大次数が決定する。
【００５３】
Ｓ（Ｘ）＝Ｓ２Ｔ−１Ｘ２Ｔ−１＋Ｓ２Ｔ−２Ｘ２Ｔ−２＋・・・＋Ｓ１Ｘ＋Ｓ０　・・・（６）
図７は、シンドローム多項式生成部６３０の内部構成を示す回路図である。図７に示したように、シンドローム多項式生成部６３０は、シンドローム演算器７００−０〜７００−１９を備えている。そして、シンドローム演算器７００−０〜７００−１９は、各加算器７１０−０〜７１０−１９と、セレクタ７２０−０〜７２０−１９と、データフリップフロップ７３０−０〜７３０−１９と、定数倍回路７４０−０〜７４０−１９と、セレクタ７５０−０〜７５０−１９とを備えている。シンドローム演算器７００−０において、加算器７１０−０は、定数倍回路７４０−０の出力と入力データとの和を出力する。セレクタ７２０−０は、先頭表示信号の値に応じて、加算器７１０−０の出力または入力データの一方を選択し、出力する。先頭表示信号は、制御部６１０（図６参照）から入力される。データフリップフロップ７３０−０は、セレクタ７２０−０の出力を保持し、定数倍回路７４０−０およびセレクタ７５０−０に出力する。定数倍回路７４０−０は、データフリップフロップ７３０−０の保持データを入力して、α０　倍する。セレクタ７５０−０は、選択信号（図示せず）の値に応じて、データフリップフロップ７３０−０の保持データまたは「０」を出力する。この選択信号は、制御部６１０（図６参照）から入力される。他のシンドローム演算器７００−１〜７００−１９の構成も、シンドローム演算器７００−０と同様である。
【００５４】
ここで、セレクタ７５０−０〜７５０−１９の入力選択は、シンドローム多項式の最大次数に応じて決定される。例えば、パラメータＴが「９」の場合、最大次数２Ｔ−１は「１７」である。したがって、１８次および１９次に対応するシンドローム演算器７００−１８，７００−１９は使用されない。そして、不使用のシンドローム演算器７００−１８，７００−１９のセレクタ７５０−１８，７５０−１９では、入力「０」が選択される。一方、使用されるシンドローム演算器７００−０〜７００−１７のセレクタ７５０−０〜７５０−１７では、データフリップフロップ７３０−０〜７３０−１７の出力が選択される。このように、本実施形態のシンドローム多項式生成部６３０では、不使用のシンドローム演算器の出力を「０」に固定することによって、最大誤り訂正数Ｔの自由な変更を可能にしている。パラメータＴの値と出力が「０」に固定されるシンドローム演算器との関係を、図８に示す。
【００５５】
シンドローム多項式Ｓ（Ｘ）　の演算原理は、従来のリードソロモン復号化回路の場合と同様である。各シンドローム演算器７００−０〜７００−１９に最初のデータが入力されるとき、各セレクタ７２０−０〜７２０−１９は、入力データを選択する。これにより、データフリップフロップ７３０−０〜７３０−１９を介して定数倍回路７４０−０〜７４０−１９に入力され、定数倍される。各シンドローム演算器７００−０〜７００−１９に二番目以降のデータが入力されるとき、セレクタ７２０−０〜７２０−１９は、加算器７１０−０〜７１０−１９の出力を選択する。これにより、定数倍回路７４０−０〜７４０−１９の計算結果と入力データとの和が、定数倍回路７４０−０〜７４０−１９に入力される。定数倍回路７４０−０〜７４０−１９の計算結果と最後の入力データとの和が、シンドローム多項式Ｓ（Ｘ）　の係数Ｓ２Ｔ−１，Ｓ２Ｔ−２，・・・，Ｓ０である。これらの係数Ｓ２Ｔ−１〜Ｓ０は、データフリップフロップ７３０−０〜７３０−１９に一時保存された後、セレクタ７５０−０〜７５０−１９から出力される。このとき、上述のような方法により、使用されていないシンドローム演算器のセレクタからは「０」が出力される。
【００５６】
誤り多項式生成部６４０は、シンドローム多項式Ｓ（Ｘ）　を用いて、誤り位置多項式σ（Ｘ）　および誤り訂正多項式ω（Ｘ）　の各係数を生成する。誤り位置多項式σ（Ｘ）　および誤り訂正多項式ω（Ｘ）　は、下式（７）、（８）で表される。式（７）、（８）から解るように、パラメータＴ（最大誤り訂正数）の値に応じて、多項式σ（Ｘ）、ω（Ｘ）の最大次数が変化する。
【００５７】
σ（Ｘ）＝σＴＸＴ＋σＴ−１ＸＴ−１＋・・・＋σ１Ｘ＋σ０　　・・・（７）
ω（Ｘ）＝ωＴ−１ＸＴ−１＋ωＴ−２ＸＴ−２＋・・・＋ω１Ｘ＋ω０・・・（８）
図９、図１０は、誤り多項式生成部６４０の内部構成を示す回路図である。
【００５８】
誤り多項式生成部６４０は、上記特許文献１と同様の、逆元部９１０、乗算部９２０、セレクタ９３０、演算ブロックＡ１〜Ａ３１、入力制御セレクタＫ１〜Ｋ２０および出力制御セレクタＬ１，Ｌ２を備えている。
【００５９】
初段の演算ブロックＡ１は、上段レジスタＢ１、下段レジスタＣ１、乗算器Ｄ１、加算器Ｅ１およびセレクタＦ１，Ｈ１，Ｉ１を備える。乗算器Ｄ１は、入力データとセレクタＩ１の出力データとの積を演算する。加算器Ｅ１は、上段レジスタＢ１の格納データと乗算器Ｄ１の演算結果との和を演算する。セレクタＦ１は、下段レジスタＣ１の格納データまたは入力値「０」を選択的に上段レジスタＢ１に格納する。セレクタＨ１は、入力値「０」または「１」を選択的に下段レジスタＣ１に格納する。また、セレクタＩ１は、下段レジスタＣ１の格納データまたは外部からの設定値を選択的に出力する。
【００６０】
演算ブロックＡ２〜Ａ１１は、上段レジスタＢ２〜Ｂ１１、下段レジスタＣ２〜Ｃ１１、乗算器Ｄ２〜Ｄ１１、加算器Ｅ２〜Ｅ１１、セレクタＦ２〜Ｆ１１およびＨ２〜Ｈ１１を備える。演算ブロックＡ２において、乗算器Ｄ２は、入力データと下段レジスタＣ２の格納データとの積を演算する。加算器Ｅ２は、上段レジスタＢ２の格納データと乗算器Ｄ２の演算結果との和を演算する。セレクタＦ２は、下段レジスタＣ２の格納データまたは前段の加算器Ｅ１の演算結果を選択的に上段レジスタＢ２に格納する。また、セレクタＨ２は、前段の加算器Ｅ１の演算結果または前段の下段レジスタＣ１の格納データを選択的に下段レジスタＣ２に格納する。演算ブロックＡ３〜Ａ１１の構成も、演算ブロックＡ２の構成と同様である。
【００６１】
演算ブロックＡ１２〜Ａ３０は、上段レジスタＢ１２〜Ｂ３０、下段レジスタＣ１２〜Ｃ３０、乗算器Ｄ１２〜Ｄ３０、加算器Ｅ１２〜Ｅ３０およびセレクタＦ１２〜Ｆ３０，Ｈ１２〜Ｈ３０を備える。演算ブロックＡ１２において、乗算器Ｄ１２は、入力データと下段レジスタＣ１２の格納データとの積を演算する。加算器Ｅ１２は、上段レジスタＢ１２の格納データと乗算器Ｄ１２の演算結果との和を演算する。セレクタＦ１２は、下段レジスタＣ１２の格納データまたは前段の加算器Ｅ１１の演算結果を選択的に上段レジスタＢ１２に格納する。また、セレクタＨ１２は、前段の加算器Ｅ１１の演算結果、前段の下段レジスタＣ１１の格納データまたは入力制御セレクタＫ１の出力データを選択的に下段レジスタＣ１２に格納する。演算ブロックＡ１３〜Ａ３０の構成も、演算ブロックＡ１２の構成と同様である。
【００６２】
最終段の演算ブロックＡ３１は、上段レジスタＢ３１、下段レジスタＣ３１、乗算器Ｄ３１およびセレクタＦ３１，Ｈ３１を備える。乗算器Ｄ３１は、入力データと下段レジスタＣ３１の格納データとの積を演算して出力する。セレクタＦ３１は、下段レジスタＣ３１の格納データまたは前段の加算器Ｅ３０の演算結果を選択的に上段レジスタＢ３１に格納する。また、セレクタＨ３１は、前段の加算器Ｅ３０の演算結果、前段の下段レジスタＣ３０の格納データまたは入力制御セレクタＫ２０の出力データを選択的に下段レジスタＣ３１に格納する。
【００６３】
セレクタ９３０は、下段レジスタＣ３１の格納データまたは誤り位置多項式の０次項σ０　を選択的に出力する。
【００６４】
逆元部９１０は、セレクタ９３０から出力されたデータの逆元を演算する。
【００６５】
乗算部９２０は、逆元部９１０の演算結果と上段レジスタＢ３１の格納データとの積を演算し、演算結果を演算器Ｄ１〜Ｄ３１に、上述の入力データとして出力する。
【００６６】
入力制御セレクタＫ１〜Ｋ２０は、シンドローム多項式の係数Ｓ２Ｔ−１〜Ｓ０　または「１」を選択的にセレクタＨ１２〜Ｈ３１に供給する（後述）。
【００６７】
出力制御セレクタＬ１は、所定の下段レジスタの格納データのいずれかを誤り位置多項式の０次項σ０　として、セレクタ９３０に供給する（後述）。
【００６８】
出力制御セレクタＬ２は、所定の上段レジスタの格納データを、誤り位置多項式および誤り評価多項式の係数σ１〜σ１０，ω０〜ω８　として、順次読み出す（後述）。
【００６９】
演算ブロックＡ１〜Ａ３１等を用いてσ１〜σ１０，ω０〜ω８　を演算する手順は、上述の特許文献１と同様である。
【００７０】
ここで、この実施の形態で入力制御セレクタＫ１〜Ｋ２０を設けたのは、パラメータ（最大誤り訂正数）Ｔの値に応じてシンドローム多項式Ｓ（Ｘ）　の次数が変化し、このため、下段レジスタＣ１２〜Ｃ３１の初期値が変化するからである。パラメータＴの値と下段レジスタＣ１２〜Ｃ３１の初期値との関係を、図１１に示す。
【００７１】
また、誤り多項式生成部６４０では、上記特許文献１の装置と同様、初期設定として上部レジスタにＭ（Ｘ）　＝１が格納されるが、「１」に設定されるレジスタはパラメータＴの値に応じて異なる。パラメータＴの値と「１」に初期設定される上段レジスタとの関係を、図１２に示す。
【００７２】
出力制御セレクタＬ１を設けたのは、ユークリッド法による除算の終了時にσ０　が格納される下段レジスタが、パラメータＴの値に応じて異なるからである。パラメータＴの値とσ０　が格納される下段レジスタとの関係を、図１３に示す。
【００７３】
さらに、出力制御セレクタＬ２を設けたのは、ユークリッド法による除算の終了時にσ１〜σＴ、ω０〜ωＴ−１が格納される下段レジスタが、パラメータＴの値に応じて異なるからである。パラメータＴの値とσ１〜σＴ、ω０〜ωＴ−１が格納される上段レジスタとの関係を、図１４に示す。
【００７４】
チェン検索部６５０は、多項式σ（Ｘ）、ω（Ｘ）を用いて、誤り位置および誤り評価値を演算する。図１５、図１６は、チェン検索部６５０の内部構成を示す回路図である。図１５、図１６に示したように、このチェン検索部６５０は、誤り位置演算回路１５１０と、誤り評価値演算回路１５２０とを備えている。
【００７５】
誤り位置演算回路１５１０は、誤り位置多項式（上式（７）参照）を用いて、誤り位置を検出する。この誤り位置演算回路１５１０は、第１定数倍回路１５１１−１〜１５１１−１０と、第２定数倍回路１５１２−１〜１５１２−１０と、加算器１５１３と、判定回路１５１４とを備えている。第２定数倍回路１５１２−１〜１５１２−１０は、それぞれ、セレクタ１５１２ａ、データフリップフロップ１５１２ｂおよび定数倍器１５１２ｃを備えている。第１定数倍回路１５１１−１〜１５１１−１０および定数倍器１５１２ｃの倍数を、図１７に示す。第１定数倍回路１５１１−１〜１５１１−１０は、入力値σ１　〜σ１０を（α１）Ｋ＋１〜（α１０）Ｋ＋１　倍する（図１７参照）。ここで、αは所定値であり、Ｋは短縮符号（図１９参照）である。短縮符号Ｋの値は、制御部６１０によって設定される。最大誤り訂正数Ｔが１０よりも小さいとき（すなわち０〜９のとき）、入力値σ１　〜σ１０のうち不要なものは、「０」に固定される。第１定数倍回路１５１１−１〜１５１１−１０が演算結果を出力したとき、セレクタ１５１２ａは、第１定数倍回路１５１１−１〜１５１１−１０を選択し、演算結果がデータフリップフロップ１５１２ｂに格納された後で定数倍器１５１２ｃの出力を選択する。この選択切り換えは、制御部６１０によって制御される。加算器１５１３は、第２定数倍回路１５１２−１〜１５１２−１０の演算結果および「１」の和を演算する。判定回路１５１４は、加算器１５１３の演算結果が「０」であるか否かをチェックする。次に、データフリップフロップ１５１２ｂの格納値が定数倍器１５１２ｃで定数倍（図１７参照）されて、データフリップフロップ１５１２ｂに再格納される。そして、加算器１５１３は、これらの再格納値および「１」の和を演算する。以下、同様の動作が繰り返される。第２定数倍回路１５１２−１〜１５１２−１０の繰り返し数がｉ回のときに加算器１５１３の演算結果が「０」になったとすれば、入力データのｉ桁目に誤りが発生していることになる。
【００７６】
誤り評価値演算回路１５２０は、誤り位置多項式の微分と誤り評価多項式（上式（８）参照）とを用いて、誤り評価値を演算する。誤り位置多項式の微分は、σ９Ｘ８＋σ７Ｘ６＋σ５Ｘ４＋σ３Ｘ２＋σ１　で表される。第３定数倍回路１５２１−１〜１５２１−５、第４定数倍回路１５２２−１〜１５２２−５、第５定数倍回路１５２３−１〜１５２３−９、第６定数倍回路１５２４−１〜１５２４−９、データフリップフロップ１５２５、加算器１５２６、逆元器１５２７、加算器１５２８および乗算器１５２９を備えている。また、第４定数倍回路１５２２−１〜１５２２−５は、それぞれ、セレクタ１５２２ａ、データフリップフロップ１５２２ｂおよび定数倍器１５２２ｃを備えている。同様に、第６定数倍回路１５２４−１〜１５２４−９は、それぞれ、セレクタ１５２４ａ、データフリップフロップ１５２４ｂおよび定数倍器１５２４ｃを備えている。第３定数倍回路１５２１−１〜１５１１−５および定数倍器１５２２ｃの倍数を、図１８（Ａ）に示す。また、第５定数倍回路１５２３−１〜１５２３−９および定数倍器１５２４ｃの倍数を、図１８（Ｂ）に示す。第３定数倍回路１５２１−１〜１５２１−５は、σ１，σ３，σ５，σ７，σ９を、所定倍する（図１８（Ａ）参照）。図１８（Ａ）において、αは所定値であり、Ｋは短縮符号（図１９参照）である。短縮符号Ｋの値は、制御部６１０によって設定される。なお、入力値σ１，σ３，σ５，σ７，σ９のうち不要なものは、「０」に固定される。第３定数倍回路１５２１−１〜１５２１−５が演算結果を出力したとき、セレクタ１５２２ａは、第３定数倍回路１５２１−１〜１５２１−５を選択し、演算結果がデータフリップフロップ１５２２ｂに格納された後で定数倍器１５２２ｃの出力を選択する。この選択切り換えは、制御部６１０によって制御される。加算器１５２６は、第４定数倍回路１５２２−１〜１５２２−５の演算結果の和を演算する。逆元器１５２７は、この演算結果の逆元を出力する。一方、第５定数倍回路１５２３−１〜１５２３−９は、ω１〜ω９を、所定倍する（図１８（Ｂ）参照）。図１８（Ｂ）において、αは所定値であり、Ｋは短縮符号（図１９参照）である。短縮符号Ｋの値は、制御部６１０によって設定される。なお、入力値ω１〜ω９のうち不要なものは、「０」に固定される。第５定数倍回路１５２３−１〜１５２３−９が演算結果を出力したとき、セレクタ１５２４ａは、第５定数倍回路１５２３−１〜１５２３−５を選択し、演算結果がデータフリップフロップ１５２４ｂに格納された後で定数倍器１５２４ｃの出力を選択する。この選択切り換えは、制御部６１０によって制御される。また、データフリップフロップ１５２５は、ω０　を入力する。加算器１５２８は、データフリップフロップ１５２５および第６定数倍回路１５２４−１〜１５２４−９の出力値の和を演算する。乗算器１５２９は、逆元器１５２７および加算器１５２８の出力を乗算する。第４定数倍回路１５２２−１〜１５２２−５および第６定数倍回路１５２４−１〜１５２４−９は、上述の第２定数倍回路１５１２−１〜１５１２−１０と並行して、繰り返し演算を行う。誤り位置演算回路１５１０の加算器１５１３の演算結果が「０」���あるときの、乗算器１５２９の演算結果が、誤り評価値である。
【００７７】
加算器６６０は、バッファ部６２０から入力された情報語ＸＮ−ｋＩ（Ｘ）に、チェン検索部６５０の演算結果を加算する。これにより、加算器６６０からは、訂正された情報語ＸＮ−ｋＩ（Ｘ）が出力される。
【００７８】
次に、リードソロモン復号化回路６００の全体動作を説明する。
【００７９】
まず、制御部６１０が、外部から入力された情報語ＸＮ−ｋＩ（Ｘ）を、バッファ部６２０に蓄積する。バッファ部６２０がＲＡＭの場合、情報語ＸＮ−ｋＩ（Ｘ）を、アドレス順に書きこめばよい。
【００８０】
また、制御部６１０は、データＸＮ−ｋＩ（Ｘ）＋Ｒ（Ｘ）　を、シンドローム多項式生成部６３０に順次出力する。制御部６１０は、先頭のデータがシンドローム多項式生成部６３０に入力されたとき、セレクタ７２０−０〜７２０−１９（図７参照）に、この入力データを選択させる。そして、制御部６１０は、入力データがデータフリップフロップ７３０−０〜７３０−１９に格納されると、セレクタ７２０−０〜７２０−１９の選択を、加算器７１０−０〜７１０−１９に切り換える。そして、データフリップフロップ７３０−０〜７３０−１９の格納値を定数倍回路７４０−０〜７４０−１９で定数倍し、この結果に次の入力データを加算した結果をデータフリップフロップ７３０−０〜７３０−１９に格納する動作を、最後の入力データまで繰り返す。最後の演算の結果がデータフリップフロップ７３０−０〜７３０−１９に格納されると、制御部６１０は、最大誤り訂正数Ｔの値に応じて、セレクタ７５０−０〜７５０−１９の出力を選択する（図８参照）。すなわち、最大誤り訂正数Ｔに応じて、不使用のシンドローム演算器の出力が「０」に固定される。これにより、シンドローム多項式生成部６３０からは、シンドローム多項式の係数Ｓ２Ｔ−１，Ｓ２Ｔ−２，・・・，Ｓ０　が出力される。
【００８１】
次に、制御部６１０は、誤り多項式生成部６４０に、誤り位置多項式および誤り評価多項式を生成させる。まず、制御部６１０は、最大誤り訂正数Ｔに応じて、誤り多項式生成部６４０の上段レジスタ初期設定を行う（図１１、図１２参照）。そして、誤り多項式生成部６４０は、通常のユークリッド法に基づく除算を繰り返す。次に、誤り多項式生成部６４０は、パラメータＴの値に応じてσ０　を選択し（図１３参照）、逆元部９１０により各係数項σ１〜σ１０およびω０〜ω９を１／σ０　倍する。その後、制御部６１０は、誤り多項式生成部６４０から各係数を読み出す（図１４参照）。このとき、不要な係数項の値は、「０」に固定される。
【００８２】
続いて、制御部６１０は、チェン検索部６５０に、誤り位置および誤り評価値を演算させる。制御部６１０は、短縮符号Ｋに応じて、第１、第３および第５定数倍回路１５１１−１〜１５１１−１０、１５２１−１〜１５２１−５、１５２３−１〜１５２３−９の倍数値を設定する。そして、チェン検索部６５０の誤り位置演算回路１５１０および誤り評価値演算回路１５２０が、並行して、上述のような繰り返し演算を行う。ここで、第２定数倍回路１５１２−１〜１５１２−１０の繰り返し数がｉ回のときに加算器１５１３の演算結果が「０」になったとすれば、入力データのｉ桁目に誤りが発生していることになる。この場合、誤り評価値演算回路１５２０は、繰り返し数がｉ回のときの演算結果を、誤り評価値として出力する。
【００８３】
加算器６６０は、上述のように、チェン検索部６５０の演算結果を用いて、情報語ＸＮ−ｋＩ（Ｘ）の誤り訂正を行う。
【００８４】
このように、この実施の形態に係るリードソロモン復号化回路６００は、最大誤り訂正数Ｔを任意に変更することができる。加えて、この実施の形態に係るリードソロモン復号化回路６００は、短縮符号Ｋを任意に変更することができるので、フレーム長Ｎ（＝２Ｍ　−Ｋ）を任意に変更することができる。
【００８５】
【発明の効果】
以上詳細に説明したように、本発明によれば、フレーム長Ｎおよび最大誤り訂正数Ｔを任意に設定することができるリードソロモン符号化回路およびリードソロモン復号化回路を提供することができる。
【図面の簡単な説明】
【図１】第１の実施の形態に係るリードソロモン符号化回路の全体構成を概略的に示す回路図である。
【図２】第１の実施の形態に係るリードソロモン符号化回路の仕様を示す表である。
【図３】図１に示した定数倍回路の内部構成を示す回路図である。
【図４】第１の実施の形態に係るリードソロモン符号化回路の動作を説明するための表である。
【図５】第１の実施の形態に係るリードソロモン符号化回路の動作を説明するための表である。
【図６】第２の実施の形態に係るリードソロモン符号化回路の全体構成を概略的に示すブロック図である。
【図７】図６に示したシンドローム多項式生成部の内部構成を示す回路図である。
【図８】図７に示したシンドローム多項式生成部の動作を説明するための表である。
【図９】図６に示した誤り多項式生成部の内部構成を示す回路図である。
【図１０】図６に示した誤り多項式生成部の内部構成を示す回路図である。
【図１１】図９、図１０に示した誤り多項式生成部の動作を説明するための表である。
【図１２】図９、図１０に示した誤り多項式生成部の動作を説明するための表である。
【図１３】図９、図１０に示した誤り多項式生成部の動作を説明するための表である。
【図１４】図９、図１０に示した誤り多項式生成部の動作を説明するための表である。
【図１５】図６に示したチェン検索部の内部構成を示す回路図である。
【図１６】図６に示したチェン検索部の内部構成を示す回路図である。
【図１７】図１５に示したチェン検索部の動作を説明するための表である。
【図１８】図１５に示したチェン検索部の動作を説明するための表である。
【図１９】リードソロモン符号データのフレーム構造を示す概念図である。
【符号の説明】
１１０−０〜１１０−１９　定数倍回路
１２０−０〜１２０−１９，１４１，１４２　データフリップフロップ
１３０−０〜１３０−１９，１６１　加算器
１５１，１５２　セレクタ
６１０　制御部
６２０　バッファ
６３０　シンドローム多項式生成部
６４０　誤り多項式生成部
６５０　チェン検索部
６６０　加算器
【図１】
2004120419.tif 000003
【図２】
2004120419.tif 000004
【図３】
2004120419.tif 000005
【図４】
2004120419.tif 000006
【図５】
2004120419.tif 000007
【図６】
2004120419.tif 000008
【図７】
2004120419.tif 000009
【図８】
2004120419.tif 000010
【図９】
2004120419.tif 000011
【図１０】
2004120419.tif 000012
【図１１】
2004120419.tif 000013
【図１２】
2004120419.tif 000014
【図１３】
2004120419.tif 000015
【図１４】
2004120419.tif 000016
【図１５】
2004120419.tif 000017
【図１６】
2004120419.tif 000018
【図１７】
2004120419.tif 000019
【図１８】
2004120419.tif 000020
【図１９】
2004120419.tif 000021