Introduzione al simulatore circuitale SPICE Corso di Circuiti Elettronici Analogici L-A Introduzione al simulatore circuitale SPICE Andrea Cappelli Bologna, 27 Gennaio 2005
E-mail: acappelli@deis.unibo.it Contatti Andrea Cappelli ARCES viale Pepoli 3/2 Telefono: 051 20 93828 E-mail: acappelli@deis.unibo.it
Il Simulatore SPICE Text Editor .out Text Editor Parser & Solver .sch .cir Graphic Interface .dat Schematic Editor .lib Simulation Program with Integrated Circuit Emphasis Sviluppato a Berkeley negli anni 60
Struttura della Netlist * Titolo della netlist . <caricamento librerie e definizione modelli> <istanziamento componenti> <comandi di simulazione> <istruzioni di post-simulazione>
Regole sintattiche La prima riga del file .cir è riservata al titolo e non viene interpretata SPICE è case insensitive Per continuare a capo una linea comando basta cominciare la seconda riga con “+” Il carattere “*” commenta un’intera linea Il carattere “;” commenta la restante parte della linea
La Netlist E’ un elenco di dispositivi opportunamente connessi Ad ogni nodo è associato un identificativo (“0” è riservato per il nodo di massa) Ogni dispositivo è caratterizzato da: Nome Connettività (nodi a cui è connesso) Modello di riferimento Elenco dei parametri (es. il valore della resistenza)
Componenti Lineari Passivi R<Nome> <n+> <n-> [Modello] <Valore> C<Nome> <n+> <n-> [Model] <Valore> [IC=<V0>] L<Nome> <n+> <n-> [Model] <Valore> [IC=<I0>] La prima lettera del nome identifica il tipo di componente n+ ed n- sono i nodi a cui i componenti sono collegati Il modello è opzionale, in caso di omissione si considerano componenti ideali Il campo IC permette di specificare il valore iniziale di tensione (condensatori) o corrente (induttori) per le analisi in transitorio.
Resistori R<Nome> <n+> <n-> [Modello] <Valore> Modello: se assente viene considerato un resistore ideale (lineare senza effetti reattivi: V=RI) Valore: specifica il valore della resistenza n+ I V n-
Condensatori C<Nome> <n+> <n-> [Model] <Valore> [IC = <V0>] IC: Permette di specificare lo stato iniziale (tensione) del condensatore. Se il modello non è specificato si assume il condensatore come ideale: n+ V I n-
Induttori L<Nome> <n+> <n-> [Model] <Valore> [IC = <I0>] IC: Permette di specificare lo stato iniziale (corrente) dell’ induttore. Se il modello non è specificato si assume l’induttore come ideale: n+ I V n-
Generatori Indipendenti (I) V<Nome> <n+> <n-> DC <Valore> + [AC [<ampiezza>[fase]]] + [Stimolo Transitorio] I<Nome> <n+> <n-> DC <Valore> n+ I V n-
Generatori Indipendenti (II) Il campo AC identifica il generatore come input per analisi AC Lo stimolo transitorio specifica la forma d’onda relativa a questo generatore, per le analisi in transitorio
Esempio: analisi DC *Primo Esempio: *Un partitore resistivo VIN 1 0 DC 6 *Resistenza tra 1 e 2: R1 1 2 100 Resistenza tra 2 e massa: R2 2 0 50 *Analisi DC del circuito .OP .END R1 1 2 R2 VIN
Stimoli Transitori (I) Si usa lo stimolo PULSE per generare forme d’onda periodiche: PULSE (<V1> <V2> <Td> <Tr> <Tf> <PW> <PER>) V2 V1 Td Tr PW Tf PER
Stimoli Transitori (II) SIN (<Voffset> <Vamp> <FREQ> <Td> <DF> <FASE>) V=Voffset+Vamp*sin{2π*[freq*(t–Td)+FASE/360])*exp[-(t-Td)/DF]
Stimoli Transitori (III) Per generare una forma d’onda arbitraria si usa lo stimolo PULSE: PWL (t0,V0) (t1,V1) (t2,V2) … (tn,Vn) Ad ogni coppia corrisponde un punto I punti vengono interpolati tramite rette L’ultimo valore di tensione viene mantenuto fino alla fine della simulazione V1 V2 Vn V0 t0 t1 t2 tn
Comandi di simulazione: .OP Valuta il Punto di Riposo piu’ vicino allo stato iniziale del circuito Non vengono prodotte forme d’onda ma sul file .OUT di uscita del simulatore vengono riportati tutti i valori di tensioni e correnti nel punto di riposo Trova soltanto un punto di riposo La ricerca e’ di tipo iterativo e non e’ detto che il punto di riposo venga trovato.
Comandi di simulazione: .AC .AC <tipo> <n punti> <f iniziale> <f finale> Tipo: indica il tipo di sweep Lineare (LIN),Logaritmico per ottave(OCT), Logaritmico per decadi(DEC) Noi useremo esclusivamente sweep per decadi Efettua L’analisi ai piccoli segnali linearizzando il circuito attorno al punto di riposo piu’ vicino (effettua una analisi di .op preliminare) Gli ingressi sono considerati tutti i generatori indipendenti con l’indicazione AC Risolve il sistema calcolando le grandezze complesse (parte immaginaria e reale) Non effettua analisi sul comportamento globale (ai grandi segnali) del circuito
Comandi di simulazione: .DC .DC <tipo> <nome var> <valore iniziale> <valore finale>+ <valore incremento> Permette di ricavare la caratteristica statica ingresso/uscita del circuito Calcola i punti di riposo al variare del valore di un generatore, di tensione o di corrente, esplicitato da <nome var>
Comandi di simulazione: .TRAN .TRAN <T step> <T stop> [<T start> [<T max>]] Permette di Valutare il comportamento del circuito nel dominio dei tempi. La simulazione parte sempre da t = 0 Specificare <T start> fa si che vengano salvati soltanto I valori da t = Tstart in poi, riducendo le dimensioni dei file di uscita <T max> e’ il massimo valore dello step temporale usato per la simulazione, e quindi per la risoluzione dell equazioni differenziali Il comando .IC puo’ essere usato per specificare la condizione iniziale del circuito: .IC <V(<n_nodo>[,<n_nodo>]) = val>|<I(ramo) = val>
Altri comandi: .MODEL .MODEL <Model Name> <Type> (<Valori dei parametri>) .MODEL si usa per settare un set di parametri da utilizzare per dispositivi complessi (Diodi, Transistori…) Model Name si usa per fare riferimento ad uno specifico modello Type specifica il tipo di modello da usare I parametri variano da modello a modello
Altri comandi: .SUBCKT .SUBCKT <Nome> <Nodes> [PARAMS: <Parametro = Default Value>>] … .ENDS Permette di definire sottocircuiti riutilizzabili più volte come i componenti predefiniti I nodi esplicitati nell’intestazione e all’interno del corpo hanno carattere locale (tranne 0) Ogni nome ha carattere locale I sottocircuiti possono essere istanziati come componenti generici: X<Nome Ist.> <Nodes> <Nome Sub.> [<Valore Parametri>]
Sottocircuito: Amplificatore Operazionale .SUBCKT OPAMP INP INN OUT PARAMS: VUMP=10 VUMN=-10 + AD=400K E1 OUT 0 VALUE={MAX(MIN(AD*V(INP,INN),VUMP),VUMN)} .ENDS VP-VN VOUT … XAMP 1 0 2 OPAMP PARAMS: AD=200K
Altri comandi: .PROBE .PROBE [<<var>.>] Permette di salvare il valore di correnti e tensioni del circuito Senza argomenti salva tutto Nel caso di simulazioni di circuiti complessi specificando esclusivamente i valori di tensione e di corrente voluti si puo’ ridurre l’ammontare dei dati da salvare, velocizzando la simulazione e riducendo le dimensioni dei file di uscita
Comandi Vari .TEMP <valore> Permette di settare il valore della temperatura di simulazione .OPTION [<nome opzione>][<n_opzione><valore>] Permette di settare tutta una serie di opzioni che possono andare da le caratteristiche di simulazione a quelle di output .PARAM [<nome opzione>][<n_opzione><valore>] Permette di definire dei parametri a dare loro un valore I parametri possono essere utilizzati all’interno delle varie parti componenti la netlist .STEP LIN <nome_variable> <start> <end> <increment> Permette analisi parametriche variando opportunamente un parametro del circuito
Secondo Esempio: circuito RC Analisi del transitorio di carica VOUT *Carica RC V1 1 0 PULSE 0 5 R1 1 VOUT 6k C1 VOUT 0 10n .TRAN 5n 400u .PROBE .END 1 C1 VIN Calcolare il tempo di salita all’80% e verificare il risultato ottenuto tramite il simulatore
Terzo Esempio: circuito RC Analisi in frequenza VOUT *Carica RC V1 1 0 PULSE 0 5 R1 1 VOUT 6k C1 VOUT 0 10n .AC DEC 1000 1hz 10MEG .PROBE .END 1 C1 VIN Calcolare la frequenza di taglio e verificare il risultato ottenuto tramite il simulatore