Wstęp

Sumator jest cyfrowym układem kombinacyjnym, który wykonuje operacje dodawnia dwóch (lub więcej) liczb dwójkowych.
Rozróżnia się dwa główne rodzaje sumatorów:
  • z przeniesieniami szeregowymi (ang. ripple-carry adder)
  • z przeniesieniami równoległymi (ang. carry look-ahead adder)

Teoria

Tabelka dodawnia dwóch liczb dwójkowych przedstawia się następująco:
ai bi ci-1 si ci
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1

gdzie:
  • ai -- pierwszy składnik sumy
  • bi -- drugi składnik sumy
  • ci-1 -- przeniesienie z poprzedniej pozycji
  • si -- suma
  • ci -- przeniesienie
Wyrażenia boolowskie opisujące sumę i przeniesienie:
 \[s_i = c_{i-1} \oplus a_i \oplus b_i \]
 \[c_i = a_i b_i + c_{i-1} (a_i + b_i) \]

Wprowadza się jeszcze oznaczenia:
 \[g_i = a_i b_i \] -- grupa generacyjna
 \[p_i = a_i + b_i \] -- grupa propagacyjna

Można wówczas zapisać:
 \[s_i = c_{i-1} \oplus p_i \]
 \[c_i = g_i + c_{i-1} p_i \]

Sumator z przeniesieniami szeregowymi

Sumator ten zbudowany jest z bloków funkcjonalnych, które realizują funkcje \[s_i \] i \[c_i \]. Bloki są połączone kaskasowo (ripple), tzn. wyjście \[c_i \] jest łączone z wejściem \[c_{i-1} \] bloku następnego.
Aby np. otrzymać bit sumy \[s_4 \] uprzednio muszą zostać wyznaczone sygnały przeniesień \[c_1 \], \[c_2 \] oraz \[c_3 \] (\[c_3 \] zależy od \[c_2 \], a ten zależy od \[c_1 \]).
Czas otrzymania ostatecznego wyniku jest więc ograniczony do dołu przez \[n \cdot \textrm{czas\ generacji\ przeniesienia\ c} \], gdzie \[n \] to liczba elementarnych bloków z których zbudowanych jest sumator.

Sumator z przeniesieniami równoległymi

W sumatorze przeniesieniami równoległymi bity przeniesień są wyznaczane równolegle. Wyrażenia opisujące \[c_i \] są [1] rozwijane, tzn. występujęce w nim składnik \[c_{i-1} \] jest zastępowany stosownym wyrażeniem, np.:
 \[c_0 = \textrm{const} \]
 \[c_1 = g_1 + c_{1-1} p_1 = g_1 + c_0 p_1 \]
 \[c_2 = g_2 + c_{2-1} p_2 = g_2 + c_1 p_1 = g_2 (g_1 + c_0 p_1) p_2 \]

Układ buduje się z dwóch głównych części:
  1. bloków wyznaczających sumę \[s_i \] oraz grupy generacyjne \[g_i \] i propagacyjne \[p_i \] (które są liczone niezależnie!)
  2. bloku generującego przeniesienia, zgodnie z rozwiniętymi wyrażeniami
W praktyce buduje się 4-bitowe sumatory tego typu, ze względu na znaczne skomplikowanie wyrażeń (a więc obwodów elektrycznych bloku nr 2).
Sumator z przeniesieniami równoległymi jest ok. 20-40% szybszy niż sumator z przeniesieniami szeregowymi
Publikacja wraz ze zdjęciami jest udostępniona w Encyklopedii "Zgapedia" części portalu zgapa.pl. Treść objęta jest licencją GNU FDL Wolnej Dokumentacji w wersji 1.3 lub dowolnej pózniejszej opublikowanej przez Free Software Foundation i została ona opracowana na podstawie Wikipedii, tutaj możesz znaleźć artykuł źródłowy oraz autorów. Warunki użytkowania Encyklopedii znajdziesz na tej stronie.
Prezentowane filmy poczhodzą z serwisu YouTube, portal zgapa.pl nie jest ich autorem i nie ponosi odpowiedzialności za ich treści.