Está en la página 1de 8

Universidad Nacional

Autónoma de México

Diseño Digital
Moderno

Práctica 5. Minimización de
funciones por mapas de
Karnahugh

Grupo 1
Tema
Minimización de funciones por mapas de Karnahugh

• Objetivo
El alumno diseñará circuitos combinacionales.
El alumno analizará, diseñará e implementará multifunciones, con funciones no
especificadas, optimizando las funciones por medio de mapas de karnahugh.
• Introducción

Los mapas de Karnaugh constituyen un método sencillo y apropiado para la


minimización de funciones lógicas. El tamaño del mapa depende depende del
numero de variables.

Un mapa de Karnaugh es una representación gráfica de una tabla de verdad, y por


lo tanto existe una asociación unívoca entre ambas. La tabla de verdad tiene una
fila por cada mintérmino, mientras que el mapa de Karnaugh tiene una celda por
cada mintérmino. De manera análoga, también existe una correspondencia
unívoca entre las filas de la tabla de verdad y las celdas del mapa de Karnaugh si
se utilizan maxtérminos.

Al igual que en una tabla de verdad, en la que colocamos 1 o 0 en el valor de la


función correspondiente a una de las 2n combinaciones, así hacemos en un mapa
de Karnaugh, colocando un 1 en la celda correspondiente a la combinación para la
cual la función vale 1 y dejando en blanco las celda correspondientes a la
combinación para la cual la función vale 0.

Se denomina sistema combinacional o lógica combinacional a todo sistema


digital en el que sus salidas son función exclusiva del valor de sus entradas en un
momento dado, sin que intervengan en ningún caso estados anteriores de las
entradas o de las salidas.
Todos los circuitos combinacionales pueden representarse empleando álgebra de
Boole a partir de su función lógica, generando de forma matemática el
funcionamiento del sistema combinacional. Estas operaciones se pueden combinar
formando funciones más complejas.
Esto permite emplear diferentes métodos de simplificación para reducir el número
de elementos combinacionales que forman el sistema.
Un sistema combinacional puede realizar varias funciones lógicas que comparten
las mismas variables. Este sistema se denomina multifunción. Para simplificar una
multifunción se simplifica cada función independientemente. En la composición del
circuito combinacional no se debe repetir la realización de términos comunes a
varias salida.
• Informe del desarrollo de la práctica

En está practica antes de comenzar era necesario tener el trabajo previo porque
necesitábamos tener la función de nuestro número de cuenta.
Podíamos hacer el diagrama, pero era algo complicado ya que no estaba
minimizado y eran muchas compuertas, o podíamos declarar las variables y
comenzar a escribir el código, guiándonos con la parte del trabajo previo donde
minimizamos utilizando los mapas de Karnaugh, decidí hacer esto.
Como primer paso comenzamos declarando las variables, después de obviamente
haber creado un nuevo proyecto

Lo siguiente que hicimos fue empezar a modificar el código, xilin te ayuda creando
la primera parte del programa con las variables que declaramos como entradas y
salidas, pero después debes continuar escribiendo el código de las funciones de
salida, ocupamos not, and y or.
El siguiente paso es hacer la simulación
Para que nos quede la simulación primero es necesario compilar el diagrama y eso
lo hacemos en la ventana de Processes> Synthesize -XST
Para hacer la simulación tenemos que seleccionar nuestro archivo después damos
click y elegimos new sources> Test bench WaveForm, escogemos un nombre,
siguiente y finich.
Nos aparece una ventana donde debemos cambiar por Combinacional (for internal
clock) y donde dice Initial Length of Test Bench tenemos que escribir un valor de
10000 ns
Al realizar esto nos aparece lo siguiente:
Entonces debemos proseguir dándole valores a las variables de entrada, para esto
damos doble click en la parte de la gráfica de cada una de las variables.
Al hacer esto aparece una ventana que dice set Value, debemos seleccionar Pattern
Wizard
Después en la ventana siguiente hay un parámetro llamado Pattern Type donde
debemos escoger Toggle y comenzar a llenar los Pattern Parameters que son Initial
Value, Other value y Toggle Every:
Primero se escribe 0,1,8 despues para la siguiente variable 0,1,4, luego para la que
sigue 0,1,2 y para la ultima 0,1,1, en la mayoría no afecta el número de ciclos pero
en la última debemos modificarlos a 16.

Después para acabar con la simulación debemos seleccionar Behavior> Xilin ISE
Simulator> Generate Expected y aparecera un recuadro para aceptar. En la misma
pestaña debajo de Generate Expected dice Simulate Behavioral mode y también
debo darle doble click
Finalmente aparece el resultado de la simulación:
Y con la línea verde debemos verificar que dé como resultado la combinación de
ceros y unos que nos indica la función, para esto necesitamos la tabla de verdad
de nuestro número de cuenta, si no resulta así, significa que algo hicimos mal al
momento de minimizar o de escribir el código.

El paso siguiente es declarar los pines


Los pines se colocan dentro de esta ventana que dice Xilin PACE, en la parte de
Design Object List - 1/0 Pins, y donde dice Loc
Cerramos esta ventana de los pines y del lado izquierdo donde está el signo de
interrogación en un círculo naranja y dice Implement Desing damos doble click para
que lo compile.
Posteriormente damos doble click abajo en la opción llamada Generate
Programming> Properties> Statup Opcions y cambiamos CCLK por JTAG Clock>
OK, después ya ponemos a compilar Generate Programming y aparecera una
ventana a la que le daremos Decline>OK
Una vez que terminamos estos pasos estamos listos para conectar la Basys 2
Digilent Adept>connect>Basys 2> FPBA> Browse y nos movemos a la carpeta
donde estamos trabajando seleccionamos nuestro archivo .bit y después el botón
de Programar

Una vez que se mandó todo a la Basys, podemos comprobar que este bien
moviendo los switch y comprobando que se prendan los leds de salida que deberían
encenderse
• Resultados, conclusiones, comentarios
Esta práctica fue interesante ya que en la teoría aprendimos a minimizar de
diferentes formas y al realizar esta práctica pusimos en prueba esos
conocimientos y con la basys pudimos comprobar que funcionara, al principio no
me salía la simulación entonces tuve que checar todo para ver en que me había
equivocado y me di cuenta que si había cometido algunos errores, modifique el
código y ya me salió correctamente la simulación para configurar la basys.