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).
....