KR100415136B1 - 에러정정방법,에러정정장치,데이터판독장치,및데이터맵핑방법 - Google Patents

에러정정방법,에러정정장치,데이터판독장치,및데이터맵핑방법 Download PDF

Info

Publication number
KR100415136B1
KR100415136B1 KR1019970059951A KR19970059951A KR100415136B1 KR 100415136 B1 KR100415136 B1 KR 100415136B1 KR 1019970059951 A KR1019970059951 A KR 1019970059951A KR 19970059951 A KR19970059951 A KR 19970059951A KR 100415136 B1 KR100415136 B1 KR 100415136B1
Authority
KR
South Korea
Prior art keywords
data
error correction
column
row
memory
Prior art date
Application number
KR1019970059951A
Other languages
English (en)
Other versions
KR19980042418A (ko
Inventor
히로후미 야마와키
마사시 야마와키
겐이치 야마쿠라
Original Assignee
후지쯔 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR19980042418A publication Critical patent/KR19980042418A/ko
Application granted granted Critical
Publication of KR100415136B1 publication Critical patent/KR100415136B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1806Pulse code modulation systems for audio signals
    • G11B20/1809Pulse code modulation systems for audio signals by interleaving
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 데이터의 액세스 시간을 잘게 하여 판독 시간의 고속화를 도모할 수 있는 에러 정정 방법을 제공한다.
본 발명에 따라, DVD(24)로부터 판독한 데이터를 저장하는 외부 버퍼 메모리
(27)의 데이터 버스 폭을 복수 바이트로 확장한다. 그 외부 버퍼 메모리(27)에는 복수의 열 인터리브와 복수의 행 인터리브로 이루어진 2차원 배열된 블록 데이터 (31)가 저장된다. 컨트롤러(25)는 외부 버퍼 메모리(27)에 저장된 1개의 블록 데이터(31)를 그 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 복수의 열 인터리브마다 판독한다. 그리고, 컨트롤러(25)는 판독한 데이터 버스 폭 분의 열 인터리브를 병렬로 연산하여 신드롬을 생성하며, 판독한 각 열 인터리브에 대하여 에러 정정을 행한다.

Description

에러 정정 방법, 에러 정정 장치, 데이터 판독 장치, 및 데이터 맵핑 방법{METH0D AND APPARATUS FOR C0RRECTING DATA ERRORS}
본 발명은 에러 정정 방법, 에러 정정 장치, 데이터 판독 장치, 및 데이터맵핑 방법에 관한 것이다.
근래, 광디스크 등의 기억 매체에 있어서의 기억 용량의 대용량화에 따른, 데이터 판독 시간의 고속화도 요구되고 있다. 특히, 데이터 판독시, 그 처리 시간이 긴 에러 정정 처리 장치에 있어서는, 그 처리 시간의 단축화가 요구되고 있다. 이를 위해, 처리 시간의 단축화를 도모하는데 있어서, 에러 정정 처리에 있어서의 데이터를 저장하는 버퍼 메모리에 대한 액세스의 고속화를 도모할 필요가 있다.
종래, 기록 매체에 기억된 데이터에는 그 데이터의 판독 시 등에 발생하는 에러를 정정하기 위해서 에러 정정 부호(ECC: Error Correcting Code)가 미리 부가 되어 있다. 예컨대, 도 19에 도시된 바와 같이, 기록 매체에 저장된 1개의 블록 데이터(11)는 데이터부(12)와 에러 정정 부호(13, 14)로 구성되어 있다. 에러 정정 부호(13)는 데이터부(12)의 각 열마다 연산되어 부가되고 있다. 에러 정정 부호 (14)는 데이터부(12)와 에러 정정 부호(13)의 각 행마다 연산되어 부가되고 있다.
그리고, 기록 매체에 대하여 데이터의 입출력을 행하는 컨트롤러에는 블록 데이터(11)의 에러를 정정하는 에러 정정 회로가 구비된다. 에러 정정 회로는 먼저, 데이터부(12) 및 에러 정정 부호(13, 14)에 기초하여, 각 행의 데이터를 1바이트마다 판독하여 순차적으로 연산하고, 그 연산 결과에 기초하여 각 행 데이터에 발생하는 에러를 정정한다. 그 후, 에러 정정 회로는 데이터부(12) 및 에러 정정 부호(13)에 기초하여, 각 열의 데이터를 1바이트마다 판독하여 순차적으로 연산하고, 그 연산 결과에 기초하여 각 열의 데이터에 발생하는 에러를 정정한다.
따라서, 에러 정정 처리에는 데이터부(12) 및 에러 정정 부호(13, 14)의 모든 데이터가 필요하고, 에러 정정 회로에는 대용량 버퍼 메모리가 접속된다. 에러 정정 회로는 버퍼 메모리에 저장된 데이터를 판독하여 에러 정정 처리를 행하고, 그 처리 결과인 정정 데이터를 버퍼 메모리에 저장한다. 그리고, 버퍼 메모리에 저장된 에러 정정 후의 데이터는 호스트 컴퓨터 등의 외부 기기에 출력된다.
그런데, 근래에는 호스트 컴퓨터의 처리 속도의 고속화에 따라, 기억 장치에 대한 데이터의 판독/기록 속도의 고속화가 요구되고 있다. 예컨대, 광디스크 등의 기록 장치에서는, 기록 매체인 광디스크를 기준 속도의 2배 이상, 예컨대, 4배의 속도로 회전 제어하여, 판독 속도의 고속화가 도모된다.
그러나, 버퍼 메모리에 대한 액세스에 의해, 판독 속도의 고속화가 어려운 경우가 있다. 즉, 버퍼 메모리에는 블록 데이터(11)의 각 행마다 데이터의 판독과, 정정 데이터의 기록이 반복하여 행해진다. 즉, 외부 버퍼 메모리에 대하여 많은 액세스가 행해지기 때문에, 액세스 속도를 고속화하기가 어렵고, 에러 정정 처리를 고속화할 수 없다.
본 발명은 상기 문제점을 해결하기 위하여 이루어진 것으로, 그 목적은 데이터의 액세스 시간을 짧게 하여 판독 시간의 고속화를 도모할 수 있는 에러 정정 방법을 제공하는데 있다.
또한, 데이터의 액세스 시간을 짧게 하여 판독 시간의 고속화를 도모할 수 있는 에러 정정 장치 및 데이터 판독 장치를 제공하는데 있다.
또, 에러 정정 처리에 있어서의 데이터의 액세스 시간의 단축을 도모할 수있는 데이터 맵핑 방법을 제공하는데 있다.
도 1은 광디스크 제어 장치를 나타내는 블록도.
도 2는 제1 실시 형태의 광디스크 컨트롤러의 블록도.
도 3은 PI 신드롬 생성부의 회로도.
도 4는 PI 신드롬 생성부로의 입력 순서를 나타내는 설명도.
도 5는 PO 신드롬 생성부의 회로도.
도 6은 PO 신드롬 생성부로의 입력 순서를 나타내는 설명도.
도 7은 버퍼 메모리 제어부의 블록도.
도 8은 에러 정정 부호를 부가한 데이터의 구성을 나타내는 설명도.
도 9는 데이터 섹터의 포맷을 나타내는 설명도.
도 10은 DVD 기록 섹터의 구성을 나타내는 설명도.
도 11은 제2 실시 형태의 광디스크 컨트롤러의 블록도.
도 12는 제2 PI 신드롬 생성부의 회로도.
도 13은 제2 PI 신드롬 생성부로의 입력 순서를 나타내는 설명도.
도 14는 제3 실시 형태의 데이터 배열을 나타내는 설명도.
도 15는 별도의 PO 신드롬 생성부의 블록도.
도 16은 별도의 제2 PI 신드롬 생성부의 회로도.
도 17은 제3 실시 형태의 별도의 배열을 나타내는 설명도.
도 18은 도 17의 상세한 배열을 나타내는 설명도.
도 19는 에러 정정 부호를 부가한 데이터의 예를 나타내는 설명도.
〈도면의 주요 부분에 대한 부호의 설명〉
24: 기록 매체로서의 디지털 비디오 디스크
25: 에러 정정 장치로서의 광디스크 컨트롤러
43, 82: 에러 정정 회로
27: 기억 장치로서의 외부 버퍼 메모리
44, 83: 메모리 제어 회로로서의 버퍼 메모리 제어부
31: 블록 데이터
32: 데이터 부분
33: 에러 정정 부호로서의 제1 에러 정정 부호
34: 에러 정정 부호로서의 제2 에러 정정 부호
49: 행 에러 정정 회로
50: 열 에러 정정 회로
본 발명은 상기 목적을 달성하기 위해서, 청구범위 제1항에 기재한 발명은 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가된 블록 데이터에 대하여, 블록 데이터의 각 열마다 에러 정정을 행하는 열 에러 정정과, 블록 데이터의 각 행마다 에러 정정 처리를 행하는 행 에러 정정을 행하는 에러 정정 방법에 있어서, 복수의 열 또는 행에 대한 에러 정정을 병렬로 행하고, 상기 블록 데이터는 상기 복수의 행 또는 열에 대응한 데이터 버스 폭의 메모리에 저장되고, 복수의 행 또는 열로부터 상기 메모리의 데이터 버스 폭의 정수배 데이터를 한번에 판독하고, 그 판독한 복수의 행 또는 열의 데이터를 병렬로 연산하여 각 행 또는 열마다 에러 정정을 행하고, 상기 각 행, 각 열을 각각 부호어로서 취급하고, 부호 어 전체로부터 각 행, 각 열에 대한 신드롬을 연산하여, 신드롬을 기초로 각 행, 각 열에 대한 에러를 정정하도록 하였다.
또한, 청구범위 제2항에 기재한 발명은 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가된 블록 데이터에 대하여, 블록 데이터의 각 열마다 에러 정정을 행하는 열 에러 정정과, 블록 데이터의 각 행마다 에러 정정 처리를 행하는 행 에러 정정을 행하는 에러 정정 방법에 있어서, 각 행 또는 열의 복수의 데이터를 병렬로 연산하여, 각 행 또는 열에 대한 에러 정정을 행하고, 상기 블록 데이터는 상기 복수의 부호어에 대응한 데이터 버스 폭의 메모리에 저장되고, 각 행 또는 열로부터 메모리의 데이터 버스 폭의 정수배 데이터를 한번에 판독하고, 그 판독한 복수의 데이터를 병렬로 연산하여 각 행 또는 열마다 에러 정정을 행하도록 하였다.
또한, 청구범위 제5항에 기재한 발명은 청구범위 제1항에 기재한 에러 정정 방법에 있어서, 상기 메모리에는 각 열 또는 각 행에 대한 에러 정정 후의 블록 데이터가 저장되고, 상기 메모리로부터 복수의 행 또는 열의 데이터, 또는 각 행 또는 열의 복수의 데이터를 순차적으로 판독하여 각 행 또는 열마다 에러 정정을 행하도록 하였다.
또한, 청구범위 제6항에 기재한 발명은 청구범위 제1항에 기재한 에러 정정 방법에 있어서, 상기 블록 데이터는 기록 매체에 인터리브되어 기억되고, 상기 메모리에는 각 열 또는 각 행에 대한 에러 정정 후에 재배열되어 저장하도록 하였다.
또한, 청구범위 제8항에 기재한 발명은 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가되어 외부에 접속된 메모리에 저장된 블록 데이터에 대하여, 블록 데이터의 각 열마다 에러 정정을 행하는 열 에러 정정과, 블록 데이터의 각 행마다 에러 정정 처리를 행하는 행 에러 정정을 행하는 에러 정정 회로를 구비한 에러 정정 장치에 있어서, 상기 에러 정정 회로는 복수의 열 또는 행에 대한 에러 정정을 병렬로 행하고, 상기 메모리는 복수의 행 또는 열에 대응한 데이터 버스 폭으로 설정되고, 상기 에러 정정 회로는 상기 메모리에 저장된 상기 블록 데이터의 복수의 행 또는 열로부터 상기 메모리의 데이터 버스 폭의 정수배의 데이터를 한번에 판독하고, 그 판독한 복수의 행 또는 열의 데이터를 병렬로 연산하여 각 행 또는 열마다 에러 정정을 행하고, 상기 열 에러 정정 회로 및 행 에러정정 회로는 각각 상기 각 행, 각 열을 부호어로서 취급하고, 부호어 전체로부터 각 행, 각 열에 대한 신드롬을 연산하여, 신드롬을 기초로 각 행, 각 열에 대한 에러를 정정하도록 하였다.
또한, 청구범위 제9항에 기재한 발명은 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가되어 외부에 접속된 메모리에 저장된 블록 데이터에 대하여, 블록 데이터의 각 열마다 에러 정정을 행하는 열 에러 정정과, 블록 데이터의 각 행마다 에러 정정 처리를 행하는 행 에러 정정을 행하는 에러 정정 회로를 구비한 에러 정정 장치에 있어서, 상기 에러 정정 회로는 각 행 또는 열의 복수 데이터를 병렬로 연산하여, 각 행 또는 열에 대한 에러 정정을 행하고, 상기 메모리는 상기 복수의 행 또는 열에 대응한 데이터 버스 폭으로 설정되고, 상기 에러 정정 회로는 상기 메모리에 저장된 상기 블록 데이터의 각 행 또는 열로부터 상기 메모리의 데이터 버스 폭의 정수배의 데이터를 한번에 판독하고, 그 판독한 복수의 데이터를 병렬로 연산하여 각 행 또는 열마다 에러 정정을 행하도록 하였다.
또한, 청구범위 제12항에 기재한 발명은 청구범위 제8항에 기재한 에러 정정 장치에 있어서, 상기 에러 정정 회로는 각 열에 대한 에러 정정 처리를 행하는 열 에러 정정 회로와, 각 행에 대한 에러 정정 처리를 행하는 행 에러 정정 회로로 구성되고, 상기 메모리에 행 에러 정정 회로에 의한 에러 정정 후의 블록 데이터를 저장하는 동시에, 상기 메모리에 저장된 데이터를 한번에 그 메모리에 데이터 버스 폭의 정수 배의 수마다 순차적으로 판독하여 상기 열 에러 정정 회로에 출력하는 메모리 제어부를 구비하였다.
또한, 청구범위 제13항에 기재한 발명은 청구범위 제12항에 기재한 에러 정정 장치에 있어서, 상기 블록 데이터는 기록 매체에 인터리브되어 기억되고, 상기 행 에러 정정 회로는 기록 매체로부터 판독된 데이터에 대하여 에러 정정하여, 정정후의 블록 데이터를 상기 메모리 제어부에 출력하고, 상기 메모리 제어부는 정정후의 데이터를 재배열하여 메모리에 기억하도록 하였다.
또한, 청구범위 제15항에 기재한 발명은 청구범위 제12항에 기재한 에러 정정 장치에 있어서, 상기 열 에러 정정 회로는 정정 후의 각 열의 데이터를 상기 메모리에 저장하고, 그 각 열에 대한 에러 정정 후의 데이터를 상기 메모리의 데이터 버스 폭의 정수 배의 데이터 수마다 판독하여, 각 행마다 에러 정정 처리를 행하는 제2 행 에러 정정 회로를 구비하였다.
또한, 청구범위 제16항에 기재한 발명은 청구범위 제12항에 기재한 에러 정정 장치에 있어서, 상기 메모리는, 한정된 범위 내에 저장된 데이터에 대한 액세스가 범위를 초과한 액세스보다도 고속으로 행해지는 메모리로서, 메모리 제어부는 상기 데이터 버스 폭 분의 각 열의 데이터 및 복수의 행의 데이터를 상기 메모리의 동일 범위 내에 저장하도록 하였다.
또한, 청구범위 제17항에 기재한 발명은 기록 매체로부터 판독한 데이터를 판독하는 데이터 판독 장치로서, 상기 판독된 데이터에 대하여 에러 정정을 행하는 청구범위 제9항에 기재한 에러 정정 장치와, 상기 에러 정정 장치에 의해 처리되는 복수의 행 또는 열에 대응한 데이터 버스 폭으로 설정되어, 블록 데이터를 기억하는 메모리를 구비하였다.
또한, 청구범위 제18항에 기재한 발명은 한정된 범위 내에 저장된 데이터에 대한 액세스가 범위를 초과한 액세스보다도 고속으로 행해지는 기억 장치에 대하여, 각 행 및 각 열에 대하여 에러 정정 기호가 부가된 블록 데이터를 각 열 또는 각 행 단위로 액세스하고, 각 열의 복수의 데이터를 동시에 연산하여 각 열마다 에러 정정을 행하며, 복수의 행의 데이터를 병렬로 연산하여 각 행마다 에러 정정을 행하는 에러 정정 장치에 있어서의 데이터 맵핑 방법으로서, 상기 기억 장치의 데이터 버스 폭을, 각 열마다 동시에 연산되는 데이터 수, 또는 병렬로 연산되는 복수의 행의 데이터 수의 정수배로 설정하여, 상기 데이터 버스 폭 분의 각 열의 데이터 및 복수의 행의 데이터를 상기 기억 장치의 동일 범위 내에 저장하도록 하였다.
청구범위 제19항에 기재한 발명은 한정된 범위 내에 저장된 데이터에 대한 액세스가 범위를 초과한 액세스보다도 고속으로 행해지는 기억 장치에 대하여, 각 행 및 각 열에 대하여 에러 정정 기호가 부가된 블록 데이터를 각 열 또는 각 행 단위로 액세스하고, 각 행의 복수의 데이터를 동시에 연산하여 각 행마다 에러 정정을 행하며, 복수의 열의 데이터를 병렬로 연산하여 각 열마다 에러 정정을 행하는 에러 정정 장치에 있어서의 데이터 맵핑 방법으로서, 상기 기억 장치의 데이터 버스 폭을, 각 행마다 동시에 연산되는 데이터 수, 또는 병렬로 연산되는 복수의 열의 데이터 수의 정수 배로 설정하여, 상기 데이터 버스 폭 분의 각 행의 데이터 및 복수의 열의 데이터를 상기 기억 장치의 동일 범위 내에 저장하도록 하였다.
(작용)
따라서, 청구범위 제1항에 기재한 발명에 의하면, 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가된 블록 데이터의 복수의 열 또는 행에 대한 에러 정정이 병렬로 행해지고, 블록 데이터는 복수의 행 또는 열에 대응한 데이터 버스 폭의 메모리에 저장되고, 복수의 행 또는 열로부터 메모리의 데이터 버스 폭의 정수배의 데이터가 한번에 판독되며, 그 판독된 복수의 행 또는 열의 데이터가 병렬로 연산되어 각 행 또는 열마다 에러 정정이 행해지고, 각 행, 각 열이 각각 부호어로서 취급되고, 부호어 전체로부터 각 행, 각 열에 대한 신드롬이 연산되어, 신드롬을 기초로 각 행, 각 열에 대한 에러가 정정된다.
또한, 청구범위 제2항에 기재한 발명에 의하면, 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가된 블록 데이터의 각 행 또는 열의 복수의 데이터가 병렬로 연산되어, 각 행 또는 열에 대한 에러 정정이 행해지고, 블록 데이터는 복수의 부호어에 대응한 데이터 버스 폭의 메모리에 저장되고, 각 행 또는 열로부터 메모리의 데이터 버스 폭의 정수배의 데이터가 한번에 판독되며, 그 판독된 복수의 데이터가 병렬로 연산되어 각 행 또는 열마다 에러 정정이 행해진다.
또한, 청구범위 제5항에 기재한 발명에 의하면, 메모리에는 각 열 또는 각 행에 대한 에러 정정 후의 블록 데이터가 저장되고, 그 메모리로부터 복수의 행 또는 열의 데이터, 또는 각 행 또는 열의 복수의 데이터가 순차적으로 판독되어 각 행 또는 열마다 에러 정정이 행해진다.
또한, 청구범위 제6항에 기재한 발명에 의하면, 블록 데이터는 기록 매체에인터리브되어 기억되고, 메모리에는 각 열 또는 각 행에 대한 에러 정정 후에 재배열되어 저장된다.
또한, 청구범위 제8항에 기재한 발명에 의하면, 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가되어 외부에 접속된 메모리에 저장된 블록 데이터에 대하여, 복수의 열 또는 행에 대한 에러 정정을 병렬로 행하는 에러 정정 회로가 구비되고, 메모리는 복수의 행 또는 열에 대응한 데이터 버스 폭으로 설정되고, 에러 정정 회로는 메모리에 저장된 블록 데이터의 복수의 행 또는 열로부터 메모리의 데이터 버스 폭의 정수배의 데이터가 한번에 판독되며, 그 판독된 복수의 행 또는 열의 데이터가 병렬로 연산되어 각 행 또는 열마다 에러 정정이 행해지고, 열 에러 정정 회로 및 행 에러 정정 회로는 각각 각 행, 각 열을 부호어로서 취급하고, 부호어 전체로부터 각 행, 각 열에 대한 신드롬을 연산하여, 신드롬을 기초로 각 행, 각 열에 대한 에러를 정정한다.
또한, 청구범위 제9항에 기재한 발명에 의하면, 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가되어 외부에 접속된 메모리에 저장된 블록 데이터에 대하여, 각 행 또는 열의 복수의 데이터를 병렬로 연산하여, 각 행 또는 열에 대한 에러 정정을 행하는 에러 정정 회로가 구비되고, 메모리는 복수의 행 또는 열에 대응한 데이터 버스 폭으로 설정되고, 에러 정정 회로는 메모리에 저장된 블록 데이터의 각 행 또는 열로부터 메모리의 데이터 버스 폭의 정수배의 데이터가 한번에 판독되며, 그 판독된 복수의 데이터가 병렬로 연산되어 각 행 또는 열마다 에러 정정이 행해진다.
또한, 청구범위 제12항에 기재한 발명에 의하면, 에러 정정 회로는 각 열에 대한 에러 정정 처리를 행하는 열 에러 정정 회로와, 각 행에 대한 에러 정정 처리를 행하는 행 에러 정정 회로로 구성되고, 메모리에는 행 에러 정정 회로에 의한 에러 정정 후의 블록 데이터가 저장된다. 메모리 제어 회로는 메모리에 저장된 데이터가 한번에 그 메모리에 데이터 버스 폭의 정수배의 수마다 순차적으로 판독하여 열 에러 정정 회로에 출력한다.
또한, 청구범위 제13항에 기재한 발명에 의하면, 블록 데이터는 기록 매체에 인터리브되어 기억되고, 행 에러 정정 회로는 기록 매체로부터 판독된 데이터에 대하여 에러 정정하여, 정정후의 블록 데이터를 메모리 제어부에 출력하며, 메모리 제어부는 정정후의 데이터를 재배열하여 메모리에 기억한다.
또한, 청구범위 제15항에 기재한 발명에 의하면, 열 에러 정정 회로는 정정 후의 각 열의 데이터를 메모리에 저장하고, 그 각 열에 대한 에러 정정 후의 데이터를 메모리의 데이터 버스 폭의 정수배의 데이터 수마다 판독하여, 각 행마다 에러 정정 처리를 행하는 제2 행 에러 정정 회로를 구비한다.
또한, 청구범위 제16항에 기재한 발명에 의하면, 메모리는 한정된 범위 내에 저장된 데이터에 대한 액세스가 범위를 초과한 액세스보다도 고속으로 행해지는 것으로, 메모리 제어부는 데이터 버스 폭 분의 각 열의 데이터 및 복수의 행의 데이터를 메모리의 동일 범위내에 저장한다.
또한, 청구범위 제17항에 기재한 발명에 의하면, 기록 매체로부터 판독된 데이터에 대하여 에러 정정이 행해진다. 메모리는 에러 정정 처리되는 복수의 행 또는 열에 대응한 데이터 버스 폭으로 설정되어, 블록 데이터가 기억된다.
또한, 청구범위 제18항에 기재한 발명에 의하면, 한정된 범위내에 저장된 데이터에 대한 액세스가 범위를 초과한 액세스보다도 고속으로 행해지는 기억 장치에 대하여, 각 행 및 각 열에 대하여 에러 정정 기호가 부가된 블록 데이터가 각 열 또는 각 행 단위로 액세스되고, 각 열의 복수의 데이터가 동시에 연산되어 각 열마다 에러 정정이 행해진다. 그 기억 장치의 데이터 버스 폭이, 각 열마다 동시에 연산되는 데이터수, 또는 병렬로 연산되는 복수의 행의 데이터수의 정수배로 설정되어, 데이터 버스 폭분의 각 열의 데이터 및 복수의 행의 데이터가 기억 장치의 동일 범위내에 저장된다.
또한, 청구범위 제19항에 기재한 발명에 의하면, 한정된 범위내에 저장된 데이터에 대한 액세스가 범위를 초과한 액세스보다도 고속으로 행해지는 기억 장치에 대하여, 각 행 및 각 열에 대하여 에러 정정 기호가 부가된 블록 데이터가 각 열 또는 각 행 단위로 액세스되고, 각 행의 복수의 데이터가 동시에 연산되어 각 행마다 에러 정정이 행해진다. 그 기억 장치의 데이터 버스 폭이 각 행마다 동시에 연산되는 데이터수, 또는 병렬로 연산되는 복수의 열의 데이터수의 정수배로 설정되어, 데이터 버스 폭 분의 각 행의 데이터 및 복수의 열의 데이터가 기억 장치의 동일 범위 내에 저장된다.
(제1 실시 형태)
이하, 본 발명을 구체화한 제1실시 형태를 도 1∼도 10에 따라서 설명한다.
도 1에 도시된 바와 같이, 광디스크 제어 장치(21)는, ATAPI(AT attachmentpacket interface)등의 소정의 인터페이스를 통해 컴퓨터(22)에 접속되어 있다. 또한, 광디스크 제어 장치(21)는 인터페이스를 통해 광디스크 구동 장치(23)에 접속되어 있다.
광디스크 구동 장치(23)는 기록 매체로서의 디지털 비디오 디스크(DVD: Digital Video Disk)(24)를 소정의 속도로 회전 구동하는 동시에, DVD(24)에 기록된 데이터를 도시하지 않은 광픽업에 의해 판독한다. 그리고, 광디스크 구동 장치 (23)는 판독 데이터를 광디스크 제어 장치(21)에 출력한다.
광디스크 제어 장치(21)는 광디스크 컨트롤러(25), 마이크로 프로세서(26), 기억 장치로서의 외부 버퍼 메모리(27), 인터페이스 회로(28), 및 입출력 구동 회로(29)를 구비한다.
광디스크 컨트롤러(이하, 단지 컨트롤러라 한다)(25)는 광디스크 구동 장치 (23)로의 명령 송신 및 상태 수령과, 광디스크로부터의 판독 포맷 해독 및 에러 정정과, 광디스크 구동 장치(23)와 외부 버퍼 메모리(27)와의 사이의 데이터 전송과, 인터페이스 회로(28)와 외부 버퍼 메모리(27)와의 사이의 데이터 전송 등의 각 처리를 행한다.
또한, 컨트롤러(25)에는 광디스크 구동 장치(23)로부터 출력되는 판독 데이터가 입출력 구동 회로(29)를 통해 입력된다. 컨트롤러(25)는 입력되는 데이터에 에러 정정 등의 처리를 행하여 외부 버퍼 메모리(27)에 저장한다. 그리고, 컨트롤러(25)는 마이크로 프로세서(26)의 명령에 기초하여, 버퍼 메모리에 저장한 데이터를 인터페이스 회로(28)를 통해 외부 기기로서의 컴퓨터(22)에 전송한다.
여기서, DVD(24)에 기록된 데이터에 대해서 설명한다.
기록 매체로서 디지털 비디오 디스크(DVD: Digital Video Disk) 등의 광디스크에 있어서는, 기억 용량이 방대하고 또한, 디스크 제조시의 결함 등이나, 디스크의 표면에 부착한 오염 등에 의해서, 판독한 데이터의 에러 발생율이 매우 높다. 그 때문에, 도 8에 도시된 바와 같이, DVD(24)에 기록된 1개의 블록 데이터(31)에는 정보 기호(데이터 부분)(32), 제1 에러 정정 부호(제1 ECC 부분)(33), 및 제2 에러 정정 부호(제2 ECC부분)(34)이 저장된다.
데이터 부분(32)은 복수(본 실시 형태에서는 16개)의 데이터 섹터(35)에 의해 구성된다. 도 9에 도시된 바와 같이, 각 데이터 섹터(35)는 4바이트의 식별 데이터 ID, 2바이트의 ID 에러 검출 부호 IEC, 6바이트의 예약 영역 RSV, 2048바이트 (2k바이트)의 데이터 DATA, 및 4바이트의 에러 검출 부호 EDC로 구성된다. 즉, 데이터 섹터(35)는 2064바이트의 데이터로 구성되고, 데이터 부분(32)은 약 33K바이트(33024바이트=2064바이트×16섹터)의 데이터로 구성된다.
도 8에 도시된 바와 같이, 데이터 부분(32)의 각 데이터는 소정의 행수 및 열수(본 실시 형태에서는, 192행×172열)의 2차원 배열로 배열된다. 여기서, 데이터 부분(32)을 구성하는 각 데이터를 열방향(도 8에 있어서 세로 방향)의 좌표치 x(0≤x≤191)와, 행방향(도 8에 있어서 가로 방향)의 좌표치 y(0≤y≤171)를 이용하여 데이터 B(x, y)로서 표시하는 것으로 한다. 그렇게 하면, 데이터 부분(32)은 데이터(B,0)∼ 데이터 B(191,171)에 의해 구성된다.
그리고, 데이터 부분(32)에는 각 열마다의 데이터에 기초하여 연산된 제1ECC부분(33)이 부가되어 있다. 제1 ECC부분(33)은 소정의 에러 정정 부호(예컨대, 리드·솔로몬 부호(Reed-Solomon Code))로 이루어지고, 각 열의 데이터수에 대응하여, 소정의 바이트수(본 실시 형태에서는 16바이트)의 에러 정정 부호가 연산되어 부가되고 있다. 제1 ECC부분(33)을 구성하는 각 부호를 데이터 부분(32)과 동일하게, 열방향의 좌표치 x(192≤x≤207)와, 행방향의 좌표치 y(0≤y≤171)를 이용하여 데이터 B(x, y)로서 표시하는 것으로 한다. 그렇게 하면, 제1 ECC부분(33)의 각 부호(데이터)는 데이터 B(192,0)∼B(207,171)에 의해 구성된다.
그리고, 제1 ECC부분(33)의 1열째 데이터 B(192,0)∼B(207,0)는 데이터 부분(32)의 1열째 데이터 B(0,0)∼B(191,0)에 기초하여 감산되어, 부가되고 있다. 동일하게, 제1 ECC부분(33)의 2열째 데이터 B(192,1)∼B(207,1)로부터 172열째 데이터 B(192,171)∼B(207,171)는 각각 데이터 부분(32)의 2열째 데이터 B(0,1)∼B(191,1)로부터 172열째 데이터 B(0,171)∼B(191,171)의 데이터에 기초하여 연산되어, 부가되고 있다.
또, 데이터 부분(32) 및 제1 ECC부분(33)에는 각 행마다의 데이터에 기초하여 연산된 제2 ECC부분(34)이 부가되어 있다. 제2 ECC부분(34)은 소정의 에러 정정 부호(리드·솔로몬 부호)로 이루어지고, 각 행의 데이터수에 대응한 소정의 바이트수(본 실시 형태에서는 10바이트)의 에러 정정 부호가 연산되어 부가되고 있다. 제2 ECC부분(34)을 구성하는 각 부호를 데이터 부분(32), 제1 ECC 부분(33)과 동일하게, 열방향의 좌표치 x(0≤x≤207)와, 행방향의 좌표치 y(172≤y≤181)를 이용하여 데이터 B(x, y)로서 나타내는 것으로 한다. 그렇게 하면, 제2 ECC 부분(34)의각 부호 데이터는 데이터 B(0,172)∼B(207,181)에 의해 구성된다.
그리고, 제2 ECC부분(34)의 1행째 데이터 B(0,172)∼B(0,181)는 데이터 부분(32)의 1행째의 데이터 B(0,0)∼B(0,171)에 기초하여 연산되어 부가되고 있다. 동일하게, 제2 ECC부분(34)의 2행째의 데이터 B(1,172)∼B(1,181)로부터 192행째 데이터 B(191,172)∼B(191,181)는 각각 데이터 부분(32)의 2행째 데이터 B(1,0)∼B(1,171)로부터 192행째 데이터 B(191,0)∼B(191,171)의 데이터에 기초하여 연산되어, 부가되고 있다.
또, 제2 ECC부분(34)의 193행째 데이터 B(192,172)∼B(192,181)로부터 208열째 데이터 B(207,172)∼B(207,181)는 각각 제1 ECC부분(33)의 193열째 데이터 B(192,0)∼B(192,171)로부터 208열째 데이터 B(207,0)∼B(207,171)의 데이터에 기초하여 연산되어, 부가되고 있다.
따라서, 도 1에 도시되는 컨트롤러(25)는 우선, 1개의 블록 데이터(31)의 각 행의 데이터에 대하여 에러 정정 처리를 행하고, 그 후, 각 열의 데이터에 대하여 에러 정정 처리를 행한다. 즉, 컨트롤러(25)는 데이터 부분(32), 제1 ECC부분(33), 및 제2 ECC부분(34)을 1개의 2차원 배열로서 취급한다.
그리고, 컨트롤러(25)는 2차원 배열된 1개의 블록 데이터(31)의 각 행을 각각 부호어로서 취급한다. 배열의 1개의 행, 즉, 1개의 부호어를 1인터리브라고 한다.
컨트롤러(25)는 인터리브마다 에러 정정 처리를 행한다. 먼저, 컨트롤러(25)는 인터리브마다 부호어 전체에서 신드롬을 구한다. 다음에, 컨트롤러(25)는 신드롬을 기초로, 에러의 위치 다항식과 수치 다항식을 구한다. 이 때의 방법으로는 예컨대, 유클리디안 알고리즘이 이용된다.
그리고, 컨트롤러(25)는 에러 위치 다항식 및 에러 수치 다항식을 기초로, 에러 위치 및 에러 수치를 구하여, 해당하는 위치의 데이터 에러를 정정한다. 즉, 부호어의 몇 번째 데이터가 어떻게 틀리는지를 구하는 것이다. 이 때의 방법으로는 가령, 친 알고리즘(Chien algorithm)(친 서치)이 이용된다.
다음에, 컨트롤러(25)는 2차원 배열된 1개의 블록 데이터(31)의 각 열을 각각 부호어(인터리브)로서 취급한다. 그리고, 컨트롤러(25)는 상기 각 행의 인터리브와 동일하게, 각 열의 인터리브마다 에러 정정 처리를 행한다. 즉, 컨트롤러(25)는 각 열의 인터리브마다 부호어 전체에서 신드롬을 구하여, 그 신드롬을 기초로 부호어의 에러 위치 및 에러 수치를 구하여 에러를 정정한다.
따라서, 컨트롤러(25)는 1개의 블록 데이터(31)의 각 행과 각 열을 부호어(인터리브)로서 취급하여, 각 인터리브마다 에러 정정 처리를 행한다. 여기서, 부호어로서 취급하는 각 행과 각 열을 서로 구별하기 위해서, 이하, 부호어로서 취급하는 각 열을 열 인터리브라고 하고, 부호어로서 취급하는 각 행을 행 인터리브라고 한다.
즉, 도 8에 도시된 바와 같이, 1개의 블록 데이터(31)는 208행의 행 인터리브 H0∼H207로 표시된다. 행 인터리브 H0은 1행째 데이터 B(0,0)∼B(0,181)에 의해 구성된다. 동일하게, 행 인터리브 H1∼H207는 2행째 데이터 B(1,0)∼B(1,181)로부터 208행째 데이터 B(207,0)∼B(207,181)에 의해 구성된다.
또한, 1개의 블록 데이터(31)는 182열의 열 인터리브 V0∼V182로 표시된다. 열 인터리브 V0은 1열째 데이터 B(0,0)∼B(207,0)에 의해 구성된다. 동일하게, 열인터리브 V1-V207은 2열째 데이터 B(0,1)∼B(207,1)로부터 208열째 데이터 B(0,181)∼B(207,181)에 의해 구성된다.
도 1에 도시되는 컨트롤러(25)는 1개의 블록 데이터(31)에 대하여 에러 정정 처리를 행하는 경우에, 먼저, 각 행 인터리브 H0∼H207에 대하여 에러 정정 처리를 행한다. 그 후, 컨트롤러(25)는 각 열 인터리브 V0∼V171에 대하여 에러 정정 처리를 행한다.
그런데, 1개의 블록 데이터(31)는 실제로는, 데이터 부분(32)과 제1 ECC부분(33)이 각각 소정수로 분할되는 동시에 인터리브되어, 도 1에 도시되는 DVD(24)에 저장된다. 도 10에 도시된 바와 같이, 1개의 블록 데이터(31)의 데이터 부분(32)은 복수의 부분(본 실시 형태에서는 16개)으로 분할되고, 각 부분에는 각각 제1 ECC부분(33)이 분할되어 인터리브되고 있다. 그리고, 분할된 1개의 부분과 인터리브된 제1 ECC부분(33)의 열에 의해 1개의 기록 섹터(1클러스터)가 구성된다.
즉, 1개의 블록 데이터(31)는 16개의 클러스터 C0∼C15로 구성된다. 각 클러스터 C0∼C15는 각각 데이터 부분(32)중의 분할된 12행분의 데이터와, 제1 ECC부분 (33)중의 분할된 1행분의 데이터로 구성된다.
즉, 클러스터 C0는 행 인터리브 H0∼H11와, 인터리브된 행 인터리브 H192로 구성되어, DVD(24)에 저장되어 있다. 그리고, 클러스터 C15는 행 인터리브 H180∼H191과, 인터리브된 행 인터리브 H207로 구성되어, DVD(24)에 저장되어 있다.
따라서, DVD(24)에 저장된 데이터는 클러스터 C0으로부터 순차적으로 판독된다. 즉, 클러스터 C0에 있어서, 도 10에 도시된 바와 같이, 먼저 1행째(도 10에 있어서 가장 위의 행)의 행 인터리브 H0에서 12행째의 행 인터리브 H11이 판독되면, 다음에 13행째 인터리브된 행 인터리브 H192가 판독되고, 클러스터 C0의 판독이 종료하여, 다음 클러스터 C1이 판독된다. 또한, 클러스터 C1∼C15에 있어서의 판독 순서는 클러스터 C0과 같기 때문에, 설명을 생략한다.
판독된 클러스터 C0의 행 인터리브 H0∼H11, H192는 그 판독된 순서로 컨트롤러(25)에 입력된다. 컨트롤러(25)는 인력되는 행 인터리브 H0∼H11, H19마다 신드롬을 생성하여, 그 생성한 신드롬 데이터에 기초하여 각 행 인터리브 H0∼H11, H192에 대한 에러 정정 처리를 행한다. 그리고, 컨트롤러(25)는 에러 정정한 각 행 인터리브 H0∼H11, H192를 일단 외부 버퍼 메모리(27)에 저장한다. 외부 버퍼 메모리(27)는 복수의 블록 데이터(31)를 저장할 수 있다.
즉, 컨트롤러(25)는 행 인터리브 H0을 입력하여, 그 행 인터리브 H0에 대한 에러 정정 처리를 행한다. 그 에러 정정 처리에 있어서, 컨트롤러(25)는 행 인터리브 H0의 신드롬을 생성하고, 그 신드롬에 기초하여 행 인터리브 H0의 에러 정정을 행한다. 그리고, 컨트롤러(25)는 정정 처리후의 행 인터리브 H0을 외부 버퍼 메모리(27)에 일단 저장한다.
다음에, 컨트롤러(25)는 행 인터리브 H1∼H11, H192를 순차적으로 입력하여, 각 행 인터리브 H1∼H11, H192마다 신드롬을 생성하고, 에러 정정 처리를 행하며,정정 후의 각 행 인터리브 H1∼H11, H192를 외부 버퍼 메모리(27)에 일단 저장한다. 그리고, 정정 후의 행 인터리브 H192를 외부 버퍼 메모리(27)에 저장하면, 컨트롤러(25)는 다음에 클러스터 C1의 각 행 인터리브를 차례로 입력한다. 컨트롤러(25)는 클러스터 C0과 동일하게 클러스터 C1의 각 행 인터리브에 대한 에러 정정 처리를 행한 후, 정정 후의 각 행 인터리브를 외부 버퍼 메모리(27)에 일단 저장한다. 또, 컨트롤러(25)는 클러스터 C2∼C15의 행 인터리브를 차례로 입력하여, 각 행 인터리브에 대하여 에러 정정 처리를 행한 후, 정정 후의 각 행 인터리브를 외부 버퍼 메모리(27)에 일단 저장한다.
이 때, 컨트롤러(25)는 인터리브된 각 행의 재배열을 동시에 행한다, 예컨대, 클러스터 C0의 각 행 인터리브 H0∼H11, H192에 대하여, 컨트롤러(25)는 외부버퍼 메모리(27)에 대하여, 클러스터 C0의 행 인터리브 H0∼H11를 1행째에서 12행 째가 되도록 저장한다. 그리고, 컨트롤러(25)는 행 인터리브 H192를 193행째가 되도록 외부 버퍼 메모리(27)에 저장한다.
1개의 블록 데이터(31)를 구성하는 모든 데이터, 즉, 행 인터리브 H0∼H207을 외부 버퍼 메모리(27)에 일단 저장하면, 컨트롤러(25)는 다음에, 열 인터리브 V0∼V181에 대한 에러 정정 처리를 행한다. 즉, 컨트롤러(25)는 외부 버퍼 메모리에 저장된 1개의 블록 데이터(31)의 열 인터리브 V0∼V181을 판독한다. 그리고, 컨트롤러(25)는 판독한 각 열 인터리브 V0∼V181의 신드롬을 생성하고, 그 신드롬에 기초하여 각 열 인터리브 V0∼V181에 대한 에러 정정 처리를 행한다.
이 때, 컨트롤러(25)는 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 복수의 열 인터리브에 대한 신드롬의 생성을 병렬로 행한다. 각 열 인터리브 V0∼V181의 각 데이터 B(0,0)∼B(207,0)에서 B(0,181)∼B(207,181)은 각각 1바이트 (8비트)로 이루어진다. 따라서, 외부 버퍼 메모리(27)의 데이터 버스 폭은 복수 바이트(8비트의 정수배)로 설정되어 있다.
컨트롤러(25)는 각 열 인터리브 V0∼V181중의 복수의 열 인터리브로부터 1바이트씩, 합계 복수 바이트의 데이터를 입력한다. 그리고, 컨트롤러(25)는 판독한 데이터를 각 열 인터리브마다 연산하여 각 열에 대한 신드롬을 평행하여 생성한다.
예컨대, 외부 버퍼 메모리(27)의 데이터 버스 폭이 2바이트(16비트=8비트 ×2)로 설정되어 있는 경우에 대해서 설명한다. 이 경우, 컨트롤러(25)는 2개의 열인터리브, 예컨대, 열 인터리브 V0, V1로부터 1바이트씩, 즉, 도 8에 있어서 가로방향의 데이터 B(0,0)과 데이터 B(0,1)을 판독한다. 다음에, 컨트롤러(25)는 열 인터리브 V0, V1로부터 각각 데이터 B(1,0), B(1,1)을 판독한다. 동일하게, 열 인터리브 V0, V1로부터 각각 데이터 B(2,0)∼B(207,0), B(2,1)∼B(207,1)을 판독한다.
그리고, 컨트롤러(25)는 판독한 데이터 B(0,0), B(0,1), B(1,0), B(1,1), ∼, B(207,0), B(207,1)을 각 열 인터리브 V0, V1마다, 즉, 데이터 B(0,0)∼ B(207,0)을 연산하여 열 인터리브 V0에 대응하는 신드롬과, 데이터 B(0,1)∼ B(207,1)을 연산하여 열 인터리브 V1에 대응하는 신드롬을 생성한다.
즉, 컨트롤러(25)는 1개의 블록 데이터(31)를 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 수만큼 열방향으로 판독한다. 따라서, 컨트롤러(25)는 열 인터리브 V0∼V181에 대하여 에러 정정 처리를 행하는 경우, 각 열 인터리브V0∼V181마다 데이터를 판독하는 경우에 비하여 외부 버퍼 메모리(27)로부터 판독하는 회수, 즉, 외부 버퍼 메모리(27)에 대한 액세스 회수가 적어진다.
예컨대, 외부 버퍼 메모리(27)의 데이터 버스 폭이 2바이트인 경우, 액세스 회수는 종래의 1/2이 되고, 데이터 버스 폭이 4바이트인 경우, 액세스 회수는 종래의 1/4이 된다. 그 결과, 컨트롤러(25)로부터 열 인터리브에 대한 에러 정정 처리에 있어서의 액세스 회수가 적어진 만큼, 외부 버퍼 메모리(27)에 대한 액세스의 부하가 적어진다. 또한, 열 인터리브에 대한 에러 정정 처리에 있어서의 액세스 회수가 적어진 만큼, 외로부터의 액세스, 행 인터리브에 대한 에러 정정후의 데이터 저장이나, 도 1중의 컴퓨터(22)등의 외부 기기로의 데이터의 판독을 위한 액세스 회수를 증가시키는, 즉, 처리의 고속화를 도모할 수 있다.
다음에, 컨트롤러(25)의 구성을 도 2에 따라서 상세히 기술한다.
컨트롤러(25)는 신호 처리부(41), 복조 회로부(42), 에러 정정 회로부(43), 및 버퍼 메모리 제어부(44)를 구비한다.
신호 처리부(41)에는 DVD(24)로부터 판독된 데이터가 순차적으로 입력된다.
신호 처리부(41)는 입력되는 데이터를 디지털 데이터로 변환하는 동시에, 변환한 디지털 데이터에 동기한 클록 신호 CLK를 생성한다. 그리고, 신호 처리부(41)는 변환한 디지털 데이터를 복조 회로부(42)에 출력하고, 생성한 클록 신호 CLK를 복조 회로부(42), 에러 정정 회로부(43) 등에 출력한다.
복조 회로부(42)는 신호 처리부(41)로부터 입력되는 클록 신호 CLK에 동기하여 동작하고, 소정의 방식, 예컨대, EFMplus(Eight-to-Fourteen Modulation Plus)방식 등에 의해 신호 처리부(41)로부터 입력되는 데이터를 복조한다. 그리고, 복조 회로부(42)는 복조후의 데이터를 에러 정정 회로부(43)에 출력한다.
에러 정정 회로부(43)는 PI 신드롬 생성부(PIsyd부)(45), PI 에러 정정부 (PIecc부)(46), PO 신드롬 생성부(POsyd부)(47), PO 에러 정정부(POecc부)(48)에 의해 구성된다. PIsyd부(45) 및 PIecc부(46)는 도 8에 도시되는 블록 데이터(31)의 각 행 인터리브 H0∼H207에 대한 에러 정정을 행하기 위해서 설치되며, 행 에러 정정 회로(49)를 구성하고 있다.
POsyd부(47) 및 POecc부(48)는 도 8에 도시되는 블록 데이터(31)의 각 열 인터리브 V0∼V181에 대한 에러 정정을 행하기 위해서 설치되며, 열 에러 정정 회로 (50)를 구성하고 있다.
PIsyd부(45)는 도 8에 도시되는 각 행 인터리브 H0∼H207에 대하여, 각 행 인터리브마다 신드롬을 생성하기 위해서 설치되어 있다. 또한, 각 행 인터리브 H0∼H207에 대한 처리는 같기 때문에, 여기서는, 행 인터리브 H0에 대한 처리만을 설명하고, 행 인터리브 H1∼H207에 대한 처리의 설명을 생략한다.
도 3에 도시된 바와 같이, PIsyd부(45)는 생성하는 신드롬 데이터수에 대응한 복수의 신드롬 연산기(51)를 구비한다. 각 신드롬 연산기(51)는 각각 배타적 논리합 회로(이하, EOR 회로라 한다)(52), 8비트의 플립플롭 회로(이하, 단지 FF라 한다)(53), 및 승산 회로(G. MUL)(54)에 의해 구성된다.
각 신드롬 연산기(51)의 승산 회로(54)에는 각각 갈로아체로 이루어지는 승수가 미리 설정되어 있다. 각 승산 회로(54)에 설정되는 승수는 각각 다른 값으로,생성하는 신드롬에 기초하여 설정되어 있다.
도 4에 도시된 바와 같이, 각 신드롬 연산기(51)에는 신호 처리부(42)에 의해 생성되어 출력되는 클록 신호 CLK에 동기하여 행 인터리브 H0의 데이터 B(0, 0)∼B(0,181)이 순차적으로 입력된다. 즉, 각 신드롬 연산기(51)에는 그때그때에 같은 데이터(예컨대, 데이터 B(0,0))가 입력된다.
그리고, 각 신드롬 연산기(51)는 클록 신호 CLK에 동기 동작하고, 순차적으로 입력되는 데이터 B(0,0)∼B(0,181)에 기초하여 신드롬을 생성한다.
즉, PIsyd부(45)는 각 행 인터리브 H0∼H207을 순차적으로 입력한다. 그리고, PIsyd부(45)는 각 행 인터리브 H0∼H207마다 신드롬을 생성한다.
PIecc부(46)는 PIsyd부(45)로써 생성된 신드롬을 기초로, 각 행 인터리브 H0∼H207의 에러를 정정하기 위해서 설치되어 있다. PIecc부(46)에는 1개의 행 인터리브분에 대응한 용량의 내부 버퍼 메모리(46a)가 구비된다. PIecc부(46)에는 각 행 인터리브 H0∼H207가 순차적으로 입력되며, 각 행 인터리브 H0∼H207는 순차적으로 내부 버퍼 메모리(46a)에 저장된다.
또한, PIecc부(46)는 PIsyd부(45)로부터 각 행 인터리브 H0∼H207에 각각 대응하는 신드롬을 순차적으로 입력한다. PIecc부(46)는 입력한 신드롬을 기초로, 에러의 위치 다항식과 수치 다항식을 구한다. 그 연산에는 예컨대, 유클리디안 알고리즘이 이용된다.
다음에, PIecc부(46)는 에러 위치 다항식 및 에러 수치 다항식을 기초로, 에러 위치 및 에러 수치를 구한다. 그 연산에는 예컨대 친 알고리즘(친 서치)이 이용된다.
또, PIecc부(46)는 구한 에러 위치 및 에러 수치를 기초로, 내부 - 버퍼 메모리(46a)에 저장된 각 행 인터리브 H0∼H207의 에러를 정정한다. 그리고, PIecc부 (46)는 정정 후의 각 행 인터리브 H0∼Fl207을 버퍼 메모리 제어부(44)로 출력한다.
버퍼 메모리 제어부(44)는 PIecc부(46)와, 후술하는 POsyd부(47), POecc부 (48), 및 인터페이스 회로(28)로부터의 지령에 기초하여, 외부 버퍼 메모리(27)에 대한 데이터의 기록 및 판독을 제어하기 위해서 설치되어 있다.
도 7에 도시된 바와 같이, 버퍼 메모리 제어부(44)에는 조정 회로(61), 어드레스 발생 회로(62), 및 데이터 패스 전환 회로(63)가 구비된다. 조정 회로(61)는 그때 그때에, 데이터의 판독 또는 기록을 위한 패스를 설정하기 위해서 설치되어 있다. 패스란, 데이터를 판독 및 기록하는 경로로서, 본 실시 형태에서는, PIecc부 (46)로부터 데이터를 기록하는 패스, POsyd부(47) 및 POecc부(48)로부터 데이터를 판독하는 패스, POecc부(48)로부터 데이터를 기록하는 패스, 및 인터페이스 회로 (28)로부터 데이터를 판독하는 패스가 있다. 조정 회로(61)는 DVD(24)로부터 데이터를 판독하는 그때 그때에, 1개의 패스만을 허용한다. 그리고, 조정 회로(61)는 허용한 패스에 대응한 판독 및 기록을 위한 제어 신호 RD/WR을 외부 버퍼 메모리 (27)에 출력한다.
어드레스 발생 회로(62)는 조정 회로(61)에 의해 허용된 패스의 회로부(46∼ 38,28)로부터 입력되는 데이터 또는 지령에 기초하여, 기록 및 판독하는 대상이 되는 데이터에 대응한 외부 버퍼 메모리(27)의 어드레스 신호를 발생시킨다. 그리고, 어드레스 발생 회로(62)는 발생시킨 어드레스 신호를 외부 버퍼 메모리(27)에 출력한다. 데이터 패스 전환 회로(63)는 조정 회로(61)에 의해 허용된 패스에 대하여 외부 버퍼 메모리(27)의 데이터 버스를 접속하기 위해서 설치되어 있다.
따라서, 버퍼 메모리 제어부(44)는 PIecc부(46)로부터 각 행 인터리브 H0∼ H208을 외부 버퍼 메모리(27)에 기록한다. 또한, 버퍼 메모리 제어부(44)는 POsyd부(47) 및 POecc부(48)로부터의 지령에 기초하여, 외부 버퍼 메모리(27)에 저장된 도 8에 도시되는 블록 데이터(31)의 각 열 인터리브 V0∼V181을 판독하여, POsyd부 (47) 및 POecc부(48)로 각각 출력한다.
예컨대, PIecc부(46)로부터 외부 버퍼 메모리(27)에 각 행 인터리브 H0∼ H207을 기록하는 경우, 버퍼 메모리 제어부(44)의 조정 회로(61)는 PIecc부(46)의 패스를 허용한다. 어드레스 발생 회로(62)는 각 행 인터리브 H0∼H207에 대응한 어드레스를 발생시켜, 외부 버퍼 메모리(27)에 출력한다. 그리고, 데이터 패스 전환회로(63)는 PIecc부(46)로부터 입력되는 각 행 인터리브 H0∼H207을 외부 버퍼 메모리(27)에 출력하고, 각 행 인터리브 H0∼H20은 외부 버퍼 메모리(27)의 소정의 어드레스에 기록된다.
외부 버퍼 메모리(27)에 모든 행 인터리브 H0∼H207, 즉, 1개의 블록 데이터 (31)가 저장되면, POsyd부(47) 및 POecc부(48)는 버퍼 메모리 제어부(44)에 대하여 판독 지령을 출력한다. 이 POsyd부(47) 및 POecc부(48)가 지령을 내는 타이밍은 도1에 도시되는 마이크로 프로세서(26)에 의해 제어된다.
즉, 상기 PIecc부(46)는 각 행 인터리브 H0∼H207마다 에러 정정 처리를 종료할 때에, 마이크로 프로세서(26)에 종료를 나타내는 신호를 출력한다. 그리고, 마이크로 프로세서(26)는 그 신호에 기초하여 다음 열 인터리브 V0∼V181에 대한 에러 정정 처리를 행하도록, POsyd부(47) 및 POecc부(48)에 신호를 출력한다. 그렇게 하면, POsyd부(47) 및 POecc부(48)는 버퍼 메모리 제어부(44)에 대하여 지령을 출력하여, 열 인터리브 V0∼V181의 데이터를 입력하는 것이다.
다음에, 도 2의 POsyd부(47) 및 POecc부(48)에 대해서 설명한다.
POsyd부(47)는 도 8에 도시되는 각 열 인터리브 V0∼V181에 대하여, 각 열 인터리브마다 신드롬을 생성하기 위해서 설치되어 있다. 또한, POsyd부(47)는 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 수의 열 인터리브에 대한 신드롬의 생성을 병렬로 행한다.
이 때, POsyd부(47)에는 2개의 열 인터리브의 데이터가 순차적으로 입력된다. 예컨대, 도 8에 도시되는 블록 데이터(31)를 입력하는 경우, POsyd부(47)에는, 먼저, 열 인터리브 V0의 데이터 B(0,0)∼B(207,0)와, 열 인터리브 V1의 데이터 B(0,1)∼B(207,1)가 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 2바이트의 데이터가 병렬로 입력된다.
즉, 도 6에 도시된 바와 같이, POsyd부(47)에는, 먼저, 열 인터리브 V0의 데이터 B(0,0)와, 열 인터리브 V1의 데이터 B(0,1)이 입력되고, 다음에, 데이터 B(1,0)과 데이터 B(1,1)이 입력된다. 그리고, 열 인터리브 V0, V1의 모든 데이터가 입력되면, POsyd부(47)에는 다음에, 열 인터리브 V2, V3의 각 데이터가 병렬로 입력된다.
도 5에 도시된 바와 같이, POsyd부(47)는 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 수(본 실시 형태에서는 2개)의 신드롬 생성 회로(71,72)를 구비한다. 양 신드롬 생성 회로(71,72)에는 각각 생성하는 신드롬의 데이터수에 대응한 복수의 신드롬 연산기(73)를 구비한다. 각 신드롬 연산기(73)는 각각 배타적 논리합 회로(이하, EOR 회로라 한다)(74), 8비트의 플립플롭 회로(이하, 단지 FF라 한다)(75), 및 승산 회로(G. MUL)(76)에 의해 구성된다.
각 신드롬 연산기(73)의 승산 회로(76)에는 각각 갈로아체로 이루어지는 승수가 미리 설정되어 있다. 각 승산 회로(76)에 설정되는 승수는 각각 다른 값으로, 생성하는 신드롬에 기초하여 설정되어 있다.
신드롬 생성 회로(71)의 각 신드롬 연산기(73)에는 신호 처리부(42)에 의해 생성되어 출력되는 클록 신호 CLK에 동기하여 열 인터리브 V0의 데이터 B(0,0)∼ B(207,0)이 순차적으로 입력된다. 즉, 각 신드롬 연산기(73)에는 그때 그때에 같은 데이터(예컨대, 데이터 B(0,0))가 입력된다. 그리고, 각 신드롬 연산기(73)는 클록신호 CLK에 동기 동작하고, 입력되는 데이터 B(0,0)∼B(207,0)에 기초하여 신드롬을 생성한다.
신드롬 생성 회로(72)의 각 신드롬 연산기(73)에는 신호 처리부(42)에 의해 생성되어 출력되는 클록 신호 CLK에 동기하여 열 인터리브 V1의 데이터 B(0,1)∼ B(207,1)가 순차적으로 입력된다. 즉, 각 신드롬 연산기(73)에는 그때 그때에 같은 데이터(예컨대, 데이터 B(0,0))가 입력된다. 그리고, 각 신드롬 연산기(73)는 클록신호 CLK에 동기 동작하고, 입력되는 데이터 B(0,1)∼B(207,1)에 기초하여 신드롬을 생성한다.
또한, POsyd부(47)는 각 열 인터리브 V2∼V181에 대하여 열 인터리브 V0, V1에 대한 처리와 같은 처리를 행하기 때문에, 상세한 설명을 생략한다. 즉, POsyd부 (47)는 각 열 인터리브 V0∼V181을 2개의 열 인터리브마다 순차적으로 입력한다.
그리고, POsyd부(47)는 입력한 2개의 열 인터리브마다의 신드롬을 병렬로 생성한다.
도 2에 도시되는 POecc부(48)는 POsyd부(47)로써 생성된 각 열 인터리브마다의 신드롬을 기초로, 각 열 인터리브 V0∼V181의 에러를 정정하기 위해서 설치되어 있다. POecc부(48)는 에러 위치 및 에러 수치의 쌍을 1인터리브당의 정정 가능한 에러개수만큼 저장할 수 있는 용량을 갖는 내부 버퍼 메모리(48a)를 구비한다.
또한, POecc부(48)에는 POsyd부(47)로써 생성된 1개의 열 인터리브에 대한 신드롬을 입력한다. POecc부(48)는 입력한 신드롬을 기초로, 그 신드롬의 열 인터리브에 대한 에러의 위치 다항식과 수치 다항식을 구한다. 그 연산에는 예컨대, 유클리디안 알고리즘이 이용된다.
다음에, POecc부(48)는 에러 위치 다항식 및 에러 수치 다항식을 기초로, 에러 위치 및 에러 수치를 구한다. 그 연산에는 예컨대 친 알고리즘(친 서치)가 이용된다.
또, POecc부(48)는 구한 에러 위치 및 에러 수치의 쌍을 내부 버퍼 메모리 (48a)에 저장하고, 대응하는 행 인터리브중, 에러 위치에 해당하는 외부 버퍼 메모리(27)상의 데이터를 판독하여 에러 수치와 서로 EOR을 취한 데이터를 내부 버퍼 메모리(48a)에 재기록한다. 그리고, POecc부(48)는 내부 버퍼 메모리(48a)에 유지하고 있는 에러 위치에 대응하는 외부 버퍼 메모리(27)의 어드레스에, EOR을 취한 데이터를 버퍼 메모리 제어부(44)를 통해 외부 버퍼 메모리(27)에 저장하고, 1개의 열 인터리브에 대한 에러 정정 처리를 종료한다.
그리고, 모든 열 인터리브 V0∼V181에 대하여 에러 정정 처리가 종료하면, 인터페이스 회로(28)는 버퍼 메모리 제어부(44)에 대하여 판독 지령을 출력한다. 이 인터페이스 회로(35)가 지령을 내는 타이밍은, 상기한 POsyd부(47) 및 POecc부 (48)가 지령을 내는 타이밍과 동일하며, 도 l에 도시되는 마이크로 프로세서(22)에 의해 제어된다.
버퍼 메모리 제어부(44)는 인터페이스 회로(28)로부터의 지령에 기초하여, 외부 버퍼 메모리(27)에 저장된 1개의 블록 데이터(31)중, 데이터 부분(32)을 순차적으로 판독하여, 인터페이스 회로(28)에 출력한다. 인터페이스 회로(35)는 입력되는 데이터 부분(32)의 각 데이터를, 소정의 포맷으로써 인터페이스를 통해 컴퓨터 (22)로 순차적으로 출력한다.
이상 기술한 바와 같이, 본 실시의 형태에 의하면, 다음과 같은 효과를 발휘한다.
(1) DVD(24)로부터 판독한 데이터를 저장하는 외부 버퍼 메모리(27)의 데이터 버스 폭을 복수 바이트로 확장한다. 그 외부 버퍼 메모리(27)에는 복수의 행 인터리브 H0∼H207과 복수의 열 인터리브 V0∼V181로 이루어지는 2차원 배열된 블록데이터(31)가 저장된다. 컨트롤러(25)는 외부 버퍼 메모리(27)에 저장된 1개의 블록 데이터(31)를, 그 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 복수의 열 인터리브마다 판독한다. 그리고, 컨트롤러(25)는 판독한 데이터 버스 폭분의 열 인터리브를 병렬로 연산하여 신드롬을 생성하고, 판독한 각 열 인터리브에 대하여 에러 정정을 행하도록 하였다.
그 결과, 모든 열 인터리브의 수를 한번에 외부 버퍼 메모리(27)로부터 판독하는 열수로 나눈 값의 수만큼 열방향으로 판독한다. 따라서, 컨트롤러(25)는 열 인터리브 V0∼V181에 대하여 에러 정정 처리을 행하는 경우, 각 열 인터리브 V0∼ V181마다 데이터를 판독하는 경우에 비하여 외부 버퍼 메모리(27)로부터 판독하는 회수, 즉, 외부 버퍼 메모리에 대한 액세스 회수가 적어진다. 그 때문에, 액세스 회수가 적어지는 만큼, 외부 버퍼 메모리(27)에 대한 액세스를 고속화할 수 있는 동시에, 신드롬의 생성을 DVD(24)로부터 데이터를 판독하여 처리 시간을 고속화할 수 있다.
(2) 컨트롤러(25)에는 DVD(24)로부터 판독된 블록 데이터(31)의 각 행 인터리브 H0∼H207에 대하여 에러 정정 처리를 행하는 행 에러 정정 회로(49)가 구비된다. 행 에러 정정 회로(49)는 DVD(24)로부터 판독된 행 인터리브 H0∼H207을 순차적으로 입력하는 동시에, 각 행 인터리브 H0∼H207마다 연산한 신드롬을 기초로, 각 행 인터리브 H0∼H207에 대하여 에러 정정 처리를 행한다. 그리고, 행 에러 정정 회로(49)는 정정후의 각 행 인터리브 H0∼H207을 순차적으로 외부 버퍼 메모리 (27)에 저장하도록 하였다.
그 결과, 각 행 인터리브 H0∼H207에 대하여 에러 정정 처리를 행하는 동시에 외부 버퍼 메모리(27)에 저장하므로, 에러 정정 처리를 고속화할 수 있고, DVD(24)로부터의 판독의 고속화를 행할 수 있다.
(3) 컨트롤러(25)에는 DVD(24)로부터 판독된 블록 데이터(31)의 각 열 인터리브 V0∼V182에 대하여 에러 정정 처리를 행하는 POsyd부(47) 및 POecc부(48)가 구비된다. POsyd부(47)는 2개의 신드롬 생성 회로(71,72)를 구비한다. 각 신드롬 생성 회로(71,72)에는, 각각 다른 열 인터리브의 데이터가 입력되고, 각 행 인터리브에 대한 신드롬이 각각 연산되어 출력된다.
그 결과, 외부 버퍼 메모리(27)로부터 데이터 버스 폭에 대응하여 판독한 복수의 열 인터리브에 대응하는 신드롬을 병렬로 연산할 수 있고, 에러 정정 처리의 고속화를 행할 수 있다.
(제2 실시 형태)
이하, 본 발명을 구체화한 제2 실시 형태를 도 11∼도 13에 따라서 설명한다. 또한, 설명의 편의상, 제1 실시 형태와 동일한 구성에 대해서는 동일한 부호를 붙여서 그 설명을 일부 생략한다.
도 11에 도시된 바와 같이, 광디스크 컨트롤러(이하, 단지 컨트롤러라 한다)(81)에는 신호 처리부(41), 복조 회로부(42), 에러 정정 회로(82), 버퍼 메모리 제어부(83), 및 인터페이스 회로(28)(도시 생략)가 구비된다. 에러 정정 회로 (82)에는 제1 PI 신드롬 생성부(제1 PIsyd부)(45), 제1 PI 에러 정정부(제1 PIecc부)(46), PO 신드롬 생성부(POsyd부)(47), 및 PO 에러 정정부(POecc부)(48)와, 제2PI 신드롬 생성부(제2 PIsyd부)(84) 및 제2 PI 에러 정정부(제2 PIecc부)(85)가 구비된다.
버퍼 메모리 제어부(83)는 각부(46∼48,84,85), 및 인터페이스 회로(28)로부터의 지령에 기초하여, 외부 버퍼 메모리(27)에 대한 데이터의 기록 및 판독을 제어하기 위해서 설치되어 있다.
제2 PIsyd부(84) 및 제2 PIecc부(85)는, 열 에러 정정 회로(50)(POsyd부(47)및 POecc부(48))에 의해 정정되어 외부 버퍼 메모리(27)에 저장된 데이터에 대하여, 다시 각 행 인터리브에 대한 에러 정정을 하기 위해서 설치되어 있다. 즉, 제1 PIsyd부(45) 및 제1 PIecc부(46)는 제1 행 에러 정정 회로(49)를 구성하고, 제2 PIsyd부(84) 및 제2 PIecc부(85)는 제2 행 에러 정정 회로(86)를 구성하고 있다.
제2 PIsyd부(84)는 도 8에 도시되는 각 행 인터리브 H0∼H207에 대하여, 각 행 인터리브마다 신드롬을 생성하기 위해서 설치되어 있다. 또한, 제2 PIsyd부(84)는 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 수의 데이터를 병렬로 연산하여, 신드롬을 생성한다.
예컨대, 외부 버퍼 메모리(27)의 데이터 버스 폭이 2바이트인 경우, 제2 PIsyd부(84)에는 외부 버퍼 메모리(27)로부터 각 행 인터리브 H0∼H207의 각 데이터가 2바이트씩 입력된다 즉, 도 13에 도시된 바와 같이, 제2 PIsyd부(84)에는 먼저 행 인터리브 H0의 데이터 B(0,0), B(0,1)가 입력되고, 다음에 데이터 B(0,2), B(0,3)이 입력된다. 그리고, 행 인터리브 H0의 데이터 B(0,206), B(0,207)가 입력되면, 제2 PIsyd부(84)에는 다음 행 인터리브 H1의 데이터가 2바이트씩 입력된다,
도 12에 도시된 바와 같이, 제2 PIsyd부(84)는 생성하는 신드롬의 데이터수에 대응한 복수의 신드롬 연산기(91)를 구비한다. 각 신드롬 연산기(91)는 각각 2개의 배타적 논리합 회로(이하, EOR 회로라 한다)(92,93), 2개의 승산 회로(G. MUL)(94,95), 및 8비트의 플립플롭 회로(이하, 단지 FF라 한다)(96)를 구비한다.
승산 회로(94,95)에는 각각 갈로아체로 이루어지는 같은 값의 승수가 미리 설정되어 있다. 그 승수는 각 신드롬 연산기(91)마다 다른 값으로서, 생성하는 신드롬에 기초하여 설정되어 있다. FF(96)에는 행 인터리브 H0의 연산 개시 시에 있어서 「0」이 설정된다.
각 신드롬 연산기(91)에는, 신호 처리부(42)에 의해 생성되어 출력되는 클록신호 CLK에 동기하여 행 인터리브 H0의 데이터 B(0,0)∼B(0,181)이 2바이트씩 순차적으로 입력된다. 예컨대, 도 8의 행 인터리브 H0에 대한 연산을 행하는 경우, 각 신드롬 연산기(91)에는, 도 13에 도시된 바와 같이, 먼저, 데이터 B(0,0)와 데이터 B(0,1)이 입력된다. 그리고, 다음 클록에서는, 각 신드롬 연산기(91)에는, 데이터 B(0,2)와 데이터 B(0,3)이 입력된다.
그리고, 신드롬 연산기(91)는 클록 신호 CLK에 동기 동작하고, 순차적으로 입력되는 2바이트를 동시에 연산한다. 즉, 신드롬 연산기(91)의 EOR 회로(92)는 행 인터리브 H0의 데이터 B(0,0)이 입력되고, EOR 회로(93)는 행 인터리브 H0의 데이터 B(0,1)이 입력된다.
다음에, EOR 회로(92)는 다음 행 인터리브 H0의 데이터 B(0,2)와, FF(96)에 래치된 데이터의 승산 회로(95)에 의한 연산 결과(이 때에는 「0」)가 입력된다.또한, EOR 회로(93)는 다음 행 인터리브 H0의 데이터 B(0,3)과, 승산 회로(94)로부터 출력된 데이터 B(0,1)의 연산 결과가 입력된다.
따라서, 승산 회로(94)는 데이터 B(0,0), B(0,2), ···, B(0,180)의 연산을 순차적으로 행하고, 승산 회로(95)는 데이터 B(0,1), B(0,3), ···, B(0,181)의 연산을 순차적으로 행한다. 그리고, 2개의 EOR 회로(92,93)의 연산은 동시에 행해진다. 또한, 2개의 승산 회로(94,95)의 연산은 동시에 행해진다.
즉, 제2 PIsyd부(84)는 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응한 수의 데이터를 입력한다. 예컨대, 외부 버퍼 메모리(27)의 데이터 버스 폭이 2바이트인 경우, 제2 PIsyd부(84)는 각 행 인터리브 H0∼H207의 각 데이터를 2바이트씩 판독하여, 그 판독한 2바이트의 데이터를 동시에 연산한다. 그리고, 제2 PIsyd부(84)는 1개의 행 인터리브의 모든 데이터를 판독하여 연산하며, 각 행 인터리브에 대한 신드롬을 생성한다.
따라서, 제2 PIsyd부(84)의 외부 버퍼 메모리(27)에 대한 액세스 회수는, 각 행 인터리브 H0∼H207의 각 데이터를 1바이트씩 판독하기 위한 액세스 회수의 절반이 된다.
제2 PIecc부(85)는 각 행 인터리브 H0∼H207의 에러를 정정하기 위해 설치되어 있다. 제2 PIecc부(85)는 제2 PIsyd부(84)로부터 각 행 인터리브 H0∼H207에 각각 대응하는 신드롬을 순차적으로 입력한다. 제2 PIecc부(85)는 입력한 신드롬을 기초로, 에러의 위치 다항식과 수치 다항식을 구한다. 그 연산에는 예컨대, 유클리디안 알고리즘이 이용된다.
다음에, 제2 PIecc부(85)는 에러 위치 다항식 및 에러 수치 다항식을 기초로, 에러 위치 및 에러 수치를 구한다. 그 연산에는 예컨대 친 알고리즘(친 서치)이 이용된다.
또, 제2 PIecc부(85)는 구한 에러 위치 및 에러 수치의 쌍을 내부 버퍼 메모리(85a)에 저장하고, 대응하는 행 인터리브중, 에러 위치에 대응하는 외부 버퍼 메모리(27)상의 데이터를 판독하여 에러 수치와 서로 EOR을 취한 데이터를 내부 버퍼 메모리(85a)에 재기록한다. 그리고, 제2 PIecc부(85)는 내부 버퍼 메모리(85a)가 유지하고 있는 에러 위치에 대응하는 외부 버퍼 메모리(27)의 어드레스에, EOR을 취한 데이터를, 버퍼 메모리 제어부(83)를 통해 외부 버퍼 메모리(27)에 저장하고, 1개의 행 인터리브에 대한 에러 정정 처리를 종료한다.
그리고, 모든 행 인터리브 H0∼H207에 대하여 에러 정정 처리가 종료하면, 인터페이스 회로(28)는 버퍼 메모리 제어부(83)에 대하여 판독 지령을 출력한다.
이 인터페이스 회로(35)가 지령을 내는 타이밍은, 제1 실시 형태와 동일하고, 도 1에 도시되는 마이크로 프로세서(22)에 의해 제어된다.
버퍼 메모리 제어부(83)는 인터페이스 회로(28)로부터의 지령에 기초하여, 외부 버퍼 메모리(27)에 저장된 1개의 블록 데이터(31)중, 데이터 부분(32)을 순차적으로 판독하여, 인터페이스 회로(28)에 출력한다. 인터페이스 회로(35)는 입력되는 데이터 부분(32)의 각 데이터를 소정의 포맷으로써 인터페이스를 통해 컴퓨터 (22)로 순차적으로 출력한다.
이상 기술한 바와 같이, 본 실시 형태에 의하면, 다음과 같은 효과를 발휘한다.
(1) 상기 제1 실시 형태의 (1)∼(3)과 같은 효과를 발휘한다.
(2) 또, 컨트롤러(82)에는 외부 버퍼 메모리(27)에 저장된 블록 데이터(31)에 대하여, 각 행 인터리브 H0∼H207마다 다시 에러 정정 처리를 행하는 제2 PIsyd부(84) 및 제2 PIecc부(85)를 구비한다. 제2 PIsyd부(84)는 복수 바이트를 동시에 연산하는 신드롬 생성 회로(91)를 구비하며, 외부 버퍼 메모리(27)의 데이터 버스폭에 대응한 복수의 데이터를 병렬로 연산하여 신드롬을 생성하도록 하였다.
그 결과, 외부 버퍼 메모리(27)로부터 판독하는 회수, 즉, 외부 버퍼 메모리 (27)에 대한 액세스 회수가 적어진다. 그 때문에, 액세스 회수가 적어지는 만큼, 외부 버퍼 메모리(27)에 대한 액세스를 고속화할 수 있는 동시에, DVD(24)로부터 데이터를 판독하여 처리 시간을 고속화할 수 있다.
(제3 실시 형태)
이하, 본 발명을 구체화한 제3실시 형태를 도 14에 따라서 설명한다.
또한, 설명의 편의상, 제1실시 형태와 동일한 구성에 대해서는 동일한 부호를 붙여서 설명을 일부 생략한다.
또한, 본 실시 형태에 있어서, 제1 실시 형태와 다른 점은 광디스크 컨트롤러에 구비된 버퍼 메모리 제어부의 동작뿐이므로 동일한 부호를 이용하여, 도 14에 따라서 버퍼 메모리 제어부(44)의 동작에 대해서만 상세히 기술한다.
여기서, 기억 장치로서의 외부 버퍼 메모리(27)는 복수의 블록 데이터(31)를 저장하는데 충분한 기억 용량의 DRAM(Dynamic Random Access Memory)으로 이루어지고, 어떤 한정된 어드레스 범위(동일 페이지)내에서는 고속으로 액세스할 수 있는, 소위 고속 페이지 모드를 구비하고 있다. 그리고, 버퍼 메모리 제어부(44)는 그 고속 페이지 모드를 이용하여 외부 버퍼 메모리(27)에 대하여 데이터의 판독 및 기록을 행한다.
또한, 버퍼 메모리 제어부(44)는 허용한 패스에 대하여 한번에 복수 바이트(예컨대, 16바이트=8워드(1워드는 2바이트))의 데이터를 액세스(판독 및 기록)하는 것으로 한다. 즉, PIecc부(47)로부터 출력되는 각 행 인터리브 H0∼H207(도 8 참조), POsyd부(47) 및 POecc부(48)에 입출력되는 열 인터리브 V0∼V181(도 8 참조), 인터페이스 회로(28)에 출력되는 데이터 부분(32)(도 8 참조)은, 각각 16바이트마다 외부 버퍼 메모리(27)에 액세스된다.
이 구성에 의해, 버퍼 메모리 제어부(44)는 외부 버퍼 메모리(27)에 대하여, PIecc부(46)로부터 블록 데이터(31)의 기록 동작, POsyd부(47)로의 블록 데이터 (31)의 판독 동작, POecc부(48)로부터 블록 데이터(31)의 기록 동작, 및 인터페이스 회로(28)로의 블록 데이터(31)의 판독 동작을 병렬로 행할 수 있다.
또한, 도 7에 도시되는 어드레스 발생 회로(62)는 PIecc부(46)와, POsyd부 (47) 및 POecc부(48)에 대하여 한번에 입출력을 행하는 수의 데이터를, 외부 버퍼 메모리(27)의 동일 페이지내에 저장하도록, 각 데이터에 대한 어드레스를 발생시킨다. 예컨대, PIecc부(46)는 도 8에 도시되는 각 행 인터리브 H01∼H207를 순차적으로 출력한다. 따라서, 도 1에 도시되는 외부 버퍼 메모리(27)에는 한번에 16바이트의 데이터, 즉, 도 8에 도시되는 행 인터리브 H0의 데이터 B(0,0)∼B(0,15)가 저장된다.
한편, POsyd부(47) 및 POecc부(48)는 2개의 열 인터리브마다 외부 버퍼 메모리(27)로부터 데이터를 판독한다. 따라서, 외부 버퍼 메모리(27)로부터는, 한번에 8워드(=16바이트)의 데이터, 즉, 열 인터리브 V0, V1의 데이터 B(0,0), B(0,1), B(1,0), B(1,1), B(2,0), B(2,1), B(3,0), B(3,1)이 판독된다.
따라서, 어드레스 발생 회로(62)는 행 인터리브 H0의 데이터 B(0,0)∼ B(0,15)와, 열 인터리브 V0, V1의 데이터 B(0,0), B(0,1)∼B(3,0), B(3,1)를 외부버퍼 메모리(27)의 1페이지에 저장하도록 각 데이터에 대한 어드레스를 발생시킨다.
구체적으로, 외부 버퍼 메모리(27)의 어드레스 「0」(Oh)으로부터 차례로 저장하는 경우를, 도 14에 따라서 설명한다. 또한, 외부 버퍼 메모리(27)의 1페이지는 256바이트로 설정되어 있는 것으로 한다.
각 행 인터리브 H0∼H207은 각각 선두의 16바이트씩이 외부 버퍼 메모리(27)의 어드레스 「0」 (Oh)으로부터 차례로 열거하여 저장된다. 따라서, 외부 버퍼 메모리(27)에는, 먼저, 행 인터리브 H0의 데이터 B(0,0)∼B(0,15)가 어드레스 「0」 (Oh)∼「15」(OFh)에 저장된다. 이하, 어드레스를 16진 표현으로 나타내는 것으로 한다.
다음에, 외부 버퍼 메모리(27)에는, 행 인터리브 H1의 데이터 B(0,0)∼ B(0,15)가 어드레스(10h)∼(lFh)에 저장된다. 그리고, 행 인터리브 H207의 데이터 B(207,0)∼B(207,15)가 어드레스(CF0h)∼(CFFh)에 저장된다. 계속해서, 각 행 인터리브 H0∼H207의 다음 16바이트가 차례로 열거하여 저장된다. 즉, 행 인터리브 H0의 데이터 B(0,16)∼B(0,31)이 어드레스(DOOh)∼(DOFh)에 저장된다.
즉, 어드레스 발생 회로(62)는 각 행 인터리브 H0∼H207의 데이터를, 외부 버퍼 메모리(27)에 대하여 액세스하는 복수 바이트(본 실시 형태에서는 16바이트)마다 반복한 어드레스를 발생시키며, 그 어드레스에 각 행 인터리브 H0∼H207이 각각 저장된다.
그리고, 외부 버퍼 메모리(27)의 1페이지를 256바이트로 한다. 그렇게 하면, 외부 버퍼 메모리(27)의 1페이지째, 즉 어드레스(Oh)∼(FFh)에는, 행 인터리브 H0의 데이터 B(0,0)∼B(0,15)에서 행 인터리브 H15의 데이터 B(15,0)∼B(15,15)까지가 저장된다. 그리고, 한번에 저장되는 16바이트의 데이터에 대한 어드레스는 256 바이트 이내이기 때문에, 외부 버퍼 메모리(27)의 로우 어드레스는 변화하지 않는다. 또한, 행 인터리브 H0∼H15의 다른 데이터, 및 다른 행 인터리브 H16∼H207에 대해서도 동일하기 때문에, 설명을 생략한다.
즉, 버퍼 메모리 제어부(44)는 로우 어드레스를 변경하지 않고 데이터를 외부 버퍼 메모리(27)에 대하여 액세스할 수 있다. 따라서, 도 7에 도시되는 버퍼 메모리 제어부(44)는 PIsyd부(46)로부터 출력되는 각 행 인터리브 H0∼H207을, 고속 페이지 모드를 이용하여 외부 버퍼 메모리(27)에 저장할 수 있다.
이 외부 버퍼 메모리(27)의 1페이지째에 저장된 데이터 B(0,0)∼B(0,15)로부터 데이터 B(15,0)∼B(15,15)는, 열 인터리브 V0∼V15의 선두 16바이트이다. 그리고, 도 2에 도시되는 POsyd부(47) 및 POecc부(48)에 대하여 한번에 출력되는 열 인터리브 V0, V1의 데이터 B(0,0), B(0,1)∼B(3,0), B(3,1)는 외부 버퍼 메모리(27) 1페이지내에 저장되어 있다. 또한, 열 인터리브 V0, V1의 다른 데이터, 및 다른 열 인터리브 V2∼V181에 대해서도 같기 때문에, 설명을 생략한다.
따라서, 도 7에 도시되는 버퍼 메모리 제어부(44)는 POsyd부(47) 및 POecc부 (48)에 출력하는 열 인터리브 V0∼V181을, 고속 페이지 모드를 이용하여 외부 버퍼 메모리(27)로부터 판독할 수 있다.
또한, 도 14에 도시된 바와 같이, 외부 버퍼 메모리(27)에 각 데이터 B(0,0)∼B(207,181)를 저장한 경우, 도 2에 도시되는 POsyd부(47) 및 POecc부(48)에 있어서, 열 인터리브 V0∼V181을 순차적으로 판독하는 경우에, 1개의 행 인터리브마다, 또는 3개 이상의 행 인터리브마다 데이터를 판독하는 경우에도 유효하다. 이 경우에도, POsyd부(47) 및 POecc부(48)는 한번에 복수 바이트(본 실시 형태에서는 16바이트)의 데이터를 액세스한다.
이 경우, 외부 버퍼 메모리(27)의 1페이지째에는, 각 열 인터리브 V0∼V15의 선두 16바이트의 데이터 B(0,0)∼B(15,0)으로부터 데이터 B(0,15)∼B(15,15)가 저장되어 있다. 즉, 1개의 열 인터리브 V0를 판독하는 경우, 한번에 액세스되는 16바이트의 데이터 B(0,0)∼B(15,0)은 외부 버퍼 메모리(27)의 l페이지내에 저장되어 있다. 따라서, 도 2에 도시되는 버퍼 메모리 제어부(44)는 고속 페이지 모드를 이용하여 외부 버퍼 메모리(27)로부터 데이터를 판독할 수 있다.
또한, 열 인터리브 V0의 다른 데이터 B(16,0)∼B(207,0), 및 다른 열 인터리브 V1∼V181에 대해서도 동일하기 때문에, 설명을 생략한다. 또한, 3개 이상의 열인터리브마다 데이터를 판독하는 경우도 같기 때문에, 설명을 생략한다.
그런데, PIecc부(46)로부터 출력되는 데이터에 대하여 단순히 어드레스를 발생시켜 외부 버퍼 메모리(27)에 저장하는 경우, 도 2에 도시된 바와 칼이, 외부 버퍼 메모리(27)에는 각 행 인터리브의 데이터가 선두 어드레스로부터 순차적으로 저장된다. 이 때, 외부 버퍼 메모리(27)에는 행 인터리브의 각 데이터가 연속한 어드레스에 저장된다. 따라서, 각 행 인터리브 H0∼H207을 한번에 복수 바이트씩 저장하는 경우에는, 고속 페이지 모드를 사용할 수 있다.
그러나, 열 인터리브 V0∼V181의 각 데이터의 어드레스는 불연속이고, 또한, 1페이지분의 어드레스를 초과하고 있다. 예컨대, 열 인터리브 V0의 선두 데이터 B(0,0)은 어드레스(Oh)에 저장되고, 다음 데이터 B(1,0)는 어드레스(OB6h)(「182」번지)에, 데이터 B(2,0)는 어드레스(16Ch)(「364」번지)에 저장된다.
즉, 열 인터리브 V0의 각 데이터 B(0,0)∼B(207,0)은, 「182」번지마다 저장된다. 따라서, 열 인터리브 V0을 한번에 복수 바이트 판독하는 경우, 어드레스는 반드시 1페이지를 초과하기 때문에, 로우 어드레스와 컬럼 어드레스를 각 데이터마다 발생시킬 필요가 있기 때문에 처리가 복잡해지는 동시에, 고속 페이지 모드를 사용할 수 없다.
한편, 본 실시 형태와 같이, 외부 버퍼 메모리(27)에 도 8에 도시되는 블록 데이터(31)를 저장했을 경우, 1페이지내에 각 행 인터리브 H0∼H207의 데이터가 16 바이트 저장되는 동시에, 각 열 인터리브 V0∼V181의 데이터가 16바이트 저장되어 있다. 따라서, 버퍼 메모리 제어부(44)는 외부 버퍼 메모리(27)에 대하여, 도 2에도시되는 PIecc부(46)로부터 행 인터리브 H0∼H27의 기록, POsyd부(47) 및 POecc부 (48)로의 열 인터리브 V0∼V181의 판독의 쌍방에 있어서, 고속 페이지 모드를 사용할 수 있다. 그 결과, 각 데이터에 대하여 로우 어드레스와 컬럼 어드레스를 각각 발생시켜 액세스하는 통상의 액세스 모드에 비하여, 외부 버퍼 메모리(27)에 대한 액세스가 고속화한다.
이상 기술한 바와 같이, 본 실시 형태에 의하면, 다음과 같은 효과를 발휘한다.
(1) 외부 버퍼 메모리(27)는 복수의 블록 데이터(31)를 저장하는데 충분한 용량의 DRAM(Dynamic Random Access Memory)으로 이루어지고, 고속 페이지 모드에서의 판독 및 기록 동작이 가능한 것으로 한다. 어드레스 발생 회로(62)는 PIecc부 (46)와, POsyd부(47) 및 POecc부(48)에 대하여 한번에 입출력을 행하는 수의 데이터를 외부 버퍼 메모리(27)의 1페이지내에 저장하도록, 각 데이터에 대한 어드레스를 발생시킨다.
그 결과, 버퍼 메모리 제어부(44)는 외부 버퍼 메모리(27)에 대하여 한번에 복수 바이트 액세스하는 경우에, 각 행 인터리브 H0∼H207과 각 열 인터리브 V0∼ V181의 쌍방에 고속 페이지 모드를 이용하여 외부 버퍼 메모리(27)로부터 데이터를 판독할 수 있다. 따라서, 외부 버퍼 메모리(27)에 대한 액세스를 통상의 액세스 모드에 비하여 고속화할 수 있으며, 처리 시간의 고속화를 도모할 수 있다.
(2) 버퍼 메모리 제어부(44)는 허용한 패스에 대하여 한번에 복수 바이트의 데이터를 액세스하는 것으로 한다. 그리고, 버퍼 메모리 제어부(44)는 PIecc부(47)로부터 출력되는 각 행 인터리브 H0∼H207, POsyd부(47) 및 POecc부(48)에 입출력되는 열 인터리브 V0∼V181, 인터페이스 회로(28)에 출력되는 데이터 부분(32)을 각각 16바이트마다 외부 버퍼 메모리(27)에 액세스하도록 하였다.
그 결과, 블록 데이터(31)의 각 행 인터리브 H0∼H207의 기록과, 1개 전에 외부 버퍼 메모리(2)에 기억된 블록 데이터(31)의 각 열 인터리브 V0∼V181의 판독 및 기록, 및 다시 1개 전에 외부 버퍼 메모리(27)에 기억된 블록 데이터(31)의 데이터 부분(32)의 판독을 동시에 행할 수 있다.
또한, 본 발명은 상기 각 실시 형태 이외에, 다음과 같은 양태로 실시하여도 좋다.
-상기 각 실시 형태에 있어서, 외부 버퍼 메모리(27)의 데이터 버스 폭을 3 바이트 이상의 임의의 바이트수로 적당히 변경한다. 그리고, 도 15에 도시된 바와 같이, POsyd부(101)에는 변경한 바이트수에 대응한 수의 신드롬 생성 회로(71a∼ 71n)를 구비하며, 한번에 복수 바이트(도 15에 있어서 n 바이트)를 병렬로 연산하여 신드롬을 생성한다.
또한, 제2 실시 형태에 있어서는, 도 12의 제2 PIsyd부(84)에 구비되는 각 신드롬 생성 회로(91)의 구성을 변경한다. 예컨대, 외부 버퍼 메모리(27)의 데이터버스 폭을 3바이트로 변경했을 경우, 도 16에 도시된 바와 같이, 각 신드롬 생성 회로(111)를 각각 3바이트에 대응한 3개의 배타적 논리합 회로(EOR 회로)(112a∼ 112c), 3개의 승산 회로(G. MUL)(113a∼113c), 및 8비트의 플립플롭 회로(FF)(114)에 의해 구성한다. 즉, 외부 버퍼 메모리(27)의 데이터 버스 폭을 n 바이트로 했을경우, n개의 EOR 회로(112a∼112n), 승산 회로(113a∼113n), 및 FF(114)에 의해 각 신드롬 생성 회로를 구성한다.
상기 구성에 따르면, 외부 버퍼 메모리(27)의 데이터 버스 폭에 대응하여 액세스의 회수를 감할 수 있으므로, 외부 버퍼 메모리(27)에 대한 액세스를 고속화할 수 있다.
- 상기 각 실시 형태에 있어서, 외부 버퍼 메모리(27)로부터 POsyd부(47)에 데이터를 판독하는 경우에, 외부 버퍼 메모리(27)로부터 한번에 복수회 데이터 버스 폭분의 데이터를 판독하도록 하여도 좋다.
- 상기 제3 실시 형태에 있어서, 외부 버퍼 메모리(27)에 저장하는 데이터의 배열을 적당히 변경하여 실시한다. 예컨대, 도 17 및 도 18에 도시된 바와 같이, 2개의 행 인터리브를 1조로 하고, 각 조를 각각 한번에 액세스하는 데이터 버스 폭으로 반복하여 외부 버퍼 메모리(27)에 기억한다.
예컨대, 열 인터리브 V0의 데이터 B(0,0)과 열 인터리브 V1의 데이터 B(0,1))를 1조로 하고, 한번에 액세스하는 데이터 버스 폭(16바이트)으로 반복하여, 외부 버퍼 메모리(27)에 기억한다. 이와 같이 배열했을 경우에도, 외부 버퍼 메모리(27)의 1페이지(256바이트)내에 행 인터리브와 열 인터리브와의 각각에 대하여, 한번에 액세스하는 데이터가 저장되므로, 고속 페이지 모드를 이용하여 액세스할 수 있으며, 액세스 시간을 단축할 수 있다.
- 상기 각 실시 형태에 있어서, 기억 장치로서의 외부 버퍼 메모리(27)는 어느 한정된 범위(예컨대 페이지)내에 저장된 데이터에 대한 액세스가, 범위를 초과하는 어드레스에 대한 액세스보다도 고속으로 행할 수 있는 것이라면 어떠한 것을이용하여 실시하여도 좋다. 예컨대, 고속 페이지 모드를 구비한 DRAM 이외에, EDO 모드 DRAM, SDRAM등을 이용하여 실시하여도 좋다.
- 상기 각 실시 형태에 있어서, 도 8∼도 10에 도시되는 블록 데이터(31)의 바이트수, 2차원 배열의 행수 및 열수 등을 적당히 변경하여 실시한다.
- 상기 각 실시 형태에 있어서, DVD(24)로부터 판독한 데이터를 먼저 외부 버퍼 메모리(27)에 재배열하여 저장한다. 컨트롤러(25)는 외부 버퍼 메모리(27)로부터 행 인터리브 H0∼H207을 순차적으로 판독하여 에러 정정 처리를 행하며, 그 정정후에 열 인터리브 V0∼V181를 순차적으로 판독하여 에러 정정 처리를 행하도록 한다.
- 상기 각 실시 형태에 있어서, 행 인터리브와 열 인터리브를 교체한다. 즉, 데이터 부분(정보 기호)(32)의 각 행에 대하여 제1 ECC부분(제1 에러 정정 부호)을 부가한 후, 각 열에 대하여 제2 ECC부분(제2 에러 정정 부호)을 부가한다. 그리고, 컨트롤러(25)는 먼저 각 열 인터리브에 대하여 에러 정정 처리를 행한 후, 각 행 인터리브에 대하여 에러 정정 처리를 행하도록 한다.
- 상기 각 실시 형태에 있어서, 기록 매체로서 DVD에 한정되지 않고, LD(Laser Disc) CD(Compact Disc), CD-ROM(CD-Read Only Memory), MD(Mini Disc), DVD-ROM(DVD-Read Only Memory) 등의 다른 광디스크나, 그 다른 기록 매체로부터 판독하는 데이터를 정정하는 경우에 대해서 활용하여도 좋다. 또한, 본 발명의 광 디스크 제어 장치(21)는 각 기록 매체에 대하여 데이터의 판독 및 기록을 행하는장치에 이용하여 실시하여도 좋다.
- 상기 각 실시 형태에서는, 광디스크 컨트롤러(25)는 정정 후의 데이터를 외부 기기로서의 컴퓨터(22)에 출력하도록 하였지만, 다른 외부 기기, 예컨대, 화상 데이터를 표시하기 위한 화상 처리 장치 등에 출력하도록 하여도 좋다.
- 상기 각 실시 형태에 있어서, 에러 정정 부호로서, 리드·솔로몬 부호를 대신하여, 파이어 부호, BCH 부호(Bose-Chaudhuri-Hocquenghem code), 해밍 부호 (Hamming code), 사이클릭 부호(cyclic code), 골레이 부호(Golay code) 등을 이용하여 실시하여도 좋다.
- 상기 각 실시 형태에 있어서, 버퍼 메모리 제어부(44)의 어드레스 발생 회로(62)를 에러 정정 회로(43), 인터페이스 회로(28)측에 구비하여 실시한다. PIecc부(46), POsyd부(47), POecc부(48), 및 인터페이스 회로(28)는 각각 필요로 하는 데이터의 어드레스를 버퍼 메모리 제어부에 출력하도록 한다. 이 구성에 의하면, 버퍼 메모리 제어부(44)에 있어서 어드레스를 발생시킬 필요가 없기 때문에, 버퍼 메모리 제어부(44)의 부하를 감소시킬 수 있다.
이상 상세히 기술한 바와 같이, 청구범위 제1항 내지 제7항에 기재한 발명에 의하면, 데이터의 액세스 시간을 짧게 하여 판독 시간의 고속화를 도모할 수 있는 에러 정정 방법을 제공할 수 있다.
또한, 청구범위 제8항 내지 제16항에 기재한 매체에 의하면, 데이터의 액세스 시간을 짧게 하여 판독 시간의 고속화를 도모할 수 있는 에러 정정 장치를 제공할 수 있다.
또한, 청구범위 제17항에 기재한 발명에 의하면, 데이터의 액세스 시간을 짧게 하여 판독 시간의 고속화를 도모할 수 있는 데이터 판독 장치를 제공하는데 있다.
또, 청구범위 제18항 또는 제19항에 기재한 발명에 의하면, 에러 정정 처리에 있어서의 데이터 액세스 시간의 단축을 도모할 수 있는 데이터 맵핑 방법을 제공할 수 있다.

Claims (13)

  1. 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가되는 블록 데이터에 대하여, 블록 데이터의 각 열마다 에러 정정을 행하는 열 에러 정정과, 블록 데이터의 각 행마다 에러 정정 처리를 행하는 행 에러 정정을 행하는 에러 정정 방법에 있어서,
    복수의 열 데이터에 대해 열 에러 정정을 동시에 행하거나, 또는 복수의 행 데이터에 대해 행 에러 정정을 동시에 행하되, 상기 열 에러 및 상기 행 에러 정정중에서 일방을 행한 후, 상기 열 에러 정정 및 상기 행 에러 정정 중에서 타방을 행하고,
    상기 블록 데이터는 상기 복수의 행 또는 열에 대응하는 데이터 버스 폭의 메모리에 저장되고, 복수의 행 또는 열로부터 상기 메모리의 데이터 버스 폭의 정수배 데이터를 한번에 판독하고, 그 판독한 복수의 행 또는 열 데이터를 동시에 연산하여 각 행 또는 열마다 에러 정정을 행하고,
    상기 각 행, 각 열을 각각 부호어로서 취급하고, 부호어 전체로부터 각 행, 각 열에 대한 신드롬을 연산하여, 신드롬을 기초로 각 행, 각 열에 대한 에러를 정정하도록 하는 에러 정정 방법.
  2. 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가된 블록 데이터에 대하여, 블록 데이터의 각 열마다 에러 정정을 행하는 열 에러정정과, 블록 데이터의 각 행마다 에러 정정 처리를 행하는 행 에러 정정을 행하는 에러 정정 방법에 있어서,
    복수의 열 데이터를 이용하여 복수의 열 신드롬을 동시에 생성하는 것을 포함하는 열 에러 정정을 행하거나, 또는 복수의 행 데이터를 이용하여 복수의 행 신드롬을 동시에 생성하는 것을 포함하는 행 에러 정정을 행하되, 상기 열 에러 정정 및 상기 행 에러 정정 중에서 일방을 행한 후, 상기 열 에러 정정 및 상기 행 에러 정정 중에서 타방을 행하고,
    상기 블록 데이터는 상기 복수의 부호어에 대응하는 데이터 버스 폭 메모리에 저장되고, 각 행 또는 열로부터 메모리의 데이터 버스 폭의 정수배 데이터를 한번에 판독하고, 그 판독한 복수의 데이터를 이용하여 복수의 신드롬을 동시에 생성하여 각 행 또는 열마다 에러 정정을 행하도록 하는 에러 정정 방법.
  3. 제1항에 있어서, 상기 메모리에는 각 열 또는 각 행에 대한 에러 정정 후의 블록 데이터가 저장되고, 상기 메모리로부터 복수의 행 또는 열의 데이터, 또는 각 행 또는 열의 복수의 데이터를 순차 판독하여 각 행 또는 열마다 에러 정정을 행하도록 하는 에러 정정 방법.
  4. 제1항에 있어서, 상기 블록 데이터는 기록 매체에 인터리브되어 기억되고, 상기 메모리에는 각 열 또는 각 행에 대한 에러 정정 후에 재배열하여 저장하도록 하는 에러 정정 방법.
  5. 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가되어 외부에 접속된 메모리에 저장되는 블록 데이터에 대하여, 블록 데이터의 각 열마다 에러 정정을 행하는 열 에러 정정과, 블록 데이터의 각 행마다 에러 정정 처리를 행하는 행 에러 정정을 행하는 에러 정정 회로를 구비하는 에러 정정 장치에 있어서,
    상기 에러 정정 회로는 복수의 열 데이터에 대해 열 에러 정정을 동시에 행하거나, 또는 복수의 행 데이터에 대해 행 에러 정정을 동시에 행하되, 상기 열 에러 정정 및 상기 행 에러 정정 중에서 일방을 행한 후, 상기 열 에러 정정 및 상기 행 에러 정정 중에서 타방을 행하고,
    상기 메모리는 복수의 행 또는 열에 대응하는 데이터 버스 폭으로 설정되고, 상기 에러 정정 회로는 상기 메모리에 저장되는 상기 블록 데이터의 복수의 행 또는 열로부터 상기 메모리의 데이터 버스 폭의 정수배 데이터를 한번에 판독하고, 그 판독한 복수의 행 또는 열의 데이터를 동시에 연산하여 각 행 또는 열마다 에러 정정을 행하고,
    상기 열 에러 정정 회로 및 행 에러 정정 회로는 각각 상기 각 행, 각 열을 부호어로 취급하고, 부호어 전체로부터 각 행, 각 열에 대한 신드롬을 연산하여, 신드롬을 기초로 각 행, 각 열에 대한 에러를 정정하도록 하는 에러 정정 장치.
  6. 2차원 배열되어, 세로 방향과 가로 방향의 각각에 에러 정정 부호가 부가되어 외부에 접속된 메모리에 저장되는 블록 데이터에 대하여, 블록 데이터의 각 열마다 에러 정정을 행하는 열 에러 정정과, 블록 데이터의 각 행마다 에러 정정 처리를 행하는 행 에러 정정을 행하는 에러 정정 회로를 구비하는 에러 정정 장치에 있어서,
    상기 에러 정정 회로는 복수의 열 데이터를 이용하여 복수의 열 신드롬을 동시에 생성하는 것을 포함하는 열 에러 정정을 행하거나, 또는 복수의 행 데이터를 이용하여 복수의 행 신드롬을 동시에 생성하는 것을 포함하는 행 에러 정정을 행하되, 상기 열 에러 정정 및 상기 행 에러 정정 중에서 일방을 행한 후, 상기 열 에러 정정 및 상기 행 에러 정정 중에서 타방을 행하고,
    메모리는 상기 복수의 행 또는 열에 대응하는 데이터 버스 폭으로 설정되고 상기 에러 정정 회로는 상기 메모리에 저장된 상기 블록 데이터의 각 행 또는 열로부터 상기 메모리의 데이터 버스 폭의 정수배 데이터를 한번에 판독하고, 그 판독한 복수의 데이터를 이용하여 복수의 행 또는 복수의 열 신드롬을 동시에 생성하여 각 행 또는 열마다 에러 정정을 행하는 에러 정정 장치.
  7. 제5항에 있어서, 상기 에러 정정 회로는 각 열에 대한 에러 정정 처리를 행하는 열 에러 정정 회로와, 각 행에 대한 에러 정정 처리를 행하는 행 에러 정정 회로로 구성되고, 상기 메모리에 행 에러 정정 회로에 의한 에러 정정 후의 블록 데이터를 저장하는 동시에, 상기 메모리에 저장된 데이터를 한번에 그 메모리에 데이터 버스 폭의 정수배의 수마다 순차적으로 판독하여 상기 열 에러 정정 회로에출력하는 메모리 제어부를 구비하는 에러 정정 장치.
  8. 제7항에 있어서, 상기 블록 데이터는 기록 매체에 인터리브되어 기억되고,
    상기 행 에러 정정 회로는 기록 매체로부터 판독되는 데이터에 대하여 에러 정정하여, 정정 후의 블록 데이터를 상기 메모리 제어부에 출력하며,
    상기 메모리 제어부는 정정 후의 데이터를 재배열하여 메모리에 기억하도록 하는 에러 정정 장치.
  9. 제7항에 있어서, 상기 열 에러 정정 회로는 정정 후의 각 열의 데이터를 상기 메모리에 저장하고,
    그 각 열에 대한 에러 정정 후의 데이터를 상기 메모리의 데이터 버스 폭의 정수배의 데이터수마다 판독하여, 각 행마다 에러 정정 처리를 행하는 제2 행 에러 정정 회로를 구비하는 에러 정정 장치.
  10. 제5항에 있어서, 상기 메모리는 한정된 범위 내에 저장되는 데이터에 대한 액세스가 범위를 초과하는 액세스보다도 고속으로 행해지는 메모리이며,
    메모리 제어부는 상기 데이터 버스 폭분의 각 열의 데이터 및 복수의 행의 데이터를 상기 메모리의 동일 범위 내에 저장하도록 하는 에러 정정 장치.
  11. 기록 매체로부터 판독하는 데이터를 판독하는 데이터 판독 장치에 있어서,
    상기 판독된 데이터에 대하여 에러 정정을 행하는 제6항에 기재된 에러 정정 장치와,
    상기 에러 정정 장치에 의해 처리되는 복수의 행 또는 열에 대응하는 데이터 버스 폭으로 설정되어, 블록 데이터를 기억하는 메모리를 구비하는 데이터 판독 장치.
  12. 한정된 범위 내에 저장되는 데이터에 대한 액세스가, 범위를 초과하는 액세스보다도 고속으로 행해지는 기억 장치에 대하여, 각 행 및 각 열에 대하여 에러 정정 기호가 부가된 블록 데이터를 각 열 또는 각 행 단위로 액세스하고, 각 열의 복수 데이터를 동시에 연산하여 각 열마다 에러 정정을 행하며, 복수의 행의 데이터를 동시에 연산하여 각 행마다 에러 정정을 행하는 에러 정정 장치에서의 데이터 맵핑 방법에 있어서,
    상기 기억 장치의 데이터 버스 폭을, 각 열마다 동시에 연산되는 데이터수, 또는 동시에 연산되는 복수의 행의 데이터수의 정수배로 설정하고,
    상기 데이터 버스 폭분의 각 열의 데이터 및 복수의 행의 데이터를 상기 기억 장치의 동일 범위 내에 저장하도록 하는 에러 정정 장치의 데이터 맵핑 방법.
  13. 한정된 범위 내에 저장되는 데이터에 대한 액세스가, 범위를 초과하는 액세스보다도 고속으로 행해지는 기억 장치에 대하여, 각 행 및 각 열에 대하여 에러 정정 기호가 부가되는 블록 데이터를 각 열 또는 각 행 단위로 액세스하고, 각 행의 복수의 데이터를 동시에 연산하여 각 행마다 에러 정정을 행하며, 복수의 열의 데이터를 동시에 연산하여 각 열마다 에러 정정을 행하는 에러 정정 장치에서의 데이터 맵핑 방법에 있어서,
    상기 기억 장치의 데이터 버스 폭을, 각 행마다 동시에 연산되는 데이터수, 또는 동시에 연산되는 복수의 열의 데이터수의 정수배로 설정하고,
    상기 데이터 버스 폭분의 각 행의 데이터 및 복수의 열의 데이터를 상기 기억 장치의 동일 범위 내에 저장하도록 하는 에러 정정 장치의 데이터 맵핑 방법.
KR1019970059951A 1996-11-15 1997-11-14 에러정정방법,에러정정장치,데이터판독장치,및데이터맵핑방법 KR100415136B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP96-304978 1996-11-15
JP30497896 1996-11-15
JP14951497A JP3863252B2 (ja) 1996-11-15 1997-06-06 誤り訂正方法、誤り訂正装置、データ読み出し装置、及び、データマッピング方法
JP97-149514 1997-06-06

Publications (2)

Publication Number Publication Date
KR19980042418A KR19980042418A (ko) 1998-08-17
KR100415136B1 true KR100415136B1 (ko) 2004-04-29

Family

ID=26479376

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970059951A KR100415136B1 (ko) 1996-11-15 1997-11-14 에러정정방법,에러정정장치,데이터판독장치,및데이터맵핑방법

Country Status (3)

Country Link
US (1) US6158038A (ko)
JP (1) JP3863252B2 (ko)
KR (1) KR100415136B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100589814B1 (ko) * 1999-12-09 2006-06-14 엘지전자 주식회사 디지털 데이터의 에러정정 방법
US10374638B2 (en) 2017-09-15 2019-08-06 SK Hynix Inc. Error correction circuit, operating method thereof and data storage device including the same
US10431324B2 (en) 2017-08-18 2019-10-01 SK Hynix Inc. Data storage device for performing decoding operation and operating method thereof

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3530388B2 (ja) * 1998-07-22 2004-05-24 三洋電機株式会社 符号誤り訂正装置
JP3531494B2 (ja) * 1998-10-05 2004-05-31 株式会社日立製作所 投写型画像ディスプレイ装置及びそれに用いるスクリーン
US6581178B1 (en) * 1999-02-15 2003-06-17 Nec Corporation Error correction coding/decoding method and apparatus
JP2000244332A (ja) * 1999-02-19 2000-09-08 Matsushita Electric Ind Co Ltd データ誤り訂正装置
CN1286275C (zh) 1999-11-24 2006-11-22 三洋电机株式会社 纠错装置
KR100654017B1 (ko) * 1999-12-09 2006-12-04 엘지전자 주식회사 디지털 데이터의 에러정정 방법
TW455870B (en) * 1999-12-09 2001-09-21 Acer Labs Inc Memory mapping method
US6772385B2 (en) * 2000-01-31 2004-08-03 Sanyo Electric Co., Ltd. Error-correcting device and decoder enabling fast error correction with reduced circuit scale
KR100598300B1 (ko) * 2000-02-14 2006-07-07 엘지전자 주식회사 차세대 고밀도 기록 매체를 위한 디지털 데이터의 오류정정 부호화 방법
US6651208B1 (en) * 2000-04-04 2003-11-18 Mosel Vitelic Corporation Method and system for multiple column syndrome generation
JP2001291344A (ja) * 2000-04-04 2001-10-19 Hitachi Ltd 光ディスク装置およびそのデータ再生方法
JP2002074862A (ja) * 2000-08-25 2002-03-15 Toshiba Corp データ処理方法及び装置及び記録媒体及び再生方法及び装置
JP2002074854A (ja) * 2000-08-31 2002-03-15 Nec Corp ディジタルデータ記録伝送方法およびその装置
GB0031436D0 (en) * 2000-12-22 2001-02-07 Koninkl Philips Electronics Nv Method and apparatus for data reproduction
WO2002065287A1 (en) 2001-02-16 2002-08-22 Sony Corporation Data processing method and its apparatus
JP3954803B2 (ja) * 2001-03-22 2007-08-08 三洋電機株式会社 エラー訂正装置
US8656246B2 (en) * 2001-04-16 2014-02-18 Qualcomm Incorporated Method and an apparatus for use of codes in multicast transmission
KR100739669B1 (ko) * 2001-04-20 2007-07-13 삼성전자주식회사 광 정보저장 매체, 데이터 기록장치 및 데이터 기록방법
KR100425294B1 (ko) * 2001-04-20 2004-03-30 삼성전자주식회사 광 정보저장매체, 및 그 데이터 기록장치
US7159165B2 (en) * 2001-04-20 2007-01-02 Samsung Electronics Co., Ltd. Optical recording medium, data recording or reproducing apparatus and data recording or reproducing method used by the data recording or reproducing apparatus
US6981198B2 (en) * 2001-04-26 2005-12-27 Storage Technology Corporation Dynamic error correction code shortening
US6910174B2 (en) * 2001-06-01 2005-06-21 Dphi Acquisitions, Inc. Error correction code block format
US7177658B2 (en) * 2002-05-06 2007-02-13 Qualcomm, Incorporated Multi-media broadcast and multicast service (MBMS) in a wireless communications system
US7415658B2 (en) * 2003-09-10 2008-08-19 Intel Corporation Forward error correction mapping and de-mapping techniques
US7389468B2 (en) * 2004-09-20 2008-06-17 International Business Machines Corporation Writing and reading of data in probe-based data storage devices
US20050180332A1 (en) * 2004-02-13 2005-08-18 Broadcom Corporation Low latency interleaving and deinterleaving
JP2006004560A (ja) * 2004-06-18 2006-01-05 Elpida Memory Inc 半導体記憶装置及びその誤り訂正方法
KR100682243B1 (ko) 2004-12-02 2007-02-15 주식회사 대우일렉트로닉스 3차원 리드-솔로몬 코드의 오류정정 방법
US7395488B2 (en) * 2004-12-29 2008-07-01 Zoran Corporation System and method for efficient use of memory device bandwidth
TWI282087B (en) * 2005-11-24 2007-06-01 Realtek Semiconductor Corp Decoding device in optical disc drive and related decoding method thereof
JP2008204544A (ja) * 2007-02-20 2008-09-04 Fujitsu Ltd 誤り訂正装置及びデータ読み出し装置
US8196004B1 (en) 2007-03-27 2012-06-05 Marvell International Ltd. Fast erasure decoding for product code columns
US20100169742A1 (en) * 2008-12-29 2010-07-01 Texas Instruments Incorporated Flash memory soft error recovery
US9252815B2 (en) * 2013-12-16 2016-02-02 International Business Machines Corporation Extension of product codes with applications to tape and parallel channels
US11538546B2 (en) * 2019-12-16 2022-12-27 Micron Technology, Inc. Data compression for global column repair

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US34100A (en) * 1862-01-07 Improved step-ladder
US4769818A (en) * 1984-05-30 1988-09-06 Canadian Patents And Development Limited-Societe Canadienne Des Brevets Et D'exploitation Limitee Method and apparatus for coding digital data to permit correction of one or two incorrect data packets (bytes)
JP2605271B2 (ja) * 1987-02-10 1997-04-30 ソニー株式会社 エラー訂正及びチエツク装置
US5068855A (en) * 1988-07-18 1991-11-26 Canon Kabushiki Kaisha Error correcting method and apparatus
JP2554743B2 (ja) * 1989-05-19 1996-11-13 シャープ株式会社 再生のための誤り訂正装置
EP0523969B1 (en) * 1991-07-18 1997-12-29 Canon Kabushiki Kaisha Error correction encoding and decoding system
AU2476192A (en) * 1991-08-16 1993-03-16 Multichip Technology High-performance dynamic memory system
JP3154607B2 (ja) * 1993-12-28 2001-04-09 三菱電機株式会社 誤り訂正復号装置及び誤り訂正復号方法
JPH07262031A (ja) * 1994-03-17 1995-10-13 Toshiba Corp 誤り訂正符号化装置および誤り訂正符号化方法
JPH08204583A (ja) * 1995-01-20 1996-08-09 Sanyo Electric Co Ltd ディジタル信号の処理方法および処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100589814B1 (ko) * 1999-12-09 2006-06-14 엘지전자 주식회사 디지털 데이터의 에러정정 방법
US10431324B2 (en) 2017-08-18 2019-10-01 SK Hynix Inc. Data storage device for performing decoding operation and operating method thereof
US10374638B2 (en) 2017-09-15 2019-08-06 SK Hynix Inc. Error correction circuit, operating method thereof and data storage device including the same

Also Published As

Publication number Publication date
JP3863252B2 (ja) 2006-12-27
KR19980042418A (ko) 1998-08-17
US6158038A (en) 2000-12-05
JPH10200418A (ja) 1998-07-31

Similar Documents

Publication Publication Date Title
KR100415136B1 (ko) 에러정정방법,에러정정장치,데이터판독장치,및데이터맵핑방법
US5974580A (en) Concurrent row/column syndrome generator for a product code
AU604836B2 (en) Method and apparatus for error correction
KR100573356B1 (ko) 코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템
JP4346135B2 (ja) コンピュータ記憶装置においてランダムデータに対してcrcシンドロームを生成するeccシステム
US7408863B2 (en) Digital signal processing method, data recording and reproducing apparatus, and data recording medium that are resistant to burst errors
US6903887B2 (en) Multiple level (ML), integrated sector format (ISF), error correction code (ECC) encoding and decoding processes for data storage or communication devices and systems
EP0986814B1 (en) Reed-solomon decoding of data read from dvd or cd supports
KR100265769B1 (ko) 광 디스크 시스템에서의 에러 정정 장치 및 그 에러 정정 방법
US20030218816A1 (en) Data storage device and data processing method
KR20130112897A (ko) 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩
US6832042B1 (en) Encoding and decoding system in an optical disk storage device
JP4141964B2 (ja) エラー訂正コードに追加のエラー訂正レイヤを埋め込む方法及び装置
KR20010051884A (ko) 오류 정정 장치
EP1642391A1 (en) Error correction method for reed-solomon product code
JP3777246B2 (ja) ディスク記憶装置内の誤りを訂正するためのシステムおよび誤り制御チップ、ならびに符号化および復号化の方法
KR100509137B1 (ko) 에러 정정 장치
US20080201619A1 (en) Error correcting device, error correcting method and disk system
JP3609714B2 (ja) 誤り訂正装置
KR100215807B1 (ko) 디지탈 신호의 에러 정정 장치 및 방법
JPS63298776A (ja) エラ−訂正処理方式
JP2007059001A (ja) 変調装置、復調装置、変調装置の動作方法及び復調装置の動作方法
KR20010083258A (ko) 디지털 데이터의 에러정정 방법
JP2001237715A (ja) 復号装置
KR20030073532A (ko) 이중 피오 신드롬 연산장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121130

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20131218

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20141205

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20151201

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee