====== Sekvenční logické obvody ====== Na rozdíl od [[kombinacni_obvody|kombinačních logických obvodů]] mají zpětnou vazbu. ===== Klopné obvody ===== Mají dva stavy a mezi nimi se přepínají. ==== Astabilní ==== Sám se překlápí mezi stavy, generuje periodický obdélníkový signál. Perioda každého stavu je //t = ln(2)RC//, celková perioda je tedy //T = t1 + t2 = ln(2) R2 C1 + ln(2) R3 C2//. Princip: Jeden z tranzistorů má o maličko nižší potřebné napětí na bázi, aby se otevřel. Tzn. na začátku se jeden tranzistor (řekněme Q1) otevře dřív. V tu chvíli se C1 začíná vybíjet a C2 naopak nabíjet. Jakmile se C1 vybije, otočí se na něm polarita a nabíjí se opačným směrem. To způsobí napětí na Q2, který se následně otevře, což zařídí vybíjení C2 a následné uzavření Q1. V tu chvíli se proces se otáčí. [[http://commons.wikimedia.org/wiki/File:Transistor_Multivibrator.svg|{{ http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Transistor_Multivibrator.svg/500px-Transistor_Multivibrator.svg.png |Astabilní klopný obvod}}]] [[http://www.falstad.com/circuit/e-multivib-a.html|Interaktivní ukázka]] ==== Monostabilní ==== Má jeden stabilní stav, pro přechod do druhého je potřeba jej //nakopnout//, po čase //t = ln(2) R2 C1// se zase vrátí zpět do svého stabilního stavu. [[http://commons.wikimedia.org/wiki/File:Transistor_Monostable.svg|{{ http://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Transistor_Monostable.svg/500px-Transistor_Monostable.svg.png |Monostabilní klopný obvod}}]] [[http://www.falstad.com/circuit/e-multivib-mono.html|Interaktivní ukázka]] ==== Bistabilní ==== Má oba stavy stabilní, pro přechod je potřeba do něj //kopnout// vždy. Lze jej tedy použít jako jednoduchou paměť. [[http://commons.wikimedia.org/wiki/File:Transistor_Bistable.svg|{{ http://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Transistor_Bistable.svg/500px-Transistor_Bistable.svg.png |Bistabilní klopný obvod}}]] [[http://www.falstad.com/circuit/e-multivib-bi.html|Interaktivní ukázka]] ==== RS ==== [[http://commons.wikimedia.org/wiki/File:SR_(NAND)_Flip-flop.svg|{{ http://upload.wikimedia.org/wikipedia/commons/thumb/9/94/SR_(NAND)_Flip-flop.svg/100px-SR_(NAND)_Flip-flop.svg.png|RS}}]] Reset/Set ^ R ^ S ^ Akce ^ Q ^ Qdalší ^ | 0 | 0 | Ponechá stav | Qminulý | Q | | 0 | 1 | Set | 0 | 1 | | 1 | 0 | Reset | 1 | 0 | | 1 | 1 | Nedefinovaný stav ||| RS klopný obvod se obvykle staví [[http://upload.wikimedia.org/wikipedia/commons/e/e1/Flipflop_SR2.svg|ze dvou NANDů]] [[http://www.falstad.com/circuit/e-nandff.html|Interaktivní ukázka]] ==== T ==== [[http://commons.wikimedia.org/wiki/File:T-Type_Flip-flop.svg|{{ http://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/T-Type_Flip-flop.svg/100px-T-Type_Flip-flop.svg.png|T}}]] Toggle, přepínač. Změna se provede pouze pokud přijde signál hodin! ^ T ^ Q ^ Qdalší ^ Akce ^ | 0 | 0 | 0 | Ponechá stav | | 0 | 1 | 1 | Ponechá stav | | 1 | 0 | 1 | Přepnutí | | 1 | 1 | 0 | Přepnutí | ==== JK ==== [[http://commons.wikimedia.org/wiki/File:JK_Flip-flop_(Simple)_Symbol.svg|{{ http://upload.wikimedia.org/wikipedia/commons/thumb/3/37/JK_Flip-flop_%28Simple%29_Symbol.svg/100px-JK_Flip-flop_%28Simple%29_Symbol.svg.png|JK}}]] Kombinace RS a T. Odstraňuje nedefinovaný stav u RS (J = S, K = R) při kterém funguje jako T. ^ J ^ K ^ Qdalší ^ Akce ^ | 0 | 0 | Qminulý | Ponechá stav | | 0 | 1 | 0 | Reset | | 1 | 0 | 1 | Set | | 1 | 1 | !Qminulý | Přepnutí | [[http://www.falstad.com/circuit/e-jkff.html|Interaktivní ukázka]] ==== D ==== [[http://commons.wikimedia.org/wiki/File:D_Flip-flop_(Simple)_Symbol.svg|{{ http://upload.wikimedia.org/wikipedia/commons/thumb/5/57/D_Flip-flop_%28Simple%29_Symbol.svg/100px-D_Flip-flop_%28Simple%29_Symbol.svg.png|D}}]] Data -- je-li na D 1, nastaví se při impulzu z hodin na 1, je-li 0, nastaví se na 0. Bez impulzu hodin stav vstup D ignoruje a pamatuje si předchozí stav. ^ Hodiny ^ D ^ Q ^ | 1 | 0 | 0 | | 1 | 1 | 1 | | 0 | | Qminulý | [[http://www.falstad.com/circuit/e-edgedff.html|Interaktivní ukázka]] ===== Čítače ===== Nejjednodušeji je to řada D klopných obvodů které mají vždy svůj invertovaný výstup připojený na svůj vlastní vstup, a jako vstup hodin používají výstup předchozího klopného obvodu (kromě prvního, ten má normální hodinový vstup). Kromě binárního čítače fungují také jako děličky frekvencí. [[http://www.eecs.tufts.edu/~dsculley/tutorial/flopsandcounters/flops6.html|{{ http://www.eecs.tufts.edu/~dsculley/tutorial/flopsandcounters/rippleCounter.jpg |Ripple counter}}]] [[http://www.falstad.com/circuit/e-counter.html|Interaktivní ukázka]] ===== Registry ===== ==== Paralelní ==== Nejjednodušší. Paralelně zapojené D KO se společnými hodinami. ==== Posuvný ==== Také z D KO se společnými hodinami, ale zapojených za sebe, výstupy vedou na vstupy (kromě prvního), zde také najdeme výstupní bity. Při zapojení posledního negovaného výstupu na první vstup dostaneme čítač. ===== Stavové automaty ===== Sekvenční automat je šestice: A=(X,Y,Q,q0,P,V) kde: - X je vstupní abeceda (množina hodnot vstupního vektoru) - Y je výstupní abeceda (množina hodnot výstupního vektoru) - Q je vnitřní abeceda (množina hodnot vektoru vnitřního stavu) - q0 je podmnožinou Q, je to počáteční stav, ze kterého se vždy startuje - P je přechodová funkce, která některým dvojicím z X * Q přirazuje prvek z Q a platí q_(i+1) = P(x_i,q_i), pro i = 0,1,2,...,n - V je výstupní funkce, která některým dvojicím z X * Q přirazuje prvek z Y. Existují dva způsoby definice výstupní funkce: Mealyho a Moorův. ==== Mealyho automat ==== Výstup je funkcí vstupu i stavu. ==== Moorův automat ==== Výstup je funkcí pouze stavu. ==== Reprezentace ==== Pomocí pravdivostních tabulek nebo grafů přechodů. ==== Implementace ==== Pro uložení informace o stavu automatu použijeme klopné obvody. Pro generování výstupů použijeme kombinační logické obvody. Pro detaily syntézy těchto obvodů doporučuju projít si slajdy z INC (inc10_syncho.pdf). V programovacích jazycích se implementují pomocí [[datove ridici struktury#cykly|cyklu]] a [[datove ridici struktury#podmineny prikaz|switche]]. ===== Shrnutí (na co nezapomenout) ===== * mají zpětnou vazbu (paměť, stav) * klopné obvody: astabilní, monostabilní, bistabilní podle v kolika stavech jsou stabilní * astabilní generuje hodiny, monostabilní krátký impulsy a má jeden vstup, bistabilní má set a reset * všechny tři jsou multivibrátory (přepíná mezi více stavama, prostě je to název) * klopné obvody mají 2 výstupy: normální a invertovaný * RS má nedefinovaný stav (R=1, S=1), staví se ze dvou NANDů * T je přepínač, ke změně dochází jenom při náběžné hraně hodinového signálu * JK je RS, avšak nemá nedefinovaný stav, místo něj ten stav funguje jako T (tj. na vstupu má i hodiny) * D nastaví na výstup to, co je na vstupu s hodinovým impulsem * čítač je řada D klopných obvodů, vstupem je jejich vlastní invertovaný výstup => delička frekvence (dělí dvěma), jako hodiny používá výstup z předchozího D KO, výstupy reprezentují jednotlivé bity čísla * paralelní registr je několik D KO vedle sebe, posuvný registr je několik D KO zapojených za sebe (lze ho zapojit jako čítač) * stavový automat je typ zapojení, který má několik stavů a může mezi nima přecházet pomocí vstupů - jestli výstup závisí jenom na stavu je to Moorův automat, jestli závisí i na vstupech je to Mealyho automat * automaty se reprezentují pomocí pravdivostních tabulek nebo grafů přechodů, při implementaci se na stavy používají KO, na výstupy kombinační log. obvody (cyklus + switch) ==== Co je třeba vědět kdyby se zeptali ==== * astabilní KO se nějakou dobu inicializuje/stabilizuje a generuje periodický obdélníkový signál, využívá kondenzátory * monostabilní generuje jeden obdélníkový impuls, odpovídá době vybíjení kondenzátoru * z posuvnýho registru se čítač dělá zapojením posledního invertovaného výstupu na první vstup (dá se tím udělat třeba dělení frekvence deseti) * sekvenční automat je šestice obsahující množinu hodnot vstupů, množinu hodnot výstupů, množinu hodnot stavů, počáteční stav, přechodovou funkci pro změnu stavu, výstupní funkce pro zjištení výstupu