Brevet FR2752993A1 — publié le 19980306

Dispositif de protection de données mémorisées utilisant un circuit de temporisation. L'invention concerne le domaine des mémoires non volatiles. Plus particulièrement elle concerne un dispositif de protection de données mémorisées contre des programmations parasites. Le paramètre le plus important des mémoires non volatiles est la garantie apportée à l'intégrité des données mémorisées dans celles-ci. Aujourd'hui, dans la plupart des mémoires, cette garantie est apportée par deux types de dispositifs : les circuits de détection de chute de tension d'alimentation (appelés communément "Vcc Low") et les dispositifs de protection logique des données en écriture (appelés communément "Software Data Protection"). Par mémoire, on entend aussi bien une mémoire autonome qu'une mémoire utilisée dans un circuit comprenant d'autres éléments. Les circuits de type "Vcc Low" sont des circuits de détection qui interdisent la programmation (c'est-à-dire la modification des données mémorisées, encore appelée écriture) si la tension d'alimentation de la mémoire (ou du circuit comprenant la mémoire) est en dessous d'une certaine valeur. Il s'agit d'une protection de type analogique. Très souvent les fonctions de détection de chute de tension d'alimentation et d'initialisation du circuit lors de la montée de la tension d'alimentation (appelée communément Power On Reset) ne sont pas distinguées. Les dispositifs de type "Software Data Protection" se présentent généralement sous la forme d'un registre interne de commande, programmable et non volatil, dont le contenu est représentatif d'une autorisation ou d'une interdiction de programmer. Il est programmé par le circuit qui pilote la mémoire (par exemple un microprocesseur ou un microcontrôleur, si la mémoire est un circuit indépendant). Il s'agit ici d'une protection de type logique. L'ensemble des deux dispositifs peut être connu sous l'appellation "Write "Inhibit". Ces deux dispositifs présentent chacun des inconvénients. Supposons que la tension d'alimentation d'une mémoire en fonctionnement, dans laquelle l'écriture est permise, commence à chuter. Au dessus d'une certaine valeur, le dispositif de commande (par exemple un microcontrôleur) qui pilote la mémoire fonctionne correctement. Lorsque la tension atteint un premier seuil VA, le microcontrôleur détecte que l'alimentation a chuté. Suivant les applications et suivant sa durée, cette phase est utilisée par exemple pour effectuer des sauvegardes d'urgence de données dans la mémoire, ou pour éventuellement programmer le registre du dispositif de protection logique des données de façon à protéger la mémoire contre les écritures parasite. On peut également configurer la mémoire de sorte qu'une programmation parasite soit plus difficile, par exemple en configurant la mémoire en mode de lecture. Lorsque la tension atteint un seuil VB inférieur, en valeur absolue, à VA, le dispositif de commande ne fonctionne plus correctement et adopte alors un comportement complètement imprévisible. En particulier, il peut très bien envoyer des ordres d'écriture à la mémoire. Dans ce cas, le dispositif de protection logique, s'il a été programmé pour interdire toute programmation, est une protection non totalement sûre. Il existe nécessairement quelque part dans la mémoire du microcontrôleur un programme de configuration du registre du dispositif. Il se peut que le microcontrôleur accède à ce programme et modifie ainsi le contenu du registre, autorisant l'écriture. La probabilité que ce programme soit exécuté est néanmoins beaucoup plus faible que la probabilité d'une écriture parasite dans la mesure où, de manière standard, la programmation du registre nécessite au moins trois cycles d'horloge cohérents (alors qu'une écriture parasite peut se déclencher sur un seul cycle). Lorsque la tension atteint un troisième seuil VC inférieur, en valeur absolue, à VB, le circuit de détection de chute de tension d'alimentation embarqué dans la mémoire détecte la chute de tension et interdit alors automatiquement tout ordre d'écriture dans la mémoire. La période critique en terme d'intégrité des données de la mémoire se situe donc entre les seuils VB et VC, c'est-à-dire entre le moment où la chute de la tension d'alimentation induit un comportement aléatoire du dispositif de commande et le moment où cette chute induit une interdiction automatique de toute programmation. Une solution consisterait à choisir VC > VB. Cependant, il est difficile pratiquement de réaliser des circuits de détection ayant un seuil VC stable en fonction de la température et des paramètres de fabrication. Typiquement, les dispositifs implantés à ce jour dans les mémoires présentent une dispersion de l'ordre de plus ou moins 0.2 volts suivant les paramètres de fabrication et de plus ou moins 0.3 volts suivant la température. On a donc une incertitude de plus ou moins 0.5 volts sur la valeur de VC. D'autre part, le seuil VB est généralement situé très près de la valeur minimale de tension d'alimentation à partir de laquelle les fabricants garantissent un fonctionnement normal des circuits. Si on a VC > VB, on risque donc de bloquer la mémoire alors qu'elle devrait fonctionner normalement. A titre d'exemple, pour un circuit alimenté par une tension d'alimentation de 5 volts, on garantit typiquement un bon fonctionnement entre 4.5 et 5.5 volts. Le seuil VB sera typiquement placé à 4.3 volts et on aura VC égal à 3.8 volts +/- 0.5 volts. Un but de l'invention est de proposer un dispositif de protection de données mémorisées qui soit plus sûr. Pour ce faire, on propose une protection mixte qui soit mise en oeuvre de manière logique mais dont l'arrêt soit indépendant des signaux de commande logiques. Ainsi, si la protection est mise en oeuvre avant que la tension d'alimentation n'ait atteint un niveau tel que les circuits pilotant la mémoire aient un comportement aléatoire, un tel comportement aléatoire sera, s'il se produit, sans effet sur les données quels que soient les signaux produits par les circuits de pilotage. Selon l'invention, on déclenche une temporisation, d'une durée éventuellement programmable, qui empêche l'écriture pendant toute sa durée . Quels que soient les signaux envoyés par le dispositif de contrôle, l'accès en écriture est protégé durant tout le délai de temporisation. Ayant détecté le seuil VA, le dispositif de commande va par exemple exécuter des sauvegardes d'urgence et éventuellement configurer le registre du dispositif de type "Software Data Protection", puis il va exécuter en boucle le programme de démarrage du circuit de temporisation. Lorsque le seuil VB est atteint, la mémoire est ainsi protégée durant la durée du délai de la temporisation. Il suffit de prévoir une temporisation de durée supérieure à la durée typique qui s'écoule entre le moment où l'alimentation a atteint VB et le moment où elle atteint VC. Cette durée dépendant généralement de l'application (et plus particulièrement de la charge capacitive globale supportée par l'alimentation du circuit), on choisira de préférence une temporisation de durée programmable. Si la baisse de la tension n'est que temporaire et que la tension repasse au-dessus du seuil VB sans que le seuil VC soit atteint, la mémoire fonctionne normalement dès la fin du délai de temporisation. Ainsi l'invention propose un dispositif de protection de données mémorisées, comprenant des moyens de protection pour contrôler un signal de validation de programmation d'une mémoire, la programmation étant autorisée quand le signal de validation est dans un premier état et interdite quand ce signal est dans un deuxième état, les moyens de protection comprenant un dispositif de détection de chute d'une tension d'alimentation pour forcer le signal de validation dans le deuxième état quand la tension d'alimentation est en dessous d'un seuil, caractérisé en ce qu'il comprend en outre un circuit de temporisation apte à forcer le signal de validation dans le deuxième état durant un délai donné quand un signal de commande passe dans un premier état. Selon un mode de réalisation, le circuit de temporisation comprend une bascule pour produire un signal forçant le signal de validation dans son deuxième état quand le signal de commande passe dans son premier état, un compteur pour produire une valeur de comptage quand le signal dans son premier état, un registre pour mémoriser une valeur représentative du délai, et un comparateur pour réinitialiser la bascule quand la valeur de comptage est égale à la valeur représentative du délai. Avantageusement, le registre du circuit de temporisation est programmable. L'invention concerne également l'utilisation du dispositif dans une mémoire ou un circuit comprenant une mémoire pour empêcher la programmation des dolées mémorisées dans la mémoire. D'autres avantages et particularités apparaîtront à la lecture de la description qui suit d'un exemple de réalisation de l'invention, à lire conjointement aux dessins annexés dans lesquels - la figure 1 représente un dispositif de protection selon l'état de la technique, - la figure 2 représente un dispositif de protection selon l'invention, - la figure 3 représente un exemple schématique de réalisation d'un circuit de temporisation du dispositif de la figure 2. La figure 1 représente un dispositif 1 de protection en programmation de données mémorisées dans une mémoire, selon l'état de la technique. Ce dispositif pourra être mis en oeuvre dans une mémoire non volatile ou un circuit comprenant une telle mémoire. Le dispositif l comprend un circuit logique de contrôle LOGIC. Ce circuit, non décrit, sera par exemple le circuit de décodage des signaux de commande reçus de l'extérieur si le dispositif 1 est intégré dans une mémoire autonome, ou bien encore le circuit de pilotage de la mémoire si le dispositif 1 est utilisé dans un circuit comprenant une mémoire. Le circuit LOGIC produit les signaux logiques de commande utilisés dans le dispositif 1 pour gérer la protection des données. Classiquement, l'autorisation ou l'interdiction de programmer est réalisée en positionnant un signal logique /WRITE~INHIBIT de validation de programmation (la notation /X représentant le signal complémentaire de X) respectivement dans un premier état logique, dit inactif ou un deuxième état logique, dit actif. A titre d'exemple on supposera que l'état inactif est l'état haut et que l'état actif est l'état bas. Quand un ordre de programmation est envoyé au circuit LOGIC, celui-ci positionne un signal logique STARTPROdREQUEST dans un état logique donné dit actif. On supposera ici que celui-ci est l'état haut, l'état bas étant dit inactif. Ce signal est combiné avec le signal /WRITEINHIBIT pour produire un signal logique START PROG de commande de programmation de telle sorte que l'on programme des données quand il est dans un état donné dit actif (on supposera ici que c'est l'état haut) et que l'on ne programme pas quand il est dans un état dit inactif (dans l'exemple on supposera que c'est l'état bas). Classiquement, la protection se traduit par le fait que le signal START~PROG reste inactif quel que soit l'état du signal START PROG REQUEST, si le signal /WRITE~INHIBIT est actif. Si le signal /WRITE~INHIBIT est inactif alors l'état du signal STARTPROG est identique à l'état du signal STARTPROG~REQUEST. Ainsi, dans l'exemple illustré sur la figure l, le signal START~PROG est produit par une porte logique 3 de type ET recevant les signaux /WRITE~INHIBIT et START~PROG~REQUEST de telle sorte que START~PROG = 1 si START PROG REQUEST = /WRITE~INHIBIT = 1. Le dispositif t comprend un registre non volatil SDPREG de protection logique. Il comprend également un circuit de détection de chute de tension d'alimentation VCC LOW DETECT recevant en entrée des potentiels d'alimentation haute VCC et de masse GND alimentant le circuit à protéger, et produisant un signal logique VCC~LOW tel que VCC LOW est dans un premier état logique (dit inactif) si VCC est supérieur à un seuil Vseuil donné et dans un second état (dit actif) si il est inférieur. On a par exemple VCC LOW = t si VCC Soit SDPB le contenu du registre SDPREG. On supposera que si SDPB = 1, alors on interdit toute programmation. Une porte logique 5 de type NON OU reçoit les signaux VCCLOW et SDPB et produit à partir de ces signaux le signal /WRITE~INHIBIT. Ainsi, si on protège de manière logique la mémoire contre la programmation et/ou si VCC est inférieur à Vseuil alors les commandes de programmation de la mémoire sont inhibées et n'ont pas d'effet. La figure 2 illustre un dispositif 10 de protection semblable à celui de la figure 1 et mettant en outre en oeuvre l'invention. Il comprend, outre les éléments de la figure 1 (portant les mêmes références que sur la figure 1), un circuit de temporisation TEMPO produisant un signal logique PROG~OFF et la porte 5 comprend une troisième entrée pour recevoir le signal PROG~OFF. Quand le signal PROG~OFF est es dans un premier état, dit actif, le signal /WRITEINHIBIT passe dans son état actif. Quand le signal PROG~OFF est dans un deuxième état, dit inactif, l'activation du signal /WRITE~INHIBIT est commandée par les dispositifs VCC~LOW~DETECT et SDPREG, de manière analogue à l'exempte illustré sur la figure l. Le circuit TEMPO reçoit un signal de commande START, par exemple du circuit LOGIC, de telle sorte que le signal PROG~OFF est actif durant un délai déterminé quand le signal de commande START reçu passe dans un état donné, et qu'il est inactif une fois le délai écoulé ou si le signal START est dans un autre état. Typiquement on choisira un délai de quelques centaines de millisecondes. La figure 3 illustre un exemple de réalisation du circuit TEMPO. I1 comprend un registre REG, un comparateur COMP, un compteur COUNT, un oscillateur OSC et une bascule 12. Le comparateur est utilisé pour comparer la valeur mémorisée dans le registre REG et la valeur produite par le compteur COUNT. Il produit un signal logique dont l'état est fonction du résultat de la comparaison, ce signal étant fourni à l'entrée de réinitialisation de la bascule 12. On supposera que le signal produit par le comparateur passe à l'état haut si les valeurs sont égales. La sortie de la bascule 12 fourni le signal PROG~OFF, ce signal étant fourni à l'oscillateur OSC de telle manière que celui-ci produit un signal d'horloge si le signal PROG~OFF est actif. L'entrée d'initialisation S de la bascule 12 reçoit le signal START. Le signal START est fourni également au compteur de telle sorte qu'il commence à compter par exemple en incrémentant son contenu à partir de O au rytlune du signal fourni par l'oscillateur quand le signal START passe dans son état actif. Quand la valeur produite par le compteur atteint la valeur mémorisée dans le registre REG alors le circuit de comparaison COMP produit un front montant de telle sorte que le signal PROdOFF repasse à l'état inactif. De préférence on choisira un registre REG programmable, ou programmable une seule fois, de telle sorte que l'on pourra adapter le délai d'activation du signal PROG~OFF en fonction de l'application, et plus particulièrement en fonction de la pente typique de la chute de la tension d'alimentation qui depend de la charge capacitive globale supportée par l'alimentation. REVENDICATIONS 1 - Dispositif (10) de protection de données mémorisées, comprenant des moyens de protection (VCC LOW, SDPREG) pour contrôler un signal (/WRITE~INHIBIT) de validation de programmation d'une mémoire, la programmation étant autorisée quand le signal de validation est dans un premier état et interdite quand ce signal est dans un deuxième état, les moyens de protection comprenant un dispositif (VCC~LOW) de détection de chute d'une tension d'alimentation pour forcer le signal de validation dans le deuxième état quand la tension d'alimentation est en dessous d'un seuil, caractérisé en ce qu'il comprend en outre un circuit de temporisation (TEMPO) apte à forcer le signal de validation dans le deuxième état durant un délai donné quand un signal de commande (START) passe dans un premier état. 2 - Dispositif selon la revendication 1, caractérisé en ce que le circuit de temporisation comprend une bascule (12) pour produire un signal (PROG OFF) forçant le signal de validation dans son deuxième état quand le signal de commande passe dans son premier état, un compteur (COUNT) pour produire une valeur de comptage quand le signal dans son premier état, un registre (REG) pour mémoriser une valeur représentative du délai, et un comparateur (COMP) pour réinitialiser la bascule quand la valeur de comptage est égale à la valeur représentative du délai. 3 - Dispositif selon la revendication 2, caractérisé en ce que le registre du circuit de temporisation est programmable. 4 - Utilisation du dispositif selon l'une des revendications précédentes dans une mémoire ou un circuit comprenant une mémoire pour empêcher la programmation des données mémorisées dans la mémoire.