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.
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 Delay | Gate Delay | |
|---|---|---|
| Syntax | #10 a = b; | and #5 (out, a, b); |
| Position | # vor einer Anweisung | # innerhalb eines Gatter-Primitivs |
| Zweck | Vor der Ausführung warten | Modellierung 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ögerungWichtige Regeln
| Regel | Erklärung |
|---|---|
| Delay kommt nach dem Gate-Namen | and #5 (out, a, b) |
| Delay-Wert in Zeit-Einheiten | Basierend auf der timescale-Direktive |
| Alle Inputs beeinflussen den Output | Jede Änderung an den Inputs löst das Delay aus |
| Nicht synthetisierbar | Gate-Delays dienen nur der Simulation |
Aufgabe
Füge die fehlenden Gatter-Verzögerungen zu diesem Modul hinzu. Verwende unterschiedliche Verzögerungen für jedes Gatter.
Was zu tun ist:
- AND-Gatter: 5 Zeit-Einheiten Verzögerung
- OR-Gatter: 3 Zeit-Einheiten Verzögerung
- 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
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design13Timing und Verzögerungen
Was sind VerzögerungenGatter-VerzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Timing-Steuerung5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen