Emulación arcade con FPGA

dragonet80
Mensajes: 50
Registrado: 28 Nov 2017 12:36
Agradecido : 12 veces
Agradecimiento recibido: 15 veces

Emulación arcade con FPGA

Mensajepor dragonet80 » 20 Dic 2017 17:29

Hola, esta consulta es para expertos en creación/modificación de cores en la FPGA. No se si tendría que ir a un lugar más técnico, como ZXUno.com, pero he visto que hay gente del foro de allí que también está por aquí, así que pongo la consulta en este foro y si hace falta ya lo cambio.

Quiero hacer un emulador (con FPGA claro) que pueda con placas arcade de los 90, por ejemplo el Snow Bros Nick & Tom. He pedido una placa original (mejor dicho bootleg) por eBay para poder trabajar con ella y tenerla como referencia. En la página del proyecto Mame, lo usaré también de referencia,:
https://github.com/mamedev/mame/blob/ma ... owbros.cpp
puede verse que usa los siguientes micros:
M68000 a 8.000MHz
Z80B a 6.000MHz
YM3812 a 3.000MHz

Además tiene otros chips lógicos, pero supongo que, en comparación, ocuparán poco espacio. He buscado el core del M68000 y he encontrado esto:
https://www.xilinx.com/products/intelle ... oductspecs
https://opencores.org/project,ao68000
O sea, que ocuparía entre 5000 y 7000 LUTs aproximadamente.
Del Z80 he encontrado esto:
https://opencores.org/project,a-z80
Unos 2000 LUTs mas.
Del YM3812 solo he encontrado esto:
http://www.zxuno.com/forum/viewtopic.ph ... 7&start=10
No se como estará ese proyecto.

No tengo experiencia en este tema, pero me gustaria empezar. Lo máximo que he hecho son los tutoriales con la FPGA icezum Alhambra.

Me gustaría preguntaros qué FPGA necesito para este proyecto. La del ZXUno creo que se me queda pequeña. ¿La del Mist quizá? He visto una que me gusta mucho por su tamaño muy reducido:
https://www.tindie.com/products/KnivD/c ... rod_search
No se si me llegaría o también se quedaría corta.

Avatar de Usuario
Drtad
Mensajes: 482
Registrado: 19 Ago 2017 11:21
Agradecido : 39 veces
Agradecimiento recibido: 80 veces

Re: Emulación arcade con FPGA

Mensajepor Drtad » 20 Dic 2017 17:58

Primero empieza con los simuladores de hdl, yo uso los dos open de verilog, y una vez echa la placa que quieres SIMULAR, no emular, miras que consumo tienes y después de decantas por un FPGA como dices el del zx uno se antoja corto, el de la mist tal vez vaya mejor pero no sé, prueba con una placa de pruebas y a partir de ahí ya seleccionas el FPGA que necesites el integrado en sí no es caro, salvo excepciones, pero piensa que tienes que meter salida de vídeo entrada de datos, botones y palancas y demás, y eso necesita puertos o buses libres en el fpga, también tienes que tener en cuenta el tipo de memoria a usar, en fin son varias cosas, a sí que primero mejor empieza simulando con un simulador y después cuando tengas algo ya echo busca FPGA y componentes acordé con lo que necesitas, siento ser tan aguafiestas pero para que te hagas una idea el desarrollo del zx uno si mal no recuerdo llevo algo así como 5 años desde que se empezó hasta que salió el primer prototipo usable
A.N.O.N.I.M.O.X.: Artificial Networked Organism Normally for Intensive Mathematics and Online Xenocide

dragonet80
Mensajes: 50
Registrado: 28 Nov 2017 12:36
Agradecido : 12 veces
Agradecimiento recibido: 15 veces

Re: Emulación arcade con FPGA

Mensajepor dragonet80 » 20 Dic 2017 20:39

Gracias por contestar.

No sabía que había herramientas libres para simular, pensaba que tendría que bajarme les suites de cada fabricante, una vez elegida la fpga, y ponerme a trabajar con ellas. He buscado un poco y he encontrado estas herramientas:
https://en.wikipedia.org/wiki/List_of_HDL_simulators
Mucha información para un novato. ¿Podrías recomendarme algo? ¿Existe algo que sea estilo "visual"? Quiero decir, que no sea picar código, sinó que pueda ir cogiendo módulos ya creados y unirlos... Algo similar a lo que estamos haciendo en los tutoriales de obijuan, ¿no se si lo habrás visto?

¿5 años? Bufff, no pensaba que esto fuera tan complicado -banghead

Mira, para que se me vaya entendiendo un poco, lo que pretendo hacer es: Meter en un formato y tamaño similares a esto:
Imagen
pero con una FPGA que pueda sintetizar (se dice así, no?) placas de juegos arcade de una resolución máxima QVGA 320*240 y con diferentes modelos de cpus y memorias.

Tengo pedidas un par de pantallas lcd de 2,4" (sigo buscando de 2,2" pero no encuentro nada en protocolo rgb) y una idea del diseño del pcb. Lo de la FPGA quizá se me haga un poco cuesta arriba. Si alguien quiere colaborar en el proyecto, nada comercial, algo totalmente libre y por hobby, bienvenido será.

Avatar de Usuario
Drtad
Mensajes: 482
Registrado: 19 Ago 2017 11:21
Agradecido : 39 veces
Agradecimiento recibido: 80 veces

Re: Emulación arcade con FPGA

Mensajepor Drtad » 20 Dic 2017 22:23

Yo uso los basados en verilog, para hacer lo que quieres las resoluciones de los juegos que quieres son mayores...........para eso mejor y más barato usa raspberry o orange pi, que será más barato hace mucho tiempo cuando las viejas iban en moto me dio por desarrollar un sistema basado en Pic usando viejas tarjetas emuladores de canal satélite y vía digital cada tarjeta tenía un juego, me hice un prototipo era en b/N pero al final programar juegos en tan poco espacio y en ensamblador y en b/N no merecía la pena, pues la programación no es lo mío y lo deje abandonado, lo que tú quieres es más ambicioso pero yo lo haría con una pantalla algo más grande y aprovechando las resoluciones nativas de los juegos, aún así te digo va a ser largo y tedioso y si no tienes tiempo se te va a hacer eterno, no quiero desanimarte pero te digo lo que hay, para empezar bájate los fuentes de los arcades del zx uno y míralos con eso vas a aprender mucho y podrás hacerte una idea de cómo se hace y los arcades del zx uno son relativamente fáciles, alguien dijo de hacer el del soy Hunter y creo recordar que debido a todos los procesadores que llevaba le dijeron que para el zx uno no sería posible, lo dicho bájate los fuentes de los arcades que hay para FPGA y miralos

P.D me base en esto un proyecto de finales de los 90
http://www.rickard.gunee.com/projects/v ... amesys.php
A.N.O.N.I.M.O.X.: Artificial Networked Organism Normally for Intensive Mathematics and Online Xenocide

Avatar de Usuario
antoniovillena
Mensajes: 135
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 2 veces

Re: Emulación arcade con FPGA

Mensajepor antoniovillena » 21 Dic 2017 00:05

Drtad escribió:siento ser tan aguafiestas pero para que te hagas una idea el desarrollo del zx uno si mal no recuerdo llevo algo así como 5 años desde que se empezó hasta que salió el primer prototipo usable


El primer prototipo usable salió en 3 meses. También es verdad que la implementación de la ULA ya la tenía McLeod en entrenadora y yo solo tuve que escribir el firmware. Esto fue a finales 2013/comienzos 2014. Tres años después lanzamos el crowdfunding. Todos los protototipos (desde v1 hasta v4) han estado disponibles en formato kit para el que tuviese los conocimientos para soldarlo (es casi todo SMD).

Para el zxuno se han portado muchos arcades. Por ejemplo en este hilo hay 23:

http://www.zxuno.com/forum/viewtopic.php?f=60&t=1870

En general para sistemas de 16 bits el zxuno se queda corto y para sistemas de 8 bits hay recursos suficientes. Hace poco saqué un addon con conector jamma, así que si consigues crear o portar un arcade para el zx-uno, puedes verlo funcionar en un mueble arcade original.

Avatar de Usuario
antoniovillena
Mensajes: 135
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 2 veces

Re: Emulación arcade con FPGA

Mensajepor antoniovillena » 21 Dic 2017 00:13

Por cierto el addon con conector jamma (con un zxuno debajo) tiene este aspecto:

Imagen

Avatar de Usuario
Drtad
Mensajes: 482
Registrado: 19 Ago 2017 11:21
Agradecido : 39 veces
Agradecimiento recibido: 80 veces

Re: Emulación arcade con FPGA

Mensajepor Drtad » 21 Dic 2017 00:14

Perdon antonio me equivoque pense que era desde que lo iniciasteis hasta que salio el crowfunding y el v1
A.N.O.N.I.M.O.X.: Artificial Networked Organism Normally for Intensive Mathematics and Online Xenocide

Radastan
Mensajes: 116
Registrado: 09 Sep 2016 11:32
Agradecido : 7 veces
Agradecimiento recibido: 16 veces

Re: Emulación arcade con FPGA

Mensajepor Radastan » 21 Dic 2017 15:13

dragonet80 escribió:No tengo experiencia en este tema, pero me gustaria empezar. Lo máximo que he hecho son los tutoriales con la FPGA icezum Alhambra.


Ta animo a seguir en el tema, pero no pienses que sin experiencia vas a implementar (porque no se emula) una placa arcade desde cero, y mucho menos en poco tiempo.

Con las FPGA se describe el circuito original, es decir, no existe emulación alguna. Debes conocer al dedillo cómo funciona cada chip de la placa. Por no hablar que esto no es coger el core de un 68000, la descripción de una ram, etc. Muchas cosas tendrás que implementarlas tú, y se necesitan conocimientos fuertes de electrónica. Hablo de hacer una descripción desde cero, no una adaptación desde otra FPA a la que tengas.

Mucha gente cree que las FPGA son como una CPU y nada más lejos de la realidad.

dragonet80
Mensajes: 50
Registrado: 28 Nov 2017 12:36
Agradecido : 12 veces
Agradecimiento recibido: 15 veces

Re: Emulación arcade con FPGA

Mensajepor dragonet80 » 21 Dic 2017 19:01

Drtad escribió:para hacer lo que quieres las resoluciones de los juegos que quieres son mayores...........

No, he hecho un listado de todas las roms del mame 191, lo he pasado a excel y tengo todas las resoluciones de los juegos. He filtrado los que tienen 320*240 o menor. De todos modos el que me interesa a mi es el Snow Bros y ese es el que quiero conseguir.

Drtad escribió:para eso mejor y más barato usa raspberry o orange pi

Precisamente es lo que no quiero, además de que eso ya está hecho por mame. Quiero hacer algo que funcione nada mas encender, sin que tenga que esperar a que cargue el sistema operativo.


Drtad escribió:será más barato hace mucho tiempo cuando las viejas iban en moto me dio por desarrollar un sistema basado en Pic usando viejas tarjetas emuladores de canal satélite y vía digital cada tarjeta tenía un juego,

Ja, ja, que bueno, yo todavía guardo alguna piccard, goldcard, avrcard, phoenix, etc de aquella época.
Seguramente sea lo que haga primero, pero, como dices, con un micro en condiciones. Tengo pedido esta entrenadora:
Imagen
El micro va a 180MHz, espero que me de para emular a un par de micros que van a 5MHz... Lo bueno de un micro como éste, es que ya tiene un periférico que se encarga del framebuffer y de la transmisión de datos al display. Me conformo con conseguir la parte gráfica, el audio lo dejo como segunda parte.
De todos modos, hacerlo con una FPGA no lo descarto y es algo que quiero ir haciendo paralelamente.

Drtad escribió:para empezar bájate los fuentes de los arcades del zx uno y míralos con eso vas a aprender mucho y podrás hacerte una idea de cómo se hace y los arcades del zx uno son relativamente fáciles

Gracias, eso haré.

antoniovillena escribió:Para el zxuno se han portado muchos arcades. Por ejemplo en este hilo hay 23:

http://www.zxuno.com/forum/viewtopic.php?f=60&t=1870

En general para sistemas de 16 bits el zxuno se queda corto y para sistemas de 8 bits hay recursos suficientes. Hace poco saqué un addon con conector jamma, así que si consigues crear o portar un arcade para el zx-uno, puedes verlo funcionar en un mueble arcade original.

Gracias por el enlace, me pondré con alguno a investigar a ver si aprendo algo. He visto que los ficheros llevan extensión .ZX1 Eso que tipo de fichero es? ¿Algo ya sintetizado para la FPGA pero que le poneis la extensión que mas os gusta? ¿Con que programa lo puedo abrir? ¿No están los códigos fuentes? Quizá acabe de decir una tontería por mi desconocimiento, a mí un fichero sintetizado me suena a un fichero compilado en su equivalente a microcontrolador (fichero .HEX).
La placa que quiero hacer (snow bros) tiene un micro de 32 bits (M68000), otro de 8 bits (Z80) y algunas cosas mas. Y la cantidad de LUTs que he visto por ahí en opencores que usan esos micros, me hizo pensar que la zxuno se quedaría corta.

La verdad es que sí, la idea que llevaba con las FPGAs es que se pudiese coger un core de "por allí" copiar-pegar, coger otro core de "por allá" copiar-pegar, conectarlos, añadir unas cosillas e ir probando. Pero parece que no va a ser tan fácil...

Avatar de Usuario
antoniovillena
Mensajes: 135
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 2 veces

Re: Emulación arcade con FPGA

Mensajepor antoniovillena » 21 Dic 2017 20:53

dragonet80 escribió:
Drtad escribió:Gracias por el enlace, me pondré con alguno a investigar a ver si aprendo algo. He visto que los ficheros llevan extensión .ZX1 Eso que tipo de fichero es? ¿Algo ya sintetizado para la FPGA pero que le poneis la extensión que mas os gusta? ¿Con que programa lo puedo abrir? ¿No están los códigos fuentes? Quizá acabe de decir una tontería por mi desconocimiento, a mí un fichero sintetizado me suena a un fichero compilado en su equivalente a microcontrolador (fichero .HEX).
La placa que quiero hacer (snow bros) tiene un micro de 32 bits (M68000), otro de 8 bits (Z80) y algunas cosas mas. Y la cantidad de LUTs que he visto por ahí en opencores que usan esos micros, me hizo pensar que la zxuno se quedaría corta.

La verdad es que sí, la idea que llevaba con las FPGAs es que se pudiese coger un core de "por allí" copiar-pegar, coger otro core de "por allá" copiar-pegar, conectarlos, añadir unas cosillas e ir probando. Pero parece que no va a ser tan fácil...


La extensión ZX1 no es más que el binario del bitstream y rellenado con ceros hasta llegar a la longitud $54000. Este fichero lo reconoce la BIOS del ZX-Uno desde la SD y permite actualizar los cores. Los fuentes están aquí:

http://svn.zxuno.com/svn/zxuno/cores/Arcades/
user: guest
pass: zxuno

Sí, para el snow bros el ZX-Uno se te queda algo corto. La parte gráfica (sin sonido) sí que te cabe, pero para tener que migrar de sistema en el futuro es mejor empezar directamente con un sistema más grande. Puedes comprarte una entrenadora que se llama "terasic de10 nano", que es la que usa MiSTER (la evolución de MiST).

Avatar de Usuario
gflorez
Mensajes: 1013
Registrado: 12 Sep 2014 19:58
Agradecido : 23 veces
Agradecimiento recibido: 160 veces

Re: Emulación arcade con FPGA

Mensajepor gflorez » 21 Dic 2017 21:49

Esta página me la pasó Ron hace unos días, para enseñarme que una implementación FPGA puede ser modular, usando las formulas de chips que ya están hechas y comprobadas.

dragonet80
Mensajes: 50
Registrado: 28 Nov 2017 12:36
Agradecido : 12 veces
Agradecimiento recibido: 15 veces

Re: Emulación arcade con FPGA

Mensajepor dragonet80 » 22 Dic 2017 09:20

antoniovillena escribió:Los fuentes están aquí:

Gracias. He mirado un poco por encima y veo que estan hechos con el ISE de Xilinx. En la web oficial veo que hay tres versiones (webpack, embedded y system), ¿cual de ellas usasteis? También he visto que se puede evaluar por 30 días, pero ¿hay alguna manera de tenerlo gratuitamente? La última versión es la 14.7, ¿sabéis si funciona bien en Windows 10 o hay que usar Windows 7 (tengo un viejo portátil todavía con W7)?

antoniovillena escribió:Puedes comprarte una entrenadora que se llama "terasic de10 nano", que es la que usa MiSTER (la evolución de MiST).

La he visto, pero me parece un bicharraco enorme, teniendo en cuenta que lo que quiero hacer es un sistema portátil lo más pequeño posible no se si después sería fácil reducir al mínimo los componentes de la Mister.
Aquí tengo una pregunta: si, por ejemplo, en la zxuno se sustituye la fpga XC6SLX9 por una XC6SLX16 o por una XC6SLX25, ¿todo lo que hay hecho seguiría funcionando? Entiendo que sería bastante mas complicado realizar la placa por el encapsulado diferente de estos dos micros. La placa actual de zxuno es doble cara, ¿verdad? ¿o es de 4 capas?

dragonet80
Mensajes: 50
Registrado: 28 Nov 2017 12:36
Agradecido : 12 veces
Agradecimiento recibido: 15 veces

Re: Emulación arcade con FPGA

Mensajepor dragonet80 » 22 Dic 2017 10:47

dragonet80 escribió:La placa actual de zxuno es doble cara, ¿verdad? ¿o es de 4 capas?

Me autocontesto a esta parte, he encontrado el esquemático y pcb aquí
http://zxuno.speccy.org/descarga.shtml
Aunque no están los fuentes en Eagle, se puede ver que es de doble cara. ¿Los fuentes en eagle están disponibles en algun lado? Se me está ocurriendo que podría empezar haciendo una versión de la zxuno portable con la pantalla de 2.4" que tengo pedida e intentar que me funcione alguno de los cores arcade que ya hay hechos.

Avatar de Usuario
antoniovillena
Mensajes: 135
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 2 veces

Re: Emulación arcade con FPGA

Mensajepor antoniovillena » 22 Dic 2017 11:12

dragonet80 escribió:
antoniovillena escribió:Los fuentes están aquí:

Gracias. He mirado un poco por encima y veo que estan hechos con el ISE de Xilinx. En la web oficial veo que hay tres versiones (webpack, embedded y system), ¿cual de ellas usasteis? También he visto que se puede evaluar por 30 días, pero ¿hay alguna manera de tenerlo gratuitamente? La última versión es la 14.7, ¿sabéis si funciona bien en Windows 10 o hay que usar Windows 7 (tengo un viejo portátil todavía con W7)?


La versión Webpack es gratuíta indefinidamente. Tan solo te pide registrarte como usuario. Funciona en W7 y W10, aunque en W10 hay que copiar un dll de un sitio a otro para evitar un cuelgue.

dragonet80 escribió:
antoniovillena escribió:Puedes comprarte una entrenadora que se llama "terasic de10 nano", que es la que usa MiSTER (la evolución de MiST).

La he visto, pero me parece un bicharraco enorme, teniendo en cuenta que lo que quiero hacer es un sistema portátil lo más pequeño posible no se si después sería fácil reducir al mínimo los componentes de la Mister.
Aquí tengo una pregunta: si, por ejemplo, en la zxuno se sustituye la fpga XC6SLX9 por una XC6SLX16 o por una XC6SLX25, ¿todo lo que hay hecho seguiría funcionando? Entiendo que sería bastante mas complicado realizar la placa por el encapsulado diferente de estos dos micros. La placa actual de zxuno es doble cara, ¿verdad? ¿o es de 4 capas?


A nivel binario no sería compatible. Es decir los bitstreams de la LX9 no son reconocidos por la LX16 ó LX25. Tendrías que recompilar los cores partiendo del código fuente. Los cambiós serían mínimos, sólo un archivo .UCF (que indican como van mapeados los pines). Efectivamente, el zxuno actual es a 2 capas y tendrías que usar 4 capas para el BGA de la nueva FPGA.

Avatar de Usuario
antoniovillena
Mensajes: 135
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 2 veces

Re: Emulación arcade con FPGA

Mensajepor antoniovillena » 22 Dic 2017 11:14

dragonet80 escribió:
dragonet80 escribió:La placa actual de zxuno es doble cara, ¿verdad? ¿o es de 4 capas?

Me autocontesto a esta parte, he encontrado el esquemático y pcb aquí
http://zxuno.speccy.org/descarga.shtml
Aunque no están los fuentes en Eagle, se puede ver que es de doble cara. ¿Los fuentes en eagle están disponibles en algun lado? Se me está ocurriendo que podría empezar haciendo una versión de la zxuno portable con la pantalla de 2.4" que tengo pedida e intentar que me funcione alguno de los cores arcade que ya hay hechos.


Los fuentes Eagle están aquí:

http://svn.zxuno.com/svn/zxuno/hardware ... 4.1/eagle/

dragonet80
Mensajes: 50
Registrado: 28 Nov 2017 12:36
Agradecido : 12 veces
Agradecimiento recibido: 15 veces

Re: Emulación arcade con FPGA

Mensajepor dragonet80 » 24 Dic 2017 14:08

antoniovillena escribió:Los fuentes Eagle están aquí:

http://svn.zxuno.com/svn/zxuno/hardware ... 4.1/eagle/

Gracias Antonio.

He bajado los fuentes del zxuno 4.1 y del addon jamma por si veia algo interesante. La idea que había empezado con el microcontrolador PIC32 es esta: (bueno, pongo la captura como adjunto).

Sería cuestión de cambiar el micro por la FPGA, la RAM y la Flash, intentando hacer los mínimos cambios al conexionado usado en la zxuno. Por eso quería hacer un par de preguntas a ver por donde tiro:
* El conector de joystick tiene pines para dos botones (JOY_FIRE1 y JOY_FIRE2) que van a los pines 2 y 8 de la fpga. Estos los usaria directamente para los botones 1 y 2. Pero para los botones 3 y 4 aquí tengo la duda. En el esquemático hay un pin JOY_FIRE3 (pin 39 de la fpga) que va conectado a una especie de jumper donde también están los pines 5 y 7 del conector de joystick y un pull-up. Esto no acabo de entender que función tiene. ¿Puedo coger directamente para el botón 3 el pin JOY_FIRE3 y eliminar ese jumper?
* ¿Para el botón 4, cojo cualquier pin disponible o tenéis alguno previsto para eso?
* Para los botones Start1 y Coin1 supongo que no teníais nada previsto y cojo dos pines cualquiera.
* Los pines de salida de color RGB de la fpga veo que són solo 3 por color (R0, R1, R2, G0, ...), ¿teníais previsto otros pines para llegar a tener una salida de 8bit por color? Si no, ¿cojo pines cualesquiera?
* ¿Que diferencia hay entre la salida EAR y la Audio que también tiene un conector jack? En principio ya dije que ahora me olvidaría del audio, pero en un futuro me gustaría dejar un conector jack de 2,5" lo más pequeño posible (descarto poner altavoces por el tema del tamaño).
Adjuntos
ArcadeBOY_PIC32_inici.jpg
ArcadeBOY_PIC32_inici.jpg (57.61 KiB) Visto 1090 veces


Volver a “Emulaciones software, FPGA y otras soluciones”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado