Sintetizando un Specturm con FPGA

Avatar de Usuario
jorsus
Mensajes: 397
Registrado: 02 Ago 2018 20:53
Ubicación: Algeciras
Agradecido : 412 veces
Agradecimiento recibido: 347 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor jorsus » 17 Abr 2020 18:07

Último mensaje de la página anterior:

Kyp escribió:He subido a GitHub una release con el .bit y el .ZX1


Como pedir es gratis....
¿Es posible portar este core a la Mistica?
Pregunto desde el desconocimiento.
Si es una burrada lo que he dicho lo podéis ignorar tranquilamente.

Avatar de Usuario
Kyp
Mensajes: 888
Registrado: 03 Oct 2013 17:13
Agradecido : 132 veces
Agradecimiento recibido: 347 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor Kyp » 17 Abr 2020 18:16

jorsus escribió:Como pedir es gratis....
¿Es posible portar este core a la Mistica?
Pregunto desde el desconocimiento.
Si es una burrada lo que he dicho lo podéis ignorar tranquilamente.

Seguro que es posible pero no tengo ni Mist ni Mistica -no (miento, tengo una Mist prestada que no funciona, la monté yo pero no consigo grabar el firmware del ARM para hacer que arranque -banghead )

Avatar de Usuario
jorsus
Mensajes: 397
Registrado: 02 Ago 2018 20:53
Ubicación: Algeciras
Agradecido : 412 veces
Agradecimiento recibido: 347 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor jorsus » 17 Abr 2020 18:39

Kyp escribió:
jorsus escribió:Como pedir es gratis....
¿Es posible portar este core a la Mistica?
Pregunto desde el desconocimiento.
Si es una burrada lo que he dicho lo podéis ignorar tranquilamente.

Seguro que es posible pero no tengo ni Mist ni Mistica -no (miento, tengo una Mist prestada que no funciona, la monté yo pero no consigo grabar el firmware del ARM para hacer que arranque -banghead )


Si le preguntas a ManuferHI seguro q t dice como se graba ese firmware. Es un tio muy majo.

Avatar de Usuario
desUBIKado
Mensajes: 545
Registrado: 15 Dic 2017 19:50
Agradecido : 174 veces
Agradecimiento recibido: 918 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor desUBIKado » 17 Abr 2020 19:56

Kyp escribió:He subido a GitHub una release con el .bit y el .ZX1


Ya lo he probado un poco. Enhorabuena, es un trabajo fantástico.

El esxDOS 0.8.7 funciona correctamente, así como el sonido AY y el SpecDrum.

Del famoso test Z80FULL.TAP solo falla 2 de los 152 test, igual que en el core de Spectrum de mcleod_ideafix (ZX-Uno / ZX-DOS) o el de Sorgelig (MiST / SiDi / MiSTer). Mucho mejor que en el de ZX Spectrum Next que fallan 22.

El test IR_contention, si bien no se ve perfecto, y las franjas de colores inferiores no están alineadas con las superiores, el resultado es más cercano al de un Spectrum real que los cores de Spectrum de mcleod_ideafix o el de Sorgelig.

Compruebo que no está implementado el efecto "snow". Siendo un core exclusivo de 48K estaría simpático incluirlo.

Y el test FPGA_ULA.TAP de azesmbog no sale correcto, como tampoco lo hacen los cores de mcleod_ideafix o el de Sorgelig.

¿Vas a presentarlo en el fore de zxuno? Si es así me espero, y te dejo presentarlo a ti.

Avatar de Usuario
zx81
Mensajes: 516
Registrado: 23 Feb 2013 21:31
Agradecido : 138 veces
Agradecimiento recibido: 282 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor zx81 » 17 Abr 2020 19:58

Vas por muy buen camino Kyp, resumen de lo probado:

- El ulatest3-modified, perfecto
- Floatspy, de ramsoft, se cuelga nada más iniciarse. Curioso, teniendo en cuenta que el anterior va bien. Sospecho de la interrupción o de algo relacionado con ella.
- mtime, btime y stime, perfectos
- Fusetest, perfecto
- Frame, falla en la penúltima línea.
- El z80full de Patrik Rak, perfecto, aunque falle en los SCF/CCF, es un fallo sin importancia, lo digo siempre.
- El z80tests de Mark Woodmass, los flags bien, salvo el BIT n,(HL). Curiosamente, las variantes con IX e IY salen bien. Los de memptr, ni uno, lo que suele suceder si, para empezar, no se ha emulado bien ese comportamiento en las instrucciones CPI y CPD. Si esas dos no lo hacen bien, el resto ni las mires.
- IRContention, ni mejor ni peor que antes, un poco diferente en la parte inferior pero, en líneas generales, le falta mucho a este para ir bien. Las barras superiores ya están desplazadas del orden de 1 caracter y abajo, ya llega totalmente desplazado.
- Timing de Patrik, basado en un test de Jan, opciones 0, 2 y 3, correctas, la 1 (snow effect NOP) falla, tarda muchísimo en cada paso, como 15 o 17 t-states más de lo debido. Esa podría ser la razón del fallo del IRContention y, quizá, del floatspy.

Un empujón más y lo tienes (tenemos). :)
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

Avatar de Usuario
Kyp
Mensajes: 888
Registrado: 03 Oct 2013 17:13
Agradecido : 132 veces
Agradecimiento recibido: 347 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor Kyp » 18 Abr 2020 16:04

A mi lo que me mosquea es que el IRContention salga así. Es como si la CPU no fuera a la velocidad correcta.

Avatar de Usuario
zx81
Mensajes: 516
Registrado: 23 Feb 2013 21:31
Agradecido : 138 veces
Agradecimiento recibido: 282 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor zx81 » 18 Abr 2020 16:48

A la velocidad correcta yo creo que va, porque hice la prueba de comparar el ciclo de demo del Manic Miner y no se desincronizaba. Al menos, a nivel de frame yo diría que no se va de tiempos.
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

Avatar de Usuario
Kyp
Mensajes: 888
Registrado: 03 Oct 2013 17:13
Agradecido : 132 veces
Agradecimiento recibido: 347 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor Kyp » 18 Abr 2020 16:59

Concretando más... Parece que aa CPU va a la velocidad correcta cuando ejecuta código en memoria sin contienda, pero cuando lo ejecuta en memoria con contienda no. ¿Alguna idea de como probar eso?

Avatar de Usuario
zx81
Mensajes: 516
Registrado: 23 Feb 2013 21:31
Agradecido : 138 veces
Agradecimiento recibido: 282 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor zx81 » 18 Abr 2020 17:54

El test de timings que tengo de Patrick Rak (no recuerdo ni de donde lo saqué) muestra claramente que algo va más lento en la opción 1 (snow effect NOP). La pega de ese test es que tenemos el TAP pero no los fuentes, para saber lo que hace exactamente.
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

Avatar de Usuario
DyLucke
Mensajes: 4726
Registrado: 30 Oct 2010 12:52
Ubicación: Pompaela vieja
Agradecido : 136 veces
Agradecimiento recibido: 183 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor DyLucke » 18 Abr 2020 18:03

Hace años hablé de un proyecto denominado V6Z80P.

Este ordenador que es básicamente un Z80 capaz de emular un Spectrum o incluso un Pentagon, que monta un Z80 a 16mhz,
y el resto del hard en una FPGA, y que por sí mismo es capaz de representar 256 colores en pantalla, 55 sprites por scanline,
y cuenta con 4 u 8 canales de audio digital, era un cacharro muy interesante.

Creo, que toda la información de desarrollo es libre a día de hoy.
Valdría la pena que lo evaluárais, si no es por "crear un cacharro desde cero por uno mismo".
"I'm playing games.
You've nowhere to run,
I'm a piece of the sun,
i'm an army of one...
I'm the man with the gun".

Avatar de Usuario
Kyp
Mensajes: 888
Registrado: 03 Oct 2013 17:13
Agradecido : 132 veces
Agradecimiento recibido: 347 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor Kyp » 18 Abr 2020 18:41

El principal problema que tengo es que el Z80 está implementado de una forma digamos 'diferente'. Está pensado para funcionar a varias velocidades múltiplos de 3.5 (3.5, 7, 14, 28), pero en vez cambiar de señal de reloj, funciona siempre a 28 y tiene una señal para decirle si usa todos los pulsos de clock (28 MHZ), uno de cada dos (14 MHz), etc... bueno, para ser exactos tiene dos señales, una para usar los flancos positivos y otra para los flancos negativos. En teoría se le podría meter una señal de clock 'normal' de 3.5 y dejando los clock enables siempre activos debería funcionar como un chip real (como pasa con otras implementaciones de chips que funcionan de esa manera, el AY por ejemplo), pero si hago eso el Z80 va a la mitad de velocidad, no se por qué. Hay que ponerle un clock de 7 MHz para que funcione a la velocidad normal. Y llegados a este punto ya no se si fiarme de que la cosa esté funcionando como debe.

Es el Z80 corregido por Sorgelig para la Mist o Mister. ¿Podría alguien pasar el IRCONTENT y el ULATEST3M en una Mist y/o Mister y poner una captura? ¿A ver como se comportan? En la Mist/Mister si que usa un clock de 28 MHz y los clock enables. Y la última versión para el ZX-Uno del core de mcleod también usa este core de Z80 con clock enables (yo todavía no me he actualizado), también agradecería unas capturas.

Avatar de Usuario
zx81
Mensajes: 516
Registrado: 23 Feb 2013 21:31
Agradecido : 138 veces
Agradecimiento recibido: 282 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor zx81 » 18 Abr 2020 18:57

En el vídeo de amigawave en YT en el que me entrevistaron, probaron el IRContention en varias FPGAs, y todas hacían más o menos lo mismo, diría que idéntico.

En el ZX-Uno, el Ulatest3m los valores de contención salen desplazados una columna a la izquierda, incluso en el último core, lo probé ayer. No tengo más FPGA que el Zx-Uno.
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

Avatar de Usuario
Kyp
Mensajes: 888
Registrado: 03 Oct 2013 17:13
Agradecido : 132 veces
Agradecimiento recibido: 347 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor Kyp » 18 Abr 2020 19:27

Tengo pendiente ver ese video :(

De momento he buscado el momento del video donde sale la prueba y, bueno, me hago una idea.

Si pasas ese test en un Spectrum real (que lo acabo de hacer) lo primero que me llama la atención es que hay ula-snow. Mi implementación, de momento, no tiene ula-snow. Se supone que la última de mcleod si (no lo he probado). La mist ni idea. Por chinchar un poco... también lo he probado en el baremulator y no recuerdo que saliera el ula-snow -507

ircont.jpg
ircont.jpg (25.39 KiB) Visto 1002 veces

No, no funciona mal el Spectrum -no -grin

Toqueteando la implementación veo que afecta y mucho la contienda en cuanto a donde salen los bloques de color. Me gustaría saber si hay algún test que no dependa de la contienda para saber si la CPU va a la velocidad correcta y descartar ese factor, y entonces meterme a ver por que falla. Viendo el código del zxuno o de la mist, ninguno (yo tampoco) la implementa igual que como lo hace la ULA real. Lo primero que voy a probar es eso.

Avatar de Usuario
zx81
Mensajes: 516
Registrado: 23 Feb 2013 21:31
Agradecido : 138 veces
Agradecimiento recibido: 282 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor zx81 » 18 Abr 2020 20:10

No, mis emuladores no intentan siquiera emular eso, lo hice en JSpeccy hace mucho y me parecía antinatural, quizá en FPGA se modele mejor, en software es como inventarse donde hacerlo.

De hecho, si esa imagen que pones es de tu Spectrum real, el ZX-Uno se inventa lo que le sale de las narices, porque saca muchísimo más snow. Lo que yo digo, decir que emulas eso es wishful-thinking.

De velocidad tienes el Tmeter y sale bien, porque fue otro de los que probé.
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

Avatar de Usuario
desUBIKado
Mensajes: 545
Registrado: 15 Dic 2017 19:50
Agradecido : 174 veces
Agradecimiento recibido: 918 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor desUBIKado » 19 Abr 2020 17:40

Kyp escribió:¿Podría alguien pasar el IRCONTENT y el ULATEST3M en una Mist y/o Mister y poner una captura? ¿A ver como se comportan? En la Mist/Mister si que usa un clock de 28 MHz y los clock enables. Y la última versión para el ZX-Uno del core de mcleod también usa este core de Z80 con clock enables (yo todavía no me he actualizado), también agradecería unas capturas.


Aquí unos pantallazos de la ejecución de esos programas en el core de Spectrum de la MiST

P1090215.JPG
P1090215.JPG (338.97 KiB) Visto 966 veces


P1090216.JPG
P1090216.JPG (272.4 KiB) Visto 966 veces

Avatar de Usuario
zx81
Mensajes: 516
Registrado: 23 Feb 2013 21:31
Agradecido : 138 veces
Agradecimiento recibido: 282 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor zx81 » 19 Abr 2020 17:57

Bien por esos pantallazos, desUBIKado.

En la pantalla del IR_Contention no te dejes engañar Kyp. En el borde superior la banda roja está bien, pero la magenta empieza un carácter tarde, la verde lo mismo y la azul empieza un carácter tarde también.

Luego la de abajo, ya es descaraje total.
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

Avatar de Usuario
Kyp
Mensajes: 888
Registrado: 03 Oct 2013 17:13
Agradecido : 132 veces
Agradecimiento recibido: 347 veces

Re: Sintetizando un Specturm con FPGA

Mensajepor Kyp » 21 Abr 2020 19:38

zx81 escribió:En la pantalla del IR_Contention no te dejes engañar Kyp. En el borde superior la banda roja está bien, pero la magenta empieza un carácter tarde, la verde lo mismo y la azul empieza un carácter tarde también. Luego la de abajo, ya es descaraje total.

Si, lo había notado, pero ya he encontrado un bug que provocaba el fallo el borde superior -grin

captura.png
captura.png (285.44 KiB) Visto 2321 veces


Estoy probando la implementación de la ULA de un clon que estamos haciendo, el ZX128+, en el ZX-Uno, pero como se ve en la imagen, sigue fallando la parte de abajo. En el clon, que tiene un Z80 real, tanto el IRcontention como el ULATEST3M sale perfecto, pero el mísmo código en el ZX-Uno sale mal. Empiezo a pensar que el core del Z80 sigue fallando -banghead

desUBIKado escribió:Aquí unos pantallazos de la ejecución de esos programas en el core de Spectrum de la MiST

Gracias -thumbup

El IRcontention tiene el fallo del borde superior igual que tenía el mio pero por abajo es diferente. Que curioso. Tengo que hacer una prueba...

El ULATSET3M se puede dar por bueno, que salga el primer FF azul a partir del 14336 o del 14337 depende de si se implementa early o late timing. Los emuladores suelen implementar el que empieza en 14336 pero en el mundo real hay Spectrums de los dos tipos. Depende de la tolerancia de la ULA y del Z80. Lo he probado en mis Spectrums y tengo de los dos tipos.


Volver a “Placas FPGA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados