KR20020047134A - 데이터를 코딩 및 디코딩하는 방법 및 장치 - Google Patents
데이터를 코딩 및 디코딩하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20020047134A KR20020047134A KR1020027002559A KR20027002559A KR20020047134A KR 20020047134 A KR20020047134 A KR 20020047134A KR 1020027002559 A KR1020027002559 A KR 1020027002559A KR 20027002559 A KR20027002559 A KR 20027002559A KR 20020047134 A KR20020047134 A KR 20020047134A
- Authority
- KR
- South Korea
- Prior art keywords
- microprocessor
- look
- polynomial
- value
- tables
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/159—Remainder calculation, e.g. for encoding and syndrome calculation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6569—Implementation on processors, e.g. DSPs, or software implementations
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
인코딩을 하는 동안, 마이크로프로세서(201)는 표준 리드-솔로몬 인코딩 기법에 따라 Ym을 계산한다. 그런 후, 마이크로프로세서(201)는 룩업 테이블(203)에 대한 색인으로서 Ym을 이용하고, 룩업 테이블(203)로부터 G0Ym, G1Ym,…, Gk-1Ym을 반환 받는다. 신드롬을 계산하는 동안, 패리티 심볼들의 제 2 세트가 인코더와 유사한 방법을 사용하여 정보 심볼들로부터 생성된다. 특히, 인코더가 G0Ym, G1Ym,…, Gk-1Ym에 대한 값들을 결정하는 것과 유사한 방법으로 제 1 룩업 테이블(503)로부터 G0Ym, G1Ym,…, Gk-1Ym에 대한 값들이 획득된다. 제 2 룩업 테이블(505)은 오류 위치결정 다항식(error locator polynomial)의 루트들을 결정하도록 설정된다. 제 2 룩업 테이블은 여러 개의 테이블들로 구성되며 각 테이블은 (Q-1) 개의 원소들을 포함한다(여기서, Q는 GF(Q) 필드의 크기이다). (Q-1)과 m 사이의 최대공약수가 (GCD(Q-1,m))=1 인 경우, m 번째 룩업 테이블은 위치 i에 갈로아 필드 원소(Galois Field element) α-mi를 저장한다. 만약 (GCD(Q-1,m))≠1 인 경우, m 번째 룩업 테이블은 GF 원소 α-(mi+j)(여기서, j=0,1,…,GCD(Q-1,m)-1)를 저장하는 (GCD(Q-1,m)) 개의 서브-테이블들로 사실상 구성된다.
Description
리드-솔로몬 코딩은 본 기술 분야에서 공지되어 있다. Reed I.S. 와 Solomon G.의 "Polynomial codes over certain finite fields"(Journal of Society of Industrial Application Mathematics8, 300-304 (1960))에 처음 기재되었듯이, 리드-솔로몬 코드들은 수신된 데이터 내의 오류들을 제거하기 위해 데이터를 전송하는 동안 이용될 수 있다. 인코더들은 갈로아 필드(Galois field)들의 수학적 계산들에 의존하는데, 이는 미국 특허 제 4,142,174 및 4,567,594 호에 개시되어 있으며, 그 내용은 본원에서 참조된다. 간단히 말해서, 리드-솔로몬 코드들은 GF(Q)(여기서, Q=2b, 2의 양의 정수 승)로 표현된 숫자들의 갈로아 필드로부터의 코드 심볼들로 규정된다. 갈로아 필드는 유한한 수의 원소들을 갖는다. GF(Q)는 Q 개의 원소들을 가지며, 이는 특정 원소(α)에 대한 0부터 Q-1까지의 연속적인 승수들(α0, α1,…, αQ-1)로 표현될 수 있다.
리드-솔로몬 인코더들 및 디코더들을 이용하는 많은 다른 방법들이 본 기술 분야에서 공지되어 있다. 오류 정정에 있어서 리드-솔로몬 코드들을 이용하는 한 방법은 전송된 데이터에 한 세트의 패리티 심볼(parity symbol)들을 첨부하는 것이다. 여기서 "심볼"란 말은 GF(Q) 필드의 원소를 형성하는 b 개의 비트들을 나타내는데 사용된다. 패리티 심볼들은 전송된 데이터 내의 오류들을 검출하여 정정하는데 사용된다. 보다 자세하게는, 인코더는 GF(Q)에 대한 메시지 다항식(message polynomial)을 형성하는 심볼들의 블록들로서 메시지 비트들을 취급하고 메시지 다항식(X)을 다항식(G)을 생성하는 코드로 나눔으로써 패리티 심볼들을 유도한다. 패리티 심볼들은 잔여 다항식(C)의 계수들로서 간주된다. 패리티 심볼들은 코드워드 다항식의 계수들을 형성하기 위해 메시지 심볼들에 첨부된다. 다항식을 생성하는 코드는 코드워드에 원하는 특성을 전달하도록 선택되며, 그 결과 코드워드는 특정한 종류의 오류-정정 그룹 코드들에 속할 것이다. 전송을 하는 동안, 수신된 메시지 다항식(R) 내의 오류들을 정정하기 위해 수신기에 의해 이용되는 꼬리 비트(tail bit)들로서 상기 패리티 심볼들을 메시지 데이터에 첨부함으로써 코드워드가 전달된다.
도 1은 시프트-레지스터 다항식 분할 회로로서 구현된 종래의 리드-솔로몬 인코더를 도시한다. 도시된 바와 같이, 시프트 레지스터는 지연 소자들(delay elements)(D) 내에서 0(zero)으로 초기화된다. 각 반복을 하는 동안, m 번째 데이터 심볼 Xm은 심볼 Ym을 형성하기 위해 최우측 지연 소자의 내용으로 곱해진다. 각지연 소자의 내용은 그런 후 자신의 좌측 지연 소자의 내용에 심볼 Ym과 Gm의 곱을 더함으로써 갱신된다(여기서, Gm은 다항식을 생성하는 코드의 계수들이다. 즉, G(z) = G0+ G1z + …+ GK-1zK-1+ zK). (예외는 최좌측 지연 소자인데, 상기 소자는 곱 G0Ym으로 갱신된다.)
패리티 심볼들은 메시지 블록의 끝에 이를 때까지 시프트 레지스터를 갱신하기를 계속함으로써 생성된다. 메시지 블록의 마지막 심볼에 대한 반복을 완료한 직후, 시프트 레지스터의 내용은 패리티 심볼들이 된다. 여기서, 최우측 지연 소자는 전송기에 의해 메시지 데이터에 첨부될 제 1 패리티 심볼를 포함한다.
분할 처리를 갱신하는 것은 통상 전용의 하드웨어(예컨대, 곱셈기(101), 지연 회로(102) 및 가산기(103))에 의해 수행되지만, "소프트" 모뎀들의 이점으로, 마이크로프로세서/소프트웨어 결합을 통한 상기 처리가 점점 더 증가하여 이루어졌다.
소프트 모뎀들이 비록 리드-솔로몬 인코딩/디코딩을 수행할 능력을 갖지만, 종래의 구현은 많은 처리 능력(processing power)을 요구한다는 문제가 존재한다. 도 1에 도시된 인코더에서, 각 메시지 심볼에 대하여, K 번의 곱셈들 및 덧셈들이 요구된다. 비록 갈로아 필드 덧셈이 마이크로프로세서 명령 세트(instruction set)에서 통상 지원되는 논리적 XOR 연산이지만, 갈로아 필드 곱셈은 거의 지원되지 않으며 복수의 명령 사이클이 완료될 것을 요한다. 고속 모뎀들(예컨대, ADSL모뎀 또는 케이블 모뎀)의 경우, 리드-솔로몬 인코더는 초 당 백만 메시지 정도로 처리하는 것이 필요하다. 요구되는 총 처리 능력 또는 MIPS는 통상의 마이크로프로세서의 총 처리 능력의 상당한 퍼센트를 차지하거나 초과할 것이다. 그 결과, 전체 모뎀 기능은 마이크로프로세서를 통해 성취하기가 어려울 수도 있다. 마이크로프로세서가 모뎀 기능들을 성취할 수 있더라도, 호스트 처리 또는 소프트웨어 모뎀들을 위해, 모뎀에 의해 사용된 처리 능력은 다른 어플리케이션들에 이용될 수 없을 것이다. 그러므로, 소프트 모뎀들에서 구현될 수 있으면서 종래의 소프트 모뎀들에 의해 요구되는 MIPS를 사용하지 않는 인코딩/디코딩 방법 및 장치가 요구된다.
본 발명은 일반적으로 코딩 및 인코딩에 관한 것이며, 특히, 리드-솔로몬(Reed-Solomon) 코딩 및 디코딩을 위한 방법 및 장치에 관한 것이다.
도 1은 종래의 리드-솔로몬 인코더의 블록도이다.
도 2는 본 발명의 양호한 실시예에 따른 리드-솔로몬 인코더의 블록도이다.
도 3은 본 발명의 양호한 실시예에 따른 도 2의 룩업 테이블을 나타낸다.
도 4는 본 발명의 양호한 실시예에 따른 도 2의 리드-솔로몬 인코더의 동작을 보여주는 순서도이다.
도 5는 본 발명의 양호한 실시예에 따른 리드-솔로몬 디코딩을 위해 필요한 단계들을 보여주는 순서도이다.
도 6은 본 발명의 양호한 실시예에 따른 리드-솔로몬 디코더의 블록도이다.
도 7은 본 발명의 양호한 실시예에 따른 GF(Q)(이때, GCD(Q-1,m)=1)에 대한 Chien 검색 룩업 테이블을 도시한다.
도 8은 본 발명의 양호한 실시예에 따른 GF(Q)(이때, GCD(Q-1,m)≠1)에 대한 Chien 검색 룩업 테이블을 도시한다.
도 9는 본 발명의 양호한 실시예에 따른 룩업 테이블 기반의 Chien 검색의 단계들을 도시하는 순서도이다.
위에서 언급된 필요성에 역점을 두어, 데이터를 코딩/인코딩하기 위한 방법 및 장치가 여기서 제공된다. 인코딩을 하는 동안, 데이터 심볼 Xm은 마이크로프로세서로 들어간다. 마이크로프로세서는 표준 리드-솔로몬 인코딩 기법들에 따라 Ym를 계산한다. 자세히 말하면, Ym은 메시지 심볼 Xm과 시프트 레지스터의 최우측 지연 소자의 내용을 더함으로써 계산된다. Ym은 GF(Q)의 원소로서 단지 상이한 값들로만 Q를 취할 수 있기 때문에, 곱 G0Ym, G1Ym, …, GK-1Ym들은 미리 계산되어 룩업 테이블에 저장될 수 있다. 그런 후 마이크로프로세서는 룩업 테이블에 대한 색인으로서 Ym을 이용하여 상기 룩업 테이블로부터 곱 G0Ym, G1Ym, …, GK-1Ym들을 반환받는다. 이들 곱들은 시프트 레지스터를 갱신하는데 사용된다.
디코딩 동작을 하는 동안에는 여러 룩업 테이블들이 사용된다. 제 1 룩업 테이블은 신드롬(syndrome) 계산의 복잡성을 감소시키는데 사용되며, 제 2 룩업 테이블은 오류 위치결정 다항식(error locator polynomial)의 루트들을 결정하기 위한 복잡성, 특히, Chien 검색의 복잡성을 감소시키는데 사용된다. 신드롬을 계산하는 동안, G0Ym, …, GK-1Ym에 대한 값들은 인코더가 G0Ym, G1Ym, …, GK-1Ym에 대한 값들을 결정하는 것과 유사한 방법으로 제 1 룩업 테이블로부터 얻어진다. 제 2 룩업 테이블은 한 그룹의 L 개의 룩업 테이블들로 구성된다(여기서, L은 오류 위치결정 다항식의 차수이다). 이들 테이블들은 각 테이블이 (Q-1) 개의 원소들을 포함하도록 설정된다(여기서, Q는 GF(Q) 필드의 크기이다). m 번째 룩업 테이블은 (Q-1)과 m 사이의 최대공약수 (GCD(Q-1,m)) 가 1 일 때 갈로아 필드 원소 α-mi를 위치 i에 저장한다. (GCD(Q-1,m))≠1 이면, m 번째 룩업 테이블은 j 번째 서브-테이블의 위치 i에 GF 원소 α-(mi+j)를 저장하는 J=(GCD(Q-1),m) 개의 서브-테이블들로 사실상 구성된다(여기서, j=0,1,…,J-1). 마이크로프로세서는 오류 위치결정 다항식의 대응하는 계수를 기초로 각 룩업 테이블에 대한 시작 번지를 초기화하고, 여러 번 반복하여 Chien 검색을 완료한다. 각각의 반복에서, 마이크로프로세서는 개별적인 시작 번지로부터 동일한 오프셋 (d)의 위치들에 있는 L 개의 테이블들 모두의 내용을 더하고 오프셋 (d)에 대응하는 원소가 루트인지를 결정하기 위해 상기 합을 1과 비교한다.
종래의 기법들이 룩업 테이블로부터 값을 얻는 것 보다 더 복잡한 연산들인 곱셈들을 요구하기 때문에, 마이크로프로세서에 의해 요구된 총 처리 능력 또는 MIPS는 감소된다. 게다가, 본 발명에 따라 설명된 룩업 테이블들은 마이크로프로세서가 단일 명령(instruction)으로 복수의 연산들을 병렬 처리하기 위해 통상 b의 몇 배인 자신의 레지스터 폭을 이용하는 것을 가능하게 함으로써 마이크로프로세서에 의해 요구되는 MIPS를 추가적으로 줄일 수 있다. 그 결과, 다른 어플리케이션들을 처리할 수 있는 마이크로프로세서를 통해 전제적인 모뎀 기능이 성취될 수 있다.
본 발명은 데이터를 인코딩/디코딩하는 방법을 포함한다. 상기 방법은 데이터 심볼(data symbol)(Xm)를 수신하는 단계, 표준 인코딩/디코딩 기법의 일부로서 제 1 값을 계산하는 단계, 및 룩업 테이블에 대한 색인으로서 상기 제 1 값을 이용하는 단계를 포함한다. 상기 제 1 값과 다른 복수의 값들과의 복수의 곱들이 룩업 테이블로부터 수신되며, 상기 복수의 곱들은 데이터를 인코딩/디코딩하는데 사용된다.
본 발명은 데이터를 디코딩하는 방법을 추가적으로 포함한다. 상기 방법은 전송된 데이터에 오류가 존재하는지를 결정하기 위해 신드롬 계산을 수행을 수행하는 단계, 신드롬 계산을 기초로 오류 위치결정 다항식을 계산하는 단계, 및 복수의 룩업 테이블들에 접근하여 GF(Q) 필드의 Q 개의 원소들 중 각각의 한 원소에 대한 다항식 값을 구함으로써 상기 오류 위치결정 다항식으로부터 오류 위치들을 결정하기 위한 Chien 검색을 수행하는 단계를 포함한다.
마침내, 본 발명은 표준 인코딩/디코딩 기법의 일부로서 제 1 값을 출력하는 마이크로프로세서, 및 입력으로서 상기 제 1 값을 가지며 상기 제 1 값과 복수의 다른 값들과의 복수의 곱들을 출력하는 제 1 룩업 테이블을 포함하는 인코더/디코더를 포함한다.
이제 도면을 보면(여기서 동일한 번호들은 동일한 구성요소들을 나타낸다), 도 2는 본 발명의 양호한 실시예에 따른 리드-솔로몬 인코더(200)의 블록도이다. 인코더(200)는 마이크로프로세서(201) 및 룩업 테이블(203)을 포함한다. 본 발명의 양호한 실시예에서, 마이크로프로세서(201)는 양호하게는 모토로라가 출시한 Altivec 기술의 PowerPC 프로세서(128-bit 레지스터), 인텔이 출시한 펜티엄 프로세서를 포함한 MMX 프로세서(64-bit 레지스터), 및 AMD가 출시한 K6 프로세서와 같이 넓은 레지스터 폭을 가진 마이크로프로세서이다. 이후의 설명에서, 프로세서의 레지스터는 전체 시프트 레지스터를 보유할 정도로 충분히 넓다고 가정한다. 또한, 룩업 테이블(203)이 마이크로프로세서(201)와 분리되어 존재하는 것으로 도시되어 있지만, 본 발명의 양호한 실시예에서, 룩업 테이블(203)은 사실상 내부 또는 외부 메모리의 일부로서 마이크로프로세서(201) 내에 통합되어 있다. 룩업 테이블(203)은 미리 계산된 곱 G0Y, G1Y, …, GK-1Y 들을 저장한다. 여기서, K는 다항식을 생성하는 코드의 차수(order)이며 패리티 심볼(parity symbol)들의 수와 같고, Y는 GF(Q) 필드의 Q 개의 원소들 중 각각의 한 원소이다. 그러므로 테이블(203)의 크기는 K 개의 패리티 심볼들을 가진 GF(Q)에 관한 코드에 대해 Q*K 이다. Q=256 이고 K=16 인 전형적인 예의 경우, 이는 4KB의 메모리가 된다.
본 발명의 양호한 실시예에 따른 인코더(200)의 동작은 다음과 같이 일어난다: 데이터 심볼(Xm)가 마이크로프로세서(201)에 의해 수신된다. 마이크로프로세서(201)는 표준 인코딩 기법들의 일부로서 제 1 값을 계산한다. 구체적으로, 메시지 심볼(Xm)를 최우측 지연 소자의 내용인 변수와 더함으로써 표준 리드-솔로몬 인코딩 기법들에 의해 Ym이 계산된다. 마이크로프로세서(201)는 그런 후 룩업 테이블(203)에 대한 색인으로서 상기 제 1 값(Ym)을 이용하고, 다른 값들과 Ym과의 복수의 곱들을 반환 받는다. 구체적으로, G0Ym, G1Ym, …, GK-1Ym가 룩업 테이블(203)로부터 마이크로프로세서(201)로 반환된다. 그 다음, 마이크로프로세서는 데이터 심볼(Xm)에 대한 인코딩 처리를 완료하기 위해 이들 반환된 값들로 시프트 레지스터의 지연 소자들을 병렬로 갱신한다.
도 3은 본 발명의 양호한 실시예에 따른 도 2의 룩업 테이블을 나타낸다. 명백하듯이, 모든 GF(Q) 원소에 대해, G0Y, G1Y, …, GK-1Y 에 대한 값들이 존재한다(여기서, Y=0,1,2,…,Q-1). Y를 가지고 테이블(203)에 접근한 직후 이들 값들이 마이크로프로세서(201)로 출력된다. 본 발명의 양호한 실시예에서, 테이블(203)은 GmY의 값들을 미리 계산하여 그 값들을 테이블(203)에 추가(populating)함으로써 구현된다. 구체적으로, 메모리는 i 번째 워드가 K 개의 곱 i*G0, i*G1,…,i*GK-1들을 가지는 Q 개의 연속적인 워드들로 구성된다. 상기 워드들은 b=log2(Q) bit 폭의 K 개의 필드들로 분할되며 상기 순서로 상기 K 개의 곱들 중 하나를 보유하기 위해 하나의 필드를 사용하고 있다. 테이블은 특정 코드에 대해 일정하기 때문에, ROM(read only memory)에 저장될 수 있다. 모뎀이 여러 동작 모드들을 가질 수도 있으며 또한 각 모드가 상이한 코드를 사용할 수도 있는 몇몇 경우에 대해, 모뎀의동작 모드를 결정한 직후 판독/기록 타입의 메모리로 테이블을 동적으로 생성하는 것이 또한 바람직할 수도 있다.
본 발명의 양호한 실시예에 있어서, 단지 단일한 테이블 룩업만이 K 개의 곱셈 G0Ym, G1Ym, …, GK-1Ym들의 결과를 얻는데 필요로 된다. 그 즉각적인 이점은 메시지 심볼 당 K 개의 곱셈들을 절약한다는 것이다. 갈로아 필드(Galois field) 곱셈들은 마이크로프로세서에서 계산상으로 값비싼 연산들이기 때문에, 이는 실질적으로 종래의 기법들에 비해 마이크로프로세서에 의해 요구되는 총 처리 능력(total processing power) 또는 MIPS를 감소시킨다. 그 결과, 다른 어플리케이션들을 처리할 수 있는 마이크로프로세서를 가진 마이크로프로세서를 통해 전체적인 모뎀 기능이 성취될 수 있다. 게다가, K 개의 곱들이 단일 레지스터에 저장된다는 사실은 단일한 XOR 및 SHIFT 명령을 사용하여 병렬로 K 개의 시프트 레지스터 지연 소자들 모두를 갱신하는 것을 허용한다. 또 하나의 이점은 한 번에 한 개의 워드가 테이블에 접근한다는 것이다. 각 워드는 통상 복수의 연속적인 바이트들로 구성되기 때문에, 통상적인 시스템들에서 지원되는 버스트 메모리 접근 모드(burst memory access mode)로부터 최대 이득을 받는다.
상기 구현에 있어서, 상기 마이크로프로세서 레지스터는 전체 시프트 레지스터를 보유할 정도로 충분히 폭이 넓다고 가정한다. 그렇지 않은 경우, 주어진 레지스터 폭에 의해 제공된 최대 이점은 시프트 레지스터 동작들을 저장하는 부분에 의해 여전히 얻어질 수 있다. 추가적으로, 위에서 기술된 룩업 테이블은 단지 리드-솔로몬 코드에만 적용될 수 있는 것은 아니며, 리드-솔로몬 코드가 구성 요소인순환 코드(cyclic code)로 알려진 종류의 코드를 인코딩하기 위한 일반 MIPS 효율적인 방법을 제공한다.
도 4는 본 발명의 양호한 실시예에 따른 도 2의 리드-솔로몬 인코더의 동작을 보여주는 순서도이다. 시프트 레지스터는 각각 b 개 bit 폭의 K 개의 필드들로 개념적으로 분할된 프로세서의 하나 또는 그 이상의 정수 레지스터들로 구현되며, 각 필드는 하나의 지연 소자의 내용을 갖는다. 논리 흐름은 마이크로프로세서가 시프트 레지스터를 모두 0(zero)으로 초기화하는 단계(401)에서 시작한다. 그런 후 메시지 데이터를 처리하는 루프(loop)로 들어간다. 단계(402)에서, 마이크로프로세서(201)는 전송될 데이터 심볼(Xm)를 수신한다. 단계(403)에서, 마이크로프로세서(201)는 Xm으로부터 Ym에 대한 값을 계산한다. 다음에, 단계(405)에서, 마이크로프로세서(201)는 룩업 테이블(203)에 접근하여, 룩업 테이블(203)에 대한 색인으로서 Ym을 이용하여 룩업 테이블(203)로부터 G0Ym, G1Ym, …, GK-1Ym에 대한 값들을 얻는다. 그런 후, 프로세서는 시프트 레지스터의 내용을 룩업 테이블의 출력과 XOR 하고 b 비트씩 시프트 레지스터를 오른쪽으로 시프트하여 시프트 레지스터를 갱신한다(단계 407). 단계(408)에서, 마이크로프로세서(201)는 블록의 마지막 메시지 심볼를 처리하였는지를 판단한다. 처리하지 않았다면, 단계(402-408)들을 반복하며, 처리하였다면, 마이크로프로세서는 단계(409)에서 꼬리 비트(tail bit)들을 출력한다. 논리 흐름은 단계(411)에서 종료한다. 본 발명의 양호한 실시예에서, 꼬리 비트들은 시프트 레지스터의 최종 내용을 출력함으로써 위에서 기술된 대로 생성된다.
리드-솔로몬 디코딩은 여러 단계들로 일어나는데, 이는 도 5에 도시되어 있다. 단계(501)에서, 신드롬 다항식이 계산된다. 본 기술 분야의 당업자는 인식할 것이지만, 상기 신드롬 다항식은 다항식을 생성하는 코드의 루트들에서 값이 계산된 수신된 다항식으로서 그의 계수들이 규정되는 다항식이다. 단계(502)에서, 신드롬=0 인지를 판단함으로써 전송된 데이터에 오류가 존재하는지 여부를 판단한다. 0이 아닌 신드롬에 의해 지시되듯이, 수신된 데이터에 오류가 존재한다면, 오류 위치결정 다항식(error locator polynomial)이 계산되고(단계 504) 오류 위치들이 상기 오류 위치결정 다항식으로부터 결정된다(단계 506). 마침내, 단계(508)에서, Forney 알고리즘을 사용하여 오류 위치결정 다항식으로부터 오류 크기들이 결정된다.
상기 네 개의 단계들 중, 단계(1 및 3)들은 마이크로프로세서 기반의 디코더에 대해 통상 계산상으로 가장 집중적인 단계들이다. 단계(1)는 수신된 전체 메시지 다항식을 포함하며, 수신된 블록에 오류가 존재하는지 여부와 관계없이 필요하다. 단계(3)에 대한 통상의 알고리즘은 GF(Q) 필드의 모든 Q 개의 원소들을 통하여 검색하는 것을 포함한다. 반면, 단계(2 및 4)들은 상기 수신된 메시지 다항식의 차수나 GF(Q) 필드의 크기보다 통상 훨씬 낮은 차수를 가지는 오류 위치 다항식들 및 신드롬을 포함한다.
리드-솔로몬 인코딩된 데이터를 디코딩하는데 요구되는 MIPS의 양을 감소시키기 위해, 그 블록도가 본 발명의 양호한 실시예에 따라 도 6에 도시된디코더(600)는 여러 개의 룩업 테이블들을 사용한다.
제 1 룩업 테이블(603)은 단계(1)의 복잡성을 감소시키는데 사용된다. 상기 룩업 테이블은 인코더(200)의 룩업 테이블(203)과 유사한 방식으로 사용된다. 신드롬을 계산하는 동안, 디코더(600)는 수신된 정보 심볼들(Rm)로부터 꼬리 비트들의 제 2 세트를 생성하는데, 상기 수신된 정보 심볼들은 마치 전송될 메시지 심볼들(Xm)과 같다. 상기 신드롬이 꼬리 비트들의 이러한 제 2 세트와 수신된 꼬리 비트들의 합으로서 계산될 수 있다는 것은 본 기술 분야에서 공지되어 있다. 꼬리 비트들의 제 2 세트를 계산하는 동안, 인코더가 G0Ym, G1Ym, …, GK-1Ym에 대한 값들을 결정하는 것과 유사한 방법으로 룩업 테이블(603)로부터 G0Ym, G1Ym, …, GK-1Ym에 대한 값들이 얻어진다. 보다 구체적으로, 마이크로프로세서(601)는 표준 리드-솔로몬 인코딩 기법들에 의해, 즉 상술한 바와 같이 정보 심볼(Rm)를 최우측 시프트 레지스터의 내용과 더함으로써 Ym을 계산하고, 룩업 테이블(603)에 대한 색인으로서 상기 Ym을 이용한다. 테이블(603)은 G0Ym, G1Ym, …, GK-1Ym을 반환한다.
제 2 룩업 테이블(605)은 단계(3)의 복잡성을 감소시키는데 사용된다. 오류 위치들은 오류 위치결정 다항식의 루트들에 대응한다. GF 다항식의 루트들을 찾기 위한 잘 알려진 알고리즘은 Chien 검색을 사용하는 것이다. Chien 검색에서, GF(Q) 필드의 Q 개의 원소들 중 각각의 한 원소가 루트인지 여부를 판단하기 위해 상기 각 원소에 대한 다항식 값을 간단히 구한다. 명백하게, Chien 검색의 직접적인 구현은 L 번째 차수의 다항식이 Q 회 계산될 것을 필요로 하는 것처럼 많은 처리 능력을 소모할 것이다. 처리 속도를 향상시키는데 룩업 테이블(605)이 사용된다. 테이블(605)은 Chien 검색을 하는 동안 사용되는 L 개의 룩업 테이블들(607-611)의 세트로 사실상 구성된다.
테이블들(607-611)은 각 테이블이 (Q-1) 개의 원소들을 포함하도록 설정된다. 여기서, Q는 GF(Q) 필드의 크기이다. m 번째 룩업 테이블은 (Q-1)과 m 사이의 최대공약수 (GCD(Q-1,m))가 1 인 경우 위치 i에 갈로아 필드 원소 α-mi를 저장한다. 즉, m 번째 룩업 테이블은 (Q-1)과 m 이 서로소인 경우 위치 i에 갈로아 필드(GF) 원소 α-mi를 저장한다. 이는 도 7에 도시되어 있다. α-m(i+Q-1)=α-mi라는 것을 유의한다. 즉, 테이블은 주기 Q-1의 주기성을 갖도록 구성되며 도 7은 테이블의 단일 주기를 도시한다.
만약 (GCD(Q-1,m))가 1이 아닌 경우, m 번째 룩업 테이블은 GF 원소 α-(mi+j)를 저장하는 (GCD(Q-1,m)) 개의 서브-테이블들을 사실상 포함한다. 여기서, j = 0,1,…,GCD(Q-1,m)-1 이다. 각 서브-테이블은 α-(m(i+V)+j)= α-(mi+j)이라는 사실로 인해 주기 V=(Q-1)/GCD(Q-1,m)의 주기성을 갖는다. 도 8은 각 서브-테이블의 단일 주기를 도시한다. 모든 테이블들은 어떤 위치 i로 시작하는 특성을 가지며, 테이블은 연속적인 위치들에 {Tum: u = α0,α-1,α-2,…}을 저장한다. 여기서, T는 위치 i에서의 내용이다. 추가적으로, 각 테이블 또는 서브-테이블들의 모음은 모두GF(Q)의 0이 아닌 원소를 포함한다.
Chien 검색을 하는 동안, 마이크로프로세서(601)는 위치 α0,α-1,α-2,α-3, 등에서 상기 순서대로 오류 위치결정 다항식의 값을 구한다. 테이블을 이용하기 위해, 마이크로프로세서(601)는 초기화 단계 동안 L 개의 룩업 테이블들 각각에 대한 시작 번지를 결정한다. 이는, m 번째 룩업 테이블에 대해, 상기 테이블에 있어서 그 내용이 λm(즉, 오류 위치결정 다항식의 zm계수)인 위치를 결정함으로써 이루어진다. 테이블이 서브-테이블들의 모음(collection)인 경우, 마이크로프로세서 (601)는 먼저 서브-테이블을 선택한 뒤 선택된 서브-테이블의 시작 번지를 결정한다. 마이크로프로세서(601)는 그런 후 여러 차례 반복하여 Chien 검색을 완료한다. 각 반복에서, 마이크로프로세서(601)는 (위에서 기술된 절차로 결정된) 개별적인 시작 번지로부터 동일한 오프셋 (d)의 위치들에 있는 L 개의 테이블들 모두의 내용을 더한다. 테이블의 특성으로 인해, 그 합은
가 된다. 여기서, L은 오류 위치결정 다항식의 차수이다. 즉, 오프셋 (d)에서의 합은 원소 α-d및 1에 대한 오류 위치결정 다항식 값의 차(difference)이다. 그러므로 마이크로프로세서는 S(d)를 1과 비교하여 α-d가 루트인지를 결정할 수 있다. 마이크로프로세서는 그런 후 다음 반복을 준비하기 위해 오프셋을 증가시킨다. B 가 마이크로프로세서의 레지스터 폭이라면, 마이크로프로세서는 각 반복에서 B 개의 연속적인 합들을 계산할 수 있고 오프셋을 B 개의 심볼씩 증가시킬 수 있다. 그러므로 테이블의 이점은 2B 개의 곱셈들을 단일한 XOR 명령으로 대체한다는 것이다.
0(α0)의 오프셋이 마지막으로 수신된 심볼의 오류 위치에 대응하고, 1(α-1)의 오프셋은 마지막으로 수신된 심볼에서 두 번째의 오류 위치에 대응하는 등으로 인해, 검색은 처음 수신된 심볼에 대응하는 원소가 검사된 후에 중단될 수 있다. 오류가 발생할 수 있는 모든 가능한 위치들을 이미 망라하였기 때문이다. 이는 짧아진 리드-솔로몬 코드들에 대한 또 하나의 복잡성 감소를 제공한다. 본 기술 분야에서 공지된 바와 같이, 짧아진 코드는 (패리티 심볼들을 포함해서) Q-1 개의 심볼 블록 크기를 가진 원래의 리드-솔로몬 코드와 동등하다. 여기서 처음 몇 심볼들은 0(zero)으로 강제되어(따라서 디코더에 의해 이미 정해진 것(priori)으로 알려진다) 전송되지 않는다. 연속적인 위치들을 판독함으로써 테이블이 접근되기 때문에, 최대 이익은 대부분의 프로세서들에 의해 지원되는 버스트 메모리 모드로부터 얻어진다.
도 9는 본 발명의 양호한 실시예에 따른 룩업 테이블 기반의 Chien 검색의 단계들을 도시하는 순서도이다. 초기화 단계(902)에서, 마이크로프로세서(601)는 오류 위치결정 다항식의 L 개의 계수들 각각과 관련된 룩업 테이블에 대한 시작 번지를 결정하고 오프셋 (d)를 0으로 설정한다. 마이크로프로세서(601)는 그런 후 여러 차례 반복하여 Chien 검색을 완료한다. 각각의 반복에 있어, 단계(904)에서, 마이크로프로세서(601)는 초기화 단계 동안 결정된 자신의 각 시작 번지로부터 오프셋 (d)에 있는 L 개의 룩업 테이블들 모두의 내용들을 더한다. 그런 후, 단계(906)에서 마이크로프로세서(601)는 단계(904)에서 얻어진 B 개의 합들을 B 개의 1 들과 비교한다. 1과 동일한 B 개의 합 각각에 대해, 마이크로프로세서는 그 합에 관련된 GF(Q) 원소가 오류 위치결정 다항식의 루트라고 선언한다. 단계(908)에서, 마이크로프로세서는 오프셋 (d)를 B 만큼 증가시킨다. 단계(910)에서, 마이크로프로세서는 모든 가능한 오류 위치들을 망라했는지 여부를 결정하고, 모두 망라하지 않았다면 단계(904-910)들을 반복한다. 마이크로프로세스가 모든 가능한 오류 위치들을 망라하였다면 단계(912)에서 프로세스는 종료한다.
오류 위치결정 다항식의 차수(L)는 K/2를 초과할 수 없기 때문에, K/2 개의 테이블들은 K 개의 패리티 심볼들을 가진 리드-솔로몬 코드를 다루도록 만들어질 필요가 있을 것이다. 위에서 기술한 바와 같이, 테이블들 및 서브-테이블들은 주기성을 가지며, 따라서 상기 테이블들에 접근하는데 순환적인 번지지정(circular addressing)이 사용되는 한, 즉 번지가 상기 테이블/서브-테이블의 주기로 테이블/서브-테이블의 끝을 감싸는 한에서는 상기 테이블들의 크기는 하나의 주기일 수 있다. Q=256 이고 K=16 인 전형적인 예의 경우, K/2 개의 테이블 모두를 위한 총 기억용량은 (Q-1)*K/2=2040 byte, 거의 2KB 이다. 순환적 번지지정 능력을 가진 마이크로프로세서의 경우, 각 테이블의 단일 주기가 저장된다. 다른 마이크로프로세서들의 경우, 소프트웨어로 순환적인 룩업 테이블들을 구현하는 것은 MIPS 소모적일 수 있다. 이들 경우들에서는, GCD(Q-1,m)+1 개의 주기들이 저장된다. 이 방법은 번지가 감싸는 일이 일어나지 않으며, 테이블 내로 색인을 붙이는데 선형 번지지정이 사용될 수 있다.
본 발명의 다른 실시예에서, Q-1 개의 0(zero) 엔트리들을 가진 추가적인 테이블이 생성된다. 그 다음 상기 테이블은 0 인 오류 위치결정 다항식(λm)의 계수용으로 사용된다.
상술한 본 발명의 상세한 설명 및 도면들은 본 발명의 범위를 제한하려는 것이 아니다. 예컨대, 본 발명의 양호한 실시예가 비록 리드-솔로몬 코딩/디코딩을 하는 동안 룩업 테이블들을 사용하지만, 본 기술 분야의 당업자는 상기 룩업 테이블들이 코딩/디코딩의 다른 형태들에서도 사용될 수 있다는 것을 인식할 것이다. 본 발명의 정신과 범위를 벗어나지 않고 다양한 변형이 본 발명에 대해서 이루어질 수 있으며, 모든 그러한 변형들은 다음의 청구항들 및 그 동등물들의 범위 내에 있는 것이다.
본 발명은 리드-솔로몬 코딩 및 디코딩을 위한 방법 및 장치에 관한 것으로, 소프트 모뎀들에서 구현될 수 있으면서 종래의 소프트 모뎀들에 의해 요구되는 MIPS를 사용하지 않는 인코딩/디코딩 방법 및 장치를 제공한다. 본 발명에 따른 룩업 테이블들에 의해 마이크로프로세서에 의해 요구되는 MIPS를 줄일 수 있다.
Claims (3)
- 데이터를 인코딩/디코딩하는 방법에 있어서, 상기 방법은:데이터 심볼(Xm)를 수신하는 단계;표준 인코딩/디코딩 기법의 일부로서 제 1 값을 계산하는 단계;룩업 테이블에 대한 색인(index)으로서 상기 제 1 값을 이용하는 단계;상기 제 1 값과 복수의 다른 값들과의 복수의 곱들을 상기 룩업 테이블로부터 수신하는 단계; 및데이터를 인코딩/디코딩하는데 상기 복수의 곱들을 사용하는 단계를 포함하는, 데이터를 인코딩/디코딩하는 방법.
- 데이터를 디코딩하는 방법에 있어서, 상기 방법은:전송된 데이터 내에 오류가 존재하는지 여부를 결정하기 위해 신드롬 계산을 수행하는 단계;상기 신드롬 계산을 기초로 오류 위치결정 다항식을 계산하는 단계; 및복수의 룩업 테이블들에 접근하여 GF(Q) 필드의 Q 개의 원소들 중 각각의 하나에 대한 다항식 값을 구함으로써 오류 위치결정 다항식으로부터 오류 위치들을 결정하기 위한 Chien 검색을 수행하는 단계를 포함하는, 데이터를 디코딩하는 방법.
- 표준 인코딩/디코딩 기법의 일부로서 제 1 값을 출력하는 마이크로프로세서; 및입력으로서 상기 제 1 값을 가지며, 상기 제 1 값과 복수의 다른 값들과의 복수의 곱들을 출력하는 제 1 룩업 테이블을 포함하는 인코더/디코더.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/384,530 | 1999-08-27 | ||
US09/384,530 US6360348B1 (en) | 1999-08-27 | 1999-08-27 | Method and apparatus for coding and decoding data |
PCT/US2000/022631 WO2001017154A2 (en) | 1999-08-27 | 2000-08-17 | Method and apparatus for coding and decoding data |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20020047134A true KR20020047134A (ko) | 2002-06-21 |
Family
ID=23517690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020027002559A KR20020047134A (ko) | 1999-08-27 | 2000-08-17 | 데이터를 코딩 및 디코딩하는 방법 및 장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6360348B1 (ko) |
EP (1) | EP1400022A4 (ko) |
JP (1) | JP2003529233A (ko) |
KR (1) | KR20020047134A (ko) |
CN (1) | CN1535505A (ko) |
AU (1) | AU6913900A (ko) |
WO (1) | WO2001017154A2 (ko) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6598201B1 (en) * | 1999-03-15 | 2003-07-22 | Texas Instruments Incorporated | Error coding structure and method |
US6850566B2 (en) * | 2000-02-22 | 2005-02-01 | Intervideo, Inc. | Implementation of quantization for SIMD architecture |
US6763492B1 (en) * | 2000-09-26 | 2004-07-13 | Qualcomm Incorporated | Method and apparatus for encoding of linear block codes |
US6934730B2 (en) * | 2000-10-13 | 2005-08-23 | Xpriori, Llc | Method and system for generating a transform |
US6985633B2 (en) * | 2001-03-26 | 2006-01-10 | Ramot At Tel Aviv University Ltd. | Device and method for decoding class-based codewords |
US6954892B2 (en) * | 2002-06-06 | 2005-10-11 | National Chiao Tung University | Method for calculating syndrome polynomial in decoding error correction codes |
WO2004012337A2 (en) * | 2002-07-29 | 2004-02-05 | Robert Halford | Multi-dimensional data protection and mirroring method for micro level data |
US7633976B2 (en) * | 2002-09-19 | 2009-12-15 | Industrial Technology Research Institute | Method and apparatus for code group identification and frame synchronization by use of Reed-Solomon decoder and reliability measurement for UMTS W-CDMA |
US7162679B2 (en) * | 2003-12-12 | 2007-01-09 | Analog Devices, Inc. | Methods and apparatus for coding and decoding data using Reed-Solomon codes |
CN100388629C (zh) * | 2003-12-22 | 2008-05-14 | 普天信息技术研究院 | 一种循环冗余校验的快速计算方法 |
EP1704647B1 (en) * | 2004-01-15 | 2019-03-20 | Qualcomm Incorporated | A method of reed-solomon encoding and decoding |
US20060123271A1 (en) * | 2004-11-19 | 2006-06-08 | International Business Machines Corporation | RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR |
US7788570B1 (en) | 2005-03-23 | 2010-08-31 | Marvell International Ltd. | Optimized Reed-Solomon decoder |
US7370258B2 (en) * | 2005-04-28 | 2008-05-06 | Sandbridge Technologies Inc. | Iterative concatenated convolutional Reed-Solomon decoding method |
US7823049B2 (en) * | 2006-03-15 | 2010-10-26 | Mediatek Inc. | Methods and apparatuses for generating parity symbols for data block |
US7793195B1 (en) * | 2006-05-11 | 2010-09-07 | Link—A—Media Devices Corporation | Incremental generation of polynomials for decoding reed-solomon codes |
JP4891704B2 (ja) * | 2006-08-28 | 2012-03-07 | 株式会社東芝 | 半導体記憶装置 |
JP4313391B2 (ja) * | 2006-12-13 | 2009-08-12 | 株式会社日立コミュニケーションテクノロジー | 光集線装置および光加入者装置 |
US8171368B1 (en) | 2007-02-16 | 2012-05-01 | Link—A—Media Devices Corporation | Probabilistic transition rule for two-level decoding of reed-solomon codes |
TWI334279B (en) * | 2007-06-23 | 2010-12-01 | Lite On Technology Corp | Efficient chien search method for reed-solomon decoding and machine readable recording medium comprising instructions for performing the method |
GB2460417B (en) * | 2008-05-28 | 2011-04-06 | Mirics Semiconductor Ltd | Broadcast receiver system |
GB2460416B (en) * | 2008-05-28 | 2010-07-07 | Mirics Semiconductor Ltd | Broadcast receiver system |
GB2460418B (en) * | 2008-05-28 | 2010-04-14 | Mirics Semiconductor Ltd | Broadcast receiver system |
JP4945513B2 (ja) * | 2008-06-04 | 2012-06-06 | ルネサスエレクトロニクス株式会社 | 可変長復号装置およびそれを用いた動画復号装置 |
JP5259343B2 (ja) * | 2008-10-31 | 2013-08-07 | 株式会社東芝 | メモリ装置 |
US8312346B2 (en) * | 2009-05-01 | 2012-11-13 | Mirics Semiconductor Limited | Systems and methods for communications |
US8433985B2 (en) * | 2010-03-29 | 2013-04-30 | Intel Corporation | Error correction mechanisms for flash memories |
US8479082B2 (en) * | 2010-04-07 | 2013-07-02 | Indian Institute Of Technology Delhi | Packet error correction in networks |
TW201216624A (en) * | 2010-06-11 | 2012-04-16 | Mirics Semiconductor Ltd | Systems and methods for error correction |
EP2434650A1 (en) | 2010-09-23 | 2012-03-28 | Panasonic Corporation | Reed-Solomon encoder with simplified Galois field multipliers |
WO2013051139A1 (ja) * | 2011-10-06 | 2013-04-11 | 株式会社日立製作所 | 有限体上の乗算方法、計算機、およびプログラム |
CN104202057B (zh) * | 2014-02-12 | 2019-08-16 | 中兴通讯股份有限公司 | 信息处理方法及装置 |
CN105024707B (zh) * | 2015-07-31 | 2018-05-11 | 福建联迪商用设备有限公司 | 一种rs纠错解码方法 |
US10318433B2 (en) * | 2016-12-20 | 2019-06-11 | Texas Instruments Incorporated | Streaming engine with multi dimensional circular addressing selectable at each dimension |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3668632A (en) * | 1969-02-13 | 1972-06-06 | Ibm | Fast decode character error detection and correction system |
US4856004A (en) * | 1987-10-05 | 1989-08-08 | Motorola, Inc. | Microprocessor based BCH decoder |
US4890287A (en) * | 1988-03-09 | 1989-12-26 | Magnetic Peripherals Inc. | On-the-fly error correction |
US4958349A (en) * | 1988-11-01 | 1990-09-18 | Ford Aerospace Corporation | High data rate BCH decoder |
US5329618A (en) * | 1992-04-02 | 1994-07-12 | Fibronics Ltd. | Look-up table for a bridge in a data communications system |
SG52170A1 (en) * | 1994-02-17 | 1998-09-28 | Micrilor Inc | A high-data-rate wireless local-area network |
US5627843A (en) * | 1995-02-23 | 1997-05-06 | Seagate Technology, Inc. | Correcting up to two disc drive read errors and detecting the occurrence of more than two read errors |
EP0806839B1 (en) * | 1995-10-03 | 2002-01-30 | Matsushita Electric Industrial Co., Ltd. | Device and method for error correcting coding, and device and method for error correcting decoding |
US5701314A (en) * | 1995-12-21 | 1997-12-23 | Cirrus Logic, Inc. | On-the-fly error correction using thermal asperity erasure pointers from a sampled amplitude read channel in a magnetic disk drive |
US5894565A (en) * | 1996-05-20 | 1999-04-13 | Atmel Corporation | Field programmable gate array with distributed RAM and increased cell utilization |
US5926647A (en) * | 1996-10-11 | 1999-07-20 | Divicom Inc. | Processing system with dynamic alteration of a color look-up table |
US6081555A (en) * | 1996-12-04 | 2000-06-27 | Conexant Systems, Inc. | Methods and apparatus for implementing shell mapping techniques in the context of a PCM-based modem communications system |
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次伸長拡大リードソロモン符号の誤り訂正方法と誤り訂正装置 |
US6058500A (en) * | 1998-01-20 | 2000-05-02 | 3Com Corporation | High-speed syndrome calculation |
KR100304193B1 (ko) * | 1998-02-06 | 2001-11-22 | 윤종용 | 리드솔로몬복호기의역수구현회로 |
-
1999
- 1999-08-27 US US09/384,530 patent/US6360348B1/en not_active Expired - Fee Related
-
2000
- 2000-08-17 KR KR1020027002559A patent/KR20020047134A/ko not_active Application Discontinuation
- 2000-08-17 EP EP00957537A patent/EP1400022A4/en not_active Withdrawn
- 2000-08-17 JP JP2001520981A patent/JP2003529233A/ja active Pending
- 2000-08-17 CN CNA008121400A patent/CN1535505A/zh active Pending
- 2000-08-17 AU AU69139/00A patent/AU6913900A/en not_active Abandoned
- 2000-08-17 WO PCT/US2000/022631 patent/WO2001017154A2/en not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
WO2001017154A2 (en) | 2001-03-08 |
AU6913900A (en) | 2001-03-26 |
WO2001017154A3 (en) | 2004-01-08 |
CN1535505A (zh) | 2004-10-06 |
US6360348B1 (en) | 2002-03-19 |
EP1400022A2 (en) | 2004-03-24 |
JP2003529233A (ja) | 2003-09-30 |
EP1400022A4 (en) | 2004-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20020047134A (ko) | 데이터를 코딩 및 디코딩하는 방법 및 장치 | |
US5715262A (en) | Errors and erasures correcting reed-solomon decoder | |
US4873688A (en) | High-speed real-time Reed-Solomon decoder | |
US6058500A (en) | High-speed syndrome calculation | |
US8176396B2 (en) | System and method for implementing a Reed Solomon multiplication section from exclusive-OR logic | |
US7502989B2 (en) | Even-load software Reed-Solomon decoder | |
US6044389A (en) | System for computing the multiplicative inverse of a field element for galois fields without using tables | |
US7162679B2 (en) | Methods and apparatus for coding and decoding data using Reed-Solomon codes | |
EP1370004A2 (en) | Arithmetic unit for Reed-Solomon decoder | |
US5535225A (en) | Time domain algebraic encoder/decoder | |
WO2000057561A1 (en) | Pipelined high speed reed-solomon error/erasure decoder | |
US5365529A (en) | Circuitry for detecting and correcting errors in data words occurring in Reed-Solomon coded blocks and determining when errors are uncorrectable by syndrome analysis, Euclid's algorithm and a Chien search | |
JP3834122B2 (ja) | 誤り位置検出多項式計算装置 | |
US7458007B2 (en) | Error correction structures and methods | |
US6263471B1 (en) | Method and apparatus for decoding an error correction code | |
US6735737B2 (en) | Error correction structures and methods | |
US6343367B1 (en) | Error correction system for five or more errors | |
JP2000020333A (ja) | 復号装置、演算装置およびこれらの方法 | |
EP0793352B1 (en) | Apparatus for determining the error evaluator polynomial for use in a Reed-Solomon decoder | |
JPH06230991A (ja) | 有限体での任意元素の逆数算出方法及び装置 | |
US7287207B2 (en) | Method and apparatus for computing parity characters for a codeword of a cyclic code | |
KR100192802B1 (ko) | 리드 솔로몬 디코더의 에러값 계산 및 정정 장치 | |
WO2004059851A1 (en) | An encoder for high rate parallel encoding | |
JPH09185518A (ja) | 原始元αのべき乗生成方式及びその装置 | |
JP2003168983A (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 |