Wait-for-statements in VHDL voor uitstel van uitvoering
In onze vorige tutorial vergelijken we een VHDL-proces met een programma-thread en introduceerden we het wait;-statement, dat een proces oneindig opschort. Maar wat als je een proces voor een specifieke duur wilt pauzeren?
Het weglaten van wait; helt een compiler-fout, omdat elk VHDL-proces een oneindige lus is die minstens één wait-statement moet bevatten. De lus draait continu tussen de begin en end process; begrenzingen.
Dit artikel is onderdeel van de serie Basistutorials VHDL.
Terwijl wait; de uitvoering voor altijd stopt, stelt het wait for-construct je in staat om een proces voor een gewenst tijdsinterval te vertragen.
De syntaxis van wait for is:
wait for <tijdwaarde> <tijdeenheid>;
waarbij <tijdwaarde> een numerieke letterlijke waarde is en <tijdeenheid> een van de volgende kan zijn:
| fs | femtoseconden |
| ps | picoseconden |
| ns | nanoseconden |
| us | microseconden |
| ms | milliseconden |
| sec | seconden |
| min | minuten |
| hr | uren |
Oefening
Bekijk de tutorial-video om wait for in actie te zien, een proces pauzeren voor een door de gebruiker gedefinieerde periode.
De voorbeeld-VHDL die we bouwden:
entity T02_WaitForTb is end entity;
architecture sim of T02_WaitForTb is
begin
process is
begin
-- Proces "thread" start hier
report "Kiekeboe!";
wait for 10 ns; -- Terug naar start
end process;
end architecture;
Draaien in ModelSim levert de volgende console-output:
VSIM 2> run # ** Note: Kiekeboe! # Time: 0 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Kiekeboe! # Time: 10 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Kiekeboe! # Time: 20 ns Iteration: 0 Instance: /t02_waitfortb ...
Analyse
In dit voorbeeld is de 10 ns vertraging typisch voor logica die op MHz-frequenties werkt, waar nanoseconde-granulariteit overeenkomt met klokperiodes.
Tijdens simulatie consumeren het report-statement en luscontrole nul tijd; alleen het wait for-statement bevordert de simulatiatijd.

Kernpunt
- Een VHDL-proces pauzeert precies voor de duur gespecificeerd in
wait for. - Alle andere statements in een proces voeren instantaan uit in simulatiatijd.
Ga verder naar de volgende tutorial →
VHDL
- Detail en efficiëntie balanceren in onderhoudsjobplannen
- Eerste Autoverzekering: Stapsgewijze Gids voor Betaalbare Dekking
- Tijd bereiken tot doelspanning in RC en RL circuits
- Nauwkeurige levertijdschattingen voor metaalfabricatie-outsourcing
- Versnel Robotlas Training: Tijd Winst, Efficiëntie Boost
- Wanneer Kraneremmen Onderhouden: Belangrijke Indicatoren
- Dynamische string-lijsten in VHDL: Best Practices & Voorbeeld
- Een Tcl-gedreven testbench maken voor een VHDL code-lock module
- In-process procedures benutten voor schonere VHDL FSM-ontwerpen
- VHDL-functies onder de knie krijgen: een praktische gids voor efficiënt ontwerp
- Gratis VHDL-simulator & editor setup: Een studentengids