Menu
Coddy logo textTech

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 eine Anweisung ausgeführt wird.

In dieser Lektion behandeln wir Verzögerungen von Gattern, die für integrierte Gatterprimitiven wie and, or und not spezifisch sind. Eine Gatterverzögerung modelliert, wie lange ein Hardwaregatter benötigt, um einen Ausgang 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 Ausbreitungszeit des Gatters zu simulieren. Der output ä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 Gatterausbreitungszeit 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 AND-Gatter benötigt 5 Zeiteinheiten, um seinen Ausgang zu ändern, nachdem sich a oder b geändert hat.

Gatterverzögerung mit mehreren Eingängen

nand #8 (out, a, b, c, d);   // 4-Eingangs-NAND mit 8 Zeiteinheiten Verzögerung

Wichtige Regeln

RegelErklärung
Die Verzögerung steht nach dem Gatternamenand #5 (out, a, b)
Verzögerungswert in ZeiteinheitenBasiert auf der Direktive timescale
Alle Eingänge beeinflussen den AusgangJede Änderung eines Eingangs löst die Verzögerung aus
Nicht synthetisierbarGatterverzögerungen dienen nur der Simulation
challenge icon

Aufgabe

Füge die fehlenden Gatterverzögerungen zu diesem Modul hinzu. Verwende für jedes Gatter eine andere Verzögerung.

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 5 Zeiteinheiten Verzögerung hinzufügen (Eingänge a, b)
  
  // TODO: OR-Gatter mit 3 Zeiteinheiten Verzögerung hinzufügen (Eingänge a, b)
  
  // TODO: NOT-Gatter mit 2 Zeiteinheiten Verzögerung 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