Brevet FR2758644A1 — publié le 19980724

Indicateur d'écriture par paqe pour mémoire non volatile. L'invention concerne un indicateur d'écriture par page pour mémoire non volatile. Cette invention concerne toutes les mémoires possédant un mode d'écriture par page, notamment les mémoires à grille flottante E2PROM, EPROM, Flash. L'écriture dans une mémoire à grille flottante est relativement longue dans le temps. Pour remédier à cet inconvénient, les constructeurs ont créé un mode d'écriture séquentiel autrement connu sous le nom d'écriture par page. Le mode d'écriture par page consiste à adresser successivement tous les octets situés sur une même ligne de mots du plan mémoire en les stockant dans des registres volatiles. Puis, lorsque tous les registres volatiles ont reçu leurs octets, on écrit simultanément le contenu de tous les registres sur la ligne de mots. Le temps d'écriture dans la mémoire étant d'environ 2 ms pour une mémoire E2PROM et le temps d'écriture dans un registre étant inférieur à 100 ns, si on dispose de lignes de 64 mots dans le plan mémoire, le temps de programmation de la mémoire est donc divisé par 64, ce qui est considérable. Un perfectionnement de ce système a été apporté afin de pouvoir écrire des lignes de mots incomplètes. En effet, dans certaines applications, l'utilisateur peut se contenter d'écrire des pages incomplètes, par exemple pour sauvegarder des données en cas de défaillance d'un système électronique. Les constructeurs de mémoires ont alors imaginé un système de temporisation pour déclencher l'écriture dans le plan mémoire. Le fonctionnement de ces mémoires était le suivant - à chaque entrée d'un octet dans un registre, on initialise un circuit de temporisation - lorsque le circuit de temporisation a compté une durée prédéfinie, par le constructeur, de l'ordre de 100 Us, alors, on déclenche l'écriture. Un inconvénient majeur vient du circuit de temporisation car le microprocesseur qui écrit dans la mémoire peut être interrompu par une tâche prioritaire dont la durée peut recouvrir la temporisation. Une solution simple a été implémenté et c'est ce qui constitue actuellement l'état de la technique. Actuellement, on utilise un circuit de temporisation, réinitialisé à chaque écriture d'un octet dans la mémoire dont la sortie est accessible au microprocesseur. Ainsi, après chaque interruption de l'écriture, le microprocesseur peut lire un registre d'état où un bit lui indique l'état de la temporisation. Le problème qui en découle est que, bien que la probabilité soit faible, il est possible de tester le bit et que celui-ci indique que la temporisation n'est pas terminée mais qu'il ne reste pas assez de temps pour écrire en mémoire; La solution actuelle est de régler ce problème de manière logicielle. Le microprocesseur teste le bit d'état une première fois, puis écrit dans la mémoire, puis teste à nouveau le bit d'état. Si le deuxième test du bit d'état indique que la temporisation n'est pas terminée, alors il peut continuer la programmation, sinon, il doit attendre la fin de l'écriture en mémoire puis redéclencher une écriture par page. Effectuer deux tests est une opération un peu lourde à gérer. De plus, certains systèmes à temps réels imposent l'utilisation d'un minimum d'instructions. L'invention propose d'apporter une solution plus fiable ne nécessitant pas de masquage logiciel. L'invention solutionne le problème par l'ajout d'une temporisation supplémentaire servant de sécurité à la première temporisation. L'invention a pour objet un circuit de déclenchement d'écriture par page dans une mémoire à grille flottante comportant un premier circuit de temporisation ayant une entrée d'initialisation qui reçoit, sur une entrée, un signal d'initialisation d'une première temporisation chaque fois qu'un mot est écrit dans un registre tampon de la mémoire et qui fournit, sur une sortie, un bit d'état, ledit bit d'état indiquant, lorsqu'il est dans une premier état, que la première temporisation n'est pas terminée, caractérisé en ce qu'il comporte un deuxième circuit de temporisation ayant une entrée connectée à la sortie du premier circuit de temporisation et une sortie connectée à un dispositif d'écriture en mémoire, le deuxième circuit de temporisation étant déclenché à l'issu de la première temporisation, et ladite sortie du deuxième circuit de temporisation servant à déclencher l'écriture de la page dans la mémoire à l'issu d'une deuxième temporisation. Préférentiellement ledit circuit comporte des moyens pour réinitialiser les premières et deuxièmes temporisations tant que la deuxième temporisation n'est pas finie. Selon des modes de réalisation les premier et deuxième circuits de temporisation comportent un compteur chacun ou un compteur commun. L'invention a également pour objet un procédé d'écriture par page dans une mémoire à grille flottante dans lequel on initialise une première temporisation chaque fois qu'un mot est écrit dans un registre tampon de la mémoire et on fournit, sur une sortie, un bit d'état, ledit bit d'état indiquant, lorsqu'il est dans une premier état, que la première temporisation n'est pas terminée, caractérisé en ce que: - une deuxième temporisation est déclenchée à l'issu de la première temporisation, et - l'issu de la deuxième temporisation déclenche l'écriture de la page dans la mémoire. Préférentiellement, les premières et deuxième temporisations sont initialisables tant que la deuxième temporisation n'est pas écoulée. L'initialisation de la première temporisation peut se produire lors d'un changement d'état d'un signal d'écriture de mot qui correspond au moment où le mot est chargé dans un tampon de la mémoire et/ou lors d'un changement d'état du signal d'écriture de mot qui correspond au début d'une séquence d'écriture de mot. La deuxième temporisation garantit à l'utilisateur qu'il lui reste une durée prédéfinie minimum pour écrire dans la mémoire à partir du moment où le bit d'état est dans le premier état. L'invention sera mieux comprise et d'autres avantages apparaîtront à la lecture de la description et au vu des dessins annexés parmi lesquels - la figure 1 représente ltétat de la technique, - la figure 2 représente schématiquement l'invention, - la figure 3 représente des chronogrammes de fonctionnement de l'invention, - la figure 4 représente deux variantes de réalisation de l'invention sur un même schéma. La figure 1 représente le circuit de déclenchement d'écriture de page d'une mémoire non volatile programmable électriquement, selon l'état de la technique. Un circuit de détection de front 1 reçoit un signal d'écriture de mot WE et fournit un signal d'initialisation INIT. Un circuit de temporisation 2 reçoit d'une part le signal d'initialisation INIT fourni par le circuit de détection 1 et d'autre part un signal d'écriture de page /ECRP indiquant que le circuit est en mode d'écriture par page. Ce circuit de temporisation 2 fournit sur une sortie un bit d'état indiquant si une temporisation est en cours ou si la temporisation est terminée. La sortie du circuit de temporisation 2 est connectée de façon à servir d'une part d'indicateur dans un registre d'état de la mémoire et d'autre part de signal de déclenchement d'écriture de page. Tel que représenté sur la figure 1, le circuit de temporisation est initialisé lorsque le signal d'écriture de page /ECRP est à l'état haut; puis dès que le signal d'écriture de page /ECRP passe à l'état bas le circuit de temporisation 2 déclenche sa temporisation; chaque fois qu'une écriture de mot est détectée, le circuit de détection fournit une impulsion sur le signal d'initialisation INIT qui réinitialise la temporisation du circuit de temporisation 2; lorsque la temporisation est terminée, le bit fourni en sortie du circuit de temporisation change d'état, indiquant le déclenchement de la commande d'écriture en même temps que l'indicateur bascule pour indiquer que la temporisation est terminée. De nombreuses variantes existent dans l'état de la technique. Entre autre, le signal d'écriture de page /ECRP peut être supprimé; dans ce cas, il agit de manière indirecte par exemple sur le signal d'écriture de mot WE et/ou sur la commande d'écriture de page à l'aide d'une porte logique. Sur le schéma de la figure 2, le circuit de déclenchement d'écriture de page comporte un circuit de détection 1 identique à celui de la figure 1 et des premier et deuxième circuits de temporisation 3 et 4. Le premier circuit de temporisation 3 est identique au circuit de temporisation 2 de la figure 1. Ce premier circuit de temporisation 3 recevant le signal d'initialisation init et le signal d'écriture de page /ECRP afin de fournir en sortie un bit indicateur indiquant suivant son état si une première temporisation propre au premier circuit de temporisation est en cours ou si la première temporisation est terminée. Le deuxième circuit de temporisation 4 reçoit sur une première entrée le signal d'écriture de page /ECRP. Une deuxième entrée du deuxième circuit de temporisation 4 est connecté à la sortie du premier circuit de temporisation. La sortie de ce deuxième circuit de temporisation 4 fournit la commande d'écriture de page. Dans cette figure 2, il est possible de supprimer le signal d'écriture de page /ECRP dans les mêmes conditions que sur la figure 1. Un fonctionnement possible du circuit de la figure 2 sera mieux compris à l'aide des chronogrammes de la figure 3. Le signal d'écriture de page /ECRP n'est pas représenté sur cette figure 3. Le premier chronogramme 5 représente le signal d'écriture de mot WE. Dans notre exemple, le mot à charger en mémoire doit être présenté sur un bus de donnée de la mémoire lorsque le signal d'écriture de mot est à l'état bas; puis lors d'un front montant 6 du signal d'écriture de mot WE, le mot est chargé dans un registre de la mémoire en attendant d'être charger dans la matrice de la mémoire. Le deuxième chronogramme 7 représente le signal d'initialisation fournit par le circuit de détection 1. Dans notre exemple, seuls les fronts montants 6 du signal d'écriture de mot WE sont détectés. Lors de chacun des fronts montants 6 du signal d'écriture de mot WE, le circuit de détection produit des impulsions sur le signal d'initialisation INIT. Les impulsions peuvent être très brèves, de l'ordre de quelques ns. Le troisième chronogramme 8 représente la sortie du premier circuit de temporisation 3 qui correspond également au bit indicateur signalant à l'utilisateur que la première temporisation est en cours ou est terminée. Sur ce troisième chronogramme 8, on a représenté la temporisation en cours par un état bas et la temporisation terminée par un état haut. De plus, la temporisation est en cours dès le début du chronogramme; en fait la temporisation peut commencer lors de la réception d'une première impulsion du signal d'initialisation INIT dès lors que l'on a le signal d'écriture de page /ECRP actif. Le bit indicateur reste à l'état bas tant que la première temporisation T1 n'est pas écoulée, la première temporisation T1 étant réinitialisée par chacune des impulsions du signal d'initialisation INIT. Le quatrième chronogramme 9 représente le signal de commande d'écriture de page, fourni par le deuxième circuit de temporisation 4, qui déclenche l'écriture des registres tampons dans une page de la matrice mémoire à partir d'un front montant 10 de ce signal de commande. Le signal de commande peut être initialisé par exemple par le signal d'écriture de page /ECRP ou par les impulsions du signal d'initialisation INIT. Cependant, la deuxième temporisation T2 du deuxième circuit de temporisation 4 ne se déclenche que lorsque la sortie du premier circuit de temporisation 3 indique la fin de la première temporisation T1. Avec un dispositif fonctionnant comme indiqué sur les chronogrammes de la figure 3, on dispose d'un indicateur qui indique qu'il est encore possible d'écrire des mots dans la mémoire avec une réserve temporelle permettant d'écrire pendant un certain temps après le basculement du bit indicateur. A titre d'exemple, la première temporisation est de 100 ys et la deuxième temporisation est de 10 Hs. Ainsi l'utilisateur d'une telle mémoire sait qu'il dispose d'un délais de 100 js pour pouvoir interrompre momentanément l'écriture de la page. De plus, dans le cas d'une interruption d'un non prévu, le test du bit indicateur indique, si la première temporisation n'est pas terminée qu'il reste au moins 10 Hs pour effectuer l'écriture d'un mot (ce qui est largement suffisant). Bien évidemment, l'homme du métier comprendra que les états bas et les états peuvent être inversés, de même pour les front montant et descendant. Il est également possible de modifier les instants d'initialisation des circuits de temporisation ainsi que les valeurs numériques des circuits de temporisation sans sortir du cadre de l'invention. La figure 4 représente une réalisation détaillée du circuit de la figure 2, fonctionnant comme indiqué sur les chronogrammes de la figure 3. Le premier circuit de temporisation 3 comporte un compteur 11, comptant en binaire sur onze bits et ayant une entrée de remise à zéro RAZ, une entrée de validation de comptage CE, une entrée d'horloge CLK et onze sorties de comptage QO à Q10. Une porte OU 12 à deux entrées et une sortie a sa sortie connectée à l'entrée de remise à zéro RAZ du compteur 11, l'une de ses entrées recevant le signal d'initialisation INIT, et l'autre de ses entrées recevant le signal d'écriture de page /ECRP. Un inverseur 13, ayant une entrée et une sortie, a sa sortie connectée à l'entrée de validation de comptage CE du compteur 11 et son entrée connectée à la sortie Q10 du compteur 11. La sortie Q10 fournit le bit indicateur d'état de comptage. Le deuxième circuit de temporisation 4 comporte un compteur 14, comptant en binaire sur huit bits et ayant une entrée de remise à zéro RAZ, une entrée de validation de comptage CE, une entrée d'horloge CLK et huit sorties de comptage Q0 à Q7. L'entrée de remise à zéro RAZ du compteur 14 est connectée à la sortie Q10 du compteur 11 par l'intermédiaire d'un inverseur 15. L'entrée de validation de comptage du compteur 14 reçoit le signal d'écriture de page /ECRP par l'intermédiaire d'un inverseur 16. Un circuit générateur d'horloge 17, par exemple un oscillateur en anneau, fournit sur une sortie un signal d'horloge. La sortie du circuit générateur d'horloge 17 est connectée aux entrées d'horloge CLK des deux compteurs 11 et 14 afin de cadencer lesdits compteurs 11 et 14. Sur le circuit de la figure 3, lorsque le signal d'écriture de page /ECRP est inactif, c'est à dire à l'état haut, le compteur 11 est remis à zéro en permanence, le compteur 14 étant également remis à zéro en permanence par l'inverseur 15. Lorsque le signal d'écriture de page est actif, c'est à dire à l'état bas, le compteur 11 n'est plus remis à zéro, cependant tant que le bit Q10 du compteur 11 est à zéro, le compteur 14 est remis à zéro. Chaque fois qu'un front montant est détecté sur le signal d'écriture de mots WE, le compteur 11 est remis à zéro. Lorsque le compteur 11 a compté 1024 cycles d'horloge, la sortie Q10 passe à "un" bloquant le comptage du compteur 11 et autorisant le comptage du compteur 14. Lorsque le compteur 14 a compté 128 cycles d'horloge, la commande d'écriture change d'état déclenchant ainsi l'écriture de la page dans la matrice de mémoire. Si un front montant du signal d'écriture de mot WE est détecté avant que la sortie Q7 du compteur 14 ait changé d'état alors le compteur 11 est remis à zéro, et le compteur 14 aussi. A partir du moment où l'écriture en mémoire est déclenchée, le signal d'écriture de mot WE est neutralisé afin d'éviter toute perturbation lors de l'écriture, interdisant ainsi la réinitialisation des compteur. Il est également possible d'utiliser une porte OU 18 à deux entrées et une sortie, l'une des entrées recevant le signal /ECRP et l'autre entrée étant connectée à la sortie Q10, la sortie de la porte fournissant le bit indicateur, afin d'obtenir un bit indicateur plus stable. Dans ce cas, le signal /ECRP sera désactivé dès le début de l'écriture dans la matrice mémoire. Une autre amélioration consiste à n'utiliser qu'un unique compteur 11. Pour cela, on ajoute une porte ET 19, ayant deux entrées et une sortie. Les entrées de la porte ET sont respectivement connectées aux sorties Q10 et Q7 du compteur 11 afin de fournir sur la sortie une commande d'écriture. Pour cela, l'entrée de l'inverseur 13 doit être connectée à la sortie de la porte ET 19 afin que le compteur compte jusqu'à 1024+128 cycles d'horloge. Avec une telle modification, les premier et deuxième circuits de temporisation ne sont plus dissociables. l'un de 1 'autre. L'homme du métier peut également modifier le système en utilisant par exemple un unique compteur utilisant deux décodeurs pour détecter deux valeurs de comptage précises, chacun des décodeurs activant ou désactivant une bascule. De nombreuses possibilités sont envisageables. Les tailles de compteurs peuvent être modifiées. Il est également possible de détecter les fronts montant et les fronts descendant du signal d'écriture de mot WE afin de pouvoir augmenter la durée légèrement la première temporisation en fonction du temps d'écriture nécessaire aux éléments externes à la mémoire. Différents types de détecteurs de fronts où d'oscillateurs peuvent être utilisés. L'exemple détaillé de la figure 4 est purement indicatif. Ainsi, il est possible d'utiliser d'autres éléments de temporisation que des compteurs, par exemples des monostables réarmables. REVENDICATIONS 1. Circuit de déclenchement d'écriture par page dans une mémoire à grille flottante comportant un premier circuit de temporisation (3) ayant une entrée d'initialisation qui reçoit, sur une entrée, un signal d'initialisation (INIT) d'une première temporisation (T1) chaque fois qu'un mot est écrit dans un registre tampon de la mémoire et qui fournit, sur une sortie, un bit d'état, ledit bit d'état indiquant, lorsqu'il est dans une premier état, que la première temporisation (T1) n'est pas terminée, caractérisé en ce qu'il comporte un deuxième circuit de temporisation (4) ayant une entrée connectée à la sortie du premier circuit de temporisation (3) et une sortie connectée à un dispositif d'écriture en mémoire, le deuxième circuit de temporisation (4) étant déclenché à l'issu de la première temporisation (T1), et ladite sortie du deuxième circuit de temporisation (4) servant à déclencher l'écriture de la page dans la mémoire à l'issu d'une deuxième temporisation (T2). 2. Circuit selon la revendication 1, caractérisé en ce que le premier circuit de temporisation (3) comporte un compteur (11). 3. Circuit selon l'une des revendications 1 ou 2, caractérisé en ce que le deuxième circuit de temporisation (4) comporte un compteur (14). 4. Circuit selon la revendication 1, caractérisé en ce que les premier et deuxième circuits de temporisation (3, 4) comportent un compteur commun (11). 5. Circuit selon l'une des revendications 1 à 4, caractérisé en ce qu'il comporte des moyens (12) pour réinitialiser les premières et deuxièmes temporisations (T1, T2) tant que la deuxième temporisation (T2) n'est pas finie. 6. Procédé d'écriture par page dans une mémoire à grille flottante dans lequel on initialise une première temporisation (T1) chaque fois qu'un mot est écrit dans un registre tampon de la mémoire et on fournit, sur une sortie, un bit d'état, ledit bit d'état indiquant, lorsqu'il est dans une premier état, que la première temporisation (T1) n'est pas terminée, caractérisé en ce que: - une deuxième temporisation (T2) est déclenchée à l'issu de la première temporisation (T1), et - l'issu de la deuxième temporisation (T2) déclenche l'écriture de la page dans la mémoire. 7. Procédé selon la revendication 6, caractérisé en ce que les première et deuxième temporisations (T1, T2) sont initialisables tant que la deuxième temporisation (T2) n'est pas écoulée. 8. Procédé selon l'une des revendications 6 ou 7, caractérisé en ce que l'initialisation de la première temporisation (T1) se produit lors d'un changement d'état d'un signal d'écriture de mot (WE) qui correspond au moment où le mot est chargé dans un tampon de la mémoire. 9. Procédé selon l'une des revendications 6 à 8, caractérisé en ce que l'initialisation de la première temporisation (T1) se produit lors d'un changement d'état d'un signal d'écriture de mot (WE) qui correspond au début d'une séquence d'écriture de mot.