Menu
Coddy logo textTech

Arrays

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 10 de 90.

Un array te permite almacenar múltiples values en una sola variable. Se puede acceder a cada elemento del array mediante su índice.

Nota: Un array no es un tipo de data independiente. Es una colección de tipos wire, reg, integer o real.

Declaración de arrays

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

reg [7:0] memory [0:255];   // 256 bytes de memoria (cada uno de 8 bits)
reg data [0:7];              // 8 registros de un solo bit
wire [3:0] bus [0:3];       // 4 buses, cada uno de 4 bits de ancho
integer counters [0:9];      // 10 enteros

El número entre corchetes [ ] es el array size, no el ancho de bits.

Acceso a elementos de arrays

reg [7:0] memory [0:3];

memory[0] = 165;        // Decimal 165
memory[1] = 90;         // Decimal 90
memory[2] = memory[0] + memory[1];

$display("%d", memory[2]);  // Imprime: 255

Arrays son muy útiles en los testbench para almacenar test data.

Arrays multidimensionales

Puedes crear arrays con múltiples dimensiones:

reg [7:0] matrix [0:3][0:3];   // matriz 4x4 de valores de 8 bits

matrix[0][0] = 255;            // 8'hFF = 255 decimal
matrix[2][1] = 85;             // 8'h55 = 85 decimal

Array frente a Vector

 VectorArray
Qué eswire o reg de varios bitsColección de múltiples values
Sintaxis[MSB:LSB][size]
Ejemploreg [7:0] data;reg [7:0] mem [0:255];
Accesodata[3] (bit 3)mem[3] (elemento 3)

Un vector es un valor con múltiples bits.
Un arrays es múltiples valores, cada uno con sus propios bits.

Notas importantes

  • Los arrays no son sintetizables en muchas herramientas cuando se usan con tamaños grandes
  • Los arrays se usan principalmente en testbenches
  • Para la memoria del hardware, usa primitivas especiales de memoria
challenge icon

Desafío

Completa el código siguiente para crear un array que almacene 4 valores de prueba.

Qué hacer: 

  1. Declara un array llamado test_data
    1. Usa el tipo de datos reg (because almacena values en un testbench)
    2. Cada elemento should tener 8 bits wide ([7:0])
    3. El array should tener 4 elements ([0:3])

Pruébalo tú mismo

module arrays;
  
  // Declara un array llamado test_data
  // Debe tener 4 elementos, cada uno de 8 bits de ancho
  // Usa el tipo de dato 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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online