Nézzük meg a következő állapotgépet (1. ábra). Van ennek CLK, CLR, C és K bemenete, illetve F kimenete.
1. ábra A szimulálandó állapotgép
A következő táblázat bal oldalán látjuk az első ábrán lévő állapotgép VHDL kódját. Látható, hogy két process található a VHDL file-ban. Az első process az FSM működéséért felel, a következő pedig a kimeneti logikáért (F).
Szimuláljuk le ezt a VHDL kódot! Igen ám, de azt szeretnénk, ha látnánk az aktuális állapotot (state) is. Ezért nem használunk komponenst (nem helyezzük be komponenséként a szimulálandó VHDL kódot egy másik VHDL file-ba, azaz egy tesztkörnyezetbe), hanem a szimulálandó kódot alakítjuk át.
Ez úgy történik, hogy az entitásból kitöröljük a bemenetei portok deklarációját, és ezeket betesszük jelként az "architecture" és a "begin" közé. Ezen kívül készítünk még két processt is, az egyik az órajel előállításáért felel (orajel), a másik pedig a tesztvektorokat (szimulacio) állítja elő.
Moore FSM kódja | Moore FSM szimulációs vektorral |
LIBRARY IEEE; architecture viselk of moorefsm is begin kimenet : process (state) end viselk;
|
LIBRARY IEEE; architecture viselk of moorefsmsim is begin kimenet : process (state) orajel : process szimulacio : process |
A táblázat jobb oldalán látható, átalakított VHDL kódot szimuláljuk le a VHDL Simili használatával. A szimulációs eredményt a második ábrán találjuk. Itt látjuk az állapotokat (pl.: s1), illetve az ahhoz tartozó kimeneti értékeket.
2. ábra A szimulációs eredmény
Elkészítünk most VHDL nyelven egy PWM modult. Természetesen digitális úton állítunk elő PWM jelet.. . . .
Készítünk VHDL nyelven most egy programozható szélességű multiplexert, amelyet azután elhelyezünk egy Spartan 6-os FPGA-ban. A bemenet (és a kiválasztó jel) szélessége paraméteresen állítható be a fordítás előtt.. . . .
Készítünk VHDL nyelven most egy programozható szélességű multiplexert, amelyet azután elhelyezünk egy Spartan 6-os FPGA-ban. A bemenet (és a kiválasztó jel) szélessége paraméteresen állítható be a fordítás előtt.. . . .