(57)【特許請求の範囲】
【請求項１】
第１の順序を有するユーザ・データ符号列の誤りを検出する誤り検出符号を算出する記録装置であって、
前記ユーザ・データ符号列を含むセクタを２以上有するブロックを処理単位とし、
前記ブロックは、第１セクタ及び第２のセクタを有し、前記第１及び第２のセクタは、前記第１の順序で読み出した場合には前記誤り検出符号が前記ユーザ・データ符号列の最後に付加される構成を有し、前記第１のセクタは、前記第１の順序とは異なる第２の順序で読み出した場合には前記誤り検出符号が前記ユーザ・データ符号列の読み出し途中に付加される構成を有し、
前記ブロックを格納したデータ・バッファから、前記第１のセクタにおいて、前記第２の順序で読み出した場合に前記誤り検出符号の後で読み出されるデータを少なくとも含む第１の領域の第１データから誤り検出符号中間値を算出する第１の演算部と、
前記第１の演算部が演算に使用した前記第１データの少なくとも一部を格納するデータ・メモリと、
前記ブロックから前記第１の領域の前記第１データを除いたデータを第２データとして前記データ・バッファから読み出し、当該第２データ及び前記誤り検出符号中間値に基づき誤り検出符号を算出する第２の演算部と、
前記第１データ、第２データ及び誤り検出符号を統合する統合部とを有し、
前記統合部は、前記第２の演算部から前記誤り検出符号及び前記第２データを受け取り、前記データ・メモリから前記第１データを受け取り、これらを統合して出力する記録装置。
【請求項２】
前記第１データを前記データ・メモリから前記統合部に送出する間、前記第１の演算部は、次のブロックにおける第１データを前記データ・バッファから読み出し、第１の誤り検出符号中間値を算出する、請求項１記載の記録装置。
【請求項３】
前記ブロックから算出された誤り訂正符号をディスクに記録する間、前記第１の演算部は、次のブロックにおける第１データを前記データ・バッファから読み出し、前記誤り検出符号中間値を算出する、請求項１又は２記載の記録装置。
【請求項４】
前記第１データは、前記データ・メモリに保存される第１メインデータと、前記誤り検出符号中間値の生成にのみ使用する第１サブデータとを有する請求項１乃至３のいずれか１項記載の記録装置。
【請求項５】
前記第１の演算部は、
前記第１メインデータを前記データ・メモリから前記統合部に送出する間、次のブロックにおける第１メインデータを前記データ・バッファから読み出し、第１の誤り検出符号中間値を算出し、
前記ブロックから算出された誤り訂正符号をディスクに記録する間、次のブロックにおける前記第１サブデータを前記データ・バッファから読み出し、第２の誤り検出符号中間値を算出する、請求項４記載の記録装置。
【請求項６】
前記ブロックは、Ｋ行×Ｌ列（Ｋ、Ｌは正の整数）であり、
前記第１データ及び第１メインデータは、前記第１のセクタの行番号Ｒ２（０≦Ｒ２＜Ｋ）乃至最終行までの夫々第１エリア及び第１メインエリアに格納されるユーザ・データである、請求項１乃至４のいずれか１項記載の記録装置。
【請求項７】
前記ブロックは、Ｋ行×Ｌ列（Ｋ、Ｌは正の整数）であり、
前記第１サブデータは、前記第１セクタの行番号Ｒ１（０≦Ｒ１＜Ｒ２＜Ｋ）乃至行番号Ｒ２の１行前までの第１サブエリアに格納されるユーザ・データである、請求項１乃至５のいずれか１項記載の記録装置。
【請求項８】
前記ブロックは、（Ｋ行×Ｌ列）×Ｍで表すことができ、Ｋ行×Ｌ列のブロックを転送ブロックとし、
第１データ及び第１メインデータは、前記第１のセクタ内の夫々第１エリア及び第１メインエリアに格納されたユーザ・データであって、
前記第１の演算部は、前記第１データ又は第１メインデータを順序Ａで前記データ・バッファから読み出し、
前記順序Ａは、第１エリア又は第１メインエリアにおいて、エリア内転送ブロック昇順、転送ブロック内列昇順、列内行昇順の順序である、請求項１乃至７のいずれか１項記載の記録装置。
【請求項９】
前記ブロックは、（Ｋ行×Ｌ列）×Ｍで表すことができ、Ｋ行×Ｌ列のブロックを転送ブロックとし、
前記第２データは、ブロック内の前記第１メインデータ以外のデータが格納されている第２エリアに格納されたユーザ・データであって、
前記第２の演算部は、前記第２データを順序Ｃで前記データ・バッファから読み出し、
前記順序Ｃは、第２エリアにおいて、エリア内転送ブロック昇順、転送ブロック内列昇順、列内行昇順の順序である、請求項４乃至８のいずれか１項記載の記録装置。
【請求項１０】
前記ブロックは、（Ｋ行×Ｌ列）×Ｍで表すことができ、Ｋ行×Ｌ列のブロックを転送ブロックとし、
前記第１サブデータは、前記第１のセクタ内の第１サブエリアに格納されたユーザ・データであって、
前記第１の演算部は、前記第１サブデータを順序Ｂで前記データ・バッファから読み出し、
前記順序Ｂは、第１サブエリアにおいて、エリア内列昇順、列内行昇順の順序である、請求項１乃至９のいずれか１項記載の記録装置。
【請求項１１】
前記統合部からの前記ユーザ・データ及び誤り検出符号を格納する置き換えバッファを有し、
前記ブロックは、（Ｋ行×Ｌ列）×Ｍで表すことができ、Ｋ行×Ｌ列のブロックを転送ブロックとしたとき、
前記置き換えバッファは、前記第１の順序で入力されたデータを前記第２の順序で出力する、請求項１乃至１０のいずれか１項記載の記録装置。
【請求項１２】
前記第１の順序はユーザ・データ方向の順序であり、前記第２の順序は、記録方向の順序である、請求項１乃至１１のいずれか１項記載の記録装置。
【請求項１３】
前記置き換えバッファは、転送ブロック内列昇順、列内行昇順の順序でデータを格納し、転送ブロック内行昇順、行内列昇順の順序でデータを出力する、請求項１１又は１２記載の記録装置。
【請求項１４】
前記行番号Ｒ２は、前記第１のセクタに付加される誤り検出符号の最終行＋１行以前の行である、請求項６記載の記録装置。
【請求項１５】
１バイトを１行、１列が重複するデータとした場合、前記ブロックは、２１６行（０≦Ｋ≦２１５）、３０４列（０≦Ｌ≦３０３）であって、下記の関係を満たす
０≦Ｒ１≦１０８
０≦Ｒ２≦２１５
０≦Ｐ≦２１５
Ｒ２−Ｒ１＝Ｐ
請求項２乃至７のいずれか１項記載の記録装置。
【請求項１６】
前記ブロックは、ディスクに記録するための最小記録単位であるクラスタに含まれるユーザ・データを含み、
前記第１の順序は前記ブロックの列方向に対応した前記ユーザ・データの符号化順序であって、
前記第２の順序は、前記ブロックの行方向に対応した前記ユーザ・データの記録順序である、請求項１乃至１５のいずれか１項記載の記録装置。
【請求項１７】
前記ブロックは、前記第１及び第２のセクタを有し、
前記第１のセクタは、その最終列の途中に前記誤り検出符号が挿入され、
前記第２のセクタは、その最終列の最後に前記誤り検出符号が挿入される、
請求項１乃至６のいずれか１項記載の記録装置。
【請求項１８】
ユーザ・データは、データ・バッファからバースト転送されるものであって、
前記ｋバイトはバースト転送サイズであり、
前記誤り検出符号は、前記ｋバイト以下からなる、
請求項４又は６記載の記録装置。
【請求項１９】
前記誤り検出符号は、前記第１の順序のユーザ・データ符号列に前記誤り検出符号と同一バイトの０データを付加したｉバイトのセクタに所定の演算を施すことで得られるものであって、
前記第１の順序を対応づけたｉバイトの符号列において、入力されるユーザ・データの前記第１の順序に対応するビットのみを１、他を０として前記所定の演算を施した結果を、そのビットの期待値としたとき、
前記第１の演算部は、入力される前記第１データのビットが１の場合に、その期待値の排他的論理和を順次求めることで前記誤り検出符号中間値を算出し、
前記第２の演算部は、入力される前記第２データのビットが１の場合に、前記誤り検出符号中間値とその期待値の排他的論理和を順次求めることで前記誤り検出符号を算出する
ことを特徴とする請求項１乃至１８のいずれか１項記載の記録装置。
【請求項２０】
前記第１及び第２の演算部は、前記ユーザ・データ符号列内の特定ビットに対応する期待値である初期期待値を参照し、当該初期期待値に基づき前記期待値を算出する
ことを特徴とする請求項１９項記載の記録装置。
【請求項２１】
前記第２の演算部は、前記ブロックにおける最初の行の最上位ビットに対応する期待値である初期期待値を参照し、当該初期期待値に基づき前記期待値を算出し、
前記第１の演算部は、行番号Ｒ１、Ｒ２の最上位ビットに対応する期待値である参照期待値を参照し、当該参照期待値に基づき前記期待値を算出する
請求項１９又は２０記載の記録装置。
【請求項２２】
前記ブロックは、前記第１のセクタ及び前記第２のセクタの組からなるエリアを有し、
前記初期期待値及び参照期待値は、前記エリアにおける最初の行の最上位ビット及び行番号Ｒ１、Ｒ２の最上位ビットの期待値である
ことを特徴とする請求項１９乃至２１のいずれか１項記載の記録装置。
【請求項２３】
第１の順序を有するユーザ・データ符号列の誤りを検出する誤り検出符号を算出する記録方法であって、
前記ユーザ・データ符号列を含むセクタを２以上有するブロックを処理単位とし、
前記ブロックは、第１セクタ及び第２のセクタを有し、前記第１及び第２のセクタは、前記第１の順序で読み出した場合には前記誤り検出符号が前記ユーザ・データ符号列の最後に付加される構成を有し、前記第１のセクタは、前記第１の順序とは異なる第２の順序で読み出した場合には前記誤り検出符号が前記ユーザ・データ符号列の読み出し途中に付加される構成を有し、
第１の演算部は、前記ブロックを格納したデータ・バッファから、前記第１のセクタにおいて、前記第２の順序で読み出した場合に前記誤り検出符号の後で読み出されるデータを少なくとも含む第１の領域の第１データから誤り検出符号中間値を算出し、
第２の演算部は、前記ブロックから前記第１の領域の前記第１データを除いたデータを第２データとして前記データ・バッファから読み出し、当該第２データ及び前記誤り検出符号中間値に基づき誤り検出符号を算出し、
前記第２の演算部から前記誤り検出符号及び前記第２データを受け取り、前記第１の演算部が演算に使用した前記第１データの少なくとも一部を保存するデータ・メモリから前記第１データを受け取り、これらを統合して出力する記録方法。
【請求項２４】
前記第１データを前記データ・メモリから前記統合部に送出する間、次のブロックにおける第１データを前記データ・バッファから読み出し、第１の誤り検出符号中間値を算出する、請求項２３記載の記録方法。
【請求項２５】
前記ブロックから算出された誤り訂正符号をディスクに記録する間、次のブロックにおける第１データを前記データ・バッファから読み出し、第２の誤り検出符号中間値を算出する、請求項２３又は２４記載の記録方法。
【請求項２６】
前記第１データは、前記データ・メモリに保存される第１メインデータと、前記誤り検出符号中間値の生成にのみ使用する第１サブデータとを有する請求項２３乃至２５のいずれか１項記載の記録方法。
【請求項２７】
前記誤り検出符号中間値を算出する際は、
前記第１データを前記データ・メモリから前記統合部に送出する間、次のブロックにおける第１メインデータを前記データ・バッファから読み出し、前記第１の誤り検出符号中間値を算出し、
前記ブロックから算出された誤り訂正符号をディスクに記録する間、次のブロックにおける第１サブデータを前記データ・バッファから読み出し、前記第２の誤り検出符号中間値を算出する、請求項２６記載の記録方法。
【請求項２８】
前記ブロックは、Ｋ行×Ｌ列（Ｋ、Ｌは正の整数）であり、
前記第１データ及び第１メインデータは、前記第１のセクタの行番号Ｒ２（０≦Ｒ２＜Ｋ）乃至最終行までの夫々第１エリア及び第１メインエリアに格納されるユーザ・データである、請求項２３乃至２６のいずれか１項記載の記録方法。
【請求項２９】
前記ブロックは、Ｋ行×Ｌ列（Ｋ、Ｌは正の整数）であり、
前記第１サブデータは、前記第１セクタの行番号Ｒ１（０≦Ｒ１＜Ｒ２＜Ｋ）乃至行番号Ｒ２の１行前までの第１サブエリアに格納されるユーザ・データである、請求項２３乃至２７のいずれか１項記載の記録方法。
【請求項３０】
前記ブロックは、（Ｋ行×Ｌ列）×Ｍで表すことができ、Ｋ行×Ｌ列のブロックを転送ブロックとし、
第１データ及び第１メインデータは、前記第１のセクタ内の夫々第１エリア及び第１メインエリアに格納されたユーザ・データであって、
前記誤り検出符号中間値を算出する際は、前記第１データ又は第１メインデータを順序Ａで前記データ・バッファから読み出し、
前記順序Ａは、第１エリア又は第１メインエリアにおいて、エリア内転送ブロック昇順、転送ブロック内列昇順、列内行昇順の順序である、請求項２６又は２７記載の記録方法。
【請求項３１】
前記ブロックは、（Ｋ行×Ｌ列）×Ｍで表すことができ、Ｋ行×Ｌ列のブロックを転送ブロックとし、
前記第２データは、ブロック内の前記第１メインデータ以外のデータが格納されている第２エリアに格納されたユーザ・データであって、
前記誤り検出符号を算出する際は、前記第２データを順序Ｃで前記データ・バッファから読み出し、
前記順序Ｃは、第２エリアにおいて、エリア内転送ブロック昇順、転送ブロック内列昇順、列内行昇順の順序である、請求項２３乃至３０のいずれか１項記載の記録方法。
【請求項３２】
前記ブロックは、（Ｋ行×Ｌ列）×Ｍで表すことができ、Ｋ行×Ｌ列のブロックを転送ブロックとし、
前記第１サブデータは、前記第１のセクタ内の第１サブエリアに格納されたユーザ・データであって、
前記誤り検出符号中間値を算出する際は、前記第１サブデータを順序Ｂで前記データ・バッファから読み出し、
前記順序Ｂは、前記第１サブエリアにおいて、エリア内列昇順、列内行昇順の順序である、請求項２３乃至３１のいずれか１項記載の記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光ディスクにデータを記録する際の記録速度の向上を図った誤り記録装置及び記録方法に関する。
【背景技術】
【０００２】
図３４は、特許文献１に記載のＢｌｕ−Ｒａｙディスク記録装置である。図３４に示すように、本記録装置１０１は、データ・バッファ１０２と、バッファ・コントローラ１０３と、エンコード回路１０４とを有する。データ・バッファ１０２は、ホスト（不図示）から転送されるユーザ・データをバッファリングする。ホストは、例えばＡＶ（audio- visual）システム又はパーソナル・コンピュータ（ＰＣ）等であって、記録装置１０１に対し、ユーザ・データの記録を指示したり、ディスクに記録されているデータの読み出し指示をするものである。
【０００３】
バッファ・コントローラ１０３は、データ・バッファ１０２からのユーザ・データの読み出しを制御するもので、必要なユーザ・データを適宜読み出しエンコード回路１０４に転送する。ここで、本実施の形態における記録装置は、誤り検出符号（ＥＤＣ）を求めるため、偶数セクタの後半部分のみ、すなわちデータ・ブロック全体でみた場合、約１／４のユーザ・データからＥＤＣ中間値を算出する処理（以下、パス１という。）と、残りの約３／４のユーザ・データ及びＥＤＣ中間値からＥＤＣを算出する処理（以下、パス２という。）を並列して実行する。このため、バッファ・コントローラ３は、データ・バッファ１０２からパス１の処理に使用するためのユーザ・データを読み出し出力するチャンネルＣＨ１と、パス２の処理に使用するためのユーザ・データを読み出し出力するチャンネルＣＨ２を有する。
【０００４】
エンコード回路１０４は、ユーザ・データにＥＤＣを付加し、ＥＤＣが付加されたユーザ・データをスクランブルする。そして、スクランブルしたスクランブル済データ（以下、記録データという。）と、この記録データから得られるＥＣＣとを出力する。ＥＣＣ及び記録データは、ＢＩＳコードと統合され、更に１−７ＰＰ変調が施され、その後ディスクに記録される。
【０００５】
このエンコード回路４は、上記パス１の処理を実行するための、第１の演算部としてのＥＤＣ生成部１３１と、ＥＤＣテーブル１３２及びＥＤＣバッファ１３３とを有する。また、パス２において、ＥＤＣを算出するために、第２の演算部としてのＥＤＣ生成部１３４を有する。パス１の処理においては、ＥＤＣ生成部１３１はＥＤＣテーブル１３２及びＥＤＣバッファ１３３を参照して演算を行なう。ここで、ＥＤＣ生成部１３１がパス１において演算した結果が後述するＥＤＣ中間値となる。このＥＤＣ中間値はＥＤＣバッファ３３に書き戻される。パス２の処理においては、ＥＤＣ生成部１３４はＥＤＣテーブル１３２及びＥＤＣバッファ１３３を参照し、ＥＤＣを算出して、ＥＤＣバッファ１３３に書き戻す。
【０００６】
エンコード回路１０４は、更に、チャンネルＣＨ２から読み出されるユーザ・データにＥＤＣバッファ１３３に格納されたＥＤＣを付加して出力する統合部１３５を有する。また、統合部１３５から出力されるＥＤＣ付きデータをスクランブルするスクランブル回路３６及びスクランブル回路１３６がスクランブル処理の際に必要なスクランブル値を算出するスクランブル値生成部１３７を有する。更に、スクランブル回路１３６にてスクランブルされたスクランブル済データをレコーディング・フレーム方向Ｐの順に並び変えるための置き換えバッファ１３８を有する。これら統合部１３５、スクランブル回路１３６、スクランブル値生成部１３７、及び置き換えバッファ１３８から、ユーザ・データ及びＥＤＣに基づき記録データを算出して出力するスクランブル処理部が構成される。
【０００７】
また、スクランブル済データからＥＣＣを生成するＥＣＣ生成部１３９及びＥＣＣ生成部１３９により生成されたＥＣＣをバッファリングするＥＣＣバッファ１４０を有する。置き換えバッファ１３８からレコーディング・フレーム方向Ｐの順で読み出されたデータは、記録データとして出力される。また、ＥＣＣバッファ１４０のデータは、ＥＣＣパリティとして出力される。この記録データとＥＣＣパリティは、図示せぬ統合部に出力され、記録データに対し行列再配置をし、ＥＣＣを付加してインタリーブをしてＥＣＣクラスタとする。
【０００８】
また、図示しないＢＩＳを生成する他のエンコード装置（ＢＩＳ用エンコード装置）において、ユーザ・コントロール・データ及びアドレス・ユニット・ナンバからアクセス・ブロックを生成し、またＢＩＳＥＣＣを生成する。そして、当該ＢＩＳ用エンコード装置からのアクセス・ブロック及びＢＩＳＥＣＣも上記統合部へ供給され、ＢＩＳブロックを生成し、更にこれをインタリーブしてＢＩＳクラスタとする。そして、ＬＤＣクラスタとＢＩＳクラスタとが結合されたＥＣＣクラスタが生成され、フレームシンク、ＤＳＶ制御ビットを付加したフィジカルクラスタとされる。そして、レコーディング・フレームを１−７ＰＰ変調すると共にランイン及びランアウトが付加されてレコーディングユニットブロックＲＵＢが生成され、ディスクコントローラを介してＲＵＢを１記録単位としてディスクへのデータ記録が実行される。
【０００９】
ところで、Ｂｌｕ−Ｒａｙディスクは、データ記録の前に、予め生成が必要な符号が存在する。そして、オンザフライで記録するため、符号生成と記録処理が並列で実行される。符号生成及び記録処理には、通常、それぞれ１クラスタ、合計２クラスタ分のデータ・バッファに対するデータアクセスが必要である。これに対し、特許文献１に記載の技術においては、符号生成方法の工夫により、データ・バッファに対し０.２５クラスタ分のデータアクセスのみで、符号生成を可能としている。これにより、符号生成及び記録処理におけるデータ・バッファに対するアクセスを１.２５クラスタ分に抑えることで、高倍速化対応を可能とする。
【００１０】
高倍速エンコード実現のためには、高周波数動作クロックで駆動するコスト高のデータ・バッファが必要となり、更に電力消費量が増大する。そこで、特許文献１においては、上記のように、第１の演算部及び第２の演算部を設けている。第１の演算部は、第１の順序としてのユーザ・データ方向Ｑの順で読み出した場合にはＥＤＣがセクタの最後に付加され、ユーザ・データ方向Ｑとは異なる例えばレコーディング・フレーム方向Ｐの順序で読み出した場合にはセクタの読み出し途中にＥＤＣが付加される構成を有する偶数セクタ（演算対象セクタ）については、その一部である後半部分からＥＤＣ中間値を算出する。この処理をパス１という。なお、奇数セクタについては、ＥＤＣ中間値を生成しない。第２の演算部は、前記一部を除いた偶数セクタの残部及びＥＤＣ中間値とから偶数セクタのＥＤＣを算出する。奇数セクタのＥＤＣは、奇数セクタ全体のデータから生成する。この処理をパス２という。これら２つの演算部によりＥＤＣを算出するようにして、データ・バッファへのデータアクセス量を低減させる。このことにより、エンコードスペックの更なる向上を可能とすると共に低消費電力化及び低コスト化を図っている。
【００１１】
図３５は、特許文献１において、パス１、２に使用されるユーザ・データを説明するための図である。エンコード回路の処理単位であるデータ・ブロックは、上記の偶数セクタと奇数セクタとを有する。この特許文献１においては、パス１では第１の順序としてユーザ・データ方向Ｑにデータ・ブロックを読み出す。一方、パス２においては、ユーザ・データ方向Ｑのデータを、レコーディング・フレーム方向Ｐの順序に並び換える。その際に、置き換えバッファを使用する。置き換えバッファは、例えば列方向に、データ・バッファのバースト転送サイズと同じｍバイト、行方向に１クラスタ分の３０４バイトの大きさからなる。この置き換えバッファに、ユーザ・データ方向Ｑのデータをｍバイトずつ、レコーディング・フレーム方向Ｐに３０４バイト分格納し、その後、レコーディング・フレーム方向Ｐにデータを読み出すことで、ユーザ・データ方向Ｑのデータを、レコーディング・フレーム方向Ｐの順序のデータとすることができる。
【００１２】
ところで、偶数セクタは、図３５に示すように、セクタを全部転送する前にＥＤＣを付加する符号列となる。そこで、パス１においては、パス２においてこの演算対象セクタである偶数セクタの一部、すなわちＥＤＣを付加するタイミング以降に読み出すこととなってしまう偶数セクタの後半部分の演算を実行し、ＥＤＣ中間値を求める。パス２においては、偶数セクタの残り及び奇数セクタの全部の演算を実行することで、ＥＤＣを算出する。奇数セクタは、ユーザ・データ方向Ｑの順に読み出した場合であっても、ユーザ・データ方向Ｑの順のバースト転送サイズｍのユーザ・データをレコーディング・フレーム方向Ｐの順に読み出した場合であっても、いずれにおいてもＥＤＣはセクタの最後に付加される構成を有する符号列（非演算対象セクタ）であるため、パス１で予めＥＤＣ中間値を求める必要はない。
【００１３】
このように、特許文献１においては、予め１クラスタ全部を読み出しＥＤＣを生成する、という方法ではなく、偶数セクタの一部のみを読み出しＥＤＣ中間値を生成する。そして、パス２で１クラスタを読み出し記録する際に、同時にＥＤＣを算出する。上述のように、ＥＤＣを同時に算出する場合は、ＥＤＣは全データ読み出し後にしか生成することができないため、偶数セクタについては、記録しながらＥＤＣを生成することができない。よって、ＥＤＣ中間値という、記録が間に合わない部分のみから生成した演算値を使用して、記録しながらＥＤＣを算出することを実現している。なお、ＥＤＣ中間値については、後述する。
【００１４】
このようにして、特許文献１に記載の記録装置は、２クラスタ分ではなく、約１．２５クラスタのアクセスで、ＥＤＣを生成し、データを記録することができる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００７−０４２２３４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ところで、Ｂｌｕ−Ｒａｙ規格データは、クラスタ単位で記録される。１クラスタは、４９８フレームで構成されている。このうち、２フレーム分が記録時のギャップとして用いられるため、実質データ部分は、４９６フレームとなる。更に、最初の４３２フレームにはユーザ・データが記録され、後半６４フレームには、ユーザ・データから生成するＥＣＣが記録される。ＳＲＡＭ（Static Random Access Memory）（以下、ＥＣＣバッファともいう。）を用いれば、ＥＣＣは、この４３２フレーム分の記録データから生成して保存できるため、後半６４フレームの記録期間中は、ＥＣＣバッファに保存されたＥＣＣを用いることでデータ・バッファに対するアクセスが不要となる。
【００１７】
図３６は、従来技術のタイミングチャートである。符号生成と記録処理は同時並列に実行されるが、データ・バッファへは、いずれか一方しかアクセスすることができない。したがって、符号生成と記録処理とで、交互にデータ・バッファにアクセスすることになる。符号生成と記録処理のバッファアクセス間隔が均等の間隔で発生すると考えると、記録処理において後半６４フレームは、ＥＣＣバッファからＥＣＣを読み出し記録する処理となるため、記録処理の方はデータ・バッファにアクセスする必要がない。よって、符号生成に必要なバッファアクセスのみとなる。一方で、記録処理するユーザ・データの存在する前半４３２フレームには、記録処理、符号生成共にデータ・バッファにアクセスする必要が生じ、バッファアクセスが集中してしまうという問題点がある。
【００１８】
一方、ＥＣＣ記録期間の後半６４フレームは、１クラスタの割合としてみると約１３％にとどまる。また、この約１３％期間に記録されるＥＣＣデータは、９７２８バイト（約１０Ｋバイト）であるのに対して、符号生成時におけるデータ・バッファに対するバッファアクセス量は、約１５Ｋバイトである。したがって、符号生成によるデータ・バッファへのアクセスを、この後半６４フレームのみに集中させるとすると、ＥＣＣ９７２８バイトを記録する間に、符号生成のために約１５Ｋバイトのユーザ・データを読み出すこととなる。したがって、この間のバッファアクセスが、前半４３２フレームよりも高負荷となり、この後半６４フレームがバッファアクセスのボトルネックとなってしまい、高速記録を実現できない（図３７）。
【００１９】
また、ＥＣＣ記録期間の後半６４フレームにおいて、符号生成で必要な１５Ｋバイトのうち９７２８バイト分のみについて行うこととし、バッファアクセスしてユーザ・データを読み出すことにする。そして、残りの約５Ｋバイトを前半４３２フレームの記録用データのバッファアクセスの間に、等間隔に間引いてバッファアクセスするということも考えられる。しかしながら、符号生成と記録処理が並行動作となり、同時にバッファアクセスが必要となってしまう問題を解消できず、今度は、前半４３２フレーム部分のバッファアクセスが高負荷となり、やはり高速記録の弊害となる。
【００２０】
従って、特許文献１に記載のまま、符号生成でのバッファアクセスと記録処理でのバッファアクセスを並列で動作させた場合、又は符号生成をＥＣＣ記録期間に集中して行っても、高倍速化の障害となる。
【００２１】
このように、Ｂｌｕ−Ｒａｙディスクを代表とする光ディスク記録装置分野において、データバックアップをより短時間で行う必要性に伴い高倍速記録要求の必要性が高まってきた。
【課題を解決するための手段】
【００２２】
本発明に係る記録装置は、第１の順序を有するユーザ・データ符号列の誤りを検出する誤り検出符号（ＥＤＣ）を算出する記録装置であって、前記ユーザ・データ符号列を含むセクタを２以上有するブロックを処理単位とし、前記ブロックは、第１セクタ及び第２のセクタを有し、前記第１及び第２のセクタは、前記第１の順序で読み出した場合には前記ＥＤＣが前記ユーザ・データ符号列の最後に付加される構成を有し、前記第１のセクタは、前記第１の順序とは異なる第２の順序で読み出した場合には前記ＥＤＣが前記ユーザ・データ符号列の読み出し途中に付加される構成を有し、前記ブロックを格納したデータ・バッファから、前記第１のセクタにおいて、前記第２の順序で読み出した場合に前記ＥＤＣの後で読み出されるデータを少なくとも含む第１の領域の第１データからＥＤＣ中間値を算出する第１の演算部と、前記第１の演算部が演算に使用した前記第１データの少なくとも一部を格納するデータ・メモリと、前記ブロックから前記第１の領域の前記第１データを除いたデータを第２データとして前記データ・バッファから読み出し、当該第２データ及び前記ＥＤＣ中間値に基づきＥＤＣを算出する第２の演算部と、前記第１データ、第２データ及びＥＤＣを統合する統合部とを有し、前記統合部は、前記第２の演算部から前記ＥＤＣ及び前記第２データを受け取り、前記データ・メモリから前記第１データを受け取り、これらを統合して出力するものである。ここで、第１の順序は、例えばユーザ・データ方向の順序とすることができ、第２の順序は、例えば記録方向の順序とすることができる。
【００２３】
本発明に係る記録方法は、第１の順序を有するユーザ・データ符号列の誤りを検出するＥＤＣを算出する記録方法であって、前記ユーザ・データ符号列を含むセクタを２以上有するブロックを処理単位とし、前記ブロックは、第１セクタ及び第２のセクタを有し、前記第１及び第２のセクタは、前記第１の順序で読み出した場合には前記ＥＤＣが前記ユーザ・データ符号列の最後に付加される構成を有し、前記第１のセクタは、前記第１の順序とは異なる第２の順序で読み出した場合には前記ＥＤＣが前記ユーザ・データ符号列の読み出し途中に付加される構成を有し、前記ブロックを格納したデータ・バッファから、前記第１のセクタにおいて、前記第２の順序で読み出した場合に前記ＥＤＣの後で読み出されるデータを少なくとも含む第１の領域の第１データからＥＤＣ中間値を算出し、前記ブロックから前記第１の領域の前記第１データを除いたデータを第２データとして前記データ・バッファから読み出し、当該第２データ及び前記第１のＥＤＣ中間値に基づきＥＤＣを算出し、前記第２の演算部から前記ＥＤＣ及び前記第２データを受け取り、前記第１の演算部が演算に使用した前記第１データの少なくとも一部を保存するデータ・メモリから前記第１メインデータを受け取り、これらを統合して出力するものである。
【００２４】
本発明においては、符号生成により、第１メインデータからＥＤＣ中間値を求めると共に、その少なくとも一部をデータ・メモリに保存する。そして、記録処理で処理単位であるブロック全部のユーザ・データを読み出すことなく、データ・メモリに保存したデータを再利用することで、データ・バッファへのアクセス量を低減することができる。
【発明の効果】
【００２５】
本発明によれば、高速記録を可能とする記録装置、及び記録方法を提供することができる。
【図面の簡単な説明】
【００２６】
【図１】ブルーレイディスクにおけるＬＤＣブロックのバイト単位のデータの並び順を説明する図である
【図２】２つのセクタＳｅｃ０、Ｓｅｃ１を拡大して示す図である。
【図３】参照例２記載の記録装置を示す図である。
【図４】本実施の形態にかかる記録装置の概略を示す図である。
【図５】参照例２において符号生成時にアクセスするデータを示す図である。
【図６】本発明の実施の形態１において符号生成時にアクセスするデータを示す図である。
【図７】参照例２において記録処理時にアクセスするデータを示す図である。
【図８】本発明の実施の形態１において記録処理時にアクセスするデータを示す図である。
【図９】参照例２及び本実施の形態におけるデータ・バッファに対するデータアクセスのタイミングチャートを示す。
【図１０】行Ｒ１、Ｒ２、Ｐバイト、を説明する図である。
【図１１】転送ブロックを説明する図である。
【図１２】本発明の実施の形態１におけるデータ・バッファ１０からデータを読み出す順序Ａを説明する図である。
【図１３】本発明の実施の形態１におけるデータ・バッファ１０からデータを読み出す順序Ｂを説明する図である。
【図１４】本発明の実施の形態１におけるデータ・バッファ１０からデータを読み出す順序Ｃを説明する図である。
【図１５】ＥＤＣを生成する３２ビットシフト・レジスタを示す図である。
【図１６】上記概念を説明するための図である。
【図１７】期待値生成方法を示すフローチャートである。
【図１８】期待値更新ローテーション回路を示す図である。
【図１９】ユーザ・データと初期期待値の関係を示す図である。
【図２０】ケース１〜３を説明するための図である。
【図２１】Ｒｏｗ＝０、１５２のときの期待値（ＥＤＣ期待値テーブル１、２）を示す図である。
【図２２】ケース１のＲ１、Ｒ２を説明するための図である。
【図２３】本発明の実施の形態の符号生成を示すフローチャート、
【図２４】符号生成１の処理を示すフローチャート、
【図２５】符号生成１Ａの処理を示すフローチャートである。
【図２６】符号生成２の処理を示すフローチャート、
【図２７】符号生成２Ｂの処理を示すフローチャートである。
【図２８Ａ】記録処理を示すフローチャートである。
【図２８Ｂ】ＥＤＣ生成処理を示すフローチャートである。
【図２９】ＥＤＣ生成ブロック２０及びその周辺回路を示す図である。
【図３０】本発明の実施の形態２にかかる記録装置を示す図である。
【図３１】本発明の実施の形態２において、符号生成時に読み出す領域Ａのユーザ・データを示す図である。
【図３２】本発明の実施の形態２において、記録処理時に読み出す領域Ｃのユーザ・データを示す図である。
【図３３】本発明の実施の形態１にかかる記録装置のタイミングチャートを示す図である。
【図３４】特許文献１に記載のＢｌｕ−Ｒａｙディスク記録装置である。
【図３５】参照例２において、パス１、２に使用されるユーザ・データを説明するための図である。
【図３６】特許文献１に記載の記録装置のタイミングチャートである。
【図３７】記録装置のタイミングチャートの他の例を示す図である。
【発明を実施するための形態】
【００２７】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、従来技術の課題であった、データ・バッファに対するバッファアクセスの集中により帯域が不足する問題に対して、符号生成時に取得したデータを保存し、記録時に再利用することで、Ｂｌｕ−Ｒａｙ規格データを高倍速化記録することができる光ディスク記録装置に適用したものである。
【００２８】
なお、以下の説明においては、Ｂｌｕ−Ｒａｙ規格に準拠したデータを記録する記録装置について説明するが、本発明は、Ｂｌｕｅ−Ｒａｙ規格に限らず、記録方向とユーザ・データ方向が異なるようなデータ記録装置に適用することができる。
【００２９】
図１は、ブルーレイディスクにおけるデータ・ブロックのバイト単位のデータの並び順を説明する図である。また、図２は、２つのセクタＳｅｃ０、Ｓｅｃ１を拡大して示す図である。図中に示す数値は、バイト単位のユーザ・データ方向Ｑの順を示す。データ・ブロックは、３０４列２１６行からなる。データ・ブロックは、３２個のセクタにより構成される。１つのセクタは、２０４８ｂｙｔｅｓのユーザ・データに４ｂｙｔｅｓのＥＤＣが付加された２０５２バイトのデータからなる。
【００３０】
各セクタは、列方向に２１６バイトのデータが折り返し３０４列並べられたブロックデータとなっている。Ｒｏｗ（０≦Ｒｏｗ≦２１５）を行番号、Ｃｏｌｕｍｎ（０≦Ｃｏｌｕｍｎ≦３０３）を列番号とすると、例えばセクタＳｅｃ０においては、Ｃｏｌｕｍｎ＝９は、Ｑ＝１９４４〜２０５１のバイトデータとなり、Ｒｏｗ＝１０７までとなる。Ｒｏｗ＝１０８〜２１５は次のセクタＳｅｃ１のＱ＝０〜１０７のバイトデータが配置される。このように、データ・ブロックは、偶数番目（０を含む）のセクタ（偶数セクタ）と奇数番目のセクタ（奇数セクタ）とを１つの単位（以下、エリアともいう）、すなわち、１９列からなる２つのセクタからなるエリア毎に同じ順序で繰り返し配置されている。
【００３１】
セクタＳｅｃ０〜セクタＳｅｃ３１は、図１及び図２に示すユーザ・データ方向Ｑの順序に所定の演算を施すことでＥＤＣが付加され、スクランブルされた後、変調等が施されてディスクに記録されるが、この記録の際には、データ・ブロックは、図１中に矢印で示すレコーディング・フレーム方向Ｐの順に記録されることとなり、ユーザ・データ方向Ｑの列方向とは直交する方向となる。ユーザ・データ方向Ｑは、ブルーレイディスクにおけるＥＤＣ付加の際の処理順序及びスクランブル処理の際のエンコード処理順序の方向となっている。なお、後述するように、ユーザ・データとＥＤＣとを別々にスクランブルしてから統合するようにすることも可能である。
【００３２】
上述したように、ブルーレイディスクでは、レコーディング・フレーム方向Ｐの順にデータが記録されるため、変調前までにエンコードの処理順序のユーザ・データ方向Ｑの順のデータをレコーディング・フレーム方向Ｐの順に並び変える必要がある。そこで、エンコードをレコーディング・フレーム方向Ｐの順に実行しようとすると、図１に示すように、ＥＤＣは偶数セクタにおいては、全セクタのユーザ・データを読み出す前にＥＤＣを付加する構成となっており、ＥＤＣはセクタの全ユーザ・データから算出されるものであるためＥＤＣを算出することができず、よってＥＤＣを付加したデータを生成することができない。
【００３３】
したがってこのブルーレイディスクのように、ユーザ・データの並び順（通常の符号化順序）であるユーザ・データ方向Ｑと、ディスクのデータ記録順序であるレコーディング・フレーム方向Ｐとが異なる場合には、通常であれば、予めＥＤＣ等の演算をし、ＥＤＣを付加してからデータを並べ直し記録する必要がある。このような場合、通常はＥＤＣ付加後のデータを一旦データ・バッファに格納することでデータの並び替えを可能とするが、高速動作を可能とするためには、このデータ・バッファを高価なＳＲＡＭにて構成する必要があり、現実的ではなかった。
【００３４】
これに対し、本願発明者等は先に出願した特開２００６−２４４６３１号公報（以下、参照例１という。）において、１回のバースト転送等の転送サイズｍ×３０４ｂｙｔｅｓ×２面（書き込み用及び読み出し用）の記憶容量を有する置き換えバッファ、ＥＣＣパリティを一時保持するＥＣＣバッファ（９７２８ｂｙｔｅｓ×２面）、ＥＤＣコードを一時保持するＥＤＣバッファ（４ｂｙｔｅｓ×３２×２面）、スクランブル・バッファ（３８ｂｙｔｅｓ×２面）を設け、ユーザ・データ方向Ｑでのエンコードで得られるＥＤＣ、スクランブル中間値、及びＥＣＣを予め一時保持しておく処理（パスＳ１'）と、データ・バッファからユーザ・データを繰り返しバースト転送しながらユーザ・データにＥＤＣを付加してスクランブルする処理（パスＳ２'）とにより置き換えバッファに対する高速データ転送を可能とする発明を開示している。
【００３５】
上記参照例１においては、置き換えバッファをリフレッシュ動作が不要であってランダムアクセスが可能なメモリから構成することで、データ・バッファからバースト転送により得た連続したデータをレコーディング・フレーム方向Ｐの順に高速置き換えが可能となる。この場合、置き換えバッファは、データ・バッファの記憶容量より小さい容量としても、パスＳ１'にて演算し保持されているＥＤＣ、スクランブル中間値、及びＥＣＣを使用して演算結果を使用することで、レコーディング・フレーム方向Ｐの順に置き換えられたデータに対しスクランブル処理を実行することができる。
【００３６】
そして、このことにより、従来では、高価なＳＲＡＭなどの高速にランダムアクセス可能な一時記憶装置をデータ・バッファとして使用しない限り高倍速記録でのエンコード処理を実現できなかったのに対し、上記発明においては、データ・バッファとして高速ランダムアクセスには不向きな安価なＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）等を用いながらも、比較的小規模な回路の追加によって低コストなエンコード処理を可能とするものである。
【００３７】
ここで、データ・バッファには、１クラスタのエンコードに対して、符号化のため及び並び替えのために２クラスタ分のデータを読み込む必要がある。レコーディング・フレーム方向Ｐにて記録するためには、ＥＤＣ生成のためだけに予めユーザ・データ方向Ｑに１クラスタ分のデータ（２０４８ｂｙｔｅ×３２セクタ）を読み込む必要があり、データ・バッファに対する絶対アクセスの増加により消費電力が増大する。
【００３８】
これに対し、特許文献１（以下、参照例２という。）では、符号生成時のデータ・バッファのアクセスを０．２５クラスタ分とし、データ・バッファへのアクセスを、本来であれば２クラスタ分必要であるものを、全体で１．２５クラスタ分としている。こうしてエンコードのボトルネックとなり得るデータ・バッファアクセスを低減することで、高倍速エンコードを実現し、消費電力を抑えることができる。
【００３９】
これに対し、本実施の形態においては、符号生成のためのバッファアクセスと、記録処理のためのバッファアクセスとが同期間中に発生させないようにすることで、データ・バッファに対するアクセス集中を解決するものである。
【００４０】
上述したように、参照例２は、Ｂｌｕ−Ｒａｙ規格データの１記録単位のデータ（クラスタ）を光ディスクに書き込む際に、集中してバッファアクセスしてしまい、高倍速記録の際に、データ・バッファからのデータ読み出しが期間内に間に合わないという問題点があった。その理由としては、符号生成と記録処理が並列に動作するため、いずれの処理にもデータ・バッファにアクセスしなければならない。さらに、データ記録は前半４３２フレームに集中するため、前半４３２フレーム間に符号生成をしても、後半６４フレーム間に符号生成をしても、バッファアクセスが間に合わないためである。
【００４１】
そこで、本実施の形態においては、ユーザ・データ方向と記録方向が異なるデータを光ディスクに記録する装置において、符号生成時に取得したデータをデータ・メモリに保存し、且つ、記録時に該当するデータが当該データ・メモリに保存されている場合はそのデータ・メモリからデータを取得し、データ・バッファにはバッファアクセスを行わないこと、さらにＥＣＣ記録期間中にＥＤＣ中間値を生成することで、バッファアクセス集中を低減して高倍速記録を可能とする。
【００４２】
〔本実施の形態と参照例２との比較〕
以下、本実施の形態の理解を容易とするため、参照例２にかかる記録装置と本実施の形態とを比較しつつ説明する。参照例２においては、ＥＤＣ中間値生成のためのバッファアクセスとユーザ・データ記録処理のためのバッファアクセスが並行して行われるため、その２つの処理が集中するユーザ・データ記録期間がデータトラフィックのボトルネックとなり、高倍速化の障害となっていた。図３は、参照例２記載の記録装置、図４は、本実施の形態にかかる記録装置の概略を示す図である。図５は、参照例２において符号生成時にアクセスするデータ、図６は、本実施の形態において符号生成時にアクセスするデータを示す図である。また、図７、参照例２において記録処理時にアクセスするデータ、図８は、本実施の形態において記録処理時にアクセスするデータを示す図である。図９は、参照例２及び本実施の形態におけるデータ・バッファに対するデータアクセスのタイミングチャートを示す。
【００４３】
なお、エンコーダから記録部にかけての処理は参照例２及び本実施の形態は同一の処理を行う。すなわち、エンコーダ１２４、２４は、ＥＤＣが付加されたユーザ・データをスクランブルする。そして、スクランブルしたスクランブル済データ（以下、記録データという。）を置き換えバッファ２８、１２８に出力する。また、エンコーダ１２４、２４は、誤り検出符号付きのデータをスクランブルした後にＥＣＣを生成し、ＥＣＣバッファに保存する。そして、ＥＣＣ及び記録データは、変調回路３０、１３０においてＢＩＳコードと統合され、更に１−７ＰＰ変調が施され、その後、記録部３２、１３２により、ディスク３４、１３４に記録される。
【００４４】
参照例２にかかる記録装置１０１は、データ・バッファ１１０、チャネル１（１１２）、チャネル２（１１４）、ＥＤＣ生成ブロック１２０、統合部１２２を有する。参照例２における記録装置１０１においては、符号生成は、チャネル１（１１２）により、図５の網掛け部分に示す偶数セクタの一部のデータを読み出してＥＤＣ中間値を生成し、記録処理時にチャネル２（１１４）により、図７の網掛け部分に示すブロックの全データを読み出し、ＥＤＣ中間値よりＥＤＣを生成しつつ、データを記録する。この場合、符号処理に必要なデータを、データ・バッファから、記録期間中、均等の割合で分割して読みだす場合（図９（ａ）、又は、ＥＣＣ記録期間中は、データ・バッファにアクセスがないことから、ＥＣＣ記録期間中に、ＥＣＣの記録量と同じ量の約１０Ｋバイトのデータを、データ・バッファから読み出し、残りのユーザ・データを、ユーザ・データ記録期間中、均等の割合で分割して読み出す場合（図９（ｂ））とが考えられる。しかしながら、図９（ａ）の場合であっても、図９（ｂ）の場合であっても、符号処理がデータ・バッファからデータを読み出す間は、ＥＣＣ記録期間中は、ユーザ・データ記録処理と重複してデータ・バッファにアクセスすることとなり、結局所定時間内に記録処理、符号処理が行えなくなるという問題点がある。
【００４５】
これに対し、本実施の形態の光ディスク記録装置１は、データ・バッファ１０、チャネル１（１２）、チャネル２（１４）、データ制御部１６、データ・メモリ１８、ＥＤＣ生成ブロック２０及び統合部２２から構成される。さらに、エンコーダ２４、ＥＣＣバッファ２６、置き換えバッファ２８、変調回路３０、及びディスク３４にデータを記録する記録部３２を有する。ここで、本実施の形態においては、図６に示す領域Ａ、領域Ｂを符号生成時に使用する。また、図８に示す領域Ｃを記録生成時に使用する。
【００４６】
データ・バッファ１０は、ユーザ・データを記録するデータを保存しておくバッファで、例えばバースト転送が可能なＳＤＲＡＭからなる。チャネル１（１２）はデータ・バッファ１０から領域Ｂのデータを取得する。チャネル２（１４）は、データ・バッファから領域Ａ、領域Ｃのデータを取得する。データ制御部１６は、ＥＤＣ中間値生成及び記録処理のためのデータ取得に関する制御を行う。データ・メモリ１８は、領域Ａのデータを保存し、記録データとして統合部２２に出力する。ＥＤＣ生成ブロック２０は、領域Ｃのデータと領域ＢのデータからＥＤＣ中間値を生成し、このＥＤＣ中間値と領域ＣのデータからＥＤＣを生成する。統合部２４は、記録するデータのデータ領域毎に、取得先をＥＤＣ生成ブロック２０、データ・メモリ１８又はデータ制御部１６のいずれかを選択し、エンコーダ２４に出力する。
【００４７】
ここでは、説明の簡単のため、図５、図６に示すように、符号生成時（ＥＤＣ中間値生成時）にアクセスするユーザ・データ量は参照例２にかかる記録装置１０１も、本実施の形態にかかる記録装置１０１も同様とする。ただし、本実施の形態においては、ＥＤＣ中間値生成時に読み出すデータを、領域Ａのデータと領域Ｂのデータに分ける。そして、本実施の形態においては、ＥＤＣ中間値生成時に読み出すデータのうち、領域Ａのデータをデータ・メモリ１８に保存する。そして、この領域Ａのデータを記録時に流用する。したがって、記録時に領域Ａのデータをデータ・バッファ１０から読み出す必要がなくなる。さらに、ＥＤＣ中間値生成時に必要な領域Ｂのデータは、記録処理がＥＣＣを記録している期間内（データ・バッファにアクセスしない期間）にデータ・バッファ１０にアクセスして読み出す。
【００４８】
一方、図９に示すように、参照例２におけるデータ・バッファ１１０に対するアクセス方法としては、以下の２通りが考えられる。１つは、符号生成時に必要な図５に示すデータを分割し、ユーザ・データ記録期間及びＥＣＣ記録期間において、均等にデータ・バッファ１１０にアクセスする。したがって、例えば、ユーザ・データ記録期間には、符号生成には１３Ｋバイトのデータアクセスが必要であり、記録処理には６４Ｋバイトのデータアクセスが必要となり、合わせて７４Ｋバイトのデータアクセスが必要となる。
【００４９】
もう一つの方法としては、ＥＣＣ記録期間中は、データ・バッファ１１０に対するアクセスが行われないため、この期間に符号生成のための１３Ｋバイトのうち、ＥＣＣと同数のデータ量である約１０Ｋバイトを読み出し、ユーザ・データ記録期間に残りの５Ｋバイトをアクセスする方法である。この場合は、残りの５Ｋバイトについては、データ記録のためのバッファアクセスと符号生成のためのバッファアクセスが同時期に発生する。
【００５０】
これに対し、本実施の形態においては、符号生成において、領域Ｂの読み出しは、記録処理においてデータ・バッファアクセスがないＥＣＣ記録期間に行う。そして、符号生成においてさらに必要な領域Ａの読み出しは、データ・バッファ１０から行うが、記録処理において、やはりデータ・バッファ１０のアクセスのない期間に行う。つまり、領域Ｃの読み出しにおいて、領域Ａに該当する部分は、データ・メモリ１８に格納されているため、記録処理において読み出す領域Ｃのデータのうち、領域Ａに該当するデータは、データ・メモリ１８から読み出す。よって、記録処理において、領域Ａのデータ獲得の際には、データ・バッファ１０にアクセスする必要がない。よって、符号生成における領域Ａのアクセス時には、チャネル２の記録処理で用いるデータ転送は停止している。このように、本実施の形態においては、符号生成と記録処理で、データ・バッファ１０へのアクセスが並列動作する（同時期に発生する）ことがなくなる。そのため、ユーザ・データ記録期間において記録するデータ量と、記録処理及び符号生成にバッファアクセスして取得するデータとは同一となり、６４Ｋバイトとなる。このように、データ・バッファ１０へのアクセスが排他的に発生するため、ユーザ・データ記録期間中にもバッファアクセスが集中することがなくなり、高倍速化対応が可能となる。
【００５１】
このように、参照例２においては、ユーザ・データ記録期間にデータ・バッファから読みださなければならないユーザ・データが７７Ｋバイトであったのに対し、本実実施の形態においては、この期間にデータ・バッファ１０から読み出しが必要なユーザ・データは６４バイトに低減される。これにより、高速記録時にバッファアクセスが間に合わなくなるという参照例２にかかる課題を解決することができる。
【００５２】
次に、本実施の形態について更に詳細に説明する。先ず、本実施の形態におけるデータの方向性に関する定義を以下に示す。図１０は、行Ｒ１、Ｒ２、Ｐバイト、を説明する図である。図１１は、転送ブロックを説明する図である。
【００５３】
〔行Ｒ１とＲ２の定義〕
Ｂｌｕ−Ｒａｙ規格データ（ＬＤＣ  ＢＬＯＣＫ）において、Ｒ１は、最初の行（０行目）から１０８行目までの任意の行（０〜１０８行の合計１０９行のうちの任意の行）とする。Ｒ２は、Ｒ１から最終行までの任意の行とする。Ｒ１からＲ２はＰバイト離れているとする。
【００５４】
つまり、Ｒ１は行０から行１０８のいずれかの行、Ｒ２は行０から行２１５のいずれかの行、Ｒ１≦Ｒ２、Ｐは０から２１５までの整数（最小０バイト、最大２１６バイト）である。
【００５５】
〔転送ブロックの定義〕
Ｂｌｕ−Ｒａｙ規格データ（ＬＤＣブロック）の最初の行から最終行までをＫバイトで分割したデータ郡を転送ブロックと定義する。転送ブロックは行昇順の方向に昇順とする。Ｋは、２１６を割り切れる４から２１６までの整数とする。この転送ブロックが置き換えバッファ２８の大きさの単位となる。置き換えバッファ２８は、転送ブロック２面分の容量を少なくとも有するＳＲＡＭ等からなり、１つの転送ブロックが書き込まれると、データ記録順序であるレコーディング・フレーム方向Ｐにデータが読みだされて変調回路３０に入力される。この置き換えバッファ２８によってレコーディング・フレーム方向Ｐにデータ順が置き換えられるため、本実施の形態においても、記録処理は、この転送ブロックの大きさを基準に行われる。
【００５６】
図１２乃至図１４は、本実施の形態におけるデータ・バッファ１０からデータを読み出す順序Ａ、順序Ｂ、順序Ｃを説明する図である。
【００５７】
〔符号生成における順序Ａのデータ〕
図１２に示すように、ＬＤＣブロックのうち、偶数セクタであって、行Ｒ２から最終行までの領域を領域Ａとする。順序Ａは、ブロック昇順、ブロック内は、列昇順、列内は行昇順の順序で、領域Ａのデータをデータ・バッファ１０から読み出す際には、順番Ａで読み出す。
【００５８】
〔符号生成における順序Ｂのデータ〕
図１３に示すように、ＬＤＣブロックのうち、偶数セクタであって、行Ｒ１からＲ２の１つ前までの領域を領域Ｂとする。順序Ｂは、列昇順、列内は行昇順の順序であり、領域Ｂのデータをデータ・バッファ１０から読み出す際には、順番Ｂで読み出す。
【００５９】
ただし、後述の実施の形態２のように、Ｒ１＝Ｒ２である場合は、領域Ｂのデータは存在せず、領域Ｂのデータを参照して行われる処理も存在しなくなる。また、領域Ｂのデータは、ＥＤＣ中間値を生成するためのみに使用されるデータであり、保存する必要がないので、上記順序Ｂに限らず、例えば順序Ａと同様の順序であってもよい。
【００６０】
〔記録処理における順序Ｃのデータ〕
図１４に示すように、ＬＤＣブロックのうち、先頭０行からＲ２の１つ前の行までは、ブロック昇順、ブロック内は列昇順、列内は行昇順とする。また、ＬＤＣブロックの奇数セクタの行Ｒ２から最終行までは、ブロック昇順、ブロック内は列昇順、列内は行昇順の順番でデータ・バッファ１０から読み出す。この順序を順序Ｃとし、順序Ｃで読み出すユーザ・データの領域を領域Ｃとする。領域Ｃは、ＬＤＣブロックから領域Ａのデータを除いた領域である。順序Ａと同様の順序である。
【００６１】
〔ＥＤＣ生成の原理〕
次に、ＥＤＣの生成方法について説明する。ブルーレイディスクにおいては、２０４８バイト（１６３８４ビット）のユーザ・データに対し４バイト（３２ビット）のＥＤＣを付加する。３２ビットのＥＤＣは、２０４８バイトのユーザ・データに４バイトの０データを付加した符号列Ｄ（ｘ）を下記の生成多項式で除算することで求めることができる。
Ｇ（ｘ）＝Ｘ３２＋Ｘ３１＋Ｘ４＋１
【００６２】
２０４８バイトのユーザ・データをＩ（ｘ）とすると、これに付加される誤り検出符号ＥＤＣ（ｘ）は下記で表される。
ＥＤＣ（ｘ）＝Σｂｔ・Ｘｔ＝Ｉ（ｘ）ｍｏｄＧ（ｘ）（Σ：ｔ＝３１〜０）
ただし、Ｉ（ｘ）＝Σｂｔ・ＸｔａｎｄＧ（ｘ）（Σ：ｔ＝１６４１５〜３２）
【００６３】
この結果、誤り検出符号ＥＤＣ（ｘ）を付加した符号列Ｄ（ｘ）は、下記で表現することができる。
Ｄ（ｘ）＝Ｉ（ｘ）＋ＥＤＣ（ｘ）
ここで、＋は排他的論理和を示す。
【００６４】
上記の誤り検出符号ＥＤＣ（ｘ）は、符号列Ｉ（ｘ）を図１５に示す３２ビットシフト・レジスタ１５０に入力することで得ることができる。符号列Ｄ（ｘ）の全符号を入力し終えた後の３２ビットシフト・レジスタ値が誤り検出符号ＥＤＣ（ｘ）（＝０）となる。なお、本実施の形態においては、ユーザ・データ方向Ｑのビット順序をｑとし、ｑ＝ｂ０００００，ｂ００００１，・・・，ｂ１６４１５、ｔ＝１６４１５−ｑと表すこととする。
【００６５】
ここで、誤り検出符号Ｅ（ｘ）は、入力される符号列Ｄ（ｘ）において、符号が「１」であるビットに対応するＸｔｍｏｄＧ（ｘ）の排他的論理和を求めることで算出することができる。ＸｔｍｏｄＧ（ｘ）は、ｋ＝１６４１６ビットの符号列Ｄ（ｘ）の（１６４１５−ｑ）（＝ｔ）次以外を０にした符号列ｄ（ｘ）をＧ（ｘ）で除算した余剰を示す。
【００６６】
図１６は、上記概念を説明するための図である。ｋビットの符号列Ｄ（ｘ）の各ビットが全て「１」の符号列{１１１・・・１}を基礎の符号列Ｄ'（ｘ）とする。この符号列Ｄ'（ｘ）を図１５に示すシフト・レジスタ５０に入力して得られる３２ビットシフト・レジスタ値は、符号列Ｄ'（ｘ）の誤り検出符号Ｅ'（ｘ）となる。本実施の形態においては、ｋ＝２０５２×８＝１６４１６ビットの符号列Ｄ'（ｘ）である。
【００６７】
まず、基礎の符号列Ｄ'（ｘ）を図１６に示すようなｋ個の符号列（以下、この符号列を期待値算出用符号列という。）ｄ（ｘ）ｔとする。すなわち、各期待値算出用符号列ｄ（ｘ）１６４１５〜０は、それぞれｑに対応するビットのみが「１」、その他の全ビットが０である符号列である。具体的には、ｑ＝ｂ０００００には、最上位ビットのみが「１」の符号列ｄ（ｘ）１６４１５＝{１００・・・０}が対応し、ｑ＝ｂ００００１には、２ビット目のみが「１」の符号列ｄ（ｘ）１６４１４＝{０１０・・・０}が対応する。同様に、ｑ＝ｂ１６４１５には、最下位のビットのみが「１」の符号列ｄ（ｘ）０＝{０００・・・１}が対応する。これら各期待値算出用符号列ｄ（ｘ）ｔをシフト・レジスタ５０に入力すると３２ビットシフト・レジスタ値ＸｔｍｏｄＧ（ｘ）を得ることができる。
【００６８】
すなわち、期待値算出用符号列ｄ（ｘ）をＧ（ｘ）で除算した余剰、すなわち誤り検出値がＸｔｍｏｄＧ（ｘ）となる。この余剰ＸｔｍｏｄＧ（ｘ）を本明細書においては期待値ということとする。この期待値ＸｔｍｏｄＧ（ｘ）は、元の符号列Ｄ（ｘ）のビット順序ｑに対応するビットデータのみが誤った場合のシンドローム値を示す。
【００６９】
ここで、符号列Ｄ'（ｘ）をシフト・レジスタ５０に入力して得られる３２ビットシフト・レジスタ値（誤り検出符号Ｅ'（ｘ））は、各期待値算出用符号列ｄ（ｘ）ｔをシフト・レジスタ５０に入力して得られる３２ビットシフト・レジスタ値（期待値ＸｔｍｏｄＧ（ｘ）＝Ｒｔ）の全てを排他的論理和したものとなる。ここで、領域Ａのユーザ・データの各ビットに対応する期待値の排他的論理和をＥＤＣ中間値１、領域Ａ及び領域Ｂのユーザ・データの各ビットに対応する期待値の全排他的論理和をＥＤＣ中間値２という。特に、どのデータに対応する期待値の排他的論理和かを区別する必要がない場合、これら期待値の排他的論理和をＥＤＣ中間値というこことする。本実施の形態においては、領域Ａ、ＢからＥＤＣ中間値２を求めておき、記録処理時に残りの期待値を求め、排他的論理和をとり、ＥＤＣを求める。
【００７０】
すなわち、誤り検出符号Ｅ（ｘ）は、符号列Ｄ（ｘ）のうち、符号が「１」のビット順序ｑに対応する期待値ＸｔｍｏｄＧ（ｘ）の全ての排他的論理和として求めることができる。よって、符号列と同一ビット数のビットデータからなり、符号列と同一のビット順序を対応付けたとき、各ビット順序に対応するビットのみが「１」、その他のビットが全て「０」とされた期待値算出用符号列ｄ（ｘ）を用意し、その期待値算出用符号列ｄ（ｘ）をシフト・レジスタ５０に入力して得られる上記期待値（シンドローム値）を、符号列Ｄ（ｘ）の各ビット数に対応する数、本実施の形態においては、ｋ＝１６４１６個の期待値を保持又は算出することができれば、これを使用して入力される符号列Ｄ（ｘ）の各ビットのうち符号が「１」のビットの期待値全ての排他的論理和（＝ＥＤＣ）を求めることができる。よって、シフト・レジスタ５０に符号列Ｄ（ｘ）を入力する必要がない。すなわち符号列の各ビットに対応する期待値さえ分かれば、符号列Ｄ（ｘ）の誤り検出符号Ｅ（ｘ）は、ユーザ・データ方向Ｑと異なる順序で演算しても算出することができる。
【００７１】
データは、データ・ブロック単位で処理されるが、データ・ブロックはセクタ（符号列Ｄ（ｘ））を３２個配置したものであり、誤り検出値Ｅ（ｘ）は、符号列Ｄ（ｘ）毎に算出されるため、一のデータ・ブロックから３２の誤り検出値Ｅ（ｘ）が求められる。
【００７２】
上記期待値について具体的に説明する。図１５に示すように、例えば、シフト・レジスタ５０に入力する符号列Ｄ（ｘ）＝Ｘとし、Ｘは、ユーザ・データ方向Ｑの順において１０９番目のバイト（Ｑ＝Ｄ００１０８）の最上位ビット（ｑ＝ｂ００８６４）に入力するデータのみが「１」、その他は全て「０」であるとする。すなわち、符号列Ｘは、１６４１６ビットのうち、１５５５２次のデータのみが「１」（Ｂ００８６４＝１）で、その他の値は全て「０」であるとする。
【００７３】
この場合、符号列Ｘを３２ビットシフト・レジスタ１５０に入力した結果は、シフト・レジスタ５０の値を「０００００００１ｈ」に初期化し、これを１５５５２回シフトした値を求めることで得られる。
【００７４】
ＥＤＣを算出するためには、符号列を構成するビットデータが「１」であるもののＸｔｍｏｄＧ（ｘ）の排他的論理和のみを演算すればよく、ＸｔｍｏｄＧ（ｘ）の排他的論理和を演算することができれば、符号列Ｄ（ｘ）の３２ビットシフト・レジスタ値である誤り検出値Ｅ（ｘ）を求めることができる。
【００７５】
図１７は、期待値生成方法を示すフローチャートである。図１７に示すように、シフト・レジスタ５０を初期化（＝０）しする（ステップＳ１）。そして、１６４１５ビットからなる期待値算出用符号列ｄ（ｘ）を用意し、これをシフト・レジスタ５０に入力する。シフト・レジスタ５０のローテーションを１６４１６ビット分繰り返し（ステップＳ３、４）、その３２ビットのレジスタ値が目的の期待値（３２ビット）となる（ステップＳ５）。
【００７６】
ところで、各ビットデータに対応する期待値を全て保持すれば、いかなる場合においてもＥＤＣを算出することができるが、ユーザ・データと同じ数の期待値を保持しておくのは現実的ではない。そこで、保存するデータ量をできるだけ少なくするため、セクタ０、１からなるエリアＡｒｅａ０におけるＲｏｗ＝０に対応する合計１９個の期待値について考える。ブルーレイディスクにおいては、ユーザ・データ方向Ｑの順で見たとき、データ・ブロックは、セクタ０、１からなる１組のデータセット（１９列からなるデータセット）が１６並んだ規則性を有する構成となっている。すなわち全てのエリアがユーザ・データ方向Ｑの同一ビット順序を有する。よって、Ｒｏｗ＝０のＭＳＢのみを「１」、他を「０」とした１９個の期待値算出用符号列から、論理的には全ての期待値を容易に算出することができる。本実施の形態においては、この１９の期待値を初期期待値ということとする。また、偶数セクタ及び奇数セクタからなるエリア内の列番号をＭ（０≦Ｍ≦１８）とする。
【００７７】
すなわち、ユーザ・データ方向Ｑ（１〜２０４８）が同じユーザ・データの各ビットに対応する期待値は、同一となる。ＥＤＣは、ユーザ・データが「１」である場合の期待値のみの全排他的論理和である。ここで、２つのセクタからなるエリアは、ＬＣＤブロックには１６個含まれているが、各エリア内の同一位置のビットに対する期待値は同一となる。図１８は、期待値更新回路を示す図である。エリア内行昇順として最初の１ビット目は上記の初期期待値が対応する。次の期待値は、初期期待値を、この期待値更新回路で１ビット分シフトした値となる。よって、初期期待値をこのレジスタ（期待値更新回路）にセットし、０を１ビット入力すると、次のビットに対応する期待値が得られる。エリア内順に期待値を求める場合は、この期待値更新回路に順次０を入力し、シフトするのみでよい。
【００７８】
また、Ｒｏｗ＝１０８の列の０〜１８列のユーザ・データは、ユーザ・データ方向Ｑで見たとき、Ｒｏｗ＝０の列１０〜１８と、列０〜９と一致する。図１９は、ユーザ・データと初期期待値の関係を示す図である。このように、Ｒｏｗ＝１０８から期待値を求める場合も、上述の初期期待値を使用することができる。その他の行から期待値を算出する場合は、予め、該当する行の最上位ビットの期待値を記録したＥＤＣ期待値テーブルが必要となる。本実施の形態においては、Ｒ１、Ｒ２の位置に応じて、３つのケースに分類することとする。図２０は、ケース１〜３を説明するための図である。なお、以下のケース１については、Ｒ１＜Ｒ２の場合について説明するが、Ｒ１＝Ｒ２としてもよい。その場合、ＥＤＣ期待値テーブルが１つ少なくてすむ。
【００７９】
〔ケース１〕
ケース１は、図２０（ａ）に示すように、Ｒ１が１０８行目となり、Ｒ２が、行１０９以降となるものである。すなわち、領域Ａは、Ｒ１＝１０８から開始し、Ｒ２の１つ手前の行までとなる。よって、上述したように、領域Ｂの読み出しの際には、初期期待値を使用することができる。例えばＲ２＝１５２とした場合は、Ｒｏｗ＝１５２のＭＳＢのみを「１」、他を「０」としたときの１９個の期待値算出用符号列から１９個の期待値を求めておけばよい。なお、Ｒ＝１５２の初期期待値を予め計算したものを保持していてもよいし、Ｒ＝１０８の初期期待値から、Ｒ＝１５２の初期期待値を求めるようにしてもよい。すなわち、データ制御部１６がＥＤＣ生成ブロック２０に送る初期ＥＤＣ期待値テーブルのうち、行０以外のものは、予め計算した値を持っていてもよいし、行０のものから更新して求めてもよい。図２１は、Ｒｏｗ＝０、１５２のときの期待値（Ｒｏｗ＝０のとき、ＥＤＣ期待値テーブル１、Ｒｏｗ＝１５２のとき、ＥＤＣ期待値テーブル２）を示す図である。なお、領域Ｃは、Ｒｏｗ＝０から読み出すので、ＥＤＣ期待値テーブル１（初期ＥＤＣ期待値テーブル）を使用することができる。
【００８０】
〔ケース２〕
次に、Ｒ１、Ｒ２ともに、Ｒｏｗ＝０、１０８に一致しない場合である。０＜Ｒ１＜１０８であり、１０８＜Ｒ２＜２１５の場合である。よって、領域Ａ、領域Ｂは共に、０、１０８以外の任意の行から始まるので、領域Ａ、領域Ｃの最初のビットに対応する１９個の期待値セットがそれぞれ必要となる。よって、各３つの領域についてＥＤＣ期待値テーブルが必要になる。
【００８１】
〔ケース３〕
ケース３は、Ｒ１、Ｒ２とも、Ｒｏｗ＝０、１０８ではなく、かつ０＜Ｒ１、Ｒ２＜１０８、Ｒ１≠Ｒ２の場合である。この場合も、領域Ａ、領域ＢはＥＤＣ期待値テーブルが必要となるため、３つのＥＤＣ期待値テーブルが必要となる。
【００８２】
このように、Ｒ１、Ｒ２は任意の行であるため、該当する行に対するＥＤＣ期待値テーブルは、通常は領域毎に、したがって３つ必要となる。ただし、ケース１は、Ｒ１の行に対するＥＤＣ期待値テーブル１を再利用できるので、ＥＤＣ期待値テーブル１とＥＤＣ期待値テーブル２だけを用意すればよいことになる。なお、Ｒ１、Ｒ２は各転送ブロックの先頭に必ず位置するわけではなく、いずれの行であってもよい。
【００８３】
ここで、本実施の形態は、ケース１として説明する。すなわち、Ｒ１＝１０８、Ｒ２＝１５２の場合について説明する。なお、Ｒ１＝１０８というのは、符号生成で読み出すデータ（領域Ａ、領域Ｂ）のデータ量が最少の場合である。ここで、領域Ａについては、データ・メモリ１８に記録して、記録処理で再利用する。よって、データ・メモリ１８をＳＲＡＭで構成することとする。なお、データ・メモリ１８をＳＤＲＡＭで構成し、バースト転送を使用すれば、高速記録に対応することができる。図２２は、ケース１のＲ１、Ｒ２を説明するための図である。以下の実施の形態においては、Ｒ２は転送ブロックの途中にあり、先頭バイトからＫバイト目がＲ２となっており、Ｒ２から転送ブロックの最終バイトまでがＬバイトとなっている。
【００８４】
〔記録装置の動作〕
次に、本実施の形態にかかる記録装置の動作について説明する。図２３は、本実施の形態の符号生成を示すフローチャート、図２４は、符号生成１の処理を示すフローチャート、図２５は、符号生成１Ａの処理を示すフローチャートである。
【００８５】
本実施の形態にかかる記録装置は、符号生成と記録処理とをパラレルに実行する。すなわち、クラスタＮの記録処理を行う間、クラスタＮ＋１の符号生成を行う。
〔符号生成の動作〕
【００８６】
符号生成では、ＥＤＣ中間値１を生成する処理（以下、符号生成１という。）を実行した後に、ＥＤＣ中間値２を生成する処理（以下、符号生成２という。）を実行する。ここで、ＥＤＣバッファ２１１は、面Ｆ、Ｊの少なくとも２面の記憶領域を有するものとする。
【００８７】
符号生成１では、先ず、ＥＤＣバッファ面をＦに指定し（ステップＳ１００）、初期化（０クリア）を行う（ステップＳ１０１）。その後、領域Ａのユーザ・データからＥＤＣ中間地１を生成するための処理（符号生成１Ａ処理）を、データ・バッファ１０の領域Ａのユーザ・データに対して実行する（ステップＳ１０２、Ｓ１０３）。
【００８８】
符号生成１Ａでは、現在のセクタに対応するＥＤＣバッファ２１１の格納領域から値（初回は全て０の符号）を読み出す（ステップＳ１０２００）。一方、データ制御部１６は、データ・バッファ１０の領域Ａからデータを順序Ａで取得する（Ｓ１０２０１）。そして、取得データに従って、ＥＤＣバッファの対応する格納領域の値と期待値の排他的論理和を求めることでＥＤＣ中間値を更新し、また期待値を更新する（Ｓ１０２０２）。領域Ａのユーザ・データが全部入力し終わった時には、ＥＤＣ中間値１が求まっており、これをＥＤＣバッファ２１１の現在のセクタに対応する格納領域に保存する（Ｓ１０２０３）。
【００８９】
具体的な符号生成１Ａ処理は以下の通りである。先ず、データ制御部１６は、データ・メモリ１８に空き領域があることを確認する。確認したら、データ・バッファ１０より、チャネル２（１４）を介してクラスタＮの領域Ａのデータを順序Ａで取得する。これをＥＤＣ生成ブロック２０に送ると共に、データ・メモリ１８の空き領域に保存する。ＥＤＣ生成ブロック２０は、データ制御部１６から得たクラスタＮの領域Ａのデータのそれぞれのビット順序ｑに対応する期待値を求め、各期待値の排他的論理和を求め、最終的には、ＥＤＣ中間値１を得る。
【００９０】
図２６は、符号生成２の処理を示すフローチャート、図２７は、符号生成２Ｂの処理を示すフローチャートである。図２６に示すように、符号生成２では、ＥＤＣバッファ２１１の面をＦに指定し（ステップＳ２００）、領域Ｂのユーザ・データからＥＤＣ生成ブロック２０がＥＤＣ中間値２を生成するための処理（符号生成２Ｂ処理）（ステップＳ２０１）を、データ・バッファ１０の領域Ｂの全てのデータに対して行う（ステップＳ２０２）。
【００９１】
図２７に示すように、符号生成２Ｂでは、現在のセクタに対応するＥＤＣバッファ２１１の格納領域から値（初回はＥＤＣ中間値１）を取得する（ステップＳ２０１００）。一方、データ制御部１６は、データ・バッファ１０の領域Ｂから１セクタ分のデータを順序Ｂで取得する（ステップＳ２０２０１）。そして、取得データに従って、ＥＤＣバッファの対応する格納領域に格納されているＥＤＣ中間値と期待値の排他的論理和を求めることでＥＤＣ中間値を更新し、また期待値も更新する（ステップＳ２０２０２）。領域Ｂのユーザ・データが全部入力し終わった時には、ＥＤＣ中間値２が求まっており、これをＥＤＣバッファ２１１の現在のセクタに対応する格納領域に保存する（ステップＳ２０２０３）。
【００９２】
具体的な符号生成２Ｂ処理は以下の通りである。領域Ａに対応するユーザ・データの取得が終了したら、次に、データ制御部１６は、データ・バッファ１０より、チャネル１（１２）を使用し、クラスタＮの領域Ｂのデータを順序Ｂで取得し、ＥＤＣ生成ブロック２０に送る。なお、領域Ｂのユーザ・データは保存せず、ＥＤＣ中間値２の生成のみに使用する。ＥＤＣ生成ブロック２０は、ＥＤＣ中間値１と、クラスタＮの領域Ｂのデータの各ビットに対応する期待値とから順次排他的論理和を求める。最終的には、領域Ａ、領域Ｂの全データからＥＤＣ中間値２を得る。なお、ＥＤＣ中間値２は、参照例２におけるＥＤＣ中間値である。以上で符号生成が終了する。記録装置は、以上の符号生成と、以下の記録処理とを並列動作で同時に行う。
【００９３】
〔記録処理の動作〕
図２８Ａは、記録処理を示すフローチャートである。図２８Ｂは、ＥＤＣ生成処理を示すフローチャートである。図２８に示すように、記録処理では、データ・バッファ１０から領域Ｃのデータを順序Ｃで取得し、データ・メモリ１８から領域Ａのデータを順序Ａで取得する。したがって、取得すべきユーザ・データがデータ・バッファ１０に保存されているか、データ・メモリ１８に保存されているかを判定する（ステップＳ３００）。データ・メモリ１８に保存されているデータに該当した場合（ステップＳ３００）は、データ・メモリ１８から領域Ａのデータを１セクタ分のデータを取得する（ステップＳ３０１）。このとき、ＥＤＣバッファ面をＪに指定し（ステップＳ３０２）、同時に符号生成１Ａを実行する（ステップＳ３０３）。ここでの符号生成１Ａは、次クラスタの符号生成を行うためのものである。
【００９４】
一方、取得すべきデータがＥＣＣデータの場合（ステップＳ３００：Ｎｏ）は、ＥＣＣ記録期間と判定する。ＥＣＣ記録期間中である場合は（ステップＳ３１０：Ｙｅｓ）、データ・バッファ１０から領域Ｂのデータを順序Ｂで取得し、ＥＤＣ中間値２を生成するため、ＥＤＣ生成ブロック２０に送る（ステップＳ３１１）。ＥＤＣバッファ面にＦを指定し（ステップＳ３１２）、符号生成２Ｂを実行する（ステップＳ３１３）。ここでのＥＤＣ生成処理は、ＥＤＣ中間値を順次更新し、ＥＤＣを生成するためのものである。
【００９５】
ＥＣＣ記録期間中でない場合は（ステップＳ３１０）、読み出したデータをＥＤＣ生成ブロック２０に送出し、ＥＤＣ生成処理を実行する（ステップＳ３２０）。ここでの符号生成は、ＥＤＣ中間値２を補正し、ＥＤＣ生成するためのものである。すなわち、図２８Ｂに示すように、ＥＤＣバッファからデータを読み出し（ステップＳ３０１００）、データ・バッファの領域Ｃから順序Ｃのデータを、領域Ｂを除いて取得する（ステップＳ３０１０１）。そして、取得データにしたがって、ＥＤＣバッファの対応する格納領域の値と期待値との排他的論理和を求めてＥＤＣ中間値を更新するとともに、期待値を更新する（ステップＳ３０１０２）。そして、全データの排他的論理和が終了した時点で、ＥＤＣ中間値からＥＤＣが得られる。得られた誤り検出符号をＥＤＣバッファに保存する（ステップＳ３０１０３）。
【００９６】
記録処理の具体的な動作は以下の通りである。データ制御部１６は、記録処理に用いるデータとして、データ・バッファ１０より、チャネル２（１４）を使用してクラスタＮの領域Ｃのデータを順序Ｃで取得し、ＥＤＣ生成ブロック２０と統合部２２にそれぞれ転送する。ＥＤＣ生成ブロック２０は、予め生成されたＥＤＣ中間値２とクラスタＮの領域Ｃ、順序ＣのデータからＥＤＣを生成する。つまり、ＥＤＣ中間値２に対し、まだ期待値を排他的論理和していないユーザ・データの各ビットに対応する期待値を求め、ＥＤＣ期待値２との排他的論理和を求める。ここで、まだ排他的論理和を求めていない期待値とは、領域Ｃから領域Ｂを除いた領域のユーザ・データの各ビットに対応する期待値である。
【００９７】
統合部２２は、記録するユーザ・データがデータ・メモリ１８内に保存されているデータに該当する場合、すなわち、領域Ａに該当するデータである場合、ユーザ・データをデータ・メモリ１８から取得し、該当しない場合、すなわち領域Ｃに該当するデータである場合、ユーザ・データをデータ・バッファ１０から取得し、さらにＥＤＣに該当する場合は、ＥＤＣ生成ブロック２０のＥＤＣバッファから取得して、エンコーダ２４に出力する。
【００９８】
次に、データ制御部１６は、統合部２２がデータ・メモリ１８から記録処理に用いるデータを取得する間、データ・メモリ１８に空き領域があることを確認し、データ・バッファ１０より、チャネル２（１４）を使用して、クラスタＮ＋１の領域Ａのデータを順序Ａで取得し、ＥＤＣ生成ブロック２０に送ると共に、データ・メモリ１８の空き領域に保存する。ＥＤＣ生成ブロック２０は、データ制御部１６から得たクラスタＮ＋１の領域ＡのデータからＥＤＣ中間値１を生成する。
【００９９】
次に、ＥＣＣ記録期間になると、データ制御部１６は、データ・バッファ１０より、チャネル１（１２）を使用してクラスタＮ＋１の領域Ｂのデータを順序Ｂで取得し、ＥＤＣ生成ブロック２０に送る。ＥＤＣ生成ブロック２０は、クラスタＮ＋１の順序Ｂのデータの各ビットに対応する期待値を求め、これらの期待値とＥＤＣ中間値１との排他的論理和からＥＤＣ中間値２を生成する。
【０１００】
なお、Ｂｌｕ−Ｒａｙの１クラスタのデータは、６４Ｋバイトであり、１６進数では１００００ｈバイトである。データ・バッファ１０上の領域として１００００ｈバイトを１ポインタ内のデータとして取り扱うこととする。１ポインタ内のデータには、１バイト毎にオフセットアドレスでアクセスできるものとする。
【０１０１】
本実施の形態においては、ＥＤＣ中間値１の生成時に取得したユーザ・データをデータ・メモリ１８に保存し、そのデータを記録処理で再利用するため、記録処理期間中、データ・バッファ１０にユーザ・データ取得のためのバッファアクセスを行わない期間が生まれる。本実施の形態においては、この期間中に、次のクラスタのＥＤＣ中間値１の生成を行う。このとき、ＥＤＣ中間値１の生成のためにアクセスするデータ・バッファ１０上の対象データのオフセットアドレスは、常に同一であるため、ポインタ値だけを交互に入れ替えるだけで、チャネル２（１４）は、アドレス生成を統一された処理で行うことができる。
【０１０２】
〔ＥＤＣ生成ブロックの構成〕
次に、ＥＤＣ生成ブロック２０の構成について詳細に説明する。図２９は、ＥＤＣ生成ブロック２０及びその周辺回路を示す図である。ＥＤＣ生成ブロック２０は、ＥＤＣ中間値１、２等を保持するＥＤＣバッファ２１１とＥＤＣテーブル１、２を有する。また、ＥＤＣ生成ブロック２０は、ベース行カウンタ２０２、行カウンタ２０５、列カウンタ２０４、セレクタ２０３、２１０、期待値更新ローテーション回路２０６（図２４参照）、選択器２０７、ＸＯＲ回路２０８、及びセクタカウンタ２０９を有する。
【０１０３】
ＥＤＣテーブル１、２は、図２１に示したＥＤＣ期待値テーブル１、２であるか、又は、ＥＤＣ期待値テーブル１、２からデータを読み出したテーブルである。以下、ＥＤＣテーブル２０１に格納されている値を初期期待値という。
【０１０４】
ベース行カウンタ２０２は、転送ブロック単位の行をカウントする。転送ブロックの列幅が８バイトであれば、０→８→１６→・・・のようにカウントする。行カウンタ２０５は、転送ブロック内の行をカウントする。転送ブロックが上記のように列幅８バイトであれば、０から７までカウントし、次にカウントする際に、ベース行カウンタ２０２のカウント値を読み込む。カウント値は８バイト分だが、毎回ベース行カウンタ２０２からの値を読み込むので、カウント値は０〜２１５となる。列カウンタ２０４は、転送ブロック（ＬＤＣブロック）の列番号をカウントする。
【０１０５】
期待値更新ローテーション回路２０６は、図１８に示すように、基本的には、ＥＤＣ生成器と同様の構成を有する。図１８に示すように、期待値更新ローテーション回路２０６は、３２ビットのシフト・レジスタがローテーションされる構成を有する。選択器２０７によりデータ制御部１６から供給されるユーザ・データに対応する列の３２ビットの初期期待値が入力されると、これをユーザ・データ方向Ｑのビット順序ｑに対応する期待値となるよう順次シフトさせ、ローテーションさせる。
【０１０６】
ここで、初期期待値は、行番号Ｒｏｗ＝０の最上位ビットに対応する期待値であり、行番号Ｒｏｗ＝１０８の最上位ビットに対応する初期期待値は、行番号Ｒｏｗ＝０の列番号Ｍに＋１０したものとなる。よって、Ｒｏｗ＝１０８行目のユーザ・データに対応する期待値として、期待値更新ローテーション回路２０６には、セレクタ２０３から列カウンタ２０４のカウント値に＋１０した列番号に対応する初期期待値が読み出されて供給される。
【０１０７】
ＥＤＣ中間値は、ユーザ・データが「１」のビットに対応する期待値の排他的論理和として得られるものであり、選択器２０７は、データ制御部１６から入力されるユーザ・データが「１」の場合にのみ、期待値更新ローテーション回路２０６が生成した、そのユーザ・データのビット順序ｑに対応する期待値を出力する。また、ユーザ・データが「０」の場合は、「００００００００ｈ」を選択して出力する。
【０１０８】
ＸＯＲ回路２０８は、セクタカウンタ２０９のカウント値に応じて、セレクタ２１０が選択したＥＤＣバッファ２１１に格納されているＥＤＣ中間値を読み出し、セレクタ２１０からの出力との排他的論理和を求め、セレクタ２１０を介して、ＥＤＣバッファ２１１に書き戻す。
【０１０９】
セクタカウンタ２０９は、現在のユーザ・データのセクタをカウントし、初期値を０とし、セクタを更新するごとに、１ずつインクリメントするものとする。なお、領域ＡのデータについてのＥＤＣ中間値１を生成する間は、偶数セクタのデータのみ取り扱うので、セクタカウンタ２０９は、２ずつインクリメントする。
【０１１０】
セレクタ２１０は、セクタカウンタ２０９のカウント値に応じてＥＤＣバッファ２１１に格納された値（ＥＤＣ中間値）を読み出し、ＸＯＲ回路２０８に出力し、また、ＸＯＲ回路２０８の演算結果をＥＤＣバッファ２１１に書き戻す。
【０１１１】
ＥＤＣバッファ２１１は、符号生成時においてはＸＯＲ回路２０８が順次排他的論理和を行って、求めたＥＤＣ中間値２を格納する。なお、ＥＤＣバッファ２１１は、記録処理時においては、ＸＯＲ回路２０８が逐次排他的論理和を行って、求めた結果をＥＤＣとして格納し、これを統合部２２へ送る。このＥＤＣバッファ２１１は、各セクタ毎に上記演算結果を格納する格納領域を有する。Ｂｌｕ−ｒａｙのＬＤＣブロックは３２セクタからなり、各演算結果は３２ビットであるため、３２ビットの格納領域を３２セクタ分有するため、これに対応する保持部ＥＤＣ＿ＶＡＬＵＥ[０]〜ＥＤＣ＿ＶＡＬＵＥ[３１]を有する。なお、符号生成時におけるＥＤＣバッファ２１１の奇数セクタに対応する各格納領域に保存される値は０である。
【０１１２】
セレクタ２１０は、セクタカウンタ２０９にて選択されるセクタに対応する値をＥＤＣバッファ２１１から読み出しＸＯＲ回路２０８に送る。ＸＯＲ回路２０８は選択器２０７の出力とセレクタ２１０からの選択値との排他的論理和を求め、その結果を再びセレクタ２１０へ送る。セレクタ２１０はこれをＥＤＣバッファ２１の対応するセクタの保存領域に書き戻す。
【０１１３】
これにより、ＥＤＣバッファ２１１には、セクタ０〜３１の領域Ａ、Ｂの全ユーザ・データが入力し終わった時点で、偶数セクタの後半部分の領域（行番号Ｒｏｗ＝１０８〜２１５、セクタ内列番号Ｍ＝０〜８）の各ユーザ・データと対応する期待値との排他的論理和を順次演算したＥＤＣ中間値２が格納されることになる。
【０１１４】
データ制御部１６は、ＥＤＣ生成ブロック２０にクラスタＮの領域Ａのデータを順序Ａで転送すると共に、ＥＤＣ制御部にＥＤＣバッファ２１１の面０を指定する。ＥＤＣ生成ブロック２０からＥＤＣテーブル２０１の書き換え要求がある場合、ＥＤＣ期待値テーブルの値をＥＤＣテーブル２０１にセットする。ＥＤＣテーブルは、各エリアに対応する期待値を保持し、エリア内列０〜１８に対応して、ＥＤＣ＿ＴＡＢＬＥ[１]〜ＥＤＣ＿ＴＡＢＬＥ[１８]の格納部を有する。具体的なセット方法は以下の（１）から（４）の４つの条件に従って行う。
（１）Ｒｏｗ＝０及び１０８の場合は、ＥＤＣ＿ＴＡＢＬＥ[０]からＥＤＣ＿ＴＡＢＬＥ[１８]にＥＤＣ期待値テーブル１[０]から[１８]の値をセットする。
（２）１≦Ｒｏｗ≦１０７且つ、Ｒｏｗ＝Ｒ１の場合、ＥＤＣ＿ＴＡＢＬＥ[０]からＥＤＣ＿ＴＡＢＬＥ[９]にＥＤＣ期待値テーブル３[０]から[９]の値をセットする。
（３）１≦Ｒｏｗ≦１０７且つ、Ｒｏｗ＝Ｒ２の場合、ＥＤＣ＿ＴＡＢＬＥ[０]からＥＤＣ＿ＴＡＢＬＥ[９]にＥＤＣ期待値テーブル４[０]から[９]の値をセットする。
（４）１０９≦Ｒｏｗ≦２１５の場合、Ｒｏｗ＝Ｒ２の場合、ＥＤＣ＿ＴＡＢＬＥ[１０]からＥＤＣ＿ＴＡＢＬＥ[１８]にＥＤＣ期待値テーブル２[０]から[８]の値をセットする。
なお、（２）〜（４）は、いずれも偶数セクタのみが対象となる。なお、ＥＤＣ期待値テーブル１は、初期期待値のテーブルであり、ＥＤＣ期待値テーブル２は、上記条件のＲ２（１０９≦Ｒ２≦２１５）に対応する初期値を有するものである。また、ＥＤＣ期待値テーブル３は、上記条件のＲ１に対応する初期値を有するものであり、ＥＤＣ期待値テーブル４は、上記条件のＲ２（１≦Ｒ２≦１０７）に対応する初期値を有するものである。ＥＤＣ期待値テーブル１のみ１９個の期待値からなるが、ＥＤＣ期待値テーブル２〜４は、９乃至１０個の期待値からなる。
【０１１５】
以降、ＥＤＣ生成ブロック２０は、入力されるデータに従って、ＥＤＣ中間値１を生成する。この時点で、ＥＤＣバッファ２１１の面０にはＥＤＣ中間値１が保存される。
次に、データ制御部１６は、ＥＤＣ生成ブロック２０にクラスタＮの領域Ｂのデータを順序Ｂで転送するとともにデータ制御部１６にＥＤＣバッファ２１１の面０を指定する。以降、ＥＤＣ生成ブロックは、入力されるデータに従って、ＥＤＣ中間値２を生成する。この時点で、ＥＤＣバッファ２１１の面０にはＥＤＣ中間値２が保存される。
【０１１６】
〔ＥＤＣ生成ブロックの動作〕
次に、ＥＤＣ生成ブロック２０の動作について説明する。先ず、クラスタＮの記録処理と並行して行われるクラスタＮ＋１のＥＤＣ中間値１及びＥＤＣ中間値２の生成について説明する。データ制御部１６は、データ・メモリ１８に空き領域があることを確認した上で、ＥＤＣ生成ブロック２０にクラスタＮ＋１の順序Ａのデータを転送するとともにデータ制御部１６にＥＤＣバッファ２１１の面１を指定し、以降、ＥＤＣ生成ブロック２０は、入力されるデータに従って、ＥＤＣ中間値１を生成する。この時点で、ＥＤＣバッファ２１１の面１にはＥＤＣ中間値１が保存される。
【０１１７】
次に、ディスクにＥＣＣを記録するＥＣＣ記録期間は、ＥＣＣバッファ２６から読み出したＥＣＣを記録するため、データ・バッファ１０に記録データを取得するためのアクセスがなくなる。この期間にクラスタＮ＋１のＥＤＣ中間値２の生成を行う。
【０１１８】
データ制御部１６は、ＥＤＣ生成ブロック２０にクラスタＮ＋１の順序Ｂのデータを転送するとともにデータ制御部１６にＥＤＣバッファ２１１の面１を指定する。以降、ＥＤＣ生成ブロック２０は、入力されるデータに従って、ＥＤＣ中間値２を生成する。この時点で、ＥＤＣバッファ２１１の面１にはＥＤＣ中間値２が保存される。なお、ここで示したＥＤＣバッファ２１１面０及び面１については、複数ある面のうちの他の面を使用しても構わない。ただし、クラスタＮの符号生成で使用した面は、クラスタＮの記録処理時に使用するものとする。
【０１１９】
〔ＥＤＣ中間値１、２の生成方法〕
次に、ＥＤＣ中間値１、２の生成方法について詳細に説明する。
【０１２０】
Ｒ２が転送ブロックの先頭ではなく、その途中にある場合について説明する。転送ブロック内の行Ｒ２からブロック同一、列内最後のデータまでＬバイトあるものとする。ＥＤＣ生成ブロック２０は、セクタカウンタ２０９を０、列カウンタ２０４を０、行カウンタ２０５をＲ２、ベース行カウンタ２０２を行Ｒ２に初期化する。また、データ制御部１６から指定されたＥＤＣバッファ２１１面を全て０に初期化する。
【０１２１】
ＥＤＣ生成ブロック２０は、データ制御部１６に対して、行カウンタ２０５の値が０、１０８、Ｒ１及びＲ２のときにＥＤＣテーブル２０１の書き換え要求を出す。
【０１２２】
期待値更新ローテーション回路２０６がセレクタ２０３を介して、列カウンタ２０４のカウント値に対応するＥＤＣテーブル２０１の保持部からＥＤＣ期待値の初期値を読み出す。具体的には、列カウンタ２０４のカウント値がｔであれば、行カウンタ２０５の値≦１０７である場合は、ＥＤＣテーブル２０１の[ｔ]から値を読み出し、行カウンタ２０５の値≧１０８である場合は、ＥＤＣテーブル２０１の[ｔ＋１０]から値を読み出す。
【０１２３】
ＥＤＣ生成ブロック２０は、クラスタＮの順序Ａのデータを得て、入力ビット「１」である場合は、選択器２０７は期待値更新ローテーション回路２０６の値を選択し、入力ビットが「０」である場合は００００００００ｈをＸＯＲ回路２０８に出力する。セレクタ２１０を介して、セクタカウンタ２０９が示す例えばＥＤＣ＿ＶＡＬＵＥ[０]の値とＸＯＲ回路２０８は排他的論理和を行う。すなわち、このとき、ＥＤＣ＿ＶＡＬＵＥ[セクタカウンタの値：０〜３１]の保持部に格納されているＥＤＣ中間値を読み出す。期待値更新ローテーション回路２０６は、ＥＤＣ期待値を更新する。同様に８ビット分の処理を実施したら、行カウンタ２０５を１加算する。
【０１２４】
以上をブロック内同一列の最後データまで実施した後、列カウンタ２０４を１加算し、行カウンタ２０５にベース行カウンタ２０２の値をセットする。８ビット分の処理が終了し、行カウンタ２０５が更新される毎に行カウンタ２０５の値が０、１０８、Ｒ１及びＲ２であるかを確認し、条件に当てはまったら、データ制御部１６に対して、ＥＤＣ＿ＴＡＢＬＥ書き換え要求を出す。同様に、行カウンタ２０５の値≦１０７である場合は１０列分、行カウンタ２０５の値≧１０８である場合は、９列分処理した後、列カウンタ２０４を０とし、セクタカウンタ２０９を２加算する。なお、本処理と以下の処理、すなわち、領域Ａ、Ｂの処理の場合は、セクタカウンタ２０９を２ずつインクリメントし、列カウンタ２０４が示すＥＤＣｔａｂｌｅの格納領域の値をセレクタを介して、期待値更新ローテーション回路２０６に読み出す。
【０１２５】
以降、セクタカウンタ２０９が３０、列カウンタ２０４が８までの処理が終了した時点で、１転送ブロック内のデータに対する処理が終了となる。このとき、列カウンタを０、セクタカウンタ２０９を０とし、ベース行カウンタ２０２にブロック内同一列の最後のデータまで処理したバイト数（ＬバイトかＫバイト）を加算し、行カウンタ２０５にベース行カウンタ２０２の値をセットする。Ｋバイトとは転送ブロックの列方向のバイト幅である。
【０１２６】
また、セクタカウンタ２０９が３０、列カウンタが０から８までの各列のＫバイト目最下位ビットに対する処理が終了した後に更新される期待値更新ローテーション回路２０６は、storeの指示により、ＥＤＣ＿ＴＡＢＬＥの読み出した領域に書き戻す。以上の処理を順次処理し、最終ブロックまで実施し、ＥＤＣ中間値１を生成する。
【０１２７】
続いて、ＥＤＣ生成ブロック２０は、セクタカウンタ２０９を０、列カウンタ２０４を０、行カウンタ２０５をＲ１、ベース行カウンタ２０２をＲ１に初期化する。転送ブロック内の行Ｒ１からブロック同一、列内最後のデータまでＰバイトあるものとする。
【０１２８】
ＥＤＣ生成ブロック２０は、データ制御部１６に対して、行カウンタ２０５の値が０、１０８、Ｒ１及びＲ２のときにＥＤＣ＿ＴＡＢＬＥ書き換え要求を出す。
【０１２９】
期待値更新ローテーション回路２０６がセレクタ２０３を介して、列カウンタ２０４の値に対応するＥＤＣ＿ＴＡＢＬＥのＥＤＣ期待値の初期値を読み出す。このとき、列カウンタ２０４の値≦１０７である場合は、ＥＤＣ＿ＴＡＢＬＥ[Ｃｏｌｕｍｎ]から値を読み出し、列カウンタ２０４の値≧１０８である場合は、ＥＤＣ＿ＴＡＢＬＥ[Ｃｏｌｕｍｎ＋１０]から値を読み出す。ここで、[Ｃｏｌｕｍｎ]は、列カウンタの値を示す。ＥＤＣ＿ＴＡＢＬＥ[Ｃｏｌｕｍｎ]は、ＥＤＣ＿ＴＡＢＬＥの列番号に対応する位置に格納された値、ＥＤＣ＿ＴＡＢＬＥ[Ｃｏｌｕｍｎ＋１０]は、ＥＤＣ＿ＴＡＢＬＥの列番号＋１０に対応する位置に格納された値（期待値）を示す。
【０１３０】
選択器２０７は、クラスタＮの領域Ｂのデータを順序Ｂで得て、入力ビットが「１」である場合は、選択器２０７は期待値更新ローテーション回路２０６の値を、入力ビットが「０」である場合は００００００００ｈをＸＯＲ回路２０８に出力し、セレクタ２１０を介して、セクタカウンタ２０９のカウント値がＳｅｃｔｏｒであれば、ＥＤＣ＿ＶＡＬＵＥ[Ｓｅｃｔｏｒ]の値とＸＯＲ回路２０８は排他的論理和を行う。このとき、ＥＤＣ＿ＶＡＬＵＥ[セクタカウンタの値：０〜３１]の保持部に格納されている値を読み出す。期待値更新ローテーション回路２０６は、ＥＤＣ期待値を更新する。同様に８ビット分の処理を実施し、行カウンタ２０５を１加算する。
【０１３１】
以上をＰバイト分実施した後、列カウンタ２０４に１加算し、行カウンタ２０５にベース行カウンタ２０２の値をセットする。８ビット分の処理が終了し、行カウンタ２０５が更新される毎に行カウンタ２０５の値が０、１０８及びＲ１であるかを確認し、条件に当てはまったら、データ制御部１６に対して、ＥＤＣ＿ＴＡＢＬＥ書き換え要求を出す。同様に、行カウンタ２０５の値≦１０７である場合は１０列分、行カウンタ２０５の値≧１０８である場合は、９列分処理した後、列カウンタ２０４を０とし、セクタカウンタに２加算し、列カウンタ２０４が示すＥＤＣ＿ＴＡＢＬＥの格納領域の値をセレクタを介して、期待値更新ローテーション回路２０６に読み出す。
【０１３２】
〔ＥＤＣの生成方法〕
以下に、ＥＤＣの生成方法について説明する。ＥＤＣ生成ブロック２０は、セクタカウンタ２０９を０、行カウンタ２０５を０、列カウンタ２０４を０、ベース列カウンタ２０２を０に初期化する。
【０１３３】
列カウンタ２０４の値が０、１０８であるかを確認し、条件に当てはまったら、データ制御部に対して、ＥＤＣ＿ＴＡＢＬＥ書き換え要求を出す。なお、領域Ｃのデータの期待値を求める際は、行カウンタ２０５のカウント値がＲ１、Ｒ２の場合であっても、ＥＤＣテーブル２０１から初期値を読み出さないので、この判定は不要である。
【０１３４】
期待値更新ローテーション回路２０６がセレクタ２０３を介して、列カウンタ２０４が示すＥＤＣ＿ＴＡＢＬＥからＥＤＣ期待値の初期値を読み出す。このとき、行カウンタ２０５の値＜１０８のときは、ＥＤＣ＿ＴＡＢＬＥ[Ｃｏｌｕｍｎ]の関係で値を読み出し、行カウンタ２０５の値≧１０８のときは、ＥＤＣ＿ＴＡＢＬＥ[Ｃｏｌｕｍｎ＋１０]の関係で値を読み出す。
【０１３５】
クラスタＮの順序Ｃのデータを得て、入力ビットが「１」である場合は、選択器２０７は期待値更新ローテーション回路２０６の値を選択し、入力ビットが「０」である場合は００００００００ｈをＸＯＲ回路に出力し、セレクタ２１０を介して、セクタカウンタ２０９が示すＥＤＣ＿ＶＡＬＵＥの値とＸＯＲ回路は排他的論理和を行った値をＥＤＣ＿ＶＡＬＵＥ[０]に書き戻す。このとき、ＥＤＣ＿ＶＡＬＵＥ[セクタカウンタの値：０〜３１]の保持部に格納されているＥＤＣ中間値を読み、書きする。期待値更新ローテーション回路２０６は、ＥＤＣ期待値を更新する。同様にして、８ビット分処理した後、行カウンタ２０５に１加算する。
【０１３６】
以上をブロック内同一列の最後データまで実施した後か、偶数セクタにおいては、Ｒ２の１つ手前のデータまで実施した後、列カウンタ２０４を１加算し、行カウンタ２０５にベース行カウンタ２０２の値をセットする。８ビット分の処理が終了し、行カウンタ２０５が更新される毎に行カウンタ２０５の値が０、１０８、Ｒ１及びＲ２であるかを確認し、条件に当てはまったら、データ制御部１６に対して、ＥＤＣ＿ＴＡＢＬＥ書き換え要求を出す。同様に、行カウンタ２０５の値≦１０７である場合は１０列分、行カウンタ２０５の値≧１０８である場合は、９列分処理した後か１９列処理した後に列カウンタ２０４を０とし、セクタカウンタ２０９を１加算し、列カウンタ２０４が示すＥＤＣテーブル２０１の格納領域の値をセレクタ２０３を介して、期待値更新ローテーション回路２０６に読み出す。
【０１３７】
以降、セクタカウンタ２０９のカウント値が３１、列カウンタ１８、行カウンタのカウント値がＫ−１までの処理が終了した時点で、１転送ブロック内のデータに対する処理が終了となる。このとき、列カウンタ２０４の値を０、セクタカウンタ２０９のカウント値を０、ベース行カウンタ２０２のカウント値にＫを加算し、行カウンタ２０５のカウント値にベース行カウンタ２０２の値をセットする。
【０１３８】
また、セクタカウンタ２０９のカウント値が３１、列カウンタのカウント値が１０から１８までの各列のＫバイト目最下位ビットに対する処理が終了した後に更新される期待値更新ローテーション回路２０６の値をＥＤＣテーブル２０１の該当する領域に書き戻す。以上の処理を順次処理し、最終転送ブロックまで実施し、ＥＤＣを生成する。
【０１３９】
〔本発明の実施の形態の変形例〕
以下、上記の実施の形態の変形例について説明する。上述の実施の形態においては、ＥＣＣ記録期間中に、符号生成のためのバッファアクセスを行うと共に、符号生成時に処理する領域Ａ、領域Ｂのユーザ・データのうち、領域Ａのユーザ・データのみをデータ・メモリ１８に保存し、再利用した。これに対し、本変形例においては、領域Ｂをなくし、全部を領域Ａとする。すなわち、上記の例におけるＲ１＝Ｒ２の場合に対応する。そして、本実施の形態においては、符号生成に用いるデータを全てデータ・メモリ１８に保存する。
【０１４０】
すなわち、実施の形態のＲ１＝Ｒ２につき、Ｒ１での処理（領域Ｂの処理）がなくなり、ＥＤＣ期待値テーブル３はＥＤＣ期待値テーブル２と同一か同様の値となり、ＥＤＣ中間値１の生成処理は、ＥＤＣ中間値２の生成処理となる。
【０１４１】
図３０は、変形例にかかる記録装置を示す図である。また、図３１は、変形例において、符号生成時に読み出す領域Ａのユーザ・データを示す図である。また、図３２は、変形例の記録処理時に読み出す領域Ｃのユーザ・データを示す図である。
【０１４２】
実施の形態においては、領域Ａ、領域Ｂで、読み出し順序が異なることから、２つのチャネルを使用していたが、本実施の形態においては、領域Ａ、領域Ｃのみとなり、かつこれらの読み出し順序である順序Ｃのデータは、順序Ａのデータを含むので、チャネル２（１４）を共通で使用することができ、チャネル１を省略することができる。また、データ・メモリ１８及びＥＤＣ生成ブロック２０へユーザ・データを振り分ける必要がなく、領域Ａのユーザ・データをデータ・メモリ１８及びＥＤＣ生成ブロック２０へ入力するのみのため、データ制御部を省略することも可能である。
【０１４３】
〔本発明の実施の形態の効果〕
次に、本実施の形態にかかる効果について説明する。本実施の形態においては、ユーザ・データ方向と記録方向を有するデータを光ディスクに記録する装置において、順序ＡのデータからＥＤＣ中間値１を生成し、このＥＤＣ中間地１と順序Ｂ（ユーザ・データ方向）のデータからＥＤＣ中間値２を生成するＥＤＣ生成ブロック２０を有する。また、符号生成時に取得したデータをデータ・メモリ１８に保存し、且つ、記録時にこのデータを再利用することで、記録時におけるバッファアクセスを一部省略する。このことにより、バッファアクセスの負荷を減らして高倍速記録を可能とする。
【０１４４】
以上の構成により、第１の効果として、符号生成と記録処理が並列に動作し、なおかつデータ記録は前半４３２フレームに集中することを解消することができる。その理由としては、符号生成時に取得したデータを保存し、記録時に再利用するからである。
【０１４５】
第２の効果として、低消費電力化がある。その理由としては、データ・バッファ（ＳＤＲＡＭ）アクセスの分散化により、バッファの高周波数化が必要ないからである。
【０１４６】
第３の効果として、コスト削減がある。その理由としては、データ・バッファ（ＳＤＲＡＭ）アクセスの分散化により、高周波数対応のバッファ（ＳＤＲＡＭ）が必要ないからである。
【０１４７】
図３３は、実施の形態１にかかる記録装置のタイミングチャートを示す図である。チャネル１は、ポインタ１に対応し、チャネル２はポインタ２に対応する。クラスタＮ（最初のクラスタ）においては、符号生成のみ行う。
【０１４８】
次のクラスタＮにおいて、符号生成と記録処理を並列実行する。このとき、先ず、記録処理において、領域Ｃのデータの処理が開始される。領域ＣのＲ１＝１０８行目までの処理が終了したら、偶数セクタと、奇数セクタで、領域Ａ、領域Ｃのユーザ・データを交互に読み出す。この場合、領域Ａは、データ・メモリ１８に格納されているため、偶数セクタのユーザ・データは、このデータ・メモリ１８から読み出す。
【０１４９】
一方、その間、チャネル２は、データ・バッファからデータを取得する。このとき、クラスタＮ＋１の符号生成１を行う。つまり、クラスタＮ＋１の領域Ａのユーザ・データを読み出し、ＥＤＣ生成ブロック２０及びデータ・メモリ１８の空き領域に格納する。これにより、データ記録は前半４３２フレームに集中することを解消できる。その理由としては、符号生成１時に取得したデータを保存し、記録時に再利用するからである。
【０１５０】
また、データ・バッファ（ＳＤＲＡＭ）アクセスの分散化により、バッファの高周波数化が必要なく、低消費電力化を図ることができる。さらに、データ・バッファ（ＳＤＲＡＭ）アクセスの分散化により、高周波数対応のデータ・バッファが必要なくなるため、低コスト化が可能である。
【０１５１】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【０１５２】
例えば、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、ＣＰＵ（CentＲal PＲocessing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、記録媒体に記録して提供することも可能であり、また、インターネットその他の伝送媒体を介して伝送することにより提供することも可能である。
【符号の説明】
【０１５３】
１０  データ・バッファ
１６  データ制御部
１８  データ・メモリ
２０  ＥＤＣ生成ブロック
２２  統合部
２４  エンコーダ
２６  ＥＣＣバッファ
２８  置き換えバッファ
３０  変調回路
３４  ディスク
３２  記録部
１５０  ビットシフト・レジスタ
１００  記録装置
１０８  行
１０９  合計
１０９  行
１１０  データ・バッファ
１２０  生成ブロック
１２２  統合部
１２４  エンコード回路
１５０  ビットシフト・レジスタ
２０１  ＥＤＣテーブル
２０２  ベース行カウンタ
２０３  セレクタ
２０４  列カウンタ
２０５  行カウンタ
２０６  期待値更新ローテーション回路
２０７  選択器
２０８  ＸＯＲ回路
２０９  セクタカウンタ
２１０  セレクタ
２１１  ＥＤＣバッファ
【図１】
0005419653.tif 000002
【図２】
0005419653.tif 000003
【図３】
0005419653.tif 000004
【図４】
0005419653.tif 000005
【図５】
0005419653.tif 000006
【図６】
0005419653.tif 000007
【図７】
0005419653.tif 000008
【図８】
0005419653.tif 000009
【図９】
0005419653.tif 000010
【図１０】
0005419653.tif 000011
【図１１】
0005419653.tif 000012
【図１２】
0005419653.tif 000013
【図１３】
0005419653.tif 000014
【図１４】
0005419653.tif 000015
【図１５】
0005419653.tif 000016
【図１６】
0005419653.tif 000017
【図１７】
0005419653.tif 000018
【図１８】
0005419653.tif 000019
【図１９】
0005419653.tif 000020
【図２０】
0005419653.tif 000021
【図２１】
0005419653.tif 000022
【図２２】
0005419653.tif 000023
【図２３】
0005419653.tif 000024
【図２４】
0005419653.tif 000025
【図２５】
0005419653.tif 000026
【図２６】
0005419653.tif 000027
【図２７】
0005419653.tif 000028
【図２８Ａ】
0005419653.tif 000029
【図２８Ｂ】
0005419653.tif 000030
【図２９】
0005419653.tif 000031
【図３０】
0005419653.tif 000032
【図３１】
0005419653.tif 000033
【図３２】
0005419653.tif 000034
【図３３】
0005419653.tif 000035
【図３４】
0005419653.tif 000036
【図３５】
0005419653.tif 000037
【図３６】
0005419653.tif 000038
【図３７】
0005419653.tif 000039