Samostatná práce č. 6 – Návrh asynchronního obvodu Akcelerace algoritmů – PV 193 Zadání: Navrhněte asynchronní automat, jehož výstup Y bude se nastaví do log.1, pokud vstup A přešel do log.1 dříve, než vstup B. Řešení: V[2] V[3] V[1] B A 0 1 0 0 0 1 2 3 0 1 2 1 0 3 3 3 0 3 3 3 0 3 3 3 3 3 0 > Jaké možné varianty připouští slovní formulace? Jaké průběhy, respektující zadání, mohou nastat? A’B A’B’ A’B’ 0 AB A’B AB’ 1 3 2 A’B AB AB’ AB AB’ A’B’ AB’ 0 0 1 1 > Graf přechodů pro verzi V[3]: Tabulka přechodů pro stabilní a neurčité stavy: V[3]3 > B A > B A > 0 0 - 0 0 1 - 3 0 1 1 - 1 0 1 2 - 1 2 - 2 2 - 1 2 3 1 3 3 3 3 3 0 3 3 3 0 stabilní a neurčité stavy úplná tabulka > B A V[3]3 > Minimalizace stavů: 0 0 1 - 3 0 1 0 1 2 - 1 2 - 1 2 3 1 3 0 3 3 3 0 B A V[3]3 > X X Y - Z 0 Y X Y Y Z 1 Z X Z Z Z 0 A’B A’B’ A’B’ X A’B Y Z A’B AB AB’ A’B’ AB’ AB AB’ 1 0 0 > Minimalizovaný graf přechodů: Y[3] B A 0 1 0 0 0 1 2 3 0 1 2 1 0 3 3 3 0 3 3 3 0 3 3 3 3 3 0 X Y X Z X Y Y Z X Y Y Y X Z Z Z X Z Z Z X Z Z Z Z Z X > Časový diagram pro minimalizovaný graf přechodů: Sekvenční obvod musí pracovat ve fundamentálním režimu: – první podmínka = v daném čase se může měnit pouze jediný vstupní signál, – druhá podmínka = při přechodech mezi vnitřními stavy se může měnit pouze jeden bit vnitřního kódu, což bude splněno, pokud kódy sousedních vnitřních stavů budou sousedit v i Karnaughově mapě. Tento požadavek je znázorněn přechodovou tabulku vyjadřující jednak kódy jednotlivých vnitřních stavů a dále popis vztahů souslednosti (přechodů) mezi jednotlivými vnitřními stavy, a to jak jednosměrné, tak obousměrné – viz níže: p[1] p[2] > X Y Z A’B > X Y Z - Pokud se i při jednom přechodu mění více bitů, je třeba hledat jiné přiřazení vnitřních kódů nebo modifikovat přechodovou tabulku. V tomto příkladu se jako problematický jeví přechod mezi stavy Y a Z, jimž nejde přiřadit kódy vyhovující fundamentálnímu režimu. K řešení lze zvolit některou z metod: a) do přechodové tabulky lze přiřadit nestabilní stav tvořící cyklus – viz níže: X Y Z U A’B A’B > X Y Z U p[1] p[2] > B A > V[3]3 > B A > X X Y - Z X X Y - Z 0 Y X Y Y Z Y X Y Y U 1 Z X Z Z Z Z X Z T Z 0 U - - - Z 0 Vnitřní stavy mají přiřazeny následující kombinace bitů p[2] a p[1] kódu vnitřním stavům – X = 00, Y = 01, Z = 10, U = 11. Karnaughova mapa má následující tvar: 00 00 01 - 10 01 00 01 01 11 11 - - - 10 10 00 10 10 10 00 01 - 10 0 00 01 01 11 1 - - - 10 0 00 10 10 10 0 B A p[2] p[1] V[3]3 > B A > Bity p[2] a p[1] kódu vnitřních stavů se uchovávají v pamětech sekvenčního obvodu. Pro asynchronní obvody je optimální použít hladinové klopné obvody RS, jsou realizovány minimálním počtem hradel. p[2] p[1] B A p[2] ® p[2]* > p[2] p[1] B A p[1] ® p[1]* > 0 0 - 1 0 0 0 1 - - - 1 0 1 1 1 0 1 - 0 0 1 1 1 - - - 0 0 0 0 0 přechod kód 0 ® 0 u[0] 0 ® 1 s 1 ® 0 r 1 ® 1 u[1] p[2] p[1] B A p[2] ® p[2]* > p[2] p[1] B A p[1] ® p[1]* > u[0] u[0] - s u[0] u[0] u[0] s - - - u[1] r u[1] u[1] u[1] u[0] s - u[0] r u[1] u[1] u[1] - - - r u[0] u[0] u[0] u[0] přechod S R u[0] 0 - s 1 0 r 0 1 u[1] - 0 p[2] p[1] B A S[2] > p[2] p[1] B A R[2] > 0 0 - 1 0 0 0 1 - - - - 0 - - - - - - 0 - - - 0 - - - 0 1 0 0 0 přechod S R u[0] 0 - s 1 0 r 0 1 u[1] - 0 S[2] = A‘B R[2] = A‘B‘ p[2] p[1] B A R[1] > p[2] p[1] B A S[1] > 0 1 - 0 0 - - - - - - 0 0 0 0 0 - 0 - - 1 0 0 0 - - - 1 - - - - S[1] = Ap[2]‘ R[1] = A‘B‘+ p[2] V[3] = Y = p[2]‘p[1] Elektrické schéma asynchronního sekvenčního obvodu verze a): Q[1] S[1] R[1] Q[1] [ ]& [ ]& [ ]& [ ]& A [ ]& [ ]& [ ]& B [ ]& V[3] Q[2] S[2] R[2] Q[2] [ ]& [ ]& > b) lze přecházet přes jiný stav, tj. využít již existující skok – viz níže přidaný cyklus zvýrazněný červenou barvou. Tuto změnu v tabulce je možno provést, protože stav X a Z generují stejnou hodnotu výstupní proměnné. Je nutno zajistit, aby se hodnota výstupní proměnné měnila pouze jednou: B A > V[3]3 > B A > X X Y - Z X X Y - Z 0 Y X Y Y Z Y X Y Y X 1 Z X Z Z Z Z X Z Z Z 0 Při použití cyklu mají graf přechodů a přechodová tabulka vnitřních stavů následující tvar: p[1] p[2] > X Y Z > X Y Z - Dalším krokem řešení je přiřazení bitů p[2] a p[1] kódu vnitřním stavům – X = 00, Y = 01, Z = 10 00 00 01 - 10 01 00 01 01 00 10 00 10 10 10 00 01 - 10 0 00 01 01 00 1 - - - - - 00 10 10 10 0 B A > B A p[2] p[1] V[3]3 > Bity p[2] a p[1] kódu vnitřních stavů se uchovávají v pamětech sekvenčního obvodu. Pro asynchronní obvody je optimální použít hladinové klopné obvody RS, jsou realizovány minimálním počtem hradel. p[2] p[1] B A p[2] ® p[2]* > p[2] p[1] B A p[1] ® p[1]* > 0 0 - 1 0 0 0 0 - - - - 0 1 1 1 0 1 - 0 0 1 1 0 - - - - 0 0 0 0 přechod kód 0 ® 0 u[0] 0 ® 1 s 1 ® 0 r 1 ® 1 u[1] p[2] p[1] B A p[2] ® p[2]* > p[2] p[1] B A p[1] ® p[1]* > u[0] u[0] - s u[0] u[0] u[0] u[0] - - - - r u[1] u[1] u[1] u[0] s - u[0] r u[1] u[1] r - - - - u[0] u[0] u[0] u[0] p[2] p[1] B A S[2] > p[2] p[1] B A R[2] > 0 0 - 1 0 0 0 0 - - - - 0 - - - - - - 0 - - - - - - - - 1 0 0 0 přechod S R u[0] 0 - s 1 0 r 0 1 u[1] - 0 S[2] = Bp[1]‘ R[2] = A‘B‘ p[2] p[1] B A R[1] > p[2] p[1] B A S[1] > 0 1 - 0 0 - - 0 - - - - 0 0 0 0 - 0 - - 1 0 0 1 - - - - - - - - S[1] = Ap[2]‘ R[1] = A‘ V[3] = Y = p[2]‘p[1] = p[1] Elektrické schéma asynchronního sekvenčního obvodu verze b): [ ]& A [ ]& [ ]& B Q[1] S[1] R[1] Q[1] [ ]& [ ]& V[3] [ ]& V[3] Q[2] S[2] R[2] Q[2] [ ]& [ ]& >