Menu
Coddy logo textTech

Boucle While

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

La boucle while répète un bloc de code tant qu'une condition est vraie. Contrairement à la boucle for, elle ne possède pas de compteur intégré — vous devez mettre à jour la variable de boucle vous-même.

Une boucle while vérifie une condition avant chaque itération. Si la condition est vraie, la boucle s'exécute. Si elle est fausse, la boucle s'arrête.

Syntaxe :

while (condition) begin
  // Code à répéter
end

Exemple simple

integer i = 0;

while (i < 5) begin
  $display("i = %d", i);
  i = i + 1;
end

Résultat :

i = 0
i = 1
i = 2
i = 3
i = 4

La boucle s'exécute tant que i < 5.

Boucle While vs For

 Boucle ForBoucle While
CompteurIntégréVous le gérez
Quand l'utiliserNombre d'itérations connuMoment de l'arrêt de la boucle inconnu
Syntaxefor (i=0; i<5; i=i+1)while (i < 5)

Boucle While dans les Testbenches

Les boucles while sont utiles lorsque vous ne savez pas exactement de combien d'itérations vous avez besoin :

integer i = 0;

while (i < 16) begin
  $display("Testing value %d", i);
  i = i + 1;
end

Recherche d'une valeur spécifique

integer i = 0;
reg [7:0] data;

while (data[i] != 1) begin
  i = i + 1;
end
$display("First 1 found at position %d", i);

Règles importantes

RègleExplication
La condition doit devenir fausseSinon, boucle infinie
Mettre à jour la variable de boucle à l'intérieurOu la boucle ne se termine jamais
La variable de boucle doit être un integerNe peut pas être un reg
Utiliser begin/end pour plusieurs instructionsRequis pour plus d'une ligne
challenge icon

Défi

À faire :

Ajoutez la boucle while manquante pour afficher les nombres de 0 à 2.

Aide-mémoire

La boucle while répète un bloc de code tant qu'une condition est vraie. Vous devez mettre à jour la variable de boucle manuellement.

integer i = 0;

while (i < 5) begin
  $display("i = %d", i);
  i = i + 1;
end

Règles clés :

  • La variable de boucle doit être integer (pas reg)
  • Mettez toujours à jour la variable de boucle à l'intérieur de la boucle pour éviter les boucles infinies
  • Utilisez begin/end pour plusieurs instructions

While vs For : Utilisez for lorsque le nombre d'itérations est connu ; utilisez while lorsque la condition d'arrêt est dynamique (par exemple, la recherche d'une valeur).

// Recherche du premier bit à 1
while (data[i] != 1) begin
  i = i + 1;
end

Essayez vous-même

module while_challenge;
  integer i;
  
  initial begin
    i = 0;
    $display("Printing 0 to 2:");
    
    // TODO: Ajouter une boucle while
    // Boucler tant que i < 3
    // À l'intérieur, afficher i
    // Incrémenter i de 1
    
    $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