Sunteți pe pagina 1din 3

Capitolul 3

3. PROCESE SI SINCRONIZARI
Procesele :principala modalitate in descrierea VHDL.Capitolul arata cum sunt executate
procesele de simulator si cum pot fi utilizate la proiectarea si sinteza hardware.
Fiecare proces are alocat un calculator!
Definitie: Procesele sunt structuri concurente;corpul lor se executa secvential.
Un proces se activeaza sub controlul unei liste de senzitivitate.In cadrul procesului pot
exista stari WAIT,caz in care executia secventiala a procesului se opreste la intalnirea
unei stari WAIT si se continua dupa temporizarea(delay-ul) prescrisa de WAIT.
Cand cel putin o variabila din lista de senzitivitate isi modifica starea logica,corpul
ruleaza pana la sfarsit.
Sintaxa :
[eticheta :] process[(lista sensitivity)]
declaratii de tip
begin
corpul procesului(executie secventiala)
end process [eticheta :] ;
Procesele sunt utilizate pentru a descrie parti de functiuni din sistem, fara a intra in detalii
de implementare,deci se pot descrie hardware la un nivel inalt de abstractizare.Se pot descrie
vectori de test.
Procese=structuri concurente scrise in cadrul unei arhitecturi.Fiind structuri concurente,procesele
se executa paralel.Orice proces descrie separat o parte hardware sau un task autonom,concurent
cu alte task-uri
Un proces il putem vedea rulat pe un calculator dintr-un sistem mmultiprocesor.In corpul
procesului,se executa secvential intre begin si end.
3.2 LISTA DE SENZITIVITATE
Este o lista de semnale ce apare in paranteza dupa proces.Procesele se activeaza cand
apare un eveniment la unul din semnalele din lista(sa-si modifice starea).La eveniment,se
executa tot corpul,pana se ajunge la end.
Pentru exemplul 2,semnalul mask nu face parte din lista de senzitivitate.Cand apare un
eveniment,(schimb de stare) pentru mask,acest proces nu se ruleaza pentru ca mask nu
apartine listei de senzitivitate.eroare.Daca apare un eveniment la C,procesul se
ruleaza,chiard aca in corpul procesului nu se utilizeaza C.
Concluzie : lista de senzitivitate contine un set de semnale la care procesul este senzitiv
si nu neaparat intrari in proces :exempluCpoate fi o intrare de sincronizare
Nota :procesele utilizate in sinteza functiunilor logice combinationale trebuie sa aiba
lista de senzitivitate completa(toate intrarile sa apartina listei).Daca lipseste o
intrare din lista,procesul nu va recalcula iesirea cand intrarea in lista va schimba in
stare.

3.3 STARI WAIT

Corpul procesului contine 1n stari wait.Procesul incepe executia la timpul


0,apoi se suspenda pe intreaga durata a starii wait precizata de wait.
Cand procesul a ajuns la end,reia pornirea (start-ul)executiei de la inceput.
Pe durata suspendarii procesului,alte procese se pot executa (vezi concurenta
proceselor).Acest tip de proces este folosit pentru a genera vectori de test ,dar nu
pentru a descrie hard in RTL.Exista wait fara parametru!Procesele fara wait se
executa intr-o bucla infinita.Atentie !!!

Acest tip de proces este de cele mai multe ori cea mai buna cale de a genera vectori
de test in test bench.In practica,procesul pentru test bench este mult mai complex,dar
principiul de baza este acelasi cu etapele :
1.Aplica o parte vectori ;
2.Asteapta un interval de timp precizat;
3.aplica alta parte vectori ;
4.asteapta un timp precizat ;
etc...
3.4 ASIGNARI DE SEMNALE IN PROCESE
Asignarile de semnale sunt utile pentru a crea evenimente asupra semnalelor si permit
in acest fel comunicarea intre procese (ordinea de executie este de la ultimul proces la primul).
Nota :in cadrul proceselor,asignarea este secventiala pe cand in cadrul arhitecturilor
asignarea este concurenta.
Sintaxa:[label:]nume_signal<=Expresie[after delay];
Expresie[];
..
unde Expresie descrie o operatie logica sau aritmetica.
In continuare se studiaza evolutia unui proces pentru a vedea exact ce se intampla:

Bstart

begin
secventa
end

Calculeaza A*B apoi pregateste evenimentul S sa apara in viitor dupa 2 ns.


Nota:asignarea nu schimba valoarea semnalului.
Executia procesului :
1.Presupunem ca B schimba de stare.Va executa corpul pana la end.Se calculeaza A si
B,se selecteaza evenimentul S !(nu se activeaza ca sa apara in viitor dupa 2 ns).

Pentru instructiile care urmeaza secvential,se va lucra cu vechea valoare.Nu se va programa


un eveniment pentru S sau T.
Se atinge end :procesul se suspenda si asteapta un eveniment(schimbare de stare la un
semnal din lista de senzitivitate).Dupa 2 ns apare un eveniment si S isi schimba valoarea logica.
2. Procesul se executa pentru ca apare o schimbare in S,care apartine listei de
senzitivitate.Prima asignare nu are efect(A si B nu se modifica).A doua asignare programeaza un
eveniment T fara delay,dar nu schimba valoarea lui T !(important).A treia asignare nu are efect
pentru ca T pastreaza vechea valoare.Se ajunge la end.
Cand toate procesele active la momentul curent au terminat executia la timpul curent,
simulatorul analizeaza evenimentele din lista de senzitivitate.Pentru ex.5,T schimba de stare.
Mica intarziere asociata evenimentului T se numeste delta delay.
Procesul S se executa a treia oara.
3.S si T sunt fara efect,F este programat ca eveniment dupa 1 ns.Cand F schimba de
stare,procesul nu se executa deoarece F nu apartine listei de senzitivitate.
Obisnuit,delayurile asociate lui after nu se includ in sinteza,ele sunt utilizate in simulare pentru a
simula la acest nivel delay-uri ce depind de tehnologia finala de implementare.
Reguli pentru sinteza logicii combinationale cu procese:
1. Lista de senzitivitate trebuie sa includa obligatoriu toate intrarile ;
2. Iesirile trebuie sa depinda doar de intrari (fara reactii) ;
3. In cazul folosirii structurii if-chase,structurile trebuie sa fie complete(sa nu lase o
ramura fara actiune).
Exemplul 6 nu respecta regula a 2-a deoarece are reactie.

feedback: process(S,R,Q,QB)
begin
..
Unele programe(tool) de sinteza accepta acelasi cod. Probleme sunt posibile sa apara la
optimizaresinteza crede ca este vorba despre un circuit combinational si nu intelege
comportarea secventiala a acestui bistabil.Solutia acestei probleme ramane ca tema.