ukl arytm I(TAK5)


Temat:
Zapisy liczbowe, operacje i układy arytmetyczno-logiczne.
Treść wykładu:
1. Reprezentacja informacji w komputerach
2. Zapisy liczbowe
2.1 Zapisy pozycyjne liczb całkowitych dodatnich
2.2 Konwersja dziesiętnych liczb całkowitych na liczby o podstawie p
2.3 Zapisy binarne liczb całkowitych dodatnich i ujemnych
2.4 Zmiana znaku liczby w zapisie uzupełnień do 2
2.5 Zapis dziesiętny kodowany dwójkowo
3. Operacje arytmetyczne
3.1 Zasady dodawania (odejmowania) liczb binarnych
3.2 Sumatory i subtraktory binarne
3.3 Inne kombinacyjne układy arytmetyczne
Reprezentacja informacji w komputerach
We współczesnych komputerach stosowana jest głównie binarna reprezentacja
(kodowanie) informacji.
Podstawowe jednostki zapisu informacji to : bity, bajty, słowa.
Bajt zawiera 8 bitów.
Słowo stanowi większa liczbę bitów, przeważnie ustalona przez długość rejestrów
służących do obliczeń stałoprzecinkowych.
Długość słowa jest zwykle wielokrotnością bajtów, aby umożliwić fizyczne
adresowanie pamięci w bajtach.
W słowie zawierającym n bitów można zapisać 2 n kombinacji bitów, a więc można
zakodować 2 n informacji.
Kod ASCII (od American Standard Code for Information Interchange) opracowany
przez American Association for Information Interchange w USA.
Jest to standardowy kod używany w komputerach do kodowania w bajtach:
" znaków alfanumerycznych (litery i cyfry) (7 bitów),
" symboli specjalnych ( +, - =, ! ? itp) (7 bitów),
" znaków sterujących: zmiana linii, powrót karetki, początek tekstu, koniec tekstu,
itp. (7 bitów),
" specjalnych znaków graficznych (8 bitów).
Dla kodów 7 bitowych dodaje się 8-my bit tzw. bit parzystości (ang. parity bit)
(kontrola poprawności transmisji).
Oprócz kodu ASCI firma IBM stosuje własny kod EBCDID.
Trwają prace nad 32-bitowym kodem ISO 10664 oraz 16-bitowym kodem Unicode.
DziesiętnieSzesnastkowoZnakSzerokość Dziesiętnie SzesnastkowoZnakSzerokość
32 20 SP 12 64 40 @ 12
33 21 ! 5 65 41 A 12
34 22  8 66 42 B 12
35 23 # 12 67 43 C 12
36 24 $ 12 68 44 D 12
37 25 % 12 69 45 E 12
38 26 & 12 70 46 F 12
39 27  5 71 47 G 12
40 28 ( 6 72 48 H 12
41 29 ) 6 73 49 I 8
42 2A * 12 74 4A J 11
43 2B + 12 75 4B K 12
44 2C , 7 76 4C L 12
45 2D - 12 77 4D M 12
46 2E . 6 78 4E N 12
47 2F / 10 79 4F O 12
48 30 0 12 80 50 P 12
49 31 1 8 81 51 Q 12
50 32 2 12 82 52 R 12
51 33 3 12 83 53 S 12
52 34 4 12 84 54 T 12
53 35 5 12 85 55 U 12
54 36 6 12 86 56 V 12
55 37 7 12 87 57 W 12
56 38 8 12 88 58 X 10
57 39 9 12 89 59 Y 12
58 3A : 6 90 5A Z 10
59 3B ; 6 91 5B [ 8
60 3C < 10 92 5C \ 10
61 3D = 12 93 5D ] 8
62 3E > 10 94 5E ^ 12
63 3F ? 12 95 5F 12
Dziesiętnie SzesnastkowoZnak szerokość DziesiętnieSzesnastkowo Znakszerokość
96 60 ` 5 112 70 p 11
97 61 a 12 113 71 q 11
98 62 b 11 114 72 r 11
99 63 c 11 115 73 s 12
100 64 d 11 116 74 t 11
101 65 e 12 117 75 u 12
102 66 f 10 118 76 v 12
103 67 g 11 119 77 w 12
104 68 h 11 120 78 x 10
105 69 i 8 121 79 y 12
106 6A j 9 122 7A z 10
107 6B k 10 123 7B { 9
108 6C l 8 124 7C | 5
109 6D m 12 125 7D } 9
110 6E n 11 126 7E   12
111 6F o 12 127 7F DEL
Dziesiętnie Szesnastkowo  italic character Symbol graficzny Szerokość
128 80 NUL
12
129 81 SOH
11
130 82 STX
12
131 83 ETX
12
132 84 EOT
12
133 85 ENQ ą
12
134 86 ACK
12
135 87 BEL
11
136 88 BS ę
12
137 89 HT
12
138 8A LF Ł
12
139 8B VT
8
140 8C FF
10
141 8D CR
8
142 8E SO
12
143 8F SI
12
144 90 DLE
12
145 91 DC1 ć
12
146 92 DC2 Ć
12
147 93 DC2
10
148 94 DC4
10
149 95 NAK
10
Zapisy liczbowe
Zapisy (systemy) liczbowe składają się z sekwencji (ciągu) cyfr .
Wyróżniamy:
" Zapisy niepozycyjne - znaczenie cyfry jest stałe (zapis rzymski).
" Zapisy pozycyjne - znaczenie cyfry zależy od miejsca cyfry w zapisie liczby
(zapisy używane w komputerach).
Zapisy pozycyjne liczb całkowitych dodatnich
W zapisie pozycyjnym z pozycjami związane są wagi (rzędy).
Wagi są ustawione w porządku rosnącym od najmniej znaczącej pozycji do tzw
pozycji najbardziej znaczącej.
Pozycja najmniej znacząca jest zwykle po prawej stronie zapisu.
Kolejne wagi są kolejnymi potęgami (o wykładniku całkowitym) tzw. podstawy
zapisu p.
Cyfry na wszystkich pozycjach mogą mieć wartości od 0 do p-1.
Jeśli liczba A jest zapisana w potęgowym zapisie w postaci ciągu cyfr
a7, a6, a5, a4, a3, a2, a1, a0 oraz podstawą zapisu jest liczba p,
to kolejnym pozycjom zapisu odpowiadają wagi p7, p6, p5, p4, p3, p2, p1, p0.
Wartość liczby A wylicza się w sposób następujący:
A = a7 p7 + a6 p6 + ... + a1 p1 + a0 p0
W stosowanych powszechnie w komputerach zapisach, liczba p może mieć wartość 2,
8, 10, 16.
Mówimy wtedy odpowiednio o zapisie:
" dwójkowym (binarnym) (ang. binary),
" ósemkowym (oktalnym) (ang. octal),
" dziesiętnym (decymalnym) (ang. decimal),
" szesnastkowym (heksadecymalnym) (ang. hexadecdimal).
Zapis binarny
Liczby zapisane są przy pomocy cyfr 0 lub 1
Zapis ósemkowy
Liczby zapisane są przy pomocy cyfr od 0 do 7.
Cyfry mogą być zapisane cyframi dziesiętnymi lub binarnymi.
Zapis szesnastkowy (heksadecymalny)
Liczby zapisane są przy pomocy cyfr od 0 do 7 i kolejnych liter od A do F.
Cyfry mogą być też zapisane cyframi binarnymi.
Kod.
Kod dziesiętny Kod ósemkowy Kod szesnastkowy
dwójkowy
0 0 0 0
1 1 1 1
2 2
10 2
3 3 3
11
4 4
4 100
5 5 5
101
6 6 6
110
7 7 7
111
8 8
1000 10
9 9
1001 11
A
10 1010 12
B
11 1011 13
C
12 1100 14
D
13 1101 15
E
14 1110 16
F
17
15 1111
16 10000 20 10
Kod.
Kod dziesiętny Kod ósemkowy Kod szesnastkowy
dwójkowy
20 10100 24 14
21 10101 25 15
31 11111 37 1F
32 100000 40 20
40 101000 50 28
50 110010 62 32
60 111100 74 3C
63 111111 77 3F
64 1000000 100 40
70 1000110 106 46
100 1100100 144. 64
127 1111111 177 7F
128 10000000 200 80
200 11001000 310 CB
255 11111111 377 FF
256 100000000 400 100
1000 1111101000 1750 3E8
1023 1111111111 1777 3FF
1024 10000000000 2000 400
Konwersja dziesiętnych liczb całkowitych na liczby o podstawie p
Mamy daną całkowitą liczbę dziesiętną L.
Równoważną liczbę w zapisie pozycyjnym o podstawie p znajdujemy przez iteracyjne
dzielenie przez liczbę p liczby L oraz części całkowitych uzyskanych z kolejnych
dzieleń. Iteracyjne dzielenia prowadzi się dotąd aż część całkowita z dzielenia osiągnie
wartość 0.
Kolejne cyfry zapisu liczby w systemie o podstawie p
B = (bnbn-1 Lb1b0 )
p
otrzymuje się jak podano poniżej:
Zgodnie ze wzorem:
L b0
= a0 +
p p
otrzymujemy pierwsza cyfrę zapisu b0 d" p -1 oraz część całkowitą a0.
Część całkowitą a dzielimy znowu przez p, otrzymując druga cyfrę zapisu b1 oraz
0
część całkowitą a1, itd.
a0 b1
= a1 +
p p
a1 b2
= a2 +
p p
M
an-1 bn
= 0 +
p p
Przykład
Konwersja liczby dziesiętnej 43 na zapis binarny:
43 1
= 21+ b0 = 1
2 2
21 1
= 10 + b1 = 1
2 2
10 0
= 5 + b2 = 0
2 2
5 1
= 2 + b3 = 1
2 2
2 0
= 1+ b4 = 0
2 2
1 1
= 0 + b5 = 1
2 2
4310 = 1010112
Zapisy binarne liczb całkowitych dodatnich i ujemnych
Zapis znak moduł
Najbardziej znaczący bit w liczbie jest bitem znaku (bez wartości liczbowej): 0 - znak
dodatni, 1 - znak ujemny.
Reszta bitów jest traktowana jak w zapisie liczby dodatniej.
Zero jest reprezentowane przez 10000000...0 lub 0000000000...0.
Zapis ten jest niewygodny dla realizacji operacji arytmetycznych.
+127 = 01111111 = 1 x 26 + 1 x 25 + 1 x 24 + 1 x 23 + 1 x 22 + + 1 x 21 + 1 x 20
-127 = 11111111= - 1 x 26 - 1 x 25 - 1 x 24 - 1 x 23 - 1 x 22 - - 1 x 21 - 1 x 20
Zapis uzupełnień do 2
Wygodny dla operacji arytmetycznych:
" dodawanie i odejmowanie wykonuje się w jednolity sposób,
" jest jedna reprezentacja zera.
Najbardziej znaczący bit w skrócie (bit znaku) koduje znak liczby, ale posiada
wartość liczbową uwzględnianą przy wyliczeniu wartości zapisanej liczby.
Bit znaku ma wagę ujemną zależną od długości zapisu liczby.
Jeśli liczba ma n bitów, to waga najbardziej znaczącego bitu wynosi - 2 n-1
Bit 0 oznacza liczbę dodatnią, bit 1 oznacza liczbę ujemną.
Przykłady zapisu:
+127 = 01111111 =
=- 0 x 27 + 1 x 26 + 1 x 25 + 1 x 24 + 1 x 23 + 1 x 22 + 1 x 21 + 1 x 20
-127 = 10000001 =
=- 1 x 27 + 0 x 26 + 0 x 25 + 0 x 24 + 0 x 23 + 0 x 22 +
+ 0 x 21 + 1 x 20
Zapisy liczb w kodzie uzupełnień do 2 (U2) oraz szesnastkowym (HEX)
Liczba Liczba Liczba
dwójkowa dziesiętna dwójkowa
w kodzie U2 w kodzie HEX
10000000 -128 80
10000000 -127 81
10000000 -126 82
10000000 -125 83
...
...
...
11111110 -2 FE
11111111 -1 FF
00000000 0 0
00000001 1 1
00000010 2 2
00000011 3 3
...
...
..
Zmiana znaku liczby w zapisie uzupełnień do 2
1. Zanegować całą daną liczbę
2. Dodać (arytmetycznie , nie dopisać) liczbę zawierającą same zera z wyjątkiem 1 na
najmniej znaczącej pozycji.
3. Obliczyć wynik, który jest zapisem liczby odwrotnej.
Nazywa się to obliczeniem tzw. uzupełnienia do 2 danej liczby.
Przykłady:
Liczba +4 ma zapis 000100
Negacja 111011
Dodać 000001
Wynik 111100, co jest zapisem liczby -4
Liczba -4 ma zapis 111100
Negacja 000011
Dodać 000001
Wynik 000100, co jest zapisem liczby +4
Zapis dziesiętny kodowany dwójkowo
W zapisie dziesiętnym kodowanym dwójkowo (ang. Binary Coded Decimal - BCD)
tym kolejne cyfry zapisu dziesiętnego liczby są kodowane binarnie.
Dozwolone są kody binarne cyfr od 0 do 9.
Zapis ten jest stosowany często w kalkulatorach elektronicznych oraz w niektórych
komputerach.
Układy arytmetyczne dla tego zapisu stosują sumatory binarne cyfr na pozycjach
dziesiętnych, ale występuje problem:
" w wyniku sumowania cyfr na pozycji dziesiętnej można dostać liczby binarne
większe od 9  wtedy:
" zapis cyfry nie jest prawidłowy  przekracza zakres dopuszczalnych
reprezentacji cyfr
" nie jest generowane przeniesienie na następna pozycję dziesiętną.
Wymagana jest specjalna konstrukcja sumatorów:
" wykrywania nadmiarowych wyników częściowych
" korekcja wyników z generowaniem przeniesień.
Przykład
+127 = 0 0001 0010 0111 =
(0 x 23 + 0 x 22 + 0 x 21 + 1 x 20) x 102 + (0 x 23 + 0 x 22 + 1 x 21 + 0 x 20) x 101 +
+(0 x 23 + 1 x 22 + 1 x 21 + 1 x 20) x 100
-127 = 1 0001 0010 0111 =
- (0 x 23 + 0 x 22 + 0 x 21 + 1 x 20) x 102 - (0 x 23 + 0 x 22 + 1 x 21 + 0 x 20) x 101 -
- (0 x 23 + 1 x 22 + 1 x 21 + 1 x 20) x 100
Operacje arytmetyczne
Sumowanie (odejmowanie) liczb w zapisie znak moduł
W przypadku sumowania (odejmowania) liczb binarnych ze znakiem w zapisie znak
moduł należy:
" porównać znaki
" zgodnie ze znakami: dodawać (odejmować) moduły
" generować odpowiedni znak wyniku
Na kolejnych pozycjach binarnych, sumuje się (lub odejmuje) bity argumentów i bit
przeniesienia (pożyczki) z poprzedniej pozycji z wyznaczeniem przeniesienia
(pożyczki) na pozycję następną. Wynik operacji otrzymuje się po wykonaniu operacji
na wszystkich pozycjach argumentów.
Operacje na pozycjach bitowych wykonuje się zgodnie z tabelkami:
Dodawane bity Suma Przeniesienie
0 + 0 0 0
0 + 1 1 0
1 + 0 1 0
1 + 1 0 1
Odejmowane bity Różnica Pożyczka
0 - 0 0 0
0 - 1 1 1
1 - 0 1 0
1 - 1 0 0
W przypadku sumowania liczb o dużych modułach może wystąpić nadmiar
(przepełnienie arytmetyczne).
Wynik nie mieści się w zakresie liczb zapisywalnych na danej długości zapisu i
występuje przeniesienie poza zapis argumentów (na pozycję znaku).
Wtedy wynik nie jest prawidłowy i sygnalizowany jest błąd wykonania.
Należy zmniejszyć (przesunąć binarnie w prawo) argumenty operacji i wykonać
operację ponownie.
Przykład
Sumując liczby 010100010 (+162) i 011010001 (+209), sumujemy moduły
liczb i otrzymujemy
10100010
+11010001
(1)01110011
Mamy (-115 zamiast +371), wystąpiło przeniesienie na pozycję znaku, wynik zmienił
znak i jest nieprawidłowy.
Po przesunięciu argumentów o jedna pozycję w prawo wynik operacji będzie
prawidłowy.
Dodawanie (odejmowanie) w zapisie uzupełnień do 2
Dodawanie liczb binarnych ze znakiem w zapisie uzupełnień do 2 wykonuje się tak jak
dla liczb bez znaku tzn. traktując propagację przeniesienia na pozycję znaku jako rzecz
normalną.
Przy dodawaniu liczb ujemnych dopuszcza się jako normalne, i pomija się,
przeniesienie z pozycji znaku:
000101101 (+45) 10100110 (-58)
+000100001 (+17) +11010001 (-47)
001111110 (+62) (1)10010111 (-105)
Przy dodawaniu liczb dodatnich albo ujemnych o bardzo dużych wartościach
bezwzględnych, uzyskany wynik
może być nieprawidłowy, ze względu na wystąpienie nadmiaru, jak np.
001101101 (+61)
+010100001 (+81)
100001110 (- 114 zamiast +142, wynik zmienia znak)
10100010 (-94)
+11010001 (-47)
(1)01110011 (+115 zamiast -141), wynik zmienia znak)
Zawsze kontroluje się wystąpienie nadmiaru, przy użyciu dodatkowych testujących
układów logicznych dołączonych do sumatora.
Test nadmiaru równy 1 ustawia na 1 tzw. przerzutnik (flagę) nadmiaru procesora
i jest sygnalizowany jako błąd do systemu operacyjnego.
Odejmowanie w zapisie uzupełnień do 2
Wykonywane jest poprzez dodanie do odjemnej uzupełnienia do 2 odjemnika, czyli
dodanie zanegowanego odjemnika i liczby zawierającej jedynkę na najmniej znaczącej
pozycji:
01101101 (+109)
- 01010001 (+81)
01101101
+10101110
+ 00000001
00011100 (+28)
Sumatory i subtraktory binarne w zapisie uzupełnień do 2
Sumowanie (odejmowanie) realizuje się przez sumowanie (odejmowanie) bitów na
kolejnych pozycjach z uwzględnieniem tzw. przeniesień (pożyczek) między
pozycjami.
Sumatory(subtraktory) są budowane jako ciąg układów wykonujących operacje na
poszczególnych pozycjach, wspomaganych w pewnych przypadkach przez układy
przyspieszające generację przeniesień.
Odróżniamy:
sumatory(subtraktory) binarne i dziesiętne kodowane dwójkowo
sumatory (subtraktory) szeregowe i równoległe.
Sumatory(subtraktory) równoległe wykonują dodanie (odejmowanie) wszystkich
par cyfr równolegle.
Sumatory(subtraktory) szeregowe wykonują dodawanie (odejmowanie) kolejnych
par cyfr binarnych składników w kolejnych cyklach ,
Wśród sumatorów równoległych można wyróżnić:
sumatory(subtraktory) z przeniesieniami szeregowymi (kaskadowe),
sumatory(subtraktory) z przeniesieniami równoległymi (jednoczesnymi).
Do budowy sumatorówykorzystuje się półsumatory i sumatory 1 bitowe (sumatory
elementarne).
Półsumator realizuje sumę dwu bitów na danej pozycji i generuje przeniesienie na
następną pozycję.
Sumator 1-bitowy (sumator elementarny) sumuje 3 elementy: dwa bity na danej
pozycji i przeniesienie z poprzedniej pozycji.
Sumator elementarny można zbudować przy użyciu dwu półsumatorów.
Stopień sumatora elementarnego zbudowany z dwu półsumatorów
Ai Bi
Ai Bi
Ci+1 PS
Si
C'i+1
Ci
Ci+1
S'i
C''i+1 Ai Bi
Ci+1 PS
Si
Si
Sumatory kaskadowe stanowią kaskadowe połączenie sumatorów elementarnych ,w
którym przeniesienie z poprzedniego stopnia jest przekazywane do stopnia następnego.
Występuje znaczne opóznienie związane z propagacją przeniesień przez wszystkie
stopnie sumatora.
Wynik operacji w sumatorach kaskadowych może być odczytany dopiero po
upłynięciu okresu czasu, odpowiadającego najbardziej niekorzystnej sytuacji tzn.
propagacji przeniesienia równego 1 przez wszystkie stopnie sumatora.
Dla długich argumentów, to opóznienie może być wielokrotnie większe niż czas
działania w pojedyńczym stopniu sumatora.
Schemat sumatora kaskadowego w zapisie U2
B 3 B 2 B 1 B 0
A 3 A 2 A 1 A 0
C 2
C 3 C
1
SUM SUM SUM SUM 0
S S 1
C 4 S 2
S
3
0
Zaleta zapisu uzupełnień do 2:
Dla odejmowania w zapisie uzupełnień do 2 wykorzystuje się te same sumatory co do
dododawania, z argumentami przekształconymi w bardzo prosty sposób:
" na jedno wejście sumatora podaje się odjemną,
" na drugie wejście sumatora podaje się zanegowany odjemnik
" na wejście przeniesienia stopnia z najmniej znaczącą wagą podaje się wartość 1.
Wynik (Ri) pojawia się na wyjściu sumatora po całkowitym zakończeniu procesu
propagacji przeniesień.
Schemat kaskadowego układu odejmowania w zapisie uzupełnień do 2
B7 B1 B0
A7 A1 A0
C2
C7 C1
SUM SUM SUM 1
R7 R1
C8
R0
Eliminacja propagacji przeniesień w sumatorach
Generowanie przeniesień dla wszystkich pozycji jednocześnie równolegle z
sumowaniem bitów na pozycjach argumentów
Sumatory ego typu są nazywane sumatorami z przeniesieniami jednoczesnymi
(ang. Carry Look-Ahead Adders).
Układy generujące przeniesienia są trzy-poziomowymi kombinacyjnymi układami
logicznymi, działającymi zgodnie z równaniami logicznymi podanymi poniżej.
C1 = g0 + C0p0
C2 = g1 + p1g0 + p1p0C0
C3 = g2 + p2g1 +p2p1g0 + p2p1p0C0
C4 = g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0C0
Schemat układu generatora przeniesień dla 4-tego stopnia sumatora
B A
B A B A C 0
B A
0 0
3 3 2 2
1 1
g 3 p 3 g 2 p g g 0 0
p 1 p
2 1
C
4
Propagacja sygnałów wprowadza opóznienie wynikające z przejścia sygnału przez trzy
bramki.
4-bitowy sumator z przeniesieniami jednoczesnymi
(carry look-ahead adder)
A 0
A 1
A 2
A 3
B 0
B 1
B 2
B 3
C in (C )
0
Blok Blok Blok Blok
Generacji Generacji Generacji Generacji
Przeniesień Przeniesień Przeniesień Przeniesień
C 4 C 3 C 2
C 1
SUM SUM SUM SUM
S 3
S 2 S 0
S 1
Sumator z sumami warunkowymi (ang. Carry Select Adder).
Argumenty dodawania są podzielone na dwa ciągi bitów o równej długości
Dla każdego ciągu bitów argumentów buduje się osobny sumator.
Dla bitów mniej znaczących jest to jeden sumator kaskadowy.
Dla bardziej znaczących bitów są to dwa sumatory kaskadowe, działające z
przeniesieniem początkowym równym 1 i 0.
Po wygenerowaniu przeniesienia przez sumator mniej znaczących bitów, jego wartość
wybiera jeden z dwu wyników wygenerowanych dla spekulacyjnie założonych
przeniesień początkowych: 1 lub 0.
Sumator taki przyspiesza wykonanie operacji dodawania około dwa razy.
Schemat sumatora z sumami warunkowymi
B 3B B 1B
B B 6B B 4 A 3A A 1A
B B 6B 5B 4 A A A 5A A 7A A 5A
2 0
7 5 2 0
7 7 6 4 6 4
przeniesienie przeniesienie przeniesienie
początkowe początkowe początkowe
SUM 4-bitowy SUM 4-bitowy SUM 4-bitowy
1 0 0
Multiplexer
linia wybierająca
MUX
suma
suma
(4 młodsze bity)
przeniesienie (4 starsze bity)
wychodzące S 7 S S 5 S 4 S 3 S 2 S S 0
6 1
Inne kombinacyjne układy arytmetyczne
Sumatory szeregowe
Stanowią pojedynczy sumator elementarny, na który podawane są kolejne pary bitów
argumentów.
Stosowane były we wczesnych konstruowanych komputerach, gdy koszt budowy i
rozmiary układów cyfrowych były bardzo duże.
Były one również stosowane w kalkulatorach elektronicznych, gdzie nie były
wymagane bardzo wysokie szybkości wykonywania operacji.
Schemat sumatora szeregowego
C Rejestr składnika
X
Rejestr składnika
C Y
Ai Bi
Ci+1 SUM Ci
Si
We
Rejestr sumy
C
D
Q
Zegar
C
" Na wejścia sumatora elementarnego podawane są bity argumentów (składników)
przechowywanych w dwu rejestrach przesuwnych i bit przeniesienia z poprzedniej
pozycji, zapisywany w przerzutniku D.
" Wynik dodawania dwu bitów (1 bit) jest wpisywany po każdym dodaniu do rejestru
przesuwnego sumy.
" Przeniesienie wytwarzane na podstawie dodania dwu bitów składników i bitu
przeniesienia z poprzedniej pozycji jest wpisywane do przerzutnika D.
" Zapisy do rejestru sumy i przerzutnika D następują przy rosnącym zboczy impulsu
zegarowego zegar podawanego na wejścia C. Ten sam impuls przesuwa zawartości
wszystkich trzech rejestrów o jedną pozycję w prawo.
" Po przesunięciu sumator elementarny  widzi nowe bity do dodania na swoich
wejściach i realizuje ich sumę z przeniesieniem z przerzutnika D.
Sumator szeregowy z akumulatorem
C Rejestr składnika
Y
We
Rejestr akumulatora
Y
C
Ai Bi
Ci+1 Ci
SUM
Si
D Q
Zegar
C
Bardziej oszczędny zbudowany w oparciu o jedynie dwa rejestry przesuwne.
Początkowo obydwa rejestry zawierają argumenty X i Y sumowania.
Po każdym dodaniu dwu bitów, wynik dodawania jest wpisywany do rejestru
akumulatora, na pozycję wejściową (We) zwalnianą w wyniku przesuwania zawartości
tego rejestru przez impulsy zegarowe.
Przeniesienie wytwarzane na podstawie dodania dwu bitów składników i bitu
przeniesienia z poprzedniej pozycji jest wpisywane do przerzutnika D.
Po wyprowadzeniu (przesunięciu) wszystkich bitów argumentów, rejestr akumulatora
zawiera wynik operacji a przerzutnik D zawiera ostatnie wygenerowane przeniesienie.
Komparator liczb binarnych
Układ kombinacyjny złożony z wielu stopni porównujących bity na poszczególnych
pozycjach liczby i przekazujących między pozycjami 2 bity porównań elementarnych
(podobnie do propagacji przeniesień w sumatorze).
Po propagacji bitów porównań elementarnych między wszystkimi stopniami, końcowy
układ logiczny złożony z trzech bramek, generuje wynik porównania liczb na
podstawie dwu ostatnich bitów porównania elementarnego, które do niego dotarły.
Schemat blokowy układu komparatora
W R M
A n-1
. . . A 1 A B
0 n-1 . . . B B
1 0
A > B 1 0 0
( < , = , > )
A = B 0 1 0
A < B 0 0 1
M
R W
A i B A B 1 A 0 B
A n-1 B
i 1 0
n-1
P i P 1
P n P P i+1
Generator n-1
n-1 i 1 0
wyniku
W R M
Układy logiczne stopnia porównującego dwa bity i układu generującego wynik
A
B
i
i
P ' i
P ''i
P 'i+1
P 'i
P ''
i+1
P ''
i
W R M
Wielofunkcyjne arytmetyczne moduły scalone
Wykonują różne operacje arytmetyczne i logiczne oraz ich kombinacje na liczbach o
określonej długości, np. 4-bitowych.
Aącząc wiele takich układów kaskadowo, możemy zbudować układ arytmetyczno-
logiczny działający na długich liczbach binarnych.
C 0 C 0 C 0 C
C C C C
0
4 4 4 4
Aączenie modułów w kaskadę
Dla M =1 - operacje logiczne, dla M=0 -
operacje arytmetyczne lub kombinacje
M
A S
3 3
arytmetycznych i logicznych.
A
2
A S
1 2
A
Fi określają operację dla zadanego M.
0
S
1
B
3
Argumenty A, B podaje się na wejścia Ai,
B S
2 0
Bi.
B
1
B
0
A=B
Wynik S pojawia się na wyjściach Si.
F 3
F 2
G
Cn, Cn+1 - wejście i wyjście przeniesienia
F 1
F 0 przy włączaniu go w kaskadę.
P
C
C n
n+4
G, P dla budowy bardziej
skomplikowanych typów sumatorów.
A=B - dla porównywania liczb A i B.
Tabela sterowania dla wielofunkcyjnego modułu arytmetyczno-logicznego
M = 1 M = 0
F3F2F1F0
SS
0 0 0 0 S + Cn
A
0 0 0 1 (A (" B)+ Cn
A (" B
0 0 1 0
(A (" B)+ Cn
AB
-1+ Cn
0 0 1 1 0
0 1 0 0 A + AB + Cn
AB
0 1 0 1
(A (" B)+ AB + Cn
B
A - B -1+ Cn
0 1 1 0 A " B
0 1 1 1 AB -1+ Cn
AB
1 0 0 0 A + AB + Cn
A (" B
1 0 0 1 A + B + Cn
A " B
1 0 1 0
(A (" B)+ AB + Cn
B
1 0 1 1 AB -1+ Cn
AB
1 1 0 0 A + A + Cn
1
1 1 0 1 (A (" B)+ A + Cn
A (" B
1 1 1 0
(A (" B)+ A + Cn
A (" B
1 1 1 1 A -1+ Cn
B


Wyszukiwarka

Podobne podstrony:
ukl arytm II(TAK6)
03 PEiM Met opisu ukł elektr doc (2)
120123 IK wykład 4 WO SŻ kształt ukł geomet
14 fizjo ukl oddechowy
Ocena obiążenia i zmęczenia ukł mięśn szkieletowego EMG
synteza przelaczajacych ukl
rehabilitacja w ukł oddechowym
Funkcja ukł oddech ,jama nosowa, gardło, krtań
cw7 ukl 2skl
08 ukl rownan www
ukl odoperacyjne
ukł komb

więcej podobnych podstron