FR2802697A1 - Procede de lecture d'une cellule memoire non volatile - Google Patents

Procede de lecture d'une cellule memoire non volatile Download PDF

Info

Publication number
FR2802697A1
FR2802697A1 FR9915819A FR9915819A FR2802697A1 FR 2802697 A1 FR2802697 A1 FR 2802697A1 FR 9915819 A FR9915819 A FR 9915819A FR 9915819 A FR9915819 A FR 9915819A FR 2802697 A1 FR2802697 A1 FR 2802697A1
Authority
FR
France
Prior art keywords
bit
erroneous
memory
cell
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9915819A
Other languages
English (en)
Other versions
FR2802697B1 (fr
Inventor
Rosa Francesco La
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics SA filed Critical STMicroelectronics SA
Priority to FR9915819A priority Critical patent/FR2802697B1/fr
Publication of FR2802697A1 publication Critical patent/FR2802697A1/fr
Application granted granted Critical
Publication of FR2802697B1 publication Critical patent/FR2802697B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

L'invention concerne un procédé de lecture d'un bit enregistré dans une cellule mémoire d'une mémoire non volatile, comprenant une étape de détection d'une caractéristique électrique rémanente (Vt, Id) de la cellule représentative de la valeur du bit. Selon l'invention, on attribue au bit une première valeur logique ( " 1 " ) quand la caractéristique rémanente (Id) de la cellule est supérieure à un premier seuil (Iref (1) ); on attribue au bit une deuxième valeur logique (" 0 ") quand la caractéristique rémanente (Id) de la cellule est inférieure à un second seuil (Iref (0) ) inférieur au premier seuil (Iref (1) ); on considère le bit comme erroné (Sx=1) quand la caractéristique rémanente (Id) de la cellule est comprise entre le premier (Iref (1) ) et le second (Iref (0) ) seuils.

Description

PROCEDE DE LECTURE D'UNE CELLULE MEMOIRE NON VOLATILE La présente invention concerne les mémoires non volatiles, notamment les mémoires programmables et effaçables électriquement du type EEPROM ou FLASH comprenant des cellules mémoire pourvues de transistors à grille flottante.
Dans les mémoires programmables et effaçables électriquement, la valeur d'un bit stocké dans une cellule mémoire est représentée par une caractéristique électrique rémanente de la cellule, qui peut être modifiée à volonté par des opérations d'effacement ou de programmation de la cellule pour l'enregistrement d'un "1" ou d'un "0".
Plus particulièrement, la programmation ou l'effacement d'une cellule mémoire comprenant un transistor à grille flottante consiste dans l'injection ou l'extraction de charges électriques dans la grille du transistor, par effet tunnel (effet Fowler-Nordheim) ou par injection d'électrons chauds (Hot Electron Injection), au moyen d'une haute tension de programmation ou d'effacement VPP de l'ordre de 10 à 20 V. Les charges électriques injectées ou extraites de la grille flottante déterminent la tension de seuil Vt du transistor, qui constitue ainsi la caractéristique électrique rémanente représentative du bit stocké dans la cellule mémoire.
La lecture d'une cellule mémoire comprenant un transistor à grille flottante consiste ainsi à comparer la tension de seuil Vt du transistor avec une tension de référence Vto qui se trouve sensiblement à mi-chemin entre la tension de seuil négative d'un transistor programmé et la tension de seuil positive d'un transistor effacé. La tension de seuil Vt du transistor est supposée demeurer stable dans le temps, normalement pendant plusieurs années, dans des conditions de température et d'utilisation déterminées. En d'autres termes, les charges électriques injectées dans la grille du transistor y demeurent indéfiniment piégées tant qu'une opération inverse d'effacement n'est pas effectuée, et les charges électriques extraites ne retournent pas, en principe, dans la grille effacée, tant qu'une opération inverse de programmation n'est pas effectuée.
Toutefois, il arrive que des imperfections de fabrication affectent la stabilité de certaines cellules entraînant occasionnellement une erreur de lecture d'un bit. Par exemple, la tension de seuil négative d'un transistor programmé, qui représente par convention un bit à "1", peut lentement évoluer vers une valeur positive. Tant que la tension de seuil reste inférieure à la tension de référence Vto, le transistor est considéré comme programmé. Toutefois, la tension de seuil peut également évoluer sensiblement au-delà de la tension de référence Vto. I1 se produit alors une corruption de donnée, un "0" étant lu dans la mémoire au lieu du "1" initialement enregistré, ou inversement.
Pour cette raison, une mémoire non volatile est généralement pourvue d'un circuit de correction d'erreur, pour détecter et corriger un bit erroné dans une chaîne de bits au moyen d'un code de correction d'erreur (ECC). Le code de correction d'erreur est inséré dans la chaîne de bits au moment de son enregistrement dans la mémoire, et est calculé au moyen d'un algorithme déterminé, par exemple l'algorithme de Hamming bien connu de l'homme de l'art.
L'inconvénient de l'algorithme de Hamming, et plus généralement de tout algorithme de correction d'erreur classique, est qu'il génère des codes d'une longueur non négligeable au regard du nombre de bits à sécuriser. Ainsi, un code de Hamming doit comprendre - au moins 4 bits pour détecter et corriger un bit erroné et un seul dans un mot de 8 bits, - au moins 5 bits pour détecter et corriger un bit erroné dans un mot de 16 bits, - au moins 6 bits pour détecter et corriger un bit erroné dans un mot de 32 bits, etc...
La prévision d'un tel code de correction complique l'architecture de la mémoire en raison du nombre de cellules mémoire supplémentaires devant être prévues pour son enregistrement. De plus, le circuit de correction d'erreur est d'autant plus complexe que le code de correction est long.
Pour fixer les idées, la figure 1 représente schématiquement l'architecture d'une mémoire MEM1 comprenant des lignes de mots WLo à WLN et des lignes de bits BLO à BL11. La mémoire MEMi est pourvue d'un décodeur de lignes de mots WLD, d'un décodeur de lignes de bits BLD et d'un circuit de lecture SA comprenant 12 circuits de lecture élémentaires SAO à<B>SA,,</B> ("sense amplifiers"). Chaque ligne de mot WLi comprend 8 bits de données b. à b<B>7</B> et quatre bits de contrôle b8 à b11 formant par exemple un code de Hamming, permettant de détecter et de corriger un bit erroné parmi les 12 bits b6 à b11. Lorsqu'une ligne de mot est sélectionnée par le décodeur WLD et que les cellules correspondantes sont activées en lecture par le décodeur BLD, le circuit SA délivre les 12 bits bo à b11 de la ligne de mot sélectionnée. Les bits b6 à b11 sont envoyés à un circuit de correction DCC, qui délivre en sortie les huit bits de données b6 à b<B>7</B> après avoir éventuellement détecté et corrigé un bit erroné.
Une telle mémoire présente l'inconvénient de comprendre 33% de cellules réservées à la détection et à la correction des défaillances éventuelles des autres cellules mémoire.
D'autre part, bien que le rapport entre le nombre de bits de contrôle et la longueur totale d'une ligne de mot soit plus avantageux dans le cas d'une ligne de mot de longueur importante, comme on l'a vu plus haut, la probabilité d'avoir plus d'un bit erroné dans une chaîne de bits de grande longueur est, en contrepartie, plus élevée. La fiabilité d'une mémoire va donc en diminuant avec l'accroissement de la taille des lignes de mots. Bien entendu, il est envisageable d'associer à une ligne de mot de grande taille un code de contrôle permettant la détection et la correction de deux bits distincts, mais cela est équivalent au fait de prévoir une mémoire ayant des lignes de mots deux fois plus courtes avec un code de correction d'un bit par ligne de mot. Ainsi, le rapport entre le pourcentage de bits de contrôle et la fiabilité d'une mémoire est pratiquement incompressible dans la technique actuelle.
La présente invention vise à pallier ces inconvénients.
Plus particulièrement, la présente invention vise un moyen permettant de réduire la taille des codes de correction d'erreur dans les mémoires non volatiles, et de simplifier l'architecture des mémoires et la structure des circuits de correction d'erreur.
Pour atteindre cet objectif, la présente invention se fonde sur la constatation selon laquelle la complexité d'un code de correction d'erreur est liée au fait que le code doit permettre à la fois d'identifier le bit erroné et de corriger le bit erroné identifié.
Ainsi, une idée générale de la présente invention est de séparer la fonction de détection d'erreur, d'une part, et la fonction de correction d'erreur, d'autre part.
Plus particulièrement, une première idée de la présente invention est d'intégrer la fonction de détection d'erreur dans le processus de lecture d'une cellule mémoire, en définissant, dans la fourchette de valeurs que peut présenter la caractéristique électrique rémanente d'une cellule mémoire, une région interdite se trouvant entre l'état programmé et l'état effacé. Cette région interdite est considérée, selon l'invention, comme correspondant à un bit erroné.
Une deuxième idée de la présente invention est de prévoir un procédé de correction d'erreur simplifié, dépourvu de la fonction de détection d'erreur, nécessitant un code de correction d'erreur de faible longueur.
Ainsi, la présente invention concerne un procédé de lecture d'un bit enregistré dans une cellule mémoire d'une mémoire non volatile, comprenant une étape de détection d'une caractéristique électrique rémanente de la cellule représentative de la valeur du bit, dans lequel on attribue au bit une première valeur logique quand la caractéristique rémanente de la cellule est supérieure à un premier seuil, on attribue au bit une deuxième valeur logique quand la caractéristique rémanente de la cellule est inférieure à un second seuil inférieur au premier seuil, et on considère le bit comme erroné quand la caractéristique rémanente de la cellule est comprise entre le premier et le second seuils.
Selon un mode de réalisation, on attribue au bit une valeur logique prédéterminée quand la caractéristique rémanente de la cellule est comprise entre le premier et le second seuils, tout en considérant le bit comme erroné.
Selon un mode de réalisation, un bit erroné est corrigé en calculant la bonne valeur du bit au moyen des bits d'une chaîne de bits lue dans la mémoire, la chaîne de bits comprenant le bit erroné et au moins un bit de correction d'erreur calculé à partir des autres bits de la chaîne de bits à un instant où le bit erroné était valable.
Selon un mode de réalisation, un bit erroné est corrigé en calculant la bonne valeur du bit au moyen des bits d'une chaîne de bits lue dans la mémoire, la chaîne de bits comprenant le bit erroné et un bit de parité calculé à partir des autres bits de la chaîne de bits à un instant où le bit erroné était valable.
Selon un mode de réalisation, un bit erroné est corrigé en remplaçant le bit erroné par un bit de parité calculé en fonction des bits de la chaîne de bits autres que le bit erroné.
Selon un mode de réalisation, on attribue à un bit erroné une valeur logique sans influence sur un calcul de parité, et le bit de parité est calculé à partir de tous les bits de la chaîne de bits y compris le bit erroné.
Selon un mode de réalisation, la cellule mémoire comprend un transistor à grille flottante, le bit est lu en appliquant une tension de lecture sur la grille du transistor et en comparant le courant traversant le transistor à grille flottante à deux courants de référence, le bit est considéré comme erroné lorsque le courant traversant le transistor à grille flottante est compris entre les deux courants de référence.
Selon un mode de réalisation, le procédé de l'invention est appliqué simultanément à la lecture de plusieurs bits d'une chaîne de bits stockée dans la mémoire, pour la correction d'un bit de la chaîne de bits.
Selon un mode de réalisation, le premier et le second seuils définissent une région comprenant le domaine des cellules vierges ou comprise dans le domaine des cellules vierges, de sorte que l'état erroné d'un bit reste stable dans le temps.
La présente invention concerne également un procédé de lecture d'un mot binaire dans une mémoire non volatile comprenant une pluralité de cellules mémoires, dans lequel au moins une partie des bits constituant le mot binaire est lue selon le procédé décrit ci-dessus.
La présente invention concerne également une mémoire non volatile comprenant des cellules mémoire agencées en lignes et en colonnes, la valeur d'un bit dans une cellule mémoire étant représentée par une caractéristique électrique rémanente de la cellule, et des moyens de lecture de cellules mémoire agencés pour délivrer un bit ayant une première valeur logique quand la caractéristique rémanente d'une cellule mémoire est supérieure à un premier seuil, délivrer un bit ayant une deuxième valeur logique quand la caractéristique rémanente d'une cellule mémoire est inférieure à un second seuil inférieur au premier seuil, et délivrer un signal de bit erroné quand la caractéristique rémanente d'une cellule mémoire est comprise entre le premier et le second seuils.
Selon un mode de réalisation, les moyens de lecture sont agencés pour délivrer un bit ayant la deuxième valeur logique quand la caractéristique rémanente d'une cellule mémoire est inférieure au premier seuil.
Selon un mode de réalisation, la mémoire comprend un circuit de correction pour corriger automatiquement un bit au moyen d'autres bits lus dans la mémoire, lorsque les moyens de lecture du bit délivrent un signal de bit erroné.
Selon un mode de réalisation, le circuit de correction comprend des moyens pour calculer un bit de parité à partir des bits d'une chaîne de bits lue dans la mémoire, et des moyens pour remplacer le bit erroné par le bit de parité calculé.
Selon un mode de réalisation, la mémoire comprend des cellules mémoire comportant des transistors à grille flottante, et des moyens pour comparer le courant traversant une cellule à deux courants de référence et émettre le signal de bit erroné lorsque le courant traversant le transistor à grille flottante est compris entre les deux courants de référence.
Selon un mode de réalisation, le premier et le second seuils définissent une région comprenant le domaine des cellules vierges ou comprise dans le domaine des cellules vierges, de sorte que l'état erroné d'un bit reste stable dans le temps. Ces objets et caractéristiques de la présente invention, ainsi que d'autres, seront exposés plus en détail dans la description suivante d'un procédé de lecture d'une cellule mémoire incorporant une fonction de détection d'erreur, et d'un procédé de correction d'erreur dépourvu de la fonction de détection d'erreur, en relation avec les figures jointes parmi lesquelles - la figure 1 représente schématiquement l'architecture d'une mémoire non volatile classique, - les figures 2A, 2B illustrent un procédé classique de lecture d'une cellule mémoire comprenant un transistor à grille flottante, - la figure 3 est le schéma électrique classique d'un circuit de lecture d'une cellule mémoire, - les figures 4A, 4B illustrent un procédé selon l'invention permettant de lire une cellule mémoire et de détecter un bit erroné, - la figure 5 est le schéma électrique d'un circuit de lecture mettant en #uvre le procédé de l'invention, - la figure 6 illustre un procédé selon l'invention permettant de corriger un bit erroné, - la figure 7 représente de façon schématique l'architecture d'une mémoire non volatile selon l'invention, et - la figure 8 représente le schéma électrique d'un circuit de correction d'erreur selon l'invention, présent dans la mémoire de la figure 7.
Procédé classique de lecture d'une cellule mémoire La figure 2A représente trois courbes C0, C1, C2 illustrant la distribution statistique des tensions de seuil Vt d'un transistor à grille flottante selon l'état du transistor, l'axe des ordonnées représentant une probabilité P. La courbe C0, centrée sur une valeur positive Vto, représente la distribution de la tension de seuil Vt d'un transistor vierge qui n'a jamais été programmé ou effacé ou qui a été effacé au moyen d'une lumière ultraviolette. La courbe C1, centrée sur une valeur négative Vto-, représente la distribution de la tension de seuil négative Vt- d'un transistor programmé, et correspond par convention à un bit égal à 1. La courbe C2, centrée sur une valeur positive Vto+ supérieure à Vto, représente la distribution de la tension de seuil positive Vt+ d'un transistor effacé, et correspond par convention à un bit égal à 0.
La figure 2B représente, en liaison avec la figure 2A, des courbes C3, C4, C5 du courant Id traversant un transistor à grille flottante en fonction de la tension grille-source Vgs qui lui est appliquée, pour une tension drain-source Vds constante. La courbe C3 est la courbe courant/tension d'un transistor vierge de tension de seuil Vto. La courbe C4 est la courbe courant/tension d'un transistor programmé ayant une tension de seuil Vto- et la courbe C5 est la courbe courant/tension d'un transistor effacé ayant une tension de seuil Vto+.
En pratique, la détection de la tension de seuil Vt d'un transistor, permettant la "lecture" d'un bit, est réalisée par une mesure du courant Id traversant le transistor en appliquant sur sa grille une tension de lecture Vgs = Vread prédéterminée. Le point de fonctionnement correspondant sur la courbe C3 (cellule vierge) donne un courant Iref. Ainsi, tout transistor dans l'état programmé ayant une tension de seuil vt comprise dans la courbe C1 de la figure 2A présente un courant Id supérieur à Iref, et tout transistor dans l'état effacé ayant une tension de seuil Vt comprise dans la courbe C2 présente un courant Id inférieur à Iref. Par exemple, des transistors ayant respectivement des tensions de seuil égales aux tensions Vto- et Vto' (courbes C4 et C5) sont traversés par des courants I1 et 12 représentés sur la figure 2B lorsque la tension Vread leur est appliquée.
La figure 3 représente un circuit classique de lecture SA1 d'une cellule mémoire CELL, généralement appelée "sense amplifier" (amplificateur détecteur) par l'homme de l'art. La cellule mémoire CELL est agencée dans une ligne de bit 110 alimentée par une tension Vcc, comprenant en série un transistor-diode 110, un transistor cascode 112, deux transistors 113, 114 de sélection de la ligne de bit et la cellule mémoire CELL. La cellule mémoire CELL comprend en série un transistor de sélection de cellule TSL et un transistor à grille flottante FGT. Le circuit de lecture SA1 comprend le transistor-diode 111 et le transistor cascode 112 susmentionnés, une branche 120 et un comparateur 140. La branche 120 comprend en série un transistor-diode 121 et un générateur de courant 122 délivrant le courant de référence Iref précédemment décrit. La cathode du transistor-diode 111 est connectée à l'entrée négative du comparateur 140 et la cathode du transistor-diode 121 est connectée à l'entrée positive du comparateur 140.
Pour sélectionner la ligne de bit et lire la cellule CELL, deux signaux Y1, Y2 délivrés par un décodeur de lignes de bits sont appliqués sur les grilles des transistors 113, 114, une tension Vcasc est appliquée sur le transistor 112, une tension Vs est appliquée sur la grille du transistor de sélection TSL et la tension de lecture Vread est appliquée sur la grille du transistor FGT. Le courant drain-source icell traversant le transistor FGT fait apparaître une tension Vcell sur la cathode du transistor-diode 111. Le comparateur 140 reçoit ainsi sur son entrée négative la tension Vcell et sur son entrée positive une tension Vref délivrée par la branche 120, et sa sortie délivre le bit "b" enregistré dans la cellule. Le bit "b" est à 1 si le courant Icell est supérieur à Iref ou à 0 si le courant Icell est inférieur à Iref .
Comme cela a été expliqué au préambule, l'existence d'un défaut de fabrication du transistor FGT peut avoir comme conséquence le fait que la tension de seuil Vt- du transistor FGT dans l'état programmé, appartenant à la courbe C1 (figure 2A), évolue lentement vers des valeurs positives se trouvant dans une région comprenant la courbe C0, qui représente le domaine des cellules vierges. Tant que la tension Vt- reste inférieure à la tension Vto le circuit de lecture SA1 délivre un bit à 1. Toutefois, la tension Vt- peut également évoluer sensiblement au-delà de la tension Vto, tout en restant dans le domaine des cellules vierges car un transistor programmé ne peut pas naturellement devenir un transistor effacé, et inversement. Le dépassement de la tension Vto provoque une corruption de donnée car la sortie du circuit de lecture SAl délivre dans ce cas un bit à 0. Inversement, la tension de seuil Vt` du transistor FGT dans l'état effacé, appartenant à la courbe C2, peut évoluer vers des valeurs faibles se trouvant dans la partie gauche du domaine des cellules vierges. Le circuit de lecture SA1 délivre alors un bit à 1 au lieu d'un bit à 0, ou inversement. Une telle erreur de lecture est détectée dans l'art antérieur au moyen d'un code de correction d'erreur dont les inconvénients ont été mentionnés au préambule.
Procédé de lecture d'une cellule mémoire incorporant une détection d'erreur On décrira maintenant un procédé selon l'invention permettant de lire une cellule mémoire tout en détectant la présence d'un bit erroné sans qu'il soit nécessaire de faire appel à un algorithme particulier.
Selon l'invention on définit sur la figure 4A, qui est identique à la figure 2A, une région "interdite" délimitée par deux tensions Vtl et Vt2, la tension Vt2 étant supérieure à Vt,. La tension Vtl est de préférence comprise entre la courbe C1 et la courbe CO et la tension Vt2 comprise entre la courbe CO et la courbe C2. En d'autres termes, la région interdite comprend le domaine des cellules vierges où se produisent les phénomènes de corruption de données, comme on l'a vu plus haut. Selon l'invention, toute cellule mémoire présentant une tension de seuil vt comprise dans la région interdite sera réputée contenir un bit erroné. L'état "erroné" selon l'invention reste stable dans le temps car la tension de seuil d'un transistor initialement programmé ou effacé, ayant évolué vers le domaine des cellules vierges, ne peut pas naturellement évoluer au-delà de ce domaine.
Sur la figure 4B, qui est semblable à la figure 2B, les deux tensions Vtl, Vt2 correspondent à deux courbes tension/courant C7, C8, pour une tension de polarisation drain-souce Vds constante et déterminée. En choisissant une tension de lecture Vread supérieure à la tension Vt2, appliquée sur la grille d'une cellule mémoire, les points de fonctionnement correspondants sur les courbes C7, C8 définissent deux courants Iref (1) , Iref (o) qui sont respectivement supérieur et inférieur au courant de référence Iref utilisé dans l'art antérieur pour lire une cellule. Ainsi, selon l'invention, tout transistor à grille flottante ayant un courant drain-source Id supérieur à Iref (1) sera réputé contenir un bit à 1, tout transistor à grille flottante ayant un courant drain- source Id inférieur à Iref(o) sera réputé contenir un bit à 0, et tout transistor à grille flottante ayant un courant de fonctionnement Id compris entre Iref(o) et Iref(l) sera réputé contenir un bit erroné.
Exemple de réalisation d'un circuit de lecture mettant en oeuvre le procédé selon l'invention La figure 5 représente un circuit de lecture SA2 selon l'invention, connecté à une cellule mémoire CELL agencée dans une ligne de bit 110. La cellule CELL et la ligne de bit 110 ont été décrites plus haut en relation avec la figure 3.
Le circuit de lecture SA2 comprend le transistor- diode 110 et le transistor cascode 112 de la ligne de bit 110, deux branches 220, 230 et deux comparateurs 240, 250. La branche 220 comprend un transistor-diode 221 et un générateur de courant 222 délivrant le courant de référence Iref(1) décrit plus haut. La branche 230 comprend un transistor-diode 231 et un générateur de courant 232 délivrant le courant de référence Iref(o) décrit plus haut. La ligne de bit 110 délivre une tension Vcell prélevée sur la cathode du transistor-diode 111, la branche 220 délivre une tension Vref(1) prélevée sur la cathode du transistor-diode 221 et la branche 230 délivre une tension Vref(0) Prélevée sur la cathode du transistor- diode 231. Les tensions Vce11 i Vref (i) sont appliquées respectivement sur l'entrée négative et l'entrée positive du comparateur 240 dont la sortie délivre le bit "b" lu dans la cellule. Les tensions Vcell# Vref (o) sont appliquées respectivement sur l'entrée négative et l'entrée positive du comparateur 250 dont la sortie est combinée avec la sortie du comparateur 240 dans une porte OU Exclusif 260. La sortie de la porte 260 délivre un signal d'erreur Sx.
Le fonctionnement du circuit SA2 est décrit par le tableau ci-après. Par convention, le signal Sx égal à 1 indique une erreur de lecture.
Figure img00130018
Etat <SEP> de <SEP> la <SEP> cellule <SEP> Courant <SEP> Icell <SEP> Bit <SEP> "b" <SEP> Signal <SEP> Sx
<tb> Programmée <SEP> Icell <SEP> ' <SEP> Iref <SEP> (i) <SEP> b <SEP> = <SEP> 1 <SEP> 0
<tb> Effacée <SEP> Ice11 <SEP> < <SEP> Iref(o) <SEP> b <SEP> = <SEP> 0 <SEP> 0
<tb> Etat <SEP> Indéterminé <SEP> Iref <SEP> (o) <SEP> < <SEP> Icell <SEP> < <SEP> Iref <SEP> (i) <SEP> b <SEP> = <SEP> 0 <SEP> 1 <SEP> (erreur)
<tb> (cellule <SEP> vierge) Ainsi, le circuit SA2 permet de détecter une cellule "douteuse" dont la tension de seuil Vt s'est décalée depuis sa valeur originelle pour entrer dans la région interdite définie plus haut, qui comprend le domaine des cellules vierges. Ici, un bit b erroné correspond à un "0" à la sortie du comparateur 240 mais cette valeur est sans importance puisque le signal Sx égal à "1" indique que le bit doit être corrigé. Comme on l'a indiqué plus haut, un bit erroné reste stable dans le temps et ne peut pas tendre vers la valeur 0 ou 1 car le domaine des cellules vierges est stable par nature.
Procédé de correction d'un bit sans détection d'erreur Le procédé de lecture qui vient d'être décrit permet de détecter un bit erroné. Un bit erroné étant généralement inclus dans une chaîne de bits, il peut être corrigé au moyen de tout algorithme classique, en insérant un code de correction dans la chaîne de bits. Toutefois, on rappelle ici qu'un objectif de la présente invention est de prévoir un algorithme de correction qui soit simple à mettre en couvre et nécessite un code de correction de faible longueur. La détection d'erreur étant effectuée au stade de la lecture du bit, il suffit que le procédé permette de corriger le bit erroné et il n'est pas nécessaire qu'il le détecte.
Ici, l'idée de l'invention est d'effectuer cette correction au moyen d'un bit de parité. Plus particulièrement, la présente invention propose d'utiliser un bit de parité comme moyen de correction d'erreur alors qu'un tel bit de parité est utilisé dans l'art antérieur comme moyen de détection d'erreur. Remarquons en effet que dans une chaîne de bits comprenant un bit de parité calculé à partir des autres bits de la chaîne de bits, chaque bit de la chaîne de bits est le bit de parité des autres bits de la chaîne de bits. I1 est donc possible de retrouver la valeur originelle d'un bit erroné en recherchant la valeur du bit qui satisfait le lien de parité existant entre tous les bits de la chaîne.
La manière la plus directe pour mettre en couvre ce procédé consiste à calculer un second bit de parité à partir de tous les autres bits de la chaîne de bits y compris le premier bit de parité (le bit de parité initial), à l'exclusion du bit erroné. Le second bit de parité ainsi calculé donne la bonne valeur du bit erroné. Rappelons qu'un bit de parité est par convention égal à 1 quand le nombre de bits à 1 est impair, et à 0 quand le nombre de bits à 1 est pair.
Le procédé selon l'invention est illustré par la figure 6, qui représente la chaîne de bits bo à b8 suivante 1 1 X 0 1 0 0 1 1 dans laquelle le bit b8 est le bit de parité des bits b. à b<B>7</B>, calculé à un instant où ceux-ci sont présumés valables. Le bit b2 est présumé erroné et sa valeur est représentée par un "X". Selon l'invention, on calcule un nouveau bit de parité b9 à partir des bits b., b1, b3 à b8. Le nouveau bit de parité b9, ici égal à 1, est placé dans la chaîne de bits à la place du bit erroné b2.
Outre son extrême simplicité, ce procédé présente l'avantage de ne nécessiter qu'un seul bit de parité pour corriger un bit erroné, quelle que soit la longueur de la chaîne de bits. I1 est bien entendu possible de prévoir deux bits de parité dans une chaîne de bits pour corriger deux bits erronés, trois bits de parité pour corriger trois bits erronés, etc.. Par exemple, la chaîne suivante: bo b1 b2 b3 b4 b5 b6 b7 b8 b9 comporte 8 bits de données bo à b<B>7</B>. Le bit b8 est le bit de parité des bits bo-b3 et le bit b9 est le bit de parité des bits b4-b7.
Bien entendu, le calcul de parité peut être effectué selon toute autre convention, par exemple en prenant en compte le nombre impair de bits à 0 ou le nombre pair de bits à 1. De plus, le bit de parité n'est pas nécessairement placé en bout de chaîne et peut occuper un rang prédéterminé dans une chaîne de bits.
Mise en aeuvre conjointe du procédé de lecture et du procédé de correction on décrira maintenant un exemple de mise en oeuvre conjointe des deux procédés selon l'invention dans une mémoire MEM2 représentée schématiquement sur la figure 7. La mémoire MEM2 comprend des lignes de mots WLo à WLN et des lignes de bits BLo à BL8 comprenant chacune 8 bits de données b. à b<B>7</B> et un bit de parité b8. La mémoire MEM1 comporte un décodeur de lignes de mots WLD, un décodeur de lignes de bits BLD et un circuit de lecture SA3. Le circuit SA3 comprend 8 circuits de lecture SA2o à SA27 et un circuit de lecture SA18. Les circuits SA2o à SA27 sont conformes au circuit SA2 décrit plus haut en relation avec la figure 5, et sont dédiés à la lecture des bits de données bo-b7. Le circuit SAl$ est conforme au circuit classique SA1 décrit en relation avec la figure 3 et est dédié à la lecture du bit de parité b$. Le circuit de lecture du bit de parité pourrait bien entendu être un circuit SA2 selon l'invention, mais la détection d'une erreur sur le bit de parité ne présente pas ici un grand intérêt. Ainsi, le circuit SA3 délivre en sortie les neuf bits bo-b8 d'une ligne de mot WL; sélectionnée par le décodeur WLD et huit signaux d'erreur Sxo à Sx7 correspondant aux bits de données b0 à b<B>7</B>. Les bits b0 à b$ et les signaux Sxo à Sx7 sont appliqués à l'entrée d'un circuit de correction d'erreur DCC1 selon l'invention. Le circuit DCC1 délivre en sortie les huit bits de données bo à b<B>7</B> après avoir si nécessaire corrigé un bit erroné b;, si le signal Sx; émis pour ce bit est égal à 1.
I1 est clair que la mémoire MEM2 est d'une structure plus simple que la mémoire MEM1 décrite au préambule, puisqu'un seul bit de correction b$ est associé à chaque mot de 8 bits. Ainsi, les bits de correction ne représentent ici que 12,5 % des cellules de la mémoire MEM2 contre 33% dans l'art antérieur. De plus, le circuit de correction peut être réalisé de façon simple comme cela sera décrit maintenant.
La figure 8 représente un mode de réalisation du circuit de correction DCC1. Celui-ci comprend huit multiplexeurs MUXO à MUX7 et un circuit PCC de calcul de parité, prenant ici la forme d'une porte OU Exclusif à neuf entrées. Le circuit PCC reçoit en entrée les neuf bits b. à b8 délivrés par le circuit de lecture SA3 et délivre un bit de parité b9. Les multiplexeurs MUXO à MUX7 comprennent chacun deux entrées de données et une entrée de commande. Chaque multiplexeur MUXO à MUX7 reçoit sur sa première entrée de donnée l'un des bits b. à b<B>7</B> délivrés par les circuits SA2o-SA27, reçoit le bit de parité b9 sur son autre entrée de donnée et l'un des signaux Sxo-Sx7 sur son entrée de commande.
Le fonctionnement du circuit correcteur DCC1 est particulièrement simple. Chaque multiplexeur MUXO à MUX7 sélectionne sur sa sortie le bit b; reçu en entrée si le signal Sx; sur l'entrée de commande est à 0, ou sélectionne sur sa sortie le bit de parité b9 si le signal Sx; est égal à 1 (bit erroné). Le circuit DCC1 réalise ainsi le procédé décrit plus haut, en remplaçant un bit erroné par le bit de parité b9 calculé à partir de tous les bits du mot binaire b,)-b8, y compris le bit de parité b8. Un bit erroné étant ici par convention égal à 0, comme décrit plus haut, son injection sur l'entrée du circuit PCC est sans influence sur le calcul de parité, qui ne prend en compte que le nombre de "1" présent dans la chaîne de bits.
Bien entendu, le circuit DCC1 ne peut assurer que la correction d'un seul bit à la fois. Pour corriger deux bits ou plus, il faut ajouter un ou plusieurs bits de parité supplémentaires et décomposer le mot binaire en deux ou plusieurs chaînes de bits élémentaires comprenant chacune un bit de parité, comme cela a déjà été expliqué plus haut.
Domaine d'application de l'invention Dans ce qui précède, on a décrit un procédé de lecture d'une cellule mémoire de type EEPROM, dans laquelle l'état programmé et l'état effacé se traduisent par des tensions de seuil Vt négatives ou positives. Il apparaîtra clairement à l'homme de l'art que l'enseignement qui précède est applicable aux cellules mémoires de type FLASH, qui ont des transistors à grille flottante dont la tension de seuil Vt, bien que toujours positive, présente des valeurs différentes entre l'état effacé et l'état programmé, se trouvant respectivement au-dessus et au-dessous du domaine des cellules vierges. Comme cela est bien connu de l'homme de l'art, le domaine des tensions de seuil des cellules vierges est une caractéristique technologique que l'on maîtrise par un contrôle du dopage des transistors et/ou de l'épaisseur de l'oxyde de grille. Comme précédemment, on définit une région "interdite" délimitée par deux tensions de référence Vtl, Vt2 et se trouvant à mi-chemin entre la région des tensions de seuil des transistors programmés et la région des tensions de seuil des transistors effacés. De préférence, cette région interdite doit comprendre le domaine des cellules vierges ou au moins être comprise dans le domaine des cellules vierges, afin que l'état "erroné" selon l'invention soit stable.
De façon encore plus générale, l'enseignement qui précède est applicable à toute mémoire non volatile dont les cellules mémoires présentent une caractéristique électrique rémanente susceptible de glisser lentement vers une valeur erronée suite à un défaut de fabrication. La présente invention est ainsi applicable, notamment, aux mémoires ferro-electriques.
Par ailleurs, il apparaîtra clairement à l'homme de l'art que le procédé de correction d'erreur selon l'invention peut être combiné avec tout procédé quelconque de détection d'erreur. De même, le procédé de lecture selon l'invention incorporant une détection d'erreur peut être combiné avec tout procédé quelconque de correction d'erreur.

Claims (10)

<U>REVENDICATIONS</U>
1. Procédé de lecture d'un bit enregistré dans une cellule mémoire (CELL) d'une mémoire non volatile (MEM2), comprenant une étape de détection d'une caractéristique électrique rémanente (Vt, Id) de la cellule représentative de la valeur du bit, caractérisé en ce que - on attribue au bit une première valeur logique ("1") quand la caractéristique rémanente de la cellule est supérieure à un premier seuil (Iref(1)), - on attribue au bit une deuxième valeur logique ("0") quand la caractéristique rémanente de la cellule est inférieure à un second seuil (Iref (o)) inférieur au premier seuil (Iref(1)) , et - on considère le bit comme erroné (Sx=1) quand la caractéristique rémanente de la cellule est comprise entre le premier (Iref (1) ) et le second (Iref (o)) seuils.
2. Procédé selon la revendication 1, dans lequel on attribue au bit une valeur logique prédéterminée ("0") quand la caractéristique rémanente de la cellule est comprise entre le premier et le second seuils, tout en considérant le bit comme erroné (Sx=1).
3. Procédé selon l'une des revendications 1 et 2, dans lequel un bit erroné (b2) est corrigé en calculant la bonne valeur du bit au moyen des bits (b1, b3-b8) d'une chaîne de bits (bl-b8) lue dans la mémoire, la chaîne de bits comprenant le bit erroné (b2) et au moins un bit de correction d'erreur (b8) calculé à partir des autres bits (bl-b7) de la chaîne de bits à un instant où le bit erroné (b2) était valable.
4. Procédé selon l'une des revendications 1 et 2, dans lequel un bit erroné (b2) est corrigé en calculant la bonne valeur du bit au moyen des bits (b1, b3-b8) d'une chaîne de bits (bl-b8) lue dans la mémoire, la chaîne de bits comprenant le bit erroné (b2) et un bit de parité (b8) calculé à partir des autres bits (bl-b7) de la chaîne de bits à un instant où le bit erroné (b2) était valable.
5 Procédé selon la revendication 4, dans lequel un bit erroné (b2) est corrigé en remplaçant le bit erroné (b2) par un bit de parité (b9) calculé en fonction des bits (b1, b3-b8) de la chaîne de bits autres que le bit erroné (b2)-
6. Procédé selon la revendication 5 dans lequel on attribue à un bit erroné (b2) une valeur logique ("0") sans influence sur un calcul de parité, et le bit de parité (b9) est calculé à partir de tous les bits (bl-b8) de la chaîne de bits y compris le bit erroné (b2).
7. Procédé selon l'une des revendications 1 à 6 dans lequel la cellule mémoire (CELL) comprend un transistor à grille flottante (FGT), le bit est lu en appliquant une tension de lecture (Uread) sur la grille du transistor et en comparant le courant (Id) traversant le transistor à grille flottante à deux courants de référence (Iref (0) # Iref (1) ) , le bit est considéré comme erroné lorsque le courant traversant le transistor à grille flottante est compris entre les deux courants de référence.
8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce qu'il est appliqué simultanément à la lecture de plusieurs bits (bl-b7) d'une chaîne de bits (bl-b8) stockée dans la mémoire, pour la correction d'un bit de la chaîne de bits.
9. Procédé selon l'une des revendications 1 à 8, dans lequel le premier (Iref(l)) et le second (Iref(o) ) seuils définissent une région comprenant le domaine des cellules vierges ou comprise dans le domaine des cellules vierges, de sorte que l'état erroné d'un bit reste stable dans le temps.
10. Procédé de lecture d'un mot binaire dans une mémoire non volatile (MEM2) comprenant une pluralité de cellules mémoires (CELL), caractérisé en ce qu'au moins une partie des bits constituant le mot binaire est lue selon le procédé de l'une des revendications 1 à 9. il. Mémoire non volatile (MEM2) comprenant des cellules mémoire (CELL) agencées en lignes et en colonnes, la valeur d'un bit dans une cellule mémoire étant représentée par une caractéristique électrique rémanente de la cellule (Vt, Id), caractérisé en ce qu'elle comprend des moyens (SA3) de lecture de cellules mémoire agencés pour - délivrer un bit ayant une première valeur logique ("1") quand la caractéristique rémanente d'une cellule mémoire est supérieure à un premier seuil (Iref(1))p - délivrer un bit ayant une deuxième valeur logique ("0") quand la caractéristique rémanente d'une cellule mémoire est inférieure à un second seuil (Iref(0)) inférieur au premier seuil (Iref (1>) , et - délivrer un signal de bit erroné (Sx=1) quand la caractéristique rémanente d'une cellule mémoire est comprise entre le premier (Iref (1>) et le second (Iref (o) ) seuils. 12. Mémoire selon la revendication il, dans laquelle les moyens de lecture sont agencés pour délivrer un bit ayant la deuxième valeur logique ("0") quand la caractéristique rémanente d'une cellule mémoire est inférieure au premier seuil. 13. Mémoire selon l'une des revendications 11 et 12, comprenant un circuit de correction (DCC1) pour corriger automatiquement un bit au moyen d'autres bits lus dans la mémoire, lorsque les moyens (SA3) de lecture du bit délivrent un signal de bit erroné (Sx=1). 14. Mémoire selon la revendication 13, dans laquelle le circuit de correction (DCC1) comprend des moyens (PCC) pour calculer un bit de parité (b9) à partir des bits d'une chaîne de bits (bo-be) lue dans la mémoire, et des moyens pour remplacer le bit erroné par le bit de parité calculé (b9) . 15. Mémoire selon l'une des revendications 11 à 14, comprenant des cellules mémoire (CELL) comportant des transistors à grille flottante (FGT), et des moyens (SA2) pour comparer le courant traversant une cellule à deux courants de référence (Iref (i) , Iref (o)) , et émettre le signal de bit erroné (Sx=1) lorsque le courant traversant le transistor à grille flottante est compris entre les deux courants de référence. 16. Mémoire selon l'une des revendications il à 15, dans laquelle le premier (Iref (i)) et le second (Iref (o) ) seuils définissent une région comprenant le domaine des cellules vierges ou comprise dans le domaine des cellules vierges, de sorte que l'état erroné d'un bit reste stable dans le temps.
FR9915819A 1999-12-15 1999-12-15 Procede de lecture d'une cellule memoire non volatile Expired - Fee Related FR2802697B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9915819A FR2802697B1 (fr) 1999-12-15 1999-12-15 Procede de lecture d'une cellule memoire non volatile

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9915819A FR2802697B1 (fr) 1999-12-15 1999-12-15 Procede de lecture d'une cellule memoire non volatile

Publications (2)

Publication Number Publication Date
FR2802697A1 true FR2802697A1 (fr) 2001-06-22
FR2802697B1 FR2802697B1 (fr) 2005-03-04

Family

ID=9553290

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9915819A Expired - Fee Related FR2802697B1 (fr) 1999-12-15 1999-12-15 Procede de lecture d'une cellule memoire non volatile

Country Status (1)

Country Link
FR (1) FR2802697B1 (fr)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0305987A2 (fr) * 1987-08-31 1989-03-08 Oki Electric Industry Company, Limited Dispositif de mémoire autocorrecteur à semi-conducteur et microcalculateur faisant usage d'un tel dispositif
EP0307958A2 (fr) * 1987-09-18 1989-03-22 Oki Electric Industry Company, Limited Système EEPROM comprenant une fonction de détection d'erreur de bit
EP0399258A2 (fr) * 1989-05-25 1990-11-28 Rohm Co., Ltd. Dispositif de mémoire à semi-conducteurs avec fonction autocorrectrice
EP0428396A2 (fr) * 1989-11-16 1991-05-22 Oki Electric Industry Co., Ltd. Circuit de correction d'erreur de bit pour une mémoire non volatile

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0305987A2 (fr) * 1987-08-31 1989-03-08 Oki Electric Industry Company, Limited Dispositif de mémoire autocorrecteur à semi-conducteur et microcalculateur faisant usage d'un tel dispositif
EP0307958A2 (fr) * 1987-09-18 1989-03-22 Oki Electric Industry Company, Limited Système EEPROM comprenant une fonction de détection d'erreur de bit
EP0399258A2 (fr) * 1989-05-25 1990-11-28 Rohm Co., Ltd. Dispositif de mémoire à semi-conducteurs avec fonction autocorrectrice
EP0428396A2 (fr) * 1989-11-16 1991-05-22 Oki Electric Industry Co., Ltd. Circuit de correction d'erreur de bit pour une mémoire non volatile

Also Published As

Publication number Publication date
FR2802697B1 (fr) 2005-03-04

Similar Documents

Publication Publication Date Title
EP0568439B1 (fr) Procédé et circuit de détection de fuites de courant dans une ligne de bit
EP0674264B1 (fr) Circuit de sélection d&#39;éléments de mémoire redondants et mémoire &#34;FLASH EEPROM&#34; comportant ledit circuit
FR2682503A1 (fr) Procede de reparation de cellules sur-effacees contenues dans une memoire flash.
FR2851074A1 (fr) Memoire flash sectorisee comprenant des moyens de controle et de rafraichissement de cellules memoire
FR2640797A1 (fr) Dispositif de memoire electriquement effacable programmable a semi-conducteur et procede pour l&#39;effacement et la programmation de celui-ci
EP0645714B1 (fr) Circuit de redondance dynamique pour mémoire en circuit intégré
EP0300885A1 (fr) Circuit intégré à mémoire comportant un dispositif anti-fraude
US20060018153A1 (en) Operating array cells with matched reference cells
FR2799874A1 (fr) Dispositif de memoire a semiconducteur
FR2800503A1 (fr) Dispositif de memorisation a semiconducteur remanent permettant de maintenir une marge entre les distributions de tensions de seuil
FR2896612A1 (fr) Dispositif de memoire non volatile a rafraichissement periodique et procede de programmation d&#39;un tel dispositif
EP1630820B1 (fr) Procédé de programmation de cellules mémoire incluant une détection des dégradations de transconductance
FR3025928A1 (fr)
EP1109321B9 (fr) Procédé de correction d&#39;un bit dans une chaîne de bits
CA1282875C (fr) Dispositif de detection du fonctionnement du systeme de lecture d&#39;une cellule-memoire eprom ou eeprom
EP1278199A2 (fr) Mémoire EEPROM protégée contre les effets d&#39;un claquage de transistor d&#39;accès
FR2816750A1 (fr) Memoire flash comprenant des moyens de controle de la tension de seuil de cellules memoire
FR3044817A1 (fr) Procede de gestion d&#39;une ligne de bits defectueuse du plan memoire d&#39;une memoire non volatile et dispositif de memoire correspondant
FR2875352A1 (fr) Procede de detection et de correction d&#39;erreurs pour une memoire et circuit integre correspondant
EP0977120B1 (fr) Mémoire rom à correction par redondance
FR2802697A1 (fr) Procede de lecture d&#39;une cellule memoire non volatile
FR3044460A1 (fr) Amplificateur de lecture pour memoire, en particulier une memoire eeprom
EP0676769A1 (fr) Mémoire non volatile modifiable électriquement incorporant des fonctions de test
FR2938109A1 (fr) Memoire eeprom protegee contre les effets de claquage de transistors mos
EP0678875A1 (fr) Procédé d&#39;effacement d&#39;une mémoire et circuits de mise en oeuvre

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20070831