(57)【特許請求の範囲】
【請求項１】
第１方向に対応した誤り検出符号を備える基礎データに対し、当該誤り検出符号を用いて検査演算を行い、第１標本値を生成するステップと、
前記第１方向に誤り訂正を行うステップと、
前記第１方向の誤り訂正によって得られた訂正値に対して検査演算を行って第２標本値を生成するステップと、
前記第１標本値と第２標本値とを比較して、第１検査値を生成するステップと、
前記第１方向に誤り訂正がなされた基礎データに対して、第１方向とは異なる第２方向に誤り訂正を行うステップと、
前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って検査演算を行い、第３標本値を生成するステップと、
前記第１検査値と第３標本値とを比較して、前記第２方向の誤り訂正を検査する第２検査値を生成するステップと
を備えることを特徴とする訂正検査方法。
【請求項２】
少なくとも前記第１検査値あるいは第２検査値は、その比較を排他的論理和演算によってなすことを特徴とする請求項１記載の訂正検査方法。
【請求項３】
前記第３標本値を生成するステップは、前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って並び替えを行い、その結果を検査演算するものであることを特徴とする請求項１記載の訂正検査方法。
【請求項４】
前記第３標本値を生成するステップは、前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って順次取得しつつ検査演算を行うものであることを特徴とする請求項１記載の訂正検査方法。
【請求項５】
前記訂正値に対する検査演算は、演算すべきデータが誤り位置以外である時は零を演算し、誤り位置に到達した場合は、その位置に対応する前記訂正値を演算するものであることを特徴とする請求項１記載の訂正検査方法。
【請求項６】
第１方向に対応した誤り検出符号を備える基礎データに対し、当該誤り検出符号を用いて検査演算を行い、第１標本値を生成するステップと、
前記第１方向とは異なる第２方向に誤り訂正を行うステップと、
前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って検査演算を行い、第２標本値を生成するステップと、
前記第１標本値と前記第２標本値とを比較して、前記第２方向の誤り訂正を検査する検査値を生成するステップと
を備え、
前記基礎データは、前記第１方向に誤り訂正処理がなされたものであることを特徴とする訂正検査方法。
【請求項７】
前記検査値は、前記第１標本値と第２標本値とを排他的論理和演算することで得られるものであることを特徴とする請求項６記載の訂正検査方法。
【請求項８】
前記第２標本値を生成するステップは、前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って並び替えを行い、その結果を検査演算するものであることを特徴とする請求項６記載の訂正検査方法。
【請求項９】
前記第２標本値を生成するステップは、前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って順次取得しつつ検査演算を行うものであることを特徴とする請求項６記載の訂正検査方法。
【請求項１０】
前記訂正値に対する検査演算は、演算すべきデータが誤り位置以外である時は零を演算し、誤り位置に到達した場合は、その位置に対応する前記訂正値を演算するものであることを特徴とする請求項６記載の訂正検査方法。
【請求項１１】
第１方向に対応した誤り検出符号を備える基礎データに対し、当該誤り検出符号を用いて検査演算を行い、第１標本値を生成する第１検査演算部と、
前記第１方向に誤り訂正を行う第１誤り訂正部と、
前記第１誤り訂正部によって得られた訂正値に対して検査演算を行って第２標本値を生成する第２検査演算部と、
前記第１標本値と第２標本値とを比較して、第１検査値を生成する第１比較部と、
前記第１方向に誤り訂正がなされた基礎データに対して、第１方向とは異なる第２方向に誤り訂正を行う第２誤り訂正部と、
前記第２誤り訂正部によって得られた訂正値を第１方向に沿って検査演算を行い、第３標本値を生成する第３検査演算部と、
前記第１検査値と第３標本値とを比較して、前記第２方向の誤り訂正を検査する第２検査値を生成する第２比較部と
を備えることを特徴とする訂正検査装置。
【請求項１２】
少なくとも前記第１比較部あるいは第２比較部は、その比較を排他的論理和演算によってなすことを特徴とする請求項１１記載の訂正検査装置。
【請求項１３】
前記第３検査演算部は、前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って並び替えて保管する記憶部と、その結果を検査演算する検査演算部とを備えることを特徴とする請求項１１記載の訂正検査装置。
【請求項１４】
前記第３検査演算部は、前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って順次取得するデータ呼び出し部と、その呼び出されたデータに対して順次に検査演算を行う検査演算部を備えることを特徴とする請求項１１記載の訂正検査装置。
【請求項１５】
前記検査演算部は、演算すべきデータが誤り位置以外である時は零を演算し、誤り位置に到達した場合は、その位置に対応する前記訂正値を演算するものであることを特徴とする請求項１１記載の訂正検査装置。
【請求項１６】
第１方向に対応した誤り検出符号を備える基礎データに対し、当該誤り検出符号を用いて検査演算を行って第１標本値を生成する第１検査演算部と、
前記第１方向とは異なる第２方向に誤り訂正を行う誤り訂正部と、
前記誤り訂正部によって得られた訂正値を第１方向に沿って検査演算を行い、第２標本値を生成する第２検査演算部と、
前記第１標本値と前記第２標本値とを比較して、前記第２方向の誤り訂正を検査する検査値を生成する比較部と、を備え
前記基礎データは、前記第１方向に誤り訂正処理がなされたものであることを特徴とする訂正検査装置。
【請求項１７】
前記比較部は、前記第１標本値と第２標本値とを排他的論理和演算することを特徴とする請求項１６記載の訂正検査装置。
【請求項１８】
前記第２検査演算部は、前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って並び替えて保管する記憶部と、その結果を検査演算する検査演算部とを備えることを特徴とする請求項１６記載の訂正検査装置。
【請求項１９】
前記第２検査演算部は、前記第２方向の誤り訂正によって得られた訂正値を第１方向に沿って呼び出すデータ呼び出し部と、その呼び出されたデータに対して順次に検査演算を行う検査演算部を備えることを特徴とする請求項１６記載の訂正検査装置。
【請求項２０】
前記検査演算部は、演算すべきデータが誤り位置以外である時は零を演算し、誤り位置に到達した場合は、その位置に対応する前記訂正値を演算するものであることを特徴とする請求項１６記載の訂正検査装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は記録媒体から読み出されたデータの誤りを訂正する誤り訂正処理の結果に誤りが有るか否かを検査する訂正検査方法及び訂正検査装置に関するものである。
【０００２】
近年、光ディスク等の記録媒体における記録容量の大容量化に伴い、そのデータ読み出しに要する時間が長くなっている。特に、データ読み出しに要する時間のうち、誤り訂正処理動作に要する時間の割合が長くなる傾向にある。そのため、誤り訂正処理動作における訂正検査処理、特に誤り訂正処理の結果に誤りが有るか否かを検査する訂正検査処理に要する時間の短縮化を図る必要がある。
【０００３】
【従来の技術】
従来、記録媒体（テープ、ビデオ、ＣＤ、ＤＶＤ等）に記録されたデータには、そのデータの読み出し時等に発生する誤りを検出するために誤り検出符号(EDC:Error Detecting Code)が予め付加されている。また、データには、発生する誤りを訂正するために誤り訂正符号(ECC:Error Correcting Code) が予め付加されている。
【０００４】
例えばＤＶＤ−ＲＯＭに記録されるデータのフォーマットを説明すると、図１５に示すように、一つのセクタ１は、１２バイトのＩＤ及び予約領域と、２ｋバイトのユーザーデータと、４バイトの誤り検出符号ＥＤＣとから構成される。
【０００５】
誤り検出符号ＥＤＣは、例えばＩＤ及び予約領域に格納されたデータとユーザデータに、巡回冗長検査（ＣＲＣ：cyclic redundancy check ）に基づく演算（以下、ＣＲＣ演算という）を行った演算結果に対応する符号（巡回符号：cyclic code であり、以下ＣＲＣデータという）である。そして、誤り検出符号ＥＤＣは、誤り訂正が正しく行われたか、又は誤り訂正によりデータが正しく復元されたかを確認するために付加される。
【０００６】
各セクタ１はＰＩ方向（行方向、すなわち図１６において横方向であり、この方向を第１方向とする）に１２段のデータとして構成され、１段が１７２バイトのデータとして構成される。従って、初段は１２バイトのＩＤ及び予約領域と１６０バイトのユーザーデータが記録され、終段は１６８バイトのユーザーデータと４バイトの誤り検出符号ＥＤＣが記録され、中間段は１７２バイトのユーザーデータが記録される。
【０００７】
図１６に示すように、データブロック２は１６個のセクタ１と、ＰＯ−ＥＣＣ部３及びＰＩ−ＥＣＣ部４とから構成される。ＰＯ−ＥＣＣ部３は、各セクタ１を跨るＰＯ方向（列方向、すなわち図１６において縦方向であり、この方向を第２方向とする）のデータに対する誤り訂正符号であり、ＰＩ−ＥＣＣ部４はＰＯ−ＥＣＣ部３を含むＰＩ方向の誤り訂正符号である。
【０００８】
そして、ＰＩ−ＥＣＣ部４はデータブロック２内のＰＩ方向の１行毎、すなわちＰＩインターリーブ毎の誤り訂正を行うためのシンドロームを生成するために付加され、ＰＯ−ＥＣＣ部３はデータブロック２内のＰＯ方向の１列毎、すなわちＰＯインターリーブ毎の誤り訂正を行うためのシンドロームを生成するために付加される。
【０００９】
データブロック２は、図１９に示す符号化フォーマットでＤＶＤ−ＲＯＭ上に格納される。すなわち、ＰＯ−ＥＣＣ部３は各インターリーブ毎に分割され、各セクタ１間に１インターリーブずつが挿入される。
【００１０】
このようなフォーマットにより、データ再生時の誤り訂正処理において、高い誤り検出・訂正能力が確保される。
そして、記録媒体に対してデータの入出力を行うコントローラには、データブロック２の誤りを訂正する誤り訂正回路が備えられる。先ず、誤り訂正回路は、ＰＩ方向の誤り訂正処理を実行する。即ち、誤り訂正回路は、図１７に示すように、ＰＩ方向のデータを１バイトずつ順次入力し、ＰＩシンドロームを順次作成する。
【００１１】
誤り訂正回路は、１インターリーブのＰＩシンドロームに基づいて誤り情報を作成する。誤り情報は、誤データの位置と誤データに対する補正値を含む。誤り訂正回路は、誤り情報の誤り位置のデータと補正値を用いて、１インターリーブのデータに発生する誤りを訂正する。そして、誤り訂正回路は、上記の処理を全ＰＩインターリーブについて繰り返し実行する。
【００１２】
次に、誤り訂正回路は、ＰＩ方向の誤り訂正処理と同様に、ＰＯ方向の誤り訂正処理を実行する。即ち、誤り訂正回路は、図１８に示すように、ＰＯ方向のデータを１バイトずつ順次入力し、ＰＯシンドロームを順次作成する。誤り訂正回路は、１インターリーブのＰＯシンドロームを作成すると、誤り情報を作成する。誤り訂正回路は、誤り情報に基づいて、誤り位置のデータと補正値を演算する事により、１インターリーブのデータに発生する誤りを訂正する。そして、誤り訂正回路は、上記の処理を全ＰＯインターリーブについて繰り返し実行する。
【００１３】
このようにして、誤り訂正回路は、データブロック２の全てのデータに対してＰＩ方向とＰＯ方向に誤り訂正を実施する。
【００１４】
【発明が解決しようとする課題】
ところで、前記各誤り訂正処理において、ユーザデータが正しく訂正されたか否かを検査する誤り検出処理を実施する必要がある。ユーザデータが正しく訂正されていない場合、再びＰＩ，ＰＯ誤り訂正をエラーが無くなるまで繰り返す必要があるからである。そして、誤り検出処理は、各誤り訂正処理毎に行われる必要がある。もし、ＰＩ誤り訂正においてユーザデータが正しく訂正された場合、ＰＯ誤り訂正処理を省略して誤り訂正処理の処理時間を短縮しなければならないからである。
【００１５】
即ち、誤り訂正回路は、ＰＩ方向，ＰＯ方向の誤り訂正処理に対してそれぞれ誤り検出処理を行う。誤り検出処理は、セクタ１のユーザデータに付加した誤り検出符号ＥＤＣを利用して、ユーザデータの品質を評価するものである。尚、誤り検出符号ＥＤＣとしてＣＲＣデータをユーザデータに付加してあることから、誤り訂正回路は誤り検出処理としてＣＲＣチェックを実施する。
【００１６】
誤り訂正回路は、図１５の１セクタに含まれるデータ（ＩＤ及び予約領域に格納されたデータ、ユーザデータ及び誤り検出符号ＥＤＣ）を基礎データとし、その基礎データに対して検査演算としてのＣＲＣ演算を実施する。その演算結果は、ユーザデータに誤りが発生していない場合にゼロとなる。従って、ユーザデータに誤りが発生している場合、ＣＲＣ演算の演算結果は、発生したエラーに相当する値となる。このことに基づいて、誤り訂正回路は、上記誤り訂正処理の正否を判断する。
【００１７】
即ち、誤り訂正回路は、先ず、誤り訂正前の基礎データをＣＲＣ演算し、その演算結果を記憶する。次に、誤り訂正回路は、シンドロームから作成した補正値をＣＲＣ演算する。そして、誤り訂正回路は、両演算結果を比較し、両演算結果が等しい場合に補正値により誤り訂正を行った結果が正しいと判断する。
【００１８】
そして、誤り訂正回路は、ＰＩ方向の誤り訂正処理を行う際に、誤り検出処理を実施することができる。即ち、ＣＲＣデータは、基礎データの入力順に演算されたデータである。この基礎データの入力方向は、図１５において横方向であり、図１６のＰＩ誤り訂正処理におけるデータの入力方向と一致している。従って、誤り訂正回路は、ＰＩ誤り訂正処理においてＰＩインターリーブのデータを入力する際に、基礎データをＣＲＣ演算する。これにより、ＣＲＣ演算をＰＩ誤り訂正処理と別に行う場合に比べて誤り訂正処理に要する時間を短くする。
【００１９】
しかしながら、誤り訂正回路は、ＰＯ方向の誤り訂正処理を行う際に誤り検出処理を実施することができない。これは、ＣＲＣ演算はデータ入力順に重みを持っているためである。ＰＯ誤り訂正処理におけるデータの入力順は、ＣＲＣ演算の際に入力する基礎データの入力方向と直交している。従って、ＰＯ誤り訂正処理においてＰＯインターリーブのデータを入力する際にＣＲＣ演算を行う事ができない。
【００２０】
そのため、誤り訂正回路は、ＰＯ方向の誤り訂正処理を行った後、再びＰＩ方向の誤り訂正処理を行うしか、他に提唱されていなかった。即ち、そのＰＩ方向の誤り訂正処理においてＣＲＣチェックを行うことにより、ＰＯ方向の誤り訂正処理が正しく行われたか否かを判断する訳である。
【００２１】
従って、ＰＯ方向の誤り訂正処理の後にＰＩ誤り訂正処理を行う必要があるため、そのデータ読み出し，誤り訂正処理に要する時間余分に必要で、全体での処理時間が増大するという問題点がある。そして、ＤＶＤ−ＲＯＭでは、一つのデータブロックのデータ量が非常に大きいため、バッファメモリに対するアクセス時間が増大して、誤り訂正処理に要する時間がますます増大するという問題点がある。
【００２２】
本発明は上記問題点を解決するためになされたものであって、その目的は誤り検査符号を演算する際のデータの入力方向と異なる方向に誤り訂正を行う誤り訂正処理の結果をチェックする訂正検査処理に要する時間を短縮することのできる訂正検査方法及び訂正検査装置を提供することにある。
【００２３】
【課題を解決するための手段】
請求項１に記載の発明によれば、第１方向に対応した誤り検出符号を備える基礎データに対し、当該誤り検出符号を用いて検査演算を行って生成した第１標本値と、第１方向の誤り訂正によって得られた訂正値に対して検査演算を行って生成した第２標本値とが比較されて、第１検査値が得られる。この第１検査値により第１方向に対する訂正検査が行われる。次に、第１方向に誤り訂正がなされた基礎データに対して、第１方向とは異なる第２方向に誤り訂正を行い、その第２方向の誤り訂正によって得られた訂正値を第１方向に沿って検査演算を行い、第３標本値が生成される。そして、第１検査値と第３標本値とが比較されて、前記第２方向の誤り訂正を検査する第２検査値が生成されるようにした。これにより、第２方向に対する訂正検査において、再び第１方向への誤り訂正及びその訂正内容の評価を行うための第１方向への基礎データの読み出しを行う必要がなくなる。
【００２４】
なお、少なくとも前記第１検査値あるいは第２検査値は、請求項２に記載の発明のように、その比較を排他的論理和演算によってなすことにより得ることができる。
【００２５】
前記第３標本値は、請求項３に記載の発明のように、第２方向の誤り訂正によって得た訂正値を第１方向に沿って並び替え、その結果を検査演算して得ることができる。また、前記第３標本値は、請求項４に記載の発明のように、第２方向の誤り訂正によって得た訂正値を第１方向に沿って順次取得しつつ検査演算して得ることができる。
【００２６】
前記検査値は、請求項５に記載の発明のように、演算すべきデータが誤り位置以外である時は零を演算し、誤り位置に到達した場合はその位置に対応する訂正値を演算して得ることができる。
【００２７】
請求項６に記載の発明によれば、第１方向に対応した誤り検出符号を備える基礎データに対し、当該誤り検出符号を用いて検査演算が行われて生成された第１標本値と、第１方向とは異なる第２方向に行った誤り訂正によって得られた訂正値を第１方向に沿って検査演算されて生成された第２標本値とが比較されて第２方向の誤り訂正を検査する検査値が生成される。また、基礎データは、前記第１方向に誤り訂正処理がなされたものであり、この基礎データに対して前記第２方向の誤り訂正を検査する検査値が生成される。これにより、第２方向に対する訂正検査において、再び第１方向への誤り訂正及びその訂正内容の評価を行うための第１方向への基礎データの読み出しを行う必要がなくなる。
【００２８】
なお、前記検査値は、請求項７に記載の発明のように、第１標本値と第２標本値とを排他的論理和演算し得ることができる。
前記第２標本値は、請求項８に記載の発明のように、第２方向の誤り訂正によって得た訂正値を第１方向に沿って並び替えし、その結果を検査演算して生成することができる。また、前記第２標本値は、請求項９に記載の発明のように、第２方向の誤り訂正によって得た訂正値を第１方向に沿って順次取得しつつ検査演算を行って生成することができる。
【００２９】
前記検査値は、請求項１０に記載の発明のように、演算すべきデータが誤り位置以外である時は零を演算し、誤り位置に到達した場合はその位置に対応する訂正値を演算して得ることができる。
【００３１】
請求項１１に記載の発明によれば、第１方向に対応した誤り検出符号を備える基礎データに対し、当該誤り検出符号を用いて検査演算を行って生成した第１標本値と、第１方向に誤り訂正によって得られた訂正値に対して検査演算を行って生成した第２標本値とを比較して、第１検査値が生成される。この第１検査値により第１方向に対する訂正検査が行われる。次に、第１方向に誤り訂正がなされた基礎データに対して、第１方向とは異なる第２方向に誤り訂正が行われ、それによって得られた訂正値を第１方向に沿って検査演算を行って生成した第３標本値と第１検査値とを比較して、第２方向の誤り訂正を検査する第２検査値が生成される。これにより、第２方向に対する訂正検査において、再び第１方向への誤り訂正及びその訂正内容の評価を行うための第１方向への基礎データの読み出しを行う必要がなくなる。
【００３２】
なお、少なくとも前記第１比較部あるいは第２比較部は、請求項１２に記載の発明のように、その比較を排他的論理和演算によってなすことにより前記検査値を得ることができる。
【００３３】
前記第３検査演算部は、請求項１３に記載の発明のように、第２方向の誤り訂正によって得られた訂正値を第１方向に沿って並び替えて保管する記憶部と、その結果を検査演算する検査演算部とを備え、その検査演算により前記第３標本値を生成することができる。また、前記第３検査演算部は、請求項１４に記載の発明のように、第２方向の誤り訂正によって得られた訂正値を第１方向に沿って順次取得するデータ呼び出し部と、その呼び出されたデータに対して順次に検査演算を行う検査演算部とを備え、その検査演算により前記第３標本値を生成することができる。
【００３４】
前記検査演算部は、請求項１５に記載の発明のように、演算すべきデータが誤り位置以外である時は零を演算し、誤り位置に到達した場合はその位置に対応する訂正値を演算して前記標本値を得ることができる。
【００３５】
請求項１６に記載の発明によれば、第１方向に対応した誤り検出符号を備える基礎データに対し、当該誤り検出符号を用いて検査演算を行って第１標本値が得られる。次に、第１方向とは異なる第２方向に誤り訂正が行われ、それにより得られた訂正値を第１方向に沿って検査演算して第２標本値を得る。そして、第１標本値と前記第２標本値とを比較して、第２方向の誤り訂正を検査する検査値が得られる。また、基礎データが前記第１方向に誤り訂正処理されたものであり、この基礎データに対して前記第２方向の誤り訂正を検査する検査値が得られる。これにより、第２方向に対する訂正検査において、再び第１方向への誤り訂正及びその訂正内容の評価を行うための第１方向への基礎データの読み出しを行う必要がなくなる。
【００３６】
なお、前記比較部は、請求項１７に記載の発明のように、比較部により、第１標本値と第２標本値とを排他的論理和演算することにより前記第１検査値を得ることができる。
【００３７】
前記第２検査演算部は、請求項１８に記載の発明のように、第２方向の誤り訂正によって得られた訂正値を第１方向に沿って並び替えて保管する記憶部と、その結果を検査演算する検査演算部とを備え、その検査演算により前記第２標本値を生成することができる。また、前記第２検査演算部は、請求項１９に記載の発明のように、第２方向の誤り訂正によって得られた訂正値を第１方向に沿って呼び出すデータ呼び出し部と、その呼び出されたデータに対して順次に検査演算を行う検査演算部とを備え、その検査演算により前記第２標本値を生成することができる。
【００３８】
前記検査演算部は、請求項２０に記載の発明のように、演算すべきデータが誤り位置以外である時は零を演算し、誤り位置に到達した場合はその位置に対応する訂正値を演算して前記標本値を得ることができる。
【００３９】
【発明の実施の形態】
（第一実施形態）
以下、本発明を具体化した第一実施形態を図１〜図８に従って説明する。
【００４０】
図１に示すように、光ディスク制御装置２１は、ＡＴＡＰＩ(AT attachment packet interface)等の所定のインターフェースを介してコンピュータ２２に接続されている。また、光ディスク制御装置２１は、インターフェースを介して光ディスク駆動装置２３に接続されている。
【００４１】
光ディスク駆動装置２３は、記録媒体としてのデジタルビデオディスク（ＤＶＤ：Digital Video Disk）２４を所定の速度で回転駆動するとともに、ＤＶＤ２４に記録されたデータを図示しない光ピックアップにより読み出す。そして、光ディスク駆動装置２３は、読み出しデータを光ディスク制御装置２１に出力する。
【００４２】
光ディスク制御装置２１は、光ディスクコントローラ２５、マイクロプロセッサ２６、記憶装置としてのバッファメモリ２７、インターフェース回路２８、及び、入出力駆動回路２９を備える。
【００４３】
光ディスクコントローラ（以下、単にコントローラという）２５は、光ディスク駆動装置２３への命令送信及びステータス受領と、光ディスクからの読み出しフォーマット解読及びエラー訂正と、光ディスク駆動装置２３とバッファメモリ２７間のデータ転送と、インターフェース回路２８とバッファメモリ２７間のデータ転送等の各処理を行う。
【００４４】
また、コントローラ２５には、光ディスク駆動装置２３から出力される読み出しデータが入出力駆動回路２９を介して入力される。コントローラ２５は、入力されるデータに誤り訂正等の処理を施してバッファメモリ２７に格納する。そして、コントローラ２５は、マイクロプロセッサ２６の命令に基づいて、バッファメモリ２７に格納したデータを、インターフェース回路２８を介して外部機器としてのコンピュータ２２に転送する。
【００４５】
コントローラ２５は、図２に示すＰＩ誤り訂正部３０と、図３に示すＰＯ誤り訂正部４０を含んで構成される。
図２に示すように、ＰＩ誤り訂正部３０は、第１誤り訂正部としての誤り情報生成回路３１、第１誤り訂正部としての誤り訂正回路３２、第１検査演算部としての第１ＣＲＣ演算回路３３、第２検査演算部としての第２ＣＲＣ演算回路３４、第１比較部としてのＥＯＲ回路３５を含む。ＰＩ誤り訂正部３０には、図１７に示すように、入力データとしてＰＩインターリーブが１バイトずつ順次入力される。
【００４６】
誤り情報生成回路３１は、入力データを基にＰＩシンドロームを順次作成する。そして、誤り情報生成回路３１は、１インターリーブのＰＩシンドロームを作成すると、そのＰＩシンドロームを基に誤り情報を作成する。誤り情報は、第１方向としてのＰＩ方向における誤データの位置と誤データに対する補正値を含む。誤り情報生成回路３１は、生成した誤り情報を誤り訂正回路３２に出力する。
【００４７】
誤り訂正回路３２は、１インターリーブ分の入力データを記録するためのレジスタを含む。誤り訂正回路３２は、入力データ（ＰＩインターリーブのデータ）をレジスタに記憶する。誤り訂正回路３２は、誤り情報生成回路３１から入力される誤り情報に基づいて、レジスタに記憶したデータの誤り訂正を行う。誤り訂正回路３２は、誤り訂正後のデータを図１のバッファメモリ２７に格納する。
【００４８】
前記誤り情報生成回路３１及び誤り訂正回路３２は、上記の処理を全ＰＩインターリーブについて繰り返し実行する。これにより、図１６に示す一つのデータブロックに対する誤り訂正処理が実施される。
【００４９】
第１ＣＲＣ演算回路３３には、前記入力データが入力される。第１ＣＲＣ演算回路３３は、図１５の１セクタに含まれるデータ（ＩＤ及び予約領域に格納されたデータ、ユーザデータ及び誤り検出符号ＥＤＣ）を基礎データとし、この基礎データに対して検査演算としてのＣＲＣ演算する。このＣＲＣ演算は、誤り検出符号ＥＤＣを算出するときの演算方法及び演算方向に対応している。
【００５０】
この時、第１ＣＲＣ演算回路３３は、前記誤り情報生成回路３１と同時に演算を行う。このことは、演算時間が長くなるのを防ぐ。そして、第１ＣＲＣ演算回路３３は、図１５の１セクタに含まれる基礎データのＣＲＣ演算を終了すると、その演算結果を第１標本値としてＥＯＲ回路３５に出力する。
【００５１】
第２ＣＲＣ演算回路３４は、誤り情報生成回路３１から入力される誤り情報に含まれる補正値を、誤データの位置に基づいてＣＲＣ演算する。ＣＲＣ演算は、データ入力順と演算するデータの数に重みを持っている。そのため、図１５に示す基礎データのバイト数と同じ数のデータをＣＲＣ演算しなければ正しい演算結果を得ることができない。
【００５２】
従って、第２ＣＲＣ演算回路３４は、演算回数をカウントしている。このカウント値は、各ＰＩインターリーブにおけるデータの入力バイト数と一致している。そして、第２ＣＲＣ演算回路３４は、カウント値が誤りデータの位置と一致しない、即ち、基礎データが正しい場合に、その基礎データに対する補正値を「０」としてＣＲＣ演算を行う。一方、カウント値が誤りデータの位置と一致する場合、第２ＣＲＣ演算回路３４は、その誤りデータの位置に対応する補正値をＣＲＣ演算する。これにより、ＣＲＣ演算におけるデータ数を入力データのバイト数と一致させる。
【００５３】
このようにして、第２ＣＲＣ演算回路３４は、図１５の１セクタに含まれる基礎データのバイト数に対応する回数、補正値のＣＲＣ演算を行う。そして、第２ＣＲＣ演算回路３４は、ＣＲＣ演算の演算結果を第２標本値としてＥＯＲ回路３５に出力する。
【００５４】
ＥＯＲ回路３５は、第１，第２ＣＲＣ演算回路３３，３４から入力される演算結果、即ち第１，第２標本値を比較して第１検査値としての判定データを生成する。詳しくは、ＥＯＲ回路３５は、第１，第２標本値を排他的論理和演算（ＥＯＲ演算）し、その演算結果を判定データ（第１検査値）としてメモリ３６に格納する。
【００５５】
メモリ３６は、図１のバッファメモリ２７の一部領域である。即ち、バッファメモリ２７は、誤り訂正回路３２による誤り訂正後のデータブロックを記憶するための領域と、判定データを記憶するための領域を有する。そして、この判定データのデータ量は、一つのデータブロックのデータ量に比べて非常に少ない。これにより、バッファメモリ２７に対するアクセス時間は極僅かしか増加しない。尚、メモリ３６をバッファメモリ２７と別に備える構成としてもよい。その場合、バッファメモリ２７に対するアクセス時間は増加しない。
【００５６】
このメモリ３６に格納された判定データ（第１検査値）は、ＰＩ方向の誤り訂正を行う前の基礎データをＣＲＣ演算した演算結果（第１標本値）と、ＰＩシンドロームから作成した補正値をＣＲＣ演算した結果（第２標本値）とをＥＯＲ演算した結果である。従って、図１のコントローラ２５は、判定データに基づいて、ＰＩ方向の誤り訂正が正しく行われたか否かを判断する。
【００５７】
図３に示すように、ＰＯ誤り訂正部４０は、第２誤り訂正部としての誤り情報生成回路４１、第２誤り訂正部としての誤り訂正回路４２、第３検査演算部，データ呼び出し部としてのソート回路４３、第３検査演算部としてのＣＲＣ演算回路４４、第２比較部としてのＥＯＲ回路４５を含む。ＰＯ誤り訂正部４０には、図１８に示すように、入力データとしてＰＯインターリーブが１バイトずつ順次入力される。
【００５８】
誤り情報生成回路４１は、入力データを基にＰＯシンドロームを順次作成する。そして、誤り情報生成回路４１は、１インターリーブのＰＯシンドロームを作成すると、そのＰＯシンドロームを基に誤り情報を作成する。誤り情報は、第２方向としてのＰＯ方向における誤データの位置と誤データに対する補正値（訂正値）を含む。誤り情報生成回路４１は、生成した誤り情報を誤り訂正回路４２に出力する。また、誤り情報生成回路４１は、生成した誤り情報をメモリ４６に格納する。
【００５９】
誤り訂正回路４２は、１インターリーブ分の入力データを記録するためのレジスタを含む。誤り訂正回路４２は、入力データ（ＰＯインターリーブのデータ）をレジスタに記憶する。誤り訂正回路４２は、誤り情報生成回路４１から入力される誤り情報に基づいて、レジスタに記憶したデータの誤り訂正を行う。誤り訂正回路４２は、誤り訂正後のデータを図１のバッファメモリ２７に格納する。
【００６０】
前記誤り情報生成回路４１及び誤り訂正回路４２は、上記の処理を全ＰＯインターリーブについて繰り返し実行する。これにより、図１６に示す一つのデータブロックに対する誤り訂正処理が実施される。そして、誤り情報生成回路４１は、メモリ４６に、一つのデータブロックにおけるＰＯ方向の誤り情報を格納する。
【００６１】
ソート回路４３は、メモリ４６に記憶された誤り情報を、誤データの位置をキーとしてＰＩ方向にソートし、その結果を記憶部としてのメモリ４６に格納する。そして、ソート回路４３は、ソート後の誤り情報をメモリ４６から読み出し、読み出した誤り情報をＣＲＣ演算回路４４に出力する。
【００６２】
このメモリ４６に格納された誤り情報は、入力データに誤りがあるときのみである。そして、入力データは、ＰＩ方向に誤りが訂正されている。従って、誤り情報のデータ量は、一つのデータブロックのデータ量に比べて非常に少ない。従って、メモリ４６に対する誤り情報のアクセス時間（誤り情報生成回路４１からの書き込み時間、ソート回路４３のアクセス時間）は、従来のＰＯ誤り訂正後に行うＰＩ誤り訂正に要する時間に比べて短い。
【００６３】
ＣＲＣ演算回路４４は、ソート回路４３から入力される誤り情報に含まれる補正値（訂正値）を、誤データの位置に基づいてＣＲＣ演算する。ＣＲＣ演算は、データ入力順と演算するデータの数に重みを持っている。そのため、図１５に示す基礎データのバイト数と同じ数のデータをＣＲＣ演算しなければ正しい演算結果を得ることができない。
【００６４】
従って、ＣＲＣ演算回路４４は、演算回数をカウントしている。このカウント値は、各ＰＯインターリーブにおけるデータの入力バイト数と一致している。そして、ＣＲＣ演算回路４４は、カウント値が誤りデータの位置と一致しない、即ち、基礎データが正しい場合に、その基礎データに対する補正値を「０」としてＣＲＣ演算を行う。一方、カウント値が誤りデータの位置と一致する場合、ＣＲＣ演算回路４４は、その誤りデータの位置に対応する補正値をＣＲＣ演算する。これにより、ＣＲＣ演算におけるデータ数を入力データのバイト数と一致させる。
【００６５】
ＣＲＣ演算回路４４に入力される誤り情報は、ソート回路４３によりＰＩ方向にソートされている。従って、ＣＲＣ演算回路４４は、ＰＯ方向の誤り訂正処理において、そのＰＯ方向と異なるデータ入力順と同じＰＩ方向に補正値をＣＲＣ演算する。
【００６６】
このようにして、ＣＲＣ演算回路４４は、図１５の１セクタに含まれる基礎データ（ＩＤ及び予約領域に格納されたデータ、ユーザデータ及び誤り検出符号ＥＤＣ）のバイト数に対応する回数、補正値のＣＲＣ演算を行う。そして、ＣＲＣ演算回路４４は、ＣＲＣ演算の演算結果を第３標本値としてＥＯＲ回路４５に出力する。
【００６７】
ＥＯＲ回路４５は、メモリ３６に格納された第１判定データ（第１検査値）を入力する。ＥＯＲ回路４５は、入力した判定データとＣＲＣ演算回路４４から入力される演算結果、即ち第１検査値と第３標本値とを比較して第２検査値としての第２判定データを生成する。詳しくは、ＥＯＲ回路４５は、第１検査値と第３標本値とをＥＯＲ演算し、その演算結果を第２判定データ（第２検査値）としてメモリ４７に格納する。
【００６８】
メモリ３６に格納された第１判定データ（第１検査値）は、上記したように、ＰＩ誤り訂正前の基礎データ（ＩＤ及び予約領域に格納されたデータ、ユーザデータ及び誤り検出符号ＥＤＣ）（図１５参照）のＣＲＣ演算結果（第１標本値）と、ＰＩ誤り訂正における補正値のＣＲＣ演算結果（第２標本値）をＥＯＲ演算したものである。この第１判定データは、ＰＩ誤り訂正後の基礎データのＣＲＣ演算結果、即ちＰＯ誤り訂正前のそれと同じ値となることが判っている。従って、ＥＯＲ回路４５の演算結果である第２判定データ（第２検査値）は、ＰＯ誤り訂正が正確に行われたか否かを判断するためのデータとなる。即ち、図１のコントローラ２５は、メモリ４７に格納された第２判定データに基づいて、ＰＯ誤り訂正が正確に行われたか否かを判断する。
【００６９】
尚、メモリ４６，４７は、メモリ３６と同様に図１のバッファメモリ２７の一部領域である。即ち、バッファメモリ２７は、誤り訂正回路４２による誤り訂正後のデータブロックを記憶するための領域、第１，第２判定データを記憶するための領域（メモリ３６，４７）、誤り情報を記憶するための領域（メモリ４６）を有する。そして、第１，第２判定データと誤り情報のデータ量は、一つのデータブロックのデータ量に比べて非常に少ない。これにより、バッファメモリ２７に対するアクセス時間は極僅かしか増加しない。尚、メモリ３６，４６，４７をバッファメモリ２７と別に備える構成としてもよい。その場合、バッファメモリ２７に対するアクセス時間は増加しない。
【００７０】
次に、上記のようなコントローラ２５に基づく誤り訂正処理動作を図４〜図８に従って説明する。
コントローラ２５は、ステップ１において図１のＤＶＤ２４からデータを読み出す。次に、ステップ２においてコントローラ２５は、読み出したデータに対してＰＩ方向におけるＰＩ誤り訂正処理を実施する。この時、コントローラ２５は、ＰＩ誤り訂正処理に対してＣＲＣチェックを行う。そして、コントローラ２５は、ＰＩ誤り訂正処理を終了すると、ステップ２からステップ３に移る。
【００７１】
ステップ３において、コントローラ２５は、ＰＯ方向におけるＰＯ誤り訂正処理を実施する。このステップ３において、コントローラ２５は、ＰＯ誤り訂正処理に対するＣＲＣチェックを実施する。
【００７２】
コントローラ２５は、ＣＲＣチェック結果に基づいて、誤りが無くなるまでステップ２，３のＰＩ，ＰＯ誤り訂正処理を繰り返し実行する。そして、コントローラ２５は、誤りが無くなると、誤り訂正処理を終了する。
【００７３】
尚、図４において、コントローラ２５は、ＰＯ誤り訂正処理の後に誤り訂正処理を終了するようにしてあるが、図１４に示すように、ステップ２におけるＰＩ誤り訂正処理におけるＣＲＣチェックの結果、誤りが無いと判断した場合に誤り訂正処理を終了するように構成してもよい。
【００７４】
図５に示すステップ１１〜ステップ１７は、図４のＰＩ誤り訂正処理（ステップ２）のサブステップである。即ち、ステップ１１において、コントローラ２５は、図１６のデータブロック２の各セクタ１からＰＩ方向のデータを１バイトずつ順次入力する。次に、ステップ１２において、コントローラ２５は、基礎データのＣＲＣ演算を行う。それと共に、ステップ１３において、コントローラ２５は、一つのＰＩインターリーブ毎にＰＩシンドロームを順次生成する。
【００７５】
コントローラ２５は、ＰＩ方向の１インターリーブのＰＩシンドロームを生成すると、ステップ１３からステップ１４に移る。そのステップ１４において、コントローラ２５は、ＰＩシンドロームから当該インターリーブの誤り情報（誤データの位置及び補正値（訂正値））を算出する。更に、ステップ１５において、コントローラ２５は、算出した誤り情報をＣＲＣ演算し、第１標本値を生成する。そして、コントローラ２５は、ステップ１５からステップ１６に移る。
【００７６】
次に、その誤り情報を基に、ステップ１６において、コントローラ２５は、ステップ１４において算出した誤り情報を基に当該インターリーブの誤り訂正、即ち誤データの書き換え動作を行う。そして、コントローラ２５は、誤り訂正後の当該インターリーブを図１のバッファメモリ２７に格納する。
【００７７】
そして、コントローラ２５はこのような動作を全ＰＩインターリーブについて繰り返し実行し、訂正したＰＩインターリーブを図１のバッファメモリ２７に順次格納する。このＰＩインターリーブの格納を終了すると、コントローラ２５はステップ１６からステップ１７に移る。
【００７８】
これにより、バッファメモリ２７には、ＰＩ誤り訂正後の一つのデータブロック２が格納される。また、コントローラ２５は、一つのデータブロック２における全ての補正値（訂正値）に対してＣＲＣ演算を行った結果、即ち第２標本値を得る。
【００７９】
次に、ステップ１７において、コントローラ２５は、基礎データのＣＲＣ演算結果（ステップ１２）である第１標本値と、補正値のＣＲＣ演算結果（ステップ１５）である第２標本値をＥＯＲ演算し、第１検査値を得る。更に、コントローラ２５は、その演算結果（第１検査値）を図２のメモリ３６に格納する。そして、コントローラ２５は、演算結果の格納を終了すると、当該ＰＩ誤り訂正処理を終了して図６のＰＯ誤り訂正処理を実行する。
【００８０】
図６に示すステップ２１〜ステップ２７は、図４のＰＯ誤り訂正処理（ステップ３）のサブステップである。即ち、図１のコントローラ２５は、ステップ２１において、バッファメモリ２７に格納されたデータブロック２を、図１８に示すように、ＰＯ方向の各インターリーブ毎に順次入力する。ステップ２２において、コントローラ２５は、一つのＰＯインターリーブ毎にＰＯシンドロームを順次作成する。
【００８１】
コントローラ２５は、ＰＯ方向の１インターリーブのＰＯシンドロームを生成すると、ステップ２２からステップ２３に移る。そのステップ２３において、コントローラ２５は、ＰＯシンドロームから当該インターリーブの誤り情報（誤りデータの位置及び補正値（訂正値））を算出する。コントローラ２５は、算出した誤り情報を図３のメモリ４６に格納する。その誤り情報を基に、ステップ２４において、コントローラ２５は、当該インターリーブの誤り訂正、即ち誤データの書き換え動作を行う。そして、コントローラ２５は、誤り訂正後の当該インターリーブを図１のバッファメモリ２７に格納する。
【００８２】
そして、コントローラ２５はこのような動作を全ＰＯインターリーブについて繰り返し実行する。これにより、バッファメモリ２７に格納されたデータブロック２に対するＰＯ方向の誤り訂正処理が実施される。また、図３のメモリ４６には、一つのデータブロック２に対して算出した誤り情報がＰＯ方向に格納される。
【００８３】
次に、コントローラ２５は、ステップ２５において、メモリ４６に格納した誤り情報を、誤データの位置に基づいてＰＩ方向にソートする。このソート処理について詳述すれば、今、図７に示すように、ブロックデータ２が６行６列のマトリックスに形成されている。そして、このマトリックスにおいて、「・」にて示す位置が、ステップ２３において算出された誤り位置である。コントローラ２５は、この誤り位置及びその位置に対する補正値を図８（ａ）に示すように、ＰＯ方向に対応する順番で格納する。
【００８４】
詳述すれば、コントローラ２５は、ＰＯ方向、即ち、図７の座標値が「Ｘ1 」の列に対してＰＯ方向の誤り訂正を行う。この時、コントローラ２５は、誤り位置（Ｘ1 ，Ｙ2 ），（Ｘ1 ，Ｙ6 ）とそれらの位置に対する補正値Ｚ1 ，Ｚ2 を算出する。コントローラ２５は、メモリ４６の第１領域４６ａに誤り位置（Ｘ1 ，Ｙ2 ）と補正値Ｚ1 を、メモリ４６の第２領域４６ｂに誤り位置（Ｘ1 ，Ｙ6 ）と補正値Ｚ2 を格納する。
【００８５】
同様に、コントローラ２５は、座標値「Ｘ2 」〜「Ｘ6 」の各列に対してＰＯ誤り訂正を行い、その時に算出した誤り位置（Ｘ2 ，Ｙ5 ），（Ｘ4 ，Ｙ6 ），（Ｘ5 ，Ｙ3 ），（Ｘ6 ，Ｙ2 ）と補正値Ｚ3 ，Ｚ4 ，Ｚ5 ，Ｚ6 を、メモリ４６の領域４６ｃ，４６ｄ，４６ｅ，４６ｆに格納する。
【００８６】
このように格納された誤り情報（誤り位置及び補正値）に対して、コントローラ２５は、ステップ２５のソート処理を実施する。このソート処理において、コントローラ２５は、処理を行うＰＩ方向に沿って、即ち行を示す座標値Ｙ（Ｙ1 〜Ｙ6 ）をキーとしてソートを行う。その結果を図８（ｂ）に示す。このようにして、コントローラ２５は、誤り情報（誤り位置及び補正値）を、ＰＩ方向に沿って並べる。全誤り情報のソートを終了すると、コントローラ２５は、ステップ２５からステップ２６に移る。
【００８７】
ステップ２６において、コントローラ２５は、補正値（訂正値）を順次ＣＲＣ演算し、第３標本値を得る。このとき、補正値はＰＩ方向にソートされているため、コントローラ２５は、図１５の基礎データの入力方向に沿って補正値をＣＲＣ演算した演算結果（第３標本値）を得る。そして、コントローラ２５は、ステップ２６からステップ２７に移る。
【００８８】
ステップ２７において、コントローラ２５は、メモリ３６から図５のステップ１７における演算結果（第１検査値）を入力する。そして、コントローラ２５は、補正値のＣＲＣ演算結果（ステップ２６）である第３標本値と第１検査値をＥＯＲ演算し、第２検査値を得る。
【００８９】
メモリ３６から入力した演算結果（第１検査値）は、図５のＰＩ誤り訂正処理におけるＣＲＣチェックの結果である。そして、このＣＲＣチェックの結果は、ＰＩ誤り訂正後のデータブロックにおける基礎データをＣＲＣ演算した結果に対応している。
【００９０】
従って、コントローラ２５は、メモリ３６から入力した演算結果である第１検査値と、補正値のＣＲＣ演算結果である第３標本値をＥＯＲ演算することにより、当該ＰＯ誤り訂正処理におけるＣＲＣチェックの結果である第２検査値を得る。このことは、ＰＯ誤り訂正処理におけるＣＲＣチェックを行うために実施するＰＩ誤り訂正処理を不要とする。これにより、誤り訂正処理に要する時間は短くなる。
【００９１】
以上記述したように、第一実施形態によれば、以下の効果を奏する。
（１）ＰＯ誤り訂正部４０の誤り情報生成回路４１は、算出した誤データの位置及び補正値をメモリ４６に格納する。ソート回路４３は、メモリ４６に格納された補正値を誤データの位置に基づいて基礎データの読み出し方向にソートしＣＲＣ演算回路４４に出力するようにした。その結果、ＣＲＣ演算回路４４は、補正値を基礎データの入力順と同じＰＩ方向にＣＲＣ演算する。この演算方向は、誤り検査符号ＥＤＣを算出した時の基礎データの読み出し方向と一致しているため、ＰＯ誤り訂正後にＣＲＣチェックを行うことができる。そして、ＥＯＲ回路４５は、ＣＲＣ演算の演算結果（第３標本値）とＰＩ誤り訂正においてＣＲＣチェックを行った結果である第１判定データ（第１検査値）を比較してＰＯ誤り訂正におけるＣＲＣチェックのための第２判定データ（第２検査値）をメモリ４７に格納するようにした。そのため、従来のように、ＰＯ誤り訂正後にＣＲＣチェックのためにＰＩ誤り訂正を行う必要が無いので、その分処理時間を短縮することができる。
【００９２】
（２）ＰＩ誤り訂正部３０において、誤り訂正前の基礎データを演算する第１ＣＲＣ演算回路３３は、誤り情報生成回路３１と同時に動作するようにした。これにより、ＰＩ誤り訂正処理における演算時間が長くなるのを防ぐことができる。
【００９３】
（３）メモリ３６に格納された第１判定データは、ＰＩ誤り訂正部３０におけるＰＩ方向の誤り訂正に対するＣＲＣチェックの結果である。そして、第１判定データを用いてＰＯ誤り訂正部４０におけるＰＯ方向の誤り訂正に対するＣＲＣチェックを行うようにした。そのため、別にＰＯ誤り訂正のためのデータを算出する必要がないので、ＰＩ誤り訂正部３０の回路規模を増加させることなくＰＯ方向の誤り訂正に対する誤り検出を行うことができる。
【００９４】
（第二実施形態）
以下、本発明を具体化した第二実施形態を図９及び図１０に従って説明する。尚、説明の便宜上、第一実施形態と同様の構成については同一の符号を付してその説明を一部省略する。
【００９５】
本実施の形態のコントローラ２５は、図９に示すＰＩ誤り訂正部５０と、図３に示すＰＯ誤り訂正部４０を含んで構成される。
図９に示すＰＩ誤り訂正部５０は、誤り情報生成回路３１、誤り訂正回路３２、第１ＣＲＣ演算回路３３、第２ＣＲＣ演算回路３４、第３ＣＲＣ演算回路５１、ＥＯＲ回路３５を含む。
【００９６】
ＰＩ誤り訂正部５０には、図１７に示すように、入力データとしてＰＩインターリーブが１バイトずつ順次入力される。
誤り情報生成回路３１は、入力データを基にＰＩシンドロームを順次作成する。そして、誤り情報生成回路３１は、１インターリーブのＰＩシンドロームを作成すると、そのＰＩシンドロームを基に誤り情報を作成する。誤り情報は、ＰＩ方向における誤データの位置と誤データに対する補正値を含む。誤り情報生成回路３１は、生成した誤り情報を誤り訂正回路３２に出力する。
【００９７】
誤り訂正回路３２は、１インターリーブ分の入力データを記録するためのレジスタを含む。誤り訂正回路３２は、入力データ（ＰＩインターリーブのデータ）をレジスタに記憶する。誤り訂正回路３２は、誤り情報生成回路３１から入力される誤り情報に基づいて、レジスタに記憶したデータの誤り訂正を行う。誤り訂正回路３２は、誤り訂正後のデータを図１のバッファメモリ２７に格納する。
【００９８】
更に、誤り訂正回路３２は、誤り訂正後の１インターリーブ分のデータを第３ＣＲＣ演算回路５１に出力する。第３ＣＲＣ演算回路５１は、入力される誤り訂正後のデータのうち、基礎データ（ＩＤ及び予約領域に格納されたデータ、ユーザデータ及び誤り検出符号ＥＤＣ）をＣＲＣ演算し、その演算結果を第１判定データ（第１の検査値，第１標本値）としてメモリ５２に格納する。
【００９９】
尚、メモリ５２は、第一実施形態のメモリ３６等と同様に図１のバッファメモリ２７の一部領域である。即ち、バッファメモリ２７は、誤り訂正回路３２による誤り訂正後のデータブロックを記憶するための領域、演算結果を記憶するための領域（メモリ５２）を有する。そして、第３ＣＲＣ演算回路５１の演算結果のデータ量は、一つのデータブロックのデータ量に比べて非常に少ない。これにより、バッファメモリ２７に対するアクセス時間は極僅かしか増加しない。
【０１００】
前記誤り情報生成回路３１及び誤り訂正回路３２は、上記の処理を全ＰＩインターリーブについて繰り返し実行する。これにより、図１６に示す一つのデータブロックに対する誤り訂正処理が実施される。
【０１０１】
第３ＣＲＣ演算回路５１は、前記誤り情報生成回路３１，誤り訂正回路３２と並列に動作し、ＣＲＣ演算を全ＰＩインターリーブについて繰り返し実行する。これにより、メモリ５２には、誤り訂正後の一つのデータブロックにおけるＣＲＣ演算結果が第１標本値として記録される。この第３ＣＲＣ演算回路５１の動作は、ＰＩ方向の誤り訂正処理と同時に行われることから、誤り訂正後のデータに対するＣＲＣ演算は、ＰＩ誤り訂正処理に要する時間を増加させない。
【０１０２】
そして、図３のＰＯ誤り訂正回路４０を構成するＥＯＲ回路４５は、第一実施形態のメモリ３６に代えて、メモリ５２に格納された演算結果（第１標本値）を入力する。ＥＯＲ回路４５は、入力した演算結果とＣＲＣ演算回路４４から入力される演算結果（第２標本値）とをＥＯＲ演算し、その演算結果を第２判定データ（第２検査値）としてメモリ４７に格納する。
【０１０３】
メモリ５２に格納された演算結果は、上記したように、ＰＩ誤り訂正後の基礎データ（図１５参照）のＣＲＣ演算結果である。従って、ＥＯＲ回路４５の演算結果である第２判定データ（検査値）は、ＰＯ誤り訂正が正確に行われたか否かを判断するためのデータとなる。即ち、図１のコントローラ２５は、メモリ４７に格納された第２判定データに基づいて、ＰＯ誤り訂正が正確に行われたか否かを判断する。
【０１０４】
次に、上記のようなコントローラ２５に基づく誤り訂正処理動作を図１０に従って説明する。
図１０に示すステップ３１〜ステップ３８は、図４のＰＩ誤り訂正処理（ステップ２）のサブステップである。尚、コントローラ２５は、ステップ３１〜ステップ３６において、図５のステップ１１〜ステップ１６と同じ処理を行い、ステップ３８において図５のステップ１７と同じ処理を行う。
【０１０５】
即ち、ステップ３１において、コントローラ２５は、図１６のデータブロック２の各セクタ１からＰＩ方向のデータを１バイトずつ順次入力する。次に、ステップ３２において、コントローラ２５は、基礎データのＣＲＣ演算を行う。それと共に、ステップ３３において、コントローラ２５は、一つのＰＩインターリーブ毎にＰＩシンドロームを順次生成する。
【０１０６】
コントローラ２５は、ＰＩ方向の１インターリーブのＰＩシンドロームを生成すると、ステップ３３からステップ３４に移る。そのステップ３４において、コントローラ２５は、ＰＩシンドロームから当該インターリーブの誤り情報（誤データの位置及び補正値（訂正値））を算出する。更に、ステップ３５において、コントローラ２５は、算出した誤り情報をＣＲＣ演算する。
【０１０７】
次に、その誤り情報を基に、ステップ３６において、コントローラ２５は、ステップ３４において算出した誤り情報を基に当該インターリーブの誤り訂正、即ち誤データの書き換え動作を行う。そして、コントローラ２５は、誤り訂正後の当該インターリーブを図１のバッファメモリ２７に格納する。このＰＩインターリーブの格納を終了すると、コントローラ２５はステップ３６からステップ３７に移る。
【０１０８】
ステップ３７において、コントローラ２５は、誤り訂正後のＰＩインターリーブに含まれる基礎データをＣＲＣ演算した演算結果を順次作成する。そして、コントローラ２５は、その演算結果を図９のメモリ５２に格納する。
【０１０９】
そして、コントローラ２５はこのような動作を全ＰＩインターリーブについて繰り返し実行する。これにより、図１のバッファメモリ２７には、ＰＩ誤り訂正後の一つのデータブロック２が格納される。また、コントローラ２５は、一つのデータブロック２における全ての補正値をＣＲＣ演算した結果を得る。一つのデータブロックに対する誤り訂正及びＣＲＣ演算を終了すると、コントローラ２５はステップ３７からステップ３８に移る。
【０１１０】
次に、ステップ３８において、コントローラ２５は、基礎データのＣＲＣ演算結果（ステップ３２）と補正値のＣＲＣ演算結果（ステップ３５）をＥＯＲ演算し、第１標本値を得る。更に、コントローラ２５は、その演算結果（第１標本値）を図２のメモリ３６に格納する。そして、コントローラ２５は、演算結果の格納を終了すると、当該ＰＩ誤り訂正処理を終了して図６のＰＯ誤り訂正処理を実行する。
【０１１１】
図６のステップ２７において、コントローラ２５は、メモリ３６に代えて図９のメモリ５２から図１０のステップ３７における演算結果を入力する。そして、コントローラ２５は、補正値のＣＲＣ演算結果（ステップ２６）と入力した演算結果をＥＯＲ演算する。
【０１１２】
メモリ３６から入力した演算結果は、図５のＰＩ誤り訂正処理におけるＣＲＣチェックの結果である。そして、このＣＲＣチェックの結果は、ＰＩ誤り訂正後のデータブロックにおける基礎データをＣＲＣ演算した結果に対応している。
【０１１３】
従って、コントローラ２５は、メモリ３６から入力した演算結果（第１標本値）と補正値のＣＲＣ演算結果（第２標本値）をＥＯＲ演算することにより、当該ＰＯ誤り訂正処理におけるＣＲＣチェックの結果である検査値を得る。このことは、ＰＯ誤り訂正処理におけるＣＲＣチェックを行うために実施するＰＩ誤り訂正処理を不要とする。これにより、誤り訂正処理に要する時間は短くなる。
【０１１４】
以上記述したように、第二実施形態によれば、以下の効果を奏する。
（４）前記第一実施形態の（１），（２）と同様の効果を奏する。
（５）ＰＩ誤り訂正部５０のＣＲＣ演算回路５１は、誤り訂正回路３２にて誤り訂正された後の基礎データをＣＲＣ演算した第１判定データをメモリ５２に格納するようにした。これにより、ＰＯ誤り訂正部４０は、実際に誤り訂正されたデータに基づいてそのＰＯ誤り訂正に対するＣＲＣ演算を行うことができる。
【０１１５】
（第三実施形態）
以下、本発明を具体化した第三実施形態を図１１〜図１３に従って説明する。尚、説明の便宜上、第一，第二実施形態と同様の構成については同一の符号を付してその説明を一部省略する。
【０１１６】
本実施形態のコントローラ２５は、図２に示すＰＩ誤り訂正部３０と、図１１に示すＰＯ誤り訂正部６０を含んで構成される。
図１１に示すように、ＰＯ誤り訂正部６０は、誤り訂正部としての誤り情報生成回路４１、誤り訂正部としての誤り訂正回路４２、第２検査演算部としてのＣＲＣ演算回路６１、比較部としてのＥＯＲ回路４５を含む。ＰＯ誤り訂正部６０には、図１８に示すように、入力データとしてＰＯインターリーブが１バイトずつ順次入力される。
【０１１７】
誤り情報生成回路４１は、入力データを基にＰＯシンドロームを順次作成する。そして、誤り情報生成回路４１は、１インターリーブのＰＯシンドロームを作成すると、そのＰＯシンドロームを基に誤り情報を作成する。誤り情報は、ＰＯ方向における誤データの位置と誤データに対する補正値を含む。誤り情報生成回路４１は、生成した誤り情報を誤り訂正回路４２に出力する。また、誤り情報生成回路４１は、生成した誤り情報をメモリ４６に格納する。
【０１１８】
誤り訂正回路４２は、１インターリーブ分の入力データを記録するためのレジスタを含む。誤り訂正回路４２は、入力データ（ＰＯインターリーブのデータ）をレジスタに記憶する。誤り訂正回路４２は、誤り情報生成回路４１から入力される誤り情報に基づいて、レジスタに記憶したデータの誤り訂正を行う。誤り訂正回路４２は、誤り訂正後のデータを図１のバッファメモリ２７に格納する。
【０１１９】
前記誤り情報生成回路４１及び誤り訂正回路４２は、上記の処理を全ＰＯインターリーブについて繰り返し実行する。これにより、図１６に示す一つのデータブロックに対する誤り訂正処理が実施される。そして、誤り情報生成回路４１は、メモリ４６に、一つのデータブロックにおけるＰＯ方向の誤り情報を格納する。
【０１２０】
ＣＲＣ演算回路６１は、メモリ４６に記憶された誤り情報に含まれる誤データの位置をキーとして、その位置に対応する補正値をＰＩ方向に沿って順次読み出す。ＣＲＣ演算回路６１は、第一実施形態のＣＲＣ演算回路４４（図３参照）と同様に、読み出した補正値を、誤りデータの位置に基づいてＣＲＣ演算し、その演算結果をＥＯＲ回路４５に出力する。即ち、ＣＲＣ演算回路６１は、誤り情報をソートしつつ、データ入力順と同じＰＩ方向に補正値のＣＲＣ演算を実施し、第２標本値を得る。これにより、メモリ４６に誤り情報が格納されてから補正値に対するＣＲＣ演算処理を終了するまでの時間が、第一，第二実施形態のそれに比べて短くなる。
【０１２１】
ＥＯＲ回路４５は、メモリ３６に格納された演算結果（第１標本値）を入力する。ＥＯＲ回路４５は、入力した判定データとＣＲＣ演算回路６１から入力される演算結果（第２標本値）とをＥＯＲ演算し、その演算結果を第２判定データ（検査値）としてメモリ４７に格納する。
【０１２２】
メモリ３６に格納された演算結果は、図２に示す第２ＣＲＣ演算回路３４により格納されたデータであり、ＰＩ誤り訂正後のデータブロックにおける基礎データをＣＲＣ演算した結果に対応した第１標本値である。従って、ＥＯＲ回路４５の演算結果である第２判定データ（検査値）は、ＰＯ誤り訂正が正確に行われたか否かを判断するためのデータとなる。即ち、図１のコントローラ２５は、メモリ４７に格納された第２判定データに基づいて、ＰＯ誤り訂正が正確に行われたか否かを判断する。
【０１２３】
次に、上記のようなコントローラ２５に基づくＰＯ誤り訂正動作を、図１２に従って説明する。
図１２に示すステップ４１〜ステップ４６は、図４のＰＯ誤り訂正処理（ステップ３）のサブステップである。尚、コントローラ２５は、ステップ４１〜ステップ４４において図６のステップ２１〜ステップ２４と同じ処理を、ステップ４６において図６のステップ２７と同じ処理を行う。
【０１２４】
即ち、図１のコントローラ２５は、ステップ４１において、バッファメモリ２７に格納されたデータブロック２を、図１８に示すように、ＰＯ方向の各インターリーブ毎に順次入力する。ステップ４２において、コントローラ２５は、一つのＰＯインターリーブ毎にＰＯシンドロームを順次作成する。
【０１２５】
コントローラ２５は、ＰＯ方向の１インターリーブのＰＯシンドロームを生成すると、ステップ４２からステップ４３に移る。そのステップ４３において、コントローラ２５は、ＰＯシンドロームから当該インターリーブの誤り情報（誤りデータの位置及び補正値（訂正値））を算出する。コントローラ２５は、算出した誤り情報を図１１のメモリ４６に格納する。その誤り情報を基に、ステップ４４において、コントローラ２５は、当該インターリーブの誤り訂正、即ち誤データの書き換え動作を行う。そして、コントローラ２５は、誤り訂正後の当該インターリーブを図１のバッファメモリ２７に格納する。
【０１２６】
そして、コントローラ２５はこのような動作を全ＰＯインターリーブについて繰り返し実行する。これにより、バッファメモリ２７に格納されたデータブロック２に対するＰＯ方向の誤り訂正処理が実施される。また、図１１のメモリ４６には、一つのデータブロック２に対して算出した誤り情報がＰＯ方向に格納される。
【０１２７】
次に、コントローラ２５は、ステップ４５において、メモリ４６に格納した誤り情報に含まれる誤データの位置に基づいて、補正値をＰＩ方向にソートしつつＣＲＣ演算する。これにより、コントローラ２５は、ＰＩ方向、即ち図１５の基礎データの入力方向に沿って補正値をＣＲＣ演算した演算結果である第２標本値を得る。そして、コントローラ２５は、ステップ４５からステップ４６に移る。
【０１２８】
ステップ４６において、コントローラ２５は、メモリ３６から上記演算結果（第１標本値）を入力する。そして、コントローラ２５は、補正値のＣＲＣ演算結果（ステップ４５）であり第２標本値と、入力した演算結果である第１標本値をＥＯＲ演算し、検査値を得る。
【０１２９】
メモリ３６から入力した演算結果は、図５のＰＩ誤り訂正処理におけるＣＲＣチェックの結果である。そして、このＣＲＣチェックの結果は、ＰＩ誤り訂正後のデータブロックにおける基礎データをＣＲＣ演算した結果に対応している。
【０１３０】
従って、コントローラ２５は、メモリ３６から入力した演算結果（第１標本値）と補正値のＣＲＣ演算結果（第２標本値）をＥＯＲ演算することにより、当該ＰＯ誤り訂正処理におけるＣＲＣチェックの結果である検査値を得る。このことは、ＰＯ誤り訂正処理におけるＣＲＣチェックを行うために実施するＰＩ誤り訂正処理を不要とする。これにより、誤り訂正処理に要する時間は短くなる。
【０１３１】
図１３に示すステップ５１〜ステップ６０は、図１２のステップ４５における補正値をＣＲＣ演算する演算処理のサブステップである。即ち、コントローラ２５は、ステップ５１において、演算位置及びセクタカウントを初期化する。この演算位置は、図１５の基礎データを読み出す読み出し位置に対応している。
【０１３２】
次に、コントローラ２５は、ステップ５２において、誤り位置及び補正値を入力する。そして、ステップ５３において、コントローラ２５は、誤り位置と演算位置が一致しているか否かを判断する。両位置が一致していない場合、即ちその演算位置に対応する基礎データが誤っていない場合、コントローラ２５はステップ５３からステップ５４へ移る。そのステップ５４において、コントローラ２５は、その演算位置における補正値を「０」（ゼロ）とし、その「０」と以前の演算結果をＣＲＣ演算する。その演算後、コントローラ２５は、ステップ５４からステップ５６へ移る。
【０１３３】
一方、ステップ５３において、両位置が一致している、即ちその演算位置に対応する基礎データが誤っている場合、コントローラ２５はステップ５３からステップ５５へ移る。そのステップ５５において、コントローラ２５は、その誤り位置に対する補正値と以前の演算結果をＣＲＣ演算する。その演算後、コントローラ２５は、ステップ５５からステップ５６へ移る。
【０１３４】
ステップ５６において、コントローラ２５は、演算位置のうち、ＰＩ方向の座標値Ｘをインクリメント（＋１）する。ステップ５７において、コントローラ２５は、演算位置の座標値Ｘと１行のバイト数とを比較することにより、１行分のデータに対して発生した補正値のＣＲＣ演算を終了したか否かを判断する。コントローラ２５は、１行分のデータに対する補正値のＣＲＣ演算を終了していない場合、ステップ５２に移る。
【０１３５】
従って、コントローラ２５は、ステップ５２〜５７の処理を繰り返し実行する。これにより、コントローラ２５は、補正値のＣＲＣ演算における演算の順序と演算位置を、基礎データをＣＲＣ演算する時のそれらと同じにする。即ち、コントローラ２５は、図１１のメモリ４６にＰＯ方向に蓄積された誤り情報に含まれる補正値を、行方向、即ちＰＩ方向にＣＲＣ演算する。
【０１３６】
ステップ５７において、コントローラ２５は、１行分のデータに対する補正値のＣＲＣ演算を終了すると、ステップ５７からステップ５８に移る。そのステップ５８において、コントローラ２５は、演算位置のうち、ＰＯ方向の座標値Ｙをインクリメント（＋１）する。
【０１３７】
次に、ステップ５９において、コントローラ２５は、演算位置の座標値Ｙと１セクタの行数とを比較することにより、１セクタ分のデータに対して発生した補正値のＣＲＣ演算を終了したか否かを判断する。コントローラ２５は、１セクタ分のデータに対する補正値のＣＲＣ演算を終了していない場合、ステップ５２に移る。従って、コントローラ２５は、ステップ５２〜ステップ５９を繰り返し実行し、１つのセクタにおける補正値のＣＲＣ演算を実行する。
【０１３８】
コントローラ２５は、１セクタ分のデータの処理を終了すると、セクタカウントをインクリメントする。そして、コントローラ２５はステップ５９からステップ６０に移る。
【０１３９】
ステップ６０において、コントローラ２５は、セクタカウントの値と１ブロック内のセクタ数を比較することにより、１ブロック分のデータに対する処理を終了したか否かを判断する。コントローラ２５は、１ブロック分のセクタの処理を終了していない場合、ステップ５２に移る。そして、コントローラ２５は、１ブロック分のデータの処理を終了すると、当該演算処理を終了する。
【０１４０】
以上記述したように、第三実施形態によれば、以下の効果を奏する。
（１）上記第一形態と同じ効果を奏する。
（２）コントローラ２５は、ＰＯ方向のインタリーブに基づいて演算されメモリ４６に格納された誤り情報（誤り位置及び補正値）を、ＰＩ方向にＣＲＣ演算する。これにより、コントローラ２５は、誤り情報をＰＩ方向にソートする第一，第二実施形態に比べて、ＣＲＣ演算に要する時間を短くすることができる。
【０１４１】
尚、本発明は前記実施の形態の他、以下の態様で実施してもよい。
○上記各実施形態において、誤り検出符号ＥＤＣとして、ＣＲＣデータ（巡回符号：cyclic code ）に代えて、ハミング符号(Hamming code)等を用いて実施してもよい。
【０１４２】
【発明の効果】
以上詳述したように、請求項１乃至２１に記載の発明によれば、誤り検査符号を演算する際のデータの入力方向と異なる方向に誤り訂正を行う誤り訂正処理の結果をチェックする訂正検査処理において、再びデータの入力方向への誤り訂正及びその訂正内容の評価を行うための読み出しを行う必要がなくなり、訂正検査処理に要する時間を短縮することができる。
【図面の簡単な説明】
【図１】  光ディスク制御装置を示すブロック図。
【図２】  ＰＩ誤り訂正部を示すブロック図。
【図３】  ＰＯ誤り訂正部を示すブロック図。
【図４】  誤り訂正動作を示すフローチャート。
【図５】  ＰＩ誤り訂正動作を示すフローチャート。
【図６】  ＰＯ誤り訂正動作を示すフローチャート。
【図７】  誤り位置・補正値を示すマトリックス図。
【図８】  （ａ）（ｂ）は、ソート処理を示す説明図。
【図９】  第二実施形態のＰＩ誤り訂正部を示すブロック図。
【図１０】  第二実施形態のＰＩ誤り訂正動作を示すフローチャート。
【図１１】  第三実施形態のＰＯ誤り訂正部を示すブロック図。
【図１２】  第三実施形態のＰＯ誤り訂正動作を示すフローチャート。
【図１３】  第三実施形態のＰＯ誤り訂正動作におけるＣＲＣ演算処理を示すフローチャート。
【図１４】  別の誤り訂正動作を示すフローチャート。
【図１５】  ＤＶＤ−ＲＯＭのセクタの内容を示す説明図。
【図１６】  データブロックを示す説明図。
【図１７】  ＰＩインターリーブを示す説明図。
【図１８】  ＰＯインターリーブを示す説明図。
【図１９】  ＰＯ−ＥＣＣ部を展開・挿入したブロックを示す説明図。
【符号の説明】
３１  第１誤り訂正部としての誤り情報生成回路
３２  第１誤り訂正部としての誤り訂正回路
３３  第１検査演算部としての第１ＣＲＣ演算回路
３４  第２検査演算部としての第２ＣＲＣ演算回路
３５  第１比較部としてのＥＯＲ回路
４１  第２誤り訂正部としての誤り情報生成回路
４２  第２誤り訂正部としての誤り訂正回路
４３  第３検査演算部，データ呼び出し部としてのソート回路
４４  第３検査演算部としてのＣＲＣ演算回路
４５  第２比較部としてのＥＯＲ回路
６１  第２検査演算部としてのＣＲＣ演算回路
【図１】
0003945602.tif 000002
【図２】
0003945602.tif 000003
【図３】
0003945602.tif 000004
【図４】
0003945602.tif 000005
【図５】
0003945602.tif 000006
【図６】
0003945602.tif 000007
【図７】
0003945602.tif 000008
【図８】
0003945602.tif 000009
【図９】
0003945602.tif 000010
【図１０】
0003945602.tif 000011
【図１１】
0003945602.tif 000012
【図１２】
0003945602.tif 000013
【図１３】
0003945602.tif 000014
【図１４】
0003945602.tif 000015
【図１５】
0003945602.tif 000016
【図１６】
0003945602.tif 000017
【図１７】
0003945602.tif 000018
【図１８】
0003945602.tif 000019
【図１９】
0003945602.tif 000020