Multiplicador Digital

Documentos relacionados
Diseño de Operadores Aritméticos

UNIVERSIDAD CARLOS III DE MADRID. Ejercicios de VHDL. Circuitos Integrados y Microelectrónica. Luis Entrena. Celia López.

Sumadores. Tipos de sumadores: Half-adder. Full-Adder. Carry-Look-Ahead. Carry-select.

PRUEBA DE ENTRADA NOMBRE : FECHA: / /2005 CÓDIGO : LAB. Nº: 4 HORARIO: H-441

4. SUMADORES EN BINARIO PURO (I)

2. Sumadores. Diagrama. Donde a y b son los bits a sumar, S el. resultado de la suma y C el acarreo generado. b EB. Circuito. Tabla de verdad.

PRACTICA 6: CIRCUITOS ARITMETICOS: SUMADORES Y RESTADORES.

DE INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD EN ELECTRÓNICA INDUSTRIAL

Practica No. 5 Diseño de un Multiplicador

Practica No. 5 Diseño de un Multiplicador

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores. Bloque 3: Sistemas secuenciales Tema 9: Módulos secuenciales básicos

Bloques Aritméticos - Multiplicadores

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2014

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 1

Sistemas Electrónicos Digitales Curso de adaptación al Grado

VHDL. Lenguaje de descripción hardware

8. Multiplexores Digitales

Modelos de Circuitos FCHE 2011

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 4

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2017, Primera Semana

Operadores y atributos en VHDL [1]

Sesión 1: Introducción al lenguaje VHDL. S1 1 Laboratorio de Estructura de Computadores Curso 04 / 05

Código concurrente en VHDL [5]

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2013, Segunda Semana

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 8

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Septiembre 2016

Pipeline. Diseño de Sistemas con FPGA 1er cuatrimestre 2009 Patricia Borensztejn

Los multiplexores son dispositivos de varias entradas que permiten seleccionar la señal que llega a una de éstas y transmitirla a la salida.

Sumador Ripple-Carry

Multiplicación. Multiplicación. Martín Vázquez Arquitectura I - Curso 2013 UNICEN. Notación dot

DISEÑO DE PROCESADORES DEDICADOS. Práctica 6 LCD de Propósito General

^6+1 2^5+1 2^2+1 2^1+1 2^ ^6+1 2^0-65.

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 5

En este capítulo se habla sobre las distintas arquitecturas y algoritmos de multiplicación rápida que se encontraron en la bibliografía.

Sistemas Digitales - Examen temas 1, 2 y 3 - (6 de Abril 2016)

Circuitos electrónicos digitales. Unidades Aritméticas Lógicas. Departamento de Tecnología Electrónica Universidad de Sevilla

TEMA 5.3 SISTEMAS DIGITALES

Laboratorio de Arquitectura de Computadoras

Circuitos Electrónicos Digitales E.T.S.I. Telecomunicación Universidad Politécnica de Madrid. Circuitos combinacionales

13-Bloques Básicos Secuenciales

Realizar un descripción VHDL de las siguientes funciones lógicas, o grupos de funciones lógicas

Electrónica Digital. Capítulo 1: Circuitos Digitales. Circuitos combinacionales. (2/3)

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 6

6. Codificadores. Electrónica Digital. Tema

Arquitectura de Computadoras

Sistemas Digitales - Examen temas 1, 2 y 3 - (6 de Abril 2016)

Universidad Autónoma de Querétaro Facultad de Ingeniería

Descripción en VHDL de circuitos aritméticos para campos finitos GF(2 m )

Fundamentos de Computadores. Tema 5. Circuitos Aritméticos

Tema 3: Operaciones aritméticas y lógicas

Circuitos Lógicos Combinatorios. Ing. Jorge Manrique 2004 Sistemas Digitales 1

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 3

SISTEMAS DIGITALES CONTROL 1 (31/3/2014) APELLIDOS DNI: Firma NOMBRE MODELO DE EXAMEN A

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) SEGUNDA CLASE DE VHDL

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 10

Práctica 2 - Lógica Digital

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2014, Primera Semana

Comparador de 1 bit Tabla de verdad y circuito lógico A B A > B A = B A < B

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2012

Diseño de Sistemas Electrónicos Digitales Avanzados

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2015, Segunda Semana

Tema 5. Circuitos MSI

DESCRIPCIÓN DE CIRCUITOS DIGITALES

Diseño Modular de Circuitos

Tema 7. Análisis de Circuitos Secuenciales

Tema 4 - Bloques combinacionales

Organización del Computador I Verano. Aritmética (4 de 5) Basado en el capítulo 4 del libro de Patterson y Hennessy Multiplicaciones y Divisiones

Estructura de Computadores. 1. Ejercicios Resueltos 1.1. Tema 6. La unidad aritmética y lógica

INTRODUCCIÓN AL LENGUAJE VHDL PARA CIRCUITOS

PRÁCTICA: LENGUAJE VHDL

Tema 3. Operaciones aritméticas y lógicas

Arquitectura de Computadoras

Índice. VHDL Lección 2.9 Máquinas de Estados Finitos (FSM) 1

Unidad Aritmético Lógica A.G.O. All Rights Reserved

Electrónica Digital Departamento de Electrónica VHDL. Bioingeniería Facultad de Ingeniería - UNER

Introducción al VHDL

CIRCUITOS ELECTRÓNICOS DIGITALES ESCUELA POLITÉCNICA SUPERIOR UNIVERSIDAD AUTÓNOMA DE MADRID

Arquitectura de Computadoras para Ingeniería

Tema 3 - Modelado con HDL a nivel RTL

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2013

1.- Determina la funcionalidad del siguiente código VHDL. LIBRARY ieee; USE ieee.std_logic_1164.all;

TEMA IV: SÍNTESIS HARDWARE

PRUEBA DE ENTRADA E P3 P2

A (A3, A2, A1, A0) B (B3, B2, B1, B0) A (A0, A1, A2, A3) B (B0, B1, B2, B3) 0 to 3. 3 downto 0

Subsistemas aritméticos y lógicos. Tema 10

Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

VHDL. VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits

ELECTRÓNICA DIGITAL 24-I Determinar el valor decimal de los números expresados en Complemento a 2. (0.25 puntos).

Tema IV. Unidad aritmético-lógica

Transcripción:

Multiplicador Digital Dr. 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 de dos números (A, B) de N bits: Almacenamiento de los 2 2*N resultados posibles en una memoria ROM y utilizar los 2*N bits para el direccionamiento. Calcular los 2 N funciones lógicas y realizar la suma correspondiente. Con base en la codificación anterior optimizar teniendo en cuenta una relación de 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 los distintos bits y una serie de sumas. A[3..0] B[3..0] Se requieren de 2 N compuertas AND. Se requiere de N sumadores de N bits Problema: Extensión del signo. Problema: Tratamiento del signo del operando B. MULT (AxB) M[7..0] 3

Multiplicación A3 A2 A1 A0 A X B3 B2 B1 B0 B B A/0 A/2 A/1 A A codificado (+/-)(A/N)2 i + A*B A/3 R= Bi A 2 i 4

Codificación de los productos parciales a 3 a 2 a 1 a 0 a 3 b 0 a 2 b 0 a 1 b 0 a 0 b 0 b 0 a 3 b 1 a 2 b 1 a 1 b 1 a 0 b 1 b 1 a 3 b 2 a 2 b 2 a 1 b 2 a 0 b 2 b 2 a 3 b 3 a 2 b 3 a 1 b 3 a 0 b 3 b 3 M 7 M 6 M 5 M 4 M 3 M 2 M 1 M 0 Arreglo de compuertas AND ADGG / LFGP 5

Multiplicación A3 A2 A1 A0 B0 A3/0 A2/0 A1/0 A0/0 B1 A3/1 A2/1 A1/1 A0/1 B2 A3/2 A2/2 A1/2 A0/2 B3 A3/3 A2/3 A1/3 A0/3 Matriz de sumas M7 M6 M5 M4 M3 M2 M1 M0 6

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; 7

Multiplicación A3/1 A2/1 A3/0 A1/1 A2/0 A0/1 A1/0 A0/0 HA FA FA HA A3/2 A2/2 A1/2 A0/2 FA FA FA HA A3/3 A2/3 A1/3 A0/3 FA FA FA HA M7 M6 M5 M4 M3 M2 M1 M0 8

Multiplicación Si suponemos que todos los productos intermedios se calculan en un tiempo T, y que cada sumador realiza su operación en un tiempo ts, el resultado para una multiplicación de dos números de N bits será igual al 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 A3/1 A2/1 A3/0 A1/1 A2/0 A0/1 A1/0 A0/0 HA FA FA HA A3/2 A2/2 A1/2 A0/2 FA FA FA HA A3/3 A2/3 A1/3 A0/3 FA FA FA HA M7 M6 M5 M4 M3 M2 M1 M0 10

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; 11

Multiplicación Descripción de la multiplicación sin signo en dos bloques: A3 A2 A1 A0 Codificador A/N B0 B1 B2 B3 Sumatoria de A/N M7 M6 M5 M4 M3 M2 M1 M0 12

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 el complemento a 2 de A: B3*2 3 *(/A+1) = 2 3 *(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) A3 A2 A1 A0 B0 A3/0 A2/0 A1/0 A0/0 B1 A3/1 A2/1 A1/1 A0/1 B2 A3/2 A2/2 A1/2 A0/2 B3 A3/3 A2/3 A1/3 A0/3 Matriz de sumas M7 M6 M5 M4 M3 M2 M1 M0 14

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 el resultado de cada producto intermedio copiando el MSb. También se aplica el ajuste anterior (B negativo) Si sólo A es negativo solamente se expande el resultado de cada producto intermedio copiando el MSb. 15

Multiplicación Realice los siguientes ejercicios: 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) 16

Multiplicación de números con signo Solución de los ejercicios: Extensión de signo 0 1 0 1 (5) X 0 1 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 0 (30) 1 1 0 1 (-3) X 0 1 0 1 (5) 1 1 1 1 1 0 1 0 0 0 0 0 0-1 1 1 0 1 - - 0 0 0 0 - - - 1 1 1 0 0 0 1 (-15) 1 0 1 1 (-5) X 1 0 1 0 (-6) 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 17

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 si B es negativo (MSB = 1 ), en otro caso, el último operando es cero: A b N A N 1 b A b 2 N 1 N 1 N 1 1 2 1 Físicamente, la implementación consiste en complementar el operando A y sumar el término: b N N 12 1 18

Multiplicación de números con signo a 3 a 2 a 1 a 0 -a 3 b 0 a 2 b 0 a 1 b 0 a 0 b 0 b 0 -a 3 b 1 a 2 b 1 a 1 b 1 a 0 b 1 b 1 -a 3 b 2 a 2 b 2 a 1 b 2 a 0 b 2 b 2 -a 3 b 3 a 2 b 3 a 1 b 3 a 0 b 3 b 3 b 3 M 7 M 6 M 5 M 4 M 3 M 2 M 1 M 0 19

Multiplicación de números con signo A3 A2 A1 A0 B0 A3/0 A3/0 A2/0 A1/0 A0/0 B1 A3/1 A3/1 A2/1 A1/1 A0/1 B2 A3/2 A3/2 A2/2 A1/2 A0/2 B3 A3/3 A2/3 A1/3 A0/3 Matriz de sumas 2 3 B3 M7 M6 M5 M4 M3 M2 M1 M0 20

Multiplicación de números con signo La codificación de los productos parciales se realiza en paralelo. N La suma del término: b 12 1 N se realizará en el arreglo sumador. El camino crítico se compone de una AND y una compuerta NOT. La velocidad del multiplicador dependerá en gran medida del bloque de sumas 21

Multiplicación Para acelerar el resultado de la multiplicación se debe optimizar el camino crítico, es decir, el camino mas largo que deben recorrer las entradas A y B para generar el resultado M. En este caso, todos los productos intermedios estarán calculados al mismo tiempo por lo que no representan parte del camino crítico. El camino crítico estará definido por la suma de productos intermedios 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 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 n 2 que corresponda a cada bit de B El resultado es producto de una suma de todos los productos parciales 24

Multiplicador Serie-Paralelo 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 25

Multiplicador Serie-Paralelo Producto parcial = 0 Producto parcial = A Producto parcial = 0 Producto parcial = A 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 26

Arquitectura del circuito 0 A B (serial) MUX Fast Adder Shift / Accumulation Register 27

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 CLK Accumulator Shift sense Multiplier (B) Ad : Add enable signal Sh : Shift enable signal C : Carry out signal M: Multiplier bit M C Adder Ad Control (FSM) Start CLK Multiplicand (A) Sh 30

Arquitectura del circuito: Ejemplo Multiplicar 13x11 = 143 ( 1101 x 1011 = 10001111 ) Contenido inicial del registro ( "A" en M 1) 1 1 0 1 Después de sumar 0 1 1 0 1 1 0 1 1 Shift 0 0 1 1 0 1 1 0 1 ( "A" en M 1) 1 1 0 1 Despúes de sumar 1 0 0 1 1 1 1 0 1 Shift 0 1 0 0 1 1 1 1 0 (Salto de suma en M 0) Shift 0 0 1 0 0 1 1 1 1 ( "A" en M 1) 1 1 0 1 Después de sumar 1 0 0 0 1 1 1 1 1 Shift (Resultado final) 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 M M M M Línea divisoria entre el producto y el multiplicador 31

Arquitectura del circuito Pseudo-código Máquina de Estados 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 b i = 1 then P = P + A; end if; left-shift A; end for; 32

Desempeño: El cálculo de la multiplicación a través de un arreglo serieparalelo 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