Menu
Coddy logo textTech

Arrays

Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 10 sur 90.

Un array vous permet de stocker plusieurs valeurs dans une seule variable. Chaque élément de l’array est accessible par son index.

Remarque : Un array n’est pas un type de données distinct. Il s’agit d’une collection de types wire, reg, integer ou real.

Déclarer des tableaux

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

reg [7:0] memory [0:255];   // 256 octets de mémoire (chacun de 8 bits)
reg data [0:7];              // 8 registres monobit
wire [3:0] bus [0:3];       // 4 bus, chacun de 4 bits de large
integer counters [0:9];      // 10 entiers

Le nombre entre crochets [ ] est la array size, et non la largeur en bits.

Accéder aux éléments d’un array

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

memory[0] = 165;        // Décimal 165
memory[1] = 90;         // Décimal 90
memory[2] = memory[0] + memory[1];

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

Les arrays sont très utiles dans les testbench pour stocker les données de test.

Tableaux multidimensionnels

Vous pouvez créer des tableaux avec plusieurs dimensions :

reg [7:0] matrix [0:3][0:3];   // tableau 4x4 de valeurs 8 bits

matrix[0][0] = 255;            // 8'hFF = 255 décimal
matrix[2][1] = 85;             // 8'h55 = 85 décimal

array vs Vecteur

 VecteurArray
Ce que c'estwire ou reg multibitCollection de plusieurs values
Syntaxe[MSB:LSB][size]
Exemplereg [7:0] data;reg [7:0] mem [0:255];
Accèsdata[3] (bit 3)mem[3] (element 3)

Un vecteur est une valeur composée de plusieurs bits.
Un array est plusieurs valeurs, chacune avec ses propres bits.

Notes importantes

  • Les arrays ne sont pas synthétisables dans de nombreux outils lorsqu’ils sont utilisés avec de grandes tailles
  • Les arrays sont principalement utilisés dans les testbenches
  • Pour la mémoire matérielle, utilisez des primitives de mémoire spéciales
challenge icon

Défi

Complétez le code ci-dessous pour créer un tableau qui stocke 4 valeurs de test.

À faire :

  1. Déclarez un tableau appelé test_data
    1. Utilisez le type de données reg (because il stocke des valeurs dans un testbench)
    2. Chaque élément doit avoir une largeur de 8 bits ([7:0])
    3. Le tableau doit avoir 4 éléments ([0:3])

Essayez vous-même

module arrays;
  
  // Déclarez un tableau appelé test_data
  // Il doit avoir 4 éléments, chacun de 8 bits de large
  // Utilisez le type de données reg (car il stocke des valeurs dans 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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Verilog en ligne