Menu
Coddy logo textTech

Gate Delays

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 gate-Verzögerung

 Allgemeine Verzögerunggate-Verzögerung
Syntax#10 a = b;and #5 (out, a, b);
Position# vor einer Anweisung# innerhalb des gate-Primitivs
ZweckVor der Ausführung wartenDie gate-Ausbreitungszeit modellieren

Syntax:

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

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

Einfaches Beispiel

and #5 (out, a, b);

Dieses AND-Gatter benötigt 5 time-Einheiten, um seinen output zu ändern, nachdem sich a oder b geändert hat.

Gate-Verzögerung mit mehreren Eingängen

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

Wichtige Regeln

RegelErklärung
Verzögerung steht nach dem Gatternamenand #5 (out, a, b)
Verzögerungswert in ZeiteinheitenBasiert auf der timescale-Direktive
Alle inputs beeinflussen outputJede Änderung eines inputs löst die Verzögerung aus
Nicht synthesefähigGatterverzögerungen dienen nur der Simulation
challenge icon

Aufgabe

Add die fehlenden gate delays zu diesem module hinzu. Verwende unterschiedliche delays für jedes gate.

Was zu tun ist:

  1. AND gate: 5 time unit delay
  2. OR gate: 3 time unit delay
  3. NOT gate: 2 time unit delay

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