KR101015342B1 - Data memory system - Google Patents

Data memory system Download PDF

Info

Publication number
KR101015342B1
KR101015342B1 KR1020090012026A KR20090012026A KR101015342B1 KR 101015342 B1 KR101015342 B1 KR 101015342B1 KR 1020090012026 A KR1020090012026 A KR 1020090012026A KR 20090012026 A KR20090012026 A KR 20090012026A KR 101015342 B1 KR101015342 B1 KR 101015342B1
Authority
KR
South Korea
Prior art keywords
bits
bit
write
code
information
Prior art date
Application number
KR1020090012026A
Other languages
Korean (ko)
Other versions
KR20090088824A (en
Inventor
미쯔히로 노구찌
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20090088824A publication Critical patent/KR20090088824A/en
Application granted granted Critical
Publication of KR101015342B1 publication Critical patent/KR101015342B1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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
    • 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
    • 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

Landscapes

  • Read Only Memory (AREA)
  • Semiconductor Memories (AREA)

Abstract

본 발명의 데이터 메모리 시스템은, 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 구비하고, 복수의 상기 메모리 셀이 인접하여 구성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이와, 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 부호를 발생하고, 상기 페이지에 기록하는 오류 정정 부호를 생성하는 오류 정정 부호 발생 회로와, 상기 페이지에 기록된 디지털 데이터로부터, 상기 오류 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와, {입력된 상기 정보 비트 또는 상기 오류 정정 부호와}, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호 발생 회로에 출력하는 부호 변환 회로를 포함한다.The data memory system of the present invention stores at least binary digital data of " 1 " and " 0 " as the charge of the charge storage layer and uses the difference between the two charge amounts of the charge storage layer as the write bit and erase bit. And a nonvolatile memory cell array for collectively erasing pages in which a plurality of the memory cells are adjacent to each other, a code for correcting at least one bit of error data from information bits, and writing to the page. An error correcting code generating circuit for generating a code, an error correcting code decoding circuit for correcting an error from the error correcting code from the digital data recorded on the page, and restoring the information bits; Error correction code and an exclusive logical sum of a plurality of bits obtained by repeating the array of " write bit-erase bits " a plurality of times. And a code conversion circuit for outputting to the error correction code generation circuit.

전하 축적층, 메모리 셀, NAND형 EEPROM 반도체 장치, MOS 트랜지스터, 선택 트랜지스터, NAND 플래시 메모리, 드레인 전극, 채널 전위 Charge storage layer, memory cell, NAND-type EEPROM semiconductor device, MOS transistor, select transistor, NAND flash memory, drain electrode, channel potential

Description

데이터 기억 시스템{DATA MEMORY SYSTEM}DATA MEMORY SYSTEM

본 출원은, 일본 특허 출원 2008-035269(2008년 2월 15일)에 기초한 것으로서, 그 우선권을 주장하며, 그 전체 내용이 본 명세서에서 참조로서 인용된다.This application is based on the JP Patent application 2008-035269 (February 15, 2008), and claims the priority, The whole content is taken in here as a reference.

본 발명은, 데이터 기억 시스템에 관한 것으로, 예를 들면, 반도체 기억 장치를 포함하고, 불량 비트가 생겨도 구제 가능한 신뢰성이 높은 시스템에 적용되는 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a data storage system, and includes, for example, a semiconductor memory device, and is applied to a highly reliable system that can be repaired even if bad bits occur.

반도체 기억 장치에 의한 데이터 기억 시스템 중, 예를 들면, 전하 축적층에 채널로부터 절연막을 개재하여 터널 전류에 의해 주입한 전하를 디지털 비트의 정보 저장으로서 이용하고, 그 전하량에 따른 MOSFET의 컨덕턴스 변화를 측정하고, 정보를 읽어내는 불휘발성 반도체 메모리(EEPROM)가 개발되어 있다. 그 중에서도, 메모리 셀을 복수개 직렬 또는 병렬 접속하여 메모리 셀 블록을 형성한 NAND형 EEPROM(NAND형 플래시 메모리)은, 선택 트랜지스터 게이트의 수를 메모리 셀보다도 대폭적으로 줄일 수 있어, 보다 고밀도화할 수 있다. 또한, NAND형 EEPROM에서는, 메모리 셀이 형성된 웰을 공통화함으로써, 소거를 복수의 메모리 셀로 구성된 페이지에서 일괄로 행하는 구조를 취하고, 기입은 개개의 메모리 셀에 대해서 행하는 구조를 취하기 때문에, 보다 고밀도화할 수 있다. 여기서, 상기 불휘발성 메모리에서는, DMM과 달리 데이터 파괴를 수반하지 않고 복수회 읽어내는 것이 가능하다.In the data storage system of the semiconductor memory device, for example, the charge injected by the tunnel current through the insulating film from the channel in the charge storage layer is used as information storage of the digital bits, and the change in conductance of the MOSFET according to the amount of charge is used. A nonvolatile semiconductor memory (EEPROM) has been developed for measuring and reading information. Among them, a NAND type EEPROM (NAND type flash memory) in which a plurality of memory cells are connected in series or in parallel to form a memory cell block can significantly reduce the number of select transistor gates than a memory cell, thereby making it possible to achieve higher density. In addition, in the NAND type EEPROM, the wells in which the memory cells are formed are commonized, so that the erase is collectively performed in a page composed of a plurality of memory cells, and the writing is performed for each memory cell. have. In the nonvolatile memory, unlike the DMM, it is possible to read a plurality of times without data destruction.

그러나, 미세화 및 고밀도화의 한층 더한 진행에 의해, 인접 셀의 용량 결합이 커지면, 인접 셀의 전하 축적층의 전하량에 따라, 임계값이 변화하게 되면, 정보 비트간의 임계값 전압 여유가 저하한다. 특히, NAND형 플래시 메모리에서는, 기입 시의 데이터 패턴에 의해, 일괄 소거한 소거 비트라도 소거 상태를 유지해야 할 비트가 기입 비트로 변화하는 오기입이 발생하여, 한층 더한 임계값 전압 여유가 저하한다고 하는 문제가 있었다.However, due to further progress of miniaturization and densification, when the capacitive coupling of adjacent cells increases, the threshold voltage margin between information bits decreases when the threshold value changes according to the charge amount of the charge accumulation layer of the adjacent cells. Particularly, in the NAND type flash memory, a write-in of which a bit to be kept in an erase state changes to a write bit occurs even in the erased bits that have been collectively erased by the data pattern during writing, which further lowers the threshold voltage margin. There was a problem.

이러한 오류 비트의 문제를 완화하는 하나의 해로서, 예를 들면, 본 발명자들이 개시하는 일본 특허 공개 2005-243183 등에 개시하는 바와 같이, ECC(Error Correcting Code)를 이용해서 오류 정정을 이용하는 방법이 있다. 그러나, 상기 소거 임계값이나 기입 임계값이, 인접 메모리 셀이 소거 임계값으로부터 기입 임계값으로 됨으로써 용량 결합에 의해 상승하는 문제나, 인접 메모리 셀의 패턴에 의해, 보다 오기입이 발생하는 문제에 대하여, 보다 특징을 파악한, 효과가 있는 ECC 구성 방법에 대해서는 개시되어 있지 않다.As one solution to alleviate the problem of such error bits, for example, as disclosed in Japanese Patent Laid-Open No. 2005-243183 disclosed by the present inventors, there is a method of using error correction using an ECC (Error Correcting Code). . However, the erase threshold value and the write threshold value are increased due to capacitive coupling when the adjacent memory cell becomes the write threshold value from the erase threshold value, or a problem in which writing and writing occurs due to the pattern of the adjacent memory cells. On the other hand, the effective ECC construction method which grasped | ascertained the characteristic more is not disclosed.

보다 구체적으로는, ECC로서 BCH(Bose-Chaudhuri-Hocquenghem) 부호, RS(Reed-Solomon) 부호를 이용한 경우, 예를 들면, BCH 부호에서는, t중 오류 정정 부호로서, 부호 길이 n은 m을 자연수로 해서, 2m-1로 고정되어 있고, 대응하는 정보 비트수 k0은 k0=2m-1-mt로 제한되어 있다. 또한, RS 부호에서는, t중 오류 정정 부호로서, 1바이트를 m비트로 해서, 부호 길이 n은 2m-1(바이트)이고, 대응하는 정보 바이트수 k1은 k1=2m-1-2t로 제한되어 있다. 이와 같이, ECC로서 BCH(Bose-Chaudhuri-Hocquenghem) 부호 등을 이용한 경우에는, 종래 단축화 부호 등의 방법에 이용되어, 부호 길이 등의 제한에 의해 자유도가 작다.More specifically, when the BCH (Bose-Chaudhuri-Hocquenghem) code and the RS (Reed-Solomon) code are used as the ECC, for example, in the BCH code, as the error correction code of t, the code length n is a natural number. It is fixed at 2 m -1, and the corresponding information bit number k0 is limited to k0 = 2 m- 1-mt. In the RS code, as an error correction code of t, one byte is m bits, the code length n is 2 m -1 (bytes), and the number of corresponding information bytes k1 is limited to k1 = 2 m -1 -2t. It is. As described above, when a BCH (Bose-Chaudhuri-Hocquenghem) code or the like is used as the ECC, it is conventionally used in a method such as a shortened code, and the degree of freedom is small due to the limitation of the code length.

상기한 바와 같이, 종래의 BCH 단축 부호 작성법이나 RS 단축 부호 작성법만에서는, 예를 들면, "010" 등 부호의 특정한 연속 패턴에 대하여 오류에 강한 정정 방법이 아니라, 랜덤한 단비트 또는 랜덤한 일정수의 바이트에 대한 오류 정정 방법이었다.As described above, in the conventional BCH short code creation method or the RS short code creation method only, a random single bit or a random constant is not a correction method that is strong against errors for a specific continuous pattern of code such as, for example, "010". It was an error correction method for number of bytes.

따라서, 상기 소거 임계값이나 기입 임계값이, 인접 메모리 셀이 소거 임계값으로부터 기입 임계값으로 되는 것에 의한 용량 결합에 의해 상승하는 문제나, 인접 메모리 셀의 패턴에 의해, 보다 오기입이 발생하는 문제에 대하여, 보다 이 문제의 특징을 파악해서 해결되는 것이 아니다. 따라서, 종래, BCH 부호나 RS 부호와 조합한 경우라도, 보다 효과가 있는 부호화의 구성 방법에 대해서는 개시되어 있지 않다.Therefore, the erase threshold value and the write threshold value are increased due to the capacitive coupling caused by the adjacent memory cell becoming the write threshold value from the erase threshold value, or the write-in occurs more by the pattern of the adjacent memory cell. As for the problem, the problem is not solved by grasping the characteristic of the problem. Therefore, conventionally, even when combined with a BCH code or an RS code, there is no disclosure regarding a method for constructing coding that is more effective.

상기한 바와 같이, 종래의 데이터 기억 시스템은, 상기 소거 임계값이나 기입 임계값이 용량 결합에 의해 변화하고, 인접 메모리 셀의 패턴에 의해 오기입이 발생하는 랜더마이즈에 대하여, 랜덤한 단비트 또는 랜덤한 일정수의 바이트에 대한 오류를 정정하는 구성이었다. 그 결과, 예를 들면, "010" 등 부호의 특정한 연패턴에 대하여, 보다 특징을 파악한, 오류에 강한 정정을 할 수 없다고 하는 경향이 있었다.As described above, in the conventional data storage system, a random single bit or a random bit is generated for randomization in which the erase threshold value and the write threshold value change due to capacitive coupling, and write-in occurs by a pattern of adjacent memory cells. It was a configuration to correct an error for a random number of bytes. As a result, for example, there was a tendency that a strong correction for an error that grasps more characteristics with respect to a specific soft pattern of code such as "010" cannot be performed.

본 발명의 일 양태에 따른 데이터 기억 시스템은, 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 구비하고, 복수의 상기 메모리 셀이 인접하여 구성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이와, 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 부호를 발생하고, 상기 페이지에 기록하는 오류 정정 부호를 생성하는 오류 정정 부호 발생 회로와, 상기 페이지에 기록된 디지털 데이터로부터, 상기 오류 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와, {입력된 상기 정보 비트 또는 상기 오류 정정 부호와}, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호 발생 회로에 출력하는 부호 변환 회로를 구비한다.A data storage system according to an aspect of the present invention stores at least two pieces of digital data of " 1 " and " 0 " as charges in a charge storage layer, and writes the difference between the two charge amounts in the charge storage layer. A nonvolatile memory cell array including a memory cell to be used as a plurality of memory cells to collectively erase pages comprising a plurality of the memory cells, and a code for correcting at least one bit of error data from information bits. An error correcting code generating circuit for generating an error correcting code to be recorded, an error correcting code decoding circuit for correcting an error from the error correcting code from the digital data recorded on the page, and restoring the information bit; Multiple times of the information bits or the error correction code and the " write bit-erase bits " Taking the OR, and a code conversion circuit for outputting the error correcting code generating circuit.

본 발명의 일 양태에 따른 데이터 기억 시스템은, 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 구비하고, 복수의 상기 메모리 셀이 인접하여 구성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어 레이와, 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 부호를 발생하고, 상기 페이지에 기록하는 오류 정정 부호를 생성하는 오류 정정 부호 발생 회로와, 상기 페이지에 기록된 디지털 데이터로부터, 상기 오류 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와, {입력한 상기 정보 비트 또는 상기 오류 정정 부호의}, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제1 카운터 회로와, {입력한 상기 정보 비트 또는 상기 오류 정정 부호와}, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제2 카운터 회로와, 상기 제1 카운터 회로의 출력의 배열의 수보다도 상기 제 2카운터 회로의 출력의 배열의 수가 적은 경우, 선택적으로, {입력한 상기 정보 비트 또는 상기 오류 정정 부호와}, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호 발생 회로에 출력하는 부호 변환 회로를 구비한다.A data storage system according to an aspect of the present invention stores at least two pieces of digital data of " 1 " and " 0 " as charges in a charge storage layer, and writes the difference between the two charge amounts in the charge storage layer. And a nonvolatile memory cell array for collectively erasing pages in which a plurality of the memory cells are adjacent to each other, and a code for correcting at least one bit of error data from information bits. An error correcting code generating circuit for generating an error correcting code to be written to the data, an error correcting code decoding circuit for correcting an error from the error correcting code from the digital data recorded on the page, and restoring the information bits; Detecting the number of consecutive bit arrays of write bits / erase bits / write bits} of the information bits or the error correction code; Is an exclusive logical sum of a plurality of bits obtained by repeating a first counter circuit, an array of " input information bits or error correction codes ", " write bit-erase bits " a plurality of times, and write bits / erase bits / writes. The second counter circuit for detecting the number of consecutive bit arrays of bits and the number of the arrays of the output of the second counter circuit are smaller than the number of the arrays of the outputs of the first counter circuit. And a code conversion circuit which takes an exclusive logical sum of a plurality of bits obtained by repeating a bit or the error correction code} and the " write bit-erase bit " a plurality of times, and outputs the result to the error correction code generation circuit.

본 발명의 일 양태에 따른 데이터 기억 시스템은, 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 구비하고, 복수의 상기 메모리 셀이 인접하여 형성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이와, 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 정정 부호를 발생하는 오류 정정 부호 발생 회로와, 상기 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와, 입력된 상기 정보 비트에 상기 오류 정정 부호 발생 회로로부터 입력한 상기 정정 부호를 부가한 오류 정정 부호와, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 페이지에 기록하는 데이터를 생성하는 부호 변환 회로와, 상기 오류 정정 부호 복호 회로의 출력과, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호를 복호하는 부호 역변환 회로를 구비한다.A data storage system according to an aspect of the present invention stores at least two pieces of digital data of " 1 " and " 0 " as charges in a charge storage layer, and writes the difference between the two charge amounts in the charge storage layer. A nonvolatile memory cell array having a memory cell used as a plurality of memory cells for collectively erasing pages in which a plurality of said memory cells are formed adjacently, and an error correction code for generating a correction code for correcting at least one bit of error data from information bits; An error correction code decoding circuit for correcting an error from the correcting code to restore the information bits, an error correcting code to which the correcting code input from the error correcting code generating circuit is added to the inputted information bits; Takes an exclusive OR of a plurality of bits by repeating an array of " write bit-erase bits " A code conversion circuit for generating data to be written, an output of the error correction code decoding circuit, and an exclusive logical sum of a plurality of bits obtained by repeating an array of "write bit-erase bits" a plurality of times to decode the error correction code. A sign inverse conversion circuit is provided.

본 발명의 일 양태에 따른 데이터 기억 시스템은, 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 구비하고, 복수의 상기 메모리 셀이 인접하여 형성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이와, 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 정정 부호를 발생하는 오류 정정 부호 발생 회로와, 상기 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와, 입력된 상기 정보 비트에 상기 오류 정정 부호 발생 회로로부터 입력한 상기 정정 부호를 부가한 오류 정정 부호와, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 페이지에 기록하는 데이터를 생성하는 부호 변환 회로와, 상기 페이지에 기록된 디지털 데이터를 입력하고, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호를 복호하는 부호 역변환 회로를 구비하고, 상기 부호 변환 회로는, 입력한 상기 오류 정정 부호의 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제1 카운터 회로와, 입력한 상기 오류 정정 부호와 "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제2 카운터 회로를 포함하며, 상기 제1 카운터 회로의 출력의 배열의 수보다도 상기 제2 카운터 회로의 출력의 배열의 수가 적은 경우, 선택적으로 입력한 상기 오류 정정 부호와 "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 페이지에 기록한다.A data storage system according to an aspect of the present invention stores at least two pieces of digital data of " 1 " and " 0 " as charges in a charge storage layer, and writes the difference between the two charge amounts in the charge storage layer. A nonvolatile memory cell array having a memory cell used as a plurality of memory cells for collectively erasing pages in which a plurality of said memory cells are formed adjacently, and an error correction code for generating a correction code for correcting at least one bit of error data from information bits; An error correction code decoding circuit for correcting an error from the correcting code to restore the information bits, an error correcting code to which the correcting code input from the error correcting code generating circuit is added to the inputted information bits; Takes an exclusive logical OR of a plurality of bits by repeating an array of " write bit-erase bits " A code conversion circuit for generating data to be written and digital data recorded on the page are input, and an exclusive logical sum of a plurality of bits obtained by repeating an array of " write bit-erase bits " a plurality of times is used to decode the error correction code. And a code counter conversion circuit comprising: a first counter circuit for detecting the number of consecutive bit arrays of write bits / erase bits / write bits of the input error correction code; and inputting the error correction code; And a second counter circuit for taking an exclusive OR of a plurality of bits by repeating an array of "write bit-erase bits" a plurality of times, and detecting the number of consecutive bit arrays of write bits / erase bits / write bits. If the number of arrays of outputs of the second counter circuit is smaller than the number of arrays of outputs of the one counter circuit, the error correction code and " An exclusive logical OR of a plurality of bits obtained by repeating the array of write bit-erase bits " a plurality of times is taken and written in the page.

[비교예][Comparative Example]

우선, 이하에 설명하는 본 발명에 따른 실시예 1 내지 실시예 8에 따른 데이터 기억 시스템과 비교하기 위해서, 도 1 내지 도 3을 이용해서, 비교예에 따른 데이터 기억 시스템에 대해서 설명한다. 도 1은, 비교예에 따른 NAND형 EEPROM 반도체 장치의 메모리 셀 엘리먼트의 회로 구성을 나타낸다.First, in order to compare with the data storage system which concerns on Example 1 thru | or 8 which concerns on this invention demonstrated below, the data storage system which concerns on a comparative example is demonstrated using FIG. 1 shows a circuit configuration of a memory cell element of a NAND type EEPROM semiconductor device according to a comparative example.

도 1에 도시하는 바와 같이, 전하 축적 전극을 갖는 MOS 트랜지스터로 이루어지는 불휘발성 메모리 셀 M0∼M31이 직렬로 접속되고, 일단이 선택 트랜지스터 S1을 통해서 BL이라고 기입되어 있는 데이터 전송선에 접속되어 있다. 또한 다른 일단은 선택 트랜지스터 S2를 통해서 SL이라고 기입되어 있는 공통 소스선에 접속되어 있다. 또한, 각각의 트랜지스터는, 동일한 p형 웰(23) 상에 형성되어 있다. 또한, 각각의 메모리 셀 M0∼M31의 제어 전극은, WL0∼WL31이라고 기입한 데이터 선택선(이하 WL이라고 기재함)에 접속되어 있다. 또한, 데이터 전송선을 따른 복수의 메모리 셀 블록으로부터 1개의 메모리 셀 블록을 선택해서 데이터 전송선에 접속하기 위해서, 선택 트랜지스터 S1의 제어 전극은 블록 선택선 SSL에 접속되어 있다. 또한, 선택 트랜지스터 S2의 제어 전극은 블록 선택선 GSL에 접속되고 있으며, 소위 NAND형 메모리 셀 블록(49)(점선의 영역)을 형성하고 있다. 여기서, 본 비교예에서는, 선택 게이트의 제어 배선 SSL 및 GSL이 메모리 셀 엘리먼트의 제어 배선 WL0∼WL31의 전하 축적층(26)과 동일한 층의 도전체에 의해, 지면 좌우 방향으로 인접하는 셀에서 접속되어 형성되어 있다. 본 비교예에서는, 도면을 과잉으로 복잡하게 하지 않고 문제점을 알기 쉽게 하기 위해서, 예로서, 3개의 데이터 전송선(BL1, BL2, BL3)에 접속된 메모리 셀 어레이 구조를 도시해서 설명한다. 그러나, 물론, 이 병렬수는 3개가 아니라, 좀 더 다수, 예를 들면, 2100개, 4200개, 8400개, 16800개, 33600개 정도 병렬 접속한 구조를 상정하고 있다.As shown in Fig. 1, nonvolatile memory cells M0 to M31 made of MOS transistors having charge storage electrodes are connected in series, and one end thereof is connected to a data transfer line written as BL through selection transistor S1. The other end is connected to the common source line written as SL through the selection transistor S2. In addition, each transistor is formed on the same p-type well 23. The control electrodes of the respective memory cells M0 to M31 are connected to data selection lines (hereinafter referred to as WL) written as WL0 to WL31. In addition, in order to select one memory cell block from a plurality of memory cell blocks along the data transfer line and connect it to the data transfer line, the control electrode of the selection transistor S1 is connected to the block select line SSL. The control electrode of the select transistor S2 is connected to the block select line GSL, forming a so-called NAND type memory cell block 49 (region of dotted line). Here, in this comparative example, the control wirings SSL and GSL of the selection gate are connected in cells adjacent to each other in the left and right directions of the paper by the conductors of the same layer as the charge accumulation layer 26 of the control wirings WL0 to WL31 of the memory cell element. It is formed. In this comparative example, the memory cell array structure connected to three data transmission lines BL1, BL2, BL3 will be described by way of example in order to make the problem easy to understand without overly complicated drawings. However, of course, the number of these parallel numbers is not three, but many more, for example, assume the structure which connected about 2100, 4200, 8400, 16800, 33600 in parallel.

여기서, 인접하는 메모리 셀의 용량 결합에 의해, 전하 축적 전극의 전위가 변화하는 문제를 설명하기 위해서, 예를 들면, WL1과 BL2의 교점에 형성된 M1a(α) 셀에 관한 임계값 분포를, 예를 들면, 도 2에 도시한다. 전하 축적층을 갖는 다치 메모리 셀에서는, 인접하는 메모리 셀에 마이너스의 전하가 축적됨으로써, 인접하는 메모리 셀간의 용량 결합을 통해서, 임계값이 상승하는 문제가 발생한다. 이 문제를 설명하기 위해서, M1a(α) 셀을 예로 하여, BL 방향으로 인접하는 메모리 셀 M1b(β) 및 M1b'(γ) 및 WL 방향의 S1 단자측에 인접하여 직렬 접속된 메모리 셀 M2a(ε)가 소거 상태로부터 기입 상태로 변화된 경우의 임계값 변동을 도 2에 도시한다.Here, in order to explain the problem that the potential of the charge accumulation electrode is changed by the capacitive coupling of adjacent memory cells, for example, the threshold distribution of the M1a (?) Cells formed at the intersections of WL1 and BL2 is described as an example. For example, it is shown in FIG. In a multi-value memory cell having a charge storage layer, negative charge accumulates in adjacent memory cells, causing a problem that the threshold value rises through capacitive coupling between adjacent memory cells. In order to explain this problem, memory cells M2b (β) and M1b '(γ) adjacent to the BL direction and M1a (α) cells are connected in series adjacent to the S1 terminal side in the WL direction ( The threshold value variation in the case where ε) is changed from the erase state to the write state is shown in FIG.

도 2에서는, (i)에, 인접 데이터 전송선측의 인접 메모리 셀(β, γ) 및 S1 측의 워드선측의 인접 메모리 셀(ε)이 전부 소거 상태인 메모리 셀α의 소거 임계값 분포를 나타낸다. 또한, 도 2에는, 4값의 기입 상태를 고려하여, 예를 들면, 4값의 기억을 상정하여, 임계값이 높은 측으로부터 기입 임계값3, 기입 임계값2, 기입 임계값1의 순으로 기입 임계값이 설정되어 있는 것으로 한다.In Fig. 2, (i) shows the erase threshold distributions of the memory cells α in which the adjacent memory cells β and γ on the adjacent data transfer line side and the adjacent memory cells ε on the word line side on the S1 side are all in an erased state. . In addition, in FIG. 2, in consideration of the four-state write state, for example, four-value memory is assumed, and the write threshold value 3, the write threshold value 2, and the write threshold value 1 are in order from the side where the threshold value is higher. It is assumed that the write threshold is set.

또한, (ii)에, 인접 데이터 전송선측의 인접 메모리 셀 1셀(γ)이 기입 상태이고, 반대측에 인접하는 메모리 셀(β) 및 S1측의 워드선측의 인접 메모리 셀(ε)이 소거 상태인 경우의 메모리 셀α의 소거 임계값 분포를 나타낸다. 이 경우, 인접하는 메모리 셀 1셀(γ)이 기입 상태이므로, 소거 상태보다도 전자가 축적된 상태로 되어 있다. 따라서, (i)에 비해, 인접 메모리 셀의 용량 결합에 의해, α의 메모리 셀의 임계값이 상승한다. 또한, 소위 오기입에 의해 (i)에 비해서 임계값이 상승하여 윗자락 분포가 발생하는 문제가 있지만, 이것을 이하 상세하게 설명한다. 여기서, NAND 플래시 메모리에서는, 데이터 선택선에 공통으로 접속된 메모리 셀은 데이터 선택선인 WL의 전위를, 예를 들면 15V 정도 이상 30V 정도 이하의 전위를 인가하며, 또한, 전기적으로 접속된 데이터 전송선(BL) 전위를 0V로 하고, 기입을 선택한 메모리 셀의 소스 전극 및 드레인 전극을 예를 들면 0V로 하고, 채널 전위도 0V로 한다. 한편, 기입을 선택하지 않고, 소거 상태로 유지하는 메모리 셀, 즉, 소위 비선택 메모리 셀의 소스 전극, 드레인 전극 및 채널 전위는, 예를 들면, 5V 내지 10V 사이로 유지함으로써, 데이터 선택선과 데이터 전송선의 전위차를 작게 함으로써, 기입을 방지하는 것이 행하여진다. 또한, 비선택 메모리 셀을 실현하기 위해서는, 전기적으로 접속된 BL의 전위를 0V보다 상승시킴으로써 행한 다. 또한, NAND 플래시 메모리에서는, 기입 임계값의 분포 폭을 작게 하기 위해서, 기입 후에 베리파이 읽어내기를 행함으로써, 기입의 하한 임계값(기입 검증 임계값)에 도달한 메모리 셀에 대해서는, BL의 전위를 선택적으로 0V로부터 상승시킴으로써, 추가 기입이 발생하지 않도록 하고 있다.Further, in (ii), one memory cell? On the adjacent data transfer line side is in a write state, and the memory cell? Adjacent to the opposite side and an adjacent memory cell? On the word line side on the S1 side are erased. The erase threshold distribution of the memory cell alpha in the case of. In this case, since the adjacent memory cell 1 cell γ is in the write state, electrons are stored rather than the erase state. Therefore, compared with (i), the threshold value of the memory cell of alpha rises due to the capacitive coupling of adjacent memory cells. In addition, there is a problem that the threshold value rises and the upper hem distribution occurs as compared with (i) due to so-called writing, but this will be described in detail below. Here, in a NAND flash memory, a memory cell commonly connected to a data select line applies a potential of WL which is a data select line, for example, a potential of about 15 V or more and about 30 V or less, and a data transfer line ( BL) The potential is set to 0V, the source electrode and the drain electrode of the memory cell in which writing is selected are set to 0V, for example, and the channel potential is also set to 0V. On the other hand, the source electrode, the drain electrode, and the channel potential of the memory cell to be kept in the erased state without selecting the write, that is, the so-called unselected memory cell, are kept between 5V and 10V, for example, so that the data select line and the data transfer line are maintained. The write operation is prevented by reducing the potential difference of. In addition, in order to realize an unselected memory cell, the potential of the electrically connected BL is increased by more than 0V. In addition, in the NAND flash memory, in order to reduce the distribution width of the write threshold value, the potential of the BL is applied to the memory cell that reaches the lower limit threshold value (write verification threshold value) of the write by performing the verification read after the write operation. Is selectively raised from 0V to prevent additional writing.

여기서, WL1에 접속된 메모리 셀α를 소거 상태로 유지하고, WL1에 접속된 다른 메모리 셀을 기입하기 위해서, WL1의 전위를 15V 정도 이상 30V 정도 이하의 전위를 인가하는 경우를 생각한다. 이 경우, (ii)의 상태의 기입 시에, 기입을 행하는 메모리 셀γ의 소스 전극, 드레인 전극, 및 채널 전위는 0V이며, 메모리 셀α의 소스 전극, 드레인 전극, 및 채널 전위는 5V 정도 내지 10V 정도로 유지된다.Here, the case where the potential of WL1 is applied to a potential of about 15V or more and about 30V or less in order to keep the memory cell α connected to WL1 in an erased state and to write another memory cell connected to WL1 is considered. In this case, at the time of writing in the state of (ii), the source electrode, the drain electrode, and the channel potential of the memory cell γ to write are 0 V, and the source electrode, the drain electrode, and the channel potential of the memory cell α are about 5 V or more. It stays around 10V.

한편, (i)의 상태의 기입 시에는, 메모리 셀γ와 메모리 셀α의 소스 전극, 드레인 전극, 및 채널 전위는 5V 정도 내지 10V 정도로 유지된다. 따라서, (ii)의 상태의 기입의 경우에는, 메모리 셀α의 소스 전극 또는 드레인 전극으로부터, 메모리 셀γ의 소스 전극 또는 드레인 전극에 전류가 흐름으로써, 메모리 셀α의 소스 전극 또는 드레인 전극의 전위가 저하한다. 또는, 인접하는 메모리 셀γ의 소스 전극 및 드레인 전극의 전위, 및 채널 부분의 전위가 (i)보다도 (ii)의 경우에 낮음으로써, BL 방향의 용량 결합에 의해, 메모리 셀α의 채널 부분의 전압도 (i)보다도 (ii)의 경우에 저하한다. 이들에 의해, (i)에 비해 (ii)의 경우에, 메모리 셀α의 채널 부분의 전압이 저하하기 때문에, 비선택의 메모리 셀에 기입이 발생하는 오기입이 발생하고, 메모리 셀α의 임계값 상승이 발생한다. 이상으로부터, (i)에 비해 (ii)의 경우에, 소거 상태의 메모리 셀α에 대해서, 임계값이 보다 상 승하는 문제가 발생한다. 특히, 기입 및 소거 스트레스를 거친 메모리 셀에서는, 터널 절연막에 전하 트랩이 형성되고, 전하 축적층으로부터 약한 기입 스트레스로 Stress Induced Leakage Current(SILC)가 흐르기 쉬워진다. 이 경우, (i)에 비해, (ii)의 상태에서 전하 축적층의 축적 전하량의 차가 커서, 인접 메모리 셀 방향으로 전계 스트레스가 가해지기 때문에, 보다, 오기입 스트레스 시에 SILC 리크 전류가 흐름으로써, 소거 분포의 윗자락 분포가 발생하기 쉬워진다.On the other hand, at the time of writing in the state of (i), the source electrode, the drain electrode, and the channel potential of the memory cell γ and the memory cell α are maintained at about 5V to about 10V. Therefore, in the case of writing in the state of (ii), a current flows from the source electrode or the drain electrode of the memory cell α to the source electrode or the drain electrode of the memory cell α, whereby the potential of the source electrode or the drain electrode of the memory cell α Falls. Alternatively, the potential of the source electrode and the drain electrode of the adjacent memory cell γ and the potential of the channel portion are lower in the case of (ii) than in (i), so that the channel portion of the memory cell? The voltage is also lower in the case of (ii) than in (i). As a result, in the case of (ii) as compared with (i), since the voltage of the channel portion of the memory cell α is lowered, writing and writing occurs in the non-selected memory cell, and the threshold of the memory cell α is generated. Value rise occurs. As described above, in the case of (ii) as compared with (i), a problem arises in that the threshold value is higher for the memory cell alpha in the erased state. In particular, in memory cells subjected to write and erase stress, charge traps are formed in the tunnel insulating film, and stress induced induced current (SILC) easily flows from the charge storage layer due to weak write stress. In this case, since the difference in the accumulated charge amount of the charge storage layer in the state of (ii) is larger than that in (i), an electric field stress is applied in the direction of the adjacent memory cell. The upper hem distribution of an erase distribution becomes easy to generate | occur | produce.

이상의 소거 임계값이 (ii)의 경우에 커지는 문제는, (ii)에, 인접 데이터 전송선측의 인접하는 메모리 셀 1셀(β)이 기입 상태이고, 반대측에 인접하는 메모리 셀(γ) 및 S1측의 워드선측의 인접 메모리 셀(ε)이 소거 상태인 경우의 메모리 셀α의 소거 임계값 분포에서도 동등하게 발생한다.The problem that the above erase threshold value becomes large in the case of (ii) is that in (ii), one cell (β) adjacent to the adjacent data transmission line is in a write state, and the memory cell (γ) and S1 adjacent to the opposite side are in the write state. The same occurs in the erase threshold distribution of the memory cells α in the case where the adjacent memory cells? On the word line side in the erase state are in the erase state.

또한, (iii)에 인접 데이터 전송선측에 인접 메모리 셀 2셀(β, γ) 모두 기입 상태이고, S1측의 워드선측의 인접 메모리 셀(ε)이 소거 상태인 경우의 메모리 셀α의 소거 임계값 분포를 나타낸다. (iii)의 경우에는, (ii)의 경우에 비해, BL 방향으로 인접하는 메모리 셀(β, γ)이 2개 모두 기입 상태이므로, 소거 상태보다도 보다 전자가 축적된 상태로 되어 있다. 따라서, (ii)에 비해, 인접 메모리 셀의 용량 결합에 의해, α의 셀의 임계값이 상승한다. 또한, 소위 오기입 스트레스에 의해 (ii)에 비해 더욱 임계값이 상승하여, 윗자락 분포가 발생한다.Further, in (iii), the erasing threshold of the memory cell α in the case where both of the adjacent memory cells? And? On the adjacent data transfer line side is in the write state, and the adjacent memory cell? On the word line side on the S1 side is in the erase state. Indicates a value distribution. In the case of (iii), since both of the memory cells β and γ adjacent to the BL direction are in the writing state, the electrons are stored more than in the erase state as compared with the case of (ii). Therefore, compared with (ii), the threshold value of the cell of alpha rises due to capacitive coupling of adjacent memory cells. In addition, the threshold value rises further compared to (ii) by the so-called write-in stress, so that the upper hem distribution occurs.

여기서, WL1에 접속된 메모리 셀α를 소거 상태로 유지하고, WL1에 접속된 다른 메모리 셀을 기입하기 위해서, WL1의 전위를 15V 정도 이상 30V 정도 이하의 전위를 인가하는 경우를 생각한다. 이 경우, (ii)의 상태의 기입 시에, 기입을 행 하는 메모리 셀β, γ의 소스 전극, 드레인 전극, 및 채널 전위는 0V이며, 메모리 셀α의 소스 전극, 드레인 전극, 및 채널 전위는 5V 내지 10V로 유지된다. 한편, (ii)의 상태의 기입 시에는, 메모리 셀β, 메모리 셀γ와 메모리 셀α의 소스 전극, 드레인 전극, 및 채널 전위는 5V 정도 내지 10V 정도로 유지된다. 따라서, (iii)의 상태의 기입의 경우에는, 메모리 셀α의 소스 전극 또는 드레인 전극으로부터 메모리 셀γ 또는 메모리 셀β의 소스 전극 또는 드레인 전극에 전류가 흐름으로써, 메모리 셀α의 소스 전극 또는 드레인 전극의 전위가 (ii)의 경우보다도 저하한다. 또는, 인접하는 메모리 셀β 및 메모리 셀γ의 소스 전극 및 드레인 전극의 전위, 및 채널 부분의 전위가 (i)보다도 (iii)의 경우에 낮음으로써, BL 방향의 용량 결합에 의해, 메모리 셀α의 채널 부분의 전압도 저하한다. 이들에 의해, (i)에 비해 (iii)의 경우에, 메모리 셀α의 채널 부분의 전압이 저하하기 때문에, 비선택의 메모리 셀에 기입이 발생하는 오기입이 발생하고, 메모리 셀α의 임계값 상승이 발생한다. 또한, (ii)의 경우와 비교해도, BL 방향 양측에 인접하는 메모리 셀의 채널 부분의 전위가 낮음으로써, 보다 (ii)보다도 오기입이 발생하기 쉬워진다. 이상으로부터, (ii)에 비해 (iii)의 경우에, 소거 상태의 메모리 셀α에 대해서, 임계값이 보다 상승하는 문제가 발생한다.Here, the case where the potential of WL1 is applied to a potential of about 15V or more and about 30V or less in order to keep the memory cell α connected to WL1 in an erased state and to write another memory cell connected to WL1 is considered. In this case, at the time of writing in the state of (ii), the source electrode, the drain electrode, and the channel potential of the memory cells β and γ to write are 0 V, and the source electrode, the drain electrode, and the channel potential of the memory cell α are It is maintained at 5V to 10V. On the other hand, at the time of writing in the state of (ii), the source electrodes, the drain electrodes, and the channel potentials of the memory cells β, the memory cells γ, and the memory cells α are maintained at about 5V to about 10V. Therefore, in the case of writing in the state of (iii), a current flows from the source electrode or the drain electrode of the memory cell α to the source electrode or the drain electrode of the memory cell? The potential of the electrode is lower than in the case of (ii). Alternatively, the potentials of the source and drain electrodes of the adjacent memory cells β and the memory cells γ and the potentials of the channel portions are lower in the case of (iii) than in (i), whereby the memory cells α are formed by capacitive coupling in the BL direction. The voltage of the channel portion of also decreases. As a result, in the case of (iii) as compared with (i), since the voltage of the channel portion of the memory cell α is lowered, writing and writing occurs in the non-selected memory cell, and the threshold of the memory cell α is generated. Value rise occurs. In addition, even when compared with the case of (ii), since the potential of the channel portion of the memory cell adjacent to both sides in the BL direction is low, misfeeding is more likely to occur than in (ii). As described above, in the case of (iii) as compared with (ii), a problem arises in that the threshold value rises more with respect to the memory cell α in the erased state.

또한, 도 2의 (iv)에 인접 데이터 전송선측에 인접 메모리 셀 2셀(β, γ) 모두 기입 상태이고, S1측의 워드선측의 인접 메모리 셀(ε)이 기입 상태인 경우의 메모리 셀α의 소거 임계값 분포를 나타낸다. (iv)의 경우에는, (iii)의 경우에 비해, S1측의 워드선측의 인접하는 메모리 셀(ε)이 기입 상태이므로, 소거 상태보 다도 보다 전자가 축적된 상태로 되어 있다. 따라서, (iii)에 비해, 인접하는 메모리 셀(ε)의 용량 결합에 의해, α의 셀의 임계값이 (iii)의 경우보다도 더욱 상승한다. WL, BL에 대하여 대각 방향의 메모리 셀의 용량 결합의 기여는, 다른 BL 방향, WL 방향의 용량 결합의 각각의 기여에 비해 40% 이하 1% 이상으로 작으므로, 다치 메모리 셀에서는, 이 (iv)의 상태에서 소거 임계값이 (i)∼(iii)의 경우보다도 높은 쪽으로 분포가 확대되는 주패턴으로 된다.In addition, in Fig. 2 (iv), the memory cells α when the two adjacent memory cells β and γ are both in the write state on the adjacent data transfer line side, and the adjacent memory cells ε on the word line side on the S1 side are in the write state. Shows the erase threshold distribution. In the case of (iv), since the adjacent memory cell epsilon on the word line side on the S1 side is in the write state, electrons are accumulated more than in the erase state than in the case of (iii). Therefore, compared with (iii), the threshold value of the cell of alpha is further raised by the capacitive coupling of adjacent memory cells epsilon. Since the contribution of the capacitive coupling of memory cells in the diagonal direction with respect to WL and BL is less than 40% or less than 1% compared to the respective contributions of the capacitive coupling in the other BL and WL directions, in multi-value memory cells, this is (iv In the state of), the erase threshold value becomes a main pattern in which the distribution is expanded to be higher than in the case of (i) to (iii).

또한, 다치 NAND 플래시 메모리에서는, 종래 동일한 다치 레벨의 데이터는, SL측의 셀로부터 BL측으로 순서대로 기입하는 사양으로 되어 있다. 이 때문에, S1측의 워드선측의 인접 메모리 셀(ε)은 메모리 셀(α)보다 후에 동일 레벨의 데이터가 기입되므로, 이 인접 메모리 셀(ε)의 기입 임계값의 영향을 메모리 셀(α)이 받게 된다. 또한, 이 인접 메모리 셀(β, γ, ε)이 기입 상태인 경우에, 인접 메모리 셀이 소거 상태로 설정된 경우보다도 메모리 셀α의 임계값 분포가 높은 측으로 확대되는 문제는, 인접하는 메모리 셀간의 용량 결합 때문에, 메모리 셀α가 기입 임계값에 대해서도 발생하는 문제이다. 즉, 본 발명의 주요한 문제점을 명확화하기 위해서, 설명이나 도시는 생략하고 있지만, 도 2의 기입 임계값1, 2, 3의 경우도 마찬가지로, 임계값의 상승 문제가 발생한다.In addition, in the multi-value NAND flash memory, the data of the same multi-value level is conventionally written to the BL side from the cell on the SL side. For this reason, since the data of the same level is written in the adjacent memory cell? On the word line side on the S1 side after the memory cell?, The influence of the write threshold value of the adjacent memory cell? Is affected by the memory cell? You will receive this. In the case where the adjacent memory cells β, γ, and ε are in the write state, the problem that the threshold distribution of the memory cells α is expanded to the side higher than that when the adjacent memory cells are set to the erased state is that between adjacent memory cells. Because of the capacitive coupling, the memory cell α is a problem that also occurs for the write threshold. That is, in order to clarify the main problem of this invention, although description and illustration are abbreviate | omitted, also in the case of the write thresholds 1, 2, and 3 of FIG.

한편, 도 2의 (v)에, 예를 들면, 10회 내지 10만회의 임의의 일정값의 기입 소거(Endurance라고 일반적으로 말함)를 행한 후에서의, 예를 들면, 85도에서 1년 내지 10년간 방치, 소위, 데이터 유지한 경우의 기입 임계값1의 분포를 나타낸다. 기입 임계값은, Endurance 후에는, 터널 절연막의 반도체 기판 근방에, 터널 전류 또는 전계 스트레스에 의해 전자 트랩이 형성된다. 이 전자 트랩은, 기입 시에 전자를 트랩한 후, 장시간 방치함으로써, 터널 절연막 내에 트랩된 전하를, 전하 축적 영역에 축적한 전하보다도 방출하기 쉬운 특징을 갖는다. 따라서, (v)와 같이, 기입 직후의 임계값보다 전자 방출을 위해, 임계값이 저하하는 문제가 발생한다. 물론, Endurance 후에는, 터널 전류 또는 전계 스트레스에 의해, 터널 절연막 내에 전자 또는 정공 트랩이 형성됨으로써, 이 트랩 준위를 통해 리크 전류가 흐르는 문제도 발생한다. 이 문제가 발생하면, 도 2의 (v)의 하단과 같이 임계값 하방으로 자락을 늘어뜨린 분포로 되기 쉽다. 어떻든, 전하 유지 후에는, 기입 직후의 분포에 비해, 기입 임계값은 저하하여 분포가 확대되는 경향이 발생한다.On the other hand, in (v) of FIG. 2, for example, after a write erase (commonly referred to as Endurance) of an arbitrary value of 10 to 100,000 times, for example, from 1 year to 85 degrees, The distribution of the write threshold value 1 in case of leaving, so-called, data retention for 10 years is shown. After the endurance, an electron trap is formed in the vicinity of the semiconductor substrate of the tunnel insulating film by tunnel current or an electric field stress after the endurance. The electron trap has a characteristic that the charge trapped in the tunnel insulating film is easier to be released than the charge accumulated in the charge accumulation region by allowing electrons to be trapped at the time of writing and then left for a long time. Therefore, as in (v), a problem arises that the threshold value is lowered for the electron emission than the threshold value immediately after writing. Of course, after endurance, an electron or hole trap is formed in the tunnel insulating film by tunnel current or an electric field stress, so that a leak current flows through this trap level. When this problem occurs, it is likely to be a distribution in which the hem is lined up below the threshold value as shown in the lower part of FIG. In any case, after charge retention, compared with the distribution immediately after writing, the writing threshold value decreases and the distribution tends to expand.

여기서, 기입 임계값1, 2, 3은, 중성 임계값보다도 높은 임계값이라고 가정하지만, 이것은, 종래의 NAND형 반도체 기억 장치에서는 타당한 가정이다. 이 경우, 기입 임계값3이 높으면, 예를 들면, 전하 유지 시의 터널 절연막의 전계가 증대하기 때문에, 터널 절연막을 통한 리크 전류가 증가하고, 데이터 유지 특성이 열화한다. 또한, 기입 임계값3이 높으면 전하 축적층과 제어 전극 사이의, 소위 인터 폴리 절연막의 기입 시나 전하 유지 시의 전계가 증대하기 때문에, 리크 전류 증대나 절연 파괴가 발생하여, 역시 데이터 유지 특성 및 메모리 셀의 신뢰성이 악화된다. 따라서, 기입 임계값은, 메모리 셀의 신뢰성을 유지하기 위한 상한이 있으며, 예를 들면, 4V 정도 이상 8V 정도 이하의 범위에서 상한이 설정된다. 한편, 소거 임계값이 낮으면, 전하 축적층과 제어 전극 사이의, 소위 인터 폴리 절연막의 소거 시의 전계가 증대하기 때문에, 리크 전류 증대나 절연 파괴가 발생하여, 역시 데이터 유지 특성 및 메모리 셀의 신뢰성이 악화된다. 따라서, 소거 임계값은, 메모리 셀의 신뢰성을 유지하기 위한 하한이 있으며, 예를 들면, ―4V 정도 이하 -10V 정도 이상의 범위에서 하한이 설정된다. 이들은 메모리 셀의 신뢰성 악화나 절연 파괴 등을 수반하기 때문에, 이 기입 임계값의 상한과 소거 임계값의 하한의 범위 내에, 메모리 셀의 기입 임계값 분포 및 소거 임계값 분포가 전부 들어가도록 설정할 필요가 있다. 도 2와 같이 소거 임계값의 분포가, 인접 메모리 셀간의 용량 결합이나 오기입에 의해 높은 측으로 변동하고, 기입 임계값의 유지 후의 특성에서 임계값 저하가 발생하여, 도 2의 (iv)와 (v)와 같이, 임계값 분포의 겹침이 발생하면, 기입 비트를 소거 비트로 오검출이나 오정정하거나, 소거 비트를 기입 비트라고 오검출로 오정정하는 오류 비트의 문제가 발생한다. 상술한 바와 같이 임계값을 설정할 수 있는 상하한 범위가 결정되어 있어, 기입 임계값 분포를 좁게 하기 위해서는, 기입 프로그램 전압 스텝을 좁게 할 필요가 있어, 기입 스피드의 저하와의 트레이드 오프가 큰 문제로 된다. 또한, 인접 메모리 셀간의 물리 간격이 좁아져, 보다 인접 메모리 셀간의 용량 결합이 커지면, 기입 임계값1, 2에 대해서도, 인접 셀의 전하 축적층의 전하량에 따라서 임계값이 변동하여, 임계값 폭이 증대하는 문제가 발생한다. 따라서, 메모리 셀의 미세화가 진행된 고밀도 NAND 메모리 셀에서는, 이 오류 비트의 문제를 임계값 분포 제어만으로 억제하는 것은 곤란하다.Here, it is assumed that the write thresholds 1, 2, and 3 are higher than the neutral threshold, but this is a reasonable assumption in the conventional NAND type semiconductor memory device. In this case, when the write threshold value 3 is high, for example, the electric field of the tunnel insulating film at the time of charge holding increases, so that the leakage current through the tunnel insulating film increases, and the data holding characteristic deteriorates. In addition, when the write threshold value 3 is high, the electric field during the writing or charge holding of the so-called interpoly insulation film between the charge storage layer and the control electrode increases, so that leakage current increases or dielectric breakdown occurs. The reliability of the cell is deteriorated. Therefore, the write threshold has an upper limit for maintaining the reliability of the memory cell. For example, the upper limit is set in the range of about 4V or more and about 8V or less. On the other hand, if the erase threshold value is low, the electric field during the erasing of the so-called interpoly insulation film between the charge storage layer and the control electrode increases, so that leakage current increases or dielectric breakdown occurs. Reliability deteriorates. Therefore, the erase threshold has a lower limit for maintaining the reliability of the memory cell. For example, the lower limit is set in the range of about -4V or less and about -10V or more. Since these are accompanied by deterioration of reliability of the memory cells, breakdown of insulation, and the like, it is necessary to set the memory cell to have all of the write threshold distribution and the erase threshold distribution within the range of the upper limit of the write threshold and the lower limit of the erase threshold. have. As shown in Fig. 2, the distribution of the erase threshold value is changed to the higher side due to capacitive coupling or write-in between adjacent memory cells, and a threshold value drop occurs in the characteristic after the write threshold value is maintained. As shown in v), when an overlap of threshold distributions occurs, a problem of an error bit that incorrectly detects or incorrectly corrects write bits as erase bits or incorrectly corrects erase bits as incorrectly detects write bits occurs. As described above, the upper and lower limit ranges in which the threshold value can be set are determined, and in order to narrow the write threshold distribution, it is necessary to narrow the write program voltage step. do. In addition, when the physical interval between adjacent memory cells becomes smaller and the capacitive coupling between adjacent memory cells becomes larger, the threshold value also changes with respect to the write amount 1 and 2 depending on the charge amount of the charge storage layer of the adjacent cell, and thus the threshold width. This increasing problem occurs. Therefore, in the high-density NAND memory cell in which the miniaturization of the memory cell is advanced, it is difficult to suppress the problem of this error bit only by the threshold distribution control.

이러한 오류 비트의 문제를 완화하기 위해서, 예를 들면, 상기 특허 공개2005-243183에 본 발명자들이 개시하고 있는 바와 같이, ECC(Error Correcting Code)를 이용해서 오류 정정을 이용하는 방법이 알려져 있다. 그러나, 상기 소거 임계값이나 기입 임계값이, 인접 메모리 셀이 소거 임계값으로부터 기입 임계값으로 됨으로써 용량 결합에 의해 상승하는 문제나, 인접 메모리 셀의 패턴에 의해, 보다 오기입이 발생하는 문제에 대하여, 보다 특징을 파악하고, 효과가 있는 ECC의 구성 방법에 대해서는 개시되어 있지 않다.In order to alleviate the problem of such an error bit, for example, as disclosed by the present inventors in the above-mentioned Patent Publication 2005-243183, a method of using error correction using an Error Correcting Code (ECC) is known. However, the erase threshold value and the write threshold value are increased due to capacitive coupling when the adjacent memory cell becomes the write threshold value from the erase threshold value, or a problem in which writing and writing occurs due to the pattern of the adjacent memory cells. On the other hand, it is not disclosed about the configuration method of ECC which grasps a characteristic further and is effective.

보다 구체적으로는, ECC로서 BCH(Bose-Chaudhuri-Hocquenghem) 부호, RS(Reed-Solomon) 부호를 이용한 경우에는, 예를 들면, BCH 부호에서는, t중 오류 정정 부호로서, 부호 길이 n은 m을 자연수로 해서, 2m-1로 고정되어 있고, 대응하는 정보 비트수 k0은 k0=2m-1-mt로 제한되어 있다. 또한, RS 부호는, t중 오류 정정 부호로서, 1바이트를 m비트로 해서, 부호 길이 n은 2m-1(바이트)이며, 대응하는 정보 바이트수 k1은 k1=2m-1-2t로 제한되어 있다. ECC로서 BCH(Bose-Chaudhuri-Hocquenghem) 부호를 이용한 경우에는, 부호 길이 등의 제한보다 자유도가 작기 때문에, 단축화 부호 등의 방법이 이용되어 왔다.More specifically, when the BCH (Bose-Chaudhuri-Hocquenghem) code and the RS (Reed-Solomon) code are used as the ECC, for example, in the BCH code, as the error correction code of t, the code length n represents m. As a natural number, it is fixed at 2 m- 1, and the corresponding information bit number k0 is limited to k0 = 2 m- 1-mt. The RS code is an error correcting code of t, with 1 byte being m bits, the code length n being 2 m -1 (bytes), and the number of corresponding information bytes k1 limited to k1 = 2 m -1-2t. It is. When the BCH (Bose-Chaudhuri-Hocquenghem) code is used as the ECC, since the degree of freedom is smaller than the restriction such as the code length, a method such as a shortened code has been used.

도 3의 (a)에 비교예에 따른 BCH 부호에 대한 단축화 부호의 방법을 도시한다.Fig. 3A shows a method of a shortened code for a BCH code according to a comparative example.

우선, 도 3의 (a1)에 도시하는 바와 같이, 전술한 k0비트보다 적은 k비트의 정보 비트를 준비한다. 다음으로, (a2)에, 1-bit의 "0"을 추가하여, 전술한 k0비트에 상당하는 비트수에 일치시킨다. 또한, "0"bit를 추가한 정보 계열을 BCH 부 호화하고, (a3)에 도시하는 바와 같이, 검사 비트로 되는 패리티를 부가한 n비트의 부호어를 형성한다. 다음으로, (a4)에서 도시하는 바와 같이, 부호화된 부호어 중의 1-bit의 "0"을 제거하고, (n-1)비트의 부호어를 불휘발성 메모리에 기억한다. 이와 같이 해서, (n, k0)BCH 부호로부터, ((n-1), k(=k0-1))BCH 단축 부호를 형성하고 있다. 여기서, 정보 비트는 BCH 부호 후라도 그대로 정보 비트로서, 검사 비트와 분리하고 있다. 이 특징은 RS 부호에서도 마찬가지로 존재한다.First, as shown in Fig. 3A1, k bits of information bits smaller than the aforementioned k0 bits are prepared. Next, 1-bit " 0 " is added to (a2) to match the number of bits corresponding to the aforementioned k0 bits. Further, an information sequence to which "0" bits are added is BCH encoded, and as shown in (a3), an n-bit codeword is added to which parity serving as a check bit is added. Next, as shown in (a4), 1-bit " 0 " of the coded code words is removed, and a code word of (n-1) bits is stored in the nonvolatile memory. In this way, ((n-1), k (= k0-1)) BCH short codes are formed from the (n, k0) BCH codes. Here, the information bits are information bits as they are after the BCH code and are separated from the check bits. This feature is likewise present in the RS code.

그러나, 상기한 바와 같이 BCH 단축 부호 작성법이나 RS 단축 부호 작성법만에서는, "010" 등 부호의 특정한 연패턴에 대하여 오류에 강한 정정 방법이 아니라, 랜덤한 단비트 또는 랜덤한 일정수의 바이트에 대한 오류 정정 방법이다. 따라서, 상기 소거 임계값이나 기입 임계값이, 인접 메모리 셀이 소거 임계값으로부터 기입 임계값으로 됨으로써 용량 결합에 의해 상승하는 문제나, 인접 메모리 셀의 패턴에 의해, 보다 오기입이 발생하는 문제에 대하여, 보다 이 문제의 특징을 파악하고, BCH 부호나 RS 부호와 조합한 경우에, 보다 효과가 있는 부호화의 구성 방법은 아니다.However, as described above, in the BCH short code creation method or the RS short code creation method only, a random short bit or a random number of bytes is not corrected for a specific soft pattern such as "010". Error correction method. Therefore, the erase threshold value and the write threshold value are increased in the case where the adjacent memory cell becomes the write threshold value from the erase threshold value and rises due to capacitive coupling, or in the case where the write-in occurs more by the pattern of the adjacent memory cell. On the other hand, when the characteristic of this problem is grasped | ascertained and it combines with a BCH code or RS code, it is not a more effective method of the structure of coding.

상기한 바와 같이, 비교예에 따른 데이터 기억 시스템은, 소거 임계값이나 기입 임계값이 용량 결합에 의해 변화하고, 인접 메모리 셀의 패턴에 의해 오기입이 발생하는 랜더마이즈의 문제에 대하여, 랜덤한 단비트 또는 랜덤한 일정수의 바이트에 대한 오류를 정정하는 구성이다. 그 결과, 예를 들면, "010" 등 부호의 특정한 연패턴에 대하여, 보다 특징을 파악한, 오류에 강한 정정을 할 수 없다는 점에서 불리하다.As described above, in the data storage system according to the comparative example, the erase threshold value and the write threshold value are changed due to capacitive coupling, and randomization is performed on the problem of randomization in which write and write occur due to a pattern of adjacent memory cells. It is a configuration for correcting errors for a single bit or a random number of bytes. As a result, for example, it is disadvantageous in the point that the specific soft pattern of code | symbol, such as "010", can hardly correct an error which grasped | ascertained the characteristic more.

이하, 최량이라고 생각되는 몇 가지의 실시예 1 내지 실시예 7에 대해서 설명한다. 또한, 본 설명에서는, 전체 도면에 걸쳐 공통인 부분에는 공통인 참조 부호를 붙인다.Hereinafter, some Example 1 thru | or Example 7 considered the best are demonstrated. In addition, in this description, the common reference numeral is attached | subjected to the part which is common across all drawings.

[실시예 1]Example 1

다음으로, 도 4 내지 도 9를 이용해서, 본 발명의 실시예 1에 따른 데이터 기억 시스템 및 그 오류 정정 동작을 설명한다.Next, the data storage system and the error correction operation thereof according to the first embodiment of the present invention will be described with reference to Figs.

<1. 구성예><1. Configuration Example>

우선, 도 4를 이용해서, 실시예 1에 따른 데이터 기억 시스템의 전체 구성예를 설명한다. 도 4는, 실시예 1에 따른 데이터 기억 시스템의 블록도의 레이아웃을 나타낸다.First, the entire structural example of the data storage system which concerns on Example 1 is demonstrated using FIG. 4 shows a layout of a block diagram of a data storage system according to the first embodiment.

도시하는 바와 같이, 본 예에 따른 데이터 기억 시스템은, 기억 장치(7)와 메모리 컨트롤러(5)에 의해 구성된다.As shown, the data storage system according to the present example is constituted by the storage device 7 and the memory controller 5.

기억 장치(7)로서 점선으로 둘러싼 부분은, 예를 들면, NAND형 플래시 메모리로서 1개의 반도체 기판 상에 형성되어 있다. 메모리 컨트롤러(5)로서 점선으로 둘러싼 부분은, 소위 플래시 메모리의 컨트롤러에 상당하는 회로 구성을 도시한 것으로, 통상적으로, 기억 장치(7)와는 별도의 반도체 기판 상에 형성된 회로를 도시하고 있지만, 물론 동일한 반도체 기판에 형성해도 된다. 이와 같이, 예를 들면, 메모리 컨트롤러(5)와 기억 장치(7)가 동일 패키지 또는 보드나 카드 내에 형성됨으로써, 데이터 기억 시스템을 형성하고 있다.The portion enclosed by the dotted lines as the storage device 7 is formed on one semiconductor substrate as, for example, a NAND type flash memory. The portion surrounded by the dotted line as the memory controller 5 shows a circuit configuration corresponding to a so-called controller of a flash memory, and typically shows a circuit formed on a semiconductor substrate separate from the memory device 7, but of course You may form in the same semiconductor substrate. In this manner, for example, the memory controller 5 and the memory device 7 are formed in the same package, board, or card, thereby forming a data storage system.

데이터 입출력 버퍼(45)는, 플래시 메모리 컨트롤러(5)의 데이터 입출력 버 퍼(101)와 제1 내부 I/O선에 의해 접속되어 있다.The data input / output buffer 45 is connected by the data input / output buffer 101 of the flash memory controller 5 and the first internal I / O line.

여기서, 본원의 모든 실시예에 걸쳐, 메모리 셀은 데이터 파괴를 수반하지 않고 복수회 읽어낼 수 있는 메모리 셀로 한다. 또한, 메모리 셀 블록(49)의 구체적 구성에 대해서는, 이하에 설명한다. 또한, 플래시 메모리의 관례에 따라, 소거 상태의 논리값을 "1", 기입 상태의 논리값을 "0"으로 한다. 또한, 설명을 간단히 하기 위해서, 이하 모든 실시예에서, 특별히 기술하지 않는 경우에는 2치의 메모리 셀의 임계값에 대해서 기술하지만, 다치 메모리 셀의 경우에도, 물론 실시예의 적용이 가능하다. 이 경우, 메모리 셀의 임계값이 높은 측으로부터 낮은 측의 순으로 각 데이터 유지의 비트를 나타내는 것의 임계값 분포를 배열한 경우, 임의의 인접하는 2개의 임계값 분포 a, b(a가 b보다 낮은 임계값 분포인 것으로 함)를 고려하여, a 이하의 임계값 분포를 "1", b 이상의 임계값 분포를 "0"으로 대체하면 된다. 또한, NAND형 플래시 메모리에서는, 동일한 데이터 제어선에 접속된 소거 메모리 셀을 일괄 소거하고, NAND 셀 블록(49)에서도 일괄 소거하는 방법을 취할 수 있기 때문에, 소거 임계값의 분포가 2V 이상 6V 이하로, 0.1V 이상 1V 이하의 기입 임계값의 분포 폭보다도 넓게 된다. 이 때문에, 도 5의 (a)의 소거 임계값으로부터 기입 임계값으로 인접 메모리 셀(β, γ, ε) 중 어느 하나의 임계값이 변화된 경우의 해당 메모리 셀(α)의 임계값 변화 영향이 가장 커지기 때문에, 다치 메모리 셀에서, 소거 상태의 논리값을 "1", 그 이외의 어느 하나의 기입 상태의 논리값을 "0"으로서 대체하는 것이 바람직하다.Here, in all the embodiments of the present application, the memory cell is a memory cell that can be read out multiple times without involving data destruction. In addition, the specific structure of the memory cell block 49 is demonstrated below. In addition, according to the convention of the flash memory, the logic value of the erase state is " 1 " and the logic value of the write state is " 0 ". In addition, in the following all the embodiments, for the sake of simplicity, the threshold values of the binary memory cells are described unless otherwise described. However, in the case of multi-value memory cells, the embodiment can be applied. In this case, in a case where the threshold distributions for representing the bits of each data retention are arranged in order from the high side to the low side of the memory cell, any two adjacent threshold distributions a, b (a is greater than b). Low threshold distribution), the threshold distribution below a may be replaced by " 1 ", and the threshold distribution above b by " 0 ". Further, in the NAND type flash memory, a method of collectively erasing erase memory cells connected to the same data control line and collectively erasing in the NAND cell block 49 can be employed. Therefore, the distribution of the erase threshold value is 2V or more and 6V or less. Therefore, it becomes wider than the distribution width of the write threshold of 0.1V or more and 1V or less. Therefore, when the threshold value of any one of the adjacent memory cells β, γ, and ε is changed from the erase threshold value in FIG. 5A to the write threshold value, the influence of the threshold value change of the corresponding memory cell α is affected. Since it is the largest, it is preferable to replace the logic value of the erase state with "1" and the logic value of any other write state with "0" in the multi-value memory cell.

다음으로, 도 5a, 도 5b를 이용해서, 메모리 셀 어레이의 평면 구성예에 대 해서 설명한다. 도 5a, 도 5b는, 각각, NAND 셀 블록(49)의 등가 회로 및 평면도이다.Next, a planar configuration example of the memory cell array will be described with reference to FIGS. 5A and 5B. 5A and 5B are equivalent circuits and plan views of the NAND cell block 49, respectively.

도 5b에서는, 도 5a의 셀 블록(49)을 3개 병렬한 구조를 도시하고 있다. 특히, 도 5b에서는, 셀 구조를 알기 쉽게 하기 위해서, 제어 게이트 전극(27)보다도 아래의 구조만을 도시하고 있다. 도 5a에서는, 전하 축적 전극(26)을 갖는 MOS 트랜지스터로 이루어지는 불휘발성 메모리 셀 M0∼M31이 직렬로 접속되고, 일단이 선택 트랜지스터 S1을 통해서 BL이라고 기입되어 있는 데이터 전송선에 접속되어 있다. 또한 다른 일단은 선택 트랜지스터 S2를 통해서 SL이라고 기입되어 있는 공통 소스선에 접속되어 있다. 또한, 각각의 트랜지스터는, 동일한 p형 웰(23) 상에 형성되어 있다. 또한, 각각의 메모리 셀 M0∼M31의 제어 전극은, WL0∼WL31이라고 기입한 데이터 선택선에 접속되어 있다. 또한, 데이터 전송선을 따른 복수의 메모리 셀 블록으로부터 1개의 메모리 셀 블록을 선택해서 데이터 전송선에 접속하기 위해서, 선택 트랜지스터 S1의 제어 전극은 블록 선택선 SSL에 접속되어 있다. 또한, 선택 트랜지스터 S2의 제어 전극은 블록 선택선 GSL에 접속되어 있고, 소위 NAND형 메모리 셀 블록(49)(점선의 영역)을 형성하고 있다. 여기서, 본 실시예에서는, 선택 게이트의 제어 배선 SSL 및 GSL이 메모리 셀 엘리먼트의 제어 배선 WL0∼WL31의 전하 축적층(26)과 동일한 층의 도전체에 의해, 지면 좌우 방향으로 인접하는 메모리 셀로 접속되어 형성되어 있다. 여기서, 메모리 셀 블록(49)에는, SSL 및 GSL의 블록 선택선은 적어도 1개 이상 있으면 되고, 데이터 선택선 WL0∼WL31과 동일 방향에 형성되는 것이 고밀도화에는 바람직하다. 본 실시예에서는, 메모리 셀 블록(49)에 32=25개의 메모리 셀이 접속되어 있는 예를 설명하였지만, 데이터 전송선 및 데이터 선택선에 접속하는 메모리 셀의 수는 복수이면 되고, 나누어 떨어지는 2n개 혹은, 더미 메모리 셀을 S2와 WL0간, S1과 WL31간에 가한 2n+2개(n은 플러스의 정수)인 것이 다치 메모리 셀의 블록을 어드레스 디코드하는 데에 바람직하다.FIG. 5B shows a structure in which three cell blocks 49 of FIG. 5A are arranged in parallel. In particular, in FIG. 5B, only the structure below the control gate electrode 27 is shown in order to make the cell structure easier to understand. In Fig. 5A, nonvolatile memory cells M0 to M31 made up of MOS transistors having charge storage electrodes 26 are connected in series, and one end thereof is connected to a data transfer line written as BL through selection transistor S1. The other end is connected to the common source line written as SL through the selection transistor S2. In addition, each transistor is formed on the same p-type well 23. The control electrodes of the respective memory cells M0 to M31 are connected to data selection lines written as WL0 to WL31. In addition, in order to select one memory cell block from a plurality of memory cell blocks along the data transfer line and connect it to the data transfer line, the control electrode of the selection transistor S1 is connected to the block select line SSL. In addition, the control electrode of the selection transistor S2 is connected to the block selection line GSL to form a so-called NAND type memory cell block 49 (dotted region). Here, in the present embodiment, the control wirings SSL and GSL of the selection gate are connected to memory cells adjacent in the left and right directions of the paper by conductors of the same layer as the charge storage layers 26 of the control wirings WL0 to WL31 of the memory cell element. It is formed. Here, the memory cell block 49 may have at least one block selection line for SSL and GSL, and is preferably formed in the same direction as the data selection lines WL0 to WL31 for high density. In the present embodiment, an example in which 32 = 25 five memory cells are connected to the memory cell block 49 has been described. However, the number of memory cells connected to the data transmission line and the data selection line may be plural and divided by 2 n. It is preferable to address decode a block of a multi-value memory cell by adding 2 n +2 (n is a positive integer) between two or dummy memory cells between S2 and WL0, and between S1 and WL31.

다음으로, 도 6a, 도 6b를 이용해서, 메모리 셀 어레이의 단면 구성예에 대해서 설명한다. 도 6a, 도 6b는, 도 5b 중의 화살 표시 B-B' 및 A-A' 방향 단면도이다. B-B' 방향 단면도는, 메모리 셀부 단면도에 상당한다. 도 6a 및 도 6b에서, 예를 들면, 붕소 불순물 농도가 1014-3 내지 1019-3 사이인 p형 실리콘 영역(23)에, 예를 들면, 3 내지 15㎚의 두께로 이루어지는 실리콘 산화막 또는 옥시 나이트라이드막(25, 25SSL, 25GSL)으로 형성된 터널 게이트 절연막을 개재하여, 예를 들면 인 또는 비소를 1018-3 내지 1021-3 첨가한 폴리실리콘으로 이루어지는 전하 축적층(26, 26SSL, 26GSL)이 10㎚ 내지 500㎚의 두께로 형성되어 있다. 이들은, 예를 들면, 실리콘 산화막으로 이루어지는 소자 분리 절연막(24)이 형성되어 있지 않은 영역 상에, p형 실리콘 영역(23)과 자기 정합적으로 형성되어 있다. 이것은, 예를 들면, 반도체 영역(23)에 참조 부호 25, 26을 전체면 퇴적한 후, 패터닝해서 반도체 영역(23)에 달할 때까지, 반도체 영역(23)을 예를 들면 0.05∼0.5um의 깊이 에칭하고, 절연막(24)을 매립함으로써 형성할 수 있다. 이와 같이 참조 부호 25 및 26을 단차가 없는 평면에 전체면 형성할 수 있으므로, 보다 균일성이 향상된 특성이 갖추어진 제막을 행할 수 있다.6A and 6B, a cross-sectional configuration example of the memory cell array will be described. 6A and 6B are cross-sectional views taken along arrows BB 'and AA' in FIG. 5B. A BB 'direction cross section corresponds to a memory cell section cross section. 6A and 6B, for example, silicon having a thickness of, for example, 3 to 15 nm, in the p-type silicon region 23 having a boron impurity concentration of between 10 14 cm −3 and 10 19 cm −3. Charge accumulation made of, for example, polysilicon containing 10 18 cm -3 to 10 21 cm -3 of phosphorus or arsenic through a tunnel gate insulating film formed of oxide film or oxy nitride film 25, 25 SSL , 25 GSL Layers 26, 26 SSL , 26 GSL are formed with a thickness of 10 nm to 500 nm. These are self-aligned with the p-type silicon region 23 on a region where, for example, the element isolation insulating film 24 made of a silicon oxide film is not formed. This is, for example, after depositing reference numerals 25 and 26 in the semiconductor region 23 as a whole, and then patterning and reaching the semiconductor region 23 until the semiconductor region 23 reaches, for example, 0.05 to 0.5 um. It can form by deeply etching and embedding the insulating film 24. Thus, since 25 and 26 can be formed in the whole surface in the plane without a level | step difference, the film forming with the more uniformity improved characteristic can be performed.

이 위에, 예를 들면, 두께 5㎚ 내지 30㎚ 사이의 실리콘 산화막 또는 옥시 나이트라이드막, 또는 실리콘 산화막/실리콘 질화막/실리콘 산화막 또는 알루미늄, 하프늄, 란탄, 지르코늄 원소를 포함하는 산화막과 실리콘 산화막, 실리콘 질화막으로부터의 적층막으로 이루어지는 블록 절연막(50, 50SSL, 50GSL)을 개재해서, 예를 들면 인, 비소, 또는 붕소를 1017∼1021-3를 불순물 첨가한 폴리실리콘 또는 WSi(텅스텐 실리사이드)와 폴리실리콘의 스택 구조 또는 W와 폴리실리콘의 스택 구조 또는 NiSi, MoSi, TiSi, CoSi와 폴리실리콘의 스택 구조로 이루어지는 제어 게이트(27)가 10㎚ 내지 500㎚의 두께로 형성되어 있다. 이 제어 게이트(27)는, 도 5b에서 인접하는 메모리 셀 블록에서 접속되도록 도 5b에서 지면 좌우 방향으로 블록 경계까지 형성되어 있고, 데이터 선택선 WL0∼WL31을 형성하고 있다. 또한, p형 실리콘 영역(23)은, n형 실리콘 영역(22)에 의해 p형 반도체 기판(21)과 독립적으로 전압 인가할 수 있도록 되어 있는 것이, 소거 시의 승압 회로 부하를 줄여 소비 전력을 억제하기 위해서는 바람직하다. 본 실시예의 게이트 형상에서는, 반도체 영역(23)의 측벽이 절연막(24)으로 덮어져 있으므로, 부유 게이트 전극(26)을 형성하기 전의 에칭에서 노출하는 일이 없어, 게이트 전극(26)이 반도체 영역(23)보다도 아래로 오는 것을 방지할 수 있다. 따라서, 반도체 영역(23)과 절연막(24)의 경계에서의, 게이트 전계 집중이나 임계값이 저하한 기생 트랜지스터가 생기기 어 렵다. 또한, 전계 집중에 기인하는 기입 임계값의 저하 현상, 소위, sidewalk 현상이 발생하기 어렵게 되기 때문에, 보다 신뢰성이 높은 트랜지스터를 형성할 수 있다.On this, for example, a silicon oxide film or an oxynitride film having a thickness of 5 nm to 30 nm, or a silicon oxide film / silicon nitride film / silicon oxide film or an oxide film containing silicon, hafnium, lanthanum and zirconium elements, a silicon oxide film and silicon For example, polysilicon or WSi (tungsten) in which impurity is added to phosphorus, arsenic, or boron 10 17 to 10 21 cm -3 through block insulating films 50, 50 SSL , and 50 GSL made of a laminated film from a nitride film. A control gate 27 having a stack structure of silicide) and polysilicon or a stack structure of W and polysilicon or a stack structure of NiSi, MoSi, TiSi, CoSi and polysilicon is formed to a thickness of 10 nm to 500 nm. The control gate 27 is formed up to the block boundary in the left-right direction of the paper in FIG. 5B so as to be connected to the adjacent memory cell blocks in FIG. 5B, and forms the data selection lines WL0 to WL31. In addition, the p-type silicon region 23 is capable of applying voltage independently of the p-type semiconductor substrate 21 by the n-type silicon region 22, thereby reducing the load of the boost circuit during erasing to reduce power consumption. In order to suppress, it is preferable. In the gate shape of this embodiment, since the sidewall of the semiconductor region 23 is covered with the insulating film 24, the gate electrode 26 is not exposed in the etching before forming the floating gate electrode 26. Coming below (23) can be prevented. Therefore, it is difficult to produce parasitic transistors in which the gate electric field concentration and the threshold value fall at the boundary between the semiconductor region 23 and the insulating film 24. In addition, since the phenomenon of lowering the write threshold value, so-called sidewalk phenomenon due to electric field concentration is less likely to occur, a more reliable transistor can be formed.

도 6b에 도시하는 바와 같이, 이들 게이트 전극의 양측에는, 예를 들면 5㎚ 내지 200㎚의 두께의 실리콘 질화막 또는 실리콘 산화막으로 이루어지는 측벽 절연막(43)을 사이에 두고 소스 또는 드레인 전극으로 되는 n형 확산층(28)이 형성되어 있다. 이들 확산층(28), 전하 축적층(26), 및 제어 게이트(27)에 의해, 전하 축적층(26)에 축적된 전하량을 정보량으로 하는 부유 게이트형 EEPROM 셀이 형성되어 있고, 그 게이트 길이로서는, 0.5um 이하 0.01um 이상으로 한다. 이들 소스 드레인 n형 확산층(28)으로서는, 예를 들면 인이나 비소, 안티몬이 표면 농도가 1017-3 내지 1021-3으로 되도록 깊이 10㎚ 내지 500㎚ 사이에서 형성되어 있다. 또한, 이들 n형 확산층(28)은 인접하는 메모리 셀끼리 공유되고, NAND 접속이 실현되어 있다. 또한, 도면에서, 참조 부호 26SSL, 또한, 참조 부호 26GSL은, 각각 SSL 및 GSL에 상당하는 블록 선택선에 접속된 게이트 전극이며, 상기 부유 게이트형 EEPROM의 부유 게이트 전극과 동층에서 형성되어 있다. 게이트 전극(26SSL 및 26GSL)의 게이트 길이는, 메모리 셀 게이트 전극의 게이트 길이보다도 길고, 예를 들면, 1um 이하 0.02um 이상으로 형성함으로써, 블록 선택 시와 비선택 시의 온 오프비를 크게 확보할 수 있어, 오기입이나 오읽어내기를 방지할 수 있다.As shown in Fig. 6B, n-type gates are formed on both sides of these gate electrodes, for example, as source or drain electrodes with a sidewall insulating film 43 made of a silicon nitride film or a silicon oxide film having a thickness of 5 nm to 200 nm interposed therebetween. The diffusion layer 28 is formed. The diffusion layer 28, the charge accumulation layer 26, and the control gate 27 form a floating gate type EEPROM cell whose information amount is the amount of charge accumulated in the charge accumulation layer 26. , 0.5um or less and 0.01um or more. Examples of these source and drain n-type diffusion layer 28, for example, is formed between the phosphorus or arsenic, antimony, the surface concentration is 10 to 500 10㎚ depth such that the 17-3 to 10 21-3. In addition, these n-type diffusion layers 28 are shared between adjacent memory cells, and a NAND connection is realized. In the figure, reference numeral 26 SSL and reference numeral 26 GSL are gate electrodes connected to block selection lines corresponding to SSL and GSL, respectively, and are formed in the same layer as the floating gate electrode of the floating gate type EEPROM. . The gate lengths of the gate electrodes 26 SSL and 26 GSL are longer than the gate lengths of the memory cell gate electrodes, and are formed to be, for example, 1 μm or less and 0.02 μm or more, thereby greatly increasing the on-off ratio between block selection and non-selection. We can secure and can prevent wrong entry and misreading.

또한, 참조 부호 27SSL의 한 쪽에 형성된 소스 또는 드레인 전극으로 되는 n형 확산층(28d)은, 예를 들면, 텅스텐이나 텅스텐 실리사이드, 티탄, 티탄 나이트라이드, 구리, 또는 알루미늄으로 이루어지는 데이터 전송선(36(BL))과 컨택트(31d)를 통해서 접속되어 있다.Further, n-type diffusion layer (28 d) which is a source or drain electrode formed on one side of the reference numerals 27 SSL, for example, tungsten or tungsten silicide, titanium, titanium nitride, copper, or a data transmission line made of aluminum (36 (BL)) and is connected via a contact (31 d).

여기서, 데이터 전송선(36(BL))은, 인접하는 메모리 셀 블록에서 접속되도록 도 5의 (b)에서 지면 상하 방향으로 블록 경계까지 형성되어 있다. 한편, 참조 부호 27(GSL)의 한 쪽에 형성된 소스 또는 드레인 전극으로 되는 n형 확산층(28S)은, 컨택트(31S)를 통해서 소스선으로 되는 SL과 접속되어 있다. 이 소스선 SL은, 인접하는 메모리 셀 블록에서 접속되도록 도 5b에서 지면 좌우 방향으로 블록 경계까지 형성되어 있다. 물론, n형 확산층(28S)을 지면 좌우 방향으로 블록 경계까지 형성함으로써, 소스선으로 해도 된다. 이들 BL 컨택트 및 SL 컨택트로서는, 예를 들면 n형 또는 p형으로 도프된 폴리실리콘이나 텅스텐, 및 텅스텐 실리사이드, Al, TiN, Ti 등이 충전되어, 도전체 영역으로 되어 있다. 또한, 이들 SL 및 BL과, 상기 트랜지스터 사이는, 예를 들면 Si02나 SiN으로 이루어지는 층간막(68)에 의해 충전되어 있다. 또한, 이 BL 상부에는, 예를 들면 SiO2, SiN 또는 폴리이미드로 이루어지는 절연막 보호층(37)이나, 도면에 도시하고 있지 않지만, 예를 들면, W, Al이나 Cu로 이루어지는 상부 배선이 형성되어 있다.Here, the data transmission line 36 (BL) is formed to the block boundary in the vertical direction of the paper in FIG. 5B so as to be connected to the adjacent memory cell block. On the other hand, n-type diffusion layer serving as the source or drain electrode formed on one side of the reference numeral 27 (GSL) (28 S) is connected with the source line SL to be a via contact (31 S). This source line SL is formed to the block boundary in the left-right direction of the paper in FIG. 5B so as to be connected to adjacent memory cell blocks. Of course, the n-type diffusion layer 28 S may be formed as a source line by forming the block boundary in the paper left and right directions. As these BL contacts and SL contacts, for example, polysilicon, tungsten, and tungsten silicide doped with n-type or p-type, tungsten silicide, Al, TiN, Ti, and the like are filled to form a conductor region. Further, between the SL and BL and the transistor, for example, it is filled by an interlayer film 68 made of Si0 2 or SiN. In addition, the BL upper portion, for example, SiO 2, SiN or the insulating protective layer 37 made of polyimide or, although not shown in the figure, for example, W, the upper wiring is formed consisting of Al or Cu have.

셀 어레이(1)는, 도 5a에 도시하는 바와 같이, 불휘발성 메모리 셀을 직렬 또는 병렬 접속한 메모리 셀 블록(49)을 배열해서 구성된다. 이 메모리 셀 어레이(1)의 데이터 전송선의 데이터를 센스하거나, 혹은 기입 데이터를 유지하기 위해서 센스 앰프 회로(46)가 데이터 전송선 선택 트랜지스터를 통해서 설치되어 있다. 이 센스 앰프 회로는 데이터 레지스터를 겸하고 있으며, 예를 들면 플립플롭 회로를 주체로 해서 구성된다. 또한, 센스 앰프 회로(46)는, 데이터 입출력 버퍼(45)에 접속되어 있다. 이들 접속은, 어드레스 버퍼(47)로부터 어드레스 신호를 받는 컬럼 디코더(48)의 출력에 의해 제어되고, 데이터 입출력 버퍼에 공급된 데이터를 메모리 셀 어레이(1)에 기입, 및 데이터를 도 4의 제1 내부 I/O선에 읽어내기 가능하게 되어 있다. 메모리 셀 어레이(1)에 대하여, 메모리 셀의 선택을 행하기 위해서, 구체적으로는 데이터 제어선 WL0∼WL31, 및 블록 선택 게이트 SSL, GSL의 제어를 하기 위해서, 로우 디코더(3)가 설치되어 있다.As illustrated in FIG. 5A, the cell array 1 is configured by arranging memory cell blocks 49 in which nonvolatile memory cells are connected in series or in parallel. In order to sense the data of the data transfer line of the memory cell array 1 or to hold the write data, a sense amplifier circuit 46 is provided through the data transfer line select transistor. This sense amplifier circuit also serves as a data register, and is mainly composed of a flip-flop circuit. In addition, the sense amplifier circuit 46 is connected to the data input / output buffer 45. These connections are controlled by the output of the column decoder 48 which receives the address signal from the address buffer 47, writes the data supplied to the data input / output buffer into the memory cell array 1, and writes the data in FIG. 1 The internal I / O line can be read. In order to select the memory cells with respect to the memory cell array 1, specifically, the row decoder 3 is provided to control the data control lines WL0 to WL31 and the block selection gates SSL and GSL. .

기판 전위 제어 회로(42)는, 셀 어레이(1)가 형성되는 p형 기판(21)(또는 p형 웰)의 전위를 제어하기 위해서 설치되어 있고, 특히 소거 시에 10V 이상의 소거 전압으로 승압되도록 형성되는 것이 바람직하다. 또한, 메모리 셀 어레이(1)의 선택된 메모리 셀에 데이터 기입을 행할 때에, 전원 전압보다도 승압된 기입 전압 Vpgm을 발생하기 위한 회로(41a)가 형성되어 있다. 이 Vpgm 발생 회로(41a)와는 별도로, 데이터 기입 시에 비선택의 메모리 셀에 공급되는 기입용 중간 전압 Vpass를 발생하기 위한 회로(41b), 및 데이터 읽어내기 시에 비선택의 메모리 셀에 공급되는 읽어내기용 중간 전압 Vread 발생 회로(41c) 및 선택 셀의 임계값 판정 전압을 인가하는 회로 Vref 발생 회로1(41d)이 설치되어 있다. 이들은, 기입, 소거, 및 읽어내기의 각 상태에서, 필요한 전압 출력이 데이터 제어선 드라이버(2)에 가해지도록, 제어 회로(40)에 의해 제어되고 있다. Vpgm으로서는, 6V 이상 30V 이하의 전압이고, Vpass는 3V 이상 15V 이하의 전압이며, Vread로서는 1V 이상 9V 이하의 전압이고, NAND형 어레이의 경우, 기입 임계값 상한보다도 1V 정도 높은 전압이 읽어내기 전류를 충분히 확보하여 Read disturb를 저하시키기에는 바람직하다. 또한, Vref 발생 회로(41)로서는, 메모리 셀의 인접하는 각 임계값, 예를 들면, "1"과 "0"의 임계값 분포의 분리 임계값의 중간으로 설정한다. 또한, 데이터 제어선 드라이버(2)는, 로우 디코더(3)의 출력에 따라서, 상기 전압 출력을, 기입 또는 읽어내기가 필요한 메모리 셀의 제어 게이트 WL0∼WL15, SSL, GSL에 인가하도록 하는 스위치 회로이다.The substrate potential control circuit 42 is provided in order to control the potential of the p-type substrate 21 (or p-type well) in which the cell array 1 is formed, and in particular, to be stepped up to an erase voltage of 10 V or more during erasing. It is preferably formed. Further, when data is written to the selected memory cells of the memory cell array 1, a circuit 41a for generating the write voltage Vpgm boosted up from the power supply voltage is formed. Apart from the Vpgm generating circuit 41a, the circuit 41b for generating the write intermediate voltage Vpass supplied to the unselected memory cell at the time of data writing, and the unselected memory cell at the time of reading data is supplied. An intermediate voltage Vread generating circuit 41c for reading out and a circuit Vref generating circuit 1 41d for applying the threshold determination voltage of the selected cell are provided. These are controlled by the control circuit 40 so that a necessary voltage output is applied to the data control line driver 2 in each state of writing, erasing, and reading. As Vpgm, a voltage of 6 V or more and 30 V or less, Vpass is a voltage of 3 V or more and 15 V or less, and Vread is a voltage of 1 V or more and 9 V or less. It is desirable to secure enough to reduce the read disturb. In addition, the Vref generation circuit 41 is set to the middle of each adjacent threshold value of the memory cell, for example, the separation threshold value of the threshold distribution of " 1 " and " 0 ". The data control line driver 2 also applies a switch circuit for applying the voltage output to the control gates WL0 to WL15, SSL, and GSL of the memory cells that need to be written or read out in accordance with the output of the row decoder 3. to be.

또한, 본 출원의 모든 실시예에서는, 일련의 시퀀스로 읽어내어지는 데이터 비트수가, m을 자연수로 하고, t를 자연수로 해서 일련의 시퀀스로 읽어내어지는 데이터 비트수가, [2m-1-t×(m-1)-1]보다 크고 (2m-t×m-1) 이하인 경우, 적어도 (2m-1)개 이상의 메모리 셀(49)을 도 4의 (a) 또는 도 4의 (b)의 지면 좌우 방향, 즉 데이터 선택선이 연장되는 방향으로 병렬로 준비하고, 1페이지로서 이용한다. 또한, 본 실시예의 특징상, 2 내지 6비트의 부가 비트를 정보 비트에 부가해서 효과를 얻기 위해서, m으로서는, 적어도 4 이상인 것이, 본 실시예에 의해 어레이 면적 증대를 억제하기 위해서는 필요하며, 통상 m은 NAND 플래시 메모리에서는, 8 이상 20 이하에서 이용된다. 또한, 1페이지에 속하는 메모리 셀에 대해서는, 예를 들면, 1개의 데이터 선택선에 공통으로 접속된 복수의 메모리 셀로 하는 것이, 1번의 데이터 선택에 의해, 복수의 메모리 셀을 동시 선택할 수 있어 바람직하다. 이와 같이 메모리 셀을 준비함으로써, 예를 들면, Bose-Chaudhuri-Hocquenghem(BCH) 부호를 이용해서 셀 어레이(1)의 일련의 시퀀스로 읽어내어진 t비트의 비트 오류를 검출하고, 그 위치를 구할 수 있다. RS 부호의 경우에도, 1바이트 중의 데이터는 동시 읽어내기되므로, 상기한 바와 같이 메모리 셀(49)을 도 5a 또는 도 5b의 지면 좌우 방향, 즉 데이터 선택선이 연장되는 방향으로 병렬로 준비하고, 1페이지로서 이용한다.Further, in all the embodiments of the present application, the number of data bits read in a series of sequences is the number of data bits read in a series of sequences with m being a natural number and t being a natural number, [2 m-1 -t X (m-1) -1] and less than or equal to (2 m −t × m −1), at least (2 m −1) or more memory cells 49 may be connected to (a) of FIG. It is prepared in parallel in the left and right directions of the page b, that is, the direction in which the data selection lines extend, and used as one page. In addition, in order to obtain an effect by adding 2 to 6 bits of additional bits to the information bits, the characteristic of the present embodiment is that at least 4 or more is required for m to suppress the increase of the array area. m is used in 8 or more and 20 or less in NAND flash memory. Further, for a memory cell belonging to one page, for example, it is preferable to use a plurality of memory cells commonly connected to one data selection line because a plurality of memory cells can be simultaneously selected by one data selection. . By preparing a memory cell in this manner, for example, a bit error of t bits read into a series of sequences of the cell array 1 is detected using a Bose-Chaudhuri-Hocquenghem (BCH) code, and the position thereof is determined. Can be. Also in the case of the RS code, since the data in one byte are read out simultaneously, the memory cells 49 are prepared in parallel in the left and right directions of the paper in Fig. 5A or 5B, that is, the direction in which the data selection lines extend, as described above. We use as one page.

또한, 센스 앰프(46)의 입출력은, 메모리 셀의 읽어내기나 기입, 및 소거를 제어하는 제어 로직(40)에 접속되어 있다. 제어 회로(40)는, 예를 들면 데이터 버퍼에 공급된 데이터를 커맨드 입력으로 하고, 메모리 셀의 읽어내기나 기입, 및 소거를 제어한다. 또한, 도면에서는 단순화를 위해 도시하고 있지 않지만, 제어 회로(40)로부터, 센스 앰프의 동작을 제어하는 제어 신호나 sel1, se12 제어 신호가 접속되어 있다. 또한, 참조 부호 7로 나타내는 점선으로 둘러싼 부분은, 예를 들면, NAND형 플래시 메모리로서 종래 1개의 반도체 기판 상에 형성된 기억 장치를 나타내고 있다. 여기서, 상기 각 구성에 대해서는, 예를 들면, 일본 특허 공개 2002-150783에 의해 공지의 회로 블록을 이용하면 되므로 상세한 설명은 생략한다.In addition, the input / output of the sense amplifier 46 is connected to the control logic 40 which controls reading, writing, and erasing of the memory cells. The control circuit 40 uses, for example, data supplied to the data buffer as a command input to control reading, writing, and erasing of the memory cells. Although not shown in the figure for simplicity, a control signal for controlling the operation of the sense amplifier and control signals sel1 and se12 are connected from the control circuit 40. In addition, the part enclosed with the dotted line shown with the reference number 7 has shown the memory device conventionally formed on one semiconductor substrate as a NAND type flash memory. Here, about each said structure, since a well-known circuit block should just be used, for example by Unexamined-Japanese-Patent No. 2002-150783, detailed description is abbreviate | omitted.

또한, 이후, 알기 쉽게 하기 위해서, 관례에 따라, 부호화 전의 데이터열을 정보 비트, 부호화 후에 부가되는 비트를 검사 비트라고 부르기로 한다. BCH 부호, 및 RS 부호 모두, 원래의 정보 비트에 검사 비트가 부가됨으로써 부호를 형성 한다. 종래 기술에서 설명한 바와 같이, 통상적으로, 검사 비트는 그 부호 및 복호화의 회로 구성을 단순하게 하기 위해서, 정보 비트의 뒤에 부가되는 형태로 되어 있다.In addition, in order to make it easier to understand later, according to the convention, the data string before encoding is called an information bit, and the bit added after encoding is called a check bit. Both the BCH code and the RS code form a code by adding a check bit to the original information bit. As described in the prior art, the check bits are usually in the form added after the information bits in order to simplify the circuit construction of the sign and the decoding.

여기서, 도 4 중의 점선(5)으로 둘러싼 부분은, 소위 플래시 메모리의 컨트롤러에 상당하는 회로를 도시한 것으로, 통상적으로, 기억 장치(7)와는 별도의 반도체 기판 상에 형성된 회로를 나타내고 있지만, 물론 동일한 반도체 기판에 형성해도 된다. 예를 들면, 참조 부호 5와 7이 동일 패키지 또는 보드나 카드 내에 형성됨으로써, 데이터 기억 시스템을 형성하고 있다. 데이터 입출력 버퍼(45)는 플래시 메모리 컨트롤러(5)의 데이터 입출력 버퍼(101)와 제1 내부 I/O선에 의해 접속되어 있다.Here, the part enclosed by the dotted line 5 in FIG. 4 shows the circuit equivalent to the so-called controller of a flash memory, and normally shows the circuit formed on the semiconductor substrate separate from the memory | storage device 7, Of course, You may form in the same semiconductor substrate. For example, reference numerals 5 and 7 are formed in the same package, board, or card to form a data storage system. The data input / output buffer 45 is connected to the data input / output buffer 101 of the flash memory controller 5 by the first internal I / O line.

한편, 외부 입출력(I/O)은 다른 데이터 입력 버퍼(111)에 접속되고, 플래시 메모리의 기입/소거/읽어내기의 어드레스 및 데이터 제어 정보를 입력한다. 또한, 플래시 메모리 컨트롤러(5)에는 컨트롤러 제어 회로(112)에 의해, 2개의 데이터 입출력 버퍼(101, 111)의 입출력의 데이터 입출력의 제어를 행하고 있다. 데이터 입출력 버퍼(111)로부터는, 외부 I/O를 통해서 입력된 정보 비트가, 부호 출현 확률 평균화 제1 부호화 회로(106)에 입력되고 있다. 여기서, 참조 부호 106에 입력되는 정보 비트의 비트수를 k0비트로 한다. 이 부호 출현 확률 평균화 제1 부호화 회로(106)는, 예를 들면, 입력 데이터의 "0"과 "1"이 나올 확률을 대략 균등하게 분포되도록 하기 위한 것으로, 없어도 되지만, 있으면 바람직한 회로 블록이다. 이 참조 부호 106으로서는, 예를 들면, 주기 부호 발생 회로나, 특히, k비트보다 짧은 a1비트의 주기를 갖는 M계열(Maxium length code) 발생 회로를 평균화 비트 마스크 발생 회로(110)에 이용하면 된다. 이에 의해 발생한 M계열 부호는, M1 주기에서 "0"과 "1"의 비트가 분산해서 배치되고, 1주기에서 "0", "1"이 동일한 확률로 생성되는 특징을 갖는다. 따라서, 정보 비트를 a1비트마다 순서대로 구획하고, 발생한 M계열의 a1의 각 비트와 배타적 논리합을 취하여, 회로(104)에 출력하며, 또한, 예를 들면, WL마다나 a1의 블록마다 적당한 증가분으로써, 주기 개시 위치를 변화시킨다. 또는 주기 개시 위치가 아니라, a2 비트의 길이의 제2 M계열 부호를 발생시키고, 또한, 정보 비트를 a1비트마다 순서대로 구획하고, 발생한 M계열의 a1의 각 비트와 배타적 논리합을 취한 후에, 정보 비트를 a2비트마다 순서대로 구획하고, 발생한 제2 M계열의 a2의 각 비트와 배타적 논리합을 취한다. 구체적인 예로서는, 2비트의 선형 피드백 레지스터(LFSR:Linear Feedback Shift Register)의 원시 다항식은 x+1이기 때문에, 2비트째(x)와 1비트째(1)의 배타적 논리합을 다음의 부호의 1비트째로 하고, 2비트째를 1비트째로부터 시프트에 의해 얻음으로써, "10", "01", "11"의 22-1=3상태를 얻을 수 있다. 이것에 0벡터인 "00"을 더한 4상태가 M계열로 되기 때문에, 정보 비트를 2비트마다 순서대로 구획하고, "10 01 11 00 10 01 11 00...."으로 순서대로 각 데이터순으로 배타적 논리합을 취하면 된다.On the other hand, the external input / output (I / O) is connected to another data input buffer 111, and inputs address and data control information for writing / erasing / reading the flash memory. In addition, the flash memory controller 5 controls the data input / output of the input / output of the two data input / output buffers 101 and 111 by the controller control circuit 112. The information bits input through the external I / O from the data input / output buffer 111 are input to the code occurrence probability averaging first coding circuit 106. Here, the number of bits of the information bit inputted at the reference numeral 106 is k0 bit. The code appearance probability averaging first coding circuit 106 is, for example, to distribute the probability that "0" and "1" of the input data are equally distributed. As the reference numeral 106, for example, a period code generation circuit or an M series (Maxium length code) generation circuit having a period of a1 bit shorter than k bits may be used for the averaging bit mask generation circuit 110, for example. . The M sequence code thus generated is characterized by having bits of "0 " and " 1 " dispersed in M1 periods, and " 0 " and " 1 " Therefore, the information bits are divided in order for every a1 bit, take an exclusive logical sum with each bit of a1 of the generated M series, and output it to the circuit 104, and, for example, an appropriate increment for each WL or every block of a1. As a result, the cycle start position is changed. Or after generating a second M-series code having a length of a2 bits, not the period start position, further dividing the information bits in order every a1 bits, and taking an exclusive OR with each bit of a1 in the generated M-series, The bits are partitioned in order every a2 bits, and an exclusive OR is performed for each bit of a2 of the generated second M series. As a concrete example, since the raw polynomial of the 2-bit Linear Feedback Shift Register (LFSR) is x + 1, the exclusive OR of the 2nd bit (x) and the 1st bit (1) is 1 bit of the following code. The second bit is obtained by shifting the first bit from the first bit, whereby 2 2 -1 = 3 states of "10", "01", and "11" can be obtained. Since the four states by adding "0", which is a vector of 0, become M series, the information bits are divided in order every two bits, and the order of each data in the order "10 01 11 00 10 01 11 00 ....". You can take an exclusive OR with.

이와 같이 함으로써, 전부 "0"이나 전부 "1"의 입력의 정보 비트라도, WL간이라도 "0"이나 "1"이 적절히 분산된 제1 부호화된 정보 비트가 참조 부호 104에 전달된다. 이에 의해, 랜덤하게 외부 I/O로부터 정보 데이터를 공급한 경우라도, 정보 비트가 "0", "1"로 동일할 확률 P=0.5로 참조 부호 104에 입력되어, 메모리 셀의 인접 메모리 셀 상태를 균일화할 수 있다. 또한, 물론, 평균화 비트 마스크 발생 회로(110)는, 복호 회로(107)에서도 동일한 M계열 회로, 또는 제2 M계열 회로를 공유화함으로써, 복호 회로와 동일하게 발생한 M계열의 a1, a2의 각 비트와 배타적 논리합을 취함으로써, 올바르게 복호화할 수 있다.By doing in this way, the first coded information bits in which "0" or "1" are properly distributed even if they are all information bits of "0" or all "1" inputs are transmitted to reference numeral 104. As a result, even when information data is randomly supplied from the external I / O, the information bits are inputted to the reference numeral 104 with the probability P = 0.5 that is equal to "0" and "1", and thus the adjacent memory cell states of the memory cells. Can be made uniform. Of course, the averaging bit mask generation circuit 110 shares the same M-series circuit or the second M-series circuit in the decoding circuit 107, so that each bit of a1 and a2 of the M-series generated in the same way as the decoding circuit is generated. By taking an exclusive OR with, the decoding can be performed correctly.

또한, 참조 부호 104에서 입력된, "0", "1"로 평균화된 정보 비트는, 인접 메모리 셀 디스터브 저감 제2 부호 변환 회로(104)에서, 인접 메모리 셀에 의한 디스터브가 저감된 정보 비트와 플래그가 부가된 비트열로 되어, 오류 정정 부호 발생 회로(102)에 입력된다. 여기서, 참조 부호 102는, 예를 들면, 일반적으로 알려져 있는 BCH 부호 발생 회로 또는 RS 부호 발생 회로를 이용하면 된다. 예를 들면, 본 발명자들이 일본 특허 공개 2005-243183에서 개시한 BCH 부호화 회로를 이용하면 실현할 수 있으므로 여기서는 생략한다. 이에 의해, 참조 부호 102로부터 오류 정정 부호 출력이 데이터 버퍼(101)를 통해서, 불휘발성 반도체 기억 소자(7)에 기억된다.In addition, the information bits averaged by "0" and "1", inputted at the reference numeral 104, are used by the adjacent memory cell disturbance reduction second code conversion circuit 104 to the information bits of which the disturbance by the adjacent memory cells is reduced. The flag is added to the bit string to be added to the error correction code generation circuit 102. Here, the reference numeral 102 may be, for example, a commonly known BCH code generation circuit or an RS code generation circuit. For example, since the present inventors can realize using the BCH coding circuit disclosed in Japanese Patent Laid-Open No. 2005-243183, the description is omitted here. Thereby, the error correction code output from the reference numeral 102 is stored in the nonvolatile semiconductor memory element 7 via the data buffer 101.

또한, 본 발명은, 물리적으로 인접한 메모리 셀간의 용량 간섭 또는 오기입 문제를 저감하는 부호화를 행하는 발명이므로, 불휘발성 반도체 기억 장치(7)에 공급되는 인접한 시계열의 정보 비트는, 웰 경계, 소스 션트 영역 등을 제외하고 대체로 물리적으로 인접한 메모리 셀에 기입되는 것으로 한다. 적절한 물리-논리 맵핑을 행하면 이러한 부호화가 가능한 것은 물론이다.In addition, since the present invention is an encoding that reduces the capacity interference or the write-in problem between physically adjacent memory cells, the information bits of adjacent time series supplied to the nonvolatile semiconductor memory device 7 are well boundary and source shunt. Except for regions and the like, it is assumed that they are generally written in physically adjacent memory cells. It goes without saying that such coding is possible if proper physical-logical mapping is performed.

한편, 불휘발성 메모리(7)로부터 읽어내어진 오류를 포함할 가능성이 있는 부호열은, 데이터 버퍼(101)를 통해서, 오류 정정 부호를 복호하는 회로(103)에 입력되어, 부호 오류 정정되고, 인접 메모리 셀에 의한 디스터브가 저감된 정보 비트와 플래그가 부가된 비트열로 된다. 이 참조 부호 103에 대해서는, 일반적으로 알려져 있는 BCH 부호 복호 회로 또는 RS 부호 복호 회로를 이용하면 된다. BCH 복호 회로에 대해서는, 예를 들면, 본 발명자들이 일본 특허 공개 2005-23183에서 개시한 BCH 부호화 회로를 이용하면 실현할 수 있으므로 여기서는 생략한다. 마찬가지로 RS 부호도 다원, 2m원(m은 정수)의 BCH 부호의 일종이므로, 복호 회로를 마찬가지로 형성할 수 있는 것은 공지이며 분명하다.On the other hand, a code string that may contain an error read from the nonvolatile memory 7 is input to a circuit 103 that decodes an error correction code through the data buffer 101, thereby correcting the code error, Information bits with reduced disturbance by adjacent memory cells and bit strings with flags are added. As the reference numeral 103, a generally known BCH code decoding circuit or an RS code decoding circuit may be used. The BCH decoding circuit can be realized by, for example, using the BCH coding circuit disclosed in Japanese Patent Laid-Open No. 2005-23183, and is omitted here. Similarly, since the RS code is a kind of BCH code of multiple circles and 2 m circles (m is an integer), it is well known and obvious that a decoding circuit can be similarly formed.

다음으로, 인접 메모리 셀에 의한 디스터브가 저감된 정보 비트와 플래그가 부가된 비트열은, 인접 메모리 셀 디스터브 저감 제2 부호 역변환 회로(105)에 입력되고, 제2 부호 복호화 회로(105)에 의해, 제1 부호를 실시한 정보 비트로 복호된다. 또한, 이 제1 부호를 실시한 정보 비트를 제1 부호 복호화 회로(107)에 입력함으로써, 원래의 정보 비트가 복호된다. 이 정보 비트의 출력이, 데이터 입출력 버퍼(111)를 통해서 외부 I/O에서 데이터가 출력된다.Next, the information bits of which the disturbance by the adjacent memory cells are reduced and the bit string to which the flag is added are input to the neighboring memory cell disturb reduction second code inverse conversion circuit 105, and the second code decoding circuit 105 It is decoded by the information bits given the first code. In addition, the original information bits are decoded by inputting the information bits subjected to the first code into the first code decoding circuit 107. The output of this information bit outputs data from external I / O via the data input / output buffer 111.

또한, 이 제1 부호 복호화 회로(107)는, 상술한 바와 같이, 참조 부호 110에서 발생된 것과 회로(106)에서 이용한 것과 동일한 M계열과 배타적 논리합을 취함으로써, 부호화와 복호화에서 M계열과 배타적 논리합을 2회 취함으로써, 원래의 정보 비트를 복원할 수 있는 것은 분명하다. 도 9에, 예로서, 다양한 정보 비트 패턴에서의 회로(104)의 입력, 및 도중 시퀀스의 상태, 또한, 출력예를 도시한다. "...."이 나타내는 개소는 그 우측의 4비트의 패턴을 주기적으로 반복하고 있는 것으로 한다. 일반적으로, 입력 정보 비트가 k비트인 경우, 회로(106)에서 출현 확률은 평균화되어 있기는 하지만, 모든 정보 비트가 "0", "1"로 임의로 변화하여 취할 수 있는 전체 상태를 생각할 필요가 있다. 즉, 참조 부호 106에서 부호화 및 참조 부호 107에서 복호화할 수 있는 이상, k비트의 정보 비트에서는, 2k개의 상태가 존재하고, 2개의 인접 워드선간에서 2k×2k개 전부의 조합이 존재하고, 그 출현 확률은 회로(106)에 의해 모든 상태에서 대략 평균화되어 있다. 또한, 이하 모든 실시예 내에서, 오류 정정 부호 발생 회로(102), 인접 메모리 셀 디스터브 저감 제2 부호 변환 회로(104), 부호 출현 확률 평균화 제1 부호화 회로(106) 및 오류 정정 부호 복호 회로(103), 인접 메모리 셀 디스터브 저감 제2 부호 변환 회로(105), 제1 부호 복호화 회로(107), 평균화 비트 마스크 발생 회로(110), "01010101....0101"의 배타적 논리합을 취한 후의 "010" 카운터(112), "10101010....1010"의 배타적 논리합을 취한 후의 "010" 카운터(113), "010" 심볼 카운터(108), "101" 심볼 카운터(109), 카운터(116), 카운터(117), 카운터(118), 카운터(119), 정보 비트의 재배열을 행하는 페이지 버퍼(114), 1개의 소스선측의 데이터를 기억하는 페이지 버퍼(115)는, 하드웨어 회로에서 실시해도 되고, 계산 처리 시간이 문제 없으면 소위 소프트웨어나 펌웨어나 그들의 조합으로 실현해도 물론 된다. 또한, 이후의 모든 실시예에서, 간단히 하기 위해 정보 비트수 k비트가 짝수, 예를 들면, 2로 나누어 떨어지는 경우나, 4로 나누어 떨어지는 경우를 나 타내고 있다. 또한, 나누어 떨어지지 않는 비트수의 경우에는, 예를 들면, 4의 배수로 될 때까지 "1"을 부가함으로써 정보 비트를 확대하고, 나누어 떨어지도록 부호화하는 방법을 이용하면 된다. 예를 들면, 정보 비트가 5비트인 "10101"의 경우, 이것을 8비트의 "10101111"(하선이 부가된 확대 부호 부분)로 하면, 2든 4든 나누어 떨어지는 부호로 되는 것은 명백하다. 또한, 부가하는 부호로서는, 부가 부호에 의한 "010" 패턴의 새로운 발생을 방지하기 위해서, "0"보다는 "1" 쪽이 바람직하다.The first code decoding circuit 107, as described above, takes an exclusive OR with the same M-series as those generated by the reference numeral 110 and used in the circuit 106, thereby being exclusive with the M-series in encoding and decoding. It is clear that by taking the logical sum twice, the original information bits can be recovered. In Fig. 9, for example, the input of the circuit 104 in various information bit patterns, and the state of the sequence in the middle, and also an example of output are shown. The position indicated by "...." is supposed to repeat the 4-bit pattern on the right side periodically. In general, when the input information bits are k bits, the probability of appearance in the circuit 106 is averaged, but it is necessary to consider the overall state that all information bits can take arbitrarily varying to "0", "1". have. That is, as long as it can be encoded by reference numeral 106 and decoded by reference numeral 107, 2 k states exist in k-bit information bits, and a combination of all 2 k × 2 k combinations exists between two adjacent word lines. The probability of appearance is roughly averaged in all states by the circuit 106. In addition, in all the embodiments below, the error correction code generation circuit 102, the adjacent memory cell disturb reduction second code conversion circuit 104, the code occurrence probability averaging first coding circuit 106, and the error correction code decoding circuit ( 103), the adjacent memory cell disturb reduction second code conversion circuit 105, first code decoding circuit 107, averaging bit mask generation circuit 110, " 01010101 .... 0101 "&Quot; 010 " counter 113, " 010 " symbol counter 108, " 101 " symbol counter 109, counter 116 after taking exclusive OR of " 010 " counter 112, " 10101010 .... 1010 " ), The counter 117, the counter 118, the counter 119, the page buffer 114 for rearranging information bits, and the page buffer 115 for storing data on one source line side are implemented in a hardware circuit. If the calculation processing time is not a problem, the so-called software, firmware, or a combination thereof may be used. Of course it is. In all the following embodiments, for the sake of simplicity, a case in which the number of information bits k bits is divided by an even number, for example, by 2 or by 4 is shown. In addition, in the case of the number of undivided bits, for example, a method of enlarging the information bits by adding "1" until it becomes a multiple of 4 and encoding them so as to divide them may be used. For example, in the case of " 10101 " having 5 bits of information, if it is " 10101 111 " (an enlarged coded portion with an underline added) of 8 bits, it becomes clear that two or four are divided codes. In addition, as a code to add, in order to prevent the generation | occurrence | production of the "010" pattern by an additional code, "1" is more preferable than "0".

<2. 오류 정정 부호/복호 동작><2. Error Correction Code / Decoding Behavior>

다음으로, 도 7 내지 도 9를 이용해서, 본 실시예 1에 따른 데이터 기억 시스템의 오류 정정 부호/복호 동작에 대해서 설명한다. 도 7에 참조 부호 104의 구체적 시퀀스를 도시한다. 이 설명에서는, 도 7 또는 도 8의 시퀀스에 의거해서 설명한다.Next, the error correction code / decoding operation of the data storage system according to the first embodiment will be described with reference to Figs. A specific sequence of reference numeral 104 is shown in FIG. In this description, description will be made based on the sequence of FIG. 7 or FIG. 8.

제2 부호 변환 회로(104)에서는, 우선, SE1에서, 정보 비트 중의 "010"의 3bit 연속된 심볼의 발생수를 세는 "010" 심볼 카운터(108)와, 정보 비트 중의 "101"의 3bit 연속된 심볼의 발생수를 세는 "101" 심볼 카운터(109)를 리세트하고, 부호화의 상태를 나타내는 플래그1 및 플래그2를 리세트한다. 이후, 예를 들면, "abc" 심볼이란, 정보 비트 또는 부호 내에서, "abc"로 표시되는 연속된 3bit를 나타내는 것으로 한다.In the second code conversion circuit 104, first, in the SE1, a "010" symbol counter 108 for counting the number of occurrences of the symbol "010" in the information bit for three consecutive bits, and a three-bit sequence for the "101" in the information bit. A " 101 " symbol counter 109 that counts the number of occurrences of the generated symbol is reset, and a flag 1 and a flag 2 indicating the state of encoding are reset. In the following, for example, the "abc" symbol indicates a contiguous 3 bit indicated by "abc" in an information bit or a sign.

다음으로, SE2에서, k비트의 정보 비트 중의 "010"의 연속 비트의 개수를 카운트하고 "010" 심볼 카운터(108)에 기억한다. 또한, k비트의 정보 비트 중의 "101"의 연속 비트의 개수를 카운트하고 "101" 심볼 카운터(109)에 기억한다.Next, in SE2, the number of consecutive bits of "010" in the k-bit information bits is counted and stored in the "010" symbol counter 108. The number of consecutive "101" bits in the k-bit information bits is also counted and stored in the "101" symbol counter 109.

예를 들면, "010" 검출 회로는, 도 10과 같이, 정보 비트의 처음부터, 정보 비트와 동기한 클럭에서 시프트 레지스터에 입력하고, "010" 검출 회로를 조합하여, 카운터에서 셈으로써 용이하게 실현할 수 있다. 도 10에서, 참조 부호 208의 Z-1은 1비트의 1단위 시간 지연 소자를 나타내고, 참조 부호 209는 인버터, 참조 부호 210은 3입력 AND 게이트를 나타내고 있다. 또한, 정보 비트는 정보 비트 입력으로부터 일련의 정보 비트를 순서대로 시계열로 입력하는 것으로 한다. "010"이 순서대로 입력된 단위 시간에서, "010" 최후의 "0"이 입력된 단위 시간에서, "010" 출력이 "L"로부터 "H"로 되고, 다른 경우에는 "L"로 된다. 따라서, 이 "010" 출력을 정보 비트 입력의 단위 시간과 동기시키고, 예를 들면, 상기 단위 시간에서 "010" 출력의 논리값이 안정된 부분에서 트리거해서 카운트함으로써, 정보 비트의 "010"의 수를 카운트할 수 있다. "101"의 카운트도 마찬가지로 행할 수 있고, 예를 들면, 도 10의 카운터는 일반적으로 알려지는 바이너리 카운터로 구성하면 되므로, 여기서는 카운터의 상세 내용은 생략한다. 또한, 본 예의 참조 부호 208의 Z-1로 표기되는 1비트의 1단위 시간 지연 소자로서는, 예를 들면, D형 플립플롭이나 래치 회로를 이용해서, 특히, 클럭 입력이 "L"(여기서는 편의적으로 0[V]로 함)로부터 "H"(여기서는 편의적으로 Vcc로 함)로 상승하는 순간에 출력이 확정되고, 그 이후에는 클럭이 "H"인 채로든 "L"인 채로든 "H"로부터 "L"로 변화해도 출력은 변화되지 않는 엣지 트리거(edge trigger)형의 플립플롭으로 하면 용이하게 실현할 수 있다.For example, as shown in Fig. 10, the "010" detection circuit inputs the shift register at the clock synchronized with the information bit from the beginning of the information bit, and easily combines the "010" detection circuit and counts it in the counter. It can be realized. In Fig. 10, Z- 1 of reference numeral 208 denotes a one-bit time delay element of 1 bit, reference numeral 209 denotes an inverter, reference numeral 210 denotes a three-input AND gate. In addition, the information bits are inputted in time series from the information bit input in a series of information bits. In the unit time in which "010" is input in sequence, in the unit time in which "010" is last input, the "010" output is from "L" to "H", and in other cases, "L". . Therefore, this "010" output is synchronized with the unit time of the information bit input, and for example, the number of "010" of the information bits is triggered and counted in a stable portion of the logic value of the "010" output in the unit time. Can be counted. The count of " 101 " can be similarly performed. For example, the counter of Fig. 10 can be constituted by a generally known binary counter, and thus the details of the counter are omitted here. In addition, as a 1-bit unit of time delay element denoted by Z −1 of 208 of the present example, for example, a D-type flip-flop or a latch circuit is used, in particular, the clock input is " L " At 0 [V]) to "H" (here, Vcc for convenience), the output is confirmed, and after that the clock remains "H" or "L" whether it is "H" Can be easily achieved by using an edge trigger type flip-flop whose output does not change even if it changes from " L "

다음으로, SE3에서, 참조 부호 108의 "010" 카운터의 값이 제1 임계값보다 큰지 판단한다. 여기서, 제1 임계값보다 큰 경우, SE4에서, 정보 비트와 제1 비트 마스크 패턴 "01010101....0101"("01"을 k비트분 반복해서 발생시킨 것)과의 배타적 논리합을 취하는 시퀀스를 행하고, 정보 비트로 치환을 행하여, 플래그1을 세트한다. 이 제1 비트 마스크 패턴은, "10"을 k비트분 반복하여 발생시킨, "10101010....1010"을 이용해도 된다. 또한, 제1 임계값은, 정보 비트 중에, 도 9의 (a1) 및 도 9의 (c1)의 가장 "010"이 많은 개수의 (k/2)-1개의 절반을 생각하고, k개가 2나 4로 나누어 떨어지지 않는 경우도 고려하여, {(k/4)를 정수로 잘라 올린 값}-1로 하는 것이, "010"의 부호의 출현수의 상한을 일정값으로 억제하는데 바람직하다.Next, in SE3, it is determined whether the value of the "010" counter of reference numeral 108 is greater than the first threshold value. Here, when greater than the first threshold, a sequence that takes an exclusive OR of the information bit and the first bit mask pattern "01010101 .... 0101" (that is, repeatedly generating "01" for k bits) in SE4. Is performed, the information bit is replaced, and the flag 1 is set. As the first bit mask pattern, " 10101010 .... 1010 " generated by repeatedly generating " 10 " for k bits may be used. In addition, the 1st threshold value considers (k / 2) -1 half of the largest number of "010" of FIG.9 (a1) and FIG.9 (c1) among the information bits, and k is 2 In consideration of the case of not dividing by 4, it is preferable to set {(k / 4) to an integer value} -1 to suppress the upper limit of the number of occurrences of the sign of "010" to a constant value.

또한, SE4를 실시한 경우에는, SE5에서, 정보 비트 중의 "010"의 3bit 연속된 심볼의 발생수를 세는 "010" 심볼 카운터(108)와, 정보 비트 중의 "101"의 3bit 연속된 심볼의 발생수를 세는 "101" 심볼 카운터(109)를 리세트하고, 부호화의 상태를 나타내는 플래그1 및 플래그2를 리세트한다. 또한, SE6에서, k비트의 정보 비트 중의 "010"의 연속 비트의 개수를 카운트하고 "010" 심볼 카운터(108)에 기억한다. 또한, k비트의 정보 비트 중의 "101"의 연속 비트의 개수를 카운트하고 "101" 심볼 카운터(108)에 기억한다.In the case of performing SE4, in the SE5, the "010" symbol counter 108 counts the number of occurrences of the symbol "010" in the information bits, and the occurrence of the symbol "101" in the information bits. The counting " 101 " symbol counter 109 is reset, and a flag 1 and flag 2 indicating the state of encoding are reset. In SE6, the number of consecutive bits of " 010 " in k-bit information bits is counted and stored in the " 010 " The number of consecutive "101" bits in the k-bit information bits is also counted and stored in the "101" symbol counter 108.

다음으로, SE3의 "아니오"라고 판단한 분기와 합류한 후, SE7에서, "010" 심볼 카운터(108)의 값과, "101" 심볼 카운터(109)의 값보다 큰지 판단을 행한다. 여기서, "010" 심볼 카운터(108)의 값이 "101" 심볼 카운터(109)의 값보다 큰 경우에는, SE8에서, k비트의 정보 비트를 전부 비트 반전, 즉 "0" 비트를 "1" 비트, "1" 비트를 "0" 비트로 변화시키고, 플래그2를 세트한다. 다음으로, SE7의 "아니오"라고 판단한 분기와 합류한 후, SE9에서 정보 비트에 플래그1 및 플래그2에 상당하는 부호를 부가한다.Next, after joining the branch determined to be NO in SE3, it is judged in SE7 whether it is greater than the value of the "010" symbol counter 108 and the value of the "101" symbol counter 109. Here, when the value of the "010" symbol counter 108 is larger than the value of the "101" symbol counter 109, in SE8, all of the k-bit information bits are bit inverted, that is, the "0" bit is "1". Bit, "1" bit is changed to "0" bit, and flag 2 is set. Next, after joining the branch determined to be NO in SE7, the symbols corresponding to the flags 1 and 2 are added to the information bits in SE9.

(복호화 회로(105)의 시퀀스) (Sequence of Decoding Circuit 105)

여기서, 도 8에 제2 부호의 복호화 회로(105)의 구체적 시퀀스를 도시한다. 참조 부호 105에서는, 우선, SE10에서, 정보 비트에 부가된 플래그1 및 플래그2에 상당하는 정보를, 예를 들면, 레지스터나 일시 메모리에 기억한다. 다음으로, SE11에서, 플래그2가 세트되어 있는지 판단한 후, 플래그2가 세트되어 있는 경우에는, SE12에서, k비트의 정보 비트를 전부 비트 반전, 즉 "0" 비트를 "1" 비트, "1" 비트를 "0" 비트로 변화시키고, 정보 비트와 치환한다. 다음으로, SE11의 "아니오"라고 판단한 분기와 합류한 후, SE13에서, 플래그1이 세트되어 있는지 판단한다. SE13에서 "예", 즉 플래그1이 세트되어 있는 경우, 정보 비트와 제1 비트 마스크 패턴 "01010101....0101"("01"을 k비트분 반복해서 발생시킨 것)과의 배타적 논리합을 취하는 시퀀스를 행하고, 정보 비트와 치환을 행한다. 이 제1 비트 마스크 패턴은, 참조 부호 104의 부호화 시 "10"을 k비트분 반복해서 발생시킨, "10101010....1010"을 이용한 경우에는, 동일한 "1010101010....1010" 마스크 비트를 이용하면 된다.8 shows a specific sequence of the decoding circuit 105 of the second code. In the reference numeral 105, first, in SE10, information corresponding to the flag 1 and the flag 2 added to the information bit is stored in, for example, a register or a temporary memory. Next, in SE11, after determining whether flag 2 is set, and if flag 2 is set, in SE12, all bits of the information bits of k bits are inverted, that is, "0" bits are "1" bits, and "1". Change the bit to the "0" bit and replace it with the information bit. Next, after joining the branch determined to be NO in SE11, it is determined whether or not Flag 1 is set in SE13. In SE13, if YES, i.e., flag 1 is set, an exclusive logical OR between the information bit and the first bit mask pattern "01010101 .... 0101" (that is, "01" has been repeated for k bits) is obtained. A sequence is taken and information bits and substitutions are made. This first bit mask pattern uses the same "1010101010 .... 1010" mask bits when "10101010 .... 1010" is generated by repeatedly generating "10" for k bits at the time of encoding 104. You can use

여기서, 비교예의 도 2 중의 (iii) 및 (iv)로 도시한, 인접 메모리 셀의 임 계값 전압 상승에 의한 소거 임계값이 증대하는 문제가 발생하는 패턴은, 해당 메모리 셀(α)이 소거 상태, BL 방향으로 인접하는 셀(β, γ)이 기입 상태로 되므로, 비트열로서는 "010"에 상당한다. 여기서, 도 9의 (a1) 내지 (a4)에서 도시하는 바와 같이, 참조 부호 104의 시퀀스가 없는 비교예의 구성에서는, "01010101....0101"의 k비트의 계열에서는, "010"이 [(k/2)-1]개 포함되고, 이 개소분, 인접 메모리 셀의 임계값 전압 상승에 의한 소거 임계값이 증대하는 문제가 큰 확률로 발생한다. 예를 들면, 1개의 메모리 셀α가 도 2의 기입 임계값(v)과의 겹침이 발생하고, 읽어내기 레벨이 기입 임계값이라고 판단하는 임계값을 초과하고, 소거 비트가 기입 비트로 오인식되어 불량일 확률을 p0으로 하면, p0이 충분히 1보다 작은 것으로 해서, [(k/2)-1]×p0의 불량이 발생하거나 한다. 또한, 이 도 9의 (a1)과 도 9의 (c1)이 비교예에서 "010"이 가장 발생하는 최악 패턴이다. 한편, 본 실시예의 참조 부호 104의 시퀀스를 이용함으로써, 도 9의 (a1)과 같이 "010"의 개수는 참조 부호 104에 입력되는 데이터 패턴에서는 [(k/2)-1]개 존재하지만, SE3의 시퀀스를 행함으로써, SE7 전까지에서 "010"의 개수는 {(k/4)를 정수로 잘라올린 값}-1 이하로 억제할 수 있다. 왜냐하면, SE3의 분기에서, SE4로 진행한 경우, "010"의 수는 {(k/4)를 정수로 잘라올린 값}-1보다 많고, 최악의 경우, "010"이 가장 조밀하게 배열된 경우에도, "01010101....01010"이 (k/2)+1 비트 이상 연속된 비트로 점유되게 된다. 따라서, "010" 이외의 패턴, 특히, "000"이 존재하는 비트수는 기껏해야 (k/2)비트보다 적다. 따라서, 정보 비트를 "01010101....0101"의 마스크에서 배타적 논리합을 취한 경우, "000" 비트가 "010" 의 연속 비트로 반전하고 "010"이 증가하는 개소는, 기껏해야 {(k/4)를 정수로 잘라올린 값}-1 이하밖에 증가하지 않는다.Here, the pattern in which the erase threshold value increases due to the increase in the threshold voltage of the adjacent memory cells shown in (iii) and (iv) in FIG. 2 of the comparative example occurs in the erase state. Since the cells β and γ adjacent in the BL direction are in the write state, they correspond to "010" as the bit string. Here, as shown in Figs. 9A to 9A4, in the configuration of the comparative example without the sequence of reference numeral 104, in the k-bit sequence of "01010101 .... 0101", "010" is [ (k / 2) -1], and the problem that the erase threshold value increases by the threshold voltage rise of the adjacent memory cell arises with a large probability. For example, one memory cell α overlaps with the write threshold value v of FIG. 2, the read level exceeds the threshold value determined as the write threshold value, and the erase bit is misrecognized as the write bit and is defective. If the probability is p0, p0 is sufficiently smaller than 1, so that a defect of [(k / 2) -1] × p0 may occur. 9 (a1) and 9 (c1) are the worst case patterns in which "010" occurs most in the comparative example. On the other hand, by using the sequence of reference numeral 104 of the present embodiment, the number of " 010 " exists in the data pattern inputted at reference numeral 104 as shown in Fig. 9A, but [(k / 2) -1] exists. By performing the sequence of SE3, the number of " 010 " before SE7 can be suppressed to {{k / 4) truncated to an integer} -1 or less. Because, in the branch of SE3, when going to SE4, the number of "010" is greater than {(k / 4) truncated to an integer} -1, and in the worst case, "010" is most densely arranged. Even in this case, " 01010101 .... 01010 " is occupied by consecutive bits of (k / 2) + 1 bit or more. Therefore, the number of bits in which the pattern other than "010", especially "000" exists, is at most smaller than (k / 2) bits. Therefore, when the information bit is taken as an exclusive OR in a mask of "01010101 .... 0101", the place where the "000" bit is inverted into a continuous bit of "010" and "010" increases is at most {(k / 4) is increased to less than or equal to the value} -1.

한편, 또한, "010"은 "01010101....0101"과의 마스크에서 배타적 논리합을 취한 경우에는, "010"의 비트의 개시 위치에 따라, "010"이나 "101" 중 어느 하나의 패턴과 배타적 논리합을 취하게 된다. 이들은, 각각, "000", "111"로 변환되기 때문에, 모두 문제로 되는 "010"의 패턴은 전체로서 {(k/4)를 정수로 잘라올린 값}-1 이하로 감소하게 된다. 물론, 정보 비트와의 마스크로서 "01"이 반복된 "01010101....0101"을 이용하는 것이, 가장 정보 비트의 "010"의 패턴을 감소시키는데 유효하다. 그러나, 예를 들면, 웰 컨택트나 소스 션트 컨택트 부분에서는, 더미 메모리 셀이 비트선 방향으로 인접하여, 정보 기억하는 메모리 셀과, 웰 컨택트나 소스 션트 컨택트 부분 사이에, 예를 들면 1개 내지 16개 형성되는 경우가 있다. 예를 들면, 이 더미 셀 부분의 구성에 대해서 본 발명자는, 일본 특허 공개 2007-221084에서 상세하게 설명하고 있으므로, 여기서는 생략한다. 이 경우, 더미 메모리 셀에서는, 정보 데이터에 따라 메모리 셀의 기입 또는 소거가 행하여지지 않기 때문에, 더미 메모리 셀에 인접하는 정보를 기억하는 셀 열의 끝은 "0"이든 "1"이든, 비교예에서 설명한 인접 메모리 셀에 의한 임계값 변화의 문제가 발생하기 어려운 특징을 갖는다. 따라서, 예를 들면, 웰 컨택트나 소스 션트 컨택트 등 메모리 셀의 어레이 구획마다 적절히 "01"의 반복인 "01010101....0101" 또는, "10"의 반복인 "10101010....1010" 중 어느 쪽이든 절환해서 이용해도 물론 상관없으며, 메모리 셀의 상기 어레이 구획마다 정보 비트를 구획한 정보 비트의 부분열 로 하고, 각각의 부분열에 대해서 "010" 및 "101"의 개수를 세어, 각각의 부분열에 대응하는 참조 부호 104로 나타낸 플래그1, 2를 붙여서, 보다 "010"이 출현하는 확률을 감소시켜도 물론 된다. 이것은 후술하는 실시예의 어느 실시예에 적용해도 된다. 상기에 설명한 바와 같이, "010"의 개수가 임계값1보다 많은 경우, "01010101....0101" 또는 "10101010....1010"에서 배타적 논리합을 취함으로써, 정보 비트 중의 "010"의 개수를 최악값으로 비교예[(k/2)-1]의 약 절반인, {(k/4)를 정수로 잘라올린 값}-1 이하로 감소시킬 수 있는 것은, 본 발명자가 발견한 제1 특유한 특징이다. 이상으로부터, 도 7의 시퀀스에 의해, 정보 비트 중의 "010"의 수를 비교예의 최악값인 [(k/2)-1]로부터, {(k/4)를 정수로 잘라올린 값}-1 이하로 억제할 수 있다. 물론, "01010101....0101"과의 비트 마스크에서 배타적 논리합을 취하고 있으므로, 부호화 후에 동일한 비트 마스크에서 배타적 논리합을 취함으로써, 원래의 정보를 복원할 수 있다. 또한, 오류 정정 심볼수를 t로 하면, BCH 부호나 RS 부호의 복호화에는, t의 거의 2승 이상에 비례하는 정보 처리량이 증가하여, 복호 고속화의 문제로 된다. 이것에 비해, 제2 부호화 회로(104), 및 제2 부호 복호화 회로(105)에서는, 기껏해야 부호화 및 복호화에서는, 정보 비트가 길어져도 정보 비트 길이의 1승 정도밖에 증가하지 않는 정보 처리량밖에 필요로 하지 않고, t가 3 이상인 경우, 복호화보다 정보 처리량이 훨씬 적은 BCH 부호나 RS 부호의 부호화에 필요한 LFSR의 시프트의 정보 처리량과 동일한 정도이다. 따라서, 예를 들면, 1000bit보다 긴 부호 길이의 경우라도 제2 부호로의 변환이나 역변환에는 충분히 짧은 시간에 변환할 수 있다.On the other hand, when "010" is taken as an exclusive logical OR from a mask with "01010101 .... 0101", the pattern of either "010" or "101" depending on the start position of the bit of "010". And an exclusive OR. Since these are converted into "000" and "111", respectively, the pattern of "010" which becomes a problem of all decreases to {or less of {(k / 4) cut off to an integer} -1 as a whole. Of course, using "01010101 .... 0101" in which "01" is repeated as a mask with the information bits is effective for reducing the pattern of "010" of the most information bits. However, for example, in the well contact or source shunt contact portion, the dummy memory cells are adjacent in the bit line direction, for example, between 1 and 16 between the memory cell for storing information and the well contact or source shunt contact portion. Dogs may be formed. For example, since the present inventor has described in detail about the structure of this dummy cell part, it abbreviate | omits here. In this case, in the dummy memory cell, since writing or erasing of the memory cell is not performed in accordance with the information data, in the comparative example, the end of the cell column for storing information adjacent to the dummy memory cell is "0" or "1". The problem of threshold value change caused by the adjacent memory cell described above is unlikely to occur. Therefore, for example, "01010101 .... 0101", which is a repetition of "01", or "10101010 .... 1010", which is a repetition of "10", is appropriate for each array section of a memory cell such as a well contact or a source shunt contact. It is of course possible to use either of them by switching, and the information bits are divided into each of the array partitions of the memory cell, and the number of " 010 " and " 101 " It is of course possible to reduce the probability that "010" appears more by attaching flags 1 and 2 indicated by the reference numeral 104 corresponding to the partial string. You may apply this to any Example of the Example mentioned later. As described above, when the number of " 010 " is larger than the threshold value 1, an exclusive OR is performed at " 01010101 .... 0101 " or " 10101010 .... 1010 " The number can be reduced to the value of {(k / 4) truncated to an integer} -1 or less, which is about half of the comparative example [(k / 2) -1] to the worst value. 1 unique feature. From the above, according to the sequence shown in FIG. 7, {(k / 4) is rounded down to an integer from {(k / 2) -1], which is the worst value of the comparative example, in the number of "010" in the comparative example} -1 It can be suppressed below. Of course, since the exclusive OR is taken in the bit mask with "01010101 .... 0101", the original information can be restored by taking the exclusive OR in the same bit mask after encoding. In addition, if the number of error correction symbols is t, decoding of the BCH code or RS code increases the amount of information processing proportional to almost two or more powers of t, resulting in a problem of decoding speedup. On the other hand, in the second coding circuit 104 and the second code decoding circuit 105, at most, in the coding and decoding, only the information processing amount which increases only about one power of the information bit length is required even if the information bits are long. If t is 3 or more, the information processing amount of the shift of the LFSR required for encoding the BCH code or the RS code, which has a much smaller information processing amount than decoding, is about the same. Therefore, for example, even in the case of a code length longer than 1000 bits, it can be converted in a short enough time for the conversion to the second code or the inverse conversion.

도 9의 (a1), (b1), (c1), (d1), (e1)에 다양한 정보 비트의 입력예와, 우단에 "010"의 개수와, "101"의 개수를 도시한다. 다음으로, 도 9의 (a2), (b2), (c2), (d2)에 참조 부호 104 내에서 SE3 후의 상태를 도시한다. 도 9의 (a), 도 9의 (c)에서는, "010"의 수가 임계값1의 {(k/4)를 정수로 잘라올린 값}-1보다 커서, SE3의 분기는 "예"로 되고, SE4에서, 플래그1을 세트하고, 도 9의 (a) 및 도 9의 (c)에서는, SE3의 "010"의 수가 임계값1 이하로 되어, SE3의 분기는 "아니오"로 된다. 다음으로, 도 9의 (a3), (b3), (c3), (d3)에 참조 부호 104에서, SE9 전의 상태를 도시한다.9A, 9B, 1C, 1D, and 1E show examples of inputting various information bits, the number of " 010 " and the number of " 101 " Next, the state after SE3 within the reference numeral 104 is shown in (a2), (b2), (c2) and (d2) of FIG. 9. In Figs. 9A and 9C, the number of "010" is greater than {(k / 4) of the threshold 1, which is rounded up to an integer} -1, and the branch of SE3 is "Yes". Then, in SE4, the flag 1 is set, and in Figs. 9A and 9C, the number of "010" in SE3 is equal to or less than the threshold value 1, and the branch of SE3 is "no". Next, the state before SE9 is shown in (a3), (b3), (c3) and (d3) of FIG. 9 at 104.

여기서, 비교예의 도 2의 (iii) 및 (iv)에서 도시한, 인접 메모리 셀의 임계값 전압 상승에 의한 소거 임계값이 증대하는 문제가 발생하는 패턴은, 해당 메모리 셀(α)이 소거 상태, BL 방향으로 인접하는 셀(β, γ)이 기입 상태로 되므로, 비트열로서 "010"에 상당하고, 비트 반전한 "101"에서는, 상기 비교예의 문제는 발생하지 않는다. 또한, 문제로 되는 "010"으로 되는 비트열은, "101"을 비트 반전한 것이며, SE7에서 "010"의 개수와 "101"의 개수를 비교함으로써, 이 2종류의 패턴의 교체만으로 효과적으로 "010"의 출현 개수를 줄일 수 있다. 여기서, 도 9의 (d1) 내지 (d4)에서, SE8에서 플래그2가 세트되는 예를 도시한다. 도 9의 (d1)에서 도시하는 바와 같이, "0100"을 반복하는 정보 비트의 패턴에서는, (k/4)개의 "010"의 개수와, 0개의 "101"의 개수가 존재한다. 따라서, SE3에서 "아니오"측의 분기를 한 후, SE7에서, "010"의 개수를 카운트한 카운터(108)가 "101"의 개수의 카운트를 한 카운터(109)보다도 많은지 판단하고, "예"의 분기로 진행한다. 다음 으로, SE8에서 전체 비트 반전을 행함으로써, 0개의 "010"의 개수와, (k/4)개의 "101"의 개수로 되므로, 결국, "010"의 개수를 줄일 수 있다. 물론, 미리, SE7에서 "010"의 개수를 카운트한 카운터(108)가 "101"의 개수의 카운트를 한 카운터(109)보다도 많은지 판정하고 있고, "아니오"의 경우에는 비트 반전을 행하지 않으므로, 이 경우에는, "010"의 개수가 증가하는 일은 없다.Here, the pattern in which the erase threshold value increases due to the increase in the threshold voltage of the adjacent memory cells shown in FIGS. 2 (iii) and (iv) of the comparative example is caused to occur in the erase state of the memory cell α. Since the cells β and γ adjacent in the BL direction are in the write state, they correspond to " 010 " as the bit strings, and the problem of the comparative example does not occur in " 101 " In addition, the bit string that becomes "010" in question is a bit inversion of "101". By comparing the number of "010" and the number of "101" in SE7, it is effective only by replacing these two types of patterns. The number of occurrences of 010 "can be reduced. Here, in Fig. 9 (d1) to (d4), an example in which flag 2 is set in SE8 is shown. As shown in (d1) of FIG. 9, in the pattern of information bits that repeat "0100", the number of (k / 4) "010" and the number of "101" exists. Therefore, after branching to the "no" side in SE3, in SE7, it is determined whether the counter 108 which counted the number of "010" is more than the counter 109 which counted the number of "101", and "Yes." Proceed to the branch of ". Next, by performing the whole bit inversion in SE8, the number of zero "010" and the number of (k / 4) "101" becomes, so that the number of "010" can be reduced eventually. Of course, it is determined in advance whether the counter 108 which counted the number of "010" in SE7 is larger than the counter 109 which counted the number of "101", and in the case of "no", bit inversion is not performed. In this case, the number of "010" does not increase.

이상과 같이, 본 실시예 1의 참조 부호 104의 SE7 및 SE8의 시퀀스를 이용함으로써, SE7 전에서 이미 정보 비트 중의 "010"의 수를 {(k/4)를 정수로 잘라올린 값}-1 이하로 억제하고 있으므로, SE8 전까지에서 "010"의 개수는 {(k/4)를 정수로 잘라올린 값}-1 이하이며, 또한, 보다 "010"이 발생하는 정보 비트를 효과적으로 보다 "010"이 발생하지 않는 비트로 변환할 수 있다.As described above, by using the sequence of SE7 and SE8 of reference numeral 104 of the first embodiment, the number of "010" in the information bits has already been truncated before SE7 {(k / 4) to an integer}} Since the number of " 010 " is less than or equal to {(k / 4) to be an integer}}-1 or less before SE8, the number of " 010 " You can convert this into bits that do not occur.

왜냐하면, SE3부터 SE6까지의 시퀀스에서, 각 정보 비트는 마스크 패턴과의 배타적 논리합을 취하고 있을 뿐이므로, 이미 회로(106)에서, 각 정보 비트의 "0"이 나올 확률과 "1"이 나올 확률이 대략 동일하게 평균화된 경우, 참조 부호 104에 입력된 정보 비트 각 정보 비트의 "0"이 나올 확률과 "1"이 나올 확률은 동일하다. 따라서, SE7의 분기에서, 정보 비트의 2의 k멱승의 모든 조합을 생각하는 경우, 카운터(108)가 카운터(109)보다 커질 확률은, 카운터(108)가 카운터(109)보다 작아질 확률과 동일하게 된다. 따라서, SE7 및 SE8을 행함으로써 카운터(108)가 카운터(109)와 일치하는 정보 비트열, 예를 들면, "01010111111111111....1111"과 같은 경우를 제외한, 남은 절반의 경우의 "010"이 발생할 확률을 저감하여, 보다 적은 "010"이 발생하는 정보 비트를 효과적으로 실현할 수 있다.Because, in the sequence from SE3 to SE6, each information bit only takes an exclusive OR with the mask pattern, so in circuit 106, the probability that "0" of each information bit will come out and "1" will come out. When this is averaged approximately equally, the probability that "0" of each information bit and the probability that "1" comes out of the information bits inputted at 104 are equal. Thus, in the branch of SE7, given all combinations of k powers of two of the information bits, the probability that the counter 108 will be larger than the counter 109 is equal to the probability that the counter 108 will be smaller than the counter 109. Will be the same. Thus, by performing SE7 and SE8, the counter 108 has the information bit string matching the counter 109, e.g., "010" in the remaining half except for the case of "01010111111111111 .... 1111". By reducing the probability of this occurrence, it is possible to effectively realize information bits in which fewer "010" occur.

또한, 플래그1 및 플래그2를 정보 비트에 부가하는 방법으로서, 각 플래그를 2비트의 연속하는 데이터로서 정보 비트에 부가하는 방법을 설명하였다. 이 방법은, 플래그1, 2가 어느 상태이든 "010"의 상태가 발생하지 않도록 선택하고 있지만, 물론, 이 이외의 부호화, 예를 들면, 플래그1을 동일 2비트 할당하고, 플래그2를 1비트에 할당하는 방법이라도 된다. 이것은, 도 9에서, 플래그1, 2에 대응하는 비트가 aabb(a, b는 각각 플래그1, 2에 상당하는 "0", "1"의 상태)로 되어 있지만, bbaa, aab나 bba 등 순번을 교체한 것을 플래그에 대응하는 비트로서 부가해도 된다. 물론, 이 플래그에 상당하는 비트는, 정보 비트의 전후에 부가하는 것이 아니라, 예를 들면, 정보 비트를 2개로 나누고, bbaa와 같이 해서 정보 비트 중에 매립해도 된다. 물론 정보 비트를 3개로 나누고, bb, aa를 각각 3개의 정보 비트 사이에 들어가도록 매립해도 된다.Also, as a method of adding the flag 1 and the flag 2 to the information bits, a method of adding each flag to the information bit as two bits of continuous data has been described. This method selects that the state "010" does not occur in any of the states of flags 1 and 2, but of course, encoding other than this, for example, allocates the same 2 bits of flag 1, and flags 2 1 bit. May be assigned to the. In FIG. 9, the bits corresponding to flags 1 and 2 are aabb (a and b are "0" and "1" states corresponding to flags 1 and 2, respectively), but the order of bbaa, aab, bba, etc. May be added as a bit corresponding to the flag. Of course, the bits corresponding to this flag are not added before or after the information bits, but, for example, may be divided into two information bits and embedded in the information bits as bbaa. Of course, the information bits may be divided into three, and bb and aa may be embedded so as to fall between the three information bits.

또한, 오류 정정 부호화한 후에, 검사 비트 (패리티) 비트를 수개로 분할하고, aa, bb와 같이 2개 이상의 동일한 비트로 이루어지는 플래그를 검사 비트 사이에 끼우도록 재배열(인터리브)해도 된다. 이와 같이 하면, 2개 이상의 동일한 비트로 이루어지는 플래그에 접하는 비트는 "010" 패턴으로 될 수 없기 때문에, 보다 검사 비트 부분의 "010" 패턴이 발생할 가능성을 감소할 수 있다.After the error correction coding, the check bit (parity) bits may be divided into several, and may be rearranged (interleaved) so that flags composed of two or more identical bits such as aa and bb are sandwiched between the check bits. In this way, since the bit in contact with the flag consisting of two or more identical bits cannot be in the "010" pattern, the possibility of occurrence of the "010" pattern of the check bit portion can be reduced more.

또한, 도 9의 (e1)-(e4)에 본 실시예에서 "010"이 발생하는 최악의 패턴예를 도시한다. 도 9의 (e1)에 도시하는 바와 같이, (k/2)비트를 "10" 비트 반복한 것으로 하고, (k/2) 비트를 "00"으로 반복한 것으로 한 경우, "010" 패턴의 개수는 (k/4)-1개, "101" 패턴의 개수도 (k/4)-1개로 된다. 따라서, 이 경우, 도 7의 시 퀀스에서는, 플래그1은 리세트, 플래그2도 리세트 상태 그대로이기는 하지만, SE4, SE8, 및 SE4와 SE8의 양방의 시퀀스를 임시로 행한 경우를 도 9의 (e2), (e3), (e4)에서 도시한다. 이 경우, 모두, "010" 패턴의 개수는 (k/4)개나 (k/4)-1개, "101" 패턴의 개수도 (k/4)개나 (k/4)-1개로 되고, 이것으로부터, 만일 SE4 또는 SE8을 행한 경우라도, "010" 패턴의 선택 개수는 (k/4)-1로 되고, 이것이 k비트의 정보 비트 "010" 패턴의 최악 패턴의 일례로 된다. 또한, 이 최악 패턴은, 실시예 3에서 설명하는 방법으로 더욱 개선할 수 있다.9 (e1) to (e4) show an example of the worst pattern in which "010" occurs in this embodiment. As shown in (e1) of FIG. 9, when (k / 2) bits are repeated by "10" bits, and (k / 2) bits are repeated by "00", the "010" pattern The number is (k / 4) -1 and the number of "101" patterns is also (k / 4) -1. In this case, therefore, in the sequence of FIG. 7, although the flag 1 is reset and the flag 2 remains in the reset state, the sequence of SE4, SE8, and both of SE4 and SE8 is temporarily performed is shown in FIG. e2), (e3) and (e4). In this case, in all cases, the number of "010" patterns is (k / 4) or (k / 4) -1, and the number of "101" patterns is also (k / 4) or (k / 4) -1, From this, even if SE4 or SE8 is performed, the number of selections of the "010" pattern is (k / 4) -1, which is an example of the worst case pattern of the k-bit information bit "010" pattern. This worst case pattern can be further improved by the method described in the third embodiment.

또한, 본 실시예 1은, 후술하는 실시예 2, 3에 비해, 카운터(112, 113의) 추가가 필요없어, 보다 회로 규모를 감소시켜, 작은 면적의 회로로 구성할 수 있는 이점을 갖는다.In addition, the first embodiment does not require the addition of the counters 112 and 113, compared to the second and third embodiments described later, and has the advantage that the circuit scale can be further reduced and a circuit having a small area can be configured.

<3. 이 실시예에 따른 효과> <3. Effect according to this embodiment>

이 실시예에 따른 데이터 기억 시스템에 따르면, 적어도 하기 (1) 내지 (2)의 효과가 얻어진다.According to the data storage system according to this embodiment, at least the effects of the following (1) to (2) are obtained.

(1) 예를 들면, "010" 등 부호의 특정한 연패턴에 대하여, 보다 특징을 파악한 오류 정정에 유리하다.(1) For example, it is advantageous for error correction which grasped | ascertained the characteristic with respect to the specific soft pattern of code | symbol, such as "010".

상기한 바와 같이, 본 실시예에서는, k비트의 정보 비트에 대하여, 기껏해야 3비트 내지 4비트, 정보로서는 기껏해야 2bit를 부가하는 것만으로, 효과적으로 "010"이 출현하는 최악 상태수를 [(k/2)-1] 내지 {(k/4)를 정수로 잘라올린 값}-1 이하, 즉 약 절반 이하로 억제할 수 있다.As described above, in the present embodiment, the number of worst-case states in which "010" appears effectively is simply added by adding only 3 bits to 4 bits and at most 2 bits as information for k bits of information bits. k / 2) -1] to {(k / 4) cut to an integer} -1 or less, that is, about half or less can be suppressed.

예를 들면, 도 29 중의 화살표 Y1로 나타내는 바와 같이, "010"의 심볼수가 100개 정도인 경우에, 비교예와 비교해서, "010"이 출현하는 최악 상태수를 절반 이하로 억제할 수 있다.For example, as indicated by arrow Y1 in FIG. 29, when the number of symbols of "010" is about 100, compared with the comparative example, the worst case number in which "010" appears can be suppressed to half or less. .

또한, 제2 부호 변환 회로(104)에 들어가는 정보 비트 중의 "010" 출현수보다도, 반드시, 제2 부호 변환 회로(104)의 출력의 정보 비트 중의 "010"의 출현 개수를 동일하거나 감소시킬 수 있다. 따라서, k비트의 정보 비트가 2k인 상태의 어떠한 상태를 취하려고 하든, 최악 패턴에서 오기입이나 BL 방향의 인접 메모리 셀의 용량 결합에 의한 임계값 상승을 억제할 수 있다. 또한, 플래그 비트의 추가에 대한 부호 길이의 증가량의, 정보 비트 길이 k에 대한 상대 증가량이, 4/k로 상한을 억제할 수 있기 때문에, 이 방법은 정보 비트가 예를 들면 4비트 이상으로 충분히 길어지는 경우에, 특히 "010"이 출현하는 최악 상태수를 억제하는 효과가 크며, 또한, 정보 비트수 k가 증대해도 그 부호화 및 복호화는 기껏해야 k비트에 비례하는 정도밖에 증대하지 않으므로, 고속으로 부호화 및 복호화할 수 있다. 따라서, 인접 메모리 셀의 용량 결합에 의한 기입 임계값 증대를 방지할 수 있어, 전하 유지 시의 터널 절연막의 전계를 감소시키고, 터널 절연막을 통한 리크 전류를 억제하여, 데이터 유지 특성을 악화하는 문제를 완화하는 문제를 방지할 수 있다. 또한, 기입 임계값의 증대를 방지할 수 있기 때문에, 전하 축적층과 제어 전극 사이의, 소위 인터 폴리 절연막의 기입 시나 전하 유지 시의 전계를 억제할 수 있기 때문에, 리크 전류를 억제하여 절연 파괴를 방지하고, 데이터 유지 특성 및 메모리 셀의 신뢰성을 유지할 수 있다. 또한 최악 패턴에서 오기입이나 BL 방향의 인접 메모리 셀의 용량 결합에 의한 임계값 상승을 억제할 수 있으므로, 소거 임계값과, 인접하는 기입 임계값 사이의 임계값 분리 여유를 확보할 수 있다. 예를 들면, 도 2의 기입 임계값1 및 기입 임계값2 사이나, 기입 임계값2와 기입 임계값3 사이의 임계값 분리 여유도 확보할 수 있다. 소거 임계값의 분포가, 인접 메모리 셀간의 용량 결합이나 오기입에 의해 높은 측으로 변동하는 비트수를 억제할 수 있고, 기입 임계값의 유지 후의 특성에서 임계값 저하가 발생하고, 도 2의 (iv)와 (v)와 같이, 임계값 분포의 겹침이 발생하면, 기입 비트를 소거 비트로 오검출이나 오정정하거나, 소거 비트를 기입 비트로 오검출이나 오정정하는 오류 비트의 문제가 발생하지만, 이 문제를 억제할 수 있다.Further, the number of occurrences of "010" in the information bits of the output of the second code conversion circuit 104 can be equal to or reduced than the number of "010" occurrences in the information bits that enter the second code conversion circuit 104. have. Therefore, regardless of the state in which k bits of information bits are 2k , the threshold rise due to capacitive coupling of adjacent memory cells in the BL direction or in the worst-case pattern can be suppressed. In addition, since the upper limit of the increase in the code length for the addition of the flag bit, the increase in the information bit length k, can be suppressed at the upper limit of 4 / k. In the case of lengthening, in particular, the effect of suppressing the worst case number in which " 010 " appears is large, and even if the number of information bits k increases, the encoding and decoding increases at most in proportion to k bits. Can be encoded and decoded using Therefore, it is possible to prevent an increase in the write threshold value due to the capacitive coupling of adjacent memory cells, thereby reducing the electric field of the tunnel insulation film during charge retention, suppressing the leakage current through the tunnel insulation film, and deteriorating data retention characteristics. The problem of mitigation can be prevented. In addition, since the increase in the write threshold value can be prevented, the electric field during the writing or charge holding of the so-called interpoly insulation film between the charge storage layer and the control electrode can be suppressed. And the data retention characteristics and the reliability of the memory cells can be maintained. In addition, in the worst case pattern, the rise of the threshold value due to the write-in and the capacity-combination of adjacent memory cells in the BL direction can be suppressed, so that a margin of separation between the erase threshold value and the adjacent write threshold value can be secured. For example, the threshold separation margin between the write threshold 1 and the write threshold 2 or the write threshold 2 and the write threshold 3 can be ensured. The number of bits whose distribution of the erase threshold fluctuates to the higher side due to capacitive coupling or write-in between adjacent memory cells can be suppressed, and a drop in threshold value occurs in the characteristic after the write threshold value is maintained, and (iv) of FIG. When overlapping threshold distributions occur, as in (v) and (v), the problem of an error bit that incorrectly detects or miscorrects a write bit as an erase bit or incorrectly detects or miscorrects an erase bit as a write bit occurs. can do.

또한, 소거 임계값 하한과 기입 임계값 상한이 인터 폴리 절연막이나 터널 절연막의 신뢰성에 의해, 상하한 범위가 결정되어 있고, 기입 임계값 분포를 좁게 하기 위해서는, 기입 프로그램 전압 스텝을 좁게 할 필요가 있지만, 본 실시예를 이용함으로써, 임계값 분포를 넓게 확보할 수 있고, 보다 기입 스텝을 넓힐 수 있어, 보다 기입 스피드를 향상시킬 수 있다.In addition, the upper and lower ranges of the erase threshold lower limit and the write threshold upper limit are determined by the reliability of the interpoly insulation film and the tunnel insulation film. In order to narrow the write threshold value distribution, it is necessary to narrow the write program voltage step. By using the present embodiment, the threshold value distribution can be secured widely, the writing step can be wider, and the writing speed can be further improved.

(2) 고속 동작에 대하여 유리하다.(2) It is advantageous for high speed operation.

본 실시예 1에서는 오류 정정 부호로서, BCH 부호나 RS 부호를 이용하고 있지만, 이들 부호는 복호화 시에 검사 부호까지 포함한 전체 부호열을 읽어들여 오류 부호와 그 발생 개소를 계산해서 오류 정정을 행한다. 그 때문에, 부호의 최초 부분의 정정을 행하고 나서 출력할 필요 때문에, 부호 정정 회로(103)에 1부호 길이분, 즉, 불휘발성 반도체 장치(7)에 한번에 기억하는 1페이지분의 버퍼를 갖고 있거나 접속되어 있다. 이 페이지 버퍼는 고속으로 수정한 데이터를 읽어내어 출력할 필요 때문에, SRAM이나 시프트 레지스터 등의 고속 읽어내기 가능한 휘발성의 메모리로 형성된다. 따라서, 본 실시예의 제2 부호화의 시퀀스 SE4, SE6, SE8, 및 복호화 시퀀스 SE12, SE14는 상기 페이지 레지스터 상에 카피된 정보 비트에 대하여 행할 수 있기 때문에, 새롭게 페이지 레지스터 회로 면적을 필요로 하지 않어, 고속으로 실현할 수 있다.In the first embodiment, the BCH code or the RS code is used as the error correction code. However, these codes read the entire code string including the check code at the time of decoding, calculate the error code and the occurrence point thereof, and perform error correction. Therefore, since it is necessary to output after correcting the first portion of the code, the code correction circuit 103 has a buffer of one code length, that is, one page stored in the nonvolatile semiconductor device 7 at a time. Connected. Since the page buffer needs to read and output data modified at high speed, the page buffer is formed of a volatile memory that can be read at high speed such as an SRAM or a shift register. Therefore, since the sequence SE4, SE6, SE8, and the decoding sequences SE12, SE14 of the second encoding of the present embodiment can be performed on the information bits copied on the page register, no new page register circuit area is required. It can be realized at high speed.

또한, 오류 정정 부호로서, BCH 부호나 RS 부호가 아니라도, 정보 비트와 검사 비트가 분리되어, 부호어 중에 정보 비트가 포함되어 있는, 소위 분리 부호를 이용하면 본 제2 부호화의 특징은 유지된다. 왜냐하면, 본 실시예는 정보 비트 중의 "010"의 최대 개수를 감소시키는 효과가 있으며, 이것은, 분리 부호이면 부호어에서도 유지되는 특징이기 때문이다. 따라서, 예를 들면, BCH 부호나 RS 부호 대신에 다수결 부호, 즉, 다수결 논리로 복호 가능한 순회 부호에서, 완전 차집합 상의 부호를 이용해도 물론 된다. 또는, 소위, Low-Density-parity-check(LDPC) 부호 중에서도, 정보 비트와 검사 비트가 분리되어 부호어 중에 정보 비트가 포함되어 있는 분리 부호이면, 본 실시예를 이용할 수 있다.In addition, even if it is not a BCH code or an RS code as an error correction code, when the information bit and the check bit are separated and a so-called separated code in which the information bit is included in the codeword is used, the characteristics of the second encoding are maintained. . This is because the present embodiment has the effect of reducing the maximum number of " 010 " in the information bits, which is a feature that is maintained even in code words if it is a separated code. Therefore, for example, instead of the BCH code or the RS code, the code on the full difference may be used in the majority vote code, that is, the cyclic code that can be decoded by the majority vote logic. Alternatively, among the so-called Low-Density-parity-check (LDPC) codes, the present embodiment can be used as long as the information bits and the check bits are separated and the information bits are included in the codeword.

[실시예 2(카운터 회로(112, 113)를 구비하는 일례)]Example 2 (an example including counter circuits 112 and 113)

다음으로, 실시예 2에 따른 데이터 기억 시스템에 대해서, 도 11 내지 도 14를 이용해서 설명한다. 도 11에 본 발명의 실시예 2의 블록도를 도시한다.Next, the data storage system according to the second embodiment will be described with reference to FIGS. 11 to 14. Fig. 11 shows a block diagram of Embodiment 2 of the present invention.

본 실시예는, 실시예 1과 대략 동일이지만, 미리 "01010101....0101" 비트 마스크와 정보 비트의 배타적 논리합을 취하고, 그 결과인 "010"의 패턴수를 세어 정량 비교 판단하고, 부호 비트의 "010"의 개수를 보다 확실하게 줄이도록 하고 있는 점이, 실시예 1과 상이하다. 또한, 실시예 1과 동일한 부분이나 동일한 동작 부분에는, 동일 부호를 붙이고 상세한 설명은 생략한다.This embodiment is substantially the same as the first embodiment, but takes an exclusive logical sum of the "01010101 .... 0101" bit mask and the information bits in advance, quantitatively compares and judges the result by counting the number of patterns of "010" as a result. The difference from the first embodiment is that the number of "010" bits is more surely reduced. In addition, the same code | symbol is attached | subjected to the same part or the same operation part as Example 1, and detailed description is abbreviate | omitted.

또한, 실시예 1과 실시예 2의 구성 상의 차이는, 도 11과 도 4를 비교하면 분명해지는 바와 같이, k-bit의 정보 비트와 "01010101....0101", 즉 "01"을 k비트 반복한 것의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼의 발생수를 세는 심볼 카운터(112)를 갖고 있는 점이다. 또한, k-bit의 정보 비트와 "10101010...1010", 즉 "10"을 k비트 반복한 것의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼의 발생수를 세는 심볼 카운터(113)를 갖고 있는 점이다. 이들에 의해, 실시예 1의 SE4 및 SE8의 부호 변환을 행한 4종류의 경우에 대하여, 미리 각 변환 후의 정보 비트 중의 "010"의 수를 세어 두고, 정량 비교함으로써, 상술한 바와 같이 문제로 되는 "010"의 3bit 연속된 심볼의 출현 확률을 보다 감소시키고 있다.In addition, the difference in the configuration of the first embodiment and the second embodiment is as apparent when comparing Figs. 11 and 4, k-bit information bits and "01010101 .... 0101", that is, "01" k. It has a symbol counter 112 that counts the number of occurrences of a 3-bit contiguous symbol of " 010 " in a bit string that takes an exclusive OR of bit repetition. Also, a symbol counter for counting the number of occurrences of the 3-bit contiguous symbol of "010" in the bit string that takes an exclusive OR of k-bit information bits and "10101010 ... 1010", i.e., repeating k bits of "10" ( 113). Thus, for the four types of code conversion of SE4 and SE8 of the first embodiment, the number of " 010 " The probability of appearance of a 3-bit consecutive symbol of "010" is further reduced.

<제2 부호 변환 회로(104)의 오류 정정 부호의 시퀀스><Sequence of Error Correction Codes of Second Code Conversion Circuit 104>

도 12에 실시예 2의 참조 부호 104의 구체적 시퀀스를 도시한다.12 shows a specific sequence of the reference numeral 104 of the second embodiment.

참조 부호 104에서는, 우선, SE15에서, 정보 비트 중의 "010"의 3bit 연속된 심볼의 발생수를 세는 "010" 심볼 카운터(108)와, 정보 비트 중의 "101"의 3bit 연속된 심볼의 발생수를 세는 "101" 심볼 카운터(109), 심볼 카운터(112 및 113)를 리세트하고, 부호화의 상태를 나타내는 플래그1 및 플래그2를 리세트한다.In the reference numeral 104, first, in the SE15, a "010" symbol counter 108 that counts the number of occurrences of the symbol "010" in the information bit, and the number of occurrences of the symbol "101" in the information bit, which are three bits in sequence. The " 101 " symbol counter 109 and the symbol counters 112 and 113 that count the numbers are reset, and a flag 1 and a flag 2 indicating the encoding state are reset.

다음으로, SE16에서, k비트의 정보 비트 중의 "010"의 연속 비트의 개수를 카운트하고 "010" 심볼 카운터(108)에 기억한다.Next, in SE16, the number of consecutive bits of "010" in the k-bit information bits is counted and stored in the "010" symbol counter 108.

또한, k비트의 정보 비트 중의 "101"의 연속 비트의 개수를 카운트하고 "101" 심볼 카운터(109)에 기억한다. 또한, k비트의 정보 비트와, "01010101....0101", 즉 "01"을 k비트 반복한 것과의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼수를 카운트하고, 심볼 카운터(112)에 기억한다. 또한, k비트의 정보 비트와, "10101010....1010", 즉 "10"을 k비트 반복한 것과의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼수를 카운트하고, 심볼 카운터(113)에 기억한다.The number of consecutive "101" bits in the k-bit information bits is also counted and stored in the "101" symbol counter 109. Further, the number of consecutive 3-bit symbols of " 010 " in the bit string obtained by performing an exclusive OR between k bits of information bits and " 01010101 .... 0101 " It stores in the counter 112. Further, the number of consecutive 3-bit symbols of " 010 " in the bit string obtained by performing an exclusive OR between k bits of information bits and " 10101010 .... 1010 " It is stored in the counter 113.

<카운터(112, 113)의 구성예> <Configuration example of counters 112 and 113>

예를 들면, 본 예에 따른 카운터(112) 및 카운터(113)의 구성예는, 도 13과 같이 도시된다. 도시하는 바와 같이, 카운터(112) 및 카운터(113)는, 정보 비트의 처음부터, 시프트 레지스터에 입력하고, "000" 검출 회로와 "111" 검출 회로를 조합하여, 카운터에서 셈으로써 실현할 수 있다. 도 13에서 참조 부호 212는 2입력 AND 회로를, 참조 부호 214는 2입력 0R 회로를 나타내고 있다. 도 13의 상기 2개의 카운터(108, 109)에 접속된 회로는, 도 10에서 설명한 회로와 동일하므로, 여기서는 생략한다. 정보 비트는 정보 비트 입력보다 일련의 정보 비트를 순서대로 시계열로 입력하는 것으로 한다. 도 13에서, 카운터(112)에 접속된 "000" 출력이라고 기입한 회로에서는, "000"이 순서대로 입력된 단위 시간에서, "000" 출력이 "L"로부터 "H"로 되고, 다른 경우에는 "L"로 된다. 이 "000"은, "010"의 3bit 연속된 정보 비트와, "01010101....0101" 비트 마스크 중의 "010" 마스크에서 배타적 논리 합을 취한 경우에 상당한다. 또한, 카운터(112)에 접속된 "111" 출력이라고 기입한 회로에서는, "111"이 순서대로 입력된 단위 시간에서, "111" 출력이 "L"로부터 "H"로 되고, 다른 경우에는 "L"로 된다. 이 "111"은, "010"의 3bit 연속된 정보 비트와, "01010101....0101" 비트 마스크 중의 "101" 마스크에서 배타적 논리합을 취한 경우에 상당한다. 여기서, 정보 비트를 주는 클럭을 1/2 분주기(213)에서 분주하면, 그 출력은, 예를 들면, 정보 비트의 x비트째로서, x비트의 짝수 홀수에서 "1", "0"이 각각 출력된다. 따라서, 심볼 카운터(112)에 전기적으로 접속된 입력은, 예를 들면, ("000" 출력의 논리가 "H"이며, 또한, x비트째가 홀수인 경우)와, ("000" 출력의 논리가 "H"이며, 또한, x비트째가 짝수인 경우)의 논리합으로 되고, 이것은, 정보 비트와, "01010101....0101"의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼이 존재하는 경우에 3연속 심볼의 최후의 심볼이 입력된 단위 시간에서 "H", 그 이외의 경우에 "L"로 된다. 한편, 심볼 카운터(113)에 전기적으로 접속된 입력은, 예를 들면, ("111" 출력의 논리가 "H"이며, 또한, x비트째가 홀수인 경우)와, ("000" 출력의 논리가 "H"이며, 또한, x비트째가 짝수인 경우)의 논리합으로 된다. 이것은, 정보 비트와, "10101010....1010"의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼이 존재하는 경우에 3연속 심볼의 최후의 심볼이 입력된 단위 시간에서 "H", 그 이외의 경우에 "L"로 된다. 따라서, 이들 2입력 OR 회로(214)의 출력을 정보 비트 입력의 단위 시간과 동기시켜, 예를 들면, 상기 단위 시간에서 OR 출력의 논리값이 안정된 시점에서 트리거해서 카운트함으로써, "01010101....0101", 즉 "01"을 k비트 반복한 비트열과의 배타적 논리합 을 취한 비트열 중의 "010"의 3bit 연속된 심볼수를 심볼 카운터(112)에서 카운트할 수 있으며, 또한, k비트의 정보 비트와, "10101010....1010", 즉 "10"을 k비트 반복한 비트열의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼수를 심볼 카운터(113)에서 카운트할 수 있다. 예를 들면, 도 13의 카운터는 일반적으로 알려지는 바이너리 카운터로 구성하면 되므로, 여기서는 카운터의 상세 내용은 생략한다.For example, the structural example of the counter 112 and the counter 113 which concern on this example is shown like FIG. As shown in the figure, the counter 112 and the counter 113 are inputted to the shift register from the beginning of the information bit, and can be realized by combining the "000" detection circuit and the "111" detection circuit and counting them in the counter. . In Fig. 13, reference numeral 212 denotes a two-input AND circuit, and reference numeral 214 denotes a two-input 0R circuit. The circuits connected to the two counters 108 and 109 in FIG. 13 are the same as the circuits described in FIG. The information bits are inputted in time series in a sequence of information bits rather than information bit inputs. In Fig. 13, in the circuit written as the "000" output connected to the counter 112, the "000" output goes from "L" to "H" at a unit time in which "000" is sequentially input. Becomes "L". This " 000 " corresponds to a case where an exclusive logical sum is taken from a 3-bit consecutive information bit of " 010 " and a " 010 " mask in a " 01010101 .... 0101 " bit mask. Further, in the circuit written as "111" output connected to the counter 112, the output of "111" becomes "H" from "L" in the unit time input of "111" in order, and in other cases " L ". This " 111 " corresponds to a case where an exclusive logical OR is taken from a 3-bit consecutive information bit of " 010 " and a " 101 " mask in a " 01010101 .... 0101 " bit mask. Here, when the clock giving the information bits is divided by the 1/2 frequency divider 213, the output thereof is, for example, the x-th bit of the information bit, where "1" and "0" are even in an odd number of x-bits. Are output respectively. Therefore, the input electrically connected to the symbol counter 112 is, for example, (when the logic of the "000" output is "H" and the x bit is odd), and the "000" output. The logic is " H " and the x bit is an even number), which is a 3-bit sequence of " 010 " in an information bit and a bit string in which an exclusive logical sum of " 01010101 .... 0101 " In the case where the symbol is present, the last symbol of the three consecutive symbols is " H " in the input unit time, otherwise it is " L ". On the other hand, the input electrically connected to the symbol counter 113 is, for example, (when the logic of the "111" output is "H" and the x bit is odd) and ("000" output of the The logic is " H " and the logical sum of the case where the x-bit is even. This means that in the unit time at which the last symbol of the three consecutive symbols is input in the case where there are three bit consecutive symbols of "010" in the bit string in which the information bits and the exclusive logical sum of "10101010 .... 1010" exist, "H" ", Otherwise, it is" L ". Therefore, by synchronizing the outputs of these two-input OR circuits 214 with the unit time of the information bit input, for example, by triggering and counting when the logic value of the OR output is stable at the unit time, the " 01010101 ... The symbol counter 112 can count the number of consecutive bits of " 010 " in the bit string in which the exclusive logical sum of the .0101 ", i.e., " 01 " The symbol counter 113 can count the number of consecutive bits of " 010 " in the bit string in which an exclusive logical sum of bits and "10101010 .... 1010", that is, "10" is k-bit repeated. . For example, since the counter of FIG. 13 should just be comprised with the well-known binary counter, the detail of a counter is abbreviate | omitted here.

다음으로, SE17에서, 카운터(108)와 카운터(109)의 최소값이, 카운터(112)와 카운터(113)의 최소값보다 큰지 판단한다.Next, in SE17, it is determined whether the minimum values of the counter 108 and the counter 109 are larger than the minimum values of the counter 112 and the counter 113.

여기서, SE17에서 "예"인 경우, SE18에서, 정보 비트와 제1 비트 마스크 패턴 "01010101....0101"("01"을 k비트분 반복해서 발생시킨 것)의 배타적 논리합을 취하는 시퀀스를 행하고, 정보 비트와 치환을 행하고, 플래그1을 세트한다.Here, in the case of "Yes" in SE17, in SE18, a sequence that takes an exclusive logical OR of the information bits and the first bit mask pattern "01010101 .... 0101" (that "01" is generated by k bits repeatedly) is taken. Information bits and replacements are performed, and flag 1 is set.

다음으로, SE19에서, 심볼 카운터(112)의 값과, 심볼 카운터(113)의 값보다 큰지 판단을 행한다.Next, in SE19, it is determined whether the value of the symbol counter 112 is greater than the value of the symbol counter 113.

여기서, 심볼 카운터(112)의 값이 심볼 카운터(113)의 값보다 큰 경우에는, SE20에서, k비트의 정보 비트를 전부 비트 반전, 즉 "0" 비트를 "1" 비트, "1" 비트를 "0" 비트로 변화시키고, 플래그2를 세트한다.Here, when the value of the symbol counter 112 is larger than the value of the symbol counter 113, in SE20, all bits of the information bits of k bits are inverted, that is, "0" bits are "1" bits, and "1" bits. Is changed to the "0" bit, and flag 2 is set.

다음으로, SE23에서 정보 비트에 플래그1 및 플래그2에 상당하는 부호를 부가한다.Next, in SE23, codes corresponding to flags 1 and 2 are added to the information bits.

한편, SE17의 "아니오"라고 판단한 경우에는, SE21에서, "010" 심볼 카운터(108)의 값과, "101" 심볼 카운터(109)의 값보다 큰지 판단을 행한다.On the other hand, if it is determined "NO" of SE17, it is judged in SE21 whether it is larger than the value of the "010" symbol counter 108 and the value of the "101" symbol counter 109.

여기서, "010" 심볼 카운터(108)의 값이 "101" 심볼 카운터(109)의 값보다 큰 경우에는, SE22에서, k비트의 정보 비트를 전부 비트 반전, 즉 "0" 비트를 "1" 비트, "1" 비트를 "0" 비트로 변화시키고, 플래그2를 세트한다.Here, when the value of the "010" symbol counter 108 is larger than the value of the "101" symbol counter 109, in SE22, all of the k-bit information bits are bit inverted, that is, the "0" bit is "1". Bit, "1" bit is changed to "0" bit, and flag 2 is set.

다음으로, SE23에서 정보 비트에 플래그1 및 플래그2에 상당하는 부호를 부가한다.Next, in SE23, codes corresponding to flags 1 and 2 are added to the information bits.

이상의 시퀀스를 거침으로써, 실시예 1의 SE4 및 SE8의 부호 변환을 행한 4종류의 경우에 대하여, 미리 각 변환 후의 정보 비트 중의 "010"의 수를 세어 두고, 정량 비교함으로써, 전술한 바와 같이 문제로 되는 "010"의 3bit 연속된 심볼의 출현 확률을 보다 감소시키고 있다. 또한, 본 실시예의 제2 부호의 복호화는 실시예 1에서 설명한 방법을 이용하면 되므로 여기서는 생략한다.Through the above sequence, in the four cases in which the code conversion of SE4 and SE8 of the first embodiment is performed, the number of " 010 " The probability of appearance of a 3-bit consecutive symbol of " 010 " The decoding of the second code of the present embodiment may be omitted since the method described in Embodiment 1 can be used.

여기서, 비교예의 도 2 중의 (iii) 및 (iv)에서 도시한, 인접 메모리 셀의 임계값 전압 상승에 의한 소거 임계값이 증대하는 문제가 발생하는 패턴은, 해당 메모리 셀(α)이 소거 상태, BL 방향으로 인접하는 셀(β, γ)이 기입 상태로 되므로, 비트열로서는 "010"에 상당한다. 여기서, 도 9의 (a1) 내지 (a4)에서 도시하는 바와 같이, 참조 부호 104의 시퀀스가 없는 비교예의 구성에서는, "01010101....0101"의 k비트의 계열에서는, "010"이 [(k/2)-1]개 포함되고, 이 개소분, 인접 메모리 셀의 임계값 전압 상승에 의한 소거 임계값이 증대하는 문제가 큰 확률로 발생한다. 예를 들면, 1개의 메모리 셀α가 도 2의 기입 임계값(v)과의 겹침이 발생하고, 읽어내기 레벨이 기입 임계값이라고 판단하는 임계값을 초과하고, 소거 비트가 기입 비트로 오인식되어 불량일 확률을 p0으로 하면, p0이 충분히 1보다 작은 것으로 하여, [(k/2)-1]×p0의 불량이 발생한다.Here, the pattern in which the erase threshold value increases due to the increase in the threshold voltage of the adjacent memory cells shown in (iii) and (iv) in FIG. 2 of the comparative example is generated in the erase state. Since the cells β and γ adjacent in the BL direction are in the write state, they correspond to "010" as the bit string. Here, as shown in Figs. 9A to 9A4, in the configuration of the comparative example without the sequence of reference numeral 104, in the k-bit sequence of "01010101 .... 0101", "010" is [ (k / 2) -1], and the problem that the erase threshold value increases by the threshold voltage rise of the adjacent memory cell arises with a large probability. For example, one memory cell α overlaps with the write threshold value v of FIG. 2, the read level exceeds the threshold value determined as the write threshold value, and the erase bit is misrecognized as the write bit and is defective. If the probability is p0, p0 is sufficiently smaller than 1, and a defect of [(k / 2) -1] × p0 occurs.

여기서, 실시예 1보다도 실시예 2에서, 보다 "010"의 3비트열이 생길 확률을 작게 할 수 있는 예를 도 14(a)에 도시한다.Here, Fig. 14A shows an example in which the probability of generating a three-bit string of "010" can be made smaller in Example 2 than in Example 1. FIG.

도 14(a)와 같이, 실시예 2의 참조 부호 104에 입력되는 데이터 패턴에서는, "010"의 연속되는 3비트 심볼이 발생하는 개수는 카운터(108)에 기억되고 (k/4)-1개, "101"의 연속하는 3비트 심볼이 발생하는 개수는 카운터(109)에 기억되고 (k/4)-1개, "01010101....0101", 즉 "01"을 k비트 반복한 것과의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼수는 카운터(112)에 기억되고 0개, "10101010....1010", 즉 "10"을 k비트 반복한 비트열과의 배타적 논리합을 취한 비트열 중의 "010"의 3bit 연속된 심볼수는 카운터(113)에 기억되고 1개로 된다. 따라서, 실시예 1의 참조 부호 104의 시퀀스에서는, 참조 부호 104 출력에서 "010"이 발생하는 심볼의 개수는 (k/4)-1개인 상태 그대로이지만, 본 실시예의 참조 부호 104의 시퀀스를 이용함으로써, 참조 부호 104 출력에서 "010"이 발생하는 심볼의 개수를 0개로 감소시킬 수 있다. 물론, 실시예 1의 (1), 및 (2)의 효과는 본 실시예에서도 얻을 수 있다.As shown in Fig. 14 (a), in the data pattern inputted by the reference numeral 104 of the second embodiment, the number of occurrences of consecutive three-bit symbols of "010" is stored in the counter 108 (k / 4) -1. Number of consecutive three-bit symbols of " 101 " is stored in the counter 109, and k bits of (k / 4) -1, " 01010101 .... 0101 ", i.e., " 01 " The number of consecutive 3-bit symbols of " 010 " in the bit string obtained by the exclusive OR with the bit string is stored in the counter 112, and 0, " 10101010 .... 1010 " The number of consecutive 3-bit symbols of " 010 " in the bit string obtained by the exclusive logical sum is stored in the counter 113 and is one. Therefore, in the sequence of the reference numeral 104 of the first embodiment, the number of symbols for which "010" occurs in the output of the reference numeral 104 remains as (k / 4) -1, but the sequence of the reference numeral 104 of the present embodiment is used. Thus, the number of symbols for which "010" occurs in the output of the reference numeral 104 can be reduced to zero. Of course, the effect of (1) and (2) of Example 1 can also be obtained in a present Example.

또한, 물론, 본 실시예의 각 카운터의 비교에서는, 실시예 1과 동일한 마스크 비트와 비트 반전 패턴의 4종류의 경우에 대해서, SE3의 비교보다도, 보다 "010"의 3연속 심볼의 출현 개수를 정확하게 비교한 것이므로, 예를 들면, 도 9의 (a)나 도 9의 (c)와 같이, 비교예의 "010"이 최악 [(k/2)-1]개 발생하는 경우라도, 동일하게 {(k/4)를 정수로 잘라올린 값}-1 이하로 억제할 수 있는 것은 명백하다. 예를 들면, 1개의 메모리 셀α가 도 2의 기입 임계값(v)과의 겹침이 발생하고, 읽어내기 레벨이 기입 임계값이라고 판단하는 임계값을 초과하고, 소거 비트가 기입 비트로 오인식되어 불량일 확률을 p0으로 하면, p0이 충분히 1보다 작은 것으로 해서, 비교예의 [(k/2)-1]×p0의 불량이 발생할 확률을, [{(k/4)를 정수로 잘라올린 값}-1]×p0까지 저하시킬 수 있다. 이 실시예 2의 경우의 "010"의 3연속 심볼의 출현 개수가 가장 증가하는 최악 패턴의 일례는, 도 9의 (e)와 같은 비트열로 된다.Of course, in the comparison of the counters of the present embodiment, in the case of four kinds of mask bits and bit inversion patterns similar to those of the first embodiment, the number of occurrences of the three consecutive symbols of "010" is more accurately compared to the comparison of SE3. Since it is a comparison, for example, even if "010" of a comparative example generate | occur | produces the worst [(k / 2) -1] like FIG. 9 (a) and FIG. 9 (c), {( It is clear that k / 4) can be suppressed below the value} -1 cut out to an integer. For example, one memory cell α overlaps with the write threshold value v of FIG. 2, the read level exceeds the threshold value determined as the write threshold value, and the erase bit is misrecognized as the write bit and is defective. If the probability of p0 is set to p0, p0 is sufficiently smaller than 1, and the probability that a defect of [(k / 2) -1] × p0 of the comparative example occurs is [{(k / 4) cut off to an integer}} -1] x p0 can be reduced. An example of the worst case pattern in which the number of occurrences of the three consecutive symbols of "010" in the case of the second embodiment increases most is a bit string as shown in Fig. 9E.

[실시예 3(페이지 버퍼(114)를 더 구비하는 일례)]Example 3 (an example further comprising a page buffer 114)

다음으로, 실시예 3에 따른 데이터 기억 시스템에 대해서, 도 15 내지 도 19를 이용해서 설명한다. 우선, 본 발명의 실시예 3의 전체 구성예를 도 15에 도시한다.Next, a data storage system according to the third embodiment will be described with reference to FIGS. 15 to 19. First, the whole structural example of Example 3 of this invention is shown in FIG.

이 실시예 3에 따르면, 상기 실시예 2의 실시 외에, 또한, "010"의 3bit의 연속 심볼의 출현 개수를 줄일 수 있다. 실시예 1이나 실시예 2와 동일한 부분이나 동일한 동작 부분에는, 동일 부호를 붙이고 상세한 설명은 생략한다. 이하, 설명이나 도면에서는, 정보 비트의 k비트 중을 시계열로 입출력을 하는 경우를 상정하고, 시계열의 최초부터 세어 짝수번째의 비트를 짝수 비트, 홀수번째의 비트를 홀수 비트라고 간략 표현한다.According to the third embodiment, in addition to the above-described second embodiment, the number of occurrences of the 3-bit continuous symbol of "010" can be reduced. The same reference numerals are attached to the same portions or the same operation portions as those of the first and second embodiments, and detailed description thereof is omitted. In the following description and drawings, it is assumed that input / output of k bits of information bits is performed in a time series, and the even-numbered bits are even-numbered bits and the odd-numbered bits are odd bits.

실시예 2와 실시예 3의 구성 상의 차이는, 도 11과 도 15를 비교하면 분명해지는 바와 같이, 정보 비트의 짝수 비트와 홀수 비트의 재배열을 행하는 페이지 버퍼(114)를 더 갖고 있는 점이다. 본 실시예에서는 실시예 2에서 제2 부호화 외에, 페이지 버퍼(114)를 이용해서, 다시 정보 비트를 1번째, 3번째, 5번째, ...., (k-1)번째의 홀수번째의 비트와 2번째, 4번째, 6번째, ...., k번째의 짝수번째의 비트로 나누고, 홀수번째의 정보 비트를 순서대로 오류 정정 부호 회로(102)에 출력한 후에, 짝수번째의 정보 비트를 순서대로 재배열해서 오류 정정 부호 회로(102)에 출력하고, 복호 시에는 제2 부호 복호화 회로(105)에서 반대로 재배열함으로써, 보다 "010"의 3비트의 연속 심볼을 줄이는 것이다. 또한, 본 실시예에서는, 그 특징상, 정보 비트의 총수의 k비트를 짝수인 것으로 전제하지만, 통상의 NAND 입출력, 도 15의 제1 내부 I/O선에서의 데이터 전달은 1바이트(=8비트)×정수배의 단위의 데이터 입출력이 행하여지므로 실용상 문제는 없고, 홀수 비트의 경우에는 실시예 1 내에서 설명한 방법으로 확장 부호를 형성하면 된다.The difference in configuration between the second embodiment and the third embodiment is that it further has a page buffer 114 for rearranging even and odd bits of information bits, as will be apparent when comparing Figs. 11 and 15. . In the present embodiment, in addition to the second encoding in the second embodiment, the page bits 114 are used again, and the information bits of the first, third, fifth, ..., and (k-1) th odd numbers are After dividing the bit into 2nd, 4th, 6th, ..., and kth even bits, and outputting the odd information bits to the error correction code circuit 102 in order, the even information bits Are rearranged in order and output to the error correction code circuit 102, and in the case of decoding, the second code decoding circuit 105 rearranges them in reverse, thereby further reducing three consecutive symbols of "010". In the present embodiment, the characteristics assume that the total number of information bits is an even number of k bits, but the data transfer in the normal NAND input / output and the first internal I / O line in Fig. 15 is 1 byte (= 8). Since data input / output is performed in units of bits) × integer, there is no problem in practical use, and in the case of odd bits, an extension code may be formed by the method described in the first embodiment.

정보 비트의 상술한 재배열을 행하는 페이지 버퍼(114)는, 예를 들면, 인접 메모리 셀의 디스터브를 저감하는 제2 부호 변환 회로(104)에 접속되며, 또한, 인접 메모리 셀의 디스터브를 저감하는 제2 부호 역변환 회로(105)에 접속된다. 또한, 이 페이지 버퍼(114)는 적어도 정보 비트수와 동일한 k-bit의 페이지 버퍼로 이루어지고, 예를 들면, 오류 정정 복호 회로(103)에서 이용되는 n-bit의 시프트 레지스터의 플립플롭을 공통으로 이용해서, 회로 규모를 축소할 수 있다. 물론, 회로 규모를 축소할 필요가 없는 경우에는, 오류 정정 복호 회로(103)에서 이용되는 n-bit의 시프트 레지스터와 별도로 형성해도 된다.The page buffer 114 for reordering the information bits described above is connected to, for example, a second code conversion circuit 104 which reduces disturbance of adjacent memory cells, and further reduces the disturbance of adjacent memory cells. The second code inverse transform circuit 105 is connected. In addition, the page buffer 114 is composed of a page buffer of at least k-bit equal to the number of information bits, for example, a flip-flop of an n-bit shift register used in the error correction decoding circuit 103 is common. It can be used to reduce the circuit scale. Of course, when it is not necessary to reduce the circuit scale, it may be formed separately from the n-bit shift register used in the error correction decoding circuit 103.

<페이지 버퍼(114)의 구체적인 회로예><Specific Circuit Example of Page Buffer 114>

도 16의 (a), 및 도 16의 (b)는 본 실시예의 페이지 버퍼(114)의 구체적인 회로예이다. 도면을 알기 쉽게 하기 위해서, 도 16의 (a)에서는, 정보 비트를 1번째, 3번째, 5번째, ...., (k-1)번째의 홀수번째의 비트와 2번째, 4번째, 6번째, ...., k번째의 짝수번째의 비트로 분리해서 오류 정정 부호 회로(102)에 출력하는 회로 부분은 생략하고, 이 부분은 도 16의 (b)에서 도시하고 있다.16A and 16B are specific circuit examples of the page buffer 114 of this embodiment. In order to make the drawing easier to understand, in Fig. 16A, the information bits are assigned to the 1st, 3rd, 5th, ..., the (k-1) odd bits and the 2nd, 4th, The portion of the circuit which is separated into the sixth, ..., and k-th even bits and output to the error correction code circuit 102 is omitted, and this portion is shown in Fig. 16B.

또한, 도 16의 (a)의 Q2, Q3으로 되는 트랜지스터와 배선을 도 16의 (b)의 상당 부분에 적용함으로써, 전체의 회로 구성으로 되도록 하고 있다. 또한, Q1 내지 Q8로서는, NMOS 트랜지스터를 예로 하고 있지만, 물론, 입력을 반전하면 PMOS 트랜지스터이어도 되고, 후술하는 쌍방향성 스위치를 이용해도 물론 된다.In addition, the transistors and wirings as Q2 and Q3 in FIG. 16A are applied to a substantial portion in FIG. 16B, so that the entire circuit configuration is achieved. In addition, as Q1 to Q8, an NMOS transistor is taken as an example, of course, if an input is inverted, a PMOS transistor may be sufficient and a bidirectional switch mentioned later may of course be used.

도 16의 (a)에서는, 오류 정정 복호 회로(103)에서 이용되는 n-bit의 시프트 레지스터의 일부를 상정하고, k-bit의 D형 플립플롭(208a, 208b)을, Q1을 통해서 직렬 접속함으로써 정보 비트수와 동일한 k-bit 시프트 레지스터를 형성하고 있다. 여기서, 참조 부호 208a, 208b로서는 D형 플립플롭을 이용하였지만, 물론 래치 회로나, 다른 플립플롭 회로로 회로를 형성해도 된다. 여기서는, D형 플립플롭으로서, △표의 클럭 입력의 펄스 상승 시에, 클럭 입력이 "L"(여기서는 편의적으로 0[V]로 함)로부터 "H"(여기서는 편의적으로 Vcc로 함)로 상승하는 순간에, Q출력이 D입력에 들어간 데이터로 확정하고, 그 이후는 클럭이 "H"인 상태 그대로이든 "L"인 상태 그대로이든 "H"로부터 "L"로 변화해도 출력은 변화하지 않는 엣지 트리거(edge trigger)형의 플립플롭으로 한다. Q1의 게이트 전극은, S1이라고 기입한 입력에 공통 접속되어 있다. S1을 예를 들면 0V로부터 Vcc로 하고, 차단 상태로부터 도통 상태로 함으로써, i를 1 내지 (k-1)의 정수로 해서, 직렬 접속된 (i+1)비 트째의 참조 부호 208a 또는 208b의 출력과, i비트째의 참조 부호 208a 또는 208b 입력이 접속되도록 되어 있다. 즉 전체로서 k비트의 시프트 레지스터로서 동작하도록 되어 있다. 또한, 여기서는, 시프트 레지스터로서의 동작을 감안하여, 먼저 입력해서 시프트하는 비트의 첨자를 작은 쪽에 할당하는 것으로 하고, 선두의 플립플롭으로부터 FF1, FF2, ....FF(k/2), FF(k/2+1), ....FF(k)로 순서대로 도 16의 (a) 및 도 16의 (b)에서는 기재한다. 또한, 도 16의 (b)에서는 FF1, FF2, ....FF(k/2)까지와 FF(k/2+1), ....FF(k)로 되짚어 표시하고 있지만, 도 16의 (a)와 동일한 플립플롭의 접속 회로로 되어 있다.In Fig. 16A, a part of the n-bit shift register used in the error correction decoding circuit 103 is assumed, and the k-bit D flip-flops 208a and 208b are connected in series through Q1. This forms a k-bit shift register equal to the number of information bits. Here, D-type flip-flops are used as reference numerals 208a and 208b, but of course, a circuit may be formed by a latch circuit or another flip-flop circuit. Here, as a D flip-flop, the clock input rises from "L" (here, 0 [V] for convenience) to "H" (here, Vcc for convenience) at the time of pulse rise of the clock input of the table. At the moment, the output is determined to be the data input to the D input, and after that, the output does not change even if it changes from "H" to "L" whether the clock remains "H" or "L". An edge trigger type flip flop is used. The gate electrode of Q1 is commonly connected to the input written as S1. By setting S1, for example, from 0 V to Vcc and bringing it into a conduction state from the cutoff state, i is an integer of 1 to (k-1), and the reference numerals 208a or 208b of the (i + 1) bit connected in series are The output and the input of the i-bit reference numeral 208a or 208b are connected. That is, it operates as a k-bit shift register as a whole. In this case, the subscript of the first input and shifted bit is allocated to the smaller one in consideration of the operation as a shift register, and FF1, FF2, .... FF (k / 2), FF ( In FIG. 16 (a) and FIG. 16 (b), it describes in order k / 2 + 1), ... FF (k). In Fig. 16 (b), FF1, FF2, .... FF (k / 2) and FF (k / 2 + 1), .... FF (k) are shown again. The same flip-flop connection circuit as in (a) is used.

또한, 참조 부호 215의 NMOS, 참조 부호 216의 PMOS, 및 인버터(209)에 의해, 쌍방향성 스위치가 형성되어 있다. 쌍방향성 스위치는, 데이터 출력 제어 입력1 또는 2가 "H"인 경우에, 참조 부호 215와 216의 전류 단자가 도통 상태로 되고, "L"인 경우에 차단 상태로 되는 회로로서, 임계값 저하 없이 NMOS(215)나 PMOS(216)의 전류 단자 사이에서 전압을 전송할 수 있는 특징을 갖지만, 예를 들면, 임계값에 의한 출력 저하가 문제없는 경우에는, NMOS 트랜지스터로 대용해도 된다. 여기서, Q5 및 쌍방향성 스위치, 및 비트 마스크열 입력과의 배타적 논리합을 취하는 소자(217)에 의해, FF1의 출력은, FF(k)의 입력에 피드백되는, 소위 선형 피드백 시프트 레지스터(Linear Feedback Shift Resistor:LFSR)로 되어 있다. 따라서, 이 k단의 시프트 레지스터에 의해, 정보 비트의 k비트를 First-In-First-0ut(FIFO)로, 또한, 정보를 FF1, FF2, ...., FF(k)에 유지되어 있는 정보를 순서대로 클럭 입력에 따라서 출력할 수 있다. 도 17의 (a)에 그 회로의 동작을 도시한 다. 우선, k비트의 일련의 시프트 레지스터로서 동작시키기 위해서, 읽어내기 및 기억 시에, sl을 Vcc("H"), /sl, p1 및 비트 마스크열 입력을 0V("L")로 한다.In addition, the bidirectional switch is formed by the NMOS at 215, the PMOS at 216, and the inverter 209. The bidirectional switch is a circuit in which the current terminals of reference numerals 215 and 216 are in the conduction state when the data output control inputs 1 or 2 are "H", and the shutoff state is in the case of "L". The voltage can be transferred between the current terminals of the NMOS 215 and the PMOS 216 without any problem. For example, when there is no problem in output reduction due to a threshold value, the NMOS transistor may be substituted. Here, by the element 217 taking exclusive OR with Q5 and the bidirectional switch and the bit mask string input, the output of FF1 is fed back to the input of FF (k), so-called linear feedback shift register. Resistor: LFSR). Therefore, with this k-stage shift register, k bits of the information bits are held in First-In-First-0ut (FIFO), and information is held in FF1, FF2, ..., and FF (k). Information can be output in order according to the clock input. Fig. 17A shows the operation of the circuit. First, sl is set to Vcc ("H"), / sl, p1, and bit mask string input to 0V ("L") at the time of reading and storing in order to operate as a k-bit series of shift registers.

D형 플립플롭에 데이터를 기억하는 경우에는, 우선, 데이터 출력 제어 입력1, 2를 모두 "L"로 하여, 플립플롭(208)의 출력이 데이터 입출력선에 출력되지 않도록 한다. 또한, 데이터 입출력(I/O)선에 Vcc("H")나 0V("L")의 제1 비트의 디지털 데이터를 공급한 후, 클럭 입력1, 2를 모두 "L"로부터 "H"로 한다. 이에 의해, 제1 비트의 디지털 데이터가 도 16의 (a)의 가장 좌측의 플립플롭 FF(k)에 유지된다. 다음으로, 데이터 입출력(I/O)선에 Vcc("H")나 0V("L")의 제2 디지털 데이터를 공급한 후, 클럭 입력 φ1, φ2를 모두 "L"로부터 "H"로 한다. 이에 의해, 제1 비트의 디지털 데이터가 도 16의 (a)의 좌측으로부터 2번째의 플립플롭 FF(k-1)에 전송 및 유지되고, 가장 좌측의 플립플롭 FF(k)에 제2 디지털 데이터가 유지된다. 이후에는, 순차적으로 k[bit]까지 데이터 입출력(I/O)선에 디지털 데이터를 공급하고, 클럭을 공급함으로써, 도 16의 (a)의 우측의 플립플롭으로부터 순서대로 디지털 데이터가 유지되어, k[Bit]의 데이터를 유지할 수 있다.When data is stored in the D-type flip-flop, first, the data output control inputs 1 and 2 are all set to "L" so that the output of the flip-flop 208 is not output to the data input / output line. After supplying the digital data of the first bit of Vcc ("H") or 0 V ("L") to the data input / output (I / O) line, the clock inputs 1 and 2 are both "L" to "H". Shall be. As a result, the digital data of the first bit is held in the leftmost flip-flop FF (k) in Fig. 16A. Next, after supplying the second digital data of Vcc ("H") or 0V ("L") to the data input / output (I / O) line, the clock inputs φ1 and φ2 are all changed from "L" to "H". do. As a result, the digital data of the first bit is transmitted and held in the second flip-flop FF (k-1) from the left in FIG. 16A, and the second digital data is in the left-most flip-flop FF (k). Is maintained. Subsequently, the digital data is sequentially supplied to the data input / output (I / O) line up to k [bit], and the clock is supplied so that the digital data is held in order from the flip-flop on the right side of FIG. k [Bit] can hold data.

다음으로 참조 부호 104로부터 데이터를 읽어낼 때에는, 우선, 데이터 출력 제어 입력1을 "H"로 하고, 데이터 출력 제어 입력2와 비트 마스크열 입력을 "L"로 하며, 가장 우측의 플립플롭 FF1의 출력을 데이터 입출력선에 출력한다. 이에 의해 데이터 입출력선에는 제1 비트의 디지털 데이터의 데이터와 동일한 데이터가 출력된다. 또한, 클럭 입력 φ1, φ2를 모두 "L"로부터 "H"로 한다. 이에 의해, 좌측으로부터 우측의 플립플롭에 1비트 데이터가 전송 및 유지된다. 그 결과, 데이 터 입출력선에는 제1 비트의 디지털 데이터의 데이터와 동일한 데이터가 출력된다. 이후에는, 전부해서 (k-1)회 클럭 입력 φ1, φ2를 모두 "L"로부터 "H"로 함으로써, 데이터 입출력(I/O)선에 도 16의 (a)의 우측의 플립플롭으로부터 순서대로 데이터가 출력되어, k[Bit]의 데이터를 출력할 수 있다. 이상에 의해, 도 16의 (a)의 회로에서 k[bit]의 데이터를 시퀀셜하게 기억하고, 기억한 순서로 취출할 수 있는 것은 분명하다.Next, when reading data from the reference numeral 104, first, the data output control input 1 is set to "H", the data output control input 2 and the bit mask string input are set to "L", and the rightmost flip-flop FF1 Output the output to the data input / output line. As a result, the same data as that of the digital data of the first bit is output to the data input / output line. The clock inputs φ1 and φ2 are both set from "L" to "H". As a result, one-bit data is transmitted and held from the left to the right flip-flop. As a result, the same data as the data of the digital data of the first bit is output to the data input / output line. Subsequently, by setting all (k-1) clock inputs φ1 and φ2 from " L " to " H ", the data input / output (I / O) lines are arranged in order from the flip-flop on the right side of Fig. 16A. The data is output as is, and the data of k [Bit] can be output. As described above, it is clear that the data of k [bit] can be sequentially stored in the circuit of Fig. 16A and taken out in the order of storage.

한편, 도 16의 (a)에서, Q2 및 Q3의 게이트 전극은, /Sl이라고 기입한 입력에 공통 접속되어 있다. Q3의 게이트 입력의 /Sl을 예를 들면 0V로부터 Vcc로 하고, 차단 상태로부터 도통 상태로 함으로써, Q3이라고 기입된 트랜지스터에 의해, 상기 k비트의 시프트 레지스터의 홀수번째의 비트의 D형 플립플롭(208b)이 전기적으로 직렬 접속되고, (k/2)개의 시프트 레지스터를 형성할 수 있도록 되어 있다. 구체적으로는, Q3을 통해서, 예를 들면, i를 1로부터 (k/2)-1까지의 정수로 해서, (2i+1)번째의 비트의 참조 부호 208b 출력이 (2i-1)번째의 비트의 참조 부호 208b 입력에 접속되어 있다. 또한, Q2의 게이트 입력의 /Sl을 예를 들면 0V로부터 Vcc로 하고, 차단 상태로부터 도통 상태로 함으로써, Q2라고 기입된 트랜지스터를 통해서, 상기 k비트의 시프트 레지스터의 짝수번째의 비트의 D형 플립플롭(208a)이 전기적으로 직렬 접속되어, (k/2)개의 시프트 레지스터를 형성할 수 있도록 되어 있다. 구체적으로는, 예를 들면, i를 1로부터 (k/2)-1까지의 정수로 해서, (2i+2)번째의 비트의 참조 부호 208a 출력이 (2i)번째의 비트의 참조 부호 208a의 입력에 접속되어 있다.In FIG. 16A, the gate electrodes of Q2 and Q3 are commonly connected to the input written as / Sl. The / Sl of the gate input of Q3 is set from 0 V to Vcc, for example, and the conduction state from the cutoff state is used, so that the D-type flip-flop of the odd bit of the k-bit shift register is written by the transistor written as Q3. 208b) is electrically connected in series to form (k / 2) shift registers. Specifically, through Q3, for example, i is an integer from 1 to (k / 2) -1, and the output of reference numeral 208b of the (2i + 1) th bit is output from the (2i-1) th It is connected to the input 208b of the bit. Further, the / Sl of the gate input of Q2 is set from 0V to Vcc, for example, and the conduction state from the cutoff state is used, so that the D-type flip of even-numbered bits of the k-bit shift register is passed through the transistor written as Q2. The flops 208a are electrically connected in series to form (k / 2) shift registers. Specifically, for example, i is an integer from 1 to (k / 2) -1, and the output of reference numeral 208a of the (2i + 2) th bit is determined by the reference numeral 208a of the (2i) th bit. It is connected to the input.

여기서, 쌍방향성 스위치, 및 비트 마스크열 입력과의 배타적 논리합을 취하는 소자(217)에 의해, FF1의 출력은, FF(k-1)의 입력에 피드백되는, 소위 선형 피드백 시프트 레지스터(Linear Feedback Shift Resistor:LFSR)로 되어 있다. 또한, Q4에 의해, /Sl이 Vcc("H")인 경우에, FF(k-1)의 입력은 데이터 입출력(I/O)과 접속되도록 되어 있다. 따라서, 이 (k/2)단의 시프트 레지스터에 의해, 정보 비트의 홀수 비트인 (k/2)비트를 First-In-First-Out(FIFO)로, 또한, 정보를 FF1, FF3, FF5,...., FF(k-1)에 유지되어 있는 정보를 순서대로 클럭 입력 φ2에 따라서 출력할 수 있다.Here, by means of the bidirectional switch and the element 217 taking an exclusive OR with the bit mask string input, the output of FF1 is fed back to the input of FF (k-1), a so-called linear feedback shift register. Resistor: LFSR). In addition, Q4 allows the input of FF (k-1) to be connected to the data input / output (I / O) when / Sl is Vcc ("H"). Therefore, this (k / 2) stage shift register allows (k / 2) bits, which are odd bits of the information bits, to be First-In-First-Out (FIFO), and information to be converted into FF1, FF3, FF5, ...., the information held in FF (k-1) can be output in order according to the clock input .phi.2.

또한, Q6 및 쌍방향성 스위치, 및 참조 부호 217의 비트 마스크열 입력과의 배타적 논리합을 취하는 소자(217)에 의해, FF2의 출력은, FF(k)의 입력에 피드백되는, 소위 선형 피드백 시프트 레지스터(Linear Feedback Shift Resistor:LFSR)로 되어 있다. 따라서, 이 (k/2)단의 시프트 레지스터에 의해, 정보 비트의 짝수 비트인 (k/2)비트를 First-In-First-Out(FIFO)로, 또한, 정보를 FF2, FF4, FF6,...., FF(k)에 유지되어 있는 정보를 순서대로 클럭 입력 φ1에 따라서 출력할 수 있다. 이들은 짝수 비트와 홀수 비트로 비트가 혼합되지 않고 독립적으로 정보의 읽어내기 및 기억이 가능하다.In addition, by the element 217 which takes an exclusive OR with the Q6 and the bidirectional switch and the bit mask string input of 217, the output of FF2 is fed back to the input of FF (k), a so-called linear feedback shift register. (Linear Feedback Shift Resistor: LFSR). Therefore, the (k / 2) -stage shift register allows (k / 2) bits, which are even bits of the information bits, to be First-In-First-Out (FIFO), and information FF2, FF4, FF6, ...., the information held in FF (k) can be output in order according to the clock input .phi.1. They can read and store information independently without mixing bits with even and odd bits.

도 17의 (b), 도 17의 (c)에 그 회로의 읽어내기 및 기억 동작을 도시한다. 우선, (k/2)비트의 일련의 시프트 레지스터로서 동작시키기 위해서, 읽어내기 및 기억 시에는, /sl을 Vcc("H"), sl, p1, 및 비트 마스크열 입력을 0V("L")로 한다.17B and 17C show reading and storing operations of the circuit. First, in order to operate as a series of shift registers of (k / 2) bits, when reading and storing, / sl is set to Vcc ("H"), sl, p1, and bit mask string input is 0V ("L"). )

여기서, 도 17의 (c)의 기입부터 설명한다. 홀수 비트의 데이터를 D형 플립 플롭에 기억하는 경우에는, 우선, 데이터 출력 제어 입력1, 2를 "L"로 하고, 플립플롭(208)의 출력이 데이터 입출력선에 출력되지 않도록 한다. 또한, 데이터 입출력(I/O)선에 Vcc("H")나 0V("L")의 제1 비트의 디지털 데이터를 공급한 후, 클럭 입력 φ2를 "L"로부터 "H"로 한다. 이에 의해, 제1 비트의 디지털 데이터(1비트째에 상당)가 도 16의 (a)의 좌측으로부터 2번째의 플립플롭 FF(k-1)에 유지된다. 다음으로, 데이터 입출력(I/O)선에 Vcc("H")나 0V("L")의 제2 디지털 데이터(1개 건너 뛴 3비트째에 상당)를 부여한 후, 클럭 입력 φ2를 "L"로부터 "H"로 한다. 이에 의해, 제1 비트의 디지털 데이터가 도 16의 (a)의 좌측으로부터 4번째의 플립플롭 FF(k-3)에 전송 및 유지되고, 좌측으로부터 2번째의 플립플롭 FF(k-1)에 제2 디지털 데이터가 유지된다. 이후에는, 순차적으로 (k-1)[bit]까지 데이터 입출력(I/O)선에 디지털 데이터를 공급하고, 클럭을 공급함으로써, 도 16의 (a)의 플립플롭에서 1개 걸러 순서대로 디지털 데이터가 유지되어, 홀수 비트의 전체 데이터 (k/2)비트분의 데이터를 유지할 수 있다.Here, description will be given from the writing of FIG. When storing odd bit data in a D flip-flop, first, data output control inputs 1 and 2 are set to "L" so that the output of the flip-flop 208 is not output to the data input / output line. After supplying the digital data of the first bit of Vcc ("H") or 0V ("L") to the data input / output (I / O) line, the clock input? 2 is set from "L" to "H". As a result, the first bit of digital data (corresponding to the first bit) is held in the second flip-flop FF (k-1) from the left in Fig. 16A. Next, after the second digital data (corresponding to one skipped third bit) of Vcc ("H") or 0V ("L") is applied to the data input / output (I / O) line, clock input φ2 is set to "." From L "to" H ". As a result, the digital data of the first bit is transferred to and held in the fourth flip-flop FF (k-3) from the left in FIG. 16A, and is transferred to the second flip-flop FF (k-1) from the left. Second digital data is maintained. Thereafter, by supplying digital data to the data input / output (I / O) line up to (k-1) [bit] and supplying a clock, every other one in the flip-flop of FIG. The data is retained, and data for all data (k / 2) bits of odd bits can be held.

또한, 짝수 비트의 데이터를 D형 플립플롭에 데이터를 기억하는 경우에는, 우선, 데이터 출력 제어 입력1, 2를 "L"로 하고, 플립플롭(208)의 출력이 데이터 입출력선에 출력되지 않도록 한다. 또한, 데이터 입출력(I/O)선에 Vcc("H")나 0V("L")의 제1 비트의 디지털 데이터를 공급한 후, 클럭 입력 φ1을 "L"로부터 "H"로 한다. 이에 의해, 제1 비트의 디지털 데이터(2비트째에 상당)가 도 16의 (a)의 좌측으로부터 1번째의 플립플롭 FF(k)에 유지된다. 다음으로, 데이터 입출력(I/O)선에 Vcc("H")나 0V("L")의 제2 디지털 데이터(1개 건너 뛴 4비트째에 상당)를 부 여한 후, 클럭 입력 φ1을 "L"로부터 "H"로 한다. 이에 의해, 제1 비트의 디지털 데이터가 도 16의 (a)의 좌측으로부터 3번째의 플립플롭 FF(k-2)에 전송 및 유지되고, 가장 좌측의 플립플롭 FF(k)에 제2 디지털 데이터가 유지된다. 이후에는, 순차적으로 k[bit]까지 데이터 입출력(I/O)선에 디지털 데이터를 공급하고, 클럭을 공급함으로써, 도 16의 (a)의 플립플롭에서 1개 걸러 순서대로 디지털 데이터가 유지되어, 짝수 비트의 전체 데이터 (k/2)비트분의 데이터를 유지할 수 있다.When storing even-bit data in a D flip-flop, first, data output control inputs 1 and 2 are set to "L" so that the output of the flip-flop 208 is not output to the data input / output line. do. In addition, after supplying the digital data of the first bit of Vcc ("H") or 0V ("L") to the data input / output (I / O) line, the clock input? 1 is set from "L" to "H". As a result, the digital data of the first bit (corresponding to the second bit) is held in the first flip-flop FF (k) from the left in Fig. 16A. Next, the second input of Vcc ("H") or 0V ("L") of second digital data (corresponding to one skipped fourth bit) is applied to the data input / output (I / O) line, and then clock input φ1 is applied. From "L" to "H". As a result, the digital data of the first bit is transferred to and held in the third flip-flop FF (k-2) from the left in FIG. 16A, and the second digital data is stored in the left-most flip-flop FF (k). Is maintained. Thereafter, by supplying digital data to the data input / output (I / O) line up to k [bit] and supplying a clock, the digital data is held in every other order in the flip-flop of Fig. 16A. In addition, even-numbered bits of data (k / 2) bits can be held.

다음으로, 도 17의 (b)의 읽어내기를 설명한다. 참조 부호 104로부터 홀수 비트의 데이터를 읽어낼 때에는, 우선, 데이터 출력 제어 입력2를 "H"로 하고, 데이터 출력 제어 입력1을 "L"로 하고, 가장 우측의 플립플롭 FF1의 출력을 데이터 입출력선에 출력한다. 이에 의해 데이터 입출력선에는, 홀수 비트의 제1 비트의 디지털 데이터와 동일한 데이터가 출력된다. 또한, 클럭 입력 φ2를 "L"로부터 "H"로 한다. 이에 의해, FF3의 출력이 FF1에 전송 및 유지되고, 홀수 비트의 데이터가 순서대로 좌측으로부터 우측의 플립플롭에 전송 및 유지된다. 그 결과, 데이터 입출력선에는 홀수 비트의 제2 비트의 디지털 데이터(제3 비트에 상당)와 동일한 데이터가 출력된다. 이후에는, 전부 (k/2-1)회 클럭 입력 φ2를 "L"로부터 "H"로 함으로써, 데이터 입출력(I/O)선에 도 16의 (a)의 우측의 플립플롭에서 1개 걸러 순서대로 데이터가 출력되어, 홀수 비트의 전체 데이터 (k/2)비트분의 데이터를 1비트째, 3비트째, 5비트째, .... (k-1)비트째로 출력할 수 있다. 이 때, 클럭 입력 φ1은 변화시키지 않으므로, 짝수 비트의 데이터는 변화되지 않고 유지된다.Next, reading of FIG. 17B is described. When reading odd bit data from the reference numeral 104, first, the data output control input 2 is set to "H", the data output control input 1 is set to "L", and the output of the rightmost flip-flop FF1 is inputted to the data. To the line. As a result, the same data as the digital data of the first bit of odd bits is output to the data input / output line. In addition, clock input phi 2 is made into "H" from "L". As a result, the output of FF3 is transmitted and held to FF1, and odd bit data is transferred and held to the flip-flop from left to right in order. As a result, the same data as the digital data (corresponding to the third bit) of the second bit of odd bits is output to the data input / output line. Subsequently, by setting the clock input? 2 from " L " to " H " altogether (k / 2-1) times, every other one in the flip-flop on the right side of FIG. The data is output in order, so that the data of all the odd (k / 2) bits of odd bits can be output in the 1st bit, 3rd bit, 5th bit, ... (k-1) bit. . At this time, since the clock input .phi.1 is not changed, the even bit data is kept unchanged.

한편, 참조 부호 104로부터 짝수 비트의 데이터를 읽어낼 때에는, 우선, 데 이터 출력 제어 입력1을 "H"로 하고, 데이터 출력 제어 입력2를 "L"로 하고, 우측의 2번째의 플립플롭 FF2의 출력을 데이터 입출력선에 출력한다. 이에 의해 데이터 입출력선에는, 짝수 비트의 제1 비트의 디지털 데이터와 동일한 데이터가 출력된다. 또한, 클럭 입력 φ1을 "L"로부터 "H"로 한다. 이에 의해, FF4의 출력이 FF2에 전송 및 유지되고, 짝수 비트의 데이터가 순서대로 좌측으로부터 우측의 플립플롭에 전송 및 유지된다. 그 결과, 데이터 입출력선에는 짝수 비트의 제2 비트의 디지털 데이터(제4 비트에 상당)의 데이터와 동일한 데이터가 출력된다. 이후에는, 전부 (k/2-1)회 클럭 입력 φ1을 "L"로부터 "H"로 함으로써, 데이터 입출력(I/O)선에 도 16의 (a)의 우측의 플립플롭에서 1개 걸러 순서대로 데이터가 출력되고, 짝수 비트의 전체 데이터 (k/2)비트분의 데이터를 2비트째, 4비트째, 6비트째, .... (k)비트째로 출력할 수 있다. 이 때, 클럭 입력 φ2는 변화시키지 않으므로, 홀수 비트의 데이터는 변화되지 않고 유지된다.On the other hand, when reading even-bit data from the reference numeral 104, first, the data output control input 1 is set to "H", the data output control input 2 is set to "L", and the second flip-flop FF2 on the right is made. Outputs to the data I / O line. As a result, the same data as the digital data of the first bit of even bits is output to the data input / output line. In addition, the clock input phi 1 is set from "L" to "H". As a result, the output of FF4 is transmitted and held to FF2, and even-bit data is transferred and held to the flip-flop from left to right in order. As a result, the same data as the data of the digital data (corresponding to the fourth bit) of the even bits is output to the data input / output lines. Subsequently, by setting the clock input? 1 from " L " to " H " altogether (k / 2-1) times, every other one in the flip-flop on the right side of Fig. 16A is connected to the data input / output (I / O) line. The data is output in order, and the data for all the even (k / 2) bits of even bits can be output in the second, fourth, sixth, ..., (k) bits. At this time, since the clock input .phi.2 is not changed, the odd bit data is kept unchanged.

또한, 도 17의 (d)의 좌측에, 플립플롭(208b)에 유지되어 있는 홀수 비트 데이터열과, 예를 들면, "01010101....0101"의 비트 마스크의 배타적 논리합을 취하고, 배타적 논리합을 취한 데이터를 출력하면서 플립플롭(208b)에 재기억하는 방법을 도시한다. 이 경우에는, 비트 마스크열 입력에 비트 마스크로 되는 "01010101....0101" 입력 펄스를 클럭 입력과 동기해서 공급한다.On the left side of Fig. 17D, an exclusive logical sum of an odd bit data string held in the flip-flop 208b and a bit mask of, for example, "01010101 .... 0101" is taken, and an exclusive logical sum is obtained. A method of re-memorizing the flip-flop 208b while outputting the taken data is shown. In this case, the "01010101 .... 0101" input pulse serving as a bit mask is supplied to the bit mask string input in synchronization with the clock input.

우선, 데이터 출력 제어 입력2를 "H"로 하고, 데이터 출력 제어 입력1을 "L"로 하고, 가장 우측의 플립플롭 FF1의 출력을 배타적 논리합 소자(217)에서 비트 마스크열 입력의 최초의 비트 "0"과의 배타적 논리합으로 데이터 입출력선에 출력 한다. 이에 의해 데이터 입출력선에는, 홀수 비트의 제1 비트의 디지털 데이터와 동일한 데이터가 출력된다. 또한, 클럭 입력 φ2를 "L"로부터 "H"로 한다. 이에 의해, FF3의 출력이 FF1에 전송 및 유지되고, 홀수 비트의 데이터가 순서대로 좌측으로부터 우측의 플립플롭에 전송 및 유지된다. 그 결과, 배타적 논리합 소자(217)에서 비트 마스크열 입력의 2번째의 비트 "1"과의 배타적 논리합을 취하여 데이터 입출력선에 출력한다. 따라서, 이 경우에는, 데이터 입출력선에는 홀수 비트의 제2 비트의 디지털 데이터(제3 비트에 상당)의 반전 데이터가 출력된다. 이후에는, 전부 (k/2-1)회 클럭 입력 φ2를 "L"로부터 "H"로 함으로써, 데이터 입출력(I/O)선에 도 16의 (a)의 우측의 플립플롭에서 1개 걸러 순서대로 데이터가 출력되고, 홀수 비트의 전체 데이터 (k/2)비트분의 데이터를 1비트째, 3비트째, 5비트째, .... (k-1)비트째와, 각각 비트 마스크열 입력의 1비트째, 2비트째, 3비트째, .... (k/2)비트째의 배타적 논리합이 순서대로 출력된다. 또한, 마지막으로 (k/2)회째의 클럭 입력 φ2를 "L"로부터 "H"로 함으로써, 1비트째, 3비트째, 5비트째, .... (k-1)비트째와, 각각 비트 마스크열 입력의 1비트째, 2비트째, 3비트째, .... (k/2)비트째의 배타적 논리합이 FF1, FF3, FF5, .... FF(k-1)의 플립플롭에 재기억된다. 이 때, 클럭 입력 φ1은 변화시키지 않으므로, 짝수 비트의 데이터는 변화되지 않고 유지된다. 또한, 여기서는, 비트열 마스크 입력으로서 "01010101....0101"을 이용하였지만, 물론 다른 패턴이라도 된다. 예를 들면, "11111111....1111"의 비트 마스크를 이용함으로써, 도 17의 (e)의 좌측과 같이, 플립플롭(208b)에 유지되어 있는 홀수 비트 데이터열을 비트 반전한 데이터를 출력 하면서 플립플롭(208b)에 재기억하는 방법을 용이하게 실현할 수 있다.First, the data output control input 2 is set to "H", the data output control input 1 is set to "L", and the output of the rightmost flip-flop FF1 is the first bit of the bit mask string input at the exclusive-OR element 217. Output to the data I / O line by exclusive OR with "0". As a result, the same data as the digital data of the first bit of odd bits is output to the data input / output line. In addition, clock input phi 2 is made into "H" from "L". As a result, the output of FF3 is transmitted and held to FF1, and odd bit data is transferred and held to the flip-flop from left to right in order. As a result, the exclusive OR element 217 takes an exclusive OR with the second bit " 1 " of the bit mask string input and outputs it to the data input / output line. Therefore, in this case, inverted data of digital data (corresponding to the third bit) of the second bit of odd bits is output to the data input / output line. Subsequently, by setting the clock input? 2 from " L " to " H " altogether (k / 2-1) times, every other one in the flip-flop on the right side of Fig. 16A is connected to the data input / output (I / O) line. The data is output in order, and the data of all the odd (k / 2) bits of odd bits is divided into 1 bit, 3 bit, 5 bit, ... (k-1) bit, and bit mask respectively. The exclusive ORs of the first, second, third, ..., (k / 2) bits of the column input are output in order. Finally, by setting the clock input φ2 of the (k / 2) th time from "L" to "H", the 1st bit, 3rd bit, 5th bit, ... (k-1) bit, The exclusive ORs of the 1st bit, 2nd bit, 3rd bit, .... (k / 2) bit of the bit mask string input are respectively FF1, FF3, FF5, .... It is remembered in flip-flops. At this time, since the clock input .phi.1 is not changed, the even bit data is kept unchanged. In this example, " 01010101 .... 0101 " is used as the bit string mask input, but of course, other patterns may be used. For example, by using a bit mask of " 11111111 .... 1111 ", the data obtained by bit inverting the odd bit data string held in the flip-flop 208b as shown in the left side of Fig. 17E is outputted. In the meantime, the method of re-memorizing the flip-flop 208b can be easily realized.

또한, 도 17의 (d)의 우측에, 플립플롭(208a)에 유지되어 있는 짝수 비트 데이터열과, 예를 들면, "01010101....0101"의 비트 마스크의 배타적 논리합을 취하고, 배타적 논리합을 취한 데이터를 출력하면서 플립플롭(208a)에 재기억하는 방법을 도시한다. 이 경우에는, 비트 마스크열 입력에 비트 마스크로 되는 "01010101....0101" 입력 펄스를 클럭 입력과 동기해서 공급한다.On the right side of Fig. 17D, the exclusive logical sum of the even bit data string held in the flip-flop 208a and the bit masks of, for example, "01010101 .... 0101" is taken, and the exclusive logical sum is taken. A method of re-memorizing the flip-flop 208a while outputting the taken data is shown. In this case, the "01010101 .... 0101" input pulse serving as a bit mask is supplied to the bit mask string input in synchronization with the clock input.

우선, 데이터 출력 제어 입력1을 "H"로 하고, 데이터 출력 제어 입력2를 "L"로 하고, 가장 우측으로부터 2번째의 플립플롭 FF2의 출력을 배타적 논리합 소자(217)에서 비트 마스크열 입력의 최초의 비트 "0"과의 배타적 논리합으로 데이터 입출력선에 출력한다. 이에 의해 데이터 입출력선에는, 짝수 비트의 제1 비트의 디지털 데이터와 동일한 데이터가 출력된다. 또한, 클럭 입력 φ1을 "L"로부터 "H"로 한다. 이에 의해, FF4의 출력이 FF2에 전송 및 유지되고, 짝수 비트의 데이터가 순서대로 좌측으로부터 우측의 플립플롭에 전송 및 유지된다. 그 결과, 배타적 논리합 소자(217)에서 비트 마스크열 입력의 2번째의 비트 "1"과의 배타적 논리합을 취하여 데이터 입출력선에 출력한다. 따라서, 이 경우에는, 데이터 입출력선에는 짝수 비트의 제2 비트의 디지털 데이터(제4 비트에 상당)의 반전 데이터가 출력된다. 이후에는, 전부 (k/2-1)회 클럭 입력 φ1을 "L"로부터 "H"로 함으로써, 데이터 입출력(I/O)선에 도 16의 (a)의 우측의 플립플롭에서 1개 걸러 순서대로 데이터가 출력되고, 짝수 비트의 전체 데이터 (k/2)비트분의 데이터를 2비트째, 4비트째, 6비트째, .... (k)비트째와, 각각 비트 마스크열 입력의 1비트째, 2비트째, 3비트째, .... (k/2)비트째의 배타적 논리합이 순서대로 출력된다. 또한, 마지막으로 (k/2)회째의 클럭 입력 φ1을 "L"로부터 "H"로 함으로써, 2비트째, 4비트째, 6비트째, .... (k)비트째와, 각각 비트 마스크열 입력의 1비트째, 2비트째, 3비트째, .... (k/2)비트째의 배타적 논리합이 FF2, FF4, FF6, .... FF(k)의 플립플롭에 재기억된다. 이 때, 클럭 입력 φ2는 변화시키지 않으므로, 홀수 비트의 데이터는 변화되지 않고 유지된다. 또한, 여기서는, 비트열 마스크 입력으로서 "01010101....0101"을 이용하였지만, 물론 다른 패턴이라도 된다. 예를 들면, "11111111....1111"의 비트 마스크를 이용함으로써, 도 17의 (e)의 우측과 같이, 플립플롭(208a)에 유지되어 있는 짝수 비트 데이터열을 비트 반전한 데이터를 출력하면서 플립플롭(208a)에 재기억하는 방법을 용이하게 실현할 수 있다. 물론, 이 비트 마스크열 입력에 대해서, 예를 들면, 실시예 1에서 설명한 바와 같이, M계열 등의 평균화 비트 마스크 발생 회로(110)의 출력을 입력하기로 하면, 도 17에서 설명한 시퀀스를 이용해서, 부호 출현 확률 평균화 제1 부호화 회로(106) 및, 제1 부호 복호화 회로(107)를 실현할 수 있다.First, the data output control input 1 is set to "H", the data output control input 2 is set to "L", and the output of the second flip-flop FF2 from the rightmost side is set by the exclusive OR element 217 of the bit mask string input. Outputs to the data input / output line in an exclusive OR with the first bit "0". As a result, the same data as the digital data of the first bit of even bits is output to the data input / output line. In addition, the clock input phi 1 is set from "L" to "H". As a result, the output of FF4 is transmitted and held to FF2, and even-bit data is transferred and held to the flip-flop from left to right in order. As a result, the exclusive OR element 217 takes an exclusive OR with the second bit " 1 " of the bit mask string input and outputs it to the data input / output line. In this case, therefore, inverted data of digital data (corresponding to the fourth bit) of the even bits is output to the data input / output lines. Subsequently, by setting the clock input? 1 from " L " to " H " altogether (k / 2-1) times, every other one in the flip-flop on the right side of Fig. 16A is connected to the data input / output (I / O) line. Data is output in order, and the data for the even-numbered bits of all data (k / 2) bits is input to the 2nd bit, the 4th bit, the 6th bit, the ... (k) bit, and bit mask string input, respectively. The exclusive ORs of the 1st, 2nd, 3rd, ... (k / 2) th bits of are output in order. Finally, by setting the clock input φ1 of the (k / 2) th time from "L" to "H", the 2nd bit, the 4th bit, the 6th bit, ... (k) bit, and each bit The exclusive OR of the 1st bit, 2nd bit, 3rd bit, .... (k / 2) bit of the mask string input is reset to the flip-flop of FF2, FF4, FF6, .... FF (k). I remember. At this time, since the clock input .phi.2 is not changed, the odd bit data is kept unchanged. In this example, " 01010101 .... 0101 " is used as the bit string mask input, but of course, other patterns may be used. For example, by using a bit mask of "11111111 .... 1111", as shown in the right side of Fig. 17E, the data obtained by bit inverting the even-bit data string held in the flip-flop 208a is outputted. It is possible to easily realize the method of re-memory storing the flip-flop 208a. Of course, for this bit mask string input, for example, as described in the first embodiment, when the output of the averaging bit mask generation circuit 110 such as the M series is inputted, the sequence described in FIG. In addition, the code occurrence probability averaging first coding circuit 106 and the first code decoding circuit 107 can be realized.

또한, 도 16의 (b)에서, Q7의 게이트 전극은, p1이라고 기입한 입력에 공통 접속되어 있다. Q7의 게이트 입력의 p1을 예를 들면 0V로부터 Vcc로 하고, 차단 상태로부터 도통 상태로 함으로써, Q7이라고 기입된 트랜지스터에 의해, i를 1로부터 k/2의 정수로 해서, FF(k/2+i)의 출력이 FF(i)의 입력에 접속되어 있다. 또한, i를 1로부터 k/2-1의 정수로 해서, FF(iH)의 출력이 FF(k/2+i)의 입력에 접속되어 있다. 이에 의해, 이후에, 도 17의 (f)에서 도시하는 바와 같이, 인접 메모리 셀 디스터브 저감 제2 부호 역변환 회로에서, 부호화에서 짝수 비트열 및 홀수 비트열로 분리된 정보 비트열을, 원래의 홀수-짝수-홀수-짝수....비트열로 역변환해서 출력할 수 있다.In Fig. 16B, the gate electrode of Q7 is commonly connected to the input written as p1. By setting p1 of the gate input of Q7, for example, from 0V to Vcc and bringing it into a conducting state from the cutoff state, the transistor written as Q7 makes i an integer from 1 to k / 2, and FF (k / 2 + The output of i) is connected to the input of FF (i). Further, with i being an integer from 1 to k / 2-1, the output of FF (iH) is connected to the input of FF (k / 2 + i). As a result, as shown in FIG. 17 (f), in the adjacent memory cell disturb reduction second code inverse transform circuit, the original odd number of information bit strings separated into even bit strings and odd bit strings in encoding is used. -Even-Odd-Even .... Inverted to bit stream and output.

도 17의 (f)에, p1 입력을 "H"로 함으로써, FF1, FF2, ..., FF(k/2)에 제2 부호화 전에 홀수 비트였던 데이터가 순서대로 입력되고, FF(k/2+1), FF(k/2+2), ... FF(k)에 제2 부호화 전에 짝수 비트였던 데이터가 순서대로 입력되고 있는 경우에, FF1, FF(k/2+1), FF2, FF(k/2+2)의 순, 즉, 홀수 짝수 순으로 페이지 버퍼로부터 데이터를 읽어낼 수 있는 것을 나타낸다.In Fig. 17 (f), when the input of p1 is " H ", data that is odd bits before the second encoding is sequentially input to FF1, FF2, ..., FF (k / 2), and FF (k / 2 + 1), FF (k / 2 + 2), FF (k), FF1, FF (k / 2 + 1) Indicates that data can be read from the page buffer in the order of FF2, FF (k / 2 + 2), that is, odd even order.

여기서는, 오류 정정 부호의 복호화 후의 출력으로서, FF1, FF2, ..., FF(k/2)에 제2 부호화 전에 홀수 비트였던 데이터가 순서대로 입력되고, FF(k/2+1), FF(k/2+2), ... FF(k)에 제2 부호화 전에 짝수 비트였던 데이터가 순서대로 인접 메모리 셀 디스터브 저감 제2 부호 역변환 회로(105)에 입력되고, 이 부호열이 페이지 버퍼(114)에 입력되고 있는 경우를 상정하고 있다. 우선, k비트의 일련의 시프트 레지스터로서 동작시키기 위해서, 읽어내기 및 기억 시에, p1을 Vcc("H"), sl, /sl, 비트 마스크열 입력을 0V("L")로 한다.Here, as the output after decoding the error correction code, data that was odd bits before the second encoding is sequentially input to FF1, FF2, ..., FF (k / 2), and FF (k / 2 + 1), FF. (k / 2 + 2), ... FF (k) is inputted data to the adjacent memory cell disturb reduction second code inverse conversion circuit 105 in order, and the data which were even bits before the second encoding is sequentially inputted into the page buffer. It is assumed that it is input to (114). First, in order to operate as a series of k-bit shift registers, p1 is set to Vcc ("H"), sl, / sl, and bit mask string input as 0V ("L") at the time of reading and storing.

참조 부호 104로부터 제2 부호화 전의 홀수-짝수-홀수-짝수.... 비트열로 역변환해서 참조 부호 107에 출력하기 위해서는, 이하와 같이 행한다. 우선, 데이터 출력 제어 입력1을 "H"로 하고, 데이터 출력 제어 입력2를 "L"로 하고, 우측의 1번째의 플립플롭 FF1의 출력을 데이터 입출력선에 출력한다. 이에 의해 데이터 입출력선에는, 홀수 비트의 제1 비트의 디지털 데이터와 동일한 데이터가 출력된다. 또한, 클럭 입력 φ1 및 φ2를 "L"로부터 "H"로 한다. 이에 의해, FF(k/2+1)의 출력이 FF1에 전송 및 유지되고, FF2의 출력이 FF(k/2+1)에 전송 및 유지되고, Q7의 전류 단자에 의해 전기적으로 접속된 배선에서, 1비트분 플립플롭에 전송 및 유지된다. 그 결과, 데이터 입출력선에는 (k/2+1)번째의 비트의 디지털 데이터와 동일한 데이터가 출력된다. 또한, 클럭 입력 φ1 및 φ2를 "L"로부터 "H"로 한다. 이에 의해, 데이터 입출력선에는 2번째의 비트의 디지털 데이터와 동일한 데이터가 출력된다.The odd-even-odd-even number before the second encoding from the reference numeral 104.... First, the data output control input 1 is set to "H", the data output control input 2 is set to "L", and the output of the first flip-flop FF1 on the right side is output to the data input / output line. As a result, the same data as the digital data of the first bit of odd bits is output to the data input / output line. In addition, the clock inputs phi 1 and phi 2 are set from "L" to "H". Thereby, the output of FF (k / 2 + 1) is transmitted and maintained at FF1, the output of FF2 is transmitted and held at FF (k / 2 + 1), and is electrically connected by the current terminal of Q7. Is transmitted and maintained in flip-flops for one bit. As a result, the same data as the digital data of the (k / 2 + 1) th bit is output to the data input / output line. In addition, the clock inputs phi 1 and phi 2 are set from "L" to "H". As a result, the same data as the digital data of the second bit is output to the data input / output line.

이후에는, 전부해서 (k-1)회 클럭 입력 φ1을 "1"로부터 "H"로 함으로써, 데이터 입출력(I/O)선에 읽어내기 전에 FF1, FF(k/2+1), FF2, FF(k/2+2), ...., FF(k/2), FF(k)의 순으로 데이터가 출력된다. 이것은, 제2 부호화에 의해 홀수 비트 데이터와 짝수 비트 데이터를 분리해서 시계열로 순서대로 배열한 경우에 대하여, 역변환을 행하여, 원래의 부호의 홀수-짝수-홀수-짝수 비트열을 복원하여 시계열로 출력한 것임에 틀림없다.Subsequently, by setting the clock input φ1 from " 1 " to " H " altogether (k-1) times, FF1, FF (k / 2 + 1), FF2, before reading to the data input / output (I / O) line. Data is output in the order of FF (k / 2 + 2), ..., FF (k / 2), FF (k). In the case where the odd bit data and the even bit data are separated and arranged in time series by the second encoding, the inverse conversion is performed to restore the odd-even-odd-even bit strings of the original code and output them in time series. It must have been one.

이상으로부터, 본 실시예의 페이지 버퍼(114)를 이용하면, 종래의 시프트 레지스터를 이용한 오류 부호 복호 회로에 대하여, 기껏해야 (정보 비트-1)×3+8 트랜지스터와 2개의 인버터, 및 2개의 2입력 배타적 논리합 소자만으로, 실시예 3에 필요한 제2 부호화를 위한 정보 비트의 부호 변환 회로를 실현할 수 있는 것이 분명하다.As described above, when the page buffer 114 of the present embodiment is used, at least (information bit-1) x 3 + 8 transistors and two inverters, and two two, for an error code decoding circuit using a conventional shift register. It is clear that only the input exclusive OR element can realize the code conversion circuit of the information bits for the second encoding necessary for the third embodiment.

<제2 부호화 회로(104)의 시퀀스><Sequence of Second Encoding Circuit 104>

다음으로, 도 18을 이용해서, 실시예 3에 따른 제2 부호화 회로(104)의 구체 적 시퀀스를 설명한다.Next, the concrete sequence of the 2nd coding circuit 104 which concerns on Example 3 is demonstrated using FIG.

참조 부호 104에서는, 우선, SE24에서, 플래그1, 플래그2 및 플래그3을 리세트하여, 페이지 버퍼(114)로부터 1비트째, 3비트째, 5비트째, .... (k-1)비트째의 홀수 비트의 (k/2)비트 개수의 정보 비트 데이터를 읽어낸다. 이것에는, 홀수 비트를 카운터에 출력하는 방법은, 예를 들면, 도 17의 (b)의 좌측의 방법으로 홀수의 정보 비트를 출력하고, 도 13의 회로에 입력하면 된다.In the reference numeral 104, first, the flag 1, the flag 2, and the flag 3 are reset in the SE24, and the first, third, and fifth bits of the page buffer 114 are .... (k-1) Reads information bit data of the number of (k / 2) bits of odd bits of the bit. In this method, the odd bits may be outputted to the counter by, for example, outputting odd bits of information by the method on the left side of FIG.

다음으로, SE25에서, 페이지 버퍼(114)로부터 2비트째, 4비트째, 6비트째, .... k비트째의 짝수 비트의 (k/2)비트 개수의 정보 비트 데이터를 읽어낸다. 예를 들면, 도 17의 (b)의 우측의 방법으로 홀수 비트 출력 후에 짝수의 정보 비트를 출력하고, 도 13의 회로에 입력하면 된다.Next, in SE25, information bit data of the number of (k / 2) bits of the even bits of the 2nd, 4th, 6th, ... k-th bits is read out from the page buffer 114. For example, an even number of information bits may be output after the odd bit output by the method on the right side of FIG. 17B and input to the circuit of FIG.

다음으로, SE26에서, 예를 들면, 정보 비트 내의 "010" 심볼을 카운터(108)에서 카운트하고, "101" 심볼을 카운터(109)에서 카운트하고, k비트 길이의 상기 홀수 비트와 짝수 비트가 연속된 것을 "01010101....0101", 즉 "01"을 비트의 처음부터 반복해서 배열한 것과 배타적 논리합을 취한 "010" 심볼을 카운터(112)에서 카운트한다. 또한, k비트 길이의 정보 비트를 "10101010....1010", 즉 "10"을 비트의 처음부터 반복해서 배열한 것과 배타적 논리합을 취한 "010" 심볼을 카운터(113)에서 카운트한다.Next, in SE26, for example, the " 010 " symbol in the information bit is counted in the counter 108, the " 101 " symbol is counted in the counter 109, and the odd and even bits of k-bit length are added. The counter 112 counts consecutive "01010101 .... 0101", that is, "01" symbols repeatedly arranged from the beginning of the bit, and the "010" symbol which takes an exclusive OR. Also, the counter 113 counts the " 10101010 .... 1010 ", i.e., " 10 "

이것에는, SE24, SE25의 정보 비트를 도 13의 정보 비트 입력에 입력하면 된다.This may be done by inputting the information bits of SE24 and SE25 into the information bit input of FIG.

다음으로, SE27에서, 심볼 카운터(108), 심볼 카운터(119), 심볼 카운 터(112), 심볼 카운터(113)의 값을 레지스터 a, b, c, d에 각각 카피한다.Next, in SE27, the values of the symbol counter 108, symbol counter 119, symbol counter 112, and symbol counter 113 are copied into registers a, b, c, and d, respectively.

다음으로, SE28에서, 실시예 3의 페이지 버퍼(114)에서, 페이지 버퍼로부터 1비트째, 2비트째, 3비트째, .... k비트째로 홀수 짝수 홀수 짝수 순으로, 즉, 통상의 순번으로 k비트의 정보 비트 데이터를 읽어낸다. 이것에는, 도 17의 (a)의 우측의 방법으로, 정보 비트를 출력하면 된다.Next, in SE28, in the page buffer 114 of the third embodiment, the first bit, the second bit, the third bit, ..., the k-bit from the page buffer are odd even odd even order, that is, normal Reads k bits of information bit data in the order of. This may be done by outputting the information bits by the method on the right side of Fig. 17A.

다음으로, SE28에서, 예를 들면, k비트 길이의 1비트째, 2비트째, 3비트째, .... k비트째로 배열한 정보 비트 내의 "010" 심볼을 카운터(108)에서 카운트하고, "101" 심볼을 카운터(109)에서 카운트하고, "01010101....0101", 즉 "01"을 비트의 처음부터 반복해서 배열한 것과 배타적 논리합을 취한 "010" 심볼을 카운터(112)에서 카운트한다. 또한, k비트 길이의 정보 비트를 "10101010....1010", 즉 "10"을 비트의 처음부터 반복해서 배열한 것과 배타적 논리합을 취한 "010" 심볼을 카운터(113)에서 카운트한다. 이것에는, SE28의 정보 비트 출력을 도 13의 정보 비트 입력에 입력하면 된다.Next, in the SE28, the counter 108 counts, for example, the "010" symbol in the information bits arranged in k-bit lengths of the 1st bit, the 2nd bit, the 3rd bit, and the ... kth bit. And counting " 101 " symbol at counter 109, " 01010101 .... 0101 ", i.e., " 01 " repeatedly arranged from the beginning of the bit and " 010 " Count). Also, the counter 113 counts the " 10101010 .... 1010 ", i.e., " 10 " The information bit output of SE28 may be input to the information bit input of FIG.

또한, SE30에서, 카운터(108, 109, 112, 113)와, 레지스터 a, b, c, d의 각각 내용을 비교해서 최소값으로 되는 내용을 포함하는 것은 카운터인지 레지스터인지를 구한다.In SE30, the contents of the counters 108, 109, 112, and 113 and the registers a, b, c, and d are compared, respectively, to determine whether it is a counter or a register that contains the minimum contents.

이 결과, 다음으로 SE31에서, 최소값으로 되는 것은, 레지스터 a, b, c, d가 아니라, 카운터(108, 109, 112, 113) 쪽인지 판단한다.As a result, next, in SE31, it is determined whether the minimum value is the counters 108, 109, 112, and 113 rather than the registers a, b, c, and d.

여기서, 카운터(108, 109, 112, 113) 쪽에 최소값으로 되는 조건이 있는 경우, 플래그3을 리세트한 상태 그대로, SE17-SE22까지와 동일한 시퀀스를 행한다.Here, when the counters 108, 109, 112, and 113 have a minimum value condition, the same sequence as that of SE17-SE22 is performed while the flag 3 is reset.

그 후, SE23 대신에, SE33에서, 정보 비트(k-bit)에 플래그1, 플래그2, 및 플래그3에 대응하는 부호를 부가해서 참조 부호 102의 오류 정정 부호 발생 회로에 출력한다.Subsequently, instead of SE23, in SE33, the code corresponding to the flag 1, the flag 2, and the flag 3 is added to the information bit (k-bit) and output to the error correction code generating circuit of reference numeral 102.

다음으로, 카운터(108, 109, 112, 113) 쪽에 최소값으로 되는 조건이 없는 경우, SE32에서 플래그3을 세트한다.Next, if there is no condition on the counters 108, 109, 112, and 113 as the minimum value, flag 3 is set in SE32.

다음으로, 정보 비트를 홀수 비트와 짝수 비트로 분리해서, 예를 들면, 1비트째, 3비트째, 5비트째, .... (k-1)비트째, 2비트째, 4비트째, 6비트째, .... k비트째로 배열한 것에 대하여 정보 비트로 하고, SE17-SE22까지와 마찬가지의 시퀀스를 행하는 것이다.Next, the information bits are divided into odd bits and even bits, for example, the first bit, the third bit, the fifth bit, .... (k-1) bits, the second bit, the fourth bit, The sixth bit is used as the information bit for the array of the k-th bit, and the same sequence as in SE17-SE22 is performed.

여기서, SE34에서, 레지스터 a 및 레지스터 b의 최소값이, 레지스터 c 또는 레지스터 d의 최소값보다 큰지 판단한다.Here, in SE34, it is determined whether the minimum value of the register a and the register b is larger than the minimum value of the register c or the register d.

여기서, SE34에서 "예"인 경우, SE35에서, 플래그1을 세트하고, 정보 비트의 홀수 비트와, 제1 비트 마스크 패턴 "01010101....0101"("01"을 비트의 처음부터 (k/2)비트분 반복해서 발생시킨 것)의 배타적 논리합을 취하는 시퀀스를 행하고, 페이지 버퍼(114)에 재기억한다. 이것에는, 도 17의 (d)의 좌측의 시퀀스를 행하면 된다.Here, in the case of "YES" in SE34, in SE35, flag 1 is set, odd bits of information bits and the first bit mask pattern "01010101 .... 0101" ("01") are set from the beginning of the bit (k / 2) a sequence of exclusive ORs of bits generated repeatedly) is stored in the page buffer 114 again. What is necessary is just to perform this sequence to the left of FIG.17 (d).

다음으로, SE36에서, 정보 비트의 짝수 비트와, 제1 비트 마스크 패턴 "01010101....0101"("01"을 비트의 처음부터 (k/2)분 반복해서 발생시킨 것)의 배타적 논리합을 취하는 시퀀스를 행하고, 페이지 버퍼(114)에 재기억한다. 이것에는, 도 17의 (d)의 우측의 시퀀스를 행하면 된다.Next, in SE36, the exclusive logical sum of the even bits of the information bits and the first bit mask pattern " 01010101 .... 0101 " (" 01 " generated by repeating (k / 2) minutes from the beginning of the bits). Sequence is taken and stored in the page buffer 114 again. This may be performed by performing the sequence on the right side of FIG. 17D.

다음으로, SE37에서, 심볼 카운터(112)의 값이 기억된 레지스터 c와, 심볼 카운터(113)의 값이 기억된 레지스터 d보다 큰지 판단을 행한다. 여기서, SE37에서 "예"인 경우에는, SE38에서, k비트의 정보 비트를 전부 비트 반전, 즉 "0" 비트를 "1" 비트, "1" 비트를 "0" 비트로 변화시키고, 플래그2를 세트한다. 이것에는, 예를 들면, 도 17의 (e)의 시퀀스를 행하면 된다.Next, in SE37, it is judged whether or not the register c in which the value of the symbol counter 112 is stored is larger than the register d in which the value of the symbol counter 113 is stored. Here, in the case of "YES" in SE37, in SE38, all bits of the information bits of k bits are inverted, that is, "0" bit is changed to "1" bit, "1" bit is changed to "0" bit, and flag 2 is changed. Set. For example, the sequence of FIG. 17E may be performed.

한편, SE34의 "아니오"라고 판단한 경우에는, SE39에서, "010" 심볼 카운터(108)가 기억된 레지스터 a의 값과, "101" 심볼 카운터(109)가 기억된 레지스터 b의 값보다 큰지 판단을 행한다. SE39에서 "예"인 경우에는, SE40에서, k비트의 정보 비트를 전부 비트 반전, 즉 "0" 비트를 "1" 비트, "1" 비트를 "0" 비트로 변화시키고, 플래그2를 세트한다. 이것에는, 예를 들면, 도 17의 (e)의 시퀀스를 행하면 된다.On the other hand, if it is determined "NO" of SE34, it is determined in SE39 whether the value of register a in which "010" symbol counter 108 is stored is greater than the value of register b in which "101" symbol counter 109 is stored. Is done. In case of "Yes" in SE39, in SE40, all k bits of information bits are bit inverted, that is, "0" bit is changed to "1" bit, "1" bit is changed to "0" bit, and flag 2 is set. . For example, the sequence of FIG. 17E may be performed.

이 후, SE41에서, 정보 비트 중의 참조 부호 208b의 플립플롭에 들어간 홀수 데이터를 1비트째, 3비트째, ...., (k-1)비트째를 읽어내어, 오류 정정 부호화 회로(102)에 출력한다. 이 정보의 출력에는, 예를 들면, 도 17의 (b)의 좌측의 시퀀스로 행하면 된다.Subsequently, the SE41 reads the first, third, ..., and (k-1) th bits of odd data that has entered the flip-flop at the reference numeral 208b in the information bit, and the error correction coding circuit 102 ) The output of this information may be performed, for example, in the sequence on the left side in Fig. 17B.

또한, SE42에서, 정보 비트 중의 참조 부호 208a의 플립플롭에 들어간 짝수 데이터를 2비트째, 4비트째, ...., k비트째를 읽어내어, 오류 정정 부호 발생 회로(102)에 출력한다. 이 정보의 출력에는, 예를 들면, 도 17의 (b)의 우측의 시퀀스로 행하면 된다.Further, in SE42, the even data entered in the flip-flop of the reference code 208a in the information bits is read out in the second, fourth, ..., and k bits, and output to the error correction code generation circuit 102. . The output of this information may be performed, for example, in the sequence on the right side of Fig. 17B.

또한, SE43에서 정보 비트에 플래그1, 플래그2, 및 플래그3에 상당하는 부호 를 참조 부호 102에 출력한다.In SE43, the symbols corresponding to the flags 1, 2, and 3 are output to the information bits at 102.

또한, 실시예 1과 마찬가지로, 플래그1, 플래그2, 및 플래그3을 정보 비트에 부가하는 방법으로서, 각 플래그를 2비트의 연속하는 데이터로서 정보 비트에 부가하는 방법이 있다. 이 방법은, 플래그1, 2가 어느 상태이든 "010"의 상태가 발생하지 않도록 선택하고 있지만, 물론, 이 이외의 부호화, 예를 들면, 플래그1, 2, 3 중 어느 2개를 동일 2비트 할당하고, 나머지 1개의 플래그를 1비트에 할당하는 방법이어도 된다. 이것은, 정보 비트 앞 또는 뒤에 플래그1, 2, 3에 대응하는 비트가 aabbcc(a, b, c는 각각 플래그1, 2, 3에 상당하는 "0", "1"의 상태)로 되어 있지만, ccbbaa, aabbc나 ccbba 등 적절히 순번을 교체한 것을 플래그에 대응하는 비트로서 부가해도 된다. 물론, 이 플래그에 상당하는 비트는, 정보 비트의 전후에 부가하는 것이 아니라, 예를 들면, 정보 비트를 2개로 나누고, ccbbaa와 같이 해서 정보 비트 중에 매립해도 된다. 물론 정보 비트를 4개로 나누고, aa, bb, cc를 각각 4개의 정보 비트 사이에 들어가도록 매립해도 된다. 또한, 오류 정정 부호화한 후에, 검사 비트 (패리티) 비트를 수개로 분할하고, aa, bb, cc와 같이 2개 이상의 동일한 비트로 이루어지는 플래그를 검사 비트 사이에 끼우도록 재배열(인터리브)해도 된다. 이와 같이 하면, 2개 이상의 동일한 비트로 이루어지는 플래그의 양측의 비트는 "010" 패턴으로 될 수 없기 때문에, 보다, 검사 비트 부분의 "010" 패턴이 발생할 가능성을 감소시킬 수 있다.In addition, as in the first embodiment, as a method of adding the flag 1, the flag 2, and the flag 3 to the information bits, there is a method of adding each flag to the information bit as two bits of continuous data. This method selects that the state "010" does not occur in any of the states of flags 1 and 2, but of course, any other encoding, for example, any one of flags 1, 2, 3 is the same 2 bits. The method of assigning and assigning the remaining one flag to 1 bit may be sufficient. This means that the bits corresponding to flags 1, 2, and 3 before or after the information bit are aabbcc (a, b, and c are "0" and "1" states corresponding to flags 1, 2, and 3, respectively). It is also possible to add, as bits corresponding to the flags, those whose order numbers are appropriately replaced, such as ccbbaa, aabbc, or ccbba. Of course, the bits corresponding to this flag are not added before or after the information bits, but, for example, may be divided into two information bits and embedded in the information bits as in ccbbaa. Of course, the information bits may be divided into four, and aa, bb, and cc may be embedded so as to fall between four information bits, respectively. In addition, after error correction coding, the check bit (parity) bits may be divided into several parts and rearranged (interleaved) so as to sandwich a flag composed of two or more identical bits such as aa, bb, and cc between the check bits. In this way, since the bits on both sides of the flag composed of two or more identical bits cannot be in the "010" pattern, the possibility of occurrence of the "010" pattern of the check bit portion can be reduced more.

<제2 부호 역변환 회로(105)의 복호화의 시퀀스><Sequence of Decoding of Second Code Inverse Conversion Circuit 105>

다음으로, 도 19를 이용해서, 본 실시예 3의 제2 부호 역변환 회로(105)의 복호화의 구체적 시퀀스를 설명한다.Next, the specific sequence of decoding of the 2nd code inverse conversion circuit 105 of this Embodiment 3 is demonstrated using FIG.

제2 부호 역변환 회로(105)에서는, 우선, SE44에서, 정보 비트에 부가된 플래그1, 플래그2 및 플래그3에 상당하는 정보를, 예를 들면, 레지스터나 일시 메모리에 기억한다.In the second code inverse conversion circuit 105, first, in SE44, information corresponding to the flag 1, the flag 2, and the flag 3 added to the information bit is stored in, for example, a register or a temporary memory.

다음으로, SE45에서, 플래그2가 세트되어 있는지 판단한 후, 플래그2가 세트되어 있는 경우에는, SE46에서, k비트의 정보 비트를 전부 비트 반전, 즉 "0" 비트를 "1" 비트, "1" 비트를 "0" 비트로 변화시키고, 정보 비트와 치환한다.Next, in SE45, after determining whether flag 2 is set, and if flag 2 is set, in SE46, all bits of information bits of k bits are inverted, that is, "0" bits are "1" bits, and "1". Change the bit to the "0" bit and replace it with the information bit.

다음으로, SE45의 "아니오"라고 판단한 분기와 합류한 후, SE47에서, 플래그1이 세트되어 있는지 판단한다.Next, after joining the branch determined to be NO in SE45, it is judged in SE47 whether flag 1 is set.

SE47에서 "예", 즉 플래그1이 세트되어 있는 경우, SE48에서 정보 비트와 제1 비트 마스크 패턴 "01010101....0101"("01"을 k비트분 반복해서 발생시킨 것)의 배타적 논리합을 취하는 시퀀스를 행하고, 정보 비트와 치환을 행한다. 이 제1 비트 마스크 패턴은, 참조 부호 104의 부호화 시 "10"을 k비트분 반복해서 발생시킨, "10101010....1010"을 이용한 경우에는, 동일한 "10101010....1010" 마스크 비트를 이용하면 된다.If "YES", i.e., flag 1 is set in SE47, the exclusive logical sum of the information bit and the first bit mask pattern "01010101 .... 0101" (that is, "01" is repeated for k bits) in SE48. Sequence is taken and information bits are replaced. This first bit mask pattern uses the same "10101010 .... 1010" mask bits when using "10101010 .... 1010", which is generated by repeatedly generating "10" for k bits at the time of encoding 104. You can use

다음으로, SE47의 "아니오"라고 판단한 분기와 합류한 후, SE49에서, 플래그3이 세트되어 있는지 판단한다.Next, after joining the branch determined to be NO in SE47, it is determined whether or not Flag 3 is set in SE49.

또한, 플래그3이 세트되어 있는 경우, SE50에서, FF1, FF2, ..., FF(k/2)에 제2 부호화 전의 홀수 데이터가 순서대로 입력되고, FF(k/2+1), FF(k/2+2), ..., FF(k)에 제2 부호화 전의 짝수 데이터가 순서대로 입력되고 있으므로, FF1, FF(k/2+1), FF2, FF(k/2+2)의 순, 즉, 제2 부호화 전의 홀수 짝수 순으로 페이지 버퍼로부터 데이터를 읽어내어, 제1 부호 복호화 회로(107)에 출력한다. 이것에는, 예를 들면, 도 17의 (f)의 시퀀스를 이용하면 된다.In addition, when flag 3 is set, odd data before the second encoding is sequentially input to FF1, FF2, ..., FF (k / 2) in SE50, and FF (k / 2 + 1), FF. Since even data before the second encoding is sequentially input to (k / 2 + 2), ..., FF (k), FF1, FF (k / 2 + 1), FF2, FF (k / 2 + 2). ), That is, odd even number before the second encoding, data is read from the page buffer and output to the first code decoding circuit 107. For example, the sequence of FIG. 17F may be used for this.

플래그3이 세트되어 있지 않은 경우에는, 페이지 버퍼(114)로부터 1비트째, 2비트째, 3비트째, .... k비트째로 홀수 짝수 홀수 짝수 순으로, 즉, 통상의 순번으로 k비트의 정보 비트 데이터를 읽어내어, 제1 부호 복호화 회로(117)에 출력하면 된다.If the flag 3 is not set, the first, second, third, ..., k-bit, odd-numbered, odd-numbered, even-numbered order from the page buffer 114, that is, k in the normal order The information bit data of the bits may be read out and output to the first code decoding circuit 117.

이상의 시퀀스를 거침으로써, 실시예 3의 부호 변환을 행한 8종류의 경우에 대하여, 미리 각 변환 후의 정보 비트 중의 "010"의 수를 세어 두고, 정량 비교함으로써, 상술한 바와 같이 문제로 되는 "010"의 3bit 연속된 심볼의 출현 확률을 보다 감소시키고 있다.Through the above sequence, the number of "010" in the information bits after each conversion is counted in advance and quantitatively compared to the eight cases in which the code conversion of the third embodiment has been performed. It is reducing the probability of the appearance of 3bit consecutive symbols.

여기서, 실시예 1, 2보다도 실시예 3에서, 보다 "010"의 3비트 심볼의 열이 생길 확률을 작게 할 수 있는 것을, 도 20의 (a)을 예로 들어 설명한다. 도 20의 (a)에서는, 실시예 2의 경우의 "010"의 3연속 심볼의 출현 개수가 가장 증가하는 최악 패턴의 일례인 도 9의 (e)와 같은 비트열을 입력한 경우를 도시한다. 이 경우, 홀수 비트와 짝수 비트를 1비트째, 3비트째, 5비트째, .... (k-1)비트째, 2비트째, 4비트째, 6비트째, .... k비트째로 재배열을 행함으로써, 도 20의 (a1)의 (k/2)비트의 "10101010....1010"과 (k/2)비트의 "00000000....0000"의 정보 비트가, 도 20의 (a2)의 (k/4)비트의 "11111111....1111"과, (3k/4)비트의 "00000000....0000"의 정보 비트로 재배열이 이루어지므로, "010"이 발생하는 개수 를 0까지 삭감할 수 있다. 이에 의해, 도 20의 (a)에 대응하는 데이터는 재배열되고, 플래그1, 2, 3이 각각 리세트, 리세트, 세트로 된다. 이 결과, 오류 정정 부호 발생 회로(112)에 출력되는 부호열 예를 도 20의 (a3)에 도시한다. 이와 같이 함으로써, 플래그를 포함시킨 정보 비트에서 "010"이 발생하는 개수를 0까지 삭감할 수 있다. 또한, 금회는 설명을 간단히 하기 위해서, 전체 비트 반전이나 정보 비트와 "01010101....0101"의 배타적 논리합을 취하고 있지 않은 경우를 설명하였지만, 도 20의 (a)의 부호에 금회는 전체 비트 반전이나 정보 비트와 "01010101....0101"의 배타적 논리합을 취하거나, 그 양방을 행한 경우도, 실시예 3의 시퀀스와 마찬가지로 "010"이 발생하는 개수를 0개로 할 수 있다. 이것은, 예를 들면, "10101010....1010 00000000....0000"이 아니라, "10101010....1010 11111111....1111"의 정보 비트의 경우에 적합하다.Here, in the third embodiment than in the first and second embodiments, the probability that a sequence of "010" three-bit symbols can be generated can be made smaller with reference to Fig. 20A. FIG. 20A shows a case where a bit string as shown in FIG. 9E, which is an example of the worst case pattern in which the number of occurrences of the three consecutive symbols of "010" in the case of Embodiment 2, increases most is shown. . In this case, odd bits and even bits are divided into 1st bit, 3rd bit, 5th bit, .... (k-1) bit, 2nd bit, 4th bit, 6th bit, .... k By rearranging bit by bit, the information bits of " 10101010 .... 1010 " of the (k / 2) bits and " 00000000 .... 0000 " of the (k / 2) bits of FIG. Since the rearrangement is performed by the information bits of "11111111 .... 1111" of (k / 4) bits and (00000000 .... 0000 "of (3k / 4) bits of Fig. 20A, The number of occurrences of "010" can be reduced to zero. As a result, the data corresponding to FIG. 20A are rearranged, and the flags 1, 2, and 3 are reset, reset, and set, respectively. As a result, an example of the code string output to the error correction code generation circuit 112 is shown in Fig. 20A3. In this way, the number of occurrences of "010" in the information bits including the flag can be reduced to zero. In addition, in this time, in order to simplify description, the case where the whole bit inversion or the information bit and the exclusive logical sum of "01010101 .... 0101" are not taken is explained, but this time is the all bit in the code | symbol of FIG. Even when the inversion, the exclusive bit of the information bits, and " 01010101 .... 0101 " are taken or both are performed, the number of occurrences of " 010 " can be set to zero as in the sequence of the third embodiment. This is suitable for the case of the information bits of "10101010 .... 1010 11111111 .... 1111" instead of "10101010 .... 1010 00000000 .... 0000", for example.

따라서, 일반적인 16비트보다 많은 k비트의 정보 비트에서는, 본 실시예를 이용함으로써, 최악의 "010"이 발생하는 수는 기껏해야 {(k/6)을 정수로 잘라올린 값}-1 이하의 개소로 감소할 수 있다. 왜냐하면, 실시예 1, 2의 논의와 마찬가지로 생각해서, 가령 실시예 3의 부호 변환을 실시한 정보 비트 중에 "010"의 수는 {(k/6)을 정수로 잘라올린 값}-1보다도 많다고 가정한다. 이 경우, 최악, "010"이 가장 조밀하게 배열된 경우에서도, "01010101....010"이 (k/3)+1비트 이상 연속된 비트로 점유되게 된다. 따라서, "010" 이외의 패턴의 비트수는 기껏해야 (2k/3)-1비트 이하이다. 여기서, "01010101....010"과의 배타적 논리합에 의해 "010" 패턴이 증가하고, 그 증가수가 부분 부호 길이당 가장 큰 패턴은 "00000000....0000"이 다. 따라서, 정보 비트와 "01010101....01"의 배타적 논리합을 취한 경우에서, 최악의 "010"이 발생하는 개소를 기껏해야 {(k/6)을 정수로 잘라올린 값}-1의 개소로 한정하기 위한 최소의 부분 부호 패턴은, "00000000....0000"이 [(k/3)-1]비트 길이이고, "01010101....010"이 (k/3)+1비트 이상 연속한 비트(연속 비트 a패턴이라고 이후 부름)로 된다. 따라서, 전술한 가정을 만족시키기 위해서는, a패턴 내의 끝의 1비트의 "0"의 겹침을 생각해서, k비트의 전체 정보 비트에서, 연속 비트 a패턴을 제외한 나머지 (k/3)+1비트 이하의 비트수에서 실시예 3의 제2 부호화에서 "010"의 수가 {(k/6)을 정수로 잘라올린 값}-1보다도 큰 정보 비트의 조합이 존재할 필요가 있다. 여기서, 실시예 2 및 실시예 3의 도 20의 (a)의 부호화의 논의로부터, 실시예 3의 홀수 비트와 짝수 비트를 1비트째, 3비트째, 5비트째, .... (k-1)비트째, 2비트째, 4비트째, 6비트째, .... k비트째로 재배열하는 시퀀스는, 실시예 1, 2의 부호의 비트 반전을 취하는 시퀀스 및 "01010101....0101"의 비트 마스크와 정보 비트의 배타적 논리합을 취하는 시퀀스와 각각 독립적으로 실시할 수 있고, 플래그1, 2, 3으로 나타내는 전부해서 8종류의 상태를 나누고 있는 것은 분명하다. 또한, 도 20의 (a)에서는, 상기 짝수 홀수 비트 재배열만으로, 연속 비트 a패턴은, "010"이 출현하는 수를 0까지 감소시킬 수 있다. 따라서, 전술한 가정을 만족시키기 위해서는, 연속 비트 a패턴을 제외한 나머지 (k/3)+1비트 이하의 비트수에서, 특히, 상기 짝수 홀수 비트 재배열에서, {(k/6)을 정수로 잘라올린 값}-1보다도 "010"의 연속 패턴이 증가하는 패턴일 필요가 있다. 짝수 홀수 비트 재배열에서, "010" 패턴이 증가하는 패턴은 "0x1x0x"(x는 "0" 또는 "1" 중 어느 하나) 의 패턴이 있고, 특히, 짝수 홀수 비트 재배열에서, 가장 "010" 패턴이 짝수 홀수 비트 재배열에서 증가하는 패턴은 "00110011....001100"의 반복 패턴으로 된다. 다른 베리에이션으로서는, "00110011....001100"의 반복 패턴을 비트 반전한 것이나, 상기 반복 패턴에 "01010101....0101"과의 배타적 논리합을 취한 것, 및 양방을 적용한 것을 포함하는 패턴으로 된다. 도 20의 (b1)의 우단의 비트열이 그것에 상당하고 있고, 도 20의 (b2), (b3), (b4)의 부호의 뒤쪽 (k/3)비트가, 실시예 3의 제2 부호 처리를 실시한 경우의 패턴 변화를 나타내고 있다. 이 경우, 도 20의 (b3)에서는, 최소로 (k/6)-2개의 "010"밖에 발생하지 않는다. 특히, 실시예 2에서 설명한 비트 반전과 "01010101....0101"과의 배타적 논리합의 조합에서는, "00110011....0011" 부분에서는 "010"의 3연속 비트가 발생하지 않는 것에 주의해야 한다.Therefore, in k bits of information bits more than 16 bits in general, by using this embodiment, the number of occurrences of the worst "010" is at most {(k / 6) truncated to an integer} -1 or less. It can be reduced to a point. This is because, in the same manner as in the discussion of the first and second embodiments, it is assumed that the number of "010" in the information bits subjected to the code conversion in the third embodiment is larger than {(k / 6) truncated to an integer} -1. do. In this case, even when "010" is arranged at the most densely, "01010101 .... 010" is occupied by (k / 3) + 1 bit or more consecutive bits. Therefore, the number of bits of the pattern other than "010" is at most (2k / 3) -1 bit or less. Here, the pattern "010" is increased by an exclusive OR with "01010101 .... 010", and the largest pattern of the increase number per partial code length is "00000000 .... 0000". Therefore, in the case where the information bit and the exclusive OR of "01010101 .... 01" are taken, the location of {(k / 6) truncated to an integer} -1 at most where the worst "010" occurs. The minimum partial code pattern to be limited to "00000000 .... 0000" is [(k / 3) -1] bit length, and "01010101 .... 010" is (k / 3) +1 bit. An abnormally continuous bit (hereinafter referred to as a continuous bit a pattern) is obtained. Therefore, in order to satisfy the above-described assumption, the overlapping of "0" of one bit at the end in the a pattern is considered, and all k bits of information bits, except for the continuous bit a pattern, remainder (k / 3) + 1 bit. In the following number of bits, there is a need for a combination of information bits having a larger number of "010" in the second encoding of the third embodiment than {value of truncated {(k / 6) to an integer} -1}. Here, from the discussion of the encoding of Fig. 20A in the second and third embodiments, the odd bits and the even bits of the third embodiment are the first bit, the third bit, the fifth bit, ... (k -1) The sequence for rearranging the bit, the second bit, the fourth bit, the sixth bit, the ... k-bit is a sequence that performs bit inversion of the sign of the first and second embodiments and " 01010101 .. It is clear that each of the eight types of states can be performed independently of a sequence that takes an exclusive logical sum of a .0101 "bit mask and an information bit, and is represented by flags 1, 2, and 3, respectively. In Fig. 20A, only the even-numbered odd bit rearrangement allows the continuous bit a pattern to reduce the number of occurrences of "010" to zero. Therefore, in order to satisfy the above assumption, in the number of bits of (k / 3) + 1 bit or less except for the continuous bit a pattern, in particular, in the even odd bit rearrangement, {(k / 6) becomes an integer. It is necessary to be a pattern in which the continuous pattern of "010" increases rather than the truncated value} -1. In the even odd bit rearrangement, the pattern in which the "010" pattern increases has a pattern of "0x1x0x" (x is either "0" or "1"), and particularly in the even odd bit rearrangement, most "010" The pattern in which the pattern increases in the even odd bit rearrangement becomes a repeating pattern of "00110011 .... 001100". Another variation is a pattern in which the repetition pattern of "00110011 .... 001100" is bit inverted, the exclusive logical sum of "01010101 .... 0101" is applied to the repetition pattern, and both are applied. do. The bit string at the right end of FIG. 20B1 corresponds to it, and the second (k / 3) bit of the code of FIGS. 20B2, B3, and B4 is the second code of the third embodiment. The pattern change in the case of processing is shown. In this case, in FIG. 20B3, only a minimum of (k / 6) -2 "010" occurs. In particular, it should be noted that in the combination of the bit inversion described in the second embodiment and the exclusive OR of "01010101 .... 0101", three consecutive bits of "010" do not occur in the "00110011 .... 0011" portion. do.

여기서, 일반적으로는, 재배열에 의해, {(k/6)을 정수로 잘라올린 값}-1보다 "010" 패턴이 증가하기 위해서는, 최소라도 (k/3)+4비트 이상의 "00110011....001100"이 필요로 된다. 연속 비트 a패턴의 끝의 "00"의 2비트의 중복을 제외하면, 연속 비트 a패턴을 제외한 나머지는 최저 (k/3)+2비트 이상 필요로 된다. 따라서, 실시예 3의 부호 변환을 실시한 정보 비트 중에 "010"의 수는 {(k/6)을 정수로 잘라올린 값}-1보다도 많다는 가정은 모순이므로, 실시예 3의 부호 변환을 실시한 정보 비트 중에 "010"의 수는 {(k/6)을 정수로 잘라올린 값}-1 이하로 된다.Here, in general, in order to increase the "010" pattern from {{k / 6] to an integer}}-1 by rearrangement, at least (k / 3) + 4 bits or more "00110011 .. ..001100 "is required. Except for duplication of two bits of " 00 " at the end of the continuous bit a pattern, the rest except for the continuous bit a pattern requires at least (k / 3) + 2 bits or more. Therefore, since the assumption that the number of "010" is greater than {(k / 6) truncated to an integer} -1 among the information bits subjected to the code conversion according to the third embodiment is contradictory, the information subjected to the code conversion according to the third embodiment The number of " 010 " in the bit is equal to or less than {(k / 6) truncated to an integer} -1.

또한, "00110011....0011"에 제2 실시예의 비트 반전한 것이나, 상기 반복 패턴에 "01010101....0101"과의 배타적 논리합을 취한 것, 및 양방을 적용한 것도, "0011"의 순회 패턴, 예를 들면 "01100110....0110"으로 되므로, 마찬가지로 기껏해야 (k/6)-1개 이하의 "010"밖에 발생하지 않는다.In addition, the bit inversion of the second embodiment is applied to "00110011 .... 0011", the exclusive OR of "01010101 .... 0101" is applied to the repeating pattern, and both are applied to "0011". Since it becomes a circulation pattern, for example, "01100110 .... 0110", similarly at most (k / 6) -1 or less "010" generate | occur | produces.

이상에서, 도 20의 (b1)이 실시예 3에서의 부호 변환을 행한 경우라도 "010"의 개수가 많은 일례이다. 이 경우, "010"의 개수는 (k/6)-2개로 억제할 수 있어, 최악의 "010"이 발생하는 수는 기껏해야 {(k/6)을 정수로 잘라올린 값}-1 이하의 개소로 감소할 수 있다. 도 20의 (b1)의 부호에, 실시예 2의 전체 비트 반전이나 정보 비트와 "0101010....1010"의 배타적 논리합을 취하거나, 그 양방을 행한 경우도, 마찬가지로, 제3 실시예의 부호화에 의해, "010"이 발생하는 개수를 기껏해야 {(k/6)을 정수로 잘라올린 값}-1 이하의 "010"으로 할 수 있다.In the above, even if the sign conversion in Example 3 of FIG. 20 (b1) is performed, the number of "010" is an example many. In this case, the number of " 010 " can be suppressed to (k / 6) -2, and the number of occurrences of the worst "010" is at most {(k / 6) truncated to an integer} -1 or less It can be reduced to the point of. The code of the third embodiment is likewise applied to the code of Fig. 20B1 with an exclusive OR of all the bit inversions, the information bits of the second embodiment, and " 0101010 .... 1010 " By this, at most, the number of occurrences of "010" can be set to "010" equal to or less than the value {(k / 6) truncated to an integer} -1 at most.

또한, 도 20의 (c1)에, "010"의 패턴을 포함하며, 또한, 전체 비트 반전이나 정보 비트와의 "0101010....1010"과의 배타적 논리합을 취하거나, 그 양방을 행한 경우도, "010"의 패턴과 거의 동일하게 발생하는 "010"의 발생 빈도가 높은 예를 도시한다. 각각의 레지스터 a, b, c, d 및, 카운터(108, 109, 112, 113)의 값도 오른쪽에 도시하고 있다. 이 패턴은, "0100" 혹은, "0001"의 4비트의 반복으로 되어 있어, 짝수 홀수 비트 재배열에서도 "010"의 발생 개수를 줄일 수 없는 패턴으로 되어 있다. "010"의 개수는 부호의 시계열 반전에서 불변량이므로, 시계열 반전을 생각한 "0010" 혹은 "1000"의 반복도 마찬가지의 카운트수로 되는 것은 분명하다. 이 패턴도, 실시예 3의 시퀀스를 행함으로써, 상기와 마찬가지로 "010"이 발생하는 개수를 기껏해야 {(k/6)을 정수로 잘라올린 값}-1 이하, 여기서는, (k/8) 개 이하의 "010"으로 할 수 있고, 상기 도 20의 (b) 쪽이 "010" 패턴 개수가 증가하는 패턴으로 된다. 이와 같이, "01010101....0101", 또는 "10101010....1010"의 연속 비트에서는 "010"의 발생 빈도는 (비트 길이/2)-1 정도 발생하지만, "010"의 심볼에 계속해서 다른 비트를 삽입해서 부호를 작성한 경우, 예를 들면, "01000100....0100"의 연속 비트에서는, "010"은 최대 (비트 길이/4) 정도로 감소한다. 따라서, "010"의 부분 정보 비트당의 발생 비트수는, 도 20의 (c)의 패턴과 같이 "010"을 분산시켜 배치한 경우에는, "01010101....0101" 또는 "10101010....1010"의 연속 비트가 실시예 3의 부호화에 의해 발생하는 경우와 비교해서, 연속 비트의 길이가 16비트보다 긴 경우에는 1/2 이하로 된다.In addition, when FIG. 20 (c1) includes the pattern of "010", and takes an exclusive logical sum with "0101010 .... 1010" with all the bit inversions and the information bits, or both are performed. FIG. 11 shows an example where the frequency of occurrence of "010", which occurs almost identically to the pattern of "010", is high. The values of the registers a, b, c, d and the counters 108, 109, 112, and 113 are also shown on the right. This pattern is a 4-bit repetition of "0100" or "0001", and is a pattern which cannot reduce the number of occurrences of "010" even in even-numbered odd bit rearrangements. Since the number of "010" is invariant in the time series inversion of the sign, it is clear that the repetition of "0010" or "1000" in consideration of the time series inversion also becomes the same count number. This pattern also performs the sequence of Example 3, so that similarly to the above, the number of occurrences of "010" is at most {(k / 6) truncated to an integer} -1 or less, here, (k / 8) It can be set to "010" or less, and the pattern (b) of FIG. 20 is a pattern in which the number of "010" patterns increases. In this way, in the consecutive bits of "01010101 .... 0101" or "10101010 .... 1010", the frequency of occurrence of "010" occurs about (bit length / 2) -1, but the symbol of "010" Subsequently, in the case where a code is created by inserting another bit, for example, in a continuous bit of "01000100 .... 0100", "010" decreases to the maximum (bit length / 4). Therefore, the number of generated bits per bit of the partial information of "010" is "01010101 .... 0101" or "10101010 ..." when the "010" is distributed and arranged like the pattern of FIG. Compared to the case where .1010 "continuous bits are generated by the encoding of the third embodiment, the length of the continuous bits is 1/2 or less when the length of the continuous bits is longer than 16 bits.

한편, 실시예 1, 2의 "010"이 발생하는 개수의 상한값, 즉, {(k/4)를 정수로 잘라올린 값}-1값과, 실시예 3의 "010"이 발생하는 개수의 상한값, 즉, {(k/6)을 정수로 잘라올린 값}-1의 비는 k가 16비트 이상에서, 2배 이하이다. 또한, k이 20비트 이상에서는, 2배보다 작아진다. 따라서, "010"을 분산시켜 배치한 경우에는 "10101010....1010"의 연속 배치한 경우에 비해, k가 16비트 이상에서는, 최악의 "010"이 발생하는 개수의 상한값 이하로 되고, k가 20비트 이상에서는, 보다 작아진다.On the other hand, the upper limit of the number of occurrences of "010" in Examples 1 and 2, i.e., the value {{k / 4) is truncated to an integer} -1 value and the number of occurrences of "010" in Example 3, respectively. The ratio of the upper limit value, that is, the value {(k / 6) is truncated to an integer}-1 is 2 times or less when k is 16 bits or more. In addition, when k is 20 bits or more, it becomes smaller than twice. Therefore, when "010" is distributed and arranged, when k is 16 bits or more, it becomes less than the upper limit of the number which the worst "010" occurs, compared with the case where "10101010 .... 1010" is arranged continuously. When k is 20 bits or more, it becomes smaller.

상기한 바와 같이, 본 실시예 3에 따르면, 적어도 상기 (1) 내지 (2)와 마찬가지의 효과가 얻어진다.As described above, according to the third embodiment, at least the same effects as in the above (1) to (2) can be obtained.

또한, 이상으로부터, 본 실시예 3에서 제2 부호 변환함으로써, "010" 패턴이 발생하는 개수를, 최악, {(k/6)을 정수로 잘라올린 값}-1 이하로 억제할 수 있다. 따라서, 실시예 3의 조작을 행함으로써, 실시예 1이나 2보다도 최악의 "010"이 발생하는 수는 기껏해야 {(k/6)을 정수로 잘라올린 값}-1의 개소까지 감소시킬 수 있다.From the above, by the second sign conversion in the third embodiment, the number of occurrences of the "010" pattern can be suppressed to the value of {(k / 6) truncated to an integer} -1 or less at the worst. Therefore, by performing the operation of Example 3, the number of occurrences of "010" worst than Example 1 or 2 can be reduced to the location of {(k / 6) truncated to an integer} -1 at most. have.

예를 들면, 도 29 중의 화살표 Y3으로 나타내는 바와 같이, "010"의 심볼수가 100개 정도인 경우에, 실시예 1, 2와 비교해서, "010"이 출현하는 최악 상태수를 더욱 저감할 수 있다.For example, as indicated by arrow Y3 in FIG. 29, when the number of symbols of "010" is about 100, compared with the first and second embodiments, the worst case number in which "010" appears can be further reduced. have.

또한, 도 20의 (b4) 및 도 20의 (c4)을 보면 명확해지는 바와 같이, 실시예 3의 짝수 홀수 비트의 재배열 후의 패턴은 "01010101....0101", "10101010....1010", "0000000....0000", "11111111....1111"의 부분 정보 비트열의 조합으로 되어 있다. 따라서, 짝수 홀수 비트의 재배열을 행한 정보 비트열에 대하여, 다시 짝수 홀수 비트의 재배열을 행하고, 그 후에, 전체 비트 반전이나 정보 비트와 "01010101....0101"의 배타적 논리합을 취하거나, 그 양방을 행함으로써, 다시 "010"이 발생하는 개수를 더욱 감소시킬 수 있다. 이 때, 새로운 1비트의 플래그4와 그것에 대응하는 부호를 정보 비트에 플래그3과 마찬가지로 부가하면 되는 것은 분명하므로, 생략한다.20 (b4) and 20 (c4), the pattern after rearrangement of even odd bits of the third embodiment is "01010101 .... 0101", "10101010 ...." 1010 "," 0000000 .... 0000 ", and" 11111111 .... 1111 "are a combination of partial information bit strings. Therefore, the even-numbered bits are rearranged again with respect to the information-bit sequence in which the even-numbered odd bits are rearranged, and then the inversion of all bits or an exclusive logical sum of "01010101 .... 0101" with the information bits, or By doing both, it is possible to further reduce the number of occurrences of "010" again. At this time, it is obvious that a new one-bit flag 4 and a code corresponding thereto are added to the information bit in the same manner as the flag 3, and thus it is omitted.

여기서, 도 29에 실시예 2 및 3 및 상기 짝수 홀수 비트의 재배열을 다시 행한 경우의 실례를 도시한다. 이 실례에서는, 2치 16비트, 즉 부호 길이 k=16의 2^16=65536종류의 모든 정보 비트 배열을 상정하고, 그 중의 "010"이 연속되는 개수를 계측하였다. 횡축은 1개의 16비트의 부호에 포함되는 "010"의 개수를 나타내고, 종축은 그 "010" 개수를 포함하는 정보 비트의 누적수를 나타내고 있다. 또 한, 각 심볼의 관련을 알기 쉽게 하기 위해서, 심볼간을 선으로 연결해서 표시하고 있지만, 물론 심볼수로서는 0 및 자연수의 이산적인 값만이 의미가 있으며, 1보다 작은 값은 심볼수가 0을 의미하고 있다.Here, an example in the case where rearrangement of Embodiments 2 and 3 and the even odd bits is performed again is shown in FIG. In this example, all of the information bit arrays of binary 16 bits, that is, 2 ^ 16 = 65536 types of code length k = 16 are assumed, and the number of consecutive "010" is measured. The horizontal axis represents the number of "010" included in one 16-bit code, and the vertical axis represents the cumulative number of information bits including the "010" number. In addition, in order to make the relation of each symbol easy to understand, the symbols are connected by lines, but of course, only the discrete values of 0 and natural numbers are meaningful as the number of symbols, and a value smaller than 1 means 0 symbols. Doing.

1개의 정보 비트에 포함되는 "010"의 최악 개수는, 실시예 중에서 설명한 바와 같이, ○로 나타내는 비교예에서는, (k/2)-1=7개 포함되어 있고, 실시예 2에 상당하는 □에서는, {(k/4)를 정수로 잘라올린 값}-1=3개 포함되어 있고, 짝수 홀수의 재배열을 1회 행한 실시예 3에 상당하는 □에서는, {(k/6)을 정수로 잘라올린 값}-1=2개 포함되어 있어, 최악의 개수를 억제한다고 하는 이점은 명백하다. 또한, 다시 짝수 홀수 비트의 재배열을 1회 행한 후, 다시 한번 그것을 정보 비트라고 간주해서 짝수 홀수 비트의 재배열을 행한 실시예 3의 상기 설명예를 마름모꼴 및 2점 쇄선으로 나타낸다. 이것은, 구체적으로는, a, b, c, d, e, f, g, h....m, n, o, p를 각각 1비트에 상당하는 비트로 하고, "abcdefgh....mnop"라고 하는 정보 비트열을 16bit마다 구획한 경우에, "aceg....mo bdfh....np"라고 하는 재배열을 행하고, 또한, 최종적으로 "ae....m cg....o bf....n dh....p"라고 하는 재배열을 행한 경우에 상당한다. 이 재배열 후에, 전체 비트 반전이나 정보 비트와 "01010101....0101"의 배타적 논리합을 취하거나, 그 양방을 행함으로써, 8+4종류=12종류의 경우에, "010"이 포함되는 수의 최소의 경우를 추출하여 플롯한 것이다. 이와 같이, 다시, 짝수 홀수 비트의 재배열을 2회 반복함으로써, 다시, 정보 비트에 포함되는 "010"의 개수를, 이 실례에서는 1이하로 저감할 수 있고, "010"이 포함되는 개수가 1개인 정보 비트의 경우수도 비교예보다 감소시킬 수 있다. 물론, 이들 제2 부호화에서, 정보 비트에는, 전체 비트 반전이든 배타적 논리합이든 재배열밖에 행하고 있지 않으므로, 부호화에 의한 정보의 손실은 없어, 역변환을 용이하게 할 수 있는 것은 분명하다.As described in the examples, the worst number of "010" included in one information bit includes (k / 2) -1 = 7 in the comparative example indicated by ○, which corresponds to Example 2 In () corresponding to Example 3 in which {(k / 4) was truncated to an integer} -1 = 3, and even-numbered odd rearrangement was performed once, {(k / 6) is an integer. It is clear that the value} -1 = 2 cut | disconnected and the suppression of the worst number are suppressed. In addition, the above-described example of Example 3 in which the even-numbered bits are rearranged once and then rearranged even-numbered bits is regarded as information bits once again is shown by a rhombus and a two-dot chain line. Specifically, a, b, c, d, e, f, g, h .... m, n, o, and p are bits corresponding to 1 bit, respectively, and "abcdefgh .... mnop" In the case where the information bit sequence called is divided into 16 bits, rearrangement of "aceg .... mo bdfh .... np" is performed and finally "ae .... m cg .... o bf .... n dh .... p "corresponds to a rearrangement. After this rearrangement, "010" is included in the case of 8 + 4 types = 12 types by taking an exclusive OR of all bits and information bits and "01010101 .... 0101", or both. Minimal cases of numbers were extracted and plotted. Thus, by repeating the rearrangement of the even-numbered odd bits twice, again, the number of "010" included in the information bits can be reduced to 1 or less in this example, and the number including "010" In the case of one individual information bit, the number can be reduced more than in the comparative example. Of course, in these second encodings, since only the rearrangement is performed on the information bits, whether the entire bits are inverted or the exclusive OR, it is clear that there is no loss of information due to the encoding and the inverse transformation can be facilitated.

물론, 상기 실시예에서, 짝수 홀수의 재배열은 홀수 비트를 앞에 짝수 비트를 뒤로 하였지만, 적절히, 이것은 짝수 비트를 앞에, 및 홀수 비트를 뒤로 해도 상관없다. 또한, 금회는 짝수 홀수 비트의 재배열을 2회 행한 예를 설명하였지만, 정보 비트 길이가 긴 경우에는, 다시 3회, 4회로 반복해서 이용해도 상관없다.Of course, in the above embodiment, the even-numbered rearrangement puts even bits in front of the odd bits, but appropriately, this may be done in front of the even bits and behind the odd bits. In addition, although the example which performed rearrangement of the even-numbered odd bit twice was demonstrated this time, when the information bit length is long, you may use it again and again three times and four times.

본 실시예 3에서는, 물론, 실시예 2의 작용·효과 및 실시예 1의 (1) 및 (2)의 특징은 본 실시예에서도 존재한다. 또한, 본 실시예에서는, 실시예 2에 비해, 플래그3이라고 하는 정보로서 1비트, 물리 비트로서 2비트를 정보 비트에 부가함으로써, 실시예 2의 "010"이 발생하는 개수 상한인 {(k/4)를 정수로 잘라올린 값}-1 이하로부터, {(k/6)을 정수로 잘라올린 값}-1 이하까지 저하시킬 수 있다. 예를 들면, 1개의 메모리 셀α가 도 2의 기입 임계값(v)과의 겹침이 발생하거나, 읽어내기 레벨이 기입 임계값이라고 판단하는 임계값을 초과하고, 소거 비트가 기입 비트로 오인식되어 불량일 확률을 p0으로 하면, p0이 충분히 1보다 작은 것으로 해서, 비교예의 [(k/2)-1]×p0의 불량이 발생할 확률을, [{(k/6)을 정수로 잘라올린 값}-1]×p0까지 저하시킬 수 있다.In the third embodiment, of course, the functions and effects of the second embodiment and the features of (1) and (2) of the first embodiment also exist in this embodiment. In addition, in the present embodiment, compared with the second embodiment, by adding one bit as the information called flag 3 and two bits as the physical bits to the information bits, the upper limit of the number of occurrences of "010" in the second embodiment is {(k / 4) can be reduced from the value} -1 or less cut off to {(k / 6) to the integer value} -1 or less. For example, one memory cell α overlaps with the write threshold value v of FIG. 2, or the read level exceeds a threshold value determined as the write threshold value, and the erase bit is incorrectly recognized as the write bit. If the probability is p0, p0 is sufficiently smaller than 1, and the probability that a defect of [(k / 2) -1] × p0 occurs in the comparative example is [{(k / 6) is cut off to an integer}} -1] x p0 can be reduced.

또한, 본 출원의 실시예 1, 2, 3의 현저한 특징은 반복되지만, 각 실시예에서 "010"이 발생하는 개수 상한의 수치를 명확하게 제공하고 있는 것에 있다. 이에 의해, 후술하는 실시예 4의 SE59에 설명되는 바와 같이, "010"이 발생하는 개수 상한을 일정 이하로 억제한 상태 그대로, 다른 개선 방법을 병용할 수 있다.In addition, although the remarkable characteristic of Example 1, 2, 3 of this application is repeated, it exists in providing the numerical value of the upper limit of the number of numbers which "010" generate | occur | produces in each Example clearly. Thereby, another improvement method can be used together as it is in the state which suppressed the upper limit of the number which "010" generate | occur | produces below fixed as described in SE59 of Example 4 mentioned later.

[실시예 4]Example 4

다음으로, 실시예 4에 따른 데이터 기억 시스템에 대해서, 도 21 내지 도 23을 이용해서 설명한다. 도 21은, 실시예 4에 따른 데이터 기억 시스템의 전체 구성예를 도시하고 있다.Next, the data storage system according to the fourth embodiment will be described with reference to FIGS. 21 to 23. 21 shows an example of the overall configuration of a data storage system according to the fourth embodiment.

본 실시예 4는, 상기 실시예 1 내지 3의 실시, 특히 실시예 3의 실시 외에, 또한, 도 1의 "010" 심볼이 발생한 부분의 한 가운데의 "1" 비트 M1a(α)와, WL 방향으로 물리적으로 인접하는 비트 M2a(ε)가 기입 비트 "0"인 조합을 줄임으로써, 보다 인접 메모리 셀의 용량 결합에 의한 임계값 증가 문제를 줄일 수 있다. 또한, 본 실시예는, 실시예 1 내지 3과 독립적으로 행할 수도 있지만, 실시예 1 내지 3과 동일한 효과, 즉, 인접 메모리 셀의 용량 간섭의 영향을 완화하는 효과가 있으므로, 조합해서 이용하는 것이 가장 바람직하다. 실시예 1이나 실시예 2, 실시예 3과 동일한 부분이나 동일한 동작 부분에는, 동일 부호를 붙이고 상세한 설명은 생략한다. 본 실시예는 실시예 1 내지 3 중 어느 실시에에서도 적용할 수 있지만, 여기서는, 가장 효과가 높은 실시예 3에 관한 적용예를 설명한다.In the fourth embodiment, in addition to the first to third embodiments, in particular the third embodiment, the "1" bit M1a (?) And WL in the middle of the portion where the "010" symbol in FIG. By reducing the combination where bits M2a (ε) that are physically adjacent in the direction are the write bits " 0 ", the problem of increasing the threshold value due to the capacitive coupling of adjacent memory cells can be further reduced. In addition, although the present embodiment can be performed independently of the first to third embodiments, the same effect as the first to third embodiments, that is, the effect of alleviating the influence of the capacitive interference of adjacent memory cells, is best used in combination. desirable. The same parts as the first embodiment, the second embodiment, and the third embodiment or the same operation part are denoted by the same reference numerals and detailed description thereof will be omitted. The present embodiment can be applied to any of the first to third embodiments, but the application example of the third embodiment having the highest effect will be described here.

실시예 3까지와 실시예 4의 구성 상의 차이는, 도 15와 도 21을 비교하면 분명해지는 바와 같이, 기입을 행하는 메모리 셀에 대하여 WL 방향으로 인접한 메모리 셀, 특히, 이미 기입한 메모리 셀을 포함하는 워드선(데이터 선택선)의 정보 비트의 임계값을 기억하는 페이지 버퍼(115)를 더 갖고 있는 것이다.The differences in the configurations of the third embodiment and the fourth embodiment include memory cells adjacent to the WL direction with respect to the memory cells to write, in particular, memory cells that have already been written, as will be apparent when comparing FIGS. 15 and 21. It further has a page buffer 115 which stores the threshold value of the information bit of the word line (data selection line).

다치 NAND 플래시 메모리에서는, 동일한 레벨의 다치 데이터는 소스선에 가 까운 측으로부터 순서대로 기입된다. 따라서, 이 페이지 버퍼(115)로서는, 소스선측의 인접 워드선에 형성된 메모리 셀의 데이터를 기억하는 버퍼로 되는 것이 바람직하다. 이후에서는, 기입을 행하는 메모리 셀을 포함하는 워드선(데이터 선택선)을 WLn로 하고, WLn에 물리적으로 인접하며, 이미 기입한 메모리 셀을 포함하는 워드선(데이터 선택선)을 WLn-1 또는 WL(n-1)이라고 간략하게 표현한다.In multi-value NAND flash memory, multi-value data of the same level is written in order from the side closest to the source line. Therefore, it is preferable that the page buffer 115 is a buffer for storing data of memory cells formed in adjacent word lines on the source line side. Thereafter, a word line (data selection line) including a memory cell to write is referred to as WLn, and a word line (data selection line) including memory cells physically adjacent to WLn and already written is referred to as WLn-1 or It is briefly expressed as WL (n-1).

또한, 이 페이지 버퍼(115)는, 오류 정정 부호 복호 회로(103)에 접속되고, 플래시 메모리(7)로부터 이미 기입한 메모리 셀을 포함하는 워드선(데이터 선택선)의 정보 비트를 기억한다. 여기서, 페이지 버퍼(115)에 기억된 데이터는, 임계값에 의해 "0", "1" 판단을 행한 데이터를 기억하도록 되어 있었던 쪽이, 오류 비트가 적어 바람직하다. 단, 오류 정정의 시간 및 회로 규모가 증대하는 경우에는, 데이터 입출력 버퍼(101)로부터 직접적으로, 오류 정정 전의 부호의 정보 비트 부분을 WLn-1의 정보 비트로서 이용해도 상관없다. 왜냐하면, 본 실시예에서의 오류 정정 부호는, 정보 비트와 검사 비트가 분리되고, 오류 정정 부호 내에 정보 비트가 그대로 들어가 있는 분리 부호이며, 본 실시예의 읽어내기 방법은 실시예 1 내지 실시예 3까지와 마찬가지로, 기입 시와 달리 WLn-1의 읽어내기의 필요가 없어, 읽어내기 시의 WLn-1의 비트 오류에 의해, 직접 비트 오류하는 일이 없기 때문이다. 또한, 예를 들면, 실시예 3의 구성에 본 실시예를 적용하는 경우에는, 기입 시의 데이터의 부호화에 대하여, WLn-1의 데이터의 복수회의 읽어내기가 필요로 된다. 따라서, 정보 비트의 불휘발성 메모리(7)로부터의 읽어내기가 충분히 빨라 처리 시간이 문제 없는 경우에는, 페이지 버퍼(115)를 생략하고, 그 참조 부호 115 대신에, 불휘발성 메모리(7)를 순서대로 데이터를 읽어내는 방법에서 대용해도 상관없다. 페이지 버퍼(115)의 구체적인 구성은 페이지 버퍼(114)와 마찬가지로 구성하면 회로 구성할 수 있으므로 생략한다.The page buffer 115 is connected to an error correction code decoding circuit 103 and stores information bits of a word line (data selection line) including memory cells already written from the flash memory 7. Here, it is preferable that the data stored in the page buffer 115 is configured to store data in which " 0 " and " 1 " However, when the error correction time and the circuit scale increase, the information bit portion of the code before the error correction may be used directly as the information bit of WLn-1 from the data input / output buffer 101. This is because the error correction code in the present embodiment is a separation code in which the information bits and the check bits are separated and the information bits remain in the error correction code. The reading method of this embodiment is from the first to third embodiments. Similarly, unlike writing, there is no need of reading WLn-1, and a bit error of WLn-1 at the time of reading does not directly cause a bit error. For example, when the present embodiment is applied to the configuration of the third embodiment, a plurality of times of reading of the data of WLn-1 is required for encoding of data at the time of writing. Therefore, when the information bits are quickly read from the nonvolatile memory 7 and the processing time is not a problem, the page buffer 115 is omitted, and the nonvolatile memory 7 is replaced with the reference numeral 115 instead. You can substitute them in the way that data is read. The specific configuration of the page buffer 115 may be omitted if it is configured in the same manner as the page buffer 114.

실시예 1 내지 3까지와 실시예 4의 구성 상의 한층 더한 차이는, 기입이 이미 이루어지고, "010"의 연속 심볼이 발생한 WLn-1 부분의 한 가운데의 "1" 비트 M1a(α)와, 지금부터 기입을 하는 WLn 내에 형성된 인접하는 비트의 M2a(ε)가 기입 비트 "0"'인 조합을 카운트하는 심볼 카운터(116, 117, 118, 119) 회로를 더 설치한 점에 있다. 또한, WLn에 대하여 실시예 3에서 이용되는 8종류의 부호 변환의 조합에 대하여, WLn-1 내의 메모리 셀의 정보열 중의 "010"과, 미리 각 변환 후의 WLn의 "x0x"(x는 "0", "1"의 임의의 비트)의 수를 세어 두고 정량 비교함으로써, 실시예 1-3에서 설명한 도 2 중의 (iii)의 경우보다 문제로 되는 도 2의 (iv)에서 도시한 상태의 출현 확률을 보다 감소시키고 있다.Further differences in the configurations of the first to third embodiments and the fourth embodiment include the " 1 " bit M1a (?) In the middle of the portion of the WLn-1 in which writing has already been made and " 010 " The present invention further provides symbol counter circuits 116, 117, 118, and 119 for counting combinations in which the adjacent bits M2a (ε) formed in WLn to write are the write bits " 0 " '. For the combination of eight types of code conversions used in the third embodiment with respect to WLn, "010" in the information string of the memory cells in WLn-1 and "x0x" of WLn after each conversion in advance (x is "0"). The occurrence of the state shown in (iv) of FIG. 2 which is more problematic than the case of (iii) in FIG. It is reducing the probability.

<심볼 카운터(116∼119)의 회로 구성예><Example of circuit configuration of symbol counters 116 to 119>

도 22에 실시예 4의 심볼 카운터(116, 117, 118, 119)의 회로 구성예를 도시한다.FIG. 22 shows a circuit configuration example of the symbol counters 116, 117, 118, and 119 of the fourth embodiment.

예를 들면, 카운터(116) 및 카운터(117)는, 도 22와 같이, WLn의 정보 비트의 처음부터, 일련의 정보 비트를 순서대로 시계열로 참조 부호 208로 이루어지는 1단위 시간 지연 회로에 입력하고, WLn-1에서 "010" 연속하는 3비트의 심볼의 한 가운데의 비트가 WLn에서 "1"로 되는 수를 검출하는 회로와 "0"으로 되는 수를 검출하는 회로를 조합하여, "H"로 되었을 때의 단위 시간수를 카운터에서 셈으로써 용이하게 실현할 수 있다. 도 22에서, 카운터(116)에 접속된 입력에서는, WLn-1이 "010"이 순서대로 입력된 단위 시간에서, WLn-1이 "010"로 되고, 또한, WLn이 "x0x"으로 된 경우, WLn-1의 "010" 최후의 "0"이 입력된 단위 시간에서, 출력이 1단위 시간 "L"로부터 "H"로 되고, 다른 경우에는 "L"로 된다. 또한, 도 22에서, 카운터(117)에 접속된 입력에서는, "010"이 순서대로 입력된 단위 시간에서, WLn-1이 "010"로 되며, 또한, WLn이 "x1x"로 된 경우, WLn-1의 "010" 최후의 "0"이 입력된 단위 시간에서, 출력이 1단위 시간 "L"로부터 "H'로 되고, 다른 경우에는 "L"로 된다. 또한, 상기 "1" 검출 회로와 "0" 검출 회로는, WLn-1에서 "010" 연속하는 3비트의 심볼로 되는 것을 검출하는 회로(도 22의 좌측 하부에 상당)와의 논리곱을 카운터에서 셈으로써 실현된다. 여기서, WLn-1의 정보 비트가 들어간 페이지 버퍼(115)로부터, 상기 WLn의 정보 비트 입력과 동기시켜 정보 비트의 처음부터 일련의 정보 비트를 순서대로 시계열로 입력시키는 것으로 한다.For example, as shown in Fig. 22, the counter 116 and the counter 117 input a series of information bits from the beginning of the information bits of WLn into the one-unit time delay circuit composed of the reference numeral 208 in time series in order. &Quot; H " in combination with a circuit for detecting the number where the bit in the middle of the symbol of 010 consecutive to " 010 " in WLn-1 becomes " 1 " It is easy to realize by counting the number of unit hours when the value is set to the counter. In Fig. 22, in the input connected to the counter 116, WLn-1 becomes "010" and WLn becomes "x0x" in the unit time in which WLn-1 is input in order of "010". In the unit time at which the "010" last "0" of WLn-1 was input, the output becomes "H" from one unit time "L", and "L" in other cases. In Fig. 22, in the input time connected to the counter 117, WLn-1 becomes " 010 " at the unit time in which " 010 " is input in sequence, and WLn becomes " x1x " In unit time in which "010" last "0" of -1 was input, the output becomes "H" from one unit time "L", and "L" in other cases. And a "0" detection circuit are realized by counting a logical product with a circuit (corresponding to the lower left of Fig. 22) that detects that WLn-1 is a symbol of three consecutive "010" symbols at WLn-1, where WLn-. From the page buffer 115 containing the information bits of 1, it is assumed that a series of information bits are sequentially inputted in order from the beginning of the information bits in synchronization with the information bit input of the WLn.

한편, WLn-1이 "010"이라고 하는 심볼이며, 또한, WLn은 "01010101....0101"의 비트 마스크와 배타적 논리합을 취한 후에 "x0x"로 되는 경우를 검출하는 회로는 도 13의 회로 설명과 마찬가지로, 도 22의 회로로 실현할 수 있다. 여기서, 정보 비트를 부여하는 클럭을 1/2 분주기(213)에서 분주하면, 그 출력은, 예를 들면, 정보 비트의 y비트째로서, y비트의 짝수 홀수에서 각각 "1", "0"이 출력된다. 따라서, 심볼 카운터(118)에 전기적으로 접속된 입력은, 예를 들면, WLn-1이 "010"이라고 하는 심볼이며, 또한, (WLn이 "x1x"이며, 또한, y비트째가 짝수인 경우) 또는, (WLn이 "x0x"이며, 또한, y비트째가 홀수인 경우)와의 논리합으로 되고, 이것 은, WL(n-1)이 ""010"이라고 하는 심볼이며 또한, WLn의 정보 비트와, "01010101....0101"의 배타적 논리합을 취한 비트열 중의 "x0x"의 3bit 연속된 심볼이 존재하는 경우에, WLn-1의 "010" 최후의 "0"이 입력된 단위 시간에서, 1단위 시간 "H", 그 이외의 경우에 "L"로 된다. 한편, 심볼 카운터(119)에 전기적으로 접속된 입력은, 예를 들면, WL(n-1)이 "010"이라고 하는 심볼이며 또한, (WLn이 "x1x"이며, 또한, y비트째가 홀수인 경우) 또는, (WLn이 "x0x"이며, 또한, y비트째가 짝수인 경우)와의 논리합으로 되고, 이것은, WL(n-1)이 "010"이라고 하는 심볼이며 또한, WLn의 정보 비트와, "10101010....1010"의 배타적 논리합을 취한 비트열 중의 "x0x"의 3bit 연속한 심볼이 존재하는 경우에 WLn-1의 "010" 최후의 "0"이 입력된 단위 시간에서, 1단위 시간 "H", 그 이외의 경우에 "L"로 된다. 따라서, 이들 2입력 0R 회로(214)의 출력을 정보 비트 입력의 단위 시간과 동기시키고, 예를 들면, 상기 단위 시간에서 OR 출력의 논리값이 안정된 부분에서 트리거하여 카운트함으로써, 카운터(118) 및 카운터(119)에서 카운트할 수 있다. 예를 들면, 도 22의 카운터는 일반적으로 알려진 바이너리 카운터로 구성하면 되므로, 여기서는 카운터의 상세 내용은 생략한다.On the other hand, the circuit for detecting the case where WLn-1 is a symbol "010" and WLn becomes "x0x" after taking an exclusive OR with the bit mask of "01010101 .... 0101" is the circuit of FIG. Like the description, the circuit of FIG. 22 can be realized. Here, when the clock for giving the information bits is divided by the 1/2 divider 213, the output thereof is, for example, the y-th bit of the information bit and is " 1 " and " 0 " Is printed. Therefore, the input electrically connected to the symbol counter 118 is, for example, a symbol in which WLn-1 is "010", and (WLn is "x1x", and the y-bit is even. Or OR (when WLn is " x0x " and y-bit is odd), this is a symbol in which WL (n-1) is " 010 " and an information bit of WLn. And a 3-bit consecutive symbol of " x0x " in the bit string in which the exclusive OR of " 01010101 .... 0101 " is present, the " 010 " last " 0 " Is 1 unit time "H", otherwise, "L" On the other hand, the input electrically connected to the symbol counter 119 is, for example, that WL (n-1) is "010". The symbol is also a logical sum of (when WLn is " x1x " and y-bit is odd) or (when WLn is " x0x " and y-bit is even). (n-1) is a symbol called "010" In the case where there is a 3-bit consecutive symbol of "x0x" in an information bit of WLn and an exclusive logical OR of "10101010 .... 1010", the last "0" of WLn-1 is "0". In the input unit time, the unit time is "H", otherwise, it is "L". Therefore, the outputs of these two-input 0R circuits 214 are synchronized with the unit time of the information bit input, for example. By counting by triggering at a stable portion of the OR output in the unit time, the counter can be counted by the counter 118 and the counter 119. For example, the counter of Fig. 22 comprises a generally known binary counter. Since the details of the counter are omitted here.

<실시예 4에 따른 제2 부호 변환 회로(104)의 구체적 시퀀스><Specific sequence of second code conversion circuit 104 according to the fourth embodiment>

도 23에 실시예 4의 참조 부호 104의 구체적 시퀀스를 도시한다.23 shows a specific sequence of the reference numeral 104 of the fourth embodiment.

참조 부호 104에서는, 우선, S51에서, 플래그1, 플래그2 및 플래그3을 리세트해서 페이지 버퍼(114)로부터 기입을 행하는 WLn의 1비트째, 3비트째, 5비트째, (k-1)비트째의 홀수 비트의 (k/2)비트 개수의 정보 비트 데이터를 읽어낸다. 또 한, 불휘발성 메모리 회로(7) 또는 페이지 버퍼(115)로부터, WLn과 인접하는 기입이 이루어진 WLn-1의 1비트째, 2비트째, 3비트째, .... (k/2)비트째의 (k/2)비트 개수의 정보 비트 데이터를 읽어낸다. 홀수 비트를 카운터에 출력하는 방법은, 예를 들면, 도 17의 (b)의 좌측의 방법으로 홀수의 정보 비트를 출력하면 된다.In the reference numeral 104, first, in S51, the first, third, and fifth bits of WLn which reset the flag 1, the flag 2, and the flag 3 to write from the page buffer 114, (k-1) Reads information bit data of the number of (k / 2) bits of odd bits of the bit. Further, from the nonvolatile memory circuit 7 or the page buffer 115, the first, second, third, ..., (k / 2) of WLn-1 in which writing is performed adjacent to WLn. Read the information bit data of the (k / 2) bit number of the bit. As a method of outputting the odd bits to the counter, for example, the odd information bits may be output by the method on the left side of Fig. 17B.

다음으로, SE52에서, 페이지 버퍼(114)로부터 기입을 행하는 WLn의 2비트째, 4비트째, 6비트째, .... k비트째의 짝수 비트의 (k/2)비트 개수의 정보 비트 데이터를 읽어낸다. 또한, 페이지 버퍼(115)로부터, WLn과 인접하는 기입이 이루어진 WLn-1의 (k/2)+1비트째, (k/2)+2비트째, (k/2)+3비트째, .... k비트째의 (k/2)비트 개수의 정보 비트 데이터를 읽어낸다. 예를 들면, 도 17의 (b)의 우측의 방법으로 홀수 비트 출력 후에 짝수의 정보 비트를 출력한다.Next, in SE52, the information bits of the number of (k / 2) bits of the even bits of the 2nd, 4th, 6th, ... k-bits of WLn to write from the page buffer 114. Read the data. In addition, from the page buffer 115, the (k / 2) + 1st bit, (k / 2) + 2nd bit, (k / 2) + 3rd bit of WLn-1 in which writing is made adjacent to WLn, .... Reads information bit data of (k / 2) bit number of k-bit. For example, even-numbered information bits are output after odd-bit output by the method on the right side of FIG.

다음으로, SE53에서, 예를 들면, WLn의 정보 비트 내의 "010" 심볼을 카운터(118)에서 카운트하고, "101" 심볼을 카운터(109)에서 카운트하고, k비트 길이의 상기 홀수 비트와 짝수 비트가 연속된 것을 "01010101....0101", 즉 "01"을 비트의 처음부터 반복해서 배열한 것과 배타적 논리합을 취한 "010" 심볼을 카운터(112)에서 카운트한다. 또한, k비트 길이의 정보 비트를 "10101010....1010"의, 즉 "10"을 비트의 처음부터 반복해서 배열한 것과 배타적 논리합을 취한 "010" 심볼을 카운터(113)에서 카운트한다. 이것에는, SE51, SE52의 정보 비트를, 예를 들면, 도 13의 정보 비트 입력에 입력하면 된다.Next, in SE53, for example, the " 010 " symbol in the information bit of WLn is counted in the counter 118, the " 101 " symbol is counted in the counter 109 and is even with the odd bits of k bits in length. The counter 112 counts " 01010101... 0101 ", ie, " 01 " repeatedly arranged from the beginning of the bit, and " 010 " Further, the counter 113 counts the information bits of length 1010010010 .... 1010, that is, the sequence "10" repeatedly arranged from the beginning of the bit, and the "010" symbol which takes an exclusive OR. In this case, information bits of SE51 and SE52 may be input to the information bits input of FIG. 13, for example.

다음으로, SE54에서, 예를 들면, WLn-1 내의 정보 비트 중의 "010 " 심볼과 제2 부호 변환 후의 인접 WLn의 "x0x" 비트를 검출한다. 이 심볼 검출에는, 예를 들면 도 22에서 도시한 회로를 이용하면 된다. 이 심볼을 검출한 조건에서 이하를 행한다. 우선, WLn의 정보 비트(k-bit) 중의 "x0x"(2비트째가 기입)의 비트의 개수를 심볼 카운터(116)에서 카운트한다. 그리고, WLn의 정보 비트(k-bit) 중의 "x1x"(2비트째가 소거)의 비트의 개수를 심볼 카운터(117)에서 카운트한다. 그리고, WLn의 정보 비트(k-bit)와 "01010101....0101"의 배타적 논리합을 취한 비트열의 "x0x"의 연속 비트의 개수를 심볼 카운터(118)에서 카운트한다. 그리고, WLn의 정보 비트(k-bit)와 "10101010....1010"의 배타적 논리합을 취한 비트열의 "x0x"의 연속 비트의 개수를 심볼 카운터(119)에서 카운트한다. 이들은, SE51, SE52의 WLn, WLn-1의 정보 비트를 도 22의 정보 비트 입력에 입력하면 된다.Next, in SE54, for example, the "010" symbol in the information bits in WLn-1 and the "x0x" bit in the adjacent WLn after the second code conversion are detected. For example, the circuit shown in FIG. 22 may be used for this symbol detection. The following is performed on the condition which detected this symbol. First, the symbol counter 116 counts the number of bits of " x0x " (write second bit) of the information bits (k-bits) of WLn. The number of bits of " x1x " (the second bit is erased) of the information bits (k-bits) of WLn is counted by the symbol counter 117. Then, the symbol counter 118 counts the number of consecutive bits of "x0x" of the bit string that takes an exclusive logical sum of the information bit (k-bit) of WLn and "01010101 .... 0101". Then, the symbol counter 119 counts the number of consecutive bits of " x0x " in the bit string in which the information bit (k-bit) of WLn and the exclusive logical sum of " 10101010 .... 1010 " These should just input the information bits of WLn and WLn-1 of SE51, SE52 to the information bit input of FIG.

다음으로, SE55에서, 심볼 카운터(108), 심볼 카운터(109), 심볼 카운터(112), 심볼 카운터(113), 심볼 카운터(116), 심볼 카운터(117), 심볼 카운터(118), 심볼 카운터(119)의 값을 레지스터 a, b, c, d, e, f, g, h에 각각 카피한다.Next, in SE55, symbol counter 108, symbol counter 109, symbol counter 112, symbol counter 113, symbol counter 116, symbol counter 117, symbol counter 118, symbol counter The value of (119) is copied into the registers a, b, c, d, e, f, g and h, respectively.

다음으로, SE56에서, 실시예 3의 페이지 버퍼(114)에서, 기입을 행하는 WLn의 페이지 버퍼로부터 1비트째, 2비트째, 3비트째, .... k비트째로 홀수 짝수 홀수 짝수 순, 즉, 통상의 비트 출력순으로 k비트의 정보 비트 데이터를 읽어낸다. 이것에는, 도 17의 (a)의 우측의 방법으로 정보 비트를 출력하면 된다. 또한, 불휘발성 메모리 회로(7) 또는 페이지 버퍼(115)로부터, WLn과 인접하는 이미 기입이 아루어진 WLn-1의 1비트째, 2비트째, 3비트째, .... k비트째의 (k)비트 개수의 정보 비트 데이터를 읽어낸다. 이 때, SE51, SE52와 SE56의 WLn-1의 데이터에 대한 출력 순서 및 내용은 동일하므로, 페이지 버퍼(115) 쪽이 통상 불휘발성 메모리(7)보다도 읽어내기를 빠르게 행할 수 있다. 따라서, SE51에서 불휘발성 메모리(7)로부터 페이지 버퍼(115)에 데이터를 기입하고, SE56에서 페이지 버퍼(115)로부터 데이터를 읽어냄으로써 고속 처리를 실현할 수 있다.Next, in SE56, in the page buffer 114 of the third embodiment, the odd-numbered odd-numbered even-numbered order is first, second, third, ..., k-bits from the page buffer of WLn to write. That is, k bits of information bit data are read in a normal bit output order. What is necessary is just to output an information bit to this by the method of the right side of FIG. Also, from the nonvolatile memory circuit 7 or the page buffer 115, the first, second, third, ..., k-bits of WLn-1, which have already been written adjacent to WLn, (k) Read bit information bits. At this time, since the output order and contents of the data of WLn-1 of SE51, SE52, and SE56 are the same, the page buffer 115 can read out faster than the normal nonvolatile memory 7. Therefore, high speed processing can be realized by writing data from the nonvolatile memory 7 to the page buffer 115 in SE51 and reading data from the page buffer 115 in SE56.

다음으로, SE57에서, 예를 들면, WLn의 정보 비트 내의 "010" 심볼을 카운터(108)에서 카운트하고, "101" 심볼을 카운터(109)에서 카운트하고, k비트 길이의 홀수 짝수 홀수 짝수 순, 즉, 통상의 비트 출력순의 연속한 정보 비트를 "01010101....0101", 즉 "01"을 비트의 처음부터 반복해서 배열한 것과 배타적 논리합을 취한 "010" 심볼을 카운터(112)에서 카운트한다. 또한, k비트 길이의 정보 비트를 "10101010....1010", 즉 "10"을 비트의 처음부터 반복해서 배열한 것과 배타적 논리합을 취한 "010" 심볼을 카운터(113)에서 카운트한다. 이것에는, SE56의 정보 비트를, 예를 들면, 도 13의 정보 비트 입력에 입력하면 된다.Next, in SE57, for example, the " 010 " symbol in the information bit of WLn is counted in the counter 108, the " 101 " symbol is counted in the counter 109, and the odd even odd order of k bits length is followed. That is, the counter 112 displays the " 01010101 .... 0101 ", i.e., " 01 " repeatedly arranged from the beginning of the bit, and " 010 " To count. Also, the counter 113 counts the " 10101010 .... 1010 ", i.e., " 10 " In this case, information bits of SE56 may be input to the information bits input of FIG. 13, for example.

다음으로, SE58에서, WLn-1 내의 정보 비트 중의 "010" 심볼과 제2 부호 변환 후의 인접 WLn의 "x0x" 비트를 검출한다. 이 심볼 검출에는, 예를 들면 도 22에서 도시한 회로를 이용하면 된다. 이 심볼을 검출한 조건에서 이하를 행한다. 우선, WLn의 정보 비트(k-bit) 중의 "x0x"(2비트째가 기입)의 비트의 개수를 심볼 카운터(116)에서 카운트한다. 그리고, WLn의 정보 비트(k-bit) 중의"x1x"(2비트째가 소거)의 비트의 개수를 심볼 카운터(117)에서 카운트한다. 그리고, WLn의 정보 비트(k-bit)와 "01010101....0101"의 배타적 논리합을 취한 비트열의 "x0x"의 연속 비트의 개수를 심볼 카운터(118)에서 카운트한다. 그리고, WLn의 정보 비트(k- bit)와 "10101010....1010"의 배타적 논리합을 취한 비트열의 "x0x"의 연속 비트의 개수를 심볼 카운터(119)에서 카운트한다. 이들은, SE56의 WLn, WLn-1의 정보 비트를 도 22의 정보 비트 입력에 입력하면 된다.Next, in SE58, the "010" symbol in the information bits in WLn-1 and the "x0x" bit of the adjacent WLn after the second code conversion are detected. For example, the circuit shown in FIG. 22 may be used for this symbol detection. The following is performed on the condition which detected this symbol. First, the symbol counter 116 counts the number of bits of " x0x " (write second bit) of the information bits (k-bits) of WLn. The number of bits of " x1x " (the second bit is erased) of the information bits (k-bits) of WLn is counted by the symbol counter 117. Then, the symbol counter 118 counts the number of consecutive bits of "x0x" of the bit string that takes an exclusive logical sum of the information bit (k-bit) of WLn and "01010101 .... 0101". Then, the symbol counter 119 counts the number of consecutive bits of "x0x" in the bit string that takes an exclusive logical sum of the information bit (k-bit) of WLn and "10101010 .... 1010". These should just input the information bits of WLn and WLn-1 of SE56 to the information bit input of FIG.

다음으로, SE59에서, 카운터(108), 카운터(109), 카운터(112), 카운터(113), 레지스터 a, 레지스터 b, 레지스터 c, 레지스터 d의 각각의 값을 비교해서, 값이, 미리 결정한 임계값2 이하로 되는 카운터 및 레지스터를 전부 선택한다. 이것을 선택 a로 한다. 이 미리 결정된 임계값2로서는, 실시예 3을 동시에 이용한 경우에는, {(k/6)을 정수로 잘라올린 값}-1로 하고, 실시예 1 또는 실시예 2를 동시에 이용한 경우에는, {(k/4)를 정수로 잘라올린 값}-1로 하는 것이 좋다. 이들 값의 근거는, "010"이 발생하는 개수 상한으로 되어 있고, 상세한 설명은 실시예 1, 2, 3에 상술되어 있으므로, 여기서는 생략한다. 실시예 1, 2, 3로부터, k비트의, 2k개의 어떠한 정보 비트의 조합을 이용해도, "010"이 연속되는 심볼열의 수를 미리 결정된 임계값2 이하로 부호화할 수 있는 것이 명확하게 되어 있으므로, 본 실시예 4의 부호는, 동시에 이용한 실시예의 임계값2 이하의 "010"이 연속되는 심볼열을 만족시키는 부호로 되어 있다.Next, in SE59, the values of the counter 108, the counter 109, the counter 112, the counter 113, the register a, the register b, the register c, and the register d are compared, and the value is determined in advance. Select all counters and registers that fall below threshold 2. Let this be a selection. As the predetermined threshold 2, when Example 3 is used simultaneously, {(k / 6) is cut off to an integer}}-1, and when Example 1 or Example 2 is used simultaneously, {( It is good to set k / 4) to the value} -1 cut to an integer. The basis of these values is the upper limit of the number of occurrences of " 010 &quot;, and detailed descriptions are described in Examples 1, 2, and 3, and thus are omitted here. From Embodiments 1, 2, and 3, it becomes clear that even if a combination of 2 k information bits of k bits is used, the number of symbol strings in which " 010 " is consecutive can be encoded to a predetermined threshold 2 or less. Therefore, the code of the fourth embodiment is a code that satisfies the symbol string in which " 010 "

여기서, SE59 및 SE60에서, 카운터(116)가 선택된 경우에는, 동일한 부호화 처리를 WLn에 행하는 것에 상당하는 카운터(108)도 선택하기로 한다. 또한, 카운터(117)가 선택된 경우에는, 동일한 부호화 처리를 WLn에 행하는 것에 상당하는 카운터(119)도 선택하기로 한다. 또한, 카운터(118)가 선택된 경우에는, 동일한 부 호화 처리를 WLn에 행하는 것에 상당하는 카운터(112)도 선택하기로 한다. 또한, 카운터(119)가 선택된 경우에는, 동일한 부호화 처리를 WLn에 행하는 것에 상당하는 카운터(113)도 선택하기로 한다.Here, in the SE59 and SE60, when the counter 116 is selected, the counter 108 corresponding to performing the same encoding process to WLn is also selected. In addition, when the counter 117 is selected, the counter 119 corresponding to performing the same coding process to WLn is also selected. In addition, when the counter 118 is selected, the counter 112 corresponding to performing the same encoding process to WLn is also selected. In the case where the counter 119 is selected, the counter 113 corresponding to performing the same encoding process to WLn is also selected.

또한, 여기서, 레지스터 e가 선택된 경우에는, 동일한 부호화 처리를 WLn에 행하는 것에 상당하는 레지스터 a도 선택하기로 한다. 또한, 레지스터 f가 선택된 경우에는, 동일한 부호화 처리를 WLn에 행하는 것에 상당하는 레지스터 b도 선택하기로 한다. 또한, 레지스터 g가 선택된 경우에는, 동일한 부호화 처리를 WLn에 행하는 것에 상당하는 레지스터 c도 선택하기로 한다. 또한, 레지스터 h가 선택된 경우에는, 동일한 부호화 처리를 WLn에 행하는 것에 상당하는 레지스터 d도 선택하기로 한다.Here, when register e is selected, register a corresponding to performing the same encoding process to WLn is also selected. When the register f is selected, the register b corresponding to performing the same encoding process to WLn is also selected. In the case where the register g is selected, the register c corresponding to performing the same encoding process to WLn is also selected. In the case where register h is selected, register d corresponding to performing the same encoding process to WLn is also selected.

다음으로, SE60에서, 선택 a를 행한 레지스터 및 카운터 중에서, 카운터(116, 117, 118, 119)와, 레지스터 e, f, g, h의 각각 내용을 비교해서 최소값으로 되는 내용을 포함하는 것은 카운터인지 레지스터인지를 구한다. 이 결과, SE61에서, 최소값으로 되는 것은, 레지스터 a, b, c, d가 아니라, 카운터(108, 109, 112, 113) 쪽인지 판단한다.Next, in the SE60, among the registers and counters for which selection a has been performed, the counters 116, 117, 118, and 119 are compared with the contents of the registers e, f, g, and h, respectively, and include a content that is the minimum value. Find whether it is a register. As a result, in SE61, it is determined whether the minimum value is the counters 108, 109, 112, and 113 rather than the registers a, b, c, and d.

여기서, 카운터(108, 109, 112, 113) 쪽에 최소값으로 되는 조건이 있는 경우, 플래그3을 리세트한 채로, 도 23의 (c)의 시퀀스를 행한다. SE63부터 SE69는 도 18의 (b)에서 설명한 것과 조건 분기 SE63, SE65, SE67의 조건이 상이할 뿐이고 다른 것은 동일하므로, 설명은 생략한다. SE63의 분기는, 도 18의 (b)의 SE17의 분기를 치환한 것이며, SE17에서, 카운터(108)의 값과 카운터(109)의 값의 작은 쪽 의 값이 카운터(112)의 값과 카운터(113)의 값의 작은 쪽의 값보다 큰지 판단하지만, SE63에서는 카운터(116)의 값과 카운터(117)의 값의 작은 쪽이 카운터(118)의 값과 카운터(119)의 값의 작은 쪽보다도 큰지 판단하고 있다. SE17에서는, WLn의 각각의 제2 부호 변환 후의 "010" 심볼의 수를 비교하고 있지만, SE63에서는, WLn-1이 "010"이라고 하는 심볼이 발생한 부분의 한 가운데의 "1'비트 M1a(α)와, WL 방향으로 인접하는 WLn 중의 비트 M2a(ε)가 기입 비트 "0"인 조합의 수를, 각각의 WLn에 기입하는 정보 비트를 제2 부호 변환한 후에 비교하는 것으로 치환하고 있다.Here, when there is a condition on the counters 108, 109, 112, and 113 that is the minimum value, the sequence of Fig. 23 (c) is performed while the flag 3 is reset. Since the conditions of SE63 to SE69 are merely different from those described in FIG. 18B, and the conditions of the conditional branches SE63, SE65, and SE67 are different, the description is omitted. The branch of SE63 replaces the branch of SE17 in Fig. 18B, and in SE17, the smaller value of the value of the counter 108 and the value of the counter 109 is the value of the counter 112 and the counter. It is determined whether the value of (113) is larger than the value of the smaller one, but in SE63, the smaller of the value of the counter 116 and the value of the counter 117 is the smaller of the value of the counter 118 and the value of the counter 119. Determine if greater than In SE17, the number of "010" symbols after each second code conversion of WLn is compared. In SE63, the "1 'bit M1a (?) In the middle of the portion where the symbol" 010 "in WLn-1 occurs. ) And the number of combinations in which the bit M2a (ε) in the WLn adjacent to each other in the WL direction is the write bit " 0 " is replaced by comparing the information bits to be written in each WLn after the second code conversion.

또한, 레지스터의 치환은, SE59에서 설명한 레지스터끼리의 대응 관계에서 변환하는 것으로 한다. SE65, SE67도 도 18의 (b)의 SE19, SE21을 각각 상기 규칙으로 치환한 것으로 되어 있으므로 설명은 생략한다.In addition, the substitution of a register shall be converted in correspondence with the register demonstrated by SE59. SE65 and SE67 also replace | separate SE19 and SE21 of FIG. 18 (b) by the said rule, and description is abbreviate | omitted.

그 후, SE69에서, 정보 비트(k-bit)에 플래그1, 플래그2, 및 플래그3에 대응하는 부호를 부가해서 참조 부호 102의 오류 정정 부호 발생 회로에 출력한다.Thereafter, in SE69, the code corresponding to the flag 1, the flag 2, and the flag 3 is added to the information bit (k-bit) and output to the error correction code generating circuit at 102.

다음으로, SE61에서 카운터(116, 117, 118, 119) 쪽에 최소값으로 되는 조건이 없는 경우, SE62에서 플래그3을 세트하고, 도 23의 (d)의 시퀀스를 행한다.Next, in the SE61, if there is no condition that the minimum value occurs on the counters 116, 117, 118, and 119, the flag 3 is set in the SE62, and the sequence shown in Fig. 23D is performed.

SE70 내지 SE79는 도 18의 (c)에서 설명한 것과 조건 분기 SE70, SE73, SE75의 조건이 상이할 뿐이고 다른 것은 마찬가지이므로, 다른 설명은 생략한다. 또한, SE70, SE73, SE75도 도 18의 (c)의 SE34, SE37, SE39를 각각 도 23의 (c)에서 설명한 규칙으로 치환한 것으로 되어 있어, 설명은 생략한다.Since the conditions of the SE70 to SE79 differ only from those described in FIG. 18C and the conditional branches SE70, SE73, and SE75, and the others are the same, other explanations are omitted. In addition, SE70, SE73, SE75 also replaced SE34, SE37, SE39 of FIG. 18 (c) with the rule demonstrated by FIG. 23C, and description is abbreviate | omitted.

이와 같이 함으로써, 제2 부호 변환 후에, WLn은 동시에 이용한 실시예의 임 계값2 이하의 "010"이 연속되는 심볼열을 만족하는 부호이며, 또한, WLn-1이 "010"이라고 하는 심볼이 발생한 부분의 한 가운데의 "1" 비트 M1a(α)와, WL 방향으로 인접하는 WLn 중의 비트 M2a(ε)가 기입 비트 "0"인 조합을 최소로 할 수 있다.In this way, after the second code conversion, WLn is a code that satisfies the symbol string in which " 010 " equal to or less than the threshold value 2 of the embodiment used at the same time, and a portion in which a symbol in which WLn-1 is " 010 " The combination in which the " 1 " bit M1a (?) In the middle of and the bit M2a (?) In the WLn adjacent in the WL direction is the write bit " 0 " can be minimized.

이상의 시퀀스를 거침으로써, 실시예 3의 부호 변환을 행한 8종류의 경우에 대하여, 미리 각 변환 후의 정보 비트 중의 "010"의 수를 세어 두고, 정량 비교함으로써, 전술한 바와 같이 문제로 되는 "010"의 3bit 연속된 심볼의 출현 확률을 일정한 임계값2 이하를 유지하면서, 도 2의 (iv)의 WL 방향의 메모리 셀의 용량 간섭의 영향도 비교예보다도 감소시킬 수 있다.Through the above sequence, the number of "010" in the information bits after each conversion is counted in advance and quantitatively compared to the eight cases in which the code conversion of the third embodiment is performed. The influence of the capacitance interference of the memory cell in the WL direction in Fig. 2 (iv) can be reduced more than in the comparative example, while maintaining the probability of appearance of 3 consecutive bits of "

또한, 제2 부호의 복호화 회로(105)에 대해서는, 플래그1, 2, 3의 설정과 제2 부호화의 방법이 실시예 3과 동일하게 대응하고 있으므로, 실시예 3에 설명한 것과 동일한 복호화 회로 또는 시퀀스(105)를 이용하면 된다.In addition, with respect to the decoding circuit 105 of the second code, the setting of flags 1, 2, 3 and the method of the second encoding correspond in the same way to the third embodiment, and therefore the same decoding circuit or sequence as described in the third embodiment. (105) may be used.

예를 들면, 도 20의 (b)에서 도시하는, 실시예 3의 최악 입력 패턴으로 WLn-1이 되고, WLn의 입력 패턴이 그 (k/3)비트마다의 교체로 되어 있는 어느 경우에서도, 실시예 3의 WLn-1의 최악 "010" 개소에 대하여, 실시예 4의 적용에 의해, 절반의 WLn의 개소를 "0"이 아니라 "1"로 할 수 있어, WLn 방향의 용량 결합에 의한 임계값 상승을 감소시킬 수 있다. 이것은, 예를 들면, WLn-1의 부호열을 (k/3)비트의 "10101010....1010", (k/3)비트의 "00000000....0000", (k/3)비트의 "00110011....0011"로 하고, WLn의 부호열을 (k/3)비트의 "00110011....0011", (k/3)비트의 "10101010....1010", (k/3)비트 "00000000....0000"으로 한다. 이 경우, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 개소 개수와, WLn-1이 "010"이며 또한, WLn의 "x1x"로 되는 개소 개수가 동일하게 되고, WLn-1이 "010"의 개수의 절반은 도 2의 (iv)의 최악 패턴으로부터 벗어날 수 있다. 이것은, 전체 비트 반전에서, WLn의 "010"의 개소의 수가 변화하지 않는 경우, 실시예 2의 설명과 마찬가지로, WLn-1의 최악 "010" 개소에 대하여, 최악이라도 절반의 WLn의 개소를 "0"이 아니라 "1"로 할 수 있는 것에 의한다. 또한, 실시예 3의 WLn의 변환을 적용하면, 짝수 홀수 비트 변환을 함으로써, WLn의 부호열은 (k/6)비트의 "01010101....0101", (k/6)비트의 "11111111....1111", (k/6)비트의 "00000000....0000", (k/6)비트의 "01010101....0101", (k/3)비트의 "00000000....0000"의 비트열로 할 수 있으므로, 본 실시예의 시퀀스에 의해, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 개소 개수는 0개까지 삭감할 수 있다.For example, in any case where WLn-1 is the worst-case input pattern of the third embodiment shown in Fig. 20B, and the input pattern of WLn is replaced by every (k / 3) bits, With respect to the worst "010" location of WLn-1 in Example 3, by applying the fourth embodiment, half of the WLn location can be set to "1" instead of "0", resulting from capacitive coupling in the WLn direction. Threshold rise can be reduced. This means that, for example, the code string of WLn-1 is set to "10101010 .... 1010" of (k / 3) bits, "00000000 .... 0000" of (k / 3) bits, and (k / 3). The code string of WLn is set to "00110011 .... 0011" of the bit, and "00110011 .... 0011" of the (k / 3) bit, "10101010 .... 1010" of the (k / 3) bit, Set the (k / 3) bit "00000000 .... 0000". In this case, the number of points where WLn-1 is "010" and "x0x" of WLn and the number of points where WLn-1 is "010" and "x1x" of WLn are the same, and WLn- One half of the number of "010" may deviate from the worst pattern of FIG. When the number of "010" points of WLn does not change in the whole bit inversion, similarly to the description of the second embodiment, at least half of the points of WLn are " By what can be "1" instead of "0". Further, if the conversion of WLn of the third embodiment is applied, the even-numbered bit conversion is performed so that the code string of WLn is " 01010101 .... 0101 " of (k / 6) bits and " 11111111 of (k / 6) bits. .... 1111 "," 00000000 .... 0000 "of (k / 6) bit," 01010101 .... 0101 "of (k / 6) bit," 00000000 .. of (k / 3) bit ..0000 "bit stream, the number of points where WLn-1 is" 010 "and" x0x "of WLn can be reduced to zero by the sequence of this embodiment.

또한, 본 실시예의 변형예로서, 또한, 예를 들면, 정보 비트인 k비트를 1비트 이상 순회 시프트시키고, 시프트 없음의 경우도 합한 상태에서, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 개소의 개수(=α)의 비교를 행하여, WLn의 "010"의 수가 임계값2 이하인 조건에서 α의 최소값을 구하는 변형예가 있다.Further, as a modification of the present embodiment, WLn-1 is " 010 " and " WLn " There is a modification in which the minimum value of α is obtained under a condition that the number (?) of WLn is compared and the number of "010" of WLn is equal to or less than the threshold value 2.

WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 개소의 최악의 개수를 삭감하는 경우에는, 구체적으로는, 특히 시프트 없음, 1비트 순회 시프트, 2비트 순회 시프트, 3비트 순회 시프트, 4비트 순회 시프트, ..., q비트 순회 시프트로 하면 된다. q로서는 이하의 논의로부터 15비트 이상인 것이 바람직하다.In the case where the WLn-1 is "010" and the worst number at the point where WLn becomes "x0x" is reduced, specifically, there is no shift, 1-bit cyclic shift, 2-bit cyclic shift, and 3-bit cyclic shift. It is sufficient to use the 4-bit circular shift, ..., q-bit circular shift. As q, it is preferable that it is 15 bits or more from the following discussion.

또한, 여기서 순회 시프트란, 예를 들면, 도 16의 (a)의 페이지 버퍼에서, 1비트 순회 시프트의 경우에는, 2비트째의 플립플롭 FF2의 출력 데이터를 1비트째의 플립플롭 FF1의 데이터로서 입력 유지하고, 3비트째의 플립플롭 FF3의 출력 데이터를 2비트째의 플립플롭 FF2의 데이터의 데이터로서 입력 유지하고, .... k비트째의 플립플롭 FF(k)의 출력 데이터를 (k-1)비트째의 플립플롭 FF(k-1)의 데이터의 데이터로서 입력 유지하고, 또한, 1비트째의 플립플롭의 출력 데이터를 k비트째의 플립플롭의 데이터의 데이터로서 입력 유지하는 것을 나타낸다. 이것은, 도 17의 (a)의 좌측 도면에서, 클럭 φ1 및 클럭 φ2에 1개만 0V⇒Vcc⇒0V의 펄스를 입력한 Dout2의 출력 상태에서 실현할 수 있다. 또한, 실시예 4에서 설명한 도 22의 심볼 카운터에 정보 비트로서, 이 1개만 펄스를 입력한 후의 페이지 버퍼(114)의 출력으로부터 k bit 입력하면, 1비트 순회 시프트한 WLn의 정보 비트에서, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 개소 개수를 카운트할 수 있다. 물론, 펄스를 클럭 φ1 및 클럭 φ2에 p회 0V⇒Vcc⇒0V의 펄스를 미리 입력하면, p비트의 순회 시프트한 상태도 용이하게 얻어지는 것은 분명하다. 또한, p비트 순회 시프트한 상태로부터 시프트하지 않은 상태의 정보 비트를 복원하기 위해서는, 정보 비트 길이를 k로 해서, (k-p)비트 순회 시프트를 하면 되는 것은 분명하며, 순회 시프트라고 하는 부호화 및 복호화는 용이하게 실시예 4의 구성에서 실현할 수 있다. 또한, 이 순회를 거친 부호와, 순회 전의 부호에서는, "010"이 포함되는 개수는, 1비트째와 k비트째의 끝의 최대 1비트의 영향밖에 받지 않고, 실시예 3의 부호 변환과 조합해서 이용해도, 순회한 비트수를 기록해 두면, 정보를 손실하는 일이 없다.Note that the cyclic shift is, for example, in the page buffer of Fig. 16A, in the case of the 1-bit cyclic shift, the output data of the 2nd bit flip-flop FF2 is converted into the 1-bit flip-flop FF1 data. The input data is held as input data, and the output data of the third bit flip-flop FF3 is input and held as the data of the second bit flip-flop FF2, and the output data of the k-bit flip-flop FF (k) is inputted. The input is held as data of the data of the flip-flop FF (k-1) of the (k-1) -bit, and the output data of the flip-flop of the 1-bit is held as data of the data of the flip-flop of the k-bit. It shows. This can be realized in the output state of Dout2 in which only one pulse of 0 V? Vcc? 0 V is input to the clock? 1 and the clock? 2 in the left diagram of Fig. 17A. Further, when k bits are inputted from the output of the page buffer 114 after only one pulse is inputted into the symbol counter of FIG. 22 described in the fourth embodiment, the information bits of WLn shifted by one bit are WLn. -1 is " 010 " and the number of points to be " x0x " of WLn can be counted. As a matter of course, when a pulse of 0 V? Vcc? 0 V is input in advance to the clock? 1 and the clock? 2 in advance, it is obvious that the p-bit circular shifted state can be easily obtained. In addition, in order to restore the information bits in the unshifted state from the p-bit cyclic shifted state, it is obvious that the (kp) bit cyclic shift may be performed with the information bit length k. It can be easily realized in the configuration of the fourth embodiment. In this code and the code before it, the number including "010" is affected only by the maximum of one bit at the end of the first bit and the k bit, and is combined with the code conversion of the third embodiment. Even if it is used, the information is not lost if the number of traversed bits is recorded.

이 변형예에서는, 예를 들면, 순회 시프트로서 시프트하지 않는 경우도 포함시켜 q종류 행하는 것으로 해서, 8×q 조건에서의 α의 최소값을 구하게 된다. 이 경우, 순회 시프트에서는, 끝에 존재하는 기껏해야 1비트가 "010"의 증가 또는 감소에 기여하므로, "010"이 순회 시프트에서 증가해도 기껏해야 1개소이다. 한편, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 개소는, 최저 2비트 서로 떨어진 개소로 된다. 왜냐하면, "010" 심볼의 1비트 시프트 개소는 "10x" 혹은 "x01"(x는 "0", "1"의 임의의 비트)로 되고, 이것은 "010"으로 될 수 없기 때문이다. 따라서, 실시예 4의 최악값으로서, WLn-1이 "010"이며 또한 "x0x"로 되는 개소가, 임계값2와 동일한 수 모두로 되어 있는 경우이며, 또한, 비트 시프트 및 2비트 시프트, 3비트 시프트, 4비트 시프트, ... q비트 시프트에 의해, 최악 상태수가 감소하지 않는 경우를 가정한다. 0비트 시프트로부터 (0+2)비트 시프트까지에서 모두 최악 상태수가 감소하지 않으므로, WLn-1의 "010"의 개소에 대응한 WLn 비트의 1비트 시프트 패턴이 "000"으로 될 필요가 있다. 또한, 1비트 시프트로부터 (1+2)비트 시프트까지에서 모두 최악 상태수가 감소하지 않으므로, WLn-1의 "010"의 개소에 대응한 WLn 비트의 2비트 시프트 패턴이 "000"으로 될 필요가 있다. 임계값2를 실시예 3의 {(k/6)을 정수로 잘라올린 값}-1로 한 경우, "01010101....01010"이 (k/3)-1이 최소값이므로, 최악 상태수에서 "WLn"의 "010"에 대향한 부분의 패턴은, "00000000....0000"의 (k/3)-1+(q-2)비트의 연속 패턴으로 된다. 따라서, 실시예 1의 변환을 행하는 논의와 마찬가지로 고찰하면, q>=[(k/6)을 반올림한 정수+8]로 하면, (k/2)+5비트 이상이 "00000000....0000"으로 되고, 나머지 비트에서 "010", "101"이 포함되는 수는, 모두 최대 {(k/4)를 정수로 잘라올린 값}-3 이하로 된다. 따라서, 실시예 2의 임계값을 이용한 경우에는, WLn의 정보 비트의 전체 비트 반전 을 해도, 그 중의 "010" 심볼은 최대 {(k/4)를 정수로 잘라올린 값}-3 이하로 억제할 수 있는 것 외에, WLn-1의 "010"의 개소에 대응한 WLn을 비트 반전에 의해 "0"으로부터 "1"로 할 수 있으므로, 끝 상태에 의한 "010"의 1상태 증가가 있었다고 해도 상기 가정과 모순된다. 즉, q비트 시프트를 q>=[(k/6)을 반올림한 정수+8]로 하면, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 상한 개소를 시프트하지 않는 경우보다도 억제할 수 있다. 또한, 실시예 3의 변환의 경우에는, 적어도 q>=15로 하면, 최악 상태수에서 "WLn"의 "010"에 대향한 부분의 패턴은, "00000000....0000"의 (k/3)-1+(q-2)/(k/3)+12로 할 수 있어, 실시예 3의 논의와 마찬가지로 행하면, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 상한 개소를 시프트하지 않는 경우의 최악 상한값보다도 억제할 수 있다.In this modification, for example, q type is performed including the case where it is not shifted as a cyclic shift, and the minimum value of α under 8xq conditions is calculated | required. In this case, at most one bit present at the end contributes to the increase or decrease of " 010 " at the end of the traversal shift, so that even if " 010 " On the other hand, the location where WLn-1 is "010" and "x0x" of WLn is a location at least two bits apart from each other. This is because the 1-bit shift point of the "010" symbol becomes "10x" or "x01" (x is an arbitrary bit of "0", "1"), and this cannot be "010". Therefore, the worst value of the fourth embodiment is a case where WLn-1 is "010" and "x0x" is the same number as the threshold value 2, and the bit shift and the 2-bit shift are 3, respectively. Assume that the worst-case state number does not decrease by bit shift, 4 bit shift, ... q bit shift. Since the worst-case number does not decrease from 0 bit shift to (0 + 2) bit shift, the 1-bit shift pattern of the WLn bit corresponding to the position of "010" of WLn-1 needs to be "000". In addition, since the worst-case state number does not decrease from 1 bit shift to (1 + 2) bit shift, the 2-bit shift pattern of the WLn bit corresponding to the position of "010" of WLn-1 needs to be "000". have. When threshold 2 is set to {(k / 6) truncated to an integer} -1 of Example 3, since "01010101 .... 01010" is (k / 3) -1 is the minimum value, the worst case number The pattern of the portion facing "010" of "WLn" is a continuous pattern of (k / 3) -1 + (q-2) bits of "00000000 .... 0000". Therefore, in the same manner as in the discussion of the conversion of the first embodiment, when q> = [(k / 6) rounded integer + 8], (k / 2) + 5 bits or more are " 00000000 .... 0000 ", and the number including" 010 "and" 101 "in the remaining bits is equal to or less than the maximum {(k / 4) value rounded up to an integer} -3. Therefore, in the case where the threshold value of the second embodiment is used, even if all bits of the information bits of WLn are inverted, the "010" symbol thereof is suppressed to the maximum {(k / 4) truncated to an integer} -3 or less. In addition, since WLn corresponding to the "010" location of WLn-1 can be changed from "0" to "1" by bit inversion, even if there is a one-state increase of "010" due to the end state. Contradicts the above assumptions. In other words, if the q-bit shift is set to q> = [integer +8 rounded (k / 6)], the upper limit point where WLn-1 is "010" and "x0x" of WLn is not changed. It can be suppressed. In addition, in the case of the conversion of Example 3, if at least q> = 15, the pattern of the part which opposes "010" of "WLn" in the worst-case state number will be (k / of "00000000 .... 0000" 3) -1+ (q-2) / (k / 3) +12, and when carried out similarly to the discussion of Example 3, the upper limit in which WLn-1 is "010" and "x0x" of WLn. It can suppress more than the worst upper limit in the case of not shifting a location.

물론, 상기한 바와 같이, WLn-1에서 "010"이 연속해서 "0101010"과 같이 배치되어 있는 경우보다도, "010"이 분산되어 떨어져 배치된 경우 쪽이, q 이하의 비트의 시프트에서, WLn의 "x0x"로 되는 상한 개소를 감소시킬 수 있다.Of course, as described above, when "010" is distributed and separated from each other in a case where "010" is continuously arranged like "0101010" in WLn-1, it is WLn in a shift of bits of q or less. The upper limit point which becomes "x0x" of can be reduced.

이상으로부터, 본 실시예 4의 부호 변환(짝수 홀수 비트 변환)을 행하기 전에, 본 변형예에서, 먼저 순회 시프트를 q비트 행하고, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 최소 개수를 구해서 조건으로 되는 시프트수를 결정하고, 데이터를 순회 시프트해 둠으로써, WLn-1이 "010"이며 또한, WLn의 "x0x"로 되는 상한 개소를 감소시킬 수 있다. 또한, 이것에 대하여, 실시예 3과 마찬가지로 정보 비트에 시프트수 q로서, [log2(q+1)을 반올림한 정수]의 플래그에 상당하는 비트를 부 가해서 부호화하면 된다. 복원은, SE44에서 플래그 비트를 분리할 때, 마찬가지로 순회 시프트수 q를 부호로부터 분리하고, SE50에서, 도 17의 (f)에서, (k-q)비트분 클럭 φ1, φ2에 미리 먼저 0V⇒Vcc⇒0V의 펄스를 입력해 둠으로써, 용이하게 복원할 수 있다.As described above, before performing the sign conversion (even-numbered bit conversion) of the fourth embodiment, in this modification, the first shift is q-bit first, and WLn-1 is "010", and "WLx" of WLn. By determining the minimum number to be used, the number of shifts as a condition is determined, and the data is shifted in a circular direction, whereby the upper limit point where WLn-1 is "010" and "x0x" of WLn can be reduced. In addition, similarly to the third embodiment, a bit corresponding to a flag of [integer rounded log 2 (q + 1)] may be added to the information bit as the number of shifts q and encoded. When the flag bits are separated in SE44, the recovery shift number q is similarly separated from the sign. In SE50, in (f) of FIG. 17, 0 V? Vcc? By inputting a pulse of 0 V, it can be easily restored.

물론 본 변형예에서도, WLn의 복원 시에는 WLn-1의 읽어내기의 필요가 없고, 읽어내기 시의 WLn-1의 비트 오류에 의해, 직접 비트 오류하지 않아, 고속 읽어내기를 실현할 수 있다.Of course, even in this modification, it is not necessary to read WLn-1 at the time of restoring WLn, and the bit error of WLn-1 at the time of reading does not directly cause a bit error, and high-speed reading can be realized.

[실시예 5(MONOS형에 적용한 경우의 일례)]Example 5 (Example of Application to MONOS Type)

다음으로, 실시예 5에 따른 데이터 기억 시스템에 대해서, 도 24a, 도 24b를 이용해서 설명한다. 이 실시예 5는, 실시예 1부터 실시예 4까지의 부유형 게이트를 이용한 NAND 셀 어레이 블록(49)을 MONOS형 게이트를 이용한 NAND 셀 어레이 블록으로 변경한 것이다. 이 설명에서, 상기 실시예와 중복되는 부분의 상세한 설명을 생략한다.Next, the data storage system according to the fifth embodiment will be described with reference to FIGS. 24A and 24B. In the fifth embodiment, the NAND cell array block 49 using the floating gate from the first embodiment to the fourth embodiment is changed to a NAND cell array block using the MONOS type gate. In this description, detailed description of portions overlapping with the above embodiment will be omitted.

도 24(a), (b)는 각각, 도 6(a), (b)에 대응하는 NAND 셀 어레이 블록의 B-B', 및 A-A'에 대응하는 단면도이다. 또한, 평면도는, 도 5(b)와 동일하므로, 생략한다.24A and 24B are cross-sectional views corresponding to B-B 'and A-A' of the NAND cell array block corresponding to FIGS. 6A and 6B, respectively. In addition, since a top view is the same as that of FIG. 5 (b), it abbreviate | omits.

도 24는 예를 들면, SiN이나 SiON을 전하 축적 전극(26)으로 한 MOS 트랜지스터로 이루어지는 불휘발성 메모리 셀 M0∼M31이 직렬로 접속되고, 일단이 선택 트랜지스터 S1을 통해서 BL이라고 기입되어 있는 데이터 전송선에 접속되어 있다. 또한 다른 일단은 선택 트랜지스터 S2를 통해서 SL이라고 기입되어 있는 공통 소스 선에 접속되어 있다. 또한, 각각의 트랜지스터는, 동일한 웰 상에 형성되어 있다. 도 24에서, 예를 들면 붕소 불순물 농도가 1014-3 내지 1019-3 사이인 p형 실리콘 영역(23)에, 예를 들면, 1 내지 10㎚의 두께로 이루어지는 실리콘 산화막 또는 옥시 나이트라이드막으로 이루어지는 터널 게이트 절연막을 개재하여, 예를 들면 SiN, SiON으로 이루어지는 전하 축적층(26)이 3㎚ 내지 50㎚의 두께로 형성되어 있다. 이 위에, 예를 들면, 두께 2㎚ 내지 20㎚ 사이의 실리콘 산화막이나, Al2O3, HfSiO, ZrSiO, HfSiON, 또는 ZrSiON으로 이루어지는 층간 절연막(50)을 개재하여, 예를 들면 폴리실리콘이나 WSi(텅스텐 실리사이드)와 폴리실리콘의 스택 구조 또는 NiSi, MoSi, TiSi, CoSi와 폴리실리콘의 스택 구조, TaN, TiN의 배리어 메탈 및 적층 구조로 이루어지는 제어 게이트(27)가 10㎚ 내지 500㎚의 두께로 형성되어 있다. 이 제어 게이트(27)는, 도 5(b)에서 인접하는 메모리 셀 블록에서 접속되도록 지면 좌우 방향으로 블록 경계까지 형성되어 있고, 데이터 선택선 WL0∼WL31 및, 선택 게이트 제어선 SSL, GSL을 형성하고 있다. 또한, p형 실리콘 영역(23)은, n형 실리콘 영역(22)에 의해 p형 반도체 기판(21)과 독립적으로 전압 인가할 수 있게 되어 있는 것이, 소거 시의 승압 회로 부하를 줄여 소비 전력을 억제하기 위해서는 바람직하다. 본 실시예의 게이트 형상에서는, 반도체 영역(23)의 측벽이 절연막(24)으로 덮여 있으므로, 전하 축적층(26)을 형성하기 전의 에칭에 의해 노출되는 일이 없어, 전하 축적층(26)이 반도체 영역(23)보다도 아래로 오는 것을 방지할 수 있다. 따라서, 반도체 영역(23)과 절연막(24)의 경계에서의, 게이트 전계 집중이나 임계값이 저하한 기생 트랜지스터가 생기기 어렵다. 또한, 전계 집중에 기인하는 기입 임계값의 저하 현상, 소위, sidewalk 현상이 발생하기 어렵게 되기 때문에, 보다 신뢰성이 높은 트랜지스터를 형성할 수 있다.FIG. 24 shows, for example, a data transfer line in which nonvolatile memory cells M0 to M31 made of MOS transistors having SiN or SiON as charge storage electrodes 26 are connected in series, and one end is written BL through the selection transistor S1. Is connected to. The other end is connected to the common source line written as SL through the selection transistor S2. In addition, each transistor is formed on the same well. In Fig. 24, for example, in the p-type silicon region 23 having a boron impurity concentration between 10 14 cm -3 and 10 19 cm -3 , for example, a silicon oxide film or oxynitride having a thickness of 1 to 10 nm. A charge accumulation layer 26 made of, for example, SiN or SiON is formed to have a thickness of 3 nm to 50 nm via a tunnel gate insulating film made of a ride film. For example, polysilicon or WSi, for example, via an interlayer insulating film 50 made of a silicon oxide film having a thickness of 2 nm to 20 nm, Al 2 O 3 , HfSiO, ZrSiO, HfSiON, or ZrSiON. (Tungsten silicide) and polysilicon stack structure or NiSi, MoSi, TiSi, CoSi and polysilicon stack structure, TaN, TiN barrier metal and laminated structure control gate 27 having a thickness of 10 nm to 500 nm Formed. The control gate 27 is formed up to the block boundary in the left and right directions of the paper so as to be connected to the adjacent memory cell blocks in Fig. 5B, and forms the data selection lines WL0 to WL31 and the selection gate control lines SSL and GSL. Doing. In addition, the p-type silicon region 23 is capable of applying voltage independently of the p-type semiconductor substrate 21 by the n-type silicon region 22, thereby reducing the load of the booster circuit during erasing to reduce power consumption. In order to suppress, it is preferable. In the gate shape of this embodiment, since the sidewalls of the semiconductor region 23 are covered with the insulating film 24, the semiconductor substrate 23 is not exposed by etching before the charge accumulation layer 26 is formed, so that the charge accumulation layer 26 is a semiconductor. Coming below the area 23 can be prevented. Therefore, parasitic transistors in which the gate electric field concentration and the threshold value are reduced at the boundary between the semiconductor region 23 and the insulating film 24 are less likely to be produced. In addition, since the phenomenon of lowering the write threshold value, so-called sidewalk phenomenon due to electric field concentration is less likely to occur, a more reliable transistor can be formed.

이들 게이트 전극의 양측에는, 예를 들면 5㎚ 내지 200㎚의 두께의 실리콘 질화막 또는 실리콘 산화막으로 이루어지는 절연막(43)을 사이에 두고 소스 또는 드레인 전극으로 되는 n형 확산층(28)이 형성되어 있다. 이들 확산층(28)과 전하 축적층(26), 제어 게이트(27)에 의해, M-ONO-S형 불휘발성 EEPROM 셀이 형성되어 있고, 전하 축적층의 게이트 길이로서는, 0.5um 이하 0.01um 이상으로 한다. 이들 소스 드레인 n형 확산층(28)으로서는, 예를 들면 인이나 비소, 안티몬을 표면 농도가 1017-3 내지 1021-3으로 되도록 깊이 10㎚ 내지 500㎚ 사이에서 형성되어 있다. 또한, 이들 n형 확산층(28)은 메모리 셀끼리 직렬로 접속되어, NAND 접속이 실현되어 있다. 또한, 도면에서, 참조 부호 27SSL 또한 27GSL은, 각각 SSL 및 GSL에 상당하는 블록 선택선에 접속된 게이트 전극이며, 상기 MONOS형 EEPROM의 제어 전극과 동층에서 형성되어 있다. 이들 게이트 전극은, 예를 들면 3 내지 15㎚의 두께의 실리콘 산화막 또는 옥시 나이트라이드막으로 이루어지는 게이트 절연막(25SSL 및 25GSL)을 통해서 p형 웰(23)과 대향하고, MOS 트랜지스터를 형성하고 있다. 여기서, 게이트 전극(27SSL 및 27GSL)의 게이트 길이는, 메모리 셀 게이트 전극의 게이트 길이보다도 길고, 예를 들면, 1um 이하 0.02um 이상으로 형성함으로써, 블록 선 택 시와 비선택 시의 온 오프비를 크게 확보할 수 있어, 오기입이나 오읽어내기를 방지할 수 있다.On both sides of these gate electrodes, n-type diffusion layers 28 serving as source or drain electrodes are formed, for example, with an insulating film 43 made of a silicon nitride film or silicon oxide film having a thickness of 5 nm to 200 nm. The diffusion layer 28, the charge accumulation layer 26, and the control gate 27 form an M-ONO-S type nonvolatile EEPROM cell, and the gate length of the charge accumulation layer is 0.5 µm or less and 0.01 µm or more. It is done. Examples of these source and drain n-type diffusion layer 28, such is formed between depth 10㎚ to 500㎚ to the example phosphorus or arsenic, antimony, the surface concentration of 10 17-3 to 10 21-3. These n-type diffusion layers 28 are connected in series with memory cells, and a NAND connection is realized. In the figure, reference numeral 27 SSL and 27 GSL are gate electrodes connected to block selection lines corresponding to SSL and GSL, respectively, and are formed on the same layer as the control electrode of the MONOS type EEPROM. These gate electrodes face the p-type wells 23 through the gate insulating films 25 SSL and 25 GSL made of, for example, silicon oxide films or oxy nitride films having a thickness of 3 to 15 nm to form MOS transistors. have. Here, the gate lengths of the gate electrodes 27 SSL and 27 GSL are longer than the gate lengths of the memory cell gate electrodes, and are formed at, for example, 1 μm or less and 0.02 μm or more, so that the block selection and the non-selection are on and off. Rain can be largely secured, and it is possible to prevent false readings and misreads.

또한, 참조 부호 27SSL의 한 쪽에 형성된 소스 또는 드레인 전극으로 되는 n형 확산층(28d)는, 예를 들면, 텅스텐이나 텅스텐 실리사이드, 티탄, 티탄 나이트라이드, 또는 알루미늄으로 이루어지는 데이터 전송선(36(BL))과 컨택트(31d)를 통해서 접속되어 있다. 여기서, 데이터 전송선(36(BL))은, 인접하는 메모리 셀 블록에서 접속되도록 도 5(b)의 지면 상하 방향으로 블록 경계까지 형성되어 있다. 한편, 27GSL의 한 쪽에 형성된 소스 또는 드레인 전극으로 되는 n형 확산층(28S)은, 컨택트(31S)를 통해서 소스선으로 되는 SL과 접속되어 있다. 이 소스선 SL은, 인접하는 메모리 셀 블록에서 접속되도록 도 5(b)의 지면 좌우 방향으로 블록 경계까지 형성되어 있다. 물론, n형 확산층(28S)을 지면 좌우 방향으로 블록 경계까지 형성함으로써, 소스선으로 해도 된다. 이들 BL 컨택트 및 SL 컨택트로서는, 예를 들면 n형 또는 p형으로 도프된 폴리실리콘이나 텅스텐, 및 텅스텐 실리사이드, Al, TiN, Ti 등이 충전되어, 도전체 영역으로 되어 있다. 또한, 이들 SL 및 BL과, 상기 트랜지스터 사이는, 예를 들면 SiO2나 SiN으로 이루어지는 층간막(28)에 의해 충전되어 있다. 또한, 이 BL 상부에는, 예를 들면 SiO2, SiN 또는 폴리이미드로 이루어지는 절연막 보호층(37)이나, 도면에는 도시하고 있지 않지만, 예를 들면, W, Al이나 Cu로 이루어지는 상부 배선이 형성되어 있다.Further, n-type diffusion layer (28 d) which is a source or drain electrodes and reference numeral 27 on one side of the SSL in, for example, tungsten or tungsten silicide, titanium, titanium nitride, or the data transfer line (36 made of aluminum (BL )) and is connected via a contact (31 d). Here, the data transmission line 36 (BL) is formed up to the block boundary in the vertical direction of the page of Fig. 5B so as to be connected to adjacent memory cell blocks. On the other hand, n-type diffusion layer (28 S) that is the source or drain electrode formed on one side 27 of the GSL is connected with the source line SL to be through a contact (31 S). This source line SL is formed to the block boundary in the left-right direction of the paper of FIG. 5B so as to be connected to the adjacent memory cell block. Of course, the n-type diffusion layer 28 S may be formed as a source line by forming the block boundary in the paper left and right directions. As these BL contacts and SL contacts, for example, polysilicon, tungsten, and tungsten silicide doped with n-type or p-type, tungsten silicide, Al, TiN, Ti, and the like are filled to form a conductor region. Further, between the SL and BL and the transistor, for example, it is filled by an interlayer film 28 made of SiO 2 or SiN. In addition, the BL upper portion, for example, SiO 2, SiN or the insulating protective layer 37 made of polyimide, or the drawings, though not shown, for example, W, the upper wiring is formed consisting of Al or Cu have.

본 실시예에서는, 실시예 1, 2, 3, 4의 효과 외에, MON0S형 셀을 이용하고 있기 때문에, 실시예 1, 2, 3, 4의 부유 게이트형 EEPROM 셀보다도 기입 전압 및 소거 전압을 저전압화할 수 있어, 소자 분리 간격을 좁혀 게이트 절연막 두께를 박막화해도 내압을 유지할 수 있다. 따라서, 고전압이 인가되는 회로의 면적을 작게 할 수 있어, 보다 칩 면적을 축소할 수 있다.In this embodiment, since the MON0S cell is used in addition to the effects of Embodiments 1, 2, 3, and 4, the write voltage and the erase voltage are lower than those of the floating gate type EEPROM cells of Embodiments 1, 2, 3, and 4. Even if the device isolation interval is narrowed to reduce the thickness of the gate insulating film, the breakdown voltage can be maintained. Therefore, the area of the circuit to which the high voltage is applied can be reduced, and the chip area can be further reduced.

또한, 실시예 1, 2, 3, 4와 비교해서, 전하 축적층(26)의 두께를 20㎚ 이하로 작게 할 수 있고, 보다 게이트 형성 시의 어스펙트를 저감할 수 있어, 게이트 전극의 가공 형상을 향상시키고, 층간 절연막(28)의 게이트간의 매립도 향상시킬 수 있어, 보다 내압을 향상시킬 수 있다. 또한, 부유 게이트 전극을 형성하기 위한 프로세스나 슬릿 작성 프로세스가 불필요하여, 보다 프로세스 공정을 짧게 할 수 있다.In addition, compared with Examples 1, 2, 3, and 4, the thickness of the charge storage layer 26 can be reduced to 20 nm or less, and the aspect at the time of gate formation can be further reduced, so as to process the gate electrode. The shape can be improved, and the filling between gates of the interlayer insulating film 28 can be improved, and the breakdown voltage can be further improved. Moreover, the process for forming a floating gate electrode and the slit making process are unnecessary, and a process process can be shortened more.

또한, 전하 축적층(26)이 절연체이며, 1개 1개의 전하 트랩에 전하가 포획되어 있으므로, 방사선에 대하여 전하가 빠져나가기 어려워 강한 내성을 갖게 할 수 있다. 또한, 전하 축적층(26)의 측벽 절연막(43)이 박막화해도, 전하 축적층(26)에 포획된 전하가 전부 빠져나가는 일없이 양호한 유지 특성을 유지할 수 있다. 또한, 전하 축적층(26)을 반도체 영역(23)과 오정렬없이 형성할 수 있어, 보다 균일한 전하 축적층과 반도체 영역(23)의 용량을 실현할 수 있다. 이에 의해, 메모리 셀의 용량 변동이나 메모리 셀간의 용량 변동을 저감할 수 있다.In addition, since the charge storage layer 26 is an insulator and charges are trapped in one charge trap, it is difficult for the charges to escape to the radiation and can be made to have strong resistance. In addition, even when the sidewall insulating film 43 of the charge storage layer 26 is thinned, good retention characteristics can be maintained without all the charges trapped in the charge storage layer 26 escape. In addition, the charge accumulation layer 26 can be formed without misalignment with the semiconductor region 23, so that the capacitance of the more uniform charge accumulation layer and the semiconductor region 23 can be realized. As a result, the variation in capacity of the memory cells and the variation in capacity between the memory cells can be reduced.

[실시예 6(NOR형에 적용한 경우의 일례)]Example 6 (Example of Application to NOR Type)

다음으로, 실시예 6에 따른 데이터 기억 시스템에 대해서, 도 25를 이용해서 설명한다. 이 실시예 6은, 실시예 1 내지 5의 NAND 셀 어레이 블록(49)을 NOR 셀 어레이 블록으로 변경한 것이다. 이 설명에서, 실시예 1 내지 실시예 5와 동일한 부분에는, 동일 부호를 붙이고 상세한 설명은 생략한다. 또한, 실시예 1 내지 실시예 5에서, 실시예의 한정없이 상세하게 설명하고 있는 동일한 효과에 대해서는, 설명은 생략한다.Next, the data storage system according to the sixth embodiment will be described with reference to FIG. 25. In the sixth embodiment, the NAND cell array block 49 of the first to fifth embodiments is replaced with the NOR cell array block. In this description, the same parts as in the first to fifth embodiments are denoted by the same reference numerals, and detailed description thereof is omitted. In addition, in Example 1-Example 5, description is abbreviate | omitted about the same effect demonstrated in detail without limitation of an Example.

도 25의 (a), (b), (c), (d)는 각각, NOR 셀 어레이 블록의 회로도, 평면도, 로우 방향 메모리 셀부 단면도, 및 컬럼 방향 메모리 셀 단면도이다. 도 25의 (a) 는 전하 축적층 전극을 갖는 MOS 트랜지스터로 이루어지는 복수의 불휘발성 메모리 셀 M0∼M2가 전류 단자에 병렬로 접속되고, 일단이 BL이라고 기입되어 있는 데이터 전송선에 접속되어 있다. 또한 다른 일단은 공통 소스선 SL에 접속되어 있다. NOR 메모리 셀에서는 1개의 트랜지스터에 의해 메모리 셀 블록(49)이 형성되어 있다. 또한, 각각의 트랜지스터는, 동일한 웰 상에 형성되어 있다. 각각의 메모리 셀 M0∼M1의 제어 전극은, WL0∼WL1이라고 기입한 데이터 선택선에 접속되어 있다. 또한, 도 25의 (b), 도 25의 (c), 도 25의 (d)는, 메모리 셀 블록(49)의 평면도, 화살 표시 B-B' 방향 단면도, 화살 표시 A-A' 방향 단면도이다. 특히, 도 25의 (b)에서는, 셀 구조를 알기 쉽게 하기 위해서, 게이트 전극(27)보다도 아래의 구조만을 도시하고 있다. 도 25의 (c), 도 25의 (d)에서, 예를 들면, 3 내지 15㎚의 두께로 이루어지는 실리콘 산화막 또는 옥시 나이트라이드막(25)으로 형성된 터널 게이트 절연막을 개재하여, 예를 들면 인 또는 비소를 1018-3 내지 1021-3 첨가한 폴리실리콘으로 이루어지는 전하 축적층(26)이 10㎚ 내지 500㎚의 두께로 형성되어 있다. 이들은, 예를 들면, 실리콘 산화막으로 이루어지는 소자 분리 절연막(24)이 형성되어 있지 않은 영역 상에, p형 실리콘 영역(23) 상에 형성되어 있다.25A, 25B, 25C, 25D are a circuit diagram, a plan view, a row direction memory cell section cross section, and a column direction memory cell cross section of a NOR cell array block, respectively. In Fig. 25A, a plurality of nonvolatile memory cells M0 to M2 made up of MOS transistors having charge storage layer electrodes are connected in parallel to current terminals, and one end is connected to a data transfer line written as BL. The other end is connected to the common source line SL. In a NOR memory cell, a memory cell block 49 is formed of one transistor. In addition, each transistor is formed on the same well. The control electrodes of the respective memory cells M0 to M1 are connected to data selection lines written as WL0 to WL1. 25 (b), 25 (c) and 25 (d) are plan views of the memory cell block 49, a cross sectional view in the direction indicated by the arrow BB ', and a cross sectional view in the direction indicated by the arrow AA'. In particular, in FIG. 25B, only the structure below the gate electrode 27 is shown in order to make the cell structure easier to understand. In FIGS. 25C and 25D, for example, phosphorus is interposed through a tunnel gate insulating film formed of a silicon oxide film or an oxynitride film 25 having a thickness of 3 to 15 nm. Alternatively, the charge storage layer 26 made of polysilicon containing 10 18 cm -3 to 10 21 cm -3 added to arsenic is formed to a thickness of 10 nm to 500 nm. These are formed on the p-type silicon region 23 on the region where the element isolation insulating film 24 made of, for example, a silicon oxide film is not formed.

이 위에, 예를 들면, 두께 5㎚ 내지 30㎚ 사이의 실리콘 산화막 또는 옥시 나이트라이드막, 또는 실리콘 산화막/실리콘 질화막/실리콘 산화막으로 이루어지는 블록 절연막(50)이 형성되어 있다. 이들은, 예를 들면, 실리콘 산화막으로 이루어지는 소자 분리 절연막(24)이 형성되어 있지 않은 영역에, p형 실리콘 영역(23) 상에 형성되어 있다.On this, for example, a block insulating film 50 made of a silicon oxide film or an oxynitride film or a silicon oxide film / silicon nitride film / silicon oxide film having a thickness of 5 nm to 30 nm is formed. These are formed on the p-type silicon region 23 in the region where the element isolation insulating film 24 made of, for example, a silicon oxide film is not formed.

또한, 폴리실리콘 또는 WSi(텅스텐 실리사이드)와 폴리실리콘의 스택 구조 또는 CoSi와 폴리실리콘의 스택 구조로 이루어지는 제어 게이트(27)가 10㎚ 내지 500㎚의 두께로 형성되어 있다. 이 제어 게이트(27)는, 도 25의 (b)에서 인접하는 메모리 셀 블록에서 접속되도록 지면 좌우 방향으로 블록 경계까지 형성되어 있고, 데이터 선택선 WL0∼WL2를 형성하고 있다. 또한, p형 실리콘 영역(23)은, n형 실리콘 영역(22)에 의해 p형 반도체 기판(21)과 독립적으로 전압 인가할 수 있도록 되어 있는 것이, 소거 시의 승압 회로 부하를 줄여 소비 전력을 억제하기 위해서는 바람직하다.Further, a control gate 27 having a stack structure of polysilicon or WSi (tungsten silicide) and polysilicon or a stack structure of CoSi and polysilicon is formed to a thickness of 10 nm to 500 nm. This control gate 27 is formed up to the block boundary in the left-right direction of the paper so as to be connected to the adjacent memory cell block in Fig. 25B, and forms the data selection lines WL0 to WL2. In addition, the p-type silicon region 23 is capable of applying voltage independently of the p-type semiconductor substrate 21 by the n-type silicon region 22, thereby reducing the load of the boost circuit during erasing to reduce power consumption. In order to suppress, it is preferable.

도 25의 (d)에 도시하는 바와 같이, 메모리 셀에 상당하는 A-A' 단면에서 이들 게이트 전극의 아래에는, 예를 들면 5㎚ 내지 200㎚의 두께의 실리콘 산화막 또는 옥시 나이트라이드막으로 이루어지는 층간 절연막(56)을 사이에 두고 소스 또는 드레인 전극으로 되는 n형 확산층(28)이 형성되어 있다. 이들 확산층(28), 전하 축적층(26), 및 제어 게이트(27)에 의해, 전하 축적층에 축적된 전하량을 정보량으로 하는 부유 게이트형 EEPROM 셀이 형성되어 있고, 그 게이트 길이로서는, 0.5um 이하 0.01um 이상으로 한다. 도 25의 (b) 및 도 25의 (d)와 같이, BL과 접속된 n형 확산층(28d)과 쌍으로 되는 n형 확산층(28)은, 도 25의 (b)의 지면 좌우 방향으로 신장해서 인접하는 메모리 셀을 접속하는 소스선 SL로 되어 있다. 이러한 NOR형 셀에서도, SL을 사이에 두고 데이터 전송선 방향이나, 데이터 선택선 방향으로 인접하는 메모리 셀의 전하 축적층간이 절연막으로 형성되어 있기 때문에, 전하 축적층간의 용량 결합에 의한 임계값 변동이 발생한다. 따라서, 예를 들면, 도 25의 (a)의 M1a와 M2a와 같이, 소스선을 사이에 둔 2개의 인접하는 셀에 대해서, 각각의 비트마다 기입을 행하고, 일련의 정보 비트열로서 기억 또는 읽어내기를 행하는 경우에는, 실시예 1 내지 4까지 설명한 실시예를, 기입 및 읽어낸 정보 비트열에 적용함으로써, 전하 축적층간의 용량 결합에 의한 임계값 변동을 억제할 수 있다.As shown in Fig. 25D, an interlayer insulating film made of a silicon oxide film or an oxynitride film having a thickness of, for example, 5 nm to 200 nm, beneath these gate electrodes in the AA 'cross section corresponding to the memory cell. An n-type diffusion layer 28 serving as a source or a drain electrode is formed with the 56 interposed therebetween. The diffusion layer 28, the charge accumulation layer 26, and the control gate 27 form a floating gate type EEPROM cell whose information is the amount of charge accumulated in the charge accumulation layer, and the gate length is 0.5um. Below 0.01um or more. As shown in FIGS. 25B and 25D, the n-type diffusion layer 28 paired with the n-type diffusion layer 28d connected to the BL extends in the left-right direction of the paper in FIG. 25B. The source line SL connects adjacent memory cells. Also in such NOR cells, since the charge accumulation layers of memory cells adjacent to each other in the data transmission line direction and the data selection line direction with SL interposed therebetween are formed as insulating films, a threshold value variation occurs due to capacitive coupling between the charge storage layers. do. Thus, for example, as in M1a and M2a in Fig. 25A, two adjacent cells with a source line interposed therebetween are written for each bit and stored or read as a series of information bit streams. In the case of betting, the variation of the threshold value due to the capacitive coupling between the charge storage layers can be suppressed by applying the embodiments described in the first to fourth embodiments to the written and read information bit strings.

또한, 도 25의 (a)에 도시하는 바와 같이, M1a와 M1b와, 또는 M1a와 M1b'와 같이, 로우 방향으로 인접하는 2개의 메모리 셀간도 절연막에 의해 매립되어 있으므로, 전하 축적층간의 용량 결합에 의한 임계값 변동이 발생한다. 따라서, 예를 들면, 도 25의 (a)의 M1a와 M1b와, 또는 M1a와 M1b'와 같이, 로우 방향으로 인접하는 2개의 인접하는 메모리 셀에 대해서, 각각의 비트마다 기입을 행하고, 일련의 정보 비트열로서 기억 또는 읽어내기를 행하는 경우에는, 실시예 1부터 4까지 설명한 실시예를, 기입 및 읽어낸 정보 비트열에 적용함으로써, 전하 축적층간의 용량 결합에 의한 임계값 변동을 억제할 수 있다.As shown in Fig. 25A, two memory cells adjacent to each other in the row direction, like M1a and M1b or M1a and M1b ', are also filled with an insulating film, so that the capacitive coupling between charge storage layers is achieved. Threshold variation by Thus, for example, writing is performed for each bit to two adjacent memory cells adjacent in the row direction as shown in M1a and M1b in FIG. 25A or M1a and M1b ', and a series of In the case of storing or reading as the information bit string, the variation described by the capacitive coupling between the charge accumulation layers can be suppressed by applying the embodiments described in Embodiments 1 to 4 to the written and read information bit strings. .

[실시예 7(Virtual Ground(가상 접지)의 MONOS형에 적용한 경우의 일례)][Example 7 (Example of Application to MONOS Type of Virtual Ground)]

다음으로, 실시예 7에 따른 데이터 기억 시스템에 대해서, 도 26, 도 27, 도 28을 이용해서 설명한다. 이 실시예 7은, 실시예 1부터 5까지의 NAND 셀 어레이 블록(49)을 MONOS 구조로 형성된 Virtual Ground(가상 접지) 셀 어레이 블록(49)으로 변경한 것이다. 이 설명에서, 실시예 1 내지 실시예 6과 동일한 부분에는, 동일 부호를 붙이고 상세한 설명은 생략한다. 또한, 실시예 1 내지 실시예 6에서, 실시예의 한정없이 상세하게 설명하고 있는 동일한 효과에 대해서는, 설명은 생략한다.Next, the data storage system according to the seventh embodiment will be described with reference to FIGS. 26, 27, and 28. In the seventh embodiment, the NAND cell array blocks 49 of the first to fifth embodiments are replaced with the virtual ground cell array block 49 formed in the MONOS structure. In this description, the same parts as in the first to sixth embodiments are denoted by the same reference numerals, and detailed description thereof is omitted. In addition, in Example 1-Example 6, description is abbreviate | omitted about the same effect demonstrated in detail without a restriction | limiting of an Example.

도 26의 (a)에 NAND 셀 어레이의 매트릭스1과, 도 26의 (b)에 NROM 셀 어레이의 매트릭스1의 배선 관계를 도시한다. 도 26의 (b)에 도시하는 바와 같이, 불휘발성 메모리 셀을 병렬 접속한 메모리 셀 블록(49)을 배열해서 구성된다. 이 메모리 셀 어레이(1)의 데이터 전송선의 데이터를 센스하거나, 혹은 기입 데이터를 유지하기 위해서 센스 앰프 회로(46)가 예를 들면, 데이터 전송선 선택 트랜지스터 Q1a, Q2a...Q1k, Q2k를 통해서 설치되어 있다. 이 센스 앰프 회로는, 예를 들면 플립플롭 회로를 주체로 해서 구성된다. 또한, 센스 앰프 회로(46)는, 데이터 입출력 버퍼(45)에 접속되어 있다. 이들 접속은, 어드레스 버퍼(47)로부터 어드레스 신호를 받는 컬럼 디코더(48)의 출력에 의해 제어되고, 데이터 입출력 버퍼에 공급된 데이터를 메모리 셀 어레이(1)에 기입, 및 데이터를 제2 내부 I/O선에 읽어내기 가능하게 되어 있다. 메모리 셀 어레이(1)에 대하여, 메모리 셀의 선택을 행하기 위해서, 구체적으로는 데이터 제어선 WL0∼WL2, 및 데이터 전송선 선택 트랜지스터 sel1, sel2의 제어를 하기 위해서, 로우 디코더(3)가 설치되어 있다.FIG. 26A shows the wiring relationship between the matrix 1 of the NAND cell array and FIG. 26B shows the wiring relationship of the matrix 1 of the NROM cell array. As shown in FIG. 26B, the memory cell blocks 49 in which nonvolatile memory cells are connected in parallel are arranged. In order to sense the data of the data transfer line of the memory cell array 1 or to hold the write data, the sense amplifier circuit 46 is provided via, for example, the data transfer line select transistors Q1a, Q2a ... Q1k, Q2k. It is. This sense amplifier circuit is mainly composed of a flip-flop circuit, for example. In addition, the sense amplifier circuit 46 is connected to the data input / output buffer 45. These connections are controlled by the output of the column decoder 48 which receives the address signal from the address buffer 47, writes the data supplied to the data input / output buffer into the memory cell array 1, and writes the data into the second internal I. It can be read on the / O line. The row decoder 3 is provided to select the memory cells with respect to the memory cell array 1, specifically, to control the data control lines WL0 to WL2 and the data transfer line select transistors sel1 and sel2. have.

도 27 및 도 28은 각각 Virtual Ground 어레이 블록의 로우 방향, 및 컬럼 방향의 메모리 셀부 단면도로서, 각각 2개의 메모리 셀이 접속된 구조를 도시하고 있다. 도 27은 실시예 7의 MONOS 메모리의 단면도로서, 제어 전극에 의해 게이트 전극(8)이 접속된 2개의 메모리 셀에 대해서 도시하고 있다. 또한, 도 28은, 게이트 전극을 통과하는 도 27과 직교한 단면에서의 단면 구조를 도시하고 있다.27 and 28 are cross-sectional views of memory cell sections in a row direction and a column direction of a virtual ground array block, respectively, and illustrate a structure in which two memory cells are connected. FIG. 27 is a sectional view of the MONOS memory of the seventh embodiment, showing two memory cells in which the gate electrode 8 is connected by a control electrode. 28 illustrates a cross-sectional structure in a cross section perpendicular to FIG. 27 passing through the gate electrode.

본 실시예에서는, 게이트 전극(8)에 접속되는 데이터 제어선(11이나 8'에 상당)의 형성 방향과 채널의 형성 방향이 일치하고 있다. 또한, 본 실시예에서는, 메모리 셀의 각각의 소스 및 드레인 전극 근방에 전하를 축적시키고, 1셀당 적어도 2bit의 정보를 기억하도록 형성되어 있다. 이러한 구조에서, 소스 전극 및 드레인 전극의 전압의 방향에 의해, 예를 들면, 미국 특허 6,201,282에서 공지한 방법으로, 각각의 비트를 읽어낼 수 있다. 이 경우, 정보를 읽어내지 않는 측의 비트와 정보를 읽어내는 비트의 전류 단자는 직렬 접속되어 있는 것과 등가이므로, 정보를 읽어내지 않는 측의 비트는 NAND형 메모리 셀과 마찬가지의 read disturb 스트레스가 인가된다. 따라서, 정보를 읽어내지 않는 측의 비트는, 읽어내기를 반복함으로써 소거 상태로부터 기입 상태로 변화한다.In this embodiment, the formation direction of the data control line (corresponding to 11 or 8 ') connected to the gate electrode 8 coincides with the formation direction of the channel. In this embodiment, charges are stored in the vicinity of the source and drain electrodes of the memory cells, and at least 2 bits of information are stored per cell. In this structure, each bit can be read out by the direction of the voltage of the source electrode and the drain electrode, for example, by a method known from US Pat. No. 6,201,282. In this case, since the current terminal of the bit on which the information is not read and the bit on which the information is read is equivalent to being connected in series, the bit on the side not reading the information is subject to read disturb stress similar to that of a NAND memory cell. do. Therefore, the bit on the side which does not read information changes from an erase state to a write state by repeating reading.

이 구조에서도, 데이터 전송선 방향 및 데이터 선택선 방향으로 절연막을 개재해서 전하 축적 영역(26)이 인접하여 형성되어 있으므로, 복수의 인접하는 메모리 셀에 동시에 정보를 기입하는 경우에는, 인접 메모리 셀에 의한 용량 결합에 의해 임계값 변동이 발생한다. 실시예 1부터 실시예 4까지의 제2 부호화의 효과를 얻을 수 있다. 도 27 및 도 28에서, 예를 들면, 붕소 또는 인듐 불순물 농도가 1014-3 내지 1019-3 사이인 p형 실리콘 반도체 영역(23)에, 예를 들면, 0.5㎚ 내지 10㎚의 두께로 이루어지는 실리콘 산화막 또는 옥시 나이트라이드막으로 이루어지는 제1 절연막(25)이 형성되어 있다. 또한, 제1 게이트 절연막의 상부에는, 예를 들면 실리콘 질화막으로 이루어지는 전하 축적층(26)이 3㎚ 내지 50㎚의 두께로 형성되어 있다. 이 위에, 예를 들면, 두께 5㎚ 이상이고, 30㎚ 이하의 두께로 실리콘 산화막 또는 옥시 나이트라이드막, Al2O3, ZrSiO, HfSiO, ZrSiON 또는 HfSiON으로 이루어지는 블록 절연막(제2 절연막)(50)을 개재해서, 예를 들면, 붕소 또는 인, 비소가 1×1019-3 내지 1×1021-3의 범위에서 불순물 첨가된 폴리실리콘층(51 및 27)이 10㎚ 내지 500㎚의 두께로 형성되어 있다. 여기서, 폴리실리콘층(51 및 27)의 붕소, 인, 또는 비소의 농도는 1×1019-3 이상으로 하는 것이, 제어 전극의 공핍화에 의해, ONO 적층막에 걸리는 전계가 작아져, 소거 시간 또는 기입 시간이 증대하는 것을 방지하는 데에 바람직하다.Also in this structure, since the charge accumulation region 26 is formed adjacent to each other in the data transfer line direction and the data selection line direction through the insulating film, when the information is simultaneously written to a plurality of adjacent memory cells, the adjacent memory cells are separated by the adjacent memory cells. Threshold variation occurs due to capacitive coupling. The effect of the second encoding from the first embodiment to the fourth embodiment can be obtained. 27 and 28, for example, in the p-type silicon semiconductor region 23 having a boron or indium impurity concentration between 10 14 cm −3 and 10 19 cm −3 , for example, between 0.5 nm and 10 nm. A first insulating film 25 made of a silicon oxide film or an oxynitride film having a thickness is formed. In addition, a charge accumulation layer 26 made of, for example, a silicon nitride film is formed on the first gate insulating film in a thickness of 3 nm to 50 nm. On this, for example, a block insulating film (second insulating film) made of a silicon oxide film or an oxynitride film, Al 2 O 3 , ZrSiO, HfSiO, ZrSiON or HfSiON having a thickness of 5 nm or more and 30 nm or less (50). For example, the polysilicon layers 51 and 27 in which boron, phosphorus, or arsenic are impurity-added in the range of 1 × 10 19 cm -3 to 1 × 10 21 cm -3 are 10 nm to 500 nm. It is formed in the thickness of. Here, the concentration of boron, phosphorus, or arsenic in the polysilicon layers 51 and 27 is 1 × 10 19 cm −3 or more, so that the electric field applied to the ONO laminated film becomes smaller due to depletion of the control electrode, It is preferable to prevent the erase time or the write time from increasing.

또한, 예를 들면, 이 폴리실리콘(27) 상에 또는 WSi(텅스텐 실리사이드) 또는, NiSi, MoSi, TiSi, CoSi, W, Al, AlCu로 이루어지는 제어 게이트의 금속 보강층(27')이 10㎚ 내지 500㎚의 두께로 형성되어 있어도 된다. 이들 폴리실리콘층(51)이 제어 전극을 형성하고, 금속 보강층(27')이 제어 전극을 저저항화하고 있다.Further, for example, the metal reinforcement layer 27 'of the control gate made of WSi (tungsten silicide) or NiSi, MoSi, TiSi, CoSi, W, Al, AlCu on the polysilicon 27 is 10 nm to It may be formed with a thickness of 500 nm. These polysilicon layers 51 form a control electrode, and the metal reinforcement layer 27 'makes the control electrode low resistance.

또한, 이 금속 보강층 상에는, 예를 들면, 실리콘 질화막이나 실리콘 산화막으로 이루어지는 절연막(60)이 5 내지 500㎚의 두께로 형성되어 있어도 된다. 이것은, 게이트 전극 가공 시의 마스크로 되는 절연막으로서 기능한다. 또한, 이들 게이트 전극의 양측에는, 실리콘 산화막 또는 실리콘 산질화막으로 이루어지는 측벽 절연막(19)이 형성되어 있다. 이 측벽 절연막(19)의 적어도 게이트 전극(51)에 접하는 측면은, 퇴적막으로 형성한 절연막보다도 전하 트랩 밀도를 작게, 절연 내압(dielectric breakdown voltage)을 높게, 또한 게이트 전극(51)과 절연막(19) 사이의 계면 준위 밀도를 낮게 하기 위해서, 실리콘을 포함하는 게이트 전극(51)의 산화 또는 산질화에 의해 형성되어 있다. 이와 같이, 게이트 측벽에 퇴적막보다도 품질이 높은 열산화막을 이용하는 것이 가능하다.In addition, on this metal reinforcement layer, the insulating film 60 which consists of a silicon nitride film and a silicon oxide film, for example may be formed in the thickness of 5-500 nm. This functions as an insulating film serving as a mask during gate electrode processing. Further, sidewall insulating films 19 made of silicon oxide films or silicon oxynitride films are formed on both sides of these gate electrodes. At least a side surface of the sidewall insulating film 19 that contacts the gate electrode 51 has a lower charge trap density, a higher dielectric breakdown voltage than the insulating film formed of the deposition film, and a gate electrode 51 and the insulating film ( In order to lower the density of the interface state between the layers 19), the gate electrode 51 containing silicon is formed by oxidation or oxynitride. In this manner, it is possible to use a thermal oxide film having a higher quality than the deposition film for the gate sidewall.

도 27에서, 소스 영역 및 드레인 영역(28) 상에서 전하 축적막(26)이 일부 제거되고, 예를 들면 실리콘 산화막으로 이루어지는 소자 분리 절연막(12)이 형성되어 있는 예가 들어져 있지만, 전하 축적층(26)이 절연체로 형성되어 있기 때문에, 소스 영역 및 드레인 영역(28) 상에서 전하 축적막(26)을 제거할 필요는 반드시 없고, 연속적으로 형성되어 있어도 상관없다.In Fig. 27, an example is shown in which the charge accumulation film 26 is partially removed on the source region and the drain region 28, and an element isolation insulating film 12 made of, for example, a silicon oxide film is formed. Since 26 is formed of an insulator, it is not necessary to remove the charge storage film 26 on the source region and the drain region 28, and may be formed continuously.

도 27의 형상은, 예를 들면 다음과 같은 수순으로 형성할 수 있다. 예를 들면, 금속 보강층(27')을 형성하지 않고, 실리콘을 포함하는 게이트 전극재(51)를 적층하고, 제1 절연막(25)에 달할 때까지 지면 표리 방향이 길이로 되는 선 형상으로 패터닝하고 이방성 에칭을 행하여, 게이트 전극재(51), 제2 절연막(50), 전하 축적층(26), 제1 절연막(25)을 제거한다. 이 후, 측벽 절연막(19)을 게이트 전 극(51)의 산화 또는 산질화에 의해 형성하고, 소스 영역 및 드레인 영역으로 되는 n형층(28)을, 예를 들면 인이나 비소, 안티몬을 표면 농도가 1017-3 내지 1021-3으로 되도록 깊이 10㎚ 내지 500㎚ 사이에서 이온 주입해서 형성한다. 이 후, 전체면에 절연막(68)으로 되는 실리콘 산화막, 실리케이트 글래스, 또는 무기 글래스를 10㎚ 내지 1000㎚의 두께의 범위에서 퇴적한 후, 예를 들면 CMP(Chemical Mechanical Polishing)에 의해 절연막(68)을 평탄화하고, 또한, 게이트 전극(51)의 상부 표면을 예를 들면 불화 암모늄 용액 등의 웨트 에칭에 의해 노출시킨다. 이 후, 제어 전극으로 되는 예를 들면 폴리실리콘이나 SiGe 혼정으로 이루어지는 제2 게이트 전극재(27)를 10㎚ 내지 300㎚의 범위에서 퇴적하고, 또한, 금속 보강층(27'), 또한, 마스크 절연막(60)을 전체면 퇴적한다. 여기서, 제2 게이트 전극재(27)의 붕소, 인, 또는 비소의 농도는 1×1019-3 이상으로 하는 것이, 제어 전극의 공핍화에 의해, ONO 적층막에 걸리는 전계가 작아져, 소거 시간 또는 기입 시간이 증대하는 것을 방지하는 데에 바람직하다. 다음으로, 메모리 셀에서, 도 27의 패턴과 직교하는 방향으로 선 형상으로 패터닝하고, 이방성 에칭을 행하여, 마스크 절연막(60), 금속 보강층(27'), 제2 게이트 전극재(27), 및 게이트 전극재(51), 제2 절연막(50)까지 에칭을 행한다. 이 후, 도 28에서 도시한 2개의 게이트 전극(51)으로 표시되는 메모리 셀의 채널간의 누설 전류를 적게 하기 위해서, 예를 들면, 붕소나 BF2, 인듐을 표면 농도가 1016-3 내지 1018-3으로 되도록 깊이 10㎚ 내지 500㎚ 사이로 되도록 이온 주입하여, p형 층(18)을 형성해도 된다. 또한, 전체면에, 실리콘 질화막이나 실리콘 산질화막, 또는 알루미나막으로 이루어지는 절연막(61)을 예를 들면, 두께 5㎚ 내지 200㎚의 범위에서 형성한다.The shape of FIG. 27 can be formed, for example in the following procedure. For example, without forming the metal reinforcing layer 27 ', the gate electrode material 51 containing silicon is laminated, and patterned in a line shape in which the front and back direction becomes the length until the first insulating film 25 is reached. Then, anisotropic etching is performed to remove the gate electrode material 51, the second insulating film 50, the charge storage layer 26, and the first insulating film 25. Subsequently, the sidewall insulating film 19 is formed by oxidation or oxynitride of the gate electrode 51, and the n-type layer 28 serving as the source region and the drain region is formed by surface concentration of phosphorus, arsenic, and antimony, for example. It is formed by ion implantation at a depth of 10 nm to 500 nm so as to be 10 17 cm -3 to 10 21 cm -3 . Thereafter, a silicon oxide film, silicate glass, or inorganic glass serving as the insulating film 68 is deposited on the entire surface in a thickness range of 10 nm to 1000 nm, and then the insulating film 68 is formed by, for example, CMP (Chemical Mechanical Polishing). ) And the upper surface of the gate electrode 51 is exposed by wet etching, for example, an ammonium fluoride solution. Subsequently, the second gate electrode material 27 made of, for example, polysilicon or SiGe mixed crystal, which serves as a control electrode, is deposited in the range of 10 nm to 300 nm, and further, the metal reinforcing layer 27 'and the mask insulating film. (60) is deposited on the whole surface. Here, the concentration of boron, phosphorus, or arsenic in the second gate electrode material 27 is 1 × 10 19 cm −3 or more, so that the electric field applied to the ONO laminated film becomes smaller due to depletion of the control electrode, It is preferable to prevent the erase time or the write time from increasing. Next, in the memory cell, the pattern is linearly patterned in a direction orthogonal to the pattern of FIG. 27, and anisotropic etching is performed to form the mask insulating film 60, the metal reinforcement layer 27 ', the second gate electrode material 27, and Etching is performed to the gate electrode material 51 and the second insulating film 50. Subsequently, in order to reduce the leakage current between the channels of the memory cells represented by the two gate electrodes 51 shown in FIG. 28, for example, boron, BF 2 , and indium may have a surface concentration of 10 16 cm −3 or more. The p-type layer 18 may be formed by ion implantation so as to be between 10 nm and 500 nm so as to have a width of 10 18 cm −3 . Moreover, the insulating film 61 which consists of a silicon nitride film, a silicon oxynitride film, or an alumina film is formed in the whole surface in the range of 5 nm-200 nm, for example.

이 절연막(61)은, 예를 들면 CVD(Chemical Vapor Deposition)법이나 스퍼터법으로 형성된 퇴적 절연막이다. 또한, 메모리 셀에 대하여 전체면 퇴적되어 있는 것이, 절연막(61)보다 상방에 형성된 막으로부터의 가스 또는 래디컬, 이온이 메모리 셀에 악영향을 미치는 것을 방지할 수 있어 바람직하다.This insulating film 61 is a deposition insulating film formed by, for example, a chemical vapor deposition (CVD) method or a sputtering method. Further, it is preferable that the entire surface is deposited on the memory cell because it can prevent the gas, radicals and ions from the film formed above the insulating film 61 from adversely affecting the memory cell.

또한, 절연막(61)의 상방에는, 예를 들면, 붕소 또는 인을 1×1020-3 이상 포함하는 BPSG, PSG, BSG와 같은 실리케이트 글래스로 이루어지는 층간 절연막(62)이 10㎚ 내지 1000㎚의 두께의 범위에서 형성되어 있다. 이 실리케이트 글래스는 알칼리 이온을 게터링하는 기능이 있어, 메모리 셀 상방 전체면에 형성되는 것이 알칼리 이온에 의한 오염을 방지하기 위해서는 바람직하다. 도 27, 도 28에서는, 층간 절연막(62)은 절연막(61)에 직접 접해서 형성되어 있지만, 반드시 접해서 형성될 필요는 없고, 예를 들면 배선층간의 절연막이나 배선층 상의 절연막으로서 형성해도, 상기 게터링의 효과는 있으므로 상관없다.Above the insulating film 61, for example, an interlayer insulating film 62 made of silicate glass such as BPSG, PSG, and BSG containing 1 × 10 20 cm −3 or more of boron or phosphorus is 10 nm to 1000 nm. It is formed in the range of thickness. This silicate glass has a function of gettering alkali ions, and it is preferable to be formed on the entire surface above the memory cell in order to prevent contamination by alkali ions. In Figs. 27 and 28, the interlayer insulating film 62 is formed in direct contact with the insulating film 61. However, the interlayer insulating film 62 is not necessarily formed in contact with the insulating film 61. For example, the interlayer insulating film 62 may be formed as an insulating film between wiring layers or an insulating film on the wiring layer. It does not matter because it has the effect of turing.

또한, 실리케이트 글래스는 일반적으로 퇴적 직후의 매립성이 나쁘므로, 퇴적 후에, 예를 들면 750℃ 내지 1000℃ 사이에서 2분 내지 120분의 범위에서 어닐링함으로써 점성 유동시켜 평탄화시킨다. 이 어닐링 시에 실리케이트 글래스에 포함되는 수분 또는 하이드로늄 이온이 유리하지만, 절연막(61)을 형성함으로써, 이 수분에 의해 메모리 셀의 게이트 끝이 산화되게 되어 게이트 전극(51) 끝의 블록 산화막이 후막화하여, 형상이 변화되게 되는 것을 방지할 수 있다.In addition, since the silicate glass generally has poor embedding immediately after deposition, it is flattened by viscous flow after annealing, for example, by annealing in the range of 2 to 120 minutes between 750 ° C and 1000 ° C. Moisture or hydronium ions contained in the silicate glass are advantageous during this annealing. However, by forming the insulating film 61, the gate end of the memory cell is oxidized by this moisture, so that the block oxide film at the end of the gate electrode 51 becomes a thick film. The shape can be prevented from changing.

또한, 층간 절연막(62)으로서는, 예를 들면, 시클로펜타실란 또는 폴리실라잔으로 형성된 무기 글래스를 이용해도 된다. 이 경우, 시클로펜타실란 또는 폴리실라잔을 무기 글래스로 전환하기 위해서는 산화 공정이 필요하지만, 이 산화제가 메모리 셀의 게이트 엣지 부분을 산화하게 되기 때문에 게이트 전극(8) 끝의 블록 산화막이 후막화하여 형상이 변화하게 되는 문제를, 막(61)을 형성함으로써 방지할 수 있다. 또한, 막(62)은 예를 들면 TEOS나 HDP에 의해 형성한 실리콘 산화막이나 HSQ 등의 다른 층간막과의 적층 구조를 이용해도 된다.As the interlayer insulating film 62, for example, an inorganic glass formed of cyclopentasilane or polysilazane may be used. In this case, an oxidation process is required to convert cyclopentasilane or polysilazane into inorganic glass, but since the oxidant oxidizes the gate edge portion of the memory cell, the block oxide film at the end of the gate electrode 8 is thickened. The problem that the shape is changed can be prevented by forming the film 61. In addition, the film 62 may use a laminated structure with another interlayer film such as a silicon oxide film formed by TEOS or HDP or HSQ, for example.

또한, 층간 절연막(62)의 상방에는, 예를 들면, W, Al, AlCu나 Cu로 이루어지는 상부 배선(36)이 형성되어 있다. 본 예에서는, 특허의 구성 요건으로서 중요하지 않으므로 배선층으로서 1층만을 도시하였지만, 물론, 다층 배선 구조를 적층해도 된다. 또한, 그 위에는, 예를 들면, TEOS나 HDP에 의해 형성한 실리콘 산화막이나 HSQ라고 하는 층간 절연막(37)을 통해서 플라즈마 화학 기상 성장법으로 퇴적한 실리콘 질화막층(37')이 20㎚ 내지 1um의 범위에서 전체면 퇴적되어 있다. 이 실리콘 질화막층은, 칩 외부(상면)으로부터 확산되어 오는 수분을 차단하는 기능이 있다.In addition, an upper wiring 36 made of, for example, W, Al, AlCu, or Cu is formed above the interlayer insulating film 62. In this example, since only one layer is shown as the wiring layer because it is not important as a constituent requirement of the patent, of course, a multilayer wiring structure may be laminated. In addition, the silicon nitride film layer 37 'deposited by the plasma chemical vapor deposition method through a silicon oxide film formed by TEOS or HDP or an interlayer insulating film 37 called HSQ, for example, has a thickness of 20 nm to 1 um. The whole surface is deposited in the range. This silicon nitride film layer has a function of blocking moisture diffused from the outside of the chip (upper surface).

본 실시예에서는, 실시예 1-4의 효과 외에, 또한 적어도 이하의 효과 (3) 내지 (4)가 얻어진다.In this embodiment, in addition to the effects of Examples 1-4, at least the following effects (3) to (4) are obtained.

(3) 소스 영역 및 드레인 영역(28)이 형성되는 방향(도 27에서는 지면 표리 방향)과 직교해서 제어 전극(27)(도 27에서는 지면 좌우 방향)이 형성되어 있고, 인접하는 메모리 셀의 소스 전극 및 드레인 전극을 병렬 접속하는 구조, 예를 들면, Virtual Ground Array형을 실현하고 있다.(3) The control electrode 27 (the left and right directions in the page in FIG. 27) is formed orthogonal to the direction in which the source region and the drain region 28 are formed (in the front and back directions in FIG. 27), and the source of adjacent memory cells is formed. A structure in which electrodes and drain electrodes are connected in parallel, for example, a virtual ground array type is realized.

그 때문에, 메모리 셀 블록의 직렬 저항을 작고 일정하게 할 수 있어, 다치화한 경우의 임계값을 안정시키는데 적합하다.Therefore, the series resistance of the memory cell block can be made small and constant, which is suitable for stabilizing the threshold value in the case of multiplexing.

또한, 소자 분리막(12)과 소스 영역 및 드레인 영역(28), 및 전하 축적층(26)을 자기 정합적으로 형성할 수 있으므로, 이들 층간에서의 오정렬의 여유를 확보할 필요가 없어, 보다 고밀도의 메모리 셀을 실현할 수 있다. 이들 어레이 구성이나 효과에 대해서는, 예를 들면, 당 발명자들에 의한 선행 출원인 일본 특원 2001-264754에 기재되어 있으므로, 여기서는 생략한다.In addition, since the device isolation film 12, the source region and the drain region 28, and the charge storage layer 26 can be formed in a self-aligning manner, it is not necessary to secure a margin of misalignment between these layers, thereby providing a higher density. Can realize a memory cell. These array configurations and effects are described, for example, in Japanese Patent Application No. 2001-264754, which is a prior application by the present inventors, and therefore will be omitted here.

(4) 본 실시예에서는, 실시예 1, 2의 특징 외에, MONOS형 셀을 이용하고 있기 때문에, 실시예 1, 2의 부유 게이트형 EEPROM 셀보다도 기입 전압 및 소거 전압을 저전압화할 수 있어, 소자 분리 간격을 좁혀 게이트 절연막 두께를 박막화해도 내압을 유지할 수 있다. 따라서, 고전압이 인가되는 회로의 면적을 작게 할 수 있어, 보다 칩 면적을 축소할 수 있다. 또한, 실시예 1, 2와 비교해서, 전하 축적층(26)의 두께를 20㎚ 이하로 작게 할 수 있어, 보다 게이트 형성 시의 어스펙트를 저감할 수 있어, 게이트 전극의 가공 형상을 향상시키고, 층간 절연막(62)의 게이트간의 매립도 향상시킬 수 있어, 보다 내압을 향상시킬 수 있다. 또한, 부유 게이트 전극을 형성하기 위한 프로세스나 슬릿 작성 프로세스가 불필요하여, 보다 프로세스 공정을 짧게 할 수 있다. 또한, 전하 축적층(26)이 절연체이며, 1개 1개의 전하 트랩에 전하가 포획되어 있으므로, 방사선에 대하여 전하가 빠져나가기 어려워 강한 내성을 갖게 할 수 있다.(4) In the present embodiment, in addition to the features of the first and second embodiments, since the MONOS cell is used, the write voltage and the erase voltage can be lowered than those of the floating gate type EEPROM cells of the first and second embodiments. Even if the separation interval is narrowed to reduce the thickness of the gate insulating film, the breakdown voltage can be maintained. Therefore, the area of the circuit to which the high voltage is applied can be reduced, and the chip area can be further reduced. In addition, compared with Examples 1 and 2, the thickness of the charge storage layer 26 can be reduced to 20 nm or less, the aspect at the time of gate formation can be reduced, and the processing shape of the gate electrode can be improved. The filling between gates of the interlayer insulating film 62 can also be improved, and the breakdown voltage can be further improved. Moreover, the process for forming a floating gate electrode and the slit making process are unnecessary, and a process process can be shortened more. In addition, since the charge storage layer 26 is an insulator and charges are trapped in one charge trap, it is difficult for the charges to escape to the radiation and can be made to have strong resistance.

[실시예 8]Example 8

본 발명의 실시예 8은, 실시예 4보다도 더욱, "010"의 연속 심볼이 발생한 WL(n-1) 부분의 한 가운데의 "1" 비트 M1a(α)와, 지금부터 기입을 하는 WLn 내에 형성된 인접하는 비트의 M2a(ε)가 기입 비트 "0"인 것을, 예를 들면, 개수 0까지 대폭적으로 감소시킬 수 있는 일례에 관한 것이다. 또한, 본 실시예는, 실시예 1 내지 3과 독립적으로 행할 수도 있지만, 실시예 1 내지 3과 동일한 효과, 즉, 인접 메모리 셀의 용량 간섭의 영향을 완화하는 효과가 있으므로, 조합해서 이용하는 것이 가장 바람직하다. 실시예 1이나 실시예 2, 실시예 3과 동일한 부분이나 동일한 동작 부분에는, 동일 부호를 붙이고 상세한 설명은 생략한다. 본 실시예는 실시예 1 내지 3의 어느 실시에서도 적용할 수 있지만, 여기서는, 가장 효과가 높은 실시예 3에 관한 적용예를 설명한다.In the eighth embodiment of the present invention, the "1" bit M1a (?) In the middle of the portion of the WL (n-1) where the continuous symbol of "010" has occurred is further written in the WLn to be written from now on. The example relates to the fact that M2a (ε) of the formed adjacent bits is the write bit " 0 ", for example, can be greatly reduced to the number zero. In addition, although the present embodiment can be performed independently of the first to third embodiments, the same effect as the first to third embodiments, that is, the effect of alleviating the influence of the capacitive interference of adjacent memory cells, is best used in combination. desirable. The same parts as the first embodiment, the second embodiment, and the third embodiment or the same operation part are denoted by the same reference numerals and detailed description thereof will be omitted. Although the present embodiment can be applied to any of the embodiments 1 to 3, the application example of the third embodiment having the highest effect will be described here.

<구성예><Configuration example>

전체 구성예 Overall configuration example

우선, 본 예에 따른 전체 구성예로서, 도 30에 실시예의 데이터 기억 시스템의 블록도를 도시한다. 이 실시예에서는 실시예 4의 도 21과 마찬가지로, 기입을 행하는 메모리 셀에 대하여 WL 방향으로 인접한 메모리 셀, 특히, 이미 기입한 메모리 셀을 포함하는 워드선(데이터 선택선)의 정보 비트의 임계값을 기억하는 페이지 버퍼(115)를 더 갖고 있다. 또한, 페이지 버퍼(114)로서는, 본 실시예에서는, 정보 비트의 재배열을 행하는 페이지 버퍼로 한다. 이것은, 페이지 버퍼(114)에 기록된 비트를 소거 비트로 변경할 수 있으면 되고, 도 16에서 설명한 페이지 버퍼로 용이하게 실현할 수 있다. 또한, 페이지 버퍼(115 및 114)로서는, 실시예 4보다도, 정보 비트 외에, 셀의 용량 간섭의 영향을 완화하기 위한 부호 비트를 추가하는 것이 상이하다. 이것은, 예를 들면 실시예 3에서는 정보 비트와 아울러 1+1/(6-1)배의 부호 길이를 준비하면 된다. 또한, 실시예 1 및 실시예 2에서는, 정보 비트와 아울러, 1+1/(4-1)배의 부호 길이를 준비하면 된다.First, as a whole structural example which concerns on this example, FIG. 30 shows the block diagram of the data storage system of an Example. In this embodiment, as in FIG. 21 of Embodiment 4, the threshold value of the information bit of the word line (data selection line) including the memory cell adjacent to the WL direction with respect to the memory cell to write, in particular, the memory cell already written. It further has a page buffer 115 for storing. In the present embodiment, the page buffer 114 is a page buffer in which information bits are rearranged. This can only be achieved by changing the bit written in the page buffer 114 into the erase bit, and can be easily realized with the page buffer described with reference to FIG. As the page buffers 115 and 114, it is different from the fourth embodiment in that in addition to the information bits, code bits for mitigating the influence of the capacitive interference of the cells are added. For example, in the third embodiment, a code length of 1 + 1 / (6-1) times as well as information bits may be prepared. In the first and second embodiments, in addition to the information bits, a code length of 1 + 1 / (4-1) times may be prepared.

도시한 바와 같이, 부호 변환 회로는, 기입을 행하는 제1 페이지에, 물리적으로 인접한 제2 페이지의 정보 비트의 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출하고, 이 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내에 있는, 소거 비트에 인접하는 제1 페이지의 비트를 출력하는 제5 회로를 갖는다. 이 제5 회로가 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출한 경우에, 이 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내의 소거 비트에 인접하는 제1 페이지의 비트를 소거 비트와 치환하고, 부호화한 정보 비트를 생성한다. 또한, 제5 회로의 일련의 제1 페이지의 출력을 제2 부호로 하고, 이 제2 부호를 제2 페이지의 부호화한 정보 비트에 부가하여, 제2 정보 비트를 생성하는 부호 발생 수단과, 제2 정보 비트를 입력으로 해서, 물리적으로 인접한 제2 페이지의 정보 비트의 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출한 경우에, 이 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내의 소거 비트에 인접하는 제1 페이지의 비트를, 제2 부호의 일련의 비트와 치환 하는 복호 수단을 갖는다.As shown in the figure, the code conversion circuit detects a contiguous bit array of write bits / erase bits / write bits of the information bits of the second page that are physically adjacent to the first page to write, and writes the second page. And a fifth circuit for outputting the bits of the first page adjacent to the erase bits, within a contiguous bit array of bits / erase bits / write bits. When the fifth circuit detects a continuous bit array of write bits / erase bits / write bits, the first page adjacent to the erase bit in the continuous bit array of write bits / erase bits / write bits of this second page. The bits are replaced with erase bits to generate encoded information bits. Code generation means for generating an output of the first page of the fifth circuit as a second code and adding the second code to the encoded information bits of the second page to generate second information bits; When two information bits are input and a contiguous bit array of write bits / erase bits / write bits of information bits of a physically adjacent second page is detected, the write bits / erase bits / write bits of the second page are detected. And decoding means for replacing the bits of the first page adjacent to the erase bits in the continuous bit array with a series of bits of the second code.

본 실시예의 도 30에서는, 또한, 인접 메모리 셀 디스터브 저감 제2 부호 변환 회로(104)에 기입을 행하는 제1 페이지에, 물리적으로 인접한 제2 페이지의 정보 비트의 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출하고, 이 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내에 있는, 소거 비트에 인접하는 제1 페이지의 비트를 출력하는 제5 회로가 포함되어 있는 것이다.In FIG. 30 of the present embodiment, the write bit / erase bit / write bit of the information bits of the second page which are physically adjacent to the first page for writing to the adjacent memory cell disturb reduction second code conversion circuit 104 is further shown. A fifth circuit is included that detects the contiguous bit array and outputs the bits of the first page adjacent to the erase bits that are within the contiguous bit array of write bits / erase bits / write bits of this second page.

제5 회로의 구성예Configuration example of the fifth circuit

도 31을 이용해서, 본 예에 따른 제5 회로의 구성예를 설명한다. 도시한 바와 같이, 기본적으로 도 22의 심볼 카운터(116, 117)에 출력하는 회로의 구성 요소를, 제5 회로예의 출력하는 회로로서 이용하고 있고, 동일한 기능의 부분은 동일한 부호를 붙이고 설명을 생략한다. 제5 회로는, 예를 들면, WL(n-1)="010"이고 WLn="x1x"로 되는 출력 및 WL(n-1)="010"이고 WLn="x0x"로 되는 출력은, 도 31과 같이, WLn의 정보 비트의 처음부터, 일련의 정보 비트를 순서대로 시계열로 참조 부호 208로 이루어지는 1단위 시간 지연 회로에 입력하고, WLn-1에서 "010" 연속하는 3비트의 심볼의 한 가운데의 비트가 WLn에서 "1"로 되는 수를 검출하는 회로와, "0"으로 되는 수를 검출하는 회로를 조합함으로써, 용이하게 실현할 수 있다.31, an example of the configuration of a fifth circuit according to the present example will be described. As shown in the drawing, basically, the components of the circuit output to the symbol counters 116 and 117 of Fig. 22 are used as the output circuit of the fifth circuit example, and the same functional parts are denoted by the same reference numerals and description thereof is omitted. do. The fifth circuit is, for example, an output of WL (n-1) = "010" and WLn = "x1x" and an output of WL (n-1) = "010" and WLn = "x0x", As shown in Fig. 31, from the beginning of the information bits of WLn, a series of information bits are sequentially input to a one-unit time delay circuit composed of reference numeral 208 in time series, and the symbols of three consecutive bits of " 010 " By combining a circuit that detects the number at which the bit in the middle becomes " 1 " in WLn, and a circuit that detects the number at which the bit becomes " 0 ", it can be easily realized.

도면 중의 출력1에서는, WLn-1이 "010"이 순서대로 입력된 단위 시간에서, WLn-1이 "010"으로 되며, 또한, WLn이 "x0x"로 된 경우, WLn-1의 "010" 최후의 "0"이 입력된 단위 시간에서, 출력이 1단위 시간 "L"로부터 "H"로 되고, 다른 경우에는 "L"로 된다. 또한, 도면 중의 출력2에서는, "010"이 순서대로 입력된 단위 시 간에서, WLn-1이 "010"으로 되며, 또한, WLn이 "x1x"로 된 경우, WLn-1의 "010" 최후의 "0"이 입력된 단위 시간에서, 출력이 1단위 시간 "L"로부터 "H"로 되고, 다른 경우에는 "L"로 된다. 여기서, WLn-1의 정보 비트가 들어간 페이지 버퍼(115)로부터, 상기 WLn의 정보 비트 입력과 동기시켜 정보 비트의 처음부터 일련의 정보 비트를 순서대로 시계열로 입력시키는 것으로 한다.In output 1 in the figure, WLn-1 becomes "010" in the unit time in which WLn-1 is input in order of "010", and when "WLn" becomes "x0x", "010" of WLn-1. In the unit time at which the last " 0 " was inputted, the output is changed from one unit time " L " to " H " In the output 2 in the figure, WLn-1 becomes " 010 " at the unit time in which " 010 " is input in sequence, and " 010 " last of WLn-1 when WLn becomes " x1x " In the unit time in which "0" is inputted, the output becomes "H" from one unit time "L", otherwise it becomes "L". Here, from the page buffer 115 containing the information bits of WLn-1, a series of information bits are sequentially inputted in order from the beginning of the information bits in synchronization with the information bit input of the WLn.

또한, 도면 중의 출력3으로서, 기입을 행하는 제1 WLn의 페이지에, 물리적으로 인접한 제2 WL(n-1)의 페이지의 정보 비트의 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출하고, 상기 제2 WL(n-1)의 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내에 있는, 소거 비트에 인접하는 제1 WLn 페이지의 비트를 출력한다. 이 출력3을 출력하는 회로에서는, "010"이 순서대로 입력된 단위 시간에서, WLn-1이 "010"으로 되고, WLn-1의 중앙의 소거 "1" 비트에 대응하는 WLn 비트가 출력된다. 이것에는, 도시하는 바와 같이, 인버터(209) 및 MOS 트랜지스터(215), PMOS 트랜지스터(216)로 형성된 바이래터럴 게이트를 이용하면, 용이하게 형성할 수 있다.In addition, as an output 3 in the figure, a continuous bit array of write bits / erase bits / write bits of information bits of a page of a second WL (n-1) physically adjacent to a page of a first WLn to write is detected. Outputs a bit of a first WLn page adjacent to an erase bit in a contiguous bit array of write bits / erase bits / write bits of the page of the second WL (n-1). In the circuit outputting this output 3, WLn-1 becomes "010" in the unit time in which "010" is sequentially input, and the WLn bit corresponding to the erase "1" bit in the center of WLn-1 is output. . As shown in the figure, a bilateral gate formed of the inverter 209, the MOS transistor 215, and the PMOS transistor 216 can be easily formed.

또한, 도 31의 출력4는, "010"이 순서대로 입력된 단위 시간에서, WLn-1이 "010"으로 된 경우, WLn-1의 "010" 최후의 "0"이 입력된 단위 시간에서, 출력이 1단위 시간 "L"로부터 "H"로 되고, 다른 경우에는 "L"로 된다.In addition, output 4 in FIG. 31 is the unit time in which "010" is input in order, and when the WLn-1 becomes "010", the unit time in which "010" last "0" of WLn-1 is input. The output becomes "H" from "L" for one unit of time, and "L" in other cases.

또한, 상기 도 30에서는, 이 제5 회로로부터 출력된 비트를 제2 부호의 배열로 하고, 제2 부호를 기억하는 버퍼(188)를 갖는다. 이 출력4를 트리거로 해서, 출력3을 순서대로 버퍼(188)에 유지함으로써, 제2 부호를 유지할 수 있다.In addition, in FIG. 30, the bit output from this 5th circuit is made into the arrangement of a 2nd code, and has the buffer 188 which stores a 2nd code. By holding this output 4 as a trigger and holding the output 3 in the buffer 188 in order, the second code can be held.

또한, 여기서 제5 회로를 포함하는 인접 메모리 셀 디스터브 저감 제2 부호 변환 회로(104)는, 블록도로서는, 실시예 4의 도 21의 인접 메모리 셀 디스터브 저감 제2 부호 변환 회로와 동일한 블록도이기는 하지만, 상기한 바와 같은 제5 회로를 포함하는 것을 특징으로 한다.Here, the adjacent memory cell disturbance reducing second code conversion circuit 104 including the fifth circuit is the same block diagram as the adjacent memory cell disturbance reduction second code conversion circuit of FIG. However, it is characterized by including the fifth circuit as described above.

페이지 버퍼 메모리의 구성 및 동작예 Configuration and operation example of page buffer memory

또한, 도 32a, 도 32b를 이용해서, 페이지 버퍼 메모리의 회로 및 동작예를 도시한다. 도 32a에 도시하는 바와 같이, aa 비트 길이의 제2 부호 비트를 일시 기억하는 페이지 버퍼(11)의 예를 도시하고 있다. 본 예에서는 D형 플립플롭(208)을 직렬로 k단 접속하고, 최종단의 출력을, n형 트랜지스터(215)와 p형 트랜지스터(216), 및 인버터(209)로 이루어지는 쌍방향 스위치 회로(bi-lateral switching circuit)에 의해서 접속하고 있다. 또한, 본 예의 D형 플립플롭(208)으로서는, 클럭 입력이 "L"(여기서는 편의적으로 0[V]으로 함)로부터 "H"(여기서는 편의적으로 Vcc로 함)로 상승하는 순간에 출력이 확정되고, 그 이후는 클럭이 "H" 상태 그대로이든 "L" 상태 그대로이든 "H"로부터 "L"로 변화해도 출력은 변화되지 않는 엣지 트리거(edge trigger)형의 플립플롭으로 한다. 또한, 이 쌍방향 스위치 회로는, 데이터 출력 제어 입력이 "H"인 경우에, 참조 부호 215와 216의 전류 단자가 도통 상태로 되고, "L"인 경우에 차단 상태로 되는 회로이다.32A and 32B show a circuit and an operation example of the page buffer memory. As shown in FIG. 32A, the example of the page buffer 11 which temporarily stores the 2nd code bit of aa bit length is shown. In the present example, the bidirectional switch circuit bi consisting of the n-type transistor 215, the p-type transistor 216, and the inverter 209 is connected in k stages by connecting the D-type flip-flop 208 in series. It is connected by a lateral switching circuit. In addition, as the D flip-flop 208 of this example, the output is determined at the moment when the clock input rises from "L" (here, 0 [V] for convenience) to "H" (here, Vcc for convenience). After that, the output is changed to an edge trigger type flip-flop in which the output does not change even when the clock is in the "H" state or the "L" state. This bidirectional switch circuit is a circuit in which the current terminals of reference numerals 215 and 216 are in a conducting state when the data output control input is " H ", and a cutoff state when " L ".

계속해서, 도 32b에 그 회로의 동작을 도시한다. 도시하는 바와 같이, D형 플립플롭에 데이터를 기억하는 경우에는, 우선, 데이터 출력 제어 입력을 "L"로 하여, 플립플롭(208)의 출력이 데이터 입출력선에 출력되지 않도록 한다. 또한, 데 이터 입출력(I/O)선에 Vcc("H")나 0V("L")의 디지털 데이터 Din1을 공급한 후, 클럭을 "L"로부터 "H"로 한다. 이에 의해, Din1의 데이터가 도 32(a)의 가장 좌측의 플립플롭(208)에 유지된다. 다음으로, 데이터 입출력(I/O)선에 Vcc("H")나 0V("L")의 디지털 데이터 Din2를 공급한 후, 클럭을 "L"로부터 "H"로 한다. 이에 의해, Din1의 데이터가 도 32(a)의 좌측으로부터 2번째의 플립플롭(201)에 전송 및 유지되고, 가장 좌측의 플립플롭(208)에 Din2가 유지된다. 이후에는, 순차적으로 aa[bit]까지 데이터 입출력(I/O)선에 디지털 데이터를 공급하고, 클럭을 공급함으로써, 도 32(a)의 우측의 플립플롭으로부터 순서대로 Din1, Din2...Dinaa의 데이터가 유지되어, aa[Bit]의 데이터를 유지할 수 있다.32B shows the operation of the circuit. As shown in the figure, when data is stored in the D-type flip-flop, the data output control input is first set to "L" so that the output of the flip-flop 208 is not output to the data input / output line. After the digital data Din1 of Vcc ("H") or 0V ("L") is supplied to the data input / output (I / O) line, the clock is changed from "L" to "H". As a result, the data of Din1 is held in the leftmost flip-flop 208 of Fig. 32A. Next, after supplying the digital data Din2 of Vcc ("H") or 0V ("L") to the data input / output (I / O) line, the clock is changed from "L" to "H". As a result, the data of Din1 is transferred to and held in the second flip-flop 201 from the left in FIG. 32A, and Din2 is held in the leftmost flip-flop 208. Subsequently, digital data is supplied to the data input / output (I / O) line up to aa [bit] sequentially, and a clock is supplied so that Din1, Din2 ... Dinaa in order from the flip-flop on the right side of Fig. 32 (a). Data is retained, and data in aa [Bit] can be retained.

다음으로, 본 페이지 버퍼1로부터 데이터를 읽어내는 동작을 설명한다. 우선, 데이터 출력 제어 입력을 "H"로 하고, 가장 우측의 플립플롭(208)의 출력을 데이터 입출력선에 출력한다. 이에 의해 데이터 입출력선에는 Din1의 데이터와 동일한 데이터(여기서는 Dout1로 함)가 출력된다. 또한, 클럭 입력을 클럭 "L"로부터 "H"로 한다. 이에 의해, 좌측으로부터 우측의 플립플롭에 1비트 데이터가 전송 및 유지된다. 그 결과, 데이터 입출력선에는 Din2의 데이터와 동일한 데이터(여기서는 Dout2로 함)가 출력된다. 이후에는, 전부 (aa-1)회 클럭 입력을 클럭 "L"로부터 "H"로 함으로써, 데이터 입출력(I/O)선에 도 32(a)의 우측의 플립플롭으로부터 순서대로 Din1, Din2...Dinaa의 데이터가 출력되어, aa[Bit]의 데이터를 출력할 수 있다.Next, the operation of reading data from this page buffer 1 will be described. First, the data output control input is set to "H", and the output of the rightmost flip-flop 208 is output to the data input / output line. As a result, the same data as the data of Din1 (here, referred to as Dout1) is output to the data input / output line. In addition, the clock input is set to "H" from clock "L". As a result, one-bit data is transmitted and held from the left to the right flip-flop. As a result, the same data as the data of Din2 (here, referred to as Dout2) is output to the data input / output line. Subsequently, by setting the clock inputs (a-1) times from clock "L" to "H", Din1, Din2. Din2. In order from the flip-flop on the right side of Fig. 32A on the data input / output (I / O) line. The data of Dinaa is output, and the data of aa [Bit] can be output.

<부호 형성 플로우><Code formation flow>

다음으로, 도 33을 이용해서, 본 실시예 8에 따른 부호를 형성하는 동작 플로우를 설명한다. 또한, 이하의 WL(n-1), WL(n)은 적어도 1비트의 기입에 비트를 순서대로 WL(n-1), WL(n)로 기입하는 것으로 하고, n을 자연수로 해서 순서대로 기입을 행하는 것으로 한다. 또한, 실시예 3에서 설명한 바와 같이, 예를 들면, 이미 WLn의 정보 비트 중의 기입 비트/소거 비트/기입 비트의 연속 배열을 줄이기 위한 실시를 행하고 있던 쪽이, 보다 기입 비트/소거 비트/기입 비트의 연속 배열의 상한을 줄일 수 있기 때문에 바람직하다.Next, the operation flow of forming the code | symbol which concerns on this eighth Embodiment is demonstrated using FIG. In the following WL (n-1) and WL (n), at least one bit is written in WL (n-1) and WL (n) in order, and n is a natural number in order. It is assumed that writing is performed. In addition, as described in the third embodiment, for example, the one which has already been implemented to reduce the continuous arrangement of the write bits / erase bits / write bits in the information bits of WLn has more write bit / erase bits / write bits. It is preferable because the upper limit of the continuous arrangement of can be reduced.

우선, SE201에서, 제1 정보 비트 내의 비트 위치를 나타내는 카운터 kk를 1로 한다. 또한, 체크섬 기록 카운터 cs를 0으로 한다. 또한, 버퍼(188)를 미리 "L"로 리세트해 둔다. 다음으로, SE202에서, 제1 정보 비트의 kk의 위치에서, 기입 비트/소거 비트/기입 비트의 연속 배열이 있는지 조사한다. 이것에는, 도 31에 도시한 제5 회로의 출력4가 "H"인지 "L"인지를 검출하면 된다.First, in SE201, the counter kk indicating the bit position in the first information bit is set to one. In addition, the checksum recording counter cs is set to zero. In addition, the buffer 188 is reset to "L" in advance. Next, in SE202, at the position of kk of the first information bit, it is checked whether there is a continuous array of write bits / erase bits / write bits. This may be done by detecting whether the output 4 of the fifth circuit shown in FIG. 31 is "H" or "L".

다음으로, SE203에서, 기입 비트/소거 비트/기입 비트의 연속 배열이 있는지 판단을 행하고, 없는 경우에는, SE207에서 카운터 kk의 값을 1 늘린다. 다음으로, SE208에서 카운터 kk의 값에 2 더한 값이 제1 정보 비트보다 큰지 판단한다. 여기서, SE208에서 "아니오"인 경우에는, SE202로 되돌아가서, 제1 정보 비트의 다음의 비트에 대해서 기입 비트/소거 비트/기입 비트의 연속 배열이 있는지 조사한다.Next, in SE203, it is determined whether there is a continuous array of write bits / erase bits / write bits. If not, the value of the counter kk is increased by one in SE207. Next, in SE208, it is determined whether the value of the counter kk plus two is greater than the first information bit. If NO in SE208, the flow returns to SE202 to check whether there is a continuous array of write bits / erase bits / write bits for the next bit of the first information bit.

한편, SE203에서, "예"의 분기의 경우에는, SE204에서, 제1 정보 비트의 WL(n-1)의 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 소거 비트에 인접하는 WLn의 비트를 제5 회로의 출력3으로부터 출력한다. 이것을, SE205에서 버 퍼(188)에 순서대로 기억함으로써 제2 부호를 형성한다. 이 때, 또한, 체크섬의 카운터 cs에 (kk+1)의 값을 더한다. 이것은, WL(n-1)의 기입 비트/소거 비트/기입 비트 배열의 소거 비트의 위치를 나타내는 값, 즉, 어드레스의 값을 cs에 더하는 것을 의미하고 있다.On the other hand, in SE203, in the case of the branch of "Yes", in SE204, the bit of WLn adjacent to the erase bit of the continuous bit array of write bit / erase bit / write bit of WL (n-1) of the first information bit. Is output from the output 3 of the fifth circuit. The second code is formed by sequentially storing this in the buffer 188 in SE205. At this time, the value of (kk + 1) is further added to the counter cs of the checksum. This means that a value indicating the position of the erase bit of the write bit / erase bit / write bit array of WL (n-1), that is, an address value, is added to cs.

또한, SE206에서, 제1 정보 비트의 WL(n-1)의 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 소거 비트에 인접하는 WLn의 비트를 소거 비트로 치환한다. 이에 의해, WL(n-1)의 기입 비트/소거 비트/기입 비트의 배열의 소거 비트에 인접하는 WLn의 비트가 기입 비트로 되지 않는다. 이 치환을 행한 후의 부호를 제1 부호로 한다. 이에 의해, 메모리 셀 용량 간섭이 큰 비트 패턴의 발생을 방지할 수 있다. 이 후, SE207의 시퀀스에 합류한다.Further, in SE206, the bits of WLn adjacent to the erase bits of the continuous bit array of the write bit / erase bit / write bit of WL (n-1) of the first information bit are replaced with erase bits. As a result, the bits of WLn adjacent to the erase bits of the array of write bits / erase bits / write bits of WL (n-1) do not become write bits. The code | symbol after this substitution is made into 1st code | symbol. As a result, generation of a bit pattern with a large amount of memory cell capacity interference can be prevented. Thereafter, the sequence of SE207 is joined.

한편, SE208에서 "예"의 분기의 경우에는, SE209에서, 버퍼(188)에 기록된 제2 부호에 대해서, 제2 부호의 길이를 구한다. 이것은, 제2 부호를 기억하는 버퍼의 출력의 "H"의 수를 셈으로써, 제2 부호의 길이를 구할 수 있는 것은 명백하다.On the other hand, in the case of the branching of "YES" in SE208, the length of the second code is obtained for the second code recorded in the buffer 188 in SE209. It is obvious that the length of the second code can be obtained by counting the number of "H" of the output of the buffer which stores the second code.

또한, 체크섬 카운터 cs의 값을 체크섬으로서 구해 둔다. 다음으로, 상기 제1 부호에, 제2 부호, 및 상기 체크섬 cs 및 제2 부호의 길이의 정보를 가한 것을, 제2 정보 비트로서 작성한다. 이것에는, 예를 들면, 정보 비트의 재배열을 행하는 페이지 버퍼(114)에 제1 부호를 기록해 두고, 제2 부호를 기록하는 버퍼(188)의 출력, 상기 체크섬 cs, 및 제2 부호의 길이의 정보 비트를, 페이지 버퍼(114)에 제1 부호 뒤에 기록되도록 입력함으로써 작성할 수 있다.In addition, the value of the checksum counter cs is obtained as a checksum. Next, what added the information of the 2nd code | symbol and the length of the said checksum cs and the 2nd code | word to the said 1st code is created as a 2nd information bit. For example, the first code is recorded in the page buffer 114 for rearranging the information bits, and the output of the buffer 188 for recording the second code, the checksum cs, and the length of the second code, for example. Can be created by inputting the information bits of to be written after the first code into the page buffer 114.

여기서, 예를 들면, 이미 WLn의 정보 비트 중의 기입 비트/소거 비트/기입 비트의 연속 배열을 줄이기 위한 실시를 행하고 있는 경우에는, 도 34와 같이, 제1 정보 비트에 플래그1 상당 정보, 및 플래그2 상당 정보가 추가된 것에, 제2 부호, 및 상기 체크섬 cs 및 제2 부호의 길이의 정보를 가한 것을, 제2 정보 비트로서 작성하면 된다. 또한, 제2 부호, 및 상기 체크섬cs 및 제2 부호의 길이의 정보를 부가한 것을 제2 추가 부호라고 부르기로 한다.Here, for example, in the case where the implementation for reducing the continuous arrangement of the write bit / erase bit / write bit in the information bits of WLn has already been performed, as shown in Fig. 34, the flag 1 equivalent information and the flag in the first information bit are shown. What added the 2nd code and the information of the length of the said checksum cs and the 2nd code to what added 2 equivalent information should just be created as a 2nd information bit. In addition, what added the information of the 2nd code | symbol and the said checksum cs and the length of a 2nd code is called a 2nd additional code.

본 실시예에서는, 우선, 실시예 4와 같이, WL(n-1)의 "010" 부분에 인접한 WLn의 정보 비트를 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c로 한다. 이 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c의 총수는, 실시예 3에서는, {(k/6)을 정수로 잘라올린 값}-1 이하이며, 실시예 1 또는 실시예 2를 동시에 이용한 경우에는, {(k/4)를 정수로 잘라올린 값}-1로 된다.In this embodiment, first, as in the fourth embodiment, information bits of WLn adjacent to the "010" portion of WL (n-1) are set to 500_1, 500_2, 500_3, ..., 500_c-2, 500_c-1, Let it be 500_c. The total number of these 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c is {value of truncated ((k / 6)) to the integer} -1 or less in Example 3, and the Example When using 1 or Example 2 simultaneously, it is set as {(k / 4) the value cut out to an integer} -1.

여기서, 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c의 정보 비트는, 예를 들면, 제1 정보 비트의 좌측으로부터 우측으로 순서대로 배열되어 있는 것으로 한다. 이것은, 우측으로부터 좌측으로 순서대로 배열해도 된다. 다음으로, 500_1, 500_2, 500_3,...., 500_c-2, 500_c-1, 500_c의 정보 비트를 추출하고, 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로서 플래그2 상당 정보의 우측에 제2 추가 부호의 1부로서 순서대로 배열한다. 제1 정보 비트의 좌측으로부터 우측으로 순서대로 배열하는 것이 간편해서 좋지만, 이것은, 우측으로부터 좌측으로 순서대로 배열해도 되고, 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c의 c개의 부호를 1회씩 순회하는 순회 부호를 이용한 일정한 약속으 로 재배열을 행해도 된다.Here, the information bits of 500_1, 500_2, 500_3, ..., 500_c-2, 500_c-1, 500_c are assumed to be arranged in order from left to right of the first information bit, for example. This may be arranged in order from right to left. Next, the information bits of 500_1, 500_2, 500_3, ..., 500_c-2, 500_c-1, 500_c are extracted, and 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c As a part of the 2nd additional code | symbol, it arrange | positions in order on the right side of the flag 2 correspondent information as a figure. Although it may be easy to arrange in order from the left to the right of the first information bit, this may be arranged in the order from the right to the left, and 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c The reordering may be performed with a certain promise using a cyclic code for circulating the c codes of once.

또한, 상기에서 설명한 바와 같이, 제2 추가 부호의 이 부분의 길이는, 실시예 3에서는, {(k/6)을 정수로 잘라올린 값}-1 이하이며, 실시예 1 또는 실시예 2를 동시에 이용한 경우에는, {(k/4)를 정수로 잘라올린 값}-1로 된다. 또한, WLn의, 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c의 정보 비트 상당 부분에는, 소거 비트인 "1"로 치환한다. 이것은, 도 34에서 도시하는 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c로 한다. 이에 의해, 제1 정보 비트 중의, WL(n-1)의 "010" 부분에 인접한 WLn의 정보 비트를, 전부 "1"로 할 수 있다. 따라서, 도 2의 (iv)와 같은 최악의 "010"에 인접하는 기입 비트 "0"의 상태를, 도 34의 k-bit의 제1 정보 비트 중에서는 0개로 할 수 있다.As described above, the length of this portion of the second additional code is {value of truncated ((k / 6)) to an integer} -1 or less in Example 3, and the example 1 or 2 In the case of simultaneous use, {(k / 4) is rounded to an integer} -1. The information bits corresponding to 500_1, 500_2, 500_3, ..., 500_c-2, 500_c-1, 500_c of WLn are replaced with "1" which is an erase bit. This is set to 500b_1, 500b_2, 500b_3, ..., 500b_c-2, 500b_c-1 and 500b_c shown in FIG. Thereby, all the information bits of WLn adjacent to the "010" part of WL (n-1) in a 1st information bit can be set to "1". Therefore, the state of the write bit " 0 " adjacent to the worst " 010 " as shown in Fig. 2 (iv) can be zero among the first information bits of the k-bit in Fig. 34.

여기서, 제2 추가 부호에서는, 제1 부호의 WL(n-1)의 "010"의 부호열의 "1"에 대향한 개소의 정보 배열에 대하여, 순서대로 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 배열하고 있다. 따라서, 복호에는, WL(n-1)의 제1 정보 비트의 "010"의 "1"의 부분에 대향한 WLn의 정보 비트를, 예를 들면, 좌측으로부터 세어 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 치환함으로써 복호할 수 있는 것은 분명하다.Here, in the second additional code, 500a_1, 500a_2, 500a_3, ... in order to the information array of the position facing the "1" of the code string of "010" of the WL (n-1) of the first code. , 500a_c-2, 500a_c-1, and 500a_c. Therefore, in decoding, the information bits of WLn opposed to the part of "1" of "010" of the first information bits of WL (n-1) are counted from the left, for example, 500a_1, 500a_2, 500a_3, .. It is clear that decoding can be performed by substituting for 500a_c-2, 500a_c-1, 500a_c.

여기서, 본 부호의 형성법은, 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c의 모든 어드레스를 기록하는 것보다도 부호 길이를 단축할 수 있지만, WL(n-1)의 "010"의 발생 개소가 1개 소실 또는 잘못해서 발생한 경우에는, 그 복호화 방법으로부터, 제2 추가 부호의 이 부분의 길이만큼 오류가 발생하게 될 가능성 이 있다. 따라서, 특히, 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c에 대항하는 WL(n-1)의 "010" 개소에 대해서는 오류 정정을 할 수 있는 것이 바람직하다.Here, the code formation method can shorten the code length than recording all addresses of 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c, but WL (n-1) When one occurrence location of "010" is missing or accidentally generated, an error may occur from the decoding method by the length of this part of the second additional code. Therefore, in particular, it is desirable to be able to correct an error in the " 010 " location of WL (n-1) against 500_1, 500_2, 500_3, ..., 500_c-2, 500_c-1, 500_c.

따라서, 도 34에 도시하는 바와 같이, 예를 들면, 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c의 정보 비트 상당 부분의, 예를 들면, 정보 비트의 좌단으로부터 센 어드레스, 즉 몇비트째인지를 구하고, 그 어드레스의 합을 구한 것, 소위 체크섬(501)을, 제2 추가 부호에 추가하고 있다. 또한, 이 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c의 정보 비트의 개수(502)를 제2 추가 부호에 추가하고 있다.Therefore, as shown in Fig. 34, for example, information bits corresponding to the information bits of 500_1, 500_2, 500_3, 500_4, ..., 500_c-2, 500_c-1, 500_c, for example, The address counted from the left end, that is, how many bits are obtained, and the sum of the addresses, the so-called checksum 501, is added to the second additional code. The number 502 of information bits of 500_1, 500_2, 500_3, 500_4, ..., 500_c-2, 500_c-1, 500_c is added to the second additional code.

예를 들면, 도 34에서는, 500_1은 좌단으로부터 세어 3비트째, 500_2는 좌단으로부터 세어 5비트째, 500_3은 좌단으로부터 세어 7비트째에 상당하고 있고, 이들 체크섬(501)으로서는, 3+5+7+....+(500_c-1의 제1 정보 비트의 좌단으로부터의 위치)+(500_c의 제1 정보 비트의 좌단으로부터의 위치)로 하면 된다. 또한, 제1 정보 비트의 WL(n-1)의 "010"의 개수가 c개인 경우, 정보 비트의 개수(502)로서는, c를 이용하면 된다.For example, in Fig. 34, 500_1 is counted from the left end, and the third bit is 500_2, 500_2 is counted from the left end, and 500_3 is counted from the left end and corresponds to the seventh bit. As these checksums 501, 3 + 5 + 7 +... + (Position from the left end of the first information bit of 500_c-1) + (position from the left end of the first information bit of 500_c). In addition, when the number of "010" of WL (n-1) of 1st information bits is c, you may use c as the number 502 of information bits.

복합화 시퀀스Compounding sequence

이들 체크섬과 정보 비트의 개수에 의해, 예를 들면, 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c의 대향하는 WL(n-1)의 "010" 부호열 중에서 1비트 오류가 발생해도, 오류 정정을 할 수 있다. 상기 1비트 오류를 포함할 가능성이 있는 부호의 복호화 방법에 대해서는, 도 35의 SE101 내지 SE107에 의해 표시 되는 시퀀스에 의해 복호화된다.By the number of these checksums and information bits, for example, the "010" code of the opposing WL (n-1) of 500_1, 500_2, 500_3, 500_4, ..., 500_c-2, 500_c-1, 500_c Even if a 1-bit error occurs in the column, error correction can be performed. The code decoding method that may include the one-bit error is decoded by the sequence indicated by SE101 to SE107 in FIG.

여기서, 예를 들면, 우선, WL(n)의 500_3이 인접하는, WL(n-1)의 "010" 부호열이 "011"이나 "000", 또는 "110"으로 1비트 오류가 발생한 것으로 한다. 여기서는, 간단히 설명하기 위해서 1비트 오류를 예로 들었지만, "010"의 3연 비트를 1워드로 하고, "010" 부호열이 "111" 등 잘못된 워드로 변환된 경우라도 올바르게 복원을 할 수 있다.Here, for example, first, if a "010" code string of WL (n-1) adjacent to 500_3 of WL (n) is "011", "000", or "110", a 1-bit error has occurred. do. Here, for the sake of simplicity, a 1-bit error is taken as an example, but even when the triple bit of "010" is set to 1 word and the "010" code string is converted to an incorrect word such as "111", it can be correctly restored.

상기 "010" 부호열에 1비트 오류가 발생한 경우, 우선, 제1 정보 비트의 WL(n-1)의 "010" 패턴의 개수의 합으로부터 정보 비트의 개수(502)의 차를 구한다. 예를 들면, 이 차를 차 A로 한다. 차 A가 1이나 -1이 아닌 경우에는, 부호 오류가 없다고 판정하고, 상기 제1 정보 비트의 WL(n-1)의 "010"의 "1"의 부분에 대향한 WLn의 정보 비트를, 예를 들면, 좌측으로부터 세어 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 치환함으로써 복호할 수 있다(SE107). 이것은, 물론, 부호화 시에 행한 배열 방법 순서에 따라서, 원래의 정보 비트를 복호할 수 있는 순서대로 배열하면 된다. 이들 정보 비트의 배열법에 대해서는, 이하 본 실시예의 변형예에도 마찬가지로 이용할 수 있다.When a one-bit error occurs in the "010" code string, first, a difference of the number of information bits 502 is obtained from the sum of the number of "010" patterns of WL (n-1) of the first information bits. For example, let this car be car A. If the difference A is not 1 or -1, it is determined that there is no sign error, and the information bits of WLn opposed to the part of "1" of "010" of the WL (n-1) of the first information bit, For example, it can decode by counting from the left side and replacing with 500a_1, 500a_2, 500a_3, ..., 500a_c-2, 500a_c-1, 500a_c (SE107). This may, of course, be arranged in the order in which the original information bits can be decoded according to the arrangement method performed at the time of encoding. The arrangement of these information bits can be similarly used in the modification of the present embodiment below.

또한, 차 A가 -1로 되는 경우에는, SE101에서 "예"의 분기로 되어, 500_1, 500_2, 500_4, ...., 500_c-2, 500_c-1, 500_c의 대향하는 WL(n-1)의 "010" 부호열 내에서 1워드 오류가 발생하여, WL(n-1) 내의 "010" 부호열이 1개 소실되어 있는 것을 나타내고 있다. 이 SE101에서의 "예"의 분기의 경우, 즉, (체크섬(501)-{WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 합}을 취함으로써, WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 위치, 즉, 이 경우, 500_3의 정보 비트의 위치를 구할 수 있다(SE102). 따라서, 500_2의 정보 비트와 500_4의 정보 비트 사이의, 500_3의 정보 비트의 위치에 WL(n-1)의 "010"의 부호열에 인접하는 정보 비트가 존재하는 것을 알 수 있으므로, 복호에는, WL(n-1)의 "010"의 "1" 부분에 인접한 WLn의 정보 비트에, 500_3의 정보 비트의 위치를 부가함으로써, 예를 들면, 500b_1, 500b_2, 500b_3, ....., 500b_c-2, 500b_c-1, 500b_c를 좌측으로부터 세어 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 치환함으로써, 올바르게 복호할 수 있다(SE103).In addition, when the difference A becomes -1, it becomes a branch of "Yes" in SE101, and WL (n-1 which opposes 500_1, 500_2, 500_4, ...., 500_c-2, 500_c-1, 500_c 1 word error occurs within the "010" code string, indicating that one "010" code string in WL (n-1) is lost. In the case of the "Yes" branch in SE101, that is, (sum of positions from the left end of the information bit of "1" in the code string of "010" of checksum 501- {WL (n-1)}). In this case, the position of the information bit of "1" in the code string "010" of WL (n-1), that is, in this case, the position of the information bit of 500_3 can be obtained (SE102). Since the information bit adjacent to the code string of "010" of WL (n-1) exists at the position of the information bit of 500_3 between the bit and the information bit of 500_4, since decoding has WL (n-1) For example, 500b_1, 500b_2, 500b_3, ....., 500b_c-2, 500b_c-1 by adding the position of the information bit of 500_3 to the information bit of WLn adjacent to the "1" part of "010" of the following. , 500b_c is counted from the left side and 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c can be correctly decoded (SE103).

한편, 예를 들면, WL(n-1)의 "010" 부호열 이외의 부호열이 "010"이라고 하는 워드로 변화되는 오류가 발생한 것으로 한다. 예로서는, 500_4의 위치와 500_5의 위치 사이의 WL(n-1)의 부호가 "011"로부터 "010"으로 변화된 것으로 한다.On the other hand, for example, an error in which a code string other than the "010" code string of WL (n-1) is changed to a word "010" has occurred. As an example, it is assumed that the sign of WL (n-1) between the position of 500_4 and the position of 500_5 is changed from "011" to "010".

상기 "010" 부호열 이외의 부호열에 1비트 오류가 발생한 경우, 우선, 정보 비트 중의 WL(n-1)의 "010"의 부호열의 개수의 합으로부터 정보 비트의 개수(502)의 차를 구하면, 차 A가 1로 된다. 이 차 A가 1로 되는 경우, 즉, SE104에서 "예"의 분기의 경우에는, 500_1, 500_2, 500_3, ...., 500_c-2, 500_c-1, 500_c의 대향하는 제1 정보 비트의 WL(n-1)의 부호열 내에서 오류가 발생하여, WL(n-1) 내의 "010" 부호열이 잘못해서 1개 증대하고 있는 것을 나타내고 있다. 이 증대한 경우, {WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 합}-(체크섬(501))을 취함으로써, 오류가 발생한 WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 위치 a를 구할 수 있다(SE105). 따라서, 상기 정보 비트의 위 치 a에 상당하는 WLn의 비트는 변경하지 않도록 해서 스킵하는, 즉, 이 상기 정보 비트의 위치 a에 상당하는 WLn의 비트를, WL(n-1)의 "010"의 부호열 중의 "1"에 대향한 WLn의 정보 비트열로부터 뺌으로써, 정보 비트를 올바르게 복호할 수 있다. 본 예에서는, 예를 들면, 500_4의 정보 비트와 500_5의 정보 비트 사이의 위치에 제1 정보 비트의 WL(n-1) 부호가 잘못해서 "010"으로 된 것을 알 수 있으므로, 복호에는, WL(n-1)의 "010"의 "1"에 대향한 WLn의 정보 비트 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c를, 예를 들면, 좌측으로부터 세어 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 치환함으로써, 올바르게 복호할 수 있다(SE106).When a 1-bit error occurs in a code string other than the "010" code string, first, a difference of the number of information bits 502 from the sum of the number of code sequences of "010" of WL (n-1) in the information bits is obtained. , Car A becomes one. When this difference A becomes 1, that is, in the case of a branch of "Yes" in SE104, the opposing first information bits of 500_1, 500_2, 500_3, ..., 500_c-2, 500_c-1, 500_c An error has occurred in the code string of WL (n-1), and this indicates that one "010" code string in WL (n-1) has been increased by one. In this case, WL (error) is obtained by taking {sum of positions from the left end of the information bit of "1" in the code sequence of "010" of WL (n-1)} (checksum 501). The position a of the information bit of "1" in the code string of "010" of n-1) can be obtained (SE105). Therefore, the bit of WLn corresponding to the position a of the information bit is skipped without changing, that is, the bit of WLn corresponding to the position a of the information bit is "010" of WL (n-1). By subtracting from the information bit string of WLn opposed to " 1 "in the code string, the information bits can be decoded correctly. In this example, for example, it is understood that the WL (n-1) code of the first information bit is incorrectly set to "010" at the position between the 500_4 and the 500_5 information bits. Information bits 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c of WLn facing "1" of "010" of (n-1) are counted from the left, for example, 500a_1 , 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c can be correctly decoded (SE106).

이들 설명한 1비트의 오류를 수정하는 복호 방법은, 상기한 바와 같이, 도 35에 도시하는 플로우차트에 따라 1비트 수정할 수 있다.As described above, the decoding method for correcting the error of one bit described above can be corrected by one bit according to the flowchart shown in FIG. 35.

[실시예 8에 따른 변형예][Modifications According to Example 8]

다음으로, 도 36a, 도 36b 내지 도 40을 이용해서, 상기 실시예 8에 따른 여러 가지의 변형예에 대해서 설명한다. 이 설명에서는, 상기 실시예 8과 실질적으로 중복되는 부분의 설명은 생략한다.Next, various modifications concerning the eighth embodiment will be described with reference to FIGS. 36A and 36B to 40. In this description, description of portions substantially overlapping with the eighth embodiment will be omitted.

우선, 예를 들면, 도 36a, 도 36b에서는, WL(n-1) 중의 "010" 부호열이 2개소 1비트 오류가 발생하고 있는 경우에 수정할 수 있는 부호의 구성법을 도시하고 있다. 예를 들면, 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c의 정보 비트 상당 부분의, 예를 들면, 정보 비트의 좌단으로부터 센 어드레스, 즉 몇비트째인지를 구하고, 그 어드레스의 합을 구한 것, 소위 체크섬(501)을 제2 추가 부호에 추가하고 있다.First, for example, in Figs. 36A and 36B, the code structure of the "010" code string in WL (n-1) shows a code structure that can be corrected when two 1-bit errors occur. For example, the number of information bits corresponding to 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c, for example, the address counted from the left end of the information bits, that is, the number of bits And the so-called checksum 501 is added to the second additional code.

또한, 이 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c의 정보 비트의 개수(502)를 제2 추가 부호에 추가하고 있다. 또한, 예를 들면, 정보 비트의 좌단으로부터 센 어드레스, 즉 몇비트째인지를 구하고, 그 어드레스의 곱을 구한 것, 소위 체크 곱(503)을 제2 추가 부호에 추가하고 있다.The number 502 of information bits of 500_1, 500_2, 500_3, 500_4, ..., 500_c-2, 500_c-1, 500_c is added to the second additional code. For example, an address counted from the left end of the information bit, that is, how many bits is obtained, and the product of the address, the so-called check product 503, is added to the second additional code.

또한, 도 36a, 도 36b에서는, 예를 들면, 500_1은 좌단으로부터 세어 3비트째, 500_2는 좌단으로부터 세어 5비트째, 500_3은 좌단으로부터 세어 7비트째에 상당하고 있고, 이들 체크 곱(503)으로서는, 3×5×7×....×(500_c-1의 제1 정보 비트의 좌단으로부터의 위치)x(500_c의 제1 정보 비트의 좌단으로부터의 위치)로 하면 된다. 또한, 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c의 정보 비트의 경우, 정보 비트의 개수(502)로서는, c를 이용하면 된다.36A and 36B, for example, 500_1 is counted from the left end and is the third bit, 500_2 is counted from the left end and fifth bit, 500_3 is counted from the left end and corresponds to the seventh bit. These check products 503 For example, 3 x 5 x 7 x ... ... (position from the left end of the first information bit of 500_c-1) x (position from the left end of the first information bit of 500_c). In addition, in the case of the information bits of 500_1, 500_2, 500_3, 500_4, ..., 500_c-2, 500_c-1, 500_c, c may be used as the number 502 of information bits.

이들 체크섬과 체크 곱, 정보 비트의 개수에 의해, 예를 들면, 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c의 대향하는 WL(n-1)의 "010" 부호열 중에서 2워드 오류가 발생해도, 오류 정정을 할 수 있다.The number of opposing WL (n-1) of 500_1, 500_2, 500_3, 500_4, ...., 500_c-2, 500_c-1, 500_c is determined by the number of these checksums, check products and information bits. Even if a two-word error occurs in the 010 "code string, error correction can be performed.

1워드 및 2워드 오류 대향 위치의 비트를 수정하는 시퀀스 Sequence to modify bits in one word and two word error opposite positions

다음으로, 본 2워드 오류를 포함할 가능성이 있는 부호에 대해서, 도 37 및 도 38의 SE100 내지 SE124에 의해 표시되는 시퀀스에 의해 복호하는 시퀀스를 이용해서 설명한다. 여기서, 예를 들면, "010" 부호열이 1비트 오류가 발생한 것으로 한다. 이 경우, 실시예 8과 마찬가지로 도 35의 SE100 내지 SE106의 시퀀스를 이용하면, 1비트 오류를 수정할 수 있다.Next, a code that may include this two-word error will be described using a sequence decoded by the sequence indicated by SE100 to SE124 in FIGS. 37 and 38. Here, for example, the "010" code string assumes that a 1-bit error has occurred. In this case, using the sequence of SE100 to SE106 in FIG. 35 as in the eighth embodiment, one-bit error can be corrected.

다음으로, WL(n-1) 중의 "010" 부호열이 2개소 1워드 오류가 발생하고 있는 경우로서, 2개소에서 WL(n-1)의 "010" 부호열이 "010"이 아닌 부호열로 정보 오류로 변화되어 있는 경우를 나타낸다. 이 경우, 우선, 최악의 WL(n-1)의 "010" 패턴에 대항하는 정보 비트의 개수의 합으로부터 정보 비트의 개수(502)의 차를 구함으로써, 차 A가 -2로 된다. 차 A가 -2로 되는 경우에는, 도 38의 SE108에서 "예"의 분기로 되고, 500_1, 500_2, 500_4, ...., 500_c-2, 500_c-1, 500_c의 대향하는 WL(n-1)의 "010" 부호열 내에서 2워드 오류가 발생하여, WL(n-1) 내의 "010" 부호열이 2워드 소실되어 있는 것을 나타내고 있다. 이 SE108에서의 "예"의 분기의 경우, 즉, (체크섬(501))-{WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 합}을 취함으로써, 오류가 발생한 WL(n-1)의 "010"의 부호열 중의 "1"의 제1 정보 비트의 위치의 합, 즉, 이 경우, WL(n-1)의 제1 정보 비트 내에서 2워드의 오류가 발생하여, WL(n-1) 내의 "010" 부호열이 2워드 소실된 정보 비트의 위치의 합 aa를 구할 수 있다(SE109). 다음으로, (체크 곱(503))/{WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 곱}을 취함으로써, "010" 워드 부분에 오류가 발생한 WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 위치의 곱, 즉, 이 경우, WL(n-1)의 "010" 부호열 내에서 2워드의 오류가 발생하여, WL(n-1) 내의 "010" 부호열이 2워드 소실된 정보 비트의 곱 bb를 구할 수 있다(SE110). 다음으로, x를 변수로 해서, x*x-aa*x+bb=0의 방정식을 풂으로써, "010" 오류가 발생한 WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 위치를 2개소, 오류 위치1, 2를 구할 수 있다(SE111). 다음으로, WL(n-1)의 "010"의 부호 열 중의 "1"에 대향한 WLn의 정보 비트의 위치에, 상기 2개소 오류 위치1, 2를 부가한 것을 이용하고, 복호에는, WL(n-1)의 "010"의 "1"에 대향한 WLn의 정보 비트 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c를, 예를 들면, 좌측으로부터 세어 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 치환함으로써, 올바르게 복호할 수 있다(SE112).Next, when the "010" code string in WL (n-1) has two word errors, the "010" code string in WL (n-1) is not "010" in two places. It shows the case where it is changed by information error by heat. In this case, first, the difference A is -2 by obtaining the difference of the number of information bits 502 from the sum of the number of information bits against the "010" pattern of the worst WL (n-1). When the difference A becomes -2, it becomes a branch of "Yes" in SE108 of FIG. 38, and opposes WL (n-) of 500_1, 500_2, 500_4, ..., 500_c-2, 500_c-1, 500_c. A two-word error occurred in the "010" code string of 1), indicating that the "010" code string in WL (n-1) has been lost by two words. In the case of the "Yes" branch in this SE108, that is, (checksum 501)-{sum of positions from the left end of the information bit of "1" in the code sequence of "010" of WL (n-1)} By taking the sum of the positions of the first information bits of " 1 " in the code string of " 010 " of the WL (n-1) where the error occurred, that is, in this case, the first information bits of the WL (n-1). An error of two words occurs within the block, so that the sum aa of the positions of the information bits in which the "010" code string in WL (n-1) is lost by two words can be obtained (SE109). Next, by taking (check product 503) / {multiplication of the position from the left end of the information bit of "1" in the code sequence of "010" of WL (n-1)} to the "010" word portion The product of the positions of the information bits of " 1 " in the code string of " 010 " of the WL (n-1) where an error has occurred, that is, in this case, two words within the " 010 " code string of WL (n-1). An error occurs and the product bb of the information bits in which the "010" code string in WL (n-1) is lost by two words can be obtained (SE110). Next, by using x as a variable and solving for the equation of x * x-aa * x + bb = 0, the "1" in the code sequence of "010" of WL (n-1) where the "010" error occurred is obtained. Two positions of the information bit and error positions 1 and 2 can be obtained (SE111). Next, the above two error positions 1 and 2 are added to the position of the information bit of WLn opposite to "1" in the code string of "010" of WL (n-1). Information bits 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c of WLn facing "1" of "010" of (n-1) are counted from the left, for example, 500a_1 , 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c can be correctly decoded (SE112).

다음으로, WL(n-1) 중의 "010" 부호열이 2개소 1비트 오류가 발생하고 있는 경우에서, 2개소에서 WL(n-1)의 "010"이 아닌 부호열이 "010" 부호열로 정보 오류에 의해 변화되어 있는 경우를 나타낸다. 이 경우, 우선, 최악의 WL(n-1)의 "010" 패턴에 인접하는 정보 비트의 개수의 합으로부터 정보 비트의 개수(502)의 차를 구함으로써, 차 A는 2로 된다. 차 A가 2로 되는 경우에는, 도 38의 SE113에서 "예"의 분기로 되고, 500_1, 500_2, 500_4, ...., 500_c-2, 500_c-1, 500_c의 대향하는 WL(n-1)의 "010" 부호열 내에서 2비트 오류가 발생하여, WL(n-1) 내의 "010" 부호열이 2개 증대하고 있는 것을 나타내고 있다. 이 SE113에서의 "예"의 분기의 경우, 즉, {WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 합}-(체크섬(501))을 취함으로써, 오류가 발생한 WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 위치의 합, 즉, 이 경우, WL(n-1)의 부호열 내에서 2워드 오류가 발생하여, WL(n-1) 내의 "010" 부호열이 2워드 증대한 정보 비트의 위치의 합 aa를 구할 수 있다(SE114). 다음으로, {WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 곱}/(체크 곱(503))을 취함으로써, "010"에의 오류가 발생한 WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 위치의 곱, 즉, 이 경우, WL(n-1)의 "010" 부호열 내에서 2워드 오류가 발생하여, WL(n-1) 내의 "010" 부호열이 2워드 증대한 정보 비트의 곱 bb를 구할 수 있다(SE115). 다음으로, x를 변수로 해서, x*x-aa*x+bb=0의 방정식을 풂으로써, "010" 부호가 아닌 부호열로부터 "010"에의 오류가 발생한 WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 위치를 2개소, 오류 위치1, 2를 구할 수 있다(SE111). 다음으로, WL(n-1)의 "010"의 부호열 중의 "1"에 대향한 WLn의 정보 비트와, 정보 비트의 위치를 2개소, 즉, 오류 위치1, 2를 뺀 것을 이용하고, 복호에는, WL(n-1)의 "010"의 "1"에 대향한 WLn의 제1 정보 비트 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c를, 예를 들면, 좌측으로부터 세어 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 치환함으로써, 올바르게 복호할 수 있다(SE117).Next, when the "010" code string in WL (n-1) has two 1-bit errors, the code string other than "010" of WL (n-1) is "010" in two places. It shows the case where it is changed by the information error in the column. In this case, first, the difference A is 2 by obtaining the difference of the number of information bits 502 from the sum of the number of information bits adjacent to the "010" pattern of the worst WL (n-1). If the difference A becomes 2, it becomes a branch of " YES " in SE113 in Fig. 38, and the WLs (n-1) opposing 500_1, 500_2, 500_4, ..., 500_c-2, 500_c-1, 500_c Indicates that a two-bit error occurs within the "010" code string and that two "010" code strings in WL (n-1) are increasing. In the case of the "Yes" branch in this SE113, that is, {sum of positions from the left end of the information bit of "1" in the code sequence of "010" of WL (n-1)}-(checksum 501) By taking the sum of the positions of the information bits of " 1 " in the code string of " 010 " An error occurs and the sum aa of the positions of the information bits in which the "010" code string in WL (n-1) is increased by two words can be obtained (SE114). Next, the error to "010" is obtained by taking {product of the position from the left end of the information bit of "1" in the code sequence of "010" of WL (n-1)} / (check product 503). The product of the positions of the information bits of " 1 " in the code string of " 010 " of WL (n-1), that is, in this case, a 2-word error occurs in the " 010 " code string of WL (n-1). Thus, the product bb of the information bits in which the "010" code string in WL (n-1) is increased by two words can be obtained (SE115). Next, using x as a variable and solving for the equation of x * x-aa * x + bb = 0, the WL (n-1) of "WL" where an error from the code string other than the "010" code occurs to "010" is generated. Two positions of the information bit of "1" in the code string of "010" and error positions 1 and 2 can be obtained (SE111). Next, using the information bits of WLn opposed to " 1 " in the code string of " 010 " of WL (n-1), and subtracting two positions of the information bits, that is, error positions 1 and 2, For decoding, the first information bits 500b_1, 500b_2, 500b_3, ..., 500b_c-2, 500b_c-1, 500b_c of WLn opposed to "1" of "010" of WL (n-1) are given as an example. For example, by counting from the left side, 500a_1, 500a_2, 500a_3, ..., 500a_c-2, 500a_c-1, 500a_c can be correctly decoded (SE117).

또한, WL(n-1) 중의 "010" 부호열이 2개소 1워드 오류를 발생하고 있는 경우로서, 1개소에서 WL(n-1)의 "010"이 아닌 부호열이 "010" 부호열로 정보 오류에 의해 변화되어 있고, 또한, 1개소에서, WL(n-1)의 "010"의 부호열이, "010"이 아닌 부호열로 정보 오류에 의해 변화되어 있는 경우를 나타낸다.In addition, when the "010" code string in WL (n-1) generates two single word errors, the code string other than "010" in WL (n-1) is "010" code string in one place. In this case, the code string of "010" in WL (n-1) is changed to a code string other than "010" by an information error.

이 경우, 우선, 최악의 WL(n-1)의 "010" 패턴에 대항하는 정보 비트의 개수의 합으로부터 정보 비트의 개수(502)의 차를 구함으로써, 차 A는 0으로 된다. 차 A가 -2, -1, 0, 1, 및 2 이외로 되는 경우에는, 도 38의 SE118에서 "아니오"의 분기로 되고, 정보 비트의 복원 불가능으로서, 예를 들면, WL(n-1)의 "010"의 부호열 중의 "1"에 대향한 WLn의 정보 비트 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c를, 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c 로 순서대로 치환한다(SE124). 도 38의 SE118에서 "예"의 분기로 한 경우, (체크 곱)이 {WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 곱}과 비교해서 동일한 경우, 즉 SE119에서 "아니오"의 분기의 경우에는, 정보 비트에 오류가 없는 것으로 해서, WL(n-1)의 "010"의 부호열 중의 "1"에 대향한 WLn의 제1 정보 비트 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c를, 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 순서대로 치환한다(SE124).In this case, first, the difference A is zero by finding the difference of the number of information bits 502 from the sum of the number of information bits against the "010" pattern of the worst WL (n-1). When the difference A is other than -2, -1, 0, 1, and 2, a branch of "no" in SE118 in Fig. 38 is obtained, and the recovery of the information bit is impossible, for example, WL (n-1). Information bits 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c of WLn opposite to "1" in the code string of "010"), 500a_1, 500a_2, 500a_3, ... And 500a_c-2, 500a_c-1 and 500a_c in order (SE124). In the SE118 of FIG. 38, the branch of "Yes" is compared with the product of the position from the left end of the information bit of "1" in the code string of "010" of {WL (n-1)}. In the same case, that is, in the case of a branch of "no" in SE119, the first information of WLn opposed to "1" in the code string of "010" of WL (n-1) is assumed to have no error in the information bit. Replace the bits 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c with 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c in sequence (SE124 ).

또한, SE119에서, "예"의 분기의 경우에는, 1개소에서 WL(n-1)의 "010"이 아닌 부호열이 "010" 부호열로 정보 오류에 의해 변화되어 있고, 또한, 1개소에서, WL(n-1)의 "010"의 부호열이, "010"이 아닌 부호열로 정보 오류에 의해 변화되어 있는 것을 나타낸다. 이 경우, (체크섬이 기록된 501-{WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 합}=aa를 구한다(SE120). aa는, (소실된 WL(n-1)의 정보 비트의 "010" 워드 내의 "1"의 위치)-(오류 증가한 WL(n-1) 정보 비트의 "010" 워드 내의 "1"의 위치)에 상당한다. 다음으로, (체크 곱이 기록된 참조 부호 503)/{WL(n-1)의 "010"의 부호열 중의 "1"의 정보 비트의 좌단으로부터의 위치의 곱}=bb를 구한다(SE121). bb는, (소실된 WL(n-1)의 정보 비트의 "010" 워드 내의 "1"의 위치)/(오류 증가한 WL(n-1) 정보 비트의 "010" 워드 내의 "1"의 위치)에 상당한다. 이들로부터, 오류 위치1, 즉, 소실된 WL(n-1)의 정보 비트의 "010" 워드 내의 "0"의 위치를 aa/(bb-1)에서 구한다. 또한, 오류 위치2, 즉, 오류 증가한 WL(n-1)의 정보 비트의 "010" 워드 내의 "1"의 위치를 aa*bb/(bb- 1)에서 구한다(SE122). 다음으로, WL(n-1)의 "010 "의 부호열 중의 "1"에 대향한 WLn의 정보 비트로부터, 오류 위치1, 2의 위치의 WLn의 정보 비트를 추가, 및 뺀 제1 정보 비트 500b_1, 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c를, 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c로 순서대로 치환한다(SE123).In addition, in SE119, in the case of the branch of "Yes", the code string other than "010" of WL (n-1) is changed to the "010" code string by the information error in one place, and one place is used. Indicates that the code string of " 010 " of WL (n-1) is changed by an information error to a code string other than " 010 ". In this case, (the sum of the positions from the left end of the information bit of "1" in the code sequence of "010" of 501- {WL (n-1) where the checksum is recorded) is obtained (SE120). (Equivalent to the position of "1" in the "010" word of the information bits of WL (n-1) lost)-(the position of "1" in the "010" word of the WL (n-1) information bits with increased error) Next, the product of the position from the left end of the information bit of " 1 " in the code sequence of " 010 " bb is (the position of "1" in the "010" word of the information bit of WL (n-1) lost) / ("1" in the "010" word of the WL (n-1) information bit with error increment) From these, error position 1, i.e., the position of "0" in the word "010" of the information bits of the lost WL (n-1) is obtained at aa / (bb-1). The error position 2, i.e., the position of "1" in the word "010" of the information bit of the error increased WL (n-1), is found at aa * bb / (bb-1) (SE122). 1st information bit 500b_1 which added and subtracted the information bit of WLn of the position of error position 1 and 2 from the information bit of WLn which opposes "1" in the code string of "010" of WL (n-1). , 500b_2, 500b_3, ...., 500b_c-2, 500b_c-1, 500b_c are replaced with 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c in sequence (SE123).

이상으로부터, 상기 플로우차트에 따라 WL(n-1) 중의 "010" 부호열이 2개소, 워드 오류를 한 경우라도 수정할 수 있다.In view of the above, even in the case where two " 010 " code strings in WL (n-1) have two word errors, they can be corrected according to the flowchart.

상기 실시예에서는, 정보 비트의 개수(502)로서는, 실시예 3의 경우에는, α={(k/6)을 정수로 잘라올린 값}-1 및 실시예 1, 2의 경우에는, α={(k/4)를 정수로 잘라올린 값}-1로 한 경우, log2{α}를 정수로 잘라올린 값만큼의 비트수를 준비하면 된다. 또한, 체크섬(501)으로서는, log2{k(k+1)/2}를 정수로 잘라올린 값만큼의 비트수를 준비하면 합을 정보 결손 없이 기억할 수 있다. 또한, 체크 곱(503)으로서는, α×log2{k}를 정수로 잘라올린 값만큼의 비트수를 준비하면 곱을 정보 결손 없이 기억할 수 있다.In the above embodiment, as the number 502 of information bits, in the case of the third embodiment, α = {the value obtained by truncating (k / 6) to an integer} -1 and in the case of Examples 1 and 2, α = When {(k / 4) is cut off to an integer} -1, the number of bits corresponding to the value of log 2 {α} is cut off to an integer may be prepared. As the checksum 501, if the number of bits corresponding to a value obtained by cutting log 2 {k (k + 1) / 2} into integers is prepared, the sum can be stored without information loss. As the check product 503, if the number of bits corresponding to a value obtained by cutting αxlog 2 {k} into an integer is prepared, the product can be stored without information loss.

여기서, 체크섬(501)으로서는, 상기한 바와 같이 2워드까지를 수정하는 경우에는, k비트 내의 2워드를 지정하면 된다. 또한, 워드 오류 위치의 어드레스의 합은 2k를 초과하는 일은 없으므로, 체크섬(501)은 최저, log2{2k}를 정수로 잘라올린 값만큼의 비트수를 준비하면 된다. 또한, 준비한 비트수를 초과하는 어드레스의 합의 부분에 대해서는, 무시하고 일치한다고 생각해서 비교해도 올바르게 복호를 할 수 있다.Here, as the checksum 501, two words within k bits may be designated when correcting up to two words as described above. In addition, since the sum of the addresses of the word error positions does not exceed 2k, the checksum 501 may prepare as many bits as the minimum value of log 2 {2k}. In addition, even if the part of the sum of the addresses exceeding the prepared number of bits is ignored and considered to match, the decoding can be performed correctly.

또한, 체크 곱(503)으로서는, 2워드까지를 수정하는 경우에는, k비트 내의 2비트를 지정하면 된다. 또한, 워드 오류 위치의 곱은 k*k를 초과하는 일은 없으므로, 체크 곱(503)은 최저, 2log2{k}를 정수로 잘라올린 값만큼의 비트수를 준비하면 된다. 또한, 준비한 비트수를 초과하는 어드레스의 곱의 부분에 대해서는, 무시하고 일치한다고 생각해서 비교해도 올바르게 복호를 할 수 있다.As the check product 503, when correcting up to two words, two bits within k bits may be designated. In addition, since the product of a word error position does not exceed k * k, the check product 503 should just prepare the number of bits as much as the value which cut off 2log 2 {k} to an integer. In addition, even if the part of the product of the addresses exceeding the prepared number of bits is considered to be ignored and compared, decoding can be performed correctly.

이상으로부터, 제2 부호 중의 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c의 부호 길이는, k와 거의 비례하는 α정도이다. 따라서, k를 1kbit=2^10bit로 하면, 참조 부호 501은, log2{2k}를 정수로 잘라올린 값∼11bit 정도, 정보 비트의 개수(502)는 기껏해야 log2{α}를 정수로 잘라올린 값∼10bit 이하, 참조 부호 503은 기껏해야 2log2{k}를 정수로 잘라올린 값∼20bit 준비하면 되고, 이들의 합은, 기껏해야, 41bit이다. 따라서, 이것은 α의 {(k/6)을 정수로 잘라올린 값}-1∼170bit에 비해서 25%보다 적고, 2비트의 오류 정정을 하는 경우라도 오류 정정을 하지 않는 경우에 비해, 25%만큼 제2 추가 부호의 부호 길이가 신장하는 정도로 억제할 수 있다.From the above, the code lengths of 500a_1, 500a_2, 500a_3, ..., 500a_c-2, 500a_c-1 and 500a_c in the second code are approximately α in proportion to k. Therefore, when k is 1 kbit = 2 ^ 10 bits, reference numeral 501 is a value of log 2 {2k} truncated to an integer of about 11 bits, and the number of information bits 502 is at most log 2 {α} as an integer. The cut-up value of 10 bits or less and the reference numeral 503 may be prepared by cutting the value of 2 log 2 {k} to an integer of 20 bits at most, and the sum of these is 41 bits at most. Therefore, this is less than 25% compared to {(k / 6) truncated to an integer} -1 to 170 bits of α, and 25% compared to the case where error correction is not performed even when two bits are corrected. The degree of extension of the code length of the second additional code can be suppressed.

물론, 예를 들면, k가 1kbit보다도 많으면, 또한, 체크섬(501), 정보 비트의 개수(502), 체크 곱(503)에 필요한 부호 길이는 log2(k)에 비례하는 정도밖에 증가하지 않고, k에 비해서 증가하지 않으므로, α에 대한 비는 작아진다. 따라서, 체 크섬(501), 정보 비트의 개수(502), 체크 곱(503)의 부호 길이에 대한 증가 비율을 적게 해도 오류 정정할 수 있다.Of course, for example, if k is larger than 1 kbit, the code length required for the checksum 501, the number of information bits 502, and the check product 503 increases only in proportion to log 2 (k). Since it does not increase compared to k, the ratio to α becomes small. Therefore, even if the increase rate with respect to the code length of the checksum 501, the number of information bits 502, and the check product 503 is small, error correction can be carried out.

예를 들면, 64kbit=2^16bit로 하면, 체크섬(501)은, log2{2k}를 정수로 잘라올린 값∼17bit 정도, 정보 비트의 개수(502)는 기껏해야 log2{α}를 정수로 잘라올린 값∼16bit 이하, 참조 부호 503은 기껏해야 2log2{k}를 정수로 잘라올린 값∼32bit 준비하면 되고, 이들의 합은, 65bit이다. 따라서, 이것은 α의 {(k/6)을 정수로 잘라올린 값}-1∼10922bit에 비해 0.6%보다 적다. 따라서, 2워드의 오류 정정을 하는 경우라도 오류 정정을 하지 않는 경우에 비해, 0.6%만큼 제2 추가 부호의 부호 길이가 신장하는 정도로 억제할 수 있다.For example, if 64 kbit = 2 ^ 16 bits, the checksum 501 is a value of log 2 {2k} truncated to an integer of about 17 bits, and the number of information bits 502 is at most log 2 {α}. It is sufficient to prepare a value of 16 bits or less, truncated to 2 log 2 {k} to an integer of 32 bits, and the sum thereof is 65 bits. Thus, this is less than 0.6% compared to {(k / 6) truncated to integer} -1 to 10922 bits of α. Therefore, even when the error correction of two words is performed, it can be suppressed to the extent that the code length of the second additional code is increased by 0.6% compared with the case where the error correction is not performed.

이상에 설명한 바와 같이, k비트를 갖는 제1 정보 비트로부터, 제2 추가 부호를 형성하는 부호화를 이용함으로써, 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c의 길이는 α이면 충분하다. 따라서, k가 1024bit 이상인 경우, 제2 추가 부호 길이는, 상기 체크섬(501), 정보 비트의 개수(502), 체크 곱(503)의 추가가 있어도, 기껏해야 α에 대하여 25% 부호 길이가 신장하는 정도로 211bit 이내로 되어, 제1 정보 비트의 kbit보다도 대폭적으로 부호 길이를 단축할 수 있다. 또한, 상기에서 설명한, WL(n-1)의 "010" 부분에 인접한 WLn의 정보 비트가 "0"인 개수는 제2 추가 부호 길이의 절반을 정수로 잘라올린 값 이하로 억제할 수 있다.As described above, the length of 500a_1, 500a_2, 500a_3, ...., 500a_c-2, 500a_c-1, 500a_c is obtained by using the encoding that forms the second additional code from the first information bits having k bits. Α is sufficient. Therefore, when k is 1024 bits or more, the second additional code length is 25% longer than α even if the checksum 501, the number of information bits 502, and the check product 503 are added. It becomes less than 211 bits so that code length can be shortened significantly rather than kbit of a 1st information bit. The number of information bits of WLn adjacent to the "010" portion of WL (n-1) described above can be suppressed to be equal to or less than half of the length of the second additional code length.

WL(n)의 제2 추가 부호에 대하여, 실시예 1 내지 3에 따른 부호화를 적용하는 예Example of applying the coding according to the first to third embodiments with respect to the second additional code of WL (n)

다음으로, 도 39a의 (a), 도 39a의 (b) 및 도 39b의 (a), 도 39b의 (b)를 이용해서, 본 실시예에서, WL(n)의 제2 추가 부호에 대하여, 실시예 1 내지 3까지에서 설명한 부호화를 적용하는 구성을 설명한다. 도 39a의 (a), (b) 및 도 39b의 (a), (b)는, 그 방법의 일례이다. 도 39a는, 상기에서 설명한 제2 추가 부호에 대하여, 또한 실시예 1부터 3까지의, WL(n-1)의 "010" 부분에 인접한 WLn의 정보 비트가 "0"인 개수를 감소시키는 방법을 이용하고 있다.Next, with reference to FIG. 39A, FIG. 39A, FIG. 39B, FIG. 39B, FIG. 39B, and FIG. 39B, the second additional code of WL (n) is used in this embodiment. The configuration to which the encoding described in Embodiments 1 to 3 is applied will be described. (A), (b) of FIG. 39A, and (a), (b) of FIG. 39B are an example of the method. FIG. 39A shows a method for reducing the number of information bits of WLn adjacent to the " 010 " portion of WL (n-1) from Embodiments 1 to 3 with respect to the second additional code described above. Is using.

도시하는 바와 같이, 상기 도 30 내지 도 38에서 설명한 제2 추가 부호와 WL(n-1)과 WL(n)의 관계를 설명하고 있다. 또한, WL(n-1)과의 제2 추가 부호의 플래그1 상당 정보, 및 제2 추가 부호의 플래그2의 정보, 및 제3 추가 부호 및 제3 추가 부호의 플래그1 상당 정보, 및 제3 추가 부호의 플래그2의 정보가 부가되어 있다. 이들 플래그1 및 플래그2는, "010"의 개수를 줄이기 위해서, 각각 제1 정보 비트와, 제2 추가 부호, 제3 추가 부호에 실시예 1 내지 실시예 3을 적용한 것이며, 상세한 설명은 생략한다.As shown in the drawing, the relationship between the second additional reference code described with reference to Figs. 30 to 38 and WL (n-1) and WL (n) is explained. Further, the flag 1 equivalent information of the second additional code with the WL (n-1), the information of the flag 2 of the second additional code, and the flag 1 equivalent information of the third additional code and the third additional code, and the third The information of the flag 2 of the additional code is added. In order to reduce the number of " 010 ", these flags 1 and 2 are obtained by applying the first to third embodiments to the first information bit, the second additional code, and the third additional code, respectively, and a detailed description thereof will be omitted. .

여기서, 도 39a의 (b)와 같이, 제2 추가 부호에 대하여 실시예 1 내지 3까지를 적용해서, 제2 추가 부호의 플래그1 상당 정보, 및 제2 추가 부호의 플래그2 상당 정보를 추가함으로써, WL(n)에 포함되는 제2 추가 부호에 포함되는 "010"의 부호열을 감소시킬 수 있다. 이것은, 제2 추가 부호 길이를 k2로 하면, 실시예 3의 경우에는, {(k2/6)을 정수로 잘라올린 값}-1 및 실시예 1, 2의 경우에는, {(k2/4)를 정수로 잘라올린 값}-1에, WL(n)의 "010"의 부호열인 개수를 감소시킬 수 있다. 이에 의해, WL(n)의 "010" 부분에 인접한 WL(n+1)의 정보 비트의 "0"의 수를 감소 시킬 수 있다.Here, as shown in Fig. 39A (b), by applying Embodiments 1 to 3 to the second additional code, the flag 1 equivalent information of the second additional code and the flag 2 equivalent information of the second additional code are added. , The code string of "010" included in the second additional code included in WL (n) can be reduced. This means that when the second additional code length is k2, in the case of Example 3, {(k2 / 6) is truncated to an integer}} and in the case of Examples 1 and 2, {(k2 / 4) Can be reduced to a value} -1, which is a code string of " 010 " of WL (n). Thereby, the number of "0" of the information bits of WL (n + 1) adjacent to the "010" portion of WL (n) can be reduced.

또한, 미리 WL(n-1)에 대해서도 상기 부호 변환을 마찬가지로 이용함으로써, 실시예 3의 경우에는, {(k2/6)을 정수로 잘라올린 값}-1 및 실시예 1, 2의 경우에는, {(k2/4)를 정수로 잘라올린 값}-1에, WL(n-1)의 "010"의 부호열이 포함되는 개수를 감소시킬 수 있다.In addition, in the case of Example 3, in the case of Example 3, in the case of Example 3, when {(k2 / 6) was cut off to an integer} -1 and Examples 1 and 2, , {(k2 / 4) is an integer}}, and the number in which the code string of "010" of WL (n-1) is included can be reduced.

또한, 도 39b의 (a)와 같이, 도시하는 WL(n)의 제2 추가 부호를 제1 정보 비트로 대체하고, 제2 추가 부호를 제3 추가 부호로 대체함으로써, 제2 추가 부호의 WL(n-1)의 "010" 부분에 인접한 WLn의 정보 비트를 추출하고, WL(n)의 제3 부호를 형성한다. 예를 들면, 상기한 k가 1024bit 이상인 경우, 제2 추가 부호 길이는, 211bit 이내에서 대폭적으로 부호 길이를 단축할 수 있어, k2를 211bit로 할 수 있다. 또한, 도 39b의 (a)의 적용에서는, WL(n-1)의 "010" 부분에 인접한 WLn의 정보 비트가 "0"인 개수를 {(k2/6)을 정수로 잘라올린 값}-1∼35bit로 줄일 수 있다.In addition, as shown in FIG. 39B (a), the second additional code of WL (n) shown is replaced with the first information bit, and the second additional code is replaced with the third additional code, thereby reducing the WL of the second additional code. Information bits of WLn adjacent to the " 010 " portion of n-1) are extracted to form a third code of WL (n). For example, when k is 1024 bits or more, the second additional code length can significantly shorten the code length within 211 bits, and k2 can be 211 bits. Further, in the application of Fig. 39B (a), {(k2 / 6) is rounded down to an integer number of times the information bit of WLn adjacent to the "010" portion of WL (n-1) is "0". It can be reduced to 1 to 35 bits.

또한, 도 39b의 (b)와 같이, 실시예 1 내지 3까지와 마찬가지로, 제3 추가 부호의 플래그1 상당 정보, 및 제3 추가 부호의 플래그2를 추가함으로써, WL(n)에 포함되는 제3 추가 부호에 포함되는 "010"의 부호열을 감소시킬 수 있다. 이것은, 제3 추가 부호 길이를 k3으로 하면, 실시예 3의 경우에는, {(k3/6)을 정수로 잘라올린 값}-1 및 실시예 1, 2의 경우에는, {(k3/4)를 정수로 잘라올린 값}-1로, WL(n)의 "010"의 부호열인 개수를 감소시킬 수 있다. 이에 의해, WL(n)의 "010" 부분에 인접한 WL(n+1)의 정보 비트의 "0"의 수를 감소시킬 수 있다.39B (b), similarly to Embodiments 1 to 3, by adding the flag 1 equivalent information of the third additional code and the flag 2 of the third additional code, the agent included in WL (n) is added. 3 The code string of "010" included in the additional code can be reduced. This means that when the third additional code length is k3, in the case of Example 3, {(k3 / 6) is truncated to an integer}} and in the case of Examples 1 and 2, {(k3 / 4) The number truncated to an integer}-1 can reduce the number which is the code string of "010" of WL (n). Thereby, the number of "0" of information bits of WL (n + 1) adjacent to the "010" portion of WL (n) can be reduced.

또한, 미리 WL(n-1)에 대해서도 상기 부호 변환을 마찬가지로 이용함으로써, 실시예 3의 경우에는, {(k2/6)을 정수로 잘라올린 값}-1 및 실시예 1, 2의 경우에는, {(k2/4)를 정수로 잘라올린 값}-1로, WL(n-1)의 "010"의 부호열의 개수를 감소시킬 수 있다.In addition, in the case of Example 3, in the case of Example 3, in the case of Example 3, when {(k2 / 6) was cut off to an integer} -1 and Examples 1 and 2, The number of code strings of "010" of WL (n-1) can be reduced to {{k2 / 4) truncated to an integer} -1.

또한, 도면에서는 도시하고 있지 않지만, 이 예의 제2 추가 부호로부터 제3 추가 부호를 형성하는 부호 변환을 다시 반복함으로써, WL(n-1)의 "010" 부분에 인접한 WLn의 "0"의 개수를 충분히 적게 할 수 있는 것은 분명하다. 또한, 이 부호 변환을 복수회 반복해서, WL(n-1)의 "010" 부분에 인접한 WLn의 "0"의 개수를, 예를 들면 10개 이하로 된 경우, 부호 길이를 10bit 이상 늘리지 않고 0개로 하는 것은 용이하다. 이것에는, 실시예 1부터 3까지의 플래그의 설명에서 설명한 바와 같이, 플래그1, 2를 2비트씩 할당하는 방법을, WL(n-1)의 "010" 부분에 인접한 WLn의 "0"의 개수에 이용하면 된다. 구체적으로는, WL(n-1)의 "010" 부분을 "0110"으로 하고, "010 부분에 인접한 WLn의 비트가 "0"인 경우, "00"을, "1"인 경우 "11"을 할당함으로써 실시할 수 있다.In addition, although not shown in the figure, by repeating the code conversion for forming the third additional code from the second additional code in this example, the number of "0" s of WLn adjacent to the "010" portion of WL (n-1) is repeated. Clearly enough can be done. If the number of "0" s in WLn adjacent to the "010" portion of WL (n-1) is, for example, 10 or less, this code conversion is repeated a plurality of times, without increasing the code length by 10 bits or more. It is easy to set it to zero. As described in the description of the flags from the first to the third embodiments, a method of allocating flags 1 and 2 by 2 bits is described in terms of "0" of WLn adjacent to the "010" portion of WL (n-1). It can be used for the number. Specifically, "010" portion of WL (n-1) is set to "0110", and "00" is set to "0" when the bit of WLn adjacent to "010 portion is set to" 0 ". This can be done by allocating.

한편, 본 부호를 복호화하기 위해서는, 우선, WL(n-1)의 "010"의 부호열 중의 "1"에 대향한 WLn의 제2 추가 부호열을, 제3 추가 부호로 순서대로 치환한다. 물론 이 때, 상기에서 설명한 체크섬, 부호의 개수, 체크 곱을 이용한 정보 오류 정정을 행해서 WL(n-1)의 "010"의 부호열에 대한 정보 오류를 더욱 저감해도 된다.On the other hand, in order to decode this code, first, the second additional code string of WLn opposed to "1" in the code sequence of "010" of WL (n-1) is replaced with the third additional code in order. Of course, at this time, the information error correction using the checksum, the number of codes, and the check product described above may be performed to further reduce the information error of the code string of "010" of the WL (n-1).

또한, WL(n-1)의 "010"의 부호열 중의 "1"에 대향한 WLn의 정보 비트의 부호열을, 제2 추가 부호로 순서대로 치환한다. 이에 의해, 제1 정보를 복호를 할 수 있다. 이들 방법을 재귀적으로 반복함으로써, 제3 추가 부호로부터 제4 추가 부호 를 형성한 경우라도 복호할 수 있는 것은 분명하다.In addition, the code string of the information bits of WLn opposed to "1" in the code string "010" of WL (n-1) is replaced with the second additional code in order. As a result, the first information can be decoded. It is clear that by repeating these methods recursively, even if the fourth additional code is formed from the third additional code, it can be decoded.

또한, 이 설명에서는 2워드의 오류를 수정하는데에, 합과 곱의 부호를 이용하는 것을 나타냈지만, 물론, 소위, 예를 들면, 다수결 부호를 이용함으로써, 또한 복수의 오류 위치에 대한 정정을 할 수 있다.In addition, although this description showed that the sign of the sum and the product is used to correct an error of 2 words, of course, by using a so-called majority vote, for example, a plurality of error positions can also be corrected. have.

또한, 본 실시예에서는, 실시예 1 내지 3의 실시예와 조합한 예를 설명하였지만, 예를 들면, 8kbit 이상의 부호에 대하여 부호 출현 확률 평균 회로(106)를 이용한 부호에서는, 실시예 1 내지 3의 실시예와 조합한 예를 이용하지 않아도, 효과가 얻어지는 본 실시 형태의 변형예도 구성할 수 있다. 여기서, WL(n-1)의 "010" 연속 비트 부분의 부호 출현 빈도는, 부호 길이가 길어지면 대수의 법칙으로부터, (부호 길이)×(1/2)^3-1=(부호 길이)/8-1을 중심으로 해서 매우 좁은 범위에 분포된다.In addition, in the present embodiment, an example in combination with the embodiments of the first to third embodiments has been described. For example, in the code using the code occurrence probability averaging circuit 106 for a code of 8 kbit or more, the first to third embodiments will be described. Even without using the example combined with the Example of 1, the modified example of this embodiment with which an effect is acquired can be comprised. Here, the code appearance frequency of the " 010 " consecutive bit portion of WL (n-1) is (code length) x (1/2) ^ 3-1 = (code length) from the law of algebra as the code length becomes longer. It is distributed in a very narrow range around / 8-1.

"010" 출현 개수의 빈도의 분포 폭Distribution width of frequency of "010" occurrence number

다음으로, 도 40을 이용해서, 본 발명자들이 계산에서 구한 "010" 출현 개수의 빈도의 분포 폭을 설명한다. 도 40에 도시하는 바와 같이, 부호 길이가 8kbit(=8192bit)인 경우에 포함되는 "010" 연속 비트의 개수를 횡축에, 종축에 그 개수에 대한 부호의 발생 빈도인 10을 한계로 한 대수(여기서는 γ로 함)를 취한 것이다.Next, using FIG. 40, the distribution width of the frequency of the "010" appearance number calculated | required by the present inventors is demonstrated. As shown in Fig. 40, the number of " 010 " consecutive bits included in the case where the code length is 8 kbit (= 8192 bit) is the horizontal axis and the vertical axis is a log number whose limit is 10 which is the frequency of occurrence of the code for the number ( In this case, γ is taken.

본 예에서는, (8kbit)/8-1=1023bit에 상당하는 비트가 가장 "010"이 발생하는 빈도로 되고, γ는 거의 정규 분포 형상으로 분포하는 것을 발견하였다. 또한, 8bit 이상의 부호 길이에서는, 1023bit±20%의 부호 길이를 초과한 범위에서는, 최 빈값의 부호의 출현 빈도의 γ-10 이하, 즉 부호 발생 빈도로서는, 10-10 이하밖에 발생하지 않는 것을 발견하였다. 또한, 8kbit 이상의 부호에 대하여 부호화 확률 평균 회로(106)를 이용한 부호에서는, WL(n-1)의 비트와 인접하는 WL(n)의 비트에 대해서도 "0"과 "1"의 출현 확률을 평균화하는 것이 가능하다.In this example, it was found that the bit corresponding to (8 kbit) / 8-1 = 1023 bits is the frequency at which "010" occurs most, and gamma is distributed in a nearly normal distribution shape. In addition, in the code length of 8 bits or more, in the range exceeding the code length of 1023 bit +/- 20%, it turns out that (gamma) -10 or less of the frequency of appearance of the code of the most frequent value, namely, only 10 -10 or less is generated as a code generation frequency. It was. In the code using the coding probability averaging circuit 106 for a code of 8 kbit or more, the probability of occurrence of "0" and "1" is also averaged for the bits of WL (n) adjacent to the bits of WL (n-1). It is possible to.

여기서, 이것을 적용하면, WL(n-1)의 "010" 부분에 인접한 WLn의 "0"의 가장 빈도가 높은 개수는, [(부호 길이)×(1/2)^3-1]/2를 정수로 반올림한 수=[(부호 길이)/8-1]/2를 정수로 반올림한 수까지 감소시킬 수 있다. 따라서, 제1 내지 제3 실시예의 조합을 병용하지 않는 경우라도, 예를 들면, 8kbit 이상의 부호에 대하여 부호화 확률 평균 회로(106)를 이용하면, 예를 들면, 제2 부호화의 α를 {(k/16을 정수로 잘라올린 값}*1.2배로 함으로써, WL(n-1)의 정보 비트 "010" 부분에 인접한 WLn의 정보 비트 "0"의 개수가 α 이하인 개수의 부호는, 도 39a, 도 39b에서 설명한 부호화를 재귀적으로 반복함으로써, WL(n-1)의 "010" 부분에 인접한 WLn의 "0"의 개수를 0까지 삭감할 수 있다.When this is applied, the most frequent number of "0" s in WLn adjacent to the "010" portion of WL (n-1) is [(code length) x (1/2) ^ 3-1] / 2. Can be reduced to the number rounded to an integer = [(sign length) / 8-1] / 2 to an integer. Therefore, even when the combination of the first to third embodiments is not used together, for example, when the coding probability averaging circuit 106 is used for a code of 8 kbit or more, for example, α of the second encoding is {(k By multiplying / 16 by an integer} * 1.2 times, the number of symbols whose number of information bits " 0 " of WLn adjacent to the information bit " 010 " By recursively repeating the encoding described in 39b, the number of " 0 " s of WLn adjacent to the " 010 " portion of WL (n-1) can be reduced to zero.

또한, WL(n-1)의 정보 비트 "010" 부분에 인접한 WLn의 정보 비트 "0"의 개수가 α보다 많은 개수의 부호는, WL(n-1)의 "010" 부분에 인접한 WLn의 "0"의 개수를 0까지는 삭감할 수 없지만, α만큼은 저감할 수 있다. 즉, 전체 부호 중에서 1ppm 이하의 부호수로 충분히 감소시킬 수 있다. 따라서, WL(n-1)의 "010" 부분에 인접한 WLn의 "0"의 개수 발생하는 부호 오류를 임의의 임계값에서 허용하는 경우에는, 또한 짧은 제2 부호를 형성할 수 있다.Further, the number of the number of information bits " 0 " of WLn adjacent to the information bit " 010 " portion of WL (n-1) is greater than α indicates that the number of symbols of WLn adjacent to the " 010 " Although the number of "0" cannot be reduced to 0, it can be reduced by α. That is, it can fully reduce to the number of codes of 1 ppm or less among all codes. Therefore, in the case where an arbitrary threshold value permits the occurrence of a sign error of the number of " 0 " of WLn adjacent to the " 010 " portion of WL (n-1), it is also possible to form a short second code.

또한, 예를 들면, 부호 길이 ka, kb의 부호의 모든 조합에서 (ka+kb)의 부호 길이의 부호가 구성되는 것을 생각하면, 부호 길이 ka의 부호의 모든 조합과, kb의 부호의 모든 조합의 곱으로 (ka+kb)의 부호 길이의 부호가 구성된다. 따라서, 그 부호의 출현 빈도의 상태수에 대해서 대수를 취하면, 대수에 따라, 곱은 합으로 변환되므로, 대수의 법칙이 성립한다.For example, when all code combinations of code length ka and kb code | symbol are comprised, all combinations of the code of code length ka and all the code of kb are considered. The product of the sign length of (ka + kb) is formed by multiplying by. Therefore, if the logarithm is taken for the number of states of the frequency of appearance of the sign, the product is converted into a sum according to the logarithm, so the law of algebra is established.

이상으로부터, 8kbit보다 긴 부호에 대해서는, 대수의 법칙으로부터, WL(n-1) "010"의 발생 빈도의 (변동)/(평균값)은 작게 할 수 있으므로, 보다 WL(n-1)의 "010" 부분에 인접한 WLn의 "0"의 개수를 전체 부호 중에서, 8kbit의 경우보다도 더욱 감소시킬 수 있다.As mentioned above, for codes longer than 8 kbit, (variation) / (average value) of the occurrence frequency of WL (n-1) "010" can be made small from the logarithmic law, The number of " 0 " s of WLn adjacent to the 010 " portion can be further reduced in the case of 8 kbit in all codes.

또한, 제2 부호화의 α를 {(k/16을 정수로 잘라올린 값}*1.2배로 하였지만, 예를 들면, 이 1.2배를 증대 및 감소시킴으로써, γ는 거의 정규 분포 형상으로 분포하는 것을 이용해서, 전체 부호 중의 WL(n-1)의 정보 비트 "010" 부분에 인접한 WLn의 정보 비트 "0"의 개수의 출현 확률을 설정값 이하로 할 수 있는 것은 분명하다. 예를 들면, 8Kbit의 부호에서는, 정규 분포 함수를 N(평균, 표준 편차)으로 해서, 부호 발생 빈도인 10을 한계로 한 대수의 값은, "010"의 수가 800 내지 1200 사이에서는, N(1023, 2100)에 비례하는 분포 함수로 잘 근사할 수 있으므로, 이것으로부터 부호의 출현 확률, 및 α 이상의 부호의 누적 출현 확률을 계산하는 것은 용이하다.In addition, although α of the second coding is set to {(value cut out of k / 16 to an integer} * 1.2 times), for example, by increasing and decreasing this 1.2 times,? Is almost distributed in a normal distribution shape. It is clear that the probability of occurrence of the number of information bits " 0 " of WLn adjacent to the information bit " 010 " portion of the WL (n-1) in the entire code can be made less than or equal to the set value. Is a normal distribution function with N (mean, standard deviation), and a logarithmic value with a limit of 10 as the sign generation frequency is proportional to N (1023, 2100) when the number of "010" is between 800 and 1200. Since it can be approximated well by a distribution function, it is easy to calculate the probability of occurrence of the sign and the cumulative occurrence probability of the code of α or more.

또한, 본 실시예의 변형예에서, 물론 본 실시예에서 설명한 바와 같이, 상기에서 설명한 체크섬, 부호의 개수, 체크 곱을 이용한 정보 오류 정정을 조합해서, WL(n-1)의 "010"의 부호열에 대한 정보 오류를 더욱 저감해도 된다.In addition, in the modification of the present embodiment, as described in the present embodiment, of course, the information error correction using the checksum, the number of codes, and the check product described above is combined to the code string of "010" of WL (n-1). Information errors may be further reduced.

여기서, 본 실시예의 변형예에서는, 실시예 4의 도 21과 동일하게, 입력 비트의 부호 출현 확률을 평균하고, 정보 비트를 출력하는 제1 부호화 회로(106)와, 정보 비트를 입력하고, 상기 입력 비트를 복호하는 제1 복호 회로(107)를 갖는 점에서, 구성상 상위하다.Here, in the modified example of the present embodiment, similarly to Fig. 21 of the fourth embodiment, the first encoding circuit 106 which averages the code occurrence probabilities of the input bits, outputs the information bits, and inputs the information bits, The configuration differs in that the first decoding circuit 107 decodes the input bits.

본 발명은 상기 실시예에 한정되지 않는다.The present invention is not limited to the above embodiment.

즉, 실시예 1부터 실시예 4까지는, 기껏해야 4비트나 6비트의 정보의 플래그 비트를 추가함으로써, 오기입이나 인접 메모리 셀에 의한 용량 결합에 의한 임계값 상승 비트수를 1/2 내지 1/3 이하로 감소시키는 효과가 있다. 따라서, 이들 오기입이나 인접 메모리 셀에 의한 용량 결합에 의한 임계값 상승에 기인해서 오류 비트가 i비트 발생하고, 부호 길이가 f(i)비트 신장하는 경우, 상기 실시예를 이용함으로써, f(i)>f(i/2)+4[bit]를 만족시키는 경우, 실시예 1, 2가 NAND 메모리 어레이 셀의 면적을 축소할 수 있는 효과를 갖는다. 실시예 3에서는, f(i)>f(i/3)+6[bit]를 만족시키는 경우, NAND 메모리 어레이 셀의 면적을 축소할 수 있는 효과를 갖는다. 여기서, BCH 부호에서는, 정보 비트 길이를 m으로 해서, BCH 부호화한 후의 부호가, 오류 비트를 i비트 정정하기 위해서는 f(i)=i×(log2m+1을 잘라버리고 정수로 한 것)만큼 부호 길이가 신장한다. 따라서, BCH 부호를 이용하는 경우에는, 상기 부등식이 성립하는 범위를 f(i)에 대입해서 이용하면 효과가 있다. 예를 들면, i로서 2를 이용하면, m으로서는 16비트 이상 있으면, 실시예 1, 2의 조건을 충분히 만족시키며, 512 비트 이상 있으면 충분히 실시예 3, 4의 조건을 만족시킬 수 있다.That is, in Embodiments 1 through 4, at most 4 bits or 6 bits of flag bits are added to reduce the number of threshold rising bits due to capacitive coupling by write or adjacent memory cells. It has the effect of reducing to 3 or less. Therefore, when the error bit occurs i bits and the code length is increased by f (i) bits due to the threshold value increase due to these write operations or the capacitive coupling by adjacent memory cells, by using the above embodiment, f ( When i)> f (i / 2) +4 [bit] is satisfied, the first and second embodiments have an effect of reducing the area of the NAND memory array cell. In Embodiment 3, when f (i)> f (i / 3) +6 [bit] is satisfied, the area of the NAND memory array cell can be reduced. Here, in the BCH code, the code after the BCH encoding using the information bit length as m, and f (i) = i x (cut off log 2 m + 1 to an integer) to i-bit correct an error bit The code length is increased by. Therefore, in the case of using the BCH code, it is effective to substitute and use the range where the above inequality holds for f (i). For example, if 2 is used as i, if m is 16 bits or more, the conditions of Embodiments 1 and 2 are sufficiently satisfied, and if 512 bits or more, the conditions of Examples 3 and 4 can be sufficiently satisfied.

또한, RS 부호에서는, 정보 비트를 2j의 1바이트로 이루어지는 부호로 해서, 오류 비트를 i바이트 정정하기 위해서는, i×2바이트=i×2×j비트 부호 길이가 신장한다. 따라서, RS 부호를 이용하는 경우에는, 상기 부등식이 성립하는 범위를 f(i)에 대입해서 이용하면 효과가 있다. 예를 들면, i로서 2를 이용하면, 2j로서는 8비트 이상 있으면 충분히 실시예 1부터 4까지의 조건을 만족시킬 수 있다.In addition, in the RS code, in order to correct an error bit by i byte by making the information bit a code consisting of 1 byte of 2 j , i x 2 bytes = i x 2 x j bit code length is increased. Therefore, in the case of using the RS code, it is effective to substitute and use f (i) the range where the above inequality holds. For example, if 2 is used as i, if 2 j is 8 bits or more, the conditions from Embodiments 1 to 4 can be sufficiently satisfied.

또한, 본 실시예에서도 실시예 1부터 실시예 3까지와 마찬가지로, 제2 부호화나 제2 부호의 복호화에 정보 비트 길이에 비례하는 정도의 계산량밖에 필요로 하지 않아, 오류 비트수에 의존하지 않는 부호화로 되어 있다. 한편, RS 부호나 BCH 부호 등 오류 정정 부호 오류 정정 비트수가 증가하면 참조 부호 103의 복호화의 시간이 오류 정정 비트의 2승 이상으로 증대한다. 따라서, 본 실시예 1부터 4까지의 제2 부호화를 참조 부호 102의 오류 정정 부호화나 참조 부호 103의 오류 정정 부호의 복호화에 병용해서 적용한 경우에는, 오기입이나 인접 메모리 셀에 의한 용량 결합에 의한 임계값 상승에 기인해서 오류 비트를 줄일 수 있어, 오류 정정에 필요한 부호를 짧게 할 수 있음과 함께, 복호화에 필요한 전체 계산량이나 회로를 축소할 수 있다.Also in the present embodiment, as in the first to third embodiments, only a calculation amount proportional to the information bit length is required for the second encoding and the decoding of the second code, and the encoding does not depend on the number of error bits. It is. On the other hand, when the number of error correction code error correction bits, such as an RS code or a BCH code, increases, the decoding time of the reference code 103 increases to a power of two or more of the error correction bits. Therefore, when the second coding from the first embodiment to the fourth is applied in combination with the error correction coding of reference numeral 102 or the decoding of the error correction code of reference numeral 103, it is necessary to use a capacitive coupling by writing or adjacent memory cells. The error bits can be reduced due to the increase in the threshold value, so that the sign necessary for error correction can be shortened, and the total amount of calculation and circuit necessary for decoding can be reduced.

또한, 실시예 1, 2에서 설명한 카운터(108, 109, 112, 113), 실시예 3에서 설명한 레지스터 a, b, c, d, 및 실시예 4에서 설명한 카운터(116, 117, 118, 119), 및 레지스터 e, f, g, h에서 필요한 비트수는, 정보 비트수를 m으로 해서, 각각 기껏해야 (log2m+1을 잘라버리고 정수로 한 것) 정도의 카운터 및 레지스터 비트수로 충분하며, 오류 정정 개소의 위치를 나타내는 포인터와 동등한 작은 회로 규모로 실현할 수 있다.Further, the counters 108, 109, 112, 113 described in Embodiments 1 and 2, the registers a, b, c, d described in Embodiment 3, and the counters 116, 117, 118, 119 described in Embodiment 4 , And the number of bits required in registers e, f, g, and h is enough to have a counter and register bit number of at most (log 2 m + 1 truncated to an integer) with m information bits. In addition, it can be realized on a small circuit scale equivalent to a pointer indicating the position of the error correction point.

또한, 상기 실시예 1, 2에서 설명한 카운터(108, 109, 112, 113), 실시예 3에서 설명한 레지스터 a, b, c, d, 및 실시예 4에서 설명한 카운터(116, 117, 118, 119), 및 레지스터 e, f, g, h 사이의 카운트수를 비교해서 SE의 분기를 하는 예를 설명하였지만, 예를 들면, 비교하는 카운터 또는 레지스터의 카운트수가 동일한 경우에는, YES측으로 분기해도 되고, "아니오"측으로 분기해도 된다.Further, the counters 108, 109, 112 and 113 described in the first and second embodiments, the registers a, b, c and d described in the third embodiment and the counters 116, 117, 118 and 119 described in the fourth embodiment And an example of branching SE by comparing the counts between registers e, f, g, and h, for example, when the counts of the counters or registers to be compared are the same, you may branch to the YES side, You may branch to the "no" side.

예를 들면, SE7에서는 카운터(108)>카운터(109)의 경우, YES로 분기하게 되어 있지만, 카운터(108)≥카운터(109)의 경우에 YES로 분기하는 것으로 해도 된다. 또한, 분기하지 않아도 된다. 마찬가지로, SE17에서, 카운터(108)와 카운터(109)의 최소값이, 카운터(112)와 카운터(113)의 최소값보다도 큰 경우, YES측으로 분기하게 되어 있지만, 카운터(108)와 카운터(109)의 최소값이, 카운터(112)와 카운터(113)의 최소값 이상인 경우, YES측으로 분기하는 것으로 해도 된다. 또한, SE19에서, 카운터(112)>카운터(113)의 경우, YES로 분기하게 되어 있지만, 카운터(112)≥카운터(113)의 경우에 YES로 분기하는 것으로 해도 된다. 또한, SE21에서, 카운터(118)>카운터(119)의 경우, YES로 분기하게 되어 있지만, 카운터(108)≥카운터(119)의 경우에 YES로 분기하는 것으로 해도 된다.For example, in SE7, the counter 108> the counter 109 branches to YES. However, in the case of the counter 108 ≥ counter 109, the branching to YES may be performed. In addition, it is not necessary to branch. Similarly, in SE17, when the minimum value of the counter 108 and the counter 109 is larger than the minimum value of the counter 112 and the counter 113, it branches to the YES side, but the counter 108 and the counter 109 When the minimum value is equal to or larger than the minimum value of the counter 112 and the counter 113, it may be branched to the YES side. In addition, in SE19, in the case of the counter 112> counter 113, it branches to YES, but in the case of the counter 112≥counter 113, you may branch to YES. In SE21, the counter 118> the counter 119 branches to YES. However, in the case of the counter 108 ≥ counter 119, the branching to YES may be performed.

마찬가지로, SE34에서, 레지스터 a와 레지스터 b의 최소값이, 레지스터 c와 레지스터 d의 최소값보다도 큰 경우, YES측으로 분기하게 되어 있지만, 레지스터 a와 레지스터 b의 최소값이, 레지스터 c와 레지스터 d의 최소값 이상인 경우, YES측으로 분기하는 것으로 해도 된다. 또한, SE37에서, 레지스터 c의 값이 레지스터 d의 값보다 큰 경우, YES로 분기하게 되어 있지만, 레지스터 c의 값이 레지스터 d의 값 이상인 경우에 YES로 분기하는 것으로 해도 된다. 또한, SE39에서, 레지스터 a의 값이 레지스터 b의 값보다 큰 경우, YES로 분기하게 되어 있지만, 레지스터 a의 값이 레지스터 b의 값 이상인 경우에 YES로 분기하는 것으로 해도 된다.Similarly, in SE34, when the minimum value of register a and register b is larger than the minimum value of register c and register d, branching is made to the YES side, but the minimum value of register a and register b is greater than or equal to the minimum value of register c and register d. It may be branched to the YES side. In SE37, when the value of the register c is larger than the value of the register d, the branching is YES. However, when the value of the register c is equal to or higher than the value of the register d, the branching may be YES. In SE39, if the value of the register a is larger than the value of the register b, the branching is YES. However, if the value of the register a is the value of the register b or more, the branching may be YES.

마찬가지로, SE63에서, 카운터(116)와 카운터(117)의 최소값이, 카운터(118)와 카운터(119)의 최소값보다도 큰 경우, YES측으로 분기하게 되어 있지만, 카운터(116)와 카운터(117)의 최소값이, 카운터(118)와 카운터(119)의 최소값 이상인 경우, YES측으로 분기하는 것으로 해도 된다. 또한, SE65에서, 카운터(118)>카운터(119)의 경우, YES로 분기하게 되어 있지만, 카운터(108)≥카운터(109)의 경우에 YES로 분기하는 것으로 해도 된다. 또한, SE67에서, 카운터(116)>카운터(117)의 경우, YES로 분기하게 되어 있지만, 카운터(116)≥카운터(117)의 경우에 YES로 분기하는 것으로 해도 된다.Similarly, in SE63, when the minimum value of the counter 116 and the counter 117 is larger than the minimum value of the counter 118 and the counter 119, it branches to the YES side, but the counter 116 and the counter 117 When the minimum value is equal to or larger than the minimum value of the counter 118 and the counter 119, it may be branched to the YES side. In the SE65, the counter 118> the counter 119 branches to YES. However, the counter 108 ≥ the counter 109 may branch to YES. In SE67, the counter 116> the counter 117 branches to YES. However, the counter 116> the counter 117 may branch to YES.

마찬가지로, SE70에서, 레지스터 e와 레지스터 f의 최소값이, 레지스터 g와 레지스터 h의 최소값보다도 큰 경우, YES측으로 분기하게 되어 있지만, 레지스터 e와 레지스터 f의 최소값이, 레지스터 g와 레지스터 h의 최소값 이상인 경우, YES측으로 분기하는 것으로 해도 된다. 또한, SE75에서, 레지스터 e의 값이 레지스터 f 의 값보다 큰 경우, YES로 분기하게 되어 있지만, 레지스터 e의 값이 레지스터 f의 값 이상인 경우에 YES로 분기하는 것으로 해도 된다. 또한, SE73에서, 레지스터 g의 값이 레지스터 h의 값보다 큰 경우, YES로 분기하게 되어 있지만, 레지스터 g의 값이 레지스터 h의 값 이상인 경우에 YES로 분기하는 것으로 해도 된다.Similarly, in SE70, when the minimum value of register e and register f is larger than the minimum value of register g and register h, branching is made to the YES side, but the minimum value of register e and register f is equal to or greater than the minimum value of register g and register h. It may be branched to the YES side. In SE75, if the value of the register e is larger than the value of the register f, branching is performed to YES. However, the branching may be branched to YES if the value of the register e is greater than or equal to the value of the register f. In SE73, if the value of the register g is larger than the value of the register h, the branching is YES. However, if the value of the register g is equal to or higher than the value of the register h, the branching may be YES.

또한, 실시예 1, 2에서 설명한 카운터(108, 109, 112, 113), 실시예 3에서 설명한 레지스터 a, b, c, d, 및 실시예 4에서 설명한 카운터(116, 117, 118, 119), 및 레지스터 e, f, g, h 사이의 카운트수를 비교해서 SE의 분기를 하는 예를 설명하였지만, 예를 들면, 비교하는 카운터 또는 레지스터의 카운트수가 동일한 경우에는, YES측으로 분기해도 되고, "아니오"측으로 분기해도 된다. 예를 들면, SE7에서는 카운터(108)>카운터(109)의 경우, YES로 분기하게 되어 있지만, 카운터(108)≥카운터(109)의 경우에 YES로 분기하는 것으로 해도 된다. 또한, 분기하지 않아도 된다. 마찬가지로, SE17에서, 카운터(108)와 카운터(109)의 최소값이, 카운터(112)와 카운터(113)의 최소값보다도 큰 경우, YES측으로 분기하게 되어 있지만, 카운터(108)와 카운터(109)의 최소값이, 카운터(112)와 카운터(113)의 최소값 이상인 경우, YES측으로 분기하는 것으로 해도 된다. 또한, SE19에서, 카운터(112)>카운터(113)의 경우, YES로 분기하게 되어 있지만, 카운터(112)≥카운터(113)의 경우에 YES로 분기하는 것으로 해도 된다. 또한, SE21에서, 카운터(108)>카운터(109)의 경우, YES로 분기하게 되어 있지만, 카운터(108)≥카운터(109)의 경우에 YES로 분기하는 것으로 해도 된다.Further, the counters 108, 109, 112, 113 described in Embodiments 1 and 2, the registers a, b, c, d described in Embodiment 3, and the counters 116, 117, 118, 119 described in Embodiment 4 , And the example of branching SE by comparing the counts between the registers e, f, g, and h, are described. For example, when the counts of the counters or registers to be compared are the same, the branching may be performed on the YES side. You may branch to "NO" side. For example, in SE7, the counter 108> the counter 109 branches to YES. However, in the case of the counter 108 ≥ counter 109, the branching to YES may be performed. In addition, it is not necessary to branch. Similarly, in SE17, when the minimum value of the counter 108 and the counter 109 is larger than the minimum value of the counter 112 and the counter 113, it branches to the YES side, but the counter 108 and the counter 109 When the minimum value is equal to or larger than the minimum value of the counter 112 and the counter 113, it may be branched to the YES side. In addition, in SE19, in the case of the counter 112> counter 113, it branches to YES, but in the case of the counter 112≥counter 113, you may branch to YES. In the SE21, the counter 108> the counter 109 branches to YES. However, the counter 108> the counter 109 may branch to YES.

마찬가지로, SE34에서, 레지스터 a와 레지스터 b의 최소값이, 레지스터 c와 레지스터 d의 최소값보다도 큰 경우, YES측으로 분기하게 되어 있지만, 레지스터 a와 레지스터 b의 최소값이, 레지스터 c와 레지스터 d의 최소값 이상인 경우, YES측으로 분기하는 것으로 해도 된다. 또한, SE37에서, 레지스터 c의 값이 레지스터 d의 값보다 큰 경우, YES로 분기하게 되어 있지만, 레지스터 c의 값이 레지스터 d의 값 이상인 경우에 YES로 분기하는 것으로 해도 된다. 또한, SE39에서, 레지스터 a의 값이 레지스터 b의 값보다 큰 경우, YES로 분기하게 되어 있지만, 레지스터 a의 값이 레지스터 b의 값 이상인 경우에 YES로 분기하는 것으로 해도 된다.Similarly, in SE34, when the minimum value of register a and register b is larger than the minimum value of register c and register d, branching is made to the YES side, but the minimum value of register a and register b is greater than or equal to the minimum value of register c and register d. It may be branched to the YES side. In SE37, when the value of the register c is larger than the value of the register d, the branching is YES. However, when the value of the register c is equal to or higher than the value of the register d, the branching may be YES. In SE39, if the value of the register a is larger than the value of the register b, the branching is YES. However, if the value of the register a is the value of the register b or more, the branching may be YES.

마찬가지로, SE63에서, 카운터(116)와 카운터(117)의 최소값이, 카운터(118)와 카운터(119)의 최소값보다도 큰 경우, YES측으로 분기하게 되어 있지만, 카운터(116)와 카운터(117)의 최소값이, 카운터(118)와 카운터(119)의 최소값 이상인 경우, YES측으로 분기하는 것으로 해도 된다. 또한, SE65에서, 카운터(118)>카운터(119)의 경우, YES로 분기하게 되어 있지만, 카운터(108)≥카운터(109)의 경우에 YES로 분기하는 것으로 해도 된다. 또한, SE67에서, 카운터(116)>카운터(117)의 경우, YES로 분기하게 되어 있지만, 카운터(116)≥카운터(117)의 경우에 YES로 분기하는 것으로 해도 된다.Similarly, in SE63, when the minimum value of the counter 116 and the counter 117 is larger than the minimum value of the counter 118 and the counter 119, it branches to the YES side, but the counter 116 and the counter 117 When the minimum value is equal to or larger than the minimum value of the counter 118 and the counter 119, it may be branched to the YES side. In the SE65, the counter 118> the counter 119 branches to YES. However, the counter 108 ≥ the counter 109 may branch to YES. In SE67, the counter 116> the counter 117 branches to YES. However, the counter 116> the counter 117 may branch to YES.

마찬가지로, SE70에서, 레지스터 e와 레지스터 f의 최소값이, 레지스터 g와 레지스터 h의 최소값보다도 큰 경우, YES측으로 분기하게 되어 있지만, 레지스터 e와 레지스터 f의 최소값이, 레지스터 g와 레지스터 h의 최소값 이상인 경우, YES측으로 분기하는 것으로 해도 된다. 또한, SE75에서, 레지스터 e의 값이 레지스터 f의 값보다 큰 경우, YES로 분기하게 되어 있지만, 레지스터 e의 값이 레지스터 f의 값 이상인 경우에 YES로 분기하는 것으로 해도 된다. 또한, SE73에서, 레지스터 g의 값이 레지스터 h의 값보다 큰 경우, YES로 분기하게 되어 있지만, 레지스터 g의 값이 레지스터 h의 값 이상인 경우에 YES로 분기하는 것으로 해도 된다.Similarly, in SE70, when the minimum value of register e and register f is larger than the minimum value of register g and register h, branching is made to the YES side, but the minimum value of register e and register f is equal to or greater than the minimum value of register g and register h. It may be branched to the YES side. In SE75, if the value of the register e is larger than the value of the register f, the branching is YES. However, if the value of the register e is the value of the register f or more, the branching may be YES. In SE73, if the value of the register g is larger than the value of the register h, the branching is YES. However, if the value of the register g is equal to or higher than the value of the register h, the branching may be YES.

또한, 실시예에서는 오류 정정 부호 전에 제2 부호화를 하는 방법을 설명하였지만, 오류 정정 부호를 형성하고 나서 검사 비트도 포함시켜 제2 부호화하는 방법으로서, 참조 부호 104와 102의 순번, 및 참조 부호 105와 103의 순번을 교체해도 상관없다. 이 때 플래그 비트에 상당하는 부호는, 3비트로 1개의 a비트의 정보를 나타내는 aaa와 같은 다수결 부호로 하거나 하여 추가하면 된다. 물론, 플래그 비트에 대해서 별도로 오류 정정 부호를 작성해서 변환해도 상관없다.In addition, although the embodiment described the method of performing the second encoding before the error correction code, the method of performing the second encoding by including the check bit after forming the error correction code, the order of reference numerals 104 and 102, and reference numeral 105 The order of and 103 may be replaced. In this case, the code corresponding to the flag bit may be added by using a majority decision code such as aaa indicating 3 bits of information of one a bit. Of course, you may create and convert an error correction code with respect to a flag bit separately.

또한, 상기 참조 부호 104와 102의 순번, 및 참조 부호 105와 103의 순번을 교체한 경우에는, 오류 정정 부호 전체에 대하여, 정보 비트를 오류 정정 부호로 대체하여 실시예 1 내지 4의 제2 부호화 방법을 적용해도 되고, 오류 정정 부호에 포함되는 정보 비트를 추출해서, 이 부분의 제2 부호화를 행해도 된다. 전자의 오류 정정 부호 전체에 대하여 제2 부호화를 행한 쪽이, 검사 비트를 포함시킨 "010" 발생 개수나 인접하는 워드선의 것을 줄일 수 있어, 보다 바람직하다.In addition, when the order of the reference numerals 104 and 102 and the order of the reference numerals 105 and 103 are replaced, the second encoding of the first to fourth embodiments is replaced by replacing the information bits with error correction codes for all the error correction codes. The method may be applied, or the information bits included in the error correction code may be extracted to perform second encoding of this portion. It is more preferable that the second encoding is performed on the entirety of the former error correction code, since the number of occurrences of "010" including the check bit and the adjacent word line can be reduced.

또한, 실시예 전부에서, 소자 분리막이나 층간 절연막의 절연막 형성법 자체는, 실리콘을 실리콘 산화막이나 실리콘 질화막으로 변환하는 이들 이외의 방법, 예를 들면 산소 이온을 퇴적한 실리콘에 주입하는 방법이나, 퇴적한 실리콘을 산화하는 방법을 이용해도 상관없다. 또한, 전하 축적층(26)은, TiO2나 Al2O3, 혹은, 탄탈 산화막, 티탄산 스트론튬이나 티탄산 바륨, 티탄산 지르코늄납이나, 그들 적층막을 이용하면 된다. 실시예로서는, 반도체 기판(1 및 1')으로서 p형 Si 기판을 상정하였지만, 대신에 n형 Si 기판이나 SOI 기판의 SOI 실리콘층, 또는 SiGe 혼정, SiGeC 혼정 등, 실리콘을 포함하는 단결정 반도체 기판이면 된다. 또한, p형 반도체층(23) 상의 n형 MONOS-FET의 형성에 대해서 설명하였지만, n형 반도체층(23) 상의 p형 MONOS-FET의 형성으로 치환해도 되고, 그 경우, 상술한 실시예의 소스 드레인 전극 및 반도체 영역에 대한 n형을 p형, p형을 n형으로 대체하고, 또한, 도핑 불순물종의 As, P, Sb를 In, B 중 어느 하나와 대체하면 된다. 또한, 게이트 전극(8 및 8')은 Si 반도체, SiGe 혼정, SiGeC 혼정을 이용할 수 있고, 다결정이어도 되고, 이들 적층 구조로 해도 된다. 또한, 아몰퍼스 Si, 아몰퍼스 SiGe 혼정, 또는 아몰퍼스 SiGeC 혼정을 이용할 수 있고, 이들 적층 구조로 해도 된다. 단, 반도체인 것, 특히, Si를 포함한 반도체인 것이, 양호한 측벽 절연막(19)을 게이트 전극(51)의 산화 또는 산질화에 의해 형성할 수 있어 바람직하다. 또한, 전하 축적층(5)은 소스 드레인간에서 분리되어 있거나, 도트 형상으로 형성되어 있어도 상관없으며, 본 방법을 적용할 수 있는 것은 물론이다. 또한, 본 실시예에서는 게이트 전극(8 또는 8') 상에 퇴적법에 의해 형성한 금속 보강층(27')의 단면을 설명하였지만, 예를 들면, Ti나 Co, Ni, Mo, Pd, Pt와 같은 금속과 게이트 전극(27)을 반응시켜 실리사이드를 형성하고 금속 보강층(11)을 형성해도 된다.In all of the embodiments, the insulating film forming method itself of the element isolation film or the interlayer insulating film is a method other than those for converting silicon into a silicon oxide film or a silicon nitride film, for example, a method of injecting oxygen ions into the deposited silicon, or a deposited film. You may use the method of oxidizing silicon. The charge storage layer 26 may be formed of TiO 2 , Al 2 O 3 , a tantalum oxide film, strontium titanate or barium titanate, lead zirconium titanate, or a laminated film thereof. As an example, a p-type Si substrate is assumed as the semiconductor substrates 1 and 1 ', but instead of an SOI silicon layer of an n-type Si substrate or an SOI substrate, or a single crystal semiconductor substrate containing silicon such as a SiGe mixed crystal or a SiGeC mixed crystal, do. Although the formation of the n-type MONOS-FET on the p-type semiconductor layer 23 has been described, the formation of the p-type MONOS-FET on the n-type semiconductor layer 23 may be substituted, in which case the source of the above-described embodiment The n-type for the drain electrode and the semiconductor region may be replaced with p-type and p-type with n-type, and As, P, and Sb of the doping impurity species may be replaced with any one of In and B. In addition, the gate electrodes 8 and 8 'can use Si semiconductor, SiGe mixed crystal, and SiGeC mixed crystal, polycrystal may be sufficient, and these laminated structures may be sufficient. In addition, amorphous Si, amorphous SiGe mixed crystal, or amorphous SiGeC mixed crystal can be used, and these laminated structures may be used. However, it is preferable that it is a semiconductor, especially a semiconductor containing Si, since the favorable sidewall insulating film 19 can be formed by the oxidation or oxynitride of the gate electrode 51. The charge accumulation layer 5 may be separated from the source drain or may be formed in a dot shape, and of course, the present method can be applied. In this embodiment, the cross section of the metal reinforcing layer 27 'formed by the deposition method on the gate electrode 8 or 8' has been described. For example, Ti, Co, Ni, Mo, Pd, Pt and The same metal may be reacted with the gate electrode 27 to form silicide and the metal reinforcement layer 11 may be formed.

또한 본원의 실시예에서는, 설명을 알기 쉽게 하기 위해서 "0", "1"의 2치의 반도체 메모리 셀 트랜지스터의 실시예를 설명하였지만, 2치 이상의 다치을 기억하 는 반도체 메모리 셀 트랜지스터를 이용하는 경우 쪽이, 보다 상기 복수의 임계값간의 간격이 좁아, 인접 메모리 셀과의 용량 결합에 의한 임계값 증가나, 오기입이 문제로 되므로, 보다 큰 효과를 얻을 수 있는 것은 명백하다. 여기서, 1개의 메모리 셀에 기억하는 임계값으로서는, 2n값으로 되는 것이, 정보 데이터의 디코드가 간략화되어 바람직하다.In addition, in the embodiment of the present application, in order to make the description clear, an embodiment of the binary semiconductor memory cell transistors of "0" and "1" has been described. However, in the case of using a semiconductor memory cell transistor that stores two or more multiple values, Since the interval between the plurality of threshold values is narrower than this, the threshold value increase due to the capacitive coupling with the adjacent memory cells and the write-in become a problem, so that it is obvious that a greater effect can be obtained. In this case, the threshold value stored in one memory cell is preferably 2 n , which is preferable because the decoding of the information data is simplified.

또한, 상기 실시예는, 이하의 양태를 포함한다.In addition, the said Example includes the following aspects.

(1) 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 구비하고, 복수의 상기 메모리 셀이 인접하여 형성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이(도 5의 참조 부호 49)와; 제2 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 정정 부호를 발생하는 오류 정정 부호 발생 회로(도 30의 참조 부호 104)와; 상기 정정 부호로부터 오류를 정정하여 상기 제2 정보 비트를 복원하는 오류 정정 부호 복호 회로(도 30의 참조 부호 105)와; 상기 오류 정정 부호 발생 회로에 출력하는 부호 변환 회로; 상기 부호 변환 회로(도 30의 참조 부호 104)는, 기입을 행하는 제1 페이지에, 물리적으로 인접한 제2 페이지의 정보 비트의 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출하고, 상기 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내에 있는, 소거 비트에 인접하는 제1 페이지의 비트를 출력하는 상기 제5 회로(도 30의 참조 부호 105)를 갖고,; 상기 제5 회로가 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출한 경우에, 상기 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내의 소거 비트에 인접하는 제1 페이지의 비트를 소거 비트와 치환하고, 부호화한 정보 비트를 생성하고, 상기 제5 회로의 일련의 제1 페이지의 출력을 제2 부호로 하고, 상기 제2 페이지의 부호화한 정보 비트에 부가하여, 제2 정보 비트를 생성하는 부호 발생 수단; 상기 제2 정보 비트를 입력으로서, 물리적으로 인접한 제2 페이지의 정보 비트의 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출한 경우에, 상기 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내의 소거 비트에 인접하는 제1 페이지의 비트를, 상기 제2 부호의 일련의 비트와 치환하는 복호 수단을 구비하는 데이터 기억 시스템.(1) a memory cell which stores at least binary data of " 1 " and " 0 " as the charge of the charge storage layer and uses the difference between the two charge amounts of the charge storage layer as write bits and erase bits; A nonvolatile memory cell array (reference numeral 49 in FIG. 5) for collectively erasing pages in which the memory cells of the plurality are formed adjacent to each other; An error correction code generation circuit (reference numeral 104 in Fig. 30) for generating a correction code for correcting at least one bit of error data from the second information bits; An error correction code decoding circuit (reference numeral 105 in Fig. 30) which corrects an error from the correction code and restores the second information bit; A code conversion circuit for outputting to the error correction code generation circuit; The code conversion circuit (reference numeral 104 in Fig. 30) detects a continuous bit array of write bits / erase bits / write bits of information bits of a second page physically adjacent to the first page to write, The fifth circuit (reference numeral 105 in Fig. 30) outputs the bits of the first page adjacent to the erase bits, which are in a contiguous bit array of two pages of write bits / erase bits / write bits; When the fifth circuit detects a continuous bit array of write bits / erase bits / write bits, the first page adjacent to an erase bit in the continuous bit array of write bits / erase bits / write bits of the second page. Replace the bits with erase bits, generate coded information bits, output a series of first pages of the fifth circuit as a second code, add the coded information bits of the second page, and Code generating means for generating information bits; Write bit / erase bit / write bit of the second page when detecting a continuous bit array of write bits / erase bits / write bits of information bits of a physically adjacent second page as input of the second information bit And decoding means for substituting the bits of the first page adjacent to the erase bits in the contiguous bit array of the data with a series of bits of the second code.

(2) (1)의 데이터 기억 시스템에서, 입력한 상기 정보 비트의, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제1 카운터 회로(도 31의 WL(n-1)로 되는 경우에 "H"로 되는 출력)와; 입력한 상기 정보 비트와, 기입 비트-소거 비트의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하고, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제2 카운터 회로와; 상기 제1 카운터 회로의 출력의 배열의 수보다도 상기 2카운터 회로의 출력의 배열의 수가 적은 경우, 선택적으로 입력한 상기 정보 비트와, 기입 비트-소거 비트의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하고, 상기 오류 정정 부호 발생 회로에 출력하는 부호 변환 회로를 더 구비한다.(2) In the data storage system of (1), a first counter circuit (WL (n-1) in FIG. 31) for detecting the number of consecutive bit arrays of write bits / erase bits / write bits of the input information bits. An output of " H " A second counter circuit which takes an exclusive logical sum of the inputted information bits and a plurality of bits in which the array of write bit-erase bits is repeated a plurality of times, and detects the number of consecutive bit arrays of write bits / erase bits / write bits; When the number of arrangements of the outputs of the two counter circuits is smaller than the number of arrangements of the outputs of the first counter circuit, exclusively of the plurality of bits in which the information bits selectively input and the arrangement of write bit-erase bits are repeated a plurality of times. And a code conversion circuit which takes a logical sum and outputs it to the error correction code generation circuit.

(3) (1)의 데이터 기억 시스템에서, 상기 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 어드레스의 합의 정보와, 상기 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트의 개수의 정보를, 제2 정보 비트에 부가한다(도 34에 기재).(3) In the data storage system of (1), information of the sum of the addresses of the consecutive bit arrays of the write bit / erase bit / write bit of the second page and the write bit / erase bit / write bit of the second page. Information of the number of consecutive bits is added to the second information bits (described in FIG. 34).

(4) (1)의 데이터 기억 시스템에서, 상기 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 어드레스의 곱의 정보를, 제2 정보 비트에 부가한다(도 34에 기재).(4) In the data storage system of (1), the information of the product of the address of the continuous bit array of the write bit / erase bit / write bit of the second page is added to the second information bit (described in FIG. 34). .

(5) (1)의 데이터 기억 시스템에서, 제2 부호를 입력으로 하고 상기 제5 회로에 의해 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출한 경우에, 상기 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내의 소거 비트에 인접하는 제1 페이지의 비트를 소거 비트와 치환하고, 부호화한 제2 부호를 생성하고, 상기 제5 회로의 일련의 제1 페이지의 출력을 제3 부호로 하고, 상기 제2 페이지의 부호화한 제2 부호에 부가해서, 제3 정보 비트를 생성하는 부호 발생 수단과; 상기 제3 정보 비트를 입력으로 해서, 물리적으로 인접한 제2 페이지의 정보 비트의 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출한 경우에, 상기 제2 페이지의 기입 비트/소거 비트/기입 비트의 연속 비트 배열 내의 소거 비트에 인접하는 제1 페이지의 제2 부호를, 상기 제3 부호의 일련의 비트와 치환하는 복호 수단을 더 구비한다(도 39a, 도 39b에 기재).(5) In the data storage system of (1), when the second code is input and the continuous bit array of write bits / erase bits / write bits is detected by the fifth circuit, the write bits of the second page. Replace the bits of the first page adjacent to the erase bits in the contiguous bit array of / erase bits / write bits with erase bits, generate an encoded second code, and output the output of the first series of pages of the fifth circuit. Code generating means for generating a third information bit in addition to the encoded second code of the second page as a third code; Write bit / erase bit / write of the second page when the third information bit is input and a continuous bit array of write bits / erase bits / write bits of information bits of a physically adjacent second page is detected. Decoding means for substituting the second code of the first page adjacent to the erase bit in the continuous bit array of bits with the series of bits of the third code is further provided (described in Figs. 39A and 39B).

(6) (1)의 데이터 기억 시스템에서, 입력 비트의 부호 출현 확률을 평균하고, 정보 비트를 출력하는 제1 부호화 회로(도 4의 참조 부호 106)와; 정보 비트를 입력하고, 상기 입력 비트를 복호하는 제1 복호 회로(도 4의 참조 부호 107)를 더 구비한다.(6) the data storage system of (1), comprising: a first encoding circuit (reference numeral 106 in Fig. 4) for averaging the code occurrence probability of the input bits and outputting the information bits; A first decoding circuit (reference numeral 107 in Fig. 4) is further provided for inputting an information bit and decoding the input bit.

그 밖에, 본 발명의 요지를 일탈하지 않는 범위에서, 여러 가지로 변형하여 실시할 수 있다.In addition, various modifications can be made without departing from the spirit of the invention.

당 분야의 업자라면 부가적인 장점 및 변경들을 용이하게 생각해 낼 것이다. 따라서, 광의의 관점에서의 본 발명은 본 명세서에 예시되고 기술된 상세한 설명 및 대표 실시예들에 한정되는 것은 아니다. 따라서, 첨부된 청구 범위들 및 그 등가물들에 의해 정의된 바와 같은 일반적인 발명적 개념의 정신 또는 범위로부터 벗어나지 않고 다양한 변경이 가능하다.Those skilled in the art will readily come up with additional advantages and modifications. Accordingly, the invention in its broadest sense is not limited to the description and representative embodiments illustrated and described herein. Accordingly, various modifications are possible without departing from the spirit or scope of the general inventive concept as defined by the appended claims and their equivalents.

도 1은 본 발명의 비교예에 따른 NAND 셀 어레이 구조와 인접 셀의 용량 간섭 문제를 설명하는 도면.BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 illustrates a NAND cell array structure and a problem of capacitive interference between adjacent cells according to a comparative example of the present invention.

도 2는 비교예에 따른 NAND 셀의 임계값 분포와 마진 저하를 설명하는 도면.2 illustrates threshold distribution and margin reduction of a NAND cell according to a comparative example.

도 3은 비교예 BCH 부호의 단축화 부호 작성법을 설명하는 도면.Fig. 3 is a diagram for explaining a method of creating a shortened code of a comparative example BCH code.

도 4는 본 발명의 실시예 1에 따른 데이터 기억 시스템의 블록도.4 is a block diagram of a data storage system according to Embodiment 1 of the present invention.

도 5a는 실시예 1에 따른 메모리 셀 구조를 도시하는 도면.Fig. 5A is a diagram showing the memory cell structure according to the first embodiment.

도 5b는 실시예 1에 따른 메모리 셀 구조를 도시하는 도면.Fig. 5B is a diagram showing the memory cell structure according to the first embodiment.

도 6a는 실시예 1에 따른 메모리 셀의 단면을 도시하는 도면.6A is a diagram showing a cross section of a memory cell according to the first embodiment;

도 6b는 실시예 1에 따른 메모리 셀의 구조를 도시하는 도면.6B is a diagram showing the structure of a memory cell according to the first embodiment;

도 7은 실시예 1에 따른 제2 부호 변환을 설명하기 위한 플로우도.FIG. 7 is a flowchart for explaining a second code conversion according to the first embodiment; FIG.

도 8은 실시예 1에 따른 제2 부호 역변환을 설명하기 위한 플로우도.8 is a flow chart for explaining a second code inverse transform according to the first embodiment.

도 9a는 실시예 1에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.9A is a view for explaining an example of the second code conversion according to the first embodiment.

도 9b는 실시예 1에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.9B is a view for explaining an example of the second code conversion according to the first embodiment.

도 9c는 실시예 1에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.9C is a diagram for explaining an example of the second code conversion according to the first embodiment.

도 9d는 실시예 1에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.9D is a view for explaining an example of the second code conversion according to the first embodiment.

도 9e는 실시예 1에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.9E is a view for explaining an example of the second code conversion according to the first embodiment.

도 10은 실시예 1에 따른 심볼 카운터의 구성예를 도시하는 등가 회로도.10 is an equivalent circuit diagram showing a configuration example of a symbol counter according to the first embodiment.

도 11은 본 발명의 실시예 2에 따른 데이터 기억 시스템의 블록도.Fig. 11 is a block diagram of a data storage system according to the second embodiment of the present invention.

도 12는 실시예 2에 따른 제2 부호 변환을 설명하기 위한 플로우도.12 is a flowchart for explaining a second code conversion according to the second embodiment.

도 13은 실시예 2에 따른 심볼 카운터의 구성예를 도시하는 등가 회로도.Fig. 13 is an equivalent circuit diagram showing a configuration example of a symbol counter according to the second embodiment.

도 14는 실시예 2에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.14 is a diagram for explaining an example of a second code conversion according to the second embodiment.

도 15는 본 발명의 실시예 3에 따른 데이터 기억 시스템의 블록도.Fig. 15 is a block diagram of a data storage system according to the third embodiment of the present invention.

도 16a는 실시예 3에 따른 페이지 버퍼의 구성예를 도시하는 등가 회로도.Fig. 16A is an equivalent circuit diagram showing an example of the configuration of a page buffer according to the third embodiment.

도 16b는 실시예 3에 따른 페이지 버퍼의 구성예를 도시하는 등가 회로도.16B is an equivalent circuit diagram showing an example of the configuration of a page buffer according to the third embodiment.

도 17a는 실시예 3에 따른 페이지 버퍼의 형성예를 도시하는 타이밍차트도.17A is a timing chart showing an example of formation of a page buffer according to the third embodiment.

도 17b는 실시예 3에 따른 페이지 버퍼의 형성예를 도시하는 타이밍차트도.17B is a timing chart showing an example of formation of a page buffer according to the third embodiment.

도 17c는 실시예 3에 따른 페이지 버퍼의 형성예를 도시하는 타이밍차트도.17C is a timing chart showing an example of formation of a page buffer according to the third embodiment.

도 17d는 실시예 3에 따른 페이지 버퍼의 형성예를 도시하는 타이밍차트도.17D is a timing chart showing an example of formation of a page buffer according to the third embodiment.

도 17e는 실시예 3에 따른 페이지 버퍼의 형성예를 도시하는 타이밍차트도.17E is a timing chart showing an example of formation of a page buffer according to the third embodiment;

도 17f는 실시예 3에 따른 페이지 버퍼의 형성예를 도시하는 타이밍차트도.17F is a timing chart showing an example of formation of a page buffer according to the third embodiment.

도 18a는 실시예 3에 따른 제2 부호 변환을 설명하기 위한 플로우도.Fig. 18A is a flowchart for explaining a second code conversion according to the third embodiment.

도 18b는 실시예 3에 따른 제2 부호 변환을 설명하기 위한 플로우도.18B is a flowchart for explaining a second code conversion according to the third embodiment.

도 18c는 실시예 3에 따른 제2 부호 변환을 설명하기 위한 플로우도.18C is a flow chart for explaining a second code conversion according to the third embodiment.

도 19는 실시예 3에 따른 제2 부호 역변환을 설명하기 위한 플로우도.FIG. 19 is a flowchart for explaining a second code inverse transform according to the third embodiment; FIG.

도 20a는 실시예 3에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.20A is a view for explaining an example of the second code conversion according to the third embodiment.

도 20b는 실시예 3에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.20B is a view for explaining an example of the second code conversion according to the third embodiment.

도 20c는 실시예 3에 따른 제2 부호 변환의 일 실례를 설명하기 위한 도면.20C is a diagram for explaining an example of the second code conversion according to the third embodiment.

도 21은 본 발명의 실시예 4에 따른 데이터 기억 시스템의 블록도.Fig. 21 is a block diagram of a data storage system according to the fourth embodiment of the present invention.

도 22는 실시예 4에 따른 심볼 카운터의 구성예를 도시하는 등가 회로도.Fig. 22 is an equivalent circuit diagram showing a configuration example of a symbol counter according to the fourth embodiment.

도 23a는 실시예 4에 따른 제2 부호 변환을 설명하기 위한 플로우도.Fig. 23A is a flowchart for explaining a second code conversion according to the fourth embodiment.

도 23b는 실시예 4에 따른 제2 부호 변환을 설명하기 위한 플로우도.Fig. 23B is a flowchart for explaining a second code conversion according to the fourth embodiment.

도 23c는 실시예 4에 따른 제2 부호 변환을 설명하기 위한 플로우도.Fig. 23C is a flowchart for explaining a second code conversion according to the fourth embodiment.

도 23d는 실시예 4에 따른 제2 부호 변환을 설명하기 위한 플로우도.Fig. 23D is a flow chart for explaining the second code conversion according to the fourth embodiment.

도 24a는 본 발명의 실시예 5에 따른 메모리 셀 어레이의 단면도.Fig. 24A is a sectional view of a memory cell array in accordance with embodiment 5 of the present invention.

도 24b는 실시예 5에 따른 메모리 셀 어레이의 단면도.Fig. 24B is a sectional view of the memory cell array according to the fifth embodiment.

도 25a는 본 발명의 실시예 6에 따른 메모리 셀 어레이의 등가 회로도.Fig. 25A is an equivalent circuit diagram of a memory cell array according to Embodiment 6 of the present invention.

도 25b는 실시예 6에 따른 메모리 셀 어레이의 평면도.25B is a plan view of a memory cell array according to the sixth embodiment;

도 25c는 실시예 6에 따른 메모리 셀 어레이의 단면도.Fig. 25C is a sectional view of the memory cell array according to the sixth embodiment.

도 25d는 실시예 6에 따른 메모리 셀 어레이의 단면도.Fig. 25D is a cross sectional view of the memory cell array according to the sixth embodiment;

도 26a는 실시예 6에 따른 NAND형 메모리 셀 어레이의 레이아웃도.Fig. 26A is a layout diagram of a NAND type memory cell array according to the sixth embodiment.

도 26b는 실시예 6에 따른 NROM형 메모리 셀 어레이의 레이아웃도.Fig. 26B is a layout diagram of an NROM type memory cell array according to the sixth embodiment.

도 27은 본 발명의 실시예 7에 따른 NROM형 메모리 셀 어레이의 단면도.Fig. 27 is a sectional view of an NROM type memory cell array in accordance with a seventh embodiment of the present invention.

도 28은 실시예 7에 따른 NROM형 메모리 셀 어레이의 단면도.Fig. 28 is a sectional view of an NROM type memory cell array according to the seventh embodiment.

도 29는 실시예 1 내지 3에 따른 재배열의 일 효과 실례를 도시하는 도면.FIG. 29 shows an example of one effect of rearrangement according to Examples 1 to 3. FIG.

도 30은 실시예 8에 따른 데이터 기억 시스템의 블록도.30 is a block diagram of a data storage system according to the eighth embodiment;

도 31은 도 30 중의 제5 회로의 구성예를 도시하는 회로도.FIG. 31 is a circuit diagram illustrating a configuration example of a fifth circuit in FIG. 30.

도 32는 실시예 8에 따른 페이지 버퍼의 구성예를 도시하는 회로도.32 is a circuit diagram showing a configuration example of a page buffer according to the eighth embodiment;

도 33은 실시예 8에 따른 부호 형성의 플로우도.33 is a flowchart of code formation according to the eighth embodiment;

도 34는 실시예 8에 따른 제2 부호의 실례를 설명하기 위한 도면.Fig. 34 is a view for explaining an example of the second code according to the eighth embodiment.

도 35는 실시예 8에 따른 1워드 오류의 대응 위치를 수정하는 시퀀스도.35 is a sequence diagram for correcting a corresponding position of a one word error according to the eighth embodiment;

도 36은 실시예 8에 따른 제2 추가 부호의 일례를 설명하기 위한 도면.36 is a diagram for explaining an example of a second additional code according to the eighth embodiment;

도 37은 실시예 8에 따른 1워드 오류의 대응 위치를 수정하는 시퀀스도.37 is a sequence diagram for correcting a corresponding position of a one word error according to the eighth embodiment;

도 38은 실시예 8에 따른 2워드 오류의 대응 위치를 수정하는 시퀀스도.38 is a sequence diagram for correcting a corresponding position of a two word error according to the eighth embodiment;

도 39a의 (a0) 실시예 8에 따른 인접 메모리 디스터브 저감 부호 변환을 재귀적으로 이용하는 일례를 설명하는 도면.Fig. 39A (a0) A diagram for explaining an example of using the neighbor memory disturb reduction code conversion recursively according to the eighth embodiment.

도 39a의 (b)는 실시예 8에 따른 인접 메모리 디스터브 저감 부호 변환을 재귀적으로 이용하는 일례를 설명하는 도면.FIG. 39A (b) is a diagram for explaining an example of using the adjacent memory disturb reduction code conversion recursively according to the eighth embodiment; FIG.

도 39b의 (a)는 실시예 8에 따른 인접 메모리 디스터브 저감 부호 변환을 재귀적으로 이용하는 일례를 설명하는 도면.FIG. 39B (a) is a diagram for explaining an example of using the adjacent memory disturb reduction code conversion recursively according to the eighth embodiment; FIG.

도 39b의 (b)는 실시예 8에 따른 인접 메모리 디스터브 저감 부호 변환을 재귀적으로 이용하는 일례를 설명하는 도면.39B (b) is a diagram for explaining an example of recursively using the adjacent memory disturb reduction code conversion according to the eighth embodiment;

도 40은 실시예 8에 따른 부호 출현의 빈도의 분포를 도시하는 도면.40 is a diagram showing a distribution of frequencies of code appearances according to the eighth embodiment;

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

1: 메모리 셀 어레이1: memory cell array

2: 데이터 제어선 드라이버2: data control line driver

3: 로우 디코더3: low decoder

40: 제어 회로40: control circuit

42: 기판 전위 제어 회로42: substrate potential control circuit

41a: Vpqm 발생 회로41a: Vpqm generating circuit

41b: Vpass 발생 회로41b: Vpass generation circuit

41c: Vread 발생 회로41c: Vread generating circuit

41d: Vref 발생 회로41d: Vref generating circuit

46: 센스 앰프/데이터 레지스터46: sense amplifier / data register

47: 어드레스 버퍼47: address buffer

48: 컬럼 디코더48: column decoder

45: 데이터 입출력 버퍼45: data input / output buffer

101: 데이터 입출력 버퍼101: data input / output buffer

102: 오류 정정 부호 발생 회로102: error correction code generation circuit

104: 인접 메모리 셀 디스터브 저감 제2 부호 변환 회로104: adjacent memory cell disturbance reduced second code conversion circuit

105: 인접 메모리 셀 디스터브 저감 제2 부호 역변환 회로105: adjacent memory cell disturb reduction second code inverse conversion circuit

106: 부호 출현 확률 평균화 제1 부호화 회로106: code occurrence probability averaging first coding circuit

107: 제1 부호 복호화 회로107: first code decoding circuit

110: 평균화 비트 마스크 발생 회로110: averaging bit mask generation circuit

112: 제어 회로112: control circuit

Claims (14)

적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 포함하고, 복수의 상기 메모리 셀이 인접하여 구성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이와,A memory cell which stores at least "1" and "0" binary digital data as the charge of the charge storage layer and uses the difference between the two charge amounts of the charge storage layer as write bits and erase bits; A nonvolatile memory cell array for collectively erasing pages having adjacent cells; 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 부호를 발생하고, 상기 페이지에 기록하는 오류 정정 부호를 생성하는 오류 정정 부호 발생 회로와,An error correction code generation circuit for generating a code for correcting at least one bit of error data from the information bits, and for generating an error correction code for writing in the page; 상기 페이지에 기록된 디지털 데이터로부터, 상기 오류 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와,An error correction code decoding circuit for correcting an error from the error correction code and restoring the information bit from the digital data recorded in the page; 입력된 상기 정보 비트 또는 상기 오류 정정 부호와, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호 발생 회로에 출력하는 부호 변환 회로A code conversion circuit which takes an exclusive logical sum of the inputted information bits or the error correction code and a plurality of bits obtained by repeating an array of "write bit-erase bits" a plurality of times, and outputs them to the error correction code generation circuit. 를 포함하는 데이터 메모리 시스템.Data memory system comprising a. 제1항에 있어서,The method of claim 1, 상기 오류 정정 부호 복호 회로의 출력과, "기입 비트-소거 비트"의 배열을 복수개 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호를 복호하는 부호 역변환 회로를 더 포함하는 데이터 메모리 시스템.And a code inverse conversion circuit that decodes the error correction code by taking an exclusive OR of the output of the error correction code decoding circuit and a plurality of bits in which a plurality of arrays of "write bit-erase bits" are repeated. 제1항에 있어서,The method of claim 1, 입력한 일련의 정보 비트 또는 입력한 상기 오류 정정 부호를, 짝수번째의 비트와 홀수번째의 비트로 분리하고, 각각을 모으는 것에 의한 재배열을 행한 후에, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제1 카운터 회로를 더 포함하는 데이터 메모리 시스템.A continuous bit array of write bits / erase bits / write bits after separating a series of information bits input or the error correction code input into even and odd bits, and rearranging them by collecting them. And a first counter circuit for detecting the number of digits. 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 포함하고, 복수의 상기 메모리 셀이 인접하여 구성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이와,A memory cell which stores at least "1" and "0" binary digital data as the charge of the charge storage layer and uses the difference between the two charge amounts of the charge storage layer as write bits and erase bits; A nonvolatile memory cell array for collectively erasing pages having adjacent cells; 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 부호를 발생하고, 상기 페이지에 기록하는 오류 정정 부호를 생성하는 오류 정정 부호 발생 회로와,An error correction code generation circuit for generating a code for correcting at least one bit of error data from the information bits, and for generating an error correction code for writing in the page; 상기 페이지에 기록된 디지털 데이터로부터, 상기 오류 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와,An error correction code decoding circuit for correcting an error from the error correction code and restoring the information bit from the digital data recorded in the page; 입력한 상기 정보 비트 또는 상기 오류 정정 부호의, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제1 카운터 회로와,A first counter circuit for detecting the number of consecutive bit arrays of write bits / erase bits / write bits of the inputted information bits or the error correction code; 입력한 상기 정보 비트 또는 상기 오류 정정 부호와, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제2 카운터 회로와,The number of consecutive bit arrays of write bits / erase bits / write bits is detected by taking an exclusive OR of a plurality of bits obtained by repeating the inputted information bits or the error correction code and the array of " write bit-erase bits " a plurality of times. The second counter circuit 상기 제1 카운터 회로의 출력의 배열의 수보다도 상기 제2 카운터 회로의 출 력의 배열의 수가 적은 경우, 선택적으로, 입력한 상기 정보 비트 또는 상기 오류 정정 부호와, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호 발생 회로에 출력하는 부호 변환 회로When the number of output arrays of the second counter circuit is smaller than the number of arrays of outputs of the first counter circuit, optionally, the input bits of the information bit or the error correction code and the " write bit-erase bits " A code conversion circuit which takes an exclusive OR of a plurality of bits obtained by repeating the array a plurality of times and outputs the result to the error correction code generation circuit. 를 포함하는 데이터 메모리 시스템.Data memory system comprising a. 제4항에 있어서,The method of claim 4, wherein 상기 오류 정정 부호 복호 회로의 출력과, "기입 비트-소거 비트"의 배열을 복수개 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호를 복호하는 부호 역변환 회로를 더 포함하는 데이터 메모리 시스템.And a code inverse conversion circuit that decodes the error correction code by taking an exclusive OR of the output of the error correction code decoding circuit and a plurality of bits in which a plurality of arrays of "write bit-erase bits" are repeated. 제4항에 있어서,The method of claim 4, wherein 상기 기입 비트/소거 비트/기입 비트의 정보 비트의 배열은, 물리적으로 인접하는 3개의 상기 메모리 셀에 대응하는 데이터 메모리 시스템.And an array of information bits of the write bit / erase bit / write bit correspond to the three physically adjacent memory cells. 제4항에 있어서,The method of claim 4, wherein 기입을 행하는 제1 페이지에, 물리적으로 인접한 제2 페이지의 정보 비트 또는 물리적으로 인접한 상기 제2 페이지의 오류 정정 부호의 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출하고, 상기 제2 페이지의 정보 비트 또는 상기 제2 페이지의 오류 정정 부호의 상기 배열의 소거 비트의 위치에 인접한 상기 제1 페이지의 비트의 상태의 기입 비트의 수와 소거 비트의 수를 각각 검출하는 제3 카 운터 회로와,Detecting a contiguous bit array of write bits / erase bits / write bits of an information bit of a second physically contiguous page or an error correction code of the second physically contiguous page on the first page to write; A third counter circuit for respectively detecting the number of write bits and the number of erase bits in the state of the bits of the first page adjacent to the position of the erase bits of the array of the information bits of the second page or the error correction code of the second page; , 상기 제3 카운터 회로의 출력의 배열의 수에 의해, 선택적으로, 입력한 상기 정보 비트 또는 입력한 상기 오류 정정 부호를 반전시켜, 상기 부호 변환 회로에 출력하는 제4 회로를 더 포함하는 데이터 메모리 시스템.And a fourth circuit for selectively inverting the inputted information bit or the inputted error correction code and outputting the inputted data to the code conversion circuit by the number of arrangements of the outputs of the third counter circuit. . 제7항에 있어서,The method of claim 7, wherein 기입을 행하는 제1 페이지에, 물리적으로 인접한 제2 페이지의 정보 비트 또는 물리적으로 인접한 상기 제2 페이지의 오류 정정 부호의, 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출하고, 상기 제2 페이지의 정보 비트 또는 상기 제2 페이지의 오류 정정 부호의, 상기 배열의 소거 비트의 위치에 인접한 상기 제1 페이지의 비트의 상태의 제1 기입 비트의 수, 및 입력한 상기 정보 비트 또는 입력한 상기 오류 정정 부호 비트의, 적어도 1비트 순회 시프트한 인접한 상기 제1 페이지의 비트의 상태의, 제2 기입 비트의 수를 각각 검출하는 제5 카운터 회로와,Detecting a contiguous bit array of write bits / erase bits / write bits of an information bit of a second physically contiguous page or an error correction code of the second physically contiguous page in the first page to write to, and The number of first write bits in the state of the bits of the first page adjacent to the position of the erase bits of the array, the information bits of the page or the error correction code of the second page, and the information bits entered or the inputted A fifth counter circuit each detecting a number of second write bits in an error correcting code bit in a state of at least one bit cyclically shifted adjacent first page bit; 상기 제5 카운터 회로의 출력의 배열의, 제2 기입 비트의 수가 제1 기입 비트의 수 이하 또는 더 적은 경우에, 선택적으로, 입력한 상기 정보 비트 또는 입력한 상기 오류 정정 부호를, 순회 시프트시켜, 상기 부호 변환 회로에 출력하는 제6 회로를 더 포함하는 데이터 메모리 시스템.Selectively shifting the input information bit or the input error correction code if the number of second write bits is less than or less than the number of first write bits in the arrangement of the outputs of the fifth counter circuit. And a sixth circuit output to the code conversion circuit. 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 포함하고, 복수의 상기 메모리 셀이 인접하여 형성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이와,A memory cell which stores at least "1" and "0" binary digital data as the charge of the charge storage layer and uses the difference between the two charge amounts of the charge storage layer as write bits and erase bits; A nonvolatile memory cell array for collectively erasing pages in which cells are formed adjacent to each other; 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 정정 부호를 발생하는 오류 정정 부호 발생 회로와,An error correction code generation circuit for generating a correction code for correcting at least one bit of error data from the information bits; 상기 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와,An error correction code decoding circuit for correcting an error from the correction code to restore the information bits; 입력된 상기 정보 비트에 상기 오류 정정 부호 발생 회로로부터 입력한 상기 정정 부호를 부가한 오류 정정 부호와, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 페이지에 기록하는 데이터를 생성하는 부호 변환 회로와, An exclusive logical sum of an error correction code obtained by adding the correction code input from the error correction code generation circuit to the input information bit, and a plurality of bits obtained by repeating an array of " write bit-erase bits " A code conversion circuit for generating data to be written to 상기 오류 정정 부호 복호 회로의 출력과, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호를 복호하는 부호 역변환 회로A code inverse transform circuit that decodes the error correction code by taking an exclusive logical sum of the output of the error correction code decoding circuit and a plurality of bits obtained by repeating an array of "write bit-erase bits" a plurality of times. 를 포함하는 데이터 메모리 시스템.Data memory system comprising a. 제9항에 있어서,10. The method of claim 9, 입력한 일련의 정보 비트 또는 입력한 상기 오류 정정 부호를, 짝수번째의 비트와 홀수번째의 비트로 분리하고, 각각을 모으는 것에 의한 재배열을 행한 후에, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제1 카운터 회로를 더 포함하는 데이터 메모리 시스템.A continuous bit array of write bits / erase bits / write bits after separating a series of information bits input or the error correction code input into even and odd bits, and rearranging them by collecting them. And a first counter circuit for detecting the number of digits. 적어도 "1"과 "0"의 2치의 디지털 데이터를 전하 축적층의 전하로서 기억하고 상기 전하 축적층의 2개의 전하량의 차를 기입 비트 및 소거 비트로서 이용하는 메모리 셀을 포함하고, 복수의 상기 메모리 셀이 인접하여 형성되는 페이지를 일괄 소거하는 불휘발성 메모리 셀 어레이와,A memory cell which stores at least "1" and "0" binary digital data as the charge of the charge storage layer and uses the difference between the two charge amounts of the charge storage layer as write bits and erase bits; A nonvolatile memory cell array for collectively erasing pages in which cells are formed adjacent to each other; 정보 비트로부터 적어도 1비트의 오류 데이터를 정정하는 정정 부호를 발생하는 오류 정정 부호 발생 회로와,An error correction code generation circuit for generating a correction code for correcting at least one bit of error data from the information bits; 상기 정정 부호로부터 오류를 정정하여 상기 정보 비트를 복원하는 오류 정정 부호 복호 회로와,An error correction code decoding circuit for correcting an error from the correction code to restore the information bits; 입력된 상기 정보 비트에 상기 오류 정정 부호 발생 회로로부터 입력한 상기 정정 부호를 부가한 오류 정정 부호와, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 페이지에 기록하는 데이터를 생성하는 부호 변환 회로와,An exclusive logical sum of an error correction code obtained by adding the correction code input from the error correction code generation circuit to the input information bit, and a plurality of bits obtained by repeating an array of " write bit-erase bits " A code conversion circuit for generating data to be written to 상기 페이지에 기록된 디지털 데이터를 입력하고, "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 오류 정정 부호를 복호하는 부호 역변환 회로A code inverse conversion circuit which inputs the digital data recorded in the page, takes an exclusive OR of a plurality of bits obtained by repeating an array of "write bit-erase bits" a plurality of times, and decodes the error correction code. 를 포함하고,Including, 상기 부호 변환 회로는, The code conversion circuit, 입력한 상기 오류 정정 부호의 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제1 카운터 회로와, A first counter circuit for detecting the number of consecutive bit arrays of the write bit / erase bit / write bit of the error correcting code input; 입력한 상기 오류 정정 부호와 "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 기입 비트/소거 비트/기입 비트의 연속 비트 배열의 수를 검출하는 제2 카운터 회로를 포함하며, A second counter circuit which takes an exclusive logical sum of a plurality of bits obtained by repeating the inputted error correction code and the array of " write bit-erase bits " a plurality of times, and detects the number of consecutive bit arrays of write bits / erase bits / write bits. Including; 상기 제1 카운터 회로의 출력의 배열의 수보다도 상기 제2 카운터 회로의 출력의 배열의 수가 적은 경우, 선택적으로 입력한 상기 오류 정정 부호와 "기입 비트-소거 비트"의 배열을 복수회 반복한 복수 비트의 배타적 논리합을 취하여, 상기 페이지에 기록하는 데이터 메모리 시스템.When the number of the arrangements of the outputs of the second counter circuit is smaller than the number of the arrangements of the outputs of the first counter circuit, a plurality of times of repeatedly repeating the input of the error correction code and the " write bit-erase bits " A data memory system that takes an exclusive OR of bits and writes to the page. 제11항에 있어서,The method of claim 11, 상기 기입 비트/소거 비트/기입 비트의 정보 비트의 배열은, 물리적으로 인접하는 3개의 상기 메모리 셀에 대응하는 데이터 메모리 시스템.And an array of information bits of the write bit / erase bit / write bit correspond to the three physically adjacent memory cells. 제11항에 있어서,The method of claim 11, 기입을 행하는 제1 페이지에, 물리적으로 인접한 제2 페이지의 정보 비트 또는 물리적으로 인접한 상기 제2 페이지의 오류 정정 부호의, 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출하고, 상기 제2 페이지의 정보 비트 또는 상기 제2 페이지의 오류 정정 부호의, 상기 배열의 소거 비트의 위치에 인접한 상기 제1 페이지의 비트의 상태의 기입 비트의 수와 소거 비트의 수를 각각 검출하는 제3 카운터 회로와,Detecting a contiguous bit array of write bits / erase bits / write bits of an information bit of a second physically contiguous page or an error correction code of the second physically contiguous page in the first page to write to, and A third counter circuit for detecting the number of write bits and the number of erase bits in the state of the bits of the first page adjacent to the position of the erase bits of the array, either the information bits of the page or the error correction code of the second page; Wow, 상기 제3 카운터 회로의 출력의, 기입 비트의 수가 소거 비트의 수 이하 또 는 적은 경우에, 선택적으로, 입력한 상기 정보 비트 또는 입력한 상기 오류 정정 부호를 반전시켜, 상기 부호 변환 회로에 출력하는 제4 회로를 더 포함하는 데이터 메모리 시스템.When the number of write bits of the output of the third counter circuit is less than or less than the number of erase bits, optionally, the inputted information bit or the input error correction code is inverted and outputted to the code conversion circuit. And a fourth circuit. 제13항에 있어서,The method of claim 13, 기입을 행하는 제1 페이지에, 물리적으로 인접한 제2 페이지의 정보 비트 또는 물리적으로 인접한 상기 제2 페이지의 오류 정정 부호의, 기입 비트/소거 비트/기입 비트의 연속 비트 배열을 검출하고, 상기 제2 페이지의 정보 비트 또는 상기 제2 페이지의 오류 정정 부호의, 상기 배열의 소거 비트의 위치에 인접한 상기 제1 페이지의 비트의 상태의 제1 기입 비트의 수 및 입력한 상기 정보 비트 또는 입력한 상기 오류 정정 부호 비트의, 적어도 1비트 순회 시프트한 인접한 상기 제1 페이지의 비트의 상태의, 제2 기입 비트의 수를 각각 검출하는 제5 카운터 회로와,Detecting a contiguous bit array of write bits / erase bits / write bits of an information bit of a second physically contiguous page or an error correction code of the second physically contiguous page in the first page to write to, and The number of first write bits in the state of the bits of the first page adjacent to the position of the erase bits of the array, the information bits of the page or the error correction code of the second page, and the information bits entered or the errors entered A fifth counter circuit for respectively detecting the number of second write bits in the state of the bits of the adjacent first page shifted by at least one bit in a corrected code bit; 상기 제5 카운터 회로의 출력의 배열의 수에 의해, 제2 기입 비트의 수가 제1 기입 비트의 수 이하 또는 더 적은 경우에, 입력한 상기 정보 비트 또는 입력한 상기 오류 정정 부호를 순회 시프트시켜, 상기 부호 변환 회로에 출력하는 제6 회로를 더 포함하는 데이터 메모리 시스템.By the number of the arrangement of the outputs of the fifth counter circuit, when the number of the second write bits is less than or less than the number of the first write bits, the input information bits or the input error correction code are shifted in a circular manner, And a sixth circuit output to the code conversion circuit.
KR1020090012026A 2008-02-15 2009-02-13 Data memory system KR101015342B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2008-035269 2008-02-15
JP2008035269 2008-02-15

Publications (2)

Publication Number Publication Date
KR20090088824A KR20090088824A (en) 2009-08-20
KR101015342B1 true KR101015342B1 (en) 2011-02-16

Family

ID=41207334

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090012026A KR101015342B1 (en) 2008-02-15 2009-02-13 Data memory system

Country Status (1)

Country Link
KR (1) KR101015342B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060025601A (en) * 2002-06-20 2006-03-21 가부시끼가이샤 도시바 Nonvolatile semiconductor memory device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060025601A (en) * 2002-06-20 2006-03-21 가부시끼가이샤 도시바 Nonvolatile semiconductor memory device

Also Published As

Publication number Publication date
KR20090088824A (en) 2009-08-20

Similar Documents

Publication Publication Date Title
JP5214422B2 (en) Data storage system
KR100676787B1 (en) Data storage system
KR100630996B1 (en) Data memory system
US7840875B2 (en) Convolutional coding methods for nonvolatile memory
KR100616391B1 (en) Semiconductor memory device
US8117521B2 (en) Implementation of recycling unused ECC parity bits during flash memory programming
CN111081712B (en) Semiconductor device and semiconductor memory device
TWI625728B (en) Selection of data for redundancy calculation in three dimensional nonvolatile memory
US20070266296A1 (en) Nonvolatile Memory with Convolutional Coding
US7859898B2 (en) Nonvolatile semiconductor memory device including NAND-type flash memory and the like
KR101110191B1 (en) Deep wordline trench to shield cross coupling between adjacent cells for scaled nand
JP4686520B2 (en) Data storage system
KR101015342B1 (en) Data memory system
JP5121874B2 (en) Data storage system setting method
KR100912151B1 (en) Semiconductor integrated circuit device and operation method thereof
TWI828184B (en) Semiconductor memory device and memory cell array control method
US11990417B2 (en) Semiconductor memory device with different fluorine concentrations in sub conductive layers
CN113497052A (en) Semiconductor memory device and method for manufacturing semiconductor memory device
JP2007257829A (en) Semiconductor device and operation method thereof

Legal Events

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

Payment date: 20140120

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150120

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160106

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee