Menu
Coddy logo textTech

If Statement

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 le code uniquement lorsqu’une condition est vraie. L’instruction if vérifie une condition.

Si la condition est true (1), le code à l’intérieur executes. Si la condition est false (0), le code est ignoré.

Syntaxe :

if (condition) begin
  // Le code s'exécute lorsque condition est true
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 vaut 1 (vrai), le code situé entre begin et end s’exécute → count devient 0
  • Si reset vaut 0 (faux), le code situé à l’intérieur est ignoré → rien ne se passe

begin et end fonctionnent comme des accolades { } dans d’autres langages de programmation. Ils regroupent des instructions afin 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 assurer la cohérence.

Instruction if dans un bloc always

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

Remarque : Pour une seule instruction, begin et end sont facultatifs. Par exemple, dans le bloc always ci-dessus, aucun begin/end n’est nécessaire après if parce qu’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
condition peut être n’importe quelle expressionLes valeurs non nulles (et connues) sont traitées comme vraies, zéro comme faux
begin / end nécessaires pour plusieurs instructionsComme { } dans d’autres langages
Sans begin/end, une seule instruction est exécutéeUniquement la ligne suivante
challenge icon

Défi

Que faire :

  1. Add l’instruction if manquante pour faire fonctionner cela.
  • When enable vaut 1, out should être égal à a & b
  • When enable vaut 0, out should rester à 0 (ne pas changer)

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

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;
    // TODO: Ajouter une instruction if (out = a & b)
    $display("enable=1: out = %d (should be 1)", out);
    
    // Cas de test 2 : enable = 0
    enable = 0;
    out = 0; 
    // TODO: out devrait 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

Entraînez-vous par vous-même : Compilateur Verilog en ligne