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 Gatterlaufzeiten (gate delays), die spezifisch für eingebaute Gatter-Primitiven wie and, or und not sind. Eine Gatterlaufzeit modelliert, wie lange ein Hardware-Gatter benötigt, um ein Ausgangssignal zu erzeugen, nachdem sich seine Eingänge geändert haben.

In realer Hardware reagieren gates nicht sofort — es gibt ein kleines delay. Wenn Sie eingebaute gate-Primitiven verwenden, können Sie ein delay hinzufügen, um die Signallaufzeit des gates zu simulieren. Der output ändert sich erst nach dem angegebenen delay.

Unterschied zwischen allgemeiner Verzögerung (General Delay) und Gatter-Verzögerung (Gate Delay)

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

Syntax:

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

Das #(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 Zeiteinheiten (time units), um seinen Ausgabewert zu ändern, nachdem sich a oder b ändert.

Gate Delay mit mehreren Inputs

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

Wichtige Regeln

RegelErklärung
Delay kommt nach dem Gate-Namenand #5 (out, a, b)
Delay-Wert in Zeit-EinheitenBasierend auf der timescale-Direktive
Alle Inputs beeinflussen den OutputJede Änderung an den Inputs löst das Delay aus
Nicht synthetisierbarGate-Delays dienen nur der Simulation
challenge icon

Aufgabe

Füge die fehlenden Gatter-Verzögerungen zu diesem Modul hinzu. Verwende unterschiedliche Verzögerungen für jedes Gatter.

Was zu tun ist:

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

Probier es selbst

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: Füge AND-Gatter mit 5 Zeiteinheiten Verzögerung hinzu (Eingänge a, b)
  
  // TODO: Füge OR-Gatter mit 3 Zeiteinheiten Verzögerung hinzu (Eingänge a, b)
  
  // TODO: Füge NOT-Gatter mit 2 Zeiteinheiten Verzögerung hinzu (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