CID Lab Lucrarea 5

De la WikiLabs
Jump to navigationJump to search
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Noțiuni și cunoștințe necesare

Exemplu

  • Se va descrie în Verilog o memorie RAM 16x4b cu un port de citire-scriere. Citirea este sincrona.
  • 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 (KEY0 ... KEY3).
    • ieșirea memoriei la LEDR3-0.
    • intrarea de ceas a memoriei la unul dintre oscilatoarele plăcii DE1.
  • Programati placa FPGA, si folosind switch-urile si butoanele placii, scrieți adresele 3, 6 și 10 cu valorile 2, 1 respectiv 7, apoi citiți-le în aceeași ordine. Observati, folosind LED-urile placii, daca s-a realizat memorarea.

Exercițiu

  • Descrieți în Verilog o memorie RAM 16x4b 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_DATA - datele citite
  • Memoria va fi instanțiată în modulul TOP conform figurii următoare:

module COUNTER(
    input clk,
    output reg [31:0] cnt
);

always @(posedge clk) cnt <= cnt + 1;

endmodule 

module ROM(
    input [3:0] in,
    output reg [3:0] out
);

always @(in)
    case(in)
        0:  out = 4'b0000;
        1:  out = 4'b0110;
        2:  out = 4'b0011;
        3:  out = 4'b1110;
        4:  out = 4'b1011;
        5:  out = 4'b1111;
        6:  out = 4'b0111;
        7:  out = 4'b1100;
        8:  out = 4'b0001;
        9:  out = 4'b0101;
        10: out = 4'b1101;
        11: out = 4'b1010;
        12: out = 4'b0010;
        13: out = 4'b0100;
        14: out = 4'b1000;
        15: out = 4'b1001;
        default: out = 4'b0000;
    endcase

endmodule
  • Scrieți constrângerile necesare pentru a conecta porturile modulului TOP:
    • DIN la SW7-4,
    • ADR la SW3-0,
    • WEN la KEY3,
    • DOUT la LEDR3-0,
    • intrarea de ceas la CLOCK_50.
  • Programati placa FPGA; Scrieți memoria RAM cu valorile necesare pentru a produce pe DOUT o secvență de numere indicată de cadrul didactic.

Submiterea Exercițiilor

Pentru notare, se vor submite următoarele fișiere, către adresa de e-mail indicată de cadrul didactic.

O arhivă zip ce va conține:

  • Toate fișierele Verilog (cu extensia .v) care conțin descrierea circuitului
  • Un fișier de constrângeri, cu extensia .qsf
  • Un fișier de tip proiect Quartus, cu extensia .qpf

Atentie, arhiva va contine doar fisiere (fara directoare).

Subiectul mesajului de e-mail trebuie să respecte formatul [Nume]_[Prenume]_[Grupa]_Mem de exemplu Popescu_Ion_423B_Mem