KR100857947B1 - 반도체 메모리 장치 - Google Patents

반도체 메모리 장치 Download PDF

Info

Publication number
KR100857947B1
KR100857947B1 KR1020070006142A KR20070006142A KR100857947B1 KR 100857947 B1 KR100857947 B1 KR 100857947B1 KR 1020070006142 A KR1020070006142 A KR 1020070006142A KR 20070006142 A KR20070006142 A KR 20070006142A KR 100857947 B1 KR100857947 B1 KR 100857947B1
Authority
KR
South Korea
Prior art keywords
error
polynomial
data
bit
bits
Prior art date
Application number
KR1020070006142A
Other languages
English (en)
Other versions
KR20070077125A (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 KR20070077125A publication Critical patent/KR20070077125A/ko
Application granted granted Critical
Publication of KR100857947B1 publication Critical patent/KR100857947B1/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/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F24HEATING; RANGES; VENTILATING
    • F24CDOMESTIC STOVES OR RANGES ; DETAILS OF DOMESTIC STOVES OR RANGES, OF GENERAL APPLICATION
    • F24C15/00Details
    • F24C15/20Removing cooking fumes
    • F24C15/2078Removing cooking fumes movable
    • F24C15/2085Removing cooking fumes movable adjustable in height
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F24HEATING; RANGES; VENTILATING
    • F24CDOMESTIC STOVES OR RANGES ; DETAILS OF DOMESTIC STOVES OR RANGES, OF GENERAL APPLICATION
    • F24C15/00Details
    • F24C15/20Removing cooking fumes
    • F24C15/2071Removing cooking fumes mounting of cooking hood
    • 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/159Remainder calculation, e.g. for encoding and syndrome calculation

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Mechanical Engineering (AREA)
  • Combustion & Propulsion (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

반도체 메모리 장치는 내장된 에러 검출 및 정정 시스템을 구비하며, 이 에러 검출 및 정정 시스템은 순환 코드를 갖도록 형성되며, 이것을 가지고 다중 에러 비트가 정정될 수 있으며, 상기 순환 코드는, 에러-정정가능 최대 비트수에 대응하는 차수를 갖는 정보 다항식의 전체 차수로부터 특정한 차수가 정보비트로서 선택되어서 가급적 작은 신드롬 다항식의 계산 규모를 만드는 방식으로 구성된다.
반도체 메모리 장치, 에러 검출 및 정정 시스템

Description

반도체 메모리 장치{SEMICONDUCTOR MEMORY DEVICE}
도 1은 본 발명의 실시예에 따른 플래시 메모리의 주요 부분의 구성을 나타내는 도면.
도 2는 플래시 메모리에서의 셀 어레이의 상세한 배열을 나타내는 도면.
도 3은 셀 어레이의 더욱 상세한 구조를 나타내는 도면.
도 4는 플래시 메모리의 데이터 레벨 관계를 나타내는 도면.
도 5a는 "1"의 짝/홀수 판단을 수행하는 ECC 회로에 사용되는 4-비트 패리티 체크 회로를 나타내는 도면이며, 도 5b는 패리티 체크장치 회로의 기호를 나타내는 도면.
도 6은 GF(2)상의 승산 계산법(product computation method)을 나타내는 도면.
도 7은 그러한 승산 계산에서 사용하기 위한 패리티 체크 회로를 나타내는 도면.
도 8은 ECC 회로의 인코더에서 테스트 비트 계산법을 나타내는 도면.
도 9는 ECC 회로의 디코더에서 신드롬 다항식 S1(x)의 계산법을 나타내는 도면.
도 10은 ECC 회로의 디코더에서 신드롬 다항식 S3(x3)의 계산법을 나타내는 도면.
도 11은 데이터 비트로서 사용되도록 하기 위해 정보 다항식으로부터 선택된 114개 차수를 나타내는 도면.
도 12a 및 12b는 코드 생성 다항식으로 데이터 다항식을 나누어 얻어진 15-차 나머지 다항식의 계수를 나타내는 테이블.
도 13은 "1"인 15-차 나머지 다항식의 각 차수의 계수를 갖는 "n"의 테이블.
도 14는 테스트 비트 계산에 사용하기 위한 패리티 체크 회로의 구조를 나타내는 도면.
도 15는 신드롬 다항식 S1(x)의 계산에 사용된 나머지 다항식 pn(x)의 선택된 n에서 "1"의 각 차수의 계수를 갖는 n의 테이블.
도 16은 신드롬 다항식 S1(x)을 계산하는 대표적인 회로를 나타내는 도면.
도 17은 신드롬 다항식 S3(x3)의 계산에 사용하기 위한 나머지 다항식 p3n(x)의 선택된 n에서 "1"의 각 차수의 계수를 갖는 n의 테이블.
도 18은 신드롬 다항식 S3(x3)을 계산하는 대표적인 회로를 나타내는 도면.
도 19는 디코딩시에 필요한 나머지 다항식 pn(x)의 계수 테이블.
도 20은 ECC 회로에서의 에러 위치 검색 회로를 나타내는 도면.
도 21은 에러 위치 검색 회로에서 "S-part"로 명명된 모듈의 구조를 나타내는 도면.
도 22는 에러 위치 검색 회로에서 "D-part" 유닛의 구조를 나타내는 도면.
도 23은 에러 위치 검색 회로와 작동 가능하게 결합하는 에러 정정 회로의 구조를 나타내는 도면.
도 24는 에러 정정 회로에 사용되는 2-비트 패리티 체크 회로를 나타내는 도면.
도 25는 본 발명의 실시예에 따른 ECC 시스템의 기능적인 블록 구조를 나타내는 도면.
도 26은 본 발명의 원리를 구체화하는 NAND 플래시 메모리 장치에서의 코어 회로의 구조를 나타내는 도면.
도 27은 디지털 스틸 카메라에 적용된 다른 실시예를 나타내는 도면.
도 28은 디지털 스틸 카메라의 내부 구조를 나타내는 도면.
도 29a 내지 29j는 실시예가 적용된 다른 전기 장치를 나타내는 도면.
본 발명은 일반적으로 반도체 메모리 장치에 관한 것이며, 더욱 구체적으로는, 반도체 메모리 장치에 사용하기에 적절한 온-칩 에러 검출 및 정정 시스템에 관한 것이다.
전기적으로 재기입 가능한 비휘발성 반도체 메모리 장치는 데이터 재기입 작업의 회수가 증가함에 따라 에러율도 증가하는 "플래시" 메모리를 포함한다. 특히, 더 큰 기억 용량과 더욱 향상된 소형화에 대한 추구는 에러율을 증가시킨다. 이 점을 고려하여, 빌트-인 에러 정정 코드(ECC) 회로를 플래시 메모리 칩 상, 또는 대안으로 이러한 칩을 제어하는 메모리 제어기 내에 장착하거나 "매립"하는 시도가 행해졌다. 이러한 기술을 이용하는 대표적인 장치가, 예를 들어, 일본 특허공개공보 제 2000-173289호에 기재되어 있다.
하나 이상의 플래시 메모리를 이용하는 호스트 장치 측에 플래시 메모리에서 일어나는 에러를 검출 및 정정하는 ECC 시스템을 갖도록 디자인하는 것이 가능하다. 이 경우에, 그러나, 호스트 장치는, 에러율이 증가하는 경우, 그의 작업 부하가 증가한다. 예를 들어, 2-비트 에러 정정 가능한 ECC 시스템은, 일본 특허공개공보 제 2004-152300호에서 제안된 바와 같이, 계산 규모가 더욱 크게 된다.
따라서, 호스트 장치의 부하 증가를 억제하면서 그러한 에러율 증가에 대처하기 위하여, 플래시 메모리에 2-비트 에러 정정 가능한 ECC 시스템을 형성하는 것이 요구된다. 이 경우에 필요한 것은 상충하는 필요 조건을 만족시키는 것이다. 즉, ECC 시스템의 산술 연산 속도를 증가시키고 이에 의해 플래시 메모리의 판독/기입 속도 감소의 가능한 불이익을 줄이는 것이다.
본 발명의 일 태양에 따르면, 내장된 에러 검출 및 정정 시스템을 갖는 반도체 메모리로서,
에러 검출 및 정정 시스템은 순환 코드(cyclic code)를 갖도록 형성되며, 이것을 가지고 다중 에러 비트가 정정될 수 있으며,
순환 코드는, 에러-정정가능 최대 비트수에 대응하는 차수를 갖는 정보 다항식의 전체 차수로부터 임의의 차수가 정보비트로서 선택되어 가급적 작은 신드롬 다항식(syndrome polynomial)의 계산 규모(calculation scale)를 만드는 방법으로 구성되는 반도체 메모리 장치를 제공한다.
본 발명의 다른 태양에 따르면, BCH의 코드의 사용에 의해 2-비트 에러를 검출하고 정정하는, 내장된 에러 검출 및 정정 시스템을 갖는 반도체 메모리 장치로서,
에러 검출 및 정정 시스템은
기입되는 데이터와 함께 장치의 셀 어레이로 기입되도록 체크 비트를 생성하도록 구성된 인코딩부;
셀 어레이로부터의 판독 데이터에 대하여 신드롬 연산을 실행하도록 구성된 신드롬 연산부;
신드롬 작업부의 작업 결과에 기초하여 에러 위치를 검색하도록 구성된 에러 위치 검색부; 및
에러 위치 검색부에서 검출된 에러 위치에서 판독 데이터 비트를 반전하고 그것을 출력하도록 구성된 에러 정정부를 구비하며,
인코딩부는, 15-차 나머지 다항식(15-degree remainder polynomial) r(x)를 얻어서 체크 비트로서 그의 16 계수를 선택하기 위하여, 갈로이스 필드(Galois field) GF(28)에서 서로 소수인(prime with each other), 2개의 8-차 원시 다항식(8-degree primitive polynomials) m1(x)와 m3(x)의 곱으로서 정의된 코드 생성 다항식 g(x)로, 기입되는(to-be-written) 데이터가 계수가 되는 상태로 구성된 254-차 데이터 다항식 f(x)x16을 나누기 위한 것이며,
인코딩부에서, 16 개의 체크 비트 및 에러 정정되는 M 개의 데이터 비트에 대응하는 M+16(M≤255-16=239) 항이, 신드롬 연산부에서의 계산 규모가 가급적 작게 되는 방식으로 데이터 다항식으로부터 선택되는 반도체 메모리 장치를 제공한다.
본 발명의 임의의 실시예들은 도시된 첨부 도면을 참조하여 이하에 설명될 것이다.
도 1을 참조하면, 본 발명을 구현하는 플래시 메모리의 주요 부분을 나타내는 블록 도가 도시되어 있다. 이 플래시 메모리는 뱅크 커플 BANK0 및 BANK1를 포함한다. 뱅크 BANK0는 네 개의 분리 메모리 셀 어레이(1), 즉, T-셀 어레이(0-1), C-어레이(0-2), T-셀 어레이(0-3), 및 C-셀 어레이(0-4)로 형성된다. 다른 뱅크 BANK1는 네 개의 셀 어레이(1), 즉, T-셀 어레이(1-1), C-어레이(1-2), T-셀 어레이(1-3), 및 C-셀 어레이(1-4)로 형성된다.
각 셀 어레이(1)는 워드-선 선택을 수행하는 로우 디코더(RDEC)와 연관된다. 센스 증폭기(SA) 회로(2)가 제공되며, 이것의 각각은 일반적으로 이웃하는 T-셀 어레이와 C-셀 어레이에 의하여 공통적으로 소유하거나 또는 "공유된다". 이 T-셀 어레이와 C-셀 어레이는 복수의 정보 셀, 즉 T-셀 및 C-셀을 각각 가지며, 각각은 이후에 상세하게 설명되는 하나 이상의 참조 셀 (R-셀)을 갖는다.
정보 셀 (T-셀 및 C-셀)은 참조 셀(R-셀)의 구조와 동일하다. T셀 어레이로부터 정보 셀(T-셀)의 선택 시에, 참조 셀(R-셀)이 이 T-셀 어레이와 쌍을 이루는 C-셀 어레이로부터 선택된다. 유사하게, 정보 셀(C-셀)이 C-셀 어레이로부터 선택될 때, 참조 셀(R-셀)은 그와 함께 한 쌍을 이루는 C-셀 어레이로부터 선택된다.
네 개의 분리 셀 어레이(1)를 각각 갖는 상부 및 하부 셀 어레이 그룹의 판독/기입 데이터는 센스 증폭기 회로(2)와 외부 입력/출력(I/O)노드 사이에 I/O 버퍼(7)를 경유하여 데이터 버스(5 및 6)를 통해 전송된다. 네 개의 셀 어레이(1)를 각각 갖는 상부 및 하부 셀 어레이 그룹 사이에, 에러 정정 코드(ECC) 회로(8)가 판독 데이터의 에러를 검출하고 정정하도록 작동 가능한 에러 검출 및 정정 시스템으로서 제공된다.
다음, 도 2를 참조하면, 공유 센스 증폭기 회로(2)를 갖는 한 쌍의 T-셀 어레이와 C-셀 어레이의 상세한 구조가 도시된다. T-셀 어레이는 평행하게 연장하는 비트선(BL)을 가지며, 이들 각각은 복수의 정보 셀 NAND 스트링(T-NAND)와 하나 이상의 참조 셀 NAND 스트링(R-NAND)에 연결된다. 유사하게, C-셀 어레이는 평행한 비트선(BBL)을 가지며, 이것의 각각에 복수의 정보 셀 NAND 스트링(C-NAND)과 하나 이상의 참조 셀 NAND 스트링(R-NAND)이 연결된다. T-셀 어레이의 비트선(BL) 및 C-셀 어레이의 대응 비트선(BBL)은 한 쌍을 구성한다.
센스 증폭기 회로(2)는 전류 검출 타입의 센스 유닛(SAU)을 가지며, 센스 유닛(SAU) 각각은 데이터를 감지하기 위해 한 쌍의 비트선(BL 과 BBL)에서 흐르는 전류의 차를 검출한다. 비록 도 1에서 센스 유닛(SAU)이 쌍으로 이루어진 비트선(BL 및 BBL)의 사이에 하나씩 배치되고 있지만, 단일 센스 유닛이 두 개 이상의 비트선 쌍에 의해 공유되도록 하는 구성이 일반적으로 채용된다.
정보 셀 NAND 스트링(T-NAND 및 C-NAND), 및 참조 셀 NAND 스트링(R-NAND)의 미리 특정된 직렬 조합이 비트선에 직각 방향으로 레이아웃되어, 셀 블록을 구성한다. 각 셀 블록에서, 워드선(TWL, CWL 및 RWL)들이 배치된다. 더욱 구체적으로는, 이 셀 블록은 비트선(BL 및 BBL)들과 절연적으로 가로지르거나 또는 "교차"하는 복수의 평행 워드선 군, 즉, 정보 셀 NAND 스트링(T-NAND)의 각 컬럼과 관련된 워드선(TWL)들의 번들(bundle), 정보 셀 NAND 스트링(C-NAND)의 각 컬럼에 연결된 워드선(CWL)의 세트, 및 참조 셀 NAND 스트링(R-NAND)의 각 컬럼에 결합된 워드선을 각각 갖는다.
도 3은 하나의 센스 유닛(SAU)과 센스 유닛에 연결되는 정보 셀 NAND 스트링(T-NAND) (또는 C-NAND)) 및 참조 셀 NAND 스트링(R-NAND)을 포함하는 회로의 상세한 구조를 나타내고 있다. 이러한 각 NAND 스트링은 전기적으로 재기입 가능한 비휘발성 메모리 셀(M0 내지 M31)의 직렬 연결부와 그의 대향 단부에서 두 개의 선택 트랜지스터(SG1 및 SG2)를 갖는다. 사용되는 비휘발성 메모리 셀(M0 내지 M31)들이 트랜지스터 구성에서 동일하며 반면에, 이러한 셀들은 정보 셀 NAND 스트 링(T-NAND (또는 C-NAND))에서 정보 셀(T-셀 (또는 C-셀))로서 기능을 하거나 참조 셀 NAND 스트링(R-NAND)에서 참조 셀(R-셀)로서 작용할 수 있다.
데이터 센스 이벤트에서, 정보 셀 NAND 스트링(T-NAND (또는 C-NAND))의 메모리 셀과 참조 셀 NAND 스트링(R-NAND)에서 그의 대응 셀이 동시에 함께 선택된다. 이러한 동시 데이터/참조 셀 선택은 전류(Ic 및 Ir)를 이러한 셀 스트링에서 각각 흐르게 한다. 센스 유닛(SAU)은 데이터를 감지하기 위해 이들 셀 전류(Ic 및 Ir)의 차를 검출한다.
도 4는 네 개의 레벨 기억 구성의 경우 메모리 셀 데이터 레벨(임계 레벨)의 분포를 나타낸다. 네 개의 상이한 데이터 레벨(L0, L1, L2, 및 L3) 중 어느 하나가 정보 셀(T-셀 및 C-셀)에 기입된다. 예를 들어, 데이터 레벨 L0과 L1 사이에 포텐셜을 가지도록 설정된 참조 레벨(Lr)은 참조 셀(R-셀)에 기입된다.
네 개의 데이터 레벨(L0 내지 L3)의 비트 할당이 정보 셀인 T-셀과 C-셀 사이에서 상이하다. 예를 들어, 네 개의 레벨 데이터가 상부 레벨 비트인 HB와 하부 레벨 비트인 LB로 표현된다고 가정한다. T-셀 어레이 측 상의 정보 셀(T-셀)에서, 데이터 비트는 다음과 같이 지정된다: L0 = (1,0), L1 = (1,1), L2 = (0,1), 및 L3 = (0,0). 반면에, C-셀 어레이 측 상의 정보 셀(C-셀)에서는, 데이터 비트가 다음과 같이 지정된다: L0 = (0,0), L1 = (0,1), L2 = (1,1), 및 L3 = (1,0).
도 4에서, 판독되는 데이터에 따라서 판독하는 동안 정보 셀(T-셀 및 C-셀)에 주어진 판독 전압(R1 내지 R3) 및 참조 셀(R-셀)에 인가되는 판독 전압(Rr)이 도시되고 있다. 또한, 기입 검증(write-verifying)동안 정보 셀(T-셀 및 C-셀)에 주어지는 기입 검증 전압(P1 내지 P3) 및 참조 셀(R-셀)에 인가되는 기입-검증 전압(Pr)이 여기에 도시되고 있다.
1 기가비트(Gb)의 메모리가 두 개의 512 메가비트(Mb) 뱅크(BAK0 및 BNK1)를 사용하여 구성되는 경우에 ECC회로(8)와 그의 액세스 모드를 장착하는 본 실시예에서 사용된 기술이 설명될 것이다.
여기에서 설명된 메모리는, 비록 각각의 뱅크의 페이지 어드레스가 독립적으로 설정 가능하지만 어드레스 발생은 모든 뱅크에 공통적이고, 어느 페이지 어드레스가 어느 뱅크에 인가되는지를 지정함으로써 각 뱅크에 할당이 수행되는 x16-IO 구성을 갖는다. 따라서, 페이지 어드레스를 이용하기 위해 뱅크들 사이에 인터리빙(interleaving)이 행해진다.
각 뱅크는 1,024k 페이지를 갖는다. 각 뱅크의 16 IO들에 대해 공통으로 정의된 페이지 길이는, 평행하게 8비트씩 출력될 수 있는, 32 비트이다. 이 페이지 길이는 일 회의 워드선 어드레스 설정으로, 감지 작업에 의해 판독 가능한 하나의 IO에 대하여 뱅크당 최대 또는 "최장" 데이터 길이이다.
그러한 배열에 의해, 128 비트 데이터는 센스 증폭기 회로(2)로부터 일 회의 데이터 전송에 의해 외부로 출력된다. 다시 말해, 이러한 설계는 2k 데이터 비트를 함께 전송하는 것을 허용한다(여기에서, k 는 정수이다).
플래시 메모리에 내장된 ECC 회로(8)는 이하 "2EC-BCH" 코드로서 언급되는 2비트 에러 정정 능력을 갖는 BCH(Bose-Chaudhuri-Hocquenghem)코드, 즉, 이중 에러 정정 BCH 코드 시스템을 이용하도록 배열된다. 2 비트 에러 정정을 가능하게 하기 위해, 상이한 근을 갖는 동시 방정식을 이용하는 것이 필요하다. 2EC-BCH 코드는 두 개의 원시 다항식의 곱으로 표시된 코드 생성 다항식에 의해 생성된 순환 코드이다.
여기에 사용된 비트 길이는 2n-1이다. 정보로서 사용 가능한 데이터 비트는 2n-1-2n 비트이다. 2m 비트 데이터를 처리하기 위해, n = m + 1이라고 한다. 이는 요구되는 양보다 거의 2배 더 큰 데이터 길이를 불가피하게 사용하도록 한다.
도 1의 메모리 구조에서, 128 비트 정보 데이터에서 2비트 에러 정정을 실행하기 위해 사용된 2EC-BCH 코드는 갈로이스 필드(Galois field, GF(28) 상에 있다. 이 경우에, 사용 가능한 비트 길이는 에러 체크 비트로서 16비트의 사용을 필요로 하는 28-1 = 255이다. 따라서, 144 비트가 16 체크 비트 및 128 정보 데이터 비트용으로 사용되는 경우, 나머지 111비트는 여분의 비트로 된다. 이 경우에, 도 1에 도시된 바와 같이, 각 뱅크를 양분하는 상부와 하부 셀로부터 연장하는 데이터 버스(5)는 각각 72DQ선이며, 결과적으로 합계 144 비트 데이터가 동시에 함께 전송된다.
ECC 시스템의 효율은 사용하지 않은 여분의 111비트의 처리 및 정보 비트 선택이 BCH 코드 시스템에서 어떻게 실행되는지에 따라서 가변적이다. 따라서, 가장 적합한 ECC 시스템을 구성하는 방법을 고려할 필요가 있다.
비록 어떤 경우에 결함 셀의 교체용 리던던시(redundancy)를 또한 포함하는 것이 고려될 때, 필요한 비트 수는 128비트 이상이지만, 이것은 여기에서 논의된 128비트 데이터 길이의 경우로부터 유사하게 용이하게 연장할 수 있다. 일반적으로, 2EC-BCH 시스템에서 에러 정정되는 M 데이터 비트 수는 M ≤ 255-16 = 239의 범위에서 선택된다.
(데이터 인코딩)
갈로이스 필드 GF(28) 상의 2EC-BCH의 개요가 설명될 것이다. GF(256)의 원시근(원소)을 α로 하고, 그의 고유 근으로서 이러한 원소 α를 갖는 그라운드 필드 GF(2) 상의 8-차 원시 다항식 m1(x)이 수학식 1로 표현된다. 다시 말해, m1(x)에 기인하는 α의 거듭제곱(power)과 x의 거듭제곱의 기약 다항식(irreducible polynomial)이 GF(256)의 상호 대응 요소가 된다.
부가적으로, 그의 근으로서 α의 3제곱을 갖는 8-차 기약 다항식으로서, m1(x)와 상대적으로 소수인(prime with) 다항식 m3(x)가 수학식 1에 나타낸 바와 같이 사용된다.
Figure 112007005790619-pat00001
이러한 두 개의 원시 다항식을 기초로 하여, 2비트 에러 정정 ECC 시스템(즉, 2EC-BCH 코드 시스템)이 구성될 것이다. 기입되는 데이터에 부가된 체크 비 트로 인코딩을 수행하기 위해, 아래의 수학식 2에 나타내어진 바와 같이, 코드생성 다항식으로서 m1(x)와 m3(x)의 승산 다항식 g(x)을 준비한다.
Figure 112007005790619-pat00002
정보 비트로서 이용될 수 있는 2-비트 에러 정정 가능한 비트의 최대수는, 28-1(=255)에서 체크 비트수 16을 감산한 239이다(즉, 255-16=239). 이러한 비트를 기초로 하여, 비트 위치 16으로부터 254까지의 계수를 a16 내지 a254로 하여, 238-차 정보 다항식 f(x)이 수학식 3과 같이 표시되게 한다.
Figure 112007005790619-pat00003
예를 들어, 128 비트는 실제로 239항에 사용된다. 이 경우에, 111 비트의 나머지 계수를 "0"에 고정되도록 하여, 정보 다항식은 동등한 차수의 이들 항이 결여되어 있는 다항식이 된다. 239항을 갖는 정보 다항식 f(x)로부터 그런 "0"-고정 계수를 갖는 111항으로서 어느 차수가 선택되는가에 의존하여, 디코딩시 실행되는 신드롬 계산의 계산량이 이후에 설명될 것이다. 따라서, 이 선택 기술은 중요하게 된다. 이는 후술 될 것이다.
정보 다항식 f(x)로부터, 16 체크 비트를 포함하는 데이터 다항식 f(x)x16을 형성한다. 이 데이터 다항식으로부터 그러한 체크 비트를 만들기 위해, 데이터 다 항식 f(x)x16 을 코드 생성 다항식 g(x)으로 나누어서, 아래의 수학식 4에 나타내어진 바와 같이 15-차 나머지 다항식 r(x)을 얻는다.
Figure 112007005790619-pat00004
체크 비트로서 이러한 나머지 다항식 r(x)의 계수 b15 내지 b0을 이용한다. 다시 말해, 239 계수로부터 선택된 128 계수 ai (128) 내지 ai (1)들은 "정보 비트"로서 역할을 하는 반면에, b15 내지 b0의 16비트는 "체크 비트"로서 역할을 함으로써, 총 144비트가 "데이터 비트"가 되어서, 수학식 5에 나타내어진 바와 같이 메모리에 기억된다.
Figure 112007005790619-pat00005
여기에서, ai (k)는 메모리로 외부적으로 기입된 데이터이다. 이러한 데이터를 기초로 하여, 체크 비트 bj가 칩-매립 ECC 시스템에서 생성되어, 비트가 셀 어레이로 동시에 기입될 것이다.
(데이터 디코딩)
다음, 셀 어레이에서 데이터 판독된 144 비트 데이터로부터의 에러를 검출하고 2 비트까지의 에러를 정정하는 방법이 설명될 것이다.
메모리가 254-차 데이터 다항식 f(x)x16의 계수를 기억할 때 에러가 발생한다고 가정하면, 그러한 에러는 254-차 다항식으로 또한 표현될 것이다. 이러한 에러 다항식을 e(x)로 하면, 메모리로부터 판독된 데이터는 아래의 수학식 6에 나타내어진 구조를 갖는 다항식 υ(x)로 표현될 수 있다.
Figure 112007005790619-pat00006
수학식 6에서 이 에러 다항식 e(x)의 계수가 "1"인 항은 에러와 동일하다. 다시 말해서, e(x)를 검출하는 것은 에러 검출 및 정정을 수행하는 것과 동일하다.
우선적으로 해야 할 것은 판독 데이터 다항식 υ(x)를 원시 다항식 m1(x) 과m3(x)로 나누어서, S1(x) 및 S3(x)로 각각 제공되는 각각의 나머지를 얻는 것이다. 수학식 7에 나타낸 바와 같이, υ(x)의 구조로부터, 이들 각각은 m1(x) 과 m3(x)로 나누어진 e(x)의 나머지와 동일하다는 것이 분명해진다.
Figure 112007005790619-pat00007
이러한 나눗셈의 나머지 S1(x) 및 S3(x)를 신드롬 다항식(syndrome polynomials)이라 한다.
2-비트 에러가 i번째와 j번째 비트에 존재한다고 가정한다면, e(x)=xi+xj. 이러한 값 i 및 j는 GF(256)의 원소인 m1(x)와 관련된 기약 나머지 다항식(irreducible remainder polynmial)의 계산에 의해 얻어진다. 더욱 구체적으로, xn≡pn(x) mod m1(x)일 때, 에러의 차수에 대응하는 각각의 나머지 pi(x) 및 pj(x)는 X1 및 X2이고, 반면에 신드롬 다항식 S1(x), S3(x)에 대한 S1(x) 및 S3(x3)에 대응하는 각각의 나머지 pσ1(x) 및 pσ3(x)은 수학식 8에 나타낸 바와 같이 S1 및 S3으로 설정된다.
Figure 112007005790619-pat00008
m3(x3)가 그의 근으로서 α를 가지고 m1(x)에 의해 제산 가능하다는 것으로부터, 아래의 수학식 9를 얻는다.
Figure 112007005790619-pat00009
제 2 스테이지에서, 그의 근으로서 미공지된 량 X1 및 X2를 갖는 다항식 ΛR(x)를 고려한다면, 곱 X1X2는 수학식 10에서와 같이 S1 및 S3으로 나타내질 수 있어서, 수반된 계수들이 신드롬 다항식으로부터 계산될 수 있다.
Figure 112007005790619-pat00010
제 3 스테이지에서, GF(256)에서 근이 되는 ΛR(x)의 기약 다항식 pn(x)를 찾는다. 이는 X1, X2=pn(x)로부터 pn(x)의 n과 같은 에러 비트 위치 i 및 j를 얻는 것을 가능하게 한다. 간단히 말해, 에러 비트로서 히트수 "n"을 특정하기 위하여 n=0, 1, 2,..., 254에 대해 ΛR(x)≡0 mod m1(x)를 검색한다.
이하의 수학식 11에 나타낸 바와 같이, 1-비트 에러의 경우, X1=S1, X1 3=S3=S1 3의 관계를 얻는다. 따라서, 에러 위치는 S1으로부터 정의된다. 만약 어떠 한 에러도 없다면, S1=S3≡0 (mod m1(x))의 관계를 얻는다. 3 비트 이상의 에러가 있고 그의 위치가 계산 불가능한 경우, S1과 S3의 어느 하나는 0으로 된다(mod m1(x)).
Figure 112007005790619-pat00011
실제 계산의 수행에 있어 중요한 것은 다음과 같이 요약된다.
인코딩에서 필요로 하는 것은 나머지의 테이블, 즉 최대 254 차수의 데이터 다항식 f(x)x16으로부터 데이터 비트로서 선택된 128 항을 갖는 코드 생성 다항식 g(x)에 의해 생성된 나머지 다항식 r(x)의 계수 테이블이다. 체크 비트 계산을 위하여, 데이터 비트 선택 항에 대응하는 이들 계수를 선택한 후, 2진수 코드, 즉 "0" 또는 "1" 중의 하나를 이용하여 GF(2)상에서 합산을 실행한다.
디코딩에서, 신드롬 다항식 S1(x) 및 S3(x3)의 계산을 수행할 때, 254로부터 0 차수까지의 원시 다항식에 의해 얻어진 나머지 pn(x)의 계수 테이블인 나머지 테이블이 필요하다. 이러한 테이블로부터, 계산은 체크 비트 계산과 유사하게 행해진다.
GF(256)을 이용하여 2EC-BCH에서 사용 가능한 239 데이터 비트의 모두를 사용하지 않는 메모리 시스템에서 ECC 계산 시간을 단축하기 위해, 정보 다항식으로부터 실제로 사용되는 항(차수)을 선택하는 실질적인 선택 방법을 채용하는 것이 필요하다. 특히 신드롬 계산에 있어서는, 나머지를 효율적으로 얻을 수 있는 특정 항(차수)를 결정하는 것이 필요하다.
실질적으로 실행된 나머지 계산 방법이 우선 설명될 것이다.
GF(2)상에서의 계산에서, 승산과 제산 모두가 다항식 계수의 합, 즉, "1"의 수의 짝수/홀수 판단을 기초로 하여 실행된다. 이에 의해, 여기에 사용된 계산기 회로가 다음과 같은 방식으로 패리티 체크를 수행하도록 주로 디자인된다: 만약 그의 계수가 "1"인 항의 수가 짝수라면, 계산 결과는 "0"을 출력하고; 만약 홀수라면, 계산 결과는 "1"이 된다.
간단한 구조를 갖는 4-비트 패리티 체크(PC)회로가 도 5a에 도시되고, 그의 회로 기호가 도 5b에 도시되었다. 다양한 구조를 갖는 패리티 체크 가능한 회로가 개개의 경우에 따라서 디자인될 수 있으며 변경 가능하지만, 도시된 회로는 도시와 설명의 편의를 위해 단지 트랜지스터로 구성된 패리티-체크 로직 유닛을 가지도록 배열된다.
이러한 패리티 체크 회로는 그의 입력단에서 네 개의 비트 a, b, c, d 및 그들의 상보 신호 /a, /b, /c, 및 /d를 수신하고 "1"의 짝수 개수가 입력 신호에 있을 때에만 출력 노드(EP)에서 "0"을 생성하는 상위-스테이지 회로(401) 및 "1"의 홀수 개수가 그의 입력 신호에 있을 때에만 출력 노드(OP)에서 "0"을 생성하는 하위-스테이지 회로(402)를 포함한다. 이러한 회로(401-402)는 전력 공급 전압 Vdd 와 접지 전위 Vss 사이에 8개의 평행 접속 게이트로 형성되며, 각 게이트는 네 개의 4-비트 입력 PMOS 트랜지스터 및 NMOS 트랜지스터를 갖는다.
더욱 구체적으로, 상위-스테이지 회로(401)는, 그의 "1" 입력이 숫자로 0, 2 또는 4일 때, Vss 측의 NMOS 트랜지스터가 전도성으로 되어, EP의 포텐셜이 "0"이 되게 한다(EP="0"). 하위-스테이지 회로(402)는, 그의 입력 "1"의 숫자가 1 또는 3일 때, Vss 측의 NMOS 트랜지스터가 턴온하여, OP="0"을 확립한다.
이러한 패리티 체크 회로를 가지고, 4-비트 패리티 체크는 인버터의 단일 스테이지와 동일하게 짧은 지연 시간 내에 계산될 수 있다.
상술한 패리티 체크 회로를 이용하여 GF(256)의 다항식의 GF(2)상에서의 곱의 계산 방법이 도 6에 도시되었다. GF(256)의 다항식의 모든 산술 처리는, 원시 다항식이 8차이기 때문에, 7-차 다항식 pn(x)간의 계산이 된다. 이에 의해, 네 개의 연산, 즉 가산, 감산, 승산, 및 제산의 모든 계산 결과는 다항식 pn(x) 중 어느 하나가 된다. 감산 {pn(x)}-1은 p255-n(x)가 된다.
pn(x)의 m-차 항의 계수를 Pn m이라고 할 때, 아래의 수학식 12에서 7-차 다항식 pi(x) 및 pj(x)의 곱은 도 6에 도시된 바와 같이 계산된다. 명백하게, 계수 Pn m은 "0" 또는 "1"의 어느 하나이다.
Figure 112007005790619-pat00012
xn≡pn(x) (mod m1(x))일 때, 14차 항이 곱 pj(x)의 7-항 앞서는 것을 보여주는 pj +7 상태가 되는 법칙을 사용한다. 그런 후, pi(x)와 pj(x)의 곱은 도 6에 도시된 각각의 다항식 계수 간의 승산 및 가산(즉, 패리티 체크)에 의해 가능하게 된다.
다시 말해, 패리티 체크는 1 또는 0이 곱해진 것의, 7 내지 0의 차수 당 합산(per-degree addition)이 행해지며, 이 결과는 pi(x)pj(x)의 각 차수의 계수가 된다. 곱 pj(x)에 대하여, 최대 7차수 앞선 이들 다항식 계수가 요구된다.
여기에서 요구된 회로는, 곱 pj(x)에서 pj+7(x)까지의 계수에 특정한 입력을 수행하는 회로의 부가적인 공급과 함께, 패리티 체크 회로만일 수도 있다. 이것은 계수 Pj m=0인 패리티 체크를 수반하지 않기 때문이다. 도 7에 도시된 바와 같이, 패리티 체크 회로는 요구된 입력 수에 따라서 4-비트 패리티 체크 회로 이외에 3-비트 패리티 체크 회로, 2-비트 패리티 체크 회로를 사용하도록 변형될 수 있다.
이 계산 방법은 인코딩 중에 체크 비트의 생성시에 적용되며, 이것은 이하에서 설명될 것이다.
체크 비트 계산은 나머지 다항식 r(x)을 얻기 위하여 코드 생성 다항식 g(x)로 정보 데이터로부터 생성된 데이터 다항식 f(x)x16을 나눔으로써 실행된다. 이 산술 연산을 수행하기 위하여, g(x)로 단일 항의 xi를 나눔으로써 얻어진 15-차 나머지 다항식 ri(x)의 계수를 미리 계산하고, pn(x)의 곱의 경우와 동일한 방법으로 그들을 사용한다. ri(x)의 계수는 Ri m(m=0,1,2,...,15)로서 언급되며, 정보 비트로서 작용하는 f(x)x26의 xi의 계수는 ai로서 언급된다.
실제적인 계산은 다음과 같다. 데이터 비트 a16 내지 a254에 대하여, 그들 중 111 비트는, 이후에 행해질 신드롬 계산이 더 적어지게 되며, "0"으로 고정되는 방법으로 선택된다. 다음, 도 8에 도시된 바와 같이, 데이터 다항식의 계수 ai 및 나머지 다항식의 계수 Ri m의 곱 및 동일한 차수의 항의 이들 계수의 합(패리티 체크)을 수행한다. 좀 더 상세하게는, 각 m 대하여, GF(2)상에서 데이터 비트 ai 가 "1"에 있는 특정 차수의 나머지 ri(x)의 계수 Ri m 의 합(addition)-즉 패리테 체크를 수행하고, 그런 후 그 결과가 체크 비트 bm가 되도록 한다.
111 비트의 "0" 고정 비트 위치의 선택을 수행할 때 요구되는 디코딩 중의 계산 방법의 설명이 다음에 주어질 것이다.
먼저, 신드롬 다항식 S1(x)의 계산이 행해지며, 이것은 메모리 셀의 판독시의 데이터 di가 그것의 계수로서 되는, 다항식 υ(x)의 m1(x)에서의 나누기의 나머지를 계산하기 위한 것이다. 이 산술 연산은, 도 9에 도시된 바와 같이, mi(x)로 xi(i는 254, 253,...,0)를 나누고 그 결과를 합산한 것(패리티 체크)에 의해 얻어진 나머지 pi(x)의 계수 Pi m(m은 0, 1, ...,7)에 di를 곱함으로써 실행된다. 다시 말하면, di= "1"를 갖는 pi(x)의 m번째 차수의 계수 Pi m의 패리티 체크 결과를 신드롬 다항식 S1(x)의 m-차 계수라고 하자.
이 계산 과정에서, di= "0" 인 부분과 Pi m가 "0"일 때에 대하여는 계산이 행해지지 않아서, 사용되지 않은 비트의 선택은, 239 정보 비트의 전부가 사용되지 않는 경우의 계산량을 결정한다.
다른 신드롬 다항식 S3(x)에 관련하는 계산 방법은 아래에서 다음에 설명될 것이다.
신드롬 다항식 S3(x)에 관련하여, 에러 위치 j를 검색하기 위하여 요구되는 것은 신드롬 다항식 S3(x3)이다. S3(x)은 원래 υ(x)의 m3(x)에서의 나누기의 나머지이다. υ(x3)와 S3(x3) 사이에서, 다음의 수학식 13에 도시된 관계가 확립될 수 있으며, 여기서 Pi m(m은 0, 1, ...,7)은 mi(x)로 xi를 나누어 얻어진 나머지 다항식 pi(x)의 계수이고 di는 xj의 계수이다.
Figure 112007005790619-pat00013
상술된 수학식 13으로부터, S3(x3)은 υ(x)의 계수 di 및 나머지 p3i(x)에 의하여 계산할 수 있다. 그러므로, 여기서 필요한 것은 xi의 m1(x)에서의 pi(x)의 계수 Pi m이며, 그의 실질적인 계산 방법은 도 10에 도시된 바와 같다.
이 계산 과정에서, 또한 di= "0" 인 부분과 P3i m가 "0"일 때에 대하여 계산이 행해지지 않아서, 사용되지 않은 비트의 선택은, 239 정보 비트의 전부가 사용되지 않는 경우의 계산량을 결정한다. 디코딩이, 신드롬 다항식 계산의 완료 후에 에러 위치를 검색하기 위한 계산을 실행하는 과정을 포함하기 때문에, 그 계산량은, 그런 계산을 위하여 걸리는 시간을 최소화하기 위하여 바람직하게 최소화된다. 이것은 238-차 정보 다항식 f(x)로부터 128 최적 항(차수)의 선택을 수행함으로써 얻어질 수 있다. 이 선택 방법은 다음에 아래에서 설명될 것이다.
신드롬 다항식 S1(x) 및 S3(x3)에 대하여, 병렬 방식으로 동시에 계산이 수행된다. 각 다항식에서의 각 차수-항의 계산은 "1"의 패리티 체크이며, 따라서, 총 계산량은, 매 차수의 계수가 거의 동일한 시간 내에서 뚜렷한 변화없이 계산된다면, 감소할 것으로 기대된다.
하나의 바람직한 선택 방법은, 각 "n'에 대하여, 신드롬 계산-사용된 7-차 나머지 다항식 pn(x) 및 p3n(x)의 계수가 "1"에 있는 것들의 총합을 얻은 후 그 총합의 수에서 최소측으로부터 요구된 데이터 비트 수에 대응하는 n의 특정 수를 선택하는 단계들을 포함하도록 구성된다. 이 경우에, 처음의 16개, 즉 x0 내지 x15의 계수는 고정되는 체크 비트로서 사용되며, 17번째 것으로부터 128 항을 선택하기 위하여 계수의 "1"의 총합의 오름 차순 선택(ascending-order selection)을 수행한다.
또한 동일한 총합 수의 그룹 내에서 선택을 완료할 때, 선택은, pn(x) 및 p3n(x) 내의 각 차수 항 사이에 계수 "1"이 균일하게 분포된 n을 특정하고 이 n을 참조로 하면서, 보다 적은 동일한 차수항에서의 "1"의 오버랩으로부터 순서대로 행해진다. 즉, pn(x), p3n(x)의 계수 "1"에 관하여 계수들의 총합의 최소 측으로부터 순서대로 선택이 수행된다.
도 11은 상술한 바와 같이 데이터 다항식 f(x)x16에서 254 차수들로부터 선택된 144-비트 데이터의 경우에 사용하기 위한 144 차수 "n" 들을 나타낸다.
비록 이러한 선택 방법은 패리티 체킹의 실행을 위해 다항식의 각 차수의 계수 "1"의 수 중 가장 큰 숫자를 항상 최소로 하지 못하지만, 신드롬 계산의 스텝 수를 줄임과 동시에 모든 가능한 조합 중에서 계산 스텝이 최소화된 것의 탐색을 포함하는 큰 스케일의 계산을 필요로 함이 없이 신드롬 계산기 회로의 스케일을 줄일 수 있는 여전히 간단한 방법이다.
신드롬 계산을 최적화하기 위해 이에 의해 선택된 차수를 사용하여 인코딩을 실행할 때, 대응 차수의 나머지 다항식 rn(x)의 계수가 필요하게 되며, 도 12a 및 12b에 이러한 것이 도시되었다.
도 12a 및 12b에 도시된 것은 데이터 다항식 f(x)x16을 코드 생성 다항식 g(x)로 나누어 얻어진 15-차 나머지 다항식의 계수이다. 정보 데이터 다항식에는 x0 내지 x15로부터의 것들이 존재하지 않으며, 따라서, 이것은 실제로 사용할 수 없다. 또한, 여기에 도시된 것은 0 내지 3, 4 내지 7, 8 내지 11, 및 12 내지 15의 계수의 16진수 표시이다.
도 13은 나머지 다항식 rn(x)의 계수 테이블로부터 선택된 데이터 비트로서 사용하기 위한 128 개의 xn에 대응하는 것들에 관한 각각의 계수들을 테이블 형식으로 나타내고 있다. 즉, 도 13은 차수 "n"의 테이블이며, 선택된 xn에 대한 나머지 rn(x)의 계수는 "1"이다.
예를 들어, "1"인 x15의 계수를 갖는 rn(x)의 차수 "n"은 m=15의 컬럼에서 1 내지 62인 계수 "1"의 수에 의해 규정된 필드에 기입된 17, 18, 22, ..., 245, 249, 및 250이다. 체크 비트 x15의 계수와 동등한 b15는 정보 데이터 다항식 f(x)x16에서의 선택된 n-차 항의 계수의 패리티 체크의 결과로서 얻을 수 있다는 것을 주목하라.
도 14는 테이블을 기초로 하여 체크 비트 계산을 실행하는 대표적인 회로를 나타낸다. 도 13의 테이블로부터, m=11, 5, 2인 xm에 대해 최대 72 비트 수가 패리티 체크된다는 것을 분명히 알 수 있다. 그래서, 이 경우가 도 14에 일례로서 도시되었다. 나머지 다항식 rn(x)의 m-차 항의 계수 Pn m이 "0"이 아닌 그런 차수 "n"을 테이블에서 지시하기 때문에, 각 "m"에 대해 테이블로부터 "n"을 선택하여, an 및 /an을 이용하여 패리티 체크를 실행한다.
사용되는 패리티 체크(PC) 회로의 적당한 조합은 네 개(4)의 제산 나머지 시 스템 중 어느 하나에 속하는 입력 수에 따라 결정된다. 더욱 구체적으로, 만약 4로 나눠질 수 있다면, 4-비트 PC가 단지 사용된다. 만약 그러한 나눗셈이 1의 나머지의 존재를 야기한다면, 5-비트 PC가 부가된다. 만약 나머지가 2라면, 2-비트 PC가 부가된다. 만약 나머지가 3이라면, 3-비트 PC가 부가된다.
m=11, 5 및 2의 일례에서는 72 입력이 있다. 이 경우에서 사용하기에 적절한 체크 비트 계산기 회로는 도 14에 도시된 바와 같이 패리티 체크(PC) 회로의 세 스테이지로부터 구성될 수 있다. 제 1 스테이지는 18개의 4-비트 PC로 이루어진다. 제 2 스테이지는 18 입력으로 이루어져, 네 개의 4-비트 PC 및 하나의 2-비트-PC에 의해 구성된다. 제 3 스테이지는 5 입력이 되어, 하나의 5-비트 PC로 이루어진다. 제 3 스테이지 패리티 체크 회로의 출력은 체크 비트 bm 및 /bm이 된다.
체크 비트 계산의 경우와 유사한 계산이 이하의 방식으로 신드롬 계산에서 행해질 것이다.
도 15는 신드롬 다항식 S1(x)의 계산에서 사용하기 위한 7-차 나머지 다항식 pn(x)에서 계수가 "1"인 차수의 테이블이다. 예를 들어, "1"인 x7의 계수를 갖는 pn(x)의 차수 "n"은 m=7의 컬럼에서 1 내지 56인 계수 "1"의 수에 의해 규정된 필드에 기입된 7, 11, 12, ..., 237, 242, 및 245이다. S1(x)의 x7의 계수는 데이타 다항식 υ(x)에서 이러한 선택 n-차 항의 계수의 패리티 체크의 결과로서 얻어진다.
도 15의 테이블을 기초로 신드롬 S1(x)의 계산을 행하는 전기 회로의 일례가 도 16에 도시되었다. 도 15로부터, m=6, 2의 경우에, 패리티 체크되는 비트 수가 최대 66이라는 것을 분명히 알 수 있다. 이 경우가 도 16에 일례로서 도시되었다. "0" 이 아닌 나머지 다항식 pn(x)의 m-차 항의 계수 Pn m을 갖는 차수 n이 테이블에 열거되므로, 각 "m"에 대해 이 테이블로부터 "n"을 선택하여, 데이터 비트 dn 및 /dn을 이용하여 패리티 체크를 실행한다.
사용되는 패리티 체커(PC)의 적당한 조합은 4의 나눗셈의 나머지 시스템 중 어느 하나에 속하는 입력 수에 따라 결정된다. 더욱 구체적으로, 만약 4에 의해서만 나누어질 수 있다면, 4-비트 PC 만이 사용되며, 만약 그러한 나눗셈에 의하여 나머지 1의 존재가 야기된다면, 5-비트 PC가 부가되며, 만약 나머지가 2라면, 2-비트 PC가 부가되고, 나머지가 3이라면, 3-비트 PC가 부가된다.
m=6, 2의 일례에서는 66의 입력이 있다. 이 경우에, 패리티 체크(PC) 회로의 3 스테이지가 의도된 계산기 회로를 구성하기 위해 사용된다. 제 1 스테이지는 16개의 4-비트 PC와 하나의 2-비트 PC로 이루어진다. 제 2 스테이지는 17의 입력으로 이루어져, 네 개의 4-비트 PC 및 하나의 5-비트 PC로 구성된다. 제 3 스테이지는 4개의 입력으로 이루어져, 단지 하나의 4-비트 PC에 의해 배열된다. 제 3 스테이지의 출력은 계수 (sl)m이 된다.
신드롬 다항식 S3(x3)의 계산이 동일하게 행해지고, 이하에 설명될 것이다.
도 17은 신드롬 다항식 S3(x3)의 계산에서 사용하기 위한 나머지 p3n(x)에서 계수가 "1"인 차수의 테이블이다.
예를 들어, "1"인 x7의 계수를 갖는 p3n(x)의 차수 "n"은 m=7의 컬럼에서 1 내지 58의 필드에 기입된 4, 8, 14, ..., 241, 242, 및 249이다. S3(x3)의 x7의 계수에 대응하는 데이터 (s3)7는 데이터 다항식 υ(x)에서 이러한 선택 n-차 항의 계수의 패리티 체크의 결과로서 얻어진다.
그에 대한 대표적인 계산 회로가 도 18에 도시되었다. 도 17의 테이블은 m=5인 xm에 대해 패리티 체크되는 비트 수가 최대 73이라는 것을 제시하고, 이 경우가 도 18에 일례로서 도시되었다. "0" 이 아닌 나머지 다항식 p3n(x)의 m-차 항의 계수 P3n m을 갖는 차수 n이 테이블에 도시되므로, 각 "m"에 대해 테이블로부터 "n"을 선택하여, dn 및 /dn을 이용하여 패리티 체크를 실행한다.
사용되는 패리티 체커(PC)의 적당한 조합은 4-나눗셈의 나머지 시스템 중 어느 하나에 속하는 입력 수에 따라 결정된다. 더욱 구체적으로, 만약 4에 의해 나누어질수 있다면, 4-비트 PC만을 사용한다. 만약 그러한 나눗셈에 의해 1의 나머 지가 존재한다면, 5-비트 PC를 부가한다. 만약 나머지가 2라면, 2-비트 PC를 부가한다. 또한, 만약 나머지가 3이라면, 3-비트 PC를 부가한다.
m=5의 일례에서는 73의 입력이 있다. 따라서, 이 경우에도, 패리티 체크(PC) 회로의 3 스테이지가 계산 회로를 구성하기 위해 사용된다. 제 1 스테이지는 17개의 4-비트 PC와 하나의 5-비트 PC로 이루어진다. 제 2 스테이지는 18개의 입력으로 이루어지므로, 네 개의 4-비트 PC 및 하나의 2-비트 PC로 형성된다. 제 3 스테이지는 5개의 입력으로 이 되기 때문에, 단지 하나의 5-비트 PC로 구성될 수 있다. 제 3 스테이지의 출력은 계수 (s3)m, /(s3)m으로 된다.
다음, 디코딩에 요구되는 나머지 다항식 pn(x)의 계수가 도 19에 도시된다. m1(x)에 의해 xn를 나눈 나머지인 pn(x)의 각 차수 n에서의 계수 "0", "1", 및 차수 0 내지 3 및 4 내지 7의 16진수 표시가 여기에 도시된다. 이 테이블을 이용하여, 상술한 바와 같은 방식으로 데이터 비트로서 이용하기 위한 128+16의 차수 n을 선택한다.
에러 위치(들)를 검색하는 회로 시스템이 이하에 설명될 것이다.
에러 위치 검색은, 수학식 10에서의 다항식 ΛR(x)의 조금 변형된 형태인, 아래의 수학식 14를 만족하는 pn(x)를 찾는 것이다.
Figure 112007005790619-pat00014
다시 말해, 에러 위치 검색 계산 시스템은 다항식 (pn)S1(x)+(S1(x))2+S3(x3)/S1(x)의 계수 및 그들간의 비교에 의해 서로 동일하게 되는 p2n의 계수를 갖는 n을 찾는 것을 목표로 한다.
도 20은 각 다항식 pn(x) (n=0, 1,2,..., 254)에 대응하는 255 산술 연산 유닛들(201)을 갖는 에러 위치 검색 계산 시스템의 회로 구성을 나타낸다. 이들 산술 연산 유닛들(201)의 계산 결과를 (pn(x))2=p2n(x)의 계수와 비교하여 차수 n이 매치(match)되는 위치를 찾으며, 이러한 위치는 에러 데이터 비트의 위치이다.
255 산술 연산 유닛(201)은 두 형태의 유닛, 즉, "D-part" 유닛 및 "S-part" 유닛으로 나누어진다. D-part는 데이터 비트(수학식 14에서 우측의 제 2, 3, 및 4항에 대응)로서 실제로 사용하기 위해 선택된 144 비트용으로 준비된 제 1 산술 연산 모듈인 반면에, S-part는 신드롬 다항식(수학식 14에서 우측의 제3 및 4항에 대응)과 배타적 관계를 갖는 제 2 산술 연산 모듈이다.
신드롬 다항식 계수 데이터 (s1)m, /(s1)m, (s3)m, /(s3)m들이 데이터 버스(202)상으로 출력되어 산술 연산 유닛(201)으로 입력된다. 이러한 유닛(201)은 관심있는 신드롬 다항식 계수에 따라서 적절한 산술 연산 유닛을 선택하는 디코더 유닛 "dec."을 가지며, 이것은 제 1 및 제 2 산술 연산 유닛(D-part 및 S-part)에 공통으로 배치된다. 디코더 유닛 "dec."은, 각 pn(x)의 위치와 관련하여, p2n(x)의 계수와 동등한 S1(x)의 계수에 의해 선택된 (n/2) 디코더와 p255 -n(x)의 계수와 동등한 S1(x)의 계수에 의해 선택된 (-n) 디코더를 갖는다.
산술 연산 회로(201)는 (n/2) 디코더에 의해 선택된 (pn(x))2=p2n(x)의 계수를 생성하는 유닛과 pn(x)과 (-n) 디코더에 의해 선택된 신드롬 다항식 S3(x3)의 곱에 의하여 얻어진 다항식의 계수를 생성하는 패리티 체크 유닛을 또한 포함한다. 이 유닛은 (S1(x))2 및 S3(x3)/S1(X)를 D-part 및 S-part를 위해 배치된 공동 데이터 버스(203)에 출력시키도록 디코더 선택된다.
제 1 산술 연산 유닛 D-part은 pn(x) 및 S1(x)의 곱의 다항식의 계수를 생성하기 위한 패리티 체크 유닛을 더 포함한다. 이 패리티 체커는 제 1 산술 연산 유닛 D-part의 매위치에서 동시 계산을 허용한다. S- 및 D-part에 의하여 공유된 공동 데이터 버스(203) 상의 S3(x3)/S1(x)와 (S1(x))2 및 D-part에서의 이 패리티-체크 계산 결과의 패리티 체킹을 실행하기 위하여, 패리티 체커(parity checker, 204)가 제공된다.
이 패리티 체커들(204)의 계산 결과들은 (2n)디코더(205) 중 하나를 선택하기 위하여 사용되며, 이것은 pn(x)의 위치에서 p2n(x)의 계수와 동일한 디코딩을 수행한다. 이 선택된 다항식 pn(x)는 에러 비트의 위치에 대응하는 선택된 항 Xn이다. 그러므로, k 대 n 대응 방식으로 에러를 특정하는 것이 가능하며, 여기서 k 는 144 비트 데이터 위치이다.
도 21은, pi(x)의 위치에 대하여, 신드롬 다항식(S1(x))2, S3(x3)/S1(x)에 배타적으로 관련되어 있는, 제 2 산술 연산 유닛 "S-Part"의 산술 회로의 상세한 구성을 보여준다. 이것은 이 제 2 산술 연산 유닛 S-part를 선택하기 위하여 S1(x)의 계수를 디코딩하고, 디코더(211), 즉 계수가 pi(x)의 계수와 동일할 때 선택되도록 하는 (i)디코더, 및 디코더(212), 즉 계수가 p255-i(x)의 계수와 동일할 때 선택되도록 하는 (255-i) 디코더를 포함하는 디코더들을 갖는다. 디코더(211)의 출력은 p2i(x)의 계수 P21 m(m=0,1,2,...,7)의 생성을 위한 래치 회로(213)의 출력 스위치(214)에 연결된다. 이 제 2 산술 연산 유닛 S-part가 선택되는 경우에, 그의 계수는 (S1)2측 상의 버스(203) 중 하나에 출력된다. 디코더(212)의 출력은 S3(x3)의 계수의 수용을 위한 스위치(215 및 216)에 연결되고 S3/S1 측상의 버스(203)의 다른 것을 향하여 이들 계수의 패리티 체킹을 실행하는 패리티 체크 회로(218)의 출력을 출력하는 스위치(217)에 연결된다.
패리티 체크 회로(218)는 k=0,1,2,...7의 합을 얻기 위하여 계수(s3)k와 계수 Pi + k m을 곱하기 위한 것이다. 더욱 상세하게는, Pi + k m="1"을 갖는 계수 (s3)k 의 패리티 체크를 수행하여서 그의 결과가 계수 (s3/s1)m (m=0,1,...,7)이 된다. 이 패리티 체크 결과는, 그 스위치(215-217)가 턴온할 때 버스(203) 중 S3/S1 측의 버스에 출력된다.
패리티 체크 회로(218)는 이전에 설명된 계산 회로, 예를 들어, 최대 두 스테이지를 갖도록 구성되는 경우와 같은 다양한 형태의 회로의 조합에 의하여 구성될 수 있다.
도 22는, pj(x)의 위치에 대하여, 제 1 산술 연산 유닛 D-part의 상세한 구성을 보여준다. 여기서, 제 2 산술 연산 유닛 S-part와 같은 방식으로 신드롬 다항식에만 관련하는 계산에 부가하여, 제 1 산술 연산 유닛 D-part가 거기에 유일한 계산을 수행하도록 설계된다. 이 디코더(211-212), 래치(213), 스위치(215-217) 및 패리티 체커(218)는 도 21에 도시된 제 2 산술 연산 유닛 S-part의 것과 동일한 원리이다.
제 2 산술 연산 유닛 S-part에 특정한 계산은 패리티 체크 회로(219)의 부분에 존재하며, 이것은 S1(x)의 계수를 수용하여 이들 계수의 패리티 체킹을 수행한다. 이 패리티 체커(219)는 k=0,1,2,...,7의 합을 얻도록 계수 (s1)k 및 Pj+k m을 곱하도록 작용한다. 다시 말하면, Pj+k m가 "1"인 (S1)k의 패리티 체크가 수행되고, 그 결과는 pj(x)S1(x)의 계수 (pjS1)m(m=0,1,2,...,7)가 된다. 이 패리티 체커(219)는 또한 이전의 설명된 계산 회로 예와 같은 다양한 형태의 회로의 조합에 의하여 최대 두 스테이지를 갖도록 구성될 수 있다.
도 23은 상술된 제 1 및 제 2 산술 연산 유닛 D-part 및 S-part의 출력의 계산을 통하여 에러 정정을 수행하기 위한 에러 정정 회로의 구성을 묘사한다. 여기서, 이것은 제1 산술 연산 유닛 D-part의 각 기초회로에 기초하여 다항식 pn(x)S1(x) + (S1(x))2+S3(x3)/S1(x)를 계산하며, 그런 후, 그것의 계산 결과를 p2n(x)과 비교하여서 데이터 에러 정정을 수행한다. 더욱 상세하게는, 도 23은 데이터의 실제적인 비트 위치 k에 대응하는 제1 산술 연산 유닛 D-part의 일부인 pj(k)(x)에 관련하는 회로를 보여준다.
pj(x)S1(x) + (S1(x))2+S3(x3)/S1(x)의 다항식 계수 계산은 패리티 체크 회로(221)에서 수행된다. 이 패리티 체커는, 각 m(m=0,1,2,..,7)에 대하여, 제1 산술 회로 D-part로부터 출력된 계수(pjS1)m, 공통 버스(203) 상의 계수((S1)2)m, 및 공통 버스(203) 상의 계수(S3/S1)m의 3-비트 패리티 체킹을 수행하도록 구성된다.
얻어진 계산 결과는, p2j(k)의 계수와 일치될 때 선택되는, 디코더(222)((2j)디코더)로 입력된다. 이 디코더(222)는 NOR 회로 G1 및 NAND 회로 G2의 쌍으로 형성되며, 이것은 상호 보상 출력(mutually complementary outputs)을 생성한다. 더욱 상세하게는, 디코딩이 계수의 "일치"를 발생할 때, NOR 회로 G1는 출력에서 "1"을 발생하는 한편, NAND회로 G2는 "0"을 출력한다. 만일 일치하지 않으면, 전자는 "0"을 출력하고, 후자는 "1"을 출력한다.
이 디코더(222)의 출력은 2-비트 패리티 체크 회로(데이터 인버터 회로)(223)에 입력된다. 이 회로는 배타적-OR(XOR)회로이고, 이것으로 데이터 비트 dk 및 디코더 출력이 입력된다. 도 24에 도시된 바와 같이, 이 2-비트 입력이 서로 동일할 때, 이 2-비트 패리티 체커(223)는 EP="0"를 출력한다. 따라서, 디코더(222)가 일치 신호를 생성할 때, 이 데이터 비트(dk)의 반전된 형태가 출력되며, 만일 이것들이 모두 일치되는 것이 실패되면, 이 데이터 비트 dk는 그대로 출력된다.
3 비트 이상의 에러가 있는 경우, 에러 정정은 불가능하다. 이것을 판단하기 위하여, 판단 회로(224)가 제공된다. 여기에서 사용된 법칙은 신드롬 다항식 S1(x) 및 S3(x3) 중 어느 하나 만이 모드 m1(x)에서 0이면, 3 비트 이상의 에러가 존재해야만 한다는 것이다. 더욱 상세하게는, NOR 회로 G3 및 G4는 각각, m=0 내지 m=7의 범위 내에서, (s1)m=0 및 (s3)m=0을 검출하기 위하여 사용된다. 그의 판단 결과는 2-비트 패리티 체크 회로(225)에서 계산된다.
패리티 체크 결과가 "1" 이면, 이것은 "수정 불가"(즉 에러 정정 능력이 없음)를 가리킨다. 이 패리티 체커(225)의 출력 "1" 은 제어 신호로서 사용하기 위한 것이며, 이것은 디코더(222)가 활동하지 않도록 하여 데이터 정정의 실행을 제거한다.
지금까지, 1-비트 또는 2-비트 에러 정정에 적용된 그런 2EC-BCH 코드에 대하여 논의했다. 그러나, 좀 더 일반적으로, t-비트 에러 정정가능 SCH 코드(여기서 t≥2)를 사용하는 것이 가능하다. 이러한 경우, BCH 코드는 갈로이스 필드(Galois field, GF(2m)에서 α,α3,...,α2t-1의 t 개의 근을 갖도록 형성된다.
도 25는 상술된 실시예에서 ECC 시스템(8)의 기능성 블록 구성을 보여준다. 인코딩부(81)에서, 정보 다항식f(x)를 기초로 하는 데이터 다항식 f(x)x16은 코드 발생 다항식 g(x)=m1(x)m3(x)에 의하여 나누어져서 체크 비트를 생성하며, 이것은 기입될 데이터와 함께 메모리 코어(10)에 기입된다. 2EC-BCH 코드가 사용되는 이 실시예에서, 정보 다항식 f(x)는 238차 다항식이다. 상술된 바와 같이, 128 비트는 정보 다항식의 계수에서 기입될 데이터의 한 유닛으로서 선택되며, 16 체크 비트가 여기에서 발생된다.
메모리 코어(10)로부터 판독 데이터는 신드롬 연산부(82)로 입력되어서 신드롬 연산을 거친다. 상세하게, 2-비트 에러 검출 및 정정이 실행되는 이 실시예에 서, 이 신드롬 연산부(82)는 판독 데이터를 연산하여 2 신드롬 다항식 S1(x) 및 S3(x)를 얻는다.
얻어진 신드롬 계수에 기초하여 에러 위치를 검색하는 에러 위치 검색부(83)가 있다. 에러 정정부(84)는 검출된 에러 위치에서 데이터 비트를 반전하고 그것을 출력한다. 도 21 내지 도 23을 참조하여 설명된 상세한 예는 에러 위치 검색부(83)에 대응되며, 도 24를 참조하여 설명된 것은 에러 정정부(84)에 대응한다.
이 발명은 상술된 실시예에서 설명된 바와 같이 플래시 메모리 이외에 전기적 소거가능 프로그래머블 반도체 메모리 장치의 모든 형태에 적용할 수 있다.
도 26은 표준 NAND 플래시 메모리에서 하나의 전형적인 메모리 코어 회로의 구성을 보여주며, 본 발명은 이것에 적용할 수 있다. 이 메모리 코어 회로는 셀 어레이(1a), 센스 증폭기 회로(2a) 및 로우 디코더(3a)를 포함한다. 셀 어레이(1a)는 각각이 메모리 셀(M0 내지 M31)의 직렬 접속을 갖는 NAND 셀 유닛(NAND 스트링)의 병렬 결합으로부터 구성된다. NAND 셀 유닛(NU)은 선택 게이트 트랜지스터(S1)을 통하여 관련 비트선 BLe(BL0)에 접속된 일단 및 또 다른 선택 게이트 트랜지스터(S2)를 경유하여 공통 소스선 (CELSRC)에 결합된 타단을 갖는다.
메모리 셀은 제어 게이트를 가지며, 이것은 워드선 WS0-WL31에 접속된다. 선택 게이트 트랜지스터 S1-S2는 각각 선택 게이트 선 SGD 및 SGS 에 결합된 그들 게이트를 갖는다. 워드선 WL0-WL31 및 선택-게이트선 SGD-SGS는 로우 디코더(3a)에 의하여 분할된다.
센스 증폭기 회로(2a)는 "한번에 모든(all-at-a-time)" 기입 및 판독을 수행하는 센스 유닛 SA의 한 페이지를 갖는다. 각 센스 유닛(SA)은 비트선 선택기 회로(4)와 결합되며, 이것은 그것으로의 접속을 위한 인접하는 비트선(BLe-BL0) 중 어느 하나를 선택한다. 그런 배열을 가지고, 단일 워드선(WLi)과 복수의 짝수 비트선(BLe)(또는 홀수 비트선 BLo)에 의하여 동시적으로 선택된 메모리 셀은 한 페이지(한 섹터)를 구성하며, 이것은 집합적인 기입/판독을 거친다. 비선택 측 상의 비트선은 거기에 주어진 소정의 전위를 갖는 쉴드선으로서 사용된다. 이것은 현재 선택된 비트선 사이에서의 원하지 않는 간섭을 억제하는 것이 가능하다.
워드선 (WL0-WL31)을 공유하는 NAND 셀 유닛의 그룹은, 블록, 즉 데이터 소거를 위한 유닛을 구성한다. 도 26에 도시된 바와 같이, 소정의 수 n의 블록(BLK0-BLKn)들은 비트선의 연장 방향으로 레이아웃된다.
코어 회로를 갖는 NAND 플래시 메모리에서 또한, 소형화 및 셀당 다층 저장구성에서의 진보와 함께 2 비트 이상의 에러의 정정의 온칩 실현에 대한 요구가 증가한다. 본 발명의 원리를 병합하고 있는 이 에러 정정 시스템은 에러 검출 및 정정을 위한 계산 규모를 감소하거나 최소화할 수 있으며, 그에 따라서 고속으로 계산의 성공적인 달성을 가능하게 한다. 그러므로, 이것은 본 발명에 유일한 ECC 아키텍쳐가 상술된 형태의 메모리 칩에 적용할 때 장점을 제공할 수 있다고 할 수 있다.
[응용 장치]
실시예로서, 본 발명의 상술된 실시예 1-3에 따르는 비휘발성 반도체 메모리 장치를 사용하는 전기 카드 및 그 카드를 사용하는 전기 장치가 아래에서 설명될 것이다.
도 27은 이 실시예에 따르는 전기적 카드 및 이 카드를 사용하는 전기 장치의 구성을 보여준다. 이 전기 장치는 휴대형 전기 장치의 일예로서 디지털 스틸 카메라(101)이다. 이 전기적 카드는 디지털 스틸 카메라(101)의 기록 매체로서 사용된 메모리 카드(61)이다. 이 메모리 카드(61)는, 상술된 실시예예 따르는 비휘발성 반도체 메모리 장치 또는 메모리 시스템이 집적되거나 또는 캡슐화되어 있는 IC 패키지(PK1)를 포함한다.
디지털 스틸 카메라(101)의 케이스는 카드 슬롯(102) 및 이 카드 슬롯(102)에 접속된 회로 보드(미도시)를 수용한다. 이 메모리 카드(61)는 디지털 스틸 카메라(101)의 카드 슬롯(102)에 탈부착 가능하게 삽입된다. 슬롯(102)에 삽입될 때, 메모리 카드(61)는 이 회로 보드의 전기 회로에 전기적으로 접속된다.
이 전기적 카드가 비접촉형 IC 카드인 경우에, 이것은 카드 슬롯(102)에 삽입되거나 또는 인접해 있을 때 무선 신호에 의하여 회로보드 상의 전기 회로에 전기적으로 접속한다.
도 28은 디지털 스틸 카메라의 기본 배열이다. 대상물로부터의 광은 렌즈(103)에 의하여 수렴되고, 촬상장치(104)로 입력된다. 이 촬상 장치(104)는, 예를 들어 CMOS 센서이며, 입력 광을 광전 변환하여, 예를 들어 아날로그 신호로 출력한다. 이 아날로그 신호는 아날로그 증폭기(AMP)에 의하여 증폭되고 A/D 컨버 터(A/D)에 의하여 디지털 신호로 변환된다. 이 변환된 신호는, 신호가 자동노출제어(AE), 자동 백색 밸런스(AWB) 제어, 색분리 등을 거치는 카메라 신호처리회로(105)로 입력되며, 루미넌스 신호 및 색차 신호로 변환된다.
화상을 모니터하기 위하여, 카메라 처리회로(105)로부터의 출력 신호는 비디오신호 처리회로(106)로 입력되고 비디오 신호로 변환된다. 이 비디오신호의 시스템은 예를 들어, NTSC(National Television System Committee)이다. 이 비디오 신호는 디스플레이신호 처리회로(107)를 통하여 디지털 스틸 카메라(101)에 부착된 디스플레이(108)로 입력된다. 이 디스플레이(108)는 예를 들어 액정 모니터이다.
이 비디오 신호는 비디오 드라이버(109)를 통하여 비디오 출력단자(110)로 공급된다. 디지털 스틸 카메라(101)에 의해 촬상된 화상은 비디오 출력단자(110)를 경유하여 텔레비전 세트와 같은 화상장치로 출력될 수 있다. 이것은 촬상 화상이 디스플레이(108) 이외의 화상 장치상에 표시되는 것을 허용한다. 마이크로컴퓨터(111)는 촬상 장치(104), 아날로그 증폭기(AMP), A/D 변환기(A/D), 및 카메라 신호처리회로(105)를 제어한다.
화상을 포착하기 위하여, 작동자는 셔터버튼(112)과 같은 작동 버튼을 누른다. 이것에 응답하여, 마이크로컴퓨터(111)는 메모리 제어기(113)를 제어하여 카메라신호 처리회로(105)로부터의 출력 신호를 프레임 화상으로서 비디오 메모리(114)에 기입한다. 비디오 메모리(114)에 기입된 이 프레임 화상은 압축/신장 회로(115)에 의하여 소정의 압축 형태를 기초하여 압축된다. 이 압축된 화상은, 카드 슬롯에 삽입된 메모리 카드(61) 상에, 카드 인터페이스(116)를 통하여 기입된 다.
기입된 화상을 재생하기 위하여, 메모리 카드(61) 상에 기록된 화상은 카드 인터페이스(116)를 경유하여 판독되고, 압축/신장 회로(115)에 의하여 신장되고, 비디오 메모리(114)로 기입된다. 이 기입된 화상은 비디오 신호처리회로(106)로 입력되며, 화상이 모니터될 때와 동일한 방식으로, 디스플레이(108) 또는 다른 화상 장치상에 디스플레이된다.
이러한 장치에 있어서, 카드 슬롯(102), 촬상장치(104), 아날로그 증폭기(AMP), A/D 컨버터(A/D), 카메라 신호처리회로(105), 비디오 신호처리회로(106), 디스플레이 신호처리회로(107), 비디오 드라이버(109), 마이크로컴퓨터(111), 메모리 제어기(113), 비디오 메모리(114), 압축/신장회로(115), 및 카드 인터페이스(116)가 회로 보드 상에 탑재된다.
이 카드 슬롯(102)은 회로 보드(100) 상에 장착될 필요는 없으며, 또한 접속 케이블 등에 의하여 회로 보드(100)에 접속될 수 있다.
전원회로(117)가 또한 회로 보드(100) 상에 장착된다. 전원회로(117)는 외부전원 또는 전지로부터 전원을 받아서 디지털 스틸 카메라(101) 내부에 사용되는 내부전원 전압을 발생한다. 예를 들어, DC-DC 컨버터는 전원회로(117)로서 사용될 수 있다. 내부 전원 전압은 상술된 각각의 회로에 공급되며, 스트로브(118) 및 디스플레이(108)에 공급된다.
상술된 바와 같이, 이 실시예에 따르는 전기 카드는 상술된 디지털 스틸 카메라와 같은 휴대형 전기 장치에 사용될 수 있다. 그러나, 이 전기 카드는 또한 휴대형 전기 장치뿐만 아니라, 도 29a 내지 29j에 도시된 바와 같은 다양한 장치에 사용될 수 있다. 즉, 전기 카드는 또한 도 29a에 도시된 비디오 카메라, 도 29b에 도시된 텔레비전 세트, 도 29c에 도시된 오디오 장치, 도 29d에 도시된 게임 장치, 도 29e에 도시된 전기 음악 장치, 도 29f에 도시된 셀 전화기, 도 29g에 도시된 개인 컴퓨터, 도 29h에 도시된 PDA, 도 29i에 도시된 음성 녹음기, 및 도 29j에 도시된 PC 카드에 사용될 수 있다.
부가적인 장점 및 변형은 당업자에게는 용이하게 발생 될 것이다. 그러므로, 더 넓은 측면에서의 본 발명은 여기서 설명되고 도시된 특정한 상세 및 대표적인 실시예에 한정되지 않는다. 따라서 다양한 변형이 첨부된 청구범위 및 그 균등물에 의해 한정된 일반적인 본 발명의 취지 또는 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있다.
본 발명의 원리를 병합하고 있는 이 에러 정정 시스템은 에러 검출 및 정정을 위한 계산 규모를 감소하거나 최소화할 수 있으며, 그에 따라서 고속으로 계산의 성공적인 획득을 할 수 있다.

Claims (14)

  1. 내장된 에러 검출 및 정정 시스템을 구비한 반도체 메모리 장치로서,
    상기 에러 검출 및 정정 시스템은 다중 에러 비트가 정정될 수 있는 순환 코드를 갖도록 형성되며,
    상기 순환 코드는, 에러-정정가능 최대 비트 수에 대응하는 차수를 갖는 정보 다항식의 전체 차수로부터 특정한 수의 차수가 정보 비트로서 선택되는 방식으로 구성되고,
    상기 특정한 수는 상기 메모리 장치에서 동시에 에러 정정가능한 데이터 비트의 수인 반도체 메모리 장치.
  2. 제1항에 있어서,
    상기 에러 검출 및 정정 시스템은 갈로이스 필드 GF(2m)(m>0, 정수)에 대한 t(≥2)-비트 에러 정정 BCH 코드를 갖도록 형성되며,
    상기 BCH 코드는 다중 신드롬 다항식들의 계산을 위하여 사용된 기약 다항식(irreducible polynomial)의 계수 "1"의 총합들이 상기 정보 다항식의 모든 차수에 대하여 얻어지며, 소정의 차수들이 상기 총합들의 최소 측으로부터 순서대로 체크 비트들 및 정보 비트들로서 선택되는 방식으로 구성되는 반도체 메모리 장치.
  3. 제1항에 있어서,
    상기 에러 검출 및 정정 시스템은 갈로이스 필드 GF(28)에 대한 2-비트 에러 정정 BCH 코드를 갖도록 형성되며,
    상기 BCH 코드는 2개의 신드롬 다항식들의 계산을 위하여 사용된 기약 다항식의 계수 "1"의 총합들이 상기 정보 다항식의 모든 차수에 대하여 얻어지며, 144 차수들이 상기 총합들의 최소 측으로부터 순서대로 16 체크 비트들 및 128 정보 비트들로서 선택되는 방식으로 구성되는 반도체 메모리 장치.
  4. 제3항에 있어서,
    상기 에러 검출 및 정정 시스템은 에러 위치 검색부를 포함하고,
    pn(x)는 갈로이스 필드 GF(28)의 엘리먼트의 다항식 표현이고,
    상기 에러 위치 검색부는,
    신드롬 다항식들 S1(x) 및 S3(x)의 계수 데이터가 출력되는 제 1 데이터 버스;
    255개의 산술 처리 유닛으로서, 제 1 산술 연산 pn(x)S1(x) 및 제 2 산술 연산 (S1(x))2+S3(x3)/S1(x)이 상기 제 1 데이터 버스상의 상기 계수 데이터에 기초하여 선택된 144개 유닛들 내에서 병렬로 동시에 수행되며, 상기 제 1 산술 연산은 에러 비트-대응 나눗셈 나머지 pn(x)와 상기 제 1 데이터 버스상의 신드롬 다항식 S1(x) 사이에서 수행되며, 상기 제 2 산술 연산은 신드롬 다항식들에 대하여만 수행되는, 255개의 산술 처리 유닛;
    상기 산술 처리 유닛들에서 상기 제 2 산술 연산의 계산 결과를 출력하는 제 2 데이터 버스;
    상기 제 2 데이터 버스상의 데이터와 상기 처리 유닛들의 제 1 산술 연산의 계산 결과 간의 가산 연산을 수행하도록 기능하는 144개 패리티 체크 유닛들; 및
    매치된 에러 비트 위치 "n"을 얻기 위하여 상기 패리티 체크 유닛들의 이 처리 결과들을 p2n(x)와 비교하도록 구성된 디코더
    를 포함하는 반도체 메모리 장치.
  5. 제4항에 있어서,
    상기 에러 검출 및 정정 시스템은 또한 에러 정정부를 더 포함하며,
    상기 에러 정정부는,
    상기 에러 위치 검색부에서의 제 1 산술 연산의 계산 결과, 제 2 데이터 버스상의 계수들 S1(x)2 및 S3(x)/S1(x) 간의 가산 처리를 실행하도록 구성된 3 비트 패리티 체크 회로, 및
    상기 3 비트 패리티 체크 회로의 처리 결과에 따라서 판독 데이터 비트를 반전하는 인버터 회로
    를 포함하는 반도체 메모리 장치.
  6. 제1항에 있어서,
    상기 장치는 내부에 배열된 전기적으로 재기입 가능한 비휘발성 메모리 셀들을 구비한 비휘발성 반도체 메모리인 반도체 메모리 장치.
  7. 제6항에 있어서,
    상기 비휘발성 반도체 메모리는 내부에 배열된 NAND 스트링들을 구비한 셀 어레이를 포함하며, 상기 NAND 스트링은 직렬로 접속된 복수의 메모리 셀들을 포함하는 반도체 메모리 장치.
  8. BCH의 코드의 이용에 의해 2-비트 에러들을 검출하고 정정하는, 내장된 에러 검출 및 정정 시스템을 구비한 반도체 메모리 장치로서,
    상기 에러 검출 및 정정 시스템은,
    기입되는 데이터와 함께 상기 장치의 셀 어레이로 기입될 체크 비트들을 생성하도록 구성된 인코딩부;
    상기 셀 어레이로부터의 판독 데이터에 대하여 신드롬 연산을 실행하도록 구성된 신드롬 연산부;
    상기 신드롬 연산부의 연산 결과에 기초하여 에러 위치들을 검색하도록 구성된 에러 위치 검색부; 및
    상기 에러 위치 검색부에서 검출된 에러 위치에서 판독 데이터 비트를 반전하고 그것을 출력하도록 구성된 에러 정정부
    를 포함하며,
    상기 인코딩부는, 갈로이스 필드 GF(28)에서 서로 소수인 2개의 8-차 원시 다항식들 m1(x)와 m3(x)의 곱으로서 정의된 코드 생성 다항식 g(x)로, 기입되는 데이터가 계수들이 되도록 구성된 254-차 데이터 다항식 f(x)x16을 나누어, 15-차 나머지 다항식 r(x)을 획득하여 그의 16 계수들을 체크 비트들로서 선택하고,
    상기 인코딩부에서, 16 개의 체크 비트들 및 에러 정정되는 M 개의 데이터 비트들에 대응하는 M+16(M≤255-16=239) 항들이, 에러-정정가능 최대 비트 수에 대응하는 차수를 갖는 정보 다항식의 전체 차수로부터 특정한 수의 차수가 정보 비트로서 선택되는 방식의 데이터 다항식으로부터 선택되고,
    상기 특정한 수는 상기 메모리 장치에서 동시에 에러 정정가능한 데이터 비트의 수인 반도체 메모리 장치.
  9. 제8항에 있어서,
    상기 인코딩부에서, 15-차 나머지 다항식 r(x)의 계수 테이블에 기초하여, 상기 체크 비트들 및 데이터 비트들에 대응하는 M+16 항들이 계수 "1" 을 갖는 총 차수들 중 최소 측으로부터 순서대로 선택되는 반도체 메모리 장치.
  10. 제9항에 있어서,
    상기 16개의 체크 비트들은 상기 데이터 다항식 f(x)x16에서 선택된 차수들의 계수들에 대한 패리티 체크를 통해 생성되는 반도체 메모리 장치.
  11. 제8항에 있어서,
    상기 에러 위치 검색부는,
    신드롬 다항식들 S1(x) 및 S3(x)의 계수 데이터가 출력되는 제 1 데이터 버스;
    255개의 산술 처리 유닛들로서, 제 1 산술 연산 pn(x)S1(x) 및 제 2 산술 연산 (S1(x))2+S3(x3)/S1(x)이 상기 제 1 데이터 버스상의 계수 데이터에 기초하여 선택된 144개 유닛들 내에서 병렬로 동시에 수행되며, 상기 제 1 산술 연산은 에러 비트-대응 나눗셈 나머지 pn(x)와 상기 제 1 데이터 버스상의 신드롬 다항식 S1(x) 사이에서 수행되며, 상기 제 2 산술 연산은 신드롬 다항식들에 대하여만 수행되는 255개의 산술 처리 유닛들;
    상기 산술 처리 유닛들에서 상기 제 2 산술 연산의 계산 결과를 출력하는 제 2 데이터 버스;
    상기 제 2 데이터 버스상의 데이터와 상기 처리 유닛들의 제 1 산술 연산의 계산 결과 간의 가산 연산을 수행하도록 기능하는 144개 패리티 체크 유닛들; 및
    매치된 에러 비트 위치 "n"를 얻기 위하여 상기 패리티 체크 유닛들의 이 처리 결과들을 p2n(x)와 비교하도록 구성된 디코더
    를 포함하는 반도체 메모리 장치.
  12. 제8항에 있어서,
    상기 에러 정정부는,
    상기 에러 위치 검색부에서의 제 1 산술 연산의 계산 결과, 제 2 데이터 버스상의 계수들 S1(x)2 S3(x)/S1(x) 간의 가산 처리를 실행하도록 구성된 3 비트 패리티 체크 회로; 및
    상기 3 비트 패리티 체크 회로의 처리 결과에 따라서 판독 데이터 비트를 반전하는 인버터 회로
    를 포함하는 반도체 메모리 장치.
  13. 제8항에 있어서,
    상기 장치는 내부에 배열된 전기적으로 재기입 가능한 비휘발성 메모리 셀들을 구비한 비휘발성 반도체 메모리인 반도체 메모리 장치.
  14. 제13항에 있어서,
    상기 비휘발성 반도체 메모리는 내부에 배열된 NAND 스트링들을 구비한 셀 어레이를 포함하며, 상기 NAND 스트링은 직렬로 접속된 복수의 메모리 셀들을 포함하는 반도체 메모리 장치.
KR1020070006142A 2006-01-20 2007-01-19 반도체 메모리 장치 KR100857947B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006012648A JP4791831B2 (ja) 2006-01-20 2006-01-20 半導体記憶装置
JPJP-P-2006-00012648 2006-01-20

Publications (2)

Publication Number Publication Date
KR20070077125A KR20070077125A (ko) 2007-07-25
KR100857947B1 true KR100857947B1 (ko) 2008-09-09

Family

ID=38429812

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070006142A KR100857947B1 (ko) 2006-01-20 2007-01-19 반도체 메모리 장치

Country Status (3)

Country Link
US (1) US7836377B2 (ko)
JP (1) JP4791831B2 (ko)
KR (1) KR100857947B1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4846384B2 (ja) * 2006-02-20 2011-12-28 株式会社東芝 半導体記憶装置
JP4836608B2 (ja) * 2006-02-27 2011-12-14 株式会社東芝 半導体記憶装置
JP2007305267A (ja) * 2006-05-15 2007-11-22 Toshiba Corp 半導体記憶装置
JP4891704B2 (ja) * 2006-08-28 2012-03-07 株式会社東芝 半導体記憶装置
JP4621715B2 (ja) * 2007-08-13 2011-01-26 株式会社東芝 メモリ装置
US8145977B2 (en) * 2007-10-15 2012-03-27 Joseph Schweiray Lee Methods and apparatus for providing error correction to unwritten pages and for identifying unwritten pages in flash memory
JP2009100369A (ja) * 2007-10-18 2009-05-07 Toshiba Corp 誤り検出訂正回路、半導体メモリコントローラ、および誤り検出訂正方法
US8464141B2 (en) * 2008-08-13 2013-06-11 Infineon Technologies Ag Programmable error correction capability for BCH codes
JP5259343B2 (ja) 2008-10-31 2013-08-07 株式会社東芝 メモリ装置
JP2010218634A (ja) * 2009-03-17 2010-09-30 Toshiba Corp 誤り検出訂正器、メモリコントローラおよび半導体記憶装置
JP5674700B2 (ja) * 2012-03-22 2015-02-25 株式会社東芝 符号化装置および符号化装置の制御方法、ならびに、記憶装置
US8806294B2 (en) 2012-04-20 2014-08-12 Freescale Semiconductor, Inc. Error detection within a memory
JP6072449B2 (ja) * 2012-07-09 2017-02-01 ルネサスエレクトロニクス株式会社 半導体記憶回路及びその動作方法
US9690650B2 (en) * 2013-03-11 2017-06-27 Macronix International Co., Ltd. Storage scheme for built-in ECC operations
JP2016126813A (ja) * 2015-01-08 2016-07-11 マイクロン テクノロジー, インク. 半導体装置
US10097207B2 (en) * 2016-03-10 2018-10-09 Toshiba Memory Corporation ECC circuit, storage device and memory system
KR20180073129A (ko) * 2016-12-22 2018-07-02 에스케이하이닉스 주식회사 에러 정정 코드 회로를 갖는 반도체 메모리 장치
CN117079686A (zh) * 2020-09-18 2023-11-17 长鑫存储技术有限公司 存储器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000173289A (ja) 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US20020157059A1 (en) 2000-11-07 2002-10-24 Stmicroelectronics S.R.L. Multipurpose method for constructing an error-control code for multilevel memory cells operating with a variable number of storage levels, and multipurpose error-control method using said error-control code
US20030192007A1 (en) 2001-04-19 2003-10-09 Miller David H. Code-programmable field-programmable architecturally-systolic Reed-Solomon BCH error correction decoder integrated circuit and error correction decoding method
JP2004152300A (ja) 2002-10-28 2004-05-27 Sandisk Corp 不揮発性メモリシステムにおけるデータの完全性を管理する方法および装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4509172A (en) * 1982-09-28 1985-04-02 International Business Machines Corporation Double error correction - triple error detection code
US4556977A (en) * 1983-09-15 1985-12-03 International Business Machines Corporation Decoding of BCH double error correction - triple error detection (DEC-TED) codes
US5107503A (en) * 1987-08-24 1992-04-21 Digital Equipment Corporation High bandwidth reed-solomon encoding, decoding and error correcting circuit
JP4112849B2 (ja) 2001-11-21 2008-07-02 株式会社東芝 半導体記憶装置
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
JP4253312B2 (ja) 2005-04-15 2009-04-08 株式会社東芝 半導体記憶装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000173289A (ja) 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US20020157059A1 (en) 2000-11-07 2002-10-24 Stmicroelectronics S.R.L. Multipurpose method for constructing an error-control code for multilevel memory cells operating with a variable number of storage levels, and multipurpose error-control method using said error-control code
US20030192007A1 (en) 2001-04-19 2003-10-09 Miller David H. Code-programmable field-programmable architecturally-systolic Reed-Solomon BCH error correction decoder integrated circuit and error correction decoding method
JP2004152300A (ja) 2002-10-28 2004-05-27 Sandisk Corp 不揮発性メモリシステムにおけるデータの完全性を管理する方法および装置

Also Published As

Publication number Publication date
JP4791831B2 (ja) 2011-10-12
US7836377B2 (en) 2010-11-16
JP2007193910A (ja) 2007-08-02
US20070198902A1 (en) 2007-08-23
KR20070077125A (ko) 2007-07-25

Similar Documents

Publication Publication Date Title
KR100857947B1 (ko) 반도체 메모리 장치
US20070266291A1 (en) Semiconductor memory device
US7890843B2 (en) Semiconductor memory device
US8201055B2 (en) Semiconductor memory device
KR101138120B1 (ko) 치엔 검색 장치 및 치엔 검색 방법
JP6181257B2 (ja) 誤り訂正符号の編成を含む装置および方法
US6532556B1 (en) Data management for multi-bit-per-cell memories
US8117521B2 (en) Implementation of recycling unused ECC parity bits during flash memory programming
Chen et al. An adaptive-rate error correction scheme for NAND flash memory
US8266495B2 (en) Systems and methods for performing concatenated error correction
KR102507342B1 (ko) 페이지 버퍼를 포함하는 메모리 장치 및 페이지 버퍼 배치 방법
KR102064508B1 (ko) 오류 검출 정정 회로 및 이를 포함하는 메모리 장치
TWI479317B (zh) Memory system
US8001448B2 (en) Semiconductor memory device
US20140075267A1 (en) Galois field arithmatic operation circuit and memory device
US9152493B2 (en) Error check and correction circuit and semiconductor memory
KR102021560B1 (ko) 오류 위치 탐색 회로, 그리고 그것을 포함하는 오류 검출 정정 회로 및 메모리 장치
JPH04347751A (ja) 半導体メモリ装置
JP2014068058A (ja) 誤り位置検索回路、誤り検出訂正回路、及びメモリ装置
JP2014057203A (ja) ガロア体演算回路、及びメモリ装置

Legal Events

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

Payment date: 20120821

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130820

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee