Menu
CoddyTech

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 lorsque condition est vraie
end

Exemple simple

if (reset) begin
  count = 0;
end

Dans cet exemple :

  • begin et end servent à marquer le début et la fin du bloc de code
  • Si reset vaut 1 (vrai), le code entre begin et end s’exécute → count devient 0
  • Si reset vaut 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. Elles 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, car il ne contient qu’une seule instruction.

Une 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 peut être n’importe quelle expressionLes valeurs non nulles (et connues) sont considérées comme vraies, et zéro comme faux
begin / end nécessaires pour plusieurs instructionsComme { } dans d’autres langages
Sans begin/end, une seule instruction suitSeule l’instruction suivante appartient au if
challenge icon

Défi

Que faire :

  1. Ajoute l’instruction if manquante pour que cela fonctionne.
  • Lorsque enable vaut 1, out doit être égal à a & b
  • Lorsque enable vaut 0, out doit rester égal à 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 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

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