Lab. de Diseño de Circuitos y Sistemas Electrónicos. Ing. Electrónica Práctica 6. Implementación de descripciones VHDL en dispositivos Xilinx 1. Introducción. En esta sesión de laboratorio se pretende realizar un diseño VHDL capaz de ser sintetizado sobre un dispositivos físico de Xilinx. Para ello, basta con acceder al entorno de Xilinx Foundation, crear un proyecto nuevo donde se indique que el tipo de descripción está basado en HDL en lugar de “schematic ”, y comenzar la descripción utilizando el editor HDL del mismo modo que se hacía en el caso de ABEL. Así, será posible sintetizar y simular el diseño de la forma habitual a través del simulador incorporado (sin necesidad de banco de pruebas). El único problema que esto plantea es que además de disponer de un código VHDL correcto, éste debe ser sintetizable y adaptarse a las normas de síntesis para Xilinx, con lo que la obtención de un código VHDL correcto hasta poder realizar la simulación puede ser más laboriosa. 2. Objetivo de la práctica. Diseñar en VHDL e implementar sobre FPGA, un cronómetro digital que muestre décimas de segundo, segundos, y minutos. Esta implementación se realiza sobre el dispositivo XC4010E-3PC84. Las décimas de segundo se muestran en los LED que la placa de pruebas posee (la misma placa ya empleada en la práctica primera de Xilinx), de tal modo que se enciende un LED diferente por cada décima de segundo que pasa, realizando desplazamiento del LED iluminado. Nombre : decimas_led<9>..decimas_led<0>. Los segundos se muestran en los dos display de 7 segmentos que están conectados a la placa (Nombre : seg7seg1<6>..seg7seg1<0> y seg7seg2<6>..seg7seg2<0>). En cuanto a los minutos, éstos se muestran como 14 salidas que en principio no se puede acceder con los recursos de visualización que la placa proporciona, pero que debemos ser capaces de simular (Nombre : seg7min1<6>..seg7min1<0> y seg7min2<6>..seg7min2<0>). El patillaje se indica en el apéndice de la memoria. Se dispone de dos botones tipo pulsador, uno de inicio/paro de cuenta (Nombre : ini_paro), y otro de reset de cuenta (Nombre : clear). Suponemos que tenemos un reloj externo de frecuencia 10Hz (Nombre : clock. Existe una salida de fin de cuenta (Nombre: TC) que indica si el contador de minutos ha llegado al final. El patillaje de las entradas se indica en el apéndice de la memoria. La representación de la salida sería: MINUTOS SEGUNDOS décimas 2.1. Pasos a seguir. El diseño es altamente modular, con lo que se puede hacer uso de un mismo módulo en varias ocasiones. Los pasos a seguir son los siguientes: 1. Especific ar el funcionamiento del diseño. 2. Describir los diversos módulos en VHDL. Recordar que las salidas a display 7 segmentos y a LED son activas a nivel bajo. 3. Unir todos los módulos para conformar el sistema completo. 4. Generar un banco de pruebas y simular el diseño en ModelSim. Puede resultar aconsejable simular por separado cada módulo antes de simular el diseño completo. Profesores: Alfredo Rosado. Manuel Bataller. 1 Lab. de Diseño de Circuitos y Sistemas Electrónicos. Ing. Electrónica 5. Una vez que el diseño es correcto en simulación, crear un proyecto en Xilinx Foundation al que se le dice que es de tipo HDL, y en el que se incluyen todos los ficheros VHDL que intervienen en el diseño (excepto el banco de pruebas). 6. Sintetizar el diseño y comprobar que no hay errores de síntesis, si los hubiera, probablemente sería necesario modificar el código VHDL para que éste sea sintetizable. 7. Implementar en el dispositivo XC4010E-3PC84. 8. Si la implementación se realiza con éxito, descargar el programa en la placa de pruebas (la misma placa que en la primera práctica de Xilinx) y chequear el correcto funcionamiento conectando un generador de señal cuadrada de 10Hz de frecuencia a la entrada de reloj. 3. Documentación a entregar. En las dos semanas siguientes a la realización de la práctica, se entregará un pequeño dossier que incluya el código VHDL del diseño propuesto, los resultados de la simulación, y los resultados de la implementación (lógica necesaria à CLB ocupados, velocidad máxima de funcionamiento, y aquellos datos que se consideren relevantes en el diseño), así como la opinión personal acerca de la práctica realizada y dificultades encontradas en el desarrollo de la misma. 4. Apéndice. Asignación de patillas para las entradas y salidas. Los elementos de entrada/salida se encuentran marcados con colores en la figura de la placa. De todos modos, el número de patilla es posible conocerlo mediante los números situados en las puntas de prueba alrededor de la FPGA. Azul oscuro y rojo: Entradas de reloj, reset e inicio/paro (aproximadamente). Amarillo, verde: Salidas de los display de 7 segmentos y no visibles para minutos y segundos Azul claro: Salidas para las décimas de segundo (sólo hay ocho, por lo que las dos últimas se aplican sobre el punto decimal de los display 7 segmentos). Profesores: Alfredo Rosado. Manuel Bataller. 2 Lab. de Diseño de Circuitos y Sistemas Electrónicos. Ing. Electrónica # # # # Fichero de restricciones para CRONO, XC4010E-PC84 Para realizar la asignación de las entradas/salidas a patillas en concreto basta con copiar este apéndice en un fichero con extensión .UCF e indicar su utilización a través de las opciones de implementación NET INI_PARO LOC=P78 ; # Entrada cercana a Vcc para un interruptor NET CLOCK LOC=P13 ; # Entrada reloj de la placa con oscilador externo ahi NET CLEAR NET TC LOC=P56 ; # Boton RESET (SW4) de la placa (AZUL OSCURO) LOC=P77 ; # el indicador de fin de cuenta de minutos (minuto 59) # LINEA DE LED INFERIOR D9..D16 NET DECIMAS_LED<9> LOC=P61; NET DECIMAS_LED<8> LOC=P62; NET DECIMAS_LED<7> LOC=P65; NET DECIMAS_LED<6> LOC=P66; NET DECIMAS_LED<5> LOC=P57; NET DECIMAS_LED<4> LOC=P58; NET DECIMAS_LED<3> LOC=P59; NET DECIMAS_LED<2> LOC=P60; NET DECIMAS_LED<1> LOC=P37; # LED del punto decimal del display 7 segmentos NET DECIMAS_LED<0> LOC=P41; # LED del punto decimal del display 7 segmentos # DISPLAY U7 (La asignación de letras es la estándar) NET SEG7_SEG1<6> LOC=P39; # LED a NET SEG7_SEG1<5> LOC=P38; NET SEG7_SEG1<4> LOC=P36; NET SEG7_SEG1<3> LOC=P35; NET SEG7_SEG1<2> LOC=P29; NET SEG7_SEG1<1> LOC=P40; NET SEG7_SEG1<0> LOC=P44; # LED g # DISPLAY U8 NET SEG7_SEG2<6> NET SEG7_SEG2<5> NET SEG7_SEG2<4> NET SEG7_SEG2<3> NET SEG7_SEG2<2> NET SEG7_SEG2<1> NET SEG7_SEG2<0> LOC=P49; # LED a LOC=P48; LOC=P47; LOC=P46; LOC=P45; LOC=P50; LOC=P51; # LED g # SALIDAS NO VISIBLES NET SEG7_MIN1<6> LOC=P10; NET SEG7_MIN1<5> LOC=P9; NET SEG7_MIN1<4> LOC=P8; NET SEG7_MIN1<3> LOC=P7; NET SEG7_MIN1<2> LOC=P6; NET SEG7_MIN1<1> LOC=P5; NET SEG7_MIN1<0> LOC=P4; NET NET NET NET NET NET NET SEG7_MIN2<6> SEG7_MIN2<5> SEG7_MIN2<4> SEG7_MIN2<3> SEG7_MIN2<2> SEG7_MIN2<1> SEG7_MIN2<0> LOC=P3; LOC=P84; LOC=P83; LOC=P82; LOC=P81; LOC=P80; LOC=P79; Profesores: Alfredo Rosado. Manuel Bataller. 3