INSTITUTO DE ELECTRÓNICA Y COMPUTACIÓN “SISTEMAS DIGITALES” Tutorial para el diseño y simulación de un circuito digital con VHDL , síntesis e implementación en un FPGA Alumno : ___________________________________________ Grupo : _________________ Prof. M. C. Felipe Santiago Espinosa Octubre de 2004 Sistemas Digitales UTM/2005-1 Tutorial para el diseño y simulación de un circuito digital con VHDL , síntesis e implementación en un FPGA 1. Introducción En este documento se presentan de manera detallada los pasos a seguir desde el planteamiento de un circuito digital hasta su puesta en marcha y verificación en una tarjeta de desarrollo Digilab 2SB-IO4, el ejemplo que se desarrolla es bastante simple por que el objetivo del tutorial es ilustrar el proceso y no resolver un problema complejo. 2. Planteamiento del problema Se desea diseñar e implementar un comparador de 4 bits: Un circuito que como entradas reciba dos números A y B de 4 bits y como salidas indique si A > B, A < B o A = B, esto se muestra en la figura siguiente: 4 Bits 4 Bits A B A>B A=B A<B 3. Diseño con VHDL Para el diseño y simulación se utilizará la herramienta Active-HDL versión 6.2, desarrollada por Aldec, cuyo Icono de acceso directo se muestra a continuación: Este programa organiza los diseños en espacios de trabajo (workspace) si es la primera vez que se ejecuta, deberá crearse un nuevo espacio de trabajo, en caso contrario puede usarse un espacio de trabajo existente. En la figura siguiente se observa como aunque existan algunos espacios de trabajo, siempre es posible iniciar con uno nuevo. 1 Sistemas Digitales UTM/2005-1 Un espacio de trabajo puede contener diversos diseños independientes. Si es la primera vez que trabaja con esta herramienta, es conveniente iniciar con un nuevo espacio de trabajo propio. Al cual deberá asignársele un nombre, en este caso se le puso “tutorial”: Si se abre un espacio de trabajo existente, automáticamente será abierto el último diseño elaborado. Para los espacios de trabajo nuevos, se presentará el asistente para iniciar con nuevos diseños, el cual inicia con la figura siguiente: 2 Sistemas Digitales UTM/2005-1 La primera opción se usa cuando ya se cuenta con módulos que se agregarán al diseño. La segunda es para importar un diseño completo. La última opción es necesaria para nuevos diseños, para este caso es la opción que debe seleccionarse y después pasar al paso siguiente. Posteriormente se deben definir algunas características del diseño de acuerdo con las herramientas que se cuenten para síntesis y al tipo de FPGA sobre el cual se realizará la descarga, de acuerdo con las herramientas con las que se cuenta en la UTM, las opciones a elegir se muestran en la figura siguiente: Finalmente deberá escribirse el nombre del diseño, para este caso fue “comparador”: A continuación se puede disponer del ambiente de trabajo completo de la herramienta que tiene un aspecto como el que se muestra en la figura siguiente: 3 Sistemas Digitales UTM/2005-1 A la izquierda se observa un navegador en el que se puede seleccionar una de las 3 opciones siguientes (con sus cejas inferiores): Archivos (File) – Se muestra una estructura jerárquica, un espacio de trabajo puede contener varios diseños y un diseño a la vez puede contener varios módulos (Archivos con código VHDL). Estructura (Structure) – Tiene sentido una vez que los módulos han sido compilados, muestra la organización del diseño, así como las señales internas, externas y variables de cada uno de sus módulos, esta opción es útil para simulación. Recursos (Recursos) – Muestra la organización en directorios de todos los elementos que se agreguen al diseño activo. En la parte inferior se tiene una consola en la que aparecerán mensajes de acuerdo a las actividades realizadas por el usuario. Es solo con carácter informativo, no es posible introducir información a través de esta consola. A la derecha está el área de trabajo, aquí se pueden mostrar los elementos que integren al diseño. Archivos con código VHDL, ventanas de simulación, diagramas de bloques, etc. Basta dar un doble click dentro del navegador para observar el contenido de un archivo y poder modificarlo. También se muestra al flujo de diseño (design flow) con el que es posible insertar módulos al diseño, preparar su simulación, realizar su síntesis, etc. En la figura siguiente se observa el flujo de diseño, en la parte superior se tienen tres botones para agregar nuevos módulos al diseño, éstos pueden ser: Módulos con código HDL, diagramas a Bloques (para módulos con mayor jerarquía) y diagramas de estado. 4 Sistemas Digitales UTM/2005-1 El comparador será descrito con código VHDL, de manera que se procede con un “click” en el botón HDE. La herramienta permite seleccionar entre dos tipos diferentes de HDLs: Se selecciona VHDL y se avanza con un “click” en OK. Nuevamente un asistente permite iniciar con el nuevo módulo, se deja activa la opción de que el código generado se integre al proyecto y se avanza. 5 Sistemas Digitales UTM/2005-1 A continuación se debe escribir el nombre del archivo a crear y de manera opcional el nombre de la entidad y de la arquitectura, si estos se omiten, todos los campos tomarán el mismo nombre, que se decidió fuera “comp4b”. Luego deben insertarse una a una las señales que formarán parte de la entidad (interfaz), la inserción de una señal comienza con un “click” en el botón “new”, luego se le pone un nombre, si es un vector su tamaño se determina con los índices y debe definirse su modo (entrada o salida). El proceso debe repetirse con cada una de las señales, de acuerdo a las especificaciones del diseño. 6 Sistemas Digitales UTM/2005-1 Al concluir con la inserción de señales se presiona el botón finalizar, con lo que se creará una plantilla del módulo en un archivo que es agregado al diseño (se observa en el navegador) y éste es automáticamente abierto en el área de trabajo. Los comentarios de la plantilla pueden completarse para una adecuada documentación. En este momento ya se tiene descrita la entidad (la interfaz del módulo) y falta por describir su arquitectura para determinar su comportamiento. Nota: Si se quiere modificar la entidad, para agregar una nueva señal, eliminar una existente o modificar algún parámetro, debe hacerse manualmente, respetando la sintaxis de VHDL, no es posible regresar al asistente anterior. El módulo a desarrollar es un comparador de 4 bits, de manera que su comportamiento puede determinarse por el proceso siguiente: process( A, B ) begin mayor <= ‘0’; menor <= ‘0’; igual <= ‘0’; if A > B then mayor <= ‘1’; elsif A < B then menor <= ‘1’; else igual <= ‘1’; end if; end process; Existen otras alternativas, sin embargo la descripción funcional es mas entendible por que refleja directamente la solución del problema. Nota: Después de la palabra process se coloca la lista de sensitividad, son señales que activarán la ejecución del proceso, cuando ocurra un cambio en cualquiera de ellas. 7 Sistemas Digitales UTM/2005-1 Este código debe insertarse en la arquitectura, sustituyendo al comentario: -- enter your statements here -- Una vez insertado el código, se verifica su sintaxis realizando su compilación. Para ello se selecciona al archivo y se presiona al botón compilar . Otra alternativa consiste en obtener un menú contextual dando un click derecho en el archivo y seleccionar la opción de compilación (compile). Si no hay errores de sintaxis, el archivo tendrá otro marcador indicando su estado y la consola reflejará el éxito de la compilación. En caso de que hubiera errores, el archivo en el navegador quedará marcado de manera diferente y los errores se mostrarán en la consola. Los errores deben resolverse considerando la sintaxis del lenguaje. 4. Simulación Una vez realizada la compilación de un módulo es posible simularlo. La simulación se inicializa seleccionando la opción Initialize Simulation en el menú Simulation En este caso se trata de un solo módulo y no existen jerarquías, cuando se trata de un diseño con mas módulos, a través de un cuadro de diálogo debe determinarse cual es el de mayor jerarquía. 8 Sistemas Digitales UTM/2005-1 Al iniciar la simulación, el navegador indica cual es el módulo de mayor jerarquía y conmuta automáticamente las cejas inferiores para mostrar la estructura de los módulos. Si se expande alguno de los módulos, podrán verse las señales que contiene: Para simular se requiere agregar una nueva forma de onda (new Waveform) dando un click al botón , aparecerá una ventana de señales vacía, similar a la siguiente: Las señales se agregan activando el menú Waveform y seleccionando la opción Add Signals, con lo que se obtiene el cuadro de dialogo: 9 Sistemas Digitales UTM/2005-1 Una alternativa más simple consiste en seleccionar las señales del navegador y arrastrarlas a la ventana de señales, en ambos casos el resultado será el siguiente: Además del nombre de las señales, se tienen una columna con su valor y otra indicando el tipo de estímulo. A la derecha hay una zona donde se mostrará el comportamiento temporal de cada señal. No hay que olvidar que se está simulando hardware y para probar un elemento de hardware es necesario ingresar algunas señales a las entradas y observar las salidas, con ello se evalúa si la funcionalidad del módulo es o no correcta. Las señales de entrada son proporcionadas a través de estímulos, existen estímulos de diferentes tipos, adecuados para diferentes tipos de señales. Los estímulos se obtienen al dar un “click” derecho a una señal de entrada, con ello aparece un menú contextual en el cual debe seleccionarse la opción estímulos ( Stimulators ). Con esto se obtiene un cuadro de dialogo en el cual de izquierda a derecha muestra: La señal bajo consideración, la lista de estímulos y las características propias de cada tipo de estímulos (estás se obtienen al seleccionar un estímulo particular y en algunos casos es necesario introducir algunos parámetros). Para el comparador de 4 bits, puesto que A y B son vectores, para ambas señales se elegirán estímulos tipo contador, sólo que para observar la activación de las diferentes salidas A será ascendente y B descendente. 10 Sistemas Digitales UTM/2005-1 Una vez que se selecciona el tipo de estímulo y se determinan sus parámetros, debe presionarse el botón Aplicar (Apply) de lo contrario los estímulos no serán considerados. No es necesario cerrar la ventana de estímulos y abrirla para una nueva señal, es suficiente dar un “click” a la señal y ésta se incorporará a la ventana de estímulos. Una vez definidos todos los estímulos debe cerrarse la ventana de estímulos (Close). Con esto se han establecido todas las condiciones de simulación, la cual se realiza con los botones , el primero de ellos (Run until) permite simular hasta que se alcance un tiempo dado, éste se introduce en un cuadro de diálogo que aparece después de que el botón se presiona. El segundo botón (Run for) realiza la simulación por el tiempo indicado en el cuadro de edición contiguo, este tiempo puede modificarse para proporcionar diferentes intervalos de simulación. 11 Sistemas Digitales UTM/2005-1 El último botón (Restart) ignora los eventos transcurridos para iniciar nuevamente con la simulación. Las señales se generan conforme se avanza en la simulación, las entradas están dadas por los estimuladores y las salidas son una función de las entradas. Para una mejor visualización de las señales, pueden usarse los botones: cuya respectiva función es: Zoom In, Zoom Out, Zoom to Fit y Zoom Range. Para propósitos de documentación, es posible agregar comentarios con explicaciones, esto se consigue al dar un “click” derecho y elegir la opción Insertar Comentario (Insert Comment) del menú contextual. Una vez realizada la simulación, puede garantizarse que el módulo funciona y se procede a la Síntesis e Implementación. Pero antes, habrá que detener la simulación seleccionando la opción End Simulation en el menú Simulation 12 Sistemas Digitales UTM/2005-1 5. Síntesis La versión 6.2 de Active-HDL proporciona un ambiente desde el cual es posible realizar la síntesis e implementación de un diseño (esto se observa en el flujo de diseño), para ello invoca a las herramientas de Xilinx. Sin embargo, lo mas adecuado es manipular directamente las herramientas de Xilinx desde un Ambiente Integrado de Software ( Integrated Software Environment – ISE ) el cual es una suite de herramientas manipuladas desde el Navegador de Proyectos (Project Navigator). Por tanto, en este momento es posible cerrar al Active-HDL respaldando la ventana de señales solo para documentación y abrir el Project Navigator, cuyo icono de acceso directo es: Al ejecutar este programa se mostrará el Tip del Día y luego se abrirá el último proyecto en el que se haya trabajado. Es necesario iniciar con un nuevo proyecto seleccionando la opción New Project en el menú File, con esto se obtendrá el cuadro de diálogo similar al siguiente: Primero debe seleccionarse la ubicación del proyecto en disco y luego asignársele un nombre. Esto para que el proyecto quede ubicado en una carpeta con el mismo nombre. Para el tipo de módulo superior se mantiene HDL por que se trabajará con el archivo previamente desarrollado para el comparador. Nota: El nombre del proyecto debe ser diferente al de los módulos HDL para evitar conflictos de nombres al momento de hacer la síntesis e implementación. 13 Sistemas Digitales UTM/2005-1 Una vez que se introduzcan estos datos se procede con el paso siguiente. En el cual se determinarán algunas propiedades de acuerdo al FPGA en el que se vaya a realizar la descarga. Los valores seleccionados corresponden al FPGA que está integrado en las tarjetas de desarrollo existentes en la UTM. El paso siguiente es para empezar con nuevos archivos con código fuente. 14 Sistemas Digitales UTM/2005-1 Se avanza al paso siguiente por que se trabajará con un archivo previamente elaborado. Presionando el botón Add Source se explora para encontrar el archivo que contiene al código VHDL con la descripción del Comparador (Comp4b.vhd), el cual debe estar en la ruta C:\My_Designs\tutorial\comparados\src, se selecciona y se indica que es un módulo VHDL. Si el proyecto tuviera mas módulos, todos se insertarían de manera similar. Antes de avanzar al paso siguiente es necesario asegurarse que la opción Copy to Project está seleccionada. 15 Sistemas Digitales UTM/2005-1 El paso siguiente muestra un resumen con la información del proyecto, si todo está bien se finaliza con la creación del proyecto (Botón Finalizar). En el ambiente del Project Navigator se distinguen cuatro áreas, en la parte superior izquierda se muestran los diferentes archivos fuente que integran al proyecto, a manera de un árbol. Si el proyecto estuviera formado por varios módulos, en este árbol se ubicarían de acuerdo a sus niveles jerárquicos. Por debajo de esta zona está una lista de procesos aplicable al archivo seleccionado, de acuerdo con su tipo, a los archivos se les pueden aplicar diferentes procesos. 16 Sistemas Digitales UTM/2005-1 A la derecha está un área en donde serán abiertos los diferentes archivos fuente o reportes que se generen. Por ejemplo, para abrir el archivo Comp4b.vhd basta con darle un doble click. En la parte inferior se encuentra la consola de mensajes indicando las diferentes actividades que se están realizando. Para la Síntesis del proyecto basta con seleccionar el archivo Comp4b.vhd y en la ventana de procesos buscar el proceso Synthesize – XST y darle un doble click para ejecutarlo. Una vez finalizado el proceso, es posible observar los componentes a los cuales es sintetizado el módulo en una lógica de transferencia de registro (RTL), para ello se da un doble click al proceso View RTL Shematic. Con esto se ejecuta una aplicación denominada Xilinx ECS ( Engineering Capture System ), en la cual se puede navegar con los botones para observar el circuito sintetizado a diferentes niveles de detalle. Al nivel mas alto: Observando internamente (un nivel mas bajo) : 17 Sistemas Digitales UTM/2005-1 Estos diagramas permiten evaluar la funcionalidad del circuito y son útiles para documentación. En este momento el programa Xilinx ECF puede cerrarse, su uso permitió garantizar que la síntesis se hizo de manera satisfactoria. 6. Acondicionamiento para la implementación. Como pudo observarse en los diagramas anteriores, el código VHDL ha sido sintetizado satisfactoriamente en hardware, ahora habrá que tomar algunas consideraciones para poder llevar a cabo su implementación. El circuito será descargado en un FPGA XC2S200 de Xilinx, el cual está en una tarjeta Digilab 2SB & I/O 4 que se muestra a continuación: Digilent es la empresa que manufactura estas tarjetas de desarrollo y a todos sus tarjetas las denomina como Digilab (www.digilentinc.com), 2SB es la serie de la tarjeta con un FPGA Spartan II e I/O 4 es la serie de la tarjeta con elementos de entrada/salida necesarios para evaluar al FPGA. La tarjeta 2SB tiene conectores cuyas terminales están conectadas al FPGA y en algunos de esos conectores se ha conectado a la tarjeta I/O 4, la cual cuenta con interruptores y botones para entrada de datos y LEDs y desplegadores de 7 segmentos para salidas. Para la implementación del comparador, es de esperarse que las entradas A y B se obtengan de los interruptores y las salidas (Mayor, Menor e Igual) se muestren en los LEDs. Se requiere conocer el número de terminal del FPGA a la cual se conecta cada elemento de la tarjeta. En la tabla siguiente se muestra a que terminal se conecta cada uno de los elementos de la tarjeta I/O 4 en uno de los puertos, el puerto correspondiente en la tarjeta D2SB, el número de terminal en esa tarjeta y la correspondiente terminal en el FPGA. Está información fue obtenida de los manuales de ambas tarjetas (http://www.digilentinc.com/Materials/BoardProducts.html). 18 Sistemas Digitales UTM/2005-1 DIO4 CONECTOR CONECTOR 2SB FPGA SALIDAS EN INDICADORES TIPO LED 35 P1 A1 5 111 LED 1 33 P1 A1 7 109 LED 2 31 P1 A1 9 102 LED 3 29 P1 A1 11 100 LED 4 27 P1 A1 13 98 LED 5 25 P1 A1 15 96 LED 6 23 P1 A1 17 94 LED 7 21 P1 A1 19 89 LED 8 22 P1 A1 20 181 HAB GLOBAL HABILITADORES DE LOS DESPLEGADORES DE 7 SEGMENTOS 15 P1 A1 25 176 AN1 16 P1 A1 26 175 AN2 13 P1 A1 27 174 AN3 14 P1 A1 28 173 AN4 SEGMENTOS COMUNES A TODOS LOS DESPLEGADORES DE 7 SEGMENTOS 35 P2 A2 5 161 CA 33 P2 A2 7 152 CB 31 P2 A2 9 150 CC 29 P2 A2 11 148 CD 27 P2 A2 13 146 CE 25 P2 A2 15 141 CF 23 P2 A2 17 139 CG 21 P2 A2 19 136 DP BOTONES 22 P2 A2 20 135 BOTON 1 19 P2 A2 21 134 BOTON 2 20 P1 A1 22 180 BOTON 3 17 P1 A1 23 179 BOTON 4 18 P1 A1 24 178 BOTON 5 INTERRUPTORES 38 P2 A2 4 162 SWITCH 1 36 P2 A2 6 160 SWITCH 2 34 P2 A2 8 151 SWITCH 3 32 P2 A2 10 149 SWITCH 4 30 P2 A2 12 147 SWITCH 5 28 P2 A2 14 145 SWITCH 6 26 P2 A2 16 140 SWITCH 7 24 P2 A2 18 138 SWITCH 8 PUERTO PS2 17 P2 A2 23 132 PS2D 20 P2 A2 22 133 PS2C PUERTO VGA 16 P2 A2 26 126 RED 15 P2 A2 25 127 GREEN 18 P2 A2 24 129 BLUE 14 P2 A2 28 123 HOR SYNC 13 P2 A2 27 125 VER SYNC EN LA TARJETA (2SB) 187 154 182 PUSH BUTTON LED OSC. 50 MHZ 19 Sistemas Digitales UTM/2005-1 En la tabla anterior se observa que los LEDs tienen un habilitador global, en este momento en el diseño no hay alguna salida para esta habilitación, se agregará modificando directamente el código VHDL en el Project Navigator (al darle un doble click al archivo com4b.vhd en la sección Sources in Project, el archivo es abierto para su modificación). En la entidad se agregará un nuevo puerto, con la siguiente declaración: HabGlob : out STD_LOGIC; Y en la arquitectura se asignará un nivel alto a esta señal para una habilitación permanente: HabGlob <= ‘1’; Esto se hace fuera del proceso. El código completo quedará como: Con estos cambios el estado de la síntesis es desconocido: y es necesario ejecutar nuevamente este proceso (aplicándole un doble click) para actualizar al hardware. Cuando el proceso finaliza su estado se actualiza: y es posible ver los cambios del hardware ejecutando el proceso View RTL Shematic. 20 Sistemas Digitales UTM/2005-1 En la figura anterior se muestra que se ha agregado la nueva señal y en la figura siguiente, al explorar en un nivel mas bajo, se observa que siempre tendrá un valor constante. Puede cerrarse el programa Xilinx ECF. Para la asignación de terminales es necesario agregar un archivo de restricciones (archivo con extensión UCF), para ello, en cualquier parte del área de Sources in Project dar un click derecho y en el menú contextual seleccionar la opción New Source Dentro de los diferentes tipos de archivo que pueden insertarse seleccionar Implementation Constraints File y asignarle un nombre. 21 Sistemas Digitales UTM/2005-1 Al avanzar se debe seleccionar el módulo con el cual se asignarán las restricciones, en este caso sólo se tiene un módulo en el diseño, si hubiera mas habría que seleccionar al de mayor jerarquía. Luego solo se muestra información sobre este nuevo archivo y se finaliza. Con esto aparece un nuevo archivo en el área Sources in Project. 22 Sistemas Digitales UTM/2005-1 Para modificarlo habrá que seleccionarlo dentro del área Sources in Project, con ello en el área Processes for Source se mostrarán los procesos aplicables al archivo. Al dar un doble click al proceso Edit Constraints (Text) el archivo es abierto en el área de trabajo y es posible escribir la asignación de terminales. La asignación de terminales obedece la sintaxis siguiente: NET nombre de la señal LOC = PXXX; donde NET y LOC son palabras reservadas. XXX es el número de terminal en el FPGA. Cuando se trata de un vector cada elemento se indica entre los símbolo < >. Así, el archivo terminales.ucf debe modificarse para quedar como: El símbolo # permite insertar comentarios en los archivos de restricciones. Al salvar el archivo se tiene al diseño acondicionado para la tarjeta de desarrollo a usar, por lo que debe procederse con la implementación. Nota: El archivo con restricciones (UCF) puede realizarse con cualquier editor de textos y de esta forma, después del click derecho habría que seleccionar la opción “Add Source”, en lugar de “New Source”, buscar al archivo y asociarlo con el que le corresponda del código VHDL. 23 Sistemas Digitales UTM/2005-1 7. Implementación. La implementación es un proceso que involucra varios pasos: Trasladar (Traslate), mapeo (Map) y colocación y ruteo (Place & Route). Sin embargo esto lo realiza la herramienta de manera automática. Para ello es necesario seleccionar el archivo comp4b en el área Sources in Project, con ello se abrirán los procesos aplicables al archivo en el área Processes for Source, buscar al proceso Implement Design y darle un doble click para ejecutarlo. En la figura anterior se observa que la implementación fue realizada con “Warnings”, esto normalmente ocurrirá en diseños combinacionales por que no se está utilizando una señal de reloj explícita. En el reporte del Mapeo (Report Map) es posible conocer los recursos que está usando el diseño dentro del FPGA, entre los cuales destacan: Number of 4 input LUTs: Number of occupied Slices: Number of bonded IOBs: 9 out of 4,704 1% 5 out of 2,352 1% 12 out of 142 8% Y con el reporte Text-Based Post-Place & Route Static Timing Report el cual se puede ver al expadir al proceso Generate Post-Place & Route Static Timing, es posible saber cual es el retardo mas grande que existe para las salidas, a partir de las entradas. En este caso el retardo mayor se da de la entrada A<0> a la salida menor y es de 13.651 ns. 24 Sistemas Digitales UTM/2005-1 Es posible explorar el interior del FPGA para observar los recursos que está ocupando un diseño, esto se consigue al dar un doble click al proceso View/Edit Routed Design (FPGA Editor), con esto se ejecutará al programa Xilinx FPGA Editor, el cual mostrará un aspecto como el de la figura siguiente: La parte en Azul es la que esta ocupando el diseño dentro del dispositivo. Se pueden hacer acercamientos o bien dar un click a los diferentes bloques para observar su contenido. Una vez que se ha observado que la implementación se realizó satisfactoriamente, es posible cerrar este programa (Xilinx FPGA Editor) para continuar. 8. Generación del archivo de configuración y prueba del diseño en el FPGA Dentro de los procesos asociados al diseño (los cuales se obtienen al seleccionarlo), se encuentra el proceso Generate Programming File ubicado después del proceso de implementación. 25 Sistemas Digitales UTM/2005-1 Antes de ejecutar este proceso es necesario definir uno de sus parámetros, para ello habrá que darle un click derecho y seleccionar la opción propiedades en el menú contextual, Con ello se abrirá una ventana similar a: En las opciones que se presentan con las cejas superiores seleccionar Startup Options y cambiar el valor de la propiedad FPGA Start-Up Clock para que tenga: JTAG Clock. Después del cambio debe presionarse el botón Aceptar. Este cambio es necesario para la programación del FPGA, la cual se hará mediante un puerto conocido como JTAG y por lo tanto se requiere que de ahí llegue la señal de reloj. Una vez hecho esto es posible ejecutar el proceso Generate Programming File aplicándole un doble click. 26 Sistemas Digitales UTM/2005-1 Si el proceso se realiza con éxito, esto se indicará en el estado del mismo: Para poder programar al FPGA es necesario : a) Alimentar la tarjeta de desarrollo – Para ello debe conectarse la fuente de alimentación de 6 V que es proporcionada con la misma tarjeta. b) Conectar el cable JTAG – El cual es similar al de la figura siguiente: Un extremo se conecta en el puerto paralelo de la PC y el otro en el puerto JTAG de la tarjeta, tanto en el cable como en la tarjeta están indicados los nombres de las señales, cualquier conexión errónea dañará la tarjeta. La programación se realizará con el programa iMPACT el cual se ejecuta con un doble click en el proceso Configure Device (iMPACT): El programa inicia solicitando algunos parámetros, en el primer paso se deja la opción predefinida, por que es el mecanismo por medio del cual se programará al dispositivo. 27 Sistemas Digitales UTM/2005-1 En el paso siguiente se selecciona la opción Enter a Boundary-Scan Chain, por que es mas rápido indicar cual es la cadena de configuración, en relación a que se identifique automáticamente. En el cuadro de diálogo que aparece después de finalizar, se selecciona al archivo de configuración comp4b.bit y se procede presionando el botón Abrir. Hecho esto el programa iMPACT será abierto mostrando un aspecto como el siguiente: 28 Sistemas Digitales UTM/2005-1 Debe darse un click derecho al dispositivo para obtener el menú contextual en el que se seleccionará la opción Programar (Program...). Con esto aparecerá un cuadro de diálogo con las opciones de programación similar al de la figura siguiente, en éste se dejarán las opciones predeterminadas y se presionará OK. Con ello se iniciará la descarga en el FPGA apareciendo una barra indicando el avance en la ejecución de la misma, con este proceso, cualquier posible configuración previa del FPGA será remplazada por la nueva configuración. 29 Sistemas Digitales UTM/2005-1 Una vez concluida la descarga, el programa iMPACT indicará que la programación se realizó con éxito, a través de un mensaje como el de la figura siguiente: Si el mensaje Programming Succeeded no aparece las causas pueden ser diversas: La tarjeta puede estar desconectada Se seleccionó un FPGA que no corresponde con el de la tarjeta El empaque seleccionado no es el empaque del FPGA El puerto paralelo de la PC no funciona correctamente El FPGA no funciona correctamente Después de la programación, el programa iMPACT puede cerrarse así como también el Project Navegator. El cable JTAG puede retirarse. El diseño puede evaluarse modificando las entradas desde los interruptores para observar las salidas en los LEDs. Cabe aclarar que los recursos programables en el FPGA están basados en tecnología RAM, por lo que si se retira la alimentación, el programa se perderá. La tarjeta cuenta con una base para una memoria tipo FLASH, desde la cual es posible que el FPGA obtenga su programación en el momento en que es suministrada la energía, desafortunadamente en este momento se carece de dichas memorias. 9. Conclusión Se ha revisado de manera detallada el proceso a seguir para implementar sistemas digitales en FPGAs con ayuda de VHDL, para otro tipo de tarjetas u otro tipo de FPGAs solo debe hacerse la selección adecuada. Para otros fabricantes, ajenos a Xilinx, deberán usarse las herramientas adecuadas para síntesis, implementación y descarga. El diseño y simulación en VHDL son independientes del dispositivo a usar para la implementación. 30 Sistemas Digitales UTM/2005-1 10. Ejercicio de repaso Para repasar el tutorial, diseñar e implementar un circuito convertidor de binario a BCD, como se muestra en la figura siguiente: Salida en BCD Decenas 6 Bits 4 Bits Entrada Binaria Unidades 4 Bits Con 6 bits se alcanzan hasta 64 combinaciones, éstas deben separarse en unidades y decenas. Por simplicidad usar solo comparaciones y operaciones básicas como sumas y restas. Para ello será necesario incluir la biblioteca unsigned, de la siguiente manera: use IEEE.std_logic_unsigned.all; Las entradas deberán tomarse de los interruptores y las salidas enviarse a los LEDs. Es necesario comenzar con un nuevo diseño, aunque puede manejarse dentro del mismo espacio de trabajo. Relizar un reporte con los siguientes puntos: a) b) c) d) e) f) Objetivo del diseño. Código VHDL. Diagramas con simulaciones (agregando comentarios descriptivos). Esquemáticos generados con el programa Xilinx ECF (nivel superior y siguiente). Contenido del archivo de restricciones (UCF). Reporte de recursos usados, así como frecuencia máxima de operación del dispositivo. g) Diagrama mostrando los recursos usados en el FPGA. h) Descripción de la pruebas en la tarjeta. i) Conclusiones. Nota: Puede considerarse la salida de habilitación de los LEDs desde el momento en que se realice el código VHDL, con ello se evitarán modificaciones futuras. 31