Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ingeniería
Departamento de Ingeniería Eléctrica
Laboratorio de Diseño Digital (6617)
Práctica No. 01
Introducción al software de
descripción de hardware y
compuertas lógicas
Grupo laboratorio: 02
12 de septiembre de 2022
Índice
Objetivo 3
Material 3
Introducción 3
Desarrollo 4
Actividad 1. Introducción al software de descripción de hardware. 4
Actividad 2. Para la función H. 11
Actividad 3. Para el problema, Jorge va al cine. 12
Actividad 4. Para la función F. 14
Actividad 5. Para la función G y G2. 15
Actividad 6. Para el sumador. 16
Actividad 7. Para el bus de datos. 17
Actividad 8. Para la función K. 18
Actividad 9. Para el comparador. 19
Conclusiones 21
Referencias 21
Investigación Previa 22
Objetivo
Analizar, diseñar, simular e implementar compuertas lógicas.
Material
o Software Quartus II
Introducción
Las Compuertas Lógicas son circuitos eléctricos especialmente diseñados para trabajar con datos booleano (0,
1). Éstos permiten dar datos de entrada y salida con funciones lógicas como suma y multiplicación
principalmente, aunque igualmente pueden volverse más complejas estás compuertas, dando como resultado
variantes que niegan entradas, afirman, incluyen o excluyen según sea el caso.
Las compuertas lógicas trabajan en estado Alto y estado Bajo, también llamandose, "1" o "0", los cuales se
relacionan con la lógica positiva y negativa del circuito digital; el estado Alto suele tener un valor de 5v como
máximo y el estado Bajo tiene un valor de 0v como mínimo, manteniendose un umbral entre ambos estados
donde el resultado puede variar sin saber con exactitud la salida que nos entregara. Las lógicas se explican a
continuación.
Algunas de las compuertas lógicas más comunes son: AND, OR, NOT, NAND, NOR, XOR, XNOR y se
desarrollaran más durante la investigación previa en el presente reporte de práctica.
VHDL, de sus siglas en inglés (Very High Speed Integrated Circuit Hardware Description Language) es un
lenguaje utilizado para la descripción de diseños digitale y para automatizar procesos de diseño electrónico;
tiene una sintaxis bastante amplia y permite modelar de manera estructural flujos de datos y comportamiento de
hardware en varios estilos.
- Circuitos descritos utilizando VHDL, siguiendo unas guías para síntesis, pueden ser utilizadas por
diversas herramientas de síntesis para crear e implementar circuitos.
- Los módulos creados en VHDL pueden utilizarse en diferentes diseños, lo que permite la reutilización
del código. Además, la misma descripción puede utilizarse para diferentes tecnologías sin tener que
rediseñar todo el circuito.
- Al estar basado en un estándar (IEEE std 1076-1987, IEEE std 1076-1993) los ingenieros de toda la
industria de diseño pueden usar este lenguaje para minimizar errores de comunicación y problemas de
compatibilidad.
- VHDL permite diseño Top-Down, esto es, describir (modelar) el comportamiento de los bloques de
alto nivel, analizarlos (simularlos) y refinar la funcionalidad en alto nivel requerida antes de llegar a
niveles más bajos de abstracción de la implementación del diseño.
- VHDL permite dividir o descomponer un diseño hardware y su descripción VHDL en unidades más
pequeñas (modularidad).
En la presente práctica se busca comprender la relación práctica entre el uso de compuertas lógicas
y del lenguaje VHDL para programar físicamente sobre una tarjeta las funciones necesarias para
cualquier diseño que se quiera realizar en un futuro.
Desarrollo
Actividad 1. Introducción al software de descripción de hardware.
Realice todos los pasos requeridos para crear en el entorno de la plataforma de Quartus, un proyecto donde su
primer archivo sea un archivo por bloques/esquemático utilizando las librerías de la plataforma, para observar las
funciones lógicas, asigne los pines que corresponde a las entradas y a las salidas e implemente su proyecto en la
tarjeta de desarrollo.
IV. Después de hacer clic en Next, se procederá a la ventana para añadir diseños de páginas. Permitirá añadir
archivos al proyecto. De momento se omitirá está ventana y se procederá a la siguiente.
V. La siguiente ventana es la página de ajustes de dispositivos. En está ventana se permitirá al usuario añadir las
tablas y dispositivos de la familia ALTERA con los que se desee trabajar en el proyecto, incluyendo su
modelo y especificaciones.
Para el caso del presente reporte de práctica, se añadió la tarjeta MAX II en el modelo EPM240T100C5,
dado que es la que se trabajará durante el curso.
VI. La siguiente ventana permitirá añadir algunos ajustes especiales relacionados a las herramientas, simulación y
tiempo de análisis para el proyecto. De momento se omitirán los ajustes de esta ventana y se clickea Next.
VII. Finalmente, la siguiente ventana mostrará el resumen de los ajustes establecidos para el proyecto que se ha
creado. Si todos los ajustes son correctos, se presiona el botón de Finish.
VIII. Una vez creado el proyecto. aparecerá una interfaz parecida a la siguiente. Para crear un archivo esquemático
de bloques se dará clic en la pestaña File -> New -> Block Diagram / Schematic File.
Aparecerá un nuevo archivo en la interfaz.
IX. Para añadir elementos al diagrama de bloques, se empezará clickeando en el ícono Symbol Tool
X. Se desplegará la siguiente ventana. Para buscar las funciones necesarias simplemente se escribe el
nombre de la función o su clave de compuerta lógica.
XI. Posteriormente, se construirán las compuertas lógicas correspondientes junto a sus respectivas entradas y
salidas en forma de pines.
A continuación, se muestran las compuertas construidas durante la práctica:
❖ AND:
❖ OR:
❖ NOT:
❖ NAND:
❖ NOR:
❖ XOR:
❖ XNOR:
❖ BUFFER:
A B C H
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 0
El problema plantea si Jorge puede ir al cine acompañado y con auto, para esto pude ir con su
amiga Carme, la cual solo está disponible si la temperatura es menor a 20° C y además que no esté
lloviendo, por otro lado puede ir acompañado de su padre, el cual está disponible si la temperatura
es mayor a 20° C, ya que de lo contrario visitará a su mamá. Por último, tenemos el auto disponible
si no llueve (el papá de Jorge no ocupará el auto) o la temperatura es mayor a 20 °C (su padre no
verá a su mamá, por lo que puede ir en auto con Jorge).
Salidas
C=1 (Carmen disponible)
P=1 (papá disponible)
A=1 (auto disponible)
X=1 (Jorge acompañado y en auto)
Para la descripción estructurada se utilizaron 5 variables auxiliares, esto para declarar las
condiciones en las que Carmen estaría disponible (m0), el papá disponible (m1), el auto disponible
(m2), después para declarar cuando la salida X sea 1, es decir las condiciones en que Jorge puede ir
al cine acompañado y en auto (n1 y n2).
Podemos decir que no es necesario utilizar todas las variables ya que en la reducción del circuito
solo utilizamos 3 variables, como se ve en el punto 5 del previo, la implementación en VHDL
quedaría de la siguiente forma:
Como se observa la reducción de nuestro circuito es X = L’ + T, lo que significa que para que Jorge
vaya al cine acompañado y en auto es necesario que no esté lloviendo o que la temperatura sea
mayor a 20° C.
Actividad 4. Para la función F.
Realice la simulación de la función reducida y mediante la tabla combinacional generada
anteriormente compruebe la validez de esta función con respecto a la original. Determine qué
propiedades intervinieron para llegar a una expresión mínima.
p q r F
0 0 0 0 1
1 0 0 1 0
2 0 1 0 1
3 0 1 1 1
4 1 0 0 1
5 1 0 1 1
6 1 1 0 0
7 1 1 1 1
Actividad 5. Para la función G y G2.
Compruebe al observar ambas salidas la validez de la función G2 con respecto a la original.
X Y Z G/G2
0 0 0 0 0
1 0 0 1 0
2 0 1 0 1
3 0 1 1 1
4 1 0 0 1
5 1 0 1 1
6 1 1 0 0
7 1 1 1 1
Simulación de la función G.
En la siguiente figura se muestra el esquema del sumador completo utilizando compuertas AND,
OR y NOT.
Ahora implementando el diseño anterior en un bloque para realizar la suma de 2 y 2 bits, tenemos
el siguiente diagrama.
A continuación se muestra la simulación de la suma propuesta en el cuestionario previo.
La entrada G es un habilitador que está conectada a los buffer de las entradas A0, A1, B0 y B1, de
tal forma que al tener un 1 en G, en Z0 y Z1 se mostrarán los datos de B0 y B1 respectivamente,
mientras que si en G tenemos un 0, en Z0 y Z1 tendremos los valores de A0 y A1 respectivamente.
La diferencia entre las salidas de Z y los valores lógicos 1 y 0, es que en Z se pueden mostrar varios
datos si se hace con un bus de datos o podríamos tener señales más complicadas si las entradas A y
B fueran señales, esto dependerá de la implementación de circuito.
Actividad 8. Para la función K.
Mediante la función canónica compruebe la validez de la reducción. Analice las ventajas y
desventajas del uso del método de mapas de Karnaugh comparado con la metodología hecha con
álgebra booleana.
Como se puede ver en la simulación de la función estructurada en el punto 9 del previo, esta
obedece a la tabla de verdad obtenida a través de los mintérminos que se nos da.
W X Y Z K
0 0 0 0 0 1
1 0 0 0 1 1
2 0 0 1 0 0
3 0 0 1 1 1
4 0 1 0 0 0
5 0 1 0 1 1
6 0 1 1 0 1
7 0 1 1 1 0
8 1 0 0 0 0
9 1 0 0 1 0
10 1 0 1 0 0
11 1 0 1 1 1
12 1 1 0 0 1
13 1 1 0 1 1
14 1 1 1 1
15 1 1 1 1 1
Actividad 9. Para el comparador.
Realice las pruebas necesarias para comprobar la funcionalidad del comparador. Comente la
efectividad del uso de mapas de Karnaugh para solucionar este circuito.
Realice la simulación de las funciones reducidas.
Los mapas de Karnaugh fueron realmente efectivos para hallar las expresiones de las salidas G, E y
L, ya que se obtuvieron en unos pocos y sencillos pasos, cosa que no es tan fácil de observar
únicamente en la tabla de verdad.
X1 X0 Y1 Y0 G E L
0 0 0 0 0 0 1 0
1 0 0 0 1 0 0 1
2 0 0 1 0 0 0 1
3 0 0 1 1 0 0 1
4 0 1 0 0 1 0 0
5 0 1 0 1 0 1 0
6 0 1 1 0 0 0 1
7 0 1 1 1 0 0 1
8 1 0 0 0 1 0 0
9 1 0 0 1 1 0 0
10 1 0 1 0 0 1 0
11 1 0 1 1 0 0 1
12 1 1 0 0 1 0 0
13 1 1 0 1 1 0 0
14 1 1 1 0 1 0 0
15 1 1 1 1 0 1 0
Conclusiones
Las investigación previa fué un gran preámbulo para poder aplicar los conceptos básicos revisados durante
clase teórica para comprender la importancia de las tablas de verdad al momento de construir funciones
lógicas con sus respectivos circuitos combinacionales: de pasar de una función a una tabla de verdad, de
tabla de verdad a función booleana, simplificó muchísimo la cantidad de cálcuos booleanos necesarios al
momento de aplicar las funciones en el programa de Quartus II. Respecto al trabajo durante laboratorio, se
pudo comprender cómo se crea un proyecto donde se asigne la tarjeta de trabajo, cómo hacer un diagrama
la importancia del diagrama de bloques y como pasar de éste diagrama a una programación en VHDL,
necesaria para que la tarjeta cumpla su función; el asignar los pines en la tarjeta permitió comprender mejor
la relación que guarda lo realizado en la plataforma con respecto al trabajo en físico.
Finalmente, se puede concluir que las compuertas lógicas aun siendo el elemento más básico para el diseño
digital son elementos con una gran importancia, sobre todo las compuertas OR, AND y NOT, ya que de
ellas surgen las demás compuertas como XOR, NAND, XNOR, etc. Por supuesto, las primeras compuertas
mencionadas mantendrían una jerarquía de uso mayor, gracias a que las funciones en su forma más reducida
tendrían mayor aparición.
A través de las actividades de esta práctica y de la resolución del cuestionario previo, se logró una gran
comprensión sobre el entorno del software Quartus II, lo que es la base para la implementación de los
distintos circuitos que hemos estado viendo, sumadores completos, comparadores, sumadores de más de un
bit, o diseños que resuelvan distintas problemáticas, especialmente estos últimos circuitos realizados por
nosotros mismos nos ayudaron bastante para poder asimilar cómo es que funcionan las operaciones lógicas
que realizan las compuertas, AND, OR, NOT, XOR, XNOR y NAND y de esta forma implementarlas
correctamente en nuestros circuitos. Ya avanzada un poco más de la mitad de la práctica comenzamos a
utilizar mapas de Karnaugh, esto para encontrar las expresiones más simples para las salidas de nuestros
circuitos, lo que encontramos como una herramienta muy útil y fácil de usar, ya que es bastante gráfica la
metodología seguida para encontrar las zonas que nos simplifican expresiones, esto en contraste con el
álgebra booleana que usamos al inicio para encontrar las expresiones mínimas, ya que esta herramienta
depende bastante del conocimiento que tengas sobre los axiomas y teoremas que conozcas sobre el álgebra
booleana.
Otra cosa que cabe mencionar, es que el lenguaje de descripción de software a través de código, es decir
VHDL fue también bastante fácil de utilizar y muy práctica la manera en que puedes alternar entre realizar
diseños a través de código y por medio de diagramas esquemáticos.
Referencias
● Notas personal de clase teórica de Diseño Digital con Ing. Roberto Federico Mandujano Wild.
● Sánchez-Élez, M. (2014, julio). INTRODUCCIÓN A LA PROGRAMACIÓN EN VHDL. Facultad de
● Mora Campos, A. (2010), Guía Básica del VHDL, Instituto Tecnológico de Querétaro,
http://www.itq.edu.mx/carreras/IngElectronica/archivos_contenido/Apuntes%20de%20materias/Apuntes
_VHDL_2016.pdf
Investigación Previa
Declaración estructural del circuito en VHDL.
Implementación por flujo de datos con ecuaciones booleanas.
Simulación
Por lo que vemos obtenemos la tabla de verdad y su respectiva reducción en esquema de bloques.
p q r F
0 0 0 0 1
1 0 0 1 0
2 0 1 0 1
3 0 1 1 1
4 1 0 0 1
5 1 0 1 1
6 1 1 0 0
7 1 1 1 1
Esquemático de la función G y declaración en VHDL de la función G2.
Tabla de verdad
X Y Z G/G2
0 0 0 0 0
1 0 0 1 0
2 0 1 0 1
3 0 1 1 1
4 1 0 0 1
5 1 0 1 1
6 1 1 0 0
7 1 1 1 1
Implementación del esquema del sumador completo para sumar 2 bits con 2 bits con acarreo inicial
en 0.
Declaración estructural de flujo de datos de la función K.