1 / 15

Állapotgépek (state machines)

Állapotgépek (state machines). Az állapotgép és a CPU összehasonlítása Moore gép. 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

rooney-burt
Download Presentation

Állapotgépek (state machines)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 10-20 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 begin 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 begin 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 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;

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

More Related