TUTORIAL INTRODUCTORIO ISE, ISim e IMPACT

Transcripción

TUTORIAL INTRODUCTORIO ISE, ISim e IMPACT
TUTORIAL INTRODUCTORIO
ISE, ISim e IMPACT
Cristian Sisterna
Sección
1 – Introducción al ISE
Introducción
En este tutorial se presenta la herramienta Integrated Software Environment (ISE) de la
empresa Xilinx. El ISE se usa para modelar, simular y sintetizar diseños a ser implementados
en FPGAs de Xilinx. Aún cuando este tutorial es presentado para utilizar el software ISE, el
flujo a seguir es muy similar para otro software como por ejemplo el Quartus II de Altera.
El ISE en sí, integra diferentes herramientas que permiten completar todos los pasos
necesarios para implementar un sistema digital en un FPGA. Figura 1 muestra un diagrama
de flujo de los distintos pasos a seguir dentro de un sistema integrado como el ISE. Las líneas
de puntos son caminos opcionales en caso que se necesite algún ajuste para cumplir ciertas
especificaciones.
Figura 1 - Flujo de diseño para implementación en FPGA de un sistema digital descrito en VHDL
C7 Technology
NT 13 - Tutorial ISE
Página | 2
Preparación para el Tutorial
La idea de este tutorial es familiarizarse con los distintos pasos necesarios para implementar
un sistema digital en un FPGA. Para ello se propone usar un proyecto ya elaborado y seguir
los pasos descritos en esta guía.
Los pasos necesarios a realizar antes de comenzar a trabajar son los siguientes:



Descargue e instale el software ISE WebPack tal como se detalla en al Apéndice A al
final de este tutorial.
Instale la licencia respectiva para poder hacer uso del ISE WebPack (instalación
explicada también en Apéndice A).
En su disco duro cree una carpeta para ser usada como repositorio de este tutorial,
por ejemplo utilice un directorio tipo C:\ISE_Tutorial\ como directorio raíz. En este
directorio descargue los archivos de este tutorial desde el siguiente link:
xxxxxxxxxxxxxxxxxxxxxx.. una vez descargado, descomprima el mismo.
Sistema a Implementar
El sistema a implementar en este tutorial es un simple contador para arriba/abajo con
visualización de la cuenta en un display tipo 7 segmentos. La frecuencia de entrada al
sistema proviene del cristal disponible en la placa y es dividida por un divisor de frecuencia,
cuya baja frecuencia de salida controla el contador. La salida del contador excita un
decodificador BCD-7segmentos. La siguiente figura muestra un esquema del sistema a
implementar.
Figura 2 – Esquema del sistema a implementar en el FPGA de la Nexys 2
C7 Technology
NT 13 - Tutorial ISE
Página | 3
Ejecución del ISE
Para ejecutar el ISE haga Inicio-> Todos los Programas -> Xilinx Design Tools -> ISE Design
Suite 14.3 -> ISE Design Tools -> Project Navigator.
Luego debe aparecer el logo de Xilinx junto con una ventana pequeña indicando que el
programa se está cargando, tal como se aprecia en Figura 3.
Figura 3 - Indicador de que el ISE se está cargando
La ventana principal del ISE se muestra en la Figura 4. A continuación se describen sus
principales paneles.
C7 Technology
NT 13 - Tutorial ISE
Página | 4
1
2
3
2
4
Figura 4 - Ventana principal del ISE




Panel 1: Hierarchy. Detalla la jerarquía del diseño, es decir los distintos módulos
VHDL que componen el sistema, ya sean módulos de descripción de hardware como
así también módulos de estímulos (test bench). Detalla también el nombre del
proyecto y el dispositivo FPGA a ser usado en la implementación del sistema
descripto en la jerarquía.
Panel 2: Procesos: detalla los procesos que se pueden ejecutar dependiendo que
parte de la jerarquía (panel 1) seleccionada.
Panel 3: Espacio de Trabajo, este panel es multiuso, en el cual se puede mostrar un
módulo VHDL, un reporte de uso del FPGA, o tal como se muestra en Figura 4, un
resumen de los recursos del FPGA utilizados para el diseño implementado.
Dependiendo de lo que se seleccione es lo que se muestra.
Panel 4: Consola, a medida que se van ejecutando los diferentes procesos (Panel 2)
se muestra en este panel los mensajes respectivos. Una vez finalizado el proceso en
ejecución, este panel tiene diferentes tabs en los que se puede seleccionar para ver
solo los Warnings, solo los Errores o ver los resultados de las búsquedas en archivos.
C7 Technology
NT 13 - Tutorial ISE
Página | 5
Creación de un Proyecto en ISE
A continuación se detallan los pasos a seguir para crear un proyecto en el entorno ISE:
a. En la barra del menú seleccione File->New Project. La ventana de opciones de un
nuevo proyecto (New Project Wizard) aparecerá.
b. Introduzca como nombre del proyecto ise_tutorial. Navegue para encontrar el
directorio destino del proyecto o cree un directorio para este tutorial.
Convenientemente use un directorio para el proyecto en sí, en este caso por ejemplo
syn_ise (síntesis de ISE), y otro directorio para los archivos .vhd.
c. Desde la opción Top-Level Source Type seleccione la opción HDL (esto significa que
los módulos del sistema pueden ser descritos en VHDL o en Verilog).
Finalizados los pasos a-c, se debería tener una ventana similar a la de la Figura 5.
Figura 5 - Configuración proyecto nuevo
d. Presione Next. La nueva ventana, llamada Project Settings, muestra las opciones
referidas a la selección de la familia del FPGA, y dentro de la familia seleccionada,
cual FPGA se va usar para implementar el proyecto. Las otras opciones de esta
ventana están referidas a las herramientas de síntesis y simulación a usar en el
proyecto, como así también la versión de VHDL. Se detalla a continuación la
configuración respectiva.
Este tutorial está orientado a usar la placa Nexys2, por lo que en caso de usar esta
placa se debe seleccionar como Familiy la familia de FPGA Spartan 3E, y como Device
el Spartan 3E-500 (que es el FPGA soldado en la placa Nexys 2), cuyo nombre
comercial es el XC3S500E, por lo que seleccione ese FPGA del menú de Devices. En la
C7 Technology
NT 13 - Tutorial ISE
Página | 6
parte de Package (encapsulado), seleccione el FG320, que es el encapsulado del
FPGA soldado en la Nexys 2. La selección de Speed (velocidad) es importante solo
para proyectos que trabajan a una muy alta frecuencia y es necesario tener un
reporte de timing muy preciso, por ahora deje el valor que tiene por defecto. Los
demás valores de configuración de esta ventana están referidos a las herramientas a
usar para síntesis y para simulación, como así también si se va usar VHDL o Verilog.
Deje los valores configurados por defecto, asegurándose que VHDL este seleccionado
como Preferred Language, y que VHDL Source Analysis Standard esté en VHDL-200x.
La siguiente figura detalla las opciones configuradas en este proceso.
Figura 6 - Detalle del FPGA a ser usado para implementar el diseño en la Nexys 2 y configuración de
herramientas de simulación y síntesis
Para los que vayan a realizar este tutorial usando otra placa que no sea la Nexys 2,
asegurarse de seleccionar correctamente primero la Family del FPGA (Spartan 3,
Spartan 6, Virtex, etc.); luego seleccionar el Device, y el Package, esta información
debe ser precisa para no tener problemas en las asignaciones de los pines de E/S del
sistema a implementar.
Normalmente todos los kits de desarrollo vienen con un manual de usuario
detallando el FPGA soldado en la placa, y el encapsulado usado. Recordar que para
un mismo Device hay varios diferentes Packages.
e. Al hacer click en Next, una ventana que detalla la configuración del proyecto es
mostrada, tal como se puede ver en Figura 7.
C7 Technology
NT 13 - Tutorial ISE
Página | 7
Figura 7 - Resumen de la configuración del proyecto
f. Al hacer click en Finish, la ventana principal del ISE del nuevo proyecto debe
aparecer, similar a la mostrada en la siguiente figura.
Figura 8 - Proyecto recién creado, detallado en el panel Hierarchy
C7 Technology
NT 13 - Tutorial ISE
Página | 8
Una vez creado el proyecto hay dos opciones en este panel con respecto al agregado
o la escritura de los códigos VHDL:
1. Una opción Add Source, que es agregar un archivo .vhd que ya ha sido
escrito anteriormente a la creación de este proyecto (por ejemplo un
código .vhd escrito para otro proyecto, o con otro editor de texto).
2. La otra opción es New Source, es crear un nuevo archivo VHDL. Para
acceder a estas dos opciones, se presiona el botón derecho del mouse,
teniendo el cursor del mouse en el panel de Hierarchy, y se elige la opción
que desee, tal como se puede apreciar en Figura 9. Ambas opciones se
detallan a continuación.
Figura 9 - Selección de archivos .vhd a ser agregados al proyecto
Para el caso de querer agregar, Add Source, un código VHDL ya escrito se deben
realizar los siguientes pasos:
1. Desde la ventana de ‘New Project window”, haga click en Next, y luego en Add
Source. Esto abrirá la ventana de opciones.
2. Usando el navegador, seleccione el directorio y luego el archivo a ser
agregado. Si Ud. ha descargado el .zip de este tutorial, los archivos .vhd están
en la carpeta rtl_src, tal como se detalla en la siguiente figura. Seleccione
todos los archivos y presione Open.
C7 Technology
NT 13 - Tutorial ISE
Página | 9
Figura 10 – localización de los archivos .vhd de este tutorial
3. Los archivos a agregar al proyecto se detallan en una nueva ventana, similar a
la mostrada en la siguiente figura.
Figura 11 - Archivos .vhd a agregar al proyecto
4. Para la ejecución de este tutorial es necesario agregar otro archivo .vhd que
reside en el subdirectorio pckgs, tal como se ve en Figura 12. Este archivo .vhd
es un paquete (package) que es usado en este proyecto.
Figura 12 - Localización del archivo tutorial_pckg.vhd
5. Una vez concluido el proceso de agregar los archivos, click Next para ver la
información relativa al proyecto recién creado. Si ha realizado los
C7 Technology
NT 13 - Tutorial ISE
Página | 10
procedimientos antes descritos correctamente la ventana de jerarquía de su
proyecto debería ser similar a la mostrada en Figura 13.
Figura 13 - Jerarquía completa del proyecto ISE_Tutorial
Nota: no siempre el package es mostrado en la ventana de Hierarchy.
Para el caso de querer crear un nuevo archivo .vhd, ejecute los siguientes pasos:
1. En el dialogo ‘Create a New Source’, click ‘New Source’, y especifique el tipo,
VHDL, el nombre y la locación del archivo. Ver Figura 14.
Figura 14 - Especificaciones del archivo .vhd a ser creado
2. La ventana de dialogo de nuevo archivo aparecerá. Introduzca los nombres de
los puertos, y la respectiva dirección e indique si alguno de los puertos es un
bus. Tal como detalla Figura 15.
C7 Technology
NT 13 - Tutorial ISE
Página | 11
Figura 15 - Detalle puertos E/S del módulo .vhd a ser creado
3. Click Next, un resumen de los puertos de entrada y salida se detallan,
compruebe que los datos sean correctos. Luego presione Finish.
4. Esta última acción incorpora el .vhd recién creado al proyecto y lo abre en la
ventana del editor de texto. Este .vhd es solo las entradas y salidas, y unas
líneas de la arquitectura, el código en si se debe escribir a partir de estas
bases.
Flujo de Diseño del ISE
Una vez creado el proyecto, en los distintos paneles del ISE se muestra la siguiente
información (tal como se detalló en la parte Ejecución del ISE de este tutorial):
a) Panel Jerarquía: Los distintos módulos componentes del proyecto
b) Panel Proceso: Los procesos que pueden ejecutarse
c) Panel Espacio de Trabajo: El estado del proyecto
d) Panel Consola: El resumen del diseño implementado en la FPGA.
Una marca verde de chequeo exitoso (check mark) al costado de cada módulo .vhd indica
que el archivo ha sido incorporado correctamente al proyecto. Por otro lado, un signo de
pregunta (?) indica que el archivo aún no es parte del proyecto, y que se necesita se
incorpore al mismo (Project -> Add Source).
La siguiente figura, muestra, en el panel Hierarchy, el proyecto recién creado, y los distintos
módulos componentes del proyecto.
C7 Technology
NT 13 - Tutorial ISE
Página | 12
Figura 16 - Proyecto creado para este tutorial luego de agregar los .vhd respectivos
Procesos Básicos a Ejecutar para Implementar en FPGA
 Sintetizar (Synthesize - XST)
El proceso de sintetizar el diseño, primero chequea la sintaxis de todos los módulos
componentes del proyecto conforme al estándar VHDL. Luego, realiza la síntesis de los
distintos módulos del sistema, es decir convierte el código VHDL en lógica, LUT, FFs, bloques
de memoria, etc.,. Presione dos veces la opción de Synthesize – XST para comenzar el
proceso de síntesis.
Si el proceso termina exitosamente una marca de chequeo verde aparece al costado del
proceso de síntesis, de lo contrario una ‘X’ roja es mostrada al costado del módulo con error.
Información detallada sobre el proceso de síntesis es mostrada en la consola del ISE (panel
inferior de la ventana principal de Project Navigator).
Nota: recuerde tener seleccionado el módulo de mayor nivel jerárquico del proyecto, antes de selección Synthesize – XST (en
realidad antes de ejecutar cualquier proceso, salvo el de simulación).
C7 Technology
NT 13 - Tutorial ISE
Página | 13
Figura 17 – Selección del proceso de síntesis
Si creó el proyecto agregando los módulos .vhd incluidos en el ISE_Tutorial.zip, luego de
presionar dos veces Synthesize – XST, se generarán varios mensajes de error tal como se
puede ver en la Figura 18. Estos mensajes son generados por una omisión hecha a propósito
a fin de que se familiaricen con el proceso de corrección de errores.
Figura 18 - Mensajes de error
Al leer los mensajes de error, se puede deducir que el problema está en el módulo
bcd_7seg_v2.vhd. Puede hacer doble click en cualquiera de los mensajes de error para abrir
en el editor de texto del ISE el módulo bcd_7seg_v2.vhd.
Una vez abierto el .vhd, agregar la siguiente línea en la parte Library Declarations (ver Figura
19, línea 33):
use work.tutorial_pckg.all;
C7 Technology
NT 13 - Tutorial ISE
Página | 14
Figura 19 - Modificación a realizar en el archivo bcd_7seg.vhd
Subsanado el error, grabe el archivo bcd_7seg.vhd y ejecute nuevamente Synthesize
– XST. Una vez finalizada la síntesis, ISE muestra automáticamente un resumen
(Summary) de la síntesis del sistema descrito en VHDL. Figura 20 muestra los datos
creados por la herramienta de síntesis. Se puede observar, por ejemplo, en la parte
de Device Utilization Summary una estimación de los recursos del FPGA utilizados
para implementar el sistema en el FPGA, y el porcentaje de recursos usados en
función del total de recursos disponibles.
Figura 20 - Resumen de los resultados de síntesis del sistema descrito en VHDL
Es importante ver el reporte detallado generado por la herramienta de síntesis, el cual tiene
información diversa tales como cuales son las opciones usadas para llevar a cabo la síntesis,
mensajes de advertencia (warnings) , uso de recursos, etc . Para abrir el reporte se debe
hacer click en Synthesis Report de la opción Detailed Report, tal como se muestra en Figura
21.
Nota: otra información útil del reporte de síntesis es la codificaion usada en maquienas de estados, en el caso de este
proyecto simple no se ha implementado una máquina de estados, por lo que no se reporta nada al respecto, pero cuando se
implementan máquinas de estado es conveniente revisar la codificación usada, la cual puede ser cambiada por el usuario.
C7 Technology
NT 13 - Tutorial ISE
Página | 15
Figura 21 – Reporte generado por el proceso de síntesis
 Vista RTL del Diseño
Finalizado el proceso de síntesis, una herramienta interesante, aunque no necesaria para el
proceso de implementación, es el proceso View RTL Schematic. Como resultado de la
ejecución de ese proceso se obtiene una vista del esquemático que se genera de la
información suministrada por la herramienta de síntesis. Para ejecutar este proceso hacer
doble click en View RTL Schematic, al que se accede al presionar el símbolo + al costado de
Synthesize – XST, tal como se detalla en Figura 22.
Figura 22 - Selección del proceso RTL Schematic View
Después se abre la ventana mostrada en Figura 23.
C7 Technology
NT 13 - Tutorial ISE
Página | 16
Figura 23 – Primer paso para la creación del RTL Schematic View
En esta ventana por defecto en la sección de Available Elements está seleccionado el
módulo de mayor jerarquía, en este caso el módulo top. Hacer click en la opción Add
para que el nombre del módulo aparezca ahora en la sección Selected Elements.
Presionar luego Create Schematic.
La primera vista del esquemático generado usualmente es solo un módulo con el
nombre del componente seleccionado en el paso anterior. En la Figura 24 se muestra
el modulo top y sus respectivas E/S.
Figura 24 - RTL View del módulo de mayor jerarquía
C7 Technology
NT 13 - Tutorial ISE
Página | 17
Hacer doble click con el mouse en el bloque top, y ahora aparecerá un esquemático
de más bajo nivel mostrando los bloques de menor jerarquía, que constituyen el
módulo top (el de mayor jerarquía). El esquemático también muestra la respectiva
interconexión entre los diferentes módulos, tal como se puede apreciar en Figura 25.
Si se desea se puede a su vez hacer nuevamente doble click en alguno de estos
módulos y se abrirá una nueva ventana mostrando el respectivo esquemático, se
puede seguir así hasta llegar a un nivel que no permita seguir.
Figura 25 - Detalle de los módulos componentes del sistema y sus respectivas interconexiones
 Creación de Restricción de Periodo Mínimo de Reloj
Uno de los puntos más importantes en la implementación de un sistema digital en un FPGA
es saber cuál es la frecuencia máxima a la que puede funcionar correctamente el sistema.
Para ello todos los softwares disponibles en el mercado traen una herramienta que realizan
lo que se llama Análisis de Tiempo Estático (Static Timing Anaysis, STA). Ahora bien, para que
esta herramienta genere un reporte de los retardos críticos del sistema a implementar, y de
ahí deducir la frecuencia máxima de funcionamiento, se debe proveer a esta herramienta de
un valor aproximado de la frecuencia a la cual se desea funcione el sistema. Para ello se
dispone de lo que se llama restricciones de tiempo (timing constraints) que pueden ser
escritas en un archivo de texto o a través de una interface gráfica. En este tutorial usaremos
esta última opción.
Para abrir la interface gráfica para generar gráficamente la restricción de tiempo de periodo
mínimo (frecuencia máxima), del menú de barras seleccione Tools -> Constraints Editor, tal
como se muestra en Figura 26.
C7 Technology
NT 13 - Tutorial ISE
Página | 18
Figura 26 - Selección de la opción para crear una restricción de frecuencia de reloj
Una vez realizado Tools -> Contraints Editor, aparece la ventana mostrada en Figura 27, en la
cual se pregunta si desea ejecutar el proceso para generar los datos de restricciones de
tiempo dado que el sistema no tiene todavía ninguno. Click Yes.
Figura 27 - Habilitación del proceso de generación de periodo mínimo
Luego de presionar Yes, aparece una nueva ventana en la que se pregunta si se desea
agregar automáticamente al proyecto el archivo de restricciones de implementación (User
Constraint File, .ucf) que se va a generar. Presionar Yes.
Figura 28 - Pregunta si se desea agregar automáticamente el .ucf al Proyecto
Nota: el archivo .ucf es en realidad un archivo de texto (como se verá más adelante). Una vez configurada gráficamente la
frecuencia mínima, la herramienta genera la sintaxis correcta en texto, para el valor especificado usando la restricción de
tiempo adecuada.
Una vez habilitado el proceso de creación del .ucf aparece una nueva ventana, mostrada en
la Figura 29. Esta ventana tiene distintas partes, pero la que interesa en este proceso es la
que dice Unconstrained Clocks. En esta parte se muestran los relojes del sistema a los que no
se les ha asociado un periodo mínimo. En el caso del proyecto de este tutorial, el reloj se
denomina high_freq_clock.
C7 Technology
NT 13 - Tutorial ISE
Página | 19
Figura 29 - Selección del reloj a ser restringido
Hacer doble click en el nombre del reloj, high_freq_clock. Aparecerá una nueva ventana
similar a la de la Figura 30. En esta ventana, en la parte Specify Time se debe escribir el
periodo mínimo de funcionamiento del reloj seleccionado en el paso anterior. En este caso, y
dado que la tarjeta Nexys 2, tiene un cristal que oscila a 50MHz, y esta frecuencia entra
directamente al FPGA, se define el periodo mínimo de high_freq_clock como 20 ns. Los
demás valores se dejan en su valor por defecto.
Figura 30 - Interface gráfica para fijar periodo mínimo del reloj seleccionado
Nota: Este es un ejemplo muy sencillo y sobre todo de inicialización en la familiarización del software y hardware, para
proyectos más complicados aparecerán más relojes, y se debe ir configurando de a uno. También, pueden haber relojes
generados internamente, tales como las salidas de los PLLs, estos relojes también deberían aparecer en la ventana
Unconstrained Clock de la Figura 29.
Una vez terminado con el paso explicado anteriormente y luego de presionar Ok, en la
ventana inicial, mostrada en Figura 29, ahora debe aparecer high_freq_clock en el panel
Create Timing Constraints for Clock Domians, tal como se muestra en Figura 31.
C7 Technology
NT 13 - Tutorial ISE
Página | 20
Figura 31 - Restricción configurada para high_freq_clock
Finalmente hacer, File -> Save As para grabar el .ucf en el sub-directorio /ucf. Luego File ->
Exit. De este modo se agrega automáticamente al proyecto el archivo .ucf con las
restricciones de reloj recién generadas. Figura 32 detalla la nueva estructura del proyecto
tutorial con el archivo top.ucf recién creado.
Figura 32 - Archivo .ucf agregado automáticamente al proyecto
Si hace doble click en top.ucf, se abrirá en el panel de edición el archivo de texto que
contiene la restricción del reloj generada a partir de la interface gráfica. En este caso debería
ver algo similar a lo siguiente:
#Created by Constraints Editor (xc3s500e-fg320-5) - 2015/01/17
NET "high_freq_clock" TNM_NET = "high_freq_clock";
TIMESPEC TS_high_freq_clock = PERIOD "high_freq_clock" 20 ns HIGH 50 %;
Nota: en la figura 32 se observa que se detalla el camino completo del directorio donde reside cada archivo del proyecto.
Este camino se puede activar o desactivar (en otras figuras de este tutorial no se muestra el camino completo). Para
activar/desactivar, situar el mouse sobre cualquier archivo .vhd, presionar botón derecho del mouse y seleccionar File/Path
Display y luego seleccionar Show para mostrar el camino completo de la locación de los archivos.

Asignación de pines de E/S
Otro proceso importante antes de realizar la implementación del sistema en el FPGA es el
proceso de asignación de pines de E/S del sistema diseñado. En este proceso se asocia cada
C7 Technology
NT 13 - Tutorial ISE
Página | 21
E/S del sistema con un pin especifico del FPGA, esta asociación queda expresada en forma
de texto en el archivo de restricción (archivo top.ucf).
Del mismo modo que para el caso de la restricción del periodo de reloj, la asignación de
pines de E/S se puede hacer ya sea escribiendo en el mismo archivo .ucf la restricción
respectiva, siguiendo una cierta sintaxis, o se puede hacer la asociación en forma gráfica
para posteriormente generar automáticamente el texto correspondiente en el .ucf.
Se detalla a continuación la forma gráfica de asociación mediante el uso de la herramienta
PlanAhead, para la generación de las restricciones de asociación de pines del FPGA con los
pines E/S del sistema. Para ello haga doble click en el proceso I/O Pin Planning (PlanAhead) –
Post-Synthesis. Ver Figura 33.
Figura 33 - Proceso a invocar para la asignación de pines de E/S
Este proceso invoca la herramienta gráfica llamada PlanAhead, que tiene diversas funciones
de utilización siendo una de ellas la asignación de pines del E/S (las otras funciones de
PlanAhead son avanzadas, y por ende no se explican en este tutorial introductorio). La
ventana principal de PlanAhead se muestra en Figura 34.
C7 Technology
NT 13 - Tutorial ISE
Página | 22
Figura 34 - Ventana principal de la herramienta Plan Ahead
La ventana principal de PlaAhead tiene varios paneles, tal como se puede ver en Figura 34.
En el panel inferior, llamado I/O Ports, y en la primer columna de dicho panel, se detallan
todas la entradas y salidas del sistema. Las siguientes columnas detallan diversos valores y
características de cada E/S, especificándose algunos valores por defecto, entre ellos por
ejemplo el valor de VCCO, el estándar de E/S, para las salidas se especifica el tipo de
pendiente (slew/fast), como así también la capacidad de drenaje de la corriente, también se
puede especificar si la E/S necesita algún tipo de resistor de arranque (pull up / pull down).
Ahora bien estos valores que son mostrados por defecto no necesariamente deben ser
respetados. Sobre todo los referidos a la tensión VCCO y al I/O estándar.
A este punto del tutorial es necesario revisar la información provista por el fabricante de la
kit que se vaya a usar para implementar el diseño en el FPGA, en este caso revisaremos la
guía de usuario de la Nexys 2, que en realidad se llama manual de referencia. Este manual se
puede descargar del siguiente link:
http://www.digilentinc.com/Data/Products/NEXYS2/Nexys2_rm.pdf
C7 Technology
NT 13 - Tutorial ISE
Página | 23
Del manual de referencia se obtiene la información de cual pin del FPGA está asociado a los
componentes de la placa que hacen falta para este proyecto. Así por ejemplo, se necesita
saber los pines de salida del FPGA que controlan los LEDs de uno de los siete segmentos
disponibles en la placa. También, se necesita conocer el pin del FPGA asociado a la entrada
del reloj de 50 MHz, los pines de entradas al FPGA asociados a los switches, etc. Esta
información se puede obtener del manual de referencia en página 4 y página 5.
Teniendo el manual de referencia a mano, y con PlanAhead abierto, se debe completar para
cada entrada y salida los siguientes datos:



Site: se refiere al pin del FPGA que se va asociar con la entrada o salida respectiva.
Así, por ejemplo la salida seven_segm_dsply[6] se asocia con el pin L18 del FPGA, que
es el pin que controla el segmento a del primer 7-segmentos (esta información se
obtiene de la Figura 8 del manual de referencia). Se deben completar todos los sites
para cada entrada y para cada salida del sistema diseñado. Para escribir un pin
específico del FPGA se puede directamente escribir el nombre del pin, por ejemplo
L14, o presionar con el mouse el extremo derecho de la respectiva celda y aparece un
menú de los pines disponibles, seleccione el que necesite.
I/O Std: los pines de E/S del FPGA tienen un buffer programable que se adapta a las
distintas necesidades del estándar de E/S que se necesite. Tal como se vió en la
Figura 34, por defecto PlanAhead muestra un I/O Std de LVCMOS25, pero tal como se
puede observar en Figura 8 del manual de referencia de la placa Nexys 2, los
periféricos de E/S funcionan con LVCMOS 3.3V, por lo que se debe cambiar el I/O Std
a ese valor para cada E/S del sistema. Del mismo modo que en el caso anterior para
cambiar el I/O Std directamente se puede escribir el estándar o presionar el mouse
en el extremo derecho de la celda y seleccionar LVCMOS33.
Los demás valores de esta tabla se dejan con su valor por defecto.
Figura 35 muestra como debería quedar el panel de I/O Ports de PlanAhead luego de
realizar las asignaciones indicadas en Site y I/O Std.
Figura 35 - Pines E/S y voltajes asignados a cada puerto de E/S
C7 Technology
NT 13 - Tutorial ISE
Página | 24
Al cerrar la ventana de PlanAhead, ya sea presionando la X de la ventana o mediante File ->
Exit, automáticamente se genera el archivo de restricciones .ucf. En caso de existir un .ucf,
tal como por ejemplo uno en el que se haya establecido la frecuencia de reloj, las nuevas
restricciones automáticamente se agregan a la existente. Figura 36 muestra la locación del
archivo.
Figura 36 - Archivo de restricciones top.ucf
Para abrir el archivo top.ucf se puede presionar botón derecho y abrirlo con cualquier editor
de texto o directamente presionar dos veces sobre top.ucf en el panel de jerarquía del
proyecto. A continuación se muestra el contenido del archivo de restricciones.
#Created by Constraints Editor (xc3s500e-fg320-5) - 2015/01/17
NET "high_freq_clock" TNM_NET = "high_freq_clock";
TIMESPEC TS_high_freq_clock = PERIOD "high_freq_clock" 20 ns HIGH 50 %;
# PlanAhead Generated physical constraints
NET
NET
NET
NET
NET
NET
NET
NET
NET
NET
NET
"seven_segm_dsply[6]" LOC =
"seven_segm_dsply[5]" LOC =
"seven_segm_dsply[4]" LOC =
"seven_segm_dsply[3]" LOC =
"seven_segm_dsply[2]" LOC =
"seven_segm_dsply[1]" LOC =
"seven_segm_dsply[0]" LOC =
"high_freq_clock" LOC = B8;
"sys_reset" LOC = B18;
"up_down" LOC = G18;
"dsply1_anodo" LOC = F15;
L18;
F18;
D17;
D16;
G14;
J17;
H14;
# PlanAhead Generated IO constraints
NET
NET
NET
NET
NET
NET
NET
NET
NET
NET
NET
"seven_segm_dsply[6]" IOSTANDARD = LVCMOS33;
"seven_segm_dsply[5]" IOSTANDARD = LVCMOS33;
"seven_segm_dsply[4]" IOSTANDARD = LVCMOS33;
"seven_segm_dsply[3]" IOSTANDARD = LVCMOS33;
"seven_segm_dsply[2]" IOSTANDARD = LVCMOS33;
"seven_segm_dsply[1]" IOSTANDARD = LVCMOS33;
"seven_segm_dsply[0]" IOSTANDARD = LVCMOS33;
"dsply1_anodo" IOSTANDARD = LVCMOS33;
"high_freq_clock" IOSTANDARD = LVCMOS33;
"sys_reset" IOSTANDARD = LVCMOS33;
"up_down" IOSTANDARD = LVCMOS33;
Este .ucf tiene tres partes, la primera referida al periodo del reloj high_freq_clock,
configurado a 20 ns, la segunda parte referida a la asociación de pines del FPGA con las
señales de E/S del sistema diseñado, y la tercer parte configura el estándar de E/S
(LVCMOS33).
C7 Technology
NT 13 - Tutorial ISE
Página | 25
 Implementación del Diseño
Una vez completados los pasos anteriores ya se puede comenzar con los procesos necesarios
para la implementacion del sistema en el FPGA.
El proceso de implementación del diseño, Implement Design, crea el hardware y genera el
ruteo a ser implementado en el FPGA. Hay varios procesos relacionados con la
implementación del diseño:



Translate: crea una base de datos interna del diseño. Esto puede incluir una variedad de
formatos tales como VHDL, EDIF netlist, etc. Todos estos formatos son convertidos y
unidos en un netlist con un formato dado por Xilinx.
Map: este proceso mapea la lógica generada en el proceso de Translate en hardware de
la FPGA (CLBs, IOBs, BRAM, etc). Este paso también optimiza lógica, y remueve lógica no
usada.
Place and Route (P&R): este proceso asigna CLBs, IOBs, BRAMs, específicos del FPGA y
los respectivos ruteos de interconexión de lógica. Si una restricción de tiempo ha sido
establecida será usada para guiar la locación de la lógica. El ruteo del diseño también
será controlado por la locación de los pines de E/S. El reporte de P&R indica la calidad del
ruteo, un resumen de timing, y si alguna señal no ha sido exitosamente ruteada.
A los fines prácticos de este tutorial, se puede ejecutar cualquiera de los procesos
contenidos dentro del proceso de Place & Route. Al ejecutarse uno de estos procesos todos
los procesos anteriores serán ejecutados también. Por ejemplo, la siguiente figura muestra
la opción de seleccionar el proceso de Generate Post Place and Route Static Timing.
Figura 37 - Ejecución del proceso Generate Post Place and Route Static Timing
Finalizada la ejecución de cualquiera de los procesos de Implement Design, es muy
conveniente leer alguno de los distintos reportes generados en función del proceso
ejecutado.
C7 Technology
NT 13 - Tutorial ISE
Página | 26
Los reportes se encuentran en la columna del medio del panel principal. De acuerdo al
reporte que se seleccione es como cambia la parte inferior de la mencionada columna. La
siguiente figura detalla lo escrito.
Figura 38 - Distintos reportes disponibles
En caso de no tener disponible a simple vista la columna de los reportes, presionar el tab
Design Summary en la parte inferior del panel principal, o tambien puede hacer Layout ->
Load Default Layout.
Uno de los reportes importantes que se debe examinar antes de proseguir con el proceso de
implementación, es el reporte de pines de E/S asignados. Este reporte es conocido como
Pinout Report y es parte del reporte del Design Summary. Figura 39 muestra como acceder a
este reporte.
Ayuda: presione el indicador Signal Name para ordenar las señales por su nombre y de ese modo aparecerán primero las
señales de E/S del proyecto.
En este reporte es necesario verificar que la asociación de pines del FPGA y las E/S del
sistema diseñado sea correcta. Por ello teniendo el manual de referencia de la placa que
esté usando verificar los pines del FPGA asignados a los periféricos que serán usados y su
correcta asociación con las E/S del módulo top.vhd.
C7 Technology
NT 13 - Tutorial ISE
Página | 27
Figura 39 - Reporte de pines de E/S asignados
C7 Technology
NT 13 - Tutorial ISE
Página | 28
Sección 2 - TUTORIAL ISim
Una vez descrito el sistema en VHDL y luego de ser sintetizado por la herramienta de
síntesis, es necesario crear los estímulos necesarios y ejecutar las respectivas simulaciones
para comprobar el comportamiento del sistema antes de ser implementado en el FPGA.
El archivo que contiene los estímulos para el sistema a ser simulado se llama genéricamente
test bench. El test bench en sí puede ser creado, tal como se crea un nuevo módulo VHDL, o
puede ser importado al proyecto, en caso que ya existiese el test bench, usando la opción
Add Source. Se describen a continuación ambas opciones.
Creación del Test Bench (New Source)
Si no tiene abierto el proyecto, ábralo ejecutando File->Open Project. Una vez abierto el
proyecto, para crear el respectivo test bench presione el botón derecho del mouse en el
panel Hierarchy, y seleccione New Source. En la ventana de New Source Wizard seleccione
VHDL Test Bench, e introduzca el nombre del test bench, tal como se muestra en Figura 40.
Figura 40 - Test bench a ser creado y agregado al proyecto
Una vez seleccionado el nombre y la locación del test bench, click Next. En la ventana que
aparece debe seleccionar con cual archivo .vhd desea asociar el test bench a crear.
Seleccione cuidadosamente el archivo correspondiente. En Figura 41 se muestra que el
nuevo test bench se va asociar al módulo top.vhd.
C7 Technology
NT 13 - Tutorial ISE
Página | 29
Figura 41 - Asociación con el módulo top del test bench a ser creado
Complete la creación del nuevo Test Bench al hacer click en Next y Finish, luego en el panel
Espacio de Trabajo se abrirá automáticamente el recientemente creado test bench para ser
editado. El código generado incluye lo siguiente:






Definición de las librerías
La entidad (entity)
La arquitectura
Declaración de señales internas
Un bloque de instanciación
Procesos de estímulo de reloj y reset
El código generado es realmente un patrón muy genérico, por lo que para diseños complejos
puede ser que el test bench generado sea muy sencillo, mientras que para diseños simples
algunas partes deben ser removidas. Una de las primeras cosas a modificar es la constante
<clock>_period. Verifique también los valores iníciales asignados por defecto. Agregue las
líneas de código que considere necesarias para generar los estímulos. Recuerde también de
agregar código de verificación en caso que así lo desee. Después de realizar los respectivos
cambios, grabe al archivo.
Nota: no es la intención de este tutorial introductorio describir en detalle las distintas partes y formas de estímulos de un
test bench. Para los interesados pueden leer la siguiente nota de aplicación:
http://hdl-fpga.blogspot.com.ar/2012/05/generacion-de-estimulos-y-verificacion.html
Agregar Test Bench (Add Source)
Del mismo modo como se puede agregar un módulo VHDL de descripción de hardware, se
puede agregar un módulo VHDL de estímulo (test bench). Para ello en la ventana de
jerarquía del proyecto presione botón derecho del mouse y selección Add Source. Si ha
bajado el ISE_Tutorial.zip puede encontrar el test bench top_tb.vhd en el subdirectorio
tb_source tal como se detalla en la Figura 42.
C7 Technology
NT 13 - Tutorial ISE
Página | 30
Figura 42 - Agregar al proyecto el modulo top_tb.vhd incluido en el c7t_ise_tutorial.zip
top_tb.vhd es un test bench muy simple, que básicamente genera el reloj de alta
frecuencia, de un periodo de 20 ns, y genera también una señal de inicialización del
sistema (reset). De nuevo no es el propósito de este tutorial enseñar a escribir test
benches.
Opciones de Simulación
Por defecto la opción del subpanel Design es Implementation, por esta razón el/los test
benches que pudieran ser parte del proyecto no aparecen por defecto en el panel de
jerarquía. Para que aparezcan los test benches relacionados con el proyecto, se debe
cambiar a la opción Simulation en el subpanel Design, tal como muestra en Figura 43.
Figura 43 – Visualización del test bench top_tb cuando se selecciona Simulation
En Figura 43, se observa que los archivos .vhd del panel de Hierarchy cambian de orden,
siendo ahora el test bench (top_tb) el primer archivo desde arriba hacia abajo. Si se
selecciona el test bench, es decir se presiona el mouse una vez sobre top_tb, en el panel de
procesos (Processes) aparecen dos opciones, ver Figura 44: la opción Syntax Check que
llevará a cabo un chequeo de la sintaxis del archivo .vhd. La otra opción es Simulate
Behavioral Model, que en caso de presionar dos veces el mouse en esa opción, se invoca al
simulador ISim del ISE, y se llevará a cabo una simulación de tipo de funcionalidad (otras
opciones de simulación se detallan más adelante).
C7 Technology
NT 13 - Tutorial ISE
Página | 31
Figura 44 - Selección de herramienta de simulación ISim
Tiempo de Simulación
Antes de correr la simulación verifique que el tiempo de simulación que se asigna por
defecto al simulador sea mayor que el tiempo de simulación requerido para su diseño.
Presione botón derecho del mouse en el proceso Simulate Behavioral Model y seleccione
Process Properties. Las principales propiedades del ISim se detallan tal como se puede ver en
Figura 45.
Figura 45 - Opciones de configuración del Simulador
C7 Technology
NT 13 - Tutorial ISE
Página | 32
En el caso mostrado en Figura 45 el tiempo de simulación es de 1000ns, verifique si ese valor
se adecua a los tiempos de simulación de su diseño, sino cámbielo al valor que necesite.
Luego, para ejecutar el test bench, haga doble click en Simulate Behavioral Model, la
ventana principal del simulador, llamado ISim, aparecerá. A continuación se explican las
principales funciones de este simulador.
Paneles del ISim
Una vez abierto el ISim se tienen cuatro paneles principales, detallados en la Figura 46.
3
1
2
4
Figura 46 - Paneles principales del ISim
Panel 1: Instancias y Procesos, para la selección de archivos fuentes.
Panel 2: Objetos, detalla las señales que se pueden agregar a la simulación.
Panel 3: Simulación, donde el estado de las señales y sus respectivas formas de ondas
pueden ser observadas.
Panel 4: Consola, donde los mensajes relativos a la simulación se detallan.
Algunas herramientas útiles del ISim:

El icono ‘Zoom to Full View’, se usa para tener una vista completa de la
simulación.

Para ver más detalles de la simulación, usar la lupa con al signo más (+)
C7 Technology
NT 13 - Tutorial ISE
.
Página | 33


En la parte izquierda del panel de simulación hay dos columnas denominadas
Name y Value. Para una señal determinada en la columna Name puede hacer
click sobre el botón derecho del mouse en la señal deseada, y seleccionar la
opción de borrar, renombrar o cambiar de color. Las señales se pueden arrastrar
para arriba o para abajo. Otra opción útil es agregar ‘New Divider’, para separar
las señales por funcionalidad por ejemplo.
El bloque de control de simulación, sobre la parte derecha del menú de barras del
ISim,
tiene las siguientes características:
o Re-comienzo de simulación, la detiene y vuelve el tiempo de simulación
a 0.
o Ejecuta la simulación hasta que todos los eventos son ejecutados
o Ejecuta la simulación por el tiempo especificado en el indicador del valor
de tiempo
o Indicador del valor de tiempo de ejecución de la simulación, y unidad de
tiempo
o Ejecuta la simulación, una instrucción por vez

o Pausa la simulación
Otra herramienta bastante útil de ISim es la que posibilita ir a la próxima
transición de una señal seleccionada. Para ello se debe primero seleccionar una
señal de la columna Name del panel de simulación. Luego se presiona el icono
y el simulador centra las formas de ondas mostradas en próxima transición
de la señal seleccionada, por ejemplo una transición de 0 -> 1, o de 1 -> 0 de la
señal, e identifica la transición con un cursor.
Una vez finalizada la simulación por el periodo de tiempo determinado por el valor del
tiempo de ejecución de la simulación, por ejemplo 1.0us, se puede seguir la simulación por
otro periodo de tiempo al presionar
o escribiendo en el panel de consola: run 1.0us, y
presionando <enter>. Por supuesto que se puede variar el tiempo de simulación en caso de
ser necesario. Por ejemplo, para el diseño de este tutorial el tiempo de simulación debe ser
bastante largo ya que la base de tiempo para mostrar los números en el display 7 segmentos
es de aproximadamente 1 segundo, por lo que para ver las transiciones en la ventana del
simulador se debe cambiar la duración de la simulación a un valor bastante largo, por
ejemplo a 6.000ms (6 segundos).
C7 Technology
NT 13 - Tutorial ISE
Página | 34
Ejecución de Simulación Post Place and Route
Para la ejecución de la simulación Post Place and Route se debe:

Generar el respectivo archivo del modelo de simulación del diseño implementado en
el FPGA conteniendo todos los retardos lógicos y de ruteos.
Figura 47 - Generación del archivo de simulación con retardos lógicos y de ruteos

Seleccionar la simulación Post-Route desde el menú de simulación.
Figura 48 - Configuración para simulación post place and route
C7 Technology
NT 13 - Tutorial ISE
Página | 35
La opción del proceso de simulación cambia adecuándose a la nueva simulación requerida.
Figura 49 - Simulación post place and route
Haciendo doble click sobre Simulate Post-Place and Route Model se abre ISim. Es
conveniente correr la simulación, y luego expandir las formas de ondas hasta que pueda
visualizar algún retardo, tal como se muestra en la siguiente figura.
Figura 50 - Simulación post-P&R y medición de retardo (5,65 ns)
Uso de Cursores
Para la medición de los retardos es necesario el uso de cursores en el panel de simulación.
Para insertar el primer cursor solo es necesario hacer un simple click de mouse sobre la
C7 Technology
NT 13 - Tutorial ISE
Página | 36
forma de onda en la cual se desea el cursor. Una vez que el cursor aparece se puede mover a
las próximas o anteriores transiciones de la señal por medio del uso de los iconos de próxima
transición o transición anterior
. Para que aparezca el segundo cursor es necesario,
primero posicionar el cursor sobre la forma de onda deseada, luego presionar la tecla
<Shift>, y dejando presionado <Shift>, presionar el botón izquierdo del mouse. De ese modo
se tienen los dos cursores disponibles para medir retardos o periodos de tiempo.
Uso de Marcadores
Otro elemento útil en la ventana de simulación es el marcador. Básicamente los marcadores
son usados para navegar a lo largo de la forma de onda de simulación y mostrar la
simulación en un determinado valor de tiempo. Por ejemplo, se pueden insertar marcadores
en los tiempos de simulación 200ns, 555ns, 1233ns, etc, y cuando se necesite ir a uno de
esos tiempos solo hace falta seleccionar el marcador respectivo y el simulador saltará y
mostrará las formas de ondas centradas en ese tiempo específicamente. Para agregar un
marcador, agregar primero el cursor principal presionando el botón izquierdo del mouse en
la el tiempo deseado o en la transición deseada. Presionar luego el icono Add Marker
. Se
pueden agregar tantos marcadores como se necesiten. Para moverse en la ventana de
simulación usando los marcadores se pueden usar los iconos de transición de marcadores
.
Nota: diferencia entre cursores y marcadores (markers): cursores se usan principalmente para mediciones de tiempo,
mientras que marcadores son usados para marcar la forma de onda en un tiempo de simulación en particular, facilitando de
este modo la navegación de la simulación.
Configuración personalizada del ISim
ISim tiene varias opciones muy útiles para personalizar la configuración de la ventana de
simulación. Detallada información al respecto se puede encontrar en la siguiente nota de
aplicación: http://hdl-fpga.blogspot.com.ar/2012/12/personalizando-el-uso-de-isim.html
C7 Technology
NT 13 - Tutorial ISE
Página | 37
Sección 3 - TUTORIAL IMPACT
Generación del Archivo de Configuración del FPGA
Una vez comprobado el correcto funcionamiento del sistema diseñado mediante la
simulación funcional y la simulación post-place&route (esta última es opcional), el último
paso para la implementación del sistema en el FPGA es la creación del respectivo archivo de
programación conteniendo toda la información para configurar el FPGA. Este archivo se
llama bitstream (.bit).
Para la generación del archivo .bit, se deben realizar los siguientes pasos:
1. Seleccione el proceso ‘Generate Programming File’. Haga click en el botón
derecho del mouse y seleccione Process Properties.
Figura 51 - Acceso a las propiedades de archivo de programación del FPGA
2. En Category seleccione Startup Options, y cambie el valor por defecto para FPGA
Start-UP Clock (CCLK), por JTAG Clock, tal como muestra Figura 52. Haga click en
Apply para aceptar los cambios.
Nota: este paso en necesario para la placa Nexys 2, Nexys 3. Si Ud. tiene otra placa consultar el respectivo
manual de usuario.
C7 Technology
NT 13 - Tutorial ISE
Página | 38
Figura 52 - Configuración del reloj para programar el FPGA
3. Doble click sobre el proceso ‘Generate Programming File’ (a veces aparece un
mensaje preguntando si desea habilitar el envío de información a Xilinx, para sus
estadísticas, se sugiere declinar dicha invitación para evitar el flujo de
información). Si el archivo de configuración, conocido como bitstream, se genera
exitosamente, un check mark verde aparece al costado del proceso, tal como se
ve en Figura 53.
Figura 53 - Generación exitosa del archivo de programación
Programación del FPGA Usando IMPACT
Una vez generado del archivo de programación se debe descargar el mismo al FPGA, para
ello el ISE tiene una herramienta dedicada llamada IMPACT.
Dentro del proceso Configure Target Device, seleccione el proceso Manage Configuration
Project (IMPACT), tal como se aprecia en Figura 54.
C7 Technology
NT 13 - Tutorial ISE
Página | 39
Figura 54 - Selección del proceso IMPACT
La ventana principal del IMPACT es la mostrada en Figura 55.
Figura 55 - Ventana principal de IMPACT
Doble click en la opción Boundary Scan. Y luego, en la ventana Boundary Scan, presione
botón derecho del mouse y seleccione Initialize Chain.
C7 Technology
NT 13 - Tutorial ISE
Página | 40
Figura 56 - Inicialización de la cadena JTAG en la placa del FPGA a programar
El proceso Initialize Chain lleva a cabo un test de los componentes existentes en la cadena
JTAG en el board donde se encuentra el FPGA. Al finalizar el test se grafica en esta ventana
los dispositivos encontrados en la cadena JTAG del board. Por ejemplo, para el caso del
board Nexys 2 la cadena JTAG a mostrarse debe ser similar a la mostrada en la siguiente
figura.
Figura 57 - Dispositivos presentes en la cadena JTAG en el board Nexys 2
Tal como se aprecia en Figura 57, aparecen dos dispositivos en la cadena JTAG, uno es el
FPGA XC3S500E y el otro es la memoria de configuración del FPGA, XCF04S. En este caso
vamos a configurar solo el FPGA; para ello seleccionar el FPGA con un simple click del
mouse; luego presionar una vez botón derecho del mouse y seleccionar Assign New
Configuration File, ver Figura 58. Navegar hasta encontrar el archivo de configuración del
FPGA (* .bit), seleccionarlo y presionar Open. Inmediatamente aparecerá una ventana con
un mensaje diciendo que el dispositivo, el FPGA, soporta Flash PROMS, si se desea adjuntar
una PROM. Por ahora seleccione No.
C7 Technology
NT 13 - Tutorial ISE
Página | 41
Figura 58 - Asignación del archivo .bit al FPGA
Si el proceso se ejecuta correctamente el nombre del archivo .bit debe aparecer debajo del
FPGA. Volver a presionar el botón derecho sobre el FPGA y ahora seleccionar Program. Una
ventana similar a la siguiente aparecerá.
Figura 59 - Opciones Program
Por defecto aparece seleccionado el FPGA como el dispositivo a ser programado. Presione
OK, para comenzar la configuración del FPGA. Si la operación es realizada exitosamente un
mensaje similar al de la Figura 60 debe aparecer.
Figura 60 - Mensaje de configuración exitosa del FPGA
C7 Technology
NT 13 - Tutorial ISE
Página | 42
De este modo el FPGA en la placa Nexys 2 ha quedado configurado por lo que en el display 7
segmentos debe aparecer la cuenta de 0 a 9, con una duración aproximada de un segundo
en cada digito. Cambiando la posición del switch SW0 la cuenta debe cambiar a forma
descendente, de 9 a 0. Y presionando el botón BTN0 se inicializa (reset) el sistema.
Si todo funciona correctamente Ud. ha finalizado su primer proyecto en FPGA !!!
FELICITACIONES
C7 Technology
NT 13 - Tutorial ISE
Página | 43
Sección 4 - Otras Herramientas del ISE
Para los que estén interesados en el uso de herramientas más avanzadas se detalla a
continuación algunas de las disponibles den el ISE, su forma y propósito de uso.
Analyze Post-Place & Rout Static Timing
Este proceso se ejecuta haciendo doble click en el proceso Analyse Post-Place & Route Static
Timming, tal como se detalla en la siguiente figura.
Figura 61 - Ejecución del proceso de análisis estático de tiempo del diseño
Los resultados de la ejecución de la herramienta de análisis estático de tiempo se presentan
en forma de texto en la pantalla principal, tal como se muestra en Figura 62. A su vez, los
caminos críticos se pueden visualizar en el Technology Viewer al presionar botón derecho del
mouse, sobre el nombre del camino crítico (Maximun data Path) y seleccionar Show in
Technology Viewer, tal como se detalla también en Figura 62.
Figura 62 - Selección de la opción de vista del camino crítico
C7 Technology
NT 13 - Tutorial ISE
Página | 44
El resultado de la vista en el Technology Viewer es un circuito esquemático del camino crítico
tal como se aprecia en Figura 63.
Figura 63 – Detalle en forma de esquemático del camino crítico
Esta información a veces es muy importante pues da una idea directa de cuales son los
orígenes de los retardos más largos del sistema, y en caso que sea necesario (por ejemplo
cuando el retardo es más largo que el periodo mínimo requerido) es posible ver donde se
puede ‘acortar’ ese camino crítico para lograr que el sistema funcione a la frecuencia
requerida.
Más información acerca de este proceso y de los caminos críticos en un sistema digital se
puede encontrar en:
http://hdl-fpga.blogspot.com.ar/2011/07/frecuencia-maxima-de-un-sistema-digital.html
C7 Technology
NT 13 - Tutorial ISE
Página | 45
FPGA Editor
FPGA Editor es una herramienta del entorno ISE que permite ‘ver’ la locación de los distintos
elementos lógicos del diseño y su respectivo ruteo dentro del FPGA.
Para ejecutar FPGA Editor, se debe primero seleccionar el proceso Place & Route, y luego
View/Edit Routed Design (FPGA Editor), tal como detalla Figura 64.
Figura 64 - Ejecución del proceso FPGA Editor
Figura 65 muestra la pantalla principal del FPGA editor. Tal como se puede apreciar FPGA
Editor mostrará una imagen interna del FPGA sobre la ventana principal, llamada Array1,
mientras que sobre las ventanas de la derecha de la pantalla muestra en la parte superior
una lista de todos los componentes del sistema, List1, y en la inferior un zoom de todo el
FPGA, World1. Dentro de la figura en Array 1, los cuadraditos blancos son los SLICEs,
mientras que las líneas celeste son líneas de ruteo de interconexión entre los diferentes
elementos lógicos del sistema implementado en el FPGA, la línea roja es una de las líneas de
interconexión que ha sido seleccionada, en el caso de la Figura 65 es una línea de reloj.
En la barra de herramienta hay varios iconos con diferentes funciones, tales como el
ícono
Sites
, Switch Boxes
y Routes
. Para ver la funcionalidad de cada ícono
seleccione uno o más de los íconos y luego presiones el ícono Apply
(este ícono queda
activo una vez que se presione, es decir no hace falta presionarlo cada vez que se presione
un ícono).
Puede usar el ícono Zoom rectángulo
para marcar el área que desea amplificar. Notar
que en la ventana Wordl1 se puede observar cual es la parte amplificada dentro de todo el
FPGA.
Por ejemplo amplifique la zona donde se encuentra la lógica del diseño implementado en el
FPGA usando el ícono Zoom rectángulo
. Puede ver cuantos SLICEs son usados en esa
parte seleccionada. Seleccione ahora alguno de los SLICEs ocupados por el diseño, estos son
los SLICEs rellenos con azul, una vez seleccionado cambian a color rojo.
C7 Technology
NT 13 - Tutorial ISE
Página | 46
Figura 65 - FPGA Editor
Los detalles del SLICE seleccionado se muestran en el panel inferior del FPGA Editor, por
ejemplo para el caso del SILCE se especifica que tipo de SLICE es el seleccionado
(SLICEL/SLICEM), y también cual es la locación del mismo dentro de la matriz de SLICEs del
FPGA. Por ejemplo si se muestra “SLICE_X52Y83”, significa que es un SLICEL con locación en
la fila 52, columna 83. También dentro de esta información se detalla el nombre del SLICE,
dado por la herramienta de Place & Route.
Si se hace doble click en el SLICE seleccionado, se abrirá una nueva ventana mostrando todos
los recursos disponibles en el SLICE, y cual es la lógica realmente usada del SLICE, detalladas
por las líneas de interconexiones celestes.
Otra función útil del FPGA Editor es la localización de los pines de E/S del FPGA. Para ello
puede ir a un extremo del FPGA, y seleccionar uno de los pines de E/S usados (bloques de
azul) con un simple click del mouse. Información del pin es detallada en el panel inferior de
la ventana principal. Al hacer doble click en el pin seleccionado se abre una nueva ventana
graficando los recursos del bloque de E/S (IOB).
C7 Technology
NT 13 - Tutorial ISE
Página | 47
Apéndice A
Descarga e Instalación de ISE WebPack
Para todos aquellos que usan FPGAs de Xilinx, Xilinx provee una versión gratis de su software
ISE llamado WebPack. El software ISE WebPack puede ser usado para implementar sistemas
en FPGAs descrito en VHDL o en Verilog. A continuación se detallan los pasos necesarios
para la descarga e instalación del software.
Descarga
Para la descarga ir al siguiente link:
http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/desi
gn-tools.html
Se debería acceder a una página similar a la siguiente:
Figura 66 – Sitio web de Xilinx para descarga del ISE
Verificar que la tabulación ISE Design Tools sea la seleccionada.
Nota: como este tutorial está preparado para el uso de placas de FPGAs tipo Spartan 3 y Spartan 6, no se hace uso del
software Vivado Design Tools.
En la página de descargas seleccione el método de descarga (múltiple archivos, un solo
archivo, imagen, etc.) que Ud. desee, y seleccione también el sistema operativo correcto.
Tenga en cuenta que el archivo de descarga es bastante grande, unos 6,7 GB. Antes de
C7 Technology
NT 13 - Tutorial ISE
Página | 48
iniciar la descarga Xilinx le va solicitar se registre en su sitio web, o si ya tiene una cuenta,
que introduzca los datos correspondientes.
Instalación
Una vez guardado el archivo descargado, ir al respectivo directorio de descarga,
descomprima y ejecute el archivo xsetup.exe.
En las primeras ventanas de la instalación, seleccione las opciones que se muestran por
defecto, y acepte las condiciones de la licencia.
Cuando aparezca la ventana para seleccionar el producto a instalar, seleccione el producto
ISE WebPack.
Figura 67 – Selección de ISE WebPack para ser instalado
Siga las indicaciones y deje las opciones que se presentan por defecto, a menos q Ud. quiera
cambiar algo.
La instalación toma un largo tiempo. Espere hasta que aparezca un cartel tipo “Install
Completed”.
C7 Technology
NT 13 - Tutorial ISE
Página | 49
Figura 68 – Ventana indicando la finalización exitosa de la instalación
Instalación de la Licencia
Una vez que se termina el proceso de instalación del software, una nueva ventana aparecerá
para seleccionar el tipo de licencia que se desea. Seleccione la opción “Vivado/ISE WebPack
License”, y presione “Next”.
Figura 69 – Selección del tipo de licencia
A veces ocurre que luego de presionar “Next”, automáticamente se accede a la página de
Xilinx, y una licencia es generada e instalada automáticamente en su PC. Sin embargo, lo más
común es que tenga que acceder a la página:
https://secure.xilinx.com/webreg/register.do?group=esd_oms&tab=CreateLicense
C7 Technology
NT 13 - Tutorial ISE
Página | 50
En esta ventana debe introducir los datos de su cuenta de Xilinx. Luego aparece una ventana
en la que se muestran las licencias registradas a su nombre. Si es la primera vez que instala
un software de Xilinx, deberá aparecer una sola licencia en la ventana “Manage Licences”.
Haga click en el icono de descarga, que está situado en la esquina izquierda de debajo de la
ventana de licencias.
Ahora ejecute el software llamado “Manage Xilinx Licences”, que lo encuentra dentro de las
opciones de accesorios del software ISE.
Figura 70 – Software para administración de licencias
Una vez que se abra la ventana de “Manage Xilinx Licenses”, selecciones “Copy”, y navegue
hasta el directorio donde descargó la licencia, seleccione el archivo y el software copiará la
licencia en el directorio de instalación del ISE WebPack. Finalizado este proceso, ya está todo
listo para ejecutar el software ISE WebPack.
C7 Technology
http://www.c7t-hdl.com
Copyright © 2015
All rights reserved
C7 Technology
NT 13 - Tutorial ISE
Página | 51

Documentos relacionados