Error detection code adding circuit, error detecting circuit and method, and disk device

申请号 JP2004348311 申请日 2004-12-01 公开(公告)号 JP2006155835A 公开(公告)日 2006-06-15
申请人 Nec Electronics Corp; Necエレクトロニクス株式会社; 发明人 TAKEUCHI HIROTAKE;
摘要 PROBLEM TO BE SOLVED: To conduct error detection for the data, in which an error detection value can be computed by processing in a prescribed order, even though the processing is conducted in order different from the prescribed order. SOLUTION: A substitute value outputting section 208 which outputs an intrinsic substitute value corresponding to a coded byte order number Q of an input byte data to a shift register that obtains an error detection value when a coding string is inputted by the coded byte order number Q while referring to the table that holds the value, to which the replacement coding string is inputted, as the substitute value, a bit process computing section 210 which computes the error detection value for every byte and a byte process computing section 220 which outputs the error detection value of the code string, are included. The substitute coding string consists of byte data having K bytes and only prescribed bit data in the byte data corresponding to the coded byte order number Q are set to "1" and all other bit data are set to "0". The bit process computing section 210 processes each byte data and its substitute value in processing order different from the coded order. COPYRIGHT: (C)2006,JPO&NCIPI
权利要求
  • 誤り検出符号が付加された符号列の誤り検出値を算出することで誤りを検出する誤り検出回路において、
    誤り検出の対象となる被検査符号列は、K(Kは自然数)バイトからなり、各バイトデータに対しそれぞれ第1の順序番号が対応付けられたものであり、
    前記誤り検出値は、前記被検査符号列が前記第1の順序番号の順に所定の演算方法にて処理された場合に得られるものであって、
    前記被検査符号列の各バイトデータの前記第1の順序番号に対応する固有代替値を出力する代替値出力部と、
    前記代替値出力部の出力結果に基づき前記被検査符号列の前記誤り検出値を算出する誤り検出値出算出部とを有し、
    前記誤り検値出算出部は、前記被検査符号列の各バイトデータについて、各バイトデータとその第1の順序番号に対応した前記固有代替値とを前記第1の順序番号とは異なる第2の順序番号の順で処理することで前記誤り検出値を算出する ことを特徴とする誤り検出回路。
  • 前記前記第1の順序番号に対応する各固有代替値は、それぞれ前記第1の順序番号に対応付けられた各代替符号列を前記所定の演算方法にて処理して得られる値であり、
    前記各代替符号列は、Kバイトからなり、前記第1の順序番号に対応した所定のバイトデータにおける所定のビットデータのみ「1」、その他のビットデータが全て「0」とされたものである ことを特徴とする請求項1記載の誤り検出回路。
  • 前記前記第1の順序番号に対応する各固有代替値は、それぞれ前記第1の順序番号に対応付けられた各代替符号列を前記所定の演算方法にて処理して得られる値であり、
    前記各代替符号列は、Kバイトの符号列の一のビットデータのみが誤った場合のシンドローム値である ことを特徴とする請求項1記載の誤り検出回路。
  • 前記第1の順序番号は、前記被検査符号列に対して一の順序を示すものであって、
    前記第2の順序番号は、複数の前記被検査符号列からなる記録ブロックに対して一の順序を示すものである ことを特徴とする請求項1記載の誤り検出回路。
  • 前記記録ブロックの各バイトデータを行列状に配置した列方向に前記第1の順序番号が対応づけられ、行方向に第2の順序番号が対応付けられる ことを特徴とする請求項4記載の誤り検出回路。
  • 前記記録ブロックは、前記被検査符号列の各バイトデータが前記第1の順序番号の順であってそのビット順序番号である第1のビット順序番号を有し、
    前記記録ブロックは、前記第1のビット順序番号の順を列方向として行列状とし、前記列方向に8ビット毎のバイトデータに対し行方向に前記第2の順序番号が対応付けられたものである ことを特徴とする請求項4記載の誤り検出回路。
  • 前記記録ブロックは、前記第2の順序番号の順に記録及び/又は再生される ことを特徴とする請求項4記載の誤り検出回路。
  • 前記代替値出力部は、前記固有代替値の少なくとも一部が記憶されたテーブルを有し、前記第2の順序番号の順でバイトデータが入力される毎に当該バイトデータの前記第1の順序番号に対応する固有代替値を出力し、
    前記誤り検出値算出部は、各バイトデータについてビットデータ毎に処理するビット処理演算部と、ビット処理演算部の演算結果に基づき誤り検出値を算出するバイト処理演算部とを有し、
    前記ビット処理演算部は、前記第2の順序番号の順で入力されるバイトデータをビットデータに変換する変換部と、
    前記代替値出力部からの前記固有代替値を前記変換部から出力されるビットデータに対応する代替値に変換する代替値変換部と、
    前記変換部から出力されるビットデータと、前記代替値変換部により変換された前記代替値とから各バイト毎のバイト誤り検出値を算出するバイト誤り検出値演算部とを有する ことを特徴とする請求項5記載の誤り検出回路。
  • 前記バイト処理演算部は、各被検査符号列の個数分の誤り検出値を保持する保持部を有し、各被検査符号列毎の誤り検出値を算出する ことを特徴とする請求項8記載の誤り検出回路。
  • 前記被検査符号列の各バイトデータは、前記第1の順序番号の順であってそのビット順序番号である第1のビット順序番号を有し、
    前記代替値は、前記第1のビット順序番号に対応した値であって、
    前記代替値変換部は、入力されたバイトデータに対応する前記固有代替値を、前記変換部にて変換されたビットデータの前記第1のビット順序番号に対応する代替値に変換する ことを特徴とする請求項8記載の誤り検出回路。
  • 前記代替値変換部は、一のバイトデータを処理する間は、i(0≦i≦7)番目のビットデータに対応する前記代替値に前記所定の演算を行なった値を(i+1)番目のビットデータに対応する代替値とする ことを特徴とする請求項10記載の誤り検出回路。
  • 前記代替値出力部は、前記固有代替値のうち、一の行に含まれる前記固有代替値が記憶されたテーブルを有し、当該一の行に含まれる前記固有代替値を、前記第2の順序番号の順でバイトデータが入力される毎に当該バイトデータの前記第1の順序番号に対応する固有代替値に変換して出力し、
    前記誤り検出値算出部は、各バイトデータについてビットデータ毎に処理するビット処理演算部と、ビット処理演算部の演算結果に基づき誤り検出値を算出するバイト処理演算部とを有し、
    前記ビット処理演算部は、前記第2の順序番号の順で入力される前記バイトデータをビットデータに変換する変換部と、
    前記代替値出力部から読み出した前記固有代替値を前記変換部から出力されるビットデータに対応する代替値に変換する代替値変換部と、
    前記変換部から出力されるビットデータと、前記代替値変換部により変換された前記代替値とから各バイト毎にバイト誤り検出値を出力するバイト誤り検出値演算部とを有する ことを特徴とする請求項5記載の誤り検出回路。
  • 前記記録ブロックは、2以上の被検査符号列からなる被検査符号列セットを複数有し、
    前記代替値出力部は、前記固有代替値のうち、一の被検査符号列セットにおける一の行に対応する固有代替値が特定固有代替値として記憶された特定固有代替値テーブルを有し、当該特定固有代替値を、前記第2の順序番号の順でバイトデータが入力される毎に当該バイトデータの前記第1の順序番号に対応する固有代替値に変換して出力し、
    前記誤り検出値算出部は、一のバイトデータについてビットデータ毎に処理するビット処理演算部と、ビット処理演算部の演算結果に基づき誤り検出値を算出するバイト処理演算部とを有し、
    前記ビット処理演算部は、前記第2の順序番号の順で入力される前記バイトデータをビットデータに変換する変換部と、
    前記代替値出力部から読み出した前記固有代替値を前記変換部から出力されるビットデータに対応する代替値に変換する代替値変換部と、
    前記変換部から出力されるビットデータと、前記代替値変換部により変換された前記代替値とから各バイト毎にバイト誤り検出値を出力するバイト誤り検出値演算部とを有する ことを特徴とする請求項5記載の誤り検出回路。
  • 誤り検出符号が付加された符号列の誤り検出値を算出することで誤りを検出する誤り検出回路において、
    誤り検出の対象となる被検査符号列は、k(kは自然数)ビットからなり、各ビットデータに対しそれぞれ第1のビット順序番号が対応付けられたものであり、
    前記誤り検出値は、前記被検査符号列が前記第1のビット順序番号の順に所定の演算方法にて処理された場合に得られるものであって、
    前記被検査符号列の各ビットデータの前記第1のビット順序番号のそれぞれに対応する各代替値のうち少なくとも一部を出力する代替値出力部と、
    前記代替値出力部の出力結果に基づき前記被検査符号列の前記誤り検出値を算出する誤り検出値出算出部とを有し、
    前記誤り検値出算出部は、前記被検査符号列の各ビットデータについて、各ビットデータとその第1のビット順序番号に対応した前記代替値とを前記第1のビット順序番号とは異なる処理順序で処理することで前記誤り検出値を算出する ことを特徴とする誤り検出回路。
  • 前記前記第1のビット順序番号に対応する各代替値は、それぞれ前記第1のビット順序番号に対応付けられた各代替符号列を前記所定の演算方法にて処理して得られる値であり、
    前記各代替符号列は、kバイトからなり、前記第1のビット順序番号に対応した所定のビットデータのみ「1」、その他のビットデータが全て「0」とされたものである ことを特徴とする請求項13記載の誤り検出回路。
  • K(Kは自然数)バイトからなり、各バイトデータに対しそれぞれ第1の順序番号が対応付けられた誤り検出の対象となる被検査符号列が前記第1の順序番号の順に所定の演算方法にて処理された場合に得られる誤り検出値求める際、前記被検査符号列を前記第1の順序番号とは異なる第2の順序番号の順で入力し、
    前記第1の順序番号に対応付けられた前記K個の固有代替値のうち少なくとも一部が保持されたテーブルを参照し、各バイトデータの前記第1の順序番号に対応した前記固有代替値を生成し、
    前記被検査符号列の各バイトデータについて、各バイトデータとその第1の順序番号に対応した前記固有代替値とから前記第2の順序番号の順で処理して前記誤り検出値を算出する誤り検出方法。
  • ユーザ・データを含むK(Kは自然数)バイトからなる処理対象符号列から、前記ユーザ・データにその誤り検出符号を付加したKバイトからなる誤り検出符号付加符号列を生成する誤り検出符号付加回路であって、
    前記処理対象符号列は、各バイトデータに対しそれぞれ第1の順序番号が対応付けられたものであり、
    前記誤り検出符号付加符号列は、前記処理対象符号列を前記第1の順序番号の順に所定の演算方法にて処理された場合に得られるものであって、
    前記処理対象符号列の各バイトデータの前記第1の順序番号に対応する固有代替値を出力する代替値出力部と、
    前記代替値出力部の出力結果に基づき前記誤り検出符号付加符号列を算出する符号列生成部とを有し、
    前記符号列生成出部は、前記処理対象符号列の各バイトデータについて、各バイトデータとその第1の順序番号に対応した前記固有代替値とを前記第1の順序番号とは異なる第2の順序番号の順で処理することで前記誤り検出符号付加符号列を生成する ことを特徴とする誤り検出符号付加回路。
  • 誤り検出符号が付加された誤り符号付加符号列を読み出す読み出し部と、
    前記誤り符号付加符号列の誤り検出値を算出することで誤りを検出する誤り検出部とを有し、
    前記誤り符号付加符号列は、K(Kは自然数)バイトからなり、各バイトデータに対しそれぞれ第1の順序番号が対応付けられたものであり、
    前記誤り検出値は、前記被検査符号列が前記第1の順序番号の順に所定の演算方法にて処理された場合に得られるものであって、
    前記誤り検出部は、
    前記誤り符号付加符号列の各バイトデータの前記第1の順序番号に対応する固有代替値を出力する代替値出力部と、
    前記代替値出力部の出力結果に基づき前記誤り符号付加符号列の前記誤り検出値を算出する誤り検出値出算出部とを有し、
    前記誤り検値出算出部は、前記誤り符号付加符号列の各バイトデータについて、各バイトデータとその第1の順序番号に対応した前記固有代替値とを前記第1の順序番号とは異なる第2の順序番号の順で処理することで前記誤り検出値を算出する ことを特徴とするディスク装置。
  • ユーザ・データを含むK(Kは自然数)バイトからなる処理対象符号列から、前記ユーザ・データにその誤り検出符号を付加したKバイトからなる誤り検出符号付加符号列を生成する誤り検出符号付加部と、
    前記誤り検出符号付加符号列を記録する記録部とを有し、
    前記処理対象符号列は、各バイトデータに対しそれぞれ第1の順序番号が対応付けられたものであり、
    前記誤り検出符号付加符号列は、前記処理対象符号列を前記第1の順序番号の順に所定の演算方法にて処理された場合に得られるものであって、
    前記誤り検出符号付加部は、
    前記処理対象符号列の各バイトデータの前記第1の順序番号に対応する固有代替値を出力する代替値出力部と、
    前記代替値出力部の出力結果に基づき前記誤り検出符号付加符号列を算出する符号列生成部とを有し、
    前記符号列生成出部は、前記処理対象符号列の各バイトデータについて、各バイトデータとその第1の順序番号に対応した前記固有代替値とを前記第1の順序番号とは異なる第2の順序番号の順で処理することで前記誤り検出符号付加符号列を生成する ことを特徴とするディスク装置。
  • 各バイトに対して第1の順序番号が対応付けられたK(Kは自然数)バイトからなる符号列の各バイトデータと当該バイトデータの前記第1の順序番号に対応したスクランブル値とに基づき得られたスクランブル済符号列を当該スクランブル値によりデ・スクランブルしてデ・スクランブル済符号列を生成するデ・スクランブル回路と、
    前記デ・スクランブル済符号列の誤り検出値を算出することで誤りを検出する誤り検出回路とを有し、
    前記第1の順序番号に対応した各スクランブル値は、初期値に対し前記第1の順序番号に対応した所定の演算を施すことで得られる値であり、
    前記デ・スクランブル済符号列の各バイトデータには、前記第1の順序番号が対応付けられ、
    前記誤り検出値は、前記デ・スクランブル済符号列が前記第1の順序番号の順に所定の演算方法にて処理された場合に得られるものであって、
    前記デ・スクランブル回路は、
    前記第1の順序番号とは異なる第2の順序番号の順で入力される前記デ・スクランブル済符号列の各バイトデータの前記第1の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、
    前記入力されるバイトデータとその前記第1の順序番号に対応する前記スクランブル値とから前記デ・スクランブル済データを算出する符号列演算部とを有し、
    前記誤り検出回路は、
    前記デ・スクランブル済符号列の各バイトデータの前記第1の順序番号に対応する固有代替値を出力する代替値出力部と、
    前記代替値出力部の出力結果に基づき、前記デ・スクランブル済符号列の各バイトデータについて、各バイトデータとその前記第1の順序番号に対応した前記固有代替値とを前記第1の順序番号とは異なる第2の順序番号の順で処理することで前記誤り検出値を算出する誤り検出値出算出部とを有する ことを特徴とするディスク装置。
  • 说明书全文

    本発明は、ディスクに記録するデータに誤り検出符号を付加する誤り検出付加回路、ディスクから読み出したデータの誤り検出を行なう誤り検出回路及び方法、並びに誤り検出符号付加回路及び/又は誤り検出回路を備えるディスク装置に関する。

    CD、CD−R/RW、CD−ROMなどのいわゆる第1世代の光ディスク、DVD(Digital Versatile Disc)などのいわゆる第2世代光ディスクに次いで、光源波長を405nm(青紫色)に短波長化したいわゆる第3世代光ディスクと呼ばれるブルーレイディスクが開発されている。 ブルーレイディスクは、光源波長の短波長化の他、対物レンズの開口数NA(numerical aperture)を0.85に高め、ビーム・スポット面積をDVDに比して1/5程度に縮めることで、DVDの約5倍の面記録密度で記録マークを読み書き可能となっている。 さらに、ディスク基板上に相変化記録層を設け、この上に0.1mmの透明なカバー層で覆うことでディスクとレーザ光の光軸との相対的な傾きによる収差を低減する構造が取られている。

    このように記録密度が高く薄いカバー層を有する第3世代光ディスクでは、記憶容量が大きい分、例えば同じ大きさの欠陥でも第2世代光ディスク等に比してバースト誤りの影響が大きい。

    一般に、光ディスクにディジタル・データを記録する際は、再生容易のために、誤り訂正符号(ECC(error correcting code))が付加され、記録符号化処理が施されるが、ブルーレイディスクにおいては、上述したように、高密度に記録されることから、データを正確に読み取るために誤り訂正等について複雑な処理が施される。

    ブルーレイディスクの誤り訂正ブロック(ECCブロック)は、64kバイトのユーザ・データを単位に構成される。 入されたユーザ・データは、2048バイトのユーザ・データに4バイトのエラーチェックコードEDCを付加した2052バイトの論理セクタとされる。 ECCブロックは、32の論理セクタ(符号化列)と、バースト・エラーを防止するために一定の間隔で埋め込まれた補助データ(picket code)とから構成される(特許文献1参照)。 このECCブロックは、その後、ランレングスを制限するために1−7PP(Parity Preserve/Prohibit RMTR)変調され、ディスクに記録される。

    ここで、ブルーレイディスクにおけるECCブロックに含まれる記録データは、図2のようなデータ配置を有する。 なお、この記録データは、ローテーションされ補助データと共にECCブロックとされる前の状態を示す。 以下、これを記録ブロックという。 この記録データは、列方向をEDCを付加する際のデータ入力順序(以下、符号化順序という。)とすると、ディスクには行方向に記録される。

    ブルーレイディスクにおいては、2048バイトのユーザ・データに付加すべき誤り検出符号は、2048バイトのユーザ・データを所定の演算を行なうシフト・レジスタに上記符号化順序で入力して得る。 符号列の誤りは、通常は、この符号列を再び同一のシフト・レジスタに同一の順序で入力すれば誤りを検出することができる。

    ところが、ブルーレイディスクにおいては、ディスクに高密度に記録されたデータを正確に再生させるため複雑なインターリーブ処理がなされるため、符号列を上述の符号化順序とは異なる順序(以下、記録順序という。)で記録する。 したがって、読み出したデータの順序が符号化の際の順序と一致せず、そのままでは誤り検出等の処理を行うことができない。

    そこで、従来の光ディスク装置においては、例えば、一の記録ブロックの全データを読み出した後、一旦バッファに格納し、符号化の際と同じ順序に読み出すことで、符号化の順序と誤り検出の順序と一致させ、正しく演算するようにしている。

    特開2003−242728号公報

    「次世代光ディスク 解体新書」,日経エレクトリニクス ブックス,2003年10月7日

    しかしながら、ECCブロックに含まれる全符号列(記録ブロック)を一旦バッファに読み出し、記録順序に並んでいる各データを符号化順序に並び替えて上記シフト・レジスタに入力することで誤り検出値を求める方法では、記録ブロックの全データを格納するための大きなバッファメモリが装置内に必要となる。 また、誤り検出のために発生するメモリ・アクセスがバッファメモリ・アクセスのスループットを下げるという問題もある。

    本発明は、このような問題点を解決するためになされたものであり、所定の順序で処理することで誤り検出値を算出可能なデータに対し、所定の順序とは異なる順序で処理しても誤り検出を行なうことができる誤り検出回路、誤り検出方法、及びディスク装置を提供することを目的とする。

    本発明にかかる誤り検出回路は、誤り検出符号が付加された符号列の誤り検出値を算出することで誤りを検出する誤り検出回路において、誤り検出の対象となる被検査符号列は、K(Kは自然数)バイトからなり、各バイトデータに対しそれぞれ第1の順序番号が対応付けられたものであり、前記誤り検出値は、前記被検査符号列が前記第1の順序番号の順に所定の演算方法にて処理された場合に得られるものであって、前記被検査符号列の各バイトデータの前記第1の順序番号に対応する固有代替値を出力する代替値出力部と、前記代替値出力部の出力結果に基づき前記被検査符号列の前記誤り検出値を算出する誤り検出値出算出部とを有し、前記誤り検値出算出部は、前記被検査符号列の各バイトデータについて、各バイトデータとその第1の順序番号に対応した前記固有代替値とを前記第1の順序番号とは異なる第2の順序番号の順で処理することで前記誤り検出値を算出することを特徴とする。

    本発明においては、入力されるバイトデータの前記第1の順序番号に対応する固有代替値を使用することで、データ入力順序を第2の順序番号の順で処理しても誤り検出値を算出することができる。

    本発明にかかる誤り検出符号付加回路は、ユーザ・データを含むK(Kは自然数)バイトからなる処理対象符号列から、前記ユーザ・データにその誤り検出符号を付加したKバイトからなる誤り検出符号付加符号列を生成する誤り検出符号付加回路であって、前記処理対象符号列は、各バイトデータに対しそれぞれ第1の順序番号が対応付けられたものであり、前記誤り検出符号付加符号列は、前記処理対象符号列を前記第1の順序番号の順に所定の演算方法にて処理された場合に得られるものであって、前記処理対象符号列の各バイトデータの前記第1の順序番号に対応する固有代替値を出力する代替値出力部と、前記代替値出力部の出力結果に基づき前記誤り検出符号付加符号列を算出する符号列生成部とを有し、前記符号列生成出部は、前記処理対象符号列の各バイトデータについて、各バイトデータとその第1の順序番号に対応した前記固有代替値とを前記第1の順序番号とは異なる第2の順序番号の順で処理することで前記誤り検出符号付加符号列を生成することを特徴とする。

    本発明においては、入力されるバイトデータの前記第1の順序番号に対応する固有代替値を使用することで、データ入力順序を第2の順序番号の順で処理しても誤り検出符号を付加した誤り検出符号付加符号列を算出することができる。

    本発明にかかるディスク装置は、各バイトに対して第1の順序番号が対応付けられたK(Kは自然数)バイトからなる符号列の各バイトデータと当該バイトデータの前記第1の順序番号に対応したスクランブル値とに基づき得られたスクランブル済符号列を当該スクランブル値によりデ・スクランブルしてデ・スクランブル済符号列を生成するデ・スクランブル回路と、前記デ・スクランブル済符号列の誤り検出値を算出することで誤りを検出する誤り検出回路とを有し、前記第1の順序番号に対応した各スクランブル値は、初期値に対し前記第1の順序番号に対応した所定の演算を施すことで得られる値であり、前記デ・スクランブル済符号列の各バイトデータには、前記第1の順序番号が対応付けられ、前記誤り検出値は、前記デ・スクランブル済符号列が前記第1の順序番号の順に所定の演算方法にて処理された場合に得られるものであって、前記デ・スクランブル回路は、前記第1の順序番号とは異なる第2の順序番号の順で入力される前記デ・スクランブル済符号列の各バイトデータの前記第1の順序番号に対応するスクランブル値を生成するスクランブル値生成部と、前記入力されるバイトデータとその前記第1の順序番号に対応する前記スクランブル値とから前記デ・スクランブル済データを算出する符号列演算部とを有し、前記誤り検出回路は、前記デ・スクランブル済符号列の各バイトデータの前記第1の順序番号に対応する固有代替値を出力する代替値出力部と、前記代替値出力部の出力結果に基づき、前記デ・スクランブル済符号列の各バイトデータについて、各バイトデータとその前記第1の順序番号に対応した前記固有代替値とを前記第1の順序番号とは異なる第2の順序番号の順で処理することで前記誤り検出値を算出する誤り検出値出算出部とを有することを特徴とする。

    本発明においては、入力されるバイトデータの前記第1の順序番号に対応する固有代替値を使用することで、データ入力順序をどのような順序としても誤り検出符号を算出することができ、また入力されるバイトデータの前記第1の順序番号に対応するスクランブル値を生成することで、第1の順序番号と異なる順序の第2の順序番号の順で入力される入力データに対してデ・スクランブル処理を実行することができ、また第2の順序番号の順で誤り検出検出値を算出することができる。

    本発明によれば、所定の順序で処理することで誤り検出値を算出可能なデータに対し、所定の順序とは異なる順序で処理しても誤り検出符号を付加することができ、またはその誤り検出を行なうことができる。

    以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。 この実施の形態は、本発明を、特にデ・スクランブルの際や誤り検出算出の際の処理性能を向上した光ディスクの再生装置に適用したものであって、ユーザ・データに対して誤り検出符号を付加する際の符号化順序と、誤り検出符号が付加されたユーザ・データを光ディスクに記録する際の記録順序とが異なる光ディスクの再生装置に好適に適用可能である。

    ここで、本実施の形態においては、上記符号化順序と記録順序とが異なる光ディスクの一例としてブルーレイディスクを例にとって説明するが、ディスクはブルーレイディスクに限らず、他のメディアであってもよい。 すなわち、所定の順序のデータに対し所定の演算を施すことで得られる可逆演算が可能な特定のデータをメディアに書き込む又は当該特定のデータをメディアから読み出すデータ処理についても本発明を同様に適用することができる。 また、本実施の形態においては、再生装置を例にとって説明するが、後述するように記録装置又は記録再生装置に適用できることは勿論である。

    1. 光ディスク再生装置
    図1は、本実施の形態にかかる光ディスクの再生装置の信号処理回路の一部を示す概略を示すブロック図である。 再生装置の信号処理回路1には、図示せぬディスクから読み出されたデータが復調された復調データが供給される。 この信号処理回路1は、メイン・データと補助データとを分類する選別部(セレクタ)11と、選別部11により分離されたメイン・データをローテーション処理するローテーション12と、補助データをデ・インターリーブ処理するデ・インターリーブ回路13とを有する。 また、デ・インターリーブされたメイン・データのシンドロームを生成するメインシンドローム生成部14及びこれを保存するメインメモリ15と、デ・インターリーブされた補助データを保存するBISメモリ16及びこの補助データからシンドロームを生成するBISシンドローム生成部17を有する。 更に、ローテーション回路12からメイン・データを受け取ってスクランブルを解くデ・スクランブル回路18と、その誤りを検出する誤り検出回路19とを有している。 更にまた、各データの誤りを訂正する誤り訂正回路20を有し、誤り訂正回路20から誤り位置及び値が入力される入出力部21と、スクランブルが解かれたデータが出力される出力部22とがバス23を介してメモリ24に接続されている。 更に、バス23にはホストインターフェース回路25が接続され、このホストインターフェース回路25を介して読み出されたデータがPCなどの上位機器(ホスト)26へ転送される。

    ブルーレイディスクでは、誤り訂正(ECC)ブロックは、64Kバイトのユーザ・データを単位にエラー訂正符号化されている。 ECCブロックは、後述するLDC(long distance code)ブロックとpicket codeと呼ばれる補助データとが配置される。 この補助データは、BIS(Burst indicator subcode)によって誤り訂正されており、補助データの誤り状態を検出することでバースト誤りを検知することが可能となっている。

    ユーザ・データは2048バイト単位で読み書きされるが、これに4バイトのエラーチェックコードEDCを付加した2052単位で1つの論理セクタを構成する。 そして、この論理セクタを8セクタ毎にまとめ、216バイトずつ76個に分け、リード・ソロモン符号によって符号化されたデータが38バイト×496((2×216)+(2×32))バイトの領域(LDC)に配置される。 すなわち、LDCは、304個のコード・ワードからなり、各コード・ワードは、216個の情報シンボルと32個のパリティ・シンボルとからなるコード・ワード長248のシンボルからなり、これらのコード・ワードがECCブロックの縦方向の2×2毎にインターリーブされ、横152バイト×縦496バイトのECCブロックを構成する。

    ディスクから読み出された読み出しデータは復調され、光ディスク装置の信号処理回路1の選別部11に供給される。 選別部11は、読み出しデータを上述のLDC(以下、メイン・データという。)と補助データとに分離し、それぞれローテーション12、デ・インターリーブ回路13に出力する。 メイン・データは、ECCブロックにおいて列方向にローテーションされているため、ローテーション12がECCブロックに含まれる32の論理セクタをローテーション前の状態に戻し、メインシンドローム生成部14及びデ・スクランブル回路18へ出力する。

    メインシンドローム生成部14はメイン・データに所定の演算を施しシンドロームを生成し、例えばスタティックRAM(Static Random Access Memory)などからなるメインメモリ15に出力する。 また、補助データもデ・インターリーブ回路13にてインターリーブを解かれ、スタティックRAMなどからなるBISメモリ16に格納され、コード・ワード毎にBISシンドローム生成部17に出力され、補助データのシンドロームが生成される。 補助データのシンドロームは誤り訂正回路20へ出力されBISメモリに格納されている補助データの訂正処理が行われる。 バースト誤りがあるときはその情報に基づきメイン・データの誤りを訂正する。

    一方、メインメモリ15には、メイン・データのシンドロームが格納されており、コード・ワード毎に誤り訂正回路20に出力され、メモリ24に格納されているメイン・データの誤り位置・誤り値が入出力回路21に出力され、その誤り訂正が行われる。

    一方、インターリーブが解かれたメイン・データは、デ・スクランブル回路18にてデ・スクランブル処理され、誤り検出回路19にて誤り検出がされる。 特に、本実施の形態におけるデ・スクランブル回路は、記録前に行なわれるスクランブル処理の順序(以下、符号化順序という。)とは異なる順序で記録されたデータを、符号化順序とは異なる順序にて読み出し、符号化順序と異なる順序(以下、処理順序という。)でデ・スクランブル処理を実行することができる。 また、誤り検出回路19は、上記処理順序で入力されるデータから、各符号列の誤り検出値を算出可能な回路である。 符号化順序とは異なる処理順序でデ・スクランブル処理及び誤り検出値算出処理を行うことができるので、読み出したデータを一旦符号化順序に並び替えてから処理する必要がなく、したがって順序を並び変えるためのバッファ、図1においてはメモリ24において使用する作業領域を不要とすることができる。

    2. データ配列
    次に、本実施の形態における再生装置におけるデ・スクランブル回路、誤り検出回路について説明するが、先ず、ブルーレイディスクにおける記録ブロックのデータの配列順序について説明しておく。 図2は、ブルーレイディスクにおける記録ブロックのバイト単位のデータ(以下、バイトデータという。)の並び順を説明する図である。 なお、本図は、ブルーレイディスクにおけるECCブロックから図1における選別部11にて補助データを分離し、メイン・データのローテンションが解かれた後のデータ構成を示し、以下の説明においては、図2に示す2052×32バイトのデータを記録ブロックという。 記録ブロック100は、32個の符号列(2048バイトの論理セクタに4バイトのEDCを付加したデータ)D(x)(以下、D0〜D31ともいう。)により構成される。 1つの符号列D(x)は、2048バイトのユーザ・データに4バイトのECCコードが付加された2052バイトのデータからなる。 図3は、2つの符号列(D0,D1)を拡大して示す図である。 図中に示す数値は、バイト単位のデ・スクランブルの順序(符号化順序)を示す。 記録ブロックは、304列216バイト行からなる。 ここで、N=列番号(0≦N≦303)、M=行番号(0≦M≦215)とする。

    符号列D(x)は、216バイトを列方向に並べ折り返して次の列に並べるため、例えば符号列D0においては、N=9列目は1944〜2051番目のバイトデータとなり、M=107行目までとなる。 M=108〜215行目は次の符号列D1の0から107番目のバイトデータが配置される。 このように、記録ブロックは、偶数番目の符号列(偶数符号列)と奇数番目の符号列(奇数符号列)とを1つの単位(符号列セット)、すなわち、19列からなる2つの符号列毎に同じ順序で繰り返し配置されている。

    符号列D0〜符号列D31は、図2及び図3に示す符号化順序にて所定の演算を施すことでスクランブルされ、上述のECCブロックとされた後、ディスクに記録されるが、この記録の際には、記録ブロックは、図2中に矢印で示す行方向に記録されることとなり、符号化方向の列方向とは直交する方向となる。

    ここで、図2、図3の列方向のバイト順序が符号化順序を示す。 本明細書においては、列方向のバイトデータに対し、図2、図3の図中に数値で示すような符号化バイト順序番号(第1の順序番号)Qを対応させることとする。 この符号化バイト順序番号Qの順が符号化順序である。 また、必要に応じて、そのビット単位のデータの順序番号を符号化ビット順序番号qという。 このような順序のバイトデータが行列状に配置された記録ブロックにおいて、行方向のバイト順序がディスクへのデータの記録順序となる。 本明細書においては、行方向のバイトデータを記録バイト順序番号(第2の順序番号)Pで示すこととする。 符号化バイト順序番号Qとは、ブルーレイディスクにおける本来のデ・スクランブル処理、及び後述する誤り検出の処理の順序を示す順序番号である。 また、記録バイト順序番号Pとは、ブルーレイディスクにおけるデータの記録順序を示す順番番号であり、本実施の形態におけるデ・スクランブル処理及び誤り検出処理の各処理順序を示す順序番号である。 すなわち、本実施の形態においては、ディスクに対する記録・再生する順序は通常のブルーレイディスクと同様の記録バイト順序番号Pの順とするのに対し、デ・スクランブル処理及び後述する誤り検出処理においては、従来の符号化バイト順序番号Qの順とは異なる順序で処理する。 そして、本実施の形態においては、これらの処理順序を、記録バイト順序番号Pの順と一致させることで、読み出したデータを、一旦バッファに読み出して並べ替える処理を不要とし、読み出したままで処理することを可能とするものである。

    図4は、バイトデータの符号化方向及び記録方向におけるビットの並び順を説明する模式図である。 図4に示すように、列方向の符号化バイト順序番号Qの1バイトデータは、符号化ビット順序番号qの順に最上位ビットMSB〜最下位ビットLSBを有する。 ここで、記録ブロックをビット単位でみたとき、図13に示すように、記録方向の一のバイトデータは、符号化方向の8ビットデータに対応している。 すなわち、符号化バイト順序番号Q/符号化ビット順序番号qのデータを記録する際には、図4の右図に示すように、記録ビット順序番号pの順とされる。 このように記録方向における各バイトデータのMSB〜LSBは符号化方向の各バイトデータのMSB〜LSBに対応する。 本明細書においては、この記録方向のビットデータに記録ビット順序番号pを対応付けて説明する。

    ここで、本実施の形態におけるデ・スクランブル処理は、バイト単位で行われ、行方向のバイト順序で実行される。 したがって、記録ビット順序番号pの順で読み出されたビットデータは、図4のように列方向に8ビット毎であって行方向に並べた行列(記録ブロック)における、行方向の各バイトデータに対応付けられた記録バイト順序番号Pの順に入力される。 なお、符号化バイト順序番号Qは、一の符号列毎に対応付けられ、0≦Q≦2051となっており、記録バイト順序番号Pは、一の記録ブロック毎に対応付けられ、0≦P≦65664となっている。

    3. デ・スクランブル回路
    ディスクに記録されたデータは、記録した順序で読み出されるため、読み出したデータは、記録順序番号Pの順とは異なる順序となる。 しかしならが、スクランブルは、上記符号化順序に対して上記所定の演算を施すことでデ・スクランブルされる処理であって、読み出した順序で上記所定の演算を行ってもデ・スクランブル処理することはできない。 本実施の形態は、この記録順序番号Pの順、すなわち符号化順序番号Qの順とは異なる順序でデータを処理してもデ・スクランブル処理することができる演算回路及びその方法を提案するものである。

    先ず、本発明の理解を容易にするため、デ・スクランブル処理について説明する。 符号列をスクランブル処理する場合であっても、デ・スクランブル処理する場合であっても同様の方法で処理することができる。 すなわち、データをスクランブルする場合には、8ビットの入力データD と、スクランブラで生成した8ビットのスクランブル・データ(スクランブル値)S とのmod2加算(=排他的論理和)(下記式(1))を行なうことでスクランブル・データDS を得ることができる。
    DS =S +D ・・・(1)
    ここで、「+」は排他的論理和EOXを示す。 以下の説明において、「+」は同様に排他的論理和を示すこととする。

    また、同様に、デ・スクランブルする場合にも、この式(1)により、スクランブルされた入力データD と、スクランブラで生成した8ビットのスクランブル値S とのmod2加算を行なうことでデ・スクランブル・データDS を得ることができる。 スクランブル値S は、いずれの場合であっても入力データD に対応する値となっている。 なお、以下の説明においてはデ・スクランブルについて説明する。

    図5は、スクランブル・データS を生成するスクランブラの一例のシフト・レジスタを示す図である。 図5に示すシフト・レジスタ30を所望の値で初期化しておき、i回分シフトしたb7〜b0の値S と入力データD とが図示しない論理回路にてXORした結果がデ・スクランブル後のデータDS となる。 すなわち、デ・スクランブル後のデータDS を求めるためには、スクランブル値S を求める必要がある。

    ここで、図2及び図3に示す記録ブロックは記録ブロックの行方向(記録方向)の順にデータを読み出し、デ・スクランブル回路には、記録バイト順序番号Pで入力される。 このため、上記式(1)の演算式は下記式(2)のようになる。
    DS =S +D
    =S (P×216)mod 2052 +D ・・・(2)

    すなわち、デ・スクランブル回路に入力される記録バイト順序番号P(デ・スクランブル処理順序)の順と符号化バイト順序番号Qの順とが一致している場合には、データの入力クロック毎に、シフト・レジスタ30を1回ずつシフトすればスクランブル値S を求めることができるのに対し、入力データが符号化バイト順序番号Qの順と異なるデ・スクランブル処理順序である記録バイト順序番号Pの順の場合、シフト・レジスタ30を単純にシフトするのみではスクランブル値S を求めることができない。 すなわち、記録バイト順序番号Pの順は、図3に示すように、D Q=0 →D Q=216 →D Q=432 →D Q=648 、・・・となる。 よって、シフト・レジスタ30が出力すべきシフト・レジスタ値(スクランブル値)は、0回シフトした値→216回シフトした値→432回シフトした値→・・・となる。 このため、上記記録順バイト序番号Pの順で入力した場合に出力すべきスクランブル値は、M=行(Row:0〜303)、N=列(Column:0〜215)とした場合、((216×N)mod2052+M)回シフトした値となる。 これは、データを1バイトを入力する毎にシフト・レジスタ30を216回シフトしなければいけないことを意味し、デ・スクランブル処理時間が長くなってしまう。 これを回避するには、上述したように、一旦記録ブロック全体をバッファに読み出し、符号化バイト順序番号Qに並び替えてシフト・レジスタ30に入力する必要があり、記録ブロックを一旦読み出すためのRAM等の保存領域が必要となり、更に、他に割り振ることができるRAMアクセス性能も低下してしまう。

    そこで、本実施の形態においては、符号化バイト順序番号Q及び記録バイト順序番号Pの規則性に着目し、シフト・レジスタ30の1回のシフト動作の複数倍のシフト動作を行なう2つのシフト・レジスタを組み合せることで、記録バイト順序番号Pの順序にシフト・レジスタ30と同様のスクランブル値S を演算させる。 これにより、符号化バイト順序番号Qと異なる順序で入力されるデータのデ・スクランブル処理が実行可能となる。

    次に、本実施の形態におけるデ・スクランブル回路について詳細に説明する。 図3に示すように、記録バイト順序番号Pでみた場合、記録ブロック100のバイトデータは符号化バイト順序番号Qの216バイト又は108バイト毎のデータとなっている、そこで、1クロックで図5のシフト・レジスタ30を108回シフトさせた値を演算することができる108シフト・レジスタ(以下、SFRという。)と、レジスタ30を216回シフトさせた値を演算することができる216回SFRとを準備する。 これらの108回SFR、216回SFRは、後述するように、シフト・レジスタ30の16ビットの各ビットに対し、ある乗数を排他的論理和することにより構成することができる。 本実施の形態においては、これら108回SFR、216回SFRのセットを含むスクランブル値生成部により記録バイト順序番号Pの順で入力されるバイトデータのスクランブル値を算出することができ、データ1バイトに要する処理時間を短くすることができる。

    図6は、図1に示すデ・スクランブル回路18を示すブロック図であり、図7は、図6に示すデ・スクランブル回路の詳細を示す図である。 デ・スクランブル回路には、記録ブロックの各データD が読み出された順序(記録順序番号P)で入力される。 図6に示すように、デ・スクランブル回路18は、記録バイト順序番号PのバイトデータD のスクランブルを解くためのスクランブル値S を生成するスクランブル値生成部40と、データD に基づきスクランブル値生成部40を制御する制御回路50と、スクランブル値S と入力されるデータD とのXOR演算をして記録バイト順序番号Pでデ・スクランブルしたデータDS を出力する論理回路(以下、XORという。)60とを有する。

    スクランブル値生成部40は、上述の108回SFR41及び216回SFR42と、スクランブル更新SFR43と、セクタ・スクランブル初期値記憶部44と、Rowスクランブル初期値記憶部45と、NextRowスクランブル初期値記憶部46と、切り替え回路47〜49とを有する。 また、制御回路50は、入力データD の列及び行をカウントするカウンタ51と、カウンタのカウント値に基づき制御信号を生成する制御信号生成部52とを有する。

    セクタ・スクランブル初期値記憶部44は、一の符号列におけるQ=0番目のデータD Q=0に対応するスクランブル値S を保持する記憶部である。 このスクランブル値S は、スクランブルの際に使用した図4のシフト・レジスタ30の初期値である。

    Rowスクランブル初期値記憶部45は、現在の列(N=0〜303)及び行(M=0〜215)に対応する初期値(以下、Rowスクランブル初期値という。)を保持する記憶部である。 スクランブル更新SFR43はRowスクランブル初期値に基づき現在の列の次の列に対応する初期値をスクランブル更新値として生成する。 このスクランブル更新SFR43は、図5に示すシフト・レジスタ30と同じ構成とすることができ、シフト・レジスタ30の1回のシフト動作による演算と同一の演算を1クロックで行なうことができるシフト・レジスタである。

    切り替え回路47は、制御信号生成部52から制御信号S1が供給され、Rowスクランブル初期値又はスクランブル更新値のいずれかを選択して出力する。 NextRowスクランブル初期値記憶部46は、切り替え回路47が選択して出力した値をNextRowスクランブル初期値として保持する。

    切り替え回路48は、制御信号生成部52から制御信号S2が供給され、セクタ・スクランブル初期値又はNextRowスクランブル初期値のいずれかを選択して出力する。 上述のRowスクランブル初期値記憶部45は、切り替え回路48が選択して出力した値を現在のRowスクランブル初期値として保持する。

    108回SFR41は、現在のRowスクランブル初期値が供給され、これを108回シフトした値を出力する。 216回SFR42は、前データD Q−1におけるスクランブル値S Q−1を216回シフトした値を出力する。 切り替え回路49は、制御信号生成部52から制御信号S3が供給され、現在のRowスクランブル初期値、上記108回シフトした値、及び上記216回シフトした値のいずれかを選択し、スクランブル値S として出力する。

    カウンタ51は、データD の入力毎に列カウント値Nを0から303までインクリメントしていく。 そして、列カウント値Nが303→0となるタイミングで行カウント値Mを0から215までインクリメントする。 行カウント値Mが215→0となるタイミングが一記録ブロックの処理終了タイミングである。

    制御信号生成部52は、制御信号S1により、行カウント値Mがインクリメントするタイミングより1クロック前のタイミングでスクランブル更新SFR43を1回シフトさせる。 これにより、スクランブル更新SFR43は、現在の行に対応するN=0列におけるスクランブル値を次の行に対応するスクランブル値(スクランブル更新値)に更新する。 この動作の詳細は後述する。

    また、切り替え回路48において、N mod19=9かつM mod216=108または、N mod19=0かつM mod216=0のときセクタ・スクランブル初期値S を選択出力させ、その他のタイミングにおいてはNextRowスクランブル初期値を選択して保持値を出力させるよう制御する制御信号S2を出力する。

    さらに、切り替え回路49において、N mod19=0のとき、Rowスクランブル初期値記憶部45を選択させ、N mod19=10、M=0〜107、及びN mod19=9、M=108〜215のとき、108回SFR41の値を選択し、これらのタイミング以外は216回SFR42の値を選択出力させるよう制御する制御信号S3を出力する。

    図8は108回SFR41を示す図、図9は216回SFR42を示す図である。 図8及び図9の上図には、それぞれ108回SFR41及び216回SFR42の回路図を示す。 また、図8及び図9の下図には、それぞれ108回SFR41及び216回SFR42各レジスタに格納されるビットb 〜b 15の演算式を示す。 108回SFR41及び216回SFR42は、いずれも16ビット(b 〜b 15 )のパラレルSFRであり、上述したように、一のバイトデータの入力により、図5に示すシフト・レジスタ30の108回分と216回分シフトした値を出力するものである。 ここで、シフト・レジスタ30は、下記式(3)
    φ(x)=X 16 +X 15 +X 13 +X +1・・・(3)
    の多項式から得られる。 ここで、Xはシフト・レジスタを生成多項式で表現した場合の要素を示す。 この多項式φ(x)から108回、216回シフト演算させるための図8及び図9の下図に示す演算式が求まる。 108回SFR41、216回SFR42は、これらの演算式を演算するシフト・レジスタである。

    4. デ・スクランブル方法
    次に、図7に示すデ・スクランブル回路のデ・スクランブル方法について説明する。 図10は、本実施の形態におけるデ・スクランブル方法を示すフローチャートである。 図10に示すように、予めセクタ・スクランブル初期値記憶部44を初期化し、スクランブル値S を格納しておく(ステップSP1)。 そして、制御信号S1〜S3により、全ての切り替え回路47〜49を初期化する(ステップSP2)。 ここで、初期化により、切り替え回路48にセクタ・スクランブル初期値記憶部44の出力を選択させ、セクタ・スクランブル初期値S を出力させる。 また、切り替え回路49にRowスクランブル初期値記憶部45の出力を選択させ、Rowスクランブル初期値を出力させる。 また、切り替え回路47にスクランブル更新SFR43の出力を選択させる。 なお、切り替え回路48は、セクタ。 スクランブル初期値記憶部44側を選択しているため、スクランブル更新SFR43の値は選択・出力されない。

    これらの切り替え回路の選択により、図5と同様の構成を有するスクランブル更新SFR43にセクタ・スクランブル初期値S が入力される。 スクランブル更新SFR43によりこのセクタ・スクランブル初期値S を1回シフトした更新スクランブル値(スクランブル値S )を生成しておく(ステップSP3)。 なお、この更新スクランブル値は、行カウント値Mがインクリメントするタイミングにのみ選択される。 以降はステップSP4〜SP18の処理を繰り返すことで、スクランブル値生成部40は、入力データD に対応するスクランブル値S を出力し、このスクランブル値S と、入力データD とからデ・スクランブルされたデータDS を、入力データD の入力順序で出力することができる。

    先ず、バイトデータD が入力されると(ステップSP4)、列カウント値Nがインクリメントされる(ステップSP5)。 ここで、入力されるバイトデータD は、D =D Q=0 〜D Q=65663であり、1クロックで記録バイト順序番号Pの順に1バイトのデータが入力される。 なお、カウンタは記録ブロック100の最初のデータD Q=0が入力されると列カウント値N及び行カウント値Mを0にセットしてカウントを開始する。 列カウント値Nは0から303までカウントアップされる(ステップSP6)。 次に、列カウント値Nの値に基づき行カウント値Mを更新する。 ここで、行カウント値Mは、列カウント値Nが303→0になるタイミングでのみインクリメントされ、215までカウントアップされる。 次いで、入力されたデータD が何行目のデータかを判断する。 行カウント値M≦107である場合(ステップSP7:Yes)には、判定値H1=10に設定し(ステップSP8)、行カウント値M>107である場合(ステップSP7:No)には、判定値H2=9に設定する(ステップSP9)。 そして、列カウント値Nを19で割った余り(N mod19)が上記判定値H1又は判定値H2か否かを判定する(ステップSP12)。

    N mod19が判定値H1又は判定値H2である場合(N=9、10、28、29・・・294、295の場合)、すなわち、奇数符号列に隣接する偶数符号列の最終列、偶数符号列に隣接する奇数符号列の最初の列のデータD が入力された場合には、制御信号S2により、切り替え回路49に108回SFR41の出力を選択させる(ステップSP11)。 一方、列カウント値Nを19で割った余りが0である場合(ステップSP12)、すなわち、偶数符号列の最初の列のデータが入力された場合には、制御信号S2により、切り替え回路49にRowスクランブル初期値を出力させる(ステップSP13)。

    また、列カウント値N=0(314で割った余りが0の場合)(ステップSP14)である場合には、切り替え回路47〜49に以下の選択をさせると共に、スクランブル更新SFR43を1回シフトさせる(ステップSP15)。 すなわち、切り替え回路47にスクランブル更新SFR43の出力を選択させスクランブル更新値をNextRowスクランブル初期値記憶部46に出力させる。 また、切り替え回路48にNextRowスクランブル初期値記憶部46の出力を選択させ、スクランブル更新値をRowスクランブル初期値記憶部45に出力させる。 さらに切り替え回路49にRowスクランブル初期値記憶部45の出力を選択させ、スクランブル更新値をOUTPUTから出力させる。

    このように、列カウント値Nが0になるタイミング、すなわち行カウント値Mがインクリメントされるタイミングでは、スクランブル更新SFR43からのスクランブル更新値が、切り替え回路47、NextRowスクランブル初期値記憶部46、切り替え回路48、Rowスクランブル初期値記憶部45、切り替え回路49を介してOUTPUTから出力される。 そして、スクランブル更新SFR43では、現在の行に対応するスクランブル更新値を1回シフトさせ、次の行に対応するスクランブル更新値を生成させる。 スクランブル更新SFR43は、最初にセクタ・スクランブル初期値記憶部44から受け取ったセクタ・スクランブル初期値(S )を行カウント値Mがインクリメントされる毎にシフトすることで、図3に示す0列目の1〜215行目までのスクランブル値S →S →・・S 214 →S 215を順次生成する。

    そして、列カウント値Nを19で割った余りが0、9又は10ではなく、かつN=0でもない場合には、切り替え回路49に216回SFR216を選択させ、前回のOUTPUTを216回シフトした値を出力させる(ステップSP16)。 このようしてOUTPUTから出力されるスクランブル値S を使用し、データD とXOR60にてデ・スクランブルのための演算(XOR)をすることで、デ・スクランブルされたデータDS をデ・スクランブル回路18から出力する(ステップSP17)。 次のデータD の入力がある場合にはステップSP4からの処理を繰り返す。

    この一連の動作によりOUTPUTには、入力されるデータD に対応するスクランブル値S が出力される。 すなわち、記録ブロックにおける最初のデータD Q=0が入力された場合には、OUTPUTからら、セクタ・スクランブル初期値記憶部44からのスクランブル値S が切り替え回路48、Rowスクランブル初期値記憶部45、切り替え回路49を介して出力OUTPUTから出力され、また、それ以降は、各切り替え回路47〜49を適切に切り替え制御することで、入力データD に対応するスクランブル値S が出力される。 出力されたスクランブル値S は、XOR60に入力される。 そして、XOR60にてデータD と排他的論理和が求められ、デ・スクランブルされたデータDS として出力される。

    次に、以上のデ・スクランブル処理動作を図3に示すデータS がD Q=0から順次入力される場合について具体的に説明しておく。 上述したように、先ず、データD Q=0/P=1 (D Q/P :符号化バイト順序番号Q/記録バイト順序番号P)入力時には、セクタ・スクランブル初期値記憶部44の初期値S がROWスクランブル初期値記憶部45にラッチされ、切り替え回路49によって選択されOUTPUTから出力される。 同時に初期値S は、216回SFR42に供給される。 次のデータD Q=216/P=1が入力されるタイミング、すなわち1クロック後、S が216回シフトされた値S 216を演算して出力する。 切り替え回路49は、N mod19=10の場合であって且つM=0〜107のとき、及びN mod19=9の場合であって且つM=108〜215のときと、N mod19=0以外は、216回SFR42の出力を選択する。 すなわち、データD Q=0の入力後、列カウント値N=9になるまでの、同一行で同一符号列のバイトデータの処理期間は、216回SFR42の出力を選択し、OUTPUTから出力させる。

    これにより、OUTPUTからは、S を216回シフトした値が順次出力される(S →S 216 →S 432 →・・→S 1944 (S (N×216)mod 2052 ))。 そして、N=10、M=0のデータD Q=108/P=10が入力されるタイミングで切り替え回路49は、108回SFR41の値を選択する。 切り替え回路49は、N mod19=10の場合であって且つM=0〜107のとき、及びN mod19=9の場合であって且つM=108〜215のとき、すなわち、同一行において一の符号列から次の符号列へ移るバイトデータを処理するタイミングで108回SFR41の出力を選択する。 108回SFR41は、Rowスクランブル初期値記憶部の出力、この場合はS を108回シフトした値S 108を出力する。 これにより、N=9→N=10において、入力データD がD Q=1944/P=9 →D Q=108/P=10へ変化する場合においても、適切なスクランブル値を出力させることができる。 切り替え回路49は、その後は216回SFR42の出力側に切り替えられる。 OUTPUTから出力されたS 108は、同時に216回SFR42にも入力され、以降、このS 108を216回シフトした値がN=11〜18まで出力されることになる(S 108 →S 324 →・・→S 1836 )。

    そして、N mod 19=0のデータ入力時、すなわち列カウント値N=19のときは、再びデータD Q=0/P=19が入力される。 このタイミングで切り替え回路49は、Rowスクランブル初期値記憶部45の出力を選択する。 Rowスクランブル初期値記憶部45には、上述したように、初期値S が格納されているため、この値S がOUTPUTから出力される。 これにより、D Q=1836/P=18 →D Q=0/P=19とシフトすべき回数は変化する場合においても、正しいスクランブル値S をOUTPUTに出力することができる。 以降、M=0の同行における処理では同様の動作が繰り返される。

    次に、M=0→1となる場合、すなわち305番目のデータD Q=304 (N=0,M=1)が入力されると、切り替え回路47、48の選択も切り替えられる。 この値は、次の記録ブロックの0番目のデータが入力されるまで次のように固定される。 すなわち、切り替え回路47は、Rowスクランブル初期値記憶部45側からスクランブル更新SFR43の選択を出力させるよう切り替えられる。 また、切り替え回路48は、NextRowスクランブル初期値記憶部46の出力を選択するよう切り替えられる。

    この切り替えにより、まず、初期値S がスクランブル更新SFR43にて1回シフトされた値S1がNext Rowスクランブル初期値記憶部46に記憶され、次のクロックによりRowスクランブル初期値記憶部45に保存され、切り替え回路48、切り替え回路49を介してOUTPUTから出力される。 以上の処理は2クロックを要する。 すなわち、S を出力するまでに2クロックを要するため、M=0→1となるタイミングより1クロック前の、最終列−1(N=302)のデータバイト入力タイミングで切り替え回路47をスクランブル更新SFR43側へスイッチし、最終列(N=303)のデータバイト入力タイミングで替え回路48の選択をNextRowスクランブル初期値記憶部46を選択させる。 これにより、次の行の先頭データバイト(行カウント値N=0,D Q=1/P=304 )の入力タイミングでRowスクランブル初期値記憶部45に保持されているS が切り替え回路49を介してOUTPUTから出力される。 以降、同じ行におけるデータが入力されている期間中(M=1の期間中)はRowスクランブル初期値記憶部45にはS が保持され続ける。 以降、M=1の期間は、上述と同様、列カウント値Nの値に応じた処理が繰り返される。 こうして、M→215まで同様な処理が繰り返されることで、記録バイト順序番号Pで入力されるバイトデータD のスクランブル値S を生成することができる。

    本実施の形態においては、図2、図3に示す行方向に入力される記録バイト順序番号Pの入力データについて、108回SFR41、216回SFR42、スクランブル値更新SFR43を組み合わせ、その出力を選択制御することで、符号化バイト順序番号Qについてシフト・レジスタ30にて演算した場合のシフト演算を実行させることができる。 したがって、列方向の記録順バイト序番号Pの順のバイトデータであって、符号化バイト順序番号Qの順でシフト・レジスタ30に入力して得られたスクランブル値から生成されたスクランブル・データをシーケンシャルにデ・スクランブル処理することができる。 このため、例えば記録ブロック全体をバッファに読み込み、符号化バイト順序番号Qの順に並べ替えることなく記録バイト順序番号Pの順序で入力される記録ブロックのシーケンシャルな処理が可能となる。

    なお、図3に示す記録ブロックのデータは216又は108で巡回するデータとなっているため、例えば108回シフト・レジスタSFR1を組み合せた構成としてもよい。 この場合、216回シフト演算が必要な処理では、108回SFRにおける演算を2回繰り返せばよい。 また、シフト演算として必要なシフト回数は108であるため、1回のシフト演算で、108の約数のうち2べき乗となる回数のシフト演算が可能なSFRであれば、適宜組み合せて記録バイト順序番号Pの順に入力されるデータのスクランブル値を算出させることができる。

    5. 誤り検出回路
    次に、本実施の形態における再生装置の誤り検出回路について説明する。 ブルーレイディスクにおいては、上述の図2に示す各符号列M0〜M31(以下、M(x)という。)の2048バイト(16384ビット)のデータに対し4バイト(32ビット)の誤り検出符号を付加する。 32ビットの誤り検出符号は、16384ビットの符号列I(x)を下記式(4)の生成多項式で除算することで求めることができる。
    G(x)=X 32 +X 31 +X +1・・・(4)

    16384ビットの符号列I(x)に付加される誤り検出符号EDC(x)は下記式(5)で表される。
    EDC(x)=ΣbtX =I(x)modG(x)(Σ:t=31〜0)・・・(5)
    ただし、I(x)=ΣbtX (Σ:t=16415〜32)

    この結果、誤り検出符号EDC(x)を付加した符号列D(x)は、下記式(6)で表現することができる。
    D(x)=I(x)+EDC(x)・・・(6)

    ブルーレイディスクにおいては、ディスクにデータを記録する際には、上記(5)の演算により得られるEDC(x)を付加した32個の符号列D(x)(論理セクタ)からなる記録ブロック(Recording Unit Block)と補助データとをインターリーブ処理し、1つのECCブロックとしてからディスクに記録することで、バースト・エラー等の対策がなされている。 このECCブロックを読み出し再生する際には、上記インターリーブを解き32個の符号列D(x)からなる記録ブロックとした後、必要に応じて各記録ブロックの誤り訂正がなされた後、各符号列D(x)に対する誤り検出値を求める。

    上記式(5)に示す誤り検出符号EDC(x)は、符号列I(x)を図11に示す32ビットシフト・レジスタに入力することで得ることができる。 符号列D(x)の全符号を入力し終えた後の32ビットシフト・レジスタ値が誤り検出符号EDC(x)(=0)となる。 通常、ディスクから読み出されたデータの誤りを検出する誤り検出回路では、誤り検出符号を付加するときと同様の演算器に読み出した符号列D(x)の全符号を入力して得られる32ビットシフト・レジスタ値が0か否かにより誤り検出が実行され、32ビットシフト・レジスタ値が0でなかった場合に誤りが発生したことを検出することができる。 すなわち、図11に示す32ビットのシフト・レジスタにD(x)を入力することで、D(x)をG(x)により除算した余りが0か否か(D(x)modG(x)=0 or not0)を判別でき、誤りを検出することができる。

    一方、ブルーレイディスクにおいては、誤り検出符号EDC(x)が付加された符号列D(x)は、バースト・エラー対策のため、符号化順序と異なる方向に記録されることとなる。 したがって、読み出されたデータの順序(記録順序)が元の順序(符号化順序)と異なるため、図11に示すシフト・レジスタ200により誤り検出値を求めようとすると、光ディスクから読み出した読み出しデータを、その記録順序のままで入力することができない。 すなわち、一度符号化順序に並び変える必要が生じる。

    そこで、本実施の形態においては、図11に示すシフト・レジスタを使用せず、符号化順序と異なる処理順序で誤り検出値を求めることができる誤り検出方法を提案するものである。 誤り検出回路では、バイト単位で入力されたデータをビット単位で処理する回路を有する。 図2及び図3に示すバイト単位のデータ・フォーマットをビット単位で表現すると図12、図13のようになる。

    ここで、本実施の形態においては、上述の同様に、行方向のバイト順を記録順序、列方向のバイト順を符号化順序として説明する。 図12はビット単位で示した場合の記録ブロックのデータの並び順を示す図であり、図13は、2つの符号列を拡大して示す図である。 図中の数値は各ビットの符号化ビット順序番号を示す。 図12、図13に示すように、列方向のビットに対して符号化順序を示す符号化ビット順序番号qを対応付けた場合、上述の図4左図に示すように、符号化ビット順序番号qの順序のMSB〜LSBを行方向に並び替えた順序が実際にディスクに記録される順序(記録ビット順序番号p)を示す。

    一の符号列D(x)は16416ビット(2052バイト)のデータ群からなり、各符号列D(x)は、図中のバイトデータでみた記録方向と直交する列方向の各バイトデータに対し上述したように符号化バイト順序番号Qが対応付けられる。 この符号化順序のバイトデータの各ビットには、16415→16414→・・14689→14688→14687→・・・→1→0の符号化ビット順序番号qが対応付けられる。 そして、32の符号列D(x)から65664バイトの記録ブロックF(x)が構成されている。 ここで、ディスクから読み出されるデータは記録ビット順序番号pであり、上述のデ・スクランブル処理及び本誤り検出回路における誤り検出処理が、記録ビット順序番号pの順の8ビットを1バイトとした記録バイト順序番号Pの順に実行される。 ここで、記録ビット順序番号qは、符号化ビット順序番号qが連続するよう図13のように列方向に並べた場合には、列方向8ビット毎の行方向の順序となる。 すなわち、記録ビット順序番号p=0→1→7→8→9→・・・15→・・・の順序は、符号化ビット順序番号q=16415→16414→・・16408→14687→14686→・・・14680→・・・に対応する(図4参照)。

    本実施の形態の誤り検出回路には、記録ブロック100が図13に示す列方向8ビットデータからなるバイト単位の記録バイト順序番号Pの順で入力される。 すなわち、記録ビット順序番号pの順でディスクから読み出されたビットデータは、図12のように、1列8ビットで304列からなる304バイト(2432ビット)を1行単位とし、行方向に並べられた記録バイト順序番号Pの順に入力される。 なお、本実施の形態においては、記録バイト順序番号Pの順に入力されるデータを0バイト目から順にD P,iと表現することとする。 ここで、0≦i≦7とし、iは、記録ビット順序番号pの順であって、1バイトに含まれる8ビットの処理順番を示す。

    また、記録ブロックF(x)における列番号をNとし、ビット行番号をm、行番号をMと示す。 例えば、N=0、M=0のバイトデータ(符号化ビット順序番号q=16415〜16408)は、記録バイト順序番号P=0番目であり、誤り検出回路に0番目に入力され、D P=0,iのように示す。 同様に、N=18、M=0行目のデータは記録バイト順序番号P=18であり、m=1の符号化ビット順序番号q=1726のビットデータは、記録バイト順序番号P=18番目のバイトデータの2ビット目として入力されD P=18,1のように示す。 同様に、N=0列、M=215行目のデータは、記録バイト順序番号P=65360であり、符号化ビット順序番号q=14688のビットデータは、記録バイト順序番号P=65360番目のバイトデータの8ビット目として入力されD P=65360,7と示す。

    ここでは、先ず、本実施の形態における誤り検出回路の理解を容易とするため、その原理について説明する。 ブルーレイディスクにおいては、誤り検出値は図11に示すシフト・レジスタ200に符号列D(x)(符号化ビット順序番号q=16415〜0)を入力して得られるシフト・レジスタ値とされる。 例えば、シフト・レジスタ200に入力する符号列D(x)=D0とし、D0は、記録ビット順序番号p=0、すなわち0番目に入力されるデータ(q=16415)である16415次のデータ、記録ビット順序番号p=1728、すなわち1728番目に入力するデータ(q=14687)である14687次のデータ、記録ビット順序番号p=3456、すなわち3456番目に入力するデータ(q=16415)である12959次のデータの3ビットのみが「1」で、その他の値は全て「0」であるとする。 ここで、B 16415 =B 14687 =B 12959 =1である。

    この場合、符号列D0を32ビットシフト・レジスタ200に入力した結果は、シフト・レジスタ200の値を「00000001h」に初期化し、これを16415回シフトした値、14687回シフトした値、及び12959回シフトした値を求め、これらの排他的論理和で表現することができる。 すなわち、符号列D0を32ビットシフト・レジスタ200に入力した結果E0は、下記(7)のように求めることができる。
    E0=B 1641516415 modG(x)+B 1468714687 modG(x)+B 1295912959 modG(x)=(X 16415 +X 14687 +X 12959 )modG(x)・・・(7)

    符号列D0の全てをシフト・レジスタ200に入力して得られる結果E0(32ビットのシフト・レジスタ値)は、上記概念を利用すれば、符号列を構成するビットデータが「1」であるシフト・レジスタ値を排他的論理和していくことで求めることができる。 すなわち、符号列D0の場合は、0番目に入力する16415次のデータ、1728番目に入力する14687次のデータ、3456番目に入力する12959次のデータの3ビットのみが「1」で、その他のデータは「0」であるため、B 16415 、B 14687 、B 12959のみを係数にした排他的論理和を求めることで、シフト・レジスタ値であるE0を算出することができる。

    つまり、X 16415 modG(x)、X 14687 modG(x)、X 12959 modG(x)・・を演算することができれば、符号列D(x)の32ビットシフト・レジスタ値である誤り検出値E(x)を求めることができる。

    記録ブロックの各符号列D(x)は、16416ビットのデータからなるが、各ビットについて、上記のX modG(x)を例えば保持しておき、入力ビットデータが「1」の場合、その符号化ビット順序番号qに対応するX modG(x)を参照することができれば、それらの排他的論理和を求めることで、符号列D(x)の32ビットシフト・レジスタ値を求めることができる。 ここで、最も簡単に32ビットシフト・レジスタ値を求めるためには、符号列D(x)の各ビットに対応するX modG(x)を記憶しておき、入力データの符号化ビット順序番号のX modG(x)を全て排他的論理和すればよい。 以下、本明細書においては、X modG(x)を代替値ということとする。

    一の符号列D(x)は(q+1)=k(1≦k)ビットから構成されるが、各ビットが自身の符号化ビット順序番号qに対応した代替値X modG(x)を有する。 この代替値X modG(x)は、kビットの符号列D'(x)のq次以外を0にした符号列(以下、代替符号列d(x)という)をG(x)で除算した余剰を示す。 ここで、代替符号列とは、元の符号列から算出する誤り訂正符号に対し、元の符号列の該当ビットが誤っていた場合のシンドローム値、すなわち元の符号列D(x)の一のビットデータのみが誤った場合のシンドローム値を示す。 kビットの符号列D(x)にはk個の代替符号列d(x)が対応する。 この代替符号列d(x)をG(x)で除算した余剰が代替値X modG(x)となる。 入力される符号列D(x)において、符号が「1」であるビットに対応する全代替値X modG(x)の排他的論理和を求めることで、誤り検出値E(x)を求めることができる。 なお、本実施の形態においては、代替値X modG(x)を予め演算してテーブルに記憶しておくものとして説明するが、演算して求めるようにしてもよい。

    図14は、上記概念及びこの概念を利用して誤り検出値を算出する方法を説明する図である。 kビットの符号列D(x)の各ビットが全て「1」の符号列{111・・・1}を基礎の符号列D'(x)とする。 この符号列D'(x)を図11に示すシフト・レジスタ200に入力して得られる32ビットシフト・レジスタ値は、符号列D'(x)の誤り検出値E'(x)を示す。 ここでは、k=q+1=16416ビットの符号列D'(x)について説明する。

    まず、基礎の符号列D'(x)には上述したようにk個の代替符号列d(x)が対応する。 一の符号列には、kビットからなる符号列にq=16415〜0の符号化ビット順序番号を付した場合、一の符号化ビット順序番号目のビットデータのみを「1」、その他のビットデータを全て「0」としたk個の代替符号列d(x)が対応することとなり、各代替符号列d(x)は、それぞれ異なる位置の符号化ビット順序番号目のみが「1」となっている。 具体的には、最上位ビット(q=16415)のみが「1」の代替符号列d(x) 16415 ={100・・・0}、16414次のビットのみが「1」の代替符号列d(x) 16414 ={010・・・0}、16413次のビットのみが「1」の代替符号列d(x) 16413 ={001・・・0}、・・・、0次のビットのみが「1」の代替符号列d(x) ={000・・・1}からなる。 これら各代替符号列d(x) をシフト・レジスタ200に入力して得られた32ビットシフト・レジスタ値が代替値X modG(x)=R である。 この代替値X modG(x)=R は、符号化ビット順序番号qに対応した値となっている。

    すなわち、符号列と同一ビット数のビットデータからなり、符号列と同一のビット順序番号を対応付けたとき、ビット順序番号に対応する代替符号列とは、当該ビット順序番号のビットデータのみが「1」、その他のビットデータが全て「0」とされたものであって、符号列の各ビットデータの代替値は、そのビットデータの符号化ビット順序番号の代替符号列をシフト・レジスタ200に入力した結果となる。 これにより、符号列D'(x)をシフト・レジスタ200に入力して得られる32ビットシフト・レジスタ値(誤り検出値E'(x))は、各代替符号列d(x) をシフト・レジスタ200に入力して得られる32ビットシフト・レジスタ値(代替値R )の全てを排他的論理和したものとなる。

    このように、代替値X modG(x)=R を、符号列D(x)の各ビット数に対応する数、本実施の形態においては、k=16416個の代替値R をテーブルに保持しておき、入力される符号列D(x)の各ビットのうち符号が「1」のビットの代替値R の排他的論理和を求めることで、符号列D(x)の誤り検出値E(x)を求めることができる。 この場合、シフト・レジスタ200に符号列D(x)を入力する必要がないので、符号列D(x)の入力順序を符号化ビット順序番号の順と異なる順序としても誤り検出値E(x)を求めることができる。

    データは、記録ブロック単位で処理されるが、記録ブロックF(x)は符号列D(x)を32個配置したものであり、誤り検出値E(x)は、符号列D(x)毎に算出されるため、一の記録ブロックF(x)から32の誤り検出値E(x)が求められる。

    次に、各ビットデータに対応する代替値の数が全ビット数kより、少ない個数の代替値で誤り検出E(x)を算出する方法について説明する。 本実施の形態においては、ビットデータの並び順、記録ブロックにおけるバイトデータの並び方の規則性を利用することで、上記k=16416個の代替値を19個として誤り検出回路を構成することができる。

    まず、記録ブロックF(x)は、ローテーション前の状態とされた後、ローテーション12(図1参照)から図13に示す記録バイト順序番号Pの順に、バイト単位で入力される。 このバイト単位のバイトデータD P,iに含まれる8ビットのビットデータは、符号化ビット順序番号qが連続する列方向のビットである。 したがってビット行m=j行目の各ビットに対する代替値R は、1行前のビット行m=j−1の各ビットに対する代替値R q−1を図11に示すシフト・レジスタ200に入力して1回シフトさせて得られるシフト・レジスタ値となっている。 したがって、入力されるバイトデータにおける8ビット全てのビットデータに対応する代替値R を保持しなくても、一のビットデータに対応する代替値から各ビットデータに対応する代替値R を算出することができる。

    これにより、各バイトデータに対して一のビットデータに対応する代替値をバイトデータに固有の代替値(以下、固有代替値という。)として用意するのみで、簡単に各ビットデータに対応する代替値に変換することができ、この場合、保持する代替値の数がk/8=K個となり、保持する代替値を1/8の2052個に減らすことができる。

    更に、本実施の形態における光ディスクは、上述の図2乃至図6、又は図12及び図13において説明したように、1つの記録ブロックが32個の符号列からなり、符号化バイト順序番号の順であれば216個のバイトデータ、符号化ビット順序番号の順であれば1728個のビットデータを1列として列方向に304列並べたものとなっている。 したがって、図3に示すように、各列方向における符号化バイト順序番号Qは連続する。 そして、図13に示すように、0行目〜215行目まで、各列方向における各バイトデータは、符号化ビット順序番号qが1つずつ大きくなるのみで連続する。

    また、1つの符号列D(x)は、9列と半分からなり、記録ブロックF(x)には、偶数符号列及び奇数符号列からなる2つの符号列を組みにした、19列からなる符号列セットが繰り返し配置される構成となっている。 すなわち、図2及び図3に示すように、記録バイト順序番号Pの順での入力順序をみると、各行に対して19通りの符号化バイト順序番号Qを有し、次の偶数符号列及び奇数符号列からなる符号列セットも、19の記録バイト順序番号Pに対し同様の符号化バイト順序番号Qを有することとなる。 このように、本実施の形態における光ディスクは、その規則性から、1つの記録ブロックは、19の符号化バイト順序番号Qが繰り返される構成となっている。

    以上のことから、一の符号列セットにおける一の行分の固有代替値19個を一の符号列セットの特定の行の固有代替値を特定固有代替値U 〜U 18として保持するようにし、この特定固有代替値U 〜U 18から他の行の固有代替値R を算出し、各固有代替値R から代替値R を算出するようにすれば、保持する代替値は特定固有代替値U 〜U 18の個数、すなわち19個のみとなる。

    この場合、一の符号列セットD(x)に含まれるビット数に対応する代替値R の個数=k個=16416個であるが、本実施の形態においては、記録ブロックに含まれるデータの並び順の規則性を利用することで、代替値として保持するデータ量を1/864の量である19個と飛躍的に減少させることができる。

    以下、本発明にかかる再生装置の誤り検出回路について具体的に説明する。 図15は、誤り検出回路の具体的な構成を示すブロック図である。 読み出された記録ブロックF(x)は、バイト毎のバイトデータとして記録バイト順序番号Pの順序で上述のデ・スクランブル回路に入力されデ・スクランブルされる。 そして、デ・スクランブルされたバイトデータが、記録バイト順序番号Pの順で誤り検出回路201に入力される。 この誤り検出回路201は、バイトデータの列及び行をカウントするカウンタ202と、入力バイトデータに対応する固有代替値を出力する代替値出力部とを有する。 代替値出力部は、カウンタ202のカウント値に基づきその出力が制御されるデータ切り替え回路203と、現在の入力データの行に対応する19個の固有代替値を保持する代替値テーブル204と、現在の代替値を除算して次の行に対応する19の更新代替値を算出する除算器205と、除算結果を保持する更新用固有代替値テーブル206と、19個の特定固有代替値を保持する特定固有代替値テーブル207と、代替値テーブル204から各列毎の更新代替値(以下、補正代替値という。)が供給される補正代替値出力部208を有する。 これら各部の処理は8ビットのバイト単位のデータで処理される。

    ここで、代替値、固有代替値、特定固有代替値、補正代替値は、符号化バイト順序番号Qの順に入力される各入力バイトデータの各ビットデータに対応付けられた符号化ビット順序番号に対応する代替値となるようそれぞれ用意される。 本誤り検出回路201は、各ビットデータと、各ビットデータに対して対応付けられた、入力順序(記録バイト順序番号P/記録ビット順序番号p)とは異なる、符号化ビット順序番号qに対応した代替値とから誤り検出値を求めるものであるが、以下の説明においては、記録バイト順序番号Pを有するバイトデータD P,iに対応する代替値(固有代替値)をR P,iと示す。 なお、実際には、バイトデータD P,iの各ビットデータは符号化ビット順序番号qに対応付けられ、この符号化ビット順序番号qに対応する代替値R が上記固有代替値R P,iである。

    更に、誤り検出回路201は、補正代替値出力部208と入力バイトデータとからバイト毎のバイト誤り検出値をビット単位で算出するビット処理演算部210と、ビット処理演算部210からの結果を受け取り一の符号列D(x)に対する誤り検出値E(x)を出力するバイト処理演算部220とを有する。 バイト処理演算部220には、ビット処理演算部210から出力される各バイトのバイト誤り検出値E が供給される。 そして、現在の入力バイトデータの誤り検出値E と前回までの入力バイトデータの誤り検出値の排他的論理和結果との排他的論理和を求める論理回路(XOR)221と、XOR221からの出力を保持し、2051回目に保持した値を符号列D(x)の誤り検出値E(x)として出力するバイト誤り検出値保持部222と、新たな記録ブロックF(x)の入力毎に誤り検出値保持部222のデータをリセットするリセット回路223とを有する。 ここで、バイト処理演算部220は1つのみ図示するが、記録ブロックF(x)に含まれる符号列D(x)の個数分のバイト誤り検出値保持部222を有し、各バイト誤り検出値保持部222に各符号列D(x)のバイトデータに対応するバイト誤り検出値がビット処理演算部210から供給される。 なお、バイト誤り検出値保持部222以外の部分は共有することができる。

    カウンタ202は、デ・スクランブルされた記録ブロックF(x)がバイト単位で入力され、これをカウントして列番号Nのカウント値N及びバイト行番号Mのカウント値Mを更新すると共にビット処理演算部210へバイトデータD P,iを供給する機能を有する。 上述したように、入力バイトデータD P,iにおいてPは記録バイト順序番号であって、1記録ブロックF(x)の符号列D(x)において記録バイト順序番号P=0〜16415、iは一のバイトデータに含まれる0〜7番目のビット番号を示し、符号化ビット順序番号が連続する8ビットデータからなる。

    符号列D(x)は、バイト単位で、図3に示す記録バイト順序番号Pの順のバイトデータが、D P=0,i →D P=1,i →D P=2,i →、・・・→D P=65662,i →D 65663,iと入力される。 カウンタ202は、データD P,iが入力される毎に列カウント値Nをインクリメントし、列カウント値Nを303までカウントすると0にリセットする。 そして、列カウント値Nを0にリセットするタイミングでバイト行カウント値Mをインクリメントする。 また、列カウント値N及び行カウント値Mに応じてデータ切り替え回路203の切り替えを制御する制御信号を出力する。 また、これらのカウント値N、Mに応じて固有代替値テーブル204の出力制御、ビット処理演算部210の制御、及びバイト処理演算部220の制御を行なう各種制御信号を生成し、出力するようにしてもよい。

    例えば、列カウント値Nを更新するタイミング、すなわちバイトデータが入力されるデータ入力タイミングで固有代替値テーブル204へ制御信号を出力し、固有代替値テーブル204に格納される19の特定固有代替値R M=0 (=U 〜U 18 )のいずれかを選択出力させたり、同様に上記データ入力タイミングでビット処理演算部へ制御信号を出力し、後述する誤り検出中間値を0にリセットさせたり、又はバイト行カウント値Mを215までカウントした後0にリセットするタイミング、すなわち1つの記録ブロックF(x)の全符号列D(x)の入力が終了したタイミングでバイト処理演算部220へ制御信号を出力し、リセット回路223の出力を0にリセットさせたりすることができる。

    データ切り替え回路203には、代替値テーブル204から現在の入力バイトデータが属する行カウント値Mに対応する固有代替値と、更新用固有代替値テーブル206に保持された次の行に対応する更新代替値R' と、特定固有代替値テーブル207に保持された特定固有代替値R M=0とが入力される。 除算器205は、代替値テーブル204からの代替値を受け取り、後述する所定の演算をすることで現在の行の次の行の代替値である更新代替値R' を算出するものであり、この更新代替値R' は更新用固有代替値テーブル206に格納される。

    データ切り替え回路203は、バイト行カウント値Mが215→0になるタイミングで特定固有代替値R M=0を選択して代替値テーブル204に出力する。 バイト行カウント値Mが215→0となるタイミング以外の場合は、バイト行カウント値Mがインクリメントされその更新信号が入力される毎に更新用固有代替値テーブル206からの、次の行に対応する更新代替値R' を選択して代替値テーブル204に出力する。 代替値テーブル204は、列カウント値Nがインクリメントされるタイミング(データが入力されるタイミング)で、現在格納されている19個の特定固有代替値R のうち0行目に対応する代替値から順次選択し、補正代替値R として補正代替値出力部208へ出力する。

    更新用固有代替値テーブル206は、除算器205により現在の代替値を次の行の入力バイトデータに対応する固有代替値とされた更新代替値R' を保持し、バイト行カウント値Mが更新される毎にこれを出力する。 特定固有代替値テーブル207には、本実施の形態においては、16416ビットからなる符号列D(x)において、記録バイト順序番号P=0〜19の7ビット目のビットデータ(データD P=0,7 〜D P=19,7 )に対応する代替値U 〜U 18を特定固有代替値R M=0として有する。

    なお、本実施の形態においては、0〜18番目に入力される各バイトデータの7ビット目に対応する代替値R M=0 =R 0,7 〜R 18,7を特定固有代替値として保持するものとして説明するが、特定固有代替値はこれに限らず、いずれの符号列セットにおけるいずれの1行に対応する固有代替値R であってもよく、この固有代替値R は、バイトデータにおける8つのビットデータのいずれのビットデータに対応する代替値であってもよい。

    本実施の形態においては、この19個の特定固有代替値R M=0を各行毎の固有代替値R となるよう更新演算して更新代替値R' とすることで、予め保持する代替値の数をわずか19個の特定固有代替値R M=0のみとするものである。

    除算器205は、シフト・レジスタ200と逆のシフト演算を行なうシフト・レジスタである。 図16は、除算器205を示す図である。 除算器205は、19個の固有代替値R P,7が入力されるとこれを8回シフトし、1行次の代替値を出力する。 例えば、0行目の特定固有代替値R M=0は8回のシフト動作により1行目の特定固有代替値R P=304,i=7 〜R P=322,i=7とされる。

    ビット処理演算部210は、入力バイトデータD P,iをビットデータに変換するパラレル/シリアル変換回路(以下、P/S回路という。)211と、P/S回路211の出力に応じて補正代替値出力部208の出力を選択する切り替え回路212と、誤り検出値中間値保持部213と、切り替え回路212と誤り検出値中間値保持部213との出力の排他的論理和を求める論理回路(XOR)214と、XOR214の出力を除算する除算器215、除算器215の出力又は0を選択して出力する切り替え回路216と、XOR214の出力であるビット誤り検出値が8回更新される毎にバイト誤り検出値を出力するビット誤り検出値保持部217とを有する。

    P/S回路211は、8ビットのバイトデータD P,iをシリアルに変換し、1ビット毎に順次出力する。 切り替え回路212は、シリアルに変換された入力ビットデータD P,iが「0」であるときは、「0」を出力し、「1」であれば、補正代替値出力部208の出力(補正代替値)を選択する。 除算器215は、図11に示すシフト・レジスタ200であり、XOR214の出力結果を除算する。 切り替え回路216は、1バイトの演算が終了するまで除算器215の出力を選択し、1バイト、すなわち8回演算が終了する毎に0を選択して出力する。 誤り検出中間値保持部213は、除算器215の除算結果を誤り検出中間値C P,iとして保持する。 そして、XOR214は、誤り検出中間値保持部213により保持される誤り検出中間値C P,iとデータD P,iに対する補正代替値又は0との排他的論理和を求め、ビット誤り検出値E P,iとしてビット誤り検出値保持部217に出力する。

    例えば、入力バイトデータD P,iがP/S回路211に入力されるとP/S回路211は、シリアルデータD P,0 、データD P,1 、・・・、データD P,7を順次出力する。 ここでは、入力された一のバイトデータの符号化ビット順序番号qがq+7〜qであるとする。 その場合、b q+7 〜b q+0に対応するビットデータからなるバイトデータがD P,iとして入力される。 その場合、P/S回路211からは、MSBからb q+7 →b q+6 →b q+5 →b q+4 →b q+3 →b q+2 →b q+1 →b q+0の順で1ビット毎にビットデータが入力される。 また、補正代替値出力部208には、補正代替値D P,i=7 =R としてX modG(x)が保持されているものとする。

    最初の1ビット目b q+7が入力されると、ビット誤り検出値保持部217には、
    P,0 =b q+7q+1 modG(x)+C P,0
    が格納される。 なお、誤り検出中間値C P,0 =0である。

    この値が除算器215にて除算されて下記の誤り検出中間値が生成され、誤り検出中間値保持部213に保持される。
    P,1 =(b q+7q+1 modG(x))modG(x)=b q+7q+1 modG(x)

    次いで、2ビット目b q+6が入力されると、ビット誤り検出値保持部217には、
    P,1 =b q+6 modG(x)+b q+7q+1 modG(x)=(b q+6 +b q+7q+1 )modG(x)
    が格納される。 同様に、この値が除算器215にて除算されて下記の誤り検出中間値が生成され、誤り検出中間値保持部213に保持される。
    P,2 =((b q+6q+1 +b q+7q+2 )modG(x))modG(x)=(b q+6q+1 +b q+7q+2 )modG(x)

    こうして、最終的に8ビット目b q+0が入力された時点でのビット誤り検出値は、
    P,7 =(b q+7q+7 +b q+6q+6 +b q+5q+5 +b q+4q+4 +b q+3q+3 +b q+2q+2 +b q+1q+1 +b q+0q+0 )modG(x)
    となる。 この値は、1バイトデータについて誤り検出値を算出したバイト誤り検出値E である。

    バイト誤り検出値E は、1バイト毎にバイト処理演算部220に出力される。 バイト処理演算部220のXOR221に供給されたバイト誤り検出値E は、2052バイト分のXORが演算されたところで誤り検出値E(x)として出力される。 バイト誤り検出値保持部222は、例えば32個の保持部からなり、列カウント値Nに応じて10又は9バイト毎にXOR221の結果を保持することで、各符号列D(x)に対応する値を保持する。 そして、1記録ブロックF(x)のバイト誤り検出値E が入力される間、各保持部の値が順次XOR221からの値に更新される。 リセット回路223は、カウンタ202からの制御信号に基づきバイト誤り検出値保持部222の出力又は0を選択出力する。 ここで、1記録ブロックF(x)の入力が終了し、次の記録ブロックF(x)の各符号列D(x)の最初のバイト誤り検出値E が入力されるタイミングの間、すなわち、行カウント値M=0、N=0、10、19、29、・・のタイミングで0を出力し、それ以外のタイミングではバイト誤り検出値保持部222の出力をそのまま出力するよう構成される。 なお、バイト誤り検出値保持部222の各保持部に保持している値を誤り検出値E(x)として出力した後、0にリセットするようにしてもよい。

    6. 誤り検出方法
    次に、このように構成された誤り検出回路の動作について説明する。 図17は、本実施の形態における誤り検出回路201の動作を示すフローチャートである。 ここでは、説明の簡単のため、16416ビットの符号列D0(D q=0 〜D q=16416 ={100000000・・・・・・000000001})が入力される場合の誤り検出値の求め方について説明する。 ここで、qは符号化ビット順序番号であり、符号列D0が実際に入力される順序は、記録バイト順序番号Pの順である。 すなわち、符号列D0は、記録ビット順序番号pの順に処理されるが、各ビットデータには、入力順序である記録ビット順序番号pとは異なる符号化ビット順序番号qが対応付けられている。 符号列D0とは、この符号化ビット順序番号qの順に符号列D0を並び替えた場合に、最上位ビットと最下位ビットのみが「1」、その他のビットが「0」である符号列とする。 ここで求める誤り検出値は、この符号列D0をビット順序番号qの順(={100000000・・・・・・000000001})に並び替え、図11に示すシフト・レジスタ200に入力して得ることができるシフト・レジスタ値である。 なお、上述したように、実際には、検出回路201に対して、32の符号列からなる記録ブロックF(x)がバイト単位で記録バイト順序番号Pの順で順次入力される。

    まず、記録ブロックF(x)の記録バイト順序番号P=0番目のバイトが入力されるタイミングで特定固定代替値テーブル207の特定固有代替値U 〜U 19をロードし、データ切り替え回路203を介して固有代替値テーブル204に格納する(ステップSP21)。 ここで、記録ブロックF(x)の記録バイト順序番号P=0番目以外であって、行カウント値Mが更新した場合には、更新代替値テーブル206に格納されている更新用固有代替値をロードする。 固有代替値テーブル204は、一の行目のバイトデータの入力が終了するまで、例えば0行目であれば、バイトデータD P=0,i 〜D P=304,iの入力が終了するまで19個の固定代替値を順次出力する。 この場合、固有代替値テーブル204は、列番号(列カウント値)Nを19で割った余りの0〜18をポインタ(N mod19)とし、ポインタの示す列に対応する特定固有代替値を、補正代替値出力部208へ出力する(ステップSP22)。 ここで、0番目のバイトデータの固有代替値、すなわち記録バイト順序番号P=0番目のバイトデータの7ビット目のビットデータD P=0,7に対応する代替値R P=0,7は、Xの16408次のデータ(X 16408 )のみを「1」としたデータ(代替符号列={000000001・・・・00000000}(16416バイト))のmodG(x)、すなわち、当該代替符号を図7のシフト・レジスタ30にて除算した32ビットのシフト・レジスタ値(18461F40h)に等しい。

    そして、0バイト目のデータD P=0,i ={10000000(80h)}をカウンタ202に入力する(ステップSP23)。 バイトデータD P=0,iは、符号化ビット順序番号q=16415〜16408のデータである。 このとき、誤り検出中間値C P,i =C 0,0は0でリセットされている。 0番目に入力されるデータD P=0,iは、P/S回路211にて8ビットのシリアルデータに変換され、1ビット毎に順次切り替え回路212に出力され(ステップSP24)、XOR214が誤り検出中間値C P,i =C 0,0と切り替え回路212の出力B P,iとの排他的論理和を演算し、ビット誤り検出値保持部217のビット誤り検出値E P,0を更新する(ステップSP25)。 本例においては、最初の0ビット目のデータD P=0,0 =1であるため、切り替え回路212は補正代替値(X modG(x)=R P,7 、ここでG(x)=X 32 +X 31 +X +1)を出力する。 本例においては18461F40hの補正代替値R P=0,7と誤り検出中間値C P,i =C 0,0 =0とをXORした値E P=0,0がビット誤り検出値保持部217に保持される。

    ここで、8ビット全ては終了していないため(ステップSP26:No)、XOR214の出力E P=0,0が除算器215にて除算されて誤り検出中間値(C P=0,1 =E P=0,0 modG(x)=R P=0,6 )とされ、誤り検出中間値保持部213に保持される。

    本例においては、0ビット目の入力後、R P=0,7 =E P=0,0 =18461F40hのmodG(x)が算出され、その結果、C P=0,1 =308C3E80h={000000010・・・00000000}が誤り検出中間値保持部213に保持される。 これは、X 16408のみ「1」の代替符号列をシフト・レジスタ30にて1回左にシフトしたデータである。 この値は、X 16409のみ「1」の代替符号列(={000000010・・・・00000000})(16416バイト))のmodG(x)、すなわち、X 16409のみ「1」の代替符号列を図7のシフト・レジスタ30にて除算した32ビットのシフト・レジスタ値(308C3E80h)(=R 0,6 )に等しい。

    次に、0バイト目の1ビット目のデータD P=0,1 =0であるため、補正代替値R P,7は選択されず、上述の誤り検出中間値C P=0,1がXOR214を介してビット誤り検出値保持部217にロードされる(ステップSP27)。

    すなわち、切り替え回路212に入力されるビットデータD P,iが「1」であれば、切り替え回路212の出力B P,i =R となり、D P,iが「0」であれば切り替え回路212の出力B P,i =0となる。 7ビット目の入力において除算器215には誤り検出中間値C P,i +切り替え回路212の出力B q,iが入力され、誤り検出中間値保持部113に(C Q,i +B Q,i )modG(x)が保持される。

    そして、本例の場合は、残り2〜7ビット目までのデータD P=0,2 〜D P=0,7 =0であるため、誤り検出中間値が除算器215にて除算された値が順次ビット誤り検出値保持部217にロードされる。 すなわち、0ビット目の入力によりX 16408のみを「1」とした代替符号列のmodG(x)がビット誤り検出値保持部217にロードされ、以降1〜7ビット目の入力により、除算器215にて除算が繰り返され、X 16408 modG(x)→X 16409 modG(x)→・・・→X 16415 modG(x)となり、0バイト目の最終ビットである7ビット目のデータD P=0,7が入力された時点ではビット誤り検出値保持部217には、X 16415 modG(x)が保持されることなる。

    8回の演算が終了すると(ステップSP26:Yes)、誤り検出中間値C P,iが0にリセットされ、ビット誤り検出値保持部217に保持されているビット誤り検出値E 0,7がバイト処理演算部220のXOR121に出力される(ステップSP27)。 本例においては、ビット誤り検出値E P=0,7 =230F9088hが出力される。 そして、バイト誤り検出値の初期値(=0)とXORされた値がバイト誤り検出値保持部222に保持される(ステップSP28)。 このように、バイト誤り検出値保持部222には、過去のビット誤り検出値E P,7 (8ビット毎の演算値)を積分した値E(x) P−1が格納されており、この値E(x) P−1とビット処理演算部210にて演算されたビット誤り検出値E とが各符号列D(x)毎に順次XORされ、バイト誤り検出値の値E(x) が更新されていく。

    1バイトの誤り検出値の演算が終了すると、カウンタ202は、列カウント値Nをインクリメントする(ステップSP29)。 列カウント値Nが303→0である場合(ステップSP30:Yes)にはバイト行カウント値Mを更新し(ステップSP31)、それ以外の値である場合にはステップSP22からの処理を繰り返す。 また、バイト行カウント値Mの値を更新した場合には、更新用固有代替値テーブル206に読み込まれている更新用固有代替値を代替値テーブル204にロードし(ステップSP21)、ステップSP22以降の処理を繰り返す。 また、バイト行カウント値Mが215→0である場合(ステップSP32:Yes)、すなわち1つの記録ブロックF(x)、32の符号列D(x)の誤り検出値E(x)の算出が終了した場合は、各誤り検出値E(x)を出力する(ステップSP33)。 そして、次の記録ブロックの誤り検出値の算出を行なう場合(ステップSP34:Yes)は、ステップSP21からの処理を繰り返す。 この場合には、代替値テーブル204は特定固有代替値テーブル207の特定固有代替値をロードし(ステップSP21)、ステップSP22からの処理を繰り返す。

    本例においては、符号化ビット順序番号qの順でMSB及びLSB以外は全て0であるので、0バイト目以降、記録バイト順序番号P=32536番目まで、バイト誤り検出値保持部222に保持されている値はE P=0,7 =230F9088hのままとなる。 そして、符号列D0において、記録バイト順序番号P=32537番目のバイトデータD P=32537,i =00000001bが入力されると、これに対応する補正代替値R =X modG(x)=F81FF949hが更新用固有代替値テーブル206からロードされる。 バイトデータD P=32537,i =D q=7 〜D q=0 、すなわち符号列D0の符号化バイト順序番号Q=2051の最終バイトである。 この補正代替値R =X modG(x)=F81FF949hは、X のみ「1」の代替符号列(={00000000・・・・00000001})をシフト・レジスタ30にて除算した値に等しい。

    ビット処理演算部210にバイトデータ(D P,i )が入力されと、シリアルデータに変換される(ステップSP3、4)。 このとき誤り検出中間値C P,iは0にリセットされている。 0〜6ビット目まではデータD P,0 〜D P,6 =0なのでビット誤り検出値は0である(ステップSP5〜SP10)。 そして、最終ビットのデータD P,7 =1なので補正代替値X modG(x)=F81FF949hがビット誤り検出値保持部217にロードされ、これがバイト誤り検出値E P=32537/Q=2051として出力され、積分されている過去のバイト誤り検出値とXORされる。 符号列D0は、その他のビットは全て0であるので、ここでは、E(x)=E +E Q=2051 (+はXORを示す。)、すなわち、X 16415のmodG(x)とX のmodG(x)の和=(X 16415 +X )modG(x)(+はXORを示す。)が出力されることとなる。 この値は、D(x)をシフト・レジスタ30にて除算した余り=誤り検出値E(x)となっている。

    このように、本実施の形態においては、誤り検出値をシフト・レジスタ30に符号化順序で入力しなくても求めることができる。 したがって、ディスクに記録されたデータの読み出し順序にかかわらず誤り検出値を算出することができる。 従来は、シフト・レジスタに符号化順序で入力して得た誤り検出符号を付加したデータを記録し、これを読み出して上記シフト・レジスタと同一の演算器に入力して誤り検出値を算出する方法としていたため、記録順序(読み出し順序)が符号化順序と異なる場合には、記録ブロック単位で読み出したデータを一旦符号化順序に並べ替え、その後シフト・レジスタにデータに入力して誤り符号を生成及び誤り検出値の算出を行なっていた。 しかし、このような方法であると、各データの並び順を変更するためバッファに記録ブロックをそのまま格納する必要があり、再生データの処理時におけるバッファの占有率が高くなってしまっていた。 これに対し、本実施の形態の如く、シフト・レジスタに符号化順序に入力することなく、テーブルを参照することで、読み出し順序で誤り検出値を算出するようにしたので、誤り検出値の算出時には記録ブロック毎保持するバッファを不要とすることができる。

    また、データの配置の規則性に基づき、繰り返し使用される代替値のみを保持するようにし、テーブルに記憶する代替値を更新して使用することで、代替値の数を省略することができ、テーブルを小さくすることができる。

    7. 記録装置
    また、本実施の形態においては、再生装置における誤り検出回路について説明したが、上述したごとく、記録装置において誤り検出符号を付加する際も同様に構成することができ、シフト・レジスタ200を使用しなくても、使用した場合と同一の演算を行なうことができる。 この場合においても、ユーザ・データの誤り検出符号を、符号化順序番号の順ではなく、記録バイト順序番号の順に算出することができ、従来のように、記録ブロック毎バッファに一旦格納して、符号化バイト順序番号の順に並び変える必要がない。

    図18は記録装置を示すブロック図である。 記録装置においては、ホストから渡されたユーザ・データからEDC付加回路318において誤り検出符号を生成する。 そして、ユーザ・データにEDC符号を付加した符号列をスクランブル回路319にてスクランブルする。

    スクランブルされたスクランブル済データは、誤り訂正符号化回路320にてメイン・データが誤り訂正符号化されメインメモリ315に格納される。 また、入出力部321からの補助データ(BIS)の誤り訂正符号化が行なわれる。 スクランブル回路319によりスクランブルされたデータは、メインメモリ315に格納されている誤り訂正符号と結合部314にて結合されてローテンション311へ供給されローレーションされる。 また、補助データはBISメモリ316を介してインターリーブ313にてインターリーブされる。 統合部311は、ローテーションされたメイン・データとインターリーブされた補助データとを統合し、ECCクラスタとして出力する。 このECCクラスタは変調後、ディスクに書き込まれる。

    ここで、本実施の形態におけるEDC付加回路318には、ホスト326からのユーザ・データが、入力部322を介して記録バイト順序番号Qの順で入力される。 このEDC付加回路318は、ユーザ・データを符号化バイト順序番号Qで上述のシフト・レジスタ200に入力することで生成した誤り検出符号EDC(x)を当該ユーザ・データに付加することで符号列D(x)を生成する。

    このEDC付加回路318は、上述の誤り検出回路と同様に構成することができる。 すなわち、少なくとも特定固有代替値を保持するテーブルと、この特定固有代替値から固有代替値を生成するシフト・レジスタとを有し、バイト単位の誤り検出符号を算出するビット処理演算部に固有代替値を出力する。 更に、これらの値の排他的論理和を求めて誤り訂正符号を出力するバイト処理演算部を有する。 また、代替値も上述と同様に、用意することができる。 すなわち、代替値はユーザ・データの各ビットデータの符号化ビット順序番号qのそれぞれに対応する値であって、代替符号列を図11に示すシフト・レジスタに入力することで得ることができる。 ここで、符号列は、2048バイトのユーザ・データに、全て「0」の4バイトのデータを付加して2052バイトとしたデータとすることで、上述と全く同じ方法により誤り検出符号を付加したデータを得ることができる。 すなわち、符号列を上述と同様に2052バイト、16416ビットとし、符号列の各ビットデータに符号化ビット順序番号qを対応づけることができ、代替符号列は、その符号化ビット順序番号qに対応した所定のビットデータのみ「1」、その他のビットデータが全て「0」とした符号列とすることができる。

    このEDC付加回路318から出力される符号列は、記録バイト順序番号Pの順でスクランブル回路319へ入力される。 スクランブル回路319は、符号化バイト順序番号Qに対応したスクランブル値S からデ・スクランブルされるデータであって、符号化バイト順序番号Qが対応づけられるスクランブル済データSD を、EDC(x)が付加された符号列から生成する。

    スクランブル済データSD は、上述のデ・スクランブル済データと同様、入力バイトデータD と、入力バイトデータD の符号化バイト順序番号Qに対応したスクランブル値S とから算出される。 スクランブル回路319においても、記録バイト順序番号Pで入力されるバイトデータに対する符号化バイト順序番号Qに応じたスクランブル値S を生成するスクランブル値生成部を有しており、生成されたスクランブル値S と、記録バイト順序番号Pで入力されるバイトデータD とからスクランブル済データDS を生成する点は上述のデ・スクランブル回路と同様である。 こうしてスクランブル回路319から記録バイト順序番号Pの順でスクランブル済データが誤り訂正符号化回路320へ入力される。

    また、記録再生装置とした場合は、誤り符号付加回路及び誤り検出回路、スクランブル回路及びデ・スクランブル回路における同一の構成部分の演算器等を共有することができる。 すなわち、データを記録する場合であっても、データを読み出す場合であっても、スクランブル/デ・スクランブル処理、及び誤り符号付加/誤り検出処理の際にデータを並び変える必要がないのでメモリ324の使用を不要とすることができる。

    なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。 例えば、各処理と論理構成との関係は上記例に限定されるものではない。 設計者は、効率的な機能及び回路構成によって、各回路及びディスク装置を設計することができる。

    本発明の実施の形態にかかる再生装置の信号処理回路の一部を示す概略を示すブロック図である。

    ブルーレイディスクにおける記録ブロックのバイト単位のデータの並び順を説明する図である。

    2つの符号列(D0,D1)を拡大して示す図である。

    バイトデータの符号化方向及び記録方向におけるビットの並び順を説明する模式図である。

    スクランブル・データS

    を生成するスクランブラとしてのフト・レジスタを示す図である。

    本発明の実施の形態にかかる再生装置におけるデ・スクランブル回路を示すブロック図であり、

    図6に示すデ・スクランブル回路の詳細を示す図である。

    上記デ・スクランブル回路における108回SFR41を示す回路図である。

    上記デ・スクランブル回路における216回SFR42を示す回路図である。

    本発明の実施の形態にかかる再生装置におけるデ・スクランブル方法を示すフローチャートである。

    誤り検出符号及び誤り検出をする際の演算器を示す図である。

    ブルーレイディスクにおける記録ブロックのビット単位のデータの並び順を説明する図である。

    2つの符号列(D0,D1)を拡大して示す図である。

    本発明の実施の形態にかかる誤り検出値算出方法を説明する図である。

    本発明の実施の形態にかかる再生装置における誤り検出回路の具体的な構成を示すブロック図である。

    上記誤り検出回路における除算器205を示す図である。

    本発明の実施の形態にかかる再生装置における誤り検出方法を示すフローチャートである。

    本発明の実施の形態にかかる記録装置の信号処理回路の一部を示す概略を示すブロック図である。

    符号の説明

    12 メインシンドローム生成部、12 ローテーション、
    13 デ・インターリーブ回路、14 メインシンドローム生成部、
    15 メインメモリ、16 BISメモリ、17 BISシンドローム生成部、
    18 デ・スクランブル回路、19,201 誤り検出回路、
    20 誤り訂正回路、21 入出力部、22 出力部、
    23 バス、24 メモリ、25 ホストインターフェース回路、
    30,200 シフト・レジスタ、
    40 スクランブル値生成部、44 セクタ・スクランブル初期値記憶部、
    45 スクランブル初期値記憶部、46 スクランブル初期値記憶部、
    47,48,49,203,216 切り替え回路、
    49 スクランブル初期値記憶部、50 制御回路、
    51,202 カウンタ、52 制御信号生成部、
    100 記録ブロック、113 検出中間値保持部、
    207 特定固有代替値テーブル、204 更新初期値テーブル、
    204 固有代替値テーブル、205,215 除算器、
    206 更新用固有代替値テーブル、207 特定固定代替値テーブル、
    208 補正代替値出力部、210 ビット処理演算部、
    211 P/S回路、212 切り替え回路、
    213 誤り検出値中間値保持部、217 ビット誤り検出値保持部、
    220 バイト処理演算部、222 バイト誤り検出値保持部、
    223 リセット回路、318 誤り符号付加回路、
    319 スクランブル回路、320 訂正符号化回路、
    modG 補正代替値、C P,i検出中間値、F(x) 記録ブロック、
    D(x) 符号列、d(x) 代替符号列、E P,iビット誤り検出値、
    バイト誤り検出値、E(x) 誤り検出値、
    M 行カウント値、N 列カウント値、
    P 記録バイト順序番号、p 記録ビット順序番号、
    Q 符号化バイト順序番号、q 符号化ビット順序番号

    QQ群二维码
    意见反馈