CATEGORII DOCUMENTE |
1 Proiectarea registrelor si a latchurilor
Latchurile si registrele pot fi modelate prin metode structurale. De exemplu, latch-ul de tip D din Figura 1 poate fi modelat structural prin programul din Figura 2.
O alta varianta de model pentru un latch de tip D este aceea din Figura 3. Este un model comportamental care foloseste numai o linie de cod VHDL. Deoarece in program nu se precizeaza ce se intampla daca C nu este 1, compilatorul va forma un model care retine valoarea lui Q intre doua executii ale procesului.
Pentru a descrie comportarea bistabilelor care comuta pe frontul unui semnal de ceas, trebuie sa se foloseasca atributele semnalelor in VHDL (de exemplu, atributul event). Daca SEM este numele unui semnal, atunci constructie SEM event returneaza valoarea true daca SEM se schimba de la o valoare la alta (eveniment in SEM), false in caz contrar.
Cu aceasta observatie, se poate obtine un model pentru un bistabil D comutat pe frontul pozitiv al semnalului de ceas (Figura 4).
Modelul unui bistabil D poate fi complicat pentru a include si intrari asincrone (preset, clear) si o iesire complementata, ca in circuitul 74x74. Acest model este prezentat in Figura
Modelele comportamentale ale registrelor se pot obtine definind intrarile si iesirile ca vectori si incluzand si functii suplimentare. De exemplu, in Figura 6 se prezinta modelul unui registru de 16 biti, cu iesiri three-state, cu intrari clock-enable, output-enable si clear. Se foloseste un semnal intern IQ pentru a resine valorile iesirilor bistabilelor.
In Figura 7 se prezinta modelul algoritmic al unui flip-flop de tip JK. Setarea si resetarea sunt operatii prioritare fata de operarea normala prin intermediul semnalului de ceas. Daca R = S = 1, nu se intampla nimic. Pentru ca aceasta este o conditie ilegala, iesirea, in general, nu se specifica. Deci, modul de functionare 'nu se intampla nimic' este consistent cu specificatia.
1. Completati programele din Figura 2, Figura 3, Figura 4, Figura 5, Figura 6, Figura 7. Compilati aceste programe si simulati functionarea circuitelor respective.
2. Elaborati un raport scris care sa contina modelele VHDL complete (comentate) si formele de unda care demonstreaza functionarea corecta a circuitelor in toate cazurile posibile.
2 Proiectarea numaratoarelor
Operatia de numarare este fundamentala in circuitele digitale. In Figura 8 se prezinta modelul unui numarator care poate fi resetat (RESET = '1'), incarcat (LOAD = '1') si poate numara inainte sau inapoi, dupa cum se stabileste prin semnalul de control UP, pe frontul crescator al semnalului de ceas. Ordinea prioritatilor este (1) reset, (2) incarcare, (3) numarare. Modelul pentru numarator foloseste functiile INC si DEC din pachetul PRIMS
In Figura 9 este prezentat modelul unui numarator similar cu 74x163. Programul foloseste biblioteca IEEE.std_logic_arith.all, care include tipul UNSIGNED. Aceasta biblioteca include definitiile pentru operatorii + si care realizeaza adunarea si scaderea asupra operanzilor UNSIGNED. Programul declara intrarea si iesirea numaratorului ca vectori UNSIGNED si foloseste + pentru a incrementa valoarea numaratorului.
Din pacate, unele programe de sinteza au tendinta sa sintetizeze numaratoarele cu ajutorul unui sumator binar care aduna 1 la valoarea curenta a numaratorului. Aceasta modalitate conduce la o logica de tip combinational mai complexa decat ceea ce se observa la structurile clasice de numaratoare. De aceea, este util sa dezvoltam modele structurale ale numaratoarelor, modele in care sa conectam celule elementare de numarare.
De exemplu, putem modela o celula elementara de numarare pentru numaratorul 74x163, folosind circuitul din Figura 10 [6].
In Figura 11 se prezinta programul VHDL pentru celula din Figura 10. In acest program, componenta dff_qnn (bistabil de tip D) se presupune definita; este similar cu bistabilul D din Figura 5, cu adaugarea unei iesiri complementate QN
Semnalele din celula elementara au urmatoarele semnificatii:
CLK (comun)
Intrarea de ceas pentru toate etajele LDNOCLR (comun) Activat daca intrarea LD a numaratorului este
activata si CLR este negat NOCLRORLD (comun) Activat daca intrarile CLR si LD sunt negate SNTENP (comun) Activat daca intrarea ENP a numaratorului este
activata Di (pentru fiecare celula) Intrarea de incarcare paralela
pentru celula i CNTENi (pentru fiecare celula) intrare de validare pentru
celula i CNTENi + 1 (pentru fiecare celula) iesire de validare pentru celula i Qi (pentru fiecare celula) Iesirea de numarare pentru
celula i
In Figura 12 se arata modul in care se poate obtine un numarator serial de 8 biti folosind celula definita anterior. Primele doua asignari din corpul arhitectural sintetizeaza semnalele LDNOCLR si NOCLRORLD. Urmatoarele doua instructiuni sunt dedicate conditiilor legatura pentru lantul serial de numarare. In sfarsit, instructiunea generate instantiaza opt celule de numarare de 1 bit si conecteaza lantul de validare.
1. Completati programele din Figura 8, Figura 9, Figura 11, Figura 12. Compilati aceste programe si simulati functionarea circuitelor respective.
2. Elaborati un raport scris care sa contina modelele VHDL complete (comentate) si formele de unda care demonstreaza functionarea corecta a circuitelor in toate cazurile posibile.
3 Proiectarea registrelor de deplasare
Registrele de deplasare sunt elemente importante pentru efectuarea operatiilor asupra datelor. In Figura 13 se prezinta un model pentru aceasta circuit. Se poate efectua incarcarea paralela a registrului (pentru LOAD = '1'), continutul lui se poate deplasa la dreapta (SR = '1' si SL = '0') sau se poate deplasa la stang (SR = '0' si SL = '1' IR si IL sunt intrari seriale pentru deplasarea la dreapta/stanga. Incarcarea paralela are prioritate fata de deplasare.
O alta varianta a acestui registru de deplasare este prezentata in Figura 14. Pentru celelalte doua combinatii SR SL, intrarea se transfera neschimbata la iesire. IL si IR sunt valorile care se introduc in partea stanga, respectiv dreapta, a iesirii deplasate. Se foloseste operatia de concatenare pentru a modela deplasarile.
In Figura 15 este prezentat tabelul de functionare pentru un registru de deplasare de 8 biti cu un set extins de functii. In plus fata de functiile Hold Load si Shift (prezente la 74x194 si 74x299) acest registru realizeaza si deplasarea circulara deplasarea aritmetica. In operatiile de deplasare circulara, bitul care se afla la un capat al vectorului se transfera inapoi, la celalalt capat. In operatiile de deplasare aritmetica, intrarea se seteaza pentru inmultirea cu 2 sau impartirea la 2; pentru o deplasare la stanga, intrarea din dreapta este 0, pentru o deplasare la dreapta, este copiat bitul cel mai din stanga (semn).
Un model comportamental pentru acest registru cu functii extinse este prezentat in Figura 16. Se defineste un proces si se foloseste atributul event pentru a obtine comutarea pe frontul dorit al semnalului CLK. Alte caracteristici ale programului sunt:
- Se foloseste un semnal intern, IQ, imagine a lui Q, semnal care poate fi citit/scris prin instructiunile procesului. O alta posibilitate este definirea iesirilor Q de tip buffer.
- Intrarea CLR este asincrona; intrucat acest semnal este in lista de sensibilitate, el este testat ori de cate ori se schimba. Iar instructiunea IF este structurata astfel incat CLR are precedenta fata de orice alta conditie.
- Se foloseste o instructiune CASE pentru a defini operatia registrului pentru cele opt combinatiii posibile ale intrarilor de selectie S (2 downto 0)
- In CASE, cazul "when others" este necesar pentru a evita erori la compilare.
- Instructiunea NULL arata ca, in anumite cazuri, nu are loc nici o actiune. In cazul 1 nu se impune nici o actiune; actiunea implicita pentru un semnal este mentinerea valorii pana cand se indica altceva.
- In cele mai multe cazuri se foloseste operatia de concatenare & pentru a construi un tablou de 8 biti dintr-un subset de 7 biti format din IQ, plus un alt bit.
- Intrucat VHDL este puternic tipizat, se foloseste CONV_INTEGER pentru a converti intrarea S (STD_LOGIC_VECTOR) la un intreg in instructiunea CASE
1. Completati programele din Figura 13, Figura 14, Figura 16. Compilati aceste programe si simulati functionarea circuitelor respective.
2. Elaborati un raport scris care sa contina modelele VHDL complete (comentate) si formele de unda care demonstreaza functionarea corecta a circuitelor in toate cazurile posibile.
4 Proiectarea unor circuite secventiale complexe
Automat pentru furnizarea bauturilor racoritoare - numararea mondelor
Masinile care livreaza diferite produse au structuri diferite in functie de mai multe caracteristici: pot livra un singur produs sau mai multe produse, pot da restul daca suma introdusa a fost prea mare sau nu dau rest, accepta bancnote sau accepta numai monede, proiectul masinii este de tip comportamental, masina cu stari finite, etc.
Varianta pe care o vom lua in considerare in acest paragraf accepta numai monede (de 5, 10 si 25 centi), livreaza un singur produs, da restul daca suma a fost mai mare decat pretul produsului. Semnalele de intrare sunt: intrare 5 centi, intrare 10 centi, intrare 25 centi, reset. Semnalele de iesire sunt: rest 5 centi, rest 10 centi, furnizare produs. Se foloseste un numarator pentru a tine evidenta numarului de valori de 5 centi introduse. Adica, numaratorul se incrementeaza cu 1 daca s-a introdus o moneda de 5 centi, se incrementeaza cu 2 daca s-a introdus o moneda de 10 centi, se incrementeaza cu 5 daca s-a introdus o moneda de 25 centi. Programul este prezentat in Figura 17.
Exercitii si probleme
Sa se proiecteze un circuit presetabil de alarmare. Circuitul este de fapt un numarator care numara invers. Capacitatea maxima este 59. El poate fi incarcat de la tastatura zecimala, dupa care, la apasarea tastei de VALIDARE, incepe sa numere inapoi pana la 0. La 0 activeaza un semnal de ALARMA. Ritmul de numarare este dat de un semnal de ceas cu perioada de o secunda.
a. Elaborati schema bloc a acestui circuit; descrieti semnalele de intrare, de iesire, intermediare.
b. Elaborati modelele VHDL ale blocurilor componente si simulati functionarea acestora.
c. Elaborati un model structural al circuitului prin interconectarea blocurilor de la punctul anterior.
d. Elaborati o schema logica functionala a circuitului si explicati functionarea acestuia.
e. Elaborati un model schematic in XILINX ISE 9.2i folosind schema de la punctul anterior.
f. Elaborati un raport scris care sa contina modelele VHDL complete (comentat) si formele de unda care demonstreaza functionarea corecta a circuitului in toate cazurile posibile.
Realizati un model structural pentru un registru paralel-paralel de 4 biti [5].
Note si comentarii
Convertor serial - paralel cu numararea bitilor
Serial to parallel converter - counting bits
Modelul pe care il propunem in acest paragraf citeste un sir de biti de intrare (serial) si produce o iesire paralela de 8 biti. Schema bloc a convertorului este prezentata in Figura 18.
Modelul este prezentat ]n Figura ???? (Cu FSM - Nu aici!!!)
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2160
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved