Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> VHDL

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

Weiter zum nächsten Tutorial »


VHDL

  1. Auflösung für unbekannte Zeit
  2. So erstellen Sie eine Liste von Zeichenfolgen in VHDL
  3. So erstellen Sie eine Tcl-gesteuerte Testbench für ein VHDL-Code-Sperrmodul
  4. So verwenden Sie eine Prozedur in einem Prozess in VHDL
  5. So installieren Sie kostenlos einen VHDL-Simulator und -Editor
  6. Wie detailliert für Stellenpläne?
  7. So erkennen Sie, wann die Kranbremsen gewartet werden müssen
  8. So reduzieren Sie die Schulungszeit für das Roboterschweißen
  9. Wie schließe ich zum ersten Mal eine Autoversicherung ab?
  10. Wie viel Zeit benötigt Ihr Herstellungsprozess?