Menu
Coddy logo textTech

Arrays

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 10 de 90.

Um array permite que você armazene múltiplos valores em uma única variável. Cada elemento no array pode ser acessado por seu índice.

Nota: Um array não é um tipo de dado separado. Ele é uma coleção de tipos wire, reg, integer ou real.

Declarando Arrays

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

reg [7:0] memory [0:255];   // 256 bytes de memória (cada um com 8 bits)
reg data [0:7];              // 8 registradores de bit único
wire [3:0] bus [0:3];       // 4 barramentos, cada um com 4 bits de largura
integer counters [0:9];      // 10 inteiros

O número entre colchetes [ ] é o tamanho do array, não a largura de bits.

Acessando Elementos de 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

Arrays são muito úteis em testbenches para armazenar dados de teste.

Arrays Multidimensionais

Você pode criar arrays com múltiplas dimensões:

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 Vetor

 VetorArray
O que éWire ou reg multi-bitColeção de múltiplos valores
Sintaxe[MSB:LSB][size]
Exemploreg [7:0] data;reg [7:0] mem [0:255];
Acessodata[3] (bit 3)mem[3] (elemento 3)

Um vetor é um único valor com múltiplos bits.
Um array é múltiplos valores, cada um com seus próprios bits.

Notas Importantes

  • Arrays não são sintetizáveis em muitas ferramentas quando usados com tamanhos grandes
  • Arrays são usados principalmente em testbenches
  • Para memória de hardware, use primitivas de memória especiais
challenge icon

Desafio

Complete o código abaixo para criar um array que armazena 4 valores de teste.

O que fazer: 

  1. Declare um array chamado test_data
    1. Use o tipo de dado reg (porque ele armazena valores em um testbench)
    2. Cada elemento deve ter 8 bits de largura ([7:0])
    3. O array deve ter 4 elementos ([0:3])

Folha de consulta

Arrays armazenam múltiplos valores em uma única variável, acessados por índice. Um array é uma coleção de tipos wire, reg, integer ou real.

Sintaxe de declaração: <data_type> <name> [<size>];

reg [7:0] memory [0:255];  // 256 elementos, cada um com 8 bits de largura
wire [3:0] bus [0:3];      // 4 elementos, cada um com 4 bits de largura
integer counters [0:9];    // 10 inteiros

Acessando elementos:

memory[0] = 165;
memory[2] = memory[0] + memory[1];
$display("%d", memory[2]);

Arrays multidimensionais:

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

Array vs Vetor:

  • Vetor — um valor com múltiplos bits: reg [7:0] data;data[3] acessa o bit 3
  • Array — múltiplos valores, cada um com seus próprios bits: reg [7:0] mem [0:255];mem[3] acessa o elemento 3

Arrays são usados principalmente em testbenches; para memória de hardware, use primitivas de memória especiais.

Experimente você mesmo

module arrays;
  
  // Declara um array chamado test_data
  // Ele deve ter 4 elementos, cada um com 8 bits de largura
  // Use o tipo de dado reg (porque ele armazena valores em um 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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos