KR19990077243A - 변형된 리드 솔로몬 코드 선택 및 인코딩 시스템 - Google Patents

변형된 리드 솔로몬 코드 선택 및 인코딩 시스템 Download PDF

Info

Publication number
KR19990077243A
KR19990077243A KR1019980705387A KR19980705387A KR19990077243A KR 19990077243 A KR19990077243 A KR 19990077243A KR 1019980705387 A KR1019980705387 A KR 1019980705387A KR 19980705387 A KR19980705387 A KR 19980705387A KR 19990077243 A KR19990077243 A KR 19990077243A
Authority
KR
South Korea
Prior art keywords
symbols
ecc
codeword
data
modified
Prior art date
Application number
KR1019980705387A
Other languages
English (en)
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 KR19990077243A publication Critical patent/KR19990077243A/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon 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

Landscapes

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

Abstract

오류 정정 시스템은 GF(2m+i)상의 m-비트 데이터 심볼들을 인코드하고 d-1(m+i)-비트 ECC 심볼을 갖는 예비 코드를 형성하기 위해서 변형된 리드-솔로몬(Reed-Solomon) 코드를 사용하는 인코더를 포함한다. 이 인코더는 그 다음에 기선택된(pre-selected) 패턴으로 설정된 i 비트들을 가지는 변형된 ECC 심볼을 만들기 위해서 예비 코드 워드를 한 개 이상의 변형 코드 워드들의 결합과 결합시킴으로써 ECC 심볼을 변형한다. 이 결합으로 또한 변형된 ECC 심볼에 추가되는 i-비트 패턴을 포함하는 "R" 의사 리던던시 심볼이 형성된다. 상기 인코더는, GF(2m)의 요소들인 심볼들을 가지는 데이터 코드 워드를 만들기 위해서 각각의 ECC 심볼과 의사 리던던시 심볼로부터 i-비트 패턴을 절단한다. 데이터 코드 워드를 디코드하기 위해서, 디코더는, 변형된 ECC 심볼들의 제1 R을 코드 워드 데이터, 또는 정보, 심볼들로 간주하고, 남은 변형된 ECC 심볼들 및 의사 리던던시 심볼들은 코드 워드 ECC 심볼들로 간주하여, 각각의 데이터 코드 워드 심볼들을 i-비트 패턴으로 써넣고 코드 워드를 디코드 한다. 시스템은 인코더에 대해서, 1로 설정된 i-비트 패턴의 단지 하나의 선택된 비트를 가지는 i*(d-1) 변형 코드 워드들을 만드는 L=1, 2,...인 g(x) = (x+αL)*(x+αL+1)*(x+αL+d-2)을 결정함으로써 생성 다항식 g(x), 및 변형 코드 워드들을 결정한다. 선택된 코드 GF(2m+i)가 GF(2t)h+j이고 GF(2m)=GF(2t)h라면, 시스템은 그라운드 필드로서 GF(2t)를 사용하고 각각의 d-1 ECC 심볼들에 대해 표에 i-비트 패턴을 대신해서 GF(2t) 구성 요소 α0을 갖는 변형 코드 워드의 제1 계수를 기억함으로써 변형 코드 워드들에 관련한 정보를 포함하는 룩-업 표의 크기를 최소화한다. 시스템은 그 다음에 기억된 계수를 GF(2t)의 적절한 요소들과 결합시키고 결과를 인코딩함으로써 변형 코드 워드들을 만든다.

Description

변형된 리드 솔로몬 코드 선택 및 인코딩 시스템
디지털 컴퓨터 시스템에서 데이터의 오류 정정 코딩의 중요성은 대용량 기억 장치 매체들, 특히 디스크들, 상에 기록된 데이터의 밀도가 증가함에 따라 크게 증가하고 있다. 기록 밀도가 높아짐에 따라, 디스크의 기록 표면 내에 있는 작은 결점이 다량의 데이터를 손상시킬 수 있다. 데이터의 손실을 피하기 위해서, 오류 정정 코드들("ECC"s)이, 이름이 의미하는 바와 같이, 잘못된 데이터를 정정하기 위해서 사용된다.
데이터 심볼들의 문자열(string)은 디스크에 쓰여지기 전에, ECC 심볼들이 형성되도록 수리적으로 인코드된다. ECC 심볼들은 그 다음에 데이터 문자열에 추가되어 코드 워드들 -데이터 심볼들 더하기 ECC 심볼들-이 형성되며 이 코드 워드들은 디스크에 쓰여지거나 기억된다. 데이터가 디스크들로부터 읽혀지는 경우, 읽혀지는 데이터 심볼들을 포함하는 코드 워드들은 디스크들로부터 검색되고 수리적으로 디코드된다. 디코딩 동안 데이터 내의 임의의 오류들은 검출되고, 가능하면, ECC 심볼들의 조작을 통해 정정된다[디코딩에 대한 상세한 설명을 위해서 Peterson 및 Weldon의 오류 정정 코드들, 2판, MIT 출판사, 1972를 참조].
기억된 디지털 데이터는 다중(multiple) 오류들을 포함할 수 있다. 다중 오류들의 정정을 위해 사용되는 ECC의 가장 효과적인 종류 중 하나는 리드-솔로몬 코드이다[리드-솔로몬 코드들의 상세한 설명을 위해서, Peterson 및 Weldon의 오류 정정 코드들을 참조].
데이터 심볼들의 문자열들에 있는 다중 오류들을 정정하기 위해서, 리드-솔로몬 코드들은, "GF(Pq)"으로 표현되는, 갈로아 필드들(Galois Fields)로 알려진 심볼들 집합들의 다양한 수리적 특성을 능률적이고 효과적으로 사용하는데, 필드 내의 각 요소 또는 심볼에 있어서 "P"는 소수이고 "q"는 밑 P의 자릿수로 생각될 수 있다. "P"는 보통 디지털 컴퓨터 응용들에서 2 값을 갖는다. 그러므로, "q"는 각 심볼에서 비트 수이다.
리드-솔로몬 코드에 근거한 ECC가 효과적으로 인코드할 수 있고 정정할 수 있거나, 또는 "보호"할 수 있는 심볼들의 수는 선택된 갈로아 필드의 사이즈, 즉 Pq심볼들 및 코드가 정정할 수 있는 오류들의 최대수에 의해 제한된다. GF(Pq)에 대한 주기적 리드-솔로몬 코드 워드의 최대 길이는 Pq-1 심볼이다. 따라서, ECC에 의해 보호될 수 있는, 즉, 코드 워드에 포함될 수 있는 데이터 심볼의 최대수는 Pq-1 심볼들 빼기 "e"이고, 여기서 "e"는 ECC 심볼들의 수이다. 갈로아 필드가 커질 수록, 코드 워드가 길어지고, 정정되는 오류들의 주어진 최대수에 대해 ECC가 보호할 수 있는 데이터가 많아진다. 그러므로, 보다 큰 갈로아 필드들이 보다 큰 데이터 심볼의 문자열들을 보호하기 위해서 사용되어 질 수 있었다. 그러나, 8-비트 코드 워드 심볼들로 끝나지 않는 갈로아 필드들, 또는 8배수인 다수의 비트들을 포함하는 심볼들을 사용하는 것은 시스템의 회로를 복잡하게 한다.
갈로아 필드 GF(28)는 8-비트 ECC 심볼들로 끝나는 갈로아 필드이다. GF(28)에 근거한 ECC는, 두개의 8-비트 ECC 심볼들을 데이터에 추가하여, 코드 워드를 255 또는 28-1 바이트로 길게 만들면, 단일 오류에 대하여 253까지의 8-비트 데이터 심볼들의 문자열이나 또는, "데이터 바이트"를 보호할 수 있다. 상기 ECC가 한 개 이상의 오류를 정정한다면, 보다 많은 ECC 심볼들, 정정될 각각의 부가적 오류에 대해 두개의 ECC 심볼이 코드 워드에서 사용되어야만 한다. 이것은 더 적은 데이터 바이트가 코드 워드의 주어진 길이에 대해 보호될 수 있다는 것을 의미한다.
정보는 흔히 길이가 512 또는 576 바이트인 섹터들 내에서 자기 디스크 상에 기억된다. 그러므로, GF(28)에 근거한 ECC's는, 코드의 복잡한 조작 없이는 전체 512 또는 576 바이트 섹터를 보호할 수 없다. GF(210)에 근거한 ECC's는, 전체 섹터를 보호하기 위해서 충분한 코드 워드 길이, 즉 코드 워드 당 210-1 또는 1023 심볼들을 갖는다. 그러나, GF(210) 코드에서 사용되는 10-비트 심볼들의 인코딩 및 디코딩은 어떤 문제들을 나타낸다.
보다 특별히, 컴퓨터 송신 및 기억 장치 하드웨어는 바이트, 즉, 8-비트 심볼들, 또는 길이가 8-비트의 배수인 심볼들 용으로 설정된다. 따라서, 이들은 일반적으로, 10-비트 심볼들의 조작을 위해 배열되지 않는다. 그러므로, GF(210) ECC가 사용된다면, 정보는 처음에는 10-비트 심볼들로 인코딩하기 위해서, 다음에는 바이트로 송신 및 기억하기 위해서, 마지막으로 10-비트 심볼들로 디코딩하기 위해서 바이트와 10-비트 심볼들 사이에서 앞뒤로 변환(translate)되어야만 한다. 인코더와 디코더 양쪽에서 바이트와 10-비트 심볼사이의 변환의 필요 조건은 ECC 코딩 처리에 또다른 단계의 복잡성을 부가한다.
GF(28) ECC를 가지고 전체 512 또는 576 바이트 섹터를 보호하기 위해 사용되는 하나의 기술은 ECC GF(28) 코드를 여러 번 인터리브하는 것이다. 인터리빙은 데이터 심볼들의 문자열을 여러 개의 보다 작은 세그먼트들로 쪼개고, 각 세그먼트를 인코드되는 데이터 심볼들의 스트림으로 간주한다. 인터리빙의 이점들은 주어진 코드로 다수의 데이터 심볼들을 인코드할 수 있다는 것이고, 다른 코드 워드들 내에서 인접한 데이터 심볼들을 인코딩함으로써 버스트 오류들을 효과적으로 분리하는 것이다. 이에 반하여, 인터리빙은 전형적으로, 인코드하기 위한 두 단계, 즉 처음에는 인코드되는 데이터를 여러 개의 세그먼트들로 분리하고 그 다음에 각 세그먼트를 코드 워드로 개별적으로 인코딩하는 단계; 그리고 디코드하기 위한 두 단계, 즉 처음에는 데이터를 개별적으로 디코딩하고 그 다음에 초기 데이터 심볼의 문자열을 다시 만들기 위해서 데이터 심볼들을 결합시키는 단계를 포함한다. 또한, 인터리빙은, 각 인터리브 코드에 대해 오류 검출을 위한 특별 ECC 심볼들을 필요로 하기 때문에, 코드의 효율을 떨어뜨린다. 대안으로, 오류 검출은 오버레이된(overlaid) 오류 검출 코드 및 오류 검출 심볼들에 의해 실행되지만, 특별 디코딩 동작들이 요구된다.
인터리브 코드들이 가지는 또다른 문제는 데이터 세그먼트들 중 하나에 너무 많은 오류들이 있다면, 다른 데이터 세그먼트들이 본질적으로 오류가 없다고 해도, 오류 정정은 실패한다는 것이다.
하나의 해결은 1023 바이트(데이터 더하기 ECC 심볼들)까지를 보호하기 위해서 GF(210)으로 코드 워드를 생성하고 ECC 심볼들로서 8-비트 심볼들, 또는 바이트들을 사용하는 것이다. 종래 시스템에서 하나 이상의 소정의 의사 데이터 바이트들은 데이터 바이트에 추가되고 데이터 바이트 더하기 의사 바이트로 구성된 문자열은 희망했던 수의 10-비트 ECC 심볼들을 만들기 위해서 인코드된다. 그 다음에, 10-비트 ECC 심볼들 각각에서 두개의 선택된 비트는 알려진 2-비트 패턴, 예를 들어, "0"에 비교된다. 10-비트 ECC 심볼들 각각에서 선택된 두개 비트가 2-비트 패턴과 동일하다면, ECC 심볼들의 선택된 비트들은 무시되거나 절단되고 ECC 심볼들 각각의 남은 8-비트는 데이터 바이트 및 추가된 의사 데이터 바이트와 연결되어 코드 워드를 형성한다. 갈로아 필드 덧셈 및/또는 곱셈을 위해 필요한 만큼 알려진 2-비트 절단 패턴을 추가함으로써, 코드 워드 바이트를 나중에 디코드할 수 있고, 임의의 오류 정정도 실행할 수 있다.
어느 ECC 10-비트 심볼들에서 선택된 비트들 중 무엇이든지 절단 패턴과 동일하지 않다면, 추가된 의사 데이터 바이트들은, 데이터 바이트에 변형된 의사 데이터 바이트를 더한 것을 인코딩하면 절단 패턴과 동일한 선택된 비트들을 가지는 10-비트 ECC 심볼들이 생성되도록 변형된다. 그 다음에, 현재 알려진 절단 패턴과 동일한 선택된 비트들은 무시되고 각 ECC 심볼들의 남아있는 8 비트들과 변형된 의사 데이터 바이트들은 코드 워드로서 데이터 바이트와 함께 기억된다. 다시, 변형된 의사 데이터 바이트 및 ECC 심볼들의 남아있는 8 비트들은 바이트로서의 디코딩과 코드 워드의 오류 정정을 가능하게 하기 위해서 필요한 모든 정보를 포함한다.
종래 시스템은, 공동 양수인에게 양도되고, 오류 정정 코드 인코더라 표제 붙여진 미국 특허 4,856,003에 논의되어 있다. 우리는, 이하 논의하는 바와 같이, 종래 시스템을 개선시켰다. 우리는 코드 워드 내에 의사 데이터 바이트를 포함하는 대신에, 부가적 "의사" 리던던시 심볼들을 포함하는 오류 정정 시스템을 고안했다. 이것은 시스템이, 예를 들어, 종래 방법으로 데이터를 10-비트 심볼들로 조작하고 10-비트 ECC 심볼들을 형성하게 한다. 이 시스템은 그 다음에 데이터에 ECC 심볼들을 추가하고, 기선택된 패턴으로 세트되지 않은 비트들을 갖는 ECC 심볼들을 변형하고, ECC 심볼들을 디코드하기 위해서 필요한 정보를 포함하는 하나 이상의 의사 리던던시 심볼들을 코드 워드에 추가한다. 이것은 시스템이 ECC 심볼들을 추가하기 이전에 의사 데이터 심볼들을 변형할 필요가 없기 때문에, 종래 시스템에서 사용되는 것 이상으로 인코딩 처리를 가속시킨다.
우리는 또한 개선된 인코더를 가지고 사용하는 코드 및 의사 심볼들을 손쉽게 결정하는 코드 검색 메커니즘을 발명했다. 이러한 메커니즘은 오류 정정 시스템 설계자가 기선택된 패턴으로 비트 수를 선택하고, 코드 길이를 결정하고 주어진 오류 정정 시스템과 잘 조화되는 특정 코드 및 관련된 의사 리던던시 심볼들을 선택할 수 있게 해준다. 다수의 데이터 바이트를 보호하기 위해서 보다 긴 코드들이 사용되야 하는지 여부는 특히 중요하다.
<발명의 요약>
개선된 리드-솔로몬 오류 정정 인코더는 (m+i)-비트 ECC 심볼들을 만들기 위해서 GF(2m+i)에 걸쳐 m-비트 데이터 심볼들을 인코드한다. 인코더는 예비 코드 워드를 형성하기 위해서 종래 방법으로 ECC 심볼들을 데이터에 추가한다. 인코더는 그 다음에 예비 코드 워드를 하나 이상의 변형 코드 워드들의 조합과 결합시킴으로써 ECC 심볼들을 변형한다. 이 결과 기선택된 패턴을 포함하는 변형된 ECC 심볼들과, 변형된 ECC 심볼들에 추가된 "R" 의사 리던던시 심볼들이 생성된다. 인코더는, GF(2m)의 요소들인 심볼들을 가지는 데이터 코드 워드를 만들기 위해서, ECC 심볼들 및 의사-리던던시 심볼들 각각으로부터 i-비트 패턴을 절단한다.
데이터 코드 워드를 디코드하기 위해서, 디코더는 각각의 코드 워드 심볼들을 i-비트 패턴으로 써넣어서 GF(2m) 코드 워드의 심볼들을 GF(2m+i) 내의 심볼들로 변형시킨다. 이 시스템은 다음에 변형된 ECC 심볼들의 제1 R을 코드 워드 데이터, 또는 정보, 심볼들로 간주하고, 남은 변형된 ECC 심볼들 및 의사 리던던시 심볼들은 코드 워드 ECC 심볼들로 간주하여 종래 방법으로 코드 워드를 디코드한다.
새로운 코드 검색 메커니즘은 인코더에 대해 생성 다항식, g(x), 및 (m+i)-비트 ECC 심볼들을 변형하기 위해 사용되는 코드 워드들을 결정한다. 이하 보다 상세히 검토되는 바와 같이, 코드 검색 메커니즘은 생성 다항식 g(x)=(x+αL)*(x+αL+1)....*(x+αL+d-2)이 하나로 세트된 i-비트 패턴 중 단지 하나의 선택된 비트를 가지는 충분한 수의 관련된 변형 코드 워드들을 생성하는지를 결정한다. 그렇다면, 이러한 코드 워드들 또는 이들의 결합들은 ECC 심볼들을 적절한 기선택된 i-비트 패턴을 포함하는 심볼들로 변형하는데, 또한 의사 리던던시 심볼 또는 심볼들을 만드는데 사용된다. 그렇지 않다면, 또다른 생성 다항식이 선택된다.
본 발명은 변형된 리드-솔로몬 오류 정정 인코더 및 인코더에서 사용하는 코드들을 결정하기 위한 코드 검색 시스템에 관한 것이다.
본 발명의 상기 및 그 이상의 이점들은 첨부된 도면들에 관련한 다음 설명을 참조함으로써 보다 잘 이해될 수 있다.
도 1은 본 발명에 따라 구성된 시스템의 기능 블록도.
도 2는 도 1의 인코더의 동작의 흐름도.
도 3은 도 1의 코드 셀렉터의 흐름도.
도 4는 도 1의 변형 코드 워드들을 만드는데 있어서 인코더의 대체 동작들의 흐름도.
도 5는 도 4에 따른 인코더 동작의 그 이상의 동작의 흐름도.
도 6은 도 3에서 설명된 동작들을 사용하여 결정된 코드들을 기입한 차트.
도 7은 GF(212) = GF(24)3에 걸쳐 코드들을 기입한 차트.
도 8은 도 1의 인코더를 포함하는 부가적 시스템의 기능 블록도.
도 9는 도 1의 인코더를 사용하는 시스템 내에 포함된 디스크의 실례.
여기에서 검토되는 덧셈, 곱셈 및 나눗셈 동작들은 갈로아 필드 동작들이고 생성 다항식 g(x)를 법(modulo)으로 하고, "*"은 곱셈을 나타낸다.
1. 인코더
도 1을 참조하면, 변형된 리드 솔로몬 인코더(10)는 GF(2m+i)상의 생성 다항식 g(x)에 따라 데이터를 인코드하는 GF(2m+i) 인코더(12)를 포함한다. GF(2m+i)의 요소인 데이터 심볼들이 인코더에 인가되기 이전에, i-비트 패턴이 심볼들 각각에 추가되거나 포함된다. 이 경우, 현재 (m+i)-비트 데이터 심볼들은 (m+i)-비트 ECC 심볼들을 만들기 위해서, 종래 방법으로 인코드된다. 이러한 심볼들은 레지스터(14) 내에 예비 코드 워드를 형성하기 위해서 데이터에 추가된다.
인코더(10)는 모든 ECC 심볼들이 기선택된 i-비트 패턴을 포함하는지를 결정한다. 그렇지 않다면, 인코더는 ECC 변형자 코드 워드 처리기(18)에서 예비 코드 워드 및 본질적으로 하나 이상의 변형 코드 워드들(rc)의 결합인 ECC 변형자 코드 워드를 결합시킴으로써 ECC 심볼들을 변형한다. 상기 하나 이상의 변형 코드 워드들 각각은 1로 세트되는 i 비트들 중 상이한 하나와 모두 제로로 세트되는 다른 i-1 비트들을 제각기 갖고 있다. 코드 워드들(rc)은 이하 검토된 바와 같이 ECC 심볼들의 i 비트들에 의해 어드레스되는 변형 코드 워드 테이블(16) 내에 기억된다.
특히, d-l ECC 심볼들 각각에서 i-비트 패턴 내의 비트들 각각에 대해 하나씩 해당되는, i*(d-l) 변형 코드 워드들이 있다. 주어진 (m+i)-비트 ECC 심볼에 있는 특정 비트는 소정의 패턴으로 설정되어 있지 않을 때, 인코더는 그 비트를 변형하기 위해서 ECC 심볼들을 변형한다. 이 인코더는, 이하 예에서 보다 상세히 검토되는 바와 같이, 본질적으로 ECC 심볼들을 1로 설정된 대응 비트를 가지는 변형 코드 워드의 적절한 심볼들에 결합시킨다. ECC 심볼의 비트들 중 또다른 비트가 이 패턴으로 설정되어 있지 않는다면, ECC 심볼들은 1로 설정된 상기 특정 비트를 가지는 변형 코드 워드의 적절한 심볼들과 결합되어 보다 더 변형된다.
처리기(18)는 또한, 데이터 코드 워드의 적절한 디코딩을 확실하게 하기 위해서 ECC 심볼들에 추가되는 R 의사 리던던시 심볼들(P1, P2....PR)을 만든다. 데이터 코드 워드 내에 R 의사 리던던시 심볼들을 포함하기 위해서, 데이터 코드 워드 내의 데이터 심볼들의 최대수는 R에 의해 k-R로 감소된다. 그러나, 코드 거리, d는 동일하게 남는다. 이 결과, 선택된 패턴으로 설정된 i 비트들을 모두 갖고 있는, (i) 최대 k-R 데이터 심볼들, (ⅱ) d-l 변형된 ECC 심볼들 및 (ⅲ) R 의사-리던던시 심볼들로 구성된 데이터 코드 워드가 생성된다.
전형적으로, k 데이터 심볼들보다 적은, 예를 들어, k´(k´<k) 데이터 심볼들은 데이터 코드 워드에 포함된다. 따라서, R 의사 리던던시 심볼들은 데이터 심볼들의 수에서 감소 없이 데이터 코드 워드에 포함된다. 데이터 코드 워드는 그 다음에 k´데이터 심볼들, d-1 변형된 ECC 심볼들 및 R 의사 리던던시 심볼들을 포함한다.
데이터 코드 워드를 디코드하기 위해서, 변형된 ECC 심볼들의 제1 R은 그들이 마치 데이터인 것처럼 디코드된다. 데이터 및 R 변형된 ECC 심볼들 각각이 오류가 없다면, 디코더는 (d-1)-R 변형된 ECC 심볼들 및 R 의사 리던던시 심볼들을 만든다. 대안으로, 적절한 오류 신드롬을 만드는데 종래 방법으로 의사 리던던시 심볼들을 포함하는 전체 코드 워드를 사용한다.
의사 리던던시 심볼들은, 부분적으로, 예비 코드 워드에서 ECC 심볼들을 변형시키기 위해서 요구되는 변형 코드 워드들(rc)을 인코딩함으로써 만들어진다. 이러한 심볼들은 또한 소정의 패턴으로 설정된 i 비트들을 가져야만 한다. 따라서, 부가적 변형 코드 워드(S)는, 이하 보다 상세히 검토되는 바와 같이, 인코딩에 포함된다. 변형 코드 워드들(rc) 및 부가적 변형 코드 워드(S)는 ECC 심볼들의 i 비트들에 의해 어드레스되는 변형 코드 워드 표(16)에 기억될 수 있다. 대안으로, 표(16)는 각 변형 코드 워드(rc)의 제1 R 비-제로 심볼들을 포함할 수 있다. 이러한 R 심볼들은 그 다음에 대응 코드 워드들이 생성되도록 인코드되고, 부가적 변형 코드 워드(s)를 생성하기 위해 결합된 코드 워드들 또는 S의 제1 d-1 비-제로 계수들이 대신에 표 안에 기억될 수 있다. 이 시스템이 한 개의 i-비트 패턴 이상을 사용한다면, 예를 들어, 2ii-비트 패턴들을 사용한다면, 표(16) 안에 Ss부가적 변형 코드 워드들(여기서 s=1, 2,...2i) 또는 적어도 이들 코드 워드들 각각의 제1 d-1 비-제로 계수들을 을 기억할 수 있다.
2. GF(23+2)에 관한 예
우리는, m=3이고 i=2인 GF(25)상의 코드를 사용하는 변형된 리드 솔로몬 인코더(10)의 동작을 검토한다. 모든 인코딩 동작들은 GF(25)에 걸쳐있고, 결과 데이터 코드 워드는 GF(23)의 요소들인 데이터와 ECC 심볼들 모두를 포함한다.
GF(25)의 기본 다항식은 p(x)= x5+x2+1 이고 선택된 코드는 생성 다항식을 갖는 (31, 27) 거리 5 코드이다:
g(x) = (x+α2)*(x+α3)*(x+α4)*(x+α5)
= x425x321x2+αx +α14
코드의 선택은 도 3을 참조하여 이하 검토된다. 기선택된 패턴은 "10"이고 이것은 심볼들의 선두 2 비트이다.
또한 이하 보다 상세하게 검토된 바와 같이, 도 3 및 도 4를 참조하여, 우리는 i*(d-l), 또는 8 GF(2m+i)의 변형 코드 워드들(rc)을 선택한다. 각각의 코드 워드는, 제1 d-l, 또는 4 심볼들 중 하나에서, 1로 설정되는 단일 비트 및 0으로 설정되는 단일 비트로 구성되어 있는 2-비트 패턴을 포함한다. 다른 코드 워드 심볼들은 모두 0으로 설정되는 i 비트들을 갖는다. 코드 워드들은 x의 대응 제곱의 계수로서 코드 워드 심볼들을 가지는 다항식으로 표시될 수 있다. 더욱이, 계수들은 l행 (m+i)열 비트 행렬들로 쓰여질 수 있다. 이러한 표시법을 사용하여, 8개 변형 코드 워드들(rc)은:
예를 들어, 변형 코드 워드(r7)는 x3의 계수로서 1로 설정된 선행 비트와 0으로 설정된 다른 비트를 갖는 2-비트 패턴을 가지는 심볼을 갖고, 각각의 다른 계수들로서 모두 0으로 설정된 2-비트를 가지는 심볼들을 갖는다. 유사하게, 변형 코드 워드(r6)는 x2의 계수로서 1로 설정된 선행 비트와 0으로 설정된 나머지 비트를 갖는 2-비트 패턴을 가지는 심볼을 갖고, 각각의 다른 계수들로서 모두 0으로 설정된 2-비트가 있는 심볼들을 갖는다. 변형 코드 워드들 rc((i*(d-l))-l≥c≥d-l, 이 예에서 7≥c≥4)는 xc-(d-l)의 계수에 포함된 2-비트 패턴 "10"을 갖는다. 코드 워드들 rc(c<d-l)는 xc의 계수에 포함된 2-비트 패턴 "1"을 갖는다. 도 3을 참조하고 대신해서 도 4를 참조하여 어떻게 코드 워드가 선택되는지를 아래에서 검토한다.
디코딩을 위해서, R 의사-리던던시 심볼들(P1, P2, ...PR)은 아래의 조건에서 변형된 ECC 심볼들에 추가되고 데이터 코드 워드에 포함되고;
위에서 deg(g(x))는 생성 다항식 g(x)의 차수(degree)이고 []은 함수의 최고한도(ceiling function)를 나타낸다. 이 예에서, R=3이다. 데이터 코드 워드 내에 이러한 세 가지 심볼들을 포함하기 위해서, 데이터 심볼들의 최대수는, 27에서부터 24까지, 3씩 감소된다. 데이터 코드 워드는 따라서 최대 24 데이터 심볼들과 4 ECC 심볼들 및 3 의사 리던던시 심볼들을 갖는다.
의사 리던던시 심볼들이 기선택된 i-비트 패턴을 포함한다는 것을 확실하게 하기 위해서, 시스템은 선택된 변형 코드 워드들(rc)과 함께, 계수들 중 특정 계수에서는 소정의 패턴으로 설정된 i-비트들과 남은 계수들 내에서 모두 제로로 설정된 i-비트를 갖는 부가적 변형 코드 워드(S)를 인코드한다. 이하 도 3을 참조하여 어떻게 추가적 변형 코드 워드가 결정되는 지를 검토한다. 예제에서, 부가적 변형 코드 워드는:
i-비트들은, 예비 코드 워드에서 ECC 심볼들의 위치에 대응하는 x3내지 x0의 계수들에서 모두 0이라는데 주목하자. 이 코드 워드(S)는 변형자 표(16)에 기억될 수 있거나, 또는 변형 코드 워드(rc)의 선형 조합으로부터 인코더 내에서 만들어질 수 있다. 대안으로, 코드 워드(S)의 제1 세개 변수들은 표(16)에 기억될 수 있고 이 코드 워드는 이들 심볼들을 인코딩함으로써 만들어질 수 있다.
또한 도 2를 참조하면, 단계 200에 있는 인코더(10)는 k' 3-비트 데이터 심볼들:
을 기선택된 패턴 내에 설정된 2 비트들을 심볼들 각각에 추가하고 종래의 방법으로 인코딩함으로써 인코드한다. x9, x10등의 계수들인 데이터 심볼들은 모두 제로-심볼들이며 여기서는 보여주지 않았다. 인코딩(단계 202)의 결과는 예비 코드 워드이다:
x3 내지 x0까지의 계수들인, ECC 심볼들은 기선택된 패턴, 즉, x2및 x0의 계수들 내에 설정된 선행 2 비트를 가지는 2 심볼들을 포함한다. ECC 심볼들 중 두개, 즉, x3 및 x1의 계수들은 기선택된 2-비트 패턴을 포함하기 위해서 변형되어야 한다.(단계 204)
x3에 대응하는 ECC 심볼은 최초 2 비트로서 "0"을 갖는다. 이 심볼들을 변형하기 위해서, 단계 206에서 시스템은, 선행 비트 위치에 있는 1을 x3의 계수에 포함하는, 코드 워드인 변형 코드 워드(r7)를 선택한다. x1에 대응하고, 최초 2 비트로서 "1"을 갖는 ECC 심볼을 변형하기 위해서, 시스템은 x1의 계수의 제1 및 제2 위치들에서 각각 1을 갖는 변형 코드 워드들(r5및 r1)을 선택한다. 단계 208에서 시스템은, 그 다음에 (i) 4개 ECC 심볼들을 변형하고 (ⅱ) ECC 심볼들에 3개의 의사 리던던시 심볼들을 추가하는 ECC 변형자 코드 워드를 만들기 위해서, 선택된 변형 코드 워드들 각각의 최초 3개 "정보" 심볼들과 부가적 변형 코드 워드(S)로부터의 적절한 심볼들을 결합시키고 인코드한다.
시스템은 ECC 심볼들의 2-비트 패턴들을 가지는 룩업 표(16)를 어드레싱함으로써 변형 코드 워드들을 선택한다. 코드 워드들(rc 및 S) 또는 이들 코드 워드들의 적어도 최초의 R, 또는 3, 계수들인 표(16)의 내용들은, 이하 도 3을 참조하여 검토된 바와 같이, 특정 생성 다항식 및 선택된 i-비트 패턴과 관련되어 있다. 최초 R 계수들만이 표(16)에 포함되어 있다면, 시스템은 대응 변형 및 부가적 변형 코드 워드들을 만들기 위해서 이 계수들을 인코드한다.
예제에서, 3개 의사 리던던시 심볼들(P1, P2및 P3)을 포함하는 ECC 변형자 코드 워드는 r7, r5, r1및 S 각각의 대응 정보 심볼들:
을 결합시키고 코드 워드를 만들기 위해서 이러한 정보 심볼들을 인코딩함으로써 형성된다.
이러한 코드 워드는 ECC 심볼들을 변형하는 계수들, 즉, x3내지 x0의 계수들, 및 의사 리던던시 심볼들인 계수들, 즉, x-1내지 x-3의 계수를 포함한다. 단계 210에서 시스템은, ECC 심볼들이 변형되고 3개 의사 리던던시 심볼들이 ECC 심볼들에 추가되도록 이 코드 워드를 예비 코드 워드와 결합시킨다. 이 결과 데이터 코드 워드가 형성된다:
데이터 코드 워드의 각 심볼은 기선택된 패턴으로 설정된 두개의 선행 비트들을 가지고 있다. 시스템은 그 다음에 선행 비트들을 절단하고 GF(2m)내의 코드 워드로서 데이터 코드 워드를 전송한다.(단계 212, 214)
데이터 코드 워드를 디코드하기 위해서 디코더는 x8내지 x1의 계수들을 데이터로 그리고 x0내지 x-3의 계수들을 리던던시 심볼들로 취급하는 종래 방법으로
데이터 코드를 디코드한다. 디코더는 그 다음에 오류 신드롬들 및 오류 값을 종래 방법으로 계산한다.
3. 코드 선택하기
상기 검토된 바와 같이, GF(2m+i)상의 코드는 충분한 수의 변형 코드 워드들(rc)을 포함하는지를 결정함으로써 선택된다. 이 코드는, 이 예에서 8개 변형 코드 워드들인, i*(d-l) 변형 코드 워드들(rc)을 포함하여야만 한다.
지금 도 3을 참조하면, 사용자는 희망했던 코드 변수들 이를테면 코드 거리( d=n-k+l)를 선택하고, 시스템은 L=0으로 놓고(단계 300) 생성 다항식으로서 다음의 g(x)를 선택한다:
g(x) = (x+αL)*(x+αL+1)*...(x+αL+n-k-l) = xn-k+gn-k-lxn-k-l+...+g1x1+g0x0
L은 g(x)의 최저 근이고, 따라서, 이 g(x)는 근 α0또는 l을 갖는다.
다음으로, 시스템은 생성 다항식으로부터 유도된 i*(d-l) 기본 코드 워드들, 가능하면, i*(d-l) 변형 코드 워드들을 만든다. 시스템은 단계 302에서, x0의 계수로서 α0, 또는 1을 갖는 코드 워드c1(x)을 만들기 위해서, 첫째로 g(x)를 g0으로 나눈다:
n-kxn-k+ g´n-k-1xn-k-1+...+ g´x + 1x0
여기서, 이다. x-1, x-2및 x-3의 계수들은 모두 제로이고, 코드 워드 c1(x)은 따라서:
1(x)=g´n-kxn-k+ g´n-k-1xn-k-1+...+ g´x + 1x0+ 0x-1+ 0x-2+ 0x-3
이다.
다음 단계 304에서 시스템은, x-1에 대해 계수 1을 갖는 코드 워드 c1(x)을 만들기 위해서, 이러한 코드 워드를 주기적으로 이동시키며, 즉, x-1을 곱한다:
c1(x)=g´n-k+1xn-k+ g´n-kxn-k-1+...+ g´x0+ 1x-1+ 0x-2+ 0x-3
그리고 x-1에 대응하는 위치에서 계수들 00001, 00010, 00100 등등을 각각 가지는 기본 코드 워드들(b0, b1, b2... bm-1)의 제 1 부분 집합을 만들기 위해서 이 코드 워드에 α0, α1...αm-1을 곱한다.
코드 워드 c1(x)가 더욱 조작되어 x-2....또는 x-R에 대응하는 위치에서 단일의 계수 일과 남은 위치들에서 m+i-l의 모두 제로인 계수들을 각각 가지는 코드 워드들 ct(x) t=2.....i+1 을 만든다. 단계 306에서 시스템은 첫째로 c1(x)에, x-1을 곱하는데 이것은 또다른 주기적 이동(shift)이 된다:
그 다음에, 단계 308에서, c1(x)에 g′0 를 곱한다:
그리고 단계 310에서 코드 워드를 만들기 위해서 x-1*c1(x)+c1(x)*g′1 을 더한다.
c2(x)=g″n-kxn-k+g″n-k-1xn-k-1+...+g″0x0+0x-1+1x-2+0x-3
이 코드 워드는 x-1, x-3,...x-R에 대응하는 위치에서는 모두 제로인 계수들과, x-2에 대응하는 위치에서는 계수 1 또는 00001을 갖는다.
단계 312에서, 시스템은 x-2에 대응하는 위치에서 계수 00001, 00010 및 00100을 각각 가지는 기본 코드 워드들(b3, b4, 및 b5)의 제2 부분 집합을 만들기 위해서, 코드 워드 c2(x)에 α0, α1...αm-1을 곱한다.
유사하게, c1(x) 및 c2(x)를 처리함으로써 시스템은 x-3에 대응하는 위치에서, 계수 00001, 00010 및 00100을 각각 가지는 기본 코드 워드들(b6, b7, 및 b8)의 제3 부분 집합을 만든다. 시스템은 따라서 단계 314에서 주기적으로 c2(x)를 이동시키며, 즉, c2(x)에 x-1을 곱한다:
x-1*c2(x)=g″n-kxn-k-1+g″n-k-1xn-k-2+…+g″0x-1+0x-2+0x-2+1x-3
단계 316에서 c1(x)에 g0 을 곱한다:
그리고 단계 318에서 코드 워드를 만들기 위해서 x-1*c2(x)+c1(x)*g″0 을 더한다:
c3(x)=g′′′n-kxn-k+g′′′n-k-1xn-k-1+…+g′′′0x0+0x-1+0x-2+1x-3
c3(x)을 사용하여 단계 320에서 시스템은, c3(x)에 α0, α1,..,αm-1을 곱함으로써 (i+1)st, 또는 제3의 코드 워드의 부분 집합을 만든다. 기본 코드 워드들 b0내지 b8은:
이다.
다음으로, 단계 322에서 시스템은 기본 코드 워드들의 선형 조합으로부터 모두 제로로 설정된 2-비트 패턴들을 가지는 거의 일인 계수를 각각 가지는 8개 변형 코드 워드를 만들 수 있는지를 결정한다. 예비 코드 워드에서 ECC 심볼에 대응하는 하나의 계수는 1로 설정된 단일 비트 및 0으로 설정된 남은 비트를 갖는 2-비트 패턴을 가진다. 변형 코드 워드들의 전 집합은 4개 리던던시 심볼들 각각에 대해 하나씩 1로 설정된 2-비트 패턴의 제1 비트를 가진 d-1 또는 4개의 코드 워드들, 및 4개 리던던시 심볼들 각각에 대해 하나씩 1로 설정된 2-비트 패턴의 제2 비트를 가지는 4개 코드 워드들을 포함한다.
시스템은 다음으로 8개 변형 코드 워드들이 기본 코드 워드들의 선형 조합으로부터 생성될 수 있는지를 결정한다. 이 실시예에서, 시스템은 코드 워드들(b0, b1,...b8)의 계수들을 사용하여 9행-8열 행렬(M1)을 형성함으로써 이것을 행한다. 행렬(M1)의 행은 각각, xd-2, xd-3,...x0에 대응하는 위치에서 선행 두개 비트들의 계수들로 구성된다.
예제에서 행렬 M1은:
이다.
행렬 M1이 필요한 개수의 변형 코드 워드들인 i*(d-l) 또는 이 예에서는 8의 계수(rank)를 갖고있으면, 이 시스템은 행렬 M1의 "의사 반전"인 8행-9열 행렬 A를 발견한다. 행렬 M1및 행렬 A의 적은 8행-8열 항등 행렬 I이다. 예제에서:
변형 코드 워드들(rc)은 그 다음에 행렬 A에 행들이 b0, b1...b8인 1행-9열 의 행렬을 곱함으로써 만들어진다. 그러므로, 의사 반전 행렬 A의 각 행은 하나의 변형 코드 워드(rc)를 만든다. 따라서, M1의 계수가 필요한 변형 코드 워드들의 수와 동일하지 않다면, 시스템은 선택된 g(x)에 의해 생성된 코드를 사용할 수 없다.
g(x)가 사용될 수 없다면, 시스템은 다음으로 L=1을 설정하고 g(x) = (x-αL)*...(x+αL+d-l)에 의해 생성된 코드를 결정한다. 도 6은 이러한 검색 방법을 사용하여 결정된 거리(113)까지의 코드를 최저 근(L), 코드 거리(d) 및 의사 리던던시 심볼들의 수(R)로 나타낸 차트이다. 보다 큰 거리들을 가진 코드들은 이 방법을 사용하여 쉽게 결정될 수 있다.
의사 리던던시 심볼들의 인코딩 내에 포함되어 이들 심볼들이 i-비트 패턴을 포함하는 것을 확실하게 하는 부가적 변형자 코드 워드(S)는, (1)기선택된 패턴으로 설정된 i 비트들과 m개의 모두 제로인 비트를 가지는 R 정보 심볼들 및 k-R개의 모두 제로인 심볼들을 인코딩하여, d-1 리던던시 심볼들을 갖는 코드 워드를 만들고, (2)R 심볼들이 x-1내지 x-3의 계수들이고 d-l 심볼들이 x3내지 x0의 계수들이 될 때까지 이 코드 워드를 주기적으로 이동하고, (3)모두 0인 i-비트 패턴들을 갖는 계수들을 만들기 위해서 x3내지 x0의 계수들을 변형하도록 적당한 코드 워드들(rc)과 코드 워드를 결합시킴으로써 만들어진다. 예를 들어, 이 예에서, x-1내지 x-3의 계수들에서 "10" 패턴으로 설정된 i 비트들을 가지는 부가적 변형 코드 워드(S)는, R 심볼들과 d-l 리던던시 심볼들을 갖는 코드 워드를 만들기 위해서 이하를 인코딩하고:
x-1내지 x-5의 계수들로서 R 정보 심볼들을 가지는 코드 워드(S´):
을 만들기 위해서 코드 워드를 주기적으로 이동함으로써 만들어진다.
이 코드 워드는 그 다음에 x3내지 x0의 계수들에서 모두 0으로 설정된 i 비트들을 갖는 코드 워드(S)를 만들기 위해서, 선택된 코드 워드들(rc)과 결합시킴으로써 더욱 인코드된다. 따라서 S´은:
을 만들기 위해서 r7, r6, r5, r4및 r0과 결합된다.
하나 이상의 패턴이 선택될 수 있다면, 시스템은 유사하게 i-비트 패턴들 각각에 관련한 부가적 변형 코드 워드들(Ss, s=1,2,...2i)을 만든다. 그러므로, 선택된 패턴으로 설정된 i-비트를 가지는 R 심볼들의 집합과 m개의 모두 제로인 비트들은 인코드되고 이 결과들은 필요하다면 결합되어, 선택된 패턴들의 각각에 대한 대응 코드 워드(Ss)를 만든다.
4. 변형 코드 워드 표를 최소화하는 방법
상기 설명된 바와 같이, 변형 코드 워드 표(16)는 각 ECC 심볼에 대해, 2-비트 패턴에서 각 비트와 하나씩 관련되는 두개의 변형 코드 워드들의 계수들을 포함한다. 그러므로 두개의 ECC 심볼들을 가지고 있는 d=3 코드에 대해, ECC 심볼들로부터 2-비트 패턴을 제거하기 위해서 4개 변형 코드 워드들을 결정해야 한다. 변형 코드 워드들은, 한 개의 코드 워드가 또다른 하나로부터 쉽게 결정될 수 있기 때문에 개별적으로 결정된다.
코드가, GF(2m)=GF(2t)h이고 GF(2m+i)=GF(2t)h+j인 갈로아 필드 GF(2m+i)상에 있을 때, 시스템은 GF(2) 대신에 그라운드 필드 GF(2t)를 사용함으로써 i*(d-l)위치로부터 j*(d-l)위치로 변형 코드 워드 표의 크기를 줄인다. GF(26)상의 코드들은, GF(2m)=GF(22)2이고 GF(2m+i)=GF(22)3인 GF(24+2)이고, j=1일 때 GF(22)의 그라운드 필드를 갖는다. 2-비트 패턴을 사용하는 d=3인 코드에 대해, 표 크기는 매 ECC 심볼에 대해 두개의 변형 코드 워드들의 계수를 기억하기 위한 2*(3-1) 또는 4 위치로부터, 매 ECC 심볼에 대해 한 개의 변형 코드 워드의 계수를 기억하기 위한, l*(3-l) 또는 2 위치로 줄어든다. GF(2t)에 있는 코드 워드 계수들의 개별 요소들은 GF(2)에 있는 코드 워드의 t 비트들을 나타내기 때문에 각 ECC 심볼에 대해 단지 단일 위치만이 요구된다. 더욱이, 그라운드 필드 GF(2t)에 있어서는, R이 아닌, 변형 코드 워드의 제1 계수만이 표에 필요하다. 그러므로 각 위치의 크기는 감소한다.
t=2, h=3 및 j=1일 때 GF(26)에 관한 예에 있어서, 그라운드 필드 GF(22)가 4개의 소자들, 즉, 00, 01, 10 및 11을 갖는다. 이러한 요소들은:
으로 각각 나타낸다. 이제 도 4를 참조하면, 단계 400에서 시스템은 차수 t의 생성 다항식과 GF(22)상에서의 차수 h의 기약 다항식을 필드 GF(2t)h의 요소들을 생성하기 위해서 사용한다. 예제에서, 상기 섹션 3의 검색 방법을 사용하여 차수 2의 생성 다항식이 선택되고, 차수 3의 기약 다항식(p(x)=x3+ x2+ x +β)은 GF(22)3의 요소들을 생성하기 위해서 사용된다.
단계 402에서 시스템은 그 다음에, g(x)를 곱하는 경우에 1로 설정된 t-비트 패턴을 나타내는 요소를 가지고 선택된 계수 및 0으로 설정된 대응 요소들을 가지는 남은 계수들을 가지는 변형 코드 워드를 만드는 GF(2t)h의 요소 αv를 선택한다.
만약에, 예를 들어, 2-비트 패턴이 GF(26) 심볼들의 선행 비트들로서 추가된다면, 시스템은 g(x)가 곱해지는 경우 g가 생성 다항식의 차수일 때, xg의 계수에서 1의 선행 요소를 가지며, 선행 요소로서, 각각, 0을 가지는 남은 계수들을 가지는 코드 워드를 만드는 GF(22)3의 요소를 첫째로 선택한다. 단계 404 및 406에서 시스템은 g(x)를 곱하는 경우에, 선행 요소로서 1을 가지는 xg-1의 계수와, xg-t+1,...xg-t+1에 대해 0을 선행 요소로 각각 가지는 남은 계수들 등을 갖는 코드 워드를 만드는 요소를 선택한다. 그러므로 만들어진 코드 워드들은, xg및 xg-1... xg-t+l각각에 대해 계수들의 최상(top)의 2-비트들로서 비트 패턴 "1"을 가지는 GF(26)에서의 코드 워드들에 대응한다. 다른 패턴들을 가지는 코드 워드들이 ECC 심볼들을 변형하기 위해서 또한 요구된다면, 단계 408에서 시스템은 두개의 변형 코드 워드들에 구성 요소 β및 모두 제로, 구성 요소 β2및 모두 제로, 등을 가지는 GF(2t)h의 심볼들을 곱한다. GF(22)3에 관한 예에서는, 구성 요소 α21및/또는 α42는, 선행 요소들로서 β및/또는 β2를 가지는 한 개 또는 두 개의 코드 워드들을 만들기 위해서, 적절하게, 사용된다. 이러한 코드 워드들은, 각각, "10" 및/또는 "11" 패턴들 내에 설정된 최상의 두 비트들을 가지는 GF(26)에서의 코드 워드들에 대응한다.
예로서, 패턴이 심볼들의 최상 두 비트로서 선택되고 생성 다항식이
g(x)=(x+α2)*(x+α3)=x258x+α5이라 가정한다. 시스템은, g(x)를 곱하는 경우에 희망했던 계수들을 가지고 코드 워드를 만드는 αv를 검색한다. 예를 들어, 시스템은 α9를 선택하여 변형 코드 워드:
을 만든다. 이러한 코드 워드는 x2의 계수로서 선행 요소 β를 가지는 GF(22)3의 심볼과 x1및 x0의 계수로서 선행 요소 0을 갖는 GF(22)3의 심볼들을 갖는다. x2의 계수는 GF(26)에서 선행 두 비트로서 패턴 "10"을 갖고, x1및 x0각각은 GF(26)에서 선행 두 비트로서 패턴 "0"을 갖는다. x2계수의 최상의 두 비트들로서 패턴 "1"을 갖는 코드 워드가 바람직하고, 시스템은 코드 워드:
을 만들기 위해서 변형 코드 워드에 α42를 곱한다. 이것은 생성 다항식에 (α429)+α51을 곱하는 것과 동일하다.
시스템은 또한 α37을 선택하고, x1의 계수 내에 선행 요소로서 요소 1과, x2및 x0의 계수들 각각에서 선행 요소로서 0을 가지는 코드 워드:
을 만든다. 이것은, 계수 x1의 선행 두개 비트로서 패턴 "1"과 x2및 x0계수들의 최상 두 비트로서 선행 요소 0, 또는 비트 패턴 00을 가지는 GF(26)에서의 코드 워드와 일치한다. 선행 요소로서 β 또는 GF(26)에서 패턴 10을 가지는 계수 x를 갖는 코드 워드에 대해서, 시스템은 이 변형 코드 워드에 α21을 곱한다.
ECC 심볼을 변형하기 위해서, 단계 500에서 시스템은 선택된 패턴, 즉, 심볼의 선행 요소로서, GF(22)의 선택된 요소를 만들기 위해서 무슨 변형들이 필요한지를 결정한다. 단계 506에서 시스템은 그 다음에, 대응 위치에서 GF(22)의 적절한 요소를 포함하는 변형 코드 워드의 제1 계수를 인코딩하고, 그 결과를 예비 코드 워드와 결합시킴으로써 심볼을 변형한다. 하나 이상의 ECC 심볼이 변형을 필요로 한다면, 시스템은 선택된 변형 코드 워드들의 제1 계수들을 더하고, 총합을 인코드한다(단계 502, 504).
예로서, 시스템은 GF(26)의 2-비트 패턴으로서 "0"을 사용한다. 데이터 심볼들이 다음의 ECC 심볼들:
로 인코드된다면, 시스템은 계수 x2에서 선행 요소로서 1을 가지는 변형 코드 워드의 제1 계수에 β를 곱하고, 계수 x의 선행 요소로서 1을 가지는 변형 코드 워드의 제1 계수에 β2를 곱함으로써 예비 코드 워드와 결합되는 ECC 변형자 코드 워드를 만든다. 시스템은 그 다음에 결과들을 결합시키고, 결과에 부가적 변형 코드 워드(s)의 선행 계수를 더하여, 총합을 인코드한다. 결과는 데이터 코드 워드를 만들기 위해서 예비 코드 워드와 결합된다.
시스템은 그러므로 총합:
을 만들고, 코드 워드(S)의 선행 계수를 더하고 시스템이 예비 코드 워드에 더하는 코드 워드:
을 만들기 위해서 총합을 인코드한다. GF(2)의 요소들이 GF(22)의 요소들로 대체되는 경우에, 결과는, 데이터, 기선택된 패턴에서 설정된 선행 두개 비트들을 갖는 두개 ECC 심볼들 및 기선택된 패턴에서 설정된 선행 두개 비트들을 갖는 한 개 의사 리던던시 심볼들을 포함하는 GF(26)의 데이터 코드 워드이다.
변형 코드 워드 표(16)(도 1)는 그러므로 x의 각 제곱들의 선행 요소로서 요소 1을 가지는 j*(d-l) 코드 워드들의 제1 계수들을 반드시 포함할 필요가 있고, 이러한 계수들로부터 i*(d-l) 변형 코드 워드들 모두를 만들 수 있다. 예제에서, 표(16)는 두 변형 코드 워드들 및 부가적 변형 코드 워드(S)의 제1 계수들을 포함한다. 그러므로, 테이블은:
을 포함한다.
일반적으로, 그라운드 필드로서 GF(2a)를 사용하는 코드 GF(2a)b에 대한 표는 그라운드 필드로서 GF(2)를 이용하는 코드 GF(2a+b)상의 기억 위치에서 a-to-l의 세이빙(saving)을 갖는다.
도 7은, 표 크기가 4*(d-l) 코드 워드로부터 d-l 정보 심볼들로 줄어드는 t=4 또는 GF(24)3을 갖는, GF(212)에 대한 코드들의 차트이다. 이들 코드들에 대한 변형 표들은 각 ECC 심볼에 대해 1 코드 워드 정보 심볼들을 포함한다. 거꾸로, GF(28+4)에 대한 표는 ECC 심볼 당 4 코드 워드, 또는 각 4*(d-l) 코드 워드들에 대해 적어도 R 정보 심볼들을 포함한다. 따라서 그라운드 필드로서 GF(24)를 이용하는데 있어서의 세이빙은 적어도 4-to-1이다. 도 6은 코드 워드 표가 최소화될 수 있는 GF(212)에 대한 코드들의 차트이다. 차트는 거리(113)에서 종료하지만, 보다 큰 거리들을 걸쳐 코드를 포함하도록 확장될 수 있다.
5. 부가적 응용들
도 7을 참조하면, 인코더(12)는 많은 디코더들(100)과 통신하고, 단일 디코더에 대해 임의의 주어진 시간에 의미를 가지게 되는 데이터를 보내는 시스템에 포함될 수 있다. 디코더들 각각이 다른 i-비트 패턴을 사용한다면, 인코더는 선택된 단일 인코더에 의해 사용되는 i-비트 패턴을 내부 레지스터(13)로부터 선택하고, 상술한 바와 같이 데이터를 데이터 코드 워드들로 인코드하기 위해서 이 패턴을 사용한다. 디코더가 데이터 코드 워드들을 디코드하는 경우에, 동일한 i-비트 패턴을 사용하는 디코더만이 코드 워드들이 오류가 없거나 또는 정정가능한지를 결정할 것이다. 다른 디코더들은 코드 워드를 디코드할 것이고, i-비트 패턴들의 차이점 때문에, 매 심볼, 또는 거의 매 심볼이 오류라고 결정할 것이다.
도 8은 인접 트랙들(82, 83..)이 다른 i-비트 패턴들과 관련되어 있는 디스크(80)를 묘사한다. 특히, 주어진 트랙 내에 기억되는 데이터 코드 워드들은 관련된 i-비트 패턴을 사용하여 인코드된다. 시스템이 나중에 트랙(82)으로부터 데이터를 검색하려 하고 그 대신에 트랙(83)으로부터 코드 워드를 검색한다면, 시스템은 검색된 코드 워드 내의 모든 또는 거의 모든 심볼들이 잘못되었다고 결정할 것이다. 따라서, 시스템은 검색된 데이터 코드 워드를 검색하려고 했던 코드 워드로서 잘못 해석하지 않을 것이다.
앞서 말한 설명은 본 발명의 특정 실시예에 국한되지 않는다. 어쨌든, 본 발명에 대해 변화들과 변형들이, 몇몇 또는 모든 이점들의 달성과 함께 이루어질 수 있다는 것은 명백할 것이다. 그러므로, 첨부된 청구항들의 목적은 본 발명의 순수한 정신과 범주 내에 있는 모든 변화들과 변형들을 포함하는 것이다.

Claims (14)

  1. 갈로아 필드(Galois Field)(pm+i)상의 GF(pm)의 코드 워드를 만들기 위해서 길이 d 변형된 리드-솔로몬(Reed-Solomon) 오류 정정 코드("ECC")를 사용하여 데이터 심볼을 코드 워드로 인코딩하는 방법에 있어서,
    A. d-l (m+i)-비트 ECC 심볼들을 만들기 위해서 k-R 데이터 심볼들을 인코딩하여 예비 코드 워드를 형성하는 단계;
    B. 상기 ECC 심볼들 각각에서 i 선택된 비트들 중, 만약 있다면, 어느 것이 소정의 i-비트 절단 패턴과 일치하는지를 확인하는 단계; 및
    C. (i) 상기 ECC 심볼들 각각에서 상기 선택된 i 비트들이 상기 패턴과 일치한다는 결정에 응답하여, 상기 i-비트의 소정의 패턴과 모두 제로인 m 비트를 각각 가지는 상기 예비 코드 워드에 R 의사 리던던시 심볼들을 추가하기 위해서, 상기 i-비트 패턴으로 설정된 상기 I 비트들을 갖는 R 심볼들과 모두 제로로 설정된 상기 i 비트들을 갖는 d-l 심볼들을 가지는 부가적 변형 코드 워드(s)와 상기 예비 코드 워드를 결합시킴으로써 데이터 코드 워드를 형성하는 단계,
    (ⅱ) 상기 ECC 심볼들의 적어도 하나에서 상기 선택된 i 비트들이 상기 패턴과 일치하지 않다는 결정에 응답하여, 상기 심볼들을 d-l ECC 변형 심볼들과 R 의사 리던던시 심볼들을 포함하는 ECC 변형자 코드 워드와 결합하여 상기 ECC 심볼을 변형하는 단계 - 상기 결합은 k-R 데이터 심볼들, d-l 변형된 ECC 심볼들 및 R 의사 리던던시 심볼들을 가지고 데이터 코드 워드를 만들고, 이들 모두는, 상기 소정의 패턴으로 설정된 상기 선택된 i 비트들을 가짐-, 및
    (ⅲ) 상기 데이터 코드 워드 심볼들로부터 상기 i 비트들을 절단하는 단계
    를 포함하는 인코딩 방법.
  2. 제1항에 있어서, 상기 변형 단계는:
    a. 상기 소정의 i-비트 패턴에서 상기 대응 비트와 일치하지 않는 상기 심볼 내의 상기 선택된 i 비트들 각각의 상기 위치에 응답하여 각 ECC 심볼에 대해 하나 이상의 변형 코드 워드들을 선택하는 단계.
    b. 상기 ECC 변형자 코드 워드를 만들기 위해서 상기 변형 코드 워드들 및 부가적 변형 코드 워드를 결합시키는 단계
    를 더 포함하는 인코딩 방법.
  3. 제1항에 있어서, 상기 변형 단계는:
    a. 상기 소정의 i-비트 패턴에서 상기 대응 비트와 일치하지 않는 상기 심볼의 상기 선택된 i 비트들 각각의 위치에 응답하여, 각 ECC 심볼에 대해 하나 이상의 변형 코드 워드들의 R 선행 계수들을 선택하는 단계;
    b. R 코드 워드 정보 심볼들을 만들기 위해서 상기 변형 코드 워드들의 R 선행 계수들과 상기 변형 코드 워드의 R 선행 계수들을 결합시키는 단계; 및
    c. d-l ECC 심볼 변형자들 및 R 의사 리던던시 심볼들을 포함하는 ECC 변형자 코드 워드를 만들기 위해서 상기 R 정보 심볼들을 인코딩하는 단계
    를 더 포함하는 인코딩 방법.
  4. GF(pm)의 심볼들로 코드 워드를 만들기 위해서, GF(pm+i)상의 오류 정정 코드를 사용하여 인코드하는 변형된 리드 솔로몬 인코더에서 사용되는 코드를 선택하는 방법에 있어서,
    A. 거리 d를 선택하고, 최저 근, L을 제로로 설정하는 단계;
    B. 인 경우에
    생성 다항식
    g(x)=(x+αL)*(x+αL+1)*...(x+αL+n-k-l) = xn-k+gn-k-lxn-k-l+...+g1x1+g0x0
    을 사용하여
    코드 워드 cl´(x)= g´n-kxn-k+ g´n-k-1xn-k-1+...+ g´x + 1x0
    을 만드는 단계;
    C. 상기 계수 x-1로서 1을 갖는 코드 워드 c1(x)을 만들기 위해서 상기 코드 워드 c1´(x)을 주기적으로 이동시키는 단계;
    D. 기본 코드 워드들(b0, b1...bm-1)을 만들기 위해서 c1(x)에 α0, α1...αm-1을 곱하는 단계;
    E. c1(x)을 주기적으로 이동시키는 단계;
    F. c1(x)에 c1(x)의 상기 계수 x0을 곱하는 단계;
    G. 코드 워드 c2(x)를 만들기 위해서 단계들(D 및 E)의 상기 결과들을 더하는 단계;
    H. 기본 코드 워드들(bm, bm-1...b2m-1)을 만들기 위해서 c2(x)에 α0, α1...αm-1을 곱하는 단계;
    I. c2(x)를 주기적으로 이동시키는 단계;
    J. c1(x)에 c2(x)의 상기 계수 x0을 곱하는 단계;
    K. 코드 워드 c3(x)을 만들기 위해서 단계들(H 및 I)의 상기 결과들을 더하는 단계;
    L. 기본 코드 워드들(b2m, b2m+1...b3m-1)을 만들기 위해서 c3(x)에 α0, α1...αm-1을 곱하는 단계;
    M. 모든 cw(x)(3≤w≤i*m)에 대해 단계들(H-K)을 반복하는 단계;
    N. i*(d-l) 변형 코드 워드들이 상기 기본 워드들(b0, b1...b(m*w)-1)의 선형 조합으로부터 만들어질 수 있는지를 결정하는 단계;
    O. 만들어진다면, 상기 생성 다항식으로 g(x)를 선택하는 단계;
    P. 만들어질 수 없다면, L=L+1로 설정하고 L≤pm+i-1이라면 단계들(B-N)을 반복하는 단계
    를 포함하는 코드 선택 방법.
  5. GF(2t)h의 심볼들로 코드 워드를 만들기 위해서, GF(2t)h+j상의 오류 정정 코드를 사용하는 변형된 리드 솔로몬 인코더에서 사용되는 변형 코드 워드들을 결정하는 방법에 있어서,
    A. GF(2t) 대한 차수 h의 기약 다항식을 결정하는 단계;
    B. g(x)를 곱하는 경우에 소정의 위치에 있는 1 요소를 가지는 한 개의 계수와 대응 요소로서 0을 가지는 다른 계수를 갖는 코드 워드를 만드는 GF(2t)h로부터 αv를 선택하는 단계;
    C. 소정의 위치에서 1 요소를 가지는 별개의 계수와 대응 요소로서 0을 가지는 다른 계수들을 갖는 또다른 코드 워드를 만들기 위해서 또다른 αv를 선택하는 단계;
    D. 전체 j*(d-l) 코드 워드들을 만들기 위해서 단계 C를 반복하는 단계;
    E. 소정의 위치에서 GF(2t)h의 선택된 요소를 가지는 부가적 코드 워드들을 만들기 위해서 단계들(B 내지 D)에서 만들어진 코드 워드들에 GF(2t)h의 선택된 요소들을 곱하는 단계
    를 포함하는 변형 코드 워드 결정 방법.
  6. 기선택된 i-비트 패턴에 관련되어 있는 변형된 리드 솔로몬 코드를 제각기 사용하는 많은 디코더들 중 선택된 하나에 한 개의 인코더로부터 데이터를 보내기 위한 시스템에 있어서,
    A. GF(pm+i)상의 데이터를 인코드하고, 변형된 리드 솔로몬 코드 및 많은 기선택된 i-비트 절단 패턴들 중 하나를 사용하여 GF(pm)의 데이터 코드 워드를 만들며, 상기 특정 디코더에 관련한 상기 i-비트 패턴을 사용하여 상기 디코더들 중 특정의 디코더에 대해 지정된 데이터를 인코딩하는 인코더, 및
    B. 상기 디코더와 관련한 상기 i-비트 패턴을 사용하여 상기 데이터 코드 워드를 각각이 디코딩하고, 상기 데이터를 인코드하는데 사용되는 상기 패턴과는 다른 패턴들을 사용하여 상기 데이터 코드 워드를 정정할 수 없는 데이터로 디코딩하고 상기 데이터를 인코드하기 위해서 사용된 것과 동일한 패턴을 사용하여 상기 데이터 코드 워드를 오류가 없거나 정정 가능한 데이터로 디코딩하는 복수의 디코더
    를 포함하는 시스템.
  7. 제6항에 있어서, 각 디코더는,
    a. d-l(m+i)-비트 ECC 심볼들을 만들기 위해서 k-R 데이터 심볼까지 인코딩하여 예비 코드 워드를 형성하는 수단;
    b. ECC 심볼들 각각에서 상기 i 선택된 비트들 중, 만약 있다면, 어느 것이 소정의 I-비트 절단 패턴과 일치하는지를 확인하는 수단; 및
    c. (ⅰ) 상기 ECC 심볼들 각각에서 상기 선택된 i 비트가 상기 패턴과 일치한다는 결정에 응답하여, 상기 예비 코드 워드에 제각기 상기 i-비트의 소정의 패턴을 가지는 R 의사 리던던시 심볼들을 추가하기 위해서, 상기 디코더에 의해 사용된 상기 i-비트 패턴으로 설정된 상기 i 비트를 갖는 R 심볼들과 모두 제로로 설정된 상기 i 비트를 갖는 d-l 심볼들을 가지는 부가적 변형 코드 워드(S)와 상기 예비 코드 워드를 결합시킴으로써 데이터 코드 워드를 형성하는 수단,
    (ⅱ) 상기 ECC 심볼들 중 적어도 하나에서 상기 선택된 i 비트가 상기 패턴과 일치하지 않는다는 결정에 응답하여, d-l ECC 변형 심볼들과 R 의사 리던던시 심볼들을 포함하는 ECC 변형자 코드 워드를 상기 심볼들과 결합시킴으로써 상기 ECC 심볼들을 변형하는 수단 - 상기 결합은 k-R 데이터 심볼들, d-l 변형된 ECC 심볼들 및 R 의사 리던던시 심볼들을 갖는 데이터 코드 워드를 생성하고, 이들 모두는 상기 소정의 패턴으로 설정된 상기 선택된 i 비트들을 갖음 -
    을 더 포함하는 시스템.
  8. 제7항에 있어서, 상기 디코더 각각은,
    a. 상기 소정의 i-비트 패턴에서 상기 대응 비트와 일치하지 않는 상기 심볼 내의 상기 선택된 i-비트들 각각의 상기 위치에 응답하여 각 ECC 심볼에 대해 한 개 이상의 변형 코드 워드들을 선택하는 수단;
    b. 상기 ECC 변형자 코드 워드를 만들기 위해서 상기 변형 코드 워드들 및 상기 부가적 변형 코드 워드를 결합하는 수단
    을 더 포함하는 상기 인코딩 시스템.
  9. 제7항에 있어서, 상기 인코더는,
    a. 상기 소정의 i-비트 패턴에서 상기 대응 비트와 일치하지 않는 상기 심볼의 상기 선택된 i 비트들 각각의 상기 위치에 응답하여, 각 ECC 심볼에 대해 하나 이상의 변형 코드 워드들의 상기 R 선행 계수들을 선택하는 수단;
    c. R 정보 심볼들을 만들기 위해서 상기 변형 코드 워드들의 상기 R 선행 계수와 상기 부가적 변형 코드 워드의 R 선행 계수들을 결합시키는 수단;
    d. 상기 ECC 변형자 코드 워드를 만들기 위해서 상기 R 정보 심볼들을 인코딩하는 수단
    을 더 포함하는 상기 시스템.
  10. 디스크에 데이터를 기억시키고 디스크로부터 데이터를 검색하는 시스템에 있어서,
    A. GF(2m+i)상의 데이터를 인코딩하고 GF(2m)상의 데이터 코드 워드들을 만들고, 많은 기선택된 i-비트 절단 패턴들 중 하나를 사용하며 특정 트랙과 관련된 상기 i-비트 패턴을 사용하여 상기 디스크 상의 특정 트랙 내에 기억된 데이터를 인코딩하는 인코더;
    B. 상기 디스크 상의 트랙으로부터 데이터를 검색하는 수단; 및
    C. 상기 데이터 코드 워드가 검색되는 상기 트랙과 관련된 상기 i- 비트 패턴을 사용하며 상기 검색된 데이터 코드 워드를 디코딩하며, 상기 데이터를 검색하는 수단이 상기 데이터를 상기 부정확한 트랙으로부터 검색한다면 상기 데이터 코드 워드를 정정할 수 없는 데이터로 디코딩하고 상기 데이터 코드 워드가 상기 정확한 트랙으로부터 검색되었다면 상기 데이터 코드 워드를 오류가 없거나 정정 가능한 데이터로 디코딩하는 디코더
    를 포함하는 시스템.
  11. 제10항에 있어서, 상기 인코더는,
    a. d-l(m+i)-비트 ECC 심볼들을 만들기 위해서 k-R 데이터 심볼까지 인코딩하여 예비 코드 워드를 형성하는 수단;
    b. ECC 심볼들 각각에서 i 선택된 비트들이 소정의 i-비트 절단 패턴과 일치하는지를 확인하는 수단; 및
    c. (ⅰ) 상기 ECC 심볼들 각각에서 상기 선택된 i 비트가 상기 패턴과 일치한다는 결정에 응답하여, 제각기 상기 i-비트 소정의 패턴을 가지는 R 의사 리던던시 심볼들을 상기 예비 코드에 추가하기 위해서, 상기 트랙과 관련된 상기 i-비트 패턴으로 설정된 상기 비트를 갖는 R 심볼들과 모두 제로로 설정된 상기 i 비트를 갖는 d-l 심볼들을 가지는 부가적 변형 코드 워드와 상기 예비 코드 워드를 결합시킴으로써 데이터 코드 워드를 형성하는 수단,
    (ⅱ) 상기 ECC 심볼들 중 적어도 하나에서 상기 선택된 i 비트가 상기 패턴과 일치하지 않는다는 결정에 응답하여, d-l ECC 변형 심볼들과 R 의사 리던던시 심볼들을 포함하는 ECC 변형자 코드 워드를 상기 심볼들과 결합시킴으로써 상기 ECC 심볼들을 변형하는 수단 - 상기 결합은 k-R 데이터 심볼들을 갖는 데이터 코드 워드, d-l 변형된 ECC 심볼들 및 R 의사 리던던시 심볼들을 만들고, 이들 모두는 상기 소정의 패턴에서 설정된 상기 선택된 i 비트들을 갖음 -
    을 포함하는 시스템.
  12. 제11항에 있어서, 상기 인코더는,
    a. 상기 선택된 i-비트 패턴에서 상기 대응 비트와 일치하지 않는 상기 심볼 내의 상기 선택된 i-비트들 각각의 위치에 응답하여 각 ECC 심볼에 대한 한 개 이상의 변형 코드 워드들을 선택하는 수단;
    b. 상기 선택된 패턴으로 설정된 상기 i 비트를 갖는 특정 심볼들을 가지는 부가적 변형 코드 워드를 선택하는 수단;
    c. d-l ECC 심볼 변형자들 및 상기 R 의사 리던던시 심볼들을 포함하는 ECC 변형자 코드 워드를 만들기 위해서 상기 변형 코드 워드들 및 상기 부가적 변형 코드 워드를 결합하는 수단; 및
    d. 상기 예비 코드 워드 및 상기 ECC 변형자 코드 워드를 결합시킴으로써 상기 예비 코드 워드 내에서 상기 ECC 심볼들을 변형하는 수단
    을 더 포함하는 상기 인코딩 시스템.
  13. 제11항에 있어서, 상기 인코더는,
    a. 상기 선택된 i-비트 패턴에서 상기 대응 비트와 일치하지 않는 상기 심볼의 상기 i 비트들 각각의 상기 위치에 응답하여, 각 ECC 심볼에 대해 하나 이상의 변형 코드 워드들의 상기 R 선행 계수들을 선택하는 수단;
    b. 상기 선택된 패턴으로 설정된 상기 i 비트를 갖는 특정 심볼들을 가지는 부가적 변형 코드 워드의 상기 R 선행 계수를 선택하는 수단;
    c. 상기 변형 코드 워드들 및 상기 부가적 변형 코드 워드의 상기 R 선행 계수들을 결합하여 R 정보 심볼들을 형성하는 수단;
    d. 상기 ECC 변형자 코드 워드를 만들기 위해서 상기 R 정보 심볼들을 인코딩하는 수단
    을 더 포함하는 시스템.
  14. 변형된 리드 솔로몬 코드를 사용하여 GF(2m)에서 코드 워드를 만들기 위해서 GF(2m+i)상의 데이터를 인코드하는 시스템의 상기 변형 코드 워드 기억 필요 조건을 줄이는 방법에 있어서,
    A. GF(2m) = GF(2t)h및 GF(2m+i) = GF(2t)h+j일 때의 그라운드 필드 GF(2t)와 t 차수의 생성 다항식 g(x)를 결정하는 단계;
    B. GF(2t)상의 차수 h의 기약 다항식을 결정하는 단계;
    C. 선택된 위치에서 GF(2t)의 요소 1을 각각 가지는 GF(2t)h에서 t-i+l 변형 코드 워드들을 결정하는 단계;
    D. GF(2t)h의 상기 심볼들에서 비-제로 요소의 위치와 각각 관련된 위치들에 상기 변형 코드 워드들 각각의 제1 계수를 기억하는 단계
    를 포함하는 방법.
KR1019980705387A 1996-11-14 1997-11-13 변형된 리드 솔로몬 코드 선택 및 인코딩 시스템 KR19990077243A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/749,235 1996-11-14
US08/749,235 US5822336A (en) 1996-11-14 1996-11-14 Modified reed solomon code selection and encoding system

Publications (1)

Publication Number Publication Date
KR19990077243A true KR19990077243A (ko) 1999-10-25

Family

ID=25012860

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980705387A KR19990077243A (ko) 1996-11-14 1997-11-13 변형된 리드 솔로몬 코드 선택 및 인코딩 시스템

Country Status (6)

Country Link
US (1) US5822336A (ko)
EP (1) EP0909484A4 (ko)
JP (1) JP2000503513A (ko)
KR (1) KR19990077243A (ko)
AU (1) AU5462398A (ko)
WO (1) WO1998021829A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889794A (en) * 1997-09-30 1999-03-30 Quantum Corporation Two-level error correction encoder
US6199188B1 (en) * 1997-10-07 2001-03-06 Quantum Corporation System for finding roots of degree three and degree four error locator polynomials over GF(2M)
US6148430A (en) * 1998-05-15 2000-11-14 Quantum Corporation Encoding apparatus for RAID-6 system and tape drives
DE19837809C1 (de) * 1998-08-20 2000-02-24 Frank Wolf Optischer Datenträger mit Kopierschutz und Verfahren zu seiner Herstellung
US6463564B1 (en) * 1999-09-14 2002-10-08 Maxtor Corporation Mis-synchronization detection system
US6631172B1 (en) 2000-05-01 2003-10-07 Lucent Technologies Inc. Efficient list decoding of Reed-Solomon codes for message recovery in the presence of high noise levels
US6895546B2 (en) * 2001-08-16 2005-05-17 Broad-Light Ltd. System and method for encoding and decoding data utilizing modified reed-solomon codes
US7206410B2 (en) * 2001-10-10 2007-04-17 Stmicroelectronics S.R.L. Circuit for the inner or scalar product computation in Galois fields
US7249309B2 (en) * 2002-11-13 2007-07-24 International Business Machines Corporation Single-burst-correction / double-burst-detection error code
US7181677B1 (en) * 2003-02-10 2007-02-20 Maxtor Corporation System and method for producing data and ECC code words using a high rate restricted-symbol code
US7426676B2 (en) * 2004-01-14 2008-09-16 Broadcom Corporation Data retrieval from a storage device using a combined error correction and detection approach
US7996620B2 (en) * 2007-09-05 2011-08-09 International Business Machines Corporation High performance pseudo dynamic 36 bit compare
JP4780158B2 (ja) * 2008-08-26 2011-09-28 ソニー株式会社 符号化装置および方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4856003A (en) * 1987-05-07 1989-08-08 Digital Equipment Corporation Error correction code encoder
US4847705A (en) * 1987-07-07 1989-07-11 Digital Equipment Corporation Method and apparatus for encoding magnetic disk sector addresses
US5068858A (en) * 1989-12-21 1991-11-26 International Business Machines Corporation Error correction capability varied with track location on a magnetic or optical disk
US5230003A (en) * 1991-02-08 1993-07-20 Ericsson-Ge Mobile Communications Holding, Inc. Decoding system for distinguishing different types of convolutionally-encoded signals
US5428627A (en) * 1992-11-10 1995-06-27 Qlogic Corporation Method and apparatus for initializing an ECC circuit
US5428630A (en) * 1993-07-01 1995-06-27 Quantum Corp. System and method for verifying the integrity of data written to a memory

Also Published As

Publication number Publication date
WO1998021829A3 (en) 1998-07-23
EP0909484A4 (en) 2003-07-09
US5822336A (en) 1998-10-13
WO1998021829A2 (en) 1998-05-22
AU5462398A (en) 1998-06-03
EP0909484A2 (en) 1999-04-21
JP2000503513A (ja) 2000-03-21

Similar Documents

Publication Publication Date Title
US5136592A (en) Error detection and correction system for long burst errors
KR930008683B1 (ko) 리드-솔로몬 에러 보정 코드 엔코더
US5724368A (en) Cyclical redundancy check method and apparatus
US5224106A (en) Multi-level error correction system
US5379305A (en) Error correction system with selectable error correction capabilities
JP4194850B2 (ja) 部分的に演繹的に分かる情報の符号化及び復号
US6148430A (en) Encoding apparatus for RAID-6 system and tape drives
US5901158A (en) Error correction encoder/decoder
KR19990077243A (ko) 변형된 리드 솔로몬 코드 선택 및 인코딩 시스템
US5948117A (en) Modified Reed-Solomon error correction system using (W+i+1)-bit representations of symbols of GF(2w+i)
KR19990028201A (ko) 10 비트 리드-솔로몬 에러 정정 모듈을 위한 전용 alu구조
JP2009295273A (ja) 誤り訂正符号エンティティのための消失訂正のコンピュータ実現化方法
JP2005500730A (ja) 復号器に情報が与えられる場合の改良された符号化
US5771246A (en) Multiple-burst-correction system
US5889794A (en) Two-level error correction encoder
JPH10503355A (ja) 可変ブロック長でデータを符号化するための方法および装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid