Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… ·...
Transcript of Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… ·...
Multiplicador DigitalDr. Andrés David García García
Departamento de Mecatrónica
Escuela de Ingeniería y Ciencias
Multiplicador
• Existen varios métodos básicos para el cálculo de la multiplicación dedos números (A, B) de N bits:
• Almacenamiento de los 22*N resultados posibles en una memoria ROM y utilizarlos 2*N bits para el direccionamiento.
• Calcular los 2N funciones lógicas y realizar la suma correspondiente.
• Con base en la codificación anterior optimizar teniendo en cuenta una relaciónde dependencia entre los números A y B y el resultado M.
2
Multiplicador
• La multiplicación consiste en una serie de operaciones AND entre losdistintos bits y una serie de sumas.
• Se requieren de 2N compuertas AND.
• Se requiere de N sumadores de N bits
• Problema: Extensión del signo.
• Problema: Tratamiento del signo del operando B.
3
MULT (AxB)
A[3..0]
B[3..0]
M[7..0]
Multiplicación
4
AA*B
B
A codificado
(+/-)(A/N)2 i+
X
A
B
A3 A2 A1 A0
B3 B2 B1 B0
A/0
A/1
A/2
A/3
R= Bi A 2 i
Codificación de los productos parciales
ADGG / LFGP 5
a3 a2 a1 a0
a3 b0 a2 b0 a1 b0 a0 b0 b0
a3 b1 a2 b1 a1 b1 a0 b1 b1
a3 b2 a2 b2 a1 b2 a0 b2 b2
a3 b3 a2 b3 a1 b3 a0 b3 b3
M7 M6 M5 M4 M3 M2 M1 M0
Arreglo de compuertas AND
Multiplicación
6
A3 A2 A1 A0
B0
B1
B2
B3
A0/0A1/0A2/0A3/0
A0/1A1/1A2/1A3/1
A0/2A1/2A2/2A3/2
A0/3A1/3A2/3A3/3
Matriz de sumas
M7 M6 M5 M4 M3 M2 M1 M0
7
Productos Parciales. Descripción en VHDL
ENTITY encod_mul IS
PORT ( A, B : IN std_logic_vector(3 downto 0);
PARTIAL: OUT std_logic_vector(15 downto 0));
END encod_mul;
ARCHITECTURE mx OF encod_mul IS
BEGIN
PARTIAL(0) <= A(0) and B(0);
PARTIAL(1) <= A(1) and B(0);
PARTIAL(2) <= A(2) and B(0);
PARTIAL(3) <= A(3) and B(0);
PARTIAL(4) <= A(0) and B(1);
PARTIAL(5) <= A(1) and B(1);
PARTIAL(6) <= A(2) and B(1);
PARTIAL(7) <= A(3) and B(1);
PARTIAL(8) <= A(0) and B(2);
PARTIAL(9) <= A(1) and B(2);
PARTIAL(10) <= A(2) and B(2);
PARTIAL(11) <= A(3) and B(2);
PARTIAL(12) <= A(0) and B(3);
PARTIAL(13) <= A(1) and B(3);
PARTIAL(14) <= A(2) and B(3);
PARTIAL(15) <= A(3) and B(3);
END mx;
Multiplicación
8
HA
A1/0A0/1 A0/0
FA
A1/1 A2/0
A0/2
A1/3
A1/2
A2/1 A3/0A3/1
A2/2
A0/3A2/3
A3/2
A3/3
M7 M6 M5 M4 M3 M2 M1 M0
FAHA
HAFAFAFA
HAFAFAFA
Multiplicación
• Si suponemos que todos los productos intermedios se calculan en untiempo T, y que cada sumador realiza su operación en un tiempo ts, elresultado para una multiplicación de dos números de N bits será igualal número de operadores de suma que compone el camino crítico:
• Total de células sumadoras: 12 (8 FA, y 4 HA)
• CAMINO CRÍTICO: 10 (8 FA, 2 HA)
9
Multiplicación
10
HA
A1/0A0/1 A0/0
FA
A1/1 A2/0
A0/2
A1/3
A1/2
A2/1 A3/0A3/1
A2/2
A0/3A2/3
A3/2
A3/3
M7 M6 M5 M4 M3 M2 M1 M0
FAHA
HAFAFAFA
HAFAFAFA
11
Arreglo de sumas. Descripción en VHDL
entity SUM_MUL is
port (PARTIAL: in std_logic_vector(15 downto 0);
MI : out std_logic_vector(7 downto 0));
end SUM_MUL;
architecture ARC of SUM_MUL is
component HalfAdder is
PORT ( Aha, Bha : in std_logic;
Sha, Co_ha : out std_logic);
end component HalfAdder;
component FullAdder is
PORT ( Afa, Bfa, Cin_fa : in std_logic;
Sfa, Co_fa : out std_logic);
end component FullAdder;
signal C : std_logic_vector (8 downto 1);
signal S : std_logic_vector (6 downto 1);
begin
I0 : halfadder port map (PARTIAL(1), PARTIAL(4), MI(1), C(1));
I1 : fulladder port map (PARTIAL(2), PARTIAL(5), C(1), S(1), C(2));
I2 : fulladder port map (PARTIAL(3), PARTIAL(6), C(2), S(2), C(3));
I3 : halfadder port map (PARTIAL(7), C(3), S(3), C(4));
I4 : halfadder port map (S(1), PARTIAL(8), MI(2) , C(5));
I5 : fulladder port map (S(2), PARTIAL(9), C(5), S(4), C(6));
I6 : fulladder port map (S(3), PARTIAL(10), C(6), S(5), C(7));
I7 : fulladder port map (PARTIAL(11), C(4), C(7), S(6), C(8));
I8 : halfadder port map (PARTIAL(12),S(4), MI(3), C(9));
I9 : halfadder port map (PARTIAL(13),S(5), C(9), MI(4), C(10));
I10: fulladder port map (PARTIAL(14), S(6), C(10), MI(5), C(12));
I11: fulladder port map (PARTIAL(15), C(8), C(11), MI(6), MI(7));
end ARC;
Multiplicación
• Descripción de la multiplicación sin signo en dos bloques:
12
Codificador A/N
A3 A2 A1 A0
B0
B1
B2
B3
Sumatoria de A/N
M7 M6 M5 M4 M3 M2 M1 M0
Multiplicación de números con signo
• Multiplicación de números negativos:• Representación en complemento a 2.
• Si B es negativo, entonces el último producto parcial se obtiene con elcomplemento a 2 de A:
• B3*23*(/A+1) = 23*(B3*/A+B3)
• En este caso si B3=‘1’ se realiza el complemento a 2 y el ajuste.
• Si B3=‘0’ el producto parcial es cero y no hay ajuste.
13
Extensión de signo (Si B es negativo)
14
A3 A2 A1 A0
B0
B1
B2
B3
A0/0A1/0A2/0A3/0
A0/1A1/1A2/1A3/1
A0/2A1/2A2/2A3/2
A0/3A1/3A2/3A3/3
Matriz de sumas
M7 M6 M5 M4 M3 M2 M1 M0
Multiplicación de números con signo
• Multiplicación de números negativos:
• Si A y B son negativos, se representan en ‘2 y se expande elresultado de cada producto intermedio copiando el MSb. Tambiénse aplica el ajuste anterior (B negativo)
• Si sólo A es negativo solamente se expande el resultado de cadaproducto intermedio copiando el MSb.
15
Multiplicación
• Realice los siguientes ejercicios:
16
0 1 0 1 (5)
X 0 1 1 0 (6)
1 1 0 1 (-3)
X 0 1 0 1 (5)
1 0 1 1 (-5)
X 1 0 1 0 (-6)
Multiplicación de números con signo
• Solución de los ejercicios:
17
1 1 0 1 (-3)
X 0 1 0 1 (5)
1 0 1 1 (-5)
X 1 0 1 0 (-6)
0 0 0 0
0 1 0 1 -
0 1 0 1 - -
0 0 0 0 0 0 -
1 1 1 1 1 0 1
1 1 1 0 1 - -
0 0 0 0 - - -
1 1 1 0 0 0 1 (-15)
0 1 0 1 (5)
X 0 1 1 0 (6)
0 0 0 0 - - -
0 0 1 1 1 1 0 (30)
0 0 0 0 0 0 0
1 1 1 0 1 1 -
0 0 0 0 0 - -
0 1 0 1 - - -
0 0 1 1 1 1 0 (30)
Complemento a 2
Extensión de signo
Multiplicación de números con signo
• Efectuar el corrimiento hacia la izquierda y extensión de signo.
• El último operando se representa en complemento a 2 de A siB es negativo (MSB = ‘1’), en otro caso, el último operando escero:
• Físicamente, la implementación consiste en complementar eloperando A y sumar el término:
18
11
11
1 212
NN
NN
N bAbAbA
1
12
N
Nb
Multiplicación de números con signo
19
a3 a2 a1 a0
-a3 b0 a2 b0 a1 b0 a0 b0 b0
-a3 b1 a2 b1 a1 b1 a0 b1 b1
-a3 b2 a2 b2 a1 b2 a0 b2 b2
-a3 b3 a2 b3 a1 b3 a0 b3 b3
b3
M7 M6 M5 M4 M3 M2 M1 M0
Multiplicación de números con signo
20
A3 A2 A1 A0
B0
B1
B2
B3
A0/0A1/0A2/0A3/0
A0/1A1/1A2/1A3/1
A0/2A1/2A2/2A3/2
A0/3A1/3A2/3A3/3
Matriz de sumas
M7 M6 M5 M4 M3 M2 M1 M0
A3/0
A3/1
A3/2
23B3
Multiplicación de números con signo
• La codificación de los productos parciales se realiza enparalelo.
• La suma del término: se realizará en el arreglosumador.
• El camino crítico se compone de una AND y una compuertaNOT.
• La velocidad del multiplicador dependerá en gran medida delbloque de sumas
21
1
12
N
Nb
Multiplicación
• Para acelerar el resultado de la multiplicación se debe optimizarel camino crítico, es decir, el camino mas largo que debenrecorrer las entradas A y B para generar el resultado M.
• En este caso, todos los productos intermedios estaráncalculados al mismo tiempo por lo que no representan parte delcamino crítico.
• El camino crítico estará definido por la suma de productosintermedios mas grande.
22
Multiplicador Serie-Paralelo
• La Multiplicación puede ser re-estructurada en base a operaciones simples a realizarse de forma sucesiva o iterativa.
• Esto permite reducir drásticamente la complejidad material del circuito.
• Arquitectura Serie-Paralelo:• Multiplicar el operando “A” con cada bit del operando “B”
• Recorrer hacia la izquierda cada producto parcial
• Acumular los productos parciales conforme se generan
• Utilizar un circuito síncrono para controlar el proceso
23
Multiplicador Serie-Paralelo
24
0 1 1 0
x 1 0 1 0
0 0 0 0 0 0 0
0 0 0 1 1 0
0 0 0 0 0
1 0 1 0
1 0 1 1 1 0 0 (-36)
Operando “A”
Operando “B”
“A” x B0
“A” x B1
“A” x B2
“A” x B3
Shift a la
Izquierda según
la potencia de n2
que corresponda
a cada bit de “B”
El resultado es producto de una suma de todos los productos parciales
Multiplicador Serie-Paralelo
25
0 1 1 0
x 1 0 1 0
0 0 0 0 0 0 0
0 0 0 1 1 0
0 0 0 0 0
1 0 1 0
1 0 1 1 1 0 0 (-36)
0 1 1 0
x 1 0 1 0
0 0 0 0 Shift
0 0 0 0 Add
+ 0 1 1 0 Shift
0 1 1 0 0 Add
+ 0 0 0 0 Shift
0 0 1 1 0 0 Add
+ 1 0 1 0 Shift
1 0 1 1 1 0 0 ADD
Multiplicador Serie-Paralelo
26
0 1 1 0
x 1 0 1 0
0 0 0 0 Shift
0 0 0 0 Add
+ 0 1 1 0 Shift
0 1 1 0 0 Add
+ 0 0 0 0 Shift
0 0 1 1 0 0 Add
+ 1 0 1 0 Shift
1 0 1 1 1 0 0 ADD
Producto parcial = 0
Producto parcial = A
Producto parcial = 0
Producto parcial = A
Arquitectura del circuito
27
Fast Adder
MUX
Shift / Accumulation Register
A0
(serial)B
Arquitectura del circuito
• El multiplicador Serie-Paralelo es un circuito secuencial
• La arquitectura consiste de:
• Un multiplexor:• Producto Parcia = 0, si Bn = ‘0’
• Producto Parcial = A, si Bn = ‘1’
• Sumador: suma la salida del multiplexor (A ó 0) que corresponde al producto parcial Bn con el contenido del registro (Producto Parcial previamente acumulado correspondiente a Bn-1)
• Shift / accumulation register: Almacena el resultado en el acumulador y realiza el corrimiento (shift)
• En lugar de hacer corrimientos hacia la izquierda (como se haría en la multiplicación normal) se hace un corrimiento a la derecha del contenido del acumulador
28
Diseño del circuito
• Requerimientos para un multiplicador de n-bits
• Un registro de n-bits para el multiplicando• Un registro de n-bits para el multiplicador• Un registro de corrimiento para el producto de 2n-bits
• El registro del producto también se usa como registro acumulador para almacenar las sumas de los productos parciales conforme son generados
• IDEA: al usar una arquitectura iterativa de este tipo, el corrimiento dentro del registro de 2n-bits es hacia la derecha.
• ¿explique porqué?
29
Arquitectura del circuito
Adder Control
(FSM)
Multiplicand (A)
Multiplier (B)Accumulator
Shift sense
CLK
CLK
Ad
M
Sh
C Start
30
Ad : Add enable signalSh : Shift enable signalC : Carry out signalM: Multiplier bit
Arquitectura del circuito: Ejemplo
• Multiplicar 13x11 = 143 (“1101” x “1011”= “10001111”)
31
111100010final) (ResultadoShift
111110001sumar de Después
10111)Men A"" (
M111100100Shift
0)Men suma de (Salto
M011110010Shift
101111001sumar de Despúes
10111)Men A"" (
M101101100Shift
110110110sumar de Después
10111)Men A"" (
M110100000registro del inicial Contenido
Línea divisoria entre el producto y el multiplicador
Arquitectura del circuito
• Pseudo-código
A, B son los operandos (n bits)
P es el registro en donde se almacenará el producto final
P = 0; // inicialización
for i=0 to n-1 do
if bi = 1 then
P = P + A;
end if;
left-shift A;
end for;
• Máquina de Estados
32
Desempeño:
• El cálculo de la multiplicación a través de un arreglo serie-paralelo es más pequeño que un multiplicador paralelo tradicional
• Serie-paralelo: una multiplicación en B ciclos de reloj
• Paralelo: una multiplicación por ciclo de reloj
• Sin embargo, el camino crítico es mas pequeño en el arreglo serie-paralelo El circuito puede operar a frecuencias de reloj superiores
33