BI-SAP 2015: Bonusový úkol

Zadání

Úkol bude spočívat v nastudování trochy teorie (vpodstatě rozšíření toho, co znáte z přednášek) ze základních materiálů, další doporučené literatury, případně samostudiem. A dále realizací poměrně jednoduchého úkolu (jednoduchého pro člověka, který se seznámí s teorií...) - aplikujete, co znáte ze SAPů a přidáte trochu nového.

Úkol bude rozdělen na více fází a celkem budete moci získat až 3 body - 1 za každou fázi.

Upozorňuji, že se nejedná o zas tak triviální úkol a pokud špatně rozumíte tomu, co je to kombinační obvod, sekvenční obvod, Moore a Mealy,..., nedoporučuji vám se do toho pouštět dříve, než si to ujasníte.

Možná jste slyšeli, že kromě synchronních sekvenčních obvodů existují ještě obvody asynchronní. Ty se od synchronních liší tím, že postrádají hodiny - synchronizační pulzy přivedené z venčí. Základní čtení o základních asynchronních sekvenčních obvodech s omezeným zpožděním (bounded delay model) je zde:
Jan Bělohoubek :: ASYNCHRONNÍ LOGIKA :: Bounded delay tutoriál

Tam se dozvíte, že abyste mohli vytvořit asynchronní obvod, přibude ve vašem návrhářském repertoáru součástka nazvaná delay (zpoždění, zpožďovací linka).

Až si nastudujete tutorial (ve kterém je opravdu jen úplný základ) a zjistíte, že vás to zajímá, ale něčemu nerozumíte, můžeme se domluvit na konzultaci, případně poskytnu další literaturu...

Co bude tedy vaším úkolem:
Navrhněte asynchronní automat, který rozpozná na vstupu posloupnost "00". Posloupnosti se mohou překrývat.

Automat bude mít dva vstupy: vstup I, který představuje vstupní hodnotu a vstup S, který automatu řekne, že má načíst hodnotu na vstupu I. Každá změna signálu S (náběžná i sestupná hrana) znamená načtení hodnoty ze vstupu I.

Dále bude mít automat výstup O. Na výstupu O bude hodnota "0", pokud automat nedetekoval posloupnost "00" a hodnota "1" v opačném případě.

Automat bude typu Moore.

Všimněte si, že automat (to co umí) je jednodušší než to, co jsme dělali na cvičení - to proto, že navrhnout asynchronní automat je obecně těžší než synchronní.

Vaším 1. úkolem je nakreslit graf přechodů automatu a zakódovat stavy. K zakódování stavů by vám měli stačit 3 proměnné. K tomu potřebujete vědět ještě toto: signál S nepoužívejte napřímo jako vstup automatu. Jako vstup automatu použijte signál H (edge/hrana), který bude výstupem (asynchronního) hranového detektoru připojeného na signál S. Co je to hranový detektor zkuste zjistit sami :-).

Vzorové řešení 1

Podrobné vzorové řešení s hranovým detektorem.

Vzorové řešení 2

Pouze nástin řešení.