multiplicador digitalhomepage.cem.itesm.mx/garcia.andres/pdf201411/multiplicador digit… ·...

33
Multiplicador Digital Dr. Andrés David García García Departamento de Mecatrónica Escuela de Ingeniería y Ciencias

Upload: dangtu

Post on 04-Oct-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

Multiplicador DigitalDr. Andrés David García García

Departamento de Mecatrónica

Escuela de Ingeniería y Ciencias

Page 2: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 3: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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]

Page 4: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 5: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 6: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 7: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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;

Page 8: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 9: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 10: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 11: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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;

Page 12: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 13: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 14: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 15: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 16: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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)

Page 17: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 18: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 19: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 20: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 21: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 22: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 23: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 24: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 25: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 26: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 27: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

Arquitectura del circuito

27

Fast Adder

MUX

Shift / Accumulation Register

A0

(serial)B

Page 28: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 29: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 30: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 31: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 32: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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

Page 33: Multiplicador Digitalhomepage.cem.itesm.mx/garcia.andres/PDF201411/Multiplicador Digit… · Multiplicador •Existen varios métodos básicos para el cálculo de la multiplicación

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