KR20060125837A - 데이터를 인코딩하기 위한 방법 및 장치 - Google Patents

데이터를 인코딩하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20060125837A
KR20060125837A KR1020067013905A KR20067013905A KR20060125837A KR 20060125837 A KR20060125837 A KR 20060125837A KR 1020067013905 A KR1020067013905 A KR 1020067013905A KR 20067013905 A KR20067013905 A KR 20067013905A KR 20060125837 A KR20060125837 A KR 20060125837A
Authority
KR
South Korea
Prior art keywords
symbol
symbols
galois field
message
values
Prior art date
Application number
KR1020067013905A
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 KR20060125837A publication Critical patent/KR20060125837A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • 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
    • 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/158Finite field arithmetic processing
    • 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/159Remainder calculation, e.g. for encoding and syndrome calculation
    • 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/65Purpose and implementation aspects
    • H03M13/6569Implementation on processors, e.g. DSPs, or software implementations

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

본 발명은 데이터를 인코딩하기 위한 방법 및 장치를 제공한다. 본 방법은 (a) 코드 생성자 계수들을 곱한 제1 성분 값들의 제1 테이블, 및 상기 코드 생성자 계수들을 곱한 제2 성분 값들의 제2 테이블을 제공하는 단계, (b) 메시지 심볼 및 최상위의 나머지 심볼에 기초하여 갈루아 필드 요소(Galois field element)를 결정하는 단계, (c) 상기 갈루아 필드 요소를 제1 및 제2 성분으로 분리시키는 단계, (d) 상기 제1 성분 및 생성자 계수 인덱스를 이용하여 상기 제1 테이블 내의 하나 이상의 제1 테이블 값에 액세스하고, 상기 제2 성분 및 상기 생성자 계수 인덱스를 이용하여 상기 제2 테이블 내의 하나 이상의 제2 테이블 값에 액세스하는 단계, (e) 동일한 생성자 계수 인덱스들을 갖는 제1 및 제2 테이블 값과, 이전의 나머지 심볼에 기초하여 현재의 나머지 심볼을 결정하는 단계, (f) 상기 코드 생성자의 각각의 생성자 계수에 대해 단계 (e)를 수행하여 나머지 심볼들의 그룹을 제공하는 단계, 및 (g) 코드워드(codeword) 내의 각각의 메시지 심볼에 대해 단계 (b) 내지 (f)를 수행하여, 코드워드의 메시지 심볼들과 함께 전송될 검사 심볼들을 구성하는 최종 나머지 심볼들의 그룹을 제공하는 단계를 포함한다.
리드 솔로몬 코딩, 코드 생성자 계수, 갈루아 필드 요소, 생성자 계수 인덱 스, 코드워드

Description

데이터를 인코딩하기 위한 방법 및 장치{ENCODING AND DECODING OF REED-SOLOMON CODES USING LOOK-UP TABLES FOR GALOIS FIELD MULTIPLICATIONS}
본 발명은 데이터 코딩에 관한 것으로서, 특히, 리드 솔로몬(Reed-Solomon) 코딩을 위한 방법 및 장치에 관한 것이다.
에러 검출 및 정정을 위한 리드 솔로몬 코드(Reed-Solomon code)를 이용하여 정보를 전송 및 수신하기 위한 프로시저가 이하에 설명될 수 있다. 보편적으로 비트 스트림으로 나타나는 전송될 정보는 특정 크기 m의 작은 블럭들로 나뉘어 진다. 이러한 m 비트의 작은 블럭들은, 모든 가능한
Figure 112006049416712-PCT00001
개의 m 비트 블럭들과,
Figure 112006049416712-PCT00002
차원의 갈루아 필드(Galois field, GF), 즉, GF(
Figure 112006049416712-PCT00003
)의 모든
Figure 112006049416712-PCT00004
개의 요소들의 집합 사이에 일대일 맵핑이 있다는 점에서, 유한 필드(또는, 갈루아 필드)로서 알려진 수학적 구조의 요소로 식별될 수 있다. 갈루아 필드 자체는, 요소가 0과 1이고, 두개의 필드 연산, 즉, 덧셈과 곱셈이 덧셈은 m-튜플 차순의 다항식 계수들에 대한 XOR(exclusive OR) 연산으로서 수행되고, 곱셈은 필드 곱셈으로서 m차의 특정 "원시(primitive)" 이진 다항식을 법으로 하여 다항식 곱으로서 구현되도록 정의된 "기반(ground)" 이진 필드 GF(2)로부터의 계수를 갖는 차수<m인 모든 다항식들의 집 합으로서 구성될 수 있는데, 앞의 곱셉에서 "원시" 이진 다항식은 약분될 수 없으며(더 낮은 차수의 이진 다항식들의 곱으로 더 인수분해될 수 없음), 또한, d<
Figure 112006049416712-PCT00005
-1에 대해
Figure 112006049416712-PCT00006
-1 형태의 어떤 이진 다항식도 나누지 못한다.
가장 중요하고 흔한 경우들 중 하나는 m=8인 경우인데, 여기서, 그러한 블럭 각각은 바이트로서 나타나고, 임의의 종류의 컴퓨터에 의해 편리하게 핸들링될 수 있다. 따라서, 다음의 설명은, "바이트"가 m≠8인
Figure 112006049416712-PCT00007
차원의 갈루아 필드의 요소 또는 "심볼"일 수 있다는 조건의, 바이트가 GF(256)의 요소인 경우에 대한 것이다. GF(256) 구축을 허용하는 원시 다항식은
Figure 112006049416712-PCT00008
이다.
정보의 기본 단위(바이트 또는 심볼) 및 대응하는 갈루아 필드(GF)를 설정한 후에, 전송될 정보는 동일한 크기 k의 심볼들의 그룹들로 나뉘어지는데, k는 코드의 요구된 에러 정정 능력에 기초하여 구해진다. 그러한 그룹 각각은 "메시지"라고 불린다. 메시지는 또한, k-1차의 GF에 대한 다항식 M(x)로서 해석된다.
Figure 112006049416712-PCT00009
여기서, 오름차순의 계수
Figure 112006049416712-PCT00010
는 GF 요소로서 다루어진 원래의 비트 스트림으로부터 획득된 순서의 정보 심볼이다. t개의 에러를 정정할 수 있는 리드 솔로몬 코드를 형성하기 위해, 생성자 다항식으로서 알려진 2t차의 다항식 G(x)는 다음의 수학식에 따라 정의된다.
Figure 112006049416712-PCT00011
여기서 α는 두개의 중요한(그리고, 관련된) 속성을 갖는 GF 프로세싱의 소위 "원시(primitive)" 요소를 나타낸다. 우선, 그것은 방정식 p(α)=0을 만족시키고, 둘째로, 결과로서, GF의 모든 0이 아닌 요소는 원시 요소의 제곱으로서 표시되고 GF 곱셈의 연산 하에서 아벨(abelian)(또는, 가환) 그룹을 형성할 수 있다. 그것은 정확히, "안티 로그(anti-log)" 테이블을 이용하여 GF 요소의 곱셈을 수행하는 간편한 방법을 설정하는 "안티 로그" 테이블의 생성을 허용하는 속성이다.
Figure 112006049416712-PCT00012
로 곱해진 메시지 다항식 M(x)를 생성자 다항식 G(x)로 나눈 나머지 R(x)는 다음과 같다.
Figure 112006049416712-PCT00013
나머지는 2t-1차의 다항식이며, 마지막으로, 이 다항식의 2t개의 계수는 조직적 형태로 "코드워드(codeword)"를 포함하는 k+2t개의 심볼들의 스트링을 형성하는 k개의 메시지 심볼들에 첨가되는 검사 심볼로서 사용된다. 코드워드의 길이는 GF 내의 0이 아닌 요소들의 개수, 즉, n-1을 초과해서는 안된다. 따라서, 실제로 통신 채널을 통해 전송된 메시지는 다항식으로서 나타날 수 있다.
Figure 112006049416712-PCT00014
여기서,
Figure 112006049416712-PCT00015
은 검사 심볼, 즉, t개까지의 에러의 검출 및 정정을 허용하는 여분의 심볼이다.
따라서, 인코딩 태스크는 계수가 임의의 GF의 심볼인 다항식의 나누기를 수행하는 것으로 구성된다. GF에서의 계산을 다루는 통상의 소프트웨어 접근은 GF 심볼의 다항식 형태로부터 지수 형태로 및 역방향의 변환이 저장되어 있는 2개의 룩업 테이블을 이용하는 것에 기초한다. 이 방법은 (여기에서 주요한 GF(
Figure 112006049416712-PCT00016
)의 경우에 대해) 다음과 같이 요약될 수 있다.
1. 다항식 형태의 심볼들(GF의 요소들)은 바이트로서 나타난다.
Figure 112006049416712-PCT00017
2. 심볼들의 합은 비트의 XOR 연산, f+g=f^g로서 구해진다.
3. 다항식 형태의 원시 요소 α는 α=(00000010)으로서 나타나는데, 이것은 다항식 표식에서 α(x)=x에 대응한다.
4. 각각의 0이 아닌 심볼 s는 특정 승수으로 제곱된 원시 요소 α이다
Figure 112006049416712-PCT00018
. 이진 다항식을 이용한 다항식 대수 처리를 이용하여, 개별적인 대수 테이블 log_table 및 지수 테이블 exp_table이 미리 계산되어, (0이 아닌) 요소들의 지수(승수) 및 다항식(바이트) 표시 간의 변환을 용이하게 하여,
Figure 112006049416712-PCT00019
이 성립하도록 한다.
이들 테이블을 이용하여 GF 심볼들을 곱하기 위해, 피연산자 u와 v 및 결과 r이 바이트 형태라고 가정하고서 다음의 일련의 연산들이 수행되어야 한다.
Figure 112006049416712-PCT00020
Figure 112006049416712-PCT00021
여기서 %는 모듈로 연산을 표시한다(x%255는 x를 255로 나눈 나머지임).
이러한 접근에 기초한 GF에 대한 곱셈 결과의 계산 속도는, 테이블로의 복수의 액세스가 필요하고 덧셈에 의해 지수 테이블로의 엔트리의 주소가 계산되어야 한다는 사실에 의해 제한된다. 많은 경우에, 수정된 주소 레지스터를 통한 액세스는 2 내지 3의 대기 주기를 요구하여, 하나의 GF 곱셈의 총 시간은 심볼(바이트) 당 10 내지 12 클럭 주기일 수 있다. 이것은 리드 솔로몬 코드의 소프트웨어 구현이 도전적인 문제가 되게 한다. 예를 들어, 188개의 데이터 바이트와 16개의 검사 바이트를 갖는 (204, 188, 16) 리드 솔로몬 코드의 일반적 경우에, 하나의 코드워드를 인코딩하기 위해서는 이하에 설명되는 바와 같이 188*16*(10 - 12)~=30 내지 36 K의 클럭이 필요하다. 따라서, 예를 들어, 4 K 심볼/초의 전송률을 이용한 ADSL 적용에 있어서, 인코더 연산만에 대한 MIPS의 총 소모는 120 내지 144 MIPS이며, 이것은 매우 높은 수치이다.
<본 발명의 요약>
본 발명의 일 실시예에 따르면, 데이터를 인코딩하기 위한 방법이 제공된다. 본 방법은 (a) 코드 생성자 계수들을 곱한 제1 성분 값들의 제1 테이블, 및 코드 생성자 계수들을 곱한 제2 성분 값들의 제2 테이블을 제공하는 단계, (b) 메시지 심볼 및 최상위의 나머지 심볼(high order remainder symbol)에 기초하여 갈루아 필드 요소를 결정하는 단계, (c) 갈루아 필드 요소를 제1 및 제2 성분으로 분리시키는 단계, (d) 제1 성분 및 생성자 계수 인덱스를 이용하여 제1 테이블 내의 하나 이상의 제1 테이블 값에 액세스하고, 제2 성분 및 생성자 계수 인덱스를 이용하여 제2 테이블 내의 하나 이상의 제2 테이블 값에 액세스하는 단계, (e) 동일한 생성자 계수 인덱스들을 갖는 제1 및 제2 테이블 값과, 이전의 나머지 심볼에 기초하여 현재의 나머지 심볼을 결정하는 단계, (f) 코드 생성자의 각각의 생성자 계수에 대해 단계 (e)를 수행하여 나머지 심볼들의 집합을 제공하는 단계, 및 (g) 코드워드 내의 각각의 메시지 심볼에 대해 단계 (b) 내지 (f)를 수행하여, 코드워드의 메시지 심볼들과 함께 전송될 검사 심볼들을 구성하는 최종 나머지 심볼들의 집합을 제공하는 단계를 포함한다.
본 발명의 제2 양태에 따르면, 데이터를 인코딩하기 위한 장치가 제공된다. 본 장치는 코드 생성자 계수들을 곱한 제1 성분 값들을 포함하는 제1 룩업 테이블, 코드 생성자 계수들을 곱한 제2 성분 값들을 포함하는 제2 룩업 테이블, 및 프로세서를 포함한다. 프로세서는 메시지 심볼 및 최상위의 나머지 심볼에 기초하여 갈루아 필드 요소를 결정하기 위한 수단, 갈루아 필드 요소를 제1 및 제2 성분으로 분리시키기 위한 수단, 제1 성분 및 생성자 계수 인덱스를 이용하여 제1 룩업 테이블 내의 하나 이상의 제1 테이블 값에 액세스하고, 제2 성분 및 생성자 계수 인덱스를 이용하여 제2 룩업 테이블 내의 하나 이상의 제2 테이블 값에 액세스하기 위한 수단, 및 코드 생성자의 각각의 생성자 계수에 대해, 동일한 생성자 계수 인덱스들을 갖는 제1 및 제2 테이블 값과, 이전의 나머지 심볼에 기초하여 현재의 나머지 심볼을 결정하여, 나머지 심볼들의 집합을 제공하기 위한 수단을 포함한다. 코드워드의 각각의 메시지 심볼은 코드워드의 메시지 심볼과 함께 전송될 검사 심볼을 구성하는 최종의 나머지 심볼들의 집합을 제공하도록 처리된다.
본 발명을 가장 잘 이해하기 위하여, 본 명세서에 참조로서 통합된 첨부 도면에 대한 참조가 이루어진다.
도 1은 리드 솔로몬 인코딩을 위한 종래의 방법의 개략적인 블럭도.
도 2는 코드 생성자 계수에 의한 곱셈 이전에 갈루아 필드 요소가 해프워드들로 분리되는 리드 솔로몬 인코딩을 위한 방법을 도시하는 개략적인 블럭도.
도 3은 본 발명의 일 실시예에 따른 리드 솔로몬 인코딩을 도시하는 개략적인 블럭도.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 리드 솔로몬 인코딩을 위한 룩업 테이블의 실시예를 도시.
도 5는 본 발명의 일 실시예에 따른 디지털 신호 프로세서 내의 리드 솔로몬 인코딩을 도시하는 개략적인 블럭도.
도 6은 본 발명의 일 실시예에 따른 리드 솔로몬 인코딩을 도시하는 흐름도.
본 발명의 리드 솔로몬(RS) 코딩 프로시저에 따른 메시지를 인코딩하는 특정 태스크를 수행하는 더 효과적인 방법을 설명하기 위해, 계산에 대한 상세한 설명이 필요하다. 문제는
Figure 112006049416712-PCT00022
로 곱해진 메시지 다항식 M(x)를 코드 생성자 다항식 G(x)로 나눈 나머지를 구하는 것으로서 공식화된다.
나머지는 메시지를 반복함으로써, 즉, 메시지의 길이를 늘리고, 메시지의 이미 수신된 바이트들을 왼쪽으로 시프트하고, 오른쪽으로부터 새로운 바이트를 집어넣음으로써 계산되어, 제1 단계에서 메시지 M0(x)가 하나의 바이트 M0만을 포함하도록 하고,
Figure 112006049416712-PCT00023
M1(x)는 두개의 바이트 m1 및 m0을 포함하는 것으로 간주되는데, 제1 바이트 m0은 한 위치 왼쪽으로 시프트된다. 이것은 다항식 표현으로 다음과 같이 표기될 수 있다.
Figure 112006049416712-PCT00024
생성자 다항식 G(x)의 "꼬리" g(x)를 다음과 같이 도입하는 것이 편리하며,
Figure 112006049416712-PCT00025
이것은 속성
Figure 112006049416712-PCT00026
을 갖는다.
이 속성을 이용하여, 제1 단계에서, 메시지의 제1 심볼만이 인코딩될 때(나머지 r0이 구해짐), 다음의 관계가 유지된다.
Figure 112006049416712-PCT00027
Figure 112006049416712-PCT00028
따라서, 이하의 식을 이용하여 반복이 시작된다.
Figure 112006049416712-PCT00029
제2 단계 이후에, 나머지는 다음과 같이 계산될 수 있다.
Figure 112006049416712-PCT00030
따라서, 다음의 수학식이 성립된다.
Figure 112006049416712-PCT00031
이러한 접근을 이용하여, 일반적으로, k+1 단계 이후의 나머지 rk+1(x)는 이전 단계 k에서의 나머지 rk(x) 및 새로 들어오는 바이트 mk+1로부터 정확히 동일한 방식으로 계산될 수 있다.
Figure 112006049416712-PCT00032
이 계산은 2t개의 심볼로 구성된 "시프트 레지스터" r의 일반적 표현을 이용하여 구현될 수 있다.
Figure 112006049416712-PCT00033
각각의 반복 시에, 2t개의 심볼은 왼쪽으로 시프트되면서 오른쪽으로부터 0 심볼이 시프트-인되고 가장 왼쪽의 심볼 r2t-1은 레지스터로부터 시프트-아웃된다. 이 가장 왼쪽의 심볼은 들어오는 심볼로 추가되고(XOR됨) "피드백" 심볼을 형성한다.
Figure 112006049416712-PCT00034
이러한 정의를 이용하여, 나머지 Rk(x)는 다음의 공식에 따라 반복된다.
Figure 112006049416712-PCT00035
나머지의 반복을 나타내는 개략적 도면이 도 1에 도시된다. 도 1에서, 메시지 심볼(10)(Ms)은 최상위의 나머지(high order remainder)(46)(r3)와 합산되어, 갈루아 필드 요소(14)(f)를 제공한다. 상술된 바와 같이, 갈루아 필드 덧셈은 XOR 연산으로서 수행된다. 갈루아 필드 요소(14)는 코드 생성자 계수들(20, 22, 24 및 26)(g0, g1, g2 및 g3)로 곱해져, 중간 값들(30, 32, 34 및 36)을 제공한다. 중간 값들은 이전의 나머지 심볼들과 합산되어 현재의 나머지 심볼들을 제공한다. 따라서, 곱 fg0은 0과 합산되어 나머지 심볼(40)(r0)을 제공하고, 곱 fg1은 이전의 나머지 심볼(40)과 합산되어 현재의 나머지 심볼(42)(r1)을 제공하고, 곱 fg2는 이전의 나머지 심볼(42)과 합산되어 현재의 나머지 심볼(44)(r2)을 제공하고, 곱 fg3은 이 전의 나머지 심볼(44)과 합산되어 현재의 나머지 심볼(46)(r3)을 제공한다. 이 프로세스는 코드워드 내의 각각의 메시지 심볼(10)에 대해 반복된다. 코드워드 내의 모든 메시지 심볼이 처리된 후에, 나머지 심볼들(40, 42, 44 및 46)은 메시지 심볼들과 함께 전송되기 위한 검사 심볼들을 나타낸다. 따라서, 코드워드는 메시지 심볼들 및 검사 심볼들을 포함한다. 도 1의 예는 메시지 심볼들과 함께 전송되기 위한 4개의 검사 심볼을 생성하며, 코드워드 내의 2개의 에러를 정정할 수 있다. 더 흔한 예로, 코드 생성기는 16개의 코드 생성자 계수 gi를 포함하고, 코드워드 내의 8개의 에러를 정정하기 위한 16개의 검사 심볼을 생성한다.
나머지 다항식의 계산에 대한 통상의 룩업 테이블 접근이 사용될 때, 계산의 흐름에서의 주요 병목현상은 GF의 곱셈의 결과의 반복 계산이다. 메시지의 모든 바이트에 있어서, 2t번의 곱셈이 필요하다. 따라서, n개의 정보 바이트 및 2t개의 검사 바이트로 하나의 코드워드를 인코딩하기 위해서는, 2nt번의 GF 곱셈이 수행되어야 한다.
GF(256) t=8, n=239 이하로부터의 심볼을 이용하여 8개의 에러를 정정하는 리드 솔로몬 코드의 중요한 경우에, 총 3824번의 GF 연산이 수행된다. 10 내지 12의 주기/연산을 이용하면, 이것은 40K 주기/코드워드까지에 이른다.
2002년 3월 19일자 Yang의 미국 특허 제6,360,348호에서, 룩업 테이블은 나머지 다항식의 1회의 반복에 포함된 모든 GF 연산이 동일한 제2 피연산자들의 집합, 즉, 코드 생성자 다항식 g(x)의 2t개의 계수에 대해 수행된다는 소견에 기초하 여, 계산을 용이하게 하도록 구성된다. 따라서, GF의 모든 n개의 요소들을 코드 생성자 다항식 g(x)의 2t개의 계수들로 곱한 결과인 2t*n개의 값은 미리 계산되고 룩업 테이블에 저장되어, 테이블 내의 각각의 엔트리 F(f, i)의 컨텐츠가 다음과 같이 정의되도록 한다.
Figure 112006049416712-PCT00036
여기서, f는 다항식 형태의 갈루아 필드 요소를 나타내고, gi는 코드 생성자 다항식의 계수이고, "
Figure 112006049416712-PCT00037
"는 갈루아 필드 곱셈 연산을 표시한다.
이러한 접근법이 사용되는 경우, 정정된 에러의 개수가 비교적 작고(8개의 에러라고 가정) 사용된 갈루아 필드가 GF(256)더라도, 테이블의 크기는 4Kbyte(16*256*1바이트, 16은 8개의 에러를 정정하기 위한 검사 바이트의 개수임)이다. 종종, RS 코드에 대한 몇몇 상이한 옵션들이 실행되어야 한다. 예를 들면, ADSL 적용에 몇몇 지연 경로를 사용하여, 하나의 지연 경로에 있는 코드워드는 16개의 검사 바이트를 갖고 다른 지연 경로에서는 12개의 검사 바이트를 갖는 경우, 메모리 크기는 7Kb가 될 것이다.
본 발명의 특징에 따르면, GF 연산
Figure 112006049416712-PCT00038
(f는 다항식 형태의 임의의 GF 요소를 나타내고, gi는 코드 생성자 다항식의 계수이고, "
Figure 112006049416712-PCT00039
"는 갈루아 필드 곱셈 연산을 나타냄)는 두개의 작은 테이블을 이용하는 두개의 단계에서 수행된다.
1) 임의의 GF 요소 f는 우선, 그것의 "낮은" 부분과 "높은" 부분의 합산으로서 나타난다. 예를 들어, GF(256)에서, 다음과 같이 표기할 수 있다.
Figure 112006049416712-PCT00040
여기서, H 및 L은 높은 마스크와 낮은 마스크를 이용한 두개의 AND 연산을 이용하여 f로부터 쉽게 획득된다.
Figure 112006049416712-PCT00041
2) GFMUL 연산
Figure 112006049416712-PCT00042
는 갈루아 필드의 속성을 이용하여 다음과 같이 수행될 수 있다.
Figure 112006049416712-PCT00043
수학식 23 내지 25의 연산은 도 2에 나타나 있다. 도시된 바와 같이, 갈루아 필드 요소(14)는 수학식 24에 따라 높은 마스크와 낮은 마스크를 이용하여 높은 해프워드(50)(H0)와 낮은 해프워드(52)(HL)로 분리된다. 높은 해프워드와 낮은 해프워드는 각각, 각각의 코드 생성자 계수(20, 22, 24 및 26)로 곱해진다. 각각의 곱들은 합산되어 중간 값들을 제공한다. 중간 값들은 이전의 나머지 심볼들과 합산되어 현재의 나머지 심볼들을 제공한다. 도 2의 아키텍처는 룩업 테이블과 결합되어, 이로운 결과를 달성한다.
3) 수학식 25를 이용하여, 두개의 작은 룩업 테이블이 형성되고, 각각은 "높은" 해프워드와 "낮은" 해프워드의 모든 16가지 경우에 의한 생성자 다항식 계수들 gi의 집합의 GFMUL(갈루아 필드 곱셈)의 연속적 결과를 유지한다.
Figure 112006049416712-PCT00044
Figure 112006049416712-PCT00045
4) 코드 생성자 다항식의 GF(256) 및 16개의 계수의 경우, 각각의 테이블의 크기는 256 바이트이고, 두개의 테이블의 총 크기는 종래의 기술보다 8배 더 작은 512 바이트이다. 이 때, 연산의 ~50%는 GFMUL 연산의 실행과 직접 연결되지 않기 때문에 총 실행 시간은 ~50%만이 더 길어진다.
하나의 단계(하나의 정보 심볼/바이트)에 의한 나머지의 반복과 관련된 연산은 다음의 순서로 실행될 수 있다.
Figure 112006049416712-PCT00046
Figure 112006049416712-PCT00047
Figure 112006049416712-PCT00048
각각의 반복은 룩업 테이블들로의 두번의 액세스, 및 임의의 마이크로프로세서에 쉽게 이용가능한 후속하는 XOR 연산을 요구한다.
룩업 테이블 TH 및 TL을 이용한 코드 생성은 도 3에 개략적으로 도시되어 있다. 상술된 바와 같이, 제1 룩업 테이블은 코드 생성자 계수들 각각으로 곱해진 높은 해프워드 H0의 값을 포함하고, 제2 룩업 테이블은 코드 생성자 계수들 각각으로 곱해진 낮은 해프워드 0L의 값을 포함한다. 높은 해프워드 값은 계수 인덱스와 함께 사용되어, 테이블 TH에 액세스하여 하나 이상의 높은 테이블 값(54)을 제공하고, 낮은 해프워드 값은 그 계수 인덱스와 함께 사용되어, 테이블 TL에 액세스하여 하나 이상의 낮은 테이블 값(56)을 제공한다. 동일한 계수 인덱스를 갖는 각각의 높은 테이블 값 및 낮은 테이블 값은 합산 연산(60)으로 합산되어 중간 값들을 제공하고, 중간 값들은 합산 연산(62)으로 각각의 이전의 나머지 심볼들과 합산되어 현재의 나머지 심볼들(40, 42, 44 및 46)을 제공한다. 이하에 설명되는 바와 같이, 룩업 테이블은 코드 생성을 수행하는 시스템의 아키텍처에 따라, 합산될 테이블 값들의 단일 집합, 또는 합산될 테이블 값들의 둘 이상의 집합을 제공할 수 있다.
본 발명의 일 실시예에 따른 룩업 테이블의 컨텐츠는 도 4a 및 도 4b에 도시되어 있다. 도 4a는 높은 해프워드 테이블(70)(TH)을 도시하고, 도 4b는 낮은 해프워드 테이블(72)(TL)을 도시한다. 도시된 바와 같이, 테이블(70)은 코드 생성자 계수들 각각으로 곱해진 높은 해프워드 H0의 각각의 가능한 값의 곱을 포함한다. 따라서, 테이블(70) 내의 각각의 엔트리는 giH의 값을 포함하는데, 여기서, i는 0 내지 2t-1까지의 범위에 있고, H는 0 내지 높은 해프워드 H의 최대 값까지의 범위에 있다. 마찬가지로, 테이블(72) 내의 각각의 엔트리는 giL의 값을 포함하는데, 여기서, i는 0 내지 2t-1까지의 범위에 있고, L은 0 내지 낮은 해프워드 L의 최대 값까지의 범위에 있다. 메시지 심볼이 바이트인 흔한 경우에 있어서, 높은 해프워드는 00 내지 F0(16진수 표시를 사용) 까지의 범위의 16개의 가능한 값들을 갖는다. 코드 생성자 계수의 개수는 요구된 검사 심볼의 개수에 의존하며, 8개의 검사 심볼의 경우에 있어서 16일 수 있다. 마찬가지로, 테이블(72)은 코드 생성자 계수들 각각으로 곱해진 낮은 해프워드 0L의 각각의 가능한 값의 곱을 포함한다. 메시지 심볼이 바이트이면, 낮은 해프워드 값은 0 내지 F까지의 범위에 있다. 따라서, 메시지 심볼이 바이트이고 코드 생성자가 16개의 계수를 갖는 경우에 있어서, 룩업 테이블(70 및 72) 각각은 256개의 엔트리를 갖는다. 도 4a 및 도 4b의 예에서, 테이블(70 및 72)은 각각의 로우가 하나의 해프워드 값에 대응하는 곱을 포함하도록 조직된다. 이하에 설명된 바와 같이, 이 조직은 일반적인 프로세서에서의 병렬 실행을 용이하게 한다.
본 발명은 8비트 갈루아 필드 요소가 높은 해프워드와 낮은 해프워드로 나뉘어지고 두개의 룩업 테이블이 이용되는 실시예에 관련하여 설명되었다. 다른 실시예에서, 각각의 갈루아 필드 요소는 9 이상의 비트를 가질 수 있다. 또한, 각각의 갈루아 필드 요소는 3개 이상의 성분로 분리될 수 있고, 3개 이상의 룩업 테이블이 사용될 수 있다. 16 비트 갈루아 필드 요소를 생각해 보자. 특허 제6,360,348호에 개시된 접근법은 2M 바이트의 룩업 테이블을 필요로 한다. 각각의 16비트 갈루아 필드 요소가 두개의 성분로 분리되는 실시예에서, 각각이 8K 바이트(16 계수 × 256 해프 GF 요소 값 × 2 엔트리 당 바이트)인 두개의 룩업 테이블이 필요하다. 각각의 16비트 갈루아 필드 요소가 4개의 성분로 분리되는 실시예에서, 각각이 512 바이트(16 계수 × 16 쿼터 GF 요소 값 × 2 엔트리 당 바이트)인 4개의 룩업 테이블이 필요하다.
데이터 액세스 워드 크기가 9비트 이상의 폭인 임의의 DSP(digital signal processor)에 있어서(모든 현대의 DSP의 경우임), 테이블 액세스는 단조롭게 증가하는 제2 인덱스를 이용하여 행해져서, 테이블은 순차적인 액세스를 갖는 단방향 어레이로서 사용될 수 있고, 시프트 레지스터 셀들은 엄격한 순차로 사용된다는 사실 때문에, 본 실시예의 추가적 이점이 단순히 달성될 수 있다. 이 사실은, 우선 한 주기에서 복수의 엔트리가 판독되고, 둘째로 동시에 복수의 갈루아 필드 심볼들(예를 들면, 32비트 데이터 워드 경로를 갖는 DSP 상에 구현될 경우에는 한번에 4개의 심볼들, 64비트 데이터 워드 경로를 갖는 DSP에 대해서는 8개의 심볼들 등)에 대한 XOR 연산도 수행될 수 있기 때문에 실행의 속도를 매우 증가시킨다. 예를 들어, 특정 제한을 갖는 32비트 데이터 경로를 갖는 Blackfin DSP 상에서의 한 특정 구현은 1.5 주기/검사 바이트/데이터 바이트(통상의 방법보다 5 내지 6배 빠르고, 심지어는 내장형 갈루아 필드 곱셈기를 갖는 DSP보다 2배 더 빠름)에 가까운 속도로 동작한다.
본 발명의 일 실시예에 따라 데이터를 인코딩하기 위한 디지털 신호 프로세서의 블럭도는 도 5에 도시되어 있다. 본 발명의 일 실시예에 따라, w개의 갈루아 필드 요소의 워드 폭을 갖는 디지털 신호 프로세서에서 데이터를 인코딩하기 위한 프로세스가 도 6에 도시되어 있다. 도 5의 실시예에서, 디지털 신호 프로세서의 코어 프로세서(100)는 메시지 심볼 m을 수신하고, 코드워드의 메시지 심볼과 함께 전송될 검사 심볼 r을 공급한다. 코어 프로세서(100)는 높은 해프워드 룩업 테이블(110)에 액세스하고 테이블 값들 giH, gi+1H, gi+2H 및 gi+3H를 수신한다. 코어 프로세서(100)는 또한, 낮은 해프워드 룩업 테이블(112)에 액세스하고 테이블 값 giL, gi+1L, gi+2L 및 gi+3L을 수신한다. 도 5의 실시예에서, 메시지 심볼 m은 바이트이고 코어 프로세서(100)는 32비트의 워드 폭을 갖는다. 따라서, 코어 프로세서(100)는 도 5에 도시되고 이하에 설명되는 룩업 테이블(110) 및 룩업 테이블(112) 각각으로부터 주기 당 4개의 테이블 값을 처리할 수 있다. 서로 다른 워드 폭들을 갖는 코어 프로세서는 주기 당 더 많거나 더 적은 테이블 값들을 처리할 수 있다.
도 6을 다시 참조하면, 단계(150)에서 다음의 메시지 심볼 m이 수신되고 처리된다. 단계(152)에서, 갈루아 필드 요소 f는 수학식 28에 나타난 바와 같이, 메시지 심볼 및 최상위의 나머지 심볼로부터 계산된다. 단계(154)에서, 갈루아 필드 요소는 수학식 23 및 24에 나타난 바와 같이, 제1 및 제2 성분 H0 및 0L로 분리된다. 이 실시예에서, 갈루아 필드 요소는 높은 해프워드와 낮은 해프워드로 분리된다. 그러나, 다른 실시예에서, 갈루아 필드 요소는 3개 이상의 성분들로 분리될 수 있다.
단계(156)에서, 높은 해프워드 H0 및 인덱스 i는 룩업 테이블(도 5의 110)로부터 w개의 테이블 값들에 액세스하는 데 사용된다. 인덱스 i는 생성자 계수 gi의 인덱스이다. 코드워드는 16개의 검사 심볼을 갖고 코드 생성자 다항식은 16개의 계수를 갖는 예에서, 인덱스 i는 0 내지 15까지의 범위에 있다. 또한, 단계(156)에서, 낮은 해프워드 0L와 인덱스 i는 룩업 테이블(도 5의 112)로부터 w개의 테이블 값을 획득하는 데 사용된다. 상술된 바와 같이, 동시에 액세스된 테이블 값들의 개수는 갈루아 필드 요소의 단위로 표현된 코어 프로세서(100)의 워드 폭에 의존한다. 코어 프로세서(100)가 32비트 워드 폭을 갖고 메시지 심볼이 바이트인 일반적인 경우에 있어서, w=4인 테이블 값들은 룩업 테이블(110 및 112) 각각에서 동시에 액세스된다.
단계(160 및 162)에서, 나머지 심볼 ri는 단계(156)에서 액세스된 테이블 값들의 w개의 집합들 각각에 대해 계산된다. 특히, 중간 값 si는 단계(160)에서 수학식 30에 도시된 바와 같이 테이블 값들의 w개의 집합들 각각에 대해 계산된다. 테이블 값들의 집합은 룩업 테이블(110)로부터의 테이블 값, 및 룩업 테이블(112)로부터의 테이블 값을 포함하며, 이 두개의 테이블 값들은 동일한 생성자 계수 인덱스를 갖는다. 그리고 나서, 현재의 나머지 심볼 ri는 수학식 30에도 나타난 바와 같이, w개의 중간 값들 si 각각에 대해, 중간 값 si 및 이전의 나머지 심볼 ri-1에 대한 XOR 연산에 의해 계산된다. 따라서, 단계(162)에서 w개의 나머지 심볼들이 계산된다.
단계(170)에서, 2t개의 나머지 심볼들이 계산되었는지에 대한 결정이 이루어지고, 이 때, 2t는 코드 생성자 다항식 내의 계수들의 개수를 나타낸다. 2t개의 나머지 심볼들이 계산되지 않았으면, 단계(172)에서 인덱스 i는 w만큼 증가한다. 그 후, 프로세스는 단계(156)로 돌아와, 테이블(110) 내의 w개의 새로운 테이블 값들, 및 테이블(112) 내의 w개의 새로운 테이블 값들에 액세스한다. 단계(156, 160, 162, 170 및 172)를 포함하는 루프는 2t개의 나머지 심볼들이 계산될 때까지 반복된다. w=4이고 2t=16인 예에 있어서, 루프를 4번 반복하는 것이 필요하다.
2t개의 나머지 심볼들이 계산되었으면, 단계(180)에서, 코드워드의 끝에 도달되었는지에 관한 결정이 이루어진다. 일반적인 코드워드는 188개의 메시지 심볼들을 포함할 수 있다. 코드워드의 끝에 도달되지 않았으면, 프로세스는 단계(150)로 되돌아가, 다음의 메시지 심볼 m을 처리한다. 코드워드의 끝에 도달되었으면, 단계(182)에서 2t개의 검사 심볼이 출력된다. 따라서, 예를 들어, 16개의 검사 심볼은 코드워드의 188개의 메시지 심볼과 함께 전송되기 위해 출력될 수 있다.
ADSL 모뎀과 같은 몇몇 응용에서, RS 코드의 매개변수들은 "작동 중에" 설정될 수 있고, 하나의 ADSL 채널 내에서 서로 다른 베어러 채널(bearer channel)들에 대해 서로 다를 수 있다. 이 경우에, 본 발명에 기초한 두개의 인코딩 방법이 실현될 수 있다.
제1 방법에 따르면, 가장 가능성 높은 개수의 검사 바이트들에 대한 테이블 만이 생성되고, 더 낮은 에러 정정 능력을 갖는 코드가 사용되는 경우, 인코더는 다음과 같이 두개의 단계에서 동작한다.
우선, 더 높은 차수의 코드 생성자 다항식 G2t는 더 낮은 차수의 코드 생성자 다항식 G2s를 인수로서 포함하는 것이 관찰된다.
Figure 112006049416712-PCT00049
Figure 112006049416712-PCT00050
여기서,
Figure 112006049416712-PCT00051
이고, d=t-s는 코드의 에러 정정 능력들 간의 차이이다.
따라서, n차의 메시지 다항식은 두개의 부분, 즉, 더 높은 n-2d개의 항들과 더 낮은 2d개의 항들로 분할된다.
Figure 112006049416712-PCT00052
코드 생성자 다항식이 나뉘어져야 하는 시프트된 메시지 다항식은 다음과 같이 나타난다.
Figure 112006049416712-PCT00053
이제, 더 높은 2t차의 코드 생성자 다항식에 관련된 메시지의 처음 n-2d개의 바이트들에 대한 나머지는 다음과 같이 획득된다.
Figure 112006049416712-PCT00054
여기서 첫번째 항은 다음과 같이 표기될 수 있다.
Figure 112006049416712-PCT00055
이 때,
Figure 112006049416712-PCT00056
이다.
동일한 논리에 따라, 2t로 구성된 "긴" 나머지 R(x)는 두개의 부분, 즉, 더 높은 2d개의 항들 및 더 낮은 2s개의 항들로 분리된다.
Figure 112006049416712-PCT00057
마지막으로, 인코딩은 다음의 수학식에 따라 수행될 수 있다.
Figure 112006049416712-PCT00058
이것은 비교적 짧은 메시지(단 2d 바이트)를 인코딩하는 것
Figure 112006049416712-PCT00059
및, 이 연산의 결과와 "긴" 인코딩의 "짧아진" 결과를 더하는 것
Figure 112006049416712-PCT00060
과 동등하다.
결과로서, 총 일련의 인코딩은 다음과 같이 설명될 수 있다. 메시지 M2d(x)의 마지막 2d개의 바이트들을 획득된 나머지 r2d(x)의 처음의(가장 왼쪽의) 2d개의 바이트와 더하고(XOR됨), 이 2d개의 바이트들은 짧은 메시지로서 다루어지고, 통상의 방법을 이용하여 인코딩된다. 결과는 "긴" 나머지 R(x)의 남은 바이트들에 더해진다. 이것이 인코딩의 최종 결과이다.
이 방법은 2d개의 바이트들의 추가의 "재인코딩"에 기인한 오버헤드 D(t, d)를 갖는데, 이것은 인코딩된 바이트들의 개수, 및 결과 내의 바이트들의 개수에 비례한다.
Figure 112006049416712-PCT00061
여기서, K는 통상의 인코딩에 필요한 주기의 수, 보통, 10 내지 12이다. 이 오버헤드는 d=t/2 K*t2에 대한 최대값을 가지며, K=12, t=8인 768의 주기 레벨일 수 있는데, 이것은 인코딩의 주요 부분의 ~20%를 구성한다.
다른 옵션은 추가의 메모리를 필요로 할 수 있는 임의의 요구된 코드 매개변수에 대해 작동 중에 "올바른" 테이블을 생성하는 것이다. 그러나, 이 경우에서는, 넓은 데이터 경로를 갖는 DSP를 충분히 이용하기 위해 본 발명의 일 양태에 따라, 검사 바이트의 개수가 4의 정수배가 아닐 때, 테이블은 32*4k 크기로 생성되는데, 여기서 4k는 위에서부터 특정 개수의 검사 바이트에 가장 가까운 4의 정수배, 예를 들면, 14에 대해서는 16, 10에 대해서는 12 등이다. 남은 64바이트는 0으로 채워져서, 이들 값이 판독될 때, 그것들은 계산의 결과에 영향을 끼치지 않는다.
인코더에 사용된 동일한 테이블은 다음의 방식으로 신드롬(syndrome)을 계산하기 위해 디코더에서 사용될 수 있다. 체계적 형태의 수신된 코드워드는 우선 "재인코딩"된다. 인코더 메커니즘은 코드워드의 정보 바이트에 대해 실행되어, 실제로 수신된 검사 바이트들의 시퀀스의 "복사본"을 획득한다. 그 후, 이 재구성된 "복사본"은 실제로 수신된 검사 바이트를 가지고 논리 AND 연산자를 이용하여 비트마다 비교되어, 신드롬과 매우 관련된 다항식을 형성한다. 즉, GF의 원시 요소의 연속적인 곱에 대한 이 다항식의 값들은 정확히, 다음의 관계로 인한 신드롬의 성 분들이다.
Figure 112006049416712-PCT00062
코드 생성자 다항식의 정의에 의해 G(αk)=0이기 때문에,
Figure 112006049416712-PCT00063
이다.
따라서, n 바이트 길이의 원래의 코드워드보다 훨씬 더 짧은 2t 바이트들의 시퀀스에 대한 통상의 접근법을 이용하여 신드롬의 축적이 수행될 수 있다. 이것은 에러 위치지정자 다항식의 계수를 구하기 위해 berlekamp massey 또는 유클리드 알고리즘을 구현하는 데 필요한 연산들의 동일한 순서인 (2t-1)2개의 고려할 만한 GF 곱셈들을 포함한다. GF 곱셈들은 피연산자들 중 하나의 고정된 집합에 대해 수행되기 때문에, 이 계산의 속도는 실제로, 일반 GF 곱셈보다 30 내지 50% 높아서, (255, 239, 16) RS 코드의 경우에, 많아야 255*6=1350 주기가 필요하며, 이것은 30% 오버헤드이다.
지금까지 특징적 개념 및 다수의 예시적인 실시예를 설명하였지만, 본 기술분야에 숙련된 자들은 본 발명이 여러 방식으로 구현될 수 있으며, 변경 및 개선이 쉽게 일어날 것임을 인지할 것이다. 따라서, 주어진 예는 제한적인 것으로 의도되지 않으며, 예를 통해서만 제공된다. 본 발명은 오직, 다음의 청구범위 및 그 동 등물에 의해 요구되는 것으로서 제한된다.

Claims (24)

  1. 데이터를 인코딩하기 위한 방법으로서,
    (a) 코드 생성자 계수들을 곱한 제1 성분 값들의 제1 테이블, 및 상기 코드 생성자 계수들을 곱한 제2 성분 값들의 제2 테이블을 제공하는 단계,
    (b) 메시지 심볼 및 최상위의 나머지 심볼(high order remainder symbol)에 기초하여 갈루아 필드 요소(Galois field element)를 결정하는 단계,
    (c) 상기 갈루아 필드 요소를 제1 및 제2 성분으로 분리시키는 단계,
    (d) 상기 제1 성분 및 생성자 계수 인덱스를 이용하여 상기 제1 테이블 내의 하나 이상의 제1 테이블 값에 액세스하고, 상기 제2 성분 및 상기 생성자 계수 인덱스를 이용하여 상기 제2 테이블 내의 하나 이상의 제2 테이블 값에 액세스하는 단계,
    (e) 동일한 생성자 계수 인덱스들을 갖는 제1 및 제2 테이블 값과, 이전의 나머지 심볼에 기초하여 현재의 나머지 심볼을 결정하는 단계,
    (f) 상기 코드 생성자의 각각의 생성자 계수에 대해 상기 단계 (e)를 수행하여 나머지 심볼들의 그룹을 제공하는 단계, 및
    (g) 코드워드(codeword) 내의 각각의 메시지 심볼에 대해 상기 단계 (b) 내지 (f)를 수행하여, 상기 코드워드의 메시지 심볼들과 함께 전송될 검사 심볼들을 구성하는 최종 나머지 심볼들의 그룹을 제공하는 단계
    를 포함하는 데이터 인코딩 방법.
  2. 제1항에 있어서,
    상기 단계 (b)는 상기 메시지 심볼 및 상기 최상위의 나머지 심볼에 대한 XOR(exclusive OR) 연산을 포함하는 방법.
  3. 제2항에 있어서,
    상기 단계 (e)는 중간 값을 제공하는 상기 제1 및 제2 테이블 값에 대한 XOR 연산, 및 상기 현재의 나머지 심볼을 제공하는 상기 중간 값 및 상기 이전의 나머지 심볼에 대한 XOR 연산을 포함하는 방법.
  4. 제1항에 있어서,
    상기 제1 및 제2 성분은 각각 상기 갈루아 필드 요소의 높은 해프워드(halfword)와 낮은 해프워드를 포함하는 방법.
  5. 제1항에 있어서,
    상기 코드워드의 상기 메시지 심볼은 메시지 바이트들을 포함하는 방법.
  6. 제5항에 있어서,
    상기 단계 (g)는 상기 코드워드 내의 8개까지의 에러를 정정하기 위한 16개의 검사 심볼을 생성하는 방법.
  7. 제1항에 있어서,
    상기 단계 (d)는 제1 및 제2 테이블 값들의 둘 이상의 집합에 병렬로 액세스하는 단계를 포함하고, 상기 단계 (e)는 둘 이상의 현재의 나머지 심볼들을 병렬로 결정하는 단계를 포함하는 방법.
  8. 제1항에 있어서,
    상기 갈루아 필드 요소를 상기 제1 및 제2 성분들로 분리시키는 단계는 상기 갈루아 필드 요소를 제1 및 제2 마스크와 AND연산하는 단계를 포함하는 방법.
  9. 제1항에 있어서,
    상기 단계 (d)는 제1 및 제2 테이블 값들의 w개의 집합에 병렬로 액세스하는 단계를 포함하고, 상기 w는 상기 갈루아 필드 요소의 단위로 인코딩을 수행하는 프로세서의 워드 폭을 나타내고, 상기 단계 (e)는 w개의 현재의 나머지 심볼을 병렬로 결정하는 단계를 포함하는 방법.
  10. 제1항에 있어서,
    상기 단계 (a)는 연산 동안, 규정된 코드 매개변수에 대한 상기 제1 및 제2 테이블 내의 상기 테이블 값을 생성하는 단계를 포함하는 방법.
  11. 제1항에 있어서,
    상기 단계 (g)는 상기 생성자 계수의 개수와 동일한 개수의 검사 심볼을 제공하는 단계를 포함하는 방법.
  12. 제1항에 있어서,
    상기 단계 (g)는 상기 생성자 계수의 개수보다 적은 개수의 검사 심볼을 제공하는 단계를 포함하는 방법.
  13. 데이터를 인코딩하기 위한 장치로서,
    코드 생성자 계수들을 곱한 제1 성분 값들을 포함하는 제1 룩업 테이블,
    상기 코드 생성자 계수들을 곱한 제2 성분 값들을 포함하는 제2 룩업 테이블, 및
    메시지 심볼 및 최상위의 나머지 심볼에 기초하여 갈루아 필드 요소를 결정하기 위한 수단, 상기 갈루아 필드 요소를 제1 및 제2 성분으로 분리시키기 위한 수단, 상기 제1 성분 및 생성자 계수 인덱스를 이용하여 상기 제1 룩업 테이블 내의 하나 이상의 제1 테이블 값들에 액세스하기 위한 수단, 상기 제2 성분 및 상기 생성자 계수 인덱스를 이용하여 상기 제2 테이블 내의 하나 이상의 제2 테이블 값들에 액세스하기 위한 수단, 및 상기 코드 생성자의 각각의 생성자 계수에 대해, 동일한 생성자 계수 인덱스들을 갖는 제1 및 제2 테이블 값과, 이전의 나머지 심볼에 기초하여 현재의 나머지 심볼을 결정하여, 나머지 심볼들의 그룹을 제공하기 위 한 수단을 포함하는 프로세서
    를 포함하고,
    코드워드의 각각의 메시지 심볼은 상기 코드워드의 상기 메시지 심볼들과 함께 전달될 검사 심볼들을 구성하는 최종 나머지 심볼들의 그룹을 제공하도록 처리되는 데이터 인코딩 장치.
  14. 제13항에 있어서,
    상기 갈루아 필드 요소를 결정하기 위한 수단은 상기 메시지 심볼 및 상기 최상위의 나머지 심볼에 대한 XOR 연산을 수행하기 위한 수단을 포함하는 장치.
  15. 제13항에 있어서,
    상기 현재의 나머지 심볼을 결정하기 위한 수단은 상기 제1 및 제2 테이블 값들에 대한 XOR 연산을 수행하여 중간 값을 제공하기 위한 수단, 및 상기 중간 값 및 상기 이전의 나머지 심볼에 대한 XOR 연산을 수행하여 상기 현재의 나머지 심볼을 제공하기 위한 수단을 포함하는 장치.
  16. 제13항에 있어서,
    상기 제1 및 제2 성분은 각각 상기 갈루아 필드 요소의 높은 해프워드와 낮은 해프워드를 포함하는 장치.
  17. 제13항에 있어서,
    상기 코드워드의 상기 메시지 심볼은 메시지 바이트들을 포함하는 장치.
  18. 제13항에 있어서,
    상기 프로세서는 상기 코드워드 내의 8개까지의 에러를 정정하기 위한 16개의 검사 심볼을 생성하도록 구성된 장치.
  19. 제13항에 있어서,
    상기 제1 및 제2 테이블 값들에 액세스하기 위한 수단은 제1 및 제2 테이블 값들의 둘 이상의 집합에 병렬로 액세스하기 위한 수단을 포함하고, 상기 현재의 나머지 심볼을 결정하기 위한 수단은 둘 이상의 현재의 나머지 심볼을 병렬로 결정하기 위한 수단을 포함하는 장치.
  20. 제13항에 있어서,
    상기 갈루아 필드 요소를 제1 및 제2 성분으로 분리시키기 위한 수단은 상기 갈루아 필드 요소를 제1 및 제2 마스크와 AND연산하기 위한 수단을 포함하는 장치.
  21. 제13항에 있어서,
    상기 제1 및 제2 테이블 값들에 액세스하기 위한 수단은 제1 및 제2 테이블 값들의 w개의 집합에 병렬로 액세스하기 위한 수단을 포함하고, 상기 w는 상기 갈 루아 필드 요소의 단위로 상기 프로세서의 워드 폭을 나타내고, 상기 현재의 나머지 심볼을 결정하기 위한 수단은 w개의 현재의 나머지 심볼들을 병렬로 결정하기 위한 수단을 포함하는 장치.
  22. 제13항에 있어서,
    상기 프로세서는 연산 동안, 규정된 코드 매개변수에 대한 상기 제1 및 제2 룩업 테이블 내의 상기 테이블 값을 생성하기 위한 수단을 더 포함하는 장치.
  23. 제13항에 있어서,
    상기 코드워드의 각각의 메시지 심볼은 상기 생성자 계수의 개수와 동일한 개수의 검사 심볼을 제공하도록 처리되는 장치.
  24. 제13항에 있어서,
    상기 코드워드의 각각의 메시지 심볼은 상기 생성자 계수의 개수보다 더 적은 개수의 검사 심볼을 제공하도록 처리되는 장치.
KR1020067013905A 2003-12-12 2004-11-16 데이터를 인코딩하기 위한 방법 및 장치 KR20060125837A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/735,423 US7162679B2 (en) 2003-12-12 2003-12-12 Methods and apparatus for coding and decoding data using Reed-Solomon codes
US10/735,423 2003-12-12

Publications (1)

Publication Number Publication Date
KR20060125837A true KR20060125837A (ko) 2006-12-06

Family

ID=34710449

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067013905A KR20060125837A (ko) 2003-12-12 2004-11-16 데이터를 인코딩하기 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US7162679B2 (ko)
JP (1) JP4777258B2 (ko)
KR (1) KR20060125837A (ko)
CN (1) CN1894857A (ko)
WO (1) WO2005062472A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110010771A (ko) * 2008-05-12 2011-02-07 아스펜 액퀴지션 코포레이션 프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526518B2 (en) * 2004-10-13 2009-04-28 Cisco Technology, Inc. Galois field multiplication system and method
KR100933139B1 (ko) 2006-02-22 2009-12-21 삼성전자주식회사 통신 시스템에서 신호 수신 장치 및 방법
US7814398B2 (en) * 2006-06-09 2010-10-12 Seagate Technology Llc Communication channel with Reed-Solomon encoding and single parity check
KR101108861B1 (ko) * 2006-10-19 2012-06-13 콸콤 인코포레이티드 무선 통신 시스템에서의 비컨 코딩
JP4749383B2 (ja) * 2007-05-17 2011-08-17 三菱電機株式会社 符号化装置、暗号化装置及びプログラム
TWI334277B (en) * 2007-06-06 2010-12-01 Lite On Technology Corp Method for calculating syndrome efficiently in reed-solomon decoding and machine readable storage medium storing instructions for performing the method
CN101814922B (zh) 2009-02-23 2013-06-19 国际商业机器公司 基于bch码的多位错纠错方法和装置以及存储系统
US8347192B1 (en) * 2010-03-08 2013-01-01 Altera Corporation Parallel finite field vector operators
US8682950B2 (en) * 2010-05-28 2014-03-25 Microsoft Corporation Computer-implemented symbolic polynomial factorization
CN102104446B (zh) * 2011-02-28 2013-01-30 华为技术有限公司 编码包转发方法、编码包接收处理方法和转发节点
JP2014010415A (ja) * 2012-07-03 2014-01-20 Nec Soft Ltd 分散情報管理システム、分散情報管理装置、分散情報保持装置、分散情報管理方法およびプログラム
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
CN103023512B (zh) * 2013-01-18 2016-01-20 苏州威士达信息科技有限公司 Atsc系统rs编码中常系数矩阵的生成装置和方法
CN103095418B (zh) * 2013-01-18 2016-01-20 北京广讯科技有限责任公司 Cmmb系统rs编码中常系数矩阵的生成装置和方法
US9362953B2 (en) * 2013-08-02 2016-06-07 Infineon Technologies Ag Efficient error correction of multi-bit errors
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
US10171109B2 (en) * 2017-01-23 2019-01-01 Hefei High-Dimensional Data Technology Co., Ltd. Fast encoding method and device for Reed-Solomon codes with a small number of redundancies
KR20210080807A (ko) 2019-12-23 2021-07-01 삼성전자주식회사 메모리 컨트롤러 및 메모리 시스템
US11184029B1 (en) * 2020-05-28 2021-11-23 Samsung Electronics Co., Ltd. Low power ECC for eUFS
US11438013B2 (en) * 2020-07-15 2022-09-06 Samsung Electronics Co., Ltd. Low-power error correction code computation in GF (2R)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4142174A (en) 1977-08-15 1979-02-27 International Business Machines Corporation High speed decoding of Reed-Solomon codes
US4567594A (en) 1983-06-07 1986-01-28 Burroughs Corporation Reed-Solomon error detecting and correcting system employing pipelined processors
GB2155669A (en) 1984-03-06 1985-09-25 Sony Corp Galois field multipliers
JPS61203728A (ja) * 1985-03-07 1986-09-09 Fujitsu Ltd 拡大体における求積回路
US4763332A (en) 1987-03-02 1988-08-09 Data Systems Technology Corp. Shared circuitry for the encoding and syndrome generation functions of a Reed-Solomon code
US4847801A (en) 1987-10-26 1989-07-11 Cyclotomics, Inc. Compact galois field multiplier
JPH0345020A (ja) * 1989-07-13 1991-02-26 Canon Inc 巡回符号処理回路
US5428629A (en) * 1990-11-01 1995-06-27 Motorola, Inc. Error check code recomputation method time independent of message length
US5948117A (en) 1997-01-23 1999-09-07 Quantum Corporation Modified Reed-Solomon error correction system using (W+i+1)-bit representations of symbols of GF(2w+i)
US6173429B1 (en) 1997-03-14 2001-01-09 Harris Corporation Apparatus for providing error correction data in a digital data transfer system
US5942005A (en) 1997-04-08 1999-08-24 International Business Machines Corporation Method and means for computationally efficient error and erasure correction in linear cyclic codes
JPH113573A (ja) 1997-04-15 1999-01-06 Mitsubishi Electric Corp 拡大リードソロモン符号の誤り訂正復号方法と誤り訂正復号装置、1次伸長拡大リードソロモン符号の誤り訂正方法と誤り訂正装置、および2次伸長拡大リードソロモン符号の誤り訂正方法と誤り訂正装置
US6263470B1 (en) 1998-02-03 2001-07-17 Texas Instruments Incorporated Efficient look-up table methods for Reed-Solomon decoding
US6598201B1 (en) * 1999-03-15 2003-07-22 Texas Instruments Incorporated Error coding structure and method
US6360348B1 (en) * 1999-08-27 2002-03-19 Motorola, Inc. Method and apparatus for coding and decoding data
US6757862B1 (en) * 2000-08-21 2004-06-29 Handspring, Inc. Method and apparatus for digital data error correction coding

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110010771A (ko) * 2008-05-12 2011-02-07 아스펜 액퀴지션 코포레이션 프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현

Also Published As

Publication number Publication date
WO2005062472A1 (en) 2005-07-07
CN1894857A (zh) 2007-01-10
JP2007514371A (ja) 2007-05-31
US20050149832A1 (en) 2005-07-07
JP4777258B2 (ja) 2011-09-21
US7162679B2 (en) 2007-01-09

Similar Documents

Publication Publication Date Title
KR20060125837A (ko) 데이터를 인코딩하기 위한 방법 및 장치
US6360348B1 (en) Method and apparatus for coding and decoding data
KR930008683B1 (ko) 리드-솔로몬 에러 보정 코드 엔코더
EP0114938B1 (en) On-the-fly multibyte error correction
US6928602B2 (en) Encoding method and encoder
US4873688A (en) High-speed real-time Reed-Solomon decoder
Be'ery et al. Optimal soft decision block decoders based on fast Hadamard transform
KR920000828B1 (ko) 가로아체(Galois field)연산장치
US5440570A (en) Real-time binary BCH decoder
US7502989B2 (en) Even-load software Reed-Solomon decoder
WO2000057561A1 (en) Pipelined high speed reed-solomon error/erasure decoder
JPH0452556B2 (ko)
JP3834122B2 (ja) 誤り位置検出多項式計算装置
CN1636324A (zh) 纠错解码器的钱搜索单元
US5107506A (en) Error trapping decoding method and apparatus
US6735737B2 (en) Error correction structures and methods
US4298981A (en) Decoding shortened cyclic block codes
Babaie et al. Double bits error correction using CRC method
JP4045872B2 (ja) 符号化方法および符号化装置
US8527851B2 (en) System and method for using the universal multipole for the implementation of a configurable binary Bose-Chaudhuri-Hocquenghem (BCH) encoder with variable number of errors
Nguyen Error-detection codes: algorithms and fast implementation
JP4368020B2 (ja) データシンボルの操作システム、データシンボルをエンコードするためのエラー訂正システムおよびエラー訂正方法
US7287207B2 (en) Method and apparatus for computing parity characters for a codeword of a cyclic code
JPH09185518A (ja) 原始元αのべき乗生成方式及びその装置
JPH06104773A (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