Tarea-1-SDI-115-2015

March 24, 2018 | Author: Javiier Umaña | Category: Vhdl, Hardware Description Language, Logic Gate, Computer Program, Run Time (Program Lifecycle Phase)


Comments



Description

Universidad de El SalvadorSistemas Digitales I Universidad de El Salvador Facultad de Ingeniería y Arquitectura Guía 1: “Introducción a los Lenguajes HDL” Francisco Cruz Juárez RESUMEN: Esta guía pretende ser una introducción a los lenguajes HDL (Hardware Description Language), específicamente para trabajar con AHDL (Altera Hardware Description Language) de Altera y VHDL (Very high speed integrated circuit Hardware Description Language) del estándar IEEE (Institute of Electrical and Electronics Engineers) std 1076-1987. Se explicará con mayor detalle VHDL para minimizar el contenido de la guía, pero el estudiante puede trabajar en el lenguaje que prefiera, además usar el sistema operativo de su preferencia. Para Windows (se necesita licencia) existen muchos IDE´s (Integrated Development Environment o Ambiente de Trabajo Integrado) y compiladores como lo son Max Plus de Altera, Active HDL y muchos otros. Con software libre se tiene GHDL para LINUX, y para visualizar resultados GTKWave. INTRODUCCIÓN: Los lenguajes HDL son muy variados, están desde los Netlist como Ada (lenguaje de programación nombrado en honor a Ada Lovelace, conocida popularmente como la primera programadora computacional y en este fue basado VHDL) hasta lenguajes tan potentes en los Introducción a Lenguajes HDL Sasi Ramírez que muchas veces el circuito ya no se ve claramente y más bien es un lenguaje de programación, esto tiene sus grandes ventajas aunque también existen desventajas, la más notable desventaja es que a la hora de implementar el circuito no es fácil pasar del programa de descripción al Hardware que lo implementa, este proceso es conocido como síntesis (Diseño). VENTAJAS DEL USO DE VHDL:  VHDL permite diseñar, modelar, y comprobar un sistema desde un alto nivel de abstracción bajando hasta el nivel de definición estructural de compuertas.  Al estar basado en un estándar (IEEE Std 10761987) los ingenieros de toda la industria de diseño pueden usar este lenguaje para minimizar errores de comunicación y problemas de compatibilidad.  Modularidad: VHDL permite dividir o descomponer un diseño hardware y su descripción en unidades más pequeñas. I Para escribir el código se puede utilizar cualquier editor de texto plano como Vi. Geany. guárdela con el mismo nombre del proyecto. hay diferentes versiones para cada sistema operativo. Para Linux: Descargar los archivos GHDL y GTKWave. Vim. Una forma muy sencilla de instalarlos es desde el synaptic pero en esta ocasión se hará con los comandos apt-get o dpkg. instalarlo al igual que se instalan todos los programas en Windows.0. 2. Creación del primer programa: En Windows: Si se utilizará el software de Altera. Uno muy bueno se encuentra en www.com. Luego seleccione la opción “nuevo archivo” como lo indica la flecha 2 en la imagen 1. Gedit.vhd. seleccione Text Editor File como se muestra en la imagen Imagen 3. Introducción a Lenguajes HDL Imagen 1 Imagen 2 3. Es importante que la extensión del archivo sea .0. se le dará el nombre de comp_and como se muestra en la imagen 2. se debe utilizar el comando dpkg –i *. 4. 1.altera. etc.deb Se instalarán todos los archivos que estén en la carpeta actual. en la guía se usa Ubuntu.Universidad de El Salvador Sistemas Digitales I Instalación de las herramientas programación y Simulación VHDL: de Para Windows: Descargar un IDE.0. Aparecerá una nueva ventana. abra una consola y escriba: apt-get install ghdl Si en cambio. en este caso comp_and. Cree nuevo proyecto file -> Name… como se muestra en la imagen 1 (flecha 1). los instaladores se encuentran en una carpeta.0. Luego aparecerá una ventana donde podrá editar texto. I . 0. Imagen 5. esto se muestra en la imagen 5 y por último en la ventana que apareció presione Start y luego ok. 6. Imagen 6.Luego compile el código. Imagen 4. vaya a la opción Processing ->Funtional SNF Stractor. Imagen 7 Introducción a Lenguajes HDL I . 7. la opción Max + Plus II -> compiler se muestra en la imagen 4. como se muestra en la imagen 7. aparecerá una ventana.0. para esto vaya al menú Max + Plus II -> Wave Form Editor.Universidad de El Salvador Sistemas Digitales I 5. aparecerá otra imagen solo pulse ok.0. Escriba el siguiente código en el editor y guárdelo. Para ver si funciona correctamente se hará una simulación. dele un valor de 100 ns como se muestra en la imagen 11. como se muestra en la imagen 8. Imagen 9.0.scf. en la ventana que aparece presione start.0. Luego vaya al menú Node -> Enter Nodes from SNF. el resultado y todo lo anterior se muestra en la imagen 12. Agregue las señales como se muestra en la imagen 9. presionando List y la flecha que indica hacia la derecha. luego ok. 9. Con los Botones del lado izquierdo se modifican las señales de entrada (solo se pueden modificar las entradas) de forma que queden como se muestra en la imagen 12. 12.Universidad de El Salvador Sistemas Digitales I 8.0. Guarde el editor de forma de onda con el nombre de comp_and. 10. con eso ya está configurada la ventana. Imagen 11. Imagen 10. luego en el Introducción a Lenguajes HDL 13.. I . 11.0. por último seleccione el menú view -> Fit in 4indows.0 us como se muestra en la imagen 10. menú Options -> Grid size.0. Imagen 12.0. Imagen 8. Luego vaya al menú Max Plus II -> Simulator. Luego se hacen los ajustes de el archivo de simulación File -> End Time.. coloque 2. lo primero es definir las entradas y salidas del circuito. luego le sigue la palabra clave “OF nombre_asignado” (nombre_asignado es el nombre que se le dio a la entidad). Se le llama entidad y se declara con la palabra clave ENTITY nombre_asignado. Líneas 4 y 5: El lenguaje VHDL tiene varios tipos de variables un tipo es “BIT”. sea el tipo de descripción que sea. “ARCHITECTURE nombre_arch”. con el operador “<=”. estas operaciones se ejecutan de manera concurrente. esto quiere decir que no importa el orden en que se coloquen las instrucciones. Nota: las palabras clave se han escrito con mayúsculas para diferenciarlas. y una salida y. 7. pero esto no es una regla. la caja negra que lo Introducción a Lenguajes HDL define. el resultado se le asigna a la salida “y”. También se puede ingresar en esta línea procesos secuenciales. Se finaliza este bloque con la palabra clave END nombre_asignado. hay que definir el símbolo o entidad del circuito. Esto quiere decir que la arquitectura pertenece a la entidad dada. En la imagen se muestra el resultado del código ingresado. que corresponde a una compuerta AND. 12: El compilador ignora todo lo que sigue después de dos guiones medios“--”. Es una muy buena práctica de programación comentar siempre los códigos. Líneas 8 y 11: Se declara la arquitectura designándole un nombre como sigue. para que otros los puedan entender. Línea 3: En esta se define el puerto “PORT()” que son las entradas y salidas que tendrá. Líneas 2 y 6: En primer lugar. Líneas 1. en este caso dos entradas a y b. es decir. Se finaliza la arquitectura con la palabra clave “END nombre_arch” Línea 9 y 10: Después de la línea 9 “BEGIN” y antes de la 11 “END” se declaran las operaciones a realizar. Imagen 13. En efecto. la entrada “a” y “b” se operan con la instrucción “AND”.Universidad de El Salvador Sistemas Digitales I Como se puede observar la salida obedece el comportamiento de una compuerta and. estas líneas declaran a las variables “a” y “b” como entradas tipo BIT “IN/OUT BIT” y “y” como salida del mismo tipo. esto se muestra con mayor detalle en la imagen 13. Explicación del código. pues lo que sigue son comentarios. en este caso solo hay una “y <= a AND b”. es decir operaciones que se ejecutan una después de la otra con la palabra clave “PROCESS”. I . END arch_and. b => ent2. el cual ha sido guardado con el nombre de arch_and y como se puede observar dentro de COMPONENT se definen nuevamente las I . y :OUT BIT). SIGNAL sal:bit.Universidad de El Salvador Sistemas Digitales I END COMPONENT comp_and. Explicación del código testbench. END comp_and. A continuación se escribirá el testbench. ent1 <= '1'. compilar. SIGNAL ent2:bit:='0'. la creación de programas VHDL se resume a trabajar en el editor de texto de su preferencia. y :OUT BIT). ARCHITECTURE define las acciones que realizará el testbench. ent1 <= '0'.b :IN BIT. PROCESS BEGIN WAIT FOR 20 ns. ent2 <= '1'. WAIT FOR 20 ns. En Linux: Una vez instalados los dos programas mencionados anteriormente. Introducción a Lenguajes HDL SIGNAL ent1:bit:='0'. ent1 <= '1'. ejecutar y simular los resultados utilizando un editor de texto y principalmente la consola de Linux. END PROCESS. WAIT FOR 20 ns. El código es exactamente igual al que se utilizó en Windows por lo tanto la explicación es la misma expuesta en la sección anterior. COMPONENT relaciona el testbench con las variables y las acciones del circuito en sí. ARCHITECTURE arch_and OF tb_comp_and IS COMPONENT comp_and IS PORT( a. Este código será guardado con el nombre de tb_comp_and. BEGIN ckt1:comp_and PORT MAP ( a => ent1. así como también el GTKWave para ver resultados.    Como se explicó en el código anterior la palabra clave ENTITY define la caja negra que contiene el circuito. Para ejemplificar esto a continuación se muestra el mismo programa creado para Windows con el cual se ejemplificará el método para comprobar. WAIT FOR 20 ns. ent2 <= '0'. en él se definirán las señales de entrada necesarias para conseguir la tabla de verdad del circuito y saber si éste funciona correctamente. END ARCHITECTURE arch_and. y => sal ).vhd. ARCHITECTURE arch_and OF comp_and IS BEGIN y <= a AND b. Se comenzará escribiendo el código: ENTITY comp_and IS PORT( a. el cual es un archivo que funciona como generador de estímulos. Luego se guarda con el nombre de comp_and. El código es el siguiente: ENTITY tb_comp_and IS END tb_comp_and.vhd. ent1 <= '0'. es decir.b :IN BIT. BEGIN es una palabra clave que se utiliza dentro del bloque ARCHITECTURE para indicar el inicio de la descripción de la arquitectura. Para ejecutarlo se utilizará la siguiente línea de comando: Luego de haber guardado ambos archivos en una carpeta se puede proceder a su compilación y ejecución en la consola.vcd -–stoptime=100ns Como se puede observar al ejecutar el programa se definen como parámetros el nombre del archivo en Introducción a Lenguajes HDL I . PORT MAP define en bloque que une las señales que se utilizarán durante la simulación a las variables de entrada y salida del circuito. PROCESS contiene el bloque de señalización. Ahora se utilizará el comando ls y se verá hay 3 archivos más. Luego se creará el ejecutable con el siguiente comando: ghdl –e tb_comp_and Siguiendo la estructura básica del ejemplo anterior es posible definir y simular circuitos con muchas entradas y salidas y con diferentes niveles de complejidad. Es importante notar que para crear el ejecutable se utiliza solo el nombre de tb_comp_and sin su extensión. también se les da valores iniciales a las señales de entrada. este proceso se muestra paso a paso en la figura 14: . En la primera línea por medio del comando ls se puede ver que en la carpeta solo están los dos archivos creados. se procede a utilizar el siguiente comando para realizar un análisis en ambos los códigos: ghdl –a comp_and.hdl Si hay algún error./tb_comp_and --vcd=tb_comp_and. Si utiliza una vez más el comando ls verá que se ha creado el archivo tb_div (letras color verde). Finalmente END PROCESS y END ARCHITECTURE definen el final de los bloques de proceso y arquitectura.Universidad de El Salvador Sistemas Digitales I       entradas y salidas del circuito utilizando la función PORT. SIGNAL se utiliza para definir las señales que se utilizarán para estimular el circuito. Imagen 14. en este caso se le da valor inicial de 0 lógico a las señales de entrada.hdl tb_comp_and. como se puede observar. en este bloque como se puede ver se utilizan las palabras clave WAIT FOR de modo que los cambios de 0 a 1 lógico en las señales de entrada nombradas ent1 y ent2 son controlados definiendo el tiempo que debe esperar cada variable antes de hacer el siguiente cambio. ckt1:comp_and define la iniciación del componente que relaciona el testbench con el circuito creado. este será mostrado luego de la ejecución de los comandos anteriores. en este caso es de 100ns: -–stop-time=100ns Nótese la importancia de que el tiempo de ejecución sea suficiente para que todas las combinaciones definidas en las señales de entrada se ejecuten. las indicaciones se repetirán una vez más de modo que si se amplía el tiempo de ejecución de forma considerada o se disminuye el tiempo que debe durar cada cambio de variable se pueden obtener señales periódicas. gtkwave tb_comp_and. Pueden compararse los resultados que se obtienen con el software de Windows. Para ver e interpretar estos resultados se utilizará el gtkwave por medio del siguiente comando: Imagen 15. se deberán seleccionar las entradas y salidas que se desean ver.vcd Y como resultado el gtkwave se abrirá. Se puede apreciar el resultado en la figura 15: Introducción a Lenguajes HDL I . Cabe mencionar que pueden utilizarse otros software a elección del estudiante que trabajen con lenguajes VHDL. Si se utiliza el comando ls se verá que un archivo nuevo ha sido creado como resultado de la ejecución del programa. Si se duplica el tiempo de ejecución.Universidad de El Salvador Sistemas Digitales I el cual se guardarán los resultados de la ejecución del programa: --vcd=tb_comp_and. Se recomienda trabajar con los software descritos en la guía. Es importante mencionar que para ver correctamente los resultados es necesario utilizar los botones de zoom in o zoom out. En la guía se explica el uso de un programa para Windows y uno para Linux (Ubuntu) para facilidad. que son prácticamente los mismos.vcd Así como también el tiempo de ejecución. igual para el par de llantas “Y”. o el gabinete está abierto con el interruptor de control abierto. la línea B es del sensor de presión bajo una caja fuerte en un gabinete cerrado. 1. Determine las ecuaciones lógicas para el circuito. Para girar a los lados. se hace que las llantas giren en distintas direcciones. B: La caja está en su posición normal en el gabinete. si la salida será alta solo cuando un número impar de entradas sean altas. OR. Las siguientes condiciones producen un voltaje de 1 lógico en cada línea.1 Explicar paso a paso como es el proceso de instalación del software VHDL usado. Descripción: Se trata de un automóvil con tres sensores. La posición de los sensores se muestra en la siguiente figura. 1. C: El reloj marca entre las 1000 y las 1400 horas. Realizar el código VHDL para las compuertas: AND. A: El interruptor de control está cerrado. la línea C es de un reloj alimentado por baterías y la línea D está conectada a un interruptor en la puerta cerrada del gabinete. Escriba en código VHDL la expresión que active la alarma cuando la caja se mueve y el interruptor de control está cerrado. las llantas “X” rotaran hacia atrás mientras las llantas “Y” hacia adelante.Universidad de El Salvador Sistemas Digitales I ASIGNACIÓN 1. o cuando el gabinete se abre después de las horas hábiles. Trace un Diagrama de circuito. por ejemplo para girar a la izquierda. Introducción a Lenguajes HDL 1. La línea A es del interruptor secreto de control. EXOR. con su respectiva variable de control “Y”. D: la puerta del gabinete está cerrada. NAND. NOR. Trace un diagrama de circuito con las compuertas que desee 1. Al arrancar. I . B. simular en VHDL.2 Realizar el código VHDL para el problema que se le plantea: Un circuito lógico tiene cuatro entradas A.3 Una alarma contra robos esa diseñada de modo que percibe cuatro líneas de señal de entrada. se dirige hacia adelante y si encuentra un obstáculo. EXNOR y NOT. esquivándolo.4 Circuito 3: “Un automóvil a prueba de choques”. Para hacer que el par de llantas “X” giren hacia adelante se deberá poner en una variable de control llamada “X” el bit 0. gira a uno de los costados. C y D. para que giren hacia atrás X=1. uno al frente y dos a los costados. la lógica de control de las llantas es la siguiente. 25% NOTA: El reporte se entregara en un sobre manila rotulado con los nombres y carnet. Implementar el circuito con código VHDL. con todas las posibilidades de entrada. 5 %  Respuesta a las preguntas de investigación. 5 páginas). El contenido del CD deberá ir ordenado. 40%  Imágenes de los resultados. 2.1 Uso y sintaxis de las instrucciones IF… THEN. 2.3. 2. con carpetas individuales para cada ítem mencionado ejemplo: IMÁGENES. 10% o Observaciones.1 Contenido del CD. 5%  Obtención del software de simulación VHDL (dirección de descarga) y pasos de instalación. 15%  Códigos utilizados (*. 1 página). detecta obstáculo en las tres direcciones. 2. CIRCUITO1.2 Un CD 30% 3.3 Uso de las instrucciones anteriores para implementar el código VHDL directamente desde las tablas de verdad. 10% o Gráficos obtenidos para cada circuito (3 a 5 imágenes por circuito).vhd) y todos los que genera el proceso de compilación y ejecución.7 ¿Cuáles son los operadores en VHDL? Introducción a Lenguajes HDL 3. 2.4 Tipos de datos de entrada y salida que soporta VHDL. 10% o Código VHDL. 5% 3. empezará a retroceder. 1. B y C están en “1”. 1. 2. 2.5 ¿Cómo se crean arreglos en VHDL? 2. en las que se muestren las entradas (A. 20%  Bibliografía.1 Encontrar la tabla de verdad que representa la lógica de control. 10%  Conclusiones (máx. 10%  Desarrollo de los circuitos: o Descripción de los pasos seguidos para la solución.2.3.6 ¿Cómo declarar un componente en VHDL? Mostrar un ejemplo. Obtener graficas de simulación. etc.  Software utilizado. I . B y C) y las salidas (X y Y).1 Un reporte impreso 70% 3.2 Uso y sintaxis de la instrucciones CASE… WHEN. 1 página). 5%  Objetivos (General y específicos). 5%  Marco teórico (máx. De lo contrario girará en la dirección que esté libre de obstáculos. Acerca de la tarea: 3. dentro deberá ir el CD rotulado de la misma forma y el nombre del CD tendrá los carnet.1 Contenido del reporte  Portada.3.2.3. es decir. 5%  Introducción (máx.Universidad de El Salvador Sistemas Digitales I X Y Descripción 0 0 Hacia adelante 0 1 Hacia la derecha 1 0 Hacia la izquierda 1 1 Hacia atrás Si los tres sensores A. Preguntas de Investigación. Si existe la posibilidad de girar hacia la derecha o hacia la izquierda se girará a la derecha. 1.1. 20%  Reporte en formato PDF y WORD. tutorial VHDL.com/ Simulando VHDL con herramientas GNU: GHDL+GTKWAVE. Hora máxima 10:00 am. Universidad de Valencia 1997.iearobotics.html Análisis y diseño de circuitos lógicos digitales. Fernando Pardo Carpio. Bibliografía: VHDL Lenguaje para descripción y modelado de circuitos. DIGLENSY SAC Primera Empresa del Perú Dedicada al Desarrollo Electrónico. después de las 10 se calificará en base 9. después de ese día la base de calificación bajará 2 puntos por día de atraso. 1ª Ed. http://www. Víctor Nelson.diglensy. http://www. Introducción a Lenguajes HDL I .Universidad de El Salvador Sistemas Digitales I Fecha de entrega: 24 Marzo de 2015.com/personal/juan/p ublicaciones/art6/html/ghdl. Roberto Aragón.
Copyright © 2024 DOKUMEN.SITE Inc.