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 valores en una sola variable. Se puede acceder a cada elemento del array mediante su índice.

Nota: Un array no es un tipo de datos 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 tamaño del array, no el ancho de bits.

Acceso a los elements del array

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

Los arrays son muy útiles en los testbenches para almacenar datos de prueba.

Arrays multidimensionales

Puede crear arrays con múltiples dimensiones:

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

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

Array vs Vector

 VectorArray
Qué esWire o reg multibitColección de múltiples valores
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 array es múltiples values, 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 memory de hardware, use primitivas de memory especiales
challenge icon

Desafío

Completa el código a continuación para crear un arreglo que almacene 4 valores de prueba.

Qué hacer: 

  1. Declara un arreglo llamado test_data
    1. Usa el tipo de datos reg (porque almacena valores en un banco de pruebas)
    2. Cada elemento debe tener un ancho de 8 bits ([7:0])
    3. El arreglo debe tener 4 elementos ([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