So verzögern Sie die Zeit in VHDL:Wait For
Im vorherigen Tutorial haben wir gelernt, dass ein Prozess als Programmthread betrachtet werden kann. Wir haben auch erfahren, dass ein wait;
Anweisung bewirkt, dass das Programm auf unbestimmte Zeit angehalten wird. Aber gibt es eine Möglichkeit, ein Programm auf einen anderen Zeitwert als ewig warten zu lassen?
Wenn wir die wait;
entfernen zusammenfassen und versuchen, das Programm zu kompilieren, beschwert sich der Compiler über eine Endlosschleife. Die Schleife, auf die sich der Compiler bezieht, ist die Prozessschleife . Ein Prozess-Thread in VHDL wird niemals beendet, er wird kontinuierlich zwischen den begin
durchlaufen und end process;
Aussagen. Es muss ein wait
vorhanden sein Anweisung irgendwo innerhalb der Prozessschleife.
Dieser Blogpost ist Teil der Reihe Basic VHDL Tutorials.
Während wait;
bewirkt, dass das Programm für immer pausiert, der wait for
-Anweisung kann verwendet werden, um das Programm beliebig lange zu verzögern.
Die Syntax von wait for
Anweisung ist:wait for <time_value> <time_unit>;
wobei <time_value>
ist Nummer und <time_unit>
ist eine der folgenden Zeiteinheiten:
fs | Femtosekunden |
ps | Pikosekunden |
ns | Nanosekunden |
uns | Mikrosekunden |
ms | Millisekunden |
Sek. | Sekunden |
min | Minuten |
hr | Stunden |
Übung
Dieses Tutorial-Video zeigt Ihnen, wie Sie den wait for
verwenden Anweisung, den Prozess für eine bestimmte Zeit anzuhalten.
Der Code, den wir in diesem Tutorial erstellt haben:
entity T02_WaitForTb is end entity; architecture sim of T02_WaitForTb is begin process is begin -- This is the start of the process "thread" report "Peekaboo!"; wait for 10 ns; -- The process will loop back to the start from here end process; end architecture;
Die Ausgabe an die Simulatorkonsole, wenn wir in ModelSim die Run-Taste gedrückt haben:
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 haben wir 10 ns
verwendet , was 10 Nanosekunden bedeutet. Wenn Sie mit digitaler Logik arbeiten, die mit MHz-Taktfrequenzen läuft, werden Sie normalerweise mit Nanosekunden-Inkrementen arbeiten.
Als wir den Code im Simulator ausführten, druckte er „Peekaboo!“ alle 10 ns an die Konsole. Da es sich um eine Simulation handelt, wird die report
Die Anweisung benötigt keine Zeit, ebenso wie die Schleife.
Imbiss
- Der Prozess-Thread wird bei
wait for
angehalten für die genau angegebene Zeit - Alle Anweisungen außer
wait
Anweisungen benötigen keine Simulationszeit
Weiter zum nächsten Tutorial »
VHDL
- Auflösung für unbekannte Zeit
- So erstellen Sie eine Liste von Zeichenfolgen in VHDL
- So erstellen Sie eine Tcl-gesteuerte Testbench für ein VHDL-Code-Sperrmodul
- So verwenden Sie eine Prozedur in einem Prozess in VHDL
- So installieren Sie kostenlos einen VHDL-Simulator und -Editor
- Wie detailliert für Stellenpläne?
- So erkennen Sie, wann die Kranbremsen gewartet werden müssen
- So reduzieren Sie die Schulungszeit für das Roboterschweißen
- Wie schließe ich zum ersten Mal eine Autoversicherung ab?
- Wie viel Zeit benötigt Ihr Herstellungsprozess?