Uživatelské nástroje

Nástroje pro tento web


pitel:isz:sekvencni_obvody

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.


pitel:isz:sekvencni_obvody [30. 12. 2022, 13.43:01] (aktuální) – vytvořeno - upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== 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 = t<sub>1</sub> + t<sub>2</sub> = ln(2) R<sub>2</sub> C<sub>1</sub> + ln(2) R<sub>3</sub> C<sub>2</sub>//.
 +
 +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) R<sub>2</sub> C<sub>1</sub>// 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  ^  Q<sub>další</sub>  ^
 +|  0  |  0  |  Ponechá stav  |  Q<sub>minulý</sub>  |  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  ^  Q<sub>další</sub>  ^  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  ^  Q<sub>další</sub>  ^  Akce  ^
 +|  0  |  0  |  Q<sub>minulý</sub>  |  Ponechá stav  |
 +|  0  |  1  |  0  |  Reset  |
 +|  1  |  0  |  1  |  Set  |
 +|  1  |  1  |  !Q<sub>minulý</sub>  |  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  | |  Q<sub>minulý</sub>  |
 +
 +[[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 <m>X * Q</m> přirazuje prvek z Q a platí <m>q_(i+1) = P(x_i,q_i)</m>, pro i = 0,1,2,...,n
 +  - V je výstupní funkce, která některým dvojicím z <m>X * Q</m> 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