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 : effectuer une chose si la condition est vraie, et en effectuer une autre si la condition est fausse.
Syntaxe :
if (condition) begin
// S'exécute lorsque la condition est vraie (1)
end else begin
// S'exécute lorsque la condition est fausse (0)
endExemple simple
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- Si
resetvaut 1 →countdevient 0 - Si
resetvaut 0 →countaugmente de 1
Instructions multiples
Utilisez begin et end lorsque vous avez plusieurs instructions :
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 | Tu peux avoir if sans else |
else appartient au if le plus proche | Sois attentif à l'imbrication |
Utilise begin/end pour plusieurs instructions | Requis pour plus d'une ligne |
Défi
À faire :
- Ajoutez l’instruction
if-elsemanquante pour que cela fonctionne. - Lorsque
enablevaut 1,outdoit être égal àa & b. - Lorsque
enablevaut 0,outdoit être égal àa | b.
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 VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une 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 RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne