Menu
CoddyTech

Gatterverzögerungen

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

In der vorherigen Lektion haben wir allgemeine Verzögerungen behandelt, die wie #10 a = b; verwendet werden. Sie warten, bevor sie eine Anweisung ausführen.

In dieser Lektion behandeln wir Gatterlaufzeiten, die für eingebaute Gatterprimitive wie and, or und not spezifisch sind. Eine Gatterlaufzeit modelliert, wie lange ein Hardwaregatter benötigt, um eine Ausgabe zu erzeugen, nachdem sich seine Eingänge geändert haben.

In echter Hardware reagieren Gatter nicht sofort. Es gibt eine kleine Verzögerung. Wenn du integrierte Gatterprimitive verwendest, kannst du eine Verzögerung hinzufügen, um die Laufzeit des Gatters zu simulieren. Der Ausgang ändert sich erst nach der angegebenen Verzögerung.

Unterschied zwischen allgemeiner Verzögerung und Gatterverzögerung

 Allgemeine VerzögerungGatterverzögerung
Syntax#10 a = b;and #5 (out, a, b);
Position# vor einer Anweisung# innerhalb eines Gatterprimitivs
ZweckVor der Ausführung wartenDie Ausbreitungszeit des Gatters modellieren

Syntax:

gate_type #(delay) (output, input1, input2, ...);

#(delay) gibt an, wie viele Zeiteinheiten das Gatter benötigt, um zu reagieren.

Einfaches Beispiel

and #5 (out, a, b);

Dieses UND-Gatter benötigt 5 Zeiteinheiten, um seinen Ausgang zu ändern, nachdem sich a oder b geändert hat.

Gatterlaufzeit bei mehreren Eingängen

nand #8 (out, a, b, c, d);   // NAND mit 4 Eingängen und einer Verzögerung von 8 Zeiteinheiten

Wichtige Regeln

RegelErklärung
Die Verzögerung steht nach dem Namen des Gattersand #5 (out, a, b)
Verzögerungswert in ZeiteinheitenBasierend auf der timescale-Direktive
Alle Eingänge beeinflussen den AusgangEine Änderung an einem beliebigen Eingang kann den Ausgang ändern, aber erst nach der Verzögerung
Nicht synthetisierbarGatterverzögerungen dienen nur der Simulation
challenge icon

Aufgabe

Füge diesem Modul die fehlenden Gatterlaufzeiten hinzu. Verwende für jedes Gatter eine andere Laufzeit.

Aufgabe:

  1. AND-Gatter: Verzögerung von 5 Zeiteinheiten
  2. OR-Gatter: Verzögerung von 3 Zeiteinheiten
  3. NOT-Gatter: Verzögerung von 2 Zeiteinheiten

Probier es selbst

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: AND-Gatter mit einer Verzögerung von 5 Zeiteinheiten hinzufügen (Eingänge a, b)
  
  // TODO: OR-Gatter mit einer Verzögerung von 3 Zeiteinheiten hinzufügen (Eingänge a, b)
  
  // TODO: NOT-Gatter mit einer Verzögerung von 2 Zeiteinheiten hinzufügen (Eingang a)
  

  initial begin
    $monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b", 
              $time, a, b, and_out, or_out, not_out);
    
    a = 1; b = 1;
    #10 $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