Brevet FR2837974A1 — publié le 20031003

MEMOIRE PROGRAMMABLE ELECTRIQUEMENT COMPRENANT DES MOYENS D'OPTIMISATION DU TEMPS DE PROGRAMMATION D'UN ENSEMBLE DE MOTS La présente invention concerne la programmation de cellules mémoire programmables électriquement, notamment la programmation dans les mémoires FLASH. La présente invention concerne plus particulièrement un procédé d'enregistrement d'une pluralité de mots binaires dans une rangée de cellules mémoire programmables électriquement, comprenant une étape d'effacement de la rangée de cellules mémoire de la rangée suivie de plusieurs cycles de programmation de groupes de cellules mémoire. La figure 1 est une vue partielle d'un plan mémoire MA de mémoire FLASH. Le plan mémoire MA est composé de cellules mémoire CFi,j connectées à des lignes de mot WLi et à des lignes de bit BLj. Les cellules mémoire comprennent chacune un transistor à grille flottante FGT ayant sa grille G connectée à une ligne de mot WLi, son drain D connecté à une ligne de bit BLj et sa source S connectée à une ligne de source SL. L'arrangement des cellules d'un même mot binaire peut être progressif ou entrelacé. Un mot Wi,k rattaché à une ligne de rang i et à une colonne de rang k peut ainsi comprendre huit cellules agencées côte à côte comme représenté sur la figure ou comprendre, dans le cas d'un entrelacement, des cellules non adjacentes. Dans ce cas, les cellules physiquement adjacentes sont généralement les cellules de même rang des mots d'une même ligne de mot. Dans une telle mémoire FLASH, une opération d'effacement d'une cellule consiste dans l'extraction par effet tunnel de charges électriques piégées dans la grille flottante, tandis qu'une opération de programmation consiste dans l'injection de charges dans la grille flottante par effet dit "d'injection d'électrons chauds" ("Hot electron injection"). Un transistor FGT effacé présente une tension de seuil positive VT1 de faible valeur, et un transistor programmé présente une tension de seuil VT2 supérieure à VT1. Lorsqu'une tension de lecture Vread comprise entre VT1 et VT2 est appliquée sur sa grille, un transistor effacé est passant, ce qui correspond par convention à un "0" logique, et un transistor programmé reste bloqué, ce qui correspond par convention à un "1" logique (une convention inverse pouvant être retenue). En raison de leur simplicité, les mémoires FLASH présentent l'avantage d'une grande compacité en termes de surface de silicium occupée et présentent ainsi, à surface de silicium constante, une capacité de stockage supérieure à celle des autres mémoires programmables électriquement, notamment les mémoires EEPROM, pour un prix de revient inférieur. Les mémoires FLASH offrent toutefois des possibilités de programmation réduites en ce qui concerne l'enregistrement simultané de plusieurs mots. En effet, l'opération de programmation d'une cellule FLASH, par injection d'électrons chauds, s'effectue avec un courant non négligeable en appliquant au transistor FGT de la cellule une tension de drain de l'ordre de 6 V et une tension de grille de l'ordre de 12 V, le transistor FGT étant dans l'état passant et fortement polarisé pendant l'opération. Ainsi, s'il est courant de prévoir des mémoires FLASH dans lesquelles toutes les cellules d'une même ligne de mot sont effacées simultanément, la programmation simultanée d'un grand nombre de cellules s'avère par contre impossible en raison du courant important collecté dans les lignes de source SL, qui peut détruire les pistes métalliques reliant les transistors FGT et/ou les connexions entre pistes de niveaux différents. Ainsi, en pratique, le nombre de cellules pouvant être simultanément programmées est limité à un nombre déterminé N de cellules. Cette limitation a une incidence directe sur l'architecture des mémoires FLASH, dont un exemple est représenté en figure 2. La mémoire MEM1 représentée comprend un plan mémoire MA, un décodeur de ligne WLD connecté aux lignes de mot WLi, un décodeur de colonne CLD connecté aux lignes de bit BLj, un circuit de lecture SA et un registre de programmation PGR1 de N bits. Le circuit de lecture SA et le registre PGR1 sont connectés aux lignes de bit par l'intermédiaire du décodeur de colonne CLD, qui sélectionne des lignes de bits à lire ou à programmer. Les bits d'un mot à programmer sont reçus en parallèle par le registre de programmation PGRC. Celui-ci comprend classiquement une série de bascules à verrouillage haute tension (non représentées) recevant chacune un bit du mot à programmer et délivrant une haute tension de programmation Vpp lorsque le bit reçu est égal à "1" (ou "0" selon la convention choisie) ou une tension nulle lorsque le bit reçu est égal à 0. La tension Vpp, de l' ordre de 5 à 6 V, se propage dans les lignes de bit du plan mémoire MA qui sont sélectionnées par le décodeur CLD, pour polariser les drains des transistors FGT à programmer (par injection d'électrons chauds) tandis qu'une autre tension de plus forte valeur est appliquée sur les grilles des transistors. Le nombre de bits (N) que peut recevoir le registre de programmation PGR1 correspond généralement au nombre maximal de cellules (N) pouvant être simultanément programmées, dans l'hypothèse ou ces N bits seraient tous à 1. Ainsi, le nombre de cellules pouvant être simultanément programmées est limité à un nombre déterminé N de cellules de sorte qu'une mémoire FLASH est toujours programmable par mots de N bits, N étant souvent égal à 8 (programmation par octets). A noter que certaines mémoires FLASH comprennent un registre tampon de grande taille, ou registre de page, pour simuler une programmation par page. Toutefois, après chargement du registre de page, la programmation effective de la page s'effectue mot à mot dans le plan mémoire. Bien que cet inconvénient soit partiellement compensé par un temps de programmation très court, de l'ordre de quelques microsecondes contre quelques millisecondes pour une mémoire EEPROM, il est souhaité de diminuer le temps de programmation d'un ensemble de mots binaires afin de réaliser des mémoires FLASH encore plus rapides à programmer, notamment des mémoires FLASH à grande capacité de stockage. Ainsi, la présente invention vise un procédé permettant de diminuer le temps d'enregistrement d'une pluralité de mots binaires dans une mémoire où le nombre de cellules mémoire pouvant être simultanément programmées ne peut être supérieur à un nombre N déterminé. Cet objectif est atteint par la prévision d'un procédé d'enregistrement d'une pluralité de mots binaires dans une rangée de cellules mémoire programmables électriquement, comprenant une étape d'effacement de la rangée de cellules mémoire suivie de plusieurs cycles de programmation de groupes de cellules mémoire, chaque cycle de programmation d'un groupe de cellules mémoire comprenant l'application d'une tension de programmation aux cellules mémoire devant recevoir un bit égal à une première valeur logique, les cellules devant recevoir un bit égal à une seconde valeur logique inverse de la première étant laissées dans l'état effacé, la tension de programmation ne pouvant être appliquée à plus de N cellules à la fois, comprenant le fait d'enregistrer au cours d'au moins un cycle de programmation des bits appartenant à des mots différents, choisis de manière que le nombre de cellules mémoire recevant la tension de programmation pendant le cycle de programmation soit maximal tout en étant inférieur ou égal à N. Selon un mode de réalisation, les groupes de cellules mémoire auxquels les cycles de programmation sont appliqués comprennent un nombre variable de cellules mémoire qui est déterminé de manière que le nombre de cellules mémoire recevant la tension de programmation soit maximal dans chaque groupe tout en étant inférieur ou égal à N. Selon un mode de réalisation, chaque cycle de programmation comprend l'enregistrement d'un nombre entier de mots binaires qui est choisi de manière que le nombre total de bits égaux à la deuxième valeur logique présent dans les mots binaires enregistrés soit maximal tout en étant inférieur ou égal à N. Selon un mode de réalisation, la pluralité de mots binaires est enregistrée en une succession de cycles de programmation comprenant chacun l'enregistrement d'une chaîne de bits comprenant N bits égaux à deuxième valeur logique. Selon un mode de réalisation, la pluralité de mots binaires est enregistrée en une succession de cycles de programmation de N cellules mémoire. Selon un mode de réalisation, le nombre de cellules mémoire à sélectionner dans chaque groupe est déterminé à chaque cycle de programmation par un masque de programmation qui est combiné bit à bit avec les bits des mots à enregistrer, le masque de programmation comprenant des bits présentant une valeur logique autorisant la programmation de cellules mémoire et des bits présentant une valeur logique interdisant la programmation des cellules mémoire correspondantes. Selon un mode de réalisation, la valeur du masque de programmation est rafraîchie à chaque cycle de programmation en portant l'ensemble des bits du masque de programmation à la valeur logique interdisant la programmation, puis en portant à la valeur logique autorisant la programmation un bit du masque de rang correspondant à un premier bit à enregistrer, et ainsi de suite pour chaque bit successif du masque de programmation jusqu'à ce que le nombre de bits à enregistrer égaux à la première valeur logique soit égal à N. Selon un mode de réalisation, chaque cycle de programmation comprend une étape de comptage du nombre de bits à enregistrer et une étape de comptage du nombre de bits présentant la première valeur logique dans les bits à enregistrer, le nombre de bits à enregistrer étant atteint lorsque N bits présentant la première valeur logique ont été comptés. La présente invention concerne également une mémoire programmable électriquement comprenant un plan mémoire comportant des cellules mémoire connectées à des lignes de mot et à des lignes de bit, et des moyens de programmation pour enregistrer une pluralité de mots binaires dans une rangée de cellules mémoire connectées à une même ligne de mot, en effaçant les cellules mémoire de la rangée puis en appliquant plusieurs cycles de programmation à des groupes de cellules mémoire de la rangée, chaque cycle de programmation d'un groupe de cellules mémoire comprenant l'application d'une tension de programmation aux cellules mémoire devant recevoir un bit égal à une première valeur logique, les cellules devant recevoir un bit égal à une seconde valeur logique inverse de la première étant laissées dans l'état effacé, la tension de programmation ne pouvant être appliquée à plus de N cellules à la fois, dans laquelle les moyens de programmation sont agencés pour enregistrer au cours d'au moins un cycle de programmation des bits appartenant à des mots différents, choisis de manière que le nombre de cellules mémoire recevant la tension de programmation pendant le cycle de programmation soit maximal tout en étant inférieur ou égal à N. Selon un mode de réalisation, les moyens de programmation sont agencés pour sélectionner durant les cycles de programmation des groupes de cellules mémoire comprenant un nombre variable de cellules mémoire qui est déterminé de manière que le nombre de cellules mémoire recevant la tension de programmation soit maximal dans chaque groupe tout en étant inférieur ou égal à N. Selon un mode de réalisation, les moyens de programmation sont agencés pour enregistrer à chaque cycle de programmation un nombre entier de mots binaires, le nombre entier étant variable et choisi de manière que le nombre total de bits égaux à la deuxième valeur logique dans les mots binaires soit maximal tout en étant inférieur ou égal à N. Selon un mode de réalisation, les moyens de programmation sont agencés pour enregistrer à chaque cycle de programmation une chaîne de bits comprenant N bits égaux à la deuxième valeur logique. Selon un mode de réalisation, les moyens de programmation sont agencés pour enregistrer la pluralité de mots binaires en une succession de cycles de programmation de N cellules mémoires. Selon un mode de réalisation, la mémoire comprend des moyens pour générer, pour chaque cycle de programmation, un masque de programmation déterminé qui est combiné bit à bit avec les bits des mots à enregistrer et comprend des bits présentant une valeur logique autorisant la programmation de cellules mémoire et des bits présentant une valeur logique interdisant la programmation de cellules mémoire. Selon un mode de réalisation, la mémoire comprend des moyens pour, à chaque cycle de programmation, porter l'ensemble des bits du masque de programmation à la valeur logique interdisant la programmation, puis porter à la valeur logique autorisant la programmation un bit du masque dont le rang correspondant au rang d'un premier bit à enregistrer, et ainsi de suite pour chaque bit successif du masque de programmation jusqu'à ce que le nombre de bits à enregistrer ayant la première valeur logique soit égal à N. Selon un mode de réalisation, la mémoire comprend des premiers moyens de comptage pour compter le nombre de bits à enregistrer au cours d'un cycle de programmation, et des seconds moyens de comptage pour compter le nombre de bits présentant la première valeur logique dans les bits à enregistrer, le nombre de bits à enregistrer étant atteint par les premiers moyens de comptage lorsque les seconds moyens de comptage ont compté N bits présentant la première valeur logique. Selon un mode de réalisation, les premiers moyens de comptage comprennent un registre à décalage piloté par un signal d'horloge dans lequel un bit de référence est propagé au rythme de l'horloge. Selon un mode de réalisation, la mémoire comprend des moyens pour délivrer une autorisation de comptage d'un bit présentant la première valeur logique, quand un bit à enregistrer dont le rang est désigné par le rang de la cellule du registre à décalage où se trouve le bit de référence présente la première valeur logique. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés plus en détail dans la description suivante de deux exemples de mémoires programmable électriquement comprenant des moyens de mise en oeuvre du procédé de l'invention, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : - la figure 1 précédemment décrite représente l'agencement de cellules mémoire dans un plan mémoire FLASH, - la figure 2 précédemment décrite représente l'architecture générale d'une mémoire FLASH classique, - la figure 3 représente un premier exemple de réalisation d'une mémoire selon l'invention, - la figure 4 est le schéma d'un élément représenté sous forme de bloc en figure 3, et - la figure 5 représente un second exemple de réalisation d'une mémoire selon l'invention. La figure 3 représente une mémoire MEM2 selon l'invention. La mémoire MEM2 comprend de façon classique un plan mémoire MA de type FLASH, un décodeur de colonne CLD, un décodeur de ligne WLD et un circuit de lecture SA. Le plan mémoire MA présente une architecture classique déjà décrite plus haut, et comprend ainsi des cellules mémoire CLi,j connectées à des lignes de mot WLi et à des lignes de bit, ici X lignes de bit BL0, BL1, ... BLj, ...BLx-1, BLX. Les cellules mémoire connectées à la même ligne de mot WLi forment une page mémoire, par exemple les cellules CFi,l à CF1,x représentées en figure 3. Selon l'invention, la mémoire comprend un registre de programmation PGR2 de grande taille pouvant recevoir une pluralité de mots binaires. La taille du registre PGR2 est ici égale à la taille d' une page mémoire et le registre PGR2 peut recevoir K mots binaires de W bits chacun, avec K*W=X. Le registre PGR2 comprend X sorties O1 à Ox pour délivrer en parallèle une chaîne de bits bl à bx formée par la concaténation des bits des K mots binaires à enregistrer. La mémoire comprend également un registre MREG1 comprenant un masque de programmation de X bits m1 à mx, des portes logiques MG1 à MGX à deux entrées, ici des portes ET, et X commutateurs haute tension SW1 à SWx. Dans ce qui suit, j est un indice allant de 1 à x indiquant le rang de l'un des éléments mentionnés cidessus. Chaque porte logique MGj reçoit sur une entrée un bit bj délivré le registre PGR2 et sur une autre entrée un bit de masque mj de rang correspondant délivré par le registre MREG1. Chaque porte logique MGj a sa sortie reliée à l'entrée d'un commutateur haute tension SWj de même rang dont la sortie est connectée à une ligne de bit BLj de même rang. Pendant des cycles de programmation, chaque commutateur SWj est alimenté par une haute tension de programmation Vpp et délivre la tension Vpp ou une tension nulle sur la ligne de bit BLj à laquelle il est connecté, selon que le bit appliqué en entrée du commutateur est égal à 1 ou à 0. L'entrée de chaque commutateur SWj étant pilotée par la sortie d'une porte logique MGj, une ligne de bit BLj reçoit la tension de programmation Vpp si le bit bj à enregistrer est égal à 1 et si le bit de masque correspondant mj est aussi égal à 1. Comme cela apparaîtra clairement par la suite, le masque de programmation permet de contrôler le nombre de cellules mémoire qui sont simultanément programmées à chaque cycle de programmation. Plus particulièrement, le masque de programmation est utilisé ici pour enregistrer le plus grand nombre de bits à chaque cycle de programmation, sans que le nombre de cellules simultanément programmées ne dépasse un nombre N prédéterminé, imposé par la limitation technologique concernant le courant maximal de programmation que peut supporter le plan mémoire. On peut ainsi enregistrer les K mots binaires en un minimum de cycles de programmation sans toutefois programmer plus de N cellules à la fois. La mémoire MEM2 comprend ici des moyens à logique câblée permettant de générer de façon dynamique ce masque de programmation. Ces moyens comprennent un registre à décalage SREG piloté par un signal d'horloge CK, des portes logiques A1 à A, une porte de type OU à X entrées référencée ORX, un compteur CMP piloté par le signal d'horloge CK, et un séquenceur SEQ à logique câblée délivrant le signal d'horloge CK. Le registre SREG comprend X cellules en série (non représentées) , une entrée série IN, X sorties S1 à Sx en parallèle délivrant les bits contenus dans chacune des cellules, et une entrée de remise à zéro pour recevoir un signal RST2 délivré par le séquenceur SEQ. La structure du registre SREG est classique est n'est pas représentée. Chaque cellule du registre est par exemple une bascule D ayant son entrée reliée à la sortie de la cellule de rang précédent, l'entrée de la première cellule étant reliée à l'entrée IN du registre. Chaque sortie Sj du registre SREG est connectée à une entrée d'une porte logique Aj de même rang, dont l'autre entrée reçoit un bit bj de même rang délivré par le registre PGR2. La sortie de chaque porte Aj est connectée à une entrée de la porte ORX. La sortie de la porte ORX délivre un signal ENABLE appliqué sur une entrée CE ("Clock Enable") du compteur CMP. Le registre MREG1 comprend ici X entrées IN1 à INx reliées aux sorties S1 à Sx du registre SREG, chaque entrée INj de rang j étant reliée à une sortie Si-1 de rang j-1. L'entrée IN1 du registre MREG1 reçoit un bit mO délivré par le séquenceur SEQ, qui est également appliqué sur l'entrée série IN du registre SREG. La structure du registre MREG1 est représentée sur la figure 4. Chaque cellule de rang j du registre comprend une bascule D synchrone et une porte OU à deux entrées. L'entrée d'horloge de la bascule D est pilotée par le signal CK. L'entrée "D" de la bascule D est connectée à la sortie de la porte OU. La première entrée de la porte OU est connectée à une sortie Sj-1 du registre à décalage SREG. Cette sortie Si-1 correspond à la sortie d'une bascule de rang immédiatement inférieur du registre SREG. Enfin, la sortie "Q" de la bascule D est ramenée sur la deuxième entrée de la porte OU et forme également une sortie Oj du registre MREG1. Cette structure de cellule est identique pour toutes les cellules du registre. La porte OU de la première cellule du registre MREG1 reçoit en entrée le bit mO présent sur l'entrée In1, au lieu d'être connectée à une sortie du registre SREG. Le registre MREG1 peut être remis à zéro par application d'un signal RST1 délivré par le séquenceur, appliqué sur des entrées RST de remise à zéro des bascules D. Le registre MREG1 est ainsi une sorte de registre à décalage asservi au registre SREG et synchronisé par le même signal d'horloge CK. L'état de chaque cellule du registre MREG1 dépend de l'état de la cellule de rang précédent du registre SREG. Toutefois chaque cellule du registre MREG1 est agencée pour mémoriser son état précédent, de sorte que la propagation d'un bit à 1 dans le registre SREG se traduit dans le registre MREG1 par l'apparition d'une suite de 1, comme on le verra plus loin. L'enregistrement, dans une ligne de mot WLi, des données chargées dans le registre PGR2, comprend une étape préliminaire d'effacement, dans le plan mémoire MA, de la ligne de mot WLi visée (qui est sélectionnée par application d'une adresse AD au décodeur WLD). L'étape d'effacement a pour effet de mettre à 0 tous les bits de la ligne de mot. Elle est suivie d'une première séquence de génération d'un premier masque de programmation et d'un premier cycle de programmation, d'une seconde séquence de génération d'un second masque de programmation et d'un second cycle de programmation, et ainsi de suite jusqu'à ce que tous les bits des mots présents dans le registre PGR2 soient enregistrés. Un exemple de première séquence de génération du premier masque de programmation est décrit dans les dernières pages de la présente description, auxquelles on se reportera. On suppose dans cet exemple que les quatre premiers mots chargés dans le registre PGR2 présentent les valeurs suivantes : 00010001 10101010 11000011 00111100 La chaîne de bits à enregistrer dans la ligne de mot, présente dans le registre PGR2, est ainsi égale à : 00010001 10101010 11000011 00111100... (etc. ) Commentaires concernant la séquence décrite : les étapes TO, Tl, T2... correspondent à des cycles du signal d'horloge CK. A l'instant TO, les registres MREG1 et SREG sont mis à 0 par le séquenceur et le bit m0=1 est appliqué sur les entrées IN1 et IN des deux registres. Une valeur N représentant le nombre maximal de cellules mémoire pouvant être simultanément programmées, ici 8, est chargée dans le compteur CMP par le séquenceur, au moyen d'un signal LOAD. A partir du premier cycle d'horloge et à chaque cycle d'horloge suivant (Tl, T2, T3...), le bit mO est remis à 0 par le séquenceur mais sa valeur précédente à 1 se propage dans le registre SREG et se propage également dans le registre MREG1. La différence entre le contenu du registre MREG1 et celui du registre SREG est que le registre MREG1 mémorise le passage du bit mO à 1 dans les cellules de rang précédent tandis que le registre SREG ne présente qu'une seule cellule à 1 à chaque étape de la séquence. D'autre part, chaque fois que le bit mO à 1 se retrouve sur l'entrée d'une porte Aj recevant sur son autre entrée un bit bj à 1, le signal ENABLE passe temporairement à 1 et autorise le compteur à décrémenter le nombre N d'une unité. Lorsque N bits à 1 ont été comptés, le compteur CMP est à zéro et délivre au séquenceur un signal STOP. Celui-ci arrête alors le signal d'horloge et lance le premier cycle de programmation. Au terme de cette première séquence, le masque de programmation généré dans le registre MREG1 est égal à : 11111111 11111111 11000000 00000000... Ce masque autorise la sélection de 12 cellules mémoire. La combinaison bit à bit, dans les portes logiques MGj, du masque et de la chaîne de bit présente dans le registre PGR2, donne la chaîne de bits suivante : 11111111 11111111 11000000 00000000... ET 00010001 10101010 11000011 00111100... 00010001 10101010 11000000 00000000... qui est appliquée aux commutateurs haute tension SWj. Ainsi, le premier cycle d'enregistrement comprend l'enregistrement de 12 bits dont huit sont à 1, les bits à 0 ayant été implicitement enregistrés par l'effacement de la ligne de mot. La tension Vpp n'est donc appliquée qu'à N cellules mémoire, ici 8 cellules mémoire. Dans cet exemple, le premier cycle de programmation permet d'enregistrer les deux premiers mots présents dans le registre PGR2 et une partie du troisième mot. En comparaison, un cycle d'enregistrement classique n'aurait porté que sur le premier mot. La deuxième séquence de génération du second masque de programmation pour le deuxième cycle de programmation, et les séquences suivantes, se déroulent de manière identique. Le séquenceur remet à zéro le registre MREG1 mais ne remet pas à 0 le registre SREG. Ainsi, si le bit bO s'est propagé jusqu' à une cellule de rang j au cours du cycle précédent, la première cellule du registre MREG1 qui est mise à 1 est la cellule de rang j+1. Ainsi, le rang j+1 du premier bit à 1 du masque de programmation de chaque nouvelle séquence suit immédiatement le rang j du dernier bit à 1 du masque de programmation de la séquence précédente. Les masques de programmation ne se recouvrent donc pas. Pour détecter la fin du processus de programmation, la sortie Sx du registre SREG est surveillée par le séquenceur. Lorsque cette sortie passe à 1, le séquenceur déclenche le dernier cycle de programmation. Ce dernier cycle peut comprendre la programmation d'un nombre de cellules différent de 8, selon la valeur des derniers bits restant à enregistrer. De façon générale, le procédé de programmation selon l'invention se base sur le fait que, statistiquement, les mots à enregistrer dans une mémoire contiennent une répartition équiprobable de 1 et de 0. En conséquence, le temps de programmation d'un ensemble de mot binaire est statistiquement deux fois plus rapide avec le procédé selon l'invention qu'avec un procédé d'enregistrement classique, tout en garantissant que le nombre de cellules simultanément programmées à chaque cycle n'est pas supérieur au nombre N que l'on s'est fixé. Le procédé selon l'invention est bien entendu susceptible de diverses variantes. La figure 5 représente une mémoire MEM3 selon l'invention dans laquelle le procédé selon l'invention est mis en oeuvre par logiciel, au moyen d'un microprocesseur MP exécutant un algorithme de détermination des masques de programmation. Cet algorithme est ici exécuté avant le commencement des cycles de programmation, et permet au microprocesseur de déterminer à l'avance tous les masques programmation. Le registre SREG, le comparateur CMP et le séquenceur SEQ sont supprimés. Le registre MREG1 est remplacé par un registre MREG2 comprenant, comme le registre MREG1, des sorties O1 à Ox connectées aux portes logiques SW1 à SWx de la manière déjà décrite. Le registre MREG2 est ici un simple registre à entrées/sorties parallèles. Il présente une entrée parallèle de X bits connectée à la sortie d'une pile STK de type FIFO (premier mot entré, premier mot sorti) dans laquelle le microprocesseur empile les masques de programmation relatifs à chacun des cycles de programmation. Pour générer les masques, le microprocesseur analyse le nombre de bits à 1 dans chacun des mots binaires présents dans le registre PGR2. Cette opération est faite par exemple en temps réel, au moment du chargement des mots binaires dans le registre PGR2. Le microprocesseur détermine les masques permettant de programmer les cellules par groupe de N cellules. Ce mode de réalisation n'étant pas contraignant en ce qui concerne l'ordre des cellules à programmer simultanément, le microprocesseur peut décider de programmer au cours d'un même cycle des bits à 1 appartenant à des mots qui ne sont pas adjacents, par exemple des bits à 1 du premier mot présent dans le registre et des bits à 1 du dernier mot présent dans le registre. Par ailleurs, l'optimisation du temps de programmation peut être faite au niveau du bit ("bit level"), comme décrit ci-dessus, ou au niveau du mot ("word level"). Dans le second cas, l'optimisation du temps de programmation est faite sans fractionnement des mots binaires et chaque cycle de programmation correspond à l'enregistrement d'un nombre entier de mots binaires. Le nombre de mots binaires enregistrés simultanément est choisi de manière que le nombre de bits à 1 programmés simultanément soit maximal tout en restant inférieur ou égal à N. Pour fixer les idées, supposons que les mots suivants ont été chargés dans le registre PGR2 : MO = 00001111 Ml = 11110000 M2 = 11000000 M3 = 11000000 M4 = 11000000 M5 = 11100000 M6 = 11000000 etc.. En supposant toujours que N=8, il apparaît que les mots MO et Ml peuvent être enregistrés simultanément au cours d'un premier cycle de programmation car le nombre total de bits à 1 qu'ils comprennent est égal à 8. Les mots M2, M3 et M4 peuvent être enregistrés simultanément au cours d'un second cycle de programmation car le nombre total de bits à 1 qu'ils comprennent est égal à 6 et est inférieur à 8. Dans le cas d'une mise en #uvre par microprocesseur, ce procédé peut être amélioré en recherchant dans le registre des mots non adjacents permettant d'optimiser le second cycle de programmation. Par exemple, les mots M2, M3, M4 et M6 peuvent être enregistrés simultanément au cours du second cycle de programmation car le nombre total de bits à 1 qu'ils comprennent est égal à 8. Il apparaîtra clairement à l'homme de l'art que le procédé selon l'invention est susceptible de diverses autres variantes. Le procédé selon l'invention peut s'appliquer de façon générale à toute mémoire programmable électriquement dans laquelle les courants de programmation ne sont pas négligeables et nécessitent de limiter le nombre de cellules mémoire simultanément programmées. Exemple de séquence de génération du premier masque de programmation : Les quatre premiers mots chargés dans le registre PGR2 présentent les valeurs suivantes : 00010001 10101010 11000011 00111100 La chaîne de bits à enregistrer dans la ligne de mot est ainsi égale à : 00010001 10101010 11000011 00111100... (PGR2) La séquence de génération comprend les étapes TO à T18 suivantes: TO : - chargement de N=8 dans CMP - bit mO à 1 sur les entrées IN et IN1 - remise à zéro de SREG et MREG1 : 00000000 00000000 00000000 00000000... (SREG) 00000000 00000000 00000000 00000000... (MREG1) Tl : 10000000 00000000 00000000 00000000... (SREG) 10000000 00000000 00000000 00000000... (MREG1) => CMP = 8 T2 : 01000000 00000000 00000000 00000000... (SREG) 11000000 00000000 00000000 00000000... (MREG1) => CMP = 8 T3 : 00100000 00000000 00000000 00000000... (SREG) 11100000 00000000 00000000 00000000... (MREG1) => CMP = 8 T4 : 00010000 00000000 00000000 00000000... (SREG) 11110000 00000000 00000000 00000000... (MREG1) => CMP = 7 T5 : 00001000 00000000 00000000 00000000... (SREG) 11111000 00000000 00000000 00000000... (MREG1) # CMP = 7 T6 : 00000100 00000000 00000000 00000000... (SREG) 11111100 00000000 00000000 00000000... (MREG1) => CMP = 7 T7 : 00000010 00000000 00000000 00000000... (SREG) 11111110 00000000 00000000 00000000... (MREG1) => CMP = 7 T8 : 00000001 00000000 00000000 00000000... (SREG) 11111111 00000000 00000000 00000000... (MREG1) # CMP = 6 T9 : 00000000 10000000 00000000 00000000... (SREG) 11111111 10000000 00000000 00000000... (MREG1) # CMP = 5 T10 : 00000000 01000000 00000000 00000000... (SREG) 11111111 11000000 00000000 00000000... (MREG1) => CMP = 5 T11 : 00000000 00100000 00000000 00000000... (SREG) 11111111 11100000 00000000 00000000... (MREG1) => CMP = 4 T12 : 00000000 00010000 00000000 00000000... (SREG) 11111111 11110000 00000000 00000000... (MREG1) => CMP = 8 T13 : 00000000 00001000 00000000 00000000... (SREG) 11111111 11111000 00000000 00000000... (MREG1) => CMP = 3 T14 : 00000000 00000100 00000000 00000000... (SREG) 11111111 11111100 00000000 00000000... (MREG1) => CMP = 3 T15 : 00000000 00000010 00000000 00000000... (SREG) 11111111 11111110 00000000 00000000... (MREG1) => CMP = 2 T16 : 00000000 00000001 00000000 00000000... (SREG) 11111111 11111111 00000000 00000000... (MREG1) => CMP = 2 T17 : 00000000 00000000 10000000 00000000... (SREG) 11111111 11111111 10000000 00000000... (MREG1) => CMP = 1 T18 : 00000000 00000000 01000000 00000000... (SREG) 11111111 11111111 11000000 00000000... (MREG1) => CMP = 0 => STOP = 1 REVENDICATIONS 1. Procédé d'enregistrement d'une pluralité de mots binaires dans une rangée de cellules mémoire (CFi,1-CFi,x) programmables électriquement, comprenant une étape d'effacement de la rangée de cellules mémoire suivie de plusieurs cycles de programmation de groupes de cellules mémoire, chaque cycle de programmation d'un groupe de cellules mémoire comprenant l'application d'une tension de programmation (Vpp) aux cellules mémoire devant recevoir un bit égal à une première valeur logique ("1"), les cellules devant recevoir un bit égal à une seconde valeur logique ("0") inverse de la première étant laissées dans l'état effacé, la tension de programmation ne pouvant être appliquée à plus de N cellules à la fois, caractérisé en ce qu'il comprend le fait d'enregistrer au cours d'au moins un cycle de programmation des bits appartenant à des mots différents, choisis de manière que le nombre de cellules mémoire recevant la tension de programmation pendant le cycle de programmation soit maximal tout en étant inférieur ou égal à N. 2. Procédé selon la revendication 1, dans lequel les groupes de cellules mémoire auxquels les cycles de programmation sont appliqués comprennent un nombre variable de cellules mémoire qui est déterminé de manière que le nombre de cellules mémoire recevant la tension de programmation soit maximal dans chaque groupe tout en étant inférieur ou égal à N. 3. Procédé selon la revendication 1, dans lequel chaque cycle de programmation comprend l'enregistrement d'un nombre entier de mots binaires qui est choisi de manière que le nombre total de bits égaux à la deuxième valeur logique présent dans les mots binaires enregistrés soit maximal tout en étant inférieur ou égal à N. 4. Procédé selon la revendication 1, dans lequel la pluralité de mots binaires est enregistrée en une succession de cycles de programmation comprenant chacun l'enregistrement d'une chaîne de bits comprenant N bits égaux à deuxième valeur logique. 5. Procédé selon l'une des revendications 1 à 4, dans lequel la pluralité de mots binaires est enregistrée en une succession de cycles de programmation de N cellules mémoire. 6. Procédé selon l'une des revendications 1 à 5, dans lequel le nombre de cellules mémoire à sélectionner dans chaque groupe est déterminé à chaque cycle de programmation par un masque de programmation (m1-mx) qui est combiné bit à bit avec les bits (b1-bx) des mots à enregistrer, le masque de programmation comprenant des bits présentant une valeur logique (1) autorisant la programmation de cellules mémoire et des bits présentant une valeur logique (0) interdisant la programmation des cellules mémoire correspondantes. 7. Procédé selon la revendication 6, dans lequel la valeur du masque de programmation est rafraîchie à chaque cycle de programmation en portant l'ensemble des bits du masque de programmation à la valeur logique interdisant la programmation, puis en portant à la valeur logique autorisant la programmation un bit du masque de rang correspondant à un premier bit à enregistrer, et ainsi de suite pour chaque bit successif du masque de programmation jusqu'à ce que le nombre de bits à enregistrer égaux à la première valeur logique soit égal à N. 8. Procédé selon l'une des revendications 1 à 7, dans lequel chaque cycle de programmation comprend une étape de comptage du nombre de bits à enregistrer et une étape de comptage du nombre de bits présentant la première valeur logique dans les bits à enregistrer, le nombre de bits à enregistrer étant atteint lorsque N bits présentant la première valeur logique ont été comptés. 9. Mémoire programmable électriquement (MEM2, MEM3) comprenant un plan mémoire comportant des cellules mémoire (CFi,j) connectées à des lignes de mot (WLi) et à des lignes de bit (BLj) , et des moyens de programmation pour enregistrer une pluralité de mots binaires dans une rangée de cellules mémoire (CFi,1-CFi,x) connectées à une même ligne de mot, en effaçant les cellules mémoire de la rangée puis en appliquant plusieurs cycles de programmation à des groupes de cellules mémoire de la rangée, chaque cycle de programmation d'un groupe de cellules mémoire comprenant l'application d'une tension de programmation (Vpp) aux cellules mémoire devant recevoir un bit égal à une première valeur logique (1), les cellules devant recevoir un bit égal à une seconde valeur logique inverse de la première étant laissées dans l'état effacé, la tension de programmation ne pouvant être appliquée à plus de N cellules à la fois, caractérisée en ce que les moyens de programmation (PGR2, MREG1, MREG2, SREG,ORX, CMP, SEQ, STK, MP, MGj) sont agencés pour enregistrer au cours d'au moins un cycle de programmation des bits appartenant à des mots différents, choisis de manière que le nombre de cellules mémoire recevant la tension de programmation pendant le cycle de programmation soit maximal tout en étant inférieur ou égal à N. 10. Mémoire selon la revendication 9, caractérisée en ce que les moyens de programmation sont agencés pour sélectionner durant les cycles de programmation des groupes de cellules mémoire comprenant un nombre variable de cellules mémoire qui est déterminé de manière que le nombre de cellules mémoire recevant la tension de programmation soit maximal dans chaque groupe tout en étant inférieur ou égal à N. 11. Mémoire selon la revendication 9, dans laquelle les moyens de programmation sont agencés pour enregistrer à chaque cycle de programmation un nombre entier de mots binaires, le nombre entier étant variable et choisi de manière que le nombre total de bits égaux à la deuxième valeur logique dans les mots binaires soit maximal tout en étant inférieur ou égal à N. 12. Mémoire selon la revendication 9, dans laquelle les moyens de programmation sont agencés pour enregistrer à chaque cycle de programmation une chaîne de bits comprenant N bits égaux à la deuxième valeur logique. 13. Mémoire selon la revendication 9, dans lequel les moyens de programmation sont agencés pour enregistrer la pluralité de mots binaires en une succession de cycles de programmation de N cellules mémoires. 14. Mémoire selon l'une des revendications 9 à 13, comprenant des moyens (MREG1, MREG2, SREG, CMP, SEQ, MP) pour générer, pour chaque cycle de programmation, un masque de programmation déterminé qui est combiné bit à bit avec les bits des mots à enregistrer et comprend des bits présentant une valeur logique autorisant la programmation de cellules mémoire et des bits présentant une valeur logique interdisant la programmation de cellules mémoire. 15. Mémoire selon la revendication 14, comprenant des moyens (SEQ, MREG1, SREG, ORX, CMP) pour, à chaque cycle de programmation, porter l'ensemble des bits du masque de programmation à la valeur logique interdisant la programmation, puis porter à la valeur logique autorisant la programmation un bit du masque dont le rang correspondant au rang d'un premier bit à enregistrer, et ainsi de suite pour chaque bit successif du masque de programmation jusqu'à ce que le nombre de bits à enregistrer ayant la première valeur logique soit égal à N. 16. Mémoire selon la revendication 15, comprenant des premiers moyens de comptage (SREG) pour compter le nombre de bits à enregistrer au cours d'un cycle de programmation, et des seconds moyens de comptage (ORX, CMP) pour compter le nombre de bits présentant la première valeur logique dans les bits à enregistrer, le nombre de bits à enregistrer étant atteint par les premiers moyens de comptage lorsque les seconds moyens de comptage ont compté N bits présentant la première valeur logique. 17. Mémoire selon la revendication 16, dans laquelle les premiers moyens de comptage comprennent un registre à décalage (SREG) piloté par un signal d'horloge (CK) dans lequel un bit de référence (bO) est propagé au rythme de l'horloge. 18. Mémoire selon la revendication 17, comprenant des moyens pour délivrer une autorisation de comptage d'un bit présentant la première valeur logique, quand un bit (bj) à enregistrer dont le rang (j) est désigné par le rang de la cellule du registre à décalage où se trouve le bit de référence (mO) présente la première valeur logique.