Nuevo sistema Multicore para el UnAmiga

Dónde poder conseguir la placa, cómo construirla tu mismo, reparaciones, modificaciones, proyectos derivados

Moderador: jepalza

Responder
benitoss
PLA
Mensajes: 43
Registrado: 07 Oct 2018, 04:53

Nuevo sistema Multicore para el UnAmiga

Mensaje por benitoss » 01 Jun 2019, 06:08

LLego el dia, por fin tenemos el sistema multicore que tanto deseabamos para nuestro querido UnAmiga.
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.
MC_Amiga_proto.jpg
MC_Amiga_proto.jpg (110.54 KiB) Visto 13781 veces

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)
2) Lector de tarjetas micro SD donde iran los cores

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)
stm32_pines_UnAmiga.png
stm32_pines_UnAmiga.png (294.15 KiB) Visto 13781 veces
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
STM32 - Lector de SD --> Para simplificar puede utilizar un adaptador de tarjetas micro-SD a SD. En el siguiente diagrama, puedes ver las conexiones de la SD
sdcard-pinout.png
sdcard-pinout.png (109.6 KiB) Visto 13781 veces
Conexiones para el lector de SD

Código: Seleccionar todo

 TM32         Lector SD
-------------------------------
PA4     —>    SS/CS
PA5     —>    SCK
PA6     —>    MISO
PA7     —>    MOSI
Conexion STM32 al JTAG
Conecta los cables desde la STM32 siguiendo el diagrama de la web:
http://www.zxuno.com/forum/viewtopic.php?t=432
jtag.png
jtag.png (10.37 KiB) Visto 13781 veces

Código: Seleccionar todo

 TM32       JTAG FPGA
-------------------------------
PB0     —>   TCK
PB1     —>   TDI
PB10    —>   TMS
PB11    —>   TDO
VCC3.3  —>   VCC
GND     —>   GND
Instalacion Del Software

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
MC_Amiga_menu1.jpg
MC_Amiga_menu1.jpg (30.71 KiB) Visto 13781 veces
Al introducir la tarjeta apareceran un listado de cores.
MC_Amiga_menu2.jpg
MC_Amiga_menu2.jpg (65.7 KiB) Visto 13781 veces
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:
Multicore_UnAmiga.zip
(458.58 KiB) Descargado 551 veces
Última edición por benitoss el 16 Oct 2019, 01:12, editado 1 vez en total.

benitoss
PLA
Mensajes: 43
Registrado: 07 Oct 2018, 04:53

Re: Nuevo sistema Multicore para el UnAmiga

Mensaje por benitoss » 21 Jun 2019, 18:40

benitoss escribió:
01 Jun 2019, 06:08
LLego el dia, por fin tenemos el sistema multicore que tanto deseabamos para nuestro querido UnAmiga.
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.

Este desarrollo se testeo en este sistema.
MC_Amiga_proto.jpg


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)
2) Lector de tarjetas micro SD donde iran los cores

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)

stm32_pines_UnAmiga.png

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
STM32 - Lector de SD --> Para simplificar puede utilizar un adaptador de tarjetas micro-SD a SD. En el siguiente diagrama, puedes ver las conexiones de la SD

sdcard-pinout.png

Conexiones para el lector de SD

Código: Seleccionar todo

 TM32         Lector SD
-------------------------------
PA4     —>    1. SS/CS
PA5     —>    5. SCK
PA6     —>    7. MISO
PA7     —>    2. MOSI
GND     —>    3. MOSI
GND     —>    6. MOSI
3.3v    —>    4. VCC(3.3v)
Conexion STM32 al JTAG
Conecta los cables desde la STM32 siguiendo el diagrama de la web:
http://www.zxuno.com/forum/viewtopic.php?t=432
jtag.png

Código: Seleccionar todo

 TM32       JTAG FPGA
-------------------------------
PB0     —>   TCK
PB1     —>   TDI
PB10    —>   TMS
PB11    —>   TDO
VCC3.3  —>   VCC
GND     —>   GND
Instalacion Del Software

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
MC_Amiga_menu1.jpg

Al introducir la tarjeta apareceran un listado de cores.
MC_Amiga_menu2.jpg

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: Multicore_UnAmiga.zip

antoniovillena
GAL
Mensajes: 85
Registrado: 17 Ago 2018, 10:09

Re: Nuevo sistema Multicore para el UnAmiga

Mensaje por antoniovillena » 05 Jul 2019, 16:57

Ya estoy repartiendo los addon multicore. Para los que tengáis carcasa es necesario hacer una ranura para la nueva microSD. Yo lo he hecho con una dremel y un disco, pero también se puede con una broca o una lima de mano.
Adjuntos
photo_2019-07-05_16-54-43.jpg
photo_2019-07-05_16-54-43.jpg (148.18 KiB) Visto 13515 veces
photo_2019-07-05_16-55-18.jpg
photo_2019-07-05_16-55-18.jpg (64.11 KiB) Visto 13515 veces
photo_2019-07-05_16-55-25.jpg
photo_2019-07-05_16-55-25.jpg (133.23 KiB) Visto 13515 veces

pitercio
Veroboard
Mensajes: 7
Registrado: 17 Ago 2018, 19:10

Re: Nuevo sistema Multicore para el UnAmiga

Mensaje por pitercio » 09 Jul 2019, 18:27

Recibido y en uso!! Solo comentar que la caja que diseñó Edu Arana al principio del proyecto no es necesario modificarla, la nueva ranura SD del addon coincide con la ranura para el cable del USB-Blaster rotulada "JTAG".

Enhorabuena por el resultado, Antonio y Fernando!!

Uto
PLA
Mensajes: 20
Registrado: 25 Ago 2018, 12:01

Re: Nuevo sistema Multicore para el UnAmiga

Mensaje por Uto » 24 Ago 2019, 16:07

Acabo de descubrir una cosilla curioseando por los fuentes del firmware del SMT32: se pueden tener carpetas en la SD. Para ello eso sí, las carpetas también tionen que tener la extensión .rbf.

Es decir si queréis tener una carpeta "arcades" pues en la sd le llamais a la carpeta "arcades.rbf"

Ah! Y esta lo mismo alguno os habéis dado cuenta ya, pero los cursores derecho e izquierda hacen de AvPg/RepG en la lista de cores.

Monstronio
PLA
Mensajes: 25
Registrado: 01 Sep 2019, 21:59

Re: Nuevo sistema Multicore para el UnAmiga

Mensaje por Monstronio » 13 Oct 2019, 19:30

It is necessary to add to the first post that RBF files can be obtained by converting SOP to RBF in Quartus using the built-in converter (File -> Convert programming files).

The device is very easy to assemble and very compact. The problem may be the Chinese programmer ST-Link2. It is better to use USB to UART converter + FLASHER-STM32.
Adjuntos
IMAG0205.jpg
IMAG0205.jpg (2.28 MiB) Visto 12848 veces
IMAG0206.jpg
IMAG0206.jpg (2.44 MiB) Visto 12848 veces
IMAG0207.jpg
IMAG0207.jpg (2.23 MiB) Visto 12848 veces
IMAG0208.jpg
IMAG0208.jpg (2.07 MiB) Visto 12848 veces
IMAG0209.jpg
IMAG0209.jpg (2.1 MiB) Visto 12848 veces
IMAG0214.jpg
IMAG0214.jpg (1.77 MiB) Visto 12848 veces
IMAG0220.jpg
IMAG0220.jpg (1.62 MiB) Visto 12848 veces

benitoss
PLA
Mensajes: 43
Registrado: 07 Oct 2018, 04:53

Re: Nuevo sistema Multicore para el UnAmiga

Mensaje por benitoss » 16 Oct 2019, 01:17

Monstronio escribió:
13 Oct 2019, 19:30
It is necessary to add to the first post that RBF files can be obtained by converting SOP to RBF in Quartus using the built-in converter (File -> Convert programming files).

The device is very easy to assemble and very compact. The problem may be the Chinese programmer ST-Link2. It is better to use USB to UART converter + FLASHER-STM32.
Yes you are right, I have already updated the information of RBF files in the first message. Thanks !!
The ST-Link2 has a big advantage, you do not need to remove the yellow jump to program the ST32M board. but, it is true you can program the board through the UART serial pins.

Fantastic work !!!!

Responder

Volver a “Hardware”