# 25 — Sekvenční logické obvody
> [!abstract] O tématu
> ==**Sekvenční logické obvody**== = obvody, jejichž ==**výstup závisí na aktuálních vstupech I na předchozím stavu**==. Mají **paměť**. Základem jsou ==**klopné obvody (flip-flopy)**==.
> [!info] Maturitní otázka
> **a)** Parametry a vlastnosti · **b)** Návrh sekvenčního obvodu · **c)** Využití · **d)** Synchronní a asynchronní · **e)** Příklady sekvenčních obvodů
---
## a) Parametry a vlastnosti
### Definice
==**Sekvenční obvod**== = elektronický obvod, který ==**uchovává informaci a pamatuje si předchozí stavy**==. Výstup závisí na vstupech **i na vnitřním stavu** obvodu.
### Stavba
Skládá se ze ==**dvou částí**==:
- ==**kombinační část**== — klasický kombinační obvod
- ==**paměťová část**== — kombinační obvod se ==**zpětnou vazbou**==, realizovaný ==**klopnými obvody**==
Vnitřní stav je dán ==**vnitřními proměnnými**==, které jsou uloženy v paměťových členech.
> [!warning] Pozor na **hazardy** — vlivem zpoždění mohou vznikat krátké chybné stavy.
### Rozdíl proti kombinačním
| | Kombinační | ==**Sekvenční**== |
|---|---|---|
| Výstup závisí | jen na vstupech | **na vstupech + vnitřním stavu** |
| Paměť | NEMÁ | ==**MÁ** (klopné obvody)== |
| Zpětná vazba | nemá | ==**má**== |
| Příklad | sčítačka, MUX | čítač, registr, paměť |
### Klíčové parametry a vlastnosti
- ==**Počet vnitřních stavů**== — kapacita a komplexnost obvodu
- ==**Přenosové zpoždění**== (propagation delay) — rychlost odezvy
- ==**Hodinová frekvence**== (Hz) — maximální taktovací rychlost
- ==**Setup time**== — vstup musí být stabilní **před** hranou hodin
- ==**Hold time**== — vstup musí být stabilní **po** hraně hodin
- ==**Spotřeba energie**==
- ==**Stabilita a spolehlivost**==
---
## b) Návrh sekvenčního obvodu
### Postup návrhu
1. ==**Specifikace**== — identifikace vstupů, výstupů a počtu stavů
2. ==**Návrh konečného automatu**== — definice přechodů mezi stavy (==**graf přechodů**==)
3. ==**Tabulka přechodů**== — pro každý stav a vstup → další stav a výstup
4. ==**Kódování stavů**== — přiřazení binárních hodnot stavům
5. ==**Volba klopných obvodů**== (D, JK, T)
6. ==**Implementace logických funkcí**== — Booleovský výraz pro vstupy KO (Karnaugh mapa)
7. ==**Schéma a ověření**== — klopné obvody + kombinační logika
### Konečné automaty (FSM — Finite State Machine)
Standardní nástroj pro popis sekvenčního obvodu. Učitel uváděl příklad ==**kódového zámku otvíraného třemi čísly**==.
==**Mealyho konečný automat**== (graf přechodů):
- ==**kolečka**== = všechny možné **vnitřní stavy**
- ==**šipky (hrany)**== = **přechody** označené vstupní kombinací
- ==**za lomítkem výstupní hodnota**== po přechodu
- výstup závisí na ==**stavu + vstupech**==
==**Mooreův konečný automat**==:
- výstup závisí ==**jen na stavu**==
Další možnost: ==**Petriho sítě**==.
---
## c) Využití sekvenčních obvodů
### Paměťové prvky
- ==**Registry**== — uchovávají data pro okamžitý přístup (PC, IR, ACC...)
- ==**Paměťové buňky (RAM)**== — SRAM, DRAM
- ==**Cache**== — vyrovnávací paměť (typicky SRAM)
### Procesorové jednotky
- ==**Řadič (CU)**== — řídí tok dat, instrukční cyklus
- ==**Čítače a časovače**== — počítání událostí, generování přerušení
- ==**Stavové automaty (FSM)**== — řízení složitých systémů
### Komunikační systémy
- ==**Sériové převodníky**== — UART, SPI
- ==**Posuvné registry**== — sériový-paralelní převod
- ==**Síťové protokoly**==
### Další
- ==**Mikrokontroléry**== (Arduino, ESP), ==**PLC**== — řízení strojů
- ==**Klávesnice**== — detekce stisku kláves
- ==**Semafory, výtahy, automaty na nápoje**==
---
## d) Synchronní a asynchronní sekvenční obvody
### Asynchronní
==**Reaguje ihned na změnu vstupních hodnot**== — bez hodinového signálu.
- ==**Rychlejší**== (nečeká na takt)
- ==**Náchylné k hazardům**== a chybám
- ==**Obtížně navrhované**==
- použití: rychlé speciální aplikace
### Synchronní
==**Reaguje na změnu hodinového signálu**==.
Dvě varianty:
- ==**Řízené úrovní (latch)**== — reaguje po celou dobu H úrovně hodin
- ==**Řízené hranou (flip-flop)**== — reaguje pouze v ==**momentu změny hodin**==
- > [!tip] ==**Drtivá většina dnešních obvodů!**==
Výhody synchronních: ==**předvídatelné chování, snadná diagnostika, standard v moderním HW**==.
### Hodinový signál (clock)
==**Pravidelný obdélníkový signál**== vysílaný ==**GHI — Generátorem Hodinového Impulzu**== (oscilátor, krystal).
- ==**T = 1 / f**== [s] (T = perioda, f = frekvence, např. 3 GHz)
- ==**Náběžná hrana (rising edge)**== — přechod 0 → 1
- ==**Sestupná hrana (falling edge)**== — přechod 1 → 0
- klopné obvody reagují obvykle na **jednu z hran**
---
## e) Příklady sekvenčních obvodů
### Klopné obvody (multivibrátory)
==**Klopný obvod = multivibrátor**== — nabývá ==**právě dvou napěťových stavů**==, přechod mezi nimi je ==**skokový**==.
Druhy:
- ==**Astabilní**== — nemá stabilní stav, neustále kmitá (impulzní generátory, blikače)
- ==**Monostabilní**== — má jeden stabilní stav, překlopí s příchodem hodin (zpožďovací prvky)
- ==**Bistabilní**== — ==**má dva stabilní stavy, slouží jako paměťové prvky**== — **tyto nás zajímají!**
### Bistabilní klopné obvody
==**Základní stavební prvek sekvenčních obvodů**== — uchovává 1 bit. Typy: ==**RS, JK, D, T**==.
#### RS klopný obvod (Set-Reset)
==**Nejjednodušší**== klopný obvod. Realizovaný pomocí ==**hradel NAND nebo NOR**==.
- ==**S**== (Set) → Q = 1
- ==**R**== (Reset) → Q = 0
| S | R | Q (další) | |
|---|---|---|---|
| 0 | 0 | Q (drží) | uchová stav |
| 0 | 1 | 0 | reset |
| 1 | 0 | 1 | set |
| 1 | 1 | ==**zakázáno**== | nedefinovaný stav |
#### JK klopný obvod
==**„Jack Kilby" / „jump-kill"**== — podobné jako RS, ale ==**odstraňuje zakázaný stav**==.
| J | K | Q (další) | |
|---|---|---|---|
| 0 | 0 | Q | drží stav |
| 0 | 1 | 0 | reset |
| 1 | 0 | 1 | set |
| 1 | 1 | ==**¬Q**== | ==**překlopí (toggle)**== |
#### D klopný obvod (Data)
==**Jednobitová paměť**==. Nejjednodušší použití.
| D | Q (po hraně) |
|---|---|
| 0 | 0 |
| 1 | 1 |
==**Výstup Q kopíruje D při hraně hodin**==. Žádné zakázané stavy.
Provedení: ==**řízený hranou (flip-flop)**== nebo ==**řízený úrovní (latch)**==.
#### T klopný obvod (Trigger)
==**Dělička frekvence**==. Používá se v ==**čítačích**==.
| T | Q (další) |
|---|---|
| 0 | Q (drží) |
| 1 | ==**¬Q (překlopí)**== |
### Registry
==**Skupina klopných obvodů (typicky D)**== pro uchování ==**vícebitového slova**== (8, 16, 32, 64 bitů).
- ==**Paralelní registr**== — všechny bity zapsány najednou
- ==**Posuvný registr (shift register)**== — bity se posouvají při každém taktu (sériový-paralelní převod)
### Čítače
==**Sekvenční obvod, který počítá taktovací pulzy**==.
- ==**Vzestupný (up-counter)**== / ==**Sestupný (down-counter)**==
- ==**Asynchronní (ripple counter)**== — jednodušší, ale pomalejší
- ==**Synchronní**== — všechny bity současně, rychlejší
- ==**Modulo N**== — počítá 0 až (N-1), pak nuluje (např. modulo 10 pro BCD)
- ==**Binární**== vs ==**Grayův**== čítač
### Sériové převodníky
- ==**UART**==, ==**SPI**== — sériová komunikace mezi zařízeními
### Paměti
- ==**SRAM**== — 6 tranzistorů (typu flip-flop), rychlá, drahá → ==**cache**==
- ==**DRAM**== — kondenzátor + tranzistor, levná, nutná obnova → ==**hlavní RAM**==
- viz [[09 - Polovodicove pameti|otázka 9]]
### Procesor
==**Velmi složitý sekvenční obvod**== — obsahuje ==**registry, řadič (FSM), čítače, cache**==.
---
## Shrnutí
> [!summary] Co si pamatovat
> **a) Vlastnosti:** ==**výstup závisí na vstupech + vnitřním stavu**==. Skládá se z ==**kombinační části + paměťové části se zpětnou vazbou**== (klopné obvody). Pozor na hazardy.
> **b) Návrh:** specifikace → ==**graf přechodů (Mealy/Moore automat)**== → tabulka přechodů → kódování → volba KO → schéma.
> **c) Využití:** ==**registry, RAM/cache, čítače, řadič CPU, sériové převodníky (UART/SPI), FSM**==.
> **d) Synchronní vs asynchronní:** asynchronní = reaguje hned (rychlé, rizikové); synchronní = řízené ==**hodinami (GHI)**==, dále ==**latch (úrovní)**== nebo ==**flip-flop (hranou — drtivá většina)**==.
> **e) Příklady:** ==**bistabilní KO (RS, JK, D, T)**==, ==**registry (paralelní, posuvné)**==, ==**čítače (binární, Grayův, modulo N)**==, ==**UART/SPI**==, ==**paměti (SRAM, DRAM)**==.