KR101807538B1 - 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템 - Google Patents

듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템 Download PDF

Info

Publication number
KR101807538B1
KR101807538B1 KR1020110104928A KR20110104928A KR101807538B1 KR 101807538 B1 KR101807538 B1 KR 101807538B1 KR 1020110104928 A KR1020110104928 A KR 1020110104928A KR 20110104928 A KR20110104928 A KR 20110104928A KR 101807538 B1 KR101807538 B1 KR 101807538B1
Authority
KR
South Korea
Prior art keywords
syndrome
generator
codewords
codeword
error
Prior art date
Application number
KR1020110104928A
Other languages
English (en)
Other versions
KR20120078576A (ko
Inventor
공재필
안석원
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20120078576A publication Critical patent/KR20120078576A/ko
Application granted granted Critical
Publication of KR101807538B1 publication Critical patent/KR101807538B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • 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/1515Reed-Solomon 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/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
    • 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
    • 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/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/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • 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/159Remainder calculation, e.g. for encoding and syndrome calculation
    • 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/6561Parallelized implementations

Abstract

레이턴시(latency) 없이 연속적인 다수의 코드워드들을 처리할 수 있는 듀얼-신드롬 발생기를 포함하는 에러 정정 코드 블록은 상기 듀얼-신드롬 발생기 중에서 어느 하나를 이용하여 상기 다수의 코드워드들 중에서 해당하는 짝수 번째 코드워드에 대한 신드롬 값들을 계산하고 상기 듀얼-신드롬 발생기 중에서 다른 하나를 이용하여 상기 다수의 코드워드들 중에서 해당하는 홀수 번째 코드워드에 대한 신드롬 값들을 계산한다.

Description

듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템{ERROR CORRECTION CODE BLOCK HAVING DUAL-SYNDROME GENERATOR, METHOD THEREOF, SYSTEM HAVING THE ERROR CORRECTION CODE BLOCK}
본 발명의 개념에 따른 실시 예는 에러 정정 기술에 관한 것으로, 특히 레이턴시(latency) 없이 연속적인 다수의 코드워드들을 처리할 수 있는 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템에 관한 것이다.
데이터 처리 시스템에서 데이터는 전송 중에 변경될 수 있다. 따라서 신뢰성 있는 통신을 위하여 변경된 데이터는 검출되고 정정되어야 한다. 변경된 데이터를 검출하는 방법으로서 패리티 검사(parity check), 순환중복 검사(cyclical redundancy check), 또는 검사합(checksum)이 사용된다.
상기 데이터에 포함된 에러를 정정하는 방법으로서 수신 장치가 송신 장치로 상기 데이터의 재전송을 요구하는 방법 또는 수신 장치가 에러 정정 코드를 이용하여 상기 데이터에 포함된 에러를 자동으로 정정하는 방법이 있다.
에러 정정 디코더(error correction decoder)는 메모리로부터 리드된 데이터에 포함된 에러를 정정하기 위하여 사용된다.
본 발명이 이루고자 하는 기술적인 과제는 데이터 처리 성능을 극대화하기 위하여 레이턴시(latency) 없이 연속적인 다수의 코드워드들을 처리할 수 있는 듀얼-신드롬 발생기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 에러 정정 코드(error correction code(ECC)) 회로는 제1신드롬 생성기와, 제2신드롬 생성기와, 제1선택 신호(SEL1)에 응답하여, 연속적으로 입력되는 다수의 코드워드들 중에서 짝수 번째 코드워드를 상기 제1신드롬 생성기로 전송하거나 상기 다수의 코드워드들 중에서 홀수 번째 코드워드를 상기 제2신드롬 생성기로 전송하는 제1선택기를 포함한다.
상기 ECC 회로는 클락 신호(CLK)에 응답하여 일정한 주기를 갖는 다수의 펄스들을 생성하는 펄스 발생기와, 상기 다수의 펄스들의 개수를 카운트하고 카운트 결과에 따라 상기 제1선택 신호를 생성하는 카운터를 더 포함한다.
상기 일정한 주기는 상기 다수의 코드워드들 각각의 비트 수에 따라 결정된다.
상기 제1신드롬 생성기는 제1레지스터에 저장된 이전 코드워드와 현재 짝수 번째 코드워드에 기초하여 상기 현재 짝수 번째 코드워드의 신드롬 값들을 계산하고 계산된 신드롬 값들을 상기 제1레지스터로 출력하고, 상기 제2신드롬 생성기는 제2레지스터에 저장된 이전 코드워드와 현재 홀수 번째 코드워드에 기초하여 상기 현재 홀수 번째 코드워드의 신드롬 값들을 계산하고 계산된 신드롬 값들을 상기 제2레지스터로 출력한다.
실시 예에 따라 상기 ECC 회로는, 제2선택 신호에 응답하여, 상기 제1레지스터로부터 출력된 신드롬 값들 또는 상기 제2레지스터로부터 출력된 신드롬 값들을 에러 위치 다항식 발생기 회로로 전송하기 위한 제2선택기를 더 포함한다.
다른 실시 예에 따라 상기 ECC 회로는, 제2선택 신호에 응답하여, 상기 제1신드롬 생성기에 의하여 생성된 상기 짝수 번째 코드워드에 대한 신드롬 값들 또는 상기 제2신드롬 생성기에 의하여 생성된 상기 홀수 번째 코드워드에 대한 신드롬 값들을 에러 위치 다항식 발생기 회로로 전송하기 위한 제2선택기를 더 포함한다.
또 다른 실시 예에 따라, 상기 ECC 회로는 클락 신호에 응답하여 상기 다수의 코드워드들 각각의 비트 수에 따라 결정된 주기를 갖는 다수의 펄스들을 생성하는 펄스 발생기와, 상기 다수의 펄스들의 개수를 카운트하여 제3선택 신호를 생성하는 1-비트 카운터와, 상기 제3선택 신호에 따라, 상기 펄스 발생기로부터 출력된 상기 다수의 펄스들을 제1출력 단자 또는 제2출력 단자로 출력하는 제3선택기와, 상기 제1출력 단자의 출력 신호에 응답하여 초기화된 후 클락 신호를 카운트하고, 카운트 값과 기준 값의 비교 결과에 대응되는 제1시작 신호를 출력하는 제1카운터와, 상기 제1시작 신호에 응답하여 상기 제2선택 신호를 출력하는 제1스테이트 머신과, 상기 제2출력 단자의 출력 신호에 응답하여 초기화된 후 상기 클락 신호를 카운트하고 카운트 값과 상기 기준 값의 비교 결과에 대응되는 제2시작 신호를 출력하는 제2카운터와, 상기 제2시작 신호에 응답하여 상기 제2선택 신호를 출력하는 제2스테이트 머신을 더 포함한다.
또 다른 실시 예에 따라 상기 ECC 회로는 클락 신호에 응답하여 상기 다수의 코드워드들 각각의 비트 수에 따라 결정된 주기를 갖는 다수의 펄스들을 생성하는 펄스 발생기와, 상기 제1선택 신호에 응답하여, 상기 다수의 펄스들 중에서 짝수 번째 펄스를 제1출력 단자로 출력하고 상기 다수의 펄스들 중에서 홀수 번째 펄스를 제2출력 단자로 출력하는 제2선택기와, 상기 제1출력 단자의 출력 신호에 응답하여 초기화된 후 클락 신호를 카운트하고 카운트 값과 기준 값의 비교 결과에 대응되는 제1시작 신호를 출력하는 제1카운터와, 상기 제1시작 신호에 응답하여 상기 제2선택 신호를 출력하는 제1스테이트 머신과, 상기 제2출력 단자의 출력 신호에 응답하여 초기화된 후 상기 클락 신호를 카운트하고 카운트 값과 상기 기준 값의 비교 결과에 대응되는 제2시작 신호를 출력하는 제2카운터와, 상기 제2시작 신호에 응답하여 상기 제2선택 신호를 출력하는 제2스테이트 머신을 포함한다.
본 발명의 실시 예에 따른 시스템은 메모리로부터 연속적으로 출력되는 다수의 코드워드들을 수신하는 FIFO (first-in first-out) 버퍼와, 상기 FIFO 버퍼로부터 출력된 상기 다수의 코드워드들을 저장하는 데이터 버퍼와, 다수의 신드롬 생성기들 중에서 상기 메모리로부터 출력된 상기 다수의 코드워드들의 순서에 따라 선택된 신드롬 생성기를 이용하여 신드롬 값들을 생성하고, 생성된 신드롬 값들로부터 에러 위치 다항식을 계산하고, 계산된 에러 위치 다항식의 해들을 계산하고, 계산된 해들로부터 다수의 에러 위치들을 출력하는 에러 정정 코드(error correction code (ECC)) 회로와, 상기 다수의 에러 위치들을 이용하여, 코드워드 단위로 상기 데이터 버퍼로부터 리드된 코드워드에 포함된 에러를 정정하고 에러 정정된 코드워드를 상기 데이터 버퍼에 저장하는 정정 DMA(direct memory access)와, 상기 정정 DMA에 저장된 상기 에러 정정된 코드워드를 호스트로 전송하기 위한 호스트 인터페이스를 포함한다.
상기 다수의 신드롬 생성기들이 제1신드롬 생성기와 제2신드롬 생성기를 포함할 때, 상기 ECC 회로는 상기 순서에 따라 생성된 제1선택 신호에 응답하여, 상기 다수의 코드워드들 중에서 짝수 번째 코드워드를 상기 제1신드롬 생성기로 전송하거나 상기 다수의 코드워드들 중에서 홀수 번째 코드워드를 상기 제2신드롬 생성기로 전송하는 제1선택기와, 상기 순서에 따라 생성된 제2선택 신호에 응답하여, 상기 제1신드롬 생성기로부터 출력된 신드롬 값들 또는 상기 제2신드롬 생성기로부터 출력된 신드롬 값들을 출력하는 제2선택기와, 상기 제2선택기로부터 출력된 신드롬 값들로부터 상기 에러 위치 다항식을 계산하는 에러 위치 다항식 발생기와, 상기 에러 위치 다항식의 해들을 계산하고 계산 결과에 따라 상기 다수의 에러 위치들을 출력하는 에러 위치 계산기를 포함한다.
본 발명의 실시 예에 따른 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 회로는 레이턴시 없이 연속적인 다수의 코드워드들을 처리할 수 있는 효과가 있다.
따라서 상기 에러 정정 코드 회로를 포함하는 시스템은 고속으로 동작할 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록을 포함하는 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록의 블록도를 나타낸다.
도 3은 제1선택 신호 생성기의 블록도를 나타낸다.
도 4는 제2선택 신호 생성기의 일 실시 예를 나타내는 블록도를 나타낸다.
도 5는 제2선택 신호 생성기의 다른 실시 예를 나타내는 블록도를 나타낸다.
도 6은 종래의 코드워드들의 전송과 본 발명의 실시 예에 따른 코드워드들의 전송을 나타낸다.
도 7은 도 1에 도시된 듀얼-신드롬 생성기의 동작을 설명하기 위한 플로우차트이다.
도 8은 도 1에 도시된 듀얼-신드롬 생성기의 동작을 설명하기 위한 타이밍도이다.
도 1은 본 발명의 실시 예에 따른 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록을 포함하는 시스템의 블록도를 나타낸다.
도 1을 참조하면, 시스템(10)은 메모리(memory; 12), 메모리 인터페이스 (memory interface; 14), FIFO(first-in first-out; 또는 FIFO 버퍼; 16), 데이터 버퍼(data buffer; 18), 에러 정정 코드(error correction code(ECC)) 블록(또는 ECC 회로; 20), 정정 DMA(correction direct memory access(DMA); 또는 DMA 회로; 22), 호스트 인터페이스(host interface; 24), 및 호스트(host; 26)를 포함한다.
시스템(10)은 PC(personal computer), 태블릿(tablet) PC, 노트-북, 메모리 카드(memory card), 스마트 카드(smart card), 이동 전화기, 스마트 폰(smart phone), 데이터 서버(data server), HDD(hard disk drive), SSD(solid state drive), 또는 네트워크-결합 스토리지(Network-attached storage(NAS))로 구현될 수 있다.
메모리(12)는 다수의 코드워드들(R(x))을 저장하고, 리드 동작(read operation) 동안에 레이턴시(latency) 없는 연속적인 다수의 코드워드들(R(x))을 메모리 인터페이스(14)로 전송한다.
메모리(12)는 휘발성 메모리 셀(volatile memory cell)을 포함하는 메모리 또는 비휘발성 메모리 셀(non-volatile memory cell)을 포함하는 메모리로 구현될 수 있다.
상기 휘발성 메모리 셀은 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)과 같이 현존하는 휘발성 메모리 셀 (volatile memory cell)과 현재 개발 중인 휘발성 메모리 셀을 의미한다.
또한, 상기 비휘발성 메모리 셀은 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), OUM(Ovonic Unified Memory)라고도 불리는 PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM 또는 ReRAM), 나노튜브 RRAM (Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)를 포함할 수 있다. 상기 비휘발성 메모리 셀은 1-비트 또는 그 이상의 비트들을 저장할 수 있다.
메모리 인터페이스(14)는 메모리(12)와 FIFO(16) 사이에서 주고받는 데이터를 인터페이싱한다. 예컨대, 메모리 인터페이스(14)는 리드 동작 동안 메모리 (12)로부터 출력된 데이터를 FIFO(16) 또는 ECC 블록(20)이 처리할 수 있는 데이터로 변환할 수 있다. 또한, 메모리 인터페이스(14)는 라이트(또는 프로그램) 동작 동안 FIFO(16)로부터 출력된 데이터를 메모리(12)가 처리할 수 있는 데이터로 변환할 수 있다.
FIFO(16)는 메모리 인터페이스(14)를 통하여 입력된 버스트 코드워드들을 순차적으로 저장할 수 있다. 데이터 버퍼(18)는 FIFO(16)로부터 순차적으로 출력된 코드워드를 저장할 수 있다. 예컨대, 데이터 버퍼(18)는 듀얼-포트(dual-port) SRAM으로 구현될 수 있다.
듀얼-신드롬 생성기(dual syndrome generator)를 포함하는 ECC 블록(20)은 하나의 채널(single channel) 또는 하나의 데이터 버스를 통하여 순차적으로 입력되는 다수의 버스트 코드워드들(R(x))로부터 신드롬 값들을 생성하고, 상기 신드롬 값들로부터 에러 위치 다항식들(error locator polynomials; Λ(x))을 계산하고, 계산된 에러 위치 다항식들의 해들(roots)을 계산하고, 계산된 해들로부터 다수의 에러 위치들(EP)을 출력할 수 있다.
도 1에 도시된 바와 같이, 코드워드(들)를 전송하는 시간 내에 에러 위치 다항식을 계산하는 시간과 치엔 서치 시간이 포함된다면 연속적인 다수의 코드워드들(R(x)) 각각의 코드워드 사이에는 어떠한 지연(delay)이나 레이턴시 (latency)가 존재하지 않는다. 따라서 듀얼-신드롬 생성기를 포함하는 ECC 블록(20)을 포함하는 시스템(10)은 고속 동작이 가능하다.
본 발명의 개념에 따른 ECC 블록(20)의 구조와 동작을 도 2를 참조하여 상세히 설명될 것이다.
정정 DMA(22)는 코드워드 단위로 데이터 버퍼(18)로부터 리드된 코드워드와 ECC 블록(20)으로부터 출력된 다수의 에러 위치들(EP)을 수신하고, 다수의 에러 위치들(EP)을 이용하여, 리드된 코드워드에 포함된 에러를 정정하고, 에러 정정된 코드워드를 데이터 버퍼(18)에 저장한다. 정정 DMA(22)는 에러 정정기(error corrector)의 일 예이다.
호스트 인터페이스(24)는 데이터 버퍼(18)와 호스트(26) 사이에서 주고받는 데이터를 인터페이싱한다. 예컨대, 호스트 인터페이스(24)는 리드 동작 동안 데이터 버퍼(18)로부터 출력된 데이터를 호스트(26)가 처리할 수 있는 데이터로 변환할 수 있다. 또한, 호스트 인터페이스(24)는 라이트(또는 프로그램) 동작 동안 호스트(26)로부터 출력된 데이터를 데이터 버퍼(18)가 처리할 수 있는 데이터로 변환할 수 있다.
도 2는 도 1에 도시된 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록의 블록도를 나타낸다.
도 2를 참조하면, 듀얼-신드롬 생성기(120과 130)를 포함하는 ECC 블록 (20)은 제1선택기(110), 제1신드롬 생성기(120), 제1레지스터(122), 제2신드롬 생성기(130), 제2레지스터(132), 제2선택기(140), 및 제2선택 신호 발생기(170)를 포함한다.
ECC 블록(20)은 에러 위치 다항식 발생기(150)와 치엔 서치(160)를 더 포함한다. ECC 블록(20)에 더 포함되는 구성 요소들은 ECC 블록(20)이 BCH 코드를 이용하여 ECC를 수행하는지 또는 RS(Reed-Solomon) 코드를 이용하여 ECC를 수행하는지에 따라 결정될 수 있다.
디-멀티플렉서(de-multiplexer)로 구현될 수 있는 제1선택기(110)는, 제1상태(예컨대, 로우 레벨)를 갖는 제1선택 신호(SEL1)에 따라, 연속적으로 입력되는 다수의 코드워드들(R(x)=DATA, 또는 다수의 청크들(chunks)) 중에서 짝수 번째 코드워드(R0(x)), R2(x), ...)를 제1출력 단자(0)를 통하여 제1신드롬 생성기 (120)로 전송한다. 코드워드(들)를 전송하는 시간 내에 에러 위치 다항식을 계산하는 시간과 치엔 서치 시간이 포함된다면 다수의 코드워드들(Ri(x), x=0, 1, 2, ...) 각각의 사이의 레이턴시(latency) 또는 지연은 0이다. 설명의 편의를 위하여 첫 번째 코드워드(R0(x))도 짝수 번째 코드워드라 한다.
또한, 제1선택기(110)는, 제2상태(예컨대, 하이 레벨)을 갖는 제1선택 신호 (SEL1)에 따라, 연속적으로 입력되는 다수의 코드워드들(R(x)) 중에서 홀수 번째 코드워드(R1(x), R3(x), ...)를 제2출력 단자(1)를 통하여 제2신드롬 생성기(130)로 전송한다.
실시 예에 따라, 제1선택 신호(SEL1)는 ECC 블록(20)의 외부로부터 입력될 수 있고, 도 3에 도시된 바와 같이 ECC 블록(20)의 내부에서 자체적으로 생성될 수 있다.
예컨대, 제1선택 신호(SEL1)는 다수의 코드워드들(R(x)) 각각의 순서를 나타내는 순서 정보 중에서 LSB(least significant bit)일 수 있다. 예컨대, 다수의 코드워드들(R(x))이 8개이고 상기 순서 정보가 3-비트일 때, 제1선택 신호(SEL1)는 3-비트의 LSB일 수 있다.
제1신드롬 생성기(120)는 제1선택기(110)로부터 전송된 짝수 번째 코드워드로부터 신드롬 값들을 계산한다. 즉, 제1신드롬 생성기(120)는 클락 신호에 응답하여 현재 데이터(current data)와 제1레지스터(122)로부터 피드백되는 이전 데이터(previous data)에 기초하여 신드롬 값을 계산하고 계산된 신드롬 값을 저장하기 위하여 제1레지스터(122)로 출력한다.
제2신드롬 생성기(130)는 제1선택기(110)로부터 전송된 홀수 번째 코드워드로부터 신드롬 값들을 계산한다. 즉, 제2신드롬 생성기(130)는 클락 신호에 응답하여 현재 데이터와 제2레지스터(132)로부터 피드백되는 이전 데이터에 기초하여 신드롬 값을 계산하고 계산된 신드롬 값을 저장하기 위하여 제2레지스터 (132)로 출력한다.
멀티플렉서(multiplexer)로 구현될 수 있는 제2선택기(140)는 제2선택 신호(SEL2)에 따라 제1레지스터(122)로부터 출력된 짝수 번째 신드롬 값들(Se(x)) 또는 제2레지스터(132)로부터 출력된 홀수 번째 신드롬 값들(So(x))을 에러 위치 다항식 발생기(150)로 전송한다.
제2선택 신호(SEL2)는 제2선택 신호 발생기(170)에 의하여 생성될 수 있다.
키-방정식 솔버(key equation solver)로서의 기능을 수행하는 에러 위치 다항식 발생기(150)는 제2선택기(140)로부터 출력된 각 짝수 번째 코드워드(R0(x), R2(x), ...)에 대한 신드롬 값들(Se(x)) 또는 각 홀수 번째 코드워드(R1(x), R3(x), ...)에 대한 신드롬 값들(So(x))로부터 에러 위치 다항식(error locator polynomial; Λ(x)) 또는 에러 위치 다항식의 계수들을 계산한다.
에러 위치 다항식 발생기(150)는 코드워드 단위로 각 코드워드에 대한 신드롬 값들(Se(x), 또는 So(x))이 모두 0이 아닐 때, 즉 상기 각 코드워드에 적어도 하나의 에러가 존재할 때 상기 각 코드워드에 대한 에러 위치 다항식 (Λ(x)) 또는 에러 위치 다항식의 계수들을 계산한다.
따라서, ECC 블록(20)은 각 코드워드에 대한 신드롬 값들(Se(x), 또는 So(x))이 모두 0인지 또는 아닌지를 판단할 수 있는 에러 체크 블록(error check block; 미도시)을 더 포함할 수 있다. 이때, 에러 위치 다항식 발생기(150)는 상기 에러 체크 블록의 판단 결과에 따라 또는 상기 에러 체크 블록의 판단 결과를 처리하는 별도의 회로 블록의 출력 신호에 따라 상기 각 코드워드를 바이패스 하거나 상기 각 코드워드에 대한 에러 위치 다항식 또는 에러 위치 다항식의 계수들을 계산할 수 있다.
에러 위치 계산기의 일 예로서 구현될 수 있는 치엔 서치(또는 치엔 서치 블록; 160)는 치엔 서치(Chien search) 기법을 이용하여 상기 에러 위치 다항식 또는 상기 에러 위치 다항식의 계수들로부터 에러 위치 다항식의 해들(roots)을 계산하고, 계산 결과에 따라 다수의 에러 위치들(EP)을 계산할 수 있다.
도 3은 제1선택 신호 생성기의 블록도를 나타낸다.
도 2와 도 3을 참조하면, 제1선택 신호(SEL1)를 생성할 수 있는 제1선택 신호 생성기(180)는 ECC-펄스 발생기(182)와 1-비트 카운터(184)를 포함한다.
ECC-펄스 발생기(182)는 클락 신호(CLK)에 응답하여 일정한 주기를 갖는 다수의 펄스들(P)을 생성한다. 상기 일정한 주기는 제1선택기(110)로 입력되는 다수의 코드워드들(R(x)) 각각의 비트 수(또는 길이)에 따라 결정될 수 있다.
1-비트 카운터(184)는 ECC-펄스 발생기(182)로부터 출력된 다수의 펄스들 (P)의 개수를 카운트하여 1-비트 제1선택 신호(SEL1)를 생성한다. 예컨대, 제1선택 신호(SEL1)는 제1상태(예컨대, 데이터 0) 또는 제2상태(예컨대, 데이터 1)일 수 있다.
도 4는 제2선택 신호 생성기의 일 실시 예를 나타내는 블록도를 나타낸다.
도 2와 도 4를 참조하면, 도 2에 도시된 제2선택 신호 생성기(170)의 일 예로서 구현된 도 4의 제2선택 신호 생성기(170A)는 ECC-펄스 발생기(171), 1-비트 카운터(172), 선택기(173), 제1카운터(174), 제1스테이트 머신(state machine; 175), 제2카운터(176), 및 제2스테이트 머신(177)을 포함한다.
ECC-펄스 발생기(171)는 클락 신호(CLK)에 응답하여 도 8에 도시된 바와 같이 일정한 주기를 갖는 다수의 펄스들(P)을 생성한다. 상기 일정한 주기는 제1선택기(110)로 입력되는 다수의 코드워드들(R(x)) 각각의 비트 수(또는 길이)에 따라 결정될 수 있다.
1-비트 카운터(172)는 ECC-펄스 발생기(171)로부터 출력된 다수의 펄스들 (P)의 개수를 카운트하여 1-비트 제3선택 신호(SEL3)를 생성한다. 예컨대, 제3선택 신호(SEL3)는 제1상태(예컨대, 짝수 개일 때) 또는 제2상태(예컨대, 홀수 개일 때)일 수 있다.
멀티플렉서로 구현될 수 있는 선택기(173)는 각 짝수 번째 코드워드에 대한 신드롬 값들(Se(x))을 에러 위치 다항식 발생기(150)로 전송하기 위하여 제1상태를 갖는 제3선택 신호(SEL3)에 따라 ECC-펄스 발생기(171)로부터 출력된 다수의 펄스들(P) 중에서 Pe(도 8 참조)를 제1카운터(174)로 전송할 수 있다.
제1카운터(174)는 선택기(173)로부터 출력된 펄스(Pe)에 응답하여 초기화된 후, 클락 신호(CLK)에 응답하여 업-카운트를 수행하고, 카운트 값이 기준 값에 도달했을 때 활성화된 제1시작 신호(Syn state start_even, 즉 Se)를 생성한다. 따라서 제1스테이트 머신(175)은 활성화된 제1시작 신호(Syn state start_even, 즉 Se)에 따라 Ee 신호(ELP state start_even)를 출력한다. 이때, 제1스테이트 머신 (175)은 에러가 없을 때 노 에러 신호(NEe)를 출력할 수 있다.
제2선택기(140)는 Ee신호에 응답하여 제1레지스터(122)로부터 출력된 해당하는 짝수 번째 코드워드에 대한 신드롬 값들(Se(x))을 에러 위치 다항식 발생기(150)로 전송한다.
선택기(173)는 해당하는 홀수 번째 코드워드에 대한 신드롬 값들(So(x))을 에러 위치 다항식 발생기(150)로 전송하기 위하여 제2상태를 갖는 제3선택 신호 (SEL3)에 따라 ECC-펄스 발생기(171)로부터 출력된 다수의 펄스들(P) 중에서 Po(도 8 참조)를 제2카운터(176)로 전송할 수 있다.
제2카운터(176)는 선택기(173)로부터 출력된 펄스(Po)에 응답하여 초기화된 후, 클락 신호(CLK)에 응답하여 업-카운트를 수행하고, 카운트 값이 기준 값에 도달했을 때 활성화된 제2시작 신호(Syn state start_odd, 즉 So)를 생성한다. 따라서 제2스테이트 머신(177)은 활성화된 제2시작 신호(Syn state start_odd, 즉 So)에 따라 Eo신호(ELP state start_odd)를 출력한다. 이때, 제2스테이트 머신 (177)은 에러가 없을 때 노 에러 신호(NEo)를 출력할 수 있다.
상기 기준값은 코드워드의 비트 수에 따라 설계자에 의하여 결정될 수 있다.
제2선택기(140)는 Eo신호에 응답하여 제2레지스터(132)로부터 출력된 해당하는 홀수 번째 코드워드에 대한 신드롬 값들(So(x))을 에러 위치 다항식 발생기(150)로 전송한다.
제2선택 신호(SEL2)는 Ee신호와 Eo신호를 포함할 수 있다. 예컨대, 제2선택기(140)는 Ee신호가 제2상태를 가질 때 해당하는 짝수 번째 코드워드에 대한 신드롬 값들(Se(x))을 에러 위치 다항식 발생기(150)로 전송하고 Eo신호가 제2상태를 가질 때 해당하는 홀수 번째 코드워드에 대한 신드롬 값들(So(x))을 에러 위치 다항식 발생기(150)로 전송할 수 있다.
도 5는 제2선택 신호 생성기의 다른 실시 예를 나타내는 블록도를 나타낸다.
도 2와 도 5를 참조하면, 도 2에 도시된 제2선택 신호 생성기(170)의 다른 예로서 구현된 도 5의 제2선택 신호 생성기(170B)는 ECC-펄스 발생기(201), 선택기 (202), 제1카운터(203), 제1스테이트 머신(204), 제2카운터(205), 및 제2스테이트 머신(206)을 포함한다.
ECC-펄스 발생기(201)는 클락 신호(CLK)에 응답하여 도 8에 도시된 바와 같이 일정한 주기를 갖는 다수의 펄스들(P)을 생성한다. 상기 일정한 주기는 제1선택기(110)로 입력되는 다수의 코드워드들(R(x)) 각각의 비트 수(또는 길이)에 따라 결정될 수 있다.
멀티플렉서로 구현될 수 있는 선택기(202)는 각 짝수 번째 코드워드에 대한 신드롬 값들(Se(x))을 에러 위치 다항식 발생기(150)로 전송하기 위하여 제1상태를 갖는 제1선택 신호(SEL1)에 따라 ECC-펄스 발생기(171)로부터 출력된 펄스(P) 중에서 Pe(도 8 참조)를 제1카운터(203)로 전송할 수 있다.
제1카운터(203)는 선택기(202)로부터 출력된 펄스(Pe)에 응답하여 초기화된 후, 클락 신호(CLK)에 응답하여 업-카운트를 수행하고, 카운트 값이 기준 값에 도달했을 때 활성화된 제1시작 신호(Syn state start_even, 즉 Se)를 생성한다. 따라서 제1스테이트 머신(204)은 활성화된 제1시작 신호(Syn state start_even, 즉 Se)에 따라 Ee 신호(EPL state start_even)를 출력한다. 이때, 제1스테이트 머신 (204)은 에러가 없을 때 노 에러 신호(NEe)를 출력할 수 있다.
제2선택기(140)는 Ee신호에 응답하여 제1레지스터(122)로부터 출력된 해당하는 짝수 번째 코드워드에 대한 신드롬 값들(Se(x))을 에러 위치 다항식 발생기(150)로 전송한다.
선택기(202)는 해당하는 홀수 번째 코드워드에 대한 신드롬 값들(So(x))을 에러 위치 다항식 발생기(150)로 전송하기 위하여 제2상태를 갖는 제1선택 신호 (SEL1)에 따라 ECC-펄스 발생기(201)로부터 출력된 펄스(P) 중에서 Po(도 8 참조)를 제2카운터(205)로 전송할 수 있다.
제2카운터(205)는 선택기(202)로부터 출력된 펄스(Po)에 응답하여 초기화된 후, 클락 신호(CLK)에 응답하여 업-카운트를 수행하고, 카운트 값이 기준 값에 도달했을 때 활성화된 제2시작 신호(Syn state start_odd, 즉 So)를 생성한다. 따라서 제2 스테이트 머신(206)은 활성화된 제2시작 신호(Syn state start_odd, 즉 So)에 따라 Eo 신호(ELP state start_odd)를 출력한다. 이때, 제2스테이트 머신 (206)은 에러가 없을 때 노 에러 신호(NEo)를 출력할 수 있다.
제2선택기(140)는 Eo 신호에 응답하여 제2레지스터(132)로부터 출력된 해당하는 홀수 번째 코드워드에 대한 신드롬 값들(So(x))을 에러 위치 다항식 발생기(150)로 전송한다.
도 6은 종래의 코드워드들의 전송과 본 발명의 실시 예에 따른 코드워드들의 전송을 나타낸다. 도 6의 (a)를 참조하면, 종래의 시스템에서 사용되는 다수의 코드워드들 각각의 사이는 빗금 부분과 같이 일정한 지연 또는 레이턴시가 존재한다.
만일, 인접하는 두 개의 코드워드들(예컨대, R0(x)와 R1(x)) 사이에 1클락 사이클(clock cycle)이라도 지연(delay)이 존재할 때, 고속으로 동작하는 시스템, 예컨대 NAND 플래시 메모리 시스템에서는 상기 지연에 따른 신호 안정화를 위하여 경우에 따라서는 수 클락 사이클 내지 수십 클락 사이클의 지연이 추가로 필요하다.
그러나, 도 6의 (b)에 도시된 바와 같이, 본 발명의 개념에 따른 듀얼-신드롬 생성기(120과 130)를 포함하는 ECC 블록(20)을 포함하는 시스템(10)은 코드워드(들)를 전송하는 시간 내에 에러 위치 다항식을 계산하는 시간과 치엔 서치 시간이 포함된다면, 인접하는 두 개의 코드워드들(예컨대, R0(x)와 R1(x)) 사이에는 어떠한 지연도 발생하지 않는다.
도 7은 도 1에 도시된 듀얼-신드롬 생성기의 동작을 설명하기 위한 플로우차트이다.
도 1부터 도 7을 참조하면, ECC 블록(20)은 다수의 코드워드들(R(x)), 즉 버스트 리드 코드워드들(R(x))을 수신한다(S10).
다수의 코드워드들(R(x)) 각각이 짝수 번째 코드워드인지 또는 홀수 번째 코드워드인지에 따라 제1선택 신호(SEL1)는 서로 다른 상태를 갖는다(S20).
예컨대, 제1선택기(110)는 제1상태를 갖는 제1선택 신호(SEL1)에 따라 다수의 코드워드들(R(x)) 중에서 해당하는 짝수 번째 코드워드(R0(x), R2(x), ...)를 제1신드롬 생성기(120)로 전송한다. 제1신드롬 생성기(120)는 해당하는 짝수 번째 코드워드(R0(x), R2(x), ...)로부터 신드롬 값들을 계산한다(S31).
그리고, 제1선택기(110)는 제2상태를 갖는 제1선택 신호(SEL1)에 따라 다수의 코드워드들(R(x)) 중에서 해당하는 홀수 번째 코드워드(R1(x), R3(x), ...)를 제2신드롬 생성기(130)로 전송한다. 제2신드롬 생성기(130)는 해당하는 홀수 번째 코드워드(R1(x), R3(x), ...)로부터 신드롬 값들을 계산한다(S32).
상술한 바와 같이 제2상태를 갖는 Ee 신호를 포함하는 제2선택 신호(SEL2)에 따라, 제2선택기(410)는 제1레지스터(122)에 저장된 해당하는 짝수 번째 코드워드(R0(x), R2(x), ...)에 대한 신드롬 값들(Se(x))을 에러 위치 다항식 발생기(150)로 전송한다(S40).
또한, 상술한 바와 같이 제2상태를 갖는 Eo 신호를 포함하는 제2선택 신호 (SEL2)에 따라, 제2선택기(410)는 제2레지스터(132)에 저장된 해당하는 홀수 번째 코드워드(R1(x), R3(x), ...)에 대한 신드롬 값들(So(x))을 에러 위치 다항식 발생기(150)로 전송한다(40).
에러 위치 다항식 발생기(150)는 해당하는 짝수 번째 코드워드(R0(x), R2(x), ...)에 대한 신드롬 값들(Se(x))로부터 위치 에러 다항식(Λ(x)) 또는 해당하는 홀수 번째 코드워드(R1(x), R3(x), ...)에 대한 신드롬 값들(So(x))로부터 위치 에러 다항식(Λ(x))을 계산한다(S50).
치엔 서치(160)는 에러 위치 다항식 발생기(150)로부터 출력된 위치 에러 다항식(Λ(x))으로부터 치엔 서치를 이용하여 다항식의 해들(roots)을 서치하고 다수의 에러 위치들(EP)을 출력한다(S60). 정정 DMA(22)는 치엔 서치(160)로부터 출력된 각 코드워드에 대한 다수의 에러 위치들(EP)을 이용하여 데이터 버퍼(18)에 저장된 각 코드워드의 에러를 정정한다(S70).
도 8은 도 1에 도시된 듀얼-신드롬 생성기의 동작을 설명하기 위한 타이밍도이다.
도 1부터 도 8을 참조하면, 제2선택기(140)는 제2상태를 갖는 Ee 신호를 포함하는 제2선택 신호(SEL2)에 따라 제1레지스터(122)에 저장된 해당하는 짝수 번째 코드워드(R0(x), R2(x), ...)에 대한 신드롬 값들(Se(x))을 에러 위치 다항식 발생기(150)로 전송하고 제2상태를 갖는 Eo 신호를 포함하는 제2선택 신호(SEL2)에 따라 제2레지스터(132)에 저장된 해당하는 홀수 번째 코드워드(R1(x), R3(x), ...)에 대한 신드롬 값들(So(x))을 에러 위치 다항식 발생기(150)로 전송한다. 코드워드 단위로 신드롬 값들(Se(x) 또는 So(x))이 계산된 후, 계산된 신드롬 값들((Se(x) 또는 So(x))이 모두 0인지 또는 아닌지가 판단된다(No error check).
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 시스템
12: 메모리
14: 메모리 인터페이스
16: FIFO 버퍼
18: 데이터 버퍼
20: 에러 정정 코드 회로
22: 정정 DMA 회로
24: 호스트 인터페이스
26: 호스트
110: 제1선택기
120: 제1신드롬 생성기
130: 제2신드롬 생성기
140: 제2선택기
150: 에러 위치 다항식 발생기
160: 에러 위치 계산기

Claims (20)

  1. 제1신드롬 생성기;
    제2신드롬 생성기;
    입력 단자, 제1출력 단자 및 제2출력 단자를 포함하는 디-멀티플렉서(de-multiplexer); 및
    멀티플렉서 선택기를 포함하고,
    상기 디-멀티플렉서는,
    상기 입력 단자를 통해 연속적으로 입력되는 다수의 코드워드들을 수신하고,
    제1상태를 가지는 제1선택 신호에 응답하여, 상기 다수의 코드워드들 중 짝수 번째 코드워드들을 상기 제1출력 단자를 통하여 상기 제1신드롬 생성기로만 전송하고,
    상기 제1상태와 다른 제2상태를 가지는 상기 제1선택 신호에 응답하여, 상기 다수의 코드워드들 중 홀수 번째 코드워드들을 상기 제2출력 단자를 통하여 상기 제2신드롬 생성기로만 전송하고,
    상기 짝수 번째 코드워드들만 상기 제1출력 단자를 통하여 전송하고,
    상기 홀수 번째 코드워드들만 상기 제2출력 단자를 통하여 전송하고,
    상기 멀티플렉서 선택기는 제2선택 신호에 응답하여 상기 제1신드롬 생성기와 상기 제2신드롬 생성기 중 어느 하나에 의해 결정된 신드롬 값들을 에러 위치 다항식 발생기 회로로 전송하는 에러 정정 코드(error correction code(ECC)) 회로.
  2. 제1항에 있어서, 상기 ECC 회로는,
    클락 신호에 응답하여 주기를 갖는 다수의 펄스들을 생성하는 펄스 발생기; 및
    상기 다수의 펄스들의 개수를 카운트하고 카운트 결과에 따라 상기 제1선택 신호를 생성하는 카운터를 더 포함하는 ECC 회로.
  3. 제2항에 있어서,
    상기 주기는 상기 다수의 코드워드들 각각의 비트 수에 따라 결정되는 ECC 회로.
  4. 제1항에 있어서,
    상기 제1신드롬 생성기는 제1레지스터에 저장된 이전 코드워드와 현재 짝수 번째 코드워드에 기초하여 상기 현재 짝수 번째 코드워드의 신드롬 값들을 제1신드롬 값으로 계산하고 계산된 상기 제1신드롬 값들을 상기 제1레지스터로 출력하고,
    상기 제2신드롬 생성기는 제2레지스터에 저장된 이전 코드워드와 현재 홀수 번째 코드워드에 기초하여 상기 현재 홀수 번째 코드워드의 신드롬 값들을 제2신드롬 값으로 계산하고 계산된 상기 제2신드롬 값들을 상기 제2레지스터로 출력하는 ECC 회로.
  5. 제4항에 있어서,
    상기 ECC 회로는 상기 에러 위치 다항식 발생기 회로를 더 포함하고,
    상기 멀티플렉서 선택기는 상기 제2선택 신호에 응답하여, 상기 제1레지스터와 상기 제2레지스터 중 어느 하나로부터 출력된 신드롬 값들을 상기 에러 위치 다항식 발생기 회로로 전송하는 ECC회로.
  6. 제1항에 있어서,
    상기 멀티플렉서 선택기는 상기 제2선택 신호에 응답하여, 상기 제1신드롬 생성기에 의해 생성된 상기 짝수 번째 코드워드들의 신드롬 값들과 상기 제2신드롬 생성기에 의해 생성된 상기 홀수 번째 코드워드들의 신드롬 값들 중 어느 하나를 상기 에러 위치 다항식 발생기 회로로 전송하는 ECC회로.
  7. 제6항에 있어서, 상기 ECC 회로는,
    클락 신호에 응답하여 상기 다수의 코드워드들 각각의 비트 수에 따라 결정된 주기를 갖는 다수의 펄스들을 생성하는 펄스 발생기;
    상기 다수의 펄스들의 개수를 카운트하여 제3선택 신호를 생성하는 1-비트 카운터;
    상기 제3선택 신호에 따라, 상기 펄스 발생기로부터 출력된 상기 다수의 펄스들을 제1출력 단자 또는 제2출력 단자로 출력하는 제3선택기;
    상기 제1출력 단자의 출력 신호에 응답하여 초기화된 후, 상기 클락 신호에 응답하여 업-카운트(up-count)를 수행하고, 카운트 값과 기준 값의 비교 결과에 대응되는 제1시작 신호를 출력하는 제1카운터;
    상기 제1시작 신호에 응답하여 상기 제2선택 신호를 출력하는 제1스테이트 머신;
    상기 제2출력 단자의 출력 신호에 응답하여 초기화된 후, 상기 클락 신호에 응답하여 업-카운트를 수행하고, 카운트 값과 상기 기준 값의 비교 결과에 대응되는 제2시작 신호를 출력하는 제2카운터; 및
    상기 제2시작 신호에 응답하여 상기 제2선택 신호를 출력하는 제2스테이트 머신을 더 포함하는 ECC 회로.
  8. 제6항에 있어서, 상기 ECC 회로는,
    클락 신호에 응답하여 상기 다수의 코드워드들 각각의 비트 수에 따라 결정된 주기를 갖는 다수의 펄스들을 생성하는 펄스 발생기;
    상기 제1선택 신호에 응답하여, 상기 다수의 펄스들 중에서 짝수 번째 펄스를 제1출력 단자로 출력하고 상기 다수의 펄스들 중에서 홀수 번째 펄스를 제2출력 단자로 출력하는 제2선택기;
    상기 제1출력 단자의 출력 신호에 응답하여 초기화된 후 상기 클락 신호를 카운트하고, 카운트 값과 기준 값의 비교 결과에 대응되는 제1시작 신호를 출력하는 제1카운터;
    상기 제1시작 신호에 응답하여 상기 제2선택 신호를 출력하는 제1스테이트 머신;
    상기 제2출력 단자의 출력 신호에 응답하여 초기화된 후 상기 클락 신호를 카운트하고, 카운트 값과 상기 기준 값의 비교 결과에 대응되는 제2시작 신호를 출력하는 제2카운터; 및
    상기 제2시작 신호에 응답하여 상기 제2선택 신호를 출력하는 제2스테이트 머신을 포함하는 ECC 회로.
  9. 메모리로부터 연속적으로 출력되는 다수의 코드워드들을 수신하는 FIFO (first-in first-out) 버퍼;
    상기 FIFO 버퍼로부터 출력된 상기 다수의 코드워드들을 저장하는 데이터 버퍼;
    다수의 신드롬 생성기들 중에서 상기 메모리로부터 출력된 상기 다수의 코드워드들의 순서에 따라 선택된 신드롬 생성기를 이용하여 신드롬 값들을 생성하고, 생성된 신드롬 값들로부터 에러 위치 다항식을 계산하고, 계산된 에러 위치 다항식의 해들을 계산하고, 계산된 해들로부터 다수의 에러 위치들을 출력하는 에러 정정 코드(error correction code (ECC)) 회로;
    상기 다수의 에러 위치들을 이용하여, 코드워드 단위로 상기 데이터 버퍼로부터 리드된 코드워드에 포함된 에러를 정정하고 에러 정정된 코드워드를 상기 데이터 버퍼에 저장하는 정정 DMA(direct memory access); 및
    상기 데이터 버퍼에 저장된 상기 에러 정정된 코드워드를 호스트로 전송하기 위한 호스트 인터페이스를 포함하고,
    상기 다수의 신드롬 생성기들은 제1신드롬 값들을 결정하는 제1신드롬 생성기와 제2신드롬 값들을 결정하는 제2신드롬 생성기를 포함하고,
    상기 ECC 회로는,
    입력 단자, 제1출력 단자 및 제2출력 단자를 포함하는 디-멀티플렉서(de-multiplexer); 및
    멀티플렉서 선택기를 포함하고,
    상기 디-멀티플렉서는,
    상기 입력 단자를 통해 연속적으로 입력되는 다수의 코드워드들을 수신하고,
    제1상태를 가지는 제1선택 신호에 응답하여 상기 다수의 코드워드들 중 짝수 번째 코드워드들을 상기 제1출력 단자를 통하여 상기 제1신드롬 생성기로만 전송하고,
    상기 제1상태와 다른 제2상태를 가지는 상기 제1선택 신호에 응답하여 상기 다수의 코드워드들 중 홀수 번째 코드워드들을 상기 제2출력 단자를 통하여 상기 제2신드롬 생성기로만 전송하고,
    상기 짝수 번째 코드워드들만 상기 제1출력 단자를 통하여 전송하고, 상기 홀수 번째 코드워드들만 상기 제2출력 단자를 통하여 전송하고,
    상기 제1선택 신호는 상기 순서에 따라 생성되고,
    상기 멀티플렉서 선택기는 제2선택 신호에 응답하여 상기 제1신드롬 생성기와 상기 제2신드롬 생성기 중 어느 하나에 의해 결정된 신드롬 값들을 에러 위치 다항식 발생기 회로로 전송하는 시스템.
  10. 제9항에 있어서,
    상기 멀티플렉서 선택기는 상기 순서에 따라 생성된 상기 제2선택 신호에 응답하여, 상기 제1신드롬 생성기와 상기 제2신드롬 생성기 중 어느 하나로부터 출력된 신드롬 값들을 출력하고,
    상기 ECC 회로는,
    상기 멀티플렉서 선택기로부터 출력된 신드롬 값들로부터 상기 에러 위치 다항식을 계산하는 상기 에러 위치 다항식 발생기 회로; 및
    상기 에러 위치 다항식의 해들을 계산하고 계산 결과에 따라 상기 다수의 에러 위치들을 출력하는 에러 위치 계산기를 더 포함하는 시스템.
  11. 제10항에 있어서, 상기 ECC 회로는,
    클락 신호에 응답하여 상기 다수의 코드워드들 각각의 비트 수에 따라 결정된 주기를 갖는 다수의 펄스들을 생성하는 펄스 발생기; 및
    상기 다수의 펄스들의 개수를 카운트하고 카운트 결과에 따라 상기 제1선택 신호를 생성하는 카운터를 더 포함하는 시스템
  12. 제10항에 있어서,
    상기 ECC 회로는 제1레지스터와 제2레지스터를 더 포함하고,
    상기 제1신드롬 생성기는 제1레지스터에 저장된 이전 코드워드와 현재 짝수 번째 코드워드에 기초하여 상기 현재 짝수 번째 코드워드의 신드롬 값들을 상기 제1신드롬 값으로 계산하고 계산된 상기 제1신드롬 값들을 상기 제1레지스터로 출력하고,
    상기 제2신드롬 생성기는 제2레지스터에 저장된 이전 코드워드와 현재 홀수 번째 코드워드에 기초하여 상기 현재 홀수 번째 코드워드의 신드롬 값들을 상기 제2신드롬 값으로 계산하고 계산된 상기 제2신드롬 값들을 상기 제2레지스터로 출력하고,
    상기 멀티플렉서 선택기는 상기 제2선택 신호에 응답하여, 상기 제1레지스터와 상기 제2레지스터 중 어느 하나에 저장된 신드롬 값들을 상기 에러 위치 다항식 발생기 회로로 전송하는 시스템.
  13. 제9항에 있어서, 상기 시스템은 휴대 전화(mobile phone), 스마트 폰, 태블랫 PC 및 메모리 카드 중 어느 하나인 시스템.
  14. 적어도 메모리로부터 출력된 제1코드워드 열(series of codewords)을 생성하고 제1신드롬 생성기를 포함하는 제1처리 경로와 상기 메모리로부터 출력된 제2코드워드 열을 생성하고 제2신드롬 생성기를 포함하는 제2처리 경로;
    입력 단자, 제1출력 단자 및 제2출력 단자를 포함하는 디-멀티플렉서(de-multiplexer); 및
    멀티플렉서 선택기를 포함하고,
    상기 디-멀티플렉서는,
    상기 입력 단자를 통해 연속적으로 입력되는 다수의 코드워드들을 수신하고,
    상기 제1신드롬 생성기는 제1상태를 가지는 제1선택 신호에 응답하여 상기 디-멀티플렉서의 상기 제1출력 단자에 접속되고,
    상기 제2신드롬 생성기는 상기 제1상태와 다른 제2상태를 가지는 제1선택 신호에 응답하여 상기 디-멀티플렉서의 상기 제2출력 단자에 접속되고,
    상기 멀티플렉서 선택기는 제2선택 신호에 응답하여 상기 제1처리 경로와 상기 제2처리 경로 중 어느 하나에 의해 생성된 신드롬 값들을 에러 위치 다항식 발생기 회로로 전송하는 에러 정정 코드(error correction code(ECC)) 회로.
  15. 제14항에 있어서, 상기 제1코드워드 열은 상기 메모리로부터 출력된 짝수 번째 코드워드들을 포함하고, 상기 제2코드워드 열은 상기 메모리로부터 출력된 홀수 번째 코드워드들을 포함하는 ECC 회로.
  16. 제14항에 있어서,
    상기 메모리로부터 상기 제1처리 경로와 상기 제2처리 경로 중 어느 하나로 상기 코드워드들을 선택적으로 전달하는(direct) 선택기를 더 포함하는 ECC 회로.
  17. 제14항에 있어서,
    상기 제1처리 경로는 제1레지스터를 더 포함하고,
    상기 제2처리 경로는 제2레지스터를 더 포함하고,
    상기 제1신드롬 생성기는 상기 제1레지스터에 저장된 상기 제1코드워드 열 내의 이전 코드워드와 상기 제1코드워드 열 내의 현재 코드워드에 기초하여 상기 현재 코드워드에 대한 제1신드롬 값들을 생성하고,
    상기 제2신드롬 생성기는 상기 제2레지스터에 저장된 상기 제2코드워드 열 내의 이전 코드워드와 상기 제2코드워드 열 내의 현재 코드워드에 기초하여 상기 현재 코드워드에 대한 제2신드롬 값들을 생성하는 ECC 회로.
  18. 제17항에 있어서,
    상기 ECC 회로는 상기 에러 위치 다항식 발생기 회로를 더 포함하고,
    상기 에러 위치 다항식 발생기 회로는 상기 제1처리 경로와 상기 제2처리 경로의 출력으로부터 에러 위치 다항식들과 에러 위치 다항식 계수들 중 하나를 생성하는 ECC 회로.
  19. 제18항에 있어서,
    상기 에러 위치 다항식 발생기 회로의 출력에 기초하여 에러 위치들을 생성하는 검색 블록을 더 포함하는 ECC 회로.
  20. 제14항에 있어서,
    상기 에러 위치 다항식 발생기 회로; 및
    검색 유닛을 더 포함하고,
    상기 에러 위치 다항식 발생기 회로는 상기 제1처리 경로와 상기 제2처리 경로로부터 생성된 신드롬 값들 각각에 기초하여 제1에러 위치 다항식과 제2에러 위치 다항식을 각각 생성하고,
    상기 검색 유닛은 제1에러 위치와 제2에러 위치를 생성하기 위해 상기 제1에러 위치 다항식과 상기 제2에러 위치 다항식에 검색 알고리즘을 각각 적용하는 ECC 회로.
KR1020110104928A 2010-12-30 2011-10-14 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템 KR101807538B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201061428273P 2010-12-30 2010-12-30
US61/428,273 2010-12-30

Publications (2)

Publication Number Publication Date
KR20120078576A KR20120078576A (ko) 2012-07-10
KR101807538B1 true KR101807538B1 (ko) 2017-12-12

Family

ID=46381899

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110104928A KR101807538B1 (ko) 2010-12-30 2011-10-14 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템

Country Status (2)

Country Link
US (1) US9246515B2 (ko)
KR (1) KR101807538B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116822B2 (en) * 2012-12-07 2015-08-25 Micron Technology, Inc. Stopping criteria for layered iterative error correction
KR102121335B1 (ko) * 2014-03-27 2020-06-12 에스케이하이닉스 주식회사 데이터 처리 블록 및 그것을 포함하는 데이터 저장 장치
JP2016126813A (ja) * 2015-01-08 2016-07-11 マイクロン テクノロジー, インク. 半導体装置
JP6486723B2 (ja) 2015-01-21 2019-03-20 東芝メモリ株式会社 メモリシステムおよび処理装置
US10289475B2 (en) * 2015-01-21 2019-05-14 Toshiba Memory Corporation Memory system
US9595353B2 (en) * 2015-02-12 2017-03-14 Sandisk Technologies Llc Resistance-based memory with auxiliary redundancy information
KR102286193B1 (ko) * 2015-06-30 2021-08-09 에스케이하이닉스 주식회사 플래시 메모리 시스템 및 그의 동작 방법
US10461777B2 (en) 2015-07-14 2019-10-29 Western Digital Technologies, Inc. Error locator polynomial decoder and method
US10439644B2 (en) 2015-07-14 2019-10-08 Western Digital Technologies, Inc. Error locator polynomial decoder and method
US20170017544A1 (en) * 2015-07-14 2017-01-19 HGST Netherlands B.V. Systems and methods for providing low latency read path for non-volatile memory
US10572189B2 (en) 2016-11-04 2020-02-25 Sandisk Technologies Llc Method and decoder to adjust an error locator polynomial based on an error parity
TWI566091B (zh) 2015-09-10 2017-01-11 慧榮科技股份有限公司 用來對一錯誤更正碼進行解碼之方法與解碼電路
KR102504176B1 (ko) * 2016-06-23 2023-03-02 에스케이하이닉스 주식회사 반도체장치
US10459783B2 (en) * 2016-08-30 2019-10-29 Marvell World Trade Ltd. Low-latency decoder for Reed Solomon codes

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03179923A (ja) 1989-12-08 1991-08-05 Matsushita Electric Ind Co Ltd Bch符号の復号方法および装置
US5260952A (en) * 1991-04-30 1993-11-09 Ibm Corporation Fault tolerant logic system
DE19635240A1 (de) * 1996-08-30 1998-03-05 Siemens Ag Speichersystem
JPH10254788A (ja) 1997-03-13 1998-09-25 Kofu Nippon Denki Kk 複数バンク構成記憶回路
US6115837A (en) * 1998-07-29 2000-09-05 Neomagic Corp. Dual-column syndrome generation for DVD error correction using an embedded DRAM
JP4213814B2 (ja) 1999-05-11 2009-01-21 富士通株式会社 エラー訂正回路のチェック方法およびチェック機能付きエラー訂正回路
US7010576B2 (en) 2002-05-30 2006-03-07 International Business Machines Corporation Efficient method of globalization and synchronization of distributed resources in distributed peer data processing environments
US8206974B2 (en) * 2005-05-19 2012-06-26 Netbio, Inc. Ruggedized apparatus for analysis of nucleic acid and proteins
KR101433620B1 (ko) * 2007-08-17 2014-08-25 삼성전자주식회사 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법
US8261165B2 (en) * 2008-11-14 2012-09-04 Silicon Laboratories Inc. Multi-syndrome error correction circuit
US8453038B2 (en) * 2009-06-30 2013-05-28 Apple Inc. Chien search using multiple basis representation

Also Published As

Publication number Publication date
US20120173951A1 (en) 2012-07-05
KR20120078576A (ko) 2012-07-10
US9246515B2 (en) 2016-01-26

Similar Documents

Publication Publication Date Title
KR101807538B1 (ko) 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템
US8069389B2 (en) Error correction circuit and method, and semiconductor memory device including the circuit
US9912355B2 (en) Distributed concatenated error correction
US8140945B2 (en) Hard component failure detection and correction
US20150311920A1 (en) Decoder for a memory device, memory device and method of decoding a memory device
GB2369215A (en) Memory device and Reed Solomon decoder including the memory device
KR20150108305A (ko) 인코드된 데이터에 대한 디코딩을 수행하는 디코더 유닛
JP2008165808A (ja) 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
US20120144261A1 (en) Error checking and correcting circuit, memory system compising error checking and correcting circuit, and related methods of operation
US20090110109A1 (en) Apparatus and method for generating a transmit signal and apparatus and method for extracting an original message from a received signal
WO2016013285A1 (ja) メモリコントローラおよびメモリコントローラの制御方法
US8332727B2 (en) Error correction circuit, flash memory system including the error correction circuit, and operating method of the error correction circuit
KR20180089104A (ko) 메모리 모듈, 이를 포함하는 메모리 시스템 및 이의 에러 정정 방법
US20130139028A1 (en) Extended Bidirectional Hamming Code for Double-Error Correction and Triple-Error Detection
US20220180961A1 (en) Memory device and read method thereof
US20160283325A1 (en) Errors and erasures decoding from multiple memory devices
KR102420641B1 (ko) 에러정정방법 및 이를 이용한 반도체장치
TWI493562B (zh) 具有受配置以防止過度校正之錯誤校正的記憶體
US10236915B2 (en) Variable T BCH encoding
US10133628B2 (en) Apparatuses and methods for encoding using error protection codes
KR20190043043A (ko) 전자장치
JP2020150515A (ja) 誤り訂正回路及びメモリシステム
US8327243B1 (en) System and method for generating locator polynomials
US9608668B2 (en) Error correcting apparatus, error correcting method, and program
US11424765B2 (en) ECC decoders having low latency

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