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
What to do :
- Add l’instruction
if-elsemanquante pour que cela fonctionne. - Lorsque
enablevaut 1,outshould equala & b. - Lorsque
enablevaut 0,outshould equala | 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 conception4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne