Sunteți pe pagina 1din 8

4.

PROIECTAREA STRUCTURAL N LIMBAJUL VHDL

4.1 Avantajele proiectrii structurale

Descrierile structurale specific un sistem sub forma unor componente interconectate.


Aceste descrieri permit crearea unor nivele ierarhice multiple, n care un proiect este divizat
n uniti de proiectare de dimensiuni mai mici. Fiecare unitate de proiectare sau component
poate fi specificat fie printr-o descriere funcional, fie printr-o descriere structural. n
ultimul caz, o component poate fi format din mai multe subcomponente, care pot fi
specificate la rndul lor sub forma unor descrieri structurale. n final, fiecare component
primitiv de la nivelul cel mai de jos este specificat sub forma unei descrieri funcionale.
Proiectarea structural poate fi realizat, cel puin n cazul descrierilor la nivelul transferurilor
ntre registre (RTL), prin utilizarea componentelor.

Orice pereche entitate-arhitectur poate fi utilizat ca o component ntr-o arhitectur


de nivel superior. Astfel, sistemele complexe pot fi construite n mai multe etape din
componente de nivel inferior. Principalele avantaje ale proiectrii structurale sunt
urmtoarele:

Proiectarea structural pe mai multe nivele ierarhice permite definirea detaliilor unei
poriuni a proiectului la un moment dat, de preferin n paralel cu ali proiectani.

Fiecare component poate fi proiectat i testat individual, nainte de a fi integrat


n nivelele superioare ale proiectului. Aceast testare a nivelelor intermediare este mai
simpl dect testarea n cadrul sistemului, i este de obicei mai complet. Aceasta nseamn
c proiectantul poate avea un grad mai ridicat de ncredere n componentele utilizate, ceea
ce contribuie i la integritatea global a sistemului.

Componentele utile pot fi colectate n biblioteci, astfel nct ele pot fi reutilizate
ulterior n acelai proiect sau n alte proiecte. Unul din avantajele sintezei logice este c
asemenea componente sau module sunt independente de tehnologie. Gradul de reutilizare a
componentelor crete pe msur ce sunt disponibile mai multe componente.

4.2 Elementele unei descrieri structurale

O descriere structural const din componente interconectate prin intermediul


semnalelor. O component poate fi definit n cadrul unei arhitecturi cu ajutorul unei
declaraii component, sau poate fi reprezentat de un sistem separat, care este specificat
sub forma unei entiti i a unei arhitecturi. Pentru utilizarea unei componente declarate
anterior, aceasta trebuie instaniat n cadrul descrierii structurale. Instanierile
componentelor reprezint instruciunile de baz ntr-o arhitectur structural. Aceste
instanieri sunt concurente unele fa de altele. n cadrul instanierii unei componente se
specific maparea porturilor, care indic semnalele conectate la porturile componentei.
Aceste semnale pot fi specificate ca porturi sau pot fi semnale interne ale sistemului. n
ultimul caz, acestea trebuie declarate n seciunea declarativ a arhitecturii.

1
Exemplu de descriere structural

Elementele unei descrieri structurale vor fi ilustrate mai nti printr-un exemplu
complet. Componentele descrierii structurale vor fi examinate apoi separat n seciunile
urmtoare. Exemplul prezentat const din dou bistabile de tip D conectate n serie, sub
forma unui sistem pipeline. Structura circuitului este ilustrat n Figura 4.1.

Fig.4.1 Structura unui circuit de intarziere

Presupunem c bistabilul de tip D este definit ntr-o bibliotec, avnd definiia de


entitate i arhitectur prezentat n Exemplul 4.1.

Exist mai multe posibiliti pentru descrierea circuitului considerat cu ajutorul


componentelor. O posibilitate de descriere este prezentat n Exemplul 4.2.

2
Arhitectura conine trei pri care se refer la utilizarea componentelor. Acestea sunt
indicate prin comentarii, fiind urmtoarele: declaraia componentei, specificarea configuraiei
i instanierile componentei.

Declaraia componentelor

Declaraia unei componente definete interfaa cu o entitate de proiectare care descrie


componenta respectiv. Componenta declarat astfel poate fi utilizat ulterior n instruciunile
de instaniere a componentei respective. Declaraia componentei nu specific ns care este
perechea entitate-arhitectur care descrie componenta i nici porturile entitii; aceste
informaii sunt coninute n specificaia configuraiei sau n declaraia configuraiei.

Sintaxa simplificat a declaraiei unei componente este urmtoarea:

Sintaxa declaraiei unei componente este similar cu cea a declaraiei de entitate.


Clauza generic specific lista genericelor componentei, iar clauza port specific porturile
acesteia. n practic, numele componentei, numele genericelor i a porturilor acesteia, ca i
ordinea lor, sunt identice cu cele care apar n declaraia entitii corespunztoare
componentei.

O component poate fi declarat ntr-o arhitectur, un bloc, o entitate sau un pachet.


n cazul n care componenta este declarat ntr-o arhitectur, aceasta trebuie plasat n
partea declarativ a arhitecturii, naintea cuvntului cheie begin. n acest caz, componenta
poate fi utilizat (instaniat) numai n cadrul arhitecturii respective. Atunci cnd componenta
este declarat ntr-un pachet, ea va fi vizibil n toate arhitecturile care utilizeaz pachetul
respectiv.

Declaraia componentei dff din Exemplul 4.2 este reprodus n continuare:

Instanierea componentelor

Instanierea unei componente asociaz semnale sau valori cu porturile unei


componente definite anterior i asociaz valori cu genericele componentei respective.
Sintaxa simplificat a unei instanieri de componente este urmtoarea:
3
Instanierea unei componente introduce o relaie cu o unitate declarat anterior ca o
component. Numele componentei instaniate trebuie s corespund cu numele
componentei declarate anterior. Pentru componenta instaniat se specific genericele i
porturile, care reprezint parametrii actuali ai componentei declarate. Lista de asociere poate
fi specificat prin nume sau poate fi poziional.

Asocierea prin nume permite listarea genericelor i a porturilor ntr-o ordine care este
diferit de ordinea specificat n declaraia componentei. n acest caz, fiecrui generic sau
port i se asociaz n mod explicit o valoare sau un semnal. Numele genericului, respectiv a
portului, este urmat de simbolul =>, iar apoi de valoarea care i se atribuie genericului,
respectiv de semnalul la care este conectat portul. Porturile unei componente pot fi lsate
neconectate prin specificarea cuvntului cheie open.

n Exemplul 4.2, pentru porturi s-a utilizat asocierea prin nume. Instanierile
componentei din acest exemplu sunt reproduse mai jos:

ntr-o list de asociere poziional, parametrii actuali (genericele i porturile) sunt


specificai n aceeai ordine n care apar acetia n declaraia componentei. n acest caz,
numele genericelor sau a porturilor i simbolul => sunt omise. Instanierile componentei din
Exemplul 4.2 pot fi rescrise prin utilizarea asocierii poziionale n felul urmtor:

n Exemplul 4.2, exist dou instanieri ale componentei dff, care sunt etichetate cu d1
i d2. Aceste etichete sunt obligatorii i trebuie s fie unice. Fiecare instaniere creaz un
subcircuit coninnd componenta dff i conexiunile cu aceast component.

n exemplul anterior, distincia dintre declaraia entitii i cea a componentei a fost


indicat prin faptul c pentru iniialele numelui entitii i a porturilor acesteia s-au utilizat
litere mari, iar pentru instanierea componentei i pentru semnalele din circuitul rezultat s-au
utilizat litere mici. Aceast distincie s-a realizat doar pentru claritate i nu are o semnificaie
deosebit, deoarece n limbajul VHDL nu se ine cont de tipul literelor.

Observaii

Instanierile componentelor reprezint instruciuni concurente;

Instanierea unei componente reprezint instanierea declaraiei componentei i nu a


entitii. Relaia dintre declaraia componentei i entitatea care descrie componenta este
controlat de specificaia configuraiei.

4
Instanierea direct a entitilor

Nu este necesar ntotdeauna definirea unei componente pentru ca aceasta s fie


instaniat, deoarece limbajul VHDL permite instanierea direct a unei entiti. Aceast
instaniere reprezint forma cea mai simpl de specificare a unui sistem structural. Sintaxa
instanierii directe a unei entiti este urmtoarea:

Instruciunea de instaniere a unei entiti specific entitatea de proiectare i opional


numele arhitecturii care trebuie utilizat pentru aceast entitate. Aceast entitate poate fi
utilizat ulterior ca i o component. Entitatea este specificat prin numele bibliotecii n care
este compilat entitatea i prin numele entitii. Toate entitile specificate de utilizator sunt
compilate implicit n biblioteca work, astfel nct n instruciunea de instaniere a entitii se
specific de obicei aceast bibliotec.

Numele arhitecturii trebuie specificat numai atunci cnd exist mai multe arhitecturi
definite pentru o singur entitate. Dac nu este specificat numele arhitecturii i exist mai
multe arhitecturi pentru entitatea instaniat direct, se va utiliza arhitectura care a fost
compilat ultima.

Presupunnd c entitatea i arhitectura corespunztoare bistabilului de tip D din


Exemplul 4.1 sunt compilate n biblioteca work, circuitul din Figura 4.1 poate fi descris fr
declararea unei componente, prin utilizarea instanierii directe a entitii, n modul prezentat
n Exemplul 4.3.

Specificarea configuraiei

n cazul n care nu se utilizeaz instanierea direct a entitilor, declaraiile unor


componente i instanierile acestora nu sunt suficiente pentru o specificare complet a unei
arhitecturi structurale, deoarece nu este specificat descrierea implementrii componentelor.
n acest caz se poate utiliza o specificaie a configuraiei. O configuraie este o construcie
care definete modul n care instanierile de componente sunt asociate cu entitile de
proiectare i arhitecturile corespunztoare.
5
Motivul pentru separarea unei entiti i a componentelor acesteia este de a permite
ca asocierea (legarea) dintre entitate i componente s fie realizat ct mai trziu posibil n
procesul de simulare. Aceast asociere nu se realizeaz dect la nceperea simulrii, n faza
de elaborare. n acest fel, modulele surs ale unui proiect ierarhic pot fi compilate n orice
ordine. Sintaxa unei specificaii a configuraiei este urmtoarea:

Mai multe specificaii ale configuraiei unor componente pot fi incluse ntr-o declaraie
a configuraiei, care poate reprezenta o unitate separat de proiectare, i deci poate apare
ntr-un fiier separat. Sintaxa unei declaraii a configuraiei este urmtoarea:

Se observ c sintaxa unei specificaii a configuraiei este asemntoare cu cea a


instanierii directe a unei entiti. Totui, specificarea unei configuraii reprezint o metod
mai flexibil n cazul n care trebuie utilizat o implementare diferit a aceleiai componente.
Dac trebuie efectuate anumite modificri, acestea vor fi introduse numai n fiierul de
configuraie, iar arhitectura structural va rmne neschimbat. Utilizarea instanierii directe
a entitilor ar necesita ca toate modificrile s fie introduse n cadrul arhitecturii.

O specificaie a configuraiei are trei pri. Prima parte indic acele componente la
care se refer configuraia. Fiecare component este indicat prin eticheta instruciunii n
care este instaniat componenta respectiv. Este posibil utilizarea cuvntului cheie all
pentru selectarea tuturor componentelor cu numele specificat. Acest cuvnt cheie a fost
utilizat i n Exemplul 4.2, specificaia configuraiei din acest exemplu fiind reprodus mai jos:

n locul specificrii configuraiei pentru toate componentele cu numele dff, se puteau


prevedea specificaii separate pentru fiecare component instaniat:

A doua parte a specificaiei unei configuraii selecteaz entitatea care trebuie utilizat
pentru o anumit component sau pentru toate componentele cu numele indicat, ca i
biblioteca n care se afl entitatea respectiv. Aceast parte poate specifica de asemenea i
arhitectura care va fi utilizat pentru entitatea selectat, n cazul n care exist mai multe
arhitecturi.

A treia parte a specificaiei este opional. Aceast parte poate specifica n mod
explicit modul n care genericele i porturile unei componente instaniate sunt asociate cu
6
genericele i porturile entitii. Pentru aceasta se utilizeaz clauzele generic map i port
map, iar asocierea poate fi poziional sau prin nume. Asocierea explicit este necesar
numai dac numele genericelor i porturilor din declaraia unei componente sunt diferite de
numele genericelor i porturilor din declaraia entitii utilizate pentru componenta respectiv.
n practic se recomand ns ca aceste nume s fie aceleai.

n cazul n care pentru o component specificaia unei configuraii lipsete complet, se


va realiza o asociere implicit. Aceasta nseamn c pentru acea component va fi selectat
o entitate cu acelai nume din biblioteca curent, se va utiliza arhitectura compilat cel mai
recent, iar genericele i porturile sunt asociate cu genericele i porturile cu aceleai nume din
cadrul entitii. De cele mai multe ori, asocierea implicit este i cea dorit, astfel nct n
aceste cazuri nu este necesar specificarea unei configuraii. Exist ns un caz n care
specificaia unei configuraii este necesar, i anume atunci cnd o component trebuie
asociat cu o entitate dintr-o bibliotec diferit.

O posibilitate pentru realizarea acestei asocieri ar fi utilizarea clauzelor library i use


pentru ca toate entitile din biblioteca respectiv s fie vizibile. De exemplu, n cazul n care
entitatea dff a fost compilat n biblioteca numit basic, se pot aduga arhitecturii clauzele
library i use, dup cum se ilustreaz n Exemplul 4.4. n acest caz, specificaia configuraiei
nu este necesar.

Problema care apare n cazul utilizrii acestei metode este c toate entitile din
biblioteca respectiv devin vizibile, indiferent dac ele vor fi utilizate sau nu. Din acest motiv,
pot apare conflicte ntre numele entitilor din bibliotec i alte nume din unitile de
proiectare n care biblioteca este vizibil. O soluie mai avantajoas este specificarea unei
configuraii prin care se asociaz componenta cu entitatea, utilizndu-se numele implicite
pentru generice i porturi. Aceast soluie este ilustrat n Exemplul 4.5.

7
Observaii

n general, sistemele de sintez nu permit specificarea unei configuraii. Proiectantul


trebuie s se asigure c numele entitilor i a componentelor, ca i a genericelor i a
porturilor, sunt aceleai.

Pentru configuraia unei entiti de proiectare, att entitatea ct i configuraia trebuie


declarate n aceeai bibliotec.