Se basa en el mismo sistema del Multicore 2 de Victor Trucco adaptado a nuestra FPGA.
Codigo fuente extraido del GitLAb de Victor Trucco para su maquina Multicore 2
https://gitlab.com/victor.trucco/Multic ... _firmware
https://gitlab.com/victor.trucco/Multic ... _STM32/SPI
Lo primero queria agradecer publicamente a victor Trucco su inestimable ayuda en la adaptacion del multicore al UnAmiga. Sin su brillante desarrollo y su ayuda en las etapas finales de la adaptacion, este upgrade no habria sido posible.
Atencion: Este sistema multicore trabaja con archivos RBF en vez de los tradicionales archivos SOF. Estos archivos RBF pueden ser creados convirtiendolos desde SOF a RBF en con el conversor interno integrado en Quartus (File -> Convert programming files).
Este desarrollo se testeo en este sistema.
Hardware
El sistema se basa en 2 elementos importantes y totalmente necesarios.
1) La STM32 o conocida vulgarmente como Blue Pill. Microcontrolador ARM Cortex de 32 bits STM32F103C8. Se encargara de dos cosas:
- Programar el UnAmiga con el core selecconado. Esto elimina la necesidad de usar el USB Blaster
- Generar el OSD en diferentes cores, incluido el core programador inicial de arranque del UnAmiga
- En cores avanzados cargara imagenes de archivos ROM a la SRAM. Por ejemplo en el core de Atari 2600, las ROMs se cargan asi (Se necesita la expansion SRAM)
Software
1) STM32_for_UnAmiga_MC.bin Es el fichero binario para la STM32 que tendremos que flashear en su memoria. Esto lo podemos hacer de diferentes formas.
2) UnAmiga_MC.jic Es el core programador inicial de arranque del UnAmiga. Este mostrara una lista de cores con extension RBF que son los binarios de los tradicionales archivos SOF de llevamos usando toda la vida.
Conexiones
STM32 - UnAmiga --> Se necesita conectar la STM32 mediante 7 cables o pines al UnAmiga y adidionalmente 6 cables mas a su JTAG (coge la alimentacion 3.3 volt del pin 4 del JTAG y el GND del pin 10)
Conexion SPI de STM32 - FPGA
Nota:
Los cables de conexion SPI han de ser lo mas cortos posibles para evitar problemas
Las conexiones RX y TX son opcionales y sirven para futuras actualizaciones de la STM32 desde un core especial para actualizarla, mas info aqui
Código: Seleccionar todo
TM32 FPGA
-------------------------------
PB12 (CS) —> P14
PB13 (SCK) —> P15
PB14 (MISO) —> R16
PB15 (MOSI) —> T15
PA9 (TX) —> R14
PA10 (RX) —> T14
Reset —> R13
Conexiones para el lector de SD
Código: Seleccionar todo
TM32 Lector SD
-------------------------------
PA4 —> SS/CS
PA5 —> SCK
PA6 —> MISO
PA7 —> MOSI
Conecta los cables desde la STM32 siguiendo el diagrama de la web:
http://www.zxuno.com/forum/viewtopic.php?t=432
Código: Seleccionar todo
TM32 JTAG FPGA
-------------------------------
PB0 —> TCK
PB1 —> TDI
PB10 —> TMS
PB11 —> TDO
VCC3.3 —> VCC
GND —> GND
1) Programa la STM32 con su archivo bin. Lo puedes hacer con un TLL-USb, o un programador ST-Link. Nuevo: O lo puedes hacer con el core STM32 Updater que pudes ver aqui
2) Programa el UnAmiga con el archivo JIC, esto dejara el core programador grabado en la SPI Flash del UnAmiga y al encender este se mostrara siempre este core prorgamador.
Si no has introducido ninguna tarjeta SD en el lector de tarjetas de la STM32 veras esto Al introducir la tarjeta apareceran un listado de cores. Podras seleccionar el core con los cursores del teclado y la tecla Enter o bien con las direcciones del Joystick y disparo.
Nota final: La expansion SRAM no es necesaria para el multicore pero si altamente recomendada por dos motivos :
1) para los futuros usos y expansiones que se haran ahora que disponemos de un ARM para generar el OSD
2) Al disponer de multicore tendras la oportunidad de difrutar de todos los cores y ya hay varios que solo funcionan con la expansion SRAM
Espero que disfruteis con este sistema. Ya no teneis escusas a la hora de probar nuevos cores
Archivos necesarios: