Avances en el desarrollo del ZX-Uno

Sinclair QL, ZX81, +2, +3, 128K ...
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: 54 veces
Contactar:

Re: Avances en el desarrollo del ZX-Uno

Mensajepor mcleod_ideafix » 09 Mar 2014, 20:52

jepalza escribió:Vaya...no nos has dejado nada a los demas. Me hubiera gustado ser un poquito mas útil y haber aportado al menos el 1% en el ZXUNO, pero no se puede competir con Mcleod_Ideafix, ni si quiera con su horario nocturno...

Pues siento oir eso :( Entiendo que estoy en el "Equipo ZX-Uno" precisamente porque se me da bien esto del Verilog y las FPGA's, y es precisamente ahora cuando puedo echar una mano. Cuando llegue el verano, o incluso antes, estaré fuera de combate: primero por el final de curso, luego por el nacimiento de nuestro hijo, y en medio de eso, todo mi despacho/laboratorio tendrá que irse a hibenar. De aquí a dos meses no podré hacer nada de nada, salvo que lo haga en la facultad, y sólo cuando tenga algo de tiempo libre, que allí es poco.

Es por eso por lo que me he dado prisa. Bueno, por eso, porque ya tengo esto dominado, y porque quiero presentar el core como trabajo de Fin de Máster :D

-- Actualizado 09 Mar 2014, 20:56 --

JULIO escribió:Con el zxuno apagado puse una sd de 2Gb no HC, (la unica que tengo) lo demas son micro ó sdhc.

Si tienes un adaptador SD - microSD, también te valen las micro. De hecho la que tengo puesta yo es una microSD de 1GB con su adaptador correspondiente.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

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

Re: Avances en el desarrollo del ZX-Uno

Mensajepor antoniovillena » 09 Mar 2014, 21:37

mcleod_ideafix escribió:No encuentro otra explicación a lo que está pasando con juegos como el King's Valley. Cambié el arbitrador, el sistema de gestión de memoria.... nada. Y es un juego que se ejecuta hasta en clones raros como el Robik, donde la implementación de la ULA no tiene nada que ver con la del Spectrum original.

Así que para atajar el problema, habría que hacer la siguiente prueba: coger un Z80 CMOS, pincharlo en una placa blanca, y conectarlo con cables al slot de expansión del ZX-Uno. Modificar el diseño del core para eliminar el core T80 y que use en su lugar el Z80 real, y ver si los problemas con estos juegos se han solucionado o no.


Lo veo demasiado complejo. Puedes detectar el error por búsqueda binaria mediante un contador. Me explico:
  • Cargas un snapshot del juego momentos antes de que aparezca el error (pueden ser varios segundos)
  • En el momento de la carga pones a cero un contador que cuente ciclos de reloj
  • Comparas el contador con un valor que tú le pongas de antemano
  • Cuando el contador llegue a ese valor vuelcas el contenido del snapshot (a cinta o a un fichero en la SD)
  • Con un emulador compruebas si el snapshot se cuelga o no se cuelga

Puede parecer una burrada de tiempo tener que estar ajustando el contador, pero todo lo contrario. Yo he usado esta técnica para detectar errores en emuladores y doy fe de que funciona perfectamente. Normalmente en menos de 20 iteraciones consigues dar con la intrucción problemática. Para ser más eficiente en la búsqueda binaria usa números hexadecimales para el contador. Un ejemplo sería:
  • Pongo el contador a $100000 y pruebo el snapshot en emulador, no se cuelga
  • Pongo el contador a $200000 y pruebo el snapshot en emulador, se cuelga
  • Pongo el contador a $180000 y pruebo el snapshot en emulador, se cuelga
  • Pongo el contador a $140000 y pruebo el snapshot en emulador, no se cuelga
  • Pongo el contador a $160000 y pruebo el snapshot en emulador, no se cuelga
  • Pongo el contador a $170000 y pruebo el snapshot en emulador, no se cuelga
  • Pongo el contador a $178000 y pruebo el snapshot en emulador, se cuelga
  • Pongo el contador a $174000 y pruebo el snapshot en emulador, se cuelga
    ...
  • Después de unas cuantas iteraciones el contador vale $173285, compruebo en un emulador cuál es la instrucción que da el fallo y le meto mano al core T80 justo en esa instrucción.

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: 54 veces
Contactar:

Re: Avances en el desarrollo del ZX-Uno

Mensajepor mcleod_ideafix » 09 Mar 2014, 21:49

Todo eso puede funcionar en un emulador. Aquí tareas como "cargar un snapshot", "poner a cero un contador en la carga" o "guardar un snapshot" requieren hacer electrónica y firmware para ello. Lo de enchufar un Z80 real es muchisimo más sencillo. Recuerda que aquí no estás depurando un programa, que se ejecuta secuencialmente, sino un diseño electrónico que tiene muchos módulos que se ejecutan en paralelo. La simulación de tal engendro es muy lenta, y cuando tú haces F7, F7, F7 para ir ejecutando instrucciones paso a paso desde tu compilador, aquí es ejecutar en muchos casos líneas de código Verilog ¡sin que el tiempo avance! (porque estás ejecutando paso a paso uno de los módulos de los muchos que van en paralelo).

Tanto es así que cuando hay que depurar estas cosas se suele utilizar el ChipScope, lo que pasa es que me temo que ya no tengo espacio para el core del ChipScope. En mi caso, para depurar los errores de SPI, he recurrido (y se puede ver en las fotos) a un analizador lógico de 34 canales: es la única forma (que yo conozco) de poder depurar este tipo de cosas.

Dejar pasar hasta 1 segundo antes del fallo supone que tengo que depurar 3 millones quinientos mil ciclos de reloj (¡de CPU! porque del sistema son 28 millones). Podemos llevarnos hasta el día del juicio final si tuviera que hacerlo así.

Lo que necesito es:
- Descartar de una vez por todas que el problema no es de otro módulo, y esté echándole las culpas al T80 sin motivo: para ello tengo que quitar el T80 y poner otra cosa que sepa seguro que funciona: un Z80 real.
- Si el fallo se sigue produciendo, ya puedo dejar al T80 trnaquilo y centrarme en ver qué pasa con la memoria o yo qué sé.
- Si el fallo deja de producirse, probablemente me haré fan empedernido de añadir un Z80 real al ZX-Uno en el diseño final. Como seré yo solo contra todo el mundo, habrá que depurar el T80, core parcheado donde los haya, peor documentado, y escrito en VHDL, que no domino :( Si tengo que depurarlo yo solo, ya habrá que esperar. Cualquier ayuda en este sentido será estupenda :)

Además, ya he señalado algunos fallos en el diseño del circuito, en concreto la falta de planos de masa "como Diox manda" en la placa, lo que hace que la impedancia de algunas líneas sea demasiado alta y haya problemas con la Flash SPI y quizás otras cosillas.

No sé qué prisa habrá por producir el ZX-Uno a-la-de-ya, pero a estos prototipos les quedan al menos hasta fin de año para hacerles el rodaje. Es mi opinión, claro.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

JULIO
Commodore 128
Commodore 128
Mensajes: 121
Registrado: 22 Feb 2013, 18:58
Sistema Favorito: Spectrum +2
primer_sistema: Spectrum 16Kb/48Kb
Primera consola: TV Games/Pong Clone

Re: Avances en el desarrollo del ZX-Uno

Mensajepor JULIO » 10 Mar 2014, 00:05

Si el rodaje, que sea suavecito porque algo falla en las placas y mira que soy cuidadoso...

La he bañado literalmente en isopropilico, la he sopleteado, he repasado soldaduras cuidadosamente y...
sigue sin detectarme la tarjeta, para colmo me aparece un fallo que antes no tenía, de manera
erratica, no siempre, se distorsiona la imagen pierdo el color y si paso el dedo por la zona del ad724
unas veces si y otras no, se recupera la nitidez y el color, como esto antes no me pasaba, pero sí sé
que os ha pasado a vosotros pues al menos se comporta mas acorde con las que todavia funcionan.

Los dos tap no eran el kings valley o el cobra, eran el atic atac y el underwulde, nostalgia pura.

Puede ser que tenga falso contacto con la tarjeta en el socket, no cabe duda. ¿Como podría repasar los contactos
sin arañarlos?

y...gracias por el aporte del editor de tarjetas, he podido borrar el inicio de la tarjeta y que me diga el pc
que no tiene formato, ¿Como se supone que le llega una tarjeta al consumidor? ¿Todo lleno de FF como las eprom?
¿Debería detectar la presencia de la tarjeta independientemente del formato?

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: 54 veces
Contactar:

Re: Avances en el desarrollo del ZX-Uno

Mensajepor mcleod_ideafix » 10 Mar 2014, 00:23

JULIO escribió:se distorsiona la imagen pierdo el color y si paso el dedo por la zona del ad724
unas veces si y otras no, se recupera la nitidez y el color, como esto antes no me pasaba, pero sí sé
que os ha pasado a vosotros pues al menos se comporta mas acorde con las que todavia funcionan.

Sí, a mi me pasa de vez en cuando, por no decir frecuentemente.

JULIO escribió:Los dos tap no eran el kings valley o el cobra, eran el atic atac y el underwulde, nostalgia pura.

No tiene nada que ver.

JULIO escribió:¿Debería detectar la presencia de la tarjeta independientemente del formato?

Sí. Siempre y cuando sea una SD no HC, tenga lo que tenga dentro, debería detectarla y ponerte 1 MMC.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

superfo
Dragon 32
Dragon 32
Mensajes: 18
Registrado: 21 Abr 2013, 09:01
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Nintendo GameBoy

Re: Avances en el desarrollo del ZX-Uno

Mensajepor superfo » 10 Mar 2014, 08:04

Hi,
I have tried test11 and it works very well.
How can I merge rom file into MCS file? I would like to use english version of 3e ROM.
Thanks!!

jepalza

Re: Avances en el desarrollo del ZX-Uno

Mensajepor jepalza » 10 Mar 2014, 11:25

superfo escribió:Hi,
I have tried test11 and it works very well.
How can I merge rom file into MCS file? I would like to use english version of 3e ROM.
Thanks!!


First at all, you need clean MCS from BIT ("tld_zxuno.bit") . Get it into IMPACT (you know!)
With this MCS generated, in MSDOS Prompt (and with SREC utilities), type:
srec_cat.exe tld_zxuno.mcs -intel spectrum_rom.bin -binary -offset 0x30000 -o final.mcs -intel

Offset 0x30000 is very important, is the beginning of ROM space in order to read it into ZXUNO

Avatar de Usuario
Kyp
Commodore 128
Commodore 128
Mensajes: 80
Registrado: 31 Dic 2013, 12:42
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: Vectrex
Gracias dadas: 11 veces
Gracias recibidas: 10 veces

Re: Avances en el desarrollo del ZX-Uno

Mensajepor Kyp » 10 Mar 2014, 15:15

JULIO escribió:y...gracias por el aporte del editor de tarjetas, he podido borrar el inicio de la tarjeta y que me diga el pc
que no tiene formato, ¿Como se supone que le llega una tarjeta al consumidor? ¿Todo lleno de FF como las eprom?
¿Debería detectar la presencia de la tarjeta independientemente del formato?


Que yo recuerde todas las que he visto venían preformateadas, generalmente en FAT32. Windows no escribe tabla de particiones en los dispositivos extraibles (no confundir con conectable en caliente), el primer sector debería ser el de arranque del volumen. Es más bien como un disquete grande.

Pero si le pones tabla de particiones desde otro sistema, Linux por ejemplo, se lo traga aunque luego te da problemas a la hora de formatear la tarjeta. Para borrarlo da igual si escribes 0s, 1s o FFs (mientras nos escribas 55AA ;) ) y no es necesario borrar toda la tarjeta. Lo importante es que no haya un MBR en el primer sector (tabla de particiones) para que no se lie.

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

Re: Avances en el desarrollo del ZX-Uno

Mensajepor antoniovillena » 10 Mar 2014, 15:36

mcleod_ideafix escribió:Lo que necesito es:
- Descartar de una vez por todas que el problema no es de otro módulo, y esté echándole las culpas al T80 sin motivo: para ello tengo que quitar el T80 y poner otra cosa que sepa seguro que funciona: un Z80 real.
- Si el fallo se sigue produciendo, ya puedo dejar al T80 trnaquilo y centrarme en ver qué pasa con la memoria o yo qué sé.
- Si el fallo deja de producirse, probablemente me haré fan empedernido de añadir un Z80 real al ZX-Uno en el diseño final. Como seré yo solo contra todo el mundo, habrá que depurar el T80, core parcheado donde los haya, peor documentado, y escrito en VHDL, que no domino :( Si tengo que depurarlo yo solo, ya habrá que esperar. Cualquier ayuda en este sentido será estupenda :)

Además, ya he señalado algunos fallos en el diseño del circuito, en concreto la falta de planos de masa "como Diox manda" en la placa, lo que hace que la impedancia de algunas líneas sea demasiado alta y haya problemas con la Flash SPI y quizás otras cosillas.

No sé qué prisa habrá por producir el ZX-Uno a-la-de-ya, pero a estos prototipos les quedan al menos hasta fin de año para hacerles el rodaje. Es mi opinión, claro.


Con el método que te he indicado antes se puede generar un snapshot en cinta simplemente generando una NMI. Que sí, que es un coñazo el ciclo de grabado en wav y carga en emulador, pero es una alternativa a tener que pinchar un Z80 real.

¿Te refieres a poner planos de masa usando PCB de 2 capas? Te lo digo porque podemos hacer un segundo prototipo para asegurarnos. Si no hay más remedio pues habrá que tirar de PCBs de 4 capas. El problema es el precio, cuestan más del doble. En los prototipos pasaríamos de 2 euros/placa a 5 euros/placa. Quizás en la versión final la diferencia no sea tan grande, pero aun así pienso que si podemos hacerlo en 2 capas sin problemas de ruído no hay razón para hacerlo en 4 (no es sólo cuestión de precio).

La prisa no es por producirlos de inmediato, sino por tener un diseño acabado y que funcione. Al tratarse de un proyecto grande y complejo corre un riesgo importante de quedarse parado. Lo bueno es que al ser un proyecto abierto cualquier empresa ajena al equipo de desarrollo puede fabricarlos y venderlos por su cuenta.

jepalza

Re: Avances en el desarrollo del ZX-Uno

Mensajepor jepalza » 10 Mar 2014, 17:59

Para reformatear una SD medio muerta o con tabla tocada o que proviene de otro sistema no FAT, la herramienta ideal es" HP USB Disk Storage Format Tool V2.1.8". Se come con patatas la mayoría de problemas de formateo que "guindous" no traga.


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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