====== Sekvenční logické obvody (SKO) ====== Sekvenční obvody jsou na rozdíl od kombinačních obvodů schopné **uchovávat stav (paměť)**. Jejich výstup tedy závisí nejen na aktuálních vstupech, ale i na předchozím stavu. Základní struktura sekvenčního obvodu: * **paměťový prvek (klopný obvod)** * **kombinační logika**, která určuje přechody mezi stavy Mezi základní klopné obvody patří **RS, JK, D a T**. Podle řízení rozlišujeme: * **asynchronní obvody** – změna stavu není řízena hodinovým signálem (typicky RS, někdy D latch) * **synchronní obvody** – změna nastává pouze při hodinovém impulzu (**CLK**) {{ :courses:b2m37mam:tutorials:dit:flip_flops.jpg?700 |}} ===== Paměťové členy ===== ==== RS klopný obvod ==== RS (Reset-Set) je nejjednodušší paměťový prvek, realizovaný typicky pomocí dvojice hradel NAND nebo NOR. Vstupy: * **S (Set)** – nastaví výstup Q na 1 * **R (Reset)** – nastaví výstup Q na 0 Obvod obsahuje **zakázaný stav**, kdy jsou oba vstupy aktivní současně. ^ S ^ R ^ $Q_n$ ^ $Q_{n+1}$ ^ | 1 | 0 | x | 1 | | 0 | 1 | x | 0 | | 0 | 0 | $Q_n$| $Q_n$ | | 1 | 1 | $Q_n$| ? | ==== JK klopný obvod ==== JK obvod rozšiřuje RS obvod a **odstraňuje zakázaný stav**. Vlastnosti: * J = 1 → nastaví Q = 1 * K = 1 → nastaví Q = 0 * J = K = 1 → **invertuje stav (toggle)** Změna nastává pouze při hraně hodinového signálu. ^ J ^ K ^ CLK ^ $Q_n$ ^ $Q_{n+1}$ ^ | 1 | 0 | $\uparrow$ | x | 1 | | 0 | 1 | $\uparrow$ | x | 0 | | 0 | 0 | $\uparrow$ | $Q_n$| $Q_n$ | | 1 | 1 | $\uparrow$ | $Q_n$| $\overline{Q_n}$ | | x | x | 0/1 | $Q_n$| $Q_n$ | ==== D klopný obvod ==== D (Data) klopný obvod přenáší hodnotu ze vstupu **D** na výstup **Q** při aktivní hraně hodinového signálu. Platí: * při $\uparrow CLK$ → $Q_{n+1} = D$ Varianta bez hodin (Latch): * řízena vstupem **EN** * výstup kopíruje vstup po dobu aktivního EN ==== T klopný obvod ==== T (Toggle) klopný obvod slouží k překlápění stavu. Platí: * T = 1 → při hodině dojde k invertování stavu * T = 0 → stav se nemění Použití: zejména v čítačích. ===== Sekvenční obvody ===== Sekvenční obvody mění svůj stav v závislosti na čase (typicky podle hodinového signálu). Patří sem například: - čítače a děličky kmitočtu - registry - posuvné registry - paměti - mikroprocesory ==== Čítače ==== Čítače dělíme na: * **Asynchronní (ripple)** - výstup jednoho klopného obvodu řídí další - jednoduché zapojení - nevýhoda: zpoždění mezi bity {{ :courses:b2m37mam:tutorials:dit:asynchronni_citac.jpg?700 |}} * **Synchronní** - všechny klopné obvody mají společný **CLK** - rychlejší, ale složitější (nutná kombinační logika) Princip přenosu (carry): * vyšší bit se mění, pokud všechny nižší bity jsou 1 * např. pro 3 bity: přechody při 1, 3, 7, ... {{ :courses:b2m37mam:tutorials:dit:synchronni_citac.jpg?700 |}} Základní rozsah čítače: * $2^n$ stavů (počítá od 0 do $2^n - 1$) Zkrácený čítač (např. BCD 0–9): * využívá **asynchronní reset** * při dosažení určité hodnoty se vynuluje {{ :courses:b2m37mam:tutorials:dit:bcd_citac.jpg?700 |}} ==== Registry ==== Registry slouží k uchování vícebitové informace (např. 8 nebo 16 bitů). Realizace: * složené z D klopných obvodů * synchronní nebo asynchronní (Latch) Rozdíl: * **Latch** – citlivý na úroveň (EN) * **Flip-flop** – citlivý na hranu (CLK) Použití: * uchování dat * adresové registry * vnitřní registry procesoru ==== Posuvné registry ==== Posuvné registry posouvají data o jeden bit při každé hodinové hraně. Vlastnosti: * realizace pomocí řetězce klopných obvodů * převod mezi sériovým a paralelním rozhraním Příklady: * {{ :courses:b2m37mam:tutorials:dit:74hc_hct595.pdf |74HC595}} – sériový vstup, paralelní výstup * {{ :courses:b2m37mam:tutorials:dit:74hc_hct165.pdf |74HC165}} – paralelní vstup, sériový výstup Použití: * komunikace (SPI, USART, I²C) * rozšíření počtu vstupů/výstupů