(57)【特許請求の範囲】
【請求項１】
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、前記データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、前記パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、前記クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、前記各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、前記スクランブルデータに基づいてＥＤＣシンドロームを生成するＥＤＣシンドローム生成回路と、
前記ＥＤＣシンドローム生成回路により生成されるＥＤＣシンドロームの中間結果を前記データフレーム毎に格納するＥＤＣメモリ部と、
前記パリティ演算結果に基づいて、前記スクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記ＥＤＣシンドローム生成回路は、
前記内蔵メモリ部からバイトデータとして入力される前記スクランブルデータと、選択回路から入力されるシフト演算値との排他的論理和を取って、ＥＤＣ演算値を生成する第１排他的論理和回路と、
前記第１排他的論理和から入力されるＥＤＣ演算値に対して、所定の生成多項式に従って１バイト分シフトさせる重み付けをしてシフト演算値を生成し、前記シフト演算値を前記ＥＤＣメモリ部に格納する第１重み付け回路と、
前記第１排他的論理和から入力されるＥＤＣ演算値に対して、
｛（前記データブロックの列方向における全バイト数）＋１−（各読み出しブロックの列方向におけるバイト数）｝
バイト分、前記生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第２重み付け回路と、
前記第１排他的論理和回路から入力されるＥＤＣ演算値に対して、前記生成多項式に従って１０８バイト分シフトさせる重み付けをしてシフト演算値を生成し、前記シフト演算値を前記ＥＤＣメモリ部に格納する第３重み付け回路と、
前記第２重み付け回路からのシフト演算値と、前記ＥＤＣメモリ部からのＥＤＣシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第２排他的論理和回路と、を備え、
前記選択回路は、前記第１排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第１重み付け回路、前記第２重み付け回路及び前記第２排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第１排他的論理和回路に出力し、
前記データブロックにおいて最初に処理されるデータフレームと前記データフレームから１つおきに処理されるデータフレームとを偶数データフレームとし、前記偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記ＥＤＣメモリ部には、
前記各読み出しブロックの前記各データフレームにおける最終行最終列のバイトデータが前記第１排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第１重み付け回路を通じて前記ＥＤＣシンドロームの中間結果として格納され、
前記ＥＤＣシンドローム生成回路に最後に入力される最終読み出しブロックの前記各偶数データフレームにおける最終行最終列のバイトデータが前記第１排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第３重み付け回路を通じて前記ＥＤＣシンドロームとして格納され、
前記最終読み出しブロックの前記各奇数データフレームにおける最終行最終列のバイトデータが前記第１排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記ＥＤＣシンドロームとして格納されることを特徴とする誤り訂正装置。
【請求項２】
前記ＥＤＣシンドローム生成回路から外部メモリに格納されたＥＤＣシンドロームが格納される補正メモリ部と、
前記誤り訂正回路により算出される誤り位置及び誤り数値に基づいて、前記補正メモリ部に格納されたＥＤＣシンドロームを補正するとともに、前記クラスタのＢＩＳクラスタ内のスクランブル値の初期値から算出されるスクランブル値に基づいて、前記ＥＤＣシンドロームを補正するＥＤＣ補正回路を備えたことを特徴とする請求項１に記載の誤り訂正装置。
【請求項３】
前記ＥＤＣシンドローム生成回路は、前記各読み出しブロックの中で、前記データブロックにおけるデータ配置と同様の順序にて前記各バイトデータを読み出すことを特徴とする請求項１又は２に記載の誤り訂正装置。
【請求項４】
前記ＥＤＣシンドローム生成回路は、
前記第１排他的論理和回路から入力されるＥＤＣ演算値に対して、前記生成多項式に従って２１１バイト分、逆シフトさせる重み付けをしてシフト演算値を生成し、前記シフト演算値を前記ＥＤＣメモリ部に格納する第４重み付け回路を備えたことを特徴とする請求項１〜請求項３のいずれか１項に記載の誤り訂正装置。
【請求項５】
前記ＥＤＣシンドローム生成回路は、
前記各読み出しブロックの前記各データフレームにおける各列の最終行のバイトデータが前記第１排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第２重み付け回路を通じてシフト演算値として格納される作業メモリを備え、
前記作業メモリは、前記格納されたシフト演算値を前記第２排他的論理和回路及び前記選択回路に出力し、
前記選択回路は、前記第１排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第１重み付け回路、前記作業メモリ及び前記第２排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第１排他的論理和回路に出力することを特徴とする請求項１〜請求項４のいずれか１項に記載の誤り訂正装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り訂正装置に関するものである。
近年、光ディスク等の記録媒体における記憶容量の大容量化に伴い、そのデータ読み取り時間の高速化も要求されている。しかし、光ディスクの製造時の欠陥や光ディスクの表面に付着した汚れ等によって、その光ディスクから高速に正しくデータを読み取ることが困難である。そこで、このような光ディスクの記録データは、リード・ソロモン符号を用いたエラー訂正符号がデータと併せて記録されており、そのエラー訂正符号に基づいてエラー訂正処理を行うことにより正しいデータを復元するようにしている。このエラー訂正処理の処理時間が長いため、データ読み取り時間の高速化を実現するためには、上記エラー訂正処理の高速化が要求される。
【背景技術】
【０００２】
近年、高画質のビデオデータと高音質のオーディオデータを長時間記録することができる新しい高密度光ディスク、例えばブルーレイディスク（ＢＤ：Blu-ray Disc）の開発が進んでいる（例えば、特許文献１参照）。このＢＤに記録されたデータには、そのデータの読み出し時等に発生する誤りを検出するための誤り検出符号（EDC:Error Detecting Code）と、読み出し時等に発生する誤りを訂正するための誤り訂正符号（ECC:Error Correcting Code）とが予め付加されている。
【０００３】
ここで、ＢＤに記憶されるデータのフォーマットについて詳述すると、図３４に示すように、ユーザデータＵＤは、３２個のデータフレームＤＦ０〜ＤＦ３１（総称してデータフレームＤＦという）から構成される。１つのデータフレームＤＦは、２０４８バイト（２ｋバイト）のＵｓｅｒ  Ｄａｔａを含み、１データフレームＤＦの最後には下記式により算出された４バイトの誤り検出符号ＥＤＣが付加されている。
【０００４】
【数１】
0005365683.tif 000002
ＢＤに記録される際には、各データフレームＤＦ毎にスクランブル処理が施されて、図３６（ａ）に示すように、各データフレームＤＦが１列に配列され、２０５２行×３２列のデータｄ（ｕ，ｖ）からなるスクランブルデータフレームＳＤＦに変換される。なお、データｄ（ｕ，ｖ）のｕはスクランブルデータフレームＳＤＦにおける行番号を示し、ｖはスクランブルデータフレームＳＤＦにおける列番号を示す。
【０００５】
ここで、スクランブルデータは周知のように、スクランブル処理前の元データの各バイトとスクランブル値ＳＣの下位８ビットとの排他的論理和を取ることによって生成されている。このようなスクランブル値ＳＣの生成には、図３５に示すスクランブル値生成回路１００が使用される。図３５に示すように、スクランブル値生成回路１００は、所定の生成多項式Φ（ｘ）（図３５の例では、Φ（ｘ）＝ｘ１６＋ｘ１５＋ｘ１３＋ｘ４＋１）に従って構成されており、ビットｂ１５〜ｂ０からなる帰還型シフトレジスタ１０１と、ＥＯＲ回路１０２，１０３，１０４とを備える。
【０００６】
ＥＯＲ回路１０２は、ビットｂ１５とビットｂ１４との排他的論理和を取り、その演算結果をＥＯＲ回路１０３に出力する。ＥＯＲ回路１０３は、ＥＯＲ回路１０２からの演算結果とビットｂ１２との排他的論理和を取り、その演算結果をＥＯＲ回路１０４に出力する。ＥＯＲ回路１０４は、ＥＯＲ回路１０３からの演算結果とビットｂ３との排他的論理和を取り、その演算結果をビットｂ０に出力する。
【０００７】
シフトレジスタ１０１は、予め設定されたスクランブル値の初期値Ｓ０を取り込み、その初期値Ｓ０の下位８ビット（ビットｂ７〜ｂ０）を、元データが入力されるＥＯＲ回路に出力する。そして、そのＥＯＲ回路において、スクランブル値ＳＣ（初期値Ｓ０）の下位８ビットと各データフレームの１バイト目のデータＤ０との排他的論理和（以下、本明細書における数式において、排他的論理和を＾で表す）を取ることで、データＤ０にスクランブル処理が施される。すなわち、データＤ０にスクランブル処理を施した後のスクランブルデータｓＤ０は、下記式に従って生成される。
【０００８】
【数２】
0005365683.tif 000003
なお、１つのユーザデータＵＤ内では、全てのデータフレームＤＦ０〜ＤＦ３１について同一の初期値Ｓ０が使用される。
【０００９】
次に、シフトレジスタ１０１は、クロック信号ＣＬＫのパルスが入力される毎にビットｂ１４〜ｂ０の値をそれぞれビットｂ１５〜ｂ１にシフトさせるとともに、ＥＯＲ回路１０４の出力をビットｂ０として取り込む。そして、スクランブル値生成回路１００はクロック信号ＣＬＫの８パルス後に、すなわち８ビット（１バイト）分シフトさせた後に、そのときのビットｂ７〜ｂ０を上記元データが入力されるＥＯＲ回路に出力する。ここで、このときのスクランブル値ＳＣをＳ０・γ１と表す。このγは、上記生成多項式Φ（ｘ）で与えられる１バイトシフト演算子であり、上記Ｓ０・γ１は、初期値Ｓ０から生成多項式Φ（ｘ）に従って１バイト分シフトさせたときに得られるスクランブル値ＳＣであることを示している。そして、上記スクランブル値ＳＣ（＝Ｓ０・γ１）の下位８ビットと各データフレームＤＦの２バイト目のデータＤ１との排他的論理和を取ることで、データＤ１にスクランブル処理が施される。すなわち、データＤ１に対するスクランブルデータｓＤ１は、下記式に従って生成される。
【００１０】
【数３】
0005365683.tif 000004
以後同様に、スクランブルデータｓＤ２〜ｓＤ２０５１が下記式に従って生成される。
【００１１】
【数４】
0005365683.tif 000005
なお、Ｓ０・γ３は、初期値Ｓ０から生成多項式Φ（ｘ）に従って３バイト分シフトさせたときに得られるスクランブル値ＳＣであることを示すとともに、Ｓ０・γ２０５１は、初期値Ｓ０から生成多項式Φ（ｘ）に従って２０５１バイト分シフトさせたときに得られるスクランブル値ＳＣであることを示す。
【００１２】
そして、このように生成された各データフレームＤＦのスクランブルデータｓＤ０〜ｓＤ２０５１が列方向に上から順に配列されると、上記スクランブルデータフレームＳＤＦが生成される。
【００１３】
次に、図３６に示すように、スクランブルデータフレームＳＤＦ（図３６（ａ）参照）は、２１６行×３０４列のデータブロックＤＢ（図３６（ｂ）参照）に変換される。詳しくは、スクランブルデータフレームＳＤＦの１つのデータフレームＤＦの列方向の各データｄ（ｕ，ｖ）が、図３６（ｂ）に示す実線の矢印の順にデータブロックＤＢに格納される。すなわち、データフレームＤＦ０のデータｄ（０，０）〜データｄ（２１５，０）は、データブロックＤＢの１列目に上から順に格納される。また、データフレームＤＦ０のデータｄ（２１６，０）〜ｄ（４３１，０）は、データブロックＤＢの２列目に上から順に格納される。そして、データフレームＤＦ０のデータｄ（１９４４，０）〜データｄ（２０５１，０）は、データブロックＤＢの１０列目の１行目〜１０８行目に上から順に格納される。次に、データフレームＤＦ１のデータｄ（０，１）〜データ（１０７，１）は、データブロックＤＢのデータフレームＤＦ０の最後のデータｄ（２０５１，０）が格納された次の位置、すなわち１０列目の１０９行目〜２１６行目に上から順に格納される。また、データフレームＤＦ１のデータｄ（１０８，１）〜ｄ（３２３，１）は、データブロックＤＢの１１列目に上から順に格納される。そして、データフレームＤＦ１のデータｄ（１８３６，１）〜データｄ（２０５１，１）は、データブロックＤＢの１９列目に上から順に格納される。データフレームＤＦ２〜ＤＦ３１についても、データフレームＤＦ０，ＤＦ１と同様にデータブロックＤＢに格納される。このようにデータブロックＤＢに各データフレームＤＦのデータｄ（ｕ，ｖ）が格納されると、偶数データフレーム（例えば、データフレームＤＦ０．ＤＦ２，ＤＦ４）と奇数データフレーム（例えば、データフレームＤＦ１，ＤＦ３，ＤＦ５）とを合わせると、２１６行×１９列の２次元配列されたブロックとなる。従って、１つのデータブロックＤＢ内のデータフレーム配列は、２データフレームＤＦ毎に繰り返し配列となっている。
【００１４】
次に、図３７に示すように、この２１６行×３０４列のデータｄ（ｕ，ｖ）からなるデータブロックＤＢに、３２行×３０４列のパリティビットｐ（ｉ，ｊ）からなるＥＣＣ部ＬＤＣｐ（ＥＣＣパリティ）が付加される。すなわち、データブロックＤＢにおける各列に、３２バイトのパリティビットｐ（ｉ，ｊ）がそれぞれ付加される。これにより、２１６行×３０４列のデータ成分ｅ（ｉ，ｊ）及び３２行×３０４列のパリティビットｐ（ｉ，ｊ）からなるパリティ付加ブロックＰＢ（ＬＤＣ（Long-distance code）ブロック）が形成される。なお、データ成分ｅ（ｉ，ｊ）及びパリティビットｐ（ｉ，ｊ）のｉはパリティ付加ブロックＰＢにおける行番号を示し、ｊはパリティ付加ブロックＰＢにおける列番号を示す。また、パリティビットｐは、下記式により算出されて付加されたものである。
【００１５】
【数５】
0005365683.tif 000006
上記ＥＣＣ部ＬＤＣｐは、パリティ付加ブロックＰＢにおける列方向のデータに対する誤り訂正符号であり、パリティ付加ブロックＰＢの列毎の誤り訂正を行うためのＬＤＣシンドローム（パリティ演算結果）を生成するために付加されている。
【００１６】
次に、２４８行×３０４列のデータからなるパリティ付加ブロックＰＢが４９６（＝２４８×２）行×１５２（＝３０４／２）列のＬＤＣクラスタＬＤＣｃ（図３９参照）に変換される。
【００１７】
まず、データ成分ｅ（ｉ，ｊ）及びパリティビットｐ（ｉ，ｊ）が第１インターリーブ処理されて、データ成分ｅ（ｉ，ｊ）及びパリティビットｐ（ｉ，ｊ）が図３８における位置ｆ（ｍ，ｎ）に所定の規則に従ってインターリーブされる。ここで、位置ｆ（ｍ，ｎ）のｍはＬＤＣクラスタＬＤＣｃにおける行番号を示し、ｎはＬＤＣクラスタＬＤＣｃにおける列番号を示す。
【００１８】
第１インターリーブ処理について図３７及び図３８に従って詳述すると、ｊ＝０，２，４，６，８，・・・，３０２（偶数列）のデータ成分ｅ（ｉ，ｊ）及びパリティビットｐ（ｉ，ｊ）は、位置ｆ（ｍ（＝２ｉ），ｎ（＝ｊ／２））にインターリーブされる。また、ｊ＝１，３，５，７，９，・・・，３０３（奇数列）のデータ成分ｅ（ｉ，ｊ）及びパリティビットｐ（ｉ，ｊ）は、位置ｆ（ｍ（＝２ｉ＋１），ｎ（＝（ｊ−１）／２））にインターリーブされる。例えば、偶数列のデータ成分ｅ（１，２）は、ｍ＝２×１＝２、ｎ＝２／２＝１であるため、位置ｆ（２，１）にインターリーブされる。また、奇数列のデータ成分ｅ（１，３）は、ｍ＝２×１＋１＝３、ｎ＝（３−１）／２＝１であるため、位置ｆ（３，１）にインターリーブされる。これにより、図３８に示す４９６行×１５２列のデータからなる第１インターリーブ処理済のブロックに変換される。
【００１９】
次に、図３８に示す第１インターリーブ処理済の各データ（データ成分ｅ及びパリティビットｐ）が第２インターリーブ処理されて、図３９に示すＬＤＣクラスタＬＤＣｃが形成される。この第２インターリーブ処理について詳述すると、位置ｆ（ｍ，ｎ）に配置されたデータ成分ｅ（ｉ，ｊ）及びパリティビットｐ（ｉ，ｊ）は、下記式のシフト量ＳＩバイト分だけ同一行内の左方向にシフトされる。
【００２０】
【数６】
0005365683.tif 000007
すなわち、位置ｆ（ｍ，ｎ（＝ｎ１））に配置されたデータ成分ｅ（ｉ，ｊ）及びパリティビットｐ（ｉ，ｊ）は、位置ｆ（ｍ，ｎ（ｎ２＝ｎ１−ＳＩ））にインターリーブされる。但し、このシフト方向は巡回的であるため、ｎ２が負の値になった場合には、ｎ２＝−１がｎ＝１５１に対応し、ｎ２＝−２がｎ＝１５０に対応するように、負の値であるｎ２の絶対値が大きくなるに連れて、実際のシフト先の列番号ｎは１５１から順に小さくなっていく。
【００２１】
例えば、ｍ＝２，３の位置ｆに配置された各データ成分ｅは、ＳＩ＝ｍｏｄ（１×３，１５２）＝３バイト分だけ同一行内の左方向にシフトされる。従って、図３８において位置ｆ（２，０）及び位置ｆ（３，０）にそれぞれ配置されていたデータ成分ｅ（１，０）及びデータ成分ｅ（１，１）は、図３９に示すように、ｎ２＝０−３＝−３に対応する列番号ｎ＝１４９の位置ｆ（２，１４９）及び位置ｆ（３，１４９）にそれぞれインターリーブされる。同様に、ｍ＝２，３の位置ｆに配置された各データ成分ｅは、全て同一行内において左方向に３バイト分だけシフトされた位置ｆにインターリーブされる。
【００２２】
このようにパリティ付加ブロックＰＢに対して、第１インターリーブ処理及び第２インターリーブ処理が完了すると、図３９に示すＬＤＣクラスタＬＤＣｃが形成される。
次に、図４０に示すように、アドレス情報やユーザコントロールデータ等を含むデータブロック（７２０バイト）とパリティ（７６８バイト）とからなる４９６行×３列のＢＩＳ（Burst Indicator Subcode）クラスタＢＩＳｃが、上記ＬＤＣクラスタＬＤＣｃにインターリーブされる。詳しくは、図４０（ｂ）に示すように、ＢＩＳクラスタＢＩＳｃは１列毎に分割され、ＬＤＣクラスタＬＤＣｃの３８列毎に、分割後のＢＩＳクラスタＢＩＳｃ（図４０（ａ）のＢ１〜Ｂ３）が１列ずつ挿入される。
【００２３】
そして、ＬＤＣクラスタＬＤＣｃとＢＩＳクラスタＢＩＳｃとからなるＥＣＣクラスタＥＣＣｃ（図４０（ｂ）参照）が１７ＰＰ変調方式等により変調されて、ＢＤ上に書き込まれる。このようなフォーマットにより、データ再生時の誤り訂正処理において、高い誤り検出・訂正能力が確保される。
【００２４】
次に、このようにＢＤに書き込まれたデータを読み出す動作について説明する。図４１に示すように、記録媒体としてのＢＤに対してデータの入出力を行うコントローラ１１０では、まず、復調回路１１１がＢＤからデータを読み出し、該データを復調したデータ、すなわちＥＣＣクラスタＥＣＣｃをバッファメモリ１２０に格納する。次に、ＬＤＣシンドローム生成回路１１２は、バッファメモリ１２０に格納されたＥＣＣクラスタＥＣＣｃにおけるＬＤＣクラスタＬＤＣｃを、上記第１及び第２インターリーブ処理により並び替えられる前の配置順になるように各データを並び替えながら読み出す（第１及び第２デインターリーブ処理を施しながら各データを読み出す）。すなわち、ＬＤＣシンドローム生成回路１１２には、第１及び第２インターリーブ処理が施される前のパリティ付加ブロックＰＢ（図３７参照）が入力される。そして、ＬＤＣシンドローム生成回路１１２は、入力されるパリティ付加ブロックＰＢに基づいてＬＤＣシンドロームを生成し、そのＬＤＣシンドロームを誤り訂正回路１１４に出力する。
【００２５】
また、ＢＩＳシンドローム生成回路１１３は、バッファメモリ１２０に格納されたＥＣＣクラスタＥＣＣｃにおけるＢＩＳクラスタＢＩＳｃを読み出す。そして、ＢＩＳシンドローム生成回路１１３は、読み出したＢＩＳクラスタＢＩＳｃに基づいてＢＩＳシンドロームを生成し、そのＢＩＳシンドロームを誤り訂正回路１１４に出力する。誤り訂正回路１１４は、入力されるＬＤＣシンドローム及びＢＩＳシンドロームに基づいて、バッファメモリ１２０に格納されたＥＣＣクラスタＥＣＣｃ内のユーザデータＵＤ等の誤りを訂正する。
【００２６】
次に、デスクランブル回路１１５は、バッファメモリ１２０から誤り訂正処理済のＬＤＣクラスタＬＤＣｃ内のユーザデータＵＤに相当するデータ成分ｅを、第１及び第２デインターリーブ処理を施しながら読み出す。すなわち、デスクランブル回路１１５には、誤り訂正処理済のデータブロックＤＢ（図３６（ｂ）参照）が入力される。そして、デスクランブル回路１１５は、データフレームＤＦ毎にスクランブル処理時に使用されたスクランブル値ＳＣを生成し、そのスクランブル値ＳＣの下位８ビットと読み出されたデータブロックＤＢの各バイトとの排他的論理和を順番に取って、デスクランブル処理を実行する。従って、デスクランブルデータｄＤ０〜ｄＤ２０５１は、下記式により生成される。
【００２７】
【数７】
0005365683.tif 000008
次に、ＥＤＣチェック回路１１６は、デスクランブル回路１１５から入力されるデスクランブル処理済のデータブロックＤＢ（ユーザデータＵＤ等）をホストコンピュータ等の外部機器に転送するとともに、上記デスクランブル処理済のデータブロックＤＢに基づいてＥＤＣチェックを行う。ＥＤＣチェック回路１１６におけるＥＤＣチェックは、まずデータフレームＤＦ（２０５２バイト）毎にＥＤＣシンドロームＥＤＣＳを生成する。詳しくは、図４２に示すように、デスクランブル回路１１５からＥＤＣチェック回路１１６には、ｄＤ０→ｄＤ１→ｄＤ２→・・・→ｄＤ２０４９→ｄＤ２０５０→ｄＤ２０５１の順にデスクランブルデータが入力される。このデスクランブルデータｄＤｕ（２０５２バイト）の次数重みを表す多項式表現（入力多項式）は、
【００２８】
【数８】
0005365683.tif 000009
となる。ここで、ＥＤＣ演算は入力多項式の各次数をベクターβで重み付けする演算であるため、ＥＤＣシンドロームＥＤＣＳは下記式により算出される。
【００２９】
【数９】
0005365683.tif 000010
すなわち、このＥＤＣシンドロームＥＤＣＳは、１バイトのデータ（例えば、デスクランブルデータｄＤ０，ｄＤ２０５０等）を演算する度に、各データに１次のベクターβ１の重み付けを行うことで得ることができる。従って、入力順序が早いデータほど重み付けされるベクターβの次数が高次になるとともに、入力順序が遅いデータほど重み付けされるベクターβの次数が低次になる。例えば、入力順序の最も早いデータｄＤ０に対応するベクターβの次数は、最も高次な２０５１次（β２０５１）であり、入力順序の最も遅いデータｄＤ２０５１に対応するベクターβの次数は、最も低次な０次（β０＝１）である。なお、１バイトのデータＸｎに対してベクターβ１で重み付けするとは、重み付けされるデータＸｎを、所定の生成多項式Ｇ（ｘ）（本例では、Ｇ（ｘ）＝ｘ３２＋ｘ３１＋ｘ４＋１）に従って１バイト分シフトさせることである。そして、ＥＤＣチェック回路１１６では、算出されたＥＤＣシンドロームが全て「０」であったときに、誤り訂正が正常に終了したことを確認する。この確認後、ＥＤＣチェックが終了される。
【００３０】
ところで、近年では、ホストコンピュータの処理速度の高速化等に伴い、記憶装置に対するデータの読み出し／書き込み速度の高速化が要求されている。しかしながら、バッファメモリ１２０のアクセス能力の限界により、読み出し速度の高速化が阻害されている。すなわち、バッファメモリ１２０に対して以下の（１）〜（５）のアクセスが行われるため、アクセス速度を高速化することが難しく、誤り訂正処理を高速化することができない。
（１）復調回路１１１からのＥＣＣクラスタＥＣＣｃの入力。
（２）ＬＤＣシンドローム生成回路１１２によるＬＤＣクラスタＬＤＣｃの読み出し。
（３）ＢＩＳシンドローム生成回路１１３によるＢＩＳクラスタＢＩＳｃの読み出し。
（４）誤り訂正回路の誤り訂正処理。
（５）デスクランブル回路１１５による誤り訂正処理済のＬＤＣクラスタＬＤＣｃの読み出し。
【００３１】
さらに、上記構成におけるＬＤＣシンドローム生成回路１１２（デスクランブル回路１１５）は、バッファメモリ１２０からＬＤＣクラスタＬＤＣｃ（ＬＤＣクラスタＬＤＣｃ内のデータ成分ｅ）を、第１及び第２デインターリーブ処理を施しながらパリティ付加ブロックＰＢ（データブロックＤＢ）として読み出す必要がある。ここで、一般的に外付けのバッファメモリ１２０は安価で処理速度の遅いＳＤＲＡＭから構成されているため、ＬＤＣクラスタＬＤＣｃが並べ替えながら読み出されると、パリティ付加ブロックＰＢの各データが細切れに読み出されることになる。このようにバッファメモリ１２０に対してデータアクセスサイズの小さい効率の悪いアクセスとなり、ひいてはバッファメモリ１２０のアクセス帯域を減らすという問題がある。
【００３２】
そこで、バッファメモリ１２０へのアクセス量を減らすために、図４３に示すように、一旦内蔵メモリ１３１に１つのＥＣＣクラスタＥＣＣｃを格納し、その内蔵メモリ１３１に対してＬＤＣシンドローム生成回路１１２及びＢＩＳシンドローム生成回路１１３が直接アクセスするようにしたコントローラ１３０が提案されている。これにより、ＬＤＣシンドローム生成回路１１２及びＢＩＳシンドローム生成回路１１３によるバッファメモリ１２０へのアクセス量がなくなるため、バッファメモリ１２０に対する全体のアクセス量を減らすことができ、誤り訂正処理の高速化を実現することができる。
【先行技術文献】
【特許文献】
【００３３】
【特許文献１】特開２００３−２４２７２０号公報。
【発明の概要】
【発明が解決しようとする課題】
【００３４】
ところが、上記誤り訂正回路１１４による誤り訂正処理を行うためには、ＥＣＣクラスタＥＣＣｃ単位でのデータが必要となる。そのため、図４３に示すコントローラ１３０では、内蔵メモリ１３１が１つのＥＣＣクラスタ分のデータを格納することのできる大容量のメモリとなる。そのため、１つのＥＣＣクラスタＥＣＣｃの容量に相当するバッファメモリを内蔵することになり、コントローラの回路規模が増大するという新たな問題が生じる。
【００３５】
本発明は上記問題点を解決するためになされたものであって、その目的は、内蔵メモリ容量の増大による回路規模の増大を抑制しつつも、外部メモリへのアクセス量を低減することのできる誤り訂正装置を提供することにある。
【課題を解決するための手段】
【００３６】
上記目的を達成するため、請求項１に記載の発明は、所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、前記データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、前記パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、前記クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、前記各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、前記スクランブルデータに基づいてＥＤＣシンドロームを生成するＥＤＣシンドローム生成回路と、前記ＥＤＣシンドローム生成回路により生成されるＥＤＣシンドロームの中間結果を前記データフレーム毎に格納するＥＤＣメモリ部と、前記パリティ演算結果に基づいて、前記スクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、前記ＥＤＣシンドローム生成回路は、前記内蔵メモリ部からバイトデータとして入力される前記スクランブルデータと、選択回路から入力されるシフト演算値との排他的論理和を取って、ＥＤＣ演算値を生成する第１排他的論理和回路と、前記第１排他的論理和から入力されるＥＤＣ演算値に対して、所定の生成多項式に従って１バイト分シフトさせる重み付けをしてシフト演算値を生成し、前記シフト演算値を前記ＥＤＣメモリ部に格納する第１重み付け回路と、前記第１排他的論理和から入力されるＥＤＣ演算値に対して、
｛（前記データブロックの列方向における全バイト数）＋１−（各読み出しブロックの列方向におけるバイト数）｝
バイト分、前記生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第２重み付け回路と、前記第１排他的論理和回路から入力されるＥＤＣ演算値に対して、前記生成多項式に従って１０８バイト分シフトさせる重み付けをしてシフト演算値を生成し、前記シフト演算値を前記ＥＤＣメモリ部に格納する第３重み付け回路と、前記第２重み付け回路からのシフト演算値と、前記ＥＤＣメモリ部からのＥＤＣシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第２排他的論理和回路と、を備え、前記選択回路は、前記第１排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第１重み付け回路、前記第２重み付け回路及び前記第２排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第１排他的論理和回路に出力し、前記データブロックにおいて最初に処理されるデータフレームと前記データフレームから１つおきに処理されるデータフレームとを偶数データフレームとし、前記偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、前記ＥＤＣメモリ部には、前記各読み出しブロックの前記各データフレームにおける最終行最終列のバイトデータが前記第１排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第１重み付け回路を通じて前記ＥＤＣシンドロームの中間結果として格納され、前記ＥＤＣシンドローム生成回路に最後に入力される最終読み出しブロックの前記各偶数データフレームにおける最終行最終列のバイトデータが前記第１排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第３重み付け回路を通じて前記ＥＤＣシンドロームとして格納され、前記最終読み出しブロックの前記各奇数データフレームにおける最終行最終列のバイトデータが前記第１排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記ＥＤＣシンドロームとして格納される。
【００３７】
上記構成によれば、ＥＤＣシンドローム生成回路及びパリティ演算結果生成回路は、内蔵メモリ部に対して独立してアクセスすることが可能なため、ＥＤＣシンドローム生成及びパリティ演算処理を並行して実行することができ、誤り訂正処理に要する時間を短縮することができる。また、ＥＤＣシンドローム生成回路に第１〜第３重み付け回路、第３排他的論理和回路及び第２選択回路を設けるようにしたため、ＥＤＣ付加時と異なる順序で入力されるバイトデータに対しても、ＥＤＣ付加時と同様のデータ処理順序でＥＤＣ演算処理した場合と同一のバイト数分の重み付けを行うことができる。
【発明の効果】
【００３８】
以上説明したように、本発明によれば、内蔵メモリ容量の増大による回路規模の増大を抑制しつつも、外部メモリへのアクセス量を低減することが可能な誤り訂正装置を提供することができる。
【図面の簡単な説明】
【００３９】
【図１】光ディスク制御装置を示すブロック図。
【図２】第１実施形態における光ディスクコントローラを示すブロック図。
【図３】内蔵メモリに格納される分割ＥＣＣブロックを示す説明図。
【図４】ＬＤＣシンドローム生成回路に読み出される読み出しブロックを示す説明図。
【図５】内蔵メモリ部を示すブロック図。
【図６】第１実施形態におけるデスクランブル回路を示すブロック図。
【図７】デスクランブル回路に読み出される読み出しブロックを示す説明図。
【図８】第１実施形態におけるＥＤＣシンドローム生成回路を示すブロック図。
【図９】外部バッファメモリを示す説明図。
【図１０】デスクランブル処理の動作を示すフローチャート。
【図１１】デスクランブル処理の動作を示すフローチャート。
【図１２】デスクランブル処理の動作を示すフローチャート。
【図１３】ＥＤＣシンドローム生成回路に入力される入力多項式を示す説明図。
【図１４】第１実施形態におけるＥＤＣ演算処理の動作を示すフローチャート。
【図１５】デスクランブル回路の１シフト演算器における入出力の論理式を示す説明図。
【図１６】デスクランブル回路の２０９シフト演算器における入出力の論理式を示す説明図。
【図１７】デスクランブル回路の１０８シフト演算器における入出力の論理式を示す説明図。
【図１８】ＥＤＣシンドローム生成回路の１シフト演算器における入出力の論理式を示す説明図。
【図１９】ＥＤＣシンドローム生成回路の２０９シフト演算器における入出力の論理式を示す説明図。
【図２０】ＥＤＣシンドローム生成回路の１０８シフト演算器における入出力の論理式を示す説明図。
【図２１】ＥＤＣシンドローム生成回路の−２１１シフト演算器における入出力の論理式を示す説明図。
【図２２】第２実施形態におけるデスクランブル回路を示すブロック図。
【図２３】第２実施形態におけるＥＤＣシンドローム生成回路を示すブロック図。
【図２４】（ａ）〜（ｄ）は、第２実施形態におけるデータ処理順序を示す説明図。
【図２５】第２実施形態における外部バッファメモリへのデータ格納方法を示す説明図。
【図２６】（ａ）、（ｂ）は、ＥＤＣシンドローム生成回路に入力される入力多項式を示す説明図。
【図２７】第３実施形態におけるＥＤＣシンドローム生成回路を示すブロック図。
【図２８】第３実施形態におけるＥＤＣ演算処理の動作を示すフローチャート。
【図２９】ＥＤＣシンドローム生成回路のβ−１シフト演算器における入出力の論理式を示す説明図。
【図３０】ＥＤＣシンドローム生成回路のβ−１６６４シフト演算器における入出力の論理式を示す説明図。
【図３１】第４実施形態における光ディスクコントローラを示すブロック図。
【図３２】第５実施形態における光ディスクコントローラを示すブロック図。
【図３３】別例における光ディスクコントローラを示すブロック図。
【図３４】ユーザデータを示す説明図。
【図３５】従来のスクランブル値生成回路を示すブロック図。
【図３６】（ａ）、（ｂ）は、データブロックを示す説明図。
【図３７】ＬＤＣブロックを示す説明図。
【図３８】第１インターリーブ処理を示す説明図。
【図３９】ＬＤＣクラスタを示す説明図。
【図４０】（ａ）、（ｂ）は、ＥＣＣクラスタを示す説明図。
【図４１】従来における光ディスクコントローラを示すブロック図。
【図４２】従来のデスクランブル処理を示す説明図。
【図４３】従来における光ディスクコントローラを示すブロック図。
【発明を実施するための形態】
【００４０】
（第１実施形態）
以下、本発明を具体化した第１実施形態を図１〜図２１に従って説明する。
図１に示すように、データ読み出し装置としての光ディスク制御装置１は、ＡＴＡＰＩ（AT attachment packet interface）等の所定のインターフェースを介してコンピュータ２に接続されている。また、光ディスク制御装置１は、インターフェースを介して光ディスク駆動装置３に接続されている。
【００４１】
光ディスク駆動装置３は、ブルーレイディスク（ＢＤ）４を所定の速度で回転駆動するとともに、ＢＤ４に記憶されたディスクデータを図示しない光ピックアップにより読み出す。そして、光ディスク駆動装置３は、ディスクデータを光ディスク制御装置１に出力する。
【００４２】
光ディスク制御装置１の入出力駆動回路５には、光ディスク駆動装置３から上記ディスクデータが入力され、そのディスクデータを誤り訂正装置としての光ディスクコントローラ（コントローラ）１０に出力する。
【００４３】
コントローラ１０は、光ディスク駆動装置３への命令送信及びステータス受領と、光ディスクであるＢＤ４からの読み出しフォーマット解読及び誤り訂正と、光ディスク駆動装置３と外部バッファメモリ６との間のデータ転送と、インターフェース回路６０と外部バッファメモリ６との間のデータ転送等の各処理を行う。すなわち、コントローラ１０は、入出力駆動回路５から入力されるディスクデータに対してデスクランブル処理を行ってデスクランブルデータを生成するとともに、ＥＤＣシンドローム、ＬＤＣシンドローム及びＢＩＳシンドロームといった各種シンドロームを生成する。そして、コントローラ１０は、これらのデスクランブルデータ及び各種シンドロームを外部バッファメモリ６に格納する。また、コントローラ１０は、外部バッファメモリ６に格納した各種シンドロームに基づいて、外部バッファメモリ６に格納されたデスクランブルデータに対して誤り訂正処理を行う。そして、コントローラ１０は、マイクロプロセッサ８の命令に基づいて、外部バッファメモリ６に格納した誤り訂正後のユーザデータＵＤを、インターフェース回路６０を介して上記コンピュータ２に転送する。
【００４４】
次に、図１に示した光ディスクコントローラ１０の内部構成について図２に従って説明する。
光ディスクコントローラ１０の復調回路１１には、ＢＤ４から読み出されたディスクデータが入出力駆動回路５を通じて順次入力される。復調回路１１は、入力されるディスクデータをデジタルデータに変換するとともに、そのデジタルデータに同期したクロック信号ＣＬＫを生成する。復調回路１１は、さらにデジタルデータを復調して、該復調済データ、すなわちＥＣＣクラスタＥＣＣｃ（図４０（ｂ）参照）を生成し、該ＥＣＣクラスタＥＣＣｃ及びクロック信号ＣＬＫを出力する。
【００４５】
復調回路１１からＥＣＣクラスタＥＣＣｃ（クラスタ）のデータが入力される内蔵メモリ部１２は、２つのバッファメモリＭ１，Ｍ２から構成されている。各バッファメモリＭ１，Ｍ２の各々は、所定バイト数（本実施形態では、２４８０バイト）のデータを格納可能なメモリ容量となっている。本実施形態では、ＥＣＣクラスタＥＣＣｃ（７６８８０バイト）が３１（＝７６８８０／２４８０）個に分割され、２４８０バイト毎に内蔵メモリ部１２の各バッファメモリＭ１，Ｍ２に格納される。すなわち、ＥＣＣクラスタＥＣＣｃ（図４０（ｂ）参照）が１６行毎に分割され、１６行×１５５列（＝２４８０バイト）のブロック単位（分割ＥＣＣクラスタＤＥＣＣ）で各バッファメモリＭ１，Ｍ２に格納される。図３に、復調回路１１から最初に内蔵メモリ部１２に格納される１６行×１５５列の分割ＥＣＣクラスタＤＥＣＣ（分割クラスタ）を示した。図３に示すように、ＥＣＣクラスタＥＣＣｃの各列における１行目から１６行目までの各データが復調回路１１から内蔵メモリ部１２に最初に格納される。
【００４６】
内蔵メモリ部１２は、同一時間において、バッファメモリＭ１及びバッファメモリＭ２のいずれか一方を、復調回路１１からのデータを保存するデータ保存用として使用し、他方を、後述するＬＤＣシンドローム生成回路１３等にアクセスされるアクセス用として使用する。すなわち、バッファメモリＭ１がデータ保存用として使用される場合にはバッファメモリＭ２がアクセス用として使用され、バッファメモリＭ２がデータ保存用として使用される場合にはバッファメモリＭ１がアクセス用として使用される。
【００４７】
図５に、上記内蔵メモリ部１２の回路構成例を示した。図５に示すように、復調回路１１から入力されるデータは、第１セレクタ１２ａに入力される。この第１セレクタ１２ａには、選択回路１２ｃからの選択信号が入力される。選択回路１２ｃは、復調回路１１から入力されるクロック信号ＣＬＫをカウントして、所定のタイミングで選択信号の信号レベルを切り替える。本実施形態では、選択回路１２ｃは、２４８０バイト分のクロックをカウントする度に、上記選択信号の信号レベルを切り替える。なお、この選択信号は、インバータを介して第２セレクタ１２ｂにも入力される。
【００４８】
第１セレクタ１２ａは、選択回路１２ｃからの選択信号の信号レベルに基づいて、復調回路１１からのデータをバッファメモリＭ１あるいはバッファメモリＭ２に出力する。また、第２セレクタ１２ｂは、インバータを介して入力される選択回路１２ｃからの選択信号の信号レベルに基づいて、バッファメモリＭ１及びバッファメモリＭ２のいずれか一方をアクセス可能とする。
【００４９】
図２に示すように、ＬＤＣシンドローム生成回路１３（パリティ演算結果生成回路）は、アクセス可能に選択された内蔵メモリ部１２のバッファメモリに格納された分割ＥＣＣクラスタＤＥＣＣ内のＬＤＣクラスタＬＤＣｃを並び替えながら読み出す。前述したように、ＢＤ４から読み出されるＥＣＣクラスタＥＣＣｃにおけるＬＤＣクラスタＬＤＣｃ（図３９参照）は、パリティ付加ブロックＰＢ（図３７参照）のデータが第１インターリーブ処理及び第２インターリーブ処理されて並び替えられたブロックである。また、ＬＤＣクラスタＬＤＣｃ内のＥＣＣ部ＬＤＣｐは、第１及び第２インターリーブ処理前のデータブロックＤＢ（図３６（ｂ）参照）に対して付加されたパリティであるため、ＬＤＣクラスタＬＤＣｃにおけるデータ配列順序のままでは、ＥＣＣ部ＬＤＣｐに基づくＬＤＣシンドローム（パリティ演算結果）を正確に生成することができない。
【００５０】
そこで、本実施形態におけるＬＤＣシンドローム生成回路１３は、内蔵メモリ部１２に格納された分割ＥＣＣクラスタＤＥＣＣ内のＬＤＣクラスタＬＤＣｃを、第１及び第２デインターリーブ処理を施してパリティ付加ブロックＰＢの配置順序になるように各データを並べ替えながら読み出すようにしている。この読み出し順序について、内蔵メモリ部１２に最初に格納されるデータブロックを例に挙げて説明すると、まず、ＬＤＣシンドローム生成回路１３は、図３に示す位置ｆ（０，０）のデータ成分ｅ（０，０）を読み出し、次に位置ｆ（２，１４９）のデータ成分ｅ（１，０）を読み出し、次に位置ｆ（４，１４６）のデータ成分ｅ（２，０）を読み出す。以後も同様に、ＬＤＣシンドローム生成回路１３は、図４の実線の矢印で示すように、データ成分ｅ（３，０）、データ成分ｅ（４，０）、…、データ成分ｅ（７，０）の順にパリティ付加ブロックＰＢにおける１列目のデータ成分を読み出す。続いて、ＬＤＣシンドローム生成回路１３は、データ成分ｅ（０，１）、…、データ成分ｅ（７，１）の順にパリティ付加ブロックＰＢにおける２列目の１行目〜８行目までのデータ成分を読み出す。ＬＤＣシンドローム生成回路１３は、以後も同様に、パリティ付加ブロックＰＢにおける各列のデータ成分ｅを順番に読み出す。このように、３１個の分割ＥＣＣクラスタＤＥＣＣ内のＬＤＣクラスタＬＤＣｃが第１及び第２デインターリーブ処理が施されて読み出されると、図４に示すように、３１分割された８行×３０４列のパリティ付加ブロックＰＢが読み出しブロックＲＢ（第１〜第３１読み出しブロックＲＢ１〜ＲＢ３１）として読み出される。
【００５１】
ＬＤＣシンドローム生成回路１３は、上記読み出し順序にてデータを読み出すとともに、各読み出しブロックＲＢにおける列方向のバイト数（本実施形態では、８バイト）毎に各列のＬＤＣシンドロームの中間値を生成し、該ＬＤＣシンドロームの中間値をＬＤＣメモリ部１４に格納する。また、ＬＤＣシンドローム生成回路１３は、前回の読み出しブロックＲＢ（例えば、第２読み出しブロックＲＢ２のときには第１読み出しブロックＲＢ１）のときに格納した同一列のＬＤＣシンドロームの中間値をＬＤＣメモリ部１４から読み出す。そして、ＬＤＣシンドローム生成回路１３は、読み出したＬＤＣシンドロームの中間値と、現在の読み出しブロックＲＢ（例えば、第２読み出しブロックＲＢ２）の列方向におけるデータとに基づいて、ＬＤＣシンドロームの中間値を更新して、該更新後のＬＤＣシンドロームをＬＤＣメモリ部１４に格納する。
【００５２】
図２に示すように、ＬＤＣメモリ部１４は、２つのＬＤＣバッファメモリＭ３，Ｍ４から構成されている。各バッファメモリＭ３，Ｍ４の各々は、１つのパリティ付加ブロックＰＢ内の全列のＬＤＣシンドロームを格納可能なメモリ容量、すなわち９７２８（＝３２×３０４）バイトを格納可能なメモリ容量となっている。ＬＤＣメモリ部１４は、１つのパリティ付加ブロックＰＢ全体（３１回分：第１〜第３１読み出しブロックＲＢ１〜ＲＢ３１）のデータ読み出し終了後に格納されているＬＤＣシンドロームの中間値が最終的なＬＤＣシンドロームとなるため、各列毎の最終的なＬＤＣシンドロームを外部バッファメモリ６に格納する。ＬＤＣメモリ部１４は、同一時間において、バッファメモリＭ３及びバッファメモリＭ４のいずれか一方を、ＬＤＣシンドローム生成回路１３からのＬＤＣシンドロームの中間値を保存するシンドローム保存用として使用し、他方を、最終的なＬＤＣシンドロームを外部バッファメモリ６に出力するシンドローム出力用として使用する。なお、ＬＤＣメモリ部１４は、内蔵メモリ部１２と略同様の構成を有する。
【００５３】
ＢＩＳシンドローム生成回路１６に接続されるＢＩＳメモリ部１５には、アクセス可能に選択された内蔵メモリ部１２のバッファメモリに格納された分割ＥＣＣクラスタＤＥＣＣ内のＢＩＳクラスタＢＩＳｃが、列方向に順番に格納される。例えば、図３に示すデータブロックの場合には、ＢＩＳメモリ部１５には、Ｂ（０，０）〜Ｂ（１５，０）が図３の実線の矢印で示す順番に格納される。ＢＩＳメモリ部１５は、ＢＩＳクラスタＢＩＳｃ全体のデータが格納されると、そのＢＩＳクラスタＢＩＳｃをＢＩＳシンドローム生成回路１６に出力する。
【００５４】
図２に示すように、このＢＩＳメモリ部１５は、２つのＢＩＳバッファメモリＭ５，Ｍ６とから構成されている。各バッファメモリＭ５，Ｍ６の各々は、１つのＢＩＳクラスタＢＩＳｃを格納可能なメモリ容量、すなわち１４８８（＝４９６×３）バイトを格納可能なメモリ容量となっている。ＢＩＳメモリ部１５は、同一時間において、バッファメモリＭ５及びバッファメモリＭ６のいずれか一方を、内蔵メモリ部１２からのＢＩＳクラスタＢＩＳｃのデータを格納するデータ保存用として使用し、他方を、格納したＢＩＳクラスタＢＩＳｃをＢＩＳシンドローム生成回路１６に出力するデータ出力用として使用する。なお、ＢＩＳメモリ部１５は、内蔵メモリ部１２と略同様の構成を有する。
【００５５】
ＢＩＳシンドローム生成回路１６は、ＢＩＳメモリ部１５からＢＩＳクラスタＢＩＳｃを読み出し、該ＢＩＳクラスタＢＩＳｃに基づいてＢＩＳシンドロームを生成する。ＢＩＳシンドローム生成回路１６は、生成したＢＩＳシンドロームを外部バッファメモリ６に格納する。
【００５６】
デスクランブル回路２０は、上記ＬＤＣシンドローム生成回路１３と同様に、アクセス可能に選択された内蔵メモリ部１２のバッファメモリに格納された分割後のＬＤＣクラスタＬＤＣｃを読み出しブロックＲＢとして読み出す。ここで、第１〜第３１読み出しブロックＲＢ１〜ＲＢ３１のうち、第２８〜第３１読み出しブロックＲＢ２８〜ＲＢ３１（２１７行目〜２４８行目のデータ）を構成するＥＣＣ部ＬＤＣｐの各データには、スクランブル処理が施されていない。そのため、デスクランブル回路２０は、図７に示すように、第２８〜第３１読み出しブロックＲＢ２８〜ＲＢ３１を除く第１〜第２７読み出しブロックＲＢ１〜ＲＢ２７（図３６（ｂ）に示したデータブロックＤＢ）のみを読み出す。デスクランブル回路２０は、読み出した各読み出しブロックＲＢ毎に各スクランブルデータに対してデスクランブル処理を行って該データにかけられた所定のスクランブルを解除する。デスクランブル回路２０は、デスクランブル処理の施されたデスクランブルデータｄＤｕを外部バッファメモリ６及びＥＤＣシンドローム生成回路３０に出力する。なお、図７は、デスクランブル回路２０により読み出される第１〜第２７読み出しブロックＲＢ１〜ＲＢ２７のスクランブルデータｓＤｕの読み出し順序を、スクランブルデータフレームＳＤＦ（図３６（ａ）参照）における行番号ｕで示した。なお、この行番号ｕは、スクランブル処理時におけるデータフレームＤＦ毎の処理順序を示す番号であり、０≦ｕ≦２０５１である。
【００５７】
図６に、デスクランブル回路２０の回路構成例を示した。図６に示すように、内蔵メモリ部１２から読み出されたスクランブルデータｓＤｕは、ＥＯＲ回路２１に入力される。このＥＯＲ回路２１には、スクランブル値生成回路２２により生成されるスクランブル値ＳＣが入力される。ＥＯＲ回路２１は、内蔵メモリ部１２からのスクランブルデータｓＤｕと、所定のスクランブル値ＳＣの下位８ビットとの排他的論理和を取ってデスクランブルデータｄＤｕを生成し、該デスクランブルデータｄＤｕを外部バッファメモリ６及びＥＤＣシンドローム生成回路３０に出力する。
【００５８】
ここで、デスクランブル処理について説明する。前述したように、スクランブル値ＳＣの初期値がＳ０である場合には、スクランブルデータｓＤｕに対するデスクランブルデータｄＤｕは下記式により生成される。
【００５９】
【数１０】
0005365683.tif 000011
このようにスクランブル処理時と同一のスクランブル値ＳＣとスクランブルデータｓＤｕとの排他的論理和を取ることによって、デスクランブル処理を実行することができる。すなわち、スクランブル処理時と同様の順序で読み出されるスクランブルデータｓＤｕと、スクランブル処理を行った際と同様の順序で生成されるスクランブル値ＳＣとの排他的論理和を取ることによって、全デスクランブルデータｄＤ０〜ｄＤ２０５１を正確に生成することができる。但し、本実施形態の場合、データブロックＤＢが３１分割されて読み出されるため、データの読み出し順序がスクランブル処理時と異なる。従って、スクランブル処理時と同様に、１バイト分ずつシフトさせてスクランブル値ＳＣを生成すると、スクランブル処理時とは異なるスクランブル値ＳＣと各データとの排他的論理和が取られ、正確にデスクランブル処理を実行することができない。
【００６０】
そこで、本実施形態では、スクランブル値生成回路２２内に、ＥＯＲ回路２１に入力されるスクランブルデータｓＤｕに応じてシフト演算子γを所望のバイト数分だけシフトさせるための１シフト演算器２４、２０９シフト演算器２５及び１０８シフト演算器２６を備えるようにした。１シフト演算器２４及び２０９シフト演算器２５には、フリップフロップ（ＦＦ）回路２３からスクランブル値ＳＣが入力される。１シフト演算器２４は、ＦＦ回路２３からスクランブル値ＳＣとしてＳ０・γｎが入力されたときに、スクランブル値ＳＣとしてＳ０・γｎ＋１をセレクタ２７に出力する演算器である。すなわち、１シフト演算器２４は、入力されたスクランブル値を生成多項式Φ（ｘ）に従って１バイト分シフトさせて新たなスクランブル値ＳＣを生成する演算器である。図１５に、１シフト演算器２４にＩ［１５：０］が入力されたときに、該１シフト演算器２４から出力されるＯ［１５：０］の論理式を示した。
【００６１】
２０９シフト演算器２５は、ＦＦ回路２３からスクランブル値ＳＣとしてＳ０・γｎが入力されたときに、スクランブル値ＳＣとしてＳ０・γｎ＋２０９をセレクタ２７に出力する演算器である。すなわち、２０９シフト演算器２５は、入力されたスクランブル値を生成多項式Φ（ｘ）に従って２０９バイト分シフトさせて新たなスクランブル値ＳＣを生成する演算器である。図１６に、２０９シフト演算器２５にＩ［１５：０］が入力されたときに、該２０９シフト演算器２５から出力されるＯ［１５：０］の論理式を示した。
【００６２】
１０８シフト演算器２６は、初期値レジスタＲ１からスクランブル値ＳＣの初期値Ｓ０が入力されたときに、スクランブル値ＳＣとしてＳ０・γ１０８を奇数レジスタＲ３に出力する演算器である。すなわち、１０８シフト演算器２６は、入力されたスクランブル値を生成多項式Φ（ｘ）に従って１０８バイト分シフトさせて新たなスクランブル値ＳＣを生成する演算器である。図１７に、１０８シフト演算器２６にＩ［１５：０］が入力されたときに、該１０８シフト演算器２６から出力されるＯ［１５：０］の論理式を示した。なお、図１５〜図１７におけるＯ［７］〜Ｏ［０］が、ＥＯＲ回路２１において実際にスクランブルデータｓＤｕと排他的論理和が取られるデータである。
【００６３】
セレクタ２７には、各種演算器２４，２５と併せて、初期値レジスタＲ１、偶数レジスタＲ２及び奇数レジスタＲ３からそれぞれスクランブル値ＳＣが入力される。ここで、初期設定時の偶数レジスタＲ２には、初期値レジスタＲ１から入力されるスクランブル値ＳＣの初期値Ｓ０が格納される。また、偶数レジスタＲ２には、各読み出しブロックＲＢ内の最終偶数データフレーム（データフレームＤＦ３０）における１列目の最終行のスクランブルデータに対するスクランブル値ＳＣが１シフト演算器２４を通じて格納される。一方、初期設定時の奇数レジスタＲ３には、初期値レジスタＲ１から１０８シフト演算器２６を通じて入力されるスクランブル値ＳＣ（＝Ｓ０・γ１０８）が格納される。また、奇数レジスタＲ３には、各読み出しブロックＲＢ内の最終奇数データフレーム（データフレームＤＦ３１）における１列目の最終行のスクランブルデータに対するスクランブル値ＳＣが１シフト演算器２４を通じて格納される。
【００６４】
セレクタ２７には、選択回路２８からの選択信号が入力される。セレクタ２７は、選択回路２８からの選択信号に基づいて、各種演算器２４，２５及び各レジスタＲ１〜Ｒ３から入力されるスクランブル値のうち１つのスクランブル値ＳＣを上記ＦＦ回路２３に出力する。なお、選択回路２８は、入力されるクロック信号ＣＬＫのパルス数に応じて、すなわち読み出すデータの位置（データブロックＤＢにおける位置）に応じて選択信号を生成し、その選択信号をセレクタ２７に出力する。例えば、選択回路２８は、各読み出しブロックＲＢ内の各偶数データフレームにおける１行１列目の先頭スクランブルデータがＥＯＲ回路２１に入力されるときには、偶数レジスタ２８からのスクランブル値ＳＣをＦＦ回路２３に出力させる選択信号を生成する。選択回路２８は、各読み出しブロックＲＢ内の各奇数データフレームにおける１行１列目の先頭スクランブルデータがＥＯＲ回路２１に入力されるときには、奇数レジスタ２９からのスクランブル値ＳＣをＦＦ回路２３に出力させる選択信号を生成する。選択回路２８は、各読み出しブロックの２行目以降のスクランブルデータがＥＯＲ回路２１に入力されるときには、１シフト演算器２４から入力されるスクランブル値ＳＣをＦＦ回路２３に出力させる選択信号を生成する。選択回路２８は、各読み出しブロックの各データフレームＤＦにおける２列目以降の各列の１行目のスクランブルデータがＥＯＲ回路２１に入力されるときには、２０９シフト演算器２５から入力されるスクランブル値ＳＣをＦＦ回路２３に出力させる選択信号を生成する。
【００６５】
ＦＦ回路２３は、ＣＫ端子に入力されるクロック信号ＣＬＫのパルスに基づいて、セレクタ２７からＤ端子に入力されるスクランブル値ＳＣをラッチするとともに、該ラッチしたスクランブル値ＳＣをＱ端子からＥＯＲ回路２１、各種演算器２４，２５に出力する。
【００６６】
図２に示すように、ＥＤＣシンドローム生成回路３０は、デスクランブル回路２０からバイトデータとして入力されるデスクランブルデータｄＤｕに基づいてＥＤＣ演算を行ってＥＤＣシンドロームを生成する。すなわち、ＥＤＣシンドローム生成回路３０は、読み出しブロックＲＢ内のデータフレームＤＦ毎に、デスクランブルデータｄＤｕに対するＥＤＣシンドロームを生成し、そのＥＤＣシンドロームをＥＤＣメモリ部４０に格納する。
【００６７】
図８に、ＥＤＣシンドローム生成回路３０の回路構成例を示した。図８に示すように、デスクランブル回路２０から入力されるデスクランブルデータｄＤｕは、ＥＯＲ回路３１に入力される。このＥＯＲ回路３１には、セレクタ３２からシフト演算値Ｅｓが入力される。ＥＯＲ回路３１は、デスクランブルデータｄＤｕとシフト演算値Ｅｓの下位８ビットとの排他的論理和を取って、ＥＤＣ演算値Ｅｒ（ｃ）をＦＦ回路３３に出力する。なお、ＥＤＣ演算値Ｅｒ（ｃ）のｒは読み出しブロックＲＢ番号であり、１≦ｒ≦２７であるとともに、ｃは各データフレームＤＦにおけるクロック信号ＣＬＫのパルス数を表している。
【００６８】
ここで、ＥＤＣ演算について説明する。前述したように、４バイトのＥＤＣを付加するときのデータ配置（データ処理順序）と同様に、デスクランブルデータが、ｄＤ０→ｄＤ１→・・・→ｄＤ２０５０→ｄＤ２０５１の順で入力されると、ＥＤＣシンドロームＥＤＣＳは下記式により生成される。
【００６９】
【数１１】
0005365683.tif 000012
このように、ＥＤＣシンドロームＥＤＣＳの演算は、１バイトのデータが演算処理される度に各データに対して１次のベクターβ１による重み付けが行われる。従って、入力順序が早いデータほど重み付けされるベクターβの次数が高次になるとともに、入力順序が遅いデータほど重み付けされるベクターβの次数が低次になる。例えば、各データフレームＤＦにおいて最も早く入力される入力データ（バイトデータ）Ｘ２０５１に対しては、１次のベクターβ１による重み付けが２０５１回行われる。但し、本実施形態の場合、図７に示すように、デスクランブル回路２０からＥＤＣシンドローム生成回路３０にデスクランブルデータが、ｄＤ０→ｄＤ１→・・・→ｄＤ７→ｄＤ２１６→ｄＤ２１７→・・・という順序で入力される。このように、ＥＤＣ付加時のデータ処理順序と異なる順序でデスクランブルデータが入力されると、ベクターβによる重み付けが正確にできないため、正常なＥＤＣシンドロームを生成することができない。
【００７０】
そこで、本実施形態のＥＤＣシンドローム生成回路３０は、図８に示すように、バイトデータに応じて所望の次数ｎのベクターβｎによる重み付けを行うための１シフト演算器３４、２０９シフト演算器３５、１０８シフト演算器３６及び−２１１シフト演算器３７を備えるようにした。これら各種演算器３４〜３７には、ＦＦ回路３３からＥＤＣ演算値Ｅｒ（ｃ）が入力される。すなわち、ＦＦ回路３３は、ＣＫ端子に入力されるクロック信号ＣＬＫに基づいて、Ｄ端子に入力されるＥＤＣ演算値Ｅｒ（ｃ）をラッチするとともに、該ＥＤＣ演算値Ｅｒ（ｃ）をＱ端子から各種演算器３４〜３７及びＥＤＣメモリ部４０に出力する。
【００７１】
１シフト演算器３４は、ＦＦ回路３３からＥＤＣ演算値Ｅｒ（ｃ）が入力されたときに、シフト演算値としてＥｒ（ｃ）・β１をセレクタ３２に出力する演算器である。すなわち、１シフト演算器３４は、入力されるＥＤＣ演算値Ｅｒ（ｃ）に対して、生成多項式Ｇ（ｘ）に従って１バイト分シフトさせる重み付けをしてシフト演算値Ｅｓを生成する演算器である。図１８に、１シフト演算器３４にＩ［３１：０］が入力されたときに、該１シフト演算器３４から出力されるＯ［３１：０］の論理式を示した。
【００７２】
２０９シフト演算器３５は、ＦＦ回路３３からＥＤＣ演算値Ｅｒ（ｃ）が入力されたときに、シフト演算値としてＥｒ（ｃ）×β２０９をセレクタ３２及びＥＯＲ回路３８に出力する演算器である。すなわち、２０９シフト演算器３５は、入力されるＥＤＣ演算値Ｅｒ（ｃ）に対して、生成多項式Ｇ（ｘ）に従って２０９バイト分シフトさせる重み付けをしてシフト演算値Ｅｓを生成する演算器である。図１９に、２０９シフト演算器３５にＩ［３１：０］が入力されたときに、該２０９シフト演算器３５から出力されるＯ［３１：０］の論理式を示した。
【００７３】
１０８シフト演算器３６は、ＦＦ回路３３からＥＤＣ演算値Ｅｒ（ｃ）が入力されたときに、ＥＤＣシンドロームの中間値ＥＤＣｓとしてＥｒ（ｃ）×β１０８をセレクタ３２に出力する演算器である。すなわち、１０８シフト演算器３６は、入力されるＥＤＣ演算値Ｅｒ（ｃ）に対して、生成多項式Ｇ（ｘ）に従って１０８バイト分シフトさせる重み付けをしてシフト演算値Ｅｓを生成する演算器である。図２０に、１０８シフト演算器３６にＩ［３１：０］が入力されたときに、該１０８シフト演算器３６から出力されるＯ［３１：０］の論理式を示した。
【００７４】
−２１１シフト演算器３７は、ＦＦ回路３３からＥＤＣ演算値Ｅｒ（ｃ）が入力されたときに、ＥＤＣシンドロームの中間値ＥＤＣｓとしてＥｒ（ｃ）×β-２１１をセレクタ
３２に出力する演算器である。すなわち、−２１１シフト演算器３７は、入力されるＥＤＣ演算値Ｅｒ（ｃ）に対して、生成多項式Ｇ（ｘ）に従って２１１バイト分、逆シフトさせる重み付けをしてシフト演算値Ｅｓを生成する演算器である。図２１に、−２１１シフト演算器３７にＩ［３１：０］が入力されたときに、該−２１１シフト演算器３７から出力されるＯ［３１：０］の論理式を示した。
【００７５】
ＥＤＣメモリ部４０には、各読み出しブロックＲＢの各データフレームにおける最終行最終列のバイトデータに対するＥＤＣ演算値Ｅｒ（ｃ）が１シフト演算器３４を通じて中間値ＥＤＣｓとして格納される。ＥＤＣメモリ部４０には、第１４読み出しブロックＲＢの各偶数データフレームにおける最後のバイトデータに対するＥＤＣ演算値Ｅｒ（ｃ）が−２１１シフト演算器３７を通じて中間値ＥＤＣｓとして格納される。ＥＤＣメモリ部４０には、第２７読み出しブロックＲＢの各偶数データフレームにおける最終行最終列のバイトデータに対するＥＤＣ演算値Ｅｒ（ｃ）が１０８シフト演算器３６を通じてＥＤＣシンドロームＥＤＣＳとして格納される。ＥＤＣメモリ部４０には、第２７読み出しブロックＲＢの各奇数データフレームにおける最後のバイトデータに対するＥＤＣ演算値Ｅｒ（ｃ）がＥＤＣシンドロームＥＤＣＳとしてＦＦ回路３３から格納される。
【００７６】
このＥＤＣメモリ部４０は、図８に示すように、２つのＥＤＣバッファメモリＭ７，Ｍ８から構成されている。各バッファメモリＭ７，Ｍ８の各々は、全データフレームＤＦ０〜ＤＦ３１におけるＥＤＣシンドロームを格納可能なメモリ容量、すなわち１２８（＝４×３２）バイトを格納可能なメモリ容量となっている。ＥＤＣメモリ部４０は、１シフト演算器３４及び−２１１シフト演算器３７を通じて格納された中間値ＥＤＣｓをＥＯＲ回路３８に出力する。ＥＤＣメモリ部４０は、ＦＦ回路３３及び１０８シフト演算器３６からのＥＤＣシンドロームＥＤＣＳを外部バッファメモリ６に出力する。ＥＤＣメモリ部４０は、同一時間において、バッファメモリＭ７及びバッファメモリＭ８のいずれか一方を、ＥＤＣシンドローム生成回路３０からのＥＤＣシンドロームの中間値ＥＤＣｓを保存するシンドローム保存用として使用し、他方を、最終的なＥＤＣシンドロームＥＤＣＳを外部バッファメモリ６に出力するシンドローム出力用として使用する。なお、ＥＤＣメモリ部４０は、内蔵メモリ部１２と略同様の構成を有する。
【００７７】
ＥＯＲ回路３８は、２０９シフト演算器３５からのシフト演算値Ｅｓ（＝Ｅｒ（ｃ）・β２０９）とＥＤＣメモリ部４０からの中間値ＥＤＣｓとの排他的論理和を取って、その演算結果をシフト演算値Ｅｓとしてセレクタ３２に出力する。
【００７８】
セレクタ３２は、選択回路３９からの選択信号に基づいて、各種演算器３４，３５及びＥＯＲ回路３８から入力されるシフト演算値のうち１つのシフト演算値Ｅｓを上記ＥＯＲ回路３１に出力する。また、セレクタ３２は、選択回路３９からの選択信号に基づいて、シフト演算値Ｅｓを出力しないようにする。
【００７９】
選択回路３９は、入力されるクロック信号ＣＬＫのパルス数に応じて、すなわちバイトデータの位置（データブロックＤＢにおける位置）に応じて各種選択信号を生成し、その選択信号をセレクタ３２に出力する。例えば、選択回路３９は、各読み出しブロックＲＢの２行目以降のバイトデータがＥＯＲ回路３１に入力されるときには、１シフト演算器３４からのシフト演算値ＥｓをＥＯＲ回路３１に出力させる選択信号を生成する。選択回路３９は、各読み出しブロックＲＢにおける各データフレームＤＦの１列目と最終列を除く各列の１行目のバイトデータが入力されるときには、２０９シフト演算器３５からのシフト演算値ＥｓをＥＯＲ回路３１に出力させる選択信号を生成する。選択回路３９は、各読み出しブロックＲＢの各データフレームＤＦにおける最終列の１行目のバイトデータが入力されるときには、ＥＯＲ回路３８からのシフト演算値ＥｓをＥＯＲ回路３１に出力させる選択信号を生成する。選択回路３９は、各読み出しブロックＲＢの各データフレームＤＦにおける１行１列目の先頭バイトデータが入力されるときには、セレクタ３２からシフト演算値Ｅｓを出力しないようにする選択信号を生成する。
【００８０】
図２に示すように、誤り訂正回路５０内の訂正回路５１は、外部バッファメモリ６からＬＤＣシンドローム及びＢＩＳシンドロームを読み出し、これらＬＤＣシンドローム及びＢＩＳシンドロームに基づいて、外部バッファメモリ６に格納されたデスクランブル処理済のデータフレームＤＦに対して誤り訂正処理を行う。訂正回路５１は、各種シンドロームに基づいて算出した誤り位置及び誤り数値をＥＤＣ補正回路５２に出力する。
【００８１】
ＥＤＣ補正回路５２は、訂正回路５１から入力される誤り位置及び誤り数値に基づいて、外部バッファメモリ６から補正メモリ部５３に格納されるＥＤＣシンドロームを補正する。ＥＤＣチェック回路５４は、補正メモリ部５３に格納されている補正後のＥＤＣシンドロームを読み出し、ＥＤＣチェックを行う。ここで、図４１及び図４３に示したコントローラ１１０，１３０におけるＥＤＣチェック回路１１６では、誤り訂正後のデータをホストコンピュータに転送すると同時に、ＥＤＣチェックを行っていた。そのため、従来のコントローラ１１０，１３０では、誤り訂正が正常に終了していない場合であっても、誤り訂正後のデータがホストコンピュータに転送される場合がある。これに対して、本実施形態のコントローラ１０では、誤り訂正処理の終了後、直ちにＥＤＣチェックが行われるため、誤った訂正を行ったデータをコンピュータ２に転送されることを抑制することができる。
【００８２】
インターフェース回路６０は、マイクロプロセッサ８の命令に基づいて、外部バッファメモリ６に格納された誤り訂正後のデータを読み出して上記コンピュータ２に出力する。
外部バッファメモリ６は、図９に示すように、複数の格納ブロックから構成される。１つの格納ブロックは、１３０００Ｈバイトから構成されている。詳述すると、１つの格納ブロックには、そのアドレス００００００Ｈ〜００ＦＦＦＦＨに全データフレームＤＦ０〜ＤＦ３１のユーザデータＵＤ部分（６５５３６バイト）が格納され、アドレス０１００００Ｈ〜０１０３ＦＦＨにＢＩＳデータ（７２０バイト）が格納される。また、１つの格納ブロックには、そのアドレス０１０４００Ｈ〜０１２９ＦＦＨにＬＤＣシンドローム（９７２８バイト）が格納され、アドレス０１２Ａ００Ｈ〜０１２ＤＦＦＨにＢＩＳシンドローム（７６８バイト）が格納され、アドレス０１２Ｅ００Ｈ〜１２ＦＦＦＨにＥＤＣシンドローム（１２８バイト）が格納される。従って、１つの格納ブロックに、１つのＥＣＣクラスタＥＣＣｃ分のデータを格納することができる。なお、周知ではあるが、「Ｈ」はその値が１６進数であることを示す。
【００８３】
次に、このように構成された光ディスクコントローラ１０の動作について説明する。
復調回路１１は、ＢＤ４からディスクデータを読み込んで復調し、その復調済データ（ＥＣＣクラスタＥＣＣｃ）を、内蔵メモリ部１２の第１及び第２バッファメモリＭ１，Ｍ２のうちデータ保存用として選択されているバッファメモリに格納する。なお、１つのバッファメモリには、ＥＣＣクラスタＥＣＣｃを３１個に分割した２４８０バイト分の分割ＥＣＣクラスタＤＥＣＣが格納される。
【００８４】
ＬＤＣシンドローム生成回路１３は、アクセス用として選択されている第１バッファメモリＭ１あるいは第２バッファメモリＭ２から、分割ＥＣＣクラスタＤＥＣＣ内のＬＤＣクラスタＬＤＣｃを並び替えながら、読み出しブロックＲＢとして読み出す。このとき、図４に示すように、読み出しブロックＲＢが任意の２４３２（８行×３０４列）バイト分のデータから構成されるため、ＬＤＣシンドローム生成回路１３は、列方向に８バイト分のデータ毎、すなわち読み出しブロックＲＢの列毎にＬＤＣシンドロームを生成する。ＬＤＣシンドローム生成回路１３は、生成したＬＤＣシンドロームをＬＤＣシンドロームの中間値としてＬＤＣメモリ部１４に格納する。
【００８５】
次に、ＬＤＣシンドローム生成回路１３は、第２読み出しブロックＲＢ２以降の読み出しブロックＲＢ（第２〜第３１読み出しブロックＲＢ２〜ＲＢ３１）を読み出すとき、前回の読み出しブロックＲＢで生成した同一列のＬＤＣシンドロームの中間値をＬＤＣメモリ部１４から読み出す。そして、ＬＤＣシンドローム生成回路１３は、読み出したＬＤＣシンドロームの中間値と現在の読み出しブロックＲＢの列方向に８バイト分のデータとからＬＤＣシンドロームを生成し、該ＬＤＣシンドロームを新たなＬＤＣシンドロームの中間値としてＬＤＣメモリ部１４に格納する。
【００８６】
ＬＤＣメモリ部１４では、１つのパリティ付加ブロックＰＢ（第１〜第３１読み出しブロックＲＢ１〜ＲＢ３１）の全データの読み出しが終了すると、バッファメモリＭ３及びバッファメモリＭ４におけるシンドローム保存用とシンドローム出力用の選択が切り替えられる。これにより、シンドローム保存用からシンドローム出力用に切り替わったバッファメモリには、１つのパリティ付加ブロックＰＢにおける列毎の最終的なＬＤＣシンドロームが格納されることになる。シンドローム出力用に切り替えられたバッファメモリは、この列毎の最終的なＬＤＣシンドロームを外部バッファメモリ６に格納する。
【００８７】
一方、ＢＩＳメモリ部１５のデータ保存用に選択されているバッファメモリには、アクセス用として選択されている第１バッファメモリＭ１あるいは第２バッファメモリＭ２から、分割ＥＣＣクラスタＤＥＣＣ内のＢＩＳクラスタＢＩＳｃが格納される。ＢＩＳメモリ部１５では、１つのＢＩＳクラスタＢＩＳｃの全データの格納が終了すると、バッファメモリＭ５及びバッファメモリＭ６におけるデータ保存用とデータ出力用の選択が切り替えられる。次に、ＢＩＳシンドローム生成回路１６は、データ出力用に切り替えられたＢＩＳメモリ部１５のバッファメモリＭ５あるいはバッファメモリＭ６から、ＢＩＳクラスタＢＩＳｃを読み出す。ＢＩＳシンドローム生成回路１６は、読み出したＢＩＳクラスタＢＩＳｃに基づいてＢＩＳシンドロームを生成し、該ＢＩＳシンドロームを外部バッファメモリ６に格納する。
【００８８】
デスクランブル回路２０は、上記ＬＤＣシンドローム生成回路１３によるデータ読み出しと同時に、アクセス用として選択されている第１バッファメモリＭ１あるいはバッファメモリＭ２から、スクランブルデータｓＤｕを第１〜第２７読み出しブロックＲＢ１〜ＲＢ２７として列方向に読み出す。
【００８９】
次に、デスクランブル回路２０におけるデスクランブル処理を図７及び図１０〜図１２に従って説明する。
図１０のステップＳ１において、偶数レジスタＲ２にスクランブル値ＳＣの初期値Ｓ０が格納されるとともに、奇数レジスタＲ３にスクランブル値ＳＣとしてＳ０・γ１０８が格納される。ここで、奇数レジスタＲ３に初期値Ｓ０ではなく、Ｓ０・γ１０８を格納した理由について説明する。図７に示すように、第１読み出しブロックＲＢ１内の奇数データフレームＤＦ（例えば、データフレームＤＦ１）において最初に読み出されるスクランブルデータｓＤｕの行番号ｕが１０８であるため、Ｓ０・γ１０８を格納するようにした。すなわち、このスクランブルデータｓＤ１０８は、各データフレームのスクランブル処理時における先頭データｓＤ０よりも、スクランブル処理時において１０８バイト分だけ遅く処理されるデータである。そのため、初期値Ｓ０から１０８バイト分だけシフトさせて得られるＳ０・γ１０８をスクランブル値ＳＣとして奇数レジスタＲ３に格納するようにした。なお、初期値Ｓ０は、ディスクデータ内のＥＣＣクラスタＥＣＣｃにおける物理セクタ番号に応じて予め設定されている値である。
【００９０】
次に、デスクランブル回路２０は、第１読み出しブロックＲＢ１のデータフレームＤＦ０（偶数データフレーム）におけるスクランブルデータｓＤ０を読み出し、該スクランブルデータｓＤ０をＥＯＲ回路２１に入力する（ステップＳ２）。このとき、選択回路２８は、偶数レジスタＲ２からのスクランブル値ＳＣをＥＯＲ回路２１に出力させるための選択信号をセレクタ２７に出力する。従って、ＥＯＲ回路２１には、スクランブル値ＳＣとして初期値Ｓ０が入力される。ＥＯＲ回路２１は、スクランブルデータｓＤ０と初期値Ｓ０の下位８ビットとの排他的論理和を取ってデスクランブルデータｄＤ０を生成し、そのデスクランブルデータｄＤ０を外部バッファメモリ６及びＥＤＣシンドローム生成回路３０に出力する（ステップＳ３）。ここで使用されたスクランブル値ＳＣは、１シフト演算器２４及び２０９シフト演算器２５にも入力される。なお、以下の説明において、ＥＯＲ回路２１の排他的論理和演算におけるスクランブル値ＳＣの下位８ビットを、単に「スクランブル値ＳＣ」とするが、以後も同様に、ＥＯＲ回路２１では、スクランブルデータｓＤｕとスクランブル値ＳＣの下位８ビットとの排他的論理和が取られる。
【００９１】
次に、ステップＳ４において、選択回路２８は、入力されるクロック信号ＣＬＫのパルス数に基づいて、各読み出しブロックＲＢにおける１列分のデスクランブル処理が終了したかを判断する。選択回路２８は、１列分のデスクランブル処理が終了していないと判断すると（ステップＳ４においてＮＯ）、ステップＳ５に移る。このとき、上記ステップＳ３においてデスクランブル回路２０により読み出されたスクランブルデータをｓＤｕとすると、次に読み出されるスクランブルデータがｓＤｕ＋１となる。すなわち、ステップＳ４からステップＳ５に移る場合には、各読み出しブロックＲＢにおける列方向にスクランブルデータが読み出され、読み出し順序がスクランブル処理時のデータ処理順序と同一になる。
【００９２】
そこで、選択回路２８は、ステップＳ５において、すなわち各読み出しブロックの２行目以降のデータがＥＯＲ回路２１に入力されるときに、１シフト演算器２４からのスクランブル値ＳＣをＥＯＲ回路２１に出力させるための選択信号をセレクタ２７に出力する。これにより、ＥＯＲ回路２１には、１つ前に読み出されたスクランブルデータｓＤｕの時に使用されたスクランブル値から、上記生成多項式Φ（ｘ）に従って１バイト分シフトさせて得られるスクランブル値ＳＣ（＝Ｓ０・γｕ・γ１）が入力される。そして、ＥＯＲ回路２１は、デスクランブル回路２０により次に読み出されるスクランブルデータｓＤ１と、１シフト演算器２４からのスクランブル値ＳＣ（＝Ｓ０・γ１）との排他的論理和を取って、デスクランブルデータｄＤ１を生成する（ステップＳ３）。このように、各読み出しブロックＲＢにおける１列分のデスクランブル処理が終了するまで、ステップＳ３〜ステップＳ５が繰り返し実行される。なお、本実施形態では、以後、デスクランブル回路２０によりスクランブルデータがｓＤ２→ｓＤ３→ｓＤ４→ｓＤ５→ｓＤ６→ｓＤ７の順（図７の実線の矢印参照）に読み出されるため、デスクランブルデータｄＤ２〜ｄＤ７が下記式に示すように生成される。
【００９３】
【数１２】
0005365683.tif 000013
このようにデスクランブルデータｄＤ７が生成されると、ステップＳ４において、選択回路２８は、各読み出しブロックＲＢにおける１列分のデスクランブル処理が終了したと判断して、ステップＳ６に移る。次に、選択回路２８は、各読み出しブロックＲＢにおける１つのデータフレーム分のデスクランブル処理が終了したかを判断する（ステップＳ６）。選択回路２８は、１つのデータフレーム分のデスクランブル処理が終了していないと判断すると（ステップＳ６においてＮＯ）、ステップＳ７に移る。このとき、上記ステップＳ３においてデスクランブル回路２０により読み出されたスクランブルデータをｓＤｕとすると、次に読み出されるスクランブルデータがｓＤｕ＋２０９となる。すなわち、ステップＳ６からステップＳ７に移る場合には、各読み出しブロックＲＢの同一データフレーム内において次の列の１行目のスクランブルデータが読み出され、読み出し順序がスクランブル処理時のデータ処理順序と異なるようになる。詳しくは、ステップＳ７に移ったときに読み出される次列の１行目のデータＤ２は、その１つ前に読み出されたデータＤ１よりも、スクランブル処理時において｛［（データブロックＤＢの行数）＋１］−（１つの読み出しブロックＲＢの行数）＝２０９｝バイト分だけ遅く処理されるデータである。そのため、スクランブル値ＳＣをスクランブル処理時の処理順序に合わせるように、上記データＤ１のときに使用したスクランブル値を生成多項式Φ（ｘ）に従って２０９バイト分シフトさせることで、正確にデスクランブル処理を行うことができる。
【００９４】
そこで、選択回路２８は、ステップＳ７において、すなわち各読み出しブロックの各データフレームにおける２列目以降の１行目のデータがＥＯＲ回路２１に入力されるときに、２０９シフト演算器２５からのスクランブル値ＳＣをＥＯＲ回路２１に出力させるための選択信号をセレクタ２７に出力する。これにより、ＥＯＲ回路２１には、１つ前に読み出されたスクランブルデータｓＤ７の時に使用されたスクランブル値Ｓ０・γ７から、上記生成多項式Φ（ｘ）に従って２０９バイト分シフトさせて得られるスクランブル値ＳＣ（＝Ｓ０・γ７・γ２０９）が入力される。続いて、ＥＯＲ回路２１は、デスクランブル回路２０により次に読み出されるスクランブルデータｓＤ２１６と、２０９シフト演算器２５からのスクランブル値ＳＣ（＝Ｓ０×γ２１６）との排他的論理和を取って、デスクランブルデータｄＤ２１６を生成する（ステップＳ３）。
【００９５】
次に、前述のデータフレームＤＦ０における１列目の処理と同様に、ステップＳ３〜Ｓ５が繰り返し実行され、デスクランブル回路２０によりスクランブルデータがｓＤ２１７→ｓＤ２１８→ｓＤ２１９→ｓＤ２２０→ｓＤ２２１→ｓＤ２２２→ｓＤ２２３の順に読み出されるため、デスクランブルデータが下記式に示すように生成される。
【００９６】
【数１３】
0005365683.tif 000014
以後同様に、ステップＳ３〜ステップＳ７が繰り返し実行され、第１読み出しブロックＲＢ１のデータフレームＤＦ０における各スクランブルデータに対するデスクランブル処理が実行される。そして、第１読み出しブロックＲＢ１のデータフレームＤＦ０における最終行最終列のスクランブルデータｓＤ１９５１に対するデスクランブルデータｄＤ１９５１（＝ｓＤ１９５１＾Ｓ０・γ１９５１）が生成されると、選択回路２８は、１つのデータフレーム分のデスクランブル処理が終了したと判断し（ステップＳ７においてＹＥＳ）、ステップＳ８に移る。
【００９７】
次に、選択回路２８は、デスクランブル処理の終了したデータフレームＤＦが最終データフレーム、すなわちデータフレームＤＦ３１であるかを判断する（ステップＳ８）。選択回路２８は、デスクランブル処理の終了したデータフレームがデータフレームＤＦ３１ではないと判断すると（ステップＳ８においてＮＯ）、次に読み出されるデータフレームＤＦが偶数データフレームであるかを判断する（ステップＳ９）。選択回路２８は、次データフレームＤＦが偶数データフレームであると判断すると（ステップＳ９においてＹＥＳ）、ステップＳ１０に移り、奇数データフレームであると判断すると（ステップＳ９においてＮＯ）、ステップＳ１１に移る。ここでは、次データフレームがデータフレームＤＦ１（奇数データフレーム）であるため、ステップＳ１１に移る。
【００９８】
続いて、各読み出しブロックＲＢの各奇数データフレームにおける１行１列目の先頭データが次に読み出されるため、選択回路２８は、奇数レジスタＲ３からのスクランブル値ＳＣ（ここでは、Ｓ０・γ１０８）をＥＯＲ回路２１に出力させるための選択信号を生成する（ステップＳ１１）。
【００９９】
次に、図１１に示すステップＳ１２において、選択回路２８は、次データフレームＤＦが最終奇数データフレーム、すなわちデータフレームＤＦ３１であるかを判断する。選択回路２８は、次データフレームＤＦが最終奇数データフレームＤＦ３１でないと判断すると（ステップＳ１２においてＮＯ）、ステップＳ３に戻る。このときのステップＳ３では、上記ステップ１１において生成された選択信号がセレクタ２７に入力されるため、ＥＯＲ回路２１には、スクランブル値ＳＣとして奇数レジスタＲ３に格納されているＳ０・γ１０８が入力される。また、ＥＯＲ回路２１には、第１読み出しブロックＲＢ１のデータフレームＤＦ１における１行１列目のスクランブルデータｓＤ１０８が入力される。ＥＯＲ回路２１は、データフレームＤＦ１のスクランブルデータｓＤ１０８とスクランブル値Ｓ０・γ１０８との排他的論理和を取ってデスクランブルデータｄＤ１０８（＝ｓＤ１０８＾Ｓ０・γ１０８）を生成する。
【０１００】
以後、データフレームＤＦ０のときと同様に、各読み出しブロックＲＢの各列の２行目以降のデータ（例えば、スクランブルデータｓＤ１０９）がＥＯＲ回路２１に入力されるときには、前回のスクランブル値を１バイト分シフトさせたスクランブル値ＳＣが使用されてデスクランブル処理が行われる。また、各読み出しブロックＲＢの各データフレームにおける２列目以降の各列の１行目のデータ（例えば、スクランブルデータｓＤ３２４）がＥＯＲ回路２１に入力されるときには、前回のスクランブル値ＳＣを２０９バイト分シフトさせたスクランブル値が使用されてデスクランブル処理が行われる。そして、図１０に示すステップＳ３〜ステップＳ７が繰り返し実行されて、第１読み出しブロックＲＢ１のデータフレームＤＦ１における最後のスクランブルデータｓＤ１８４３（図７参照）に対するデスクランブルデータｄＤ１８４３（＝ｓＤ１８４３＾Ｓ０・γ１８４３）が生成されると、ステップＳ６からステップＳ８に移り、さらにその後にステップＳ９に移る。このとき、次データフレームがデータフレームＤＦ２（偶数データフレーム）であるため（ステップＳ１０においてＹＥＳ）、ステップＳ１０に移る。
【０１０１】
続いて、各読み出しブロックＲＢの各偶数データフレームにおける１行１列目の先頭データが次に読み出されるため、選択回路２８は、偶数レジスタＲ２からのスクランブル値ＳＣ（ここでは、Ｓ０）をＥＯＲ回路２１に出力させるための選択信号を生成する（ステップＳ１０）。次に、図１１に示すステップＳ１３において、選択回路２８は、次データフレームが最終偶数データフレーム、すなわちデータフレームＤＦ３０であるかを判断する。選択回路２８は、次データフレームが最終偶数データフレームでないと判断すると（ステップＳ１３においてＮＯ）、ステップＳ３に戻る。以後は、データフレームＤＦ０及びデータフレームＤＦ１のときの処理と同様に、データフレームＤＦ２〜ＤＦ２９までデスクランブル処理が行われる。なお、同一の読み出しブロックＲＢ内では、偶数データフレーム（データフレームＤＦ０，ＤＦ２，…，ＤＦ３０）の各々で使用されるスクランブル値ＳＣの順序が同一である。また、同一の読み出しブロックＲＢ内では、奇数データフレーム（データフレームＤＦ１，ＤＦ３，…，ＤＦ３１）の各々で使用されるスクランブル値ＳＣの順序が同一である。
【０１０２】
次に、最終偶数データフレームＤＦ３０のデスクランブル処理が開始されると（ステップＳ１３においてＹＥＳ）、ステップＳ１４に移る。ステップＳ１４において、ステップＳ３〜ステップＳ５が繰り返し実行され、データフレームＤＦ３０における１列目のデスクランブル処理が終了すると、１列目の最後のデータｓＤ７のときに使用されたスクランブル値ＳＣが１シフト演算器２４を通じて偶数レジスタＲ２に格納される。従って、第１読み出しブロックＲＢ１のときには、偶数レジスタＲ２にスクランブル値ＳＣ（＝Ｓ０・γ７・γ１＝Ｓ０・γ８）が格納される。なお、第２読み出しブロックＲＢ２のときには、偶数レジスタＲ２にスクランブル値ＳＣ（＝Ｓ０・Ｓ１６）が格納される。ステップＳ１４以降は、選択回路２８において、２０９シフト演算器２５からのスクランブル値ＳＣ（ここでは、Ｓ０・γ２１６）をＥＯＲ回路２１に出力させるための選択信号が生成されて（ステップＳ１６）、ステップＳ３に戻る。以後、データフレームＤＦ０の２列目以降と同様に、データフレームＤＦ３１の２列目以降のデスクランブル処理が実行される。
【０１０３】
次に、最終奇数データフレームＤＦ３１のデスクランブル処理が開始されると（ステップＳ１２においてＹＥＳ）、ステップＳ１５に移る。ステップＳ１５において、ステップＳ３〜ステップＳ５が繰り返し実行され、データフレームＤＦ３１における１列目のデスクランブル処理が終了すると、１列目の最後のデータｓＤ１１５のときに使用されたスクランブル値ＳＣが１シフト演算器２４を通じて奇数レジスタＲ３に格納される。従って、第１読み出しブロックＲＢ１のときには、奇数レジスタＲ３にスクランブル値ＳＣ（＝Ｓ０・γ１１５・γ１＝Ｓ０・γ１１６）が格納される。なお、第２読み出しブロックＲＢ２のときには、奇数レジスタＲ３にスクランブル値ＳＣ（＝Ｓ０×Ｓ１２４）が格納される。データフレームＤＦ３１の２列目以降のデスクランブル処理については、データフレームＤＦ１のときと同様に実行される。そして、データフレームＤＦ３１の最終行最終列のスクランブルデータｓＤ１８４３に対するデスクランブルデータｄＤ１８４３（＝ｓＤ１８４３＾Ｓ０・γ１８４３）が生成されると（ステップＳ８においてＹＥＳ）、第１読み出しブロックＲＢ１（第ｒ読み出しブロック）のデスクランブル処理が終了する。
【０１０４】
第１読み出しブロックＲＢ１のデスクランブル処理が終了すると、第２読み出しブロックＲＢ２のデスクランブル処理が開始される。詳しくは、図１０に示すステップＳ２から処理が開始され、選択回路２８は、偶数レジスタＲ２からのスクランブル値ＳＣ（ここでは、Ｓ０・γ８）をＥＯＲ回路２１に出力させる選択信号をセレクタ２７に出力する。すなわち、選択回路２８は、各読み出しブロックの各偶数データフレームにおける１行１列目の先頭データがＥＯＲ回路２１に入力されるときに、偶数レジスタＲ２からのスクランブル値ＳＣをＥＯＲ回路２１に出力させるための選択信号をセレクタ２７に出力する。これにより、ＥＯＲ回路２１には、前回の第１読み出しブロックＲＢ１における最終偶数データフレームＤＦ３０の１列目の最終行のデータｓＤ７に使用したスクランブル値を、生成多項式Φ（ｘ）に従って１バイト分シフトさせて得られるスクランブル値ＳＣ（＝Ｓ０・γ８）が入力される。従って、ステップＳ３において、偶数レジスタＲ２からのスクランブル値Ｓ０・γ８と、第２読み出しブロックＲＢ２のデータフレームＤＦ０における１行１列目の先頭データｓＤ８との排他的論理和をＥＯＲ回路２１により取ることで、デスクランブルデータｄＤ８（＝ｓＤ８＾Ｓ０・γ８）が生成される。なお、奇数データフレームの場合についても、奇数レジスタＲ３にはスクランブル値としてＳ０・γ１１６、すなわち第２読み出しブロックＲＢ２の奇数データフレームにおける１行１列目の先頭データｓＤ１１６に対するスクランブル値が格納されているため、上記先頭データｓＤ１１６についても正確にデスクランブル処理が施される。
【０１０５】
以後同様に、第２〜第１３読み出しブロックＲＢ２〜ＲＢ１３におけるデスクランブル処理が図１０及び図１１のフローチャートに従って実行される。
次に、第１４読み出しブロックＲＢ１４におけるデスクランブル処理について説明する。図７に示すデータフレームＤＦ０，ＤＦ１を例に説明すると、第１〜第１３読み出しブロックＲＢ１〜ＲＢ１３では、１〜１０列目がデータフレームＤＦ０になるとともに、１１〜１９列目がデータフレームＤＦ１になる。なお、第１５〜第２７読み出しブロックＲＢ１５〜ＲＢ２７では、１〜９列目がデータフレームＤＦ０になるとともに、１０〜１９列目がデータフレームＤＦ０になる。ところが、第１４読み出しブロックＲＢ１４では、１０列目が、データフレームＤＦ０（偶数データフレーム）の最終列になるとともに、データフレームＤＦ１（奇数データフレーム）の１列目になる。また、データフレームＤＦ１については、１０列目の５行目から該データフレームＤＦ１におけるスクランブル処理時の先頭データｓＤ０となる。このとき、第１３読み出しブロックＲＢ１３における最終奇数データフレームのデスクランブル処理時に奇数レジスタＲ３に格納されるスクランブル値ＳＣは、Ｓ０・γ２１２である。そのため、第１４読み出しブロックＲＢ１４のデータフレームＤＦ１の先頭データｓＤ０がＥＯＲ回路２１に入力されるときに、図１０及び図１１のフローチャートに従って奇数レジスタＲ３からスクランブル値Ｓ０・γ２１２がＥＯＲ回路２１に入力されてしまうと、正確にデスクランブル処理を行うことができない。
【０１０６】
そこで、本実施形態では、第１４読み出しブロックＲＢ１４における各偶数データフレームの最終列及び各奇数データフレームの１列目のデスクランブル処理を図１２のフローチャートに従って実行するようにした。
【０１０７】
図１２に示すステップＳ２０において、第１４読み出しブロックＲＢ１４の偶数データフレーム（ここでは、データフレームＤＦ０）における最終列の１列前の列（ここでは、９列目）における最後のデータｓＤ１８３９に対するデスクランブルデータｄＤ１８３９（＝ｓＤ１８３９＾Ｓ０・γ１８３９）が生成されると、ステップＳ２１に移る。ステップＳ２１において、選択回路２８は、２０９シフト演算器２５からのスクランブル値ＳＣ（＝Ｓ０・γ１８３９・γ２０９＝Ｓ０・γ２０４８）をＦＦ回路２３に出力させる選択信号をセレクタ２７に出力する。
【０１０８】
次に、ＥＯＲ回路２１は、デスクランブル回路２０により次に読み出されるスクランブルデータ（ここでは、スクランブルデータｓＤ２０４８）と、２０９シフト演算器２５からのスクランブル値ＳＣ（ここでは、Ｓ０・γ２０４８）との排他的論理和を取って、デスクランブルデータｄＤ２０４８を生成する（ステップＳ２２）。
【０１０９】
次に、ステップＳ２３において、選択回路２８は、第１４読み出しブロックＲＢ１４の偶数データフレームにおける最終列のデスクランブル処理が終了したかを判断する。選択回路２８は、偶数データフレームのデスクランブル処理が終了していないと判断すると（ステップＳ２３においてＮＯ）、ステップＳ２４に移る。続いて、偶数データフレームのデスクランブル処理が終了するまで、図１０に示すステップＳ３〜Ｓ５と同様に、ステップＳ２２〜Ｓ２４が繰り返し実行される。そして、下記式に示すように、第１４読み出しブロックＲＢ１４の各偶数データフレームにおける最終データｓＤ２０５１に対するデスクランブルデータが生成されると（ステップＳ２３においてＹＥＳ）、ステップＳ２５に移る。
【０１１０】
【数１４】
0005365683.tif 000015
次に、選択回路２８は、初期値レジスタＲ１からのスクランブル値ＳＣ、すなわち初期値Ｓ０をＥＯＲ回路２１に出力させるための選択信号をセレクタ２７に出力する（ステップＳ２５）。続いて、ＥＯＲ回路２１は、デスクランブル回路２０により読み出される各奇数データフレームにおけるスクランブル処理時の先頭データｓＤ０と、初期値レジスタＲ１からの初期値Ｓ０との排他的論理和を取って、デスクランブルデータｄＤ０（＝ｓＤ０＾Ｓ０）を生成する（ステップＳ２６）。
【０１１１】
次に、ステップＳ２７において、選択回路２８は、第１４読み出しブロックＲＢ１４の各奇数データフレームにおける１列目のデスクランブル処理が終了したかを判断する。選択回路２８は、奇数データフレームの１列目のデスクランブル処理が終了していないと判断すると（ステップＳ２７においてＮＯ）、ステップＳ２８に移る。続いて、第１４読み出しブロックＲＢ１４の各奇数データフレームにおける１列目のデスクランブル処理が終了するまで、図１０に示すステップＳ３〜Ｓ５と同様に、ステップＳ２６〜Ｓ２８が繰り返し実行される。なお、第１４読み出しブロックＲＢ１４の各奇数データフレームにおける２列目以降は、図１０に示すステップＳ３〜Ｓ７が繰り返し実行されることにより、デスクランブル処理が施される。
【０１１２】
そして、第１４読み出しブロックＲＢ１４の各奇数データフレームにおける１列目の最終行のスクランブルデータｓＤ４に対するデスクランブルデータｄＤ４が生成されると（ステップＳ２７においてＹＥＳ）、ステップＳ２９に移る。このステップＳ２９おいて、現在のデータフレームＤＦが最終奇数データフレーム（データフレームＤＦ３１）であると、スクランブルデータｓＤ４に使用したスクランブル値ＳＣが１シフト演算器２４を通じて奇数レジスタＲ３に格納される。すなわち、第１４読み出しブロックＲＢ１４における最終奇数データフレームのデスクランブル処理時に奇数レジスタＲ３に格納されるスクランブル値ＳＣは、Ｓ０・γ４・γ１＝Ｓ０・γ５となる。
【０１１３】
以後、第１５〜第２７読み出しブロックＲＢ１５〜ＲＢ２７におけるデスクランブル処理が図１０及び図１１のフローチャートに従って実行される。このように図１０〜図１２のフローチャートに従って、第１〜第２７読み出しブロックＲＢ１〜ＲＢ２７におけるデスクランブル処理が終了すると、下記式で示すようにデスクランブルデータｄＤｕを生成することができる。
【０１１４】
【数１５】
0005365683.tif 000016
次に、ＥＤＣシンドローム生成回路３０におけるＥＤＣシンドローム生成方法を図１３及び図１４に従って説明する。このＥＤＣシンドローム生成回路３０には、上記デスクランブル回路２０からデスクランブルデータｄＤｕがデスクランブル処理順に入力される。すなわち、ＥＤＣシンドローム生成回路３０には、デスクランブルデータｄＤｕが各読み出しブロックＲＢ１〜ＲＢ２７毎に入力される。具体的には、第１読み出しブロックＲＢ１の偶数データフレームでは、デスクランブルデータがバイトデータとして、ｄＤ０→ｄＤ１→…→ｄＤ７→ｄＤ２１６→ｄＤ２１７→…→ｄＤ２２３→ｄＤ４３２→…→ｄＤ１９５１という順にＥＤＣシンドローム生成回路３０に入力される。また、第１読み出しブロックＲＢ１の奇数データフレームでは、デスクランブルデータがバイトデータとして、ｄＤ１０８→ｄＤ１０９→…ｄＤ１１５→ｄＤ３２４→ｄＤ３２５→…→ｄＤ３３１→ｄＤ５４０→…→ｄＤ１８４３という順にＥＤＣシンドローム生成回路３０に入力される。図１３に、ＥＤＣシンドローム生成回路３０に入力されるバイトデータの配置を、該バイトデータを多項式表現Ｘｎしたときの次数ｎで示した。なお、以下の説明では、バイトデータを多項式で表現する。また、同一読み出しブロックＲＢ内では、偶数データフレームの演算方法はそれぞれ共通しているため、ここではデータフレームＤＦ０を例にして説明する。また、同一読み出しブロックＲＢ内では、奇数データフレームの演算方法はそれぞれ共通しているため、ここではデータフレームＤＦ１を例にして説明する。
【０１１５】
図１４に示すステップＳ３０の初期値設定において、選択回路３９は、セレクタ３２からシフト演算値Ｅｓが出力されないようにする選択信号をセレクタ３２に出力する。
続いて、ステップＳ３１において、デスクランブル回路２０からＥＯＲ回路３１にバイトデータＸｎ（ここでは、Ｘ２０５１）が入力される。このとき、セレクタ３２からＥＯＲ回路３１にシフト演算値Ｅｓが入力されないため、ＥＯＲ回路３１は、バイトデータＸ２０５１をＥＤＣ演算値Ｅ１（１）としてＦＦ回路３３を通じて各種演算器３４〜３７に出力する。
【０１１６】
次に、ステップＳ３２において、選択回路３９は、入力されるクロック信号ＣＬＫのパルス数に基づいて、各読み出しブロックＲＢにおける１列分（例えば、Ｘ２０５１〜Ｘ２０４４）のＥＤＣ演算処理が終了したかを判断する。選択回路３９は、１列分のＥＤＣ演算処理が終了していないと判断すると（ステップＳ３２においてＮＯ）、ステップ３３に移る。このとき、上記ステップＳ３１においてＥＯＲ回路３１に入力されるバイトデータをＸｎとすると、次に入力されるバイトデータがＸｎ−１となる。すなわち、ステップＳ３２からステップＳ３３に移る場合には、各読み出しブロックＲＢにおける列方向に次のバイトデータが入力され、データ入力順序がＥＤＣ付加時のデータ処理順序と同一になる。
【０１１７】
そこで、選択回路３９は、ステップＳ３３において、すなわち各読み出しブロックＲＢにおける各列の２行目以降のバイトデータがＥＯＲ回路３１に入力されるときに、１シフト演算器２４からのスクランブル値ＳＣをＥＯＲ回路３１に出力させるための選択信号をセレクタ３２に出力する。これにより、ＥＯＲ回路３１には、１つ前に入力されたバイトデータＸ２０５１のときに算出されたＥＤＣ演算値Ｅ１（１）に対して、１次のベクターβ１による重み付けをして得られるシフト演算値Ｅｓ（＝β１・Ｅ１（１））が入力される。そして、ＥＯＲ回路３１は、次に入力されるバイトデータＸ２０５０と、１シフト演算器３４からのシフト演算値Ｅｓ（＝β１・Ｅ１（１））の下位８ビットとの排他的論理和を取って、新たなＥＤＣ演算値Ｅ１（２）を算出する。なお、以下の説明において、ＥＯＲ回路３１の排他的論理和演算におけるシフト演算値Ｅｓの下位８ビットを、単に「シフト演算値Ｅｓ」とするが、以後も同様に、ＥＯＲ回路３１では、バイトデータＸｎとシフト演算値Ｅｓの下位８ビットとの排他的論理和が取られる。
【０１１８】
続いて、１列分のＥＤＣ演算処理が終了するまで、これらステップＳ３１〜Ｓ３３が繰り返し実行される。なお、本実施形態では、以後、バイトデータがＸ２０４９→Ｘ２０４８→…→Ｘ２０４５→Ｘ２０４４の順にＥＯＲ回路３１に入力されるため、ＥＤＣ演算値Ｅｒ（ｃ）が下記式に示す順番で算出される。
【０１１９】
【数１６】
0005365683.tif 000017
このように、第１読み出しブロックＲＢ１のデータフレームＤＦ０における１列目の最終行のバイトデータＸ２０４４に対するＥＤＣ演算処理が終了すると（ステップＳ３２においてＹＥＳ）、ステップＳ３４に移る。次に、選択回路３９は、２０９シフト演算器３５からのシフト演算値Ｅｓ（＝β２０９・Ｅ１（８））をＥＯＲ回路３１に出力させるための選択信号を生成する（ステップＳ３４）。続いて、ステップＳ３５において、選択回路３９は、各読み出しブロックＲＢ１における１つのデータフレームＤＦ分のＥＤＣ演算処理が終了したかを判断する。選択回路３９は、１つのデータフレームＤＦ分のＥＤＣ演算処理が終了していないと判断すると（ステップＳ３５においてＮＯ）、ステップＳ３６に移る。続いて、選択回路３９は、次の列が各データフレームの最終列（例えば、第１読み出しブロックＲＢ１のデータフレームＤＦ０の場合には、次列が１０列目）であるかを判断する。選択回路３９は、次列が最終列でないと判断すると（ステップＳ３６においてＮＯ）、ステップＳ３１に戻る。続いて、ＥＯＲ回路３１は、次に入力されるバイトデータＸ１８３５と、２０９シフト演算器３５からのシフト演算値Ｅｓ（＝β２０９・Ｅ１（８））との排他的論理和を取って、下記式に示すＥＤＣ演算値Ｅｒ（９）を算出する。
【０１２０】
【数１７】
0005365683.tif 000018
このように各読み出しブロックの各データフレームＤＦにおける１列目及び最終列を除く各列の１行目のバイトデータＸｎが入力されたときには、その前に入力されたバイトデータＸｎ＋２０９のときに算出されたＥＤＣ演算値Ｅｒ（ｃ）に対して、２０９シフト演算器３５を通じて２０９次のベクターβ２０９による重み付けを行うようになっている。ここで、２０９次のベクターβ２０９による重み付けする理由について説明する。例えば、第１読み出しブロックＲＢ１のデータフレームＤＦ０の２列目における１行目のデータＸ１８３５は、同１列目の最終行のデータＸ２０４４よりも、ＥＤＣ付加時において（データブロックＤＢにおける全バイト数）＋１−（１つの読み出しブロックの列方向におけるバイト数）＝２０９バイト分だけ遅く処理されるデータである。すなわち、バイトデータＸ２０５１〜Ｘ２０４４は、ＥＤＣ付加時と同様のデータ処理順序でＥＤＣ演算した場合には、バイトデータＸ１８３５が入力されるまでに、１次のベクターβ１による重み付けが２０９回行われる。そこで、本実施形態では、前列の最終行のデータのときに算出されたＥＤＣ演算値Ｅｒ（ｃ）に対して、２０９バイト分のベクターβ（ベクターβ２０９）による重み付けをすることで、デスクランブル処理を行うようにした。
【０１２１】
以後同様に、ステップＳ３１〜Ｓ３６が繰り返し実行され、第１読み出しブロックＲＢ１のデータフレームＤＦ０における９列目の最後のバイトデータＸ３１６（７２クロック目）に対するＥＤＣ演算処理が終了すると、次列が最終列（１０列目）になるため（ステップＳ３６においてＹＥＳ）、ステップＳ３７に移る。続いて、選択回路３９は、ＥＯＲ回路３８からのシフト演算値Ｅｓ（＝β２０９・Ｅｒ（ｃ）＾ＥＤＣｓ）をＥＯＲ回路３１に出力させるための選択信号をセレクタ３２に出力する。但し、ここではＥＤＣメモリ部４０からＥＯＲ回路３８に入力されるＥＤＣシンドロームの中間値ＥＤＣｓが「０」であるため、ＥＯＲ回路３８からのシフト演算値Ｅｓはβ２０９・Ｅ１（７２）となる。従って、ＥＯＲ回路３１は、ステップＳ３１において、次に入力されるバイトデータＸ１０７と、ＥＯＲ回路３８からのシフト演算値Ｅｓ（＝β２０９・Ｅ１（７２））との排他的論理和を取って、下記式に示すＥＤＣ演算値Ｅ１（７３）を算出する。
【０１２２】
【数１８】
0005365683.tif 000019
以下、ステップＳ３１〜Ｓ３３が繰り返し実行され、下記式に示すように、第１読み出しブロックＲＢ１のデータフレームＤＦ０における最終列の最終行のバイトデータＸ１００（８０クロック目）に対するＥＤＣ演算値Ｅ１（８０）が算出されると（ステップＳ３５においてＹＥＳ）、ステップＳ３８に移る。
【０１２３】
【数１９】
0005365683.tif 000020
続いて、選択回路３９は、ステップＳ３８において、現在のデータフレームが第１４読み出しブロックＲＢ１４の偶数データフレームであるか判断し、ステップＳ３９において、第２７読み出しブロックＲＢ２７の偶数データフレームであるか判断し、ステップＳ４０において、第２７読み出しブロックＲＢ２７の奇数データフレームであるか判断する。ここでは、現在ＥＤＣ演算処理を行っているデータフレームＤＦが第１読み出しブロックＲＢ１のデータフレームＤＦ０（偶数データフレーム）であるため（ステップＳ３８〜Ｓ４０において全てＮＯ）、ステップＳ４１に移る。次に、上記ステップＳ３４において算出されたＥＤＣ演算値Ｅｒ（ｃ）（ここでは、Ｅ１（８０））に対して、１シフト演算器３４を通じてベクターβ１による重み付けが行われ、ＥＤＣシンドロームの中間値ＥＤＣｓ（＝β１・Ｅ１（８０））が算出される（ステップＳ４１）。続いて、上記算出された中間値ＥＤＣｓがデータフレームＤＦ０におけるＥＤＣシンドロームの中間結果としてＥＤＣメモリ部４０に格納される（ステップＳ４２）。
【０１２４】
次に、ステップＳ４３において、選択回路３９は、現在ＥＤＣ演算処理を行っているデータフレームＤＦが最終読み出しブロックＲＢ２７の最終データフレームＤＦ３１であるかを判断する。ここでは、現在処理しているのは第１読み出しブロックＲＢ１のデータフレームＤＦ０であるため、ステップＳ３０に戻り、次のデータフレームＤＦ１のＥＤＣ演算処理に移る。
【０１２５】
奇数データフレームであるデータフレームＤＦ１のＥＤＣ演算処理についても、基本的には、前述したデータフレームＤＦ０（偶数データフレーム）におけるＥＤＣ演算処理と同様に行われる。すなわち、まず各読み出しブロックＲＢにおけるデータフレームＤＦ１の最初に入力されるバイトデータＸ１９４３が１クロック目のＥＤＣ演算値Ｅ１（１）となる。次いで、ＥＯＲ回路３１は、各読み出しブロックＲＢの各データフレームにおける各列の２行目以降のバイトデータＸｎがＥＯＲ回路３１に入力されるときには、直前に入力されたバイトデータＸｎ＋１のときに算出されたＥＤＣ演算値Ｅｒ（ｃ）に対し１次のベクターβ１による重み付けをして得られるシフト演算値ＥｓがＥＯＲ回路３１に入力される。また、各読み出しブロックＲＢの各データフレームＤＦにおける１列目及び最終列を除く各列の１行目のバイトデータＸｎがＥＯＲ回路３１に入力されるときには、直前に入力されたバイトデータＸｎ＋２０９のときに算出されたＥＤＣ演算値Ｅｒ（ｃ）に対し２０９次のベクターβ２０９による重み付けをして得られるシフト演算値ＥｓがＥＯＲ回路３１に入力される。これらのＥＤＣ演算処理によって、下記式に示すＥＤＣ演算値Ｅｒ（ｃ）が順番に算出される。
【０１２６】
【数２０】
0005365683.tif 000021
このように、第１読み出しブロックＲＢ１のデータフレームＤＦ１における最終列の最終行のバイトデータＸ２０８（７２クロック目）に対するＥＤＣ演算値Ｅ１（７２）が算出されると、該ＥＤＣ演算値Ｅ１（７２）に対して、１シフト演算器３４を通じてベクターβ１による重み付けが行われ、中間値ＥＤＣｓが生成される（ステップＳ４１）。そして、上記生成された中間値ＥＤＣｓ（＝β１・Ｅ１（７２））がデータフレームＤＦ１におけるＥＤＣシンドロームの中間結果としてＥＤＣメモリ部４０に格納される（ステップＳ４２）。
【０１２７】
以後同様に、ステップＳ３０〜Ｓ４３が繰り返し実行され、第１読み出しブロックＲＢ１内のデータフレームＤＦ２〜ＤＦ３１のＥＤＣ演算処理が実行される。
次に、第２読み出しブロックＲＢ２のデータフレームＤＦ０におけるＥＤＣ演算処理について説明する。１クロック目から７２クロック目までは、ステップＳ３０〜Ｓ３６が繰り返し実行され、下記式に示すＥＤＣ演算値Ｅ２（１）〜Ｅ２（７２）が算出される。
【０１２８】
【数２１】
0005365683.tif 000022
最終列、すなわち１０列目の１列前の９列目の最後のバイトデータＸ３０８のＥＤＣ演算処理が終了すると、ステップＳ３７において、選択回路３９は、ＥＯＲ回路３８からのシフト演算値Ｅｓ（＝β２０９・Ｅ２（７２）＾ＥＤＣｓ）をＥＯＲ回路３１に出力させる選択信号をセレクタ３２に出力する。このとき、ＥＤＣメモリ部４０からＥＯＲ回路３８に入力される中間値ＥＤＣｓは、前回の第１読み出しブロックＲＢ１における同一のデータフレームＤＦ０のＥＤＣ演算処理時にＥＤＣメモリ部４０に格納した値（＝β１・Ｅ１（８０））である。従って、第２読み出しブロックＲＢ２のデータフレームＤＦ０における７３クロック目のＥＤＣ演算値Ｅ２（７３）は、下記式により算出される。
【０１２９】
【数２２】
0005365683.tif 000023
以下、ステップＳ３１〜Ｓ３３が繰り返し実行され、下記式に示すように、第２読み出しブロックＲＢ２のデータフレームＤＦ０における最終行最終列のバイトデータＸ９２（８０クロック目）のＥＤＣ演算値Ｅ２（８０）が算出されると、ステップＳ４１に移る。
【０１３０】
【数２３】
0005365683.tif 000024
次に、ステップＳ４１において、上記算出されたＥＤＣ演算値Ｅ２（８０）に対して、１シフト演算器３４を通じてベクターβ１による重み付けが行われ、中間値ＥＤＣｓが算出される。そして、上記算出された中間値ＥＤＣｓ（＝β１・Ｅ２（８０））がデータフレームＤＦ０の新たな中間結果としてＥＤＣメモリ部４０に格納される（ステップＳ４２）。
【０１３１】
以下同様に、ステップＳ３０〜Ｓ４３が繰り返し実行され、第２〜第１３読み出しブロックＲＢ２〜ＲＢ１３内の各データフレームＤＦ０〜ＤＦ３１のＥＤＣ演算処理が実行される。
【０１３２】
次に、第１４読み出しブロックＲＢ１４の偶数データフレームにおいて、７６クロック目に入力される入力多項式の次数が最も低いバイトデータＸ０に対するＥＤＣ演算値Ｅ１４（７６）が下記式のように算出されると（ステップＳ３８においてＹＥＳ）、ステップＳ４４に移る。
【０１３３】
【数２４】
0005365683.tif 000025
なおここで、偶数データフレームＤＦ０において、入力多項式の次数が最も低いバイトデータＸ０とは、ＥＤＣ付加時と同様のデータ処理順序でＥＤＣ演算をした場合に、該データフレームＤＦ０内で最も遅く入力されるデータである。
【０１３４】
次に、ステップＳ４４において、上記算出されたＥＤＣ演算値Ｅ１４（７６）に対し、−２１１シフト演算器３７を通じて−２１１バイト分のベクターβ（ベクターβ−２１１）による重み付けをする第１補正演算を行って、ＥＤＣシンドロームの中間値ＥＤＣｓ（＝β−２１１・Ｅ１４（７６））を算出する。続いて、上記算出された中間値ＥＤＣｓが新たなデータフレームＤＦ０の新たな中間結果としてＥＤＣメモリ部４０に格納される（ステップＳ４２）。
【０１３５】
以下同様に、ステップＳ３０〜Ｓ４４が繰り返し実行され、第１４〜第２６読み出しブロックＲＢ１４〜ＲＢ２６内の各データフレームＤＦ０〜ＤＦ３１のＥＤＣ演算処理が実行される。
【０１３６】
次に、第２７読み出しブロックＲＢ２７の偶数データフレーム（例えば、データフレームＤＦ０）における最終行最終列のバイトデータＸ１０８（７２クロック目）に対するＥＤＣ演算値Ｅ２７（７２）が下記式のように算出されると（ステップＳ３９においてＹＥＳ）、ステップＳ４５に移る。
【０１３７】
【数２５】
0005365683.tif 000026
次に、ステップＳ４５において、上記算出されたＥＤＣ演算値Ｅ２７（７２）に対し、１０８シフト演算器３６を通じて１０８バイト分のベクターβ１（ベクターβ１０８）による重み付けをする第２補正演算を行って、下記（１）式に示すデータフレームＤＦ０における最終的なＥＤＣシンドロームＥＤＣＳ（＝β１０８・Ｅ２７（７２））を算出する。
【０１３８】
【数２６】
0005365683.tif 000027
そして、上記算出されたＥＤＣシンドロームＥＤＣＳがＥＤＣメモリ部４０に格納される（ステップＳ４２）。
【０１３９】
ここで、第１補正演算と第２補正演算について説明する。まず、第２補正演算から説明する。
本実施形態では、第２７読み出しブロックＲＢ２７の偶数データフレームにおいて最後に入力されるバイトデータはＸ１０８である。このバイトデータＸ１０８は、ＥＤＣ付加時と同様のデータ処理順序でＥＤＣ演算した場合において、その演算処理において最後に入力されるバイトデータＸ０（最終バイトデータ）よりも、１０８バイト分だけ早く入力されるデータである。換言すると、バイトデータＸ１０８は、ＥＤＣ付加時と同様のデータ処理順序でＥＤＣ演算した場合には、最後のバイトデータＸ０が入力されるまでに、１次のベクターβ１による重み付けが１０８回行われるデータである。ところが、本実施形態では、偶数データフレームにおいてバイトデータＸ１０８が最後に入力されるため、そのバイトデータＸ１０８が入力されたときに算出されるＥＤＣ演算値Ｅ２７（７２）では、バイトデータＸ１０８に対するベクターβ１による重み付けが一度も行われていない。そこで、本実施形態では、第２７読み出しブロックＲＢ２７の各偶数データフレームにおける最終行最終列のデータＸ１０８が入力されたときのＥＤＣ演算値Ｅ２６（７２）に対し、１０８バイト分のベクターβ（ベクターβ１０８）による重み付けを行うようにした。
【０１４０】
次に、第１補正演算について説明する。本実施形態では、第１４読み出しブロックＲＢ１４の偶数データフレームにおける最後のバイトデータＸ０が入力されたときに算出されるＥＤＣ演算値Ｅ１４（７６）は、下記式のようになる。
【０１４１】
【数２７】
0005365683.tif 000028
上記式から明らかなように、上記ＥＤＣ演算値Ｅ１４（７６）が算出されるまでに入力されたバイトデータについては、上記ＥＤＣ演算値Ｅ１４（７６）が算出された時点で所望の次数のベクターβによって重み付けが行われている。例えば、偶数データフレームにおいて最初に入力されるバイトデータＸ２０５１は、２０５１次のベクターβ２０５１による重み付けが行われている。しかしながら、本実施形態では、第１４読み出しブロックＲＢ１４以降の第１５〜第２７読み出しブロックＲＢ１５〜ＲＢ２７におけるＥＤＣ演算において、上記ＥＤＣ演算値Ｅ１４（７６）に対し、１次のベクターβ１による重み付けが１０３回行われる。すなわち、上記ＥＤＣ演算値Ｅ１４（７６）に対し、｛（残りの読み出しブロックＲＢにおける列方向の全バイト数）−１｝回のベクターβ１による重み付けが行われる。さらに、上述した第２補正演算により、上記ＥＤＣ演算値Ｅ１４（７６）に対して１０８次のベクターβ１０８による重み付けが行われる。そのため、第１５〜第２７読み出しブロックＲＢ１５〜ＲＢ２７におけるＥＤＣ演算及び第２補正演算が終了すると、上記ＥＤＣ演算値Ｅ１４（７６）が算出されるまでに入力されたバイトデータに対し、ベクターβ１による重み付けがＥＤＣ付加時と同様の処理順序でＥＤＣ演算した場合よりも２１１回多く行われることになる。そこで、本実施形態では、第１４読み出しブロックＲＢ１４の各偶数データフレームにおける最後のデータＸ０（最終デスクランブルデータ）が入力されたときのＥＤＣ演算値Ｅ１４（７６）に対し、−２１１バイト分のベクターβ（ベクターβ−２１１）による重み付けを行うようにした。
【０１４２】
なお、奇数データフレームについては、前述した第１読み出しブロックＲＢ１におけるデータフレームＤＦ１のＥＤＣ演算処理と同様に、すなわちステップＳ４４やステップＳ４５のような特殊な補正演算（第１及び第２補正演算）を施すことなく、上記（１）式と同様のＥＤＣシンドロームを生成することができる。従って、データフレームＤＦ１（奇数データフレーム）の場合には、第２７読み出しブロックＲＢ２７における最終列最終行のバイトデータＸ０のＥＤＣ演算値Ｅ２７（８０）が算出されると（ステップＳ４０においてＹＥＳ）、上記算出されたＥＤＣ演算値Ｅ２７（８０）がそのままＥＤＣシンドロームとしてＥＤＣメモリ部４０に格納される（ステップＳ４２）。
【０１４３】
以下同様に、ステップＳ３０〜Ｓ４５が繰り返し実行され、各データフレームＤＦ０〜ＤＦ３１の最終的なＥＤＣシンドロームＥＤＣＳが生成されて、該ＥＤＣシンドロームＥＤＣＳがＥＤＣメモリ部４０に格納される。ＥＤＣメモリ部４０では、シンドローム保存用に選択されているバッファメモリに全データフレームＤＦ０〜ＤＦ３１の最終的なＥＤＣシンドロームＥＤＣＳが格納されると、バッファメモリＭ７及びバッファメモリＭ８におけるシンドローム保存用とシンドローム出力用の選択が切り替えられる。これにより、シンドローム保存用からシンドローム出力用に切り替わったバッファメモリには、全データフレームＤＦ０〜ＤＦ３１のＥＤＣシンドロームＥＤＣＳが格納されることになる。そして、シンドローム出力用に切り替えられたバッファメモリは、全データフレームＤＦ０〜ＤＦ３１のＥＤＣシンドロームＥＤＣＳを外部バッファメモリ６に格納する。
【０１４４】
１つのパリティ付加ブロックＰＢ分のデスクランブルデータと、ＬＤＣシンドロームと、ＢＩＳシンドロームと、ＥＤＣシンドロームとが外部バッファメモリ６に格納されると、誤り訂正回路５０は、外部バッファメモリ６からＬＤＣシンドローム及びＢＩＳシンドロームを読み出す。誤り訂正回路５０内の訂正回路５１は、読み出したＬＤＣシンドローム及びＢＩＳシンドロームに基づいて、ユークリッド互除演算により誤り位置多項式と数値多項式とを算出する。次に、訂正回路５１は、算出した誤り位置多項式と数値多項式とに基づいて、誤り位置及び誤り数値を算出する。続いて、訂正回路５１は、算出した誤り位置及び誤り数値に基づいて、外部バッファメモリ６に格納されたデスクランブル処理済のデータフレームＤＦに対して誤り訂正処理を行うとともに、算出した誤り位置及び誤り数値をＥＤＣ補正回路５２に出力する。
【０１４５】
次に、ＥＤＣ補正回路５２は、訂正回路５１から入力される誤り位置及び誤り数値に基づいて、外部バッファメモリ６から補正メモリ部５３に格納されるＥＤＣシンドロームを補正する。そして、ＥＤＣチェック回路５４は、補正メモリ部５３から補正後のＥＤＣシンドロームを読み出し、誤り訂正が正常に終了されたかをチェックする。ＥＤＣチェック回路５４において誤り訂正が正常に終了されたことが確認されると、コントローラ１０は、マイクロプロセッサ８の命令に基づいて、外部バッファメモリ６に格納された誤り訂正後のデータを、インターフェース回路６０を介してコンピュータ２に出力する。
【０１４６】
以上説明した本実施形態によれば、以下の効果を奏することができる。
（１）内蔵メモリ部１２に対して、ＬＤＣシンドローム生成回路１３、ＢＩＳシンドローム生成回路１６及びデスクランブル回路２０がそれぞれアクセスし、各回路１３，１６，２０は、生成したＬＤＣシンドローム、ＢＩＳシンドローム及びデスクランブルデータｄＤｕを外部バッファメモリ６に格納するようにした。これにより、図４１に示すコントローラ１１０よりも外部バッファメモリ６へのアクセス量を減らすことができる。
【０１４７】
詳しくは、図４１に示すコントローラ１１０では、バッファメモリ１２０に対して、（ａ）復調回路１１１からのＥＣＣクラスタＥＣＣｃの入力、（ｂ）ＬＤＣシンドローム生成回路１１２によるＬＤＣクラスタＬＤＣｃの読み出し、（ｃ）ＢＩＳシンドローム生成回路１１３によるＢＩＳクラスタＢＩＳｃの読み出し、（ｄ）誤り訂正回路からの誤り訂正処理、（ｅ）デスクランブル回路１１５による誤り訂正処理済のＬＤＣクラスタＬＤＣｃの読み出し、という５種類のアクセスがあった。すなわち、ＥＣＣクラスタＥＣＣｃ（７６８８０バイト）の３個分に略相当するデータ量（合計２１９２９９バイト）のバッファメモリ１２０へのアクセスがあった。
【０１４８】
これに対して、本実施形態のコントローラ１０では、外部バッファメモリ６に対して、（Ａ）デスクランブルデータｄＤｕ（６５５３６バイト）の入力、（Ｂ）ＬＤＣシンドローム（９７２８バイト）の入力、（Ｃ）ＢＩＳシンドローム（１４８８バイト）の入力、（Ｄ）ＥＤＣシンドローム（１２８バイト）の入力、（Ｅ）ＬＤＣシンドロームの読み出し、（Ｆ）ＢＩＳシンドロームの読み出し、（Ｇ）誤り訂正後のデスクランブルデータの読み出し、という７種類のアクセスがある。アクセスの種類は多いものの、各々のアクセスにおけるデータ量が少ない。すなわち、全体としては、ＥＣＣクラスタＥＣＣｃの２個分に略相当するデータ量（合計１５２２７２バイト）が外部バッファメモリ６に対してアクセスされる。従って、外部バッファメモリ６への全体のアクセス量が従来のコントローラ１１０に比べて大幅に低減される。これにより、外部バッファメモリ６の利用帯域を減らすことができるため、転送速度の高速化に対応させやすくなる。これらにより、外部バッファメモリ６として、安価で大容量・低速なメモリを使用しても、所望の速度によるデータ転送を実現することができる。
【０１４９】
さらに、このときＬＤＣシンドローム生成回路１３及びデスクランブル回路２０は、内蔵のメモリ（内蔵メモリ部１２）に対しては高速アクセスが可能という性能があるため、第１及び第２デインターリーブ処理を施しながらＬＤＣクラスタを読み出しても、効率良く高速に内蔵メモリ部１２から各データを読み出すことができる。これにより、コントローラ１１０よりも誤り訂正処理に要する時間を短縮することができる。
【０１５０】
（２）内蔵メモリ部１２に、１つのＥＣＣクラスタＥＣＣｃが複数個に分割された分割ＥＣＣクラスタＤＥＣＣを格納するようにした。また、デスクランブル回路２０に、分割ＥＣＣクラスタＤＥＣＣ内のデータブロックＤＢ毎に入力されるデータに対して正確にデスクランブル処理が実行できるように、１シフト演算器２４及び２０９シフト演算器２５を設けるようにした。これらにより、内蔵メモリ部１２の各バッファメモリＭ１，Ｍ２を、１つの分割ＥＣＣクラスタＤＥＣＣ（２４８０バイト）を格納できるメモリ容量とすることができる。従って、図４３に示すコントローラ１３０のように、内蔵の大容量（７６８８０バイト）のメモリを設ける必要がなくなる。そのため、内蔵メモリ部のメモリ容量の増大によって発生する回路規模の増大を抑制することができる。
【０１５１】
また、デスクランブル回路２０によるデスクランブル処理を、ＬＤＣシンドローム生成回路１３によるＬＤＣシンドローム生成及びＢＩＳシンドローム生成回路１６によるＢＩＳシンドローム生成と並行して実行することができるため、誤り訂正処理に要する時間を短縮することができる。これらにより、回路規模の増大を抑制しつつも、外部バッファメモリ６へのアクセス量を低減することができる。
【０１５２】
（３）ＥＤＣシンドローム生成回路３０に、分割ＥＣＣクラスタＤＥＣＣ毎に入力されるデータに対して正確にＥＤＣ演算処理（重み付け）ができるように、１シフト演算器３４、２０９シフト演算器３５、１０８シフト演算器３６及びＥＯＲ回路３８を設けるようにした。これにより、ＥＤＣシンドローム生成回路３０において、デスクランブル回路２０から直接入力されるデスクランブルデータｄＤｕに基づいてＥＤＣシンドロームＥＤＣＳを生成することができる。従って、ＬＤＣシンドローム生成回路１３及びＢＩＳシンドローム生成回路１６によるＬＤＣシンドローム生成及びＢＩＳシンドローム生成と並行して、ＥＤＣシンドローム生成回路３０によるＥＤＣシンドローム生成を実行することができる。そのため、誤り訂正処理に要する時間を短縮することができる。
【０１５３】
（４）デスクランブル回路２０は、各読み出しブロックの各偶数データフレームにおける１列１行目の先頭スクランブルデータに対するスクランブル値ＳＣを格納する偶数レジスタＲ２を備えた。また、デスクランブル回路２０は、各読み出しブロックの各奇数データフレームにおける１列１行目の先頭スクランブルデータに対するスクランブル値ＳＣを格納する奇数レジスタＲ３を備えた。これにより、各読み出しブロックの各偶数データフレーム及び各奇数データフレームにおける先頭スクランブルデータに対するスクランブル値を予め算出してメモリ等に格納しておく必要がなくなる。
【０１５４】
（５）デスクランブル回路２０は１０８シフト演算器２６を備えた。この１０８シフト演算器２６に初期値Ｓ０を入力することにより、第１読み出しブロックＲＢ１の各奇数データフレームにおける１行１列目の先頭スクランブルデータに対するスクランブル値ＳＣ（＝Ｓ０・γ１０８）を簡便に生成することができる。
【０１５５】
（６）ＥＤＣシンドローム生成回路３０にて生成される各データフレーム毎のＥＤＣシンドロームの中間値ＥＤＣｓを格納するＥＤＣメモリ部４０を設けた。これにより、各データフレームのＥＤＣシンドローム生成に共通の回路を使用することができるため、各データフレーム毎のシンドローム生成回路を設ける必要がなくなるため、回路規模の増大を抑制することができる。なお、なお、ＥＤＣメモリ部４０の各バッファメモリのメモリ容量は、各データフレーム毎のＥＤＣシンドローム（１２８バイト）を格納できる容量であり、従来の内蔵メモリの容量（７６８８０バイト）に比べると小容量であるため、回路規模の増大が抑制される。
【０１５６】
（７）ＬＤＣシンドローム生成回路１３にて生成される各列毎のＬＤＣシンドロームの中間値を格納するＬＤＣメモリ部１４を設けた。これにより、各列のＬＤＣシンドローム生成に共通の回路を使用することができるため、各列毎のシンドローム生成回路を設ける必要がなくなるため、回路規模の増大を抑制することができる。なお、なお、ＬＤＣメモリ部１４の各バッファメモリのメモリ容量は、各列毎のＬＤＣシンドローム（９７２８バイト）を格納できる容量であり、従来の内蔵メモリの容量（７６８８０バイト）に比べると小容量であるため、回路規模の増大が抑制される。
【０１５７】
（８）全ＢＩＳクラスタＢＩＳｃを格納するＢＩＳメモリ部１５を設けた。これにより、ＢＩＳシンドローム生成回路１６は、ＢＩＳメモリ部１５から全ＢＩＳクラスタＢＩＳｃを連続して読み出し、該ＢＩＳクラスタＢＩＳｃに基づいてＢＩＳシンドロームを生成することができる。従って、ＢＩＳシンドローム生成回路１６によりＢＩＳシンドロームを効率良く生成することができる。なお、ＢＩＳメモリ部１５の各バッファメモリのメモリ容量は、全ＢＩＳクラスタ（１４８８バイト）を格納できる容量であり、従来の内蔵メモリの容量（７６８８０バイト）に比べると小容量であるため、回路規模の増大が抑制される。
【０１５８】
（９）内蔵メモリ部１２、ＬＤＣメモリ部１４、ＢＩＳメモリ部１５及びＥＤＣメモリ部４０を、２つのバッファメモリから構成した。そして、例えば内蔵メモリ部１２であれば、一方のバッファメモリをデータ保存用として、他方のバッファメモリをアクセス用として使用するようにした。これにより、復調回路１１からのデータの格納と、内蔵メモリ部１２からのデータの読み出しとを同時に行うことができる。従って、ＢＤ４からのディスクデータの読み出しを連続的に行うことができる。同様に、ＬＤＣシンドローム生成回路１３からのＬＤＣシンドロームの中間値の格納を連続的に行うことができ、内蔵メモリ部１２からのＢＩＳクラスタＢＩＳｃの読み出しを連続的に行うことができ、ＥＤＣシンドローム生成回路３０からのＥＤＣシンドロームの中間値ＥＤＣｓの格納を連続的に行うことができる。
【０１５９】
また、内蔵メモリ部１２の場合には、２つのバッファメモリＭ１，Ｍ２から構成するようにした場合、回路規模の増大を抑制するという効果がより顕著になる。詳しくは、図４３に示すコントローラ１３０では、ＢＤから連続的に複数個のＥＣＣクラスタＥＣＣｃが読み出されるときに、それら複数個のＥＣＣクラスタＥＣＣｃを連続的に読み出すためには、大容量（７６８８０バイト）の内蔵メモリ１３１を２個設ける必要があった。これに対して、本実施形態の内蔵メモリ部１２は、そのメモリ容量が合計４９６０バイトであるため、回路規模の増大を効果的に抑制することができる。
【０１６０】
（１０）ＥＤＣシンドローム生成回路３０により生成されたＥＤＣシンドロームＥＤＣＳを全て補正メモリ部５３に格納した上で、ＥＤＣ補正回路５２により補正メモリ部５３に格納されたＥＤＣシンドロームを補正するようにした。これにより、補正メモリ部５３に格納された全ＥＤＣシンドロームＥＤＣＳに対して連続的に補正を行うことができるため、処理効率を向上させることができる。
【０１６１】
（第２実施形態）
以下、本発明を具体化した第２実施形態について、図２２〜図２５に従って説明する。この実施形態のデスクランブル回路及びＥＤＣシンドローム生成回路の回路構成、それら回路におけるデータの処理順序が上記第１実施形態と異なっている。以下、第１実施形態との相違点を中心に説明する。
【０１６２】
まず、デスクランブル回路７０の回路構成について図２２に従って説明する。本実施形態のデスクランブル回路７０のスクランブル値生成回路７１は、第１実施形態のデスクランブル回路２０のスクランブル値生成回路２２に、偶数作業レジスタＲ４と奇数作業レジスタＲ５とを新たに設けた。
【０１６３】
偶数作業レジスタＲ４には、各読み出しブロックＲＢ内の最終偶数データフレームＤＦ３０における各列の最終行のデータに対するスクランブル値ＳＣが２０９シフト演算器２５を通じて格納される。一方、奇数作業レジスタＲ５には、各読み出しブロックＲＢ内の最終奇数データフレームＤＦ３１における各列の最終行のデータに対するスクランブル値ＳＣが２０９シフト演算器２５を通じて格納される。これら奇数作業レジスタＲ４及び偶数作業レジスタＲ５は、格納したスクランブル値ＳＣをセレクタ２７に出力する。
【０１６４】
セレクタ２７には、選択回路７２からの選択信号が入力される。セレクタ２７は、選択回路７２からの選択信号に基づいて、１シフト演算器２４及び各レジスタＲ１〜Ｒ５から入力されるスクランブル値のうち１つのスクランブル値ＳＣをＦＦ回路２３に出力する。なお、選択回路２８は、入力されるクロック信号ＣＬＫのパルス数に応じて選択信号を生成し、その選択信号をセレクタ２７に出力する。例えば、選択回路７２は、各読み出しブロックＲＢの各偶数データフレームにおける２列目以降の各列の１行目のデータがＥＯＲ回路２１に入力されるときには、偶数作業レジスタＲ４からのスクランブル値ＳＣをＥＯＲ回路２１に出力させる選択信号を生成する。選択回路７２は、各読み出しブロックＲＢの各奇数データフレームにおける２列目以降の各列の１行目のデータがＥＯＲ回路２１に入力されるときには、奇数作業レジスタＲ５からのスクランブル値ＳＣをＥＯＲ回路２１に出力させる選択信号を生成する。
【０１６５】
次に、ＥＤＣシンドローム生成回路８０の回路構成について図２３に従って説明する。本実施形態のＥＤＣシンドローム生成回路８０は、第１実施形態のＥＤＣシンドローム生成回路３０に作業メモリ８１を新たに設けた。
【０１６６】
作業メモリ８１には、各読み出しブロックＲＢの各データフレームにおける各列の最終行のデータのときに算出されたＥＤＣ演算値Ｅｒ（ｃ）が２０９シフト演算器２５を通じてシフト演算値Ｅｓとして格納される。この作業メモリ８１は、格納したシフト演算値ＥｓをＥＯＲ回路３８及びセレクタ３２に出力する。
【０１６７】
セレクタ３２には、選択回路８２からの選択信号が入力される。セレクタ２７は、選択回路８２からの選択信号に基づいて、１シフト演算器３４、ＥＯＲ回路３８及び作業メモリ８１から入力されるスクランブル値のうちの１つのスクランブル値ＳＣをＥＯＲ回路３１に出力する、あるいはＥＯＲ回路３１にシフト演算値Ｅｓを出力しない。なお、選択回路８２は、入力されるクロック信号ＣＬＫのパルス数に応じて選択信号を生成し、その選択信号をセレクタ３２に出力する。例えば、選択回路８２は、各読み出しブロックＲＢの各データフレームＤＦにおける１列目と最終列とを除く各列の１行目のデータがＥＯＲ回路３１に入力されるときには、作業メモリ８１からのシフト演算値ＥｓをＥＯＲ回路３１に出力させる選択信号を生成する。なお、選択回路８２は、各読み出しブロックＲＢの各データフレームにおける１行１列目の先頭データがＥＯＲ回路３１に入力されるときには、セレクタ３２からシフト演算値Ｅｓを出力しないようにする選択信号を生成する。また、選択回路８２は、各読み出しブロックＲＢの各データフレームにおける最終列の１行目のデータがＥＯＲ回路３１に入力されるときには、ＥＯＲ回路３８からのシフト演算値ＥｓをＥＯＲ回路３１に出力させる選択信号を生成する。
【０１６８】
次に、外部バッファメモリ６に格納される各データフレームＤＦ０〜ＤＦ３１のデスクランブルデータｄＤｕの格納配置について図９に従って説明する。
図９に示すように、デスクランブル回路７０によりデスクランブル処理の施された各データフレームＤＦ０〜ＤＦ３１のデスクランブルデータｄＤｕは、３２行×６４列のブロックとして列方向に４つのデータフレームＤＦ毎に格納される。具体的には、データフレームＤＦ０，ＤＦ１，ＤＦ２，ＤＦ３が列方向に並んで格納されるとともに、データフレームＤＦ４，ＤＦ５，ＤＦ６，ＤＦ７が列方向に並んで格納される。これにより、行方向には、データフレームＤＦ０，ＤＦ４，ＤＦ８，ＤＦ１２，ＤＦ１６，ＤＦ２０，ＤＦ２４，ＤＦ２８が並んで格納されるとともに、データフレームＤＦ１，ＤＦ５，ＤＦ９，ＤＦ１３，ＤＦ１７，ＤＦ２１，ＤＦ２５，ＤＦ２９が並んで格納される。また、行方向には、ＤＦ２，ＤＦ６，ＤＦ１０，ＤＦ１４，ＤＦ１８，ＤＦ２２，ＤＦ２６，ＤＦ３０が並んで格納されるとともに、ＤＦ３，ＤＦ７，ＤＦ１１，ＤＦ１５，ＤＦ１９，ＤＦ２３，ＤＦ２７，ＤＦ３１が並んで格納される。
【０１６９】
次に、このように構成された光ディスクコントローラ１０の動作について説明する。ここでは、とくにデスクランブル回路７０及びＥＤＣシンドローム生成回路８０におけるデータ処理順序について詳述する。
【０１７０】
図２４（ａ）に示すように、デスクランブル回路７０は、内蔵メモリ部１２から第１読み出しブロックＲＢ１のデータフレームＤＦ０における１列目のスクランブルデータｓＤｕを列方向に読み出し、次にデータフレームＤＦ４における１列目のスクランブルデータｓＤｕを列方向に読み出す。続いて、デスクランブル回路７０は、データフレームＤＦ８，ＤＦ１２，ＤＦ１６，ＤＦ２０，ＤＦ２４，ＤＦ２８における１列目のスクランブルデータｓＤｕを順にそれぞれ列方向に読み出す。デスクランブル回路７０は、読み出したスクランブルデータｓＤｕに対して順番にデスクランブル処理を施し、デスクランブルデータｄＤｕを外部バッファメモリ６に格納するとともに、デスクランブルデータｄＤｕをＥＤＣシンドローム生成回路８０に出力する。デスクランブル処理については、上記第１実施形態と同様に、各偶数データフレームＤＦの１行１列目の先頭データｓＤ０に対して、偶数レジスタＲ２に格納された初期値Ｓ０を使用してデスクランブルデータｄＤ０を生成する。続いて、第１読み出しブロックＲＢ１の各偶数データフレームＤＦにおける１列目のスクランブルデータｓＤ１〜ｓＤ７に対しては、前回のスクランブル値を１バイト分シフトさせたスクランブル値ＳＣを使用してデスクランブルデータｄＤ１〜ｄＤ７を生成する。
【０１７１】
一方、デスクランブル回路７０から外部バッファメモリ６へのデータ格納方法については、図２５に示すように、データフレームＤＦ０，ＤＦ４，ＤＦ８，ＤＦ１２，ＤＦ１６，ＤＦ２０，ＤＦ２４，ＤＦ２８における１列目のデスクランブルデータｄＤｕを、外部バッファメモリ６の同一行内（１行目）に格納する。すなわち、本実施形態では、外部バッファメモリ６に行方向に並んで格納されるデータフレームの同一列のデータを連続して読み出すことにより、８つのデータフレームＤＦにおける同一列のデータを同一行内に格納できるようにしている。
【０１７２】
次に、図２４（ｂ）に示すように、デスクランブル回路７０は、内蔵メモリ部１２からデータフレームＤＦ２，ＤＦ６，ＤＦ１０，ＤＦ１４，ＤＦ１８，ＤＦ２２，ＤＦ２６，ＤＦ３０における１列目のスクランブルデータｓＤｕを順にそれぞれ列方向に読み出す。デスクランブル回路７０は、読み出したスクランブルデータｓＤｕに対して順番にデスクランブル処理を施し、デスクランブルデータｄＤｕを外部バッファメモリ６の同一行内に格納するとともに、デスクランブルデータｄＤｕをＥＤＣシンドローム生成回路８０に出力する。なお、各読み出しブロックＲＢにおける最終偶数データフレームＤＦ３０の各列の最終行のデータ（ここでは、１列目の最終行のスクランブルデータｓＤ７）のデスクランブル処理に使用されたスクランブル値ＳＣが２０９シフト演算器２５を通じて偶数作業レジスタＲ４に格納される。従って、ここでは、偶数作業レジスタＲ４にスクランブル値ＳＣ（＝Ｓ０・γ７・γ２０９＝Ｓ０・γ２１６）が格納される。また、上記第１実施形態と同様に、各読み出しブロックＲＢの最終偶数データフレームＤＦ３０における１列目の最終行のデータ（ここでは、スクランブルデータｓＤ７）のデスクランブル処理に使用されたスクランブル値ＳＣが１シフト演算器２４を通じて偶数レジスタＲ２に格納される。
【０１７３】
次に、図２４（ｃ）に示すように、デスクランブル回路７０は、内蔵メモリ部１２からデータフレームＤＦ１，ＤＦ５，ＤＦ９，ＤＦ１３，ＤＦ１７，ＤＦ２１，ＤＦ２５，ＤＦ２９における１列目のスクランブルデータｓＤｕを順にそれぞれ列方向に読み出す。デスクランブル回路７０は、読み出したスクランブルデータｓＤｕに対して順番にデスクランブル処理を施し、デスクランブルデータｄＤｕを外部バッファメモリ６の同一行内に格納するとともに、デスクランブルデータｄＤｕをＥＤＣシンドローム生成回路８０に出力する。なお、デスクランブル処理については、上記第１実施形態と同様に、第１読み出しブロックＲＢ１における各奇数データフレームＤＦの１列目の先頭データｓＤ１０８に対して、奇数レジスタＲ３に格納されたスクランブル値ＳＣ（＝Ｓ０・γ１０８）を使用してデスクランブルデータｄＤ１０８を生成する。続いて、第１読み出しブロックＲＢ１の各奇数データフレームＤＦにおける１列目のスクランブルデータｓＤ１０９〜ｓＤ１１５に対しては、前回のスクランブル値を１バイト分シフトさせたスクランブル値ＳＣを使用してデスクランブルデータｄＤ１０９〜ｄＤ１１５を生成する。
【０１７４】
次に、図２４（ｄ）に示すように、デスクランブル回路７０は、内蔵メモリ部１２からデータフレームＤＦ３，ＤＦ７，ＤＦ１１，ＤＦ１５，ＤＦ１９，ＤＦ２３，ＤＦ２７，ＤＦ３１における１列目のスクランブルデータｓＤｕを順にそれぞれ列方向に読み出す。デスクランブル回路７０は、読み出したスクランブルデータｓＤｕに対して順番にデスクランブル処理を施し、デスクランブルデータｄＤｕを外部バッファメモリ６の同一行内に格納するとともに、デスクランブルデータｄＤｕをＥＤＣシンドローム生成回路８０に出力する。なお、各読み出しブロックＲＢにおける最終奇数データフレームＤＦ３１の各列の最終行のデータ（ここでは、１列目の最終行のスクランブルデータｓＤ１１５）のデスクランブル処理に使用されたスクランブル値ＳＣが２０９シフト演算器２５を通じて奇数作業レジスタＲ５に格納される。従って、ここでは、奇数作業レジスタＲ５にスクランブル値ＳＣ（＝Ｓ０・γ１１５・γ２０９＝Ｓ０・γ３２４）が格納される。また、上記第１実施形態と同様に、各読み出しブロックＲＢの最終奇数データフレームにおける１列目の最終行のデータ（ここでは、スクランブルデータｓＤ１１５）のデスクランブル処理に使用されたスクランブル値ＳＣが１シフト演算器２４を通じて奇数レジスタＲ３に格納される。
【０１７５】
次に、デスクランブル回路７０は、内蔵メモリ部１２からデータフレームＤＦ０，ＤＦ４，ＤＦ８，ＤＦ１２，ＤＦ１６，ＤＦ２０，ＤＦ２４，ＤＦ２８における２列目のスクランブルデータｓＤｕを順にそれぞれ列方向に読み出す。デスクランブル回路７０は、読み出したスクランブルデータｓＤｕに対して順番にデスクランブル処理を施す。なお、各読み出しブロックＲＢの各偶数データフレームにおける２列目以降の各列の１行目のデータ（ここでは、スクランブルデータｓＤ２１６）に対しては、偶数作業レジスタＲ４に格納されたスクランブル値ＳＣ（ここでは、Ｓ０・γ２１６）を使用してデスクランブルデータｄＤｕを生成する。また、各読み出しブロックＲＢの各奇数データフレームにおける２列目の１行目のデータ（例えば、スクランブルデータｓＤ３２４）に対しては、奇数作業レジスタＲ５に格納されたスクランブル値ＳＣ（例えば、Ｓ０・γ３２４）を使用してデスクランブルデータｄＤｕを生成する。ここで、偶数作業レジスタＲ５に格納されているスクランブル値ＳＣは、同一読み出しブロックＲＢ内の偶数データフレーム（奇数データフレーム）における前列の最終行のデータに使用されたスクランブル値から２０９バイト分シフトさせたスクランブル値である。
【０１７６】
このように本実施形態のデスクランブル処理は、上記第１実施形態と、データの処理順序が異なるとともに、その処理順序に合わせて各列の最終行のデータに使用されたスクランブル値が２０９シフト演算器２５を通じて各作業レジスタＲ４，Ｒ５に格納され、その格納されたスクランブル値が次列の１行目のデータの処理に使用されることが異なる。
【０１７７】
次に、ＥＤＣシンドローム生成回路８０におけるＥＤＣ演算処理について説明する。ＥＤＣシンドローム生成回路８０には、デスクランブル回路７０からデスクランブルデータｄＤｕが生成された順に入力される。すなわち、図２４（ａ）〜（ｄ）の順番でデスクランブルデータｄＤｕがＥＤＣシンドローム生成回路８０に入力される。従って、ＥＤＣシンドローム生成回路８０には、各読み出しブロックＲＢの各データフレームＤＦにおけるデータが１列（８バイト）毎に入力される。ＥＤＣシンドローム生成回路８０は、各読み出しブロックＲＢの各データフレームＤＦにおけるデータが１列毎に入力されると、上記第１実施形態と同様に、ＥＤＣ演算値Ｅｒ（ｃ）を順次算出する。例えば第１読み出しブロックＲＢ１のデータフレームＤＦ０（偶数データフレーム）における１列目のバイトデータＸ２０５１〜Ｘ２０４４がＥＯＲ回路３１に順に入力されると、下記式に示すようにＥＤＣ演算値Ｅｒ（ｃ）が順次算出される。
【０１７８】
【数２８】
0005365683.tif 000029
そして、各データフレームＤＦ（ここでは、データフレームＤＦ０）における各列の最終行のデータに対するＥＤＣ演算値Ｅｒ（ｃ）（ここでは、ＥＤＣ演算値Ｅ１（８））が算出されると、そのＥＤＣ演算値Ｅ１（８）が２０９シフト演算器３５を通じてシフト演算値Ｅｓ（＝β２０９・Ｅ１（８））として作業メモリ８１に格納される。この作業メモリ８１には、各データフレームＤＦ毎のシフト演算値Ｅｓが格納されるようになっている。
【０１７９】
次に、各読み出しブロックＲＢの各データフレームにおける１列目と最終列を除く各列の１行目のデータが入力されたときのＥＤＣ演算について説明する。例えば、第１読み出しブロックＲＢ１のデータフレームＤＦ０の１行２列目のデータＸ１８３５がＥＯＲ回路３１に入力されると、選択回路８２は、作業メモリ８１からのシフト演算値ＥｓをＥＯＲ回路３１に出力させる選択信号をセレクタ３２に出力する。これにより、ＥＯＲ回路３１には、第１読み出しブロックＲＢ１におけるデータフレームＤＦ０の１列目（同一読み出しブロックにおける同一データフレームの前列）のときに作業メモリ８１に格納されたシフト演算値Ｅｓ（＝β２０９・Ｅ１（８））が入力される。従って、上記データＸ１８３５に対するＥＤＣ演算値Ｅ１（９）は下記式により算出される。
【０１８０】
【数２９】
0005365683.tif 000030
このように本実施形態のＥＤＣシンドローム生成回路８０には、各読み出しブロックＲＢの各データフレームにおけるデータが１列毎に入力される。そのため、その１列の最後のデータが入力されたときに算出されるＥＤＣ演算値Ｅｒ（ｃ）に対して２０９次のベクターβ２０９による重み付けをして得られるシフト演算値Ｅｓをデータフレーム毎に作業メモリ８１に格納するようにした。そして、同一読み出しブロックＲＢにおける各データフレームの次列の１行目のデータがＥＯＲ回路３１に入力されたときに、作業メモリ８１に格納した同一データフレームのシフト演算値Ｅｓを読み出してＥＤＣ演算処理を行うようにした。なお、その他の演算方法については、上記第１実施形態と同様である。
【０１８１】
以上説明した実施形態によれば、第１実施形態の（１）〜（１０）の作用効果に加えて以下の効果を奏する。
（１１）デスクランブル回路７０は、各読み出しブロックの各偶数データフレームにおける２列目以降の各列の１行目のスクランブルデータに対するスクランブル値ＳＣを格納する偶数作業レジスタＲ４を備えた。また、デスクランブル回路２０は、各読み出しブロックの各奇数データフレームにおける２列目以降の各列の１行目のスクランブルデータに対するスクランブル値ＳＣを格納する奇数作業レジスタＲ５を備えた。これにより、図２４に示すようなデータ処理順序、すなわち各データフレーム内の１列のデスクランブル処理が終了する度に、異なるデータフレームに処理が移るようなデータ処理順序であっても、上記作業レジスタＲ４，Ｒ５に格納されたスクランブル値ＳＣを利用することによって、デスクランブル処理を連続的に実行することができる。
【０１８２】
（１２）ＥＤＣシンドローム生成回路８０は、各読み出しブロックの各データフレームにおける各列のＥＤＣ演算処理終了後のＥＤＣ演算値Ｅｒ（ｃ）が２０９シフト演算器３５を通じて格納される作業メモリ８１を備えた。これにより、図２４に示すようなデータ処理順序であっても、作業メモリ８１に格納されたスクランブル値ＳＣを利用することによって、デスクランブル処理を連続的に実行することができる。
【０１８３】
（１３）デスクランブル回路７０は、外部バッファメモリ６の行方向に並んで格納されるデータフレームの同一列のデータを連続して処理するようにした。これにより、デスクランブル回路７０は、８つのデータフレームＤＦ（例えば、データフレームＤＦ０，ＤＦ４，ＤＦ８，ＤＦ１２，ＤＦ１６，ＤＦ２０，ＤＦ２４，ＤＦ２８）における同一列のデスクランブルデータｄＤｕを、外部バッファメモリ６の同一行内に格納できる。このとき、外部バッファメモリ６は、同一行内においては連続してアクセスすることができる機能を有している。従って、デスクランブル回路７０が外部バッファメモリ６にデスクランブルデータｄＤｕを格納するときのアクセス効率を向上させることができる。
【０１８４】
（第３実施形態）
以下、本発明を具体化した第３実施形態について、図２６〜図２８に従って説明する。この実施形態のＥＤＣシンドローム生成回路の回路構成が上記第２実施形態と異なっている。以下、第２実施形態との相違点を中心に説明する。なお、デスクランブル回路７０による内蔵メモリ部１２からのデータ読み出し順序は、上記第２実施形態と同様である。
【０１８５】
図２７に示すように、ＥＤＣシンドローム生成回路９０は、デスクランブル回路７０から１ビットの入力データ（ビットデータ）Ｘｋが入力される１６個のアンド回路Ａ１〜Ａ１６を備えている。
【０１８６】
ここで、アンド回路Ａ１〜Ａ１６に入力されるビットデータについて説明する。まず、１つのデータフレームＤＦは２０５２バイトであるため、１つのデータフレームＤＦは１６４１６（＝２０５２×８）ビットから構成される。ＥＤＣ付加時と同様のデータ処理順序でＥＤＣ演算をした場合の１６４１６ビットのデスクランブルデータｄＤｕの次数重みを表す多項式表現（入力多項式）は、
【０１８７】
【数３０】
0005365683.tif 000031
となる。ここで、ＥＤＣ演算は、前述したように、入力多項式の各次数をベクターβｋで重み付けする演算であるため、ＥＤＣシンドロームＥＤＣＳは下記式により算出される。なお、本実施形態におけるベクターβｋの次数ｋと、上記第１及び第２実施形態におけるベクターβｎの次数ｎとは、ｋ＝８ｎの関係がある。
【０１８８】
【数３１】
0005365683.tif 000032
このように、ＥＤＣシンドロームＥＤＣＳの演算は、１ビットデータが処理される度に各ビットデータに対して１次のベクターβｋ（＝β１）による重み付けが行われる。ここで、１ビットデータＸｋに対してベクターβ１で重み付けするとは、重み付けされるビットデータＸｋを、所定の生成多項式Ｇ（ｘ）（本例では、Ｇ（ｘ）＝ｘ３２＋ｘ３１＋ｘ４＋１）に従って１ビット分シフトさせることである。例えば、各データフレームＤＦにおいて最も早く入力されるビットデータＸ１６４１５に対しては、１次のベクターβ１による重み付けが１６４１５回行われる。但し、本実施形態の場合、上記第２実施形態と同様に、デスクランブル回路７０から、２７個に分割されたデータブロックＤＢが第１〜第２７読み出しブロックＲＢ１〜ＲＢ２７として各読み出しブロック毎に入力される。ここで、図２６（ａ）に、第１読み出しブロックＲＢ１の各偶数データフレームにおける１列目と２列目とのバイトデータＸｎ及びビットデータＸｋの入力順序を次数ｎ，ｋで表した。また、図２６（ｂ）に、第１読み出しブロックＲＢ１の各奇数データフレームにおける１列目と２列目とのバイトデータＸｎ及びビットデータＸｋの入力順序を次数ｎ，ｋで表した。
【０１８９】
この図２６（ａ）に示すように、ＥＤＣシンドローム生成回路８０にはビットデータＸｋが、Ｘ１６４１５→Ｘ１６４１４→…→Ｘ１６３５３→Ｘ１６３５２→Ｘ１４６８７→Ｘ１４６８６→…という順序で入力される。すなわち、アンド回路Ａ１〜Ａ１６（図２７参照）には、まずビットデータとしてデータフレームＤＦ０のＸ１６４１５〜Ｘ１６４００（Ｘｋ〜Ｘｋ−１５）が入力され、次にビットデータとしてＸ１６３９９〜Ｘ１６３８４が入力され、続いてビットデータとしてＸ１６３８７〜Ｘ１６３６８が入力され、次いでビットデータとしてＸ１６３６７〜Ｘ１６３５２が入力される。そして、第１読み出しブロックＲＢ１の全データフレームＤＦ０〜ＤＦ３１における１列目のビットデータの入力が終了すると、アンド回路Ａ１〜Ａ１６には、次に第１読み出しブロックＲＢ１のデータフレームＤＦ０における２列目のビットデータＸ１４６８７〜Ｘ１４６７２が入力される。このように、ＥＤＣ付加時のデータ入力順序と異なる順序でデータが入力されると、ベクターβによる重み付けが正確にできないため、正常なＥＤＣシンドロームを生成することができない。
【０１９０】
そこで、本実施形態のＥＤＣシンドローム生成回路９０は、ビットデータＸｋに応じて所望の次数ｋのベクターβｋを生成するベクター生成回路９１を備えるようにした。ベクター生成回路９１は、１６個の−１ビットシフト（β−１）演算器Ｂ１〜Ｂ１６（第１逆シフト演算器群）及び−１６６４ビットシフト（β−１６６４）演算器Ｂ１７から構成され、ベクターレジスタ９２から入力されるベクターβｋに基づいて、１８個のベクターβを生成する。
【０１９１】
β−１演算器Ｂ１〜Ｂ１６は、ベクターレジスタ９２あるいは前段のβ−１演算器からベクターβｋが入力されたときに、ベクターβｋ−１を生成する演算器である。すなわち、β−１演算器Ｂ１〜Ｂ１６は、入力されたベクターを生成多項式Ｇ（ｘ）に従って１ビット分、逆シフトさせて新たなベクターβｋを生成する演算器である。図２９に、β−１シフト演算器Ｂ１〜Ｂ１６にＩ［３１：０］が入力されたときに、該β−１シフト演算器Ｂ１〜Ｂ１６から出力されるＯ［３１：０］の論理式を示した。
【０１９２】
例えば、ベクターレジスタ９２からβ−１演算器Ｂ１にベクターβｋが入力された場合には、β−１演算器Ｂ１〜Ｂ１６はそれぞれベクターβｋ−１〜βｋ−１６を生成する。また、β−１演算器Ｂ１に入力されるベクターβｋがアンド回路Ａ１に入力され、β−１演算器Ｂ１から出力されるベクターβｋ−１がアンド回路Ａ２に入力され、β−１演算器Ｂ２から出力されるベクターβｋ−２がアンド回路Ａ３に入力される。同様に、β−１演算器Ｂ３〜Ｂ１５から出力されるベクターβｋ−３〜βｋ−１５がアンド回路Ａ４〜Ａ１６にそれぞれ入力される。β−１演算器Ｂ１６は、生成したベクターβｋ−１６を、β−１６６４演算器Ｂ１７、偶数レジスタＲ２０、奇数レジスタＲ２１及びセレクタ９６に出力する。
【０１９３】
β−１６６４演算器Ｂ１７は、β−１演算器Ｂ１６からベクターβｋ−１６が入力されたときに、ベクターβｋ−１６−１６６４を生成し、該ベクターβｋ−１６−１６６４を、偶数ラインレジスタＲ２２、奇数ラインレジスタＲ２３及びセレクタ９６に出力する演算器である。すなわち、β−１６６４演算器Ｂ１７は、入力されたベクターを生成多項式Ｇ（ｘ）に従って１６６４ビット分、逆シフトさせて新たなベクターβｋを生成する演算器である。図３０に、β−１６６４シフト演算器Ｂ１７にＩ［３１：０］が入力されたときに、該β−１６６４シフト演算器Ｂ１７から出力されるＯ［３１：０］の論理式を示した。
【０１９４】
アンド回路Ａ１〜Ａ１６は、デスクランブル回路７０からそれぞれ入力されるビットデータＸｋ〜Ｘｋ−１５をそれぞれ３２ビットに拡張した値と、ベクター生成回路９１からそれぞれ入力されるベクターβｋ〜βｋ−１５との論理積を取って、その演算結果をＥＯＲ回路９４にそれぞれ出力する。ここで、上記３２ビットに拡張した値とは、ビット０〜ビット３１までの全ての値をＸｎの値にしたデータのことである。
【０１９５】
ＥＯＲ回路９４は、アンド回路Ａ１〜Ａ１６から入力される１６個の演算結果の排他的論理和を取って、その演算結果をシンドロームレジスタ９５に出力する。シンドロームレジスタ９５は、ＥＮ端子にイネーブル信号ＥＮＳに基づいて、上記演算結果をＥＤＣシンドロームの中間値ＥＤＣｓとしてＥＯＲ回路９４及び上記ＥＤＣメモリ部４０に出力する。ＥＤＣメモリ部４０は、上記第１及び第２実施形態と同様の構成を有しており、各データフレームＤＦ０〜ＤＦ３１毎にＥＤＣシンドロームの中間値ＥＤＣｓ及び最終的なＥＤＣシンドロームＥＤＣＳが格納される。
【０１９６】
セレクタ９６は、選択回路９７からの選択信号に基づいて、β−１演算器Ｂ１６及び各種レジスタＲ２０〜Ｒ２３から入力されるベクターのうち１つのベクターβｋをベクターレジスタ９２に出力する。なお、ベクターレジスタ９２は、ＥＮ端子に入力されるイネーブル信号ＥＮＳに基づいて、セレクタ９６から入力されるベクターβｋをベクター生成回路９１に出力する。
【０１９７】
初期設定時の偶数レジスタＲ２０には、所定の生成多項式Ｇ（ｘ）より予め算出されたベクターβ１６４１５が格納される。また、偶数レジスタＲ２０には、各読み出しブロックＲＢの最終偶数データフレームにおける１列目の最終行のビットデータＸの演算処理が終了したときに、β−１演算器Ｂ１６から入力されるベクターβが格納される。一方、初期設定時の奇数レジスタＲ２１には、所定の生成多項式Ｇ（ｘ）より予め算出されたベクターβ１５５５１が格納される。また、奇数レジスタＲ２１には、各読み出しブロックＲＢの最終奇数データフレームにおける１列目の最終行のビットデータＸの演算処理が終了したときに、β−１演算器Ｂ１６から入力されるベクターβが格納される。
【０１９８】
偶数ラインレジスタＲ２２には、各読み出しブロックＲＢの最終偶数データフレームにおける各列の最終行のビットデータＸのＥＤＣ演算処理が終了したときに、β−１６６４演算器Ｂ１７から入力されるベクターβが格納される。奇数ラインレジスタＲ２３には、各読み出しブロックＲＢの最終奇数データフレームにおける各列の最終行のビットデータのＥＤＣ演算処理が終了したときに、β−１６６４演算器Ｂ１７から入力されるベクターβが格納される。
【０１９９】
選択回路９７は、入力されるクロック信号ＣＬＫのパルス数に応じて各種選択信号を生成し、その選択信号をセレクタ９６に出力する。例えば、選択回路９７は、各読み出しブロックＲＢの各偶数データフレームにおける１行１列目の先頭ビットデータから１６ビット分のデータがアンド回路Ａ１〜Ａ１６に入力されるときには、偶数レジスタＲ２０からのベクターβをベクターβｋとしてベクターレジスタ９２に出力させる選択信号を生成する。選択回路９７は、各読み出しブロックＲＢの各奇数データフレームにおける１行１列目の先頭ビットデータから１６ビット分のデータがアンド回路Ａ１〜Ａ１６に入力されるときには、奇数レジスタＲ２１からのベクターβをベクターβｋとしてベクターレジスタ９２に出力させる選択信号を生成する。選択回路９７は、各読み出しブロックＲＢの各偶数データフレームにおける２列目以降の各列の１行目のビットデータから１６ビット分のデータが入力されるときには、偶数ラインレジスタＲ２２からのベクターβをベクターβｋとしてベクターレジスタ９２に出力させる選択信号を生成する。選択回路９７は、各読み出しブロックＲＢの各奇数データフレームにおける２列目以降の各列の１行目のビットデータから１６ビット分のデータが入力されるときには、奇数ラインレジスタＲ２３からのベクターβをベクターβｋとしてベクターレジスタ９２に出力させる選択信号を生成する。選択回路９７は、各読み出しブロックＲＢにおける列方向の次のビットデータ（１７行目以降のビットデータ）から１６ビット分のデータが入力されるときには、β−１演算器Ｂ１６からのベクターβをベクターβｋとしてベクターレジスタ９２に出力させる選択信号を生成する。
【０２００】
次に、このように構成されたＥＤＣシンドローム生成回路９０の動作について図２８に従って説明する。
まずステップＳ５０において、偶数レジスタＲ２０及び奇数レジスタＲ２１に初期値が設定される。すなわち、偶数レジスタＲ２０には、第１読み出しブロックＲＢ１における各偶数データフレームの先頭ビットデータＸ１６４１５の次数と同一次数のベクターβ１６４１５が格納される。また、奇数レジスタＲ２１には、第１読み出しブロックＲＢ１における各奇数データフレームの先頭ビットデータＸ１５５５１の次数と同一次数のベクターβ１５５５１が格納される。
【０２０１】
次に、選択回路９７は、偶数レジスタＲ２０あるいは奇数レジスタＲ２１からのベクターβをベクターレジスタ９２に出力させる選択信号をセレクタ９６に出力する（ステップＳ５１）。詳しくは、選択回路９７は、偶数データフレームのＥＤＣ演算処理を行う場合には偶数レジスタＲ２０からのベクターβを、奇数データフレームのＥＤＣ演算処理を行う場合には奇数レジスタＲ２１からのベクターβをベクターレジスタ９２に出力させる選択信号を生成する。ここでは、これから処理するデータフレームＤＦがデータフレームＤＦ０（偶数データフレーム）であるため、偶数レジスタＲ２０からのベクターβ１６４１５をベクターレジスタ９２に出力させる選択信号をセレクタ９６に出力する。
【０２０２】
次に、ステップＳ５２において、デスクランブル回路７０からアンド回路Ａ１〜Ａ１６には、データフレームＤＦ０の先頭ビットデータＸ１６４１５から１６ビット分のデータＸ１６４１５〜Ｘ１６４００がそれぞれ入力される。このとき、ベクター生成回路９１からアンド回路Ａ１〜Ａ１６には、ベクターβ１６４１５〜β１６４００がそれぞれ入力される。これにより、ＥＯＲ回路９４は、アンド回路Ａ１〜Ａ１６からの演算結果の排他的論理和を取って、下記式に示すＥＤＣシンドロームの中間値ＥＤＣｓを算出する。
【０２０３】
【数３２】
0005365683.tif 000033
この算出された中間値ＥＤＣｓは、シンドロームレジスタ９５を介してＥＤＣメモリ部４０に格納されるとともに、ＥＯＲ回路９４に入力される。
【０２０４】
次に、ステップＳ５３において、選択回路９７は、入力されるクロック信号のパルス数に応じて、各読み出しブロックＲＢにおける１列（６４ビット）分のデータに対するＥＤＣ演算処理が終了したかを判断する。選択回路９７は、１列分のデータに対するＥＤＣ演算処理が終了していないと判断すると（ステップＳ５３においてＮＯ）、β−１演算器Ｂ１６からのベクターβをベクターレジスタ９２に出力させる選択信号をセレクタ９６に出力する（ステップＳ５４）。このとき、β−１演算器Ｂ１６からセレクタ９６を介してベクターレジスタ９２に入力されるベクターがβ１６３９９であるため、ベクター生成回路９１からアンド回路Ａ１〜Ａ１６にはベクターβ１６３９９〜β１６３８４がそれぞれ入力される。また、このアンド回路Ａ１〜Ａ１６には、デスクランブル回路７０からビットデータＸ１６３９９〜Ｘ１６３８４がそれぞれ入力される。従って、ＥＯＲ回路９４は、アンド回路Ａ１〜Ａ１６からの演算結果と直前に算出した中間値ＥＤＣｓとの排他的論理和を取って、下記式に示す中間値ＥＤＣｓを算出する。
【０２０５】
【数３３】
0005365683.tif 000034
１列分のビットデータに対するＥＤＣ演算処理が終了するまで、これらステップＳ５２〜Ｓ５４が繰り返し実行される。このようにＥＤＣ付加時のデータ処理順序と同様の順序でビットデータが入力されるとき、すなわち列方向に配置されたビットデータが順番に入力されるときには、β−１演算器Ｂ１６からのベクターβをベクター生成回路９１に入力させる。
【０２０６】
そして、第１読み出しブロックＲＢ１のデータフレームＤＦ０における１列目の最終行のビットデータＸ１６３５２を含む１６ビットのデータＸ１６３６７〜Ｘ１６３５２がアンド回路Ａ１〜Ａ１６に入力されたときの中間値ＥＤＣｓが算出されると、その中間値ＥＤＣｓがＥＤＣメモリ部４０に格納され、ステップＳ５５に移る。次に、ステップＳ５５において、選択回路９７は、現在処理しているデータフレームＤＦが最終偶数データフレームＤＦ３０あるいは最終奇数データフレームＤＦ３１であるかを判断する。ここでは、現在処理しているデータフレームＤＦがデータフレームＤＦ０であり、且つ１列目のデータであるため、ステップＳ５１に移って次のデータフレームの同一列（ここでは、データフレームＤＦ４の１列目）のＥＤＣ演算処理がデータフレームＤＦ０と同様に行われる。
【０２０７】
以後、ステップＳ５１〜Ｓ５５が繰り返し実行され、データフレームＤＦ４→ＤＦ８→ＤＦ１２→ＤＦ１６→ＤＦ２０→ＤＦ２４→ＤＦ２８→ＤＦ２→ＤＦ６→ＤＦ１０→ＤＦ１４→ＤＦ１８→ＤＦ２２→ＤＦ２６→ＤＦ３０（図２４（ａ）、（ｂ）参照）における１列目のＥＤＣ演算処理が順に行われる。そして、第１読み出しブロックＲＢ１のデータフレームＤＦ３０における１列目の最終行のビットデータＸ１６３５２を含む１６ビットのデータＸ１６３６７〜Ｘ１６３５２が入力されたときの中間値ＥＤＣｓが算出されると（ステップＳ５５においてＹＥＳ）、ステップＳ５６に移る。
【０２０８】
次に、選択回路９７は、現在ＥＤＣ演算処理しているデータが条件Ｃ１〜Ｃ３のいずれに該当するかを判断する。最終偶数データフレームＤＦ３０の１列目のＥＤＣ演算処理が終了した場合（条件Ｃ１）には、ステップＳ５７に移り、最終奇数データフレームＤＦ３１の１列目のＥＤＣ演算処理が終了した場合（条件Ｃ２）には、ステップＳ５８に移り、２列目以降のＥＤＣ演算処理が終了した場合（条件Ｃ３）には、ステップＳ５９に移る。ここでは、データフレームＤＦ３０の１列目のＥＤＣ演算処理が終了しているため（条件Ｃ１）、β−１演算器Ｂ１６からのベクターβが偶数レジスタＲ２０に格納されるとともに、β−１６６４演算器Ｂ１７からのベクターβが偶数ラインレジスタＲ２２に格納される（ステップＳ５７）。すなわち、第１読み出しブロックＲＢ１の場合には、偶数レジスタＲ２０にベクターβ１６３５１が格納されるとともに、偶数ラインレジスタＲ２２にベクターβ１４６８７が格納される。続いて、ステップＳ５１に戻ると、次に第１読み出しブロックＲＢ１におけるデータフレームＤＦ１（奇数データフレーム）の１列目のＥＤＣ演算処理が開始されるため、奇数レジスタＲ２１からの初期値ベクターβ１５５５１がベクターレジスタ９２に出力される。以後は、偶数データフレームと同様に、第１読み出しブロックＲＢ１におけるデータフレームＤＦ１の１列目のＥＤＣ演算処理が終了するまで、ステップＳ５２〜Ｓ５４が繰り返し実行される。そして、第１読み出しブロックＲＢ１のデータフレームＤＦ１における１列目の最終行のビットデータＸ１６３５２を含む１６ビットのデータＸ１５５０３〜Ｘ１５４８８がアンド回路Ａ１〜Ａ１６に入力されたときの中間値ＥＤＣｓが算出されると、ステップＳ５５に移る。
【０２０９】
以後、ステップＳ５１〜Ｓ５５が繰り返し実行され、データフレームＤＦ５→ＤＦ９→ＤＦ１３→ＤＦ１７→ＤＦ２１→ＤＦ２５→ＤＦ２９→ＤＦ３→ＤＦ７→ＤＦ１１→ＤＦ１５→ＤＦ１９→ＤＦ２３→ＤＦ２７→ＤＦ３１（図２４（ｃ）、（ｄ）参照）における１列目のＥＤＣ演算処理が順に行われる。そして、第１読み出しブロックＲＢ１のデータフレームＤＦ３１における１列目の最終行のデータＸ１６３５２を含む１６ビットのデータＸ１６３６７〜Ｘ１６３５２が入力されたときの中間値ＥＤＣｓが算出されると（ステップＳ５５においてＹＥＳ及びステップＳ５６の条件Ｃ２）、ステップＳ５８に移る。次に、β−１演算器Ｂ１６からのベクターβ（ここでは、β１５４８７）が奇数レジスタＲ２１に格納されるとともに、β−１６６４演算器Ｂ１７からのベクターβ（ここでは、β１３８２３）が奇数ラインレジスタＲ２３に格納される（ステップＳ５８）。
【０２１０】
続いて、選択回路９７は、偶数ラインレジスタＲ２２あるいは奇数ラインレジスタＲ２３からのベクターβをベクターレジスタ９２に出力させる選択信号をセレクタ９６に出力する（ステップＳ５９）。詳しくは、選択回路９７は、偶数データフレームのＥＤＣ演算処理を行う場合には偶数ラインレジスタＲ２２からのベクターβを、奇数データフレームのＥＤＣ演算処理を行う場合には奇数ラインレジスタＲ２３からのベクターβをベクターレジスタ９２に出力させる選択信号を生成する。ここでは、次に第１読み出しブロックＲＢ１におけるデータフレームＤＦ０の２列目がＥＤＣ演算処理されるため、偶数ラインレジスタＲ２２からのベクターβ１４６８７をベクターレジスタ９２に出力させる選択信号をセレクタ９６に出力する。これにより、ステップＳ５２において、ベクター生成回路９１からアンド回路Ａ１〜Ａ１６にはベクターβ１４６８７〜β１４６７２が入力される。また、アンド回路Ａ１〜Ａ１６には、第１読み出しブロックＲＢ１におけるデータフレームＤＦ０の１行２列目のビットデータＸ１４６８７から１６ビット分のデータＸ１４６８７〜Ｘ１４６７２がそれぞれ入力される。そして、ＥＯＲ回路９４は、アンド回路Ａ１〜Ａ１６からの演算結果と、ＥＤＣメモリ部４０に格納された同一データフレームの中間値ＥＤＣｓとの排他的論理和を取って、新たな中間値ＥＤＣｓを算出する。
【０２１１】
このように各読み出しブロックの偶数データフレームにおける２列目以降の各列の１行目のビットデータＸｋには、偶数データフレームにおける前列の最終行のビットデータＸｋ＋１６６５に乗算されたベクターβｋ＋１６６５をβ−１演算器Ｂ１６及びβ−１６６４演算器Ｂ１７によりシフト演算して得られるベクターβｋが乗算されるようになっている。同様に、各読み出しブロックの奇数データフレームにおける２列目以降の各列の１行目のビットデータＸｋには、奇数データフレームにおける前列の最終行のビットデータＸｋ＋１６６５に乗算されたベクターβｋ＋１６６５をβ−１演算器Ｂ１６及びβ−１６６４演算器Ｂ１７によりシフト演算して得られるベクターβｋが乗算されるようになっている。ここでは、例えば第１読み出しブロックＲＢ１のデータフレームＤＦ０における１行２列目のビットデータＸ１４６８７は、同１列目の最終行のビットデータＸ１６３５２よりも、ＥＤＣ付加時において｛（データブロックＤＢの列方向における全ビット数：１７２８ビット）−（１つの読み出しブロックの列方向におけるビット数：６４ビット）＋１｝＝１６６５ビット分だけ遅く処理されるデータである。すなわち、ビットデータＸ１４６８７は、ビットデータＸ１６３５２よりもベクターβ１による重み付け回数が１６６５回だけ少ない。従って、上述したように、前列の最終行のビットデータＸｋ＋１６６５に乗算したベクターβｋ＋１６６５を１６６５ビット分だけ逆シフト演算したベクターβｋを、２列目以降の各列の１行目のビットデータＸｋに乗算するようにした。
【０２１２】
続いて、ステップＳ５２〜Ｓ５４が繰り返し実行され、第１読み出しブロックＲＢ１のデータフレームＤＦ０における２列目の最終行のビットデータＸ１４６２４を含む１６ビットのデータＸ１４６３９〜Ｘ１４６２４が入力されたときの中間値ＥＤＣｓが算出されると、ステップＳ５５に移る。ここでは、最終偶数データフレームＤＦ３０及び最終奇数データフレームでないデータフレームＤＦ０の２列目が処理されているため、ステップＳ５９に移る。続いて、データフレームＤＦ４の２列目が次に処理されるため、偶数ラインレジスタＲ２２からのベクターβ１４６８７がベクターレジスタ９２に出力される。
【０２１３】
以後、ステップＳ５１〜Ｓ５５及びステップＳ５９が繰り返し実行され、データフレームＤＦ４→ＤＦ８→ＤＦ１２→ＤＦ１６→ＤＦ２０→ＤＦ２４→ＤＦ２８→ＤＦ２→ＤＦ６→ＤＦ１０→ＤＦ１４→ＤＦ１８→ＤＦ２２→ＤＦ２６→ＤＦ３０における２列目のＥＤＣ演算処理が順に行われる。そして、第１読み出しブロックＲＢ１のデータフレームＤＦ３０における２列目の最終行のビットデータＸ１６３５２を含む１６ビットのデータＸ１６３６７〜Ｘ１６３５２が入力されたときの中間値ＥＤＣｓが算出されると（ステップＳ５５においてＹＥＳ及びステップＳ５６の条件Ｃ３）、ステップＳ６１に移る。次に、このときのβ−１６６４演算器Ｂ１７からのベクターβ（ここでは、β１２９５９）が偶数ラインレジスタＲ２２に格納される（ステップＳ６１）。
【０２１４】
続いて、データフレームＤＦ１の２列目が次に処理されるため、奇数ラインレジスタＲ２１からのベクターβ１３８２３がベクターレジスタ９２に出力される。以後、偶数データフレームと同様に奇数データフレームのＥＤＣ演算処理が行われ、データフレームＤＦ３１の２列目のＥＤＣ演算処理が終了すると、ステップＳ６１に移る。次に、このときのβ−１６６４演算器Ｂ１７からのベクターβ（ここでは、β１２０９５）が奇数ラインレジスタＲ２３に格納される（ステップＳ６１）。
【０２１５】
以下同様に、第１読み出しブロックＲＢ１における各データフレームの３列目以降のＥＤＣ演算処理が行われ、第１読み出しブロックＲＢ１における最終列（３０４列目）、すなわち最終奇数データフレームＤＦ３１の最終列のＥＤＣ演算処理が終了すると（ステップＳ６０においてＹＥＳ）、ステップＳ６２に移る。次に、ステップＳ６２において、選択回路９７は、ＥＤＣ演算処理の終了した読み出しブロックが第１３読み出しブロックＲＢ１３であるかを判断する。選択回路９７は、ＥＤＣ演算処理の終了した読み出しブロックが第１３読み出しブロックＲＢ１３でないと判断すると（ステップＳ６２においてＮＯ）、ステップＳ６３に移る。次に、選択回路９７は、最終読み出しブロックＲＢ２７のＥＤＣ演算処理が終了したかを判断する（ステップＳ６３）。そして、読み出しブロックＲＢ２〜第１３読み出しブロックＲＢ１３のＥＤＣ演算処理が終了するまで、ステップＳ５０〜Ｓ６３が繰り返し実行され、第１３読み出しブロックＲＢ１３のＥＤＣ演算処理が終了すると（ステップＳ６２においてＹＥＳ）、ステップＳ６４に移る。
【０２１６】
ここで、第１４読み出しブロックＲＢ１４における各奇数データフレームの１行１列目のビットデータは、ＥＤＣ付加時と同様のデータ入力順序でＥＤＣ演算した場合の各奇数データフレームにおいて最初に入力される先頭ビットデータＸ１６４１５である。そこで、第１４読み出しブロックＲＢ１４のＥＤＣ演算処理が開始される前に、ステップＳ６４において、奇数レジスタＲ２２に初期値として、各奇数データフレームの先頭ビットデータＸ１６４１５の次数と同一次数のベクターβ１６４１５を格納するようにした。
【０２１７】
以後は、ステップＳ５０〜Ｓ６３が繰り返し実行され、第１４〜第２７読み出しブロックＲＢ１４〜ＲＢ２７のＥＤＣ演算処理が実行される。
以上説明した実施形態によれば、第１及び第２実施形態の（１）〜（１３）の作用効果に加えて以下の効果を奏する。
【０２１８】
（１４）ＥＤＣシンドローム生成回路９０は、１６個のアンド回路Ａ１〜Ａ１６と、ベクター生成回路９１とを備えた。これにより、アンド回路Ａ１〜Ａ１６に入力されるビットデータＸｋに対して、所望の次数ｋのベクターβｋを乗算させることができる。従って、上記第１及び第２実施形態のＥＤＣ演算処理における第１補正演算及び第２補正演算等の特殊な演算処理を施すことなく、ＥＤＣシンドロームＥＤＣＳを生成することができる。
【０２１９】
（第４実施形態）
以下、本発明を具体化した第４実施形態について、図３１に従って説明する。この実施形態の内蔵メモリ部の構成と、ＢＩＳメモリ部の接続構成が上記第１実施形態と異なっている。以下、第１実施形態との相違点を中心に説明する。
【０２２０】
図３１に示すように、光ディスクコントローラ１０の復調回路１１ａには、ＢＤ４から読み出されたディスクデータが入出力駆動回路５（図１参照）を通じて順次入力される。復調回路１１ａは、ディスクデータに基づいて復調済データ、すなわちＥＣＣクラスタＥＣＣｃ（図４０（ｂ）参照）を生成する。復調回路１１ａは、ＥＣＣクラスタＥＣＣｃ内のＬＤＣクラスタＬＤＣｃとＢＩＳクラスタＢＩＳｃとを分類し、ＬＤＣクラスタＬＤＣｃを内蔵メモリ部１２ｅ（ＬＤＣデータメモリ部）に出力するとともに、ＥＣＣクラスタＥＣＣｃ内のＢＩＳクラスタＢＩＳｃをＢＩＳメモリ部１５ａに出力する。
【０２２１】
内蔵メモリ部１２ｅを構成する２つのバッファメモリＭ１１，Ｍ１２の各々は、所定バイト数（本実施形態では、２４３２バイト）のデータを格納可能なメモリ容量となっている。本実施形態では、ＥＣＣクラスタＥＣＣｃ内のＬＤＣクラスタＬＤＣｃ（７５３９２バイト）が３１（＝７５３９２／２４３２）個に分割され、２４３２バイト毎に内蔵メモリ部１２の各バッファメモリＭ１１，Ｍ１２に格納される。すなわち、ＬＤＣクラスタＬＤＣｃが１６行毎に分割され、１６行×１５２列（＝２４３２バイト）のブロック単位（図３の分割ＥＣＣクラスタＤＥＣＣにおけるＢＩＳクラスタＢＩＳｃ部分を除いたブロック単位）で各バッファメモリＭ１，Ｍ２に格納される。
【０２２２】
ＢＩＳメモリ部１５ａには、復調回路１１ａからのＢＩＳクラスタＢＩＳｃが格納される。ＢＩＳメモリ部１５ａは、第１実施形態と同様の構成を有しており、ＢＩＳクラスタＢＩＳｃ全体のデータが格納されると、そのＢＩＳクラスタＢＩＳｃをＢＩＳシンドローム生成回路１６に出力する。
【０２２３】
以上説明した実施形態によれば、第１実施形態の（１）〜（１０）の作用効果に加えて以下の効果を奏する。
（１５）復調回路１１ａから直接ＢＩＳメモリ部１５ａにＢＩＳクラスタＢＩＳｃを格納するようにし、分割ＥＣＣクラスタＤＥＣＣにおけるＬＤＣクラスタＬＤＣｃのみを内蔵メモリ部１２ｅに格納するようにした。これにより、ＢＩＳメモリ部１５ａによる内蔵メモリ部１２ｅへのアクセスを省略することができるため、内蔵メモリ部１２ｅへのアクセス量を低減することができる。さらに、ＢＩＳメモリ部１５ａは、復調回路１１ａから直接ＢＩＳクラスタＢＩＳｃのみを受け取るため、ＬＤＣクラスタＬＤＣｃを受け取る処理を省略することができる。このことから、コントローラ１０の回路構成を単純化することができる。
【０２２４】
（第５実施形態）
以下、本発明を具体化した第５実施形態について、図３２に従って説明する。この実施形態のデスクランブル回路と、ＢＩＳシンドローム生成回路と、ＥＤＣ補正回路とが上記第４実施形態と異なっている。以下、第４実施形態との相違点を中心に説明する。
【０２２５】
図３２に示すように、内蔵メモリ部１２ｅのバッファメモリに順次格納される第１〜第２７読出しブロックＲＢ１〜ＲＢ２７（スクランブルデータｓＤｕ）は、外部バッファメモリ６に格納されるとともに、ＥＤＣシンドローム生成回路３０ａに入力される。
【０２２６】
ＥＤＣシンドローム生成回路３０ａは、内蔵メモリ部１２ｅから第１〜第２７読み出しブロックＲＢ１〜ＲＢ２７を読み出しブロックＲＢ毎に読み出し、該読み出した各読み出しブロックＲＢ内のスクランブルデータｓＤｕに基づいてＥＤＣ演算を行ってＥＤＣシンドロームを生成する。すなわち、ＥＤＣシンドローム生成回路３０ａは、読み出しブロックＲＢ内のデータフレームＤＦ毎に、スクランブルデータｓＤｕに対するＥＤＣシンドロームを生成し、そのＥＤＣシンドロームをＥＤＣメモリ部４０に格納する。このＥＤＣシンドローム生成回路３０ａは、図８に示したＥＤＣシンドローム生成回路３０と略同様の構成を有しており、デスクランブルデータｄＤｕに代わって内蔵メモリ部１２ｅからのスクランブルデータｓＤｕがバイトデータとしてＥＯＲ回路３１に入力されるようになっている。なお、このＥＤＣシンドローム生成回路３０ａを、図２３に示したＥＤＣシンドローム生成回路８０あるいは図２７に示したＥＤＣシンドローム生成回路９０に変更してもよい。
【０２２７】
ＥＤＣメモリ部４０は、上記第１実施形態と同様に、各データフレームＤＦのスクランブルデータｓＤｕに対する最終的なＥＤＣシンドロームを外部バッファメモリ６に格納する。
【０２２８】
ＢＩＳシンドローム生成回路１６ａは、ＢＩＳメモリ部１５ａからＢＩＳクラスタＢＩＳｃを読み出し、該ＢＩＳクラスタＢＩＳｃに基づいてＢＩＳシンドロームを生成する。ＢＩＳシンドローム生成回路１６ａは、生成したＢＩＳシンドロームと、ＢＩＳメモリ部１５ａから読み出したＢＩＳクラスタＢＩＳｃとを外部バッファメモリ６に格納する。
【０２２９】
誤り訂正回路５０内の訂正回路５１ａは、外部バッファメモリ６から読み出したＬＤＣシンドローム及びＢＩＳシンドロームに基づいて、外部バッファメモリ６に格納されたスクランブルデータｓＤｕからなるデータフレームＤＦ等に対して誤り訂正処理を行う。訂正回路５１ａは、各種シンドロームに基づいて算出した誤り位置及び誤り数値をＥＤＣ補正回路５２ａに出力する。また、訂正回路５１ａは、外部バッファメモリ６に格納された誤り訂正後のＢＩＳクラスタＢＩＳｃ内のスクランブル値の初期値Ｓ０を読み出し、該初期値Ｓ０をＥＤＣ補正回路５２ａに出力する。
【０２３０】
ＥＤＣ補正回路５２ａは、訂正回路５１ａから入力される初期値Ｓ０に基づいて、スクランブル値ＳＣを算出する。ＥＤＣ補正回路５２ａは、訂正回路５１から入力される誤り位置及び誤り数値に基づくＥＤＣシンドローム補正に加えて、上記算出したスクランブル値ＳＣに基づくＥＤＣシンドローム補正を実行する。
【０２３１】
ＥＤＣチェック回路５４において誤り訂正が正常に終了されたことが確認されると、従来と同様のデスクランブル回路１１５は、外部バッファメモリ６に格納された誤り訂正後のスクランブルデータｓＤｕをスクランブル処理時と同様の順序にて読み出す。また、デスクランブル回路１１５は、外部バッファメモリ６に格納された誤り訂正後のＢＩＳクラスタＢＩＳｃ内の値をスクランブル値の初期値Ｓ０として読み出し、該初期値Ｓ０に基づいて順次スクランブル値ＳＣを生成する。そして、デスクランブル回路１１５は、読み出したスクランブルデータｓＤｕに対して順次デスクランブル処理を施し、デスクランブルデータｄＤｕをインターフェース回路６０に出力する。
【０２３２】
以上説明した実施形態によれば、第４実施形態の（１５）の作用効果に加えて以下の効果を奏する。
（１６）第４実施形態のデスクランブル回路２０がデスクランブル処理に用いるスクランブル値ＳＣは、復調回路１１ａがデータを読み出すために用いたＢＤ４のアドレス情報、あるいは誤り訂正前のＢＩＳクラスタＢＩＳｃ内の値を用いることになる。誤り訂正前にデータが誤っている可能性がある場合には、誤り訂正前のＢＩＳクラスタＢＩＳｃ内の値を用いるのではなく、光ディスクコントローラ１０内にあるエラーが含まれない値であって、復調回路１１が用いたアドレス情報をスクランブル値ＳＣとして用いる。この場合、復調回路１１が正しいアドレスを読んでいないと、誤ったスクランブル値ＳＣを用いてしまうことになる。これにより、誤り訂正及びＥＤＣチェックは正しく終了するものの、デスクランブル処理が正しく終了しないという問題が発生する場合がある。
【０２３３】
これに対して、本実施形態のデスクランブル回路１１５では、誤り訂正後のＢＩＳクラスタＢＩＳｃ内の値をスクランブル値ＳＣとして用いることができる。従って、デスクランブル回路１１５は、誤り訂正後のＢＩＳクラスタＢＩＳｃ内の値を用いて、誤り訂正回路５０で誤り訂正及びＥＤＣチェックまで終了したデータに対してデスクランブル処理を施すことができる。その結果、ホストコンピュータに、より正しいデータを送ることができるようになる。
【０２３４】
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記各実施形態では、デスクランブル回路２０，７０から入力されるデスクランブルデータｄＤｕに基づいてＥＤＣシンドロームＥＤＣＳをＥＤＣシンドローム生成回路３０，８０，９０にて生成するようにした。これに限らず、例えば図３３に示すように、従来と同様のＥＤＣチェック回路１１６により、誤り訂正後のデスクランブルデータに基づいてＥＤＣチェック（ＥＤＣシンドロームの生成）を行うようにしてもよい。
【０２３５】
・上記第４及び第５実施形態におけるコントローラ１０に、第２実施形態のデスクランブル回路７０、ＥＤＣシンドローム生成回路８０あるいは第３実施形態のＥＤＣシンドローム生成回路９０を適用するようにしてもよい。
【０２３６】
・上記第１実施形態において、デスクランブル回路２０とＥＤＣシンドローム生成回路３０とが独立して内蔵メモリ部１２にアクセスするようにしてもよい。すなわち、この場合のデスクランブル回路２０のＥＯＲ回路２１及びＥＤＣシンドローム生成回路３０のＥＯＲ回路３１には、内蔵メモリ部１２から分割ＥＣＣクラスタＤＥＣＣ内のスクランブルデータｓＤｕが略同時に入力される。
【０２３７】
・上記各実施形態では、内蔵メモリ部１２の各バッファメモリＭ１，Ｍ２に格納される分割ＥＣＣクラスタＤＥＣＣのサイズに特に制限はない。例えば、分割ＥＣＣクラスタＤＥＣＣのデータサイズを３２行×１５５列としてもよい。なお、この場合、内蔵メモリ部１２の各バッファメモリＭ１，Ｍ２を、１つの分割ＥＣＣクラスタＤＥＣＣを格納できるメモリ容量に設定変更する。また、この場合、１つの読み出しブロックＲＢにおける行数が変更される。このように読み出しブロックＲＢの行数が変更された場合には、デスクランブル回路２０，７０の２０９シフト演算器２５、ＥＤＣシンドローム生成回路３０，８０の２０９シフト演算器３５及びＥＤＣシンドローム生成回路９０のβ−１６６４演算器Ｂ１７におけるシフトバイト数（シフトビット数）が変更される。
【０２３８】
・上記第３実施形態のデスクランブル回路７０におけるデータ処理順序を第１実施形態と同様のデータ処理順序に変更してもよい。すなわち、第３実施形態のデスクランブル回路７０は、各読み出しブロックＲＢの中で、データブロックＤＢにおけるデータ配置と同様の順序にて各スクランブルデータを読み出し、その読み出したスクランブルデータに対して順にデスクランブル処理を実行してもよい。この場合、ＥＤＣシンドローム生成回路９０における偶数ラインレジスタＲ２２及び奇数ラインレジスタＲ２３を省略してもよい。
【０２３９】
・上記第２及び第３実施形態のデスクランブル回路７０におけるデータ処理順序は特に制限されない。例えば、まず図２４（ａ）に示すように、データフレームＤＦ０→ＤＦ４→ＤＦ８→ＤＦ１２→ＤＦ１６→ＤＦ２０→ＤＦ２４→ＤＦ２８（偶数データフレーム群）の１列目のデスクランブル処理を行う。次に、図２４（ｃ）に示すように、データフレームＤＦ１→ＤＦ５→ＤＦ９→ＤＦ１３→ＤＦ１７→ＤＦ２１→ＤＦ２５→ＤＦ２９（奇数データフレーム群）の１列目のデスクランブル処理を行うようにしてもよい。
【０２４０】
あるいは、図２４（ａ）、（ｂ）に示すような偶数データフレーム群の１列目のデスクランブル処理が終了した後に、同偶数データフレーム群の２列目のデスクランブル処理を行うようにしてもよい。このように、偶数データフレームのデスクランブル処理を全て終了した後に、奇数データフレームのデスクランブル処理に移るようにすることにより、例えば第２実施形態のデスクランブル回路７０内の偶数作業レジスタＲ４及び奇数作業レジスタＲ５を共通の作業レジスタに変更することができる。同様に、第３実施形態のＥＤＣシンドローム生成回路９０内の偶数ラインレジスタＲ２２及び奇数ラインレジスタＲ２３を共通のラインレジスタに変更することができる。
【０２４１】
・上記各実施形態では、各データフレームＤＦを外部バッファメモリ６に、３２行×６４列のブロックで格納するようにしたが、このブロックサイズに特に制限はない。例えば、各データフレームＤＦを６４行×３２列のブロックで外部バッファメモリ６に格納するようにしてもよい。このように格納すると、全偶数データフレームを外部バッファメモリ６の行方向に並んで格納させることができるとともに、全奇数データフレームを外部バッファメモリ６の行方向に並んで格納させることができる。そのため、デスクランブル回路７０において、例えばデータフレームＤＦ０，ＤＦ２，ＤＦ４，ＤＦ６，…，ＤＦ２８，ＤＦ３０の同一列のスクランブルデータに対して連続的にデスクランブル処理することにより、１２８（＝８×１６）バイトのデスクランブルデータを外部バッファメモリ６の同一行に格納することができる。
【０２４２】
・上記第１及び第２実施形態におけるデスクランブル回路２０，７０の１０８シフト演算器２６を省略してもよい。この場合、例えば各初期値毎に、その初期値から生成多項式Φ（ｘ）に従って１０８バイト分シフトさせて得られるスクランブル値ＳＣ（Ｓ０・γ１０８）を予め算出してメモリ等に格納しておいてもよい。
【０２４３】
・上記第１及び第２実施形態におけるデスクランブル回路２０，７０の偶数レジスタＲ２及び奇数レジスタＲ３を省略してもよい。あるいは、第３実施形態におけるＥＤＣシンドローム生成回路９０の偶数レジスタＲ２０及び奇数レジスタＲ２１を省略してもよい。この場合、例えば各読み出しブロックＲＢの各偶数データフレーム及び各奇数データフレームにおける１行１列目の先頭スクランブルデータ（先頭ビットデータ）に対するスクランブル値ＳＣ（ベクターβｋ）を予め算出してメモリ等に格納しておいてもよい。
【０２４４】
・上記第１及び第２実施形態におけるＥＤＣシンドローム生成回路３０，８０の−２１１シフト演算器３７を省略してもよい。この場合、例えば偶数データフレームについては、第１〜第１４読み出しブロックＲＢ１〜ＲＢ１４のデータに対するＥＤＣ演算値Ｅ１４（７６）、すなわちバイトデータＸ０がＥＯＲ回路３１に入力されたときに算出されるＥＤＣ演算値Ｅ１４（７６）を中間値ＥＤＣｓとは別に格納する。そして、第１５〜第２７読み出しブロックＲＢ１５〜ＲＢ２７のデータに対するＥＤＣ演算処理は、上記ＥＤＣ演算値Ｅ１４（７６）を読み出さずに実行する。最後に、第２７読み出しブロックＲＢ２７の各偶数データフレームにおける最終行最終列のバイトデータＸ１０８が入力されたときのＥＤＣ演算値Ｅ１４（７６）に第１補正演算施した後の演算結果と、上記ＥＤＣ演算値Ｅ１４（７６）との排他的論理和を取ることで、上記（１）式と同様のＥＤＣシンドロームＥＤＣＳが生成される。
【０２４５】
・上記各実施形態における補正メモリ部５３を省略してもよい。この場合、ＥＤＣ補正回路５２は、外部バッファメモリ６からＥＤＣシンドロームＥＤＣＳを読み出しながら、該ＥＤＣシンドロームＥＤＣＳの補正を行う。
【０２４６】
・上記実施形態では、内蔵メモリ部１２、ＬＤＣメモリ部１４、ＢＩＳメモリ部１５及びＥＤＣメモリ部４０の内部構成を図５の構成に具体化したが、同一時間において、一方のバッファメモリをデータ保存用（シンドローム保存用）として使用し、他方のバッファメモリをアクセス用（データ出力用、シンドローム出力用）として使用する構成であれば、特に制限されない。
【０２４７】
・上記各実施形態では、内蔵メモリ部１２、ＬＤＣメモリ部１４、ＢＩＳメモリ部１５及びＥＤＣメモリ部４０を２つのバッファメモリＭ１，Ｍ２から構成するようにしたが、１つのバッファメモリあるいは３つ以上のバッファメモリから構成するようにしてもよい。また、１つのバッファメモリに対して、同時にデータの格納とデータの読み出しを行えるように構成してもよい。
【０２４８】
・上記各実施形態におけるＬＤＣメモリ部１４を省略してもよい。なお、この場合は、ＬＤＣシンドローム生成回路１３内にパリティ付加ブロックＰＢの全列（３０４列）分のＬＤＣシンドローム演算器を設けることが好ましい。また、ＬＤＣシンドローム生成回路１３にて生成されるＬＤＣシンドロームの中間値を外部バッファメモリ６に格納するようにしてもよい。
【０２４９】
・上記各実施形態におけるＢＩＳメモリ部１５を省略してもよい。なお、この場合、ＢＩＳシンドローム生成回路１６は、内蔵メモリ部１２から直接ＢＩＳクラスタＢＩＳｃを読み出すようにする。このとき、例えばＢＩＳシンドローム生成回路１６にて生成されるＢＩＳシンドロームの中間値を外部バッファメモリ６に格納するようにしてもよい。また、ＢＩＳシンドローム生成回路１６と外部バッファメモリ６との間に、ＢＩＳシンドロームの中間値を格納するシンドロームメモリを設けるようにしてもよい。
【０２５０】
・上記各実施形態におけるＥＤＣメモリ部４０を省略してもよい。なお、この場合は、ＥＤＣシンドローム生成回路３０，８０，９０内に全データフレームの個数（３０個）分のＥＤＣシンドローム演算器（例えば、ＥＯＲ回路３１や各種演算器３４〜３７等）を設けることが好ましい。
【０２５１】
以上の様々な実施の形態をまとめると、以下のようになる。
（付記１）
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該各スクランブルデータにデスクランブル処理を施したデスクランブルデータを生成するデスクランブル回路と、
前記パリティ演算結果に基づいて、前記デスクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記デスクランブル回路は、
前記内蔵メモリ部からの前記スクランブルデータが入力される第１排他的論理和回路と、
入力されたスクランブル値を、所定の第１生成多項式に従って１バイト分シフトさせて新たなスクランブル値を生成する第１シフト演算器と、
入力されたスクランブル値を、
｛（前記データブロックの列方向における全バイト数）＋１−（各読み出しブロックの列方向における全バイト数）｝
バイト分、前記第１生成多項式に従ってシフトさせて新たなスクランブル値を生成する第２シフト演算器と、
前記第１排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第１シフト演算器及び前記第２シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第１排他的論理和回路、前記第１シフト演算器及び前記第２シフト演算器に出力する第１選択回路と、を備えることを特徴とする誤り訂正装置。
（付記２）
前記パリティ演算結果生成回路は、前記内蔵メモリ部に格納された前記分割クラスタにデインターリーブ処理を施して、前記パリティ付加ブロックにおける各データを列方向に読み出し、
前記デスクランブル回路は、前記内蔵メモリ部に格納された前記分割クラスタにデインターリーブ処理を施して、前記データブロックにおける各スクランブルデータを列方向に読み出すことを特徴とする付記１に記載の誤り訂正装置。
（付記３）
前記内蔵メモリ部には、前記復調回路からデインターリーブ処理が施されて前記分割クラスタが格納され、
前記パリティ演算結果生成回路は、前記内蔵メモリ部に格納された前記パリティ付加ブロックを列方向に読み出し、
前記デスクランブル回路は、前記内蔵メモリ部に格納された前記データブロックを列方向に読み出すことを特徴とする付記１に記載の誤り訂正装置。
（付記４）
前記データブロックにおいて最初に処理されるデータフレームと該データフレームから１つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記デスクランブル回路は、
前記各読み出しブロックの前記偶数データフレームにおける１列目の最終行のスクランブルデータに対するスクランブル値が前記第１シフト演算器を通じて格納される第１偶数レジスタと、
前記各読み出しブロックの前記奇数データフレームにおける１列目の最終行のスクランブルデータに対するスクランブル値が前記第１シフト演算器を通じて格納される第１奇数レジスタと、を備え、
前記第１選択回路は、前記第１排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第１シフト演算器、前記第２シフト演算器、前記第１偶数レジスタ及び前記第１奇数レジスタから入力されるスクランブル値のうちのいずれか一つのスクランブル値を、前記第１排他的論理和回路、前記第１シフト演算器及び前記第２シフト演算器に出力することを特徴とする付記１〜３のいずれか１つに記載の誤り訂正装置。
（付記５）
前記デスクランブル回路は、
入力されたスクランブル値を、前記第１生成多項式に従って１０８バイト分シフトさせて新たなスクランブル値を生成する第３シフト演算器を備え、
前記各クラスタにおけるデスクランブル処理開始時の初期値設定において、
前記第１偶数レジスタには、前記各クラスタに応じて設定されるスクランブル値の初期値が格納されるとともに、
前記第１奇数レジスタには、前記初期値が前記第３シフト演算器を通じて格納されることを特徴とする付記４に記載の誤り訂正装置。
（付記６）
前記デスクランブル回路は、
前記各読み出しブロックの前記偶数データフレームにおける各列の最終行のスクランブルデータに対するスクランブル値が前記第２シフト演算器を通じて格納される偶数作業レジスタと、
前記各読み出しブロックの前記奇数データフレームにおける各列の最終行のスクランブルデータに対するスクランブル値が前記第２シフト演算器を通じて格納される奇数作業レジスタと、を備え、
前記第１選択回路は、前記第１排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第１シフト演算器、前記第２シフト演算器、前記第１偶数レジスタ、前記第１奇数レジスタ、前記偶数作業レジスタ及び前記奇数作業レジスタから入力されるスクランブル値のうちのいずれか一つのスクランブル値を、前記第１排他的論理和回路、前記第１シフト演算器及び前記第２シフト演算器に出力することを特徴とする付記４又は５に記載の誤り訂正装置。
（付記７）
前記第１選択回路は、
前記各読み出しブロックの前記各偶数データフレームにおける１行１列目の先頭スクランブルデータが前記第１排他的論理和回路に入力されるときに、前記第１偶数レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各奇数データフレームにおける１行１列目の先頭スクランブルデータが前記第１排他的論理和回路に入力されるときに、前記第１奇数レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各データフレームにおける各列の２行目以降のスクランブルデータが前記第１排他的論理和回路に入力されるときに、前記第１シフト演算器から入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各データフレームにおける２列目以降の各列の１行目のスクランブルデータが前記第１排他的論理和回路に入力されるときに、前記第２シフト演算器から入力されるスクランブル値を出力することを特徴とする付記５に記載の誤り訂正装置。
（付記８）
前記第１選択回路は、
前記各読み出しブロックの前記各偶数データフレームにおける１行１列目の先頭スクランブルデータが前記第１排他的論理和回路に入力されるときに、前記第１偶数レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各奇数データフレームにおける１行１列目の先頭スクランブルデータが前記第１排他的論理和回路に入力されるときに、前記第１奇数レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各偶数データフレームにおける２列目以降の各列の１行目のスクランブルデータが前記第１排他的論理和回路に入力されるときに、前記偶数作業レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各奇数データフレームにおける２列目以降の各列の１行目のスクランブルデータが前記第１排他的論理和回路に入力されるときに、前記奇数作業レジスタから入力されるスクランブル値を出力し、
前記各読み出しブロックの前記各データフレームにおける各列の２行目以降のスクランブルデータが前記第１排他的論理和回路に入力されるときに、前記第１シフト演算器から入力されるスクランブル値を出力することを特徴とする付記６に記載の誤り訂正装置。
（付記９）
前記デスクランブル回路は、前記各読み出しブロックの中で、前記データブロックにおけるデータ配置と同様の順序にて各スクランブルデータを読み出すことを特徴とする付記１〜８のいずれか１つに記載の誤り訂正装置。
（付記１０）
前記デスクランブル回路は、前記各読み出しブロックの中で、外部メモリの行方向に並んで格納されるデータフレームの同一列のスクランブルデータを連続して順番に読み出すことを特徴とする付記６又は８に記載の誤り訂正装置。
（付記１１）
前記第１選択回路は、
前記各奇数データフレームにおけるスクランブル処理時の先頭データが前記第１排他的論理和回路に入力されたときに、前記初期値を前記第１排他的論理和回路に出力することを特徴とする付記７〜１０のいずれか１つに記載の誤り訂正装置。
（付記１２）
前記デスクランブル回路から前記デスクランブルデータが入力されて、該デスクランブルデータに基づいてＥＤＣシンドロームを生成するＥＤＣシンドローム生成回路と、
前記ＥＤＣシンドローム生成回路により生成されるＥＤＣシンドロームの中間結果を前記データフレーム毎に格納するＥＤＣメモリ部と、を備えたことを特徴とする付記１〜１１のいずれか１つに記載の誤り訂正装置。
（付記１３）
前記ＥＤＣシンドローム生成回路は、
前記デスクランブル回路からバイトデータとして入力される前記デスクランブルデータと、第２選択回路から入力されるシフト演算値との排他的論理和を取って、ＥＤＣ演算値を生成する第２排他的論理和回路と、
前記第２排他的論理和から入力されるＥＤＣ演算値に対して、所定の第２生成多項式に従って１バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記ＥＤＣメモリ部に格納する第１重み付け回路と、
前記第２排他的論理和から入力されるＥＤＣ演算値に対して、
｛（前記データブロックの列方向における全バイト数）＋１−（各読み出しブロックの列方向におけるバイト数）｝
バイト分、前記第２生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第２重み付け回路と、
前記第２排他的論理和回路から入力されるＥＤＣ演算値に対して、前記第２生成多項式に従って１０８バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記ＥＤＣメモリ部に格納する第３重み付け回路と、
前記第２重み付け回路からのシフト演算値と、前記ＥＤＣメモリ部からのＥＤＣシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第３排他的論理和回路と、を備え、
前記第２選択回路は、前記第２排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第１重み付け回路、前記第２重み付け回路及び前記第３排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第２排他的論理和回路に出力することを特徴とする付記１２に記載の誤り訂正装置。
（付記１４）
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該スクランブルデータに基づいてＥＤＣシンドロームを生成するＥＤＣシンドローム生成回路と、
前記ＥＤＣシンドローム生成回路により生成されるＥＤＣシンドロームの中間結果を前記データフレーム毎に格納するＥＤＣメモリ部と、
前記パリティ演算結果に基づいて、前記スクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記ＥＤＣシンドローム生成回路は、
前記内蔵メモリ部からバイトデータとして入力される前記スクランブルデータと、第２選択回路から入力されるシフト演算値との排他的論理和を取って、ＥＤＣ演算値を生成する第２排他的論理和回路と、
前記第２排他的論理和から入力されるＥＤＣ演算値に対して、所定の第２生成多項式に従って１バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記ＥＤＣメモリ部に格納する第１重み付け回路と、
前記第２排他的論理和から入力されるＥＤＣ演算値に対して、
｛（前記データブロックの列方向における全バイト数）＋１−（各読み出しブロックの列方向におけるバイト数）｝
バイト分、前記第２生成多項式に従ってシフトさせる重み付けをしてシフト演算値を生成する第２重み付け回路と、
前記第２排他的論理和回路から入力されるＥＤＣ演算値に対して、前記第２生成多項式に従って１０８バイト分シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記ＥＤＣメモリ部に格納する第３重み付け回路と、
前記第２重み付け回路からのシフト演算値と、前記ＥＤＣメモリ部からのＥＤＣシンドロームの中間結果との排他的論理和を取って、シフト演算値を生成する第３排他的論理和回路と、を備え、
前記第２選択回路は、前記第２排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第１重み付け回路、前記第２重み付け回路及び前記第３排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第２排他的論理和回路に出力することを特徴とする誤り訂正装置。
（付記１５）
前記ＥＤＣシンドローム生成回路から外部メモリに格納されたＥＤＣシンドロームが格納される補正メモリ部と、
前記誤り訂正回路により算出される誤り位置及び誤り数値に基づいて、前記補正メモリ部に格納されたＥＤＣシンドロームを補正するとともに、前記クラスタのＢＩＳクラスタ内のスクランブル値の初期値から算出されるスクランブル値に基づいて、前記ＥＤＣシンドロームを補正するＥＤＣ補正回路を備えたことを特徴とする付記１４に記載の誤り訂正装置。
（付記１６）
前記ＥＤＣシンドローム生成回路は、前記各読み出しブロックの中で、前記データブロックにおけるデータ配置と同様の順序にて前記各バイトデータを読み出すことを特徴とする付記１４又は１５に記載の誤り訂正装置。
（付記１７）
前記ＥＤＣシンドローム生成回路は、前記各読み出しブロックの中で、外部メモリの行方向に並んで格納されるデータフレームの同一列の前記バイトデータを連続して順番に読み出すことを特徴とする付記１４又は１５に記載の誤り訂正装置。
（付記１８）
前記ＥＤＣシンドローム生成回路は、
前記第２排他的論理和回路から入力されるＥＤＣ演算値に対して、前記第２生成多項式に従って２１１バイト分、逆シフトさせる重み付けをしてシフト演算値を生成し、該シフト演算値を前記ＥＤＣメモリ部に格納する第４重み付け回路を備えたことを特徴とする付記１３〜１７のいずれか１つに記載の誤り訂正装置。
（付記１９）
前記データブロックにおいて最初に処理されるデータフレームと該データフレームから１つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記ＥＤＣメモリ部には、
前記各読み出しブロックの前記各データフレームにおける最終行最終列のバイトデータが前記第２排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第１重み付け回路を通じて前記ＥＤＣシンドロームの中間結果として格納され、
前記ＥＤＣシンドローム生成回路に最後に入力される最終読み出しブロックの前記各偶数データフレームにおける最終行最終列のバイトデータが前記第２排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第３重み付け回路を通じて前記ＥＤＣシンドロームとして格納され、
前記最終読み出しブロックの前記各奇数データフレームにおける最終行最終列のバイトデータが前記第２排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記ＥＤＣシンドロームとして格納されることを特徴とする付記１３〜１８のいずれか１つに記載の誤り訂正装置。
（付記２０）
前記データブロックにおいて最初に処理されるデータフレームと該データフレームから１つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記ＥＤＣメモリ部には、
前記各偶数データフレームにおけるＥＤＣ付加時の最終バイトデータが前記第２排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第４重み付け回路を通じて前記ＥＤＣシンドロームの中間結果として格納されることを特徴とする付記１８に記載の誤り訂正装置。
（付記２１）
前記ＥＤＣシンドローム生成回路は、
前記各読み出しブロックの前記各データフレームにおける各列の最終行のバイトデータが前記第２排他的論理和回路に入力されたときに生成されるＥＤＣ演算値が、前記第２重み付け回路を通じてシフト演算値として格納される作業メモリを備え、
前記作業メモリは、前記格納されたシフト演算値を前記第３排他的論理和回路及び前記第２選択回路に出力し、
前記第２選択回路は、前記第２排他的論理和回路に入力される前記バイトデータの前記データブロックにおける位置に応じて、前記第１重み付け回路、前記作業メモリ及び前記第３排他的論理和回路から入力されるシフト演算値のうちのいずれか一つのシフト演算値を前記第２排他的論理和回路に出力することを特徴とする付記１３〜２０のいずれか１つに記載の誤り訂正装置。
（付記２２）
前記第２選択回路は、
前記各読み出しブロックの前記各データフレームにおける２行目以降のバイトデータが前記第２排他的論理和回路に入力されるときに、前記第１重み付け回路から入力されるシフト演算値を出力し、
前記各読み出しブロックの前記各データフレームにおける１列目及び最終列を除く各列の１行目のバイトデータが前記第２排他的論理和回路に入力されるときに、前記第２重み付け回路から入力されるシフト演算値を出力し、
前記各読み出しブロックの前記各データフレームにおける最終列の１行目のバイトデータが前記第２排他的論理和回路に入力されるときに、前記第３排他的論理和回路から入力されるシフト演算値を出力することを特徴とする付記１３〜２０のいずれか１つに記載の誤り訂正装置。
（付記２３）
前記第２選択回路は、
前記各読み出しブロックの前記各データフレームにおける２行目以降のバイトデータが前記第２排他的論理和回路に入力されるときに、前記第１重み付け回路から入力されるシフト演算値を出力し、
前記各読み出しブロックの前記各データフレームにおける１列目及び最終列を除く各列の１行目のバイトデータが前記第２排他的論理和回路に入力されるときに、前記作業メモリから入力されるシフト演算値を出力し、
前記各読み出しブロックの前記各データフレームにおける最終列の１行目のバイトデータが第前記２排他的論理和回路に入力されるときに、前記第３排他的論理和回路から入力されるシフト演算値を出力することを特徴とする付記２１に記載の誤り訂正装置。
（付記２４）
前記ＥＤＣシンドローム生成回路は、
入力されるベクターを、所定の第２生成多項式に従って１ビット分、逆シフトさせて新たなベクターを生成する第１逆シフト演算器がＮ個直列に接続された第１逆シフト演算器群と、該Ｎ個の逆シフト演算器の最終段から入力されるベクターを、
｛（前記データブロックにおける列方向の全ビット数）−（各読み出しブロックの列方向におけるビット数）｝
ビット分、前記第２生成多項式に従って逆シフトさせて新たなベクターを生成する第２逆シフト演算器と、を含んで構成されるベクター生成回路と、
前記デスクランブル回路から前記デスクランブルデータがビットデータとして入力されるとともに、前記Ｎ個の第１逆シフト演算器に入力されるベクターが入力されるＮ個のアンド回路と、
前記Ｎ個のアンド回路からの演算結果の排他的論理和を取って、前記ＥＤＣシンドロームの中間結果を生成する第４排他的論理和回路と、
前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第１逆シフト演算器及び前記第２逆シフト演算器から入力されるベクターのうちのいずれか一つのベクターを初段の前記第１逆シフト演算器に出力する第３選択回路と、を備えることを特徴とする付記１２に記載の誤り訂正装置。
（付記２５）
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータの誤りを訂正する誤り訂正装置であって、
前記変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該スクランブルデータに基づいてＥＤＣシンドロームを生成するＥＤＣシンドローム生成回路と、
前記ＥＤＣシンドローム生成回路により生成されるＥＤＣシンドロームの中間結果を前記データフレーム毎に格納するＥＤＣメモリ部と、
前記パリティ演算結果に基づいて、前記スクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記ＥＤＣシンドローム生成回路は、
入力されるベクターを、所定の第２生成多項式に従って１ビット分、逆シフトさせて新たなベクターを生成する第１逆シフト演算器がＮ個直列に接続された第１逆シフト演算器群と、該Ｎ個の逆シフト演算器の最終段から入力されるベクターを、
｛（前記データブロックにおける列方向の全ビット数）−（各読み出しブロックの列方向におけるビット数）｝
ビット分、前記第２生成多項式に従って逆シフトさせて新たなベクターを生成する第２逆シフト演算器と、を含んで構成されるベクター生成回路と、
前記復調回路から前記スクランブルデータがビットデータとして入力されるとともに、前記Ｎ個の第１逆シフト演算器に入力されるベクターが入力されるＮ個のアンド回路と、
前記Ｎ個のアンド回路からの演算結果の排他的論理和を取って、前記ＥＤＣシンドロームの中間結果を生成する第４排他的論理和回路と、
前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第１逆シフト演算器及び前記第２逆シフト演算器から入力されるベクターのうちのいずれか一つのベクターを初段の前記第１逆シフト演算器に出力する第３選択回路と、を備えることを特徴とする誤り訂正装置。
（付記２６）
前記データブロックにおいて最初に処理されるデータフレームと該データフレームから１つおきに処理されるデータフレームとを偶数データフレームとし、該偶数データフレームの次に処理されるデータフレームを奇数データフレームとしたときに、
前記ＥＤＣシンドローム生成回路は、
前記各読み出しブロックの前記偶数データフレームにおける１列目の最終行のビットデータに乗算されたベクターが前記最終段の第１逆シフト演算器を通じて格納される第２偶数レジスタと、
前記各読み出しブロックの前記奇数データフレームにおける１列目の最終行のビットデータに乗算されたベクターが前記最終段の第１逆シフト演算器を通じて格納される第２奇数レジスタと、を備え、
前記第３選択回路は、前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第１逆シフト演算器、前記第２逆シフト演算器、前記第２偶数レジスタ及び前記第２奇数レジスタから入力されるベクターのうちのいずれか一つのベクターを前記初段の第１逆シフト演算器に出力することを特徴とする付記２４又は２５に記載の誤り訂正装置。
（付記２７）
前記ＥＤＣシンドローム生成回路は、
前記各クラスタにおけるＥＤＣ演算処理開始時の初期値設定において、
前記第２偶数レジスタには、前記第２生成多項式に従って生成された１６４１５次のベクターが格納されるとともに、
前記第２奇数レジスタには、前記第２生成多項式に従って生成された１５５５１次のベクターが格納されることを特徴とする付記２６に記載の誤り訂正装置。
（付記２８）
前記ＥＤＣシンドローム生成回路は、
前記各読み出しブロックの前記偶数データフレームにおける各列の最終行のビットデータに乗算されたベクターが前記第２逆シフト演算器を通じて格納される偶数ラインレジスタと、
前記各読み出しブロックの前記奇数データフレームにおける各列の最終行のビットデータに乗算されたベクターが前記第２逆シフト演算器を通じて格納される奇数ラインレジスタと、を備え、
前記第３選択回路は、前記アンド回路に入力される前記ビットデータの前記データブロックにおける位置に応じて、前記最終段の第１逆シフト演算器、前記第２偶数レジスタ、前記第２奇数レジスタ、前記偶数ラインレジスタ及び前記奇数ラインレジスタから入力されるベクターのいずれか一つのベクターを前記初段の第１逆シフト演算器に出力することを特徴とする付記２６又は２７に記載の誤り訂正装置。
（付記２９）
前記第３選択回路は、
前記各読み出しブロックの前記各偶数データフレームにおける１行１列目の先頭ビットデータを含むＮビット分のビットデータが前記Ｎ個のアンド回路に入力されるときに、前記第２偶数レジスタから入力されるベクターを出力し、
前記各読み出しブロックの前記各奇数データフレームにおける１行１列目の先頭ビットデータを含むＮビット分のビットデータが前記Ｎ個のアンド回路に入力されるときに、前記第２奇数レジスタから入力されるベクターを出力し、
前記各読み出しブロックの前記各偶数データフレームにおける２列目以降の各列の１行目のビットデータを含むＮビット分のビットデータが前記Ｎ個のアンド回路に入力されるときに、前記偶数ラインレジスタから入力されるベクターを出力し、
前記各読み出しブロックの前記各奇数データフレームにおける２列目以降の各列の１行目のビットデータを含むＮビット分のビットデータが前記Ｎ個のアンド回路に入力されるときに、前記奇数ラインレジスタから入力されるベクターを出力し、
前記各読み出しブロックの前記各データフレームにおける（Ｎ＋１）行目以降のビットデータを含むＮビット分のビットデータが前記Ｎ個のアンド回路に入力されるときに、前記最終段の第１逆シフト演算器から入力されるベクターを出力することを特徴とする付記２８に記載の誤り訂正装置。
（付記３０）
誤り訂正済のデスクランブルデータに基づいてＥＤＣシンドロームを生成するＥＤＣシンドローム生成回路を備えたことを特徴とする付記１〜１１のいずれか１つに記載の誤り訂正装置。
（付記３１）
前記内蔵メモリ部は、前記復調回路から前記分割クラスタ内のＬＤＣクラスタが格納されるＬＤＣデータメモリ部と、前記復調回路から前記クラスタ内のＢＩＳクラスタが格納されるＢＩＳメモリ部とを備え、
前記ＢＩＳメモリ部から前記ＢＩＳクラスタを読み出し、該ＢＩＳクラスタに基づいてＢＩＳシンドロームを生成するＢＩＳシンドローム生成回路を備えたことを特徴とする付記１〜３０のいずれか１つに記載の誤り訂正装置。
（付記３２）
前記ＬＤＣデータメモリ部は、少なくとも２つのメモリから構成され、
前記ＬＤＣデータメモリ部の少なくとも１つのメモリを前記復調回路からの前記分割クラスタ内のＬＤＣクラスタを格納するデータ保存用として使用するとともに、前記ＬＤＣデータメモリ部の少なくとも１つのメモリを前記パリティ演算結果生成回路からアクセスされるアクセス用として使用することを特徴とする付記３１に記載の誤り訂正装置。
（付記３３）
前記内蔵メモリ部は、少なくとも２つのメモリから構成され、
前記内蔵メモリ部の少なくとも１つのメモリを前記復調回路からの前記分割クラスタを格納するデータ保存用として使用するとともに、前記内蔵メモリ部の少なくとも１つのメモリを前記パリティ演算結果生成回路からアクセスされるアクセス用として使用することを特徴とする付記１〜３０のいずれか１つに記載の誤り訂正装置。
（付記３４）
前記内蔵メモリ部から前記分割クラスタ内のＢＩＳクラスタが格納される小容量のＢＩＳメモリ部と、
前記ＢＩＳメモリ部から読み出した前記ＢＩＳクラスタに基づいてＢＩＳシンドロームを生成することを特徴とする付記１〜３０，３３のいずれか１つに記載の誤り訂正装置。（付記３５）
前記ＢＩＳメモリ部は、少なくとも２つのメモリから構成され、
前記ＢＩＳメモリ部の少なくとも１つのメモリを、前記ＢＩＳクラスタを格納するデータ保存用として使用するとともに、前記ＢＩＳメモリ部の少なくとも１つのメモリを前記ＢＩＳシンドローム生成回路からアクセスされるデータ出力用として使用することを特徴とする付記３１，３２，３４のいずれか１つに記載の誤り訂正装置。
（付記３６）
前記パリティ演算結果生成回路にて生成されるパリティ演算結果の中間結果を格納する小容量のＬＤＣメモリ部を備えたことを特徴とする付記１〜３５のいずれか１つに記載の誤り訂正装置。
（付記３７）
前記ＬＤＣメモリ部は、少なくとも２つのメモリから構成され、
前記ＬＤＣメモリ部の少なくとも１つのメモリを前記パリティ演算結果生成回路からの前記パリティ演算結果の中間結果を格納するシンドローム保存用として使用するとともに、前記ＬＤＣメモリ部の少なくとも１つのメモリを外部メモリに前記パリティ演算結果を出力するデータ出力用として使用することを特徴とする付記３６に記載の誤り訂正装置。（付記３８）
前記ＥＤＣシンドローム生成回路から外部メモリに格納されたＥＤＣシンドロームが格納される補正メモリ部と、
前記誤り訂正回路により算出される誤り位置及び誤り数値に基づいて、前記補正メモリ部に格納されたＥＤＣシンドロームを補正するＥＤＣ補正回路と、を備えることを特徴とする付記１２〜３７のいずれか１つに記載の誤り訂正装置。
（付記３９）
誤り訂正装置とメモリとを含んで構成され、光ディスクに書き込まれたデータを読み出すデータ読み出し装置であって、
前記誤り訂正装置は、
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されたデータが書き込まれる高密度光ディスクから前記変調されたデータを読み出して、該変調されたデータを復調して復調されたデータとしてクラスタを生成する復調回路と、
前記復調回路からのクラスタが所定行数毎に分割された分割クラスタが格納される内蔵メモリ部と、
前記内蔵メモリ部を通じて、前記分割クラスタをデインターリーブ処理して生成したパリティ付加ブロックにおける各データが列方向に入力され、該各データに基づいてパリティ演算結果を前記パリティ付加ブロックの列毎に生成するパリティ演算結果生成回路と、
前記内蔵メモリ部を通じて、前記分割クラスタにデインターリーブ処理が施され、前記データブロックにおける各スクランブルデータが列方向に読み出しブロックとして入力され、該各スクランブルデータにデスクランブル処理を施したデスクランブルデータを生成するデスクランブル回路と、
前記メモリに格納された前記パリティ演算結果に基づいて、前記メモリに格納された前記デスクランブルデータに対して誤り訂正処理を行う誤り訂正回路と、を備え、
前記デスクランブル回路は、
前記内蔵メモリ部からの前記スクランブルデータが入力される第１排他的論理和回路と、
入力されたスクランブル値を、所定の第１生成多項式に従って１バイト分シフトさせて新たなスクランブル値を生成する第１シフト演算器と、
入力されたスクランブル値を、
｛（前記データブロックの列方向における全バイト数）＋１−（各読み出しブロックの列方向における全バイト数）｝
バイト分、前記第１生成多項式に従ってシフトさせて新たなスクランブル値を生成する第２シフト演算器と、
前記第１排他的論理和回路に入力される前記スクランブルデータの前記データブロックにおける位置に応じて、前記第１シフト演算器及び前記第２シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第１排他的論理和回路、前記第１シフト演算器及び前記第２シフト演算器に出力する第１選択回路と、を備えることを特徴とするデータ読み出し装置。
（付記４０）
所定数のデータフレームにスクランブル処理が施され、スクランブルされたデータフレームが所定サイズのデータブロックに変換され、該データブロックの各列にパリティが付加されたパリティ付加ブロックが生成され、該パリティ付加ブロックに対してインターリーブ処理が施されクラスタが生成され、該クラスタが変調されて光ディスクに書き込まれたデータの読み出しに使用されるデスクランブル回路であって、
読み出したデータが入力される第１排他的論理和回路と、
入力されたスクランブル値を、所定の第１生成多項式に従って１バイト分シフトさせて新たなスクランブル値を生成する第１シフト演算器と、
入力されたスクランブル値を、
｛（前記データブロックの列方向における全バイト数）＋１−（各読み出しブロックの列方向における全バイト数）｝
バイト分、前記第１生成多項式に従ってシフトさせて新たなスクランブル値を生成する第２シフト演算器と、
前記第１排他的論理和回路に入力される前記読み出したデータのデータブロックにおける位置に応じて、前記第１シフト演算器及び前記第２シフト演算器から入力されるスクランブル値のうちのいずれか一方のスクランブル値を前記第１排他的論理和回路、前記第１シフト演算器及び前記第２シフト演算器に出力する第１選択回路と、を備えることを特徴とするデスクランブル回路。
【符号の説明】
【０２５２】
１  光ディスク制御装置（データ読み出し装置）
４  ブルーレイディスク（高密度光ディスク）
６  外部バッファメモリ（外部メモリ）
１０  光ディスクコントローラ（誤り訂正装置）
１１，１１ａ  復調回路
１２，１２ｅ  内蔵メモリ部
１３  ＬＤＣシンドローム生成回路（パリティ演算結果生成回路）
１４  ＬＤＣメモリ部
１５，１５ａ  ＢＩＳメモリ部
１６，１６ａ  ＢＩＳシンドローム生成回路
２０，７０，１１５  デスクランブル回路
２１  ＥＯＲ回路（第１排他的論理和回路）
２４  １シフト演算器（第１シフト演算器）
２５  ２０９シフト演算器（第２シフト演算器）
２６  １０８シフト演算器（第３シフト演算器）
２８，７２  選択回路（第１選択回路）
３０，３０ａ，８０，９０  ＥＤＣシンドローム生成回路
３１  ＥＯＲ回路（第２排他的論理和回路）
３４  １シフト演算器（第１重み付け回路）
３５  ２０９シフト演算器（第２重み付け回路）
３６  １０８シフト演算器（第３重み付け回路）
３７  −２１１シフト演算器（第４重み付け回路）
３８  ＥＯＲ回路（第３排他的論理和回路）
３９，８２  選択回路（第２選択回路）
４０  ＥＤＣメモリ部
５０  誤り訂正回路
５１，５１ａ  訂正回路
５２，５２ａ  ＥＤＣ補正回路
５３  補正メモリ部
８１  作業メモリ
９１  ベクター生成回路
９４  ＥＯＲ回路（第４排他的論理和回路）
９７  選択回路（第３選択回路）
Ａ１〜Ａ１６  アンド回路
Ｂ１〜Ｂ１６  β−１シフト演算器（第１逆シフト演算器、第１逆シフト演算器群）
Ｂ１７  β−１６６４シフト演算器（第２逆シフト演算器）
Ｍ１〜Ｍ８,Ｍ１１，Ｍ１２  バッファメモリ
Ｒ２  偶数レジスタ（第１偶数レジスタ）
Ｒ３  奇数レジスタ（第２奇数レジスタ）
Ｒ４  偶数作業レジスタ
Ｒ５  奇数作業レジスタ
Ｒ２０  偶数レジスタ（第２偶数レジスタ）
Ｒ２１  奇数レジスタ（第２奇数レジスタ）
Ｒ２２  偶数ラインレジスタ
Ｒ２３  奇数ラインレジスタ
【図１】
0005365683.tif 000035
【図２】
0005365683.tif 000036
【図３】
0005365683.tif 000037
【図４】
0005365683.tif 000038
【図５】
0005365683.tif 000039
【図６】
0005365683.tif 000040
【図７】
0005365683.tif 000041
【図８】
0005365683.tif 000042
【図９】
0005365683.tif 000043
【図１０】
0005365683.tif 000044
【図１１】
0005365683.tif 000045
【図１２】
0005365683.tif 000046
【図１３】
0005365683.tif 000047
【図１４】
0005365683.tif 000048
【図１５】
0005365683.tif 000049
【図１６】
0005365683.tif 000050
【図１７】
0005365683.tif 000051
【図１８】
0005365683.tif 000052
【図１９】
0005365683.tif 000053
【図２０】
0005365683.tif 000054
【図２１】
0005365683.tif 000055
【図２２】
0005365683.tif 000056
【図２３】
0005365683.tif 000057
【図２４】
0005365683.tif 000058
【図２５】
0005365683.tif 000059
【図２６】
0005365683.tif 000060
【図２７】
0005365683.tif 000061
【図２８】
0005365683.tif 000062
【図２９】
0005365683.tif 000063
【図３０】
0005365683.tif 000064
【図３１】
0005365683.tif 000065
【図３２】
0005365683.tif 000066
【図３３】
0005365683.tif 000067
【図３４】
0005365683.tif 000068
【図３５】
0005365683.tif 000069
【図３６】
0005365683.tif 000070
【図３７】
0005365683.tif 000071
【図３８】
0005365683.tif 000072
【図３９】
0005365683.tif 000073
【図４０】
0005365683.tif 000074
【図４１】
0005365683.tif 000075
【図４２】
0005365683.tif 000076
【図４３】
0005365683.tif 000077