CID Lab Lucrarea 4: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
 
(Nu s-au afișat 15 versiuni intermediare efectuate de alți 2 utilizatori)
Linia 3: Linia 3:
* [[Introducere. Verilog HDL și ModelSim|Logică booleană și sisteme de numerație]]
* [[Introducere. Verilog HDL și ModelSim|Logică booleană și sisteme de numerație]]
* Sintaxă [[Verilog]]
* Sintaxă [[Verilog]]
* Utilizarea programului de simulare [[ModelSim]]
* [[Tutorial_Quartus_II| Utilizarea programului de sinteză Altera Quartus II]]
* [[Introducere în sinteza pe FPGA. Xilinx ISE]]
* [http://wiki.dcae.pub.ro/images/f/fc/Pinii_la_care_sunt_conectati_dispozitivele_I-O_pe_placa_experimentala_DE1.pdf Lista pinilor plăcii DE1]
* Utilizarea programului de sinteză [[Tutorial Xilinx ISE|Xilinx ISE]]
* [[Circuite secvențiale]], [[Numărătorul]]
* [[Memorii ROM]], [[Dispozitiv de IO: Afișajul cu 7 segmente]], [[Circuite secvențiale]], [[Numărătorul]]
* [[Generator de impulsuri cu factor de umplere variabil]]
* [[Memorii RAM]], [[Circuitul de debounce]]


== Cerințe ==
== Exemplu ==


[[Fișier:lab4.png|thumb|Schema bloc a circuitului]]
Realizați un circuit care să aprindă LEDG7 cu o intensitate variabilă, controlată de o valoare setată cu ajutorul switch-urilor SW7-SW0, folosind un generator de semnal cu factor de umplere variabil, bazat pe un numărător de 8 biți. Numărătorul va fi descris ca modul Verilog separat, și va fi instanțiat în generatorul de semnal.


* Descrieți în Verilog o memorie RAM 16x8 cu un port de citire-scriere. Scrieți un modul de test pentru acest circuit. Simulați memoria RAM în Modelsim.
== Exercițiu ==
* Modificați modulul de control pentru afișajul cu 7 segmente din lucrarea 3 de laborator, astfel încât acesta să afișeze simbolurile hexazecimale (A,b,C,d,E,F) pentru valorile 10 - 15.
* Descrieți in Verilog un modul de debounce. Scrieți un modul de test pentru acest circuit. Simulați memoria RAM în Modelsim.
* Modificați numărătorul de la lucrarea 3 astfel încât să fie pe 4 biți, eliminați portul de reset și adăugați un port '''enable''' care să permită incrementarea doar când acesta este 1.
* Folosind modulele anterioare și blocuri de instanțiere, descrieți în Verilog un circuit (numit Top) în care să utilizați un numărător care să dea adresa memoriei, iar numărarea să se facă doar la apăsarea unui buton (folosiți pentru buton un modul de debounce). Legați ieșirea numărătorului la intrarea de adresă a memoriei și la intrarea modulului de control al afișajului (transcodor), portul de date de intrare la switch-uri, portul de date de ieșire la leduri, portul de write-enable (we) la unul din butoane. Sintetizați circuitul în Xilinx ISE și configurați placa de FPGA.


== Cerințe suplimentare (opționale) ==
Realizați un circuit care instanțiază 8 generatoare de semnal cu factor de umplere variabilă pentru a forma o rampă de intensitate pe LEDG7-LEDG0, cu următoarele caracteristici:
* Intensitatea LEDG0, notată I<sub>LEDG0</sub> este determinată de SW7-SW0
* Intensitățile LEDG0-7 respectă una din următoarele relații (cadrul didactic va atribui fiecăruia din studenți una din relațiile de mai jos):
*# I<sub>LEDG0</sub> &lt; I<sub>LEDG1</sub> &lt; I<sub>LEDG2</sub> &lt; I<sub>LEDG3</sub> &lt; I<sub>LEDG4</sub> &lt; I<sub>LEDG5</sub> &lt; I<sub>LEDG6</sub> &lt; I<sub>LEDG7</sub>
*# I<sub>LEDG0</sub> &gt; I<sub>LEDG1</sub> &lt; I<sub>LEDG2</sub> &lt; I<sub>LEDG3</sub> &lt; I<sub>LEDG4</sub> &lt; I<sub>LEDG5</sub> &lt; I<sub>LEDG6</sub> &lt; I<sub>LEDG7</sub>
*# I<sub>LEDG0</sub> &gt; I<sub>LEDG1</sub> &gt; I<sub>LEDG2</sub> &lt; I<sub>LEDG3</sub> &lt; I<sub>LEDG4</sub> &lt; I<sub>LEDG5</sub> &lt; I<sub>LEDG6</sub> &lt; I<sub>LEDG7</sub>
*# I<sub>LEDG0</sub> &gt; I<sub>LEDG1</sub> &gt; I<sub>LEDG2</sub> &gt; I<sub>LEDG3</sub> &lt; I<sub>LEDG4</sub> &lt; I<sub>LEDG5</sub> &lt; I<sub>LEDG6</sub> &lt; I<sub>LEDG7</sub>
*# I<sub>LEDG0</sub> &gt; I<sub>LEDG1</sub> &gt; I<sub>LEDG2</sub> &gt; I<sub>LEDG3</sub> &gt; I<sub>LEDG4</sub> &lt; I<sub>LEDG5</sub> &lt; I<sub>LEDG6</sub> &lt; I<sub>LEDG7</sub>
*# I<sub>LEDG0</sub> &gt; I<sub>LEDG1</sub> &gt; I<sub>LEDG2</sub> &gt; I<sub>LEDG3</sub> &gt; I<sub>LEDG4</sub> &gt; I<sub>LEDG5</sub> &lt; I<sub>LEDG6</sub> &lt; I<sub>LEDG7</sub>
*# I<sub>LEDG0</sub> &gt; I<sub>LEDG1</sub> &gt; I<sub>LEDG2</sub> &gt; I<sub>LEDG3</sub> &gt; I<sub>LEDG4</sub> &gt; I<sub>LEDG5</sub> &gt; I<sub>LEDG6</sub> &lt; I<sub>LEDG7</sub>
*# I<sub>LEDG0</sub> &gt; I<sub>LEDG1</sub> &gt; I<sub>LEDG2</sub> &gt; I<sub>LEDG3</sub> &gt; I<sub>LEDG4</sub> &gt; I<sub>LEDG5</sub> &gt; I<sub>LEDG6</sub> &gt; I<sub>LEDG7</sub>
 
== Exercițiu Bonus ==
 
Realizați un circuit care să stingă apoi să aprindă un led treptat, folosind un generator de factor de umplere variabil.

Versiunea curentă din 21 aprilie 2017 12:05

Noțiuni și cunoștințe necesare

Exemplu

Realizați un circuit care să aprindă LEDG7 cu o intensitate variabilă, controlată de o valoare setată cu ajutorul switch-urilor SW7-SW0, folosind un generator de semnal cu factor de umplere variabil, bazat pe un numărător de 8 biți. Numărătorul va fi descris ca modul Verilog separat, și va fi instanțiat în generatorul de semnal.

Exercițiu

Realizați un circuit care instanțiază 8 generatoare de semnal cu factor de umplere variabilă pentru a forma o rampă de intensitate pe LEDG7-LEDG0, cu următoarele caracteristici:

  • Intensitatea LEDG0, notată ILEDG0 este determinată de SW7-SW0
  • Intensitățile LEDG0-7 respectă una din următoarele relații (cadrul didactic va atribui fiecăruia din studenți una din relațiile de mai jos):
    1. ILEDG0 < ILEDG1 < ILEDG2 < ILEDG3 < ILEDG4 < ILEDG5 < ILEDG6 < ILEDG7
    2. ILEDG0 > ILEDG1 < ILEDG2 < ILEDG3 < ILEDG4 < ILEDG5 < ILEDG6 < ILEDG7
    3. ILEDG0 > ILEDG1 > ILEDG2 < ILEDG3 < ILEDG4 < ILEDG5 < ILEDG6 < ILEDG7
    4. ILEDG0 > ILEDG1 > ILEDG2 > ILEDG3 < ILEDG4 < ILEDG5 < ILEDG6 < ILEDG7
    5. ILEDG0 > ILEDG1 > ILEDG2 > ILEDG3 > ILEDG4 < ILEDG5 < ILEDG6 < ILEDG7
    6. ILEDG0 > ILEDG1 > ILEDG2 > ILEDG3 > ILEDG4 > ILEDG5 < ILEDG6 < ILEDG7
    7. ILEDG0 > ILEDG1 > ILEDG2 > ILEDG3 > ILEDG4 > ILEDG5 > ILEDG6 < ILEDG7
    8. ILEDG0 > ILEDG1 > ILEDG2 > ILEDG3 > ILEDG4 > ILEDG5 > ILEDG6 > ILEDG7

Exercițiu Bonus

Realizați un circuit care să stingă apoi să aprindă un led treptat, folosind un generator de factor de umplere variabil.