Hoe de tijd in VHDL te vertragen:Wacht op
In de vorige tutorial hebben we geleerd dat een proces kan worden gezien als een programmathread. We hebben ook geleerd dat een wait;
statement zorgt ervoor dat het programma voor onbepaalde tijd pauzeert. Maar is er een manier om een programma te laten wachten op een andere tijdwaarde dan voor altijd?
Als we de wait;
. verwijderen en het programma probeert te compileren, zal de compiler klagen over een oneindige lus. De lus waarnaar de compiler verwijst is de proceslus . Een procesthread in VHDL zal nooit eindigen, het zal continu doorlopen tussen de begin
en end process;
verklaringen. Er moet een wait
. zijn statement ergens in de proceslus.
Deze blogpost maakt deel uit van de serie Basic VHDL Tutorials.
Terwijl wait;
zorgt ervoor dat het programma voor altijd pauzeert, de wait for
verklaring kan worden gebruikt om het programma voor een bepaalde tijd uit te stellen.
De syntaxis van de wait for
verklaring is:wait for <time_value> <time_unit>;
waar <time_value>
is nummer en <time_unit>
is een van de volgende tijdseenheden:
fs | femtoseconden |
ps | picoseconden |
ns | nanoseconden |
ons | microseconden |
ms | milliseconden |
sec | seconden |
min | minuten |
uur | uur |
Oefening
Deze instructievideo laat u zien hoe u de wait for
. gebruikt statement om het proces voor een bepaalde tijd te pauzeren.
De code die we in deze tutorial hebben gemaakt:
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;
De uitvoer naar de simulatorconsole toen we op de run-knop in ModelSim drukten:
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 dit voorbeeld gebruikten we 10 ns
, wat 10 nanoseconden betekent. Wanneer u werkt met digitale logica die werkt op MHz-klokfrequenties, werkt u meestal met stappen van nanoseconden.
Toen we de code in de simulator uitvoerden, stond er "Kiekeboe!" elke 10 ns naar de console. Omdat dit een simulatie is, is de report
statement kost nul tijd, en dat geldt ook voor het herhalen.
Afhaalmaaltijden
- De procesthread pauzeert bij
wait for
voor de exacte opgegeven tijd - Alle uitspraken behalve
wait
uitspraken kosten nul simulatietijd
Ga naar de volgende tutorial »
VHDL
- Oplossen voor onbekende tijd
- Een lijst met strings maken in VHDL
- Hoe maak je een Tcl-gestuurde testbench voor een VHDL-codeslotmodule?
- Een procedure gebruiken in een proces in VHDL
- Een functie gebruiken in VHDL
- Hoe een VHDL-simulator en -editor gratis te installeren
- Hoeveel details voor taakplannen?
- Hoe weet u dat het tijd is voor onderhoud aan kraanremmen
- Hoe u de trainingstijd voor robotlassen kunt verkorten?
- Hoe voor het eerst een autoverzekering afsluiten?
- Hoeveel tijd heeft uw fabricageproces nodig?