Core alternativo de Kyp

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Core de Spectrum alternativo

Mensaje por Kyp » 04 Sep 2016, 11:20

Poco antes de que empezara el desarrollo del ZX-Uno me compré una placa de desarrollo de FPGAs, la Papilio Pro. Un poco por eso y por el respeto que me daba soldar los componentes SMD, al final no me apunté a las pruebas de los prototipos, así que, como quería aprender a usar las FPGAs, me puse a diseñar mi propio clon de Spectrum.

Para no enrollarme mucho, a base de un poco de estudio, y muchas pruebas y errores, este es el resultado: ZXpp

Son seis pasos:
01 - Vídeo VGA
02 - decodificando la pantalla
03 - Juntando las primeras piezas: CPU, ULA, ROM y RAM baja
04 - Añadiendo el resto: RAM alta, teclado, sonido y joystick
05 - Mejorando el sonido: chip AY
06 - Mejorando el teclado

· Implementa un Spectrum 48K.
· El core de la CPU es el TV80. Pensaba que era el mismo que usa el ZX-Uno pero lo he ido a comprobar y resulta que no, que el TV80 está basado en el T80 pero es diferente.
· La ULA es una implementación libre de la del Spectrum basada más en 'como tiene que interpretarse la memoria' más que en como funciona realmente la ULA del Spectrum. No hay contención de memoria y la salida de vídeo es VGA nativa a 640x480@60Hz. Para 'llenar' la pantalla hace un escalado x2 pero sólo de la zona de pixeles. Es decir, que la imagen generada es de 512x384 y el resto se rellena con el color de borde. Es un engendro un poco raro pero funciona en cualquier monitor VGA :lol:
· Toda la memoria, ROM y RAM, está implementada con la BRAM de la FPGA. La RAM baja es de doble puerto ya que el Z80 y la ULA funcionan cada uno a su ritmo (la CPU a 3.5 MHz y la ULA a 25,143 MHz).
· Para el teclado PS2 he adaptado éste módulo de Mike Field para la comunicación con el teclado, y he adaptado mi revisión del código para CPLD del interfaz Speckey para la interfaz con el Spectrum.
· También le he añadido un core de chip de sonido AY.
· Como uso toda la BRAM de la FPGA para la memoria del Spectrum no quedan recursos para nada más así que me he quedado a medio implementar el DivMMC. Al menos, mediante un sencillo adaptador, más que nada para no freír la FPGA si no se tiene cuidado, se puede cargar de cinta.

Ahora voy a coger todo esto y lo primero es hacer que funcione en el hardware del ZX-Uno. Luego le iré haciendo mejoras y, sobre todo ahora que dispongo de más RAM, lo primero es que funcione el DivMMC y luego ampliarlo a un 128K.

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: Core de Spectrum alternativo

Mensaje por jepalza » 04 Sep 2016, 11:34

Al final ¿no conseguiste nada con la DRAM? lo de hacer que parezca SRAM. Yo lo intenté, miré en lo mas profundo de la red oscura, y nada. Y mis pruebas no sirvieron de nada. Me volví loco, y no conseguía "emular" SRAM dentro de una DRAM.
Es una limitación gorda en nuestras Papilios Pro. (que pena con haber logrado una Plus cuando salieron)

He pensado muchas veces quitar la DRAM y poner SRAM, pero es estropear la papilio, cuando ya tengo FPGA's con SRAM, como el ZXUNO, para jugar.

También me hice memorias SRAM externas para el Papilio, pero te quedas sin pines para poner luego la SD, la VGA, el teclado, el mando...

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core de Spectrum alternativo

Mensaje por Kyp » 04 Sep 2016, 11:58

No, no pude hacer que funcionara. Por eso he decidido aprovechar la oportunidad de tener una placa de ZX-Uno y seguir el desarrollo sobre este hardware. Lo que más rabia me da es que se que la Mist tiene SDRAM y sus cores, incluido el del Spectrum, la usan sin problemas. El principal escollo es que usa módulos tipo los IPs de Xilinx pero al ser una FPGA diferente, no son compatibles y no acabo de entender como funciona. Como controlador usa una modificación del controlador simple de Mike Field, pero por lo que he visto le mete una señal de control extra para sincronizar no_se_como_ni_que los accesos y mi limitado conocimiento de VHDL no da para más :(

Lo de cambiar la SDRAM por una SRAM también lo pensé, pero tampoco quería estropear la papilio.

azesmbog
Mensajes: 319
Registrado: 17 Feb 2016, 23:07

Re: Core de Spectrum alternativo

Mensaje por azesmbog » 04 Sep 2016, 12:27

Here is another alternative core Spectrum made on Xilinx XC6SLX9 & SRAM:
https://github.com/ILoveSpeccy/Aeon-Lit ... res/speccy
One problem - the author is not interested to support the project :(((

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core de Spectrum alternativo

Mensaje por Kyp » 04 Sep 2016, 16:15

Very interesting. Thank you!

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core de Spectrum alternativo

Mensaje por Kyp » 07 Sep 2016, 17:26

He subido a mi carpeta de DropBox la primer paso: ZXkyp01.zip

En vez de limitarme a portar tal cual el core del ZXpp, aprovecho para ir mejorándolo poco a poco. Este primer paso implementa una ULA PAL con timings exactos según el libro de la ULA de Chris Smith. Le he añadido un módulo de memoria para que se vea algo.

Para probarlo hace falta el cable de Xilinx pero no es necesario modificar el contenido de la flash así que se puede usar sin perder el firmware del :zxuno:

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

Re: Core de Spectrum alternativo

Mensaje por antoniovillena » 07 Sep 2016, 17:54

Kyp hay poca gente que tiene el cable de Xilinx. He subido una herramienta a la zona de descargas para pasar de bit a zx1 y a tap.
Así lo podrá probar todo el mundo.

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core de Spectrum alternativo

Mensaje por Kyp » 07 Sep 2016, 18:39

Todavía no conozco todas esas herramientas para facilitar el trabajo :oops:

Lo he estado mirando y ya he subido un .zx1 y .tap con el core al dropbox. Lo he probado con el ZX-Uno reemplazando uno de los cores y funciona perfectamente :D

Como recordatorio... Hay que renombrar el archivo ZXkyp.zx1 como COREn.ZX1 donde 'n' es el core a reemplazar y copiarlo a la SD. Arrancar pulsando F2 para entrar en la BIOS, seleccionar 'Upgrade', seleccionar el nº de core a reemplazar, y luego seleccionar SD file. Cuando termine, reiniciar pulsando Caps Lock para seleccionar el core y ¡Listo!

Tened en cuenta si lo probáis que el core no hace nada más que sintetizar una ROM con la imagen y la ULA para generar la señal de vídeo, nada más. No hay un teclado que se pueda usar para resetear y volver al ZX-Uno. Hay que apagar y encender.

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: Core de Spectrum alternativo

Mensaje por carmeloco » 07 Sep 2016, 18:52

He generado el .bit, y lo he cargado con impact. A mi me sale una pantalla en la que pone "Fairlight a prelude" y un pajarraco en una ventana, y como un castillo al fondo. :D

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core de Spectrum alternativo

Mensaje por Kyp » 07 Sep 2016, 19:17

Eso es todo lo que hace por el momento :D

Responder