Materiale della lezione - Dipartimento di Informatica

Elettronica – Introduzione a SPICE
Valentino Liberali
Dipartimento di Fisica
Università degli Studi di Milano
[email protected]
Elettronica – Introduzione a SPICE – 14 aprile 2011
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
1 / 30
Elettronica – Introduzione a SPICE – 14 aprile 2011
2 / 30
Contenuto
1
Simulazione di circuiti elettronici
2
SPICE
3
Analisi nodale
4
Analisi nodale modificata
Valentino Liberali (UniMI)
1
Progettazione di circuiti elettronici
Fino a qualche decina di anni fa, i circuiti erano “semplici” e venivano progettati
risolvendo manualmente le equazioni e realizzando prototipi su scheda con
componenti discreti (“bread-board”).
Attualmente, questo approccio è impossibile, perché
il numero di componenti elettronici è elevato
le prestazioni dipendono dalle dimensioni di ciascun componente
i componenti e le interconnessioni hanno un comportamento non ideale di cui
bisogna tenere conto
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
3 / 30
Simulazione di circuiti elettronici
Si effettua una simulazione al calcolatore
per verificare il progetto prima di realizzarlo
per ottimizzare i parametri di progetto
per stimare gli effetti dovuti alle variazioni dei parametri e agli elementi
parassiti
Programmi per la simulazione circuitale:
SPICE: Simulation Program with Integrated Circuit Emphasis (University of
California at Berkeley)
ASTAP: Advanced STatistical Analysis Program (IBM)
Spectre (Cadence Design Systems)
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
2
4 / 30
SPICE
SPICE =
= Simulation Program with Integrated Circuit Emphasis
Versione originale: University of California at Berkeley
Linguaggio originale: FORTRAN (schede perforate)
Formato originale di ingresso e uscita: solo testo (e solo caratteri maiuscoli)
Nelle versioni successive: linguaggio C; interfacce grafiche di ingresso e uscita
Numerose versioni commerciali e proprietarie
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
5 / 30
SPICE (Berkeley)
SPICE è disponibile presso la University of California at Berkeley
Il codice sorgente per UNIX (Linux, Solaris, etc.) è scaricabile da
http://embedded.eecs.berkeley.edu/pubs/downloads/spice/
L’ultima versione è Spice3f5:
file spice3f5.tar.gz (1.2 MB)
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
3
6 / 30
PSpice (1/2)
PSpice = SPICE per PC Windows
Prodotto dalla MicroSim, acquistata dalla Orcad, che a sua volta è stata
acquistata dalla Cadence
Esiste una versione “demo” aggiornata e completa di tutorial, compresa nel
pacchetto Orcad 16.3 (in tutto 720 MB), scaricabile dal sito:
http://www.cadence.com/products/orcad/pages/downloads.aspx
Alcune versioni “demo” precedenti (8.0 e 9.1) sono scaricabili da:
www.dti.unimi.it/liberali/spice/spice.html
Il prodotto da installare è: PSpice A/D con editor Schematics
La versione “demo” di PSpice ha tutte le funzionalità, ma ha questi limiti:
una pagina A4 per il disegno dello schema
non più di 64 nodi nel circuito
al massimo 50 componenti, di cui 10 transistori
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
7 / 30
PSpice (2/2)
Il circuito può essere disegnato tramite un’interfaccia grafica, selezionando i
componenti e disegnando le interconnessioni.
Dallo schema circuitale viene estratta una “netlist”, cioè una descrizione in forma
di listato in cui ogni ad ogni nodo e ad ogni elemento è associato un identificatore
unico.
Il circuito deve sempre contenere un nodo di riferimento:
0
(GND = GrouND), denotato con il simbolo circuitale
e indicato con il numero 0; tutte le tensioni vengono riferite a questo nodo.
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
4
8 / 30
Elementi circuitali in SPICE (1/2)
I tipi di elementi circuitali sono identificati da SPICE tramite l’iniziale del nome.
Componenti passivi:
R Resistore
C Condensatore
L Induttore
K Mutua induttanza
T Linea di trasmissione
Generatori (indipendenti e dipendenti):
V Generatore di tensione
I Generatore di corrente
E Voltage-controlled voltage source
F Current-controlled current source
G Voltage-controlled current source
H Current-controlled voltage source
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
9 / 30
Elementi circuitali in SPICE (2/2)
Dispositivi a semiconduttore:
D Diodo a giunzione
Q Transistore bipolare a giunzione (BJT)
J Transistore a effetto di campo a giunzione (JFET)
M Transistore a effetto di campo MOS (MOSFET)
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
5
10 / 30
Netlist SPICE (1/3)
La netlist è una descrizione del circuito in formato testo; contiene le stesse
informazioni dello schema circuitale.
Netlist e schema sono due rappresentazioni di tipo strutturale: descrivono un
circuito attraverso i componenti e le loro interconnessioni.
Nella descrizione netlist ad ogni nodo del circuito corrisponde un numero; il
numero 0 è riservato al nodo di terra (GND) che deve essere sempre presente.
Non è necessario che i nodi siano nell’ordine 1, 2, 3, . . .
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
11 / 30
Netlist SPICE (2/3)
Per resistenze,
Rxxxxxxx n+
Cxxxxxxx n+
Lxxxxxxx n+
Vxxxxxxx n+
Ixxxxxxx n+
capacità, induttanze e generatori indipendenti, il formato è:
n- valore
n- valore
n- valore
n- valore
n- valore
I nomi devono avere non più di 8 caratteri; SPICE non distingue tra maiuscole e
minuscole (Spectre invece sı̀!).
I nodi + e – vanno sempre considerati secondo la convenzione degli utilizzatori.
I valori devono essere espressi nelle unità di misura del sistema internazionale:
R in ohm, C in farad, L in henry, V in volt, I in ampere.
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
6
12 / 30
Netlist SPICE (3/3)
Per i generatori controllati in tensione, il formato è:
Exxxxxxx n+ n- nc+ nc- valore
Gxxxxxxx n+ n- nc+ nc- valore
Per i generatori controllati in corrente, il formato è:
Fxxxxxxx n+ n- Vmeasure valore
Hxxxxxxx n+ n- Vmeasure valore
dove Vmeasure è il nome di un generatore di tensione nulla (cortocircuito) in cui
passa la corrente di ingresso del generatore controllato.
SPICE calcola le tensioni in tutti i nodi (riferite al nodo 0), e le correnti in tutti i
generatori di tensione. Per ottenere le correnti negli altri rami, bisogna inserire un
generatore di tensione “fasullo”.
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
13 / 30
Tipi di analisi in SPICE
SPICE può effettuare questi tipi di analisi:
.OP
.DC
.AC
.TRAN
.TF
.FOUR
.DISTO
.NOISE
Punto di lavoro (operating point)
Caratteristica di trasferimento ingresso-uscita (in continua)
Analisi in frequenza
Risposta nel dominio del tempo (transient)
Funzione di trasferimento
Analisi di Fourier
Distorsione armonica
Analisi di rumore (noise)
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
7
14 / 30
Esempio di netlist SPICE (1/3)
V0 = 9 V, R1 = 100 Ω, R2 = 3.9 kΩ, R3 = 250 Ω, F = 10.
Calcolare VAB .
R2
R3
F
+
Ii
V0
A
Io
VAB
R1
B
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
15 / 30
Esempio di netlist SPICE (2/3)
1
R3
R2
2
9
F
+
V0
Ii
A
Io
VAB
3
R1
B
0
La corrente Ii viene letta attraverso un generatore di tensione nulla.
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
8
16 / 30
Esempio di netlist SPICE (3/3)
CIRCUITO DI PROVA PER SPICE
* LA PRIMA RIGA E` SEMPRE IL TITOLO
* I COMMENTI COMINCIANO CON UN ASTERISCO
V0 1 0 9V
R1 3 0 100
R2 1 9 3.9K
R3 1 2 250
* VSENS SERVE PER LEGGERE LA CORRENTE
VSENS 9 3 0
F 2 3 VSENS 10
* PUNTO DI LAVORO (OPERATING POINT)
.OP
* L’ULTIMA RIGA E` SEMPRE ‘‘.END’’
.END
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
17 / 30
Analisi nodale
La soluzione del circuito si trova risolvendo un sistema di equazioni ottenute
applicando le leggi di Kirchhoff (KCL e KVL) e usando la caratteristica V-I di
ciascun elemento circuitale.
SPICE usa il metodo detto ANALISI NODALE MODIFICATA
(MNA = Modified Nodal Analysis).
Il sistema di equazioni che descrive il circuito è costituito da:
KCL applicata a tutti i nodi, tranne il nodo 0
KVL applicata alle maglie contenenti i generatori di tensione
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
9
18 / 30
Calcolo del punto di lavoro in SPICE
Nel caso più generale, la KCL ad un nodo si può scrivere:
i(v (t)) +
d
q(v (t)) + u(t) = 0
dt
dove
i(v (t)): corrente nei bipoli resistivi (se il bipolo è lineare, i = Gv )
d
dt q(v (t)):
corrente nei bipoli capacitivi
u(t): segnali di ingresso (generatori di corrente)
In continua, l’equazione si riduce a: i(vDC ) + uDC = 0
la cui soluzione è il punto di lavoro del circuito.
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
19 / 30
Esempio 1: Analisi nodale (1/6)
IY
RC
RB
RD
RA
IX
Ricaviamo la soluzione del circuito in forma matriciale.
Siccome non ci sono generatori di tensione, basta scrivere la KCL per tutti i nodi
tranne uno (il nodo di riferimento).
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
10
20 / 30
Esempio 1: Analisi nodale (2/6)
Si sceglie un nodo come nodo di riferimento (GND), e si numerano
progressivamente tutti i nodi: 0 (= GND), 1, 2, . . .
IY
1
3
RB
RC
2
RA
RD
IX
0
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
21 / 30
Esempio 1: Analisi nodale (3/6)
IY
1
3
RB
2
RA
RC
RD
IX
0
Per ogni nodo, tranne il nodo 0, si scrive la KCL:

1
1
1 : IX + IY −
 °
RA (V1 − 0) − RB (V1 − V2 ) = 0
1
1
2 :
°
RB (V1 − V2 ) − RC (V2 − V3 ) − IY = 0

1
1
3 :
°
RC (V2 − V3 ) − RD (V3 − 0) = 0
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
11
22 / 30
Esempio 1: Analisi nodale (4/6)

1
1
 IX + IY − RA (V1 − 0) − RB (V1 − V2 ) = 0
1
1
(V1 − V2 ) − RC (V2 − V3 ) − IY = 0
 R1B
1
RC (V2 − V3 ) − RD (V3 − 0) = 0
 ³
´
1
1

+

RB ³ V1 −

 RA
− R1B V1 + R1B +

³



− R1C V2 + R1C +
1
V2
RB ´
= IX + IY
1
RC ´ V2
1
RD
−
1
RC V3
= −IY
V3 = 0
Sistema di equazioni in forma matriciale:
 ³
´
1
1
− R1B
+
0
RB
 RA
³
´

1
1
− R1B
− R1C

RB + RC
³
´

1
1
+
0
− R1C
RC
RD
Valentino Liberali (UniMI)


 

IX + IY
V1

 
 · V2  =  −IY 

0
V3
Elettronica – Introduzione a SPICE – 14 aprile 2011
23 / 30
Esempio 1: Analisi nodale (5/6)
 ³




1
RA
+
1
RB
− R1B
´
0
³
− R1B
1
RB
+
1
RC
− R1C
´
0
³
− R1C
1
RC
+
1
RD


 

IX + IY
V1

 
 · V2  =  −IY 
´ 
0
V3
G·V =I
G è la matrice delle conduttanze (coefficienti):
ciascun elemento sulla diagonale principale Gjj è la somma delle conduttanze
incidenti nel nodo j; gli altri elementi Gjk sono le conduttanze tra le coppie di nodi
(j, k) prese con il segno negativo; la matrice G è simmetrica.
V è il vettore delle tensioni ai nodi (incognite).
I è il vettore delle correnti dei generatori in ciascun nodo (termini noti): la
corrente è positiva se entra nel nodo.
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
12
24 / 30
Esempio 1: Analisi nodale (6/6)
IY
1
3
RB
2
RA
RC
RD
IX
0
Da G · V = I, moltiplicando a sinistra per G−1 , si ha la soluzione:
V = G−1 · I
che esiste se la matrice G è invertibile.
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
25 / 30
Analisi nodale modificata (1/5)
IY
RB
RA
RC
+
VZ
IX
Se nel circuito sono presenti anche generatori di tensione, occorre scrivere ANCHE
l’equazione della differenza di tensione tra i nodi ai capi di ciascun generatore di
tensione.
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
13
26 / 30
Analisi nodale modificata (2/5)
IY
1
2
RB
RA
+
RC
VZ
IX
0

1
1
1 : IX + IY −
 °
RA (V1 − 0) − RB (V1 − V2 ) = 0
1
1
2 : −IY − IVZ +
°
RB (V1 − V2 ) − RC (V2 − 0) = 0

VZ :
V2 − 0 = VZ
°
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
27 / 30
Analisi nodale modificata (3/5)

1
1
 IX + IY − RA (V1 − 0) − RB (V1 − V2 ) = 0
−IY − IVZ + R1B (V1 − V2 ) − R1C (V2 − 0) = 0

V2 − 0 = VZ
 ³



 ³
´
1
1

+

RB ³ V1 −
 RA
− R1B V1 + R1B +



V2 = VZ
1
RA
+
1
RB
− R1B
0
´
³
− R1B
1
RB
+ R1C
+1
´
1
V2
RB ´
1
RC
= IX + IY
V2 + IVZ = −IY


 

IX + IY
V1

 
 =  −IY 
+1  · V2
VZ
IVZ
0
0
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
14
28 / 30
Analisi nodale modificata (4/5)
 ³
´
1
1
+
RB
 RA


− R1B


 ············

0

..
. 0  

³
´ .

.. +1 
1
1
+
·
RB
RC
 
············ · ··· 

..
. 0
+1
− R1B
 
V1
IX + IY

V2 
−IY
=


···
·········
IVZ
VZ




G·V =I
Gli elementi della matrice G non sono omogenei tra loro (ci sono anche numeri), e
cosı̀ pure gli elementi dei vettori V e I non sono omogenei tra loro (entrambi
contengono sia tensioni sia correnti).
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
29 / 30
Analisi nodale modificata (5/5)
IY
1
2
RB
RA
RC
+
VZ
IX
0
Anche in questo caso, la soluzione è:
V = G−1 · I
Valentino Liberali (UniMI)
Elettronica – Introduzione a SPICE – 14 aprile 2011
15
30 / 30