Menu
CoddyTech

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 peut être accessible par son indice.

Remarque : Un tableau n’est pas un type de données distinct. C’est 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 (8 bits chacun)
reg data [0:7];              // 8 registres d’un seul bit
wire [3:0] bus [0:3];       // 4 bus de 4 bits chacun
integer counters [0:9];      // 10 entiers

Le nombre entre crochets [ ] correspond à 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 des données de test.

Tableaux multidimensionnels

Tu peux créer des tableaux à plusieurs dimensions :

reg [7:0] matrix [0:3][0:3];   // Tableau 4x4 de valeurs sur 8 bits
matrix[0][0] = 255;            // 8'hFF = 255 en décimal
matrix[2][1] = 85;             // 8'h55 = 85 en décimal

Vecteur et tableau

 VecteurTableau
Ce que c’estFil ou registre de plusieurs bitsEnsemble 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 composée de plusieurs bits.
Un tableau est composé de plusieurs valeurs, chacune avec ses propres bits.

Remarques importantes

  • Un tableau reg est synthétisable : les outils de synthèse construisent des mémoires telles que des RAM et des fichiers de registres à partir de tableaux comme reg [7:0] mem [0:255];
  • Les tableaux sont également utilisés dans les bancs de test pour stocker des données de test
challenge icon

Défi

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

À faire :

  1. Déclare un tableau appelé test_data
    1. Utilise 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 comporter 4 éléments de 8 bits chacun
  // 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