Menu
Coddy logo textTech

If - Else

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 53 von 90.

Die if-else-Anweisung ermöglicht es Ihnen, basierend auf einer Bedingung zwischen zwei verschiedenen Aktionen zu wählen. Wenn die Bedingung wahr ist, wird ein Block ausgeführt. Wenn sie falsch ist, wird der andere Block ausgeführt.

Die if-else-Anweisung gibt Ihrem Code einen Entscheidungspunkt: Führen Sie eine Aktion aus, wenn die Bedingung wahr ist, und eine andere, wenn die Bedingung falsch ist.

Syntax:

if (condition) begin
  // Wird ausgeführt, wenn die Bedingung wahr (1) ist
end else begin
  // Wird ausgeführt, wenn die Bedingung falsch (0) ist
end

Einfaches Beispiel

if (reset) begin
  count = 0;
end else begin
  count = count + 1;
end
  • Wenn reset 1 ist → wird count 0
  • Wenn reset 0 ist → erhöht sich count um 1

Mehrere Anweisungen

Verwenden Sie begin und end, wenn Sie mehr als eine Anweisung haben:

if (enable) begin
  out = data_in;
  valid = 1;
end else begin
  out = 0;
  valid = 0;
end

If-Else mit mehreren Bedingungen

Sie können 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
end

Wichtige Regeln

RegelErklärung
else ist optionalSie können if ohne else verwenden
else gehört zum nächsten ifVorsicht bei Verschachtelungen
Verwenden Sie begin/end für mehrere AnweisungenErforderlich für mehr als eine Zeile
challenge icon

Aufgabe

Was zu tun ist:

  1. Füge die fehlende if-else-Anweisung hinzu, damit dies funktioniert.
  2. Wenn enable 1 ist, sollte out gleich a & b sein.
  3. Wenn enable 0 ist, sollte out gleich a | b sein.

Spickzettel

Die if-else-Anweisung führt basierend auf einer Bedingung einen von zwei Blöcken aus:

if (condition) begin
  // Wird ausgeführt, wenn die Bedingung wahr (1) ist
end else begin
  // Wird ausgeführt, wenn die Bedingung falsch (0) ist
end

Verketten Sie mehrere Bedingungen mit else if:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a; // a und b sind gleich
end
  • else ist optional
  • Verwenden Sie begin/end, wenn sich mehrere Anweisungen in einem Block befinden
  • else gehört immer zum nächstgelegenen if

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
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen