Summators

Elektronikā par **summatoru** sauc elektronisku shēmu, kas veic skaitļu saskaitīšanu. Summators var būt arī loģiskā shēma (shēma, kas sastāv no loģiskajiem elementiem), kas veic binārajā pierakstā dotu skaitļu saskaitīšanu. Summators ir viena no datora sastāvdaļām — tas ir datora bloks, kas paredzēts mašīnvārdu formā kodētu skaitļu saskaitīšanai.

Izšķir *paralēlos* un *seriālos summatorus*. Mūsdienu datoros summatori ir iekļauti aritmētiski loģiskajā ierīcē (ALU), kur tiek veiktas arī citas operācijas, ne tikai summēšana. Eksistē summatori priekš skaitļiem bināri decimālajā pierakstā (BCD), XS3 jeb neizsvērtajā BCD kodā, kā arī citiem kodiem un sistēmām, taču visbiežāk summators ir paredzēts binārajā skaitīšanas sistēmā dotiem skaitļiem. Lai varētu operēt ar citu kodu vai sistēmas skaitļiem, ir nepieciešams izveidot sarežģītākus summatorus.

## Summatoru veidi

Viena bita summatorus iedala divās kategorijās:

;Pussummatori
:Pussumatoram ir divi ievadi, parasti nosaukti par A un B, un divi izvadi, summa S un pārnese C. Summas S izvada rezultāts tiek iegūts no XOR elementa, kurā kā ieejas dati tiek ievadīti A un B, bet pārneses C izvada rezultāts tiek iegūts no AND elementa, kurā kā ieejas dati arī tiek ievadīti A un B. Būtībā pussummatora izvade ir divu vienbita skaitļu summa, un pārnese C.

;Pilnie summatori
:Pilnie summatori ir summatori, kuriem ir trīs ievadi — A, B un pārnese C. Ja vēlamies lielākus skaitļus sasummēt, tad savieno vairākus pilnos summatorus. Lai novērstu neskaidrības un kļūdas starp ievada un izvada pārneses līnijām, tiek lietoti apzīmējumi Cin vai Ci, kas apzīmē pārneses ievadu, un ar Co vai Cout tiek apzīmēts pārneses izvads.

### Pussummators

right|frame|Pussumators ar diviem ievadiem A un B, un izvadiem S un C

Pussummators ir loģiskā shēma, kura veic summēšanas operācijas ar diviem binārajiem cipariem. Pussummators veido summu un pārneses vērtību, kuri abi arī ir binārie cipari.

Izvada funkcijas ir šādas:
:S = A \oplus B
:C = A \cdot B

Zemāk ir dota pussummatora patiesuma tabula.

### Pilnais summators

frame|Pilnā summatora shēma<br /> '''Ievadi: {A, B, C<sub>in</sub>} → Izvadi: {S, C<sub>out</sub>}'''

Pilnais summators ir loģiskā shēma, kura veic summēšanas operācijas ar trim binārajiem cipariem. Pilnais summators veido summu un pārnese vērtību, kuri arī ir binārie cipari. To var kombinēt ar citiem pilnajiem summatoriem, tā veidojot sarežģītākas shēmas ar sarežģītāku funkcionalitāti. Vienas kārtas pilnais summators saskaita divu skaitļu attiecīgās kārtas, pieskaita pārnesi no jaunākās kārtas un formē pārneses signālu uz nākamo — vecāko kārtu.

Izvada funkcijas ir šādas:
:S = (A \oplus B) \oplus C_\text{in}
:C_\text{out} = (A \cdot B) + (C_\text{in} \cdot (A \oplus B)) = (A \cdot B) + (C_\text{in} \cdot B) + (C_\text{in} \cdot A)

Patiesuma tabula pilnajam summatoram ir šāda:

Pēdējais OR elements pirms pārneses izvada var būt aizvietots arī ar XOR shēmu, tā neizmainot rezultātu. Tas ir tādēļ, ka vienīgā atšķirība starp OR un XOR shēmām ir gadījumā, kad abas izejas ir 1, bet šajā summatorā tas nekad nav iespējams. Lietojot divus elementus, ir ērtāk, ja pēc tam shēma tiek īstenota, izmantojot integrālās mikroshēmas.

## Vairāku bitu summatori

### Summators ar virknes pārnesi

none|frame|Summators ar virknes pārnesi

Ir iespējams izveidot loģisko shēmu, izmantojot vairākas pilnā summatora shēmas, lai varētu sasummēt *n* bitu skaitļus. Tādas shēmas sauc par summatoru ar virknes pārnesi. Katra pilnā summatora Cin ir vienlaicīgi iepriekšējā summatora Cout. Šajā gadījumā pirmo (un tikai pirmo) pilno summatoru var aizstāt ar pussummatoru.

Izkārtojums summatoram ar virknes pārnesi ir vienkāršs, līdz ar to tiek ieekonomēts laiks projektēšanā, taču šis summators ir samērā lēns, jo katram pilnajam summatoram ir jāgaida pārneses bits, kurš tiek aprēķināts iepriekšējā summatorā. Aizkavi var viegli aprēķināt, apskatoties viena pilnā summatora ķēdes ātrumu, un pēc tam izrēķinot aizkavi, ņemot vērā iepriekšējo summatoru darbības laiku.

Pieņemsim, ka ir dots summators ar virknes pārnesi un tam ir laika aizture *t*s, kas vienāda ar kārtu skaitu *n* un laika aiztures katras *t*a reizinājumu: *t*s = *n* · *t*a. Paralēlā summatora ātrdarbību var palielināt, izmantojot paralēlo pārneses formēšanas principu. Šādās shēmās pārnesumu formē speciālas loģiskās shēmas visās kārtās vienlaicīgi. Sarežģītības dēļ tādas shēmas nevar izmantot vairāk kā 6-8 kārtu skaitļu summēšanai.

### Summatori ar paredzētu pārnesi

Lai samazinātu aprēķina laiku, inženieri izgudroja ātrāku veidu, kā sasummēt divus binārus skaitļus, lietojot summatorus ar paredzētu pārnesi. Tie strādā, radot divus signālus (P un G) katram bitu stāvoklim. Vairumā gadījumu, P ir vienkāršs pussummatora summas izvads un G ir pārneses izvads tajā pašā summatorā. Kā piemēru, var minēt tādus summatorus, kā Manchester pārneses ķēde un Brenta-Kunga summators.

Citos vairākbitu summatoru arhitektūru veidos, summatori tiek saglabāti blokos. Ir iespējams mainīt bloku lielumus, pamatojoties uz aizkaves samazināšanu ķēdē.

Vēl ir iespējami dažādi vairākbitu summatoru arhitektūras veidi. Piemēram, citi veidi iekļauj ķēdēs nosacītās summas summatorus, summatorus ar pārlēciena pārnesi un summatorus ar pilnīgo pārnesi.

### Ierīce ar paredzētu pārnesi

Apvienojot vairākus iepriekšējos summatorus, var izveidot vēl lielāku summatoru. To var izmantot dažādos līmeņos, lai varētu veidot vēl lielākus un sarežģītākus summatorus. Piemēram, nākamajā zīmējumā ir 64 bitu summators, kurš lieto 16 bitu CLA ar diviem līmeņiem LCU.

none|framed|64-bitu ierīce ar paredzētu pārnesi

### 3:2 Kompresori

Pilno summatoru var apskatīt arī kā 3:2 kompresoru. Tas summē trīs viena bita ievadus un atgriež rezultātu, kurš sastāv no viena divu bita skaitļa. Piemēram, ja pirmajā ievadā ir 1, otrajā ievadā ir 0 un trešajā ievadā ir 1, tad izvadā būs 1 + 0 + 1 = 10 (2 biti). Pārneses bits ir viens no rezultātiem, kamēr summas bits ir 0. Līdzīgi varam rīkoties ar pussummatoru, bet tad tiks iegūts 2:2 kompresors.

3:2 kompresoru var izmantot, lai paātrinātu trīs un vairāku saskaitāmo summēšanu. Ja saskaitāmie ir tieši trīs, tad shēma ir tieši tāda kā summatoram ar saglabāto pārnesi. Ja saskaitāmie ir četri vai vairāk, tad ir nepieciešami vairāk kā viens kompresors un tie var būt vairākos iespējamos veidos. Visbiežāk izmantotie ir Dadda un Wallace koki. Šāda veida shēmās, galvenokārt, lieto multipleksorus, tādēļ arī šīs shēmas tiek sauktas par Dadda un Wallace multipleksoriem.

## Atsauces