Menu
Coddy logo textTech

Instruction If

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

L'instruction if est un bloc de prise de décision qui exécute du code uniquement lorsqu'une condition est vraie. L'instruction if vérifie une condition.

Si la condition est vraie (1), le code à l'intérieur s'exécute. Si la condition est fausse (0), le code est ignoré.

Syntaxe :

if (condition) begin
  // Le code s'exécute quand la condition est vraie
end

Exemple simple

if (reset) begin
  count = 0;
end

Dans cet exemple :

  • begin et end sont utilisés pour marquer le début et la fin du bloc de code
  • Si reset est 1 (vrai), le code à l'intérieur de begin et end s'exécute → count devient 0
  • Si reset est 0 (faux), le code à l'intérieur est ignoré → rien ne se passe

begin et end fonctionnent comme des accolades { } dans d'autres langages de programmation. Ils regroupent les instructions pour que Verilog sache quel code appartient à la condition if. Même s'il n'y a qu'une seule instruction ici, utiliser begin et end reste une bonne pratique pour la cohérence.

Instruction If dans un bloc Always

always @(posedge clk) begin
  if (reset)
    count <= 0;
end

Remarque : Pour une instruction unique, begin et end sont facultatifs. Par exemple, dans le bloc always ci-dessus, aucun begin/end n'est nécessaire après if car il ne contient qu'une seule instruction.

La condition peut être n'importe quelle expression

if (a > b) begin
  max = a;
end

if (a && b) begin
  out = 1;
end

if (data == 8'hFF) begin
  match = 1;
end

Règles importantes

RègleExplication
La condition doit être un bit uniqueOu une expression qui s'évalue à 0 ou 1
begin / end sont nécessaires pour plusieurs instructionsComme { } dans d'autres langages
Sans begin/end, une seule instruction suitLa ligne suivante uniquement
challenge icon

Défi

Ce qu'il faut faire :

  1. Ajoutez l'instruction if manquante pour que cela fonctionne.
  • Lorsque enable est 1, out doit être égal à a & b
  • Lorsque enable est 0, out doit rester à 0 (ne pas changer)

Le code de départ initialise out = 0 et teste les deux cas.

Aide-mémoire

L'instruction if exécute le code uniquement lorsqu'une condition est vraie (1), et l'ignore lorsqu'elle est fausse (0).

if (condition) begin
  // s'exécute quand la condition est vraie
end

Pour une instruction unique, begin/end sont facultatifs :

always @(posedge clk) begin
  if (reset)
    count <= 0;
end

Les conditions peuvent être n'importe quelle expression s'évaluant à 0 ou 1 :

if (a > b) begin max = a; end
if (a && b) begin out = 1; end
if (data == 8'hFF) begin match = 1; end

Règles clés :

  • Utilisez begin/end pour regrouper plusieurs instructions (comme { } dans d'autres langages)
  • Sans begin/end, seule la ligne qui suit immédiatement appartient au if

Essayez vous-même

module if_challenge;
  reg a, b, enable;
  reg out = 0;
  
  initial begin
    a = 1;
    b = 1;
    
    // Cas de test 1 : enable = 1
    enable = 1;
    // À FAIRE : Ajouter l'instruction if (out = a & b)
    $display("enable=1: out = %d (should be 1)", out);
    
    // Cas de test 2 : enable = 0
    enable = 0;
    out = 0; 
    // À FAIRE : out doit rester à 0
    $display("enable=0: out = %d (should be 0)", out);
    
    $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