FR 2784765 A1 20000421 FR 9813056 A 19981019 La présente invention concerne de façon générale les "dispositifs médicaux implantables actifs" tels que définis par la directive 90/385/CEE du 20 juin 1990 du Conseil des communautés européennes. Il peut s'agir de dispositifs implantables - stimulateurs cardiaques, défibrillateurs et/ou cardioverteurs, appareils neurologiques, pompes de diffusion de substances médicales, implants cochléaires, etc. - ou non implantables, c'est-à-dire portés par le patient- notamment les enregistreurs Holter, c'est-à-dire les appareils permettant d'effectuer en continu et sur une lon- gue période l'enregistrement de signaux recueillis au moyen d'électrodes implantées ou d'électrodes externes. Dans ces dispositifs, comme dans de très nombreux autres dispo- sitifs électroniques, il est nécessaire de régler et de mémoriser un certain nombre de paramètres de fonctionnement. Parmi ces paramètres, on trouve tout d'abord des paramètres de nature technique, généralement ajustés en production au moment de la calibration de l'appareil (références de tension ou de courant, fréquence d'un l'oscillateur, gain d'amplificateurs, etc.). En effet, la conception des circuits du dispositif nécessite souvent que le fonctionnement des circuits matériels soit ajusté afin d'obtenir un comportement optimal. Ces ajusta- ges peuvent être réalisés de diverses façons, par exemple par ajustement de résistances par sablage ou gravure laser; plus récemment, la généra- lisation des électroniques à capacités commutées et des traitements nu- mériques a ramené le problème de l'ajustage à l'obtention d'un code nu- mérique sur N bits qui, une fois obtenu, est utilisé via des convertisseurs numérique/analogique ou bien pour commander des commutateurs logi- ques d'une échelle de capacités, ou encore comme variable dans un logi- ciel. Une telle technique est par exemple exposée dans le EP-A- 0 661 657 (ELA Médical). D'autres paramètres sont ajustés ultérieurement. Dans le cas particulier d'un dispositif médical actif implantable, certains paramètres peuvent ainsi être ajustés après implantation par le praticien, par exemple pour adapter la prothèse au patient d'un point de vue physiologique. Ces paramètres conditionneront le comportement des divers algorithmes du logiciel de commande du dispositif médical, par exemple pour la délivrance d'impulsions de stimulation ou de chocs de défibrillation dans le cas d'une prothèse cardiaque. Ces divers paramètres ont comme caractéristique commune d'être des paramètres permanents (c'est-à-dire ajustés une fois pour toutes) ou quasi-permanents, et d'être définis sous forme de codes numériques sur N bits (le nombre N de bits pouvant varier en fonction du paramètre considéré). Ces codes numériques sont donc stockés dans des mémoires per- manentes, qui peuvent être de type ROM à fusibles, EPROM, E2PROM, flash ou encore RAM sauvegardées. Chacun de ces types de mémoires possède ses avantages et inconvénients propres, et surtout une aptitude plus ou moins grande à conserver l'information de façon durable. La RAM, qui possède la plus grande facilité d'écriture, présente aussi un ris- que plus grand de perte ou de corruption de l'information sur des événe- ments rares, comme par exemple les impacts d'ions lourds tels que les particules alpha ou les parasites électriques susceptibles d'être produits par exemple à la suite d'une exposition à un champ électromagnétique impulsionnel de forte intensité. Les mémoires de type ROM, EPROM, E2PROM ou flash sont, par nature, bien protégées contre ces risques d'altération, mais elles présen- tent, pour un dispositif médical actif, un double inconvénient: - d'une part, du point de vue de la topologie des circuits, ces mémoi- res ne sont pas physiquement localisées là ou la valeur qu'elles mémorisent est utilisée, et par ailleurs sont organisées architectu- ralement d'une façon globale en plan mémoire qui interdit l'accès individuel, direct et permanent à l'information, alors que la fonction analogique ajustée a besoin de cette information en permanence; - en second lieu, la lecture de ces mémoires consomme de l'énergie, paramètre critique pour les prothèses implantables et, plus géné- ralement, pour les dispositifs portables alimentés par une pile, qui empêchent un accès permanent à l'information d'étalonnage de la fonction analogique conservée dans ces mémoires, pour des ques- tions évidentes de consommation d'énergie. Ces difficultés ont conduit à mémoriser les informations en ques- tion dans des registres de type RAM ou bascules électroniques logiques, localisés à l'intérieur du module qui les utilise, donc topologiquement pro- che du lieu de la fonction qu'ils étalonnent, et lisibles en permanence et à très faible consommation. Ces registres étant par nature des registres volatils, il faut tenir compte du risque d'effacement accidentel de la donnée, avec les deux problèmes de: - surveillance de l'information conservée dans les registres afin d'en contrôler l'intégrité, et ceci avec une consommation négligeable et de façon immédiate ou quasi-immédiate; et - correction, également immédiate ou quasi-immédiate, de la donnée corrompue en cas d'altération accidentelle. Il a été proposé divers systèmes basés sur un codage redondant et/ou auto-correcteur de l'information, par exemple de type CRC ou ana- logue. Mais cette technique présente le double inconvénient de nécessi- ter une scrutation ou analyse quasi-permanente de l'information, impli- quant donc une consommation d'énergie importante, et d'autre part de l'apparition d'un état indéterminé de l'information pendant le laps de temps séparant la détection de l'erreur de sa correction, inconvénient qui n'est pas admissible dans le cas de dispositifs médicaux actifs tels que des stimulateurs cardiaques, dans lesquels la continuité d'un fonctionne- ment correct doit être assurée en toutes circonstances. L'invention apporte une solution à ces problèmes, en proposant un dispositif médical actif comprenant au moins un module pour la mise en oeuvre d'une fonction du dispositif, ce module comportant un circuit spéci- fique à la fonction et dont un paramètre est ajustable sous forme d'un mot numérique de N bits, dispositif caractérisé en ce que chacun desdits mo- dules comprend une pluralité de registres de type volatil de N bits mémo- risant chacun ledit mot numérique, et des moyens comparateurs, pour comparer les contenus respectifs des registres et produire un signal d'anomalie en cas de discordance entre ces contenus. De préférence, les registres de N bits sont au nombre d'au moins trois, et le module comprend en outre un circuit majoritaire recevant en entrée les contenus des registres et délivrant en sortie au circuit spécifi- que la valeur résultante comme paramètre d'ajustement. Lorsque le dispositif médical actif est un dispositif à microcontrô- leur, le signal d'anomalie peut être un signal d'interruption appliqué au microcontrôleur; en cas de pluralité de modules, les signaux d'interrup- tion respectifs sont appliqués au microcontrôleur via des moyens pour multiplexer, coder et gérer les priorités de ces interruptions. Très avantageusement, il est prévu en outre des moyens de res- tauration du contenu du ou des registre(s) altéré(s) en cas de discor- dance détectée par les moyens comparateurs. Ces moyens peuvent no- tamment être des moyens pour rechercher une valeur concordante entre une pluralité de registres et recopier cette valeur dans le registre altéré, ou encore, lorsque la valeur du paramètre est également conservée dans une mémoire non volatile extérieure au module, des moyens pour reco- pier dans le registre altéré, ou bien dans tous les registres, la valeur lue dans cette mémoire non volatile extérieure. O On va maintenant décrire un exemple de mise en oeuvre de l'in- vention, en référence aux dessins annexés. La figure 1 représente, sous forme de schéma par blocs, les princi- paux éléments d'un dispositif médical actif incorporant le circuit de sur- veillance et de correction selon l'invention. La figure 2 montre plus en détail la structure de l'un des blocs réfé- rencés 26 de la figure 1. Le dispositif médical actif se compose essentiellement d'un micro- contrôleur 10 et d'un ASIC 12 contenant les diverses fonctions à configu- rer par des registres protégés. Il peut éventuellement comporter une mémoire de stockage non volatile 14 telle qu'une E2PROM, qui peut être externe, comme illustré, ou bien interne au microcontrôleur 10. Le microcontrôleur 10 comporte, de manière classique, une mé- moire morte ROM 16 et une mémoire vive RAM 18, et il communique avec l'ASIC 12 et, le cas échéant l'E2PROM 14 par un bus d'adresses et de données 20. Il dispose par ailleurs d'une entrée ITi, 22 dont le rôle sera expliqué plus bas. L'ASIC 12 comporte un certain nombre de modules 24 dont chacun correspond à une fonction particulière dont un paramètre est ajustable, par exemple: - amplificateur à gain ajusté, - oscillateur à fréquence ajustée, - chaîne de traitement de l'accélération, dans le cas d'un dispositif asservi, étage de stimulation à configuration programmable (configuration des électrodes pour un stimulateur multisite, configuration des chocs à appliquer pour un défibrillateur). On peut également stocker de la même façon des données criti- ques pour le fonctionnement du dispositif, par exemple le numéro de mo- dèle, qui est une donnée indispensable notamment à la reconnaissance du dispositif par un programmateur externe. Ces divers modules 24 sont chacun reliés à un bloc 26 mémorisant les N bits (N étant un nombre variable selon la fonction considérée) né- cessaires à l'ajustage du module 24. Les bits d'ajustage, organisés en mots de N bits, sont stockés de façon triple dans des registres identiques 28, dont l'architecture est iden- tique d'un bloc 26 à l'autre, mais qui diffèrent en taille suivant le nombre N de bits d'ajustage correspondant au module 24 associé (la figure 2 illustre ainsi un exemple de bloc 26 dans le cas o N = 4). Le chiffre de trois pour le nombre de registres 28 n'est pas limitatif, et un nombre supérieur peut être envisagé, de préférence (mais non né- cessairement) un nombre impair. Initialement, et dans les conditions normales de fonctionnement, les trois registres 28 d'un même bloc 26 stockent la même information. Chacun des bits de chacun des trois registres 28 d'un même bloc 26 est appliqué, d'une part, à l'une des trois entrées d'un circuit majori- taire respectif 30 et, d'autre part, à l'une des trois entrées d'une porte OU EXCLUSIF respective 32. Pour mémoire, la table de vérité d'un circuit majoritaire à trois en- trées A, B et C est la suivante: A B C Majorité 0 0 0 0 O Oo 1 o 0 0 I0 0 1 0 0 0 1 1 1 1 0 0 0 1 O 1 1 1 1 _ 10 1 Les sorties des circuits majoritaires 30 sont appliqués à un registre Reg_Adj 34 permettant l'ajustage de la fonction du module 24 associé au bloc 26 considéré. Ainsi, si une altération survient sur l'un des trois regis- tres 28, aucune conséquence n'est vue par la fonction ajustée. Ces circuits majoritaires garantissent donc l'intégrité du système même si l'un des registres vient à être altéré, car dans ce cas les deux autres registres resteront identiques et c'est leur valeur qui sera prise en compte par le circuit majoritaire 30, de sorte qu'aucune conséquence de l'altération survenue ne soit vue par la fonction ajustée. Les portes OU EXCLUSIF 32, en comparant bit à bit les trois re- gistres 28, surveillent que ces trois registres 28 sont toujours identiques. Si tel est le cas (situation normale) les portes 32 sont à l'état inactif (la consommation est donc nulle, bien que la surveillance soit permanente); dans le cas o une différence apparaît entre les trois registres sur l'un quelconque des bits, la fonction de la porte OU EXCLUSIF 32 correspon- dante passe à l'état actif, révélant ainsi l'altération de l'un des registres. Le circuit va gérer la détection d'une telle altération de la manière suivante. Les sorties des portes OU EXCLUSIF 32 de chaque bloc 26 sont reliées à l'une des entrées d'une porte OU commune 36 à N entrées (au- tant d'entrées que de bits dans chacun des registres 28) produisant en sortie un signal, permettant de véhiculer une demande d'interruption en direction du microcontrôleur. Ainsi, pour chaque fonction, un seul fil est nécessaire pour véhicu- ler la demande d'interruption propre à l'ajustage du module correspon- dant, quel que soit le bit altéré dans les trois registres 28. L'ensemble des demandes d'interruption IT, 1IT2,... est regroupé et traité par deux fonctions: - une porte OU 38 à k entrées regroupe toutes les demandes d'inter- ruption, et sa sortie est interfacée avec l'entrée d'interruption 22 du microcontrôleur 10; - un bloc 40 à k entrées a pour fonction de calculer le numéro de l'interruption qui s'est produite et l'écrire dans un registre Reg_Num 42 accessible en lecture dans le système global via le bus 20; si plusieurs interruptions se produisent en même temps, le bloc 40 mémorise chacune des demandes et inscrit dans le registre 42 le numéro de l'interruption à traiter, en fonction de priorités prédéfi- nies. Le microcontrôleur 10, sur réception d'une demande d'interruption IT1, 22, exécute alors un programme spécifique qui peut être contenu dans la ROM 16 ou la RAM 18 pour traiter le problème de corruption de registre qui vient de se produire. Pour savoir quel ajustage vient d'être altéré, il lui suffit de lire le registre Reg_Num 42 pour obtenir son numéro et donc l'adresse du (des) registre(s) 28 altéré(s). Deux modes opératoires peuvent être prévus, suivant que le sys- tème possède ou non une unité de stockage non volatile 14 dans laquelle se trouvent également mémorisées les valeurs des paramètres d'ajus- tage. Dans un premier cas, en l'absence d'unité de stockage non volatile, c'est-à-dire si les valeurs des paramètres sont exclusivement conservées dans les registres 28, le microcontrôleur lit les trois registres 28 corres- pondant au numéro d'interruption indiqué par le registre 42, et vérifie qu'au moins deux des registres 28 sur trois sont identiques. Il réécrit dans ce cas le troisième registre identique aux deux autres; si les trois regis- tres sont différents, une valeur de compromis est inscrite dans les trois registres. Si, en revanche, le paramètre d'ajustement est inscrit dans une mémoire non volatile telle que 14, alors le microcontrôleur lit la valeur de référence de l'ajustage signalée par son numéro d'interruption dans cette mémoire non volatile et réécrit cette valeur dans les trois registres 28 concernés (on prévoit dans ce cas une interruption masquable). En variante, au lieu de corriger spécifiquement celui des registres qui a été altéré, on peut réécrire l'ensemble des registres 28 chaque fois qu'une altération est détectée. Cette manière de procéder évite le recours aux circuits de codage des interruptions et de gestion des priorités 40 et 42; il est cependant nécessaire, dans ce cas, de prévoir une interruption masquable pendant toute la durée de la correction. On notera incidemment que, si l'on conserve en mémoire non vola- tile les paramètres d'ajustage, le système peut gérer non seulement la corruption des données par des phénomènes parasites, mais également les pertes transitoires d'alimentation. Lorsque le microcontrôleur a achevé l'étape de correction, il rétablit la surveillance du système en autorisant de nouveau la ligne d'interrup- tion 22 affectée à la protection des ajustages. Si plusieurs demandes avaient été enregistrées simultanément, après que le microcontrôleur ait traité la demande prioritaire, dès la réautorisation le système de protec- tion génère à nouveau une demande avec un numéro différent dans le registre Reg_Num 42. Comme on l'aura compris, cette correction, gérée par une simple interruption (prioritaire) du microprocesseur, est très rapidement opérée, typiquement en quelques millisecondes, temps très court permettant de ne pas affecter le comportement physiologique du dispositif médical actif. On notera par ailleurs que l'intégrité du système est garantie même pendant la phase (très courte) de correction par le microprocesseur de la donnée corrompue, grâce au circuit majoritaire 30 qui continue à appli- quer au module 24 la valeur correcte, contenue dans les registres non altérés. REVENDICATIONS 1. Un dispositif médical actif, comprenant au moins un module (12) pour la mise en oeuvre d'une fonction du dispositif, ce module comportant un circuit (24) spécifique à la fonction et dont un paramètre est ajustable sous forme d'un mot numérique de N bits, dispositif caractérisé en ce que chacun desdits modules comprend: - une pluralité de registres (28) de type volatil de N bits mémorisant chacun ledit mot numérique, et - des moyens comparateurs (32, 36), pour comparer les contenus respectifs des registres et produire un signal d'anomalie (IT, IT2... ITl... ITk) en cas de discordance entre ces contenus. 2. Le dispositif de la revendication 1, dans lequel les registres de N bits sont au nombre d'au moins trois, et le module comprend en outre un circuit majoritaire (30) recevant en entrée les contenus des registres et délivrant en sortie audit circuit spécifique (24) la valeur résultante comme paramètre d'ajustement. 3. Le dispositif de la revendication 1, dans lequel le dispositif médi- cal actif est un dispositif à microcontrôleur (10), et le signal d'anomalie est un signal d'interruption appliqué au microcontrôleur. 4. Le dispositif de la revendication 3, comportant une pluralité desdits modules, et dans lequel les signaux d'interruption respectifs sont appliqués au microcontrôleur via des moyens (38, 40, 42) pour multi- plexer, coder et gérer les priorités de ces interruptions. 5. Le dispositif de la revendication 1, comportant en outre des moyens de restauration du contenu du ou des registre(s) altéré(s) en cas de discordance détectée par les moyens comparateurs. 6. Le dispositif des revendications 2 et 5 prises en combinaison, dans lequel les moyens de restauration sont des moyens pour rechercher une valeur concordante entre une pluralité de registres et recopier cette valeur dans le registre altéré. 7. Le dispositif de la revendication 5, dans lequel la valeur du pa- ramètre est également conservée dans une mémoire non volatile (14) extérieure au module (12), et les moyens de restauration sont des moyens pour recopier dans le registre altéré la valeur lue dans cette mé- moire non volatile extérieure. 8. Le dispositif de la revendication 7, dans lequel les moyens de restauration recopient dans tous les registres la valeur lue dans la mé- moire non volatile extérieure.