(57)【要約】【課題】  所定の順序で処理することでデ・スクランブル可能なデータに対し、所定の順序とは異なる順序で処理してもデ・スクランブルを行なうことができる。【解決手段】  デ・スクランブル回路１８は、符号化順序番号Ｑが対応付けられたバイトデータと順序番号Ｑに対応したスクランブル値とから生成されたスクランブル済データが、処理順序番号Ｐの順で入力される。デ・スクランブル回路１８は、入力データの符号化順序番号Ｑのスクランブル値を生成するスクランブル値生成部４０を有し、スクランブル値と入力バイトデータとからデ・スクランブル済データを算する。符号化順序番号Ｑは、符号列の各バイトデータに対して対応付けられている。符号化順序番号Ｑに対応したスクランブル値は、符号列の符号化順序番号Ｑのそれぞれに対応したバイトデータに対して所定の演算を施すことで得られる値である。【選択図】  図１５
2006155836.tif 000002
【特許請求の範囲】
【請求項１】
第１の順序番号が対応付けられたスクランブル前データと前記第１の順序番号に対応したスクランブル値とから生成されたスクランブル済データを当該スクランブル値によりデ・スクランブルしてデ・スクランブル済データを生成するデ・スクランブル回路であって、
前記スクランブル済データは、前記第１の順序番号が対応付けられたものであり、
前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、
前記第１の順序番号とは異なる第２の順序番号の順で入力される前記スクランブル済データの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、
前記スクランブル済データとその前記第１の順序番号に対応する前記スクランブル値とから前記デ・スクランブル済データを算出する符号列演算部とを有するデ・スクランブル回路。
【請求項２】
前記第１の順序番号は、複数のスクランブル済データからなるスクランブル済符号列に対して一の順序を示すものであって、
前記第２の順序番号は、複数の前記スクランブル済符号列からなる記録ブロックに対して一の順序を示すものである
ことを特徴とする請求項１記載のデ・スクランブル回路。
【請求項３】
前記第２の順序番号は、前記第１の順序番号が所定の変換規則に従って変換された順序番号である
ことを特徴とする請求項２記載のデ・スクランブル回路。
【請求項４】
前記記録ブロックは行数Ｘ及び列数Ｙ（Ｘ、Ｙは自然数）からなる行列であって、列方向に前記第１の順序番号が対応づけられ、行方向に第２の順序番号が対応付けられている
ことを特徴とする請求項２記載のデ・スクランブル回路。
【請求項５】
前記スクランブル値生成部は、１回のシフト演算により前記第１の順序番号に対応したスクランブル値を出力する基準シフト・レジスタの所定回数分のシフト演算と同一の演算を、１回のシフト演算で実行する変換用シフト・レジスタを有する
ことを特徴とする請求項４記載のデ・スクランブル回路。
【請求項６】
前記記録ブロックの行数Ｘ及び列数Ｙは２のべき乗からなり、
前記所定回数は、Ｘの約数のうち２のべき乗となる値のいずれかである
ことを特徴とする請求項５記載のデ・スクランブル回路。
【請求項７】
前記スクランブル値生成部は、
１回のシフト動作により前記基準シフト・レジスタと同一の演算を実行する更新用シフト・レジスタと、
前記スクランブル済データの前記第１の順序番号に対応するシフト・レジスタ値を出力させる制御部とを有し、
前記変換用シフト・レジスタは、１回のシフト演算により、前記基準シフト・レジスタがＸ回分シフト演算した演算と同一の演算を実行し、
前記制御部は、入力されるスクランブル済データに対応付けられる前記第２の順序番号に基づき前記更新用シフト・レジスタ及び前記変換用シフト・レジスタのシフト演算のタイミングを制御すると共に演算結果を選択出力させる
ことを特徴とする請求項５記載のデ・スクランブル回路。
【請求項８】
前記記録ブロックは、２つの前記スクランブル済符号列であって奇数列からなる前記スクランブル済符号列セットを有し、
前記スクランブル値生成部は、
第１及び第２の変換用シフト・レジスタと、
１回のシフト動作により前記基準シフト・レジスタと同一の演算を実行する更新用シフト・レジスタと、
前記スクランブル済データの前記第１の順序番号に対応するシフト・レジスタ値を出力させる制御部とを有し、
前記第１の変換用シフト・レジスタは、１回のシフト演算により、前記基準シフト・レジスタが（１／２）Ｘ回分シフト演算した演算と同一の演算を実行し、
前記第２の変換用シフト・レジスタは、１回のシフト演算により、前記基準シフト・レジスタがＸ回分シフト演算した演算と同一の演算を実行し、
前記制御部は、入力されるスクランブル済データに対応付けられる前記第２の順序番号に基づき各シフト・レジスタのシフト演算のタイミングを制御すると共に各シフト・レジスタの演算結果を選択出力させる
ことを特徴とする請求項５記載のデ・スクランブル回路。
【請求項９】
前記制御部は、同一の行において、一のスクランブル済符号列から次のスクランブル済符号列のスクランブル済データを入力するタイミングでは前記第１の変換用シフト・レジスタによる演算結果を選択出力させ、同一の行において、同一のスクランブル済符号列のスクランブル済データを入力するタイミングでは前記第２の変換用シフト・レジスタによる演算結果を選択出力させ、一の行から次の行のスクランブル済データを入力するタイミングでは前記更新用シフト・レジスタの演算結果を選択出力させる
ことを特徴とする請求項８記載のデ・スクランブル回路。
【請求項１０】
前記制御部は、前記入力されるスクランブル済データの前記記録ブロックにおける列数及び行数をカウントし、前記カウント結果に基づき前記シフト動作を制御すると共に前記演算値を選択出力させる
ことを特徴とする請求項８記載のデ・スクランブル回路。
【請求項１１】
第１の順序番号が対応付けられたスクランブル前データと前記第１の順序番号に対応したスクランブル値とから生成されたスクランブル済データを当該スクランブル値によりデ・スクランブルしてデ・スクランブル済データを生成するデ・スクランブル方法であって、
前記スクランブル済データは、前記第１の順序番号が対応付けられたものであり、
前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、
前記第１の順序番号とは異なる第２の順序番号の順で入力される前記スクランブル済データの前記第１の順序番号に対応するスクランブル値を前記初期値から生成し、
前記スクランブル済データとその前記第１の順序番号に対応する前記スクランブル値とから前記デ・スクランブル済データを算出するデ・スクランブル方法。
【請求項１２】
第１の順序番号が対応付けられたスクランブル前データと、前記第１の順序番号に対応したスクランブル値とからスクランブルされ、当該スクランブル値によりデ・スクランブルされるスクランブル済データを生成するスクランブル回路であって、
前記スクランブル前データは、前記第１の順序番号が対応付けられたものであり、
前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、
前記第１の順序番号とは異なる第２の順序番号の順で入力される前記スクランブル前データの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、
前記スクランブル前データとその前記第１の順序番号に対応する前記スクランブル値とから前記スクランブル済データを算出する符号列演算部とを有するスクランブル回路。
【請求項１３】
第１の順序番号が対応付けられたスクランブル前データと前記第１の順序番号に対応したスクランブル値とから生成されたスクランブル済データを前記第１の順序番号とは異なる第２の順序番号の順に読み出す読み出し部と、
前記スクランブル済データと、当該スクランブル済データをスクランブルしたスクランブル値とからデ・スクランブル済データを生成するデ・スクランブル部とを有し、
前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、
前記デ・スクランブル部は、
前記スクランブル済データの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、
前記スクランブル済データとその前記第１の順序番号に対応する前記スクランブル値とから前記デ・スクランブル済データを算出する符号列演算部とを有するディスク装置。
【請求項１４】
第１の順序番号が対応付けられたスクランブル前データと、前記第１の順序番号に対応したスクランブル値とからスクランブルされ、当該スクランブル値によりデ・スクランブルされるスクランブル済データを生成するスクランブル部と、
前記スクランブル済データを記録する記録部とを有し、
前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、
前記スクランブル部は、
前記第１の順序番号とは異なる第２の順序番号の順で入力される前記スクランブル前データの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、
前記スクランブル前データとその前記第１の順序番号に対応する前記スクランブル値とから前記スクランブル済データを算出する符号列演算部とを有するディスク装置。
【請求項１５】
ユーザ・データを含むＫ（Ｋは自然数）バイトからなる処理対象符号列から、前記ユーザ・データにその誤り検出符号を付加したＫバイトからなり、各バイトデータに対しそれぞれ第１の順序番号が対応付けられた誤り検出符号付加符号列を生成する誤り検出符号付加部と、
前記誤り検出符号付加符号列の各バイトデータと、その前記第１の順序番号に対応したスクランブル値とからスクランブルされ、当該スクランブル値によりデ・スクランブルされるスクランブル済データを生成するスクランブル部とを有し、
前記誤り検出符号付加符号列は、前記処理対象符号列を前記第１の順序番号の順に所定の演算方法にて処理された場合に得られるものであり、
前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、
前記誤り検出部は、
前記処理対象符号列の各バイトデータの前記第１の順序番号に対応する固有代替値を出力する代替値出力部と、
前記代替値出力部の出力結果に基づき、前記処理対象符号列の各バイトデータについて、各バイトデータと各バイトデータに対応した前記固有代替値とを前記第１の順序番号とは異なる第２の順序番号の順で処理することで前記誤り検出符号付加符号列を生成する符号列生成部とを有し、
前記スクランブル部は、
前記第２の順序番号の順で入力される誤り検出符号付加符号列の各バイトデータの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、
前記入力されるバイトデータとその前記第１の順序番号に対応する前記スクランブル値とから前記スクランブル済データを算出する符号列演算部とを有する
ことを特徴とするディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクに記録するデータに誤り検出符号を付加する誤り検出付加回路、ディスクから読み出したデータの誤り検出を行なう誤り検出回路及び方法、並びに誤り検出符号付加回路及び／又は誤り検出回路を備えるディスク装置に関する。
【背景技術】
【０００２】
ＣＤ、ＣＤ−Ｒ／ＲＷ、ＣＤ−ＲＯＭなどのいわゆる第１世代の光ディスク、ＤＶＤ（Digital Versatile Disc）などのいわゆる第２世代光ディスクに次いで、光源波長を４０５ｎｍ（青紫色）に短波長化したいわゆる第３世代光ディスクと呼ばれるブルーレイディスクが開発されている。ブルーレイディスクは、光源波長の短波長化の他、対物レンズの開口数ＮＡ（numerical aperture）を０．８５に高め、ビーム・スポット面積をＤＶＤに比して１／５程度に縮めることで、ＤＶＤの約５倍の面記録密度で記録マークを読み書き可能となっている。さらに、ディスク基板上に相変化記録層を設け、この上に０．１ｍｍの透明なカバー層で覆うことでディスクとレーザ光の光軸との相対的な傾きによる収差を低減する構造が取られている。
【０００３】
このように記録密度が高く薄いカバー層を有する第３世代光ディスクでは、記憶容量が大きい分、例えば同じ大きさの欠陥でも第２世代光ディスク等に比してバースト誤りの影響が大きい。
【０００４】
一般に、光ディスクにディジタル・データを記録する際は、再生容易のために、誤り訂正符号（ＥＣＣ（error correcting code））が付加され、記録符号化処理が施されるが、ブルーレイディスクにおいては、上述したように、高密度に記録されることから、データを正確に読み取るために誤り訂正等について複雑な処理が施される。
【０００５】
ブルーレイディスクの誤り訂正ブロック（ＥＣＣブロック）は、６４ｋバイトのユーザ・データを単位に構成される。入力されたユーザ・データは、２０４８バイトのユーザ・データに４バイトのエラーチェックコードＥＤＣを付加した２０５２バイトの論理セクタとされる。ＥＣＣブロックは、３２の論理セクタ（符号化列）と、バースト・エラーを防止するために一定の間隔で埋め込まれた補助データ（picket code）とから構成される（特許文献１参照）。このＥＣＣブロックは、その後、ランレングスを制限するために１−７ＰＰ（Parity Preserve/Prohibit RMTR）変調され、ディスクに記録される。
【０００６】
ここで、ブルーレイディスクにおけるＥＣＣブロックに含まれる記録データは、図２のようなデータ配置を有する。なお、この記録データは、ローテーションされ補助データと共にＥＣＣブロックとされる前の状態を示す。以下、これを記録ブロックという。この記録データは、列方向をＥＤＣを付加する際のデータ入力順序（以下、符号化順序という。）とすると、ディスクには行方向に記録される。
【０００７】
ブルーレイディスクにおいては、２０４８バイトのユーザ・データに付加すべき誤り検出符号は、２０４８バイトのユーザ・データを所定の演算を行なうシフト・レジスタに上記符号化順序で入力して得る。符号列の誤りは、通常は、この符号列を再び同一のシフト・レジスタに同一の順序で入力すれば誤りを検出することができる。
【０００８】
ところが、ブルーレイディスクにおいては、ディスクに高密度に記録されたデータを正確に再生させるため複雑なインターリーブ処理がなされるため、符号列を上述の符号化順序とは異なる順序（以下、記録順序という。）で記録する。したがって、読み出したデータの順序が符号化の際の順序と一致せず、そのままではデ・スクランブル処理を行うことができない。
【０００９】
そこで、従来の光ディスク装置においては、例えば、一の記録ブロックの全データを読み出した後、一旦バッファに格納し、符号化の際と同じ順序に読み出すことで、符号化の順序と誤り検出の順序と一致させ、正しく演算するようにしている。
【特許文献１】特開２００３−２４２７２８号公報
【非特許文献１】「次世代光ディスク  解体新書」，日経エレクトリニクス  ブックス，２００３年１０月７日
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、ＥＣＣブロックに含まれる全符号列（記録ブロック）を一旦バッファに読み出し、記録順序に並んでいる各データを符号化順序に並び替えて上記シフト・レジスタに入力してシフト・レジスタ値を求め、デ・スクランブルする方法では、記録ブロックの全データを格納するための大きなバッファメモリが装置内に必要となる。また、誤り検出のために発生するメモリ・アクセスがバッファメモリ・アクセスのスループットを下げるという問題もある。
【００１１】
本発明は、このような問題点を解決するためになされたものであり、所定の順序で処理することでスクランブル／デ・スクランブル可能なデータに対し、所定の順序とは異なる順序で処理してもスクランブル／デ・スクランブルを行なうことができるスクランブル回路、デ・スクランブル回路及び方法、並びにディスク装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明にかかるデ・スクランブル回路は、第１の順序番号が対応付けられたスクランブル前データと前記第１の順序番号に対応したスクランブル値とから生成されたスクランブル済データを当該スクランブル値によりデ・スクランブルしてデ・スクランブル済データを生成するデ・スクランブル回路であって、前記スクランブル済データは、前記第１の順序番号が対応付けられたものであり、前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、前記第１の順序番号とは異なる第２の順序番号の順で入力される前記スクランブル済データの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、前記スクランブル済データとその前記第１の順序番号に対応する前記スクランブル値とから前記デ・スクランブル済データを算出する符号列演算部とを有する。
【００１３】
本発明においては、第２の処理順序で入力されるバイトデータの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部を有するため、第１の順序番号と異なる順序の第２の順序番号でデ・スクランブル処理を実行することができる。
【００１４】
本発明にかかるスクランブル回路は、第１の順序番号が対応付けられたスクランブル前データと、前記第１の順序番号に対応したスクランブル値とからスクランブルされ、当該スクランブル値によりデ・スクランブルされるスクランブル済データを生成するスクランブル回路であって、前記スクランブル前データは、前記第１の順序番号が対応付けられたものであり、前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、前記第１の順序番号とは異なる第２の順序番号の順で入力される前記スクランブル前データの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、前記スクランブル前データとその前記第１の順序番号に対応する前記スクランブル値とから前記スクランブル済データを算出する符号列演算部とを有する。
【００１５】
本発明においては、第２の処理順序で入力されるバイトデータの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部を有するため、第１の順序番号と異なる順序の第２の順序番号でスクランブル／デ・スクランブル処理を実行することができる。
【００１６】
本発明にかかるディスク装置は、ユーザ・データを含むＫ（Ｋは自然数）バイトからなる処理対象符号列から、前記ユーザ・データにその誤り検出符号を付加したＫバイトからなり、各バイトデータに対しそれぞれ第１の順序番号が対応付けられた誤り検出符号付加符号列を生成する誤り検出符号付加部と、前記誤り検出符号付加符号列の各バイトデータと、その前記第１の順序番号に対応したスクランブル値とからスクランブルされ、当該スクランブル値によりデ・スクランブルされるスクランブル済データを生成するスクランブル部とを有し、前記誤り検出符号付加符号列は、前記処理対象符号列を前記第１の順序番号の順に所定の演算方法にて処理された場合に得られるものであり、前記第１の順序番号に対応した各スクランブル値は、初期値に対し前記第１の順序番号に対応した所定の演算を施すことで得られる値であって、前記誤り検出部は、前記処理対象符号列の各バイトデータの前記第１の順序番号に対応する固有代替値を出力する代替値出力部と、前記代替値出力部の出力結果に基づき、前記処理対象符号列の各バイトデータについて、各バイトデータと各バイトデータに対応した前記固有代替値とを前記第１の順序番号とは異なる第２の順序番号の順で処理することで前記誤り検出符号付加符号列を生成する符号列生成部とを有し、前記スクランブル部は、前記第２の順序番号の順で入力される誤り検出符号付加符号列の各バイトデータの前記第１の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、前記入力されるバイトデータとその前記第１の順序番号に対応する前記スクランブル値とから前記スクランブル済データを算出する符号列演算部とを有する。
【００１７】
本発明においては、入力されるバイトデータの前記第１の順序番号に対応する固有代替値を使用することで、第２の順序番号の順としても誤り検出符号付加符号列を算出することができ、また入力されるバイトデータの前記第１の順序番号に対応するスクランブル値を生成することで、第２の順序番号の順で入力される誤り検出符号付加符号列に対してスクランブル処理を実行してスクランブル済データを算出することができる。
【発明の効果】
【００１８】
本発明によれば、従来の符号化順序とは異なる順序で処理しても、従来の符号化順序で処理することでデ・スクランブル可能なスクランブル済データを生成することができ、また、従来の符号化順序で処理することでデ・スクランブル可能なスクランブル済データに対し、当該従来の符号化順序とは異なる順序で処理してデ・スクランブル処理を行うことができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、特にデ・スクランブルの際や誤り検出算出の際の処理性能を向上した光ディスクの再生装置に適用したものであって、ユーザ・データに対して誤り検出符号を付加する際の符号化順序と、誤り検出符号が付加されたユーザ・データを光ディスクに記録する際の記録順序とが異なる光ディスクの再生装置に好適に適用可能である。
【００２０】
ここで、本実施の形態においては、上記符号化順序と記録順序とが異なる光ディスクの一例としてブルーレイディスクを例にとって説明するが、ディスクはブルーレイディスクに限らず、他のメディアであってもよい。すなわち、所定の順序のデータに対し所定の演算を施すことで得られる可逆演算が可能な特定のデータをメディアに書き込む又は当該特定のデータをメディアから読み出すデータ処理についても本発明を同様に適用することができる。また、本実施の形態においては、再生装置を例にとって説明するが、後述するように記録装置又は記録再生装置に適用できることは勿論である。
【００２１】
１．光ディスク再生装置 
図１は、本実施の形態にかかる光ディスクの再生装置の信号処理回路の一部を示す概略を示すブロック図である。再生装置の信号処理回路１には、図示せぬディスクから読み出されたデータが復調された復調データが供給される。この信号処理回路１は、メイン・データと補助データとを分類する選別部（セレクタ）１１と、選別部１１により分離されたメイン・データをローテーション処理するローテーション１２と、補助データをデ・インターリーブ処理するデ・インターリーブ回路１３とを有する。また、デ・インターリーブされたメイン・データのシンドロームを生成するメインシンドローム生成部１４及びこれを保存するメインメモリ１５と、デ・インターリーブされた補助データを保存するＢＩＳメモリ１６及びこの補助データからシンドロームを生成するＢＩＳシンドローム生成部１７を有する。更に、ローテーション回路１２からメイン・データを受け取ってスクランブルを解くデ・スクランブル回路１８と、その誤りを検出する誤り検出回路１９とを有している。更にまた、各データの誤りを訂正する誤り訂正回路２０を有し、誤り訂正回路２０から誤り位置及び値が入力される入出力部２１と、スクランブルが解かれたデータが出力される出力部２２とがバス２３を介してメモリ２４に接続されている。更に、バス２３にはホストインターフェース回路２５が接続され、このホストインターフェース回路２５を介して読み出されたデータがＰＣなどの上位機器（ホスト）２６へ転送される。
【００２２】
ブルーレイディスクでは、誤り訂正（ＥＣＣ）ブロックは、６４Ｋバイトのユーザ・データを単位にエラー訂正符号化されている。ＥＣＣブロックは、後述するＬＤＣ（long distance code）ブロックとpicket codeと呼ばれる補助データとが配置される。この補助データは、ＢＩＳ（Burst indicator subcode）によって誤り訂正されており、補助データの誤り状態を検出することでバースト誤りを検知することが可能となっている。
【００２３】
ユーザ・データは２０４８バイト単位で読み書きされるが、これに４バイトのエラーチェックコードＥＤＣを付加した２０５２単位で１つの論理セクタを構成する。そして、この論理セクタを８セクタ毎にまとめ、２１６バイトずつ７６個に分け、リード・ソロモン符号によって符号化されたデータが３８バイト×４９６（（２×２１６）＋（２×３２））バイトの領域（ＬＤＣ）に配置される。すなわち、ＬＤＣは、３０４個のコード・ワードからなり、各コード・ワードは、２１６個の情報シンボルと３２個のパリティ・シンボルとからなるコード・ワード長２４８のシンボルからなり、これらのコード・ワードがＥＣＣブロックの縦方向の２×２毎にインターリーブされ、横１５２バイト×縦４９６バイトのＥＣＣブロックを構成する。
【００２４】
ディスクから読み出された読み出しデータは復調され、光ディスク装置の信号処理回路１の選別部１１に供給される。選別部１１は、読み出しデータを上述のＬＤＣ（以下、メイン・データという。）と補助データとに分離し、それぞれローテーション１２、デ・インターリーブ回路１３に出力する。メイン・データは、ＥＣＣブロックにおいて列方向にローテーションされているため、ローテーション１２がＥＣＣブロックに含まれる３２の論理セクタをローテーション前の状態に戻し、メインシンドローム生成部１４及びデ・スクランブル回路１８へ出力する。
【００２５】
メインシンドローム生成部１４はメイン・データに所定の演算を施しシンドロームを生成し、例えばスタティックＲＡＭ（Static Random Access Memory）などからなるメインメモリ１５に出力する。また、補助データもデ・インターリーブ回路１３にてインターリーブを解かれ、スタティックＲＡＭなどからなるＢＩＳメモリ１６に格納され、コード・ワード毎にＢＩＳシンドローム生成部１７に出力され、補助データのシンドロームが生成される。補助データのシンドロームは誤り訂正回路２０へ出力されＢＩＳメモリに格納されている補助データの訂正処理が行われる。バースト誤りがあるときはその情報に基づきメイン・データの誤りを訂正する。
【００２６】
一方、メインメモリ１５には、メイン・データのシンドロームが格納されており、コード・ワード毎に誤り訂正回路２０に出力され、メモリ２４に格納されているメイン・データの誤り位置・誤り値が入出力回路２１に出力され、その誤り訂正が行われる。
【００２７】
一方、インターリーブが解かれたメイン・データは、デ・スクランブル回路１８にてデ・スクランブル処理され、誤り検出回路１９にて誤り検出がされる。特に、本実施の形態におけるデ・スクランブル回路は、記録前に行なわれるスクランブル処理の順序（以下、符号化順序という。）とは異なる順序で記録されたデータを、符号化順序とは異なる順序にて読み出し、符号化順序と異なる順序（以下、処理順序という。）でデ・スクランブル処理を実行することができる。また、誤り検出回路１９は、上記処理順序で入力されるデータから、各符号列の誤り検出値を算出可能な回路である。符号化順序とは異なる処理順序でデ・スクランブル処理及び誤り検出値算出処理を行うことができるので、読み出したデータを一旦符号化順序に並び替えてから処理する必要がなく、したがって順序を並び変えるためのバッファ、図１においてはメモリ２４において使用する作業領域を不要とすることができる。
【００２８】
２．データ配列 
次に、本実施の形態における再生装置におけるデ・スクランブル回路、誤り検出回路について説明するが、先ず、ブルーレイディスクにおける記録ブロックのデータの配列順序について説明しておく。図２は、ブルーレイディスクにおける記録ブロックのバイト単位のデータ（以下、バイトデータという。）の並び順を説明する図である。なお、本図は、ブルーレイディスクにおけるＥＣＣブロックから図１における選別部１１にて補助データを分離し、メイン・データのローテンションが解かれた後のデータ構成を示し、以下の説明においては、図２に示す２０５２×３２バイトのデータを記録ブロックという。記録ブロック１００は、３２個の符号列（２０４８バイトの論理セクタに４バイトのＥＤＣを付加したデータ）Ｄ（ｘ）（以下、Ｄ０〜Ｄ３１ともいう。）により構成される。１つの符号列Ｄ（ｘ）は、２０４８バイトのユーザ・データに４バイトのＥＣＣコードが付加された２０５２バイトのデータからなる。図３は、２つの符号列（Ｄ０，Ｄ１）を拡大して示す図である。図中に示す数値は、バイト単位のデ・スクランブルの順序（符号化順序）を示す。記録ブロックは、３０４列２１６バイト行からなる。ここで、Ｎ＝列番号（０≦Ｎ≦３０３）、Ｍ＝行番号（０≦Ｍ≦２１５）とする。
【００２９】
符号列Ｄ（ｘ）は、２１６バイトを列方向に並べ折り返して次の列に並べるため、例えば符号列Ｄ０においては、Ｎ＝９列目は１９４４〜２０５１番目のバイトデータとなり、Ｍ＝１０７行目までとなる。Ｍ＝１０８〜２１５行目は次の符号列Ｄ１の０から１０７番目のバイトデータが配置される。このように、記録ブロックは、偶数番目の符号列（偶数符号列）と奇数番目の符号列（奇数符号列）とを１つの単位（符号列セット）、すなわち、１９列からなる２つの符号列毎に同じ順序で繰り返し配置されている。
【００３０】
符号列Ｄ０〜符号列Ｄ３１は、図２及び図３に示す符号化順序にて所定の演算を施すことでスクランブルされ、上述のＥＣＣブロックとされた後、ディスクに記録されるが、この記録の際には、記録ブロックは、図２中に矢印で示す行方向に記録されることとなり、符号化方向の列方向とは直交する方向となる。
【００３１】
ここで、図２、図３の列方向のバイト順序が符号化順序を示す。本明細書においては、列方向のバイトデータに対し、図２、図３の図中に数値で示すような符号化バイト順序番号（第１の順序番号）Ｑを対応させることとする。この符号化バイト順序番号Ｑの順が符号化順序である。また、必要に応じて、そのビット単位のデータの順序番号を符号化ビット順序番号ｑという。このような順序のバイトデータが行列状に配置された記録ブロックにおいて、行方向のバイト順序がディスクへのデータの記録順序となる。本明細書においては、行方向のバイトデータを記録バイト順序番号（第２の順序番号）Ｐで示すこととする。符号化バイト順序番号Ｑとは、ブルーレイディスクにおける本来のデ・スクランブル処理、及び後述する誤り検出の処理の順序を示す順序番号である。また、記録バイト順序番号Ｐとは、ブルーレイディスクにおけるデータの記録順序を示す順番番号であり、本実施の形態におけるデ・スクランブル処理及び誤り検出処理の各処理順序を示す順序番号である。すなわち、本実施の形態においては、ディスクに対する記録・再生する順序は通常のブルーレイディスクと同様の記録バイト順序番号Ｐの順とするのに対し、デ・スクランブル処理及び後述する誤り検出処理においては、従来の符号化バイト順序番号Ｑの順とは異なる順序で処理する。そして、本実施の形態においては、これらの処理順序を、記録バイト順序番号Ｐの順と一致させることで、読み出したデータを、一旦バッファに読み出して並べ替える処理を不要とし、読み出したままで処理することを可能とするものである。
【００３２】
図４は、バイトデータの符号化方向及び記録方向におけるビットの並び順を説明する模式図である。図４に示すように、列方向の符号化バイト順序番号Ｑの１バイトデータは、符号化ビット順序番号ｑの順に最上位ビットＭＳＢ〜最下位ビットＬＳＢを有する。ここで、記録ブロックをビット単位でみたとき、図１３に示すように、記録方向の一のバイトデータは、符号化方向の８ビットデータに対応している。すなわち、符号化バイト順序番号Ｑ／符号化ビット順序番号ｑのデータを記録する際には、図４の右図に示すように、記録ビット順序番号ｐの順とされる。このように記録方向における各バイトデータのＭＳＢ〜ＬＳＢは符号化方向の各バイトデータのＭＳＢ〜ＬＳＢに対応する。本明細書においては、この記録方向のビットデータに記録ビット順序番号ｐを対応付けて説明する。
【００３３】
ここで、本実施の形態におけるデ・スクランブル処理は、バイト単位で行われ、行方向のバイト順序で実行される。したがって、記録ビット順序番号ｐの順で読み出されたビットデータは、図４のように列方向に８ビット毎であって行方向に並べた行列（記録ブロック）における、行方向の各バイトデータに対応付けられた記録バイト順序番号Ｐの順に入力される。なお、符号化バイト順序番号Ｑは、一の符号列毎に対応付けられ、０≦Ｑ≦２０５１となっており、記録バイト順序番号Ｐは、一の記録ブロック毎に対応付けられ、０≦Ｐ≦６５６６４となっている。
【００３４】
３．デ・スクランブル回路 
ディスクに記録されたデータは、記録した順序で読み出されるため、読み出したデータは、記録順序番号Ｐの順とは異なる順序となる。しかしならが、スクランブルは、上記符号化順序に対して上記所定の演算を施すことでデ・スクランブルされる処理であって、読み出した順序で上記所定の演算を行ってもデ・スクランブル処理することはできない。本実施の形態は、この記録順序番号Ｐの順、すなわち符号化順序番号Ｑの順とは異なる順序でデータを処理してもデ・スクランブル処理することができる演算回路及びその方法を提案するものである。
【００３５】
先ず、本発明の理解を容易にするため、デ・スクランブル処理について説明する。符号列をスクランブル処理する場合であっても、デ・スクランブル処理する場合であっても同様の方法で処理することができる。すなわち、データをスクランブルする場合には、８ビットの入力データＤｉと、スクランブラで生成した８ビットのスクランブル・データ（スクランブル値）Ｓｉとのｍｏｄ２加算（＝排他的論理和）（下記式（１））を行なうことでスクランブル・データＤＳｉを得ることができる。
ＤＳｉ＝Ｓｉ＋Ｄｉ・・・（１）
ここで、「＋」は排他的論理和ＥＯＸを示す。以下の説明において、「＋」は同様に排他的論理和を示すこととする。
【００３６】
また、同様に、デ・スクランブルする場合にも、この式（１）により、スクランブルされた入力データＤｉと、スクランブラで生成した８ビットのスクランブル値Ｓｉとのｍｏｄ２加算を行なうことでデ・スクランブル・データＤＳｉを得ることができる。スクランブル値Ｓｉは、いずれの場合であっても入力データＤｉに対応する値となっている。なお、以下の説明においてはデ・スクランブルについて説明する。
【００３７】
図５は、スクランブル・データＳｉを生成するスクランブラの一例のシフト・レジスタを示す図である。図５に示すシフト・レジスタ３０を所望の値で初期化しておき、ｉ回分シフトしたｂ７〜ｂ０の値Ｓｉと入力データＤｉとが図示しない論理回路にてＸＯＲした結果がデ・スクランブル後のデータＤＳｉとなる。すなわち、デ・スクランブル後のデータＤＳｉを求めるためには、スクランブル値Ｓｉを求める必要がある。
【００３８】
ここで、図２及び図３に示す記録ブロックは記録ブロックの行方向（記録方向）の順にデータを読み出し、デ・スクランブル回路には、記録バイト順序番号Ｐで入力される。このため、上記式（１）の演算式は下記式（２）のようになる。
ＤＳｉ＝Ｓｉ＋Ｄｉ
＝Ｓ（Ｐ×２１６）ｍｏｄ  ２０５２＋Ｄｉ・・・（２）
【００３９】
すなわち、デ・スクランブル回路に入力される記録バイト順序番号Ｐ（デ・スクランブル処理順序）の順と符号化バイト順序番号Ｑの順とが一致している場合には、データの入力クロック毎に、シフト・レジスタ３０を１回ずつシフトすればスクランブル値Ｓｉを求めることができるのに対し、入力データが符号化バイト順序番号Ｑの順と異なるデ・スクランブル処理順序である記録バイト順序番号Ｐの順の場合、シフト・レジスタ３０を単純にシフトするのみではスクランブル値Ｓｉを求めることができない。すなわち、記録バイト順序番号Ｐの順は、図３に示すように、ＤＱ＝０→ＤＱ＝２１６→ＤＱ＝４３２→ＤＱ＝６４８、・・・となる。よって、シフト・レジスタ３０が出力すべきシフト・レジスタ値（スクランブル値）は、０回シフトした値→２１６回シフトした値→４３２回シフトした値→・・・となる。このため、上記記録順バイト序番号Ｐの順で入力した場合に出力すべきスクランブル値は、Ｍ＝行（Ｒｏｗ：０〜３０３）、Ｎ＝列（Ｃｏｌｕｍｎ：０〜２１５）とした場合、（（２１６×Ｎ）ｍｏｄ２０５２＋Ｍ）回シフトした値となる。これは、データを１バイトを入力する毎にシフト・レジスタ３０を２１６回シフトしなければいけないことを意味し、デ・スクランブル処理時間が長くなってしまう。これを回避するには、上述したように、一旦記録ブロック全体をバッファに読み出し、符号化バイト順序番号Ｑに並び替えてシフト・レジスタ３０に入力する必要があり、記録ブロックを一旦読み出すためのＲＡＭ等の保存領域が必要となり、更に、他に割り振ることができるＲＡＭアクセス性能も低下してしまう。
【００４０】
そこで、本実施の形態においては、符号化バイト順序番号Ｑ及び記録バイト順序番号Ｐの規則性に着目し、シフト・レジスタ３０の１回のシフト動作の複数倍のシフト動作を行なう２つのシフト・レジスタを組み合せることで、記録バイト順序番号Ｐの順序にシフト・レジスタ３０と同様のスクランブル値Ｓｋを演算させる。これにより、符号化バイト順序番号Ｑと異なる順序で入力されるデータのデ・スクランブル処理が実行可能となる。
【００４１】
次に、本実施の形態におけるデ・スクランブル回路について詳細に説明する。図３に示すように、記録バイト順序番号Ｐでみた場合、記録ブロック１００のバイトデータは符号化バイト順序番号Ｑの２１６バイト又は１０８バイト毎のデータとなっている、そこで、１クロックで図５のシフト・レジスタ３０を１０８回シフトさせた値を演算することができる１０８シフト・レジスタ（以下、ＳＦＲという。）と、レジスタ３０を２１６回シフトさせた値を演算することができる２１６回ＳＦＲとを準備する。これらの１０８回ＳＦＲ、２１６回ＳＦＲは、後述するように、シフト・レジスタ３０の１６ビットの各ビットに対し、ある乗数を排他的論理和することにより構成することができる。本実施の形態においては、これら１０８回ＳＦＲ、２１６回ＳＦＲのセットを含むスクランブル値生成部により記録バイト順序番号Ｐの順で入力されるバイトデータのスクランブル値を算出することができ、データ１バイトに要する処理時間を短くすることができる。
【００４２】
図６は、図１に示すデ・スクランブル回路１８を示すブロック図であり、図７は、図６に示すデ・スクランブル回路の詳細を示す図である。デ・スクランブル回路には、記録ブロックの各データＤＱが読み出された順序（記録順序番号Ｐ）で入力される。図６に示すように、デ・スクランブル回路１８は、記録バイト順序番号ＰのバイトデータＤＱのスクランブルを解くためのスクランブル値ＳＱを生成するスクランブル値生成部４０と、データＤＱに基づきスクランブル値生成部４０を制御する制御回路５０と、スクランブル値ＳＱと入力されるデータＤＱとのＸＯＲ演算をして記録バイト順序番号Ｐでデ・スクランブルしたデータＤＳＱを出力する論理回路（以下、ＸＯＲという。）６０とを有する。
【００４３】
スクランブル値生成部４０は、上述の１０８回ＳＦＲ４１及び２１６回ＳＦＲ４２と、スクランブル更新ＳＦＲ４３と、セクタ・スクランブル初期値記憶部４４と、Ｒｏｗスクランブル初期値記憶部４５と、ＮｅｘｔＲｏｗスクランブル初期値記憶部４６と、切り替え回路４７〜４９とを有する。また、制御回路５０は、入力データＤＱの列及び行をカウントするカウンタ５１と、カウンタのカウント値に基づき制御信号を生成する制御信号生成部５２とを有する。
【００４４】
セクタ・スクランブル初期値記憶部４４は、一の符号列におけるＱ＝０番目のデータＤＱ＝０に対応するスクランブル値Ｓ０を保持する記憶部である。このスクランブル値Ｓ０は、スクランブルの際に使用した図４のシフト・レジスタ３０の初期値である。
【００４５】
Ｒｏｗスクランブル初期値記憶部４５は、現在の列（Ｎ＝０〜３０３）及び行（Ｍ＝０〜２１５）に対応する初期値（以下、Ｒｏｗスクランブル初期値という。）を保持する記憶部である。スクランブル更新ＳＦＲ４３はＲｏｗスクランブル初期値に基づき現在の列の次の列に対応する初期値をスクランブル更新値として生成する。このスクランブル更新ＳＦＲ４３は、図５に示すシフト・レジスタ３０と同じ構成とすることができ、シフト・レジスタ３０の１回のシフト動作による演算と同一の演算を１クロックで行なうことができるシフト・レジスタである。
【００４６】
切り替え回路４７は、制御信号生成部５２から制御信号Ｓ１が供給され、Ｒｏｗスクランブル初期値又はスクランブル更新値のいずれかを選択して出力する。ＮｅｘｔＲｏｗスクランブル初期値記憶部４６は、切り替え回路４７が選択して出力した値をＮｅｘｔＲｏｗスクランブル初期値として保持する。
【００４７】
切り替え回路４８は、制御信号生成部５２から制御信号Ｓ２が供給され、セクタ・スクランブル初期値又はＮｅｘｔＲｏｗスクランブル初期値のいずれかを選択して出力する。上述のＲｏｗスクランブル初期値記憶部４５は、切り替え回路４８が選択して出力した値を現在のＲｏｗスクランブル初期値として保持する。
【００４８】
１０８回ＳＦＲ４１は、現在のＲｏｗスクランブル初期値が供給され、これを１０８回シフトした値を出力する。２１６回ＳＦＲ４２は、前データＤＱ−１におけるスクランブル値ＳＱ−１を２１６回シフトした値を出力する。切り替え回路４９は、制御信号生成部５２から制御信号Ｓ３が供給され、現在のＲｏｗスクランブル初期値、上記１０８回シフトした値、及び上記２１６回シフトした値のいずれかを選択し、スクランブル値ＳＱとして出力する。
【００４９】
カウンタ５１は、データＤＱの入力毎に列カウント値Ｎを０から３０３までインクリメントしていく。そして、列カウント値Ｎが３０３→０となるタイミングで行カウント値Ｍを０から２１５までインクリメントする。行カウント値Ｍが２１５→０となるタイミングが一記録ブロックの処理終了タイミングである。
【００５０】
制御信号生成部５２は、制御信号Ｓ１により、行カウント値Ｍがインクリメントするタイミングより１クロック前のタイミングでスクランブル更新ＳＦＲ４３を１回シフトさせる。これにより、スクランブル更新ＳＦＲ４３は、現在の行に対応するＮ＝０列におけるスクランブル値を次の行に対応するスクランブル値（スクランブル更新値）に更新する。この動作の詳細は後述する。
【００５１】
また、切り替え回路４８において、Ｎ  ｍｏｄ１９＝９かつＭ  ｍｏｄ２１６＝１０８または、Ｎ  ｍｏｄ１９＝０かつＭ  ｍｏｄ２１６＝０のときセクタ・スクランブル初期値Ｓ０を選択出力させ、その他のタイミングにおいてはＮｅｘｔＲｏｗスクランブル初期値を選択して保持値を出力させるよう制御する制御信号Ｓ２を出力する。
【００５２】
さらに、切り替え回路４９において、Ｎ  ｍｏｄ１９＝０のとき、Ｒｏｗスクランブル初期値記憶部４５を選択させ、Ｎ  ｍｏｄ１９＝１０、Ｍ＝０〜１０７、及びＮ  ｍｏｄ１９＝９、Ｍ＝１０８〜２１５のとき、１０８回ＳＦＲ４１の値を選択し、これらのタイミング以外は２１６回ＳＦＲ４２の値を選択出力させるよう制御する制御信号Ｓ３を出力する。
【００５３】
図８は１０８回ＳＦＲ４１を示す図、図９は２１６回ＳＦＲ４２を示す図である。図８及び図９の上図には、それぞれ１０８回ＳＦＲ４１及び２１６回ＳＦＲ４２の回路図を示す。また、図８及び図９の下図には、それぞれ１０８回ＳＦＲ４１及び２１６回ＳＦＲ４２各レジスタに格納されるビットｂ０〜ｂ１５の演算式を示す。１０８回ＳＦＲ４１及び２１６回ＳＦＲ４２は、いずれも１６ビット（ｂ０〜ｂ１５）のパラレルＳＦＲであり、上述したように、一のバイトデータの入力により、図５に示すシフト・レジスタ３０の１０８回分と２１６回分シフトした値を出力するものである。ここで、シフト・レジスタ３０は、下記式（３）
φ（ｘ）＝Ｘ１６＋Ｘ１５＋Ｘ１３＋Ｘ４＋１・・・（３）
の多項式から得られる。ここで、Ｘはシフト・レジスタを生成多項式で表現した場合の要素を示す。この多項式φ（ｘ）から１０８回、２１６回シフト演算させるための図８及び図９の下図に示す演算式が求まる。１０８回ＳＦＲ４１、２１６回ＳＦＲ４２は、これらの演算式を演算するシフト・レジスタである。
【００５４】
４．デ・スクランブル方法 
次に、図７に示すデ・スクランブル回路のデ・スクランブル方法について説明する。図１０は、本実施の形態におけるデ・スクランブル方法を示すフローチャートである。図１０に示すように、予めセクタ・スクランブル初期値記憶部４４を初期化し、スクランブル値Ｓ０を格納しておく（ステップＳＰ１）。そして、制御信号Ｓ１〜Ｓ３により、全ての切り替え回路４７〜４９を初期化する（ステップＳＰ２）。ここで、初期化により、切り替え回路４８にセクタ・スクランブル初期値記憶部４４の出力を選択させ、セクタ・スクランブル初期値Ｓ０を出力させる。また、切り替え回路４９にＲｏｗスクランブル初期値記憶部４５の出力を選択させ、Ｒｏｗスクランブル初期値を出力させる。また、切り替え回路４７にスクランブル更新ＳＦＲ４３の出力を選択させる。なお、切り替え回路４８は、セクタ。スクランブル初期値記憶部４４側を選択しているため、スクランブル更新ＳＦＲ４３の値は選択・出力されない。
【００５５】
これらの切り替え回路の選択により、図５と同様の構成を有するスクランブル更新ＳＦＲ４３にセクタ・スクランブル初期値Ｓ０が入力される。スクランブル更新ＳＦＲ４３によりこのセクタ・スクランブル初期値Ｓ０を１回シフトした更新スクランブル値（スクランブル値Ｓ１）を生成しておく（ステップＳＰ３）。なお、この更新スクランブル値は、行カウント値Ｍがインクリメントするタイミングにのみ選択される。以降はステップＳＰ４〜ＳＰ１８の処理を繰り返すことで、スクランブル値生成部４０は、入力データＤＱに対応するスクランブル値ＳＱを出力し、このスクランブル値ＳＱと、入力データＤＱとからデ・スクランブルされたデータＤＳＱを、入力データＤＱの入力順序で出力することができる。
【００５６】
先ず、バイトデータＤＱが入力されると（ステップＳＰ４）、列カウント値Ｎがインクリメントされる（ステップＳＰ５）。ここで、入力されるバイトデータＤＱは、ＤＱ＝ＤＱ＝０〜ＤＱ＝６５６６３であり、１クロックで記録バイト順序番号Ｐの順に１バイトのデータが入力される。なお、カウンタは記録ブロック１００の最初のデータＤＱ＝０が入力されると列カウント値Ｎ及び行カウント値Ｍを０にセットしてカウントを開始する。列カウント値Ｎは０から３０３までカウントアップされる（ステップＳＰ６）。次に、列カウント値Ｎの値に基づき行カウント値Ｍを更新する。ここで、行カウント値Ｍは、列カウント値Ｎが３０３→０になるタイミングでのみインクリメントされ、２１５までカウントアップされる。次いで、入力されたデータＤＱが何行目のデータかを判断する。行カウント値Ｍ≦１０７である場合（ステップＳＰ７：Ｙｅｓ）には、判定値Ｈ１＝１０に設定し（ステップＳＰ８）、行カウント値Ｍ＞１０７である場合（ステップＳＰ７：Ｎｏ）には、判定値Ｈ２＝９に設定する（ステップＳＰ９）。そして、列カウント値Ｎを１９で割った余り（Ｎ  ｍｏｄ１９）が上記判定値Ｈ１又は判定値Ｈ２か否かを判定する（ステップＳＰ１２）。
【００５７】
Ｎ  ｍｏｄ１９が判定値Ｈ１又は判定値Ｈ２である場合（Ｎ＝９、１０、２８、２９・・・２９４、２９５の場合）、すなわち、奇数符号列に隣接する偶数符号列の最終列、偶数符号列に隣接する奇数符号列の最初の列のデータＤＱが入力された場合には、制御信号Ｓ２により、切り替え回路４９に１０８回ＳＦＲ４１の出力を選択させる（ステップＳＰ１１）。一方、列カウント値Ｎを１９で割った余りが０である場合（ステップＳＰ１２）、すなわち、偶数符号列の最初の列のデータが入力された場合には、制御信号Ｓ２により、切り替え回路４９にＲｏｗスクランブル初期値を出力させる（ステップＳＰ１３）。
【００５８】
また、列カウント値Ｎ＝０（３１４で割った余りが０の場合）（ステップＳＰ１４）である場合には、切り替え回路４７〜４９に以下の選択をさせると共に、スクランブル更新ＳＦＲ４３を１回シフトさせる（ステップＳＰ１５）。すなわち、切り替え回路４７にスクランブル更新ＳＦＲ４３の出力を選択させスクランブル更新値をＮｅｘｔＲｏｗスクランブル初期値記憶部４６に出力させる。また、切り替え回路４８にＮｅｘｔＲｏｗスクランブル初期値記憶部４６の出力を選択させ、スクランブル更新値をＲｏｗスクランブル初期値記憶部４５に出力させる。さらに切り替え回路４９にＲｏｗスクランブル初期値記憶部４５の出力を選択させ、スクランブル更新値をＯＵＴＰＵＴから出力させる。
【００５９】
このように、列カウント値Ｎが０になるタイミング、すなわち行カウント値Ｍがインクリメントされるタイミングでは、スクランブル更新ＳＦＲ４３からのスクランブル更新値が、切り替え回路４７、ＮｅｘｔＲｏｗスクランブル初期値記憶部４６、切り替え回路４８、Ｒｏｗスクランブル初期値記憶部４５、切り替え回路４９を介してＯＵＴＰＵＴから出力される。そして、スクランブル更新ＳＦＲ４３では、現在の行に対応するスクランブル更新値を１回シフトさせ、次の行に対応するスクランブル更新値を生成させる。スクランブル更新ＳＦＲ４３は、最初にセクタ・スクランブル初期値記憶部４４から受け取ったセクタ・スクランブル初期値（Ｓ０）を行カウント値Ｍがインクリメントされる毎にシフトすることで、図３に示す０列目の１〜２１５行目までのスクランブル値Ｓ０→Ｓ１→・・Ｓ２１４→Ｓ２１５を順次生成する。
【００６０】
そして、列カウント値Ｎを１９で割った余りが０、９又は１０ではなく、かつＮ＝０でもない場合には、切り替え回路４９に２１６回ＳＦＲ２１６を選択させ、前回のＯＵＴＰＵＴを２１６回シフトした値を出力させる（ステップＳＰ１６）。このようしてＯＵＴＰＵＴから出力されるスクランブル値ＳＱを使用し、データＤＱとＸＯＲ６０にてデ・スクランブルのための演算（ＸＯＲ）をすることで、デ・スクランブルされたデータＤＳＱをデ・スクランブル回路１８から出力する（ステップＳＰ１７）。次のデータＤＱの入力がある場合にはステップＳＰ４からの処理を繰り返す。
【００６１】
この一連の動作によりＯＵＴＰＵＴには、入力されるデータＤＱに対応するスクランブル値ＳＱが出力される。すなわち、記録ブロックにおける最初のデータＤＱ＝０が入力された場合には、ＯＵＴＰＵＴからら、セクタ・スクランブル初期値記憶部４４からのスクランブル値Ｓ０が切り替え回路４８、Ｒｏｗスクランブル初期値記憶部４５、切り替え回路４９を介して出力ＯＵＴＰＵＴから出力され、また、それ以降は、各切り替え回路４７〜４９を適切に切り替え制御することで、入力データＤＱに対応するスクランブル値ＳＱが出力される。出力されたスクランブル値ＳＱは、ＸＯＲ６０に入力される。そして、ＸＯＲ６０にてデータＤＱと排他的論理和が求められ、デ・スクランブルされたデータＤＳＱとして出力される。
【００６２】
次に、以上のデ・スクランブル処理動作を図３に示すデータＳＱがＤＱ＝０から順次入力される場合について具体的に説明しておく。上述したように、先ず、データＤＱ＝０／Ｐ＝１（ＤＱ／Ｐ：符号化バイト順序番号Ｑ／記録バイト順序番号Ｐ）入力時には、セクタ・スクランブル初期値記憶部４４の初期値Ｓ０がＲＯＷスクランブル初期値記憶部４５にラッチされ、切り替え回路４９によって選択されＯＵＴＰＵＴから出力される。同時に初期値Ｓ０は、２１６回ＳＦＲ４２に供給される。次のデータＤＱ＝２１６／Ｐ＝１が入力されるタイミング、すなわち１クロック後、Ｓ０が２１６回シフトされた値Ｓ２１６を演算して出力する。切り替え回路４９は、Ｎ  ｍｏｄ１９＝１０の場合であって且つＭ＝０〜１０７のとき、及びＮ  ｍｏｄ１９＝９の場合であって且つＭ＝１０８〜２１５のときと、Ｎ  ｍｏｄ１９＝０以外は、２１６回ＳＦＲ４２の出力を選択する。すなわち、データＤＱ＝０の入力後、列カウント値Ｎ＝９になるまでの、同一行で同一符号列のバイトデータの処理期間は、２１６回ＳＦＲ４２の出力を選択し、ＯＵＴＰＵＴから出力させる。
【００６３】
これにより、ＯＵＴＰＵＴからは、Ｓ０を２１６回シフトした値が順次出力される（Ｓ０→Ｓ２１６→Ｓ４３２→・・→Ｓ１９４４（Ｓ（Ｎ×２１６）ｍｏｄ  ２０５２））。そして、Ｎ＝１０、Ｍ＝０のデータＤＱ＝１０８／Ｐ＝１０が入力されるタイミングで切り替え回路４９は、１０８回ＳＦＲ４１の値を選択する。切り替え回路４９は、Ｎ  ｍｏｄ１９＝１０の場合であって且つＭ＝０〜１０７のとき、及びＮ  ｍｏｄ１９＝９の場合であって且つＭ＝１０８〜２１５のとき、すなわち、同一行において一の符号列から次の符号列へ移るバイトデータを処理するタイミングで１０８回ＳＦＲ４１の出力を選択する。１０８回ＳＦＲ４１は、Ｒｏｗスクランブル初期値記憶部の出力、この場合はＳ０を１０８回シフトした値Ｓ１０８を出力する。これにより、Ｎ＝９→Ｎ＝１０において、入力データＤＱがＤＱ＝１９４４／Ｐ＝９→ＤＱ＝１０８／Ｐ＝１０へ変化する場合においても、適切なスクランブル値を出力させることができる。切り替え回路４９は、その後は２１６回ＳＦＲ４２の出力側に切り替えられる。ＯＵＴＰＵＴから出力されたＳ１０８は、同時に２１６回ＳＦＲ４２にも入力され、以降、このＳ１０８を２１６回シフトした値がＮ＝１１〜１８まで出力されることになる（Ｓ１０８→Ｓ３２４→・・→Ｓ１８３６）。
【００６４】
そして、Ｎ  ｍｏｄ  １９＝０のデータ入力時、すなわち列カウント値Ｎ＝１９のときは、再びデータＤＱ＝０／Ｐ＝１９が入力される。このタイミングで切り替え回路４９は、Ｒｏｗスクランブル初期値記憶部４５の出力を選択する。Ｒｏｗスクランブル初期値記憶部４５には、上述したように、初期値Ｓ０が格納されているため、この値Ｓ０がＯＵＴＰＵＴから出力される。これにより、ＤＱ＝１８３６／Ｐ＝１８→ＤＱ＝０／Ｐ＝１９とシフトすべき回数は変化する場合においても、正しいスクランブル値ＳＱをＯＵＴＰＵＴに出力することができる。以降、Ｍ＝０の同行における処理では同様の動作が繰り返される。
【００６５】
次に、Ｍ＝０→１となる場合、すなわち３０５番目のデータＤＱ＝３０４（Ｎ＝０，Ｍ＝１）が入力されると、切り替え回路４７、４８の選択も切り替えられる。この値は、次の記録ブロックの０番目のデータが入力されるまで次のように固定される。すなわち、切り替え回路４７は、Ｒｏｗスクランブル初期値記憶部４５側からスクランブル更新ＳＦＲ４３の選択を出力させるよう切り替えられる。また、切り替え回路４８は、ＮｅｘｔＲｏｗスクランブル初期値記憶部４６の出力を選択するよう切り替えられる。
【００６６】
この切り替えにより、まず、初期値Ｓ０がスクランブル更新ＳＦＲ４３にて１回シフトされた値Ｓ１がＮｅｘｔ  Ｒｏｗスクランブル初期値記憶部４６に記憶され、次のクロックによりＲｏｗスクランブル初期値記憶部４５に保存され、切り替え回路４８、切り替え回路４９を介してＯＵＴＰＵＴから出力される。以上の処理は２クロックを要する。すなわち、Ｓ１を出力するまでに２クロックを要するため、Ｍ＝０→１となるタイミングより１クロック前の、最終列−１（Ｎ＝３０２）のデータバイト入力タイミングで切り替え回路４７をスクランブル更新ＳＦＲ４３側へスイッチし、最終列（Ｎ＝３０３）のデータバイト入力タイミングで替え回路４８の選択をＮｅｘｔＲｏｗスクランブル初期値記憶部４６を選択させる。これにより、次の行の先頭データバイト（行カウント値Ｎ＝０，ＤＱ＝１／Ｐ＝３０４）の入力タイミングでＲｏｗスクランブル初期値記憶部４５に保持されているＳ１が切り替え回路４９を介してＯＵＴＰＵＴから出力される。以降、同じ行におけるデータが入力されている期間中（Ｍ＝１の期間中）はＲｏｗスクランブル初期値記憶部４５にはＳ１が保持され続ける。以降、Ｍ＝１の期間は、上述と同様、列カウント値Ｎの値に応じた処理が繰り返される。こうして、Ｍ→２１５まで同様な処理が繰り返されることで、記録バイト順序番号Ｐで入力されるバイトデータＤＱのスクランブル値ＳＱを生成することができる。
【００６７】
本実施の形態においては、図２、図３に示す行方向に入力される記録バイト順序番号Ｐの入力データについて、１０８回ＳＦＲ４１、２１６回ＳＦＲ４２、スクランブル値更新ＳＦＲ４３を組み合わせ、その出力を選択制御することで、符号化バイト順序番号Ｑについてシフト・レジスタ３０にて演算した場合のシフト演算を実行させることができる。したがって、列方向の記録順バイト序番号Ｐの順のバイトデータであって、符号化バイト順序番号Ｑの順でシフト・レジスタ３０に入力して得られたスクランブル値から生成されたスクランブル・データをシーケンシャルにデ・スクランブル処理することができる。このため、例えば記録ブロック全体をバッファに読み込み、符号化バイト順序番号Ｑの順に並べ替えることなく記録バイト順序番号Ｐの順序で入力される記録ブロックのシーケンシャルな処理が可能となる。
【００６８】
なお、図３に示す記録ブロックのデータは２１６又は１０８で巡回するデータとなっているため、例えば１０８回シフト・レジスタＳＦＲ１を組み合せた構成としてもよい。この場合、２１６回シフト演算が必要な処理では、１０８回ＳＦＲにおける演算を２回繰り返せばよい。また、シフト演算として必要なシフト回数は１０８であるため、１回のシフト演算で、１０８の約数のうち２べき乗となる回数のシフト演算が可能なＳＦＲであれば、適宜組み合せて記録バイト順序番号Ｐの順に入力されるデータのスクランブル値を算出させることができる。
【００６９】
５．誤り検出回路 
次に、本実施の形態における再生装置の誤り検出回路について説明する。ブルーレイディスクにおいては、上述の図２に示す各符号列Ｍ０〜Ｍ３１（以下、Ｍ（ｘ）という。）の２０４８バイト（１６３８４ビット）のデータに対し４バイト（３２ビット）の誤り検出符号を付加する。３２ビットの誤り検出符号は、１６３８４ビットの符号列Ｉ（ｘ）を下記式（４）の生成多項式で除算することで求めることができる。
Ｇ（ｘ）＝Ｘ３２＋Ｘ３１＋Ｘ４＋１・・・（４）
【００７０】
１６３８４ビットの符号列Ｉ（ｘ）に付加される誤り検出符号ＥＤＣ（ｘ）は下記式（５）で表される。
ＥＤＣ（ｘ）＝ΣｂｔＸｔ＝Ｉ（ｘ）ｍｏｄＧ（ｘ）（Σ：ｔ＝３１〜０）・・・（５）
ただし、Ｉ（ｘ）＝ΣｂｔＸｔ（Σ：ｔ＝１６４１５〜３２）
【００７１】
この結果、誤り検出符号ＥＤＣ（ｘ）を付加した符号列Ｄ（ｘ）は、下記式（６）で表現することができる。
Ｄ（ｘ）＝Ｉ（ｘ）＋ＥＤＣ（ｘ）・・・（６）
【００７２】
ブルーレイディスクにおいては、ディスクにデータを記録する際には、上記（５）の演算により得られるＥＤＣ（ｘ）を付加した３２個の符号列Ｄ（ｘ）（論理セクタ）からなる記録ブロック（Recording Unit Block）と補助データとをインターリーブ処理し、１つのＥＣＣブロックとしてからディスクに記録することで、バースト・エラー等の対策がなされている。このＥＣＣブロックを読み出し再生する際には、上記インターリーブを解き３２個の符号列Ｄ（ｘ）からなる記録ブロックとした後、必要に応じて各記録ブロックの誤り訂正がなされた後、各符号列Ｄ（ｘ）に対する誤り検出値を求める。
【００７３】
上記式（５）に示す誤り検出符号ＥＤＣ（ｘ）は、符号列Ｉ（ｘ）を図１１に示す３２ビットシフト・レジスタに入力することで得ることができる。符号列Ｄ（ｘ）の全符号を入力し終えた後の３２ビットシフト・レジスタ値が誤り検出符号ＥＤＣ（ｘ）（＝０）となる。通常、ディスクから読み出されたデータの誤りを検出する誤り検出回路では、誤り検出符号を付加するときと同様の演算器に読み出した符号列Ｄ（ｘ）の全符号を入力して得られる３２ビットシフト・レジスタ値が０か否かにより誤り検出が実行され、３２ビットシフト・レジスタ値が０でなかった場合に誤りが発生したことを検出することができる。すなわち、図１１に示す３２ビットのシフト・レジスタにＤ（ｘ）を入力することで、Ｄ（ｘ）をＧ（ｘ）により除算した余りが０か否か（Ｄ（ｘ）ｍｏｄＧ（ｘ）＝０  ｏｒ  ｎｏｔ０）を判別でき、誤りを検出することができる。
【００７４】
一方、ブルーレイディスクにおいては、誤り検出符号ＥＤＣ（ｘ）が付加された符号列Ｄ（ｘ）は、バースト・エラー対策のため、符号化順序と異なる方向に記録されることとなる。したがって、読み出されたデータの順序（記録順序）が元の順序（符号化順序）と異なるため、図１１に示すシフト・レジスタ２００により誤り検出値を求めようとすると、光ディスクから読み出した読み出しデータを、その記録順序のままで入力することができない。すなわち、一度符号化順序に並び変える必要が生じる。
【００７５】
そこで、本実施の形態においては、図１１に示すシフト・レジスタを使用せず、符号化順序と異なる処理順序で誤り検出値を求めることができる誤り検出方法を提案するものである。誤り検出回路では、バイト単位で入力されたデータをビット単位で処理する回路を有する。図２及び図３に示すバイト単位のデータ・フォーマットをビット単位で表現すると図１２、図１３のようになる。
【００７６】
ここで、本実施の形態においては、上述の同様に、行方向のバイト順を記録順序、列方向のバイト順を符号化順序として説明する。図１２はビット単位で示した場合の記録ブロックのデータの並び順を示す図であり、図１３は、２つの符号列を拡大して示す図である。図中の数値は各ビットの符号化ビット順序番号を示す。図１２、図１３に示すように、列方向のビットに対して符号化順序を示す符号化ビット順序番号ｑを対応付けた場合、上述の図４左図に示すように、符号化ビット順序番号ｑの順序のＭＳＢ〜ＬＳＢを行方向に並び替えた順序が実際にディスクに記録される順序（記録ビット順序番号ｐ）を示す。
【００７７】
一の符号列Ｄ（ｘ）は１６４１６ビット（２０５２バイト）のデータ群からなり、各符号列Ｄ（ｘ）は、図中のバイトデータでみた記録方向と直交する列方向の各バイトデータに対し上述したように符号化バイト順序番号Ｑが対応付けられる。この符号化順序のバイトデータの各ビットには、１６４１５→１６４１４→・・１４６８９→１４６８８→１４６８７→・・・→１→０の符号化ビット順序番号ｑが対応付けられる。そして、３２の符号列Ｄ（ｘ）から６５６６４バイトの記録ブロックＦ（ｘ）が構成されている。ここで、ディスクから読み出されるデータは記録ビット順序番号ｐであり、上述のデ・スクランブル処理及び本誤り検出回路における誤り検出処理が、記録ビット順序番号ｐの順の８ビットを１バイトとした記録バイト順序番号Ｐの順に実行される。ここで、記録ビット順序番号ｑは、符号化ビット順序番号ｑが連続するよう図１３のように列方向に並べた場合には、列方向８ビット毎の行方向の順序となる。すなわち、記録ビット順序番号ｐ＝０→１→７→８→９→・・・１５→・・・の順序は、符号化ビット順序番号ｑ＝１６４１５→１６４１４→・・１６４０８→１４６８７→１４６８６→・・・１４６８０→・・・に対応する（図４参照）。
【００７８】
本実施の形態の誤り検出回路には、記録ブロック１００が図１３に示す列方向８ビットデータからなるバイト単位の記録バイト順序番号Ｐの順で入力される。すなわち、記録ビット順序番号ｐの順でディスクから読み出されたビットデータは、図１２のように、１列８ビットで３０４列からなる３０４バイト（２４３２ビット）を１行単位とし、行方向に並べられた記録バイト順序番号Ｐの順に入力される。なお、本実施の形態においては、記録バイト順序番号Ｐの順に入力されるデータを０バイト目から順にＤＰ，ｉと表現することとする。ここで、０≦ｉ≦７とし、ｉは、記録ビット順序番号ｐの順であって、１バイトに含まれる８ビットの処理順番を示す。
【００７９】
また、記録ブロックＦ（ｘ）における列番号をＮとし、ビット行番号をｍ、行番号をＭと示す。例えば、Ｎ＝０、Ｍ＝０のバイトデータ（符号化ビット順序番号ｑ＝１６４１５〜１６４０８）は、記録バイト順序番号Ｐ＝０番目であり、誤り検出回路に０番目に入力され、ＤＰ＝０，ｉのように示す。同様に、Ｎ＝１８、Ｍ＝０行目のデータは記録バイト順序番号Ｐ＝１８であり、ｍ＝１の符号化ビット順序番号ｑ＝１７２６のビットデータは、記録バイト順序番号Ｐ＝１８番目のバイトデータの２ビット目として入力されＤＰ＝１８，１のように示す。同様に、Ｎ＝０列、Ｍ＝２１５行目のデータは、記録バイト順序番号Ｐ＝６５３６０であり、符号化ビット順序番号ｑ＝１４６８８のビットデータは、記録バイト順序番号Ｐ＝６５３６０番目のバイトデータの８ビット目として入力されＤＰ＝６５３６０，７と示す。
【００８０】
ここでは、先ず、本実施の形態における誤り検出回路の理解を容易とするため、その原理について説明する。ブルーレイディスクにおいては、誤り検出値は図１１に示すシフト・レジスタ２００に符号列Ｄ（ｘ）（符号化ビット順序番号ｑ＝１６４１５〜０）を入力して得られるシフト・レジスタ値とされる。例えば、シフト・レジスタ２００に入力する符号列Ｄ（ｘ）＝Ｄ０とし、Ｄ０は、記録ビット順序番号ｐ＝０、すなわち０番目に入力されるデータ（ｑ＝１６４１５）である１６４１５次のデータ、記録ビット順序番号ｐ＝１７２８、すなわち１７２８番目に入力するデータ（ｑ＝１４６８７）である１４６８７次のデータ、記録ビット順序番号ｐ＝３４５６、すなわち３４５６番目に入力するデータ（ｑ＝１６４１５）である１２９５９次のデータの３ビットのみが「１」で、その他の値は全て「０」であるとする。ここで、Ｂ１６４１５＝Ｂ１４６８７＝Ｂ１２９５９＝１である。
【００８１】
この場合、符号列Ｄ０を３２ビットシフト・レジスタ２００に入力した結果は、シフト・レジスタ２００の値を「０００００００１ｈ」に初期化し、これを１６４１５回シフトした値、１４６８７回シフトした値、及び１２９５９回シフトした値を求め、これらの排他的論理和で表現することができる。すなわち、符号列Ｄ０を３２ビットシフト・レジスタ２００に入力した結果Ｅ０は、下記（７）のように求めることができる。
Ｅ０＝Ｂ１６４１５Ｘ１６４１５ｍｏｄＧ（ｘ）＋Ｂ１４６８７Ｘ１４６８７ｍｏｄＧ（ｘ）＋Ｂ１２９５９Ｘ１２９５９ｍｏｄＧ（ｘ）＝（Ｘ１６４１５＋Ｘ１４６８７＋Ｘ１２９５９）ｍｏｄＧ（ｘ）・・・（７）
【００８２】
符号列Ｄ０の全てをシフト・レジスタ２００に入力して得られる結果Ｅ０（３２ビットのシフト・レジスタ値）は、上記概念を利用すれば、符号列を構成するビットデータが「１」であるシフト・レジスタ値を排他的論理和していくことで求めることができる。すなわち、符号列Ｄ０の場合は、０番目に入力する１６４１５次のデータ、１７２８番目に入力する１４６８７次のデータ、３４５６番目に入力する１２９５９次のデータの３ビットのみが「１」で、その他のデータは「０」であるため、Ｂ１６４１５、Ｂ１４６８７、Ｂ１２９５９のみを係数にした排他的論理和を求めることで、シフト・レジスタ値であるＥ０を算出することができる。
【００８３】
つまり、Ｘ１６４１５ｍｏｄＧ（ｘ）、Ｘ１４６８７ｍｏｄＧ（ｘ）、Ｘ１２９５９ｍｏｄＧ（ｘ）・・を演算することができれば、符号列Ｄ（ｘ）の３２ビットシフト・レジスタ値である誤り検出値Ｅ（ｘ）を求めることができる。
【００８４】
記録ブロックの各符号列Ｄ（ｘ）は、１６４１６ビットのデータからなるが、各ビットについて、上記のＸｑｍｏｄＧ（ｘ）を例えば保持しておき、入力ビットデータが「１」の場合、その符号化ビット順序番号ｑに対応するＸｑｍｏｄＧ（ｘ）を参照することができれば、それらの排他的論理和を求めることで、符号列Ｄ（ｘ）の３２ビットシフト・レジスタ値を求めることができる。ここで、最も簡単に３２ビットシフト・レジスタ値を求めるためには、符号列Ｄ（ｘ）の各ビットに対応するＸｑｍｏｄＧ（ｘ）を記憶しておき、入力データの符号化ビット順序番号のＸｑｍｏｄＧ（ｘ）を全て排他的論理和すればよい。以下、本明細書においては、ＸｑｍｏｄＧ（ｘ）を代替値ということとする。
【００８５】
一の符号列Ｄ（ｘ）は（ｑ＋１）＝ｋ（１≦ｋ）ビットから構成されるが、各ビットが自身の符号化ビット順序番号ｑに対応した代替値ＸｑｍｏｄＧ（ｘ）を有する。この代替値ＸｑｍｏｄＧ（ｘ）は、ｋビットの符号列Ｄ'（ｘ）のｑ次以外を０にした符号列（以下、代替符号列ｄ（ｘ）という）をＧ（ｘ）で除算した余剰を示す。ここで、代替符号列とは、元の符号列から算出する誤り訂正符号に対し、元の符号列の該当ビットが誤っていた場合のシンドローム値、すなわち元の符号列Ｄ（ｘ）の一のビットデータのみが誤った場合のシンドローム値を示す。ｋビットの符号列Ｄ（ｘ）にはｋ個の代替符号列ｄ（ｘ）が対応する。この代替符号列ｄ（ｘ）をＧ（ｘ）で除算した余剰が代替値ＸｑｍｏｄＧ（ｘ）となる。入力される符号列Ｄ（ｘ）において、符号が「１」であるビットに対応する全代替値ＸｑｍｏｄＧ（ｘ）の排他的論理和を求めることで、誤り検出値Ｅ（ｘ）を求めることができる。なお、本実施の形態においては、代替値ＸｑｍｏｄＧ（ｘ）を予め演算してテーブルに記憶しておくものとして説明するが、演算して求めるようにしてもよい。
【００８６】
図１４は、上記概念及びこの概念を利用して誤り検出値を算出する方法を説明する図である。ｋビットの符号列Ｄ（ｘ）の各ビットが全て「１」の符号列{１１１・・・１}を基礎の符号列Ｄ'（ｘ）とする。この符号列Ｄ'（ｘ）を図１１に示すシフト・レジスタ２００に入力して得られる３２ビットシフト・レジスタ値は、符号列Ｄ'（ｘ）の誤り検出値Ｅ'（ｘ）を示す。ここでは、ｋ＝ｑ＋１＝１６４１６ビットの符号列Ｄ'（ｘ）について説明する。
【００８７】
まず、基礎の符号列Ｄ'（ｘ）には上述したようにｋ個の代替符号列ｄ（ｘ）が対応する。一の符号列には、ｋビットからなる符号列にｑ＝１６４１５〜０の符号化ビット順序番号を付した場合、一の符号化ビット順序番号目のビットデータのみを「１」、その他のビットデータを全て「０」としたｋ個の代替符号列ｄ（ｘ）が対応することとなり、各代替符号列ｄ（ｘ）は、それぞれ異なる位置の符号化ビット順序番号目のみが「１」となっている。具体的には、最上位ビット（ｑ＝１６４１５）のみが「１」の代替符号列ｄ（ｘ）１６４１５＝{１００・・・０}、１６４１４次のビットのみが「１」の代替符号列ｄ（ｘ）１６４１４＝{０１０・・・０}、１６４１３次のビットのみが「１」の代替符号列ｄ（ｘ）１６４１３＝{００１・・・０}、・・・、０次のビットのみが「１」の代替符号列ｄ（ｘ）０＝{０００・・・１}からなる。これら各代替符号列ｄ（ｘ）ｑをシフト・レジスタ２００に入力して得られた３２ビットシフト・レジスタ値が代替値ＸｑｍｏｄＧ（ｘ）＝Ｒｑである。この代替値ＸｑｍｏｄＧ（ｘ）＝Ｒｑは、符号化ビット順序番号ｑに対応した値となっている。
【００８８】
すなわち、符号列と同一ビット数のビットデータからなり、符号列と同一のビット順序番号を対応付けたとき、ビット順序番号に対応する代替符号列とは、当該ビット順序番号のビットデータのみが「１」、その他のビットデータが全て「０」とされたものであって、符号列の各ビットデータの代替値は、そのビットデータの符号化ビット順序番号の代替符号列をシフト・レジスタ２００に入力した結果となる。これにより、符号列Ｄ'（ｘ）をシフト・レジスタ２００に入力して得られる３２ビットシフト・レジスタ値（誤り検出値Ｅ'（ｘ））は、各代替符号列ｄ（ｘ）ｑをシフト・レジスタ２００に入力して得られる３２ビットシフト・レジスタ値（代替値Ｒｑ）の全てを排他的論理和したものとなる。
【００８９】
このように、代替値ＸｑｍｏｄＧ（ｘ）＝Ｒｑを、符号列Ｄ（ｘ）の各ビット数に対応する数、本実施の形態においては、ｋ＝１６４１６個の代替値Ｒｑをテーブルに保持しておき、入力される符号列Ｄ（ｘ）の各ビットのうち符号が「１」のビットの代替値Ｒｑの排他的論理和を求めることで、符号列Ｄ（ｘ）の誤り検出値Ｅ（ｘ）を求めることができる。この場合、シフト・レジスタ２００に符号列Ｄ（ｘ）を入力する必要がないので、符号列Ｄ（ｘ）の入力順序を符号化ビット順序番号の順と異なる順序としても誤り検出値Ｅ（ｘ）を求めることができる。
【００９０】
データは、記録ブロック単位で処理されるが、記録ブロックＦ（ｘ）は符号列Ｄ（ｘ）を３２個配置したものであり、誤り検出値Ｅ（ｘ）は、符号列Ｄ（ｘ）毎に算出されるため、一の記録ブロックＦ（ｘ）から３２の誤り検出値Ｅ（ｘ）が求められる。
【００９１】
次に、各ビットデータに対応する代替値の数が全ビット数ｋより、少ない個数の代替値で誤り検出Ｅ（ｘ）を算出する方法について説明する。本実施の形態においては、ビットデータの並び順、記録ブロックにおけるバイトデータの並び方の規則性を利用することで、上記ｋ＝１６４１６個の代替値を１９個として誤り検出回路を構成することができる。
【００９２】
まず、記録ブロックＦ（ｘ）は、ローテーション前の状態とされた後、ローテーション１２（図１参照）から図１３に示す記録バイト順序番号Ｐの順に、バイト単位で入力される。このバイト単位のバイトデータＤＰ，ｉに含まれる８ビットのビットデータは、符号化ビット順序番号ｑが連続する列方向のビットである。したがってビット行ｍ＝ｊ行目の各ビットに対する代替値Ｒｑは、１行前のビット行ｍ＝ｊ−１の各ビットに対する代替値Ｒｑ−１を図１１に示すシフト・レジスタ２００に入力して１回シフトさせて得られるシフト・レジスタ値となっている。したがって、入力されるバイトデータにおける８ビット全てのビットデータに対応する代替値Ｒｑを保持しなくても、一のビットデータに対応する代替値から各ビットデータに対応する代替値Ｒｑを算出することができる。
【００９３】
これにより、各バイトデータに対して一のビットデータに対応する代替値をバイトデータに固有の代替値（以下、固有代替値という。）として用意するのみで、簡単に各ビットデータに対応する代替値に変換することができ、この場合、保持する代替値の数がｋ／８＝Ｋ個となり、保持する代替値を１／８の２０５２個に減らすことができる。
【００９４】
更に、本実施の形態における光ディスクは、上述の図２乃至図６、又は図１２及び図１３において説明したように、１つの記録ブロックが３２個の符号列からなり、符号化バイト順序番号の順であれば２１６個のバイトデータ、符号化ビット順序番号の順であれば１７２８個のビットデータを１列として列方向に３０４列並べたものとなっている。したがって、図３に示すように、各列方向における符号化バイト順序番号Ｑは連続する。そして、図１３に示すように、０行目〜２１５行目まで、各列方向における各バイトデータは、符号化ビット順序番号ｑが１つずつ大きくなるのみで連続する。
【００９５】
また、１つの符号列Ｄ（ｘ）は、９列と半分からなり、記録ブロックＦ（ｘ）には、偶数符号列及び奇数符号列からなる２つの符号列を組みにした、１９列からなる符号列セットが繰り返し配置される構成となっている。すなわち、図２及び図３に示すように、記録バイト順序番号Ｐの順での入力順序をみると、各行に対して１９通りの符号化バイト順序番号Ｑを有し、次の偶数符号列及び奇数符号列からなる符号列セットも、１９の記録バイト順序番号Ｐに対し同様の符号化バイト順序番号Ｑを有することとなる。このように、本実施の形態における光ディスクは、その規則性から、１つの記録ブロックは、１９の符号化バイト順序番号Ｑが繰り返される構成となっている。
【００９６】
以上のことから、一の符号列セットにおける一の行分の固有代替値１９個を一の符号列セットの特定の行の固有代替値を特定固有代替値Ｕ０〜Ｕ１８として保持するようにし、この特定固有代替値Ｕ０〜Ｕ１８から他の行の固有代替値ＲＱを算出し、各固有代替値ＲＱから代替値Ｒｑを算出するようにすれば、保持する代替値は特定固有代替値Ｕ０〜Ｕ１８の個数、すなわち１９個のみとなる。
【００９７】
この場合、一の符号列セットＤ（ｘ）に含まれるビット数に対応する代替値Ｒｑの個数＝ｋ個＝１６４１６個であるが、本実施の形態においては、記録ブロックに含まれるデータの並び順の規則性を利用することで、代替値として保持するデータ量を１／８６４の量である１９個と飛躍的に減少させることができる。
【００９８】
以下、本発明にかかる再生装置の誤り検出回路について具体的に説明する。図１５は、誤り検出回路の具体的な構成を示すブロック図である。読み出された記録ブロックＦ（ｘ）は、バイト毎のバイトデータとして記録バイト順序番号Ｐの順序で上述のデ・スクランブル回路に入力されデ・スクランブルされる。そして、デ・スクランブルされたバイトデータが、記録バイト順序番号Ｐの順で誤り検出回路２０１に入力される。この誤り検出回路２０１は、バイトデータの列及び行をカウントするカウンタ２０２と、入力バイトデータに対応する固有代替値を出力する代替値出力部とを有する。代替値出力部は、カウンタ２０２のカウント値に基づきその出力が制御されるデータ切り替え回路２０３と、現在の入力データの行に対応する１９個の固有代替値を保持する代替値テーブル２０４と、現在の代替値を除算して次の行に対応する１９の更新代替値を算出する除算器２０５と、除算結果を保持する更新用固有代替値テーブル２０６と、１９個の特定固有代替値を保持する特定固有代替値テーブル２０７と、代替値テーブル２０４から各列毎の更新代替値（以下、補正代替値という。）が供給される補正代替値出力部２０８を有する。これら各部の処理は８ビットのバイト単位のデータで処理される。
【００９９】
ここで、代替値、固有代替値、特定固有代替値、補正代替値は、符号化バイト順序番号Ｑの順に入力される各入力バイトデータの各ビットデータに対応付けられた符号化ビット順序番号に対応する代替値となるようそれぞれ用意される。本誤り検出回路２０１は、各ビットデータと、各ビットデータに対して対応付けられた、入力順序（記録バイト順序番号Ｐ／記録ビット順序番号ｐ）とは異なる、符号化ビット順序番号ｑに対応した代替値とから誤り検出値を求めるものであるが、以下の説明においては、記録バイト順序番号Ｐを有するバイトデータＤＰ，ｉに対応する代替値（固有代替値）をＲＰ，ｉと示す。なお、実際には、バイトデータＤＰ，ｉの各ビットデータは符号化ビット順序番号ｑに対応付けられ、この符号化ビット順序番号ｑに対応する代替値Ｒｑが上記固有代替値ＲＰ，ｉである。
【０１００】
更に、誤り検出回路２０１は、補正代替値出力部２０８と入力バイトデータとからバイト毎のバイト誤り検出値をビット単位で算出するビット処理演算部２１０と、ビット処理演算部２１０からの結果を受け取り一の符号列Ｄ（ｘ）に対する誤り検出値Ｅ（ｘ）を出力するバイト処理演算部２２０とを有する。バイト処理演算部２２０には、ビット処理演算部２１０から出力される各バイトのバイト誤り検出値ＥＰが供給される。そして、現在の入力バイトデータの誤り検出値ＥＰと前回までの入力バイトデータの誤り検出値の排他的論理和結果との排他的論理和を求める論理回路（ＸＯＲ）２２１と、ＸＯＲ２２１からの出力を保持し、２０５１回目に保持した値を符号列Ｄ（ｘ）の誤り検出値Ｅ（ｘ）として出力するバイト誤り検出値保持部２２２と、新たな記録ブロックＦ（ｘ）の入力毎に誤り検出値保持部２２２のデータをリセットするリセット回路２２３とを有する。ここで、バイト処理演算部２２０は１つのみ図示するが、記録ブロックＦ（ｘ）に含まれる符号列Ｄ（ｘ）の個数分のバイト誤り検出値保持部２２２を有し、各バイト誤り検出値保持部２２２に各符号列Ｄ（ｘ）のバイトデータに対応するバイト誤り検出値がビット処理演算部２１０から供給される。なお、バイト誤り検出値保持部２２２以外の部分は共有することができる。
【０１０１】
カウンタ２０２は、デ・スクランブルされた記録ブロックＦ（ｘ）がバイト単位で入力され、これをカウントして列番号Ｎのカウント値Ｎ及びバイト行番号Ｍのカウント値Ｍを更新すると共にビット処理演算部２１０へバイトデータＤＰ，ｉを供給する機能を有する。上述したように、入力バイトデータＤＰ，ｉにおいてＰは記録バイト順序番号であって、１記録ブロックＦ（ｘ）の符号列Ｄ（ｘ）において記録バイト順序番号Ｐ＝０〜１６４１５、ｉは一のバイトデータに含まれる０〜７番目のビット番号を示し、符号化ビット順序番号が連続する８ビットデータからなる。
【０１０２】
符号列Ｄ(ｘ)は、バイト単位で、図３に示す記録バイト順序番号Ｐの順のバイトデータが、ＤＰ＝０，ｉ→ＤＰ＝１，ｉ→ＤＰ＝２，ｉ→、・・・→ＤＰ＝６５６６２，ｉ→Ｄ６５６６３，ｉと入力される。カウンタ２０２は、データＤＰ，ｉが入力される毎に列カウント値Ｎをインクリメントし、列カウント値Ｎを３０３までカウントすると０にリセットする。そして、列カウント値Ｎを０にリセットするタイミングでバイト行カウント値Ｍをインクリメントする。また、列カウント値Ｎ及び行カウント値Ｍに応じてデータ切り替え回路２０３の切り替えを制御する制御信号を出力する。また、これらのカウント値Ｎ、Ｍに応じて固有代替値テーブル２０４の出力制御、ビット処理演算部２１０の制御、及びバイト処理演算部２２０の制御を行なう各種制御信号を生成し、出力するようにしてもよい。
【０１０３】
例えば、列カウント値Ｎを更新するタイミング、すなわちバイトデータが入力されるデータ入力タイミングで固有代替値テーブル２０４へ制御信号を出力し、固有代替値テーブル２０４に格納される１９の特定固有代替値ＲＭ＝０（＝Ｕ０〜Ｕ１８）のいずれかを選択出力させたり、同様に上記データ入力タイミングでビット処理演算部へ制御信号を出力し、後述する誤り検出中間値を０にリセットさせたり、又はバイト行カウント値Ｍを２１５までカウントした後０にリセットするタイミング、すなわち１つの記録ブロックＦ（ｘ）の全符号列Ｄ（ｘ）の入力が終了したタイミングでバイト処理演算部２２０へ制御信号を出力し、リセット回路２２３の出力を０にリセットさせたりすることができる。
【０１０４】
データ切り替え回路２０３には、代替値テーブル２０４から現在の入力バイトデータが属する行カウント値Ｍに対応する固有代替値と、更新用固有代替値テーブル２０６に保持された次の行に対応する更新代替値Ｒ'Ｍと、特定固有代替値テーブル２０７に保持された特定固有代替値ＲＭ＝０とが入力される。除算器２０５は、代替値テーブル２０４からの代替値を受け取り、後述する所定の演算をすることで現在の行の次の行の代替値である更新代替値Ｒ'Ｍを算出するものであり、この更新代替値Ｒ'Ｍは更新用固有代替値テーブル２０６に格納される。
【０１０５】
データ切り替え回路２０３は、バイト行カウント値Ｍが２１５→０になるタイミングで特定固有代替値ＲＭ＝０を選択して代替値テーブル２０４に出力する。バイト行カウント値Ｍが２１５→０となるタイミング以外の場合は、バイト行カウント値Ｍがインクリメントされその更新信号が入力される毎に更新用固有代替値テーブル２０６からの、次の行に対応する更新代替値Ｒ'Ｍを選択して代替値テーブル２０４に出力する。代替値テーブル２０４は、列カウント値Ｎがインクリメントされるタイミング（データが入力されるタイミング）で、現在格納されている１９個の特定固有代替値ＲＭのうち０行目に対応する代替値から順次選択し、補正代替値ＲＰとして補正代替値出力部２０８へ出力する。
【０１０６】
更新用固有代替値テーブル２０６は、除算器２０５により現在の代替値を次の行の入力バイトデータに対応する固有代替値とされた更新代替値Ｒ'Ｍを保持し、バイト行カウント値Ｍが更新される毎にこれを出力する。特定固有代替値テーブル２０７には、本実施の形態においては、１６４１６ビットからなる符号列Ｄ（ｘ）において、記録バイト順序番号Ｐ＝０〜１９の７ビット目のビットデータ（データＤＰ＝０，７〜ＤＰ＝１９，７）に対応する代替値Ｕ０〜Ｕ１８を特定固有代替値ＲＭ＝０として有する。
【０１０７】
なお、本実施の形態においては、０〜１８番目に入力される各バイトデータの７ビット目に対応する代替値ＲＭ＝０＝Ｒ０，７〜Ｒ１８，７を特定固有代替値として保持するものとして説明するが、特定固有代替値はこれに限らず、いずれの符号列セットにおけるいずれの１行に対応する固有代替値ＲＰであってもよく、この固有代替値ＲＰは、バイトデータにおける８つのビットデータのいずれのビットデータに対応する代替値であってもよい。
【０１０８】
本実施の形態においては、この１９個の特定固有代替値ＲＭ＝０を各行毎の固有代替値ＲＭとなるよう更新演算して更新代替値Ｒ'Ｍとすることで、予め保持する代替値の数をわずか１９個の特定固有代替値ＲＭ＝０のみとするものである。
【０１０９】
除算器２０５は、シフト・レジスタ２００と逆のシフト演算を行なうシフト・レジスタである。図１６は、除算器２０５を示す図である。除算器２０５は、１９個の固有代替値ＲＰ，７が入力されるとこれを８回シフトし、１行次の代替値を出力する。例えば、０行目の特定固有代替値ＲＭ＝０は８回のシフト動作により１行目の特定固有代替値ＲＰ＝３０４，ｉ＝７〜ＲＰ＝３２２，ｉ＝７とされる。
【０１１０】
ビット処理演算部２１０は、入力バイトデータＤＰ，ｉをビットデータに変換するパラレル／シリアル変換回路（以下、Ｐ／Ｓ回路という。）２１１と、Ｐ／Ｓ回路２１１の出力に応じて補正代替値出力部２０８の出力を選択する切り替え回路２１２と、誤り検出値中間値保持部２１３と、切り替え回路２１２と誤り検出値中間値保持部２１３との出力の排他的論理和を求める論理回路（ＸＯＲ）２１４と、ＸＯＲ２１４の出力を除算する除算器２１５、除算器２１５の出力又は０を選択して出力する切り替え回路２１６と、ＸＯＲ２１４の出力であるビット誤り検出値が８回更新される毎にバイト誤り検出値を出力するビット誤り検出値保持部２１７とを有する。
【０１１１】
Ｐ／Ｓ回路２１１は、８ビットのバイトデータＤＰ，ｉをシリアルに変換し、１ビット毎に順次出力する。切り替え回路２１２は、シリアルに変換された入力ビットデータＤＰ，ｉが「０」であるときは、「０」を出力し、「１」であれば、補正代替値出力部２０８の出力（補正代替値）を選択する。除算器２１５は、図１１に示すシフト・レジスタ２００であり、ＸＯＲ２１４の出力結果を除算する。切り替え回路２１６は、１バイトの演算が終了するまで除算器２１５の出力を選択し、１バイト、すなわち８回演算が終了する毎に０を選択して出力する。誤り検出中間値保持部２１３は、除算器２１５の除算結果を誤り検出中間値ＣＰ，ｉとして保持する。そして、ＸＯＲ２１４は、誤り検出中間値保持部２１３により保持される誤り検出中間値ＣＰ，ｉとデータＤＰ，ｉに対する補正代替値又は０との排他的論理和を求め、ビット誤り検出値ＥＰ，ｉとしてビット誤り検出値保持部２１７に出力する。
【０１１２】
例えば、入力バイトデータＤＰ，ｉがＰ／Ｓ回路２１１に入力されるとＰ／Ｓ回路２１１は、シリアルデータＤＰ，０、データＤＰ，１、・・・、データＤＰ，７を順次出力する。ここでは、入力された一のバイトデータの符号化ビット順序番号ｑがｑ＋７〜ｑであるとする。その場合、ｂｑ＋７〜ｂｑ＋０に対応するビットデータからなるバイトデータがＤＰ，ｉとして入力される。その場合、Ｐ／Ｓ回路２１１からは、ＭＳＢからｂｑ＋７→ｂｑ＋６→ｂｑ＋５→ｂｑ＋４→ｂｑ＋３→ｂｑ＋２→ｂｑ＋１→ｂｑ＋０の順で１ビット毎にビットデータが入力される。また、補正代替値出力部２０８には、補正代替値ＤＰ，ｉ＝７＝ＲｑとしてＸｑｍｏｄＧ（ｘ）が保持されているものとする。
【０１１３】
最初の１ビット目ｂｑ＋７が入力されると、ビット誤り検出値保持部２１７には、
ＥＰ，０＝ｂｑ＋７Ｘｑ＋１ｍｏｄＧ（ｘ）＋ＣＰ，０
が格納される。なお、誤り検出中間値ＣＰ，０＝０である。
【０１１４】
この値が除算器２１５にて除算されて下記の誤り検出中間値が生成され、誤り検出中間値保持部２１３に保持される。
ＣＰ，１＝（ｂｑ＋７Ｘｑ＋１ｍｏｄＧ（ｘ））ｍｏｄＧ（ｘ）＝ｂｑ＋７Ｘｑ＋１ｍｏｄＧ（ｘ）
【０１１５】
次いで、２ビット目ｂｑ＋６が入力されると、ビット誤り検出値保持部２１７には、
ＥＰ，１＝ｂｑ＋６ＸｑｍｏｄＧ（ｘ）＋ｂｑ＋７Ｘｑ＋１ｍｏｄＧ（ｘ）＝（ｂｑ＋６Ｘｑ＋ｂｑ＋７Ｘｑ＋１）ｍｏｄＧ（ｘ）
が格納される。同様に、この値が除算器２１５にて除算されて下記の誤り検出中間値が生成され、誤り検出中間値保持部２１３に保持される。
ＣＰ，２＝（（ｂｑ＋６Ｘｑ＋１＋ｂｑ＋７Ｘｑ＋２）ｍｏｄＧ（ｘ））ｍｏｄＧ（ｘ）＝（ｂｑ＋６Ｘｑ＋１＋ｂｑ＋７Ｘｑ＋２）ｍｏｄＧ（ｘ）
【０１１６】
こうして、最終的に８ビット目ｂｑ＋０が入力された時点でのビット誤り検出値は、
ＥＰ，７＝（ｂｑ＋７Ｘｑ＋７＋ｂｑ＋６Ｘｑ＋６＋ｂｑ＋５Ｘｑ＋５＋ｂｑ＋４Ｘｑ＋４＋ｂｑ＋３Ｘｑ＋３＋ｂｑ＋２Ｘｑ＋２＋ｂｑ＋１Ｘｑ＋１＋ｂｑ＋０Ｘｑ＋０）ｍｏｄＧ（ｘ）
となる。この値は、１バイトデータについて誤り検出値を算出したバイト誤り検出値Ｅｐである。
【０１１７】
バイト誤り検出値ＥＰは、１バイト毎にバイト処理演算部２２０に出力される。バイト処理演算部２２０のＸＯＲ２２１に供給されたバイト誤り検出値ＥＰは、２０５２バイト分のＸＯＲが演算されたところで誤り検出値Ｅ（ｘ）として出力される。バイト誤り検出値保持部２２２は、例えば３２個の保持部からなり、列カウント値Ｎに応じて１０又は９バイト毎にＸＯＲ２２１の結果を保持することで、各符号列Ｄ（ｘ）に対応する値を保持する。そして、１記録ブロックＦ（ｘ）のバイト誤り検出値ＥＰが入力される間、各保持部の値が順次ＸＯＲ２２１からの値に更新される。リセット回路２２３は、カウンタ２０２からの制御信号に基づきバイト誤り検出値保持部２２２の出力又は０を選択出力する。ここで、１記録ブロックＦ（ｘ）の入力が終了し、次の記録ブロックＦ（ｘ）の各符号列Ｄ（ｘ）の最初のバイト誤り検出値ＥＰが入力されるタイミングの間、すなわち、行カウント値Ｍ＝０、Ｎ＝０、１０、１９、２９、・・のタイミングで０を出力し、それ以外のタイミングではバイト誤り検出値保持部２２２の出力をそのまま出力するよう構成される。なお、バイト誤り検出値保持部２２２の各保持部に保持している値を誤り検出値Ｅ（ｘ）として出力した後、０にリセットするようにしてもよい。
【０１１８】
６．誤り検出方法 
次に、このように構成された誤り検出回路の動作について説明する。図１７は、本実施の形態における誤り検出回路２０１の動作を示すフローチャートである。ここでは、説明の簡単のため、１６４１６ビットの符号列Ｄ０（Ｄｑ＝０〜Ｄｑ＝１６４１６＝{１００００００００・・・・・・００００００００１}）が入力される場合の誤り検出値の求め方について説明する。ここで、ｑは符号化ビット順序番号であり、符号列Ｄ０が実際に入力される順序は、記録バイト順序番号Ｐの順である。すなわち、符号列Ｄ０は、記録ビット順序番号ｐの順に処理されるが、各ビットデータには、入力順序である記録ビット順序番号ｐとは異なる符号化ビット順序番号ｑが対応付けられている。符号列Ｄ０とは、この符号化ビット順序番号ｑの順に符号列Ｄ０を並び替えた場合に、最上位ビットと最下位ビットのみが「１」、その他のビットが「０」である符号列とする。ここで求める誤り検出値は、この符号列Ｄ０をビット順序番号ｑの順（＝{１００００００００・・・・・・００００００００１}）に並び替え、図１１に示すシフト・レジスタ２００に入力して得ることができるシフト・レジスタ値である。なお、上述したように、実際には、検出回路２０１に対して、３２の符号列からなる記録ブロックＦ（ｘ）がバイト単位で記録バイト順序番号Ｐの順で順次入力される。
【０１１９】
まず、記録ブロックＦ（ｘ）の記録バイト順序番号Ｐ＝０番目のバイトが入力されるタイミングで特定固定代替値テーブル２０７の特定固有代替値Ｕ０〜Ｕ１９をロードし、データ切り替え回路２０３を介して固有代替値テーブル２０４に格納する（ステップＳＰ２１）。ここで、記録ブロックＦ（ｘ）の記録バイト順序番号Ｐ＝０番目以外であって、行カウント値Ｍが更新した場合には、更新代替値テーブル２０６に格納されている更新用固有代替値をロードする。固有代替値テーブル２０４は、一の行目のバイトデータの入力が終了するまで、例えば０行目であれば、バイトデータＤＰ＝０，ｉ〜ＤＰ＝３０４，ｉの入力が終了するまで１９個の固定代替値を順次出力する。この場合、固有代替値テーブル２０４は、列番号（列カウント値）Ｎを１９で割った余りの０〜１８をポインタ（Ｎ  ｍｏｄ１９）とし、ポインタの示す列に対応する特定固有代替値を、補正代替値出力部２０８へ出力する（ステップＳＰ２２）。ここで、０番目のバイトデータの固有代替値、すなわち記録バイト順序番号Ｐ＝０番目のバイトデータの７ビット目のビットデータＤＰ＝０，７に対応する代替値ＲＰ＝０，７は、Ｘの１６４０８次のデータ（Ｘ１６４０８）のみを「１」としたデータ（代替符号列＝{００００００００１・・・・００００００００}（１６４１６バイト））のｍｏｄＧ（ｘ）、すなわち、当該代替符号を図７のシフト・レジスタ３０にて除算した３２ビットのシフト・レジスタ値（１８４６１Ｆ４０ｈ）に等しい。
【０１２０】
そして、０バイト目のデータＤＰ＝０，ｉ＝{１０００００００（８０ｈ）}をカウンタ２０２に入力する（ステップＳＰ２３）。バイトデータＤＰ＝０，ｉは、符号化ビット順序番号ｑ＝１６４１５〜１６４０８のデータである。このとき、誤り検出中間値ＣＰ，ｉ＝Ｃ０，０は０でリセットされている。０番目に入力されるデータＤＰ＝０，ｉは、Ｐ／Ｓ回路２１１にて８ビットのシリアルデータに変換され、１ビット毎に順次切り替え回路２１２に出力され（ステップＳＰ２４）、ＸＯＲ２１４が誤り検出中間値ＣＰ，ｉ＝Ｃ０，０と切り替え回路２１２の出力ＢＰ，ｉとの排他的論理和を演算し、ビット誤り検出値保持部２１７のビット誤り検出値ＥＰ，０を更新する（ステップＳＰ２５）。本例においては、最初の０ビット目のデータＤＰ＝０，０＝１であるため、切り替え回路２１２は補正代替値（ＸｑｍｏｄＧ（ｘ）＝ＲＰ，７、ここでＧ（ｘ）＝Ｘ３２＋Ｘ３１＋Ｘ４＋１）を出力する。本例においては１８４６１Ｆ４０ｈの補正代替値ＲＰ＝０，７と誤り検出中間値ＣＰ，ｉ＝Ｃ０，０＝０とをＸＯＲした値ＥＰ＝０，０がビット誤り検出値保持部２１７に保持される。
【０１２１】
ここで、８ビット全ては終了していないため（ステップＳＰ２６：Ｎｏ）、ＸＯＲ２１４の出力ＥＰ＝０，０が除算器２１５にて除算されて誤り検出中間値（ＣＰ＝０，１＝ＥＰ＝０，０ｍｏｄＧ（ｘ）＝ＲＰ＝０，６）とされ、誤り検出中間値保持部２１３に保持される。
【０１２２】
本例においては、０ビット目の入力後、ＲＰ＝０，７＝ＥＰ＝０，０＝１８４６１Ｆ４０ｈのｍｏｄＧ（ｘ）が算出され、その結果、ＣＰ＝０，１＝３０８Ｃ３Ｅ８０ｈ＝{０００００００１０・・・００００００００}が誤り検出中間値保持部２１３に保持される。これは、Ｘ１６４０８のみ「１」の代替符号列をシフト・レジスタ３０にて１回左にシフトしたデータである。この値は、Ｘ１６４０９のみ「１」の代替符号列（＝{０００００００１０・・・・００００００００}）（１６４１６バイト））のｍｏｄＧ（ｘ）、すなわち、Ｘ１６４０９のみ「１」の代替符号列を図７のシフト・レジスタ３０にて除算した３２ビットのシフト・レジスタ値（３０８Ｃ３Ｅ８０ｈ）（＝Ｒ０，６）に等しい。
【０１２３】
次に、０バイト目の１ビット目のデータＤＰ＝０，１＝０であるため、補正代替値ＲＰ，７は選択されず、上述の誤り検出中間値ＣＰ＝０，１がＸＯＲ２１４を介してビット誤り検出値保持部２１７にロードされる（ステップＳＰ２７）。
【０１２４】
すなわち、切り替え回路２１２に入力されるビットデータＤＰ，ｉが「１」であれば、切り替え回路２１２の出力ＢＰ，ｉ＝Ｒｑとなり、ＤＰ，ｉが「０」であれば切り替え回路２１２の出力ＢＰ，ｉ＝０となる。７ビット目の入力において除算器２１５には誤り検出中間値ＣＰ，ｉ＋切り替え回路２１２の出力Ｂｑ，ｉが入力され、誤り検出中間値保持部１１３に（ＣＱ，ｉ＋ＢＱ，ｉ）ｍｏｄＧ（ｘ）が保持される。
【０１２５】
そして、本例の場合は、残り２〜７ビット目までのデータＤＰ＝０，２〜ＤＰ＝０，７＝０であるため、誤り検出中間値が除算器２１５にて除算された値が順次ビット誤り検出値保持部２１７にロードされる。すなわち、０ビット目の入力によりＸ１６４０８のみを「１」とした代替符号列のｍｏｄＧ（ｘ）がビット誤り検出値保持部２１７にロードされ、以降１〜７ビット目の入力により、除算器２１５にて除算が繰り返され、Ｘ１６４０８ｍｏｄＧ（ｘ）→Ｘ１６４０９ｍｏｄＧ（ｘ）→・・・→Ｘ１６４１５ｍｏｄＧ（ｘ）となり、０バイト目の最終ビットである７ビット目のデータＤＰ＝０，７が入力された時点ではビット誤り検出値保持部２１７には、Ｘ１６４１５ｍｏｄＧ（ｘ）が保持されることなる。
【０１２６】
８回の演算が終了すると（ステップＳＰ２６：Ｙｅｓ）、誤り検出中間値ＣＰ，ｉが０にリセットされ、ビット誤り検出値保持部２１７に保持されているビット誤り検出値Ｅ０，７がバイト処理演算部２２０のＸＯＲ１２１に出力される（ステップＳＰ２７）。本例においては、ビット誤り検出値ＥＰ＝０，７＝２３０Ｆ９０８８ｈが出力される。そして、バイト誤り検出値の初期値（＝０）とＸＯＲされた値がバイト誤り検出値保持部２２２に保持される（ステップＳＰ２８）。このように、バイト誤り検出値保持部２２２には、過去のビット誤り検出値ＥＰ，７（８ビット毎の演算値）を積分した値Ｅ（ｘ）Ｐ−１が格納されており、この値Ｅ（ｘ）Ｐ−１とビット処理演算部２１０にて演算されたビット誤り検出値ＥＰとが各符号列Ｄ（ｘ）毎に順次ＸＯＲされ、バイト誤り検出値の値Ｅ（ｘ）Ｐが更新されていく。
【０１２７】
１バイトの誤り検出値の演算が終了すると、カウンタ２０２は、列カウント値Ｎをインクリメントする（ステップＳＰ２９）。列カウント値Ｎが３０３→０である場合（ステップＳＰ３０：Ｙｅｓ）にはバイト行カウント値Ｍを更新し（ステップＳＰ３１）、それ以外の値である場合にはステップＳＰ２２からの処理を繰り返す。また、バイト行カウント値Ｍの値を更新した場合には、更新用固有代替値テーブル２０６に読み込まれている更新用固有代替値を代替値テーブル２０４にロードし（ステップＳＰ２１）、ステップＳＰ２２以降の処理を繰り返す。また、バイト行カウント値Ｍが２１５→０である場合（ステップＳＰ３２：Ｙｅｓ）、すなわち１つの記録ブロックＦ（ｘ）、３２の符号列Ｄ（ｘ）の誤り検出値Ｅ（ｘ）の算出が終了した場合は、各誤り検出値Ｅ（ｘ）を出力する（ステップＳＰ３３）。そして、次の記録ブロックの誤り検出値の算出を行なう場合（ステップＳＰ３４：Ｙｅｓ）は、ステップＳＰ２１からの処理を繰り返す。この場合には、代替値テーブル２０４は特定固有代替値テーブル２０７の特定固有代替値をロードし（ステップＳＰ２１）、ステップＳＰ２２からの処理を繰り返す。
【０１２８】
本例においては、符号化ビット順序番号ｑの順でＭＳＢ及びＬＳＢ以外は全て０であるので、０バイト目以降、記録バイト順序番号Ｐ＝３２５３６番目まで、バイト誤り検出値保持部２２２に保持されている値はＥＰ＝０，７＝２３０Ｆ９０８８ｈのままとなる。そして、符号列Ｄ０において、記録バイト順序番号Ｐ＝３２５３７番目のバイトデータＤＰ＝３２５３７，ｉ＝０００００００１ｂが入力されると、これに対応する補正代替値ＲＰ＝ＸｑｍｏｄＧ（ｘ）＝Ｆ８１ＦＦ９４９ｈが更新用固有代替値テーブル２０６からロードされる。バイトデータＤＰ＝３２５３７，ｉ＝Ｄｑ＝７〜Ｄｑ＝０、すなわち符号列Ｄ０の符号化バイト順序番号Ｑ＝２０５１の最終バイトである。この補正代替値ＲＰ＝ＸｑｍｏｄＧ（ｘ）＝Ｆ８１ＦＦ９４９ｈは、Ｘ０のみ「１」の代替符号列（＝{００００００００・・・・０００００００１}）をシフト・レジスタ３０にて除算した値に等しい。
【０１２９】
ビット処理演算部２１０にバイトデータ（ＤＰ，ｉ）が入力されと、シリアルデータに変換される（ステップＳＰ３、４）。このとき誤り検出中間値ＣＰ，ｉは０にリセットされている。０〜６ビット目まではデータＤＰ，０〜ＤＰ，６＝０なのでビット誤り検出値は０である（ステップＳＰ５〜ＳＰ１０）。そして、最終ビットのデータＤＰ，７＝１なので補正代替値ＸｑｍｏｄＧ（ｘ）＝Ｆ８１ＦＦ９４９ｈがビット誤り検出値保持部２１７にロードされ、これがバイト誤り検出値ＥＰ＝３２５３７／Ｑ＝２０５１として出力され、積分されている過去のバイト誤り検出値とＸＯＲされる。符号列Ｄ０は、その他のビットは全て０であるので、ここでは、Ｅ（ｘ）＝Ｅ０＋ＥＱ＝２０５１（＋はＸＯＲを示す。）、すなわち、Ｘ１６４１５のｍｏｄＧ（ｘ）とＸ０のｍｏｄＧ（ｘ）の和＝（Ｘ１６４１５＋Ｘ０）ｍｏｄＧ（ｘ）（＋はＸＯＲを示す。）が出力されることとなる。この値は、Ｄ（ｘ）をシフト・レジスタ３０にて除算した余り＝誤り検出値Ｅ（ｘ）となっている。
【０１３０】
このように、本実施の形態においては、誤り検出値をシフト・レジスタ３０に符号化順序で入力しなくても求めることができる。したがって、ディスクに記録されたデータの読み出し順序にかかわらず誤り検出値を算出することができる。従来は、シフト・レジスタに符号化順序で入力して得た誤り検出符号を付加したデータを記録し、これを読み出して上記シフト・レジスタと同一の演算器に入力して誤り検出値を算出する方法としていたため、記録順序（読み出し順序）が符号化順序と異なる場合には、記録ブロック単位で読み出したデータを一旦符号化順序に並べ替え、その後シフト・レジスタにデータに入力して誤り符号を生成及び誤り検出値の算出を行なっていた。しかし、このような方法であると、各データの並び順を変更するためバッファに記録ブロックをそのまま格納する必要があり、再生データの処理時におけるバッファの占有率が高くなってしまっていた。これに対し、本実施の形態の如く、シフト・レジスタに符号化順序に入力することなく、テーブルを参照することで、読み出し順序で誤り検出値を算出するようにしたので、誤り検出値の算出時には記録ブロック毎保持するバッファを不要とすることができる。
【０１３１】
また、データの配置の規則性に基づき、繰り返し使用される代替値のみを保持するようにし、テーブルに記憶する代替値を更新して使用することで、代替値の数を省略することができ、テーブルを小さくすることができる。
【０１３２】
７．記録装置 
また、本実施の形態においては、再生装置における誤り検出回路について説明したが、上述したごとく、記録装置において誤り検出符号を付加する際も同様に構成することができ、シフト・レジスタ２００を使用しなくても、使用した場合と同一の演算を行なうことができる。この場合においても、ユーザ・データの誤り検出符号を、符号化順序番号の順ではなく、記録バイト順序番号の順に算出することができ、従来のように、記録ブロック毎バッファに一旦格納して、符号化バイト順序番号の順に並び変える必要がない。
【０１３３】
図１８は記録装置を示すブロック図である。記録装置においては、ホストから渡されたユーザ・データからＥＤＣ付加回路３１８において誤り検出符号を生成する。そして、ユーザ・データにＥＤＣ符号を付加した符号列をスクランブル回路３１９にてスクランブルする。
【０１３４】
スクランブルされたスクランブル済データは、誤り訂正符号化回路３２０にてメイン・データが誤り訂正符号化されメインメモリ３１５に格納される。また、入出力部３２１からの補助データ（ＢＩＳ）の誤り訂正符号化が行なわれる。スクランブル回路３１９によりスクランブルされたデータは、メインメモリ３１５に格納されている誤り訂正符号と結合部３１４にて結合されてローテンション３１１へ供給されローレーションされる。また、補助データはＢＩＳメモリ３１６を介してインターリーブ３１３にてインターリーブされる。統合部３１１は、ローテーションされたメイン・データとインターリーブされた補助データとを統合し、ＥＣＣクラスタとして出力する。このＥＣＣクラスタは変調後、ディスクに書き込まれる。
【０１３５】
ここで、本実施の形態におけるＥＤＣ付加回路３１８には、ホスト３２６からのユーザ・データが、入力部３２２を介して記録バイト順序番号Ｑの順で入力される。このＥＤＣ付加回路３１８は、ユーザ・データを符号化バイト順序番号Ｑで上述のシフト・レジスタ２００に入力することで生成した誤り検出符号ＥＤＣ（ｘ）を当該ユーザ・データに付加することで符号列Ｄ（ｘ）を生成する。
【０１３６】
このＥＤＣ付加回路３１８は、上述の誤り検出回路と同様に構成することができる。すなわち、少なくとも特定固有代替値を保持するテーブルと、この特定固有代替値から固有代替値を生成するシフト・レジスタとを有し、バイト単位の誤り検出符号を算出するビット処理演算部に固有代替値を出力する。更に、これらの値の排他的論理和を求めて誤り訂正符号を出力するバイト処理演算部を有する。また、代替値も上述と同様に、用意することができる。すなわち、代替値はユーザ・データの各ビットデータの符号化ビット順序番号ｑのそれぞれに対応する値であって、代替符号列を図１１に示すシフト・レジスタに入力することで得ることができる。ここで、符号列は、２０４８バイトのユーザ・データに、全て「０」の４バイトのデータを付加して２０５２バイトとしたデータとすることで、上述と全く同じ方法により誤り検出符号を付加したデータを得ることができる。すなわち、符号列を上述と同様に２０５２バイト、１６４１６ビットとし、符号列の各ビットデータに符号化ビット順序番号ｑを対応づけることができ、代替符号列は、その符号化ビット順序番号ｑに対応した所定のビットデータのみ「１」、その他のビットデータが全て「０」とした符号列とすることができる。
【０１３７】
このＥＤＣ付加回路３１８から出力される符号列は、記録バイト順序番号Ｐの順でスクランブル回路３１９へ入力される。スクランブル回路３１９は、符号化バイト順序番号Ｑに対応したスクランブル値ＳＱからデ・スクランブルされるデータであって、符号化バイト順序番号Ｑが対応づけられるスクランブル済データＳＤＱを、ＥＤＣ（ｘ）が付加された符号列から生成する。
【０１３８】
スクランブル済データＳＤＱは、上述のデ・スクランブル済データと同様、入力バイトデータＤＱと、入力バイトデータＤＱの符号化バイト順序番号Ｑに対応したスクランブル値ＳＱとから算出される。スクランブル回路３１９においても、記録バイト順序番号Ｐで入力されるバイトデータに対する符号化バイト順序番号Ｑに応じたスクランブル値ＳＱを生成するスクランブル値生成部を有しており、生成されたスクランブル値ＳＱと、記録バイト順序番号Ｐで入力されるバイトデータＤＱとからスクランブル済データＤＳＱを生成する点は上述のデ・スクランブル回路と同様である。こうしてスクランブル回路３１９から記録バイト順序番号Ｐの順でスクランブル済データが誤り訂正符号化回路３２０へ入力される。
【０１３９】
また、記録再生装置とした場合は、誤り符号付加回路及び誤り検出回路、スクランブル回路及びデ・スクランブル回路における同一の構成部分の演算器等を共有することができる。すなわち、データを記録する場合であっても、データを読み出す場合であっても、スクランブル／デ・スクランブル処理、及び誤り符号付加／誤り検出処理の際にデータを並び変える必要がないのでメモリ３２４の使用を不要とすることができる。
【０１４０】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、各処理と論理構成との関係は上記例に限定されるものではない。設計者は、効率的な機能及び回路構成によって、各回路及びディスク装置を設計することができる。
【図面の簡単な説明】
【０１４１】
【図１】本発明の実施の形態にかかる再生装置の信号処理回路の一部を示す概略を示すブロック図である。
【図２】ブルーレイディスクにおける記録ブロックのバイト単位のデータの並び順を説明する図である。
【図３】２つの符号列（Ｄ０，Ｄ１）を拡大して示す図である。
【図４】バイトデータの符号化方向及び記録方向におけるビットの並び順を説明する模式図である。
【図５】スクランブル・データＳｉを生成するスクランブラとしてのフト・レジスタを示す図である。
【図６】本発明の実施の形態にかかる再生装置におけるデ・スクランブル回路を示すブロック図であり、
【図７】図６に示すデ・スクランブル回路の詳細を示す図である。
【図８】上記デ・スクランブル回路における１０８回ＳＦＲ４１を示す回路図である。
【図９】上記デ・スクランブル回路における２１６回ＳＦＲ４２を示す回路図である。
【図１０】本発明の実施の形態にかかる再生装置におけるデ・スクランブル方法を示すフローチャートである。
【図１１】誤り検出符号及び誤り検出をする際の演算器を示す図である。
【図１２】ブルーレイディスクにおける記録ブロックのビット単位のデータの並び順を説明する図である。
【図１３】２つの符号列（Ｄ０，Ｄ１）を拡大して示す図である。
【図１４】本発明の実施の形態にかかる誤り検出値算出方法を説明する図である。
【図１５】本発明の実施の形態にかかる再生装置における誤り検出回路の具体的な構成を示すブロック図である。
【図１６】上記誤り検出回路における除算器２０５を示す図である。
【図１７】本発明の実施の形態にかかる再生装置における誤り検出方法を示すフローチャートである。
【図１８】本発明の実施の形態にかかる記録装置の信号処理回路の一部を示す概略を示すブロック図である。
【符号の説明】
【０１４２】
１２  メインシンドローム生成部、１２  ローテーション、
１３  デ・インターリーブ回路、１４  メインシンドローム生成部、
１５  メインメモリ、１６  ＢＩＳメモリ、１７  ＢＩＳシンドローム生成部、
１８  デ・スクランブル回路、１９，２０１  誤り検出回路、
２０  誤り訂正回路、２１  入出力部、２２  出力部、
２３  バス、２４  メモリ、２５  ホストインターフェース回路、
３０，２００  シフト・レジスタ、
４０  スクランブル値生成部、４４  セクタ・スクランブル初期値記憶部、
４５  スクランブル初期値記憶部、４６  スクランブル初期値記憶部、
４７，４８，４９，２０３，２１６  切り替え回路、
４９  スクランブル初期値記憶部、５０  制御回路、
５１，２０２  カウンタ、５２  制御信号生成部、
１００  記録ブロック、１１３  検出中間値保持部、
２０７  特定固有代替値テーブル、２０４  更新初期値テーブル、
２０４  固有代替値テーブル、２０５，２１５  除算器、
２０６  更新用固有代替値テーブル、２０７  特定固定代替値テーブル、
２０８  補正代替値出力部、２１０  ビット処理演算部、
２１１  Ｐ／Ｓ回路、２１２  切り替え回路、
２１３  誤り検出値中間値保持部、２１７  ビット誤り検出値保持部、
２２０  バイト処理演算部、２２２  バイト誤り検出値保持部、
２２３  リセット回路、３１８  誤り符号付加回路、
３１９  スクランブル回路、３２０  訂正符号化回路、
ＸｑｍｏｄＧ  補正代替値、ＣＰ，ｉ  検出中間値、Ｆ（ｘ）  記録ブロック、
Ｄ（ｘ）  符号列、ｄ（ｘ）  代替符号列、ＥＰ，ｉ  ビット誤り検出値、
ＥＰ  バイト誤り検出値、Ｅ（ｘ）  誤り検出値、
Ｍ  行カウント値、Ｎ  列カウント値、
Ｐ  記録バイト順序番号、ｐ  記録ビット順序番号、
Ｑ  符号化バイト順序番号、ｑ  符号化ビット順序番号
【図１】
2006155836.tif 000003
【図２】
2006155836.tif 000004
【図３】
2006155836.tif 000005
【図４】
2006155836.tif 000006
【図５】
2006155836.tif 000007
【図６】
2006155836.tif 000008
【図７】
2006155836.tif 000009
【図８】
2006155836.tif 000010
【図９】
2006155836.tif 000011
【図１０】
2006155836.tif 000012
【図１１】
2006155836.tif 000013
【図１２】
2006155836.tif 000014
【図１３】
2006155836.tif 000015
【図１４】
2006155836.tif 000016
【図１５】
2006155836.tif 000017
【図１６】
2006155836.tif 000018
【図１７】
2006155836.tif 000019
【図１８】
2006155836.tif 000020