If - Else
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 53 von 90.
Die if-else-Anweisung ermöglicht es dir, basierend auf condition zwischen zwei verschiedenen Aktionen zu wählen. Wenn die condition true ist, wird ein Block ausgeführt. Wenn sie false ist, wird der andere Block ausgeführt.
Die if-else-Anweisung gibt deinem Code einen Entscheidungspunkt: Führe eine Sache aus, wenn die Bedingung wahr ist, und eine andere, wenn die Bedingung falsch ist.
Syntax:
if (condition) begin
// Wird ausgeführt, wenn condition true (1) ist
end else begin
// Wird ausgeführt, wenn condition false (0) ist
endEinfaches Beispiel
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- Wenn
reset1 ist →countwird 0 - Wenn
reset0 ist →counterhöht sich um 1
Mehrere Anweisungen
Verwende begin und end, wenn du mehr als eine Anweisung hast:
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
endIf-Else mit mehreren Bedingungen
Du kannst if-else-Anweisungen verketten:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a und b sind gleich
endWichtige Regeln
| Regel | Erklärung |
|---|---|
else ist optional | Du kannst if ohne else verwenden |
else gehört zum nächstgelegenen if | Sei vorsichtig bei Verschachtelungen |
Verwende begin/end für mehrere Anweisungen | Für mehr als eine Zeile erforderlich |
Aufgabe
Was zu tun ist:
- Add das fehlende
if-elsestatement hinzu, damit dies funktioniert. - Wenn
enable1 ist, sollteoutgleicha & bsein. - Wenn
enable0 ist, sollteoutgleicha | bsein.
Probier es selbst
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: if-else-Anweisung hinzufügen
// Wenn enable 1 ist: out = a & b
// Sonst: out = a | b
$display("out = %d (should be 0 because 1&0=0)", out);
$finish;
end
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operators 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 LogicÜbe selbstständig: Online-Verilog-Compiler