Tutorial 1 - Comparatoare
Tutorial 1 - Comparatoare
VHDL este un limbaj de descriere a hardware-ului folosit pentru a proiecta circuite logice
programabil pe un dispozitiv FPGA. Ca un limbaj de programare, are sintaxa sa respectivă
pentru a implementa funcț ii ș i a efectua operaț ii precum atribuiri, condiț ionale sau cicluri, dar
a diferenț ă de acestea, prezintă mult mai multe limitări, deoarece toată descrierea care se face trebuie
a avea un sentiment fizic.
În acest prim tutorial vom realiza designul unui element comparator prin descriere
estructural, adică, definind clar conexiunile dintre semnalele de intrare ș i ieș ire ale
sistem prin intermediul porț ilor logice ș i altor dispozitive de logică fixă pe care le putem găsi de
forma comercial. Principala avantaj a acestui tip de descriere este că avem plină
cunoș tinț e despre cum să construieș ti un circuit fără a depinde de un dispozitiv de logică programabilă
ceea ce, în alte cuvinte, rezultă în dezvoltarea unui proiect cu costuri reduse.
Aș a cum s-a menț ionat, vom realiza designul unui comparator. Acest dispozitiv permite
compara două cantităț i binare pentru a determina relaț ia lor1ne spune dacă sunt egale sau care dintre ele
este mai mare. În continuare, în figura 1 se poate observa schema unui comparător de 4 biț i.
(=) = ( = )= ̅̅̅̅̅̅̅̅̅̅ ⊕
(>) = ( > )
= ̅
(<) = ( < =) ̅
( = )= 3 2 1 0
• Fiind un circuit combinational, toate bitii sunt comparaț i în acelaș i timp, prin
Aș adar, trebuie să stabilim un filtru pentru a da prioritate bitilor cei mai semnificativi.
• Si 3> 3atunci > ș i se atribuie 1 acestei ieș iri (acelaș i lucru pentru 3< 3 ). Si
nu, înseamnă că 3= 3ș i se acordă atenț ie comparaț iei de 2con 2 . De
forma logică poate fi interpretată ca
( > )= 3+ 3 2
( > )= 3+ 3 2+ 3 2 1+ 3 2 1 0
Pentru a oferi un pic mai multă claritate, ultimul termen al expresiei anterioare ne
zice că > ș i bitii 3, 2 ș i 1 sunt egali ș i dacă 0> 0 . Pentru a înț elege mai bine aceasta
se sugerează revizuirea capitolului 4 Algebra lui Booledel Floyd, 9aediț ie.
Concepturi de bază:
- Semnal: Un semnal poate fi înț eles ca un cablu. Un cablu poate avea doar o valoare (0
1) într-un anumit moment de timp. Pentru a atribui un semnal se foloseș te simbolul <=
- Entitate:Dentro de aceasta se definesc semnalele de intrare, de ieș ire ș i parametrii opț ionali.
Semnalele de intrare nu pot fi alocate (adică nu pot fi pe partea stângă)
Semnalele de ieș ire nu pot fi operate sau atribuite semnalelor intermediare (nu
pot fi alături de dreapta a <=).
- Arhitectură: În aceasta se declară semnale intermediare, componente ș i se realizează
descrierea circuitului logic. Declaraț iile se fac înainte de cuvântul begin ș i
după ea se realizează descrierea.
Operatori logici de bază: Pentru a da prioritate operaț iunilor, folosiț i ( ).
oC <= AandB: C este 1 doar dacă A ș i B sunt 1.
oC <= AorB: C este 0 doar dacă A ș i B sunt 0.
oC <=notA: C este 1 dacă A este 0, ș i viceversa.
oC <= AxorB: C este 1 dacă A ș i B sunt diferite, dacă sunt egale este 0.
- Tipuri de date:
semnalul poate lua o valoare de 0 sau 1.
semnalul poate lua o stare de 0, 1, de impedan ț ă înaltă sau alte stări.
ostd_logic_vector: Este este un semnal sub formă de vector. Pentru a indica dimensiunea sa.
se usa (bdowntoa) sib > ao (b toa) si b < a. În primul caz, bitul mai
semnificativ se va găsi în partea stângă, iar în al doilea caz va fi în partea dreaptă.
- Componente: Se utilizează pentru a elabora circuitul într-o manieră modulară. Acestea permit să avem
un design organizat ș i evită repetarea codului. Pentru aceasta, mai întâi trebuie declarat
componente ș i apoi (după început) se creează mai multe instanț e ale aceluiaș i.
Pentru a înț elege mai bine aceste concepte, vă rugăm să completaț i codul situat în carpeta de
drive Digital I–Materiale clase/tutoriale/comparatoar.
Simularea în ModelSim
Pentru a adăuga un semnal de intrare la simulare, facem clic dreapta pe el, mergem la
modificăm/aplicăm unda…(1) ș i dăm semnalului forma dorită. Pentru a adăuga un semnal intern
(intermedia) o de ieș ire doar selectăm add wave(2).
Pentru a începe simularea, facem clic pe una dintre opț iunile de Run(1). Pentru a o reinicia, se are
opț iuneaRestart(2). Putem modifica forma de reprezentare a datelor dând clic dreapta
despre care dorim în consola gri, mergem la Radix ș i alegem un tip de reprezentare (3).
În consola de culoare neagră veț i putea observa rezultatul simulării dumneavoastră (1). Dacă doriț i să creș teț i sau
reduceț i zoomul dând clic dreapta pe ea ș i selectaț i zoom în sau zoom înapoi.
Livrabil
Important