(57)【特許請求の範囲】
【請求項１】
二次元配列され、縦方向と横方向のそれぞれに誤り訂正符号が付加されたブロックデータに対して、ブロックデータの各列毎に誤り訂正を行う列誤り訂正と、ブロックデータの各行毎に誤り訂正処理を行う行誤り訂正とを行う誤り訂正方法において、
複数の列又は行に対する誤り訂正を並列に行なった後に、前記複数の行又は列に対する誤り訂正を並列に行うようにし、
前記ブロックデータは、前記複数の行又は列に対応したデータバス幅を有し、高速ページモードを備えたメモリに格納され、
前記データバス幅分の各列又は各行の誤り訂正後のデータ及び複数の行又は列の誤り訂正後のデータを、前記メモリの同一ページ内に格納するようにした誤り訂正方法。
【請求項２】
複数の行又は列から前記メモリのデータバス幅に対応した数のデータを一度に読み出し、その読み出した複数の行又は列のデータを並列に演算して各行又は列毎に誤り訂正を行うようにした請求項１に記載の誤り訂正方法。
【請求項３】
前記メモリには、各列又は各行に対する誤り訂正後のブロックデータが格納され、該メモリから複数の行又は列のデータ、又は各行又は列の複数のデータを順次読み出して各行又は列毎に誤り訂正を行うようにした請求項２に記載の誤り訂正方法。
【請求項４】
前記ブロックデータは、記録媒体にインタリーブされて記憶され、前記メモリには、各列又は各行に対する誤り訂正後に並び替えて格納するようにした請求項１，２又は３に記載の誤り訂正方法。
【請求項５】
前記各行，各列をそれぞれ符号語として扱い、符号語全体から各行・各列に対するシンドロームを演算し、前記シンドロームを基に各行，各列に対する誤りを訂正するようにした請求項１，２，３又は４に記載の誤り訂正方法。
【請求項６】
二次元配列され、縦方向と横方向のそれぞれに誤り訂正符号が付加されて外部に接続されたメモリに格納されたブロックデータに対して、ブロックデータの各列毎に誤り訂正を行う列誤り訂正と、ブロックデータの各行毎に誤り訂正処理を行う行誤り訂正とを行う誤り訂正回路を備えた誤り訂正装置において、
前記誤り訂正回路は、複数の列又は行に対する誤り訂正を並列に行なった後に、前記複数の行又は列に対する誤り訂正を並列に行うようにし、
前記メモリは、高速ページモードを備え、複数の行又は列に対応したデータバス幅に設定され、
前記メモリに誤り訂正後のブロックデータを格納するメモリ制御部は、前記データバス幅分の各列又は各行のデータ及び複数の行又は列のデータを前記メモリの同一ページ内に格納するようにした誤り訂正装置。
【請求項７】
前記誤り訂正回路は、前記メモリに格納された前記ブロックデータの複数の行又は列から前記メモリのデータバス幅に対応した数のデータを一度に読み出し、その読み出した複数の行又は列のデータを並列に演算して各行又は列毎に誤り訂正を行うようにした請求項６に記載の誤り訂正装置。
【請求項８】
前記誤り訂正回路は、各列に対する誤り訂正処理を行う列誤り訂正回路と、各行に対する誤り訂正処理を行う行誤り訂正回路とから構成され、
前記メモリ制御部は、前記メモリに行誤り訂正回路による誤り訂正後のブロックデータを格納するとともに、前記メモリに格納されたデータを、前記データバス幅に対応したデータ数毎に順次前記メモリから同時に読み出して前記列誤り訂正回路に出力する請求項７に記載の誤り訂正装置。
【請求項９】
前記ブロックデータは、記録媒体にインタリーブされて記憶され、
前記行誤り訂正回路は、記録媒体から読み出されたデータに対して誤り訂正し、訂正後のブロックデータを前記メモリ制御部に出力し、
前記メモリ制御部は、訂正後のデータを並び替えて前記メモリに記憶するようにした請求項６，７又は８に記載の誤り訂正装置。
【請求項１０】
前記列誤り訂正回路及び行誤り訂正回路は、それぞれ前記各行，各列を符号語として扱い、符号語全体から各行・各列に対するシンドロームを演算し、前記シンドロームを基に各行，各列に対する誤りを訂正するようにした請求項６，７，８又は９に記載の誤り訂正装置。
【請求項１１】
前記列誤り訂正回路は、訂正後の各列のデータを前記メモリに格納し、
その各列に対する誤り訂正後のデータを前記メモリのデータバス幅に対応したデータ数毎に読み出し、各行毎に誤り訂正処理を行う第２の行誤り訂正回路を備えた請求項６，７，８，９又は１０に記載の誤り訂正装置。
【請求項１２】
記録媒体から読み出したデータを読み出すデータ読み出し装置であって、
前記読み出されたデータに対して誤り訂正を行う請求項６，７，８，９，１０又は１１に記載の誤り訂正装置と、
前記誤り訂正装置により処理される複数の行又は列に対応したデータバス幅に設定され、ブロックデータを記憶するメモリとを備えたデータ読み出し装置。
【請求項１３】
高速ページモードを備えたメモリに対して、各行及び各列に対して誤り訂正記号が付加されたブロックデータを各列又は各行単位でアクセスし、各列の複数のデータを同時に演算して各列毎に誤り訂正を行い、複数の行のデータを並列に演算して各行毎に誤り訂正を行う誤り訂正装置におけるデータマッピング方法であって、
前記メモリのデータバス幅を、各列毎に同時に演算されるデータ数、又は、並列に演算される複数の行のデータ数に設定し、
前記データバス幅分の各列のデータ及び複数の行のデータを前記メモリの同一ページ内に格納するようにした誤り訂正装置のデータマッピング方法。
【請求項１４】
高速ページモードを備えたメモリに対して、各行及び各列に対して誤り訂正記号が付加されたブロックデータを各列又は各行単位でアクセスし、各行の複数のデータを同時に演算して各行毎に誤り訂正を行い、複数の列のデータを並列に演算して各列毎に誤り訂正を行う誤り訂正装置におけるデータマッピング方法であって、
前記メモリのデータバス幅を、各行毎に同時に演算されるデータ数、又は、並列に演算される複数の列のデータ数に設定し、
前記データバス幅分の各行のデータ及び複数の列のデータを前記メモリの同一ページ内に格納するようにした誤り訂正装置のデータマッピング方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は誤り訂正方法、誤り訂正装置、データ読み出し装置、及び、データマッピング方法に関する。
【０００２】
近年、光ディスク等の記憶媒体における記憶容量の大容量化に伴い、そのデータ読みとり時間の高速化も要求されている。特に、データ読みとりの際、その処理時間の長い誤り訂正処理装置においては、その処理時間の短縮化が要求されている。そのため、処理時間の短縮化を図る上で、誤り訂正処理におけるデータを格納するバッファメモリに対するアクセスの高速化を図る必要がある。
【０００３】
【従来の技術】
従来、記録媒体に記憶されたデータには、そのデータの読み出し時等に発生する誤りを訂正するために誤り訂正符号(ECC:Error Correcting Code) が予め付加されている。例えば、図１９に示すように、記録媒体に格納された１つのブロックデータ１１は、データ部１２と誤り訂正符号１３，１４とから構成されている。誤り訂正符号１３は、データ部１２の各列毎に演算されて付加されている。誤り訂正符号１４は、データ部１２と誤り訂正符号１３の各行毎に演算されて付加されている。
【０００４】
そして、記録媒体に対してデータの入出力を行うコントローラには、ブロックデータ１１の誤りを訂正する誤り訂正回路が備えられる。誤り訂正回路は、先ず、データ部１２及び誤り訂正符号１３，１４に基づいて、各行のデータを１バイト毎に読み出して順次演算し、その演算結果に基づいて各行のデータに発生する誤りを訂正する。その後、誤り訂正回路は、データ部１２及び誤り訂正符号１３に基づいて、各列のデータを１バイト毎に読み出して順次演算し、その演算結果に基づいて各列のデータに発生する誤りを訂正する。
【０００５】
従って、誤り訂正処理には、データ１２及び誤り訂正符号１３，１４の全てのデータが必要であり、誤り訂正回路には大容量のバッファメモリが接続される。誤り訂正回路は、バッファメモリに格納されたデータを読み出して誤り訂正処理を行い、その処理結果である訂正データをバッファメモリに格納する。そして、バッファメモリに格納された誤り訂正後のデータは、ホストコンピュータ等の外部機器に出力される。
【０００６】
【発明が解決しようとする課題】
ところで、近年では、ホストコンピュータの処理速度の高速化に伴い、記憶装置に対するデータの読み出し／書き込み速度の高速化が要求されている。例えば、光ディスク等の記録装置では、記録媒体である光ディスクを基準の速度の２倍以上、例えば、４倍の速度で回転制御し、読み出し速度の高速化が図られる。
【０００７】
しかしながら、バッファメモリに対するアクセスにより、読み出し速度の高速化が難しい場合がある。即ち、バッファメモリには、ブロックデータ１１の各行毎にデータの読み出しと、訂正データの書き込みが繰り返し行われる。即ち、外部バッファメモリに対して多くのアクセスが行われるため、アクセス速度を高速化することが難しく、誤り訂正処理を高速化することができない。
【０００８】
本発明は上記問題点を解決するためになされたものであって、その目的は、データのアクセス時間を短くして読み出し時間の高速化を図ることができる誤り訂正方法を提供することにある。
【０００９】
また、データのアクセス時間を短くして読み出し時間の高速化を図ることができる誤り訂正装置、及び、データ読み出し装置を提供することにある。
更に、誤り訂正処理におけるデータのアクセス時間の短縮をはかることができるデータマッピング方法を提供することにある。
【００１０】
【課題を解決するための手段】
本発明は上記目的を達成するため、請求項１に記載の発明は、二次元配列され、縦方向と横方向のそれぞれに誤り訂正符号が付加されたブロックデータに対して、ブロックデータの各列毎に誤り訂正を行う列誤り訂正と、ブロックデータの各行毎に誤り訂正処理を行う行誤り訂正とを行う誤り訂正方法において、複数の列又は行に対する誤り訂正を並列に行なった後に、前記複数の行又は列に対する誤り訂正を並列に行うようにし、前記ブロックデータは、前記複数の行又は列に対応したデータバス幅を有し、高速ページモードを備えたメモリに格納され、前記データバス幅分の各列又は各行の誤り訂正後のデータ及び複数の行又は列の誤り訂正後のデータを、前記メモリの同一ページ内に格納するようにした。
【００１２】
また、請求項２に記載の発明は、請求項１に記載の誤り訂正方法において、複数の行又は列から前記メモリのデータバス幅に対応した数のデータを一度に読み出し、その読み出した複数の行又は列のデータを並列に演算して各行又は列毎に誤り訂正を行うようにした。
【００１４】
また、請求項３に記載の発明は、請求項２に記載の誤り訂正方法において、前記メモリには、各列又は各行に対する誤り訂正後のブロックデータが格納され、該メモリから複数の行又は列のデータ、又は各行又は列の複数のデータを順次読み出して各行又は列毎に誤り訂正を行うようにした。
【００１５】
また、請求項４に記載の発明は、請求項１，２又は３に記載の誤り訂正方法において、前記ブロックデータは、記録媒体にインタリーブされて記憶され、前記メモリには、各列又は各行に対する誤り訂正後に並び替えて格納するようにした。
【００１６】
また、請求項５に記載の発明は、請求項１，２，３又は４に記載の誤り訂正方法において、前記各行，各列をそれぞれ符号語として扱い、符号語全体から各行・各列に対するシンドロームを演算し、前記シンドロームを基に各行，各列に対する誤りを訂正するようにした。
【００１７】
また、請求項６に記載の発明は、二次元配列され、縦方向と横方向のそれぞれに誤り訂正符号が付加されて外部に接続されたメモリに格納されたブロックデータに対して、ブロックデータの各列毎に誤り訂正を行う列誤り訂正と、ブロックデータの各行毎に誤り訂正処理を行う行誤り訂正とを行う誤り訂正回路を備えた誤り訂正装置において、前記誤り訂正回路は、複数の列又は行に対する誤り訂正を並列に行なった後に、前記複数の行又は列に対する誤り訂正を並列に行うようにし、前記メモリは、高速ページモードを備え、複数の行又は列に対応したデータバス幅に設定され、前記メモリに誤り訂正後のブロックデータを格納するメモリ制御部は、前記データバス幅分の各列又は各行のデータ及び複数の行又は列のデータを前記メモリの同一ページ内に格納するようにした。
【００１９】
また、請求項７に記載の発明は、請求項６に記載の誤り訂正装置において、前記誤り訂正回路は、前記メモリに格納された前記ブロックデータの複数の行又は列から前記メモリのデータバス幅に対応した数のデータを一度に読み出し、その読み出した複数の行又は列のデータを並列に演算して各行又は列毎に誤り訂正を行うようにした。
【００２１】
また、請求項８に記載の発明は、請求項７に記載の誤り訂正装置において、前記誤り訂正回路は、各列に対する誤り訂正処理を行う列誤り訂正回路と、各行に対する誤り訂正処理を行う行誤り訂正回路とから構成され、前記メモリ制御部は、前記メモリに行誤り訂正回路による誤り訂正後のブロックデータを格納するとともに、前記メモリに格納されたデータを、前記データバス幅に対応したデータ数毎に順次前記メモリから同時に読み出して前記列誤り訂正回路に出力する。
【００２２】
また、請求項９に記載の発明は、請求項６，７又は８に記載の誤り訂正装置において、前記ブロックデータは、記録媒体にインタリーブされて記憶され、前記行誤り訂正回路は、記録媒体から読み出されたデータに対して誤り訂正し、訂正後のブロックデータを前記メモリ制御部に出力し、前記メモリ制御部は、訂正後のデータを並び替えてメモリに記憶するようにした。
【００２３】
また、請求項１０に記載の発明は、請求項６，７，８又は９に記載の誤り訂正装置において、前記列誤り訂正回路及び行誤り訂正回路は、それぞれ前記各行，各列を符号語として扱い、符号語全体から各行・各列に対するシンドロームを演算し、前記シンドロームを基に各行，各列に対する誤りを訂正するようにした。
【００２４】
また、請求項１１に記載の発明は、請求項６，７，８，９又は１０に記載の誤り訂正装置において、前記列誤り訂正回路は、訂正後の各列のデータを前記メモリに格納し、その各列に対する誤り訂正後のデータを前記メモリのデータバス幅に対応したデータ数毎に読み出し、各行毎に誤り訂正処理を行う第２の行誤り訂正回路を備えた。
【００２６】
また、請求項１２に記載の発明は、記録媒体から読み出したデータを読み出すデータ読み出し装置であって、前記読み出されたデータに対して誤り訂正を行う請求項６，７，８，９，１０又は１１に記載の誤り訂正装置と、前記誤り訂正装置により処理される複数の行又は列に対応したデータバス幅に設定され、ブロックデータを記憶するメモリとを備えた。
【００２７】
また、請求項１３に記載の発明は、高速ページモードを備えたメモリに対して、各行及び各列に対して誤り訂正記号が付加されたブロックデータを各列又は各行単位でアクセスし、各列の複数のデータを同時に演算して各列毎に誤り訂正を行い、複数の行のデータを並列に演算して各行毎に誤り訂正を行う誤り訂正装置におけるデータマッピング方法であって、前記メモリのデータバス幅を、各列毎に同時に演算されるデータ数、又は、並列に演算される複数の行のデータ数に設定し、前記データバス幅分の各列のデータ及び複数の行のデータを前記メモリの同一ページ内に格納するようにした。
【００２８】
請求項１４に記載の発明は、高速ページモードを備えたメモリに対して、各行及び各列に対して誤り訂正記号が付加されたブロックデータを各列又は各行単位でアクセスし、各行の複数のデータを同時に演算して各行毎に誤り訂正を行い、複数の列のデータを並列に演算して各列毎に誤り訂正を行う誤り訂正装置におけるデータマッピング方法であって、前記メモリのデータバス幅を、各行毎に同時に演算されるデータ数、又は、並列に演算される複数の列のデータ数に設定し、前記データバス幅分の各行のデータ及び複数の列のデータを前記メモリの同一ページ内に格納するようにした。
【００２９】
（作用）
従って、請求項１に記載の発明によれば、二次元配列され、縦方向と横方向のそれぞれに誤り訂正符号が付加されたブロックデータの複数の列又は行に対する誤り訂正が並列に行なわれた後に、前記複数の行又は列に対する誤り訂正が並列に行われる。メモリは、高速ページモードを備えており、メモリ制御部は、データバス幅分の各列又は各行の誤り訂正後のデータ及び複数の行又は列の誤り訂正後のデータをメモリの同一ページ内に格納する。
【００３１】
また、請求項２に記載の発明によれば、複数の行又は列からメモリのデータバス幅に対応した数のデータが一度に読み出され、その読み出された複数の行又は列のデータが並列に演算されて各行又は列毎に誤り訂正が行われる。
【００３３】
また、請求項３に記載の発明によれば、メモリには、各列又は各行に対する誤り訂正後のブロックデータが格納され、そのメモリから複数の行又は列のデータ、又は各行又は列の複数のデータが順次読み出されて各行又は列毎に誤り訂正が行われる。
【００３４】
また、請求項４に記載の発明によれば、ブロックデータは、記録媒体にインタリーブされて記憶され、メモリには、各列又は各行に対する誤り訂正後に並び替えて格納される。
【００３５】
また、請求項５に記載の発明によれば、各行，各列がそれぞれ符号語として扱われ、符号語全体から各行・各列に対するシンドロームが演算され、シンドロームを基に各行，各列に対する誤りが訂正される。
【００３６】
また、請求項６に記載の発明によれば、二次元配列され、縦方向と横方向のそれぞれに誤り訂正符号が付加されて外部に接続されたメモリに格納されたブロックデータに対して、複数の列又は行に対する誤り訂正を並列に行なった後に、前記複数の行又は列に対する誤り訂正を並列に行う誤り訂正回路が備えられる。メモリは、高速ページモードを備えており、メモリ制御部は、データバス幅分の各列又は各行のデータ及び複数の行又は列のデータをメモリの同一ページ内に格納する。
【００３８】
また、請求項７に記載の発明によれば、誤り訂正回路は、メモリに格納されたブロックデータの複数の行又は列からメモリのデータバス幅に対応した数のデータが一度に読み出され、その読み出された複数の行又は列のデータが並列に演算されて各行又は列毎に誤り訂正が行われる。
【００４０】
また、請求項８に記載の発明によれば、誤り訂正回路は、各列に対する誤り訂正処理を行う列誤り訂正回路と、各行に対する誤り訂正処理を行う行誤り訂正回路とから構成され、メモリには、行誤り訂正回路による誤り訂正後のブロックデータが格納される。メモリ制御部は、メモリに格納されたデータを、データバス幅に対応したデータ数毎に順次メモリから同時に読み出して列誤り訂正回路に出力する。
【００４１】
また、請求項９に記載の発明によれば、ブロックデータは、記録媒体にインタリーブされて記憶され、行誤り訂正回路は、記録媒体から読み出されたデータに対して誤り訂正し、訂正後のブロックデータをメモリ制御部に出力し、メモリ制御部は、訂正後のデータを並び替えてメモリに記憶する。
【００４２】
また、請求項１０に記載の発明によれば、列誤り訂正回路及び行誤り訂正回路は、それぞれ各行，各列を符号語として扱い、符号語全体から各行・各列に対するシンドロームを演算し、シンドロームを基に各行，各列に対する誤りを訂正する。
【００４３】
また、請求項１１に記載の発明によれば、列誤り訂正回路は、訂正後の各列のデータをメモリに格納し、その各列に対する誤り訂正後のデータをメモリのデータバス幅に対応したデータ数毎に読み出し、各行毎に誤り訂正処理を行う第２の行誤り訂正回路を備える。
【００４５】
また、請求項１２に記載の発明によれば、記録媒体から読み出されたデータに対して誤り訂正が行われる。メモリは、誤り訂正処理される複数の行又は列に対応したデータバス幅に設定され、ブロックデータが記憶される。
【００４６】
また、請求項１３に記載の発明によれば、高速ページモードを備えたメモリに対して、各行及び各列に対して誤り訂正記号が付加されたブロックデータが各列又は各行単位でアクセスされ、各列の複数のデータが同時に演算されて各列毎に誤り訂正が行われる。そのメモリのデータバス幅が、各列毎に同時に演算されるデータ数、又は、並列に演算される複数の行のデータ数に設定され、データバス幅分の各列のデータ及び複数の行のデータがメモリの同一ページ内に格納される。
【００４７】
また、請求項１４に記載の発明によれば、高速ページモードを備えたメモリに対して、各行及び各列に対して誤り訂正記号が付加されたブロックデータが各列又は各行単位でアクセスされ、各行の複数のデータが同時に演算されて各行毎に誤り訂正が行われる。そのメモリのデータバス幅が、各行毎に同時に演算されるデータ数、又は、並列に演算される複数の列のデータ数に設定され、データバス幅分の各行のデータ及び複数の列のデータをメモリの同一ページ内に格納される。
【００４８】
【発明の実施の形態】
（第一実施形態）
以下、本発明を具体化した第一実施形態を図１〜図１０に従って説明する。
【００４９】
図１に示すように、光ディスク制御装置２１は、ＡＴＡＰＩ(AT attachment packet interface)等の所定のインターフェースを介してコンピュータ２２に接続されている。また、光ディスク制御装置２１は、インターフェースを介して光ディスク駆動装置２３に接続されている。
【００５０】
光ディスク駆動装置２３は、記録媒体としてのデジタルビデオディスク（ＤＶＤ：Digital Video Disk）２４を所定の速度で回転駆動するとともに、ＤＶＤ２４に記録されたデータを図示しない光ピックアップにより読み出す。そして、光ディスク駆動装置２３は、読み出しデータを光ディスク制御装置２１に出力する。
【００５１】
光ディスク制御装置２１は、光ディスクコントローラ２５、マイクロプロセッサ２６、記憶装置としての外部バッファメモリ２７、インターフェース回路２８、及び、入出力駆動回路２９を備える。
【００５２】
光ディスクコントローラ（以下、単にコントローラという）２５は、光ディスク駆動装置２３への命令送信及びステータス受領と、光ディスクからの読み出しフォーマット解読及びエラー訂正と、光ディスク駆動装置２３と外部バッファメモリ２７との間のデータ転送と、インターフェース回路２８と外部バッファメモリ２７との間のデータ転送等の各処理を行う。
【００５３】
また、コントローラ２５には、光ディスク駆動装置２３から出力される読み出しデータが入出力駆動回路２９を介して入力される。コントローラ２５は、入力されるデータに誤り訂正等の処理を施して外部バッファメモリ２７に格納する。そして、コントローラ２５は、マイクロプロセッサ２６の命令に基づいて、バッファメモリに格納したデータをインターフェース回路２８を介して外部機器としてのコンピュータ２２に転送する。
【００５４】
ここで、ＤＶＤ２４に記録されたデータについて説明する。
記録媒体としてデジタルビデオディスク（ＤＶＤ：Digital Video Disk）等の光ディスクにおいては、記憶容量が膨大な上、ディスクの製造時の欠陥等や、ディスクの表面に付着した汚れ等によって、読み出したデータの誤り発生率が非常に高い。そのため、図８に示すように、ＤＶＤ２４に記録された１つのブロックデータ３１には、情報記号（データ部分）３２、第１誤り訂正符号（第１ＥＣＣ部分）３３、及び、第２誤り訂正符号（第２ＥＣＣ部分）３４が格納される。
【００５５】
データ部分３２は、複数（本実施形態では１６個）のデータセクタ３５により構成される。図９に示すように、各データセクタ３５は、４バイトの識別データＩＤ、２バイトのＩＤ誤り検出符号ＩＥＣ、６バイトの予約領域ＲＳＶ、２０４８バイト（２Ｋバイト）のデータＤＡＴＡ、及び、４バイトの誤り検出符号ＥＤＣとから構成される。即ち、データセクタ３５は、２０６４バイトのデータから構成され、データ部分３２は、約３３Ｋバイト（３３０２４バイト＝２０６４バイト×１６セクタ）のデータから構成される。
【００５６】
図８に示すように、データ部分３２の各データは、所定の行数及び列数（本実施形態では、１９２行×１７２列）の二次元配列に並べられる。ここで、データ部分３２を構成する各データを、列方向（図８において縦方向）の座標値ｘ（０≦ｘ≦１９１）と、行方向（図８において横方向）の座標値ｙ（０≦ｙ≦１７１）とを用いてデータＢ(x,y) として表すものとする。すると、データ部分３２は、データＢ(0,0) 〜データＢ(191,171) により構成される。
【００５７】
そして、データ部分３２には、各列毎のデータに基づいて演算された第１ＥＣＣ部分３３が付加されている。第１ＥＣＣ部分３３は、所定の誤り訂正符号（例えば、リード・ソロモン符号(Reed-Solomon code) ）よりなり、各列のデータ数に対応して、所定のバイト数（本実施形態では１６バイト）の誤り訂正符号が演算され付加されている。第１ＥＣＣ部分３３を構成する各符号を、データ部分３２と同様に、列方向の座標値ｘ（１９２≦ｘ≦２０７）と、行方向の座標値ｙ（０≦ｙ≦１７１）とを用いてデータＢ(x,y) として表すものとする。すると、第１ＥＣＣ部分３３の各符号（データ）は、データＢ（192,0)〜Ｂ(207,171) により構成される。
【００５８】
そして、第１ＥＣＣ部分３３の１列目のデータＢ(192,0) 〜Ｂ(207,0) は、データ部分３２の１列目のデータＢ(0,0) 〜Ｂ(191,0) に基づいて演算され、付加されている。同様に、第１ＥＣＣ部分３３の２列目のデータＢ(192,1) 〜Ｂ(207,1) から１７２列目のデータＢ(192,171) 〜Ｂ(207,171) は、それぞれデータ部分３２の２列目のデータＢ(0,1) 〜Ｂ(191,1) から１７２列目のデータＢ(0,171) 〜Ｂ(191,171) のデータに基づいて演算され、付加されている。
【００５９】
更に、データ部分３２及び第１ＥＣＣ部分３３には、各行毎のデータに基づいて演算された第２ＥＣＣ部分３４が付加されている。第２ＥＣＣ部分３４は、所定の誤り訂正符号（リード・ソロモン符号）よりなり、各行のデータ数に対応した所定のバイト数（本実施形態では１０バイト）の誤り訂正符号が演算され付加されている。第２ＥＣＣ部分３４を構成する各符号を、データ部分３２，第１ＥＣＣ部分３３と同様に、列方向の座標値ｘ（０≦ｘ≦２０７）と、行方向の座標値ｙ（１７２≦ｙ≦１８１）とを用いてデータＢ(x,y) として表すものとする。すると、第２ＥＣＣ部分３４の各符号（データ）は、データＢ（0,172)〜Ｂ(207,181) により構成される。
【００６０】
そして、第２ＥＣＣ部分３４の１行目のデータＢ(0,172) 〜Ｂ(0,181) は、データ部分３２の１行目のデータＢ(0,0) 〜Ｂ(0,171) に基づいて演算され、付加されている。同様に、第２ＥＣＣ部分３４の２行目のデータＢ(1,172) 〜Ｂ(1,181) から１９２行目のデータＢ(191,172) 〜Ｂ(191,181) は、それぞれデータ部分３２の２行目のデータＢ(1,0) 〜Ｂ(1,171) から１９２行列目のデータＢ(191,0) 〜Ｂ(191,171) のデータに基づいて演算され、付加されている。
【００６１】
更に、第２ＥＣＣ部分３４の１９３行目のデータＢ(192,172) 〜Ｂ(192,181) から２０８列目のデータＢ(207,172) 〜Ｂ(207,181) は、それぞれ第１ＥＣＣ部分３３の１９３列目のデータＢ(192,0) 〜Ｂ(192,171) から２０８列目のデータＢ(207,0) 〜Ｂ(207,171) のデータに基づいて演算され、付加されている。
【００６２】
従って、図１に示されるコントローラ２５は、先ず、１つのブロックデータ３１の各行のデータに対して誤り訂正処理を行い、その後、各列のデータに対して誤り訂正処理を行う。即ち、コントローラ２５は、データ部分３２、第１ＥＣＣ部分３３、及び、第２ＥＣＣ部分３４を１つの二次元配列として扱う。
【００６３】
そして、コントローラ２５は、二次元配列された１つのブロックデータ３１の各行をそれぞれ符号語として扱う。配列の１つの行、即ち、１つの符号語を１インタリーブという。
【００６４】
コントローラ２５は、インタリーブ毎に誤り訂正処理を行う。先ず、コントローラ２５は、インタリーブ毎に符号語全体からシンドロームを求める。次に、コントローラ２５は、シンドロームを基に、誤りの位置多項式と数値多項式を求める。この時の方法としては、例えば、ユークリッド互除アルゴリズムが用いられる。
【００６５】
そして、コントローラ２５は、誤り位置多項式及び誤り数値多項式を基に、誤り位置及び誤り数値を求め、該当する位置のデータの誤りを訂正する。即ち、符号語の何番目のデータがどのように誤っているかを求めるわけである。この時の方法としては、たとえは、チェンのアルゴリズム（チェンサーチ）が用いられる。
【００６６】
次に、コントローラ２５は、二次元配列された１つのブロックデータ３１の各列をそれぞれ符号語（インタリーブ）として扱う。そして、コントローラ２５は、前記の各行のインタリーブと同様に、各列のインタリーブ毎に誤り訂正処理を行う。即ち、コントローラ２５は、各列のインタリーブ毎に符号語全体からシンドロームを求め、そのシンドロームを基に符号語の誤り位置及び誤り数値を求めて誤りを訂正する。
【００６７】
従って、コントローラ２５は、１つのブロックデータ３１の各行と各列をそれぞれ符号語（インタリーブ）として扱い、各インタリーブ毎に誤り訂正処理を行う。ここで、符号語として扱う各行と各列を互いに区別するため、以下、符号語として扱う各列を列インタリーブといい、符号語として扱う各行を行インタリーブという。
【００６８】
即ち、図８に示すように、１つのブロックデータ３１は、２０８行の行インタリーブＨ０〜Ｈ２０７で表される。行インタリーブＨ０は、１行目のデータＢ(0,0) 〜Ｂ(0,181) により構成される。同様に、行インタリーブＨ１〜Ｈ２０７は、２行目のデータＢ(1,0) 〜Ｂ(1,181) から２０８行目のデータＢ(207,0) 〜Ｂ(207,181) により構成される。
【００６９】
また、１つのブロックデータ３１は、１８２列の列インタリーブＶ０〜Ｖ１８２で表される。列インタリーブＶ０は、１列目のデータＢ(0,0) 〜Ｂ(207,0) により構成される。同様に、列インタリーブＶ１〜Ｖ２０７は、２列目のデータＢ(0,1) 〜Ｂ(207,1) から２０８列目のデータＢ(0,181) 〜Ｂ(207,181) により構成される。
【００７０】
図１に示されるコントローラ２５は、１つのブロックデータ３１に対して誤り訂正処理を行う場合に、先ず、各行インタリーブＨ０〜Ｈ２０７に対して誤り訂正処理を行う。その後、コントローラ２５は、各列インタリーブＶ０〜Ｖ１７１に対して誤り訂正処理を行う。
【００７１】
ところで、１つのブロックデータ３１は、実際には、データ部分３２と第１ＥＣＣ部分３３とがそれぞれ所定数に分割されるとともにインターリーブされ、図１に示されるＤＶＤ２４に格納される。図１０に示すように、１つのブロックデータ３１のデータ部分３２は、複数の部分（本実施形態では１６個）に分割され、各部分には、それぞれ第１ＥＣＣ部分３３が分割されインタリーブされている。そして、分割された１つの部分とインタリーブされた第１ＥＣＣ部分３３の列により１つの記録セクタ（１クラスタ）が構成される。
【００７２】
即ち、１つのブロックデータ３１は、１６個のクラスタＣ０〜Ｃ１５から構成される。各クラスタＣ０〜Ｃ１５は、それぞれデータ部分３２のうちの分割された１２行分のデータと、第１ＥＣＣ部分３３のうちの分割された１行分のデータとから構成される。
【００７３】
即ち、クラスタＣ０は、行インタリーブＨ０〜Ｈ１１と、インタリーブされた行インタリーブＨ１９２とから構成され、ＤＶＤ２４に格納されている。そして、クラスタＣ１５は、行インタリーブＨ１８０〜Ｈ１９１と、インタリーブされた行インタリーブＨ２０７とから構成され、ＤＶＤ２４に格納されている。
従って、ＤＶＤ２４に格納されたデータは、クラスタＣ０から順次読み出される。即ち、クラスタＣ０において、図１０に示すように、先ず１行目（図１０において１番上の行）の行インタリーブＨ０から１２行目の行インタリーブＨ１１が読み出されると、次に１３行目にインタリーブされた行インタリーブＨ１９２が読み出され、クラスタＣ０の読み出しが終了し、次のクラスタＣ１が読み出される。尚、クラスタＣ１〜Ｃ１５における読み出しの順番は、クラスタＣ０と同じであるため、説明を省略する。
【００７４】
読み出されたクラスタＣ０の行インタリーブＨ０〜Ｈ１１，Ｈ１９２は、その読み出された順番でコントローラ２５に入力される。コントロ−ラ２５は、入力される行インタリーブＨ０〜Ｈ１１，Ｈ１９毎にシンドロームを生成し、その生成したシンドロームデータに基づいて各行インタリーブＨ０〜Ｈ１１，Ｈ１９２に対する誤り訂正処理を行う。そして、コントローラ２５は、誤り訂正した各行インタリーブＨ０〜Ｈ１１，Ｈ１９２を一旦外部バッファメモリ２７に格納する。外部バッファメモリ２７は、複数のブロックデータ３１を格納することができる。
【００７５】
即ち、コントローラ２５は、行インタリーブＨ０を入力し、その行インタリーブＨ０に対する誤り訂正処理を行う。その誤り訂正処理において、コントローラ２５は、行インタリーブＨ０のシンドロームを生成し、そのシンドロームに基づいて行インタリーブＨ０の誤り訂正を行う。そして、コントローラ２５は、訂正処理後の行インタリーブＨ０を外部バッファメモリ２７に一旦格納する。
【００７６】
次に、コントローラ２５は、行インタリーブＨ１〜Ｈ１１，Ｈ１９２を順次入力し、各行インタリーブＨ１〜Ｈ１１，Ｈ１９２毎にシンドロームを生成し、誤り訂正処理を行い、訂正後の各行インタリーブＨ１〜Ｈ１１，Ｈ１９２を外部バッファメモリ２７に一旦格納する。そして、訂正後の行インタリーブＨ１９２を外部バッファメモリ２７に格納すると、コントローラ２５は、次にクラスタＣ１の各行インタリーブを順に入力する。コントローラ２５は、クラスタＣ０と同様にクラスタＣ１の各行インタリーブに対する誤り訂正処理を行った後、訂正後の各行インタリーブを外部バッファメモリ２７に一旦格納する。更に、コントローラ２５は、クラスタＣ２〜Ｃ１５の行インタリーブを順に入力し、各行インタリーブに対して誤り訂正処理を行った後、訂正後の各行インタリーブを外部バッファメモリ２７に一旦格納する。
【００７７】
この時、コントローラ２５は、インタリーブされた各行の並び替えを同時に行う。例えば、クラスタＣ０の各行インタリーブＨ０〜Ｈ１１，Ｈ１９２に対して、コントローラ２５は、外部バッファメモリ２７に対して、クラスタＣ０の行インタリーブＨ０〜Ｈ１１を１行目から１２行目となるように格納する。そして、コントローラ２５は、行インタリーブＨ１９２を１９３行目となるように外部バッファメモリ２７に格納する。
【００７８】
１つのブロックデータ３１を構成する全てのデータ、即ち、行インタリーブＨ０〜Ｈ２０７を外部バッファメモリ２７に一旦格納すると、コントローラ２５は、次に、列インタリーブＶ０〜Ｖ１８１に対する誤り訂正処理を行う。即ち、コントローラ２５は、外部バッファメモリに格納された１つのブロックデータ３１の列インタリーブＶ０〜Ｖ１８１を読み出す。そして、コントローラ２５は、読み出した各列インタリーブＶ０〜Ｖ１８１のシンドロームを生成し、そのシンドロームに基づいて各列インタリーブＶ０〜Ｖ１８１に対する誤り訂正処理を行う。
【００７９】
この時、コントローラ２５は、外部バッファメモリ２７のデータバス幅に対応した複数の列インタリーブに対するシンドロームの生成を並列に行う。各列インタリーブＶ０〜Ｖ１８１の各データＢ(0,0) 〜Ｂ(207,0) からＢ(0,181) 〜Ｂ(207,181) はそれぞれ１バイト（８ビット）よりなる。従って、外部バッファメモリ２７のデータバス幅は、複数バイト（８ビットの整数倍）に設定されている。
【００８０】
コントローラ２５は、各列インタリーブＶ０〜Ｖ１８１のうちの複数の列インタリーブから１バイトずつ、合計複数バイトのデータを入力する。そして、コントローラ２５は、読み出したデータを各列インタリーブ毎に演算して各列に対するシンドロームを平行して生成する。
【００８１】
例えば、外部バッファメモリ２７のデータバス幅が２バイト（１６ビット＝８ビット×２）に設定されている場合について説明する。この場合、コントローラ２５は、２つの列インタリーブ、例えば、列インタリーブＶ０，Ｖ１から１バイトずつ、即ち、図８において横方向のデータＢ(0,0) とデータＢ(0,1) とを読み出す。次に、コントローラ２５は、列インタリーブＶ０，Ｖ１からそれぞれデータＢ(1,0) ，Ｂ(1,1) を読み出す。同様に、列インタリーブＶ０，Ｖ１からそれぞれデータＢ(2,0) 〜Ｂ(207,0) ，Ｂ(2,1) 〜Ｂ(207,1) を読み出す。
【００８２】
そして、コントローラ２５は、読み出したデータＢ(0,0) ，Ｂ(0,1) ，Ｂ(1,0) ，Ｂ(1,1) ，〜，Ｂ(207,0) ，Ｂ(207,1) を各列インタリーブＶ０，Ｖ１毎、即ち、データＢ(0,0) 〜Ｂ(207,0) を演算して列インタリーブＶ０に対応するシンドロームと、データＢ(0,1) 〜Ｂ(207,1) を演算して列インタリーブＶ１に対応するシンドロームとを生成する。
【００８３】
即ち、コントローラ２５は、１つのブロックデータ３１を、外部バッファメモリ２７のデータバス幅に対応した数だけ列方向に読み出す。従って、コントローラ２５は、列インタリーブＶ０〜Ｖ１８１に対して誤り訂正処理を行う場合、各列インタリーブＶ０〜Ｖ１８１毎にデータを読み出す場合に比べて外部バッファメモリ２７から読み出す回数、即ち、外部バッファメモリ２７に対するアクセス回数が少なくなる。
【００８４】
例えば、外部バッファメモリ２７のデータバス幅が２バイトの場合、アクセス回数は従来の１／２になり、データバス幅が４バイトの場合、アクセス回数は従来の１／４になる。その結果、コントローラ２５から列インタリーブに対する誤り訂正処理におけるアクセス回数が少なくなった分、外部バッファメモリ２７に対するアクセスの負荷が少なくなる。また、列インタリーブに対する誤り訂正処理におけるアクセス回数が少なくなった分、他からのアクセス、行インタリーブに対する誤り訂正後のデータ格納や、図１中のコンピュータ２２等の外部機器へのデータの読み出しのためのアクセス回数を増やす、即ち、処理の高速化を図ることができる。
【００８５】
次に、コントローラ２５の構成を、図２に従って詳述する。
コントローラ２５は、信号処理部４１、復調回路部４２、誤り訂正回路部４３、及び、バッファメモリ制御部４４を備える。
【００８６】
信号処理部４１には、ＤＶＤ２４から読み出されたデータが順次入力される。信号処理部４１は、入力されるデータをデジタルデータに変換するとともに、変換したデジタルデータに同期したクロック信号ＣＬＫを生成する。そして、信号処理部４１は、変換したデジタルデータを復調回路部４２に出力し、生成したクロック信号ＣＬＫを復調回路部４２，誤り訂正回路部４３等に出力する。
【００８７】
復調回路部４２は、信号処理部４１から入力されるクロック信号ＣＬＫに同期して動作し、所定の方式、例えば、ＥＦＭplus(Eight-to-Fourteen Modulation plus) 方式等により信号処理部４１から入力されるデータを復調する。そして、復調回路部４２は、復調後のデータを誤り訂正回路部４３に出力する。
【００８８】
誤り訂正回路部４３は、ＰＩシンドローム生成部（ＰＩｓｙｄ部）４５、ＰＩ誤り訂正部（ＰＩｅｃｃ部）４６、ＰＯシンドローム生成部（ＰＯｓｙｄ部）４７、ＰＯ誤り訂正部（ＰＯｅｃｃ部）４８により構成される。ＰＩｓｙｄ部４５及びＰＩｅｃｃ部４６は、図８に示されるブロックデータ３１の各行インタリーブＨ０〜Ｈ２０７に対する誤り訂正を行うために設けられ、行誤り訂正回路４９を構成している。
【００８９】
ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８は、図８に示されるブロックデータ３１の各列インタリーブＶ０〜Ｖ１８１に対する誤り訂正を行うために設けられ、列誤り訂正回路５０を構成している。
【００９０】
ＰＩｓｙｄ部４５は、図８に示される各行インタリーブＨ０〜Ｈ２０７に対して、各行インタリーブ毎にシンドロームを生成するために設けられている。尚、各行インタリーブＨ０〜Ｈ２０７に対する処理は同じであるため、ここでは、行インタリーブＨ０に対する処理のみを説明し、行インタリーブＨ１〜Ｈ２０７に対する処理の説明を省略する。
【００９１】
図３に示すように、ＰＩｓｙｄ部４５は、生成するシンドロームのデータ数に対応した複数のシンドローム演算器５１を備える。各シンドローム演算器５１は、それぞれ排他的論理和回路（以下、ＥＯＲ回路という）５２、８ビットのフリップフロップ回路（以下、単にＦＦという）５３、及び、乗算回路（Ｇ．ＭＵＬ）５４により構成される。
【００９２】
各シンドローム演算器５１の乗算回路５４には、それぞれガロア体よりなる乗数が予め設定されている。各乗算回路５４に設定される乗数は、それぞれ異なる値であり、生成するシンドロームに基づいて設定されている。
【００９３】
図４に示すように、各シンドローム演算器５１には、信号処理部４２により生成され出力されるクロック信号ＣＬＫに同期して行インタリーブＨ０のデータＢ(0,0) 〜Ｂ(0,181) が順次入力される。即ち、各シンドローム演算器５１には、その時々において同じデータ（例えば、データＢ(0,0) ）が入力される。
【００９４】
そして、各シンドローム演算器５１は、クロック信号ＣＬＫに同期動作し、順次入力されるデータＢ(0,0) 〜Ｂ(0,181) に基づいてシンドロームを生成する。即ち、ＰＩｓｙｄ部４５は、各行インタリーブＨ０〜Ｈ２０７を順次入力する。そして、ＰＩｓｙｄ部４５は、各行インタリーブＨ０〜Ｈ２０７毎にシンドロームを生成する。
【００９５】
ＰＩｅｃｃ部４６は、ＰＩｓｙｄ部４５にて生成されたシンドロームを基に、各行インタリーブＨ０〜Ｈ２０７の誤りを訂正するために設けられている。ＰＩｅｃｃ部４６には、１つの行インタリーブ分に対応した容量の内部バッファメモリ４６ａが備えられる。ＰＩｅｃｃ部４６には、各行インタリーブＨ０〜Ｈ２０７が順次入力され、各行インタリーブＨ０〜Ｈ２０７は、順次内部バッファメモリ４６ａに格納される。
【００９６】
また、ＰＩｅｃｃ部４６は、ＰＩｓｙｄ部４５から各行インタリーブＨ０〜Ｈ２０７にそれぞれ対応するシンドロームを順次入力する。ＰＩｅｃｃ部４６は、入力したシンドロームを基に、誤りの位置多項式と数値多項式とを求める。その演算には、例えば、ユークリッド互除アルゴリズムが用いられる。
【００９７】
次に、ＰＩｅｃｃ部４６は、誤り位置多項式及び誤り数値多項式を基に、誤り位置及び誤り数値を求める。その演算には、例えばチェンのアルゴリズム（チェンサーチ）が用いられる。
【００９８】
更に、ＰＩｅｃｃ部４６は、求めた誤り位置及び誤り数値を基に、内部バッファメモリ４６ａに格納された各行インタリーブＨ０〜Ｈ２０７の誤りを訂正する。そして、ＰＩｅｃｃ部４６は、訂正後の各行インタリーブＨ０〜Ｈ２０７を、バッファメモリ制御部４４へ出力する。
【００９９】
バッファメモリ制御部４４は、ＰＩｅｃｃ部４６と、後述するＰＯｓｙｄ部４７，ＰＯｅｃｃ部４８，及び，インタフェース回路２８からの指令に基づいて、外部バッファメモリ２７に対するデータの書き込み・読み出しを制御するために設けられている。
【０１００】
図７に示すように、バッファメモリ制御部４４には、調停回路６１、アドレス発生回路６２、及び、データパス切替回路６３が備えられる。調停回路６１は、その時々において、データの読み出し又は書き込みのためのパスを設定するために設けられている。パスとは、データを読み出し・書き込む経路であって、本実施形態では、ＰＩｅｃｃ部４６からデータを書き込むパス、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８からデータを読み出すパス、ＰＯｅｃｃ部４８からデータを書き込むパス、及び、インタフェース回路２８からデータを読み出すパスとがある。調停回路６１は、ＤＶＤ２４からデータを読み出すその時々において、１つのパスのみを許容する。そして、調停回路６１は、許容したパスに対応した読み出し・書き込みのための制御信号ＲＤ／ＷＲを外部バッファメモリ２７に出力する。
【０１０１】
アドレス発生回路６２は、調停回路６１により許容されたパスの回路部４６〜３８，２８から入力されるデータ又は指令に基づいて、書き込み・読み出す対象となるデータに対応した外部バッファメモリ２７のアドレス信号を発生させる。そして、アドレス発生回路６２は、発生させたアドレス信号を外部バッファメモリ２７に出力する。データパス切替回路６３は、調停回路６１により許容されたパスに対して外部バッファメモリ２７のデータバスを接続するために設けられている。
【０１０２】
従って、バッファメモリ制御部４４は、ＰＩｅｃｃ部４６から各行インタリーブＨ０〜Ｈ２０８を外部バッファメモリ２７に書き込む。また、バッファメモリ制御部４４は、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８からの指令に基づいて、外部バッファメモリ２７に格納された図８に示されるブロックデータ３１の各列インタリーブＶ０〜Ｖ１８１を読み出し、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８へそれぞれ出力する。
【０１０３】
例えば、ＰＩｅｃｃ部４６から外部バッファメモリ２７に各行インタリーブＨ０〜Ｈ２０７を書き込む場合、バッファメモリ制御部４４の調停回路６１はＰＩｅｃｃ部４６のパスを許容する。アドレス発生回路６２は、各行インタリーブＨ０〜Ｈ２０７に対応したアドレスを発生させ、外部バッファメモリ２７に出力する。そして、データパス切替回路６３は、ＰＩｅｃｃ部４６から入力される各行インタリーブＨ０〜Ｈ２０７を外部バッファメモリ２７に出力し、各行インタリーブＨ０〜Ｈ２０は、外部バッファメモリ２７の所定のアドレスに書き込まれる。
【０１０４】
外部バッファメモリ２７に全ての行インタリーブＨ０〜Ｈ２０７、即ち、１つのブロックデータ３１が格納されると、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８は、バッファメモリ制御部４４に対して読み出し指令を出力する。このＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８が指令を出すタイミングは、図１に示されるマイクロプロセッサ２６により制御される。
【０１０５】
即ち、上記のＰＩｅｃｃ部４６は、各行インタリーブＨ０〜Ｈ２０７毎の誤り訂正処理を終了する度に、マイクロプロセッサ２６に終了を示す信号を出力する。そして、マイクロプロセッサ２６は、その信号に基づいて次の列インタリーブＶ０〜Ｖ１８１に対する誤り訂正処理を行うべく、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８に信号を出力する。すると、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８は、バッファメモリ制御部４４に対して指令を出力し、列インタリーブＶ０〜Ｖ１８１のデータを入力するわけである。
【０１０６】
次に、図２のＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８について説明する。
ＰＯｓｙｄ部４７は、図８に示される各列インタリーブＶ０〜Ｖ１８１に対して、各列インタリーブ毎にシンドロームを生成するために設けられている。また、ＰＯｓｙｄ部４７は、外部バッファメモリ２７のデータバス幅に対応した数の列インタリーブに対するシンドロームの生成を並列に行う。
【０１０７】
この時、ＰＯｓｙｄ部４７には、２つの列インタリーブのデータが順次入力される。例えば、図８に示されるブロックデータ３１を入力する場合、ＰＯｓｙｄ部４７には、先ず、列インタリーブＶ０のデータＢ(0,0) 〜Ｂ(207,0) と、列インタリーブＶ１のデータＢ(0,1) 〜Ｂ(207,1) が外部バッファメモリ２７のデータバス幅に対応した２バイトのデータが並列に入力される。
【０１０８】
即ち、図６に示すように、ＰＯｓｙｄ部４７には、先ず、列インタリーブＶ０のデータＢ(0,0) と、列インタリーブＶ１のデータＢ(0,1) とが入力され、次に、データＢ(1,0) とデータＢ(1,1) とが入力される。そして、列インタリーブＶ０，Ｖ１の全てのデータが入力されると、ＰＯｓｙｄ部４７には、次に、列インタリーブＶ２，Ｖ３の各データが並列に入力される。
【０１０９】
図５に示すように、ＰＯｓｙｄ部４７は、外部バッファメモリ２７のデータバス幅に対応した数（本実施形態では２つ）のシンドローム生成回路７１，７２を備える。両シンドローム生成回路７１，７２には、それぞれ生成するシンドロームのデータ数に対応した複数のシンドローム演算器７３を備える。各シンドローム演算器７３は、それぞれ排他的論理和回路（以下、ＥＯＲ回路という）７４、８ビットのフリップフロップ回路（以下、単にＦＦという）７５、及び、乗算回路（Ｇ．ＭＵＬ）７６により構成される。
【０１１０】
各シンドローム演算器７３の乗算回路７６には、それぞれガロア体よりなる乗数が予め設定されている。各乗算回路７６に設定される乗数は、それぞれ異なる値であり、生成するシンドロームに基づいて設定されている。
【０１１１】
シンドローム生成回路７１の各シンドローム演算器７３には、信号処理部４２により生成され出力されるクロック信号ＣＬＫに同期して列インタリーブＶ０のデータＢ(0,0) 〜Ｂ(207,0) が順次入力される。即ち、各シンドローム演算器７３には、その時々において同じデータ（例えば、データＢ(0,0) ）が入力される。そして、各シンドローム演算器７３は、クロック信号ＣＬＫに同期動作し、入力されるデータＢ(0,0) 〜Ｂ(207,0) に基づいてシンドロームを生成する。
【０１１２】
シンドローム生成回路７２の各シンドローム演算器７３には、信号処理部４２により生成され出力されるクロック信号ＣＬＫに同期して列インタリーブＶ１のデータＢ(0,1) 〜Ｂ(207,1) が順次入力される。即ち、各シンドローム演算器７３には、その時々において同じデータ（例えば、データＢ(0,0) ）が入力される。そして、各シンドローム演算器７３は、クロック信号ＣＬＫに同期動作し、入力されるデータＢ(0,1) 〜Ｂ(207,1) に基づいてシンドロームを生成する。
【０１１３】
尚、ＰＯｓｙｄ部４７は、各列インタリーブＶ２〜Ｖ１８１に対して列インタリーブＶ０，Ｖ１に対する処理と同じ処理を行うため、詳細な説明を省略する。即ち、ＰＯｓｙｄ部４７は、各列インタリーブＶ０〜Ｖ１８１を２つの列インタリーブ毎に順次入力する。そして、ＰＯｓｙｄ部４７は、入力した２つの列インタリーブ毎のシンドロームを並列に生成する。
【０１１４】
図２に示されるＰＯｅｃｃ部４８は、ＰＯｓｙｄ部４７にて生成された各列インターリーブ毎のシンドロームを基に、各列インタリーブＶ０〜Ｖ１８１の誤りを訂正するために設けられている。ＰＯｅｃｃ部４８は、誤り位置及び誤り数値のペアを１インタリーブ当たりの訂正可能な誤り個数分格納できる容量をもつ内部バッファメモリ４８ａを備える。
【０１１５】
また、ＰＯｅｃｃ部４８には、ＰＯｓｙｄ部４７にて生成された１つの列インタリーブに対するシンドロームを入力する。ＰＯｅｃｃ部４８は、入力したシンドロームを基に、そのシンドロームの列インタリーブに対する誤りの位置多項式と数値多項式とを求める。その演算には、例えば、ユークリッド互除アルゴリズムが用いられる。
【０１１６】
次に、ＰＯｅｃｃ部４８は、誤り位置多項式及び誤り数値多項式を基に、誤り位置及び誤り数値を求める。その演算には、例えばチェンのアルゴリズム（チェンサーチ）が用いられる。
【０１１７】
更に、ＰＯｅｃｃ部４８は、求めた誤り位置及び誤り数値のペアを内部バッファメモリ４８ａに格納し、対応する行インタリーブの内、誤り位置に該当する外部バッファメモリ２７上のデータを読み取って誤り数値と互いにＥＯＲを取ったデータを内部バッファメモリ４８ａに書き戻す。そして、ＰＯｅｃｃ部４８は、内部バッファメモリ４８ａに保持している誤り位置に対応する外部バッファメモリ２７のアドレスに、ＥＯＲを取ったデータをバッファメモリ制御部４４を介して外部バッファメモリ２７に格納し、１つの列インタリーブに対する誤り訂正処理を終了する。
【０１１８】
そして、全ての列インタリーブＶ０〜Ｖ１８１に対して誤り訂正処理が終了すると、インタフェース回路２８は、バッファメモリ制御部４４に対して読み出し指令を出力する。このインタフェース回路３５が指令を出すタイミングは、前記したＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８が指令を出すタイミングと同様であって、図１に示されるマイクロプロセッサ２２により制御される。
【０１１９】
バッファメモリ制御部４４は、インタフェース回路２８からの指令に基づいて、外部バッファメモリ２７に格納された１つのブロックデータ３１のうち、データ部分３２を順次読み出し、インタフェース回路２８に出力する。インタフェース回路３５は、入力されるデータ部分３２の各データを、所定のフォーマットにてインタフェースを介してコンピュータ２２へ順次出力する。
【０１２０】
以上記述したように、本実施の形態によれば、以下の効果を奏する。
（１）ＤＶＤ２４から読み出したデータを格納する外部バッファメモリ２７のデータバス幅を複数バイトに拡張する。その外部バッファメモリ２７には、複数の行インタリーブＨ０〜Ｈ２０７と複数の列インタリーブＶ０〜Ｖ１８１よりなる二次元配列されたブロックデータ３１が格納される。コントローラ２５は、外部バッファメモリ２７に格納された１つのブロックデータ３１を、その外部バッファメモリ２７のデータバス幅に対応した複数の列インタリーブ毎に読み出す。そして、コントローラ２５は、読み出したデータバス幅分の列インタリーブを並列に演算してシンドロームを生成し、読み出した各列インタリーブに対して誤り訂正を行うようにした。
【０１２１】
その結果、全ての列インタリーブの数を一度に外部バッファメモリ２７から読み出す列数で割った値の数だけ列方向に読み出す。従って、コントローラ２５は、列インタリーブＶ０〜Ｖ１８１に対して誤り訂正処理を行う場合、各列インタリーブＶ０〜Ｖ１８１毎にデータを読み出す場合に比べて外部バッファメモリ２７から読み出す回数、即ち、外部バッファメモリに対するアクセス回数が少なくなる。そのため、アクセス回数が少なくなる分、外部バッファメモリ２７に対するアクセスを高速化することができるとともに、シンドロームの生成をＤＶＤ２４からデータを読み出し処理時間を高速化することができる。
【０１２２】
（２）コントローラ２５には、ＤＶＤ２４から読み出されたブロックデータ３１の各行インタリーブＨ０〜Ｈ２０７に対して誤り訂正処理を行う行誤り訂正回路４９が備えられる。行誤り訂正回路４９は、ＤＶＤ２４から読み出された行インタリーブＨ０〜Ｈ２０７を順次入力するとともに、各行インタリーブＨ０〜Ｈ２０７毎に演算したシンドロームを基に、各行インタリーブＨ０〜Ｈ２０７に対して誤り訂正処理を行う。そして、行誤り訂正回路４９は、訂正後の各行インタリーブＨ０〜Ｈ２０７を順次外部バッファメモリ２７に格納するようにした。
【０１２３】
その結果、各行インタリーブＨ０〜Ｈ２０７に対して誤り訂正処理を行うとともに外部バッファメモリ２７に格納するので、誤り訂正処理を高速化することができ、ＤＶＤ２４からの読み出しの高速化を行うことができる。
【０１２４】
（３）コントローラ２５には、ＤＶＤ２４から読み出されたブロックデータ３１の各列インタリーブＶ０〜Ｖ１８２に対して誤り訂正処理を行うＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８が備えられる。ＰＯｓｙｄ部４７は、２つのシンドローム生成回路７１，７２を備える。各シンドローム生成回路７１，７２には、それぞれ異なる列インタリーブのデータが入力され、各行インタリーブに対するシンドロームがそれぞれ演算され出力される。
【０１２５】
その結果、外部バッファメモリ２７からデータバス幅に対応して読み出した複数の列インタリーブに対応するシンドロームを並列に演算することができ、誤り訂正処理の高速化を行うことができる。
【０１２６】
（第二実施形態）
以下、本発明を具体化した第二実施形態を図１１〜図１３に従って説明する。尚、説明の便宜上、第一実施形態と同様の構成については同一の符号を付してその説明を一部省略する。
【０１２７】
図１１に示すように、光ディスクコントローラ（以下、単にコントローラという）８１には、信号処理部４１、復調回路部４２、誤り訂正回路８２、バッファメモリ制御部８３、及び、インタフェース回路２８（図示略）が備えられる。誤り訂正回路８２には、第１ＰＩシンドローム生成部（第１ＰＩｓｙｄ部）４５、第１ＰＩ誤り訂正部（第１ＰＩｅｃｃ部）４６、ＰＯシンドローム生成部（ＰＯｓｙｄ部）４７、及び、ＰＯ誤り訂正部（ＰＯｅｃｃ部）４８と、第２ＰＩシンドローム生成部（第２ＰＩｓｙｄ部）８４及び第２ＰＩ誤り訂正部（第２ＰＩｅｃｃ部）８５とが備えられる。
【０１２８】
バッファメモリ制御部８３は、各部４６〜４８、８４，８５、及び、インタフェース回路２８からの指令に基づいて、外部バッファメモリ２７に対するデータの書き込み・読み出しを制御するために設けられている。
【０１２９】
第２ＰＩｓｙｄ部８４及び第２ＰＩｅｃｃ部８５は、列誤り訂正回路５０（ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８）により訂正され外部バッファメモリ２７に格納されたデータに対して、再び各行インタリーブに対する誤り訂正を行うために設けられている。即ち、第１ＰＩｓｙｄ部４５及び第１ＰＩｅｃｃ部４６は第１の行誤り訂正回路４９を構成し、第２ＰＩｓｙｄ部８４及び第２ＰＩｅｃｃ部８５は第２の行誤り訂正回路８６を構成している。
【０１３０】
第２ＰＩｓｙｄ部８４は、図８に示される各行インタリーブＨ０〜Ｈ２０７に対して、各行インタリーブ毎にシンドロームを生成するために設けられている。また、第２ＰＩｓｙｄ部８４は、外部バッファメモリ２７のデータバス幅に対応した数のデータを並列に演算し、シンドロームを生成する。
【０１３１】
例えば、外部バッファメモリ２７のデータバス幅が２バイトの場合、第２ＰＩｓｙｄ部８４には、外部バッファメモリ２７から各行インタリーブＨ０〜Ｈ２０７の各データが２バイトずつ入力される。即ち、図１３に示すように、第２ＰＩｓｙｄ部８４には、先ず、行インタリーブＨ０のデータＢ(0,0) ，Ｂ(0,1) が入力され、次にデータＢ(0,2) ，Ｂ(0,3) が入力される。そして、行インタリーブＨ０のデータＢ(0,206) ，Ｂ(0,207) が入力されると、第２ＰＩｓｙｄ部８４には、次の行インタリーブＨ１のデータが２バイトずつ入力される。
【０１３２】
図１２に示すように、第２ＰＩｓｙｄ部８４は、生成するシンドロームのデータ数に対応した複数のシンドローム演算器９１を備える。各シンドローム演算器９１は、それぞれ２つの排他的論理和回路（以下、ＥＯＲ回路という）９２，９３、２つの乗算回路（Ｇ．ＭＵＬ）９４，９５、及び、８ビットのフリップフロップ回路（以下、単にＦＦという）９６を備える。
【０１３３】
乗算回路９４，９５には、それぞれガロア体よりなる同じ値の乗数が予め設定されている。その乗数は、各シンドローム演算器９１毎に異なる値であって、生成するシンドロームに基づいて設定されている。ＦＦ９６には、行インタリーブＨ０の演算の開始時において「０」が設定される。
【０１３４】
各シンドローム演算器９１には、信号処理部４２により生成され出力されるクロック信号ＣＬＫに同期して行インタリーブＨ０のデータＢ(0,0) 〜Ｂ(0,181) が２バイトずつ順次入力される。例えば、図８の行インタリーブＨ０に対する演算を行う場合、各シンドローム演算器９１には、図１３に示すように、先ず、データＢ(0,0) とデータＢ(0,1) とが入力される。そして、次のクロックでは、各シンドローム演算器９１には、データＢ(0,2) とデータＢ(0,3) とが入力される。
【０１３５】
そして、シンドローム演算器９１は、クロック信号ＣＬＫに同期動作し、順次入力される２バイトを同時に演算する。即ち、シンドローム演算器９１のＥＯＲ回路９２は行インタリーブＨ０のデータＢ(0,0) が入力され、ＥＯＲ回路９３は行インタリーブＨ０のデータＢ(0,1) が入力される。
【０１３６】
次に、ＥＯＲ回路９２は次の行インタリーブＨ０のデータＢ(0,2) と、ＦＦ９６にラッチされたデータの乗算回路９５による演算結果（この時は「０」）が入力される。また、ＥＯＲ回路９３は次の行インタリーブＨ０のデータＢ(0,3) と、乗算回路９４から出力されたデータＢ(0,1) の演算結果とが入力される。
【０１３７】
従って、乗算回路９４は、データＢ(0,0) ，Ｂ(0,2) ，・・・，Ｂ(0,180) の演算を順次行い、乗算回路９５は、データＢ(0,1) ，Ｂ(0,3) ，・・・，Ｂ(0,181) の演算を順次行う。そして、２つのＥＯＲ回路９２，９３の演算は同時に行われる。また、２つの乗算回路９４，９５の演算は同時に行われる。
【０１３８】
即ち、第２ＰＩｓｙｄ部８４は、外部バッファメモリ２７のデータバス幅に対応した数のデータを入力する。例えば、外部バッファメモリ２７のデータバス幅が２バイトの場合、第２ＰＩｓｙｄ部８４は、各行インタリーブＨ０〜Ｈ２０７の各データを２バイトずつ読み出し、その読み出した２バイトのデータを同時に演算する。そして、第２ＰＩｓｙｄ部８４は、１つの行インタリーブの全てのデータを読み出して演算し、各行インタリーブに対するシンドロームを生成する。
【０１３９】
従って、第２ＰＩｓｙｄ部８４の外部バッファメモリ２７に対するアクセス回数は、各行インタリーブＨ０〜Ｈ２０７の各データを１バイトずつ読み出すためのアクセス回数の半分となる。
【０１４０】
第２ＰＩｅｃｃ部８５は、各行インタリーブＨ０〜Ｈ２０７の誤りを訂正するために設けられている。第２ＰＩｅｃｃ部８５は、第２ＰＩｓｙｄ部８４から各行インタリーブＨ０〜Ｈ２０７にそれぞれ対応するシンドロームを順次入力する。第２ＰＩｅｃｃ部８５は、入力したシンドロームを基に、誤りの位置多項式と数値多項式とを求める。その演算には、例えば、ユークリッド互除アルゴリズムが用いられる。
【０１４１】
次に、第２ＰＩｅｃｃ部８５は、誤り位置多項式及び誤り数値多項式を基に、誤り位置及び誤り数値を求める。その演算には、例えばチェンのアルゴリズム（チェンサーチ）が用いられる。
【０１４２】
更に、第２ＰＩｅｃｃ部８５は、求めた誤り位置及び誤り数値のペアを内部バッファメモリ８５ａに格納し、対応する行インタリーブの内、誤り位置に対応する外部バッファメモリ２７上のデータを読み取って誤り数値と互いにＥＯＲを取ったデータを内部バッファメモリ８５ａに書き戻す。そして、第２ＰＩｅｃｃ部８５は、内部バッファメモリ８５ａが保持している誤り位置に対応する外部バッファメモリ２７のアドレスに、ＥＯＲを取ったデータを、バッファメモリ制御部８３を介して外部バッファメモリ２７に格納し、１つの行インタリーブに対する誤り訂正処理を終了する。
【０１４３】
そして、全ての行インタリーブＨ０〜Ｈ２０７に対して誤り訂正処理が終了すると、インタフェース回路２８は、バッファメモリ制御部８３に対して読み出し指令を出力する。このインタフェース回路３５が指令を出すタイミングは、第一実施形態と同様であり、図１に示されるマイクロプロセッサ２２により制御される。
【０１４４】
バッファメモリ制御部８３は、インタフェース回路２８からの指令に基づいて、外部バッファメモリ２７に格納された１つのブロックデータ３１のうち、データ部分３２を順次読み出し、インタフェース回路２８に出力する。インタフェース回路３５は、入力されるデータ部分３２の各データを、所定のフォーマットにてインタフェースを介してコンピュータ２２へ順次出力する。
【０１４５】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）上記第一実施形態の(1) 〜(3) と同じ効果を奏する。
（２）更に、コントローラ８２には、外部バッファメモリ２７に格納されたブロックデータ３１に対して、各行インタリーブＨ０〜Ｈ２０７毎に再び誤り訂正処理を行う第２ＰＩｓｙｄ部８４及び第２ＰＩｅｃｃ部８５を備える。第２ＰＩｓｙｄ部８４は、複数バイトを同時に演算するシンドローム生成回路９１を備え、外部バッファメモリ２７のデータバス幅に対応した複数のデータを並列に演算してシンドロームを生成するようした。
【０１４６】
その結果、外部バッファメモリ２７から読み出す回数、即ち、外部バッファメモリ２７に対するアクセス回数が少なくなる。そのため、アクセス回数が少なくなる分、外部バッファメモリ２７に対するアクセスを高速化することができるとともに、ＤＶＤ２４からデータを読み出し処理時間を高速化することができる。
【０１４７】
（第三実施形態）
以下、本発明を具体化した第三実施形態を図１４に従って説明する。
尚、説明の便宜上、第一実施形態と同様の構成については同一の符号を付してその説明を一部省略する。
【０１４８】
また、本実施形態において、第一実施形態と異なる点は、光ディスクコントローラに備えられたバッファメモリ制御部の動作だけであるので同一の符号を用いて、図１４に従ってバッファメモリ制御部４４の動作についてのみ詳述する。
【０１４９】
ここで、記憶装置としての外部バッファメモリ２７は、複数のブロックデータ３１を格納するのに十分な記憶容量のＤＲＡＭ(Dynamic Random Access Memory)よりなり、ある限られたアドレス範囲（同一ページ）内では高速にアクセスできる、所謂高速ページモードを備えている。そして、バッファメモリ制御部４４は、その高速ページモードを用いて外部バッファメモリ２７に対してデータの読み出し及び書き込みを行う。
【０１５０】
また、バッファメモリ制御部４４は、許容したパスに対して１度に複数バイト（例えば、１６バイト＝８ワード（１ワードは２バイト））のデータをアクセス（読み出し・書き込み）するものとする。即ち、ＰＩｅｃｃ部４７から出力される各行インタリーブＨ０〜Ｈ２０７（図８参照）、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８に入出力される列インタリーブＶ０〜Ｖ１８１（図８参照）、インタフェース回路２８に出力されるデータ部分３２（図８参照）は、それぞれ１６バイト毎に外部バッファメモリ２７にアクセスされる。
【０１５１】
この構成により、バッファメモリ制御部４４は外部バッファメモリ２７に対して、ＰＩｅｃｃ部４６からブロックデータ３１の書き込み動作、ＰＯｓｙｄ部４７へのブロックデータ３１の読み出し動作、ＰＯｅｃｃ部４８からブロックデータ３１の書き込み動作、及び、インタフェース回路２８へのブロックデータ３１の読み出し動作を並列に行うことができる。
【０１５２】
また、図７に示されるアドレス発生回路６２は、ＰＩｅｃｃ部４６と、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８とに対して１度に入出力を行う数のデータを、外部バッファメモリ２７の同一ページ内に格納するように、各データに対するアドレスを発生させる。例えば、ＰＩｅｃｃ部４６は、図８に示される各行インタリーブＨ０〜Ｈ２０７を順次出力する。従って、図１に示される外部バッファメモリ２７には、１度に１６バイトのデータ、即ち、図８に示される行インタリーブＨ０のデータＢ(0,0) 〜Ｂ(0,15)が格納される。
【０１５３】
一方、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８は、２つの列インタリーブ毎に外部バッファメモリ２７からデータを読み出す。従って、外部バッファメモリ２７からは、１度に８ワード（＝１６バイト）のデータ、即ち、列インタリーブＶ０，Ｖ１のデータＢ(0,0) ，Ｂ(0,1) ，Ｂ(1,0) ，Ｂ(1,1) ，Ｂ(2,0) ，Ｂ(2,1) ，Ｂ(3,0) ，Ｂ(3,1) が読み出される。
【０１５４】
従って、アドレス発生回路６２は、行インタリーブＨ０のデータＢ(0,0) 〜Ｂ(0,15)と、列インタリーブＶ０，Ｖ１のデータＢ(0,0) ，Ｂ(0,1) 〜Ｂ(3,0) ，Ｂ(3,1) とを外部バッファメモリ２７の１ページに格納するように各データに対するアドレスを発生させる。
【０１５５】
具体的に、外部バッファメモリ２７のアドレス「０」(0h)から順に格納する場合を、図１４に従って説明する。尚、外部バッファメモリ２７の１ページは、２５６バイトに設定されているものとする。
【０１５６】
各行インタリーブＨ０〜Ｈ２０７は、それぞれ先頭の１６バイトずつが外部バッファメモリ２７のアドレス「０」(0h)から順に並べて格納される。従って、外部バッファメモリ２７には、先ず、行インタリーブＨ０のデータＢ(0,0) 〜Ｂ(0,15)がアドレス「０」(0h)〜「１５」(0Fh) に格納される。以下、アドレスを１６進表現にて表すものとする。
【０１５７】
次に、外部バッファメモリ２７には、行インタリーブＨ１のデータＢ(0,0) 〜Ｂ(0,15)がアドレス(10h) 〜(1Fh) に格納される。そして、行インタリーブＨ２０７のデータＢ(207,0) 〜Ｂ(207,15)がアドレス(CF0h)〜(CFFh)に格納される。続いて、各行インタリーブＨ０〜Ｈ２０７の次の１６バイトが順に並べて格納される。即ち、行インタリーブＨ０のデータＢ(0,16)〜Ｂ(0,31)がアドレス(D00h)〜(D0Fh)に格納される。
【０１５８】
即ち、アドレス発生回路６２は、各行インタリーブＨ０〜Ｈ２０７のデータを、外部バッファメモリ２７に対してアクセスする複数バイト（本実施形態では１６バイト）毎に折り返したアドレスを発生させ、そのアドレスに各行インタリーブＨ０〜Ｈ２０７がそれぞれ格納される。
そして、外部バッファメモリ２７の１ページを２５６バイトとする。すると、外部バッファメモリ２７の１ページ目、即ちアドレス(0h)〜(FFh) には、行インタリーブＨ０のデータＢ(0,0) 〜Ｂ(0,15)から行インタリーブＨ１５のデータＢ(15,0)〜Ｂ(15,15) までが格納される。そして、１度に格納される１６バイトのデータに対するアドレスは、２５６バイト以内であるため、外部バッファメモリ２７のロウアドレスは変化しない。尚、行インタリーブＨ０〜Ｈ１５の他のデータ、及び、他の行インタリーブＨ１６〜Ｈ２０７に対しても同様であるため、説明を省略する。
【０１５９】
即ち、バッファメモリ制御部４４は、ロウアドレスを変更することなくデータを外部バッファメモリ２７に対してアクセスすることができる。従って、図７に示されるバッファメモリ制御部４４は、ＰＩｓｙｄ部４６から出力される各行インタリーブＨ０〜Ｈ２０７を、高速ページモードを用いて外部バッファメモリ２７に格納することができる。
【０１６０】
この外部バッファメモリ２７の１ページ目に格納されたデータＢ(0,0) 〜Ｂ(0,15)からデータＢ(15,0)〜Ｂ(15,15) は、列インタリーブＶ０〜Ｖ１５の先頭の１６バイトである。そして、図２に示されるＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８に対して１度に出力される列インタリーブＶ０，Ｖ１のデータＢ(0,0) ，Ｂ(0,1) 〜Ｂ(3,0) ，Ｂ(3,1) は外部バッファメモリ２７の１ページ内に格納されている。尚、列インタリーブＶ０，Ｖ１の他のデータ、及び、他の列インタリーブＶ２〜Ｖ１８１に対しても同様であるため、説明を省略する。
【０１６１】
従って、図７に示されるバッファメモリ制御部４４は、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８に出力する列インタリーブＶ０〜Ｖ１８１を、高速ページモードを用いて外部バッファメモリ２７から読み出すことができる。
【０１６２】
尚、図１４に示すように、外部バッファメモリ２７に各データＢ(0,0) 〜Ｂ(207,181) を格納した場合、図２に示されるＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８において、列インタリーブＶ０〜Ｖ１８１を順次読み出す場合に、１つの行インタリーブ毎、又は３つ以上の行インタリーブ毎にデータを読み出す場合にも有効である。この場合にも、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８は、１度に複数バイト（本実施形態では１６バイト）のデータをアクセスする。
【０１６３】
この場合、外部バッファメモリ２７の１ページ目には、各列インタリーブＶ０〜Ｖ１５の先頭の１６バイトのデータＢ(0,0) 〜Ｂ(15,0)からデータＢ(0,15)〜Ｂ(15,15) が格納されている。即ち、１つの列インタリーブＶ０を読み出す場合、１度にアクセスされる１６バイトのデータＢ(0,0) 〜Ｂ(15,0)は、外部バッファメモリ２７の１ページ内に格納されている。従って、図２に示されるバッファメモリ制御部４４は、高速ページモードを用いて外部バッファメモリ２７からデータを読み出すことができる。
【０１６４】
尚、列インタリーブＶ０の他のデータＢ(16,0)〜Ｂ(207,0) 、及び、他の列インタリーブＶ１〜Ｖ１８１に対しても同様であるため、説明を省略する。また、３つ以上の列インタリーブ毎にデータを読み出す場合も同様であるため、説明を省略する。
【０１６５】
ところで、ＰＩｅｃｃ部４６から出力されるデータに対して単純にアドレスを発生させて外部バッファメモリ２７に格納する場合、図２に示すように、外部バッファメモリ２７には、各行インタリーブのデータが先頭アドレスから順次格納される。この時、外部バッファメモリ２７には、行インタリーブの各データが連続したアドレスに格納される。従って、各行インタリーブＨ０〜Ｈ２０７を１度に複数バイトづつ格納する場合には、高速ページモードを使用することができる。
【０１６６】
しかしながら、列インタリーブＶ０〜Ｖ１８１の各データのアドレスは不連続であり、なお且つ、１ページ分のアドレスを越えている。例えば、列インタリーブＶ０の先頭のデータＢ(0,0) はアドレス(0h)に格納され、次のデータＢ(1,0) は、アドレス(0B6h)（「１８２」番地）に、データＢ(2,0) は、アドレス(16Ch)（「３６４」番地）に格納される。
【０１６７】
即ち、列インタリーブＶ０の各データＢ(0,0) 〜Ｂ(207,0) は、「１８２」番地毎に格納される。従って、列インタリーブＶ０を１度に複数バイト読み出す場合、アドレスは必ず１ページを越えるため、ロウアドレスとコラムアドレスとを各データ毎に発生させる必要があるため処理が複雑になるとともに、高速ページモードを使用することができない。
【０１６８】
一方、本実施形態のように、外部バッファメモリ２７に図８に示されるブロックデータ３１を格納した場合、１ページ内に各行インタリーブＨ０〜Ｈ２０７のデータが１６バイト格納されるとともに、各列インタリーブＶ０〜Ｖ１８１のデータが１６バイト格納されている。従って、バッファメモリ制御部４４は、外部バッファメモリ２７に対して、図２に示されるＰＩｅｃｃ部４６から行インタリーブＨ０〜Ｈ２７の書き込み、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８への列インタリーブＶ０〜Ｖ１８１の読み出しの双方において、高速ページモードを使用することができる。その結果、各データに対してロウアドレスとコラムアドレスとをそれぞれ発生させてアクセスする通常のアクセスモードに比べて、外部バッファメモリ２７に対するアクセスが高速化する。
【０１６９】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）外部バッファメモリ２７は、複数のブロックデータ３１を格納するのに十分な容量のＤＲＡＭ(Dynamic Random Access Memory)よりなり、高速ページモードでの読み出し及び書き込み動作が可能なものとする。アドレス発生回路６２は、ＰＩｅｃｃ部４６と、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８とに対して１度に入出力を行う数のデータを、外部バッファメモリ２７の１ページ内に格納するように、各データに対するアドレスを発生させる。
【０１７０】
その結果、バッファメモリ制御部４４は、外部バッファメモリ２７に対して１度に複数バイトアクセスする場合に、各行インタリーブＨ０〜Ｈ２０７と各列インタリーブＶ０〜Ｖ１８１との双方に高速ページモードを用いて外部バッファメモリ２７からデータを読み出すことができる。従って、外部バッファメモリ２７に対するアクセスを通常のアクセスモードに比べて高速化することができ、処理時間の高速化を図ることができる。
【０１７１】
（２）バッファメモリ制御部４４は、許容したパスに対して１度に複数バイトのデータをアクセスするものとする。そして、バッファメモリ制御部４４は、ＰＩｅｃｃ部４７から出力される各行インタリーブＨ０〜Ｈ２０７、ＰＯｓｙｄ部４７及びＰＯｅｃｃ部４８に入出力される列インタリーブＶ０〜Ｖ１８１、インタフェース回路２８に出力されるデータ部分３２を、それぞれ１６バイト毎に外部バッファメモリ２７にアクセスするようにした。
【０１７２】
その結果、ブロックデータ３１の各行インタリーブＨ０〜Ｈ２０７の書き込みと、１つ前に外部バッファメモリ２に記憶されたブロックデータ３１の各列インタリーブＶ０〜Ｖ１８１の読み出し及び書き込み、及び、更に１つ前に外部バッファメモリ２７に記憶されたブロックデータ３１のデータ部分３２の読み出しを同時に行うことができる。
【０１７３】
尚、本発明は前記各実施形態の他、以下の態様で実施してもよい。
○上記各実施形態において、外部バッファメモリ２７のデータバス幅を３バイト以上の任意のバイト数に適宜変更する。そして、図１５に示すように、ＰＯｓｙｄ部１０１には、変更したバイト数に対応した数のシンドローム生成回路７１ａ〜７１ｎを備え、１度に複数バイト（図１５においてｎバイト）を並列に演算してシンドロームを生成する。
【０１７４】
また、第二実施形態においては、図１２の第２ＰＩｓｙｄ部８４に備えられる各シンドローム生成回路９１の構成を変更する。例えば、外部バッファメモリ２７のデータバス幅を３バイトに変更した場合、図１６に示すように、各シンドローム生成回路１１１をそれぞれ３バイトに対応した３つの排他的論理和回路（ＥＯＲ回路）１１２ａ〜１１２ｃ、３つの乗算回路（Ｇ．ＭＵＬ）１１３ａ〜１１３ｃ、及び、８ビットのフリップフロップ回路（ＦＦ）１１４により構成する。即ち、外部バッファメモリ２７のデータバス幅をｎバイトとした場合、ｎ個のＥＯＲ回路１１２ａ〜１１２ｎ、乗算回路１１３ａ〜１１３ｎ、及び、ＦＦ１１４により各シンドローム生成回路を構成する。
【０１７５】
上記の構成によれば、外部バッファメモリ２７のデータバス幅に対応してアクセスの回数を減らすことができるので、外部バッファメモリ２７に対するアクセスを高速化することができる。
【０１７６】
○上記各実施形態において、外部バッファメモリ２７からＰＯｓｙｄ部４７にデータを読み出す場合に、外部バッファメモリ２７から１度に複数回データバス幅分のデータを読み出すようにしても良い。
【０１７７】
○上記第三実施形態において、外部バッファメモリ２７に格納するデータの配列を適宜変更して実施する。例えば、図１７及び図１８に示すように、２つの行インタリーブを１組として、各組をそれぞれ１度にアクセスするデータバス幅で折り返して外部バッファメモリ２７に記憶する。
【０１７８】
例えば、列インタリーブＶ０のデータＢ(0,0) と列インタリーブＶ１のデータＢ(0,1) ）を１組とし、１度にアクセスするデータバス幅（１６バイト）で折り返し、外部バッファメモリ２７に記憶する。このように配列した場合にも、外部バッファメモリ２７の１ページ（２５６バイト）内に行インタリーブと列インタリーブとのそれぞれに対して、１度にアクセスするデータが格納されるので、高速ページモードを利用してアクセスすることができ、アクセス時間を短縮することができる。
【０１７９】
○上記各実施形態において、記憶装置としての外部バッファメモリ２７はある限られた範囲（例えばページ）内に格納されたデータに対するアクセスが、範囲を越えるアドレスに対するアクセスよりも高速に行える物ならばどの様な物を用いて実施しても良い。例えば、高速ページモードを備えたＤＲＡＭ以外に、ＥＤＯモードＤＲＡＭ，ＳＤＲＡＭ等を用いて実施してもよい。
【０１８０】
○上記各実施形態において、図８〜図１０に示されるブロックデータ３１のバイト数、二次元配列の行数及び列数、等を適宜変更して実施する。
○上記各実施形態において、ＤＶＤ２４から読み出したデータを先ず外部バッファメモリ２７に並べ直して格納する。コントローラ２５は、外部バッファメモリ２７から行インタリーブＨ０〜Ｈ２０７を順次読み出して誤り訂正処理を行い、その訂正後に列インタリーブＶ０〜Ｖ１８１を順次読み出して誤り訂正処理を行うようにする。
【０１８１】
○上記各実施形態において、行インタリーブと列インタリーブとを入れ替える。即ち、データ部分（情報記号）３２の各行に対して第１ＥＣＣ部分（第１誤り訂正符号）を付加した後、各列に対して第２ＥＣＣ部分（第２誤り訂正符号）を付加する。そして、コントローラ２５は、先ず各列インターリーブに対して誤り訂正処理を行った後、各行インタリーブに対して誤り訂正処理を行うようにする。
【０１８２】
○上記各実施形態において、記録媒体としてＤＶＤに限らず、ＬＤ(Laser Disc)，ＣＤ(Compact Disc)，ＣＤ−ＲＯＭ(CD-Read Only Memory) ，ＭＤ(Mini Disc) ，ＤＶＤ−ＲＯＭ(DVD-Read Only Memory)等の他の光ディスクや、その他の記録媒体から読み出すデータを訂正する場合について活用してもよい。また、本発明の光ディスク制御装置２１は、各記録媒体に対してデータの読み出し及び書き込みを行う装置に用いて実施してもよい。
【０１８３】
○上記各実施形態では、光ディスクコントローラ２５は、訂正後のデータを外部機器としてのコンピュータ２２に出力するようにしたが、他の外部機器、例えば、画像データを表示するための画像処理装置等に出力するようにしても良い。
【０１８４】
○上記各実施形態において、誤り訂正符号として、リード・ソロモン符号に代えて、ファイア符号、ＢＣＨ符号(Bose-Chaudhuri-Hocquenghem code) 、ハミング符号(Hamming code)、サイクリック符号(cyclic code) 、ゴーレイ符号(Golay code)等を用いて実施してもよい。
【０１８５】
○上記各実施形態において、バッファメモリ制御部４４のアドレス発生回路６２を、誤り訂正回路４３、インタフェース回路２８側に備えて実施する。ＰＩｅｃｃ部４６、ＰＯｓｙｄ部４７、ＰＯｅｃｃ部４８、及び、インタフェース回路２８は、それぞれ必要とするデータのアドレスをバッファメモリ制御部に出力するようにする。この構成によれば、バッファメモリ制御部４４においてアドレスを発生させる必要がないため、バッファメモリ制御部４４の負荷を減少させることができる。
【０１８６】
【発明の効果】
以上詳述したように、請求項１，２，３，４又は５に記載の発明によれば、データのアクセス時間を短くして読み出し時間の高速化を図ることが可能な誤り訂正方法を提供することができる。
【０１８７】
また、請求項６，７，８，９，１０，１１又は１２に記載の発明によれば、データのアクセス時間を短くして読み出し時間の高速化を図ることが可能な誤り訂正装置を提供することができる。
【０１８８】
また、請求項１３に記載の発明によれば、データのアクセス時間を短くして読み出し時間の高速化を図ることが可能なデータ読み出し装置を提供することにある。
【０１８９】
更に、請求項１４又は１５に記載の発明によれば、誤り訂正処理におけるデータのアクセス時間の短縮を図ることが可能なデータマッピング方法を提供することができる。
【図面の簡単な説明】
【図１】  光ディスク制御装置を示すブロック図。
【図２】  第一実施形態の光ディスクコントローラのブロック図。
【図３】  ＰＩシンドローム生成部の回路図。
【図４】  ＰＩシンドローム生成部への入力順序を示す説明図。
【図５】  ＰＯシンドローム生成部の回路図。
【図６】  ＰＯシンドローム生成部への入力順序を示す説明図。
【図７】  バッファメモリ制御部のブロック図。
【図８】  誤り訂正符号を付加したデータの構成を示す説明図。
【図９】  データセクタのフォーマットを示す説明図。
【図１０】  ＤＶＤの記録セクタの構成を示す説明図。
【図１１】  第二実施形態の光ディスクコントローラのブロック図。
【図１２】  第２ＰＩシンドローム生成部の回路図。
【図１３】  第２ＰＩシンドローム生成部への入力順序を示す説明図。
【図１４】  第三実施形態のデータの配列を示す説明図。
【図１５】  別のＰＯシンドローム生成部のブロック図。
【図１６】  別の第２ＰＩシンドローム生成部の回路図。
【図１７】  第三実施形態の別の配列を示す説明図。
【図１８】  図１７の詳細な配列を示す説明図。
【図１９】  誤り訂正符号を付加したデータの例を示す説明図。
【符号の説明】
２４  記録媒体としてのデジタルビデオディスク
２５  誤り訂正装置としての光ディスクコントローラ
４３，８２  誤り訂正回路
２７  記憶装置としての外部バッファメモリ
４４，８３  メモリ制御回路としてのバッファメモリ制御部
３１  ブロックデータ
３２  データ部分
３３  誤り訂正符号としての第１誤り訂正符号
３４  誤り訂正符号としての第２誤り訂正符号
４９  行誤り訂正回路
５０  列誤り訂正回路
【図１】
0003863252.tif 000002
【図２】
0003863252.tif 000003
【図３】
0003863252.tif 000004
【図４】
0003863252.tif 000005
【図５】
0003863252.tif 000006
【図６】
0003863252.tif 000007
【図７】
0003863252.tif 000008
【図８】
0003863252.tif 000009
【図９】
0003863252.tif 000010
【図１０】
0003863252.tif 000011
【図１１】
0003863252.tif 000012
【図１２】
0003863252.tif 000013
【図１３】
0003863252.tif 000014
【図１４】
0003863252.tif 000015
【図１５】
0003863252.tif 000016
【図１６】
0003863252.tif 000017
【図１７】
0003863252.tif 000018
【図１８】
0003863252.tif 000019
【図１９】
0003863252.tif 000020