KR100305618B1 - 다목적에러교정계산회로 - Google Patents

다목적에러교정계산회로 Download PDF

Info

Publication number
KR100305618B1
KR100305618B1 KR1019970701715A KR19970701715A KR100305618B1 KR 100305618 B1 KR100305618 B1 KR 100305618B1 KR 1019970701715 A KR1019970701715 A KR 1019970701715A KR 19970701715 A KR19970701715 A KR 19970701715A KR 100305618 B1 KR100305618 B1 KR 100305618B1
Authority
KR
South Korea
Prior art keywords
register
bank
circuit
value
feedback
Prior art date
Application number
KR1019970701715A
Other languages
English (en)
Other versions
KR970706657A (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 KR970706657A publication Critical patent/KR970706657A/ko
Application granted granted Critical
Publication of KR100305618B1 publication Critical patent/KR100305618B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/726Inversion; Reciprocal calculation; Division of elements of a finite field
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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
    • 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

비트 지향 에러 교정 회로 계산 회로는 비트 지향의 컨벌루션, 반전, 곱셈, 덧셈 및 양방향 기저 변환을 포함하는 수많은 수학적 연산을 수행한다. 이 회로는 제1의 레지스터 뱅크(400) 및 제2의 레지스터 뱅크(401)에 대한 내부 곱의 연속적 결과를 산출하기 위해 컨벌루션 회로로 구성되는 3개의 레지스터 뱅크(400, 401, 402)를 포함한다. 레지스터 뱅크(400, 401)는 레지스터 뱅크(400, 402)내 각각의 피드백 회로(450, 452)로부터 출력되는 피드백 신호의 선택적인 조합 특히 상수 값을 포함하는 다수의 직렬 멀티비트 값들 중 선택된 것을 뱅크로 로딩하기 위하여 레지스터 뱅크(400, 401)의 직렬 입력 단자에 연결되는 뱅크 로딩 스위치(440, 441, 442)를 구비한다. 피드백 곱셈기의 값은 데이터의 에러 교정과 관련된 값의 필드 길이에 따라 선택적으로 변화시킬 수 있다. 또한, 합산 회로(320), 비교 회로(360) 및 입력 기준 표시의 m 비트 입력 값을 출력 기준 표시로 변환하기 위한 양방향 변환 장치를 포함한다.

Description

[발명의 명칭]
다목적 에러 교정 계산 회로
[도면의 간단한 설명]
제1도는 본 발명의 실시예에 따른 CD롬 에러 교정 시스템의 구성도.
제2도는 제1도의 CD롬 에러 교정 시스템에서 발생부의 구성도.
제2(a)도는 제2도의 발생부의 일부 회로 구성도.
제3(a)도 및 제3(b)도는 제1도의 CD롬 에러 교정 시스템의 계산부를 도시한 구성도.
제4도는 제3(b)도의 계산부에 포함되는 컨벌루션 회로의 구성도.
제5도는 제3(a)도 및 제3(b)도의 계산부에 포함되는 기준 변환 회로의 구성도.
제6도는 제1도의 CD롬 에러 교정 시스템에서 교정부의 구성도.
제7도는 제1도의 CD롬 에러 교정 시스템에서 EDC 체커 부분의 구성도.
제8(a)도는 종래 서브코드 팩의 포맷을 나타낸 도면.
제8(b)도는 버퍼에 저장된 코드워드의 인터리브된 두 블록을 나타낸 도면.
제9도는 제1도의 CD롬 에러 교정 시스템의 2단계(포인터를 가지는 컴퓨터데이터) 연산을 보여주는 차트.
제10도는 포인터의 처리에 관련된 단계를 나타낸 플로우차트.
제11도는 α 기준 표시에서 β 기준 표시로 값을 변환시키기 위해 본 발명의 계산기 회로에 의해 수행되는 단계를 나타낸 플로우차트.
제12도는 버퍼 포인터 처리에 있어 두 경우에 관련하여 본 발명의 계산기 회로에 의해 수행되는 여러 단계를 나타낸 플로우차트.
제13도는 에러 패턴 발생에 있어 첫 번째 경우와 관련한 기본 단계를 나타낸 플로우차트.
제14도는 에러 패턴 발생의 2번째 경우와 관련한 기본 단계를 나타낸 플로우차트.
제15도는 서브코드를 처리할 때 제1도의 CD롬 에러 교정 시스템에 의해 수행되는 단계를 나타내고 더 나아가 제15도와 제15(a)도, 제15(b)도 및 제15(c)도 사이의 관계를 보이는 플로우차트.
제15(a)도는 서브코드에 대한 DED(2중 에러 검출)동작에 관련된 처리단계를 나타내는 플로우차트.
제15(b)도는 서브코드에 대한 SED(단일 에러 검출)동작에 관련된 처리단계를 나타내는 플로우차트.
제15(c)도는 서브코드에 대한 QEC(4중 에러 검출)동작에 관련된 단계를 보여주는 플로우차트.
* 도면의 주요부분에 대한 부호의 설명
10 : 시스템 제어기 10 : 버퍼
20 : 발생부 30 : 계산부
60 : 교정부 70 : EDC 체커
200 : 발생부의 제어부 202 : 게이트
204, 362, 364, 422, 428, 496 : 가산기
206, 208, 400, 401, 402 : 레지스터
210, 450, 452 : 피드백 회로 226, 228 : 곱셈기
214, 216, 218, 220 : 인에이블 라인
230, 304, 310, 354, 424, 430, 440, 443, 444, 630, 635, 660: 멀티플렉서
240 : 곱셈 인에이블 스위치 300 : 스토리지 레지스터
302 : 매개 레지스터 320, 670 : 합산회로
322, 324, 326, 426, 446, 480, 482, 484, 498, 672 : 앤드 게이트
328, 330, 445, 460, 462, 470, 472, 490, 492, 674 : 익스크루시브 오아 게이트
350 : 서브코드 조절부 360 : 비교회로
380 : 인버터 440, 441, 442 : 로딩 스위치
610 : 에러 판독 레지스터 620 : 에러 매개 레지스터
640 : 포인터-판독 레지스터 650 : 포인터 매개 레지스터
[발명의 상세한 설명]
본 발명은 1993년 11월 4일 크리스 주크(Chris Zook)에 의해 출원된 “유한 필드 인버전”이란 명칭의 미국 특허 출원 08/147,758호의 일부계속출원이며, 본 출원과 동시에 제출된 하기의 특허 출원들과 연관된다. 즉, 1994년 9월 16일에 제출된 “다목적 에러 교정 시스템”이란 명칭의 미국 특허 출원 08/307,259호와, 1994년 9월 16일에 제출된 “CRC/EDC 체커 시스템”이란 명칭의 미국 특허 출원 08/306,917호와 연관되며, 상기 모든 특허 출원은 본 발명에서 참고로 인용된다.
본 발명은 데이터의 에러 교정을 위한 에러 교정 시스템에 관한 것이며, 특히 이러한 에러 교정에 연관된 수학적인 연산을 수행하는 회로에 관한 것이다.
데이터의 에러 교정에 관계된 값을 표시하는 전기적인 신호에 관하여 동작을 수행하며 레지스터의 제1, 제2 및 제3 뱅크와, 승산기 및 가산기를 포함하는 회로는 유럽특허출원 EP-A-0 096 165호 공보 및 미국특허 4,994,995호 공보로부터 개시되어 있다.
특히, EP-A-0 096 165호 공보는 갈로이스(Galois) 필드의 요소를 분할하는 장치를 설명하고 있으며, 갈로이스 필드 GF(2m)의 하나의 요소 αi를 표시하는 데이터는 제 1의 선형 시프트 레지스터에 저장되며, 갈로이스 필드 GF(2m)의 다른하나의 요소 αj를 표시하는 데이터는 제 2의 선형 시프트 레지스터에 저장된다. 갈로이스 필드 GF(2m)의 요소 2m은 n개의 그룹으로 분할된다. n개의 그룹에서 각각 특별한 지점에 위치하는 n개의 요소의 역수의 테이블은 디코더 및 엔코더를 포함하는 변환기에 저장된다. 요소 αi를 표시하는 데이터는 제2의 선형 시프트 레지스터로부터 디코더로 공급된다 요소 αi의 역수를 표시하는 데이터가 변환기에 저장된다면, 그들은 엔코더로부터 읽혀진다. 그들이 변환기에 저장되지 않는다면, 제1 및 제2의 선형 시프트 레지스터는 그 역수 데이터 중 어느 하나가 그 엔코더로부터 판독될 때까지 NOR 게이트 및 AND 게이트에 의해 발생되는 제어펄스에 의해 N배 시프트됨으로써, 제 1의 레지스터는 αj+N을 표시하는 데이터를 공급하며 제 2의 레지스터는 α-(j+N)을 표시하는 데이터를 공급한다. 승산기는 역수 α-j에 의해서 요소 αi를 승산하거나 역수 α-(j+N)에 의해 αi+N를 승산함으로써, 나눗셈: ai÷αJ(=αi-j)을 수행한다.
미국특허 제4,994,995호 공보에서 개시된 장치는 2n개 요소로 구성된 유한 갈로이스 필드 GF(2n)에서 요소로 되고 v 및 u가 각각 n비트 벡터로 되는 값 v/u를 계산하기 위한 비트-직렬 나눗셈 방법을 수행하도록 설계되었다.
필드에서 각 요소의 n비트 성분은 필드의 정규 기준에서 요소의 좌표이다. 벡터 u는 정규 기준으로부터 2중 기준으로 변환된다. 2중 기준에서 백터 u는 또한 0에서 (n-1)까지의 값을 취하는 지수 i에 따라 정렬된 유한 필드에서 n비트를 구성한다. 변환된 백터 u의 모든 비트 n은 병렬로 시프트 레지스터로 로드되며, 그후 n비트 백터 u의 역수를 비트방식으로 발생하는 룩업 테이블로부터 단일의 비트 출력 w0을 산출하도록 2중 기준으로부터 정규기준으로 변환된다. 시프트 레지스터에서 비트는 상기 룩업 테이블과 연속하는 추가의 단일 비트 출력 wi를 발생시키도록 (n-1)번 시프트된다. 그후 각각의 비트 wi는, (n-1)번의 시프트를 종료했을 때 비트-직렬 나눗셈 결과 v/u를 제공하는 그들 곱의 누적 합계를 발생시키도록 백터 v 및 2중 기준에서의 대응 요소 ci로 승산된다.
전형적으로 에러 교정 연산은 다수의 기준 표시 (예를 들어, α 기준 표시 및/또는 β 기준 표시)로 수행되고, 때때로 다항식 계수의 발생 이상의 그 무엇에 상당히 연관되어 있다. 실제로, 기준 변환(α 형태에서 β 형태로의 변환 및 그 반대의 경우)에 부가하여, 곱셈과 반전 및 덧셈 연산을 포함하는 다른 연산들이 종종 행해진다.
베레캄프-마세이(Berlekamp-Massed)형의 컨벌루션 회로(convolution circuit)를 포함하는 일반적인 에러 교정 회로들이 주로 병렬 데이터 전송 모드에서 연산되는 반면, 데이터의 직렬 전송이 회로의 크기를 상당히 줄이고(예를 들어, 병렬 버스들을 피함으로써), 이에 따라 회로 비용을 줄일 수 있음이 알려졌다. 그러나 지금까지 기준 변환, 내부 곱 발생, 곱셈, 반전 그리고 덧셈 연산을 포함하는 다수의 수학적인 직렬 연산들을 수행하는 회로가 부족하였다.
에러 교정 연산이 수행되는 한 예가 컴팩트 디스크(CD) 드라이브이다. CD는 처음에 음성녹음과 재생에 사용되었다. 오디오를 위해 CD 드라이브에 의한 CD의 조작 처리는 랜덤 억세스에 관계되지 않고, 예를 들어 디스크상에 녹음된 상이한 오디오 작품(예를 들어, 노래)에 대한 탐색은 비교적 느린 속도에서 일어난다. 더욱이, 사람의 귀가 본질적으로 실시간으로 연속하여 재생된 오디오 신호를 받아들여 처리하기 때문에 CD 드라이브가 모든 에러들을 교정해야 할 필요는 없다. 만일 오디오의 기록에 있어 교정할 수 없는 에러가 발생한다면, 에러 교정을 위해 에러가 존재하는 CD의 부분을 백업(back up)하고 재판독(re-read)하는 것은 실질적으로 불가능하다 그 대신, 교정할 수 없는 에러는 일반적으로 블랭크 아웃 및/또는 다른 시간근사(time-proximate) 신호들에서 추출된(예를 들어, 평균화한) 신호로 대체된다.
CD상의 녹음은 본질적으로 나선형 경로에서 이루어지는데, 이 경로는 상이한 반경들로 이루어진 트럭을 가지는 것으로 개념화 된다. 오디오용으로 CD는 다수의 프레임을 가지도록 포맷된다. 각 프레임은 2352 (8-비트)바이트 크기의 디지털 오디오 데이터를 가진다.
오디오용으로, CD는 그 위에 녹음되는 작품을 위한 디지털 오디오 데이터를 포함하기 위해서 뿐만 아니라, 서브코드(subcode)까지 포함할 수 있도록 포맷된다. 서브코드는 일정한 간격으로 CD 위의 오디오 데이터 사이로 분산된다. 분산된 서브코드는 조합되어 팩(pack)으로 그룹화된다. 제8(a)도에 도시한 바와 같이, 각 서브코드 팩은 24 (6-비트)바이트를 가진다. 따라서, 각 서브코드 바이트의 필드 길이(6 비트)는 데이터 바이트의 필드 길이(8 비트)와 서로 다르다.
제8(a)도에 도시한 바와 잘이, 서브코드 팩은 “Q” 부분과 “P”부분으로 분할되는 것으로 개념화된다. 각 서브코드 팩의 “Q”부분은 첫 번째 네 개의 6비트 심벌들(예를 들어, 0∼3 바이트)로 이루어지고, 각 서브코드 팩의 “P”부분은 그 나머지 심벌들(예를 들어, 4∼23 바이트)로 이루어진다. 본 발명의 이해를 위해 꼭 필요한 것은 아니지만, 서브코드는 트랙이 전환되었을 때 트랙이 오디오 데이터이든 아니든 상관없이 노래가 시작된 이후로 부터의 시간을 나타내는 표시를 제공하기 위해서 사용되고 있음을 이왕 언급한 차에 설명하는 바이다. 몇몇 응용에 있어서, 오디오 출력(예를 들어, 가라오케)을 수반하는 시각적 표시를 위한 그래픽 정보가 서브코드에 저장될 수 있다.
초기에는 CD가 오디오를 위해 사용되었지만, 최근에는 컴퓨터 데이터의 기록에 또한 사용되고 있다. 컴퓨터 데이터의 견지에서 보면, CD는 2352(8-비트)바이트를 다수개 포함하기 위하여 포맷된다. 서브코드들은 CD에 기록되는 컴퓨터 데이터에서 사용되지 않는다.
CD가 재생될 때, 프레임(오디오용)이나 섹터(컴퓨터 데이터용)와 관계되는 부분들이 버퍼(예를 들어, 램)로 로드된다. 이 버퍼는 각 프레임/섹터를 위한 2064 바이트의 데이터를 보유한다.
모든 CD 데이터는 CIRC ECC에 의해 최하위 레벨로 보호된다. 컴퓨터 데이터의 기록/재생에 관련하여, 어떤 CD 시스템들은 레이어드(layered) ECC라 일컬어지는 부가적인 에러 교정 능력을 제공한다. 에러 교정 수행을 위하여, 버퍼에 저장된 각 프레임/섹터는 2블록 또는 인터리브(interleave)를 포함하는 것으로 개념화 된다. 제8(b)도는 프레임/섹터를 위한 짝수의 블록/인터리브와 홀수의 블록/인터리브를 도시한다. 프레임/섹터의 2블록들은 프로덕트 코드 스킴을 사용하는 에러 교정 코드에 의해 동작한다. 각 블록에서, 바이트의 세로 열(column)은 코드워드(codeword)로 이루어진다. 예를 들어, 짝수 블록에서, 0000, 0043, 0086, …, 0989 바이트는 컬럼 코드워드(CWeven0)의 데이터 부분으로 이루어지고, 0001, 0044, 0087, …, 0990 바이트는 컬럼 코드워드(CWeven1)의 데이터 부분으로 이루어지며, 나머지 바이트도 마찬가지이다. 1032와 1075 바이트는 컬럼 코드워드(CWeven0)의 ECC 부분으로 이루어지고, 1033과 1076 바이트는 컬럼 코드워드(CWeven1)의 ECC 부분으로 이루어지며, 나머지 바이트의 경우도 마찬가지이다. 이와 유사하게 코드워드들(CWodd0, CWodd1, …)이 홀수 블록에도 존재한다. 따라서, 각 블록에는 43개의 컬럼 코드워드가 존재하게 된다. 각 블록의 마지막 두 바이트(1030even; 1030odd; 1031even; 1031odd 바이트)는 CRC/EDC 정보를 보유하고 있으며 이에 따라 EDC나 CRC 블록으로 알려져 있다. 몇몇 포맷에서는 CRC 바이트가 블록 데이터 부분의 마지막 바이트에 꼭 필요한 것은 아니다.
예를 들어, 제2도에서 처럼 블록들을 완전하게 다 채우지 않은 데이터 포맷에서는 마지막 데이터의 뒤에 CRC 바이트를 두고 블록들이 다 채워질 때까지 제로 패드 바이트로 CRC 바이트를 뒤따르게 할 수 있다.
각 블록에서 또한, 바이트의 대각선 라인은 대각선의 코드워드로 구성된다. 예를 들어, 제8(b)도의 짝수 블록을 참조하면, 첫 번째 대각선 코드워드는 0000, 0044, 0088, …, 1056, 1100, 0026‥‥‥ 0686, 0730, 1118, 1144 바이트를 포함한다. 따라서, 각 블록에는 42개의 컬럼 코드워드들과 26개의 대각선 코드워드들이 있다.
제8(b)도의 도시는 버퍼 내의 데이터가 코드워드 순서로 저장되지 않는다는 사실을 간과하지 않는다. 예를 들어, 버퍼 내의 섹터는 다음 순서로 저장된 바이트를 가진다. 즉, 짝수 블록의 0000 바이트(0000even), 홀수 블록의 0000 바이트(0000odd), 0001even바이트, 0001odd바이트, …, 1031even바이트, 1031odd바이트를 포함한다.
컴퓨터 데이터가 CD로부터 에러 교정 능력이 있는 시스템에서 수신되면, CIRC ECC는 레이어드(layered) ECC에 의해 사용되어질 에러 포인터를 발생시킨다. CD 드라이브를 위한 에러 교정 시스템에 있어서, 2개의 포인터까지는 각 코드워드에 대해 공급된다. 보통 각 포인터는 정보의 1 비트이다. 통상, 섹터에 대한 포인터 정보는 관련된 섹터의 전후에서 버퍼내에 저장되며, 이러한 방법으로 포인터 코드워드의 바이트가 결정될 수 있다.
따라서, 컴퓨터 데이터를 위하여 CD 시스템용 버퍼는 다수개의 섹터를 저장하며, 또한 각 섹터당 포인터 정보가 저장된다. 이와 유사하게, 오디오 데이터를 위하여 CD 시스템용 버퍼는 그 안에 다수개의 서브코드 팩 뿐만아니라 다수개의 프레임을 저장한다.
본 발명은 청구범위 제1항의 특징부에서 한정하고 있는 에러 교정 회로를 제공하기 위한 것이다.
본 발명에서, 비트 지향(bit-oriented) 에러 교정 계산 회로는 내부곱, 반전, 곱셈, 덧셈 연산 및 양방향 기준 변환을 포함하는 수많은 수학적인 연산을 수행한다. 이 회로는 제1의 레지스터 뱅크 및 제2의 레지스터 뱅크에 대해 내부곱의 값을 계산하는 컨벌루션 회로(convolution circuit)와 관련된 3개의 레지스터 뱅크를 포함한다. 각 레지스터 뱅크는 다수개의 1비트 레지스터(플립 플롭)를 포함한다.
각 레지스터 뱅크는 멀티비트(mulitibit) 값이 그 안에 로드될 수 있도록 직렬 입력 단자를 가진다. 뱅크 로딩 스위치가, 각각의 피드백 회로로부터 피드백 신호의 선택적인 게이팅(gating)을 포함하는, 뱅크내 복수의 직렬 멀티비트 값 중 선택된 값의 로딩을 위하여 각 레지스터 뱅크에 제공된다. 적어도, 복수의 직렬 멀티비트 값 중 선택된 값은 상수 값을 가진다.
이 회로는 더 나아가 선택된 로딩 스위치들로 결합되는 제1 및 제2의 멀티비트 스토리지 레지스터들을 포함한다. 제1 및 제2의 멀티비트 스토리지 레지스터는 직렬 시프트 레지스터이며, 여기서 제2의 멀티비트 스토리지 레지스터는 하기에 기술할 기준 변환을 유용하게 하는 양방향 시프트 레지스터이다.
비트 지향 에러 교정 계산 회로는 가산 회로와 비교 회로를 더 포함한다. 가산 회로는 제1의 스토리지 레지스터와 제2의 스토리지 레지스터 및 컨벌루션 회로의 내부 곱 출력들이 결합되어 구성된다. 이 가산 회로의 출력 단자에는 제1의 스토리지 레지스터가 선택적으로 결합된다. 비교 회로는 제1의 레지스터 뱅크와 제2의 레지스터 뱅크 및 제3의 레지스터 뱅크 중 적어도 2개의 내용을 비교한다.
제1의 레지스터 뱅크와 제3의 레지스터 뱅크는 각 뱅크내 선택된 레지스터가 결합되어 구성된 피드백 곱셈기를 구비하는데, 상기 피드백 곱셈기의 값은 피드백 곱셈기가 결합되어 구성된 레지스터를 선택함으로써 선택적으로 변화시킬 수 있다. 따라서, 피드백 곱셈기의 값은 데이터의 에러 교정과 판련된 필드 길이의 값에 따라 선택적으로 변화시킬 수 있게 된다. 이로써, 8비트 바이트(실시예에서와 같은) 또는 6비트 바이트(오디오 서브코드용)의 처리를 가능하게 한다.
비트 지향 에러 교정 계산 회로는 m 비트의 입력 값을 입력 기준 표시로부터 출력 기준 표시로 변환하기 위한 양방향 변환 장치를 포함한다. 이때, 최상위 비트를 “1”로 하고 그 나머지를 “0”으로 하기 위하여 β 에 기준한 표시의 필드요소 α0가 선택된다면, 입력 기준 표시와 출력 기준 표시 중 하나는 α 기준 표시이고 다른 입력 기준 표시와 출력 기준 표시는 β 기준 표시이다.
변환 장치는 입력 기준 표시에서 입력 값을 저장하고 입력 기준 표시에 따라 미리 선택된 비트 순서로 입력 값을 직렬로 출력하기 위한 입력 레지스터를 포함한다. 이 입력 레지스터는 양방향 시프트 레지스터이다. 제1의 레지스터 뱅크는 변환 메모리를 형성하며, 그와 관련된 피드백 회로는 피드백 상수로 변환 메모리내 현재 값을 곱하여 피드백 팩터를 생성한다. 가산기는, 수 m 덧셈 연산이 수행되는 동안, 하기에 기술한 값에 대응하는 비트를 더한다. 즉, (1)입력 레지스터로부터 출력되는 입력 값과 (2)변환 메모리의 최상위 비트의 위치로 로드되고 나머지 덧셈 연산 동안 변환 메모리를 통해 직렬로 시프트됨으로써 m 수 덧셈 연산의 끝에서 m 비트 입력 값의 출력 기준 표시값을 변환 메모리내로 제공하는 합산값을 생성시키는 피드백팩터.
기준 변환 장치의 입력 기준 표시가 α 기준 표시일 때, 입력 값은 그의 최상위 비트로부터 최하위 비트로 출력된다. 기준 변환 장치의 입력 기준 표시가 β 기준 표시일 때, 입력 값은 그의 최하위 비트로부터 최상위 비트로 출력된다. 출력 기준이 α 기준 표시일 때, 그 출력은 반전된 비트 순서로 된다. 이 경우, 변환 메모리는 양방향 시프트 레지스터로 연결되어 입력레지스터가 “로우”에서 “하이”로 시프트되는 동안 α 기준 입력값이 입력 레지스터로 직렬로 역 시프트된다.
따라서, 비트 지향 에러 교정 계산 회로의 구성요소들(예를 들어, 레지스터)은 다수의 계산적 연산에 관계된다. 본 실시예에서, 계산적 연산들은 CD 드라이브로부터 얻어지는 데이터의 에러 교정과 관련하여 발생한다.
앞서 기술한 본 발명의 목적과 그 외의 목적, 특징 및 장점들은 동일부분을 다양한 관점에서 특징짓는 도면을 참고로 실시예의 설명을 통해 더욱 명백해질 것이다.
제1도는 시스템 제어기(10)를 통하여 버퍼(가상선(15)으로 표시된)와 통신하는 CD롬 에러 교정 시스템을 나타낸다. 버퍼는 CD롬 시스템이 현재 컴퓨터 데이터를 처리하느냐 디지털 오디오 데이터를 처리하느냐에 따라 그 안에 다수개의 섹터 또는 프레임을 저장한다. 컴퓨터 데이터를 처리할 때, 버퍼는 또한 상기한 바와 같이 그 안에 포인터 비트를 저장하고 있다. 디지털 오디오 데이터를 처리할 때, 버퍼는 제8(a)도에 도시하고 상기한 바와 같이 데이터 내에 산재되어 서브코드 팩을 산출하는 서브코드를 보유한다. 인터리빙(interleaving) 기술이 본 발명에서 설명하는 특별한 에러 교정 방법에 적용되어 데이터의 섹터가 코드워드의 2 블록 즉, 제8(b)도에 도시한 바와 같이 짝수 블록과 홀수 블록을 포함하는 것으로 개념화된다. 데이터의 바이트는 데이터 버스(BD)를 경유하여 버퍼와 제어기(10) 사이에서 이동하며, 제어정보를 포함하는 기타의 정보가 제어정보가 제어버스(BBUS) 상에서 교환된다.
제1도의 CD롬 에러 교정 시스템은 제어기 또는 제어부(20)와, 계산기 또는 계산부(30)와, 교정기 또는 교정부(60)와, EDC 체커부(70)를 더 포함한다. 제1도의 CD롬 에러 교정 시스템의 모든 동작은 예를 들어 버스(CBUS) 상에서 전달되는 제어 및 기타 신호들을 사용하여 제어기(10)에 의해 제어된다. 이들 제어 및 기타 신호들은 본 시스템의 구성부를 설명하는 다른 도면에 도시되어 있다.
[구조]
[발생기]
제2도는, SYNGEN으로 알려진 발생기(20)를 더 상세히 도시한다. 이하 설명되겠지만, 컴퓨터 데이터/포인터 모드에서 발생기(20)는 DATA_TIME 단계 동안 코드워드를 위한 신드롬(syndrom)을 발생시키고 PTR_TIME 단계 동안 m 비트 에러 포인터 값을 발생시킨다. 서브코드 모드에서 발생기(20)는 서브 코드를 위한 신드롬을 발생시킨다.
발생기(20)는 그 내에 제어기를 포함하거나 발생기 제어기(200)를 구비하는데, 이들은 버스(CBUS)내에 포함된 리드선으로 연결된 시스템 제어기(10)의 제어하에 제어 동작을 한다. 제어기는 더 나아가 게이트 칩(202)과, 2개의 가산기(204) 즉, 가산기{204(0)} 및 가산기{204(1)}와; 2개의 직접(immediate) 레지스터(206) 즉, 레지스터{206(0)} 및 레지스터{206(1)}와, 2개의 최종(ultimate) 레지스터(208) 즉, 레지스터{208(0)} 및 레지스터{208(1)}; 2개의 반전성(versatile) 피드백 회로(210) 즉, 피드백 회로{210(0)} 및 피드백 회로{210(1)}를 포함한다. 그 외에도, 발생기(20)는 2 개의 오아 게이트(212) 즉, 오아 게이트{212(0)} 및 오아 게이트{212(1)}를 포함한다.
버퍼로부터의 데이터는 시스템 제어기(10)로부터 평행버스(GDAT)를 통해 발생기(20)로 전송되고, 게이트(202)의 핀(DI)에 가해진다. 도시된 시스템의 인터리브 동작의 관점에서, 2 바이트의 데이터가 데이터 개별 전송 중에 발생기(20)에 연속적으로 인가된다. 특히, 짝수 인터리브로부터 데이터 바이트의 각 전송은 처음에 게이트(20)에 인가되며 그 뒤로 홀수 인터리브로부터의 데이터 바이트가 따르게 된다 제2도에 도시한 바와같이, 발생기(20)는 실질적으로 2개의 종속 발생기로 이루어진다. 즉, 가산기{204(0)}, 레지스터{206(0)}, 레지스터{208(0)}, 피드백 회로{210(0)}로 이루어지는 S0신드롬 종속 발생기와; 가산기{204(1)}, 레지스터{206(1)}, 레지스터{208(1)} 및 피드백 회로{210(1)}로 이루어지는 S1신드롬 종속 발생기로 이루어진다. 예들 들어, 컴퓨터 데이터/포인터 모드 동안, 게이트(202)는 바이트를 짝수 인터리브로부터 짝수 종속 발생기로 그리고 홀수 인터리브로부터 홀수 종속 발생기로 향하도록 한다.
각각의 종속 발생기는 제2(a)도에서 처럼 함수 방식으로 교대로 표시된다. 인에이블 라인(214)위에 인가된 신호는 게이트(202)가 바이트를 가산기(204)로 공급하게 만든다. 인가된 바이트는 피드백 회로(210)를 통해 조합된 신호와 가산된다. 가산기(204)에서 합산되어진 결과는 먼저 즉시(immediate) 레지스터(206)에 저장되고, 그 다음 최종(ultimate) 레지스터(208)로 시프트된다. 따라서, 최종(ultimate) 레지스터(208)에 저장된 내용들이 피드백 회로(210)를 경유하여 가산기(204)로 피드백될 수 있다.
제2(a)도는 발생기(20)의 선택적인 구성 특히, 피드백 회로(210)의 선택적 구성을 나타낸다. 예를 들어, 피드백 회로(210)는 3개의 교번 피드백 라인 즉, 피드백 라인(216, 218, 220)을 포함하는 것으로 도시된다. 피드백 라인(216, 218)은 그 위에 구비된 곱셈기를 보유하는 반면, 피드백 라인(220)는 곱셈기를 보유하지 않는다. 곱셈기(226)는 αsc(서브코드가 처리될 때 사용되었던)로써 예시적으로 표시되는 피드백 값에 의해서 곱셈 동작하고, 곱셈기(228)는 α (서브코드가 처리될 때 사용되지 않았던)로써 예시적으로 표시되는 피드백 값에 의해서 곱셈 동작을 한다. 곱셈기(226, 228)의 출력 단자는 곱셈기 선택 스위치(멀티플렉서(230))의 개별적인 교번 입력 단자에 연결된다. 곱셈기 선택 스위치(230)의 출력 단자는 곱셈 인에이블 스위치(곱셈기, 240)의 제1의 입력 단자에 연결되고, 스위치(240)의 제2의 입력 단자에는 피드백 라인(220)이 연결된다. 최종 레지스터(208)에 저장된 값이 피드백 곱셈기에 의해 곱해질 때, 신호(ENA_MUL)는 스위치(230)에 접속된 신호(ENA_SC)에 따라 라인(216)위의 피드백 신호(곱셈기(226)에 의해 곱해진)나 또는 라인(218)위의 피드백 신호(곱셈기(228)에 의해 곱해진)를 통해 개통되는 스위치(240)에 접속된다.
차후에 설명되겠지만, 발생기(20)가 신드롬을 발생시키는 데에 사용될 때(DATA_TIME 단계의 연산 동안), 레지스터{208(0)}는 짝수 인터리브로부터 코드워드를 위하여 발생되는 제1의 신드롬(S0)을 저장하고, 레지스터{206(0)}는 홀수 인터리브로부터 코드워드를 위하여 발생되는 제1의 신드롬(S0)을 저장하며, 레지스터(208(1))는 짝수 인터리브로부터 코드워드를 위한 제2의 신드롬(S1)을 저장하고, 레지스터{206(1)}는 홀수 인터리브로부터 코드워드를 위한 제2의 신드롬(S1)을 저장한다. 발생기(20)가 포인터를 발생시키는 데에 사용될 때(PTR_TIME 단계의 연산 동안), 짝수 인터리브 코드 워드를 위한 제1의 포인터는 레지스터{208(0)}에 저장될 것이고, 짝수 인터리브 코드워드를 위한 제2의 포인터는 레지스터(208(1))에 저장될 것이며, 홀수 인터리브 코드워드를 위한 제1의 포인터는 레지스터{206(0)}에 저장될 것이고, 홀수 인터리브 코드워드를 위한 제2의 포인터는 레지스터{206(1)}에 저장될 것이다. 발생기(20)가 서브코드를 위한 신드롬을 발생시키는 데에 사용될 때, 서브코드 신드롬(S0, S1, S2, S3)은 레지스터{208(0), 208(1), 206(0), 206(1)}에 각각 저장된다.
발생기내의 레지스터{208(0), 208(1)}에 저장된 값은 계산부(30)로 전송될 수 있다. 레지스터{208(0), 208(1)}로부터의 전송은 제2도에 도시한 바와 같이 버스(S0, S1)를 통해서 이루어지며, 이들은 또한 제1도에 도시한 바와 같이 버스(S01, S11)로 새롭게 명명된다.
[구조]
[계산부]
계산부(30)는 제3(a)도와 같은 서브(sub) 전/후처리부와 제3(b)도와 같은 서브 실행부를 포함한다. 이렇게 합쳐진 서브 전/후처리부와 서브 실행부는 곱셈, 반전, 기준 변환 및 내부 곱 형성을 부가적으로 포함하여 수많은 직렬 연산을 수행하는 다목적 계산 회로를 형성한다.
계산부(30)의 서브 전처리부는 제3(a)도의 윗부분의 반쪽 부분에 도시하였고, 반면 서브 후처리부는 제3(a)도의 아랫부분의 반쪽 부분에 도시하였다. 서브 전처리부는 2개의 멀티비트 스토리지 레지스터(300) 즉, 제1의 멀티비트 스토리지 레지스터(300(0))와 제2의 멀티비트 스토리지 레지스터{300(1)}를 포함한다. 각 스토리지 레지스터(300)는 매개 스토리지 레지스터(302)와 연결된다. 즉, 스토리지 레지스터(300(0))는 매개 레지스터(302(0))로부터 입력을 전달받아 연결되고, 스토리지 레지스터{300(1)}는 매개 레지스터{302(1)}로부터 입력을 전달받아 연결된다. 각 매개 레지스터(302)로의 데이터의 진입은 스위치(예를 들어, 멀티플렉서, 304에 의해 제어된다. 멀티플렉서{304(0)}는 레지스터{208(0)}의 출력(제3(a)도에서는 S0로 제1도에서는 S01로 버스위에 접속된)이나 레지스터{300(0)}의 출력 단자의 출력을 선택하는 데에 사용된다. 멀티플렉서(304(1))는 레지스터{208(1)}의 출력(제3(a)도에서는 S1으로 제1도에서는 S11로 버스에 접속된)이나 레지스터{300(1)}의 출력 단자를 선택하는 데에 사용된다. 발생기(20)로부터 계산기(30)로의 데이터의 전송과 멀티플렉서(304) 및 매개 레지스터(302)를 통한 스토리지 레지스터(370)까지의 데이터의 전송은 병렬로 이루어진다.
스토리지 레지스터{300(0), 300(1)}와 제2의 멀티비트 스토리지 레지스터는 8비트의 직렬 시프트 레지스터이다. 제5도를 참조하여 차후에 설명하겠지만, 기준 변환 동작에서 중요한 역할을 수행하는 스토리지 레지스터{300(1)}는 양방향 시프트 레지스터이다. 레지스터(300)내에 저장된 값들은 각각에 해당하는 멀티플렉서(304)로의 접속을 위하여 병렬로 판독(read out)되거나, 차후에 설명할 방법으로 제3(b)도의 서브실행부로 직렬로 시프트될 수 있다.
제3(a)도에 도시한 바와 같이, 계산기(30)의 서브 전처리부는 각 레지스터{300(0), 300(1)}에 교번적으로 직렬 공급을 가능하게 하는 레지스터 공급 스위치 또는 멀티플렉서{310(0), 310(1)}를 포함한다. 이때, 매개 레지스터(302)에서 공급되는 값과는 별개의 다른 값이 공급된다.
또한, 계산기(30)의 서브 전처리부는 합산회로(320)를 포함한다. 이 합산회로(320)는 복수개의 앤드 게이트 및 익스크루시브 오아(XOR) 게이트 즉, 앤드 게이트(322, 324, 326) 및 익스크루시브 오아 게이트(328, 330)를 포함한다. 앤드 게이트(322)가 제어신호(SO_TO_SUM)를 받게 되면, 앤드 게이트(322)는 그 비트를 레지스터{300(0)}에서 익스크루시브 오아 게이트(330)의 제1의 단자로 직렬로 패스시킨다. 인가되는 제어신호에 따라, 내부 곱 값(IP, 제3(b)도의 서브 실행부에서 설명한)이나 레지스터{300(1)}에 직렬로 저장된 내용이 익스크루시브 오아 게이트(330)의 제2의 단자로 접속된다. 익스크루시브 오아게이트(330)는 직렬 합산값(S_SUM)을 산출하기 위하여 상기에서 접속된 두 값을 더한다. 이때, 레지스터{300(1)}로 부터의 직렬값 및 그와 결부되는 제어신호(S1_TO_SUM)가 앤드 게이트(326)에 접속되는 동안 직렬값(IP) 및 그와 결부되는 제어신호(IP_TO_SUM)는 앤드 게이트(324)에 접속된다.
상기에서 설명한 바와 같이, 레지스터{300(0)}는 레지스터-공급 멀티플렉서{310(0)}에 직렬로 접속되는 값이 잠정적으로(potentially) 공급된다. 특히, 2개의 공급값은 레지스터{300(0)}에 저장된 내용 그 자체{5(0)} 및 앞서 설명한 직렬 합산값(S_SUM)이다. 이와 유사하게, 레지스터{300(1)}는 레지스터-공급 멀티플렉서{310(1)}에 직렬로 접속되는 값에 의해 잠정적으로 공급된다. 레지스터{300(1)}를 위한 2개의 공급값은 익스크루시브 오아 게이트(328)의 출력(직렬값 IP나 레지스터{300(1)} 그 자체의 직렬 내용) 또는 레지스터(R1)에서 직렬로 출력되는 내용들(차후에 제3(b)도에의 서브실행부에서 설명될)을 포함한다.
또한, 계산기(30)의 서브 전처리부는 서브코드 조절부(350)를 포함한다. 서브코드부(350)는 계산기의 서브실행부에 인가되는 신호(ENA_L_ECC)를 발생시키기 위하여 시스템 제어기(10)로부터 궁극적으로 수신받는 서브코드 표시 신호(즉, ENA_SUB)를 반전시킨다.
더 나아가, 서브코드부(350)는 서브코드가 처리될 때에는 레지스터{300(1)}로부터의 5비트 출력을 출력라인(S1_ALPHA)에 직렬로 접속시키고 그렇지 않으면 레지스터{300(1)}로부터의 7비트 출력을 출력라인(S1_ALPHA)을 직렬로 접속시키는 길이-선택 스위치 또는 멀티플렉서(354)를 포함한다. 차후에 설명하겠지만 출력 라인(S1_ALPHA)은 계산기(30)의 서브 실행부에 접속된다.
계산기(30)의 서브 후처리부는 비교회로(360)를 포함한다. 병렬로 전송되는 신호에 의해 동작하는 비교회로(360)는 2개의 8비트 가산기 즉, 가산기(362, 364)와, 오아 게이트(OR gate, 372, 374) 및 인버터(350)를 포함한다. 가산기(362)는 레지스터{300(1)}에 저장된 내용들과 제3(b)도의 실행 회로로 부터의 값(특히 레지스터 제3의 뱅크로 부터의 값)을 더한다. 가산기(364)는 가산기(362)의 출력값을 제3(b)도의 실행 회로로 부터의 다른 값(특히 레지스터 제1의 뱅크로 부터의 값)에 더한다. 가산기(362)의 출력 단자는 오아 게이트(372)에 접속되고, 이 오아 게이트(372)의 출력 신호(SEDB)는 가산기(362)의 두 입력 신호가 동일한지의 여부를 나타낸다. 이와 유사하게, 가산기(364)의 출력 단자는 오아 게이트(374)에 접속되고, 가산기(364)의 두 입력 신호가 동일할 경우 오아 게이트(374)는 반전된 신호(ROOT)를 출력하게 된다.
계산기(30)의 서브 실행부의 일반적인 구성은 제3(b)도에 도시하고, 서브 실행부의 세부 구성은 제4도에 좀 더 상세히 도시한다. 제3(b)도는 제1의 직렬 레지스터(400), 제2의 직렬 레지스터(401), 제3의 직렬 레지스터(402)를 보여준다. 또한, 제3(b)도는 내부 곱 회로(404), 게이트 회로(426), 가산기 회로(428)를 보여준다. 레지스터(400, 401, 402), 내부 곱 회로(404), 게이트 회로(426) 그리고 가산기 회로(428)가 합쳐져서 베레캄프-마세이(Berlekamp-Massed) 형의 컨벌루션 회로를 구성하는데, 이 회로는 바이트 단위가 아니고 비트 단위이다. 특히, 내부 곱 회로(404)는 제1의 레지스터(400)의 내용과 제2의 레지스터(401)의 내용에 대한 직렬 내부 곱 값(IP)을 생성한다. 가산 회로(428)는 내부 곱 회로(404)에 의해 발생된 내부 곱을 사용하는 제2의 레지스터(401)의 내용 및 제3의 레지스터(402)의 내용을 갱신시킨다.
제3(b)도에 보인 컨벌루션 회로의 세부 구성은 제4도를 참고로 더 상세히 알 수 있다. 예를 들어, 제4도에서 제1의 레지스터(400)는 레지스터(4000-4007)의 뱅크이고, 제2의 레지스터(401)는 레지스터(4010-4017)의 뱅크이며, 제3의 레지스터(402)는 레지스터(4021-4027)의 뱅크임을 보여준다. 본 발명에서 사용된 바와 같이, “레지스터 뱅크”라는 용어는 비트가 직렬로 시프트 되고 컨벌루션 동작에 사용되어지는 어떠한 저장소자라는 의미를 가진다.
제4도는 제1의 레지스터(4000-4007)와, 제2의 레지스터(4010-4017) 및 제3의 레지스터 또는 매개 트랜지스터(4021-4027)를 포함하는 비트 지향의 컨벌루션 회로를 상세히 보여준다. 제4도의 회로를 2진수적인 측면에서 보면, 레지스터들(400), (401), (402)은 각각 1 비트의 플립 플롭이고, 이에 따라, 여기에서 또한 플립 플롭으로 언급된다. 플립 플롭(400)의 출력 핀들은 그들의 내용이 오른쪽으로 시프트 될 수 있도록(즉, 플립 플롭(4007)의 출력이 플립 플롭(4006)으로, 플립 플롭(4006)의 출력이 플립 플롭(4005)으로, 등등) 구성된다. 일반적인 베레캄프-마세이 형 회로에서는 이와 유사한 방법으로, 플립 플롭(400)과 플립 플롭(401)의 결합된 쌍들(동일한 아래첨자를 가지는 쌍)의 출력핀은 앤드 게이트(420)에서 앤드 조합된다. 앤드 게이트(420)의 출력핀에서 출력되는 값은 현재의 모순값(dn, 가산기(4220))로 부터의 출력)과 유사한 값(term)을 발생시키기 위하여 가산기(4220-4226, 이는 GF(2)에서 익스크루시브 오아 게이트임)에 의해 함께 합산된다.
더 나아가, 제4도의 컨벌루션 회로는 그 출력핀이 그와 결합된 가산기(428)의 제1의 입력에 접속되는 복수개의 앤드 게이트(4260-4266)를 포함한다. 즉, 앤드 게이트(4260)의 출력핀은 가산기(4280)의 제1의 출력핀에 접속되고, 앤드 게이트(4261)의 출력핀은 가산기(4281)의 제1의 출력핀에 접속되며, 나머지 또한 동일하게 접속된다. 앤드 게이트(426)의 제2의 입력핀은 가산기(4220)로부터 현재 모순값(dn, 즉, 내부 곱 값 IP)을 얻기 위하여 구성된다. 각 가산기(428)의 제2의 입력핀은 그와 대응하는(즉, 아래첨자가 같은) 플립 플롭(401)의 출력핀에 접속된다. 각 가산기(428)의 출력핀은 상기 설명한 바와 같이 그와 대응하는(즉, 아래첨자가 같은) 3-입력 멀티플렉서(MUX, 424)의 제3의 입력핀에 접속된다. 각 앤드 게이트(426)의 제2의 입력은 왼쪽으로 인접한 매개 플립 플롭(402)의 출력핀에 접속된다.
3-입력 멀티플렉서(MUX, 430)는 각 매개 플립 플롭(402)을 위해 제공된다. 멀티플렉서(4301-4306)는 초기값 “0”을 얻기 위해 접속되는 제1의 입력핀을 가지며, 멀티플렉서(4307)는 초기값 “1” 및 “0”을 얻기 위해 접속되는 제1의 및 제2의 입력핀을 가진다. 멀티플렉서(4301-4306)의 제2의 입력핀은 왼쪽으로 인접해 있는 매개 레지스터(402) 즉, 아래첨차가 하나씩 감소된 레지스터(402)로부터 출력을 얻기 위하여 접속된 것이다. 멀티플렉서(4301-4307)의 제3의 입력핀은 아래첨자가 같은 A 플립 플롭(401)으로부터 출력값을 얻기 위하여 접속된 것이다.
각 A 플립 플롭(401)은 그 자체에 오른쪽에 인접하는 플립 플롭(401)에 접속(상기 설명한 바와 같이 적절한 멀티플렉서(424)의 제2의 입력핀을 통하여)되는 출력핀과, 앤드 게이트(420)에 접속(모순값(dn)의 생성에 이용하기 위하여)되는 출력핀 및 아래첨자가 같은 플립 플롭(402)에 접속(아래첨자가 같은 멀티플렉서(430)를 경유하여)되는 출력핀을 가진다.
따라서, 제4도의 컨벌루션 회로는 B 레지스터(플립 플롭, 400)의 뱅크 B400와, A 레지스터(플립 플롭, 401)의 뱅크 B401 및 매개 레지스터(플립 플롭, 402)의 뱅크 B402를 포함한다. 본 발명에서 사용된 바와 같이, 플립 플롭은 1 비트의 레지스터이고 1 비트 이상의 큰 용량을 가지는 레지스터 또한 본 발명의 다른 실시예에서 사용될 수 있다. 뱅크 B400 및 뱅크B401 내의 플립 플롭의 수는 “m”(본 실시예에서 m = 8개)이고, 뱅크 B4O2 내의 플립 플롭의 수는 “m-1”개 이다.
제4도에 도시된 회로에서 t=0인 α0를 선택하게 되면, 제4도의 회로에 의해 수행되는 반전 동작을 위한 α-t곱수가 1이 된다(이로써 제4도에서 α-t가 없어지 게 된다).
제3(b)도에 도시된 바와 같이, 각 레지스터(400, 401, 402)는 멀티비트의 값이 직렬로 로드될 수 있도록 직렬 입력 단자를 갖는다. 더욱이, 각 레지스터(400, 401, 402)는 다수개의 직렬 멀티비트 값 중 선택된 값이 로드될 수 있도록 직렬 입력 단자를 접속하기 위한 로딩 스위치(하나 또는 그 이상의 멀티플렉서)와 접속된다. 즉, 제1의 레지스터(400)는 제1의 레지스터 로딩 스위치(440)을 가지고, 제2의 레지스터(401)는 제2의 로딩 스위치(441)를 가지며, 제3의 레지스터(402)는 제3의 레지스터 로딩 스위치(442)를 가진다. 좀 더 상세히 말하면, 로딩 스위치(440)는 멀티플렉서(440A, 440B)로 이루어지고, 로딩 스위치(441)는 멀티플렉서이며, 로딩 스위치(442)는 멀티플렉서(443, 444)와 익스크루시브 오아 게이트(445) 및 앤드 게이트(442)로 이루어진다. 차후에 좀 더 상세히 설명하겠지만, 각 로딩 스위치는 교번적으로 선택가능한 입력 라인 세트에 접속된다.
제1의 레지스터(400)와 제3의 레지스터(402)에는 선택되는 로딩 스위치(440, 442)에 따라 선택적으로 사용되는 피드백 회로가 접속된다. 즉, 제1의 레지스터(400)는 피드백 회로(450)와 접속되고 제3의 레지스터(402)는 피드백 회로(452)와 접속된다. 각 피드백 회로(450, 452)는 피드백 곱셈기로 각 레지스터(400, 402)의 내용들을 곱하기 위하여 피드백 회로(450, 452)에 접속된 각 레지스터(400, 402)내의 선택된 비트와 접속하게 된다.
하기에 설명하는 바와 같이, 피드백 회로(450, 452)의 피드백 곱셈기의 값은 선택적으로 가변시킬 수 있다. 즉, 피드백 곱셈기의 값은 피드백 곱셈기가 접속된 그 선택된 레지스터를 바꿈으로써 선택적으로 가변시킬 수 있다. 예를 들어, 피드백 곱셈기의 값은 접속된 레지스터(400, 402)내로 삽입된 필드 길이 값에 따라(즉, 6비트 서브코드 바이트를 처리하느냐 아니면 8 비트 서브코드 바이트를 처리하느냐에 따라) 선택적으로 가변시킬 수 있다.
피드백 회로(450)는 익스크루시브 오아 게이트(460, 470, 490)와 앤드 게이트(480, 482)로 이루어진다. 익스크루시브 오아 게이트(460)는 레지스터(400)의 비트 2 및 3에 접속되는 입력 단자를 가지고, 익스크루시브 오아 게이트(460)는 레지스터(400)의 비트 0 및 4에 접속되는 입력단자를 가진다. 이러한 접속은 본 발명의 실예에 사용되는 특별한 필드 발생기 다항식에 의해서 이루어진다. 즉, 다른 필드 발생기 다항식을 사용하게 되면 곱수가 달라지고 이에 따라 익스크루시브 오아 게이트(460, 470)에 다르게 접속하게 된다. 익스크루시브 오아 게이트(470)는 앤드 게이트(480)의 입력 단자에 접속되고 신호(ENA_L_ECC)가 “하이”이면 익스크루시브 오아 게이트(490)에 접속된다. 이때, 신호(ENA_L_ECC)는 서브 전처리부의 서브코드 조절부(350, 제3(a)도에 도시됨)로부터 출력되는 것이며 서브코드가 처리되지 않을 때에 “하이”가 된다. 그렇지 않으면, 익스크루시브 오아 게이트(460)의 출력만이 피드백 팩터로써 익스크루시브 오아 게이트(490)를 통과한다. 피드백되어 곱해진 값은 익스크루시브 오아 게이트(490)에서 멀티플렉서(440A)의 여러개의 입력 단자 중의 하나로 접속하게 된다.
기준 변환에 관련하여 차후에 좀 더 상세히 설명하겠지만, 익스크루시브 오아 게이트(490)가 레지스터{300(1)}로부터 얻어진 값으로 선택된(두개 모두 2비트 서브코드의 구성을 위한 4비트 ECC 결합으로부터 얻어지는) 피드백 신호를 합산하는 가산기로서의 역할을 한다는 점에 주목해야 한다. 서브코드가 처리될 때 또는 그렇지 않으면 8비트 값을 가질 때 레지스터{300(1)}로부터 얻어지는 값은 6비트 값(멀티플렉서(354)를 통해 얻어진 신호(S1_ALPHA))가 될 것이다.
이와 유사하게, 피드백 회로(452)는 익스크루시브 오아 게이트(462, 472, 492)와 앤드 게이트(482)로 이루어진다. 익스크루시브 오아 게이트(462)는 레지스터(402)의 비트 2 및 3에 접속되는 입력 단자를 가지고, 익스크루시브 오아 게이트(472)는 레지스터(402)의 비트 0 및 4에 접속되는 입력단자를 가진다. 상기 설명한 피드백 회로(450)의 접속 방법과 마찬가지로, 이러한 접속은 본 발명의 실예에 사용되는 특별한 필드 발생기 다항식에 의해서 이루어진다. 즉, 다른 필드 발생기 다항식을 사용하게 되면 곱셈기가 달라지고 이에 따라 익스크루시브 오아 게이트(462, 472)에 다르게 접속하게 된다. 상기에서 설명한 바와 같이, 익스크루시브 오아 게이트(472)는 앤드 게이트(482)의 입력 단자에 접속되고 신호(ENA_L_ECC)가 “하이”이면 익스크루시브 오아 게이트(492)에 접속된다. 그렇지 않으면, 익스크루시브 오아 게이트(462)의 출력만이 피드백 팩터로써의 사용을 위해 익스크루시브 오아 게이트(492)를 통과한다. 피드백되어 곱해진 값은 익스크루시브 오아 게이트(492)에서 멀티플렉서(443)의 여러개의 입력 단자 중의 하나로 접속하게 된다.
피드백 회로(450)로 부터의 출력은 제1의 레지스터 로딩 스위치(440)에서 접속된 선택적인 입력들 중의 하나이다. 나머지 선택적 입력들은 일정한 상수(R1_CONST_IN 라인에 접속되는)와, 가산 회로(320, 제3(a)도 참조)의 출력값(S_SUM) 및 에러 교정부(60)에서 얻어지는 값(P_SUM)을 포함한다. 이와 유사하게, 제3의 레지스터 로딩 스위치(442)는 피드백 회로(452)에 의해 얻어진 신호와, 일정한 상수(R3_CONST_IN 라인에 접속되어 멀티플렉서(444, 443)를 통과하는)와, 내부 곱 값(IP, 익스크루시브 오아 게이트(445) 및 멀티플렉서(444, 443)를 통과하는) 및 레지스터(402) 그 자체의 내용들(R3(0)라인에 접속되어 앤드게이트(446)와 익스크루시브 오아 게이트(445) 및 멀티플렉서(444, 443)를 통과하는)을 포함하는 다수의 교번 직렬 입력들을 얻기 위하여 접속된다.
제2의 레지스터 로딩 스위치(441) 또한 자신이 선택하는 다수의 교번 직렬 입력들을 얻기 위해 접속되는 것이다. 즉, 로딩 스위치(441)는 일정한 값(R2_CONST_IN), 스토리지 레지스터(300(0) 또는 레지스터{300(1)}(제3(a)도 참조), 또는 교정부(60)에서 얻어지는 값(P_SUM) 중에서 선택한다. 따라서, 제2의 뱅크 로딩 스위치(441)는 멀티비트 스토리지 레지스터(300(0))에 접속되는 라인 및 제2의 스토리지 레지스터{300(1)}에 접속되는 제2의 라인들 중의 하나인 제2의 뱅크 직렬 입력 라인 세트를 포함하는 다수개의 입력 라인에 접속된다.
제3(a)도를 다시 참조하면, 제2의 멀티비트 스토리지 레지스터{300(1)}가 제1의 레지스터(400)의 출력값(멀티플렉서{310(1)}에 접속되는 R1(0) 라인을 통하여)을 로드하기 위하여 선택적으로 접속됨을 이제 알 수 있을 것이다. 더욱이, 가산회로(320)의 입력 단자는 제1의 스토리지 레지스터{300(0)}(S0(0) 라인을 통해)와, 제2의 스토리지 레지스터{300(1)}(51(0) 라인을 통해)와, 내부 곱 회로(404, IP 라인을 통해)에 접속됨을 알 수 있다. 또한, 가산회로(320)의 출력 단자는 각 제1의 스토리지 레지스터{300(0)}(멀티플렉서{310(0)}를 통하여) 및 제2의 스토리지 레지스터{300(1)}(멀티플렉서{310(1)}를 통하여)에 선택적으로 접속된다.
[구조]
[기준 변환기]
제5도는 계산기(30)를 구성하는 기준 변환 회로를 좀 더 단순화시켜 분리된 형식으로 나타낸 것이다. 즉, 기준 변환기는 전술한 양방향 시프트 레지스터{300(1)}와, 제1의 레지스터(400)와, 가산기(익스크루시브 오아 게이트(490))와, 피드백 회로(일반적으로 가산기(496)를 포함하는 것으로 표시되는) 및 변환기 제어 앤드 게이트(498)를 포함한다.
따라서, 제5도의 회로는 m 비트 입력값을 입력 기준 표시에서 출력 기준 표시로 변환하기 위한 양방향 변환 장치를 형성한다. 입력 기준 표시와 출력 기준 표시 중 하나는 α 기준 표시이고 입력 기준 표시와 출력 기준 표시의 다른 하나는 β 기준 표시이다. β 기준 표시의 필드 요소 α0는 그들의 최상위 비트를 “1”로 하고 그 나머지 비트를 “0”(즉, 1000 0000)으로 하기 위하여 선택된다.
제5도의 변환 장치에서, 양방향 시프트 레지스터{300(1)}는 입력 기준 표시의 입력값을 저장하고 입력 기준 표시에 따라 미리 선택되는 비트의 입력값을 직렬로 출력하기 위한 입력 레지스터로써 작용한다. 레지스터(400)는 변환 메모리의 역할을 하고 다수개의 비트를 저장하기 위한 다수개의 비트 위치를 그 내에 포함한다. 피드백 곱셈기(496)는 피드백 팩터(factor)를 산출하기 위하여 변환 메모리{즉, 레지스터(400)}에서 피드백 상수에 의해 현재값을 곱한다. 수 m이 부가 연산이 되는 동안, 가산기(490)는 (1)입력 레지스터{300(1)}로부터 출력되는 입력값의 비트와 (2)피드백 요소의 비트 값을 곱한다. 가산기(490)는, 변환 메모리{레지스터(400)}의 최상위 비트 위치에 로드된 뒤 남아있는 부가 연산 동안 변환 메모리를 통해 직렬로 시프트되는 합산값을 산출한다.
이로써, 제5도의 변환 메모리는 덧셈 연산 동안 수 m의 마지막에 m 비트 입력값의 출력 기준 표시를 제공하게 된다. 입력 기준 표시가 α 기준 표시일 때 입력값은 그의 최상위급으로 부터 최하위급으로 출력되고[{레지스터(300(1)}로 부터], 입력 기준 표시가 β 기준 표시일 때 입력값은 그의 최하위로 부터 최상위로 출력[레지스터{300(1)}로 부터]된다.
출력 기준이 α 기준일 때, α 기준 표시는 레지스터(400)에 반전된 비트로써 제공된다. 그러나, 입력 레지스터가 “로우”에서 “하이”로 시프트되는 동안 레지스터(400)의 내용이 입력 레지스터(300(1)에 역방향으로 직렬 시프트됨으로써, 레지스터(400)에 제공된 반전된 비트는 반전되지 않은 상태로 쉽게 재정렬 된다.
제5도의 기준 변환기의 동작은 하기에, 예를 들어, “동작: 에러 패턴 발생”이라는 제목하에서 논의될 것이다.
[구조]
[교정기]
제6도는 본 발명의 적절한 실시예로 언급된 제1도의 CD롬 에러 교정 시스템의 교정부(60)의 구성을 나타낸다. 교정기(60)는 에러-판독 레지스터{620(0), 620(1)}와, 두 세트의 에러 패턴 즉, 짝수 인터리브 코드워드를 위한 한 세트의 에러 패턴 및 짝수 인터리브 코드워드를 위한 한 세트의 에러 패턴을 저장하기 위한 에러 매개 레지스터{620(0), 620(1)}를 포함한다. 본 발명에서 사용되는 바 처럼, 에러 패턴의 각 세트는 E0, E1이라는 기호로 표시된다. 에러-판독 레지스터{610(0), 620(1)}는 각각 에러 매개 레지스터{620(0), 620(1)}에 의해 해당 정보를 제공 받는다. 에러 매개 레지스터{620(0), 620(1)}의 정보 제공은 계산기(30)로 부터의 직렬 데이터나 각 에러-판독 레지스터{610(0), 610(1)}의 직렬 내용들을 에러 매개 레지스터{(620(0), 620(1)}에 접속시키는 스위치나 멀티플렉서{630(0), 630(1)}에 의해 각기 제어된다.
제6도에 도시한 바와 같이, 게산기(3)로부터 얻어지는 직렬 데이터는 DIN 버스에 접속되는데, 좀 더 상세히 말하자면 계산기(3)의 스토리지 레지스터{300(0), 300(1)}로부터 얻어지는 것이다. 이때, 제6도의 DIN 버스 또한 제3(a)도의 SO 버스나 S1 버스로부터 접속되는 신호를 나타내며, S0 버스나 S1 버스는 제1도에 도시한 S02 버스나 S12 버스와 같이 멀티플렉서(630)의 사용은 저장 및 판독 목적을 위해 매우 중요한 에러 값의 계산을 가능하게 한다.
에러-판독 레지스터{610(0), 610(1)}의 출력 단자는 에러 판독 스위치 또는 멀티플렉서(635)의 각 입력 단자에 접속된다. 멀티플렉서(635)는 EDC 체커(70) 및 제어기(10)에 접속하기 위하여 ERR 라인(제6도 및 제1도 참조) 위의 에러 패턴들(E0, E1) 중에서 선택된 것을 출력한다.
교정기(60) 역시 포인터-판독 레지스터{640(0), 640(1)}와, 2세트의 포인터 즉, 짝수 인터리브 코드워드를 위한 한 세트의 포인터 및 홀수 인터리브 코드워드를 위한 한 세트의 포인터를 저장하기 위한 포인터 매개 레지스터{650(0), 650(1)}를 포함한다. 본 발명에서 사용된 바와 같이, 포인터의 각 세트는 P0, P1, 또는 αL0, αL1의 기호로 표시된다. 에러 레지스터와 유사한 방법으로, 포인터 판독 레지스터{640(0), 640(1)}는 각 포인터 매개 레지스터{650(0), 650(1)}에 의해 정보를 제공 받는다. 포인터 매개 레지스터{650(0), 650(1)}로의 정보의 제공은 계산기(30)로 부터의 직렬 데이터나 각 포인터-판독 레지스터{610(0), 610(1)}의 직렬 내용들을 에러 포인터 레지스터{640(0), 640(1)}에 접속시키는 스위치나 멀티플렉서{660(0), 660(1)}에 의해 각기 제어된다. 계산기(30)로부터 얻어지는 데이터는 에러 패턴에 관하여 상기 설명한 바와 같은 방법으로 DIN 버스 위에 접속된다.
교정기(60)는 또한 레지스터{640(0), 640(1)}로 부터의 포인터 값을 직렬로 합산하기 위하여 신호(P1_TO_SUM)에 의해 제어되는 포인터 합산 회로(670)를 포함한다. 이 포인터 합산 회로(670)는 앤드 게이트(672) 및 익스크루시브 오아 게이트(674)를 포함한다.
[구조]
[EDC 체커]
EDC/CRC 체커(70)는, 일반적인 구성을 나타낸 제1도및 좀 더 상세한 구성을 나타낸 제7도에 도시한 바와 같이, ERR(0) 라인을 통해 교정기(60)로 부터의 직렬 에러 패턴들과 GDAT(0) 라인을 통해 직렬 버퍼 데이터를 얻도록 구성된다. 시스템 제어기(10)는 제어 버스(CBUS)를 사용하여 EDC/CRC 체커(70)의 동작을 제어한다.
1994년 9월 16일 크리스 주크(Chris zook)에 의해 제출되어 본 발명의 인용으로 사용되는 “CRC/EDC 체커 시스템”이란 명칭의 미국 특허 출원 08/306,917호에 기술한 바와 같이, 시스템 제어기(10)에 의한 EDC/CRC 체커(70)의 제어는 바이트가 교정되고 있는 바로 그 버퍼가 패스되는 동안에 EDC/CRC의 교정 정확도를 위한 EDC/CRC의 확인을 위하여 교정기(60)와 함께 이루어진다.
[동작]
[컴퓨터 데이터/포인터 모드]
[개관]
제1도의 에러 교정 시스템은 두 가지의 모드에서 동작된다. 즉, (1) 포인터를 가지는 컴퓨터 데이터의 교정을 위한 2단계(two-phased) 모드와, (2)오디오 디지털 데이터를 포함하는 서브코드 팩(제8(a)도 참조)의 교정을 위한 서브코드 모드에서 동작된다. 즉, 포인터를 가지는 컴퓨터 데이터의 교정을 위한 2단계 모드 동안, 제9도에 개략적으로 나타낸 바와 같이, 발생기(20)와 계산기(30) 및 교정기(60)가 각기 동작한다. 좀 더 상세히 설명하면, 제1 단계 동안(포인터 타임 또는 PTR_TIME으로써 알려진) 다음과 같은 동작이 이루어진다.
(a)발생기(20)는 가장 최근의 코드워드에 대해 하나 또는 2개의 멀티비트 버퍼에서 얻어지는 포인터(αL0= P0, αL1= P1)를 발생시키기 위하여 가장 최근의 코드워드(CWn)에 대해 버퍼에서 얻어지는 1 비트의 포인터를 사용한다.
(b)계산기(30)는 이전의 코드워드에 대해 하나 또는 2개의 에러 패턴들 (E0, E1)을 발생시키기 위하여 이전의 코드워드(CWn-1)에 대해 발생기(20)에 의해 발생되는 신드롬(S0, S1)을 사용한다.
(c)교정기(60)는 계산 장치(30)에 대해 이전의 코드워드(CWn-1) 동안 포인터 값(αL0= P0, αL1= P1)을 보유한다.
제2 단계 동안(데이타 타임 또는 DATA_TIME으로써 알려진) 다음과 같은 동작이 이루어진다.
(a)발생기(20)는 가장 최근의 코드워드(CWn)에 대해 신드롬(S0, S1)을 발생시킨다.
(b)계산부(30)는 가장 최근의 코드워드(CWn)에 대해 어떠한 멀티비트의 버퍼에서 얻어지는 포인터에 관계된 수학적인 연산을 수행한다.
(c)교정기(60)는 이전의 코드워드(CWn-1)를 교정한다.
각 2개의 상에서, 발생기(20)와 계산기(30) 및 교정기(60)는 전체 시스템이 다음 상을 진행시키기 전에 그 상이 진행되는 마지막 과정까지 기다린다.
가장 최근의 코드워드 또는 이전의 코드워드에 대한 언급이 이루어지면, 제1도에 도시한 시스템이 필수적으로 짝수 인터리브 코드워드 및 홀수 인터리브 코드워드로부의 바이트를 동시에 조정하기 때문에 각 부에 대한 언급이 정확히 2개의 코드워드에 관계되는 제1도의 시스템이 이해될 것이다. 그러나, 본 발명의 원리는 인터리브된 시스템에 국한되지는 않는다. 왜냐하면, 적어도 각 발생기(20), 계산기(30) 및 교정기(60)와 유사한 부분을 가지는 비-인터리브 시스템에 또한 적용되는 것으로 본 발명에서 기술된 2단계 연산이 단일 코드워드에서 이루어지기 때문이다.
따라서, 본 발명의 시스템은 다른 입력을 사용하고 일반적으로 한 스테이지에서 다른 스테이지로 패스되는 각 스테이지/연산을 동시에 3개를 필요로 하는 종래의 파이프라이닝(pipelining) 기술과 다르다. 본 시스템의 각 부분(20, 30, 60)은 시간 분할 방법으로 2개의 다른 연산을 수행한다. 더욱이, 각 부분(20, 30, 60)은 연산되고 있는 단계에 따라 2개 기능을 수행한다. 연산되는 단계의 마지막에서, 각 부분(20, 30, 60)은 정보를 다른 부분으로 전달시키지만, 그 뒤의 다음 단계에서 같은 연산을 반복하지는 않는다. 또한, 다음의 단계 동안 각 부분(20, 30, 60)은 상기에서 요약한 바와 같이 그리고 하기에 더욱 상세히 설명하겠지만 다른 연산을 수행한다.
[연산]
[포인터 발생(컴퓨터 데이터/포인터 모드)]
상기에서 나타낸 바와 같이, 연산들은 짝수 인터리브 코드워드 및 홀수 인터리브 코드워드에 관련된 본 발명 시스템의 컴퓨터 데이타/포인터 모드에서 이루어진다. 이는 홀수 인터리브 코드워드 및 짝수 인터리브 코드워드가 쌍으로 처리되는 관점에서, 코드워드에 대한 포괄적인 언급이 짝수 인터리브 코드워드나 짝수 인터리브 코드워드 양쪽 모두에 적용 가능하다는 확증적인 표시로써 더욱 잘 이해될 것이다. 더욱이, 하기에서 다양하게 설명하겠지만, 홀수 인터리브 코드워드에 대해 산출되는 값이 어느 순간 하나 또는 그 이상의 제2의 레지스터에 저장되는 동안, 짝수 인터리브 코드워드에 대해 산출되는 값은 어느 순간 하나 또는 그 이상의 제1의 레지스터에 저장될 수 있다.
새로운 코드워드 즉, 가장 최근의 코드워드(CWH)의 처리가 컴퓨터 데이터/포인터 모드에서 한번에 실행된다고 가정하면, PTR_TIME 단계 동안 코드 워드(CWn)에 대해서 수행되는 제1의 동작은 각 두 포인터에 대해 αL표시로 한 바이트의 버퍼 포인터 정보를 발생시킬 것이다. 버퍼가 그 내에 각 코드 워드의 각 바이트에 대한 버퍼 포인터 비트 위치를 저장하고 있음을 이 분야의 종사자라면 이해할 수 있을 것이다. 바이트에 대한 비트 위치가 세트되면, 버퍼 포인터가 세트 비트 위치에 대응되는 코드워드 바이트에 대해 발생하거나 존재할 것이다.
본 명세서에서 사용된 바와 같이, 버퍼 포인터라는 용어는 상기 설명한 방법으로 버퍼에서 얻어지는 포인터를 표시하는 것까지를 의미한다. 본 명세서 내의 포인터에 관한 모든 언급은, “시스템” 포인터에 대한 명확한 반대말로 간주되지 않는 한, 버퍼 포인터의 의미로써 이해될 것이다. 시스템 포인터의 발생 및 유용은 “동작: 포인터 처리”와 관련하여 하기에 설명할 것이다.
시스템 제어기(10)의 제어 하에, 발생기(20)는 PTR_TIME로써 알려진 단계 동안 각 포인터에 대해 αL의 표시로 한 바이트의 포인터 정보를 발생시킬 것이다. 이 점에 있어서, 코드워드에 대한 포인터 비트가 결과적으로 버퍼내에 시간 의존적인 방법으로 접근됨에 따라, 제1의 세트 포인터 비트가 만날 때 포인터 신호는 시스템 제어기(10)에 접속된다. 시스템 제어기(10)는 버퍼내의 시간 의존적인 비트를 코드워드 바이트 위치에 서로 관련시키며, 이에 따라 포인터 신호를 위한 코드워드 바이트 위치가 제1의 포인터에 대해 발생된다.
포인터 신호를 받는 대로, 시스템 제어기(10)는 게이트(202) 및 발생기의 제어기(200)에 접속되는 버스(GDAT) 위에 0 비트를 세트시킨다. 포인터의 초기값(즉, 1)이 레지스터{206(0)} 내로 로드된다. 발생기의 제어기(200)는 곱셈 상수를 형성하는(제2(a)도 참조) 반전성의 피드백 회로{210(0)}에 신호를 인가한다. 특히, 8비트의 포인터 바이트가 사용되고 있기 때문에, 곱셈기(228)의 곱셈 상수 α가 피드백 회로{210(0)}에서 동작하도록 하기 위하여 시스템 제어기(10)는 멀티플렉서(230)에 신호(ENA_SC)를 인가하고 발생기의 제어기(200)는 멀티플렉서(240)에 신호(ENA_MJL)를 인가한다. 따라서, 버퍼내의 포인터 비트를 통해 클럭이 계속하여 인가됨에 따라, 코드워드의 마지막 클럭까지 각 클럭을 가지고, 점점 증가되는 포인터 바이트는 레지스터{208(0)}에 시프트되고, 곱셈 상수에 의해 곱해지고, 레지스터{206(0)}에 저장되며, 궁극적으로 포맷 αL을 가진 포인터 바이트를 생성한다. 제1의 포인터 바이트는 여기에서 αL0또는 PO라는 표시로 언급된다. 예를 들어, 만일 제1의 포인터 비트가 코드워드의 스무번째 바이트에 대해 세트되었다면, 제1의 포인터 바이트는 α6이 될 것이다(코드워드 내의 총 26 바이트에 대하여, 코드워드의 24개 데이터부의 끝부분에 4개의 연속적인 클럭/바이트가 있고 코드워드 내에 2개의 ECC 바이트가 있다).
제2의 포인터 비트가 코드워드에 관련된 버퍼내에서 만나게 되면, 비트 GDAT(0)는 다시 세트되고, 발생기의 제어기(200) 및 게이트(202)에 접속되며, 이는 제2의 포인터에 대응하는 것으로 발생기의 제어기(20)에 의해 인지된다. 이때, 발생기의 제어기(200)는 코드워드에 대해 서로 만나는 포인터 비트의 수와 이를 표시하는 출력 신호(PCNT)를 계수한다. 발생기의 제어기(200)는 제2의 포인터가 만났음을 인지하고, 신호(ENA_Pl)를 셋팅함으로써 이를 게이트(202)에 알린다. 게이트(202)는 레지스터(206(1))에 포인터 초기값을 로딩함으로써 이에 반응하고, 상기 제1의 포인터에 대해 설명한 바와 같은 동작(각 레지스터{206(1), 208(1)}와 피드백 회로(210(1)) 및 가산기{204(1)}와 병렬로)을 한다. 제2의 포인터는 제2의 포인터 바이트를 위한 곱셈이 그와 대응하는 다음 스테이지에서 시작될 수 있도록 하기 위하여, 클럭킹이 이루어지고 있는 가운데 코드워드(즉, 바이트 22)를 통해 다음의 포인트에서 만날 것이다. 제2의 포인터 바이트는 본 명세서에서 αL1또는 P1으로 표시된다. 제2의 포인터 비트가 코드워드의 22 바이트에 대해 발생하는 예에 있어서, 제2의 포인터 바이트는 α4가 될 것이다.
포인터 바이트(두 포인터 코드워드를 위한 P0또는 P0및 P1)가 발생한 후에, 포인터 바이트는 그와 대응하는 레지스터{208(0), 208(1)}로부터 계산기(30)로 병렬로 로드 되며, 최종적으로 다음의 상(DATA_TIME) 동안 계산기(30)가 사용될 수 있도록 각 레지스터{300(0), 300(1)} 내에 존재하게 된다. 포인터 바이트의 발생에 대해 전술한 표시는 하나의 인터리브로 부터의 가장 최근의 코드워드에 관한 것이다. 각 PTR_TIME 단계 동안, 전술한 포인터 바이트 발생 동작은 먼저 짝수 인터리브 코드워드에 대해 발생하고 그 다음 홀수 인터리브 코드워드에 대해 발생한다. 포인터 바이트의 발생 후, 홀수 인터리브 코드워드에 대한 포인터 바이트 또한 계산기(30)내로 특히, 레지스터(302(0),302(1))로 로드된다.
가장 최근의 짝수 인터리브 코드워드 및 홀수 인터리브 코드워드에 대한 포인터 바이트가 계산부내로 로드 된 후, 포인터 바이트의 처리는 즉시 다음의 상(DATA_TIME) 동안 계산부(30)에 의해 이루어진다. 이 점에 관해서는, 하기의 부제인 “동작: 포인터 처리”에서 설명할 것이다.
만일 코드워드에 대한 포인터의 수가 2개를 초과하면, 신호(PCNT)와 같은 값은 코드워드가 교정할 수 없는 상태임을 나타낸다.
[동작]
[신드롬 발생(컴퓨터 데이터/포인터 로드)]
발생기(20)가 단계 PTR_TIME 동안 가장 최근의 코드워드(CWn)에 대해 하나 또는 그 이상의 포인터 발생을 끝마친 후, 발생기(20)는 다음 단계(DATA_TIME)가 시작되기를 기다린다. DATA_TIME 동안 발생기(20)는 코드워드 당 즉, 가장 최근의 코드워드(CWn)에 대해 2개의 신드롬(여기서 S0, S1으로 표시됨)을 발생시킨다.
신드롬을 발생시킴에 있어, 피드백 회로{210(0)}는 곱하지 않는 피드백 라인(220)을 이용하여 신드롬(S0)을 발생시킬 수 있도록 구성된다. 피드백 회로{210(1)}는 8비트 곱셈기(228)를 곱셈 수단으로 하여 신드롬(S1)을 발생시킬 수 있도록 구성(상기 설명한 포인터에 관한 방법과 같은 방법으로)된다.
먼저, 짝수 인터리브로 부터 가장 최근 코드워드의 제1의 바이트가 레지스터{206(0), 206(1)}로 들어간 다음, 그에 대응하는 레지스터{208(0), 208(1)}에 시프트되어 들어간다. 이어서, 홀수 인터리브로부터 가장 최근 코드워드의 제1의 바이트가 레지스터{206(0), 206(1)}로 들어간다. 이것은 짝수 인터리브 코드워드에 대한 가산기{204(0), 204(1)}로 짝수 인터리브로부터 가장 최근 코드워드의 제2의 바이트가 들어감으로써 수행되는 것이다. 가산기{204(0)}는 제2의 바이트를 제1의 바이트에 합산하고, 가산기{204(1)}는 제1의 바이트의 α 배수에 의해 제2의 바이트를 합산한다. 가산기{204(0), 204(1)}로 부터의 합산값은 레지스터{206(0), 206(1)}로 각각 로드된다. 그러면, 홀수 인터리브로 부터의 가장 최근 코드워드의 제2의 바이트가 가산기{204(0), 204(1)}로 들어가게 된다. 홀수 인터리브 코드워드에 대해, 가산기{204(0)}는 제2의 바이트를 제1의 바이트에 합산하고 가산기{204(1)}는 제1의 바이트의 α 배수에 의해 제2의 바이트를 합산한다. 홀수 인터리브 코드워드에 대한 가산기{204(0), 204(1)}의 합산값이 레지스터{206(0), 206(1)}로 각각 로드되는 동안, 짝수 인터리브 신드롬은 레지스터{208(0),208(1)}로 시프트 된다.
상기 단계들은 남아있는 각 코드워드 즉, 가장 최근 코드워드(CWn)의 26 바이트 또는 45 바이트 모두(이는 컬럼) 코드워드인지 대각선 코드워드 인지에 따라 결정됨)에 대해 반복된다. 코드워드 바이트가 처리되는 단계는 제8(b)도에 컬럼에 대한 코드워드를 도시한다. 즉, 짝수 인터리브의 제1의 열 코드워드에 대해, 0000 바이트가 첫 번째로 처리되고, 그 다음으로 0043 바이트가, 그 다음으로 0086 바이트가, 그리고 1075 바이트까지 계속되어 처리된다.
가장 최근 코드워드(CWn) 한쌍에 대한 신드롬 발생의 결론을 내려보면, 짝수 인터리브 코드워드에 대한 신드롬(S0)은 레지스터{208(0)}에 저장되고, 짝수 인터리브 코드워드에 대한 신드롬(S1)은 레지스터{208(1)}에 저장되며, 홀수 인터리브 코드워드에 대한 신드롬(S0)은 레지스터{206(0)}에 저장되고, 홀수 인터리브 코드워드에 대한 신드롬(S1)은 레지스터{206(1)}에 저장된다. 하기에 설명하겠지만(“동작:에러 페턴 발생”참조) 이러한 신드롬 값들은 에러 패턴을 발생하기 위하여 다음 단계(PTR_TIME) 동안 계산부(30)에 의해 이용된다.
[동작]
[포인터 처리(컴퓨터 데이터/포인터 모드)]
상기에서 설명한 바와 같이(“동작: 포인터 발생”참조), PfR_TIME 동안, 발생기(20)는 짝수 인터리브 코드워드 및 홀수 인터리브 코드워드에 대한 2 개의 포인터 바이트(αL0, αL1과 같은 P0, P1)를 발생시킨다. 다음의 DATA_TIME이 시작됨에 있어, 포인터 바이트는 하기의 것들을 저장한다. 즉, 레지스터{300(0), 300(1)} 각각에 홀수 인터리브 코드워드를 위한 P0 및 P1과, 레지스터{302(0), 302(1)} 각각에 짝수 인터리브 코드워드를 위한 P0 및 P1을 저장한다.
DATA_TIME 동안, 계산부(20)는 짝수 인터리브 코드워드 및 홀수 인터리브 코드워드에 대해 포인터 P0및 P1을 처리한다. 첫 번째로 처리되는 홀수 인터리브 코드워드에 대하여, DATA_TIME 동안 계산기(30)에 의해 수행되는 처리 과정이 홀수 인터리브 코드워드 포인터 P0 및 P1(β 기준 표시로)의 기준 변환이다. 홀수 인터리브 코드워드 다음으로 처리되는 짝수 인터리브 코드워드에 대하여, DATA_TIME 동안 계산기(30)에 의해 수행되는 처리 과정은 짝수 포인터 P0 및 P1의 β 기준 표시로의 변환뿐 아니라 (두개의 포인터가 존재할 경우) 하기에 기술할 방법으로 기준-변환 포인터를 가지는 반전된 합산값의 형성을 포함한다.
각 코드워드에 대하여, 계산기(30)에 의한 처리는 둘 중의 한 경우에서만 이루어진다. 제1의 경우는 기껏해야 1개의 버퍼 포인터가 코드워드에 대해 발생할 때 실행된다. 제2의 경우는 2개의 버퍼 포인터가 코드워드에 대해 발생할 때 실행된다. 제1의 경우의 버퍼 포인터 처리에 있어, 계산부(30)는 1개의 포인터 P0(존재한다면)를 α 기준 표시에서 β 기준 표시로 변환시킨다. 제2의 경우의 버퍼 포인터 처리에 있어, 계산부(30)는 포인터(P0) 및 포인터(P1)를 α 기준 표시에서 β 기준 표시로 변환시키고, β 기준 표시는 다음과 같이 표시되는 식(두 포인터의 반전된 합산값으로 하기에서 정의함)을 계산한다.
●44* A30044.tif *
이는 또한 다음과 같이 쓸 수 있다.
계산부(30)는 DATA_TIME 단계에서 짝수 인터리브 코드워드에 대해 두 포인터의 반전된 값을 형성한다. 두 포인터의 반전된 값이 홀수 인터리브 코드워드의 형성을 위해 필요하다면, 다음의 POINTER_TIME 동안 포인터의 반전된 값이 형성된다.
포인터의 처리는 제10도에 도시된다. 제10도의 단계(1002)∼단계(1016)는 DATA_TIME 동안 계산부(30)에 의해 실행된다. 단계(1020)∼단계(1024)는 다음의 POINTER_TIME 동안 실행된다.
단계(1002)에서, 계산부(30)는 홀수 인터리브 코드워드에 대한 포인터 P0, P1을 β 표시로 변환시킨다. 그런 다음, 단계(1004)에서, 홀수 인터리브 코드워드에 대한 β 로 변환된 포인터 P0, P1는 일시적인 저장을 위하여 레지스터 {302(0), 302(1)}내로 이동된다. 이와 동시에 필수적으로, 단계(1006)에서 짝수 인터리브 코드워드에 대한 비반전된 포인터 P0, P1은 기준변환을 기대하며 레지스터{302(0), 302(1)}로부터 레지스터{300(0), 300(1)}로 이동된다. 짝수 인터리브 코드워드의 포인터 P0, P1에 대한 β 기준 변환은 단계(1008)에서 이루어진다. 단계(1010)에서 짝수 코드워드에 대한 반전된 합산값은 레지스터(401)에 형성되며, 이는 다음 단계까지 남아있게 된다.
단계(1014)에서, 모든 포인터들은 일시적인 저장을 위해 계산부(60)내로 이동된다. 이 점에 있어서, 단계(1012)에서, 짝수 코드워드에 대한 포인터 P0, P1는 레지스터{300(0), 300(1)}로부터 포인터 레지스터{640(0), 640(1)}로 각각 이동되고, 홀수 코드워드에 대한 포인터 P0, P1는 레지스터(302(0), 302(1))로부터 포인터 레지스터{650(0), 650(1)}로 각각 이동된다. 교정부(60)내로의 포인터들의 병렬적인 직렬 시프팅과 함께, 발생기(20)에 의해 발생되는 신드롬들은 레지스터(300, 302)내로 시프트된다(단계(1016) 참조).
POINTER_TIME 동안, 짝수 인터리브 코드워드(단계(1018)에 도시)에 대한 에러 값의 처리 후, 단계(1020)에서 교정부(60)는 홀수 코드워드에 대한 포인터 P0, P1를 레지스터{640(0), 640(1)} 각각으로부터 직렬로 출력되는 값들에 의해 합산 회로(670)에 합산시킨다. 합산 회로(670, P_SUM 위에 직렬 비트)에 의해 산출된 합산값은 멀티플렉서(441)를 통해 레지스터(401)내로 로드된다{단계(1022)}. 단계(1024)에서, 계산부(30)는 레지스터(401)내의 홀수 코드워드 합산값(P0+P1)의 역을 형성한다. 이후, 단계(1026)에 나타낸 바와 같이, 계산부(30)는 홀수 인터리브 코드워드에 대한 에러 값을 처리 한다.
계산부(30)에 의해 수행되는 변환, 덧셈 및 반전 동작은 계산부(30)의 다재성(versatility)을 나타낸다. 이러한 동작은 하기에 좀 더 상세히 설명한다.
포인터 P0, P1의 β 기준 표시로의 변환에 관련된 단계는 제11도에 도시한다. 포인터 P0는 레지스터{300(0)}에 존재한다. 단계(1102)에서, 포인터(P0)는 레지스터(401)로 로드{S(0) 라인이 접속된 멀티플렉서(441)를 통해}된다. 단계(1104)에서 상수 “1”(Rl_CONST_IN 라인에 접속)이 레지스터(400)에 로드(멀티플렉서(440)를 통하여)된다. 비트 지향의 컨벌루션 동작은 신호(IP)로써 직렬로 출력되는 레지스터(400, 401) 내부 곱 비트를 가지고 수행된다(단계(1106)). 비트 단위의 컨벌루션 동작이 수행되는 동안, α-피드백이 가산기(490) 및 피드백 회로(450)를 통해 레지스터(400)로 접속된다. 신호(IP)로써 직렬로 출력되는 값은 β 기준 표시에서 포인터 P0이다. 단계(1108)에서, β 기준 표시의 포인터 P0는 앤드 게이트(324), 익스크루시브 오아 게이트(328, 330), 멀티플렉서{310(0)} 및 레지스터{300(0)}까지 걸쳐 형성되는 루트(route)에 의하여 레지스터{300(0)}에 다시 로드된다.
만일 포인터 P1이 존재한다면, 제11도의 남아있는 단계들이 실행된다. 이때, 포인터 P1은 레지스터{300(1)}에 존재한다. 단계(1112)에서, 포인터(P1)는 레지스터(401)내로 로드{S1(0) 라인이 접속된 멀티플렉서(441)를 통하여}된다. 단계(1104)에서와 같은 방법으로, 상수 “1”(R1_CONST_IN 라인에 접속되어)이 레지스터(400)내로 로드(멀티플렉서(440)을 통하여)된다. 비트지향의 컨벌루션 동작은 IP 신호를 직렬로 출력하는 레지스터(400, 401)의 내부 곱 비트와 함께 수행된다. 비트 지향의 컨벌루션 동작이 수행되는 동안, α-피드백이 가산기(490) 및 피드백 회로(450)를 통하여 레지스터(400)에 인가된다. IP 신호로 직렬로 출력되는 값은 β 기준 표시에서의 포인터 P1이다. 단계(1116)에서, β 기준 표시에서의 포인터 P1은 앤드 게이트(324), 익스크루시브 오아 게이트(328), 멀티플렉서({310(1)} 및 레지스터{300(1)}까지 걸쳐 형성되는 루트에 의해 레지스터{300(1)}에 다시 로드된다.
제2의 경우는 제1의 경우 β 기준 표시에서의 포인터 P0 및 P1의 변환을 포함한다. α 기준 표시에서 β 기준 표시로의 포인터 P0 및 P1의 변환에 이어 수행되는 제2의 경우의 부가 및 반전 계산에 관련된 단계들을 제12도에 도시한다. 또한, 변환된 포인터 P0 및 P1은 각각 레지스터{300(0),300(1)}에 존재함이 다시 한번 확인되어야 할 것이다.
단계(1202)에서, 포인터(P0)는 앤드 게이트(322) 및 익스크루시브 오아 게이트(330)을 거쳐 레지스터(300(0))로 직렬로 시프트 되어 나가고, 포인터(P1)는 앤드 게이트(326)와 익스크루시브 오아 게이트(328),(330)를 거쳐 레지스터{300(1)}로 직렬로 시프트 되어 나간다. 단계(1204)에서, 포인터 P0 및 P1은 S_SUM 신호로써 표시되는 합산값과 함께 익스크루시브 오아 게이트(330)에 의해 합산된다.
이후, 반전 동작이 P0+ P1의 합산값에 대해 수행된다. 단계(1208)에서, P0+ P1합산값은 레지스터(400)로 로드된다. 단계(1210)에서, 비트 지향의 컨벌루션은 레지스터(400, 401)를 레지스터(400, 401)를 이용하여 이루어진다. 비트 지향의 컨벌루션이 이루어지는 동안, α 피드백은 가산기(490) 및 피드백 회로(450)를 통해 레지스터(400)으로 인가된다. 본 발명의 인용으로서 사용된, 1993년 11월 4일 크리스 주크(Chris Zook)에 의해 제출된 “유한필드 인버전”이란 명칭의 미국 특허 출원 08/147,758호에서 알 수 있는 바와 같이, 컨벌루션은 레지스터(401)내의 m 비트 값에 대응되는 전기적 신호를 발생시키고 저장한다. 레지스터(401)내의 값은 레지스터(400)의 내부 곱(β 기준 표시에서의 P0+P1합산값을 가지는)과 αkB(여기서 B는 레지스터(401)내의 값)이 k < m-1인 범위에서 같도록 하기 위하여 첫 번째 기준 표시내에서 컨벌루션에 의해 발생된다. 따라서, 컨벌루션은 α 기준 표시에서 산출된 (P0+P1)-1값과 함께, 레지스터(401)내의 P0+P1합산값의 반전된 값을 산출한다. 반전 동작과 관련하여, 제4도의 α0는 t=0이 되는 칼이 선택되고, 이에 따라 제4도 회로에 의해 수행되는 반전 동작을 위한 a-t곱수는 1이 된다.
DATA_TIME 단계의 동작이 완료되면, 레지스터(401)내에 존재하는 짝수 인터리브 코드워드에 대한 두 포인터의 반전된 합산값(발생됨이 요구되는 상황에서)과 짝수 및 홀수 인터리브 코드워드에 대한 신드롬들은 레지스터(300, 302)에 각각 저장되고, 짝수 코드워드에 대한 포인터는 레지스터(640)에 저장되며 홀수 코드워드에 대한 포인터는 레지스터(642)에 저장된다.
[동작]
[에러 패턴 발생(컴퓨터 데이터/포인터 모드)]
상술한 바와 같이, 신드롬들 S0, S1이 DATA_TIME 단계 동안 발생기(20)에 의하여 짝수 인터리브 코드워드 및 홀수 인터리브 코드워드에 대해 발생한다. 코드워드에 대한 신드롬의 발생에 뒤따르는 PTR_TIME 단계에서, 계산부(30)는 코드워드에 대해 2개의 에러 패턴들(E0, E1)을 발생시킨다. PTR_TIME 단계에서, 계산부(30)는 먼저 짝수 인터리브 코드워드에 대한 에러 패턴들을 발생시키고 그 다음으로 홀수 인터리브 코드워드에 대한 에러 패턴들을 발생시킨다.
코드워드에 대한 에러 패턴 발생은 두 경우 중 하나에서 발생된다. 에러 패턴 발생의 제1의 경우는 코드워드가 두 포인터 이하를 가질 때 발생된다. 에러 패턴 발생의 제2의 경우는 코드워드가 두 포인터를 가질 때 발생된다. 에러 패턴 발생의 제1의 경우는 제13도에, 에러 패턴 발생의 제2의 경우는 제14도에 도시한다.
제1의 경우에 있어, 코드워드에 대해 단일 에러 포인터(PO)가 존재한다면 그 코드워드에 단일 에러 패턴은 S0가 될 것이다. 즉, 코드워드에 대한 에러 패턴 E0는 S0, 즉, E0=S0(S0는 코드워드에 대한 제1의 신드롬)가 된다. 그러나, 이 단일 에러의 경우에 있어, 계산부(30)는 에러에 대해 그 스스로의 시스템 포인터(버퍼 포인터에 반대되는)를 발생시키며, 시스템 포인터 및 버퍼 포인터가 코드워드의 동일 바이트에 대한 두 포인터임을 보여준다.
제1의 경우의 에러 패턴 발생의 개요는 다음과 같은 관계로 동작한다.
Figure kpo00001
이 관계가 맞다면, 단일 에러의 존재가 확인된다.
상기에 있어, 제2도의 단계(1302)에서 계산부(30)는 시스템 포인터를 계산한다. 단계(1302)에 관련된 세부 사항은 몇 개의 하위 단계를 포함한다. 하위 단계(1302-2)에서, S0는 β 기준 표시로 변환(상기 기술한 방법과 동일한 방법으로)되고 레지스터(402)내로 이동된다. 그러면, 하위 단계(1302-6)에서 상수 α-1는 레지스터(400)로 로드(멀티플렉서(440)를 통하여)되고 상수 α0은 레지스터(401)로 로드(멀티플렉서(441)를 통하여)된다. 단계(1302-8)에서, 비트 지향의 컨벌루션은 시간에 따른 피드백을 포함하여 레지스터(400, 402)와 함께 이루어진다. 단계(1302-8)와 관련하여, 멀티플렉서(440, 443)는 각 피드백 회로(450, 452)로부터 피드백이 이루어질 수 있도록 동작된다. 컨벌루션 동안, SOαL값은 레지스터(402)내에 보유된다. 컨벌루션이 이루어질 때, 하위 단계(1302-10)에 나타낸 바와 같이 레지스터(402)의 내용들(즉, S0αL값)은 비교 회로(350)의 가산기(62)에 의해 S1[레지스터{300(1)}에 존재하는]에 더해진다. S0αL및 S1값이 같을 때(오아 게이트(372)에서 검출됨), SEDB 신호는 턴 오프 된다. SEDB 신호가 턴 오프(하위 단계(1302-12)에서 결정됨)되지 않는다면, 그 코드워드는 교정할 수 없는 것으로써 판단된다(하위 단계(1302-14)). SEDB 신호가 턴 오프 되면, 레지스터(400)내의 값이 코드워드에 대한 계산된 시스템 포인터가 된다.
단계(1302)에 계산된 시스템 포인터가 존재하게 되면, 단계(1304)에서 계산부(30)는 시스템 포인터가 버퍼에 제공되는 포인터와 동일하다는 것을 확인시켜준다. 비교를 수행하기 위하여, 하위 단계(1304-2)에서 시스템 포인터는 레지스터(400)로부터 레지스터(402)로 이동된다. 하위 단계(1304-4)에서 버퍼 포인터는 레지스터(400)로 이동된다. 시스템 포인터(가산기(362)를 통해 루트가 형성된)는 가산기(364, 제3(a)도 참조)에 의해 버퍼 포인터에 합산된다(하위 단계(1304-6)). 비교 회로(360)에 의해 발생되는 출력 신호(ROOT)는 포인터 값이 동일할 때 턴 온 된다. 만일 출력 신호(ROOT)가 “하이”가 되지 않는 다면(하위 단계(1304-8)), 코드워드는 교정할 수 없게 된다(하위 단계(1304-8)). 출력 신호(ROOT)가 “하이”가 될 때, 버퍼 포인터가 확인되는 것이다(하위 단계(1304-12)).
버퍼 포인터가 단계(1304)에서 교정될 수 있는 것으로 확인되면, 단계(1306)에서 버퍼 포인터는 교정부(60)의 P0 포인터 레지스터내로 역 이동된다. 단지 하나의 에러만이 존재하므로, 이동하기 바로 전에 레지스터(400) 내의 버퍼 포인터의 값은 시간에 따라 피드백(α8) 되고, 이에 따라 버퍼 포인터는 오프셋 버퍼 포인터(즉, αL+8)가 된다. P1 포인터는교정부(60)에서 이 코드워드에 대해 0으로 세트된다(단계(1308)). 제1의 경우의 에러 패턴 발생의 끝 부분에서, 에러 패턴 S0=E0가 레지스터(300)에 남게 된다(α 기준 표시로).
제2의 경우의 에러 패턴이 발생되는 동안, 두 에러 값들(E0, E1)은 계산부(30)에 의해 계산된다. 이들 두 에러 값들은 하기와 같이 계산된다.
Figure kpo00002
따라서, E1은 E0보다 우선적으로 결정되어야 한다.
제14도는 에러 패턴 발생의 제2의 경우와 관련된 기본적인 단계를 도시한다. 단계(1402)에서, 신드롬(S1, α 기준 표시에서)은 제4도의 기준 변환 회로를 필수적으로 이용하여 β 기준 표시로 변환된다. 변환은 S1-L2H 신호(S1을 최상위 급으로부터 직렬로 판독되어 이를 최하위 급의 비트까지 계속되도록 하는)를 인에이블시키고 피드백 회로(450)로부터 시간에 따라 피드백을 시킴으로써 이루어지고, 이에 따라 S1(반전된 비트 급에서 판독되는) 비트가 피드백 신호에 합산되며, 이로써 레지스터(400)내에 S1의 β 기준 표시를 산출하게 된다. 기준 변환이 이루어지면, β 로 변환된 S1값은 레지스터{300(1)}내로 역 이동된다. 버퍼 포인터 P0(αL0의 형식)는 교정부(60)로부터 레지스터(400)내로 이동하고, S0는 레지스터(401)로 이동하며, 동시에 레지스터(401)에 저장된 그 전의 내용들(즉, (P0+P1)-1)은 일시적으로 교정부(60)로 이동한다. 단계(1404)에서, 팩터(S0αL0)는 레지스터(400)의 피드백에 의하여 얻어지고, 이로써 IP 라인위에 내부 곱 신호의 바람직한 값을 얻게 된다. S1+S0αL0항은 레지스터{300(1)}의 내용(S1)을 보유하는 IP 라인위의 직렬 결과를 합산하는 합산 회로(320)에 의해 단계(1406)에서 얻어진다. 곧, 레지스터{300(1)}의 내용 즉, (1+S0αL0)은 레지스터(400)로 이동한다. 이후, 단계(1408)에서, E1에 대한 결과값이 하기의 곱셈 요소(포인터 레지스터 P0[즉, 레지스터{640(0)}로부터 얻어지고 레지스터(400)에 저장된 S1+S0αL0팩터에 의해 레지스터(401)로 이동하는]에 의해 발생된다.
Figure kpo00003
곱셈은 비트 지향의 컨벌루션이 레지스터(400)에 의해 피드백 회로(450)를 통해 시간에 따라 피드 백되는 동안 이루어진다. IP 신호로 발생되는 내부 곱의 결과값은 레지스터{300(1)}에 인가되고, El이 된다.
단계(1410)와 단계(1412) 및 단계(1414)는 E0를 얻기 위하여 실행된다. 단계(1410)에서, E1은 제5도의 기준 변환 회로를 필수적으로 이용하여 β 기준 표시에서 다시 α 기준 표시로 변환된다. 이러한 변환은 E1을 레지스터{300(1)}로부터 레지스터(400)로 이동(앤드 게이트(482)를 통해) 및 피드백 회로(450)로 부터의 시간에 따른 피드백에 의해 비트를 가산시킴으로써 이루어진다. 이제, E1(레지스터(400)내 비트가 역전된 α 기준 표시내의)은 레지스터{300(0)}로 이동된다. S0(여전히 α 기준 표시내에 있는)는 레지스터{300(1)}가 “로우”에서 “하이”로 시프트되는 동안 레지스터(300(0))로 이동된다. 단계(1412)에서 합산값(S0+E1= E0)은 합산 회로(320)에 의해 얻어지고, 레지스터(300(0))에 다시 돌려보내 진다. 그러면, 계산된 에러 패턴 값 E0및 E1을 가지고, 단계(1414)에서 코드워드에 대한 에러 패턴 E0, E1을 교정부(60)의 에러 레지스터로 이동시킨다.
[동작]
[교정(컴퓨터 데이터/포인터 모드)]
코드워드의 교정되는 쌍(짝수 인터리브 및 홀수 인터리브)이 있을 때, 교정부(60)는 그의 포인터 레지스터(640, 650)에 확인된 포인터 P0, P1을 저장하고, 그의 에러 레지스터(610, 620)에 에러 패턴 E0, E1을 저장한다. 교정부(60)는 교정 목적을 위한 DATA_TIME 단계 동안 버퍼내에서 처리되는 블록을 억세스한다. 블록내의 각 코드워드는 계속적인 클럭 주기 동안 억세스된다. 코드워드에 대한 포인터(제6도의 LOC_E 라인으로 출력되는)가 현재 코드워드의 시간에 따른 바이트에 대응할 때, 그에 대응하여 멀티플렉서(635)를 통해 버스(ERR)로 접속되는 에러 패턴(E0또는 E1)은 버퍼내의 잘못된 바이트를 교정하는 데에 이용된다. 이 교정 처리와 동시에, EDC 체커 시스템(70)은 버퍼의 블록에 대한 CRC 체크를 수행한다(“동작 : EDC 체킹” 참조)
[동작]
[개관(서브코드를 가지는 오디오)]
동작의 서브코드 모드는 제15도에 도시한 기본적인 단계들로 요약된다. 서브코드 모드에서, 제1도의 에러 교정 시스템은 디지털 오디오 데이터 내에 산재한 서브코드 팩(제8(a)도에 도시함)을 가지고 에러 교정을 수행하고자 한것이다. 단계(1510A, 1510B)는 팩에 대한 신드롬의 발생에 관한 것이다. 단계(1510A) 동안, 제1의 네 바이트(팩의 “Q” 부분)는 Q 부분에 걸쳐 신드롬 S0, S1을 발생시키고 전체 팩에 걸쳐 신드롬 S2, S3를 발생시키는 데에 사용된다. 단계(1510B) 동안, 팩의 남아있는 바이트(즉, 팩의 “P” 부분)는 전체팩에 걸쳐 S2, S3의 발생을 끝마치고 팩의 “P” 부분에 걸쳐 신드롬 S0S1을 발생시키도록 하는 데에 사용된다. 제8(a)도를 통해 이해할 수 있듯이, 본 실시예에서 팩의 첫 번째 또는 “P” 부분은 먼저 4개의 6-비트 바이트(즉, 0∼3)를 구성하고 팩의 제2의 또는 “Q” 부분은 남아있는 20개의 6-비트 바이트(즉, 4∼23)를 구성한다. 일반적으로, 팩의 제1의 또는 “Q” 부분은 다른 것들 가운에 팩을 확인하기 위한 정보로서 사용되고 반면, 팩의 제2의 또는 “P” 부분은 디지탈 데이터를 포함한다.
신드롬(팩의 “Q” 부분에 걸친 S0, S1; 팩의 “P” 부분에 걸친 S0, S1; 팩전체에 걸친 S2, S3)의 발생 후, 시스템 제어기(10)는 신드롬을 분석한다(단계(1520) 참조). 이 단계(1520)의 분석은 네 개의 잠정적인 경우로 나뉘며 세 가지의 경우에 대해 각각 다른 방법을 제시한다. 첫 번째 경우에 의하면, 에러가 팩의 “P” 부분에서만 발생하고 “Q” 부분에서는 발생하지 않는다면, 시스템 제어기(10)로 하여 이중 에러 검출 방법{DEB, 제15도의 단계(1530) 참조}을 수행할 수 있도록 한다. 제2의 경우에 의하면, 팩의 “P” 부분 및 “Q” 부분 모두에서 발생한다면, 시스템 제어기(10)로 하여 단일 에러 검출 방법{SED, 제15도의 단계(1520) 참조}을 팩의 두 부에 걸쳐 수행할 수 있도록 하고 그 후에 교정된 코드워드에 걸쳐 신드롬을 재발생시키도록 한다(제15도의 단계(1541) 참조). 제3의 경우에 의하면, 에러가 팩의 “Q” 부분에서만 발생하고 “P” 부분에서는 발생하지 않는 다면, 시스템 제어기(10)로 하여 4중의 에러 검출방법(7D, 제15도의 단계(1550) 참조)을 수행하도록 한다. 네 번째 경우에 의하면, 모든 신드롬들은 0이라고 규정하는데, 이는 팩내에 어떤 에러도 존재하지 않음을 의미한다.
[동작]
[신드롬 발생(서브코드를 가지는 오디오)]
제15도에 도시한 바와 같이, 서브코드에 대한 신드롬의 발생은 2개의 별개의 발생 스테이지를 갖는다. 단계(1510A) 동안, 첫 번째 네 바이트(팩의 “Q” 부분)는 Q 부분에 걸쳐 신드롬 S0, S1을 발생시키고 전체 팩에 걸쳐 신드롬 S2, S3를 발생시키는 데에 사용된다. 단계(1510B) 동안, 팩의 남아있는 바이트(즉, 팩의 “P” 부분)는 전체 팩에 걸쳐 S2, S3의 발생을 끝마치고 팩의 “P” 부분에 걸쳐 신드롬 S0, S1을 발생시키도록 하는 데 사용된다.
서브코드 신드롬이 발생되는 동안, 서브코드 팩의 각 바이트(제8(a)도 참조)는 발생기(20)로 2번 즉, 한번은 서브코드 신드롬 S0, S1의 발생에 대해서고, 다른 한번은 신드롬 S2, S3에 대해서 클럭된다. 따라서, 코드워드에 대한 신드롬이 발생될 때, 레지스터(206, 208)는 컴퓨터 데이터에 대한 신드롬이 발생할 때의 다른 인터리브를 위해서라기 보다는 서브코드에 대한 다른 신드롬을 위하여 사용된다.
표 1은 레지스터(206, 208)의 시프팅 및 서브코드 신드롬의 발생을 위한 피드백 곱셈 연산을 도시한다.
[표 1]
Figure kpo00004
표 1의 첫째 줄은 첫 번째 데이터 바이트가 레지스터내로 어떻게 로드되는지를 보여준다. 즉, 각 레지스터내의 첫 번째 데이터 바이트는 그들로 부터 발생될 신드롬에 대해 S0, S1, S2및 S3로 명명된다. 표 1의 첫째 줄에 이어 여섯 단계가 표 1의 다음 여섯 줄에 대응하여 실행된다. 표 1의 다섯째 및 여섯째 줄은 두 클럭 주기 즉, 첫 번째는 다섯 째 줄에 있어 신드롬 S0및 S1에 대해서이고, 제2의는 (레지스터 값이 시프트된 후) 여섯째 줄에있어 신드롬 S2및 S3에 대한 클럭 주기내에서 제2의 데이터 바이트의 합산을 보여준다. 일곱째 줄은 도시하지 않은 이후의 데이터 바이트의 합산에 대한 준비로서 신드롬의 이후의 시프팅을 보여준다. 이후의 데이터 바이트의 합산에 앞서서 각 신드롬의 값(즉, S1α+D)에 대해 갱신되는 표 1의 일곱번째 줄의 표시는 다음 데이터 바이트의 부가에 앞서 S1DL 될 것이다.
표 1의 일곱 번째 줄 이후에, 그 후의 데이터 바이트가 표 1로서 설명한 바와 같은 방법으로 가산된다. 즉, 각 서브코드 데이터 바이트에 대해, 표 1의 제2의 줄부터 일곱 번째 줄에 의해 영향을 받는 여섯 단계는 새로운 데이터 바이트의 도입에 관련된 여섯 클럭 중 단지 두 클럭만을 가지고 실행된다.
표 1의 여섯 단계에 관해 레지스터(206)의 내용이 항상 레지스터(208) 내로 시프팅됨을 기억해야 할 것이다. 레지스터(206)는 레지스터(208)에 항상 “1” 또는 “0”을 공급한다. 곱셈이 “1” 또는 “α”에 의해서 일어나는지의 여부는 멀티플렉서(230, 240)의 셋팅 기반에 따라 달라진다.
표 1의 여섯 단계가 네 번 실행된 후(즉, 첫 번째 네 개의 데이터 바이트가 발생기(20)에 합산된 후), 레지스터{208(0)}에는 팩의 “Q” 부분에 걸쳐 발생된 서브코드 신드롬 S0을 보유하고 레지스터{(208(1)}는 팩의 “Q” 부분에 걸쳐 계산된 서브코드 신드롬 S1을 보유한다. 이때, 팩의 “Q” 부분 전반에 걸친 서브코드 신드롬 S0, S1은 계산부(30)로 로드되어 들어가고 이로써, 제15도의 단계(1510A)가 완료된다.
팩의 “Q” 부분에 걸쳐 신드롬 S0, S1의 오프-로딩 후, 레지스터(206, 208)의 내용들은 다시 스위치 되고(즉, 표 1의 마지막 줄에서와 같이) 여섯단계는 팩의 다섯째 줄 및 나머지 바이트를 위해 반복된다. 그러나, 팩의 “P” 부분에 걸쳐 신드롬 S0, S1을 발생시키기 위하여, 팩의 “Q” 부분에 걸친 신드롬 S0, S1을 보유하는 레지스터가 클리어 되고, 이에 따라 팩의 다섯 번째 바이트가 레지스터내로 로드될 수 있다.
따라서, 서브코드 팩의 24 바이트 모두가 발생기(20)내로 들어가고, 표 1의 단계가 각 바이트에 대해 수행된 후, 레지스터(208(0), 208(1))는 결국 팩의 “Q” 부분에 걸쳐 형성된 서브코드 신드롬 S0, S1을 보유하게 될 것이고, 레지스터(206(0), 206(1))는 결국 팩 전반에 걸쳐 형성된 서브코드 신드롬 S2, S3을 각각 보유하게 될 것이며, 이로써 제15도의 단계(1510B)가 완료된다.
[동작]
[이중 에러 검출(서브코드를 가지는 오디오)]
제15(a)도는 제15도의 단계(1530)에서 실행되는 하위단계를 보여준다. 즉, 서브코드 신드롬의 산출이 에러가 서브코드 퍽의 “P” 부분에만 존재하고 “Q”부분에는 존재하지 않음을 나타낼 때이다. 따라서, 제15(a)도는 서브코드에 대한 본 발명의 이중 에러 검출(DED) 절차를 포함하는 하위단계를 보여준다.
하위단계(1530-2)에서, 에러 위치 설정 다항식이 하위단계(1530-4)의 루트(root) 검출을 위하여 계산부(30)에 의하여 사용 가능한 형태로 산출된다. 일반적으로, 에러 위치 설정 다항식은 하기의 제1 서브코드 방정식으로 표시된다.
Figure kpo00005
그러나, 루트의 검출이 보통 끝에서부터 이루어지므로, 제1 서브코드 방정식에는 α-n이 곱해져야 하고(이때 n=19) 하기의 루트 검출에 이용가능한 제2 서브코드 방정식을 산출하기 위해 Δ 가 곱해질 수 있다.
Figure kpo00006
제2 서브코드 방정식의 에러 위치 설정 다항식은 제15도의 하위단계(1530-2-2)에서 하위단계(1530-2-8)까지에 걸쳐 보여지는 방법으로 산출된다. 제2 서브코드 방정식의 에러 위치 설정 다항식은 제15도의 단계(1510A, 1510B)에서 발생된 신드롬 S0(“P”에 걸친), S1(“P”에 걸친), S2 및 S3을 이용하여 산출된다. 먼저, 하위단계(1530-2-2)에서 σ′2α-n항은 하기의 제3 서브코드 방정식을 이용하여 얻어진다.
Figure kpo00007
그러면, 하위단계(1530-2-4)에서, σ2α-2n항은 제3 서브코드 방정식으로 부터 얻어진 값인 α-n을 곱함으로써 구할 수 있다. 하위단계(1530-2-6)에서 σ1α-n항은 하기위 제4 서브코드 방정식을 이용하여 구할 수 있다.
Figure kpo00008
마지막으로, 단계(1530-2-8)에서, △ 항은 하기의 제5 서브코드 방정식을 이용하여 구할 수 있다.
Figure kpo00009
단계(1530-4)에서, 계산부(30)는 σ2α-2n값을 레지스터(400)로 로딩시키고, △ 를 레지스터{300(1)}에 로딩시키며, σ1α-n값을 레지스터(402)로 로딩시키고, 제3(a)도의 가산회로를 이용하여 상기 세 레지스터의 값들을 더함으로써, 루트 검출을 한다. 각 루트 검출의 반복에 있어, 레지스터(400)는 피드백과 함께 두 번 클럭되고(α-2n항에 대해) 레지스터(402)는 피드백과 함께 한번 클럭(α-n항에 대해)된다.
루트가 위치하면, αL형식의 에러 위치 설정 바이트는 발생부(20)에 의해 발생된다. 즉, 루트가 위치하면, GDAT의 0비트가 세트(하위단계(1530-6)에서 나타내는 바와 같이)된다. 발생부(20)에 의한 에러 위치 설정 바이트의 발생은 포인터를 가지는 컴퓨터 데이터(상기에서 설명된 바 있는)와 함께 발생되는 αL형식의 에러 포인터 바이트의 유사 발생을 참고로 하여 이해될 수 있다.
마지막 값은 하위단계(1530-4)의 컨벌루션 동안 검출된 루트의 수 및 위치에 대하여 하위단계(1530-8) 및 하위단계(1530-12)에서 결정된다. 이러한 값들은 어떤 타입의 교정이 (존재한다면) 검출된 루트를 가지는 에러에 대해 이루어졌는가를 판단한다.
예를 들어, 하위단계(1530-8)에서 첫 번째 세 위치에서 루트가 검출됨이 판단되면, 하위단계(1530-10)에서 계산부(30)는 단일 에러 교정 절차를 수행한다. 하위단계(1530-10)에서 수행되는 단일 에러 교정 절차는 근본적으로 상기 설명한 바 있는(“동작 : 포인터 처리”(첫번째 경우)와 “동작 : 에러 패턴 발생”(케이스2)라는 부제의 상기 설명 참조) 포인터를 가지는 컴퓨터에 대해 적용되는 방법과 동일하다. 하위단계(1530-10)의 포인터 처리 및 에러 패턴 발생에 있어, 서브코드 신드롬 S0, S1(두개 모두 팩의 “P”부에 걸쳐 발생됨)이 사용된다. 에러 패턴 발생의 결과로써, 교정부(60)는 서브코드 팩과 “P” 부분내의 단일 에러 바이트를 교정하기 위하여 에러 포인터 및 에러 패턴을 사용한다.
하위단계(1530-12)에서 서브코드 팩내에 루트가 2개 이하임이 판단되면, 그 팩은 교정할 수 없는 것으로 판단된다.
서브코드 팩에 2개의 루트가 존재하는 것으로 판단되면, 계산부(30)는 2개의 에러를 교정하기 위하여 이중 삭제 교정 절차(하위단계(1530-14)에 나타냄)를 수행한다. 하위단계(1530-14)에서 수행되는 이중 삭제 교정 절차는 근본적으로 상기 설명한 바 있는(“동작 : 포인터 처리”(첫번째 경우)와 “동작 : 에러 패턴발생”(두번째 경우)라는 부제의 상기 설명 참조) 포인터를 가지는 컴퓨터 데이터에 대해 적용되는 방법과 동일하다.
하위단계(1530-14)에서의 포인터 처리 및 에러 패턴 발생에서, 서브코드 신드롬 S0, S1(두개 모두 팩의 “P” 부분에 걸쳐 발생되는)이 이용된다. 에러 패턴 발생의 결과로써, 교정부(60)는 서브코드 팩의 “P” 부분내 2개의 에러 바이트를 교정하기 위하여 에러 포인터 및 에러 패턴을 사용한다.
계산 단계가 본 명세서에 명확히 기술되지는 않았지만, 계산부(60)가 하위단계(1530-4)의 루트 검출을 위해 사용되는 σ2α-2n, △, 및 σ1α-n을 추정함을 이해할 수 있을 것이다.
[동작]
[단일 에러 검출(서브코드를 가지는 오디오)]
제15도의 단계(1520)에서 서브코드 팩의 “Q” 부분, “P” 부분 모두(제8(a)도 참조)에 에러가 존재하는 것으로 판단되면, 단일 에러 검출 동작이 서브코드 팩의 양쪽 부분 모두에 대해 수행된다(단계(1540(1)).
단계(1540)의 단일 에러 검출(SED) 동작은 제15(b)도에 좀 더 상세히 도시한다. 첫 번째 하위단계(1540-2)에서 에러 검출/교정은 팩의 “Q” 부분에 대해 수행된다. 하위단계(1540-2)에서, 팩의 “Q” 부분에 걸쳐 발생되는 서브코드 신드롬 값 S0, S1은 컴퓨터 데이터의 케이스 1에 관련하여 상기 설명한 바와 같이 동일한 에러 포인터 처리 및 에러 패턴 발생 동작을 하게 된다. 이때, “동작 : 포인터 처리”(케이스 1)와 “동작 : 에러 패턴 발생”(케이스 1)라는 부제의 상기 설명을 참조하길 바란다. 하위단계(1540-2)에 관련하여, 교정부(60)는 팩의 “Q” 부분내의 에러 바이트를 교정하기 위해 발생되는 에러 포인터 및 에러 패턴을 이용한다.
제2의로, 하위단계(1540-4)에서, 에러 검출/교정은 팩의 “P” 부분에 대해 수행된다. 하위단계(1540-4)에서, 팩의 “Q” 부분에 걸쳐 발생된 서브코드 신드롬 값 S0, S1은 상기 케이스 1의 컴퓨터 데이터에 관해 설명한 바와 같이 에러 포인터 처리 및 에러 패턴 발생을 위해 이용된다. 이때, “동작 : 포인터 처리”(첫번째 경우)와 “동작 : 에러 패턴 발생”(첫번째 경우)라는 부제의 상기 설명을 다시 한번 참조하길 바란다. 하위단계(1540-2)에 관련하여, 교정부(60)는 서브코드 팩의 “P” 부분부내의 에러 바이트를 교정하기 위하여 발생되는 에러 포인터 및 에러 패턴을 이용한다.
제15도의 단계(1541)에 나타낸 바와 같이, 단계(1540-2) 및 단계(1540-4)에서 각각 서브코드 팩의 “Q” 부분 및 “P” 부분의 교정이 이루어진 후, 모든 서브코드 신드롬은 상기 설명한 바와 같은 방법으로 재발생된다(“동작 : 신드롬 발생(서브코드를 가지는 오디오)”참조). 재발생되는 모든 신드롬이 0이되면, 서브코드 팩은 교정할 수 있는 것으로 판단된다.
[동작]
[4중(Quadruple) 삭제 교정(서브코드를 가지는 오디오)]
제15도의 단계(1520)에서 서브코드 팩의 “Q” 부분만 에러가 존재한다고 판단되면 즉, 팩의 “P” 부분에 걸쳐 발생되는 신드롬 S0, S1이 0이 되면, 단계(1550)의 4중 삭제 교정이 서브코드 팩의 “Q” 부분에 대해 수행된다.
하위단계(1550-2)에서 네 개의 에러 패턴 E0, E1, E2및 E3를 계산한다. 각 에러 패턴은 하기의 방정식을 이용하여 계산된다.
Figure kpo00010
여기서, ak0, ak1, ak2및 ak3에 대한 로그값은 표 2에 따라 선택된다.
Figure kpo00011
하위단계(1550-2)에서 네 개의 에러 패턴 E0, E1, E2및 E3가 계산된 후, 하위단계(1550-4)에서 에러 패턴들 중 적어도 하나가 0인지를 판단하게 된다. 이것이 오교정의 가능성을 줄이게 한다. 에러 패턴들 중 0이 없다면, 그 서브코드는 교정할수 없는 것으로 간주된다. 에러 패턴들은 서브코드 팩의 “Q” 부분내의 3개 또는 그 이하의 에러 바이트를 교정하기 위하여 교정부(60)에 의해 이용된다.

Claims (53)

  1. 제1의 레지스터 뱅크(400)와, 제2의 레지스터 뱅크(401)와, 제3의 레지스터 뱅크(402)와, 승산기(450) 및 가산기(428)를 포함하고, 데이터의 에러 교정에 관련된 값을 표시하는 전기적인 신호에 관련된 동작을 수행하기 위한 회로에 있어서, 상기 제1 레지스터 뱅크(400) 및 제3 레지스터 뱅크(402)는 제1 또는 제3의 레지스터 뱅크의 내용을 승산하기 위해 각각의 뱅크에서 선택된 레지스터로 접속된 피드백 승산기(450, 452)를 구비하고; 상기 회로는 제1 레지스터 뱅크(400)의 내용 및 레지스터의 제2의 뱅크의 내용(401)에 관하여 내부 곱을 발생시키는 내부 곱 회로(404)를 더 포함하며; 상기 가산기(428)는 내부 곱 회로(404)에 의해 발생되는 내부 곱을 적어도 사용하는 제2 레지스터 뱅크(401)의 내용 및 제3 레지스터 뱅크(402)의 데이터를 갱신시키고; 상기 각각의 레지스터 뱅크(400, 401, 402)는 직렬 입력 단자를 구비하여 멀티비트의 값이 직렬로 로드될 수 있게 하는 것을 특징으로 하는 에러교정 계산회로.
  2. 제1항에 있어서, 상기 다수의 직렬 멀티비트 값 중 선택된 하나의 값이 상기 제2의 레지스터 뱅크내로 로드될 수 있도록 상기 제2의 레지스터 뱅크(401)의 상기 직렬 입력 단자를 접속하는 제2의 뱅크 로딩 스위치(441)를 더 포함하는 것을 특징으로 하는 회로.
  3. 제2항에 있어서, 상기 제2의 뱅크 로딩 스위치(441)는 멀티플렉서인 것을 특징으로 하는 회로.
  4. 제2항에 있어서, 상기 회로는 제1의 멀티비트 스토리지 레지스터(300(0)); 및 제2의 멀티비트 스토리지 레지스터(300(1))를 더 포함하고, 상기 제2의 뱅크 로딩 스위치(441)는 일단의 제2 뱅크 직렬 입력 라인과, 상기 제1의 멀티비트 스토리지 레지스터에 접속되는 상기 일단의 제2뱅크 직렬 입력 라인에 속한 제1의 라인 및 상기 제2의 멀티비트 스토리지 레지스터에 접속되는 상기 일단의 제2의 뱅크 직렬 입력 라인에 속한 제2의 라인을 포함하는 다수의 입력 라인에 접속되는 것을 특징으로 하는 회로.
  5. 제2항에 있어서, 상수 값이 상기 제2 뱅크 로딩 스위치(441)를 경유하여 상기 제2의 레지스터 뱅크(401)로 직렬로 로드되는 것을 특징으로 하는 회로.
  6. 제1항에 있어서, 상기 다수의 직렬 멀티비트 값 중 선택된 하나의 값이 상기 제3의 레지스터 뱅크로 로드될 수 있도록 상기 제3의 레지스터 뱅크의 상기 직렬 입력 단자를 접속하기 위한 제3의 뱅크 로딩 스위치(442)를 더 포함하는 것을 특징으로 하는 회로.
  7. 제6항에 있어서, 상기 회로는 제1의 멀티비트 스토리지 레지스터(300(0)); 및 제2의 멀티비트 스토리지 레지스터{300(1)}를 더 포함하고, 상기 제3의 뱅크 로딩 스위치(442)는 일단의 제3 뱅크(402) 직렬 입력 라인과, 상기 제1의 멀티비트 저장 레지스터에 접속되는 일단의 제3 뱅크 직렬 입력 라인에 속한 제1의 라인 및 상기 제2의 멀티비트 스토리지 레지스터에 접속되는 일단의 제3 뱅크 직렬 입력 라인에 속한 제3의 라인을 포함하는 다수의 입력 라인에 접속되는 것을 특징으로 하는 회로.
  8. 제6항에 있어서, 상수 값이 상기 제3 뱅크 로딩 스위치(442)를 경유하여 상기 제3의 레지스터 뱅크(402)로 직렬로 로드되는 것을 특징으로 하는 회로.
  9. 제6항에 있어서, 상기 내부 곱 회로(404)의 출력 신호는 제3 뱅크 로딩 스위치(442)를 경유하여 상기 제3의 레지스터 뱅크(402)로 직렬로 로드되는 것을 특징으로 하는 회로.
  10. 제6항에 있어서, 상기 제3의 레지스터 뱅크(402)의 내용은 제3 뱅크 로딩 스위치(442)를 경유하여 상기 제3의 레지스터 뱅크로 직렬로 로드되는 것을 특징으로 하는 회로.
  11. 제1항에 있어서, 상기 제1의 레지스터 뱅크(401) 및 제3의 레지스터 뱅크(402) 중 적어도 하나를 다수의 입력 라인 중 선택된 하나에 접속하기 위한 로딩 스위치(441, 442)를 더 포함하고, 이에 의해 다수의 멀티비트 값 중 하나가 입력라인에 로드될 수 있는 것을 특징으로 하는 회로.
  12. 제11항에 있어서, 상기 로딩 스위치(441, 442)는 멀티플렉서인 것을 특징으로 하는 회로.
  13. 제11항에 있어서, 상기 회로는 제1의 멀티비트 스토리지 레지스터(300(0)); 및 제2의 멀티비트 스토리지 레지스터{300(1)}를 더 포함하고, 상기 뱅크 로딩 스위치(441, 442)가 상기 제1의 멀티비트 스토리지 레지스터 및 상기 제2의 스토리지 레지스터 중 적어도 하나에 접속되는 것을 특징으로 하는 회로.
  14. 제4항, 제7항 또는 제13항에 있어서, 상기 회로는 합산 회로(320)를 더 포함하고, 상기 합산 회로의 적어도 하나의 입력 단자가 상기 제1의 스토리지 레지스터(300(0))와, 상기 제2의 스토리지 레지스터{300(1)}와; 및 상기 내부 곱 회로(404) 중의 적어도 하나에 접속되는 것을 특징으로 하는 회로.
  15. 제14항에 있어서, 상기 합산 회로(320)의 적어도 하나의 입력 단자는 상기 제1의 스토리지 레지스터(300(0))와; 상기 제2의 스토리지 레지스터{300(1)}와; 및 상기 내부 곱 회로(404) 중의 적어도 하나에 선택적으로 접속되는 것을 특징으로 하는 회로.
  16. 제13항에 있어서, 상수 값이 상기 뱅크 로딩 스위치(441)를 경유하여 상기 제2의 레지스터 뱅크(401)로 로드되는 것을 특징으로 하는 회로.
  17. 제11항에 있어서, 상기 로딩 스위치는 멀티비트 값을 상기 제2의 레지스터 뱅크(401)로 로딩하기 위한 상기 제2의 뱅크 로딩 스위치(441)인 것을 특징으로 하는 회로.
  18. 제11항에 있어서, 상기 로딩 스위치는 멀티비트 값을 상기 제3의 레지스터 뱅크(401)로 로딩하기 위한 상기 제3의 뱅크 로딩 스위치(442)인 것을 특징으로 하는 회로.
  19. 제1항에 있어서, 상기 제3의 레지스터 뱅크(402)에 대한 상기 피드백 승산기(452)의 값은 선택적으로 변화가능한 것을 특징으로 하는 회로.
  20. 제19항에 있어서, 상기 제3의 레지스터 뱅크(402)에 대한 상기 피드백 승산기(452)의 상기 값은 상기 피드백 승산기가 접속된 레지스터의 선택을 변화시킴으로써 선택적으로 변화가능한 것을 특징으로 하는 회로.
  21. 제19항에 있어서, 상기 제3의 레지스터 뱅크(402)에 대한 피드백 승산기(452)의 값은 이용되는 필드 발생기 다항식에 따라 선택적으로 변화가능한 것을 특징으로 하는 회로.
  22. 제19항에 있어서, 상기 제3의 레지스터 뱅크(402)에 대한 상기 피드백 승산기(452)의 값은 데이터의 에러 교정에 관계되어 상기 값의 필드 길이에 따라 선택적으로 변화가능한 것을 특징으로 하는 회로.
  23. 제1항에 있어서, 상기 제3의 레지스터 뱅크(402)에 대한 상기 피드백 승산기(452)는 상기 제3의 뱅크 로딩 스위치(442)에 의해 상기 제3의 레지스터 뱅크에 선택적으로 접속가능한 것을 특징으로 하는 회로.
  24. 제23항에 있어서, 상기 제3의 뱅크 로딩 스위치(442)는 멀티플렉서인 것을 특징으로 하는 회로.
  25. 제1항에 있어서, 상기 제 1 및 제3의 레지스터 뱅크(400, 402)는 피드백 레지스터 뱅크이며, 상기 피드백 레지스터 뱅크에 대한 상기 피드백 승산기의 값은 선택적으로 변화가능한 것을 특징으로 하는 회로.
  26. 제25항에 있어서, 상기 피드백 레지스터 뱅크(400, 402)에 대한 상기 피드백 승산기의 값은 상기 각각의 피드백 승산기(450, 452)가 접속되는 레지스터의 선택을 변화시킴으로써 선택적으로 변화가능한 것을 특징으로 하는 회로.
  27. 제25항에 있어서, 상기 피드백 레지스터 뱅크(400, 402)에 대한 상기 피드백 승산기의 값은 이용되는 필드 발생기 다항식에 따라 선택적으로 변화가능한 것을 특징으로 하는 회로.
  28. 제25항에 있어서, 상기 피드백 레지스터 뱅크(400, 402)에 대한 상기 피드백 승산기의 값은 데이터의 에러 교정에 관계된 상기 값의 필드 길이에 따라 선택적으로 변화가능한 것을 특징으로 하는 회로.
  29. 제25항에 있어서, 상기 피드백 레지스터 뱅크(400, 402)에 대한 상기 피드백 승산기(450, 452)는 피드백 뱅크 로딩 스위치(441 및 442)에 각각 접속되는 것을 특징으로 하는 회로.
  30. 제29항에 있어서, 상기 피드백 뱅크 로딩 스위치(441,442)는 멀티플렉서인 것을 특징으로 하는 회로.
  31. 제1항, 제11항 또는 제25항에 있어서, 상기 회로는 상기 제1의 레지스터 뱅크(400)와; 상기 제2의 레지스터 뱅크(401)와; 그리고 상기 제3의 레지스터 뱅크(402) 중 적어도 2개의 내용을 비교하기 위한 비교 회로(360)를 더 포함하는 것을 특징으로 하는 회로.
  32. 제1항에 있어서, 상기 제1의 레지스터 뱅크(400)에 접속하기 위한 로딩 스위치(440)을 더 포함하여, 복수의 멀티비트 값 중의 선택된 하나가 로드될 수 있으며, 상기 로딩 스위치는 상기 피드백 승산기(450) 및 멀티비트 스토리지 레지스터(300(0))로 접속되는 것을 특징으로 하는 회로.
  33. 제32항에 있어서, 상기 제1의 레지스터 뱅크(400)에 대한 상기 피드백 승산기의 값은 선택적으로 변화가능한 것을 특징으로 하는 회로.
  34. 제33항에 있어서, 상기 제1의 레지스터 뱅크(400)에 대한 상기 피드백 승산기의 값은 상기 피드백 승산기(450)가 접속되는 레지스터의 선택을 변화시킴으로써 선택적으로 변화가능한 것을 특징으로 하는 회로.
  35. 제33항에 있어서, 상기 제1의 레지스터 뱅크(400)에 대한 상기 피드백 승산기의 값은 이용되는 필드 발생기 다항식에 따라 선택적으로 변화가능한 것을 특징으로 하는 회로.
  36. 제33항에 있어서, 상기 제1의 레지스터 뱅크(400)에 대한 상기 피드백 승산기의 값은 데이터의 에러 교정에 관계된 상기 값의 필드 길이에 따라 선택적으로 변화가능한 것을 특징으로 하는 회로.
  37. 제32항에 있어서, 상기 멀티비트 스토리지 레지스터(300(0))는 직렬 시프트 레지스터인 것을 특징으로 하는 회로.
  38. 제37항에 있어서, 상기 멀티비트 스토리지 레지스터(300(0))는 양방향으로 시프트 가능한 직렬 시프트 레지스터인 것을 특징으로 하는 회로.
  39. 제32항에 있어서, 상기 로딩 스위치(440)는 멀티비트 상수값을 상기 제1의 레지스터 뱅크(400)로 직렬로 로드시키기 위해 접속되는 것을 특징으로 하는 회로.
  40. 제32항에 있어서, 상기 로딩 스위치(440)는 복수의 멀티플렉서(440A, 440B)를 포함하는 것을 특징으로 하는 회로.
  41. 제40항에 있어서, 상기 로딩 스위치(440)는 복수의 게이트를 포함하는 것을 특징으로 하는 회로.
  42. 제1항에 있어서, 상기 각각의 제1의 레지스터 뱅크, 제2의 레지스터 뱅크(401), 및 제3의 레지스터 뱅크(402)는 다수의 1비트 레지스터를 포함하는 것을 특징으로 하는 회로.
  43. 제1항에 있어서, 상기 회로는 멀티비트 값을 저장하기 위한 제1의 스토리지 레지스터(300(0))와; 멀티비트 값을 저장하기 위한 제2의 스토리지 레지스터(300(1))와; 제1의 뱅크 피드백 승산기에 의해 상기 제1의 레지스터 뱅크의 내용을 승산하고 그에 따른 제1의 뱅크 피드백 출력 값을 산출하기 위한 상기 제1의 레지스터 뱅크(400)에서 선택된 레지스터에 접속되는 제1 뱅크 피드백 승산기 (450)와; 다수의 직렬 멀티비트 값들 중 선택된 값이 상기 제1의 레지스터 뱅크내로 로드되고, 다수의 멀티비트 값들 중 선택된 값이 상기 제1의 뱅크 피드백 출력 값 및 상기 제1의 스토리지 레지스터(300(0))와 상기 제2의 스토리지 레지스터(300(1)) 중 적어도 하나에 저장된 값을 포함하는 상기 제1의 레지스터 뱅크내로 로드될 수 있도록, 상기 제1의 레지스터 뱅크(400)의 직렬 입력 단자에 접속되는 제1 뱅크 로딩 스위치(440)와; 다수의 직렬 멀티비트 값들 중 선택된 값이 상기 제2의 레지스터 내로 로드되고, 다수의 멀티비트 값들 중 선택된 값이 상기 제1의 스토리지 레지스터 (300(0))및 상기 제2의 스토리지 레지스터{300(1)} 중 적어도 하나에 저장된 값을 포함하는 상기 제1의 레지스터 뱅크에 로드될 수 있도록, 상기 제2의 레지스터 뱅크(401)의 직렬 입력 단자에 접속되는 제2 뱅크 로딩 스위치 (441)와; 제3의 피드백 승산기에 의해 상기 제3의 레지스터 뱅크의 내용을 승산하고 그에 따른 제3의 뱅크의 피드백 출력 값을 산출하기 위하여 제3의 뱅크(402)내의 선택된 레지스터에 접속되는 제3 뱅크 피드백 승산기(452)와; 다수의 직렬 멀티비트 값들 중 선택된 값이 상기 제3의 레지스터 뱅크 내로 로드되고, 다수의 멀티비트 값들 중 선택된 값이 상기 제3의 뱅크 피드백 출력 값 및 상기 제1의 스토리지 레지스터(300(0))와 상기 제2의 스토리지 레지스터(300(1) 중 적어도 하나에 저장된 값을 포함하는 상기 제3의 레지스터 뱅크내로 로드될 수 있도록, 상기 제3의 레지스터 뱅크의 직렬 입력 단자에 접속되는 제3 뱅크 로딩 스위치(442)와; 상기 제1의 스토리지 레지스터(300(0))와 상기 제2의 스토리지 레지스터(300(1)) 및 상기 내부 곱 회로(404) 중 적어도 하나에 그 입력 단자 중 적어도 하나가 접속되는 합산 회로(320)와; 상기 제1 레지스터 뱅크(400), 제2 레지스터 뱅크(401) 및 제3 레지스터 뱅크(402) 중 적어도 2개의 내용을 비교하는 비교 회로(360)를 포함하는 것을 특징으로 하는 회로.
  44. 제4항, 제7항, 제13항 또는 제43항에 있어서, 상기 제1 멀티비트 스토리지 레지스터(300(0)) 및 제2 멀티비트 스토리지 레지스터(300(1))는 직렬 시프트 레지스터인 것을 특징으로 하는 회로.
  45. 제44항에 있어서, 상기 제1 멀티비트 스토리지 레지스터(300(0)) 및 제2 멀티비트 스토리지 레지스터{300(1)} 중 적어도 하나는 양방향으로 시프트가능한 직렬 시프트 레지스터인 것을 특징으로 하는 회로.
  46. 제44항에 있어서, 상기 제1 멀티비트 스토리지 레지스터(300(0)) 및 제2 멀티비트 스토리지 레지스터{300(1)} 중 적어도 하나는 제1 레지스터 뱅크(400), 제2 레지스터 뱅크(401) 및 제3 레지스터 뱅크(402) 중 적어도 하나로부터의 값을 로드하도록 선택적으로 접속되는 것을 특징으로 하는 회로.
  47. 제46항에 있어서, 상기 제2 멀티비트 스토리지 레지스터(300(1))는 제1 레지스터 뱅크(400)로부터의 값을 로드하도록 선택적으로 접속되는 것을 특징으로 하는 회로.
  48. 제43항에 있어서, 상수 값이 관련된 뱅크 로딩 스위치(440, 441, 442)를 경유하여 레지스터 뱅크(400, 401, 402) 중 선택된 하나로 직렬로 로드될 수 있는 것을 특징으로 하는 회로.
  49. 제14항 또는 제43항에 있어서, 상기 합산 회로(320)의 출력단자는 제1 스토리지 레지스터(300(0)) 및 제2 스토리지 레지스터(300(1)) 각각에 선택적으로 접속되는 것을 특징으로 하는 회로.
  50. 제49항에 있어서, 상기 제1의 뱅크 피드백 승산기 및 제3 뱅크 피드백 승산기 중 하나는 선택적으로 변화가능한 피드백 승산기 값을 가지는 것을 특징으로 하는 회로.
  51. 제50항에 있어서, 상기 피드백 승산기 값은 상기 피드백 승산기가 접속되는 레지스터의 선택을 변화시킴으로써 선택적으로 변화가능한것을 특징으로 하는 회로.
  52. 제50항에 있어서, 상기 피드백 승산기의 값은 이용되는 필드 발생기 다항식에 따라 선택적으로 변화가능한 것을 특징으로 하는 회로.
  53. 제50항에 있어서, 상기 피드백 승산기의 값은 데이터의 에러 교정에 관련된 상기 값의 필드 길이에 따라 선택적으로 변화가능한 것을 특징으로 하는 회로.
KR1019970701715A 1994-09-16 1995-09-15 다목적에러교정계산회로 KR100305618B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/306,918 1994-09-16
US08/306,918 US5555516A (en) 1993-11-04 1994-09-16 Multipurpose error correction calculation circuit
US306,918 1994-09-16
PCT/US1995/012087 WO1996008875A1 (en) 1994-09-16 1995-09-15 Multipurpose error correction calculation circuit

Publications (2)

Publication Number Publication Date
KR970706657A KR970706657A (ko) 1997-11-03
KR100305618B1 true KR100305618B1 (ko) 2001-12-05

Family

ID=23187461

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970701715A KR100305618B1 (ko) 1994-09-16 1995-09-15 다목적에러교정계산회로

Country Status (6)

Country Link
US (1) US5555516A (ko)
EP (1) EP0781472B1 (ko)
JP (1) JP3250736B2 (ko)
KR (1) KR100305618B1 (ko)
DE (1) DE69517042T2 (ko)
WO (1) WO1996008875A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715262A (en) * 1995-07-12 1998-02-03 Lsi Logic Corporation Errors and erasures correcting reed-solomon decoder
GB9707861D0 (en) 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
US5854759A (en) * 1997-05-05 1998-12-29 Rsa Data Security, Inc. Methods and apparatus for efficient finite field basis conversion
US6286022B1 (en) 1997-11-18 2001-09-04 Rsa Security Inc. Efficient finite field basis conversion involving a dual basis
US5982895A (en) * 1997-12-24 1999-11-09 Motorola, Inc. Finite field inverse circuit for use in an elliptic curve processor
US6147631A (en) * 1998-12-09 2000-11-14 Cirrus Logic, Inc. Input sampling structure for delta-sigma modulator
US6260053B1 (en) 1998-12-09 2001-07-10 Cirrus Logic, Inc. Efficient and scalable FIR filter architecture for decimation
US6662336B1 (en) 1999-07-06 2003-12-09 Cirrus Logic, Inc. Error correction method and apparatus
GB2372337B (en) * 2000-08-18 2004-10-20 Sgs Thomson Microelectronics Error checking
US7743311B2 (en) * 2006-01-26 2010-06-22 Hitachi Global Storage Technologies Netherlands, B.V. Combined encoder/syndrome generator with reduced delay
US8139304B2 (en) * 2010-08-03 2012-03-20 International Business Machines Corporation Tape layout design for reliable ECC decoding
US9853810B1 (en) * 2016-09-30 2017-12-26 International Business Machines Corporation Message padding for bit-oriented and bit-reversed input messages

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0096165B1 (en) * 1982-06-15 1988-06-08 Kabushiki Kaisha Toshiba Apparatus for dividing the elements of a galois field
US5235857A (en) * 1986-05-02 1993-08-17 Forrest Anderson Real time 3D imaging device using filtered ellipsoidal backprojection with extended transmitters
US5218691A (en) * 1988-07-26 1993-06-08 Disk Emulation Systems, Inc. Disk emulation system
DE69033262T2 (de) * 1989-04-13 2000-02-24 Sandisk Corp EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
IT1231540B (it) * 1989-07-25 1991-12-17 Italtel Spa Procedimento e dispositivo per la decodifica con correzione di errore di un codice binario ciclico accorciato
US4994995A (en) * 1990-03-14 1991-02-19 International Business Machines Corporation Bit-serial division method and apparatus
US5323402A (en) * 1991-02-14 1994-06-21 The Mitre Corporation Programmable systolic BCH decoder
US5291584A (en) * 1991-07-23 1994-03-01 Nexcom Technology, Inc. Methods and apparatus for hard disk emulation
JPH0653843A (ja) * 1992-07-31 1994-02-25 Nec Corp 逐次復号装置
JPH06278920A (ja) * 1993-03-29 1994-10-04 Mitsubishi Heavy Ind Ltd コイル端垂れ下りの自動検出制御装置

Also Published As

Publication number Publication date
DE69517042T2 (de) 2000-12-21
EP0781472B1 (en) 2000-05-17
DE69517042D1 (de) 2000-06-21
EP0781472A1 (en) 1997-07-02
KR970706657A (ko) 1997-11-03
JP3250736B2 (ja) 2002-01-28
JPH10508441A (ja) 1998-08-18
WO1996008875A1 (en) 1996-03-21
US5555516A (en) 1996-09-10

Similar Documents

Publication Publication Date Title
KR100295478B1 (ko) 다목적 에러 교정 시스템
US4584686A (en) Reed-Solomon error correction apparatus
EP0387924B1 (en) Method and apparatus for decoding error correction code
EP0158510B1 (en) Error detection and correction in digital communication systems
KR100594241B1 (ko) 순방향 치엔 서치 방식의 리드 솔로몬 디코더 회로
US4928280A (en) Fast processor for multi-bit error correction codes
KR100305618B1 (ko) 다목적에러교정계산회로
US8102996B2 (en) Scrambler, descrambler and method, and disc apparatus
US20060156202A1 (en) Error detecting code addition circuit, error detection circuit and method, and disc apparatus
EP0105499B1 (en) Method capable of simultaneously decoding two reproduced sequences
JP3281387B2 (ja) Crc/edcチェッカシステム
JP3502583B2 (ja) 誤り訂正方法および誤り訂正装置
US5471486A (en) Methods and devices for encoding data symbols in accordance with a BCH code to obtain a code word in which parity symbols are located in the middle of the code word
EP0584864B1 (en) A hardware-efficient method and device for encoding BCH codes and in particular Reed-Solomon codes
EP0793352A2 (en) Apparatus for determining the error evaluator polynomial for use in a Reed-Solomon decoder
JP2578739B2 (ja) イレ−ジャ訂正方法
JP3310186B2 (ja) リード・ソロモン符号の復号回路
JPH09162753A (ja) 符号語の復号方式
JP2752510B2 (ja) 誤り訂正復号器
JP2570251B2 (ja) 有限体の演算回路
JPH10150367A (ja) 誤り訂正装置
JPH09258910A (ja) 磁気テープ装置の制御装置及びその再同期信号検出方法
JPH0653841A (ja) Bch符号誤り訂正復号回路
JPH07114374B2 (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
LAPS Lapse due to unpaid annual fee