If - Else
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 53 sur 90.
L'instruction if-else vous permet de choisir entre deux actions différentes en fonction d'une condition. Si la condition est vraie, un bloc s'exécute. Si elle est fausse, l'autre bloc s'exécute.
L'instruction if-else donne à votre code un point de décision : faire une chose si la condition est vraie, faire une autre chose si la condition est fausse.
Syntaxe :
if (condition) begin
// S'exécute quand la condition est vraie (1)
end else begin
// S'exécute quand la condition est fausse (0)
endExemple simple
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- Si
resetest 1 →countdevient 0 - Si
resetest 0 →countaugmente de 1
Instructions multiples
Utilisez begin et end lorsque vous avez plus d'une instruction :
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
endIf-Else avec plusieurs conditions
Vous pouvez enchaîner des instructions if-else :
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a et b sont égaux
endRègles importantes
| Règle | Explication |
|---|---|
else est facultatif | Vous pouvez avoir if sans else |
else appartient au if le plus proche | Faites attention à l'imbrication |
Utilisez begin/end pour plusieurs instructions | Requis pour plus d'une ligne |
Défi
Ce qu'il faut faire :
- Ajoutez l'instruction
if-elsemanquante pour faire fonctionner ceci. - Lorsque
enableest 1,outdoit être égal àa & b. - Lorsque
enableest 0,outdoit être égal àa | b.
Aide-mémoire
L'instruction if-else exécute l'un des deux blocs en fonction d'une condition :
if (condition) begin
// S'exécute quand la condition est vraie (1)
end else begin
// S'exécute quand la condition est fausse (0)
endEnchaînez plusieurs conditions avec else if :
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a et b sont égaux
endelseest facultatif- Utilisez
begin/endlorsque plusieurs instructions sont présentes dans un bloc elseappartient toujours à l'instructionifla plus proche
Essayez vous-même
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: Ajouter une instruction if-else
// Si enable est 1 : out = a & b
// Sinon : out = a | b
$display("out = %d (should be 0 because 1&0=0)", out);
$finish;
end
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu'est-ce que VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'ALU2Types de données
Type WireType RegEntiers et RéelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états