Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Állapotgépek (state machines)

Hasonló előadás


Az előadások a következő témára: "Állapotgépek (state machines)"— Előadás másolata:

1 Állapotgépek (state machines)
Az állapotgép és a CPU összehasonlítása Moore gép

2 Az állapotgép és a CPU összehasonlítása I.
Az állapotgépek használatával hatékonyan lehet szabályozási feladatokat megvalósítani A Neumann-féle szerkezetben (CPU), pl. olyan műveletek kellenek, mint a előhozási (fetch) és végrehajtási ütem, adat útvonalak, ALU regiszterek, stb Egy állapotgép teljesítménye sokkal jobb, mint egy CPU-é, mivel a viselkedést leíró kód a Bool-algebrát megvalósító kapu-hálózatban jelenik meg az állapot pedig flip-flopokban van tárolva A következő kód megvalósítható CPU-ban vagy VHDL nyelven leírt állapotgépben: if a>37 and c<7 then state <= alarm; out_a <= ‘0’; out_b <= ‘0’; out_analog <= a+b; else state <= running; end if; Ha a kódot egy CPU-ban valósítják me,g akkor kb gépi utasítást igényel A végrehajtása különböző számú assembler utasítást igényel attól függően, hogy az if utasítás melyik útvonalat választja

3 Az állapotgép és a CPU összehasonlítása II.
A CPU-nál tehát nem határozható meg egy pontos végrehajtási idő, helyette minimum és maximum végrehajtási időtartamot kell használni Ha ugyanezt a kódot kapukkal és flip-flopokkal valósítják meg, akkor a végrehajtás egy órajel ciklusig tart Következésképpen az állapotgépes megvalósítás teljesítménye és időbeli meghatározottsága lényegesen jobb, mint a CPU-belié Az állapotgép két ütemben működik: első ütemben az új állapotot kiszámítja második ütemben az új állapotot betölti egy regiszterbe A következő állapot kiszámításának időigénye határozza meg az állapotgép sebességét Minden egyes órajelnél frissítik a regisztereket Majd elkezdődik a következő állapot kiszámítása, aminek be kell fejeződnie, mielőtt a következő órajel megérkezik, hogy amikor a regisztereket frissíteni kell, a belső jelek ismét stabil állapotban legyenek

4 Az állapotgépek típusai
Két alapvető típus: Mealy gép a kimenete a jelenlegi állapotának és az összes bemenet függvénye mindig egy órajel ciklus alatt működik azonnal változtatja a kimeneteit, amint változnak a bemenetek Moore gép a kimenete csak a jelenlegi állapotának függvénye először az állapotát kell megváltoztatnia, azaz várnia egy órajel ciklust, mielőtt a kimeneti értékei megváltoznak

5 A Moore gép tömbvázlata

6 A Moore gép elemzése I. Példa: legyen négy állapot: S0, S1, S2 és S3, a hozzájuk tartozó kimeneti értékek rendre: “0000”, “1001”, “1100” és “1111”, a VHDL kód: entity pelda is port(clk,in1,reset: in std_logic; out1: out std_logic); end pelda; architecture moore of pelda is type state_type is (s0,s1,s2,s3); -- Állapot bejelentés signal state: state_type; begin demo_process: process(clk,reset) -- Órázott folyamat if reset=‘1’ then state<=s0; -- Állapot törlése elsif clk’event and clk=‘1’ then case state is when s0=> if in1=‘1’ then state<=s1; end if; when s1=> if in1=‘0’ then state<=s2; end if; when s2=> if in1=‘1’ then state<=s3; end if; when s3=> if in1=‘0’ then state<=s0; end if; end case; end if; end process;

7 A Moore gép elemzése II. Folytatás:
output_p: process(state) -- Kombinációs folyamat begin case state is when s0=> out1<=“0000“; when s1=> out1<=“1001“; when s2=> out1<=“1100“; when s3=> out1<=“1111“; end case; end process; end moore; Ahogy a fenti leírásból is látszik, az állapotgép három részből áll: Bejelentés (deklaráció) órázott folyamat kombinációs folyamat

8 A Moore gép állapotábrája

9 Bejelentés A bejelentés az állapotot jelenti be
Bármilyen név választható az állapot számára, amely felsorolt típusú Egy célszerű választás: type state_type is (start_state, run_state, error_state); signal state: state_type;

10 Órázott folyamat Az órázott folyamat dönti el, hogy mikor kell az állapotgépnek állapotot váltania Ezt a folyamatot az állapotgép órája aktiválja A jelen állapottól és a bemeneti jelek állapotától függően az állapotgép minden aktív órajel változásra változtathatja az állapotot

11 Kombinációs folyamat A kombinációs folyamat a jelen állapottól függően rendeli hozzá a kimeneti jelekhez az értékeket Az előző példában látható, hogy az output_p folyamat érzékenységi listájában csak az állapot vektorok vannak felsorolva, ami megfelel a Moore gép kimeneti jeleire vonatkozó meghatározásnak

12 Moore modell három folyamattal I.
Az előző, általános VHDL modellel szemben van olyan modell, amely három folyamatból áll, melyek feladata a következő egy a következő állapotot dekódolja egy hozzárendeli az állapot vektort a current_state-hez egy a kimeneti jelek értékeit állítja be Az így kialakított modell pontosan a Moore gép tömbvázlatának felel meg Némileg hosszabb VHDL kódra vezet és kicsit lassabb a szimulációja Dokumentációs szempontból előnyösebb A későbbi szintézis szempontjából nincs különbség a két modell között

13 Moore modell három folyamattal II.
entity pelda is port(clk,in1,reset: in std_logic; out1: out std_logic); end pelda; architecture moore of pelda is type state_type is (s0,s1,s2,s3); -- Állapot bejelentés signal current_state, next_state: state_type; begin P0: process(state,in1) -- Kombinációs folyamat case state is when s0=> if in1=‘1’ then next_state<=s1; end if; when s1=> if in1=‘0’ then next_ state<=s2; end if; when s2=> if in1=‘1’ then next_ state<=s3; end if; when s3=> if in1=‘0’ then next_ state<=s0; end if; end case; end if; end process;

14 Moore modell három folyamattal III.
P1: process(clk,reset) -- Órázott folyamat begin if reset=‘1’ then state<=s0; -- Állapot törlése elsif clk’event and clk=‘1’ then current_state<=next_state; end if; end process; P2: process(current_state) -- Kombinációs folyamat case state is when s0=> out1<=“0000“; when s1=> out1<=“1001“; when s2=> out1<=“1100“; when s3=> out1<=“1111“; end case; end moore;

15 A Moore gép tömbvázlata három folyamattal


Letölteni ppt "Állapotgépek (state machines)"

Hasonló előadás


Google Hirdetések