Sunteți pe pagina 1din 85

LIMBAJUL VHDL - 3

PROCESE

Definiii
 unitatea

de baz pentru descrierea de tip


comportamental (funcional)
 procesul = o serie de operaii secveniale
care n timpul simulrii constituie o singur
aciune
 procesul = obiectul fundamental manipulat
de simulator orice descriere VHDL = un
set de procese caracterizate de:
 semnalele
15.03.2016

la care sunt sensibile (active)


 operaiile secveniale executate de fiecare
Curs 3 VHDL

PROCESE

Sintaxa
{etichet:} {postponed} process {list_de_sensibilitate}
...
... Zona de declaraii locale procesului
...
begin
...
... Instruciuni secveniale
...
end {postponed} process {etichet};
15.03.2016

Curs 3 VHDL

PROCESE

Sintaxa
 n

partea declarativ:

 este

interzis declararea semnalelor


 se pot declara variabile
 se pot declara subprograme interne

15.03.2016

Curs 3 VHDL

PROCESE

Execuia
 un

proces exist nedefinit - este global


 durata de via a unui proces este cea a
simulrii
 timpul de execuie al unui proces este zero
 procesele se execut n paralel, n mod
concurent
15.03.2016

Curs 3 VHDL

PROCESE

Execuia
 un

sistem real i execut secvena de


activiti specifice, pentru care a fost
construit, n bucl infinit
 orice instruciune concurent poate fi
transcris n termenii unui proces = procesul
echivalent
 un proces nu se termin niciodat - el
execut n bucl lista de instruciuni
secveniale - este ciclic
15.03.2016

Curs 3 VHDL

PROCESE

Suspendarea i reactivarea
 funcionarea

dispozitivelor electronice:

 opereaz

n bucl infinit
 execut operaiile specifice
 i suspend funcionarea
 ateapt ndeplinirea unor condiii de reactivare
 reiau operaiile
 un

proces se execut pn se ntlnete o


instruciune wait

15.03.2016

Curs 3 VHDL

PROCESE

Instruciunea wait
 scop:

emularea funcionrii reale


 suspend procesul cnd operaiile
secveniale prevzute au fost efectuate
 reactiveaz procesul cnd sunt ndeplinite
condiiile specificate mai multe tipuri de
instruciuni wait, pentru a asigura varietatea
de condiii reale
15.03.2016

Curs 3 VHDL

PROCESE

Instruciunea wait
3

tipuri de instruciuni

 wait

for expresie de tip Time - se ateapt


trecerea unui interval de timp
 wait until condiie de tip Boolean - se ateapt
pn condiia devine True n urma unei modificri
 wait on list de sensibilitate - se ateapt pn
un semnal din list i modific valoarea
 sintaxa

complet:

wait {on list_de_semnale} {until condiie_boolean}


{for timp};
15.03.2016

Curs 3 VHDL

PROCESE

Instruciunea wait
 localizarea

poate aprea oriunde n proces


 ntr-un proces pot exista mai multe instruciuni
wait
 lista de sensibilitate poate aprea dup process
i e echivalent cu wait on list de sensibilitate
aflat la sfritul procesului
 wait

15.03.2016

Curs 3 VHDL

10

PROCESE

Instruciunea wait
 restricii

din lista de sensibilitate - s fie statice


 wait on nu poate fi utilizat n proces cnd exist
list de sensibilitate
 wait nu poate fi utilizat n procedurile apelate de
proces
 semnalele

15.03.2016

Curs 3 VHDL

11

PROCESE

Instruciunea wait - exemplu


entity mux2la1En is
port (i0, i1, s: in Std_Logic;
en: in Bit;
f: out Std_Logic);
end mux2la1En;

15.03.2016

Curs 3 VHDL

12

PROCESE

Instruciunea wait - exemplu


architecture BehaviorEn of mux2la1En is
begin
process
begin
if en = '0' then
if s = '0' then f <= i0;
else f <= i1;
end if;
else f <= '1';
end if;
wait on i0, i1, s;
wait until en = '0';
wait for 20 ns;
end process;
15.03.2016
Curs 3 VHDL
end BehaviorEn;

13

PROCESE

Procese pasive
 procesele

sunt pasive dac nici un semnal nu


apare n membrul stng al unei instruciuni de
asignare
 execuia proceselor pasive nu antreneaz
execuia altor procese
 n entiti pot fi folosite instruciuni concurente
care au procese echivalente pasive
 exemplu: instruciunea concurent assert are
proces pasiv echivalent
15.03.2016

Curs 3 VHDL

14

PROCESE

Procese amnate
 procesele

amnate se activeaz n momentul


ultimei ntrzieri delta a unui ciclu de
simulare
 se folosete postponed
 instruciunile concurente care se pot
transforma n procese amnate:
 instruciunea

concurent assert
 apelul concurent de procedur
 asignarea concurent de semnal
15.03.2016

Curs 3 VHDL

15

PROCESE

Procese amnate
 restricii
 nu

pot conine asignri de semnale cu ntrziere


nul
 nu se poate folosi valoarea atributelor predefinite
asupra semnalelor

15.03.2016

Curs 3 VHDL

16

PROCESE

Semnale n procese
 restricii

de utilizare a semnalelor n

procese:
 n

procese nu se pot declara semnale


 orice asignare a unei valori unui semnal are efect
doar cnd procesul se suspend - pn atunci se
pstreaz valorile anterioare
 la suspendarea procesului ultima asignare a unei
valori unui semnal este luat n considerare
 dac

semnalul este pe lista de sensibilitate a


procesului, modificarea semnalului
reactiveaz procesulCurs 3 VHDL
15.03.2016
17

PROCESE

Variabile n procese
 variabila

permite stocarea temporar a

datelor
 se poate defini n cadrul procesului - cuvnt
cheie variable
 utilizare - la descriere de algoritmi n procese

15.03.2016

Curs 3 VHDL

18

PROCESE

Variabile n procese
 asignarea

de valori:

 cu

simbolul :=
 instantanee
 de cte ori este necesar
 poate

avea orice tip sau subtip posibil,


constrns sau neconstrns
 valoarea iniial - expresie static, de acelai
tip cu tipul variabilei
15.03.2016

Curs 3 VHDL

19

PROCESE

Variabile n procese - exemple


variable MEM is array (NATURAL range<>,NATURAL range<>)
of Std_Logic;
variable RAM1: MEM (0 to 1023, 0 to 7);
variable timp: TIME;
variable Condiie: Boolean := True;
variable X: Integer := 7;

15.03.2016

Curs 3 VHDL

20

INSTRUCIUNI SECVENIALE

Instruciunea assert
 supravegheaz

o condiie i dac este fals

emite un mesaj
 sintaxa:
assert condiie{report mesaj}{severity
nivel_de_severitate_al_erorii};
 mesajul implicit: Assertion Violation
 nivelul de severitate al erorii este de tipul
Severity_Level (Note, Warning, Error,
Failure),
cu
Error
valoare
implicit
15.03.2016
Curs 3 VHDL

21

INSTRUCIUNI SECVENIALE

Instruciunea report
 permite

afiarea unui mesaj


 sintaxa:
{etichet:} report mesaj
{nivel_de_severitate_al_mesajului};

15.03.2016

Curs 3 VHDL

22

INSTRUCIUNI SECVENIALE

Instruciunea de asignare a variabilelor


 valoarea

este preluat imediat


 asignarea se poate face la declarare

Instruciunea de apel de procedur


trebuie s indice numele i n
parantez lista parametrilor de apel

 apelarea

15.03.2016

Curs 3 VHDL

23

INSTRUCIUNI SECVENIALE

Structura condiional
 este

structurat
 permite executarea condiionat a unor
secvene de instruciuni
 cnd condiia boolean este True se execut
ramura if, pentru False se execut ramura
else
 ramura elsif permite nlnuirea condiiilor
15.03.2016

Curs 3 VHDL

24

INSTRUCIUNI SECVENIALE

Structura condiional
 sintaxa:

if condiie_boolean_1 then
-- Secvena_de_instruciuni_1
elsif condiie_boolean_2 then
-- Secvena_de_instruciuni_2
else
-- Secvena_de_instruciuni_3
end if;
15.03.2016

Curs 3 VHDL

25

INSTRUCIUNI SECVENIALE

Instruciunea case
 permite

selectarea, n funcie de valoarea


unei expresii, a unei secvene de instruciuni
dintre mai multe alternative
 expresia i valorile trebuie s fie de acelai
tip discret (enumerat)
 ordinea ramurilor nu conteaz
 ramura others trebuie s fie ultima i este
obligatorie dac nu sunt specificate toate
valorile posibile ale expresiei
15.03.2016

Curs 3 VHDL

26

INSTRUCIUNI SECVENIALE

Instruciunea case
 sintaxa:

case expresie is
when Valoare_1 =>
-- Secv_instruciuni_1
when Valoare_2|Valoare_3|Valoare_4 =>
-- Secv_instruciuni_2
when Valoare_5 to Valoare_6 =>
-- Secv_instruciuni_3
...
when others =>...
-- Secv_instruciuni_n
end
case;
15.03.2016
Curs 3 VHDL

27

INSTRUCIUNI SECVENIALE

Structura de bucl
 permite

repetarea secvenei de instruciuni


din cadrul ei
 fiecare trecere se numete iteraie
 dac schema de iteraie nu este precizat
numr infinit de iteraii
 dac schema este precizat arat numrul
de repetri
15.03.2016

Curs 3 VHDL

28

INSTRUCIUNI SECVENIALE

Structura de bucl
 sintaxa

general:
{etichet:} {schem de iteraie} loop
-- Secvena_de_instruciuni
end loop {etichet};

15.03.2016

Curs 3 VHDL

29

INSTRUCIUNI SECVENIALE

Structura de bucl
 prima

schem de iteraie:

 att

timp ct condiia este adevrat se repet


instruciunile din secven
 testarea condiiei - la nceputul fiecrei iteraii

while condiie loop


-- Secvena_de_instruciuni
end loop;
15.03.2016

Curs 3 VHDL

30

INSTRUCIUNI SECVENIALE

Structura de bucl
a

doua schem de iteraie:

 secvena

de instruciuni se repet de un numr


de ori cunoscut doar la execuie
 variabila de bucl:






15.03.2016

contorizeaz numrul de cicluri efectuate prin


parcurgerea unui tip enumerat
nu trebuie declarat
este cunoscut numai n interiorul buclei
nu i se poate atribui nici o alt valoare nu poate fi
modificat
Curs 3 VHDL

31

INSTRUCIUNI SECVENIALE

Structura de bucl
a

doua schem de iteraie:

 nu

exist posibilitatea specificrii unui pas


 secvena nu se execut pentru interval vid sau
negativ

for Indice in 1 to 100 loop


-- Secvena de instruciuni
end loop;
15.03.2016

Curs 3 VHDL

32

INSTRUCIUNI SECVENIALE

Instruciunea next
 permite

oprirea iteraiei n curs de


desfurare a unei bucle
 execuia continu cu iteraia urmtoare (dac
exist)
 poate fi:
next {eticheta_buclei};
 condiional (ntrerupere cnd condiia este
adevrat): next {eticheta_buclei} when
condiie;
 imperativ:

 fr

15.03.2016

etichet se refer
la
bucla
cea
mai
de
jos
Curs 3 VHDL
33

INSTRUCIUNI SECVENIALE

Instruciunea exit
ieirea din bucl
 ntrerupe toate iteraiile restante ale buclei
 execuia continu cu instruciunea de dup
end loop
 poate fi:
 permite

exit {eticheta_buclei};
 condiional (ieire cnd condiia este
adevrat): exit {eticheta_buclei} when condiie;
 imperativ:

 fr

15.03.2016

etichet se refer
la
bucla
cea
mai
de
jos
Curs 3 VHDL
34

INSTRUCIUNI SECVENIALE

Instruciunea return
 este

rezervat subprogramelor
 la execuia ei se suspend subprogramul i
controlul revine apelantului
 poate fi folosit pentru a ntrerupe o
procedur i a reveni n programul apelant
nu trebuie s i se asocieze o valoare: return;
15.03.2016

Curs 3 VHDL

35

INSTRUCIUNI SECVENIALE

Instruciunea return
 orice

funcie se termin dinamic prin return


urmat de valoarea returnat:
return Valoare;
 valoarea returnat trebuie s aib tipul
declarat n specificaia funciei
 o funcie poate avea mai multe instruciuni
return, pentru c pot exista mai multe ramuri
de decizie
15.03.2016

Curs 3 VHDL

36

INSTRUCIUNI SECVENIALE

Instruciunea nul
 se

trece la executarea instruciunii urmtoare


 sintaxa: null;
 practic se folosete la instruciuni de selecie
(case) cnd toate ramurile trebuie luate n
considerare
 nu este necesar la compilarea unui proces
sau a unui corp de procedur vid
15.03.2016

Curs 3 VHDL

37

SUBPROGRAME

Generaliti
 permit

scrierea unor algoritmi reutilizabili


 valorile parametrilor, diferite la apel, duc la
efecte diferite
 2 tipuri de subprograme:
 proceduri:

procedure
 funcii: function
 apelul

unei proceduri este o instruciune


 apelul unei funcii apare ca o valoare, n
membrul drept al instruciunilor de asignare
15.03.2016

Curs 3 VHDL

38

SUBPROGRAME

Declaraia de subprogram
 subprogramele
 declaraia

au 2 pri:

(specificaia)

 corpul

 declaraia

indic:

 genul

subprogramului (procedur sau funcie)


 numele
 lista parametrilor formali (fiecare cu mod i tip)
 pt. funcie i tipul valorii returnate
15.03.2016

Curs 3 VHDL

39

SUBPROGRAME

Declaraia de subprogram
 sintaxa:
 procedur

procedure nume_procedur (lista_parametrilor_formali);


 funcie

{pure/impure} function nume_funcie


(lista_parametrilor_formali)
return tipul_rezultatului;
 lista

parametrilor formali

{clas_obiect} nume_parametru_1{, nume_parametru_2}:


{mod_transmitere} type valoare_implicit;
15.03.2016

Curs 3 VHDL

40

SUBPROGRAME

Modul de transmitere a parametrilor


 intrare

- in

 implicit
 parametrii

 ieire

pot fi citii, nu pot fi modificai

- out

 numai

pentru proceduri
 parametrii nu se pot citi
 combinat

intrare / ieire - inout

 numai
15.03.2016

pentru proceduri
 permite orice citire i scriere
Curs 3 VHDL

41

SUBPROGRAME

Corpul subprogramului
 conine

algoritmul implementat
 nu permite declararea semnalelor
 sintaxa:
antet_sub-program is
{partea declarativ}
begin
{partea rezervat instruciunilor}
end {nume_sub-program};
15.03.2016

Curs 3 VHDL

42

SUBPROGRAME

Apelul
 poate

fi secvenial sau concurent


 2 moduri de indicare a parametrilor actuali ai
subprogramelor:
 prin

poziie
 prin denumire (cu =>)

15.03.2016

Curs 3 VHDL

43

SUBPROGRAME

Suprancrcarea
2

subprograme cu acelai nume, dar profiluri


diferite
 profilul: numrul, ordinea i tipul parametrilor
formali i tipul rezultatului pentru funcie

15.03.2016

Curs 3 VHDL

44

ARHITECTURI CONCURENTE

Generaliti
 VHDL

descrie sistemele ca mulimi de


subsisteme funcionale care opereaz n
mod concurent
 orice subsistem poate fi specificat printr-un
proces separat nivel de detaliere dat de
necesiti
 toate procesele din interiorul unei arhitecturi
se execut concurent
 n VHDL combinare ntre operaii
15.03.2016concurente i secveniale
Curs 3 VHDL
45

ARHITECTURI CONCURENTE

Generaliti
 transferul

de informaii ntre procese se


face prin semnale
 procesele se activeaz indiferent dac
modificarea valorii semnalelor la care sunt
active este produs de mediul extern sau de
ctre alt proces

15.03.2016

Curs 3 VHDL

46

ARHITECTURI CONCURENTE

Procese elementare
 procesele

care conin o singur instruciune


instruciuni singulare de asignare
concurent de semnal
 instruciunile singulare de asignare
concurent de semnal:
n arhitecturi i se execut concurent cu alte
procese
 sunt sensibile la modificarea oricrui semnal care
apare n membrul drept
 asignarea se poate ntrzia cu after
 apar

15.03.2016

Curs 3 VHDL

47

ARHITECTURI CONCURENTE

Procese elementare - exemple


entity Demux1la4 is
port (i: in bit;
s: in bit_vector (1 downto 0);
d: out bit_vector (3 downto 0));
end Demux1la4;
architecture Conc of Demux1la4 is
signal t : bit_vector(3 downto 0);
begin
t(3)<=s(1) and s(0);
t(2)<=s(1) and not s(0);
t(1)<=not s(1) and s(0);
t(0)<=not s(1) and not s(0);
d<=i and t;
end
Conc;
15.03.2016
Curs 3 VHDL

-- intrare
-- selecii
-- ieiri

-- semnal intern
-- selectarea unei ieiri

-- valoarea ieirii
48

ARHITECTURI CONCURENTE

Valori de semnale - pilotul (driver)


 semnalele

primesc valori noi n momentul


suspendrii proceselor prin instruciunea wait
 stocarea informaiilor referitoare la
evenimentele de pe semnal prin pilot
(driver)
 compilatorul creeaz un pilot pentru fiecare
semnal care primete o valoare ntr-un
proces
 exist un singur pilot / semnal / proces
15.03.2016

Curs 3 VHDL

49

ARHITECTURI CONCURENTE

Valori de semnale - pilotul (driver)


 toate

operaiile sunt efectuate asupra pilotului


 pilotul copiat n semnal cnd procesul se
suspend
 semnalul cunoate valorile trecute, prezente
i viitoare pilotul are asignat o form de
und
 forma de und format din tranzacii
 tranzacia: pereche valoare semnal +
valoare timp (Time)
15.03.2016

Curs 3 VHDL

50

ARHITECTURI CONCURENTE

Valori pentru semnale


 semnalele

uni-surs pot avea mai mult de 2


valori (specifice reprezentrii binare)
 n VHDL exist tipul de date Std_Ulogic,
nerezolvat, care cuprinde pe lng 0 i 1:
- valoare indiferent
 Z - nalt impedan - la buffere three-state
 U - valoare necunoscut
 L - valoare 0 slab (0 cu emitor deschis)
 H - valoare 1 slab (1 cu emitor deschis)
 W - valoare necunoscut slab
 - - valoare fr importan
Curs 3 VHDL
 X

15.03.2016

51

ARHITECTURI CONCURENTE

Semnale multi-surs (cu mai muli piloi)


 semnale

care au informaii provenite din mai


multe surse
 exemplu:

magistrala intern a procesorului


primete informaii de la: procesor, memoria
intern, hard discuri, dispozitive de intrare / ieire

 n

unele sisteme situaia trebuie obligatoriu


evitat, n altele este utilizat (exemplu:
pentru I i SAU cablat)
 necesit stabilirea unei metode de
determinare a valoriiCursrezultate
pentru semnal52
15.03.2016
3 VHDL

ARHITECTURI CONCURENTE

Rezolvarea semnalelor multi-surs


nu poate ti dac un semnal va fi
activat din mai multe surse
 simulatorul trebuie s fie pregtit pentru a
realiza rezolvarea (mixarea) semnalelor
 regulile de mixare se specific ntr-un tabel
care reprezint o funcie de rezoluie
conine toate valorile posibile pentru semnal
 simulatorul

15.03.2016

Curs 3 VHDL

53

ARHITECTURI CONCURENTE

Funcia de rezoluie
 semnalele

rezolvate - au funcie de rezoluie


 funcia de rezoluie poate s apar la
declaraii de subtipuri de date i la declaraii
de semnal
 la tipurile compuse funcia de rezoluie pentru
tipul compus mascheaz funciile de rezoluie
pentru elementele tipului compus
 n simulare funcia de rezoluie este utilizat
automat, nu este controlat de proiectant
15.03.2016

Curs 3 VHDL

54

ARHITECTURI CONCURENTE

Funcia de rezoluie
 tipul

de date rezolvat este Std_Logic din


pachetul Std_Logic_1164
 exist i versiunea rezolvat pentru
Std_Logic_Vector

15.03.2016

Curs 3 VHDL

55

INSTRUCIUNI CONCURENTE

Paralelism
 la

instruciunile concurente ordinea de


execuie este oarecare
 se aplic un paralelism real, dar dispare
simularea n timp real
 concurena din VHDL = paralelism real n
timp virtual (de simulare)

15.03.2016

Curs 3 VHDL

56

INSTRUCIUNI CONCURENTE

Instruciunea block
 are

3 funcii principale:

 ncapsularea

declaraiilor - reunire de instruciuni


concurente care au acces la declaraii locale
 utilizarea instruciunilor gardate - permite scrierea
de instruciuni de asignare condiionate
 suport pentru ierarhizare - se pot scrie proiecte
ierarhizate
 blocul

este unitatea de baz echivalent a


structurrii n VHDL

15.03.2016

Curs 3 VHDL

57

INSTRUCIUNI CONCURENTE

Instruciunea block
 sintaxa:

etichet: block {(condiie_de_gard)}


{antet_generice_i_porturi}
-- Declaraii locale
begin
-- Instruciuni concurente
end block {etichet};
15.03.2016

Curs 3 VHDL

58

INSTRUCIUNI CONCURENTE

Instruciunea block
de gard = expresie boolean
 antetul opional indic importarea din mediul
exterior:
 condiia

 valori

pentru parametri generici


 semnale pentru porturi
 partea

declarativ:

 vizibil

numai local
 nu permite declaraii de variabile locale
15.03.2016

Curs 3 VHDL

59

INSTRUCIUNI CONCURENTE

Instruciuni gardate
 nlocuiesc

descrierile n care se repet


aceeai condiie de multe ori
 garda unui bloc factorizeaz condiiile
 garda este o expresie boolean
 semnalul Guard - poate fi declarat explicit i
folosit la asignare gardat
15.03.2016

Curs 3 VHDL

60

INSTRUCIUNI CONCURENTE

Apel concurent de procedur


 aceeai

sintax ca la apelul secvenial


 are n plus n procesul echivalent instruciuni
wait
 parametrii pot fi doar constante sau semnale
 util la aplicaii de gestionare a strii interne a
automatelor finite
15.03.2016

Curs 3 VHDL

61

INSTRUCIUNI CONCURENTE

Instruciunea assert
 aceeai

sintax ca la apelul secvenial


 poate s apar n entiti sau arhitecturi
 monitorizarea condiiei date este permanent

15.03.2016

Curs 3 VHDL

62

INSTRUCIUNI CONCURENTE

Instruciunea de asignare de semnal


2 forme: condiional i selectiv
 sintaxa formei condiionale:
 are

{etichet:} nume_sau_agregat <= {guarded}


form_de_und_1 when condiie_boolean_1 else
form_de_und_2 when condiie_boolean_2 else
...
form_de_und_n;
15.03.2016

Curs 3 VHDL

63

INSTRUCIUNI CONCURENTE

Instruciunea de asignare de semnal


 forma

condiional echivalent (procesul


echivalent):

if condiie_boolean_1 then
nume_sau_agregat <= {transport} form_de_und_1;
elsif condiie_boolean_2 then
nume_sau_agregat <= {transport} form_de_und_2;
...
else
nume_sau_agregat <= {transport} form_de_und_n;
end
if;
15.03.2016
Curs 3 VHDL
64

INSTRUCIUNI CONCURENTE

Instruciunea de asignare de semnal


 sintaxa

formei selective:
{etichet:} with expresie select
nume_sau_agregat <= {guarded}{transport}
form_de_und_1 when alegere_1,
form_de_und_2 when alegere_2,
...
form_de_und_n when alegere_n;
15.03.2016

Curs 3 VHDL

65

INSTRUCIUNI CONCURENTE

Instruciunea de asignare de semnal


 forma

selectiv echivalent (procesul


echivalent):

case expresie is
when alegere_1 =>
nume_sau_agregat <= {transport} form_de_und_1;
when alegere_2 =>
nume_sau_agregat <= {transport} form_de_und_2;
...
when alegere_n =>
nume_sau_agregat <= {transport} form_de_und_n;
end
15.03.2016case;
Curs 3 VHDL
66

INSTRUCIUNI CONCURENTE

Instruciunea de instaniere a unei


componente
o copie a unui model (component)
declarat anterior i o personalizeaz pentru o
necesitate particular
 sintaxa:
etichet: numele_componentei_model
{corespondena parametrilor generici}
{corespondena porturi efective / porturi locale
modelului};
15.03.2016
Curs 3 VHDL
67
 ia

INSTRUCIUNI CONCURENTE

Instruciunea de instaniere a unei


componente - exemplu
-- Avem dou componente, C1 i C2, care asigur
-- interconectarea semnalelor A, B, C i D de tip Bit.
signal A, B, C, D: Bit;
-- A, B, C i D sunt porturile efective ale circuitului proiectat
-- Declararea componentei Inversor
-- Intrare i Ieire sunt porturile modelului folosit
component: Inversor
port(Intrare: in Bit; Ieire: out Bit);
end component;
-- Componenta Inversor va fi instaniat de dou ori:
C1: Inversor port map (Intrare => A, Ieire => B);
C2:
Inversor port map (Intrare =>
C, Ieire => D);
15.03.2016
Curs 3 VHDL

68

INSTRUCIUNI CONCURENTE

Bloc sau component


 nu

exist o diferen fundamental ntre un


bloc i o instan de component
 ambele pot fi folosite la descrierea ierarhizat
 componenta are avantajul c este
reutilizabil

15.03.2016

Curs 3 VHDL

69

INSTRUCIUNI CONCURENTE

Instruciunea generate
 permite

elaborarea condiional sau iterativ


a liniilor de cod surs VHDL
 forma condiional - instruciunile
concurente vor exista la elaborare dup
ndeplinirea condiiei booleene
 forma iterativ - creeaz ansambluri de
instruciuni n numr egal cu numrul de
elemente din intervalul discret
15.03.2016

Curs 3 VHDL

70

INSTRUCIUNI CONCURENTE

Instruciunea generate
 sintaxa:
 forma

condiional
etichet: if condiie_boolean generate
Secven de instruciuni concurente
end generate {etichet};
 forma iterativ
etichet:
for
nume_parametru_de_generare
interval_discret generate
Secven de instruciuni concurente
end
generate {etichet}; Curs 3 VHDL
15.03.2016

in

71

MODULE DE SIMULARE

Scop
proces de proiectare presupune i
etapa de verificare
 n VHDL - mai multe metode de verificare
 modul de simulare (test bench) = mediu n
care un proiect UST (unitate supus
testrii) este verificat prin aplicarea unor
semnale numite stimuli i observarea
rspunsurilor generate
 orice

15.03.2016

Curs 3 VHDL

72

MODULE DE SIMULARE

Elemente
 soclu

(socket) - n el se plaseaz sistemul

testat
 generator de stimuli - subsistem care aplic
stimuli proiectului testat
 stimuli

generai intern
 stimuli preluai de la o surs extern de semnale

de monitorizare a rspunsurilor
la stimuli, generate de sistemul supus testrii

 instrumente

15.03.2016

Curs 3 VHDL

73

MODULE DE SIMULARE

Elemente n VHDL
 modulul

de simulare este o specificaie


VHDL, care este simulat de simulatorul
VHDL integrat n mediul de dezvoltare VHDL
 modulul de simulare este alctuit din:
unitii supuse testrii (UST)
 procese sensibile la stimuli aplicai unitii
supuse testrii (UST)
 instanierea

 specificaie

hibrid: structural +
comportamental

Observaie: UST trebuie s existe (entitate + arhitectur)


15.03.2016

Curs 3 VHDL

74

MODULE DE SIMULARE

Elemente n VHDL
 stimulii:
 pot

fi specificai n arhitectura modulului de


simulare
 pot fi citii din fiier extern
 reaciile

unitii testate pot fi observate prin:

 formele

15.03.2016

de und generate de simulatorul VHDL


 fiierele de raport cu mesaje generate de
simulator
 mesajele generate de simulator la consol
 scrierea n fiiere folosind operaiile de intrare /
ieire n mod text disponibile
n pachetul Textio
Curs 3 VHDL

75

MODULE DE SIMULARE

Structur
cu entitate i arhitectur
 entitatea modulului de simulare:
 specificaie

are porturi i parametri generici pentru c


modulul de simulare nu este un dispozitiv real
 nu poate lipsi pentru c arhitecturile nu pot fi
specificate fr entiti asociate!!!
 nu

- se realizeaz instanierea UST


= o specificaie de tip structural - relaia dintre
modulul de simulare i UST

 arhitectur

fi instaniere direct
 instanierea unei componente
Curs 3 VHDL
 poate

15.03.2016

76

MODULE DE SIMULARE

Structur
 stimulii

- element esenial:

 set

de semnale declarate intern n arhitectura


modulului de simulare
 asignai porturilor UST la instanierea ei, prin
port map
 definii ca forme de und:


15.03.2016

prin instruciuni concurente de asignare de valori la


semnale
n cadrul unuia sau a mai multor procese
comportamentale, cu instruciuni wait for i la sfrit
cu o instruciune wait vid pentru suspendarea
procesului
Curs 3 VHDL

77

MODULE DE SIMULARE

Structur
 arhitectura

modulului de simulare fiind n


domeniul concurent - nu conteaz ordinea
n care este instaniat UST i sunt definii
stimulii

15.03.2016

Curs 3 VHDL

78

MODULE DE SIMULARE

Utilizare
 la

sisteme complexe simularea poate fi


costisitoare
 verificare mai simpl cu module de simulare
 se simuleaz modulul de simulare, nu
unitatea supus testrii (ea este doar o
instan de component)
 nu exist limitri la dimensiunea modulului de
simulare
15.03.2016

Curs 3 VHDL

79

MODULE DE SIMULARE
Exemple - poart I cu 2 intrri
-- Entitatea modulului de simulare
entity ModulSimulare is
end ModulSimulare;
architecture ArhModulSimulare of ModulSimulare is
-- Declararea componentei
component Poarta_I is
port (A, B: in Bit; Y: out Bit);
end component;
-- Declararea stimulilor
signal A, B, C: Bit;
begin
-- Instanierea unitii supuse testrii (UST)
UST: Poarta_I port map (A, B, C);
-- Semnalele de stimulare ca forme de und
A <= '0', '1' after 20 ns, '0' after 40 ns, 1 after 60 ns;
B <= '1', '0' after 40 ns, '1' after 80 ns;
end ArhModulSimulare;
15.03.2016

Curs 3 VHDL

80

MODULE DE SIMULARE

Exemple - multiplexor 4:1


library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Test_Mux4la1 is
end;
architecture Testare of Test_Mux4la1 is
component Mux4la1
port (S: in Std_Logic_Vector (1 downto 0);
I0, I1, I2, I3: in Std_Logic; Y: out Std_Logic);
end component;
signal Sel: Std_Logic_Vector (1 downto 0);
signal A, B, C, D, F: Std_Logic;
begin
Sel <= "00", "01" after 30 ns, "10" after 60 ns, "11" after 90 ns, "XX" after
120 ns, "00" after 130 ns;
A <= 'X', '0' after 10 ns, '1' after 20 ns;
B <= 'X', '0' after 40 ns, '1' after 50 ns;
C <= 'X', '0' after 70 ns, '1' after 80 ns;
D <= 'X', '0' after 100 ns, '1' after 110 ns;
UST: Mux4la1 port map (Sel, A, B, C, D, F);
15.03.2016
Curs 3 VHDL
81
end Testare;

MODULE DE SIMULARE

Afiare i raportare rezultate


trebuie s i afieze sau s
raporteze rezultatele
 modaliti de afiare i raportare:
 verificarea

 afiarea

listei valorilor semnalelor care se


modific n timp (echivalent cu afiarea formelor
de und)
 scrierea rezultatelor simulrii ntr-un fiier (log
file)
 folosirea instruciunii assert
15.03.2016

Curs 3 VHDL

82

MODULE DE SIMULARE

Instruciunea assert
 utilizat

pentru raportarea rspunsurilor


eronate generate de unitatea supus testrii
 moduri posibile de utilizare:
aplic o instruciune assert de fiecare dat
cnd se ateapt o nou valoare a unui semnal
de ieire al UST
 valoarea prognozat se specific drept condiie
 se folosesc mesaje de eroare precise i detaliate
(CE nu funcioneaz i CND a avut loc
evenimentul)
 se

15.03.2016

Curs 3 VHDL

83

PACHETE STANDARD I
PREDEFINITE

Pachete standard
 Standard
 Textio
 definite

n manualul de referin VHDL


 nu pot fi modificate de proiectani

15.03.2016

Curs 3 VHDL

84

PACHETE STANDARD I
PREDEFINITE

Pachete predefinite
- norm IEEE
 IEEE Numeric_Std
 IEEE Numeric_Bit
 Std_Logic_Arith al firmei Synopsys
 Std_Logic_Unsigned al firmei Synopsys
 ...
 Std_Logic_1164

15.03.2016

Curs 3 VHDL

85

S-ar putea să vă placă și