KR102519667B1 - 일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치 - Google Patents
일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치 Download PDFInfo
- Publication number
- KR102519667B1 KR102519667B1 KR1020180017172A KR20180017172A KR102519667B1 KR 102519667 B1 KR102519667 B1 KR 102519667B1 KR 1020180017172 A KR1020180017172 A KR 1020180017172A KR 20180017172 A KR20180017172 A KR 20180017172A KR 102519667 B1 KR102519667 B1 KR 102519667B1
- Authority
- KR
- South Korea
- Prior art keywords
- submatrix
- stage
- matrix
- binary bch
- codeword
- Prior art date
Links
Images
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
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- 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/152—Bose-Chaudhuri-Hocquenghem [BCH] 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2909—Product codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2948—Iterative decoding
-
- 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/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/356—Unequal error protection [UEP]
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/617—Polynomial operations, e.g. operations related to generator polynomials or parity-check polynomials
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
본 발명에 따른, N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 BCH 코드워드(BCH codeword)로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하는 방법은, 길이 m 비트의 Δt 신드롬들을 포함하는 필드 GF(2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터( )를 수신하는 단계- 여기서, 상기 신드롬 벡터( )는 Δt 리드-솔로몬(RS) 코드워드의 l번째 RS 심볼을 포함하며, 상기 정보 심볼은 스테이지 0 내지 스테이지 n-1까지의 모든 BCH 코드 워드의 델타 신드롬임-; 및 상기 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계-상기 행렬 U는 tn에 의해 정의된 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 새로운 이진 BCH 코드 워드는 임-를 포함한다.
Description
본 발명의 개념에 따른 실시 예는 오류 정정 코드들(error correcting codes(ECC))을 생성하는 방법에 관한 것이다.
코딩 이론에서, BCH 코드들(bose-chaudhuri-hocquenghem(BCH) codes)은 유한체들(finite fields)을 사용하여 구성된 순환 오류 정정 코드들(cyclic error-correcting codes (ECCs))의 클래스를 형성한다. BCH 코드들은 발명가 Raj Bose, D. K. Ray-Chaudhuri 와 Alexis Hocquenghem의 이름을 따서 명명되었다. BCH 코드들은 다음과 같이 정의할 수 있다. GF(q)는 유한 필드이고, q는 소수력(prime power)이고, 2≤d≤n, gcd(n, q) = 1, 및 m은 q 모듈로 n의 차수(multiplicative order)가 되도록 양의 정수 m, n, d, c를 선택한다. 또한, 를 GF(qm)에서 n 번째 원시 단위 근(primitive nth root of unity)으로 하고 mi(x)를 모든 i에 대해 ai의 GF(q)에 대한 최소 다항식(minimal polynomial)이라 하자. BCH 코드의 생성 다항식(generator polynomial)은 최소 공배수 g(x) = lcm(mc(x), ... , mc+d-2(x))이다.
BCH 코드는 코드 설계 중에 코드로 수정할 수 있는 심볼 오류들(symbol errors) 의 수를 정밀하게 제어할 수 있다. 특히, 다중 비트 오류를 정정할 수 있는 2진 BCH 코드를 설계하는 것이 가능하다. BCH 코드는 또한 신드롬 디코딩(syndrome decoding)이라고 알려진 대수적(algebraic) 방법을 사용하여 쉽게 디코딩될 수 있다. 이렇게 하면 소형의 저전력 전자 하드웨어를 사용하여 이러한 코드들에 대한 디코더 설계를 단순화할 수 있다.
수신된 코드 워드(codeword) y = x + e (x는 송신된 코드 워드, e는 에러 패턴)의 신드롬은 패리티 행렬(parity matrix) H의 관점에서 정의된다. 선형(linear) 코드 C의 패리티 검사 행렬(parity check matrix)은 이중 코드(dual code) 의 생성 행렬(generator matrix)이다. 이는 코드 워드 c가 C에 포함된다는 것과 행렬 - 벡터 곱(matrix-vector product) Hc = 0이 필요 충분 조건(if and only if(iff))임을 의미한다. 그러면 수신된 워드 y = x + e 의 신드롬은 S = Hy = H(x + e) = Hx + He = 0 + He = He 로 정의된다. 신드롬은 메시지 다항식이 제거되고, 길이 S, 추정된 오류 수 L이 코드 워드 x 자체의 길이보다 훨씬 작다는 점에서 유용하다.
예시적인 인코딩/디코딩이 도 1에 도시된다. 도 1에서, 약한 BCH 코드(weak BCH code)가 에 의해 주어지고, kw 정보 비트는 이고 약한 BCH의 패리티 검사 행렬은 이다.
여기서, 행렬 의 행(row) 수는 (n-ks) - (n-kw) = kw-ks 이고, 첨자 s, w, d는 각각 강함(strong), 약함(weak) 및 델타(delta)를 나타낸다. 간략하게, 정보 데이터 는 약한 코드 로 인코딩 및 디코딩될 수 있고, 이하에서 설명되는 바와 같이, 강한 코드 을 사용하여 인코딩 및 디코딩될 수 있다.
정보 데이터 는 도 2에 도시된 바와 같이 코드 워드()를 얻기 위해 BCH 코드()를 사용하여 인코딩될 수 있다. 강한 코드의 오버헤드(overhead)는 도 2에 도시된 바와 같이 에 의해 주어진다. 이 추가 오버헤드는 다른 페이지에 있을 수 있다. 일 실시 예에 따른 강한 코드에 대해 저장된 오버 헤드는 종래의 BCH 오버 헤드가 아니라 대신에 임을 유의한다. 그러나, 전체 코드는 아래에 기술된 바와 같이 BCH 코드와 동일하다. 이 오버 헤드는 추가 ECC로 보호되므로 는 오류가 발생하지 않는다.
오류를 가진 Cw 의 읽기(read)는 다음의 수학식과 같다.
y로부터 약한 BCH의 신드롬을 계산할 수 있다.
정보(information)가 신드롬으로부터 디코딩될 수 있으면, 디코딩은 완료되고, 그렇지 않으면, 다음과 같이 계산된다.
따라서, 패리티 검사 행렬 Hs를 갖는 더 강한 BCH Cs 를 사용하여 디코딩이 수행될 수 있다.
약한 BCH가 에러 용량(error capability) tw를 갖고 강한 BCH가 에러 용량 ts를 갖는다고 가정한다. 그런 다음 약한 코드는 신드롬 를 사용하고 강한 BCH는 약한 BCH 의 신드롬 과 추가적인 신드롬 를 필요로 한다. Berlekamp-Massey (BM) 디코더는 신드롬들 즉, 하나의 신드롬 후에 다른 신드롬에 대해 순차적으로 작동한다. 따라서, 약한 BCH가 실패하면, 강한 BCH의 디코딩 절차는 동일한 지점으로부터 재개될 수 있다. 시작부터 강한 BCH의 디코딩을 시작할 필요가 없으므로 더 효율적이다. 대조적으로, 유클리드 디코딩(Euclidian decoding)과 같은 다른 디코딩 알고리즘은 모든 신드롬에서 동시에 작동한다. 따라서, 약한 BCH 및 강한 BCH 코드의 디코딩은 개별적으로 수행되고, 결과적으로 더 많은 시간이 소요될 것이다.
오류 정정 코드를 구성하데 있어서 또 다른 관심은 단순하게 디코딩할 수 있고 효율적으로 만드는 방법이다. BCH (Bose-Chaudhuri-Hocquenguem) 코드는 효율적이지만 단순하게 디코딩할 수 있는(simply decodable) 코드는 아니다.
반면, 다수 논리 디코딩 가능 코드(majority-logic decodable codes)는 단순하게 디코딩 가능하지만 일반적으로 효율적이지 않다.
일반화된 텐서 곱(GTP: Generalized tensor product) 코드로 알려진 좀 더 일반적인 클래스의 에러 정정 코드는, 다양한 필드에서 다수의 코드를 더 짧은 이진 코드(binary codes)와 결합하여 형성될 수 있는데, 동등하거나 우수한 품질의 다른 코드용 디코더 보다 훨씬 더 간단한 바운드 거리 디코딩(bounded distance decoding)용 디코더를 갖는다.
GTP 코드는 Imai, et al., "Generalized Tensor Product Codes", IEEE Transactions on Information Theory, Vol. IT-27, No. 2, March 1981, pgs. 181 - 187에 기재되어 있으며, 이의 내용은 그 전체가 참고 문헌으로 여기에 포함되며, 관련 내용은 다음과 같이 요약된다.
GTP 코드를 구성하려면 먼저 행렬 Hi, i = 1,2, ..., μ 및 H i , i = 1,2, ..., μ를 정의한다. Hi는 (r1 + r2+ ... +ri) × n 행렬이 되도록 GF(2)에 대한 ri × n 행렬이다.
는 최소 거리(minimum distance) di의 이진 (n, n-r1 - r2 - ...- ri) 코드의 검사 행렬이다. H i 는 최소 거리 δi 의 에 대한 (v, v- λi) 코드의 검사 행렬인 에 대한 λi × v 행렬이다.
GF() 를 H i , k = 1, 2, ..., i, l = 1, 2, ..., v의 (k, l) 번째 요소라고 하자. GF(2)에 대한 의 고정된 기저(basis)에 따른 에 의한 곱셈을 나타내는 행렬을 로 표시하면 행렬들 H i 와 Hi 의 텐서 곱(tensor product)은 다음과 같이 주어진다.
GTP 코드는 다음과 같은 형태의 검사 행렬을 갖는 선형 코드로 정의된다.
GTP 코드의 코드 길이 N과 검사 비트 수 N-K는 다음과 같다.
N = nv
본 발명이 이루고자 하는 기술적인 과제는 이진의 일반화된 텐서곱(binary Generalized Tensor Product) 코드워드를 생성하는 방법 및 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 인코딩 방법은 단일 클록 완전 병렬 곱셈(single clock full parallel multiplication) 대신 다중 클럭 부분 병렬 곱셈(multi clock partial parallel multiplications)이 뒤 따르는 더 작은 행렬 곱셈을 사용한다. 또한, 일 실시 예에 따른 방법은 다항식 표현을 사용하고 BCH 코드 특성을 이용함으로써 단일 이진 행렬 곱셈(single binary matrix multiplication)을 몇몇의 작은 행렬 곱셈들로 분리한다.
본 발명의 실시 예에 따른, N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 BCH 코드워드(BCH codeword)로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하기 위한 컴퓨터로 구현되는 방법에 있어서, 상기 컴퓨터에 의해 실행되는 방법은, 길이 m 비트의 Δt 신드롬들을 포함하는 필드 GF(2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터()를 수신하는 단계- 여기서, Δt = tn - t0 이고, t0 는 상기 스테이지 0 BCH 코드워드의 에러 정정 능력이고, tn은 새로운 이진 BCH 코드 워드()가 부가될 스테이지 n BCH 코드 워드의 에러 정정 능력이고, 상기 신드롬 벡터()는 Δt 리드-솔로몬(RS: Reed-Solomon) 코드워드의 l번째 RS 심볼을 포함하며, 상기 정보 심볼(information symbols)은 스테이지 0 내지 스테이지 n-1까지의 모든 BCH 코드 워드의 델타 신드롬이며, l은 가 부가될 BCH 코드 워드의 인덱스임-; 및 상기 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계를 포함한다.
상기 행렬 U는 tn에 의해 정의된 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 부분 행렬 는 를 가지며, 상기 새로운 이진 BCH 코드 워드는 이다.
실시예에 따라, 상기 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계는, 단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수(binary logic function)에 의해 부분 행렬 U의 성분(component)으로 상기 신드롬 벡터 의 각 성분을 곱하여 성분 곱(component product)을 산출하는 단계; 및 새로운 이진 BCH 코드 워드 를 나타내는 단일 출력으로 상기 구성 요소 곱을 다중화하는 단계를 포함하며, 상기 부분 행렬 는 새로운 이진 BCH 코드 워드 의 신드롬 벡터 를 수신하기 전에 계산될 수 있다.
실시예에 따라, 상기 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계는, 단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수에 의해, 감소된 서브 매트릭스 의 성분으로 상기 신드롬 벡터 의 각 성분을 곱하여, 성분 곱(component product)을 산출하는 단계-여기서, 상기 감소된 서브 매트릭스 는 로 정의되고, 부분 행렬들 및 의 칼럼들(columns)은 다항식으로 표현되고, 를 로 나눈 칼럼인 의 각 칼럼은, 새로운 이진 BCH 코드 워드 의 신드롬 벡터 를 수신하기 전에 계산됨-; 상기 성분 곱(component product)을 임시 출력으로 멀티플렉싱하는 단계; 및 새로운 이진 BCH 코드 워드 를 나타내는 단일 출력을 생성하기 위해 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계-여기서, g0(x)는 다항식으로 표현된 부분 행렬 의 모든 칼럼의 공통 승수(common multiplier)이고, 새로운 이진 BCH 코드 워드 의 신드롬 벡터를 수신하기 전에 계산됨 -를 포함할 수 있다.
실시예에 따라, 상기 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계는, 다수의 클록 사이클에 걸쳐 수행될 수 있다.
실시예에 따라, 상기 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계는, 상기 m 개의 다항식들 을 칼럼(column)으로서 연결(concatenation)하여 형성된 행렬 Hj 로 상기 신드롬 벡터 를 곱함으로써 다항식 hj(x) 를 계산하는 단계- 여기서, 다항식 이고, 이며, 는 t1의 정정 능력을 갖는 BCH 코드 C1의 i 번째 최소 다항식이며, 새로운 이진 BCH 코드 워드 의 신드롬 벡터 를 수신하기 전에 계산됨-; hj(x)에 Mj(x) 를 곱하고, j = 0 내지 Δt-1에 대해 합산하는 단계; 상기 곱 hj(x)×Mj(x)의 합을 임시 출력으로 멀티플렉싱하는 단계; 및 새로운 이진 BCH 코드 워드 를 나타내는 단일 출력을 생성하기 위해 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계-여기서, g0(x)는 다항식으로 표현된 부분 행렬 의 모든 칼럼의 공통 승수이고, 새로운 이진 BCH 코드 워드 의 신드롬 벡터를 수신하기 전에 계산됨-를 포함할 수 있다.
본 발명의 실시 예에 따른, N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 BCH 코드 워드로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하는 방법 단계들을 수행하기 위한 명령들의 프로그램을 실행하도록 구성된 컴퓨터 프로세서에 있어서, 상기 방법은, 길이 m 비트의 Δt 신드롬을 포함하는 필드 GF (2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터( )를 수신하는 단계- 여기서, Δt = tn - t0 이고, t0 는 상기 스테이지 0 BCH 코드워드의 에러 정정 능력이고, tn은 새로운 이진 BCH 코드 워드 ( )가 부가될 스테이지 n BCH 코드 워드의 에러 정정 능력이고, 상기 신드롬 벡터( )는 Δt 리드-솔로몬(RS: Reed-Solomon) 코드워드의 l번째 RS 심볼을 포함하며, 상기 정보 심볼(information symbols)은 스테이지 0 내지 스테이지 n-1까지의 모든 BCH 코드 워드의 델타 신드롬이며, l은 가 부가될 BCH 코드 워드의 인덱스임-; 및 상기 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계를 포함한다.
상기 행렬 U는 tn에 의해 정의된 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 부분 행렬 는 를 가지며, 상기 새로운 이진 BCH 코드 워드는 이다.
실시예에 따라, 상기 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계는, 단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수(binary logic function)에 의해 부분 행렬 U의 성분(component)으로 상기 신드롬 벡터 의 각 성분을 곱하여 성분 곱(component product)을 산출하는 단계; 및 새로운 이진 BCH 코드 워드 를 나타내는 단일 출력으로 상기 구성 요소 곱을 다중화하는 단계를 포함하며, 상기 부분 행렬 는 새로운 이진 BCH 코드 워드 의 신드롬 벡터 를 수신하기 전에 계산될 수 있다.
본 발명의 실시 예에 따르면, 단일 클록 완전 병렬 곱셈(single clock fullparallel multiplication) 대신 다중 클럭 부분 병렬 곱셈(multi clock partial parallel multiplications)이 뒤 따르는 더 작은 행렬 곱셈을 사용하고 또한, 다항식 표현을 사용하고 BCH 코드 특성을 이용함으로써 단일 이진 행렬 곱셈(single binary matrix multiplication)을 몇몇의 작은 행렬 곱셈들로 분리할 수 있다.
이에 따라, 계산을 복잡성을 줄임으로써, 하드웨어 면적(게이트 수) 및 전력을 줄일 수 있는 효과가 있다.
도 1은 본 발명의 실시 예에 따른 예시적인 인코딩 / 디코딩을 나타낸다.
도 2는 본 발명의 실시 예들에 따라 코드워드(codeword)를 얻기 위해 BCH 코드를 사용하여 인코딩된 정보 데이터를 나타낸다.
도 3은 본 발명의 실시 예들에 따른 예시적인 GTP 워드 및 델타 신드롬 (DS: delta syndromes) 테이블들을 도시한다.
도 4는 본 발명의 실시 예들에 따른, y_vec 계산의 예시적인 하드웨어 구현을 도시한다.
도 5는 본 발명의 실시 예들에 따른, 2 개의 단계들(phases)로 분할된 y_vec 계산의 예시적인 하드웨어 구현을 도시한다.
도 6은 본 발명의 실시 예들에 따른, 3 개의 단계들(phases)로 분할된 y_vec 계산의 예시적인 하드웨어 구현 예를 도시한다.
도 7은 본 발명의 일 실시 예에 따른, 일반화 된 텐서 곱 코드(generalized tensor product codes)를 효율적으로 인코딩하기 위한 시스템의 블록도이다.
도 2는 본 발명의 실시 예들에 따라 코드워드(codeword)를 얻기 위해 BCH 코드를 사용하여 인코딩된 정보 데이터를 나타낸다.
도 3은 본 발명의 실시 예들에 따른 예시적인 GTP 워드 및 델타 신드롬 (DS: delta syndromes) 테이블들을 도시한다.
도 4는 본 발명의 실시 예들에 따른, y_vec 계산의 예시적인 하드웨어 구현을 도시한다.
도 5는 본 발명의 실시 예들에 따른, 2 개의 단계들(phases)로 분할된 y_vec 계산의 예시적인 하드웨어 구현을 도시한다.
도 6은 본 발명의 실시 예들에 따른, 3 개의 단계들(phases)로 분할된 y_vec 계산의 예시적인 하드웨어 구현 예를 도시한다.
도 7은 본 발명의 일 실시 예에 따른, 일반화 된 텐서 곱 코드(generalized tensor product codes)를 효율적으로 인코딩하기 위한 시스템의 블록도이다.
본 발명의 실시 예들은 다양한 수정들 및 대안적인 형태들에 영향을 받기 쉽지만, 그 특정 실시 예들은 도면들에서 예로서 도시되고 여기에서 상세히 설명될 것이다. 그러나, 본 발명을 개시된 특정 형태로 제한하고자 하는 의도는 없지만 반대로, 본 발명은 본 발명의 사상 및 범위 내에 있는 모든 변형, 등가물 및 대안을 포함하는 것으로 이해되어야 한다.
GTP 코드를 인코딩하기 위한 본 발명의 일 실시 예에 따른 스킴은 몇몇 상이한 정정 성능(correction capabilities)을 갖는 여러 BCH 코드 워드들("프레임")을 본 명세서에서 GTP 코드 워드로 지칭되는 단일 코드 워드로 연결하고, 프레임들은 리드 솔로몬 코드 워드(Reed Solomon code words)를 사용하여 연결되어 상호 정정 성능을 달성한다. 상술한 BCH 코드 워드들 사이의 연결을 형성하기 위해, 각 프레임, 즉 BCH 단일 코드 워드에 부가된 이진 시퀀스(binary sequence)는 본 명세서에서 y_vec로 지칭된다. GF(2)에서 이진 시퀀스는 각 프레임에 대해 XOR 될 수 있다.
유한체 F에 대한 길이 n과 차원(dimension) k의 선형 코드 C에 대해 가 C의 패리티 검사 행렬이고 이 어떤 벡터인 경우, 신드롬 H에 관한 y의 신드롬은 로 정의된다.
길이가 이고 설계된(designed) 보정 반경(correction radius)이 t인 원시 이진(primitive binary) BCH 코드를 BCH(m, t)라 한다. C가 BCH(m, t) 또는 단축된(shortened) BCH(m, t)이면 일반적으로 n-k = mt 이므로, 신드롬은 일반적으로 mt 이다. 사실, BCH 코드의 경우 매우 특정한 패리티 검사 행렬에 대한 신드롬을 계산하는 것이 유용하다. 를 원시 요소(primitive element)라 하자. C를 위와 같이하고, n을 C의 길이라고 하자. 벡터 에 대해, 는 연관된 다항식(associated polynomial)이라 하자.
두 개의 보정 반경 이 있다고 가정한다. 그러면 임의의 y에 대해서, 는 의 첫 번째 t1 엔트리로 나타난다. 의 나머지 t2 - t1 엔트리는 델타 신드롬 벡터(delta syndrome vector)라 지칭된다. 델타 신드롬 벡터의 각 엔트리는 (단일) 델타 신드롬으로 지칭된다. 일 때, 의 첫 번째 t1 엔트리는 0이다. 또한 GF(2m)의 각 원소(element)는, 특히 신드롬의 각 엔트리에서, GF(2)에 대한 GF(2m)의 기저(basis)가 고정되면 m 비트 이진 벡터로 나타낼 수 있다.
각각의 GTP 프레임은 BCH 프레임이며, 각각은 상이한 정정 능력(correction capability)을 가질 수 있다. 실시 예에 따르면, ti는 스테이지 번호 i에 속하는 BCH 프레임의 정정 능력이며, 여기서 스테이지는 동일한 정정 능력을 갖는 연속적인 BCH 프레임의 수를 정의한다.
본 발명의 일 실시예에 따른 GTP 프로젝티드 인코딩(GTP projected encoding) 방식은 본 명세서에서 프로젝티드 데이터(projected data)로도 지칭되는 추가 데이터가, 정보 및 패리티 데이터와 함께 BCH 프레임 내에서 인코딩될 것을 요구할 수 있다. 이는 델타 신드롬 벡터에 대해 이진 벡터(여기서는 'y_vec'라고 함)를 계산하고 이를 해당 BCH 프레임과 XOR(배타적 논리합)함으로써 수행된다.
y_vec 계산 y= Uㆍs 에 사용되는 사소한 행렬(trivial matrices)은 크고, 따라서, 큰 하드웨어 영역이 필요하다. 여기서 U는 아래에 정의된다. 각각의 내부 't'는 더 많은 코드 레이트와 코딩 스테이지를 필요로 하는 자체 행렬을 필요로 하며, 이는 인코더의 복잡성을 증가시킨다.
실시예들에 따르면, 추가된 y_vec는 3 개의 조건들을 충족시킨다: (1) 그것은 제 1 스테이지의 BCH 코드 내의 BCH 코드 워드이고; (2) y_vec의 델타 신드롬의 계산은 하위 스테이지 프레임들에서 계산된 리드 - 솔로몬 (RS) 코드 워드의 패리티 심볼을 산출하고; (3) y_vec는 BCH 프레임의 체계적인 구조를 유지하기 위해 첫 번째 ki 비트에서 모두 0이며, ki는 i 번째 BCH 프레임의 정보 비트 수이다.
도 3은 본 발명의 실시 예들에 따른 예시적인 GTP 워드 및 델타 신드롬 (DS: delta syndromes) 테이블들을 도시한다. 특히, 왼쪽 테이블은 4 스테이지에 걸쳐 11 개의 프레임을 가지는 GTP 코드 워드의 예를 나타낸다. 테이블의 최상부로부터 시작하여, 처음 3 개의 프레임은 스테이지 0에 속하므로, 각 프레임은 t0 비트의 정정 능력을 갖는 n 비트 BCH 코드 워드이다. 이 스테이지에서 각 BCH 코드워드는 K0 정보 비트(information bits)(11) 및 L0 = mt0 패리티 비트(parity bits)(12)를 포함한다. 더 높은 단계의 경우, 정정 능력이 높아지므로 프레임 당 패리티 비트가 많고 정보 비트 수가 적다. 따라서, 테이블에 도시된 바와 같이, 스테이지 1은 K1 정보 비트 및 L1 패리티 비트를 가지며, 스테이지 2는 K2 정보 비트 및 L2 패리티 비트를 가지며, 스테이지 3은 K3 정보 비트 및 L3 패리티 비트를 갖는다. K0> K1> K2> K3, L0 <L1 <L2 <L3이며 i = 0에서 3까지에 대해서, Ki + Li = n이다.
오른쪽 테이블은 11 개의 프레임에 대한 델타 신드롬(DS) 테이블이다. 이 예에서 각 프레임에 대해 4 개의 델타 신드롬 ΔSji가 있다. 여기서 j는 프레임 번호이고 i는 델타 신드롬 번호이다(인덱스는 0부터 시작함). DS들(13)은 프레임에 대해 계산되고, DS들(14)는 리드 솔로몬(RS: Reed Solomon) 인코딩에 의해 계산된 "강제(forced)" DS들이다. 예를 들어, 첫 번째 DS의 경우 처음 3 개 프레임에서 계산된 3 개의 DS가 있으며, 이들은 8 개의 패리티 심볼 (다음 프레임에 대한 강제 DS로 사용됨)을 가진 RS 코드의 정보로 사용된다.
실시예에 따르면, 상술한 바와 같이, 프레임 당 y_vec 계산기 모듈로의 입력은 복수의 DS들이다. 일 실시 예에 따른 y_vec는 그것이 부가된 프레임을 t0 정정 능력을 갖는 코드 C0의 코드 워드로 하고 그 DS가 RS 코드의 대응하는 패리티 심볼에 부합하도록 할 수 있다.
단지 2 개의 스테이지들, 즉, 보정 능력 t0을 갖는 코드 C0의 프레임들 및 보정 능력 t1을 갖는 코드 C1의 프레임들이 있는 간단한 구조에 대해, Δt1 = t1-t0 은 다음과 같을 수 있다.
[수학식 1]
여기서, H0의 행(row) 수는 , 의 행 수는 , 는 강제 델타 신드롬(forced delta syndromes)의 벡터, 즉 RS 패리티 심볼이며, 각 는 m 비트이다. 는 C1의 코드 워드이므로 전체 H 행렬에 대해 제로(0) 신드롬을 가지며 는 C0에만 있으므로 H0에 대해 0 신드롬을 갖지만 에 대해서는 0이 아닌(non-zero) 델타 신드롬을 갖는다. 또한, 를 에 추가해도 의 체계적인 특성(systematic nature)은 변하지 않는다. 즉, 는 마지막 비트들을 제외하고 모두 0: 이어야 한다.
[수학식 2]
일 실시예에 따르면, 행렬 U는 다음과 같이 발견될 수 있다. 첫째, 일 실시 예에 따른 코드는 주기적(cyclic)이기 때문에, 다음과 같은 행렬 U가 존재한다.
[수학식 3]
수학식 1의 왼쪽과 오른쪽 모두에 U를 곱하여 다음 식을 생성할 수 있다.
따라서,
A는 단지 0을 곱하므로, 따라서 실제 값은 중요하지 않으며, 이 방정식은 다음과 같이 된다.
[수학식 4]
이는 원하는 결과이다. 수학식 3으로 돌아가서, A가 부적합하다는 것을 알면 방정식은 다음과 같이 공식화될 수 있다.
이 때 행렬 U는 이진 행렬(binary matrix)이다. 실시 예들에 따르면, U는 오프라인으로 계산될 수 있고, XOR 게이트들의 네트워크에 의해 하드웨어로 구현될 수 있다. 즉, 벡터 의 각 비트는 의 몇 비트를 XOR함으로써 생성될 수 있다. 그러나 U는 매우 클 수 있다.
수학식 2를 다시 살펴보면, U가 mt0 개의 0을 곱하고 있으므로, 완전한 U 행렬을 유지할 필요가 없고, U의 오른쪽인 크기 의 행렬 만을 유지하는 것으로도 충분하다는 것을 알 수 있다. 하드웨어(HW) 관점에서 보았을 때 이것은 복잡성을 줄이거나 명시적으로 하드웨어 면적(게이트 수) 및 전력을 줄이는 것이다.
[수학식 5]
도 4는 y_vec 계산 의 하드웨어 구현 예를 도시한다. 예를 들어, 도 3에서 첫 번째 y_vec는 네 번째 프레임에 대해 계산되고, 이다. 도 4는 y_vec 계산 블록의 개략도이다.
입력은 현재 스테이지에 따라 디멀티플렉서(22)에 의해 상이한 곱셈 모듈(23a, ..., 23n)로 디멀티플렉싱되는 S_vec로 표시된 강제 DS(forced DS)이며, 곱셈 모듈로부터의 출력은 멀티플렉서(24)에 의해 단일 출력으로 다시 멀티플렉싱된다. S_vec는 크기와 데이터에 따라 프레임마다 다르다. 각각의 곱셈 모듈(23a, ..., 23n)은 행렬 곱셈의 하나의 성분을 실현하는 논리 함수(logic function)이다.
H1은 신드롬 행렬이므로 U의 (제로 패딩된) 열(zero-padded columns)을 코드 C1의 코드 워드로 "확인(checking)"하는 것으로 볼 수 있다. 다항식의 계수로서 U의 단일 열을 살펴보면, 그러한 다항식은 이 코드를 생성하는 모든 최소 다항식의 배수인 BCH 코드 C1의 코드 워드가 된다. 그러나 곱셈 는 0 행렬이 아니므로 (각 결과 열(result column)에 '1'이 하나씩 있음), U의 어떠한 열(column)도 C1의 코드 워드가 아니다. 그럼에도 불구하고, H1의 모든 m 행(row)은 다항식이 특정 최소 다항식으로 나눌 수 있는지를 검사하기 때문에, 다항식으로 취급되는 U의 모든 열은 단일 최소 다항식을 제외한 코드를 생성하는 모든 최소 다항식으로 나눌 수 있음을 의미한다.
제로 행렬은 크기가 이며, 이는 다항식으로 취급되는 의 모든 열이 t0까지의 모든 최소 다항식의 배수(multiples)이고, 하나를 제외한 모든 상위 다항식의 배수임을 의미한다. 실시예에 따르면, t0까지의 모든 최소 다항식의 승수(multiplier)는 로 지칭될 것이고, 이것은 의 모든 열의 공통 승수이다.
수학식 5로부터, 다음 수학식이 도출된다.
[수학식 6]
[수학식 7]
따라서, 실시예들에 따르면, 행렬 는 크기 의 새로운 행렬 U'로 대체될 수 있으며, 이 행렬의 행들(columns)은 수학식 7을 사용하여 오프라인으로 계산될 수 있다. 이 행렬은 U'에 비하여 복잡성이 훨씬 줄어든다.
부가적인 컨볼루션은 다중 사이클 구현에 의해 매우 낮은 복잡도로 수행될 수 있으며, 따라서 추가된 복잡성은 무시할 수 있다.
따라서, 실시 예들에 따르면, 결과 는 다음의 2 단계로 달성될 수 있다: (1) ; 및 (2) . 이 결과는 다음과 같은 특성을 갖는다: (1) U' 행렬은 원래의 U 행렬보다 상당히 작다. (2) 는 모든 U' 행렬에 공통인 다항식이다. (3) 에 의한 곱셈 또한 행렬, 즉 XOR 게이트 네트워크로서 구현될 수 있다. 더욱이, 에 의한 곱셈은 다중 사이클 포맷으로 구현될 수 있으며, 이는 다중 클락 주기(multipleclock periods)에 걸쳐 작은 HW의 재사용을 가능하게 하여 매트릭스 크기를 더욱 감소시킨다.
도 5는 전술 한 바와 같이 2 단계(phase)으로 분할된 y_vec 계산의 실시 예의 예시적인 하드웨어 구현을 도시한다. 도 5의 하드웨어 구성은, 도 4의 하드웨어 구성과 실질적으로 유사하다. 따라서, 구성 간의 차이점만을 설명한다. 디멀티플렉서(24)의 출력은 tmp이고, 일 실시예에 따른 컨볼루션 는 블록(35)에 의해 구현된다. 일 실시예에 따른 컨볼루션은 유한 임펄스 응답(FIR: finite impulse response) 필터이며, 따라서, 단일 클럭 사이클 대신에 상태(메모리) 레지스터를 사용하여 수 클록 사이클(several clock cycles)에서 수행될 수 있다. 이는 더 작은 논리 함수를 사용할 수 있게 한다.
본 발명의 실시예들은 의 0 부분만을 이용한다. 그러나, 상술한 바와 같이, 결과는 형식이므로 결과 열들(result columns)의 더 일반적인 특성이 있다: m 열의 모든 배치(batch)는, 위와 같이, 의 승수이지만 하나를 제외하고 다른 모든 최소 다항식의 승수이다.
실시예에 따르면, 이는 다음과 같이 수식화될 수 있다:
그리고, 실시 예에 따른 최종 공식이 얻어진다:
본 발명의 다른 실시 예에 따르면, 계산은 3 개의 단계로 분할된다:
제 1 섹션에서, 각각의 델타 신드롬(delta syndrome)은 자신의 오프라인 계산된 행렬 Hj에 의해 곱해진다. 제 3 섹션은 도 5에 도시된 실시예에서 설명된 것과 동일하다. 다른 실시 예에 따른 제 2 섹션은 곱셈(multiplication) 및 합산(summation)을 결합한다. 이 스테이지에 참여하는 모든 델타 신드롬에 대해 각 하드웨어 단계에는 고유한 H 및 M 행렬이 필요하다.
즉, 스테이지 i와 j에서 DS1을 사용할 때 DS1에 대해 다른 하드웨어가 있다. 계수 벡터(coefficient vectors)에 의해 표현되는 2 개의 다항식의 곱셈은 다음과 같이 다중 사이클 연산으로 구현될 수 있다:
및
이진 다항식의 경우, xj 에 의한 곱셈은 j 만큼 왼쪽으로의 시프트(shift left)이므로, 2 개의 다항식의 곱셈은 하나의 다항식의 각 비트에 대응하는 시프트를 갖는 다른 다항식을 가산함으로써 구현될 수 있다. 따라서 첫 번째 사이클에서 의 (MSB)의 계수에 가 곱해지고, 두 번째 사이클에서 에 의한 의 계수의 곱셈에서 1 비트만큼 우측으로 시프트된 비트에 가산된다. 이와 같은 식으로, 의 결과를 얻는다.
j에 대한 합(sum)이 필요하기 때문에, 행렬 형식으로도 동일하게 수행할 수 있다. 즉, 모든 Mj를 열(columns)로 연결(concatenation)한 행렬 G를 정의하고, m 사이클 동안 각 사이클 i에서 G에 벡터 를 곱하고, 그것을 i 비트만큼 오른쪽으로 시프트된 결과에 더한다. 여기서, 는 의 xi의 계수로 정의된다.
도 6은 전술 한 바와 같이 3 단계로 분할 된 y_vec 계산의 일 실시 예의 하드웨어 구현 예를 도시한다. 그러나, 본 발명의 실시 예는 임의의 수의 단계를 포함할 수 있다. 도면에서 N은 스테이지 수, m은 GF(2m)에 대한 이진 BCH 코드이며 dtn = tn - t0 이다. 또한, 명확성을 위해, 좌측의 블록들만이 참조 번호를 갖는다.
이 도면은 G에 의한 곱셈이 m 사이클들에서 수행되는 하드웨어 구성을 보여주는데, 여기서 각 사이클에 대한 입력은 각 레지스터로부터의 1(one) 비트이고, 비트들은 사이클 번호에 따라 선택된다. 각 사이클에 대해 출력 비트는 이전 사이클과 관련된 하나의 시프트와 합산된다.
도면을 참조하면, 블록(41)은 dtN-1 신드롬 벡터의 각각의 구성(components)을 나타내며, 블록 (42)은 합산 을 나타내며, 그 출력은 레지스터들(43)에 저장되고, 블록들(44)은 m 개의 시프트들을 갖는 합산 을 나타내고, 전술한 바와 같이, 그 결과가 합산되어 레지스터(46)에 저장되고, 블록(47)은 멀티플렉서이고, 블록(48)은 전술한 바와 같이 멀티 사이클 동작에서 수행될 수 있는 에 의한 최종 곱셈을 나타낸다.
시스템 구현들
본 발명은 하드웨어, 소프트웨어, 펌웨어, 특수 목적 처리 또는 이들의 조합의 다양한 형태로 구현될 수 있음을 이해해야 한다. 일 실시 예에서, 본 발명은 application-specific integrated circuit(ASIC) 또는 field programmable gate array(FPGA)와 같은 하드웨어로 구현될 수 있다. 다른 실시 예에서, 본 발명은 컴퓨터 판독 가능한 프로그램 저장 장치 상에 유형적으로 구현된 애플리케이션 프로그램과 같은 소프트웨어로 구현될 수 있다. 상기 애플리케이션은 임의의 적절한 구조를 포함하는 기계로 업로드되고 실행될 수 있다.
도 7은 본 발명의 일 실시 예에 따른, 일반화된 텐서 곱 코드(GTP codes: generalized tensor product codes)를 효율적으로 부호화하기 위한 시스템의 블록도이다.
도 7을 참조하면, 본 발명의 일 실시 예를 구현하기 위한 컴퓨터 시스템(51)은 중앙 처리 장치(CPU: central processing unit)(52), 메모리(53) 및 입출력(I/O: input/output) 인터페이스(54)를 포함할 수 있다. 컴퓨터 시스템(51)은 일반적으로 I/O 인터페이스(54)를 통해 디스플레이 (55) 및 마우스와 키보드 같은 다양한 입력 장치(56)에 연결된다.
지원 회로(supportcircuits)는 캐시(cache), 전원 공급 장치, 클락 회로 및 통신 버스와 같은 회로를 포함할 수 있다. 메모리(53)는 RAM(random access memory), ROM(read only memory), 디스크 드라이브(disk drive), 테이프 드라이브(tape drive) 등, 또는 이들의 조합을 포함할 수 있다. 본 발명은 신호 소스(58)로부터 출력되는 신호를 처리하기 위해 메모리(53)에 저장되고 CPU(52)에 의해 실행되는 루틴(57)으로서 구현될 수 있다.
이와 같이, 컴퓨터 시스템(51)은 본 발명의 루틴(routine, 57)을 실행할 때 특정 목적의 컴퓨터 시스템이 되는 범용 컴퓨터 시스템이다. 대안적으로, 전술한 바와 같이, 본 발명의 실시예는 신호 소스(58)로부터 출력되는 신호를 처리하기 위해 CPU(52)와 신호 통신하는 ASIC 또는 FPGA(51)로서 구현될 수 있다.
컴퓨터 시스템(51)은 운영 체제 및 마이크로 명령 코드를 포함한다. 본 명세서에서 설명된 다양한 프로세스 및 기능은 운영 체제를 통해 실행되는 마이크로 명령어 코드의 일부 또는 애플리케이션 프로그램의 일부(또는 이들의 조합)일 수 있다. 또한, 추가적으로 데이터 저장 장치 및 인쇄 장치와 같은 다양한 다른 주변 장치가 컴퓨터 플랫폼에 연결될 수 있다.
첨부 도면들에 도시된 구성 시스템 요소들과 방법 단계들의 일부는 소프트웨어로 구현될 수 있기 때문에, 시스템 구성요소들 (또는 프로세스 단계들) 사이의 실제 연결들은 본 발명이 프로그램되는 방식에 따라 다를 수 있음이 추가로 이해되어야 한다. 여기에 제공된 본 발명의 개시가 주어지면, 당업자는 이들 및 유사한 구현 또는 본 발명의 구성들을 고려할 수 있을 것이다.
본 발명은 실시 예들을 참조하여 상세히 설명하였지만, 당업자는 다양한 변형과 대체가 첨부된 청구범위에 기재된 본 발명의 사상 및 범위를 벗어나지 않고 이루어질 수 있다는 것을 이해할 것이다.
11; 정보 비트(information bits)
12; 패리티 비트(parity bits)
13, 14; 델타 신드롬(DS)
22; 디멀티플렉서
23a, ..., 23n; 곱셈 모듈
24; 멀티플렉서
51; 컴퓨터 시스템
52; 중앙 처리 장치(CPU: central processing unit)
53: 메모리
54; 입출력(I/O: input/output) 인터페이스
55; 디스플레이
56; 입력 장치
12; 패리티 비트(parity bits)
13, 14; 델타 신드롬(DS)
22; 디멀티플렉서
23a, ..., 23n; 곱셈 모듈
24; 멀티플렉서
51; 컴퓨터 시스템
52; 중앙 처리 장치(CPU: central processing unit)
53: 메모리
54; 입출력(I/O: input/output) 인터페이스
55; 디스플레이
56; 입력 장치
Claims (10)
- N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 이진 BCH 코드워드(BCH codeword)로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하기 위한 컴퓨터로 구현되는 방법에 있어서,
상기 컴퓨터로 구현되는 방법은,
통신 채널로부터 필드 GF(2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드를 수신하는 단계;
길이 m 비트의 Δt 신드롬들을 포함하는 상기 새로운 스테이지 0 이진 BCH 코드워드의 신드롬 벡터 를 수신하는 단계- 여기서, Δt = tn - t0 이고, t0 는 스테이지 0 이진 BCH 코드워드의 에러 정정 능력이고, tn은 새로운 이진 BCH 코드워드 가 부가될 스테이지 n 이진 BCH 코드워드의 에러 정정 능력이고, 상기 신드롬 벡터 는 정보 심볼(information symbols)이 스테이지 0 내지 스테이지 n-1까지의 모든 이진 BCH 코드워드의 델타 신드롬인 Δt 리드-솔로몬(RS: Reed-Solomon) 코드워드의 l번째 RS 심볼을 포함하며, l은 새로운 이진 BCH 코드워드 가 부가될 이진 BCH 코드워드의 인덱스임-; 및
상기 신드롬 벡터 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계- 여기서, 상기 행렬 U는 tn에 의해 정의된 이진 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 부분 행렬 는 의 크기를 가지며, 상기 새로운 이진 BCH 코드워드 는 임-;를 포함하는 방법. - 제1항에 있어서, 상기 신드롬 벡터 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계는,
단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수(binary logic function)에 의해 우측 부분 행렬 의 성분(component)으로 상기 신드롬 벡터 의 각 성분을 곱하여 성분 곱(component product)을 산출하는 단계; 및
새로운 이진 BCH 코드워드 를 나타내는 단일 출력으로 상기 성분 곱을 다중화하는 단계를 포함하며,
상기 우측 부분 행렬 는 새로운 이진 BCH 코드워드 의 신드롬 벡터 를 수신하기 전에 계산되는 방법. - 제1항에 있어서, 상기 신드롬 벡터 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계는,
단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수에 의해, 감소된 부분 행렬 의 성분으로 상기 신드롬 벡터 의 각 성분을 곱하여, 성분 곱(component product)을 산출하는 단계-여기서, 상기 감소된 부분 행렬 는 로 정의되고, 부분 행렬들 및 우측 부분 행렬 의 칼럼들(columns)은 다항식으로 표현되고, 부분 행렬 를 공통 승수 로 나눈 칼럼인 감소된 부분 행렬 의 각 칼럼은, 새로운 이진 BCH 코드워드 의 신드롬 벡터 를 수신하기 전에 계산됨-;
상기 성분 곱(component product)을 임시 출력으로 멀티플렉싱하는 단계; 및
새로운 이진 BCH 코드워드 를 나타내는 단일 출력을 생성하기 위해 공통 승수 로 임시 출력을 컨벌루션하는 단계-여기서, 공통 승수 는 다항식으로 표현된 부분 행렬 의 모든 칼럼의 공통 승수(common multiplier)이고, 새로운 이진 BCH 코드워드 의 신드롬 벡터 를 수신하기 전에 계산됨 -를 포함하는 방법. - 제1항에 있어서, 상기 신드롬 벡터 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계는,
m 개의 다항식들 을 칼럼(column)으로서 연결(concatenation)하여 형성된 행렬 Hj 로 상기 신드롬 벡터 를 곱함으로써 다항식 hj(x) 를 계산하는 단계- 여기서, 다항식 이고,, 은 상기 우측 부분 의 컬럼이며, 이며, 는 t1의 정정 능력을 갖는 이진 BCH 코드 C1의 i 번째 최소 다항식이며, 새로운 이진 BCH 코드워드 의 신드롬 벡터 를 수신하기 전에 계산됨-;
다항식 hj(x)에 Mj(x)를 곱하고, j = 0 내지 Δt-1 에 대해 합산하는 단계;
곱 hj(x)×Mj(x) 의 합을 임시 출력으로 멀티플렉싱하는 단계; 및
새로운 이진 BCH 코드워드 를 나타내는 단일 출력을 생성하기 위해 공통 승수 로 임시 출력을 컨벌루션하는 단계-여기서, 공통 승수 는 다항식으로 표현된 부분 행렬 의 모든 칼럼의 공통 승수이고, 새로운 이진 BCH 코드워드 의 신드롬 벡터 를 수신하기 전에 계산됨 -를 포함하는 방법. - N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 이진 BCH 코드워드로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드워드를 생성하는 방법 단계들을 수행하기 위한 명령들의 프로그램을 실행하도록 구성된 컴퓨터 프로세서에 있어서,
상기 방법은,
통신 채널로부터 필드 GF (2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터( )를 수신하는 단계;
길이 m 비트의 Δt 신드롬들을 포함하는 상기 새로운 스테이지 0 이진 BCH 코드워드의 신드롬 벡터 를 수신하는 단계-여기서, Δt = tn - t0 이고, t0 는 상기 스테이지 0 이진 BCH 코드워드의 에러 정정 능력이고, tn은 새로운 이진 BCH 코드워드 가 부가될 스테이지 n 이진 BCH 코드워드의 에러 정정 능력이고, 상기 신드롬 벡터 는 정보 심볼(information symbols)이 스테이지 0 내지 스테이지 n-1까지의 모든 이진 BCH 코드워드의 델타 신드롬인 Δt 리드-솔로몬(RS: Reed-Solomon) 코드워드의 l번째 RS 심볼을 포함하며, l은 새로운 이진 BCH 코드 워드 가 부가될 이진 BCH 코드워드의 인덱스임-; 및
상기 신드롬 벡터 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계-여기서,상기 행렬 U는 tn에 의해 정의된 이진 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 부분 행렬 는 를 가지며, 상기 새로운 이진 BCH 코드 워드 는 임-;를 포함하는 컴퓨터 프로세서. - 제8항에 있어서, 상기 신드롬 벡터 를 행렬 U의 우측 부분 행렬 (submatrix)에 의해 곱하는 단계는,
단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수(binary logic function)에 의해 부분 행렬 U의 성분(component)으로 상기 신드롬 벡터 의 각 성분을 곱하여 성분 곱(component product)을 산출하는 단계; 및
새로운 이진 BCH 코드워드 를 나타내는 단일 출력으로 상기 성분 곱을 다중화하는 단계를 포함하며,
상기 부분 행렬 는 새로운 이진 BCH 코드워드 의 신드롬 벡터 를 수신하기 전에 계산되는 컴퓨터 프로세서.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/639,475 | 2017-06-30 | ||
US15/639,475 US10333554B2 (en) | 2017-06-30 | 2017-06-30 | Efficient generalized tensor product codes encoding schemes |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190003315A KR20190003315A (ko) | 2019-01-09 |
KR102519667B1 true KR102519667B1 (ko) | 2023-04-07 |
Family
ID=64738399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180017172A KR102519667B1 (ko) | 2017-06-30 | 2018-02-12 | 일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10333554B2 (ko) |
KR (1) | KR102519667B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10860419B2 (en) * | 2018-12-28 | 2020-12-08 | Intel Corporation | Minimal aliasing bit-error correction code |
US11184026B2 (en) | 2019-03-13 | 2021-11-23 | Samsung Electronics Co., Ltd. | Super-HPC error correction code |
US11742879B2 (en) | 2019-03-13 | 2023-08-29 | Samsung Electronics Co., Ltd. | Machine-learning error-correcting code controller |
US12119840B2 (en) | 2019-03-13 | 2024-10-15 | Samsung Electronics Co., Ltd. | Machine-learning error-correcting code controller |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9065483B2 (en) * | 2013-01-21 | 2015-06-23 | Micron Technology, Inc. | Determining soft data using a classification code |
-
2017
- 2017-06-30 US US15/639,475 patent/US10333554B2/en active Active
-
2018
- 2018-02-12 KR KR1020180017172A patent/KR102519667B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US20190007062A1 (en) | 2019-01-03 |
US10333554B2 (en) | 2019-06-25 |
KR20190003315A (ko) | 2019-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102519667B1 (ko) | 일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치 | |
US7543212B2 (en) | Low-density parity-check (LDPC) encoder | |
RU2008148940A (ru) | Способ и устройство кодирования с исправлением ошибок | |
KR20180085651A (ko) | 리스트 디코딩 생성을 통한 이진 bch 코드들의 bm-기반 빠른 체이스 디코딩에서 빠른 다항식 업데이트를 위한 방법을 수행하기 위한 asic | |
Xie et al. | Reduced-complexity key equation solvers for generalized integrated interleaved BCH decoders | |
US20060090119A1 (en) | System and method for implementing a Reed Solomon multiplication section from exclusive-OR logic | |
US9337869B2 (en) | Encoding and syndrome computing co-design circuit for BCH code and method for deciding the same | |
US9065482B1 (en) | Circuit for forward error correction encoding of data blocks | |
EP2309650B1 (en) | A systematic encoder with arbitrary parity positions | |
JP3447053B2 (ja) | 組み合わせ回路、該組み合わせ回路を使用する符号化装置、復号装置、および半導体デバイス | |
JP2002335167A (ja) | 復号回路、該復号回路を用いる復号装置、復号方法および半導体デバイス | |
Zhang | VLSI architectures for Reed–Solomon codes: Classic, nested, coupled, and beyond | |
Li et al. | Modified GII-BCH codes for low-complexity and low-latency encoders | |
KR102532623B1 (ko) | Raid에 맞춤화된 bch 인코딩 및 디코딩 방법, 및 그 장치 | |
US9467173B2 (en) | Multi-code Chien's search circuit for BCH codes with various values of m in GF(2m) | |
Zhang et al. | Ultra-compressed three-error-correcting BCH decoder | |
Mondal et al. | Efficient hardware design architectures for BCH product codes in the frequency domain | |
Barbosa et al. | FPGA implementation of a Reed-Solomon CODEC for OTN G. 709 standard with reduced decoder area | |
Ji | An optimized processor for fast Reed-Solomon encoding and decoding | |
JP6336547B2 (ja) | 訂正信号を決定する回路構成及びその方法 | |
Hu et al. | Low complexity parallel Chien search architecture for RS decoder | |
TWI538414B (zh) | 用於多模式bch碼編碼的方法及使用該方法的編碼器 | |
Chang et al. | VLSI architecture of modified Euclidean algorithm for Reed–Solomon code | |
Tang et al. | Efficient Reconfigurable Vandermonde Matrix Inverter for Erasure-Correcting Generalized Integrated Interleaved Decoding | |
EP2434650A1 (en) | Reed-Solomon encoder with simplified Galois field multipliers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |