Differences

This shows you the differences between two versions of the page.

Link to this comparison view

soc:laboratoare:07:overview [2024/02/29 14:37]
127.0.0.1 external edit
soc:laboratoare:07:overview [2024/04/16 23:50] (current)
stefan.maruntis
Line 9: Line 9:
 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**. 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ă:​+Pornind de la un sumator **ripple-carry**,​ 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ă:​
   * A<​sub>​i</​sub>​ = 1 AND B<​sub>​i</​sub>​ = 1   * A<​sub>​i</​sub>​ = 1 AND B<​sub>​i</​sub>​ = 1
 sau sau
Line 22: Line 22:
   * **P<​sub>​i</​sub>​(A<​sub>​i</​sub>,​ B<​sub>​i</​sub>​) = A<​sub>​i</​sub>​ | B<​sub>​i</​sub>​**   * **P<​sub>​i</​sub>​(A<​sub>​i</​sub>,​ B<​sub>​i</​sub>​) = A<​sub>​i</​sub>​ | B<​sub>​i</​sub>​**
  
-Uneori (dar nu și in laboratorul de față) se folosește și o altă definiție a propagării. ​Conform acesteia, ​A<​sub>​i</​sub>​ + B<​sub>​i</​sub>​ va propaga dacă există carry anterior, dar nu va propaga ​dacă nu există acest carry. Astfel, ​propagagarea o putem exprima:+<spoiler Implementarea bitului de propagare cu XOR> 
 + 
 +Uneori (dar nu și în laboratorul de față) se folosește și o altă definiție a propagării. ​Exprimarea lui P<​sub>​i</​sub>​ = A<​sub>​i</​sub>​ + B<​sub>​i</​sub>​ va propaga ​carry-ul (dacă numai unul dintre A<​sub>​i</​sub>​ și B<​sub>​i</​sub>​ este 1), dar va propaga ​și atunci când sumatorul **generează** carry (A<​sub>​i</​sub>​ și B<​sub>​i</​sub>​ sunt ambele 1). Rezultatul final este corect oricum, însă preferăm să nu propagăm atunci când generăm ​carry. Astfel, putem folosi operatorul XOR, pentru a propaga carry-ul atunci când numai unul dintre biții A<​sub>​i</​sub>​ și B<​sub>​i</​sub>​ este 1, dar nu ambii:
   * P'<​sub>​i</​sub>​(A<​sub>​i</​sub>,​ B<​sub>​i</​sub>​) = A<​sub>​i</​sub>​ ⊕ B<​sub>​i</​sub>​   * P'<​sub>​i</​sub>​(A<​sub>​i</​sub>,​ B<​sub>​i</​sub>​) = A<​sub>​i</​sub>​ ⊕ B<​sub>​i</​sub>​
  
 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'<​sub>​i</​sub>​(A<​sub>​i</​sub>,​ B<​sub>​i</​sub>​). 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'<​sub>​i</​sub>​(A<​sub>​i</​sub>,​ B<​sub>​i</​sub>​).
 +
 +</​spoiler>​
  
 Rescriind ecuația (1) cu P<​sub>​i</​sub>​ si G<​sub>​i</​sub>,​ rezultă: ​ Rescriind ecuația (1) cu P<​sub>​i</​sub>​ si G<​sub>​i</​sub>,​ rezultă: ​
   * **c<​sub>​i+1</​sub>​ = G<​sub>​i</​sub>​ | P<​sub>​i</​sub>​ & c<​sub>​i</​sub>​**   * **c<​sub>​i+1</​sub>​ = G<​sub>​i</​sub>​ | P<​sub>​i</​sub>​ & c<​sub>​i</​sub>​**
 +<​note>​
 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): 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):
   * [[http://​www.ecs.umass.edu/​ece/​koren/​arith/​simulator/​Add/​ripple/​ripple.html|Ripple-carry]]   * [[http://​www.ecs.umass.edu/​ece/​koren/​arith/​simulator/​Add/​ripple/​ripple.html|Ripple-carry]]
-  * [[http://​www.ecs.umass.edu/​ece/​koren/​arith/​simulator/​Add/​lookahead/​|Carry-lookahead]] ​+  * [[http://​www.ecs.umass.edu/​ece/​koren/​arith/​simulator/​Add/​lookahead/​|Carry-lookahead]] 
 +</​note>​
soc/laboratoare/07/overview.1709210248.txt.gz · Last modified: 2024/03/24 11:31 (external edit)
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