FR 2896612 A1 20070727 FR 0600554 A 20060120 Dispositif de mémoire non volatile à rafraîchissement périodique et procédé de programmation d'un tel dispositif. L'invention concerne les circuits intégrés, et en particulier les 5 dispositifs de mémoire de type non-volatile, programmables et effaçables électriquement. Plus particulièrement, l'invention concerne un dispositif de mémoire non-volatile et un procédé de programmation d'un tel dispositif. 10 Un dispositif de mémoire non volatile comporte classiquement un ensemble de points mémoire agencés sous la forme d'un réseau de cellules-mémoire servant au stockage d'informations sous la forme d'un ensemble de mots de données. La structure d'un point mémoire de type non-volatile est bien 15 connue de l'homme du métier. On pourra à cet égard se référer au brevet américain n 5, 761 121 qui en donne une description pour une structure PMOS. Plus précisément, une cellule-mémoire non-volatile est basée sur l'utilisation d'un transistor à grille flottante associée à une grille 20 de commande qui permet de contrôler le transfert de porteurs de charge vers la grille flottante pour y être stockés de manière permanente. On a représenté sur la figure 1 la structure d'une cellule-mémoire non volatile conventionnelle à transistor à grille flottante. 25 Comme on le voit sur cette figure, la grille flottante FG d'une cellule C est réalisée en polysilicium au dessus d'une région de canal 1 qui s'étend entre deux régions dopées de source S et de drain D, référencées 2 et 3, implantées dans un substrat S en silicium ici de type P, avec interposition d'une couche d'oxyde de grille 4. 30 La grille de commande CG est quant à elle formée au dessus de la grille flottante FG avec interposition d'un film isolant 5. Des espaceurs 6 et 7 sont prévus de part et d'autre de la grille flottante et de la grille de commande. Comme on le conçoit, la grille de commande est couplée de façon capacitive à la grille flottante. La grille flottante est, quant à elle, isolée, de sorte que des charges qui sont transférées y restent stockées jusqu'à ce qu'une tension élevée soit appliquée sur la source, le drain et le substrat du transistor et qu'une tension beaucoup plus faible soit appliquée sur la grille de commande, ce qui provoque l'apparition d'un fort champ électrique inversé et une évacuation consécutive des électrons stockés dans la grille, en traversant l'oxyde de grille. Pour procéder à la programmation de la cellule-mémoire, on peut, par exemple, effectuer une programmation de type Fowler-Nordheim, c'est-à-dire appliquer un champ électrique important sur la grille de commande pour abaisser les barrières énergétiques et permettre le transit des électrons vers la grille flottante. Grâce à l'application du champ électrique élevé sur la grille flottante, celle-ci est portée à un potentiel élevé. On appliquera alors une tension égale à 0 volt sur une prise de contact d'une zone active du substrat dans laquelle sont stockés des électrons. De ce fait, il se crée un fort champ électrique qui va attirer les électrons de la zone active vers la grille flottante à travers l'oxyde de grille 4. Les dispositifs de mémoire non-volatile sont prévus pour le stockage de données de manière plus ou moins permanente. Il a ainsi été spécifié que les cellules de mémoire non-volatile doivent présenter des capacités de rétention de données telles qu'elles doivent être capables de rester dans un état programmé pendant une durée pouvant aller jusqu'à plusieurs années. Cependant, les capacités de rétention de données des cellules de mémoire sont liées à l'épaisseur de l'oxyde de grille assurant l'isolation de la grille flottante. Ainsi, pour pouvoir rester à l'état programmé pendant la durée requise, les cellules de mémoire doivent posséder une couche d'oxyde de grille d'au moins 85 Angstrôms d'épaisseur. En deçà de cette valeur, les électrons stockés dans la grille flottante sont susceptibles de traverser les barrières polysilicium/oxyde/silicium pour migrer vers le substrat. Un tel phénomène est généralement désigné par les anglo-saxons par le terme de tunneling . Ainsi, si l'épaisseur de l'oxyde de grille n'est pas suffisante, il existe une probabilité importante que des phénomènes de tunneling direct apparaissent, ce qui s'accompagne d'une perte de charges consécutive au sein de la grille flottante. Cette perte de charges est alors susceptible d'entraîner une altération d'une valeur binaire stockée. Au vu de ce qui précède, un premier but de l'invention est de 10 fournir un dispositif de mémoire non-volatile dans lequel la capacité de rétention de données est accrue. Un autre but de l'invention est de permettre la réalisation d'un dispositif de mémoire non-volatile avec une épaisseur de couche d'oxyde moindre. 15 Un troisième but de l'invention est de permettre la réalisation d'un dispositif de mémoire non-volatile présentant une rétention de données accrue avec une épaisseur d'oxyde de grille pouvant aller jusqu'à 50 Angstrôms et ce, avec une technologie CMOS standard. L'invention a donc pour objet, selon un premier aspect, un 20 dispositif de mémoire non-volatile, comprenant un réseau de cellules de mémoire non-volatile comportant chacune un transistor à grille flottante, ledit réseau de cellules étant destiné au stockage de données sous la forme d'un ensemble de mots de données. Selon une caractéristique générale de ce dispositif, celui-ci 25 comporte des moyens de détection de pertes de charges pour détecter périodiquement une perte de charges stockées dans les cellules et des moyens pour reprogrammer les cellules pour lesquelles une perte de charges a été détectée de manière à rétablir le niveau de charges stockées. 30 Selon une autre caractéristique de l'invention, les moyens de détection de pertes de charges comportent des moyens de lecture des cellules par comparaison d'un courant de lecture des cellules avec au moins une première valeur de seuil assurant une discrimination entre un niveau logique haut et un niveau logique bas et des moyens pour comparer les mots de données lus par comparaison du courant de lecture avec ladite première valeur de seuil et les mots de données lus par comparaison avec au moins une deuxième valeur de seuil de détection de pertes de charges supérieure à la première valeur de seuil. On rétablit ainsi le niveau de charges stockées dans les grilles flottantes avant que les pertes de charges n'engendrent une altération de l'information stockée. Selon encore une autre caractéristique de l'invention, le dispositif comporte en outre un bloc de correction d'erreurs. Ainsi, même dans le cas où une erreur apparaît dans les bits mémorisés, on peut la corriger avant rafraîchissement de la mémoire. Dans un mode de réalisation, le bloc de correction d'erreurs comprend un bloc de codage pour élaborer une signature d'un ensemble d'au moins un mot à stocker dans les cellules de mémoire, ladite signature étant destinée à être stockée dans le réseau de cellules de mémoire et un bloc de décodage pour décoder ledit ensemble de mots et ladite signature correspondante. Selon encore une autre caractéristique de l'invention, le dispositif de mémoire comporte un bloc de contrôle de données qui communique avec le bloc de correction d'erreurs et avec le réseau de cellules de mémoire pour la mise en forme des données qui leur sont destinées. Ce bloc de contrôle de données comporte des moyens pour élaborer les mots de données mémorisés par recopie, sous forme 25 redondante, des données à mémoriser et des signatures correspondantes en fonction de caractéristiques du réseau de cellules de mémoire. Outre le bloc de correction d'erreurs, le dispositif permet, en élaborant les mots mémorisés de manière redondante, de récupérer une 30 information corrompue, avant rafraîchissement. Ainsi, le dispositif de mémoire selon l'invention comporte des moyens pour corriger des erreurs dans les mots mémorisés extraits du réseau de cellules par mise en oeuvre d'une opération logique entre les données redondantes. L'invention a également pour objet, selon un deuxième aspect, un procédé de programmation d'un dispositif de mémoire non-volatile comprenant un réseau de cellules de mémoire non-volatile comportant chacune un transistor à grille flottante, selon lequel on écrit les données en mémoire sous la forme d'un ensemble de mots de données. Ce procédé comporte les étapes de : - détection périodique de pertes de charges stockées dans les cellules ; et - réécriture des données dans les cellules pour lesquelles une 10 perte de charges a été détectée de manière à rétablir le niveau des charges stockées. Dans un mode de mise en oeuvre de ce procédé, on détecte, pour chaque mot, les pertes de charges en procédant à une première lecture des cellules en comparant le courant de lecture avec une 15 première valeur de seuil permettant une discrimination entre un niveau logique haut et un niveau logique bas, en réalisant une deuxième lecture des cellules en comparant le courant de lecture avec au moins une deuxième valeur de seuil de détection de pertes de charges supérieure à la première valeur de seuil, et en comparant les mots 20 résultant des première et deuxième lectures. Cette valeur de seuil de détection de pertes de charges est une valeur de courant de lecture comprise entre une valeur de courant correspondant à une cellule programmée et une valeur de courant de lecture nominale. 25 Avantageusement, préalablement à la deuxième lecture des cellules, on met en oeuvre un algorithme de correction d'erreurs pour corriger les erreurs contenues dans les mots de données mémorisés, l'étape de comparaison étant effectuée en comparant les mots corrigés et les mots résultant de la deuxième lecture. 30 Selon une autre caractéristique du procédé selon l'invention, l'algorithme de correction d'erreurs est mis en oeuvre en codant les données à mémoriser de manière à élaborer une signature desdites données et en décodant lors de la lecture la signature et les données correspondantes. Selon encore une autre caractéristique du procédé selon l'invention, la programmation des données en mémoire comprend les étapes de : - écriture des données dans les cellules de mémoire ; et - contrôle de la programmation par lecture des données écrites par comparaison du courant de lecture avec la valeur de seuil de détection de pertes de charges. En cas de détection de pertes de charges, on procède alors à une deuxième lecture des données écrites, par comparaison du courant de lecture avec la première valeur de seuil assurant la discrimination entre le niveau logique haut et le niveau logique bas. Par exemple, dans un mode de mise en oeuvre, en cas de défaut de programmation, on réécrit les données dans les cellules en appliquant une tension de compensation à des zones actives du dispositif de mémoire non-volatile vers lesquelles les charges stockées dans les grilles flottantes sont respectivement transférées, lors de l'effacement de la cellule. On peut en outre procéder à une réécriture des données écrites de manière à augmenter le niveau de charges stockées dans les grilles 20 flottantes. D'autres buts, caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée uniquement à titre d'exemple non limitatif, et faite en référence aux dessins annexés sur lesquels : 25 - la figure 1, dont il a déjà été fait mention, illustre schématiquement la structure d'une cellule de mémoire non-volatile ; - les figures 2, 2a et 2b illustrent schématiquement un exemple de réalisation d'une cellule de mémoire d'un dispositif de 30 mémoire non-volatile conforme à l'invention ; - la figure 3 est une courbe illustrant l'évolution du courant de lecture hect d'un réseau de cellules de mémoire non-volatile à l'état programmé, d'une part, et à l'état effacé, d'autre part, montrant l'évolution du courant de lecture en cas de perte de charges ; - la figure 4 est un schéma synoptique illustrant la structure générale d'un dispositif de mémoire non-volatile conforme à l'invention ; - la figure 5 illustre l'architecture d'une partie du bloc de contrôle de données ; - la figure 6 est un schéma synoptique du bloc de contrôle de données illustrant la recopie des données à mémoriser sous forme redondante ; - la figure 7 est un schéma synoptique du bloc de contrôle de données illustrant la correction d'erreurs dans des données redondantes lues ; - la figure 8 est un schéma illustrant le fonctionnement du bloc de contrôle de données et du bloc de correction d'erreurs pour la lecture de données ; - la figure 9 est un organigramme illustrant les principales phases de l'algorithme de rafraîchissement utilisé pour détecter les pertes de charges et reprogrammer les cellules pour 20 lesquelles une perte de charges a été détectée ; et - la figure 10 est un organigramme illustrant les principales phases de l'algorithme de programmation du dispositif de mémoire non volatile conforme à l'invention. On se référera tout d'abord aux figures 2, 2a et 2b qui illustrent 25 un exemple de réalisation d'un dispositif de mémoire non-volatile dans lequel la grille de commande est réalisée par implantation au sein d'un substrat semiconducteur. Sur ces figures, les figures 2a et 2b sont respectivement de sections en coupe selon les lignes A-A et B-B de la figure 2. 30 La référence SB désigne un substrat semi-conducteur, ici un substrat en silicium dopé P, d'un circuit intégré. Ce substrat SB comporte une première région de substrat RG1 formée d'un caisson semi-conducteur dopé N, ainsi qu'une deuxième région de substrat RG2 formée d'un autre caisson semi-conducteur 10 15 dopé N. Les deux caissons RG1 et RG2 sont séparés par une troisième région semi-conductrice RG3 formée d'un caisson dopé P. Le caisson RG3 assure l'isolation électrique mutuelle en profondeur des deux caissons RG1 et RG2. En effet, cette isolation électrique est réalisée par les jonctions PN qui seront polarisées en inverse. En surface, l'isolation électrique mutuelle des deux caissons RG1 et RG2 est assurée par une région d'isolation STI ( Shallow Trench Isolation , en anglais). La région d'isolation STI comporte .un orifice débouchant sur une zone de prise de contact PSB, dopée P+, située en surface du caisson RG3. Cette prise de contact PSB est destinée à permettre d'assurer une polarisation du caisson RG3 et également du substrat sous-jacent SB. Le caisson RG1 forme une première zone active dans laquelle est implanté un transistor à grille flottante, tandis que le caisson RG2 forme une deuxième zone active à partir de laquelle ou vers laquelle les charges sont transférées lors de la programmation et lors de l'effacement de la cellule mémoire, respectivement. Au dessus de ces deux zones actives, est prévue une couche d'un matériau de grille, par exemple du polysilicium, reposant sur la surface des deux zones actives par l'intermédiaire d'un oxyde de grille OX, par exemple du dioxyde de silicium. La couche de matériau de grille, qui forme dans son ensemble 25 une grille flottante, comporte une première partie P1 surplombant la première zone active RG1. La couche de matériau de grille comporte également une partie FG annulaire disposée au dessus de la deuxième zone active RG2. Cette partie annulaire de matériau de grille définit la grille FG d'un 30 transistor PMOS, également appelé transistor de stockage de charges ou de lecture, dont la source S, formée d'une région implantée de type P+, se situe dans le caisson RG2 à l'extérieur de la grille annulaire, et dont le drain :D formé également d'une région implantée de type P+, se situe dans le caisson RG2, à l'intérieur de l'anneau formant la grille FG. La couche de matériau de grille comporte également une partie de liaison PL reliant la partie annulaire FG et la première partie P1. Avantageusement, la géométrie de la première partie P1 a été choisie de sorte que la valeur capacitive de la zone d'oxyde OX située sous cette première partie P 1, également appelée zone tunnel ZTN, soit inférieure ou égale à 30 % de la valeur capacitive totale entre la couche de matériau de grille et l'ensemble des zones actives de la cellule-mémoire, c'est-à-dire la somme des capacités formées entre le matériau de grille et chacune des zones actives de la cellule-mémoire. De ce fait, les régions de source, de drain et de canal, qui sont couplées de façon capacitive à la grille FG, vont former une grille de commande pour cette cellule-mémoire, tandis que la zone tunnel ZTN va former une zone de transfert de charges permettant les évacuations, lors d'un effacement de la cellule-mémoire, des charges stockées dans la grille flottante vers la première zone active RG1. En ce qui concerne la grille de commande, c'est bien entendu la zone de canal qui participe essentiellement au couplage capacitif avec la grille annulaire FG. Ceci étant, l'homme du métier sait que les régions de source et de drain débordent également par diffusion sous la grille annulaire FG. Aussi, ces régions de source et de drain participent-elles également en pratique à ce couplage capacitif. Afin de polariser de façon adéquate la première zone active RG1, celle-ci comporte une zone implantée N+, référencée PC1, et permettant une prise de contact. Par ailleurs, dans le mode de réalisation décrit, il est également prévu une zone surfacique ZS, dopée P+, et s'étendant autour de la zone tunnel ZTN. L'homme du métier aura constaté que l'on a ainsi formé avec la première partie P1 de la couche de matériau de grille, un transistor PMOS court-circuité, c'est-à-dire dont les régions de source et de drain, dopées P+, sont reliées électriquement. Cette zone surfacique ZS est électriquement reliée à la zone de prise de contact PC1, par exemple par une siliciuration surfacique. En ce qui concerne la deuxième zone active RG2, il est également prévu une région implantée N+, référencée BK, permettant une prise de contact et une polarisation de ce caisson RG2, et par conséquent, une polarisation du substrat du transistor. Comme on le sait, la programmation d'une cellule-mémoire s'effectue, par exemple, en appliquant des tensions égales sur la source, le drain et le substrat du transistor et de valeur relativement élevée, par exemple comprise entre 8 et 11 volts, typiquement 11 volts. Parallèlement, alors que le caisson RG3 est toujours polarisé à 0 volt, on applique une tension égale à 0 volt sur la prise de contact PC1 de la première zone active. De ce fait, la grille flottante est portée à un potentiel sensiblement égal à 10 volts, tandis que la première zone active est à 0 volt. Il se crée donc un fort champ électrique qui va attirer les électrons de la première zone active RG1 vers la grille flottante à travers l'oxyde de la zone tunnel ZTN. Ce type de programmation est une programmation de type 20 Fowler-Nordheim, selon laquelle on applique un champ électrique important pour abaisser les barrières énergétiques et permettre le transit des électrons vers la grille flottante. Il existe également une autre possibilité pour programmer électriquement la cellule-mémoire, qui consiste à adopter une 25 programmation dite par électrons chauds . Plus précisément, pour programmer ainsi la cellule-mémoire, on applique par exemple sur la source du transistor une tension égale à 5 volts et sur le drain égale à 0 volt. On polarise par ailleurs le substrat du transistor à 5 volts et 30 l'on applique sur la prise de contact PC1 de la première zone active une tension qui peut varier en pratique entre 0 et 5 volts, par exemple 5 volts. On polarise par ailleurs le substrat (prise de contact PSB) à 0 volt. Le transistor est alors passant, sous réserve d'une tension grille/source suffisante pour initialiser la conduction du transistor, ce qui crée une saturation de ce transistor et provoque un courant de trous provenant de la source. Ces trous entrent en collision avec le réseau cristallin et forment des trous chauds et des électrons chauds. Les électrons chauds sont attirés dans la grille flottante dont le potentiel chute légèrement par rapport à celui appliqué sur la source. On a représenté sur la figure 3 l'évolution du courant de lecture de transistor, d'une part programmé et, d'autre part, effacé, pour l'ensemble des cellules C. Comme on le voit sur cette figure, le courant de lecture Ilect, c'est-à-dire le courant drain/source des cellules de mémoire programmées est distribué autour d'un courant de programmation Iprog, tandis que le courant de lecture Ilec des cellules effacées est distribué autour d'un courant Ieff inférieur au courant de programmation Iprog• Il est ainsi possible de connaître l'état d'une cellule de mémoire en comparant le courant de lecture avec un courant de référence Iref permettant d'effectuer une discrimination entre les cellules programmées et les cellules effacées. Comme indiqué précédemment, les cellules de mémoire doivent présenter des capacités de rétention de données telles qu'elles soient capables de rester à l'état programmé pendant une durée pouvant atteindre 10 ans. Or, comme visible sur la figure 3, des processus de tunneling par lesquels les charges stockées sont susceptibles de migrer à travers la couche d'oxyde sont susceptibles d'apparaître, en particulier lorsque la couche d'oxyde présente une épaisseur de l'ordre de 50 Angstr6ms, ce qui est en particulier le cas lorsqu'on utilise des technologies conventionnelles de fabrication de transistors de largeur de grille de 65 nanomètres et de longueur de grille de 90 nanomètres. Cet effet de tunneling engendre ainsi des pertes de charges dans les grilles flottantes, et une diminution consécutive du courant de lecture des cellules incriminées. Comme visible sur la figure 3, certaines cellules C3, préalablement programmées, peuvent alors présenter un courant de lecture inférieur au courant de référence Ires de sorte que, pour ces cellules C3, le résultat de la lecture est erroné. Pour pallier cet inconvénient, selon un aspect de l'invention, lorsque le dispositif est en fonctionnement, on procède à une lecture périodique des cellules, avant que les éventuelles pertes n'engendrent une chute de courant de lecture en deçà du courant de référence Iref et l'on reprogramme les cellules qui ont subi une perte de charges de manière à augmenter leur courant jusqu'à leur niveau initial, voire, comme cela sera indiqué par la suite, à un niveau supérieur. En outre, selon un deuxième aspect de l'invention, on met en oeuvre un algorithme de correction d'erreurs ainsi qu'un codage des données mémorisées sous forme redondante afin de limiter l'apparition des erreurs en les corrigeant après leur apparition. En d'autres termes, selon l'invention, on vérifie que le courant de lecture de la population de cellules programmées est supérieur au courant Iprog. On vérifie de même que le courant de lecture des cellules effacées est inférieur au courant Ieff, afin de contrôler l'intégrité des données mémorisées. On va maintenant décrire en référence à la figure 4 20 l'architecture d'un dispositif de mémoire non-volatile conforme à l'invention. Le dispositif comprend essentiellement un noyau analogique et un noyau numérique. Le noyau analogique, référencé 8, comprend : une matrice de 25 cellules de mémoire non-volatile 9 associée à des décodeurs d'adressage de lignes et de colonnes, à des amplificateurs de lecture, et à des sources de références de tension ; des pompes de charges 10 aptes à générer une haute tension pour la programmation et l'effacement des cellules de mémoire ; et un contrôleur de mémoire 11 30 dûment programmé pour piloter le noyau analogique 8 et dans lequel sont stockés des algorithmes de programmation et d'effacement des cellules . Le noyau analogique comprenant : un bloc de contrôle de données 12 assurant le contrôle des modes de fonctionnement de la mémoire et incorporant l'algorithme de rafraîchissement de la mémoire pour reprogrammer périodiquement les cellules qui ont subi une perte de charges, ainsi qu'un algorithme de décodage et de réorganisation des bits de données sous forme redondante ; et un bloc de correction d'erreurs ECC 13 qui comporte un bloc de codage 14 et un bloc de décodage de données 15. Comme cela sera rappelé par la suite, le bloc de correction d'erreurs 13 incorpore un registre (non représenté) pour le stockage temporaire des données manipulées par le bloc ECC 13. Par exemple, dans un mode de réalisation particulier nullement limitatif, la matrice de cellules de mémoire non volatile 9 est une matrice de 384 x 18 bits. Selon ce type de réseau de cellules de mémoire, les données sont mémorisées sous la forme d'un ensemble de mots de 18 bits. Aussi, à partir de données externes délivrées par un bus de 8 bits, le bloc de contrôle de données 12 organise ces données de manière à les délivrer au noyau analogique 8 sous la forme de mots successifs de 18 bits. Par ailleurs, le bloc de correction d'erreurs 13 est adapté pour manipuler des données sous la forme d'un bloc de 64 bits. Aussi, en se référant à la figure 5, le bloc de contrôle de données 12 comporte un multiplexeur 16 qui, à partir de mots incidents de 8 bits, délivre à un registre 17 de 64 bits, 8 mots successifs de 8 bits. Ces bits ainsi organisés peuvent être délivrés au bloc de codage 14 sous le contrôle d'un circuit logique 18a. Avantageusement, le bloc de correction d'erreurs 13 incorpore un code de correction d'erreurs de type code de Hamming. Un tel code est bien connu de l'homme du métier. Il ne sera donc pas décrit en détail par la suite. On notera cependant, qu'il consiste essentiellement à élaborer par codage, à partir des 8 mots de 8 bits extraits du registre 17, une signature ou syndrome Synd. qui est destiné, lors de la vérification de l'intégrité des données, à être décodé, avec les données correspondantes extraites du réseau de cellules de mémoire pour assurer une détection d'erreurs et une correction de ces erreurs. En se référant également à la figure 6, à partir des données extraites du registre 17, qui se présentent sous la forme des 8 mots de 8 bits, et des 8 bits de signature correspondant respectivement à la signature des 8 mots, le bloc de contrôle de données 12 procède à un multiplexage des données et à un multiplexage des signatures au moyen de blocs de multiplexage/démultiplexage correspondants 18 et 19 pour récupérer, pour chaque mot, 8 bits de données DO, Dl, ..., D7 et 1 bit de signature S0. Un étage de traitement 20 procède alors à l'élaboration d'un mot de 18 bits en recopiant, de manière redondante, les bits de données DO, Dl, ...D7 et le bit de signature dans un unique mot de 18 bits. Ce mot W ainsi élaboré est alors stocké en mémoire dans la matrice de cellules 9. On notera que l'élaboration du mot W sous la forme d'un bloc de 18 bits est du aux caractéristiques du réseau de cellules de mémoire qui, comme indiqué précédemment est une matrice de 384x18 bits. On adaptera en conséquence le nombre de bits du mot W si l'on utilise une matrice de capacité différente. On notera également que, comme le montre la figure 6, chaque mot W est organisé de sorte que 2 bits de données identiques ne soient pas agencés côte à côte de manière qu'une erreur affectant deux cellules juxtaposées de la matrice 9 n'affectent pas les deux bits de données qui correspondent à la même information. Comme illustré aux figures 7 et 8, à la lecture, le mot W extrait du réseau de cellules de mémoire 9 est présenté en entrée de l'étage de traitement 20 afin, d'une part, de détecter la présence d'une ou de plusieurs erreurs dans le mot W en réalisant une opération logique, par exemple un OU logique entre deux bitsredondants et de réorganiser les données afin de délivrer aux multiplexeur/démultiplexeur 18 et 19 huit mots de 8 bits ainsi que 8 bits de signature correspondants. Ce flux de données de 64 bits est transmis à l'étage de décodage 15 du bloc ECC 13 au niveau duquel les signatures et les données correspondantes sont décodées afin, d'une part, de détecter la présence d'une erreur et, d'autre part, d'en assurer la correction. Le mot corrigé W' est alors délivré à un multiplexeur 21 pour remplacer, dans le flux de 8 mots de 8 bits, le mot altéré par le mot corrigé. Après correction, le flux de données corrigées et transmis au registre 17. Les 8 mots de 8 bits sont alors transmis en parallèle au multiplexeur 16 pour être successivement délivrés en sortie du dispositif de mémoire. On notera cependant que le bloc de décodage d'erreurs 13 est adapté pour corriger une erreur ou pour assurer la détection de deux erreurs. L'étage de décodage délivre alors au multiplexeur 21 un mot 10 corrigé W' et un nombre d'erreurs Error Number . Dans la description qui vient d'être faite, on a détaillé la procédure de programmation du réseau de mémoire et de la récupération des données à partir de ce réseau de cellules. Comme indiqué précédemment, les données mémorisées sont 15 stockées sous forme redondante et sont associées à une signature ce qui permet la récupération d'une information corrompue grâce, d'une part, au stockage des données sous forme redondante et, d'autre part, à la mise en oeuvre d'un algorithme de correction d'erreur. La rétention des données dans le réseau de cellules est en outre 20 améliorée en procédant à un rafraîchissement périodique des données stockées. En se référant aux figures 3 et 9, cette procédure de rafraîchissement est basée sur une lecture sous contrainte accrue des cellules afin de détecter une perte de charges et une comparaison du 25 résultat de la lecture avec une lecture sous conditions standards afin de détecter une corruption dans l'information stockée. En référence à la figure 9, la procédure de rafraîchissement des cellules-mémoire comporte une première phase I de lecture de cellules sous contrainte standard suivie d'une deuxième phase II de 30 comparaison du résultat de cette première lecture avec un résultat correspondant obtenu par lecture des cellules sous contrainte accrue. La première phase I consiste à comparer le courant de lecture de chaque cellule avec le courant de référence Iref (figure 3) qui permet d'assurer une discrimination entre un niveau logique bas et un niveau logique haut. Cette première phase débute par une étape 22 d'initialisation au cours de laquelle un compteur d'adressage Add est initialisé à 5 zéro. Au cours de l'étape 23 suivante, on procède à la lecture d'un premier mot de 8 bits en comparant le courant de lecture avec le courant de référence Iref afin de disposer de la valeur du mot mémorisé. Au cours de cette étape 23, on incrémente le compteur 10 d'adresses Add. Le résultat de mesure R1 est alors stocké dans le registre du bloc de correction d'erreur ECC (étape 24). Les étapes 23 et 24 sont répétées jusqu'à ce que 8 mots consécutifs aient été lus (étape 25). Lors de l'étape 26 suivante, l'étage de décodage 15 du bloc de 15 correction d'erreurs assure un décodage de la signature et des mots lus. Ce faisant on détecte si le nombre d'erreurs est supérieur à la capacité de correction d'erreurs du bloc ECC. Si tel n'est pas le cas, le bloc ECC analyse s'il est possible, en raison notamment du nombre d'erreurs détectées, de corriger l'erreur (étape 27). Si tel est le cas, 20 l'erreur est corrigée et le mot corrigé est stocké dans le registre du bloc ECC (étape 28). Le compteur d'adressage est alors réinitialisé à zéro (étape 29). Si la correction d'erreurs n'est pas possible, la procédure rejoint directement l'étape 29. La deuxième phase II est alors mise en oeuvre. Cette phase 25 débute par une première étape 30 au cours de laquelle les mots sont successivement lus sous contrainte accrue. En d'autres termes, au cours de cette étape 30, les courants de lecture sont comparés à une valeur de courant de seuil de détection de perte de charges ISeuil (figure 3). Lors de l'étape 31 suivante, le résultat R1 de la lecture effectuée 30 lors de la phase I précédente est transformé en un résultat sous 18 bits. Le résultat R1 de la lecture réalisée lors de l'étape 30 est alors comparé au résultat R2 converti (étape 32). On procède alors, au cours de l'étape 33 suivante, à une nouvelle programmation des bits des mots dont le courant se situe entre le courant de référence standard Iref et la valeur de seuil de détection de perte de charges Iseuil et l'on incrémente le compteur d'adresses. Les étapes 30, 31, 32 et 33 sont alors répétées jusqu'à ce que les huit mots aient été analysés (étape 34). On procède alors au rafraîchissement d'un autre bloc de 8 mots de 8 bits et des signatures correspondantes. Il est ainsi possible de compenser les pertes de charges susceptibles d'apparaître dans la grille flottante, en particulier dues à un effet tunneling à travers une couche d'oxyde de grille relativement mince. Par conséquent, grâce à l'invention, il est possible de conserver une durée de rétention de données de l'ordre de plusieurs années, même en utilisant des couches d'oxyde de grille d'épaisseur de l'ordre de 50 Angstrôms. On notera enfin que, selon l'invention, on met avantageusement en oeuvre une procédure de programmation spécifique au cours de laquelle, après écriture d'une donnée en mémoire, on vérifie que la donnée a été correctement écrite. Un exemple de mise en oeuvre d'une telle procédure de programmation va maintenant être décrite en référence à la figure 10. Cette procédure débute par une première étape 35 au cours de laquelle deux compteurs N et Q sont initialisés à zéro. Lors de l'étape 36 suivante, on procède à une programmation des cellules, de manière conventionnelle, soit en utilisant une programmation de type électrons chauds, soit par une programmation de type Fowler-Nordheim. Lors de l'étape 37 suivante, on procède à une lecture des cellules sous contrainte accrue, c'est-à-dire par comparaison du courant de lecture des transistors à grille flottante avec le courant de référence Iseuil (figure 3). On contrôle alors que la programmation a été correctement effectuée en comparant le résultat de la lecture avec le résultat attendu (étape 38). Si la programmation a été correctement effectuée, on procède de préférence à une programmation supplémentaire, de type rapide, qui consiste à réécrire les mêmes données en mémoire, de manière à augmenter encore le niveau de charges stockées dans les grilles flottantes (étape 39). Au contraire, si la programmation n'est pas correcte, on tente 5 une nouvelle programmation. Ainsi., si le compteur N est à zéro, on positionne à 1 ce compteur N et l'on incrémente le compteur Q. On procède alors à une lecture standard, par comparaison du courant de lecture avec le courant de référence Iref (étape 40). On contrôle alors le résultat de 10 cette lecture conventionnelle (étape 41). Si la programmation a été correctement effectuée, la procédure retourne à l'étape 36 précédente. Dans le cas contraire, on procède à une nouvelle programmation des cellules-mémoire de manière à compenser les charges résiduelles présentes dans les grilles flottantes en appliquant 15 une tension de compensation au contact PC1 de la première zone active (figure 2a) de chaque cellule. En d'autres termes, il s'agit, au cours de cette étape, de faciliter la programmation. Ainsi, au cours de cette étape 42, la tension de seuil est décalée en direction de la tension de seuil initiale des transistors. 20 La procédure se poursuit alors par l'étape 36 précédente pour procéder à la programmation proprement dite des cellules. On notera que les étapes 39 à 42 ne sont effectuées qu'à une seule reprise. En effet, si, lors de l'étape 38 précédente, il a été constaté que 25 la programmation est incorrecte et que le compteur N est positionné à 1, signifiant que les étapes 40, 41 et 42 ont déjà été effectuées une fois, lors de l'étape 43 suivante, on incrémente le compteur Q. Lors de l'étape 44 suivante, on compare la valeur de comptage avec une valeur de seuil Qmax, par exemple fixée à 7. 30 Si la valeur de comptage du compteur Q reste inférieure à la valeur de seuil Qmax, la procédure retourne à l'étape 36 précédente afin de tenter une nouvelle programmation. Dans le cas contraire, il est considéré que la programmation s'est soldée par un échec. Selon l'invention qui a été décrite, on met en oeuvre périodiquement un rafraîchissement du dispositif de mémoire non-volatile combiné à une correction d'erreurs et à un contrôle de l'intégrité de données mémorisées basé sur une programmation redondante des données. Ce processus est mis en oeuvre lorsque le dispositif est activé ou, en d'autres termes, lorsque la mémoire est en fonctionnement. Il permet ainsi de s'assurer que le niveau de charges stockées reste suffisant, même lorsque l'épaisseur de l'oxyde de grille est telle que des phénomènes de Tunneling sont susceptibles d'apparaître. On s'assure en particulier qu'avant que la mémoire ne soit éteinte, les cellules programmées ont toutes un niveau de charge minimum et que leur courant de lecture est ainsi supérieur à la valeur de seuil ISeUil. L'augmentation du niveau de charge des cellules programmées permet ainsi une conservation des informations stockées, lorsque la mémoire est éteinte, même en cas de pertes de charges par Tunneling . On augmente par conséquent considérablement la capacité de rétention des cellules de mémoire qui peut ainsi atteindre plusieurs années, sans altération des informations programmées. REVENDICATIONS 1. Dispositif de mémoire non-volatile, comprenant un réseau (9) de cellules de mémoire non-volatiles comportant chacune un transistor à grille flottante, ledit réseau de cellules étant destiné au stockage de données sous la forme d'un ensemble de mots de données, caractérisé en ce qu'il comporte des moyens (12) de détection de pertes de charges pour détecter périodiquement une perte de charges stockées dans les cellules et des moyens pour reprogrammer les cellules pour lesquelles une perte de charges a été détectée de manière à rétablir le niveau de charges stockées. 2. Dispositif selon la revendication 1, caractérisée en ce que les moyens de détection de pertes de charges comportent des moyens (12) de lecture des cellules par comparaison d'un courant de lecture des cellules avec au moins une première valeur de seuil ( Iref) assurant une discrimination entre un niveau logique haut et un niveau logique bas et des moyens (12) pour comparer les mots de données lus par comparaison du courant de lecture avec ladite première valeur de seuil et les mots de données lus par comparaison avec au moins une deuxième valeur de seuil (Iseuil) de détection de pertes de charges supérieure à la première valeur de seuil. 3. Dispositif selon l'une des revendications 1 et 2, caractérisé en ce qu'il comporte en outre un bloc de correction d'erreurs (13). 4. Dispositif selon la revendication 3, caractérisé en ce que le bloc de correction d'erreurs comprend un bloc de codage (14) pour élaborer une signature d'un ensemble de mots à stocker dans les cellules de mémoire, ladite signature étant destinée à être stockée dans le réseau de cellules de mémoire et un bloc de décodage pour décoder (15) ledit ensemble de mots et ladite signature correspondante. 5. Dispositif selon l'une des revendications 3 et 4, caractérisé en ce qu'il comporte un bloc de contrôle de données (12) qui communique avec le bloc de correction d'erreurs (13) et avec le réseau de cellules de mémoire (9) pour la mise en forme des données qui leur sont destinées. 6. Dispositif selon la revendication 5, caractérisé en ce que le bloc de contrôle de données comporte des moyens (18, 19, 20) pour élaborer les mots de données mémorisés par recopie, sous forme redondante, des données à mémoriser et des signatures correspondantes en fonction de caractéristiques du réseau de cellules de mémoire. 7. Dispositif selon la revendication 6, caractérisé en ce qu'il comporte des moyens (20) pour corriger des erreurs dans les mots mémorisés extraits du réseau de cellules par mise en oeuvre d'une 10 opération logique entre les données redondantes. 8. Procédé de programmation d'un dispositif de mémoire non-volatile comprenant un réseau (9) de cellules de mémoire non-volatile comportant chacune un transistor à grille flottante, selon lequel on écrit les données en mémoire sous la forme d'un ensemble de mots de 15 données, caractérisé en ce qu'il comporte les étapes de : - détection périodique des pertes de charges stockées dans les cellules ; et - réécriture des données dans les cellules pour lesquelles une perte de charges a été détectée de manière à rétablir le niveau de 20 charges stockées. 9. Procédé selon la revendication 8, caractérisé en ce que l'on détecte, pour chaque mot, les pertes de charges en procédant à une première lecture des cellules en comparant le courant de lecture avec une première valeur de seuil (Iréf) permettant une discrimination entre 25 un niveau logique haut et un niveau logique bas, en réalisant une deuxième lecture des cellules en comparant le courant de lecture avec au moins une deuxième valeur de seuil (ISeUil) de détection de pertes de charges supérieure à la première valeur de seuil, et en comparant les mots résultant des première et deuxième lectures. 30 10. Procédé selon la revendication 9, caractérisé en ce que la valeur de seuil de détection de pertes de charges est une valeur de courant de lecture comprise entre une valeur (Iprog) de courant correspondant à une cellule programmée et une valeur (Iréf) de courant de lecture nominale. 11. Procédé selon l'une quelconque des revendications 8 à 10, caractérisé en ce que préalablement à la deuxième lecture des cellules, on met en oeuvre un algorithme de correction d'erreurs pour corriger les erreurs contenues dans les mots de données mémorisés, l'étape de comparaison étant effectuée en comparant les mots corrigés et les mots résultant de la deuxième lecture. 12. Procédé selon la revendication 11, caractérisé en ce que l'algorithme de correction d'erreurs est mis en oeuvre en codant les données à mémoriser de manière à élaborer une signature desdites données et en décodant lors de la lecture la signature et les données correspondantes. 13. Procédé selon l'une quelconque des revendications 9 à 12, caractérisé en ce que la programmation des données en mémoire comprend les étapes de : - écriture des données dans les cellules de mémoire ; et - contrôle de la programmation par lecture des données écrites par comparaison du courant de lecture avec la valeur de seuil (ISeU1l) de détection de pertes de charges. 14. Procédé selon la revendication 13, caractérisé en ce qu'en cas de détection de pertes de charges, on procède à une deuxième lecture des données écrites par comparaison du courant de lecture (Ilect) avec la première valeur de seuil (ITef) assurant la discrimination entre le niveau logique haut et le niveau logique bas. 15. Procédé selon la revendication 14, caractérisé en ce qu'en cas de défaut de programmation, on réécrit les données dans les cellules en appliquant une tension de compensation à des zones actives (RG1) du dispositif de mémoire non-volatile vers lesquelles les charges stockées dans les grilles flottantes sont respectivement transférées, lors de l'effacement de la cellule. 16. Procédé selon l'une quelconque des revendications 13 à 15, caractérisé en ce que postérieurement à l'étape d'écriture des données dans les cellules et contrôle de la programmation, on procède à une programmation supplémentaire des données écrites de manière àaugmenter le. niveau de charges stockées dans les grilles flottantes (FG).