Página 1 de 3

Clon en FPGA facilito

Publicado: 18 Jul 2013, 11:34
por jotego
Después de algunos éxitos con el proyecto de ingeniería inversa del YM2151, lo tengo que aparcar unas semanas hasta que me lleguen los transceptores (los conversores de 3V a 5V). Hasta ahora había usado la FPGA a 3V y el Yamaha a 5V con algunas resistencias para evitar sobrecargas pero parece que las entradas de la FPGA se acaban enganchando a 1 o 0, seguramente la protección ESD de los pines sea la responsable. Cuando pongo el Yamaha a 3V no tengo ese problema, pero fallan una de cada dos escrituras al mapa de registros así que cuesta mucho programarlo. No hay más remedio que poner varios 74LVC4245 para traducir los niveles lógicos.

Mientras espero, quería implementar algún clon en la FPGA. Un Spectrum o Amstrad tendría su gracia. ¿Alguien sabe de dónde hay código fuente de algún clon? Lo que he visto por internet eran sólo ficheros de programación que no puedo usar en mi Spartan 3A.

Re: Clon en FPGA facilito

Publicado: 18 Jul 2013, 11:44
por antoniovillena
Aquí tienes el mío.

http://retrolandia.net/foro/showthread.php?tid=76

Lo bueno es que es progresiva y si por ejemplo tu FPGA no da para un 48K, le puedes meter un 16K. En la última lección se implementa un 128K sin sonido AY, aunque no creo que tengas problemas en añadírselo.

También puedes probar el que hizo mcleod en opencores, es un proyecto más maduro.

Re: Clon en FPGA facilito

Publicado: 18 Jul 2013, 11:50
por jotego
¡Gracias! Lo voy a probar durante el fin de semana.

Re: Clon en FPGA facilito

Publicado: 18 Jul 2013, 12:01
por antoniovillena
Estoy viendo las especificaciones de tu placa, si no me equivoco es una XC3S700A con 32Mbit de SDRAM. Siguiendo mi tutorial puedes llegar a implementar hasta el ZX Spectrum 16K sin problemas. Esa FPGA no tiene muchos más bloques BRAM que la mía (20 en lugar de 16), por lo que vas a tener que tirar de RAM externa para implementar modelos superiores.

El problema es que tu RAM externa es dinámica, y el tutorial está hecho para RAM estática, tendrías que hacer las modificaciones pertinentes. Si optas por el core de McLeod lo vas a tener más complicado aún, porque éste implementa los dos bancos de RAM con memoria externa, vía multiplexación.

Por cierto, si consigues hacer funcionar el clon con la SDRAM publica los fuentes, hay gente que se ha comprado la MOD-VGA-32Mb a la que le vendría muy bien.

Re: Clon en FPGA facilito

Publicado: 18 Jul 2013, 13:48
por jotego
Sí, al final pondré los fuentes en opencores. ¿Tú lo tienes todo en VHDL o tienes partes en Verilog?

Re: Clon en FPGA facilito

Publicado: 18 Jul 2013, 13:54
por antoniovillena
Yo lo tengo todo en VHDL porque es un tutorial y no quiero que la gente se haga la picha un lío, aparte estoy muy pegado en Verilog. Pero vamos que si consigues añadir algo útil (SDRAM, implementación AY) en Verilog lo incluyo igualmente con la excusa de que se pueden mezclar ambos lenguajes lo puedo poner como ejemplo.

Re: Clon en FPGA facilito

Publicado: 18 Jul 2013, 14:53
por jotego
Voy a empezar por replicar lo que haces en el tutorial. Si para cuando acabe no me han llegado aun los chips para el asunto del Yamaha, trataré de añadir el clon del AY-3-8910 que hice.

Re: Clon en FPGA facilito

Publicado: 18 Jul 2013, 19:22
por Joss
Por si os sirve de referencia podeis echarle un vistazo a este proyecto de un Spectrum en una Altera DE1, que tiene salida VGA (que implementa la placa para la que está hecha el proyecto) y salida RGB.

Re: Clon en FPGA facilito

Publicado: 19 Jul 2013, 05:28
por antoniovillena
Os dejo unos videos para abrir boca




Re: Clon en FPGA facilito

Publicado: 19 Jul 2013, 09:03
por jotego
Joss escribió:Por si os sirve de referencia podeis echarle un vistazo a este proyecto de un Spectrum en una Altera DE1, que tiene salida VGA (que implementa la placa para la que está hecha el proyecto) y salida RGB.


Gracias por la referencia.

-- Actualizado 19 Jul 2013, 09:06 --

antoniovillena escribió:Aquí tienes el mío.

http://retrolandia.net/foro/showthread.php?tid=76

Lo bueno es que es progresiva y si por ejemplo tu FPGA no da para un 48K, le puedes meter un 16K. En la última lección se implementa un 128K sin sonido AY, aunque no creo que tengas problemas en añadírselo.

También puedes probar el que hizo mcleod en opencores, es un proyecto más maduro.


He hecho la lección 1, pasándola a Verilog y la he implementado en la placa. Efectivamente, mis temores se han hecho realidad y no se ve nada. ¿Qué conectabas tú a la placa? ¿Un televisor? Esa salida que has hecho no es VGA, ¿verdad? Falta el sincronismo vertical además de que el tamaño de pantalla seguramente es demasiado pequeño.