<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ep-patent-document PUBLIC "-//EPO//EP PATENT DOCUMENT 1.4//EN" "ep-patent-document-v1-4.dtd">
<ep-patent-document id="EP00125557B9W1" file="EP00125557W1B9.xml" lang="fr" country="EP" doc-number="1109321" kind="B9" correction-code="W1" date-publ="20091118" status="c" dtd-version="ep-patent-document-v1-4">
<SDOBI lang="fr"><B000><eptags><B001EP>......DE....FRGB..IT................................................................................</B001EP><B005EP>J</B005EP><B007EP>DIM360 Ver 2.15 (14 Jul 2008) -  2999001/0</B007EP></eptags></B000><B100><B110>1109321</B110><B120><B121>FASCICULE DE BREVET EUROPEEN CORRIGE</B121></B120><B130>B9</B130><B132EP>B1</B132EP><B140><date>20091118</date></B140><B150><B151>W1</B151><B155><B1551>de</B1551><B1552>Ansprüche DE</B1552><B1551>en</B1551><B1552>Claims DE</B1552><B1551>fr</B1551><B1552>Revendications DE</B1552><B1551>de</B1551><B1552>Ansprüche EN</B1552><B1551>en</B1551><B1552>Claims EN</B1552><B1551>fr</B1551><B1552>Revendications EN</B1552><B1551>de</B1551><B1552>Ansprüche FR</B1552><B1551>en</B1551><B1552>Claims FR</B1552><B1551>fr</B1551><B1552>Revendications FR</B1552></B155></B150><B190>EP</B190></B100><B200><B210>00125557.9</B210><B220><date>20001122</date></B220><B240><B241><date>20011122</date></B241><B242><date>20060518</date></B242></B240><B250>fr</B250><B251EP>fr</B251EP><B260>fr</B260></B200><B300><B310>9915816</B310><B320><date>19991215</date></B320><B330><ctry>FR</ctry></B330></B300><B400><B405><date>20091118</date><bnum>200947</bnum></B405><B430><date>20010620</date><bnum>200125</bnum></B430><B450><date>20090729</date><bnum>200931</bnum></B450><B452EP><date>20090220</date></B452EP><B480><date>20091118</date><bnum>200947</bnum></B480></B400><B500><B510EP><classification-ipcr sequence="1"><text>H03M  13/19        20060101AFI20010323BHEP        </text></classification-ipcr><classification-ipcr sequence="2"><text>G06F  11/10        20060101ALI20010323BHEP        </text></classification-ipcr><classification-ipcr sequence="3"><text>G11C  29/00        20060101ALI20010323BHEP        </text></classification-ipcr></B510EP><B540><B541>de</B541><B542>Einzelbit- Korrekturverfahren in einer Bitkette</B542><B541>en</B541><B542>One bit error correction method in a chain of bits</B542><B541>fr</B541><B542>Procédé de correction d'un bit dans une chaîne de bits</B542></B540><B560><B561><text>EP-A- 0 305 987</text></B561><B561><text>EP-A- 0 307 958</text></B561><B561><text>EP-A- 0 399 258</text></B561><B561><text>US-A- 5 671 239</text></B561><B562><text>HAIFLEY T: "ENDURANCE OF EEPROMS WITH ON-CHIP ERROR CORRECTION" IEEE TRANSACTIONS ON RELIABILITY,US,IEEE INC. NEW YORK, vol. 36, no. 2, 1 juin 1987 (1987-06-01), pages 222-223, XP000008989 ISSN: 0018-9529</text></B562></B560></B500><B700><B720><B721><snm>La Rosa, Francesco</snm><adr><str>"La Pinède" No. 2
Quartier Tartanne</str><city>13790 Rousset</city><ctry>FR</ctry></adr></B721></B720><B730><B731><snm>STMicroelectronics SA</snm><iid>02964584</iid><irf>P37968</irf><adr><str>29, Boulevard Romain Rolland</str><city>F-92120 Montrouge</city><ctry>FR</ctry></adr></B731></B730><B740><B741><snm>Viering, Jentschura &amp; Partner</snm><iid>00100645</iid><adr><str>Postfach 22 14 43</str><city>80504 München</city><ctry>DE</ctry></adr></B741></B740></B700><B800><B840><ctry>DE</ctry><ctry>FR</ctry><ctry>GB</ctry><ctry>IT</ctry></B840><B880><date>20010620</date><bnum>200125</bnum></B880></B800></SDOBI><!-- EPO <DP n="1"> -->
<description id="desc" lang="fr">
<p id="p0001" num="0001">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.</p>
<p id="p0002" num="0002">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, au moyen d'une haute tension de programmation ou d'effacement 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 la caractéristique électrique rémanente représentative du bit stocké dans la cellule mémoire.</p>
<p id="p0003" num="0003">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 Vt<sub>0</sub> 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é (mémoires EEPROM).</p>
<p id="p0004" num="0004">En pratique, 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 Vt<sub>0</sub>, le transistor est considéré comme programmé. Toutefois, la tension de seuil peut<!-- EPO <DP n="2"> --> également évoluer sensiblement au-delà de la tension de référence Vt<sub>0</sub>. Il se produit alors une corruption de donnée, un "0" étant lu dans la mémoire au lieu du "1" initialement enregistré, ou inversement.</p>
<p id="p0005" num="0005">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 Haming bien connu de l'homme de l'art.</p>
<p id="p0006" num="0006">L'inconvénient de l'algorithme de Hamming, et plus généralement de tout algorithme de détection et de correction d'erreur, est qu'il génère des codes d'une longueur non négligeable au regard du nombre de bits à sécuriser. 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.</p>
<p id="p0007" num="0007">Pour fixer les idées, la <figref idref="f0001">figure 1</figref> représente schématiquement l'architecture d'une mémoire MEM1 comprenant des lignes de mots WL<sub>0</sub> à WL<sub>N</sub> et des lignes de bits BL<sub>0</sub> à BL<sub>11</sub>. La mémoire MEM1 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 SA<sub>0</sub> à SA<sub>11</sub> ("sensé amplifiers"). Chaque ligne de mot WL<sub>i</sub> comprend 8 bits de données b<sub>0</sub> à b<sub>7</sub> et quatre bits de contrôle b<sub>8</sub> à b<sub>11</sub> formant par exemple un code de Hamming, permettant de détecter et de corriger un bit erroné parmi les 12 bits b<sub>0</sub> à b<sub>11</sub>. 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 b<sub>0</sub> à b<sub>11</sub> de la ligne de mot sélectionnée. Les bits b<sub>0</sub> à b<sub>11</sub> sont envoyés à un circuit de<!-- EPO <DP n="3"> --> correction DCC, qui délivre en sortie les huit bits de données b<sub>0</sub> à b<sub>7</sub> après avoir éventuellement détecté et corrigé un bit erroné.</p>
<p id="p0008" num="0008">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.</p>
<p id="p0009" num="0009">Un objectif de la présente invention est de prévoir 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.</p>
<p id="p0010" num="0010">On connaît déjà, par la demande <patcit id="pcit0001" dnum="EP307958A"><text>EP 307 958</text></patcit>, une mémoire EEPROM comprenant des amplificateurs de lecture [30] délivrant des bits de données [d0 à d4] et des amplificateurs de lecture [31] délivrant des signaux d'erreurs [e0 à e4] lorsque la tension de seuil d'une cellule mémoire se trouve dans une bande interdite. Cette mémoire comprend un circuit de correction d'erreur [52] représenté en figure 9 du document, agencé pour corriger un bit erroné en inversant la valeur du bit erroné lorsque le signal d'erreur correspondant indique une erreur de lecture. Cette inversion de la valeur d'un bit erroné est effectuée au moyen d'une porte Ou Exclusif [58] qui reçoit le bit erroné sur une première entrée et la sortie d'une porte ET sur une seconde entrée. La porte ET reçoit en entrée le signal d'erreur [e0 à e4] et un bit de parité calculé par un circuit [66] à partir d'une chaîne de bits comprenant le bit erroné et un bit de parité enregistré dans la mémoire. Lorsque le bit de parité calculé par le circuit [66] est à 1 (ce qui signifie qu'il y a une erreur de lecture puisque le bit de parité d'une chaîne de bits incorporant un bit de parité est toujours égal à 0) et que, simultanément, le signal d'erreur du bit de donnée est à 1, la sortie de la porte ET passe à 1. La porte Ou Exclusif [58] fonctionne alors comme une porte inverseuse à l'égard du bit erroné reçu sur son autre entrée, et délivre un "0" si le bit erroné est à "1" ou un "1" si le bit erroné est à "0".</p>
<p id="p0011" num="0011">Ce procédé de correction peut être considéré comme complexe à mettre en oeuvre en raison de la réalisation de chacune des<!-- EPO <DP n="4"> --> portes Ou Exclusif [58], qui nécessite l'emploi de nombreuses portes logiques élémentaires.</p>
<p id="p0012" num="0012">Un autre objectif de la présente invention est de prévoir un procédé de correction d'erreur qui soit simple à mettre en oeuvre et puisse être mis en oeuvre au moyen de simples commutateurs tels des multiplexeurs, en ne nécessitant qu'un nombre réduit de portes logiques.</p>
<p id="p0013" num="0013">Pour atteinte ces objectifs, la présente invention prévoit un procédé de correction d'un bit erroné dans une chaîne de bits, comprenant une étape consistant à prévoir dans la chaîne de bits un premier bit de parité calculé à partir des autres bits de la chaîne de bits à un instant où le bit erroné était valable, une étape consistant à calculer un second bit de parité en fonction de tous les bits de la chaîne de bits autres que le bit erroné, et une étape consistant à remplacer le bit erroné par le second bit de parité.</p>
<p id="p0014" num="0014">Selon un mode de réalisation, le bit erroné reçoit par convention une valeur logique sans influence sur le calcul de parité, et le second bit de parité est calculé à partir de tous les bits de la chaîne de bits, y compris le bit erroné.</p>
<p id="p0015" num="0015">Selon un mode de réalisation, le bit erroné est remplacé par le second bit de parité au moyen d'un circuit multiplexeur.</p>
<p id="p0016" num="0016">Selon un mode de réalisation, la chaîne de bits est lue dans une mémoire non volatile.</p>
<p id="p0017" num="0017">Selon un mode de réalisation, pour corriger plus qu'un bit dans un mot binaire, on décompose la chaîne de bits en au moins deux chaînes de bits comprenant chacune un bit de parité.</p>
<p id="p0018" num="0018">La présente invention concerne également une mémoire non volatile comprenant des cellules mémoire rémanentes, des moyens de lecture d'une chaîne de bits dans la mémoire et des moyens de correction d'un bit erroné présent dans une chaîne de bits lue dans la mémoire, les moyens de correction comprenant des moyens pour calculer un bit de parité à partir des bits de la chaîne de bits, et des moyens pour remplacer un bit erroné par le bit de parité calculé.</p>
<p id="p0019" num="0019">Selon un mode de réalisation, les moyens de lecture sont agencés pour attribuer à un bit erroné une valeur logique sans<!-- EPO <DP n="5"> --> influence sur un calcul de parité, et les moyens pour calculer un bit de parité sont agencés pour recevoir en entrée tous les bits de la chaîne de bits, y compris un bit erroné.</p>
<p id="p0020" num="0020">Selon un mode de réalisation, les moyens pour remplacer un bit erroné par le bit de parité calculé comprennent un circuit multiplexeur.</p>
<p id="p0021" num="0021">Selon un mode de réalisation, les moyens de lecture sont agencés pour délivrer un bit ayant une première valeur logique quand une 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.</p>
<p id="p0022" num="0022">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.</p>
<p id="p0023" num="0023">Selon un mode de réalisation, les moyens de lecture sont agencés 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.</p>
<p id="p0024" num="0024">Selon un mode de réalisation, les moyens de lecture comprennent un premier comparateur pour comparer le courant traversant une cellule à un premier courant de référence, délivrant un premier bit utilisé en tant que bit de donnée lu dans la cellule, un second comparateur pour comparer le courant traversant une cellule à un second courant de référence, délivrant un second bit, et une fonction OU Exclusif pour combiner le premier bit et le second bit et délivrer un signal de bit erroné.</p>
<p id="p0025" num="0025">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.<!-- EPO <DP n="6"> --></p>
<p id="p0026" num="0026">Ces caractéristiques de la présente invention, ainsi que d'autres, seront exposées 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 selon l'invention, en relation avec les figures jointes parmi lesquelles :
<ul id="ul0001" list-style="dash" compact="compact">
<li>la <figref idref="f0001">figure 1</figref> représente schématiquement l'architecture d'une mémoire non volatile classique,</li>
<li>les <figref idref="f0001">figures 2A, 2B</figref> illustrent un procédé classique de lecture d'une cellule mémoire,</li>
<li>la <figref idref="f0002">figure 3</figref> est le schéma électrique classique d'un circuit de lecture d'une cellule mémoire,</li>
<li>les <figref idref="f0002">figures 4A, 4B</figref> illustrent un procédé de lecture d'une cellule mémoire avec détection d'erreur,</li>
<li>la <figref idref="f0003">figure 5</figref> est le schéma électrique d'un circuit de lecture selon l'invention, permettant de lire une cellule mémoire avec détection d'erreur,</li>
<li>la <figref idref="f0004">figure 6</figref> illustre un procédé selon l'invention permettant de corriger un bit erroné,</li>
<li>la <figref idref="f0004">figure 7</figref> représente de façon schématique l'architecture d'une mémoire non volatile selon l'invention, et</li>
<li>la <figref idref="f0005">figure 8</figref> représente le schéma électrique d'un circuit de correction d'erreur selon l'invention, présent dans la mémoire de la <figref idref="f0004">figure 7</figref>.</li>
</ul></p>
<p id="p0027" num="0027">La <figref idref="f0001">figure 2A</figref> 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 Vt<sub>0</sub>, 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 Vt<sub>0</sub><sup>-</sup>, 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 Vt<sub>0</sub><sup>+</sup> supérieure à Vt<sub>0</sub>, représente la distribution de la tension de<!-- EPO <DP n="7"> --> seuil positive Vt<sup>+</sup> d'un transistor effacé, et correspond par convention à un bit égal à 0.</p>
<p id="p0028" num="0028">La <figref idref="f0001">figure 2B</figref> représente, en liaison avec la <figref idref="f0001">figure 2A</figref>, 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 Vt<sub>0</sub>. La courbe C4 est la courbe courant/tension d'un transistor programmé ayant une tension de seuil Vt<sub>0</sub>-et la courbe C5 est la courbe courant/tension d'un transistor effacé ayant une tension de seuil Vt<sub>0</sub><sup>+</sup>.</p>
<p id="p0029" num="0029">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 V<sub>read</sub> prédéterminée. Le point de fonctionnement correspondant sur la courbe C3 (cellule vierge) donne un courant I<sub>ref</sub>. Ainsi, un transistor dans l'état programmé ayant une tension de seuil Vt comprise dans la courbe C1 de la <figref idref="f0001">figure 2A</figref> présente un courant Id supérieur à I<sub>ref</sub>, et un transistor dans l'état effacé ayant une tension de seuil Vt comprise dans la courbe C2 présente un courant Id inférieur à I<sub>ref</sub>. Par exemple, des transistors ayant respectivement des tensions de seuil égales aux tensions Vt<sub>0</sub><sup>-</sup> et Vt<sub>0</sub><sup>+</sup> (courbes C4 et C5) sont traversés par des courants I1 et I2 représentés sur la <figref idref="f0001">figure 2B</figref> lorsque la tension V<sub>read</sub> leur est appliquée.</p>
<p id="p0030" num="0030">La <figref idref="f0002">figure 3</figref> représente un circuit de lecture SA1 généralement appelé amplificateur de lecture ("sense amplifier"), prévu pour lire une cellule mémoire CELL sans détection d'erreur. 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<!-- EPO <DP n="8"> --> 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 I<sub>ref</sub> 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.</p>
<p id="p0031" num="0031">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 V<sub>read</sub> est appliquée sur la grille du transistor FGT. Le courant drain-source I<sub>cell</sub> traversant le transistor FGT fait apparaître une tension V<sub>cell</sub> sur la cathode du transistor-diode 111. Le comparateur 140 reçoit ainsi sur son entrée négative la tension V<sub>cell</sub> et sur son entrée positive une tension V<sub>ref</sub> 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 I<sub>cell</sub> est supérieur à I<sub>ref</sub> ou à 0 si le courant I<sub>cell</sub> est inférieur à <sup>I</sup>ref.</p>
<p id="p0032" num="0032">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<sup>-</sup> du transistor FGT dans l'état programmé, appartenant à la courbe C1 (<figref idref="f0001">figure 2A</figref>), évolue lentement vers des valeurs positives se trouvant dans région comprenant la courbe C0, qui représente le domaine des cellules vierges. Tant que la tension Vt<sup>-</sup> reste inférieure à la tension Vt<sub>0</sub> le circuit de lecture SA1 délivre un bit à 1. Toutefois, la tension Vt<sup>-</sup> peut également évoluer sensiblement au-delà de la tension Vt<sub>0</sub>, 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 Vt<sub>0</sub> provoque une corruption de donnée car la sortie du circuit de lecture SA1 délivre dans ce cas un bit à 0. Inversement, la tension de seuil Vt<sup>+</sup> du transistor FGT dans l'état effacé, appartenant à la courbe C2, peut évoluer vers<!-- EPO <DP n="9"> --> 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.</p>
<p id="p0033" num="0033">Pour lire une cellule mémoire tout en détectant la présence d'un bit erroné, on définit sur la <figref idref="f0002">figure 4A</figref>, qui est identique à la <figref idref="f0001">figure 2A</figref>, une région "interdite" délimitée par deux tensions Vt<sub>1</sub> et Vt<sub>2</sub>, la tension Vt<sub>2</sub> étant supérieure à Vt<sub>1</sub>. La tension Vt<sub>1</sub> est de préférence comprise entre la courbe C1 et la courbe C0 et la tension Vt<sub>2</sub> comprise entre la courbe C0 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. 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 évoluer naturellement au-delà de ce domaine. Sur la <figref idref="f0002">figure 4B</figref>, qui est semblable à la <figref idref="f0001">figure 2B</figref>, les deux tensions Vt<sub>1</sub>, Vt<sub>2</sub> 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 V<sub>read</sub> supérieure à la tension Vt<sub>2</sub>, appliquée sur la grille d'une cellule mémoire, les points de fonctionnement correspondants sur les courbes C7, C8 définissent deux courants I<sub>ref (1)</sub>, I<sub>ref (0)</sub>qui sont respectivement supérieur et inférieur au courant de référence I<sub>ref</sub> utilisé dans l'art antérieur pour lire une cellule. Ainsi, tout transistor à grille flottante ayant un courant drain-source Id supérieur à I<sub>ref (1)</sub> sera réputé contenir un bit à 1, tout transistor à grille flottante ayant un courant drain-source Id inférieur à I<sub>ref (0)</sub> sera réputé contenir un bit à 0, et tout transistor à grille flottante ayant un courant de fonctionnement Id compris entre I<sub>ref (0)</sub>et I<sub>ref (1)</sub> sera réputé contenir un bit erroné.</p>
<p id="p0034" num="0034">La <figref idref="f0003">figure 5</figref> représente un circuit de lecture SA2 avec détection d'erreur, connecté à une cellule mémoire CELL agencée dans une ligne de bit 110. La cellule CELL et la ligne de bit 110<!-- EPO <DP n="10"> --> ont été décrites plus haut en relation avec la <figref idref="f0002">figure 3</figref>. 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 I<sub>ref (1)</sub> 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 I<sub>ref (0)</sub>décrit plus haut. La ligne de bit 110 délivre une tension V<sub>cell</sub>prélevée sur la cathode du transistor-diode 111, la branche 220 délivre une tension V<sub>ref (1)</sub> prélevée sur la cathode du transistor-diode 221 et la branche 230 délivre une tension V<sub>ref (0)</sub> prélevée sur la cathode du transistor-diode 231. Les tensions V<sub>cell</sub>, V<sub>ref (1)</sub> 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 V<sub>cell</sub>, V<sub>ref (0)</sub> 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.</p>
<p id="p0035" num="0035">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.
<tables id="tabl0001" num="0001">
<table frame="all">
<tgroup cols="4">
<colspec colnum="1" colname="col1" colwidth="48mm"/>
<colspec colnum="2" colname="col2" colwidth="31mm"/>
<colspec colnum="3" colname="col3" colwidth="14mm"/>
<colspec colnum="4" colname="col4" colwidth="18mm"/>
<thead valign="top">
<row>
<entry align="center">Etat de la cellule</entry>
<entry align="center">Courant I<sub>cell</sub></entry>
<entry align="center">Bit "b"</entry>
<entry align="center">Signal Sx</entry></row></thead>
<tbody>
<row>
<entry align="center">Programmée</entry>
<entry align="center">I <sub>cell</sub> &gt; I<sub>ref (1)</sub></entry>
<entry align="center">b = 1</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">Effacée</entry>
<entry align="center">I<sub>cell</sub> &lt; I<sub>ref (0)</sub></entry>
<entry align="center">b = 0</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">Etat Indéterminé (cellule vierge)</entry>
<entry align="center">I<sub>ref (0)</sub>&lt; I<sub>cell</sub> &lt; I<sub>ref (1)</sub></entry>
<entry align="center">b = 0</entry>
<entry align="center">1 (erreur)</entry></row></tbody></tgroup>
</table>
</tables></p>
<p id="p0036" num="0036">Le circuit SA2 permet ainsi 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<!-- EPO <DP n="11"> --> 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.</p>
<p id="p0037" num="0037">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 que l'objectif de la présente invention est de prévoir un procédé de correction qui soit simple à mettre en oeuvre 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.</p>
<p id="p0038" num="0038">Selon l'invention, la correction d'un bit erroné nécessite tout d'abord de prévoir, de façon en soi classique, une chaîne de bit comprenant un premier bit de parité stocké en mémoire, calculé à un moment où les bits de la chaîne de bits sont présumés valables. Lorsqu'un bit erroné est détecté, on calcule un second bit de parité à partir de tous les 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é, et le bit erroné est remplacé par le second bit de parité. Rappelons ici 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.</p>
<p id="p0039" num="0039">Le procédé selon l'invention est illustré par la <figref idref="f0004">figure 6</figref>, qui représente la chaîne de bits b<sub>0</sub> à b<sub>8</sub> suivante :<br/>
1 1 X 0 1 0 0 1 1 dans laquelle le bit b<sub>8</sub> est le bit de parité des bits b<sub>0</sub> à b<sub>7</sub>, calculé à un instant où ceux-ci sont présumés valables. Le bit b<sub>2</sub><!-- EPO <DP n="12"> --> est présumé erroné et sa valeur est représentée par un "X". Selon l'invention, on calcule un nouveau bit de parité b<sub>9</sub> à partir des bits b<sub>0</sub>, b<sub>1</sub>, b<sub>3</sub> à b<sub>8</sub>. Le nouveau bit de parité b<sub>9</sub>, ici égal à 1, est placé dans la chaîne de bits à la place du bit erroné b<sub>2</sub>.</p>
<p id="p0040" num="0040">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. Il 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:<br/>
b<sub>0</sub> b<sub>1</sub> b<sub>2</sub> b<sub>3</sub> b<sub>4</sub> b<sub>5</sub> b<sub>6</sub> b<sub>7</sub> b<sub>8</sub> b<sub>9</sub> comporte 8 bits de données b<sub>0</sub> à b<sub>7</sub>. Le bit b<sub>8</sub> est le bit de parité des bits b<sub>0</sub>-b<sub>3</sub> et le bit b<sub>9</sub> est le bit de parité des bits b<sub>4</sub>-b<sub>7</sub>.</p>
<p id="p0041" num="0041">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.</p>
<p id="p0042" num="0042">Enfin, comme on le verra plus loin, le second bit de parité permettant de corriger un bit erroné peut être calculé à partir de tous les bits d'une chaîne de bit y compris le bit erroné, en attribuant par convention à un bit erroné une valeur sans influence sur un calcul de parité (par exemple "0" pour un calcul de parité fondé sur le nombre de bits à "1").</p>
<p id="p0043" num="0043">On décrira maintenant un exemple de mise en oeuvre du procédé selon l'invention dans une mémoire MEM2 représentée schématiquement sur la <figref idref="f0004">figure 7</figref>.</p>
<p id="p0044" num="0044">La mémoire MEM2 comprend des lignes de mots WL<sub>0</sub> à WL<sub>N</sub> et des lignes de bits BL<sub>0</sub> à BL<sub>8</sub> comprenant chacune 8 bits de données b<sub>0</sub> à b<sub>7</sub> et un bit de parité b<sub>8</sub>. La mémoire MEM1 comprend également 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 SA2<sub>0</sub> à SA2<sub>7</sub> et un circuit de lecture SA1<sub>8</sub>. Les circuits<!-- EPO <DP n="13"> --> SA2<sub>0</sub> à SA2<sub>7</sub> sont conformes au circuit SA2 décrit plus haut en relation avec la <figref idref="f0003">figure 5</figref>, et sont dédiés à la lecture des bits de données b<sub>0</sub>-b<sub>7</sub>. Le circuit SA1<sub>8</sub> est conforme au circuit classique SA1 décrit en relation avec la <figref idref="f0002">figure 3</figref> et est dédié à la lecture du bit de parité b<sub>8</sub>. Le circuit de lecture du bit de parité pourrait bien entendu être un circuit SA2, 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 b<sub>0</sub>-b<sub>8</sub> d'une ligne de mot WL<sub>i</sub> sélectionnée par le décodeur WLD et huit signaux d'erreur Sx<sub>0</sub> à SX<sub>7</sub> correspondant aux bits de données b<sub>0</sub> à b<sub>7</sub>. Les bits b<sub>0</sub> à b<sub>8</sub> et les signaux Sx<sub>0</sub> à Sx<sub>7</sub> 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 b<sub>0</sub> à b<sub>7</sub> après avoir, si nécessaire, corrigé un bit erroné b<sub>i</sub>, si le signal Sx<sub>i</sub> émis pour ce bit est égal à 1.</p>
<p id="p0045" num="0045">Il 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<sub>8</sub> est associé à chaque mot de 8 bits. Ainsi, les bits de correction ne représentent ici que 12,5 % des cellules mémoire contre 33% dans la mémoire MEM1 de la <figref idref="f0001">figure 1</figref>. De plus, le circuit de correction peut être réalisé de façon simple comme cela sera décrit maintenant.</p>
<p id="p0046" num="0046">La <figref idref="f0005">figure 8</figref> représente un mode de réalisation du circuit de correction DCC1 au moyen de huit multiplexeurs MUXO à MUX7 et d'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<sub>0</sub> à b<sub>8</sub> délivrés par le circuit de lecture SA3 et délivre un bit de parité b<sub>9</sub>. 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<sub>0</sub> à b<sub>7</sub> délivrés par les circuits SA2<sub>0</sub>-SA2<sub>7</sub>, reçoit le bit de parité b<sub>9</sub> sur son autre entrée de donnée et l'un des signaux Sx<sub>0</sub>-Sx<sub>7</sub> sur son entrée de commande.</p>
<p id="p0047" num="0047">Le fonctionnement du circuit correcteur DCC1 est particulièrement simple. Chaque multiplexeur MUX0 à MUX7 sélectionne sur sa sortie le bit b<sub>i</sub> reçu en entrée si le signal<!-- EPO <DP n="14"> --> Sx<sub>i</sub> sur l'entrée de commande est à 0, ou sélectionne sur sa sortie le bit de parité b<sub>9</sub> si le signal Sx<sub>i</sub> 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é b<sub>9</sub> calculé à partir de tous les bits du mot binaire b<sub>0</sub>-b<sub>8</sub>, y compris le bit de parité b<sub>8</sub>. 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.</p>
<p id="p0048" num="0048">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.</p>
<p id="p0049" num="0049">Dans ce qui précède, on a décrit le procédé de lecture d'un bit en se référant aux cellules mémoires de type EEPROM, dans lesquelles 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 à divers types de cellules mémoire, notamment 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 audessous 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éfinira une région "interdite" délimitée par deux tensions de référence Vt<sub>1</sub>, Vt<sub>2</sub> 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<!-- EPO <DP n="15"> --> que l'état "erroné" selon l'invention soit stable. 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.</p>
</description><!-- EPO <DP n="16"> -->
<claims id="claims01" lang="fr">
<claim id="c-fr-01-0001" num="0001">
<claim-text>Procédé de lecture et de correction d'une chaîne de bits (b<sub>0</sub>-b<sub>8</sub>), chaque bit de la chaîne de bits étant enregistré dans une cellule mémoire (CELL) d'une mémoire non volatile (MEM2), la chaîne de bits incluant un premier bit de parité (b<sub>8</sub>) fonction des autres bits (b<sub>0</sub>-b<sub>7</sub>) de la chaîne de bits, procédé comprenant :
<claim-text>- une étape de lecture de chaque bit de la chaîne de bits comprenant, pour chaque bit à lire, les étapes suivantes :
<claim-text>- détecter une caractéristique électrique rémanente (Vt, Id) de la cellule représentative de la valeur du bit,</claim-text>
<claim-text>- attribuer au bit une première valeur ("1") quand la caractéristique rémanente est supérieure à un premier seuil (I<sub>ref(1)</sub>) et une deuxième valeur ("0") quand la caractéristique rémanente est inférieure à un second seuil (I<sub>ref(0)</sub>) inférieur au premier seuil,</claim-text>
<claim-text>- délivrer un signal d'erreur (Sx) de lecture du bit quand la caractéristique rémanente est comprise entre le premier et le second seuils, et</claim-text></claim-text>
<claim-text>- une étape de correction d'un bit erroné (b<sub>2</sub>) quand le signal d'erreur (Sx) est délivré,</claim-text>
<b>caractérisé en ce que</b> l'étape de correction du bit erroné comprend :
<claim-text>- une étape consistant à calculer un second bit de parité (b<sub>9</sub>) en fonction de tous les bits de la chaîne de bits (b<sub>0</sub>, b<sub>1</sub>, b<sub>3</sub>-b<sub>8</sub>) autres que le bit erroné (b<sub>2</sub>), et</claim-text>
<claim-text>- une étape consistant à remplacer le bit erroné (b<sub>2</sub>) par le second bit de parité (b<sub>9</sub>).</claim-text></claim-text></claim>
<claim id="c-fr-01-0002" num="0002">
<claim-text>Procédé selon la revendication 1, dans lequel le bit erroné (b<sub>2</sub>) reçoit par convention une valeur logique ("0") sans influence sur le calcul de parité, et le second bit de parité (b<sub>9</sub>) est calculé à partir de tous les bits (b<sub>0</sub>-b<sub>8</sub>) de la chaîne de bits, y compris le bit erroné.</claim-text></claim>
<claim id="c-fr-01-0003" num="0003">
<claim-text>Procédé selon l'une des revendications 1 et 2, dans lequel le bit erroné est remplacé par le second bit de parité au moyen d'un circuit multiplexeur (MUX<sub>0</sub>- MUX<sub>7</sub>).<!-- EPO <DP n="17"> --></claim-text></claim>
<claim id="c-fr-01-0004" num="0004">
<claim-text>Procédé selon l'une des revendications 1 à 3 dans lequel, pour corriger plus qu'un bit dans un mot binaire, on décompose la chaîne de bits en au moins deux chaînes de bits comprenant chacune un bit de parité.</claim-text></claim>
<claim id="c-fr-01-0005" num="0005">
<claim-text>Procédé selon l'une des revendications 1 à 4, dans lequel chaque cellule mémoire (CELL) comprend un transistor à grille flottante (FGT), et est lue en appliquant une tension de lecture (V<sub>read</sub>) sur la grille du transistor et en comparant le courant (Id) traversant le transistor à grille flottante à deux courants de référence (I<sub>ref(0)</sub>, I<sub>ref(1)</sub>), le signal d'erreur étant émis lorsque le courant traversant le transistor à grille flottante est compris entre les deux courants de référence.</claim-text></claim>
<claim id="c-fr-01-0006" num="0006">
<claim-text>Mémoire non volatile (MEM2) comprenant des cellules mémoire rémanentes (CELL), des moyens (SA2, SA3) de lecture d'une chaîne de bits (b<sub>0</sub>-b<sub>8</sub>) dans la mémoire et des moyens de correction (DCC1) d'un bit erroné (b<sub>2</sub>) présent dans une chaîne de bits (b<sub>0</sub>-b<sub>8</sub>) lue dans la mémoire, la chaîne de bits incluant un premier bit de parité (b<sub>8</sub>) fonction des autres bits (b<sub>0</sub>-b<sub>7</sub>) de la chaîne de bits,<br/>
les moyens de lecture (SA2) étant agencés pour :
<claim-text>- délivrer un bit ayant une première valeur logique ("1") quand une caractéristique rémanente d'une cellule mémoire est supérieure à un premier seuil (I<sub>ref(1)</sub>),</claim-text>
<claim-text>- 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 (I<sub>ref(0)</sub>) inférieur au premier seuil (I<sub>ref(1)</sub>), et</claim-text>
<claim-text>- 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 (I<sub>ref(1)</sub>) et le second (I<sub>ref(0)</sub>) seuils,</claim-text>
<b>caractérisée en ce que</b> les moyens de correction comprennent :
<claim-text>- des moyens (PCC) pour calculer un second bit de parité (b<sub>9</sub>) en fonction de tous les bits de la chaîne de bits (b<sub>0</sub>, b<sub>1</sub>, b<sub>3</sub>-b<sub>8</sub>) autres que le bit erroné (b<sub>2</sub>), et</claim-text>
<claim-text>- des moyens (MUX<sub>0</sub>- MUX<sub>7</sub>) pour remplacer un bit erroné (b<sub>2</sub>) par le bit de parité (b<sub>9</sub>) calculé.</claim-text><!-- EPO <DP n="18"> --></claim-text></claim>
<claim id="c-fr-01-0007" num="0007">
<claim-text>Mémoire selon la revendication 6, dans laquelle les moyens de lecture (SA2, SA3) sont agencés pour attribuer à un bit erroné (b<sub>2</sub>) une valeur logique ("0") sans influence sur un calcul de parité, et les moyens (PCC) pour calculer un second bit de parité (b<sub>9</sub>) sont agencés pour recevoir en entrée tous les bits (b<sub>0</sub>-b<sub>8</sub>) de la chaîne de bits, y compris un bit erroné.</claim-text></claim>
<claim id="c-fr-01-0008" num="0008">
<claim-text>Mémoire selon l'une des revendications 6 et 7, dans lequel les moyens pour remplacer un bit erroné par le bit de parité calculé comprennent un circuit multiplexeur (MUX<sub>0</sub>- MUX<sub>7</sub>).</claim-text></claim>
<claim id="c-fr-01-0009" num="0009">
<claim-text>Mémoire selon l'une des revendications 6 à 8, dans laquelle les moyens de lecture (SA2) 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.</claim-text></claim>
<claim id="c-fr-01-0010" num="0010">
<claim-text>Mémoire selon la revendication 9, dans laquelle les moyens de lecture (SA2) sont agencés pour comparer le courant traversant une cellule à deux courants de référence (I<sub>ref(1)</sub>, I<sub>ref(0)</sub>), 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.</claim-text></claim>
<claim id="c-fr-01-0011" num="0011">
<claim-text>Mémoire selon la revendication 10, dans laquelle les moyens de lecture (SA) comprennent :
<claim-text>- un premier comparateur (240) pour comparer le courant traversant une cellule à un premier courant de référence (I<sub>ref(1)</sub>), délivrant un premier bit ("b") utilisé en tant que bit de donnée lu dans la cellule,</claim-text>
<claim-text>- un second comparateur (250) pour comparer le courant traversant une cellule à un second courant de référence (I<sub>ref(0)</sub>), délivrant un second bit, et</claim-text>
<claim-text>- une fonction OU Exclusif (260) pour combiner le premier bit et le second bit et délivrer un signal de bit erroné (Sx).</claim-text></claim-text></claim>
<claim id="c-fr-01-0012" num="0012">
<claim-text>Mémoire selon l'une des revendications 6 à 11, dans laquelle le premier (I<sub>ref(1)</sub>) et le second (I<sub>ref(0)</sub>) seuils définissent une région comprenant le domaine des cellules vierges ou comprise dans le domaine<!-- EPO <DP n="19"> --> des cellules vierges, de sorte que l'état erroné d'un bit reste stable dans le temps.</claim-text></claim>
</claims><!-- EPO <DP n="20"> -->
<claims id="claims02" lang="en">
<claim id="c-en-01-0001" num="0001">
<claim-text>Method for reading and correcting a string of bits (b<sub>0</sub>-b<sub>8</sub>), every bit of the string of bits being stored in a memory cell (CELL) of a non-volatile memory (MEM2), the string of bits including a first parity bit (b<sub>8</sub>) as a function of the other bits (b<sub>0</sub>-b<sub>7</sub>) of the string of bits, the method comprising:
<claim-text>- a step of reading every bit of the string of bits comprising for every bit to be read the following steps:
<claim-text>- detecting a remanent electrical characteristic (Vt, Id) of the cell representing the value of the bit,</claim-text>
<claim-text>- assigning a first value ("1") to the bit if the remanent characteristic is above a first threshold (I<sub>ref(1)</sub>), and a second value ("0") if the remanent characteristic is lower than a second threshold (I<sub>ref(0)</sub>) which is lower than the first threshold,</claim-text>
<claim-text>- delivering a read error signal (Sx) of the bit if the remanent characteristic is between the first and second thresholds, and</claim-text></claim-text>
<claim-text>- a step of correcting an erroneous bit (b<sub>2</sub>) when the erroneous signal (Sx) is delivered,</claim-text>
<b>characterized in that</b> the step of correcting the erroneous bit comprises:
<claim-text>- a step consisting of calculating a second parity bit (b<sub>9</sub>) as a function of all the bits of the string of bits (b<sub>0</sub>, b<sub>1</sub>, b<sub>3</sub>-b<sub>8</sub>) other than the erroneous bit (b<sub>2</sub>), and<!-- EPO <DP n="21"> --></claim-text>
<claim-text>- a step consisting of replacing the erroneous bit (b<sub>2</sub>) by the second parity bit (b<sub>9</sub>).</claim-text></claim-text></claim>
<claim id="c-en-01-0002" num="0002">
<claim-text>Method according to claim 1, wherein the erroneous bit (b<sub>2</sub>) receives by convention a logic value ("0") that has no effect on the parity computation, and wherein the second parity bit (b<sub>9</sub>) is computed from all the bits (b<sub>0</sub>-b<sub>8</sub>) of the string of bits, including the erroneous bit.</claim-text></claim>
<claim id="c-en-01-0003" num="0003">
<claim-text>Method according to any of claims 1 and 2, wherein the erroneous bit is replaced by the second parity bit by means of a multiplexer circuit (MUX<sub>0</sub>-MUX<sub>7</sub>).</claim-text></claim>
<claim id="c-en-01-0004" num="0004">
<claim-text>Method according to any of claims 1 to 3, wherein the string of bits is split up into at least two strings of bits, each comprising a parity bit, in order to correct more than one bit in a binary word.</claim-text></claim>
<claim id="c-en-01-0005" num="0005">
<claim-text>Method according to any of claims 1 to 4, wherein every memory cell (CELL) comprises a floating gate transistor (FGT) and is read by applying a read voltage (V<sub>read</sub>) to the gate of the transistor and by comparing the current (Id) flowing through the floating gate transistor with two reference currents (I<sub>ref(0)</sub>, I<sub>ref(1)</sub>), the error signal being emitted when the current flowing through the floating gate transistor is between the two reference currents.</claim-text></claim>
<claim id="c-en-01-0006" num="0006">
<claim-text>Non-volatile memory (MEM2) comprising remanent memory cells (CELL), means (SA2, SA3) for reading a string of bits (b<sub>0</sub>-b<sub>8</sub>) in the memory, and means for correcting (DCC1) an erroneous bit (b<sub>2</sub>) present in a string of bits (b<sub>0</sub>-b<sub>8</sub>) which is read in the memory, the string of bits<!-- EPO <DP n="22"> --> including a first parity bit (b<sub>8</sub>) as a function of the other bits (b<sub>0</sub>-b<sub>7</sub>) of the string of bits,<br/>
wherein the reading means (SA2) are configured to:
<claim-text>- deliver a bit having a first logic value ("1") if a remanent characteristic of a memory cell is greater than a first threshold (I<sub>ref(1)</sub>),</claim-text>
<claim-text>- deliver a bit having a second logic value ("0") if the remanent characteristic of a memory cell is lower than a second threshold (I<sub>ref(0)</sub>) which is lower than the first threshold (I<sub>ref(1)</sub>), and</claim-text>
<claim-text>- deliver an erroneous bit signal (Sx=1) if the remanent characteristic of a memory cell is between the first (I<sub>ref(1)</sub>) and second (I<sub>ref(0)</sub>) thresholds,</claim-text>
<b>characterized in that</b> the correction means comprise:
<claim-text>- means (PCC) for computing a second parity bit (b<sub>9</sub>) as a function of all the bits of the string of bits (b<sub>0</sub>, b<sub>1</sub>, b<sub>3</sub>-b<sub>8</sub>) other than the erroneous bit (b<sub>2</sub>), and</claim-text>
<claim-text>- means (MUX<sub>0</sub>-MUX<sub>7</sub>) for replacing an erroneous bit (b<sub>2</sub>) by the computed parity bit (b<sub>9</sub>).</claim-text></claim-text></claim>
<claim id="c-en-01-0007" num="0007">
<claim-text>Memory according to claim 6, wherein the reading means (SA2, SA3) are configured to assign a logic value ("0") to an erroneous bit (b<sub>2</sub>) having no effect on a parity computation, and wherein the means (PCC) for computing a second parity bit (b<sub>9</sub>) are configured to receive at an input all the bits (b<sub>0</sub>-b<sub>8</sub>) of the string of bits, including an erroneous bit.</claim-text></claim>
<claim id="c-en-01-0008" num="0008">
<claim-text>Memory according to any of claims 6 and 7, wherein the means for replacing an erroneous bit by the computed parity bit comprise a multiplexer circuit (MUX<sub>0</sub>-MUX<sub>7</sub>).<!-- EPO <DP n="23"> --></claim-text></claim>
<claim id="c-en-01-0009" num="0009">
<claim-text>Memory according to any of claims 6 to 8, wherein the reading means (SA2) are configured to deliver a bit having the second logic value ("0") if the remanent characteristic of a memory cell is lower than the first threshold.</claim-text></claim>
<claim id="c-en-01-0010" num="0010">
<claim-text>Memory according to claim 9, wherein the reading means (SA2) are configured to compare the current flowing through a cell with two reference currents (I<sub>ref(1)</sub>, I<sub>ref(0)</sub>), and to send out the erroneous bit signal (Sx=1) if the current flowing through the floating gate transistor is between the two reference currents.</claim-text></claim>
<claim id="c-en-01-0011" num="0011">
<claim-text>Memory according to claim 10, wherein the reading means (SA) comprise:
<claim-text>- a first comparator (240) for comparing the current flowing through a cell with a first reference current (I<sub>ref(1)</sub>) delivering a first bit ("b") used as the data bit read in the cell,</claim-text>
<claim-text>- a second comparator (250) for comparing the current flowing through a cell with a second reference current (I<sub>ref(0)</sub>) delivering a second bit, and</claim-text>
<claim-text>- an exclusive OR function (260) for combining the first bit and the second bit and for delivering an erroneous bit signal (Sx).</claim-text></claim-text></claim>
<claim id="c-en-01-0012" num="0012">
<claim-text>Memory according to any of claims 6 to 11, wherein the first (I<sub>ref(1)</sub>) and second (I<sub>ref(0)</sub>) thresholds define a region comprising the domain of the virgin cells or included in the domain of the virgin cells, so that the erroneous state of a bit remains stable in time.</claim-text></claim>
</claims><!-- EPO <DP n="24"> -->
<claims id="claims03" lang="de">
<claim id="c-de-01-0001" num="0001">
<claim-text>Verfahren zum Lesen und Korrigieren einer Kette von Bits (b<sub>0</sub>-b<sub>8</sub>), wobei jedes Bit der Bitkette in einer Speicherzelle (CELL) eines nichtflüchtigen Speichers (MEM2) gespeichert ist, wobei die Bitkette ein erstes Paritätsbit (b<sub>8</sub>) abhängig von den anderen Bits (b<sub>0</sub>-b<sub>7</sub>) der Bitkette enthält, wobei das Verfahren aufweist:
<claim-text>- einen Schritt des Lesens von jedem Bit der Bitkette, der für jedes zu lesende Bit die folgenden Schritte aufweist:
<claim-text>- Detektieren einer remanenten elektrischen Eigenschaft (Vt, Id) der Zelle, die für den Wert des Bits repräsentativ ist,</claim-text>
<claim-text>- Zuweisen eines ersten Wertes ("1") an das Bit, wenn die remanente Eigenschaft größer als ein erster Schwellenwert (I<sub>ref(1)</sub>) ist, und eines zweiten Wertes ("0"), wenn die remanente Eigenschaft kleiner als ein zweiter Schwellenwert (I<sub>ref(0)</sub>) ist, der kleiner als der erste Schwellenwert ist,</claim-text>
<claim-text>- Ausgeben eines Lesefehlersignals (Sx) des Bits, wenn die remanente Eigenschaft zwischen dem ersten und dem zweiten Schwellenwert liegt, und</claim-text></claim-text>
<claim-text>- einen Schritt des Korrigierens eines fehlerhaften Bits (b<sub>2</sub>), wenn das Fehlersignal (Sx) ausgegeben wird,</claim-text>
<b>dadurch gekennzeichnet, dass</b> der Schritt des Korrigierens des fehlerhaften Bits aufweist:
<claim-text>- einen Schritt, der aus dem Berechnen eines zweiten Paritätsbits (b<sub>9</sub>) abhängig von allen Bits der Bitkette (b<sub>0</sub>, b<sub>1</sub>, b<sub>3</sub>-b<sub>8</sub>), die nicht das fehlerhafte Bit (b<sub>2</sub>) sind, besteht, und<!-- EPO <DP n="25"> --></claim-text>
<claim-text>- einen Schritt, der aus dem Ersetzen des fehlerhaften Bits (b<sub>2</sub>) durch das zweite Paritätsbit (b<sub>9</sub>) besteht.</claim-text></claim-text></claim>
<claim id="c-de-01-0002" num="0002">
<claim-text>Verfahren gemäß Anspruch 1, wobei das fehlerhafte Bit (b<sub>2</sub>) regelungsbedingt einen logischen Wert ("0") ohne Einfluss auf die Paritätsberechnung erhält, und das zweite Paritätsbit (b<sub>9</sub>) ausgehend von allen Bits (b<sub>0</sub>-b<sub>8</sub>) der Bittkette, einschließlich dem fehlerhaften Bit, berechnet wird.</claim-text></claim>
<claim id="c-de-01-0003" num="0003">
<claim-text>Verfahren gemäß einem der Ansprüche 1 und 2, wobei das fehlerhafte Bit durch das zweite Paritätsbit mittels eines Multiplexer-Schaltkreises (MUX<sub>0</sub>-MUX<sub>7</sub>) ersetzt wird.</claim-text></claim>
<claim id="c-de-01-0004" num="0004">
<claim-text>Verfahren gemäß einem der Ansprüche 1 bis 3, wobei zum Korrigieren von mehr als einem Bit in einem Binärwort die Bitkette in mindestens zwei Bitketten zerlegt wird, von denen jede ein Paritätsbit aufweist.</claim-text></claim>
<claim id="c-de-01-0005" num="0005">
<claim-text>Verfahren gemäß einem der Ansprüche 1 bis 4, wobei jede Speicherzelle (CELL) einen Schwebendes-Gate-Transistor (FGT, engl. Floating Gate Transistor) aufweist und unter Anlegen einer Lese-Spannung (V<sub>read</sub>) an das Gate des Transistors und unter Vergleichen des Stroms (Id), der den Schwebendes-Gate-Transistor durchquert, mit zwei Referenzströmen (I<sub>ref(0)</sub>, I<sub>ref(1)</sub>) gelesen wird, wobei das Fehlersignal ausgegeben wird, wenn der den Schwebendes-Gate-Transistor durchquerende Strom zwischen den beiden Referenzströmen liegt.</claim-text></claim>
<claim id="c-de-01-0006" num="0006">
<claim-text>Nichtflüchtiger Speicher (MEM2), aufweisend remanente Speicherzellen (CELL), Mittel (SA2, SA3) zum<!-- EPO <DP n="26"> --> Lesen einer Bitkette (b<sub>0</sub>-b<sub>8</sub>) in dem Speicher und Mittel zum Korrigieren (DCC1) eines fehlerhaften Bits (b<sub>2</sub>), das sich in einer gelesenen Bitkette (b<sub>0</sub>-b<sub>8</sub>) in dem Speicher befindet, wobei die Bitkette ein erstes Paritätsbit (b<sub>8</sub>) abhängig von den anderen Bits (b<sub>0</sub>-b<sub>7</sub>) der Bitkette enthält,<br/>
wobei die Lesemittel (SA2) eingerichtet sind, um:
<claim-text>- ein Bit mit einem ersten logischen Wert ("1") auszugeben, wenn eine remanente Eigenschaft einer Speicherzelle größer als ein erster Schwellenwert (I<sub>ref(1)</sub>) ist,</claim-text>
<claim-text>- ein Bit mit einem zweiten logischen Wert ("0") auszugeben, wenn die remanente Eigenschaft einer Speicherzelle kleiner als ein zweiter Schwellenwert (I<sub>ref(0)</sub>) ist, der kleiner als der erste Schwellenwert (I<sub>ref(1)</sub>) ist, und</claim-text>
<claim-text>- ein fehlerhaftes-Bit-Signal (Sx=1) auszugeben, wenn die remanente Eigenschaft einer Speicherzelle zwischen dem ersten Schwellenwert (I<sub>ref(1)</sub>) und dem zweiten Schwellenwert (I<sub>ref(0)</sub>) liegt,</claim-text>
<b>dadurch gekennzeichnet, dass</b> die Korrekturmittel aufweisen:
<claim-text>- Mittel (PCC) zum Berechnen eines zweiten Paritätsbits (b<sub>9</sub>) in Abhängigkeit von allen Bits der Bitkette (b<sub>0</sub>, b<sub>1</sub>, b<sub>3</sub>-b<sub>8</sub>), die nicht das fehlerhafte Bit (b<sub>2</sub>) sind, und</claim-text>
<claim-text>- Mittel (MUX<sub>0</sub>-MUX<sub>7</sub>) zum Ersetzen eines fehlerhaften Bits (b<sub>2</sub>) durch das berechnete Paritätsbit (b<sub>9</sub>).</claim-text></claim-text></claim>
<claim id="c-de-01-0007" num="0007">
<claim-text>Speicher gemäß Anspruch 6, wobei die Lesemittel (SA2, SA3) eingerichtet sind, einem fehlerhaften Bit (b<sub>2</sub>) einen logischen Wert ("0") ohne Einfluss auf eine<!-- EPO <DP n="27"> --> Paritätsberechnung zuzuweisen, und wobei die Mittel (PCC) zum Berechnen eines zweiten Paritätsbits (b<sub>9</sub>) eingerichtet sind, alle Bits (b<sub>0</sub>-b<sub>8</sub>) der Bitkette, einschließlich eines fehlerhaften Bits, beim Eingang zu empfangen.</claim-text></claim>
<claim id="c-de-01-0008" num="0008">
<claim-text>Speicher gemäß einem der Ansprüche 6 und 7, wobei die Mittel zum Ersetzen eines fehlerhaften Bits durch das berechnete Paritätsbit einen Multiplexer-Schaltkreis (MUX<sub>0</sub>-MUX<sub>7</sub>) aufweisen.</claim-text></claim>
<claim id="c-de-01-0009" num="0009">
<claim-text>Speicher gemäß einem der Ansprüche 6 bis 8, wobei die Lesemittel (SA2) eingerichtet sind, ein Bit mit dem zweiten logischen Wert ("0") auszugeben, wenn die remanente Eigenschaft einer Speicherzelle kleiner als der erste Schwellenwert ist.</claim-text></claim>
<claim id="c-de-01-0010" num="0010">
<claim-text>Speicher gemäß Anspruch 9, wobei die Lesemittel (SA2) eingerichtet sind, den Strom, der eine Zelle durchquert, mit zwei Referenzströmen (I<sub>ref(1)</sub>, I<sub>ref(0)</sub>) zu vergleichen, und das fehlerhaftes-Bit-Signal (Sx=1) auszusenden, wenn der Strom, der den Schwebendes-Gate-Transistor durchquert, zwischen den beiden Referenzströmen liegt.</claim-text></claim>
<claim id="c-de-01-0011" num="0011">
<claim-text>Speicher gemäß Anspruch 10, wobei die Lesemittel (SA) aufweisen:
<claim-text>- einen ersten Vergleicher (240), um den Strom, der eine Zelle durchquert, mit einem ersten Referenzstrom (I<sub>ref(1)</sub>) zu vergleichen, der ein erstes Bit ("b") ausgibt, das als in der Zelle gelesenes Datenbit verwendet wird,</claim-text>
<claim-text>- einen zweiten Vergleicher (250), um den Strom, der eine Zelle durchquert, mit einem zweiten Referenzstrom (I<sub>ref(0)</sub>) zu vergleichen, der ein zweites Bit ausgibt, und<!-- EPO <DP n="28"> --></claim-text>
<claim-text>- eine Exklusiv-Oder-Funktion (260), um das erste Bit und das zweite Bit zu kombinieren und ein fehlerhaftes-Bit-Signal (Sx) auszugeben.</claim-text></claim-text></claim>
<claim id="c-de-01-0012" num="0012">
<claim-text>Speicher gemäß einem der Ansprüche 6 bis 11, wobei der erste Schwellenwert (I<sub>ref(1)</sub>) und der zweite Schwellenwert (I<sub>ref(0)</sub>) einen Bereich definieren, der den Bereich der leeren Zellen aufweist oder in dem Bereich der leeren Zellen enthalten ist, so dass der Fehlerzustand eines Bits über die Zeit stabil bleibt.</claim-text></claim>
</claims>
<drawings id="draw" lang="fr">
<figure id="f0001" num="1,2A,2B"><img id="if0001" file="imgf0001.tif" wi="162" he="233" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="29"> -->
<figure id="f0002" num="3,4A,4B"><img id="if0002" file="imgf0002.tif" wi="161" he="231" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="30"> -->
<figure id="f0003" num="5"><img id="if0003" file="imgf0003.tif" wi="165" he="190" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="31"> -->
<figure id="f0004" num="6,7"><img id="if0004" file="imgf0004.tif" wi="157" he="233" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="32"> -->
<figure id="f0005" num="8"><img id="if0005" file="imgf0005.tif" wi="146" he="233" img-content="drawing" img-format="tif"/></figure>
</drawings>
<ep-reference-list id="ref-list">
<heading id="ref-h0001"><b>RÉFÉRENCES CITÉES DANS LA DESCRIPTION</b></heading>
<p id="ref-p0001" num=""><i>Cette liste de références citées par le demandeur vise uniquement à aider le lecteur et ne fait pas partie du document de brevet européen. Même si le plus grand soin a été accordé à sa conception, des erreurs ou des omissions ne peuvent être exclues et l'OEB décline toute responsabilité à cet égard.</i></p>
<heading id="ref-h0002"><b>Documents brevets cités dans la description</b></heading>
<p id="ref-p0002" num="">
<ul id="ref-ul0001" list-style="bullet">
<li><patcit id="ref-pcit0001" dnum="EP307958A"><document-id><country>EP</country><doc-number>307958</doc-number><kind>A</kind></document-id></patcit><crossref idref="pcit0001">[0010]</crossref></li>
</ul></p>
</ep-reference-list>
</ep-patent-document>
