Menu
Coddy logo textTech

Gatter-Verzö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 Gatterverzögerungen, die spezifisch für integrierte Gatter-Primitive wie and, or und not sind. Eine Gatterverzögerung modelliert, wie lange ein Hardware-Gatter 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 Sie integrierte Gatter-Primitive verwenden, können Sie eine Verzögerung hinzufügen, um die Laufzeit des Gatters zu simulieren. Der Ausgang ändert sich erst nach der angegebenen Verzögerung.

Unterschied zwischen General Delay und Gate Delay

 General DelayGate Delay
Syntax#10 a = b;and #5 (out, a, b);
Position# vor einer Anweisung# innerhalb eines Gatter-Primitivs
ZweckWarten vor der AusführungModellierung der Gatter-Laufzeit

Syntax:

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

Das #(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 ändert.

Gatterverzögerung mit mehreren Eingängen

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

Wichtige Regeln

RegelErklärung
Verzögerung steht nach dem Gate-Namenand #5 (out, a, b)
Verzögerungswert in ZeiteinheitenBasierend auf der timescale-Direktive
Alle Eingänge beeinflussen den AusgangJede Änderung am Eingang löst die Verzögerung aus
Nicht synthetisierbarGate-Verzögerungen dienen nur der Simulation
challenge icon

Aufgabe

Fügen Sie diesem Modul die fehlenden Gatter-Verzögerungen hinzu. Verwenden Sie für jedes Gatter unterschiedliche Verzögerungen.

Was zu tun ist:

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

Spickzettel

Gatterverzögerungen (Gate delays) modellieren die Signallaufzeit in integrierten Gatter-Primitiven.

Syntax:

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

Beispiele:

and  #5 (out, a, b);         // AND gate, 5 time unit delay
or   #3 (out, a, b);         // OR gate, 3 time unit delay
not  #2 (out, a);            // NOT gate, 2 time unit delay
nand #8 (out, a, b, c, d);   // 4-input NAND, 8 time unit delay

Wichtige Punkte:

  • # steht nach dem Gatternamen und vor der Portliste
  • Jede Eingangsänderung löst die Verzögerung aus, bevor der Ausgang aktualisiert wird
  • Gatterverzögerungen dienen nur der Simulation — sie sind nicht synthetisierbar

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