sromero escribió:
¿Cómo están implementados los cores en la FPGA? Me refiero al tener más de un core en la misma placa... ¿están, digamos, en diferentes "partes" de la "superficie" de la FPGA y se "alimenta" uno u otro según el seleccionado? ¿Se flashea en cada arranque el core del sistema elegido?
La FPGA se "programa" toda entera de una vez. Por defecto siempre está vacía (su "contenido" se borra cuando deja de tener corriente).
La FPGA tiene incorporado un sistema de carga del bitstream (el archivo, o "chorizo" de bits que necesita la FPGA para configurarse, o "llenarse" de un diseño de hardware), mediante un bus SPI. Nada más proporcionarle corriente, la FPGA se configura con el contenido (parte de el) de la FLASH SPI que hay incorporada en la placa.
La flash que nosotros hemos puesto, es de 4 Megabytes (32Mbits), y el tamaño de los bitstreams es de 336K. Hemos organizado la Flash de tal manera que, entre otras cosas, podemos tener 9 cores grabados en la misma, y desde uno de los cores (en nuestro caso el de Spectrum, que es el primero en arrancar, y el primero que encuentra la FPGA cuando se enciende), cuando queremos cambiar de core, le decimos a la FPGA que lea de X offset de la Flash y se reconfigure con su contenido, y luego haga un reboot. Entonces la FPGA se "llena" con el contenido del nuevo bitstream y empieza a comportarse como una nueva máquina.