Předmět Ústav Úloha č. 10 BDIO - Digitální obvody Ústav mikroelektroniky Komplexní příklad - návrh řídicí logiky pro jednoduchý nápojový automat, kombinační + sekvenční logika (stavové automaty) Student Cíle Praktický návrh složitějších stavových automatů. Implementace návrhu do cílového obvodu FPGA Spartan3-200k na vývojové desce Spartan-3 Starter Board. Teoretický úvod Stavové automaty představují nejobecnější číslicové subsystémy zahrnující jak kombinační, tak i sekvenční podbloky (paměťová část). Obecné blokové schéma stavového automatu je na obrázku 1. vstupy Kontrolní logika (kombinační část) sekvenční vstupy sekvenční Výstupní dekodér (nepovinná část) Paměťová část (sekvenční část) Obr. 1: Obecné schéma stavového automatu Další způsob znázornění stavového automatu pomocí blokového schématu je na obrázku 2. Kombinační logika definující následující stav F je funkce současného stavu a vstupů. Kombinační logika G definující hodnoty výsupů je funkcí současného stavu. Bloky F a G obsahují pouze z kombinační logiku.
vstupy n Komb. Logika (následující stav) buzení Paměťová část současný stav Výstupní logika F G Obr. 2: Blokové schéma stavového automatu Analýza stavového automatu řízeného hodinovým signálem se skládá z těchto základních kroků: Určení následujícího stavu a výstupních funkcí F a G. Využití F a G k vytvoření stavové/výstupní tabulky, která definuje následující stav a výstup pro všechny možné kombinace současného stavu a vstupu. Nakreslení stavového diagramu, který definuje přechod mezi jednotlivými stavy. Enkódování stavových automatů Enkódování stavového automatu je proces, který rozhoduje o tom, kolik paměťových prvků (např. klopný obvod typu D) bude použito při návrhu paměťové části stavového automatů. Počet těchto prvků bude závislý na počtu stavů a na typu zvoleného enkódování. Nejčastějším typem enkódováním je binární. V tabulce 1 je zobrazen počet potřebných klopných obvodů typu D v závislosti na počtu stavů. Tab. 1: Závislost počtu stavů a potřebných KO typu D počet stavů počet KO typu D enkódovací kombinace 2 1 0 a 1 3 až 4 2 00, 01, 10, 11 5 až 8 3 000, 001, 010, 011, 100, 101, 110, 111 9 až 16 4 0000 1111 17 až 32 5 00000 11111 33 až 64 6 000000 111111
Symbolické značení stavů stavového automatu ve stavovém diagtamu je na obrázku 3. st0 000 název stavu enkódovací kombinace stavu Obr. 3: Symbolické značení stavů stavového automatu ve stavovém diagramu Ukázka přechodu mezi jednotlivými stavy je zobrazena na obrázku 4. Přechody mezi jednotlivými stavy se dějí vždy při náběžné hraně hodinového signálu a splněných vstupních podmínkách. Tyto podmínky nejsou povinné a vždy záleží na příslušném zadání a funkci stavového automatu. podmínka5 or podmínka6 st0 00 podmínka7 st1 01 přechod proběhne při náběžné hraně hodinového signálu a zároveň musí být splněna podmínka5 nebo podmínka6 podmínka1 přechod proběhne pouze při náběžné hraně hodinového signálu st2 podmínka2 přechod proběhne při náběžné hraně hodinového signálu a zároveň musí být splněna podmínka2 10 podmínka3 and podmínka4 přechod proběhne při náběžné hraně hodinového signálu a zároveň musí být splněna podmínka3 a podmínka4 Obr. 4: Ukázka možných přechodů ve stavovém diagramu
Zadání laboratorní úlohy Nápojový automat na kávu Definování problému Tato úloha demonstruje návrh nápojového automatu na kávu. Bude realizována na speciálním modulu, který je nutné zasunout do konektoru B1 na vývojové desce. Zapojení 7-segmentového displeje, tlačítka a LED diody je na následujícím obrázku. Budeme předpokládat, že všechny elektromechanické části nápojového automatu jsou zrealizovány a náš návrh se bude zaměřovat pouze na návrh logické části. Nápojový automat bude fungovat následujícím způsobem: 1) Vhazuje se jednokorunová (BTN7) a dvoukorunová mince (BTN8). 2) Káva bude vydána, když budou v automatu (zásobníku) 3 Kč. 3) Může nastat situace, že v automatu budou 4 Kč po vhození dvou dvoukorunových mincí po sobě. Automat bude schopen vrátit jednokorunovou minci. 4) Nemůže nastat případ, že by byly vhozeny obě mince najednou. 5) Pokud bude stlačeno tlačítko nápoje 1 (BTN1), objeví se na 7-segmentovém displeji jeho cena. V klidovém stavu se na 7-segmentovém displeji bude zobrazovat celková suma vhozených mincí.
Opět se jedná o sekvenční systém. Tento sekvenční systém má 5 vstupů (j, d, napoj,, rst) a 3 (kava_out, j_out, seg). j d kava_out napoj nápojový automat 7 j_out seg rst 1) Vstupy a. vstup (T9) Hodinový signál. b. vstup rst (M13) asynchronní reset. Přechod do počátečního stavu. c. vstup j (C16) Pokud byla vhozena jednokorunová mince do nápojového automatu, tak se na vstupu j objeví log. 1 po dobu jednoho hodinového taktu. Bude nutné rovněž ošetřit zákmity na tlačítku. d. vstup d (B16) Pokud byla vhozena dvoukorunová mince do nápojového automatu, tak se na vstupu d objeví log. 1 po dobu jednoho hodinového taktu. Bude nutné rovněž ošetřit zákmity na tlačítku e. vstup napoj (E10) tento vstup je asynchronní. Po zmáčknutí bude zobrazeno na 7-segmentovém displeji cena nápoje v jakémkoliv stavu. Zde nebude použit obvod debouncer s generováním jednoho výstupního pulzu. Na vstupy j a d je nutné připojit obvod pro ošetření zákmitů na tlačítkách a rovněž generovat jeden výstupní pulz pod dobu jednoho hodinového taktu. K tomu bude sloužit obvod DEBOUNCER s generováním jednoho výstupního pulzu. Použijte váš popis obvodu debouncer z minulého cvičení. 2) Výstupy a. výstup kava_out (K16) Výstup kava_out indikuje, že byly do nápojového automatu vhozeny 3 Kč a káva může být vydána. Výstup kava_out je v úrovni log.1 po dobu jednoho hodinového taktu. b. výstup j_out (F15) Výstup j_out indikuje, že byly vhozeny 4 Kč a tudíž má být vrácena 1 Kč. Výstup j_out je v úrovni log.1 po dobu jednoho hodinového taktu. c. výstup seg (C11,D12,R7,C12,D11,P10,T3) 7-bitový výstupní signál pro řízení 7-segmentového displeje
Vypracování laboratorní úlohy Úkol č. 1 (1 bod) Nakreslete stavový diagramnápojového automatu na kávu podle zadání. Nápověda: Potřebných stavů je méně než 8. Úkol č. 2 (0,2 bodu) Kolik klopných obvodů by bylo potřeba v případě one-hot enkodování pro realizaci tohoto stavového automatu z úkolu č. 1? Odpověď: Kolik stavů bude nutné ošetřit v případě one-hot enkodování, aby vznikl bezpečný stavový automat? Odpověď:
Úkol č. 3 (3x0,6 bodů=1,8bodů) Ve vývojovém prostředí Xilinx ISE založte nový projekt. Vytvořte VHDL popis nápojového automatu. Použijete děličku frekvence z předcházejících cvičení a upravte ji tak, aby byl základní hodinový kmitočet pro všechny bloky 10 Hz. Pro VHDL popis zvolte strukturální styl. Implementujte výsledný návrh do paměti PROM. Výslednou funkci otestujte na vývojové desce. Použité komponenty: 1) Divider dělička kmitočtu na 10 Hz 2) Stavový automat řídicí logika 3) Debouncer ošetření zákmitů a generování jednoho výstupního pulzu Blokové schéma bude vypadat následovně: TOP j debouncer d debouncer kava_out napoj rst _100Hz divider _10Hz nápojový automat 7 j_out seg rst Bonusový úkol č. 4 (0,6 bodu) Ve vývojovém prostředí Xilinx ISE založte nový projekt. Upravte VHDL popis nápojového automatu tak, aby plnil tyto dodatečné funkce: 1) V případě vhození částky 3 Kč se vydává káva. Vydání kávy a suma vhozených mincí bude svítit na 7-segmentovém displeji po dobu 2 sekund. 2) V případě vhození částky 4 Kč se vydává káva a jednokorunová mince. Vydání jednokorunové mince, kávy a hodnota vhozených mincí bude svítit na 7-segmentovém displeji po dobu 4 sekund.