ZX-Uno: Camino hacia la versión 3 (definitiva)

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: Nintendo NES/Clónica
Ubicación: Córdoba-Jaén
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor radastan » 22 Ago 2015, 17:40

Metalbrain escribió:
radastan escribió:¿Y cabría en el ZX Uno el CPC Trex?

http://www.symbos.de/trex.htm


Pa mi que ni de coña, teniendo en cuenta esto:
24MHZ Z80 * 576KB RAM * 256KB ROM

Y aparte, tiene el problema de que solo está para Altera, no para Xilinx


Es que no digo de implementar todo, digo de cojer su core, que emulaba cojonudamente el CPC 6128.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 15 veces

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor Quest » 25 Ago 2015, 18:42

Ya he subido los fuentes de 3 cores al SVN (con algunos cambios más, de paso) por si queréis hacer lo de pasar de VGA a RGB/Video compuesto o mejorarlos de algún modo (estaría bien la carga más sencilla de roms en el de NES, por ejemplo). Yo de momento no doy para más.

Subidos:

Sega Master System
- He aprovechado para añadir parpadeo del LED cuando carga de la SD y soporte para que funcionen los mandos de Megadrive. Lleva el T80 mejorado de Mcleod.
- He añadido un .BAT para inyectar el bootloader en el bitstream.
- Se puede abrir con ISE 12

Acorn Atom
- He aprovechado para corregir uno de los relojes, que puse mal. Ahora se genera bien el de 32Mhz (necesario para el SID) y ya se oye bien.
- He añadido un .BAT para inyectar el programa del AVR SoftCore en el bitstream
- Alguna vez (pocas, 1 de cada 20) se queda pillado.
- Se puede abrir con ISE 12

NES
- He aprovechado para retocar algunos colores más en la paleta y que se vea mejor. También añadido soporte para pad de Megadrive (sólo botones B y C) y parpadeo del LED cuando carga datos por el puerto serie.
- Añadidas las DLLs de LUA para que funcione nesdbg
- Sólo se puede abrir y sintetizar con ISE 14 (Yo he usado 14.7 concretamente), porque con versiones anteriores, al sintetizar, no cabe el core en la FPGA.


De momento eso es todo. Seguramente habré cometido barbaridades en el código. No me fustiguéis por ello, no tengo mucha idea.

Quizá en unos días, cuando tenga ganas y saque algo más de tiempo, suba un par de cores más.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 51 veces
Contactar:

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor mcleod_ideafix » 26 Ago 2015, 00:03

Estupendo! Gracias, Quest :)

En otro orden de cosas: hoy he tenido una larga charla con Goran Devic. Este señor es el autor del core A-Z80, del que hemos hablado alguna vez. Es el core de Z80 que se supone que es exacto en los timings internos y externos.
El código original está en una mezcla de Verilog, System Verilog y código Verilog generado automáticamente mediante scripts de Python partiendo de la documentación original que se tiene tanto de la tabla de decodificación de la PLA interna de un Z80 real, como de la matriz de ejecución que genera las señales de control en base al estado actual de la salida de la PLA y el ciclo de máquina y T-estado actual.
He estado el fin de semana convirtiendo las partes que estaban en SVerilog a Verilog. El resultado preliminar es un core que en el simulador (iSim) muestra unas señales muy "bonitas", idénticas a las que veo de un Z80 con el analizado lógico.

Pero hay un "pero": la matriz de ejecución, no sé cómo está escrita, pero no hay "güevos" de que sintetice para la Spartan 6 que tenemos. El módulo execute.v , si se sintetiza él solito, tras un par de horas o así, muestra como resultado el que se necesita una FPGA como 15 veces más grande que la que tenemos ahora :shock:

Obviamente hay algo que no funciona. Aún no sé qué es: no es que la entrada sea un vector de 105 bits. Eso ya lo descarté. Aunque ese módulo tiene muchos IF's uno detrás de otro, no son una barbaridad de ellos. Lo hemos estado discutiendo Goran y yo: él no tiene problemas para sintetizar ese código en el sintetizador de Altera, pero en el de Xilinx, oye que no hay manera.

Algún flag u opción del XST se me escapa.

En el core actual del Spectrum, el T80 parece funcionar lo suficientemente bien como para que sea factible sacarlo así, pero para otros cores como el del Sam Coupé, el T80 falla por todas partes. Es por esto que voy a dedicar algo de tiempo a intentar que este core funcione. Quizás no haga falta usarlo para el core de Spectrum, pero desde luego, es lo más parecido que tendríamos a usar el core de Spectrum con un Z80 real externo, como teníamos con la plaquita addon.

Si alguien quiere hacer pruebas, en la sección "cores" hay un proyecto Xilinx con la versión 14.7 del ISE, que contiene únicamente el core A-Z80. Para sintetizar un módulo por separado, se hace clic derecho en él y se elige la opción "Set as Top Module". Entonces, las opciones de Sintetizar, Place and route, etc, funcionarán sobre ese módulo y aquellos de lo que dependa.

Si haceis esto sobre el módulo execute.v vereis qué pasa. Se puede llevar 2 y 3 horas sintetizando, incluso con una buena máquina (en mi despacho uso un Core i7 con 4 núcleos con HT cada uno y ni aún así)

¡Ah! Aprovecho también para comentar que me he pasado a la versión 14.7 del ISE, la última que existe. Todos los cores, a partir de ahora, los sintetizaré con esta nueva versión, que desde luego da mejores tiempos en los cores actuales: en el de SAM Coupé paso de tener un core que funciona como máximo a 53MHz a poder hacerlo funcionar, en teoría, a unos 75MHz.

Cuando tengamos los nuevos prototipos con memorias de 10ns va a ser la repera :P
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
celestinox
Commodore 128
Commodore 128
Mensajes: 92
Registrado: 07 Dic 2012, 17:04
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
Primera consola: Sony PlayStation 2
Gracias recibidas: 3 veces

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor celestinox » 26 Ago 2015, 18:23

Hola,

entonces para la "revision nueva" se crea una huella para una SRAM de hasta 2MB con una distribución nueva de pines;
Alguien puede subir el nuevo esquemático modificado en pdf ? (así me evito instalar altium). Ya puesto ha hacer un nuevo engendro; querría poner una memoria de 10ns.

Un saludo.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 51 veces
Contactar:

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor mcleod_ideafix » 26 Ago 2015, 19:18

celestinox escribió:Hola,

entonces para la "revision nueva" se crea una huella para una SRAM de hasta 2MB con una distribución nueva de pines;
Alguien puede subir el nuevo esquemático modificado en pdf ? (así me evito instalar altium). Ya puesto ha hacer un nuevo engendro; querría poner una memoria de 10ns.

Eso es exactamente lo que se pretende: la memoria será de 10ns, y de tamaño entre 512KB y 2MB.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 15 veces

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor Quest » 31 Ago 2015, 18:55

He sacado un par de ratos libres, para ir amenizando la espera de la versión final del ZX-UNO, y he podido subir al repositorio un par de cores más:

Oric Atmos y Vic-20

No son gran cosa, puesto que no tienen ahora mismo ningún modo de cargarles software (Ni por SD, ni flash, ni por entrada de audio EAR/cassette), pero valen para entretenerse un rato.
Como siempre, lo típico, remapeado de pines y algunos cambios para que al menos medio funcionen en el ZX-UNO. Se han sacado de otros ports de pipistrello (LX45).
Ambos proyectos Xilinx se abren con ISE 14.7. Siempre vamos a usar ya esta versión. Es lamás rápida y más optimizada para sintetizar.

En el Oric:

- Venía adaptado a salida HDMI. He quitado todo rastro de código referente a DVI/HDMI y he desactivado satisfactoriamente esta vez el scandoubler, linkando las salidas de color y sincro con lo que saca la ULA directamente. De paso he cambiado ligeramente los relojes para que la CPU vaya a la velocidad a la que tiene que ir (el código HDMI hacía que fuera más rápido)
- Gracias a lo anterior, funciona por vídeo compuesto (he activado el cristal PAL en el código, así que saldrá PAL), y no en VGA (aunque se puede activar en código)
- A pesar de que está presente la señal TAPE IN, está completamente sorda, y no carga cassettes. Por lo que veo, no debe estar implementada toda la circuitería que hay entre la entrada y el VIA 6522, porque veo que está prácticamente puenteado a pelo... digo yo que algo faltará en medio para que funcione bien. Es sólo una suposicion.
- Va con teclado PS/2, mapeado inglés, si no recuerdo mal.
- El audio parece funcionar

Foto funcionando en mi ZX-UNO:

Imagen


En el VIC-20

- Al igual que en el Oric, no se puede cargar nada externo en este core. En el código original se usaba una memoria flash de Intel (StrataFlash) paralelo para almacenar volcados de cartuchos, pero por el momento en el ZX-UNO no hay nada parecido (la nuestra es SPI flash, serie), así que esa función está desactivada en este port.
- En este caso, desactivar el scandoubler daba una señal por vídeo compuesto completamente desplazada, inestable y con colores mal (ya he probado de todo con la activación de ambos cristales PAL/NTSC en el ZX-UNO sin buenos resultados, a pesar de que las sincros parecían estar en rango), así que he dejado el scandoubler activado, y por tanto de momento la salida es sólo VGA.
- Va con teclado PS/2
- El audio parece funcionar, lo probé con unos pokes.

Foto funcionando en mi ZX-UNO:

Imagen


Si alguien puede hacer algo más con ellos, ya tenéis disponibles los fuentes

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 7 veces

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor antoniovillena » 31 Ago 2015, 22:20

Pues 2 máquinas más, ya he perdido la cuenta.

Kyp del foro vaderetro tiene una Papilio Pro y está experimentando con la FPGA. Como el hardware es muy parecido (misma FPGA) le he dicho que contacte contigo por si quiere adaptar su código VHDL al ZX-Uno o bien el código del ZX-Uno (o cualquiera de tus ports) a la Papilio Pro y subirlo al repositorio. El enlace del hilo es este:

http://www.va-de-retro.com/foros/viewto ... =48&t=3473

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 15 veces

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor Quest » 31 Ago 2015, 23:39

antoniovillena escribió:Kyp del foro vaderetro tiene una Papilio Pro y está experimentando con la FPGA. Como el hardware es muy parecido (misma FPGA) le he dicho que contacte contigo por si quiere adaptar su código VHDL al ZX-Uno o bien el código del ZX-Uno (o cualquiera de tus ports) a la Papilio Pro y subirlo al repositorio. El enlace del hilo es este:

http://www.va-de-retro.com/foros/viewto ... =48&t=3473


No se que puedo aportar yo. Acabo de leer el link del hilo que has puesto y Kyp sabe HDL de verdad, y además electrónica. Yo no se nada (apenas nada, ni he estudiado una cosa ni la otra), aparte de hacer un UCF adaptado, saber las 4 cosas básicas del ISE y usar la lógica para intentar deducir lo que hacen algunas partes del código y cambiar algunas líneas, eliminar o añadir otras... que funcionan después de muchas pruebas infructuosas. Eso para él sera coser y cantar.

Además la mayoría de "ports" que he subido (creo que ya lo comenté) vienen precisamente de versiones de Papilio o Pipistrello (ambos basados en spartan-6, por eso los elijo), así que muchos le funcionarán directamente en su Papilio con los fuentes originales sin cambiar gran cosa (en algún caso puede que nada)

Eso sí, esta etapa en ZDP con el prototipo del ZX-UNO me está sirviendo, personalmente, para empezar a aprender algo de este mundillo tan apasionante. Ojalá hubiera podido estudiar estas cosas en vez de estudiar la aburrida informática de gestión...

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 7 veces

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor antoniovillena » 31 Ago 2015, 23:54

Había pensado en ti porque últimamente has hecho muchos ports y creo que este no te resultará muy complicado. También es una forma de completar el repositorio, tanto de cores de spectrum alternativos al de McLeod como también para que el core de McLeod funcione en otros sistemas (en este caso Papilio Pro).

Casi todos los que estamos aquí somos también informáticos (wilco2009, McLeod, yo) así que por lo menos no estás solo.

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 15 veces

Re: ZX-Uno: Camino hacia la versión 3 (definitiva)

Mensajepor Quest » 01 Sep 2015, 00:29

Entiendo. Ojalá supiera hacerlo, pero...

En el caso de portar lo que tiene hecho hasta ahora de Papilio a ZX-UNO, supongo que es bastante fácil puesto que no usa RAM externa, sino la propia BRAM de la FPGA. Sólo hay que adaptar el UCF, los bits de salida de vídeo y los relojes. No obstante ya vi varios cores de specturm para spartan (entre otros uno que hay para la placa Aeon rusa, creo que alguno para papilio, etc) pero pensé que no tenía mucho sentido portar otros cores de spectrum, teniendo ya nosotros uno que seguramente será la envidia de todos los demás, con el T80 mejorado, timings prácticamente calcados a los reales (elegibles entre 48k y 128k, hasta el issue del teclado...) , ULAPlus, DivMMC, Carga por EAR, Turbosound, más RAM, Configurable y actualizable por BIOS, mapeados de teclado personalizables, multi configuración de joysticks con soporte de varios estándares, multi-elección de ROMs de spectrum para arrancar, etc, etc, etc... no veo que haya otro mejor :D

El caso contrario, portar el de ZX-UNO al Papilio, lo veo totalmente imposible para mis cuasi-nulos conocimientos. En el ZX-UNO, si no he entendido mal hasta ahora, usamos una SRAM para todo, tanto para cargar la ROM como para usarla de RAM del spectrum. El Papilio Pro, si no me equivoco usa SDRAM. No tengo ni repajolera idea siquiera de cómo funciona una SDRAM, y por lo poco que he leído es mucho más complicado manejarla, además de resultar más lenta. En todo caso creo recordar que un antiguo test de jepalza (hace ya unos meses, igual me equivoco) hacía funcionar el core para un ¿48k?, usando la memoria de la FPGA, pero sería bastante limitadillo, claro. Y nada de VGA. El Wing RGB del papilio es para VGA. Nosotros aún no tenemos scandoubler.


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 5 invitados