FR 2958857 A1 20111021 FR 1001625 A 20100416 INRIA109.FRD Dispositif et système de contrôle du corps humain L'invention concerne le contrôle du corps humain et plus particulièrement la stimulation et/ou la mesure de grandeurs physiologiques sur des sites du système sensori-moteur du corps humain, dans le but de pallier les déficiences sensori-motrices suite à un accident, ou par suite d'une maladie. La demande trouve une application particulière dans la stimulation neurale, et plus particulièrement la stimulation du système nerveux périphérique. Cependant, elle est parfaitement applicable à d'autres types de stimulation, comme la stimulation de surface, la stimulation épimysiale, ou la stimulation électrique fonctionnelle appliquée au cerveau et/ou à la moelle épinière. La stimulation ou la mesure peuvent s'effectuer sur toute structure physiologique capable de générer un signal électrique ou de réagir à celui-ci, le plus souvent sous forme d'un potentiel d'action. Ainsi, les axones regroupés en fascicules puis nerfs, les neurones eux mêmes situés dans le cerveau ou la moelle épinière, les fibres musculaires cardiaques, squelettiques ou de certains muscles lisses, les organes sensoriels, sont autant de structures qui peuvent être soit observées, soit stimulées, Enfin, bien que la technologie présentée s'intéresse en premier lieu aux systèmes implantés, le concept serait identique pour des systèmes externes ou mixtes. De nombreux accidents et maladies peuvent laisser un être humain sans contrôle de son corps, ou seulement avec un contrôle partiel, du fait d'une altération ou dégradation du système nerveux. 30 Ces affections peuvent atteindre des fonctions motrices, telles que la mobilité de la partie supérieure ou inférieure du corps ou des fonctions non motrices telles que l'urination.25 Dans ces situations, les personnes affectées souffrent non seulement des conséquences directes des déficiences induites, mais aussi d'effets secondaires majeurs comme les escarres, l'ostéoporose, ou le besoin de se sonder pour uriner. Pour répondre à cette situation, les médecins et les scientifiques étudient depuis de nombreuses années le système nerveux humain. Certaines recherches visent à le régénérer, et d'autres à compenser ses déficiences par une commande artificielle. L'invention concerne ce deuxième type de recherches, et permet de restituer ou de moduler certaines activités motrices, sensorielles ou organiques du corps humain grâce à un dispositif et un système de stimulation neurale qui vient suppléer ou rééduquer la commande déficiente du système nerveux. Les recherches dans ce domaine ont permis d'obtenir certains résultats. Plusieurs 15 dispositifs ont ainsi été proposés, issus du monde industriel et du monde académique. Ces dispositifs s'appuient sur une ou plusieurs électrodes implantées dans le corps humain, qui peuvent être commandées pour appliquer ou mesurer un courant ou une tension électrique au niveau d'un nerf ou d'une structure cible citée ci-dessus. Ces dispositifs présentent de nombreux désavantages et ne sont pas encore capables d'offrir une véritable solution au problème de la perte de motricité, de sensorialité, ou de contrôle. 25 En effet ils restent en général à vocation extrêmement locale, c'est-à-dire que ces dispositifs ne sont pas aptes à communiquer entre eux, dès lors qu'il ne s'agit pas d'un unique dispositif centralisant toutes les électrodes et leur contrôle. Cela signifie que la stimulation et/ou la mesure coordonnées d'un ensemble d'activités 30 neurales ou musculaires, par un ensemble de dispositifs, n'est pas possible. 20 Et par conséquent la réalisation d'une fonction complexe et précise, telle qu'un mouvement de déambulation par exemple, l'est encore moins. Certaines solutions ont proposé de faire communiquer entre eux les dispositifs. 5 Néanmoins, ces solutions sont restées au stade de prototype ou n'ont jamais connu de réelle application dans le cadre de fonctions complexes. En effet, ces solutions reposent soit sur des moyens extracorporels de synchronisation de dispositifs implantés, soit sur une centralisation de l'intégralité des activités. 10 En ce qui concerne les premiers, la synchronisation d'implants, via des dispositifs extracorporels, implique des contraintes d'antenne assurant une couverture inductive suffisante. Ces contraintes empêchent de répondre aux exigences de précision temporelle inférieure à la milliseconde pour la mise en oeuvre concrète de fonctions 15 humaines. En ce qui concerne les seconds, la centralisation de l'intégralité des activités d'implants a pour inconvénient d'induire une chirurgie lourde. En outre, ce type de solution n'est pas évolutif, au sens de la capacité de supporter une implantation incrémentale de 20 dispositifs implantables, pour pallier des déficiences ultérieures par exemple. De fait, aucune des solutions décrites à ce jour ne permet de mettre en oeuvre plusieurs fonctions, ni de gérer les éventuelles interactions, entrelacements et contraintes entre deux fonctions. Cette limitation est constatée aussi bien lorsque les implants sont 25 indépendants que lorsqu'ils ne le sont pas, et aussi bien lorsque les nerfs et/ou muscles concernés sont différents que lorsqu'ils sont identiques. L'invention vient améliorer la situation. 30 À cet effet, l'invention propose un dispositif de contrôle implantable dans un corps humain, comprenant une unité de commande et au moins une électrode. L'unité de commande est reliée à la ou chaque électrode pour la commander en stimulation et/ou en mesure. L'unité de commande comprend : - une horloge de cadencement, - une mémoire stockant des données de configuration définies pour permettre la configuration de la ou chaque électrode en correspondance d'identifiants, - une mémoire stockant des données de programme décrivant un profil temporel en correspondance d'identifiants, - un exécuteur activable en vue d'envoyer à la ou chaque électrode des impulsions 10 électriques correspondant à un programme donné selon une configuration d'électrode donnée, en fonction de l'horloge, - un séquenceur agencé pour recevoir une pluralité ordonnée de couples comprenant chacun un identifiant de configuration d'électrode et un identifiant de programme, et pour activer sélectivement l'exécuteur avec les couples de configuration d'électrode et 15 de programme désignés par les couples d'identifiants reçus en entrée, en fonction de leur ordre et de l'horloge. L'invention concerne également un système de contrôle implantable dans un corps humain, comprenant un pilote et au moins un dispositif tel que décrit plus haut, reliés 20 dans un réseau filaire de type bus, dans lequel le pilote est agencé pour envoyer ladite pluralité de couple d'identifiants au séquenceur dudit dispositif. D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lecture de la description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif, tirés des 25 dessins sur lesquels : - la figure 1 représente un schéma d'un système de contrôle du corps humain selon l'invention implanté dans un corps humain, - la figure 2 représente un schéma d'un dispositif de contrôle du corps humain du système de la figure 1, 30 - la figure 3 représente un schéma de la répartition des pôles d'un type d'électrode du dispositif de la figure 2, - la figure 4 représente un schéma fonctionnel d'une partie du dispositif de la figure 2, - la figure 5 représente un exemple de données stockées dans un des éléments de la figure 4, - la figure 6 représente un exemple de données stockées dans un autre des éléments de la figure 4, - la figure 7 représente un schéma fonctionnel d'un pilote de stimulation neurale du dispositif de la figure 1, et - la figure 8 représente un diagramme de fonctionnement du pilote de la figure 7. Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de 10 caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d'auteur et/ou le copyright. Le titulaire des droits n'a pas 15 d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa description, telle qu'elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits. En outre, la description détaillée est augmentée de l'annexe A, qui donne la formulation 20 de certaines commandes mises en oeuvre dans le cadre de l'invention. Cette Annexe est mise à part dans un but de clarification, et pour faciliter les renvois. Elle est partie intégrante de la description, et pourra donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. 25 La figure 1 représente un schéma d'un système de stimulation neurale 2 implanté dans un corps humain 4. Le système de stimulation neurale 2 comprend une commande externe 6, un pilote 8, et des dispositifs de stimulation neurale 10. 30 Dans l'exemple décrit ici, la commande externe 6 et le pilote 8 communiquent par un signal sans-fil, du type lien inductif ou du type lien de communication radiofréquence (RF). Ainsi, le praticien ou le patient dans le corps 4 duquel le système de contrôle du corps humain 2 est implanté peut commander les gestes/fonctions motrices qu'il souhaite réaliser grâce à une interface simple. Dans l'exemple décrit ici, le pilote 8 est implanté dans la partie supérieure du corps 4. Il 10 pourra par exemple être logé au niveau de la clavicule ou de l'abdomen du corps 4. Il pourra être logé ailleurs, comme saura l'apprécier l'homme du métier. Dans l'exemple décrit ici, un dispositif 10 est situé au niveau de la vessie, et deux dispositifs 10 sont respectivement disposés dans chacune des jambes gauche et droite. Le pilote 8 est relié aux divers dispositifs de stimulation neurale 10 au moyen d'un bus 11. Le bus 11 est un ensemble de fils conducteurs (par exemple câble bi-filaire agréé cardiaque IS-1), qui transportent à la fois l'énergie pour alimenter les dispositifs 10, et les données à transmettre entre le pilote 8 et les dispositifs 10. 20 En variante, le bus 11 peut être dédié au transport d'informations, et ne pas transporter d'énergie. Bien que la figure 1 semble montrer que les dispositifs 10 sont directement reliés entre 25 eux, ce n'est pas le cas dans la mise en oeuvre réelle : ils ne sont reliés entre eux que par le bus 11 sur lequel ils se connectent. Dans l'exemple décrit ici, le bus 11 est réalisé sous la forme de fils conducteurs. Cependant, dans d'autres variantes, il pourrait être mis en oeuvre par un lien 30 radiofréquence, un lien acoustique, un lien inductif ou autre. 15 Comme on le verra par la suite, le bus 11 est asynchrone dans l'exemple décrit ici, c'est-à-dire que le bus 11 ne transporte pas de signal de synchronisation (comme un signal d'horloge par exemple) des dispositifs 10. Ainsi, le bus 11 est implanté dans le corps 4 dans les zones que l'on souhaite piloter, qui peuvent être proches des nerfs ou des muscles concernés, et chaque dispositif 10 est ensuite relié au bus 11. Le bus 11 représente donc une sorte d'épine dorsale sur laquelle viennent se greffer les dispositifs 10, et chaque dispositif 10 relié est un noeud du bus 11. La stimulation neurale est entièrement commandée par le pilote 8. Cette approche représente un contraste radical avec les approches connues à ce jour. En effet, les stimulations considérées par l'invention, par exemple celles à caractère sélectif, nécessitent localement une précision de l'ordre de la microseconde, chaque dispositif 10 ayant sa propre horloge. La dérive de l'horloge des dispositifs 10 est donc présente dans ce contexte, et son influence ne doit pas être négligée. Dès lors, toute architecture centralisée d'un point de vue fonctionnel, et distribuée d'un point de vue opérationnel comme c'est le cas ici, a été irréaliste jusqu'à ce jour. En effet, compte tenu des contraintes de consommation et donc de débit compatibles avec ce contexte, la synchronisation n'était pas possible à cette échelle de temps par l'intermédiaire d'un réseau. L'invention a donc consisté en de nombreuses améliorations dans chacun des éléments du système de stimulation neurale 2, afin de permettre le fonctionnement de manière asynchrone opérationnellement, mais synchrone fonctionnellement. Par fonctionnement asynchrone, on entend le fait que les dispositifs 10 sont 30 synchronisés d'un point de vue fonctionnel, mais asynchrones du point de vue de leurs horloges respectives. Cela est notamment obtenu, comme on le verra avec les figures 2 à 6, grâce aux dispositifs 10, qui jouent un rôle d'actionneurs ou de capteurs sophistiqués. Seuls les actionneurs seront exposés en détails, les propos restant valides pour les capteurs. La figure 2 représente un exemple de dispositif de stimulation neurale 10. Comme on peut le voir sur cette figure, le dispositif 10 comprend une unité de commande 12 et quatre électrodes 14 référencées respectivement 14a, 14b, 14c et 14d. Comme on le verra dans la suite, l'unité de commande 12 peut assurer à la fois un rôle 10 de stimulation et un rôle de mesure. Chaque électrode 14 est agencée au niveau d'une zone choisie de la structure nerveuse ou musculaire à stimuler. 15 Les quatre électrodes 14 représentées ici illustrent de manière non exhaustive différentes configurations géométriques des contacts, associés à des structures mécaniques adaptées : l'électrode 14a est de type annulaire, l'électrode 14b de type intrafasciculaire, l'électrode 14c de type plate, et l'électrode 14d est de type matricielle. 20 Dans l'exemple décrit ici, l'électrode 14a comprend trois anneaux 16 à quatre pôles chacun, ce qui donne un total de 12 pôles. L'électrode 14a peut également comporter un nombre plus restreint d'anneaux, par exemple 3, avec chacun 4 pôles, ou une autre répartition du nombre d'anneaux et de 25 pôles par anneau, notamment dans le cadre de la stimulation cochléaire. Le nombre total de pôles peut varier avec la configuration retenue, et peut être supérieur ou inférieur à 12. Ce nombre varie typiquement du nombre de 2 pour une stimulation bipolaire ou monopolaire avec référence, à plus de 24 pour une application cochléaire. 30 D'une manière générale, un dispositif 10 comporte un nombre d'électrodes 14 compris entre 1 et 6, qui sont toutes pilotées par une unique unité de commande 12, chaque électrode comprenant entre 1 et 12 pôles. Par ailleurs, si dans l'application décrite ici, les électrodes sont neurales, dans d'autres applications, elles pourraient être épimysiales, intramusculaires, intracérébrales, intrafasciculaires, corticales ou autres. La figure 3 représente une vue schématique de la disposition d'un anneau d'une électrode 14 autour d'un nerf 18. Comme on peut le voir sur cette figure, le nerf 18 comprend quatre fascicules 19 ayant chacun plusieurs axones 20. Les pôles 22 de l'anneau 16 sont disposés régulièrement autour du nerf 18, de sorte que chaque pôle 22 est sensiblement en regard d'un ensemble d'axones 20. Ainsi, lorsque le pilote 8 envoie à un dispositif 10 un signal de stimulation, l'unité de commande 12 de ce dispositif 10 émet un stimulus électrique au niveau d'un ou plusieurs pôles 22 d'un anneau 16 d'une électrode 14 du dispositif 10, et le sous- ensemble d'axones 20 en regard de cet ensemble de pôles 22 est ainsi stimulé. La figure 4 représente l'architecture d'une unité de commande 12. Dans l'exemple décrit sur cette figure, l'unité de commande 12 peut gérer une ou plusieurs électrode 14, à des fins soit de stimulation soit de mesure, via les étages analogiques-numériques et numériques-analogiques 42. L'unité de commande 12 comprend deux interfaces principales. La première interface, référencée 40, est l'interface de communication avec le bus 11. Cette interface 40 permet de recevoir les signaux d'énergie et de commande du pilote 8.30 La deuxième interface, référence 42, est l'interface de communication avec l'électrode 14 qui est gérée par l'unité de commande 12. Cette interface 42 permet de commander la stimulation des axones 20 par les pôles 22. Dans l'exemple décrit ici, l'interface 42 est intégrée à un convertisseur numérique/analogique auquel elle est assimilée, et dont le rôle sera explicité plus loin. L'unité de commande 12 est un circuit à très basse consommation et cadencé par une horloge 44 dont la vitesse est de l'ordre de 1 à 4 MHz. Cela permet à l'unité de commande 12 d'avoir une précision de l'ordre de la microseconde. Un des concepts mis en oeuvre par le Demandeur pour mettre en oeuvre le bus 11 de manière asynchrone est la prise en compte des fonctions assurées. En effet, pour qu'une stimulation d'un muscle soit mise en oeuvre, il faut stimuler les nerfs qui commandent sa motricité avec une précision de l'ordre de la microseconde. Comme on l'a vu plus haut, cela correspond à une fréquence d'horloge de l'ordre du mégahertz. Or, pour que le système de stimulation soit viable, il faut contrôler la consommation des dispositifs 10, ce qui limite la vitesse des dispositifs à environ quelques mégahertz. Par ailleurs, le bus asynchrone 11 ne permet pas une synchronisation des dispositifs 10, dont l'horloge est cadencée au mégahertz, à une échelle de temps de l'ordre de la microseconde. En d'autres termes, la dérive des horloges des dispositifs 10 poserait problème si les dispositifs 10 devaient être totalement synchronisés par ce moyen. Cependant, s'il est nécessaire de synchroniser les stimulations localement avec une précision de l'ordre de la microseconde, notamment pour des considérations de sélectivité de la stimulation, le temps caractéristique pour synchroniser les activités musculaires des muscles ainsi stimulés est de l'ordre de quelques millisecondes (ms). Dès lors, le Demandeur a déterminé qu'il restait possible de coordonner de manière asynchrone les dispositifs 10 à une échelle de temps supérieure à celle de leur fonctionnement propre. Il a alors fallu concevoir les unités de commande 12 des dispositifs 10 de manière à permettre un contrôle centralisé au niveau du pilote 8, des unités distribuées que constituent les dispositifs 10, tout en assurant un découplage temporel entre la synchronisation au sein de chaque dispositif 10 et la synchronisation entre les dispositifs 10. Pour cela, le Demandeur a conçu une architecture dans laquelle chaque unité de commande 12 reçoit et exécute des instructions sous forme de microprogrammes qui traduisent un profil de stimulation du type de celui présenté sur la figure 5. Ces microprogrammes sont eux-mêmes ordonnés au sein du dispositif 10, sous forme d'une séquence du type de celle représentée sur la figure 6. Ce principe peut être appliqué aussi bien pour la mesure que pour la stimulation. Par conséquent, un microprogramme peut traduire par exemple une mesure d'impédance, et une séquence peut donc contenir une suite ordonnée de mesures et de stimulations. Cela permet de connaître l'état de chacun des dispositifs 10, au niveau du contrôleur 8, avec une précision qui limite l'impact potentiel de la dérive de leurs horloges respectives au regard de la dynamique musculaire, c'est-à-dire le temps séparant le stimulus de la réponse musculaire qu'il induit, et plus généralement la dynamique de la structure cible, qu'elle soit un organe sensoriel ou moteur, ou une structure neurale. L'architecture de fonctionnement de l'unité de commande 12 est la suivante : - un séquenceur 46 reçoit par l'interface 40 des requêtes du pilote 8, qui sont optionnellement accompagnées de données. Les données optionnelles correspondent soit à des microprogrammes, soit à des configurations multipolaires des électrodes connectées à l'unité 12, soit au contenu de la séquence mise en oeuvre par le séquenceur. Tous ces éléments sont décrits plus loin. Les requêtes reçues par le séquenceur 46 correspondent soit à des ordres de pilotage (exécuter, arrêter, etc.) soit à des ordres de programmation du séquenceur 46 (écrire les données optionnelles et/ou lire des données). - le séquenceur 46 stocke les données reçues dans les éléments de stockage tel que 5 décrit plus loin. - le séquenceur 46 déclenche, sur requête, l'exécution de microprogrammes sur des configurations multipolaires. Pour cela, il indique à un exécuteur 48, qui est dans l'exemple décrit ici un microcontrôleur spécifique de type ASIP (Application Specific Instruction Set Processor ou Processeur à Jeu d'instructions Spécifique d'une 10 Application), le microprogramme à exécuter, et - le microcontrôleur 48 exécute la suite d'instructions contenues dans le microprogramme indiqué par le séquenceur et pilote en conséquence le convertisseur numérique/analogique 42 qui est relié aux électrodes. Le microcontrôleur 48 assure également la configuration multipolaire désirée sur les électrodes correspondantes. 15 Une séquence définit une fenêtre temporelle découpée en intervalles, à l'intérieur desquels sont désignés des programmes de stimulation à exécuter sur des configurations multipolaires associées dans les intervalles. Les intervalles peuvent être paramétrés en nombre et en durée. 20 Afin de limiter la quantité d' information transitant par le bus 11, l'unité de commande 12 comprend une mémoire 50 pour le stockage des microprogrammes. Dans l'exemple décrit ici, la mémoire 50 stocke 8 microprogrammes distincts. Plus précisément, la mémoire 50 comprend des données qui associent d'une part un 25 identifiant de microprogramme, et d'autre part des données de microprogramme. Les données de microprogramme sont des suites d'instructions composées de mots de 24 bits dans l'exemple décrit ici, qui correspondent à divers profils de stimulation. Un profil de stimulation décrit la forme du stimulus à appliquer, avec les différentes phases 30 de charge et de décharge. Le tableau 1 de l'Annexe A représente un ensemble d'instructions possibles pour ces mots. Le tableau 2 représente un microprogramme qui code le profil de stimulation représenté sur la figure 5, où l'axe des ordonnées désigne l'intensité de la stimulation et l'axe des abscisses désigne la durée écoulée par rapport au début de l'intervalle. Le tableau 3 représente un autre exemple de microprogramme dont la phase active est trapézoïdale. Dans ces tableaux, on note la présence de données de registre de modulation. Ces registres sont très avantageux. En effet, le séquenceur 46 maintient dans la mémoire temporaire 54 trois registres de modulation pour l'intensité I, et trois registres de modulation pour la durée T. Plus précisément, quand le séquenceur reçoit des données de modulation, il les écrit directement dans les registres concernés. Lorsqu'une instruction est exécutée et qu'elle comprend une ou plusieurs références à des adresses de ces registres, l'exécuteur 48 en tient compte dans son exécution. Ainsi, lorsqu'un microprogramme est écrit, le concepteur peut prévoir la possibilité de moduler les paramètres des instructions de ce microprogramme. Ensuite, il est aisé de modifier l'exécution de chaque microprogramme en jouant sur la valeur du registre de modulation auquel est associée une instruction donnée. Cela permet au praticien d'adapter de manière aisée l'exécution d'un microprogramme. De la même manière, l'unité de commande 12 comprend une mémoire 52 pour le stockage des configurations multipolaires des électrodes 14. Plus précisément, chaque configuration indique les pôles d'une électrode qui sont utilisés. Dans l'exemple décrit ici, la mémoire 52 stocke 8 configurations d'électrodes distinctes par électrode gérée. Plus précisément, la mémoire 52 comprend des données qui associent d'une part un identifiant de configuration d'électrode, et d'autre part des données de configuration d'électrode. Pour l'étage aval considéré en exemple, les données de configuration d'électrode sont formées par un mot de 72 bits comprenant des sous-mots de configuration et des sous-mots de ratio (répartition de courant entre les pôles actifs). Chaque sous-mot de configuration vient préciser quel pôle est actif et avec quelle polarité, et chaque sous-mot de ratio vient préciser pour chaque pôle actif quelle est la quantité de courant de l'impulsion qu'il va recevoir. Dans le cas d'une électrode comportant 12 pôles couplés via des condensateurs plus 1 pôle de référence non couplé, la configuration de l'électrode consiste à définir comment le profil de courant défini par le microprogramme va se répartir sur l'ensemble des pôles de l'électrode. Il faut donc définir pour chaque pôle : - la polarité X (anode ou cathode), - l'état Y du pôle (haute impédance ou actif), et - le ratio de courant Z qui traverse ce pôle. La polarité X peut être codée sur 1 bit (0 pour anode et 1 pour cathode), l'état Y peut être codé sur 1 bit (0 pour haute impédance et 1 pour actif), et le ratio de courant Z peut être codé sur 4 bits (soit seize fractions de 0,0625 pour chaque bit). 20 Par exemple sur 12 pôles, répartis le long de 3 anneaux A1A2A3 de 4 pôles P1P2P3P4, le mot de configuration est une suite de 12 mots de type XYZ. L'ensemble XY constitue pour chaque pôle le sous-mot de configuration, et Z constitue le sous-mot de ratio, par exemple codé sur 4 bits. 25 Si l'on veut par exemple réaliser l'équivalent d'une électrode tripolaire classique (un anneau en cathode au centre et 2 anodes à l'extérieur), on aura : - X =Anode Y=Actif, Z=1/2 sur tous les pôles des anneaux Al & A3, et - X =Cathode Y=Actif, Z=1 sur tous les pôles de l'anneau A2. 30 Cela donnera le mot suivant : 10 15 Al Al Al Al A2 A2 A2 A2 A3 A3 A3 A3 Pl P2 P3 P4 Pl P2 P3 P4 P1 P2 P3 P4 oi o1 oi oi 11 11 11 11 oi oi o1 oi 1000 1000 1000 1000 1111 1111 1111 1111 1000 1000 1000 1000 D'autres éléments peuvent composer la configuration d'une électrode et des contraintes implicites de configuration peuvent s'exprimer dans le codage numérique de cette configuration (par exemple utilisation d'une référence). Pour augmenter la décentralisation opérationnelle, les données stockées dans la mémoire 52 sont reconfigurables. En effet, bien que les indices de la mémoire 52 désignent chacun de manière absolue un pôle précis d'une électrode, le pilote 8 peut envoyer une requête visant à redéfinir ces indices. Cela permet de tenir compte de possibles déplacements des anneaux 16 autour des nerfs 18 dans le cas d'une électrode annulaire, ou d'autres déplacements pour les autres types d'électrode. 15 En variante, les indices de la mémoire 52 pourraient être relatifs, c'est-à-dire qu'ils pourraient désigner chaque pôle par rapport à un pôle de référence de la configuration. Ainsi, en embarquant un dispositif de mesure au niveau de l'interface 42 (non représenté pour des raisons de simplicité), l'unité de commande 12 pourrait reconfigurer l'électrode en cas de déplacement de celle-ci. 20 Il apparaît donc qu'il est possible de piloter les électrodes 14 par intervalles en envoyant simplement un triplet (référence d'intervalle dans la fenêtre ; identifiant de configuration d'électrode ; identifiant de microprogramme). L' adressage du triplet sur le bus 1 l permet de désigner le (ou les) dispositif(s) 10 auquel le triplet doit être appliqué. Lorsque le séquenceur reçoit un triplet de commande, il stocke dans la mémoire temporaire 54 le microprogramme et la configuration d'électrode correspondants. La figure 6 représente un exemple d'une fenêtre d'intervalles dans la mémoire 54. Et 10 25 lorsque le séquenceur 46 reçoit un ordre d'exécution de séquence, il pilote le microcontrôleur 48 selon le contenu de la mémoire 54. Lorsque l'unité de commande 12 gère plusieurs électrodes, les mémoires 50, 52 et 54 reçoivent des identifiants propres à chaque électrode, et les triplets sont adaptés en conséquence. Il apparaît donc avec ce qui précède que le dispositif 10 est conçu pour être piloté totalement à distance par le pilote 8, avec une consommation d'énergie optimisée et un échange minimal de données entre éléments du système. 10 Pour des raisons de sécurité, il est possible de réserver le dernier intervalle à la réalisation d'une décharge passive. De plus, ce dernier intervalle étant de durée modifiable, il permet alors de régler finement la fréquence de répétitions des stimulations. 15 Les figures 7 et 8 vont permettre de montrer l'architecture du pilote 8 et la gestion par celui-ci de la synchronisation des différents dispositifs 10. Comme on peut le voir sur la figure 7, le pilote 8 comprend deux interfaces de communication 70 et 71, une horloge 72, un contrôleur 74, et des mémoires 76, 78 20 et 80. L'interface de communication 70 est reliée a u bus I 1 pour émettre les commandes aux divers dispositifs 10. L'interface 71 assure la communication sans fil du système avec la commande externe 6, par exemple par un lien inductif ou par un lien RF. 25 L'horloge 72 fonctionne à environ 12 MHz et assure l'exercice coordonné des diverses fonctions. La fréquence de fonctionnement de l'horloge peut varier en fonction de la quantité d'informations que le contrôleur 74 doit communiquer aux dispositifs 10. Plus ce dernier doit traiter d'instructions "logiques", c'est-à-dire de haut niveau et plus la 30 vitesse de l'horloge doit être importante. Le fonctionnement du contrôleur 74 sera explicité avec la figure 8.5 La mémoire 76 stocke des données qui associent d'une part un identifiant de fonction motrice et d'autre part des données de fonction motrice. Les données de fonction motrice comprennent des suites organisées de manière séquentielle et/ou parallèle de triplets (référence d'intervalle dans la fenêtre ; identifiant de configuration d'électrode ; identifiant de microprogramme) désignant chacun une électrode d'un (ou plusieurs) dispositif(s) 10 donné(s). La notion de triplet décrite ici n'est pas limitative. En effet, la donnée de référence d'intervalle dans la fenêtre pourrait être implicite. Il faut donc considérer les triplets comme des couples ordonnés, l'ordre des couples étant explicite ou implicite. L'ensemble de ces triplets définit des activités coordonnées (stimulation et/ou mesure) qui conduisent à la réalisation d'une fonction motrice particulière. Par exemple, le blocage anodal peut nécessiter un profil spécifique dont l'exécution génère au moins deux créneaux de stimulation contigus sur un jeu d'électrode constitué d'une cathode centrale et une ou deux anodes externes éventuellement asymétriques. 20 Cela permet par exemple de contrôler séparément la contraction du sphincter strié de l'urètre et le muscle lisse de la vessie (le Detrusor) innervé par un même ensemble de nerfs assurant ainsi une miction plus naturelle. Un autre exemple consiste à séquencer plusieurs triplets pour obtenir la stimulation de 25 plusieurs muscles. Il s'agit d'affecter une configuration d'électrode par muscle cible, c'est-à-dire une configuration de pôles qui peut correspondre à une électrode physique différente ou à une seule électrode dont le point focal de stimulation est déplacé. 30 Cela revient à utiliser un triplet par muscle cible, chaque triplet comprenant potentiellement le même profil, mais des électrodes virtuelles distinctes séquencées dans le temps. Il est à noter que localement, c'est-à-dire au sein d'un dispositif 10, le séquenceur peut gérer l'activation de triplets organisés en séquence (série) et/ou en parallèle. Dans le cas parallèle, le séquenceur gère en même temps plusieurs fenêtres constituées d'intervalles. Les fenêtres sont alors de caractéristiques identiques, c'est-à-dire avec un 10 même nombre d'intervalles et de mêmes durées). Le séquenceur et l'exécuteur peuvent présenter une architecture similaire, c'est-à-dire que si le séquenceur admet du parallélisme, alors il sera avantageux que l'exécuteur aussi. Dans ce cas, séquenceur et exécuteur fonctionnent de paire selon une technique dans laquelle le séquenceur détermine l'ensemble des échéances issues des intervalles en parallèle à l'instant considéré, et il pilote l'exécuteur selon ces échéances. 20 Si le séquenceur n'admet pas de parallélisme, alors il est préférable que l'exécuteur non plus. Le séquenceur pilote alors l'exécuteur en lui demandant l'activation du microprogramme à l'instant considéré. De plus, le séquenceur peut mettre en place la configuration multipolaire avant de 25 lancer l'exécuteur, c'est-à-dire l'écriture dans les registres de l'étage analogique, durant le temps disponible entre la fin de l'activité programmée dans un intervalle en cours et l'activation d'un intervalle suivant. Cela permet d'éviter toute latence dans l'activation de l'exécuteur du fait de la mise en 30 place de la configuration. 15 La mémoire 78 est une mémoire temporaire qui stocke l'état «courant» de chaque fenêtre et de chacune des électrodes des dispositifs 10. En effet, comme le pilote 8 sait quels microprogrammes il a envoyés à quelles électrodes avec leurs configurations d'électrode correspondantes, il peut stocker dans la mémoire 78 une représentation de l'état de celles-ci aux fins de coordination discutées plus haut. La mémoire 78 stocke également l'état actuel de fonctionnement du système de stimulation 2, c'est-à-dire la ou les fonctions actuellement mises en oeuvre, ainsi qu'une file d'attente des fonctions à mettre en oeuvre. La file d'attente permet d'organiser l'exécution ordonnée des fonctions planifiées d'une part et des fonctions ponctuelles d'autre part. Par fonctions planifiées, on entend les fonctions mises en place en général par le praticien, et qui sont exercées de manière permanente, par exemple la fonction antiescarres, anti-hyperflexie, anti-douleur, etc... 20 Par fonction ponctuelle, on entend les fonctions sollicitées par le patient à un instant donné, par exemple la miction. La mémoire 78 permet donc un ordonnancement de l'exécution de ces fonctions. 25 La mémoire 80 est une mémoire de configuration, qui vient stocker l'ensemble des mémoires 50 et 52 de chacune des unités de commande 12 des dispositifs 10. Ainsi, le pilote 8 a une vue totale des stimulations possibles par les dispositifs 10. En outre, la mémoire 80 peut servir à reconfigurer certains dispositifs 10. En effet, il est 30 prévu une commande spécifique de synchronisation entre la mémoire 80 et les mémoires 50 et 52 des dispositifs 10.15 La figure 8 va maintenant être décrite pour expliquer le fonctionnement du contrôleur 74. Le fonctionnement du contrôleur 74 peut être vu comme une boucle répétée en permanence. Lorsque le contrôleur 74 reçoit une commande d'exécution d'une fonction émise par la commande externe 6 ou d'une fonction planifiée, un ensemble d'opérations est lancé. L'exemple de la figure 8 part en 800 de la réception d'une commande de fonction de la 10 commande externe 6. Ensuite, dans une opération 810, le contrôleur 74 appelle la mémoire 76 avec un identifiant de fonction tiré de l'opération 800, et récupère les données relatives à la réalisation de cette fonction. Ensuite, dans une opération 820, le contrôleur 74 détermine au moyen d'une fonction CompatÇ si cette commande de fonction peut être exécutée immédiatement. La fonction Compat() peut être basée sur l'appel de la mémoire 78 pour vérifier quelles 20 sont les électrodes qui sont stimulées à ce moment, et sur l'appel de données de compatibilité de cette fonction avec les fonctions actuellement mises en oeuvre. On a ainsi une double vérification de la possibilité de mise en oeuvre de la fonction commandée : 25 - disponibilité des électrodes nécessaires (on ne peut pas mettre en oeuvre une nouvelle fonction si une autre fonction utilise une électrode nécessaire à cette mise en oeuvre), et - compatibilité des fonctions entre elles (il n'est pas recommandé de permettre que les fonctions « se lever » et « uriner » puissent être simultanées). 30 Certaines fonctions peuvent être incompatibles entre elles tout en étant activables individuellement. 15 Ainsi, l'exécution simultanée de la déambulation et de la miction ne doit pas être autorisée. A l'inverse, il peut s'avérer nécessaire d'activer plusieurs fonctions en même temps, 5 comme la génération d'un mouvement et l'inhibition de la douleur par neuromodulation. Dans le cas où le système permet d'évaluer certains paramètres relatifs à l'état du patient, les conditions déterminant l'autorisation ou l'interdiction de l'exécution de 10 certaines fonctions peuvent être dynamiques. Par exemple, la fatigue excessive peut rendre dangereuse une tentative de lever. Il conviendra donc de bloquer cette fonction si un état de fatigue excédant un seuil donné est détecté. D'autres conditions peuvent également jouer un rôle. Ainsi, les contraintes de nature technique comme l'énergie disponible, ou la défaillance d'un sous-système, qui en l'absence de solution de secours, peuvent nécessiter l'interdiction du lancement d'une fonction, voire l'interruption de l'exécution d'une fonction en cours. 20 Si la fonction Compat() ne détermine pas de problème à l'exécution de la fonction commandée, alors cette fonction est commandée dans une opération 830, c'est-à-dire que les triplets la définissant sont transmis dans l'ordre nécessaire aux divers dispositifs 10, ou ces triplets sont simplement activés s'ils ont déjà été transmis et 25 stockés dans la mémoire 54 des dispositifs 12 impliqués dans cette fonction. Sinon, une fonction Except( est appelée dans une opération 840. La fonction Except() a pour rôle de déterminer si l'exécution de la commande reçue en 800 pose un problème majeur, qui la rend incompatible avec la file d'attente existante, ou pas. 15 30 Si c'est le cas, alors un message indiquant cette impossibilité d'exécution est envoyé à la commande externe 6 pour communication à la personne. Sinon, la fonction est placée dans la file d'attente de la mémoire 78. Enfin, l'opération se termine en 850. L'implémentation de divers éléments de cette description, notamment les différentes parties de l'unité de stimulation 12 ou le contrôleur 8, peut se réaliser sur des composants tels que des microcontrôleurs, microprocesseurs ou des processeurs de signaux (DSP). L'ensemble du système a été conçu et prototypé pour une exploitation optimale sur des architectures numériques basées sur des composants FPGA (Field Programmable Gate Array) et leur version Flash ou OTP (One Time Programmable), ASIC (Application Specific Integrated Circuit). 5 ANNEXE A Tableau 1 : exemple de jeu d'instructions Nom Paramètres Commentaires SIT S Signe I Intensité RI, RT Adr. registre de proportionnalité sur I, T T Durée de l'impulsion (en µs) RAMP S Signe N Nombre de pas dI Incrément en I dT Incrément en T (en µs) DTL End Fin de programme N Nombre de répétitions Adr Adresse de branchement T Durée d'attente avant de boucler (en µs) Tableau 2: Exem • le de Micro s ro ramme réalisant un stimulus rectan ' ulaire biphasique, dans lequel les phases actives et de décharge sont de même forme Nom Paramètres Signification SIT + 128 10 256 Créneau actif modulable en I, 1=128, T=256 DTL 0 0 1 32 Phase haute impédance de T=32 SIT - 128 10 256 Décharge active modulable en T, I=128, T=256 DTL 1 0 0 64 Fin de programme, après T=64 de haute impédance5 ANNEXE A (suite) Tableau 3 : Autre exemple de microprogramme réalisant une phase active en forme de trapèze et une décharge active en forme de rectangle Nom Paramètres Signification RAMP + 15 0 2 6 Rampe croissante, 15 pas, I=2, T=6 RAMP - 3 0 10 3 Rampe décroissante, 3 pas, I=10, T=6 SIT - 128 00 256 Décharge active, I=128, T=256, non modulable DTL 1 1 0 128 Fin de programme après 2 boucles, T=128 Revendications1. Dispositif de contrôle implantable dans un corps humain, comprenant une unité de commande (12) et au moins une électrode (14), ladite unité de commande (12) étant reliée à la ou chaque électrode (14) pour la commander en stimulation et/ou en mesure, caractérisé en ce que l'unité de commande (12) comprend : - une horloge (44) de cadencement, - une mémoire (52) stockant des données de configuration définies pour permettre la configuration de la ou chaque électrode en correspondance d'identifiants, - une mémoire (54) stockant des données de programme décrivant un profil temporel en correspondance d'identifiants, - un exécuteur (48) activable en vue d'envoyer à la ou chaque électrode (14) des impulsions électriques correspondant à un programme donné selon une configuration d'électrode donnée, en fonction de l'horloge (44), - un séquenceur (46) agencé pour recevoir une pluralité ordonnée de couples comprenant chacun un identifiant de configuration d'électrode et un identifiant de programme, et pour activer sélectivement l'exécuteur (48) avec les couples de configuration d'électrode et de programme désignés par les couples d'identifiants reçus en entrée, en fonction de leur ordre et de l'horloge (44). 2. Dispositif selon la revendication 1, comprenant entre 1 et 6 électrodes, chaque électrode comprenant entre 1 et 12 pôles, dans lequel les données de configuration d'électrode décrivent un état d'activation des pôles de chaque électrode, leur polarité, et un ratio de courant. 3. Dispositif selon l'une des revendications précédentes, dans lequel les données de programme comprennent des données de signe, d'intensité, de durée, ainsi que des données de modulation associées une mémoire (54) pour stocker des données de valeur de modulation. 4. Dispositif selon l'une des revendications précédentes, comprenant un convertisseur analogique/numérique (42) et/ou un convertisseur numérique/analogique (42) relié à l'exécuteur (48). 25 5. Dispositif selon l'une des revendications précédentes, dans lequel l'horloge (44) a une fréquence de fonctionnement supérieure à 1 MHz. 6. Système de contrôle implantable dans un corps humain, comprenant un pilote (8) et au moins un dispositif (10) selon l'une des revendications précédentes reliés dans un réseau filaire de type bus, dans lequel le pilote (8) est agencé pour envoyer ladite pluralité de couple d'identifiants au séquenceur (46) dudit dispositif (10). 7. Système selon la revendication 6, dans lequel le pilote (8) comprend : - une horloge (72), - une mémoire (80) pour stocker des données de configuration définies pour permettre la configuration de la ou chaque électrode en correspondance d'identifiants, et des données de programme décrivant un profil temporel en correspondance d'identifiants, - une mémoire (76) pour stocker des données de contrôle désignant chacune au moins un dispositif (10), lesquelles données de contrôle comprennent une pluralité ordonnée de couples d'identifiants comprenant chacun un identifiant de configuration d'électrode et un identifiant de programme, - un contrôleur (74) agencé pour recevoir des requêtes de contrôle du corps humain, et pour envoyer sélectivement des données de contrôle correspondantes au dispositif (10) qu'elles désignent, en fonction de l'état de chaque dispositif (10). 8. Système selon la revendication 7, dans lequel la mémoire (78) stocke une file d'attente de requêtes de contrôle à exécuter et un état de chaque dispositif (10), et dans lequel, préalablement à l'envoi de données de contrôle dans la file d'attente, le contrôleur (74) effectue un contrôle de compatibilité avec l'état de chaque dispositif (10). 9. Système selon l'une des revendications 6 à 8, dans lequel l'horloge (72) du pilote (8) a une fréquence de fonctionnement supérieure à 12 MHz. 10. Système selon l'une des revendications 7 à 9, dans lequel l'horloge (72) du pilote (8) et l'horloge (44) de chaque dispositif (10) sont asynchrones. 11. Système selon l'une des revendications 7 à 10, dans lequel le contrôleur (74) est agencé pour envoyer des données de valeur de modulation à un ou plusieurs dispositifs.