Extras din laborator
Obiective Dupa parcurgerea acestui laborator veti fi in masura sa:
• Proiectati numaratorul binar presetabil in VHDL.
• Proiectati numaratorul BCD presetabil in VHDL.
• Simulati functionarea numaratoarelor.
• Testati iesirile numaratorului.
Referinte Dueck, Robert K., Digital Design with CPLD Applications and VHDL, 2/e
Capitolul 9: Counters and Shift Registers
9.1 Basic Concepts of Digital Counters
9.2 Synchronous Counters
9.3 Design of Synchronous Counters
9.4 Programming Binary Counters in VHDL
9.5 Control Options for Synchronous Counters
9.6 Programming Presettable and Bidirectional Counters in VHDL
Echipament Placa FPGA de testare Spartan 3
necesar Xilinx ISE 10.1 software + ModelSim XE III 6.3c
Adaptor AC, iesire minima: 7 VDC, 250 mA DC
Manseta antistatica
Fire cu miez solid
Cleste pentru dezizolat cabluri
Notiuni Experimentale
Proiectarea numaratorului binar si BCD in VHDL
Numaratoarele pot fi proiectate in VHDL cu functii precum activare, controlul directional (crescator sau descrescator), resetare sincrona si incarcare (presetare) sincrona sau asincrona. Aceste functii pot fi implimentate asignand o valoare unei variabile count sau direct modificand un port de iesire, depinzand de conditiile specifice din blocurile IF ale unui unui PROCESS. Pentru mai multe detalii consultati sectiunea 9.6 din manualul Digital Design with CPLD Applications and VHDL, 2/e.
Un numarator pe 2 digiti poate numara de la 00 pana la 99 si apoi se intoarce la 00. Valori reprezentand un numar hexazecimal de la A la F nu este valid in acest cod.
Pentru numaratorul BCD pe 2 digiti folositi doua iesiri paralele pe 4 biti: o iesire pentru digitul unitatilor si a doua pentru digitul zecilor. Mai simplu decat o incrementare a unei variabile cu rangul intre 0 si 255, folositi doua variabile, fiecare luand valori de la 0 la 9. Cand cifra unitatilor este 9, trebuie sa ia valoarea 0 la urmatoarea incrementare si cifra zecilor se incrementeaza cu 1. Daca amandoua variabile sunt 9, ele trebuie sa devina 0 la urmatoarea incrementare. Dupa fiecare puls de ceas amandoua variabilele trebuie asignate la pinii de iesire, unde pot fi afisate direct ca numere binare sau decodate spre dispozitivul de afisare.
Cerinte
1. Numaratorul BCD
Pasul 1. Scrieti o fisier VHDL pentru numaratorul BCD pe 2 digiti cu resetare asincrona pe front descrescator (active-LOW asynchronous ), incarcare sincrona pe front crescator (active-HIGH synchronous), activare a numaratorului pe front crescator si directionarea (direction) ce face ca circuitul sa numere crescator pentru DIRECTION=1 si descrescator pentru DIRECTION=0.
Salvati fisierul cu numele ct2bcd.vhdl
Numaratorul trebuie sa numere de la 00 la 09, apoi de la 10 la 19 pana cand ajunge la 99. In acest moment numaratorul o va lua de la capat cu valoarea 00. Intrarile binare paralele trebuie sa incarce orice valoare de la 0 la 9. Daca intrarile binare paralele nu sunt valabile pentru numaratorul BCD (valoarea lor este intre “1010” si “1111”) pe fiecare digit se va afisa valoarea 9.
Pasul 2. Realizati un fisier de testare(Test Bench Waveform) pentru numaratorul BCD pe 2 digiti. Simularea trebuie sa contina un ciclu complet al numaratorului ce va permite testarea tuturor functiilor.
Salvati fisierul cu numele ct2bcd_tbh.tbw
2. Numaratorul binar presetat
Pasul 1. Scrieti o fisier VHDL pentru numaratorul binar pe 8 biti cu resetare (reset) asincrona pe front descrescator (active-LOW aynchronous ), incarcare (load) sincrona pe front crescator, activarea (enable) numaratorului pe front crescator, si directionare (direction).
Salvati fisierul cu numele ct8bit.vhdl
Pasul 2. Realizati un fisier de testare (Test Bench Waveform). Simularea trebuie sa contina un ciclu complet al numaratorului si testarea tuturor functiilor. Trebuie verificat daca incarcarea sincrona este cu adevarat sincrona si ca resetarea are prioritate fata de incarcare, care are prioritate fata de activarea numaratorului.
Folositi aceste criterii pentru a crea o simulare in ModelSim XE III 6.3c
Salvati fisierul cu numele ct8bit_tbh.tbw
Rezolvarea pas cu pas a cerintelor laboratorului
1. Descrierea aplicaţiei
La fel ca in orice limbaj evoluat de programare proiectarea ierarhizată a aplicaţiilor in VHDL, prin utilizarea modulelor, permite descrierea proiectului pe mai multe nivele, îmbunătăţeşte lizibilitatea şi permite reutilizarea unor module.
Un proiect ierarhizat este alcătuit din mai multe module. O aplicaţie poate fi descrisă la nivelul cel mai de sus (top) printr-o sursă VHDL. În această sursă se definesc interfeţe corespunzătoare cu alte module situate pe nivele inferioare, module care descriu părţi componente ale aplicaţiei
Nu există o limită a numărului de nivele ierarhice pe care un proiect poate să-l conţină. Principalul avantaj al proiectării ierarhizate a unei aplicaţii este acela că încurajează modularizarea. Alt avantaj este că permite organizarea proiectului pe nivele corespunzătoare de abstractizare şi detaliu precum si reutilizarea unor module.
În sursa VHDL de pe nivelul top se vor utiliza cuvintele cheie (instrucţiunile)
component şi PORT MAP pentru a instanţia modulele de pe nivelele inferioare.
Vom ilustra conceptele de ierarhizare, modularizare şi reutilizare cu o aplicaţie care presupune implementarea unui numărător binar pe 8 biti bidirecţional (poate
număra in sus sau in jos), resetabil (poate fi adus in starea iniţială, starea 0), presetabil (poate incarca un vector de 8 biti, setand astfel numaratorul cu acest numar). Vectorul de iesire reprezinta un vector binar pe 8 biti in care primii patru biti reprezinta cifra unitatilor, iar ultimii 4 cifra zecilor.
Mai intai trebuie implementat un numarator pe 4 biti ce va numara de la 0 la 9 (modulo 10), cu numele count09.vhdl. Acesta va avea toate functionalitatile numaratorului binar BCD , inclusiv reset asincron pe front descrescator, load sincron pe front crescator, enable pe front crescator. Mai mult decat atat acesta va returna, pe langa numarul intre 0 si 9, o valoare pe un bit care va fii 1 atunci cand numaratoarea crescatoare a ajuns pe pozitia 9 (“1001”) sau numaratoarea descrescatoare a ajuns pe pozitia 0 (“0000”). Cu ajutorul acestui numarator modulo veti putea realiza un numarator BCD pe cati digiti doriti.
Preview document
Conținut arhivă zip
- Numarator Binar si BCD cu Controlul Intrarilor.doc