Timescale-Direktive
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 70 von 90.
Die timescale-Direktive legt die Zeiteinheit und die Zeitgenauigkeit für die Simulation fest. Sie teilt dem Simulator mit, wie Verzögerungswerte wie #10 zu interpretieren sind.
In vorherigen Lektionen haben wir Verzögerungen wie #10 verwendet, ohne anzugeben, was „10“ bedeutet. Sind es 10 Nanosekunden? 10 Pikosekunden? Die timescale-Direktive beantwortet diese Frage.
Syntax:
`timescale time_unit / time_precision| Teil | Bedeutung | Beispiel |
|---|---|---|
time_unit | Die Basiseinheit für Verzögerungen | 1ns |
time_precision | Wie präzise die Simulation sein sollte | 1ps |
Das Backtick-Zeichen ` vor timescale bedeutet, dass es sich um eine Compiler-Direktive handelt.
Beispiel
`timescale 1ns / 1pstime_unit = 1ns→#10bedeutet 10 Nanosekundentime_precision = 1ps→ Simulation rundet auf die nächste Pikosekunde
Gängige Timescale-Werte
| Zeiteinheit | Präzision | Anwendungsfall |
|---|---|---|
1ns / 1ns | Nanosekunde | Einfache Simulationen |
1ns / 1ps | Pikosekunde | Präziser |
1ps / 1ps | Pikosekunde | Hochgeschwindigkeits-Designs |
1us / 1ns | Mikrosekunde | Langsame Simulationen |
Wie es sich auf Verzögerungen auswirkt
`timescale 1ns / 1ps
initial begin
#10 a = 1; // Wartet 10 Nanosekunden
endOhne timescale nehmen einige Simulatoren einen Standardwert an (oft 1ns). Es ist am besten, diesen immer anzugeben.
Wichtige Regeln
| Regel | Erklärung |
|---|---|
| Muss außerhalb von Modulen stehen | Vor jeder Moduldefinition platziert |
| Backtick-Symbol | `timescale nicht 'timescale |
| Zeiteinheit ≥ Zeitpräzision | 1ns / 1ps ist in Ordnung, 1ps / 1ns nicht |
| Beeinflusst alle Verzögerungen in der Datei | Allgemeine Verzögerungen, Gate-Verzögerungen, Zuweisungsverzögerungen |
Aufgabe
Was zu tun ist:
Füge die fehlende timescale-Direktive hinzu, damit die Verzögerungen 10ns, 20ns und 30ns repräsentieren.
Spickzettel
Die `timescale-Direktive legt die Zeiteinheit und die Zeitpräzision für die Simulation fest. Sie muss vor jeder Moduldefinition platziert werden.
`timescale time_unit / time_precision`timescale 1ns / 1ps
initial begin
#10 a = 1; // Wartet 10 Nanosekunden
endtime_unit— die Basiseinheit für Verzögerungen (z. B.#10= 10ns)time_precision— wie genau die Simulation rundet (muss ≤ Zeiteinheit sein)
| Timescale | Anwendungsfall |
|---|---|
1ns / 1ns | Einfache Simulationen |
1ns / 1ps | Präziser |
1ps / 1ps | Hochgeschwindigkeits-Designs |
1us / 1ns | Langsame Simulationen |
Probier es selbst
// TODO: Timescale-Direktive hinzufügen (1ns / 1ps)
module timescale_challenge;
initial begin
$display("Time %0t", $time);
#10 $display("Time %0t (10ns = 10000ps)", $time);
#10 $display("Time %0t (20ns = 20000ps)", $time);
#10 $display("Time %0t (30ns = 30000ps)", $time);
$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