Duda novato. Se borra el codigo VHDL al apagar la placa.

430 views
Skip to first unread message

spamfull...@gmail.com

unread,
Aug 25, 2017, 10:48:22 AM8/25/17
to FPGAwars: explorando el lado libre
Hola buenas tardes. Estoy a la espera de poder adquirir una Icezum Alhambra, como muchos usuarios de este foro, y gracias a un amigo he comenzado a experimentar el mundo de las FPGA con una altera cyclón IV que me ha dejado. La duda viene, que siguiendo tutoriales muy básicos, como crear una puerta AND en VHDL, al cargar el código en la FPGA , funciona, pero al hacer un reset o al apagar la placa el código se borra. He leído en algún hilo, que las FPGA's guardan el código en una memoria volátil y que es necesario una memoria externa SD para guardar el código. Es correcto que esta manera de almacenar el código en las FPGA's es en una memoria volátil? El funcionamiento de la Icezum Alhambra es así? Al no tener memoria externa SD, el código se pierde al apagar la placa? Muchas gracias de antemano.

Juan José Luna Espinosa

unread,
Aug 25, 2017, 11:55:07 AM8/25/17
to fpga-wars-explora...@googlegroups.com
Sí, la configuración de las FPGA es volátil (aunque hay algunos hibridos FPGA - CPLD que no son volátiles)

Sin embargo, en la Alhambra, como en muchas placas de desarrollo, hay un chip flash SPI que guarda la configuración. Este, unido al chip "serial USB", permite guardar la configuración usando el software de PC (icestudio o apio). Justo después de grabarse la configuración en la flash, el chip serial USB reinicia la fpga y ésta carga el nuevo "programa" o circuito sintético desde la flash, ejecutándose acto seguido. Si apagas la Alhambra y la vuelves a encender, se cargará de nuevo lo que haya en la flash.

Algunos compañeros del grupo estuvieron investigando cómo meter muchos programas en la flash (creo que lo consiguieron)


El 25 de agosto de 2017, 16:48, <spamfull...@gmail.com> escribió:
Hola buenas tardes. Estoy a la espera de poder adquirir una Icezum Alhambra, como muchos usuarios de este foro, y gracias a un amigo he comenzado a experimentar el mundo de las FPGA con una altera cyclón IV que me ha dejado. La duda viene, que siguiendo tutoriales muy básicos, como crear una puerta AND en VHDL, al cargar el código en la FPGA , funciona, pero al hacer un reset o al apagar la placa el código se borra. He leído en algún hilo, que las FPGA's guardan el código en una memoria volátil y que es necesario una memoria externa SD para guardar el código. Es correcto que esta manera de almacenar el código en las FPGA's es en una memoria volátil? El funcionamiento de la Icezum Alhambra es así? Al no tener memoria externa SD, el código se pierde al apagar la placa? Muchas gracias de antemano.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/e61d4b51-5e7d-4e1d-918a-ab970c8a4aa5%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juan Gonzalez Gomez

unread,
Aug 25, 2017, 12:02:45 PM8/25/17
to FPGA-WARS: explorando el lado libre
Hola,

La mayoria de las placas con las fpgas ice40 tienen una flash para almacenar el bitstream, de manera que al quitar la alimentación no, se pierde. Al volverla a encender (o hacer un reset) el bitstream se carga en la fpga (el tiempo de configuración es de 100ms)

Yo todas las que usamos en este grupo la tienen: icestick, alhambra, kéfir, go-board, icoboard... tienen esta flash

Saludos, Obijuan

El 25/8/2017 16:48, <spamfull...@gmail.com> escribió:
Hola buenas tardes. Estoy a la espera de poder adquirir una Icezum Alhambra, como muchos usuarios de este foro, y gracias a un amigo he comenzado a experimentar el mundo de las FPGA con una altera cyclón IV que me ha dejado. La duda viene, que siguiendo tutoriales muy básicos, como crear una puerta AND en VHDL, al cargar el código en la FPGA , funciona, pero al hacer un reset o al apagar la placa el código se borra. He leído en algún hilo, que las FPGA's guardan el código en una memoria volátil y que es necesario una memoria externa SD para guardar el código. Es correcto que esta manera de almacenar el código en las FPGA's es en una memoria volátil? El funcionamiento de la Icezum Alhambra es así? Al no tener memoria externa SD, el código se pierde al apagar la placa? Muchas gracias de antemano.

--

Joan Martinez

unread,
Aug 27, 2017, 10:24:46 AM8/27/17
to FPGAwars: explorando el lado libre
Muchas gracias por vuestras respuestas, y problema solucionado! Volví a mirar, las especificaciones de la placa, y observé, que incluía una memoria SPI FLASH, solo que no sabía como acceder a ella. Despues de investigar, esta placa lleva incorporado un conector Active Serial, del mismo tamaño que el conector JTAG, y a través de ese conector grava la memoria SPI FLASH. Muchas gracias!

Juanma Rico

unread,
Aug 28, 2017, 12:48:39 PM8/28/17
to FPGAwars: explorando el lado libre

Efectivamente, Juan José tiene razón. Se consiguió. :)

La propia estructura del chip de Lattice permite elegir entre cuatro bitstream distintas, externamente mediante dos pines (sin acceso en la IceZum Alhambra) e internamente mediante un módulo presintetizado. Lattice lo llama Cold boot y Warm boot respectivamente. En este largo hilo podéis encontrar los avances de esta característica tan interesante:

[iceZUM Alhambra v1.1][Cold boot]

El nombre del hilo es confuso, ya que no es una característica única de la iceZum Alhambra, ni únicamente se trata el Cold boot (también se trata el Warm boot), pero como se descubrió usando una Alhambra (la placa, no la cerveza... la cerveza era Victoria... :P) y se pensaba que únicamente existía el Cold boot... pues así se quedó (en el hilo podéis ver todos esos momentos épicos de descubrimientos).

No estoy disponiendo ultimamente de mucho tiempo para dedicarle a la FPGA, pero en cuanto pueda actualizo la documentación de github para dejarlo más accesible a los que empezáis y disponéis (o dispondréis) de una IceZum Alhambra para experimentar.

Por ahora solo está ese hilo, creo que un notavo se vería abrumado con el hilo (o no, depende de lo que le interese el tema... yo también empecé siendo novato en este tema... como todos imagino...).

Se escribe mucho en él (es un hilo largo) y se hablan de muchos conceptos distintos que provienen de otros hilos... de todas formas yo tengo puesta una alarma y aunque no puedo seguir todo el grupo, si alguien tiene una pregunta concreta sobre esta característica de la FPGA de Lattice no tiene más que preguntar en el mismo hilo (sin miedos) que yo encantado respondo lo que sea capaz... y sino, seguro que hay alguien que puede responder.  :)

Los últimos avances consistieron en poder intercambiar las imágenes sin más que escribir el primer sub-bloque de la memoria flash (apenas unos segundos), siempre que de antemano hayamos compactado todos los bitstreams en una primera grabación de unos minutos (se grabaron todos los bitstreams del tutorial de Obijuan y aún sobraba más de la mitad de la memoria, imaginaros la potencia de esta característica), para eso hay que recompilar un par de programas modificados del proyecto icestorm (no es difícil) y usar la carga del bitstream desde consola mediante parámetros.

Por supuesto estos cambios no están en la rama principal del proyecto icestorm (estoy pendiente de ordenarlo y hacer un pull-request al proyecto), ni tampoco está integrado en apio, ni por supuesto en icestudio, con lo que se sale un poco de la categoría y ámbito del "novato", pero insisto, no es difícil.

Mi falta de tiempo me tiene con el SAV muy alto, pero no puedo hacer nada para calmarlo de momento... así que yo encantado de que alguien se enganche al tema... :)

Os dejo con dos enlaces de este hilo, donde se anuncia la nueva posibilidad de intercambiar los vectores:

[Funcionalidad para intercambiar los vectores]

Y donde se incluyen todos los bitstreams de los tutoriales de Obijuan... Creo que eran unos 50 y en la memoria había sitio para 127.

[Tutoriales en una única imagen]

El siguiente pasito que se quería dar en el proyecto era poder modificar la cabecera de la flash desde la propia FPGA (es un simple protocolo SPI), con lo que podríamos elegir los bitstreams desde la propia FPGA (cambiando el circuito sintetizado con un simple reset) sin necesidad de una conexión por el puerto serie al PC (o Mac).

Esto ya se hizo con cuatro imágenes sintetizadas (están los ejemplos ya preparados en el hilo), pero imaginaos la potencia de nuestra placa si se pudiera hacer con 127 bitstream distintos y sin conexión al PC, pulsando un simple botón de selección se podría convertir nuestra placa en el circuito que queramos en el momento que queramos... además de disponer de la propia memoria flash como sistema de almacenamiento externo mediante el protocolo SPI implementado en la propia FPGA... :)

En cuanto disponga de tiempo, en el TODO queda por generar el módulo SPI para leer directamente desde la flash, lo dejé a mitad y sería un gran paso para aprovechar adecuadamente las caracterísiticas de la placa (que anda cortita de memoria, por cierto).

Os dejo también el enlace por si os queréis animar a sintetizar este módulo SPI en la FPGA.

[iceZUM Alhambra v1.1][SPI] Comunicando con nuestra flash (N25Q032A).

Saludos (volveré... :D).


El viernes, 25 de agosto de 2017, 17:55:07 (UTC+2), Juan José Luna Espinosa escribió:
Sí, la configuración de las FPGA es volátil (aunque hay algunos hibridos FPGA - CPLD que no son volátiles).

....

Juan José Luna Espinosa

unread,
Aug 28, 2017, 2:08:46 PM8/28/17
to fpga-wars-explora...@googlegroups.com
Gracias por la aclaración, Juanma.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Aug 28, 2017, 2:54:42 PM8/28/17
to FPGAwars: explorando el lado libre

De nada Juan José, una pena no poder seguiros como me gustaría.

He echado un vistazo rápido al grupo y veo que en este tiempo (casi tres meses ya) Salvador sigue haciendo avances con las "tripas" de yosys y arachne (que, por cierto, es chino para mi... y que estoy loco porque consiga hacer funcionar las puertas tri-estado en condiciones... su mal funcionamiento en su día hizo que frenara en seco el proyecto msc-4 que empecé con muchas energías al estudiar el Simplez-F y en el que me topé con el estado del bus compartido del c4004... y me terminó aburriendo) y veo que también se ha animado con las "tripas" de iceStudio... facilitándome la vida a mi y a todos los usuarios de Debian empaquetándolo todo y haciendo propuestas "profundas" a Jesús sobre la herramienta... (Gracias Salvador, :D), Obijuan con sus módulos, sus tutoriales y charlas, creando adictos y subiendo el SAV allá por donde va,... como siempre (por cierto Juan, te faltó llegar al nivel de los fermiones y bosones en el átomo de silicio... ¡¡Imperdonable!!... ;D), Jesús con su iceStudio, manteniendo la herramienta (que ya es trabajo) y "enganchando" a más y más gente con la sencillez con la que se crean los circuitos de esta forma gráfica... perfecto. ;)

¡¡Y veo que Eladio se ha hecho con un Pick&Place!!... ¡¡guauuuu!!
Ya no tienes excusa Eladio, a partir de ya, hay que estudiar el comprar directamente las 4k... (y más sabiendo que en realidad es una 8k), rediseñar y pasar a la v1.2 de la iceZum Alhambra... (no te olvides en la nueva versión los pines del Cold boot...) jejejeje :D

Y muchos de vosotros abriendo nuevas posibilidades... con matemáticas, juegos de lógica,... aprendiendo en definitiva... ¡Qué envidia me dáis!

Especialmente estoy interesado en el hilo de las neuronas implementadas en la FPGA, es un campo que llevo tiempo investigando y hasta ahora únicamente lo había hecho en módulos con el chip ESP8266. Una tinyFPGA que he visto de pasada en otro de los hilos sería ideal para sustituir estos pequeños módulos por un circuito reconfigurable en la FPGA y así poder interconectarlas (esperemos sean "libres" cuanto antes)... en fin, que ojalá pronto pueda estar otra vez con tiempo y aportando lo que pueda con vosotros al grupo...

Un saludo a todos

Juan José Luna Espinosa

unread,
Aug 28, 2017, 3:16:59 PM8/28/17
to fpga-wars-explora...@googlegroups.com
Hola, yo también he hecho cosillas con los ESP8266 y más recientemente con el ESP32. Estos bichos baratos (3$) con conectividad WiFi unidos a una FPGA pueden hacer maravillas.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Aug 28, 2017, 3:46:55 PM8/28/17
to FPGAwars: explorando el lado libre

Esta tarde estoy con un poco de tiempo, me he enganchado al grupo y estoy parlanchín,... disculpas a los creadores de este hilo por el chat improvisado... :)

Pero sí, yo estoy encantado con el ESP8266, le estoy sacando mucho provecho. He visto que el "nuevo" ESP32 trae un módulo de BLE y ya me he pedido varios baratitos a China... no sé cuando podré ponerlo en marcha pero así, comprando, al menos calmo el SAV (afortunadamente tardan un mes en llegarme y luego se me olvida en la estantería... ;D), ya te preguntaré que "cosillas" has hecho con él... pero por curiosidad y no alargar el hilo más de lo necesario... solo preguntarte... ¿Cómo los programas?¿has usado la plataforma de Arduino?¿Usas alguno de los SDK de Espressif?¿Qué SDK? ¿El NOOS-SDK?¿El RTOS-SDK?¿Algún otro que yo no conozca y merezca la pena? :))

Saludos.

Pdta: Cualquier cosa conectada a una FPGA se convierte en una maravilla.... :P

Juan José Luna Espinosa

unread,
Aug 28, 2017, 5:08:09 PM8/28/17
to fpga-wars-explora...@googlegroups.com

He ido a lo fácil y uso platformio, que ya te instala todo el toolchain y las librerias. Viene a ser como apio pero para microcontroladores.

Yo uso Netbeans (de momento) así que creo un directorio y hago en él  "platformio init --ide netbeans --board lolin32" similarmente a apio. Existe el "Platformio IDE" que lo hace todo todavía más fácil, aunque yo estoy acostumbrado a Netbeans. Para programar se hace "platformio run --target upload".

Por defecto te coge la plataforma (librerías) Arduino pero puedes usarlas todas e incluso mezclarlas. Te baja el repo de github de las librerías Espressif y te detecta actualizaciones cada vez que compilas.

Respecto a lo que he hecho, de momento programar un servidor HTTP y Websockets. No encontraba ninguna librería que implementara websockets (en el 8266 sí pero no en el 32).

Consigo 1,3 MBytes/s de transferencia esp32 --> PC/movil/portatil etc, lo cual ya me da para vídeo. (unas 40 tramas de 32 KB por segundo) Pretendo hacer un robotillo que tenga una cámara OV5642 (1080P, unos 20 euros, enanísima) que sirva en su propia WiFi una app HTML5 para controlarlo, ver el vídeo de la cámara... Y por supuesto contar con una FPGA en el robot para que capture y procese el vídeo. Le añado una pinza con servo y ya puedo trastear con algoritmos que detecten latas pintadas... :-)

Saludos

Pdata: Cierto!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Aug 29, 2017, 4:44:12 AM8/29/17
to FPGAwars: explorando el lado libre

Bueno, lo fácil, fácil es irse al IDE de Arduino, creo... :)
Netbeans+Platformio, eso ya es algo distinto para mi... hummmm.... ¡me lo apunto! :P
y la cámara será lo siguiente que caiga en la mochila... :)

Saludos



El lunes, 28 de agosto de 2017, 23:08:09 (UTC+2), Juan José Luna Espinosa escribió:

He ido a lo fácil y uso platformio, que ya te instala todo el toolchain y las librerias. Viene a ser como apio pero para microcontroladores.

Yo uso Netbeans (de momento) así que creo un directorio y hago en él  "platformio init --ide netbeans --board lolin32" similarmente a apio. Existe el "Platformio IDE" que lo hace todo todavía más fácil, aunque yo estoy acostumbrado a Netbeans. Para programar se hace "platformio run --target upload"
.......

Juan José Luna Espinosa

unread,
Aug 29, 2017, 10:01:50 AM8/29/17
to fpga-wars-explora...@googlegroups.com
A ver si se deja dominar esta cámara. Lo complicado es la secuencia de comandos de inicialización. Ya la he recibido, solo hay que ponerse :-)

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Aug 29, 2017, 1:43:24 PM8/29/17
to FPGAwars: explorando el lado libre

Seguro que sí, que se deja... y si no se deja ahí estás tú...  :)))

Saludos.

Eladio Delgado

unread,
Aug 30, 2017, 11:29:46 AM8/30/17
to FPGAwars: explorando el lado libre
Hola de nuevo Juanma,

Tenemos Pick&Place y esperamos tener placas más rápido :-)

La próxima versión lleva la 4K, eso seguro y los pines para el cold boot habrá que encontrar sitio para ponerlos como sea :-) es una característica muy interesante y muy útil para demostrar las posibilidades de las FPGAs.

Saludos,
Eladio


El 28 de agosto de 2017, 20:54, Juanma Rico <juan...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Aug 30, 2017, 11:45:33 AM8/30/17
to FPGAwars: explorando el lado libre
Para qué has dicho nada... ¡SAV a tope y subiendo! ¡Apúntame ya la primera de esa tirada! jajajajaja

Espero con impaciencia. :)))
Saludos.
Reply all
Reply to author
Forward
0 new messages