Informatyka
Grupa 11
Laboratorium Technik Cyfrowych
nr 6 – układy arytmetyczne
Układami arytmetycznymi nazywa się układy, umożliwiające wykonywanie
operacji arytmetycznych na liczbach, przedstawionych w zapisie dwójkowym.
Ponieważ
wszystkie
podstawowe
działania
arytmetyczne:
dodawanie,
odejmowanie, mnożenie i dzielenie, a także wszystkie inne operacje
matematyczne, wykonać można przy zastosowaniu odpowiednich algorytmów
za
pomocą
jednego
tylko
działania
arytmetycznego
-
dodawania,
podstawowym układem arytmetycznym jest układ, realizujący dodawanie,
nazywany sumatorem. Do układów arytmetycznych zalicza się ponadto układy
do porównywania dwu liczb, nazywane komparatorami oraz uniwersalne układy
arytmetyczno - logiczne, realizujące rożne operacje arytmetyczne i logiczne.
1. Sumator
Dodawanie przebiega w tylu krokach, ile cyfr mają dodawane liczby. Długość liczby krótszej możemy zrównać z długością liczby dłuższej, dopisując przed nią odpowiednią ilość zer. W pierwszym kroku dodajemy do siebie dwie cyfry występujące na najmniej znaczącej pozycji liczb. W każdym następnym kroku
dodajemy trzy cyfry: dwie cyfry występujące na danej pozycji sumowanych
liczb oraz przeniesienie z poprzedniej, niższej pozycji; tzn. cyfrę 1, jeśli przeniesienie wystąpiło, albo cyfrę 0, jeśli przeniesienie nie wystąpiło. Także pierwszy krok możemy traktować jako dodanie trzech cyfr, z tym, że tu cyfra
„przeniesienia z niższej pozycji” zawsze ma wartość 0.
W każdym kroku otrzymujemy dwie nowe cyfry: „wynik”, który zostanie
zapisany na danej pozycji oraz przeniesienie, które zostanie dodane do sumy cyfr znajdujących się na kolejnej, bardziej znaczącej pozycji albo – gdy długość
wyniku przekracza długość dodawanych cyfr – zostanie zapisane na wyższej
pozycji.
Układ sumujący dwie liczby mógłby więc mieć postać łańcucha złożonego z
wielu identycznych sumatorów elementarnych. W każdym sumatorze
elementarnym byłyby sumowane trzy cyfry: dwie cyfry występujące się na tej
samej pozycji liczb dodawanych oraz cyfra przeniesienia z niższej pozycji.
Każdy sumator elementarny powinien posiadać trzy wejścia do podania na nie
stanów reprezentujących trzy sumowane cyfry. Sumatorów elementarnych
powinno być co najmniej tyle, ile cyfr zawierają sumowane liczby. Na jedno z wejść (konkretnie na wejście przeznaczone do podania na nie cyfry
przeniesienia) w sumatorze elementarnym dodającym cyfry występujące na
najmniej znaczącej pozycji powinna być stale podawana cyfra 0.
Oczywiście sumator elementarny dodający cyfry występujące na najmniej
znaczącej pozycji może mieć inną (prostszą) budowę, niż pozostałe sumatory
elementarne, gdyż może posiadać tylko dwa wejścia.
1
1. Sumator połówkowy (półsumator)
Układ kombinacyjny dodający dwie cyfry dwójkowe
jest nazywany półsumatorem (ang. Half Adder).
Wynik dodawania dwóch liczb jednobitowych w
ogólnym przypadku jest liczbą dwubitową (np. 1
B+1 B = 10 B). Zmiennymi wejściowymi
półsumatora są bity składników (A, B). Zmiennymi
wyjściowymi są bity sumy S i przeniesienia C
Symbol półsumatora
(bardziej znaczący bit wyniku). Sieć (rys. 5) i tablica prawdy dla półsumatora
są przedstawione poniżej.
Wejścia
Wyjścia
A
B
C
S
0
0
0
0
0
1
0
1
1
0
0
1
1
1
1
0
Z tablicy prawdy półsumatora otrzymujemy następujące funkcje logiczne:
S(A,B) = ∑(1,2) = (NOT A AND B) OR (A AND NOT B) = A XOR B
C(A,B) = ∑(3) = A AND B
2
2. Sumator pełny
o 2 słowa 1 bitowe,
Układ kombinacyjny dodający trzy cyfry
dwójkowe
jest
nazywany
sumatorem
pełnym (ang. Full Adder). Ma trzy wejścia.
Dwie ze zmiennych wejściowych (A, B)
reprezentują bity składników sumy. Trzecie
wejście (C1) reprezentuje przeniesienie z
poprzedniej,
mniej
znaczącej
pozycji.
Zmiennymi wyjściowymi są bity sumy S i przeniesienia C. Tablica prawdy
dla sumatora pełnego jest przedstawiona w tabeli poniżej.
Wejścia
Wyjścia
A
B
C1
C
S
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
Z tablicy prawdy sumatora pełnego otrzymujemy następujące funkcje
logiczne:
S(A,B,C1) = ∑(1,2,4,7)
C(A,B,C1) = ∑(3,5,6,7)
Funkcji s( x, y, z) nie można zminimalizować. Zatem
S(A,B,C1) = ∑(1,2,4,7) = (NOT A AND NOT B AND C1) OR (NOT A AND
B AND NOT C1) OR (A AND NOT B AND NOT C1) OR (A AND B AND C1)
Minimalizując funkcję c( x, y, z) otrzymujemy:
C(A,B,C1) = (A AND C1) OR (B AND C1) OR (A AND B)
3
Na podstawie otrzymanych funkcji S(A, B, C1) oraz C(A, B, C1) rysujemy
schemat logiczny sumatora.
o 2 słowa 2 bitowe,
W celu dodawania liczb wielobitowych sumatory jednobitowe łączy się w
większe zespoły. W najprostszym przypadku tworzy się kaskadę
sumatorów z szeregowo połączonymi wejściami i wyjściami przeniesień
(z tzw. przeniesieniami szeregowymi). Wadą takiego połączenia jest
ustalanie wyniku n-tego sumatora dopiero po ustaleniu kolejnych stanów
wszystkich poprzedzających sumatorów, co opóźnia otrzymanie wyniku.
Lepszym rozwiązaniem jest wstępne wyznaczenie wszystkich przeniesień
na podstawie wartości liczb wejściowych A i B przez tzw. blok generacji
przeniesień i następnie jednoczesne dodanie bitów na wszystkich
pozycjach przez zespół sumatorów. Układy takie nazywane są
sumatorami z przeniesieniami równoległymi (ang. look ahead).
Aby uzyskać sumator 2 słów 2 bitowych należy połączyć równolegle dwa
sumatory tak jak na poniższym schemacie.
Poniżej przedstawia tabelę prawdy dla sumatora 2 słów 2 bitowych.
4
Wejścia
Wyjścia
A1
A0
B1
B0
C
S1
S0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
1
0
0
1
0
0
0
1
1
0
1
1
0
1
0
0
0
0
1
0
1
0
1
0
1
0
0
1
1
0
0
1
1
0
1
1
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
0
1
1
1
0
1
0
1
0
0
1
0
1
1
1
0
1
1
1
0
0
0
1
1
1
1
0
1
1
0
0
1
1
1
0
1
0
1
1
1
1
1
1
1
0
5
Moim zdaniem jest stworzenie jednostki arytmetyczno-logicznej, mnożącą dwie
liczby binarne dwubitowe.
Jednostka arytmetyczno-logiczna (ang. ALU - arithmetic and logical unit) to
jedna z głównych części procesora, prowadząca proste operacje na liczbach
całkowitych.
Typowe ALU ma dwa wejścia odpowiadające parze argumentów i jedno wyjście
na wynik. Operacje jakie prowadzi to:
o operacje logiczne AND, OR, NOT, XOR
o dodawanie
o często też, odejmowanie, negacja liczby, dodawanie z przeniesieniem,
zwiększanie/zmniejszanie o 1
o przesunięcia bitowe o stałą liczbę bitów, czasem też o zmienną liczbę
o dość często mnożenie i czasem dzielenie/modulo
Przyczyną dla której operacje te grupuje się w ALU jest to, że bramek
logicznych potrzebnych do zaimplementowania wszystkich operacji z zestawu:
dodawanie (z przeniesieniem i bez), odejmowanie (z przeniesieniem i bez),
negacja liczby zwiększanie i zmniejszanie o 1, AND, OR, NOT, XOR jest niewiele
trudniejsze od zaimplementowania samego dodawania. Mnożenie jest już
droższe, a dzielenie jest bardzo drogie w porównaniu do tych operacji.
Poniżej przedstawiam tabele prawdy dla tego układu.
Wejścia
Wyjścia
A1
A0
B1
B0
S4
S3
S2
S1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
1
0
0
0
1
0
1
1
0
0
0
1
0
0
1
1
1
0
0
1
1
1
0
0
0
0
0
0
0
1
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
0
1
0
0
1
1
1
1
1
0
0
1
1
0
1
1
1
1
1
0
0
0
6
3. Podsumowanie
Korzystając z bramek logicznych możemy stworzyć układy arytmetyczne
przeprowadzające na liczbach w kodzie dwójkowym takie operacji jak:
dodawanie, odejmowanie, mnożenie i dzielenie.
Dostępne układy:
o Sumatory są układami dodającymi dwie liczby binarne.
o Subtraktory są układami realizującymi odejmowanie dwóch liczb
binarnych.
o Komparator realizuje operację porównania.
o Jednostką Arytmetyczno-Logiczną (ALU) nazywamy uniwersalny układ
cyfrowy przeznaczony do wykonania operacji arytmetycznych i
logicznych.
Układy te mają szerokie zastosowanie we współczesnej informatyce.
7