Menu
Coddy logo textTech

If Statement

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

Die if-Anweisung ist ein Entscheidungsblock, der Code nur dann ausführt, wenn eine Bedingung wahr ist. Die if-Anweisung prüft eine Bedingung.

Wenn die condition true (1) ist, executes der darin enthaltene Code. Wenn die condition false (0) ist, wird der Code übersprungen.

Syntax:

if (condition) begin
  // Code wird ausgeführt, wenn die Bedingung wahr ist
end

Einfaches Beispiel

if (reset) begin
  count = 0;
end

In diesem Beispiel:

  • begin und end werden verwendet, um den Start und das Ende des Codeblocks zu markieren
  • Wenn reset 1 (wahr) ist, executes der Code innerhalb von begin und endcount wird 0
  • Wenn reset 0 (falsch) ist, wird der darin enthaltene Code übersprungen → nichts passiert

begin und end funktionieren wie geschweifte Klammern { } in anderen Programmiersprachen. Sie gruppieren Anweisungen, damit Verilog weiß, welcher Code zur if-Bedingung gehört. Auch wenn es hier nur eine Anweisung gibt, ist die Verwendung von begin und end weiterhin eine gute Praxis für Konsistenz.

If-Anweisung im Always-Block

always @(posedge clk) begin
  if (reset)
    count <= 0;
end

Hinweis: Für eine einzelne Anweisung sind begin und end optional. Zum Beispiel wird im obigen always-Block nach if kein begin/end benötigt, da er nur eine statement enthält.

Die Bedingung kann jeder Ausdruck sein

if (a > b) begin
  max = a;
end

if (a && b) begin
  out = 1;
end

if (data == 8'hFF) begin
  match = 1;
end

Wichtige Regeln

RegelErklärung
Condition kann jeder Ausdruck seinWerte ungleich null (und bekannte Werte) werden als wahr behandelt, null als falsch
begin / end für mehrere Anweisungen erforderlichWie { } in anderen Sprachen
Ohne begin/end folgt nur eine AnweisungNur die nächste Zeile
challenge icon

Aufgabe

Was zu tun ist:

  1. Füge die fehlende if-Anweisung hinzu, damit dies funktioniert.
  • Wenn enable gleich 1 ist, sollte out gleich a & b sein.
  • Wenn enable gleich 0 ist, sollte out 0 bleiben (sich nicht ändern).

Der Ausgangscode initialisiert out = 0 und testet beide Fälle.

Probier es selbst

module if_challenge;
  reg a, b, enable;
  reg out = 0;
  
  initial begin
    a = 1;
    b = 1;
    
    // Testfall 1: enable = 1
    enable = 1;
    // TODO: if-Anweisung hinzufügen (out = a & b)
    $display("enable=1: out = %d (should be 1)", out);
    
    // Testfall 2: enable = 0
    enable = 0;
    out = 0; 
    // TODO: out sollte 0 bleiben
    $display("enable=0: out = %d (should be 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

Übe selbstständig: Online-Verilog-Compiler