This shows you the differences between two versions of the page.
soc:laboratoare:07:recap [2024/03/24 11:24] stefan.maruntis |
soc:laboratoare:07:recap [2024/03/26 20:25] (current) stefan.maruntis |
||
---|---|---|---|
Line 13: | Line 13: | ||
=== Limitări === | === Limitări === | ||
- | Implementarea acestuia este facilă, însă performanța acestuia este scăzută. **De ce?** Deoarece transportul de intrare pentru fiecare sumator complet este dependent de semnalul carry-out din full-adder-ul anterior. Prin structura sa internă: modulul de rang //i// trebuie să aştepte modulul de rang //i-1// sa îşi termine execuția pentru a afla cât este C<sub>in_i</sub>. | + | Implementarea acestuia este facilă, însă performanța este scăzută. **De ce?** Deoarece transportul de intrare pentru fiecare sumator complet este dependent de semnalul carry-out din full-adder-ul anterior. Prin structura sa internă: modulul de rang //i// trebuie să aştepte modulul de rang //i-1// sa îşi termine execuția pentru a afla cât este C<sub>in_i</sub>. |
=== Îmbunătățiri === | === Îmbunătățiri === | ||
Line 35: | Line 35: | ||
* C<sub>1</sub> = A<sub>0</sub> * B<sub>0</sub> + C<sub>0</sub> * (A<sub>0</sub> ⊕ B<sub>0</sub>) | * C<sub>1</sub> = A<sub>0</sub> * B<sub>0</sub> + C<sub>0</sub> * (A<sub>0</sub> ⊕ B<sub>0</sub>) | ||
- | Dacă generalizăm formula, pentru //i = 0//: | + | Dacă generalizăm formula: |
* C<sub>i+1</sub> = A<sub>i</sub> * B<sub>i</sub> + C<sub>i</sub> * (A<sub>i</sub> ⊕ B<sub>i</sub>) | * C<sub>i+1</sub> = A<sub>i</sub> * B<sub>i</sub> + C<sub>i</sub> * (A<sub>i</sub> ⊕ B<sub>i</sub>) | ||
Prin urmare, pentru fiecare modul de full-adder, am putea calcula bitul carry de intrare cu cost constant egal cu 1, fără să mai așteptăm propagarea acestuia prin toate celelalte full-adder-e de rang mai mic. | Prin urmare, pentru fiecare modul de full-adder, am putea calcula bitul carry de intrare cu cost constant egal cu 1, fără să mai așteptăm propagarea acestuia prin toate celelalte full-adder-e de rang mai mic. | ||
* C<sub>out</sub> = //Generează_biții_carry? **SAU** Propagă_bitul_de_carry_de_la_rangul_inferior_dacă_nu_e_generat?// | * C<sub>out</sub> = //Generează_biții_carry? **SAU** Propagă_bitul_de_carry_de_la_rangul_inferior_dacă_nu_e_generat?// |