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