(57)【要約】本発明の誤り検出方法は、第１図に示すように、連続性のない並びで入力される対象符号列に対してシンドローム演算を行うと同時に、該連続性のない並びで入力される対象符号列に対して、該符号列の並びが連続性をもつようにデータをスキップさせて該データ間の連続性を補正しながら第１の誤り検出符号演算を行い、前記シンドローム演算において得られたシンドロームに基づいて、前記対象符号列の誤りデータ位置及び誤りデータ数値を計算し、該誤りデータ位置及び誤りデータ数値を元に、前記対象符号列のうちの前記誤りデータ位置に対してのみ再度第２の誤り検出符号演算を行い、該演算結果を用いて、前記第１の誤り検出符号演算による演算結果を更新することにより、連続性のない並びで入力されたＥＣＣ処理とＥＤＣ演算処理とを同時に行う。
2005022755.tif 000002
【特許請求の範囲】
【請求項１】
それぞれマトリクス状のデータからなる複数のセクタにより構成される対象符号列に対してシンドローム演算を行うシンドローム演算器を有し、該対象符号列に対して誤り訂正回路による誤り訂正処理を行うと同時に、該対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出装置であって、
前記対象符号列の誤り検出符号を演算する誤り検出符号演算回路と、
前記対象符号列が連続性のない並びで入力された際に、該符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算回路と、
前記シンドローム演算と同じ時点で行われる、前記誤り検出符号演算回路あるいは誤り検出符号スキップ演算回路による第１の誤り検出符号演算処理を制御する第１の誤り検出制御回路と、
前記誤り訂正処理後に、該誤り訂正処理より得られた誤りデータ位置及び誤りデータ数値を元に、該誤りデータ位置が示すデータに対してのみ行う第２の誤り検出符号演算処理を制御すると共に、該第２の誤り検出符号演算処理による演算結果を元に、前記第１の誤り検出符号演算処理の演算結果を更新する更新処理を制御する第２の誤り検出制御回路と、
前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路による演算結果を保持するメモリと、を備える、
ことを特徴とする誤り検出装置。
【請求項２】
請求の範囲第１項に記載の誤り検出装置において、
前記誤り検出符号スキップ演算回路は、前回までに入力された対象符号列の誤り検出符号を入力とし、該誤り検出符号スキップ演算回路に予め設定されたスキップ演算を行う、
ことを特徴とする誤り検出装置。
【請求項３】
請求の範囲第１項に記載の誤り検出装置において、
前記メモリは、前記対象符号列が連続性のある並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ単位の演算結果を保持し、前記対象符号列が連続性のない並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ毎の途中演算結果を保持する第１のメモリと、
前記第１のメモリから送信される演算結果を、前記各セクタ毎に保持する第２のメモリ、と、を備える、
ことを特徴とする誤り検出装置。
【請求項４】
請求の範囲第１項に記載の誤り検出装置において、
前記第１のメモリは、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路で実行される、前記第１の誤り検出符号演算処理による演算結果を保持するメモリと、前記第２の誤り検出符号演算処理による、前記第１の誤り検出符号演算処理の演算結果を更新する差分演算結果を保持するメモリとを含む、
ことを特徴とする誤り検出装置。
【請求項５】
請求の範囲第１項に記載の誤り検出装置において、
前記誤り検出符号スキップ演算回路は、前記対象符号列が連続性のない並びで入力されたとき、該対象符号列のうち前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記対象符号列のうち前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行う、
ことを特徴とする誤り検出装置。
【請求項６】
請求の範囲第１項に記載の誤り検出装置において、
前記対象符号列の該スクランブル成分を一括除去するスクランブル除去部を含む、
ことを特徴とする誤り検出装置。
【請求項７】
請求の範囲第６項に記載の誤り検出装置において、
前記スクランブル除去部は、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを有する、
ことを特徴とする誤り検出装置。
【請求項８】
それぞれマトリクス状のデータからなる複数のセクタにより構成される、連続性のない並びで入力された対象符号列に対して誤り訂正単位ブロック単位で誤り訂正を行うと同時に、該連続性のない並びで入力される対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出方法であって、
前記対象符号列に対してシンドローム演算を行うシンドローム演算ステップと、
前記シンドローム演算ステップと同時に行われる、該連続性のない並びで入力される対象符号列に対して誤り検出符号演算を行う第１の誤り検出符号演算ステップと、
前記シンドローム演算ステップにおいて得られたシンドロームに基づいて、前記対象符号列の誤りデータ位置及び誤りデータ数値を計算して誤り訂正を行う誤り訂正ステップと、
前記誤り訂正ステップにおいて得られた前記誤りデータ位置及び誤りデータ数値を元に、前記対象符号列のうちの前記誤りデータ位置に対してのみ再度誤り検出符号演算を行う第２の誤り検出符号演算ステップと、
前記第２の誤り検出符号演算ステップによる演算結果を用いて、前記第１の誤り検出符号演算ステップによる演算結果を更新する更新ステップと、を含み、
前記第１の誤り検出符号演算ステップ及び第２の誤り検出演算ステップは、前記対象符号列の誤り検出符号を演算する誤り検出符号演算ステップと、前記連続性のない並びで入力された対象符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算ステップと、を含む、
ことを特徴とする誤り検出方法。
【請求項９】
請求の範囲第８項に記載の誤り検出方法において、
前記誤り検出符号スキップ演算ステップは、前回までに入力された対象符号列の誤り検出符号を入力とし、予め設定されたスキップ演算を行う、
ことを特徴とする誤り検出方法。
【請求項１０】
請求の範囲第８項に記載の誤り検出方法において、
前記誤り検出符号スキップ演算ステップは、前記対象符号列のうち前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記対象符号列のうち前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行う、
ことを特徴とする誤り検出方法。
【請求項１１】
請求の範囲第１０項に記載の誤り検出方法において、
前記個別のスキップ演算は、前記データが存在する列位置のうち、特定の列位置で実行されるステップ演算の演算結果を複数回利用して行う、
ことを特徴とする誤り検出方法。
【請求項１２】
請求の範囲第８項に記載の誤り検出方法において、
前記更新ステップと同時に行われる、前記対象符号列に含まれるスクランブル成分を除去するスクランブル除去ステップを含む、
ことを特徴とする誤り検出方法。
【請求項１３】
請求の範囲第１２項に記載の誤り検出方法において、
前記スクランブル除去ステップは、１セクタの全データが入力された後に、該セクタの全データのスクランブル成分を一度に除去する、
ことを特徴とする誤り検出方法。
【請求項１４】
請求の範囲第１２項に記載の誤り検出方法において、
前記スクランブル除去ステップは、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを用いて行われる、
ことを特徴とする誤り検出方法。
【発明の詳細な説明】
【技術分野】  本発明は、誤り検出装置及び誤り検出方法に関し、特に誤り訂正と誤り検出を同時に実行する誤り検出装置及び誤り検出方法に関する。
【背景技術】  デジタルデータの記録／再生を行うシステムでは、再生時もしくは記録時にデータ中に誤りが発生することがあることから、その誤りを訂正し、行った誤り訂正が正しいものかどうかを判定する誤り検出を行う必要がある。
例えば、光記録媒体であるＤＶＤの記録／再生において、誤り訂正はＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）、誤り検出はＥＤＣ（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｎｇ  Ｃｏｄｅ）と呼ばれる方法が用いられる。
前記ＥＣＣは、誤り訂正単位ブロック（以下、「ＥＣＣブロック」と称す。）単位で処理が実行され、該ＥＣＣブロックは、第１１図に示すように１６セクタより構成されている。そして、前記ＥＤＣは、前記ＥＣＣブロック中のセクタ単位でその処理が実行されるものであり、１セクタは第１２図に示すような構成を有する。
以下、第１１図〜第１４図を用いて、ＥＣＣ復号の概要を、光記録媒体であるＤＶＤに記録されているデータを誤り訂正する場合を例に挙げて説明する。
まず、ＤＶＤに記録されているデータ符号を誤り訂正する場合、ＤＶＤから読み出したＥＣＣ符号化されたデータ符号を復号し、そのデータに対して、第１１図に示すＣ１方向もしくはＣ２方向に誤り訂正を行う。このとき、ＥＣＣ復号したデータから位置多項式及び数値多項式を生成し、それらの根を求めることにより、誤りデータ位置及び誤りデータ数値を算出する。
そして、１ＥＣＣブロック中の符号列に対して、前記Ｃ１方向あるいはＣ２方向に誤り訂正を行った際、そのデータ中に誤り訂正能力を超える誤りが存在した場合は、その誤り訂正能力を超えるデータ符号列を第１３図に示すように訂正不能符号列とし、この訂正不能符号列に関する情報を消失位置情報として記憶しておく。
前述のようにして、１ＥＣＣブロック中の全ての符号列に対して、第１１図に示すＣ１方向もしくはＣ２方向に誤り訂正が完了した後、今度は、前回と異なる方向（Ｃ２方向もしくはＣ１方向）に、前記消失位置情報を用いて、前記１ＥＣＣブロック中の符号列に対して誤り訂正を行う。
前記消失位置情報を用いて誤り訂正を行う場合は、予め誤りデータ位置がわかっているため、前記多項式を生成する際に、数値多項式のみを求めれば良いことになる。その結果、誤り訂正能力を向上させることができる。
例えば、最初に、第１３図に示すように、１ＥＣＣブロック中の全ての符号列に対してＣ１方向に誤り訂正を行ったとき、１ＥＣＣブロック中の５０、９０、１３０、２００行目が訂正不能符号列であったとする。この後、第１４図に示すように、前回と異なる方向であるＣ２方向に誤り訂正を行うのだが、この時前記訂正不能符号列を示す消失位置情報をもとに、１ＥＣＣブロック中の５０、９０、１３０、２００Ｂｙｔｅ目を消失位置情報と指定し、前記Ｃ２方向の誤り訂正能力を向上させることができる。この方法により、伝送系で発生したバースト誤りに対して訂正能力を落とすことなく誤り訂正が可能となる。
そして、データ符号列に対して誤り訂正及び誤り検出を行う場合、従来においては、前述のＥＣＣ処理が１ＥＣＣブロック分終了した後に、該１ＥＣＣブロックのセクタ単位でＥＤＣ演算を行っていた。
以下、第１４図及び第１５図を用いて、ＥＤＣ演算の概要について説明する。第１５図はＥＤＣ演算回路の構成例を示す図であり、ここでは、４Ｂｙｔｅ入力のＥＤＣ演算回路を示す。
まず、ＥＤＣの演算式は下記のようになる。
2005022755.tif 000003
前記ＥＤＣ演算式は、第１５図のＥＤＣ演算回路に示されるように、３２ビットのシフトレジスタの、０ビット目、４ビット目、３１ビット目への入力にＥＸＯＲ演算回路が配置され、該ＥＸＯＲ演算回路にて、それぞれ、４Ｂｙｔｅの最上位からのビット入力と３１ビット目、３ビット目と３１ビット目、及び３０ビット目と３１ビット目のＥＸＯＲが演算される。
以上に示したＥＤＣ演算式、あるいは第１５図のＥＤＣ演算回路から理解できるように、ＥＤＣ演算はデータの記録方向（第１１図に示されるＣ１方向）に沿った線形演算である。
そして、前記第１２図に示すような構成を有する１セクタを、データの記録方向、つまりＩＤ領域、ＩＥＣ領域、ＲＳＶ領域、ユーザデータ領域、ＥＤＣ領域の順序で、それぞれ４Ｂｙｔｅ毎に、第１５図に示すＥＤＣ演算回路に入力すると、最終の４ＢｙｔｅであるＥＤＣ領域を入力した後の３２ビットのシフトレジスタ値がＥＤＣ演算結果となる。
このように、従来では一般的に、誤り訂正（ＥＣＣ）を行った後に、誤り検出（ＥＤＣ）を行う方法が用いられているが、この方法では、誤り訂正を行うための一単位であるＥＣＣブロックをバッファから読み出して誤り訂正を行った後、誤り検出を行うために、再びＥＣＣブロックを前記バッファから読み出さなければならないため、メモリバッファのバンド幅の消費、処理時間の肥大化という問題が生じる。
このようなメモリバッファのバンド幅の消費、あるいは処理時間の肥大化の問題を解決する方法としては、ＥＣＣとＥＤＣとの両方の処理を、バッファよりＥＣＣブロックを一度読み出すのみで、同時に処理することが考えられる。
しかし、前述したように、ＥＤＣ演算処理はデータの記録方向（第１１図のＣ１方向）に沿った線形演算であるため、誤り訂正回路にて、第１３図に示すように入力されるデータの並びに連続性がある、Ｃ１方向に誤り訂正を行う場合は、該Ｃ１方向のＥＣＣと、前記ＥＤＣ演算とを同時に処理することが可能であるが、第１４図に示すように入力されるデータの並びに連続性がない、Ｃ２方向に誤り訂正を行う場合は、該Ｃ２方向のＥＣＣと、前記ＥＤＣ演算とを同時処理するのは難度が高く、このような同時処理を半導体に実装するのは困難、という課題がある。
本発明は前記課題を解決するためになされたものであり、ＥＣＣブロックの誤り検出を行う対象符号列が連続性のない並び（第１１図のＣ２方向）で入力された際にも、誤り訂正と誤り検出を同時に行える誤り検出装置及び誤り検出方法を提供することを目的とするものである。
【発明の開示】
本発明の誤り検出装置は、それぞれマトリクス状のデータからなる複数のセクタにより構成される対象符号列に対してシンドローム演算を行うシンドローム演算器を有し、該対象符号列に対して誤り訂正回路による誤り訂正処理を行うと同時に、該対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出装置であって、前記対象符号列の誤り検出符号を演算する誤り検出符号演算回路と、前記対象符号列が連続性のない並びで入力された際に、該符号列の並びを連続させるようにデータをスキップさせて入力データ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算回路と、前記シンドローム演算と同じ時点で行われる、前記誤り検出符号演算回路あるいは誤り検出符号スキップ演算回路による第１の誤り検出符号演算処理を制御する第１の誤り検出制御回路と、前記誤り訂正処理後に、該誤り訂正処理より得られた誤りデータ位置及び誤りデータ数値を元に、該誤りデータ位置が示すデータに対してのみ行う第２の誤り検出符号演算処理を制御すると共に、該第２の誤り検出符号演算処理による演算結果を元に、前記第１の誤り検出符号演算処理の演算結果を更新する更新処理を制御する第２の誤り検出制御回路と、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路による演算結果を保持するメモリと、を備えるものである。
これにより、ＥＣＣブロックの誤り検出を行う対象符号列が連続性のない並びで入力された際にも、誤り訂正と誤り検出を同時に行える。
さらに、本発明の誤り検出装置は、前記誤り検出符号スキップ演算回路は、前回までに入力された対象符号列の誤り検出符号を入力とし、該誤り検出符号スキップ演算回路に予め設定されたスキップ演算を行うものである。
これにより、簡単な処理でスキップ演算が行え、誤り訂正と誤り検出の同時実行を、半導体回路に実装可能にする。
さらに、本発明の誤り検出装置は、前記メモリは、前記対象符号列が連続性のある並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ単位の演算結果を保持し、前記対象符号列が連続性のない並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ毎の途中演算結果を保持する第１のメモリと、前記第１のメモリから送信される演算結果を、前記各セクタ毎に保持する第２のメモリと、を備えるものである。
これにより、ＥＣＣブロックの誤り検出を行う対象符号列が連続性のない並びで入力された際にも、セクタ毎のＥＤＣ演算結果を得ることができる。
さらに、本発明の誤り検出装置は、前記第１のメモリは、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路で実行される、前記第１の誤り検出符号演算処理による演算結果を保持するメモリと、前記第２の誤り検出符号演算処理による、前記第１の誤り検出符号演算処理の演算結果を更新する差分演算結果を保持するメモリとを含むものである。
これにより、簡単な処理で正しいＥＤＣ演算結果が得ることが可能となり、誤り訂正と誤り検出の同時実行を、半導体回路に実装可能にする。
さらに、本発明の誤り検出装置は、前記誤り検出符号スキップ演算回路は、前記対象符号列が連続性のない並びで入力されたとき、該対象符号列のうち前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記対象符号列のうち前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行うものである。
これにより、前記対象符号列が連続性のない並びで入力されたときにも、ＥＤＣ演算処理を行うことができ、誤り訂正と誤り検出の同時実行を、半導体回路に実装可能にする。
さらに、本発明の誤り検出装置は、前記対象符号列の該スクランブル成分を一括除去するスクランブル除去部を含むものである。
これにより、処理資源を最小化できる。
さらに、本発明の誤り検出装置は、前記スクランブル除去部は、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを有するものである。
これにより、前記対象符号列のスクランブル成分を一括除去することが可能となる。
また、本発明の誤り検出方法は、それぞれマトリクス状のデータからなる複数のセクタにより構成される、連続性のない並びで入力された対象符号列に対して誤り訂正単位ブロック単位で誤り訂正を行うと同時に、該連続性のない並びで入力される対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出方法であって、前記対象符号列に対してシンドローム演算を行うシンドローム演算ステップと、前記シンドローム演算ステップと同時に行われる、該連続性のない並びで入力される対象符号列に対して誤り検出符号演算を行う第１の誤り検出符号演算ステップと、前記シンドローム演算ステップにおいて得られたシンドロームに基づいて、前記対象符号列の誤りデータ位置及び誤りデータ数値を計算して誤り訂正を行う誤り訂正ステップと、前記誤り訂正ステップにおいて得られた前記誤りデータ位置及び誤りデータ数値を元に、前記対象符号列のうちの前記誤りデータ位置に対してのみ再度誤り検出符号演算を行う第２の誤り検出符号演算ステップと、前記第２の誤り検出符号演算ステップによる演算結果を用いて、前記第１の誤り検出符号演算ステップによる演算結果を更新する更新ステップと、を含み、前記第１の誤り検出符号演算ステップ及び第２の誤り検出演算ステップは、前記対象符号列の誤り検出符号を演算する誤り検出符号演算ステップと、前記連続性のない並びで入力された対象符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算ステップと、を含むものである。
これにより、ＥＣＣブロックの誤り検出を行う対象符号列が連続性のない並びで入力された際にも、誤り訂正と誤り検出を同時に行える。
さらに、本発明の誤り検出方法は、前記誤り検出符号スキップ演算ステップは、前回までに入力された対象符号列の誤り検出符号を入力とし、予め設定されたスキップ演算を行うものである。
これにより、簡単な処理でスキップ演算が行え、入力されるデータの並びに連続性がない場合でも、誤り訂正と誤り検出との同時実行を、容易に実現することができる。
さらに、本発明の誤り検出方法は、前記誤り検出符号スキップ演算ステップは、前記対象符号列のうち前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記対象符号列のうち前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行うものである。
これにより、前記対象符号列が連続性のない並びで入力されたときにも、ＥＤＣ演算処理を行うことができ、誤り訂正と誤り検出の同時実行を、半導体回路に実装可能にする。
さらに、本発明の誤り検出方法は、前記個別のスキップ演算は、前記データが存在する列位置のうち、特定の列位置で実行されるステップ演算の演算結果を複数回利用して行うものである。
これにより、セクタ内の誤り検出演算処理単位列に対応した、全てのスキップ演算処理を用意することなく、別個に存在するスキップ演算を複数回再利用することができ、この結果、処理資源の消費を抑えることが可能となる。
さらに、本発明の誤り検出方法は、前記更新ステップと同時に行われる、前記対象符号列に含まれるスクランブル成分を除去するスクランブル除去ステップを含むものである。
これにより、ＥＣＣ処理及びＥＤＣ処理後のデータから、スクランブル成分を除去できる。
さらに、本発明の誤り検出方法は、前記スクランブル除去ステップは、１セクタの全データが入力された後に、該セクタの全データのスクランブル成分を一度に除去するものである。
これにより、スクランブル成分の除去処理に必要な処理資源を削減できる。
さらに、本発明の誤り検出方法は、前記スクランブル除去ステップは、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを用いて行われるものである。
これにより、ＥＣＣ処理及びＥＤＣ処理後のデータから、全データのスクランブル成分を一度に除去することができる。
【図面の簡単な説明】  第１図は、本発明の実施の形態１における、ＥＣＣ処理とＥＤＣ処理の同時実行した際のパイプライン処理を示す図である。
第２図は、本発明の実施の形態１における、誤り検出回路の構成を示す図である。
第３図は、本発明の実施の形態１における、Ｃ２方向訂正時に第０セクタにおいてデータ入力単位を４Ｂｙｔｅとしたときの誤り訂正回路、及び誤り検出回路に対するデータ入力順序を示す図である。
第４図は、本発明の実施の形態１における誤り検出回路において、Ｃ２方向訂正時の第１のＥＤＣ演算処理の一連の流れを示すフローチャート図である。
第５図は、本発明の実施の形態１における誤り検出回路のＣ２方向訂正時における第１のＥＤＣ演算処理のデータの流れを示す図である。
第６図は、本発明の実施の形態１における誤り検出回路の、Ｃ２方向訂正時における第２のＥＤＣ演算処理のデータの流れを示す図である。
第７図は、本発明の実施の形態１における誤り検出回路の、誤り検出符号スキップ演算回路において、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を示す図である。
第８図は、本発明の実施の形態１における誤り検出回路の、誤り検出符号スキップ演算回路において、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理の分割処理を示す図である。
第９図は、本発明の実施の形態１における、対象符号列が入力される度にスクランブル成分を除去する場合の、誤り検出回路の構成図である。
第１０図は、本発明の実施の形態１における、データ符号列が入力される度にスクランブル成分を付加する場合の、誤り検出回路の構成図である。
第１１図は、ＤＶＤに記録されたデータを誤り訂正単位ブロック（ＥＣＣブロック）に分けたときの１ＥＣＣブロック構成図である。
第１２図は、ＥＣＣブロック上のセクタの構成を示す図である。
第１３図は、ＥＣＣブロックの第１１図に示すＣ１方向についての誤り訂正実施例を示す図である。
第１４図は、ＥＣＣブロックの第１１図に示すＣ２方向についての誤り訂正実施例を示す図である。
第１５図は、４Ｂｙｔｅ入力のＥＤＣ演算回路を示す図である。
【発明を実施するための最良の形態】  実施の形態１．
以下、本実施の形態１における、誤り訂正と誤り検出を同時処理する概要を、第１図を用いて説明する。なお、本実施の形態１においては、光記録媒体であるＤＶＤに記録されているデータを誤り訂正（ＥＣＣ）及び誤り検出（ＥＤＣ）する場合を例に挙げて説明する。また、誤り訂正を行う一単位である誤り訂正単位ブロック（以下、「ＥＣＣブロック」と称す。）は、第１１図に示すように１６のセクタより構成され、１セクタは、第１２図に示す構成を有するものとする。
第１図は、ＥＣＣ処理とＥＤＣ処理の同時実行におけるパイプライン処理を説明する図である。
ＥＣＣ処理とＥＤＣ処理とを同時実行する場合、まず、ステップＳ１０において、ＤＶＤから、誤り訂正及び誤り検出を行うべき対象データ符号列を、第１１図に示されるように１ＥＣＣブロックのＣ１方向あるいはＣ２方向に入力して、ＥＣＣ処理のシンドローム演算を行う。このシンドローム演算結果は、その値が“０”のとき誤りが存在しないことを示し、“０”でないとき誤りが存在することを示す。
そして、前記ステップＳ１０と同じパイプライン処理ステージであるステップＳ２０において、前記ステップＳ１０と同じ順番で入力されるデータ符号列に対して、第１のＥＤＣ演算を実行し、セクタ単位毎に第１の誤り検出符号演算結果を得る。この第１の誤り検出符号演算結果は、入力されたデータ符号列に誤りが含まれていない場合は正常な値となり、誤りが含まれている場合は不正な値となる。
そして、前記ステップＳ１０により得られるシンドローム演算結果が“０”で、入力されたデータ符号列に誤りが存在しないと判定された場合は、ステップＳ３０の誤り訂正処理は行われずに、一連の処理を終了する。そしてこの場合、前記ステップＳ２０において得られた第１の誤り検出符号演算結果が、当該誤り検出装置より得られる正しいＥＤＣ演算結果として出力される。
一方、ステップＳ１０により得られるシンドローム演算結果が“０”とならず、入力されたデータ符号列に誤りが存在すると判定された場合は、該データ符号列に対して誤り訂正処理が行われ、誤りデータ位置及び誤りデータ数値を得る（ステップＳ３０）。
そして、ステップＳ４０において、前記ステップＳ３０で得られた誤りデータ位置、及び誤りデータ数値を元にして、ＤＶＤから入力されるデータ符号列のうち、該得られた誤り位置が示すデータに対してのみ、第２のＥＤＣ演算処理を実行して、第２の誤り検出符号演算結果を得る。このときに得られる第２の誤り検出符号演算結果は、当該誤り検出装置より得られる正しいＥＤＣ演算結果と、前記ステップＳ２０において得られた前記第１の誤り検出符号演算結果との差分情報である。
よって、ステップＳ５０において、前記ステップＳ４０で得られた第２の誤り検出符号演算結果を用いて、前記ステップＳ２０において得られた第１の誤り検出符号演算結果を更新し、その更新後の誤り検出符号演算結果が、当該誤り検出回路より得られる正しいＥＤＣ演算結果として出力される。
さらに、前記ステップＳ５０と同じパイプライン処理ステージであるステップＳ６０で、スクランブル成分を除去するためのデータを保持するテーブルを用いて、入力されるデータ符号列のスクランブル成分を一括で除去する処理が行われる。
以上のような一連の処理を行うことにより、ＥＣＣ処理と、ＥＤＣ処理、及び入力されるデータ符号列のスクランブル成分除去処理を、ＥＣＣブロックをバッファから１度だけ読み出すことによって、実行することが可能となる。
なお、第１図では、データ符号列のスクランブル成分を、ＥＤＣ演算処理後に一括除去するものとして説明したが、前記スクランブル成分をＥＤＣ演算処理後に一括除去するのではなく、ステップＳ２０のＥＤＣ演算処理の際、前記データ符号列が入力される度に除去しながら演算処理するようにしてもよい。
また、前述の説明では、ＤＶＤに記録されているデータを再生する場合を例に挙げ、入力データ符号列にスクランブル成分が含まている場合を想定しているが、入力データ符号列にスクランブル成分が含まれていない場合もある。例えば、ＤＶＤにデータを記録する場合は、入力データにはスクランブル成分は含まれていない。従ってこの場合、ステップＳ１０のシンドローム演算処理の際、前記データ符号列が入力される度にスクランブル成分を付加しながら演算処理する。なお、スクランブル成分をデータ符号列に付加する場合は、ステップＳ６０に示すスクランブル除去のように一括して行うことはできない。
次に、ＥＣＣ処理とＥＤＣ処理の同時処理が実行可能な、本実施の形態１における誤り検出回路の構成について、第２図を用いて説明する。なお、ここでは、第１図を用いて説明したように、入力されるデータ符号列にスクランブル成分が含まれ、該スクランブル成分を一括除去する場合の構成について説明する。
第２図は、本実施の形態１にかかる誤り検出回路の構成を示す図である。
本実施の形態１に係る誤り検出回路１０は、前記データ符号列に対してシンドローム演算を行うシンドローム演算器２１を有する誤り訂正回路２０がＥＣＣ処理を実施するのと同時に、ＥＤＣ処理を実施可能なものであって、第２図に示すように、誤り検出符号演算回路１１１と誤り検出符号スキップ演算回路１１２とからなる演算回路１１と、第１の誤り検出符号演算結果保持部１３１と第２の誤り検出符号演算結果保持部１３２とからなる第１のメモリ１３と、第２のメモリ１２と、第１の誤り検出制御回路１４１と第２の誤り検出制御回路１４２とからなる制御回路１４とで構成される。そして、スクランブル除去部１５は、データ符号列のスクランブル成分を除去するものである。
以下、各回路について説明すると、前記制御回路１４は、当該誤り検出回路１０に入力されるデータ符号列に対して誤り検出を行う際に、当該誤り検出回路１０を制御するものであり、前記第１の誤り検出制御回路１４１は、前記誤り訂正回路２０内のシンドローム演算器２１における前記データ符号列に対するシンドローム演算と同時に行われる第１のＥＤＣ演算処理（第１図のステップＳ２０）を制御し、前記第２の誤り検出制御回路１４２は、前記誤り訂正回路２０による誤り訂正処理後の第２のＥＤＣ演算処理、及び前記第１のＥＤＣ演算結果の更新処理（第１図のステップＳ４０，Ｓ５０）を制御する。
そして、前記演算回路１１は、前記制御回路１４の制御の下、入力される前記データ符号列に対して誤り検出演算を行うものであり、前記誤り検出符号演算回路１１１は、前記データ符号列が第１１図のＣ１方向、つまり連続性のある並びで入力された際に、該データ符号列の誤り検出符号を任意のデータ毎（ここでは４バイト毎）に演算するものであり、前記誤り検出符号スキップ演算回路１１２は、前記データ符号列が第１１図のＣ２方向、つまり連続性のない並びで入力された場合に、該入力データに連続性をもたせるように、データをスキップさせて入力データ間の連続性を補正するスキップ演算を行う。
そして、前記第１のメモリ１３は、前記演算回路１１において得られた途中演算結果を保持していくものであり、前記第１の誤り検出符号演算結果保持部１３１は、前記第１の誤り検出制御回路１４１の制御の下で行われる第１のＥＤＣ演算（第１図のステップＳ２０）で得られた演算結果を保持するものであり、前記第２の誤り検出符号演算結果保持部１３２は、前記第２の誤り検出制御回路１４２の制御の下で行われる第２のＥＤＣ演算（第１図のステップＳ４０）で得られた演算結果、つまり前記第１のＥＤＣ演算処理による演算結果を更新するための差分情報を保持するものである。
そして、前記第２のメモリ１２は、前記第１のメモリ１３から出力された演算結果をセクタ毎に保持するものであり、前記第２のＥＤＣ演算処理後に、前記第１のＥＤＣ演算結果が前記第２のＥＤＣ演算結果により更新され、該第２のメモリ１２には、正しいＥＤＣ演算結果が保持される。
以下、ＥＣＣ処理とＥＤＣ処理の同時実行処理動作を説明する。
まず、誤り訂正回路２０で、対象データ符号列が第１１図のＣ１方向に訂正処理される場合、誤り訂正回路２０及び誤り検出回路１０に対して、ＤＶＤから、誤り訂正及び誤り検出を行うべきデータ符号列が、第１１図のＣ１方向に沿って、連続性のある並びで、１ＥＣＣブロック分入力される。データ符号列が入力されると、誤り訂正回路２０では、シンドローム演算器２１においてＥＣＣ処理のシンドローム演算が行われる（第１図のステップＳ１０）と同時に、誤り検出回路１０では、演算回路１１の誤り検出符号演算回路１１１で、第１の誤り検出制御回路１４１の制御の下、第１のＥＤＣ演算が行われ（第１図のステップＳ２０）、セクタ単位毎に第１の誤り検出符号演算結果が得られる。この第１の誤り検出符号演算結果は、第１のメモリ１３の第１の誤り検出符号演算結果保持部１３１に保持される。
一方、誤り訂正回路２０で、対象データ符号列が第１１図のＣ２方向に訂正処理される場合は、誤り訂正回路２０及び誤り検出回路１０に対して、ＤＶＤから、誤り訂正及び誤り検出を行うべきデータ符号列が、第１１図のＣ２方向に沿って、連続性のない並びで、１ＥＣＣブロック分入力される。
具体的には、誤り訂正回路２０及び誤り検出回路１０に対して入力されるデータ符号列は、第３図に示すようになる。第３図は、本実施の形態１における、１ＥＣＣブロックの第０セクタのデータ符号列に対してＣ２方向に誤り訂正処理される際の、誤り訂正回路及び誤り検出回路に対するデータ符号列のデータ入力順序及びＥＤＣ演算順序を示す図である。
このような連続性のない並びでデータ符号列が入力されると、誤り訂正回路２０内のシンドローム演算器２１にて、シンドローム演算が実行されると同時に（第１図のステップＳ１０）、誤り検出回路１０内の演算回路１１の誤り検出符号スキップ演算回路１１２にて、第１の誤り検出制御回路１４１の制御の下、第１のＥＤＣ演算処理が行われる。
以下、誤り訂正回路にてＣ２方向訂正時に同時にＥＤＣ演算処理を行う場合について、第４図及び第５図を参照しながら説明する。
第４図は、本実施の形態１における誤り検出回路にデータ符号列が連続性のない並びで入力された際の、第１のＥＤＣ演算処理を示すフローチャート図、第５図は、第１のＥＤＣ演算処理時のデータの流れを示す図である。
第４図に示すように、第１のＥＤＣ演算処理が開始されると、まず、第１の誤り検出制御回路１４１内に保持されているセクタ内行数カウンタ“ＲＯＷ”と、セクタ内列数カウンタ“ＣＯＬ”とを初期化する（ステップＳ２０１，Ｓ２０２）。そして、第１のメモリ１３内の第１誤り検出符号演算結果保持部１３１の値（以下、「“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”」と称す。）、及び第２のメモリ１２の値（以下、「“ＥＤＣ＿ＶＡＬ”」と称す。）を初期化する（ステップＳ２０３，Ｓ２０４）。
この後、誤り検出回路１０及び誤り訂正回路２０において、前記データ符号列を４Ｂｙｔｅ受信する。この受信したデータは、第３図に示す“０”番目のデータである（ステップＳ２０５）。
そして、受信したデータに対して、誤り検出符号演算回路１１１において、後述する４Ｂｙｔｅ入力のＥＤＣ演算処理を行い（ステップＳ２０６）、その演算結果と、“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”のＥＸＯＲをとった値を、再度“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”に保持する（ステップＳ２０７）。
以上のようにして“０”番目のデータのＥＤＣ演算が終了後、次に入力されるデータ符号列は、第３図に示す“１”番目のデータである。この次に入力される“１”番目のデータは、第３図から明らかなように、先に入力された“０”番目のデータとデータの並びに連続性をもたない。
データの並びに連続性があるか否かは、前記第１の誤り検出制御回路１４１にて、現在処理中のセクタ内行数カウンタ“ＲＯＷ”を判定し、該セクタ内行数カウンタ“ＲＯＷ”が、セクタ内最終行である“１１”でなければ、データに連続性がないと判断する（ステップＳ２０８）。
そして、前記第１の誤り検出制御回路１４１にて、データに連続性が無いと判断されると、“０”番目のデータと“１”番目のデータ間の連続性を補正するために、前記第１の誤り検出制御回路１４１の制御の下、前記演算回路１１内の誤り検出符号スキップ演算回路１１２によって、１６８ＢｙｔｅスキップＥＤＣスキップ演算処理を行う（ステップＳ２０９）。この処理の詳細については後述する。
そして、この誤り検出符号スキップ演算回路１１２により得たスキップ演算結果と、前記“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”のＥＸＯＲをとった値を、再度“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”に保持する（ステップＳ２１０）。
この後、前記第１の誤り訂正検出制御回路１４１は、セクタ内行数カウンタ“ＲＯＷ”を１インクリメントし（ステップＳ２１１）、次行のＥＤＣ演算処理に移行する。
以上の処理を、前記セクタ内行数カウンタ“ＲＯＷ”がセクタ内最終行である“１１”になるまで繰り返す。
ステップＳ２０８において、前記セクタ内行数カウンタ“ＲＯＷ”が“１１”になった場合は、第３図に示す“１１”番目、もしくは“２１９”番目、・・・、“８５３９”番目のデータ入力に対応した４Ｂｙｔｅ入力のＥＤＣ演算処理が終了している状態となる。
そして、前記セクタ内列数カウンタ“ＣＯＬ”が“４２”になるまで、“ＣＯＬ”の値毎に前記誤り検出符号スキップ演算回路１１２において行うＥＤＣスキップ演算処理は異なるため、前記セクタ内行数カウンタ“ＲＯＷ”が“１１”になる度に、前記第１の誤り検出制御回路１４１により、現在のセクタ内列数カウンタ“ＣＯＬ”の値に対応した個別の処理（第４図のステップＳ２１３参照）となるよう制御される。
例えば、ステップＳ２１３の時点で、現在前記セクタ内列数カウンタ“ＣＯＬ”が“１”、つまり、第３図に示す“２１９”番目のデータまでＥＤＣ演算処理が終了している状態であれば、該“２１９”番目のデータと、第３図に示すセクタの最終データでありＥＤＣ領域である“８７４７”番目のデータまでの差分は１６４Ｂｙｔｅであるため、前記第１の誤り検出制御回路１４１は、前記誤り検出符号スキップ演算回路１１２において、１６４ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を行うように制御する。また、前記ステップＳ２１３に時点で、前記セクタ内列数カウンタ“ＣＯＬ”が“４１”、つまり第３図に示す“８５３９”番目のデータまでのＥＤＣ演算処理が終了している状態であれば、該“８５３９”番目のデータと、第３図に示す最終データでありＥＤＣ領域である“８７４７”番目のデータまでの差分は４Ｂｙｔｅであるため、前記第１の誤り検出制御回路１４１は、前記誤り検出符号スキップ演算回路１１２において、４ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を行うように制御する。
そして、前記セクタ内列数カウンタ“ＣＯＬ”値毎に異なる、前記誤り検出符号スキップ演算回路１１２によるスキップ演算結果と、“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”とのＥＸＯＲをとった値を、再度“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”に保持する（ステップＳ２１４）。
この時点で、第１のメモリ１３内の、第１の誤り検出符号演算結果保持部１３１（“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”）には、セクタ内１列分の演算結果が保持されたこととなるので、第５図に示すように、第１の誤り制御回路１４１により、この保持された演算値を第２のメモリ１２（“ＥＤＣ＿ＶＡＬ”）に出力して、該第２のメモリ１２内の対応するセクタレジスタに出力して保持する。つまり、“ＥＤＣ＿ＶＡＬ”と“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”とのＥＸＯＲをとった値を、再度“ＥＤＣ＿ＶＡＬ”に保持する（ステップＳ２１５）。例えば、現在第０セクタ内の“ＣＯＬ”が“１”、つまり第３図に示す“２１９”番目のデータまでのＥＤＣ演算が終了し、“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”には、第３図の“２０８”番目〜“２１９”番目のデータまでのＥＸＯＲをとった値が保持されている場合、第５図に示すように、この値を“ＥＤＣ＿ＶＡＬ”内の第０セクタレジスタに出力する。
この後、“ＲＯＷ”を初期化し（ステップＳ２１６）、“ＣＯＬ”を１インクリメントする（ステップＳ２１７）。
一方、前記ステップＳ２０８にて“ＲＯＷ”が“１１”で、前記ステップＳ２１２にて“ＣＯＬ”が“４２”であった場合には、第３図に示す“８７４７”番目のデータ入力に対応した４Ｂｙｔｅ入力ＥＤＣ演算処理が終了した状態であるため、“ＥＤＣ＿ＶＡＬ”と“ＴＰ＿ＥＤＣ＿ＶＡＬ＿１”とのＥＸＯＲをとった値を、再度“ＥＤＣ＿ＶＡＬ”に保持し（ステップＳ２１８）、“ＲＯＷ”及び“ＣＯＬ”を初期化し（ステップＳ２１９，Ｓ２２０）、処理を終了する。
以上のステップにより、第３図に示すＥＣＣブロック内第０セクタの第１のＥＤＣ演算結果が全て求まり、処理を終了する。
このようにして、前記ステップＳ２０にて、１ＥＣＣブロック内の１６セクタ全てに対する第１のＥＤＣ演算処理が終了した後、前記ステップＳ１０で、前記誤り訂正回路２０におけるシンドローム演算値が“０”でなく、誤りが含まれていると判断された場合は、誤り訂正処理が施される（第１図のステップＳ３０）。なお、前記シンドローム演算値が“０”の場合は、ここで一連の処理は終了され、前記第１のＥＤＣ演算結果が、誤り検出回路１０より得られる正しいＥＤＣ演算結果として出力される。
そして、前記誤り訂正回路２０におけるシンドローム演算値が“０”でなかった場合は、前記ステップＳ３０の誤り訂正処理において得られた誤りデータ位置及び誤りデータ数値を用いて、該誤りデータ位置が示す箇所のみ第２のＥＤＣ演算処理が行われる。
この第２のＥＤＣ演算処理については、第２の誤り検出制御回路１４２の制御の下、前述した第１のＥＤＣ演算処理と同様、演算回路１１内の誤り検出符号演算回路１１１及び誤り検出符号スキップ演算回路１１２によって、第２のＥＤＣ演算処理が行われる。但し、入力される前記データ符号列のうち、前記ステップＳ３０の誤り訂正回路２０による誤り訂正処理おいて得られた誤りデータ位置が示すデータについてのみ行う。この第２のＥＤＣ演算結果は、第６図の、第２のＥＤＣ演算処理時のデータの流れに示されるように、第１のメモリ１３内の第２の誤り検出符号演算結果保持部１３２（以下、“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿２”と称す。）に保持される。この“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿２”に保持される値は、前述したように、当該誤り検出回路１０より得られるはずである正しいＥＤＣ演算結果と、実際に前記ステップＳ２０の第１のＥＤＣ演算処理により得られ、現在“ＥＤＣ＿ＶＡＬ”（第２のメモリ１２）に保持されている第１の誤り検出符号演算結果との差分情報である。
従って、前記ステップＳ３０の、誤り訂正回路２０による誤り訂正処理において得られた前記誤りデータ位置に対して、第２のＥＤＣ処理が終了後（第１図のステップＳ４０）、前記第２の誤り検出制御回路１４２は、第６図に示すように、前記“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿２”と、前記“ＥＤＣ＿ＶＡＬ”のＥＸＯＲをとることによって、前記“ＥＤＣ＿ＶＡＬ”の値を更新し、正しい誤り検出符号演算結果を得る（第１図のステップＳ５０）。
そして、第２のメモリ１２に保持された正しい誤り検出符号演算結果を得ると同時に、前記スクランブル除去部１５にて、スクランブル成分の一括除去処理を行う（第１図のステップＳ６０）。この処理は、前記スクランブル除去部１５内に、スクランブル成分を除去するためのデータを保持するテーブルを設けておき、該テーブルを用いてＥＤＣ演算処理ごのデータ符号列のスクランブル成分を一括で除去する。
ただし、前述したように、このスクランブル成分の除去処理は、第１図のステップＳ２０のＥＤＣ演算処理の際、前記データ符号列が入力される毎にスクランブル成分を除去しながら演算処理するようにしてもよい。この場合の構成は、第９図に示すように誤り検出回路１０の前段にスクランブル除去部１５を設ければよい。また、入力データ符号列にスクランブル成分が含まれていない場合は、ＥＣＣ処理を行うために該データ符号列にスクランブル成分を付加する必要があるため、第１０図に示すように、誤り訂正回路２０の前段にスクランブル成分を付加するスクランブル付加部を設け、第１図のステップＳ１０の誤り訂正回路によるシンドローム演算処理の際、前記データ符号列が入力される毎にスクランブル成分を付加しながら演算処理するようにすればよい。
ここで、誤り検出回路１０において、誤り検出符号演算処理を行う際に、２つのメモリ、つまり“ＴＭＰ＿ＥＤＣ＿ＶＡＬ”（第１のメモリ１３）及び“ＥＤＣ＿ＶＡＬ”（第２のメモリ１２）を使用する理由を以下に示す。
第３図に示すように、対象となるデータ符号列が連続性のない並び（第１１図のＣ２方向）で誤り検出回路１０に入力されるとき、１ＥＣＣブロックの第０セクタの“ＣＯＬ”が“１”の列における、前記誤り検出回路１０に対するデータ入力順序は、“０”番目、“１”番目、“２”番目、・・・、“１１”番目のデータまで入力された後、第０セクタの“２０８”番目のデータではなく、第１セクタのデータである“１２”番目、“１３”番目、・・・のように引き続いて入力されてしまう。つまり、第３図に示す第０セクタの“２０８”番目のデータが入力されるのは、第１１図に示す１ＥＣＣブロック最終セクタである第１５セクタ最終行の“１９１”番目のデータまで入力し、Ｃ２パリティデータである最終行の“２０７”番目のデータが入力された後となる。
従って、前記誤り検出回路１０に、第１１図のＣ２方向にデータが入力される場合、各セクタの１列ごとのＥＤＣ演算結果にしか得られないため、前回入力されたデータを元に各セクタ毎の１列のＥＤＣスキップ演算を行った結果を保持するメモリが、第０セクタから第１５セクタの全ての列位置（“ＣＯＬ”が１から４２まで）において必要となり、さらに、該各セクタ毎の各列のＥＤＣ演算結果を、前回得られた演算結果に加算しながら保持するためのメモリが、第０セクタから第１５セクタの各セクタ毎に、個別で使用できるようにする必要がある。
よって、本実施の形態１では、各セクタ内の１列分のＥＤＣ演算結果を、第１のメモリ１３に保持しながらＥＸＯＲをとることによって得、１列分のＥＤＣ演算結果が得られるたびに、前記第１のメモリ１３の値を、第２のメモリ１２内に設けられた対応するセクタ毎のレジスタに保持した後、前記第１のメモリ１３内の値をリセットし、前記第１のメモリを、次のセクタの１列分のＥＤＣ演算結果を得るために使用することができるようにしたものである。
次に、前述した誤り検出符号演算回路１１１におけるＥＤＣ演算処理、及び誤り検出符号ステップ演算回路１１２におけるＥＤＣスキップ演算処理の詳細について、第１５図を参照しながら説明する。
第１５図に示すように、ＥＤＣ演算回路は３２ビットのシフトレジスタで構成されるため、３２ビット全てに０が存在するＥＤＣ演算回路に対して、任意のビット値をＥＤＣ演算回路に入力した後のＥＤＣ演算結果である３２ビットのシフトレジスタ値は、３２ビット中の各ビットについて、任意のビット値を入力する前の各ビット間の関係式で表現することができる。
例えば、０の値である１ビットが第１５図のＥＤＣ演算回路に入力された場合、３２ビット中の各ビット値は、０の値である１ビットが入力される前の３２ビットそれぞれの状態をＢｉｔ’として以下のように示すことができる。
Ｂｉｔ［０］＝Ｂｉｔ’［３１］
Ｂｉｔ［１］＝Ｂｉｔ’［０］
Ｂｉｔ［２］＝Ｂｉｔ’［１］
Ｂｉｔ［３］＝Ｂｉｔ’［２］
Ｂｉｔ［４］＝Ｂｉｔ’［３］＾Ｂｉｔ’［３１］
Ｂｉｔ［５］＝Ｂｉｔ’［４］
・
・
・
Ｂｉｔ［３０］＝Ｂｉｔ’［２９］
Ｂｉｔ［３１］＝Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
前述した１ビットスキップ演算処理式は、前回にＥＤＣ演算回路に対して入力されたデータと、新たにＥＤＣ演算回路に対して入力されたデータ間の差分が１ビットであるときに用いる、演算回路１１内の誤り検出符号演算回路１１１の演算処理式に他ならない。
さらに、第４図に示すステップＳ２０９以外で、データの連続性をたもつために、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を考えるとき、３２ビット全てに０が存在する第１５図で示すＥＤＣ演算回路に対して、全て０の値である１３４４ビット（１６８Ｂｙｔｅ）が入力された後のＥＤＣ演算結果である３２ビットのシフトレジスタ値は、０の値である１ビットが入力される前の３２ビットそれぞれの状態をＢｉｔ’として以下のように示すことができる。
Ｂｉｔ［０］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［５］＾Ｂｉｔ’［６］＾Ｂｉｔ’［７］＾Ｂｉｔ’［９］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１１］＾Ｂｉｔ’［１３］＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１５］＾Ｂｉｔ’［１７］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［１９］＾Ｂｉｔ’［２１］＾Ｂｉｔ’［２２］＾Ｂｉｔ’［２３］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
Ｂｉｔ［１］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［４］＾Ｂｉｔ’［６］＾Ｂｉｔ’［７］＾Ｂｉｔ’［８］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１１］＾Ｂｉｔ’［１２］＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１５］＾Ｂｉｔ’［１６］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［１９］＾Ｂｉｔ’［２０］＾Ｂｉｔ’［２２］＾Ｂｉｔ’［２３］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
Ｂｉｔ［２］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［４］＾Ｂｉｔ’［５］＾Ｂｉｔ’［７］＾Ｂｉｔ’［８］＾Ｂｉｔ’［９］＾Ｂｉｔ’［１１］＾Ｂｉｔ’［１２］＾Ｂｉｔ’［１３］＾Ｂｉｔ’［１５］＾Ｂｉｔ’［１６］＾Ｂｉｔ’［１７］＾Ｂｉｔ’［１９］＾Ｂｉｔ’［２０］＾Ｂｉｔ’［２１］＾Ｂｉｔ’［２３］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
Ｂｉｔ［３］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［４］＾Ｂｉｔ’［５］＾Ｂｉｔ’［６］＾Ｂｉｔ’［８］＾Ｂｉｔ’［９］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１２］＾Ｂｉｔ’［１３］＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１６］＾Ｂｉｔ’［１７］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［２０］＾Ｂｉｔ’［２１］＾Ｂｉｔ’［２２］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
Ｂｉｔ［４］＝Ｂｉｔ’［４］＾Ｂｉｔ’［２４］
Ｂｉｔ［５］＝Ｂｉｔ’［５］＾Ｂｉｔ’［２５］
・
・
・
Ｂｉｔ［３０］＝Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［６］＾Ｂｉｔ’［７］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１１］＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１５］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［１９］＾Ｂｉｔ’［３０］
Ｂｉｔ［３１］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［４］＾Ｂｉｔ’［５］＾Ｂｉｔ’［６］＾Ｂｉｔ’［８］＾Ｂｉｔ’［９］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１２］＾Ｂｉｔ’［１３］＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１６］＾Ｂｉｔ’［１７］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［２０］＾Ｂｉｔ’［２１］＾Ｂｉｔ’［２２］＾Ｂｉｔ’［２３］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］
前述した１６８Ｂｙｔｅスキップ演算処理式は、前回にＥＤＣ演算回路に対して入力されたデータと、新たにＥＤＣ演算回路に対して入力されたデータ間の差分が１６８Ｂｙｔｅであるときに用いる、演算回路１１内の誤り検出符号スキップ演算回路１１２の１つの演算処理式に他ならない。そして、第４図のステップＳ２１３においては、各“ＣＯＬ”値に応じたスキップ演算処理を行う必要があり、この各“ＣＯＬ”値に応じたスキップ演算処理式ついても、前記１６８Ｂｙｔｅスキップ演算処理式と同様にして得ることができ、第４図におけるステップＳ２１３では、各“ＣＯＬ”値に応じたスキップ演算処理式を４２通り用意すればよいこととなる。
なお、前述したように第４図におけるステップＳ２１３の処理のために、“ＣＯＬ”値に応じたスキップ演算処理式を全部で４２通り用意するのではなく、前記スキップ演算を分割して処理するようにすれば、前記ステップＳ２１３におけるステップ数を削減することが可能となる。
以下、スキップ演算処理を分割処理により行う場合について、第７図の１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理の説明図、及び第８図の１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を分割して行う場合の説明図を用いて説明する。
第７図に示すように、第３図に示す“ＣＯＬ”が“０”の場合は、“ＲＯＷ”が“１１”の時点で１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算を行う必要がある。このように、セクタ中の全てのＥＤＣ演算を行うためには、ＥＤＣスキップ演算処理は“ＣＯＬ”が“０”から“４１”までの４２通りについて用意しておく必要があり、処理資源を大きく消費してしまう。
ここで例えば、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を行うことと、２８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を６回行うことが等価になる。このことを利用して、ステップＳ２１３において、４２通りのスキップ演算処理式を個別に用意するのではなく、例えば、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を、第８図に示すように、別個に存在する、データを２８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を６回再利用する方法に変更する。なお、データを１６８Ｂｙｔｅスキップさせる場合、例えば、４ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を４２回再利用することも考えられるが、このようにすると今度は処理時間が大幅にかかってしまうという問題が生じるため、他の演算処理結果を再利用する場合には、そのスキップ演算にかかる処理時間と、用意する演算処理に必要な処理資源との兼ね合いで決めるのが良い。
以上のように、本実施の形態１によれば、入力されたデータ符号列に対して、入力データ単位Ｂｙｔｅに対応した第１のＥＤＣ演算処理を行い、その演算結果を第１のメモリ１３内の第１の誤り検出符号演算結果保持部１３１に保持した後に、該第１の誤り検出符号演算結果保持部１３１の値と、次に入力されるデータまでの差分Ｂｙｔｅ数のＥＤＣスキップ演算処理の演算結果のＥＸＯＲをとることを繰り返すようにしたので、ＥＤＣ演算処理を行う際に、入力されるデータが論理的な連続性のない方向（第１１図のＣ２方向）であっても、ＥＤＣ演算処理を実行することが可能となり、前記ＥＣＣ及びＥＤＣの両処理の半導体集積回路の実装を実現できる。また、これにより、ＥＣＣ処理とＥＤＣ処理を同時実施が可能となるので、ＥＣＣブロックをバッファから一度読み出すだけで両処理が行え、ＥＣＣ処理のためにバッファから読み出した１ＥＣＣブロックを、ＥＣＣ処理後に再度読み出してＥＤＣ演算処理を行う必要がなくなり、メモリバッファのバンド幅の消費、及び処理時の肥大化を低減することができる。
また、前記演算回路１１内の誤り検出符号スキップ演算回路１１２における、ＥＤＣスキップ演算処理を、分割処理方法を用いて行えば、セクタ内のＥＤＣ処理単位列に対応した、全てのＥＤＣスキップ演算処理を用意することなく、別個に存在するＥＤＣスキップ演算処理を複数回再利用することができ、この結果、処理資源の消費を抑えることが可能となる。
なお、前述の説明においては、データに論理的な連続性のないＣ２方向のＥＣＣ処理とＥＤＣ演算処理とを同時実行する場合のＥＤＣ演算処理について詳述したが、本実施の形態１にかかる誤り検出回路１０において、データに論理的な連続性があるＣ１方向のＥＣＣ処理とＥＤＣ演算処理とを同時実行することも可能である。この場合第１のＥＤＣ演算処理は、前述したＣ２方向の処理とは異なりスキップ演算をする必要がないので、演算回路１１内の誤り検出符号演算回路１１１のみを使用し、演算処理単位（ここでは４Ｂｙｔｅ）毎に得られた演算結果を第１のメモリ１３内の第１の誤り検出符号演算結果保持部１３１に保持していき、１セクタのＥＤＣ演算処理が終了後、前記第１の誤り検出符号演算結果保持部１３１に保持した演算結果を、第２のメモリ１２内の対応するセクタレジスタに保持し、次のセクタのＥＤＣ演算処理に移行する処理を繰り返す。そして、第２のＥＤＣ演算処理は、前述したＣ２方向の処理と同様、前記誤り検出回路２０にて得られた誤りデータ位置及び誤りデータ数値を元に、入力されるデータ符号列のうち、前記誤りデータ位置のデータに対してのみ再度ＥＤＣ演算処理を行い、得られた演算結果を第１のメモリ１３内の第２の誤り検出符号演算結果保持部１３２に保持し、該第２のＥＤＣ処理が終了後、その時点で第２のメモリ１２に保持されている第１のＥＤＣ演算結果を、前記第２の誤り検出符号演算結果保持部１３２に保持された演算結果を用いて更新し、正しいＥＤＣ演算結果を得る。
【産業上の利用可能性】  本発明の誤り検出装置及び誤り検出方法は、ＥＣＣ復号化されたデジタルデータを高倍速で記録または再生する光ディスク記録再生装置において、データを記録再生するときに、誤り訂正及び誤り検出を同時処理させる際に有用である。
【図１】
2005022755.tif 000004
【図２】
2005022755.tif 000005
【図３】
2005022755.tif 000006
【図４】
2005022755.tif 000007
【図５】
2005022755.tif 000008
【図６】
2005022755.tif 000009
【図７】
2005022755.tif 000010
【図８】
2005022755.tif 000011
【図９】
2005022755.tif 000012
【図１０】
2005022755.tif 000013
【図１１】
2005022755.tif 000014
【図１２】
2005022755.tif 000015
【図１３】
2005022755.tif 000016
【図１４】
2005022755.tif 000017
【図１５】
2005022755.tif 000018
【手続補正書】
【提出日】平成17年6月29日(2005.6.29)
【手続補正００１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】特許請求の範囲
【請求項１】それぞれマトリクス状のデータからなる複数のセクタにより構成される対象符号列に対してシンドローム演算を行うシンドローム演算器を有し、該対象符号列に対して誤り訂正回路による誤り訂正処理を行うと同時に、該対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出装置であって、
前記対象符号列の誤り検出符号を演算する誤り検出符号演算回路と、
前記対象符号列が連続性のない並びで入力された際に、該符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算回路と、
前記シンドローム演算と同じ時点で行われる、前記誤り検出符号演算回路および誤り検出符号スキップ演算回路による第１の誤り検出符号演算処理を制御する第１の誤り検出制御回路と、
前記誤り訂正処理後に、該誤り訂正処理より得られた誤りデータ位置及び誤りデータ数値を元に、該誤りデータ位置が示すデータに対してのみ行う第２の誤り検出符号演算処理を制御すると共に、該第２の誤り検出符号演算処理による演算結果を元に、前記第１の誤り検出符号演算処理の演算結果を更新する更新処理を制御する第２の誤り検出制御回路と、
前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路による演算結果を保持するメモリと、を備え、
前記誤り検出符号スキップ演算回路は、前回までに入力された対象符号列の誤り検出符号を入力とし、該対象符号列のうち、前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行い、
該個別のスキップ演算は、前記データが存在する列位置のうち、特定の列位置で実行されるステップ演算の演算結果を複数回利用して行う、
ことを特徴とする誤り検出装置。
【請求項２】（削除）
【請求項３】請求の範囲第１項に記載の誤り検出装置において、
前記メモリは、前記対象符号列が連続性のある並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ単位の演算結果を保持し、前記対象符号列が連続性のない並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ毎の途中演算結果を保持する第１のメモリと、
前記第１のメモリから送信される演算結果を、前記各セクタ毎に保持する第２のメモリ、と、を備える、
ことを特徴とする誤り検出装置。
【請求項４】請求の範囲第１項に記載の誤り検出装置において、
前記第１のメモリは、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路で実行される、前記第１の誤り検出符号演算処理による演算結果を保持するメモリと、前記第２の誤り検出符号演算処理による、前記第１の誤り検出符号演算処理の演算結果を更新する差分演算結果を保持するメモリとを含む、
ことを特徴とする誤り検出装置。
【請求項５】（削除）
【請求項６】請求の範囲第１項に記載の誤り検出装置において、
前記対象符号列の該スクランブル成分を一括除去するスクランブル除去部を含む、
ことを特徴とする誤り検出装置。
【請求項７】請求の範囲第６項に記載の誤り検出装置において、
前記スクランブル除去部は、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを有する、
ことを特徴とする誤り検出装置。
【請求項８】それぞれマトリクス状のデータからなる複数のセクタにより構成される、連続性のない並びで入力された対象符号列に対して誤り訂正単位ブロック単位で
誤り訂正を行うと同時に、該連続性のない並びで入力される対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出方法であって、
前記対象符号列に対してシンドローム演算を行うシンドローム演算ステップと、
前記シンドローム演算ステップと同時に行われる、該連続性のない並びで入力される対象符号列に対して誤り検出符号演算を行う第１の誤り検出符号演算ステップと、
前記シンドローム演算ステップにおいて得られたシンドロームに基づいて、前記対象符号列の誤りデータ位置及び誤りデータ数値を計算して誤り訂正を行う誤り訂正ステップと、
前記誤り訂正ステップにおいて得られた前記誤りデータ位置及び誤りデータ数値を元に、前記対象符号列のうちの前記誤りデータ位置に対してのみ再度誤り検出符号演算を行う第２の誤り検出符号演算ステップと、
前記第２の誤り検出符号演算ステップによる演算結果を用いて、前記第１の誤り検出符号演算ステップによる演算結果を更新する更新ステップと、を含み、
前記第１の誤り検出符号演算ステップ及び第２の誤り検出演算ステップは、前記対象符号列の誤り検出符号を演算する誤り検出符号演算ステップと、
前記連続性のない並びで入力された対象符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算ステップと、を含み、
前記誤り検出符号スキップ演算ステップは、前回までに入力された対象符号列の誤り検出符号を入力とし、該対象符号列のうち、前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行うものであり、
前記個別のスキップ演算は、前記データが存在する列位置のうち、特定の列位置で実行されるステップ演算の演算結果を複数回利用して行う、
ことを特徴とする誤り検出方法。
【請求項９】（削除）
【請求項１０】（削除）
【請求項１１】（削除）
【請求項１２】請求の範囲第８項に記載の誤り検出方法において、
前記更新ステップと同時に行われる、前記対象符号列に含まれるスクランブル成分を除去するスクランブル除去ステップを含む、
ことを特徴とする誤り検出方法。
【請求項１３】請求の範囲第１２項に記載の誤り検出方法において、
前記スクランブル除去ステップは、１セクタの全データが入力された後に、該セクタの全データのスクランブル成分を一度に除去する、
ことを特徴とする誤り検出方法。
【請求項１４】請求の範囲第１２項に記載の誤り検出方法において、
前記スクランブル除去ステップは、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを用いて行われる、
ことを特徴とする誤り検出方法。




【手続補正書】
【提出日】平成18年2月27日(2006.2.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
それぞれマトリクス状のデータからなる複数のセクタにより構成される対象符号列に対してシンドローム演算を行うシンドローム演算器を有し、該対象符号列に対して誤り訂正回路による誤り訂正処理を行うと同時に、該対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出装置であって、
前記対象符号列の誤り検出符号を演算する誤り検出符号演算回路と、
前記対象符号列が連続性のない並びで入力された際に、該符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算回路と、
前記シンドローム演算と同じ時点で行われる、前記誤り検出符号演算回路および誤り検出符号スキップ演算回路による第１の誤り検出符号演算処理を制御する第１の誤り検出制御回路と、
前記誤り訂正処理後に、該誤り訂正処理より得られた誤りデータ位置及び誤りデータ数値を元に、該誤りデータ位置が示すデータに対してのみ行う第２の誤り検出符号演算処理を制御すると共に、該第２の誤り検出符号演算処理による演算結果を元に、前記第１の誤り検出符号演算処理の演算結果を更新する更新処理を制御する第２の誤り検出制御回路と、
前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路による演算結果を保持するメモリと、を備え、
前記誤り検出符号スキップ演算回路は、前回までに入力された対象符号列の誤り検出符号を入力とし、該対象符号列のうち、前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行い、
該個別のスキップ演算は、前記データが存在する列位置のうち、特定の列位置で実行されるスキップ演算の演算結果を複数回利用して行う、
ことを特徴とする誤り検出装置。
【請求項２】
請求項１に記載の誤り検出装置において、
前記メモリは、前記対象符号列が連続性のある並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ単位の演算結果を保持し、前記対象符号列が連続性のない並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ毎の途中演算結果を保持する第１のメモリと、
前記第１のメモリから送信される演算結果を、前記各セクタ毎に保持する第２のメモリ、と、を備える、
ことを特徴とする誤り検出装置。
【請求項３】
請求項１に記載の誤り検出装置において、
前記第１のメモリは、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路で実行される、前記第１の誤り検出符号演算処理による演算結果を保持するメモリと、前記第２の誤り検出符号演算処理による、前記第１の誤り検出符号演算処理の演算結果を更新する差分演算結果を保持するメモリとを含む、
ことを特徴とする誤り検出装置。
【請求項４】
請求項１に記載の誤り検出装置において、
前記対象符号列の該スクランブル成分を一括除去するスクランブル除去部を含む、
ことを特徴とする誤り検出装置。
【請求項５】
請求項４に記載の誤り検出装置において、
前記スクランブル除去部は、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを有する、
ことを特徴とする誤り検出装置。
【請求項６】
それぞれマトリクス状のデータからなる複数のセクタにより構成される、連続性のない並びで入力された対象符号列に対して誤り訂正単位ブロック単位で誤り訂正を行うと同時に、該連続性のない並びで入力される対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出方法であって、
前記対象符号列に対してシンドローム演算を行うシンドローム演算ステップと、
前記シンドローム演算ステップと同時に行われる、該連続性のない並びで入力される対象符号列に対して誤り検出符号演算を行う第１の誤り検出符号演算ステップと、
前記シンドローム演算ステップにおいて得られたシンドロームに基づいて、前記対象符号列の誤りデータ位置及び誤りデータ数値を計算して誤り訂正を行う誤り訂正ステップと、
前記誤り訂正ステップにおいて得られた前記誤りデータ位置及び誤りデータ数値を元に、前記対象符号列のうちの前記誤りデータ位置に対してのみ再度誤り検出符号演算を行う第２の誤り検出符号演算ステップと、
前記第２の誤り検出符号演算ステップによる演算結果を用いて、前記第１の誤り検出符号演算ステップによる演算結果を更新する更新ステップと、を含み、
前記第１の誤り検出符号演算ステップ及び第２の誤り検出演算ステップは、前記対象符号列の誤り検出符号を演算する誤り検出符号演算ステップと、
前記連続性のない並びで入力された対象符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算ステップと、を含み、
前記誤り検出符号スキップ演算ステップは、前回までに入力された対象符号列の誤り検出符号を入力とし、該対象符号列のうち、前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行うものであり、
前記個別のスキップ演算は、前記データが存在する列位置のうち、特定の列位置で実行されるスキップ演算の演算結果を複数回利用して行う、
ことを特徴とする誤り検出方法。
【請求項７】
請求項６に記載の誤り検出方法において、
前記更新ステップと同時に行われる、前記対象符号列に含まれるスクランブル成分を除去するスクランブル除去ステップを含む、
ことを特徴とする誤り検出方法。
【請求項８】
請求項７に記載の誤り検出方法において、
前記スクランブル除去ステップは、１セクタの全データが入力された後に、該セクタの全データのスクランブル成分を一度に除去する、
ことを特徴とする誤り検出方法。
【請求項９】
請求項７に記載の誤り検出方法において、
前記スクランブル除去ステップは、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを用いて行われる、
ことを特徴とする誤り検出方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り検出装置及び誤り検出方法に関し、特に誤り訂正と誤り検出を同時に実行する誤り検出装置及び誤り検出方法に関する。
【背景技術】
【０００２】
デジタルデータの記録／再生を行うシステムでは、再生時もしくは記録時にデータ中に誤りが発生することがあることから、その誤りを訂正し、行った誤り訂正が正しいものかどうかを判定する誤り検出を行う必要がある。
【０００３】
例えば、光記録媒体であるＤＶＤの記録／再生において、誤り訂正はＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）、誤り検出はＥＤＣ（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｎｇ  Ｃｏｄｅ）と呼ばれる方法が用いられる。
【０００４】
前記ＥＣＣは、誤り訂正単位ブロック（以下、「ＥＣＣブロック」と称す。）単位で処理が実行され、該ＥＣＣブロックは、図１１に示すように１６セクタより構成されている。そして、前記ＥＤＣは、前記ＥＣＣブロック中のセクタ単位でその処理が実行されるものであり、１セクタは図１２に示すような構成を有する。
【０００５】
以下、図１１〜図１４を用いて、ＥＣＣ復号の概要を、光記録媒体であるＤＶＤに記録されているデータを誤り訂正する場合を例に挙げて説明する。
【０００６】
まず、ＤＶＤに記録されているデータ符号を誤り訂正する場合、ＤＶＤから読み出したＥＣＣ符号化されたデータ符号を復号し、そのデータに対して、図１１に示すＣ１方向もしくはＣ２方向に誤り訂正を行う。このとき、ＥＣＣ復号したデータから位置多項式及び数値多項式を生成し、それらの根を求めることにより、誤りデータ位置及び誤りデータ数値を算出する。
【０００７】
そして、１ＥＣＣブロック中の符号列に対して、前記Ｃ１方向あるいはＣ２方向に誤り訂正を行った際、そのデータ中に誤り訂正能力を超える誤りが存在した場合は、その誤り訂正能力を超えるデータ符号列を図１３に示すように訂正不能符号列とし、この訂正不能符号列に関する情報を消失位置情報として記憶しておく。
【０００８】
前述のようにして、１ＥＣＣブロック中の全ての符号列に対して、図１１に示すＣ１方向もしくはＣ２方向に誤り訂正が完了した後、今度は、前回と異なる方向（Ｃ２方向もしくはＣ１方向）に、前記消失位置情報を用いて、前記１ＥＣＣブロック中の符号列に対して誤り訂正を行う。
【０００９】
前記消失位置情報を用いて誤り訂正を行う場合は、予め誤りデータ位置がわかっているため、前記多項式を生成する際に、数値多項式のみを求めれば良いことになる。その結果、誤り訂正能力を向上させることができる。
【００１０】
例えば、最初に、図１３に示すように、１ＥＣＣブロック中の全ての符号列に対してＣ１方向に誤り訂正を行ったとき、１ＥＣＣブロック中の５０、９０、１３０、２００行目が訂正不能符号列であったとする。この後、図１４に示すように、前回と異なる方向であるＣ２方向に誤り訂正を行うのだが、この時前記訂正不能符号列を示す消失位置情報をもとに、１ＥＣＣブロック中の５０、９０、１３０、２００Ｂｙｔｅ目を消失位置情報と指定し、前記Ｃ２方向の誤り訂正能力を向上させることができる。この方法により、伝送系で発生したバースト誤りに対して訂正能力を落とすことなく誤り訂正が可能となる。
【００１１】
そして、データ符号列に対して誤り訂正及び誤り検出を行う場合、従来においては、前述のＥＣＣ処理が１ＥＣＣブロック分終了した後に、該１ＥＣＣブロックのセクタ単位でＥＤＣ演算を行っていた。
【００１２】
以下、図１４及び図１５を用いて、ＥＤＣ演算の概要について説明する。図１５はＥＤＣ演算回路の構成例を示す図であり、ここでは、４Ｂｙｔｅ入力のＥＤＣ演算回路を示す。
まず、ＥＤＣの演算式は下記のようになる。
【００１３】
【数１】
2005022755.tif 000019
【００１４】
前記ＥＤＣ演算式は、図１５のＥＤＣ演算回路に示されるように、３２ビットのシフトレジスタの、０ビット目、４ビット目、３１ビット目への入力にＥＸＯＲ演算回路が配置され、該ＥＸＯＲ演算回路にて、それぞれ、４Ｂｙｔｅの最上位からのビット入力と３１ビット目、３ビット目と３１ビット目、及び３０ビット目と３１ビット目のＥＸＯＲが演算される。
【００１５】
以上に示したＥＤＣ演算式、あるいは図１５のＥＤＣ演算回路から理解できるように、ＥＤＣ演算はデータの記録方向（図１１に示されるＣ１方向）に沿った線形演算である。
【００１６】
そして、前記図１２に示すような構成を有する１セクタを、データの記録方向、つまりＩＤ領域、ＩＥＣ領域、ＲＳＶ領域、ユーザデータ領域、ＥＤＣ領域の順序で、それぞれ４Ｂｙｔｅ毎に、図１５に示すＥＤＣ演算回路に入力すると、最終の４ＢｙｔｅであるＥＤＣ領域を入力した後の３２ビットのシフトレジスタ値がＥＤＣ演算結果となる。
【００１７】
このように、従来では一般的に、誤り訂正（ＥＣＣ）を行った後に、誤り検出（ＥＤＣ）を行う方法が用いられているが、この方法では、誤り訂正を行うための一単位であるＥＣＣブロックをバッファから読み出して誤り訂正を行った後、誤り検出を行うために、再びＥＣＣブロックを前記バッファから読み出さなければならないため、メモリバッファのバンド幅の消費、処理時間の肥大化という問題が生じる。
【００１８】
このようなメモリバッファのバンド幅の消費、あるいは処理時間の肥大化の問題を解決する方法としては、ＥＣＣとＥＤＣとの両方の処理を、バッファよりＥＣＣブロックを一度読み出すのみで、同時に処理することが考えられる。
【００１９】
しかし、前述したように、ＥＤＣ演算処理はデータの記録方向（図１１のＣ１方向）に沿った線形演算であるため、誤り訂正回路にて、図１３に示すように入力されるデータの並びに連続性がある、Ｃ１方向に誤り訂正を行う場合は、該Ｃ１方向のＥＣＣと、前記ＥＤＣ演算とを同時に処理することが可能であるが、図１４に示すように入力されるデータの並びに連続性がない、Ｃ２方向に誤り訂正を行う場合は、該Ｃ２方向のＥＣＣと、前記ＥＤＣ演算とを同時処理するのは難度が高く、このような同時処理を半導体に実装するのは困難、という課題がある。
【００２０】
本発明は前記課題を解決するためになされたものであり、ＥＣＣブロックの誤り検出を行う対象符号列が連続性のない並び（図１１のＣ２方向）で入力された際にも、誤り訂正と誤り検出を同時に行える誤り検出装置及び誤り検出方法を提供することを目的とするものである。
【発明の開示】
【発明が解決しようとする課題】
【００２１】
本発明の誤り検出装置は、それぞれマトリクス状のデータからなる複数のセクタにより構成される対象符号列に対してシンドローム演算を行うシンドローム演算器を有し、該対象符号列に対して誤り訂正回路による誤り訂正処理を行うと同時に、該対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出装置であって、前記対象符号列の誤り検出符号を演算する誤り検出符号演算回路と、前記対象符号列が連続性のない並びで入力された際に、該符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算回路と、前記シンドローム演算と同じ時点で行われる、前記誤り検出符号演算回路および誤り検出符号スキップ演算回路による第１の誤り検出符号演算処理を制御する第１の誤り検出制御回路と、前記誤り訂正処理後に、該誤り訂正処理より得られた誤りデータ位置及び誤りデータ数値を元に、該誤りデータ位置が示すデータに対してのみ行う第２の誤り検出符号演算処理を制御すると共に、該第２の誤り検出符号演算処理による演算結果を元に、前記第１の誤り検出符号演算処理の演算結果を更新する更新処理を制御する第２の誤り検出制御回路と、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路による演算結果を保持するメモリと、を備え、前記誤り検出符号スキップ演算回路は、前回までに入力された対象符号列の誤り検出符号を入力とし、該対象符号列のうち、前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行い、該個別のスキップ演算は、前記データが存在する列位置のうち、特定の列位置で実行されるスキップ演算の演算結果を複数回利用して行うものである。
【００２２】
これにより、ＥＣＣブロックの誤り検出を行う対象符号列が連続性のない並びで入力された際にも、簡単なスキップ演算処理を行うことでＥＤＣ演算処理を行うことが可能となるため、誤り訂正と誤り検出の同時実行を半導体回路に容易に実装でき、さらに、前記スキップ演算処理では、各列毎に演算処理式を用いて計算するのではなく、特定の列位置の演算処理結果を複数回再利用して行うため、演算処理に必要な処理資源の消費を抑えることが可能となる。
【００２３】
さらに、本発明の誤り検出装置は、前記メモリは、前記対象符号列が連続性のある並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ単位の演算結果を保持し、前記対象符号列が連続性のない並びで入力された際は、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路によるセクタ毎の途中演算結果を保持する第１のメモリと、前記第１のメモリから送信される演算結果を、前記各セクタ毎に保持する第２のメモリと、を備えるものである。
【００２４】
これにより、ＥＣＣブロックの誤り検出を行う対象符号列が連続性のない並びで入力された際にも、セクタ毎のＥＤＣ演算結果を得ることができる。
【００２５】
さらに、本発明の誤り検出装置は、前記第１のメモリは、前記誤り検出符号演算回路、及び前記誤り検出符号スキップ演算回路で実行される、前記第１の誤り検出符号演算処理による演算結果を保持するメモリと、前記第２の誤り検出符号演算処理による、前記第１の誤り検出符号演算処理の演算結果を更新する差分演算結果を保持するメモリとを含むものである。
【００２６】
これにより、簡単な処理で正しいＥＤＣ演算結果が得ることが可能となり、誤り訂正と誤り検出の同時実行を、半導体回路に実装可能にする。
【００２７】
さらに、本発明の誤り検出装置は、前記対象符号列の該スクランブル成分を一括除去するスクランブル除去部を含むものである。
【００２８】
これにより、処理資源を最小化できる。
【００２９】
さらに、本発明の誤り検出装置は、前記スクランブル除去部は、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを有するものである。
【００３０】
これにより、前記対象符号列のスクランブル成分を一括除去することが可能となる。
【００３１】
また、本発明の誤り検出方法は、それぞれマトリクス状のデータからなる複数のセクタにより構成される、連続性のない並びで入力された対象符号列に対して誤り訂正単位ブロック単位で誤り訂正を行うと同時に、該連続性のない並びで入力される対象符号列に対して前記セクタ単位で誤り検出を行う誤り検出方法であって、前記対象符号列に対してシンドローム演算を行うシンドローム演算ステップと、前記シンドローム演算ステップと同時に行われる、該連続性のない並びで入力される対象符号列に対して誤り検出符号演算を行う第１の誤り検出符号演算ステップと、前記シンドローム演算ステップにおいて得られたシンドロームに基づいて、前記対象符号列の誤りデータ位置及び誤りデータ数値を計算して誤り訂正を行う誤り訂正ステップと、前記誤り訂正ステップにおいて得られた前記誤りデータ位置及び誤りデータ数値を元に、前記対象符号列のうちの前記誤りデータ位置に対してのみ再度誤り検出符号演算を行う第２の誤り検出符号演算ステップと、前記第２の誤り検出符号演算ステップによる演算結果を用いて、前記第１の誤り検出符号演算ステップによる演算結果を更新する更新ステップと、を含み、前記第１の誤り検出符号演算ステップ及び第２の誤り検出演算ステップは、前記対象符号列の誤り検出符号を演算する誤り検出符号演算ステップと、前記連続性のない並びで入力された対象符号列の並びを連続させるようにデータをスキップさせてデータ間の連続性を補正するスキップ演算を行う誤り検出符号スキップ演算ステップと、を含み、前記誤り検出符号スキップ演算ステップは、前回までに入力された対象符号列の誤り検出符号を入力とし、該対象符号列のうち、前記セクタの非最終行においては、一定のバイト数をスキップさせるスキップ演算を行い、前記セクタの最終行においては、該データが存在する列位置に応じたバイト数をスキップさせる個別のスキップ演算を行うものであり、前記個別のスキップ演算は、前記データが存在する列位置のうち、特定の列位置で実行されるスキップ演算の演算結果を複数回利用して行うものである。
【００３２】
これにより、ＥＣＣブロックの誤り検出を行う対象符号列が連続性のない並びで入力された際にも、簡単なスキップ演算処理を行うことでＥＤＣ演算処理を行うことが可能となるため、誤り訂正と誤り検出の同時実行を容易に行うことができ、さらに、前記スキップ演算処理では、各列毎に演算処理式を用いて計算するのではなく、特定の列位置の演算処理結果を複数回再利用して行うため、演算処理に必要な処理を少なくすることができる。
【００３３】
さらに、本発明の誤り検出方法は、前記更新ステップと同時に行われる、前記対象符号列に含まれるスクランブル成分を除去するスクランブル除去ステップを含むものである。
【００３４】
これにより、ＥＣＣ処理及びＥＤＣ処理後のデータから、スクランブル成分を除去できる。
【００３５】
さらに、本発明の誤り検出方法は、前記スクランブル除去ステップは、１セクタの全データが入力された後に、該セクタの全データのスクランブル成分を一度に除去するものである。
【００３６】
これにより、スクランブル成分の除去処理に必要な処理を削減できる。
【００３７】
さらに、本発明の誤り検出方法は、前記スクランブル除去ステップは、前記対象符号列のスクランブル成分を除去するためのデータを保持するテーブルを用いて行われるものである。
【００３８】
これにより、ＥＣＣ処理及びＥＤＣ処理後のデータから、全データのスクランブル成分を一度に除去することができる。
【発明を実施するための最良の形態】
【００３９】
実施の形態１．
以下、本実施の形態１における、誤り訂正と誤り検出を同時処理する概要を、図１を用いて説明する。なお、本実施の形態１においては、光記録媒体であるＤＶＤに記録されているデータを誤り訂正（ＥＣＣ）及び誤り検出（ＥＤＣ）する場合を例に挙げて説明する。また、誤り訂正を行う一単位である誤り訂正単位ブロック（以下、「ＥＣＣブロック」と称す。）は、図１１に示すように１６のセクタより構成され、１セクタは、図１２に示す構成を有するものとする。
【００４０】
図１は、ＥＣＣ処理とＥＤＣ処理の同時実行におけるパイプライン処理を説明する図である。
ＥＣＣ処理とＥＤＣ処理とを同時実行する場合、まず、ステップＳ１０において、ＤＶＤから、誤り訂正及び誤り検出を行うべき対象データ符号列を、図１１に示されるように１ＥＣＣブロックのＣ１方向あるいはＣ２方向に入力して、ＥＣＣ処理のシンドローム演算を行う。このシンドローム演算結果は、その値が“０”のとき誤りが存在しないことを示し、“０”でないとき誤りが存在することを示す。
【００４１】
そして、前記ステップＳ１０と同じパイプライン処理ステージであるステップＳ２０において、前記ステップＳ１０と同じ順番で入力されるデータ符号列に対して、第１のＥＤＣ演算を実行し、セクタ単位毎に第１の誤り検出符号演算結果を得る。この第１の誤り検出符号演算結果は、入力されたデータ符号列に誤りが含まれていない場合は正常な値となり、誤りが含まれている場合は不正な値となる。
【００４２】
そして、前記ステップＳ１０により得られるシンドローム演算結果が“０”で、入力されたデータ符号列に誤りが存在しないと判定された場合は、ステップＳ３０の誤り訂正処理は行われずに、一連の処理を終了する。そしてこの場合、前記ステップＳ２０において得られた第１の誤り検出符号演算結果が、当該誤り検出装置より得られる正しいＥＤＣ演算結果として出力される。
【００４３】
一方、ステップＳ１０により得られるシンドローム演算結果が“０”とならず、入力されたデータ符号列に誤りが存在すると判定された場合は、該データ符号列に対して誤り訂正処理が行われ、誤りデータ位置及び誤りデータ数値を得る（ステップＳ３０）。
【００４４】
そして、ステップＳ４０において、前記ステップＳ３０で得られた誤りデータ位置、及び誤りデータ数値を元にして、ＤＶＤから入力されるデータ符号列のうち、該得られた誤り位置が示すデータに対してのみ、第２のＥＤＣ演算処理を実行して、第２の誤り検出符号演算結果を得る。このときに得られる第２の誤り検出符号演算結果は、当該誤り検出装置より得られる正しいＥＤＣ演算結果と、前記ステップＳ２０において得られた前記第１の誤り検出符号演算結果との差分情報である。
【００４５】
よって、ステップＳ５０において、前記ステップＳ４０で得られた第２の誤り検出符号演算結果を用いて、前記ステップＳ２０において得られた第１の誤り検出符号演算結果を更新し、その更新後の誤り検出符号演算結果が、当該誤り検出回路より得られる正しいＥＤＣ演算結果として出力される。
【００４６】
さらに、前記ステップＳ５０と同じパイプライン処理ステージであるステップＳ６０で、スクランブル成分を除去するためのデータを保持するテーブルを用いて、入力されるデータ符号列のスクランブル成分を一括で除去する処理が行われる。
【００４７】
以上のような一連の処理を行うことにより、ＥＣＣ処理と、ＥＤＣ処理、及び入力されるデータ符号列のスクランブル成分除去処理を、ＥＣＣブロックをバッファから１度だけ読み出すことによって、実行することが可能となる。
【００４８】
なお、図１では、データ符号列のスクランブル成分を、ＥＤＣ演算処理後に一括除去するものとして説明したが、前記スクランブル成分をＥＤＣ演算処理後に一括除去するのではなく、ステップＳ２０のＥＤＣ演算処理の際、前記データ符号列が入力される度に除去しながら演算処理するようにしてもよい。
【００４９】
また、前述の説明では、ＤＶＤに記録されているデータを再生する場合を例に挙げ、入力データ符号列にスクランブル成分が含まている場合を想定しているが、入力データ符号列にスクランブル成分が含まれていない場合もある。例えば、ＤＶＤにデータを記録する場合は、入力データにはスクランブル成分は含まれていない。従ってこの場合、ステップＳ１０のシンドローム演算処理の際、前記データ符号列が入力される度にスクランブル成分を付加しながら演算処理する。なお、スクランブル成分をデータ符号列に付加する場合は、ステップＳ６０に示すスクランブル除去のように一括して行うことはできない。
【００５０】
次に、ＥＣＣ処理とＥＤＣ処理の同時処理が実行可能な、本実施の形態１における誤り検出回路の構成について、図２を用いて説明する。なお、ここでは、図１を用いて説明したように、入力されるデータ符号列にスクランブル成分が含まれ、該スクランブル成分を一括除去する場合の構成について説明する。
【００５１】
図２は、本実施の形態１にかかる誤り検出回路の構成を示す図である。
本実施の形態１に係る誤り検出回路１０は、前記データ符号列に対してシンドローム演算を行うシンドローム演算器２１を有する誤り訂正回路２０がＥＣＣ処理を実施するのと同時に、ＥＤＣ処理を実施可能なものであって、図２に示すように、誤り検出符号演算回路１１１と誤り検出符号スキップ演算回路１１２とからなる演算回路１１と、第１の誤り検出符号演算結果保持部１３１と第２の誤り検出符号演算結果保持部１３２とからなる第１のメモリ１３と、第２のメモリ１２と、第１の誤り検出制御回路１４１と第２の誤り検出制御回路１４２とからなる制御回路１４とで構成される。そして、スクランブル除去部１５は、データ符号列のスクランブル成分を除去するものである。
【００５２】
以下、各回路について説明すると、前記制御回路１４は、当該誤り検出回路１０に入力されるデータ符号列に対して誤り検出を行う際に、当該誤り検出回路１０を制御するものであり、前記第１の誤り検出制御回路１４１は、前記誤り訂正回路２０内のシンドローム演算器２１における前記データ符号列に対するシンドローム演算と同時に行われる第１のＥＤＣ演算処理（図１のステップＳ２０）を制御し、前記第２の誤り検出制御回路１４２は、前記誤り訂正回路２０による誤り訂正処理後の第２のＥＤＣ演算処理、及び前記第１のＥＤＣ演算結果の更新処理（図１のステップＳ４０，Ｓ５０）を制御する。
【００５３】
そして、前記演算回路１１は、前記制御回路１４の制御の下、入力される前記データ符号列に対して誤り検出演算を行うものであり、前記誤り検出符号演算回路１１１は、前記データ符号列が図１１のＣ１方向、つまり連続性のある並びで入力された際に、該データ符号列の誤り検出符号を任意のデータ毎（ここでは４バイト毎）に演算するものであり、前記誤り検出符号スキップ演算回路１１２は、前記データ符号列が図１１のＣ２方向、つまり連続性のない並びで入力された場合に、該入力データに連続性をもたせるように、データをスキップさせて入力データ間の連続性を補正するスキップ演算を行う。
【００５４】
そして、前記第１のメモリ１３は、前記演算回路１１において得られた途中演算結果を保持していくものであり、前記第１の誤り検出符号演算結果保持部１３１は、前記第１の誤り検出制御回路１４１の制御の下で行われる第１のＥＤＣ演算（図１のステップＳ２０）で得られた演算結果を保持するものであり、前記第２の誤り検出符号演算結果保持部１３２は、前記第２の誤り検出制御回路１４２の制御の下で行われる第２のＥＤＣ演算（図１のステップＳ４０）で得られた演算結果、つまり前記第１のＥＤＣ演算処理による演算結果を更新するための差分情報を保持するものである。
【００５５】
そして、前記第２のメモリ１２は、前記第１のメモリ１３から出力された演算結果をセクタ毎に保持するものであり、前記第２のＥＤＣ演算処理後に、前記第１のＥＤＣ演算結果が前記第２のＥＤＣ演算結果により更新され、該第２のメモリ１２には、正しいＥＤＣ演算結果が保持される。
【００５６】
以下、ＥＣＣ処理とＥＤＣ処理の同時実行処理動作を説明する。
まず、誤り訂正回路２０で、対象データ符号列が図１１のＣ１方向に訂正処理される場合、誤り訂正回路２０及び誤り検出回路１０に対して、ＤＶＤから、誤り訂正及び誤り検出を行うべきデータ符号列が、図１１のＣ１方向に沿って、連続性のある並びで、１ＥＣＣブロック分入力される。データ符号列が入力されると、誤り訂正回路２０では、シンドローム演算器２１においてＥＣＣ処理のシンドローム演算が行われる（図１のステップＳ１０）と同時に、誤り検出回路１０では、演算回路１１の誤り検出符号演算回路１１１で、第１の誤り検出制御回路１４１の制御の下、第１のＥＤＣ演算が行われ（図１のステップＳ２０）、セクタ単位毎に第１の誤り検出符号演算結果が得られる。この第１の誤り検出符号演算結果は、第１のメモリ１３の第１の誤り検出符号演算結果保持部１３１に保持される。
【００５７】
一方、誤り訂正回路２０で、対象データ符号列が図１１のＣ２方向に訂正処理される場合は、誤り訂正回路２０及び誤り検出回路１０に対して、ＤＶＤから、誤り訂正及び誤り検出を行うべきデータ符号列が、図１１のＣ２方向に沿って、連続性のない並びで、１ＥＣＣブロック分入力される。
【００５８】
具体的には、誤り訂正回路２０及び誤り検出回路１０に対して入力されるデータ符号列は、図３に示すようになる。図３は、本実施の形態１における、１ＥＣＣブロックの第０セクタのデータ符号列に対してＣ２方向に誤り訂正処理される際の、誤り訂正回路及び誤り検出回路に対するデータ符号列のデータ入力順序及びＥＤＣ演算順序を示す図である。
【００５９】
このような連続性のない並びでデータ符号列が入力されると、誤り訂正回路２０内のシンドローム演算器２１にて、シンドローム演算が実行されると同時に（図１のステップＳ１０）、誤り検出回路１０内の演算回路１１の誤り検出符号スキップ演算回路１１２にて、第１の誤り検出制御回路１４１の制御の下、第１のＥＤＣ演算処理が行われる。
【００６０】
以下、誤り訂正回路にてＣ２方向訂正時に同時にＥＤＣ演算処理を行う場合について、図４及び図５を参照しながら説明する。
図４は、本実施の形態１における誤り検出回路にデータ符号列が連続性のない並びで入力された際の、第１のＥＤＣ演算処理を示すフローチャート図、図５は、第１のＥＤＣ演算処理時のデータの流れを示す図である。
【００６１】
図４に示すように、第１のＥＤＣ演算処理が開始されると、まず、第１の誤り検出制御回路１４１内に保持されているセクタ内行数カウンタ“ＲＯＷ”と、セクタ内列数カウンタ“ＣＯＬ”とを初期化する（ステップＳ２０１，Ｓ２０２）。そして、第１のメモリ１３内の第１誤り検出符号演算結果保持部１３１の値（以下、「“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”」と称す。）、及び第２のメモリ１２の値（以下、「“ＥＤＣ＿ＶＡＬ”」と称す。）を初期化する（ステップＳ２０３，Ｓ２０４）。
【００６２】
この後、誤り検出回路１０及び誤り訂正回路２０において、前記データ符号列を４Ｂｙｔｅ受信する。この受信したデータは、図３に示す“０”番目のデータである（ステップＳ２０５）。
【００６３】
そして、受信したデータに対して、誤り検出符号演算回路１１１において、後述する４Ｂｙｔｅ入力のＥＤＣ演算処理を行い（ステップＳ２０６）、その演算結果と、“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”のＥＸＯＲをとった値を、再度“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”に保持する（ステップＳ２０７）。
【００６４】
以上のようにして“０”番目のデータのＥＤＣ演算が終了後、次に入力されるデータ符号列は、図３に示す“１”番目のデータである。この次に入力される“１”番目のデータは、図３から明らかなように、先に入力された“０”番目のデータとデータの並びに連続性をもたない。
【００６５】
データの並びに連続性があるか否かは、前記第１の誤り検出制御回路１４１にて、現在処理中のセクタ内行数カウンタ“ＲＯＷ”を判定し、該セクタ内行数カウンタ“ＲＯＷ”が、セクタ内最終行である“１１”でなければ、データに連続性がないと判断する（ステップＳ２０８）。
【００６６】
そして、前記第１の誤り検出制御回路１４１にて、データに連続性が無いと判断されると、“０”番目のデータと“１”番目のデータ間の連続性を補正するために、前記第１の誤り検出制御回路１４１の制御の下、前記演算回路１１内の誤り検出符号スキップ演算回路１１２によって、１６８ＢｙｔｅスキップＥＤＣスキップ演算処理を行う（ステップＳ２０９）。この処理の詳細については後述する。
【００６７】
そして、この誤り検出符号スキップ演算回路１１２により得たスキップ演算結果と、前記“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”のＥＸＯＲをとった値を、再度“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”に保持する（ステップＳ２１０）。
【００６８】
この後、前記第１の誤り訂正検出制御回路１４１は、セクタ内行数カウンタ“ＲＯＷ”を１インクリメントし（ステップＳ２１１）、次行のＥＤＣ演算処理に移行する。
【００６９】
以上の処理を、前記セクタ内行数カウンタ“ＲＯＷ”がセクタ内最終行である“１１”になるまで繰り返す。
【００７０】
ステップＳ２０８において、前記セクタ内行数カウンタ“ＲＯＷ”が“１１”になった場合は、図３に示す“１１”番目、もしくは“２１９”番目、・・・、“８５３９”番目のデータ入力に対応した４Ｂｙｔｅ入力のＥＤＣ演算処理が終了している状態となる。
【００７１】
そして、前記セクタ内列数カウンタ“ＣＯＬ”が“４２”になるまで、“ＣＯＬ”の値毎に前記誤り検出符号スキップ演算回路１１２において行うＥＤＣスキップ演算処理は異なるため、前記セクタ内行数カウンタ“ＲＯＷ”が“１１”になる度に、前記第１の誤り検出制御回路１４１により、現在のセクタ内列数カウンタ“ＣＯＬ”の値に対応した個別の処理（図４のステップＳ２１３参照）となるよう制御される。
【００７２】
例えば、ステップＳ２１３の時点で、現在前記セクタ内列数カウンタ“ＣＯＬ”が“１”、つまり、図３に示す“２１９”番目のデータまでＥＤＣ演算処理が終了している状態であれば、該“２１９”番目のデータと、図３に示すセクタの最終データでありＥＤＣ領域である“８７４７”番目のデータまでの差分は１６４Ｂｙｔｅであるため、前記第１の誤り検出制御回路１４１は、前記誤り検出符号スキップ演算回路１１２において、１６４ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を行うように制御する。また、前記ステップＳ２１３に時点で、前記セクタ内列数カウンタ“ＣＯＬ”が“４１”、つまり図３に示す“８５３９”番目のデータまでのＥＤＣ演算処理が終了している状態であれば、該“８５３９”番目のデータと、図３に示す最終データでありＥＤＣ領域である“８７４７”番目のデータまでの差分は４Ｂｙｔｅであるため、前記第１の誤り検出制御回路１４１は、前記誤り検出符号スキップ演算回路１１２において、４ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を行うように制御する。
【００７３】
そして、前記セクタ内列数カウンタ“ＣＯＬ”値毎に異なる、前記誤り検出符号スキップ演算回路１１２によるスキップ演算結果と、“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”とのＥＸＯＲをとった値を、再度“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”に保持する（ステップＳ２１４）。
【００７４】
この時点で、第１のメモリ１３内の、第１の誤り検出符号演算結果保持部１３１（“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”）には、セクタ内１列分の演算結果が保持されたこととなるので、図５に示すように、第１の誤り制御回路１４１により、この保持された演算値を第２のメモリ１２（“ＥＤＣ＿ＶＡＬ”）に出力して、該第２のメモリ１２内の対応するセクタレジスタに出力して保持する。つまり、“ＥＤＣ＿ＶＡＬ”と“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”とのＥＸＯＲをとった値を、再度“ＥＤＣ＿ＶＡＬ”に保持する（ステップＳ２１５）。例えば、現在第０セクタ内の“ＣＯＬ”が“１”、つまり図３に示す“２１９”番目のデータまでのＥＤＣ演算が終了し、“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿１”には、図３の“２０８”番目〜“２１９”番目のデータまでのＥＸＯＲをとった値が保持されている場合、図５に示すように、この値を“ＥＤＣ＿ＶＡＬ”内の第０セクタレジスタに出力する。
【００７５】
この後、“ＲＯＷ”を初期化し（ステップＳ２１６）、“ＣＯＬ”を１インクリメントする（ステップＳ２１７）。
【００７６】
一方、前記ステップＳ２０８にて“ＲＯＷ”が“１１”で、前記ステップＳ２１２にて“ＣＯＬ”が“４２”であった場合には、図３に示す“８７４７”番目のデータ入力に対応した４Ｂｙｔｅ入力ＥＤＣ演算処理が終了した状態であるため、“ＥＤＣ＿ＶＡＬ”と“ＴＰ＿ＥＤＣ＿ＶＡＬ＿１”とのＥＸＯＲをとった値を、再度“ＥＤＣ＿ＶＡＬ”に保持し（ステップＳ２１８）、“ＲＯＷ”及び“ＣＯＬ”を初期化し（ステップＳ２１９，Ｓ２２０）、処理を終了する。
【００７７】
以上のステップにより、図３に示すＥＣＣブロック内第０セクタの第１のＥＤＣ演算結果が全て求まり、処理を終了する。
【００７８】
このようにして、前記ステップＳ２０にて、１ＥＣＣブロック内の１６セクタ全てに対する第１のＥＤＣ演算処理が終了した後、前記ステップＳ１０で、前記誤り訂正回路２０におけるシンドローム演算値が“０”でなく、誤りが含まれていると判断された場合は、誤り訂正処理が施される（図１のステップＳ３０）。なお、前記シンドローム演算値が“０”の場合は、ここで一連の処理は終了され、前記第１のＥＤＣ演算結果が、誤り検出回路１０より得られる正しいＥＤＣ演算結果として出力される。
【００７９】
そして、前記誤り訂正回路２０におけるシンドローム演算値が“０”でなかった場合は、前記ステップＳ３０の誤り訂正処理において得られた誤りデータ位置及び誤りデータ数値を用いて、該誤りデータ位置が示す箇所のみ第２のＥＤＣ演算処理が行われる。
【００８０】
この第２のＥＤＣ演算処理については、第２の誤り検出制御回路１４２の制御の下、前述した第１のＥＤＣ演算処理と同様、演算回路１１内の誤り検出符号演算回路１１１及び誤り検出符号スキップ演算回路１１２によって、第２のＥＤＣ演算処理が行われる。但し、入力される前記データ符号列のうち、前記ステップＳ３０の誤り訂正回路２０による誤り訂正処理おいて得られた誤りデータ位置が示すデータについてのみ行う。この第２のＥＤＣ演算結果は、図６の、第２のＥＤＣ演算処理時のデータの流れに示されるように、第１のメモリ１３内の第２の誤り検出符号演算結果保持部１３２（以下、“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿２”と称す。）に保持される。この“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿２”に保持される値は、前述したように、当該誤り検出回路１０より得られるはずである正しいＥＤＣ演算結果と、実際に前記ステップＳ２０の第１のＥＤＣ演算処理により得られ、現在“ＥＤＣ＿ＶＡＬ”（第２のメモリ１２）に保持されている第１の誤り検出符号演算結果との差分情報である。
【００８１】
従って、前記ステップＳ３０の、誤り訂正回路２０による誤り訂正処理において得られた前記誤りデータ位置に対して、第２のＥＤＣ処理が終了後（図１のステップＳ４０）、前記第２の誤り検出制御回路１４２は、図６に示すように、前記“ＴＭＰ＿ＥＤＣ＿ＶＡＬ＿２”と、前記“ＥＤＣ＿ＶＡＬ”のＥＸＯＲをとることによって、前記“ＥＤＣ＿ＶＡＬ”の値を更新し、正しい誤り検出符号演算結果を得る（図１のステップＳ５０）。
【００８２】
そして、第２のメモリ１２に保持された正しい誤り検出符号演算結果を得ると同時に、前記スクランブル除去部１５にて、スクランブル成分の一括除去処理を行う（図１のステップＳ６０）。この処理は、前記スクランブル除去部１５内に、スクランブル成分を除去するためのデータを保持するテーブルを設けておき、該テーブルを用いてＥＤＣ演算処理ごのデータ符号列のスクランブル成分を一括で除去する。
【００８３】
ただし、前述したように、このスクランブル成分の除去処理は、図１のステップＳ２０のＥＤＣ演算処理の際、前記データ符号列が入力される毎にスクランブル成分を除去しながら演算処理するようにしてもよい。この場合の構成は、図９に示すように誤り検出回路１０の前段にスクランブル除去部１５を設ければよい。また、入力データ符号列にスクランブル成分が含まれていない場合は、ＥＣＣ処理を行うために該データ符号列にスクランブル成分を付加する必要があるため、図１０に示すように、誤り訂正回路２０の前段にスクランブル成分を付加するスクランブル付加部を設け、図１のステップＳ１０の誤り訂正回路によるシンドローム演算処理の際、前記データ符号列が入力される毎にスクランブル成分を付加しながら演算処理するようにすればよい。
【００８４】
ここで、誤り検出回路１０において、誤り検出符号演算処理を行う際に、２つのメモリ、つまり“ＴＭＰ＿ＥＤＣ＿ＶＡＬ”（第１のメモリ１３）及び“ＥＤＣ＿ＶＡＬ”（第２のメモリ１２）を使用する理由を以下に示す。
【００８５】
図３に示すように、対象となるデータ符号列が連続性のない並び（図１１のＣ２方向）で誤り検出回路１０に入力されるとき、１ＥＣＣブロックの第０セクタの“ＣＯＬ”が“１”の列における、前記誤り検出回路１０に対するデータ入力順序は、“０”番目、“１”番目、“２”番目、・・・、“１１”番目のデータまで入力された後、第０セクタの“２０８”番目のデータではなく、第１セクタのデータである“１２”番目、“１３”番目、・・・のように引き続いて入力されてしまう。つまり、図３に示す第０セクタの“２０８”番目のデータが入力されるのは、図１１に示す１ＥＣＣブロック最終セクタである第１５セクタ最終行の“１９１”番目のデータまで入力し、Ｃ２パリティデータである最終行の“２０７”番目のデータが入力された後となる。
【００８６】
従って、前記誤り検出回路１０に、図１１のＣ２方向にデータが入力される場合、各セクタの１列ごとのＥＤＣ演算結果にしか得られないため、前回入力されたデータを元に各セクタ毎の１列のＥＤＣスキップ演算を行った結果を保持するメモリが、第０セクタから第１５セクタの全ての列位置（“ＣＯＬ”が１から４２まで）において必要となり、さらに、該各セクタ毎の各列のＥＤＣ演算結果を、前回得られた演算結果に加算しながら保持するためのメモリが、第０セクタから第１５セクタの各セクタ毎に、個別で使用できるようにする必要がある。
【００８７】
よって、本実施の形態１では、各セクタ内の１列分のＥＤＣ演算結果を、第１のメモリ１３に保持しながらＥＸＯＲをとることによって得、１列分のＥＤＣ演算結果が得られるたびに、前記第１のメモリ１３の値を、第２のメモリ１２内に設けられた対応するセクタ毎のレジスタに保持した後、前記第１のメモリ１３内の値をリセットし、前記第１のメモリを、次のセクタの１列分のＥＤＣ演算結果を得るために使用することができるようにしたものである。
【００８８】
次に、前述した誤り検出符号演算回路１１１におけるＥＤＣ演算処理、及び誤り検出符号スキップ演算回路１１２におけるＥＤＣスキップ演算処理の詳細について、図１５を参照しながら説明する。
【００８９】
図１５に示すように、ＥＤＣ演算回路は３２ビットのシフトレジスタで構成されるため、３２ビット全てに0が存在するＥＤＣ演算回路に対して、任意のビット値をＥＤＣ演算回路に入力した後のＥＤＣ演算結果である３２ビットのシフトレジスタ値は、３２ビット中の各ビットについて、任意のビット値を入力する前の各ビット間の関係式で表現することができる。
【００９０】
例えば、０の値である１ビットが図１５のＥＤＣ演算回路に入力された場合、３２ビット中の各ビット値は、０の値である１ビットが入力される前の３２ビットそれぞれの状態をBit’として以下のように示すことができる。
【００９１】
Ｂｉｔ［０］＝Ｂｉｔ’［３１］
Ｂｉｔ［１］＝Ｂｉｔ’［０］
Ｂｉｔ［２］＝Ｂｉｔ’［１］
Ｂｉｔ［３］＝Ｂｉｔ’［２］
Ｂｉｔ［４］＝Ｂｉｔ’［３］＾Ｂｉｔ’［３１］
Ｂｉｔ［５］＝Ｂｉｔ’［４］
・
・
・
Ｂｉｔ［３０］＝Ｂｉｔ’［２９］
Ｂｉｔ［３１］＝Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
【００９２】
前述した１ビットスキップ演算処理式は、前回にＥＤＣ演算回路に対して入力されたデータと、新たにＥＤＣ演算回路に対して入力されたデータ間の差分が１ビットであるときに用いる、演算回路１１内の誤り検出符号演算回路１１１の演算処理式に他ならない。
【００９３】
さらに、図４に示すステップＳ２０９以外で、データの連続性をたもつために、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を考えるとき、３２ビット全てに0が存在する図１５で示すＥＤＣ演算回路に対して、全て０の値である１３４４ビット（１６８Ｂｙｔｅ）が入力された後のＥＤＣ演算結果である３２ビットのシフトレジスタ値は、０の値である1ビットが入力される前の３２ビットそれぞれの状態をＢｉｔ’として以下のように示すことができる。
【００９４】
Ｂｉｔ［０］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［５］＾Ｂｉｔ’［６］＾Ｂｉｔ’［７］＾Ｂｉｔ’［９］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１１］＾Ｂｉｔ’［１３]＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１５］＾Ｂｉｔ’［１７］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［１９］＾Ｂｉｔ’［２１］＾Ｂｉｔ’［２２］＾Ｂｉｔ’［２３］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
Ｂｉｔ［１］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［４］＾Ｂｉｔ’［６］＾Ｂｉｔ’［７］＾Ｂｉｔ’［８］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１１］＾Ｂｉｔ’［１２］＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１５］＾Ｂｉｔ’［１６］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［１９］＾Ｂｉｔ’［２０］＾Ｂｉｔ’［２２］＾Ｂｉｔ’［２３］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
Ｂｉｔ［２］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［４］＾Ｂｉｔ’［５］＾Ｂｉｔ’［７］＾Ｂｉｔ’［８］＾Ｂｉｔ’［９］＾Ｂｉｔ’［１１］＾Ｂｉｔ’［１２］＾Ｂｉｔ’［１３］＾Ｂｉｔ’［１５］＾Ｂｉｔ’［１６］＾Ｂｉｔ’［１７］＾Ｂｉｔ’［１９］＾Ｂｉｔ’［２０］＾Ｂｉｔ’［２１］＾Ｂｉｔ’［２３］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
Ｂｉｔ［３］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［４］＾Ｂｉｔ’［５］＾Ｂｉｔ’［６］＾Ｂｉｔ’［８］＾Ｂｉｔ’［９］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１２］＾Ｂｉｔ’[13]＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１６］＾Ｂｉｔ’［１７］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［２０］＾Ｂｉｔ’［２１］＾Ｂｉｔ’［２２］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］＾Ｂｉｔ’［３１］
Ｂｉｔ［４］＝Ｂｉｔ’［４］＾Ｂｉｔ’［２４］
Ｂｉｔ［５］＝Ｂｉｔ’［５］＾Ｂｉｔ’［２５］
・
・
・
Ｂｉｔ［３０］＝Ｂｉｔ’［２］＾Ｂｉｔ’［３］＾Ｂｉｔ’［６］＾Ｂｉｔ’［７］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１１］＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１５］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［１９］＾Ｂｉｔ’［３０］
Ｂｉｔ［３１］＝Ｂｉｔ’［０］＾Ｂｉｔ’［１］＾Ｂｉｔ’［２］＾Ｂｉｔ’［４］＾Ｂｉｔ’［５］＾Ｂｉｔ’［６］＾Ｂｉｔ’［８］＾Ｂｉｔ’［９］＾Ｂｉｔ’［１０］＾Ｂｉｔ’［１２］＾Ｂｉｔ’［１３]＾Ｂｉｔ’［１４］＾Ｂｉｔ’［１６］＾Ｂｉｔ’［１７］＾Ｂｉｔ’［１８］＾Ｂｉｔ’［２０］＾Ｂｉｔ’［２１］＾Ｂｉｔ’［２２］＾Ｂｉｔ’［２３］＾Ｂｉｔ’［２４］＾Ｂｉｔ’［２５］＾Ｂｉｔ’［２６］＾Ｂｉｔ’［２７］＾Ｂｉｔ’［２８］＾Ｂｉｔ’［２９］＾Ｂｉｔ’［３０］
【００９５】
前述した１６８Ｂｙｔｅスキップ演算処理式は、前回にＥＤＣ演算回路に対して入力されたデータと、新たにＥＤＣ演算回路に対して入力されたデータ間の差分が１６８Ｂｙｔｅであるときに用いる、演算回路１１内の誤り検出符号スキップ演算回路１１２の１つの演算処理式に他ならない。そして、図４のステップＳ２１３においては、各“ＣＯＬ”値に応じたスキップ演算処理を行う必要があり、この各“ＣＯＬ”値に応じたスキップ演算処理式ついても、前記１６８Ｂｙｔｅスキップ演算処理式と同様にして得ることができ、図４におけるステップＳ２１３では、各“ＣＯＬ”値に応じたスキップ演算処理式を４２通り用意すればよいこととなる。
【００９６】
なお、前述したように図４におけるステップＳ２１３の処理のために、“ＣＯＬ”値に応じたスキップ演算処理式を全部で４２通り用意するのではなく、前記スキップ演算を分割して処理するようにすれば、前記ステップＳ２１３におけるステップ数を削減することが可能となる。
【００９７】
以下、スキップ演算処理を分割処理により行う場合について、図７の１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理の説明図、及び図８の１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を分割して行う場合の説明図を用いて説明する。
【００９８】
図７に示すように、図３に示す“ＣＯＬ”が“０”の場合は、“ＲＯＷ”が“１１”の時点で１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算を行う必要がある。このように、セクタ中の全てのＥＤＣ演算を行うためには、ＥＤＣスキップ演算処理は“ＣＯＬ”が“０”から“４１”までの４２通りについて用意しておく必要があり、処理資源を大きく消費してしまう。
【００９９】
ここで例えば、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を行うことと、２８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を６回行うことが等価になる。このことを利用して、ステップＳ２１３において、４２通りのスキップ演算処理式を個別に用意するのではなく、例えば、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を、図８に示すように、別個に存在する、データを２８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を６回再利用する方法に変更する。なお、データを１６８Ｂｙｔｅスキップさせる場合、例えば、４ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を４２回再利用することも考えられるが、このようにすると今度は処理時間が大幅にかかってしまうという問題が生じるため、他の演算処理結果を再利用する場合には、そのスキップ演算にかかる処理時間と、用意する演算処理に必要な処理資源との兼ね合いで決めるのが良い。
【０１００】
以上のように、本実施の形態１によれば、入力されたデータ符号列に対して、入力データ単位Ｂｙｔｅに対応した第１のＥＤＣ演算処理を行い、その演算結果を第１のメモリ１３内の第１の誤り検出符号演算結果保持部１３１に保持した後に、該第１の誤り検出符号演算結果保持部１３１の値と、次に入力されるデータまでの差分Ｂｙｔｅ数のＥＤＣスキップ演算処理の演算結果のＥＸＯＲをとることを繰り返すようにしたので、ＥＤＣ演算処理を行う際に、入力されるデータが論理的な連続性のない方向（図１１のＣ２方向）であっても、ＥＤＣ演算処理を実行することが可能となり、前記ＥＣＣ及びＥＤＣの両処理の半導体集積回路の実装を実現できる。また、これにより、ＥＣＣ処理とＥＤＣ処理を同時実施が可能となるので、ＥＣＣブロックをバッファから一度読み出すだけで両処理が行え、ＥＣＣ処理のためにバッファから読み出した１ＥＣＣブロックを、ＥＣＣ処理後に再度読み出してＥＤＣ演算処理を行う必要がなくなり、メモリバッファのバンド幅の消費、及び処理時の肥大化を低減することができる。
【０１０１】
また、前記演算回路１１内の誤り検出符号スキップ演算回路１１２における、ＥＤＣスキップ演算処理を、分割処理方法を用いて行えば、セクタ内のＥＤＣ処理単位列に対応した、全てのＥＤＣスキップ演算処理を用意することなく、別個に存在するＥＤＣスキップ演算処理を複数回再利用することができ、この結果、処理資源の消費を抑えることが可能となる。
【０１０２】
なお、前述の説明においては、データに論理的な連続性のないＣ２方向のＥＣＣ処理とＥＤＣ演算処理とを同時実行する場合のＥＤＣ演算処理について詳述したが、本実施の形態１にかかる誤り検出回路１０において、データに論理的な連続性があるＣ１方向のＥＣＣ処理とＥＤＣ演算処理とを同時実行することも可能である。この場合第１のＥＤＣ演算処理は、前述したＣ２方向の処理とは異なりスキップ演算をする必要がないので、演算回路１１内の誤り検出符号演算回路１１１のみを使用し、演算処理単位（ここでは４Ｂｙｔｅ）毎に得られた演算結果を第1のメモリ１３内の第１の誤り検出符号演算結果保持部１３１に保持していき、１セクタのＥＤＣ演算処理が終了後、前記第１の誤り検出符号演算結果保持部１３１に保持した演算結果を、第２のメモリ１２内の対応するセクタレジスタに保持し、次のセクタのＥＤＣ演算処理に移行する処理を繰り返す。そして、第２のＥＤＣ演算処理は、前述したＣ２方向の処理と同様、前記誤り検出回路２０にて得られた誤りデータ位置及び誤りデータ数値を元に、入力されるデータ符号列のうち、前記誤りデータ位置のデータに対してのみ再度ＥＤＣ演算処理を行い、得られた演算結果を第１のメモリ１３内の第２の誤り検出符号演算結果保持部１３２に保持し、該第２のＥＤＣ処理が終了後、その時点で第２のメモリ１２に保持されている第１のＥＤＣ演算結果を、前記第２の誤り検出符号演算結果保持部１３２に保持された演算結果を用いて更新し、正しいＥＤＣ演算結果を得る。
【産業上の利用可能性】
【０１０３】
本発明の誤り検出装置及び誤り検出方法は、ＥＣＣ復号化されたデジタルデータを高倍速で記録または再生する光ディスク記録再生装置において、データを記録再生するときに、誤り訂正及び誤り検出を同時処理させる際に有用である。
【図面の簡単な説明】
【０１０４】
【図１】本発明の実施の形態１における、ＥＣＣ処理とＥＤＣ処理の同時実行した際のパイプライン処理を示す図である。
【図２】本発明の実施の形態１における、誤り検出回路の構成を示す図である。
【図３】本発明の実施の形態１における、Ｃ２方向訂正時に第0セクタにおいてデータ入力単位を４Ｂｙｔｅとしたときの誤り訂正回路、及び誤り検出回路に対するデータ入力順序を示す図である。
【図４】本発明の実施の形態１における誤り検出回路において、Ｃ２方向訂正時の第１のＥＤＣ演算処理の一連の流れを示すフローチャート図である。
【図５】本発明の実施の形態１における誤り検出回路のＣ２方向訂正時における第１のＥＤＣ演算処理のデータの流れを示す図である。
【図６】本発明の実施の形態１における誤り検出回路の、Ｃ２方向訂正時における第２のＥＤＣ演算処理のデータの流れを示す図である。
【図７】本発明の実施の形態１における誤り検出回路の、誤り検出符号スキップ演算回路において、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理を示す図である。
【図８】本発明の実施の形態１における誤り検出回路の、誤り検出符号スキップ演算回路において、データを１６８ＢｙｔｅスキップさせるＥＤＣスキップ演算処理の分割処理を示す図である。
【図９】本発明の実施の形態１における、対象符号列が入力される度にスクランブル成分を除去する場合の、誤り検出回路の構成図である。
【図１０】本発明の実施の形態１における、データ符号列が入力される度にスクランブル成分を付加する場合の、誤り検出回路の構成図である。
【図１１】ＤＶＤに記録されたデータを誤り訂正単位ブロック（ＥＣＣブロック）に分けたときの１ＥＣＣブロック構成図である。
【図１２】ＥＣＣブロック上のセクタの構成を示す図である。
【図１３】ＥＣＣブロックの図１１に示すＣ１方向についての誤り訂正実施例を示す図である。
【図１４】ＥＣＣブロックの図１１に示すＣ２方向についての誤り訂正実施例を示す図である。
【図１５】４Ｂｙｔｅ入力のＥＤＣ演算回路を示す図である。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2005022755.tif 000020
【図２】
2005022755.tif 000021
【図３】
2005022755.tif 000022
【図４】
2005022755.tif 000023
【図５】
2005022755.tif 000024
【図６】
2005022755.tif 000025
【図７】
2005022755.tif 000026
【図８】
2005022755.tif 000027
【図９】
2005022755.tif 000028
【図１０】
2005022755.tif 000029
【図１１】
2005022755.tif 000030
【図１２】
2005022755.tif 000031
【図１３】
2005022755.tif 000032
【図１４】
2005022755.tif 000033
【図１５】
2005022755.tif 000034
【国際調査報告】
2005022755.tif 000035
2005022755.tif 000036