KR100562832B1 - 랜덤화된데이터내의에러를정정하기위한에러정정처리기및그방법 - Google Patents
랜덤화된데이터내의에러를정정하기위한에러정정처리기및그방법 Download PDFInfo
- Publication number
- KR100562832B1 KR100562832B1 KR1019980044862A KR19980044862A KR100562832B1 KR 100562832 B1 KR100562832 B1 KR 100562832B1 KR 1019980044862 A KR1019980044862 A KR 1019980044862A KR 19980044862 A KR19980044862 A KR 19980044862A KR 100562832 B1 KR100562832 B1 KR 100562832B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- syndrome
- crc
- error
- correction
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/093—CRC update after modification of the information word
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
- H03M13/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2906—Coding, 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
- H03M13/2909—Product codes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
- H03M13/1515—Reed-Solomon codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Signal Processing (AREA)
- Pure & Applied Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
다차원 코드에 대한 정정의 타당성과 완전성을 확인하는 것에 관련된 대기 시간을 피할 수 있는, 컴퓨터 저장 장치용 에러 정정 시스템이 개시된다. 양호한 실시예에 있어서, 확인은 순환 중복 검사(CRC : Cyclic Redundancy Check)를 사용하여 수행된다. 기록 동작 도중에, CRC 중복 심벌은 호스트 시스템으로부터 수신된 사용자 데이터에 대해 계산되고, CRC 심벌을 부가한 후, 상기 데이터는 유사 랜덤 데이터 패턴과 XOR시킴으로써 랜덤화된다. 그 후 ECC 심벌은, 곱셈 코드의 행(Q) 및 열(P) 코드워드를 형성하기 위하여 랜덤화된 데이터에 대해 {바람직하게는 리드-솔로몬(Reed-Solomon) 코드를 사용하여} 생성되고, 그 후 상기 곱셈 코드는 디스크에 기록된다. 판독 시, 곱셈 코드는 P/Q 디코더에 의한 디코딩을 위하여 데이터 버퍼 내에 저장된다. Q 코드워드에 대한 제 1 통과 도중에, 데이터 CRC 신드롬은 정정되지 않은 랜덤화된 데이터에 대해 생성되고, 데이터 CRC 신드롬은 데이터 CRC 레지스터에 저장된다. 또한 제 1 통과 및 후속하는 통과 도중에, P 또는 Q 코드워드에 대한 정정이 이루어질 때, 정정 값은 에러 CRC 레지스터에 인가된다. 완전한 CRC 코드워드를 처리한 후, 데이터 CRC 및 에러 CRC 레지스터는 최종 CRC 신드롬을 생성하기 위하여 결합된다. 기본 곱셈에 대한 정정이 타당하고 완전한 지를 결정하기 위하여, 최종 CRC 신드롬은 상수와 비교되는데, 상기 상수는 랜덤 데이터 패턴에 대한 CRC와 동일하다. 이러한 방법으로, CRC 검사가 랜덤화된 데이터에 대해 수행될 수 있어서, CRC 신드롬을 생성하기 전에 데이터를 역랜덤화하기 위하여 데이터 버퍼를 억세스하는 것과 관련된 대기 시간을 피하게 된다.
Description
본 명세서는 동시에 출원된 미국 특허("코드워드 데이터를 저장하기 위한 데이터 버퍼와 에러 신드롬을 저장하기 위한 신드롬 버퍼를 사용하는 ECC 시스템"), 동시 출원된 미국 특허("DVD 저장 장치에서 ECC 에러 신드롬과 CRC 확인 신드롬의 동시 생성"), 및 미국 특허 제 5,446,743호("리드-솔로몬(REED-SOLOMON) 디코더를 위한 계수 갱신 방법 및 장치")와 관련된다. 상기 인용된 미국 특허 출원 및 미국 특허는 본 명세서에서 참조로서 병합된다.
본 발명은 컴퓨터 저장 장치를 위한 에러 정정 시스템에 관한 것이고, 특히 기록 동작 도중에 데이터가 랜덤화되기 이전에 CRC(Cyclic redundancy check : 순환 중복 검사) 심벌이 생성될 때, 랜덤화에 데이터에대한 CRC를 수행함으로써, 곱셈 코드(product code)와 같은, 다차원의 코드로의 정정의 타당성과 완전성을 확인하기 위한 효율적인 방법 및 장치에 관한 것이다.
컴퓨터 저장 장치(자기 및 광 디스크 드라이브와 같은)에 있어서, 레코딩 채널의 대역폭과 신호 전력은 제한된다. 실행 이득을 얻기 위하여, 잡음에 대한 시스템의 면역을 증가시킴으로써 유효 신호 대 잡음비(SNR)를 증가시키도록 다양한 코딩 기술이 사용된다. 이것은 비트의 에러 율을 임의로 낮게 유지하면서 기록 밀도를 증가시켜 저장 용량에서의 증가를 허용한다.
기록 장치에는, 채널 코드와 에러 정정 코드(ECC)의 두 가지 형태의 코드가 현재 사용된다. 채널 코드는 기록 채널의 특정 특성에 의해 야기되는 잡음에 대한 것이다. 예컨대, 런-렝스 제한(run-length limited : RLL) 코드는, 아날로그 캐리어 신호 내에서 데이터 심벌을 나타내는 펄스 사이의 최소 간격을 제한함으로써, 심벌간 간섭에 따른 잡음을 감소시키도록 설계된 채널 코드이다. 기록될 데이터의 스펙트럼 내용 역시, 판독 시 데이터를 정확하게 검출하는 시스템의 성능에 역으로 영향을 미칠 수 있고, 결과적으로 일부 데이터 시퀀스는 다른 데이터 시퀀스에 비해 검출하기가 어려울 수 있다. 이러한 현상을 보상하기 위하여, 데이터를 랜덤화하기 위한 채널 코드가 기록 장치에서 공통적으로 사용되는데, 상기 장치는 디스크 저장 매체에 데이터를 기록하기 전에 데이터를 랜덤화함으로써 데이터를 효과적으로 분산(whiten)시킨다. 판독 시, 래코딩 채널은 데이터가 랜덤화되지 않은 경우보다 더 낮은 비트 에러 율로 랜덤화된 데이터를 검출할 수 있다. 저장 매체로부터 데이터 판독은 호스트로 전달되기 전에 역랜덤화된다.
에러 정정 코딩(ECC)에 있어서, 레코딩될 2진 데이터는, 디스크 저장 매체에 기록되는 코드워드를 생성하도록 데이터에 부가되는 중복 심벌을 형성하기 위하여 수학적으로 처리된다. 판독 시, 레코딩된 코드워드는 판독 신호로부터 평가(검출)되고, 중복 심벌은 평가된 코드워드를 다시 원래 레코딩된 사용자 데이터로 디코드하는데 사용된다. 중복 심벌은, 코드워드가 기록 채널을 통과할 때, 코드워드를 잡음으로부터 차단하는 버퍼를 효과적으로 제공한다. 충분한 잡음이 이러한 버퍼를 "통과"할 때, 기록된 코드워드를 다른 수신된 코드워드로 변환시켜, 사용자 데이터로 디코드될 때 에러를 초래한다.
에러 정정 코드에서 더 많은 중복 심벌이 사용될수록, 코드워드 주위에 더 많은 버퍼가 소요되고, 디코딩 에러가 발생하기 전에 더 많은 잡음에 대한 내성을 가질 수 있다. 그러나, 비트 에러 율을 임의로 낮게 유지하면서 주어진 채널에 대해 얻을 수 있는 최대 사용자 데이터 송신 율(또는 기록 밀도)로 언급되는 "채널 용량"으로 공지된 임의의 주어진 에코딩 채널의 성능에는 상한이 존재한다. 궁극적으로 채널 용량은 채널 대역폭과 신호 대 잡음비(SNR)의 함수이다. 상술한 바와 같이, 채널 코드와 에러 정정 코드는 유효 SNR을 증가시킴으로써 성능을 개선하기 위한 수단이다.
레코딩 채널의 신뢰도와 효율성을 최대화하기 위하여 사용자 데이터를 엔코딩/디코딩하는데 많은 방법이 존재하고, 궁극적으로 그 목적은, 실현 복잡도와 원가를 최소화하면서 채널 용량에 도달하는 시스템을 설계하는 것이다. 블록 에러 정정 코드, 특히 리드-솔로몬(Reed-Solomon) 블록 코드는 훌륭한 에러 정정 특성과 낮은 실현 원가 및 복잡도로 인해 디스크 저장 시스템에서 공통적으로 사용된다.
블록 코드는 소스 데이터 스트림 중 k개 심벌의 입력 블록을 n 개 심벌의 출력 블록 또는 코드워드로 엔코딩하는데, n-k는 중복 심벌의 수이고, k/n은 코드 율로 언급된다. 따라서, 코드워드는 통신 매체를 통해 전달되고(통신매체에 저장되고), 수신기에 의해 디코드된다. 엔코딩 처리는 입력 블록에 대한 수학적인 처리를 수행하여, 출력 코드워드는 상호간에 코드의 최소 거리(dmin)로 언급되는 파라메터만큼 달라진다. 코드 사이의 최소 거리(dmin)는, 수신된 코드워드가 잘못되게 디코드되기 전에 시스템이 견딜 수 있는 잡음의 양을 결정한다.
리드-솔로몬 코드를 가지고, 데이터스트림은 심벌의 시퀀스로서 처리되는데, 상기 심벌은 통상적으로 유한 필드 GF(2w)로부터 선택된다. 파라메터(w)는 심벌당 2진 데이터 비트의 수를 나타낸다. k 개 심벌의 입력 블록의 각 심벌은 데이터 다항식 D(x)의 계수를 나타낸다. 중복 심벌{이 역시 다항식 W(x)로 표시됨}은 따라서 생성 다항식 G(x)에 의해 나뉘어진 입력 데이터 다항식 D(x)의 모듈러 나눗셈(modulo division)으로 계산된다.
W(x) = (Xm·D(x)) MOD G(x),
여기에서 m은 중복 심벌의 수와 동일한 생성 다항식의 등급이다. 따라서 중복 다항식 W(x)는 다음의 코드워드 다항식 C(x)를 생성하기 위하여 데이터 다항식 D(x)에 더해진다.
C(x) = (Xm·D(x)) + W(x).
당업자는 상기 동작을 수행하기 위한 엔코더 회로가 선형 피드백 시프트 레지스터(Linear Feedback Shift Register : LFSR)를 사용하여 최소 원가로 실현될 수 있음을 이해할 것이다.
엔코딩 후, 코드워드 C(x)는 잡음이 있는 통신 채널을 통해 전달되는데, 여기에서 수신된 코드워드 C'(x)는 전달된 코드워드 C(x)에 에러 다항식 E(x)를 더한 것과 동일하다. 수신된 코드워드 C'(x)는 다음의 단계에 의해 정정된다. (1) 에러 신드롬 Si를 계산하는 단계, (2) 에러 신드롬 Si를 사용하여 에러 설정자(error locator) 다항식의 계수를 계산하는 단계, (3) 에러 설정자 다항식의 근을 계산하는 단계로, 상기 근의 로그값은 에러 위치 Li인, 근의 계산 단계, 및 (4) 에러 신드롬 Si와 에러 설정자 다항식의 근을 사용하여 에러 값을 계산하는 단계.
에러 신드롬 Si는, 생성 다항식 G(x)의 계수로 나뉘어진 수신된 코드워드 다항식 C'(x)의 모듈러(modulo) 나눗셈으로 계산된다.
Si = C'(x) MOD (x + αi)
이 때, G(x) = (x+ai ),
여기에서 α는 유한 필드 GF(2w)의 원시 원소이다. 디코딩 처리의 다른 단계를 수행하고, 에러 설정자 다항식을 계산하고, 에러 설정자 다항식의 근을 계산하고, 또한 에러 값을 계산하는 기술은 당업자에게는 공지되는 것이고, 본 발명을 이해하는데 필요하지 않다. 예로서, 상술한 미국 특허 제 5,446,743호{"리드-솔로몬(REED-SOLOMON) 디코더를 위한 계수 갱신 방법 및 장치"}를 참조.
에러 내성(tolerance)을 추가로 증가시키기 위한, 종래 기술에서 공지된 다른 기술은 코드워드를 다차원 또는 곱셈 코드(product code)로 알려진 것으로 배열하는 것이다. 예컨대, 디지털 비디오 디스크(DVD) 저장 시스템은 공통적으로 도 3A에 도시된 2차원 곱셈 코드를 사용한다. 코드워드는 교차하는 수평(행 또는 Q) 및 수직(열 또는 P) 코드워드로 배열되고, 디코딩 처리는 반복 통과(pass)로 수행된다. 수평 코드워드에 대한 제 1의 통과는 가능한 많은 에러를 정정하도록 수행되고, 정정할 수 없는 임의의 수평 코드워드는 변경되지 않고 잔류한다. 그 후, 가능한 많은 에러를 정정하도록 수직 코드워드에 대한 통과가 이루어지는데, 여기에서 수직 코드워드에서 정정된 심벌은 교차 수평 코드워드에 대한 대응 심벌을 정정하기도 한다. 결과적으로 수평 코드워드는 다음의 수평 통과 동안 정정될 수 있다. 유사하게, 수평 통과 도중에 정정된 심벌은, 이전에 정정할 수 없었던 수직 코드워드를 다음의 수직 통과 도중에 정정 가능하도록 한다. 이러한 반복 처리는 전체 곱셈 코드가 정정될 때까지, 또는 정정할 수 없다고 간주될 때까지 지속된다.
도 3A의 2차원 곱셈 코드는 또한 행 및 열 코드워드에 대한 정정의 타당성을 검사하는데 사용되는 CRC 중복 심벌을 포함한다. CRC 중복는 통상적으로 다음 식에 따른 사용자 데이터를 처리함으로써 생성된다,
CRC 중복 = P(x)·xn-k mod G(x),
여기에서 P(x)는 유한 필드 GF(2m)에서의 계수를 갖는 다항식으로 표시되는 사용자 데이터이고, n-k는 CRC 중복 심벌의 수이고, G(x)는 생성 다항식이다. 따라서, CRC 중복은, 최종적인 코드워드 C(x)가 디스크에 기록되기 전에, 사용자 데이터에 부가된다. 판독 동작 도중에, 디스크로부터 판독된 데이터는 다음 식에 따른 CRC 신드롬(SCRC)을 생성하기 위하여 처리된다,
SCRC = C'(x) mod G(x),
여기에서 C'(x)는 디스크로부터 판독된 수신된 코드워드 다항식(CRC 중복을 포함)이다. 코드워드 C'(x)가 에러가 없다면, 신드롬(SCRC)은 0이 될 것이다.
CRC 중복은 통상적으로, ECC 중복 심벌을 엔코딩하기 전의 기록 동작 도중에 데이터에 대해 생성되고, CRC 신드롬은, ECC 중복이 곱셈 코드를 정정하기 위해 사용된 후, 판독 동작 도중에 생성된다. 이러한 방법으로, CRC 신드롬은 정정을 확인하고, 잘못된 정정을 검출하기 위하여 동작한다. 이것은 극히 중요한 기능인데, 왜냐하면 이것이 에러 정정 시스템이 "잘못된 데이터"를 호스트 시스템으로 통과시키는 것을 방지하기 때문이다.
CD/CDV 광 디스크에서 통상적으로 볼 수 있는 종래 기술의 에러 정정 시스템의 개요는 도 1에 도시되었다. 기록 동작(장치가 판독 전용이 아닌 것으로 간주) 도중에, 호스트 시스템으로부터 수신된 사용자 데이터는 데이터 버퍼(1)에 저장된다. 따라서 CRC 생성기 및 정정 확인기(2)는 라인(3)을 통해 버퍼로부터 사용자 데이터를 판독하고, CRC 중복 심벌을 생성하고, 또한 사용자 데이터를 첨부된 중복 심벌과 함께 데이터 버퍼(1)에 복귀시킨다. 이후, 데이터는 다시 데이터 버퍼(1)(CRC 중복 포함)로부터 판독되고, 데이터 랜덤화기(4)에 의해 랜덤화되며, 랜덤화된 데이터는 데이터 버퍼(1)에 복귀된다. 그후 P/Q 엔코더/디코더(5)는 데이터 버퍼(1)로부터 랜덤화된 데이터를 판독하고, ECC/신드롬 생성기(12)는 도 3A에 도시된 2차원 곱셈 코드를 형성하기 위하여 P 및 Q 코드워드에 대한 ECC 중복 심벌을 생성한다. 개별적인 P 및 Q 코드워드는 ECC 중복 심벌을 부가한 후 데이터 버퍼(1)에 복귀된다. 전체 곱셈 코드가 일단 생성되면, 데이터 버퍼(1)로부터 판독되고, 광 저장 매체(6)에 기록된다.
시스템이 컴팩트 디스크(CD) 데이터 포맷으로 구성되면, C1 및 C2로 언급되는 부가적인 중복이 생성되고, 디스크에 이를 기록하기 전에 데이터에 부가된다. 따라서, CD 기록 포맷을 용이하게 하기 위하여, 에러 정정 시스템은 C1 엔코더/디코더(7), C2 엔코더/디코더(8) 및 공지된 크로스 인터리브 리드-솔로몬 코드(Cross Interleave Reed-Solomon Code : CIRC)를 실현하기 위한 인터리버/디인터리버(9)를 포함한다. 통상적으로 정적 RAM(SRAM)(10)은 CIRC 코딩 처리를 실현하기 위해 사용되는데, SRAM은 다이내믹 RAM(DRAM)보다 훨씬 고속이고, DRAM은 데이터 버퍼(1)를 실현하는데 사용된다.
판독 동작 도중에, 처리는 역으로 실행된다. CD 포맷으로 구성되었다면, C1 및 C2 디코더는 광 디스크(6)로부터 판독되고 데이터 버퍼(1)에 저장되는 랜덤화된 데이터에 대한 예비 정정을 수행한다. 일단 완전한 곱셈 코드가 데이터 버퍼(1)에서 유효하면, P/Q 디코더(5)는 추가 정정을 행하기 위하여 P 및 Q 코드워드에 대한 반복적인 통과를 시작한다. ECC/신드롬 생성기는 라인(13)을 통해 에러 정정기(14)에 전달된 ECC 신드롬을 생성한다. 에러 정정기는 상술한 바와 같은 개별적인 코드워드에서의 에러를 정정하기 위하여 ECC 신드롬을 사용한다. P 및 Q 통과의 종료 시에 모든 ECC 에러 신드롬이 곱셈 코드가 에러 없음(잘못 정정되지 않았다면)을 나타내는 0이라면, 랜덤화된 데이터는 데이터 버퍼(1)로부터 판독되고, 역랜덤화기(4)에 의해 역랜덤화된다. 데이터가 역랜덤화됨에 따라, 데이터는 CRC 신드롬을 생성하기 위하여 CRC 생성기-및-정정 확인기(2)에 의해 처리된다. CRC 신드롬이 P 및 Q 코드워드에 대한 정정이 타당하고 완전한 것임을 나타내는 0이라면, 데이터는 다시 데이터 버퍼(1)로부터 판독되고, 역랜덤화되며, 역랜덤화된 데이터는 호스트 시스템으로 전달된다. CRC 신드롬이, 곱셈 코드가 잘못 정정되었음을 나타내는, 0이 아닌 값이라면, CRC 생성기 및 정정 확인기(2)는 라인(11)을 통해 호스트 시스템에 에러 메시지를 보내는데, 상기 호스트 시스템은 재-시도 동작(즉, 디스크로부터 데이터를 재-판독하려는 시도)을 개시할 것이다.
도 1에 도시된 종래 기술의 에러 정정 시스템의 기본적인 단점은, CRC 확인 단계를 수행하기 전에 데이터가 역랜덤화되어야만 한다는 점이다. 이러한 점은 상술한 바와 같이 전체 곱셈 코드를 판독하고, 데이터를 역랜덤화하고, 또한 CRC 신드롬을 생성하기 위한 부가적인 버퍼 억세스를 필요로 한다. 명백히, 이러한 점은 저장 시스템의 대기시간을 증가시키는데, 이것은 특히 큰 블록의 오디오/비디오 데이터가 평탄하고 중단 없는 성능을 얻기 위하여 저장 시스템으로부터 연속 스트림으로 판독되어야만 하는 멀티미디어 응용에는 상당히 바람직하지 못하다.
그러므로, 확인 심벌이 랜덤화 이전에 생성되고, ECC 심벌이 랜덤화 이후에 생성될 때, CD/DVD 곱셈 코드와 같은 다차원 코드에 대한 정정의 타당성 및 완전성을 확인하는데 관련된 대기시간을 피하는 컴퓨터 저장 장치에서의 에러 정정 시스템에 대한 필요성이 존재한다.
다차원 코드에 대한 정정의 타당성과 완전성을 확인하는 것에 관련된 대기시간을 피하는, 컴퓨터 저장 장치에 대한 에러 정정 시스템이 개시된다. 양호한 실시예에 있어서, 확인은 순환 중복 검사(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)
이 때, G(x) = (x+ai ).
이러한 계산을 수행하기 위해, 수평 코드워드의 심벌(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 내지 181과 같을 때}은, 이들이 상술한 바와 같이 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 . 단, x는 입력되는 데이터 값.
입력 다항식 D(x)의 계수는 LFST을 통해 직렬로 이동하는데, 이동의 수는 입력 다항식에 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}. 본 발명에 의해 이용되는 다른 수학적인 관계는 다음과 같다.
·xn+m mod G(x)=(·xnmod G(x))·xm mod G(x)
다시 도 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 (24)
- 디스크 저장 매체로부터 판독된 랜덤화된(randomized) 데이터 내의 에러를 정정하기 위한 에러 정정 처리기로서, 상기 랜덤화된 데이터는 상기 랜덤화된 데이터에 대해 생성된 ECC 중복 심벌(ECC redundancy symcol)과, 랜덤화되기 전에 데이터 대해 생성된 검사 심벌을 포함하는, 에러 정정 처리기로서,(a) 상기 ECC 중복 심벌을 사용하여 상기 랜덤화된 데이터 내의 에러를 정정하기 위한 ECC 디코더와,(b) 상기 랜덤화된 데이터에 응답하는, 확인 신드롬(validation syndrome)을 생성하기 위한 신드롬 생성기와,(c) 상기 랜덤화된 데이터에 대한 정정의 타당성과 완전성(validity and completeness)을 검증하기 위하여, 상기 확인 신드롬을 미리결정된 값과 비교하기 위한 정정 확인기(correction validator)와,(d) 상기 정정 확인기가 상기 랜덤화된 데이터에 대한 정정이 타당하고 완전함을 나타내면, 상기 랜덤화된 데이터를 역랜덤화하기 위한 역랜덤화기를 포함하는 에러 정정 처리기.
- 제 1항에 있어서,(a) 상기 랜덤화된 데이터는 제 1 교차 코드워드 세트와 제 2 교차 코드워드 세트를 포함하고,(b) 상기 ECC 디코더는, 순차적인 통과로 제 1 교차 코드워드 세트와 제 2 교차 코드워드 세트를 처리함으로써, 상기 랜덤화된 데이터 내의 에러를 정정하는, 에러 정정 처리기.
- 제 2항에 있어서,(a) 상기 신드롬 생성기는 상기 제 1 교차 코드워드 세트에 대한 제 1 통과 도중에 데이터 확인 신드롬을 생성하고,(b) 상기 신드롬 생성기는, 상기 랜덤화된 데이터를 정정하기 위해 상기 ECC 디코더에 의해 생성된 정정 값을 사용하여 에러 확인 신드롬을 생성하고,(c) 상기 신드롬 생성기는, 상기 미리결정된 값과 비교되는 최종 확인 신드롬을 생성하기 위하여, 상기 데이터 확인 신드롬을 상기 에러 확인 신드롬과 결합시키는 에러 정정 처리기.
- 제 2항에 있어서,(a) 상기 ECC 디코더가 상기 랜덤화된 데이터를 처리함과 동시에 상기 신드롬 생성기는 부분적인 확인 신드롬을 생성하고,(b) 상기 신드롬 생성기는, 상기 ECC 디코더에 의해 처리되는 특정 랜덤화된 데이터 심벌의 위치에 따라 부분적인 확인 신드롬을 조정하기 위한 옵셋 제어기를 포함하는, 에러 정정 처리기.
- 제 4항에 있어서, 상기 ECC 디코더가 랜덤화된 데이터 심벌을 정정하기 위한 정정 값을 생성할 때,(a) 상기 옵셋 제어기는 상기 정정된 데이터 심벌의 위치에 따라 상기 부분적인 확인 신드롬을 조정하고,(b) 상기 신드롬 생성기는 상기 정정 값을 사용하여 상기 부분적인 확인 신드롬을 갱신하는, 에러 정정 처리기.
- 제 4항에 있어서,(a) 상기 검사 심벌은 유한 필드의 생성 다항식 G(x)에 따라 생성되는데, 여기서 G(x) = g1x-1 + gi-1xi-1 + ... +g1x +g0이고, x는 입력되는 데이터 값이며,(b) 상기 옵셋 제어기는, 상기 부분적인 확인 신드롬을 {xK mod G(x)}로 곱함으로써 상기 부분적인 확인 신드롬을 조정하는데, 여기서 K는 옵셋 값이고, mod 연산자는 모듈러 나눗셈(modulo division)을 수행하는, 에러 정정 처리기.
- 제 1항에 있어서,(a) 상기 검사 심벌은 유한 필드의 생성 다항식에 따라 생성되고,(b) 상기 미리결정된 값은 상기 생성 다항식에 기초하는, 에러 정정 처리기.
- 제 1항에 있어서,(a) 상기 역랜덤화기는 미리결정된 시작 값(seed value)에 따라 랜덤 패턴을 생성하고,(b) 상기 랜덤 패턴은 상기 랜덤화된 데이터를 역랜덤화하기 위하여 상기 랜덤화된 데이터와 결합되는, 에러 정정 처리기.
- 제 8항에 있어서,(a) 상기 검사 심벌은 유한 필드의 생성 다항식에 따라 생성되고,(b) 상기 미리결정된 값은 상기 생성 다항식과 상기 랜덤 패턴에 기초하는, 에러 정정 처리기.
- 제 1항에 있어서, 상기 검사 심벌은 순환 중복 코드(CRC : cyclic redundancy code)에 따라 생성되는, 에러 정정 처리기.
- 디스크 저장 매체로부터 판독된 랜덤화된 데이터 내의 에러를 정정하는 방법으로서, 상기 랜덤화된 데이터는 상기 랜덤화된 데이터에 대해 생성된 ECC 중복 심벌과, 랜덤화되기 전에 데이터 대해 생성된 검사 심벌을 포함하는, 에러 정정 방법에 있어서,(a) 상기 ECC 중복 심벌을 사용하여 상기 랜덤화된 데이터 내의 에러를 정정하는 단계와,(b) 상기 랜덤화된 데이터에 따라 확인 신드롬을 생성하는 단계와,(c) 상기 랜덤화된 데이터에 대한 정정의 타당성과 완전성을 검증하기 위하여, 상기 확인 신드롬을 미리결정된 값과 비교하는 단계와,(d) 상기 단계(c)의 결과가 상기 랜덤화된 데이터에 대한 정정이 타당하고 완전함을 나타내면, 상기 랜덤화된 데이터를 역랜덤화하는 단계를 포함하는, 에러 정정 방법.
- 제 11항에 있어서,(a) 상기 랜덤화된 데이터는 제 1 및 제 2 교차 코드워드 세트를 포함하고,(b) 에러를 정정하는 상기 단계는, 순차적인 통과로 상기 제 1 코드워드 세트와 상기 제 2 코드워드 세트를 처리함으로써, 상기 랜덤화된 데이터 내의 에러를 정정하는, 에러 정정 방법.
- 제 12항에 있어서, 상기 확인 신드롬을 생성하는 상기 단계는,(a) 상기 제 1 코드워드 세트에 대한 제 1 통과중에 데이터 확인 신드롬을 생성하는 단계와,(b) 상기 랜덤화된 데이터를 정정하기 위한 정정 값을 사용하여 에러 확인 신드롬을 생성하는 단계와,(c) 상기 미리결정된 값과 비교되는 최종 확인 신드롬을 생성하기 위하여, 상기 데이터 확인 신드롬을 상기 에러 확인 신드롬과 결합시키는 단계를 포함하는, 에러 정정 방법.
- 제 12항에 있어서, 상기 확인 신드롬을 생성하는 상기 단계는,(a) ECC 에러 신드롬을 생성하기 위하여 상기 랜덤화된 테이터를 처리함과 동시에 부분적인 확인 신드롬을 생성하는 단계와,(b) ECC 에러 신드롬을 생성하기 위하여 처리되는 특정 랜덤화된 데이터 심벌의 위치에 따라 상기 부분적인 확인 신드롬을 조정하는 단계를 포함하는, 에러 정정 방법.
- 제 14항에 있어서, 상기 확인 신드롬을 생성하는 상기 단계는,(a) 정정된 데이터 심벌의 위치에 따라 상기 부분적인 확인 신드롬을 조정하는 단계와,(b) 상기 부분적인 확인 신드롬을, 상기 데이터 심벌을 정정하기 위해 사용된 정정 값으로 갱신하는 단계를 포함하는, 에러 정정 방법.
- 제 14항에 있어서,(a) 상기 검사 심벌은 유한 필드의 생성 다항식 G(x)에 따라 생성되는데, 여기서 G(x) = g1x-1 + gi-1xi-1 + ... +g1x +g0이고, x는 입력되는 데이터 값이며,(b) 상기 부분적인 확인 신드롬을 조정하는 상기 단계는, 상기 부분적인 확인 신드롬을 {xK mod G(x)}로 곱하는 단계를 포함하는데, 여기서 K는 옵셋 값이고, mod 연산자는 모듈러 나눗셈을 수행하는, 에러 정정 방법.
- 제 11항에 있어서,(a) 상기 검사 심벌은 유한 필드의 생성 다항식에 따라 생성되고,(b) 상기 미리결정된 값은 상기 생성 다항식에 기초하는, 에러 정정 방법.
- 제 11항에 있어서,(a) 상기 역랜덤화기는 미리결정된 시작 값에 따라 랜덤 패턴을 생성하고,(b) 상기 랜덤 패턴은 상기 랜덤화된 데이터를 역랜덤화하기 위하여 상기 랜덤화된 데이터와 결합되는, 에러 정정 방법.
- 제 18항에 있어서,(a) 상기 검사 심벌은 유한 필드의 생성 다항식에 따라 생성되고,(b) 상기 미리결정된 값은 상기 생성 다항식과 상기 랜덤 패턴에 기초하는, 에러 정정 방법.
- 제 11항에 있어서, 상기 검사 심벌은 순환 중복 코드(CRC)에 따라 생성되는, 에러 정정 방법.
- 디스크 저장 매체로부터 판독된 데이터 내의 에러를 정정하기 위한 에러 정정 처리기로서, 상기 데이터는 ECC 중복 심벌과 검사 심벌을 포함하는, 에러 정정 처리기에 있어서,(a) 상기 ECC 중복 심벌을 사용하여 상기 데이터 내의 에러를 정정하기 위한 ECC 디코더와,(b) 상기 데이터에 응답하여, 확인 신드롬을 생성하기 위한 신드롬 생성기와,(c) 상기 데이터에 대한 정정의 타당성과 완전성을 검증하기 위하여, 상기 확인 신드롬을 미리결정된 값과 비교하기 위한 정정 확인기와,(d) 상기 정정 확인기가 랜덤화된 데이터에 대한 정정이 타당하고 완전함을 나타내면, 상기 데이터를 역랜덤화하기 위한 역랜덤화기를 포함하는, 에러 정정 처리기.
- 디스크 저장 매체로부터 판독된 랜덤화된 데이터 내의 에러를 정정하기 위한 에러 정정 처리기로서, 상기 랜덤화된 데이터는 상기 랜덤화된 데이터에 대해 생성된 ECC 중복 심벌과, 랜덤화되기 전에 데이터 대해 생성된 검사 심벌을 포함하는, 에러 정정 처리기에 있어서,(a) 상기 디스크로부터 판독된 상기 랜덤화된 데이터를 저장하기 위한 데이터 버퍼와,(b) 상기 데이터 버퍼로부터 상기 랜덤화된 데이터를 수신하기 위해 접속된 ECC 디코더로서, 상기 랜덤화된 데이터 내의 에러를 정정하기 위한 ECC 에러 신드롬과 정정 값을 생성하기 위한 ECC 디코더와,(c) 상기 ECC 디코더가 상기 데이터 버퍼로부터 상기 랜덤화된 데이터를 수신하는 동시에 상기 데이터 버퍼로부터 상기 랜덤화된 데이터를 수신하기 위하여 접속된 신드롬 생성기로서, 확인 신드롬을 생성하기 위한 신드롬 생성기와,(d) 상기 랜덤화된 데이터에 대한 정정의 타당성과 완전성을 검증하기 위하여, 상기 확인 신드롬을 미리결정된 값과 비교하기 위한 정정 확인기와,(e) 상기 데이터 버퍼로부터 상기 랜덤화된 데이터를 수신하기 위하여 접속된 역랜덤화기로서, 상기 정정 확인기가 상기 랜덤화된 데이터에 대한 정정이 타당하고 완전한 것을 나타내면 상기 랜덤화된 데이터를 역랜덤화하기 위한 역랜덤화기를 포함하는, 에러 정정 처리기.
- 제 22항에 있어서, 상기 확인 신드롬은 순환 중복 코드(CRC)에 따라 생성되는, 에러 정정 처리기.
- 제 22항에 있어서, 상기 신드롬 생성기는, 랜덤화된 데이터 심벌이 정정될 때 상기 ECC 디코더에 의해 생성된 정정 값을 사용하여, 상기 확인 신드롬을 갱신하는, 에러 정정 처리기.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/970,918 US6052815A (en) | 1997-11-14 | 1997-11-14 | ECC system for generating a CRC syndrome over randomized data in a computer storage device |
US8/970,918 | 1997-11-14 | ||
US08/970,918 | 1997-11-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990044903A KR19990044903A (ko) | 1999-06-25 |
KR100562832B1 true KR100562832B1 (ko) | 2006-12-01 |
Family
ID=25517706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980044862A KR100562832B1 (ko) | 1997-11-14 | 1998-10-26 | 랜덤화된데이터내의에러를정정하기위한에러정정처리기및그방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6052815A (ko) |
JP (1) | JP4346135B2 (ko) |
KR (1) | KR100562832B1 (ko) |
TW (1) | TW432279B (ko) |
Families Citing this family (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6332206B1 (en) * | 1998-02-25 | 2001-12-18 | Matsushita Electrical 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 |
US6412090B1 (en) * | 1998-06-18 | 2002-06-25 | Globespanvirata, Inc. | Galois field computation system and method |
US6370671B1 (en) * | 1998-06-18 | 2002-04-09 | Globespan, Inc. | Configurable decoder and method for decoding a reed-solomon codeword |
US6467060B1 (en) * | 1998-06-26 | 2002-10-15 | Seagate Technology Llc | Mass storage error correction and detection system, method and article of manufacture |
US6367047B1 (en) * | 1998-10-20 | 2002-04-02 | Ecrix | Multi-level error detection and correction technique for data storage recording device |
KR100611955B1 (ko) * | 1999-07-20 | 2006-08-11 | 삼성전자주식회사 | 스크램블러 |
JP3450756B2 (ja) * | 1999-09-08 | 2003-09-29 | 松下電器産業株式会社 | 誤り訂正方法および誤り訂正装置 |
KR20010081335A (ko) * | 2000-02-12 | 2001-08-29 | 구자홍 | 차세대 고밀도 기록 매체를 위한 디지털 데이터의 오류정정 부호화 방법 |
US6738942B1 (en) * | 2000-06-02 | 2004-05-18 | Vitesse Semiconductor Corporation | Product code based forward error correction system |
US6714144B1 (en) | 2000-10-23 | 2004-03-30 | Cirrus Logic, Inc. | Data randomization in a data storage system |
TW476932B (en) * | 2000-10-23 | 2002-02-21 | Acer Labs Inc | Decoding system for disk and the method thereof |
US6384747B1 (en) | 2000-10-23 | 2002-05-07 | Cirrus Logic, Inc. | Data encoding to provide run-length control in a data storage system |
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 |
TW479226B (en) * | 2000-12-15 | 2002-03-11 | Acer Labs Inc | Disc decoding system and method |
TW522393B (en) * | 2001-02-02 | 2003-03-01 | Acer Labs Inc | Decoding system and method for disks |
TW569188B (en) * | 2001-02-07 | 2004-01-01 | Media Tek Inc | Method and apparatus for error processing in optical disk memories |
US20030079161A1 (en) * | 2001-10-22 | 2003-04-24 | Verboom Johannes J. | Optimized data storage system and method for optical storage system |
US7174498B2 (en) | 2002-02-15 | 2007-02-06 | Intel Corporation | Obtaining cyclic redundancy code |
US7296212B1 (en) * | 2002-11-15 | 2007-11-13 | Broadwing Corporation | Multi-dimensional irregular array codes and methods for forward error correction, and apparatuses and systems employing such codes and methods |
US7158058B1 (en) | 2002-12-09 | 2007-01-02 | Marvell International Ltd. | Method and apparatus for generating a seed set in a data dependent seed selector |
JP3711106B2 (ja) | 2002-12-27 | 2005-10-26 | 株式会社東芝 | データ処理装置及びデータ処理方法 |
US20040161226A1 (en) * | 2003-01-21 | 2004-08-19 | Watson Scott Edward | Integrated audio / video recorder with magnetic and optical data storage |
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 |
US7523305B2 (en) * | 2003-12-17 | 2009-04-21 | International Business Machines Corporation | Employing cyclic redundancy checks to provide data security |
US6968478B1 (en) * | 2003-12-18 | 2005-11-22 | Xilinx, Inc. | Method and apparatus for data transfer validation |
US7225387B2 (en) * | 2004-02-03 | 2007-05-29 | International Business Machines Corporation | Multilevel parallel CRC generation and checking circuit |
EP1569348A1 (en) * | 2004-02-13 | 2005-08-31 | Alcatel | Iterative multidimensional decoding |
JP2005293724A (ja) * | 2004-03-31 | 2005-10-20 | Sanyo Electric Co Ltd | 誤り箇所の検出方法、その方法を利用する誤り検出回路、誤り訂正回路、および再生装置 |
US7099221B2 (en) * | 2004-05-06 | 2006-08-29 | Micron Technology, Inc. | Memory controller method and system compensating for memory cell data losses |
US7490283B2 (en) | 2004-05-13 | 2009-02-10 | Sandisk Corporation | Pipelined data relocation and improved chip architectures |
US7116602B2 (en) | 2004-07-15 | 2006-10-03 | Micron Technology, Inc. | Method and system for controlling refresh to avoid memory cell data losses |
US7849381B2 (en) * | 2004-12-21 | 2010-12-07 | Sandisk Corporation | Method for copying data in reprogrammable non-volatile memory |
US7409473B2 (en) * | 2004-12-21 | 2008-08-05 | Sandisk Corporation | Off-chip data relocation |
US7600177B2 (en) * | 2005-02-08 | 2009-10-06 | Lsi Corporation | Delta syndrome based iterative Reed-Solomon product code decoder |
US20060242450A1 (en) * | 2005-04-11 | 2006-10-26 | Li-Lien Lin | Methods and apparatuses for selectively rebuffering and decoding a portion of a data block read from an optical storage medium |
US7437642B1 (en) * | 2005-07-22 | 2008-10-14 | Liontech Trains Llc | Model train command protocol using front and back error bytes |
US7624330B2 (en) * | 2005-12-12 | 2009-11-24 | Lsi Corporation | Unified memory architecture for recording applications |
US7559011B1 (en) | 2006-02-10 | 2009-07-07 | Xilinx, Inc. | Circuit having a programmable circuit and method of validating a bitstream loaded into a programmable device |
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 |
US9203438B2 (en) * | 2006-07-12 | 2015-12-01 | Ternarylogic Llc | Error correction by symbol reconstruction in binary and multi-valued cyclic codes |
US7894289B2 (en) * | 2006-10-11 | 2011-02-22 | Micron Technology, Inc. | Memory system and method using partial ECC to achieve low power refresh and fast access to data |
US7900120B2 (en) * | 2006-10-18 | 2011-03-01 | Micron Technology, Inc. | Memory system and method using ECC with flag bit to identify modified data |
US8020115B2 (en) * | 2007-04-09 | 2011-09-13 | Infineon Technologies Ag | Apparatus, method and system for permanent storage of data |
US7975109B2 (en) | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US8127211B2 (en) * | 2007-06-20 | 2012-02-28 | Texas Instruments Incorporated | Adding known data to CRC processing without increased processing time |
US8201060B2 (en) * | 2007-07-11 | 2012-06-12 | Ternarylocig LLC | Methods and systems for rapid error correction of Reed-Solomon codes |
US8032813B2 (en) * | 2007-07-17 | 2011-10-04 | Texas Instruments Incorporated | Concurrent production of CRC syndromes for different data blocks in an input data sequence |
JP4831018B2 (ja) * | 2007-08-28 | 2011-12-07 | 日本電気株式会社 | 並列巡回符号生成装置および並列巡回符号検査装置 |
US8131920B2 (en) * | 2007-12-06 | 2012-03-06 | Hitachi Global Storage Technologies, Netherlands B.V. | Method and system for dynamically allocating read and write sequence randomizer |
JP5166074B2 (ja) | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
US8229945B2 (en) | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
US8732386B2 (en) | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
US8543888B2 (en) * | 2009-06-09 | 2013-09-24 | Microchip Technology Incorporated | Programmable cyclic redundancy check CRC unit |
JP2011008879A (ja) * | 2009-06-26 | 2011-01-13 | Toshiba Storage Device Corp | ディスクドライブ装置 |
US9164554B2 (en) | 2010-04-12 | 2015-10-20 | Sandisk Enterprise Ip Llc | Non-volatile solid-state storage system supporting high bandwidth and random access |
US8856593B2 (en) | 2010-04-12 | 2014-10-07 | Sandisk Enterprise Ip Llc | Failure recovery using consensus replication in a distributed flash memory system |
US9047351B2 (en) | 2010-04-12 | 2015-06-02 | Sandisk Enterprise Ip Llc | Cluster of processing nodes with distributed global flash memory using commodity server technology |
US8725951B2 (en) | 2010-04-12 | 2014-05-13 | Sandisk Enterprise Ip Llc | Efficient flash memory-based object store |
US8868487B2 (en) | 2010-04-12 | 2014-10-21 | Sandisk Enterprise Ip Llc | Event processing in a flash memory-based object store |
US8954385B2 (en) | 2010-06-28 | 2015-02-10 | Sandisk Enterprise Ip Llc | Efficient recovery of transactional data stores |
US8392807B2 (en) * | 2010-07-23 | 2013-03-05 | Sandisk Technologies Inc. | System and method of distributive ECC processing |
US8694733B2 (en) | 2011-01-03 | 2014-04-08 | Sandisk Enterprise Ip Llc | Slave consistency in a synchronous replication environment |
US8874515B2 (en) | 2011-04-11 | 2014-10-28 | Sandisk Enterprise Ip Llc | Low level object version tracking using non-volatile memory write generations |
WO2012092902A2 (zh) * | 2012-02-14 | 2012-07-12 | 华为技术有限公司 | 一种译码方法和译码装置 |
US9135064B2 (en) | 2012-03-07 | 2015-09-15 | Sandisk Enterprise Ip Llc | Fine grained adaptive throttling of background processes |
KR20130136341A (ko) * | 2012-06-04 | 2013-12-12 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그 동작 방법 |
US8930780B2 (en) * | 2012-08-28 | 2015-01-06 | Lsi Corporation | Systems and methods for non-zero syndrome based processing |
KR101990972B1 (ko) * | 2012-10-04 | 2019-06-19 | 삼성전자 주식회사 | 메모리 시스템에서의 순환 중복 검사 동작 수행 방법 및 이를 이용한 메모리 컨트롤러 |
KR102002925B1 (ko) | 2012-11-01 | 2019-07-23 | 삼성전자주식회사 | 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법 |
US9104591B2 (en) | 2012-12-11 | 2015-08-11 | Sandisk Technologies Inc. | Data recovery on cluster failures and ECC enhancements with code word interleaving |
KR102133542B1 (ko) * | 2013-12-03 | 2020-07-14 | 에스케이하이닉스 주식회사 | 랜더마이저 및 디랜더마이저를 포함하는 메모리 시스템 |
KR102108386B1 (ko) | 2013-12-23 | 2020-05-08 | 삼성전자주식회사 | 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들 |
US10055267B2 (en) | 2015-03-04 | 2018-08-21 | Sandisk Technologies Llc | Block management scheme to handle cluster failures in non-volatile memory |
US10388400B2 (en) | 2015-05-18 | 2019-08-20 | SK Hynix Inc. | Generalized product codes for flash storage |
US10498366B2 (en) | 2016-06-23 | 2019-12-03 | SK Hynix Inc. | Data dependency mitigation in parallel decoders for flash storage |
US10484020B2 (en) | 2016-02-03 | 2019-11-19 | SK Hynix Inc. | System and method for parallel decoding of codewords sharing common data |
US10439649B2 (en) * | 2016-02-03 | 2019-10-08 | SK Hynix Inc. | Data dependency mitigation in decoder architecture for generalized product codes for flash storage |
US10523245B2 (en) | 2016-03-23 | 2019-12-31 | SK Hynix Inc. | Soft decoder for generalized product codes |
JP6840591B2 (ja) * | 2017-03-24 | 2021-03-10 | キオクシア株式会社 | 復号装置 |
US10553300B2 (en) * | 2017-06-09 | 2020-02-04 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method of detecting address decoding error and address decoder error detection system |
DE102018104233A1 (de) * | 2017-06-09 | 2018-12-13 | Taiwan Semiconductor Manufacturing Co., Ltd. | Verfahren zum erkennen eines adressendecodierfehlers und adressendecodierfehler-erkennungssystem |
GB201710839D0 (en) * | 2017-07-05 | 2017-08-16 | Irdeto Bv | Data protection |
JP6958329B2 (ja) | 2017-12-20 | 2021-11-02 | トヨタ自動車株式会社 | ハイブリッド車両 |
US20210141764A1 (en) * | 2019-11-13 | 2021-05-13 | Western Digital Technologies, Inc. | Metadata verification in a distributed storage system |
KR20220139199A (ko) | 2021-04-07 | 2022-10-14 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
US11940872B2 (en) | 2022-04-21 | 2024-03-26 | Analog Devices International Unlimited Company | Error correction code validation |
Citations (1)
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 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4597083A (en) * | 1984-04-06 | 1986-06-24 | Ampex Corporation | Error detection and correction in digital communication systems |
US5027357A (en) * | 1988-10-14 | 1991-06-25 | Advanced Micro Devices, Inc. | ECC/CRC error detection and correction system |
JPH04222029A (ja) * | 1990-12-21 | 1992-08-12 | Sony Corp | エラー訂正方法 |
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 |
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 |
US5691994A (en) * | 1995-05-08 | 1997-11-25 | Western Digital Corporation | Disk drive with fast error correction validation |
-
1997
- 1997-11-14 US US08/970,918 patent/US6052815A/en not_active Expired - Lifetime
-
1998
- 1998-09-19 TW TW087115657A patent/TW432279B/zh not_active IP Right Cessation
- 1998-10-26 KR KR1019980044862A patent/KR100562832B1/ko active IP Right Grant
- 1998-11-16 JP JP32462398A patent/JP4346135B2/ja not_active Expired - Lifetime
Patent Citations (1)
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 |
Also Published As
Publication number | Publication date |
---|---|
JP4346135B2 (ja) | 2009-10-21 |
TW432279B (en) | 2001-05-01 |
JPH11282701A (ja) | 1999-10-15 |
US6052815A (en) | 2000-04-18 |
KR19990044903A (ko) | 1999-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100562832B1 (ko) | 랜덤화된데이터내의에러를정정하기위한에러정정처리기및그방법 | |
KR100573356B1 (ko) | 코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템 | |
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 | |
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 | |
JP3966993B2 (ja) | 積符号の誤り訂正および並行検査 | |
US7231578B2 (en) | Techniques for detecting and correcting errors using multiple interleave erasure pointers | |
US6363512B2 (en) | Digital data recording channel | |
US5946328A (en) | Method and means for efficient error detection and correction in long byte strings using integrated interleaved Reed-Solomon codewords | |
US6275965B1 (en) | Method and apparatus for efficient error detection and correction in long byte strings using generalized, integrated, interleaved reed-solomon codewords | |
JP2007087529A (ja) | 信号復号装置、信号復号方法、および記憶システム | |
US6832042B1 (en) | Encoding and decoding system in an optical disk storage device | |
US8625220B2 (en) | Constrained on-the-fly interleaver address generator circuits, systems, and methods | |
US7340663B2 (en) | Method and apparatus for embedding an additional layer of error correction into an error correcting code | |
JP3992443B2 (ja) | 符号化方法、復号方法、符号化回路、復号回路、記憶装置、記憶媒体、通信装置 | |
JP4294407B2 (ja) | 信号処理方法及び信号処理回路 | |
KR100691065B1 (ko) | 고밀도 광 기록매체에서의 데이터 에러정정 코드생성방법과 이에 의한 에러 정정 방법, 그리고 그 장치 | |
JPH08509351A (ja) | セミサイクリックコードに基づく誤り補正可能データ伝送方法及び装置 | |
JP2001189059A (ja) | 記録再生装置 | |
JP2000306342A (ja) | 誤り訂正符号化装置 | |
KR100200052B1 (ko) | 고밀도 컴팩트 디스크용 오류정정 복호기 | |
JPH0529964A (ja) | データエラー訂正デイコーデイング方法およびその装置 | |
US20080263427A1 (en) | System and Method for Optical Disc Encoding/Decoding | |
KR20030073532A (ko) | 이중 피오 신드롬 연산장치 및 방법 |
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: 20130227 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20140226 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20150227 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20160225 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20170308 Year of fee payment: 12 |