Binárna sčítačka

**Binárna sčítačka** (iné názvy: **dvojková sčítačka**, (binárny) **sumátor**, **sčítačka**) je kombinačný logický obvod, realizujúci sčítanie čísel, reprezentovaných v dvojkovej číselnej sústave. Tvorí dôležitú súčasť aritmeticko-logickej jednotky (ALU) centrálneho procesora (CPU) počítača.

V prípade použitia dvojkového doplnkového kódovania záporných čísel sa dá sčítačka veľmi jednoducho rozšíriť na sčítačku-odčítačku.

## Jednobitové sčítačky

### Polovičná sčítačka
[náhľad|Polovičná sčítačka z hradiel [hradlo XOR|XOR a AND]]
**Polovičná sčítačka** (iné názvy: **neúplná sčítačka**, **polosumátor**; ) realizuje sčítanie dvoch jednociferných binárnych čísel. Vstupom sú dva jednobitové sčítance (*A*, *B*). Výstupom je jednobitový súčet (*S*) a jednobitový príznak prenosu do vyššieho rádu (*C*, z ).

Polovičná sčítačka odovzdáva ďalej príznak prenosu do ďalšieho rádu, sama však nedokáže spracovať prenos z predchádzajúceho rádu. Nestačí preto na realizáciu viacbitového sčítania.

Booleovský zápis:
:S = A \oplus B
:C = A \cdot B

Pravdivostná tabuľka polovičnej sčítačky:

### Úplná sčítačka
[náhľad|Úplná sčítačka, zložená z dvoch polovičných sčítačiek a hradla [hradlo OR|OR (bloková schéma)]]
[náhľad|Úplná sčítačka z hradiel (2× [hradlo XOR|XOR, 2×  AND, 1× OR). Dve polovičné sčítačky sú v schéme vyznačené červenou farbou.]]
náhľad|Schematická značka jednobitovej úplnej sčítačky

**Úplná sčítačka** (iné názvy: **plná sčítačka**, **úplný sumátor**, **plný sumátor**; ) realizuje sčítanie dvoch jednociferných binárnych čísel s pripočítaním prenosu z predchádzajúceho rádu. Vstupom sú tri jednobitové sčítance: *A*, *B*, *C<sub>i</sub>* (Ci z ). Výstupom je jednobitový súčet (*S*) a jednobitový príznak prenosu do vyššieho rádu (*C<sub>o</sub>*, z ).

Úplnú sčítačku je možné zložiť z dvoch polovičných sčítačiek a hradla OR (pozri obr.). Hradlo OR je navyše možné bez vplyvu na funkčnosť nahradiť hradlom XOR, nakoľko kombinácia vstupov (1, 1), pri ktorej by sa ich výstup líšil nemôže v prípade sčítania nastať (buď nastane prenos iba v prvej polovičnej sčítačke, alebo iba v druhej). Na vytvorenie úplnej sčítačky tak stačia 2 typy hradiel, čo je praktické pri ich realizácii.

Úplné sčítačky je možné zreťaziť vedľa seba (výstup Co jednej sčítačky prepojiť so vstupom Ci ďalšej) a realizovať tak sčítanie viacbitových čísel (pozri nižšie).

Booleovský zápis:
:S = (A \oplus B) \oplus C_i
:C_o = (A \cdot B) + (C_i \cdot (A \oplus B)) = (A \cdot B) + (B \cdot C_i) + (C_i \cdot A)

Pravdivostná tabuľka úplnej sčítačky:

## Paralelné sčítačky
**Paralelná sčítačka** je kombinačný obvod, realizujúci sčítanie viacbitových binárnych čísel.

### Sčítačka s propagáciou prenosu
náhľad|4-bitová sčítačka s propagáciou prenosu. Doba ustálenia obvodu je 2 × 4 = 8 čiastkových hradlových oneskorení.

N-bitová **sčítačka s propagáciou prenosu** alebo **sčítačka so sériovým prenosom** (, skr. **RCA**) vznikne jednoduchým zreťazením N úplných 1-bitových sčítačiek, prepojením výstupu Co úplnej sčítačky n-tého bitu so vstupom Ci sčítačky (n+1). bitu (pozri obr.). Vstupom výslednej N-bitovej sčítačky sú potom dve N-bitové čísla (+ prípadný prenos z predchádzajúceho rádu), výstupom je ich súčet, široký N+1 bitov (N bitov + prenos). Názov je odvodený z princípu – príznak prenosu sa odovzdáva (propaguje) z jedného bitu do druhého.

Sčítačka s propagáciou prenosu je jednoduchá na návrh a realizáciu a teoreticky je rozšíriteľná na ľubovoľný počet bitov. Má však zásadnú nevýhodu: s rastúcou šírkou (a teda počtom zreťazených úplných sčítačiek) priamo úmerne narastá celkové oneskorenie (*doba ustálenia*) výsledného obvodu. Signál prenosu prechádza v každej úplnej sčítačke dvoma hradlami, takže korektný súčet sa na výstupe napr. 32-bitovej sčítačky s propagáciou prenosu objaví s oneskorením až 64 čiastkových *hradlových oneskorení*, čo by mohlo výrazne obmedzovať *priepustnosť* (maximálny možný počet sčítaní za jednotku času) sekvenčného zariadenia, využívajúceho takýto typ sčítačky. Toto obmedzenie viedlo k snahe navrhnúť N-bitové sčítačky s menším oneskorením.

### Sčítačka s predikciou prenosu
náhľad|4-bitová sčítačka s predikciou prenosu

**Sčítačka s predikciou prenosu** (iné názvy: **sčítačka s predvídaním prenosu**, **sčítačka so zrýchleným prenosom**; , skr. **CLA**) je N-bitová binárna sčítačka, schopná vypočítať súčet v kratšom čase (v jednotkách hradlového oneskorenia) než sčítačka s propagáciou prenosu (RCA). Pri RCA musí každá čiastková 1-bitová sčítačka „čakať“ na korektný príznak prenosu od sčítačky predchádzajúceho bitu. Pri CLA sú (zjednodušene povedané) všetky prenosy medzi rádmi vypočítané súčasne – kombinačným obvodom, nazývaným *jednotka predikcie prenosu* (, skr. LCU).

Výhody:
* výpočet súčtu s oneskorením, teoreticky nezávislým od šírky vstupu – *[[asymptotická zložitosť|O]](1)*, zatiaľ čo sčítačka s propagáciou prenosu má oneskorenie priamo úmerné šírke vstupu – *O(n)*

Nevýhody:
* vyššie nároky na celkový počet hradiel – *O(n²)* a celkový počet tranzistorov (*O(n³)* kvôli potrebe hradiel s počtom vstupov úmerným šírke sčítačky) v porovnaní so sčítačkou s propagáciou prenosu (*O(n)* hradiel)
* od určitého počtu bitov prestáva byť prakticky realizovateľná (kvôli počtu hradiel a výrobným obmedzeniam na počet vstupov jedného hradla). Široké sčítačky je preto potrebné realizovať viacúrovňovo – kombinovaním princípu predikcie prenosu (na nižšej úrovni) s propagáciou prenosu (na vyššej úrovni), prípadne použitím princípu predikcie prenosu na dvoch (alebo viacerých) úrovniach.

## BCD sčítačky
náhľad|Bloková schéma 4-bitovej BCD sčítačky zloženej z dvoch binárnych sčítačiek a pomocnej logiky
náhľad|Schéma 4-bitovej BCD sčítačky z konkrétnych TTL obvodov z rodiny 7400
Pre sčítavanie čísel reprezentovaných v BCD kódovaní, kde je každá desiatková cifra reprezentovaná samostatnou štvoricou bitov, je možné použiť obvod zložený z dvoch 4-bitových úplných binárnych sčítačiek a pomocnej logiky.

Prvá sčítačka binárne sčíta 4-bitové BCD sčítance, pričom pokiaľ je ich súčet ≤ 9, je už jej výstupom platná BCD reprezentácia výsledku. Ak je hodnota súčtu > 9, je k nemu potrebné (v modulo 16 aritmetike) pripočítať hodnotu 6 (a indikovať prenos do vyššieho rádu, *C<sub>o</sub>*), aby výsledok znova binárne reprezentoval príslušnú desiatkovú cifru súčtu. Toto pričítanie zabezpečuje druhá 4-bitová sčítačka, ktorá má ako jedného sčítanca výstup prvej sčítačky a ako druhého buď hodnotu 0 (00002) alebo hodnotu 6 (01102), pričom prepínanie týchto dvoch hodnôt zabezpečuje pomocná hradlová logika, dekódujúca výstupy prvej sčítačky.

Napr.:

Tento obvod je vhodný pre najbežnejšie BCD kódovanie s bitovými váhami 8-4-2-1 (; skr. NBCD), pri ktorom reprezentácia hodnôt 09 priamo zodpovedá ich zápisom v dvojkovej sústave.

## Integrované obvody
Medzi bežné TTL/CMOS integrované obvody realizujúce binárne sčítačky patria:
* 7480: 1-bitová úplná sčítačka
* 7482: 2-bitová úplná sčítačka
* 7483: 4-bitová úplná sčítačka so zrýchleným prenosom
* 74181: 4-bitová 16-funkčná aritmeticko-logická jednotka (ALU)
* 74183: 2× 1-bitová úplná sčítačka
* 74283: 4-bitová úplná sčítačka so zrýchleným prenosom
* 74381: 4-bitová ALU s výstupmi „generate“ a „propagate“
* 74382: 4-bitová ALU s výstupmi „ripple carry“ a „overflow“
* 74385: 4× 1-bitová sčítačka/odčítačka
* 74456: natural binary coded decimal (NBCD) sčítačka
* 4008: 4-bitová úplná sčítačka so zrýchleným prenosom
* 4032: 3× sériová sčítačka
* 4038: 3× sériová sčítačka (spúšťanie zostupnou hranou)
* 4560: NBCD sčítačka
* 40181: 4-bitová 16-funkčná ALU

Ekvivalenty uvedených obvodov aj ľubovoľné vlastné účelové obvody sčítačiek je dnes možné pohodlne používať aj vo forme komponentov pre programovateľné hradlové polia.

## Referencie

## Pozri aj
* dvojková číselná sústava
* binárna násobička
* aritmeticko-logická jednotka (ALU)
* hradlo XOR
* zoznam základných logických obvodov

## Iné projekty

## Externé odkazy
* Polovičná sčítačka , úplná sčítačka  – interaktívne simulácie hradlových obvodov k publikácii ''Hradla, volty, jednočipy'' Martina Malého
* Hardvérové algoritmy pre aritmetické moduly 
* Reverzné inžinierstvo obvodu zrýchleného prenosu sčítačky v ALU procesora Intel 8008 

Kategória:Logické obvody
Kategória:Počítačová aritmetika