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 Delay | Gate Delay | |
|---|---|---|
| Syntax | #10 a = b; | and #5 (out, a, b); |
| Position | # vor einer Anweisung | # innerhalb eines Gatter-Primitivs |
| Zweck | Warten vor der Ausführung | Modellierung 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ögerungWichtige Regeln
| Regel | Erklärung |
|---|---|
| Verzögerung steht nach dem Gate-Namen | and #5 (out, a, b) |
| Verzögerungswert in Zeiteinheiten | Basierend auf der timescale-Direktive |
| Alle Eingänge beeinflussen den Ausgang | Jede Änderung am Eingang löst die Verzögerung aus |
| Nicht synthetisierbar | Gate-Verzögerungen dienen nur der Simulation |
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:
- AND-Gatter: 5 Zeiteinheiten Verzögerung
- OR-Gatter: 3 Zeiteinheiten Verzögerung
- 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 delayWichtige 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
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