TEST 21

Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Re: TEST 21

Mensaje por neuro_999 » 01 Jul 2016, 09:08

Yo a un amigo que tiene montado un proto v4 le he actualizado al ultimo core del repo oficial con la bios 0.43 del repo de antonio.
En mi proto 3 voy a intentar meter el ultino test21 con la bios 0.43. Ayer modifique el fichero de pines y el tld_zxuno_v3.v con los nuevos relojes y me lo genero bien. A ver si esta tarde puedo probar a enviarlo y mirar si funciona.

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: TEST 21

Mensaje por Uto » 01 Jul 2016, 14:48

@mcleod_ideafix, por lo que he entendido de lo que has dicho en WOS, básicamente no cabe (te faltan recursos) para el modo 28Mhz, al menos sin quitar otro modo turbo, y sugieres la posibilidad de que hubiera un core con 28, 7 y 3.5 , o 28, 14 y 3.5. Entiendo que lo sugieres como core alternativo pero... ¿tendría sentido que no fuera el alternativo sino el principal/oficial?

Sinceramente, ese modo de 28Mhz me parece "apetitoso" y si hay que perder otro modo turbo pues no me parece mucho problema, pero no se qué pensarán los demás. A priori y pensando en modo cavernícola, yo me tiraría de cabeza sobre una opcion 28,14, 3.5, y quitar el de 7 (burro grande, ande o no ande), pero lo mismo se me está pasando algo por alto y el de 7 es buenísimo porque vaya-usted-a-saber-qué

Las opciones serían estas ¿no?

-28,14,3.5
-28,7,3.5
-14,7,3.5 (actual)

Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Re: TEST 21

Mensaje por Quest » 01 Jul 2016, 15:12

Uto escribió:@mcleod_ideafix, por lo que he entendido de lo que has dicho en WOS, básicamente no cabe (te faltan recursos) para el modo 28Mhz, al menos sin quitar otro modo turbo, y sugieres la posibilidad de que hubiera un core con 28, 7 y 3.5 , o 28, 14 y 3.5. Entiendo que lo sugieres como core alternativo pero... ¿tendría sentido que no fuera el alternativo sino el principal/oficial?

Sinceramente, ese modo de 28Mhz me parece "apetitoso" y si hay que perder otro modo turbo pues no me parece mucho problema, pero no se qué pensarán los demás. A priori y pensando en modo cavernícola, yo me tiraría de cabeza sobre una opcion 28,14, 3.5, y quitar el de 7 (burro grande, ande o no ande), pero lo mismo se me está pasando algo por alto y el de 7 es buenísimo porque vaya-usted-a-saber-qué

Las opciones serían estas ¿no?

-28,14,3.5
-28,7,3.5
-14,7,3.5 (actual)
No he leido lo de WOS, pero te puedo decir que cuando estuvimos probando exhaustivamente el modo de 28Mhz, los resultados no fueron buenos. Corrupciones y cuelgues, incompatibilidades con lo existente... Se decició retirarlo. Desconozco si Mcleod hizo alguna mejora posterior que no hubiera publicado o mencionado (no que yo sepa).

Al margen de esto, no veo cuál puede ser el motivo por el cual pueda ser tan apetitoso un modo de 28Mhz en un spectrum. En todo caso sería para algún experimento de software propio, o cacharrear un poco por curiosidad (publico objetivo muy muy limitado y residual).

Por otro lado, al contrario de lo que dices, el modo más útil (fuera del normal a 3.5Mhz, claro), es el de 7Mhz, puesto que SI hay algo de software para él, como por ejemplo la demo del SMB (super mario), si no me equivoco de origen ¿ruso?, y algunas demos más. En la escena es usado. Los que no son usados ni hay nada para ellos que yo sepa son modos de mayor velocidad como 14 o 28. Por mí, con 3.5 y 7 sobra, porque el resto sería puramente residual. Pero el de 14 nos viene bien para acelerar ciertas partes del arranque del zxuno, previas a la carga de la ROM, y las cargas desde SD.

No obstante, si que podría interesar a algunos (en caso de conseguirse) un core "beta" especial para los que quieran cacharrear con modos un poco más "hardcore", cargándolos por ejemplo, como core en algún slot secundario, o lo que sea.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: TEST 21

Mensaje por Uto » 01 Jul 2016, 17:19

Quest escribió: Por otro lado, al contrario de lo que dices, el modo más útil (fuera del normal a 3.5Mhz, claro), es el de 7Mhz, puesto que SI hay algo de software para él, como por ejemplo la demo del SMB (super mario), si no me equivoco de origen ¿ruso?, y algunas demos más. En la escena es usado.
Edito porque me enrollo como las persianas XD

Lo que has comentado esa es una razón muy de peso para que el de 7 se quede. Ahora, suponiendo que el de 28 funcione (mcleod dirá) no veo razón para elegir el de 14 sobre el de 28. Ninguno de los dos ha sido usado por nadie, pero uno va el doble de deprisa que el otro, y si alguien necesita un modo turbo para un desarrollo nuevo que necesita mucho cálculo por lo que sea, casi seguro que no se queja sino todo lo contrario si en vez de 14 tiene 28.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: TEST 21

Mensaje por mcleod_ideafix » 01 Jul 2016, 17:36

Quest escribió:No he leido lo de WOS, pero te puedo decir que cuando estuvimos probando exhaustivamente el modo de 28Mhz, los resultados no fueron buenos. Corrupciones y cuelgues, incompatibilidades con lo existente... Se decició retirarlo. Desconozco si Mcleod hizo alguna mejora posterior que no hubiera publicado o mencionado (no que yo sepa).
El problema de los 28MHz es que es la máxima frecuencia que se genera en el core, a partir del reloj de 50MHz, usando PLLs. Es un problema porque ciertos periféricos, como la flash, necesitan funcionar a una velocidad al menos el doble que la CPU, para poder funcionar correctamente. Hasta ahora, con el tope en 3.5MHz y luego en 7MHz, los periféricos funcionaban a 28MHz (más del doble de lo requerido). Al añadir la frecuencia de 14MHz no hubo problemas, pero al intentar añadir la frecuencia de 28MHz, hubiera sido necesario aumentar la frecuencia de salida del PLL a 56MHz, cosa que se puede hacer, pero me obligaría a cambiar más de una cosa, y como el TEST 21 ya iba cargadito de cambios, no quise añadir uno más, y además delicado.

La otra razón, como comentaba, es que la FPGA tiene un número limitado de bufferes globales (rutas rápidas) por las cuales pueden circular los relojes. Para poder elegir dinámicamente un reloj u otro en el sistema uso unos multiplexores especiales en la FPGA que permiten conmutar de un reloj a otro sin producir glitches, pero esos multiplexores necesitan que tanto sus entradas como sus salidas sean bufferes globales, así que el número de bufferes globales se dispara, hasta que llegaba un momento en que si metía 4 relojes para elegir uno de ellos, me quedaba sin búfferes y el place and route se veía forzado a "fabricar" bufferes de reloj usando lógica de interconexión interna, que es mucho más lenta y más vulnerable a variaciones de skew, lo que supone, en la práctica, un desastre.

La forma correcta de soportar 28MHz es rehacer el módulo cuatro_relojes.v para que genere de partida un reloj de 56MHz, y que dicho reloj sea el que varíe ligeramente para dar soporte a las distintas frecuencias de refresco vertical que soportamos en ZX-UNO. Con un reloj de 56MHz como reloj base, ya se puede hacer que el módulo SPI (y por tanto la flash) vayan a esa frecuencia.

Esto, contando con que el diseño pueda funcionar a 56MHz, cosa que hay que mirar en el reporte de síntesis.

Así que eran tantas las "cositas" que había que solventar que, sinceramente, al sopesar los pros y los contras, decidí ir a lo seguro y estable, y plantarme en 14MHz. 28MHz de CPU no es imposible, pero de momento es una opción que dejo aparcada. Si alguien quiere intentarlo, ya sabe por dónde empezar a tocar ;) Llegué a poderlo usar, pero un poco a trancas y barrancas. Primero, era con una BIOS que no usaba ningún modo turbo para leer la flash, así que el arranque, aunque tuviera habilitado 28MHz, iba bien. Desde ESXDOS, como siempre, cargaba algún juego (hice la prueba con Manic Miner). Cargaba el cargador BASIC del juego y ponía un STOP antes del RANDOMIZE USR. Dejaba cargar el juego desde DivMMC como siempre hasta el STOP. Entonces es cuando conmutaba a 28MHz y acto seguido, lanzaba el RANDOMIZE USR. El Manic Miner efectivamente va a una leche brutal, pero va.

Otra cosa curiosa de ver es una carga por EAR a 28MHz. No recuerdo si conseguí hacerla andar a esa frecuencia, pero a 14MHz sí que he cargado cosas por EAR (y cualquiera de vosotros puede intentarlo).

Por último, y respondiendo un poco a lo que decía Quest, un modo de 28MHz es útil quizás para incentivar el desarrollo de juegos en Sinclair BASIC, ya que una velocidad 8 veces mayor que el BASIC original, ya te da cancha para hacer juegos en BASIC puro y que sean jugables. Por otra parte, Andrew Owen desarrolló una especificación para un supuesto coprocesador matemático para usar con el Spectrum. Este coprocesador haría las mismas funciones que la RST #28 de la ROM, pero en hardware. Con este copro, el BASIC del Spectrum se aceleraría muchísimo más. Lo malo es que implementar ese copro es muy complejo, sobre todo porque el calculador de la ROM no sólamente maneja números sino también cadenas. Le comenté a Andrew que una opción factible para obtener algo parecido a un rendimiento de copro en el BASIC del Spectrum podríá ser elevar la velocidad de la CPU al máximo cuando entrase en la RST #28, para volverla a dejar como estaba al salir de ella. En ese sentido, cuanto más velocidad consigas implementar, mejor. A Andrew le gustó la idea y la podría implementar en una siguiente revisión del Open SE.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Re: TEST 21

Mensaje por Quest » 01 Jul 2016, 17:55

Claro cristalino :)
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: TEST 21

Mensaje por Uto » 01 Jul 2016, 19:39

Yo no lo veo tan cristalino porque no entiendo la mitad de lo que dice mcleod en los párrafos 2 y 3 jajaja, pero vamos, que he entendido lo suficiente como para saber por qué 28Mhz al menos por ahora NO.

Aparte del BASIC, otro uso interesante de los 28Mhz, si algun dia puede ser, es permitir hacer rutínas que tengan un orden de magnitud elevado en un Spectrum. Se me ocurren cosas como calcular movimientos de un juego de ajedrez, el IA de un juego de estrategia en tiempo real, o cualquier tipo de IA en general.

Para todo eso creo que es mejor 28 que 14, pero si a día de hoy no puede ser, 14 me parecen fantásticos, ya veremos si alguien los aprovecha y hasta donde da la cosa :-)

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

Re: TEST 21

Mensaje por carmeloco » 01 Jul 2016, 22:46

No me quiteis el modo 7MHz, que es el mejor para jugar al outrun, jajajajaja

Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Re: TEST 21

Mensaje por neuro_999 » 02 Jul 2016, 09:24

Core probado en una placa v3 y la bios 0.43. Funciona perfectamente, me queda pendiente hacer pruebas con los modos turbos, pero de momento parece estable.
Anexo los pequeños cambios que hay que hacer en un par de ficheros para poder "compilarlo".

Gracias Macleod por el impresionante core que te has currado. :chocala!:
Adjuntos
Fix_v3.7z
(2.34 KiB) Descargado 181 veces

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

Re: TEST 21

Mensaje por carmeloco » 02 Jul 2016, 18:19

Dónde está la bios 0.43? La del repositorio no me funciona. Sale todo corrupto.

Responder