Tutorial ISE 10
Ismael Garrido
Nicolás Levy
Universidad ORT
Electrónica Digital
2008
1
Indice
Creación de un proyecto.......................................................................................................................3
Creación de archivos fuente.............................................................................................................3
Síntesis.............................................................................................................................................8
Selección de top level.................................................................................................................8
Designación de pines..................................................................................................................8
Esquemáticos......................................................................................................................................14
Simulación..........................................................................................................................................17
2
CREACIÓN DE UN PROYECTO
Para crear un nuevo proyecto debemos hacer File -> New Project. Ingresar un nombre para
el proyecto en Project Name y clickear Next. En Family se tiene que elegir Spartan3E, en Device
se elije XC3S500E y Package FG320 y en Speed debemos colocar - 4. Preferred language debe
estar en VHDL. Clickear en Next hasta terminar el wizard.
NOTA: El path donde se coloque el proyecto NO puede contener espacios o fallará un paso de
sintetización (ej: C:\proyecto).
Creación de archivos fuente
El siguiente paso es agregar o crear los archivos fuente del proyecto. Si ya se tienen listos
los archivos se debe clickear en Add Source. Para crear un nuevo fuente clickear New Source.
3
Al clickear en New Source nos ofrece el siguiente recuadro:
4
Comenzaremos creando un VHDL Module. En File name le asignamos un nombre. El
siguiente paso es definir las entradas y las salidas. Este paso es opcional pero es útil en tanto que ya
genera parte del código necesario.
Luego se escribe el código de la entidad. En este ejemplo escribimos un AND.
A la izquierda de la pantalla tenemos Sources. Allí debemos elegir la entidad con la que
estamos trabajando actualmente. Debajo de ese recuadro están los procesos que se pueden aplicar a
la entidad. En Synthesize - XST esta Check Syntax. A modo de ejemplo, hemos omitido el “;”
5
final. El tab de Errores nos muestra los errores que se encontraron en el archivo. Si se hace click
sobre el nombre del archivo, se coloca una flecha amarilla sobre la línea que contiene el error.
Una vez corregido el error, salvamos el archivo y realizamos doble click sobre Generate
Programing File, esto prepara un archivo para ser subido al FPGA pero la designación de pines no
es seteada por el usuario, en las siguiente secciones veremos como personalizar estos aspectos.
Cuando se trabaje con la placa, siempre se deben designar los pines para evitar posibles problemas.
6
Haciendo click en Synthesize – XST -> View RTL Schematic podemos ver como fue sintetizada la
entidad descripta. Si realizamos doble click en la entidad nos muestra con más detalle lo que hay
dentro del bloque.
7
Síntesis
Selección de top level
En caso de tener más de una entidad, la que se va a llevar al FPGA ha de ser seleccionada
como Top Level. Para esto, le hacemos click derecho y ponemos Set as Top Level en el panel
Sources. Luego debemos realizar doble click sobre Generate Programing File.
Designación de pines
8
Editando los campos Loc podemos elegir que pin corresponde a cada entrada o salida I/O
Name.
No todos los pines están habilitados para su uso externo, por ejemplo, D18 y H13 son los
botones izquierdos y derecho respectivamente mientras que F9 es el primer led, sobre la misma
placa están impresos los pines a los que corresponde cada elemento. Para mas información sobre la
disposición de los pines consultar el datasheet de la placa. Además de esto también podemos setear
si las entradas/salidas son pullup, pulldown o keeper, en nuestro caso seleccionaremos pulldown
para los botones.
9
Luego de seleccionar los pines correspondientes, guardamos y nos pedirá que
seleccionemos el IO Bus Delimiter, elegimos el XST Default.
Alternativamente, se puede escribir la designación de pines a mano. Esta opción es la
recomendada ya que es la más rápida. El archivo tiene extensión “.ucf”. La designación estándar de
la placa se encuentra en la User Guide de Xilinx (en el último apéndice). Es recomendable copiar de
allí todos los puertos que se vayan a utilizar.
Lo siguiente que debemos hacer es implementar el diseño por medio de Generate
Programming File
10
Una vez concluida la implementación del diseño debemos configurar el dispositivo. Para
poder realizar este paso debemos previamente conectar la placa de desarrollo a algún puerto USB
de la PC.
Con los drivers ya instalados ejecutamos el paso Configure Target Devide.
En la primera ventana que aparece pediremos que identifique automáticamente el
dispositivo
.
11
Luego debemos ingresar el archivo que cargaremos en el dispositivo. (en nuestro ejemplo
miand2.jed). A continuación aparecerán dos ventanas iguales a estas a las cuales le daremos
cancelar. La primera ventana pide el archivo a cargar en el FPGA, la segunda el que se cargará en el
PROM y el último en el CPLD. Si se carga un archivo en el FPGA, este perderá la configuración
cuando pierda energía. Si se requiere que la configuración sea persistente, se debe preparar un
archivo PROM, esto se verá más adelante.
NOTA: No sobreescribir la configuración del CPLD
12
En la siguiente ventana que se abrirá simplemente le daremos OK
13
Y por último, haciendo click derecho sobre el dibujo del primer integrado, elegiremos
Program.
ESQUEMÁTICOS
Otra forma que tenemos para unir todos los bloques descriptos es por medio de bloques
esquemáticos.
Como paso previo debemos hacer doble click en Design Utilities -> Create Schematic
Symbol para cada entidad que queramos utilizar.
14
Luego debemos crear un nuevo Source y seleccionamos Schematic, esto nos abrirá un
nuevo entorno de edición.
15
En la ventana Sources -> Symbols tendremos a nuestra disposición varios bloques que
ya trae el ISE y los bloques que acabamos de crear.
Una vez agregados los bloques podremos ir interconectándolos por medio de cables o
16
buses. Para marcar salidas o entradas de pines debemos agregar I/O Markers
SIMULACIÓN
En la ventana Sources cambiar Sources for a Behavioral Simultion.
17
Clickear New Source y agregar una nueva Test Bench Waveform (en este ejemplo le
pondremos como nombre “miand_test”)
Al clickear Next nos parecerá una ventana donde tendremos que elegir con que código
fuente se asocia esta simulación (en el ejemplo con “miand”).
Al finalizar el dialogo anterior, nos aparecerá un nuevo dialogo donde configuraremos los
relojes del sistema y el tiempo de simulación. Tenemos tres formas de configurar los relojes, Single
Clock, Multiple Clocks y Combinatiorial.
18
Nota: Desactivar Global Signals nos deja editar los primeros 100ns (según imagen) de la
simulación.
● Single Clock
○ Al seleccionar Single Clock debemos indicar cual de las entradas definidas en el
código VHDL es la entrada de reloj .
○ En la sección Clock Timing Information debemos definir como es dicha entrada.
Los parámetros que debemos llenar en esta ultima sección se encuentran detallados
en el dibujo que contiene el dialogo.
● Multiple Clocks
○ Al continuar con el dialogo se nos pedirá cuales son las entradas de reloj y la
configuración de las mismas.
● Combinatorial
○ Debemos configurar los tiempos donde se ingresa la información según el dibujo del
dialogo y finalizar la operación.
○ Una vez echo esto, se abrirá el editor de señales.
○ En el editor de señales podremos configurar las señales de entrada haciendo click
19
sobre ellas (A y B en el ejemplo). Nótese que las salidas no se pueden editar.
○ Una vez configuradas las señales, guardamos los cambios.
Luego tendremos que pedir la simulación y revisar los resultados del a misma.
20
21