UTILIZAREA UNUI SIMULATOR SPICE PENTRU STUDIUL UNOR STRUCTURI DE CIRCUITE INTEGRATE DIGITALE (NUMERICE) I. Prezentarea simulatorului Spice I.1. Introducere SPICE (Simulation Program with Integrated Circuit Emphasis) este un program de simulare a circuitelor electronice orientat pe simularea structurilor de circuite integrate (la origine). El a fost dezvoltat la începutul anilor '70 la University of California, Berkeley şi de atunci continuă să fie simulatorul analogic cel mai răspândit pentru circuite electronice, în virtual orice tip de aplicaţie. Deşi SPICE a fost supus unor dezvoltări succesive, nucleul algoritmilor de bază a rămas acelaşi, fiind validat astfel de proba timpului. Numeroşi producători de software au realizat transportul lui pe un mare număr de platforme de lucru având suficientă putere de calcul (sisteme mari, mini sisteme, staţii de lucru, PC-uri ), adăugându-i diverse tipuri de analiză şi facilităţi orientate utilizator. I.2. Descrierea simulatorului Spice Descrierea sumară care urmează este prezentată ca o referinţă, ea este utilă mai ales pentru variante de implementare a simulatorului cum ar fi PSPICE al firmei Cadence (Orcad). Nu fac obiectul acestei discuții interfețele grafice utilizator, specifice unui anumit produs! Un circuit este descris în vederea analizei printr-o secvenţă de instrucţiuni care formează sursa Spice. Sunt necesare 7 elemente care trebuie să fie prezente în sursa Spice pentru a putea realiza o simulare completă : a) Linie titlu b) Instrucţiuni de control a analizei c) Instrucţiuni de control a afişării rezultatelor d) Descrierea topologiei circuitului e) Descrierea surselor de stimulare şi a surselor de alimentare f) Descrierea modelelor şi/sau a sub circuitelor utilizate (eventual) g) Instrucţiune. END Poziţiile a)şi g) sunt obligatorii. Descrierea topologiei circuitului şi a surselor se face cu ajutorul unor instrucţiuni dedicate numite primitive SPICE, deoarece nu există componente mai simple care pot fi utilizate la construirea unui circuit. Există primitive pentru elemente pasive, semiconductori, surse independente sau comandate. Primitivele (componentele) SPICE sunt identificate obligatoriu printr-o literă cheie cu care, în mod obligatoriu, începe numele acesteia: R - rezistor C - condensator V - sursă de tensiune independentă I - sursă de curent independentă 1
L - inductor K - cuplaj inductiv T - linie de transmisie D - diodă Q - tranzistor bipolar M - tranzistor MOSFET J - tranzistor JFET E - sursă de tensiune controlată în tensiune F - sursă de curent controlată în curent H - sursă de tensiune controlată în curent G - sursă de curent controlată in tensiune OBSERVATIE De exemplu, încercarea de a utiliza o sursa de tensiune al cărui nume nu începe cu litera V va genera o eroare, mai mult sa mai puțin ușor de depistat! Un nume de până la 7 caractere poate fi adăugat literei cheie (avem maxim 8 caractere luate în considerare). Urmează numerele de nod care descriu conectivitatea şi o serie de parametrii care pot fi obligatorii sau opţionali. De exemplu pentru rezistenţe parametrul obligatoriu este valoarea acesteia. Numerele utilizate la descrierea de valori pot fi introduse ca numere în virgulă mobilă, în formatul ştiinţific (exponenţial, "E") sau scalate de următoarele litere (prefixele SPICE pentru unităţi de măsură): T =1E12 K=1E3 N=1E-9 G =1E9 M=1E-3 P=1E-12 MEG=1E6 U=1E-6 F=1E-15 Atenţie la introducerea unităţilor de măsură deoarece în absenţa scalării valorile implicite sunt cele SI (V, A, sec, Hz, Ω, F, H, etc.)! Se pot utiliza litere mari sau mici dar pentru compatibilitatea cu alte simulatoare este de dorit sa se utilizeze LITERE MARI (upper case) ca de altfel peste tot în sursa Spice. Exemple: R1 1 2 100K... un rezistor de 100kOhmi CSARCINA 7 9 1UF... un condensator de 1uF VALIM 7 0 10V... o sursa de tensiune de 10V cc Q2 5 6 7 QN2368... un tranzistor bipolar (model corespunzator tipului 2N2368) OBSERVATIE De exemplu, un capacitor a cărui valoare a fost dată ca 1, fără nici o unitate de măsură, va avea capacitatea de 1 Farad! Si de aici pot rezulta erori sau comportări aberante ale circuitului, mai mult sa mai puțin ușor de depistat! Fiecare element de circuit este astfel definit printr-o instrucţiune conţinând numele elementului, nodurile circuitului la care acesta este conectat şi valorile parametrilor. Prima literă a numelui identifică tipul elementului. Toate conexiunile dintre dispozitive sunt determinate de numerele de nod respective. Sunt valabile următoarele restricţii: - nodurile sunt identificate prin întregi pozitivi; - nodul 0 este rezervat pentru masă şi nu poate fi folosit ca argument la un subcircuit; - fiecare nod trebuie să aibă cel puţin 2 conexiuni din care una să includă o cale de curent de cc la masă; - buclele de surse de tensiune sunt ilegale; 2
- buclele de inductori sunt ilegale; Numerele de noduri nu trebuie sa fie neapărat în secvenţă. O altă categorie de instrucţiuni sunt cele de control al simulării: ele informează simulatorul despre tipul de analiză ce trebuie efectuat. Ele au un punct "." ca prim caracter urmat de identificatorul tipului de analiză. SPICE poate să realizeze trei tipuri de baza de analiză, fiecare cu un set de subanalize şi opţiuni: i) Analiză de curent alternativ:.ac - Analiză in domeniul frecvenţă, semnal mic; utilizată de obicei pentru determinarea caracteristicilor de frecvenţă (amplitudine şi fază);.noise - Analiză de zgomot dependentă de frecvenţă şi utilizată numai în conjuncţie cu analiza de alternativ..disto - Analiză de distorsiuni mici care nu sunt puse în evidenţa de analiza de tranzitoriu. OBS. Acest tip de analiza practic nu este utilizat in analiza structurilor de circuite integrate numerice. ii) Analiză de curent continuu:.op - Determinarea punctului static de funcţionare; este implicită de obicei, chiar dacă nu se cere alt tip de analiză..sens - Analiza sensibilităţii în cc; Spice nu realizează acest tip de analiză în curent alternativ!.tf - Determinarea funcţiei de transfer de semnal mic ( în cc! )..DC - Se baleiază (între 0 şi valoarea nominală) valoarea a una sau două surse de cc (tensiune sau curent) şi se înregistrează tensiunile nodurilor menţionate în instrucţiunea.print..nodeset - Se stabilesc (se forţează ) potenţiale iniţiale pentru noduri. iii) Analiză de regim tranzitoriu:.tran - Analiză completă (tranzitoriu) în domeniul timp..four - Analiză Fourier care determină componenta de cc plus primele 9 componente spectrale de frecvenţă şi fază..ic - Se iau în considerare condiţiile iniţiale (descrise printr-un câmp de tip UIC) pentru capacitori (tensiune la borne) şi inductori (curent iniţial). Exemple:.TRAN.1US 10US - analiză de tranzitoriu, pe intervalul 0-10µsec şi pasul de timp 0.1µsec.. AC DEC 10 1HZ 1MEGHZ - analiză de alternativ, pe 10 decade. La analiza în domeniul timp (.TRAN) se utilizează pentru excitaţia circuitului diverse tipuri de stimuli asociaţi unor generatoare de semnal (surse de tensiune sau curent), de regulă plasate la intrarea circuitului: PULSE... impuls sau tren periodic de impulsuri SIN... sinusoidal sau sinusoidal amortizat EXP... exponenţială PWL... o formă de undă descrisă prin aproximaţie liniară SSFM... o formă de undă modulată în frecvenţă 3
Doar o singură astfel de opţiune pentru generatorul asociat regimului tranzitoriu poate fi selectată pentru fiecare sursă. Exemple : V1 5 0 SIN 0 5V 10MEGHZ frecventa amplitudine valoare de cc (medie) VIN 10 0 PULSE 0 2V.1US.1US.1US 10US durata impuls nivel jos (low) timpi de front (crestere, cadere) timp intarziere initial nivel ridicat (high) Analiza de curent continuu (DC) are ca rezultat o colecţie de puncte statice de funcţionare (cu inductorii scurtcircuitaţi şi condensatoarele considerate întrerupte). O analiză de cc este oricum efectuată înainte de orice analiză de tranzitoriu sau alternativ în vederea liniarizării modelelor dispozitivelor şi găsirii condiţiilor iniţiale (determinarea iniţială a punctului static de funcţionare). Mărimile rezultate în urma simulării: potenţialele de cc ale nodurilor, curenţii prin toate sursele de alimentare şi eventual puterea totală disipată sunt memorate într-un fişier de ieşire (*.OUT). Instrucţiunile referitoare la controlul afişării rezultatelor sunt.print sau.plot. Instrucţiunea.PRINT face ca valorile tensiunilor de nod asociate sau curenţilor asociaţi unor surse să fie listate într-un fişier de ieşire (output file, extensie *. OUT) în formă tabelară. Forma tabelară este forma nativă în care simulatorul SPICE prezintă rezultatele, acestea fiind destul de dificil de interpretat şi utilizat. În urma prelucrării sursei Spice, în afară de fişierul de ieşire (*.OUT) care va conţine sursa Spice şi rezultatele analizei, se mai generează şi un fişier care conţine mesajele de eroare (cu extensia *. ERR). Atenţie! Spice este notoriu pentru dificultatea cu care, in anumite situații, se descoperă în sursa SPICE (si chiar in schema!) cauza şi natura erorilor, în ciuda sistemului de mesaje de eroare. Instrucţiunile pentru descrierea modelelor şi a sub circuitelor sunt:. X... Apelare sub circuit. SUBCKT... Descriere sub circuit. MODEL... Descriere model. ENDS... Sfârşit descriere sub circuit Numele modelului este utilizat pentru a lega apelul de dispozitiv (primitiva) cu instrucţiunea ". MODEL.." corespunzătoare. Exemplu: pentru un tranzistor de tip 2N2368 avem : Q1 1 2 3 QN2368 şi. MODEL QN2368 NPN... Modelele pentru dispozitivele semiconductoare utilizate au diverse origini: pentru TBJ se utilizează modelul Gummel-Poon (o dezvoltare a modelului Ebers-Moll), pentru tranzistoare MOS există 6 nivele diferite de modelare (de la modelul Shichman-Hodges la un model semiempiric), etc. Pentru fiecare din aceste modele există valori implicite ale parametrilor. Modelele (valorile asociate de parametrii) sunt organizate în biblioteci şi inserate automat în sursa Spice prin mecanisme corespunzătoare, sau sunt construite ad hoc. 4
Atenție!: o simulare Spice este precisă doar în măsura în care şi modelele utilizate sunt! Sub circuitele reprezintă seturi de elemente de circuit, de orice complexitate, care în mod obişnuit sunt grupate astfel încât să reprezinte o singură funcţie electronică. Ele pot fi apelate analog unor subrutine. Există reguli legate de ierarhii, domeniu de acţiune (vizibilitate), pasare de parametrii; de exemplu ele pot fi imbricate dar nu şi apelate recursiv, etc. Din fericire pentru utilizatori, toate simulatoarele SPICE actuale reduc la minim interacţiunea utilizatorului cu codul sursă SPICE propriu-zis. Utilizatorul are acces la resursele simulatorului printr-o interfaţă utilizator mult mai prietenoasă. Interfaţa grafică utilizator (GUI) este realizată si prin intermediul unui preprocesor (un editor de scheme, Schematics) care va genera automat sursa Spice pe baza schemei electrice a circuitului si a unui post-procesor care va permite vizualizarea sub formă grafică a rezultatelor simulării (şi cu eventuale prelucrări ale rezultatelor). II. SIMULATORUL PSPICE Mediul PSPICE, care va fi utilizat in cadrul laboratorului. este disponibil, începând de la versiunea 7, ca un modul al pachetului de programe OrCAD (Cadence Inc.), care oferă soluţii complete pentru: editare scheme circuite electrice - Capture OrCAD; simulare circuite analogice, digitale şi mixte - PSpice OrCAD; proiectare cablaje imprimate (PCB) - Layout OrCAD; proiectare VHDL şi sinteză circuite CPLD şi FPGA - Express OrCAD; Actualmente(2013) mediul Orcad PSPICE se află la versiunea 16.6. Există implementări ale PSPICE si ale altor firme: Multisim (National Instruments), Microsym, Microcap, etc.. Mediul PSPICE realizează o implementare completă a unui simulator SPICE şi este unul din cele mai utilizate simulatoare SPICE atât în mediul academic cât şi în industrie. Denumirea completă a simulatorului propriu-zis este PSPICE A/D (Analog/Digital) el permiţând si o simulare a circuitelor de mod mixt, care includ componente zise analogice (tranzistoare, diode, amplificatoare operaţionale, etc.), componente numerice (circuite MSI, SSI, LSI din diverse familii logice) cat si componente de mod mixt (convertoare analognumerice, numeric analogice, etc.). Principalele tipuri posibile de analize (simulări) care se pot realiza cu acest program sunt: Analize DC Sweep (de curent continuu), AC (curent alternativ) şi de regim tranzitoriu (in domeniul timp) - prin care se testează răspunsul circuitului la diferiţi stimuli de intrare; Analize parametrice, Monte Carlo şi de sensibilitate - care evidenţiază funcţionarea circuitului în urma modificării valorilor componentelor si a factorilor de influenta. Analize digitale de timp critic - care au rolul de a descoperi problemele de timing ce apar în urma utilizării unei combinaţii de semnale transmise lente şi rapide. Pentru a realiza o analiză completă a circuitelor electronice, PSPICE (sau orice simulator SPICE) trebuie să aibă informaţii despre: - componentele circuitului şi modul lor de interconectare (topologia circuitului); - modelele de simulare corespunzătoare componentelor circuitului - semnalul de intrare (de tip sursă de tensiune/curent) utilizat pentru testare 5
- tipul de analiză ce trebuie realizat - modalităţile de prezentare a rezultatelor simulării Astfel, el (simulatorul) află în strânsă legătură cu o serie de programe utilitare, care realizează configurarea (setarea) parametrilor circuitului şi analizei. Modul de interacţiune între PSPICE şi celelalte programe este prezentat în figura următoare: OrCAD Model Editor biblioteci globale de modele OrCAD Capture OrCAD Stimulus Editor fişier semnal intrare (stimulus file) biblioteci locale de modele OrCAD PSpice fisier de comenzi (include file) OrCAD Capture OrCAD Capture este practic un editor complex de scheme electrice utilizat pentru descrierea si pregătirea circuitului în vederea simulării. El reprezintă principala interfaţă cu utilizatorul, prin intermediul lui realizându-se gestionarea unui proiect (Project): - plasarea şi conectarea simbolurilor grafice ale componentelor; - definirea semnalelor de intrare; - activarea unei sau mai multor analize; - determinarea (marcarea) punctelor din circuit (a nodurilor), pentru care se doreşte afişarea rezultatelor; Astfel, după pregătirea completă a proiectului pentru simulare, CAPTURE generează două tipuri de fişiere: - un fişier lista de legături (netlist) - *.NET, care conţine numele dispozitivelor, valorile şi modalitatea de conectare cu alte dispozitive - un fişier circuit - *.CIR, care conţine comenzi ce descriu modul de rulare a simulării; PSPICE citeşte aceste fişiere şi afişează într-un mod grafic rezultatele simulării. OrCAD Stimulus Editor Stimulus editor este un editor grafic pentru semnalul de intrare, ce permite definirea formei semnalului de intrare, în domeniul timp, utilizat la testarea răspunsului circuitului pe durata simulării. Utilizând Stimulus Editor, se pot defini: - stimuli analogici: ce pot conţine semnale sinusoidele, semnale tip impuls, semnale tip impuls exponenţial, semnale modulate în frecvenţă; - stimuli digitali: ce pot varia de la simple semnale de ceas până la forme complexe de impulsuri; 6
Fişierul generat de Stimulus Editor - *.STL, conţine informaţii despre formele de undă ale semnalelor de intrare; Observaţie: O altă modalitate de creare a fişierului semnalului de intrare (stimulus file), este definirea lui manuală, utilizând opţiunea Model Text View din OrCAD Model Editor - (extensia tipică a fişierului este - *.STM) OrCAD Model Editor Orcad Model Editor realizează o definire de model (modificarea valorilor implicite ale parametrilor acestuia) pentru componentele utilizate de PSPICE în timpul simulării. De asemenea, el realizează şi o afişare grafică a caracteristicilor dispozitivelor, putându-se astfel verifica/modifica funcţionarea dispozitivelor pe baza modelului lor. După terminarea editării modelului, în mod automat el ataşează componentei modelul editat, astfel încât componenta modelată poate fi utilizată imediat în simulare. OrCAD Model Editor foloseşte pentru modelarea dispozitivelor o bibliotecă de modele - fişiere *.LIB. Această bibliotecă de modele este un fişier care conţine caracteristicile electrice corespunzătoare uneia sau mai multor componente. PSPICE va utiliza aceste caracteristici pentru a determina modul de răspuns al dispozitivului la diferiţi stimuli electrici de intrare. Fişierul de comenzi (Include file) Este un fişier definit de utilizator, care conţine: - comenzi PSPICE; - comentarii text suplimentare, pe care utilizatorul doreşte să le adauge în fişierul de ieşire al simulării; Tipic acest fişier are extensia *.INC. Fişiere generate de PSPICE. După citirea fişierului circuit (*.CIR), a fişierului listă de legături (*.NET), a bibliotecilor de modele (*.LIB) şi altor posibile fişiere de intrare (stimulus file - *.STL şi include file - *.INC), PSPICE poate începe simularea. Rezultatele simulării sunt memorate în două fişiere: - un fişier de date, care conţine rezultatele simulării, ce pot fi afişate grafic. PSPICE citeşte acest fişier în mod automat şi afişează grafic formele de undă ce reflectă funcţionarea circuitului; - un fişier de ieşire cu extensia *.OUT ce conţine: lista de legături (netlist) a circuitului, sintaxa comenzilor utilizate pentru simulare, rezultatele simulării precum şi mesajelede eroare sau avertizare ce apar în timpul simulării. Pentru un utilizator obişnuit existenţa acestor fişiere este mai puţin importantă, interacţiunea cu mediul de programare putând fi limitată la nivelul interfeţei grafice utilizator (GUI). Mediul PSPICE care va fi utilizat în cadrul laboratorului sunt variante demonstrative denumite Demo Version, Student Version sau Student Edition (o ediție specială a versiunilor 9.1, 16.3 sau 16.6 pentru utilizare in mediul academic). Toate aceste versiuni au ca limitări: - complexitatea circuitului care poate fi analizat, prin limitarea numărului maxim de componente ale circuitului (de exemplu maxim 10 tranzistoare, maxim 65 de primitive digitale/numerice) si a numărului maxim de noduri (maxim 75 de noduri) 7
- numărul de biblioteci este minimal, oferindu-se de fapt o singura biblioteca numita generic EVAL dar care conține un număr destul de mare de componente, arhisuficiente de altfel pentru contextul didactic al utilizării. - Diverse alte limitări, vezi documentul Cadence OrCAD Lite Products Reference In rest exista toate caracteristicile funcționale ale unui simulator complet. Ultima versiune (2013) demo Orcad 16.6 (cu limitări similare vechii versiuni 9.1) pentru toate produsele Orcad/Cadence o găsiţi aici: http://www.cadence.com/products/orcad/pages/downloads.aspx. Înainte de descărcare trebuie să vă înregistrați completând formularul on-line. Pachetele de instalare, pentru utilizarea simulatoarelor pe calculatoarele personale, vi se vor pune la dispoziție la laborator. OBSERVATIE FINALA Un simulator SPICE este doar un mijloc auxiliar pentru analiza sistemelor care utilizează circuite integrate numerice, deoarece prin natura lui de simulator la nivel de circuit, este un mijloc de analiză LENT, mai ales la analize in domeniul timpului (de tranzitoriu) si evident daca e vorba de circuite complexe. Timpul de calcul este proporţional cu numărul de componente, cu complexitatea modelelor utilizate de acestea si, nu in ultimul rând, cu numărul de noduri ale circuitului. Un circuit integrat numeric este de regulă o structură mai mult sau mai puţin complexă (depinzând de gradul de integrare), alcătuită dintr-un număr relativ mare de componente si având un număr corespunzător de noduri. Astfel, un sistem care conţine mai multe circuite integrate numerice va avea o complexitate care va face nepractică simularea lui (datorită timpului exagerat de calcul). In astfel de situaţii un simulator SPICE este util numai dacă se vor utiliza modele simplificate ale circuitelor numerice. Modelele respective conţin atât o dimensiune temporală (prin intermediul vitezelor de variaţie ale semnalelor si a unor componente capacitive) cat si una electrică, referitoare la caracteristicile curent tensiune(i/v) ale intrărilor si ieşirilor. Un exemplu de astfel de descriere este descrierea IBIS (I/O Buffer Information Specification) care poate fi utilizată cu o gamă largă de mijloace de simulare, inclusiv simulatoarele SPICE. O descriere IBIS, oferita tipic de un fabricant de componente, nu este un model propriu-zis, dar pe baza ei se poate obţine relativ simplu un model SPICE. 8