TECHNIKA CYFROWA

Transkrypt

TECHNIKA CYFROWA
TECHNIKA CYFROWA
Laboratorium 2012/13
ćw. 4
Układy arytmetyczne
1. Sumator RCA
Najprostszym z sumatorów jest Ripple Carry Adder (RCA) – sumator z propagowanym
przeniesieniem. Jego schemat pokazano na poniższym rysunku.
Wynik dla k-tego bitu obliczany jest na podstawie k-tych bitów argumentów (ak i bk) oraz
przeniesienia z poprzedniej pozycji (ck):
sk=ak  bk  ck.
Przeniesienie na następną pozycję występuje, gdy :
- k-te bity obu liczb a i b są jedynkami
- k-te bity obu liczb a i b mają przeciwne wartości i jednocześnie występuje
przeniesienie z poprzedniej pozycji
Wprowadzając oznaczenia: przeniesienia generowanego: gk = akbk oraz zezwolenia na
propagację przeniesienia: pk = ak  bk, otrzymuje się, że ck+1 = gk + pkck.
Jak można zauważyć, w sumatorze RCA blok obliczający wartość sumy na k-tej pozycji musi
„oczekiwać” na wygenerowanie przeniesienia we wszystkich blokach znajdujących się po
jego prawej stronie. Sumator RCA jest więc powolny.
2. Sumator CLA
Rozwiązaniem problemu powolnego działania sumatora jest zrównoleglenie obliczania
informacji przeniesienia:
c1 = g0 + p0c0
c2 = g1 + p1c1 = g1 + p1(g0 + p0c0) = g1 + p1g0 + p1p0c0
c3 = g2 + p2c2 = g2 + p2(g1 + p1g0 + p1p0c0) = g2 + p2g1 + p2p1g0 + p2p1p0c0
Należy zwrócić uwagę, że każde z powyższych przeniesień generowane jest w
dwupoziomowej strukturze AND-OR, a zatem – w podobnym czasie.
Istnieją specjalizowane układy CLA (Carry Look-Ahead Logic), które na podstawie
wartości c0, g0, p0, g1, p1, g2, p2 obliczają informacje przeniesienia c1, c2 i c3. Funkcjonalność
taką posiada układ 74182N z serii standardowej TTL. Oprócz ww. wyjść, układ posiada także
wyjścia P i G, które są odpowiednio pozwoleniem na propagację przeniesienia przez grupę i
przeniesieniem generowanym w grupie 4 bitów. Przeniesienie do następnej grupy 4 bitów ma
postać:
c4 = g3 + p3c3 = g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0c0 = G + Pc0
(*)
Zadanie 1. Łącząc szeregowo układy 74182N należy zrealizować 8-bitowy układ
dodająco-odejmujący typu CLA. Wynik ma być udostępniony w konwencji U2. Tutaj
można zobaczyć notę układu 74182N. Do budowy układu należy wykorzystać plik
CLA_start.ms10, w którym rozpoczęto budowę modelu.
3. Jednostka arytmetyczno-logiczna
Do wykonywania podstawowych operacji logicznych, a także arytmetycznych wykorzystuje
się układ ALU (Arithmetic-Logic Unit) – np. typu 74181N, dla którego układ wejść i wyjść
pokazano poniżej.
Jednostka ALU ma 2 czterobitowe wejścia (A0÷A3, B0÷B3), na które podaje się operandy oraz
4-bitowe wejście sterujące S0÷S3. Stan tego wejścia decyduje o wykonywanej operacji. ALU
może działać w trybie logicznym (brak przeniesień wewnętrznych z pozycji na pozycję) lub w
trybie arytmetycznym (przeniesienia występują). O wyborze trybu decyduje (z pewnymi
wyjątkami) stan wejścia M. Na wejście Cn podaje się przeniesienie na najmłodszą pozycję.
Wydaje się, że przeniesienie na najmłodszą pozycję nigdy nie występuje. Należy jednak pamiętać, że
jednostki ALU można łączyć szeregowo, a wtedy najmłodsza pozycja danej jednostki ALU może w istocie
być pozycją o wadze 24, 28, itd. Niezależnie od tego, występuje sytuacja, kiedy nawet przeniesienie na
pozycję 20 musi być niezerowe. Jest tak w przypadku odejmowania. Odejmowanie w jednostce ALU
polega na dodaniu uzupełnienia do 1 (negacji na bitach) odjemnika do odjemnej. W ten sposób na wyjściu
otrzymuje się wynik A-B-1. Aby otrzymać poprawny wynik A-B (także w przypadku liczb ujemnych,
reprezentowanych w konwencji U2), należy dodać do wyniku 1, a najłatwiej to zrobić, wykorzystując
wejście przeniesienia C0 na najmłodszą pozycję.
Wyjścia G i P jednostki ALU mają takie samo znaczenie, jak w wyrażeniu (*) – odpowiednio:
przeniesienie generowane w i propagujące przez grupę czterobitową. Jednostka ALU jest
przystosowana do współdziałania z elementami typu ‘182. Aby zmniejszyć opóźnienie
propagacji przeniesień pomiędzy poszczególnymi grupami 4-bitowymi, korzystne jest
równoległe łączenie układów ‘182.
Zadanie 2. Zamiast jednobitowych sumatorów oznaczonych w poprzednim zadaniu
jako CLL, należy użyć jednostek arytmetyczno-logicznych 74181N, których notę
katalogową można znaleźć tutaj. Sugeruje się użycie konwencji logiki wysokiej
operandów (patrz Tablica 2 noty katalogowej). Wykorzystaj zbudowany szablon
układu. Zwróć uwagę, że układ ma obsługiwać operacje na argumentach 16-bitowych.
Należy wygenerować sygnały s0÷s3, m, c0, c4, c8, c12.