Menu
Coddy logo textTech

Array

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 10 di 90.

Un array ti consente di memorizzare più valori in una variabile. È possibile accedere a ciascun elemento dell'array tramite il suo indice.

Nota: Un array non è un tipo di dato separato. È una raccolta di tipi wire, reg, integer o real.

Dichiarare gli array

Sintassi: <data_type> <name> [<size>];

reg [7:0] memory [0:255];   // 256 byte di memoria (8 bit ciascuno)
reg data [0:7];              // 8 registri a bit singolo
wire [3:0] bus [0:3];       // 4 bus, ciascuno largo 4 bit
integer counters [0:9];      // 10 numeri interi

Il numero tra parentesi quadre [ ] è la dimensione dell'array, non la larghezza in bit.

Accesso agli elementi di un array

reg [7:0] memory [0:3];
memory[0] = 165;        // Decimale 165
memory[1] = 90;         // Decimale 90
memory[2] = memory[0] + memory[1];
$display("%d", memory[2]);  // Stampa: 255

Gli array sono molto utili nei banchi di prova per memorizzare i dati di test.

Array multidimensionali

Puoi creare array con più dimensioni:

reg [7:0] matrix [0:3][0:3];   // Array 4x4 di valori a 8 bit
matrix[0][0] = 255;            // 8'hFF = 255 in decimale
matrix[2][1] = 85;             // 8'h55 = 85 in decimale

Vettore vs array

 VettoreArray
Cos'èFilo o registro multibitRaccolta di più valori
Sintassi[MSB:LSB][size]
Esempioreg [7:0] data;reg [7:0] mem [0:255];
Accessodata[3] (bit 3)mem[3] (elemento 3)

Un vettore è un valore con più bit.
Un array è composto da più valori, ciascuno con i propri bit.

Note importanti

  • Gli array non sono sintetizzabili in molti strumenti quando vengono usati con dimensioni grandi
  • Gli array vengono usati soprattutto nei testbench
  • Per la memoria hardware, usa primitive di memoria speciali
challenge icon

Sfida

Completa il codice qui sotto per creare un array che memorizzi 4 valori di test.

Cosa fare: 

  1. Dichiara un array chiamato test_data
    1. Usa il tipo di dato reg (perché memorizza valori in un testbench)
    2. Ogni elemento deve essere largo 8 bit ([7:0])
    3. L'array deve avere 4 elementi ([0:3])

Provalo tu

module arrays;
  
  // Declara un arreglo llamado test_data
  // Debe tener 4 elementos, cada uno de 8 bits de ancho
  // Usa el tipo de datos reg (porque almacena valores en un testbench)

  
  integer i;
  
  initial begin
    test_data[0] = 170;   
    test_data[1] = 240;    
    test_data[2] = 204;    
    test_data[3] = 15;   
    
    for (i = 0; i < 4; i = i + 1) begin
      $display("test_data[%0d] = %b", i, test_data[i]);
    end
    $finish;
  end
  
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online