# 23 — Kombinační logické obvody > [!abstract] O tématu > ==**Kombinační logické obvody**== = obvody, jejichž ==**výstup závisí jen na aktuálních hodnotách vstupů**== (žádná paměť, žádné minulé stavy). Sestaveny z **hradel AND, OR, NOT, NAND, NOR, XOR**. > [!info] Maturitní otázka > **a)** Parametry a vlastnosti · **b)** Návrh kombinačního obvodu · **c)** Využití · **d)** Příklady kombinačních obvodů · **e)** Aritmetické operace --- ## a) Parametry a vlastnosti ### Definice ==**Kombinační obvod**== má pro stejnou kombinaci vstupů ==**vždy stejný výstup**==. ==**Nemá paměť**== — výstup nezávisí na minulosti, jen na aktuálních vstupech. ==**Okamžitě reaguje na změnu na vstupech**==. ### Vlastnosti - výstup závisí jen na ==**kombinaci aktuálních vstupů**== - ==**nebere ohled na předchozí stavy**== - má většinou ==**jednodušší strukturu**== a návrh - na určitou kombinaci vstupů reaguje vždy stejně - činnost lze popsat ==**logickou funkcí (rovnicí)**== s proměnnými, které mají jen 2 stavy (0/1) ### Rozdíl proti sekvenčním obvodům | | Kombinační | Sekvenční | |---|---|---| | Závislost výstupu | jen na aktuálních vstupech | na vstupech **i minulých stavech** | | Paměť | ==**NEMÁ**== | ==**má**== (klopné obvody) | | Hodinový signál | nepotřebuje | obvykle ano | | Příklad | sčítačka, multiplexor | čítač, registr, paměť | ### Základní logické členy (hradla) ==**Stavební bloky**== kombinačních obvodů — kombinací vznikají složitější funkce: | Hradlo | Funkce | |---|---| | ==**AND**== | výstup 1, jen když jsou **všechny vstupy 1** | | ==**OR**== | výstup 1, když je **alespoň jeden vstup 1** | | ==**NOT**== | **invertuje** vstupní hodnotu | | ==**NAND**== | inverzní AND | | ==**NOR**== | inverzní OR | | ==**XOR**== | výstup 1, když jsou **vstupy různé** | ### Klíčové parametry - ==**Počet vstupů a výstupů**== - ==**Zpoždění (propagation delay)**== — ns, jak rychle se výstup ustálí po změně vstupu - ==**Spotřeba**== - ==**Fan-in / Fan-out**== — max počet vstupů hradla / kolik vstupů můžu napájet - ==**Funkční tabulka**== (pravdivostní tabulka) - ==**Statické a dynamické hazardy**== — nežádoucí krátké pulzy na výstupu během přechodů --- ## b) Návrh kombinačního obvodu ### Postup 1. ==**Zadání**== — slovní popis chování (kdy má být výstup 1?) 2. ==**Pravdivostní tabulka**== — všechny kombinace vstupů a požadovaný výstup 3. ==**Booleovský výraz**== — pomocí mintermů (úplná disjunktivní normální forma) 4. ==**Minimalizace**== — Karnaughovou mapou nebo algebraickou cestou 5. ==**Schéma z hradel**== — nakreslit 6. ==**Realizace**== — IC nebo FPGA ### Příklad — funkce „většinového hlasování" 3 vstupů ==**Výstup = 1, když alespoň 2 ze 3 vstupů = 1**==. #### 1. Pravdivostní tabulka | A | B | C | F | |---|---|---|---| | 0 | 0 | 0 | 0 | | 0 | 0 | 1 | 0 | | 0 | 1 | 0 | 0 | | 0 | 1 | 1 | **1** | | 1 | 0 | 0 | 0 | | 1 | 0 | 1 | **1** | | 1 | 1 | 0 | **1** | | 1 | 1 | 1 | **1** | #### 2. Mintermy (kde F=1) F = ¬A·B·C + A·¬B·C + A·B·¬C + A·B·C #### 3. Minimalizace (K-mapa) F = A·B + A·C + B·C #### 4. Schéma 3× AND + 1× OR (4 hradla). --- ## c) Využití kombinačních obvodů ### V CPU a paměti - ==**ALU**== — aritmetické a logické operace (sčítání, AND, OR…) - ==**Adresové dekodéry**== v paměti - ==**Multiplexory / demultiplexory**== pro výběr signálů - ==**Komparátory**== pro porovnání hodnot ### V periferiích a I/O - ==**Převodníky kódů**== (BCD na 7-segment displej) - ==**Generátory parity**== pro detekci chyb v přenosu - ==**Kódery a dekodéry**== ### V počítačových sítích - ==**Switching matrix**== ve switchích - ==**Generátory CRC**== pro kontrolu chyb ### V průmyslu - ==**Řízení strojů**== (PLC) - ==**Bezpečnostní logika**== (alarmy) --- ## d) Příklady kombinačních obvodů ### Kodér ==**Převádí z kódu k z n na jiný druh kódu**== (komprimuje informaci — méně výstupních vodičů). - např. ==**z kódu 1 z 10 na BCD**== (obvod **74147**) - snižuje počet vodičů při přenosu ### Dekodér ==**Opak kodéru**== — převádí jiný kód na ==**kód k z n**== (1 z N výstupů aktivní). - např. ==**z kódu BIN na 1 z 16**== (obvod **74154**) - ==**Použití**==: adresování paměti, BCD na 7-segment, výběr zařízení ### Rekodér (kodek) ==**Provádí kódování i dekódování zároveň**== — převádí z jiného kódu na jiný kód. - např. ==**z BIN na BCD**== (obvod **74185**) ### Multiplexor (MUX) ==**Přenáší informaci z 1 z N vstupů na 1 výstup**==. Přepínání řízeno ==**adresovým signálem**==. - vstupy se označují jako ==**kanály**==, vybraný kanál určuje číslicová adresa - např. **1 z 16 vstupů na 1 výstup** (obvod **74150**) - 2:1, 4:1, 8:1, 16:1, ... - ==**Analogie**==: ==**„přepínač"**== — vyberu, který vstup jde na výstup ### Demultiplexor (DEMUX) ==**Opak MUXu**== — přenáší informaci z 1 vstupu na ==**1 z N výstupů**==, řízeno adresovým signálem. - např. **1 vstup na 1 ze 4 výstupů** (obvod **74155**) ### Komparátor ==**Porovnává mezi sebou několikabitová čísla**==. Dva druhy: | Druh | Vyhodnocuje | |---|---| | ==**Logický komparátor**== | jen **rovnost / nerovnost** (A = B, A ≠ B) | | ==**Aritmetický komparátor**== | relace **=, <, >** | ### Detektor chyb ==**Zjišťuje mimokódové kombinace**== (kombinace, které v daném kódu nemají význam). - např. u **BCD kódu**: pro hodnoty **0–9** je výstup Y = 0, pro **10–15** Y = 1 ### Generátor parity ==**Přidá kontrolní bit (paritu)**== k datům pro detekci chyb v přenosu. Generuje sudou i lichou paritu. - ==**Sudá parita**== — počet 1 (včetně bitu) je sudý - ==**Lichá parita**== — počet 1 je lichý - např. **8-bitový generátor** (obvod **74180**) ### BCD na 7-segment ==**Převádí 4-bitové BCD číslo (0–9) na 7 signálů**== pro segmentový displej. ### ALU (Arithmetic Logic Unit) ==**Komplexní kombinační obvod**== v CPU, který umí různé operace (+, −, AND, OR, XOR, posuny) podle ovládacích signálů. --- ## e) Aritmetické operace ### Sčítačka (Adder) #### Polosčítačka / půlsčítačka (Half Adder) ==**Sčítá 2 bity**== (1 bit). Výstup = součet (S) + přenos (C). | A | B | S | C | |---|---|---|---| | 0 | 0 | 0 | 0 | | 0 | 1 | 1 | 0 | | 1 | 0 | 1 | 0 | | 1 | 1 | 0 | **1** | ==**S = A ⊕ B**== (XOR) ==**C = A · B**== (AND) #### Úplná sčítačka (Full Adder) ==**Sčítá 3 bity**== — A, B a ==**přenos z nižšího řádu (Cin)**==. Výstup = součet + nový přenos. #### Paralelní sčítačka ==**Počítá všechny bity najednou**== — spojení více úplných sčítaček vedle sebe (např. 8-bit, 32-bit). #### BCD sčítačka ==**Sčítá v BCD kódu**== (po dekadických cifrách 0–9). #### Sčítačka s pohyblivou řádovou čárkou Pro operace v plovoucí řádové čárce (floating point). ### Další aritmetické obvody - ==**Odčítačka**== - ==**Násobička**== - ==**Dělička**== ### Posuvy ==**Posuv bitů**== ve slově: - ==**Doprava**== - ==**Doleva**== - ==**Rotace**== (vysunutý bit se vrací na druhý konec) --- ## Shrnutí > [!summary] Co si pamatovat > **a) Vlastnosti:** ==**výstup závisí jen na aktuálních vstupech**==, **bez paměti**. Stavební bloky: **AND, OR, NOT, NAND, NOR, XOR**. Parametry: zpoždění, spotřeba, fan-in/out. > **b) Návrh:** ==**zadání → tabulka → mintermy → minimalizace (K-mapa) → schéma**==. > **c) Využití:** ==**ALU, dekodéry pamětí, multiplexory, generátory parity, převodníky kódů, komparátory**==. > **d) Příklady:** ==**kodér, dekodér, rekodér (kodek), MUX, DEMUX, komparátor (logický/aritmetický), detektor chyb, generátor parity, BCD/7-seg, ALU**==. > **e) Aritmetika:** ==**sčítačka (polo/úplná/paralelní/BCD), odčítačka, násobička, dělička, posuvy (doprava/doleva/rotace)**==.