Simulazione dei circuiti

annuncio pubblicitario
Simulazione:
Analisi di un fenomeno, di un processo o di un sistema effettuata attraverso la costruzione di un modello
matematico che lo simuli, sviluppato in genere mediante un elaboratore elettronico; (def. Garzanti)
in particolare: Simulazione
simbolica:
Simulazione di un sistema all’interno del quale tutti o alcuni dei parametri che lo caratterizzano vengano
lasciati in formato “simbolico”, e vengano quindi inseriti nel risultato in forma letterale piuttosto che
numerica.
Electronic circuit simulation:
use of the mathematical models to replicate the behavior of an actual electronic device or circuit.
Why using a simulator?
Simulating a circuit’s behavior before actually building it greatly improves efficiency and
provides insights into the behavior of electronics circuit designs.
(Defs. Wikipedia)
Classificazione dei simulatori elettrici/elettronici e principali prodotti
Simulatori analogici (numerici):
Simulatori digitali:
- PSpice (Cadence OrCAD) (decine k€)
- LTSpice (Linear Semiconductor) free
- CircuitLogix (Logic Design Inc.) free
- PLECS (Simulink toolbox) 5000/1000 €
- gEDA Project (Linux) free
- TOPSpice (Penzar Dev.) 500 $
- Verilog (Cadence, proprietaria fino al 1990)
- VHDL
- PSpice A/D
Simulatori analogici (simbolici):
Simulatori di uso generico:
SAPWIN (Università di Firenze) free
-SNAP
SAPWIN
(Università
di Firenze)
(IMEL
FEEC BUT,
Brnofree
) free
-ISAAC
SNAP (IMEL
FEECKat.
BUT,Univ.
Brno Leuven)
) free
(obsolete,
- ISAAC (obsolete, Kat. Univ. Leuven)
ANALOG INSYDES (Mathematica toolbox)
- ANALOG INSYDES (Mathematica toolbox)
5000/1000 € - no free version
5000/1000 € (full/academic) - no free version
Symbolic Math Toolboxdi MATLAB (General
purpose) (200 € + 500 € Matlab lic.)
- Symbolic Math Toolbox di MATLAB
(200 € + 500 € Matlab lic.)
- Simulink per MATLAB
(500 € + 500 € Matlab lic.)
- Mathematica
- Maple
Simulazione numerica e SPICE – breve storia
SPICE nasce negli USA (Università di Berkeley) nel 1972 e presentato per la prima volta nel 1973.
Il suo programmatore è Laurence Nagel sotto la guida del Prof. Donald Peterson;
Il programma prende origine dal primo simulatore circuitale ad uso civile, CANCER, già
sviluppato da Nagel nel 1969-70. Differenze fondamentali rispetto a CANCER sono il codice di
pubblico dominio e i modelli per JFET e MOSFET;
SPICE1 è scritto interamente in FORTRAN, così come SPICE2 (prima versione del 1975, ultima
versione del 1983);
Nel 1989 vede la luce SPICE3, completamente riscritto in C;
Dal 1984 comincia lo sfruttamento commerciale dei simulatori su base SPICE, con PSPICE
(Microsim, poi OrCAD-Cadence), HSPICE (Synopsis), XSPICE (Georgia Tech) et al.;
Molte aziende di produzione elettronica/IC sviluppano simulatori basati su SPICE: ADICE
(Analog Devices), LTspice (Linear Technology), Mica (Freescale Semiconductor), TISPICE (Texas
Instruments).
SPICE – Algoritmo risolutivo
Tipi di analisi consentita:
Analisi DC (comando .DC)
Analisi nel
.TRANS)
tempo
(comando
Analisi AC (comando .AC)
Si possono identificare nell’intero diagramma
a blocchi vari sottoblocchi:
--- Fase di analisi nodale del circuito, blocchi 3 - 4
--- Ciclo interno, blocchi 2 – 6, ricerca della
soluzione per circuiti non lineari
--- Ciclo esterno, blocchi 7 – 10, ricerca della
soluzione per circuiti non lineari
SPICE – Analisi DC
Circuiti lineari: è il caso più semplice, i blocchi che lo
riguardano sono in sostanza solo il 3 e il 4; il circuito
diviene completamente resistivo poiché
Circuiti non-lineari: in questo caso occorre linearizzare
i componenti non lineari nell’intorno del punto di lavoro
in continua (blocchi 1 - 6), e innescare un processo
iterativo (algoritmo di Newton-Raphson), come
descritto nella pagina successiva.
SPICE – Componenti non lineari
Esempio diodo:
 Vd VT

− 1
I d = I o  e


La linearizzazione richiede di considerare la retta tangente alla curva caratteristica del
dispositivo, nel punto di lavoro
G eq =
dI d
dVd
=
do
Vdo
Io
e
VT
VT
kT
;
I 0 ≅ 10 −15 A
−
e
k = cost. di Boltzmann;
V T=
e - ≅ carica dell' elettrone
e di sostituire quindi alla caratteristica stessa la retta di pendenza Geq:
Ieq = Ido − Geq·Vdo
A questo punto risolvo il set di equazioni lineari e trovo una soluzione che è valida in un punto di lavoro Vdo che è stato
inizialmente scelto a caso e che mi fornisce un nuovo valore di tensione (e di corrente) da adottare come punto di lavoro
per il passo successivo del procedimento iterativo, che continuerà finché |Vk+1 – Vk| < ε
SPICE – Componenti non lineari
Esempio diodo all’interno di un circuito:
Si parte da un valore di V2 arbitrario, e si determina il
circuito linearizzato del diodo
SMSMI#80#170#1#6
R#150#110#1#2
R2
1
R1
Is
R#250#90#1#4
D#300#110#1#2
W#80#190#1#80#170
SMSMI#80#170#1#6
R#150#110#1#2
D1
W#80#190#1#80#170
R2
1
2
R#250#90#1#4
R1
2
Geq
Is
D1
Si determinano le eq. Di nodo
del circuito:
(G1 + G2 )V1 − G2V2 = I s
− G2V1 + (G2 + Geq )V2 = − I eq
W#150#190#1#150#170
Ieq
SPICE – Componenti non lineari
Risolvo quindi rispetto a V1 e V2:
V2 =
V1 =
G2 I s − (G1 + G2 ) I eq
G1G2 + Geq (G1 + G2 )
G2 I s − (G1 + G2 ) I eq 
1 

I s + G2

G1 + G2 
G1G2 + Geq (G1 + G2 ) 
e uso questi valori come punto di lavoro per il passo successivo del procedimento iterativo (determinando i nuovi valori
del modello linearizzato), che continuerà finché |Vk+1 – Vk| < ε.
SPICE usa una definizione della tolleranza piuttosto articolata, per cui il procedimento si arresta quando:
|Vk+1 – Vk| < VLIMIT = RELTOL ⋅ Vk + VNTOL
|Ik+1 – Ik| < ILIMIT = RELTOL ⋅ Ik + ABSTOL
SPICE – Analisi nel tempo (TRANS)
Circuiti lineari: i blocchi 2 e 5 sono ignorati; dopo
aver determinato il punto di lavoro iniziale
(utilizzando le C.I. dei condensatori e degli induttori)
i vari elementi con memoria sono trasformati nei
modelli alle differenze finite, come descritto nella
pagina successiva.
Circuiti non-lineari: i blocchi 2 e 5 sono
nuovamente inseriti, i componenti non lineari sono
linearizzati come visto prima nell’intorno del punto
di lavoro in continua (blocchi 1 - 6), e viene innescato
il processo iterativo.
SPICE – componenti con memoria
Esempio condensatore:
SPICE genera il modello approssimato della derivata presente nella rel. costitutiva prendendo la
differenza fra due valori su una curva funzione del tempo e dividendola per l’intervallo di tempo
sotteso.
dx ( n )
x ( n + 1) = x ( n ) + ∆ T ⋅
dt
∆ T = t ( n + 1) − t ( n )
SPICE – componenti con memoria
dx(n + 1)
x(n + 1) = x(n) + ∆T ⋅
dt
∆T = t (n + 1) − t (n)
Nel caso del condensatore quindi:
dv
dv(n + 1)
⇒ i (n + 1) = C
dt
dt
dv(n + 1) 1
= i (n + 1)
dt
C
i=C
v(n + 1) = v(n) +
C
C
i ( n + 1) =
v(n + 1) −
v ( n)
∆T
∆T
∆T
i (n + 1)
C
SPICE – componenti con memoria
Combinando i due metodi di Eulero (FE + BE) è possibile dedurre un terzo metodo più raffinato, quello dei trapezi
dx(n)
x(n + 1) = x(n) + ∆T ⋅
dt
∆T = t (n + 1) − t (n)
∆T
x(n + 1) = x(n) +
2
x(n + 1) = x(n) + ∆T ⋅
∆T = t (n + 1) − t (n)
 dx(n + 1) dx(n) 
⋅
+
dt 
 dt
dx(n + 1)
dt
SPICE – componenti con memoria
x(n + 1) = x(n) +
Nel caso del condensatore quindi:
dv
dv( n + 1)
⇒ i (n + 1) = C
dt
dt
dv(n + 1) 1
= i (n + 1)
dt
C
dv(n) 1
= i ( n)
dt
C
i=C
v(n + 1) = v(n) +
i (n + 1) =
∆T
[i(n + 1) + i(n)]
2C
2C
2C
v(n + 1) − i (n) −
v ( n)
∆T
∆T
∆T
2
 dx(n + 1) dx(n) 
⋅
+
dt 
 dt
SPICE – Analisi AC
L’analisi in frequenza del circuito in esame si scompone in due
fasi:
Fase 1 Viene svolto il ciclo non lineare (1 - 6) per determinare il
punto di lavoro DC (come spiegato prima). Questa fase ignora I
condensatori, gli induttori e gli elementi con memoria (in grado di
immagazzinare energia).
Fase 2 Riguarda I blocchi 3 e 4 del diagramma, leggermente
modificati, nel senso che la matrice dei nodi viene costruita
usando le ammettenze complesse dei bipoli (lineari e/o
linearizzati) presenti nel sistema. I componenti non lineari
vengono sostituiti con I modelli equivalenti a piccoli segnali
nell’intorno del punto di lavoro calcolato prima (non viene però
innescato alcun processo iterativo). Le alimentazioni (power
supply) esterne vengono annullate, le sorgenti di segnale sono
fissate di valore unitario. I blocchi 3 e 4 vengono ripetuti per tutti I
valori di frequenza richiesti.
Simulazione simbolica
Definizione:
È una tecnica formale per determinare la relazione
ingresso/uscita di un circuito, in modo tale che:
– la variabile indipendente (frequenza o tempo)
– le variabili dipendenti (tensioni o correnti)
– gli elementi del circuito (tutti o alcuni)
siano rappresentati da simboli (letterali)
Freq.
1.00000e+000
1.02329e+000
1.04713e+000
1.07152e+000
1.09648e+000
1.12202e+000
1.14815e+000
1.17490e+000
1.20226e+000
1.23027e+000
1.25893e+000
1.28825e+000
1.31826e+000
1.34896e+000
1.38038e+000
V(n004)
(8.21463e+000dB,-1.48641e+000°)
(8.21463e+000dB,-1.52103e+000°)
(8.21463e+000dB,-1.55646e+000°)
(8.21463e+000dB,-1.59272e+000°)
(8.21463e+000dB,-1.62982e+000°)
(8.21463e+000dB,-1.66778e+000°)
(8.21463e+000dB,-1.70663e+000°)
(8.21463e+000dB,-1.74638e+000°)
(8.21463e+000dB,-1.78706e+000°)
(8.21463e+000dB,-1.82869e+000°)
(8.21463e+000dB,-1.87129e+000°)
(8.21463e+000dB,-1.91488e+000°)
(8.21463e+000dB,-1.95948e+000°)
(8.21463e+000dB,-2.00513e+000°)
(8.21463e+000dB,-2.05184e+000°)
Simulazione simbolica e SAPWIN – breve storia
I primi programmi di analisi simbolica risalgono alla fine degli anni ’70. Erano in grado di
analizzare circuiti di dimensioni molto limitate (una decina di nodi al più);
Negli anni ’90 si è verificato un notevole ritorno di interesse per i programmi di analisi simbolica;
Sono stati sviluppati e distribuiti numerosi programmi: SAPEC, SYNAP, SCYMBAL, ISAAC,
SNAP, SSPICE, SCAPP, GASCAP, ASAP;
Alla fine degli anni ’80 viene realizzato dal DET il programma SAPEC (Symbolic Analysis
Program for Electric Circuits) che prevede anche una semplice interfaccia grafica. È scritto in
LISP per DOS e l’algoritmo centrale usa un metodo di permutazione ricorsiva;
All’inizio degli anni ’90 si passa al C e al C++. Vengono realizzati un programma per DOS che
prevede l’uso dell’analisi simbolica per la simulazione di circuiti di dimensioni limitate contenenti
componenti non lineari e quindi SAPWIN 1.0 per Windows 3.1; L’algoritmo di simulazione
adottato si basa ora su un metodo ricorsivo di Laplace di espansione per la determinazione del
determinante della matrice MNA associata al sistema, in combinazione con il metodo di Cramer
per il calcolo della risposta;
Dopo una versione 2.0 rimasta alla release alfa, viene scritta in C++ la versione 3.0 del
programma per Windows 2000 e superiori, che fa uso del metodo dei due grafi;
È disponibile anche una versione open source del programma scritta in modo nativo per Linux.
Simulazione simbolica, dove aiuta di più?
La tendenza attuale è integrare su un
unico chip sistemi completi per
applicazioni specifiche, sia nella parte
analogica che in quella digitale.
Ma, mentre per la parte digitale
l’automazione è pressoché completa, per la
parte analogica il progetto viene svolto, in
gran parte, in modo pressoché manuale, e
richiede una notevole esperienza da parte
del progettista
Algoritmi per l’analisi simbolica
Metodi Algebrici
Metodi Topologici
• Formulazione delle equazioni della rete
(MNA, CMNA, Tableau, …)
• Le f.d.r. sono ottenute tramite tecniche di
manipolazione simbolica delle espressioni
algebriche applicate a queste equazioni
dette anche di “Espansione simbolica di
determinanti”:
– Nonzero Permutation,
– Sparse Laplace expansion,
–…
• Rappresentazione del circuito mediante
grafi con pesi di ramo simbolici
• Le f.d.r. sono ottenute tramite operazioni
sui grafi:
– Tree enumeration:
Directed T.E.
Undirected T.E.
– Signal Flowgraph
Mason Signal Flowgraph
The Coates Graph
– ………
SAPWIN – Algoritmo risolutivo
La versione 3.0 di SAPWIN usa un metodo di enumerazione degli alberi su due grafi (Two Graph Tree
Enumeration).
Il metodo è, in prima istanza, applicabile a circuiti di tipo RCgm, costituito cioè da soli componenti con
rappresentazione di tipo ammettenza e transconduttanze (VCT)
Vengono innanzi tutto costruiti due grafi, quello delle correnti GI e quello delle tensioni Gv;
I componenti bipolari generano la presenza, su entrambi i grafi, di un ramo tra gli stessi due nodi.
La transconduttanza (gm) produce, nel grafo Gv, un ramo tra i nodi di controllo e, nel grafo GI, un ramo tra i
nodi controllati.
In entrambi i grafi il peso del ramo è il valore della transconduttanza.
Esempio:
SAPWIN – Algoritmo risolutivo
Il determinante della matrice delle ammettenze
viene poi calcolato nel seguente modo:
Dato un grafo orientato costituito da N nodi e R
rami la matrice incidenza A è una matrice (N-1) x R
il cui generico elemento aij è dato da:
aij
=
+1 se il ramo j esce dal nodo i
-1 se il ramo j entra nel nodo i
0 se il ramo j non interessa il nodo i
 +1 +1 0 0 
A=

 0 −1 1 1 
È un metodo “cancellation free”!
SAPWIN – Algoritmo risolutivo
Per il calcolo del numeratore si consideri un circuito con n nodi, l’eccitazione collocata fra i nodi 1
e 0 e l’uscita fra i nodi 2 e 0:
Le funzioni di rete del circuito possono infine essere
scritte come:
SAPWIN – Estensioni del metodo
Estensione a componenti con rappresentazione
impedenza (NON ammettenza):
dà origine al termine jω
ωL2G1G3
Estensione a circuiti contenenti componenti di
tipo nullori e generatori controllati non di tipo
transconduttanza:
Nei quattro casi non-gm sussiste il problema del diverso
numero di nodi e di rami nei due grafi
SAPWIN – Estensioni del metodo
Nullore:
Nullatore
Noratore
i 2 nodi collassano in Gv
i 2 nodi collassano in GI
Modifica:
I 2 nodi restano distinti, nei due grafi, ma il ramo corrispondente deve far parte dell’albero.
L’algoritmo di ricerca degli alberi comuni parte forzando la presenza sull’albero dei rami nullatore per
Gv e dei rami noratore per GI.
dà origine al termine GinG2
dà origine al termine G1G2
SAPWIN – Estensioni del metodo
I generatori controllati (non transconduttanza) vengono sostituiti da circuiti equivalenti realizzati
con nullori:
Approssimazione delle espressioni simboliche
Le espressioni di uscita dei simulatori simbolici presentano un’oggettiva difficoltà di gestione e/o
interpretazione non appena le dimensioni del circuito in esame aumentano in modo significativo. Per
questa ragione è opportuno avere a disposizione dei metodi aggiuntivi che siano in grado di
“semplificarle”, almeno nella regione di interesse. Questi metodi sono chiamati di “approssimazione e
possono essere classificati come:
Approssimazione dopo la generazione: l’algoritmo è applicato dopo che l’espressione completa della f.d.r. è
stata generata.
Approssimazione durante la generazione: l’approssimazione è applicata insieme all’algoritmo di generazione
delle espressioni simboliche.
Approssimazione prima della generazione: la semplificazione è applicata a livello di circuito, operando sul
grafo o sulla formulazione matriciale. Quest’ultima è sempre applicata insieme ad una delle altre due tecniche.
Approssimazione delle espressioni simboliche
Il massimo errore, nella formula semplificata, deve essere prefissabile dall’utente.
L’errore può essere quello della risposta in ampiezza, della risposta in fase, di poli e zeri, o dei
coefficienti della f.d.r.
L’errore deve essere valutato su un intervallo di frequenze, sugli estremi dell’intervallo, o su un valore
particolare della frequenza.
Approssimazione durante la generazione
La generazione della f.d.r. simbolica è preceduta dal calcolo numerico (per esempio risolvendo il
sistema MNA) dei valori del numeratore e del denominatore della f.d.r. alle frequenze prefissate (valori
numerici esatti di riferimento).
L’algoritmo Two-Graph tree enumeration viene modificato in modo tale da generare i vari termini in
ordine decrescente di ampiezza.
La generazione dei termini, per numeratore e denominatore, viene interrotta non appena i valori della
f.d.r. simbolica alle Frequenze prefissate sono affetti da un errore inferiore a quello stabilito.
In caso di approssimazione dei coefficienti della f.d.r., la generazione della f.d.r. simbolica è preceduta
dal calcolo numerico dei valori dei coefficienti del numeratore e del denominatore della f.d.r., mediante
la tecnica di interpolazione polinomiale sul cerchio di raggio unitario (valori esatti di riferimento per i
coefficienti).
Esempio della valutazione della stabilità
SMSMR#170#100#1#0O#170#140#1#0#0R#90#140#1#0g#80#230#1#0W#170#140#1#150
R2
R1
Si consideri il caso di un semplice amplificatore invertente con operazionale:
La simulazione numerica, anche con un modello reale dell’AO, non consente
di valutare correttamente la stabilità.
Vin
La simulazione simbolica consente di farlo, con una AO a singolo polo del tipo:
ΣΜ ΣΜϑ#130#110#1#2Ρ#200#110#1#2Χ#260#110#1#2Υ#330#110#1#2Ω#330#170#1#130#170Ω#60#110#1#80#110Ω#60#170#1#80#170
+
Vin
_
- 1⋅Vin
1Ω
+
VC
100 mF
+
Vo
106⋅VC
≡
V out
Simulazione simbolica e numerica (confronto)
Numerico
1. Consente di simulare circuiti di dimensioni
molto elevate;
2. Non può gestire maglie di gen. tensione o tagli
di gen. corrente. Non può neppure gestire
maglie o tagli degeneri;
3. Non fornisce in modo diretto alcuna
informazione sulla stabilità;
4. Non consente alcuna post-elaborazione
“analitica” del risultato ottenuto;
5. Consente la simulazione di circuiti non lineari;
6. Le aziende che producono dispositivi
elettronici e circuiti integrati predispongono le
librerie dei modelli SPICE degli stessi;
Simbolico
1. All’aumentare delle dimensioni del circuito le
espressioni di uscita perdono leggibilità;
2. Non può gestire maglie di gen. tensione o tagli
di gen. corrente. PUÒ gestire maglie o tagli
degeneri!
3. Fornisce informazioni sulla stabilità;
4. Consente di rielaborare in modo analitico il
risultato ottenuto (studio della sensibilità, della
stabilità, dello jacobiano, inversione dei
parametri circuitali, design centering);
5. La simulazione dei circuiti non lineari non è
immediata, talvolta esistono modelli utilmente
applicabili,
talvolta
è
sostanzialmente
inapplicabile;
6. Non esistono librerie di modelli, ma l’approccio
al concetto di “modello” è diverso;
Scarica