MANUAL DE PRÁCTICAS DE DISEÑO DE SISTEMAS DIGITALES Julio de 2019 Nombre Brigada Día Nombre del instructor Laboratorio de Diseño de Sistemas Digitales Hora UASLP-FI Laboratorio de Diseño de Sistemas Digitales ii UASLP-FI Primera edición Julio de 2012 Dr. Homero Miranda Vidales Ing. Alfredo Arriaga Contreras Diego Abraham Marín Pachicano Segunda edición Noviembre de 2013 Dr. Homero Miranda Vidales Ing. Alfredo Arriaga Contreras Diego Abraham Marín Pachicano Tercera edición Julio de 2019 LE Efraín Agundis Flores Laboratorio de Diseño de Sistemas Digitales iii FI, UASLP Reglamento, funciones y procedimientos Índice Contenido MANUAL DE PRÁCTICAS DE ...................................................................................... i Índice ............................................................................................................................................... iv REGLAMENTO, FUNCIONES Y PROCEDIMIENTOS ................................................. vi NORMAS DE SEGURIDAD EN EL LABORATORIO DE MECATRÓNICA. ..................... x COMPUERTAS LÓGICAS (DEM) ................................................................................. 1 Práctica 1 .......................................................................................................................................... 1 ENTRADAS/SALIDAS BÁSICAS EN EL FPGA (DEM) ................................................. 5 Práctica 2 ......................................................................................................................................... 5 FUNCIONES LÓGICAS EN VHDL (DEM) .................................................................. 9 Práctica 3 ......................................................................................................................................... 9 CONVERTIDORES DE CÓDIGOS (DEM) .................................................................. 15 Práctica 4 ....................................................................................................................................... 15 CONVERTIDOR DE CÓDIGO BCD A SIETE SEGMENTOS (DEM) .............................. 19 Práctica 5 ....................................................................................................................................... 19 MULTIPLEXOR Y DEMULTIPLEXOR EN VHDL (DEM) ........................................... 23 Práctica 6 ....................................................................................................................................... 23 UNIDAD LÓGICA ARITMÉTICA (DEM).................................................................... 27 Práctica 7 ....................................................................................................................................... 27 GENERADORES DE SEÑALES DE RELOJ Y FLIP-FLOPS (DEM)............................... 31 Práctica 8 ....................................................................................................................................... 31 DISEÑO DE UN CONTADOR SÍNCRONO MEDIANTE FLIP-FLOPS (DEM) ................35 Práctica 9 ....................................................................................................................................... 35 CONTADOR ASCENDENTE MÓDULO 10 (DEM) ...................................................... 39 Práctica 10...................................................................................................................................... 39 CONTADOR ASCENDENTE DESCENDENTE (DEM) ................................................. 43 Práctica 11 ...................................................................................................................................... 43 REGISTROS DE CORRIMIENTO EN VHDL (DEM) ....................................................47 Práctica 12 ...................................................................................................................................... 47 DISEÑO DE UNA MEMORIA RAM EN VHDL (DEM) ................................................. 51 Práctica 13 ...................................................................................................................................... 51 MÁQUINAS DE ESTADO FINITO (DEM) ..................................................................55 Práctica 14...................................................................................................................................... 55 CONTROL DE MÁQUINA EXPENDEDORA MEDIANTE FSM EN VHDL (DEM)........ 59 Laboratorio de Diseño de Sistemas Digitales iv FI, UASLP Reglamento, funciones y procedimientos Práctica 15 ...................................................................................................................................... 59 CONTROL DE UN MOTOR A PASOS MEDIANTE FSM EN VHDL (DEM) ................. 63 Práctica 16...................................................................................................................................... 63 ESPECIFICACIONES DE LA TARJETA DE DESARROLLO NEXYSTM 3 ...................... 69 Anexo A .......................................................................................................................................... 69 Compendio extraído de Nexys 3 Reference Manual https://reference.digilentinc.com/reference/programmable-logic/nexys-3/reference-manual69 TUTORIAL VHDL ..................................................................................................... 75 Anexo B .......................................................................................................................................... 75 MULTIVIBRADORES BIESTABLES ......................................................................... 89 Anexo C...........................................................................................................................................89 Laboratorio de Diseño de Sistemas Digitales v FI, UASLP Reglamento, funciones y procedimientos REGLAMENTO, FUNCIONES Y PROCEDIMIENTOS FACULTAD DE INGENIERÍA Laboratorio de Diseño de Diseño de Sistemas Digitales REGLAMENTO INTERNO DEL LABORATORIO 1. En toda práctica, realizada por el alumno en el Laboratorio, se debe contestar lo que el manual marque, la calificación de la anterior será la evaluación de la práctica. El resultado de la evaluación se expresará con una calificación numérica que puede variar de cero a diez. 2. La calificación mínima para que una práctica se considere aprobada es de 6.0. 3. El alumno podrá faltar cuando más a dos sesiones de laboratorio, si acumula más faltas, se le dará de baja automáticamente y la calificación será Laboratorio Reprobado (LR). 4. En caso de inasistencia por parte del alumno, para fines de evaluación, la calificación de la práctica será de cero. 5. El Laboratorio se considera aprobado cuando el alumno obtiene como promedio la calificación de 6.0. Dicha nota se expresará en la boleta de calificaciones como Acreditado (AC). Si la calificación es menor a 6.0 su calificación será (LR). 6. El criterio para evaluar al alumno será el siguiente: Procedimiento Participación Comprensión Conclusiones Total Laboratorio de Diseño de Sistemas Digitales 40 % 20 % 10 % 30 % 100 % vi FI, UASLP Reglamento, funciones y procedimientos 7. La entrada al Laboratorio será la indicada, teniendo el alumno 5 minutos de tolerancia, para llegar a tiempo, si llega pasado los 5 minutos se le permitirá la entrada anotándosele en la lista, que llegó con retardo. Después de los 10 minutos, no se le permitirá la entrada a la práctica. Cada dos retardos significan una falta. 8. La duración de las prácticas de laboratorio podrá durar 1 o más sesiones, dependiendo de la complejidad y lo elaborado de la misma, quedando a criterio del encargado de Laboratorio la duración máxima de las mismas. FUNCIONES Y PROCEDIMIENTOS 1. El Laboratorio es el lugar destinado a la realización de actividades experimentales, tendientes a apoyar o demostrar el conocimiento científico, buscando innovar la tecnología existente. 2. Práctica de Laboratorio es aquella actividad de investigación básica que consiste en realización de ensayos ya conocidos que apoye o demuestre el conocimiento académico que se imparte en la Facultad. 3. Es obligación de los alumnos del Laboratorio, conocer este reglamento, junto con las normas de seguridad y los procedimientos de emergencia. 4. El personal que trabaja para el laboratorio es el encargado de dar a conocer y hacer cumplir este reglamento. 5. Es obligación de los alumnos utilizar el equipo de seguridad que se indique en el Laboratorio. EL COMPORTAMIENTO DEL ALUMNO EN EL LABORATORIO 1. Guardará consideración y respeto a su instructor, al personal que trabaja en el laboratorio y a sus compañeros. 2. Asistirá con puntualidad a las prácticas. 3. Permanecerá en el área que le corresponda durante la práctica. 4. Será responsable del buen uso de las instalaciones, equipo y material Laboratorio de Diseño de Sistemas Digitales vii FI, UASLP Reglamento, funciones y procedimientos del Laboratorio y de todo lo que se le proporcione para su enseñanza. 5. Si incurre en una falta de disciplina dentro del Laboratorio, de acuerdo con la naturaleza y la gravedad de la falta, el instructor le pedirá que se retire. Lo anterior sin menoscabo de las sanciones a que pudiera hacerse acreedor por parte de las autoridades de nuestra Facultad. 6. Avisará si el equipo o material se encuentra dañado o representa un riesgo. 7. Solamente podrá realizar prácticas a la hora y día que le corresponda. 8. Se preparará para la sesión, estudiando previamente la práctica correspondiente. 9. Estudiará el procedimiento a efectuar y las medidas de seguridad necesarias, antes de comenzar a trabajar. En caso de duda, preguntará a su instructor. 10. Comenzará a trabajar sin energizar aparato alguno, hasta recibir autorización de su instructor. 11. Tendrá prohibido jugar, hacer bromas y usar un vocabulario soez o frases en doble sentido. 12. Tendrá prohibido comer, beber, tirar basura o fumar dentro del Laboratorio. 13. No permitirá que alguien se lastime o cometa un error por su propia inacción. 14. Dejará limpio y ordenado el lugar y el equipo utilizado antes de salir del Laboratorio. 15. De realizar trato o convenio con el instructor, no será reconocido por el Responsable del Laboratorio. 16. Dejará la mochila en la gaveta que se encuentra en la entrada del Laboratorio. Laboratorio de Diseño de Sistemas Digitales viii FI, UASLP Reglamento, funciones y procedimientos REQUISITOS PARA CONTESTAR LA PRÁCTICA 1. Se entregará en el instructivo de prácticas, contestando en los espacios destinados para ese propósito. 2. Será individual. En caso de demostrarse que se ha copiado, se dará de baja automáticamente a los alumnos y su calificación será LR. 3. Deberá contestarse y entregarse al término de la práctica para su revisión. 4. Las gráficas se realizarán, en los ejes coordenados que se encuentran en el instructivo. 5. Es responsabilidad del alumno el venir preparado para realizar la práctica. 6. El instructivo revisado se entregará al alumno dos días después de la fecha de práctica, con el objetivo de que conozca su calificación y se prepare para la siguiente sesión. 7. Para un mejor control, en el reporte de la práctica deberá ponerse en la esquina superior derecha, la fecha en que se efectuó. 8. Al contestar la parte de la “Comprensión” es conveniente que repase, antes de entrar a la práctica, los principios y fundamentos vistos en clases referentes al tema de la práctica. No entregar un reporte en el que no hizo su mejor esfuerzo como estudiante. 9. Las conclusiones serán un razonamiento personal sobre lo realizado en la práctica, a la luz de los conocimientos teóricos y de la experiencia propia, no basta con decir “Me pareció muy bien” o que “Estuvo bien la práctica” etc. Este punto es uno de los más importantes del reporte, ya que, en él, demuestra su comprensión del tema y las aplicaciones prácticas que pudiera dar a lo aprendido en su desempeño profesional. 10. La evaluación del desempeño teórico y práctico es la calificación que otorga el instructor a cada alumno, tomando en cuenta su participación, puntualidad y comportamiento a lo largo de la sesión. Laboratorio de Diseño de Sistemas Digitales ix FI, UASLP Normas de Seguridad Básicas NORMAS DE SEGURIDAD EN EL LABORATORIO DE MECATRÓNICA. LAS NORMAS BÁSICAS DE SEGURIDAD son un conjunto de medidas destinadas a proteger la salud de todos, prevenir accidentes y promover el cuidado del material de los laboratorios. NORMAS BÁSICAS DE SEGURIDAD 1. El personal del Laboratorio y los usuarios deberán conocer la ubicación de los elementos de seguridad en el lugar de trabajo, tales como: extintores, ruta de emergencia, puntos de reunión, accionamiento de alarmas, teléfonos de emergencia, botiquín, etc. 2. Trabajar siempre acompañado. Evitar trabajar solo. 3. Ningún alumno estará autorizado para modificar, en manera alguna, la práctica al menos que tenga autorización expresa de su profesor o instructor. 4. Evitar el uso de cadenas, collares, anillos y pulseras metálicas. 5. Cuando se trabaje con voltajes superiores a 65 Volts, sólo se permitirá el uso de zapatos de seguridad cerrados en su parte superior. Otro tipo de calzado como las sandalias, que deje expuestas áreas de piel, o los dedos de los pies, es inadmisible e inapropiado para el uso dentro del laboratorio. 6. Durante el desarrollo del trabajo de laboratorio, asegurarse de que las manos estén secas. 7. Mantener las mesas de trabajo limpias, ordenadas y libres de materiales extraños. Laboratorio de Diseño de Sistemas Digitales x FI, UASLP Normas de Seguridad Básicas 8. Verificar el armado correcto de un equipo o circuito antes de utilizarse. 9. Colocar los residuos y desechos en los lugares destinados a tal fin. 10. Retirar de las mesas y colocar en su sitio el material o equipos que ya fueron utilizados. 11. Colocar el material o instrumentos alejados de los bordes de las mesas. 12. Antes de retirarse del laboratorio, si no queda nadie en él, se toman las siguientes medidas: 13. Apagar lámparas, ventiladores, etc. 14. No dejar equipos operando sin autorización. 15. Cerrar puertas y ventanas. RIESGOS ELÉCTRICOS. Uno de los riesgos presentes en este tipo de laboratorios es el riesgo eléctrico y éste es aquel que es susceptible de ser producido por instalaciones eléctricas, partes de las mismas, y cualquier dispositivo eléctrico bajo tensión, con potencial de daño suficiente para producir fenómenos de electrocución, quemaduras, y muerte. El riesgo eléctrico puede presentarse en cualquier tarea que implique manipulación o maniobra de instalaciones eléctricas de baja, media y alta tensión, operaciones de mantenimiento de este tipo de instalaciones, reparación y uso de aparatos eléctricos, utilización de equipo eléctrico en entornos para los cuales no ha sido diseñado el dispositivo (ambientes húmedos y/o mojados) y mal mantenimiento, etc. Recomendaciones generales 1. Nunca deberá manipularse ningún elemento eléctrico con las manos mojadas, en ambientes húmedos o mojados accidentalmente. 2. Para trabajar en instalaciones eléctricas se deben tener en cuenta los Laboratorio de Diseño de Sistemas Digitales xi FI, UASLP Normas de Seguridad Básicas siguientes principios: Abrir todas las fuentes de tensión. Enclavar o bloquear, si es posible, todos los dispositivos de corte. Comprobar la ausencia de tensión. Poner a tierra y en cortocircuito todas las posibles fuentes de tensión. Delimitar la zona de trabajo mediante señalización. 3. No quitar nunca la puesta a tierra de los equipos e instalaciones. 4. No realizar nunca operaciones en líneas eléctricas, transformación o equipos centros de eléctricos si no se posee la formación y equipo necesaria para ello. 5. No retirar nunca los recubrimientos o aislamientos de las partes activas de los sistemas. 6. En el caso deberán equipos 7. de que sea imprescindible realizar trabajos en tensión utilizarse los medios de protección adecuados y los de protección individual apropiados. Mantener el cableado en buen estado, evitando los empalmes con cinta aislante. En todo caso sustituir los cables deteriorados. 8. Evitar los arreglos provisionales confiar el mantenimiento al personal competente. 9. Avisar al personal de laboratorio de cualquier anomalía que se detecte en la instalación o equipos eléctricos. 10. Evitar utilizar una sola toma de corriente para varias clavijas, ya que se puede producir un calentamiento de los cables y como consecuencia un incendio de origen eléctrico. Laboratorio de Diseño de Sistemas Digitales xii FI, UASLP Normas de Seguridad Básicas RIESGOS DE INCENDIO Conocer que extintores se cuenta en el laboratorio y para qué tipo de fuego está indicados, así como su utilización y ubicación. En la tabla Tabla I.1 se recogen los principales Tipos de Fuego, características y prevención, y en la tabla II.2 se muestran las distintas clases de fuego y los agentes extintores aplicables. (Norma Mexicana NOM-002-STPS-2010 Tabla VII.1) Tabla I.1 Tipos de incendio, características y prevención Tipo de incendio Clase A Clase B Clase C Clase D Clase K Características Prevención Es aquel que se presenta en material combustible sólido, generalmente de naturaleza orgánica, y que su combustión se realiza normalmente con formación de brasas. Son fuegos que implican madera, tejidos, goma, papel y algunos tipos de plástico o sintéticos. Es aquel que se presenta en líquidos combustibles e inflamables y gases inflamables. Por ejemplo gasolina, aceites, pintura, gases y líquidos inflamables y lubricantes. Se apagan eliminando el oxígeno o interrumpiendo la reacción en cadena que se produce durante la combustión. Es aquel que involucra aparatos, equipos e instalaciones eléctricas energizadas. Es aquel en el que intervienen metales combustibles, tales como el magnesio, titanio, circonio, sodio, litio y potasio Es aquel que se presenta básicamente en instalaciones de cocina, que involucra sustancias combustibles, tales como aceites y grasas vegetales o animales. Los fuegos clase K ocurren en los depósitos de grasa semipolimerizada, y su comportamiento es distinto a otros combustibles Asegúrese de vaciar los recipientes de basura diariamente y de mantener las áreas de trabajo limpias. Use los líquidos inflamables en áreas ventiladas o alejados de cualquier fuente productora de chispa. Mantenga únicamente cantidades adecuadas de estas sustancias Revise la instalación eléctrica en busca de cables dañados, tornillería floja o partes sueltas o partidas, nunca sobrecargue los enchufes de las paredes. Revise los aparatos eléctricos. Seguir las instrucciones de uso especificadas por los proveedores para el uso de estos materiales. Evitar la acumulación de grasas, prestar atención a los las hornillas de la estufa y a los tiempos de preparación de los alimentos, así como a las cantidades de aceites almacenadas. Tabla I.2 Clase de Fuego y Agente Extintor Aplicable Guía de Referencia VII Extintores contra Incendio NORMA Oficial Mexicana NOM-002-STPS-2010 (Tabla VII.1) Fuego Clase C Fuego Clase D Fuego Clase K Agente extintor Fuego Clase A Fuego Clase B Agua Si No No No No Polvo Químico Seco, tipo ABC Si Si Si No No Polvo Químico Seco, tipo BC No Si Si No No Bióxido de Carbono (CO2) No Si Si No No Agentes limpios* Si Si Si No No Espuma Mecánica Si Si No No No Agentes Especiales No No No No No Químico Húmedo Si Si No No Si * El uso de los agentes limpios a base de gases halón, se ha venido restringiendo gradualmente hasta que llegue a eliminarse por completo, en cumplimiento a lo dispuesto por el Protocolo de Montreal 1, debido a que son compuestos que dañan la capa de ozono de la atmósfera. 1 Publicado en el Diario Oficial de la Federación de 25 de enero de 1988 Laboratorio de Diseño de Sistemas Digitales xiii Práctica No. 1 Compuertas Lógicas / / COMPUERTAS LÓGICAS (DEM) Práctica 1 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Conocer el funcionamiento, conexión y uso de las compuertas lógicas AND, OR, NAND, NOR. MATERIAL a) Fuente de 5 V CD. b) Tablilla de Conexiones. c) Interruptor DIP. d) Diodo Emisor de Luz. e) Resistencias de 1KΩ. f) Resistencias de 220Ω. g) Circuito Integrado 74LS00 NAND. h) Circuito Integrado 74LS02 NOR. i) Circuito Integrado 74LS04 NOT. j) Circuito Integrado 74LS08 AND. k) Circuito Integrado 74LS32 OR. l) Circuito Integrado 74LS86 XOR. PROCEDIMIENTO 1.1 Implementar los circuitos de prueba de la figura 1.1a) y 1.1b) e intercambiar el circuito integrado de la figura 1.1b), correspondiente a las operaciones lógicas descritas en la práctica (AND, NOR, NAND y XOR). 1.2 Comprobar las salidas de las compuertas con su correspondiente tabla de verdad. Laboratorio de Diseño de Sistemas Digitales 1 Práctica No. 1 Compuertas Lógicas Figura 1.1 a) Circuito de prueba utilizado una compuerta inversora, b) Circuito de prueba utilizado una compuerta OR [Imagen del software Frtzing, 2016 versión 0.9.3]. 1.3 Escribir lo realizado en la práctica detalladamente, con observaciones. COMPRENSIÓN 1.- ¿Cuál es la razón de conectar resistencias a tierra en cada una de las entradas y salidas de los circuitos que se desarrollaron en la práctica? Laboratorio de Diseño de Sistemas Digitales 2 Práctica No. 1 Compuertas Lógicas 2.- Utilizando compuertas de dos entradas (AND y OR), realice las conexiones necesarias para obtener una compuerta de cuatro entradas y una salida. 3.- Dibuje el circuito electrónico correspondiente a una compuerta NAND básica de la serie LSTTL. CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 3 Práctica No. 1 Compuertas Lógicas Laboratorio de Diseño de Sistemas Digitales 4 Práctica No. 2 Entradas/Salidas básicas en el FPGA / / ENTRADAS/SALIDAS BÁSICAS EN EL FPGA (DEM) Práctica 2 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Conocer el funcionamiento y uso de las compuertas lógicas NOT, AND, NAND, OR, NOR, XOR, XNOR implementadas en la tablilla de desarrollo NEXYS3. MATERIAL 1) 2) 3) 4) 5) Tarjeta de Desarrollo NEXYS™ 3. Software Xilinx® ISE Design Suite. Software Xilinx® PlanAhead. Software Diligent® Adept. Equipo de Cómputo. PROCEDIMIENTO 2.1 Abrir el software Xilinx® ISE Design Suite y generar un nuevo proyecto. 2.2 Incluir en el proyecto recién creado, un nuevo módulo VHDL. 2.3 Comprender el programa que le proporcionará y realizar una copia del código en el nuevo proyecto. 2.4 Guardar los cambios y sintetizar el proyecto. Laboratorio de Diseño de Sistemas Digitales 5 Práctica No. 2 Entradas/Salidas básicas en el FPGA 2.5 En el Software Xilinx® PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombrar todas las entradas y salidas necesarias con los pines correspondientes. 2.6 Guardar los cambios y cerrar el software. 2.7 Dar doble clic en la opción Generate Programing File y esperar a que se genere. (Para indicar que el archivo se creo correctamente, aparecerá un círculo verde con una palomita en medio). 2.8 Conectar la Tarjeta de Desarrollo NEXYS™ 3 y encenderla. 2.9 Abrir el software Digilent® Adept. 2.10 Dar clic en el botón Browse, entrar en la carpeta del proyecto creado y seleccionar el archivo con la extensión .bit. 2.11 Dar clic en el botón Program y esperar a que se termine la programación. 2.12 Realizar la debida comprobación del correcto funcionamiento de la descripción del circuito. 2.13 Apagar la tarjeta, desconectar y guardar el equipo utilizado. 2.14 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. Laboratorio de Diseño de Sistemas Digitales 6 Práctica No. 2 Entradas/Salidas básicas en el FPGA COMPRENSIÓN 1.- ¿Qué significan las siglas FPGA? 2.- ¿Qué significan las siglas VHDL? 3.- Describa detalladamente los pasos para la declaración de puertos de Entrada/Salida básicos. CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 7 Práctica No. 2 Entradas/Salidas básicas en el FPGA Laboratorio de Diseño de Sistemas Digitales 8 Práctica No. 3 Funciones Lógicas en VHDL / / FUNCIONES LÓGICAS EN VHDL (DEM) Práctica 3 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Que el alumno reafirme los métodos de simplificación de funciones lógicas y aprenda a implementar dichas funciones mínimas en código VHDL. MATERIAL Y EQUIPO A UTILIZAR 1) 2) 3) 4) 5) Tarjeta de desarrollo NexysTM 3 Software XilinxR ISE WebPack Software XilinxR PlanAhead Software Diligent Adept Equipo de cómputo PROCEDIMIENTO 3.1 A partir de la siguiente tabla de verdad, genere la función lógica correspondiente. A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 Y 0 0 1 1 1 0 1 0 Laboratorio de Diseño de Sistemas Digitales 9 Práctica No. 3 Funciones Lógicas en VHDL 3.2 Usando algebra de Boole, simplifica la función obtenida. 3.3 Utilizando mapas de Karnaugh simplifica la función original. Laboratorio de Diseño de Sistemas Digitales 10 Práctica No. 3 Funciones Lógicas en VHDL 3.4 Comprueba tus resultados. 3.5 Abre el software Xilinx ISE WebPack y genera un nuevo proyecto. 3.6 Incluye en el proyecto recién creado un nuevo módulo VHDL. 3.7 Programa la función minimizada obtenida anteriormente por ambos métodos. 3.8 Guarda los cambios y sintetiza el proyecto. 3.9 En el Software Xilinx PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombra todas las entradas y salidas necesarias con los pines correspondientes. 3.10 Guarda los cambios y cierra el software. 3.11 Da doble clic en la opción Generate Programing File y espera a que se genere, se colocará un círculo verde con una palomita para indicar que el archivo se creó correctamente. 3.12 Conecta la tarjeta de desarrollo Nexys3 y enciéndela. 3.13 Abre el software Digilent Adept. 3.14 3.15 Da clic en el botón Browse, entra en la carpeta del proyecto creado y selecciona el archivo .bit y presiona enter. Da clic en el botón program, esperar a que se termine la programación. 3.16 Verifica el funcionamiento correcto de la función lógica. 3.17 Modifica el código de manera que en cada display de 7 segmentos de la tarjeta de desarrollo se exhiba el valor de cada entrada y en el último display se despliegue el valor de la salida. 3.18 Repite los pasos 3.8 a 3.16. 3.19 Apaga la tarjeta, desconecta y guarda el equipo utilizado. Laboratorio de Diseño de Sistemas Digitales 11 Práctica No. 3 3.20 Funciones Lógicas en VHDL Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. COMPRENSIÓN 1.- ¿Cuáles son las problemáticas del algebra de Boole? 2.- ¿Cuáles son las ventajas de utilizar el método de mapas de Karnaugh? 3.- ¿Por qué es necesario nombrar todas las entradas con los nombres de los pines de la tarjeta de desarrollo Nexys3? Laboratorio de Diseño de Sistemas Digitales 12 Práctica No. 3 Funciones Lógicas en VHDL CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 13 Práctica No. 3 Funciones Lógicas en VHDL Laboratorio de Diseño de Sistemas Digitales 14 Práctica No. 4 Convertidores de códigos / / CONVERTIDORES DE CÓDIGOS (DEM) Práctica 4 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 Participación 4 Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO El alumno construirá un circuito convertidor de código y desplegará su resultado en un exhibidor de siete segmentos. MATERIAL a) Fuente de 5 V CD. b) Tablilla de Conexiones. c) Interruptor DIP. d) Diodo Emisor de Luz. e) Resistencias de 1KΩ. f) Resistencias de 220Ω. g) Circuito Integrado 74LS00 NAND. h) Circuito Integrado 74LS47 Decodificador de salidas altas. i) Display de siete segmentos de ánodo común. PROCEDIMIENTO 4.1 Realizar el análisis para el convertidor de código BCD a siete segmentos y completar la Tabla 4.1. Laboratorio de Diseño de Sistemas Digitales 15 Práctica No. 4 Convertidores de códigos Decimal 0 1 2 3 4 5 6 7 8 9 Gray BCD Tabla 4.1 Equivalencia entre diferentes códigos 4.2 Diseñe un circuito para efectuar la conversión del código Gray al código BCD. Utilice la Tabla 4.1 y, mediante mapas Karnaugh, obtenga las ecuaciones del sistema. 4.3 Arme el circuito convertidor de código y también incorpore a su salida el decodificador BCD a 7 segmentos y despliegue los resultados en display. 4.4 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. COMPRENSIÓN 1.- ¿Qué tipo de decodificador se debe elegir en caso de utilizar un display de cátodo común? Laboratorio de Diseño de Sistemas Digitales 16 Práctica No. 4 Convertidores de códigos 2.- Diseñe un circuito para realizar la conversión de código BCD a Exceso 3. 3.- Mencione, por lo menos, 3 códigos mas y explique su representación. CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 17 Práctica No. 4 Convertidores de códigos Laboratorio de Diseño de Sistemas Digitales 18 Práctica No. 5 Convertidor de código BCD a siete Segmentos / / CONVERTIDOR DE CÓDIGO BCD A SIETE SEGMENTOS (DEM) Práctica 5 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO El alumno diseñará un circuito convertidor de código en VHDL, y desplegará el resultado en un display de siete segmentos del FPGA. MATERIAL 1) 2) 3) 4) 5) Tarjeta de Desarrollo NEXYS™ 3. Software Xilinx® ISE Design Suite. Software Xilinx® PlanAhead. Software Diligent® Adept. Equipo de Cómputo. PROCEDIMIENTO 5.1 Realizar el análisis para el convertidor de código BCD a siete segmentos y completar la Tabla 5.1. Laboratorio de Diseño de Sistemas Digitales 19 Práctica No. 5 Convertidor de código BCD a siete Segmentos Decimal 0 1 2 3 4 5 6 7 8 9 BCD 7 segmentos Tabla 5.1 Equivalencia entre diferentes códigos 5.2 Abrir el software Xilinx® ISE Design Suite y generar un nuevo proyecto. 5.3 Incluir en el proyecto recién creado, un nuevo módulo VHDL. 5.4 Realizar el programa del convertidor de código de acuerdo a la Tabla 5.1. 5.5 Guardar los cambios y sintetizar el proyecto. 5.6 En el Software Xilinx® PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombrar todas las entradas y salidas necesarias con los pines correspondientes. 5.7 Guardar los cambios y cerrar el software. 5.8 Dar doble clic en la opción Generate Programing File y esperar a que se genere. (Para indicar que el archivo se creo correctamente, aparecerá un círculo verde con una palomita en medio). 5.9 Conectar la Tarjeta de Desarrollo NEXYS™ 3 y encenderla. 5.10 Abrir el software Digilent® Adept 5.11 Dar clic en el botón Browse, entrar en la carpeta del proyecto creado y seleccionar el archivo con la extensión .bit. 5.12 Dar clic en el botón Program y esperar a que se termine la programación. Laboratorio de Diseño de Sistemas Digitales 20 Práctica No. 5 Convertidor de código BCD a siete Segmentos 5.13 Realizar la debida comprobación del correcto funcionamiento de la descripción del circuito. 5.14 Apagar la tarjeta, desconectar y guardar el equipo utilizado. 5.15 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. COMPRENSIÓN 1.- ¿Qué es un código? 2.- ¿Qué significa codificación? Laboratorio de Diseño de Sistemas Digitales 21 Práctica No. 5 Convertidor de código BCD a siete Segmentos 3.- ¿Con qué clase de ánodo cuenta el display de siete segmentos en la Tarjeta de desarrollo Nexys3? 4.- Mencione las consideraciones que deben ser tomadas en cuenta para el encendido del display de siete segmentos. CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 22 Práctica No. 6 Multiplexor y demultiplexor en VHDL / / MULTIPLEXOR Y DEMULTIPLEXOR EN VHDL (DEM) Práctica 6 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Que el alumno compruebe el funcionamiento de los multiplexores y demultiplexores mediante la aplicación de lenguaje descriptivo en hardware. MATERIAL Y EQUIPO A UTILIZAR 1) 2) 3) 4) 5) Tarjeta de desarrollo NexysTM 3 Software XilinxR ISE WebPack Software XilinxR PlanAhead Software Diligent Adept Equipo de computo PROCEDIMIENTO 6.1 Dibuja el diagrama de un multiplexor de 4 a 1 y un demultiplexor de 1 a 4. Laboratorio de Diseño de Sistemas Digitales 23 Práctica No. 6 Multiplexor y demultiplexor en VHDL 6.2 Abre el software Xilinx ISE WebPack y genera un nuevo proyecto. 6.3 Incluye en el proyecto recién creado un nuevo módulo VHDL. 6.4 Programa un multiplexor 4-1. 6.5 Guarda los cambios y sintetiza el proyecto. 6.6 En el Software Xilinx PlanAhead (abrir de la barra de menú PlanAhead -> Floorplan) nombra todas las entradas y salidas necesarias con los pines correspondientes. 6.7 Guarda los cambios y cierra el software. 6.8 Da doble clic en la opción Generate Programing File y espera a que se genere, se colocará un círculo verde con una palomita para indicar que el archivo se creó correctamente. 6.9 Conecta la tarjeta de desarrollo Nexys3 y enciéndela. 6.10 Abre el software Digilent Adept. 6.11 Da clic en el botón Browse, entra en la carpeta del proyecto creado y selecciona el archivo .bit y presiona enter. 6.12 Da clic en el botón program, esperar a que se termine la programación. 6.13 Verifica el funcionamiento correcto del multiplexor. 6.14 Modifica el código de manera que en cada display de 7 segmentos de la tarjeta de desarrollo se exhiba la entrada que se encuentra activa y su valor. 6.15 Repite los pasos 6.5 a 6.13. 6.16 Repite los pasos 6.2 a 6.13 ésta vez para un demultiplexor 1-4. 6.17 Modifica el código de manera que en cada display de 7 segmentos de la tarjeta de desarrollo se exhiban los valores de las 4 salidas del demultiplexor. 6.18 Repite los pasos 6.5 a 6.13. Laboratorio de Diseño de Sistemas Digitales 24 Práctica No. 6 6.19 Multiplexor y demultiplexor en VHDL Apaga la tarjeta, desconecta y guarda el equipo utilizado. 6.20 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. COMPRENSIÓN 1.- ¿Qué es un multiplexor? 2.- ¿Qué es un demultiplexor? 3.- Menciona 2 aplicaciones de multiplexores y demultiplexores Laboratorio de Diseño de Sistemas Digitales 25 Práctica No. 6 Multiplexor y demultiplexor en VHDL CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 26 Práctica No. 7 Unidad Lógica Aritmética / / UNIDAD LÓGICA ARITMÉTICA (DEM) Práctica 7 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO El alumno diseñará el código de una unidad lógico aritmética (ALU) en VHDL, y desplegará el resultado de las operaciones en LED’s del FPGA. MATERIAL 1) Tarjeta de Desarrollo NEXYS™ 3. 2) Software Xilinx® ISE Design Suite. 3) Software Xilinx® PlanAhead. 4) Software Diligent® Adept. 5) Equipo de Cómputo. PROCEDIMIENTO 7.1 Realizar el análisis para la elaboración de una ALU de 4 bits como la que se presenta en la Fig. 7.1, tomando en consideración los siguientes requisitos para el diseño y la Tabla 7.1. ALU a) A - Vector de entrada. b) B - Vector de entrada c) Ci - Acarreo de entrada d) R - Resultado e) N - Negativo. f) Z - Cero. g) V - Sobreflujo. h) C - Acarreo de salida N A Z B V C R Ci F Fig. 7.1 ALU “Imagen de creación propia” Laboratorio de Diseño de Sistemas Digitales 27 Práctica No. 7 Unidad Lógica Aritmética F 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Operación A+1 A-1 B+1 B-1 A + B + Ci A-B B-A NOT A NOT B A AND B Tabla 7.1 Seleccionador de operación propuesto en la ALU. 7.2 Abrir el software Xilinx® ISE Design Suite y generar un nuevo proyecto. 7.3 Incluir en el proyecto recién creado, un nuevo módulo VHDL. 7.4 Realizar el programa de la ALU de 4 bits de acuerdo a los requerimientos del punto 7.1. 7.5 Guardar los cambios y sintetizar el proyecto. 7.6 En el Software Xilinx® PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombrar todas las entradas y salidas necesarias con los pines correspondientes. 7.7 Guardar los cambios y cerrar el software. 7.8 Dar doble clic en la opción Generate Programing File y esperar a que se genere. (Para indicar que el archivo se creó correctamente, aparecerá un círculo verde con una palomita en medio). 7.9 Conectar la Tarjeta de Desarrollo NEXYS™ 3 y encenderla. 7.10 Abrir el software Diligent® Adept. 7.11 Dar clic en el botón Browse, entrar en la carpeta del proyecto creado y seleccionar el archivo con la extensión .bit. Laboratorio de Diseño de Sistemas Digitales 28 Práctica No. 7 Unidad Lógica Aritmética 7.12 Dar clic en el botón Program y esperar a que se termine la programación. 7.13 Realizar la debida comprobación del correcto funcionamiento de la descripción del circuito. 7.14 Apagar la tarjeta, desconectar y guardar el equipo utilizado. 7.15 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. COMPRENSIÓN 1.- ¿Qué es una ALU? 2.- Describa detalladamente que indica la bandera de sobreflujo. Laboratorio de Diseño de Sistemas Digitales 29 Práctica No. 7 Unidad Lógica Aritmética 3.- ¿Cuál es la importancia de la ALU en un procesador? CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 30 Práctica No. 8 Generadores de Señales de Reloj y Flip-flops / / GENERADORES DE SEÑALES DE RELOJ Y FLIP-FLOPS (DEM) Práctica 8 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO El alumno conocerá y comprobará el funcionamiento de dispositivos empleados en la lógica secuencial y dispositivos con memoria, basados en sistemas temporizados. MATERIAL a) Fuente de 5 V CD. b) Tablilla de Conexiones. c) Interruptor DIP. d) Diodo Emisor de Luz. e) Variedad de Resistencias. f) Variedad de Potenciómetros. g) Variedad de Capacitores. h) Circuito Integrado 555. i) Circuito Integrado 74LS73 FF J-K. j) Circuito Integrado 74LS74 FF D. PROCEDIMIENTO 8.1 Construir el circuito de reloj mostrado en el anexo X “Multivibrador 555 astable”. 8.2 Energizar el circuito y observar una constante intermitencia del diodo emisor de luz (LED). Laboratorio de Diseño de Sistemas Digitales 31 Práctica No. 8 Generadores de Señales de Reloj y Flip-flops 8.3 Desenergizar el circuito y sin desconectar el circuito astable 555, conectar el circuito integrado 74LS73 que corresponda al FF tipo J-K, para comprobar la tabla característica de la Figura “Anexo”, y opere las entradas asíncronas. 8.4 Comprobar los resultados obtenidos con su correspondiente tabla característica. 8.5 Repetir el procedimiento anterior para comprobar el comportamiento del circuito FF tipo D, con el circuito integrado FF 74LS74. 8.6 Escribir lo realizado en la práctica detalladamente, con observaciones. COMPRENSIÓN 1.- En un Flip-flop, ¿qué función tienen las entradas Clear y Preset? 2.- ¿En qué consiste un FF maestro-esclavo? Laboratorio de Diseño de Sistemas Digitales 32 Práctica No. 8 Generadores de Señales de Reloj y Flip-flops 3.- Mencione diferentes usos de los contadores en un sistema digital. CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 33 Práctica No. 8 Generadores de Señales de Reloj y Flip-flops Laboratorio de Diseño de Sistemas Digitales 34 Práctica No. 9 Diseño de un contador síncrono mediante Flip-Flop / / DISEÑO DE UN CONTADOR SÍNCRONO MEDIANTE FLIP-FLOPS (DEM) Práctica 9 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 Participación 4 Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Comprender el funcionamiento de un contador digital basado en circuitos secuenciales, y diseñar un contador digital desplegando el resultado en un display de siete segmentos. MATERIAL a) Fuente de 5 V CD. b) Tablilla de Conexiones. c) Interruptor DIP. d) Diodo Emisor de Luz. e) Variedad de Resistencias. f) Variedad de Potenciometros. g) Variedad de Capacitores. h) Circuito Integrado 555. i) Circuito Integrado 74LS73 FF J-K. j) Circuito Integrado 74LS48 Decodificador de salidas altas. 1. Display de siete segmentos de ánodo común. PROCEDIMIENTO 9.1 Construir el circuito de reloj mostrado en el anexo “X” “Multivibrador 555 astable”. 9.2 Energizar el circuito y observar una constante intermitencia del diodo intermitencia del diodo emisor de luz LED. Laboratorio de Diseño de Sistemas Digitales 35 Práctica No. 9 Diseño de un contador síncrono mediante Flip-Flop 9.3 Energizar el circuito y observar una constante intermitencia del diodo emisor de luz LED. 9.4 Desenergizar el circuito y sin desconectar el circuito astable 555 conectar el circuito integrado FF 74LS73 que corresponda al tipo J-K, para comprobar la tabla característica de la figura A9.4 y opere las entradas asíncronas. 9.5 Comprobar los resultados obtenidos con su correspondiente tabla característica. 9.6 Repetir el procedimiento anterior para comprobar el comportamiento del circuito FF tipo D, con el circuito integrado FF 74LS74. 9.7 Escribir lo realizado en la práctica detalladamente, con observaciones. COMPRENSIÓN 1.- ¿Cuantos Flip-flops son necesarios para diseñar un contador de 0 a 16? Laboratorio de Diseño de Sistemas Digitales 36 Práctica No. 9 Diseño de un contador síncrono mediante Flip-Flop 2.- ¿Con qué clase de Flip-flop será mas sencillo el implementar un contador de 0 a 16? Justifique su respuesta. 3.- ¿Qué consideraciones se deben de tomar para que el ciclo de trabajo sea del 50% utilizando el circuito integrado “555”? CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 37 Práctica No. 9 Diseño de un contador síncrono mediante Flip-Flop Laboratorio de Diseño de Sistemas Digitales 38 Práctica No. 10 Contador Ascendente Modulo 10 / / CONTADOR ASCENDENTE MÓDULO 10 (DEM) Práctica 10 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO El alumno analizará y realizará la descripción en hardware de un contador módulo 10. MATERIAL 1) 2) 3) 4) 5) Tarjeta de Desarrollo NEXYS™ 3. Software Xilinx® ISE Design Suite. Software Xilinx® PlanAhead. Software Diligent® Adept. Equipo de Cómputo. PROCEDIMIENTO 10.1 Efectuar el análisis para realizar un contador módulo 10. 10.2 Dibujar el grafo correspondiente al contador mencionado en el punto anterior. 10.3 Abrir el software Xilinx® ISE Design Suite y generar un nuevo proyecto. 10.4 Incluir en el proyecto recién creado, un nuevo módulo VHDL. 10.5 Realizar el programa del contador acuerdo al grafo realizado en el punto 10.2. 10.6 Guardar los cambios y sintetizar el proyecto. Laboratorio de Diseño de Sistemas Digitales 39 Práctica No. 10 Contador Ascendente Modulo 10 10.7 En el Software Xilinx® PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombrar todas las entradas y salidas necesarias con los pines correspondientes. 10.8 Guardar los cambios y cerrar el software. 10.9 Dar doble clic en la opción Generate Programing File y esperar a que se genere. (Para indicar que el archivo se creó correctamente, aparecerá un círculo verde con una palomita en medio). 10.10 Conectar la Tarjeta de Desarrollo NEXYS™ 3 y encenderla. 10.11 Abrir el software Digilent® Adept. 10.12 Dar clic en el botón Browse, entrar en la carpeta del proyecto creado y seleccionar el archivo con la extensión .bit. 10.13 Dar clic en el botón Program y esperar a que se termine la programación. 10.14 Realizar la debida comprobación del correcto funcionamiento de la descripción del circuito. 10.15 Apagar la tarjeta, desconectar y guardar el equipo utilizado. 10.16 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. Laboratorio de Diseño de Sistemas Digitales 40 Práctica No. 10 Contador Ascendente Modulo 10 COMPRENSIÓN 1.- El contador módulo 10 de esta práctica, ¿es considerado síncrono o asíncrono? Justifique su respuesta. 2.- ¿Qué cambios se necesitarían hacer en la descripción del circuito, para que el contador módulo 10 realizado en esta práctica opere como un contador ascendente descendente? 3.- Mencione cómo se declara el puerto de entrada para la señal de reloj, utilizando el cristal oscilador de 100 MHz de la Tablilla de Desarrollo NEXYS3. CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 41 Práctica No. 10 Contador Ascendente Modulo 10 Laboratorio de Diseño de Sistemas Digitales 42 Práctica No. 11 Contador Ascendente Descendente / / CONTADOR ASCENDENTE DESCENDENTE (DEM) Práctica 11 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO El alumno comprenderá el funcionamiento de un contador digital y aprenderá a utilizar a su conveniencia, la señal generada por un oscilador de cristal. MATERIAL 1) 2) 3) 4) 5) Tarjeta de desarrollo NEXYS™ 3. Software Xilinx® ISE Design Suite. Software Xilinx® PlanAhead. Software Diligent® Adept. Equipo de Cómputo. PROCEDIMIENTO 11.1 Realizar el análisis para diseñar un contador ascendente descendente de cero (0) a noventa y nueve (99), el cual se vea reflejada la salida en el display de la Tarjeta de Desarrollo NEXYS™ 3. 11.2 Dibujar los grafos correspondientes a los contadores que se plantean en el punto anterior. 11.3 Abrir el software Xilinx® ISE Design Suite y generar un nuevo proyecto. 11.4 Incluir en el proyecto recién creado, un nuevo módulo VHDL. Laboratorio de Diseño de Sistemas Digitales 43 Práctica No. 11 Contador Ascendente Descendente 11.5 Realizar el programa del contador ascendente descendente de acuerdo a los grafos del punto 11.2. 11.6 Guardar los cambios y sintetizar el proyecto. 11.7 En el Software Xilinx® PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombrar todas las entradas y salidas necesarias con los pines correspondientes. 11.8 Guardar los cambios y cerrar el software. 11.9 Dar doble clic en la opción Generate Programing File y esperar a que se genere. (Para indicar que el archivo se creo correctamente, aparecerá un círculo verde con una palomita en medio). 11.10 Conectar la Tarjeta de Desarrollo NEXYS™ y encenderla. 11.11 Abrir el software Diligent® Adept. 11.12 Dar clic en el botón Browse, entrar en la carpeta del proyecto creado y seleccionar el archivo con la extensión .bit. 11.13 Dar clic en el botón Program y esperar a que se termine la programación. 11.14 Realizar la debida comprobación del correcto funcionamiento de la descripción del circuito. 11.15 Apagar la tarjeta, desconectar y guardar el equipo utilizado. 11.16 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. Laboratorio de Diseño de Sistemas Digitales 44 Práctica No. 11 Contador Ascendente Descendente COMPRENSIÓN 1.- ¿Por qué es necesario el divisor de frecuencia al momento de mostrar el resultado en los displays de siete segmentos? 2.- ¿Qué sucederá si el ciclo de trabajo del pulso de reloj es menor al 50%? 3.- ¿Cuántos contadores son necesarios para diseñar un calendario en formato dd-mm-aaaa? Analice y describa la interacción entre ellos. CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 45 Práctica No. 11 Contador Ascendente Descendente Laboratorio de Diseño de Sistemas Digitales 46 Práctica No. 12 Registros de corrimiento en VHDL / / REGISTROS DE CORRIMIENTO EN VHDL (DEM) Práctica 12 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Que el alumno entienda el funcionamiento de un registro de corrimiento entrada serie-salida serie y un registro de corrimiento entrada serie-salida paralelo y sea capaz de describirlo mediante VHDL. MATERIAL Y EQUIPO A UTILIZAR 1) 2) 3) 4) 5) Tarjeta de desarrollo NexysTM 3 Software XilinxR ISE WebPack Software XilinxR PlanAhead Software Diligent Adept Equipo de cómputo PROCEDIMIENTO 12.1 Dibuja el diagrama de un registro de corrimiento entrada serie-salida serie. Laboratorio de Diseño de Sistemas Digitales 47 Práctica No. 12 Registros de corrimiento en VHDL 12.2 Dibuja el diagrama de un registro de corrimiento entrada serie-salida paralelo. 12.3 Abre el software Xilinx ISE WebPack y genera un nuevo proyecto. 12.4 Incluye en el proyecto recién creado un nuevo módulo VHDL. 12.5 Programa el registro de corrimiento entrada serie-salida serie, se utilizará un switch de reset y un switch para ingresar el dato. 12.6 12.7 Guarda los cambios y sintetiza el proyecto. En el Software Xilinx PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombra todas las entradas y salidas necesarias con los pines correspondientes. 12.8 Guarda los cambios y cierra el software. 12.9 Da doble clic en la opción Generate Programing File y espera a que se genere, se colocará un círculo verde con una palomita para indicar que el archivo se creó correctamente. 12.10 Conecta la tarjeta de desarrollo Nexys3 y enciéndela. 12.11 Abre el software Digilent Adept. 12.12 Da clic en el botón Browse, entra en la carpeta del proyecto creado y selecciona el archivo .bit y presiona enter. Laboratorio de Diseño de Sistemas Digitales 48 Práctica No. 12 Registros de corrimiento en VHDL 12.13 Da clic en el botón program, esperar a que se termine la programación. 12.14 Verifica el funcionamiento correcto del registro de corrimiento. 12.15 Modifica el código de manera que en cada display de 7 segmentos de la tarjeta de desarrollo se exhiba la salida de un flip-flop del registro de corrimiento. 12.16 Repite los pasos 12.6 a 12.14. 12.17 Repite los pasos 12.3 a 12.14 ésta vez para registro de corrimiento entrada seriesalida paralelo, se tendrá un switch para reset, uno para la entrada del dato y un último switch para controlar la lectura de las salidas o corrimiento del dato. 12.18 Modifica el código de manera que en cada display de 7 segmentos de la tarjeta de desarrollo se exhiban cada una de las salidas en paralelo del registro de corrimiento. 12.19 Repite los pasos 12.6 a 12.14. 12.20 Apaga la tarjeta, desconecta y guarda el equipo utilizado. 12.21 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. Laboratorio de Diseño de Sistemas Digitales 49 Práctica No. 12 Registros de corrimiento en VHDL COMPRENSIÓN 1.- ¿Cuáles son los tipos de registros de corrimiento que se pueden construir? 2.- ¿Cuál es el principio de funcionamiento de los registros de corrimiento? 3.- ¿Cuáles son las ventajas y desventajas de programar los registros de corrimiento en comparación con construirlos físicamente? CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 50 Práctica No. 13 Diseño de una memoria RAM en VHDL / / DISEÑO DE UNA MEMORIA RAM EN VHDL (DEM) Práctica 13 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Que el alumno reafirme sus conocimientos en circuitos de memoria y sea capaz de diseñar y describir una memoria RAM mediante VHDL. MATERIAL Y EQUIPO A UTILIZAR 1) 2) 3) 4) 5) Tarjeta de desarrollo NexysTM 3 Software XilinxR ISE WebPack Software XilinxR PlanAhead Software Diligent Adept Equipo de cómputo PROCEDIMIENTO 13.1 Abre el software Xilinx ISE WebPack y genera un nuevo proyecto. 13.2 Incluye en el proyecto recién creado un nuevo módulo VHDL. 13.3 Programa una memoria RAM de 4 localidades de memoria de 4 bits cada una, se tendrán dos switch para acceder a la localidad deseada de manera combinacional, cuatro switch para ingresar el dato y dos switch para seleccionar la acción en la memoria leer o escribir. 13.4 Guarda los cambios y sintetiza el proyecto. Laboratorio de Diseño de Sistemas Digitales 51 Práctica No. 13 Diseño de una memoria RAM en VHDL 13.5 En el Software Xilinx PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombra todas las entradas y salidas necesarias con los pines correspondientes. 13.6 Guarda los cambios y cierra el software. 13.7 Da doble clic en la opción Generate Programing File y espera a que se genere, se colocará un círculo verde con una palomita para indicar que el archivo se creó correctamente. 13.8 Conecta la tarjeta de desarrollo Nexys3 y enciéndela. 13.9 Abre el software Digilent Adept. 13.10 Da clic en el botón Browse, entra en la carpeta del proyecto creado y selecciona el archivo .bit y presiona enter. 13.11 Da clic en el botón program, esperar a que se termine la programación. 13.12 Verifica el funcionamiento correcto de la memoria. 13.13 Modifica el código de manera que en cada display de 7 segmentos de la tarjeta de desarrollo se exhiba una “H” cuando las salidas están en alta impedancia (escritura o sin acción) y cuando se lea una localidad aparezcan los valores de los 4 bits de la localidad. 13.14 Repite los pasos 13.4 a 13.12. 13.15 Apaga la tarjeta, desconecta y guarda el equipo utilizado. 13.16 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. Laboratorio de Diseño de Sistemas Digitales 52 Práctica No. 13 Diseño de una memoria RAM en VHDL COMPRENSIÓN 1.- ¿Qué significa RAM y para qué se utiliza? 2.- ¿Cuál es el principio de funcionamiento de una memoria RAM? 3.- Menciona 2 aplicaciones de las memorias RAM CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 53 Práctica No. 13 Diseño de una memoria RAM en VHDL Laboratorio de Diseño de Sistemas Digitales 54 Práctica No. 14 Máquinas de Estado Finito / / MÁQUINAS DE ESTADO FINITO (DEM) Práctica 14 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO El alumno conocerá la importancia del diseño de una máquina de estados finitos (FSM) y diseñará mediante una FSM el control de un sistema de bombeo residencial. MATERIAL 1) 2) 3) 4) 5) Tarjeta de Desarrollo NEXYS™ 3. Software Xilinx® ISE Design Suite. Software Xilinx® PlanAhead. Software Diligent® Adept. Equipo de Cómputo. PROCEDIMIENTO 14.1 Conseguir la función que represente la operación de una bomba de agua controlada por sensores de nivel, tal como se observa en la Figura 14.1 ilustrada abajo, considerando que se desea mantener en el tinaco el mayor nivel de agua disponible. 14.2 Dibujar el grafo correspondiente a la FSM del problema anterior. Laboratorio de Diseño de Sistemas Digitales 55 Práctica No. 14 Máquinas de Estado Finito Figura 14.1 Sistema de bombeo con protección en tinaco y cisterna “Imagen de creación propia” 14.3 Abrir el software Xilinx® ISE Design Suite y generar un nuevo proyecto. 14.4 Incluir en el proyecto recién creado, un nuevo módulo VHDL. 14.5 Realizar el programa del control del nivel deseado para el tinaco de acuerdo al grafo del punto 14.2. 14.6 Guardar los cambios y sintetizar el proyecto. 14.7 En el Software Xilinx® PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombrar todas las entradas y salidas necesarias con los pines correspondientes. 14.8 Guardar los cambios y cerrar el software. Laboratorio de Diseño de Sistemas Digitales 56 Práctica No. 14 Máquinas de Estado Finito 14.9 Dar doble clic en la opción Generate Programing File y esperar a que se genere. (Para indicar que el archivo se creó correctamente, aparecerá un círculo verde con una palomita en medio). 14.10 Conectar la Tarjeta de Desarrollo NEXYS™ 3y encenderla. 14.11 Abrir el software Diligent® Adept. 14.12 Dar clic en el botón Browse, entrar en la carpeta del proyecto creado y seleccionar el archivo con la extensión .bit. 14.13 Dar clic en el botón Program y esperar a que se termine la programación. 14.14 Realizar la debida comprobación del correcto funcionamiento de la descripción del circuito. 14.15 Apagar la tarjeta, desconectar y guardar el equipo utilizado. 14.16 Escribir lo realizado en la práctica detalladamente, con observaciones. COMPRENSIÓN 1.- ¿Qué significa FSM y cuáles son los diversos tipos que existen? Laboratorio de Diseño de Sistemas Digitales 57 Práctica No. 14 Máquinas de Estado Finito 2.- ¿Cuáles son las diferencias entre estos tipos de FSM’s? 3.- ¿Cuál es la FSM más estable ante una entrada no considerada? Justifica tu respuesta CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 58 Práctica No. 15 Control de máquina expendedora mediante FSM en VHDL / / CONTROL DE MÁQUINA EXPENDEDORA MEDIANTE FSM EN VHDL (DEM) Práctica 15 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Que el alumno sea capaz de diseñar una FSM como unidad de control de una máquina expendedora de productos y generar la descripción de código en VHDL. MATERIAL Y EQUIPO A UTILIZAR 1) 2) 3) 4) 5) Tarjeta de desarrollo NexysTM 3 Software XilinxR ISE WebPack Software XilinxR PlanAhead Software Diligent Adept Equipo de cómputo Laboratorio de Diseño de Sistemas Digitales 59 Práctica No. 15 Control de máquina expendedora mediante FSM en VHDL PROCEDIMIENTO 15.1 Diseña una FSM de una máquina expendedora de productos, el producto cuesta $3.00 pesos y acepta monedas de $1.00 y $2.00 pesos. Suponga que solamente se puede introducir una moneda a la vez y que la máquina tiene monedas ilimitadas para dar cambio. 15.2 Abre el software Xilinx ISE WebPack y genera un nuevo proyecto. 15.3 Incluye en el proyecto recién creado un nuevo módulo VHDL. 15.4 Basado en el diseño anterior de la FSM, programa el sistema de control de la máquina expendedora de productos. 15.5 Guarda los cambios y sintetiza el proyecto. 15.6 En el Software Xilinx PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombra todas las entradas y salidas necesarias con los pines correspondientes. Laboratorio de Diseño de Sistemas Digitales 60 Práctica No. 15 Control de máquina expendedora mediante FSM en VHDL 15.7 Guarda los cambios y cierra el software. 15.8 Da doble clic en la opción Generate Programing File y espera a que se genere, se colocará un círculo verde con una palomita para indicar que el archivo se creó correctamente. 15.9 Conecta la tarjeta de desarrollo Nexys3 y enciéndela. 15.10 Abre el software Digilent Adept. 15.11 Da clic en el botón Browse, entra en la carpeta del proyecto creado y selecciona el archivo .bit y presiona enter. 15.12 Da clic en el botón program, esperar a que se termine la programación. 15.13 Verifica el funcionamiento correcto del sistema de control. 15.14 Modifica el código de manera que en los displays de 7 segmentos de la tarjeta de desarrollo se exhiba en el primero una “P”, en el segundo el estado si se entrega producto representado con un “1” o no se entrega producto representado con un “0”, en el tercero una “C” y en el cuarto el estado sobre si se entrega cambio representado con un “1” o no se entrega cambio representado con un “0”. 15.15 Repite los pasos 15.5 a 15.13. 15.16 Apaga la tarjeta, desconecta y guarda el equipo utilizado. 15.17 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. Laboratorio de Diseño de Sistemas Digitales 61 Práctica No. 15 Control de máquina expendedora mediante FSM en VHDL COMPRENSIÓN 1.- ¿Qué significa FSM y cuáles son los diversos tipos que existen? 2.- ¿Cuáles son las diferencias entre estos tipos de FSM’s? 3.- ¿Cuál es la FSM más estable ante una entrada no considerada? Justifica tu respuesta CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 62 Práctica No. 16 Control de un motor a pasos mediante FSM en VHDL / / CONTROL DE UN MOTOR A PASOS MEDIANTE FSM EN VHDL (DEM) Práctica 16 Procedimiento 0 1 2 0 1 2 0 1 0 1 3 4 Participación Calificación de la Práctica Comprensión Conclusiones 2 3 OBJETIVO Que el alumno sea capaz de diseñar una FSM como unidad de control de una motor a pasos y generar la descripción de código en VHDL MATERIAL Y EQUIPO A UTILIZAR 1) 2) 3) 4) 5) Tarjeta de desarrollo NexysTM 3 Software XilinxR ISE WebPack Software XilinxR PlanAhead Software Diligent Adept Equipo de cómputo Laboratorio de Diseño de Sistemas Digitales 63 Práctica No. 16 Control de un motor a pasos mediante FSM en VHDL PROCEDIMIENTO 16.1 Diseña una FSM para el control de giro de un motor a pasos de 6 hilos, donde se podrá seleccionar el giro del motor o si éste queda en reposo, es decir, sin movimiento. 16.2 Abre el software Xilinx ISE WebPack y genera un nuevo proyecto. 16.3 Incluye en el proyecto recién creado un nuevo módulo VHDL. 16.4 Basado en el diseño anterior de la FSM, programa el sistema de control del motor a pasos. 16.5 Guarda los cambios y sintetiza el proyecto. 16.6 En el Software Xilinx PlanAhead (abrir de la barra de menú -> PlanAhead -> Floorplan) nombra todas las entradas y salidas necesarias con los pines correspondientes. 16.7 Guarda los cambios y cierra el software. Laboratorio de Diseño de Sistemas Digitales 64 Práctica No. 16 Control de un motor a pasos mediante FSM en VHDL 16.8 Da doble clic en la opción Generate Programing File y espera a que se genere, se colocará un círculo verde con una palomita para indicar que el archivo se creó correctamente. 16.9 Conecta la tarjeta de desarrollo Nexys3 y enciéndela. 16.10 Abre el software Digilent Adept. 16.11 Da clic en el botón Browse, entra en la carpeta del proyecto creado y selecciona el archivo .bit y presiona enter. 16.12 Da clic en el botón program, esperar a que se termine la programación. 16.13 Verifica el funcionamiento correcto del sistema de control. 16.14 Modifica el código de manera que en los displays de 7 segmentos de la tarjeta de desarrollo se exhiba el corrimiento de la señal de control para el giro del motor, donde un “1” represente salida en voltaje alto y un “0” una salida en voltaje bajo. 16.15 Repite los pasos 15.5 a 15.13. 16.16 Conecta el circuito del driver L298 para el control de un motor a pasos. 16.17 Modifica el código para poder sacar las señales de control por uno de los puertos PMod y conéctalas al circuito del driver L298 para controlar físicamente el motor. 16.18 Comprueba el funcionamiento del motor con el programa del control. 16.19 Apaga la tarjeta, desconecta y guarda el equipo utilizado. 16.20 Escribir lo realizado en la práctica detalladamente, con sus respectivas observaciones. Laboratorio de Diseño de Sistemas Digitales 65 Práctica No. 16 Control de un motor a pasos mediante FSM en VHDL COMPRENSIÓN 1.- Dibuje el diagrama de un motor a pasos de 6 hilos. 2.- ¿Cuál es el principio de funcionamiento de un motor a pasos? 3.- ¿Cuáles son las características de un motor a pasos? Menciona 2 aplicaciones. Laboratorio de Diseño de Sistemas Digitales 66 Práctica No. 16 Control de un motor a pasos mediante FSM en VHDL CONCLUSIONES Laboratorio de Diseño de Sistemas Digitales 67 Práctica No. 16 Control de un motor a pasos mediante FSM en VHDL Laboratorio de Diseño de Sistemas Digitales 68 Especificaciones de la tarjeta de desarrollo NexysTM 3 Anexo A ESPECIFICACIONES DE LA TARJETA DE DESARROLLO NEXYSTM 3 Anexo A Compendio extraído de Nexys 3 Reference Manual https://reference.digilentinc.com/reference/programmable-logic/nexys3/reference-manual Figura A.1 Tarjeta de desarrollo Nexys TM 3 Imagen tomada de: https://store.digilentinc.com/nexys-3-spartan-6-fpga-trainer-board-limited-time-see-nexys4-ddr/ INTRODUCCIÓN La tarjeta de desarrollo Nexys3 es una plataforma de desarrollo de circuitos digitales completa y lista para usarse basada en el FPGA Spartan-6 LX16 de Xilinx, proporcionando grandes capacidades y un alto desempeño. Dentro de las características más importantes de la plataforma son las siguientes: Xilinx Spartan-6 LX16 FPGA en un paquete BGA de 324 pines 16Mbyte Cellular RAM (x16) Memoria no volátil SPI PCM de 16Mbytes Memoria PCM paralela no volátil de 16Mbytes 10/100 Ethernet PHY Puerto USB2 integrado para programación y datos Puertos USB-UART y USB-HID para ratón y teclado Puerto VGA de 8 bits Oscilador CMOS de 100MHz 72 I/O’s mapeadas a conectores de expansión GPIO que incluyen 8 LED's, 6 botones momentáneos, 8 interruptores deslizables y 1 display de 4 dígitos de 7 segmentos. Laboratorio de Diseño de Sistemas Digitales 69 Anexo A Especificaciones de la tarjeta de desarrollo NexysTM 3 La siguiente imagen muestra la distribución de los diversos componentes que conforman la tarjeta de desarrollo Nexys3. Figura A.2 Distribución de los componentes de la tarjeta de desarrollo Nexys TM 3 Imagen tomada de: https://reference.digilentinc.com/reference/programmable-logic/nexys-3/reference-manual ALIMENTACIÓN La tarjeta Nexys3 puede ser alimentada por medio del puerto Adept USB o por medio de una fuente externa de alimentación. Para seleccionar la fuente de alimentación con la que se energizará la tarjeta Nexys3 se utiliza el jumper JP1 (Figura A.2 “Power Select Jumper”), colocado a un costado del jack de alimentación. Para alimentar la tarjeta por medio del puerto USB es necesario poner el jumper JP1 en la posición de “USB”. El puerto USB puede entregar suficiente potencia para la gran mayoría de 80 Laboratorio de Diseño de Sistemas Digitales 70 Anexo A Especificaciones de la tarjeta de desarrollo NexysTM 3 los diseños que se implementen. Es posible, para aplicaciones muy demandantes de potencia, como lo son el caso en el que la aplicación controle varias tarjetas periféricas, o aplicaciones que necesiten funcionar sin estar conectadas al puerto USB de una computadora, energizar a la tarjeta Nexys3 por medio de una fuente externa de alimentación. Para poder energizar la tarjeta a partir de una fuente externa es necesaria colocar el jumper JP1 en la posición de “WALL” para habilitar dicha entrada. Como fuentes de alimentación externas para la Nexys3 se pueden usar, tanto un eliminador de pared como un paquete de baterías y debido a que estos dos tipos de entradas están conectadas en paralelo para activarse con la misma posición del jumper JP1 NO DEBEN CONECTARSE DE MANERA SIMULTÁNEA a la Nexys3. Cualquiera que sea el tipo de alimentación externa que se utilice, ésta debe ser capaz de proporcionar al menos 5W de potencia de entrada y, en el caso del eliminador de pared debe usar un plug con diámetro interno de 2.1mm y centro positivo. El paquete de baterías debe conectarse en el conector J11, el cual está paralelo al Jack de alimentación. El regulador principal de la Nexys3 puede regular hasta un voltaje de entrada de 5.5VDC, por lo que cualquiera de las dos fuentes externas no debe superar este voltaje de entrada. Figura A.3 Diagrama para la alimentación de la tarjeta de desarrollo Nexys TM 3. Imagen obtenida de: https://reference.digilentinc.com/reference/programmable-logic/nexys-3/reference-manual El suministro de energía de la Nexys3 es activado por medio del interruptor deslizable (“Power Switch” Figura A.2) SW8, el cual debe ser colocado en la posición de ON, y una vez que se activa el suministro de energía el LED LD8 encenderá para confirmar que la tarjeta está energizada. Laboratorio de Diseño de Sistemas Digitales 71 Especificaciones de la tarjeta de desarrollo NexysTM 3 Anexo A ENTRADAS Y SALIDAS BÁSICAS (GPIO’s) La Tarjeta Nexys3 incluye 8 interruptores deslizables, 5 botones momentáneos, 8 LED’s individuales y 1 display de 4 dígitos de 7 segmentos. Los botones y los interruptores están conectados al FPGA a través de una resistencia en serie para prevenir daños debido a cortocircuitos inesperados (que podría ocurrir si uno de los pines asignados a estos componentes es definido por error como una salida). Los botones generan normalmente una salida lógica baja cuando están en reposo, y una salida lógica alta solamente cuando están presionados. Los interruptores deslizables generan una señal lógica constante alta o baja dependiendo de la posición en la que se encuentren. Los 8 LED’s individuales son de alta eficiencia, están conectados al FPGA por el ánodo a través de una resistencia de 390 Ohms, por lo que encienden cuando se aplica un voltaje lógico alto en su pin respectivo. Figura A.4 Entradas y salidas básicas de la tarjeta de desarrollo NexysTM 3 Imagen obtenida de: https://reference.digilentinc.com/reference/programmable-logic/nexys-3/reference-manual Laboratorio de Diseño de Sistemas Digitales 72 Anexo A Especificaciones de la tarjeta de desarrollo NexysTM 3 Cada uno de los 4 dígitos del display está compuesto de 7 segmentos y son de ánodo común. Los ánodos de los 7 LED’s de cada segmento están unidos en un nodo común, pero los cátodos se mantienen separados. Las señales de los ánodos comunes están disponibles como señales de entrada de activación de cada dígito para el display de 4 dígitos. Los cátodos de los segmentos similares en los 4 dígitos están conectados en un solo nodo, cada uno de éstos 8 nodos están nombrados como CA, CB, CC, CD, CE, CF y DP. Estas 7 señales de los cátodos están disponibles como entradas para el display de 4 dígitos. Esto genera un esquema de display multiplexado. CONECTORES PMOD Los conectores Pmod son conectores hembra de 2x6 que se acoplan con los headers macho de 2x6 estándares que están disponibles en el mercado. Cada conector de 12 pines proporciona 2 señales de 3.3V VCC (pin 6 y 12), 2 señales de tierra GND (pin 5 y 11), y 8 señales lógicas. Los pines VCC y GND pueden entregar hasta 1A de corriente. Las señales de datos de los Pmod nos son emparejados, y están mapeados usando las mejores pistas disponibles sin control de impedancia o retraso de emparejamiento. En la siguiente imagen se muestra la numeración de los pines de los conectores Pmod, y cuáles son los pines del FPGA que le corresponden a cada conector. Figura A.5 Diagrama y correspondencia de pines de conectores Pmod de la tarjeta de desarrollo Nexys TM 3 Imagen obtenida de: https://reference.digilentinc.com/reference/programmable-logic/nexys-3/reference-manual Laboratorio de Diseño de Sistemas Digitales 73 Anexo A Especificaciones de la tarjeta de desarrollo NexysTM 3 Laboratorio de Diseño de Sistemas Digitales 74 Anexo B Tutorial VHDL TUTORIAL VHDL Anexo B INTRODUCCIÓN VHDL es un lenguaje descriptivo, cuyas siglas significan “Very High Speed Integrated Circuit Hardware Description Language”, es útil para modelar sistemas digitales y además es un lenguaje comprensible tanto para el humano como para la máquina. Fue diseñado para el modelado y simulación de sistemas digitales y para la síntesis automática de circuitos. VHDL es un lenguaje con capacidades de sintaxis amplia y flexible, pues permite un modelado estructural, un fácil flujo de datos y permite describir el comportamiento de hardware. Entre las ventajas con las que cuenta VHDL para su utilización son: Permite diseñar, modelar y comprobar. Reutilización de código. Es un lenguaje estándar. Permite el diseño modulado. Se utiliza mediante un diseño Top-Down, lo cual permite modular, simular y refinar los diseños. Puede ser sintetizado por cualquier herramienta utilizada. ELEMENTOS PARA DESCRIPCIÓN DE CIRCUITOS Para poder describir circuitos mediante VHDL es necesario conocer los elementos básicos de descripción para poder diseñar. Toda descripción en VHDL está al menos compuesta por tres elementos: Bibliotecas. Entidades. Arquitecturas Laboratorio de Diseño de Sistemas Digitales 75 Anexo B Tutorial VHDL Aunque también existen otros elementos importantes en un diseño como son: Configuración Declaración del paquete Cuerpo del paquete Las declaraciones de entidad, paquete y configuración se consideran unidades de diseño primarias, mientras que la arquitectura y el cuerpo del paquete son unidades de diseño secundarias por que dependen de una entidad primaria que se debe analizar entre ellas. Entidad Una entidad es el elemento que describe la conexión de un circuito o sistema con el exterior. En esta etapa se caracterizan las entradas y salidas del sistema. Según el nivel de descripción, pueden reflejar diversas terminales. Generalizando, la sintaxis de declaración de una entidad es: entity< identificador> is generic(lista de parámetros);[cabecera] port(lista de puertos); [declaraciones] [begin sentencias] end entity[< identificador>]; Las sentencias generic y port son las que más significado tienen a pesar de ser opcionales. La instrucción generic sirve para definir y declarar propiedades o constantes del módulo que está siendo declarado en la entidad. La instrucción port, también opcional como el resto de las partes de la entidad, define las entradas (in) y salidas (out) del módulo que está siendo definido. Junto a los modos in y out existen otros que también pueden ser usados. Uno de estos modos es el inout, que sirve tanto de entrada como de salida, por lo que puede ser usado en el programa como de lectura y escritura. Otro modo de puerto es el buffer, que es equivalente al out, con la diferencia de que se puede leer. Aunque se parece al inout, en realidad es muy diferente, ya que externamente no se le puede dar ningún valor. El último tipo, muy poco usado y poco aconsejable es el linkage, que es también como el inout, pero sólo puede emplearse con elementos de tipo linkage. Este modo se utiliza para enlazar con Laboratorio de Diseño de Sistemas Digitales 76 Anexo B Tutorial VHDL otros módulos que no necesariamente están escritos en VHDL, es decir, se utilizan para hacer de interfaz con otros modelos de otras herramientas. Arquitectura La arquitectura (architecture) se define en VHDL para describir el funcionamiento interno de las entidades (entity). Dentro de una arquitectura se utilizan todos los recursos del lenguaje que permiten describir comportamiento, flujo de datos (procesos, bloques, sentencias condicionales, creación y asignación a objetos, etc.). La sintaxis de declaración de una arquitectura es la siguiente: architecture< identificador_arquitectura > of <indetificador_entidad> -- Zona de declaraciones begin --Cuerpo de la arquitectura [sentencias concurrentes] end [architecture][< identificador_arquitectura >]; De forma similar a la descripción de entidades, las arquitecturas disponen de una línea inicial, en la que se indica su nombre y el de la entidad a la que se va asociada, y una línea para finalizar la declaración. Entre ambas existen dos partes bien definidas diferenciadas: una zona de declaraciones de los distintos objetos, subprogramas, componentes y otros elementos a utilizar, y un cuerpo donde se describe el funcionamiento del circuito. Toda sentencia en el cuerpo de una arquitectura es concurrente, a menos que esté incluida a su vez dentro de un proceso. Para cada entidad es posible definir varias arquitecturas. Bibliotecas Las bibliotecas (libraries) almacenan las unidades de diseño resultantes del análisis (comprobaciones sintáctica y semántica y compilación) para su uso posterior. Es usual la siguiente clasificación: Bibliotecas de trabajo: almacenan las unidades que modelan el diseño actual. Ejemplo de ellas el work. Bibliotecas de recursos: contienen declaraciones de tipos, objetos, atributos, subprogramas, componentes, etc. frecuentemente utilizados, agrupados en paquetes. Ello facilita la compartición y reutilización del código de diseños distintos. Ejemplos de éstas son la biblioteca std y la biblioteca IEEE. Laboratorio de Diseño de Sistemas Digitales 77 Anexo B Tutorial VHDL Paquetes La sintaxis de la declaración del paquete es la siguiente: package <identificador_paquete> is -- zona de declaraciones: -- tipos, subtipos, constantes, señales, ficheros, variables compartidas, alias, -- subprogramas, componentes y atributos -- especificación de atributos y desconexiones -- sentencia use end package [<identificador_paquete>]; Los elementos declarados en este paquete se pueden usar en cualquier descripción, previa inserción de la sentencia para hacer visible su contenido. Suponiendo que el paquete forma parte de una biblioteca denominada «LIB_1», se accede al mismo por medio de las sentencias: library LIB_1; use LIB_1. varios.all; En el paquete no se ha especificado el comportamiento de la función declarada, por que ello corresponde hacerlo en otra unidad de diseño, el cuerpo del paquete, cuya sintaxis es la siguiente: package body <identificador_paquete> is -- Declaraciones locales y definiciones de: -- subprogramas, constantes, variables compartidas, tipos, subtipos, ficheros y alias, -- sentencia use end package body [<identificador_paquete>]; Laboratorio de Diseño de Sistemas Digitales 78 Anexo B Tutorial VHDL ELEMENTOS SINTÁCTICOS Son los elementos que permiten generar el código en el lenguaje VHDL para su correcto funcionamiento, así como para identificar y describir el sistema con comentarios. Los elementos sintácticos son: Comentarios Cualquier línea que empieza por dos guiones “--” es un comentario. Símbolos especiales Además de las palabras reservadas existen símbolos o caracteres especiales. Los hay de un solo carácter como +, -, /, *, (, ), ., ,, :, ;, &, ‘, >, =, |, # y de dos caracteres como **, =>, :=, /=, >=, <=, <>, --. Identificadores Se utilizan para dar nombre a los diferentes objetos del lenguaje. No se permiten símbolos especiales, palabras reservadas y que inicie con un número o subrayado. Números Cualquier número se considera que está en base 10. Se permite la notación científica para números de punto flotante. Es posible representar números en otras bases utilizando el símbolo de gato “#”. Caracteres Es cualquier número o letra entre comillas simples ‘A’, ‘3’. Cadenas Son un conjunto de caracteres englobados por comillas dobles: “Esta es una cadena de caracteres”. Laboratorio de Diseño de Sistemas Digitales 79 Anexo B Tutorial VHDL Operadores Operador de concatenación &: (concatenación) Concatena matrices de manera que la dimensión de la matriz resultante es la suma de las dimensiones de las matrices sobre las que opera. Operadores aritméticos: o ** (Exponencial).- Eleva un número (real, entero) a un potencia (entero) . o ABS (Valor absoluto).- Entrega el valor absoluto de cualquier número. o * (Multiplicación).- Multiplica dos números de tipo numérico (entero, real). o / (División).- Al igual que la multiplicación, únicamente funciona con números de tipo numérico. o MOD (Módulo).- Calcula el modulo de dos números (enteros). a=b*N+(a mod b) y el resultado toma el signo de b. o REM (Resto).- Calcula el resto de la división entera y se define como el operador que cumple que a = (a/b) * b + (a REM b). o + (Suma).- Realiza la suma si se encuentra en medio de dos operandos (cualquier tipo numérico) o indica signo positivo si se encuentra al principio de una expresión. o - (Resta).- Cuando se encuentra entre dos operandos (cualquier tipo numérico) realiza la resta y representa el signo negativo cuando está al inicio de una expresión. Operadores de desplazamiento: o SLL, SRL (desplazamiento lógico a la izquierda y a la derecha).- Hace un corrimiento lógico a la izquierda (SLL) o a la derecha (SRL) rellenando con ceros los huecos libres. o SLA, SRA (desplazamiento aritmético a la izquierda y a la derecha).- En este caso el corrimiento permite la conservación del signo. Es decir conserva el bit de signo del vector (mas significativo). Laboratorio de Diseño de Sistemas Digitales 80 Anexo B Tutorial VHDL o ROL, ROR (rotación a la izquierda o derecha).- Es como el corrimiento, pero los huecos que se forman son ocupados por los bits que van saliendo. Operadores relacionales (devuelven un valor de tipo booleano “true o false”): o =, /= (igualdad).- El primero devuelve true si los operandos son iguales, en caso contrario es false. El segundo indica desigualdad. Los operandos deben ser del mismo tipo. o <, <=, >, >= (menor mayor).- En este caso el tipo de datos que pueden manejar son siempre de tipo escalar o matrices de una sola dimensión de tipos discretos. Operadores lógicos: NOT, AND, NAND, OR, NOR, XOR y XNOR. El funcionamiento es habitual para este tipo de operadores. Éstos actúan sobre los tipos bit, bit_vector y boolean. En operaciones con vectores la comparación se hace bit a bit, incluyendo la NOT. Precedencia de operadores Tipos de datos Los tipos son los valores (datos) que el diseñador establece para los puertos de entrada y salida de una entidad; se asignan de acuerdo con las características de un diseño en particular. Bit.- El cual tiene valores de 0 y 1 lógicos. Boolean.- Define valores de verdadero y falso en una expresión. Bit_vector (vectores de bits).- Presenta un conjunto de bits para cada variable de entrada o salida. Laboratorio de Diseño de Sistemas Digitales 81 Anexo B Tutorial VHDL Integer (entero).- Representa un número entero. Se utilizan para definir el valor que un objeto puede tomar, así como las operaciones que se realizan con ese objeto. Los tipos de datos se clasifican en dos grupos. • Escalares.- Son aquellos que pueden tomar un solo valor al momento de ser simulados. o Tipo enteros.- VHDL soporta valores enteros en el intervalo -2,147,483,647 (2^31 -1) a 2,147,483,647 (2^31 -1). o Tipo reales.- valores reales en el intervalo -1.0E38 a 1.0E38. La sintaxis en ambos tipos es la siguientes: objet identificador: type range [valores]; “range” se usa para definir un conjunto de valores. o Tipo físicos.- Se refiere a los valores que se usan como unidades de medida. En VHDL el único tipo físico que se encuentra predefinido es time (tiempo), el cual contiene como unidad primaria el femto segundo (fs). Se definen de la siguiente manera: type time is range 0 to 1E20 units fs; ps=1000 fs; ns=1000 ps; us=1000ns; ms=1000us; ….. h = 60 min; end units • Compuestos.- Son aquellos que pueden tomar diversos valores al momento de simular el diseño. o Tipo arreglo.- Son una colección de elementos del mismo tipo a los que se accede mediante un índice. La sintaxis utilizada para declarar un arreglo es: Laboratorio de Diseño de Sistemas Digitales 82 Anexo B Tutorial VHDL type identificador is array (rango) of tipo_objetos; type dígitos is array (9 downto 0) of integer; type byte is array (7 downto 0) of bit; type dirección is array (10 downto 62) of bit; type tabla is array (0 to 3, 0 to 2) of bit; o Tipo registros.- A diferencia de los arreglos, los tipos registro están formados por elementos de diferentes tipos, los cuales reciben el nombre de campo. Cada uno de estos campos debe tener un nombre que permita identificarlos con facilidad dentro del tipo. La sintaxis utilizada para declarar un arreglo es: type identificador is record identificador: tipo; end record; Constantes Una constante es un objeto que almacena un único valor durante toda la simulación u operación, es decir, su valor no se altera. Debido a su carácter, las constantes han de inicializarse al momento de ser declaradas. La sintaxis utilizada para declarar una constante es: Constant identificador: tipo:= valor; Variables Las variables almacenan valores que pueden cambiar a lo largo de la simulación. Las variables solamente pueden declararse y utilizarse dentro de proceso y subprogramas (funciones y procedimientos), por lo tanto son de tipo local. Al declarar una variable puede asignársele un valor inicial. La sintaxis utilizada para declarar una variable es: variable identificador: tipo; Señales Son objetos utilizados como alambrados que permiten simular la interconexión de componentes dentro de la arquitectura de diseño. Una señal no es exactamente un objeto del lenguaje que guarda un valor, sino que lo hace en realidad es guardar el valor y hacerlo visible en el momento indicado. La sintaxis utilizada para declarar una señal es: signal identificador: tipo; Laboratorio de Diseño de Sistemas Digitales 83 Anexo B Tutorial VHDL VHDL CONCURRENTE Son aquellas que se ejecutan simultáneamente en la operación del diseño, es decir no existe una prioridad entre unas u otras. Se utilizan en el modelado de hardware, por que describen adecuadamente su comportamiento. Deben formar parte del cuerpo de arquitecturas o de bloques. Proceso Es la sentencia concurrente definida en VHDL para agrupar internamente sentencias secuenciales. Su sintaxis de declaración es la siguiente: [etiqueta]: [postponed] process [(lista de sensibilidad)] is -- Zona de declaraciones -- subprogramas (funciones y procedimientos) -- tipos, subtipos, objetos (excepto señales y variables compartidas) -- Alias, atributos -- Cláusulas use begin -- Cuerpo del proceso: -- sólo sentencias secuenciales end [postponed] process [etiqueta]; La lista de sensibilidad, hace referencia a un conjunto de señales cuyo cambio activa la ejecución de un proceso. Postponed es una instrucción que se utiliza para posponer la ejecución de un proceso, sin embargo se emplea en simulación de un modelo. Bloques Presenta una sintaxis similar al proceso, sin embargo su contenido es muy diferente. Los bloques son sentencias concurrentes que agrupan a otras sentencias concurrentes. No poseen lista de sensibilidad; en lugar de eso hacen uso del concepto signal guarded para asignación condicional a señales. Permiten declarar puertos y genéricos para la interfaz con el exterior, y otra característica es la de admitir declaraciones locales de señales. La sintaxis de un bloque es la siguiente: Laboratorio de Diseño de Sistemas Digitales 84 Anexo B Tutorial VHDL [etiqueta]: block [(condición guarded)] is -- La etiqueta es obligatoria -- cabecera del bloque --Zona de declaraciones (se permiten las mismas que en una arquitectura) begin -- Cuerpo del bloque: sólo sentencias concurrentes end block [etiqueta]; La condición opcional guarded permite la asignación condicional a señales mediante sentencias en el cuerpo del bloque que sólo se activan cuando dicha condición se cumple. Sentencia when-else Esta condición permite realizar asignaciones condicionales de valores, expresiones u objetos a señales. Su sintaxis es la siguiente: [etiqueta]: señal <= valor_1 when condición_1 else valor_2 when condición_2 else valor_3 when condición_3 else : valor_n when condición_n [else unaffected]; La palabra Unaffected significa que no hay asignación o la señal no se ve afectada. Sentencia with-select Esta sentencia es concurrente, es decir, solamente puede aparecer dentro de estructuras y bloques. Su sintaxis es la siguiente: [etiqueta]: with expresión select señal <= asignación_1 when valor_1, asignación_2 when valor_2, : asignación_n when valor_n, [unaffected when others]; Laboratorio de Diseño de Sistemas Digitales 85 Anexo B Tutorial VHDL VHDL SECUENCIAL Son sentencias secuenciales las que solamente pueden aparecer dentro de procesos y subprogramas. Estas sentencias se ejecutan ordenadamente, al contrario de lo que ocurre con las sentencias concurrentes, en las que no importa el orden en el que están colocadas. Sentencia wait Es una de las más utilizadas en el modelado de circuitos síncronos. Wait detiene las ejecución de un proceso (process) o un procedimiento en espera de que se cumpla un condición. Está prohibido trabajar simultáneamente con wait y variables sensibles en un proceso. Su sintaxis es la siguiente: [etiqueta]: wait [on señal_1, señal_2,…] [until condición] [for expresión temporal] Sentencia if-then-elsif-else Es la estructura típica para utilizar una acción u otra según el resultado de una expresión booleana, siendo equivalente en significado a estructuras de mismo tipo en lenguaje. Su sintaxis es la siguiente: [etiqueta]: if condición then -- sentencias secuenciales elsif condición then -- se admiten cero o varios elsif -- sentencias secuenciales else -- se admite sólo un else -- sentencias secuenciales end if; Sentencia case-when La sentencia case-when permite seleccionar una entre varias alternativas excluyentes entre sí (sólo se debe satisfacer una en cada ejecución) de una expresión determinada y desviar el flujo de ejecución hacia las sentencias relacionadas con una de ellas. Su sintaxis es la siguiente: Laboratorio de Diseño de Sistemas Digitales 86 Anexo B Tutorial VHDL [etiqueta]: case expresión is when caso => sentencias; {when caso => sentencias;} [when others => sentencias;] end case [etiqueta]; Cíclo for-loop Esta sentencia causa la ejecución de un cíclo un número fijo de veces. Resultan necesarias las indicaciones de un índice y un rango. El índice es una variable discreta, enumerada o entera, que no es preciso declarar y que cambia su valor en una unidad por cada ejecución del cíclo a lo largo del rango especificado. La sintaxis es la siguiente: [etiqueta_for]: for indice in rango loop -- sentencias; end loop [etiqueta_for]; Cíclo while-loop La palabra reservada while impone la condición de repetición. El cíclo se repite en tanto la condición que aparece tras while sea verdadera. [etiqueta_while]: while condición loop -- sentencias; end loop [etiqueta_while]; Cíclo loop Ejecuta un ciclo infinito. La sintaxis es la siguiente: [etiqueta_loop]: loop -- sentencias secuenciales end loop [etiqueta_loop]; Laboratorio de Diseño de Sistemas Digitales 87 Anexo B Tutorial VHDL La única sentencia que rompe la ejecución del ciclo infinito es exit. La sentencia NULL indica que no se realiza ninguna operación. Interrupción en cíclos Next permite detener la ejecución de la iteración actual y pasar a la siguiente. Exit detiene la ejecución en ese instante y sale del bucle. La sintaxis es la siguiente: [etiqueta_next]: next identificador when condición; [etiqueta_exit]: exit identificador when condición; PALABRAS RESERVADAS EN VHDL ABS ACCESS AFTER ALIAS ALL AND ARCHITECTURE ARRAY ASSERT ATTRIBUTE BEGIN BLOCK BODY BUFFER BUS CASE COMPONENT CONFIGURATION CONSTANT DISCONNECT DOWNTO ELSE ELSIF END ENTITY EXIT FILE FOR FUNCTION GENERATE GENERIC GROUP GUARDED IF IMPURE IN INERTIAL INOUT IS LABEL LIBRARY LINKAGE LITERAL LOOP MAP MOD NAND NEW NEXT NOR NOT NULL OF ON OPEN OR OTHERS OUT PACKAGE PORT POSTPONED PROCEDURE PROCESS PURE RANGE RECORD REGISTER REJECT REM REPORT RETURN ROL ROR SELECT SEVERITY SHARED SIGNAL SLA SLL SRA SRL SUBTYPE THEN TO TRANSPORT TYPE UNAFFECTED UNITS UNTIL USE VARIABLE WAIT WHEN WHILE WITH XNOR XOR Eladio J. Lobo M; C.I. 8.046.862, Henry Mata; C.I. 16.614.451, Dpto. de Electrónica UNEXPO Vice-Rectorado Puerto Ordaz. (2007). Lenguaje VHDL. Obtenido de: http://lenguajevhdl.blogspot.mx/2007/11/blog-post.html Laboratorio de Diseño de Sistemas Digitales 88 Anexo C Multivibradores biestables MULTIVIBRADORES BIESTABLES Anexo C INTRODUCCIÓN Los circuitos lógicos se dividen en dos tipos, los circuitos combinacionales y los secuenciales. Los circuitos digitales de tipo secuencial son la base de los sistemas de control automático, cuya posibilidad de programación ha dado lugar a los autómatas programables. Estos equipos basan su funcionamiento en una unidad de control programable, que es un sistema secuencial que permite modificar sus funciones por medio de instrucciones. Los circuitos lógicos secuenciales se diferencian de los de tipo combinacional en dos detalles importantes: 1. Los primeros poseen memoria, en el sentido de que el estado de la salida de los circuitos se puede almacenar como bit binario y permanecer en ese estado hasta recibir la instrucción de hacer otra cosa. 2. Están equipados con conexiones de retroalimentación que sirven para alimentar esas salidas almacenadas a compuertas lógicas, ubicadas en el conjunto de circuitos. Los circuitos secuenciales son la base de contadores y registros, memorias y secuencias de estado, las cuales son unidades funcionales en el diseño digital. TIPOS DE CIRCUITOS SECUENCIALES Los circuitos secuenciales pueden operar en forma síncrona o asíncrona. Circuitos secuenciales asíncronos El comportamiento de un circuito asíncrono depende del orden en que cambien las señales de entrada y puedan ser afectadas en un instante dado de tiempo. Los elementos de memoria de los circuitos asíncronos comúnmente usados son retardadores de tiempo. En los sistemas asíncronos tipo compuerta, los elementos de memoria consisten en compuertas lógicas cuyo retardo constituye su memoria, debido a la realimentación entre las compuertas lógicas el circuito secuencial asíncrono puede volverse inestable. Laboratorio de Diseño de Sistemas Digitales 89 Anexo C Multivibradores biestables Circuitos secuenciales síncronos Un sistema lógico secuencial síncrono puede usar señales que afecten los elementos de memoria únicamente en instantes de tiempo discreto. Los sistemas lógicos secuenciales síncronos prácticos usan dispositivos de tiempo llamados generador maestro de tiempo, el cual genera un tren periódico de pulsos de reloj. Los circuitos secuenciales síncronos que utilizan pulsos de reloj en las entradas de los elementos de memoria se llaman circuitos secuenciales temporizados. EL TEMPORIZADOR 555 OSCILADOR ASTABLE El temporizador 555 es uno de los más conocidos y utilizados circuitos integrados, que se utilizan tanto en circuitos electrónicos digitales como analógicos. El funcionamiento del oscilador astable se caracteriza por una sola salida con forma de onda cuadrada (o rectangular) continua de ancho predefinido por el diseñador del circuito, observar figura C.1(a). La señal de salida tiene un nivel alto dado por un tiempo T1 y un nivel bajo dado por un tiempo T2 los tiempos de duración dependen de los valores de las resistencias R1 y R2,Ver figura C.1(b). T1= 0.693(R1+R2)C1 T2=0.693R2C1 Donde C1 es un condensador. La frecuencia “f”, con que la señal de salida oscila está dada por: f1= 1 / (0.693C1 (R1+2R2)) Figura C.1 El temporizador 555 oscilador astable, (a) diagrama de conexión, (b) forma de onda pulsante. “Imagen de creación propia” Laboratorio de Diseño de Sistemas Digitales 90 UASLP-FI “Las marcas e imágenes mostradas son propiedad de sus titulares, y se utilizan con fines educativos sin lucro, de conformidad con las leyes de la materia”. Laboratorio de Diseño de Sistemas Digitales 91