You are on page 1of 12

HUGOO MIGUEL COMBARIZA BASTOS 1090657

PROYECTO DISEÑO DIGITAL

INTRODUCCION

En el siguiente trabajo se dará desarrollo al
proyecto impuesto por el maestro de la
asignatura, el cual tiene como objetivo principal
dar solución mediante el conocimiento
adquirido durante el transcurso del curso en
este semestre, utilizaremos herramientas como
los programas de computación y la tarjeta
NEXYS 2.

OBJETIVOS
 Dar a conocer el proceso de desarrollo del
proyecto de la materia utilizando los
conocimientos adquiridos en el curso.
 Emplear las herramientas computacionales
como apoyo del desarrollo en si.
 Utilizar los diversos métodos de desarrollo
de problemas para el desarrollo en si.

JUSTIFICACION

El desarrollo de este laboratorio le permitirá al
docente evaluar las capacidades del estudiante
que ha adquirido durante el transcurso del
curso. En la realización del proyecto e utilizó
los siguientes elementos:
 Tarjeta NEXYS 2.
 Computador
con
las
especificaciones.
 Guía de laboratorio.
 Datasheet de la tarjeta utilizada.

últimas

 Herramienta de simulación Xilinx. ISE
Fundation y el complemento ADEPT.

ACTIVIDAD

Los diseños de la mayor parte de los sistemas
de cómputo combinan las operaciones
aritméticas y lógicas en una única unidad
funcional llamada unidad aritmética lógica, o
ALU. Se desea realizar una Unidad Aritmético
Lógica (ALU) como la mostrada en la figura,
con dos entradas de datos X (x1x0) e Y (y1y0),
una entrada de control C (c1c0) y una salida de
datos R (r3r2r1r0). El funcionamiento de la
ALU viene descrito por la siguiente tabla.
 Realizar las tablas de verdad respectivas y
visualizar el respectivo resultado en un
display siete segmentos.
 Implementar el funcionamiento por medio
de puertas lógicas.
 Implementar en lenguaje VHDL por
cualquiera de las arquitecturas vistas en
clase.
DESARROLLO

Se procederá primero a hacer el diagrama del
circuito en diagrama de bloques para poder
guiarnos con una figura y poder entender el
comportamiento del tal.

Tabla de verdad para el producto C1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Con el diagrama ya hecho y con las condiciones dadas podemos desarrollar la tabla de la verdad: C0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 X0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Y1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 Y0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 r3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 r2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 r1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 ro 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 r1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 ro 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Tabla de verdad para el comparador Tabla de verdad para la suma: C1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 X0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Y1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 Y0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 r3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 r2 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 r1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 ro 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 C1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 C0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 X0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Y1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 Y0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 r3 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 r2 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 .

Segmentos del sumador: a 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 b 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 c 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 d 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 e 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 f 1 0 0 0 1 0 0 1 0 0 1 1 1 1 1 1 g 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 01 11 10 00 1 1 1 0 01 0 1 1 1 11 1 1 1 0 10 1 1 0 1 00 01 11 10 00 1 1 1 0 01 0 1 1 1 11 1 1 1 0 10 1 1 0 1 00 01 11 10 00 1 1 1 0 01 0 1 1 1 11 1 1 1 0 10 1 1 0 1 X1X0 A= Y1Y0 X1X0 B= Y1Y0 X1X0 C= .Tabla de verdad para el complemento Tablas de verdad para estos segmentos son: Y1Y0 C1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 C0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 X0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Y1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 Y0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 r3 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 r2 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 r1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 ro 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 El siguiente paso a realizar será determinar que led’s se encenderán para cada operación y determinar el lenguaje en el que se introducirán en el programa XILINX.

Segmentos del multiplicador: Y1Y0 Y1Y0 00 01 11 10 X1X0 00 01 11 10 X1X0 00 1 1 1 0 00 1 1 1 0 01 0 1 1 1 01 0 1 1 1 11 1 1 1 0 11 1 1 1 0 10 1 1 0 1 10 1 1 0 1 00 01 11 10 D= A= Y1Y0 Y1Y0 00 01 11 10 X1X0 X1X0 00 1 1 1 0 00 1 1 1 0 01 0 1 1 1 01 0 1 1 1 11 1 1 1 0 11 1 1 1 0 10 1 1 0 1 10 1 1 0 1 00 01 11 10 E= B= Y1Y0 Y1Y0 00 01 11 10 X1X0 X1X0 00 1 1 1 0 00 1 1 1 0 01 0 1 1 1 01 0 1 1 1 11 1 1 1 0 11 1 1 1 0 10 1 1 0 1 10 1 1 0 1 F= C= .

Y1Y0 Y1Y0 00 01 11 10 X1X0 00 01 11 10 X1X0 00 1 1 1 0 00 1 1 1 1 01 0 1 1 1 01 1 1 1 1 11 1 1 1 0 11 1 1 1 1 10 1 1 0 1 10 1 1 1 1 D= G= Segmentos del comparador: Y1Y0 00 01 11 10 X1X0 00 1 1 1 0 01 0 1 1 1 11 1 1 1 0 10 1 1 0 1 E= 00 01 11 10 00 0 1 1 1 01 1 0 1 1 11 1 1 0 1 10 1 1 1 0 00 01 11 10 00 1 1 1 1 01 1 1 1 1 11 1 1 1 1 10 1 1 1 1 X1X0 A= Y1Y0 00 01 11 10 00 1 1 1 0 01 0 1 1 1 11 1 1 1 0 10 1 1 0 1 X1X0 F= Y1Y0 Y1Y0 X1X0 B= .

Y1Y0 Y1Y0 00 01 11 10 X1X0 00 01 11 10 X1X0 00 1 0 0 0 00 1 0 0 0 01 1 1 0 0 01 1 1 0 0 11 1 1 1 0 11 1 1 1 0 10 1 1 0 1 10 1 1 0 1 00 01 11 10 C= F= Y1Y0 Y1Y0 00 01 11 10 X1X0 X1X0 00 0 1 1 1 00 1 1 1 1 01 1 0 1 1 01 1 1 1 1 11 1 1 0 1 11 1 1 1 1 10 1 1 1 0 10 1 1 1 1 D= G= Segmentos complemento: Y1Y0 00 01 11 10 00 0 1 1 1 01 1 0 1 1 11 1 1 0 1 10 1 1 1 0 X1X0 E= Y1Y0 00 01 11 10 00 1 1 1 0 01 0 1 1 1 11 1 1 1 0 10 1 1 0 1 X1X0 A= .

Y1Y0 Y1Y0 00 01 11 10 X1X0 00 01 11 10 X1X0 00 0 0 0 1 00 1 1 1 1 01 0 1 1 1 01 1 1 1 0 11 1 1 1 1 11 0 1 1 0 10 1 0 1 0 10 0 1 0 0 00 01 11 10 B= E= Y1Y0 Y1Y0 00 01 11 10 X1X0 X1X0 00 0 0 0 0 00 0 0 0 0 01 1 1 1 1 01 1 1 1 1 11 1 0 1 1 11 1 0 1 1 10 1 1 1 1 10 1 1 1 1 00 01 11 10 C= F= Y1Y0 Y1Y0 00 01 11 10 X1X0 X1X0 00 0 0 0 0 00 1 1 1 1 01 1 1 1 1 01 1 1 1 1 11 1 0 1 1 11 1 0 0 0 10 1 1 1 1 10 0 1 1 1 D= G= .

or (c1='0' and c0='1' and x1='1' and x0='0' and y1='0' and y0='1') . or (c1='1' and c0='0' and x1='1' and x0='1' and y1='1' and y0='1') c<='1' when (c1='0' and c0='0' and x1='0' and x0='0' and y1='1' and y0='0') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='0' and x0='1' and y1='0' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='1' and y0='1') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='1' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='1' and y0='0') else '0'.El código en VHDL utilizando when-else nos quedara de la siguiente manera: b<='1' when (c1='0' and c0='0' and x1='1' and x0='0' and y1='1' and y0='1') a<='1' when (c1='0' and c0='0' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='0' and c0='0' and x1='1' and x0='1' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='0' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='1' and y1='1' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='1' and y0='1') or (c1='0' and c0='1' and x1='1' and x0='0' and y1='1' and y0='1') or (c1='0' and c0='0' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='1' and x1='1' and x0='1' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='0' and y0='0') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='0' and c0='1' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='1' and y0='1') or (c1='1' and c0='0' and x1='0' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='0' and x0='1' and y1='0' and y0='0') or (c1='1' and c0='0' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='0' and y0='1') or (c1='1' and c0='0' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='1' and y0='0') else '0'.

or (c1='0' and c0='0' and x1='0' and x0='1' and y1='1' and y0='1') e<='1' when (c1='0' and c0='0' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='0' and c0='0' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='0' and x0='0' and y1='1' and y0='1') or (c1='0' and c0='0' and x1='1' and x0='1' and y1='0' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='0' and y0='0') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='1' and y0='0') . or (c1='1' and c0='1' and x1='1' and x0='0' and y1='0' and y0='0') d<='1' when (c1='0' and c0='0' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='1' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='1' and y0='0') else '0'.or (c1='1' and c0='0' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='0' and c0='1' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='1' and c0='0' and x1='0' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='1' and x1='1' and x0='1' and y1='1' and y0='1') or (c1='1' and c0='0' and x1='0' and x0='0' and y1='1' and y0='1') or (c1='1' and c0='0' and x1='0' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='0' and x1='0' and x0='1' and y1='1' and y0='0') or (c1='1' and c0='0' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='0' and x1='0' and x0='1' and y1='1' and y0='1') or (c1='1' and c0='0' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='1' and c0='0' and x1='1' and x0='0' and y1='1' and y0='1') or (c1='1' and c0='0' and x1='1' and x0='1' and y1='1' and y0='1') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='1' and y0='1') or (c1='1' and c0='1' and x1='0' and x0='1' and y1='1' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='0' and y0='1') else '0'.

or (c1='0' and c0='0' and x1='1' and x0='1' and y1='1' and y0='0') f<='1' when (c1='0' and c0='0' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='1' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='0' and y1='1' and y0='1') or (c1='0' and c0='1' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='0' and y0='0') or (c1='0' and c0='1' and x1='1' and x0='1' and y1='0' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='0' and c0='1' and x1='1' and x0='1' and y1='1' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='1' and y0='0') or (c1='1' and c0='0' and x1='0' and x0='0' and y1='0' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='0' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='0' and c0='0' and x1='1' and x0='0' and y1='0' and y0='1') or (c1='1' and c0='0' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='1' and y1='0' and y0='0') or (c1='1' and c0='0' and x1='1' and x0='1' and y1='1' and y0='1') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='0' and y0='1') .or (c1='0' and c0='0' and x1='0' and x0='1' and y1='1' and y0='1') or (c1='1' and c0='1' and x1='0' and x0='1' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='0' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='0' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='0' and y1='1' and y0='1') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='1' and y0='1') or (c1='0' and c0='0' and x1='1' and x0='1' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='0' and y0='0') or (c1='0' and c0='0' and x1='1' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='1' and y0='0') else '0'.

g<='1' when (c1='0' and c0='0' and x1='0' and x0='0' and y1='0' and y0='0') . or (c1='1' and c0='1' and x1='1' and x0='1' and y1='1' and y0='0') else '0'.or (c1='0' and c0='1' and x1='0' and x0='1' and y1='1' and y0='0') or (c1='0' and c0='0' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='1' and y0='1') or (c1='0' and c0='0' and x1='0' and x0='1' and y1='0' and y0='0') or (c1='0' and c0='1' and x1='1' and x0='0' and y1='0' and y0='1') or (c1='0' and c0='1' and x1='0' and x0='0' and y1='0' and y0='0') or (c1='0' and c0='1' and x1='1' and x0='1' and y1='0' and y0='1') or (c1='0' and c0='1' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='1' and c0='0' and x1='0' and x0='0' and y1='0' and y0='1') or (c1='0' and c0='1' and x1='0' and x0='0' and y1='1' and y0='0') or (c1='1' and c0='0' and x1='0' and x0='0' and y1='1' and y0='0') or (c1='0' and c0='1' and x1='0' and x0='0' and y1='1' and y0='1') or (c1='1' and c0='0' and x1='0' and x0='0' and y1='1' and y0='1') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='0' and y0='0') or (c1='1' and c0='0' and x1='0' and x0='1' and y1='1' and y0='0') or (c1='0' and c0='1' and x1='0' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='0' and x1='0' and x0='1' and y1='1' and y0='1') or (c1='0' and c0='1' and x1='1' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='0' and x1='1' and x0='0' and y1='1' and y0='1') or (c1='0' and c0='1' and x1='1' and x0='1' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='1' and y0='0') or (c1='1' and c0='1' and x1='0' and x0='0' and y1='1' and y0='1') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='0' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='0' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='1' and y0='0') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='0' and y0='1') or (c1='1' and c0='1' and x1='1' and x0='1' and y1='1' and y0='1') else '0'.

CONCLUSIONES  Mediante el proyecto presentado se pudo aprender a manejar los led’s 7 segmentos como un puerto de salida que mostrara en numero decimal la salidas binaria  En el trabajo anterior se pudo concluir que una manera mas fácil de simplificar cálculos y de obtener fácilmente el código en VHDL es el de usar la configuración funcional when-else ya que no necesitamos hacer los mapas k y podemos introducir el código sin estos. reduciendo tiempo y trabajo.  En el proyecto se pudo comprender el comportamiento de uno de los circuitos lógicos aritméticos (ALU) y sus posibles usos.  Se concluye que a la hora de introducir los comandos para el código VHDL se debe trabajar con solo una condición o ‘0’ o ‘1’ para no tener problemas en la síntesis del programa. para poder utilizar los led’s. .  Se concluye con este trabajo que es mejor trabajar con lógica negativa en la tarjeta NEXYS 2 ya que no necesita tanta configuración como la necesita la configuración positiva.