CID Lab Lucrarea 5: Diferență între versiuni
De la WikiLabs
Jump to navigationJump to search
Linia 30: | Linia 30: | ||
*** RD_EN - comanda de citire | *** RD_EN - comanda de citire | ||
*** RD_DATA - datele citite | *** RD_DATA - datele citite | ||
* Memoria va fi instanțiată în modulul TOP conform figurii | * Memoria va fi instanțiată în modulul TOP conform figurii următoare: | ||
[[Fișier:Cid_lab6.jpg]] | |||
<syntaxhighlight lang="verilog"> | |||
module memorie_fifo( | |||
input clock, rst, // semnal de ceas si reset | |||
input write_enable, // comanda de scriere | |||
read_enable, // comanda de citire | |||
input [word_width-1 : 0] data_in, // date de intrare, aici pe 4 biti | |||
output [word_width-1 : 0] data_out, // date de iesire, aici pe 4 biti | |||
output reg empty, // semnal de iesire care este activ cand memoria este goala | |||
full, // semnal de iesire care este activ cand memoria este plina | |||
output reg [adr_size:0] fifo_counter //nr locatii folosite, maxim 32 | |||
); | |||
</syntaxhighlight> | |||
* Scrieți constrângerile necesare pentru a conecta porturile modulului TOP: | * Scrieți constrângerile necesare pentru a conecta porturile modulului TOP: | ||
** DIN la SW7-0, | ** DIN la SW7-4, | ||
** ADR la SW3-0, | |||
** WEN la BTN3, | ** WEN la BTN3, | ||
** DOUT la LD3-0, | ** DOUT la LD3-0, | ||
** intrarea de ceas la oscilatorul plăcii Nexys 2. | ** intrarea de ceas la oscilatorul plăcii Nexys 2. | ||
* | * Scrieți memoria RAM cu valorile necesare pentru a produce pe DOUT o secvență de numere indicată de cadrul didactic. |
Versiunea de la data 3 mai 2015 20:57
Noțiuni și cunoștințe necesare
- Logică booleană și sisteme de numerație
- Sintaxă Verilog
- Utilizarea programului de simulare ModelSim
- Introducere în sinteza pe FPGA. Xilinx ISE
- Utilizarea programului de sinteză Xilinx ISE
- Circuite secvențiale
- Memorii RAM
Exemplu
- Se va descrie în Verilog o memorie RAM 16x4b cu un port de citire-scriere sincron.
- Se vor scrie contrâgerile necesare pentru a conecta
- adresa la SW7-4 și data de intrare la SW3-0.
- semnalul de activare a scrierii la unul din butoane (BTN0 ... BTN3).
- ieșirea memoriei la LD3-0.
- intrarea de ceas a memoriei la oscilatorul plăcii Nexys 2.
- Scrieți adresele 3, 6 și 10 cu valorile 2, 1 respectiv 0, apoi citiți-le în aceeași ordine.
Exercițiu
- Descrieți în Verilog o memorie RAM 16x8b cu două porturi:
- Un port sincron de scriere (Write-Only) cu următoarele semnale:
- WR_ADDR - adresa la care se scrie
- WR_EN - comanda de scriere
- WR_DATA - datele scrise
- Un port sincron de citire (Read-Only) cu următoarele semnale:
- RD_ADDR - adresa citită
- RD_EN - comanda de citire
- RD_DATA - datele citite
- Un port sincron de scriere (Write-Only) cu următoarele semnale:
- Memoria va fi instanțiată în modulul TOP conform figurii următoare:
module memorie_fifo(
input clock, rst, // semnal de ceas si reset
input write_enable, // comanda de scriere
read_enable, // comanda de citire
input [word_width-1 : 0] data_in, // date de intrare, aici pe 4 biti
output [word_width-1 : 0] data_out, // date de iesire, aici pe 4 biti
output reg empty, // semnal de iesire care este activ cand memoria este goala
full, // semnal de iesire care este activ cand memoria este plina
output reg [adr_size:0] fifo_counter //nr locatii folosite, maxim 32
);
- Scrieți constrângerile necesare pentru a conecta porturile modulului TOP:
- DIN la SW7-4,
- ADR la SW3-0,
- WEN la BTN3,
- DOUT la LD3-0,
- intrarea de ceas la oscilatorul plăcii Nexys 2.
- Scrieți memoria RAM cu valorile necesare pentru a produce pe DOUT o secvență de numere indicată de cadrul didactic.