Mateusz Macięga

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

2. Układ mnożący

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