Images

Introducción al kit Open3S250E (11): Programación de la FPGA (I)

Procedemos a la programación de la FPGA.

Ahora dejamos el PlanAhead, y volvemos al ISE Project Navigator. Pero para el paso que vamos a dar es importante asegurarse que el interruptor de alimentación de la placa Core3S250E esté en ON. 



Una vez asegurado que la placa está alimentada, vamos al ISE Project Navigator y comprobamos que en el campo “Top Module” sigue escrito LEDA_blog y en la ventana Hierarchy está seleccionado el archivo LEDA_blog.vhd. Después vamos a la ventana “Process LEDA_blog” y con ayuda del scroll buscamos la opción “Configuration Target Device”. 



Hacemos doble clic en “Configure Target Device”.

Observamos que se van ejecutando automáticamente pasos anteriores como la Synthesis, el Implement Design y el Generate Programming File. No preocupar se si sale en algún paso sale un triangulo amarillo con un signo de admiración negro dentro, es sólo un warning o advertencia que en este caso no tendrá consecuencias significativas (otra cosa es si saliera un circulo rojo que es error y nos obliga a revisar que hemos hecho mal).

Después de unos segundos, nos aparece el siguiente cuadro de diálogo dónde tenemos que dar a OK.



Esto lanzará una nueva ventana del paquete de software de XILINX instalado llamado ISE iMPACT.



Con el ISE iMPACT es como finalmente programamos el hardware.

Hacemos doble clic en “Boundary Scan”:



Se tiene:



En el area principal con la etiqueta “Boundary Scan” (como se observa en la anterior figura), aparece justo en el centro en azul un mensaje que dice así:

Right click to Add Device or Initialize JTAG chain

Situamos el cursor encima de este mensaje y pulsamos el botón derecho del ratón, nos aparecerá un desplegable y en el hacemos clic en “Initialize Chain”.

Como resultado tenemos:



Hacemos clic en “Yes”, obteniendo:



Ahora tenemos una nueva ventana, haciendo esta ventana tenemos que navegar hasta encontrar la ubicación de nuestro proyecto. Tal y como lo estoy haciendo en este tutorial estaría en:

C:\Users\Nombre_usuario\Desktop\Proyectos XILINX del blog\LED_blog




En dicho path encontramos un archivo (con color blanco en la figura anterior) llamado leda_blog.bit. Lo seleccionamos y pulsamos “Open”.


Tendremos como resultado que a la FPGA se le a asignado el archivo leda_blog.bit y que nos pide ahora que le asignemos algún archivo a la memoria flash. Por el momento hacemos clic en “No”. 




Finalmente hemos obtenido un cuadro de diálogo como el mostrado en la captura de pantalla anterior, y aquí es dónde haremos que la FPGA se pueda programar veamos como:


Activamos el casillero de Pulse PROG:



Seleccionamos Device 2 (PROM xcf02s). Si investigas en los links que te da waveshare (como el que ya dejé llamado www.waveshare.com/wiki/Open3S250E) puedes ver que el Open3S25E tiene una memoria flash de tipo xcf02s de 2 Megas de memoria.



Y activamos el casillero de Load FPGA.



Clic en OK.


Ahora hacemos clic en el dispositivo xc3s250e (leda_blog.bit).


Si nos fijamos en el área iMPACT Proceses -señalado en la imagen anterior- podemos observar que ahora tenemos una nueva operación disponible llamada Program.



Hacemos doble clic en Program y si todo ha ido bien verás como en el tarjeta hardware se van encendiendo sucesivamente los LEDs L4, L3, L2 y L1 (además de mantenerse encendido el FLAG_LED junto al PWR_LED que se enciende desde el momento que pones el interruptor de la tarjeta en ON). 



Si pulsamos el botón de la placa RESET, vemos que la secuencia de encendido de LEDs continua, 




Sin embargo si pulsamos el botón nCONFIG la secuencia se para apagando se todos los LEDs.


Esto sucede porque en realidad no hemos cargado el programa en la memoria flash que es una memoria no volátil (como si fuera una EEPROM por ejemplo). Hemos cargado directamente el programa en la RAM de la FPGA.
Cuando presionamos el RESET lo que hay en ese momento en la memoria volátil (como una RAM) se reinicia ejecutándose de nuevo el programa.
Sin embargo cuando se pulsa nCONFIG, es un tipo de re-iniciado diferente, es como si apagáramos la alimentación y la volviéramos a activar, como no hay nada en la memoria no-volátil, el resultado es que no actúa ningún programa.

En el siguiente apartado veremos como resolver esto.

También es importante señalar que normalmente puedes programar lo las veces que quieras, pero hay ocasiones en que al hacer clic en la operación Program falla. En ese caso suele arreglarse de una forma poco ortodoxa pero eficaz.
Se pone el interruptor de la placa en OFF, se desconecta el cable que viene del modulo (de color blanco) XILINX Platform Cable USB a el ordenador (mediante un terminal USB de este), y se vuelve a conectar al PC y se pone el interruptor de la placa de nuevo en ON.

ES el viejo método de desconectar el cable y volverlo a conectar, como a veces hacemos muchas personas con los routers cuando falla la conexión con Internet vía wifi. 

En mi caso el que se desconecta y se vuelve a conectar es el cable azul. 

0 comentarios: