Diferență între revizuiri ale paginii „CID Lab Lucrarea 5”

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

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
  • Memoria va fi instanțiată în modulul TOP conform figurii următoare:

Cid lab6.jpg

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.