Placa de expansión arcade

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Placa de expansión arcade

Mensaje por jotego » 24 Mar 2017, 11:37

Ya saqué una vez el tema de hacer una expansión que tuviera un DAC de audio real para sacar sonido de calidad. Antonio me preguntó sobre algún DAC concreto pero me pilló liado con el tema del JT12 y aunque busqué DACs no terminé de decidirme por uno.

Ahora viendo los problemas que está dando el core del Bomb Jack en MiST, debido a limitaciones en acceso simultáneo a la memoria externa y viendo también las limitaciones de tamaño de la FPGA del ZX-UNO, estaba pensando en que esa placa de expansión podría tener una FPGA adicional. La idea consiste en que las placas arcade normalmente tienen dos procesadores: uno de audio y otro de vídeo. La comunicación entre estos dos procesadores suele ser unidireccional y a través de un registro de 8 bits. Si ponemos el vídeo en la FPGA principal y el audio en la FPGA adicional, pueden comunicarse por SPI de una forma sencilla.

En la FPGA adicional irían cosas como un Z80, su RAM, los circuitos de sonido y algún filtro digital. Hay juegos como Ghosts'n Goblins que usan dos YM2203, así que entre eso y el Z80 la FPGA encontraría bastante uso. La FPGA debería tener varios multiplicadores para poder implementar algunos filtros FIR. Estos filtros los usaríamos para emular el filtro analógico de la placa original y para hacer el cambio de frecuencia de muestreo. Este cambio viene porque los chips de Yamaha funcionan a unos 50kHz, mientras que los DAC modernos suelen esperar frecuencias estándar como 44.1kHz o 98kHz. También podemos usar un DAC genérico (en vez de uno de audio) y así evitamos cambiar de frecuencia... Pero en cualquier caso siempre tendremos que acabar haciendo algo de filtrado en la FPGA. Incluso he pensado si sería conveniente meter un DSP para estas cosas...

La FPGA va un poco cortita de memoria interna, así que tener al menos 64kB externos vendrían bien. Lo digo porque los sistemas arcade de 8 bits, tipo Contra o Ghosts'n Goblins suelen gastar unos 32kB de ROM de audio y 2kB de RAM. En principio eso cabe bien en la FPGA y deja memoria para implementar las LUT de los Yamaha y los coeficientes de los filtros pero nos deja muy justos.

En resumen

Objetivo:
-sintentizar arcades de 8 bits: Double Dragon, Contra, Ghosts'n Goblins...
-sintentizar arcades de 16 bits cuya ROM quepa en los 512kB de ZX-UNO (o bien en los 2MB de la expansión, si esta se hace compatible con esa)

Necesitamos una placa de expansión:
-FPGA similar a la actual
-64kB de SRAM adicionales
-DAC de audio
-Salida RCA de audio/jack normal

¿Os parece interesante? Yo puedo seguir colaborando suministrando cores de audio y filtros para estos arcades.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Placa de expansión arcade

Mensaje por antoniovillena » 24 Mar 2017, 14:05

Ahora mismo el servidor está caído, pero hay un diseño de un addon llamado netuno que sirve para conectar 2 zxunos entre sí por el puerto de expansión:

http://www.atc.us.es/svn/zxuno/hardware/netuno

En breve recibiré las placas, para que el que quiera pueda probar. Es un poco cutre porque hay que poner uno de los zxunos boca abajo. Pero si veo que se desarrollan cosas, se hace otra pcb más decente.

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: Placa de expansión arcade

Mensaje por jotego » 24 Mar 2017, 16:06

Efectivamente el servidor está caído ahora y no puedo verlo. Pero unir 2 ZX-UNO es muy parecido a lo que yo digo. Sirve para demostrar el concepto. Y si nos gusta podemos hacer que la nueva PCB incluya el DAC de audio.

Si tienes las placas para retropíxel llevatelas y las vemos allí.

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: Placa de expansión arcade

Mensaje por jotego » 26 Abr 2017, 15:21

Bueno, vuelvo a la carga con este tema. Desde el Retropíxel he estado trabajando en torno al arcade Gryzor/Contra. He mirado el m6809, la caché, la comunicación entre los dos procesadores, el vídeo...

Efectivamente esto no cabe en un ZX-UNO tal cual, y en el MiST en principio cabe en la FPGA pero la memoria SDRAM lo fastidia todo porque me obliga a usar una caché para cada sistema que accede a la SRAM (por lo menos 4 cachés). Las cachés desvirtúan la gracia de reimplementar en FPGA porque aunque tengas un core de la CPU exacto, ocasionalmente habrá accesos a memoria que provoquen un vaciado de caché y eso añadirá un retraso en la ejecución de esa instrucción. Desde el punto de vista purista, ya no es un clon exacto. Para el usuario normal: ¿hasta qué punto es grave? Pues no lo sé, dependerá del caso pero sí que podría llegar a causar artefactos en la imagen si ocurre un vaciado de caché durante el refresco de pantalla...

También he implementado filtros FIR fantásticos e interpoladores lineales pero aunque he logrado que el sonido suene más bonito, no han desaparecido las oscilaciones que el sonido FM de 16 bits tiende a causar en estos sigma delta de andar por casa que usamos. Además de que ocupan muchísimo sitio en la FPGA.

Total, que el MiST no me sirve porque:

1. No tiene DAC de audio
2. No tiene DAC de vídeo
3. Tiene memoria SDRAM
4. No tiene pines libres para expansión
5. Muy limitado en cuanto al número de procesadores (CPUs o chips gráficos) que pueden acceder a la memoria multiplexándola en el tiempo. Es el problema que tiene el core de Megadrive.
6. Algo limitado en la FPGA. El core de Megadrive va tan justo que no hay forma de que cuadren los tiempos.

Y el ZX-UNO tal cual:

1. No tiene DAC de audio
2. No tiene DAC de vídeo
3. Muy limitado en tamaño de la FPGA
4. Muy limitado en tamaño de la SRAM

La solución de conectar dos ZX-UNO por el puerto de expansión ayuda a solucionar el punto 3. Los demás siguen siendo un problema.

Realmente convendría una placa de expansión que tuviera:

1. DAC de audio
2. DAC de vídeo
3. FPGA más grande
4. 32Mbytes de RAM organizados en 2 puertos independientes de 16Mbytes. Ancho de palabra de 16 bits.
5. Zócalo para conectar al ZX-UNO

Del ZX-UNO usaría todos los conectores (PS2, mandos y tarjeta SD). La FPGA y RAM del ZX-UNO implementarían el procesador de audio y los chips de sonido. La salida la haría en serie hacia la placa de expansión. En la placa de expansión la FPGA cogería esa comunicación de audio serie y la pasaría al DAC. El ZX-UNO principal programaría la FPGA de la expansión a través del zócalo de comunicación.

Extras a considerar:

A. Salida JAMMA
B. Salida HDMI
C. Puertos USB y microcontrolador para conectar mandos modernos

Yo estoy trabajando en la parte Verilog de todo esto. Podríamos hacer arcades tipo System 16 (Shinobi, Golden Axe...) y Capcom System 1 (Street Fighter 2, Ghouls'n Ghosts...). Si a alguno de los diseñadores PCB os llama la atención este proyecto podemos ponernos en serio.

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: Placa de expansión arcade

Mensaje por ManuFerHi » 26 Abr 2017, 15:43

Yo hace un tiempo que quiero sacar una placa compatible con Zx-Uno pero con una LX45, el problema es que yo sólo no puedo porque mi especialidad se limita a la producción de los circuitos. Aparte que ahora mismo tengo muchos frentes abiertos, tu idea es muy interesante si colabora gente y se saca adelante yo ayudaría en lo posible.

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: Placa de expansión arcade

Mensaje por brunosilva » 26 Abr 2017, 16:11

yes... we need a bigger fpga in zxuno itself :)

i think is a good project... the only way i could help is to buy one and help do tests...

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: Placa de expansión arcade

Mensaje por jotego » 27 Abr 2017, 14:13

ManuFerHi escribió:Yo hace un tiempo que quiero sacar una placa compatible con Zx-Uno pero con una LX45, el problema es que yo sólo no puedo porque mi especialidad se limita a la producción de los circuitos. Aparte que ahora mismo tengo muchos frentes abiertos, tu idea es muy interesante si colabora gente y se saca adelante yo ayudaría en lo posible.
Sí, ya veo que estás metido con el proyecto del ZX-UNO y la carcasa del gomas. Para mí ese es muy interesante también. Espero que salga bien.
brunosilva escribió:yes... we need a bigger fpga in zxuno itself :)

i think is a good project... the only way i could help is to buy one and help do tests...
Testing is always a very important part!

Bueno... Hay un camino intermedio para expandir el ZX-UNO que ayudaría a meter ciertos cores (por ejemplo, el XT con sonido Sound Blaster). Ese camino es usar tarjetas de expansión de Raspberry Pi de las que venden por eBay. Por ejemplo:

Módulo Spartan 6 por 40$. Esto añadiría control para mandos y teclados USB, y suficiente espacio en la nueva Spartan para tener un sintentizador FM y otro procesador de 8 bits.

Módulo con DAC HiFi por 10$ que daría sonido en condiciones para todos los cores. Se podría hacer un modulito en Verilog que adaptara la salida actual de los core a la interfaz I2S que usa este DAC y así todo los cores se beneficiarían de sonido limpio. Aunque es cierto que en sonido PSG, tipo ordenador de 8 bits, no hace tanta falta. Cuando pasamos a sonido FM sí es necesario un DAC en condiciones.

Esta no es la solución para montar sistemas arcade de verdad, como una Neo Geo, pero sí sirve para expandir el ZX-UNO aprovechando la base que ya hay. Con estos elementos, puede que un arcade tipo Ghosts'n Goblins o Commando, cupiese y sonase bien.

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: Placa de expansión arcade

Mensaje por brunosilva » 27 Abr 2017, 16:35

you can have both components connected to one zxuno?

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: Placa de expansión arcade

Mensaje por jotego » 27 Abr 2017, 17:38

brunosilva escribió:you can have both components connected to one zxuno?
Yes, it is possible and even more. As long as we make a nice serial protocol we can stack add-ons. And standard add-ons are a cheap and fast way to improve ZX-UNO


Sent from my iPhone using Tapatalk

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: Placa de expansión arcade

Mensaje por brunosilva » 27 Abr 2017, 19:02

didn't know that....

Responder