OBSAH WEBU
ČTĚTE!
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
temata:02-kombinacni_obvody:main [2013/02/02 12:46] marho [Úvod] |
temata:02-kombinacni_obvody:main [2013/02/03 12:39] (aktuální) marho [Binární sčítačka] |
||
---|---|---|---|
Řádek 7: | Řádek 7: | ||
<box round green 90%|**Něco málo**> | <box round green 90%|**Něco málo**> | ||
**Popis**\\ | **Popis**\\ | ||
- | * Hierarchicky uspořádaný obvod, ve kterém jednotlivé komponenty zpracovávají a mezi sebou komunikují informaci reprezentovanou v binární podobě | + | * Hierarchicky uspořádaný obvod, ve kterém jednotlivé __komponenty zpracovávají__ a mezi sebou __komunikují__ informaci reprezentovanou __v binární podobě__ |
- | * Struktura jednotlivých komponent neobsahuje cykly (spětné vazby) | + | * Struktura jednotlivých komponent __neobsahuje cykly__ (spětné vazby) |
- | * Výstupy jsou závislé pouze na aktuální hodnotě vstupu (nezáleží na předchozích hodnotách),\\ dáno vztahem: <m>\vec{y} = f(\vec{x})</m>, a také je nelze spojovat | + | * Výstupy jsou závislé __pouze na aktuální hodnotě__ vstupu (nezáleží na předchozích hodnotách),\\ dáno vztahem: <m>\vec{y} = f(\vec{x})</m>, a také je nelze spojovat |
- | * Hodnoty na vstupech jsou okamžitě propagovány na výstup (není třeba synchronizace) | + | * Hodnoty na vstupech jsou __okamžitě propagovány__ na výstup (není třeba synchronizace) |
\\ | \\ | ||
**Aktivní logická úroveň** - úroveň, při které je vstup či výstup aktivní (záleží na výrobci, př. log1 = aktivní, log0 = neaktivní; může být i naopak). To, že je signál (vstup/výstup) aktivní v log1 zjistíme tak, že v schématu neni daný signál negován. Opačně to pak platí pro log0, kde je signál negován (ve schématu je nakresleno prázdné kolečko). | **Aktivní logická úroveň** - úroveň, při které je vstup či výstup aktivní (záleží na výrobci, př. log1 = aktivní, log0 = neaktivní; může být i naopak). To, že je signál (vstup/výstup) aktivní v log1 zjistíme tak, že v schématu neni daný signál negován. Opačně to pak platí pro log0, kde je signál negován (ve schématu je nakresleno prázdné kolečko). | ||
+ | |||
+ | Př. Na následujícím obrázku je signál RDY' aktivní v log0 a signál REQ aktivní v log1. | ||
+ | |||
+ | {{:temata:02-kombinacni_obvody:02-aktivni-log-uroven.png?200}} | ||
</box> | </box> | ||
- | ===== Základní stavební bloky ===== | + | ===== Základní stavební bloky (logické členy) ===== |
{{:temata:02-kombinacni_obvody:zsb.jpg?300}} | {{:temata:02-kombinacni_obvody:zsb.jpg?300}} | ||
- | ===== Základní komponenty ===== | + | ===== Základní komponenty (funkční moduly) ===== |
+ | |||
+ | * Jsou sestaveny z jednodušších komponent (log. členů) | ||
+ | * Slouží jako stavební bloky složitějších log. obvodů | ||
==== Multiplexor ==== | ==== Multiplexor ==== | ||
Řádek 26: | Řádek 34: | ||
<box round blue 90%> | <box round blue 90%> | ||
**Popis**\\ | **Popis**\\ | ||
- | Obvod vybírající z N vstupů jeden výstup. Výběr je řízen adresovými signály přivedenými na vstupy <m>A_1</m> až <m>A_m</m>. Vztah mezi počtem vstupů a počtem adresových vstupů: <m>N = 2^m</m> | + | Obvod __vybírající__ z N vstupů __jeden výstup__. Výběr je __řízen adresovými signály__ přivedenými na vstupy <m>A_1</m> až <m>A_m</m>. Vztah mezi maximálním počtem vstupů (N) a počtem adresových vstupů (m): <m>N = 2^m</m> |
\\ | \\ | ||
**Značka**\\ | **Značka**\\ | ||
- | {{:temata:02-kombinacni_obvody:mx1.jpg?200}} | + | {{:temata:02-kombinacni_obvody:mx1.jpg?200}} alebo {{:temata:02-kombinacni_obvody:02-multiplexor-schema.png?80}} |
**Struktura**\\ | **Struktura**\\ | ||
Řádek 37: | Řádek 45: | ||
**Použití:** | **Použití:** | ||
- | * převod paralelního vstupu na sériový (data selector) | + | * __převod__ paralelního __vstupu__ na sériový (data selector) |
* součást dalších kombinačních obvodů | * součást dalších kombinačních obvodů | ||
- | * tvorba logických fcí | + | * __tvorba logických fcí__ |
**Příklad logické funkce**\\ | **Příklad logické funkce**\\ | ||
{{:temata:02-kombinacni_obvody:logfce.jpg?400}} | {{:temata:02-kombinacni_obvody:logfce.jpg?400}} | ||
- | pocet_datovych_vstupu = 2 ^ pocet_adresovych_vstupu\\ | + | Pozn.: Kromě statické log 0 a 1 lze na vstup MX přivést i libovolnou proměnnou. |
- | 1 datovy_vystup | + | |
</box> | </box> | ||
- | ==== Demultiplexor ==== | + | ==== Demultiplexor (DMX) ==== |
<box round blue 90%> | <box round blue 90%> | ||
**Popis**\\ | **Popis**\\ | ||
- | Opak k multiplexoru, převádí sériový vstup na paralelní výstup. | + | * Opak k multiplexoru, __převádí__ sériový __vstup na paralelní výstup__. |
- | \\ | + | * Přenáší logickou hodnotu z __jednoho datového vstupu__ D na jeden z <m>2^N</m> __výstupů__, přičemž ostatní výstupy mají neaktivní log. úrovně. |
- | \\ | + | |
+ | |||
**Značka**\\ | **Značka**\\ | ||
- | {{:temata:02-kombinacni_obvody:demx1.jpg?200}}\\ | + | {{:temata:02-kombinacni_obvody:demx1.jpg?200}} alebo {{:temata:02-kombinacni_obvody:02-demultiplexor-schema.png?80}}\\ |
**Struktura**\\ | **Struktura**\\ | ||
{{:temata:02-kombinacni_obvody:demx2.jpg?200}}\\ | {{:temata:02-kombinacni_obvody:demx2.jpg?200}}\\ | ||
- | |||
- | pocet_datovych_vystupu = 2 ^ pocet_adresovych_vstupu\\ | ||
- | 1 datovy_vstup | ||
</box> | </box> | ||
Řádek 73: | Řádek 78: | ||
<box round blue 90%> | <box round blue 90%> | ||
**Popis**\\ | **Popis**\\ | ||
+ | Opak k dekóderu, produkuje jedinečný výstupní binarní kód pro každou kombinaci vstupních proměnných. | ||
+ | |||
Opak k dekodéru\\ | Opak k dekodéru\\ | ||
\\ | \\ | ||
Řádek 85: | Řádek 92: | ||
</box> | </box> | ||
- | ==== Dekodér ==== | + | ==== Dekodér (DC) ==== |
<box round blue 90%> | <box round blue 90%> | ||
**Popis**\\ | **Popis**\\ | ||
- | logický obvod převádějící n vstupů na m výstupu (převod mezi dvěma binárními kódy). Pokud je <m>m = 2^n</m>, potom se jedná o binární dekodér | ||
- | **použití**\\ | + | Logický obvod převádějící __N vstupů na. M výstupu__ (převod mezi dvěma binárními kódy). Pokud je <m>M = 2^N</m>, potom se jedná o __binární dekodér__. Některé výstupy mohou být nevyužity – např. BCD dekodér. |
+ | |||
+ | **Použití**\\ | ||
* dekódování adres | * dekódování adres | ||
* převod BCD na číslo 1-10 | * převod BCD na číslo 1-10 | ||
* dekodéry pro sedmisegmentové displeje | * dekodéry pro sedmisegmentové displeje | ||
- | **dekodér adres**\\ | + | **BCD dekodér** |
+ | Dekóduje 4-bitový __kód BCD__ (prvních deset binárních čísel) na __kód dekadický__ (vždy pouze jeden z deseti výstupů je aktivní). | ||
+ | |||
+ | **Dekodér adres**\\ | ||
{{:temata:02-kombinacni_obvody:dekoderadres.jpg?300}} | {{:temata:02-kombinacni_obvody:dekoderadres.jpg?300}} | ||
- | **struktura dekodéru**\\ | + | **Struktura dekodéru**\\ |
{{:temata:02-kombinacni_obvody:dekodestruktura.jpg?300}} | {{:temata:02-kombinacni_obvody:dekodestruktura.jpg?300}} | ||
- | **dekodér 4 na 16**\\ | + | **Dekodér 4 na 16 složený z dvoch 2 na 4 (maticová struktura)**\\ |
{{:temata:02-kombinacni_obvody:dekoder4to16.jpg?400}} | {{:temata:02-kombinacni_obvody:dekoder4to16.jpg?400}} | ||
- | <m>f(P, X, Q) = Σm(0,1,4,6,7)</m> | + | **Implementace funkce** <m>f(P, X, Q) = Σm(0,1,4,6,7)</m> |
{{:temata:02-kombinacni_obvody:dekoderlogfce.jpg?300}} | {{:temata:02-kombinacni_obvody:dekoderlogfce.jpg?300}} | ||
+ | **Dekodér pro sedmisegmetnové displeje**\\ | ||
+ | Na __vstupu__ je __BCD kód__ a na __výstupu__ je __7 signálů pro řízení__ světelných segmentů __dispeje__ tak, aby tvořily dekadická číslice od 0 po 9. | ||
- | pocet_datovych_vystupu = 2 ^ pocet_datovych_vstupu | ||
</box> | </box> | ||
Řádek 117: | Řádek 129: | ||
<box round blue 90%> | <box round blue 90%> | ||
**Popis**\\ | **Popis**\\ | ||
- | Princip je sčítání jednotlivých bitů na stejných pozicích spolu s přenosem, pokud dojde k sečtení dvou jedniček. \\ | + | Princip je sčítání jednotlivých bitů na stejných pozicích spolu s přenosem, který vzniká pokud dojde k sečtení dvou jedniček. \\ |
\\ | \\ | ||
</box> | </box> | ||
Řádek 124: | Řádek 136: | ||
<box round blue 90%> | <box round blue 90%> | ||
- | Taková, která neuvažuje přenos (carry) z nižšího řádu (pro sčítání nejnižších bitů) | + | Taková, která __neuvažuje přenos__ (carry) z nižšího řádu (pro sčítání nejnižších bitů) |
- | <m>S_0 = \overline{A_0}B_0 + A_0\overline{B_0}</m> | + | <m>S_0 = \overline{A_0}B_0 + A_0\overline{B_0} = A_0 ⊕ B_0</m> |
<m>C_1 = A_0B_0</m> | <m>C_1 = A_0B_0</m> | ||
Řádek 139: | Řádek 151: | ||
<box round blue 90%> | <box round blue 90%> | ||
- | Bereme přenos s nižšího řádu | + | Oproti poloviční sčítačce __uvažujeme přenos__ z nižšího řádu |
{{:temata:02-kombinacni_obvody:scitacka1.jpg?200}} | {{:temata:02-kombinacni_obvody:scitacka1.jpg?200}} | ||
{{:temata:02-kombinacni_obvody:scitacka2.jpg?300}} | {{:temata:02-kombinacni_obvody:scitacka2.jpg?300}} | ||
+ | |||
+ | **Úplnou sčítačku je také možné vytvořit pomocí polovičních** | ||
+ | |||
+ | {{:temata:02-kombinacni_obvody:02-uplna-scitacka.png?300}} | ||
</box> | </box> | ||
- | === Sériová sčítačka === | + | === Vícebitová sčítačka === |
+ | |||
+ | == Sériová sčítačka == | ||
<box round blue 90%> | <box round blue 90%> | ||
- | {{:temata:02-kombinacni_obvody:serscitacka.jpg?300}}\\ | + | Pomocí __jedné sčítačky__, D klopného obvodu a pomocných registrů víme vypočítat součet dvou __libovolně dlouhých__ binárních čísel. Jedná se o synchronní sčítačku s taktem <m>T_c</m>. Do KO D se ukládá mezivýsledek (hodnota carry). |
- | \\ | + | |
- | Jedná se o synchronní sčítačku s taktem <m>T_c</m>. Do KO D se ukládá mezivýsledek. | + | {{:temata:02-kombinacni_obvody:serscitacka.jpg?300}} |
</box> | </box> | ||
- | === Paralelní sčítačka === | + | == Sčítačka s postupným šířením přenosu == |
<box round blue 90%> | <box round blue 90%> | ||
+ | |||
+ | * Je tvořena zřetězení několik jednobitových úplných sčítačiek. | ||
+ | * __Pseudo-paralerní__ (Carry musí procházet přes všechny stupně sčítačky) | ||
+ | * Cenově výhodné řešení | ||
+ | * Pomalé - Zpoždění jednoho logického členu je <m>\Delta</m> => zpoždění jedné sčítačky <m>2\Delta</m>, pro n bitů je doba zpoždění <m>2n\Delta</m>. -> Pro 32, 64 bitové čísla je lepší CLA (Carry Look - Ahead). | ||
{{:temata:02-kombinacni_obvody:parscitacka.jpg?300}} | {{:temata:02-kombinacni_obvody:parscitacka.jpg?300}} | ||
- | Zpoždění jednoho logického členu je <m>\Delta</m> => zpoždění jedné sčítačky <m>2\Delta</m>, pro n bitů je doba zpoždění <m>2n\Delta</m>.\\ | ||
- | Pro 32, 64 bitové čísla nevýhodné, lepší CLA (Carry Look - Ahead). | ||
</box> | </box> | ||
- | === CLA === | + | == Paralelní sčítačka - CLA (Carry Look Ahead) == |
<box round blue 90%> | <box round blue 90%> | ||
+ | |||
+ | * Přenos se negeneruje postupně ale __paralelně__. | ||
+ | * Tyto obvody se označují jako sčítačky se __zrychleným přenosem__. | ||
+ | * Dokáže __sečíst__ dvě binární čísla v __logaritmickém čase__. | ||
{{:temata:02-kombinacni_obvody:cla.jpg?400}} | {{:temata:02-kombinacni_obvody:cla.jpg?400}} | ||
Řádek 230: | Řádek 256: | ||
| Přeskakování přenosu | O(<m>\sqrt{n}</m>) | O(<m>n</m>) | | | Přeskakování přenosu | O(<m>\sqrt{n}</m>) | O(<m>n</m>) | | ||
| Výběr přenosu | O(<m>\sqrt{n}</m>) | O(<m>n</m>) | | | Výběr přenosu | O(<m>\sqrt{n}</m>) | O(<m>n</m>) | | ||
+ | |||
+ | |||
+ | === Detekce přetečení (Overflow) === | ||
+ | |||
+ | <box round blue 90%> | ||
+ | |||
+ | * Přetečení je detekováno když je __součet__ obou čísel v absolutní hodnotě __větší__, než maximální hodnota kterou __je možné uložit__ do výsledku. Př. Když na 8 bitech sečteme 200 a 200, na 8 bitů sa uloží pouze výsledek 144. Proto je nutné brát v potaz i bit vzniklý přetečením. | ||
+ | * Předpokládáme, že čísla jsou reprezentována ve __dvojkovém doplňku__. | ||
+ | * Závisí na hodnotách najvyšších bitov oboch sčítancov, na nejvyšším bite výsledku a na hodnotě přenosu. | ||
+ | |||
+ | {{:temata:02-kombinacni_obvody:02-preteceni.png?350}} | ||
+ | |||
+ | <m>OV = \overline{A_3 ⊕ B_3} . (C_4 ⊕ S_3)</m> | ||
+ | |||
+ | </box> | ||
===== Odkazy ===== | ===== Odkazy ===== |