====== 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