Rozdíly

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

Odkaz na výstup diff

temata:02-kombinacni_obvody:main [2012/05/12 16:26]
conyx [Kodér]
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**\\
-  * Obvodyjejichž 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> +  * Hierarchicky uspořádaný obvodve kterém jednotlivé __komponenty zpracovávají__ a mezi sebou __komunikují__ informaci reprezentovanou __v binární podobě__ 
-  * Hodnoty na vstupech jsou okamžitě propagovány na výstup (není třeba synchronizace)+  * 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 
 +  * 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)+**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 24: Řá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 35: Řá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 lze na vstup MX přivést i libovolnou proměnnou.
-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 71: Řá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 80: Řádek 89:
   * prioritní kodér (přidělování sběrnice, řadič přerušení)\\   * prioritní kodér (přidělování sběrnice, řadič přerušení)\\
  
-pocet_vstupu = 2 ^ pocet_vystupu+pocet_datovych_vstupu = 2 ^ pocet_datovych_vystupu
 </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}}
  
-</box>+**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.
  
 +</box>
  
 ==== Binární sčítačka ==== ==== Binární sčítačka ====
Řádek 114: Řá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 121: Řá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 136: Řádek 151:
  
 <box round blue 90%> <box round blue 90%>
-Bereme enos s nižšího řádu+Oproti poloviční sčítačce __uvažujeme 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 227: Řá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 =====
temata/02-kombinacni_obvody/main.1336832767.txt.gz · Poslední úprava: 2012/05/12 16:26 autor: conyx
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki