0% encontró este documento útil (0 votos)
119 vistas6 páginas

Diseño de Multiplicador VHDL 8 bits

Este documento describe el diseño de un multiplicador de 8 bits usando VHDL. Explica que se requieren 8 productos parciales y 7 sumas parciales, y modela este proceso en VHDL asignando los bits del resultado parcialmente. Luego simula el diseño usando diferentes números de entrada y verifica que el resultado es correcto. Concluye que VHDL puede implementar efectivamente este tipo de operaciones mediante la modelación del proceso de multiplicación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
119 vistas6 páginas

Diseño de Multiplicador VHDL 8 bits

Este documento describe el diseño de un multiplicador de 8 bits usando VHDL. Explica que se requieren 8 productos parciales y 7 sumas parciales, y modela este proceso en VHDL asignando los bits del resultado parcialmente. Luego simula el diseño usando diferentes números de entrada y verifica que el resultado es correcto. Concluye que VHDL puede implementar efectivamente este tipo de operaciones mediante la modelación del proceso de multiplicación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tarea 1 Multiplicador de 8 bits

BRANDON CAMILO SARMIENTO IBAGON COD. 20181005117

Análisis del Problema

Se solicitó diseñar un multiplicador de números de 8 bits el cual haga uso de productos y sumas
parciales para la obtención del resultado.

Planteamiento de Soluciones

Para la solución del problema, primero se planteó la solución de una multiplicación de dos números
aleatorios de 8 bits para observar el proceso a seguir a la hora de diseñar el circuito.

En este caso se planteó la multiplicación de 200 * 100 = 20000 obteniendo:

Como se puede observar, al realizar la multiplicación de dos números de 8 bits son necesarios 8
productos parciales y 7 sumas parciales.

Sabiendo lo anteriormente mencionado, se requerirán 8 señales en el circuito las cuales serán los
productos parciales y otras 7 las cuales serán las sumas parciales además de una una señal final de 16
bits la cual contendrá el resultado final de la operación a la cual se le irán asignando los bits menos
significativos luego de cada operación de forma ordenada como se puede ver con los numeros
resaltados con amarillo y finalmente se le asignaran en los bits restantes el resultado de la suma
parcial 7.
Proceso de Diseño

Una vez teniendo claro el procedimiento que se debe seguir para diseñar el circuito se procede con el
modelado en VHDL como se muestra a continuación:

En primer lugar se declaran las entradas y salidas del sistema, en este caso 2 entradas que
corresponden a los 2 números de 8 bits y una salida que corresponderá al resultado de la operación la
cual tendrá 16 bits.

entity Multi is
Port ( N1 : in STD_LOGIC_VECTOR (7 downto 0);
N2 : in STD_LOGIC_VECTOR (7 downto 0);
R : out STD_LOGIC_VECTOR (15 downto 0));
end Multi;

Luego se declaran las señales necesarias las cuales fueron anteriormente identificadas además de 2
señales extras las cuales tomarán los valores de los números de entrada.

signal A: STD_LOGIC_VECTOR (7 downto 0);


signal B: STD_LOGIC_VECTOR (7 downto 0);

signal PP0: STD_LOGIC_VECTOR (8 downto 0);


signal PP1: STD_LOGIC_VECTOR (8 downto 0);
signal PP2: STD_LOGIC_VECTOR (8 downto 0);
signal PP3: STD_LOGIC_VECTOR (8 downto 0);
signal PP4: STD_LOGIC_VECTOR (8 downto 0);
signal PP5: STD_LOGIC_VECTOR (8 downto 0);
signal PP6: STD_LOGIC_VECTOR (8 downto 0);
signal PP7: STD_LOGIC_VECTOR (8 downto 0);

signal SP1: STD_LOGIC_VECTOR (8 downto 0);


signal SP2: STD_LOGIC_VECTOR (8 downto 0);
signal SP3: STD_LOGIC_VECTOR (8 downto 0);
signal SP4: STD_LOGIC_VECTOR (8 downto 0);
signal SP5: STD_LOGIC_VECTOR (8 downto 0);
signal SP6: STD_LOGIC_VECTOR (8 downto 0);
signal SP7: STD_LOGIC_VECTOR (8 downto 0);

signal R1: STD_LOGIC_VECTOR (15 downto 0);


Una vez declaradas las señales necesarias para el funcionamiento del circuito, se procede con el
procedimiento que se llevará a cabo para la multiplicación.

begin

A <= N1;
B <= N2;

PP0 <= B (0 downto 0) * A;


R1 (0 downto 0) <= PP0 (0 downto 0);

PP1 <= B (1 downto 1) * A;


SP1 <= PP0 (7 downto 1) + PP1;
R1 (1 downto 1) <= SP1 (0 downto 0);

PP2 <= B (2 downto 2) * A;


SP2 <= SP1 (8 downto 1) + PP2;
R1 (2 downto 2) <= SP2 (0 downto 0);

PP3 <= B (3 downto 3) * A;


SP3 <= SP2 (8 downto 1) + PP3;
R1 (3 downto 3) <= SP3 (0 downto 0);

PP4 <= B (4 downto 4) * A;


SP4 <= SP3 (8 downto 1) + PP4;
R1 (4 downto 4) <= SP4 (0 downto 0);

PP5 <= B (5 downto 5) * A;


SP5 <= SP4 (8 downto 1) + PP5;
R1 (5 downto 5) <= SP5 (0 downto 0);

PP6 <= B (6 downto 6) * A;


SP6 <= SP5 (8 downto 1) + PP6;
R1 (6 downto 6) <= SP6 (0 downto 0);

PP7 <= B (7 downto 7) * A;


SP7 <= SP6 (8 downto 1) + PP7;
R1 (15 downto 7) <= SP7;

R <= R1;

end Behavioral;

Como se puede observar, luego de cada operación se le asigna el bit menos significativo del resultado
de dicha operación al resultado final de la multiplicación en su respectivo orden.
Simulación

Una vez diseñado y modelado el circuito se obtienen el siguientes diagrama de caja negra:

En el caso del diagrama de cajas grises, se puede observar lo esperado, una sección encargada de las
sumas parciales la cual el programa representó como sumadores:
Y una sección más encargada de los productos parciales y la concatenación del resultado final.

Cabe aclarar que el diagrama es mucho más extenso por lo que no cabría en una sola imagen, por lo
cual solo se documentó una parte representativa de dichos diagramas.

Para comprobar que el programa funciona correctamente en primer lugar se creó un test bench en el
cual se le asignaron los valores de entrada al circuito los cuales en este caso fueron los del ejemplo en
el cual nos basamos para entender el diseño del multiplicador:

Obteniendo que el resultado es igual al obtenido en el ejemplo y que coincide con la matemática.

Se realizó una segunda prueba con el máximo número posible al multiplicar 2 números de 8 bits
obteniendo:

Donde el resultado también fue el esperado por lo que se concluyó que el circuito funcionaba de
forma correcta.
Conclusiones

Se puede observar como con simplemente modelar la secuencia a seguir para realizar una determinada
operación, VHDL es capaz de realizar la implementación necesaria para el correcto funcionamiento
del circuito como se puede observar en los diagramas de caja gris y en los resultados obtenidos
además de implementarlo de la forma esperada mediante el uso de multiplicaciones por separado para
cada producto parcial y adders para las sumas parciales.

También podría gustarte