6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity)...

43
1 6. VHDL-AMS Dan Burdia Facultatea de Electronică şi Telecomunicaţii Universitatea Tehnică “Gh. Asachi” din Iaşi

Transcript of 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity)...

Page 1: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

1

6. VHDL-AMS

Dan BurdiaFacultatea de Electronică şi TelecomunicaţiiUniversitatea Tehnică “Gh. Asachi” din Iaşi

Page 2: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

2

Cuprins

6.1 VHDL-AMS. Introducere. ConcepteSe vor prezenta principiile VHDL-AMS şi câteva concepte asociate limbajului

6.2 Modelarea circuitelor analogiceSe vor prezenta conceptele modelării cu VHDL-AMS a circuitelor electrice analogice sau cu comportare continuă în timp.

6.3 Modelarea semnalelor mixte, analog-digitale.

Se vor prezenta tehnicile de modelare a semnalelor mixte, analog-digitale şi modul în care limbajul asigură suportul pentru interacţiunea dintre partea analogică şi cea digitală a modelelor.

Page 3: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

3

Referinţe

P1076.1 Standard VHDL Analog and Mixed-Signal Extensions (VHDL-AMS)

• http://www.eda.org/vhdl-ams/P1076.1.1 Standard VHDL Analog and Mixed-Signal Extensions -Packages for Multiple Energy Domain Support

• http://mixedsignal.eleg.uark.edu/stdpkgs.html

Southampton VHDL-AMS Validation Suite• http://www.syssim.ecs.soton.ac.uk/

Simulatoare pentru VHDL-AMS• Sinplorer7.0 – www.ansoft.com (gratuit în mediul academic)• SMASH - http://www.dolphin.fr/medal/smash/smash_overview.php

Page 4: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

4

6.1 VHDL-AMS. Introducere. Concepte

VHDL-AMS este un limbaj de modelare a sistemelor cu semnale mixte bazat pe VHDL (Std IEEE 1076-1993)Reprezintă, în fapt, o extensie (superset) a limbajului VHDL fiind standardizat în 1999: (IEEE 1076.1-1999)

AMS→ Analog-Mixed Signals

Limbajul asigură suport pentru modelarea la diverse nivele de abstractizare atât în domeniul electric cât şi în alte domenii (mecanic, termic, etc)Sistemele care pot fi modelate trebuie să fie sisteme cu componente discrete (lumped) care pot fi descrise de ecuaţii diferenţiale ordinare şi ecuaţii algebrice

Page 5: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

5

Introducere. Concepte (cont)

Limbajul nu specifică o anumită tehnică pentru rezolvarea ecuaţiilor dar defineşte rezultatele care pot fi realizate.Soluţia ecuaţiilor poate conţine discontinuităţi (Limbajul poate modela comportarea continuă în timp dar şi cu discontinuităţi).Ecuaţiile care descriu comportarea continuă sunt bazate pe legile conservării energiei (Kirchoff, Newton). Limbajul permite condiţii iniţiale, comportare definită pe porţiuni.Interacţiunea dintre partea digitală şi partea analogică a unui model este suportată de limbaj într-o manieră eficientă şi flexibilă. De asemenea, VHDL-AMS asigură suport pentru simularea în domeniul frecvenţă de semnal mic şi zgomot.

Page 6: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

6

Elemente noi în VHDL-AMS faţă de VHDL

Extensii ale VHDL în VHDL-AMS:

NatureTerminalQuantityAcrossThroughAtribute şi cantităţi impliciteInstrucţiuni simultane

Page 7: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

7

Modelarea în VHDL-AMS

Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.Entitatea specifică interfaţa modelului

• Porturi• Parametri generici

Arhitectura conţine implementarea modelului• - Stil structural de descriere (instanţiere componente)• - Stil comportamental realizat cu:

• Instrucţiuni concurente (atribuire, procese) – pentru a descrie comportarea bazată pe evenimente (event-driven)

• Instrucţiuni simultane – descriu comportarea continuă în timp

Page 8: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

8

6.2 Modelarea sistemelor analogice

Modelarea unui rezistor

Entity – interfaţa modeluluiPinii “p1” şi “p2” constituie interfaţa dintre model şi lumea exterioarăNatura acestor pini este definită în “declaraţia de entitate” a modelului

Page 9: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

9

Modelare rezistor

Declaraţia de entitate

entity resistor isport (

terminal p1, p2 : electrical);end entity resistor;

p1 şi p2 sunt pini electrici

Page 10: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

10

Modelare rezistorExplicaţii declaraţie de entitate

Page 11: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

11

Modelare rezistorArhitectura – comportarea modelului

Arhitectura descrie comportarea modeluluiÎn acest caz, comportarea modelului este guvernată de legea lui Ohm.

i = v / resArhitectura:

Page 12: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

12

Modelare rezistorExplicaţii arhitectura

Page 13: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

13

Tipuri de obiecte în VHDL-AMS

În VHDL-AMS sunt 6 clase de obiecte:• Constante• Terminale – numai în VHDL-AMS• Cantităţi – numai în VHDL-AMS• Variabile• Semnale• Fişiere

Pentru modelarea analogică sunt utilizate uzual obiectele constante, terminale şi cantităţi.

Page 14: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

14

Constante

Obiectele din clasa constant reţin o valoare de un anumit tip pentru a fi utilizată într-un model.Valorile unei constante nu pot fi modificate în timpul simulării.Exemple:

constant res : real := 50.0; -- constanta care retine valori numere reale siinitializata cu valoarea reala 50.0 (obligatoroi punct zecimal!)constant count : integer:=3; -- constanta de tip integer initializata cu 3.constant tp: time := 5 ns; -- constanta de tip time initializata cu 5 ns.

Constantele fac modelele mai uşor de înţeles şi de modificat• i == v/50.0; -- stil de modelare nerecomandat• i == v/res; -- stil de modelare recomandat

Obiectele din clasa cantităţilor şi terminalelor vor fi prezentate mai târziu.

Page 15: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

15

Domeniu fizic (nature)

VHDL-AMS poate modela sisteme atât din domeniul electric dar şi din alte domenii fizice (mecanic, termic, etc)Domeniul fizic este definit cu cuvântul nature.Un anumit domeniu fizic (nature) este o descriere a tipurilor valorilor care sunt utilizate pentru a descrie acel domeniu fizic.Valorile unui domeniu fizic pot fi accesate prin atributele unuiterminal.Atributele includ:

• Compatibilitatea cu alte terminale• Terminalul de referinţă a domeniului fizic• Aspectele corespunzătoare unei laturi (branch) din domeniu (acrossşi through)

Page 16: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

16

Domeniu fizic (nature) (cont.)

Aspectul across (pe) – reprezintă mărimea fizică din domeniul respectiv care produce un efect (are rol de mărime conducătoare). Exemple: tensiunea, temperatura, presiunea Aspectul through (prin) – reprezintă mărimea fizică condusă în domeniul respectiv, ca efect al mărimii across. Exemple: curent, viteza de variaţie a căldurii, viteza de curgere a lichidului.Fiecare domeniu fizic are un nod de referinţă (reference) care este specificat printr-un nume (ex: ground pentru sistemele electrice).În VHDL-AMS numai terminalele pot fi declarate ca fiind al unui domeniu fizic.Declararea domeniului fizic este realizată, uzual, într-un package.

Page 17: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

17

Domeniu fizic (nature) (cont.)

Declararea domeniului fizic Electrical (electric)subtype Voltage is REAL tolerance “voltage”;subtype Current is REAL tolerance “current”;nature Electrical is

Voltage acrossCurrent throughGround reference;

Declararea domeniului fizic termic Thermal (termic)subtype Temperature is REAL tolerance “temp”;subtype Heatflow is REAL tolerance “heat”;nature Thermal is

Temperature acrossHeatflow throughTh_ref reference;

Ex. Package-uri IEEE: electrical_systems, mechanical_systems, thermal_systems

Page 18: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

18

Cantităţi (quantities)

Cantităţile reprezintă o nouă clasă de obiecte în VHDL-AMS pentru a reprezenta necunoscutele în sistemul de ecuaţii diferenţiale ordinare (ODE) care descrie comportarea sistemelor analogice.Cantităţile pot fi scalare sau compozite (array sau record)Cantităţile pot reţine doar valori de tip REAL.Un obiect cantitate poate apare oriunde o valoare de acel tip este permisă, de ex într-o expresie.Valoarea unei cantităţi este determinată de simulator.Simulatorul rezolvă sistemul de ecuaţii format de instrucţiunile simultane (ecuaţii) din model şi ecuaţile implicite care rezultă din legile conservării energiei şi interacţiunea modelelor.

Page 19: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

19

Cantităţi (quantities) -cont

Cantităţile pot fi declarate în orice loc în care poate fi declarat un semnal, cu excepţia unui package.

Exemplu: declararea a trei cantităţi de tip real:quantity q1, q2, q3: real;

O cantitate poate fi, de asemenea, declarată ca un element de interfaţă (port) al unui model. Cantităţile port permit, astfel, modelarea de tip signal-flow.

Exemplu: declaraţia de entitate a unui model signal flow:

Când acest model este instanţiat într-o arhitectură a unui alt model, fiecare cantitate din interfaţă este asociat cu o cantitate declarată în arhitectura respectivă.

Page 20: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

20

Cantităţi (quantities) -cont

Exemplu de instanţiere a modelului summer:a1: entity summer port map (in1=>q1, in2=>q2, sum=>q3);

Prin asocierea cantităţilor acestea sunt constrânse să fie egale.

Tipuri de cantităţi:Cantităţi libere (free quantities) – obiecte analogice neconservative:

quantity pwr : real;Cantităţi de ramură (branch quantities) – obiecte analogice utilizate pentru sisteme conservative:

quantity v across i through p1 to p2;Cantităţi sursă – pentru domeniul frecvenţă.

quantity spectral_src real spectrum mag, phase;

Page 21: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

21

Cantităţi libere

Pot fi utilizate pentru a reprezenta valori analogice neconservative.Sunt adesea utilizate pentru clarificarea descrierii unui model şi a oferi posibilitatea vizualizării formelor de undă interne modelului.Cantităţile libere pot fi, de asemenea, utilizate pentru a descrie modele tip signal-flow (diagrama bloc).

quantity internal_variable : real := 5.0;-- este declarată cantitatea internal_variable de tip real şi iniţializată cu 5.0.

quantity power : real;-- este declarată cantitatea power de tip real şi iniţializată implicit cu valoarea cea mai

din stânga a tipului real (-1.0e+38). În general, trebuie evitată iniţializarea implicită.

Page 22: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

22

Cantităţi de ramură (BranchQuantities)

Cantităţile de ramură sunt obiecte analogice utilizate pentru sisteme energetice conservative. Pentru sistemele electrice, aceste cantităţi sunt utilizate pentru a accesa tensiunea sau curentul unui terminal. Cantităţile de ramură reprezintă necunoscutele sistemelor de ecuaţii care descriu sistemele conservative.

În VHDL-AMS ecuaţiile care descriu sistemele conservative (de ex, legile lui Kirchhoff pentru sisteme electrice) nu trebuie notate explicit de către utilizator. Numai ecuaţiile constitutive ale elementelor laturilor rămân în responsabilitatea utilizatorilor

Descrierea sistemelor conservative utilizează un model conceptual bazat pe graf.Ex: graful asociat unui circuit:

Nodurile grafului corespund nodurilor echipotenţiale din circuitLaturile grafului corespund ramurilor

din circuit prin care circulă curentul.Acest model conceptual nu impune algoritmului

de rezolvare analogică să selecteze o tehnică anume de formulare a ecuaţiilor (de ex. Metoda nodală modificată)

Page 23: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

23

Cantităţi de ramură - Tipuri

Sunt două tipuri de cantităţi de ramură:Cantităţi across (pe) – sunt cantităţi care produc un efect (are rol de mărime conducătoare). Exemple: tensiunea, temperatura, presiunea. Ele corespund diferenţei de potenţial dintre două noduri din graf.Cantităţi through (prin) – sunt cantităţi cu efect gen curgere, ca efect al mărimii across. Exemple: curent, viteza de variaţie a căldurii, viteza de curgere a lichidului. Aceste cantităţi corespund corespund ramurilor din graf.

Ecuaţiile constitutive ale sistemelor conservative sunt exprimate prin intermediul cantităţilor across şi through a unuia sau mai multor laturi folosind instrucţiuni simultane. (ex: Pt. rezistor: i=v/r;)Orice cantitate de ramură se declară în raport cu două terminale. Terminalul reprezintă al doilea nou obiect prezent în VHDL-AMS faţă de VHDL.

Page 24: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

24

Cantităţi implicite

În plus faţă de cantităţile declarate explicit, există o serie de cantităţi care se consideră declarate implicit prin utilizarea unor atribute pentru cantităţile explicite, sub forma: Q’atribut

Q’dot – cantitate care reţine valoarea derivatei cantităţii Q în raport cu timpulEx: v == L*i’dot; -- v = L*di/dt

Q’integ - cantitate care reţine valoarea integralei cantităţii Q în raport cu timpulEx: v == (1/C)*i’integ + init; -- v = (1/C) ∫i dt + k

Q’delayed(T) - cantitate care reţine valoarea cantităţii Q după o întârziere TEx: v_out == v_in’delayed(td);

Alte atribute:• Q’SLEW [(maxrise [,maxfall])] – cantitate care urmăreşte cantitatea Q, în limita pantelor maxime

de variaţie specificate• Q’LTF (num , den) – cantitate egală cu funcţia de transfer Laplace a cantităţii Q• Q’ZOH (Tsampl [, init_delay] ) – cantitate care eşantionează şi reţine valoarea cantităţii Q.

Cantităţi implicite declarate prin utilizarea de atribute pentru semnale:• S’RAMP (trise, tfall) – cantitate care urmăreşte semnalul S, tranziţiile având timpii specificaţi.

• S’SLEW (slope_r, slope_f) – cantitate care urmăreşte semnalul S, tranziţiile având pantelespecificate.

Page 25: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

25

Terminale

Terminalele reprezintă porturile în sistemele conservative şi comportare continuă în timp.La declararea unui terminal se specifică “natura” (domeniul fizic) căreia îi aparţine.Ex: Declararea a două terminale şi a cantităţilor de ramură cu referire la cele două terminale:

terminal p1, p2 : electrical;quantity v across i through p1 to p2 ;

Tipul unei cantităţi de ramură nu este declarat explicit. Tipul rezultă din natura terminalelor sale. Astfel, cantitatea across v este de tip voltage în timp ce cantitatea i este de tip current, voltage şi current fiind subtipuri pentru aspectele across şi through declarate în definiţia domeniului fizic electrical.Un terminal poate fi declarat oriunde este permisă declararea unui semnal. De exemplu, următoarea linie declară terminalele unei diode:

port (terminal anod, catod:electrical)

Page 26: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

26

Terminale (cont.)

Declararea unui terminal T determină implicit crearea a două cantităţi:Cantitatea referinţă (T’Reference) – este o cantitate “across” între terminalul T şi terminalul de referinţă al domeniului fizic respectiv (de exemplu, tensiunea de la terminalul T la masă). Cantitatea contribuţie (T’Contribution) este o cantitate “through” a cărei valoareeste egală cu suma algebrică a tuturor cantităţilor “through” incidente terminalului T (de exemplu, curentul care circulă printr-un terminal).

Ecuaţiile conservative ale unui sistem (de exemplu, ecuaţiile lui Kirchhoff în domeniul electric) rezultă din graful creat de cantităţile şi terminalele declarate precum şi de modul de conectare în noduri a terminalelor diverselor ramuri.Prin definiţie, un nod reprezintă un set de terminale scalare creat prin asocieri de terminal.Valoarea fiecărei cantităţi across este constrânsă să fie egală cu diferenţa dintre cantităţile referinţă ale terminalelor sale. Toate cantităţile referinţă ale terminalelor asociate într-un nod sunt constrânse să fie egale. De asemenea, cantitatea contribuţie a terminalului de referinţă este constrânsă să fie egală cu 0.

Page 27: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

27

Instrucţiuni simultane

Instrucţiunile simultane exprimă în mod explicit ecuaţiile algebrice şi diferenţiale care, împreună cu ecuaţiile implicite, guvernează evoluţia valorilor cantităţilor din cadrul unui model. Sunt 3 tipuri de instrucţiuni simultane.

Instrucţiunea simultană simplăSintaxa:

[eticheta :] expresie == expresie [toleranta];

Instrucţiunea simultană condiţională (if)Sintaxa:

[eticheta :] if conditie use{ instrucţiuni_simultane}

{ elsif condition use{instrucţiuni_simultane} }

[ else{instrucţiuni_simultane} ]

end use [label] ;

Exemplu: v == res_value * i ;

Exemplu:if vmax = REAL’RIGHT use

verr== vin ;elsif vin > vmax use

verr== vmax ;elsif vin < -vmax use

verr== -vmax ;else

verr == vin ;end use ;

Page 28: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

28

Instrucţiuni simultane

Instrucţiunea simultană selectivă (case)Selectează o instrucţiune simultană din mai multe alternative pe baza valorilor unei expresii de selecţie

Sintaxa:[label :] case expresie usewhen alegere { | alegere } =>

{instrucţiune_simultana }{ when alegere { | alegere } =>

{instrucţiune_simultana } }end case [label] ;

Exemplu:case din use

when '0' => v == ron * i + vlo;when '1' => v == ron * i + vhi;when 'X'’ => v == ron * i + vx;when 'Z' => v == roff * i + vx;

end case ;

Observaţii : • Pentru ca un model în VHDL-AMS să fie corect este necesar ca numărul de ecuaţii să fie egal cu numărul de necunoscute din model.• Într-o entitate VHDL-AMS numărul de necunoscute este egal cu suma cantităţilor through, a cantităţilor libere şi a cantităţilor interfaţă cu mod out.• Fiecare instrucţiune simultană crează o ecuaţie.

Page 29: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

29

Modelul unei diode

Declaraţia de entitatelibrary ieee, disciplines;use ieee.math_real.all;use disciplines.electrical_systems.all;entity diode is

generic (Isat : REAL := 1.0e-14); -- saturation currentport ( terminal p, n : electrical);

end entity diode;Arhitecturaarchitecture ideal of diode is

constant TempC : REAL := 27.0;constant TempK : REAL := 273.0 + TempC;constant vt : REAL := PHYS_K*TempK/PHYS_Q;quantity v across i through p to n;

begini == Isat*(exp(v/vt)-1.0); -- instrucţiune simultana simplă

end architecture ideal;

Page 30: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

30

Modele dispozitive pasive

Condensator liniar

use work.electrical_systems.all;entity capacitor is

generic ( cnom : real); -- val capacitate port ( terminal p, -- positive pin

m : electrical); -- minus pinend entity capacitor;

architecture simple1 of capacitor isquantity v across i through p to m;

begini == cnom * v’dot;

end architecture simple1;

Bobină liniară

use work.electrical_systems.all;entity inductor is

generic ( lnom : real); -- val inductantaport ( terminal p, -- positive pin

m : electrical); -- minus pinend entity inductor;architecture simple of inductor is

quantity v across i through p to m;begin

v == lnom * i’dot;end architecture simple;

Page 31: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

31

Modele surse independente

Sursă de curent independentă

use work.electrical_systems.all;entity Isource_dc is

generic ( dc_value : real); -- DC valueport ( terminal p, -- positive pin

m : electrical); -- minus pinend entity Isource_dc;

architecture simple of Isource_dc isquantity i through p to m;

begini == dc_value;

end architecture simple;

Sursă de tensiune independentă

entity Vsource_dc isgeneric ( dc_value : real); -- DC value

port ( terminal p, -- positive pinm : electrical); -- minus pin

end entity Vsource_dc;

architecture simple of Vsource_dc isquantity v across i through p to m;

beginv == dc_value;

end architecture simple;

Page 32: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

32

Modele surse comandate

Sursă de curent comandată în tensiune(VCCS)

use work.electrical_systems.all;entity I_vccs is

generic ( gain : real := 1.0); -- gain of Isource_vcport (

terminal inp : electrical; -- positive input terminalterminal inm : electrical; -- negative input terminalterminal outp : electrical; -- positive output terminalterminal outm : electrical); -- negative output terminal

end entity Isource_vc;

architecture simple of I_vccs isquantity vin across inp to inm;quantity vout across iout through outp to outm;

beginiout == gain * vin;

end architecture simple;

Ecuaţia caracteristicăiout= gain x Vin

Tensiunea de la terminalele surseicomandate este determintă de simulator

Page 33: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

33

Modelul unui amplificatoroperaţional ideal

Paşii pentru dezvoltarea modeluluiDeterminarea specificaţiilor modelului (care aspecte ale comportării AO vor fi modelate şi care sunt parametrii furnizaţi de utilizator)Determinarea ecuaţiei caracteristice (ecuaţia care defineşte comportarea AO)Scrierea modelului în cod VHDL-AMSTestarea modelului

Determinarea specificaţiilor modeluluiNe propunem ca modelul AO să fie caracterizat de următoarele specificaţii:

• A - Câştigul în buclă deschisă• f1 – Polul dominant• f2 – Polul secundar

Ecuaţia caracteristică

Page 34: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

34

Modelul unui amplificatoroperaţional ideal (cont.)

Scrierea modelului în cod VHDL-AMS- Rescriem ecuaţia în funcţie de tau=1/ωdeoarece vom utiliza derivate ]n funcţie de timp

- Se aduce ecuaţia la forma:

Se extrage Vin. Rezultă următoarea ecuaţie cu derivate pentru funcţia de transfer:

use work.electrical_systems.all;entity opamp isgeneric (

f1 : real := 1.0; -- First polef2 : real := 2.0e6; -- Second poleA : real := 1.8e6); -- Open loop gain

port (terminal inp : electrical;terminal inm : electrical;terminal output : electrical;terminal ref : electrical);

end entity opamp;

library ieee;use ieee.math_real.all;architecture simple1 of opamp is

constant t1 : real := 1.0 / (f1*math_2_pi);constant t2 : real := 1.0 / (f2*math_2_pi);quantity vin across inp to inm;quantity vout across iout through output to ref;

beginvin == (t1*t2)*vout’dot’dot/A + (t1+t2)*vout’dot/A + vout/A;

end architecture simple1;

Page 35: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

35

6.3 Modelarea semnalelor mixte, analog-digitale.

În această secţiune se combină capabilităţile VHDL-AMS privind modelarea analogică şi digitală şi se prezintă modul în care limbajul asigură suportul pentru conversia A/D şi D/A.

Conversia analog-digitalăConversia unei cantităţi analogice (continue în timp) într-un semnal digital (discontinuu în timp) se realizează cu atributul ‘above. Acest atribut returnează un semnal de tip boolean în funcţie de valoarea cantităţii analogice în raport cu o valoare de prag. Valoarea de prag este un număr real.Sintaxa:

Q’above(E)unde: Q – cantitatea analogică supusă conversiei

E – valoarea de prag (- Dacă Q > E atunci valoarea Q’above(E) este TRUE- Dacă Q < E atunci valoarea Q’above(E) este FALSE.

Page 36: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

36

Modelarea semnalelor mixte, analog-digitale. Conversia A/D

În timpul simulării, valoarea booleana Q’above(E) se modifică instantaneu la momentul în care cantitatea Q traversează valoarea de prag E.Acesta este motivul pentru care se utilizează atributul ‘above în loculoperatorilor relaţionali “<“ şi “>”.În timpul simulării operatorii “<“ şi “>” fac o comparaţie la fiecare moment de timp discret în care se evaluează soluţia circuitului analogic. Acest moment de timp poate să nu coincidă cu momentul exact în care are loc traversarea pragului.Exemplu: Instrucţiune care implementează comportarea unui comparator ideal.

S <= ‘1’ when Q’above(0.0) else 0;S – semnal digital; Q – cantitate analogică.

Observaţie: Dacă se doreşte returnarea valorii booleene TRUE când cantitatea Q estemai mică decât valoarea de prag, se foloseşte construcţia:

not Q’above(E)deoarece în VHDL-AMS nu există atributul “’bellow”.

Page 37: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

37

Modelarea semnalelor mixte, analog-digitale. Conversia A/D

Exemplu:Convertor analog-digital simplu

Declaraţia de entitatelibrary ieee, disciplines;use ieee.std_logic_1164.all;use disciplines.electrical_systems.all;entity a2d is

generic (vth : real := 2.0);port (terminal a_input : electrical ;

d_out : out std_logic);end entity a2d;

Se observă că în declaraţia de entitate sunt declarate ambele tipuri de porturi, analog şi digital.

Arhitectura

architecture behavioral of a2d isquantity vin across a_input to electrical_ref;

beginprocess (vin’above(vth)) isbegin

if vin’above(vth) thend_out <= ‘1’;

elsed_out <= ‘0’;

end if;end process;

end architecture behavioral;De notat că în această arhitectură nu sunt necesare instrucţiuni simultane.

Page 38: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

38

Modelarea semnalelor mixte, analog-digitale. Conversia D/A

Conversia D/AExistă două metode de bază pentru realizarea conversiei de la semnale digitale la cantităţi analogice.

- Utilizarea atributelor ‘ramp şi ‘slew- Cantitatea analogică este o funcţie a unui semnal digital

A) Metoda utilizării atributelor ‘ramp şi ‘slew.În acest caz, modificarea valorilor unei cantităţi analogice Q de către un semnal digital S se realizează prin intermediul cantităţilor implicite:

S’ramp(trise,tfall) sau S’slew(rising_slope, falling_slope)Exemplu: Fie instrucţiunea simultană:

Q==S’ramp(1.0e-9,1.2e-9)unde S este un semnal digital care ia valori numere reale.

Dacă S are un eveniment atunci cantitatea analogică Q are forma unei tranziţii liniare (rampă) cu duratele de creştere de 1ns (sau descreştere de 1.2ns) de la valoarea anterioară a semnalului S la noua valoarea a acestui semnal.

Page 39: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

39

Modelarea semnalelor mixte, analog-digitale. Conversia D/A

Exemplu: Comutator simplu

Rolul acestui comutator este de a permite sau de a întrerupe circulaţia curentului între pinii p1 şi p2, în funcţie de valoarea semnalului digital sw_state.

library ieee, disciplines;use ieee.std_logic_1164.all;use disciplines.electrical_systems.all;entity switch_dig is

port ( sw_state : in std_logic;terminal p1, p2 : electrical );

end entity switch_dig;

architecture ideal of switch_dig isconstant r_open : real := 10.0e3;constant r_closed : real := 15.0e-3;constant trans_time : real := 10.0e-6;signal r_sig : resistance := r_open;quantity v across i through p1 to p2;quantity r : resistance;

beginDetectState: process (sw_state)begin

if (sw_state = ‘0’) thenr_sig <= r_open;

elsif (sw_state = ‘1’) thenr_sig <= r_closed;

end if;end process DetectState;r == r_sig’ramp(trans_time, trans_time);v == r*i;

end architecture ideal;

Page 40: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

40

Modelarea semnalelor mixte, analog-digitale. Conversia D/A

A) Metoda în care cantitatea analogică este o funcţie a unui semnal digitalÎn acest caz, unei cantităţi analogice Q i se poate atribui, în cadrul unei instrucţiuni simultane, valoarea unui semnal digital S sau a unei expresii sau o funcţie a semnalului S, ca de ex:

Q==f(S); sau Q==S;break on S; break on S;

În cazul unui eveniment al semnalului digital S, valorile acestuia se modifică instantaneu de la o valoare la alta. Ca urmare instrucţiunile de mai sus introduc discontinuităţi ale valorilor cantităţii Q. Deoarece algoritmii de integrare numerică utilizaţi pentru soluţionarea numerică a ecuaţiilor diferenţiale ce caracterizează partea analogică presupun o soluţie continuă în timp, atunci dacă în model apar discontinuităţi acestea trebuie în mod obligatoriu notificate algoritmului de rezolvare analogică. Acest lucru este realizat cu instrucţiunea break.În exemplele de mai sus, dacă semnalul S are un eveniment atunci instrucţiunea break determină reiniţializarea programului de rezolvare analogică pentru următorul interval continuu al cantităţii Q.

Page 41: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

41

Discontinuităţi. Exemplu

Amplificator operaţionalENTITY OpAmp IS

GENERIC (vdd : voltage := 15.0;vss : voltage := -15.0;gain : REAL := REAL'HIGH);

PORT (TERMINAL in_p, in_n: ELECTRICAL;TERMINAL output: ELECTRICAL);

END ENTITY OpAmp;

ARCHITECTURE simple OF OpAmp ISQUANTITY vin ACROSS in_p TO in_n;QUANTITY vout ACROSS iout THROUGH output;

BEGINIF vin'ABOVE(vdd/gain) USE

vout == vdd;ELSIF NOT vin'ABOVE(vss/gain) USE

vout == vss;ELSE

vout == vin*gain;END USE;

BREAK ON vin'ABOVE(vdd/gain), vin'ABOVE(vss/gain);END ARCHITECTURE simple;

La simularea acestui model pot apare discontinuităţi ale cantităţii vout dacă momentele când vin traversează pragurile vdd/gain, respectiv vss/gain nu coincid cu momentele de calcul ale soluţiei.Ca urmare instrucţiunea break în acest exemplu determină reiniţializarea algoritmului de calcul exact la momentele de timp când vin traversează pragurile respective.

Page 42: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

42

Condiţii iniţiale

O condiţie iniţială specifică valoarea unei cantităţi la începutul unui interval continuu în timp, care poate fi:- momentul t=0 (începutul simulării în domeniul timp)- după o discontinuitateCondiţiile iniţiale pot fi specificate cu instrucţiunea break. Condiţiile iniţiale înlocuiesc ecuaţiile implicite. O condiţie iniţială pentru o cantitate Q înlocuieşte:

Ecuaţia Q’dot ==0 în timpul căutării (calculării) punctului static (de echilibru)Ecuaţia Q == Q(T-) când are loc reiniţializarea după o discontinuitate

Dacă trebuie specificată o condiţie iniţială pentru o cantitate Q a cărei derivată Q’dot nu apare în model, atunci utilizatorul trebuie să specifice care este ecuaţia implicită care va fi înlocuită de condiţia iniţială.

Page 43: 6. VHDL-AMS · 7 Modelarea în VHDL-AMS |Un model în VHDL-AMS este descris de o entitate (entity) şi una sau mai multe arhitecturi (architecture), ca în VHDL digital.

43

Condiţii iniţiale. Exemple

Condensator preincărcat

ENTITY Capacitor ISGENERIC (C: capacitance);PORT (TERMINAL elec_p, elec_n:

ELECTRICAL);END ENTITY Capacitor;

Conditie initiala cu instructiunea break

ARCHITECTURE ic_break OF Capacitor ISQUANTITY v ACROSS i THROUGH elec_p TO

elec_n;BEGIN

BREAK v => 10.0;i == C * v'DOT;

END ARCHITECTURE ic_break;

Conditie initiala specificata prin evaluarea semnalului predefinit domain.

ARCHITECTURE ic_domain OF Capacitor ISQUANTITY v ACROSS i THROUGH elec_p TO

elec_n;BEGIN

IF domain = quiescent_domain USEv == 10.0;

ELSEi == C * v'DOT;

END USE;END ARCHITECTURE ic_domain;