摘要 |
A method for performing error correction on data read from a multistate memory array, by encoding data read from each memory element of the array, detecting an error in the encoded data from one memory element, and correcting the error by changing X bits of the encoded data (preferably X=1), and a multistate memory system for performing the method. Preferably the system is a circuit in which each memory element is a flash memory cell. The invention enables implementation of error detection and correction while requiring storage of fewer ECC check bits (with the data of interest) than the number of ECC check bits that would need to be stored in accordance with the prior art. In accordance with the invention, a data bit is read from each memory cell by asserting a signal having a signal value in a value range, where the value range is a member of a sequence of non-overlapping value subranges LiHi, where N is the number of states of each memory element, and N is equal to at least 3, and the value subranges are determined by values Li and Hi satisfying L1<H1<L2<H2< . . . <LN<HN. Each value subrange LiHi includes values xi, where Li<xi<Hi. For each bit (identified by subrange LiHi) read from a memory cell, an encoded data signal Ei is generated. Each encoded signal Ei is indicative of an ordered set of bits (preferably binary bits). Encoded signal Em is not identical to encoded signal En where "m" and "n" are different integers in the range from 1 through N. For each pair of encoded signals Ej-1 and Ej (where j is an integer in the range from 2 to N) indicative respectively of first and second ordered sets of bits, the second ordered set is generated by changing X bits (preferably, X=1) of the first ordered set. |