Menu
Coddy logo textTech

Tableaux

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

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

Remarque : Un tableau 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 monobits
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 taille du tableau, et non la largeur en bits.

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

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 tableaux sont très utiles dans les bancs de test 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

Vecteur vs Tableau

 VecteurTableau
Ce que c’estFil ou reg multibitCollection de plusieurs valeurs
Syntaxe[MSB:LSB][size]
Exemplereg [7:0] data;reg [7:0] mem [0:255];
Accèsdata[3] (bit 3)mem[3] (élément 3)

Un vecteur est une valeur avec plusieurs bits.
Un tableau contient plusieurs valeurs, chacune avec ses propres bits.

Notes importantes

  • Les tableaux ne sont pas synthétisables dans de nombreux outils lorsqu’ils sont utilisés avec de grandes tailles
  • Les tableaux sont principalement utilisés dans les environnements de test
  • 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 (car il stocke des valeurs dans un banc de test)
    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 banc de test)

  
  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