Sunteți pe pagina 1din 5

Escuela de Electrónica

DISEÑO DE SISTEMAS COMPUTACIONALES PARA


APLICACIÓN ESPECÍFICA

PRACTICA CALIFICADA 04

OBJETIVO:

Diseñar un circuito multiplicador de números naturales (enteros sin signo) de n bits, empleando
código estructural y circuitos genéricos con el lenguaje VHDL.

FUNCIONAMIENTO:

Para poder implementar un multiplicador de n bits antes es necesario entender el algoritmo básico
que se emplea para la multiplicación en hardware. Para nuestra explicación tomaremos como
ejemplo un multiplicador de 04 bits, es decir, un multiplicador donde ambos factores (Multiplicando
y Multiplicador) tienen 04 bits.

Imaginemos que el Multiplicando (M) es igual a “1110” y el Multiplicador (Q) es igual a “1011”. El
Producto (P) puede calcularse manualmente mediante el método tradicional, tal como se muestra:

Si observamos los productos parciales, notamos que una multiplicación puede ser llevada a cabo
empleando múltiples sumadores. En cada paso, un sumador de 04 bits es usado para calcular el
nuevo producto parcial. También notamos que, al progresar en el cálculo, los bits menos
significativos no son afectados por las adiciones subsiguientes y, por lo tanto, pueden pasarse
directamente al producto final:
Escuela de Electrónica

El mismo esquema puede ser utilizado para diseñar un circuito multiplicador. Denotaremos al
Multiplicando, Multiplicador y Producto como 03 números binarios M = m3m2m1m0, Q = q3q2q1q0, y
P = p7p6p5p4p3p2p1p0, respectivamente. La siguiente imagen muestra las operaciones requeridas.

El producto parcial 0 (PP0) se obtiene usando la AND de q 0 con cada bit de M, lo cual produce 0 si
q0 = 0 y M si q0 = 1. Es decir:

PP0 = m3q0 m2q0 m1q0 m0q0

De manera similar, puede obtenerse los demás productos parciales por medio de operaciones AND
y sumas. La siguiente imagen muestra una posible implementación del multiplicador de números de
04 bits:
Escuela de Electrónica

INSTRUCCIONES:

Modificar el diseño mostrado en la imagen anterior, para utilizar dos componentes nuevos llamados
Top_Block y Bottom_Block.

El componente Top_Block está conformado por un sumador completo (FA) y 02 compuertas AND.
Este es el bloque que conforma la fila superior del multiplicador. La estructura del componente debe
ser como se muestra a continuación:

El componente Bottom_Block está conformado por un sumador completo (FA) y una compuerta
AND. Este es el bloque que conforma las demás filas del multiplicador. La estructura del
componente debe ser como se muestra a continuación:
Escuela de Electrónica

El nuevo diseño del multiplicador de números de 04 bits debe tener una estructura como la que se
muestra en la siguiente imagen:

Diseñar el multiplicador de 04 bits en VHDL, empleando código estructural (componentes). Luego,


conectar la salida de este circuito a 02 decodificadores para display de 7 segmentos. Implementar el
circuito en la tarjeta DE1-SoC, y verificar su funcionamiento. Los valores de los factores deben ser
ingresados por switches y el valor del producto debe visualizarse en 02 displays, en formato
hexadecimal.

Una vez que el multiplicador de números de 04 bits funcione correctamente, modificar el diseño
para convertirlo en un multiplicador genérico (escalable), el cual pueda configurarse para trabajar
con factores de n bits. Pruebe el nuevo diseño con n = 4 y n = 5. Para n = 5 se debe mostrar 03
dígitos hexadecimales, por lo cual debe agregar un decodificador.

Considere que en un multiplicador de números de n bits:

• El producto tiene 2n bits


• Se requiere calcular n – 1 productos parciales (n -1 filas de bloques)
• La fila superior está formada solo por componentes Top_Block
• Cada fila contiene n bloques
Escuela de Electrónica

CRITERIOS DE EVALUACIÓN:

Informe (Máximo 05 páginas):

• Determinación de patrones en el comportamiento del circuito


• Imágenes de la implementación del circuito funcionando
• Análisis y conclusiones
• Bibliografía (de ser necesario)

Código (Anexo):

• Uso adecuado de señales de tipo vector


• Uso adecuado de código estructural
• Uso adecuado de parámetros genéricos
• Distribución del proyecto en archivos: full_adder, top_block, bottom_block, etc.

S-ar putea să vă placă și