Brevet FR2809222A1 — publié le 20011123

MEMOIRE EEPROM COMPRENANT UN SYSTEME DE CORRECTION D'ERREUR La présente invention concerne les mémoires programmables et effaçables électriquement, notamment les mémoires EEPROM programmables par page comprenant un système de correction d'erreur. Plus particulièrement, la présente invention concerne une mémoire programmable et effaçable électriquement comprenant un plan mémoire comportant des cellules mémoire connectées à des lignes de mots et à des lignes de bits, les lignes de bits étant agencées en colonnes, des circuits de lecture reliés aux lignes de bits et des verrous de programmation reliant les lignes de bits à une ligne de programmation. Dans les mémoires EEPROM, la valeur d'un bit stocké dans une cellule mémoire est représentée par la valeur de la tension de seuil d'un transistor à grille flottante, qui peut être modifiée à volonté par des opérations d'effacement ou de programmation. La programmation ou l'effacement d'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) au moyen d'une "haute" tension Vpp de programmation/effacement de l'ordre de 10 à 20 V. La lecture d'une cellule mémoire comprenant un transistor à grille flottante consiste à comparer la tension de seuil Vt du transistor avec une tension de référence Vt0 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é. En pratique, cette comparaison est réalisée en appliquant sur la grille du transistor une tension de lecture Vread sensiblement égale à Vt0 puis en observant si le transistor est passant ou bloqué. L'état passant ou 2 2809222 non passant du transistor est détecté par un circuit de lecture généralement appelé "amplificateur de lecture" ("sense amplifier"), connecté à la ligne de bits à laquelle le transistor à grille flottante est lui-même connecté. Pendant le processus de lecture, un transistor effacé reste bloqué car sa tension de seuil est supérieure à Vread. Aucun courant ne circule dans la ligne de bits et cela correspond par convention à un bit égal à 0 en sortie du circuit de lecture (certaines mémoires utilisant toutefois une convention contraire). Un transistor programmé est au contraire passant car sa tension de seuil est inférieure à Vread. Un courant circule dans la ligne de bits et cela correspond par convention à un bit égal à 1 en sortie du circuit de lecture. La tension de seuil Vt du transistor est présumé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 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, des imperfections de fabrication affectent parfois 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é peut lentement évoluer vers une valeur positive supérieure à Vread. 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. Pour cette raison, les mémoires EEPROM du type sécurisé sont pourvues d'un circuit de correction d'erreur qui génère un code de correction d'erreur, ou code ECC, avant chaque enregistrement d'un mot binaire. 3 2809222 Un tel code ECC est concaténé avec le mot binaire et enregistré dans la mémoire conjointement à ce dernier. Lorsque le mot est ensuite lu dans la mémoire, le code ECC qui l'accompagne permet de détecter la présence5 éventuelle d'un bit erroné dans le mot et de corriger ce bit. L'inconvénient d'une mémoire sécurisée est de nécessiter, pour une capacité de stockage donnée, un nombre de cellules mémoire nettement supérieur à celui d'une mémoire non sécurisée, car une partie des cellules mémoire est réservée au stockage des bits de codes ECC. Pour diminuer le rapport entre le nombre de cellules destinées au stockage des codes ECC et le nombre de cellule recevant des bits de données, il est avantageux d'associer un code ECC à plusieurs mots binaires plutôt que d'associer un code ECC à chaque mot binaire. Ainsi, par exemple, un code de Hamming permettant de détecter et de corriger un bit erroné dans une chaîne de bits doit comprendre: - au moins 4 bits pour une chaîne de 8 bits de données soit au total 12 bits à enregistrer dans la mémoire et une occupation de l'espace mémoire par des bits de code de l'ordre de 33%, au moins 5 bits pour une chaîne de 16 bits, soit une occupation de l'espace mémoire par des bits de code de l'ordre de 24 %, - au moins 6 bits pour une chaîne de 32 bits, soit une occupation de l'espace mémoire par des bits de code de l'ordre de 16 %, etc.. L'association d'un code ECC à une chaîne de bits comprenant plusieurs mots binaires concaténés est ainsi une solution avantageuse pour diminuer le nombre de bits de code dans une mémoire. Toutefois, la mise en oeuvre d'un procédé de concaténation de mots binaires visant à former des chaînes de bits de grande longueur comportant un code ECC n'est guère pratique dans une mémoire EEPROM programmable par page. 4 2809222 En effet, dans une telle mémoire, le nombre de verrous ("latchs") de programmation doit être identique au nombre de bits que comprend une page afin de permettre l'enregistrement simultané de toute une page. Lorsqu'un5 mot binaire d'adresse déterminée doit être enregistré au sein d'une chaîne de bits comprenant d'autres mots binaires et un code ECC, il est nécessaire de lire dans la mémoire la chaîne de bits complète, d'y insérer le mot binaire en écrasant l'ancien mot de même adresse, de calculer un nouveau code ECC et d'insérer le nouveau code ECC en écrasant l'ancien code ECC. La nouvelle chaîne de bits comprenant le nouveau mot binaire et le nouveau code ECC est ensuite chargé dans les verrous de programmation. Toutefois, si un autre mot de la même chaîne de bits doit ensuite être remplacé par un nouveau mot avant le déclenchement de l'étape de programmation, il n'est plus possible d'accéder à la chaîne de bits si celle-ci a été chargée dans les verrous. Pour pallier cet inconvénient, une solution classique consiste à stocker temporairement les chaînes de bits dans un registre tampon accessible en lecture et en écriture, avant le chargement des verrous. Tant que les chaînes de bit se trouvent dans le registre tampon, elles peuvent être modifiées à volonté avec insertion à chaque modification d'un nouveau code ECC. L'inconvénient de cette solution tient dans l'existence même du registre tampon, qui présente un encombrement non négligeable et rend la mémoire plus complexe et coûteuse à réaliser. Ainsi, par exemple, une mémoire comprenant des pages de 128 mots binaires enregistrés par paires de mots accompagnées d'un code ECC nécessite un registre tampon capable de stocker, avant le chargement des verrous, les 128 mots binaires de la page auxquels s'ajoutent les codes ECC associés. La présente invention vise à pallier cet inconvénient. 2809222 Plus particulièrement, la présente invention vise une structure de mémoire programmable par page ne nécessitant pas de registre tampon pour le stockage d'une page à enregistrer, qui permette toutefois de modifier des chaînes de bits autant de fois que nécessaire avant le démarrage du processus de programmation. Pour atteindre cet objectif, la présente invention se base sur le fait que les verrous de programmation d'une mémoire sont, comme les cellules mémoire, connectés aux circuits de lecture par l'intermédiaire des lignes de bits. La présente invention se base également sur le fait que l'état passant ou non passant d'un verrou, considéré entre le point de connexion du verrou à une ligne de bits et son point de connexion à la ligne de programmation, est fonction de la donnée qui a été chargée dans le verrou. L'idée de la présente invention est ainsi d'utiliser les circuits de lecture pour lire le contenu des verrous, en appliquant aux verrous le principe de lecture des cellules mémoire. A cet effet, une autre idée de la présente invention est de couper les chemins conducteurs reliant les circuits de lecture aux cellules mémoire lorsque les verrous doivent être lus, pour que l'état passant ou non passant des cellules mémoire n'interfère pas sur la lecture des verrous. Ainsi, la rangée de verrous présente dans une mémoire peut être utilisée en tant que registre tampon accessible en lecture et en écriture, pour stocker et modifier à volonté des chaines de bits à enregistrer avant le déclenchement du processus de programmation. Plus particulièrement, la présente invention prévoit une mémoire du type décrit ci-dessus, comprenant des moyens pour rompre les chemins conducteurs reliant les cellules mémoire d'une colonne aux circuits de lecture lorsque des données ont été chargées dans les verrous de la colonne, sans rompre les chemins conducteurs reliant les verrous de la colonne aux circuits de lecture. 6 2809222 Selon un mode de réalisation, la mémoire comprend des moyens interrupteurs agencés sur les lignes de bits entre le plan mémoire et les verrous, et des moyens de commande des moyens interrupteurs agencés pour fermer les moyens interrupteurs d'une colonne lorsque des données ont été chargées dans les verrous de la colonne. Selon un mode de réalisation, les moyens de commande comprennent un circuit à mémoire délivrant un signal de fermeture des moyens interrupteurs d'une colonne après avoir reçu un signal de chargement des verrous de la colonne. Selon un mode de réalisation, le circuit à mémoire est un élément d'un circuit de sélection de colonne. Selon un mode de réalisation, les moyens interrupteurs d'une colonne se trouvant dans l'état fermé en mode lecture sont réouverts en mode programmation par un signal de remise à zéro appliqué aux moyens de commande. Selon un mode de réalisation, un moyen interrupteur comprend deux interrupteurs en parallèle, le premier interrupteur étant piloté par les moyens de commande, le second interrupteur étant piloté par un signal assurant l'ouverture du second interrupteur lorsque la mémoire est en phase de programmation et sa fermeture dans le cas contraire. Selon un mode de réalisation, la mémoire comprend des verrous de structure symétrique pouvant recevoir des bits égaux à 1 ou à 0 sans nécessiter une remise à zéro des verrous. Selon un mode de réalisation, les cellules d'une même colonne connectées à une même ligne de mots comprennent une chaîne de bits constituée par au moins deux mots binaires et un code de correction d'erreur. Selon un mode de réalisation, la mémoire comprend un circuit de programmation et de correction d'erreur agencé pour effectuer les opérations suivantes, sur réception d'un mot à enregistrer dans le plan mémoire à une adresse 7 2809222 déterminée: lire dans le plan mémoire la chaîne de bits désignée par l'adresse du mot à enregistrer, insérer le mot binaire dans la chaîne de bits et calculer un nouveau code de correction d'erreur, et charger la nouvelle chaîne de bits dans les verrous de la colonne désignée par l'adresse du mot à enregistrer. Selon un mode de réalisation, le circuit de programmation et de correction d'erreur est agencé pour effectuer les opérations suivantes, sur réception d'un mot binaire à enregistrer dans une chaîne de bits ayant été préalablement chargée dans des verrous: lire la chaîne de bits chargée dans les verrous au moyen des circuits de lecture, insérer le mot binaire dans la chaîne de bits et calculer un nouveau code de correction d'erreur, et charger la nouvelle chaîne de bits dans les verrous. La présente invention concerne également un procédé pour enregistrer des mots binaires dans une mémoire programmable et effaçable électriquement du type décrit ci-dessus, comprenant une étape consistant à charger dans les verrous d'une colonne une chaîne de bits comprenant au moins deux mots binaires et des étapes consistant à rompre les chemins conducteurs reliant les cellules mémoire de la colonne aux circuits de lecture sans rompre les chemins conducteurs reliant les verrous correspondants aux circuits de lecture, lire la chaîne de bits chargée dans les verrous au moyen des circuits de lecture, remplacer un mot binaire par un autre dans la chaîne de bits, et charger la nouvelle chaîne de bits dans les verrous. Selon un mode de réalisation, une chaîne de bits comprend un code de correction d'erreur qui est recalculé lorsqu'un nouveau mot binaire est inséré dans la chaîne de bit et est inséré dans la chaîne de bit à la place du code de correction d'erreur initial. Ces objets, caractéristiques et avantages de la présente invention seront exposés plus en détail dans la 8 2809222 description suivante d'une structure de mémoire et du procédé selon l'invention, en relation avec les figures jointes parmi lesquelles: - la figure 1 représente l'architecture générale d'une mémoire selon l'invention, - la figure 2 est le schéma électrique détaillé d'éléments figurant sous forme de blocs en figure 1, et - la figure 3 représente l'architecture générale d'une mémoire sécurisée selon l'invention. La figure 1 représente la structure d'une mémoire EEPROM programmable par page selon l'invention. La mémoire 10 comprend un plan mémoire 11 comprenant des cellules mémoire Cj agencées de façon matricielle, connectées à des lignes de mots WLi et à des lignes de bits BLj. Les lignes de bits BLj sont agencées en colonnes COLk et le plan mémoire 11 présente une structure répétitive à chaque nouvelle colonne. Chaque colonne COLk comprend ici 21 lignes de bits BL0 à BL20 et définit ainsi en combinaison avec une ligne de mots WLi des groupes de 21 cellules C0 à C20 permettant de stocker des chaînes de 21 bits comprenant chacune deux mots binaires W1, W2 de huit bits (octets) et un code ECC de correction d'erreur. Sur chaque ligne de mots WLi, les groupes de cellules C0 à C20 de chaque colonne COLk sont sélectionnés au moyen d'un transistor CGTk de sélection de colonne, ou transistor de contrôle de grille ("Control Gate Transistor"), représenté schématiquement sur la figure 1. Pour des raisons de lisibilité de la figure 1, on n'a représenté que la première colonne COL0 et les deux premières lignes de mots WL0, WL1 du plan mémoire 11. Egalement, les cellules C0 à C20 de la première colonne et les lignes de bits correspondantes ne sont pas toutes représentées. Toujours de façon classique, chaque ligne de bits BLj de chaque colonne est reliée à une ligne de programmation commune 12 par l'intermédiaire d'un verrou de programmation LTj ("latch") et chaque transistor CGTk est 9 2809222 relié à une ligne de contrôle de grille 13 par l'intermédiaire d'un circuit de sélection de colonne LTCGk. Chaque verrou de programmation LTj a une entrée connectée à un fil de rang j d'un bus de données 14, comprenant ici 21 fils pour appliquer aux 21 verrous d'une colonne les bits b0 à b20 d'une chaîne de bits devant être enregistrée dans la mémoire. En mode programmation, la ligne commune 12 permet d'appliquer un signal de programmation WRITE aux lignes de bits BLj dont les verrous LTj sont dans l'état passant, le signal WRITE étant constitué par une impulsion de la haute tension de programmation Vpp. En mode lecture, effacement ou programmation, la ligne 13 permet d'appliquer aux transistors CGTk dont les verrous LTCGk sont dans l'état passant une tension de contrôle de grille VCG assurant l'activation et la sélection des colonnes correspondantes. La mémoire 10 comprend également 21 circuits de lecture SA0 à SA20 ("Sense Amplifier") pour lire les 21 bits d'une chaîne de bits sélectionnée en lecture. Chaque ligne de bits BLj de chaque colonne COLk est reliée à un circuit de lecture SAD de rang correspondant par l'intermédiaire d'un transistor de sélection TSj, d'un transistor de lecture TRj, et d'un bus de lecture RB, le bus RB assurant l'interconnexion des lignes de bits BLj de même rang à un même circuit de lecture SAj. Les transistors de sélection TSj (TS0 à TS20) des lignes de bits d'une même colonne COLk sont pilotés par un signal commun SELk délivré par un pré-décodeur PDEC. Le pré- décodeur PDEC reçoit en entrée la partie de poids faible ADL des adresses appliquée à la mémoire 10 et forment, avec les transistors de sélection TSj, un décodeur de colonne CDEC. Chaque signal de sélection SELk de rang k délivré par le pré-décodeur PDEC est également appliqué aux verrous LTj d'une colonne COLk de même rang et aux circuits de sélection LTCGk de cette colonne. La partie de poids fort ADH des adresses appliquées à la mémoire 2809222 est appliquée à un décodeur de ligne RDEC dont les sorties contrôlent les diverses lignes de mots WLi. Les transistors de lecture TRj (TRo à TR20) sont pilotés par un signal READ, identique pour toutes les colonnes. Ainsi, le chemin conducteur reliant les cellules mémoire Cj d'une ligne de bits BLj à un circuit de lecture SAj comprend classiquement un transistor de sélection TSj et un transistor de lecture TRj. Selon l'invention, la mémoire 10 comprend en outre des transistors d'isolement TIj agencés sur les lignes de bits, entre le plan mémoire 11 et les neuds de connexion aux lignes de bits des verrous LTj. Plus particulièrement chaque colonne COLk comprend 21 transistors TI0 à TI20 agencés sur les lignes de bits BL0 à BL20. La fermeture des transistors TIj d'une colonne a pour effet de couper les chemins conducteurs reliant les cellules Cj de la colonne aux circuits de lecture SAj, de sorte que seuls les verrous LTj restent reliés électriquement aux circuits de lecture SAj. Selon l'invention, les transistors TIj permettent d'utiliser les circuits de lecture SAj pour lire les données b0 à b20 chargées dans verrous LTj d'une colonne sélectionnée, comme cela sera décrit plus en détail plus loin. On voit en figure 1 que les verrous LTj sont également connectés à une ligne 15 permettant de leur appliquer une tension d'alimentation VA, à une ligne 17 permettant de leur appliquer un signal de chargement LOAD, et à une ligne 18 permettant de leur appliquer un signal de remise à zéro RST1. Les circuits LTCGk sont connectés à la ligne 15, à une ligne 19 permettant de leur appliquer un signal de remise à zéro RST2, et à une ligne 20 permettant de leur appliquer un signal RW. La figure 2 représente plus en détail la structure des cellules mémoire Cj, des verrous de programmation LT et des circuits LTCGk. Chaque cellule Cj comprend classiquement un transistor à grille flottante FGT et un transistor il 2809222 d'accès. Le transistor d'accès TA a sa grille G connectée à une ligne de mots WLi, son drain D connecté à une ligne de bits BLj et sa source S connectée au drain D du transistor FGT. Le transistor FGT a sa grille G connectée à une ligne de contrôle de grille CGL et sa source S connectée à une ligne de source SL. La ligne CGL est commune à tous les transistors FGT des cellules Cj d'une même colonne COLk et de même ligne de bits WLi, pour former les groupes de 21 cellules susmentionnés. La ligne CGL est connectée à une ligne de sélection de colonne CLk par l'intermédiaire d'un transistor de contrôle de grille CGTk, dont la grille est connectée à la ligne de mots WLi. La ligne de sélection CLk est reliée à la ligne 13 décrite plus haut par l'intermédiaire du circuit de sélection LTCGk. Le circuit LTCGk relie la ligne 13 à la ligne CLk au moyen de deux transistors Tl, T3 en parallèle. Le transistor Tl est piloté par le signal RW et le transistor T3 est piloté par la sortie d'une cellule inverseuse à mémoire INV1 comprenant deux portes inverseuses dont les sorties sont réciproquement ramenées sur les entrées, la cellule INV étant alimentée électriquement par la tension VA (ligne 15). La sortie de la cellule INV1 est reliée à la masse par l'intermédiaire d'un transistor T4 piloté par le signal de remise à zéro RST2. L'entrée de la cellule INV1 est reliée à la masse par deux transistors en série T5, T6 pilotés respectivement par les signaux LOAD et SELk. Ainsi, le drain D d'un transistor à grille flottante FGT d'une cellule mémoire Cj est relié à un amplificateur de lecture SAj par l'intermédiaire du transistor d'accès TA, d'un transistor d'isolement TIj selon l'invention, d'un transistor de sélection TSj du décodeur de colonne CDEC et d'un transistor de lecture TRj. Les transistors TSj et TRj sont pilotés respectivement par les signaux SELk et READ décrits plus haut et le transistor TIj est piloté par un signal BRK. Selon l'invention, le signal 12 2809222 BRK est prélevé ici à l'entrée de la cellule INV1 du circuit de sélection LTCGk. Le signal BRK est ainsi l'inverse du signal qui pilote le transistor T3, de sorte que le transistor TIj est toujours bloqué quand le transistor T3 est passant et est toujours passant quand le transistor T3 est bloqué. La ligne de bits BLj est connectée à la ligne 12 délivrant par l'intermédiaire d'un transistor T10 du verrou de programmation LTj. Le transistor T10 à son drain D connecté à la ligne 12 et sa source S connectée à la ligne de bits BLj en un noeud se situant entre le transistor d'isolement TIj et le transistor de sélection TSj. Dans le verrou LTj, la grille du transistor T10 est pilotée par une cellule inverseuse à mémoire INV2 comprenant comme la cellule INV1 deux portes inverseuses tête-bêche alimentées par la tension VA. L'entrée de la cellule INV2 est reliée à la masse par trois transistors en série Tll, T12, T13. La grille du transistor Tll est connectée à un fil du bus de données 14 pour recevoir un bit de donnée bj au cours d'une opération de chargement. Le transistor T12 est piloté par le signal LOAD et le transistor T13 piloté par le signal SELk. La sortie de la cellule inverseuse INV2 est reliée à la masse par trois transistors T14, T15, T16. La grille du transistor T14 est connectée à la grille du transistor Tll par l'intermédiaire d'une porte inverseuse. Le transistor T15 est piloté comme le transistor T12 par le signal LOAD et le transistor T16 est piloté comme le transistor T13 par le signal SELk. Cette structure symétrique du verrou LTj, optionnelle, permet d'enregistrer à volonté des bits à 0 ou à 1 dans le verrou sans nécessiter une remise à zéro de celui- ci. La remise à zéro du verrou est assurée par un transistor T17 pilotée par le signal RST1, connecté entre la sortie de la cellule INV2 et la masse. Le fonctionnement de la mémoire 10 se distingue essentiellement d'une mémoire classique par le fait que 13 2809222 les verrous LTj d'une colonne COLk sélectionnée au moyen d'un signal SELk sont accessibles en lecture au moyen des circuits de lecture SAj lorsque des données ont été chargées dans les verrous. Au cours de l'étape de chargement, les bits b0 à b20 sont appliqués aux verrous LTj, la tension VA est égale à la tension d'alimentation Vcc de la mémoire Vcc, un signal SELk de sélection d'une colonne de rang k est porté à 1 et le signal de chargement LOAD est également porté à 1. La sortie de la cellule INV2 de chaque verrou LTj de la colonne COLk sélectionnée recopie la valeur du bit bj appliqué au verrou. Le passage à 1 simultané des signaux LOAD et SELk fait également basculer à 1 la sortie de la cellule INVl dans le circuit de sélection LTCGk, de sorte le transistor T3 est passant. A cet instant, le signal BRK passe à 0 et les transistors d'isolement TIj de la colonne sélectionnée se bloquent, isolant ainsi les cellules mémoire de la colonne sélectionnée des circuits de lecture SAj. En pratique, une telle étape de chargement des verrous d'une colonne peut être appliquée séquentiellement à tout ou partie des colonnes d'une même ligne de mots pour le chargement complet ou partiel d'une page. Grâce à l'invention, l'étape de chargement peut être suivie d'une étape de lecture des verrous LTj au moyen des circuits de lecture SAj. En effet, le transistor de sortie T10 de chaque verrou LTj est respectivement passant lorsqu'un bit bj égal à 1 a été chargé dans le verrou et bloqué lorsqu'un bit bj égal à 0 a été chargé. L'état passant ou non passant d'un verrou est donc représentatif de la donnée chargée dans le verrou. Ainsi, les verrous peuvent être lus en activant les circuits de lecture SAj et en portant les signaux SELk et READ à 1 comme dans le cas d'une lecture classique de la mémoire. Pour assurer la lecture des verrous, la ligne 12 doit être connectée à la masse. Lorsqu'un bit à "1" a été chargé dans un verrou LTj, un 14 2809222 courant de lecture Iread traverse le transistor T10 du verrou comme indiqué par une flèche Al, et la sortie du circuit de lecture correspondant SAj passe à 1. Dans le cas contraire, la sortie du circuit de lecture SAj reste à 0. Le principe de lecture est ainsi le même que la lecture des transistors à grille flottante des cellules mémoire Cj, qui sont ici isolées des circuits de lecture SAj par les transistors TIj pendant la lecture des verrous. Les verrous LTj peuvent ainsi être lus et réécrits à volonté avant le déclenchement du processus d'effacement et de programmation des cellules mémoire. De plus, la structure symétrique des verrous permet d'y réécrire des données à 1 ou à 0 sans nécessiter une remise à zéro des verrous au moyen du signal RSTl. On peut noter ici que les circuits de lecture SAj ne "savent" pas s'ils lisent des cellules mémoire ou de verrous. Le déclenchement d'une opération de lecture d'une colonne COLk entraîne automatiquement une lecture des verrous de la colonne ou une lecture des cellules mémoire de la colonne, selon que des données ont été chargées ou non dans les verrous. Si des données n'ont pas été chargées dans les verrous, le courant de lecture Iread circule dans les cellules sélectionnées Cj comme indiqué par une flèche A2. Pour que la lecture se fasse automatiquement dans le plan mémoire 11 quand des données n'ont pas été chargées dans les verrous, le signal RW appliqué aux circuits de sélection LTCGk est porté à 1 et la tension de lecture Vread est appliquée à la ligne 13. En relation avec le problème exposé au préambule, cette possibilité de lecture des verrous offerte par la présente invention permet de récupérer une chaîne de bits présente dans les verrous, y insérer un nouveau mot binaire, calculer un nouveau code ECC et réinjecter la chaîne de bits dans les verrous. Une architecture de mémoire sécurisée exploitant cette caractéristique sera décrite plus loin. 2809222 Les étapes suivantes d'effacement et de programmation des cellules mémoire sont réalisées après chargement définitif des verrous, lorsque les données ne doivent plus être modifiées. L'effacement des cellules devant recevoir de nouvelles données est réalisé en appliquant la tension Vpp (10 à 20 Volt) sur la ligne de mots WLi sélectionnée par le décodeur de ligne RDEC, ainsi que sur la ligne 13 deprogrammation (tension VCG) et sur la ligne d'alimentation 15 (tension VA), la ligne de source SL des transistors à grille flottante FGT étant connectée à la masse. La tension Vpp se retrouve sur les grilles de tous les transistors FGT des colonnes (de la ligne de mots Wli sélectionnée) dont les verrous de programmation LTj ont été chargés avec des données, car le circuit LTCGk de ces colonnes, qui a reçu le signal LOAD pendant l'étape de chargement, est passant. Ces transistors FGT sont ainsi effacés collectivement. A l'étape de programmation, les circuits de sélection de colonnes LTCGk sont remis à zéro au moyen du signal RST2 pour réouvrir les chemins conducteurs reliant les verrous LTj aux cellules mémoire Cj. Les verrous LTj eux- mêmes ne sont pas remis à zéro car ils contiennent les données de programmation. La tension Vpp est appliquée à la ligne de mots WLi sélectionnée, la tension VCG est portée à la masse, le signal RW est porté à la tension Vcc pour laisser passer le 1"0" (masse) sur les grilles des transistors FGT de la ligne de mots. Le signal WRITE, constitué par une impulsion de la tension Vpp, est émis. Les verrous dans l'état passant (ayant reçus un bit à 1) laissent passer la tension Vpp jusqu'aux drains des transistors FGT, qui sont alors programmés (injection de charges électriques). La présente invention est bien entendu susceptible de diverses variantes de réalisation. Notamment, le signal BRK assurant l'ouverture des transistors d'isolement TIj d'une colonne peut être 16 2809222 délivré par une cellule à mémoire quelconque, inverseuse ou non, dont la sortie est portée à 0 par la combinaison des signaux LOAD et SELk et remise à 1 par le signal RST2. L'utilisation de la cellules INVl des circuit de sélection de colonne LTCGk pour générer le signal BRK n'a été prévue ici que dans un souci d'économie de moyens. D'autre part, une variante de la présente invention consiste à prévoir, en parallèle avec les interrupteurs d'isolement TIj, des interrupteurs TOj de réouverture représentés en traits pointillés en figure 2, pilotés par un signal WRITE-ENABLE qui est mis à 1 pendant les opérations de programmation. Dans ce cas, il n'est pas nécessaire de prévoir un signal RST2 distinct du signal RSTl pour réouvrir (rendre passants) les transistor TIj au moment de l'étape de programmation. Le passage de la tension Vpp vers les cellules mémoire est assuré ici par les transistors TOj et les transistors TIj peuvent rester bloqués. De plus, dans ce mode de réalisation, le transistor Tl présent dans les circuits LTCGk peut être piloté par le signal READ. La figure 3 illustre une application de la présente invention à la réalisation d'une mémoire 30 sécurisée programmable par page, à entrée et sortie série. La mémoire 30, représentée schématiquement, comprend la structure de mémoire 10 qui vient d'être décrite, une unité centrale CPU, des registres RDIN et RAIN à entrée série et sortie parallèle et un registre de sortie RDOUT à entrée parallèle et sortie série. L'unité CPU comprend un algorithme de correction d'erreur de type classique prenant la forme d'un circuit ECCCT à logique câblé. Ce circuit ECCCT est prévu pour corriger automatiquement un bit erroné dans une chaîne de bit fournie sur son entrée El et/ou générer un code ECC à partir d'une chaîne de bits de données fournie sur son entrée E2. La mémoire 10 comprend comme cela a été décrit plus haut un plan mémoire 11, un étage TI (comprenant les interrupteurs d'isolement TIj selon l'invention), un étage LT de 17 2809222 chargement de données (comprenant les verrous LTj), le décodeur de colonne CDEC, un étage TR (comprenant les transistors de lecture TRj), un bus de lecture RB et un étage de lecture SA (comprenant les circuits de lecture SAj). Les entrées série des registres RDIN et RAIN sont connectées à un port d'entrée PIN de la mémoire 30 et la sortie série du registre RDOUT est connecté à un port de sortie POUT. Les codes opération CODEop des opérations à réaliser sont reçus dans le registre RDIN et appliqués à l'unité centrale CPU pour décodage et exécution. Les adresses d'enregistrement de mots sont reçues dans le registre RAIN et appliquées à la mémoire 10. Plus particulièrement, les bits d'adresse de poids fort ADH sont appliqués au décodeur de lignes RDEC et les bits d'adresse de poids faible ADL sont appliqués au décodeur de colonne CDEC à l'exception du bit d'adresse de plus faible poids A0 qui est appliqué à l'unité CPU. Les mots binaires Wj à enregistrer dans la mémoire sont reçus dans le registre RDIN et sont appliqués à l'unité CPU qui délivre à l'entrée de l'étage LT des chaînes de bits des mots binaires concaténés par paires et accompagnés d'un code de correction d'erreur ECC. Selon l'invention, l'unité centrale CPU utilise l'étage de verrous LT comme un registre dynamique accessible en lecture et en écriture permettant de stocker les chaînes de bits à enregistrer dans le plan mémoire ll et de les modifier si nécessaire avant le déclenchement des processus d'effacement et de programmation. A titre d'exemple, on considèrera que l'unité CPU reçoit l'instruction d'écriture suivante, sous la forme d'une suite d'octets: [CODEWRITE] [ADHl] [ADLl1 [Wl] [ADL2] [W2] [ADL3] [W3] Cette instruction signifie: "dans la ligne de mots d'adresse ADHl, écrire le mot Wl dans la colonne 18 2809222 d'adresse ADL1, le mot W2 dans la colonne d'adresse ADL2 et le mot W3 dans la colonne d'adresse ADL3. Pour mettre en lumière les avantages de la présente invention, on supposera également que les mots W1 et W3 ont la même adresse partielle, c'est-à-dire que les adresses d'enregistrement ADL1, ADL3 des mots W1, W3 sont identiques, à l'exception du bit A0. Ces adresses correspondent ainsi matériellement à la même chaîne de bits dans la même colonne physique du plan mémoire. Après avoir décodé le code instruction CODEWRITE, l'unité CPU applique les bits A15-A8 de l'adresse ADH1 au décodeur RDEC et les 7 bits de plus fort poids A7-A1 de l'adresse ADL1 au décodeur CDEC, le bit A0 n'étant pas appliqué au décodeur CDEC. L'adresse ADH1 (A15-A8) qui désigne la page (ligne de mots) ne sera pas modifiée jusqu'au terme du processus de chargement et de programmation de la page. L'unité CPU lit ensuite le mot W1 reçu dans le registre RDIN et lit la chaîne de bit présente dans la colonne physique d'adresse A7-A1, au moyen du circuit de lecture SA: Wa//Wb//ECC L'unité CPU vérifie ensuite au moyen du code ECC la validité des bits de la chaîne et corrige si nécessaire un bit erroné. Puis, l'unité CPU remplace l'un des mots Wa, Wb par le nouveau mot W1, le mot Wa ou Wb à remplacer étant désigné par le bit d'adresse A0. I1 s'agit par exemple du mot Wa si le bit A0 est égal à 0 (adresse paire). L'unité CPU calcule le nouveau code ECC' en fonction des bits des mots W1 et Wb, et délivre une nouvelle chaîne de bits: W1//Wb//ECC' 19 2809222 Cette nouvelle chaîne de bits est appliquée à l'entrée de l'étage LT et est chargée dans les verrous de la colonne d'adresse A7-A1 au moyen du signal LOAD. L'unité CPU réalise les mêmes étapes pour les mot W2 et W3. Toutefois, lorsque ces étapes sont réalisées pour le mot W3, qui a la même adresse partielle A7-A1 que le mot W1, la chaîne de bits délivrée par le circuit de lecture SA n'est pas la chaîne de bits Wa//Wb//ECC présente dans la mémoire mais la chaîne de bits Wl//Wb//ECC' chargée précédemment dans les verrous de la colonne de l'étage LT désignée par l'adresse A7-A1. En effet, comme on l'a vu plus haut, le chemin reliant le circuit de lecture SA au plan mémoire 11 a été coupé par l'étage TI après le chargement de la chaîne Wl//Wb//ECC' et le circuit de lecture SA ne peut "que" lire le contenu de l'étage LT. L'unité CPU remplace ainsi le mot Wb par le mot W3, calcule un nouveau code ECC" et charge dans les même verrous de l'étage LT la nouvelle chaîne de bits: W1//W2//ECC". L'exemple simplifié qui vient d'être décrit montre que mémoire 30 ne nécessite pas de registre tampon autre que l'étage LT. Cet exemple montre également que la mémoire peut fonctionner en mode débordement de page, c'est-à- dire recevoir une quantité de mots à enregistrer dans une page supérieure à la capacité d'une page, en écrasant des mots déjà chargés dans l'étage LT par de nouveaux mots reçus (tout recalculant des codes ECC appropriés) jusqu'à ce que le processus d'effacement et de programmation des cellules mémoire soit déclenché. Le tableau 1 ci-après décrit et résume les étapes essentielles d'un processus de chargement et de programmation d'une page selon l'invention. Bien qu'il soit mentionné à l'étape 3 du tableau "lecture d'une chaîne de bits dans la mémoire ", il est bien évident au 2809222 regard des explications qui précèdent que cette lecture est faite en réalité dans les verrous de la colonne visée si une chaîne de bit a déjà été chargée dans ces verrous au cours d'une étape précédente. Le fonctionnement en mode lecture de la mémoire 30 est en soi conventionnel. Lorsqu'un mot Wj doit être lu à une adresse déterminé, la chaîne Wj//Wj+1//ECC désignée par l'adresse partielle du mot Wj est lue dans le plan mémoire, l'étape de vérification et correction éventuelle d'erreur est réalisée par l'unité CPU au moyen du circuit ECCCT, et l'unité CPU délivre les deux mots Wj, Wj+,. Le mot Wj est sélectionné parmi les deux mots Wj, Wj+l au moyen d'un multiplexeur MUX piloté par le bit d'adresse A0, puis est placé dans le registre RDOUT et est délivré sur le port de sortie POUT sous forme de données série. La présente invention est bien entendu applicable à l'enregistrement de chaines de bits comprenant trois, quatre, cinq mots binaires voire plus, à la condition bien entendu que le nombre de lignes de bits que contiennent les colonnes du plan mémoire soit prévu pour recevoir de telles chaines de bits. La présente invention est également applicable à divers types de mémoire, à accès série ou accès parallèle. De plus, bien que le problème décrit au préambule concerne les mémoire sécurisées et l'insertion dans les mémoires sécurisées de chaînes de bits comprenant des mots binaires concaténés et un code ECC, la présente invention n'en demeure pas moins applicable aux mémoires non sécurisées, par exemple si l'on souhaite procéder à une vérification des mots chargés dans les verrous LT avant le déclenchement du processus d'effacement et de programmation. 21 2809222 Tableau 1 (enregistrement d'une page mémoire) Etape Description de l'étape Etape suivante2 1 Réception de l'adresse haute ADH et application au = 2 décodeur de lignes RDEC 2 Réception de l'adresse basse ADL et application au z 3 décodeur de colonne CDEC 3 Lecture dans la mémoire d'une chaîne de bits > 4 Wa//Wb//ECC à l'adresse partielle ADH//ADL (sans le bit AO) 4 Analyse de la chaîne de bits pour détection d'erreur. Oui => 5 Détection d'un bit erroné ? Non = 6 Correction du bit erroné => 6 6 Réception et lecture d'un mot Wc devant être => 7 enregistré à l'adresse ADH-ADL 7 Calcul d'un code ECC' à partir du nouveau couple de => 8 mots Wc//Wb ou Wa//Wc (selon la valeur du bit d'adresse AO) 8 Charger la chaine de bits Wc//Wb//ECC' ou => 9 Wa//Wc//ECC' dans les verrous LTj de la colonne d'adresse ADL 9 Nouvelle adresse de colonne reçue ? Oui => 2 Non = 10 Effacement simultané de toutes les cellules de la => 11 ligne de mots dont les verrous LT ont été chargés avec des données 11 Programmation simultanée des cellules dans les FIN colonnes effacées (impulsion WRITE) 22 2809222 REVENDICATIONS 1. Mémoire programmable et effaçable électriquement (10, 30) comprenant un plan mémoire (11) comportant des cellules mémoire (Cj) connectées à des lignes de mots (WLi) et à des lignes de bits (BLj), les lignes de bits étant agencées en colonnes, des circuits de lecture (SAj) reliés aux lignes de bits et des verrous (LTj) de programmation reliant les lignes de bits (BLj) à une ligne de programmation (12), caractérisée en ce qu'elle comprend des moyens (Tj) pour rompre les chemins conducteurs reliant les cellules mémoire (Cj) d'une colonne aux circuits de lecture (SAj) lorsque des données ont été chargées dans les verrous (LTj) de la colonne, sans rompre les chemins conducteurs reliant les verrous de la colonne aux circuits de lecture. 2. Mémoire selon la revendication 1, comprenant des moyens interrupteurs (TIj) agencés sur les lignes de bits entre le plan mémoire (11) et les verrous (LTj), et des moyens de commande des moyens interrupteurs agencés pour fermer les moyens interrupteurs d'une colonne lorsque des données (bj) ont été chargées dans les verrous (LTj) de la colonne. 3. Mémoire selon la revendication 2, dans laquelle les moyens de commande comprennent un circuit à mémoire (INV1) délivrant un signal (BRK) de fermeture des moyens interrupteurs d'une colonne après avoir reçu un signal (LOAD, SELk) de chargement des verrous de la colonne. 4. Mémoire selon la revendication 3, dans laquelle le circuit à mémoire (INV1) est un élément d'un circuit de sélection de colonne (LTCGk). 5. Mémoire selon l'une des revendications 2 à 4, dans laquelle les moyens interrupteurs (TIj) d'une colonne se 23 2809222 trouvant dans l'état fermé en mode lecture sont réouverts en mode programmation par un signal de remise à zéro (RST2) appliqué aux moyens de commande (INV1). 6. Mémoire selon l'une des revendications 2 à 4, dans laquelle un moyen interrupteur comprend deux interrupteurs en parallèle (TIj, TOj), le premier interrupteur (TIj) étant piloté par les moyens de commande (INV1), le second interrupteur (TOj) étant piloté par un signal (WRITE-ENABLE) assurant l'ouverture du second interrupteur lorsque la mémoire est en phase de programmation et sa fermeture dans le cas contraire. 7. Mémoire selon l'une des revendications 1 à 6, caractérisée en ce qu'elle comprend des verrous (LTj) de structure symétrique (Tll-T13, T14-T16) pouvant recevoir des bits égaux à 1 ou à 0 sans nécessiter une remise à zéro (RST1) des verrous. 8. Mémoire selon l'une des revendications 1 à 7, caractérisé en ce que les cellules (Cj) d'une même colonne connectées à une même ligne de mots (WLi) comprennent une chaîne de bits (W1, W2, ECC) constituée par au moins deux mots binaires (W1, W2) et un code de correction d'erreur (ECC). 9. Mémoire (30) selon la revendication 8, caractérisée en ce qu'elle comprend un circuit de programmation et de correction d'erreur (CPU, ECCCT) agencé pour effectuer les opérations suivantes, sur réception d'un mot à enregistrer dans le plan mémoire à une adresse déterminée: - lire dans le plan mémoire (11) la chaîne de bits désignée par l'adresse du mot à enregistrer, - insérer le mot binaire dans la chaîne de bits et calculer un nouveau code de correction d'erreur (ECC'), 24 2809222 - charger la nouvelle chaîne de bits dans les verrous (LT) de la colonne désignée par l'adresse du mot à enregistrer. 10. Mémoire selon la revendication 9, caractérisé en ce que le circuit de programmation et de correction d'erreur est agencé pour effectuer les opérations suivantes, sur réception d'un mot binaire à enregistrer dans une chaîne de bits ayant été préalablement chargée dans des verrous: - lire la chaîne de bits chargée dans les verrous (LT) au moyen des circuits de lecture (SA), insérer le mot binaire dans la chaîne de bits et calculer un nouveau code de correction d'erreur (ECC"), - charger la nouvelle chaine de bits dans les verrous. 11. Procédé pour enregistrer des mots binaires dans une mémoire programmable et effaçable électriquement (10, ) comprenant un plan mémoire (11) comportant des cellules mémoire (Cj) connectées à des lignes de mots (WLi) et à des lignes de bits (BLj), les lignes de bits étant agencées en colonnes, la mémoire comprenant également des circuits de lecture (SAj) reliés aux lignes de bits et des verrous (LTi) de programmation reliant les lignes de bits (BLj) à une ligne de programmation (12), procédé comprenant une étape consistant à charger dans les verrous (LTj) d'une colonne une chaîne de bits comprenant au moins deux mots binaires, caractérisé en ce qu'il comprend les étapes consistant à: - rompre les chemins conducteurs reliant les cellules mémoire de la colonne aux circuits de lecture sans rompre les chemins conducteurs reliant les verrous correspondants aux circuits de lecture, - lire la chaîne de bits chargée dans les verrous au moyen des circuits de lecture (SAj), 2809222 - remplacer un mot binaire par un autre dans la chaîne de bits, et - charger la nouvelle chaîne de bits dans les verrous. 12. Procédé selon la revendication 11, dans lequel une chaîne de bits comprend un code de correction d'erreur (ECC) qui est recalculé lorsqu'un nouveau mot binaire est inséré dans la chaine de bit et est inséré dans la chaîne de bit à la place du code de correction10 d'erreur initial.