This is an old revision of the document!


Pentru a reduce timpul necesar unui calcul, proiectanții folosesc sumatorul carry-lookahead.

 Sumator Carry-lookahead pe 4 biti

În sumatorul cu transport anticipat, fiecare adunare pe bit elimină dependenţa de semnalul carry-out anterior şi impune în schimb utilizarea valorilor celor doi operanzi de intrare. El functioneaza prin generarea a două noi semnale (P si G) pentru fiecare rang binar în funcție de starea intrărilor.

  • G - reprezintă un semnal de generare a unui bit de carry.
  • P - reprezintă un semnal de propagare a unui bit de carry.

Deci pentru suma a două numere A și B, dacă bitul n din A, împreună cu bitul n din B generează un semnal G, înseamnă că acești biți generează un bit de carry, iar în cazul unui semnal P, bitul de carry de la n-1 (dacă există) este propagat de către biții n pe poziția n+1.

Pornind de la un sumator ripple-carry, unde pentru fiecare full-adder (i), semnalul carry-out, c(i+1), este setat la 1 dacă una dintre următoarele condiții este adevărată:

  • Ai = 1 AND Bi = 1

sau

  • (Ai = 1 OR Bi = 1) AND ci = 1

am observat că putem calcula semnalul carry-out folosind doar semnalele rangului curent:

  • ci+1 = Ai & Bi | ci & (Ai | Bi) (1)

Pentru un sumator carry-lookahead definim Gi(Ai, Bi) ca fiind predicatul logic care este adevărat atunci când Ai * Bi generează carry (primul caz)

  • Gi(Ai, Bi) = Ai & Bi

Si Pi(Ai, Bi) ca fiind predicatul logic care este adevărat atunci cand Ai + Bi propagă carry (al doilea caz)

  • Pi(Ai, Bi) = Ai | Bi

Uneori (dar nu și in laboratorul de față) se folosește și o altă definiție a propagării. Conform acesteia, Ai + Bi va propaga dacă există carry anterior, dar nu va propaga dacă nu există acest carry. Astfel, propagarea o putem exprima:

  • P'i(Ai, Bi) = Ai ⊕ Bi

Desi OR(prima variantă) e mai rapid decât XOR(a doua variantă), pentru un sumator carry-lookahead pe mai multe nivele e mai avantajos să folosim P'i(Ai, Bi).

Rescriind ecuația (1) cu Pi si Gi, rezultă:

  • ci+1 = Gi | Pi & ci

Pentru o comparație mai tangibilă a întârzierilor celor 2 sumatoare (ripple-carry și carry-lookahead), puteți folosi aceste 2 simulatoare cu întârziere setabilă pentru porțile folosite (se pot observa întârzieri semnificative ale lui ripple-carry față de carry-lookahead pentru numere reprezentabile pe 32 de biți):

soc/laboratoare/07/overview.1711272675.txt.gz · Last modified: 2024/03/24 11:31 by stefan.maruntis
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0