Wait-For-Statements in VHDL: Ausführung gezielt verzögern
In unserem vorherigen Tutorial verglichen wir einen VHDL-Prozess mit einem Programm-Thread und führten das wait;-Statement ein, das einen Prozess unendlich anhält. Was aber, wenn ein Prozess für eine bestimmte Dauer pausieren soll?
Entfernt man das wait; vollständig, meldet der Compiler einen Fehler, da jeder VHDL-Prozess eine Endlosschleife ist, die mindestens ein wait-Statement enthalten muss. Die Schleife läuft kontinuierlich zwischen begin und end process;.
Dieser Artikel gehört zur Serie „Basic VHDL Tutorials“.
Während wait; die Ausführung für immer stoppt, erlaubt das wait for-Konstrukt, einen Prozess für ein beliebiges Zeitintervall zu verzögern.
Die Syntax von wait for lautet:
wait for <zeitwert> <zeiteinheit>;
wobei <zeitwert> ein numerisches Literal und <zeiteinheit> eine der folgenden sein kann:
| fs | Femtosekunden |
| ps | Pikosekunden |
| ns | Nanosekunden |
| us | Mikrosekunden |
| ms | Millisekunden |
| sec | Sekunden |
| min | Minuten |
| hr | Stunden |
Übung
Sehen Sie das Tutorial-Video, um wait for in Aktion zu erleben, wie es einen Prozess für einen benutzerdefinierten Zeitraum anhält.
Der konstruierte VHDL-Beispielcode:
entity T02_WaitForTb is end entity;
architecture sim of T02_WaitForTb is
begin
process is
begin
-- Prozess-"Thread" startet hier
report "Peekaboo!";
wait for 10 ns; -- Zurück zum Anfang
end process;
end architecture;
Die Ausführung in ModelSim liefert folgende Konsolenausgabe:
VSIM 2> run # ** Note: Peekaboo! # Time: 0 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Peekaboo! # Time: 10 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Peekaboo! # Time: 20 ns Iteration: 0 Instance: /t02_waitfortb ...
Analyse
In diesem Beispiel entspricht die 10 ns-Verzögerung typischer Logik im MHz-Bereich, wo Nanosekunden-Granularität mit Taktraten übereinstimmt.
Während der Simulation verbrauchen die report-Anweisung und die Schleifensteuerung null Zeit; nur das wait for-Statement lässt die Simulationszeit voranschreiten.

Zusammenfassung
- Ein VHDL-Prozess pausiert exakt für die in
wait forangegebene Dauer. - Alle anderen Anweisungen in einem Prozess werden in der Simulationszeit augenblicklich ausgeführt.
Weiter zum nächsten Tutorial →
VHDL
- Zeit bis zum Erreichen einer Zielspannung in RC- und RL-Schaltungen berechnen
- String-Listen in VHDL erstellen: Best Practices & Beispiel
- Tcl-gesteuerter Testbench für ein VHDL Code-Lock-Modul erstellen
- In-Prozess-Prozeduren für saubere VHDL-FSM-Entwürfe nutzen
- Kostenloser VHDL-Simulator & Editor: Ein Leitfaden für Studierende
- Detailtiefe und Effizienz in der Wartungsarbeitsplanung ausbalancieren
- Wann Kranbremsen-Wartung planen: Wichtige Indikatoren
- Roboterschweiß-Training beschleunigen: Zeit sparen, Effizienz steigern
- Erste Kfz-Versicherung: Schritt-für-Schritt zum günstigen Schutz
- Genaue Lieferzeit-Schätzungen bei Metallfertigungs-Outsourcing