Pentru fiecare rang dintr-o secvență binară, sumatorul va determina dacă perechea de biți care trebuie adunată poate genera sau propaga carry. Acest lucru permite circuitului sa “pre-proceseze” cei doi termeni ai adunării pentru a determina transportul înainte de a efectua adunarea propriu-zisă. Apoi, când aceasta are loc, nu va exista nici o întârziere de propagare a carry-ului, ca în cazul unui Ripple Adder. Mai jos aveți un exemplu de calcul al termenilor de propagare și, generare pentru un sumator de 2 biți:

  • c1 = G0 | P0 & c0
  • c2 = G1 | P1 & c1

Înlocuind c1 în expresia lui c2, vom obtine urmatoarele ecuații:

  • c1 = G0 | P0 & c0
  • c2 = G1 | P1 & G0 | P1 & P0 & c0

Similar, putem generaliza pentru un sumator de 4 biți:

  • c3 = G2 | P2 & G1 | P2 & P1 & G0 | P2 & P1 & P0 & c0

ȘI-ul logic (&) are prioritate față de SAU logic (|)!

Putem observa că pentru un sumator carry-lookahead cu 4 biți (cel de mai sus), propagarea semnalului de carry până la ieșirea ultimului nivel de adunare necesită trecerea prin 3 porți logice, pe când un sumator ripple-carry necesită trecerea prin 6 porți.

 Ripple-Carry vs. Carry-Lookahead

soc/laboratoare/07/implementation.txt · Last modified: 2024/04/16 23:53 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