ppt

publicité
Mise au point de systèmes mixtes
et évaluation de puissance :
Un exemple d’application
Anne-Marie TRULLEMANSANCKAERT
FTFC’03
UCL-DICE, Place du Levant 3, B-1348
Louvain-la-Neuve, Belgium,
[email protected],
http://www.ucl.ac.be~anmarie
points de l’exposé



introduction
présentation de l’application
modélisation et simulation des éléments
fondamentaux
–

simulations globales
–

système de couplage, génération et émission, récupération
et décodage
transfert de données, variations du couplage, modélisation
de puissance
conclusions
introduction

outils de simulation de systèmes complexes :
–
simulation digitale : VHDL et Verilog

–
simulation analogique : Spice, Eldo ...

–

hiérarchie et modularité, du comportemental aux portes
logiques
dispositifs physiques, précision ...
simulation mixte : VHDL-AMS ?
un système comme exemple :
–
la prothèse visuelle
OPTIVIP IST-2000-25145
Prof. Charles Trullemans
http://www.dice.ucl.ac.be/optivip/
la prothèse visuelle MIVIP-OPTIVIP
Aim of the project :
optimization of an
implantable visual
prosthesis based on the
stimulation of the optic
nerve and its
demonstration within a
pre-clinical study
transformateur
à couplage
variable
processeur
interne
processeur
externe
les composants de la transmission
schéma-bloc du
système
peau
données à
envoyer
codage
Manchester
récupération
d’alimentation
et
démodulateur
VCO
extérieur
driver classe
DE
intérieur
transformateur
à couplage
variable
données
reçues
transmission de puissance (alim) et de données
I1
N1 N2
extérieur
V1+
lien inductif
I2
R2
L2
R1
L1
V2+
intérieur
K
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;
VHDL-AMS
transformateur à
couplage variable
(faible) : 0.2 à 0.12
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;
données : codage Manchester et
modulation FSK
• 2 fréquences autour de 12 MHz
• 2 cycles pour chaque fréquence
• transformateur doublement
accordé
10.8 MHz et
13.2 MHz
• génération par un VCO
• modification de l’accord
primaire pour chaque
fréquence
• pas de modification au
secondaire
les données
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Synchro
0
1
S
0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Setup
S
0
0
1
0
0
0
0
0
1
0
0
1
0
1
0
1
Data
S
Gap
S
40
41
42
43
44
45
46
47
0
0
0
0
0
0
1
48
49
50
51
52
53
54
55
56
57
58
59
60
R
Header
val_meas : sélection de la mesure de tension de sortie des sources ou de tension d'alimentation
Parité
Gap (10 bits)
Synchro8 : mode de stimulation (directe ou synchrone)
ack_act : activation d'accusé de réception en retour
maes_act : activation mesure de tension de sortie des sources et de tension d'alimentation
rec_amp_setup : amplitude pulse de récupération
timeout_act : activation du système de timeout
timeout : valeur du timeout
Commandes pour 4 sources de courant
R
Sélection des mesures à renvoyer par backchannel
S
Master/Slave
multichip : fonctionnement multichip
reserved : réservé au mode test
Sélection sources de courant paires ou impaires
• différents types de trames :
• synchro
• setup
• données
• ...
• codage en vecteurs de 64
bits
• transmission continue
61
62
63
processeur externe et codage
Manchester
entity ClockData is
port(signal F0, FDel,
Vin_a,Vin_b,Vpar_a,Vpar_b : out bit);
end ClockData;
lecture des données :
pas de possibilités
actuellement de
lecture en fichier ...
VHDL
comportemental
MyControl :
lecture
données et
VCO
FO
FDel
Vin_a
Vin_b
Vpar_a
Vpar_b
constant Data_to_send : bit_vector :=
B"010001111011111110111 ... 11000000";
-- stocké en vecteur de bits
if FDClock'event and FDClock = '1' then
Data_read <= Data_to_send(IData);
if IData < Data_to_send'high then
IData := IData + 1;
else ...
fréquences et formes d’onde du VCO
constant F1 : real := 10.8e6; -- fmin
constant TF1 : time := real2time(0.5/F1); -- largeur pulse L
constant F2 : real := 13.2e6; -- fmax
constant TF2 : time := real2time(0.5/F2); -- largeur pulse S
constant TFD : time := real2time(1.0/F1 + 1.0/F2);
-- pulse lecture data
horloge de lecture
des données
formes d’onde
selon données
Gen_FD: process (FDClock)
if Active='1' then
FDClock <= transport not FDClock
after TFD; end if;
end process Gen_FD;
...
VHDL
comportemental
fréquences
f1 et f2
VCO: Process (FDClock)
begin
...
if Data_to_send(IData)='0' then
DM <= transport '1', '0' after a4;
F0Clock <= transport ‘1’, ‘0’ after ...
else
DM <= transport '0', '1' after b4;
F0Clock <= transport '1', '0' after ...;
end if;
...
end process VCO;
génération des signaux de contrôle
synchronisés
commande du driver DE
F0clock
commande du commutateur de
capacités
Delclock
DM
Vpar_b
VHDL
Vpar_a
Vin_a
Vin_b
DelClock <= transport F0clock after DeadTime;
Vin_a <= F0clock and DelClock;
Vin_b <= F0clock or DelClock;
F0clock
Latch: process (F0clock, DM)
begin
if F0clock='0' then Vpar_b <= not DM;
else Vpar_a <= DM;
end if;
end process Latch;
les signaux générés
lecture des données
commande du driver
commutation capa
circuit d’émission : driver classe DE
Vee
driver DE
PMOS
vin_b
vout Lt
vl
CT2
vin_a
NMOS
Cpar
commutation de la bobine
du primaire par signaux
vin_a et vin_b du VCO
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
...
begin
if Vin_b = '0' use -- PMOS
VPMOS == RSon * IPMOS;
else
IPMOS == 0.0;
end use;
break on Vin_b;
...
if VPMOS'Above(-0.7) use
IPpar == 0.0;
else
IPpar == (VPMOS + 0.7) / RDon;
end use;
...
end test;
VHDL-AMS
vout
VL
simulation du driver :
tensions sur l’inductance
pics de courant et
puissance dans le driver
commutateur de capacité
NT2
Nout
Cs
transfoCT
N1
CT1
S2
commuter la capacité CT1
quand la tension à ses
bornes est nulle
CT2
masse
externe
NCT1
Ncc
CT_driver :
Vpar_a
Vpar_b
commutation
capa
+
-
proche de la réalité
implémentée
VHDL-AMS
entity CT_driver is
port(terminal NCT, Ncc: electrical;
signal Vpar_a,Vpar_b : in bit);
end CT_driver;
...
if Vpar_b = '0' use -- PMOS "on"
ID2 == -IDS * (exp(-VCT/VT) - 1.0);
if Vpar_a = '1' use -- NMOS "on"
...
end use;
else
-- PMOS "off"
...
end use;
break on Vpar_b, Vpar_a;
quantity Vout across ICpar through Nout
to electrical_ground; -- Cpar
quantity ...
...
ICT2 == CT2 * Vl'dot;
ICT1 == CT1 * VCT1'dot;
ICpar == Cpar * Vout'dot;
ICs == Cs * Vcs'dot;
commutation de
la capacité d’accord
la capacité
s’enclenche quand
dm = 1
système interne
récupération
d’alimentation sur
capacité de balast, et
écrêtage du signal
écrêtage et récupération d’alimentation
NT2
Vrf
Cs
Vl
transfoCT
S2
Vint
VHDL-AMS
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;
signal transmis
Vl
simulation
Vl
Vrf
vin
mesure
Vrf
charge de la capacité
de balast
démodulation du code Manchester
réalisation par
intégration de courant
durant
les 2 premiers
cycles
les 2 cycles suivants
mesure expérimentale
données à
3Mbits
provenant du
processeur
délai de
décodage
données
démodulées
dans l’implant
VHDL
comportemental
simulation par comparaison de délais
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;
...
Tdel1
Tdel2
if phase=4 then
Tdel2 := now - (Tini + Tdel1);
Tini := now;
...
if Tdel2>Tdel1 then
dec_data <= '1';
else
dec_data <= '0';
end if;
...
simulation du décodage
délai de
décodage
le système complet
+
Nee
Vin_b
Cs
TR_driver :
driver DE
FO
MyControl :
lecture
données et
VCO
NT2
Nout
Vin_a
transfoCT
N1
CT1
S2
CT2
FDel
Vin_a
masse
externe
Vin_b
NCT1
Vpar_a
Ncc
Vpar_b
CT_driver :
Vpar_a
Vpar_b
commutation
capa
+
-
écrétage et
récupération
d’alimentation
Vdc
Vrf
masse
interne
decodeM :
process
dec_dataM
decodeData :
process (dec_dataM)
simulation globale du
transfert de données
variations du couplage
K = 0.15
couplage normal
K = 0.25
K = 0.05
couplage sous minimal
couplage excessif
erreur de transmission
modélisation de puissance
Vee
influence du délai dans la
commande du driver DE
PMOS
vin_b
vout Lt vl
CT2
Délai deadtime
(ns)
Consommation
moyenne
(W)
2
0.72
f0clock
10
0.67
delclock
15
0.599
20
0.517
vin_a
NMOS
Cpar
deadtime
Vin_a
Vin_b
NMOS « on »
PMOS « on »
optimal ?
test de transmission
deadtime = 20 ns
détail des signaux
gate i
CL
01
puissance digitale
procedure add_dig_pwr (N: real; -- coefficient de charge
signal dig_pwr, mean_dig_pwr: inout real) is
constant CL: real := 0.1e-12; -- capa unitaire de charge de porte logique
constant Vdd: real := 5.0; -- alim digitale et swing de tension
variable v_dig_pwr : real := 0.0;
begin
v_dig_pwr := dig_pwr + N * CL * Vdd * Vdd;
dig_pwr <= v_dig_pwr;
mean_dig_pwr <= v_dig_pwr / now;
end procedure add_dig_pwr;
Power = i
Vdd2 f
VHDL
comportemental
½
if F0clock'event and F0clock='1' then
add_dig_pwr (4.0, dig_pwr, mean_dig_pwr); end if;
Ci Acti
sommation sur quelques signaux de
commande
à suivre ...
conclusions


approche rudimentaire et partielle mais ...
intérêt d’outils mixtes de haut niveau en cours de
mise au point
–
–
–

modélisation comportementale
stimuli complexes
environnement interactif
modélisation de puissance
–
–
analogique : facilités du langage
digital : événementiel
... à suivre !
Téléchargement