KR20130014484A - Coding and decording method and codec of error correction code - Google Patents

Coding and decording method and codec of error correction code Download PDF

Info

Publication number
KR20130014484A
KR20130014484A KR1020127002747A KR20127002747A KR20130014484A KR 20130014484 A KR20130014484 A KR 20130014484A KR 1020127002747 A KR1020127002747 A KR 1020127002747A KR 20127002747 A KR20127002747 A KR 20127002747A KR 20130014484 A KR20130014484 A KR 20130014484A
Authority
KR
South Korea
Prior art keywords
short
long
codewords
syndrome
zero
Prior art date
Application number
KR1020127002747A
Other languages
Korean (ko)
Other versions
KR101314232B1 (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 KR20130014484A publication Critical patent/KR20130014484A/en
Application granted granted Critical
Publication of KR101314232B1 publication Critical patent/KR101314232B1/en

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
    • 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

Abstract

에러 정정 코드의 부호화 및 복호화 방법 및 코덱이 제공된다. 상기 방법은 원시 데이터를 수신하는 단계; 상기 원시 데이터를 다수의 데이터 블록들로 분할하는 단계; 제1생성 다항식에 따라서 데이터의 블록들에 대응하는 다수의 짧은 패리티들을 생성하는 단계; 상기 짧은 패리티들을 상기 데이터 블록들에 부가하여 다수의 짧은 코드워드들을 얻는 단계; 상기 짧은 코드워드들을 결합하여 코드 데이터를 얻는 단계; 제2생성 다항식에 따라서 상기 코드 데이터에 대응하는 긴 패리티를 생성하는 단계로서, 상기 제1생성 다항식은 상기 제2생성 다항식의 적어도 하나의 최소 다항식의 함수인, 생성 단계; 및 상기 긴 패리티를 상기 코드 데이터에 부가하여 상기 원시 데이터에 대응하는 에러 정정 코드로서 긴 코드워드를 얻는 단계를 포함한다. 상기 방법은 에러 코드들을 정정하기 위한 시간을 감소시켜, 상기 디코더의 효율을 개선시킨다.A method and codec for encoding and decoding an error correction code are provided. The method includes receiving raw data; Dividing the raw data into a plurality of data blocks; Generating a plurality of short parities corresponding to blocks of data according to the first generation polynomial; Adding the short parities to the data blocks to obtain a plurality of short codewords; Combining the short codewords to obtain code data; Generating a long parity corresponding to the code data according to a second generation polynomial, wherein the first generation polynomial is a function of at least one minimum polynomial of the second generation polynomial; And adding the long parity to the code data to obtain a long codeword as an error correction code corresponding to the raw data. The method reduces the time for correcting error codes, improving the efficiency of the decoder.

Description

에러 정정 코드의 부호화 및 복호화 방법 그리고 코덱{CODING AND DECORDING METHOD AND CODEC OF ERROR CORRECTION CODE}CODEC AND AND DECORDING METHOD AND CODEC OF ERROR CORRECTION CODE

본 발명은 통신에 관한 것이며, 보다 상세하게는, 에러 정정 코드들의 부호화 및 복호화에 관한 것이다.The present invention relates to communication, and more particularly, to encoding and decoding error correction codes.

데이터가 에러 정정 코드로 변환된 후, 에러들이 에러 정정 코드에서 발생되는 경우, 에러가 없는 데이터가 에러 정정 코드의 패리티에 따라서 복원될 수 있다. 통신 시스템에서 송신기의 데이터는 종종 부호화되어 통신 시스템의 수신기로 전송될 에러 정정 코드를 얻는다. 통신 시스템의 수신기가 에러 정정 코드를 수신한 후, 전송 과정 중에 에러들이 에러 정정 코드에서 발생한 경우, 수신기는 수신된 에러 정정 코드의 에러들을 정정하고 나서, 에러 없이 데이터를 복원할 수 있다. 유사하게는, 데이터 저장 시스템은 종종 데이터를 부호화하여 저장 매체에 저장될 에러 정정 코드를 얻는다. 저장 매체에 저장된 에러 정정 코드에서 에러들이 발생할 때, 데이터 저장 시스템은 에러 정정 코드를 복호화하여 에러 없이 데이터를 복원시킨다. 에러 정정 코드는 BCH(Bose, Ray-Chandhuri and Hocquenghem) 코드 또는 RS(Reed-Solomon) 코드일 수 있다. 플래시 메모리에 저장될 데이터는 종종 BCH 코드로 변환되고 광학 디스크에 저장될 데이터는 종종 RS 코드로 변환된다.After the data is converted to the error correction code, if errors are generated in the error correction code, the data without errors can be restored according to the parity of the error correction code. In a communication system, the data of the transmitter is often encoded to obtain an error correction code to be sent to the receiver of the communication system. After the receiver of the communication system receives the error correction code, if errors occur in the error correction code during the transmission process, the receiver can correct the errors of the received error correction code and then restore the data without errors. Similarly, data storage systems often encode data to obtain error correction codes to be stored in the storage medium. When errors occur in the error correction code stored in the storage medium, the data storage system decodes the error correction code to restore the data without errors. The error correction code may be a BCH (Bose, Ray-Chandhuri and Hocquenghem) code or a RS (Reed-Solomon) code. Data to be stored in flash memory is often converted to BCH codes and data to be stored on optical discs is often converted to RS codes.

데이터 저장 시스템이 저장 매체로부터 에러 정정 코드를 검색한 후, 에러 정정 코드는 데이터 저장 시스템 내에 저장된 데이터를 복원하도록 복호화되어야 한다. 도 1은 에러 정정 코드를 복호화하기 위한 종래 방법(100)의 순서도를 도시한다. 먼저, 디코더는 에러 정정 코드를 수신한다(단계 102). 다음, 디코더는 에러 정정 코드의 패리티에 따라서 다수의 신드롬들(syndromes)을 계산한다(단계 104). 다음, 디코더는 신드롬들이 모두 0과 동일한지의 여부를 판단한다(단계 106). 모든 신드롬들이 0과 동일하다면, 에러 정정 코드에 에러가 발생되지 않으므로, 정정을 필요로 하지 않는다. 일부 신드롬들이 0과 동일하지 않다면, 에러 정정 코드에 에러가 발생되므로, 에러 정정 코드는 정정되어야 한다. 먼저, 디코더는 신드롬들에 따라서 에러 탐색 다항식의 다수의 계수들을 계산한다(단계 108). 다음, 디코더는 치엔(Chien) 검색을 수행하여 에러 탐색 다항식의 계수들에 따른 에러 탐색 다항식의 다수의 근들을 찾는다(단계 110). 에러 탐색 다항식의 근들이 에러 정정 코드에서 에러 비트들의 위치들을 나타내기 때문에, 디코더는 근들에 따라서 에러 정정 코드의 에러 비트들을 정정할 수 있다면(단계 112), 에러 없이 에러 정정 코드를 얻을 수 있다.After the data storage system retrieves the error correction code from the storage medium, the error correction code must be decrypted to restore the data stored in the data storage system. 1 shows a flowchart of a conventional method 100 for decoding an error correction code. First, the decoder receives an error correction code (step 102). The decoder then calculates a number of syndromes according to the parity of the error correction code (step 104). The decoder then determines whether the syndromes are all equal to zero (step 106). If all syndromes are equal to 0, no error is generated in the error correction code, so no correction is required. If some syndromes are not equal to zero, an error occurs in the error correction code, so the error correction code must be corrected. First, the decoder calculates a number of coefficients of the error search polynomial according to the syndromes (step 108). The decoder then performs a Chien search to find a plurality of roots of the error search polynomial according to the coefficients of the error search polynomial (step 110). Since the roots of the error search polynomial represent the positions of the error bits in the error correction code, the decoder can obtain the error correction code without error if it is able to correct the error bits of the error correction code in accordance with the roots (step 112).

단계 108에서 에러 탐색 다항식의 계수들을 계산하기 위해선 장시간을 필요로 한다. 단계 110에서 치엔 검색을 수행함으로써 에러 탐색 다항식의 근들을 계산하는데에도 마찬가지로 장시간을 필요로 한다. 종래 방법(100)에 따르면, 임의의 신드롬들이 0과 동일하지 않다면, 단계 108 및 단계 110가 수행되어 에러 정정 코드의 에러 비트들을 정정함으로써, 복호화 과정중에 지연을 초래하고 시스템 성능을 저하시킨다. 일부 신드롬들이 0과 동일하지 않다면, 단계 108 및 단계 110 각각에서 에러 탐색 다항식의 계수들 및 근들의 계산을 피하는 방법으로 에러 정정 코드가 정정되면, 복호화 과정의 지연 기간이 감소될 수 있고 디코더 및 데이터 저장 시스템의 성능이 개선될 수 있다. 따라서, 에러 정정 코드를 부호화 및 복호화하기 위한 새로운 방법이 필요로 된다.In step 108 it takes a long time to calculate the coefficients of the error search polynomial. By performing the Chien search in step 110, it takes a long time to calculate the roots of the error search polynomial. According to the conventional method 100, if any syndromes are not equal to zero, steps 108 and 110 are performed to correct the error bits of the error correction code, resulting in a delay during the decoding process and lowering system performance. If some syndromes are not equal to zero, if the error correction code is corrected in a way that avoids calculating the coefficients and roots of the error search polynomial in steps 108 and 110, respectively, the delay period of the decoding process can be reduced and the decoder and data The performance of the storage system can be improved. Thus, there is a need for a new method for encoding and decoding error correction codes.

종래 기술의 결점들을 극복하기 위하여, 에러 정정 코드의 부호화 및 복호화 방법 및 코덱이 제공된다.In order to overcome the drawbacks of the prior art, methods and codecs for encoding and decoding error correction codes are provided.

그러므로, 본 발명은 에러 정정 코드를 위한 부호화 및 복호화 방법을 제공한다. 먼저, 원시 데이터가 수신되고 다수의 데이터 세그먼트들로 분할된다. 다음에, 데이터 세그먼트들에 대응하는 다수의 짧은 패리티들은 제1생성 다항식에 따라서 생성된다. 이어서, 짧은 패리티들은 데이터 세그먼트들에 부가되어 다수의 짧은 코드워드들을 얻는다. 다음에, 짧은 코드워드들은 연결(concatenated)되어 코드 데이터를 얻는다. 이어서, 코드 데이터에 대응하는 긴 패리티는 제2생성 다항식에 따라서 생성되는데, 제1생성 다항식은 제2생성 다항식의 적어도 하나의 최소 다항식의 함수이다. 마지막으로, 긴 패리티는 코드 데이터에 부가되어 원시 데이터에 대응하는 에러 정정 코드로서 긴 코드워드를 얻는다.Therefore, the present invention provides an encoding and decoding method for an error correction code. First, raw data is received and divided into a number of data segments. Next, a plurality of short parities corresponding to the data segments are generated according to the first generated polynomial. Short parities are then added to the data segments to obtain a number of short codewords. Next, short codewords are concatenated to obtain code data. The long parity corresponding to the code data is then generated according to the second generated polynomial, wherein the first generated polynomial is a function of at least one minimum polynomial of the second generated polynomial. Finally, long parity is added to the code data to obtain a long codeword as an error correction code corresponding to the raw data.

상기 부호화 및 복호화 방법과 관련하여, 제1생성 다항식은 제2생성 다항식의 적어도 하나의 최소 다항식의 최소 공배수이다.In relation to the encoding and decoding method, the first generation polynomial is the least common multiple of at least one minimum polynomial of the second generation polynomial.

상기 부호화 및 복호화 방법은 저장 매체에 긴 코드워드를 저장시키는 단계를 더 포함한다.The encoding and decoding method further includes storing the long codeword in a storage medium.

상기 부호화 및 복호화 방법은 저장 매체로부터 긴 코드워드를 판독하는 단계; 긴 코드워드로부터 짧은 코드워드들을 검색하는 단계; 짧은 코드워드들의 짧은 패리티들에 따라서 짧은 코드워드들에 대응하는 다수의 짧은 신드롬들을 계산하는 단계; 짧은 신드롬들이 0과 동일한지의 여부를 판단하는 단계; 및 짧은 신드롬들이 비제로 짧은 신드롬들을 포함한다면, 비제로 짧은 신드롬들에 따라서 짧은 코드워드들을 정정하는 단계를 더 포함한다.The encoding and decoding method includes reading a long codeword from a storage medium; Retrieving short codewords from a long codeword; Calculating a plurality of short syndromes corresponding to the short codewords according to the short parities of the short codewords; Determining whether short syndromes are equal to zero; And if the short syndromes include nonzero short syndromes, correcting the short codewords according to the nonzero short syndromes.

상기 부호화 및 복호화 방법은 긴 코드워드의 긴 패리티에 따라서 긴 코드워드에 대응하는 긴 신드롬을 계산하는 단계; 긴 신드롬이 0과 동일한지의 여부를 판단하는 단계; 긴 신드롬이 0과 동일하지 않다면, 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정했는지의 여부를 판단하는 단계; 및 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정했다면, 비제로 짧은 코드워드들에 따라서 긴 신드롬을 정정하여 정정된 긴 신드롬을 얻는 단계를 더 포함한다.The encoding and decoding method includes calculating a long syndrome corresponding to the long codeword according to the long parity of the long codeword; Determining whether the long syndrome is equal to zero; If the long syndrome is not equal to zero, determining whether nonzero short codewords have successfully corrected corresponding short codewords; And if the nonzero short codewords have successfully corrected the corresponding short codewords, correcting the long syndrome according to the nonzero short codewords to obtain a corrected long syndrome.

부호화 및 복호화 방법은 긴 신드롬이 0과 동일하지 않고 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정하지 않았다면, 긴 신드롬에 따라서 짧은 코드워드들의 에러 있는 짧은 코드워드들을 정정하는 단계를 더 포함한다.The encoding and decoding method further comprises correcting erroneous short codewords of short codewords according to the long syndrome if the long syndrome is not equal to zero and the non-zero short codewords did not successfully correct the corresponding short codewords. Include.

상기 부호화 및 복호화 방법과 관련하여, 긴 코드워드 및 짧은 코드워드들은 BCH 코드들 또는 RS 코드들이다.In connection with the encoding and decoding method, the long codewords and the short codewords are BCH codes or RS codes.

본 발명은 또한 에러 정정 코드의 코덱을 제공한다. 일 실시예에서, 코더-디코더는 에러 정정 코드(ECC) 인코더 및 에러 정정 코드(ECC) 디코더를 포함한다. ECC 인코더는 원시 데이터를 수신하고, 원시 데이터를 다수의 데이터 세그먼트들로 분할하며, 데이터 세그먼트들에 대응하는 다수의 짧은 패리티들을 생성하고, 짧은 패리티들을 데이터 세그먼트들에 부가하여 다수의 짧은 코드워드들을 얻으며, 짧은 코드워드들을 연결하여 코드 데이터를 얻고 코드 데이터에 대응하는 긴 패리티를 생성하고, 긴 패리티를 코드 데이터에 부가하여 저장 매체에 저장될 에러 정정 코드로서 긴 코드워드를 얻는다. ECC 디코더는 저장 매체로부터 긴 코드워드를 판독하고, 긴 코드워드로부터 짧은 코드워드들을 검색하며, 짧은 코드워드들의 짧은 패리티들에 따라서 짧은 코드워드들에 대응하는 다수의 짧은 신드롬들을 계산하고, 짧은 신드롬들이 0과 동일한지의 여부를 판단하여, 짧은 신드롬들이 비제로 짧은 신드롬들을 포함한다면, 비제로 짧은 신드롬들에 따라서 짧은 코드워드들을 정정한다.The present invention also provides a codec of error correction code. In one embodiment, the coder-decoder includes an error correction code (ECC) encoder and an error correction code (ECC) decoder. The ECC encoder receives the raw data, splits the raw data into multiple data segments, generates a plurality of short parities corresponding to the data segments, and adds the short parities to the data segments to generate a plurality of short codewords. Obtain the code data by concatenating short codewords, generate long parity corresponding to the code data, and add the long parity to the code data to obtain the long codeword as an error correction code to be stored in the storage medium. The ECC decoder reads the long codeword from the storage medium, retrieves the short codewords from the long codeword, calculates a number of short syndromes corresponding to the short codewords according to the short parities of the short codewords, and the short syndrome Determines whether these are equal to 0, and if the short syndromes contain nonzero short syndromes, correct the short codewords according to the nonzero short syndromes.

상기 코덱과 관련하여, ECC 인코더는 제1생성 다항식에 따라서 데이터 세그먼트들에 대응하는 짧은 패리티들을 생성하고 제2생성 다항식에 따라서 코드 데이터에 대응하는 긴 패리티를 생성하는데, 제1생성 다항식은 제2생성 다항식의 적어도 하나의 최소 다항식의 함수이다.In relation to the codec, the ECC encoder generates short parities corresponding to the data segments according to the first generation polynomial and long parity corresponding to the code data according to the second generation polynomial, wherein the first generation polynomial is a second one. Is a function of at least one minimum polynomial of the generated polynomial.

상기 코덱과 관련하여, 제1생성 다항식은 제2생성 다항식의 적어도 하나의 최소 다항식의 최소 공배수이다.In the context of the codec, the first generated polynomial is the least common multiple of at least one minimum polynomial of the second generated polynomial.

상기 코덱과 관련하여, ECC 인코더는 제1생성 다항식에 따라서 데이터 세그먼트들에 대응하는 짧은 패리티를 생성하는 짧은 패리티 인코더; 짧은 패리티들을 데이터 세그먼트들에 부가하여 짧은 코드워드들을 얻는 제1부가 모듈; 짧은 코드워드들을 연결하여 코드 데이터를 얻고 제2생성 다항식에 따라서 코드 데이터에 대응하는 긴 패리티를 생성하는 긴 패리티 인코더; 및 긴 패리티를 코드 데이터에 부가하여 긴 코드워드를 얻는 제2부가 모듈을 포함한다.In relation to the codec, an ECC encoder includes: a short parity encoder for generating short parity corresponding to data segments according to a first generation polynomial; A first submodule, adding short parities to the data segments to obtain short codewords; A long parity encoder concatenating short codewords to obtain code data and generating long parity corresponding to the code data according to the second generation polynomial; And a second submodule, which adds a long parity to the code data to obtain a long codeword.

상기 코덱과 관련하여, ECC 디코더는 부가적으로, 긴 코드워드의 긴 패리티에 따라서 긴 코드워드에 대응하는 긴 신드롬을 계산하며, 긴 신드롬이 0과 동일한지의 여부를 판단하며, 긴 신드롬이 0과 동일하지 않다면, 비제로 짧은 코드워드들이 대응하는 짧은 코드들을 성공적으로 정정했는지의 여부를 판단하여, 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정했다면, 비제로 짧은 코드워드들에 따라서 긴 신드롬을 정정하여 정정된 긴 신드롬을 얻는다.In relation to the codec, the ECC decoder additionally calculates a long syndrome corresponding to the long codeword according to the long parity of the long codeword, determines whether the long syndrome is equal to zero, and the long syndrome is equal to zero. If not, it is determined whether the nonzero short codewords have successfully corrected the corresponding short codes, and if the nonzero short codewords have successfully corrected the corresponding short codewords, according to the nonzero short codewords. Correct the long syndrome to get the corrected long syndrome.

상기 코덱과 관련하여, 긴 신드롬이 0과 동일하지 않고 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정하지 않았다면, ECC 디코더는 긴 신드롬에 따라서 짧은 코드워드들의 에러 있는 짧은 코드워드들을 정정한다.With respect to the codec, if the long syndrome is not equal to zero and the non-zero short codewords did not successfully correct the corresponding short codewords, then the ECC decoder corrects the faulty short codewords of the short codewords according to the long syndrome. do.

상기 코덱과 관련하여, ECC 디코더는 짧은 코드워드들의 짧은 패리티들에 따라서 짧은 코드워드들의 짧은 신드롬들을 계산하고 긴 코드워드의 긴 패리티에 따라서 긴 코드워드의 긴 신드롬을 계산하는 신드롬 계산기; 및 짧은 신드롬들이 0과 동일한지의 여부를 판단하여, 짧은 신드롬들이 0과 동일하지 않으면, 비제로 짧은 신드롬들에 따라서 짧은 코드워드들을 정정하며, 긴 신드롬이 0과 동일한지의 여부를 판단하여, 긴 신드롬이 0과 동일하지 않다면, 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정했는지의 여부를 판단하고, 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정했다면, 비제로 짧은 코드워드들에 따라서 긴 신드롬을 정정하여 정정된 긴 신드롬을 얻는 제어 회로를 포함한다.In relation to the codec, the ECC decoder comprises: a syndrome calculator for calculating short syndromes of short codewords according to short parities of short codewords and calculating long syndrome of a long codeword according to long parity of a long codeword; And determining whether the short syndromes are equal to zero, and if the short syndromes are not equal to zero, correcting the short codewords according to the non-zero short syndromes, and determining whether the long syndrome is equal to zero. If not equal to 0, it is determined whether non-zero short codewords have successfully corrected the corresponding short codewords, and if nonzero short codewords have successfully corrected the corresponding short codewords, the nonzero short code And a control circuit for correcting the long syndrome according to the words to obtain a corrected long syndrome.

상기 코덱과 관련하여, 긴 코드워드 및 짧은 코드워드들은 BCH 코드들 또는 RS 코드들이다.In the context of the codec, long codewords and short codewords are BCH codes or RS codes.

본 발명은 또한 에러 정정 코드를 위한 부호화 및 복호화 방법을 제공한다. 먼저, 에러 정정 코드의 긴 코드워드가 수신되는데, 상기 긴 코드워드는 다수의 짧은 코드워드들 및 긴 패리티를 포함하고 짧은 코드워드들 각각은 짧은 패리티를 포함한다. 다음에, 짧은 코드워드들은 긴 코드워드로부터 검색된다. 이어서, 짧은 코드워드들에 대응하는 다수의 짧은 신드롬들은 짧은 코드워드들의 짧은 패리티들에 따라서 계산된다. 다음에, 짧은 신드롬들이 0과 동일한지의 여부가 판단된다. 짧은 신드롬들이 비제로 짧은 신드롬들을 포함한다면, 짧은 코드워드들은 비제로 짧은 신드롬들에 따라서 정정된다. 이어서, 긴 코드워드에 대응하는 긴 신드롬은 긴 코드워드의 긴 패리티에 따라서 계산된다. 다음에, 긴 신드롬들이 0과 동일한지의 여부가 판단된다. 긴 신드롬이 0과 동일하지 않다면, 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정했는지의 여부가 판단된다. 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정했다면, 긴 신드롬은 비제로 짧은 코드들에 따라서 정정되어 정정된 긴 신드롬을 얻는다.The present invention also provides an encoding and decoding method for an error correction code. First, a long codeword of an error correction code is received, wherein the long codeword includes a plurality of short codewords and long parity, and each of the short codewords includes short parity. Next, short codewords are retrieved from the long codeword. The plurality of short syndromes corresponding to the short codewords are then calculated according to the short parities of the short codewords. Next, it is determined whether the short syndromes are equal to zero. If short syndromes contain nonzero short syndromes, short codewords are corrected according to nonzero short syndromes. The long syndrome corresponding to the long codeword is then calculated according to the long parity of the long codeword. Next, it is determined whether the long syndromes are equal to zero. If the long syndrome is not equal to zero, it is determined whether nonzero short codewords have successfully corrected the corresponding short codewords. If nonzero short codewords have successfully corrected the corresponding short codewords, the long syndrome is corrected according to the nonzero short codes to obtain a corrected long syndrome.

상기 부호화 및 복호화 방법은 긴 신드롬이 0과 동일하지 않고 비제로 짧은 코드워드들이 대응하는 짧은 코드워드들을 성공적으로 정정하지 않았다면, 긴 신드롬에 따라서 짧은 코드워드들의 에러 있는 짧은 코드워드들을 정정하는 단계를 더 포함한다.The encoding and decoding method corrects erroneous short codewords of short codewords according to the long syndrome if the long syndrome is not equal to zero and the non-zero short codewords have not successfully corrected the corresponding short codewords. It includes more.

상기 부호화 및 복호화 방법과 관련하여, 짧은 패리티들은 제1생성 다항식에 따라서 생성되고 긴 패리티가 제2생성 다항식에 따라서 생성되는데, 제1생성 다항식은 제2생성 다항식의 적어도 하나의 최소 다항식의 함수이다.With respect to the encoding and decoding method, short parities are generated according to the first generation polynomial and long parity is generated according to the second generation polynomial, wherein the first generation polynomial is a function of at least one minimum polynomial of the second generation polynomial. .

상기 부호화 및 복호화 방법과 관련하여, 제1생성 다항식은 제2생성 다항식의 적어도 하나의 최소 다항식의 최소 공배수이다.In relation to the encoding and decoding method, the first generation polynomial is the least common multiple of at least one minimum polynomial of the second generation polynomial.

상기 부호화 및 복호화 방법과 관련하여, 긴 코드워드 및 짧은 코드워드들은 BCH 코드들 또는 RS 코드들이다.In connection with the encoding and decoding method, the long codewords and the short codewords are BCH codes or RS codes.

다음 실시예들이 첨부한 도면들과 관련하여 상세하게 설명될 것이다.The following embodiments will be described in detail with reference to the accompanying drawings.

본 발명은 첨부한 도면들과 관련한 이하의 상세한 설명과 예를 통해서 더욱 완전하게 이해될 수 있을 것이다.
도 1은 에러 정정 코드를 복호화하기 위한 종래 방법의 순서도;
도 2는 본 발명에 따른 데이터 저장 시스템의 블록도;
도 3a는 본 발명에 따른 에러 정정 코드 인코더의 블록도;
도 3b는 본 발명에 따른 에러 정정 코드를 생성하기 위한 방법의 순서도;
도 4는 본 발명에 따라서 생성된 긴 코드워드의 개요도;
도 5는 본 발명에 따른 인코더의 회로도;
도 6은 본 발명에 따른 에러 정정 코드(ECC) 디코더의 블록도;
도 7는 본 발명에 따른 신드롬 계산기의 회로도;
도 8a 및 도 8b는 본 발명에 따른 에러 정정 코드를 복호화하기 위한 방법의 순서도.
The invention will be more fully understood through the following detailed description and examples in conjunction with the accompanying drawings.
1 is a flowchart of a conventional method for decoding an error correction code;
2 is a block diagram of a data storage system in accordance with the present invention;
3A is a block diagram of an error correction code encoder in accordance with the present invention;
3B is a flowchart of a method for generating an error correction code in accordance with the present invention;
4 is a schematic diagram of a long codeword generated in accordance with the present invention;
5 is a circuit diagram of an encoder according to the present invention;
6 is a block diagram of an error correction code (ECC) decoder according to the present invention;
7 is a circuit diagram of a syndrome calculator according to the present invention;
8A and 8B are flowcharts of a method for decoding an error correction code in accordance with the present invention.

도 2는 본 발명에 따른 데이터 저장 시스템(200)의 블록도를 도시한다. 일 실시예에서, 데이터 저장 시스템(200)은 제어기(21) 및 저장 매체(214)를 포함한다. 일 실시예에서, 제어기(212)는 에러 정정 코드(ECC) 인코더(222) 및 에러 정정 코드(ECC) 디코더(224)를 포함한다. 호스트(202)가 데이터(D1)를 데이터 저장장치(204)에 저장하고자 할 때, 제어기(212)는 우선 데이터(D1)를 부호화하여 에러 정정 코드(C1)를 얻고 나서 이 에러 정정 코드(C1)를 저장 매체(214)에 저장한다. 호스트(202)가 데이터 저장장치(204)로부터 데이터(D2)를 검색하고자 할 때, 제어기(212)는 우선, 저장 매체(214)로부터 에러 정정 코드(C2)를 판독한 후 에러 정정 코드(C2)를 복호화하여 데이터(D2)를 얻고 나서 이 데이터(D2)를 호스트(202)로 전송한다. 일 실시예에서, 데이터 저장장치(204)는 메모리 카드이며, 저장 매체(214)는 플래시 메모리이고, 에러 정정 코드들(C1 및 C2)은 BCH 코드들이다. 일 실시예에서, 데이터 저장장치(204)는 광디스크이며, 저장 매체는 광디스크이고, 에러 정정 코드들(C1 및 C2)은 RS 코드들이다. 저장 매체(214) 및 에러 정정 코드들(C1 및 C2)의 유형들이 본 발명의 범위를 제한하는 것이 아니므로, 당업자는 본 발명을 어떠한 유형의 저장 매체 및 에러 정정 코드에 적용할 수 있다.2 shows a block diagram of a data storage system 200 in accordance with the present invention. In one embodiment, data storage system 200 includes a controller 21 and a storage medium 214. In one embodiment, the controller 212 includes an error correction code (ECC) encoder 222 and an error correction code (ECC) decoder 224. When the host 202 wants to store the data D1 in the data storage 204, the controller 212 first encodes the data D1 to obtain an error correction code C1, and then the error correction code C1. ) Is stored in the storage medium 214. When the host 202 wants to retrieve data D 2 from the data storage 204, the controller 212 first reads the error correction code C2 from the storage medium 214 and then the error correction code ( The data D 2 is obtained by decoding C2), and then the data D 2 is transmitted to the host 202. In one embodiment, data storage 204 is a memory card, storage medium 214 is flash memory, and error correction codes C1 and C2 are BCH codes. In one embodiment, the data storage device 204 is an optical disc, the storage medium is an optical disc, and the error correction codes C1 and C2 are RS codes. Since the types of storage medium 214 and error correction codes C1 and C2 do not limit the scope of the present invention, those skilled in the art can apply the present invention to any type of storage medium and error correction code.

도 3a는 본 발명에 따른 에러 정정 코드 인코더(300)의 블록도를 도시한다. 일 실시예에서, ECC 인코더(300)는 짧은 코드워드 인코더(302), 부가 모듈(304), 긴 코드워드 인코더(306) 및 부가 모듈(308)을 포함한다. 도 3b는 본 발명을 다른 에러 정정 코드를 생성하기 위한 방법(350)의 순서도를 도시한다. 도 3a에 도시된 ECC 인코더(300)는 원시 데이터(D)를 부호화하여 도 3b에 도시된 방법(350)에 따른 에러 정정 코드로서 긴 코드워드(CL)를 얻는다. 먼저, ECC 인코더(300)는 원시 데이터(D)를 수신한다(단계 352). 다음에, ECC 디코더(300)는 원시 데이터(D)를 다수의 데이터 세그먼트들로 분할한다(단계 354). 짧은 코드워드 인코더(302)가 데이터 세그먼트들을 수신할 때, 짧은 코드워드 인코더(302)는 제1생성 다항식에 따라서 데이터 세그먼트들에 대응하는 다수의 짧은 패리티들(Ps) 각각을 순차적으로 생성한다(단계 356).3A shows a block diagram of an error correction code encoder 300 according to the present invention. In one embodiment, the ECC encoder 300 includes a short codeword encoder 302, an additional module 304, a long codeword encoder 306, and an additional module 308. 3B shows a flowchart of a method 350 for generating an error correction code in accordance with the present invention. The ECC encoder 300 shown in FIG. 3A encodes the raw data D to obtain a long codeword C L as an error correction code according to the method 350 shown in FIG. 3B. First, the ECC encoder 300 receives the raw data D (step 352). The ECC decoder 300 then divides the raw data D into a plurality of data segments (step 354). When the short codeword encoder 302 receives the data segments, the short codeword encoder 302 sequentially generates each of the plurality of short parities Ps corresponding to the data segments according to the first generation polynomial ( Step 356).

다음, 부가 모듈(304)은 짧은 패리티들(PS) 각각을 데이터 세그먼트들에 부가하여 다수의 짧은 코드워드들(CS)를 얻는다(단계 358).The additional module 304 then adds each of the short parities PS to the data segments to obtain a number of short codewords CS (step 358).

다음, 긴 코드워드 인코더(306)는 짧은 코드워드들(CS)을 연결하여 코드 데이터를 얻고(단계 360) 나서, 제2생성 다항식에 따라서 코드 데이터에 대응하는 긴 패리티(PL)를 생성하는데(단계 362), 짧은 코드워드 인코더(302)의 제1생성 다항식은 긴 코드워드 인코더(306)의 제2생성 다항식의 적어도 하나의 최소 다항식의 함수이다. 일 실시예에서, 제1생성 다항식은 제2생성 다항식의 적어도 하나의 최소 다항식의 최소 공배수(LCM)이다. 마지막으로, 부가 모듈(308)은 긴 패리티(PL)를 코드 데이터에 부가하여 긴 코드워드(CL)를 얻는다(단계 364). 예를 들어, 긴 코드워드 인코더(306)가 다수의 최소 다항식들 ψ1(x), ψ2(x),..., ψk(x)의 최소 공배수 {ψ1(x) × ψ2 (x) × ψk(x)}이다라고 가정하자. 일 실시예에서, 짧은 코드워드 인코더(302)의 제1생성 다항식 g'(x)은 최소 다항식 ψ1(x)이다. 또 다른 실시예에서, 짧은 코드워드 인코더(302)의 제1생성 다항식 g'(x)는 최소 다항식들 ψ1(x) 및 ψ2(x)의 최소 공배수 [ψ1(x) × ψ2 (x)]이다.Next, the long codeword encoder 306 concatenates the short codewords CS to obtain the code data (step 360), and then generates the long parity PL corresponding to the code data according to the second generation polynomial ( Step 362), the first generated polynomial of the short codeword encoder 302 is a function of at least one minimum polynomial of the second generated polynomial of the long codeword encoder 306. In one embodiment, the first generated polynomial is the least common multiple (LCM) of at least one minimum polynomial of the second generated polynomial. Finally, additional module 308 adds long parity PL to the code data to obtain long codeword C L (step 364). For example, a long codeword encoder 306 may be used for multiple least polynomials ψ 1 (x), ψ 2 (x), ..., ψ k (x) least common multiple {ψ 1 (x) × ψ 2 Assume that (x) × ψ k (x)}. In one embodiment, the first generated polynomial g '(x) of the short codeword encoder 302 is the minimum polynomial ψ 1 (x). In another embodiment, the first generated polynomial g '(x) of the short codeword encoder 302 is the least common multiple of the minimum polynomials ψ 1 (x) and ψ 2 (x) [ψ 1 (x) × ψ 2 (x)].

도 4는 본 발명에 따라서 생성된 긴 코드워드(CL)의 개요도를 도시한다. 긴 코드워드(CL)는 N개의 짧은 코드워드들(CS1, CS2,..., CSN) 및 긴 패리티(PL)를 포함한다. 짧은 코드워드들(CS1, CS2, …, CSN) 각각은 데이터 세그먼트 및 짧은 패리티를 포함한다. 예를 들어, 짧은 코드워드(CS1)는 데이터 세그먼트(D1) 및 짧은 패리티(PS1)를 포함하며, 짧은 코드워드(CS2)는 데이터 세그먼트(D2) 및 짧은 패리티(PS2)를 포함하고, 짧은 코드워드(CSN)는 데이터 세그먼트(DN) 및 짧은 패리티(PSN)를 포함한다. 원시 데이터는 N개의 데이터 세그먼트들(D1, D2,…,DN)으로 분할되고 원시 데이터는 도 3a에 도시된 ECC 인코더(300)에 의해 부호화되어 도 4에 도시된 긴 코드워드(CL)를 얻는다.4 shows a schematic diagram of a long codeword C L generated according to the invention. The long codeword C L includes N short codewords C S1 , C S2 ,..., C SN and a long parity P L. Each of the short codewords C S1 , C S2 ,..., C SN includes a data segment and a short parity. For example, short codeword C S1 includes data segment D 1 and short parity P S1 , and short codeword C S2 includes data segment D 2 and short parity P S2 . And the short codeword C SN includes a data segment D N and a short parity P SN . The raw data is divided into N data segments (D 1 , D 2 ,..., D N ) and the raw data is encoded by the ECC encoder 300 shown in FIG. 3A and the long codeword C shown in FIG. 4. L )

도 5는 본 발명에 따른 인코더(500)의 회로도를 도시한다. 인코더(500)는 도 3a에 도시된 짧은 패리티 인코더(302) 또는 긴 패리티 인코더(306)일 수 있다. 인코더(500)가 생성 다항식 g(x)에 따라서 데이터(DA)를 패리티(P)로 변환하고 생성 다항식 g(x)는 1차 항 계수 g1, 2차 항 계수 g2,…, N차 항 계수 gN을 갖는다. 인코더(500)는 가산기(540), 승산기들(521 내지 52N), 가산기들(501 내지 50N) 및 버퍼들(511 내지 51N)을 포함한다. 데이터(DA)의 비트들은 가산기(540)로 순차적으로 전달된다. 가산기(540)는 데이터(DA)의 비트들을 데이터 버퍼(51N)에 저장된 데이터 비트들(DDN)에 순차적으로 가산하여 데이터(DB)를 얻는다. 승산기들(521, 522,…,52N) 각각은 데이터 비트들(DB)를 생성 다항식 g(x)의 계수들(g1, g2,..gN)과 승산하여 데이터(DC1, DC2,…,DCN) 각각을 얻는다. 데이터(DB)는 버퍼(530)에 저장된다. 가산기들(501, 502,...,50N)은 DC1, DC2,…,DCN을 버퍼(530)에 의해 출력되는 데이터(DB)에 순차적으로 가산하여 데이터(DDN)를 얻는다. 마지막으로, 버퍼(51N)은 데이터(DDN)를 저장하고 나서 데이터(DDN)를 패리티(P)로서 출력한다.5 shows a circuit diagram of an encoder 500 according to the present invention. Encoder 500 may be a short parity encoder 302 or a long parity encoder 306 shown in FIG. 3A. The encoder 500 converts the data D A into parity P according to the generation polynomial g (x), and the generation polynomial g (x) is the first order coefficient g 1 , the second order coefficient g 2 ,. , Has an N-order term coefficient g N. Encoder 500 includes adder 540, multipliers 521-52N, adders 501-50N and buffers 511-51N. The bits of data D A are passed sequentially to adder 540. The adder 540 sequentially adds the bits of the data D A to the data bits D DN stored in the data buffer 51N to obtain the data D B. Each of multipliers 521, 522,..., 52N multiplies data bits D B by coefficients g 1 , g 2 , .. g N of the polynomial g (x) to generate data D C1,. D C2 ,..., D CN ) are obtained respectively. The data D B is stored in the buffer 530. Adders 501, 502,..., 50N are D C1 , D C2 ,... , D CN is sequentially added to the data D B output by the buffer 530 to obtain the data D DN . Finally, the buffer 51N stores the data D DN and then outputs the data D DN as parity P. FIG.

도 6은 본 발명에 따른 에러 정정 코드(ECC) 디코더(600)의 블록도를 도시한다. 일 실시예에서, ECC 디코더(600)는 신드롬 계산기(602), 에러 탐색 다항식 계산기(604), 치엔 검색 모듈(606) 및 제어 회로(608)를 포함한다. ECC 디코더(600)가 에러 탐색 코드의 긴 코드워드를 수신할 때, ECC 디코더(600)는 긴 코드워드로부터 다수의 짧은 코드워드들을 검색한다. 먼저, 신드롬 계산기(602)는 짧은 코드워드들의 짧은 패리티들에 따라서 짧은 코드워드들의 다수의 짧은 신드롬들(S1a, S1b,...,S1N)을 계산하고 긴 코드워드의 긴 패리티에 따라서 긴 코드워드의 다수의 긴 신드롬들(S1, S2,…, Sk)를 계산한다. 다음, 에러 탐색 다항식 계산기(604)는 긴 코드워드의 긴 신드롬들(S1, S2,…, Sk)에 따라서 긴 코드워드의 에러 탐색 다항식의 계수들을 계산한다. 다음, 치엔 검색 모듈(606)은 에러 정정 코드의 긴 코드워드를 정정하기 위하여 에러 탐색 다항식의 근들을 찾는다. 한편, 짧은 코드워드들의 짧은 신드롬들(S1a, S1b,...,S1N)이 0과 동일하지 않을 때, 에러 탐색 다항식 계산기(604)는 비제로 짧은 신드롬들에 따라서 짧은 코드워드들의 에러 탐색 다항식들의 계수들을 계산하고 나서, 치엔 검색 모듈(606)은 치엔 검색을 수행하여 짧은 코드워드들을 정정하기 위하여 짧은 코드워드들의 에러 탐색 다항식들의 근들을 찾는다. 제어 회로(608)는 긴 신드롬들(S1, S2,…, Sk)이 0과 동일한지의 여부를 판단하고 에러 탐색 다항식 계산기의 계수 계산 및 치엔 검색 모듈(606)의 근 검색을 중단한다. 제어 회로(608)는 또한 다른 기능들을 포함하여 긴 코드워드를 복호화하는 데 필요로 되는 시간 기간을 감소시키고 ECC 디코더(600)의 성능을 개선시킨다. ECC 디코더(600)의 기능들은 도 8a 및 도 8b에 추가적으로 도시되어 있다.6 shows a block diagram of an error correction code (ECC) decoder 600 in accordance with the present invention. In one embodiment, the ECC decoder 600 includes a syndrome calculator 602, an error search polynomial calculator 604, a Chien search module 606, and a control circuit 608. When the ECC decoder 600 receives a long codeword of the error search code, the ECC decoder 600 retrieves a plurality of short codewords from the long codeword. First, the syndrome calculator 602 calculates a number of short syndromes S 1a , S 1b ,... S 1N of short codewords according to the short parities of the short codewords, and calculates the long parity of the long codeword. Therefore, many long syndromes S 1 , S 2 ,... S k of a long codeword are calculated. The error search polynomial calculator 604 then calculates the coefficients of the error search polynomial of the long codeword according to the long syndromes S 1 , S 2 ,..., S k of the long codeword. The Chien search module 606 then finds the roots of the error search polynomial to correct the long codeword of the error correction code. On the other hand, when the short syndromes S 1a , S 1b ,..., S 1N of the short codewords are not equal to zero, the error search polynomial calculator 604 can determine the short codewords according to the non-zero short syndromes. After calculating the coefficients of the error search polynomials, the Chien search module 606 performs Chien search to find the roots of the error search polynomials of the short codewords to correct the short codewords. The control circuit 608 determines whether the long syndromes S 1 , S 2 ,..., S k are equal to zero and stops counting the error search polynomial calculator and root search of the Chien search module 606. . The control circuit 608 also includes other functions to reduce the time period needed to decode the long codeword and improve the performance of the ECC decoder 600. The functions of the ECC decoder 600 are further illustrated in FIGS. 8A and 8B.

일 실시예에서, 짧은 코드워드들을 부호화하기 위한 제1생성 다항식은 긴 코드워드들을 부호화하기 위한 제2생성 다항식의 적어도 하나의 최소 다항식의 함수이다. 그러므로, 신드롬 계산기(602)는 동일한 회로로 짧은 코드워드들 및 긴 코드워드들을 생성한다. 도 7은 본 발명에 따른 신드롬 계산기(700)의 회로도를 도시한다. 신드롬 계산기(700)는 긴 코드워드들의 긴 신드롬들(S1, S2,…, Sk) 각각을 생성하기 위한 다수의 신드롬 생성기들(701, 702, …, 70K)을 포함한다. 신드롬 생성기(701)는 또한 다수의 짧은 코드워드들의 다수의 짧은 신드롬들(S1a, S1b,...,S1N)을 생성한다. 일 실시예에서, 긴 코드워드의 데이터 비트들(D)은 신드롬 생성기들(702,…,70K)로 순차적으로 전달된다. 긴 코드워드의 데이터 비트들(D)의 처리가 완료될 때, 신드롬 생성기들(702,…,70K) 각각은 긴 코드워드의 긴 신드롬들(S2,…,SK)을 생성시킨다. 다수의 짧은 코드워드들을 포함하는 긴 코드워드의 데이터 비트들(D)은 신드롬 생성기(701)에 동시에 전달된다. 짧은 코드워드의 데이터 비트들(D)의 처리가 완료될 때, 신드롬 생성기(701)는 짧은 코드워드에 대응하는 짧은 신드롬을 생성한다. 예를 들어, 데이터 세그먼트(D1) 및 짧은 패리티(PS1)를 포함하는 짧은 코드워드(CS1)가 신드롬 생성기(701)로 전달될 때, 신드롬 생성기(701)는 짧은 코드워드(CS1)에 대응하는 짧은 신드롬을 생성시킨다. 데이터 세그먼트(D2) 및 짧은 패리티(PS2)를 포함하는 짧은 코드워드(CS2)가 신드롬 생성기(701)로 전달될 때, 신드롬 생성기(701)는 짧은 코드워드(CS2)에 대응하는 짧은 신드롬을 생성시킨다. 긴 코드워드가 다수의 짧은 코드워드들을 포함하기 때문에, 긴 코드워드의 모든 짧은 코드워드들의 처리가 완료된 후, 신드롬 생성기(701)는 긴 코드워드에 대응하는 긴 신드롬(S1)을 생성시킨다.In one embodiment, the first generation polynomial for encoding short codewords is a function of at least one minimum polynomial of the second generation polynomial for encoding long codewords. Therefore, the syndrome calculator 602 generates short codewords and long codewords with the same circuit. 7 shows a circuit diagram of a syndrome calculator 700 in accordance with the present invention. The syndrome calculator 700 includes a number of syndrome generators 701, 702,..., 70K for generating each of the long syndromes S 1 , S 2 ,..., S k of long codewords. The syndrome generator 701 also generates a number of short syndromes S 1a , S 1b ,... S 1N of a number of short codewords. In one embodiment, the data bits D of the long codeword are passed sequentially to the syndrome generators 702,..., 70K. When the processing of the data bits D of the long codeword is completed, each of the syndrome generators 702, ..., 70K generates the long syndromes S 2 , ..., S K of the long codeword. Data bits D of a long codeword containing a number of short codewords are simultaneously delivered to the syndrome generator 701. When the processing of the data bits D of the short codeword is completed, the syndrome generator 701 generates a short syndrome corresponding to the short codeword. For example, when a short codeword C S1 comprising a data segment D 1 and a short parity P S1 is passed to the syndrome generator 701, the syndrome generator 701 may have a short codeword C S1. Generates a short syndrome corresponding to When a short codeword C S2 comprising a data segment D 2 and a short parity P S2 is passed to the syndrome generator 701, the syndrome generator 701 corresponds to the short codeword C S2 . Generate a short syndrome. Since the long codeword includes a plurality of short codewords, after processing of all short codewords of the long codeword is completed, the syndrome generator 701 generates a long syndrome S 1 corresponding to the long codeword.

도 7에 도시된 신드롬 생성기들(701, 702, …, 70K) 각각은 가산기, 승산기 및 버퍼를 포함한다. 예를 들어, 신드롬 생성기(701)는 가산기(731), 승산기(721), 및 버퍼(711)를 포함한다. 버퍼(711)는 데이터(D1)를 버퍼링하고 나서 데이터(D1)를 출력한다. 가산기(731)는 버퍼(711)에 의해 출력되는 데이터(D1)를 긴 코드워드 이외에 데이터 비트(D)에 가산하여 제1신드롬들(S1)의 데이터 비트를 얻는다. 승산기(721)는 제1신드롬(S1)의 데이터 비트를 계수 α와 승산하여 데이터(D1)의 새로운 비트를 얻고 나서 데이터(D1)의 새로운 비트는 저장되도록 버퍼(711)로 전달된다. 계수 α는 제1생성 다항식 및 제2생성 다항식의 공통근이고 신드롬 생성기들(702,..., 70K)의 계수들 각각은 α2,...,αK 인데, 여기서 α2,...,αK 는 또한 긴 코드워드를 부호화하기 위한 제2생성 다항식의 근들이다.Each of the syndrome generators 701, 702,..., 70K shown in FIG. 7 includes an adder, a multiplier, and a buffer. For example, the syndrome generator 701 includes an adder 731, a multiplier 721, and a buffer 711. The buffer 711 buffers the data D 1 and then outputs the data D 1 . The adder 731 adds the data D 1 output by the buffer 711 to the data bit D in addition to the long codeword to obtain the data bits of the first syndromes S 1 . The multiplier 721 is transmitted to the first syndrome (S 1) of the buffer 711 so that the new bits are stored in and then obtain a new bit of data (D 1) of the data bit multiplied by the coefficient α data (D 1) . The coefficient α is the common root of the first and second generation polynomials and each of the coefficients of the syndrome generators 702, ..., 70K are α 2 , ..., α K , where α 2 , .. ., α K is also the root of the second generation polynomial for encoding the long codeword.

도 8a 및 도 8b는 본 발명에 따른 에러 정정 코드를 복호화하기 위한 방법(800)의 순서도를 도시한다. 도 6에 도시된 ECC 디코더(600)는 상기 방법(800)에 따라서 에러 정정 코드를 복호화한다. 먼저, ECC 디코더(600)는 긴 코드워드를 수신한다(단계 802). 다음, 신드롬 계산기(602)는 긴 코드워드의 짧은 코드워의 다수의 짧은 신드롬들을 순차적으로 계산한다(단계 804). 예를 들어, ECC 디코더(600)는 우선, 긴 코드워드(CL)의 제1짧은 코드워드(CS1)를 처리한다. 다음, 제어 회로(608)는 신드롬 계산기(602)에 의해 생성된 짧은 신드롬들이 0과 동일한지의 여부를 판단한다(단계 806). 짧은 신드롬이 0과 동일한 것으로 판단되면, 짧은 신드롬에 대응하는 짧은 코드워드는 정정되고 신드롬 계산기(602)는 긴 코드워드의 모든 짧은 코드워드들이 신드롬 계산기(602)에 의해 처리될 때까지 다른 짧은 코드워드들(CS2, CS3,…, CSN)의 짧은 신드롬들을 계속 계산한다(단계 812). 짧은 신드롬이 0과 동일하지 않다면, 짧은 신드롬에 대응하는 짧은 코드워드는 에러 비트들을 포함하고 제어 회로(608)는 비제로 짧은 신드롬에 따라서 짧은 코드워드를 정정하고(단계 808) 정정 결과가 기록된다. 짧은 신드롬 계산기(602)가 긴 코드워드의 모든 짧은 코드워드들을 처리하지 않았다면(단계 810), 짧은 신드롬 계산기(602)는 나머지 짧은 코드워드들의 짧은 신드롬들을 계속해서 계산한다(단계 804).8A and 8B show a flowchart of a method 800 for decoding an error correction code in accordance with the present invention. The ECC decoder 600 shown in FIG. 6 decodes the error correction code according to the method 800 above. First, the ECC decoder 600 receives the long codeword (step 802). The syndrome calculator 602 then sequentially calculates a number of short syndromes of the short codeword of the long codeword (step 804). For example, the ECC decoder 600 first processes the first short codeword C S1 of the long codeword C L. Next, control circuit 608 determines whether the short syndromes generated by syndrome calculator 602 are equal to zero (step 806). If it is determined that the short syndrome is equal to zero, then the short codeword corresponding to the short syndrome is corrected and the syndrome calculator 602 keeps another short code until all short codewords of the long codeword have been processed by the syndrome calculator 602. Short syndromes of words C S2 , C S3 ,..., C SN continue to be calculated (step 812). If the short syndrome is not equal to zero, the short codeword corresponding to the short syndrome contains error bits and the control circuit 608 corrects the short codeword according to the non-zero short syndrome (step 808) and the result of the correction is written. . If the short syndrome calculator 602 did not process all the short codewords of the long codeword (step 810), the short syndrome calculator 602 continues to calculate the short syndromes of the remaining short codewords (step 804).

모든 짧은 코드워드들의 짧은 신드롬들이 계산된 후, 신드롬 계산기(602)는 긴 코드워드에 대응하는 긴 신드롬을 계산한다(단계 813). 긴 신드롬이 0과 동일하지 않다면(단계 816), 긴 코드워드는 에러 비트들을 포함한다. 다음, 제어 회로(608)는 모든 짧은 코드워드들이 비제로 짧은 신드롬들에 따라서 성공적으로 정정했는지의 여부를 판단한다(단계 818). 비제로 짧은 신드롬들이 대응하는 짧은 코드워드들을 성공적으로 정정했다면(단계 818), 제어 회로(608)는 비제로 짧은 신드롬들에 따라서 긴 신드롬을 정정한다(단계 820). 예를 들어, 짧은 코드워드(CS4)의 짧은 신드롬이 0과 동일하지 않다면, 비제로 짧은 신드롬은 긴 코드워드에서 짧은 코드워드(CS4)에 대응하는 비트들을 정정하도록 사용된다. 정정된 긴 신드롬이 0과 동일하다면(단계 822), 긴 코드워드의 에러 비트들이 정정된 것으로 판단되며, 그 정정 결과는 호스트에 전송되고 긴 코드워드는 긴 신드롬에 따라서 정정을 필요로 하지 않아 긴 코드워드의 전체 복호화 과정에 의해 필요로 되는 시간 기간을 감소시킨다. 정정된 긴 신드롬이 0과 동일하지 않거나(단계 822) 비제로 짧은 신드롬들 중 일부가 대응하는 짧은 코드워드들을 성공적으로 정정하지 않았다면(단계 818), 제어 회로(608)는 원래의 긴 신드롬에 따라서 에러 있는 짧은 코드워드들을 정정하여 에러 비트들 없이 긴 코드워드를 얻고(단계 824), 긴 코드워드의 복호화 공정이 완료된다.After the short syndromes of all short codewords have been calculated, the syndrome calculator 602 calculates the long syndrome corresponding to the long codeword (step 813). If the long syndrome is not equal to zero (step 816), the long codeword contains error bits. The control circuit 608 then determines whether all short codewords have been successfully corrected according to non-zero short syndromes (step 818). If the nonzero short syndromes have successfully corrected the corresponding short codewords (step 818), the control circuit 608 corrects the long syndrome according to the nonzero short syndromes (step 820). For example, if the short syndrome of the short codeword C S4 is not equal to zero, the nonzero short syndrome is used to correct the bits corresponding to the short codeword C S4 in the long codeword. If the corrected long syndrome is equal to 0 (step 822), then the error bits of the long codeword are determined to be corrected, and the result of the correction is sent to the host and the long codeword does not require correction according to the long syndrome and thus the long The time period required by the entire decoding process of the codeword is reduced. If the corrected long syndrome is not equal to zero (step 822) or some of the non-zero short syndromes did not successfully correct the corresponding short codewords (step 818), then the control circuit 608 according to the original long syndrome Correcting the short short codewords to obtain a long codeword without error bits (step 824), the decoding process of the long codeword is completed.

모든 짧은 신드롬들이 0과 동일한 것으로 판단되면, 정정된 긴 코드워드들의 판단시 에러가 발생할 수 있다. 짧은 신드롬이 몇 개의 에러 비트들을 정정하기 때문에, 짧은 코드워드가 짧은 신드롬의 정정 비트수 보다 많은 수의 에러 비트들을 포함할 때, 짧은 신드롬이 또한 0과 동일하다라고 판단된다. 따라서, 더 많은 에러 비트들을 정정할 수 있는 긴 신드롬은 긴 코드워드들이 정정되는지의 여부를 다시 판단하는데 필요로 된다. 예를 들어, 긴 코드워드는 24개 이상의 에러 비트들을 정정할 수 있다. 따라서, 짧은 코드워드가 8개의 에러 비트들을 포함하면, 긴 신드롬은 짧은 코드워드의 에러 비트들을 정정함으로써, 최소 에러로 정정된 긴 코드워드들의 판단을 보장할 수 있다.If all short syndromes are determined to be equal to zero, an error may occur in the determination of the corrected long codewords. Since the short syndrome corrects some error bits, it is determined that the short syndrome is also equal to zero when the short codeword contains more error bits than the correct number of bits of the short syndrome. Thus, a long syndrome that can correct more error bits is needed to determine again whether long codewords are corrected. For example, a long codeword can correct 24 or more error bits. Thus, if the short codeword contains eight error bits, the long syndrome can ensure the determination of the long codewords corrected to the minimum error by correcting the error bits of the short codeword.

본 발명이 예와 바람직한 실시예와 관련하여 설명되었지만, 본 발명이 이로 제한되지 않는다는 것을 이해하여야 한다. 그러므로, 각종 수정들 및 유사한 장치들(당업자에게 명백한 바와 같이)을 포함하도록 한다. 그러므로, 첨부된 청구범위는 모든 이와 같은 수정들 및 유사한 장치들을 포함하도록 가장 넓게 해석되어야 한다.Although the present invention has been described in connection with examples and preferred embodiments, it is to be understood that the invention is not so limited. Therefore, it is intended to include various modifications and similar devices (as will be apparent to those skilled in the art). Therefore, the appended claims should be construed broadly to encompass all such modifications and similar arrangements.

Claims (20)

에러 정정 코드를 부호화 및 복호화하기 위한 방법에 있어서,
원시 데이터를 수신하는 단계;
상기 원시 데이터를 다수의 데이터 세그먼트들로 분할하는 단계;
제1생성 다항식에 따라서 상기 데이터 세그먼트들에 대응하는 다수의 짧은 패리티들을 생성하는 단계;
상기 짧은 패리티들을 상기 데이터 세그먼트들에 부가하여 다수의 짧은 코드워드들을 얻는 단계;
상기 짧은 코드워드들을 연결하여 코드 데이터를 얻는 단계;
제2생성 다항식에 따라서 상기 코드 데이터에 대응하는 긴 패리티를 생성하는 단계; 및
상기 긴 패리티를 상기 코드 데이터에 부가하여 상기 원시 데이터에 대응하는 에러 정정 코드로서 긴 코드워드를 얻는 단계를 포함하되,
상기 제1생성 다항식은 상기 제2생성 다항식의 적어도 하나의 최소 다항식의 함수인 것인, 에러 정정 코드의 부호화 및 복호화 방법.
In the method for encoding and decoding the error correction code,
Receiving raw data;
Dividing the raw data into a plurality of data segments;
Generating a plurality of short parities corresponding to the data segments according to a first generation polynomial;
Adding the short parities to the data segments to obtain a plurality of short codewords;
Concatenating the short codewords to obtain code data;
Generating a long parity corresponding to the code data according to a second generation polynomial; And
Adding the long parity to the code data to obtain a long codeword as an error correction code corresponding to the raw data;
Wherein the first generated polynomial is a function of at least one minimum polynomial of the second generated polynomial.
제1항에 있어서, 상기 제1생성 다항식은 상기 제2생성 다항식의 적어도 하나의 최소 다항식의 최소 공배수인 것인, 에러 정정 코드의 부호화 및 복호화 방법.The method of claim 1, wherein the first generated polynomial is a least common multiple of at least one minimum polynomial of the second generated polynomial. 제1항에 있어서, 상기 긴 코드워드를 저장 매체에 저장하는 단계를 더 포함하는, 에러 정정 코드의 부호화 및 복호화 방법.2. The method of claim 1, further comprising storing the long codeword in a storage medium. 제1항에 있어서,
저장 매체로부터 상기 긴 코드워드를 판독하는 단계;
상기 긴 코드워드로부터 상기 짧은 코드워드들을 검색하는 단계;
상기 짧은 코드워드들의 짧은 패리티들에 따라서 상기 짧은 코드워드들에 대응하는 다수의 짧은 신드롬들을 계산하는 단계;
상기 짧은 신드롬들이 0과 동일한지의 여부를 판단하는 단계; 및
상기 짧은 신드롬들이 비제로 짧은 신드롬들을 포함한다면, 상기 비제로 짧은 신드롬들에 따라서 상기 짧은 코드워드들을 정정하는 단계를 더 포함하는, 에러 정정 코드의 부호화 및 복호화 방법.
The method of claim 1,
Reading the long codeword from a storage medium;
Retrieving the short codewords from the long codeword;
Calculating a plurality of short syndromes corresponding to the short codewords according to the short parities of the short codewords;
Determining whether the short syndromes are equal to zero; And
If the short syndromes include non-zero short syndromes, correcting the short codewords according to the non-zero short syndromes.
제4항에 있어서,
상기 긴 코드워드의 상기 긴 패리티에 따라서 상기 긴 코드워드에 대응하는 긴 신드롬을 계산하는 단계;
상기 긴 신드롬이 0과 동일한지의 여부를 판단하는 단계;
상기 긴 신드롬이 0과 동일하지 않다면, 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정했는지의 여부를 판단하는 단계; 및
상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정했다면, 상기 비제로 짧은 코드워드들에 따라서 상기 긴 신드롬을 정정하여 정정된 긴 신드롬을 얻는 단계를 더 포함하는, 에러 정정 코드의 부호화 및 복호화 방법.
5. The method of claim 4,
Calculating a long syndrome corresponding to the long codeword according to the long parity of the long codeword;
Determining whether the long syndrome is equal to zero;
If the long syndrome is not equal to zero, determining whether the non-zero short codewords have successfully corrected the corresponding short codewords; And
If the nonzero short codewords have successfully corrected the corresponding short codewords, correcting the long syndrome according to the nonzero short codewords to obtain a corrected long syndrome. Encoding and Decoding Method.
제5항에 있어서, 상기 긴 신드롬이 0과 동일하지 않고 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정하지 않았다면, 상기 긴 신드롬에 따라서 상기 짧은 코드워드들의 에러 있는 짧은 코드워드들을 정정하는 단계를 더 포함하는, 에러 정정 코드의 부호화 및 복호화 방법.6. The faulty short codeword of claim 5, wherein the long syndrome is not equal to zero and the non-zero short codewords did not successfully correct the corresponding short codewords. And correcting the error. 제1항에 있어서, 상기 긴 코드워드 및 상기 짧은 코드워드들은 BCH(Bose, Ray-Chaudhuri and Hocquenghem) 코드들 또는 RS(Reed-Solomon) 코드들인 것인, 에러 정정 코드의 부호화 및 복호화 방법.The method of claim 1, wherein the long codeword and the short codeword are BCH (Bose, Ray-Chaudhuri and Hocquenghem) codes or RS (Reed-Solomon) codes. 에러 정정 코드를 위한 코더-디코더에 있어서,
원시 데이터를 수신하고, 상기 원시 데이터를 다수의 데이터 세그먼트들로 분할하며, 상기 데이터 세그먼트들에 대응하는 다수의 짧은 패리티들을 생성하고, 상기 짧은 패리티들을 상기 데이터 세그먼트들에 부가하여 다수의 짧은 코드워드들을 얻으며, 상기 짧은 코드워드들을 연결하여 코드 데이터를 얻어, 상기 코드 데이터에 대응하는 긴 패리티를 생성하며, 상기 긴 패리티를 상기 코드 데이터에 부가하여 저장 매체에 저장될 에러 정정 코드로서 긴 코드워드를 얻는 에러 정정 코드(ECC) 인코더; 및
상기 저장 매체로부터 상기 긴 코드워드를 판독하고, 상기 긴 코드워드로부터 상기 짧은 코드워드들을 검색하며, 상기 짧은 코드워드들의 상기 짧은 패리티들에 따라서 상기 짧은 코드워드들에 대응하는 다수의 짧은 신드롬들을 계산하고, 상기 짧은 신드롬들이 0과 동일한지의 여부를 판단하여, 상기 짧은 신드롬들이 비제로 짧은 신드롬들을 포함한다면, 상기 비제로 짧은 신드롬들에 따라서 상기 짧은 코드워드들을 정정하는 에러 정정 코드(ECC) 디코더를 포함하는, 에러 정정 코드용의 코더-디코더.
In the coder-decoder for error correction code,
Receive raw data, split the raw data into multiple data segments, generate multiple short parities corresponding to the data segments, and add the short parities to the data segments to generate multiple short codewords Obtain a code data by concatenating the short codewords to generate a long parity corresponding to the code data, and add the long parity to the code data to generate a long codeword as an error correction code to be stored in a storage medium. An error correction code (ECC) encoder; And
Read the long codeword from the storage medium, retrieve the short codewords from the long codeword, and calculate a plurality of short syndromes corresponding to the short codewords according to the short parities of the short codewords. Determine whether the short syndromes are equal to zero, and if the short syndromes include nonzero short syndromes, an error correction code (ECC) decoder that corrects the short codewords according to the nonzero short syndromes. Coder-decoder for error correction code, including.
제8항에 있어서, 상기 ECC 인코더는 제1생성 다항식에 따라서 상기 데이터 세그먼트들에 대응하는 상기 짧은 패리티들을 생성하고, 제2생성 다항식에 따라서 상기 코드 데이터에 대응하는 상기 긴 패리티를 생성하며, 상기 제1생성 다항식은 상기 제2생성 다항식의 적어도 하나의 최소 다항식의 함수인 것인, 에러 정정 코드용의 코더-디코더.9. The apparatus of claim 8, wherein the ECC encoder generates the short parities corresponding to the data segments according to a first generation polynomial, and generates the long parity corresponding to the code data according to a second generation polynomial, Wherein the first generated polynomial is a function of at least one minimum polynomial of the second generated polynomial. 제9항에 있어서, 상기 제1생성 다항식은 상기 제2생성 다항식의 적어도 하나의 최소 다항식의 최소 공배수인 것인, 에러 정정 코드용의 코더-디코더.10. The coder-decoder of claim 9, wherein the first generated polynomial is a least common multiple of at least one minimum polynomial of the second generated polynomial. 제9항에 있어서, 상기 ECC 인코더는
상기 제1생성 다항식에 따라서 상기 데이터 세그먼트들에 대응하는 상기 짧은 패리티들을 생성하는 짧은 패리티 인코더;
상기 짧은 패리티들을 상기 데이터 세그먼트들에 부가하여 상기 짧은 코드워드들을 얻는 제1부가 모듈;
상기 짧은 코드워드들을 연결하여 상기 코드 데이터를 얻고 상기 제2생성 다항식에 따라서 상기 코드 데이터에 대응하는 상기 긴 패리티를 생성하는 긴 패리티 인코더; 및
상기 긴 패리티를 상기 코드 데이터에 부가하여 상기 긴 코드워드들을 얻는 제2부가 모듈을 포함하는 것인, 에러 정정 코드용의 코더-디코더.
10. The method of claim 9, wherein the ECC encoder is
A short parity encoder for generating the short parities corresponding to the data segments according to the first generation polynomial;
A first addition module to add the short parities to the data segments to obtain the short codewords;
A long parity encoder concatenating the short codewords to obtain the code data and generating the long parity corresponding to the code data according to the second generation polynomial; And
And a second sub-module for adding the long parity to the code data to obtain the long codewords.
제8항에 있어서, 상기 ECC 디코더는 부가적으로 상기 긴 코드워드의 상기 긴 패리티에 따라서 상기 긴 코드워드에 대응하는 긴 신드롬을 계산하고, 상기 긴 신드롬이 0과 동일한지의 여부를 판단하여, 상기 긴 신드롬이 0과 동일하지 않다면, 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드들을 성공적으로 정정했는지의 여부를 판단하고, 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정했다면, 상기 비제로 짧은 코드워드들에 따라서 상기 긴 신드롬을 정정하여 정정된 긴 신드롬을 얻는 것인, 에러 정정 코드용의 코더-디코더.9. The method of claim 8, wherein the ECC decoder additionally calculates a long syndrome corresponding to the long codeword according to the long parity of the long codeword, determines whether the long syndrome is equal to zero, and If the long syndrome is not equal to zero, determining whether the nonzero short codewords have successfully corrected the corresponding short codes, and if the nonzero short codewords have successfully corrected the corresponding short codewords And correcting the long syndrome according to the non-zero short codewords to obtain a corrected long syndrome. 제12항에 있어서, 상기 긴 신드롬이 0과 동일하지 않고 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정하지 않았다면, 상기 ECC 디코더는 상기 긴 신드롬에 따라서 상기 짧은 코드워드들의 에러 있는 짧은 코드워드들을 정정하는 것인, 에러 정정 코드용의 코더-디코더.13. The ECC decoder of claim 12, wherein if the long syndrome is not equal to zero and the non-zero short codewords did not successfully correct the corresponding short codewords, the ECC decoder determines that the short codewords are in error according to the long syndrome. A coder-decoder for error correction code, which corrects for short codewords. 제12항에 있어서, 상기 ECC 디코더는
상기 짧은 코드워드들의 상기 짧은 패리티들에 따라서 상기 짧은 코드워드들의 상기 짧은 신드롬을 계산하고 상기 긴 코드워드의 상기 긴 패리티에 따라서 상기 긴 코드워드의 상기 긴 신드롬을 계산하는 신드롬 계산기; 및
상기 짧은 신드롬들이 0과 동일한지의 여부를 판단하여, 상기 짧은 신드롬들이 0과 동일하지 않다면 상기 비제로 짧은 신드롬들에 따라서 상기 짧은 코드워드들을 정정하며, 상기 긴 신드롬이 0과 동일한지의 여부를 판단하여, 상기 긴 신드롬이 0과 동일하지 않다면 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정했는지의 여부를 판단하고, 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정했다면 상기 비제로 짧은 코드워드들에 따라서 상기 긴 신드롬을 정정하여 정정된 긴 신드롬을 얻는 제어 회로를 포함하는 것인, 에러 정정 코드용의 코더-디코더.
The method of claim 12, wherein the ECC decoder is
A syndrome calculator for calculating the short syndrome of the short codewords according to the short parities of the short codewords and calculating the long syndrome of the long codeword according to the long parity of the long codeword; And
Determining whether the short syndromes are equal to zero, correcting the short codewords according to the non-zero short syndromes if the short syndromes are not equal to zero, and determining whether the long syndromes are equal to zero. Determine whether the non-zero short codewords have successfully corrected the corresponding short codewords if the long syndrome is not equal to zero, and the non-zero short codewords successfully correct the corresponding short codewords. And a control circuit for correcting the long syndrome according to the non-zero short codewords if corrected to obtain a corrected long syndrome.
제8항에 있어서, 상기 긴 코드워드 및 상기 짧은 코드워드들은 BCH 코드들 또는 RS 코드들인 것인 에러 정정 코드용의 코더-디코더.10. The coder-decoder of claim 8, wherein the long codeword and the short codewords are BCH codes or RS codes. 에러 정정 코드를 복호화하기 위한 방법에 있어서,
에러 정정 코드의 긴 코드워드를 수신하는 단계로서, 상기 긴 코드워드가 다수의 짧은 코드워드들 및 긴 패리티를 포함하고 상기 짧은 코드워드들 각각은 짧은 패리티를 포함하는 것인, 긴 코드워드의 수신 단계;
상기 긴 코드워드로부터 상기 짧은 코드워드들을 검색하는 단계;
상기 짧은 코드워드들의 짧은 패리티들에 따라서 상기 짧은 코드워드들에 대응하는 다수의 짧은 신드롬들을 계산하는 단계;
상기 짧은 신드롬들이 0과 동일한지의 여부를 판단하는 단계;
상기 짧은 신드롬들이 적어도 하나의 비제로 짧은 신드롬을 포함할 때, 상기 적어도 하나의 비제로 짧은 신드롬에 따라서 적어도 하나의 대응하는 짧은 코드워드를 정정하는 단계;
상기 긴 코드워드의 상기 긴 패리티에 따라서 상기 긴 코드워드에 대응하는 긴 신드롬을 계산하는 단계;
상기 긴 신드롬이 0과 동일한지의 여부를 판단하는 단계;
상기 긴 신드롬이 0과 동일하지 않으면, 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정했는지의 여부를 판단하는 단계; 및
상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정했다면, 상기 비제로 짧은 코드들에 따라서 상기 긴 신드롬을 정정하여 정정된 긴 신드롬을 얻는 단계를 포함하는, 에러 정정 코드의 복호화 방법.
In the method for decoding an error correction code,
Receiving a long codeword of an error correction code, wherein the long codeword includes a plurality of short codewords and long parity and each of the short codewords comprises short parity step;
Retrieving the short codewords from the long codeword;
Calculating a plurality of short syndromes corresponding to the short codewords according to the short parities of the short codewords;
Determining whether the short syndromes are equal to zero;
When the short syndromes include at least one nonzero short syndrome, correcting at least one corresponding short codeword according to the at least one nonzero short syndrome;
Calculating a long syndrome corresponding to the long codeword according to the long parity of the long codeword;
Determining whether the long syndrome is equal to zero;
If the long syndrome is not equal to zero, determining whether the nonzero short codewords have successfully corrected the corresponding short codewords; And
If the nonzero short codewords have successfully corrected the corresponding short codewords, correcting the long syndrome according to the nonzero short codes to obtain a corrected long syndrome. .
제16항에 있어서, 상기 긴 신드롬이 0과 동일하지 않고 상기 비제로 짧은 코드워드들이 상기 대응하는 짧은 코드워드들을 성공적으로 정정하지 않았다면, 상기 긴 신드롬에 따라서 상기 짧은 코드워드들의 에러 있는 짧은 코드워드들을 정정하는 단계를 더 포함하는, 에러 정정 코드의 복호화 방법.17. The erroneous short codeword of claim 16, wherein if the long syndrome is not equal to zero and the non-zero short codewords did not successfully correct the corresponding short codewords. And correcting the error. 제16항에 있어서, 상기 짧은 패리티들은 제1생성 다항식에 따라서 생성되고, 상기 긴 패리티가 제2생성 다항식에 따라서 생성되며, 상기 제1생성 다항식은 상기 제2생성 다항식의 적어도 하나의 최소 다항식의 함수인 것인, 에러 정정 코드의 복호화 방법.17. The method of claim 16, wherein the short parities are generated according to a first generation polynomial, the long parity is generated according to a second generation polynomial, and wherein the first generation polynomial is at least one minimum polynomial of the second generation polynomial. A method of decoding an error correction code, which is a function. 제18항에 있어서, 상기 제1생성 다항식은 상기 제2생성 다항식의 적어도 하나의 최소 다항식의 최소 공배수인 것인, 에러 정정 코드의 복호화 방법.19. The method of claim 18, wherein the first generated polynomial is a least common multiple of at least one minimum polynomial of the second generated polynomial. 제16항에 있어서, 상기 긴 코드워드 및 상기 짧은 코드워드들은 BCH 코드들 또는 RS 코드들인 것인, 에러 정정 코드의 복호화 방법.17. The method of claim 16 wherein the long codeword and the short codewords are BCH codes or RS codes.
KR1020127002747A 2009-07-01 2009-08-07 Coding and decoding method and codec of error correction code KR101314232B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US22246809P 2009-07-01 2009-07-01
US61/222,468 2009-07-01
PCT/CN2009/073148 WO2011000176A1 (en) 2009-07-01 2009-08-07 Coding and decoding method and codec of error correction code

Publications (2)

Publication Number Publication Date
KR20130014484A true KR20130014484A (en) 2013-02-07
KR101314232B1 KR101314232B1 (en) 2013-10-02

Family

ID=43391438

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127002747A KR101314232B1 (en) 2009-07-01 2009-08-07 Coding and decoding method and codec of error correction code

Country Status (4)

Country Link
KR (1) KR101314232B1 (en)
CN (1) CN101938280B (en)
TW (1) TWI397811B (en)
WO (1) WO2011000176A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101636406B1 (en) * 2015-01-30 2016-07-05 고려대학교 산학협력단 Preprocessing apparatus and method for low latency of syndrome calculation in bch decoder
KR20190006189A (en) * 2016-06-19 2019-01-17 엘지전자 주식회사 Data transmission method and transmitter

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8806309B2 (en) * 2011-06-13 2014-08-12 Silicon Motion Inc. Method for controlling message-passing algorithm based decoding operation by referring to statistics data of syndromes of executed iterations and related control apparatus thereof
TWI566091B (en) 2015-09-10 2017-01-11 慧榮科技股份有限公司 Method for decoding an error correction code, and associated decoding circuit
US20180358989A1 (en) * 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes
CN115278769A (en) * 2021-04-30 2022-11-01 华为技术有限公司 Data transmission method, device and system and readable storage medium

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4630271A (en) * 1983-01-20 1986-12-16 Nippon Hoso Kyokai Error correction method and apparatus for data broadcasting system
US5642366A (en) * 1994-07-05 1997-06-24 Adaptec, Inc. Global parity symbol for interleaved reed-solomon coded data
US5782799A (en) * 1997-02-07 1998-07-21 Sarcos, Inc. Method for automatic dosing of drugs
JP2003323751A (en) * 2002-04-30 2003-11-14 Sony Corp Magneto-optical disk
CN100557715C (en) * 2006-08-11 2009-11-04 福昭科技(深圳)有限公司 Utilize one group of ECC circuit parallel to handle the method for multi-group data
US7949927B2 (en) * 2006-11-14 2011-05-24 Samsung Electronics Co., Ltd. Error correction method and apparatus for predetermined error patterns
TWI332611B (en) * 2007-05-24 2010-11-01 Realtek Semiconductor Corp Method for writing data in flash memory and error correction coding/decoding method thereof
US7853857B2 (en) * 2007-09-14 2010-12-14 Motorola Mobility, Inc. Multi-layer cyclic redundancy check code in wireless communication system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101636406B1 (en) * 2015-01-30 2016-07-05 고려대학교 산학협력단 Preprocessing apparatus and method for low latency of syndrome calculation in bch decoder
KR20190006189A (en) * 2016-06-19 2019-01-17 엘지전자 주식회사 Data transmission method and transmitter
US10411834B2 (en) * 2016-06-19 2019-09-10 Lg Electronics Inc. Data transmission method and apparatus
US10581557B2 (en) 2016-06-19 2020-03-03 Lg Electronics Inc. Data transmission method and apparatus
US11271680B2 (en) 2016-06-19 2022-03-08 Lg Electronics Inc. Data transmission method and apparatus
US11791935B2 (en) 2016-06-19 2023-10-17 Lg Electronics Inc. Data transmission method and apparatus

Also Published As

Publication number Publication date
TWI397811B (en) 2013-06-01
WO2011000176A1 (en) 2011-01-06
CN101938280A (en) 2011-01-05
TW201102807A (en) 2011-01-16
KR101314232B1 (en) 2013-10-02
CN101938280B (en) 2013-09-25
WO2011000176A8 (en) 2012-12-13

Similar Documents

Publication Publication Date Title
US8468432B2 (en) Coder-decoder and method for encoding and decoding an error correction code
US10243589B2 (en) Multi-bit error correction method and apparatus based on a BCH code and memory system
CA3193950C (en) Forward error correction with compression coding
US7788570B1 (en) Optimized Reed-Solomon decoder
US7246294B2 (en) Method for iterative hard-decision forward error correction decoding
KR101314232B1 (en) Coding and decoding method and codec of error correction code
KR20090018252A (en) Decoder for increasing throughput using double buffering structure and pipelining technique and decoding method thereof
US8806295B2 (en) Mis-correction and no-correction rates for error control
CN111628780B (en) Data encoding and decoding method and data processing system
US8370727B2 (en) Method and circuit for decoding an error correction code
CN111597072B (en) Error control coding ECC system and memory device including the same
US7231575B2 (en) Apparatus for iterative hard-decision forward error correction decoding
US20050154964A1 (en) Data retrieval from a storage device using a combined error correction and detection approach
US8365053B2 (en) Encoding and decoding data using store and exclusive or operations
US8694850B1 (en) Fast erasure decoding for product code columns
JP2009100369A (en) Error detection/correction circuit, semiconductor memory controller, and error detection/correction method
JPH08293802A (en) Interleaving type error correction method
US9236890B1 (en) Decoding a super-code using joint decoding of underlying component codes
US8181096B2 (en) Configurable Reed-Solomon decoder based on modified Forney syndromes
CN111277830B (en) Encoding method, decoding method and device
CN113922825A (en) Low delay decoder for error correction codes
KR20140074600A (en) BCH decoder, memory system having the same and decoding method
WO2008069465A1 (en) Method and apparatus for checking correction errors using cyclic redundancy check
KR20050056071A (en) Parallel reed-solomon encoding apparatus

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160713

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170727

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190705

Year of fee payment: 7