Elementy arytmetyczne

advertisement
6. ELEMENTY ARYTMETYCZNE
6.1. Cel ćwiczenia:
Celem ćwiczenia jest zapoznanie się z budową i działaniem sumatorów, subtraktorów
i komparatorów cyfrowych.
6.2. Wprowadzenie:
6.2.1. Dodawanie i odejmowanie całkowitych liczb binarnych:
Całkowitą liczbę n-cyfrową przedstawia się jako:
(6.1)
Co odpowiada jej wartości:
A = a n-1 p n-1 + a n-2 p n-2 + … + a 1 p 1 + a 0 p 0
(6.2)
Gdzie p oznacza podstawę systemu liczbowego.
Uzupełnieniem do podstawy p liczby A nazywa się liczbę:
A (p) = pn – A
(6.3)
Uzupełnieniem do p-1 liczby A nazywa się liczbę:
A (p-1) = pn -1 –A
(6.4)
Podstawą dwójkowego systemu liczbowego jest liczba 2 (p=2).
Przykłady:
A2 = 101 = 1.22 + 0.21 + 1.20 = 5
A2(p) = 23 -5 = 3 = 011
A2(p-1) = 23 -1 -5 = 2 = 010
A10(p) = 101 -5 = 5
A10(p-1) = 101 -1 -5 = 4
Jeżeli przy zapisie liczby binarnej uwzględnia się znak to zapisujemy go w postaci bitu przed
kropką poprzedzającą MSB. Liczbie dodatniej odpowiada bit znaku (z) równy 0, dla liczby
ujemnej z = 1.
Liczby binarne przedstawia się w zapisach:
- znak-moduł (z,)
- uzupełnień do 1 (p-1)
- uzupełnień do 2 (p).
Liczba dodatnia ma w tych zapisach taką samą postać, liczba ujemna w każdym zapisie jest
odmienna.
Przykłady:
6 = 0.1102 we wszystkich podanych zapisach ma jednakową postać.
-6 = 1.1102(zm) = 1.0012(p-1) = 1.0102(p)
Dalej dla zapisów uzupełnień liczb będą używane także oznaczenia z gwiazdką np.: 1* uzupełnienie liczby binarnej do 1.
6.2.1.1. Zapis znak-moduł.
W zapisie zm liczby o równych wartościach bezwzględnych różnią się wyłącznie
bitem znaku. Liczba 0 ma tutaj podwójną postać:
+0 = 0.02(zm)
-0 = 1.02(zm).
W operacjach arytmetycznych nie biorą udziału bity znaków składników. Przy jednakowych
znakach składników sumowane są moduły a znak wyniku przyjmuje znak składników.
Przykłady:
Przy różnych znakach składników do modułu dodanej dodaje się uzupełnienie do 1 dodajnika
i jeżeli wystąpi przeniesienie cykliczne dodaje się je do ostatniego wyniku, jeżeli
przeniesienie cykliczne nie wystąpi należy wyznaczyć uzupełnienie do 1 otrzymanego
wyniku. Znak wyniku przyjmuje wartość równą znakowi składnika o większym module.
Przykłady:
6.2.1.2. Zapis uzupełnień do 1.
W zapisie uzupełnień do 1 każdą liczbę ujemną przedstawia się jako 1 a operację
dodawania przeprowadza się wraz z bitem znaku. Jeżeli występuje przeniesienie cykliczne to
dodajemy go do ostatniego wyniku. Przy ujemnym wyniku końcowym rezultatem jest 1*
modułu otrzymanego wyniku z zachowaniem bitu znaku.
W zapisie uzupełnień do 1 istnieją dwie interpretacje liczby 0:
+0 = 0.02(p-1)
Przykłady:
-0 = 1.12(p-1)
Z ostatniego przykładu wynika, że ujemne zero występuje w tym zapisie tylko przejściowo a
przy końcowej operacji tworzenia 1* należy także zmienić wartość bitu znaku z na 0, co jest
odstępstwem od reguł podanych na początku niniejszego podpunktu.
6.2.1.3. Zapis uzupełnień do 2.
Jest to w przypadku liczb binarnych zapis uzupełnienia do podstawy. W układach
sumatorów pracujących w zapisie uzupełnień do 2 wykorzystuje się równoważność 2* i sumy
1* tej liczby plus 1.
A2(p) = A2(p-1) + 1
(6.5)
Działania arytmetyczne przeprowadza się w tym zapisie wraz z bitem znaku, przeniesienie
cykliczne pomija się. Liczby ujemne przedstawia się jako 2*. Przy ujemnym wyniku
końcowym rezultatem jest 2* modułu otrzymanego wyniku z zachowaniem bitu znaku. W
zapisie uzupełnień do 2 liczba 0 przedstawiona jest jako 0.02(p).
Przykłady:
6.2.2. Działania dodawania i odejmowania arytmetycznego całkowitych liczb
dziesiętnych kodowanych dwójkowo:
Ograniczono się tutaj do rozważenia problemu dodawania i odejmowania liczb
dziesiętnych BCD przedstawionych w naturalnym kodzie o wagach 8421.
Zasadniczo działania dodawania i odejmowania liczb BCD 8421 przeprowadza się
w zapisach:
- znak-moduł
- uzupełnień do 9 (p-1)
- uzupełnień do 10 (p)
Istnieje również zapis wynikający z 4 bitowego przedstawienia cyfry BCD i nosi on nazwę
- uzupełnień do 15.
Dla otrzymania prawidłowego wyniku dodawania dwu liczb BCD stosuje się poprawkę w
każdej dekadzie, której wartość przekroczy 9. Poprawka ta polega na dodaniu cyfry 6 do
danej dekady z jednoczesnym przeniesieniem przepełnienia do następnej dekady.
Przykłady:
Odejmowanie liczb BCD 8421 zastępuje się dodawaniem uzupełnienia do (p) lub (p-1)
odjemnika. W tym przypadku jest to 10* lub 9*. Dla liczb BCD, odmiennie niż w przypadku
liczb BIN, bit znaku z równy 1 określa liczbę dodatnią a gdy z = 0 liczbę – ujemną.
Operacje odejmowania przeprowadza się podobnie jak dla liczb binarnych (por.
punkt 6.2.1).
Dla lepszego zrozumienia reguł rządzących operacjami dodawania i odejmowania
liczb BCD 8421, przykłady w większości przypadków przedstawiono dla liczb jedno i
dwucyfrowych.
6.2.2.1. Zapis znak – moduł.
Zapis zm liczb BCD 8421 odpowiada zapisowi zm liczb BIN (patrz p. 6.2.1.1).
Zmiana dotyczy zastąpienia uzupełnienia do 1 (BIN) uzupełnieniem do 9 (BCD).
Przykłady:
Wykonanie działania -5 -6 = -11 jest analogiczne, jedynie wynik przyjmuje znak „ – ” (bit
znaku sumy zS przyjmuje wartość 0).
Wykonanie działania -9 + 3 = -6 jest analogiczne, zS = 0.
6.2.2.2. Zapis uzupełnień do 9.
Zapis uzupełnień do 9 odpowiada zapisowi uzupełnień do 1 – patrz p. 6.2.1.2.
Różnica w stosunku do zapisu 1* polega na dodawaniu przeniesienia cyklicznego z
sumowania dekad a nie po zsumowaniu dekad i bitów znaku.
Przykłady:
6.2.2.3. Zapis uzupełnień do 10.
Zapis uzupełnień do 10 odpowiada zapisowi uzupełnień do 2 – patrz p. 6.2.1.3.
Uzupełnienie 10* liczby BCD tworzy się na podstawie wzoru (6.5):
A10(p) = A10(p-1) + 1
Przykłady:
A10 = 9
A10 = 12
A10 = 100
A10 = 0
A10(p) = 0 + 1 = 1
A10(p) = 87+1 = 88
A10(p) = 899+1 = 900
A10(p) = 9+1 = (1 ←) 0 przeniesienie pomija się
Powyższa interpretacja matematyczna liczby 0 jest zgodna z jej przedstawieniem jako
1.0000 w zapisie 10.
Dla liczb poprzedzonych zerami zapis wygląda następująco:
Przykłady:
6.2.2.4. Zapis uzupełnień do 15.
Zapis uzupełnień do 15 nosi również nazwę zapisu uzupełnień do 1 dla liczb BCD,
ponieważ 15 otrzymuje się przez zanegowanie wszystkich bitów liczby ujemnej. Nazwa
uzupełnienia do 15 wynika z czterobitowego przedstawienia liczby dziesiętnej, dla którego
maksymalna wartość wynosi 1111 = 15.
Przykłady:
A = 9 = 1001
A = 73 = 0111 0011
A = 05 = 0000 0101
ABCD(15*) = 0110 = 616 = 15 - 9
ABCD(15*) = 1000 1100 = 8C16 = (15-7)(15-3)
ABCD(15*) = 1111 1010 = FA16 = (15-0)(15-5)
Ze względu na duża komplikację algorytmu układu dodająco – odejmującego dla zapisu 15
rozpatrzony zostanie tylko przypadek układu odejmującego, wykonującego działanie
S = A – B. Operacja odejmowania jest w tym zapisie sprowadzona do dwustopniowego
dodawania. Pierwsza suma powstaje w wyniku dodania kolejnych bitów liczby, będącej
odjemną oraz uzupełnienia do 15 odjemnika z uwzględnieniem przeniesień i przeniesienia
cyklicznego. Jest to sumowanie analogiczne jak w zapisie uzupełnień do 1 liczb BIN, z tym,
że wynik podzielony jest na tetrady. Bit przeniesienia cyklicznego określa znak końcowego
wyniku i składnik drugiej sumy, którym jest pierwsza suma gdy zS = 1 (lub negacja jej bitów
gdy zS = 0). Druga suma zawiera również składnik korekcji dla tetrad, których wartość
przekroczyła liczbę 9.
Korekcja ta przyjmuje wartość +10 = 1010, co odpowiada uzupełnieniu do 2 liczby 6.
Przeniesienia w sumowaniu korekcyjnym pomija się.
Przykłady:
Z ostatniego przykładu wynika, że liczba 0 w zapisie uzupełnień do 15 przyjmuje znak „ – ”.
6.2.3. Sumator:
Sumator jest układem wykonującym dodawanie dwu liczb. W przypadku
sumowania liczb binarnych podstawowy element sumatora liczb wielobitowych spełnia
funkcje logiczne zgodnie z tablicą 6.1, gdzie:
Ci-1 – przeniesienie z niższej pozycji,
Ai – bit dodajnej,
Bi – bit dodajnika,
Si – bit sumy,
Ci – przeniesienie do wyższej pozycji
Tablica 6.1
Tablica stanów sumatora
Ci - 1
Ai
Bi
Si
Ci
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
Rys. 6.1. Sumator 1-bitowy
a) siatki Karnaugha , b) symbol , c) schemat
Na rys. 6.1a przedstawiono siatki Karnaugha dla sumy Si i przeniesienia Ci wg których
otrzymujemy funkcje:
Zależność (6.6) spełnia układ kombinacyjny z rys. 6.1c, przy czym możliwe są również inne
praktyczne realizacje sumatora, wynikające z różnorodnych przekształceń wzorów (6.6).
Uproszczoną postacią sumatora jest półsumator, który nie posiada wejścia Ci-1.
Podstawiając we wzorach (6.6) Ci-1 = 0 otrzymujemy:
Zależność (6.7) spełnia układ z rys. 6.2a.
Rys. 6.2. Półsumator a) schemat , b) realizacja sumatora z 2 półsumatorów
Sumatory wielobitowe można podzielić na:
- dwójkowe (sumowanie liczb binarnych),
- dziesiętne (sumowanie liczb dziesiętnych kodowanych dwójkowo).
Działanie sumatora może odbywać się szeregowo – rys. 6.3 (sumowane są kolejne bity
dodajnej i dodajnika) lub równolegle – rys. 6.3 (wszystkie bity sumowane są jednocześnie).
Rys. 6.3. Sumator szeregowy
Rys.6.4. Sumator równoległy z przeniesieniami szeregowymi
Z układu sumatora szeregowego można wyeliminować rejestr sumy przez szeregowe
adresowanie rejestru jednego ze składników kolejnymi, częściowymi wynikami dodawania.
W wielobitowych sumatorach równoległych przeniesienia mogą być dokonywane
szeregowo lub równolegle. W tym ostatnim przypadku znacznie wzrasta szybkość działania
sumatora.
Sumator akumulujący jest układem, który zamiast dodajnika wprowadza do
sumatora wynik poprzedniego dodawania (rys. 6.5). Dodatkowy element sumatora
akumulującego, spełniający funkcję pamięci (np. rejestr, zespół przerzutników) nosi nazwę
akumulatora.
Rys. 6.5. Sumator akumulujący a) szeregowy , b) równoległy
W klasie TTL produkowane są sumatory 1,2 i 4-bitowe (patrz Dodatek B).
6.2.4. Subtraktor:
Odejmowanie dwu liczb binarnych realizuje układ zwany subtraktorem.
Tablica 6.2
Tablica stanów subtraktora
Vi - 1
Ai
Bi
Di
Vi
0
0
0
0
0
0
0
1
1
1
0
1
0
1
0
0
1
1
0
0
1
0
0
1
1
1
0
1
0
1
1
1
0
0
0
1
1
1
1
1
W tablicy 6.2 oznaczono:
Vi-1 – pożyczka dla niższej pozycji,
Ai – bit odjemnej,
Bi – bit odjemnika,
Di – bit różnicy,
Vi – pożyczka z wyższej pozycji.
Rys. 6.6. Subtraktor 1-bitowy a)siatki Karnaugha , b) symbol
Na podstawie siatek Karnaugha z rys. 6.6 można napisać:
Porównując wzory (6.8) i (6.7) można stwierdzić, że dla Vi-1 = Ci-1 wyrażenie dla różnicy i
sumy są równoważne, tj. Di = Si ; w wyrażeniach dla pożyczki i przeniesienia różnica tkwi w
negacji argumentu Ai.
Subtraktor można więc nazwać pewnym przypadkiem sumatora ze zmianą Ai najej
negację w funkcji pożyczki.
Jeżeli we wzorach (6.8) przyjmiemy Vi-1 = 0 to otrzymamy wyrażenie opisujące
półsubtraktor:
Rys. 6.7. Schematy funkcjonalne sumatorów – subtraktorów liczb BIN a) dla zapisu znak –
modół , b) dla zapisu uzupełnień do 1 , c) dla zapisu uzupełnień do 2
Układy wielobitowych subtraktorów budowane są analogicznie jak odpowiednie sumatory –
por. rys. 6.3 i 6.4. Praktycznie do budowy wielobitowych układów odejmujących
wykorzystuje się scalone sumatory uzupełnione dodatkowymi układami wejściowymi,
wyjściowymi i generującymi znak wyniku.
Analizując kolejne kroki podczas operacji dodawania i odejmowania liczb binarnych
(patrz p. 6.2.1) można narysować schematy funkcjonalne układów realizujących działania
S = ±A±B dla poszczególnych zapisów – rys. 6.7. Linią przerywaną zaznaczono bloki nie
występujące w układach uproszczonych, wykonujących działanie S = A±B. Z porównania
rysunków 6.7a, b i c widać, że największe komplikacje w budowie posiada układ dodająco –
odejmujący dla zapisu znak – moduł, dlatego też jest on bardzo rzadko realizowany.
6.2.5. Sumator dziesiętny kodowany dwójkowo:
W przypadku dodawania i odejmowania liczb binarnych mamy zazwyczaj kłopoty z
szybką interpretacją wyniku, tzn. przetworzeniem go na powszechnie używany dziesiętny
system liczbowy. Rozwiązaniem tego zagadnienia jest albo budowa konwertera BIN → BCD
dla wyniku, albo bezpośrednie działania arytmetyczne na liczbach dziesiętnych kodowanych
dwójkowo.
W układach arytmetycznych stosuje się najczęściej następujące kody BCD:
- naturalny kod dziesiętny o wagach 8421,
- kod z nadmiarem 3 (”+3”),
- kod Aikena o wagach 2421
Ograniczmy się tutaj do najpopularniejszego kodu BCD 8421. Dodając do siebie
dwie liczby BCD i uwzględniając przeniesienie z poprzedniej dekady Cm-1 = 1 możemy co
najwyżej otrzymać liczbę 9+9+1 = 19. Sumator BCD będzie się więc różnił od sumatora liczb
binarnych wprowadzonym dodatkowo układem kombinacyjnym dla przeniesienia do
następnej dekady Cm oraz arytmetycznym układem korekcji (sterowanym z układu
przeniesienia) dodającym odpowiednią poprawkę, gdy wynik dla danej dekady przekroczy 9.
Z powyższego wynika schemat funkcjonalny sumatora BCD, przedstawiony na rys. 6.8.
Wszystkie możliwe wyniki występujące przy sumowaniu dwu liczb BCD i przeniesienia C M-1
ilustruje tablica 6.3.
Tablica 6.3
Suma
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
C’m
S’m3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
BIN
S’m2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
S’m1
S’m0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Cm
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
BCD 8421
Sm3
Sm2
Sm1
0
0
0
00
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
1
1
0
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
1
1
0
1
1
1
0
0
1
0
0
Uwagi
Sm0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Nie
wymaga
korekcji
Wymaga
korekcji
+6
Rys. 6.8. Schemat funkcjonalny jednodekadowego sumatora dziesiętnego.
Z tablicy tej wynika, że dla wyniku większego niż 9 przeniesienie Cm sumatora BCD powinno
przyjąć wartość 1, a wtedy do wyniku Sm należy dodać poprawkę +6.
Rys. 6.9. Jednodekadowy sumator BCD 8421 , a) siatka Karnaugha , b) schemat sumatora
zbudowanego z 2 sumatorów 4 - bitowych
Na podstawie siatki Karnaugha z rys. 6.9a można napisać funkcję jaką musi spełniać
przeniesienie Cm
Cm = C’m + S’m3 S’m2 + S’m3 S’m1
(6.10)
Schemat dekady sumatora BCD 8421 zbudowany w oparciu o sumatory 4-bitowe przedstawia
rys. 6.9b.
Wielodekadowy sumator BCD buduje się łącząc odpowiednio ze sobą
jednodekadowe sumatory BCD np. w sumator równoległy z przeniesieniami szeregowymi
(por. rys. 6.4) lub przyłączając do dekady sumatora BCD zespół rejestrów 4-bitowych (por.
rys. 6.3). W tym drugim przypadku otrzymany sumator szeregowo – równoległy ze względu
na równoległe sumowanie liczb w każdej dekadzie i szeregowe podawanie przeniesienia.
Budowa dziesiętnego sumatora akumulującego jest analogiczna jak w przypadku
równoległego sumatora akumulującego przedstawionego na rys. 6.5b.
6.2.6. Subtraktor dziesiętny kodowany dwójkowo:
Istnieje możliwość zbudowania jednodekadowego subtraktora BCD, realizującego
odejmowanie bezpośrednie, jednak ze względu na jego skomplikowaną budowę nie stosuje
się praktycznie tego typu układów.
Operacja odejmowania, podobnie jak dla liczb BIN, sprowadzana jest do dodawania
odjemnej i odpowiedniego uzupełnienia odjemnika, przy zachowaniu reguł dotyczących
przeniesienia opisanych w p.6.2.2 (rys. 6.10).
W praktyce do budowy wielodekadowych układów odejmujących wykorzystuje się scalone
sumatory binarne oraz kombinacyjne lub arytmetyczne bloki uzupełnień i generowania znaku
wyniku.
6.2.7. Komparator:
Komparator jest układem porównującym wartości dwu lub więcej liczb binarnych.
Komparator uniwersalny posiada wyjścia odpowiadające relacjom:
A < B, A = B, A > B. Komparator uproszczony daje nam zwykle informację wyjściową w
postaci: A = B, A ≠ B. Ze względu na sposób działania komparatory można podzielić na
równoległe i szeregowe, przy czym komparacji liczb można dokonywać poczynając od MSB
lub LSB. Komparatory równoległe mogą być budowane w postaci układów kombinacyjnych i
wtedy ich wyjścia realizują wielowymiarową funkcję logiczną wynikającą z metod
minimalizacji, bądź w postaci układów iteracyjnych, będących złożeniami komparatorów 1bitowych z elementami blokady następnych stopni i elementami wyjściowymi. Schematy
funkcjonalne komparatorów szeregowych i równoległych przedstawiają rys. 6.11 i 6.12.
Komparatory mogą być również budowane w oparciu o elementy arytmetyczne. Przykład
takiego komparatora, działającego na zasadzie badania wyniku odejmowania, przedstawia
rys. 6.13.
Najprostszym rodzajem komparatora jest komparator 1-bitowy, nie uwzględniający
przeniesień komparacji z wyższej pozycji. Taki komparator stanowi w powiązaniu z dwoma
przerzutnikami komparator szeregowy por. rys. 6.11 i rys. 6.14b. Funkcje komparatora 1bitowego przedstawia tablica 6.4.
Na podstawie siatek Karnaugha (rys. 6.14a)
Przekształcając wzór 6.11b) otrzymujemy zależność:
Realizację komparatora według wzorów (6.11) przedstawia rys. 6.14b. Podstawowym
elementem wielobitowego komparatora iteracyjnego (patrz rys. 6.12b) jest komparator
iteracyjny 1-bitowy. Posiada on jedynie wejścia i wyjścia dla relacji większości i mniejszości
a relacja równości generowana jest w dodatkowym członie wyjściowym na podstawie
(6.11d). Komparator iteracyjny 1-bitowy spełnia funkcje logiczne zgodnie z tablicą 6.5.
Rys.6.11. Komparator szeregowy
a) porównujący liczby od MSB, b) porównujący liczby od LSB
Tablica 6.5
Tablica stanów jednobitowego komparatora iteracyjnego
Rys.6.12 Komparator równoległy: a) kombinacyjny , b) iteracyjny
Rys.6.13 Układ odejmujący jako komparator
Według siatek Karnaugha z rys . 6.15 a otrzymujemy zależności:
Schemat 1-bitowego komparatora iteracyjnego przedstawia rys. 6.15b.
Zasadę konstruowania komparatorów kombinacyjnych (patrz rys. 6.12a) przedstawiono na
przykładzie komparatora 2-bitowego. Komparator taki spełnia funkcje logiczne opisane w
tablicy 6.6.
Rys.6.14 Komparator 1-bitowy : a) siatki Karnaugha, b) schemat
Rys. 6.15. Komparator iteracyjny 1-bitowy: a) siatki Karnaugha, b) schemat
Schemat 1-bitowego komparatora iteracyjnego przedstawia rys 6.15 b. Zasadę konstruowania
komparatorów kombinacyjnych ( patrz rys. 6.12 a) przedstawiono na przykładzie
komparatora 2-bitowego . Komparator taki spełnia funkcje logiczne opisane w tablicy 6.6.
Tablica 6.6
Tablica stanów kombinacyjnego komparatora 2-bitowego
Rys.6.16. Komparator kombinacyjny 2-bitowy: a) siatki Karnaugha, b)schemat
Na podstawie niepełnej minimalizacji siatek Karnaugha z rys. 6.16a otrzymujemy po
przekształceniach:
Powyższe zależności spełnia układ z rys. 6.16b.
W klasie TTL produkowany jest uniwersalny komparator kombinacyjny 4-bitowy (układ
7485 – patrz Dodatek B), który praktycznie służy do budowy komparatorów wielobitowych.
6.3. Pytania sprawdzające:
1. Przedstawić liczby 3, 9, 10, 22, 39 oraz ich wszystkie uzupełnienia w zapisach BIN i
BCD 8421.
2. Przeprowadzić we wszystkich zapisach BIN i BCD 8421 następujące działania
arytmetyczne: 3+5, 7+11, 6-9, 9-6, 10-12, -7 -5.
3. Zbudować półsumator: a) z bramek NAND, b) z bramek NOR.
4. Dokonać klasyfikacji sumatorów i omówić działania poszczególnych grup.
5. W jaki sposób może być dokonywana operacja odejmowania liczb BIN oraz BCD
8421?
6. Dokonać syntezy subtraktora BCD wykonującego bezpośrednie odejmowanie liczb
BCD 8421, przedstawić jego realizację.
7. Dokonać syntezy kombinacyjnych oraz arytmetycznych układów wytwarzania
uzupełnień do 9 i do 10 dla jednodekadowej liczby BCD 8421 oraz przedstawić ich
realizację.
8. Jak można sklasyfikować komparatory pod względem szybkości działania?
9. Dokonać syntezy komparatora kombinacyjnego 3-bitowego, przedstawić jego
realizację.
6.4.2. Sumator – subtraktor szeregowy (SSz), szeregowy sumator akumulacyjny
(AkSSz):
Sumator i subtraktor szeregowy został zbudowany na podstawie schematu blokowego z rys.
6.3. Jako rejestry R1, R2 składników zastosowano uniwersalne rejestry 4-bitowe (które
wykorzystuje się także do badania komparatora szeregowego). Przełączenie zestyków
przycisku PKS (WPISYWANIE) powoduje przeniesienie stanów wejść równoległych
rejestrów R1, R2 na wyjścia. Operacja dodawania lub odejmowania odbywa się krokami
(wyznaczonymi impulsami taktującymi) i rozpoczyna się od bitów o najniższych wagach –
przełącznik PK4 powinien znajdować się w pozycji PRZESUWANIE W PRAWO. Rejestr
sumy R3 jest w tym przypadku rejestrem 8-bitowym, co umożliwia wielokrotne sumowanie
liczb 4-bitowych w układzie szeregowego sumatora akumulującego. Przerzutnik P1 typu D
daje opóźnienie o 1 takt przeniesienia Ci lub pożyczki Vi.
Szeregowy sumator akumulujący uzyskuje się łącząc ostatnie wyjście Q7 rejestru
sumy R3 z wejściem Bi sumatora 1-bitowego – patrz rys. 6.5a.
Kolejność operacji dla dokonania działania arytmetycznego w układzie SSz jest
następująca: zerowanie, wpisanie składników do rejestrów, taktowanie. Dla układu AkSSz
zerowanie poprzedza szereg kolejnych cykli wpisywania i taktowania. W przypadku SSz
wynik uzyskuje się po 5 impulsach taktujących, dla AkSSz po 8 impulsach.
6.4.3. Sumator – subtraktor równoległy (SR):
Równoległy układ sumatora – subtraktora realizujący działanie S = ±A±B
przedstawia rys. 6.20. Układ liczy w zapisie uzupełnień do 1 a w jego skład wchodzą
wejściowe i wyjściowy układ liczba / uzupełnienie do 1 oraz sumator. Jako elementy dające
na wyjściu liczbę lub jej uzupełnienie do 1 zastosowano bramki XIR sterowane bitem znaku
danej liczby. Do bezbłędnego przeprowadzenia operacji dodawania i odejmowania dwóch
liczb 4-bitowych niezbędne jest zarezerwowanie piątego bitu sumatora dla przeniesienia C4 i
szóstego bitu dla operacji na znakach. W tym przypadku do realizacji układu użyto dwa
sumatory 4-bitowe połączone szeregowo. Na bity 3 i 4 sumatora S2 wprowadzono stany 0 i 1
tak, aby prawidłowo działało przeniesienie cykliczne z C4 sumatora S2 na C0 sumatora S1.
Tak więc pięć pierwszych bitów sumowania stanowi liczbę lub jej uzupełnienie do 1 a bit
szósty jest bitem znaku zS. Bit znaku steruje wyjściowym układem liczba / uzupełnienie do 1,
skąd otrzymuje się poprawną postać wyniku.
6.4.4. Sumator – subtraktor dziesiętny (SD):
Jednodekadowy, równoległy sumator – subtraktor dziesiętny przedstawiony na rys.
6.21 jest układem liczącym w kodzie BCD 8421 w zapisie uzupełnienia odjemnika do 9.
Sumator BCD zbudowany jest na podstawie rys. 6.9b (sumatory S4, S5 oraz układ
kombinacyjny dla przeniesienia). Sumator S3 wraz z bramkami XOR tworzy układ liczba /
uzupełnienie do 9 sterowany bitem znaku liczby B. W przypadku wykonywania przez układ
sumatora działania S = A + B na wejście C-1 należy podać 0 lub 1. Dla układu subtraktora (S
= A – B) przeniesienie C0 powinno być połączone z wejściem C-1 przy czym wynik S jest
poprawny dla S > 0 (C0 = 1) oraz jest uzupełnieniem do 9 dla s < 0 (C0 = 0). Sumator ten nie
zawiera bowiem wyjściowego układu liczba / uzupełnienie do 9.
6.4.5. Komparator szeregowy (KSz):
Komparator szeregowy zbudowano z przerzutników P2, P3 typu JK. Dla
uproszczenia układu wykorzystano tutaj funkcję iloczynu realizowanego na wejściach J
elementu 7472 (por. rys. 6.11a).
KSz współpracuje z rejestrami R1, R2 oraz układami taktowania i zerowania
wspólnymi dla SSz – patrz rys. 6.19. Komparator porównuje liczby od bitów o najwyższych
wagach (MSB) – przełącznik PK4 ustawiony w pozycji PRZESUWANIE W LEWO. Kolejne
operacje przy porównywaniu dwu liczb 4-bitowych to zerowanie i taktowanie (max. 4
impulsy taktujące). KSz zmienia odpowiednio stan wyjść gdy będzie spełniony którykolwiek
iloczyn J1 J2 J3 = 1, czyli gdy Ai ≠ Bi i dzięki sprzężeniom międzyprzerzutnikami stan ten
będzie stabilny.
6.4.6. Komparator równoległy (KR):
Komparator równoległy jest 4-bitowym komparatorem iteracyjnym. Komparator ten
zbudowano odmiennie do opisanego w p. 6.2.7 modelu komparatora iteracyjnego.
Podstawowa komórka KR dokonuje porównań Ai > Bi, Ai < Bi, a jednobitowe przeniesienie
do następnego stopnia określa relację Ai = Bi. Członem wyjściowym są w tym przypadku
bramki NAND. Jeżeli na którymkolwiek stopniu komparatora iteracyjnego, poczynając od
stopnia dla MSB, wystąpi nierówność bitów Ai ≠ Bi to wygenerowanie przeniesienia
spowoduje blokadę wszystkich następnych stopni; jednocześnie sygnałem 0 sterowana jest
jedna z bramek wyjściowych NAND określająca relację większości.
6.5. Program ćwiczenia:
6.5.1. Badanie sumatora i subtraktora 1-bitowego:
Połączyć układ pomiarowy sumatora – subtraktora 1-bitowego wykorzystując
odpowiednie elementy rys. 6.24. Wcisnąć klawisz SSz przełącznika wyboru układu. Do
rejestrów A i B wpisać z zadajnika liczby A = 1100, B = 1010.
Przeanalizować działanie układu (stany wyjść Si (Di), Ci (Vi)) podając na wejście Ci-1 (Vi-1)
stan 0 a następnie stan 1. Na wejścia Ai i Bi sumatora / subtraktora dostarczana jest kolejno (z
rejestrów – TAKT) pełna kombinacja dwu bitów.
Rys. 6.24. Schemat pomiarowy dla : subtraktora-subtraktora 1 –bitowego, sumatorasubtraktora szeregowego i szeregowego sumatora akumulującego
6.5.2. Badanie sumatora - subtraktora szeregowego (SSz):
Na podstawie rys. 6.3 połączyć układ pomiarowy sumatora – subtraktora
szeregowego – patrz rys. 6.24. Sprawdzić działanie SSz wpisując do rejestrów A i B dowolne
4-bitowe liczby BIN. Wynika odczytać w rejestrze sumy S po odpowiedniej liczbie (5 lub 8)
impulsów taktujących (TAKT). Z kolei ustalając odpowiednie położenie przełącznika
SUMATOR/SUBTRAKTOR przeprowadzić następujące działania arytmetyczne: A + 0 = A,
A+B=8, A-0=A, A-B=0, A-B=S>0, A-B=S<0, 0-B = -B.
Przed wykonaniem każdego działania sumator szeregowy należy wyzerować.
6.5.3. Badanie szeregowego sumatora akumulującego (AkSSz):
Na podstawie rys. 6.5a połączyć układ pomiarowy szeregowego sumatora
akumulującego – patrz rys. 6.24. Wpisując do rejestru A kolejne 4-bitowe składniki
sumowania oraz ustalając odpowiednie położenie przełącznika SUMATOR –
SUBTRAKTOR przeprowadzić następujące działania: A+A+A = 3A, A1+A2+A3=S A1A2+A3=S>0, (A1>|A2|), A1+A2+...+An=S<29.
Szeregowy sumator akumulujący należy zerować przed każdą operacją
wielokrotnego sumowania. W przypadku AkSSz ulość impulsów taktujących (TAKT.) dla
każdego dodawania częściowego wynosi 8.
6.5.4. Badanie sumatora - subtraktora równoległego (SR):
Przy pomocy układu sumatora – subtraktora równoległego, przedstawionego na rys. 6.25,
przeprowadzić na liczbach BIN 4-bitowych następujące działania arytmetyczne: A+0=A,
A+B = S, A-B=S > 0, -A+B=S<0, -A-B=S, A-B=0, 0-B = -B
6.5.5. Badanie sumatora - subtraktora dziesiętnego (SD):
Sprawdzić działanie układu sumatora – subtraktora dziesiętnego (rys. 6.26) przez
wykonanie następujących obliczeń na dwu jednodekadowych liczbach BCD 8421. Dla układu
sumatora: A+0=A, A+B=S<10, A+B = S >10 z uwzględnieniem obu przypadków
podłączenia wejścia C-1, następnie zmieniając konfigurację na subtraktor (por. rys. 6.10b)
wykonać działania: A-B = S>0 (S<10), A-B = S<0 (|S| <10 ).
Rys. 6.26. Schemat pomiarowy sumatora-subtraktora BCD 8421
6.5.6. Badanie komparatora szeregowego (KSz):
Połączyć układ komparatora szeregowego zgodnie z rys. 6.27. Przeanalizować
kolejne kroki działania KSz wpisując do rejestrów A i B 4-bitowe liczby BIN o relacji A = B
oraz liczby o relacji A≠B, różniące się kolejno bitami od MSB do LSB.
Rys. 6.27. Schemat pomiarowy komparatora szeregowego
6.5.7. Badanie komparatora równoległego (KR):
Przy pomocy układu komparatora równoległego, przedstawionego na rys. 6.28,
sprawdzić otrzymane w punkcie 5.6.5 wyniki.
Rys.6.28. Schemat pomiarowy kompensatora równoległego
6.6. Tematy do opracowania:
6.6.1. Narysować tablice stanów sumatora i subtraktora 1-bitowego, porównać je z tablicami
6.1 i 6.2.
6.6.2. Na podstawie przykładów podanych w p. 6.2.1.2 [rzedstawić działania arytmetyczne
wykonane w p. 6.5.2, 6.5.1 i 6.5.4. W przypadku układu subtraktora szeregowego
zaznaczyć fakt otrzymania nieprawidłowego wyniku odejmowania jako niepełnego
uzupełnienia do 2 (por. wzór (6.5)). Podać sposób znalezienia prawidłowego wyniku.
6.6.3. Na podstawie przykładów podanych w p. 6.2.2.2. przedstawić działania arytmetyczne
wykonane przez układ sumatora – subtraktora dziesiętnego. W przypadku układu
subtraktora dziesiętnego zaznaczyć fakt otrzymania wyniku jako uzupełnienia do 9.
6.2.4. Dla układów komparatora szeregowego i równoległego wypełnić podaną niżej tablicę.
W przypadku komparatora szeregowego zaznaczyć numer taktu, w którym uzyskuje się
już poprawny wynik.
Tablica 6.
Analiza działania komparatora szeregowego i równoległego
6.7. Literatura:
1. Kalisz J.: Podstawy elektroniki cyfrowej, WKŁ , Warszawa 1998.
2. Lisiecka-Frąszczak J: Synteza układów cyfrowych, Wydawnictwa Politechniki
Poznańskiej , Poznań 2000.
3. Majewski W.: Układy logiczne, WNT, Warszawa 1976
4. Misiurewicz P, H. Grzybek: Półprzewodnikowe układy logiczne, WNT, Warszawa
1975, str. 83-177.
5. Pieńkos J, Turczyński J : Układy scalone TTL w systemach cyfrowych, WKŁ,
Warszawa 1980.
6. Traczyk W. :Układy cyfrowe. Podstawy teoretyczne i metody syntezy, WNT
Warszawa 1986.
7. Zieliński C. :Podstawy projektowania układów cyfrowych, PWN, Warszawa 2003.
8. Gryś S.: Arytmetyka komputerów – w praktyce, PWN, Warszawa, 2007.
Download