Menu
Coddy logo textTech

Nombres avec taille

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 14 sur 90.

Il existe un moyen de déclarer un nombre avec une taille spécifique en Verilog. C'est ce qu'on appelle un sized number. C'est utile car cela évite toute confusion sur le nombre de bits de votre nombre et garantit que votre matériel se comporte exactement comme prévu.

Un nombre dimensionné suit ce format : [bits]'[format][value]

  • <strong>bits</strong> — le nombre de bits (par exemple, 8)
  • <strong>'</strong> — une apostrophe qui sépare la taille du format (requis)
  • <strong>format</strong> — la base du nombre : b pour binaire, d pour décimal, h pour hexadécimal, ou o pour octal
  • <strong>value</strong> — le nombre réel (par exemple, 1010)

Par exemple :

  • 4'b1010 — 4 bits, binaire 1010 (décimal 10)
  • 8'd255 — 8 bits, décimal 255 (binaire 11111111)
  • 16'hFF — 16 bits, hex FF (binaire 0000000011111111)
  • 3'b1 — 3 bits, binaire 001 (les bits de gauche sont remplis de zéros)

Exemple de code :

reg [7:0] data;

data = 8'b10101010;   // 8 bits, binary 10101010
data = 8'd170;        // 8 bits, décimal 170
data = 8'hAA;         // 8 bits, hex AA

Les trois exemples attribuent la même valeur à data.

Pourquoi la taille compte

Sans taille :

reg [7:0] data;
data = 1;        // Que signifie ceci ? 1 bit ? 8 bits ?

Verilog suppose par défaut que les petits nombres font 32 bits, ce qui peut causer des problèmes.

Avec taille :

reg [7:0] data;
data = 8'b00000001;   // Clear: 8-bit value 1

Zero Padding

Lorsque vous assignez une valeur plus petite à un vecteur plus grand, Verilog remplit les bits de gauche avec des zéros :

reg [7:0] data;
data = 4'b1010;    // Becomes 8'b00001010
challenge icon

Défi

Complétez le code en écrivant les nombres dimensionnés corrects.

Ce qu'il faut faire :

  1. Affectez à a un nombre binaire de 8 bits pour le décimal 170 (binaire 10101010)
  2. Affectez à b un nombre binaire de 4 bits pour le décimal 12 (binaire 1100)
  3. Affectez à c un nombre hexadécimal de 16 bits pour le décimal 255 (hex FF)

Essayez vous-même

module sized_challenge;
  reg [7:0] a;
  reg [3:0] b;
  reg [15:0] c;
  
  initial begin
    a = ______;   // binaire 8 bits pour 170 (10101010)
    b = ______;   // binaire 4 bits pour 12 (1100)
    c = ______;   // hexadécimal 16 bits pour 255 (FF)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %h", c);
    $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