Menu
Coddy logo textTech

Arrays

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

Um array permite armazenar múltiplos valores em uma única variável. Cada elemento no array pode ser acessado pelo seu índice.

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

Declaring 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 um único bit
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 array elements

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.

Multi-Dimensional Arrays

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 Vector

 VectorArray
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 valor com múltiplos bits.
Um array é composto por 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 memory de hardware, use primitivas de memory 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 dados 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])

Experimente você mesmo

module arrays;
  
  // Declare um array chamado test_data
  // Ele deve ter 4 elementos, cada um com 8 bits de largura
  // Use o tipo de dados 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