Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> VHDL

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

  1. Oplossen voor onbekende tijd
  2. Een lijst met strings maken in VHDL
  3. Hoe maak je een Tcl-gestuurde testbench voor een VHDL-codeslotmodule?
  4. Een procedure gebruiken in een proces in VHDL
  5. Een functie gebruiken in VHDL
  6. Hoe een VHDL-simulator en -editor gratis te installeren
  7. Hoeveel details voor taakplannen?
  8. Hoe weet u dat het tijd is voor onderhoud aan kraanremmen
  9. Hoe u de trainingstijd voor robotlassen kunt verkorten?
  10. Hoe voor het eerst een autoverzekering afsluiten?
  11. Hoeveel tijd heeft uw fabricageproces nodig?