2. Circuite logice 2.5. Sumatoare şi multiplicatoare Copyright Paul GASNER
Adunarea în sistemul binar Adunarea se poate efectua în mod identic ca la adunarea obişnuită cu cifre arabe în sistemul zecimal Atenţie la faptul ca 1+1=10!!! carry implicit 0 1 1 1 0 Depăşire - Carry in 1 0 1 1 + 1 1 1 0 1 1 0 0 1 bitul cel mai semnificativ most significant bit - MSB bitul cel mai puţin semnificativ (least significant bit - LSB) Copyright Paul GASNER 2
Adunarea a doi bits După cum s-a observat la decodoare, adunarea a doi bits are ca rezultat un cuvânt pe 2 bits, bitul din dreapta fiind suma iar cel din stânga carry (half-adder) 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 C = XY S = X Y + X Y = X Y Copyright Paul GASNER 3
Adunarea a trei bits În realitate, la adunarea a două numere binare trebuie realizată suma a trei biţi, doi care provin de la operanzi şi al treilea bitul de depăşire (carry) 1 1 1 0 1 0 1 1 + 1 1 1 0 1 1 0 0 1 X Y C in C out 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 0 + 0 + 0 = 00 0 + 0 + 0 = 01 0 + 1 + 0 = 01 0 + 1 + 1 = 10 1 + 0 + 0 = 01 1 + 0 + 1 = 10 1 + 1 + 0 = 10 1 + 1 + 1 = 11 (Sunt aceleaşi funcţii ca în exemplele de la decodor şi multiplexor) Copyright Paul GASNER 4
Ecuaţiile sumatorului complet Un sumator complet (full-adder) are la intrare 3 bits, iar ieşirea este un cuvânt de 2 bits (sumă + depăşire) X Y C in C out 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 S = Σm(1,2,4,7) = X Y C in + X Y C in + X Y C in + X Y C in = X (Y C in + Y C in ) + X (Y C in + Y C in ) = X (Y C in ) + X (Y C in ) = X Y C in C out = Σm(3,5,6,7) = X Y C in + X Y C in + X Y C in + X Y C in = (X Y + X Y ) C in + XY(C in + C in ) = (X Y) C in + XY Copyright Paul GASNER 5
Sumatorul complet Un sumator complet poate fi construit din două sumatoare simple S C out = X Y C in = (X Y) C in + XY Copyright Paul GASNER 6
Sumator pe 4 bits Patru sumatoare complete formează un sumator pe 4 biţi 9 inputs: 2 numere pe 4 bits A3 A2 A1 A0 şi B3 B2 B1 B0 1 depăşire la intrare (carry in) CI 5 ouputs Suma pe bits 1 depăşire la ieşire (carry out) CO Tabela de adevăr cuprinde 512 linii Copyright Paul GASNER 7
Exemplu Să se adune A=1011 (11) B=1110 (14) 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 1. Se completează intrările, inclusiv CI=0 2. Circuitul produce C1 şi S0 (1 + 0 + 0 = 01) 3. C1 împreună cu A1 şi B1 produc C2 şi S1 (1 + 1 + 0 = 10) 4. C2 şi A2 B2 calculează C3 şi S2 (0 + 1 + 1 = 10) 5. C3 împreună cu A3 şi B3 conduc la CO şi S3 (1 + 1 + 1 = 11) Suma finală este 11001 (25) Copyright Paul GASNER 8
Overflow Operanzii din exemplu sunt numere pe 4 bits, pe când suma este un număr pe 5 bits overflow Dacă sistemul de calcul este construit pe 4 bits, răspunsul obţinut mai sus nu poate fi utilizat chiar dacă el este corect Overflow se marchează prin valoare 1 a bitului de depăşire la ieşire CO Copyright Paul GASNER 9
Sumatoare cascadate CI este utilă la cascadarea sumatoarelor, pentru a obţine sumatoare mai mari: Sumator pe 8 bits Copyright Paul GASNER 10
Timpi de răspuns Prin întârzierea unui circuit (poartă logică de exemplu) se înţelege intervalul temporal scurs de la apariţia semnalului de intrare şi apariţia răspunsului corect la ieşire (gate delay) Presupunem aceeaşi constantă de răspuns pentru toate porţile 1 0 x x delay Copyright Paul GASNER 11
Sumatorul ripple carry Schema detaliată a sumatorului pe 4 biţi este prezentată în figura de mai jos Sumatoarele ripple carry sunt foarte lente: pentru sumatorul pe 4 biţi, sumarea se execută în 5 etape şi se parcurg 9 porţi la un sumator pe n biţi se parcurg 2n+1 porţi Copyright Paul GASNER 12
Minimizarea întârzierilor Întârzierea cea mai importantă la un sumator cascadat este dată de timpii necesari calculării succesive ale CO Sunt necesare două funcţii pentru fiecare poziţie i: existenţa depăşirii la ieşire g i = A i B i propagarea depăşirii p i = A i B is Funcţia depăşire la ieşire poate fi scrisă: c i+1 = g i + p i c i g i A i B i C i C i+1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 p i Copyright Paul GASNER 13
Minimizarea întârzierilor Pentru sumatorul pe 4 bits se obţin următoarele ecuaţii: c 1 = g 0 + p 0 c 0 c 2 = g 1 + p 1 c 1 = g 1 + p 1 (g 0 + p 0 c 0 ) = g 1 + p 1 g 0 + p 1 p 0 c 0 c 3 = g 2 + p 2 c 2 = g 2 + p 2 (g 1 + p 1 g 0 + p 1 p 0 c 0 ) = g 2 + p 2 g 1 + p 2 p 1 g 0 + p 2 p 1 p 0 c 0 c 4 = g 3 + p 3 c 3 = g 3 + p 3 (g 2 + p 2 g 1 + p 2 p 1 g 0 + p 2 p 1 p 0 c 0 ) = g 3 + p 3 g 2 + p 3 p 2 g 1 + p 3 p 2 p 1 g 0 + p 3 p 2 p 1 p 0 c 0 Copyright Paul GASNER 14
Minimizarea întârzierilor Copyright Paul GASNER 15
Minimizarea întârzierilor Cea mai lungă cale care trebuie parcursă acum este formată din 4 porţi, nu 9 ca în cazul precedent Cascadarea în continuare a sumatoarelor trebuie implementată după acelaşi procedeu se poate obţine un sumator pe 16 bits care necesită doar 8 porţi pe cel mai lung drum sumatorul modern pe 64 bits are 12 porţi pe cel mai lung drum, faţă de 129 :) Deşi creşte complexitatea circuitului, întârzierile din aceste sumatoare cresc logaritmic cu numărul de biţi, nu direct proporţional Copyright Paul GASNER 16
Multiplicarea Multiplicarea este o adunare repetată Cu ajutorul sumatoarelor se poate obţine şi înmulţirea Produsul logic AND este echivalent cu înmulţirea a doi bits a b ab 0 0 0 0 1 0 1 0 0 1 1 1 a b a b 0 0 0 0 1 0 1 0 0 1 1 1 Copyright Paul GASNER 17
Multiplicarea în binar 1 1 0 1 x 0 1 1 0 0 0 0 0 + 1 1 0 1 1 1 0 1 0 0 0 0 1 0 0 1 1 1 0 Dacă operanzii sunt numere de 4 bits, atunci şi produsele parţiale sunt tot de 4 bits Produsele parţiale se sumează cu ajutorul a 3 sumatoare pe 4 bits Copyright Paul GASNER 18
Porţile AND produc produsele parţiale În general se utilizează sumatoare complete, dar în acest caz particular sunt suficiente sumatoare half Multiplicatorul 2x2 A 1 B 1 A 1 B 0 B 1 B 0 A 1 A 0 A 0 B 1 A 0 B 0 + C 3 C 2 C 1 C 0 Copyright Paul GASNER 19
Multiplicatorul 4x4 Copyright Paul GASNER 20
Observaţii Rezultatul înmulţirii a 2 numere de 4 biţi este un număr de 8 biţi se pot păstra toţi cei 8 bits se pot păstra doar cei 4 biţi mai puţin semnificativi C3...C0, restul fiind interpretaţi ca overflow La înmulţirea unui număr pe m bits cu un număr de n bits apar: n produse parţiale pe m biţi sunt necesare n-1 sumatoare pe m biţi Copyright Paul GASNER 21
În zecimal: Multiplicarea cu 2 128 x 10 = 1280 În binar cuvântul se deplasează spre stânga cu un bit la înmulţirea cu 2: 11 x 10 = 110 (în zecimal 3 x 2 = 6) În binar cuvântul se deplasează spre stânga cu doi biţi la înmulţirea cu 4: 11 x 100 = 1100 (în zecimal, 3 x 4 = 12) În binar cuvântul se deplasează spre dreapta cu un bit la împărţirea cu 2: 110 10 = 11 (în zecimal, 6 2 = 3) Copyright Paul GASNER 22
Adunarea şi înmulţirea. Concluzii Sumatoarele şi multiplicatoarele: construite conform algoritmilor clasici de calcul se construiesc pe structuri ierarhice (cascadare) nu se pot aplica scheme de optimizare de tipul diagramelor Karnaugh Depăşirea numărului de biţi la sumatoare generează fenomenul overflow Înmulţirea şi împărţirea cu puterile lui 2 se poate realiza prin deplasarea biţilor numărului spre stânga respectiv dreapta Copyright Paul GASNER 23