Brevet FR2982406A1 — publié le 20130510

Le présent document concerne une mémoire non volatile programmable électriquement, robuste aux éventuelles corruptions de données, notamment lors d'une phase d'écriture ou de programmation, et/ou de lecture. Il concerne aussi un procédé de gestion d'une telle mémoire non volatile. Enfin, il concerne un dispositif ou système électronique qui comprend au moins une telle mémoire programmable électriquement. Selon une architecture répandue de l'état de la technique, une mémoire effaçable et programmable électriquement de type EEPROM comprend des cellules mémoires, comprenant chacune un transistor à grille flottante et un transistor d'accès de type MOS, organisées dans un plan mémoire selon une matrice de n X m cellules disposées en n rangées (ou lignes) et m colonnes, chacune se trouvant à l'intersection d'une ligne de mots et d'une ligne de bit. Dans une telle structure de l'état de la technique, on appelle page physique de la mémoire un ensemble de cellules mémoires connectées à une même ligne de mots, sur une rangée. Le plan mémoire d'une telle mémoire est un ensemble de pages. La figure 1 représente un exemple d'une partie de mémoire EEPROM selon une telle architecture. Plus précisément, cette partie de mémoire représentée comprend deux colonnes et quatre rangées, auxquelles sont associées les quatre lignes de mot WL; à W14+3. Sur chacune de ces rangées, chaque colonne comprend en fait huit lignes de bit (respectivement BLO à BL7 et BL8 à BL15) reliées à huit cellules mémoires. Dans cet exemple représenté, ces huit cellules disposées à chaque intersection d'une colonne et d'une rangée forment ainsi un octet de mémoire. La figure 2 représente plus précisément un tel octet de mémoire. Chaque cellule mémoire de cet octet, telle que la cellule CR) mise en évidence, comprend un transistor à grille flottante FGT et un transistor d'accès AT comme rappelé ci-dessus. Ce dernier a sa grille G connectée à la ligne de mot W14, son drain D connecté à une ligne de bit BLo et sa source S connectée au drain D du transistor à grille flottante FGT. Ce dernier a sa source connectée à une ligne de source LS et sa grille de contrôle G connectée à une ligne de contrôle de grille CGLo, par l'intermédiaire d'un transistor de contrôle de grille CGTo, dont la grille est reliée à la ligne de mot W14, dont le drain D est connecté à la ligne de sélection de grille CGLo et dont la source S est connectée à un potentiel commun aux huit grilles de contrôle des transistors à grille flottante FGT. La ligne de sélection de grille CGLo s'étend sur toutes les pages du plan mémoire, de manière similaire aux lignes de bit, et relie les grilles des transistors à grille flottante de chaque cellule d'une même colonne par l'intermédiaire du transistor de contrôle de grille CGT. En remarque, une ligne de source LS s'étend de manière similaire pour relier les sources de chaque cellule à la même tension de source, comme explicité précédemment. Dans une telle mémoire, chaque cellule Cij, peut contenir une information binaire, qui peut être modifiée par une opération d'écriture, qui consiste à charger positivement la grille flottante du transistor FGT, ou par une opération d'effacement, qui consiste charger négativement cette grille flottante : ces opérations d'effacement ou d'écriture d'une cellule mémoire, plus exactement du transistor à grille flottante FGT de la cellule, se font par exemple par effet tunnel (effet Fowler Nordheim). En résultat, un transistor FGT effacé présente une tension de seuil supérieure à celle du transistor programmé. Lorsqu'une tension de lecture Vread choisie entre ces deux valeurs de tension de seuil est appliquée sur la grille de contrôle d'un tel transistor FGT, il reste bloqué s'il est dans un état effacé et passant s'il est dans un état programmé, ce qui permet de détecter son état et de lui associer une valeur binaire représentant un bit de donnée mémorisée. Selon une méthode courante de l'état de la technique, l'effacement collectif des transistors FGT est obtenu en appliquant une tension de 15 à 20 V sur la grille de contrôle des transistors FGT par l'intermédiaire du transistor de contrôle de grille CGTo, pendant que la ligne de source est à 0 et que le drain des transistors FGT est à un potentiel flottant. La programmation individuelle de transistors FGT est obtenue en appliquant la tension de programmation Vpp sur les drains des transistors FGT via les transistors d'accès AT, pendant que la grille de contrôle des transistors FGT est à 0 et que la ligne de source est à un potentiel flottant. La figure 3 représente plus globalement et schématiquement un plan 1 d'une telle mémoire EEPROM, comprenant huit colonnes de 8 bits et 32 rangées, soit un total de 2048 bits. Chaque ligne de mot WL; du plan mémoire, non représentée, est contrôlée par un signal de tension délivré par une sortie d'un décodeur de ligne RDEC. Chaque ligne de sélection de colonne CGLi reçoit une tension à partir d'un verrou de colonne, non représenté, en coopération avec un décodeur de colonne CDEC. De même, Chaque ligne de bit BLj est reliée à un verrou de programmation, non représenté, et à un décodeur de colonne CDEC, pour lui envoyer le signal nécessaire à une opération voulue. Enfin, chaque ligne de source LS est connectée à une circuiterie qui la porte au potentiel de masse lors d'une phase d'effacement ou de lecture, ou la laisse à un potentiel flottant lors d'une phase d'écriture. Sur cette figure, le plan mémoire comprend ainsi plusieurs pages successivement disposées sur les différentes rangées, chaque page, dont la page Pi considérée, comprenant donc huit octets, dont les deux octets Oio et Oit mis en évidence à titre d'exemple, qui sont disposés aux intersections de cette rangée i avec les colonnes 0 et 1, et sont associés chacun à une ligne de contrôle de grille CGLo, CGL1. Dans la pratique, une telle mémoire programmable est associée à un procédé de programmation qui gère des commandes d'écriture pour 30 engendrer des cycles de programmation dont une étape préalable comprend la définition d'une adresse de départ d'écriture d'une certaine donnée dans la mémoire. Cette adresse consiste en la définition de la rangée d'écriture concernée, ainsi que la colonne de début d'écriture. Ensuite, une autre étape préalable, comprend l'activation de tous les verrous de lignes de bit dont les bits sont concernés par l'écriture pour procéder ensuite au cycle de programmation. Lors de ce dernier, tous les verrous nécessaires de la mémoire ont été activés. Ensuite, chaque cycle de programmation comprend d'abord un cycle d'effacement de tous les bits des octets concernés par l'écriture puis un cycle d'écriture en tant que tel, dans lesquels le potentiel de programmation Vpp de la mémoire est porté à sa valeur de programmation, ce qui permet finalement la programmation simultanée et automatique de tous les bits devant prendre la valeur « 1 », tels que définis par les données à mémoriser. Par l'architecture décrite précédemment, il apparaît donc que chaque bit est programmable de manière indépendante en agissant spécifiquement sur les lignes de bit et de mot auxquelles il est relié. Une telle mémoire non volatile de l'état de la technique présente des faiblesses. Notamment, il existe un risque de corruption de ses données dans certaines circonstances, c'est-à-dire un risque que certaines de ses données soient accidentellement modifiées, ou mal enregistrées ou lues, ce qui peut avoir pour conséquence un mauvais fonctionnement, voire un plantage du système dans lequel cette mémoire est implantée. Les circonstances particulières qui peuvent entraîner une corruption des données d'une mémoire peuvent d'abord être liées à une phase d'écriture sur cette mémoire : par exemple, une coupure d'alimentation, un plantage du contrôleur de la mémoire, un virus informatique ou des parasites divers qui surviennent en pleine phase d'écriture peuvent entraîner un échec de tout ou partie de l'opération d'écriture, ce qui se manifeste par une corruption des données. D'autre part, ce phénomène peut aussi survenir hors de toute phase d'écriture de la mémoire, simplement par une modification de certaines données lors de leur rétention sur la mémoire, par exemple par une dégradation de certains transistors avec le temps, un temps de stockage trop important, etc. Une première solution de l'état de la technique pour remédier au moins en partie au problème de corruption de données d'une mémoire non volatile consiste à dédoubler les dispositifs mémoires, en utilisant par exemple le double de mémoires EEPROM et de leurs composants associés dans un certain système, pour stocker les mêmes informations en double. Cette approche est naturellement coûteuse car elle nécessite un matériel important en double, ainsi qu'une gestion complexe de plusieurs mémoires, par exemple par des logiciels dédiés. Elle rallonge aussi naturellement le temps de traitement. Une autre solution de l'état de la technique consiste à proposer une mémoire non volatile intégrée sur un semi-conducteur, dans laquelle chaque bit mémoire est dédoublé, afin de conserver de même chaque donnée en double. Dans cette approche, le doublon est géré au sein de la structure même de la mémoire, de manière intégrée. Cette solution augmente ainsi légèrement l'encombrement du circuit intégré formant la mémoire mais ne modifie pas significativement le reste du système, ce qui minimise l'augmentation de l'encombrement et du surcoût. Dans cette solution de l'état de la technique, chaque bit est associé à un bit jumeau, agencé de telle sorte que le fonctionnement des deux bits jumeaux est corrélé, leur programmation étant réalisée simultanément, par les mêmes composants de commande. Cette structure permet donc de dédoubler l'information stockée sans trop augmenter le volume global d'un système, en dédoublant un minimum d'éléments. En cas de défaillance d'un bit mémoire dans le temps, la donnée reste présente sur le second bit jumeau et peut être récupérée. Toutefois, cette approche présente l'inconvénient qu'en cas d'accident lors d'une phase d'écriture, l'information reste perdue : en effet, comme l'écriture est réalisée de manière simultanée sur les deux bits jumeaux, toute défaillance les impacte de la même manière. Une telle mémoire reste alors aussi vulnérable que la mémoire conventionnelle décrite précédemment en référence avec les figures 1 à 3 vis-à-vis des accidents en phase d'écriture, et cette solution de l'état de la technique reste insuffisante. Ainsi, il existe un besoin d'une mémoire électriquement programmable non volatile qui soit moins vulnérable aux risques de corruption de données que les solutions existantes. Plus précisément, un objet de l'invention est de proposer une mémoire non volatile moins vulnérable aux risques de corruption de données mentionnés précédemment, tout en étant peu encombrante, et à moindre coût. A cet effet, l'invention repose sur un procédé de gestion d'une mémoire non volatile, caractérisé en ce qu'il comprend un procédé d'écriture sécurisé comprenant une première phase d'écriture de données dans une première banque d'un plan mémoire de la mémoire non volatile, puis une seconde phase d'écriture des mêmes données dans une seconde banque du même plan mémoire de la mémoire non volatile en cas de succès de la première phase d'écriture. Le procédé de gestion d'une mémoire non volatile peut comprendre une étape préalable de comparaison d'au moins deux bits jumeaux des deux banques du plan mémoire et de correction d'un bit en cas de donnée 25 corrompue. Le procédé de gestion d'une mémoire non volatile peut comprendre une sous-étape de lecture de bits jumeaux des deux banques du plan mémoire à une adresse choisie pour l'écriture, une sous-étape de comparaison de ces 30 deux bits jumeaux, une sous-étape d'activation du verrou de la ligne de bit de la première banque, en fonction des futures données à écrire dans les bits concernés, une sous-étape de réparation qui comprend l'activation du verrou de la ligne de bit du bit jumeau de la seconde banque pour pouvoir écrire la donnée exacte dans cette seconde banque en cas de non égalité entre les données suite à la sous-étape de comparaison, puis une sous- étape d'incrémentation d'un pointeur de colonne et la répétition des sous- étapes précédentes jusqu'au traitement de tout le paquet de données concerné par l'écriture. Le procédé de gestion d'une mémoire non volatile comprend une phase d'écriture en tant que telle des bits de la mémoire, qui comprend un test préalable dans une sous-étape de test de réparation, puis une sous-étape d'écriture de la première banque seule si aucune réparation n'est nécessaire, ou une sous-étape d'écriture préalable de correction de la seconde banque avant l'écriture de la première banque si une réparation est nécessaire. Le procédé de gestion d'une mémoire non volatile peut comprendre une étape d'alignement des deux banques du plan mémoire, qui comprend une sous-étape de lecture des données de bits jumeaux des deux banques dans la colonne pointée, une sous-étape de comparaison des données lues, une sous-étape d'incrémentation du pointeur de colonne en cas d'égalité entre ces données, une sous-étape d'activation du verrou de ligne de bit pour le bit jumeau de la seconde banque en cas de non égalité entre ces données afin de pouvoir recopier la donnée du bit de la première banque dans la seconde banque, une répétition de ces étapes tant que la fin des bits concernés par l'alignement n'est pas atteinte, puis le lancement d'une sous-étape d'écriture dans la seconde banque si une correction s'est révélée nécessaire. Le procédé de gestion d'une mémoire non volatile peut comprendre une étape de lecture qui comprend une étape de vérification de l'état des deux banques du plan mémoire concernées par la lecture, pour déterminer quelle banque lire. Le procédé de gestion d'une mémoire non volatile peut comprendre une étape de lecture avec correction d'erreurs pour remédier à une corruption de données qui aurait pu survenir lors de la rétention des données sur les banques de la mémoire. Le procédé de gestion d'une mémoire non volatile peut comprendre une étape initiale de lancement d'un mode d'écriture sécurisé qui comprend une sous-étape de déclaration d'écriture de manière sécurisée dans la mémoire par un opcode particulier ou peut comprendre une étape initiale de transmission d'un opcode de lecture avant un procédé de lecture de la mémoire. Le procédé de gestion d'une mémoire non volatile peut comprendre la mémorisation de deux flags représentant l'état de chaque banque du plan mémoire, prenant notamment une première valeur si une phase d'écriture est terminée et une seconde valeur si une phase d'écriture est en cours. L'invention porte aussi sur un plan mémoire pour mémoire non volatile programmable électriquement, comprenant des cellules mémoires réparties en colonnes et rangées, caractérisé en ce qu'il comprend un dispositif apte à la mise en oeuvre du procédé de gestion tel que décrit précédemment. Le plan mémoire peut comprendre deux banques pour stocker une même donnée en double, chaque bit de la seconde banque étant jumelé à un bit de la première banque, et peut comprendre deux verrous distincts pour l'activation des lignes de bit distinctes reliées aux deux bits jumeaux de 30 chaque banque. Le plan mémoire pour mémoire non volatile programmable électriquement peut comprendre à l'intersection d'une rangée et d'une colonne un premier octet appartenant à la première banque et relié à des premières lignes de bit s'étendant sur toute la colonne, et un second octet appartenant à la seconde banque et relié à des secondes lignes de bit distinctes s'étendant sur toute la colonne. Le plan mémoire pour mémoire non volatile programmable électriquement peut de plus comprendre à l'intersection d'une rangée et d'une colonne un transistor de contrôle de grille pour chaque octet et une même ligne de source pour les deux octets. Le plan mémoire pour mémoire non volatile programmable électriquement peut comprendre à l'intersection d'une rangée et d'une colonne un premier octet dont les premiers bits sont agencés de manière juxtaposée entre eux, puis des seconds bits d'un second octet agencés de manière juxtaposée entre eux, les deux octets étant reliés à une même ligne de mot s'étendant sur toute une rangée du plan mémoire. Chaque colonne du plan mémoire peut comprendre des décodeurs de colonne, des blocs verrou de commande des lignes de bit qui comprennent chacun deux verrous d'activation de deux lignes de bit pour respectivement un bit de la première et de la seconde banque, et un bloc verrou de commande des lignes de contrôle de grille qui comprend deux verrous d'activation de respectivement un transistor d'accès des cellules mémoires de la première et de la seconde banque. Chaque décodeur de colonne peut transmettre aux blocs verrou de commande des lignes de bit trois valeurs, pour indiquer la sélection de ladite 30 colonne et de la banque concernées pour une opération de programmation ou de lecture et peut transmettre au bloc verrou de commande des lignes de contrôle de grille une valeur pour indiquer la sélection de ladite colonne. L'invention porte aussi sur une mémoire non volatile programmable électriquement, caractérisée en ce qu'elle comprend au moins un plan mémoire pour mémoire telle que décrite ci-dessus. La mémoire non volatile programmable électriquement peut comprendre un générateur haute tension qui génère des valeurs de tension distinctes, pour 10 la commande des deux banques du plan mémoire. La mémoire non volatile programmable électriquement peut comprendre un bloc de correction d'erreur qui permet de détecter une différence entre les données de deux bits jumeaux de la mémoire, de type réalisé par une 15 simple logique OU exclusif, et/ou de réaliser une écriture sécurisée des mêmes données sur les deux banques de la mémoire. La mémoire peut être de type EEPROM. 20 L'invention porte aussi sur un dispositif électronique ou système, caractérisé en ce qu'il comprend au moins une mémoire non volatile programmable électriquement telle que décrite précédemment. Ces objets, caractéristiques et avantages de la présente invention seront 25 exposés en détail dans la description suivante d'un mode d'exécution particulier fait à titre non-limitatif en relation avec les figures jointes parmi lesquelles : La figure 1 représente schématiquement la structure d'une partie de 30 mémoire programmable électriquement selon un état de la technique. La figure 2 représente schématiquement un octet de la mémoire programmable électriquement selon l'état de la technique. La figure 3 représente schématiquement une mémoire selon l'état de la technique. La figure 4 représente schématiquement un octet de mémoire programmable électriquement selon un mode de réalisation de l'invention. La figure 5 représente schématiquement un ensemble de la mémoire selon le mode de réalisation de l'invention pour illustrer son fonctionnement. Les figures 6 et 7 représentent schématiquement des verrous de lignes de de bit de la mémoire programmable électriquement selon le mode de réalisation de l'invention. Les figures 8 et 9 représentent schématiquement des verrous de lignes de de contrôle de grille de la mémoire programmable électriquement selon le mode de réalisation de l'invention. La figure 10 représente schématiquement une mémoire programmable électriquement et ses composants de commande selon le mode de réalisation de l'invention. Les figures 11 et 12 représentent un procédé de gestion de l'écriture dans une mémoire programmable électriquement selon le mode de réalisation de l'invention. La figure 13 représente un procédé de gestion de la lecture dans une 30 mémoire programmable électriquement selon le mode de réalisation de l'invention. La figure 14 représente schématiquement un résumé du procédé de gestion d'une mémoire programmable électriquement selon le mode de réalisation de l'invention. Sur les différentes figures, les mêmes références sont utilisées pour des raisons de clarté et compréhension. La solution retenue dans le mode de réalisation décrit repose sur une mémoire intégrée, se présentant sous la forme de circuit intégré, dans laquelle les bits sont dédoublés et agencés de sorte de pouvoir recevoir toute donnée en double, tout en offrant une écriture séquentielle et non pas simultanée de chaque donnée en double, afin de permettre la récupération de la donnée même en cas d'incident en cours d'écriture. Le mode de réalisation d'une mémoire construite selon ce principe va maintenant être détaillé. La figure 4 représente les bits de mémoire disposés à l'intersection d'une colonne et d'une rangée d'une mémoire EEPROM selon un mode de réalisation. Il apparaît qu'à cette intersection, le plan mémoire comprend un premier ensemble de huit bits respectivement reliés à huit lignes de bit B100 à BI07. Cet ensemble comprend de plus un transistor de contrôle de grille CGTo lié aux différentes cellules selon le principe rappelé en rapport avec la figure 2. Selon ce mode de réalisation, la colonne comprend de plus sur cette même rangée un second ensemble comprenant huit bits respectivement reliés à huit lignes de bit BI10 à BI17 et un transistor de contrôle de grille CGT1 lié aux différentes cellules selon le même principe rappelé en rapport avec la figure 2. Ces deux ensembles de huit bits sont destinés à stocker une information en double et correspondent donc à un octet 5 en terme de capacité de stockage et sont considérés comme un seul octet de mémoire vis-à-vis du reste de la mémoire. Chaque bit relié à une ligne de bit BlOi est ainsi jumelé au bit relié à la ligne de bit 1311i du second octet jumeau de la seconde banque. Ces deux octets sont reliés à une même ligne de source S. Leurs bits se présentent de manière similaire à la structure représentée en figure 2, et présentent notamment des transistors MOS qui sont agencés sur un circuit intégré de manière juxtaposée, dans l'ordre représenté par cette figure 4. Ces deux octets sont liés entre eux, sont considérés par le reste de la mémoire comme appartenant à la même colonne mais à deux banques différentes de la mémoire. Ils sont disposés sur une même rangée du plan mémoire et reliés à la même ligne de mot, qui s'étend sur toute une rangée du plan mémoire, sur toute une page. Tous les octets de la seconde banque serviront au stockage d'une copie des données des bits de la première banque, selon un procédé d'écriture séquentiel, comme cela sera détaillé par la suite. Ces deux octets ne servent donc au stockage que d'un seul octet de données, ils ne doublent pas la capacité de la mémoire mais augmentent sa sécurité en remédiant au problème de corruption de données, comme cela sera détaillé par la suite. La figure 5 illustre les composants principaux pour la commande d'une colonne d'un plan mémoire selon le mode de réalisation. Un décodeur de colonne 10 transmet en sortie trois valeurs COL, COLO et COL1 : la valeur COL sert à indiquer la sélection de ladite colonne pour une opération de programmation ou de lecture, les valeurs COLO et COL1 servent respectivement à indiquer la sélection de la banque 0 ou de la banque 1 de la mémoire. Ces trois valeurs sont distribuées par différents bus sur huit blocs verrous de commande des lignes de bit 11 de la colonne. Un bloc verrou de commande des lignes de contrôle de grille 12 reliées aux transistors d'accès de la colonne reçoit la valeur COL uniquement. Les huit blocs verrous de commande des lignes de bit 11 de la colonne reçoivent de plus trois signaux de tension VPP, VPPWO, VPPW1, deux signaux BusrO, Busr1, un signal Data et un signal Reset, dont le rôle sera détaillé par la suite. Le bloc verrou de commande des lignes de contrôle de grille 12 reçoit trois signaux de tension VPP, VPPEO, VPPE1, et un signal Reset. En sortie, ces verrous activent ou non l'envoi de signaux vers la banque 0 ou à la banque 1. Finalement, ces signaux sont orientés vers les lignes de bit B100 à B107 et le transistor d'accès CGTO de la première banque 0 ou vers les lignes de bit BI10 à BI17 et le transistor d'accès CGT1 de la seconde banque 1. Selon ce mode de réalisation, chaque bloc verrou de commande des lignes de bit 11 comprend deux verrous, dont un exemple de réalisation est illustré sur les figures 6 et 7. Ces deux verrous sont destinés à commander respectivement une ligne de bit de la première et la seconde banque de la mémoire. Comme illustré sur ces deux figures, lorsque la colonne considérée est sélectionnée par l'intermédiaire de la valeur Col, chaque verrou permet de relier la ligne de bit de la première banque BIO à une première tension de programmation VPPWO quand la valeur de ColO correspond à une sélection de la première banque 0, ou de relier la ligne de bit de la seconde banque BI1 à une seconde tension de programmation VPPW1 quand la valeur de Col1 correspond à une sélection de la seconde banque. Le bloc verrou de commande des lignes de contrôle de grille 12 comprend de même deux verrous, dont un exemple de réalisation est représenté par les figures 8 et 9, respectivement destinés à la commande du transistor d'accès des cellules mémoires de la première et de la seconde banque. Chaque verrou permet respectivement de relier le transistor d'accès de la première et de la seconde banque à respectivement une tension VVPEO, VPPE1 en cas de sélection de la première ou de la seconde banque en fonction notamment de la valeur de Col. La figure 10 représente plus largement la mémoire selon le mode de réalisation, intégrant les éléments présentés ci-dessus. On y retrouve le plan mémoire 15 comprenant notamment les différents transistors formant les cellules mémoires et les connexions électriques en lignes et colonnes, comme les lignes de bit, de source, de commande de grille et de mot, selon une structure similaire à celle explicitée précédemment. Ce plan mémoire 15 intègre deux banques 0, 1 de données, obtenues par le dédoublement de chaque octet 5 dans chaque colonne, comme explicité précédemment, notamment en rapport avec la figure 4. Il comprend une succession de pages 7 s'étendant sur toute une rangée du plan mémoire. Ensuite, chaque colonne est commandée par les blocs de verrou 11, 12 et les blocs décodeurs de colonne 10 décrits ci-dessus. En remarque, le plan mémoire comprend un espace de stockage particulier 8 pour des données spécifiques au procédé de gestion du plan mémoire, comme deux flags F1, F2, tel que cela sera décrit par la suite. Ce plan mémoire est relié à un registre d'adresse 16 qui transmet aux décodeurs de colonnes 10 et décodeurs de lignes 20 les informations sur les adresses des bits du plan mémoire concernés par une certaine opération. De plus, un registre de données 17 transmet aux blocs verrous les données à écrire dans la mémoire, qui sont identifiées par la dénomination « data » sur les figures 6 et 7. Ce registre de données reçoit en lecture les données (Busr0, Busr1, reset, etc.), qui transitent auparavant par une boîte de correction d'erreur 24. Contrairement à l'état de la technique, la mémoire comprend un générateur haute tension 19 qui génère plusieurs valeurs de tension, nécessaires à la commande des deux banques de la mémoire, comme cela a été vu précédemment : VPP, VPPEO, VPPE1, VPPWO, VPPW1.30 La mémoire comprend de plus deux amplificateurs de lecture 21, 22 pour respectivement lire la banque 0 ou la banque 1, un bloc de logique de contrôle 23 qui interprète les commandes, par exemple selon le protocole SPI, et une boîte de correction d'erreur 24 qui permet de détecter une anomalie, une situation de corruption de données, dans laquelle deux bits jumeaux de la mémoire ne comprennent pas la même donnée. Dans le cas d'un stockage d'une donnée « data », si les deux bits ne comprennent pas la même donnée, une détection de cette anomalie dans le cas où le dispositif conduit à une valeur nulle dans une cellule corrompue peut par exemple être réalisée par une simple logique de type OU exclusif. Dans le cas d'une correction, un simple OU peut être mis en oeuvre. Le procédé de correction mis en oeuvre lors d'une telle situation sera détaillé par la suite. Les figures 11 et 12 illustrent un procédé d'écriture dans une mémoire telle que décrite précédemment, selon un mode de réalisation dans lequel les commandes sont illustrées dans le cadre du protocole SPI à titre d'exemple non limitatif, et sont ainsi dénommées par leur terme anglo-saxon normalisé (select, deselect, write, enable latch,...). Naturellement, ce procédé est indépendant du protocole choisi et peut être implémenté avec tout autre protocole. Ce procédé comprend d'abord une étape El de lancement d'un mode d'écriture sécurisé, qui est détaillée en figure 12. En effet, cette étape El comprend une sous-étape El 1 de déclaration que toutes les futures écritures doivent être sécurisées, jusqu'à la fin explicite de ce mode d'écriture sécurisé, par un opcode particulier. Ce paquet de données peut être de volume correspondant à un octet ou une page, voire toute autre dimension prédéfinie. De plus, un flag particulier Fl est utilisé, mis par convention à la valeur 1 (sous-étape E12), pour signifier que la banque 0 de la mémoire est concernée par la prochaine écriture.30 Le procédé d'écriture comprend ensuite une étape E2 d'écriture en tant que telle. Cette étape d'écriture peut consister en l'écriture d'un octet ou une page entière. La première sous-étape E21 positionne un verrou WEL (acronyme de la dénomination anglaise « Write Enable Latch ») à la valeur 1, qui autorise l'écriture dans la mémoire selon la norme des mémoires EEPROM fonctionnant sur bus SPI. Ensuite, une seconde sous-étape E22 lit successivement les bits jumeaux des banques 0 et 1 à l'adresse choisie pour l'écriture. En cas d'égalité entre ces données, ce qui est la situation normale en l'absence de corruption de données, obtenue dans une sous- étape de comparaison E23, le procédé est poursuivi avec une sous-étape d'activation des verrous E24 de la banque 0 de la colonne concernée par l'écriture, en fonction des futures données à écrire dans les bits concernés. Pour traiter tour à tour ces différents bits et leurs verrous, le procédé comprend une sous-étape d'incrémentation E25 d'un pointeur de colonne et les sous-étapes E22 à E25 sont répétées jusqu'au traitement de tout le paquet de données concerné par l'écriture. En cas de détection d'une corruption de données à la sous-étape E23, une sous-étape de réparation E26 est engagée, qui consiste à activer les verrous des lignes de bit du bit jumeau de la banque 1 pour pouvoir écrire la donnée corrigée dans la banque 1. Ce procédé permet ainsi de corriger bit par bit une éventuelle erreur de stockage pour remédier à une corruption de données, avant une nouvelle écriture de données. Ensuite, lorsque tous les verrous de la mémoire concernés par l'écriture ont été activés par les sous-étapes précédentes, l'écriture en tant que telle des bits de la mémoire est engagée. Deux cas sont possibles, selon un test effectué dans la sous-étape de test de réparation E27. Dans le premier cas pour lequel aucune corruption de données n'a été détectée, la banque 0 seule est écrite dans la sous-étape d'écriture E28. Dans le second cas pour lequel une corruption de données a été détectée, ce qui peut être réalisé à l'aide d'un paramètre binaire Repair qui prend la valeur de 1 en cas de réparation nécessaire, 0 sinon, la banque 1 est d'abord corrigée dans une sous-étape d'écriture de correction E29, pour obtenir sa correction, avant l'écriture de la banque O. Dans l'exemple de réalisation choisi, l'état défectueux est assimilé à un état effacé et le cycle de réparation comprend un cycle d'écriture uniquement, et non un cycle de programmation (effacement puis écriture) complet, ce qui permet de gagner du temps. En fin de cette étape d'écriture, il est ainsi garanti que la banque 1 contient toutes les données qui étaient mémorisées auparavant, sans corruption de données. La banque 0 contient toutes les nouvelles données. En fin de cette étape d'écriture E2, les variables Repair et WEL sont remises à zéro. Le procédé d'écriture comprend alors une étape E3 de fermeture du mode sécurisé, mis en oeuvre par le circuit de contrôle, dans lequel une première sous-étape E31 transmet l'opcode de fin d'écriture sécurisée et une seconde sous-étape E32 de changement d'un second flag F2 de la valeur 0 à 1, pour signifier que l'écriture de la banque 1 de la mémoire va maintenant être considérée. Ensuite, une étape d'alignement E4 des banques 0, 1 est mise en oeuvre, dont l'objectif est d'écrire aussi les nouvelles données dans la banque 1 de la mémoire, pour obtenir finalement une image parfaite de la banque 0, et donc un dédoublement des données mémorisées dans la mémoire pour pouvoir éviter une éventuelle corruption de données. En remarque, au début de cette étape d'alignement, les deux flags F1 et F2 sont à la valeur de 1. Ainsi, une sous-étape E41 lit successivement les données des banques 0 et 1 d'un bit de la colonne pointée, correspondant à l'adresse choisie pour l'écriture. En cas d'égalité entre ces données, obtenue dans une sous-étape de comparaison E42, le procédé est poursuivi par une sous-étape E43 d'incrémentation du pointeur de colonne. En cas de non égalité lors de la sous-étape de comparaison E42, une sous-étape E44 positionne le verrou de la banque 1 qui correspond au bit jumeau de la banque 0, pour une future écriture de la donnée de la banque O. Ces étapes sont répétées pour tous les bits de la mémoire concernés par l'écriture. Une sous-étape E45 détecte la fin des bits concernés par l'écriture, par exemple la fin de la page comme illustré, ou la fin d'un octet, puis lance la sous-étape d'écriture E46 dans la banque 1. En fin de cette écriture et de l'alignement des deux banques 0, 1, les deux flags F1 et F2 sont remis à zéro et la banque 1 comprend donc les mêmes données que la banque 0. La figure 13 représente un procédé de lecture d'une mémoire selon un mode de réalisation. Ce procédé comprend une étape E5 de transmission d'un opcode de lecture. Un test est alors effectué pour déterminer si la lecture engagée est mise en oeuvre avec une procédure de correction d'erreur, dans une étape de test de lecture sécurisée E6. Si la réponse est négative, une étape de vérification de la valeur des flags F1, F2 permet de déterminer la banque à lire parmi les deux banques 0, 1 disponibles. Ces flags indiquent en effet l'état des banques et si leurs données correspondantes sont exploitables ou non. Ainsi, le test de ces flags E7 permet de choisir dans l'étape E9 quelle banque lire parmi les deux banques 0, 1. Si la réponse au test de lecture sécurisée E6 est positive, et si le test des flags de l'étape E7 montre que les deux flags F1, F2 sont à 0, une étape E8 de lecture avec correction d'erreurs est mise en oeuvre, pour remédier à toute corruption de données qui aurait pu survenir lors de la rétention des données sur les banques. Cette lecture avec correction d'erreurs repose sur une combinaison des contenus des deux banques de la mémoire, par une comparaison des bits jumelés de chaque banque, qui se fait par exemple par une étape consistant à utiliser un opérateur logique OU bit à bit entre les données jumelées de chaque banque. Enfin, l'étape E10 de lecture des données à l'adresse choisie est finalement mise en oeuvre, sur la banque choisie pour la fiabilité de ses données.30 La figure 14 représente finalement un organigramme des principes mis en oeuvre par le procédé de gestion d'une mémoire selon le mode de réalisation, qui comprend une utilisation habituelle de la mémoire dans des étapes « d'opération », puis un mode spécifique sécurisé dans lequel l'écriture de nouvelles données est mise en oeuvre, selon le procédé d'écriture décrit précédemment en référence aux figures 11 et 12. Enfin, la mémoire stocke deux flags F1, F2, qui peuvent être consultés. Ces flags donnent une indication sur l'état de chaque banque de la mémoire : ils permettent de lancer un procédé d'alignement des banques en cas de besoin, selon l'étape E4 décrite précédemment. Ensuite, il est garanti que les données stockées par la mémoire ne sont pas corrompues. Cette mémoire contient finalement soit des nouvelles données écrites, soit, en cas d'échec de cette nouvelle écriture, les données qui étaient présentes avant cette tentative échouée d'écriture. La mémoire ne comprend ainsi pas de données partiellement valides, incluant des données corrompues qui risquent d'induire la défaillance de tout un système. Elle permet par exemple d'éviter de rendre tout un système inutilisable si une mise à jour d'un logiciel est simplement interrompue. Le procédé de gestion de la mémoire électronique décrit précédemment a été mis en oeuvre à l'aide d'une mémoire dont l'architecture a été aménagée. Toutefois, cette architecture a été décrite à titre d'exemple et de manière non limitative. Il est possible d'imaginer d'autres réalisations, comportant par exemple une autre organisation des deux banques au sein de la mémoire, c'est-à-dire une autre organisation des bits jumeaux sur un même circuit intégré, et/ou une autre gestion des bits de la mémoire, permettant l'alignement séquentiel des données sur deux banques distinctes. Les deux octets jumeaux des deux banques peuvent en effet ne pas être juxtaposés et/ou ne pas être symétriques. Leurs bits de chaque octet jumeau peuvent aussi être répartis différemment, de manière non ordonnée et/ou non symétrique. Enfin, cette solution a été décrite pour une mémoire non volatile de type EEPROM mais elle pourrait aussi être implémentée dans un autre type de mémoire électronique. Une telle mémoire sécurisée peut être exploitée avantageusement dans de nombreux systèmes, comme dans un ordinateur, une carte électronique fille, un appareil photo numérique, un objectif, un accessoire multimédia, un composant d'automobile. REVENDICATIONS: 1. Procédé de gestion d'une mémoire non volatile, caractérisé en ce qu'il comprend un procédé d'écriture sécurisé comprenant une première phase d'écriture de données dans une première banque d'un plan mémoire de la mémoire non volatile, puis une seconde phase d'écriture des mêmes données dans une seconde banque du même plan mémoire de la mémoire non volatile en cas de succès de la première phase d'écriture. 2. Procédé de gestion d'une mémoire non volatile selon la revendication précédente, caractérisé en ce qu'il comprend une étape préalable de comparaison d'au moins deux bits jumeaux des deux banques du plan mémoire et de correction d'un bit en cas de donnée corrompue. 3. Procédé de gestion d'une mémoire non volatile selon la revendication précédente, caractérisé en ce qu'il comprend une sous-étape (E22) de lecture de bits jumeaux des deux banques du plan mémoire à une adresse choisie pour l'écriture, une sous-étape de comparaison (E23) de ces deux bits jumeaux, une sous-étape d'activation du verrou (E24) de la ligne de bit de la première banque, en fonction des futures données à écrire dans les bits concernés, une sous-étape de réparation (E26) qui comprend l'activation du verrou de la ligne de bit du bit jumeau de la seconde banque pour pouvoir écrire la donnée exacte dans cette seconde banque en cas de non égalité entre les données suite à la sous-étape de comparaison (E23), puis une sous-étape d'incrémentation (E25) d'un pointeur de colonne et la répétition des sous-étapes (E22 à E25) précédentes jusqu'au traitement de tout le paquet de données concerné par l'écriture.30 4. Procédé de gestion d'une mémoire non volatile selon la revendication précédente, caractérisé en ce qu'il comprend une phase d'écriture en tant que telle des bits de la mémoire, qui comprend un test préalable dans une sous-étape de test de réparation (E27), puis une sous- étape d'écriture (E28) de la première banque seule si aucune réparation n'est nécessaire, ou une sous-étape d'écriture préalable de correction (E29) de la seconde banque avant l'écriture de la première banque si une réparation est nécessaire. 5. Procédé de gestion d'une mémoire non volatile selon l'une des revendications précédentes, caractérisé en ce qu'il comprend une étape d'alignement (E4) des deux banques du plan mémoire, qui comprend une sous-étape (E41) de lecture des données de bits jumeaux des deux banques dans la colonne pointée, une sous-étape de comparaison (E42) des données lues, une sous-étape d'incrémentation (E43) du pointeur de colonne en cas d'égalité entre ces données, une sous-étape (E44) d'activation du verrou de ligne de bit pour le bit jumeau de la seconde banque en cas de non égalité entre ces données afin de pouvoir recopier la donnée du bit de la première banque dans la seconde banque, une répétition de ces étapes tant que la fin des bits concernés par l'alignement n'est pas atteinte (E45), puis le lancement d'une sous-étape d'écriture (E46) dans la seconde banque si une correction s'est révélée nécessaire. 6. Procédé de gestion d'une mémoire non volatile selon l'une des revendications précédentes, caractérisé en ce qu'il comprend une étape de lecture qui comprend une étape de vérification de l'état des deux banques (E7) du plan mémoire concernées par la lecture, pour déterminer quelle banque lire (E9). 7. Procédé de gestion d'une mémoire non volatile selon la revendication précédente, caractérisé en ce qu'il comprend une étape de lectureavec correction d'erreurs (E8) pour remédier à une corruption de données qui aurait pu survenir lors de la rétention des données sur les banques de la mémoire. 8. Procédé de gestion d'une mémoire non volatile selon l'une des revendications précédentes, caractérisé en ce qu'il comprend une étape initiale de lancement d'un mode d'écriture sécurisé (El ) qui comprend une sous-étape (El 1) de déclaration d'écriture de manière sécurisée dans la mémoire par un opcode particulier ou en ce qu'il comprend une étape initiale de transmission d'un opcode de lecture (E5) avant un procédé de lecture de la mémoire. 9. Procédé de gestion d'une mémoire non volatile selon l'une des revendications précédentes, caractérisé en ce qu'il comprend la mémorisation de deux flags (F1, F2) représentant l'état de chaque banque du plan mémoire, prenant notamment une première valeur si une phase d'écriture est terminée et une seconde valeur si une phase d'écriture est en cours. 10. Plan mémoire pour mémoire non volatile programmable électriquement, comprenant des cellules mémoires (CO réparties en colonnes et rangées, caractérisé en ce qu'il comprend un dispositif apte à la mise en oeuvre du procédé de gestion selon l'une des revendications précédentes. 11. Plan mémoire pour mémoire non volatile programmable électriquement selon la revendication précédente, caractérisé en ce qu'il comprend deux banques pour stocker une même donnée en double, chaque bit de la seconde banque étant jumelé à un bit de la première banque, et en ce qu'il comprend deux verrous distincts pour l'activation des lignes de bit distinctes reliées aux deux bits jumeaux de chaque banque. 12. Plan mémoire pour mémoire non volatile programmable électriquement selon la revendication précédente, caractérisé en ce qu'il comprend à l'intersection d'une rangée et d'une colonne un premier octet appartenant à la première banque et relié à des premières lignes de bit s'étendant sur toute la colonne, et un second octet appartenant à la seconde banque et relié à des secondes lignes de bit distinctes s'étendant sur toute la colonne. 13. Plan mémoire pour mémoire non volatile programmable électriquement selon la revendication précédente, caractérisé en ce qu'il comprend de plus à l'intersection d'une rangée et d'une colonne un transistor de contrôle de grille (CGTo ; CGT,) pour chaque octet et une même ligne de source pour les deux octets. 14. Plan mémoire pour mémoire non volatile programmable électriquement selon la revendication 12 ou 13, caractérisé en ce qu'il comprend à l'intersection d'une rangée et d'une colonne un premier octet dont les premiers bits sont agencés de manière juxtaposée entre eux, puis des seconds bits d'un second octet agencés de manière juxtaposée entre eux, les deux octets étant reliés à une même ligne de mot s'étendant sur toute une rangée du plan mémoire. 15. Plan mémoire pour mémoire non volatile programmable électriquement selon l'une des revendications 12 à 14, caractérisé en ce que chaque colonne comprend des décodeurs de colonne (10), des blocs verrou de commande des lignes de bit (11) qui comprennent chacun deux verrous d'activation de deux lignes de bit pour respectivement un bit de la première et de la seconde banque, et un bloc verrou de commande des lignes de contrôle de grille (12) qui comprend deux verrous d'activation de respectivement untransistor d'accès des cellules mémoires de la première et de la seconde banque. 16. Plan mémoire pour mémoire non volatile programmable électriquement selon la revendication précédente, caractérisé en ce que chaque décodeur de colonne (10) transmet aux blocs verrou de commande des lignes de bit (11) trois valeurs (COL, COLO et COU ), pour indiquer la sélection de ladite colonne et de la banque concernées pour une opération de programmation ou de lecture et transmet au bloc verrou de commande des lignes de contrôle de grille (12) une valeur (COL) pour indiquer la sélection de ladite colonne. 17.Mémoire non volatile programmable électriquement, caractérisée en ce qu'elle comprend au moins un plan mémoire pour mémoire selon l'une des revendications 10 à 16. 18.Mémoire non volatile programmable électriquement selon la revendication précédente, caractérisée en ce qu'elle comprend un générateur haute tension (19) qui génère des valeurs de tension distinctes (VPP, VPPEO, VPPE1, VPPWO, VPPW1), pour la commande des deux banques du plan mémoire. 19.Mémoire non volatile programmable électriquement selon la revendication 17 ou 18, caractérisée en ce qu'elle comprend un bloc de correction d'erreur (24) qui permet de détecter une différence entre les données de deux bits jumeaux de la mémoire, de type réalisé par une simple logique OU exclusif, et/ou de réaliser une écriture sécurisée des mêmes données sur les deux banques de la mémoire. 20. Mémoire selon la revendication précédente, caractérisée en ce qu'elle est de type EEPROM. 21.Dispositif électronique ou système, caractérisé en ce qu'il comprend au moins une mémoire non volatile programmable électriquement selon l'une des revendications 17 à 20.5