Sumator (układ logiczny)

1-bitowy pełny sumator uzyskany za pomocą dwóch półpełnych sumatorów.
półpełny sumator.
Pełny sumator 1-bitowy.

Sumatorcyfrowy układ kombinacyjny, który wykonuje operacje dodawania dwóch (lub więcej) liczb dwójkowych. Sumatory można podzielić na:

  1. szeregowe (ang. serial adder): podczas każdej operacji dodają one dwa bity składników oraz bit przeniesienia;
  2. równoległe (ang. parallel adder): wielopozycyjne, dodają do siebie jednocześnie bity ze wszystkich pozycji, a przeniesienie realizowane jest w zależności od sposobu połączenia sumatorów jednobitowych. Każdy sumator charakteryzuje się typem ukończenia:
    1. Sumator pełny (ang. full adder)
    2. Sumator półpełny (ang. half adder).

Każdy pełny sumator pełny składa się z dwóch sumatorów półpełnych.

Sumatory równoległe z kolei obejmują dwie grupy:

  1. z przeniesieniami szeregowymi (ang. ripple-carry adder),
  2. z przeniesieniami równoległymi (ang. carry look-ahead adder).

Teoria

Tablica prawdy dla sumatora półpełnego i 1-bitowego sumatora pełnego:

Wejścia Wyjścia
a i {\displaystyle a_{i}} b i {\displaystyle b_{i}} c i {\displaystyle c_{i}} s i {\displaystyle s_{i}}
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Wejścia Wyjścia
a i {\displaystyle a_{i}} b i {\displaystyle b_{i}} c i 1 {\displaystyle c_{i-1}} c i {\displaystyle c_{i}} s i {\displaystyle s_{i}}
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

gdzie:

  • a i {\displaystyle a_{i}} – pierwszy składnik sumy,
  • b i {\displaystyle b_{i}} – drugi składnik sumy,
  • c i 1 {\displaystyle c_{i-1}} – przeniesienie z poprzedniej pozycji,
  • s i {\displaystyle s_{i}} – suma,
  • c i {\displaystyle c_{i}} – przeniesienie.

Wyrażenia boolowskie opisujące sumę i przeniesienie:

s i = c i 1 a i b i , {\displaystyle s_{i}=c_{i-1}\oplus a_{i}\oplus b_{i},}
c i = a i b i + c i 1 ( a i b i ) . {\displaystyle c_{i}=a_{i}b_{i}+c_{i-1}(a_{i}\oplus b_{i}).}

Wprowadza się jeszcze oznaczenia:

g i = a i b i {\displaystyle g_{i}=a_{i}b_{i}} – grupa generacyjna,
p i = a i b i {\displaystyle p_{i}=a_{i}\oplus b_{i}} – grupa propagacyjna.

Można wówczas zapisać przeniesienie:

c i = g i + c i 1 p i . {\displaystyle 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 {\displaystyle s_{i}} i c i . {\displaystyle c_{i}.} Bloki są połączone kaskadowo (ang. ripple), tzn. wyjście c i {\displaystyle c_{i}} jest łączone z wejściem c i + 1 {\displaystyle c_{i+1}} bloku następnego.

Aby na przykład otrzymać bit sumy s 4 , {\displaystyle s_{4},} uprzednio muszą zostać wyznaczone sygnały przeniesień c 1 , {\displaystyle c_{1},} c 2 {\displaystyle c_{2}} oraz c 3 , {\displaystyle c_{3},} ponieważ c 3 {\displaystyle c_{3}} zależy od c 2 , {\displaystyle c_{2},} a ten zależy od c 1 . {\displaystyle c_{1}.} Czas otrzymania ostatecznego wyniku jest więc ograniczony od dołu przez n {\displaystyle n} × czas generacji przeniesienia c , {\displaystyle c,} gdzie n {\displaystyle n} to liczba elementarnych bloków, z których zbudowanych jest sumator.

Sumator z przeniesieniami równoległymi

W sumatorze z przeniesieniami równoległymi bity przeniesień są wyznaczane równolegle. Wyrażenia opisujące c i {\displaystyle c_{i}} są rekursywnie rozwijane, tzn. występujący w nich składnik c i 1 {\displaystyle c_{i-1}} jest zastępowany stosownym wyrażeniem, np.:

c 0 = const , {\displaystyle c_{0}={\textrm {const}},}
c 1 = g 1 + c 1 1 p 1 = g 1 + c 0 p 1 , {\displaystyle 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 2 = g 2 + ( g 1 + c 0 p 1 ) p 2 . {\displaystyle c_{2}=g_{2}+c_{2-1}p_{2}=g_{2}+c_{1}p_{2}=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 {\displaystyle s_{i}} oraz grup generacyjnych g i {\displaystyle g_{i}} i propagacyjnych p i {\displaystyle 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 i obwodów elektrycznych bloku nr 2).

Sumator z przeniesieniami równoległymi jest ok. 20–40% szybszy niż sumator z przeniesieniami szeregowymi.

Zobacz też

  • bramka logiczna
  • subtraktor
Encyklopedia internetowa (jednostka arytmetyczno-logiczna):
  • Catalana: 0212104