Brevet FR2752992A1 — publié le 19980306

Dispositif de protection de données mémorisées. 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 parasites. 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 proposer un dispositif de protection de données mémorisées qui soit plus sûr. Pour ce faire, on propose une protection mixte par le biais d'une bascule qui soit activable quand on le souhaite mais qui ne soit désactivable que si un dispositif de détection analogique a pris le relais. 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 inhibe la programmation jusqu'à ce que la mémoire ait détecté une chute de la tension d'alimentation. Tant que le seuil VC n'a pas été détecté, la mémoire reste donc protégée. Dès que le seuil VC est atteint, le dispositif de détection de type VCC Low prend le relais. Ainsi l'invention propose un dispositif de protection de données mémorisées dans une mémoire, comprenant des moyens de protection pour contrôler un signal de validation de programmation de la 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. Il comprend en outre une bascule dont une sortie contrôle l'état du signal de validation, concurremment au dispositif de détection de chute de la tension d'alimentation, de telle sorte que toute programmation soit interdite quand la bascule mémorise un premier état, et le dispositif de protection étant agencé de telle sorte que cet état de la bascule ne soit modifié qu'après que le dispositif de détection de chute de la tension d'alimentation ait détecté que la tension d'alimentation est en dessous du seuil. 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, et la figure 2 représente un dispositif de protection selon l'invention. 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 1 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 2, celui-ci positionne un signal logique START~PROG~REQUEST 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 /WRITE~INHIBIT 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 START~PROG est identique à l'état du signal START~PROG~REQUEST. Ainsi, dans l'exemple illustré sur la figure 1, 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 1 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 = 1 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 VCC~LOW 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), une bascule RS 12 de type NON OU produisant un signal logique PROG~OFF et la porte 5 comprend une troisième entrée pour recevoir le signal PROG~OFF. L'entrée de réinitialisation R de la bascule 12 reçoit le signal VCC~LOW et son entrée d'initialisation S reçoit un signal SET~PROG~OFF fourni par exemple par le circuit 2 de contrôle. Quand un front montant apparaît dans le signal SET~PROG~OFF, le signal PROG~OFF passe à l'état haut, ce qui impose /WRITE~INHIBIT = 0. Toute programmation est alors interdite. Si ce front est fourni après qu'une chute de tension ait été détecté, seul le passage de VCC en dessous du seuil Vseuil pourra inactiver le signal PROG~OFF. La protection contre la programmation est alors assurée par le circuit VCC~LOW~DETECT. REVENDICATIONS 1 - Dispositif (l0) de protection de données mémorisées dans une mémoire, comprenant des moyens de protection (VCC~LOW~DETECT, SDPREG) pour contrôler un signal (/WRITE~INHIBIT) de validation de programmation de la 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 (VCCLOWPETECT) 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 une bascule (12) dont une sortie contrôle l'état du signal de validation (/WRITE INHIBIT), concurremment au dispositif (VCC~LOW~DETECT) de détection de chute de la tension d'alimentation, de telle sorte que toute programmation soit interdite quand la bascule mémorise un premier état, et le dispositif de protection étant agencé de telle sorte que cet état de la bascule ne soit modifié qu'après que le dispositif de détection de chute de la tension d'alimentation ait détecté que la tension d'alimentation est en dessous du seuil. 2 - Dispositif selon la revendication 1, caractérisé en ce que la bascule est une bascule de type RS dont l'entrée de réinitialisation reçoit un signal du dispositif de détection de chute de la tension d'alimentation, de telle sorte que l'état du signal de validation est contrôlé par ce seul dispositif de détection quand il a détecté le premier seuil. 3 - 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.