Images

Introducción al kit Open3S250E (12): Programación de la FPGA (II)

Esta es la última entrada de una serie de entradas que forman un tutorial sobre como iniciarse en el manejo del kit Open3S250E. Este hardware puede ser muy útil para aprender sobre FPGAs.

Si estás interesado te recomiendo que empieces por la primera entrada. 

http://ecalamartronico.blogspot.com.es/2016/08/introduccion-al-kit-open3s250e-1_30.html

En el siguiente enlace el lector podrá ver que ahí se hace una breve descripción del hardware, en dicha descripción se incluyen los periféricos que vienen en los kits más completos.

http://www.waveshare.com/open3s250e-standard.htm


Dentro de esta página, también se describe el núcleo principal de todo el kit que es la placa Core3S250E (dónde se encuentra la FPGA de XILINX de tipo Spartan-3E).


En la mencionada página - la que se abre al hacer clic en el último enlace de este post, el de waveshare -,  encontramos los componentes principales de dicha tarjeta Core3S250E en dos figuras como las que muestro a continuación. 


Si ha ojeado la pagina, verá que justo debajo de las figuras hay una lista. 

En esa lista se da nombre a esos componentes -enumerados en las figuras-, y da sus características más importantes (la capacidad en Megabytes de la memoria flash, la velocidad del reloj... etc) :

Entre los distintos componentes encontramos –numerado como 5- el siguiente:

5- XCF02S, onboard FLASH-memory, for storing code. 

Es la memoria flash del sistema. Recordemos que las memorias flash (al igual que las ROM, EPROM o EEPROM), son memorias no-volatiles, es decir, su contenido se mantiene inalterado incluso aunque el sistema deje de alimentarse de corriente eléctrica (en las memorias volátiles, en esos casos se pierde el contenido).

Como las memorias flash son reprogramables, podemos usar un mismo dispositivo con dicha memoria no volátil (como puede ser un micro-controlador o una FPGA), un número grande de veces para programarlo y/o depurar el contenido, con todas las ventajas que esto conlleva.

 En este apartado vamos a hacer uso de la memoria flash mediante el ISE iMPACT. 

Además por si alguien está interesado en estudiar un poco más a fondo está tarjeta Core3S250E desde el punto de vista del esquema electrónico, dejo el siguiente enlace (también en inglés).

http://www.waveshare.com/wiki/Open3S250E 

Para tratar con la memoria flash volvemos a la interfaz gráfica del iMPACT: 

Hacemos clic en “Create Prom File (to Launch Mode)”:





Se lanza la siguiente ventana donde hacemos clic donde señalo:



Abrimos el desplegable del campo Storage Device Bits, y ahí seleccionamos “xcf02s” que es la memoria flash de la placa Core3S250E. 


Activamos la casilla Auto Select PROM. 



Tras ello hacemos clic en la siguiente flecha vertical verde que nos llevará al “Step 3”:




Hacemos clic en el icono con forma de carpeta:


Navegamos hasta situarnos en la carpeta LED_blog dónde estamos trabajando, 



Es decir al path:

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

Ahora clic en ok y rellenamos el campo “Output File Name”, dando le el nombre que queramos, conviene darle un nombre ilustrativo porque lo usaremos más adelante, yo le he llamado “flash_LEDA_blog”:



Clic en Ok.

Tenemos lo siguiente dónde haremos clic en OK en el cuadro de diálogo emergente:


Obteniendo un nuevo cuadro de diálogo dónde seleccionamos el archivo leda_blog.bit y hacemos clic en open:



En la siguiente ventana que nos aparece clic en NO:



Ahora clic en OK en la siguiente (aun tenemos otra ventana más que sólo nos da información). Nos queda lo que se muestra en la figura siguiente dónde haremos clic en la operación “Generate File...”.



Teniendo:



Hacemos clic derecho en el icono nombrado como xc17v01 (el de la PROM), aparece un mensaje con el titulo “Edit PROM” que a su vez nos da dos opciones: Modify PROM... y Delete PROM. Seleccionamos Modify PROM...



Con esto tenemos:



Veamos que hacemos con la ventana emergente “Add XILINX PROM”







Clic en OK y tenemos:


Se puede observar que la nueva PROM es una xcf02s que es exactamente la nuestra. Ahora volvemos ha hacer clic en Generate File:


Con esto ya hemos generado el archivo para la memoria PROM. 

Volvemos haciendo clic en su icono a la izquierda en la ventana iMPACT Flows en Boundary Scan y hacemos clic derecho el icono del xcf02s, al hacer esto sale una lista de opciones de la cual seleccionamos “Assign New Configuration File...”.





Se lanza una nueva ventana emergente dónde seleccionamos el archivo flash_LEDA_blog.mcs.




Clic en Open.

Con el icono de la memoria flash seleccionado (en color verde) hacemos clic de nuevo en Program.



Si pulsamos el botón nCONFIG del hardware, ahora vemos que el programa si se reinicia, esto es porque es esta ocasión si hemos programado la memoria flash y la información si se conserva.

Si deseas borrar la memoria flash bastaría con darle al icono correspondiente a Erase en el área de iMPACT Process, 



Luego verás que los LEDs se apagan, y si quieres puedes volver a programar la memoria flash o sólo la RAM de la FPGA, para comprobar como en un caso se pierde la información tras una apagado de la alimentación, y en otro caso no.

En resumen:

- El pulsador RESET, solo reinicia el chip FPGA manteniendo lo que hay en su memoria RAM.

- El pulsador nCONFIG, reinicia la tarjeta Core3S250E completa manteniendo lo que hay en la memoria flash de la tarjeta (si está vacía el resultado es que no se ejecuta ningún programa).

Aquí introduzco un clip de demostración:




Thats all folks!! (por el momento)




0 comentarios: