sumadores
Diseño de Sistemas con FPGA
Patricia Borensztejn
Sumadores
Full Adder
S i = ai ⊕ bi ⊕ ci
Ci + 1 = ai bi + ai ci + bi ci
Half Adder
Si = ai ⊕ bi
Ci + 1 = ai ∗ biRipple-Carry Adder: el “normal” con
propagación de acarreo
• Ripple-carry adder: suma dos números de n-bits
con n full adders. El delay del ripple-carry adder
depende de la longitud n de losoperandos.
• Fácil de construir. Ocupa poca área.
Ripple-Carry Adder: el “normal” con
propagación de acarreo
module nBitAdder(f, cOut, a, b, cIn);
parameter n = 7;
output reg [n:0] f;
output regcOut;
input [n:0] a;
input [n:0] b;
input cIn;
always @(a, b, cIn)
{cOut, f} = a + b + cIn;
endmodule
Sumador Serial
• Se usa en procesamiento de señales. Es
importante que el tiempo de ciclosea corto. No
importa tanto la latencia.
• Formato de los datos (LSB primero):
0
1
1
0
LSB
• Cuando empieza un par de datos nuevos, el
carry in se pone a cero.
Estructura delsumador serial
• La señal LSB
pone a cero
carry shift
register.
• El tiempo de
ciclo es igual
al del full
adder mas el
delay del
registro.
Carry-lookahead adder
•
Descompone el carry endos partes: acarreo propagado y acarreo
generado.
– Generado: si los dos sumandos son 1 (ai bi=1)
– Propagado: si alguno de los dos es 1, propaga el carry de la suma
anterior.
Ci + 1 = ai bi +(ai ⊕ bi )ci
G
•
P y G no dependen del carry anterior! :
– Pi = ai xor bi
– Gi = ai bi
•
Reescribimos S y C usando P and G:
– si = ci xor Pi
– ci+1 = Gi + Pici
P
CarryLookahead Adder
•
•
No hay dependencia de los valores anteriores.
Los acarreos de cada bit pueden calcularse independientemente.
C1 = G0 +P0.C0 Pi = ai xor bi
C2 = G1 + P1.C1 = G1 + P1.G0 + P1.P0.C0 Gi = ai bi
C3 = G2 + P2.G1 + P2.P1.G0 + P2.P1.P0.C0
C4 = G3 +...
Regístrate para leer el documento completo.