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.