KR20130014484A - Coding and decording method and codec of error correction code - Google Patents
Coding and decording method and codec of error correction code Download PDFInfo
- 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
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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
-
- 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
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
본 발명은 통신에 관한 것이며, 보다 상세하게는, 에러 정정 코드들의 부호화 및 복호화에 관한 것이다.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
단계 108에서 에러 탐색 다항식의 계수들을 계산하기 위해선 장시간을 필요로 한다. 단계 110에서 치엔 검색을 수행함으로써 에러 탐색 다항식의 근들을 계산하는데에도 마찬가지로 장시간을 필요로 한다. 종래 방법(100)에 따르면, 임의의 신드롬들이 0과 동일하지 않다면, 단계 108 및 단계 110가 수행되어 에러 정정 코드의 에러 비트들을 정정함으로써, 복호화 과정중에 지연을 초래하고 시스템 성능을 저하시킨다. 일부 신드롬들이 0과 동일하지 않다면, 단계 108 및 단계 110 각각에서 에러 탐색 다항식의 계수들 및 근들의 계산을 피하는 방법으로 에러 정정 코드가 정정되면, 복호화 과정의 지연 기간이 감소될 수 있고 디코더 및 데이터 저장 시스템의 성능이 개선될 수 있다. 따라서, 에러 정정 코드를 부호화 및 복호화하기 위한 새로운 방법이 필요로 된다.In
종래 기술의 결점들을 극복하기 위하여, 에러 정정 코드의 부호화 및 복호화 방법 및 코덱이 제공된다.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
도 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
다음, 부가 모듈(304)은 짧은 패리티들(PS) 각각을 데이터 세그먼트들에 부가하여 다수의 짧은 코드워드들(CS)를 얻는다(단계 358).The
다음, 긴 코드워드 인코더(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
도 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
도 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
도 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)
일 실시예에서, 짧은 코드워드들을 부호화하기 위한 제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
도 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
도 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
모든 짧은 코드워드들의 짧은 신드롬들이 계산된 후, 신드롬 계산기(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
모든 짧은 신드롬들이 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.
저장 매체로부터 상기 긴 코드워드를 판독하는 단계;
상기 긴 코드워드로부터 상기 짧은 코드워드들을 검색하는 단계;
상기 짧은 코드워드들의 짧은 패리티들에 따라서 상기 짧은 코드워드들에 대응하는 다수의 짧은 신드롬들을 계산하는 단계;
상기 짧은 신드롬들이 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.
상기 긴 코드워드의 상기 긴 패리티에 따라서 상기 긴 코드워드에 대응하는 긴 신드롬을 계산하는 단계;
상기 긴 신드롬이 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.
원시 데이터를 수신하고, 상기 원시 데이터를 다수의 데이터 세그먼트들로 분할하며, 상기 데이터 세그먼트들에 대응하는 다수의 짧은 패리티들을 생성하고, 상기 짧은 패리티들을 상기 데이터 세그먼트들에 부가하여 다수의 짧은 코드워드들을 얻으며, 상기 짧은 코드워드들을 연결하여 코드 데이터를 얻어, 상기 코드 데이터에 대응하는 긴 패리티를 생성하며, 상기 긴 패리티를 상기 코드 데이터에 부가하여 저장 매체에 저장될 에러 정정 코드로서 긴 코드워드를 얻는 에러 정정 코드(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.
상기 제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.
상기 짧은 코드워드들의 상기 짧은 패리티들에 따라서 상기 짧은 코드워드들의 상기 짧은 신드롬을 계산하고 상기 긴 코드워드의 상기 긴 패리티에 따라서 상기 긴 코드워드의 상기 긴 신드롬을 계산하는 신드롬 계산기; 및
상기 짧은 신드롬들이 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.
에러 정정 코드의 긴 코드워드를 수신하는 단계로서, 상기 긴 코드워드가 다수의 짧은 코드워드들 및 긴 패리티를 포함하고 상기 짧은 코드워드들 각각은 짧은 패리티를 포함하는 것인, 긴 코드워드의 수신 단계;
상기 긴 코드워드로부터 상기 짧은 코드워드들을 검색하는 단계;
상기 짧은 코드워드들의 짧은 패리티들에 따라서 상기 짧은 코드워드들에 대응하는 다수의 짧은 신드롬들을 계산하는 단계;
상기 짧은 신드롬들이 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. .
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)
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)
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)
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 |
-
2009
- 2009-08-07 KR KR1020127002747A patent/KR101314232B1/en active IP Right Grant
- 2009-08-07 WO PCT/CN2009/073148 patent/WO2011000176A1/en active Application Filing
- 2009-08-10 TW TW098126686A patent/TWI397811B/en active
- 2009-08-10 CN CN2009101680232A patent/CN101938280B/en active Active
Cited By (6)
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 |