Un sistema de sumadores de arrastre es una secuencia de sumadores completos estándar que permite sumar números que contienen más bits que los de un único sumador completo. Cada sumador completo tiene un bit de arrastre (Cin) y un bit de salida (Cout), y los sumadores se conectan conectando Cout en el paso k con Cin en el paso k+1 (Cin en el paso 0 es C0 en la imagen, Cout en el paso 3 es C4 en la imagen)
El reto de los sumadores de ripple-carry es el retardo de propagación de los bits de carry. Supongamos que, en un instante, los valores de A y B cambian, de manera que
A1 = 0
B1 = 1
A0 = 1
B0 = 1
Dado que A0 y B0 están altos, el primer sumador completo producirá un acarreo, es decir, C1 = 1. Sin embargo, la lógica tarda un tiempo en asentarse, por lo que C1 no cambia hasta un poco después de que A1 y B1 hayan cambiado. Por lo tanto, antes de que aparezca C1, el segundo sumador completo no produce un acarreo, pero a medida que aparece C1, el segundo sumador volverá a calcular y producirá un acarreo, es decir, C2 = 1. En el peor de los casos, C4 no se calcula correctamente hasta 4*retraso de propagación, y Cn no se calcula hasta n*retraso de propagación.
Un sistema sumador de carry-lookahead resuelve este problema, calculando si se generará un carry antes de calcular la suma. Existen múltiples esquemas para hacer esto, por lo que no hay "un" circuito que constituya un sumador de avance. La idea es algo así:
El cálculo de C4 no es más rápido que en el ripple-carry anterior, ni tampoco PG y GG - la magia sólo ocurre cuando se juntan varios de estos bloques para sumar números aún más grandes.
La parte importante a tener en cuenta de la imagen, es que el bloque púrpura está produciendo tres valores: C4, PG (Propagación) y GG (Generación). PG se eleva si este bloque propagará Cin a Cout, y GG se eleva si el bloque generará un desbordamiento independientemente de Cin. (También es posible que el bloque no propague ni genere un carry, en cuyo caso tanto PG como GG son bajos, y Cout es 0). PG y GG pueden ser calculados en el bloque púrpura independientemente del valor de C0 - así, cuando C0 finalmente llega, el bloque púrpura puede simplemente consultar su resultado previamente calculado, y si el resultado es una "propagación", entonces C0 se propaga directamente a C4; esto es cuatro veces más rápido que propagar a través de los cuatro sumadores completos.
La razón por la que el bloque tiene las salidas PG y GG es para que, de forma jerárquica, podamos adquirir velocidades de propagación aún mayores.
Vea también: http://faculty.kfupm.edu.sa/COE/abouh/Lesson3_3.pdf
0 votos
Utiliza el método habitual de lápiz y papel para sumar 1 al valor 9999. Eso es un acarreo de ondas.