Abstract:
A nonvolatile memory array includes first and second blocks of three-state memory cells therein. These first and second blocks are configured to operate individually as first and second blocks of physical memory cells, respectively, and collectively as an additional block of virtual memory cells. The first and second blocks of memory cells and the additional block of virtual memory cells may be read independently to provide a total of three blocks of read data.

Description:
CROSS-REFERENCE TO PRIORITY APPLICATION AND RELATED APPLICATIONS 
       [0001]    This application is a divisional of U.S. application Ser. No. 12/119,608, filed May 13, 2008, which is a divisional of U.S. application Ser. No. 11/358,648, filed Feb. 21, 2006, which claims priority to Korean Application No. 2005-34825, filed Apr. 27, 2005. The disclosure of U.S. application Ser. Nos. 11/358,648 and 12/119,608 are hereby incorporated herein by reference. 
     
    
     FIELD 
       [0002]    The present invention relates to integrated circuit memory devices and, more particularly, to nonvolatile memory devices and methods of programming nonvolatile memory devices. 
       BACKGROUND 
       [0003]    One class of nonvolatile memory devices includes electrically erasable programmable read only memory (EEPROM), which may be used in many applications including embedded applications and mass storage applications. In typical embedded applications, an EEPROM device may be used to provide code storage in personal computers or mobile phones, for example, where fast random access read times may be required. Typical mass storage applications include memory card applications requiring high capacity and low cost. 
         [0004]    One category of EEPROM devices includes NAND-type flash memories, which can provide a low cost and high capacity alternative to other forms of nonvolatile memory.  FIG. 1A  illustrates a conventional flash memory array  10  having a plurality of NAND-type strings therein. Each of these NAND-type strings includes a plurality of EEPROM cells, which are associated with respective even and odd bit lines (BL 0 _e, BL 0 _o . . . , BLn_e, BLn_o). These bit lines are connected to a page buffer  12  having a plurality of buffer circuits (PB 0 , . . . , PBn) therein. Each EEPROM cell includes a floating gate electrode and a control gate electrode, which is electrically connected to a respective word line (WL 0 , WL 1 , . . . , WLn). Access to each NAND string is enabled by driving a string select line (SSL) to a logic 1 voltage during reading and programming operations. Each NAND string also includes a respective ground select transistor, which is electrically connected to a ground select line (GSL). 
         [0005]    As illustrated by  FIG. 1B , the EEPROM cells within the flash memory array  10  of  FIG. 1A  may be cells that support a single programmed state. EEPROM cells that support only a single programmed state are typically referred to as single level cells (SLC). In particular, an SLC may support an erased state, which may be treated as a logic 1 storage value, and a programmed state, which may be treated as a logic 0 storage value. The SLC may have a negative threshold voltage (Vth) when erased (e.g., −3V&lt;Vth&lt;−1V) and a positive threshold voltage when programmed (e.g., 1V&lt;Vth&lt;3V). This programmed state may be achieved by setting the bit line BL to a logic 0 value (e.g., 0 Volts), applying a program voltage (Vpgm) to a selected EEPROM cell and applying a pass voltage (Vpass) to the unselected EEPROM cells within a string, as illustrated by  FIG. 1C . In addition, during programming the NAND string may be enabled by applying a positive voltage (e.g., power supply voltage Vdd) to the string select line (SSL) and a ground voltage (e.g., 0 Volts) to the ground select line (GSL). 
         [0006]    Moreover, the programmed state or erased state of an EEPROM cell may be detected by performing a read operation on a selected cell. As illustrated by  FIG. 1D , a NAND string will operate to discharge a precharged bit line BL when a selected cell is in an erased state and the selected word line voltage (e.g., 0 Volts) is greater than the threshold voltage of the selected cell. However, when a selected cell is in a programmed state, the corresponding NAND string will provide an open circuit to the precharged bit line BL because the selected word line voltage (e.g., 0 Volts) is less than the threshold voltage of the selected cell and the selected cell remains “off”. Other aspects of NAND-type flash memories are disclosed in an article by Jung et al., entitled “A 3.3 Volt Single Power Supply 16-Mb Nonvolatile Virtual DRAM Using a NAND Flash Memory Technology,” IEEE Journal of Solid-State Circuits, Vol. 32, No. 11, pp. 1748-1757, November (1997), the disclosure of which is hereby incorporated herein by reference. 
         [0007]    EEPROM cells that support multiple programmed states are typically referred to as multi-level cells (MLC). As illustrated by  FIG. 2 , an MLC that supports an erased state and three different programmed states operates to store two data bits per cell. These and other aspects of an MLC having two data bits per cell is disclosed in an article by Takeuchi et al., entitled “A Multipage Cell Architecture for High-Speed Programming Multilevel NAND Flash Memories,” IEEE Journal of Solid-State Circuits, Vol. 33, No. 8, pp. 1228-1238, August (1998). Commonly assigned U.S. Pat. Nos. 5,862,074 and 5,768,188 also disclose aspects of multi-level EEPROM cells arranged in a NAND-type configuration, the disclosures of which are hereby incorporated herein by reference. 
         [0008]      FIGS. 3A-3B  illustrate how a pair of three-state EEPROM cells may support 3-bit programming. In  FIG. 3A , an MLC is illustrated as supporting an erased state and two possible programmed states. As will be understood by those skilled in the art, the erased state may be distinguished from the two possible programmed states by applying a first reference voltage VR 1  to a control electrode of a selected EEPROM cell during a read operation. This first reference voltage VR 1  should be set to a level between the maximum acceptable threshold voltage of an erased cell (shown as V 0 ) and the minimum acceptable threshold voltage of a cell programmed to state  1  (shown as V 1 ). Similarly, the second programmed state (state  2 ) may be distinguished from the erased and first programmed states by applying a second reference voltage VR 2  to a selected EEPROM cell during a read operation. This second reference voltage VR 2  should be set to a level between the maximum acceptable threshold voltage of a cell programmed to state  1  and the minimum acceptable threshold voltage of a cell programmed to state  2  (shown as V 2 ). As illustrated by  FIG. 3B , two adjacent three-level EEPROM cells in the same physical row of memory may be programmed into one of eight possible states ((111), (110), (001), (000)) to support 3-bits of data per cell pair. Additional aspects of three-state EEPROM cells are disclosed in an article by Tanaka et al., entitled “A 3.4-Mbyte/sec Programming 3-Level NAND Flash Memory Saving 40% Die Size Per Bit,” 1997 Symposium on VLSI Circuits Digest of Technical Papers, Section 9.3, pp. 65-66 (1997). Unfortunately, the use of 3-state EEPROM cells in the pair configuration of  FIG. 3B  may require the use of complex error detection and correction circuitry because any single cell failure will typically result in a corresponding 3-bit data error for both cells in the corresponding pair. 
       SUMMARY 
       [0009]    Embodiments of the invention include nonvolatile memory devices that support virtual page storage using odd-state memory cells and methods of programming nonvolatile memory devices. In some of these embodiments, an integrated circuit device is provided with a nonvolatile memory array therein. This memory array includes at least two nonvolatile odd-state memory cells that operate individually as respective physical memory cells and collectively as a single virtual memory cell. The memory array is further configured so that programming of the virtual memory cell is verified at only a single reference voltage for all values of data contained in the virtual memory cell. The memory array may also be configured as a flash memory array and reading of the virtual memory cell may occur by evaluating whether any of the physical memory cells associated with the virtual memory cell are programmed to a threshold voltage in excess of the single reference voltage. 
         [0010]    Additional embodiments of the invention include a flash memory array having at least first and second blocks of three-state memory cells therein. Each of these blocks of memory cells may contain multiple pages of memory cells. These first and second blocks of three-state memory cells operate individually as first and second blocks of physical memory cells, respectively, and collectively as a block of virtual memory cells. The first block of memory cells may include a plurality of NAND strings of EEPROM cells. In some embodiments, each of the plurality of NAND strings of EEPROM cells includes at least one SLC EEPROM cell that does not support virtual cell programming. 
         [0011]    Still further embodiments of the invention include methods of operating flash memory devices. These methods include programming a NAND-type EEPROM array with a third page of data by initially reading first and second pages of data from the NAND-type EEPROM array and then overwriting the first and second pages of data with modified data. This overwriting operation encodes three pages of data into two pages of EEPROM cells in the NAND-type EEPROM array. 
         [0012]    Additional operating methods include encoding a third page of flash memory data into first and second pages of flash memory data to thereby generate first and second pages of encoded flash memory data. A first page of flash memory cells in a flash memory device is then programmed with the first page of encoded flash memory data. A second page of flash memory cells in the flash memory device is also programmed with the second page of encoded flash memory data. A third page of flash memory data may then be generated in response reading the first and second pages of encoded flash memory data from the first and second pages of flash memory cells, respectively. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]      FIG. 1A  is an electrical schematic of a conventional nonvolatile memory device having NAND-type strings of EEPROM cells therein. 
           [0014]      FIG. 1B  is a graph illustrating the relative threshold voltages of an erased and programmed EEPROM cell, according to the prior art. 
           [0015]      FIG. 1C  is an electrical schematic of a NAND-type string of EEPROM cells showing programming bias conditions. 
           [0016]      FIG. 1D  illustrates current flow in a NAND-type string during operations to read data from an erased EEPROM cell and a programmed EEPROM cell according to the prior art. 
           [0017]      FIG. 2  is a graph illustrating the relative threshold voltages of a four-state EEPROM cell according to the prior art. 
           [0018]      FIG. 3A  is a graph illustrating the relative threshold voltages of a three-state EEPROM cell according to the prior art. 
           [0019]      FIG. 3B  illustrates the threshold voltage distributions of two adjacent three-state EEPROM cells that support 3-bit data when paired together in the same row of memory. 
           [0020]      FIG. 4A  is an electrical schematic of upper and lower NAND-type strings of EEPROM cells that support virtual page programming according to embodiments of the present invention. 
           [0021]      FIG. 4B  is an electrical schematic of a NAND-type EEPROM device according to embodiments of the present invention. 
           [0022]      FIG. 4C  is a diagram that illustrates operations to program three-state EEPROM cells, according to embodiments of the present invention. 
           [0023]      FIG. 4D  is a diagram that illustrates operations to program three-state EEPROM cells, according to embodiments of the present invention. 
           [0024]      FIG. 4E  is a flow diagram that illustrates operations to program “virtual” pages of EEPROM cells, according to embodiments of the present invention. 
           [0025]      FIG. 5A  illustrates operations to program a virtual EEPROM cell, according to embodiments of the present invention. 
           [0026]      FIG. 5B  is a flow diagram illustrating operations to read data from three-state EEPROM cells, according to embodiments of the present invention. 
           [0027]      FIG. 5C  is a flow diagram illustrating operations to read data from three-state EEPROM cells, according to embodiments of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
       [0028]    The present invention now will be described more fully herein with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like reference numerals refer to like elements throughout and signal lines and signals thereon may be referred to by the same reference characters. Signals may also be synchronized and/or undergo minor boolean operations (e.g., inversion) without being considered different signals. 
         [0029]    Referring now to  FIG. 4A , a single column  40   a  of EEPROM cells is illustrated as including a pair of NAND-type strings. This pair of NAN D-type strings includes an upper NAND-type string, which may belong to an upper block of EEPROM cells, which includes multiple pages of cells, and a lower NAND-type string, which may belong to a lower block of EEPROM cells, which includes multiple pages of cells. The upper and lower NAND-type strings are tied to a common source line CSL. The upper NAND-type string includes an NMOS transistor having a gate terminal connected to an upper string select line SSLU and an NMOS transistor having a gate terminal connected to an upper ground select line GSLU. The upper NAND-type string also includes a plurality of three-state EEPROM cells. These three-state EEPROM cells have control gates connected to respective word lines, which are associated with a plurality of pages of nonvolatile memory: PAGE  1 , PAGE  3 , . . . , PAGE  39 . A pair of SLC EEPROM cells associated with PAGES  41  and  43  are also provided. These SLC EEPROM cells may be outside the address space of virtual page programming and reading operations. Likewise, the lower NAND-type string includes an NMOS transistor having a gate terminal connected to a lower string select line SSLL and an NMOS transistor having a gate terminal connected to an lower ground select line GSLL. The lower NAND-type string also includes a plurality of three-state EEPROM cells. These three-state EEPROM cells have control gates connected to respective word lines, which are associated with a plurality of pages of nonvolatile memory: PAGE  0 , PAGE  2 , . . . , PAGE  38 . A pair of SLC EEPROM cells associated with PAGES  40  and  42  are also provided. As described more fully hereinbelow with respect to  FIGS. 4B-4E  and  5 A- 5 C, the EEPROM cells associated with the pages PAGE  0 , PAGE  2 , . . . , PAGE  38  of a lower block of memory and the EEPROM cells associated with the pages PAGE  1 , PAGE  3 , . . . , PAGE  39  of an upper block of memory may collectively form a plurality of “virtual” pages of nonvolatile memory. These “virtual” pages are illustrated as VPAGE 44 , VPAGE  45 , . . . , VPAGE 63 . Accordingly, the column  40   a  of EEPROM cells is illustrated as supporting one column of a 64 page nonvolatile memory. Embodiments of the present invention are not limited to any particular capacity of memory, page width or NAND string length. 
         [0030]      FIG. 4B  illustrates an EEPROM device  40   b  according to embodiments of the present invention. The EEPROM device  40   b  includes a nonvolatile memory array with upper and lower memory blocks, a page buffer and data input/output circuit. In particular, the EEPROM device  40   b  is illustrated as an eight column device that supports  2 N “physical” pages (e.g., rows) of nonvolatile memory and N “virtual” pages of nonvolatile memory, but only incurs the memory array layout footprint (i.e., area penalty) of a conventional nonvolatile memory supporting  2 N pages of SLC EEPROM cells. 
         [0031]      FIG. 4C  illustrates operations to program a corresponding pair of three-state EEPROM cells in a sequential manner, with the upper cell within the pair being programmed before the lower cell within the pair. This program order may be reversed. For purposes of illustration herein, the upper cell may be the EEPROM cell associated with word line WLU&lt;0&gt; and bit line BL&lt;0&gt; in  FIG. 4B  and the lower cell may be the EEPROM cell associated with word line WLL&lt;0&gt; and bit line BL&lt;0&gt; in  FIG. 4B . As illustrated by  FIG. 4C , the programming of two bits of “physical” data as 1/1 does not involve any change in the threshold voltages of the upper and lower cells within the pair. Thus, the threshold voltages of the upper and lower cells within the pair remain at their original “erased” levels (i.e., Vth&lt;VR 1 , where VR 1  is a first reference voltage). The programming of two bits of “physical” data as I/O does not involve any change in the threshold voltage of the upper cell, but causes the threshold voltage of the lower cell to be increased to a level between VR 1  and VR 2 . Similarly, the programming of two bits of “physical” data as 0/1 causes the threshold voltage of the upper cell to be increased to a level between VR 1  and VR 2 , but does not involve any change in the threshold voltage of the lower cell. Finally, the programming of two bits of “physical” data as 0/0 causes the threshold voltages of the upper and lower cells to be increased to a level between VR 1  and VR 2 , as illustrated. The programming and reading operations for the upper cell are independent from that of the lower cell and vice versa. 
         [0032]      FIG. 4D  illustrates operations to program a corresponding pair of three-state EEPROM cells with a third bit of “virtual” data, after the pair has been programmed with two bits of “physical” data in accordance with  FIG. 4C . These program operations include cases (a)-(h). In case (a), the “virtual” program operation does not require any change in the threshold voltages of the pair of cells to achieve 3-bit data as 1/1/1. In case (b), which is a special case (S), the “virtual” program operation requires increasing the threshold voltages of both upper and lower cells in the pair to levels in excess of VR 2  (i.e., Vth&gt;VR 2 , where VR 2  is a second reference voltage), to achieve 3-bit data as 1/1/0. In case (c), the “virtual” program operation does not require any additional change in the threshold voltages of the pair of cells to achieve 3-bit data as 1/0/1. In case (d), the “virtual” program operation requires increasing the threshold voltages of the lower cell in the pair to a level in excess of VR 2  to achieve 3-bit data as 1/0/0. In case (e), the “virtual” program operation does not require any additional change in the threshold voltages of the pair of cells to achieve 3-bit data as 0/1/1. In case (f), the “virtual” program operation requires increasing the threshold voltage of the upper cell in the pair to a level in excess of VR 2  to achieve 3-bit data as 0/1/0. In case (g), the “virtual” program operation does not require any additional change in the threshold voltages of the pair of cells to achieve 3-bit data as 0/0/1. Finally, in case (h), the “virtual” program operation requires increasing the threshold voltage of the upper cell in the pair to a level in excess of VR 2  to achieve 3-bit data as 0/0/0. 
         [0033]    In particular, each virtual page program operation includes a plurality of read operations from corresponding upper and lower physical pages within a multi-page memory array having upper and lower blocks. As illustrated by Block  102 , EEPROM cells in an upper page of the memory array can be read using a normal SLC read operation. This SLC read operation includes setting a selected word line in an upper block of the memory array to the first reference voltage VR 1 . This upper page of read data is identified by the reference character A 1 . Thereafter, a corresponding lower page of data can be read using a normal SLC read operation, Block  104 . This SLC read operation includes setting a selected word line in a lower block of the memory array to the first reference voltage VR 1 . This lower page of read data is identified by the reference character A 2 . 
         [0034]    A virtual page of data, referred to herein as a third page of data A 3 , is then programmed into a “virtual” page of the memory array by encoding both the upper page of “physical” data A 1  and the lower page of “physical” data A 2  with this third page of data A 3 . These encoding operations result in the generation of “encoded” upper cell data A 1 * and “encoded” lower cell data A 2 *. As illustrated by  FIG. 5B , these encoding operations are non-destructive, which means that A 1  can be decoded directly from A 1 * and A 2  can be decoded directly from A 2 *. These encoding operations may be illustrated more fully by reference to  FIGS. 4D and 5A , for an example case where a first page of data, A 1 &lt;7:0&gt;, equals &lt;10110001&gt;, a second page of data, A 2 &lt;7:0&gt;, equals &lt;01110110&gt; and a third page of data, A 3 &lt;7:0&gt;, equals &lt;10001010&gt;: 
         [0000]                                            A1&lt;7:0&gt; = &lt;10110001&gt;;           A2&lt;7:0&gt; = &lt;01110110&gt;; and           A3&lt;7:0&gt; = &lt;10001010&gt;             ♯22  (ENCODE)           A1*&lt;7:0&gt; = &lt;10 P SS00 P 01&gt;; and           A2*&lt;7:0&gt; = &lt;01SS0110 P &gt;.                        
In this example, the superscript “P” in A 1 *&lt;7:0&gt; and A 2 *&lt;7:0&gt; designates further programming to raise a threshold voltage above VR 2  and “S” designates the special case (b) illustrated by  FIG. 4D  where both lower and upper cells within a pair are further programmed to have threshold voltages in excess of VR 2 . Thus, among other things, the above example illustrates that one pair of EEPROM cells in column six (6) of the EEPROM device  40   b  is programmed to support 3-bits of data as 0/1/0 (i.e., A 1 &lt;6&gt;=0, A 2 &lt;6&gt;=1 and A 3 &lt;6&gt;=0), which corresponds to case (f) in  FIG. 4D . Another pair of EEPROM cells in column zero (0) of the EEPROM device  40   b  is programmed to support 3-bits of data as 1/0/0 (i.e., A 1 &lt;0&gt;=1, A 2 &lt;0&gt;=0 and A 3 &lt;0&gt;=0), which corresponds to case (d) in  FIG. 4D .
 
         [0035]    Referring again to  FIG. 4E  and also  FIG. 5A , once the encoded data A 1 * and A 2 * is generated in response to reading from the upper and lower pages of data A 1  and A 2 , Blocks  102 - 104 , the corresponding upper page of EEPROM cells associated with A 1  is programmed with the encoded data A 1 * and then verified at the second reference voltage VR 2 , Blocks  106  and  108 . Thereafter, the corresponding lower page of EEPROM cells associated with A 2  is programmed with the encoded data A 2 * and then verified at the second reference voltage VR 2 , Blocks  110  and  112 . This upper and lower programming order may be reversed in alternative embodiments of the invention. 
         [0036]      FIG. 5B  illustrates operations  200  to read “physical” data from selected pages of EEPROM cells. This “physical” data corresponds to BIT  1  and BIT  2  of the three bit data illustrated by  FIG. 5A . These read operations  200  include the performance of a special case read operation from corresponding upper and lower pages of a nonvolatile memory array. As illustrated by Blocks  202  and  204 , this special case read operation includes setting the selected word lines for the upper and lower pages in the upper and lower blocks, respectively, at the second reference voltage VR 2  while concurrently setting the unselected word lines at VREAD. As illustrated by Block  206 , a check is then made to determine whether any of the corresponding bit lines, which are connected to the upper and lower blocks, are discharged. If this check results in a negative answer, which means the special case is present (i.e., BIT 1 /BIT 2 /BIT 3 =1/1/0), then the read data for the corresponding physical cell equals a logic 1 value, Block  210 . However, if the check results in a positive answer, then a normal SLC read is performed on the selected cell with the selected word line set to the first reference voltage VR 1 , Block  208 . The read data for a selected physical page is then output from a page buffer, Block  212 . Thus, for the above example, a special case read of the selected upper page (programmed with A 1 *&lt;7:0&gt;=&lt;10 P S00 P 01&gt;) would result in the following first bit line condition: BL 1 &lt;7:0&gt;=&lt;00110000&gt;, which indicates that A 1 &lt;5:4&gt;=&lt;11&gt;, Block  202 - 204 . In contrast, a normal SLC read of the selected upper page (programmed with A 1 *&lt;7:0&gt;=&lt;10110001&gt;) would result in the following second bit line condition: BL 2 &lt;7:0&gt;=&lt;01111110&gt;, Block  208 . These first and second bit line conditions (BL 1 &lt;7:0&gt;=&lt;00110000&gt; and BL 2 &lt;7:0&gt;=&lt;01111110&gt;) are combined within the page buffer to thereby generate the value of A 1 &lt;7:0&gt; as &lt;10110001&gt;, Block  212 . This value of A 1  is generated by inverting every bit associated with the second bit line condition, subject to the constraint set by the first bit line condition, which requires that A 1 &lt;5:4&gt;=&lt;11&gt; because of the presence of special case programming. 
         [0037]      FIG. 5C  illustrates operations  300  to read “virtual” data from a pair of pages of EEPROM cells. At Blocks  302  and  304 , the selected and unselected word lines for the upper block are set to VR 2  and VREAD, respectively, to detect whether any of the cells in the selected upper page satisfy the case (b), case (f) or case (h) conditions identified by  FIG. 4D . Thus, for the above example (programmed with A 1 *&lt;7:0&gt;=&lt;10 P SS00 P 01&gt;), this read operation would result in the following third bit line condition: BL 3 &lt;7:0&gt;=&lt;01110100&gt;, which is stored in a first latch within the page buffer, Block  306 . Thereafter, at Blocks  308  and  310 , the selected and unselected word lines for the lower block are set to VR 2  and VREAD, respectively, to detect whether any of the cells in the selected lower page satisfy the case (b) or case (d) conditions identified by  FIG. 4D . Thus, for the above example (programmed with A 2 *&lt;7:0&gt;=&lt;01SS0110 P &gt;), this read operation would result in the following fourth bit line condition: BL 4 &lt;7:0&gt;=&lt;00110001&gt;, which is stored in a second latch within the page buffer, Block  312 . 
         [0038]    At Block  314 , the data with the first and second latches is compared on a bit-by-bit basis: 
         [0000]      BL 3 &lt;7:0&gt;=&lt;01110100&gt;; 
         [0000]      BL 4 &lt;7:0&gt;=&lt;00110001&gt;. 
         [0000]    Because only BL 3 &lt;5:4&gt;=BL 4 &lt;5:4&gt;=&lt;11&gt;, A 3 &lt;5:4&gt;=&lt;00&gt;, Block  316 . At Block  318 , a NOR operation is performed on the remaining bits to yield A 3 &lt;7:6;3:0&gt;=&lt;10;1010&gt;. The data is then output from the page buffer, Block  320 . In other embodiments of the present invention, the page buffer may perform alternative operations to resolve the above-described read operations. 
         [0039]    The above-described programming operations illustrated by  FIG. 4D  illustrate how embodiments of the present invention are relatively immune from multi-bit errors caused in response to threshold voltage programming errors. For example, if the programming state illustrated by case (a) is erroneously reflected as a case (c) or case (e) state upon reading, then the correct 3-bit data value of 1/1/1 will be erroneously reflected upon reading as 1/0/1, which represents a single bit error in A 2 , or 0/1/1, which reflects a single bit error in A 1 . Likewise, if the programming state illustrated by case (g), for example, is erroneously reflected as a case (c), case (e) or case (h) state upon reading, then the correct 3-bit data value of 0/0/1 will be erroneously reflected upon reading as 1/0/1, which represents a single bit error in A 1 , or 0/1/1, which reflects a single bit error in A 2 , or 0/0/0, which reflects a single bit error in A 3 . The same is true for other programming states illustrated by  FIG. 4D . 
         [0040]    In the drawings and specification, there have been disclosed typical preferred embodiments of the invention and, although specific terms are employed, they are used in a generic and descriptive sense only and not for purposes of limitation, the scope of the invention being set forth in the following claims.