This shows you the differences between two versions of the page.
soc:laboratoare:07:overview [2024/04/16 23:46] stefan.maruntis |
soc:laboratoare:07:overview [2024/04/16 23:50] (current) stefan.maruntis |
||
---|---|---|---|
Line 24: | Line 24: | ||
<spoiler Implementarea bitului de propagare cu XOR> | <spoiler Implementarea bitului de propagare cu XOR> | ||
- | Uneori (dar nu și in 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 (daca 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, î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> sunt 1, dar nu ambii: | + | 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> | ||
Line 33: | Line 33: | ||
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> |