Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » tehnologie » electronica electricitate
VERIFICAREA SCHEMELOR ELECTRICE PRIN SIMULARE

VERIFICAREA SCHEMELOR ELECTRICE PRIN SIMULARE


Verificarea schemelor electrice prin simulare

Pspice A/D

Este un program care modeleaza comportamentul unui circuit care poate sa contina orice combinatie de dispozitive analogice sau digitale. Este utilizat pentru testarea si rafinarea schemei, inainte de implementarea fizica.

Facilitati:

  • Poate realiza analize tranzitorii in curent continuu si alternativ, putandu-se astfel testa raspunsul circuitului la diferite valori de intrare.
  • Analiza parametrica, Monte Carlo[1] si de precizie/caz defavorabil - se poate vedea astfel, modificarea comportamentului circuitului, cu schimbarea valorii componentelor.
  • Analiza digitala pentru temporizarea in cazul cel mai defavorabil, pentru a depista problemele care pot sa survina in situatia unei combinatii de transmisii lente si rapide.

Se pot schimba caracteristicile fara a se crea componente noi. PSpice A/D dispune de modele ai caror parametri pot fi modificati. Comportamentul digital sau analogic poate fi modelat putandu-se descrie blocuri functionale din circuit, cu ajutorul unor expresii sau functii matematice.



Tipuri de analiza

Tabel 1 Analize de baza

Analiza de curent continuu

Pspice A/D calculeaza:

DC sweep

Tensiuni de stare stabila, curenti si stari logice

Bias point detail

Punct stabil (ca valoare), in plus fata de ceea ce se calculeaza automat, in orice simulare

DC sensitivity

Precizia unui net sau tensiune a unei componente, ca functie a unui punct stabil (bias)

Small-signal

DC transfer

Castig in curent al unui semnal de nivel scazut, rezistenta de intrare si iesire, ca functie de punctul de bias

Analiza formelor de unda

Dupa incheierea simularii, se afiseaza formele de unda rezultate respectiv, se vizualizeaza comportamentul circuitului putandu-se astfel determina validitatea proiectarii.

Analiza post-simulare - presupune adaugarea de informatie de reprezentat pe diagramele de timp.

Cand se detecteaza: erori de setare si mentinere, de hazard de temporizare, PSpice A/D afiseaza mesaj detaliat, impreuna cu forma de unda corespunzatoare. Permite de asemenea localizarea problemelor in schema.

Utilizarea PSpice A/D impreuna cu alte programe

Pregatirea simularii in Capture

  • in primul rand, trebuie desenata schema cu componente, valorile lor, legaturile intre ele si eventual daca este cazul, precizarea altor proprietati.
  • se definesc formele de unda de intrare (stimulii).
  • se activeaza unul sau mai multe tipuri de analiza.
  • se marcheaza punctele din schema in care se doreste vizualizarea rezultatelor .

Editorul de stimuli (Stimulus Editor)

Permite definirea formei semnalelor cu variatie in timp utilizate pentru testarea raspunsului circuitului pe durata simularii. Cu ajutorul editorului de stimuli se pot defini:

stimuli analogici sinusoidali, impuls, lineari, etc;

stimuli digitali, de la semnale de tact pana la tipuri complexe de impulsuri si secvente de bus.

Editarea se face prin click pe axa timpului, in punctele care corespund valorilor de intrare dorite la tranzitii.

Editorul de modele (Model Editor)

Este un extractor de modele care genereaza definitii de modele pe care PSpice A/D le utilizeaza in timpul simularii. Acest editor necesita informatii despre dispozitive, gasite in cataloage.

Fisierele necesare pentru simulare

Pentru ca simularea sa aiba loc, PSpice trebuie sa detina informatii despre:

  • componentele din circuit si modul in care sunt interconectate;
  • tipurile de analiza care trebuie rulate;
  • modelele de simulare care corespund componentelor din circuit;
  • stimulii de test.

Fisierele generate in Capture sunt:

  • fisierul netlist (nume_proiect.net) - in acest fisier apar numele dispozitivelor, valorile acestora si modul in care sunt conectate intre ele si
  • fisierul circuit (nume_proiect.cir) - contine comenzile care descriu modul de derulare al simularii. Se refera la celelalte fisiere care contin listele de conexiuni, modele, stimuli si orice alta informatie definita de utilizator, care se foloseste in simulare.

Biblioteca de modele

O biblioteca de modele este un fisier care contine definitiile electrice ale uneia sau mai multor componente. Informatiile continute in aceste modele sunt utilizate pentru a determina modul in care componentele vor reactiona la diferiti stimuli.

Aceste definitii iau forma:

  • unui set de parametri model - care definesc comportamentul unei componente, sau
  • lista de conexiuni intr-un subcircuit (deseori este numit macromodel si este analog unui apel de procedura, intr-un limbaj de programare) - aceasta descrie structura si functiile componentei, prin interconectarea cu alte componente si primitive.

Caracteristicile de baza ale unui model digital complet:

comportamentul functional - descries de primitivele la nivel de poarta cele comportamentale care cuprind subcircuitul

comportamentul de I/O - descries de modelul de I/O, subcircuitele de interfata si alimentarile legate de o anumita familie logica si

comportamentul temporal- descries de unul sau mai multe modele de temporizare, primitive de intarziere pin-la-pin sau primitive de control al restrictiilor.

Extensia fisierelor cu modele este LIB.

Daca este necesar, se pot crea propriile modele si biblioteci fie:

  • manual,  utilizand modul Model Text View din editorul de modele (sau un alt editor de text cum ar fi de exemplu Notepad), sau
  • automat folosind editorul de modele.

Fisierul stimul

Contine definirea semnalelor in timp si se pot genera:

  • manual, cu un editor de texte standard - extensia STM
  • automat, utilizand editorul de stimuli - genereaza un fisier cu extensia STL

Nu toate definirile de stimuli necesita crearea unui fisier. In unele cazuri, ca de exemplu sursele de tensiuni continue sau alternative, este suficienta folosirea simbolului pe schema si setarea atributelor sale.

Fisiere include

Sunt fisiere definite de utilizator si contin :

  • comenzi PSpice
  • comentarii text suplimentare, care dorim sa apara in fisierul de iesire PSpice. Au extensia .INC si pot fi generate cu orice editor de text.

Fisiere generate de PSpice A/D

Dupa citirea fisierului circuit, netlist, a bibliotecilor de modele si a oricaror altor intrari, PSpice A/D porneste simularea. Pe masura ce aceasta evolueaza, rezultatele se salveaza in doua fisiere: unul de date si unul rezultat PSpice.

Fisierul de date diagrama de timp (Waveform) contine rezultatele simularii afisabile intr-o forma grafica. PSpice A/D il citeste automat si afiseaza forma de variatie in timp care reflecta raspunsul circuitului in punctele marcate (legaturi, pini, componente) pe schema. Se poate seta ca afisarea grafica sa aiba loc in timpul simularii sau, dupa incheierea ei. Dupa ce PSpice A/D a citit fisierul de date si afiseaza setul de rezultate initiale, se mai pot adauga diagrame de timp, analiza datelor putandu-se face post-simulare.

Fisierul rezultat PSpice (output file) este un fisier text ASCII care contine:

  • Reprezentarea lista de conexiuni a circuitului
  • Sintaxa PSpice pentru comenzile de simulare si optiunile (de exemplu tipurile de analiza activate)
  • Rezultatele simularii si
  • Mesajele de avertizare si de eroare generate de problemele aparute in timpul citirii datelor de intrare sau in timpul simularii.

Continutul acestui fisier este determinat de:

tipurile de analiza rulate,

  • optiunile selectate pentru rularea PSpice A/D si
  • simbolurile de control al simularii (VPRINT1 si VPLOT de exemplu) plasate si conectate la legaturile de pe plansa.

Pregatirea pentru simulare

Definirea elementelor de alimentare pentru portiunea analogica a circuitului

Daca portiunea aceasta de circuit necesita o sursa de curent continuu, atunci trebuie sa includa elementul corespunzator. Pentru specificarea unei astfel de surse, se foloseste unul dintre obiectele:

Tabel 2

Pentru sursa de tip:

Se foloseste:

tensiune

VDC sau VSRC

curent

IDC or ISRC

Pentru interfetele A/D in circuite mixte :

Alimentarea digitala implicita

Fiecare componenta digitala din bibliotecile OrCAD are alimentare implicita definita pentru subcircuitul de interfata AtoD sau DtoA. Aceasta inseamna ca daca se proiecteaza un circuit cu semnale mixte, exista o alimentare digitala implicita de 5V inclusa la fiecare interfata.

Alimentare definita de utilizator

In caz de nevoie, se pot personaliza sursele de alimentare pentru diverse familii logice.

Definirea stimulilor

Pentru simularea circuitului este necesar sa se conecteze una sau mai multe surse pentru componente care descriu semnalul de intrare la care circuitul trebuie sa raspunda.

Bibliotecile OrCAD furnizeaza mai multe componente sursa descrise in Tabel 3. Acestea depind de:

  • Tipul analizei de rulat;
  • Conectarea la partea analogica sau digitala a circuitului si
  • Modul in care se doreste definirea stimulului: utilizand Stimulus Editor, un fisier sau prin definirea valorilor proprietatilor componentei.

a.     Stimuli analogici

Includ atat sursele de curent cat si pe cele de tensiune

Tabel 3

Intrare de tipul:

Componenta de tensiune

Pentru analize DC

DC bias

VDC sau VSRC

Pentru analize AC

Marimea si faza AC

VAC sau VSRC

Pentru analize tranzitorii

Exponentiala

VEXP sau VSTIM*

Impuls periodic

VPULSE sau VSTIM*

Linear

VPWL sau VSTIM*

piecewise-linear care se repeta la infinit

VPWL_RE_FOREVER sau

VPWL_F_RE_FOREVER**

Pentru a determina numele componentei pentru o sursa de curent echivalenta in tabelul cu elemente sursa de tensiune se inlocuieste in numele acestora V cu I

VSTIM si ISTIM

Se pot utiliza pentru a defini orice tip de semnal cu variatie in timp. Pentru specificarea semnalului se foloseste Editorul de stimuli.

b.     Stimuli digitali

Tabel 4

Intrare de tipul

Componenta

Pentru analize tranzitorii semnal sau bus

DIGSTIMn*

Semnal ceas

DIGCLOCK

Semnal de un bit

STIM1

bus pe 4 biti

STIM4

bus  pe 8 biti

STIM8

bus pe16 biti

STIM16

semnal din fisier sau bus (any width)

FILESTIMn

DIGSTIM necesita utilizarea editorului de stimuli pentru definirea semnalului de intrare.

Editorul de modele

Daca sunt create componente care dorim sa ia parte in simulare, este necesara atasarea implementarii modelului.

Definirea proprietatilor necesare pentru simulare

Daca au fost definite corect, componentele care sunt utilizabile in simulare trebuie sa aiba proprietatile:

· PSPICETEMPLATE (macheta PSpice) pentru simulare

· PART si REFDES pentru identificare

Se mai pot adauga proprietati specifice simularii pentru componentele digitale: IO_LEVEL, MNTYMXDLY si PSPICEDEFAULTNET (pentru pini).

De exemplu, daca o componenta are comportamentul electric descris de definitia de subcircuit care incepe cu:

.SUBCKT 7400 A B Y

+ optional: DPWR=$G_DPWR DGND=$G_DGND

+ params: MNTYMXDLY=0 IO_LEVEL=0

atunci proprietatile corespunzatoare pentru componenta sunt:

IMPLEMENTATION = 7400

MNTYMXDLY = 0

IO_LEVEL = 0

PSPICETEMPLATE = X^@REFDES %A %B %Y %PWR

%GND

@MODEL PARAMS:IO_LEVEL=@IO_LEVEL

MNTYMXDLY=@MNTYMXDLY

PSPICETEMPLATE

Este o proprietate care defineste sintaxa PSpice A/D pentru lista de conexiuni a componentei. Cand se creaza o lista de conexiuni, Capture substituie valorile actuale din circuit cu cele corespunzatoare din sintaxa PSPICETEMPLATE, apoi salveaza declaratia in fisierul netlist.

Orice componenta care participa la simulare trebuie sa aiba definita proprietatea PSPICETEMPLATE. Aceste reguli se aplica:

  • Numelor pinilor specificati in proprietatea PSPICETEMPLATE. Acestea  trebuie sa fie aceeasi cu numele pinilor componentei.
  • Numarul si ordinea pinilor din proprietatea PSPICETEMPLATE trebuie sa fie aceleasi cu cele asociate in definitiile .MODEL sau .SUBCKT referite pentru simulare.
  • Primul caracter din PSPICETEMPLATE trebuie sa fie un caracter PSpice A/D asociat tipului de componenta (exemplu: Q pentru tranzistor bipolar).

Sintaxa

PSPICETEMPLATE contine:

  • Caractere uzuale pe care editorul de pagina schema le interpreteaza textual.
  • Nume de proprietati si caractere de control pe care editorul de pagina le traduce.

Caracterele uzuale:

  • alfanumerice
  • orice element de pe tastatura cu exceptia elementelor sintactice speciale utilizate la proprietati (@ & ? ~ #).
  • spatiu

Un identificator este o colectie de caractere de forma:

caracter alfabetic [orice alt caracter uzual]*.

Numele de proprietati sunt precedate de unul dintre caracterele speciale:

[ @ | ? | ~ | # | & ]<identificator>

Editorul de pagina cu scheme proceseaza proprietatea conform cu caracterul special intalnit inainte de identificator (vezi Tabel 5).

Tabel 5

Sintaxa*

Inlocuita cu:

@<id>

Valoarea  <id>. Eroare daca nu este asignat nici un <id> sau nici o valoare.

&<id>

Valoare a  <id> daca acesta este definit.

?<id>ss

Textul dintre separatorii ss daca este definit <id> .

?<id>ss ss

Textul dintre primii separatori ss daca <id> este definit altfel, a doua clauza ss .

~<id>ss

Textul dintre separatorii ss daca <id> daca identificatorul nu este definit.

~<id> ss ss

Textul dintre primii separatori ss daca <id> nu este definit altfel, al doilea ss .

#<id>ss

Textul dintre ss daca <id> este definit dar sterge restul template daca identificatorul nu este definit.

* s este un caracter de separare

Caracterele separator includ virgula (,), punctul (.), punct-virgula (;), per (/), bara verticala

bars ( | ). Trebuie intotdeauna utilizat acelasi caracter pentru a preciza o pereche de separatori de inchidere-deschidere.

Caracterul ^ . Editorul pagina schema il va inlocui cu calea completa catre dispozitivul caruia i se face lista de conexiuni.

Secventa n este inlocuita cu linie noua (new line). Utilizand n, se poate specifica o lista de conexiuni cu linii multiple dintr-un template cu o singura linie.

Caracterul % serveste la numirea pinilor:

%<nume pin>

In editorul de pagina, clauza %<nume pin> este inlocuita cu numele net conectat la acel pin

Pentru a se evita conflictul de nume in PSpice, editorul de pagina traduce urmatoarele caractere continute in numele de pini:

< devine l (L), > devine g, = devine e si XXX devine XXXnegat

Exemple:

Macheta unei rezistente (R)

Componenta R are:

· doi pini: 1 si 2

· doua proprietati necesare: REFDES si VALUE

Template

R^@REFDES %1 %2 @VALUE

Transpunere:

R_R23 abc def 1k

unde REFDES este R23, VALUE este 1k, si R este legata la net-urile abc si def.

Componente de tip stimul digital cu template cu pini de latime variabila

In cazul unui model de stimul digital (DIGSTIM de exemplu), numele unui pin poate fi precedat de un caracter, ceea ce are semnificatia ca pinul poate fi conectat la o magistrala, latimea fiind setata egala cu cea a magistralei.

Template

U^@REFDES STIM(%#PIN, 0) %*PIN

n+ STIMULUS=@STIMULUS

unde #PIN se refera la o latime variabila.

Transpunere

U_U1 STIM(4,0) 5PIN1 %PIN2 %PIN3 %PIN4

+ STIMULUS=mystim

stimulul este conectat la un bus pe patru biti a[0-3].

IO_LEVEL

Este o proprietate care defineste nivelul modelului subcircuitului de interfata care trebuie folosit pentru o componenta digitala conectata la una analogica.

Pentru a utiliza proprietatea IO_LEVEL, aceasta trebuie adaugata la componenta si sa i se asigneze o valoare conform :

Tabel 6

Valoarea de asignat

Pentru utilizarea subcircuitului de interfata (nivel)

Implicit

AtoD1 si DtoA1

AtoD2 si DtoA2

AtoD3 si DtoA3

AtoD4 si DtoA4

Aceasta proprietate se foloseste in definitia PSPICETEMPLATE (IO_LEVEL este de asemenea un parametru de subcircuit utilizat in apelul subcircuitelor digitale).

Exemplu:

PSPICETEMPLATE=X^@REFDES %A %B %C %D %PWR

%GND

@MODEL PARAMS:n+

IO_LEVEL=@IO_LEVEL

MNTYMXDLY=@MNTYMXDLY

MNTYMXDLY

MNTYMXDLY este proprietatea care defineste nivelul intarzierii de propagare digitala care trebuie aplicat pentru o componenta de acest tip. Pentru utilizare, trebuie adaugata proprietatea MNTYMXDLY si asignata o valoare conform celor din Tabel 7.

Tabel 7

Valoarea de utilizat

Intarzierea de propagare

implicita

minima

tipica

maxima

cazul cel mai defavorabil (min/max)

Se foloseste in definirea PSPICETEMPLATE (MNTYMXDLY fiind de asemenea un parametru de subcircuit).

Exemplu:

PSPICETEMPLATE=X^@REFDES %A %B %C %D %PWR

%GND

@MODEL PARAMS:n+

IO_LEVEL=@IO_LEVEL

MNTYMXDLY=@MNTYMXDLY

PSPICEDEFAULTNET este proprietate a pinilor si defineste numele legaturii la care este conectat un pin setat invizibil. Fiecarei proprietati PSPICEDEFAULTNET i se asigneaza numele legaturii digitale.

Exemplu: Daca pinii de alimentare (PWR) si masa (GND) ai unei componente digitale se conecteaza la legaturile digitale $G_DPWR si $G_DGND, atunci proprietatile PSPICEDEFAULTNET ai acestor pini vor fi:

PSPICEDEFAULTNET=$G_DPWR

PSPICEDEFAULTNET=$G_DGND

Se foloseste numele pinului invizibil corespunzator in definirea PSPICETEMPLATE Exemplu: Daca numele pinului de alimentare este PWR si al celui de masa GND, atunci modelul trebuie sa arate astfel:

PSPICETEMPLATE=X^@REFDES %A %B %C %D %PWR

%GND

@MODEL PARAMS:n+

IO_LEVEL=@IO_LEVEL

MNTYMXDLY=@MNTYMXDLY

Crearea si editarea modelelor

Daca in fereastra rezultat a PSpice apare mesajul :


Inseamna ca: fie a fost plasata o componenta care nu este disponibila pentru simulare, fie o componenta editata dar careia ii lipseste descrierea completa pentru simulare. In aceasta situatie, componenta trebuie inlocuita cu una echivalenta dintr-una din bibliotecile din Tabel 8. si Tabel 9. Pentru a avea siguranta ca respectiva componenta poate fi utilizata in simulare, trebuie verificat daca are o proprietate PSPICETEMPLATE si ca are (tip de implementare) Implementation Type = PSpice MODEL.

Tabel 8

Bibliotecile analogice cu componente modelate (instalate in CaptureLibraryPSpice)

1_SHOT

EPWRBJT

MOTOR_RF

ABM

FILTSUB

NAT_SEMI

ADV_LIN

FWBELL

OPAMP

AMP

HARRIS

OPTO

ANALOG

IGBT*

PHIL_BJT

ANA_SWIT

JBIPOLAR

PHIL_FET

ANLG_DEV

JDIODE

PHIL_RF

ANL_MISC

JFET

POLYFET

APEX

JJFET

PWRBJT

BIPOLAR

JOPAMP

PWRMOS

BREAKOUT

JPWRBJT

SIEMENS

BUFFER

JPWRMOS

SWIT_RAV

BURR_BRN

LIN_TECH

SWIT_REG

CD4000

MAGNETIC*

TEX_INST

COMLINR

MAXIM

THYRISTR*

DIODE

MIX_MISC**

TLINE*

EBIPOLAR

MOTORAMP

XTAL

EDIODE


MOTORMOS

ZETEX

ELANTEC

MOTORSEN

Tabel 9

Bibliotecile digitale cu componente modelate

74AC

74ACT

74ALS

74AS

74F

74H

74HC

74HCT

74L

74LS

74S

DIG_ECL

DIG_GAL

DIG_MISC

DIG_PAL

DIG_PRIM

Tinand cont de faptul ca in Capture exista posibilitatea de editare a unor componente care nu se regasesc in biblioteci, in cazul in care se doreste includerea acestora in simulare, trebuie sa li se editeze modele de functionare.

Modelele definesc comportamentul electric al unei componente. Pe o pagina cu schema, aceasta corespondenta este definita de o proprietate a componentei si anume: Implementation. Aceasta este asignata numelui modelului (.).

In functie de tipul de dispozitiv pe care il descrie, modelul este definit de:

Un set de parametri;

Lista de conexiuni subcircuit.

Ambele moduri descriu modelul sub forma de text, cu respectarea unor reguli specifice de sintaxa.

3.3.2.1 Modele definite ca seturi de parametri

PSpice A/D dispune de algoritmi inclusi (modele) care descriu comportamentul multor tipuri de dispozitive; descriere realizata de un set de parametri model. Comportamentul unui dispozitiv descris de un model inclus, se poate defini prin atribuirea de noi valori tuturor, sau unora dintre parametrii model.

Exemplu:

.MODEL MLOAD NMOS

+ (LEVEL=1 VTO=0.7 CJ=0.02pF)

Modele definite ca liste de conexiuni subcircuit

Pentru dispozitivele care nu dispun de modele incluse, modelele se definesc utilizand sintaxa subcircuit: .SUBCKT/ .ENDS. Aceasta sintaxa include: liste de conexiuni care descriu structura si functiile unei componente si parametrii de intrare ai variabilei pentru reglarea modelului.

Exemplu:

* FIRST ORDER RC STAGE

.SUBCKT LIN/STG IN OUT AGND

+ PARAMS: C1VAL=1 C2VAL=1 R1VAL=1 R2VAL=1

+ GAIN=10000

C1 IN N1

C2 N1 OUT

R1 IN N1

R2 N1 OUT

EAMP1 OUT AGND VALUE=

.ENDS

Bibliotecile de modele

Modelele sunt salvate in fisiere numite biblioteci de modele. In functie de configuratie, bibliotecile sunt disponibile fie unui anumit proiect, fie tuturor (global).

Bibliotecile de modele sunt fisiere text care contin una sau mai multe definitii de model. Extensia tipica este .LIB.

Configurarea bibliotecilor de modele

PSpice A/D cauta bibliotecile dupa numele de modele specificate in implementarea modelelor pentru componentele din schema.

Bibliotecile trebuie configurate pentru ca PSpice A/D sa stie unde sa caute definitiile modelelor:

  • Trebuie precizata calea catre bibliotecile de modele;
  • Fiecare biblioteca trebuie sa aiba un nume si
  • Fiecarei biblioteci este necesar sa i se asigneze un domeniu ( de disponibilitate) local sau global.

Figura 1

Modele locale - acestea sunt utilizate intr-un singur proiect. Editorul de scheme creeaza automat un model de acest tip, de fiecare data cand este modificata definitia modelului pentru o anumita componenta de pe schema. Modelele se pot genera si extern urmand sa fie realizata o configurare manuala pentru o anumita plansa.

Modelele globale - sunt disponibile tuturor planselor create.

Bibliotecile de modele instalate odata cu programele OrCAD se pot regasi in NOM.LIB. Acest fisier demonstreaza felul in care se pot inlantui referirile catre alte biblioteci si modele. NOM.LIB contine definitii de model globale.

Modelarea logica

Bibliotecile standard contin o mare varietate de componente digitale produse intr-o gama variata de tehnologii. Aceste componente sunt descrise din punct de vedere electric cu ajutorul unui model, in forma unei definitii de subcircuit, pastrata in biblioteca de modele. Numele de subcircuit corespunzator este definita in valoarea atributului MODEL a componentei. Alte atribute cum ar fi: MNTYMXDLY, IO_LEVEL si setul PSPICEDEFAULTNET apartin subcircuitului, oferind astfel posibilitati de influentare a comportamentului modelului dispozitivului digital.

In general, componentele digitale continute in biblioteci sunt suficiente pentru cele mai multe tipuri de proiecte. Cu toate acestea, se pot ivi situatii in care este necesara utilizarea unei componente care nu se regaseste nici in bibliotecile standard, nici in cele de modele. In aceasta situatie, se impune crearea de modele corespunzatoare noilor componente introduse.

Un model complet, are urmatoarele caracteristici(Figura 2):

Comportamentul functional descris de primitive la nivel de poarta si de comportament digital;

Comportamentul de I/O descris de modelul corespunzator, subcircuite de interfata si alimentari specifice unei familii logice si

Comportamentul in timp descris de unul sau mai multe modele, primitive de intarzieri pin-la-pin sau, primitive de verificare a restrictiilor.

Comportamentul functional

Modelul de comportament functional al unei componente digitale este descris prin intermediul uneia sau mai multor primitive logice, interconectate. O parte a acestor primitive digitale sunt exemplificate in Tabelul 10 (Anexa 1 cuprinde toate primitivele logice).

Tabel 10

Tip

Descriere

Porti standard

BUF

INV

AND

NAND

OR

NOR

XOR

NXOR

buffer

inversor

poarta SI (AND)

poarta SI-NU (NAND )

poarta SAU (OR )

poarta SAU-NU (NOR)

SAU EXCLUSIV

SAU EXCLUSIV negat

Formatul primitivelor digitale este similar cu cel al primitivelor analogice. Diferenta consta in aceea ca cele mai multe primitive logice necesita doua modele si nu unul:

  • Modelul de temporizare care specifica intarzierile de propagare si restrictiile de timp (de exemplu - timp de setare, timp de mentinere).
  • Modelul de I/O care specifica informatia tipica pentru caracteristicile de intrare/iesire ale componentei.

Motivul pentru care a fost nevoie de introducerea celor doua tipuri de modele este acela ca daca informatia de temporizare este specifica fiecarui tip de componenta, cea de intrare/iesire este caracteristica unei intregi familii logice .

Sintaxa primitivelor logice

Formatul general:

U<nume> < tip primitiva > [( < valoare parametru >* )]

+ < nod alimentare digitala > < nod masa digitala >

+ <nod>*

+ <Nume model temporizare> < Nume model I/O >

+ [MNTYMXDLY=< valoare selectie intarziere >]

+ [IO_LEVEL=< valoar eselectie interfata subckt >]

unde:

<primitive type> [( <parameter value>* )] - este tipul dispozitivului digital, cum ar fi: NAND, OR, etc. Este urmata de zero sau mai multi parametri specifici tipului de primitiva ( numarul de intrari de exemplu). Numarul si semnificatia parametrilor depinde de tipul primitivei.

<digital power node> <digital ground node> - sunt nodurile folosite de subcircuitele de interfata care conecteaza nodurile analogice cu cele digitale sau invers.

<node>* unul sau mai multe noduri de intrare si iesire. Numarul de noduri depinde de tipul de primitiva parametrii acesteia. Dispozitivele analogice, cele digitale sau ambele, pot fi conectate la un nod. Daca un nod are legaturi atat analogice cat si logice, atunci PSpice A/D insereaza automat un subcircuit de interfata pentru a face translatarea intre starile logice de iesire si tensiuni.

<Timing model name> - este numele modelului de temporizare care descrie caracteristicile de temporizare ale dispozitivului cum ar fi: intarzieri de propagare si timpi de setare si mentinere. Fiecare parametru de acest tip o valoare minima, tipica si maxima care poate fi selectata pe timpul simularii.

<I/O model name> - este numele unui model de I/O care descrie caracteristicile de incarcare si dirijare. Modelele de I/O contin de asemenea numele a pana la patru subcircuite de interfata DtoA si AtoD, numite automat de PSpice A/D sa manevreze nodurile de interfata analog/digitale.

MNTYMXDLY[2] - este un parametru optional care selecteaza valorile minime, maxime sau tipice ale intarzierilor din modelul de temporizare al componentei respective. Valoarea implicita este 0. Valorile acceptate sunt:

0 = valoarea curenta a optiunii DIGMNTYMX[3] (implicit=2)

1 = minima

2 = tipica

3 = maxima

4 = cazul cel mai defavorabil (worst-case timing - min-max)

IO_LEVEL - este un parametru optional care selecteaza unul dintre subcircuitele de interfata AtoD sau DtoA din modelul de I/O. PSpice A/D apeleaza subcircuitul selectat automat in situatia in care un nod care conecteaza o primitiva conecteaza si un dispozitiv analogic. Valoarea implicita este 0. Valori admise:

0 = valoarea curenta a optiunii DIGIOLVL[4] (implicit=1)

1 = AtoD1/DtoA1

2 = AtoD2/DtoA2

3 = AtoD3/DtoA3

4 = AtoD4/DtoA4

Cand se adauga componente digitale in biblioteci, trebuie create modele corespunzatoare prin legarea dispozitivelor U in definitii de subcircuite, similare celor din exemplul de mai jos

Este recomandabila crearea unei biblioteci de modele utilizator, configurabila pentru folosirea in anumite proiecte.

* 74HC533 Octal D-TYPE Transparent Latches with 3-STATE Outputs

* The High-Speed CMOS Logic Data Book, 1988, TI

* atl 9/18/89 Update interface and model names

* rbh 11/11/92 Added bus I/O model

..subckt 74HC533 OCBAR C 1D 2D 3D 4D 5D 6D 7D 8D 1QBAR 2QBAR 3QBAR 4QBAR 5QBAR

6QBAR 7QBAR 8QBAR

optional: DPWR=$G_DPWR DGND=$G_DGND

params: MNTYMXDLY=0 IO_LEVEL=0

UOC inv DPWR DGND

OCBAR OC

D0_GATE IO_HC IO_LEVEL=

UQI dltch(8) DPWR DGND

$D_HI $D_HI C

1D 2D 3D 4D 5D 6D 7D 8D

$D_NC $D_NC $D_NC $D_NC $D_NC $D_NC $D_NC $D_NC

1QI 2QI 3QI 4QI 5QI 6QI 7QI 8QI

D_HC533_1 IO_HC MNTYMXDLY= IO_LEVEL=

UQBAR buf3a(8) DPWR DGND

1QI 2QI 3QI 4QI 5QI 6QI 7QI 8QI

OC

1QBAR 2QBAR 3QBAR 4QBAR 5QBAR 6QBAR 7QBAR 8QBAR

D_HC533_2 IO_HC_BUS MNTYMXDLY= IO_LEVEL=

.ends

Caracteristici de temporizare

Cele mai multe primitive au asociat un model de temporizare in care sunt specificate intarzierile de propagare si restrictiile de timp. Aceasta metoda este utilizata cand este mai usoara partitionarea intarzierilor intre primitivele individuale, in special atunci cand numarul primitivelor este mic

Se utilizeaza primitivele PINDLY si CONSTRAINT care pot modela direct intarzierile pin-la-pin si restrictiile de timp pentru intregul model de dispozitiv. Cu aceasta metoda, toate celelalte primitive functioneaza cu intarziere nula.

In plus fata de intarzierile de propagare explicite, mai exista factori care pot afecta timpul de propagare total prin dispozitiv.

Modelul de temporizare

Figura 3

Cu exceptia dispozitivelor PULLUP, PULLDOWN si PINDLY, toate primitivele digitale au un model de temporizare care furnizeaza simulatorului parametrii de temporizare. Acest model este unic pentru fiecare primitiva (respectiv numele modelului si parametrii care pot fi definiti pentru el difera de la primitiva la primitiva).

Tipurile de parametri:

Intarzieri de propagare (Propagation delays - TP)

Timpi de setare (Setup times - TSU)

Timpi de mentinere (Hold times - TH)

Durata impulsului (Pulse widths - TW)

Timpi de comutare (Switching times - TSW)

Fiecare parametru este in continuare divizat in trei valori: minime (MN), tipica (TYP) si maxime (MX). De exemplu, valoarea tipica a intarzierii de propagare de la nivel coborat la unul ridicat (low to high) pe o poarta, este specificata cu parametrul TPLHTY. Sunt utilizate mai multe tipuri de modele de temporizare. In Figura 25. este prezentat modelul de temporizare (D_HC533_1) al circuitului 74HC533.

Cand se creeaza propriul model, este util, sa fie salvat intr-o biblioteca utilizator care poate fi configurata pentru a fi folosita pentru un anumit proiect. Sunt parametri care pot lipsi din model deoarece cataloagele nu ofera intotdeauna specificatiile pentru toate cele trei tipuri de valori: minime, tipice si maxime. Modul in care simulatorul trateaza parametrii lipsa depinde de tipul acestora.

Tratarea intarzierilor de propagare nespecificate

Deseori, in cataloagele de componente, sunt precizate doar valorile tipice si maxime ale intarzierilor. Daca, in acest caz, simulatorul atribuie valoarea zero minimului, se pot produce disfunctionalitati in anumite situatii.

Din acest motiv, exista doua optiuni configurabile: DIGMNTYSCALE si DIGTYMXSCALE,, utilizate pentru a extrapola intarzierile de propagare nespecificate.

DIGMNTYSCALE - aceasta optiune calculeaza intarzierea minima cand se cunoaste cea tipica, conform formulei:

TPxxMN = DIGMNTYSCALE × TPxxTY

Valoarea implicita a DIGMNTYSCALE este 0.4 sau 40% din intarzierea tipica. Valoarea sa trebuie sa se situeze intre 0.0 si 1.0.

DIGTYMXSCALE - este o optiune care calculeaza intarzierea maxima pe baza celei tipice cu formula:

TPxxMX = DIGTYMXSCALE × TPxxTY

DIGTYMXSCALE are valoarea implicita 1.6. Valoarea sa trebuie sa fie mai mare decat 1.

Cand nu este specificata o intarziere tipica, valoarea sa se deduce din intarzierile minime sau maxime. Daca se cunoaste atat maximul cat si minimul, valoarea tipica va fi media aritmetica a celorlalte doua. Daca se cunoaste doar intarzierea minima, valoarea tipica se obtine utilizand optiunea DIGMNTYSCALE. Similar, daca se cunoaste valoarea maxima DIGTYMXSCALE. Evident, daca nu se precizeaza nici una dintre cele trei valori, se va folosi valoarea zero pentru toate.

Tratarea restrictiilor de timp nespecificate

Celelalte restrictii de temporizare sunt tratate diferit fata de cele de intarziere. In cataloage, se regasesc deseori valorile minime pentru durata impulsului, timp de setare si de mentinere.

In situatia in care lipsesc una sau mai multe restrictii, simulatorul parcurge urmatoarele etape pentru a le completa:

Daca valoarea minima este omisa, este folosita o valoare implicita: zero.

Daca este omisa valoarea maxima, se ia valoarea tipica, daca aceasta exista; in caz contrar, se ia valoarea minima.

Daca este omisa valoarea tipica, se ia media aritmetica a valorii minime si maxime.

Calculul intarzierii de propagare

Caracteristicile de temporizare ale primitivelor digitale sunt determinate atat de modelele de temporizare si de cele de I/O. Modelele de temporizare precizeaza intarzierile de propagare si restrictiile de temporizare. Modelele de I/O precizeaza incarcarea de intrare si iesire, rezistentele de cuplare si timpii de comutare.

Cand iesirea unui dispozitiv se leaga la un alt dispozitiv digital, intarzierea totala de propagare peste un dispozitiv este determinata adunand intarzierea de incarcare (pe terminalul de iesire), cu intarzierea specificata in modelul de temporizare. Intarzierea de incarcare se calculeaza din incarcarea totala pe iesire si rezistentele de comanda. Intarzierea totala pe o iesire este calculata insumand incarcarile de intrare si de iesire (OUTLD si INLD din modelul de I/O) ale tuturor dispozitivelor comandate de acea iesire. Aceasta incarcare totala combinata cu rezistentele de comutare ale dispozitivului (DRVL si DRVH din modelul de I/O), permit calculul intarzierii de incarcare: Intarzierea de incarcare = RDRIVE·CTOTAL·ln(2)

Aceasta intarziere se calculeaza pentru fiecare terminal de iesire al fiecarui dispozitiv inainte de inceperea simularii. Intarzierea totala de propagare este calculata cu usurinta in timpul simularii adaugand intarzierile de incarcare pre-calculate la intarzierea de temporizare a diapozitivului. Nu se folosesc specificatiile de timp cu valoarea zero.

Cand iesirile se leaga la dispozitive analogice, intarzierea de propagare este redusa de timpii de comutare precizati in modelul de I/O.

Intarzierea inertiala si de transport

Simulatorul utilizeaza doua tipuri diferite de functii de intarziere interna cand simuleaza portiunea digitala a circuitului: intarzierea inertiala si cea de transport. Aplicarea acestor concepte se face intern primitivelor digitale, motiv pentru care nu pot fi selectabile de catre utilizator.

Intarzierea inertiala

Simularea unui dispozitiv poate fi descrisa ca aplicarea unor stimuli (S) unei functii (F) si preconizarea raspunsului (R).

Daca dispozitivul este electric prin natura sa, aplicarea stimulului implica energie care determina schimbarea de stare a acestuia. Cantitatea de energie este functie de amplitudinea semnalului si durata acestuia. Daca stimulul se aplica pe o durata prea mica, dispozitivul nu va comuta. Durata minima necesara pentru ca o modificare la intrare sa provoace o schimbare de stare a acesteia, se numeste intarziere inertiala. Pentru simularea digitala, toti parametrii de intarziere din modelul de temporizare sunt considerati inertiali cu exceptia primitivei linie de intarziere (DLYLINE).

Pentru a modela corect comportamentul de imunitate la zgomot, se poate seta in modelul de I/O parametrul TPWRT (pulse width rejection threshold). Cand durata impulsului este mai mare decat TPWRT, si mai mica decat intarzierea de propagare, dispozitivul genereaza un impuls: 0-R-0, 1-F-1, sau un impuls X.

Intarzierea de transport

Primitiva linie de intarziere este unicul model de simulare care poate propaga impulsuri de orice durata aplicate la intrarea sa. Functia acesteia este de a deplasa impulsul aplicat la intrare su o valoare de timp constanta (Figura 26).

Figura 26

Caracteristicile de Intrare /Iesire

Modelul de I/O

Modelele de I/O sunt comune unei familii logice intregi. De exemplu, in bibliotecile de modele exista doar patru modele de I/O pentru intreaga familie 74LS. IO_LS, pentru intrari sau iesiri standard; IO_LS_OC, pentru intrari standard si iesiri cu colector in gol (open-collector); IO_LS_ST, pentru intrari trigger Schmitt si iesiri standard; IO_LS_OC_ST, pentru intrari trigger Schmitt si iesiri cu colector in gol. In schimb, modelele de temporizare sunt unice pentru fiecare dispozitiv.

Modelele de I/O sunt specificate:

.MODEL <I/O nume model > UIO [parametri model]*

Valorile admise ale acestor parametri rezulta din Tabel 11:

Tabel 11

Parametru

Descriere

INLD

Capacitatea de incarcare la intrare

OUTLD

Capacitatea de incarcare la iesire

DRVH

Rezistenta iesirii la nivel inalt

DRVL

Rezistenta iesirii la nivel coborat

DRVZ

Rezistenta de pierdere la iesire in starea Z

INR

Rezistenta de pierdere la intrare

TSTOREMN

Durata de stocare minima pentru net-ul simulat ca sarcina

TPWRT

Pragul de rejectie a duratei impulsului

AtoD1 (Level 1)

Numele subcircuitului de interfata AtoD

DtoA1 (Level 1)

Numele subcircuitului de interfata DtoA

AtoD2 (Level 2)

Numele subcircuitului de interfata AtoD

DtoA2 (Level 2)

Numele subcircuitului de interfata DtoA

AtoD3 (Level 3)

Numele subcircuitului de interfata AtoD

DtoA3 (Level 3)

Numele subcircuitului de interfata DtoA

AtoD4 (Level 4)

Numele subcircuitului de interfata AtoD

DtoA4 (Level 4)

Numele subcircuitului de interfata DtoA

DIGPOWER

Numele subcircuitului de alimentare

TSWLH1

Durata de comutare de la coborat la inalt pentru DtoA1

TSWLH2

Durata de comutare de la coborat la inalt pentru DtoA2

TSWLH3

Durata de comutare de la coborat la inalt pentru DtoA3

TSWLH4

Durata de comutare de la coborat la inalt pentru DtoA4

TSWHL1

Durata de comutare de la inalt la coborat pentru DtoA1

TSWHL2

Durata de comutare de la inalt la coborat pentru DtoA2

TSWHL3

Durata de comutare de la inalt la coborat pentru DtoA3

TSWHL4

Durata de comutare de la inalt la coborat pentru DtoA4

Primitivele logice cuprinse in circuitul 74HC533 (biblioteca Dig_IO.lib):

.model IO_HC uio (

+ drvh=87 drvl=87

+ inld=3.5pF

+ AtoD1='AtoD_HC' AtoD2='AtoD_HC_NX'

+ AtoD3='AtoD_HC' AtoD4='AtoD_HC_NX'

+ DtoA1='DtoA_HC' DtoA2='DtoA_HC'

+ DtoA3='DtoA_HC_E' DtoA4='DtoA_HC_E'

tswhl1=2.742ns tswlh1=2.758ns

tswhl2=2.742ns tswlh2=2.758ns

tswhl3=2.751ns tswlh3=2.763ns

tswhl4=2.751ns tswlh4=2.763ns

+ DIGPOWER='DIGIFPWR' tpwrt=2ns

+ )

Definirea puterilor de iesire

Simulatorul este rulat pentru a putea calcula valori in fiecare nod dintr-un circuit. In cazul nodurilor analogice, valorile sunt tensiuni. Pentru nodurile digitale aceste valori sunt stari. Starea se calculeaza din puterile de iesire ale dispozitivelor care comanda nodul si de nivelul logic al acestuia.

Scopul acestor puteri este acela de a permite simulatorului sa gaseasca valoarea unui nod atunci cand este comandat de mai multe iesiri. Un exemplu simplu este acela al unei linii de bus care este comandata de mai mult decat un tri-state. In conditii normale, toate driver-ele, mai putin unul, comanda trecerea in stare de impedanta ridicata (Z). Linia va lua deci valoarea portii care o comanda cu o putere mai mare (impedanta mai mica).

Crearea subcircuitelor de interfata

In cazul in care componenta digitala nu exista in bibliotecile de modele, se poate intampla sa fie nevoie de crearea subcircuitelor de interfata. Daca obiectele nou create apartin unei familii logice existente, atunci trebuie facuta referire la modelele de I/O deja existente. Formatele pentru AtoD si DtoA sunt:

.SUBCKT ATOD <name suffix>

+ <analog input node>

+ <digital output node>

+ <digital power supply node>

+ <digital ground node>

+ PARAMS: CAPACITANCE=<input load value>

.ENDS

si:

.SUBCKT DTOA <name suffix>

+ <digital input node> <analog output node>

+ <digital power supply node> <digital

+ ground node>

+ PARAMS: DRVL=<0 level driving resistance>

+ DRVH=<1 level driving resistance>

+ CAPACITANCE=<output load value>

.ENDS

Crearea unui model digital prin intermediul primitivelor PINDLY si LOGICEXP

Spre deosebire de cele mai multe tipuri de dispozitive analogice, cea mai mare parte a dispozitivelor digitale nu sunt primitive compilate in simulator. Cele mai multe modele digitale sunt macromodele sau subcircuite care sunt construite din cele cateva primitive existente.

Aceste subcircuite fac referiri la modelele de interfata si de temporizare pentru a trata interfetele AtoD si DtoA si totalitatea parametrilor de temporizare ai dispozitivelor fizice. Pentru cele mai multe familii de circuite logice, modelele de interfata sunt definite si se gasesc in Dig_IO.lib .

Primitivele digitale

In simulator, aceste primitive sunt dispozitive sau functii compilate direct in cod. Primitivele servesc ca blocuri constructive de baza pentru macromodele mai complexe.

Primitivele din simulator sunt de doua tipuri: la nivel de poarta si comportamentale. O primitiva la nivel de poarta se refera in mod normal la o componenta fizica (buffere, porti SI, inversoare, etc.). O primitiva comportamentala ajuta in definirea parametrilor unui model de nivel mai inalt. Ambele tipuri de primitive sunt intrinseci simulatorului.

In exemplul referitor la circuitul 74160, cele patru bistabile de tip J-K sunt patru primitive la nivel de poarta. Cu toate ca bistabilele sunt mai complexe fizic decat portile din punctul de vedere al modelarii, sunt definite la acelasi nivel cu acestea. Dat fiind faptul ca toate patru au RESET, Clear si Clock comune, pot fi combinate intr-o retea de bistabile

Primitiva LOGICEXP

Urmarind modelul 74160, putem observa ca exista trei parti principale ale subcircuitului: .SUBCKT care contine lista pinilor de interfata si lista parametrilor, LOGICEXP care contine tot ceea ce poate fi exprimat prin logica simpla combinationala. Dispozitivele expresii logice servesc de asemenea la bufferarea altor semnale de intrare care vor merge la primitiva PINDLY. In acest caz, LOGICEXP buffereaza CLK_I, ENP_I, ENT_I, CLRBAR_I, LOADBAR_I si patru semnale de date.

Pentru 74160 LOGICEXP are 14 intrari si 20 iesiri. Intrarile constau din noua pini de interfata de intrare in subcuircuit plus cinci semnale de feedback care vin de la bistabilii: QA, QB, QC, QD si QDBAR (iesirea QD negata). Bistabilii sunt primitive si nu fac parte din expresia logica. Iesirile sunt: cele opt intrari de date J-K ale bistabililor, RCO, cele patru linii de date, utilizate intern expresiei logice (A, B, C, D) si sapte linii de control CLK, CLKBAR, EN, ENT, ENP, CLRBAR, si LOADBAR. (BAR are semnificatia de negat).

In model se folosesc D0_GATE care este modelul de temporizare al unei primitive de tip poarta, cu intarziere zero.

IO_STD este modelul standard de I/O. Determina caracteristicile de interfata AtoD si DtoA. D0_EFF este un model de temporizare cu intarziere zero, specific bistabililor. (biblioteca Dig_IO.lib)

Primitiva PINDLY (intarziere pin-la-pin )

Specificatiile de intarziere si restrictiile ale modelului se realizeaza cu primitiva PINDLY. Aceasta este evaluata de cate ori intrarile sau iesirile sale se modifica.

Primitiva PINDLY permite de asemenea verificarea restrictiilor modelului. Verifica timpii de setare, de mentinere, durata impulsului si frecventa. Mai dispune de un mecanism care permite raportarea conditiilor definite de utilizator. Avand in vedere ca parametrii de temporizare sunt specificati in general la nivel de pin, verificarea se face in mod normal la pinii de interfata ai circuitului dupa ce s-a facut bufferarea adecvata.

BOOLEAN

Cuvantul cheie BOOLEAN incepe asignarile booleene care definesc variabilele temporare care pot fi folosite ulterior in primitiva PINDLY. Formatul este:

Variabila booleeana =

Parantezele acolada sunt necesare. Operatorii booleeni, dupa precedenta de sus in jos, sunt:

  • nu unar
  • == egalitate
  • inegalitate
  • & SI
  • SAU exclusiv
  • SAU

Operatorii booleeni iau ca operanzi, urmatoarele valori:

Functii referinta

Functii de tranzitie

Variabile booleene asignate anterior

Constantele booleene TRUE si FALSE.

Functiile de tranzitie (primitive comportamentale) au forma generala: TRN_pn, unde p este variabila de stare anterioara si n este variabila de stare curenta. Valorile starilor sunt luate din setul: . $ are semnificatia de stare indiferenta. Setul complet de functii de tranzitie este: TRN_LH TRN_LZ TRN_L$ TRN_HL TRN_HZ TRN_H$ TRN_ZL TRN_ZH TRN_Z$ TRN_$L TRN_$H si TRN_$Z. Functiile TRN_pZ si TRN_Zn iau valoarea TRUE doar daca sunt utilizate in TRISTATE.

PINDLY

Contine intarzierile actuale si expresiile restrictiilor pentru fiecare dintre iesiri. Functia CASE defineste o expresie a intarzierilor mai complexa, bazata pe reguli si lucreaza. Fiecare expresie din functia CASE este evaluata in ordine, pana se ajunge la una al carei rezultat este adevarat. In acest punct, portiunea de expresie a intarzierii din regula este asociata cu nodul de iesire care este in evaluare, restul functiei CASE fiind ignorat. Daca nici o expresie nu este adevarata, se foloseste intarzierea implicita, motiv pentru care trebuie introdusa o valoare implicita in fiecare functie CASE. Expresiile trebuie separate prin virgula. Formatul CASE:

CASE(

<boolean expression>, <delay expression>,; Rule 1

<boolean expression>, <delay expression>,; Rule 2

<delay expression> ; Default delay

CONSTRAINT (primitiva)

Furnizeaza un mecanism de verificare a restrictiilor. Verifica timpii de setare si mentinere, verifica frecventa si include mecanisme de introducere a conditiilor definite de utilizator. Verificari:

Setup_Hold - expresia din aceasta specificatie trebuie poate fi afisata in orice ordine.

CLOCK defineste nodul care trebuie utilizat ca referinta pentru setup/hold/release (setare/mentinere/refacere). Trecerea se face din LH sau HL ( stare logica 0 in 1 sau din 1 in 0).

DATA precizeaza care este nodul (nodurile) al carui timp de setare/mentinere se masoara.

SETUPTIME defineste durata minima cat nodurile de date trebuie sa fie stabile inainte frontul activ al clockului.

HOLDTIME este folosit in acelasi mod ca si SETUPTIME si dispune si de variantele de format _LH si _HL si conditia de valoare 0.

RELEASETIME determina simulatorul sa execute o verificare de setup special. Este o durata care se refera timpul minim in care un semnal poate deveni inactiv inainte de frontul activ al clockului.

WIDTH este durata minima de impuls la verificare. MIN_HI si MIN_LO sunt timpii minimi cat nodul poate ramane in starea HIGH sau LOW. O valoare 0 inseamna ca este permisa orice durata de impuls.

FREQ verifica frecventa. MINFREQ / MAXFREQ este valoarea minima respectiv maxima de frecventa permisa pe nodul in chestiune.

* 74160 Synchronous 4-bit Decade Counters with

asynchronous clear

* Modeled using LOGICEXP, PINDLY, & CONSTRAINT devices

.SUBCKT 74160 CLK_I ENP_I ENT_I CLRBAR_I LOADBAR_I A_I B_I

C_I D_I

+ QA_O QB_O QC_O QD_O RCO_O

+ OPTIONAL: DPWR=$G_DPWR DGND=$G_DGND

+ PARAMS: MNTYMXDLY=0 IO_LEVEL=0

U160LOG LOGICEXP(14,20) DPWR DGND

+ CLK_I ENP_I ENT_I CLRBAR_I LOADBAR_I A_I B_I C_I D_I

+ QDBAR QA QB QC QD

+ CLK ENP ENT CLRBAR LOADBAR A B C D

+ CLKBAR RCO JA JB JC JD KA KB KC KD EN

+ D0_GATE IO_STD IO_LEVEL=

+ LOGIC:

+ CLK = ;Buffering

+ ENP =

+ ENT =

+ CLRBAR =

+ LOADBAR =

+ A =

+ B =

+ C =

+ D =

+ CLKBAR = ;Logic expressions

+ LOAD =

+ EN =

+ I1A =

+ I2A =

+ JA =

+ KA =

+ I1B =

+ I2B =

+ JB =

+ KB =

+ I1C =

+ I2C =

+ JC =

+ KC =

+ I1D =

+ I2D =

+ JD =

+ KD =

+ RCO =

UJKFF JKFF(4) DPWR DGND $D_HI CLRBAR CLKBAR JA JB JC JD KA

KB KC KD

+ QA QB QC QD QABAR QBBAR QCBAR QDBAR D0_EFF IO_STD

U160DLY PINDLY (5,0,10) DPWR DGND

+ RCO QA QB QC QD

+ CLK LOADBAR ENT CLRBAR ENP A B C D EN

+ RCO_O QA_O QB_O QC_O QD_O

+ IO_STD MNTYMXDLY= IO_LEVEL=

+ BOOLEAN:

+ CLOCK =

+ CNTENT =

+ PINDLY:

+ QA_O QB_O QC_O QD_O =

+ RCO_O =

+ FREQ:

+ NODE = CLK

+ MAXFREQ = 25MEG

+ WIDTH:

+ NODE = CLK

+ MIN_LO = 25NS

+ MIN_HI = 25NS

+ WIDTH:

+ NODE = CLRBAR

+ MIN_LO = 20NS

+ SETUP_HOLD:

+ DATA(4) = A B C D

+ CLOCK LH = CLK

+ SETUPTIME = 20NS

+ WHEN =

+ SETUP_HOLD:

+ DATA(2) = ENP ENT

+ CLOCK LH = CLK

+ SETUPTIME = 20NS

+ WHEN =

+ SETUP_HOLD:

+ DATA(1) = LOADBAR

+ CLOCK LH = CLK

+ SETUPTIME = 25NS

+ WHEN =

+ SETUP_HOLD:

+ DATA(1) = CLRBAR

+ CLOCK LH = CLK

+ RELEASETIME_LH = 20NS

.ENDS

Simularea logica

Reprezinta analiza comportamentului logic si temporal al componentelor digitale. Pspice A/D simuleaza acest comportament pe durata analizei tranzitorii. Cand calculeaza punctul de stabilitate, considera dispozitivele logice impreuna cu oricare dispozitiv analogic din circuit.

PSpice A/D realizeaza o analiza de temporizare detaliata, tinand cont de restrictiile precizate pentru componente. Raporteaza orice incalcari de temporizare sau hazard sub forma unor mesaje in fisierele rezultat.

Etape in simularea logica:

Desenarea schemei

Definirea stimulilor

Starea duratei simularii

Ajustarea parametrilor de simulare

Lansarea simularii

Analiza rezultatelor

Concepte utilizate:

Stari

Cand circuitul este operational, nodurile logice (vezi simularea mixta analog/digitala) pot sa ia valori sau stari de iesire, conform cu tabelul de mai jos:

Tabel 12

Stare

Semnificatie

Low, fals, negat, deconectat (off)  Low - coborat

High, adevarat, direct, activ(on) High - ridicat

R

Crescator (se schimba din 0 in 1, undeva in intervalul R)

F

Cazator ( trece din 1 in 0, undeva in intervalul R )

X

Indiferenta : poate fi high, low, intermediara sau instabila

Z

Impedanta ridicata: poate fi high, low, intermediara sau instabila

Starile nu corespund neaparat unui nivel de tensiune specific sau chiar stabil. Un nivel logic 1, inseamna doar aceea ca, tensiunea este undeva in intervalul de nivel ridicat din domeniul familiei respective de circuite. Nivelurile crescatoare sau cele cazatoare indica doar ca tensiunea traverseaza pragul 0 - 1 la un anumit moment din intervalul F sau R si nu aceea ca modificarea tensiunii ar urma o anumita panta.

Puteri (Strengths)

Cand un nod logic este comandat de mai mult decat un dispozitiv, PSpice A/D determina nivelul corect al nodului. Fiecare iesire are o valoare de putere (tarie), pe care PSpice o compara cu cele ale iesirilor care comanda nodul. Cel mai puternic, determina nivelul rezultatului la nod. Daca iesirile de aceleasi puteri, dar nivele diferite, comanda un nod, nivelul acestuia va deveni X.

PSpice A/D recunoaste 64 de puteri (strengths). Cea mai slaba este numita Z. Cea mai puternica este numita cea de fortare (forcing strengths). Z -numita impedanta ridicata, este iesirea specifica portilor tristate inactive, sau iesirile dispozitivelor cu colector in gol.

Definirea unui stimul logic

Stimulul defineste intrarea portiunilor logice din circuit, avand un rol similar cu al surselor independente de tensiune sau curent, pentru portiunile analogice ale circuitului. In tabelul urmator sunt cuprinsi stimulii digitali existenti in bibliotecile PSpice A/D:

Tabel 13

Daca se specifica semnalul de intrare cu:

Atunci se utilizeaza:

Pentru tipul de intrare digitala:

Editorul de stimuli

DIGSTIM

semnal sau bus

Definirea proprietatilor

DIGCLOCK

semnal de tact

STIM1

stimul de un bit

STIM4

stimul pe patru biti

STIM8

stimul pe 8 biti

STIM16

16 biti

FILESTIM1

stimul de un bit, dintr-un fisier

FILESTIM2

2 biti - // -

FILESTIM4

idem pentru 4 biti

FILESTIM8

idem pentru 8 biti

FILESTIM16

idem pentru 16 biti

FILESTIM32

idem pentru 32 biti

Definirea semnalelor de intrare cu editorul de stimuli (Stimulus Editor)

Definirea tranzitiilor de tact

Pentru crearea unui stimul de tact, in editorul de stimuli alege stimulul pe care dorim sa-l folosim ca si clock. Din meniul Stimulus, se alege Change Type - si Clock. Se introduc apoi valorile pentru proprietatile semnalului de tact, dupa cum urmeaza:

Tabel 14

Proprietate

Valoare de introdus

Frequency (frecventa)

rata tactului

Duty Cycle

(ciclul de lucru)

Procent de stari high, fata de low, in unitati zecimale sau intregi

Initial Value

(Valoare initiala)

valoarea de pornire: 0 sau 1

Time Delay (intarziere)

durata de timp scursa dupa inceperea simularii, cand semnalul de ceas are efect

Exemplu:

Pentru un semnal de tact cu frecventa de 20MHz, ciclul de lucru 50%, valoarea de pornire 1 si intarzierea de 5ms, proprietatile se seteaza astfel:

Frequency

=20Meg

Duty Cycle

=0.50 (sau 50)

Initial Value

Time Delay

=5ms

Utilizarea obiectului DIGCLOCK

In Capture, pentru definirea semnalului de clock, se editeaza componenta DIGCLOCK dupa cum urmeaza:

Tabel 15

Pentru proprietatea:

Se specifica:

DELAY

durata pana la prima tranzitie a tactului

ONTIME

durata starii High, pentru fiecare perioada

OFFTIME

durata starii Low pentru fiecare perioada

STARTVAL

valoarea Low a ceasului ( implicit : 0)

OPPVAL

valoarea High a ceasului (implicit: 1)

Utilizarea STIM1, STIM4, STIM8 si STIM16

Aceste componente au cate un singur pin pentru conexiune. STIM1 este utilizat pentru a comanda o singura legatura. STIM4, STIM8 si STIM16 comanda busuri care au cate 4, 8 si 16 biti.

Tabel 17 Proprietatile componentelor STIMn:

Proprietate

Descriere

WIDTH

Numar de semnale de iesire (noduri)

FORMAT

Secventa binara care defineste numarul de semnale corespunzatoare unui numar in oricare termen <value> care apare intr-o proprietate COMMANDn. Fiecare cifra trebuie sa fie 1, 3, sau 4 ( binar, octal si hexazecimal); suma cifrelor din FORMAT trebuie sa fie egala cu valoarea WIDTH

IO_MODEL

model de I/O care descrie caracteristicile de comanda ale stimulului

IO_LEVEL

Selectia unui subcircuit de interfata dintr-unul dintre cele patru subcircuite analogice/digitale furnizate cu modelul de I/O al componentei

DIG_PWR

Pinul de alimentare logica utilizat de subcircuitul de interfata

DIG_GND

Pinul de masa logica utilizat de subcircuitul de interfata

TIMESTEP

Numarul de secunde/ ciclu sau pas de tact

COMMAND1-COMMAND16

Declaratiile de specificare a tranzitiei stimulului, inclusiv etichete timp/valoare si constructii conditionale

Utilizarea componentelor FILESTIM

In plus fata de DIGSTIMn, specificatiile stimulului se fac intr-un fisier extern. FILENAME reprezentand numele fisierului care contine specificatiile stimulilor, iar SIGNAME - numele semnalului de iesire.

De exemplu, FILESTIMn, poate fi folosit pentru resetarea unui bistabil: 

Setarea stimulului RESET

Dorim sa-l setam in asa fel incat sa reseteze bistabilul dupa 40ns.

Se creeaza un fisier stimul RESET.STM, care contine:

Reset

0ns 1

40ns 0

Linia de inceput contine numele tuturor semnalelor descrise in fisier. In acest caz, avem unul singur. Celelalte linii sunt iesirile tranzitiilor de stare corespunzatoare semnalelor din header. Proprietatea FILENAME a lui U2 se completeaza cu numele fisierului care contine descrierea semnalului (RESET.STM). Etichetei de pe firul care leaga U2 cu pinul de CLR al bistabilului, i se da acelasi nume Reset (ca si in fisier) si astfel proprietatea SIGNAME se poate lasa nedefinita. In meniul Edit Simulation Settings, fisierul RESET.STM se trece ca si fisier include.

Dispozitive stimul

Acest tip de dispozitive aplica unui nod forme de unda digitale. Scopul este de a furniza intrarea pentru un circuit digital sau portiunea logica a unui circuit mixt. Ele indeplinesc in simulatorul digital rolul pe care-l au sursele independente de tensiune si curent (dispozitivele V si I) in simulatorul analogic.

Exista doua tipuri de dispozitive stimul: generatorul de stimuli (STIM) care foloseste o comanda simpla pentru a genera o gama larga de forme de unda si stimulul fisier (FSTIM) care obtine formele de unda dintr-un fisier extern. Spre deosebire de primitivele digitale, dispozitivele stimul nu dispun de un model de temporizare. Aceasta chestiune este similara cu dispozitivele analogice V si I: caracteristicile de temporizare sunt descrise in dispozitiv si nu intr-un model separat.

Generatorul de stimuli

Formatul:

U<name> STIM(<width>, <format array>)

+ <digital power node> <digital ground node>

+ <node>*

+ <I/O model name>

+ [STIMULUS=<stimulus name>]

+ [IO_LEVEL=<interface subckt select value>]

+ [TIMESTEP=<stepsize>]

+ <command>*

unde:

<width> precizeaza numarul de semnale (noduri) de iesire

<format array> - specifica formatul <value> (valorilor) utilizate in definirea stimulului. Este o secventa de cifre care care specifica numarul de semnale (noduri) pe care il reprezinta cifra corespunzator din <value> Fiecare cifra din <value> se presupune a fi in baza 2, unde <m> este cifra corespunzatoare din <format array>. Fiecare <value> trebuie sa aiba acelasi numar de cifre ca si <format array>. Suma cifrelor <format array> trebuie sa fie <width> si fiecare bit trebuie sa fie 1, 3 sau 4 (adica binar, octal sau hexazecimal).

<digital power node> <digital ground node>

Aceste noduri sunt utilizate de dispozitivele de interfata care conecteaza nodurile analogice la cele digitale sau invers.

<node>*

Unul sau mai multe noduri carora generatorul de stimuli le genereaza iesirea. Numarul de noduri specificate trebuie sa fie acelasi cu <width>.

<I/O model name>

Numele unui model de I/O, care descrie caracteristicile de comanda ale generatorului de stimuli. Modelele de I/O mai contin numele a pana la patru subcircuite de interfata DtoA, care sunt apelate automat de simulator sa trateze nodurile de interfata. In cele mai multe cazuri, modelul I/O numit IO_STM poate fi utilizat din biblioteca "dig_io.lib".

STIMULUS

Parametru optional pentru a face referire la definitia unui stimul.

IO_LEVEL

Parametru-dispozitiv optional care selecteaza unul dintre cele pana la patru subcircuite de interfata DtoA din modelul de I/O. Simulatorul apeleaza automat subcircuitul selectat in situatia in care un <node> se conecteaza la un dispozitiv analogic. IO_LEVEL este implicit 0. Valorile valide sunt:

0 = Valoarea curenta a .OPTIONS DIGIOLVL (implicit=1)

1 = DtoA1

2 = DtoA2

3 = DtoA3

4 = DtoA4

TIMESTEP

Numarul de secunde per ciclu sau pas tact Timpii de tranzitie specificati in ciclurile de clock (cu sufixul C) sunt multiplicati cu aceasta cantitate pentru a determina momentul actual al tranzitiei (vezi <time> in cele ce urmeaza). Daca TIMESTEP nu este precizat, valoarea implicita se ia zero secunde. TIMESTEP nu are nici un efect asupra valorilor <time>,specificate in secunde (sufixul S)

<command>*

Descriere a stimulilor de generat, folosind una sau mai multe din urmatoarele:

<time> <value>

LABEL=<label name>

<time> GOTO <label name> <n> TIMES

<time> GOTO <label name> UNTIL GT <value>

<time> GOTO <label name> UNTIL GE <value>

<time> GOTO <label name> UNTIL LT <value>

<time> GOTO <label name> UNTIL LE <value>

<time> INCR BY <value>

<time> DECR BY <value>

REPEAT FOREVER

REPEAT <n> TIMES

ENDREPEAT

FILE=<file name>

<time>

Specifica momentul producerii unei noi comenzi <value>, GOTO, or INCR/DECR.

Unitati de timp

Valorile de timp pot fi declarate in secunde sau cicluri de clock (TIMESTEP). Pentru a specifica o valoare de timp in cicluri de clock, se foloseste sufixul C. Altfel, unitatile de masura implicite sunt secundele.

Timpi relativi si absoluti

Valorile de timp pot fi absolute cum ar fi: 45ns sau 10c, sau relative la valori anterioare. Pentru a preciza timpi relativi, valorile se prefixeaza cu "+" (+5ns sau +2c).

<value> este valoarea pentru fiecare nod ( 0, 1, R, F, X, or Z ) si este interpretata folosind <format array>.

<label name> este numele etichetei folosite in declaratiile GOTO.

GOTO <label name> salt la urmatoarea declaratie ne-etichetata, dupa declaratia <LABEL = <label name>>

<n> numarul de repetari ale buclei GOTO. -1 specifica o bucla infinita.

Trebuie retinute urmatoarele:

Tranzitiile care utilizeaza valori de timp absolute intr-o bucla GOTO sunt convertite in timpi relativi pe baza timpilor din comanda anterioara si dimensiunea actuala a pasului.

  • GOTO <label name> trebuie sa specifice o eticheta care a fost definita intr-o declaratie LABEL=<label name> anterioara.
  • Valorile de timp trebuie sa fie intr-o ordine strict crescatoare, cu exceptia tranzitiei de dupa GOTO poate fi la acelasi moment ca si GOTO.

O sintaxa mai simpla pentru construirea buclelor contorizate in stimulii digitali este sa se utilizeze REPEAT/ENDREPEAT. Se specifica valoarea contorului, de exemplu:

REPEAT 3 TIMES

+ 5ns 0

+ 5ns 1

ENDREPEAT

Pentru o bucla infinita, se foloseste REPEAT FOREVER (echivalent cu REPEAT -1 TIMES). Totdeauna in bucla REPEAT timpii sunt interpretati ca fiind relativi la inceputul buclei.

Informatia de tranzitie (de exemplu. Perechile timp-valoare) poate fi plasata intr-un fisier si accesata o data sau de mai multe ori din dispozitivul STIM, utilizand FILE= declaratie. Sintaxa pentru continutul fisierului este identica cu ceea ce poate sa apara in corpul dispozitivului STIM in sectiunea <command>.

Exemple de STIM

A Primul exemplu creeaza un semnal de reset, utilizabil pentru setarea sau stergerea unui bistabil la inceputul simularii. Nodul, numit Reset, este setat la un nivel zero la momentul zero si la Z, la momentul t=20ns.

UReset STIM(1,1) $G_DPWR $G_DGND

+ Reset

+ IO_STM

+ 0s 0

+ 20ns Z

Figura 5

Acesta este util atunci cand nodul Reset este comandat de un alt dispozitiv care nu reseteaza bistabilul la momentul zero. Utilizand biblioteca de modele de I/O IO_STM, generatorul de stimuli, comanda cu o putere mare si astfel supra-alimenteaza cealalta iesire. Prin aducerea lui in stare de impedanta ridicata pe durata simularii, generatorul de stimuli nu poate afecta nodul.

B Al doilea exemplu ( ) este unul simplu al unui stimul de ceas, cu impulsuri la fiecare 5ns. Are un nod de iesire OUT1, si formatul este reprezentat in binar. Acest exemplu, descrie timpul relativ la pasul anterior, se utilizeaza IO_STM care este modelul de I/O pentru dispozitivele stimul si este disponibil in biblioteca dig_io.lib

UEx2 STIM( 1, 1 ) $G_DPWR $G_DGND Out1 IO_STM

+ 0s 0 ;La t=0 initializeaza Out1 la zero.

+ REPEAT FOREVER; ;se repeta bucla pentru un timp nedefinit

+ +5ns 1 ;dupa 5ns Out1 este setat la 1

+ +5ns 0 ;dupa 5ns Out1 este setat pe 0

+ ENDREPEAT

Figura 6

C In exemplul din () este ilustrata utilizarea timestep; un ciclu este egal cu 1ns.

UEx3 STIM( 2, 11 ) $G_DPWR $G_DGND 1 2

+ IO_STM TIMESTEP=1ns

+ 0c 00 ;La momentul t =0ns, ambele noduri sunt setate pe 0.

+ REPEAT 4 TIMES ;Continutul buclei se repeta de patru ori

+ +1c 01 ;dupa 1ns nodul 1 este setat pe 0 ;si nodul 2 setat pe 1.

+ +2c 11 ;dupa 2ns ambele noduri setate pe 1.

+ ENDREPEAT

Figura 7

Fisierele stimul

Dispozitivul stimul fisier, FSTIM, permite obtinerea stimulilor digitali dintr-un fisier. Aceste fisiere sunt utile in special cand numarul de stimuli este foarte mare sau, atunci cand intrarile pentru o simulare provin dintr-o alta simulare (sau chiar de la un alt simulator).

Formatul fisierelor stimul

Formatul acestor fisiere este unul simplu si consta din doua parti:

Antetul (header) care contine o lista de nume de semnale si tranzitii care sunt descrise pe doua coloane care contin momentele tranzitiei si valorile corespunzatoare.

Antetele si tranzitiile trebuie sa fie separate de cel putin o linie libera. In exemplul urmator este prezentat un fisier stimul simplu:

* Antet - contine nume de semnale (sunt permise comentariile standard)

Clock, Reset, In1, In2 ; patru nume de semnale

*Inceputul tranzitiilor

0000 ; valorile sunt binare

10ns 1100

20ns 0101

30ns 1110

40ns 0111

Formatul antetului:

[TIMESCALE=<value>]

<signame 1><signame n>

OCT(<signame bit 3> <signame lsb>)

HEX(<signame bit 4> <signame lsb>)

Antetul consta dintr-o lista nume de semnale si o valoare TIMESCALE optionala. .Numele de semnale pot fi separate prin virgula, spatii sau tab. Lista se poate intinde pe mai multe linii dar nu trebuie sa includa caracterul de continuare +. Numele de semnale trebuie sa corespunda coloanelor cu valori in ordinea aparitiei lor in lista. Antetul poate sa contina pana la 255 de nume, cu toate ca este permis un numar maxim de caractere pe linie.

Functiile radacina OCT si HEX permit gruparea a trei respectiv patru semnale intr-o singura cifra octala sau hexazecimala in coloanele valorilor. De retinut ca trebuie incluse exact trei semnale in functia OCT si exact patru in functia HEX. Semnalele afisate fara functiile radacina vor fi luate implicit ca fiind binare.

In exemplul urmator este prezentata utilizarea functiei HEX.

Clock Reset In1 In2

HEX(Addr7 Addr6 Addr5 Addr4) HEX(Addr3 Addr2 Addr1 Addr0)

ReadWrite

0000 00 0 ; spatiile pot fi utilizate pentru a grupa valorile

10n 1100 4E 0

20n 0101 4E 1

30n 1110 4E 1

40n 0111 FF 0

In exemplu avem patru semnale binare, urmate de producerea a doua functii radacina HEX, urmate de un singur semnal binar. In lista tranzitiilor, sunt sapte valori care corespund in ordine listei de semnale.

Asignarea optionala TIMESCALE este folosita pentru a scala valorile de timp din tranzitii. TIMESCALE trebuie sa se gaseasca pe o linie separata. Daca nu este specificata, ia valoarea 1.0.

Formatul tranzitiilor

<time> <value>* Imediat dupa linia libera de dupa antet, simulatorul cauta liniile care contin tranzitiile. Tranzitiile constau dintr-o valoare de timp urmata de una sau mai multe valori corespunzatoare numelor de semnale din antet.

<time> si lista de valori <values> trebuie sa fie separate de cel putin un spatiu sau tab.

<time>

momentele tranzitiilor sunt intotdeauna exprimate in secunde. Pot fi absolute 45ns, 1.2e-8, sau 10; sau relative la momentul anterior. Pentru specificarea timpului relativ, este necesar sa se foloseasca prefixul +: +5ns sau +1e-9. Valorile de timp sunt intotdeauna scalate cu valoarea TIMESCALE. Este util daca valorile de timp din fisier sunt exprimate ca valori intregi dar, unitatile actuale sunt de exemplu 10ns. In cele ce urmeaza, este prezentat un exemplu de utilizare TIMESCALE.

<value>*

Fiecare valoare corespunde unui singur semnal binar (implicit) sau intregului grup de semnale din functiile radacina OCT sau HEX Numarul de valori listate trebuie sa fie acelasi cu numarul total de semnale binare si functii radacina din antet. <values> valide sunt:

Tabel 17

Binar

OCT

HEX

Logic/Numeric

0-7

0-F

Indiferent

X

X

X

Impedanta ridicata

Z

Z

Z

Crescator

R

R

Cazator

F

F

Cand valoarea din coloana HEX sau OCT este un numar, simulatorul il converteste in binar si asigneaza valoarea corespunzatoare a fiecarui bit (zero sau unu) semnalelor din functia radacina. Bitii sunt asignati de la msb la lsb. Cand <value> este X, Z, R, sau F, toate semnalele din functia radacina iau acea valoare. Trebuie mentionat ca in coloana HEX nu poate sa existe o valoare cazatoare (F), deoarece F este utilizat ca valoare numerica.

TIMESCALE=10ns ; trebuie sa apara pe o linie separata

Clock, Reset, In1, In2

HEX(Addr7 Addr6 Addr5 Addr4) HEX(Addr3 Addr2 Addr1 Addr0)

ReadWrite

0 0000 00 0

1 110R 4E 0 ; tranzitia se produce la 10ns

2 0101 4E 1

+ 3 1111 4E 1 ; tranzitia se produce la 50ns

7 011F C3 0 ; tranzitia se produce la 70ns

8 11X0 C3 1

Dispozitivul FSTIM

FSTIM este utilizat pentru a accesa unul sau mai multe semnale dintr-un fisier stimul. Acelasi fisier poate fi accesat de mai mult de un FSTIM. Un dispozitiv FSTIM poate chiar sa faca referire la acelasi semnal ca si alt FSTIM. In timpul simularii poate fi utilizat orice numar de fisiere stimul.

U<name> FSTIM(<# outputs>)

+ <digital power node> <digital ground node>

+ <node>*

+ <I/O model name>

+ FILE=<stimulus file name>

+ [IO_LEVEL=<interface subckt select value>]

+ [SIGNAMES=<stimulus file signal name>*]

Exemple:

U1 FSTIM(1) $G_DPWR $G_DGND

+ IN1 IO_STM FILE=DIG1.STM

U2 FSTIM(4) $G_DPWR $G_DGND

+ ADDR3 ADDR2 ADDR1 ADDR0

+ IO_STM

+ FILE = DIG_2.STM

+ SIGNAMES = AD3 AD2 AD1 AD0

U3 FSTIM(4) $G_DPWR $G_DGND

+ CLK PRE J K

+ IO_STM

+ FILE = FLIPFLOP.STM

+ SIGNAMES = CLOCK PRESET

Optiuni si argumente

<# outputs> specifica numarul de noduri comandate de acest dispozitiv.

<digital power node> <digital ground node>

Aceste noduri sunt utilizate de dispozitivele de interfata care conecteaza nodurile analogice la nodurile digitale sau invers.

<node>*

Unul sau mai multe nume de noduri care rezulta din fisierul stimul. Numarul de noduri precizat trebuie sa fie acelasi cu <# outputs>.

<I/O model name>

Numele unui model de I/O, care descrie caracteristicile de comanda ale stimulului. Modelele de I/O mai contin si numele a pana la patru subcircuite de interfata DtoA apelate automat de simulator pentru a trata nodurile de interfata. In cele mai multe cazuri, modelul de I/O, numit IO_STM poate fi folosit din biblioteca dig_io.lib.

FILE

Numele fisierului stimul care trebuie accesat de catre acest dispoztiv. <stimulus file name> se poate specifica fie ca sir intre ghilimele sau ca expresie text.

IO_LEVEL

Parametru optional care selecteaza unul dintre cele patru subcircuite de interfata AtoD sau DtoA din modelul de I/O. Simulatorul apeleaza subcircuitul selectat in eventualitatea ca un nod care conecteaza o primitiva, conecteaza de asemenea si un dispozitiv analogic. Daca nu se specifica altfel, IO_LEVEL este implicit 0. Valorile valide sunt:

0 = valoarea curenta a.OPTIONS DIGIOLVL (implicit =1)

1 = AtoD1/DtoA1

2 = AtoD2/DtoA2

3 = AtoD3/DtoA3

4 = AtoD4/DtoA4

SIGNAMES

Specifica numele semnalelor din fisierul stimul la care va face referire dispozitivul FSTIM. Numele de semnale corespund, in ordine, nodurilor conectate la dispozitiv.

Definirea duratei de simulare

Setarea analizei tranzitorii


Din meniul PSpice al Capture, se alege New Simulation Profile (Figura 8 ) si i se da un nume. Dintre optiunile tipurilor de analiza, se selecteaza Time Domain (Transient), iar in caseta Run to Time, se introduce durata analizei.


Ajustarea parametrilor de simulare

Din fereastra de setare a simularii, se alege Options, pentru a stabili comportamentul componentelor logice, pe parcursul simularii.


In fereastra Options, se alege simulare la nivel de poarta - Gate-level Simulation.

Selectarea intarzierilor de propagare


Toate dispozitivele digitale - inclusiv primitivele si modelele din biblioteci - deruleaza simulari, folosind caracteristici de temporizare dintre urmatoarele posibilitati: minime, tipice, maxime, sau pentru cazul cel mai defavorabil. Intarzierea se poate seta pentru intreg circuitul sau, pentru dispozitive individuale.


Intarzieri de propagare pentru intreg circuitul - sunt setate implicit in fereastra Options. Daca se doreste stabilirea intarzierilor de propagare pe dispozitiv individual, se deschide fereastra de editare a proprietatilor componentei respective si in pozitia corespunzatoare MNTYMXDLY, se completeaza cu valori de la 1 la 4, unde:

1 - reprezinta minimul

2 - tipic

3 - maximul

4 - cazul cel mai defavorabil (min/max)

Implicit, valoarea respectiva este setata pe 0, ceea ce inseamna utilizarea valorii setate in fereastra Options, pentru intreg circuitul.

Initializarea bistabilelor

X - stare indiferenta (necunoscuta). Este o stare in care raman pana la setarea sau resetarea explicita, sau pana la intrarea intr-o stare cunoscuta, pe clock.

0 - toate dispozitivele de acest tip, vor fi aduse la zero

1 - toate dispozitivele de acest tip sunt presetate

Pornirea se face cu comanda Run din meniul PSpice (din Capture) sau butonul de pe bara de utilitati.

Analiza rezultatelor

Afisarea formelor de unda se face cu un osciloscop soft. Diagrama de timp produsa de simulare, poate fi observata si modificata interactiv. In cazul simularilor mixte analogice/digitale, se poate face afisarea simultana a celor doua tipuri de variatii in timp.

Se genereaza doua forme de iesire: fisierul cu rezultatul simularii si cel cu datele diagramelor de timp. Calculele si rezultatele raportate in fisierele de simulare, reprezinta o contabilizare a simularii si totodata o metoda informativa si flexibila de evaluare a rezultatelor simularii.

Din meniul comenzii Trace, se alege Add Trace, pentru a mai adauga semnale la afisare.

Se pot construi expresii, selectand operatorii, functiile si/sau macrourile din lista Functions and Macros si Simulation Output Variables. In caseta Trace Expression, se pot tasta direct expresiile de urmarit IN1, OUT2, etc.

Adaugarea de semnale logice la o diagrama (Figura 10)

La definirea expresiilor logice de urmarire (trace), se pot include combinatii de semnale digitale, busuri, semnale constante, constante de bus operatori logici, macro, etc.

In acest scop, se aplica urmatoarele reguli:

O expresie sau o operatie logica dintre doi operanzi bus, va avea ca rezultat o valoare bus suficient de larga incat sa poata contine rezultatul.


O operatie aritmetica sau logica dintre un operator semnal si unul bus, rezulta intr-o valoare de bus.

Sintaxa pentru exprimarea unei variabile sau expresii de iesire, este:

digital_output_variable[;display_name]

sau:

digital_expression[;display_name]

Adaugarea busurilor la afisarea diagramelor de timp

Pot fi evaluate si afisate pana la 32 de semnale ca bus, chiar daca n-au facut parte initial din magistrala. Cand se adauga un bus, lista de semnale trebuie inchisa intre paranteze acolada.

Sintaxa completa este:

[;[display_name][;radix]]

sau

[;display_name][;radix]]

unde:

signal_list

Lista de nume de noduri digitale (pana la 32), separate de virgula sau spatiu, intr-o ordine descrescatoare

bus_prefix[msb:lsb]

Varianta de exprimare a semnalelor de pe bus

[;display_name]

(optional)

Sir text, pentru etichetarea busului pe grafic, in locul folosirii numelor implicite 

[;radix]

(optional)

Sistemul de numeratie utilizat pentru afisarea valorilor de pe bus

Valorile acceptate pentru radix sunt:

Binar - B

Zecimal - D

Hexazecimal - H sau X

Octal - O

Exemple:

; A; O - semnifica un bus de trei biti, Q0 fiind cel mai putin semnificativ. Reprezentarea grafica se va face in octal, avand eticheta A.

; ;d - bus de date de patru biti. Valorile vor avea o reprezentare zecimala si, din moment ce nu s-a specificat nici o eticheta, va aparea cu numele din lista de semnale.

este echivalenta cu


Urmarirea incalcarilor de temporizare si a hazardului

Cand apar probleme in schema cum ar fi: violari de setare/mentinere, latimea impulsurilor sau hazardul de temporizare pentru situatia cea mai defavorabila, PSpice A/D, va salva mesaje in fisierele rezultat sau in cele de date (.out, .csd) Se pot selecta mesaje sau formele de unda asociate si mesajul detaliat, apare imediat. PSpice poate detecta deasemenea hazardurile persistente, care pot avea efect potential asupra iesirii primare a circuitului sau, asupra starii interne a schemei.

Hazardul persistent

Problemele logice constau de obicei in incalcari si/sau hazarduri de temporizare. Incalcarile temporizarii, le includ pe cele de SETUP, HOLD sau de durata minima a impulsului WIDTH, din specificatiile de componenta. Acest tip de violare poate produce o modificare in comportamentul de stare al schemei si posibil a rezultatului (respectiv iesirea schemei).


De exemplu, (Figura 13) se poate considera o schimbare asincrona a datelor la intrarea circuitului. O modificare a datelor foarte aproape de frontul tactului e1, duce la o violare de SETUP. Intr-o implementare hard, iesirea bistabilului, se poate modifica sau nu. Totusi, unele scheme nu sunt sensibile la aceste date individuale pierdute, deoarece la al doilea clock (e2 in exemplu), stocheaza datele. Proiectantul trebuie sa tina cont de importanta erorilor de temporizare asupra comportamentului global al schemei.

Hazardurile de temporizare sunt mai usor de identificat prin simularea unei scheme pentru functionare in cazul cel mai defavorabil, de regula aproape de limitele de timp critice. In asemenea situatii, PSpice raporteaza conditii de ambiguitate (AMBIGUITY CONVERGENCE). Aceste situatii, pot sa creeze sau nu probleme in functionarea schemei.

Totusi, se pot identifica situatii in care pot provoca probleme majore. In exemplul urmator este prezentata o asemenea situatie. Datorita sosirilor simultane a doua ambiguitati de temporizare (cu origini independente), la intrarile portii G1, se semnaleaza hazard (AMBIGUITY CONVERGENCE), ceea ce inseamna ca la iesirea G1 poate aparea un glitch. Trebuie retinut faptul ca iesirea portii G1, comanda doua dispozitive: G2 si L1. Efectele glitch-ului asupra iesirii portii G2 nu exista deoarece, pe cealalta intrare avem in permanenta 0 (adica iesirea va fi 0, indiferent de semnalul de pe intrarea cealalta ). In schimb, poate determina functionarea incorecta a bistabilului. Acesta este un exemplu de hazard persistent.

Datorita faptului ca poate avea influenta negativa asupra functionarii, hazardul trebuie eliminat, corectand schema.

Simulare mixta analog/digitala

Interconectarea componentelor analogice si digitale

Inaintea simularii, rularea programului Netlist, traduce schema intr-o lista de componente legate prin noduri. Lista de conexiuni contine o vedere plana a circuitului (fara ierarhii). Pspice A/D extrage definitiile tuturor componentelor modelate, ca subcircuite, privindu-le ca si o colectie de componente primitive si conexiuni prin noduri.

Primitivele logice care intra in componenta dispozitivelor, determina modul in care PSpice A/D proceseaza o interfata analogica/logica, cu componenta. Adica, modelul de I/O al fiecarei primitive logice conectate la interfata, ofera PSpice, informatia necesara.

PSpice recunoaste trei tipuri de noduri: analogice, logice si de interfata. Tipul nodului, este determinat de componenta legata la el. Daca toate componentele legate la un nod sunt analogice, atunci nodul este analogic. Daca sunt logice, avem de-a face cu un nod logic si in situatia in care sunt mixte, nodul este de interfata.

PSpice A/D "rupe" automat nodurile de interfata intr-un nod pur analogic si unul sau mai multe noduri digitale prin inserarea unuia sau mai multor sub-circuite analogice/digitale de interfata. Conecteaza deasemenea o alimentare la sub-circuitul de interfata, pentru a completa generarea interfetei.

Pentru vizualizarea rezultatelor simularii la o interfata analog/digitala din schema, utilizand analizorul grafic de forme de unda:

Trebuie plasat un marcaj pe netul de interfata corespunzator. Nodurile aditionale create de PSpice raman transparente.

Se vizualizeaza rezultatele selectand observatii (traces) din lista variabilelor de iesire.

Selectia subcircuitului de interfata

Subcircuitul de interfata analog-digital (AtoD) si cel digital-analog (DtoA), trateaza translatia dintre tensiunile analogice/impedante si starile logice, sau invers. Componenta principala a unui subcircuit de interfata este sau o componenta N (intrare logica: DtoA), sau O (iesire logica: AtoD). Componentele N si O, apar incapsulate in bibliotecile de modele, nefiind astfel necesara definirea lor atunci cand se utilizeaza bibliotecile standard.

Fiecare primitiva digitala care cuprinde descrierea subcircuitului unei componente, contine un model de I/O care descrie caracteristicile de incarcare si comanda. Se poate alege intre patru nivele de interfata ale modelelor de sub-circuite, in functie de acuratetea dorita pentru simulare:

Nivel

Subcircuit

Definitie

AtoD1/DtoA1

AtoD genereaza nivele R, F si X intermediare

AtoD2/DtoA2

AtoD nu genereaza nivele R, F si X intermediare

AtoD3/DtoA3

(idem nivelul 1)

AtoD4/DtoA4

(idem nivelul 2)

Bibliotecile OrCAD furnizeaza doua modele DtoA diferite in seriile HC/HCT: modelul simplu si cel elaborat. Modelul simplu se specifica alegand nivelul 1 sau 2, iar cel elaborat, cu nivelul 3 sau 4.

Pentru selectarea nivelului de interfata implicit, valabil pentru intreg circuitul, se selecteaza in caseta Digital Setup - Default A/D interfaces (daca proprietatea IO_LEVEL este 0, se va folosi nivelul implicit). Se pot seta nivele de interfata individuale, completand campul IO_LEVEL cu valorile dorite (intre 1 si 4)

Specificarea alimentarilor digitale - se foloseste pentru alimentarea subcircuitelor de interfata, create automat de PSpice A/D cand se simuleaza interfetele analog/digitale. Acestea pot fi adaugate automat sau, pot fi create de utilizator. Pentru proiectele exclusiv digitale, nu este necesara specificarea alimentarilor. Specificarea lor poate mari durata simularii si utilizarea memoriei.


Generarea interfetelor si a numelor de noduri

Majoritatea proceselor de acest tip, implica determinarea conectarii primitivelor analogice si digitale si daca aceasta exista, inserarea u


nui subcircuit de interfata pentru fiecare conexiune digitala. Aceasta transforma nodul de interfata intr-un nod pur analogic, care acum face legatura cu terminalul analogic al subcircuitului de interfata. Pentru incheierea conexiunii originale, PSpice creaza un nou nod digital, intre terminalul digital al subcircuitului de interfata si primitiva logica. Pentru ca trebuie sa creeze noduri digitale, este necesar sa atribuie nume unice. Generarea de nume are loc:

Nodul analogic retine numele nodului de interfata original - fie numele de fir etichetat din schema, fie numele de nod generat automat, pentru firele ne-etichetate.

Fiecare nume nou de nod digital, consta din numele de fir etichetat din schema, sau numele de nod generat automat pentru un fir ne-etichetat, adaugandu-i-se $AtoD sau $DtoA. Daca nodul este atasat mai multor componente digitale, celui de-al doilea nod i se adauga $AtoD2 sau $DtoA, etc.

3.4.9 Temporizarea pentru cazul cel mai defavorabil

Producatorii de componente electronice specifica in general caracteristicile acestora si tolerantele admise. Acestea sunt exprimate in domenii de operare sau, ca abateri in jurul valorii unui punct tipic de operare.

Proiectantii trebuie sa asigure functionalitatea produsului lor asa ca trebuie sa tina cont de faptul ca una sau mai multe variante ale aceluiasi tip de componenta utilizate in schema, pot sa aiba intarzieri de propagare oriunde in domeniul specificat. In general, aceasta problema se rezolva cu simulari pentru intarzieri minime, tipice si maxime, verificand functionalitatea pentru situatiile extreme. Simularile rulate in aceste conditii, nu reusesc totusi sa descopere toate problemele de proiectare care apar doar in cazul combinatiilor de componente lente si rapide. PSpice A/D dispune si de optiunea de simulare pentru cazul cel mai defavorabil. In aceasta situatie, simularea se deruleaza dupa anumite tipare, ceea ce permite localizarea problemelor de temporizare in prezenta restrictiilor impuse de un anumit stimul.

Pentru a face analiza in cazul cel mai defavorabil, din fereastra Simulation Settings, se alege Options si se selecteaza Gate-level Simulation. Pentru Timing Mode, se specifica Worst-case (min/max), iar bistabilii se initializeaza cu X. Default I/O level for A/D interfaces →1.

Metodologia

Combinarea tolerantelor componentelor si a raspunsului functional al circuitului la un anumit stimul, reprezinta o problema pentru proiectant. Trebuie, ca la final, toate circuitele sa lucreze corect. Sistemele bine proiectate, au un inalt grad de imunitate fata de efectele combinatiilor facute intre diferitele tolerante ale componentelor individuale.

Simularea logica pentru cazul cel mai defavorabil, ajuta la depistarea problemelor de proiectare, care apar in functie de natura stimulului aplicat.

Cea mai productiva cale de definire a unui stimul este aceea de utilizare a testarii functionale si anume: un stimul desemnat sa opereze asupra schemei intr-o maniera normala, verificand astfel toate trasaturile importante, in combinatie cu un set de date practice.

Metodologia de simulare in timp, trebuie sa includa pasii:

  • specificarea clara a caracteristicilor intarzierilor pe dispozitiv.
  • specificarea functionala a comportamentului circuitului, inclusiv starile sau conditiile de 'indiferent' (X)
  • un set de stimuli desemnat sa verifice functionarea schemei in ansamblu.

O strategie de verificare uzuala este, identificarea pas-cu-pas a sectiunilor din schema care trebuie incercate cu un anumit sub-set de stimuli, urmata de verificarea raspunsului acesteia in conditiile date.

Aceasta faza trebuie derulata in conditii normale de simulare (nu worst-case), cu intarzierile tipice ale elementelor. Metrica de baza in aceasta situatie, este data de raspunsul de stare al schemei. De remarcat ca, acest raspuns consta, in cele mai multe cazuri, din stari definite (nu contine X).

A doua faza, este simularea pentru cazul cel mai defavorabil, cu aplicarea stimulilor functionali corecti si compararea raspunsurilor (normal - caz defavorabil). Se cerceteaza diferentele in puncte de observare primare (iesirile circuitului, variabile de stare interne), in special in cele cu stare X, pentru a determina cauzele aparitiei lor.

Pornind din aceste puncte, se foloseste analizorul de forme de unda si schema circuitului, pentru a determina punctul in care a aparut problema. e porneste de la iesire spre intrare, urmarind legaturile.

Dupa identificarea cailor si cunoscand temporizarea relativa a acestora, se poate:

  • modifica stimulul ( in cazul unui hazard simplu de convergenta), pentru a rearanja temporizarea relativa a semnalelor implicate.
  • schimba una sau ambele cai de intarziere, pentru a rearanja temporizarea relativa, adaugand sau eliminand logica sau, prin inlocuirea componentelor cu altele de acelasi tip dar, cu alte caracteristici de intarziere.

In cazul hazardului cu ambiguitate cumulativa, cea mai probabila solutie este de a scurta calea implicata. Se poate realiza in doua moduri:

  • prin adaugarea unui punct de sincronizare, un bistabil de exemplu sau, trecerea semnalului cu dubii printr-o poarta cu un semnal de clock (inainte sa ajunga sa aiba durate care nu mai pot fi controlate).

  • inlocuirea componentelor mai rapide de pe calea respectiva, astfel incat sa se incetineasca procesul de producere a ambiguitatii.

Limitarea dimensiunii fisierelor utilizand marcaje

Unul dintre motivele pentru care fisierele cu datele formelor de unda au dimensiuni mari, este acela ca implicit, PSpice A/D memoreaza toate tensiunile net-urilor si curentii prin dispozitive, la fiecare pas (de exemplu, punctele de timp sau frecventa). Cu toate acestea, daca se plaseaza marcaje pe schema inainte de simulare, se salveaza doar rezultatele pentru firele sau pinii marcati.

Pentru plasarea marcajelor, in fereastra Edit Simulation Settings, se alege Data Collection. Se seteaza salvarea doar la pozitia unde se gasesc marcaje.

In Capture din fereastra PSpice, se alege comanda Markers si tipul de marcaj.

Utilizarea datelor de simulare din fisiere multiple

Se pot incarca date de simulare din mai multe fisiere intr-o singura fereastra Probe, prin adaugarea (append) acestora.

In PSpice A/D, din meniul File, Append Waveform (.DAT).

Anexa 1

Tabelul primitivelor digitale

Tip

Descriere

Porti standard

BUF

INV

AND

NAND

OR

NOR

XOR

NXOR

BUFA

INVA

ANDA

NANDA

ORA

NORA

XORA

NXORA

AO

OA

AOI

OA

Porti Tristate

BUF3

INV3

AND3

NAND3

OR3

NOR3

XOR3

NXOR3

BUF3A

INV3A

AND3A

NAND3A

OR3A

NOR3A

XOR3A

NXOR3A

Porti de transfer bidirectionale

NBTG

PBTG

Bistabili si latch-uri

JKFF

DFF

SRFF

DLTCH

Rezistente pullup/pulldown

PULLUP

PULLDN

Linii de intarziere

DLYLINE

Retele logice programabile

PLAND

PLOR

PLXOR

PLNAND

PLNOR

PLNXOR

PLANDC

PLORC

PLXORC

PLNANDC

PLNORC

PLNXORC

Memorii

ROM

RAM

Convertoare A/D & D/A multi-Bit

ADC

DAC

Comportamentale (Behavioral)

LOGICEXP

PINDLY

CONSTRAINT

buffer

inversor

poarta  SI (AND)

poarta SI-NU (NAND )

poarta SAU (OR )

poarta SAU-NU (NOR)

SAU EXCLUSIV

SAU EXCLUSIV negat

buffer array

inverter array

AND gate array

NAND gate array

OR gate array

NOR gate array

exclusive OR gate array

exclusive NOR gate array

AND-OR (poarta compusa)

OR-AND (poarta compusa)

AND-NOR (poarta compusa)

OR-NAND (poarta compusa)

buffer

inversor

AND

NAND

OR

NOR

exclusive OR

exclusive NOR

buffer array

inverter array

AND gate array

NAND gate array

OR gate array

NOR gate array

exclusive OR gate array

exclusive NOR gate array

N-channel transfer gate

P-channel transfer gate

J-K, negative-edge triggered

D-type, positive-edge triggered

S-R gated latch

D gated latch

pullup resistor array

pulldown resistor array

delay line

AND array

OR array

exclusive OR array

NAND array

NOR array

exclusive NOR array

AND array, true and complement

OR array, true and complement

exclusive OR array, true and complement

NAND array, true and complement

NOR array, true and complement

exclusive NOR array, true and complement

read-only memory

random access read-write memory

convertor A/D multi-bit

convertor D/A multi-bit

expresie logica

intarziere pin-la-pin

verificare restrictii



Analiza Monte Carlo calculeaza raspunsul circuitului la modificarile valorilor componentelor prin modificarea aleatoare a parametrilor modelului pentru care avem specificata o toleranta. Analiza furnizeaza date statistice cu privire la imactul variantei parametrilor unor dispozitive.

MiNimumTYpicalMaXimumDeLaY

DIGitalMiNimumTYpicalMaXimum

DIGitalInputOutputLeVeL





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.