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 seulement si une condition est vraie. L'instruction if vérifie une condition.

Si la `condition` est vraie (1), le code à l'intérieur `executes`. Si la `condition` est fausse (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 (true), le code à l'intérieur de begin et end s'exécute → count devient 0
  • Si reset vaut 0 (false), 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 par souci de 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 optionnels. 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 traitées comme vraies, zéro comme faux
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 vaut 1, out doit être égal à a & b
  • Lorsque enable vaut 0, out doit 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