Clon Superfo 128K - Manos a la obra

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
Hark0
Amiga 1200
Amiga 1200
Mensajes: 1695
Registrado: 11 Jul 2012, 23:44
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: (Otro)
Primera consola: (Otro)
Ubicación: Cornellà de Llobregat - Barcelona
Contactar:

Re: Clon Superfo 128K - Manos a la obra

Mensajepor Hark0 » 11 Abr 2013, 19:02

mcleod_ideafix escribió:
LexSparrow escribió:Lo mismo me pasa a mí. Pensaba que el Orcad sólo se usaba para hacer simulaciones de puertas lógicas sencillitas. Me está gustando ver pintado algo interesante.

Esto no se ha hecho con OrCAD (aunque por lo que me enseñó Don Superfo parece ser que sí puede simular sistemas más o menos complejos hechos con puertas lógicas). Esto está simulado con iSim, que es un componente del entorno de desarrollo ISE de Xilinx. El circuito se ha descrito enteramente en Verilog.



Toda esta documentación (léase ficheros de proyecto etc.)

¿Está disponible en alguna parte para los cotillas tal que yo?

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

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

Re: Clon Superfo 128K - Manos a la obra

Mensajepor antoniovillena » 11 Abr 2013, 19:29

Hark0 escribió:Toda esta documentación (léase ficheros de proyecto etc.)

¿Está disponible en alguna parte para los cotillas tal que yo?

:P


Toda la parte técnica del proyecto la tengo documentada en este hilo:

http://retrolandia.net/foro/showthread.php?tid=31

En cada nueva revisión publico el .pdf y el .dsn, lo malo es que no están todas, sólamente a partir del primer prototipo. También tienes los ficheros .max y gerber de la versión que mandamos a fabricar, y también lo estará para la placa definitiva para cuando esté lista (es un proyecto de hardware abierto).
Última edición por antoniovillena el 11 Abr 2013, 19:34, editado 1 vez en total.

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

Re: Clon Superfo 128K - Manos a la obra

Mensajepor mcleod_ideafix » 11 Abr 2013, 19:31

En lo que a la descripción en Verilog se refiere, la publicaré en cuanto esté completa, y con ella (o sin ella) hayamos terminado de depurar la placa del Superfo 128. :)
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: Clon Superfo 128K - Manos a la obra

Mensajepor antoniovillena » 11 Abr 2013, 19:33

Por cierto McLeod, a Superfo le pasa algo muy extraño con los colores, fíjate en las capturas de este hilo:

viewtopic.php?f=26&t=3074&start=70#p20085

La parte de abajo de la pantalla muestra bien los colores; sin embargo en la parte de arriba están mal, parece como que los componentes rojo y verde se intercambian entre sí. ¿Sabes a qué puede deberse?

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

Re: Clon Superfo 128K - Manos a la obra

Mensajepor mcleod_ideafix » 11 Abr 2013, 21:04

Es rarísimo, la verdad. En lo que llevo escrito de simulación, el color del borde es el mismo en todo el frame (una vez que le he hecho la corrección que he descrito). ¿Le pasa sólo a él o también a ti? Si es cosa suya nada más, entonces suena a corto o mala soldadura en la placa.

-- Actualizado 11 Abr 2013, 21:31 --

Otra cosa: ¿cómo funciona el jumper J13 para seleccionar el modo de contención Amstrad / Sinclair?
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: Clon Superfo 128K - Manos a la obra

Mensajepor antoniovillena » 11 Abr 2013, 22:08

mcleod_ideafix escribió:Es rarísimo, la verdad. En lo que llevo escrito de simulación, el color del borde es el mismo en todo el frame (una vez que le he hecho la corrección que he descrito). ¿Le pasa sólo a él o también a ti? Si es cosa suya nada más, entonces suena a corto o mala soldadura en la placa.

-- Actualizado 11 Abr 2013, 21:31 --

Otra cosa: ¿cómo funciona el jumper J13 para seleccionar el modo de contención Amstrad / Sinclair?


Le pasa sólo a él, yo veo los colores correctamente como puedes observar en los videos. Ok, se lo comento.

El conector J13 en teoría debería ser un conector de 2x2 con colocación de jumpers en horizontal o en vertical. Superfo por error lo hizo lineal, y por otro error le puso un conector con 5 pines en lugar de 4. En resumen, los dos errores se complementan. Si ponemos los jumpers abajo (dejando el pin sin conectar suelto) seleccionamos la paginación Sinclair (bancos contenidos 1/3/5/7). Hay que puentear los pines 1 y 5 para poder usar la otra configuración, que es poner los 2 jumpers arriba dejando libre el pin de abajo, seleccionando el modo Amstrad (bancos contenidos 0/1/2/3).

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

Re: Clon Superfo 128K - Manos a la obra

Mensajepor mcleod_ideafix » 11 Abr 2013, 22:36

antoniovillena escribió:Si ponemos los jumpers abajo (dejando el pin sin conectar suelto) seleccionamos la paginación Sinclair (bancos contenidos 1/3/5/7). Hay que puentear los pines 1 y 5 para poder usar la otra configuración, que es poner los 2 jumpers arriba dejando libre el pin de abajo, seleccionando el modo Amstrad (bancos contenidos 0/1/2/3).

A ver... esto en el esquemático (no en la placa), ¿cómo se traduce? J13 es un conector de 4 pines. ¿Qué señales (X0, X1, BANK0, BANK2) hay que unir para activar un modo u otro?

Otra cosa: he añadido un módulo en la simulación para que haga de "frame grabber", es decir, que coja los valores de RGB (8 bits cada uno) que se van generando y me los guarde en un fichero binario. Este fichero después lo interpreto como una imagen bitmap de 448x312 píxeles, a 24 bits de color. En la imagen aparece tanto la parte visible de la pantalla como la parte invisible, donde ocurren las señales de sincronismo. Así, no sólamente tengo el cronograma para ver las señales, sino que también puedo ver el resultado como si el circuito estuviera generando realmente una imagen a color. Puedo simular un frame (20ms) o puedo simular más tiempo, y luego dividir el resultado grabado en frames y componer una animación.

Para la prueba que estoy haciendo (borde de color azul, y leyendo de memoria siempre el patrón 01010101 tanto para bitmaps como para atributos) la imagen que sale es ésta:

Imagen
La parte de color negro es el intervalo de blanking, durante el cual no se emite nada (el multiplexor del final está en alta impedancia). He marcado en gris oscuro la parte del blanking en la que ocurre el sincronismo horizontal o vertical. En verde brillante, visible justo por debajo del borde inferior, está el intervalo durante el cual la señal INT del procesador está a nivel bajo.

Y aquí precisamente en la señal INT está el asunto: esta señal que veo es muuuuuy larga. En la ULA original, está a nivel bajo durante 32 T-estados de la CPU (64 píxeles). Aquí está a nivel bajo durante 312 píxeles (156 T-estados). Además, creo que ocurre 8 ciclos de pixel antes de lo debido. La cosa es que si en un programa el gestor de interrupción dura menos de estos 156 T-estados, al volver con RETI, la CPU se encontrará que aún está a nivel bajo INT, y volverá a disparar el gestor de interrupción (INT es activa por nivel) provocando probablemente errores en la temporización de algunos juegos (los hay en los que el gestor de interrupción lo único que tiene es un puñado pequeño de instrucciones para bajar o subir el bit 7 del registro R, que sirve al bucle principal del juego para saber cuándo ha ocurrido un retrazo vertical)
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: Clon Superfo 128K - Manos a la obra

Mensajepor antoniovillena » 11 Abr 2013, 22:49

mcleod_ideafix escribió:A ver... esto en el esquemático (no en la placa), ¿cómo se traduce? J13 es un conector de 4 pines. ¿Qué señales (X0, X1, BANK0, BANK2) hay que unir para activar un modo u otro?


Si unimos X0 con BANK0, y X1 con BANK2 tendríamos activado el modo Sinclair. Si por el contrario unimos X0 con BANK2 y X1 con BANK0 activamos el modo Amstrad.

mcleod_ideafix escribió:Otra cosa: he añadido un módulo en la simulación para que haga de "frame grabber", es decir, que coja los valores de RGB (8 bits cada uno) que se van generando y me los guarde en un fichero binario. Este fichero después lo interpreto como una imagen bitmap de 448x312 píxeles, a 24 bits de color. En la imagen aparece tanto la parte visible de la pantalla como la parte invisible, donde ocurren las señales de sincronismo. Así, no sólamente tengo el cronograma para ver las señales, sino que también puedo ver el resultado como si el circuito estuviera generando realmente una imagen a color. Puedo simular un frame (20ms) o puedo simular más tiempo, y luego dividir el resultado grabado en frames y componer una animación.

Para la prueba que estoy haciendo (borde de color azul, y leyendo de memoria siempre el patrón 01010101 tanto para bitmaps como para atributos) la imagen que sale es ésta:

Imagen
La parte de color negro es el intervalo de blanking, durante el cual no se emite nada (el multiplexor del final está en alta impedancia). He marcado en gris oscuro la parte del blanking en la que ocurre el sincronismo horizontal o vertical. En verde brillante, visible justo por debajo del borde inferior, está el intervalo durante el cual la señal INT del procesador está a nivel bajo.

Y aquí precisamente en la señal INT está el asunto: esta señal que veo es muuuuuy larga. En la ULA original, está a nivel bajo durante 32 T-estados de la CPU (64 píxeles). Aquí está a nivel bajo durante 312 píxeles (156 T-estados). Además, creo que ocurre 8 ciclos de pixel antes de lo debido. La cosa es que si en un programa el gestor de interrupción dura menos de estos 156 T-estados, al volver con RETI, la CPU se encontrará que aún está a nivel bajo INT, y volverá a disparar el gestor de interrupción (INT es activa por nivel).


Eres una caja de sorpresas. Lo próximo que será, ¿un video? :D

Prácticamente he mantenido el mismo circuito del Harlequin, sólo que por ahorrarme un inversor en HC8 utilizo otra señal para restablecer la señal INT. En lugar de /HC8 uso INTRE, si no funciona bien es por un fallo colateral. Mi intención era mantener intacta la temporización de INT.

-- Actualizado 11 Abr 2013, 21:54 --

Siéntete libre de escoger una señal alternativa a INTRE. Si no encuentras ninguna y verificas que podemos tener libre la puerta OR U6D, puedo hacer una serie de intercambios de puertas para que la que se nos quede libre sea una NAND, y por tanto poder negar HC8.

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: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: Clon Superfo 128K - Manos a la obra

Mensajepor radastan » 11 Abr 2013, 23:57

Hola a todos, acabo de llegar a casa tras 2200 Km de viaje en dos días y me he encontrado un bonito sobre junto al teclado del ordenador.

Mañana me pongo a montar el clon y empiezo a aportar con capturas de osciloscopio, también actualizaré el inicio del hilo con lo que se ha mascado en estos días por parte de Mc Leod (gracias por ayudarnos).

Ahora a la cama... :-$
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

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

Re: Clon Superfo 128K - Manos a la obra

Mensajepor mcleod_ideafix » 12 Abr 2013, 05:21

antoniovillena escribió:Eres una caja de sorpresas. Lo próximo que será, ¿un video? :D

Pues mira, sí (bueno, cortito, pero video).

He añadido otro módulo que hace lo mismo que el anterior, pero en lugar de grabar un frame (20ms) graba todos los que yo le diga. Además de esto, ya le he puesto la primera de las dos memorias (U4 para ser exactos) y he cargado un volcado de la pantalla de carga del Jetpac, que tiene el título en flash. Luego he simulado el tiempo equivalente a 32 frames (el flash cambia cada 16 frames) volcando todos los píxeles generados a un fichero, como antes. He cogido ese fichero, lo he partido en frames de 448x312 píxeles cada uno en formato RAW, las he convertido a PNG, y con un editor de GIF's animados las he unido en uno. El resultado es éste:

Imagen

Aunque la animación está, obviamente, en bucle, en los 0,64 segundos que realmente he grabado no se ha observado ningún tipo de basurilla en pantalla.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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