CID Lab Lucrarea 5: Diferență între versiuni

De la WikiLabs
(Exercițiu)
(Exercițiu)
 
(Nu s-au afișat 7 versiuni intermediare efectuate de alți 3 utilizatori)
Linia 6: Linia 6:
 
* [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]
 
* [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]
 
* [[Circuite secvențiale]]
 
* [[Circuite secvențiale]]
 +
* [[Numărătorul]]
 
* [[Memorii RAM]]
 
* [[Memorii RAM]]
  
Linia 13: Linia 14:
 
* Se vor scrie contrâgerile necesare pentru a conecta
 
* Se vor scrie contrâgerile necesare pentru a conecta
 
** adresa la SW7-4 și data de intrare la SW3-0.
 
** adresa la SW7-4 și data de intrare la SW3-0.
** semnalul de activare a scrierii la unul din butoane (BTN0 ... BTN3).
+
** semnalul de activare a scrierii la unul din butoane (KEY0 ... KEY3).
 
** ieșirea memoriei la LEDR3-0.
 
** ieșirea memoriei la LEDR3-0.
** intrarea de ceas a memoriei la oscilatorul plăcii Nexys 2.
+
** 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.
 
* 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.
  
Linia 48: Linia 49:
 
always @(in)
 
always @(in)
 
     case(in)
 
     case(in)
         0:  out = 4'b1010;
+
         0:  out = 4'b0000;
 
         1:  out = 4'b0110;
 
         1:  out = 4'b0110;
 
         2:  out = 4'b0011;
 
         2:  out = 4'b0011;
Linia 59: Linia 60:
 
         9:  out = 4'b0101;
 
         9:  out = 4'b0101;
 
         10: out = 4'b1101;
 
         10: out = 4'b1101;
         11: out = 4'b0000;
+
         11: out = 4'b1010;
 
         12: out = 4'b0010;
 
         12: out = 4'b0010;
 
         13: out = 4'b0100;
 
         13: out = 4'b0100;
 
         14: out = 4'b1000;
 
         14: out = 4'b1000;
 
         15: out = 4'b1001;
 
         15: out = 4'b1001;
 +
        default: out = 4'b0000;
 
     endcase
 
     endcase
  
Linia 72: Linia 74:
 
** DIN la SW7-4,
 
** DIN la SW7-4,
 
** ADR la SW3-0,
 
** ADR la SW3-0,
** WEN la BTN3,
+
** WEN la KEY3,
 
** DOUT la LEDR3-0,
 
** DOUT la LEDR3-0,
 
** intrarea de ceas la CLOCK_50.
 
** intrarea de ceas la CLOCK_50.
Linia 79: Linia 81:
 
== Submiterea Exercițiilor ==
 
== Submiterea Exercițiilor ==
  
Pentru notare, se vor submite următoarele fișiere, către adresa de e-mail indicată de cadrul didactic <span style="color: red; font-weight: bold"> și către adresa cid_lab_homework@dcae.pub.ro</span>
+
Pentru notare, se vor submite următoarele fișiere, către adresa de e-mail indicată de cadrul didactic.
  
O arhivă <span style="color: red; font-weight: bold">zip<span> ce va conține:
+
O arhivă <span style="color: red; font-weight: bold">zip</span> ce va conține:
 
*Toate fișierele Verilog (cu extensia .v) care conțin descrierea circuitului
 
*Toate fișierele Verilog (cu extensia .v) care conțin descrierea circuitului
*Un fișier de constrângeri, cu extensia .ucf
+
*Un fișier de constrângeri, cu extensia .qsf
*Un fișier de tip proiect Xilinx ISE, cu extensia .xise
+
*Un fișier de tip proiect Quartus, cu extensia .qpf
Atenție, arhiva va conține doar fișiere (fără directoare).
+
Atentie, arhiva va contine doar fisiere (fara directoare).
  
 
Subiectul mesajului de e-mail trebuie să respecte formatul <span style="color: red; font-weight: bold">[Nume]_[Prenume]_[Grupa]_Mem</span> de exemplu Popescu_Ion_423B_Mem
 
Subiectul mesajului de e-mail trebuie să respecte formatul <span style="color: red; font-weight: bold">[Nume]_[Prenume]_[Grupa]_Mem</span> de exemplu Popescu_Ion_423B_Mem

Versiunea curentă din 18 aprilie 2018 16:00

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:

Cid lab6.jpg

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