Mise au point de systèmes mixtes et évaluation de puissance : Un exemple d’application Anne-Marie TRULLEMANS-ANCKAERT UCL-DICE, Place du Levant 3, B-1348 Louvain-la-Neuve, Belgium, [email protected], http://www.ucl.ac.be~anmarie Résumé Les outils VHDL-AMS sont particulièrement précieux dans les applications où l'interaction analogique/digital est critique, et où l'environnement a une influence sur la fiabilité du fonctionnement. Un lien transcutané, utilisé dans une prothèse visuelle, pour transmettre à la fois données et puissance, est présenté comme exemple, en limitant strictement le niveau de modélisation aux exigences de précision. La modélisation de puissance de sous-ensembles critiques aide à comprendre leur effet sur la consommation globale, et donc à optimiser la conception. Les résultats de simulation concordent avec les phénomènes observés sur le prototype expérimental. Un ensemble de données, testé et validé en transmission via le lien transcutané, a mis en évidence la récupération correcte des données, ainsi que les éventuels problèmes de synchronisation dus au couplage. Mots Clés: Conception de systèmes mixtes, consommation, bio-médical. 1. Introduction La mise au point et la validation de systèmes intégrés mixtes avant fabrication reste un problème critique, principalement dans les systèmes à basse consommation. Les outils VHDL-AMS apportent un espoir de solution, en particulier avec leurs possibilités d’écriture d’équations temporelles plus complexes, faisant intervenir les différents paramètres du système analysé. Ils seront particulièrement précieux dans les applications où l'interaction analogique/digital est critique, et où l'environnement a une influence sur la fiabilité du fonctionnement. La jeunesse relative de ces outils fait qu’ils ont été encore peu exploités dans des situations réalistes, et sans doute jamais dans des productions industrielles. Le concepteur de systèmes digitaux complexes dispose de divers outils efficaces, basés sur les normes Verilog ou VHDL : outils de simulation, de vérification et même de synthèse. Le point fort de cette approche est de permettre de naviguer dans la hiérarchie de systèmes complexes, depuis le niveau comportemental jusqu'au niveau des portes logiques, et cela spécifiquement pour chaque partie du circuit. Le niveau de précision et de détail s’adaptera à l’évolution de la conception, ou encore aux nécessités d’une analyse particulière. Le concepteur de circuits analogiques bénéficie quant à lui d’outils modernes dérivés de SPICE, dotés de commandes d'optimisation, d'analyse statistique, … (environnement ELDO par exemple). La validation des conceptions est faite au niveau du dispositif, à condition de disposer de modèles technologiquement sûrs, fournis par le fondeur. La simulation du système se base sur la résolution d’équations différentielles, déduites de modèles plus ou moins évolués des dispositifs physiques. L’utilisation efficace de ces outils demande une compétence pointue dans la mise au point de circuits analogiques. Le standard VHDL-AMS ajoute à la syntaxe VHDL la possibilité d’une modélisation par équations différentielles, donc continue dans le temps, et facilite la modélisation de systèmes mixtes, tout en gardant les qualités de modularité et de hiérarchie du langage original : définition de composant (entité), paramétrage (generic), architecture spécifique à un niveau de description .... L’intérêt recherché est la faculté de réduire la description des éléments non critiques à l’essentiel de leur comportement, tout en concentrant l’attention sur les composants critiques. Nous prendrons comme exemple l'étude d'un lien transcutané, dont la finalité est l'utilisation dans une prothèse visuelle, mais qui pourrait être étendu à d'autres applications. La mise au point de cette prothèse, menée dans le cadre d'un projet européen, sous la tutelle de membres de notre laboratoire, ne sera pas l'objet de cette communication. La fonction du lien est de transmettre à la fois données et puissance depuis un dispositif externe, porté par le déficient visuel, vers un dispositif implanté, qui ne comprend pas de source autonome de puissance. Il apparaît que le choix de la modulation des données pour le transfert a un impact direct sur la fiabilité de la communication, ainsi que sur l'efficacité en puissance de la transmission. En outre, le type de codes digitaux transmis, ainsi que le traitement dans la partie interne, influenceront sa consommation : consommation à réduire, ainsi que la dissipation interne, pour limiter l’augmentation locale de la température, à minimiser pour des raisons de sécurité médicale. Une première modélisation [1] de ce système a été présentée lors des journées FTFC'2001 à Paris, et analyse le lien à 3 Mbps dans le cas d'une réalisation basée sur un oscillateur classe E. Nous avons repris ici une simulation qui représente le lien transcutané correspondant au premier prototype implanté [2], basé sur un driver de classe DE, avec la modulation et la démodulation des données. Les différents modes de modélisation ont été choisis en fonction des phénomènes particuliers que l’on désirait mettre en évidence. Certaines parties sont ainsi modélisées en VHDL comportemental limité à la pure fonctionnalité, d’autres en VHDL structurel, d’autres encore par leurs équations temporelles, ou même simulées par de simples interrupteurs. Le langage VHDL-AMS, de par son instruction « break on », est d’ailleurs particulièrement bien adapté à des systèmes à modèles variables selon les conditions de fonctionnement. Les exigences de précision, et donc de temps de simulation, sont ainsi limitées aux éléments qui les requièrent. La version de simulateur VHDL-AMS utilisée dans les tests présentés ici est la version ADVance MS v1.4_1.2 de Mentor Graphics. 2. Présentation du système La prothèse visuelle MIVIP-OPTIVIP ([2], [3]) comprend principalement deux modules, un module externe et un module implanté, reliés par un lien transcutané formé d’un transformateur spécifique dont les enroulements sont placés de part et d’autre de la peau, et qui assure la transmission de la puissance nécessaire au processeur implanté et des données de commande des électrodes contrôlant le nerf optique. La transmission se fait prioritairement de l’extérieur vers l’intérieur, un retour étant prévu, actuellement sous un mode half-duplex. Le système externe est basé sur un processeur complexe qui lit et analyse l’image à faire reconnaître, et la traduit en une succession d’impulsions qui sont transmises au processeur implanté. Celui-ci décode les informations reçues et active les électrodes branchées sur le nerf optique, selon une séquence programmable. La transmission des informations obéit à un protocole complexe codé sur 64 bits, qui assure la synchronisation de la transmission et la programmation des sources d’activation des électrodes. Nous avons limité la modélisation aux éléments situés au voisinage du transformateur de couplage. Partant des données, encodées en mots de 64 bits, envoyées sans interruption en codage Manchester, nous analyserons le driver de ligne connecté au transformateur doublement accordé , suivi du décodage de l’information. Nous tâcherons d’identifier dans la modélisation les composants les plus critiques, tant pour le fonctionnement que pour la puissance dissipée. données à envoyer extérieur codage Manchester intérieur peau VCO driver classe DE transformateur à couplage variable récupération d’alimentation et démodulateur données reçues Fig. 1 Schéma-bloc du système de transmission transcutanée de la prothèse visuelle. La Figure 1 présente le schéma bloc de l’ensemble du système de transmission en sens direct. Chaque bloc sera décrit avec le niveau de précision requis pour mettre en évidence les phénomènes critiques de son comportement, dans le cadre de l’analyse recherchée. Le système complet analysé ici est structuré en plusieurs blocs principaux (figure 2), qui sont soit instanciés dans le code sous forme d’entités, soit directement décrits par des process ou des instructions simultanées ou concurrentes. 3. Modélisation et simulation des blocs de base Bloc 1 : Processeur externe et codage Manchester (entité MyControl) : Le processeur externe (processeur spécialisé) génère le message à transmettre, qui dépend du protocole de commande de la prothèse. Ce message est composé de trames de 64 bits, comprenant un header, qui détermine le type de trame, suivi d’informations spécifiques pour la programmation des différentes sources d’action sur le nerf (valeur et synchronisme temporel). Un type particulier de trame est la trame de synchronisation, qui assure la cohérence temporelle entre le processeur externe et le processeur implanté. Dans nos simulations, ce processeur sera remplacé par un ensemble de trames enregistrées, à envoyer en séquence, et sa modélisation en VHDL-AMS peut donc se satisfaire d’un simple stockage en chaîne de bits à transmettre*. L’information est traduite en code Manchester et émise par modulation de fréquence via un VCO, celui-ci étant simulé directement par la forme d’onde générée : entity ClockData is port(signal F0, FDel, Vin_a,Vin_b,Vpar_a,Vpar_b : out bit); end ClockData; architecture read_data of ClockData is -- definition des signaux et constantes signal F0Clock, FDClock : bit := '0'; ... constant F1 : real := 10.8e6; -- fmin constant TF1 : time := real2time(0.5/F1); constant F2 : real := 13.2e6; -- fmax constant TF2 : time := real2time(0.5/F2); constant TFD : time := real2time(1.0/F1 + 1.0/F2); constant Data_to_send : bit_vector := B" ..."; -- vecteur de données test à insérer ici signal Data_read : bit := '0'; signal DM : bit := '1'; -- data en code Manchester (6Mbits) begin ... Gen_FD: process (FDClock) if Active='1' then FDClock <= transport not FDClock after TFD; end if; end process Gen_FD; VCO: Process (FDClock) * On notera qu’il est dommage que la version actuelle d’ADVance MS ne permette ni lecture de fichiers, ni stockage en tableau de vecteurs. -- délais nécessaires au VCO(constantes) begin if FDClock'event and FDClock = '1' then Data_read <= Data_to_send(IData); if Data_to_send(IData)='0' then DM <= transport '1', '0' after a4; F0Clock <= transport '1', '0' after a1, '1' after a2, '0' after a3, '1' after a4, '0' after a5, '1' after a6, '0' after a7; else DM <= transport '0', '1' after b4; F0Clock <= transport '1', '0' ...; end if; if IData < Data_to_send'high then IData := IData + 1; else Active <= '0'; end if; end if; end process VCO; Les signaux de commande du driver classe DE sont déduits des signaux du VCO : F0clock Delclock DM Vpar_b Vin_a la génération des signaux de commande nécessaires pour activer les blocs critiques. Fig. 4 Signaux de commande du driver DE et du commutateur de capacité. Bloc 2 : Driver classe DE (entité TR_Driver) : La modulation d’un bit comprend 2 périodes à chacune des fréquences de base, 10,8 MHz (long = L) et 13,2MHz (short = S). Le bit ‘0’ (code Manchester ‘10’) sera codé « LLSS » et le bit ‘1’ (code Manchester ‘01’) par « SSLL ». L’action sur la ligne se fait par un driver de classe DE (figure 4), commuté via vin_a et vin_b à la fréquence produite par le VCO, décrit cidessus, et qui actionne directement le primaire du transformateur de liaison (figure 5). Vpar_a Vee F0clock driver DE PMOS Vin_b vin_b vout Fig. 3 Génération des signaux de contrôle du driver DE et du commutateur synchrone de capacité. Le signal DelClock est généré par décalage temporel du signal original F0Clock, et sert à composer les deux signaux de commande Vin-A et Vin-B qui assurent le fonctionnement du driver en mode DE : DelClock after Vin_a <= Vin_b <= <= transport F0clock DeadTime; -- delai de N portes F0clock and DelClock; F0clock or DelClock; Ce bloc génère également les signaux Vpar_a et Vpar_b qui contrôlent la commutation d’une capacité pour la modulation à deux fréquences (voir Bloc 3) : Latch: process (F0clock, DM) begin if F0clock='0' then Vpar_b <= not DM; else Vpar_a <= DM; end if; end process Latch; Un exemple de signaux générés est fourni à la figure 4. Dans les deux cas, la modélisation est une modélisation VHDL classique, proche du matériel, quoiqu’avec des délais comportementaux (instruction transport). Aucune modélisation de puissance n’est faite pour ces parties digitales, qui sont limitées à Lt vl CT2 vin_a NMOS Cpar Fig. 5 Driver de ligne de classe DE. Dans la modélisation, les transistors, qui sont des transistors MOS de commutation, peuvent être représentés par de simples interrupteurs, avec une résistance très faible en conduction (maximum 3Ω), tandis que les diodes source-substrat ne peuvent être ignorées : la commutation de la bobine crée en effet des impulsions importantes, qui mettent ces diodes en conduction. De même, les capacités des zones de source sont à prendre en compte (simulées par Cpar pour les 2 transistors). La modélisation est faite en VHDL-AMS : entity TR_driver is port(terminal Nee, NOUT: electrical; signal Vin_a,Vin_b : in bit); end TR_driver; architecture test of TR_driver is -- modele switch MOS (N et P) constant RSon : real := 2.0; -- resistance fuite diode bulk constant RDon : real := 26.0; -- PMOS et NMOS quantity VPMOS across IPMOS, IPpar through Nee to NOUT; quantity VNMOS across INMOS, INpar through NOUT to electrical_ground; begin if Vin_b = '0' use -- PMOS VPMOS == RSon * IPMOS; else IPMOS == 0.0; end use; break on Vin_b; if Vin_a = '1' use -- NMOS VNMOS == RSon * INMOS; else INMOS == 0.0; end use; break on Vin_a; -- diodes fuite if VPMOS'Above(-0.7) use IPpar == 0.0; else IPpar == (VPMOS + 0.7) / RDon; end use; if VNMOS'Above(-0.7) use INpar == 0.0; else INpar == (VNMOS + 0.7) / RDon; end use; end test; simulation donnée peut se calculer par simple intégration : quantity Vee across Ialim through Nee to electrical_ground; quantity Vcc across Icc through Ncc to electrical_ground; Vee == Valim_Vee; Vcc == Valim_Vcc; power_alim == - Vee * Ialim - Vcc * Icc; if domain=quiescent_domain use mean_power == 0.0; else mean_power == power_alim'integ / now; end use; La puissance consommée sera particulièrement sensible au delai introduit dans la commande des deux transistors interrupteurs du driver DE (entre F0Clock et DelClock). Cette puissance est manifestée par des pics de courant via les deux MOS de commutation. Des pics de courant via les diodes du commutateur de capacité (bloc 3) produisent également des accidents dans la consommation, mais correspondent à des puissances faibles (figure 7). Pour analyser le driver DE décrit ici, actionnant le transformateur couplé doublement accordé, avec la commutation synchrone de la capacité du primaire, on observe la tension vl entre l’inductance primaire et sa capacité, qui est bien sinusoïdale, en concordance avec la tension de sortie vout du driver (figure 6). Fig. 7 Pics de courant et puissance du driver classe DE. Fig. 6 Simulation du driver classe DE. La variation d’amplitude observée provient de la variation de facteur de qualité correspondant à la variation de fréquence des impulsions de commande. On notera également que le circuit secondaire est accordé à une fréquence unique. La modélisation reproduit fidèlement le comportement quand les deux transistors sont ouverts : le circuit résonnant étant isolé du driver, les capacités parasites induisent un début d’oscillation parasite à chaque commutation, phénomène observé expérimentalement. Le driver de classe DE est l’une des parties les plus gourmandes du système externe. Dans la modélisation adoptée, le calcul de sa consommation peut se déduire directement de la consommation sur les sources d’alimentation, dont la valeur moyenne pour une Bloc 3 : Transformateur de couplage doublement accordé avec commutation synchrone (entités transfoCT et CT_driver, et modélisation VHDLAMS des capacités) : Le système de transmission entre le module externe et le module implanté est un transformateur doublement accordé, dont l’élément transformateur est décrit par un modèle fonctionnel (Figure 8), qui met en évidence les inductances des deux enroulements (mesurables) et le facteur de couplage, qui sera variable en cours d’utilisation. Ces éléments suffiront pour l’analyse souhaitée, et sont traduits dans le code VHDL-AMS suivant : I2 I1 N1 N2 V1+ R1 R2 L1 V2+ L2 K Fig. 8 Modèle classique de transformateur. entity transfoCT is generic (L1 : real := 1.0e-6 R1 : real := 0.0; L2 : real := 1.0e-6; R2 : real := 0.0; K : real := 0.15); port (terminal P1, P0, S1, S0 : electrical); end transfoCT; library IEEE; use IEEE.math_real.all; architecture bhv of transfoCT is quantity M : real := K * sqrt(L1*L2); quantity V1 across I1 through P1 to P0; quantity V2 across I2 through S1 to S0; begin -- bhv M == K * sqrt(L1*L2); V1 == L1 * I1'dot + M * I2'dot + R1 * I1; V2 == M * I1'dot + L2 * I2'dot + R2 * I2; end bhv; Le facteur de couplage est un élément à modéliser de façon efficace et pratique : c’est lui qui variera en cours d’utilisation de la prothèse, et il faudra assurer un fonctionnement aussi peu dépendant que possible de ce couplage. Pour faciliter l’étude de son influence, le facteur M a été défini comme une quantity, ce qui en permet la variation en cours de simulation (voir plus loin l’étude du couplage). Les capacités d’accord sont elles directement écrites dans le système complet, par leurs equations différentielles, la capacité du primaire étant en fait commutée entre 2 valeurs, correspondant aux 2 fréquences de la modulation. Une première modulation à haut niveau en VHDL-AMS de cette commutation a déjà été présentée [1], sans tenir compte de l’implémentation sur circuit. Nous avons repris ici une simulation qui permet de vérifier que les signaux générés produisent bien l’effet voulu au bon moment. La commutation est ainsi contrôlée par les signaux Vpar_a et Vpar_b. Pour assurer une commutation au moment du passage par 0 de la tension aux bornes de la capacité, des diodes sont insérées en série avec les MOS de commutation, qui eux seront simplement simulés par des interrupteurs, en VHDL-AMS, alors que les diodes sont modélisées par leur équation fondamentale : entity CT_driver is port(terminal NCT, Ncc: electrical; signal Vpar_a,Vpar_b : in bit); end CT_driver; architecture test of CT_driver is constant IDS : real := 1.0e-15; constant VT : real := 0.026; -- ou kT/q/N quantity Vcc across Ncc to electrical_ground; quantity VCT across ID1, ID2 through NCT to Ncc; begin if Vpar_b = '0' use -- PMOS "on" ID2 == -IDS * (exp(-VCT/VT) - 1.0); if Vpar_a = '1' use -- NMOS "on" ID1 == IDS * (exp(VCT/VT) - 1.0); else ID1 == 0.0; end use; else -- PMOS "off" ID2 == 0.0; if Vpar_a = '1' use -- NMOS "on" ID1 == IDS * (exp(VCT/VT) - 1.0); else ID1 == 0.0; end use; end use; break on Vpar_b, Vpar_a; end test; Les différentes capacities sont alors directement décrites, au niveau de l’interconnexion des entités, par la definition des quantity et de leurs equations différentielles : quantity Vout across ICpar through Nout to electrical_ground; -- Cpar quantity VCT1 across ICT1 through Nl to NCT1; -- CT1 quantity Vl across ICT2 through Nl to electrical_ground; -- CT2 quantity VCs across ICs through NT2 to NS0; -- capa secondaire ICT2 == CT2 * Vl'dot; ICT1 == CT1 * VCT1'dot; ICpar == Cpar * Vout'dot; ICs == Cs * Vcs'dot; Un point particulièrement critique dans la mise au point du système, et qui a un impact direct sur la puissance consommée, est la synchronisation des signaux de commande du driver DE, et du commutateur de capacité. Une désynchronisation se manifestera par des pics de conduction des diodes de substrat, ou par une non cohérence des mises en conduction des diodes et interrupteurs du commutateur. La figure 9 montre le cas d’un système bien synchrone. On y observe les courants des deux diodes du commutateur, qui s’enclenchent correctement pour assurer la mise en fonction de la seconde capacité lors des phases '1' du signal Manchester. Fig. 9 Commutation de capacité en synchronisme avec la modification de fréquence. Bloc 4 : Ecrêtage et récupération d’alimentation : Le signal reçu au secondaire du transformateur (partie implantée de la prothèse) sert à la fois à l’alimentation de la partie interne, et à la récupération des données. Il sera donc utilisé pour charger une capacité de balast interne, et sera mis en forme pour son décodage. Une modélisation simple de ces fonctions (conformément à [2]) est représentée à la figure 10, qui est modélisée par un code VHDL-AMS de ces composants. quantity Vcc_int across Icc_int, Izener through Ncc_int to electrical_ground; quantity VS0 across Idec1 through NS0 to electrical_ground; quantity Vdec2 across Idec2 through NS0 to NCC_int; quantity Vd1 across ID1 through NT2 to Ncc_int; quantity Vrf across ID2 through NT2 to electrical_ground; ID1 == IDS * (exp(Vd1/VT) - 1.0); ID2 == -IDS * (exp(-Vrf/VT) - 1.0); Idec1 == Cdec * VS0'dot + VS0 * Gdec; Idec2 == Cdec * Vdec2'dot + Vdec2 * Gdec; if domain=quiescent_domain use Vcc_int == Vint_start; else Icc_int == Cint * Vcc_int'dot; end use; Vdecode == Vcc_int/2.0; if Vcc_int'Above (Vzener) use Izener == (Vcc_int-Vzener)/Rzener; else Izener == 0.0; end use; NT2 Fig. 11b Mesure des signaux d’entrée (Vl) et de sortie du lien inductif (Vrf), d’après [2]. La charge de la capacité de balast se fait en permanence, avec limitation à une tension maximale (diode zener). Le signal reçu se stabilise naturellement autour de la valeur moyenne de la tension interne (Vcc_int). On observe les pics de courant de charge à la figure 12. Vrf Cs transfoCT S2 Vint Fig. 10 Schéma de principe de l’écrêteur et du balast d’alimentation. La simulation donne un résultat très similaire à l’observation sur le prototype en test (figures 11a et 11b). Fig. 11a Simulation du signal d’entrée du transfo (vl) et du signal écrêté (Vrf) . Fig. 12 Charge de la capacité de balast interne. Bloc 5 : Démodulateur Manchester et décodage des informations (process decodeM et decodeData) : La récupération des données au secondaire se fait en 2 étapes : la détection du signal VCO, image du code Manchester, suivie du décodage du bit de données. Le signal Vrf mis en forme par l’écrêteur se stabilise avec une valeur moyenne qui est la moitié de la tension interne d’alimentation. Cette valeur sert de seuil pour la récupération d’un signal digital dont les temps des différentes phases sont en principe l’image du signal VCO émis. La détection du signal VCO est modélisée par un process VHDL-AMS, qui simule un détecteur à hystérèse. Ceci permet de mettre en évidence l’adaptation du seuil en fonction de la récupération d’alimentation, ainsi que les limitations dues au seuil du comparateur : decodeM: process begin wait on Vrf'Above(-offset_comp); if Vrf < -offset_comp then dec_dataM <= '1'; end if; wait on Vrf'Above(offset_comp); if Vrf > offset_comp then dec_dataM <= '0'; end if; end process; Ce process decodeM transforme le signal électrique en un signal logique, dont les moments de commutation permettent de décoder le signal logique d’origine. Dans la pratique, ce décodage sera réalisé par la charge de capacités sous courant constant durant les différentes périodes du signal, et la comparaison des tensions finales obtenues. Pour la simulation, nous avons représenté cette partie par la mesure directe des intervalles de temps des différentes transitions montantes de dec_dataM (VHDL classique) : decodeData: process (dec_dataM) variable Tini, Tdel1, Tdel2 : time := 0ns; variable phase : integer := Init_phase; begin if dec_dataM'event and dec_dataM='1' then if phase=0 then Tini := now; else if Tini > 0ns then if phase=2 then Tdel1 := now - Tini; end if; if phase=4 then Tdel2 := now - (Tini + Tdel1); Tini := now; if Tdel2>Tdel1 then dec_data <= '1'; else dec_data <= '0'; end if; end if; else if phase=4 then Tini := now; end if; end if; end if; if phase=4 then phase := 1; else phase := phase + 1; end if; end if; end process; Un point particulier de cette détection est la recherche d’un synchronisme correct entre le signal émis et le signal reçu : la transmission d’un bit de données correspond effectivement à 2 fois 2 périodes du signal VCO (variable phase dans la simulation). Une partie importante de la programmation du processeur interne consiste à retrouver ce synchronisme, sur base de trames particulières. Pour permettre un ajustement en cours de simulation, la phase de démarrage est assignée à la valeur de la constante init_phase, ajustable dans l’environnement de simulation. Dans des analyses futures, on peut ainsi envisager de simuler la mise en route de cette synchronisation. Une simulation du décodage sur un ensemble de test correspond assez bien à une réception mesurée sur le prototype, les signaux de la simulation étant bien sûr ici modélisés comme des signaux logiques classiques : figures 13a et 13b. données à 3Mbits provenant du processeur données démodulées dans l’implant Fig. 13a Mesure de données émises et démodulées sur le prototype (extrait de [2]). Fig. 13b Simulation de données transmises. 4. Simulation globale du transfert de données Un résultat de simulation de l’ensemble de la chaîne de transmission tel que décrit ici, et qui correspond au premier prototype implanté [2], est présentée à la figure 14. Une trame test complète a été testée et validée en transmission : on y observe la récupération correcte des données. Il faut noter que cela suppose que l’on démarre avec une bonne synchronisation des horloges interne et externe : ceci est assuré par l’envoi de trames de synchronisation, ainsi que d’une procédure de récupération qui permet de localiser le démarrage correct de l’information. En cas de perte de synchronisation, un NACK est renvoyé depuis le processeur interne, qui provoquera un nouvel envoi de trames de synchro. Le délai temporel entre les données entrées et les données décodées est dû à la procédure de décodage, qui demande la fin du premier bit complet avant d’en connaître la valeur. En pratique, on peut observer plusieurs modes de synchronisation, selon la phase adoptée comme départ, et qui peuvent être reproduits par simulation. Le test présenté ici a été fait avec une valeur moyenne du couplage (K = 0.15), ainsi qu’un offset du comparateur de valeur très confortable (100 mV). On observe les variations de l’amplitude de tension vl à l’entrée du transformateur, qui sont normales. L’écrêtage à la sortie permet le décodage d’un signal stable. 5. Variations du couplage L’ensemble de la modélisation avait pour but l’analyse de l’effet d’une perte de couplage – ou du moins de sa variation – en cours d’utilisation. Cette simulation a été faite, sur un ensemble particulier de données, pour des valeurs extrêmes de ce couplage, dans les conditions d’utilisation pratique (figure 15). On observe que, même lorsque le couplage diminue, le système de modulation reste robuste : le défaut de transmission n’est mis en évidence qu’au moment exact de la modification de couplage, depuis un couplage minimal (0.05) vers un couplage maximum (0.25), tous deux en dehors des valeurs normales, et pour un seuil de comparateur élevé (100 mV, au lieu des 10mV réalisables sur le prototype). Après restauration du couplage, la transmission se rétablit correctement. 6. Fig. 16a Forme des signaux du driver DE (vout), et du transformateur accordé (vl et vrf) pour deadtime = 20ns. Modélisation de puissance Diverses parties ont été modélisées pour analyser la dissipation de puissance. Le but premier était la caractérisation des blocs les plus critiques, et la dépendance de la consommation de ces blocs vis-à-vis des options de la conception, ou des paramètres physiques : parasites des composants, qualité du couplage et sa variabilité, choix d’un codage des données, … Le bloc le plus critique dans le système externe est le driver DE, dont la consommation est directement dépendante du délai imposé entre les commutations des deux transistors. Différentes valeurs de ce délai ont été testées, et montrent à titre indicatif cette influence : Délai deadtime (ns) 2 10 15 20 Consommation moyenne (W) 0.72 0.67 0.599 0.517 Table 1 Consommation moyenne du driver DE pour différents délais de commande (temps total = 3µs) On observe évidemment une réduction de puissance à délai croissant. Les signaux produits sont perturbés au niveau du driver DE lui-même, mais le filtrage du transformateur doublement accordé restaure la qualité du signal transmis (figure 16a). Le test fait sur une durée de 10µs, dans un cas particulier de données, assure une transmission correcte, avec un consommation moyenne de 0.538W (figure 16b). On observe sur ce test l’influence des données sur les pics de consommation. Il restera à vérifier l’efficacité en puissance de cette transmission. Fig. 16b Test de transmission sous délai de 20ns du driver DE. Temps total = 10µs. 7. Conclusions Dans le cadre de la mise au point d’un système de transmission par lien inductif transcutané, nous avons développé des modèles synthétiques des différents blocs essentiels du système complet, et nous avons comparé leur comportement aux mesures et tests faits sur le prototype. Il s’agit bien sûr d’une tentative incomplète, quoique très prometteuse. Ainsi, il a été possible de simuler une trame complète de données en transmission, et de mettre en évidence les problèmes dus à la variation de couplage du lien, qui sont naturels dans l’utilisation courante de la prothèse. Pour cela, on notera que les facilités d’interaction durant la simulation, dans l’environnement VHDL-AMS de Mentor Graphics sont très pratiques : il est très facile d’interrompre la simulation, de modifier certains paramètres et de redémarrer, cela durant une même lecture de trame. Nous n’avons pas ici mentionné de temps de simulation : les différentes compilations ont été effectuées volontairement avec désactivation de l’optimisation des contsantes, cela justement afin de permettre leur variation, privilégiant l’interaction concepteur-simulateur, et non la performance. On notera toutefois que toutes ces simulations ont été réalisées sur station SUN, et qu’une simulation de Cette méthodologie d’approche du problème concentre l’attention du concepteur sur les points essentiels, et permet une analyse rapide à haut niveau de nouvelles techniques de conception du système. Le développement de la prochaine version du système, à partir des résultats de cette étude, en sera grandement facilitée. trame complète n’a jamais dépassé 30 minutes en multi-utilisateurs. La modélisation a été strictement réduite à l’essentiel, tout en gardant une excellente cohérence avec les résultats mesurés sur le prototype expérimental (couplage, décodage, phase de synchronisation, points critiques de consommation …). On notera à cette occasion que les éléments les plus déterminants dans la modélisation sont souvent des éléments négligés, ou du moins peu considérés dans une analyse même exhaustive : les diodes normalement bloquées de la source ou du drain vers le substrat, les capacités parasites … Les possibilités étendues du langage VHDL-AMS, avec différentielles ou intégrales, ont également permis une modélisation de puissance, instantanée ou cumulée, et nous permettront donc de modéliser le comportement en puissance des parties de circuit critiques dans ce système, sans alourdir outre mesure l’ensemble de la simulation. Des études ultérieures devraient permettre prochaimenent d’étendre l’analyse de puissance également aux parties moins gourmandes, mais comportant des transitions importantes de consommation, telles les parties digitales. Cette approche sera également exploitée pour la mise au point de futurs prototypes de la partie implantée de cette prothèse, et particulièrement des circuits générateurs de stimuli (sources commandées multiples), du retour de mesure (backchannel), ainsi que de versions maître-esclave du système interne. Remerciements Nous tenons ici à remercier la société Neurotech S.A., qui a mis au point le prototype servant d’exemple dans cette étude. Bibliographie [1] R. Perdriau, A-M Trullemans, M. Ramdani , « Modélisation VHDL-AMS haut niveau d'un système de transmission de puissance et de données par lien inductif », FTFC'2001, Paris, 30-31 mai, 1er juin 2001, pp. 145-154. [2] P. Doguet, « Conception d'un stimulateur intégré pour prothèse visuelle », PhD Thesis, UCLLouvain-la-Neuve, septembre 2000. [3] http://www.dice.ucl.ac.be/optivip. + Nee Vin_a Vin_b MyControl : lecture données et VCO NT2 Nout TR_driver : driver DE FO FDel Vin_a Vin_b Vpar_a Vpar_b transfoCT N1 CT1 Cs S2 CT2 masse externe écrétage et récupération d’alimentation Vdc masse interne Vrf decodeM : process NCT1 Ncc CT_driver : Vpar_a Vpar_b commutation capa + - dec_dataM decodeData : process (dec_dataM) Fig. 2 Description des entités en process de modélisation : les blocs hachurés sont représentés par un modèle VHDL-AMS. Fig. 14 Simulation du lien inductif en sens direct pour une transmission avec trame de test. K = 0.15 couplage normal K = 0.05 couplage sous minimal K = 0.25 couplage excessif erreur de transmission Fig. 15 Variations dynamiques du couplage.