KR100573356B1 - 코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템 - Google Patents

코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템 Download PDF

Info

Publication number
KR100573356B1
KR100573356B1 KR1019980044863A KR19980044863A KR100573356B1 KR 100573356 B1 KR100573356 B1 KR 100573356B1 KR 1019980044863 A KR1019980044863 A KR 1019980044863A KR 19980044863 A KR19980044863 A KR 19980044863A KR 100573356 B1 KR100573356 B1 KR 100573356B1
Authority
KR
South Korea
Prior art keywords
syndrome
error
data
codeword
buffer
Prior art date
Application number
KR1019980044863A
Other languages
English (en)
Other versions
KR19990044904A (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 KR19990044904A publication Critical patent/KR19990044904A/ko
Application granted granted Critical
Publication of KR100573356B1 publication Critical patent/KR100573356B1/ko

Links

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
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • 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/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • 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
    • 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/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent 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
    • 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/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • G11B2020/1843Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information using a cyclic redundancy check [CRC]

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

컴팩트 디스크(CD)와 디지털 비디오 디스크(DVD)를 판독할 수 있는 광 디스크 저장 장치에 있어서, 에러 정정 시스템의 대기시간은, CD와 DVD 동작모드 사이의 신드롬 버퍼(syndrome buffer)를 공유함으로써 상당히 감소된다. CD 모드에 있어서, 디스크로부터 판독된 사용자 데이터는 신드롬 버퍼에 저장되고, 크로스-인터리브 리드-솔로몬 코드(CIRC: Cross-Interleaved Reed-Solomon code)의 C1/C2 중복을 사용하여 정정된다. DVD 모드에 있어서, 디스크로부터 판독된 사용자 데이터는 데이터 버퍼에 저장되고, 신드롬 버퍼는, 사용자 데이터를 정정하는데 사용될 ECC 신드롬을 생성하기 위한 중간 값과, 정정의 타당성(validity)과 완전성(completeness)을 확인하는데 사용될 데이터 CRC 및 에러 CRC 신드롬을 저장한다. 처리량을 상당히 증가시키는 본 발명의 두 측면은, (1) ECC신드롬이 CD 및 DVD 곱셈코드의 행(Q) 및 열(P) 코드워드에 대해 동시에 생성되는 점과, (2) CRC 확인 신드롬이 곱셈코드를 정정하는 것과 동시에 생성되는 점이다. 이러한 방법에 있어서, 전체 곱셈코드에 대한 ECC 신드롬은 행 코드워드에 대한 제 1 수평 통과(horizontal pass) 도중에 생성될 수 있고, 이에 의해 후속하는 수직 통과(vertical pass) 도중에 열 코드워드에 대한 ECC 신드롬을 생성하는 대기시간을 피한다. 덧붙여, CRC 확인 신드롬은 데이터 섹터를 정정한 후 곧바로 유효하다-종래 기술에서와 같이, CRC 확인 신드롬을 생성하기 위하여, 정정 후 데이터 버퍼로부터 전체 데이터 섹터를 판독하는 것이 필요치 않다.

Description

코드워드 데이터를 저장하기 위한 데이터 버퍼와 에러 신드롬을 저장하기 위한 신드롬 버퍼를 사용하는 ECC 시스템{AN ECC SYSTEM EMPLOYING A DATA BUFFER FOR STORING CODEWORD DATA AND A SYNDROME BUFFER FOR STORING ERROR SYNDROMES}
본 명세서는 동시에 출원된 미국 특허("컴퓨터 저장 장치에서 랜덤화된 데이터에 대해 CRC 신드롬을 생성하기 위한 ECC 시스템"), 동시 출원된 미국 특허("DVD 저장 장치에서 ECC 에러 신드롬과 CRC 확인 신드롬의 동시 생성"), 및 미국 특허 제 5,446,743호("리드-솔로몬(REED-SOLOMON) 디코더를 위한 계수 갱신 방법 및 장치")와 관련된다. 상기 인용된 미국 특허 출원 및 미국 특허는 본 명세서에서 참조로서 병합된다.
본 발명은 컴퓨터 저장 장치를 위한 에러 정정 시스템에 관한 것이고, 특히 곱셈 코드와 같은 다차원 코드의 코드워드를 저장하기 위한 데이터 버퍼와 에러 신드롬을 저장하기 위한 신드롬 버퍼를 포함하는 에러 정정 시스템에 관한 것이다.
컴퓨터 저장 장치 및, 특히 광 저장 장치는, 잡음에 대한 시스템의 면역성을 증가시킴으로써 성능을 증대시키기 위하여 다차원 에러 정정 코드 ECC(예, 곱셈 코드)를 통상적으로 사용하고, 이에 의해 임의의 낮은 비트 에러 율을 유지하면서 저장 용량을 증가시킬 수 있게 한다. 종래의 컴팩트 디스크(CD) 저장 장치는 복수 계층(layer)의 ECC 설계를 채용하는데, 이들은 수평 및 대각선 코드워드를 포함하는 2차원 곱셈 코드와, 일반적으로 C1/C2 코드로 언급되는 크로스-인터리브 리드-솔로몬(Cross-Interleaved Reed-Solomon) 코드(CIRC)이다. 보다 최근의 광 저장 장치인 디지털 비디오 디스크(DVD)는, 수평 및 수직 코드워드로 구성된 2차원 곱셈 코드를 채용하기도 하지만, CD 장치에서 발견되는 C1/C2 코드의 필요성을 제거하도록 상당히 더 많은 ECC 중복(redundancy)을 갖는다(도 3A 참조). DVD 포맷은 시장, 궁극적으로 시대에 뒤진 CD 포맷을 지배할 것이다. 그러나, CD로부터 DVD로의 과도기 동안, 두 포맷을 판독할 수 있는 저장 장치를 제공하는 것이 바람직할 것이다. 즉, 미래의 광 디스크 저장 장치에 CD 또는 DVD 디스크를 삽입하고, 그 포맷에 관계없이 명쾌하게 동작하기를 기대할 수 있어야만 한다. 필요한 것은 효율적이고 경제적인 방법으로 CD 및 DVD 포맷 모두를 위한 에러 정정 회로를 실현하는 것이다.
본 발명에 관한 에러 정정 시스템의 다른 측면은, 곱셈 코드에 대해 이루어진 정정의 타당성(validity)과 완전성(completeness)을 확인하기 위해 통상적으로 채용된 확인 코드이다. 곱셈 코드를 포함하는 모든 에러 정정 코드에 관련된 잘못된 정정의 일정한 확률이 존재한다. 잘못된 정정이라는 용어는, 실제로는 에러가 여전히 남아있을 때, 희귀한 경우지만 곱셈 코드워드가 성공적으로 정정되었음을 ECC 중복이 지시할 가능성을 언급한다. 잘못된 정정의 발생 가능성이 상당히 적다 할지라도, 특히 기록된 데이터가 변화를 허용할 수 없는 컴퓨터 정보인 경우, 그 영향은 잠재적으로 그 피해가 막심하다(예컨대 세금 정보의 변화의 영향을 고려해 보기 바란다). 이러한 이유 때문에, 컴퓨터 저장 장치는 확인 코드로 언급되는 ECC의 부가적인 계층을 통상적으로 채용하고, 이의 유일한 목적은 잘못 정정된 데이터를 검출하고 호스트 시스템으로 전달되는 것을 예방하는 것이다. 잘못된 정정이 검출되지 못한 과거의 확인 코드를 얻는 적은 확률이 존재한다 할지라도, 이러한 확률은 본질적으로 0이 될 정도로 적다.
확인 코드는 필요하지만, 저장 장치의 전체적인 처리량에서 상당한 병목 현상을 나타낸다. 곱셈 코드의 수평 및 수직 코드워드는 통상적으로 데이터 버퍼(DRAM)에 저장되어, 곱셈 코드 에러 정정 시스템에 의해 억세스될 수 있다. 이러한 데이터 버퍼에 억세스하는 대기 시간은 저장 장치의 전체 대기 시간에서 중요한 요소이다. 종래 기술에 있어서, 잘못된 정정의 검사는, 곱셈 코드가 "성공적으로" 정정되었음을 ECC 중복이 지시한 후, 발생한다. 이것은 전체 곱셈 코드를 판독하고, 확인 코드를 위한 신드롬을 생성하기 위하여 데이터 버퍼에 대한 부가적인 억세스를 필요로 한다. 이러한 부가적인 버퍼 억세스에 관련된 대기 시간은 본 발명에 의해 극복되는 단점이다.
다차원 코드에 대한 정정의 타당성과 완전성을 확인하는 것에 관련된 대기시간을 피하는, 컴퓨터 저장 장치에 대한 에러 정정 시스템이 개시된다. 양호한 실시예에 있어서, 확인은 순환 중복 검사(CRC: Cyclic Redundancy Check)를 사용하여 수행된다. 기록 동작 도중에, CRC 중복 심벌은 호스트 시스템으로부터 수신된 사용자 데이터에 대해 계산되고, CRC 심벌을 부가한 후, 데이터는 유사-랜덤 데이터 패턴과의 XOR 동작에 의해 랜덤화된다. 그 후, ECC 심벌은 곱셈 코드의 행(Q) 및 열(P) 코드워드를 형성하기 위해 랜덤화된 데이터에 대해 생성되는데(바람직하게는 리드-솔로몬 코드를 사용하여), 이후 상기 곱셈 코드는 디스크에 기록된다. 판독 시, 곱셈 코드는 P/Q 디코더에 의한 디코딩을 위하여 데이터 버퍼에 저장된다. Q 코드워드에 대한 제 1 통과 도중에, 데이터 CRC 신드롬은 정정되지 않은 랜덤화된 데이터에 대해 생성되는데, 상기 데이터 CRC 신드롬은 데이터 CRC 레지스터에 저장된다. 또한 제 1 통과 및 후속하는 통과 도중에, 정정이 P 또는 Q 코드워드에 대해 이루어질 때, 정정 값은 에러 CRC 레지스터에 인가된다. 완전한 CRC 코드워드를 처리한 후, 데이터 CRC 및 에러 CRC 레지스터는 최종 CRC 신드롬을 생성하기 위하여 결합된다. 최종 CRC 신드롬은, 곱셈 코드에 대한 정정이 타당한지 또한 완전한 지의 여부를 결정하기 위하여, 상수와 비교되는데, 상기 상수는 랜덤 데이터 패턴에 대한 CRC와 동일하다. 이러한 방법으로, CRC 검사는 랜덤화된 데이터에 대해 수행될 수 있고, 이에 의해 CRC 신드롬을 생성하기 전에 데이터를 역랜덤화하기 위해 데이터 버퍼를 억세스하는 것과 관련된 대기 시간을 피한다.
본 발명에 의해 제공되는 다른 장점은 P 및 Q 코드워드를 정정하는 것과 동시에 진행중인 CRC 신드롬을 생성하는 능력이다. 따라서, CRC 코드워드를 처리한 후에, CRC 신드롬은 정정의 타당성과 완전성을 검사하는 동안 곧바로 유효하고, CRC 신드롬을 생성하기 위하여 데이터 버퍼를 억세스할 필요는 없다.
본 발명의 합법화하는 양상은, CRC 코드워드 심벌 내의 옵셋을 고려하기 위한 P 및 Q 통과 도중에 데이터 및 에러 CRC 신드롬을 조정하는 것이다. 예컨대, 수직(즉, P) 코드워드를 처리할 때, 처리된 각 수직 심벌에 대해 데이터 심벌의 한 행씩 에러 CRC 신드롬을 조정하는 것이 필요하다. 이것은 다음 식에 따라 데이터 및 에러 CRC 신드롬을 곱하는 특별한 배율기 회로를 사용하여 수행된다.
xk MOD G(x),
여기에서 k는 옵셋(예컨대, 심벌의 한 행)이고, G(x)는 CRC 생성 다항식이다.
각 데이터 섹터에 부가된 별도의 CRC 심벌을 갖는 다중 데이터 섹터를 포함하는, DVD 곱셈 코드에 대해, CD 모드에서 C1 및 C2 엔코딩/디코딩을 위하여 사용된 SRAM은 각 데이터 섹터에 대한 부분 데이터 및 에러 CRC 신드롬을 저장하기 위해 사용된다. P 및 Q 통과 도중에, 데이터 및 에러 CRC 신드롬 레지스터는, P/Q 디코더에 의해 처리되고 있는 현재의 데이터 심벌에 따라, 적절한 부분 CRC 신드롬이 로드된다. 각 데이터 섹터를 처리한 후, 각 데이터 섹터에 대한 데이터 및 에러 CRC 신드롬은 결합되어 유사 랜덤 데이터 패턴에 대해 CRC와 동일한 상수와 비교된다.
본 발명의 상기 및 다른 특성 및 장점은, 본 발명의 다음의 상세한 설명을 도면을 고려하여 읽음으로써 더 양호하게 이해될 것이다.
시스템 개요
본 발명의 에러 정정 시스템의 개요는 도 2에 도시되었다. 동작은 다음의 변경을 제외하면, 도 1을 참조로 하여 상기에서 설명된 종래 기술의 시스템과 유사하다. 판독 동작 도중에, ECC 에러 신드롬은 제 1 수평 통과 도중에 곱셈 코드의 수평 및 수직 코드워드에 대해 동시에 생성된다. ECC 에러 신드롬은 SRAM(15)에 저장되는데, 상기 SRAM은 CD 곱셈 코드를 디코딩할 때 CIRC 에러 정정을 위해 사용되기도 한다. 이것은 저장 장치의 대기 시간을 상당히 감소시키는데, 그 이유는 이것이 후속하는 수평 또는 수직 통과 도중에 ECC 에러 신드롬을 재생성하기 위해 데이터 버퍼(1)를 억세스할 필요성을 제거하기 때문이다. 본 발명의 중요한 다른 변형은 곱셈 코드를 정정하는 것과 함께 CRC 신드롬을 동시에 생성하고, 또한 데이터 버퍼 내에 저장된 데이터를 역랜덤화하기 전에 CRC 신드롬을 검사하는 것이다. 이것은 심지어, CRC 신드롬을 생성하기 위하여 데이터 버퍼(1)로부터 전체 곱셈 코드를 판독할 필요성을 제거함으로써, 저장 시스템의 대기 시간을 추가로 감소시킨다.
도 1의 종래 기술의 에러 정정 시스템과 다른 요소는 SRAM(15), P/Q 디코더(16)(ECC/신드롬 생성기(17) 및 에러 정정기(18) 포함), 및 CRC 생성기- 및- 정정 확인기(19)이다. ECC/신드롬 생성기(17)는 라인(20)을 통해 에러 정정기로 전달되는 ECC 신드롬을 생성하고 저장하는데 SRAM(15)을 사용한다. 데이터 버퍼(1)에 저장된 코드워드를 정정하기 위해 에러 정정기(18)에 의해 생성된 정정 값은 또한, ECC 신드롬을 갱신하는데 사용하기 위해 라인(21)을 통해 ECC/신드롬 생성기(17)에도 전달된다. CRC 생성기-및-정정 확인기(19)는 또한 DVD 곱셈 코드의 16개의 데이터 섹터를 위한 16개의 부분 CRC 신드롬을 저장하기 위하여 SRAM(15)를 사용한다. SRAM(15)에 저장된 부분 CRC 신드롬은 에러 정정기(18)에 의해 생성된 정정 값을 사용하여 갱신되고, 정정 값은 라인(21)을 통해 CRC 생성기-및-정정 확인기(19)에 전달된다.
데이터 포맷
DVD 저장 장치에서 통상적으로 사용되는 2차원 곱셈 코드의 데이터 포맷은 도 3A에 도시되었다. 곱셈 코드는 16개의 데이터 섹터를 포함하는데, 각 데이터 섹터는 12개의 수평 코드워드(Q 코드워드)를 포함한다. 각 수평 코드워드는 리드-솔로몬 코드에 따라 양호하게 생성된 10개의 ECC 중복 심벌을 포함한다. 각각이 도시된 바와 같이 16개의 중복 심벌을 포함하는 182개의 수직 코드워드(P 코드워드)가 존재한다. ECC 중복 심벌은 또한 ECC 코드워드를 구성한다, 즉 ECC 중복 심벌은 사용자 데이터와 동일한 방법으로 정정될 수 있다. 따라서, 오른 쪽에는 10개의 수직 ECC 코드워드를 포함하는 전체 182개의 수직 코드워드가 존재하고, 바닥에는 16개의 수평 ECC 코드워드를 포함하는 208개의 수평 코드워드가 존재한다.
16개 데이터 섹터 각각의 끝에는, ECC 중복 심벌을 사용하여 코드워드에 대한 정정의 타당성과 완전성을 확인하는데 사용하기 위한 4개의 CRC 심벌이 존재한다. 상술한 바와 같이, 기록 동작 도중에, 데이터가 랜덤화되고 ECC 중복 심벌을 부가하기 전에, CRC 심벌은 통상적으로 사용자 데이터에 대해 생성된다. 따라서 CRC 심벌은 ECC 심벌을 포함하지 않는다. 더욱이, 종래 기술의 에러 정정 시스템은 CRC 검사를 수행하기 전에 데이터를 역랜덤화하여야만 한다.
도 3B는 도 3A의 곱셈 코드의 첫 번째 2개의 데이터 섹터를 보다 상세하게 도시한다. ECC 코드워드를 정정하는 것과 동시에 CRC 신드롬을 생성하는, 본 발명의 기술은 이러한 도면을 참조로 아래에서 설명된다.
데이터 랜덤화기/역랜덤화기
본 발명의 에러 정정 시스템은, 디스크에 기록되는 것으로부터 데이터 시퀀스를 검출하는데 어려움을 예방하기 위해 사용자 데이터를 "분산(whiten)"시키는 데이터 랜덤화기/역랜덤화기(4)를 포함한다. 도 2를 참조로 상술된 바와 같이, 데이터 버퍼(1)에 저장된 사용자 데이터는 CRC 심벌이 생성된 후 랜덤화된다. 따라서 ECC/신드롬 생성기(12)는 도 3A에 도시된 곱셈 코드의 P 및 Q 코드워드에 대한 ECC 중복을 생성하기 위해 랜덤화된 데이터를 처리한다. 판독 시, 곱셈 코드는 정정되고, 정정은 확인되고, 만약 상기 정정이 타당하고 완전하다면, 데이터는 역랜덤화되어 호스트 시스템으로 전달된다.
데이터를 랜덤화/역랜덤화하기 위한 회로는 당업자에게 공지된 것이고, 도 3C 및 도 3D에 도시되었다. 회로는 라인(23)에 인가되는 유사 랜덤 데이터 시퀀스를 생성하기 위한 랜덤 패턴 생성기를 포함한다. 판독 동작 도중에, 데이터 버퍼(1)에 저장된 사용자 데이터와 CRC 심벌은 가산기(24)에서 랜덤 데이터 시퀀스에 더해져(XOR 됨), 디스크에 기록되기 전에 데이터를 랜덤화한다. 판독 시에, 랜덤 패턴 생성기(22)는 가산기(25)에서 디스크로부터 판독되는 데이터에 더해지는(XOR) 동일한 유사 랜덤 데이터 시퀀스를 생성하여, 호스트 컴퓨터에 전달하기 전에 데이터를 역랜덤화한다.
양호하게, 유사 랜덤 데이터 시퀀스는 ECC 코드의 심벌 크기인 8비트 심벌을 사용하여 생성된다. 유사 랜덤 데이터 시퀀스를 생성하기 위한 양호한 실시예는 도 3D에 도시된 바와 같이 선형 피드백 시프트 레지스터(LFSR)를 사용하는 것이다. LFSR 회로는 라인(26)을 통해 시작 값으로 초기화되고, 유사 랜덤 데이터 시퀀스는 상기 시작 값에 따라 다르다. 다른 시작 값은 도 3A에 도시된 각 DVD 곱셈 코드를 위해 사용된다.
수평 및 수직 ECC 신드롬의 동시 생성
다음에 개시된 것은 ECC 및 CRC 신드롬을 동시에 생성하고, 정정 값을 사용하여 ECC 및 CRC 신드롬을 갱신하기 위한 회로 및 흐름도이다. 본 발명의 ECC 신드롬 생성기(17)에 대한 2가지 실시예가 설명된다. 제 1 실시예에 있어서, ECC 신드롬은, 수평 통과 도중에 수평 코드워드에 대한 신드롬을 생성하는 것과 동시에 수직 코드워드에 대해 생성된다. 이하에서 보다 상세하게 설명되는 바와 같이, SRAM(15)은 수직 신드롬의 생성을 용이하게 한다. 이러한 방법에 있어서, 수직 코드워드에 대한 ECC 신드롬은 수평 통과 이후 곧바로 SRAM(15) 내에서 유용하게 되어-수직 코드워드는 ECC 신드롬을 생성하기 위하여 데이터 버퍼를 억세스함이 없이 정정될 수 있어, 에러 정정 대기 시간을 상당히 감소시킨다. 이러한 실시예는 DVD 저장 장치에서와 같이 많은 양의 ECC 중복을 채용하는 곱셈 코드에 특히 적합한데, 상기 정정은 주로 수평 및 수직 코드워드에 대한 단일의 통과 이후 종료될 것이다.
더 적은 ECC 중복을 채용하는 곱셈 코드를 향한 것으로, 따라서 다중 수평 및 수직 통과를 필요로 하는, ECC 신드롬 생성기(17)의 제 2의 실시예에 있어서, SRAM(15)은 수평 및 수직 코드워드에 대한 ECC 신드롬을 저장한다. 두 세트의 ECC 신드롬은 제 1 수평 통과 도중에 동시에 생성되고, ECC 신드롬은 정정 값을 사용하여 갱신된다. 이러한 방법에 있어서, ECC 신드롬을 재생성하기 위해 데이터 버퍼를 억세스하는 대기 시간은 수평 및 수직 통과에 대해 회피된다. 에러 정정은 짧은 시간에서 수행되는데, 제 1 통과에 후속하는 통과는 데이터에 대한 정정을 행하기 위해 데이터 버퍼를 억세스하는 것만을 필요로 하기 때문이다.
수직 에러 신드롬만을 SRAM(15)에 저장하는 본 발명의 제 1 실시예는 도 4 및 도 5를 참조로 이해된다. 도 4는 각 수평 통과 도중에 수평 코드워드에 대한 에러 신드롬을 생성하기 위하여 사용되는 회로를 도시한다. 즉, 수평 에러 신드롬은 항상 재생되고, 이들은 SRAM(15)에 저장되지 않는다. 수평 에러 신드롬(Si)을 생성하기 위하여, 도 4의 회로는 생성 다항식 G(x)의 계수에 의한 각 수평 코드워드 C'(x)의 모듈러 나눗셈을 계산한다.
Si = C'(x) MOD (x + αi)
이 때, .
이러한 계산을 수행하기 위해, 수평 코드워드의 심벌(ECC 중복을 포함)은 데이터 버퍼(1)로부터 순차적으로 판독되고, 라인(27)을 통해 선형 피드백 시프트 레지스터(LFSR)(280-289)의 뱅크에 인가된다. 양호한 실시예에 있어서, 각 수평 코드워드는 도 3A에 도시된 바와 같이 10개의 ECC 중복 심벌을 포함하고, 따라서 도 4에는 10개의 LFSR이 존재하며, 각각은 피드백 경로에서 대응하는 αi 계수 배율기를 갖는다. 각 LFSR은 생성 다항식 G(x)의 각 계수에 대한 모듈러 나눗셈을 수행하고, 따라서 상기 식에 따른 에러 신드롬(Si)을 생성한다. 도 4에 개시된 회로는 당업자에게는 공지된 것이고-본 발명의 새로운 양상은 수직 코드워드에 대한 에러 신드롬을 동시에 생성하는데 있고, 이의 상세한 사항은 도 5에 도시되었다.
수학적으로, 수직 코드워드에 대한 에러 신드롬은 상술한 수평 코드워드와 동일한 방법으로 계산된다. 즉, 수직 에러 신드롬(Si)은, 생성 다항식 G(x)의 계수에 의한 각 수직 코드워드 C'(x)의 모듈러 나눗셈을 계산함으로써 생성된다. 종래 기술의 신드롬 생성기는 통상적으로 수직 에러 신드롬을 생성하기 위해 도 4에 도시된 동일한 회로를 사용한다, 즉, 수직 코드워드의 심벌(ECC 중복 포함)은 데이터 버퍼(1)로부터 순차적으로 판독되고, LFSR의 뱅크를 통해 이동된다. 본 발명에 있어서, 수직 에러 신드롬은, 수직 통과 도중에 수직 코드워드를 판독하기 위한 데이터 버퍼의 억세스를 피하기 위하여, 수평 에러 신드롬을 생성하는 것과 동시에 생성된다.
수직 에러 신드롬을 동시에 생성하기 위한 회로는 도 5에 도시되었고, 이의 동작은 도 3A에 도시된 곱셈 코드를 참조하여 이해된다. SRAM(15)은 각각의 182개 수직 코드워드에 대해 16개의 에러 신드롬(Si)을 저장할 용량을 갖는다. SRAM(15)내의 수직 에러 신드롬(Si)은 제 1 수평 통과의 시작 시점에 0으로 초기화된다. 제 1 수평 코드워드를 처리할 때, 심벌은 데이터 버퍼(1)로부터 순차적으로 판독되고, 수평 에러 신드롬을 생성하기 위하여 라인(27)을 통해 도 4의 LFSR에 인가된다. 심벌은 수직 에러 신드롬을 생성하기 위해 라인(27)을 통해 도 5에 도시된 회로에 동시에 인가된다. 도 5는 도 4와 유사하게, 생성 다항식 G(x)의 16개의 계수에 의한 수직 코드워드 심벌의 모듈러 나눗셈을 계산하기 위한 신드롬 생성 회로(290-2915)의 뱅크를 포함한다(각 수직 코드워드는 16개의 ECC 중복 심벌을 포함).
도 5에 도시된 개별 신드롬 생성 회로(290-2915)를 이해하기 위하여, 제 1 수평 코드워드가 데이터 버퍼로부터 판독될 때의 동작을 고려한다. 제 1 수평 코드워드의 제 1 심벌은 제 1 수직 코드워드의 제 1 심벌에 대응한다. 따라서, 제어 라인(30)은 제 1 수직 코드워드에 대해 SRAM(15)으로부터 16개의 수직 에러 신드롬(각각 8비트)을 검색한다. 각 8비트의 수직 ECC 신드롬은 대응하는 레지스터(310-3115)에 래치되고, 멀티플렉서(320-3215)의 출력으로 선택되며, 대응하는 αi 피드백 계수(330-3315)에 의한 곱셈이 수행된다. 라인(27) 상의 코드워드 심벌은, 가산기(350-3515)에서 계수 배율기의 출력에 더해지는 멀티플렉서(340-3415)의 출력으로 선택된다. 가산기(350-3515)의 출력에서 갱신된 신드롬은 그 후 SRAM(15)에 복귀된다. 제 1 수평 코드워드의 제 2 심벌을 처리할 때, 제어 라인(30)은 제 2 수직 코드워드에 대해 SRAM(15)로부터 16개의 수직 에러 신드롬을 검색하고, 상기 절차가 다시 반복된다. 이러한 처리는 각 수평 코드워드에 대해 지속되고, 수평 통과의 마지막까지 수직 코드워드를 정정하기 위한 에러 신드롬은 SRAM(15)에 저장된다.
수평 코드워드가 수평 통과 도중에 정정된다면, SRAM(15)에 저장된 대응하는 수직 에러 신드롬은 정정된 심벌을 고려하기 위하여 갱신되어야만 한다. 도 2의 신드롬 생성기(17)와 에러 정정기(18)는 양호하게 인접 코드워드 상에서 동작한다. 즉, 신드롬 생성기(17)가 현재의 수평 코드워드에 대한 에러 신드롬을 생성하는 동안, 에러 정정기(18)는 이전 수평 코드워드에 대한 심벌을 정정한다. 덧붙여, 에러 정정은, 수직 에러 신드롬을 단순히 정정 값으로 조정하기 위하여, 수평 에러 신드롬의 생성을 추적(trail)한다.
예컨대, 신드롬 생성기(17)는 도 3A에 도시된 제 2 수평 코드워드에 대한 에러 신드롬을 생성하는 반면, 에러 정정기(18)는 제 1 수평 코드워드를 정정한다고 고려하자. 신드롬 생성기(17)는 제 2 코드워드의 제 3 심벌(36)을 통과시켰고 제 1 코드워드의 제 3 심벌(37)이 에러라고 가정한다. 에러 정정기(18)는, 데이터 버퍼(1)에 저장된 제 1 수평 코드워드의 제 3 심벌(37)을 정정하기 위해 사용되는 정정 값을 생성하고, 상기 정정 값은 또한 라인(21)을 통해 도 5의 수직 신드롬 생성 회로(290-2915)에 제공된다. 제어 라인(30)은, 레지스터(310-3115)내로 래치되는 제 3 수직 코드워드를 위해 SRAM(15)으로부터 수직 에러 신드롬을 검색한다. 그 후 레지스터(310-3115)의 출력은 가산기(350-3515)의 입력으로 멀티플렉서(340-3415)를 통해 선택된다. 라인(21)을 통해 제공되는 정정 값은 멀티플렉서(320-3215)의 출력으로 선택되고, 대응하는 αi 피드백 계수(330-3315)에 의해 곱해지고, 그 후 가산기(350-3515)에서 수직 에러 신드롬에 더해진다. 대응하는 αi 피드백 계수(330-3315)에 의해 정정 값을 곱하는 것은, 현재의 수직 ECC 신드롬 값과 정정되는 심벌(즉, 수직 코드워드에서 한 심벌의 옵셋) 사이의 옵셋을 고려하기 위해 필요하다.
수평 통과의 끝에서, 수직 코드워드에 대한 에러 신드롬은 완전히 생성되고, 즉시 처리하기 위해 유용할 것이다. 따라서, 수직 통과를 실행하기 위해, 수직 에러 신드롬은 단순히 SRAM(15)으로부터 검색되고, 수직 코드워드를 정정하기 위해 에러 정정기(18)에 의해 사용된다. 수직 통과 이후 곱셈 코드의 CRC 심벌이 에러가 여전히 남아 있다는 것을 나타낸다면, 상기 처리가 재-반복된다(즉, 수평 및 수직 에러 신드롬은 다음 수평 통과 도중에 재생성된다).
본 발명의 다른 실시예에 있어서, 수평 및 수직 신드롬은, 이들이 제 1 수평 통과 도중에 동시에 생성될 때, SRAM(15)에 저장된다. 이러한 방법에 있어서, 이전에 설명한 실시예에서와 같이, 후속하는 수평 통과 도중에 수평 신드롬을 재-생성하는 것은 필요하지 않다. 신드롬은 수평 및 수직 통과 도중에 단순히 검색되고, 코드워드를 정정하기 위해 사용된다. 이러한 실시예는, 곱셈 코드를 정정하기 위해 다중 통과가 필요할 때(즉, ECC 중복 심벌이 감소된다면, 또는 SNR이 기록 밀도를 증가시킴으로써 감소된다면), 특히 유리하다.
본 실시예에 대한 정정 값을 사용하여 수직 및 수평 신드롬을 갱신하는 회로는 도 6A 및 도 6B에 각각 도시되었다. 이들 회로는, 옵셋을 고려할 필요가 없기 때문에 에러 정정 값(21)을 αi로 곱하는 것이 필요하지 않다는 점을 제외하고, 도 5의 회로와 거의 동일하게 동작한다. 양호한 실시예에 있어서, 제 1 수평 통과 도중에 수평 및 수직 에러 신드롬을 초기에 생성하기 위한 도 4 및 도 5의 회로는, 후속하는 통과 도중에 에러 신드롬을 갱신하기 위해, 도 6A 및 도 6B의 회로와 공유된다. 제어 라인(30)을 통한 어드레스 지정은, 어떤 세트의 에러 신드롬(수평 및 수직)이 적절한 시간에 SRAM(15)으로부터 검색되는 지를 결정한다.
도 7A는 본 발명의 동작을 도시하는 흐름도이고, 도면에 도시되지 않은 제어기에 의해 실행된다. 제 1 수평 통과(37) 도중에, 수평 및 수직 ECC 신드롬은 데이터 CRC 신드롬과 함께 동시에 생성되고, SRAM(15)에 저장된다. 또한, 제 1 수평 통과(37) 도중에, 수평 코드워드가 정정되고, 수직 신드롬과 에러 CRC 신드롬을 갱신하기 위해 사용되는 정정 값은 SRAM(15)에 저장된다. 제 1 및 후속하는 수평 통과 이후에, 단계(38)에서 곱셈 코드에 대한 정정의 타당성과 완전성이 최종 CRC 신드롬을 사용하여 확인된다. 수평 통과 이후 여전히 에러가 남아 있다면, 단계(40)에서 수직 코드워드를 정정하기 위해 수직 통과가 실행되는데, 신드롬 버퍼에 저장된 수평 신드롬을 갱신하기 위해 상기 정정 값이 사용된다. 수직 통과 이후, 정정의 타당성과 완전성은 단계(42)에서 최종 CRC 신드롬을 사용하여 다시 확인된다. 수직 통과 이후 여전히 에러가 남아 있다면, 수평 코드워드를 정정하기 위해 단계(44)에서 다른 수평 통과가 실행되는데, 실현에 따른 정정을 수행하기 위해 SRAM(15)에 저장된 수평 신드롬이 사용된다(즉, 수평 신드롬은, 이들이 SRAM(15) 내에서 이미 유효하다면, 다시 생성되지 않는다). 수평 및 수직 통과와 CRC 검사는, 곱셈 코드가 정정되거나, 또는 정정할 수 없는 것으로 간주될 때까지, 재 반복된다.
제 1 수평 통과 도중에 수평 및 수직 신드롬과 데이터 CRC 신드롬을 동시에 생성하기 위한 흐름도는 도 7B에 도시되었고, 제 1 통과 도중의 정정 값을 사용하여 수평 코드워드를 정정하고 수직 신드롬과 에러 CRC 신드롬을 갱신하기 위한 흐름도는 도 7C에 도시되었다(도 7B 및 도 7C의 흐름도는 병렬로 실행된다). 도 7B를 참조하면, 단계(46)에서, COL 및 ROW 변수가 0으로 초기화되고, SRAM(15)이 클리어되고, 블록 정정 불가능 에러 플래그(BLK_UNC)가 클리어되고, 또한 제 1 수평 통과임을 나타내기 위해 FIRST_PASS 플래그가 설정된다. 그 후, ROW에서 수평 코드워드에 대해, 단계(48)에서 심벌이 판독되고, 상술한 바와 같이 도 4의 회로를 사용하여 수평 ECC 신드롬을 갱신하고, 도 5의 회로를 사용하여 수직 ECC 신드롬을 갱신하기 위해 사용된다. 단계(50)에서 FIRST_PASS 플래그가 설정되면, 도 7F의 흐름도를 실행함으로써 단계(52)에서 데이터 CRC 신드롬을 갱신하기 위해 데이터 심벌도 사용된다. 그 후, 단계(54)에서 COL 변수가 증가되고, 제 1 수평 통과 도중에 수평 및 수직 ECC 신드롬과 데이터 CRC 신드롬을 갱신하기 위해 현재의 수평 코드워드에 대한 다음 심벌이 사용된다.
단계(56)에서 COL 변수가 182와 동일할 때, 현재 수평 코드워드에 대한 최종 심벌이 판독된다. 단계(58)에서, 이전 수평 코드워드의 처리를 종료하기 위한 에러 정정 절차(도 7C의 흐름도)를 대기하기 위하여, 루프가 실행된다. 이전 코드워드의 정정을 종료할 때, 도 7C의 단계(88)에서 정정 플래그는 사용중이 아닌 것(not busy)으로 리세트된다. 도 7B의 단계(60)에서, 정정 플래그는 사용 중(busy)으로 설정되고, C_ROW 변수는 현재의 ROW로 설정되고, ROW 변수는 증가되며, COL 변수는 0으로 리세트된다. 이 점에 있어서, 다음 수평 코드워드(즉, ROW에서)를 위해 생성되는 ECC 신드롬과 함께 현재 수평 코드워드(즉, C_ROW에서)를 정정하기 위해, 도 7C의 정정 절차가 수행된다.
도 7C를 참조하면, 현재의 수평 코드워드의 처리를 종료하고 정정 플래그를 사용 중으로 설정하기 위한 도 7B의 신드롬 생성 절차를 대기하기 위해, 단계(64)에서 루프가 실행된다. 단계(66)에서, 정정 도중에 현재의 열을 추적하는 C_COL 변수가 0으로 리세트되고(즉, 정정되는 수평 코드워드 내의 제 1 심벌로 리세트되고), 코드워드의 정정 불가능 플래그(CW_UNC)는 클리어된다. 정정되는 수평 코드워드에 대한 ECC 신드롬은, 에러 설정자 다항식을 생성하고, 그 근(root)이 유효 심벌 위치에 상응하는 지를 결정하기 위하여, 단계(68)에서 SRAM(15)으로부터 검색된다. 단계(69)에서 ECC 신드롬이 에러가 없음을 나타내는 0이라면, 에러 CRC 신드롬은 단계(71)에서 갱신된다. 단계(70)에서 신드롬이, 에러가 너무 많거나 또는 에러 설정자 다항식의 근이 타당하지 않은 심벌을 지시하는 것을 나타내면, 단계(73)에서, 코드워드와 전체 블록(곱셈 코드)이 정정되지 않은 에러를 포함하는 것을 나타내는, CW_UNC와 BLK_UNC 플래그가 설정되고, 에러 CRC 신드롬이 단계(71)에서 갱신된다. 코드워드가 단계(70)에서 정정될 수 있다면, 단계(72)에서 C_ROW에서 수평 코드워드에 대한 ECC 신드롬은 클리어(0으로 설정)된다. 그 후 루프는, C_ROW에서 수평 코드워드를 정정하기 위하여, 실행된다. 단계(74)에서, C_COL에서 심벌이 에러를 나타낸다면, 데이터 버퍼 내에 저장된 심벌을 정정하고, 정정 값을 사용하여 수직 신드롬을 갱신하기 위하여, 분기(branch)가 실행된다. 정정은 단계(76)에서 C_COL이 COL보다 적어질 때까지 지연된다, 즉 도 7C의 에러 정정 절차는, 도 7B의 신드롬 생성 절차가 현재의 정정 열 C_COL을 통과할 때까지 대기한다. 이것은 도 5의 회로가 정확하게 작동하기 위하여 필요한데, 그 이유는 한 심벌의 옵셋을 고려하기 위하여 정정 값(21)을 αi 33i로 곱하기 때문이다. 도 7C의 단계(78)에서, 데이터 버퍼에 저장된 수평 코드워드 심벌은 정정 값을 사용하여 정정되고, 단계(80)에서 정정 값은, 도 5를 참조로 상기에서 설명된 바와 같이, C_COL에서 수직 코드워드에 대한 수직 신드롬을 갱신하기 위해 사용된다. 단계(81)에서, 에러 CRC 신드롬은 정정 값으로 갱신되고(정정 값이 0이라 할지라도), 단계(82)에서, 변수 C_COL은 수평 코드워드 내의 다음 심벌로 증가되고, 정정 루프는 재-실행된다.
단계(84)에서 C_COL이 182와 동일할 때, 정정되는 수평 코드워드의 최종 심벌이 처리 완료된다. 다음 수직 통과 도중에 현재의 수평 코드워드에 대한 에러 신드롬의 갱신을 용이하게 하기 위하여, 에러 신드롬은 단계(86)에서 제 1 코드워드 심벌로 재위치-설정된다. 이것은 다음의 계산에 의해 수행된다.
SYNi = SYNi·x-182 MOD (x + αi).
상기 동작을 수행하기 위한 회로는 이하에서 훨씬 상세하게 논의된다.
도 7C의 단계(88)에서, 정정 사용 중 플래그(correction busy flag)는 클리어되고, 정정 절차는 단계(64)에서, 다음 수평 코드워드에 대한 에러 신드롬의 생성을 종료하기 위하여, 도 7B의 신드롬 생성 절차를 대기한다. 신드롬 생성 및 에러 정정 절차는, 최종 수평 코드워드가 처리될 때(즉, 도 7B의 단계(62)에서 ROW가 208과 동일할 때)까지, 병렬로 실행되는데, FIRST_PASS 플래그는 단계(63)에서 클리어되고, 제어는 도 7A로 되돌아간다. 제 1 수평 통과 이후 도 7A의 단계(38)에서 에러가 여전히 남아 있다면, 단계(40)에서 수직 통과가 실행되고, 이에 대한 흐름도는 도 7D에서 설명된다.
단계(90)에서, 정정 변수 C_COL 및 C_ROW는 0으로 리세트되고(즉, 제 1 수직 코드워드의 제 1 심벌로 리세트되고), 코드워드 정정 불가능 플래그(CW_UNC)는 클리어된다. 그 후, 정정되는 수직 코드워드에 대한 신드롬은, 에러 설정자 다항식을 생성하고, 그 근이 유효 심벌 위치에 대응하는 지를 결정하기 위하여, 단계(92)에서 SRAM(15)으로부터 검색된다. 단계(93)에서 ECC 신드롬이 에러가 없음을 나타내는 0이라면, 에러 CRC 신드롬은 단계(95)에서 갱신된다. 단계(94)에서 신드롬이, 너무 많은 에러가 있거나, 에러 설정자 다항식의 근이 타당하지 않은 심벌을 지시하는 것을 나타낸다면, 단계(97)에서 CW_UNC 및 BLK_UNC 플래그가 설정되고, 단계(95)에서 에러 CRC 신드롬이 갱신된다. 단계(94)에서 코드워드가 정정될 수 있다면, 단계(96)에서 C_COL에서의 수직 코드워드에 대한 ECC 신드롬은 클리어(0으로 설정)된다. 그 후 C_COL에서의 수직 코드워드를 정정하기 위하여 루프가 실행된다. 단계(98)에서 C_ROW에서의 심벌이 에러를 나타낸다면, 단계(100)에서 데이터 버퍼 내에 저장된 심벌을 정정하고, 단계(102)에서 정정 값을 사용하여 수평 신드롬을 갱신하기 위하여, 분기가 실행된다. 도 6A의 회로는, 도 5를 참조로 상기에서 설명된 것과 유사한 방법으로 수평 신드롬을 갱신하기 위하여 사용된다. C_ROW에서의 수평 ECC 신드롬은 SRAM(15)으로부터 검색되어, αi33i로 곱해지고, 정정 값(35i)에 더해진 후, SRAM(15)에 복귀된다. 도 7D의 흐름도에는 도시되지 않았지만, 정정이 전혀 이루어지지 않는다 할지라도(즉, 정정 값이 0이라 할지라도), 수평 신드롬은 코드워드 내의 각 심벌에 대해 갱신된다. 이것은 도 6A의 신드롬 갱신 회로를 단순화시킨다-이 것은 ECC 신드롬을 다음 코드워드 심벌에 위치시키기 위해 αi 배율기 33i만을 필요로 한다.
도 7D의 단계(104)에서, 에러 CRC 신드롬은 정정된 값으로 갱신되고(정정 값이 0이라 할지라도), 단계(105)에서 C_ROW 변수는 현재 수직 코드워드의 다음 심벌로 증가한다. C_ROW가 단계(106)에서 208과 같아질 때까지 정정 루프는 재-반복되는데, 현재 수직 코드워드의 최종 심벌이 처리된다. 최종 심벌이 처리된 후(또는 코드워드가 단계(94)에서 정정 불가능하면), C_COL에서의 수직 코드워드에 대한 에러 신드롬은 단계(107)에서 코드워드의 제 1 심벌에 재-위치설정 된다. 이것은 다음의 계산에 의해 수행된다.
SYNi = SYNi·x-208 MOD (x + αi).
상기 동작을 수행하기 위한 회로는 이하에서 더욱 상세하게 설명된다.
단계(108)에서, C_COL 변수는 다음 수직 코드워드로 증가하고, C_ROW 변수는 다음 수직 코드워드의 제 1 심벌을 지시하기 위하여 0으로 리세트된다. 도 7D의 정정 절차는, C_COL이 단계(110)에서 모든 수직 코드워드가 처리되었음을 나타내는 182가 될 때까지, 재-반복된다.
수직 통과의 마지막에서, 에러가 단계(42)에서의 곱셈 코드 내에 여전히 남아 있다면, 수평 정정 통과는 단계(44)에서 실행된다. 수평 신드롬이 SRAM(15)에 저장되지 않았다면, 도 7B의 흐름도는, 수평 ECC 신드롬을 재생성하기 위하여(FIRST_PASS 실패로서), 단계(44)에서 실행된다. 그러나, 수평 ECC 신드롬이 SRAM(15)에 저장되었다면, 도 7E의 흐름도는 ECC 신드롬을 단순히 검색하고 처리하기 위해 실행되고, 이는 정정 시스템의 대기 시간을 감소시킨다.
도 7E의 단계(112)에서, 정정 변수 C_COL과 C_ROW는 0으로 리세트되고(즉, 제 1 수평 코드워드의 제 1 심벌로 리세트되고), 코드워드 정정 불가능 플래그(CW_UNC)는 클리어된다. 그 후, 정정되는 수평 코드워드에 대한 신드롬은, 에러 설정자 다항식을 생성하고, 그 근이 타당한 심벌 위치에 대응하는 지를 결정하기 위하여, 단계(114)에서 SRAM(15)으로부터 검색된다. 단계(115)에서 ECC 신드롬이 에러가 없음을 나타내는 0이라면, 에러 CRC 신드롬은 단계(117)에서 갱신된다. 단계(116)에서 신드롬이 너무 많은 에러가 있음을 나타내거나 에러 설정자 다항식의 근이 타당하지 않은 심벌을 지시함을 나타낸다면, 단계(119)에서 CW_UNC와 BLK_UNC 플래그는 코드워드와 전체 블록(곱셈 코드)이 정정되지 않은 에러를 포함하는 것을 나타내게 설정되고, 에러 CRC 신드롬은 단계(117)에서 갱신된다. 코드워드가 단계(116)에서 정정될 수 있다면, 단계(118)에서 C_ROW에서의 수평 코드워드에 대한 ECC 신드롬은 클리어된다(0으로 설정된다). 그 후, C_ROW에서의 수평 코드워드를 정정하기 위하여 루프가 실행된다.
단계(120)에서 C_COL에서의 심벌이 에러를 나타낸다면, 단계(122)에서 데이터 버퍼 내에 저장된 심벌을 정정하고, 단계(124)에서 정정 값을 사용하여 수직 신드롬을 갱신하기 위하여, 분기가 실행된다. 도 6B의 회로는, 수직 통과 도중에 수평 ECC 신드롬을 갱신하기 위한 도 6A를 참조로 하여 상기에서 설명된 것과 유사한 방법으로, 수직 ECC 신드롬을 갱신하기 위해 사용된다. C_COL에서의 수직 ECC 신드롬은 SRAM(15)으로부터 검색되어, αi33i로 곱해지고, 정정 값(35i)에 더해진 후, SRAM(15)에 복귀된다. 도 7E의 흐름도에는 도시되지 않았지만, 정정이 전혀 이루어지지 않는다 할지라도(즉, 정정 값이 0이라 할지라도), 수직 ECC 신드롬은 코드워드 내의 각 심벌에 대해 갱신된다. 이것은 도 6B의 신드롬 갱신 회로를 단순화시킨다-이것은 ECC 신드롬을 다음 코드워드 심벌에 위치시키기 위해 αi 배율기 33i만을 필요로 한다.
도 7E의 단계(126)에서, 에러 CRC는 정정 값을 사용하여 갱신되고(정정 값이 0이라 할지라도), 단계(127)에서 C_COL 변수는 현재 수평 코드워드 내의 다음 심벌로 증가된다. 단계(128)에서 C_COL이 182와 동일하다면, 현재 수평 코드워드의 최종 심벌이 처리된다. 최종 심벌이 처리된 후{또는 코드워드가 단계(116)에서 정정 불가능하다면}, C_ROW에서의 수평 코드워드에 대한 에러 신드롬은 단계(130)에서 코드워드의 제 1 심벌에 재-위치설정 된다. 이것은 다음의 계산에 의해 수행된다.
SYNi = SYNi·x-182 MOD (x + αi).
단계(132)에서, C_ROW 변수는 다음 수평 코드워드로 증가하고, C_COL 변수는 다음 수평 코드워드의 제 1 심벌을 지시하기 위하여 0으로 리세트된다. 도 7E의 정정 절차는, C_ROW가 단계(134)에서 모든 수평 코드워드가 처리되었음을 나타내는 208이 될 때까지, 반복된다.
도 7A를 다시 참조하면, 단계(44)에서 수평 통과를 종료한 후 에러가 여전히 남아 있다면, 다른 수직 통과가 단계(40)에서 실행된다. 반복적인 수평 및 수직 통과는, 곱셈 코드가 정정되고, 정정될 수 없다고 간주될 때까지 지속된다. 각 데이터 섹터에 대한 데이터 및 에러 CRC 신드롬을 생성하기 위한 흐름도는 도 7G 내지 도 7I에 도시되었고, CRC 신드롬을 생성하기 위한 회로는 도 8 내지 도 11에 도시되었으며, 흐름도 및 회로는 다음과 같이 동작한다.
CRC 신드롬 생성 및 확인
도 3A의 각 데이터 섹터에 대한 CRC 신드롬은 데이터 CRC 신드롬과 에러 CRC 신드롬의 두 부분으로 생성된다. 데이터 CRC 신드롬은 정정되지 않은 데이터에 대한 CRC로서 생성되고, 에러 CRC 신드롬은 정정 값에 대한 CRC로서 생성된다. 도 3A의 곱셈 코드 내의 데이터 섹터 처리를 종료할 때, 데이터 및 에러 CRC 신드롬은 최종 CRC 신드롬을 생성하기 위해 결합되고, 그 섹터에 대한 정정이 타당하고 또한 완전한 지를 결정하기 위해 상수와 비교된다. 상술한 바와 같이, 데이터 및 에러 CRC 신드롬은 랜덤화된 데이터에 대한 곱셈 코드를 정정하는 것과 동시에 생성된다-종래 기술에서처럼 정정 이후 또한 데이터의 역랜덤화 이후에는 생성되지 않는다.
도 1의 종래 기술의 에러 정정 시스템에 있어서, CRC 중복 심벌(CRCRED)은 생성 다항식 G(x)에 의해 나뉘어진 데이터 다항식 D(x)의 모듈러 나눗셈으로 생성된다.
CRCRED = D(x)·xn-k mod G(x).
CRC 중복 심벌(CRCRED)을 데이터 다항식 D(x)에 더한 후, 데이터는 디스크에 기록된 코드워드 다항식 C(x)를 초래하는 유사 랜덤 데이터 시퀀스 다항식 R(x)을 더함으로써 랜덤화된다.
C(x) = (D(x)·xn-k + CRCRED) + R(x).
판독 시, 수신된 코드워드 다항식 C'(x)는 ECC 중복 심벌을 사용하여 정정되고, 유사 랜덤 데이터 시퀀스 R(x)는 정정된 코드워드로부터 감산되고, CRC 신드롬 (SCRC)은 다음과 같이 생성된다.
SCRC = (C'(x) - R(x)) mod G(x).
CRC 신드롬(SCRC)는 정정의 타당성과 완전성을 확인하기 위하여 0과 비교된다.
본 발명에 있어서, CRC 검사는 정정된 코드워드를 역랜덤화하기 전에 수행된다. 본 발명이 가능한 변경은 CRC에 대한 최종 CRC 신드롬을, 데이터를 랜덤화/역랜덤화하기 위해 사용된 유사 랜덤 데이터 시퀀스에 대한 CRC와 비교하는 것이다. 이것은 다음의 수학적 관계로부터 이해된다.
CRCRED = D(x)·xn-k mod G(x)
C(x) = (D(x)·xn-k + CRCRED) + R(x)
여기에서, D(x)는 데이터 다항식이고, CRCRED는 CRC 중복이며, R(x)는 데이터를 랜덤화하기 위해 데이터 다항식에 더해지는 유사 랜덤 데이터 시퀀스 다항식이다. 디스크에 기록되는 최종 코드워드 C(x)는 상술한 종래기술에서의 것과 동일하다. 그러나, 수신된 코드워드 C'(x)가, 데이터를 역랜덤화하기 전에{즉, 유사 랜덤 데이터 시퀀스 다항식 R(x)를 감산하기 전에}, CRC 생성 다항식에 의해 나뉘어진다면, 다음의 관계를 초래한다.
C'(x) mod G(x) = (D(x)·xn-k + CRCRED + R(x) + E(x)) mod G(x)
여기에서, E(x)는 에러 다항식이다. 상기 식은 다음과 같이 다시 기록될 수 있다.
C'(x) mod G(x) = (D(x)·xn-k + CRCRED) mod G(x) +
E(x) mod G(x) + R(x) mod G(x).
상기 식에 있어서, (D(x)·xn-k + CRCRED) mod G(x) = 0 이므로,
C'(x) mod G(x) = (E(x) mod G(x)) + (R(x) mod G(x)).
따라서, 수신된 코드워드 C'(x)가 ECC 중복을 사용하여 완전히 정정되면{즉, E(x) = 0}, 수신된 코드워드 C'(x)에 대해 생성된 최종 CRC 신드롬은, 상기 식으로부터 알 수 있는 바와 같이, CRC 생성 다항식 G(x)에 의해 나뉘어진 유사 랜덤 데이터 시퀀스 R(x)의 모듈러 나눗셈과 동일하다. 유사 랜덤 데이터 시퀀스 R(x)와 생성 다항식 G(x)는 알려진 것이므로, 생성 다항식 G(x)에 의한 유사 랜덤 데이터 시퀀스 R(x)를 모듈러 나눗셈하는 것은 상수를 초래하고, 최종 CRC 신드롬은, ECC 신드롬을 사용하는 정정이 타당한지 또한 완전한 지를 결정하기 위하여, 이러한 상수와 단순 비교된다. CRC 신드롬은 수신된 코드워드를 정정하는 것과 동시에 생성되기 때문에, CRC 신드롬은 곧바로 유용하게 되고, 종래 기술에서와 같이 CRC 신드롬을 생성하기 위하여 데이터 버퍼로부터 전체 코드워드를 판독하는 것은 필요하지 않다.
수신된 코드워드를 정정하는 것과 동시에 CRC 신드롬을 생성하기 위하여, 본 발명은 제 1 수평 통과 도중에 정정되지 않은 데이터에 대해 데이터 CRC 신드롬을 생성하고, 수평 및 수직 통과 도중에 정정 값에 대한 에러 CRC 신드롬을 생성한다. 도 3A의 곱셈 코드 내의 데이터 섹터의 처리를 종료할 때, 데이터 및 에러 CRC 신드롬은, 상수{R(x) mod G(x)}에 비교되는 최종 CRC 신드롬을 생성하기 위하여, 결합된다.
본 발명에 있어서, 데이터 및 에러 CRC 신드롬은 종래의 방법{즉, 선형 피드백 시프트 레지스터(LFSR)를 사용하여}으로 생성되지 않는데, 그 이유는 데이터 심벌이 수직 통과 도중에 데이터 버퍼로부터 순차적으로 판독되지 않기 때문이다. 그 대신에, 데이터 및 CRC 신드롬은 처리되는 데이터 심벌의 위치에 대응하도록 조정된다. 이러한 조정은 다음과 같이 데이터 및 에러 CRC 신드롬을 곱함으로써 수행된다.
Xk·8 mod G(x)
여기에서, k는 신드롬을 코드워드를 통해 "이동"("move")시키기 위한 심벌의 수를 나타낸다. 예컨대, 제 1 수평 통과 도중에 데이터 CRC 신드롬을 생성할 때, 데이터 CRC 신드롬은, 데이터 CRC 신드롬을 현재의 수평 코드워드의 다음 심벌로 조정하기 위하여, 다음 식으로 곱해진다.
X1·8 mod G(x)
수직 통과 도중에, 에러 CRC 신드롬은, 에러 CRC 신드롬을 현재의 수직 코드워드의 다음 심벌로 조정하기 위하여, 다음의 식에 의해 곱해진다.
X182·8 mod G(x)
CRC 신드롬을 생성하는 이러한 방법에 대한 수학적인 근거는 CRC 생성기 및 정정 확인기를 실현하는 회로를 참조로 이하에서 설명된다.
도 3A에서 보여진 바와 같이, 각각 CRC 중복이 부가된 16개의 데이터 섹터가 존재한다. 그러므로, 제 1 수평 통과 도중에 생성된 16개의 데이터 CRC 신드롬과, 수평 및 수직 통과 도중에 갱신된 16개의 에러 CRC 신드롬이 존재한다. 이들 신드롬은 유리하게 SRAM(15)에 저장되고, 이에 따라, CD ROM 포맷을 위한 CIRC 에러 정정과 DVD 포맷을 위한 CRC 신드롬 생성을 위해 SRAM(15)을 사용한다. 현재의 데이터 CRC 신드롬은, 제 1 수평 통과 도중에 처리된 각각의 새로운 섹터를 갖는 시작 값으로 초기화된다. 데이터 CRC 신드롬을 다음 섹터에 대한 시작 값으로 초기화하기 전에, 이전 데이터 섹터에 대한 현재의 데이터 CRC 신드롬은 SRAM(15)에 저장된다. 마찬가지로, 수직 코드워드를 처리할 때, 현재의 데이터 섹터에 대응하는 적절한 에러 CRC 신드롬은, 에러 정정 시스템이 16개의 데이터 섹터를 통해 수직으로 진행함에 따라, SRAM(15)으로부터 검색된다. 처리되는 현재 데이터 섹터에 따른 데이터 및 에러 CRC 신드롬을 갱신하는 처리는 도 7F 내지 도 7J의 흐름도로부터 이해된다.
도 7F는, 도 3A의 곱셈 코드에 대한 제 1 수평 통과 도중에 데이터 CRC 신드롬을 생성하기 위한 흐름도를 도시하고, 이 흐름도의 제 1의 2개의 데이터 섹터는 도 3B에 도시되었다. 도 7F의 흐름도는 새로운 데이터 심벌이 도 7B의 단계(52)에서 데이터 버퍼로부터 판독될 때마다 실행된다. 도 7F의 단계(136)에서, 데이터 CRC 신드롬이 다음 데이터 섹터의 제 1 심벌로 초기화되어야만 하는 지의 여부를 결정하기 위한 검사가 수행된다. 예컨대, 제 1 수평 코드워드의 제 1 심벌을 처리할 때, 데이터 CRC 신드롬을 저장하는 데이터 레지스터 DATA_REG는 단계(138)에서 도 3B의 제 1 데이터 섹터의 제 1 심벌(160)로 초기화된다. 다음 데이터 섹터가 도달할 때{즉, 단계(136)에서 ROW가 12와 동일할 때}, 단계(138)에서 제 1 데이터 섹터에 대한 데이터 CRC 신드롬은 SRAM(15)에 저장되고, DATA_REG는 다음 수평 코드워드에 대한 제 1 데이터 심벌(204)로 초기화된다.
이제 도 7F의 흐름도에 대해 설명을 지속하면, 만약 데이터 섹터의 제 1 심벌을 처리하지 않고, 단계(144)에서 COL이 172보다 적다면, 단계(146)에서 데이터 CRC 신드롬은 한 심벌(한 열) 만큼 오른쪽으로 조정되고, 현재의 데이터 심벌은 데이터 CRC 신드롬에 더해진다. 단계(144)에서 COL이 171보다 크다면, 현재의 데이터 심벌은 데이터 CRC 신드롬에 더해지지 않는데, 그 이유는 이것은 CRC 코드워드에 포함되지 않는 ECC 중복 심벌이기 때문이다(상기 ECC 중복은 CRC 코드워드가 상술한 바와 같이 기록 동작 도중에 생성된 후 더해진다). 예컨대, 도 3B의 제 1 수평 코드워드를 처리할 때, 데이터 CRC 신드롬의 생성은, 다음 수평 코드워드의 처리를 시작하기 위하여, COL이 도 7B의 단계(60)에서 0으로 리세트될 때까지 심벌(148)에서 잠시 멈춘다. 그 후 단계(146)에서, 데이터 CRC 신드롬은, 제 2 수평 코드워드의 제 1 데이터 심벌(150)을 데이터 CRC 신드롬에 더하기 전에, 먼저 하나의 심벌만큼 오른쪽으로{즉, 도 3B의 심벌(150)로} 조정된다.
데이터 섹터의 최종 수평 코드워드의 처리를 종료할 때{즉, 단계(154)에서 {ROW+1 mod 12}가 0과 같고, 단계(156)에서 COL이 181과 같을 때}, 데이터 CRC 신드롬은 이들의 대응하는 데이터 섹터의 최종 심벌에 위치될 것이다. 예컨대, 제 1 데이터 섹터 처리를 종료할 때, 데이터 CRC 신드롬은 도 3B의 심벌(152) 위에 위치할 것이다. 이하에서 설명하는 바와 같이, 각각의 대응하는 에러 CRC 신드롬은 또한, CRC 검사를 수행하기 전에, 데이터 섹터의 최종 데이터 심벌에 위치된다.
제 1 데이터 섹터를 처리한 후, 도 7F의 단계(136)에서 ROW는 12와 같고, {ROW mod 12}는 0과 같다. 그러므로, 단계(138)에서 제 1 데이터 섹터에 대한 현재의 데이터 CRC 신드롬은 SRAM(15)에 저장되고, DATA_REG는 SRAM(15)으로부터 검색되는 제 2 데이터 섹터에 대한 개시 위치{즉, 도 3B의 심벌(142)}로 시작된다. 제 2 데이터 섹터의 CRC 코드워드에 대한 데이터 심벌은 단계(146)에서 데이터 CRC 신드롬에 더해진다. 이러한 처리는 16개 모든 데이터 CRC 신드롬이 생성되고 SRAM(15)에 저장될 때까지 지속된다.
수평 및 수직 통과 도중에 에러 CRC 신드롬을 생성하기 위한 흐름도는 도 7G 내지 도 7J에 도시되었다. 제 1 수평 통과 도중에, 에러 CRC 신드롬은 도 7C의 단계(81)에서 정정 값으로 갱신된다(정정 값이 0이라 할지라도). 도 7G의 단계(159)에서, 현재의 통과가 수평인지 또는 수직인지에 따라 분기가 실행된다. 만약 현재 수평 통과를 수행하고, 단계(161)에서 C_ROW가 191보다 크다면, 에러 CRC 신드롬은 갱신되지 않는데, 그 이유는 ECC 중복이 CRC 신드롬의 부분이 아니기 때문이다. 그렇지 않을 경우, 단계(162)에서 {정정 열(C_COL) mod 12}와 {정정 행(C_ROW) mod 12}가 0이라면, 단계(164)에서 에러 CRC 신드롬을 생성하기 위한 레지스터 ERR_REG는 현재 데이터 섹터에 대응하는 SRAM(15)으로부터 부분 에러 CRC 신드롬이 로드된다.
단계(166)에서, 코드워드가 정정할 수 없는 것이라면{즉, 정정 불가능한 플래그(CW_UNC)가 설정되면}, 또는 현재 수평 코드워드에 대한 ECC 신드롬이 정정이 전혀 이루어질 수 없음을 나타내는 0이라면, 현재 데이터 섹터의 최종 수평 코드워드인지에 따라 단계(168)에서 분기가 실행된다. 데이터 섹터의 최종 코드워드라면{즉, (C_ROW+1 MOD 12)가 0과 같다면}, 단계(169)에서 현재 데이터 섹터에 대한 에러 CRC 신드롬은 에러 CRC 신드롬을 오른쪽으로 171 심벌만큼 이동시켜 CRC 코드워드의 최종 심벌에 위치되고{즉, 도 3B의 심벌(158)로부터 심벌(152)로}, C_COL은 172로 설정된다. 이하에 기술된 곱셈표의 수를 감소시키기 위하여, 단계(169)에서 에러 CRC 신드롬을 오른쪽으로 171 심벌만큼 이동시키는 것은, 에러 CRC 신드롬이 오른쪽으로 한 심벌씩 171회 이동하는 루프에서 실행된다. 현재의 코드워드가 데이터 섹터의 최종 코드워드가 아니라면, 에러 CRC 신드롬은 단계(170)에서 현재의 수평 코드워드를 건너뛰기 위하여 아래의 한 행으로 단순히 조정되고, 이후의 제어는 데이터 섹터의 다음 수평 코드워드의 처리를 지속하기 위하여 도 7E로 되돌아간다.
단계(166)에서 만약 코드워드의 정정 불가능 플래그(CW_UNC)가 설정되지 않고 현재의 수평 코드워드에 대한 ECC 신드롬이 0이 아니라면, 현재의 정정 열(C_COL)의 값에 기초하여 도 7H의 단계(172)에서 분기가 실행된다. 만약 C_COL이 0 내지 171이라면, 그리고 만약 현재의 수평 코드워드의 제 1 데이터 심벌을 처리하지 않는다면{즉, 단계(174)에서 C_COL이 0과 같지 않다면}, 에러 CRC 신드롬은 단계(176)에서 한 심벌 오른쪽(한 열)으로 조정되고, 현재의 데이터 심벌에 대한 정정 값은 단계(178)에서 에러 CRC 신드롬에 더해진다. 이러한 처리는, 현재의 수평 코드워드에 대한 모든 정정 값이 에러 CRC 신드롬에 더해질 때까지 지속된다. 수평 코드워드의 ECC 심벌{즉, C_COL이 단계(172)에서 173 내지 180과 같을 때}은, 이들이 상술한 바와 같이 CRC 코드워드의 일부가 아니기 때문에, 에러 CRC 신드롬에 더해지지 않는다. 현재의 수평 코드워드의 최종 데이터 심벌이 처리될 때{즉, C_COL이 단계(172)에서 172와 같을 때}, 단계(180)에서 현재의 수평 코드워드가 현재의 데이터 섹터의 최종 코드워드인 지의 여부에 기초하여, 에러 CRC 신드롬이 조정된다. 만약 데이터 섹터의 최종 수평 코드워드가 아니라면[즉, 만약 {(ROW+1) mod 12}가 단계(180)에서 0이 아니라면], 단계(182)에서 에러 CRC 신드롬은, 다음 수평 코드워드의 제 1 심벌 위에 위치시키기 위해, 한 심벌 오른쪽으로 조정된다. 만약 현재의 수평 코드워드가 현재의 데이터 섹터의 최종 코드워드라면, 단계(181)에서 DATA_REG는 현재의 데이터 섹터에 대한 데이터 CRC 신드롬이 SRAM(15)으로부터 로드되고, ERR_REG와 결합된다. 만약 그 결과가 상술한 바와 같이 유사 랜덤 시퀀스에 대한 CRC와 동일하기 않다면, 블록 정정 불가능 플래그(BLK_UNC)는 단계(183)에서 설정된다. 그 후 단계(184)에서, 에러 CRC 신드롬은, 데이터 섹터의 제 1 심벌 위에 재-위치시키기 위하여, 위로 12행 및 한 심벌 오른쪽으로 조정된다. 예컨대, 도 3B의 제 1 데이터 섹터의 CRC 코드워드의 최종 심벌(152)에서 위치한 에러 CRC 신드롬에 대해, 단계(184)에서 에러 CRC 신드롬을 위로 12행 및 한 심벌 오른쪽으로 조정하는 것은 에러 CRC 신드롬을 데이터 섹터의 제 1 심벌(160)에 위치시킬 것이다. 단계(185)에서, 현재의 데이터 섹터(ERR_REG에 저장된)에 대한 에러 CRC 신드롬은 SRAM(15)에 복귀된다.
도 7G 및 도 7H의 에러 CRC 갱신 절차는, 에러 CRC 신드롬이 도 3A의 모든 16개 데이터 섹터에 대해 생성되고, 유사 랜덤 시퀀스에 대한 CRC와 비교될 때까지, 재-반복된다. 제 1 수평 통과의 마지막에서, BLK_UNC 플래그는, 곱셈 코드에 대한 정정의 타당성과 완전성을 확인하기 위하여, 도 7K의 단계(254)에서 시험된다. 만약 에러가 여전히 남아 있다면, 수직 통과가 실행되고, 도 7D의 단계(104){또는, 수직 코드워드가 생략된다면, 단계(95)에서}에서 수직 코드워드에 제공되는 정정 값으로 에러 CRC 신드롬을 갱신하기 위하여 도 7I의 에러 CRC 갱신 절차가 실행된다.
도 7G의 단계(159)에서, 제어는 수직 통과에 대한 에러 CRC 신드롬을 갱신하기 위하여 도 7I로 분기된다. 만약 도 7I의 단계(186)에서 현재의 정정 열(C_COL)이 171보다 크다면, 수평 ECC 심벌에 대한 수직 코드워드는 CRC 코드워드에 포함되지 않았기 때문에, 아무 것도 갱신되지 않는다. 만약 단계(186)에서 C_COL이 172보다 적다면, 에러 CRC 신드롬이, 현재의 수직 코드워드 아래로 진행함에 따라, 현재의 데이터 섹터의 최종 행에 도달하였는지를 결정하기 위하여 단계(188)에서 검사가 이루어진다. 현재의 {정정 행(C_ROW) mod 12}가 0과 같다면, 단계(190)에서 현재의 데이터 섹터에 대한 부분적인 에러 CRC 신드롬은 SRAM(15)으로부터 검색되고, ERR_REG에 로드된다.
만약 단계(192)에서 코드워드 정정 불가능 에러 플래그(CW_UNC)가 설정되거나, 또는 현재 수직 코드워드를 위한 ECC 신드롬이 0이라면, 에러 CRC 신드롬을 오른쪽으로 한 심벌만큼 조정하기 위하여(즉, 현재의 수직 코드는 생략된다), 도 7J의 흐름도가 실행된다. 단계(193)에서 C_COL이 171과 같지 않다면(즉, 데이터 섹터의 최종 수직 코드워드를 처리하지 않는다면), 단계(194)에서 제 1 데이터 섹터에 대한 에러 CRC 신드롬은 오른쪽으로 한 심벌(한 열)만큼 조정된다. 단계(196)에서 현재의 데이터 섹터에 대한 부분적인 에러 CRC 신드롬은 SRAM(15)에 저장되고, 단계(197)에서 C_ROW는 12만큼 증가된다, 즉 다음의 데이터 섹터로 증가된다. 단계(198)에서 C_ROW가 191보다 크지 않다면, 단계(200)에서 ERR_REG는 SRAM(15)으로부터 다음 데이터 섹터에 대한 부분적인 에러 CRC 신드롬이 로드되고, 단계(194)에서 상기 에러 CRC 신드롬은 오른쪽으로 한 심벌만큼 조정되고, 단계(196)에서 SRAM(15)에 복귀된다. 이러한 루프는 C_ROW가 단계(198)에서 191보다 클 때까지 재-반복되는데, 모든 에러 CRC 신드롬은 현재의 수직 코드워드를 생략하기 위하여 오른쪽으로 한 심벌(한 열)만큼 조정될 것이다.
도 7J의 단계(193)에서 C_COL이 171과 같다면, 최종 수직 코드워드(ECC 중복 전에)는 막 생략되려 할 것이다. 그러므로, 각 데이터 섹터를 위한 최종 CRC 신드롬은 각 데이터 섹터에 대해 생성될 필요가 있고, 에러가 여전히 남아 있다면, BLK_UNC 플래그가 설정된다. 단계(201)에서, 현재의 데이터 섹터(ERR_REG에 저장된)에 대한 에러 CRC 신드롬은 11개의 데이터 심벌 아래로{예컨대, 도 3B의 심벌(148)로부터 심벌(152)로} 조정된다. 단계(201)는 실제, ERR_REG가 한 심벌(D1) 아래로 11회 조정되는 루프로서 실현된다. 단계(203)에서, DATA_REG는 SRAM(15)으로부터 현재의 데이터 섹터에 대한 데이터 CRC 신드롬으로 초기화되고, 최종 CRC 신드롬은 DATA_REG를 ERR_REG와 결합시킴으로써 생성된다. 최종 CRC 신드롬이 유사 랜덤 시퀀스에 대한 CRC와 같지 않다면, 단계(205)에서 블록 정정 불가능 플래그(BLK_UNC)가 설정된다. 단계(207)에서, 에러 CRC 신드롬은, 위로 12행 및 오른쪽으로 한 데이터 심벌로{예컨대, 도 3B의 심벌(152)로부터 심벌(160)로} 조정함으로써, 데이터 섹터의 시작부로 조정된다. 다음 데이터 섹터에 대한 에러 CRC 신드롬은 단계(200)에서 ERR_REG에 로드되고, 위의 절차가 재-반복된다. 단계(198)에서 C_ROW가 191보다 클 때, CRC 검사가 각 데이터 섹터에 대해 수행될 것이고, 에러 CRC 신드롬이 각 데이터 섹터의 시작부에 재위치할 것이다.
다시 도 7I를 참조하면, 만약 단계(192)에서 코드워드 정정 불가능 플래그(CW_UNC)가 설정되지 않고, ECC 신드롬이 0이 아니라면, 현재의 정정 행(C_ROW)의 값에 기초하여 에러 CRC 신드롬을 갱신하기 위하여 단계(206)에서 분기가 실행된다. C_ROW가 단계(206)에서 192 내지 207이라면, ECC 중복 심벌이 CRC 코드워드에 포함되지 않기 때문에, 제어는 단순히 복귀된다. C_ROW가 0 내지 191이라면, 현재의 에러 CRC 신드롬은 단계(208)에서 한 심벌 아래로 조정되고, 다음 심벌에 대한 정정 값은 단계(210)에서 에러 CRC 신드롬에 더해진다. 에러 CRC 신드롬이 데이터 섹터의 제 1 행에 위치한다면[즉, {C_ROW mod 12}가 단계(212)에서 0이라면], 에러 CRC 신드롬을 한 심벌 아래로 조정하는 단계(208)는 생략된다.
단계(209)에서 현재 데이터 섹터의 최종 행에 도달하면[즉, {C_ROW+1 mod 12}가 0], 에러 CRC 신드롬은 다음 수직 코드워드에 대한 데이터 섹터의 상부로 조정된다. 이것은, 에러 CRC 신드롬을 단계(211)에서 한 심벌(D1) 아래로 조정하고, 단계(213)에서 위로 12심벌 오른쪽으로 한 심벌(UP12_R1) 조정함으로써, 수행된다. 단계(215)에서 C_COL이 171과 같다면, 에러 CRC 신드롬은 데이터 섹터 내의 최종 심벌 위에 위치하고, CRC 검사가 수행된다. 단계(217)에서 DATA_REG는 SRAM(15)으로부터 현재의 데이터 섹터에 대한 데이터 CRC 신드롬이 로드되고, 최종 CRC 신드롬을 생성하기 위하여 ERR_REG와 결합된다. 만약 최종 CRC 신드롬이 유사 랜덤 시퀀스에 대한 CRC와 같지 않다면, 블록 정정 불가능 플래그(BLK_UNC)는 단계(219)에서 설정된다. 그 후 에러 CRC 신드롬은, 데이터 섹터의 제 1 심벌 위에{예, 도 3B의 심벌(152)로부터 심벌(160)로} 다시 위치시키기 위하여, 단계(213)에서 12 행 위로 한 데이터 심벌 오른쪽(UP12_R1)으로 이동되고, 현재 데이터 섹터(ERR_REG에 저장된)에 대한 에러 CRC 신드롬은 단계(214)에서 SRAM(15)으로 복귀된다.
수직 통과의 마지막에서, 곱셈 코드에 대한 정정의 타당성과 완전성을 확인하기 위하여, 도 7K의 단계(254)에서 BLK_UNC 플래그가 시험된다. 에러가 여전히 남아 있다면, 다른 수평 통과가 수행된다. 수평 코드워드에 대한 ECC 신드롬이 SRAM(15)에 저장된다면, 도 7E의 흐름도가 실행되고, 에러 CRC 신드롬은 단계(117 및 126)에서 갱신된다. 수평 코드워드에 대한 ECC 신드롬이 SRAM(15)에 저장되지 않았다면, 도 7C의 흐름도가 실행되고, 에러 CRC 신드롬은 단계(71 및 81)에서 갱신된다.
도 7K의 흐름도는, 곱셈 코드가 완전히 정정되었는 지, 또는 수평 또는 수직 통과의 마지막에 정정 불가능한 지를 결정하기 위하여 실행되는 단계를 도시한다. 단계(252)에서, 시스템은 BLK_UNC 플래그의 시험을 수행하기 전에 이를 클리어하기 위하여 ECC_BUSY 플래그를 기다린다. 블록 정정 불가능 플래그(BLK_UNC)가 단계(254)에서 설정되지 않아, 이전의 수평 또는 수직 통과 도중에 정정 불가능한 에러가 발생하지 않았음을 나타낸다면, 정정 절차는, 종래 기술에 의해 요구되는 것과 같이 임의의 부가적인 통과를 수행함이 없이, 단계(258)에서 성공적으로 빠져나간다.
BLK_UNC 플래그가 단계(254)에서 설정된다면, 통과 카운트 변수(PASS_CNT)는 단계(256)에서 증가되고, PASS_CNT가 소정의 최대값을 초과한다면, 곱셈 코드는 정정 불가능하며, 정정 절차는 단계(266)에서 비성공적으로 빠져나간다. 만약 PASS_CNT가 단계(256)에서 최대값보다 적다면, 이전의 수평 및 수직 통과 도중에 단계(260)에서 변화가 전혀 이루어지지 않을 경우(정정이 이루어지지 않을 경우), 부가적인 통과가 유효하지 않기 때문에 정정 절차는 단계(266)에서 다시 비성공적으로 빠져나간다. 그렇지 않을 경우, BLK_UNC 플래그는 단계(262)에서 클리어되고, 정정 절차는 다른 수평 및 수직 통과를 실행함으로써 단계(264)에서 지속된다.
CRC 신드롬(SCRC)이 곱셈 코드를 정정하는 것과 동시에 계산되므로, 정정 절차는 수평 또는 수직 통과의 마지막에 성공적으로 종료될 수 있다. 결과적으로, 본 발명은 정정이 완전한 지를 결정하기 위하여 종래 기술에 의해 요구되는 부가적인 통과를 회피한다. 더욱이, 본 발명은, 정정 절차의 마지막에 데이터를 역랜덤화하고 CRC 신드롬(SCRC)을 생성하기 위하여 종래 기술에 의해 요구되는 부가적인 통과를 회피한다. 이와 같이, 본 발명은 광 저장 장치의 처리량을 상당히 증가시킴으로써 종래 기술에 대해 상당한 개선을 제공한다.
CRC 생성 회로
도 2의 CRC 생성기 및 정정 확인기(19)는 기록 동작 도중에 도 3A에 도시된 16개의 데이터 섹터에 대한 CRC 중복 심벌을 생성하고, 도 7A 내지 도 7J를 참조로 위에서 기술된 바와 같이, 에러 정정기(18)에 의해 이루어진 정정을 확인하는데 사용하기 위해, 판독 동작 도중에 CRC 신드롬(SCRC)을 생성한다. 도 8은 기록 동작 도중에 CRC 중복 심벌을 생성하기 위한 종래의 선형 피드백 시프트 레지스터(LFSR)를 도시한다. 도 8에 도시된 LFSR의 동작은 공지된 것인데, 입력 다항식 D(x)를 생성 다항식 G(x)로 나눈다.
G(x) = gixi + gi-1xi-1 + ... +g1x +g0 .
입력 다항식 D(x)의 계수는 LFSR를 통해 직렬로 이동하는데, 이동의 수는 입력 다항식에 1을 더한 것과 같다. 나머지, 즉 CRC 중복은 시프트 레지스터의 최종 상태이다. 도 3A에 도시된 각 데이터 섹터에 대한 CRC 중복을 생성하기 위하여, 데이터의 k 비트는 다항식 P(x)의 계수로 표시된다. 따라서 CRC 중복은 다음과 같이 계산된다.
CRC 중복 = P(x)·xn-k mod G(x),
여기에서, n-k는 CRC 중복 심벌의 수이고, G(x)는 생성 다항식이다. 최종 이동 이후 레지스터의 내용은 CRC 중복이고, 따라서 이 값은, 곱셈 코드에 병합되어 디스크에 기록되는 CRC 코드워드를 형성하기 위하여, 사용자 데이터에 부가된다.
판독 동작 도중에, 디스크로부터 판독되는 데이터는 다음의 식에 따라 CRC 신드롬(SCRC)을 생성하기 위하여 처리된다.
CRC 신드롬(SCRC) = C'(x) mod G(x),
여기에서, C'(x)는 디스크로부터 판독된 CRC 코드워드(CRC 중복을 포함)이다. 종래 기술에 있어서, 에러 정정기(14)가 정정을 수행한 후, 데이터는 데이터 버퍼(1)로부터 판독되고, 역랜덤화기(4)에 의해 역랜덤화된다. 그 후 역랜덤화된 데이터는, 상기 식에 따른 CRC 신드롬(SCRC)을 생성하기 위해 도 8의 동일한 LFSR 회로가 사용될 수 있도록, 직렬로 처리된다.
본 발명에 있어서, CRC 신드롬(SCRC)은 도 7A 내지 도 7J를 참조로 상술된 바와 같이 곱셈 코드를 정정하는 것과 동시에 생성된다. 그러므로, 도 8의 LFSR 회로는, 데이터가 일련의 연속 비트로 처리될 수 없으므로, CRC 신드롬(SCRC)을 생성하기 위해 사용될 수 없다. 본 발명의 CRC 신드롬 생성기의 개요는 CRC 신드롬(SCRC)을 어떻게 생성하는 지를 설명하기 전에 제공된다.
도 9는 도 2의 CRC 신드롬 생성기(19)의 블록도를 도시하는데, 상기 생성기는 DATACRC 회로(300)와 ERRORCRC 회로(302)를 포함한다. 도 7A를 참조로 위에서 설명한 바와 같이, DATACRC는, 도 2의 데이터 버퍼(1)로부터 판독된 정정되지 않고 랜덤화된 데이터를 사용하여, 도 3A의 곱셈 코드에 대해 제 1 수평 통과 도중에 단계(37)에서 생성된다. ERRORCRC는, 수평 및 수직 코드워드의 반복 처리 도중에, 에러 정정기(18)에 의해 생성된 정정 값을 사용하여 생성된다. 데이터 섹터의 마지막에 도달할 때, 데이터 섹터가 여전히 에러를 포함하는 지를 결정하기 위하여 비교기(307)에서 상수와 비교되는 최종 CRC 신드롬(SCRC)(306)을 생성하기 위하여, DATACRC와 ERRORCRC는 COMBINE 회로(304)에 의해 결합된다. COMBINE 회로(304)에 의해 수행되는 수학적인 함수는 DATACRC 및 ERRORCRC의 단순한 배타적-OR(XOR)이다.
상술한 바와 같이, 도 3A의 곱셈 코드 내에 16개의 데이터 섹터가 존재하고, 따라서 SRAM(15) 내에 저장된 16개의 데이터 및 에러 CRC 신드롬이 존재한다. SRAM(15)으로부터 각 데이터 및 에러 CRC 신드롬을 판독하고, 신드롬을 DATACRC(300) 및 ERRORCRC(302) 회로에 각각 로드함으로써, 각 데이터 섹터에 대해 CRC 검사가 수행된다. 비교기(307)는 최종 CRC 신드롬(SCRC)을, 각 데이터 섹터를 랜덤화하기 위해 사용된 유사 랜덤 데이터 시퀀스에 대한 CRC와 동일한 상수와 비교한다. 유사 랜덤 데이터 시퀀스는 각 블록(곱셈 코드)에 대해 다르기 때문에, 상응하는 CRC 상수는 새로운 블록이 저장 매체로부터 판독될 때마다 비교기(307)에 로드된다.
도 9의 DATACRC 회로(300) 및 ERRORCRC 회로(302)의 보다 더 상세한 묘사는 도 10에 도시되었다. 도 9의 DATACRC 회로(300) 및 ERRORCRC 회로(302)는, 수신된 CRC 코드워드 다항식 C'(x)를 복수의 하위 세트(subset) 다항식의 선형 조합으로 표시함으로써 데이터 및 에러 CRC 신드롬을 생성한다.
C'(x) = Cj(x) + Cj-1(x) + ... + C0(x)
여기에서 각 하위 세트의 다항식 Ck(x)는 코드워드 다항식 C'(x)로부터 사전에 결정된 개수의 비트를 포함한다. 여기에서 개시된 실시예에 있어서, 각 하위 세트의 다항식은 코드 워드 다항식 C'(x)의 8비트를 포함하여, 16진법의 표시로는 다음과 같다.
C0(x) = 00000000...0000000000xx +
C1(x) = 00000000...00000000xx00 +
C2(x) = 00000000...000000xx0000 +
.... +
Cj-1(x) = 00xx0000...000000000000 +
Cj(x) = xx000000...000000000000 =
- - - - - - - - - - - - - - - - - - - -
C'(x) = xxxxxxxx...xxxxxxxxxxxx
이러한 방법에 있어서, CRC 신드롬(SCRC)은, 각 하위 세트의 다항식에 대한 CRC 신드롬의 선형 결합의 개념으로 생성될 수 있다.
CRC 신드롬(SCRC) = C0(x) mod G(x) + C1(x) mod G(x) + ...
+ Cj(x) mod G(x).
상기 식은 다음과 같이 재-배열될 수 있다.
여기에서 는 코드워드 C'(x)중 8비트 다항식이다{즉, = Ck(x)·x-8k). 본 발명에 의해 이용되는 다른 수학적인 관계는 다음과 같다.
다시 도 3B를 참조하면, 상기 식을 사용하여 데이터 CRC 신드롬은 수평 코드워드에 대한 제 1 통과 도중에 제 1 데이터 섹터의 제 1 심벌(160)에 대해 계산된다. 제 1 심벌(160)은 상기 코드워드 C'(x)의 최상위 계수와 상기 하위 세트의 다항식 Cj(x)의 0이 아닌 계수를 포함한다. 제 1 심벌(160)은 {최상위 비트에 0을 채우고, 가산기(310)에서 0을 더한 후} 도 10의 32비트 레지스터(308)에 로드된다. 그 후, 도 3B 내의 코드워드의 다음 심벌(140)이 판독될 때, 레지스터(308)의 내용은, 데이터 CRC 신드롬을 오른쪽으로 한 심벌 이동시키기 위하여{즉, 도 7F의 단계(146)에서 K = R1}, 배율기(312)에서 {xK mod G(x)}에 의해 곱해진다. 그 후 곱셈의 결과는 {상기 특정 하위 세트의 다항식에 대한 CRC 신드롬 계산을 개시하는 가산기(310)에서 코드워드의 다음 심벌(140)을 가산한 후} 레지스터(308)에 재-로드된다. 이러한 계산은, 도 3B의 제 1 수평 코드워드의 최종 심벌(148)이 판독될 때까지, 나머지 심벌에 대해 수행된다. 그 후 CRC 신드롬은, 레지스터(308)의 내용을 {xK mod G(x)}로 곱함으로써, 도 3B의 위치(150)로 조정되는데, 여기에서 K는 오른쪽으로 한 심벌과 같다{즉, 상술한 바와 같이 도 7F의 단계(146)에서 K=R1}. 옵셋 K에 대한 적절한 값은 도 10의 배율기(312)에 대한 SEL 제어 라인을 통해 선택된다.
이러한 처리는, 도 3B의 제 1 데이터 섹터의 최종 수평 코드워드의 최종 심벌이 판독될 때까지, 지속되는데, 레지스터(308)는 다른 심벌에 대해(즉, 다른 하위 세트의 다항식에 대해) 계산된 데이터 CRC 신드롬에 더해지는, CRC 코드워드 C'(x)의 제 1 심벌에 대한{즉, 하위 세트의 다항식 Cj(x)에 대한} 데이터 CRC 신드롬을 포함하여, 제 1 데이터 섹터의 전체 CRC 코드워드 C'(x)에 대한 데이터 CRC 신드롬을 생성한다. 이러한 점에 있어서, 제 1 데이터 섹터에 대한 데이터 CRC 신드롬의 위치는 도 3B의 최종 심벌(152)로 정해진다. 다음 데이터 섹터의 제 1 심벌(204)을 처리하기 위하여 도 7F의 흐름도가 다시 실행될 때, 제 1 데이터 섹터에 대한 데이터 CRC 신드롬은 SRAM(15)에 저장되고, 다음 데이터 섹터의 제 1 심벌(204)은 도 7F의 단계(138)에서 레지스터(308)에 로드된다. 상기 과정은 제 2 및 후속하는 데이터 섹터에 대해 반복되는데, 제 1 수평 통과의 마지막에서 16개 모든 데이터 CRC 신드롬이 생성되고 SRAM(15)에 저장된다.
에러 CRC를 생성하기 위한 도 9의 ERRORCRC 회로(302)는 또한 도 10의 회로를 포함한다. 도 2의 에러 정정기(18)에 의해 정정 값이 생성될 때, 정정 값은 가산기(310)에서 레지스터(308)에 더해진다. 배율기(312)는 정정 값이 생성되었는 지에 관계없이(즉, 정정 값이 0이라 할지라도), 수평 또는 수직 코드워드에서의 각 심벌이 처리될 때, 레지스터(308)의 내용을 적절한 K 옵셋으로 계속해서 곱셈한다. 각 데이터 섹터의 마지막에서, 데이터 및 에러 CRC 신드롬은, 정정이 상술한 바와 같이 타당하고 완전한 지를 결정하는데 사용하기 위한 최종 CRC 신드롬(SCRC)을 생성하기 위하여 결합된다.
도 10의 {xK mod G(x)} 배율기(312)를 실현하기 위한 양호한 실시예는 도 11을 참조로 이해된다. 도 11은 다음의 계산에 의해 생성된 나머지의 표를 나타낸다.
xK+i mod G(x),
여기에서, i는 {0..31}과 같다. 도 11의 표는 CRC 신드롬(즉, R1, D1 및 UP12_R1)의 계산 도중에 사용된 K 옵셋 값 각각에 대해 생성된다. 그 후, 곱셈 동작은 적절한 표에 의해 도 10의 레지스터(308)의 내용을 곱함으로써(즉, 32비트 벡터를 32×32 매트릭스로 곱함으로써), 수행된다.
32비트 CRC 생성기 G(x)에 대해 xK mod G(x) 곱셈을 실현하기 위한 실제 표는 부록 1의 VHDL 소스 코드에 표시되었다. "constant(상수) r1_dvd_tb1"으로 라벨이 붙여진 표는 오른쪽으로 한 심벌(R1)씩 이동하는 조정을 실현하고, "constant(상수) d1_dvd_tb1"으로 라벨이 붙여진 표는 아래로 한 행(D1) 이동하는 조정을 실현하며, "constant(상수) ul2r1_dvd_tb1"으로 라벨이 붙여진 표는 위로 12 및 오른쪽으로 한 심벌(UP12_R1) 이동하는 조정을 실현한다.
부록 1의 VHDL 소스 코드의 나머지는, 도 10의 레지스터(308)의 내용을 적절한 표로 곱함으로써 (즉, 32비트 벡터를 32×32 매트릭스로 곱함으로써) 실제 곱셈 동작을 수행한다. 입력 레지스터 또는 벡터와 매트릭스의 곱셈은 출력 벡터인데, 출력 벡터 내의 각 요소는, 표(또는 매트릭스)의 i번째 행의 n개의 요소와 레지스터(또는 열 입력 벡터)의 대응하는 성분과의 곱셈을 합산함으로써 생성된다. 이러한 합산은 다음과 같이 기록될 수 있다.
여기에서 yi는 배율기(312)의 출력 벡터이고, aik는 도 11 표의 i번째 행의 32비트이며, xk는 도 10의 레지스터(308)에 저장된 32비트이다. 배율기(312)로부터의 출력 벡터 yi는 가산기(310)에서의 입력 비트에 더해지고, 그 결과는 레지스터(308)에 복귀된다.
SRAM
도 2의 SRAM(15)의 구조 및 동작은 도 12A를 참조로 이해된다. 상술한 바와 같이, SRAM(15)은 동작 모드에 따라 다음과 같은 이중 기능을 수행한다. CD 모드에 대해서, SRAM(15)은 C1/C2 디코딩을 위한 데이터 버퍼링을 제공하고, DVD 모드에 대해서 SRAM(15)은, 곱셈 코드에 대한 ECC 신드롬을 저장하고, CRC 확인 코드에 대한 CRC 신드롬을 저장한다. DVD 모드를 위한 양호한 실시예에 있어서, 도 3A에 도시된 곱셈 코드의 182개의 수직 ECC 신드롬만이, 16개의 데이터 섹터에 대응하는 16개의 CRC 신드롬과 함께, SRAM(15)에 저장된다. DVD 곱셈 코드의 208개의 수평 ECC 신드롬은 각 수평 통과에 대해 재-생성되고, SRAM(15)에는 저장되지 않는다. 당업자라면, 이러한 구성이 단지 특정 실시예일 뿐이라는 점과, SRAM(15)의 용량은 CRC 신드롬과 함께 수직 및 수평 ECC 신드롬 모두를 저장하기 위해 증가될 수 있는 점을 인식할 것이다.
도 12A를 참조하면, SRAM(15)은 16개의 256×8비트 메모리 셀(3140-31415)의 뱅크(bank)로 양호하게 실현된다. 각 메모리 셀은 256 데이터 바이트를 억세스하기 위한 8비트의 입력 어드레스와, 어드레스 지정된 데이터 바이트를 출력하기 위한 8비트 출력 버스를 포함한다. 어드레스 디코더(316)는 제어 라인(317)에 대해 구성된 동작의 모드에 따라 12비트 어드레스(318)를 디코딩한다. CD 모드에 대해, 메모리 셀(3140-31415)의 뱅크는 4k×8비트 버퍼와 같이 어드레스 지정된다, 즉 어드레스(318)의 모든 12 비트는 C1/C2 디코딩을 위한 하나의 8비트 데이터 바이트를 억세스하기 위해 사용된다. 어드레스(318)의 제 1의 8개의 비트는 각 메모리 셀(3140-31415)로부터 동일한 데이터 바이트를 선택하기 위해 사용된다. 메모리 셀의 출력은 3상태의 버퍼(tri-state buffer)(3200-32015)를 통해 함께 연결된다. 적절한 3상태의 버퍼가 어드레스(318)의 나머지 4 비트가 남아 있는 동안에 인에이블 되어, C1/C2 디코딩에서의 사용을 위한 버스(322) 상에서 적절한 데이터 바이트를 단정으로 한다.
DVD 모드에 대해, SRAM(15)은 256×128버퍼로서 어드레스 지정된다, 즉 어드레스(318)의 제 1의 8개 비트만이, 각 메모리 셀(3140-31415)로부터 동일한 데이터 바이트를 선택하기 위해 사용된다. 각 메모리 셀로부터 출력되는 16개의 데이터 바이트는, 도 5 및 도 6B에 도시된 바와 같이 수직 코드워드의 16개 ECC 신드롬을 형성하거나, 또는 도 3A에 도시된 데이터 섹터에 대한 CRC 신드롬의 4개의 바이트를 형성하기 위하여 결합된다(324).
DVD 모드에서의 수직 ECC 신드롬과 CRC 신드롬에 대한 양호한 맵핑은 도 12B에 도시되었다. 182 개의 수직 코드워드의 16개의 ECC 신드롬을 저장하기 위하여 제 1의 182개의 어드레스가 사용된다. 다음의 10개의 어드레스는 건너뛰어지고, 도 3A의 DVD 곱셈 코드의 16개의 데이터 섹터에 대한 16개의 4바이트 데이터와 에러 CRC 신드롬을 저장하기 위해 어드레스(192-207)가 사용된다. 데이터와 에러 CRC 신드롬을 억세스하기 위하여 어드레스(192-207)를 사용하는 것은, 어드레스의 세 개의 최하위 비트만이 변화하기 때문에, 디코드 회로를 단순화시킨다. SRAM(15)의 나머지는 DVD 모드에 대해 사용되지 않는다.
본 발명의 목적은 여기에서 개시된 실시예를 통해 완전히 실현되었다. 당업자라면, 본 발명의 다양한 특성이 필수적인 기능으로부터 벗어남이 없이 다른 실시예를 통해 실현될 수 있음을 인식할 것이다. 예컨대, 도 3A에 도시된 곱셈 코드는 통상적으로 디지털 비디오 디스크(DVD)에서 사용되지만, 본 발명은 컴팩트 디스크(CDs)에 사용되는 포맷을 포함하여 다른 곱셈 코드 포맷에 동일하게 적용될 수 있다. 더욱이, 본 발명은 곱셈 코드뿐만이 아닌 다른 다차원 코드에 적용될 수 있다. 따라서, 개시된 특정 실시예는 도시적인 것이고, 다음의 청구범위에 의해 적절하게 구성되는 본 발명의 범주를 제한하려는 것은 아니다.
상술한 바와 같이, 본 발명은 컴퓨터 저장 장치를 위한 에러 정정 시스템에서 다차원 코드에 대한 정정의 타당성과 완전성을 확인하는 것에 관련된 대기시간을 피하는 효과가 있다.
도 1은 CD/DVD 광 저장 장치에서 통상적으로 사용된 종래 기술의 에러 정정 시스템의 블록도.
도 2는, 랜덤화된 데이터에 대해 진행 중에 CRC 신드롬을 생성하기 위한 CRC 생성기-및-정정 확인기를 포함하는, 본 발명의 에러 정정 시스템의 블록도.
도 3A는, DVD 광 저장 장치에서 통상적으로 사용되고 16개의 데이터 섹터를 포함하는 곱셈 코드의 포맷을 도시하는 도면.
도 3B는 도 3A의 곱셈 코드의 제 1의 두 개의 데이터 섹터의 포맷을 도시하는 도면.
도 3C 및 도 3D는 본 발명에서 사용된 데이터 램덤화기/역램덤화기의 상세한 사항을 도시하는 도면.
도 4는 본 발명의 제 1 실시예에 따라 수평 코드워드 에러 신드롬을 생성하는 상세 회로도.
도 5는 수평 코드워드에 대한 에러 신드롬을 생성하는 것과 함께 수직 코드워드 에러 신드롬을 생성하는 상세 회로도.
도 6A 및 도 6B는, 본 발명의 다른 실시예로, 신드롬 버퍼가 수평 및 수직 코드워드에 대해 에러 신드롬을 저장할 때, 수평 및 수직 에러 신드롬을 각각 갱신하는 회로를 도시하는 도면.
도 7A는 본 발명의 에러 정정 시스템에 의해 실행되는 단계의 개요를 도시하는 흐름도.
도 7B는 곱셈 코드에 대한 정정의 타당성과 완전성을 검사하기 위한 CRC 신드롬을 생성하는 것과 동시에, 수평 코드워드에 대한 제 1 통과 도중에 수평 및 수직 에러 신드롬을 동시에 생성하는 흐름도.
도 7C는 제 1(및 후속하는) 수평 통과 도중에 수평 코드워드를 정정하고, 신드롬 버퍼에 저장된 수직 에러 신드롬을 갱신하고, 정정된 값을 사용하여 CRC 에러 레지스터를 갱신하기 위한 흐름도.
도 7D는 신드롬 버퍼 내에 저장된 수직 에러 신드롬을 사용하여 수직 통과 도중에 수직 코드워드를 정정하고, 신드롬 버퍼 내에 저장된 수평 에러 신드롬을 갱신하고, CRC 에러 레지스터를 정정 값으로 갱신하는 흐름도.
도 7E는 신드롬 버퍼 내에 저장된 수평 에러 신드롬을 사용하여 후속하는 수평 통과 도중에 수평 코드워드를 정정하고, 신드롬 버퍼 내에 저장된 수직 에러 신드롬을 갱신하고, CRC 에러 레지스터를 정정 값으로 갱신하는 흐름도.
도 7F는 전체 곱셈 코드에 대한 제 1 수평 통과 도중에 데이터 CRC 신드롬을 생성하는 흐름도.
도 7G 및 도 7H는 수평 통과 도중에 정정 값을 사용하여 에러 CRC 신드롬을 갱신하는 흐름도.
도 7I 및 도 7J는 수직 통과 도중에 정정 값을 사용하여 에러 CRC 신드롬을 갱신하는 흐름도.
도 7K는 수평 또는 수직 통과의 마지막에 정정의 타당성과 완전성을 검사하기 위한 최종 CRC 신드롬을 생성하기 위하여 CRC 데이터 레지스터 및 CRC 에러 레지스터의 내용을 결합하는 흐름도.
도 8은 기록 동작 도중의 CRC 중복과 판독 동작 도중의 CRC 신드롬을 생성하는데 사용하기 위한 종래의 선형 피드백 시프트 레지스터(LFSR)를 도시하는 도면.
도 9는 CRC 신드롬의 데이터 부분을 계산하기 위한 DATACRC 회로, CRC 신드롬의 에러 부분을 계산하기 위한 ERRORCRC 회로, 및 랜덤 데이터 패턴에 대한 CRC와 동일한 상수와 비교되는 최종 CRC 신드롬 SCRC를 생성하기 위하여 DATACRC 및 ERRORCRC 레지스터를 결합하기 위한 회로를 포함하는 CRC 정정 확인 회로의 블록도.
도 10은 도 9의 DATACRC/ERRORCRC 회로의 상세한 블록도.
도 11은 도 10에 도시된 배율기 {xk MOD G(x)}를 계산하기 위한 매트릭스의 일반적인 형태를 도시하는 도면.
도 12A는 SRAM의 구조와, 상기 SRAM이 CD 포맷을 위한 C1/C2 코드의 디코딩과 DVD 포맷을 위한 곱셈 코드 및 CRC 확인 코드를 위해 부분 신드롬의 저장 사이에서 어떻게 구성되는 지를 도시하는 도면.
도 12B는 본 발명의 양호한 실시예에 대한 수직 ECC 신드롬 및 CRC 확인 신드롬의 SRAM 맵핑을 도시하는 도면.
<도면 주요 부분에 대한 부호의 설명>
1 : 데이터 버퍼 2,19 : CRC 생성기 및 정정 확인기
4 : 랜덤화기/역랜덤화기 5,16 : P/Q 엔코더/디코더
6 : 광 디스크 7 : C1 엔코더/디코더
8 : C2 엔코더/디코더 9 : 인터리버/디인터리버
10,15 : SRAM 12,17 : ECC/신드롬 생성기
14,18 : 에러 정정기 22 : 랜덤 패턴 생성기

Claims (22)

  1. 광 디스크 저장 매체로부터 판독된 2진 데이터 내의 에러를 정정하기 위한 에러 정정 처리기로서, 상기 2진 데이터는 다차원 에러 정정 코드의 ECC 중복 심벌과, 크로스-인터리브 리드-솔로몬 코드(CIRC : Cross-Interleaved Reed-Solomon)의 C1/C2 중복 심벌을 포함하는, 에러 정정 처리기에 있어서,
    (a) 상기 광 디스크 저장 매체로부터 판독될 때, 상기 2진 데이터를 저장하기 위한 신드롬 버퍼와,
    (b) C1/C2 중복을 사용하여, 상기 신드롬 버퍼 내에 저장된 상기 2진 데이터 내의 에러를 정정하기 위한, C1/C2 디코더와,
    (c) 상기 광 디스크 저장 매체로부터 판독된 다차원 에러 정정 코드의 코드워드 심벌을 저장하기 위한 데이터 버퍼와,
    (d) 상기 데이터 버퍼에 저장된 데이터 심벌과 ECC 중복 심벌을 포함하는 코드워드에 응답하여, 에러 신드롬을 생성하기 위한 ECC 신드롬 생성기로서, 에러 신드롬을 생성하는데 사용하기 위한 중간 값을 저장하는데 상기 신드롬 버퍼를 사용하는, ECC 신드롬 생성기와,
    (e) 상기 신드롬 버퍼로부터 검색된 적어도 하나의 에러 신드롬을 사용하여, 상기 데이터 버퍼 내에 저장된 코드워드 내의 에러를 정정하기 위한 ECC 에러 정정기를 포함하는, 에러 정정 처리기.
  2. 제 1항에 있어서,
    (a) 상기 다차원 에러 정정 코드는, 제 2 코드워드 세트와 교차하는, 제 1 코드워드 세트를 포함하고,
    (b) 각 코드워드는 데이터 심벌과 ECC 중복 심벌을 포함하고,
    (c) 상기 ECC 중복 심벌은 대응하는 코드워드에 대한 에러 신드롬을 생성하기 위하여 사용되고,
    (d) 상기 ECC 신드롬 생성기는 상기 데이터 버퍼로부터 코드워드 심벌을 판독하고, 상기 코드워드 심벌을 사용하여 상기 코드워드 심벌에서 교차하는 제 1 및 제 2 코드워드 세트에 대한 에러 신드롬을 동시에 생성하는, 에러 정정 처리기.
  3. 제 2항에 있어서, 상기 신드롬 버퍼 내에 저장된 상기 중간 값은, ECC 에러 정정기에 의해 생성된 정정 값으로 갱신되는, 에러 정정 처리기.
  4. 제 1항에 있어서, 상기 신드롬 버퍼를 억세스하기 위한 어드레스 디코더를 더 포함하는데,
    (a) 상기 어드레스 디코더는, 상기 C1/C2 디코더에 의한 사용을 위하여, 상기 신드롬 버퍼로부터 CIRC 코드워드 심벌을 판독하기 위한 제 1 어드레스를 디코드하고,
    (b) 상기 어드레스 디코더는, 상기 ECC 신드롬 생성기에 의한 사용을 위하여, 상기 신드롬 버퍼 내에 저장된 상기 중간 값을 판독하기 위한 제 2 어드레스를 디코드하는, 에러 정정 처리기.
  5. 제 4항에 있어서, 상기 CIRC 코드워드 심벌 내의 비트 수는 상기 중간 값 내의 비트 수보다 적은, 에러 정정 처리기.
  6. 제 5항에 있어서,
    (a) 상기 신드롬 버퍼는 다수의 n×m 구성 버퍼를 포함하고,
    (b) 각 CIRC 코드워드 심벌은 m 비트를 포함하고,
    (c) 각 구성 버퍼는 n 개의 CIRC 코드워드 심벌을 저장하고,
    (d) 각 구성 버퍼는 m 비트의 출력을 포함하고,
    (e) 상기 복수의 구성 버퍼로부터의 적어도 2개의 출력은 결합되어 상기 에러 신드롬을 생성하기 위해 사용되는 상기 중간 값을 형성하는, 에러 정정 처리기.
  7. 제 1항에 있어서, 상기 ECC 에러 정정기에 의해 상기 2진 데이터에 대해 이루어진 정정을 확인하기 위한 에러 정정 확인기를 더 포함하는데,
    (a) 상기 2진 데이터는 확인 코드의 확인 중복 심벌을 더 포함하고,
    (b) 상기 에러 정정 확인기는 상기 확인 중복 심벌에 따라 확인 신드롬을 생성하고,
    (c) 상기 확인 신드롬은 상기 신드롬 버퍼에 저장되는, 에러 정정 처리기.
  8. 제 7항에 있어서, 상기 확인 중복 심벌은 순환-중복-검사(CRC : cyclic-redundancy-check) 코드에 따라 생성되는, 에러 정정 처리기.
  9. 제 7항에 있어서,
    (a) 상기 다차원 에러 정정 코드는 복수의 데이터 섹터를 포함하고,
    (b) 각 데이터 섹터는 복수의 확인 중복 심벌을 포함하고,
    (c) 상기 에러 정정 확인기는 각 데이터 섹터에 대한 확인 신드롬을 생성하고,
    (d) 적어도 두 개의 데이터 섹터에 대한 상기 확인 신드롬은 상기 신드롬 버퍼에 저장되는, 에러 정정 처리기.
  10. 제 9항에 있어서, 상기 확인 신드롬은, 상기 에러 신드롬을 생성하기 위하여 상기 데이터 버퍼로부터 코드워드 심벌을 판독하는 것과 동시에 생성되는, 에러 정정 처리기.
  11. 제 10항에 있어서, 상기 신드롬 버퍼에 저장된 상기 확인 신드롬은 상기 ECC 에러 정정기에 의해 생성된 정정 값으로 갱신되는, 에러 정정 처리기.
  12. 광 디스크 저장 매체로부터 판독된 2진 데이터 내의 에러를 정정하기 위한 에러 정정 처리기로서, 상기 2진 데이터는 곱셈 코드의 교차하는 수평 및 수직 코드워드 내의 ECC 중복 심벌과, 크로스-인터리브 리드-솔로몬 코드(CIRC)의 코드워드 내의 C1/C2 중복 심벌을 포함하는, 에러 정정 처리기에 있어서,
    (a) 상기 광 디스크 저장 매체로부터 판독될 때, 상기 2진 데이터를 저장하기 위한 신드롬 버퍼와,
    (b) C1/C2 중복을 사용하여, 상기 신드롬 버퍼 내에 저장된 상기 2진 데이터 내의 에러를 정정하기 위한, C1/C2 디코더와,
    (c) 상기 곱셈 코드의 상기 교차하는 수평 및 수직 코드워드를 저장하기 위한 데이터 버퍼와,
    (d) 상기 데이터 버퍼로부터 코드워드 심벌을 판독하고, 그와 동시에 상기 코드워드 심벌에서 교차하는 수평 및 수직 코드워드에 대한 수평 에러 신드롬과 수직 에러 신드롬을 생성하기 위한 ECC 신드롬 생성기로서, 상기 에러 신드롬을 생성하는데 사용하기 위한 중간 값을 저장하기 위하여 상기 신드롬 버퍼를 사용하는, ECC 신드롬 생성기와,
    (e) 상기 신드롬 버퍼로부터 검색된 적어도 하나의 에러 신드롬을 사용하여, 상기 데이터 버퍼 내에 저장된 상기 곱셈 코드의 교차하는 수평 및 수직 코드워드 내의 에러를 정정하기 위한 ECC 에러 정정기를 포함하는, 에러 정정 처리기.
  13. 광 디스크 저장 매체로부터 판독된 2진 데이터 내의 에러를 정정하기 위한 에러 정정 처리기로서, 상기 2진 데이터는 다차원 에러 정정 코드의 ECC 중복 심벌 및 확인 중복 심벌을 포함하는 에러 정정 처리기에 있어서,
    (a) 상기 광 디스크 저장 매체로부터 판독되는 상기 다차원 에러 정정 코드의 코드워드 심벌을 저장하기 위한 데이터 버퍼와,
    (b) 상기 ECC 중복 심벌에 따라 생성된 ECC 에러 신드롬을 저장하고, 상기 확인 중복 심벌에 따라 생성된 확인 신드롬을 저장하기 위한 신드롬 버퍼와,
    (c) 상기 데이터 버퍼에 저장된 데이터 심벌과 ECC 중복 심벌을 포함하는 코드워드에 반응하여 에러 신드롬을 생성하기 위한 ECC 신드롬 생성기로서, 상기 에러 신드롬을 생성하는데 사용하기 위한 중간 값을 저장하기 위하여 상기 신드롬 버퍼를 사용하는 ECC 신드롬 생성기와,
    (d) 상기 신드롬 버퍼로부터 검색된 적어도 하나의 에러 신드롬을 사용하여, 상기 데이터 버퍼 내에 저장된 코드워드 내의 에러를 정정하기 위한 ECC 에러 정정기와,
    (e) 상기 신드롬 버퍼에 저장된 확인 신드롬을 수신하도록 연결되고, ECC 에러 정정기에 의해 상기 2진 데이터에 대해 이루어진 정정을 검증하기 위한, 에러 정정 확인기를 포함하는, 에러 정정 처리기.
  14. 제 13항에 있어서,
    (a) 상기 다차원 에러 정정 코드는 제 2 코드워드 세트와 교차하는 제 1 코드워드 세트를 포함하고,
    (b) 각 코드워드는 데이터 심벌과 ECC 중복 심벌을 포함하고,
    (c) 상기 ECC 중복 심벌은 대응하는 코드워드에 대한 에러 신드롬을 생성하기 위하여 사용되고,
    (d) 상기 ECC 신드롬 생성기는 상기 데이터 버퍼로부터 코드워드 심벌을 판독하고, 그와 동시에 상기 코드워드 심벌에서 교차하는 제 1 및 제 2 코드워드 세트에 대한 상기 에러 신드롬을 생성하기 위하여 상기 코드워드 심벌을 사용하는, 에러 정정 처리기.
  15. 제 13항에 있어서, 상기 신드롬 버퍼에 저장된 상기 중간 값은 상기 ECC 에러 정정기에 의해 생성된 정정 값으로 갱신되는, 에러 정정 처리기.
  16. 제 13항에 있어서, 상기 신드롬 버퍼를 억세스하기 위한 어드레스 디코더를 더 포함하는데,
    (a) 상기 어드레스 디코더는, C1/C2 디코더에 의한 사용을 위하여, 상기 신드롬 버퍼로부터 CIRC 코드워드 심벌을 판독하기 위한 제 1 어드레스를 디코드하고,
    (b) 상기 어드레스 디코더는, 상기 ECC 신드롬 생성기에 의한 사용을 위하여, 상기 신드롬 버퍼에 저장된 중간 값을 판독하기 위한 제 2 어드레스를 디코드하는, 에러 정정 처리기.
  17. 제 16항에 있어서, 상기 CIRC 코드워드 심벌 내의 비트 수는 상기 중간 값 내의 비트 수보다 적은, 에러 정정 처리기.
  18. 제 17항에 있어서,
    (a) 상기 신드롬 버퍼는 다수의 n×m 구성 버퍼를 포함하고,
    (b) 각 CIRC 코드워드 심벌은 m 비트를 포함하고,
    (c) 각 구성 버퍼는 n개의 CIRC 코드워드 심벌을 저장하고,
    (d) 각 구성 버퍼는 m 비트의 출력을 포함하고,
    (e) 상기 복수의 구성 버퍼로부터의 적어도 2개의 출력은 결합되어 상기 에러 신드롬을 생성하기 위해 사용되는 상기 중간 값을 형성하는, 에러 정정 처리기.
  19. 제 13항에 있어서, 상기 확인 중복 심벌은 순환 중복 검사(CRC) 코드에 따라 생성되는, 에러 정정 처리기.
  20. 제 13항에 있어서,
    (a) 상기 다차원 에러 정정 코드는 복수의 데이터 섹터를 포함하고,
    (b) 상기 각 데이터 섹터는 복수의 확인 중복 심벌을 포함하고,
    (c) 상기 에러 정정 확인기는 각 데이터 섹터에 대한 확인 신드롬을 생성하고,
    (d) 적어도 두 개의 데이터 섹터에 대한 상기 확인 신드롬은 상기 신드롬 버퍼에 저장되는, 에러 정정 처리기.
  21. 제 13항에 있어서, 상기 확인 신드롬은, 상기 에러 신드롬을 생성하기 위하여 상기 데이터 버퍼로부터 코드워드 심벌을 판독하는 것과 동시에 생성되는, 에러 정정 처리기.
  22. 제 13항에 있어서, 상기 신드롬 버퍼 내에 저장된 상기 확인 신드롬은 ECC 에러 정정기에 의해 생성된 정정 값으로 갱신되는, 에러 정정 처리기.
    부 록
KR1019980044863A 1997-11-14 1998-10-26 코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템 KR100573356B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/970,730 1997-11-14
US08/970,730 1997-11-14
US08/970,730 US5996105A (en) 1997-11-14 1997-11-14 ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes

Publications (2)

Publication Number Publication Date
KR19990044904A KR19990044904A (ko) 1999-06-25
KR100573356B1 true KR100573356B1 (ko) 2006-12-01

Family

ID=25517421

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980044863A KR100573356B1 (ko) 1997-11-14 1998-10-26 코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템

Country Status (4)

Country Link
US (1) US5996105A (ko)
JP (1) JPH11249920A (ko)
KR (1) KR100573356B1 (ko)
TW (1) TW409241B (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961712B1 (en) 1996-10-25 2005-11-01 Ipf, Inc. Consumer product information request (CPIR) enabling servlets and web-based consumer product information catalogs employing the same
JP4088998B2 (ja) 1998-02-16 2008-05-21 ソニー株式会社 光ディスクの記録/再生方法、光ディスク及び光ディスク装置
EP0939403A3 (en) * 1998-02-25 1999-11-17 Matsushita Electric Industrial Co., Ltd. High-speed error correcting apparatus with efficient data transfer
FR2776115B1 (fr) * 1998-03-13 2000-07-21 Thomson Multimedia Sa Dispositif de correction d'erreurs et lecteur de disque optique comportant un tel dispositif
US6427219B1 (en) * 1998-06-24 2002-07-30 Conexant Systems, Inc. Method and apparatus for detecting and correcting errors using cyclic redundancy check
US6272497B1 (en) * 1998-06-26 2001-08-07 Lsi Logic Corporation Vertical filter architecture using interleaved memory for storage of pixel data
US6421805B1 (en) * 1998-11-16 2002-07-16 Exabyte Corporation Rogue packet detection and correction method for data storage device
JP3272317B2 (ja) * 1999-01-21 2002-04-08 インターナショナル・ビジネス・マシーンズ・コーポレーション 誤り検出装置およびその方法
KR100611955B1 (ko) * 1999-07-20 2006-08-11 삼성전자주식회사 스크램블러
US6651208B1 (en) * 2000-04-04 2003-11-18 Mosel Vitelic Corporation Method and system for multiple column syndrome generation
US6732320B1 (en) 2000-04-28 2004-05-04 Promos Technologies Inc. Method and system for improved error correction in optical media data processing
US6785856B1 (en) 2000-12-07 2004-08-31 Advanced Micro Devices, Inc. Internal self-test circuit for a memory array
US6684353B1 (en) 2000-12-07 2004-01-27 Advanced Micro Devices, Inc. Reliability monitor for a memory array
GB0031436D0 (en) 2000-12-22 2001-02-07 Koninkl Philips Electronics Nv Method and apparatus for data reproduction
TW569188B (en) * 2001-02-07 2004-01-01 Media Tek Inc Method and apparatus for error processing in optical disk memories
US7231575B2 (en) * 2002-04-01 2007-06-12 Intel Corporation Apparatus for iterative hard-decision forward error correction decoding
US7421642B2 (en) * 2002-04-05 2008-09-02 Seagate Technology Llc Method and apparatus for error detection
EP1388944A1 (en) * 2002-08-10 2004-02-11 Deutsche Thomson-Brandt Gmbh Cross interleave reed-solomon code correction
EP1616332B1 (en) * 2003-04-14 2017-06-14 Koninklijke Philips N.V. Device for and method of recording information
US8645803B2 (en) 2010-05-10 2014-02-04 Ternarylogic Llc Methods and systems for rapid error correction by forward and reverse determination of coding states
US8645622B2 (en) * 2003-11-18 2014-02-04 International Business Machines Corporation Method to protect data on a disk drive from uncorrectable media errors
US7523305B2 (en) * 2003-12-17 2009-04-21 International Business Machines Corporation Employing cyclic redundancy checks to provide data security
EP1569348A1 (en) * 2004-02-13 2005-08-31 Alcatel Iterative multidimensional decoding
KR20080019729A (ko) * 2004-04-02 2008-03-04 실버브룩 리서치 피티와이 리미티드 모놀리식 집적회로
US7426678B1 (en) 2004-07-20 2008-09-16 Xilinx, Inc. Error checking parity and syndrome of a block of data with relocated parity bits
DE102004036383B4 (de) * 2004-07-27 2006-06-14 Siemens Ag Codier-und Decodierverfahren , sowie Codier- und Decodiervorrichtungen
US7600177B2 (en) * 2005-02-08 2009-10-06 Lsi Corporation Delta syndrome based iterative Reed-Solomon product code decoder
US7823048B2 (en) * 2005-05-31 2010-10-26 Nokia Corporation Buffering of data from a data stream having error correction elements
TWI292866B (en) * 2005-09-09 2008-01-21 Via Tech Inc Method for calculatng an error detection code
TWI282087B (en) * 2005-11-24 2007-06-01 Realtek Semiconductor Corp Decoding device in optical disc drive and related decoding method thereof
US7469368B2 (en) * 2005-11-29 2008-12-23 Broadcom Corporation Method and system for a non-volatile memory with multiple bits error correction and detection for improving production yield
US7624330B2 (en) * 2005-12-12 2009-11-24 Lsi Corporation Unified memory architecture for recording applications
US7743311B2 (en) * 2006-01-26 2010-06-22 Hitachi Global Storage Technologies Netherlands, B.V. Combined encoder/syndrome generator with reduced delay
US7823049B2 (en) * 2006-03-15 2010-10-26 Mediatek Inc. Methods and apparatuses for generating parity symbols for data block
US20070260960A1 (en) * 2006-04-21 2007-11-08 Kuo-Lung Chien Error correction system and related method thereof
US20070260961A1 (en) * 2006-04-21 2007-11-08 Kuo-Lung Chien Error correction system and related method thereof
US20070260963A1 (en) * 2006-04-21 2007-11-08 Kuo-Lung Chien Error correction system and related method thereof
US7984359B2 (en) * 2006-05-01 2011-07-19 Seagate Technology, Llc Correction of data errors in a memory buffer
US9203438B2 (en) * 2006-07-12 2015-12-01 Ternarylogic Llc Error correction by symbol reconstruction in binary and multi-valued cyclic codes
JP4696052B2 (ja) * 2006-11-30 2011-06-08 富士通株式会社 記憶装置、記憶媒体、制御装置、メモリ、サーバ装置、サーバクライアントシステム
US8381082B1 (en) * 2007-02-27 2013-02-19 Marvell International, Inc. Power-saving area-efficient hybrid BCH coding system
CN101681309A (zh) * 2007-06-15 2010-03-24 富士通株式会社 纠错方法以及运算器
US8201060B2 (en) * 2007-07-11 2012-06-12 Ternarylocig LLC Methods and systems for rapid error correction of Reed-Solomon codes
JP4538034B2 (ja) * 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
JP4412401B2 (ja) * 2007-12-18 2010-02-10 ソニー株式会社 復号装置、復号方法、受信装置、および記憶媒体再生装置
JP5170010B2 (ja) * 2009-06-24 2013-03-27 日本電気株式会社 ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム
JP5017407B2 (ja) * 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
KR20130136341A (ko) * 2012-06-04 2013-12-12 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
US8949698B2 (en) * 2012-09-27 2015-02-03 Intel Corporation Method, apparatus and system for handling data faults
US8793552B2 (en) * 2012-11-14 2014-07-29 International Business Machines Corporation Reconstructive error recovery procedure (ERP) for multiple data sets using reserved buffer
CN105706059B (zh) 2013-09-27 2019-09-06 英特尔公司 非易失性存储器中的错误校正
CN105575439B (zh) * 2015-12-15 2020-04-28 山西长河科技股份有限公司 一种存储单元失效纠错的方法及存储器
US10372531B2 (en) 2017-01-05 2019-08-06 Texas Instruments Incorporated Error-correcting code memory
JP6840591B2 (ja) * 2017-03-24 2021-03-10 キオクシア株式会社 復号装置
KR20200117129A (ko) 2019-04-03 2020-10-14 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US11237905B2 (en) * 2019-05-24 2022-02-01 Texas Instruments Incorporated Pipelined read-modify-write operations in cache memory
US11689216B1 (en) * 2022-03-09 2023-06-27 Samsung Electronics Co., Ltd. Low gate-count generalized concatenated code (GCC) by online calculation of syndromes instead of buffer

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5027357A (en) * 1988-10-14 1991-06-25 Advanced Micro Devices, Inc. ECC/CRC error detection and correction system
US5361266A (en) * 1992-11-04 1994-11-01 Mitsubishi Denki Kabushiki Kaisha Error correction circuit
JPH07261943A (ja) * 1994-03-25 1995-10-13 Hitachi Ltd データのエラー訂正方法および装置
KR19980065853A (ko) * 1997-01-15 1998-10-15 김광호 고속 데이타 처리 및 전송을 위한 에러정정용 메모리를 구비하는 시스템 디코더 및 에러정정용 메모리 제어방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5157669A (en) * 1988-10-14 1992-10-20 Advanced Micro Devices, Inc. Comparison of an estimated CRC syndrome to a generated CRC syndrome in an ECC/CRC system to detect uncorrectable errors
JPH04222029A (ja) * 1990-12-21 1992-08-12 Sony Corp エラー訂正方法
US5384786A (en) * 1991-04-02 1995-01-24 Cirrus Logic, Inc. Fast and efficient circuit for identifying errors introduced in Reed-Solomon codewords
US5412667A (en) * 1993-07-08 1995-05-02 Commodore Electronics Limited Decoder for cross interleaved error correcting encoded data
US5602857A (en) * 1993-09-21 1997-02-11 Cirrus Logic, Inc. Error correction method and apparatus
US5629949A (en) * 1993-09-21 1997-05-13 Cirrus Logic, Inc. Error correction verification method and apparatus using CRC check remainders
WO1995012850A1 (en) * 1993-11-04 1995-05-11 Cirrus Logic, Inc. Reed-solomon decoder
FR2712760B1 (fr) * 1993-11-19 1996-01-26 France Telecom Procédé pour transmettre des bits d'information en appliquant des codes en blocs concaténés.
US5592498A (en) * 1994-09-16 1997-01-07 Cirrus Logic, Inc. CRC/EDC checker system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5027357A (en) * 1988-10-14 1991-06-25 Advanced Micro Devices, Inc. ECC/CRC error detection and correction system
US5361266A (en) * 1992-11-04 1994-11-01 Mitsubishi Denki Kabushiki Kaisha Error correction circuit
JPH07261943A (ja) * 1994-03-25 1995-10-13 Hitachi Ltd データのエラー訂正方法および装置
KR19980065853A (ko) * 1997-01-15 1998-10-15 김광호 고속 데이타 처리 및 전송을 위한 에러정정용 메모리를 구비하는 시스템 디코더 및 에러정정용 메모리 제어방법

Also Published As

Publication number Publication date
KR19990044904A (ko) 1999-06-25
TW409241B (en) 2000-10-21
US5996105A (en) 1999-11-30
JPH11249920A (ja) 1999-09-17

Similar Documents

Publication Publication Date Title
KR100573356B1 (ko) 코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템
KR100562832B1 (ko) 랜덤화된데이터내의에러를정정하기위한에러정정처리기및그방법
US5991911A (en) Concurrent generation of ECC error syndromes and CRC validation syndromes in a DVD storage device
US5974580A (en) Concurrent row/column syndrome generator for a product code
US6272659B1 (en) Error correction code processor employing adjustable correction power for miscorrection minimization
JP3966993B2 (ja) 積符号の誤り訂正および並行検査
US6047395A (en) Error correction processor for correcting a multi-dimensional code by generating an erasure polynomial over one dimension for correcting multiple codewords in another dimension
US5920578A (en) Method and apparatus for efficiently processing a multi-dimensional code
KR100415136B1 (ko) 에러정정방법,에러정정장치,데이터판독장치,및데이터맵핑방법
US8166369B2 (en) Method for error processing in optical disk memories
US6275965B1 (en) Method and apparatus for efficient error detection and correction in long byte strings using generalized, integrated, interleaved reed-solomon codewords
US20070011598A1 (en) Error detection and correction for encoded data
US20050229069A1 (en) Techniques for detecting and correcting errors using multiple interleave erasure pointers
US20030147167A1 (en) Multiple level (ML), integrated sector format (ISF), error correction code (ECC) encoding and decoding processes for data storage or communication devices and systems
JP2009501380A (ja) フラッシュエラー訂正
US6832042B1 (en) Encoding and decoding system in an optical disk storage device
JP2002509331A5 (ko)
US6009550A (en) PBA recovery apparatus and method for interleaved reed-solomon codes
US7340663B2 (en) Method and apparatus for embedding an additional layer of error correction into an error correcting code
JP2007299393A (ja) 回転する記憶媒体の複数の層にデータを読み書きする方法、プログラム及びデータ記憶装置
KR100691065B1 (ko) 고밀도 광 기록매체에서의 데이터 에러정정 코드생성방법과 이에 의한 에러 정정 방법, 그리고 그 장치
JPH08509351A (ja) セミサイクリックコードに基づく誤り補正可能データ伝送方法及び装置
KR100200052B1 (ko) 고밀도 컴팩트 디스크용 오류정정 복호기
JP2004152337A (ja) 記録再生装置及びコンピュータプログラム並びに送受信システム
JP2000306342A (ja) 誤り訂正符号化装置

Legal Events

Date Code Title Description
A201 Request for examination
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: 20120413

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130417

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee