[VGA][warm boot][icestudio] Proyecto screen-warmboot.

60 views
Skip to first unread message

Juanma Rico

unread,
Oct 7, 2017, 6:23:28 PM10/7/17
to FPGAwars: explorando el lado libre

Buenas a todos/as,

Como se acerca la OSHWDem y me han dicho que va a haber un stand con el logo de FPGAwars y un monitor VGA conectado a nuestra querida iceZum Alhambra. ;)
He conjugado los dos proyectos en uno, el de la serie "screen" con una simple demostración de las características del "Warm boot".

Para ello he creado este proyecto con dos nuevos bloques:



El bloque warmboot.ice tiene la misión de elegir entre las cuatro imágenes disponibles con el warm boot (sin necesidad de PC) y arrancarlas según se eligen. El bitstream que se va a cargar se muestra en binario en los tres bits menos significativos de los LEDs de la placa y además envía el número a un nuevo bloque (numbers.ice) que con la ayuda de la controladora lo muestra en el monitor VGA.

Los cinco bitstreams los he agrupado en uno y como se puede ver en el vídeo, al elegir el número con el botón 2, este carga el bitstream correspondiente. Un reset y volvemos al bitstream de selección.




Disculpad lo mal que se ve el vídeo, pero creo que la idea se aprecia. :))

Para generar el pack-screen.bin, que es el que finalmente se graba en la FPGA, he usado mi icemulti y iceprog modificados, que podéis encontrar en el hilo del "Cold/Warm Boot". Los comandos por si queréis hacer pruebas:



// Tras generar los cinco bitstream (yo los he renombrado de ~/.icestudio/.build/hardware.bin a los distintos nombres).
// Se empaquetan con el icemulti modificado.
$ ../icemulti -vn -p4 -o pack-screen.bin screen-bars.bin screen-leds.bin screen-logo.bin screen-heart.bin screen-warmboot.bin
Place image 0 at 001000 .. 008dec       screen-bars.bin.
Place image 1 at 008dec .. 010bd8       screen-leds.bin.
Place image 2 at 010bd8 .. 0189c4       screen-logo.bin.
Place image 3 at 0189c4 .. 0207b1       screen-heart.bin.
Place image 4 at 0207b1 .. 0285a1       screen-warmboot.bin.
Done.

// Se graba la imagen empaquetada en la iceZum Alhambra.
$ ../iceprog pack-screen.bin
init..
cdone: high
reset..
cdone: low
flash ID: 0x20 0xBA 0x16 0x10 0x00 0x00 0x23 0x54 0x82 0x46 0x06 0x00 0x56 0x00 0x29 0x19 0x01 0x16 0xA4 0xB5
file size: 165281
erase 64kB sector at 0x000000..
erase 64kB sector at 0x010000..
erase 64kB sector at 0x020000..
Programming..
reading..
VERIFY OK
cdone: high
Bye.


// Una vez grabado el pack en la FPGA se puede consultar de ella la lista de los 127 bitstreams.
// (En nuestro caso solo tenemos grabados 5 distintos.)
$ ../iceprog -l
init..
cdone: high
reset..
cdone: low
flash ID: 0x20 0xBA 0x16 0x10 0x00 0x00 0x23 0x54 0x82 0x46 0x06 0x00 0x56 0x00 0x29 0x19 0x01 0x16 0xA4 0xB5
Reading first subsector...
Vector 000: 0x0207B1 - screen-warmboot.bin (reset)
Vector 001: 0x001000 - screen-bars.bin (boot 0)
Vector 002: 0x008DEC - screen-leds.bin (boot 1)
Vector 003: 0x010BD8 - screen-logo.bin (boot 2)
Vector 004: 0x0189C4 - screen-heart.bin (boot 3)
Vector 005: 0x0207B1 - screen-warmboot.bin
Vector 006: 0x0207B1 - screen-warmboot.bin

----------

Vector 125: 0x0207B1 - screen-warmboot.bin
Vector 126: 0x0207B1 - screen-warmboot.bin
Vector 127: 0x0207B1 - screen-warmboot.bin
cdone: high
Bye.

Y con esto ya tenemos para mostrar los cuatro bitstreams seleccionando el número desde la propia pantalla VGA. :))

El enlace del proyecto por si queréis reproducir o generar un bitstream propio. https://github.com/juanmard/screen-warmboot
Se me ocurre que en el stand se puede dejar el monitor con dos botones conectados  a la iceZum Alhambra para que los curiosos elijan el bitstream... y vean las posibilidades de ambos proyectos.

Adjunto el pack-screen.bin por si queréis hacer una prueba rápida grabándola directamente con iceprog.

Saludos.
Juan Manuel Rico.



pack-screen.bin
Auto Generated Inline Image 1
Reply all
Reply to author
Forward
0 new messages