BI-AAG - Automaty a gramatiky Katedra teoretické informatiky ČVUT FIT 11.1.21
Co potřebujeme Úvod Potřebujeme: zakódovat vstupní abecedu, zakódovat stavy automatu, pamatovat si současný stav, realizovat přechodovou funkci automatu pomocí zakódovaných stavů a vstupních symbolů, rozpoznat koncové stavy.
Kódování vstupní abecedy Kódování Implementace Vstupní abecedu zakódujeme v binárním kódu Pro text můžeme použít 8 bitů (rozšířená ASCII). Pro menší abecedu můžeme použít menší počet bitů. Ušetříme součástky, ale musíme provádět konverzi.
Kódování vstupní abecedy Kódování Implementace Vstupní abecedu zakódujeme v binárním kódu Pro text můžeme použít 8 bitů (rozšířená ASCII). Pro menší abecedu můžeme použít menší počet bitů. Ušetříme součástky, ale musíme provádět konverzi. - A = {a,b,c,d} Symbol Kód a b 1 c 1 d 11 Pro reprezentaci v binárním kódu nám stačí log 2 ( A ) bitů.
Reprezentace stavů Úvod Kódování Implementace Stavy nejčastěji kódujeme binárním nebo Grayovým kódem. Aktuální stav je uložen v datovém registru. Přechodová funkce každé kombinaci kódu starého stavu a vstupního symbolu přiřazuje kód nového stavu. Inicializace - vynulováním datového registru (pokud pro počáteční stav zvoĺıme kód ).
Reprezentace stavů Úvod Kódování Implementace Stavy nejčastěji kódujeme binárním nebo Grayovým kódem. Aktuální stav je uložen v datovém registru. Přechodová funkce každé kombinaci kódu starého stavu a vstupního symbolu přiřazuje kód nového stavu. Inicializace - vynulováním datového registru (pokud pro počáteční stav zvoĺıme kód ). Alternativně lze použít kód 1 z N. Každý stav je představován jedním 1bitovým klopným obvodem. Pokud je nastaven na log1, stav je aktivní. Každý přechod je realizován funkcí zdrojového stavu a kódu vstupního symbolu. Inicializace - nastavením registru počátečního stavu na log1, ostatních na log. V obou případech se jedná o synchronní sekvenční obvody. Přechod do nového stavu je řízen hodinovým signálem.
Kódování Implementace Kódování stavů v binárním nebo Grayově kódu Aktuální stav je uložen v datovém registru Při každém taktu se do registru uloží nový kód stavu, který je funkcí stavu předchozího a kódu vstupního symbolu. hodiny vstup m n implementace přechodové funkce n CLK D registr n Indikace konc. stavu
Implementace přechodové funkce Kódování Implementace Kombinační logikou. Jednotlivé kódy následujícího stavu jsou určeny kombinační funkcí bitů kódu původního stavu a vstupního symbolu. Koncový stav je indikován kombinační funkcí bitů kódu aktuálního stavu.
Implementace přechodové funkce Kódování Implementace Kombinační logikou. Jednotlivé kódy následujícího stavu jsou určeny kombinační funkcí bitů kódu původního stavu a vstupního symbolu. Koncový stav je indikován kombinační funkcí bitů kódu aktuálního stavu. Programovatelnou pamětí. Kód následujícího stavu je uložen na pamět ovém místě, jehož adresa je složena z kódu původního stavu a kódu vstupního symbolu. Indikace koncového stavu může být součástí přechodové funkce. Hodnota této funkce je pak invariantní ke vstupu (pro všechny vstupy je v daném stavu stejná).
Úvod Sestrojíme konečný automat nad abecedou A = {a,b,c,d}, který bude přijímat všechna slova, která končí na aa nebo c. Automat musí být deterministický a s plně definovanou přechodovou funkcí.
Úvod Sestrojíme konečný automat nad abecedou A = {a,b,c,d}, který bude přijímat všechna slova, která končí na aa nebo c. a,b,c,d START a 1 2 a c 3
Úvod Sestrojíme konečný automat nad abecedou A = {a,b,c,d}, který bude přijímat všechna slova, která končí na aa nebo c. b,d b,d b,d a START a 1 2 c c a c b,d c 3 a
Úvod Sestrojíme konečný automat nad abecedou A = {a,b,c,d}, který bude přijímat všechna slova, která končí na aa nebo c. Q / X a b c d 1 3 1 2 3 2 2 3 3 1 3
Úvod Sestrojíme konečný automat nad abecedou A = {a,b,c,d}, který bude přijímat všechna slova, která končí na aa nebo c. Q / X a b c d 1 3 1 2 3 2 2 3 3 1 3 Q / X 1 1 11 q 1 q q 1 q q 1 q q 1 q q 1 q 1 1 1 11 1 11 11 1 1 1 1 Pro kódování stavů je v tomto případě výhodnější použít Grayova kódu. Vstupní abecedu kódujeme binárně. V našem případě ušetříme několik bitů, ale byla by potřeba konverze na vstupu.
- implementace přechodové funkce x x1 x x1 1 1 1 1 1 1 1 1 q 1 q 1 q1 q1 q = x x 1 q 1 = x x 1 +x q
- implementace přechodové funkce q1 q x1 x q = x x 1 q 1 = x x 1 +x q q1 q
Koncové stavy Úvod Koncové stavy indikujeme výstupní funkcí závislou pouze na aktuálním stavu (automat typu Moore). Q Y 1 2 1 3 1 Q Y 1 11 1 1 1
Koncové stavy Úvod Koncové stavy indikujeme výstupní funkcí závislou pouze na aktuálním stavu (automat typu Moore). Q Y 1 2 1 3 1 Q Y 1 11 1 1 1 Y = q 1 q1 q Y
Přechodová funkce pomocí programovatelné paměti q q x x n m... Adresa Data... q q n... Y Adresa Obsah q 1 q x 1 x q 1 q Y 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Adresa Obsah q 1 q x 1 x q 1 q Y 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Indikaci koncového stavu Y začleníme do přechodové funkce (hodnota je invariantní ke vstupu).
Fragment implementace pomocí kódu 1 z N Mějme automat, jehož fragment vypadá nasledovně... 1 b c 2
Fragment implementace pomocí kódu 1 z N Každý stav je představován jedním 1bitovým registrem. Každý přechod je realizován vlastní logickou funkcí (vstupy b=1, c=1). 1 b c X 1 X 1 CLK CLK b c 2 Hodiny 2 CLK
Fragment implementace pomocí kódu 1 z N X 1 X Hodiny 1 CLK CLK b 2 CLK c Oproti předchozímu řešíme každý přechod zvlášt. Zřejmě nás to bude stát víc součástek. Lze jednoduše simulovat nedeterminismus aktivuje se více stavů najednou. Automat přijímá, pokud je některý koncový stav aktivní Velké OR hradlo na včech koncových stavech.