Patent Publication Number: US-9899090-B2

Title: Method for writing into and reading a multi-levels EEPROM and corresponding memory device

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a divisional of U.S. patent application Ser. No. 14/511,661, entitled “METHOD FOR WRITING INTO AND READING A MULTI-LEVELS EEPROM AND CORRESPONDING MEMORY DEVICE,” filed on Oct. 10, 2014, which claims the benefit of French application number 1360418, filed on Oct. 25, 2013, which applications are hereby incorporated herein by reference. 
    
    
     TECHNICAL FIELD 
     The present invention relates generally to memories, and, in particular embodiments, to a method for writing into and reading a multi-levels EEPROM and corresponding memory device. 
     BACKGROUND 
     A memory cell of the EEPROM type generally comprises a transistor having a floating gate allowing the storage of the item of data, a control gate, a source region and a drain region. Such a memory cell uses the principle of the non-volatile storage of charges on the floating gate of the transistor. Conventionally, the writing of an item of data comprises an erase cycle followed by a programming cycle. 
     The programming is carried out by the Fowler-Nordheim effect and comprises the injection by tunnel effect of electrons from the floating gate towards the drain whilst the erasing, which is also carried out by the Fowler-Nordheim effect, comprises an injection by tunnel effect of electrons from the drain towards the floating gate. 
     Conventionally, the programming of a memory cell of the EEPROM type is carried out by connecting the control gate to ground and by applying a relatively high programming voltage to the drain, typically 13 Volt. Moreover, with regard to the source, there are two possibilities: either the source is left floating or it is pre-charged at a non-zero pre-charge voltage. 
     In the first case (source left floating), the potential of the source rises during the programming, the floating gate is charged positively and the memory cell goes, at the end of the programming, into a conducting state but does not conduct because, as the source is floating, it presents infinite impedance. 
     In the second case (pre-charging the source), the floating gate is also charged positively during the programming but the cell does not go into a conducting state because the pre-charge voltage of the source is chosen such that the difference between the potential of the floating gate and the potential of the source always remains below the threshold voltage of the transistor of the memory cell. 
     Thus, in all cases, the memory cell does not go into conduction during the programming. 
     Moreover, the write cycle (erasure and then programming) is of fixed duration, typically 4 ms, which can result in over-programmings, that is to say in quantities of charge uselessly stored on the floating gate that are too large, which has a negative impact on the lifetime of the memory cell, as well as in a dispersion of the conduction thresholds of different programmed memory cells. 
     SUMMARY 
     Implementations and embodiments of the invention relate to memories that are programmable and erasable by the Fowler-Nordheim effect such as electrically erasable programmable read-only memories, referred to as EEPROM memories, and more particularly multi-level memories, that is to say capable of storing several bits per memory cell or memory element. 
     According to one implementation, there is proposed a method of programming a memory call of the type that is programmable by the Fowler-Nordheim effect, for example, aimed at avoiding such over programmings and making it possible to reduce the average charge passing through a cell during an erase-programming cycle. 
     According to one implementation, it is proposed to apply such a method in order to be able to very simply store an item of data in a memory cell of this type, the item of data being able to have more than three different numerical values, which then makes it possible to obtain a multi-level memory call, for example of the EEPROM type. 
     According to one implementation, it is thus proposed to control, during the programming and in real time, the charge stored on the floating gate of an EEPROM cell for example, and to do so without interrupting the programming. 
     Thus, according to one implementation, the final threshold voltage (final conduction threshold) of an EEPROM cell is controlled at the end of a programming cycle by acting on the voltage level applied to the control gate. In fact, this results from the observation that there is a biunivocal relationship between this control gate voltage and this conduction threshold making it possible, for a target conduction threshold, to define the voltage to be applied to the control gate. Moreover, if a numerical value of the item of data is associated with a target conduction threshold, it is then possible to determine the voltage to be applied to the control gate so that, at the end of the programming, the floating gate is de facto charged with the quantity of charge corresponding to that target conduction threshold, the memory cell then de facto being written with the numerical value of the item of data corresponding to that target threshold. 
     According to one aspect there is proposed a method for writing an item of data in at least one memory cell, the memory cell being programmable by the Fowler-Nordheim effect and comprising a transistor having a floating gate, a control gate, a source region and a drain region. 
     According to a general feature of this aspect, during a phase of programming the cell, a first voltage is applied to the source region, a second voltage, higher than the first voltage, is applied to the drain region until the cell is put into conduction. The numerical value of the item of data to be written is controlled by the level of the control voltage applied to the control gate and the item of data being de facto written with the numerical value during the putting into conduction of the cell. The programming is then stopped. 
     Such a method is therefore distinguished from the conventional programming of an EEPROM cell in which the memory cell never goes into conduction. 
     In this case, on the contrary, the memory cell, initially not conducting, goes into conduction and the programming is then stopped, the cell then having a desired conduction threshold associated with a numerical value of the item of data and corresponding to the value (level) of the control voltage that was applied to the control gate. 
     Even though the source region can be connected to ground as a first voltage during the programming phase, it is also possible to apply, during the programming phase, a non-zero voltage to the source region, provided that this first voltage remains lower than the second voltage applied to the drain region. It is thus possible to bias the source at 6 Volt, the source/drain potential difference at the end of the programming then being reduced by the value of the source voltage. Moreover, when the cell becomes conductive and goes into conduction, the drain voltage no longer drops to 0 Volt but to 6 Volt which is sufficient to stop any injection of carriers by the Fowler-Nordheim effect. The conduction threshold will then be shifted by the source voltage to which the substrate effect is added. 
     Applying a non-zero voltage to the source region during the programming can thus result in obtaining a better endurance of the cell because of a weaker transverse electric field in the channel. 
     According to one implementation, when the item of data is capable of taking n different numerical values, a set of at least n−1 different programming values is defined for the control voltage to be applied to the control gate of the transistor during the programming phase and respectively corresponding to at least n−1 different conduction thresholds of the cell respectively associated with at least n−1 different numerical values of the item of data, and during the programming phase the control voltage having the programming value corresponding to the desired numerical value of the item of data is applied to the control gate. 
     The method according to this aspect has advantages even when n is equal to 2, that is to say when the item of data comprises one bit capable of taking two values 0 or 1. In fact, such a method making it possible to control the charge stored on the floating gate in situ and in real time during the programming notably prevents over-programming, which can improve the endurance of the cell. 
     This being so, the method according to this aspect makes it possible to program a memory cell very simply with an item of data that can take at least three different numerical values. 
     In other words, this very simply produces a multi-level memory that is to say one capable of storing an item of data having several bits, that can be programmed without having recourse to interactive programming and reading algorithms of the prior art that are complex of costly in terms of duration, used in multi-level FLASH memories which are typically memories programmable by hot electrons necessitating conduction of the cell in order to allow the injection of the hot electrons in the floating gate, contrary to programming by the Fowler-Nordheim effect. 
     When the memory cell is also erasable by the Fowler-Nordheim effect, which is the case of a memory cell of the EEPROM type, the writing method according to one implementation comprises an erase cycle of the at least one memory cell, preceding the programming phase and during which the drain and the source of the transistor are coupled to ground and a control voltage having an erase value is applied to the control gate, which makes it possible to give the cell a first conduction threshold. 
     Moreover, a first numerical value of the item of data is advantageously associated with this first conduction threshold which then makes it possible to define only a set of n−1 different programming values for the control voltage to apply to the control gate of the transistor during the programming phase and corresponding respectively to n−1 other different conduction thresholds of the cell respectively associated with the n−1 other different numerical values of the item of data. 
     Moreover, during the programming phase, there is applied to the control gate the control voltage having the programming value corresponding to the desired numerical value of the item of data taken from among the n−1 other numerical values of the item of data. 
     At least some of the programming values can be negative. 
     There are several ways of stopping the programming when the memory cell is put into conduction. 
     According to one implementation, it is possible to apply the second voltage to the drain of the transistor with a voltage generator whose current is limited to the current consumed by the cell put into conduction. The programming is then stopped by itself when the cell is put into conduction since the consumption of that cell makes the drain voltage drop, which naturally stops the programming. 
     According to another possible implementation, it is possible to apply the second voltage to the drain of the transistor with a voltage generator having no current limitation but the value of the current consumed by the cell is then measured, for example by a readback of the current flowing in the bit line and when that current exceeds a threshold the high voltage generator is deactivated in order to stop the programming. 
     When there is a memory plane containing memory cells for example organized in lines and columns, the method comprises, according to an implementation, a selection of at least one group of several memory cells of the memory plane, for example a page or byte depending on a granularity, and respective data writings in the memory cells of the at least one group, each item of data being able to take n different numerical values, n being greater than or equal to 2 and advantageously greater than or equal to 3. 
     According to one implementation, in which data of different numerical values are intended to be written in different memory cells of the at least one group, the erase cycle is applied to all of the memory cells of the at least one group in order to give them the first conduction threshold corresponding to the first numerical value. Then, from among the erased memory cells, there is selected a sub group of rank 1 comprising the memory cells of the at least one group which must be written with a second numerical value corresponding to a second conduction threshold that is lower than the first conduction threshold. The programming phase comprises a first programming cycle during which there is applied, to the control gates of the memory cells of the sub group of rank one, the control voltage having the programming value associated with the second conduction threshold. 
     Then there is possibly selected from among the written memory cells of the sub-group of rank i, where i is greater than or equal to 1, a sub group of rank i+1 comprising the memory cells of the at least one group which must be written with a numerical value corresponding to another conduction threshold, lower than the conduction threshold of the cells of the sub group of rank i. The programming phase comprises an i+1th programming cycle during which there is applied to the control gates of the memory cells of the sub-group of rank i+1 the control voltage having the programming value associated with the other conduction threshold. Then the steps a) are possibly repeated until there is a programming of possible memory cells of the at least one group having to be written with a numerical value corresponding to the lowest conduction threshold. 
     According to another aspect, there is proposed a method of reading an item of data written in a memory cell by the writing method defined above and capable of having n different numerical values corresponding respectively to n different conduction thresholds of the cell. 
     The method according to this aspect then comprises, for example, a generation of a set of at least n−1 reference values for the read voltage to be applied to the control gate of the transistor during a read cycle, the n−1 reference values being respectively situated between the n conduction thresholds, an application of a third voltage to the drain, and an application to the control gate of a read voltage having the lowest reference value, and if the cell is cut off, a repetition of step a) with the reference value adjacent to the previously applied reference value until a conducting cell is obtained or until all of the reference values have been exhausted. 
     According to another aspect, there is proposed a device comprising at least one memory cell programmable by the Fowler Nordheim effect having a transistor having a floating gate, a control gate, a source region and a drain region, and write circuitry (or a write circuit) configured to write the memory cell with an item of data. 
     According to a general feature of this aspect, the write circuitry comprises a programming circuit configured to apply a first voltage to the source region, control the numerical value of the item of data to be written by the voltage level applied to the control gate, apply to the drain region a second voltage, higher than the first voltage, until the cell is put into conduction, the item of data being de facto written when the cell is put into conduction with the numerical value corresponding to the control voltage level applied, and stop the programming once the cell has been put into conduction. 
     The programming circuit can be configured to apply ground as the first voltage to the source region, or to apply a non-zero first voltage to this source region. 
     According to an embodiment in which the item of data is able to take n different numerical values, n being for example greater than or equal to 3, the write circuitry comprises a generation circuit configured to generate a set of at least n−1 different programming values for the control voltage corresponding respectively to at least n−1 different conduction thresholds of the cell respectively associated with at least n−1 different numerical values of the item of data, and the programming circuit is configured to apply to the control gate of the transistor the control voltage having the programming value corresponding to the desired numerical value of the item of data. 
     According to an embodiment in which the cell is erasable by the Fowler-Nordheim effect, the generation circuit is configured to generate a set of n values for the control voltage comprising an erase value corresponding to a first conduction threshold of the cell associated with a first numerical value of the item of data and n−1 different programming values corresponding respectively to n−1 other different conduction thresholds of the cell associated respectively with the n−1 other different numerical values of the item of data, and the write circuitry furthermore comprises an erase circuit configured to couple the drain and the source of the transistor to ground and to apply to the control gate a control voltage having the erase value, and the programming circuit is configured to apply to the control gate of the transistor the control voltage having the programming value corresponding to the desired numerical value of the item of data and taken from among the n−1 different programming values of the set. 
     According to one embodiment, the programming circuit comprises a voltage generator with current limited to the value of the current of the cell put into conduction, configured to apply the second voltage to the drain of the transistor. 
     As a variant, the programming circuit can comprise a voltage generator configured to apply the second voltage to the drain of the transistor, a measuring circuit configured to measure the value of the current consumed by the cell, a comparator configured to compare the value of the current consumed with a threshold and to deliver a control signal if the value of the current consumed exceeds the threshold, and a control circuit configured to deactivate the voltage generator in the presence of the control signal. 
     According to one embodiment, the device comprises a memory plane comprising several memory cells and the write circuitry is configured to select at least one group of memory cells and to write items of data respectively in the memory cells of the group, each item of data being able to take n different numerical values. 
     According to one embodiment in which the items of data of different numerical values are intended to be written in different memory cells of the at least one group, the erase circuit is configured to give all of the memory cells of the at least one group the first conduction threshold corresponding to the first numerical value, and the programming circuit is configured to select from among the erased memory cells, a sub-set of rank 1 of memory cells of the at least one group which must be written with a second numerical value corresponding to a second conduction threshold lower than the first conduction threshold and to apply, to the control gates of the memory cells of the sub group of rank one, the control voltage having the programming value associated with the second conduction threshold, then, a) possibly select from among the written memory cells of the sub group of rank i, a sub group of rank i−1 of memory cells of the at least one group which must be written with a numerical value corresponding to another conduction threshold lower than the conduction threshold of the cells of the sub-group of rank i and apply to the control gates of the memory cells of the sub-group of rank i+1 a control voltage having the programming value associated with the other conduction threshold, and possibly repeat the steps a) up to the possible memory cells having to be written with a numerical value corresponding to the lowest conduction threshold. 
     According to one embodiment, the device furthermore comprises a read circuit configured to read from at least one memory cell an item of data able to take n different numerical values corresponding respectively to n different conduction thresholds of the cell, the read circuit being configured to apply a third voltage to the drain, apply to the control gate a read voltage having the lowest reference value taken from among a set of at least n−1 reference values, the n−1 reference values being respectively situated between the n conduction thresholds, and if the cell is cut off, repeating step a) with the reference value adjacent to the one previously applied until a conducting cell is obtained or until all of the reference values have been exhausted. 
     According to one embodiment, the read circuit is configured to select at least one set of memory cells and to read respectively the items of data in the memory cells of the set, each item of data read being able to take n different numerical values. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Other advantages and features of the invention will become apparent on examination of the detailed description of implementations and embodiments that are in no way limiting and of the appended drawings in which: 
         FIGS. 1 to 14  are diagrammatic illustrations of different implementations and embodiments of write methods and of read methods according to the invention and of a memory device according to the invention. 
     
    
    
     DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS 
     In  FIG. 1 , the memory device DIS here comprises a memory cell CEL, for example a memory cell of the EEPROM type, comprising a transistor TR having in conventional manner a control gate CG, a floating gate FG, a drain region D and a source region S. 
     The device DIS also comprises a programming circuit MPR intended for, as will be seen in detail below, applying appropriate voltages to the drain, source and control gate regions. 
     The device DIS also comprises an erase circuit MEF intended to place the memory cell CEL in an erased state as well as a read circuit MLT configured to read the item of data written in memory cell CEL. 
     The read conduction threshold, or more simply the conduction threshold, of the cell CEL is the voltage V t  that must be applied during reading to the control gate in order to make the cell conduct. This conduction threshold V t  is defined by the following formula (1):
 
 A·V   t   +B·V   dr   +Q/C   tot   =V   t0   +V   S   (1)
 
in which V dr  denotes the voltage applied to the drain during reading, V t0  is the threshold voltage of the state transistor of the cell, that is to say the buried transistor, seen from the floating gate, Q denotes the charge stored on the floating gate (typically Q is negative for an erased cell, zero for a blank cell and positive for a programmed cell), C tot  is the total capacitance seen from the floating gate (floating gate capacitively coupled with the control gate, the drain, the channel, the source and the substrate), A=C1/C tot  where C1 denotes the coupling capacitance between the control gate and the floating gate, B=C2/C tot  where C2 denotes the coupling capacitance between the floating gate and the drain, V S  denotes the voltage applied to the source region.
 
     Typically, for a cell of the EEPROM type, A varies from 0.6 to 0.75 and B varies from 0.2 to 0.3 depending on the embodiment of the cell. 
     The charge Q is therefore defined by the following formula (2):
 
 Q=[V   t0   +V   S   −A·V   t   −B·V   dr   ]·C   tot   (2)
 
     For a given charge Q, the stopping of the programming occurs when the voltage V FG  on the floating gate is equal to V t0 +V S  which is then represented by the following equation (3):
 
 A·V   CG   +B·V   d   +Q/C   tot   =V   t0   +V   S   (3)
 
in which V CG  denotes the voltage applied to the control gate during programming, V d  denotes the voltage applied to the drain during programming.
 
     Considering the equation (2), the following equation (4) is therefore obtained
 
 A·[V   CG   −V   t   ]+B·[V   d   −V   dr   ]=V   S   (4)
 
     As the programming is stopped during injection, the voltage V FG  is equal to (V t0 +V S ), and (V d −V FG ) is substantially equal to V FN  where V FN  denotes the Fowler-Nordheim injection voltage. 
     When the programming is stopped, the following equation (5) is therefore obtained:
 
 V   d   =V   FN   +V   t0   +V   S   (5)
 
     Combining the equations (4) and (5) then provides the following equation (6):
 
 V   CG   =V   t   +[B/A]·[V   dr   −V   FN   −V   t0   +V   S (1− B/A )]  (6)
 
     Moreover, making the hypothesis that the voltage V dr  is substantially equal to the voltage V t0 , which is typically the case, the following equation (7) is then obtained.
 
 V   CG   =V   t   −[B/A]·V   FN   +V   S (1− B/A )  (7)
 
     This formula (7) biunivocally determines the voltage V CG  to be applied to the control gate of the transistor TR at the time when the cell begins to conduct in order to obtain a final threshold voltage (final conduction threshold) of the cell equal to V t . 
     Thus, if the programming of a cell is stopped when it is put into conduction, the value V CG  makes it possible to control the conduction threshold of a cell having undergone a programming cycle. 
     In other words, it has been shown that there is a unique relationship between the voltage to be applied to the control gate and the conduction threshold of the cell, which makes it possible, for a target conduction threshold, to define the value of the voltage to be applied to the control gate in order to reach this target conduction threshold. 
     Moreover, if this target conduction threshold is associated with a numerical value of the item of data to be written, it is therefore possible to associate this numerical value of the item of data with a voltage to be applied to the control gate. 
     In other words, during the phase of programming the cell, a voltage is applied to the drain region that is higher than the voltage applied to the source region until the cell is put into conduction, the numerical value of the item of data to be written being controlled by the level of the control voltage applied to the control gate and this item of data is de facto written with the numerical value when the cell is put into conduction, the programming then being stopped. 
     It is thus easy to store in the memory cell numerical items of data able to take several different numerical values, for example items of data encoded in two or more bits, simply by controlling the charge injected in real time into the cell by application to the control gate of a voltage corresponding to the conduction threshold of the cell associated with the numerical value desired for the item of data. No iterative algorithms with successions of programming and reading are therefore used. There is no impact on the programming time. 
     Such a method does not necessitate a complex machine and, for a memory plane whose cells are capable of storing two bits corresponding to four charge level domains, a doubling of the density is obtained for the same area of the memory plane. 
     An example of such a programming is shown in greater detail in  FIG. 2 . 
     Thus, for an item of data DD able to take n different numerical values dd 1 -dd n , n conduction thresholds V t1 -V tn  are defined for the cell, respectively corresponding to the n numerical values dd i  of the item of data DD to be written. It is then possible to define n values V CGi  for the voltage applied to the control gate during the programming, each of these values V CGi  corresponding to the conduction threshold V ti  and therefore to the numerical value dd i  of the item of data DD to be written. 
     This being so, as will be seen in greater detail below, it is possible to define only n−1 values of voltage to be applied to the control gate during the programming and to use a voltage applied to the control gate during the erasing of the cell in order to define a conduction threshold that corresponds to one of the possible numerical values of the item of data DD. 
     If it is desired to write the item of data DD with the numerical value dd j , then the corresponding voltage V CGj  is applied (step  20 ) to the control gate CG. Moreover the voltage V s1  is applied to the source region S of the transistor TR of the cell (step  21 ). This value V s1  can be equal to zero (source connected to ground) or equal to a non-zero voltage V S0 . 
     Moreover, a second voltage V d2  is applied to the drain D of the transistor (step  22 ), this voltage V d2  being higher than the voltage V s1  applied to the source in order to be able to put the cell CEL into conduction. 
     Moreover, when this cell is effectively put into conduction (step  23 ), the programming is then stopped, the cell CEL de facto containing on its floating gate the corresponding charge Q, the cell CEL therefore being de facto written with the item of data DD having the numerical value dd j  corresponding to the value V CGj  of the programming voltage applied to the control gate CG. 
     There are several possible ways of stopping the programming of the cell when it is put into conduction. 
     Two of these are shown diagrammatically in  FIGS. 3 and 4 . 
     More precisely, in  FIG. 3 , the voltage V d2  applied to the drain D of the transistor TR during the programming is provided by a voltage generator GEM limited in current to the value of the current consumed by the cell when the latter is conducting, for example 10 nanoamps. 
     Consequently, as shown in  FIG. 3 , during the putting into conduction, the programming of the cell is automatically stopped by the drop in the drain voltage towards the source voltage. 
     The other way, illustrated in  FIG. 4 , uses for applying the voltage to the drain D, a voltage generator GEN 2  that is not current limited. On the contrary, the device DIS then comprises a measuring circuit MES configured to measure the current consumed by the cell. A comparator CMP compares the measured current value with a threshold SE, typically 10 nanoamps. The output of the comparator CMP delivers a control signal SACT to the control circuit MCM which are configured to deactivate or not the generator GEN 2 . More precisely, when the value of the current consumed by the cell, that is to say the value of the bit lines current, exceeds the threshold SE, this signifies a putting into conduction of the cell CEL and the control circuit then deactivates the generator GEN 2  in order to stop the programming. 
     The cell CEL can also be erased by the Fowler-Nordheim effect. The writing of an item of data in such a cell, for example of the EEPROM type, comprises an erase cycle preceding the programming phase. 
     This conventional erase cycle is shown in  FIG. 5 . More precisely, the erase circuit MEF is configured to couple the drain and the source of the transistor to ground (steps  50  and  51 ), and to apply to the control gate (step  52 ) a control voltage having an erase value VCGe, typically 13 volts. 
     Moreover, at the end of this programming cycle, the cell CEL has a first conduction threshold Vt 1  which can then be associated with a first numerical value dd 1  of the item of data DD. 
     In these conditions, it is then only necessary to define n−1 different programming values V CG2 -V CGn  for the control voltage to be applied to the control gate of the transistor during the programming phase  55 , these n−1 different programming values corresponding respectively to n−1 other different conduction thresholds of the cell associated respectively with the other n−1 different numerical values dd 2 -dd n  of the item of data DD. 
       FIG. 6  is a diagrammatic illustration of an implementation of the method of reading an item of data DD written in the memory cell CEL, this item of data DD being able to have n different numerical values respectively corresponding to n different conduction thresholds V t1 -V tn  of the cell. 
     In this respect, there is generated (step  60 ) a set of at least n−1 reference values V refk,k+1  for the read voltage to be applied to the control gate of the transistor during a read cycle, k varying from 1 to n−1. 
     These n−1 reference values V refk,k+1  are respectively situated between the n conduction thresholds V tk  and V tk+1 . 
     Preferably, for each reference value situated between two conduction threshold values, a reference value that is sufficiently distant from the corresponding thresholds will be chosen, for example situated in the middle of the interval. 
     During this read cycle, a voltage V d3  is applied (step  61 ) to the drain D of the transistor, typically of the order of 1 volt, the source is coupled to ground and a read voltage having a reference value V refk,k+1  taken from among the set of reference values is applied to the control gate (step  62 ). In practice, the lowest reference value (k=n−1) will be applied firstly, that is to say V refn-1,n . 
     Then it is tested (step  63 ) if the cell CEL is conducting or not. 
     If the cell is conducting, then this signifies (step  64 ) that the cell was written with the value dd k+1  corresponding to the conduction threshold V tk+1 . 
     In the opposite case, that is to say if the cell is cut off, steps  62  and  63  are repeated with another reference value taken from among the set of reference values until a conducting cell is obtained. 
     In practice, the increasing read voltages will be applied to the control gate CG in the decreasing order of their rank (decrementation of k: step  65 ). 
     Moreover if, during the application of a read voltage having the first highest reference value V ref1,2 , the cell is still cut off (steps  63  and  66 ) this signifies that the cell was written with the numerical value dd 1  corresponding to the last highest conduction threshold V t1 . 
     Although this is possible, it is in fact not necessary in practice to apply a read voltage higher than the last conduction threshold V t1  to the control gate of the cell CEL in order to ensure that the cell is then fully conducting. 
     In the embodiment shown in  FIG. 7 , the device DIS this time comprises a memory plane PM of cells CEL i,j , organized in lines and columns. 
     It is also assumed in this embodiment that each item of data DD to be written in a memory cell CEL i,j  is encoded in two bits, that is to say that it is capable of taking four different numerical values dd 1 -dd 4 , for example the values 00, 01, 10 and 11. 
     It is also assumed in this embodiment, by way of example, that among all the memory cells of the memory plane, the cells CEL g1  belonging to a first group de memory cells are intended to be written with the numerical value dd 1  (00). 
     The memory cells CEL g2  of a second group are intended to be written with the numerical value dd 2  (01). 
     The cells CEL g3  of a third group are intended to be written with the numerical value dd 3  (1,0). 
     The cells CEL g4  of a fourth group are intended to be written with the numerical value dd 4  (1,1). 
     Moreover, by way of example, four target conduction thresholds V t1 -V t4  corresponding respectively to the four numerical values dd 1 -dd 4  are defined. 
     More precisely, by way of example, the values of these conduction thresholds V t1 -V t4  are fixed at 2.9 volts, 1.6 volt, 
     0.3 volt and −1 volt respectively 
     If, by way of example, it is considered that the value V FN  of the Fowler-Nordheim voltage is equal to 9 volts, V t0  is equal to V dr  and to 0.9 volt, A is equal to 0.7 whilst B is equal to 0.25, then from this it is derived, taking account of the above equation (7), that the programming value V CG  of the voltage to be applied to the control gate during the programming phase is then defined by the following formula (8):
 
 V   CG   =V   t −3.2 volts  (8)
 
     The four programming values V CG1 -V CG4  corresponding respectively to the four target conduction thresholds mentioned above and respectively associated with the four numerical values dd 1 -dd 4  of the item of data DD are then as follows:
         Value dd 1  (00): V CG1 =−0.3 volt,   Value dd 2  (01): V CG2 =−1.6 volt,   Value dd 3  (10): V CG3 =−2.9 volts,   Value dd 4  (11): V CG4 =−4.2 volts.       

     In fact, as will now be seen in greater detail, the value V CG1  is in fact useless because the first conduction threshold will be obtained at the end of the erase cycle. 
     In this respect, reference will now be made more particularly to  FIG. 8 . 
     In this figure, the curve CV 1  shows the variation of the voltage V CG  applied to the control gate of the different cells during the write cycle (erasing then programming). 
     The curve CV 2  shows the corresponding variation of the drain voltage upstream of a current limiter associated with the generator delivering this voltage whilst the curve CV 3  shows the drain voltage downstream of this current limiter. 
     Firstly, the erase circuit executes an erase cycle bringing all the cells of the four groups CEL g1 , CEL g2 , CEL g3  and CEL g4  to the conduction threshold V t1  (2.9 Volts). Consequently, all of the numerical values (00, 01, 10, 11) are involved here. 
     During this erase cycle, the erase circuit applies a gradient rising from 0 to 13 volts in 0.5 milliseconds to the control gate, for example, followed by a level section at 13 volts for a duration of 0.5 milliseconds. The erase circuit also couples the drain and the source to ground. 
     The programming phase will then comprise three successive programming cycles CP 1 , CP 2  and CP 3 . 
     During the first programming cycle CP 1 , the programming circuit selects only cells CEL g2 , CEL g3  and CEL g4  by excluding the cells of the first group CEL g1  which have to be programmed only with the numerical value 00. 
     During this first programming cycle, the programming value V CG2 =−1.6 volt is applied to the control gate of the transistors of the selected cells. 
     The programming circuit moreover applies, before current limitation, a voltage V d2  to the drain in the form of a gradient rising from 0 to 12 volts in 0.4 milliseconds followed by a level section of 0.4 milliseconds. Taking account of the current limitation, the voltage on the drain is limited to 9 volts and then drops during the putting into conduction of the cells, which causes, as explained above, the stopping of the programming. 
     At the end of this first programming cycle, all of the cells CEL g2 , CEL g3  and CEL g4  finish with a conduction threshold of 1.6 volts. 
     During the second programming cycle CP 2 , this time it is the cells CEL g1  and CEL g2  that are excluded from the programming and only the cells CEL g3  and CEL g4  are selected. 
     During this second programming cycle CP 2 , the programming value V CG2 , equal to −2.9 volts, is applied to the control gates of the selected cells whilst the programming circuit applies, during this cycle, a voltage V d2  to the drain, equivalent to the one applied during the first programming cycle. 
     At the end of this second programming cycle, the cells CEL g3  and CEL g4  finish with a conduction threshold equal to 0.3 volt. 
     During the third programming cycle CP 3 , this time it is the cells CEL g1 , CEL g2  and CEL g3  that are excluded from the programming, and only the cells CEL g4  are selected. 
     Here again, the voltage applied to the drain is identical to that applied during the preceding two programming cycles. On the contrary, during this third programming cycle CP 3 , the reference value V CG4 , equal to −4.2 volts is applied to the control gates of the selected cells. 
     Moreover, at the end of this third programming cycle, the cells CEL g4  finish with a conduction threshold of −1 volt. 
     Thus, at the end of these three programming cycles, the cells CEL g1  have been programmed with the value 00, the cells CEL g2  have been programmed with the value 01, the cells CEL g3  have been programmed with the value 10 and the cells CEL g4  have been programmed with the value 11. 
     Reference will now be made more particularly to  FIG. 9  in order to describe an embodiment of a device according to the invention applicable to a memory plane of the EEPROM type having 512 lines and 512 columns with a granularity of the byte type. 
     Taking account of this “byte” granularity, the memory cells of a same line can be “grouped” in blocks of 8 and the 512 homologous blocks situated respectively on the 512 lines share the same line CGL connected to all of these cells. There are therefore 64 lines CGL for 512 bit lines BL and 512 word lines WL. 
     Moreover, in the continuation of the description the term “column” will globally denote a block of 8 bit lines. 
     The erase circuit MEF comprises positive charge pump PCHP, of conventional structure and known per se, followed by a positive gradient generation circuit GRP. 
     The programming circuit MPR comprises a negative charge pump PCHN of conventional structure and known per se, followed by a negative gradient generation circuit GRN. 
     The write circuitry, which groups the programming circuit MPR and erase circuit MEF, also comprises a switch SW that makes it possible to switch between the negative and positive voltages as a function of the erase and programming cycles. 
     The write circuitry also comprises a write controller CTRE, which can be embodied, for example, by software within a microcontroller or by means of logic circuits and that are intended to control the erasing and the programming of the selected cells. 
     The read circuit MLT comprises a read sequencer SQL, a unit RL intended to generate the different reference values of the read voltages, and conventional read amplifiers SA connected to the read sequencer and to the unit RL. 
     A conventional state machine MET makes it possible to monitor these different circuits. 
     The device comprises moreover in a conventional manner a bidirectional data register RD, an address register RAD and a bus interface INTB. Finally, these different programming, erase and read circuit comprises a first decoder DCD 1  configured to make selections (to decode) from among the 64 lines CGL and the 512 bit lines BL and a second decoder DCD 2  configured to make selections from among the 512 word lines WL. 
     The decoder DCD 1  comprises one BLCG unit per CGL line, shown in  FIG. 10 , the function of which is now described. 
     During the erase cycle, it must send the erase value (13 volts) on the CGL line of a selected column and 0 volt, for example, on the CGL line of a non-selected column. 
     The Column signal is at “1” for a selected column and at “0” for a non-selected column. 
     During the programming phase, it must send the successive values of the programming voltages (−1.6 volt, −2.9 volts, −4.2 volts) on the CGL line of a selected column and 0 volt (for example) on the CGL line of a non-selected column. 
     For this purpose, the unit BLCG comprises a conventional latch memory MV 1  supplied between ground and Vcc (for example 3 volts) followed by a level translator TRLN the N-type MOS transistors of which, having a fourth substrate connection, are produced using triple well technology, for isolating the substrate because of the presence of negative voltages. 
     The level translator TRLN comprises two NMOS transistors T 1  and T 2  controlled by a signal Prog and two NMOS transistors T 3  and T 4  controlled by a signal EfouLit. 
     The level translator TRLN also comprises two other NMOS transistors T 5  and T 6  controlled by a signal Vcasc and another latch memory MV 2  and an inverter INV 1  whose PMOS transistor P 1  receives on its source the voltage VSP and whose output INVS delivers the voltage applied to the CGL line. 
     Table 1 summarizes, according to the different operations (read, erase, programming) the values of the various signals and voltages applied to the BLCG unit and delivered by the latter. 
     
       
         
           
               
               
               
               
             
               
                   
                 TABLE 1 
               
             
            
               
                   
                   
               
               
                   
                 Read 
                 Erase 
                 Programming 
               
            
           
           
               
               
               
               
               
               
               
            
               
                   
                   
                 Col 
                 Col not 
                 Col 
                 Col not 
                 Col 
               
               
                   
                 Col not select. 
                 select. 
                 select. 
                 select. 
                 select. 
                 select. 
               
               
                   
                   
               
            
           
           
               
               
               
               
               
               
               
            
               
                 Vcc 
                 3 V 
                 3 V 
                 3 V 
                 3 V 
                 3 V 
                 3 V 
               
               
                 Out 
                 0 
                 3 V 
                 0 
                 3 V 
                 0 
                 3 V 
               
               
                 Nout 
                 3 V 
                 0 
                 3 V 
                 0 
                 3 V 
                 0 
               
               
                 EfouLit 
                 3 V 
                 3 V 
                 3 V 
                 3 V 
                 0 
                 0 
               
               
                 Prog 
                 0 
                 0 
                 0 
                 0 
                 3 V 
                 3 V 
               
               
                 Vcasc 
                 3 V 
                 3 V 
                 3 V 
                 3 V 
                 V CGp  &lt; 0 
                 V CGp  &lt; 0 
               
               
                 Vpp 
                 3 V 
                 3 V 
                 V CGe  &gt;&gt; 0 
                 V CGe  &gt;&gt; 0 
                 0 
                 0 
               
               
                 V SP   
                 V CGr  &gt; 0 
                 V CGr  &gt; 0 
                 V CGe  &gt;&gt; 0 
                 V CGe  &gt;&gt; 0 
                 0 
                 0 
               
               
                 Vpn 
                 0 
                 0 
                 0 
                 0 
                 V CGp  &lt; 0 
                 V CGp  &lt; 0 
               
               
                 INVS 
                 0 
                 V CGr  &gt; 0 
                 0 
                 V CGe  &gt;&gt; 0 
                 0 
                 V CGp  &lt; 0 
               
               
                   
               
            
           
         
       
     
     The latch memory MV 1  is reinitialized by a write and read pulse RAZ. 
     In this Table 1, “col” is the abbreviation of “column”, “select” is the abbreviation of “selected” and VCGr, VCGe, VCGp respectively denote the voltages to be applied to the control gate when reading, erasing or programming. 
     The different voltages come from positive or negative charge pump circuits. 
     Thus, according to whether it is an erase (or read) or programming operation, the connections between the latch memory MV 1  and the level translator TRLN are switched such that a selected CGL line receives the high level from the level translator during erasing or reading (13 volts and 1 volt respectively) and the low level from the level translator during programming (−1.6 volt/−2.9 volts/−4 volts). 
     The decoder DCD 1  also comprises one bit line decoding unit DCBL per bit line, an example embodiment of which is shown in  FIG. 11 . 
     The function of the bit line decoder DCBL is, during writing, to store the data of a byte for the purpose of a future writing and to switch or not switch the high voltage to the bit line during the programming cycle according to the binary value to be programmed and, during reading, to multiplex the bit lines in order to route the bit lines belonging to the selected column to the read amplifiers. 
     In the example described here, taking account of the fact that an item of data is encoded in two bits, the BCBL unit comprises two latch memories MVA and MVB respectively allocated to the most significant bit DatMsb of the item of data and to the least significant bit DatLsb of the item of data and a module MCTL for controlling the state of the bit line BL in question. 
     The outputs SMVA and SMVB of the two latch memories MVA and MVB control the gates of the transistors N 14 -N 16  and N 13 , N 17  of the module MCTL. Moreover, three two-state signals pulse 1 , pulse 2 , pulse 3  respectively allocated to the three programming cycles CP 1 -CP 3  described above control the gates of three transistors N 10 -N 12 . In an active state (high) the signal pulse i (i=1, 2 or 3) rises to the high voltage (15 V for example) and in an inactive state (low) the signal is at the low voltage (0 V for example). 
     As mentioned above, one solution consists in limiting the bit line current in order to stop the programming naturally when the cell is put into conduction. This is here the function of the PMOS transistor P 2  connected in a common gate configuration and operating as a current copier (typically 10 nanoamps). The gate voltage VrefP of the transistor P 2  of the module MCTL is equal to Vpp−1 volt, which makes it possible to give it a gate-source voltage close to its threshold voltage. 
     The bit lines must receive from 0 to 3 programming cycles respectively controlled by the logic signals pulse 1 , pulse 2  and pulse 3  according to the possible value of the item of binary data. This is the function of the transistors N 10  to N 17 . 
     During erasure, pulse 1 , pulse 2 , pulse 3  are at 0 volt, the source is at 0 volt and the bit line BL is floating. Therefore, for a cell selected by the selection transistor TSL, the drain also changes to 0 volt because the cell is conducting and the source line SL is at 0 volt. 
     Moreover, during erasure and during programming, the logic signal Read controlling the transistor N 8  is at “0” whereas it is at “1” during a read operation. 
     The “column” signal controls a transistor N 9 . 
     The appended Table 2 summarizes the values of the different logic signals, of the outputs SMVA, SMVB and the states of certain transistors and of the bit line BL as a function of the numerical value of the item of data to be written. 
     
       
         
           
               
               
               
               
               
             
               
                 TABLE 2 
               
               
                   
               
             
            
               
                 Data 
                 DatMsb 
                 DatLsb 
                 SMVA 
                 SMVB 
               
               
                   
               
               
                 00 
                 0 
                 0 
                 0 
                 0 
               
               
                 01 
                 0 
                 1 
                 0 
                 1 
               
               
                 10 
                 1 
                 0 
                 1 
                 0 
               
               
                 11 
                 1 
                 1 
                 1 
                 1 
               
               
                   
               
            
           
           
               
               
               
               
               
               
            
               
                 Data 
                 N13 
                 N14 
                 N15 
                 N16 
                 N17 
               
               
                   
               
               
                 00 
                 cut off 
                 cut off 
                 cut off 
                 cut off 
                 cut off 
               
               
                 01 
                 conduct- 
                 cut off 
                 cut off 
                 cut off 
                 conduct- 
               
               
                   
                 ing 
                   
                   
                   
                 ing 
               
               
                 10 
                 cut off 
                 conduct- 
                 conduct- 
                 conduct- 
                 cut off 
               
               
                   
                   
                 ing 
                 ing 
                 ing 
               
               
                 11 
                 conduct- 
                 conduct- 
                 conduct- 
                 conduct- 
                 conduct- 
               
               
                   
                 ing 
                 ing 
                 ing 
                 ing 
                 ing 
               
               
                   
               
            
           
           
               
               
               
               
            
               
                 Data 
                 Pulse 1 = 1 
                 Pulse 2 = 1 
                 Pulse 3 = 1 
               
               
                   
               
               
                 00 
                 BL floating 
                 BL floating 
                 BL floating 
               
               
                 01 
                 BL selected 
                 BL floating 
                 BL floating 
               
               
                 10 
                 BL selected 
                 BL selected 
                 BL floating 
               
               
                 11 
                 BL selected 
                 BL selected 
                 BL selected 
               
               
                   
               
            
           
         
       
     
       FIG. 12  is a figure similar to  FIG. 9  but shows, in its lower section, the value of the logic signals pulse 1 , pulse 2  and pulse 3  corresponding to the three programming cycles CP 1 , CP 2 , CP 3  mentioned above. 
       FIGS. 13 and 14  show an example embodiment of the read circuit. 
     More precisely, in  FIG. 13 , the unit RL provides on the line the reference value of the voltage applied to the control gate during the reading and also delivered to one of the inputs of the read amplifier as will be seen below. 
     In the example described here, taking account that there are four conduction thresholds corresponding to four different values of the item of data, the unit RL comprises three reference voltage generators V ref1 , V ref2  and V ref3  as well as three switches SW 1 , SW 2 , SW 3  controlled respectively by three logic signals read 1 , read 2  and read 3  in order to select the appropriate reference voltage for delivering on the line CG ref . It is appropriate to note that it is possible to have a similar unit for selecting the appropriate gate voltages during the erase and programming phases. 
     In the example described and taking account of the calculated conduction thresholds, these reference voltages V ref1 , V ref2  and V ref3  are respectively taken as equal for example to −0.3 V, 0.95 V and 2.2 V. 
     The read circuit also comprises a unit BL 2  ( FIG. 14 ). This unit comprises a read amplifier SA and two latch memories MVA and MVB (since in the described example, the item of data is encoded in 2 bits). In practice there is one pair of latch memories MVA and MVB per bit line and multiplexed read amplifiers (8 read amplifiers for 512 bit lines). 
     The input of the read amplifier SA is connected to the bit line decoding unit DCBL ( FIG. 11 ) by the bus RDB and another input is connected to the line CG ref  of the unit RL. The output of the read amplifier SaOut is connected to the input of the two latch memories MVa and MVb whose states represent the 2-bit item of binary data derived from three successive reads with the three reference values V ref1 -V ref3 , beginning with the lowest value V ref1  and ending with the highest value V ref3 . 
     The output SaOut is at “1” if the cell is conducting and at “0” if the cell is cut off. 
     The output Msb of the flip-flop MVa will contain the value of the most significant bit of the read data whilst the output Lsb of the flip-flop MVb will contain the value of the least significant bit of that item of data. Before the three successive reads, the two latch memories are reinitialized (pulse RAZ to the logic “1” state). Table 3 summarizes the content of the two flip-flops MVa and MVb according to different possibilities. In this table, the “read 1  result” column indicates the different possible states of the read cell during the first read. The same applies to the “read 2  result” and “read 3  result” columns for the succeeding two reads. 
     
       
         
           
               
               
               
               
               
               
             
               
                 TABLE 3 
               
               
                   
               
               
                 read1 
                 read2 
                 read3 
                   
                   
                 Binary 
               
               
                 result 
                 result 
                 result 
                 Msb 
                 Lsb 
                 data 
               
               
                   
               
             
            
               
                 Cell 
                 Cell 
                 Cell 
                 1 
                 1 
                 11 
               
               
                 conducting 
                 conducting 
                 conducting 
               
               
                 Cell cut 
                 Cell 
                 Cell 
                 1 
                 0 
                 10 
               
               
                 off 
                 conducting 
                 conducting 
               
               
                 Cell cut 
                 Cell cut 
                 Cell 
                 0 
                 1 
                 01 
               
               
                 off 
                 off 
                 conducting 
               
               
                 Cell cut 
                 Cell cut 
                 Cell cut 
                 0 
                 0 
                 00 
               
               
                 off 
                 off 
                 off 
               
               
                   
               
            
           
         
       
     
     If of course a cell is conducting during a read associated with “readi”, it will be conducting during any following read and the Msb and Lsb values will not be modified during these following reads. 
     At the end of the three consecutive read steps, the content of the two latch memories MVa and MVb forms a binary word identical to the content of the latch memories MVA and MVB used for programming these items of data. 
     In all of the above, the various mathematical equations and the calculation of the conduction threshold values have been based, for reasons of simplification, on read currents identical to the bit line current limit during the programming (for example, 10 nA). 
     In practice the read currents can be higher, for example of the order of 1 microamp. 
     The conduction threshold of the cell depends on the injected current and a current shift gives rise to a shift of the conduction threshold. This shift is the same whether the cell is blank, written or erased. 
     In concrete terms, with respect to conduction thresholds calculated for a read current identical to the bit line current limit during programming (for example 10 nA), these conduction thresholds increase by 100 to 200 mV for a higher read current, for example of the order of 1 microamp. 
     However, this has no effect on the features of the invention. 
     In fact, in order to take account of this rising of the read current, and therefore of this rising of the conduction thresholds, in the determination of the read reference voltages, one solution consists in determining the conduction thresholds and the read reference voltages on the basis of read currents identical to the bit line current limit during programming (for example 10 nA) and to lower the values of the reference voltages thus obtained by a fixed value (200 mV for example) so that they correspond to the highest read currents (for example 1 microamp). Those skilled in the art will know how to determine this fixed value, knowing the value of the current limit and the real value of the read current.