Está en la página 1de 23

Reporte de Prctica

Universidad Politcnica de Victoria


Maestra en Ingeniera
Tarea 1
Reporte de Prctica

Profesor: Dr. Marco Aurelio Nuo Maganda

Materia: Procesadores Digitales

Alumno: Sergio Isauro Flores Vzquez

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

Introduccin
En este reporte de practica se podr leer la descripcin detallada de todo el proceso que se sigui para llevar a cabo la prctica 1 que consto de dos ejercicios del libro Digital Design with CPLD Applications & VHDL. Estos ejercicios se describirn a continuacin. Para el desarrollo de la prctica se tuvo que recurrir a las tcnicas tanto de construccin como de simplificacin de circuitos lgicos digitales ya que, por ejemplo, en cada uno de los ejercicios se nos dio una tabla de verdad a partir de la cual se escribi su funcin booleana. Una vez obtenida la funcin booleana se redujo por medio de Mapas de Karnaugh y esta reduccin se comprob mediante algebra booleana. Tambin se tuvieron que construir estos circuitos utilizando lenguaje VHDL, para esto se utilizo un software proporcionado por el profesor llamada Aldec Active-HDL versin 8.1. A continuacin se mostrara a detalle cada uno de los problemas desarrollados en la prctica.

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

Desarrollo de la Prctica
Problema 3.29 (Capitulo 3 - Digital Design with CPLD Applications & VHDL )

Resolver el siguiente ejercicio de simplificacin de funciones lgicas mediante dos mtodos: 1. Utilizando teoremas de Algebra Booleana 2. Utilizando el mtodo de Mapas de Karnaugh Implementar en VHDL ambas funciones (original y simplificada) y validar mediante una simulacin la equivalencia de ambas funciones. En la Fig. 1 podremos ver la tabla de verdad del primer ejercicio. A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y 1 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1

Fig.- Tabla de Verdad de ejercicio 1

Una vez que se nos proporcion la tabla de verdad podemos usarla para obtener su funcin Booleana, esta se construye tomando los valores que hay en la combinacin de entradas (A, B, C, D) en donde la salida este marcada como un 1 lgico. Esta es la funcin lgica de la tabla de verdad mostrada:
Y = ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

En base a la funcin lgica se puede crear el circuito lgico original, aun sin simplificar. Como ya es sabido para construir el circuito lgico se utiliza la funcin booleana anterior, los elementos multiplicados son unidos en una sola compuerta lgica AND y los elementos que se suman, se unen mediante una compuerta lgica OR. Cabe destacar que las compuertas lgicas utilizadas fueron adaptadas a las encontradas comercialmente, por ejemplo en el caso de la compuerta OR, nuestra funcin cuenta con 6 elementos que deben ser sumados y esto se tuvo que adaptar en dimensin a las compuertas OR de 4 entradas 1 salida, por lo que se usaron 3 compuertas en total. En la Fig. 2 se puede ver la forma en que fue construido el circuito lgico tomado directamente de la tabla de verdad. El circuito fue diseado en la seccin de construccin de diagramas lgicos del programa Aldec Active-HDL.

Fig. 2.- Circuito Lgico No Simplificado (Ejercicio 1).

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

El siguiente paso fue que en base a la funcin lgica original se tuvo que realizar una simplificacin del circuito, esto con el fin de ver el modo en que el circuito es minimizado logrando as un ahorro tanto en cantidad como en costo de componentes. El Mapa de Karnaugh no es ms que una representacin visual de la tabla de verdad, esta herramienta aprovecha la capacidad de nuestro cerebro para reconocer patrones y la expresin analtica, de este modo es como nos es posible eliminar patrones o condiciones redundantes. Para construirlo solo se necesita transferir los trminos de la tabla de verdad al mapa k en forma directa, es decir solo colocando los unos o ceros en su coordenada respectiva. En la Fig. 3 podemos ver como fue construido el Mapa K del ejercicio 1

Fig. 3.- Mapa de Karnaugh (ejercicio 1).

Una vez construido el mapa de Karnaugh, el siguiente paso es seleccionar los conjuntos de trminos de manera tal que se obtenga el menor nmero de trminos posible. Estos trminos se seleccionan formando grupos de rectngulos cuyas reas sean potencia de 2 tratando de agrupar el mayor nmero de trminos posible. La funcin lgica fue reducida satisfactoriamente mediante la herramienta de Mapa K y quedo de la siguiente manera:
Y = CD + AC+ BCD

Claramente se puede ver que despus de la minimizacin los trminos fueron reducidos en gran medida, de tener 9 elementos sumados de 4 variables cada uno, ahora tenemos esta funcin reducida a 3 elementos sumados de 2 y 3 trminos. Gracias a esta reduccin en la funcin booleana el circuito lgico tambin es minimizado y trabaja del mismo modo que el original. En la Fig. 4. Podremos ver como quedo construido el circuito lgico de esta funcin booleana reducida.

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

Fig. 4.- Circuito Lgico reducido mediante Mapa de Karnaugh.

Por ltimo solo hace falta realizar la simplificacin de la funcin lgica original haciendo uso del lgebra Booleana. A continuacin se desarrollar el procedimiento.
Y = ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD (Funcin Original)
Y = ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD (Reacomodando trminos segn Mapa de Karnaugh) CD (AB + AB) + CD (AB + AB) >>> se eliminan los trminos en parntesis por el teorema de cancelacin CD + CD = CD >>> se queda un solo termino por el teorema de idempotencia CD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD AC (BD + BD) + AC (BD + BD) >>> Igual, se eliminan trminos entre parntesis por cancelacin AC + AC = AC CD + AC + ABCD + ABCD BCD (A + A) CD + AC + BCD (Funcin Reducida igual a la obtenida con Mapas K)

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

Hasta este punto ya se realizo todo el trabajo a mano o a lpiz, por as decirlo, ya que el siguiente paso fue implementar estos dos circuitos (original y simplificado) en un software de diseo en lenguaje VHDL. Para empezar a trabajar en esta parte de la prctica primero iniciamos el programa Aldec Active VHDL, en este caso usamos la versin 8.1. La Fig. 5 nos muestra la pantalla de bienvenida del software.

Fig. 5.- Pantalla de Bienvenida de Aldec Active VHDL.

Al terminar el proceso de carga del programa nos aparecer un cuadro de dialogo como el de la Fig. 6, en el seleccionaremos Create a New Work Space Nota: En la imagen mostrada aparecen varios diseos creados, esto es porque al momento de redactar este reporte los diseos ya haban sido terminados.

Fig. 6.- Getting Started

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

Al Work Space lo llamaremos Problema_tarea_1, despus de esto hay que crear un nuevo diseo para empezar a trabajar en el, en este caso nuestro diseo ser el correspondiente al primer ejercicio asignado, que es el que se ha ido mostrando en las pginas anteriores. La creacin de diseos corresponde al diseo en donde se alojaran los circuitos original, simplificado y la validacin de estos dos, pero hay que recordar que tambin tienen que ser creadas las compuertas y circuitos de forma separada dentro del diseo. Para crear un nuevo diseo hay que seleccionar, Create New Design y nos aparece una ventana como la que se muestra en la Fig. 7.

Fig. 7.- New Disign Wizard

A cada diseo hay que ajustarle las propiedades bsicas, estas se dejan tal cual aparecen por default en la pantalla de modificacin, adems tenemos que asignarle un nombre a cada diseo.

Fig. 8 y 9.- Default Properties e Informacin Bsica de los Diseos.

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

Una vez que se creo el primer diseo bajo el nombre Problema_1 hay que empezar a crear las arquitecturas de las compuertas lgicas que se van a utilizar, para esto nos dirigimos a la seccin de Add new file en la seccin de Design Browser, se selecciona la opcin de VHDL Source Code para crear la arquitectura de la compuerta lgica.

Fig. 10.- Abriendo un nuevo Archivo (Creacin de elementos)

Cuando se llegue al punto en donde se nos pida asignarle el nombre a cada archivo y a su arquitectura de trabajo se usara el mismo nombre solo agregando las siglas Arq seguidas de un guion bajo antes del nombre del diseo (por ejemplo: Arq_nombre de diseo), esto solo con el fin de diferenciar visualmente los nombres para evitar confusiones.

Fig. 11.- Nomenclatura utilizada en Archivos y Arquitecturas de Archivos

En la Fig. 12 se muestra un ejemplo de como puede ser creada una compuerta lgica, en este punto solo se definen el nombre de cada puerto de entrada y salida. Esta forma de asignacin ser la misma que se emplear en la creacin de circuitos y en la validacin.

Cd. Victoria, Tamaulipas - Octubre 2012

Reporte de Prctica

Fig. 12.- Ejemplo de Asignacin y Etiquetado de puertos de compuertas y/o circuitos.

Una vez creado el nuevo elemento (Ya sea compuerta, circuito o bloque de validacin) el siguiente paso es asignarle la operacin lgica que har, esto mediante lenguaje VHDL. Para hacer esto basta con dirigirnos a la seccin del Design Browser en donde esta el elemento creado y dar click para abrir la opcin de edicin en VHDL, en la Fig. 13 se muestra como ejemplo como es asignada la funcin lgica AND a un archivo creado con 3 puertos, dos entradas y una salida, en la seccin de entity vemos la asignacin de puertos y en la seccin despus de la arquitectura denotada con la palabra clave begin es en donde escribimos como trabajar este elemento. Para el caso de la compuerta AND se escribi en cdigo lo siguiente: S <= A and B; con esto decimos que se har la funcin lgica AND entre los puertos A y B y el resultado ser asignado al puerto de salida denotado como S.

Fig. 13.- Asignacin de modo de trabajo a los archivos creados (Ejemplo de Compuerta AND).

Cd. Victoria, Tamaulipas - Octubre 2012

10

Reporte de Prctica

Cuando hayamos terminado de crear todas las compuertas lgicas, nos aparecern en el Design Browser tal como se muestra en la Fig. 14.

Fig. 14 Design Browser con todos los archivos creados.

Ahora el siguiente paso es crear los circuitos (Simplificado y Original), estos se compondrs de las compuertas cuyas arquitecturas ya fueron creadas en los archivos correspondientes. Para esto se repetirn los pasos anteriores de creacin de archivos. Empezaremos primero con el Circuito Original, una vez que fue creado el archivo lo primero que tenemos que hacer es crear las seales con que trabajara el circuito. Estas seales no son ms que seales temporales (interconexiones entre compuertas lgicas), aclarando que no corresponden a las seales de entrada y salida del circuito. En mi caso particular opte por denominar las seales con nombres que fueran fcilmente identificables con dimensiones cortas, pro ejemplo para denominar las seales negadas de las entradas se escribi acomplemento a la seal A, las seales llamadas saladn1, segn mi nomenclatura adoptada significa Salida de la compuerta AND numero 1.

Fig. 15.- Seales creadas para el Circuito Original.

Cd. Victoria, Tamaulipas - Octubre 2012

11

Reporte de Prctica

Una vez que fueron declaradas todas las seales temporales que se utilizaran es momento de crear las interconexiones entre los componentes del circuito, esto se hizo mediante lenguaje VHDL. En este punto se les asigno un nombre y numero a cada compuerta lgica para diferenciarlas tanto en el diagrama como en el cdigo, por ejemplo en este caso se necesitaron 4 inversores, cada uno fue nombrado con las siglas INV seguido de un numero (INVX), esto se repetir con cada una de las compuertas ya que esta tcnica nos permite darle una mejor esttica a la estructura del cdigo en el programa.

En la Fig. 16 podemos ver una seccin del cdigo VHDL en la cual estn creadas ya las compuertas con sus debidas interconexiones.

Fig. 16.- Compuertas e Interconexiones del Circuito Original.

== CIRCUITO ORIGINAL TERMINADO ==

Cd. Victoria, Tamaulipas - Octubre 2012

12

Reporte de Prctica

Ya tenemos terminada la parte del circuito original, ahora lo siguiente es crear el circuito simplificado, para evitar extender este reporte nos brincaremos los pasos de creacin de diseos y archivos anteriores y nos situaremos en el punto de asignacin de seales. Como podemos ver en la Fig. 17, para el Circuito Simplificado las seales temporales se redujeron.

Fig. 17.- Seales Temporales de Circuito Simplificado

Ya que se crearon las seales temporales ahora sigue las interconexiones entre compuertas para formar el circuito lgico en lenguaje VHDL. En la figura siguiente se podr ver todo esto.

Fig. 18.- Compuertas e Interconexiones del Circuito Simplificado.

== CIRCUITO SIMPLIFICADO TERMINADO ==

Cd. Victoria, Tamaulipas - Octubre 2012

13

Reporte de Prctica

Por ltimo solo falta validar que los dos circuitos creados funcionan de igual forma, ya que los dos deben de realizar la misma funcin. Para realizar esta validacin solo fue necesario crear un nuevo bloque en el diseo que lo llamamos probador_circuitos este bloque consto de un puerto de entrada tipo vector (4 bits) en el cual se le inyectara la seal de las 4 entradas (A, B, C y D) y dos salidas llamadas Salida 0 y Salida 1 por las cuales saldr la seal de salida del Circuiro Original y Circuito Simplificado respectivamente. Esto ya implementado en cdigo VHDL quedo tal como se muestra en la Fig. 18, ah podremos ver que como se menciono antes tiene 3 puertos, 1 entrada tipo vector y dos salidas estndar, y solo dos entidades, correspondientes al circuito original y al circuito simplificado.

Figura. 19.- Cdigo VHDL de la prueba de circuitos (Validacin).

Cd. Victoria, Tamaulipas - Octubre 2012

14

Reporte de Prctica

Una vez que compilamos el programa y no marco ningn error es momento de abrir una herramienta muy prctica con la que cuenta este software, se trata de un simulador de formas de onda de las seales del circuito lgico, para esto solo es necesario dirigirnos a la barra de herramientas de la parte superior, dar click sobre el icono que dice se llama New Wave Form (flecha roja Fig. 20) y se abrir una nueva ventana en la cual seleccionaremos la arquitectura de prueba_circuitos (recuadro amarillo Fig. 20).

Fig. 20.- Abrir herramienta de formas de onda.

Una vez que se abri la ventana hay que agregar las seales que queremos ver, solo seleccionamos la opcin Add Signals, se abre una nueva ventana y seleccionamos la entrada y las dos salidas (Fig. 21a). Despus es necesario estimular la entrada tipo vector con un contador binario ya que hay que recordar que esta entrada consta de 4 entradas que deben corresponden a una suma binaria.

Fig. 21a (Agregar seales)

Fig. 21b (Asignar contador binario a entrada)

Cd. Victoria, Tamaulipas - Octubre 2012

15

Reporte de Prctica

Al final solo es necesario simular o correr el programa y se obtuvo la forma de onda que se muestra en la Fig. 22, como podemos ver claramente se esta realizando la misma funcin de salida tanto en el circuito original como en el simplificado.

Fig. 22.- Forma de onda de las salidas del circuito.

Ahora bien podemos desplegar la entrada tipo vector para ver que una a una las entradas que estimulan a los circuitos.

Fig. 23.- Forma de onda desplegada de las salidas del circuito.

== LOS CIRCUITOS FUNCIONAN CORRECTAMENTE ==

Cd. Victoria, Tamaulipas - Octubre 2012

16

Reporte de Prctica

Problema 3.36 (Capitulo 3 - Digital Design with CPLD Applications & VHDL )

Resolver el siguiente ejercicio de simplificacin de funciones lgicas mediante dos mtodos: 3. Utilizando teoremas de Algebra Booleana 4. Utilizando el mtodo de Mapas de Karnaugh Implementar en VHDL ambas funciones (original y simplificada) y validar mediante una simulacin la equivalencia de ambas funciones. En la Fig. 1 podremos ver la tabla de verdad del primer ejercicio. A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y 0 0 1 1 0 0 0 0 0 1 X X X X X X

En este ejercicio volvemos a obtener la funcin booleana de la tabla de verdad, pero como podemos notar la tabla cuanta con valores marcados como X, esto es conocido como condiciones de no importa, las cuales pueden ser tomadas como ceros o unos, a conveniencia. Por el momento la funcin booleana queda de este modo, mas adelante con el mapa k veremos si nos conviene tomar alguna de las X como unos o no.
Y = ABCD + ABCD + ABCD

Cd. Victoria, Tamaulipas - Octubre 2012

17

Reporte de Prctica

Ahora, minimizando mediante mapa de Karnaugh obtenemos los grupos pero analizando bien vemos que las condiciones de no importa que corresponden a la entrada 1101, 1111, 1011 y 1010 fueron tomadas como unos lgicos para poder formar grupos mas grandes y realizar una reduccin mayor de trminos. En la Fig. 24 podemos ver los grupos en el mapa K.

Fig. 24.- Mapa de Karnaugh ya marcado con los grupos seleccionados.

Entonces ahora la funcin booleana original aumenta en numero de elementos ya que 4 condiciones de no importa fueron tomadas como unos, y quedo de la siguiente manera.
Y = ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD

Se construye el circuito lgico en base a esta funcin booleana.

Fig. 24.- Circuito Original del problema 2.

Cd. Victoria, Tamaulipas - Octubre 2012

18

Reporte de Prctica

La funcin booleana ya considerando las condiciones de no importa fue reducida gracias al mapa K quedando de esta forma:
Y = AD + BC

De nuevo, es necesario construir el circuito lgico de esta funcin, en este podemos ver que la reduccin de espacio y componentes de nuevo es considerable y fcil de distinguir.

Fig. 25.- Circuito Simplificado del problema 2.

Y realizando la comprobacin mediante algebra booleana podemos ver que la reduccin es correcta, esto se muestra a continuacin.

Como podemos ver la comprobacin mediante algebra booleana fue correcta.

Cd. Victoria, Tamaulipas - Octubre 2012

19

Reporte de Prctica

Ahora de nuevo sigue la parte de la realizacin en cdigo VHDL, pero esta vez omitiremos el procedimiento ya que fue explicado en el problema anterior, solo nos enfocaremos a explicar los detalles y notas importantes. Del mismo modo que en problema anterior se tuvieron que agregar las seales con las cuales trabajara nuestro circuito original, en la Fig. 26 se pueden ver las seales temporales que se declararon.

Fig. 26.- Seales Temporales declaradas en Circuito Original.

Ahora, omitiendo las explicaciones anteriormente dadas, el cdigo completo del archivo del circuito original es el siguiente.

Fig. 27.- Cdigo VHDL del Circuito Original.

== CIRCUITO ORIGINAL TERMINADO ==

Cd. Victoria, Tamaulipas - Octubre 2012

20

Reporte de Prctica

Una vez terminado el circuito original se paso a la realizacin en lenguaje VHDL del circuito simplificado, en este podremos ver que tanto el cdigo como las seales temporales declaradas son menores.

Fig. 27.- Cdigo VHDL y Seales declaradas en Circuito Simplificado.

== CIRCUITO SIMPLIFICADO TERMINADO ==

Del mismo modo que en el problema 1 es necesario comprobar que los dos circuitos tanto original como simplificado realizan la misma funcin de salida. En la Fig. 28 podemos ver la salida generada por los dos circuitos y podemos compararlas.

Fig. 28.- Ondas de salida de la prueba de circuitos.

Cd. Victoria, Tamaulipas - Octubre 2012

21

Reporte de Prctica

En la Fig. 29 podremos ver que en la seal de salida, correspondiente a la salida 1 que fue asignada al circuito simplificado tenemos una serie de dos pulsos positivos que en el circuito original no tenemos. Esto se debe a que si observamos bien, el circuito original que creamos en cdigo VHDL no consideramos ninguna de las condiciones de no importa de la tabla de verdad, fueron tomadas a conveniencia como ceros lgicos para minimizar el circuito pero caso contrario, en el circuito simplificado si fueron tomadas algunas de las condiciones de no importa como unos ya que segn el mapa de Karnaugh nos permiti hacer una reduccin mayor de componentes, pero si estos circuitos son llevados a la prctica se supone que estos pulsos positivos no afectaran para nada el proceso en donde se encuentre funcionando este circuito ya que las condiciones de no importa nos dicen que no afectan ni alteran el funcionamiento final del proceso en el cual esta aplicado el circuito.

Fig. 29.- Pulsos positivos en causados por las condiciones de no importa.

== LOS CIRCUITOS FUNCIONAN CORRECTAMENTE ==

Cd. Victoria, Tamaulipas - Octubre 2012

22

Reporte de Prctica

Conclusiones
Durante la realizacin de esta prctica fue necesario dar un repaso general de algunos temas de algebra booleana y de la realizacin y minimizacin de circuitos lgicos digitales, esto nos ayudo mucho a recordar algunos aspectos que nos servirn para la realizacin de todas las prcticas posteriores y adems nos ayudan no solo a desempolvar el conocimiento sino que tambin nos ayudan a mejorar las tcnicas aprendidas en la Licenciatura para poder enfrentar los problemas vindolos desde una perspectiva diferente con la que los veamos en ocasiones pasadas. Adems esta prctica nos fue muy til en el sentido de que nos permiti comprender el proceso de realizacin de programas y la estructuracin del lenguaje VHDL en este entorno de desarrollo. Aunque este lenguaje tiene una similitud con el lenguaje C es muy diferente no solo en la estructuracin sino en capacidades, ya que este tipo de cdigo es descargado en un hardware que actualmente es de los mas rpidos y funcionales en el mercado, los FPGAs, este procedimiento se ver algunas prcticas adelante con lo que espero que las tcnicas aprendidas en este curso me sean de gran utilidad para mi futuro en mi proceso de formacin en este programa de posgrado.

Cd. Victoria, Tamaulipas - Octubre 2012

23

También podría gustarte