KR20180059150A - 1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러 - Google Patents

1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러 Download PDF

Info

Publication number
KR20180059150A
KR20180059150A KR1020160158369A KR20160158369A KR20180059150A KR 20180059150 A KR20180059150 A KR 20180059150A KR 1020160158369 A KR1020160158369 A KR 1020160158369A KR 20160158369 A KR20160158369 A KR 20160158369A KR 20180059150 A KR20180059150 A KR 20180059150A
Authority
KR
South Korea
Prior art keywords
data
xor
lfsr
xor operator
bit
Prior art date
Application number
KR1020160158369A
Other languages
English (en)
Inventor
김수진
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020160158369A priority Critical patent/KR20180059150A/ko
Priority to US15/620,909 priority patent/US10741212B2/en
Publication of KR20180059150A publication Critical patent/KR20180059150A/ko
Priority to US16/987,977 priority patent/US11611359B2/en
Priority to US16/988,026 priority patent/US11515897B2/en
Priority to US18/185,163 priority patent/US20230231579A1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6575Implementations based on combinatorial logic, e.g. Boolean circuits

Abstract

에러 정정 코드(ECC) 인코더는, k비트의 오리지널 데이터의 각각의 비트 데이터를 병렬로 입력받아 복수의 XOR 연산들을 수행하여 n비트의 코드워드를 구성하는 (n-k)비트의 패리티 비트들의 각각의 비트 데이터를 병렬로 출력하는 복수개의 XOR 연산기들을 포함한다.

Description

1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러{ECC encoder and encoding method capable of encoding during one clock cycle and memory controller having the ECC encoder}
본 개시의 여러 실시예들은 에러 정정 코드(Error Correction Code; 이하 ECC) 인코더에 관한 것으로서, 특히 1 클럭 인코딩이 가능한 ECC 인코더 및 ECC 인코딩 방법과, 그리고 그 ECC 인코더를 포함하는 메모리 컨트롤러에 관한 것이다.
불휘발성(non-volatile) 메모리는 전원이 공급되지 않아도 저장된 데이터가 유지되는 메모리로서, 이를 기반으로 하는 데이터 저장장치는 스마트폰, 디지털 카메라 등 포터블 기기 및 컴퓨터 등에 널리 사용되고 있다. 불휘발성 메모리, 특히 낸드(NAND) 메모리의 집적도는, 미세 공정을 사용하여 셀의 크기와 회로 선폭을 줄이는 기술 및 셀 당 저장할 수 있는 비트 수를 늘려주는 멀티-레벨 셀(multi-level cell; 이하 MLC) 기술에 의해 향상되었다. 최근에는 기존의 2차원 형태인 플래너(planar) 구조가 갖는 미세 공정화의 한계를 극복하고 메모리의 집적도를 지속적으로 높이기 위한 새로운 기술로 셀을 3차원 배열 형태로 구성하는 수직형(vertical) 구조가 개발되었다.
메모리의 집적도를 높이기 위한 미세 공정화 및 MLC화는 메모리 자체의 신뢰성을 하락시키는 원인이 되고 있다. 공정 미세화로 인한 회로 선폭 감소에 의한 셀 간 간섭(cell-to-cell interference)에 취약해지고, MLC화로 각 레벨 간의 간격이 줄어들어 인접 레벨 간 겹치는 영역이 증가하기 때문이다. 이와 같이 메모리 자체의 오류가 증가하는 상황에서, 데이터 저장 장치의 신뢰성을 높은 수준으로 보장하기 위해서는 에러 정정 코드(Error Correction Code; 이하 ECC) 기술을 사용할 필요가 있다.
한편 상변화 램(PCRAM; Phase Change RAM), 자기메모리(MRAM; Magnetoresistive RAM), 나노 플로팅 게이트 메모리(NFGM; Nano Floating Gate Memory), 저항성 램(RRAM; Resistive RAM), 또는 폴리머 램(Polymer RAM)과 같이 최근 활발하게 연구가 이루어지고 있는 불휘발성 메모리의 경우, 셀 특성으로 인하여 데이터 "0"과 데이터 "1"을 구분하는 리드 마진(read margin)이 상대적으로 작다. 따라서 이와 같은 불휘발성 메모리의 경우, 싱글 레벨 셀(single-level cell)의 구조를 갖더라도 낸드 메모리에 비하여 상대적으로 높은 에러율(error rate)을 나타내며, 그 결과 이 경우 ECC 기술의 적용에 대한 요구가 더욱 더 크다. ECC 기술을 적용하는데 있어서, 상대적으로 에러율이 낮은 경우에는 단순한 해밍 코드(Hamming Code)를 이용하여 에러 탐색 및 정정을 수행할 수 있다. 반면 상대적으로 많은 에러율을 나타내는 경우에는, BCH(Bose-Chaudhuri-Hochquenghem) 코드 또는 RS(Reed-Solomon) 코드를 사용한다. 이진 BCH 코드는 심볼 단위를 사용하는 RS 코드에 비하여, 코드율이 높은 코드를 설계할 수 있고, 보다 간단한 회로를 구현할 수 있다는 장점을 갖는다.
본 출원이 해결하고자 하는 과제는, 반복 수행되는 XOR 연산과 리니어 피드백 쉬프트 레지스터(LFSR; Linear Feedback Shift Register)의 동작을 이용하여 전체 ECC 인코딩 과정을 배타적 논리곱(Exclusive OR; 이하 XOR) 연산만으로 수행되도록 하는 XOR 연산식(XOR equation)을 추출함으로써 XOR 연산기들로만 로직을 구성하여 1 클럭 주기 동안 모든 ECC 인코딩 동작이 수행되도록 할 수 있는 ECC 인코더를 제공하는 것이다.
본 출원이 해결하고자 하는 다른 과제는, 위와 같이 1 클럭 주기 동안 모든 ECC 인코딩 동작이 수행되도록 할 수 있는 ECC 인코딩 방법을 제공하는 것이다.
본 출원이 해결하고자 하는 또 다른 과제는, 위와 같은 ECC 인코더를 포함하는 메모리 컨트롤러를 제공하는 것이다.
본 개시의 일 예에 따른 ECC 인코더는, k비트의 오리지널 데이터의 각각의 비트 데이터를 병렬로 입력받아 복수의 XOR 연산들을 수행하여 n비트의 코드워드를 구성하는 (n-k)비트의 패리티 비트들의 각각의 비트 데이터를 병렬로 출력하는 복수개의 XOR 연산기들을 포함한다.
본 개시의 일 예에 따른 메모리 컨트롤러는, 호스트와 메모리 장치 사이에서 호스트의 명령에 의해 상기 메모리 장치를 제어하며, 메모리 장치에 쓰여질 데이터에 대한 에러 정정 인코딩을 수행하여 패리티 비트가 추가된 코드 워드를 생성하는 ECC 인코더와, 그리고 메모리 장치에서 읽은 데이터에 대한 에러 정정 디코딩을 수행하는 ECC 디코더를 포함한다. ECC 인코더는, k비트의 오리지널 데이터의 각각의 비트 데이터를 병렬로 입력받아 복수의 XOR 연산들을 수행하여 n비트의 코드워드를 구성하는 (n-k)비트의 패리티 비트들의 각각의 비트 데이터를 병렬로 출력하는 복수개의 XOR 연산기들을 포함한다.
본 개시의 일 예에 따른 ECC 인코딩 방법은, 코드워드의 패리티 비트들의 각각의 비트 데이터가 임의변수들에 대한 XOR 연산으로만 표현되는 XOR 연산식을 도출하는 단계와, XOR 연산식에 부합되도록 복수개의 XOR 연산기들로 구성되는 인코딩 로직을 구성하는 단계와, 그리고 인코딩 로직에 k비트의 오리지널 데이터의 각각의 비트 데이터를 병렬로 입력하여 복수개의 XOR 연산기들의 연산에 의해 패리티 비트들의 각각의 비트 데이터가 병렬로 출력되도록 하는 단계를 포함한다.
여러 실시예들에 따르면, 반복 수행되는 XOR 연산과 리니어 피드백 쉬프트 레지스터(Linear Feedback Shift Register; 이하 LFSR)의 동작을 이용하여 전체 ECC 인코딩 과정을 XOR 연산만으로 수행되도록 하는 XOR 연산식(pre-XOR equation)을 추출함으로써 XOR 연산기들로만 로직을 구성하여 1 클럭 주기 동안 모든 ECC 인코딩 동작이 수행되도록 할 수 있다는 이점이 제공된다.
도 1은 본 개시의 일 예에 따른 메모리 컨트롤러를 나타내 보인 블록도이다.
도 2는 본 개시의 일 예에 따른 ECC 인코더의 입력 데이터 및 출력 데이터를 나타내 보인 도면이다.
도 3은 본 개시의 일 예에 다른 ECC 인코더의 로직 구성을 위해 수행되는 XOR 연산식 도출 과정에서 이용되는 ECC 인코딩 반복 연산 로직을 나타내 보인 회로도이다.
도 4는 도 3의 ECC 인코딩 반복 연산 로직의 반복 연산에 의한 ECC 인코딩 과정을 설명하기 위해 나타내 보인 표이다.
도 5는 본 개시의 일 예에 다른 ECC 인코더의 로직 구성을 위해 수행되는 XOR 연산식 도출 과정 중 오리지널 데이터의 각각의 비트값에 임의변수를 할당하는 과정을 설명하기 위해 나타내 보인 표이다.
도 6 내지 도 13은 본 개시의 일 예에 다른 ECC 인코더의 로직 구성을 위해 수행되는 XOR 연산식 도출 과정 중 임의변수를 이용한 ECC 인코딩 반복 연산 로직의 반복 연산 과정을 설명하기 위해 나타내 보인 표들이다.
도 14는 도 6 내지 도 13의 반복 연산 과정 결과인 XOR 연산식과, 중복 연산이 제거된 XOR 연산식과, 패리티 비트값의 예를 나타내 보인 표이다.
도 15는 도 14의 XOR 연산식을 적용하여 구현한 ECC 인코더를 나타내 보인 회로도이다.
도 16은 도 14의 중복 연산이 제거된 XOR 연산식을 적용하여 구현한 ECC 인코더를 나타내 보인 회로도이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 부재를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 또한, 어느 부재의 "상"에 위치하거나 "상부", "하부", 또는 "측면"에 위치한다는 기재는 상대적인 위치 관계를 의미하는 것이지 그 부재에 직접 접촉하거나 또는 사이 계면에 다른 부재가 더 도입되는 특정한 경우를 한정하는 것은 아니다. 또한, 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다.
도 1은 본 개시의 일 예에 따른 메모리 컨트롤러를 나타내 보인 블록도이다. 도 1을 참조하면, 메모리 컨트롤러(Memory Controller)(100)는 호스트(Host)와의 인터페이스를 수행하고, 또한 메모리 장치(Memory Device)의 제어 및 억세스(access)를 제공한다. 일반적으로 "호스트"는 메모리 컨트롤러(100)에 데이터를 보내고 받는 시스템의 업스트림 파트(upstream part)를 의미할 수 있다. 메모리 장치는, 낸드 플래시 메모리와 같은 일반적인 메모리이거나, 또는 상변화 램(PCRAM), 자기메모리(MRAM), 나노 플로팅 게이트 메모리(NFGM), 저항성 램(RRAM), 또는 폴리머 램(Polymer RAM)과 같은 뉴 메모리(new memory)일 수 있다. 메모리 컨트롤러(100)는 ECC 인코더(ECC Encoder)(110) 및 ECC 디코더(ECC Decoder)(120)를 포함할 수 있다. ECC 인코더(110)는 메모리 장치에 쓰여질 오리지널 데이터에 대한 ECC 인코딩을 수행하여 패리티 비트들(parity bits)이 추가된 코드워드(codeword)를 생성할 수 있다. ECC 디코더(120)는 메모리 장치에서 읽은 데이터에 대한 ECC 디코딩을 수행하여 에러 정정된 코드워드를 출력한다. 메모리 컨트롤러(100)는, ECC 디코더(120)에 의해 에러 정정된 코드워드에서 패리티 비트들이 제거된 에러 정정된 오리지널 데이터를 호스트에 전달한다.
도 2는 본 개시의 일 예에 따른 ECC 인코더의 입력 데이터 및 출력 데이터를 나타내 보인 도면이다. 도 2를 참조하면, ECC 인코더(110)는 호스트로부터 k비트의 오리지널 데이터(210)를 입력받는다. ECC 인코더(110)는, 오리지널 데이터(210)의 모든 비트값을 병렬로 입력받는다. 비록 도면에 나타내지는 않았지만, 이를 위해 메모리 컨트롤러(100)의 호스트 인터페이스는 병렬 데이터 전송에 적절한 로직 구성으로 이루어질 수 있다. ECC 인코더(110)는, k비트의 오리지널 데이터(210)에 대한 ECC 인코딩을 수행하여 n비트의 코드워드(220)를 출력시킨다. ECC 인코딩은 BCH 코드를 이용하여 수행할 수 있다. ECC 인코더(110)로부터 출력되는 n비트의 코드워드(220)는, k비트의 오리지널 데이터와 (n-k)비트의 패리티 비트들을 포함한다. n비트의 코드워드(220) 또한 병렬로 출력된다. 비록 도면에 나타내지는 않았지만, 이를 위해 메모리 컨트롤러(100)의 메모리 인터페이스는 병렬 데이터 전송에 적절한 로직 구성으로 이루어질 수 있다.
본 개시의 일 예에 따른 ECC 인코더(110)는, XOR 연산기들로만 이루어지는 로직 구성을 갖는다. 이와 같은 로직 구성을 구현하기 위해서는 먼저 반복 수행되는 XOR 연산과 LFSR의 쉬프트 레지스팅(shift registing) 동작을 이용하여 전체 ECC 인코딩 과정을 XOR 연산만으로 수행되도록 하는 XOR 연산식(XOR equation)을 추출할 필요가 있다. 이하에서는 도 3 내지 도 13을 참조하여 이와 같은 XOR 연산식 도출 과정을 설명하기로 한다.
도 3은 본 개시의 일 예에 다른 ECC 인코더의 로직 구성을 위해 수행되는 XOR 연산식 도출 과정 중 구성되는 ECC 인코딩 반복 연산 로직을 나타내 보인 회로도이다. 도 3을 참조하면, LFSR과 XOR 연산을 이용한 반복 연산을 통해 ECC 인코딩을 수행하는 ECC 인코딩 반복 연산 로직(300)을 구성한다. ECC 인코딩 반복 연산 로직(300)은 k비트의 오리지널 데이터(original data)를 입력받아 n비트의 코드워드(codeword)를 출력한다. 이하에서는 오리지널 데이터의 비트수(k)가 7인 경우를 예로 들기로 한다. 그러나 이는 단지 하나의 예시로서 오리지널 데이터의 비트수(k)가 7보다 적거나 많은 경우에도 동일한 원리로 적용될 수 있다. 코드워드의 비트수(n)는 식 n=2m-1(m은 3 이상의 정수)에 의해 정의되고, 에러 정정에 필요한 패리티 비트수(n-k)는 식 n-k ≤ mt(t는 에러 정정 능력)에 의해 정의된다. ECC 인코딩 반복 연산 로직(300)을 구성하는데 필요한 LFSR들의 개수는 (n-k)개이다.
오리지널 데이터의 비트수(k)가 7인 경우, 코드워드의 비트수(n)는 오리지널 데이터의 비트수(k)인 7보다 커야 하므로, 정수 "m"의 최소값은 4가 되어 코드워드의 비트수(n)는 15가 된다. 그리고 에러 정정 능력(t)이 2인 경우, 에러 정정에 필요한 패리티 비트수(n-k)는 최소 8이 되어야 한다. 오리지널 데이터의 비트수(k)가 7이고, 8비트의 패리티 비트들을 포함하는 코드워드의 비트수(n)가 15인 경우, ECC 인코딩 반복 연산 로직(300)은 8(n-k=8)개의 LFSR들(311-318) 및 4개의 XOR 연산기들(321-324)로 구성된다.
구체적으로 제1 LFSR(311)은 제1 XOR 연산기(321)로부터 출력되어 피드백 되는 피드백데이터를 입력받고 다음 단계에서 제4 XOR 연산기(324)로 저장하고 있던 데이터를 전달한다. 제4 XOR 연산기(324)는 제1 XOR 연산기(321)로부터 피드백 되는 피드백데이터와 제1 LFSR(311)로부터 전달되는 데이터에 대해 XOR 연산을 수행하고 그 결과데이터를 제2 LFSR(312)에 입력시킨다. 제2 LFSR(312)는 다음 단계에서 제3 XOR 연산기(323)로 저장하고 있던 데이터를 전달한다. 제3 XOR 연산기(323)는 제1 XOR 연산기(321)로부터 피드백되는 피드백데이터와 제2 LFSR(312)로부터 전달되는 데이터에 대해 XOR 연산을 수행하고 그 결과데이터를 제3 LFSR(313)에 입력시킨다. 제3 LFSR(313)은 다음 단계에서 제4 LFSR(314)로 저장하고 있던 데이터를 전달한다.
제4 LFSR(314)은 다음 단계에서 제2 XOR 연산기(322)로 저장하고 있던 데이터를 전달한다. 제2 XOR 연산기(322)는 제1 XOR 연산기(321)의 출력데이터와 제4 LFSR(314)로부터 전달되는 데이터에 대해 XOR 연산을 수행하고 그 결과데이터를 제5 LFSR(315)에 입력시킨다. 제5 LFSR(315)은 다음 단계에서 제6 LFSR(316)로 저장하고 있던 데이터를 전달한다. 제6 LFSR(316)은 다음 단계에서 제7 LFSR(317)로 저장하고 있던 데이터를 전달한다. 제7 LFSR(317)은 다음 단계에서 제8 LFSR(318)로 저장하고 있던 데이터를 전달한다. 제8 LFSR(318)은, 다음 단계에서 제1 XOR 연산기(321)로 저장하고 있던 데이터를 전달한다.
8개의 LFSR들(311-318) 각각의 데이터 쉬프팅 동작과, 4개의 XOR 연산기들(321-324) 각각의 XOR 연산은 입력되는 클럭에 동기되어 수행된다. ECC 인코딩 반복 연산 로직(300)으로 입력되는 오리지널 데이터(original data)는, 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되어 코드워드(codeword)의 일부를 구성하는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 일 예에서 ECC 인코딩 반복 연산 로직(300)으로 입력되는 오리지널 데이터(original data)는 LSB(Least Significant Bit)부터 MSB(Most Significant Bit)에 이르기까지 한 비트씩 순차적으로 입력된다. 오리지널 데이터(original data)의 입력 또한 입력되는 클럭에 동기되어 이루어진다.
제8 LFSR(318)의 출력라인(333)은 제2 출력단자(342)와 결합된다. 제8 LFSR(318)로부터 전달되는 데이터는, 반복 연산이 이루어지는 동안에는 제1 XOR 연산기(321)에 입력되고, 반복 연산이 모두 종료된 후에는 제2 출력단자(342)를 통해 출력된다. 이때 제1 LFSR(311)부터 제8 LFSR(318)에 이르기까지 각각 저장되어 있던 데이터는 제2 출력단자(342)를 통해 순차적으로 출력되어 코드워드의 나머지, 즉 코드워드의 패리티 비트들을 구성한다.
도 4는 도 3의 ECC 인코딩 반복 연산 로직(300)의 반복 연산에 의한 ECC 인코딩 과정의 일 예를 설명하기 위해 나타내 보인 표이다. 이하에서는 오리지널 데이터가 "1010110"인 경우를 예로 들어 설명하기로 한다. 도 4를 도 3과 함께 참조하면, 초기 단계에서 모든 LFSR들(311-318) 각각에는 초기 데이터 "0"으로 설정되며, 제1 XOR 연산기(321)로부터 출력되는 피드백 데이터도 "0"으로 설정된다. 제1 클럭 사이클인 단계 1에서 오리지널 데이터의 LSB, 즉 7번째 비트값인 "0"이 입력되고, 이 입력데이터 "0"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "0"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "0"을 출력한다. 이 피드백 데이터 "0"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다.
제2 클럭 사이클인 단계 2에서 오리지널 데이터의 6번째 비트값인 "1"이 입력되고, 이 입력데이터 "1"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "1"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "1"을 출력한다. 이 피드백 데이터 "1"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "0"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터는 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "0"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터는 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "0"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "0"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터는 제5 LFSR(315)에 저장된다.
제3 클럭 사이클인 단계 3에서 오리지널 데이터의 5번째 비트값인 "1"이 입력되고, 이 입력데이터 "1"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "1"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "1"을 출력한다. 이 피드백 데이터 "1"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "1"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "0"을 출력하고, 이 데이터는 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "1"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "0"을 출력하고, 이 데이터는 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "1"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "0"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터는 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "1"은 제6 LFSR(316)로 전달된다.
제4 클럭 사이클인 단계 4에서 오리지널 데이터의 4번째 비트값인 "0"이 입력되고, 이 입력데이터 "0"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "0"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "0"을 출력한다. 이 피드백 데이터 "0"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "1"과 피드백 데이터 "0"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터 "1"은 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "0"과 피드백 데이터 "0"과의 XOR 연산을 수행하여 데이터 "0"을 출력하고, 이 데이터 "0"은 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "0"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "1"과 피드백 데이터 "0"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터 "1"은 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "1"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "1"은 제7 LFSR(317)로 전달된다.
제5 클럭 사이클인 단계 5에서 오리지널 데이터의 3번째 비트값인 "1"이 입력되고, 이 입력데이터 "1"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "1"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "1"을 출력한다. 이 피드백 데이터 "1"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "0"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터 "1"은 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "1"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "0"을 출력하고, 이 데이터 "0"은 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "0"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "0"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터 "1"은 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "1"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "1"은 제7 LFSR(317)로 전달된다. 제7 LFSR(317)에 저장되어 있던 데이터 "1"은 제8 LFSR(318)로 전달된다.
제6 클럭 사이클인 단계 6에서 오리지널 데이터의 2번째 비트값인 "0"이 입력되고, 이 입력데이터 "0"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "0"과 제8 LFSR(318)로부터 입력되는 "1"과의 XOR 연산을 수행하여 피드백 데이터로서 "1"을 출력한다. 이 피드백 데이터 "1"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "1"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "0"을 출력하고, 이 데이터 "0"은 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "1"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "0"을 출력하고, 이 데이터 "0"은 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "0"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "0"과 피드백 데이터 "1"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터 "1"은 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "1"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "1"은 제7 LFSR(317)로 전달된다. 제7 LFSR(317)에 저장되어 있던 데이터 "1"은 제8 LFSR(318)로 전달된다.
제7 클럭 사이클인 단계 7에서 오리지널 데이터의 LSB, 즉 1번째 비트값인 "1"이 입력되고, 이 입력데이터 "1"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "1"과 제8 LFSR(318)로부터 입력되는 "1"과의 XOR 연산을 수행하여 피드백 데이터로서 "0"을 출력한다. 이 피드백 데이터 "0"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "1"과 피드백 데이터 "0"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터 "1"은 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "0"과 피드백 데이터 "0"과의 XOR 연산을 수행하여 데이터 "0"을 출력하고, 이 데이터 "0"은 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "0"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "0"과 피드백 데이터 "0"과의 XOR 연산을 수행하여 데이터 "0"을 출력하고, 이 데이터 "0"은 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "1"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "1"은 제7 LFSR(317)로 전달된다. 제7 LFSR(317)에 저장되어 있던 데이터 "1"은 제8 LFSR(318)로 전달된다.
이와 같이 7비트의 오리지널 데이터에 대한 ECC 인코딩을 위한 반복 연산을 7클럭 사이클로 반복하여 수행한 결과, 제1 LFSR(311)부터 제8 LFSR(318)까지 "01000111"의 데이터가 저장된다. 이 데이터는 출력라인(333) 및 제2 출력단자(342)를 통해 순차적으로 출력되어 코드워드의 나머지, 즉 코드워드의 패리티 비트들을 구성한다. 결과적으로 "1010110"의 7비트 오리지널 데이터를 입력받은 ECC 인코딩 반복 연산 로직(300)은 7비트 오리지널 데이터(1010110)에 패리티 비트들(01000111)이 더해진 "101011001000111"의 15비트 코드워드를 출력한다. 반복 연산을 통한 ECC 인코딩의 경우, 본 예에서와 같이 7비트의 오리지널 데이터에 대해 7클럭 사이클이 요구된다. 즉 k비트의 오리지널 데이터에 대한 ECC 인코딩에 모두 k클럭 사이클이 요구된다.
도 5는 본 개시의 일 예에 다른 ECC 인코더의 로직 구성을 위해 수행되는 XOR 연산식 도출 과정 중 오리지널 데이터의 각각의 비트값에 임의변수를 할당하는 과정을 설명하기 위해 나타내 보인 표이다. 도 5를 참조하면, 7비트의 오리지널 데이터의 각각의 비트 위치에 따른 데이터 값에 임의변수를 할당한다. 구체적으로 MSB, 즉 7번째 비트의 데이터 값으로 임의변수 "A00"를 할당한다. 6번째 비트의 데이터 값으로는 임의변수 "B00"을 할당한다. 5번째 비트의 데이터 값으로는 임의변수 "C00을 할당한다. 4번째 비트의 데이터 값으로는 임의변수 "D00을 할당한다. 3번째 비트의 데이터 값으로는 임의변수 "E00을 할당한다. 2번째 비트의 데이터 값으로는 임의변수 "F00을 할당한다. LSB, 즉 1번째 비트의 데이터 값으로는 임의변수 "G00을 할당한다. 할당된 임의변수들(A00-G00) 각각은 "0" 또는 "1"의 데이터를 가질 수 있다. 7비트의 오리지널 데이터가 "1010110"인 경우, A00, B00, C00, D00, E00, G00는 각각 "0", "1", "1", "0", "1", "0", "1"의 데이터를 갖는다.
도 6 내지 도 13은 본 개시의 일 예에 다른 ECC 인코더의 로직 구성을 위해 수행되는 XOR 연산식 도출 과정 중 임의변수를 이용한 ECC 인코딩 반복 연산 로직의 반복 연산 과정을 설명하기 위해 나타내 보인 표들이다. 도 3 및 도 5를 참조하여 설명한 바와 같이, ECC 인코딩 반복 연산 로직(300)을 구성하고 임의변수들을 할당한 후에는, 임의변수들을 적용하여 ECC 인코딩 반복 연산 로직(300)에서의 반복 연산을 수행한다. 먼저 도 6에 나타낸 바와 같이, ECC 인코딩 반복 연산 로직(300)의 제1 내지 제8 LFSR(311-318)이 모두 데이터 "0"이 저장되는 초기 상태를 설정한다. 이때 제1 XOR 연산기(321)로부터 출력되는 피드백 데이터도 "0"으로 설정된다.
다음에 도 7에 나타낸 바와 같이, 1클럭 사이클, 즉 단계 1을 수행한다. 오리지널 데이터의 LSB, 즉 7번째 비트값인 "A00"이 입력되고, 이 입력데이터 "A00"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "A00"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "A00"을 출력한다. 이 피드백 데이터 "A00"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "0"과 피드백 데이터 "A00"과의 XOR 연산을 수행하여 데이터 "A00"을 출력하고, 이 데이터는 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "0"과 피드백 데이터 "A00"과의 XOR 연산을 수행하여 데이터 "A00"을 출력하고, 이 데이터 "A00"는 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "0"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "0"과 피드백 데이터 "A00"과의 XOR 연산을 수행하여 데이터 "1"을 출력하고, 이 데이터 "1"은 제5 LFSR(315)에 저장된다. 결과적으로 1클럭 사이클에서 제1 내지 제8 LFSR(311-318)에는 각각 "A00", "A00", "A00", "0", "A00", "0", "0", "0"이 저장된다.
다음에 도 8에 나타낸 바와 같이, 제2 클럭 사이클인 단계 2에서 오리지널 데이터의 6번째 비트값인 "B00"이 입력되고, 이 입력데이터 "B00"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "B00"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "B00"을 출력한다. 이 피드백 데이터 "B00"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "A00"과 피드백 데이터 "B00"과의 XOR 연산을 수행하여 데이터 "A00
Figure pat00001
B00"을 출력하고, 이 데이터 "A00
Figure pat00002
B00"는 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "A00"과 피드백 데이터 "B00"과의 XOR 연산을 수행하여 데이터 "A00
Figure pat00003
B00"을 출력하고, 이 데이터 "A00
Figure pat00004
B00"는 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "A00"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "0"과 피드백 데이터 "B00"과의 XOR 연산을 수행하여 데이터 "B00"을 출력하고, 이 데이터는 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "A00"은 제6 LFSR(316)로 전달된다. 결과적으로 2클럭 사이클에서 제1 내지 제8 LFSR(311-318)에는 각각 "B00", "A00
Figure pat00005
B00", "A00
Figure pat00006
B00", "A00", "B00", "A00", "0", "0"이 저장된다.
다음에 도 9에 나타낸 바와 같이, 제3 클럭 사이클인 단계 3에서 오리지널 데이터의 5번째 비트값인 "C00"이 입력되고, 이 입력데이터 "C00"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "C00"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "C00"을 출력한다. 이 피드백 데이터 "C00"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "B00"과 피드백 데이터 "C00"과의 XOR 연산을 수행하여 데이터 "B00
Figure pat00007
C00"을 출력하고, 이 데이터 "B00
Figure pat00008
C00"는 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "A00
Figure pat00009
B00"과 피드백 데이터 "C00"과의 XOR 연산을 수행하여 데이터 "A00
Figure pat00010
B00
Figure pat00011
C00"을 출력하고, 이 데이터 "A00
Figure pat00012
B00
Figure pat00013
C00"는 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "A00
Figure pat00014
B00"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "A00"과 피드백 데이터 "C00"과의 XOR 연산을 수행하여 데이터 "A00
Figure pat00015
C00"을 출력하고, 이 데이터는 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "B00"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "A00"은 제7 LFSR(317)로 전달된다. 결과적으로 3클럭 사이클에서 제1 내지 제8 LFSR(311-318)에는 각각 "C00", "B00
Figure pat00016
C00", "A00
Figure pat00017
B00
Figure pat00018
C00", "A00
Figure pat00019
B00", "A00
Figure pat00020
C00", "B00", "A00", "0"이 저장된다.
다음에 도 10에 나타낸 바와 같이, 제4 클럭 사이클인 단계 4에서 오리지널 데이터의 4번째 비트값인 "D00"이 입력되고, 이 입력데이터 "D00"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "D00"과 제8 LFSR(318)로부터 입력되는 "0"과의 XOR 연산을 수행하여 피드백 데이터로서 "D00"을 출력한다. 이 피드백 데이터 "D00"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "C00"과 피드백 데이터 "D00"과의 XOR 연산을 수행하여 데이터 "C00
Figure pat00021
D00"을 출력하고, 이 데이터 "C00
Figure pat00022
D00"은 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "B00
Figure pat00023
C00"과 피드백 데이터 "D00"과의 XOR 연산을 수행하여 데이터 "B00
Figure pat00024
C00
Figure pat00025
D00"을 출력하고, 이 데이터 "B00
Figure pat00026
C00
Figure pat00027
D00"은 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "A00
Figure pat00028
B00
Figure pat00029
C00"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "A00
Figure pat00030
B00"과 피드백 데이터 "D00"과의 XOR 연산을 수행하여 데이터 "A00
Figure pat00031
B00
Figure pat00032
DO0"을 출력하고, 이 데이터 "A00
Figure pat00033
B00
Figure pat00034
D00"은 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "A00
Figure pat00035
C00"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "B00"은 제7 LFSR(317)로 전달된다. 제7 LFSR(317)에 저장되어 있던 데이터 "A00"은 제8 LFSR(318)로 전달된다. 결과적으로 4클럭 사이클에서 제1 내지 제8 LFSR(311-318)에는 각각 "D00", "C00
Figure pat00036
D00", "B00
Figure pat00037
C00
Figure pat00038
D00", "A00
Figure pat00039
B00
Figure pat00040
C00", "A00
Figure pat00041
B00
Figure pat00042
D00", "A00
Figure pat00043
C00", "B00", "A00"이 저장된다.
다음에 도 11에 나타낸 바와 같이, 제5 클럭 사이클인 단계 5에서 오리지널 데이터의 3번째 비트값인 "E00"이 입력되고, 이 입력데이터 "E00"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "E00"과 제8 LFSR(318)로부터 입력되는 "A00"과의 XOR 연산을 수행하여 피드백 데이터로서 "A00
Figure pat00044
E00"을 출력한다. 이 피드백 데이터 "A00
Figure pat00045
E00"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "D00"과 피드백 데이터 "A00
Figure pat00046
E00"과의 XOR 연산을 수행하여 데이터 "D00
Figure pat00047
A00
Figure pat00048
E00"을 출력하고, 이 데이터 "D00
Figure pat00049
A00
Figure pat00050
E00"은 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "C00
Figure pat00051
D00"과 피드백 데이터 "A00
Figure pat00052
E00"과의 XOR 연산을 수행하여 데이터 "C00
Figure pat00053
D00
Figure pat00054
A00
Figure pat00055
E00"을 출력하고, 이 데이터 "C00
Figure pat00056
D00
Figure pat00057
A00
Figure pat00058
E00"은 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "B00
Figure pat00059
C00
Figure pat00060
D00"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "A00
Figure pat00061
B00
Figure pat00062
C00"과 피드백 데이터 "A00
Figure pat00063
E00"과의 XOR 연산을 수행하여 데이터 "A00
Figure pat00064
B00
Figure pat00065
C00
Figure pat00066
A00
Figure pat00067
E00"을 출력하고, 이 데이터 "A00
Figure pat00068
B00
Figure pat00069
C00
Figure pat00070
A00
Figure pat00071
E00"은 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "A00
Figure pat00072
B00
Figure pat00073
D00"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "A00
Figure pat00074
C00"은 제7 LFSR(317)로 전달된다. 제7 LFSR(317)에 저장되어 있던 데이터 "B00"은 제8 LFSR(318)로 전달된다. 결과적으로 5클럭 사이클에서 제1 내지 제8 LFSR(311-318)에는 각각 "A00
Figure pat00075
E00", "D00
Figure pat00076
A00
Figure pat00077
E00", "C00
Figure pat00078
D00
Figure pat00079
A00
Figure pat00080
E000", "B00
Figure pat00081
C00
Figure pat00082
D00", "A00
Figure pat00083
B00
Figure pat00084
C00
Figure pat00085
A00
Figure pat00086
E00", "A00
Figure pat00087
B00
Figure pat00088
D00", "A00
Figure pat00089
C00", "B00"이 저장된다.
다음에 도 12에 나타낸 바와 같이, 제6 클럭 사이클인 단계 6에서 오리지널 데이터의 2번째 비트값인 "F00"이 입력되고, 이 입력데이터 "F00"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "F00"과 제8 LFSR(318)로부터 입력되는 "B00"과의 XOR 연산을 수행하여 피드백 데이터로서 "B00
Figure pat00090
F00"을 출력한다. 이 피드백 데이터 "B00
Figure pat00091
F00"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "A00
Figure pat00092
E00"과 피드백 데이터 "B00
Figure pat00093
F00"과의 XOR 연산을 수행하여 데이터 "A00
Figure pat00094
E00
Figure pat00095
B00
Figure pat00096
F00"을 출력하고, 이 데이터 "A00
Figure pat00097
E00
Figure pat00098
B00
Figure pat00099
F00"은 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "D00
Figure pat00100
A00
Figure pat00101
E00"과 피드백 데이터 "B00
Figure pat00102
F00"과의 XOR 연산을 수행하여 데이터 "D00
Figure pat00103
A00
Figure pat00104
E00
Figure pat00105
B00
Figure pat00106
F00"을 출력하고, 이 데이터 "D00
Figure pat00107
A00
Figure pat00108
E00
Figure pat00109
B00
Figure pat00110
F00"은 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "C00
Figure pat00111
D00
Figure pat00112
A00
Figure pat00113
E000"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "B00
Figure pat00114
C00
Figure pat00115
D00"과 피드백 데이터 "B00
Figure pat00116
F00"과의 XOR 연산을 수행하여 데이터 "B00
Figure pat00117
C00
Figure pat00118
D00
Figure pat00119
B00
Figure pat00120
F00"을 출력하고, 이 데이터 "B00
Figure pat00121
C00
Figure pat00122
D00
Figure pat00123
B00
Figure pat00124
F00"은 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "A00
Figure pat00125
B00
Figure pat00126
C00
Figure pat00127
A00
Figure pat00128
E00"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "A00
Figure pat00129
B00
Figure pat00130
D00"은 제7 LFSR(317)로 전달된다. 제7 LFSR(317)에 저장되어 있던 데이터 "A00
Figure pat00131
C00"은 제8 LFSR(318)로 전달된다. 결과적으로 6클럭 사이클에서 제1 내지 제8 LFSR(311-318)에는 각각 "B00
Figure pat00132
F00", "A00
Figure pat00133
E00
Figure pat00134
B00
Figure pat00135
F00", "D00
Figure pat00136
A00
Figure pat00137
E00
Figure pat00138
B00
Figure pat00139
F00", "C00
Figure pat00140
D00
Figure pat00141
A00
Figure pat00142
E000", "B00
Figure pat00143
C00
Figure pat00144
D00
Figure pat00145
B00
Figure pat00146
F00", "A00
Figure pat00147
B00
Figure pat00148
C00
Figure pat00149
A00
Figure pat00150
E00", "A00
Figure pat00151
B00
Figure pat00152
D00", "A00
Figure pat00153
C00"이 저장된다.
다음에 도 12에 나타낸 바와 같이, 제7 클럭 사이클인 단계 7에서 오리지널 데이터의 MSB, 즉 1번째 비트값인 "G00"이 입력되고, 이 입력데이터 "G00"은 입출력라인(331)의 제1 출력단자(341)를 통해 그대로 출력되는 동시에 입력라인(332)을 통해 제1 XOR 연산기(321)에 입력된다. 제1 XOR 연산기(321)는 입력데이터 "G00"과 제8 LFSR(318)로부터 입력되는 "A00
Figure pat00154
C00"과의 XOR 연산을 수행하여 피드백 데이터로서 "A00
Figure pat00155
C00
Figure pat00156
G00"을 출력한다. 이 피드백 데이터 "A00
Figure pat00157
C00
Figure pat00158
G00"은, 제2 내지 제4 XOR 연산기들(322-324) 각각에 입력되는 동시에, 제1 LFSR(311)에 저장된다. 제4 XOR 연산기(324)는 제1 LFSR(311)에 저장되어 있던 데이터 "B00
Figure pat00159
F00"과 피드백 데이터 "A00
Figure pat00160
C00
Figure pat00161
G00"과의 XOR 연산을 수행하여 데이터 "B00
Figure pat00162
F00
Figure pat00163
A00
Figure pat00164
C00
Figure pat00165
G00"을 출력하고, 이 데이터 "B00
Figure pat00166
F00
Figure pat00167
A00
Figure pat00168
C00
Figure pat00169
G00"은 제2 LFSR(312)에 저장된다. 제3 XOR 연산기(323)는 제2 LFSR(312)에 저장되어 있던 데이터 "A00
Figure pat00170
E00
Figure pat00171
B00
Figure pat00172
F00"과 피드백 데이터 "A00
Figure pat00173
C00
Figure pat00174
G00"과의 XOR 연산을 수행하여 데이터 "A00
Figure pat00175
E00
Figure pat00176
B00
Figure pat00177
F00
Figure pat00178
A00
Figure pat00179
C00
Figure pat00180
G00"을 출력하고, 이 데이터 "A00
Figure pat00181
E00
Figure pat00182
B00
Figure pat00183
F00
Figure pat00184
A00
Figure pat00185
C00
Figure pat00186
G00"은 제3 LFSR(313)에 저장된다. 제3 LFSR(313)에 저장되어 있던 데이터 "D00
Figure pat00187
A00
Figure pat00188
E00
Figure pat00189
B00
Figure pat00190
F00"은 제4 LFSR(314)로 전달된다. 제2 XOR 연산기(322)는 제4 LFSR(314)에 저장되어 있던 데이터 "C00
Figure pat00191
D00
Figure pat00192
A00
Figure pat00193
E00"과 피드백 데이터 "A00
Figure pat00194
C00
Figure pat00195
G00"과의 XOR 연산을 수행하여 데이터 "C00
Figure pat00196
D00
Figure pat00197
A00
Figure pat00198
E00
Figure pat00199
A00
Figure pat00200
C00
Figure pat00201
G00"을 출력하고, 이 데이터 "C00
Figure pat00202
D00
Figure pat00203
A00
Figure pat00204
E00
Figure pat00205
A00
Figure pat00206
C00
Figure pat00207
G00"은 제5 LFSR(315)에 저장된다. 제5 LFSR(315)에 저장되어 있던 데이터 "B00
Figure pat00208
C00
Figure pat00209
D00
Figure pat00210
B00
Figure pat00211
F00"은 제6 LFSR(316)로 전달된다. 제6 LFSR(316)에 저장되어 있던 데이터 "A00
Figure pat00212
B00
Figure pat00213
C00
Figure pat00214
A00
Figure pat00215
E00"은 제7 LFSR(317)로 전달된다. 제7 LFSR(317)에 저장되어 있던 데이터 "A00
Figure pat00216
B00
Figure pat00217
D00"은 제8 LFSR(318)로 전달된다. 결과적으로 7 클럭 사이클에서 제1 내지 제8 LFSR(311-318)에는 각각 "A00
Figure pat00218
C00
Figure pat00219
G00", "B00
Figure pat00220
F00
Figure pat00221
A00
Figure pat00222
C00
Figure pat00223
G00", "A00
Figure pat00224
E00
Figure pat00225
B00
Figure pat00226
F00
Figure pat00227
A00
Figure pat00228
C00
Figure pat00229
G00", "D00
Figure pat00230
A00
Figure pat00231
E00
Figure pat00232
B00
Figure pat00233
F00", "C00
Figure pat00234
D00
Figure pat00235
A00
Figure pat00236
E00
Figure pat00237
A00
Figure pat00238
C00
Figure pat00239
G00", "B00
Figure pat00240
C00
Figure pat00241
D00
Figure pat00242
B00
Figure pat00243
F00", "A00
Figure pat00244
B00
Figure pat00245
C00
Figure pat00246
A00
Figure pat00247
E00", "A00
Figure pat00248
B00
Figure pat00249
D00"이 저장된다.
도 14는 도 6 내지 도 13의 반복 연산 과정 결과인 XOR 연산식과, 중복 연산이 제거된 XOR 연산식과, 패리티 비트값의 예를 나타내 보인 표이다. 도 14를 참조하면, XOR 연산식에서 제1 내지 제8 LFSR(311-318) 각각에 최종 저장되는 데이터, 즉 코드워드에 포함되는 패리티 비트들 각각의 값이 임의변수들 사이의 XOR 연산으로만 표현된다. 예컨대 제3 LFSR(313)에 최종 저장되는 데이터는, 코드워드에 포함되는 패리티 비트들의 3번째 비트 값을 구성한다. 즉 "A00
Figure pat00250
E00
Figure pat00251
B00
Figure pat00252
F00
Figure pat00253
A00
Figure pat00254
C00
Figure pat00255
G00"의 연산 결과값이 패리티 비트들의 3번째 비트 값이 된다.
그런데 일부 XOR 연산식에서는 동일한 임의변수가 중복되어 사용되고 있다. 이 경우 XOR 연산 특징을 이용하여 불필요한 중복 연산을 제거할 수 있다. XOR 연산에 따르면 동일한 데이터 사이의 XOR 연산 결과는 "0"이며, 따라서 동일한 임의 변수가 중복되는 경우 제거하여도 최종 연산 결과에 영향을 주지 않는다. 이에 따라 중복 연산이 제거된 최종 XOR 연산식에서는 중복되어 사용되고 있는 임의변수가 모두 제거되었으며, 그 결과 더 간단해진 XOR 연산식을 얻을 수 있다. 구체적으로 제3 LFSR(313)에 최종 저장되는 데이터 "A00
Figure pat00256
E00
Figure pat00257
B00
Figure pat00258
F00
Figure pat00259
A00
Figure pat00260
C00
Figure pat00261
G00"의 경우, "A00
Figure pat00262
A00"의 중복 연산을 포함하고 있으며, 이에 따라 이를 제거한 데이터 "E00
Figure pat00263
B00
Figure pat00264
F00
Figure pat00265
C00
Figure pat00266
G00"로 간략화시킬 수 있다. 제5 LFSR(315)에 최종 저장되는 데이터 "C00
Figure pat00267
D00
Figure pat00268
A00
Figure pat00269
E00
Figure pat00270
A00
Figure pat00271
C00
Figure pat00272
G00"의 경우, "A00
Figure pat00273
A00" 및 "C00
Figure pat00274
C00"의 중복 연산을 포함하고 있으며, 이에 따라 이를 제거한 데이터 "D00
Figure pat00275
E00
Figure pat00276
G00"로 간략화시킬 수 있다. 제6 LFSR(316)에 최종 저장되는 데이터 "B00
Figure pat00277
C00
Figure pat00278
D00
Figure pat00279
B00
Figure pat00280
F00"의 경우, "B00
Figure pat00281
B00"의 중복 연산을 포함하고 있으며, 이에 따라 이를 제거한 데이터 "C00
Figure pat00282
D00
Figure pat00283
F00"로 간략화시킬 수 있다. 또한 제7 LFSR(317)에 최종 저장되는 데이터 "A00
Figure pat00284
B00
Figure pat00285
C00
Figure pat00286
A00
Figure pat00287
E00"의 경우, "A00
Figure pat00288
A00"의 중복 연산을 포함하고 있으며, 이에 따라 이를 제거한 데이터 "B00
Figure pat00289
C00
Figure pat00290
E00"로 간략화시킬 수 있다.
도 5를 참조하여 설명한 바와 같이, 7비트의 오리지널 데이터가 "1010110"인 경우, A00, B00, C00, D00, E00, G00는 각각 "0", "1", "1", "0", "1", "0", "1"의 데이터를 갖는다. 이 임의변수들 각각의 값을 도 14의 최종 XOR 연산식에 적용시키면 제1 LFSR(311)부터 제8 LFSR(318)에 이르기까지 각각의 LFSR에는 순차적으로 데이터 "0", "1", "0", "0", "0", "1", "1", "1"이 저장되는 결과로 나타난다. 따라서 패티리 비트들은 "01000111"로 출력되고, 이 데이터는 도 4를 참조하여 설명한 바와 같이, "0110101"의 오리지널 데이터에 대한 반복 연산 결과 발생되는 패리티 비트들의 데이터와 동일하다. 따라서 XOR 연산식 또는 최종 XOR 연산식에 따라 로직을 구성하는 경우 임의변수들(A00-G00) 각각의 값만 입력되면 패리티 비트들이 병렬로 출력되어, 1클럭 사이클로 ECC 인코딩 동작이 수행되도록 할 수 있다.
도 15는 도 14의 중복 연산이 제거되기 전의 XOR 연산식을 적용하여 구현한 ECC 인코더를 나타내 보인 회로도이다. 도 15를 참조하면, ECC 인코더(400)는, 7개의 입력데이터를 병렬로 입력받아 8개의 출력데이터(parity[7]-parity[0])를 병렬로 출력시킨다. 입력데이터는, 도 5를 참조하여 설명한 바와 같이 임의변수들(A00-G00)로 구성된다. 출력데이터(parity[7]-parity[0])는, 코드워드의 패리티 비트들을 구성한다. 제1 출력데이터(parity[7])는 제1 XOR 연산기(411) 및 제2 XOR 연산기(412)의 연산에 의해 발생된다. 제1 XOR 연산기(411)는 임의변수 "A00" 및 임의변수 "C00"을 입력받는다. 제2 XOR 연산기(412)는 제1 XOR 연산기(411)의 출력과 임의변수 "G00"을 입력받는다. 제1 XOR 연산기(411) 및 제2 XOR 연산기(412)는 "A00
Figure pat00291
C00
Figure pat00292
G00"의 연산을 수행한다. 이 연산 결과 출력되는 제1 출력데이터(parity[7])는, 도 14를 참조하여 설명한 바와 같이, 제1 LFSR(311)에 최종 저장되는 데이터, 즉 패리티 비트들의 첫번째 비트값을 구성한다.
제2 출력데이터(parity[6])는 제3 XOR 연산기(421), 제4 XOR 연산기(422), 제5 XOR 연산기(423), 및 제6 XOR 연산기(424)의 연산에 의해 발생된다. 제3 XOR 연산기(421)는 임의변수 "B00" 및 임의변수 "F00"을 입력받는다. 제4 XOR 연산기(422)는 임의변수 "A00" 및 임의변수 "C00"을 입력받는다. 제5 XOR 연산기(423)는 제3 XOR 연산기(421)의 출력 및 제4 XOR 연산기(422)의 출력을 입력받는다. 제6 XOR 연산기(424)는 제5 XOR 연산기(423)의 출력과 임의변수 "G00"을 입력받는다. 제3 XOR 연산기(421), 제4 XOR 연산기(422), 제5 XOR 연산기(423), 및 제6 XOR 연산기(424)는 "B00
Figure pat00293
F00
Figure pat00294
A00
Figure pat00295
C00
Figure pat00296
G00"의 연산을 수행한다. 이 연산 결과 출력되는 제2 출력데이터(parity[6])는, 도 14를 참조하여 설명한 바와 같이, 제2 LFSR(312)에 최종 저장되는 데이터, 즉 패리티 비트들의 두번째 비트값을 구성한다.
제3 출력데이터(parity[5])는 제7 XOR 연산기(431), 제8 XOR 연산기(432), 제9 XOR 연산기(433), 제10 XOR 연산기(434), 제11 XOR 연산기(435), 및 제12 XOR 연산기(436)의 연산에 의해 발생된다. 제7 XOR 연산기(431)는 임의변수 "A00" 및 임의변수 "E00"을 입력받는다. 제8 XOR 연산기(432)는 임의변수 "B00" 및 임의변수 "F00"을 입력받는다. 제9 XOR 연산기(433)는 임의변수 "A00" 및 임의변수 "C00"을 입력받는다. 제10 XOR 연산기(434)는 제7 XOR 연산기(431)의 출력 및 제8 XOR 연산기(432)의 출력을 입력받는다. 제11 XOR 연산기(435)는 제9 XOR 연산기(433)의 출력과 임의변수 "G00"을 입력받는다. 제12 XOR 연산기(436)는 제10 XOR 연산기(434)의 출력 및 제11 XOR 연산기(435)의 출력을 입력받는다. 제7 XOR 연산기(431), 제8 XOR 연산기(432), 제9 XOR 연산기(433), 제10 XOR 연산기(434), 제11 XOR 연산기(435), 및 제12 XOR 연산기(436)는 "A00
Figure pat00297
E00
Figure pat00298
B00
Figure pat00299
F00
Figure pat00300
A00
Figure pat00301
C00
Figure pat00302
G00"의 연산을 수행한다. 이 연산 결과 출력되는 제3 출력데이터(parity[5])는, 도 14를 참조하여 설명한 바와 같이, 제3 LFSR(313)에 최종 저장되는 데이터, 즉 패리티 비트들의 세번째 비트값을 구성한다.
제4 출력데이터(parity[4])는 제13 XOR 연산기(441), 제14 XOR 연산기(442), 제15 XOR 연산기(443), 및 제16 XOR 연산기(444)의 연산에 의해 발생된다. 제13 XOR 연산기(441)는 임의변수 "D00" 및 임의변수 "A00"을 입력받는다. 제14 XOR 연산기(442)는 임의변수 "E00" 및 임의변수 "B00"을 입력받는다. 제15 XOR 연산기(443)는 제13 XOR 연산기(441)의 출력 및 제14 XOR 연산기(442)의 출력을 입력받는다. 제16 XOR 연산기(444)는 제15 XOR 연산기(443)의 출력과 임의변수 "F00"을 입력받는다. 제13 XOR 연산기(441), 제14 XOR 연산기(442), 제15 XOR 연산기(443), 및 제16 XOR 연산기(444)는 "D00
Figure pat00303
A00
Figure pat00304
E00
Figure pat00305
B00
Figure pat00306
F00"의 연산을 수행한다. 이 연산 결과 출력되는 제4 출력데이터(parity[4])는, 도 14를 참조하여 설명한 바와 같이, 제4 LFSR(314)에 최종 저장되는 데이터, 즉 패리티 비트들의 네번째 비트값을 구성한다.
제5 출력데이터(parity[3])는 제17 XOR 연산기(451), 제18 XOR 연산기(452), 제19 XOR 연산기(453), 제20 XOR 연산기(454), 제21 XOR 연산기(455), 및 제22 XOR 연산기(456)의 연산에 의해 발생된다. 제17 XOR 연산기(451)는 임의변수 "C00" 및 임의변수 "D00"을 입력받는다. 제18 XOR 연산기(452)는 임의변수 "A00" 및 임의변수 "E00"을 입력받는다. 제19 XOR 연산기(453)는 임의변수 "A00" 및 임의변수 "C00"을 입력받는다. 제20 XOR 연산기(454)는 제17 XOR 연산기(451)의 출력 및 제18 XOR 연산기(452)의 출력을 입력받는다. 제21 XOR 연산기(455)는 제19 XOR 연산기(453)의 출력과 임의변수 "G00"을 입력받는다. 제22 XOR 연산기(456)는 제20 XOR 연산기(454)의 출력 및 제21 XOR 연산기(455)의 출력을 입력받는다. 제17 XOR 연산기(451), 제18 XOR 연산기(452), 제19 XOR 연산기(453), 제20 XOR 연산기(454), 제21 XOR 연산기(455), 및 제22 XOR 연산기(456)는 "C00
Figure pat00307
D00
Figure pat00308
A00
Figure pat00309
E00
Figure pat00310
A00
Figure pat00311
C00
Figure pat00312
G00"의 연산을 수행한다. 이 연산 결과 출력되는 제5 출력데이터(parity[3])는, 도 14를 참조하여 설명한 바와 같이, 제5 LFSR(315)에 최종 저장되는 데이터, 즉 패리티 비트들의 다섯번째 비트값을 구성한다.
제6 출력데이터(parity[2])는 제23 XOR 연산기(461), 제24 XOR 연산기(462), 제25 XOR 연산기(463), 및 제26 XOR 연산기(464)의 연산에 의해 발생된다. 제23 XOR 연산기(461)는 임의변수 "B00" 및 임의변수 "C00"을 입력받는다. 제24 XOR 연산기(462)는 임의변수 "B00" 및 임의변수 "D00"을 입력받는다. 제25 XOR 연산기(463)는 제23 XOR 연산기(461)의 출력 및 제24 XOR 연산기(462)의 출력을 입력받는다. 제26 XOR 연산기(464)는 제25 XOR 연산기(463)의 출력과 임의변수 "F00"을 입력받는다. 제23 XOR 연산기(461), 제24 XOR 연산기(462), 제25 XOR 연산기(463), 및 제26 XOR 연산기(464)는 "B00
Figure pat00313
C00
Figure pat00314
D00
Figure pat00315
B00
Figure pat00316
F00"의 연산을 수행한다. 이 연산 결과 출력되는 제6 출력데이터(parity[2])는, 도 14를 참조하여 설명한 바와 같이, 제6 LFSR(316)에 최종 저장되는 데이터, 즉 패리티 비트들의 여섯번째 비트값을 구성한다.
제7 출력데이터(parity[1])는 제27 XOR 연산기(471), 제28 XOR 연산기(472), 제29 XOR 연산기(473), 및 제30 XOR 연산기(474)의 연산에 의해 발생된다. 제27 XOR 연산기(471)는 임의변수 "A00" 및 임의변수 "B00"을 입력받는다. 제28 XOR 연산기(472)는 임의변수 "A00" 및 임의변수 "C00"을 입력받는다. 제29 XOR 연산기(473)는 제27 XOR 연산기(471)의 출력 및 제28 XOR 연산기(472)의 출력을 입력받는다. 제30 XOR 연산기(474)는 제29 XOR 연산기(473)의 출력과 임의변수 "E00"을 입력받는다. 제27 XOR 연산기(471), 제28 XOR 연산기(472), 제29 XOR 연산기(473), 및 제30 XOR 연산기(474)는 "A00
Figure pat00317
B00
Figure pat00318
C00
Figure pat00319
A00
Figure pat00320
E00"의 연산을 수행한다. 이 연산 결과 출력되는 제7 출력데이터(parity[1])는, 도 14를 참조하여 설명한 바와 같이, 제7 LFSR(316)에 최종 저장되는 데이터, 즉 패리티 비트들의 일곱번째 비트값을 구성한다.
제8 출력데이터(parity[0])는 제31 XOR 연산기(481) 및 제32 XOR 연산기(482)의 연산에 의해 발생된다. 제31 XOR 연산기(481)는 임의변수 "A00" 및 임의변수 "B00"을 입력받는다. 제32 XOR 연산기(482)는 제31 XOR 연산기(481)의 출력과 임의변수 "D00"을 입력받는다. 제31 XOR 연산기(481) 및 제32 XOR 연산기(482)는 "A00
Figure pat00321
B00
Figure pat00322
D00"의 연산을 수행한다. 이 연산 결과 출력되는 제8 출력데이터(parity[0])는, 도 14를 참조하여 설명한 바와 같이, 제8 LFSR(318)에 최종 저장되는 데이터, 즉 패리티 비트들의 마지막 여덟번째 비트값을 구성한다.
이와 같이, 본 예에 따른 ECC 인코더(400)는, 중복 연산이 제거되지 않은 XOR 연산식을 이용하여 로직을 구성함으로써, 모두 32개의 XOR 연산기들만이 요구된다. 병렬로 입력되는 임의변수들(A00-G00)에 대한 XOR 연산들만으로 ECC 인코딩이 수행됨에 따라, 코드워드의 패리티 비트들을 구성하는 출력데이터(parity[7]-parity[0])도 병렬로 출력된다. 또한 이와 같은 ECC 인코딩 과정은 1클럭 사이클로 수행될 수 있다.
도 16은 도 14의 중복 연산이 제거된 XOR 연산식을 적용하여 구현한 ECC 인코더(500)를 나타내 보인 회로도이다. 도 15를 참조하면, 본 예에 따른 ECC 인코더(500) 또한, 7개의 입력데이터를 병렬로 입력받아 8개의 출력데이터(parity[7]-parity[0])를 병렬로 출력시킨다. 입력데이터는, 도 5를 참조하여 설명한 바와 같이 임의변수들(A00-G00)로 구성된다. 출력데이터(parity[7]-parity[0])는, 코드워드의 패리티 비트들을 구성한다.
제1 출력데이터(parity[7])는 제1 XOR 연산기(511) 및 제2 XOR 연산기(512)의 연산에 의해 발생된다. 제1 XOR 연산기(511)는 임의변수 "A00" 및 임의변수 "C00"을 입력받는다. 제2 XOR 연산기(512)는 제1 XOR 연산기(511)의 출력과 임의변수 "G00"을 입력받는다. 제1 XOR 연산기(511) 및 제2 XOR 연산기(512)는 "A00
Figure pat00323
C00
Figure pat00324
G00"의 연산을 수행한다. 이 연산 결과 출력되는 제1 출력데이터(parity[7])는, 도 14를 참조하여 설명한 바와 같이, 제1 LFSR(311)에 최종 저장되는 데이터, 즉 패리티 비트들의 첫번째 비트값을 구성한다.
제2 출력데이터(parity[6])는 제3 XOR 연산기(521), 제4 XOR 연산기(522), 제5 XOR 연산기(523), 및 제6 XOR 연산기(524)의 연산에 의해 발생된다. 제3 XOR 연산기(521)는 임의변수 "B00" 및 임의변수 "F00"을 입력받는다. 제4 XOR 연산기(522)는 임의변수 "A00" 및 임의변수 "C00"을 입력받는다. 제5 XOR 연산기(523)는 제3 XOR 연산기(521)의 출력 및 제4 XOR 연산기(522)의 출력을 입력받는다. 제6 XOR 연산기(524)는 제5 XOR 연산기(523)의 출력과 임의변수 "G00"을 입력받는다. 제3 XOR 연산기(521), 제4 XOR 연산기(522), 제5 XOR 연산기(523), 및 제6 XOR 연산기(524)는 "B00
Figure pat00325
F00
Figure pat00326
A00
Figure pat00327
C00
Figure pat00328
G00"의 연산을 수행한다. 이 연산 결과 출력되는 제2 출력데이터(parity[6])는, 도 14를 참조하여 설명한 바와 같이, 제2 LFSR(312)에 최종 저장되는 데이터, 즉 패리티 비트들의 두번째 비트값을 구성한다.
제3 출력데이터(parity[5])는 제7 XOR 연산기(531), 제8 XOR 연산기(532), 제9 XOR 연산기(533), 및 제10 XOR 연산기(534)의 연산에 의해 발생된다. 제7 XOR 연산기(531)는 임의변수 "E00" 및 임의 변수 "B00"을 입력받는다. 제8 XOR 연산기(532)는 임의변수 "F00" 및 임의변수 "C00"을 입력받는다. 제9 XOR 연산기(533)는 제7 XOR 연산기(531)의 출력 및 제8 XOR 연산기(532)의 출력을 입력받는다. 제9 XOR 연산기(534)는 제9 XOR 연산기(533)의 출력과 임의변수 "G00"을 입력받는다. 제7 XOR 연산기(531), 제8 XOR 연산기(532), 제9 XOR 연산기(533), 및 제10 XOR 연산기(534)는 "E00
Figure pat00329
B00
Figure pat00330
F00
Figure pat00331
C00
Figure pat00332
G00"의 연산을 수행한다. 이 연산 결과 출력되는 제3 출력데이터(parity[5])는, 도 14를 참조하여 설명한 바와 같이, 제3 LFSR(313)에 최종 저장되는 데이터, 즉 패리티 비트들의 세번째 비트값을 구성한다.
제4 출력데이터(parity[4])는 제11 XOR 연산기(541), 제12 XOR 연산기(542), 제13 XOR 연산기(543), 및 제14 XOR 연산기(544)의 연산에 의해 발생된다. 제11 XOR 연산기(541)는 임의변수 "D00" 및 임의변수 "A00"을 입력받는다. 제12 XOR 연산기(542)는 임의변수 "E00" 및 임의변수 "B00"을 입력받는다. 제13 XOR 연산기(543)는 제11 XOR 연산기(541)의 출력 및 제12 XOR 연산기(542)의 출력을 입력받는다. 제14 XOR 연산기(544)는 제13 XOR 연산기(543)의 출력과 임의변수 "F00"을 입력받는다. 제11 XOR 연산기(541), 제12 XOR 연산기(542), 제13 XOR 연산기(543), 및 제14 XOR 연산기(544)는 "D00
Figure pat00333
A00
Figure pat00334
E00
Figure pat00335
B00
Figure pat00336
F00"의 연산을 수행한다. 이 연산 결과 출력되는 제4 출력데이터(parity[4])는, 도 14를 참조하여 설명한 바와 같이, 제4 LFSR(314)에 최종 저장되는 데이터, 즉 패리티 비트들의 네번째 비트값을 구성한다.
제5 출력데이터(parity[3])는 제15 XOR 연산기(551) 및 제16 XOR 연산기(552)의 연산에 의해 발생된다. 제15 XOR 연산기(551)는 임의변수 "D00" 및 임의변수 "E00"을 입력받는다. 제16 XOR 연산기(552)는 제15 XOR 연산기(551)의 출력과 임의변수 "G00"을 입력받는다. 제15 XOR 연산기(551) 및 제16 XOR 연산기(552)는 "D00
Figure pat00337
E00
Figure pat00338
G00"의 연산을 수행한다. 이 연산 결과 출력되는 제5 출력데이터(parity[3])는, 도 14를 참조하여 설명한 바와 같이, 제5 LFSR(315)에 최종 저장되는 데이터, 즉 패리티 비트들의 다섯번째 비트값을 구성한다.
제6 출력데이터(parity[2])는 제17 XOR 연산기(561) 및 제18 XOR 연산기(562)의 연산에 의해 발생된다. 제17 XOR 연산기(561)는 임의변수 "C00" 및 임의변수 "D00"을 입력받는다. 제18 XOR 연산기(562)는 제17 XOR 연산기(561)의 출력과 임의변수 "F00"을 입력받는다. 제17 XOR 연산기(561) 및 제18 XOR 연산기(562)는 "C00
Figure pat00339
D00
Figure pat00340
F00"의 연산을 수행한다. 이 연산 결과 출력되는 제6 출력데이터(parity[2])는, 도 14를 참조하여 설명한 바와 같이, 제6 LFSR(316)에 최종 저장되는 데이터, 즉 패리티 비트들의 여섯번째 비트값을 구성한다.
제7 출력데이터(parity[1])는 제19 XOR 연산기(571) 및 제20 XOR 연산기(572)의 연산에 의해 발생된다. 제19 XOR 연산기(571)는 임의변수 "B00" 및 임의변수 "C00"을 입력받는다. 제20 XOR 연산기(572)는 제19 XOR 연산기(571)의 출력과 임의변수 "E00"을 입력받는다. 제19 XOR 연산기(571) 및 제20 XOR 연산기(572)는 "B00
Figure pat00341
C00
Figure pat00342
E00"의 연산을 수행한다. 이 연산 결과 출력되는 제7 출력데이터(parity[1])는, 도 14를 참조하여 설명한 바와 같이, 제7 LFSR(316)에 최종 저장되는 데이터, 즉 패리티 비트들의 일곱번째 비트값을 구성한다.
제8 출력데이터(parity[0])는 제21 XOR 연산기(581) 및 제22 XOR 연산기(582)의 연산에 의해 발생된다. 제21 XOR 연산기(581)는 임의변수 "A00" 및 임의변수 "B00"을 입력받는다. 제22 XOR 연산기(582)는 제21 XOR 연산기(581)의 출력과 임의변수 "D00"을 입력받는다. 제21 XOR 연산기(581) 및 제22 XOR 연산기(582)는 "A00
Figure pat00343
B00
Figure pat00344
D00"의 연산을 수행한다. 이 연산 결과 출력되는 제8 출력데이터(parity[0])는, 도 14를 참조하여 설명한 바와 같이, 제8 LFSR(318)에 최종 저장되는 데이터, 즉 패리티 비트들의 마지막 여덟번째 비트값을 구성한다.
이와 같이, 본 예에 따른 ECC 인코더(500)는, 중복 연산이 제거된 XOR 연산식을 이용하여 로직을 구성함으로써, 모두 22개의 XOR 연산기들만이 요구된다. 병렬로 입력되는 임의변수들(A00-G00)에 대한 XOR 연산들만으로 ECC 인코딩이 수행됨에 따라, 코드워드의 패리티 비트들을 구성하는 출력데이터(parity[7]-parity[0])도 병렬로 출력된다. 또한 이와 같은 ECC 인코딩 과정은 1클럭 사이클로 수행될 수 있다.
상술한 바와 같이 본 출원의 실시 형태들을 도면들을 예시하며 설명하지만, 이는 본 출원에서 제시하고자 하는 바를 설명하기 위한 것이며, 세밀하게 제시된 형상으로 본 출원에서 제시하고자 하는 바를 한정하고자 한 것은 아니다.
100...메모리 컨트롤러 110...ECC 인코더
120...ECC 디코더 210...오리지널 데이터
220...코드워드 311-318...제1 내지 제8 LFSR
321-324...제1 내지 제4 XOR 연산기
331...입출력라인 332...입력라인
333...출력라인 341...제1 출력단자
342...제2 출력단자

Claims (19)

  1. k비트의 오리지널 데이터의 각각의 비트 데이터를 병렬로 입력받아 복수의 XOR 연산들을 수행하여 n비트의 코드워드를 구성하는 (n-k)비트의 패리티 비트들의 각각의 비트 데이터를 병렬로 출력하는 복수개의 XOR 연산기들을 포함하는 에러 정정 코드 인코더.
  2. 제1항에 있어서,
    상기 복수개의 XOR 연산기들은, 상기 패리티 비트들의 각각의 비트 데이터가 임의변수들에 대한 XOR 연산으로만 표현되는 XOR 연산식에 부합되도록 상호 결합되는 에러 정정 코드 인코더.
  3. 제2항에 있어서,
    상기 임의변수들 각각은, 상기 k비트의 오리지널 데이터의 각각의 비트 데이터에 대응되는 에러 정정 코드 인코더.
  4. 제3항에 있어서,
    상기 XOR 연산식은, 상기 k비트의 오리지널 데이터의 각각의 비트 데이터에 임의변수를 할당하고, 복수개의 리니어 피드백 쉬프트 레지스터들 및 XOR 연산기들에 의해 k회의 반복 연산이 수행되도록 구성된 ECC 인코딩 반복 연산 로직에 상기 임의변수를 적용하여 k회의 반복 연산을 수행한 후, k번째 반복 연산 후에 상기 리니어 피드백 쉬프트 레지스터들 각각에 저장되어 있는 데이터를 추출하여 구성하는 에러 정정 코드 인코더.
  5. 제4항에 있어서,
    상기 ECC 인코딩 반복 연산 로직을 구성하는데 필요한 리니어 피드백 쉬프트 레지스터들의 개수는, 에러 정정에 필요한 패리티 비트수인 (n-k)개인 에러 정정 코드 인코더.
  6. 제5항에 있어서,
    상기 에러 정정에 필요한 패리티 비트수인 (n-k)는 식 n-k ≤ mt(t는 에러 정정 능력, m은 3 이상의 정수)에 의해 정의되는 에러 정정 코드 인코더.
  7. 제6항에 있어서,
    상기 XOR 연산식은, k번째 반복 연산 후에 상기 리니어 피드백 쉬프트 레지스터들 각각에 저장되어 있는 데이터에서 동일한 임의변수 사이의 XOR 중복 연산을 제거한 후에 추출하여 구성하는 에러 정정 코드 인코더.
  8. 호스트와 메모리 장치 사이에서 상기 호스트의 명령에 의해 상기 메모리 장치를 제어하는 메모리 컨트롤러에 있어서,
    상기 메모리 장치에 쓰여질 데이터에 대한 에러 정정 인코딩을 수행하여 패리티 비트가 추가된 코드 워드를 생성하는 ECC 인코더; 및
    상기 메모리 장치에서 읽은 데이터에 대한 에러 정정 디코딩을 수행하는 ECC 디코더를 포함하되,
    상기 ECC 인코더는, k비트의 오리지널 데이터의 각각의 비트 데이터를 병렬로 입력받아 복수의 XOR 연산들을 수행하여 n비트의 코드워드를 구성하는 (n-k)비트의 패리티 비트들의 각각의 비트 데이터를 병렬로 출력하는 복수개의 XOR 연산기들을 포함하는 메모리 컨트롤러.
  9. 제8항에 있어서,
    상기 복수개의 XOR 연산기들은, 상기 패리티 비트들의 각각의 비트 데이터가 임의변수들에 대한 XOR 연산으로만 표현되는 XOR 연산식에 부합되도록 상호 결합되는 메모리 컨트롤러.
  10. 제9항에 있어서,
    상기 임의변수들 각각은, 상기 k비트의 오리지널 데이터의 각각의 비트 데이터에 대응되는 메모리 컨트롤러.
  11. 제10항에 있어서,
    상기 XOR 연산식은, 상기 k비트의 오리지널 데이터의 각각의 비트 데이터에 임의변수를 할당하고, 복수개의 리니어 피드백 쉬프트 레지스터들 및 XOR 연산기들에 의해 k회의 반복 연산이 수행되도록 구성된 ECC 인코딩 반복 연산 로직에 상기 임의변수를 적용하여 k회의 반복 연산을 수행한 후, k번째 반복 연산 후에 상기 리니어 피드백 쉬프트 레지스터들 각각에 저장되어 있는 데이터를 추출하여 구성하는 메모리 컨트롤러.
  12. 제11항에 있어서,
    상기 ECC 인코딩 반복 연산 로직을 구성하는데 필요한 리니어 피드백 쉬프트 레지스터들의 개수는, 에러 정정에 필요한 패리티 비트수인 (n-k)개인 메모리 컨트롤러.
  13. 제12항에 있어서,
    상기 에러 정정에 필요한 패리티 비트수인 (n-k)는 식 n-k ≤ mt(t는 에러 정정 능력, m은 3 이상의 정수)에 의해 정의되는 메모리 컨트롤러.
  14. 제13항에 있어서,
    상기 XOR 연산식은, k번째 반복 연산 후에 상기 리니어 피드백 쉬프트 레지스터들 각각에 저장되어 있는 데이터에서 동일한 임의변수 사이의 XOR 중복 연산을 제거한 후에 추출하여 구성하는 메모리 컨트롤러.
  15. 코드워드의 패리티 비트들의 각각의 비트 데이터가 임의변수들에 대한 XOR 연산으로만 표현되는 XOR 연산식을 도출하는 단계;
    상기 XOR 연산식에 부합되도록 복수개의 XOR 연산기들로 구성되는 인코딩 로직을 구성하는 단계; 및
    상기 인코딩 로직에 k비트의 오리지널 데이터의 각각의 비트 데이터를 병렬로 입력하여 상기 복수개의 XOR 연산기들의 연산에 의해 상기 패리티 비트들의 각각의 비트 데이터가 병렬로 출력되도록 하는 단계를 포함하는 에러 정정 코드 인코딩 방법.
  16. 제15항에 있어서, 상기 XOR 연산식을 도출하는 단계는,
    복수개의 리니어 피드백 쉬프트 레지스터들 및 XOR 연산기들에 의해 k회의 반복 연산이 수행되도록 ECC 인코딩 반복 연산 로직을 구성하는 단계;
    상기 k비트의 오리지널 데이터의 각각의 비트 데이터에 임의변수를 할당하는 단계;
    상기 임의변수를 상기 ECC 인코딩 반복 연산 로직에 적용하여 k회의 반복 연산을 수행하는 단계; 및
    k번째 반복 연산 후에 상기 리니어 피드백 쉬프트 레지스터들 각각에 저장되어 있는 데이터를 상기 임의변수들 상호간의 XOR 연산으로 표현되는 XOR 표현식을 추출하는 단계를 포함하는 에러 정정 코드 인코딩 방법.
  17. 제16항에 있어서,
    상기 ECC 인코딩 반복 연산 로직을 구성하는데 필요한 리니어 피드백 쉬프트 레지스터들의 개수는, 에러 정정에 필요한 패리티 비트수인 (n-k)개인 에러 정정 코드 인코딩 방법.
  18. 제17항에 있어서,
    상기 에러 정정에 필요한 패리티 비트수(n-k)는 식 n-k ≤ mt(t는 에러 정정 능력, m은 3 이상의 정수)에 의해 정의되는 에러 정정 코드 인코딩 방법.
  19. 제18항에 있어서,
    상기 XOR 표현식에서 동일한 임의변수 사이의 XOR 중복 연산을 제거하는 단계를 더 포함하는 에러 정정 코드 인코딩 방법.
KR1020160158369A 2015-05-29 2016-11-25 1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러 KR20180059150A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020160158369A KR20180059150A (ko) 2016-11-25 2016-11-25 1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러
US15/620,909 US10741212B2 (en) 2016-11-25 2017-06-13 Error correction code (ECC) encoders, ECC encoding methods capable of encoding for one clock cycle, and memory controllers including the ECC encoders
US16/987,977 US11611359B2 (en) 2015-05-29 2020-08-07 Data storage device
US16/988,026 US11515897B2 (en) 2015-05-29 2020-08-07 Data storage device
US18/185,163 US20230231579A1 (en) 2015-05-29 2023-03-16 Data storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160158369A KR20180059150A (ko) 2016-11-25 2016-11-25 1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러

Publications (1)

Publication Number Publication Date
KR20180059150A true KR20180059150A (ko) 2018-06-04

Family

ID=62192834

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160158369A KR20180059150A (ko) 2015-05-29 2016-11-25 1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러

Country Status (2)

Country Link
US (1) US10741212B2 (ko)
KR (1) KR20180059150A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117254823A (zh) * 2023-11-20 2023-12-19 苏州联讯仪器股份有限公司 一种并行rs编码方法、装置、系统及计算机存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3083889B1 (fr) * 2018-07-12 2020-08-14 Commissariat Energie Atomique Registre a decalage protege contre les attaques physiques
US11132253B2 (en) 2018-12-06 2021-09-28 Micron Technology, Inc. Direct-input redundancy scheme with dedicated error correction code circuit
US11461174B2 (en) 2020-08-31 2022-10-04 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit and method of operating same
US11847022B2 (en) * 2022-03-07 2023-12-19 International Business Machines Corporation Computation and placement of error correcting codes (ECC) in a computing system data cache

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657816B2 (en) * 2005-07-13 2010-02-02 Leanics Corporation Low-complexity hybrid LDPC code encoder
US7600176B2 (en) * 2006-03-07 2009-10-06 Broadcom Corporation Performing multiple Reed-Solomon (RS) software error correction coding (ECC) Galois field computations simultaneously
US8095859B1 (en) * 2008-01-09 2012-01-10 L-3 Communications, Corp. Encoder for low-density parity check codes
US8949703B2 (en) * 2012-03-26 2015-02-03 Xilinx, Inc. Parallel encoding for non-binary linear block code
US9122625B1 (en) * 2012-12-18 2015-09-01 Western Digital Technologies, Inc. Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems
US20150363263A1 (en) * 2014-06-12 2015-12-17 HGST Netherlands B.V. ECC Encoder Using Partial-Parity Feedback

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117254823A (zh) * 2023-11-20 2023-12-19 苏州联讯仪器股份有限公司 一种并行rs编码方法、装置、系统及计算机存储介质
CN117254823B (zh) * 2023-11-20 2024-03-15 苏州联讯仪器股份有限公司 一种并行rs编码方法、装置、系统及计算机存储介质

Also Published As

Publication number Publication date
US20180151197A1 (en) 2018-05-31
US10741212B2 (en) 2020-08-11

Similar Documents

Publication Publication Date Title
KR20180059150A (ko) 1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러
US20230208449A1 (en) Neural networks and systems for decoding encoded data
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
CN113032178B (zh) 存储器控制器及快闪存储器的存取方法
KR101811298B1 (ko) 랜덤마이져로 씨드를 제공하는 씨드 컨트롤러 및 그것을 포함한 메모리 컨트롤러
US20210143840A1 (en) Recurrent neural networks and systems for decoding encoded data
TW201428756A (zh) 更新可靠度資料
WO2018205633A1 (zh) 循环冗余校验电路及其方法、装置以及芯片、电子设备
US10498364B2 (en) Error correction circuits and memory controllers including the same
CN102017425A (zh) 用于执行级联纠错的方法和系统
US10903859B2 (en) Error detection by means of group errors
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US8683304B2 (en) Error-correcting code and process for fast read-error correction
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
US10291258B2 (en) Error correcting code for correcting single symbol errors and detecting double bit errors
TWI782215B (zh) 減少多位元錯誤校正碼的邏輯的系統與方法
CN112397127B (zh) 先算信息轮换数据保护的非挥发性存储器写入方法和设备
CN111869111A (zh) 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字
KR20180059149A (ko) 에러 정정 코드 디코더, 이를 포함하는 메모리 컨트롤러, 및 에러 정정 코드 디코팅 방법
CN109841252B (zh) 闪存控制器和设置在闪存控制器中的编码器和编码器
TW201926354A (zh) 編碼器及相關的編碼方法與快閃記憶體控制器
US10171109B2 (en) Fast encoding method and device for Reed-Solomon codes with a small number of redundancies
TWI677878B (zh) 編碼器及相關的編碼方法與快閃記憶體控制器
TWI684856B (zh) 解碼方法及相關的快閃記憶體控制器與電子裝置