Clon Superfo 128K - Manos a la obra

Sinclair QL, ZX81, +2, +3, 128K ...
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 » 08 Abr 2013, 13:39

Gracias radastán, le he pasado la info a Superfo a ver si resuelve el problema.

Por fin he arreglado mi problema con el video compuesto. Era la patilla 16 del AD724, que estaba mal soldada. Al probar la continuidad con el polímetro medía mal porque hacía presión con la punta del polímetro y lo tomaba por bueno.

Aquí tenéis mi captura (no es una foto, es un snapshot tomado de una tarjeta capturadora).

imagen_estable.jpg
imagen_estable.jpg (92.95 KiB) Visto 7100 veces


Como podéis ver, en mi caso los colores son correctos, así que lo más probable es que no sea un bug, sino un problema en el receptor/placa con AD724 de Superfo. Todavía queda pendiente por arreglar lo de la nieve. Hoy he tenido la mañana muy liada, a ver si mañana puedo probar el programa BASIC de radastan y lo muestro por aquí.

-- Actualizado 09 Abr 2013, 09:14 --

Hola radastan. Superfo ha probado tu programa basic y esta es la respuesta:

I try this program and the result is random number, not zero.

Así que parece que tenemos un problema en la RAM. Voy a intentar probar mi clon con el test que hay en la ROM de los +2A/+3 a ver que tal.

-- Actualizado 09 Abr 2013, 10:57 --

Video de la primera prueba (aún sin haber hecho el mod)


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 » 09 Abr 2013, 13:53

Ya está listo el remiendo chapucero, un par de fotos y un video donde se ve que ya funciona.

P4090001.JPG
P4090001.JPG (542.84 KiB) Visto 7044 veces


P4090003.JPG
P4090003.JPG (552.47 KiB) Visto 7044 veces



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 » 09 Abr 2013, 14:34

Macho, en vídeo se nota a leguas que estás cogiendo datos del sistema como memoria de pantalla, mirad la parte de direccionamiento que la tenéis equivocada con seguridad. Es decir, la generación de imagen está perfecta (inicialmente).
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

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 » 09 Abr 2013, 15:16

Pues no lo sé, he revisado los esquemas varias veces y no encuentro el fallo. Lo único que se me ocurre es ver lo que está pasando con el analizador lógico. Por otro lado hay otro problema con el brillo que también hay que solucionar. A flopping ya le han llegado las placas. En cuanto te llegue el envío avísame.

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 » 09 Abr 2013, 16:26

antoniovillena escribió:En cuanto te llegue el envío avísame.


Yo mañana salgo de viaje por trabajo y no vuelvo hasta el Viernes, lo digo por si ves que no comento nada por aquí.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

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 » 10 Abr 2013, 13:40

Ya he depurado el problema con el brillo. Se necesita una resistencia en serie de 27 ohm para cada componente en el cable RGB, o en la plaquita del video compuesto. Yo le he puesto una de 22, por eso en el video se ve un poco saturado. De todas formas dejo aquí los cálculos, el circuito es éste, lo siento por mi poca pericia en el ASCII


Código: Seleccionar todo

Comp --|A|--+---|B|---+-- Video
            |         | 
            _         -
            V        75
            T         -
            |         |
Brillo -----+        --- GND


Serían 3 resistencias (A, B, 75) y un diodo 1N4148. La resistencia A está fijada en la PCB a 470 ohm, aún así la pongo para hacer los cálculos. Necesitamos un color 100% saturado (con brillo) y otro color 75% saturado (sin brillo). Como la señal de video es de 0.7V, los niveles serían 0.7V para el color con brillo y 0.75*0.7= 0.525V para el color sin brillo. Asumiendo 5V y 0V de Voh y Vol respectivamente en las salidas digitales y un Vdc de 0.7V para el diodo, tenemos estas 2 ecuaciones:

Código: Seleccionar todo

         75
  5 * -------- = 0.7
       75+A+B

         75
0.7 * -------- = 0.525
        75+B


Despejando nos sale A=435 y B=25. Como la resistencia A normalizada que hay en el circuito es de 470 ohm, lo lógico sería usar una resistencia en serie de 27 ohm. Al no disponer de la misma he puesto una de 22, por eso en el video se ven los colores un poco saturados.

Esta sería la foto con las resistencias que he puesto en el circuito de video compuesto:
P4100001.JPG
P4100001.JPG (552.06 KiB) Visto 6949 veces



Y este el video:

jepalza

Re: Clon Superfo 128K - Manos a la obra

Mensajepor jepalza » 10 Abr 2013, 18:00

Ya tengo en casa, delante mio, la placa y los componentes, y "tengo una pregunta para usted, sr. presidente" : ¿debo leerme las 9 hojas del hilo antes de hacer la placa? ¿ o es mejor esperar noticias desde otro frente?

Si hace falta, monto el invento, y os voy ayudando a buscar fallos. Vosotros diréis.

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 » 10 Abr 2013, 18:48

jepalza escribió:Ya tengo en casa, delante mio, la placa y los componentes, y "tengo una pregunta para usted, sr. presidente" : ¿debo leerme las 9 hojas del hilo antes de hacer la placa? ¿ o es mejor esperar noticias desde otro frente?

Si hace falta, monto el invento, y os voy ayudando a buscar fallos. Vosotros diréis.


No, no hace falta que te leas 9 hojas, aunque sí te recomiendo que le eches un vistazo a las fotos. Te voy a hacer un resumencillo:
  • Primero decide cómo vas a hacer el fix del borde: si lo haces de la forma elegante (cortes y puentes por atrás) antes de nada haz los cortes; Si lo haces en plan chapuza quédate con las resistencias implicadas para soldar sólo un extremo.
  • No te pongas a soldar zócalos sin mirar, a no ser que tengas repuestos. No hay que soldar todos los componentes, sólo los esenciales, que no incluyen sonido AY, joystick Kempston ni tarjeta CF. Importante, fíjate en las fotos de mi placa y suelda sólo los componentes que veas que he soldado yo.
  • Mucho cuidado con el conector de alimentación mini-USB. Superfo posicionó mal los agujeros de la huella, así que tendrás que cortar las mini-patas que sobresalen con un cutter. De los 5 pads sólamente es necesario soldar los de los extremos, puedes soldarlos todos pero no servirá de nada. Te lo digo porque son unos pines muy pequeños y como "te salgas" con el estaño luego va a ser complicado desoldarlo.
  • Tienes que hacerte tu propio cable de video: o el RGB-Scart o el Video Compuesto-RCA. El primero es más sencillo, lo diseñé para no tener que usar componentes, aunque debido a un fallo de última hora necesitas tres resistencias de 27 ohm (no están en el pack), a poner en serie con cada componente de color. Yo sólo te he suministrado el conector DB9. El Scart y opcionalmente el jack 3.5 para el puerto EAR los tienes que buscar por tu cuenta, yo lo que hice fue comprar un prolongador de Euroconector de los chinos que me da para 2 cables. Lo de la opcionalidad del puerto EAR es porque superfo puso una huella en la placa para este menester, pero no es estándar y no he conseguido encontrarlo. Si tienes algún conector por ahí que le entre o lo encuentras en la tienda mejor que mejor, no tendrías que complicar de más el cable de video. Por último si la cagas con el conector mini-USB, puedes meter la alimentación por el cable de video mientras yo te suministro otro conector.
  • ROM. Tienes un amplio abanico de posibilidades, de 28 o de 32 pines y de 16K en adelante. Si le pones 16K sólo te funcionará como un spectrum 48K. Si le pones 32K funcionará como +128K/+2. De 64K en adelante ya le puedes meter un +2A/+3/+3e. En el segundo envío te llegará tu EEPROM, AM29F040. Si ves que haces el apaño, por ejemplo te vale una 27c256 que es la que usan los +2A, puedo anularte la EEPROM de tu segundo pedido y hacerte la devolución en tu cuenta.
  • Teclado. Los conectores que suministro son para tira de pines, no para fajas. Los conectores macho de tiras de pines entran tanto en los de faja como en los de tiras de pines hembra. Tendrías que o bien adaptar el teclado para salir con tira de pines macho o buscarte conectores de fajas. Recomiendo lo primero porque de esta forma no se manipulan las fajas y por tanto no hay riesgo de que se agrieten.
  • Jumpers. Los 3 de NTSC/PAL se configuran con el jumper arriba. El de la ROM da igual, aunque dependiendo de cómo esté si tu chip es de 128K o más se selecciona un grupo de 4 bancos u otro. El de la paginación es una tira de 5 pines, usa dos jumpers dejando libre el pin de arriba. Si quieres cambiarlo de modo, tienes que hacer un puente entre los pines 1 y 5 de la tira.

Edito: Si quieres puedes esperarte a que resolvamos todos los fallos, es posible que haya que hacer más cortes y puentes y en caso de tener los componentes montados suele ser más difícil hacerlos, sobre todo los cortes. Pero mi recomendación es que la vayas montando y depurando. Siempre puedes comprar la placa definitiva y migrar los componentes, si pedimos 50 placas nos sale a 3,50 la placa.

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 » 10 Abr 2013, 20:59

Mientras busco el resto de componentes que me faltan para montar la placa, he tomado otro camino para poder echar una mano en los fallos que puedan aparecer, y es coger y meter todo el circuito como.... sí, ¡una descripción en Verilog!

Gracias a eso puedo poner "sondas" de analizador lógico donde quiera, y ver cualquier señal cómodamente. Así, me he encontrado con esto:
glitch_hc.png
glitch_hc.png (6.17 KiB) Visto 6878 veces

HC es el contador horizontal, de 0 a 447. Se incrementa en 1 cada 142ns aproximadamente. Puede observarse que las transiciones de una cuenta a la siguiente no son limpias, sino que hay pequeños glitches, siendo el más acusado el que ocurre cuando la cuenta pasa de 255 a 256. Una ampliación pone de manifiesto qué ocurre realmente con los valores de HC durante esa transición:
glitch_hc_ampliado.png
glitch_hc_ampliado.png (8.77 KiB) Visto 6878 veces

NOTA: Para ver esto en el circuito real, con un analizador lógico "de verdad" pinchado en el circuito, dicho analizador tendría que ser suficientemente rápido como para tomar muestras en la mitad del período de la señal que cambia más rapidamente, en este caso, ese periodo es de 8ns, lo que significa que el analizador debe ser capaz de capturar a 250MHz.

Estos glitches ocurren porque en este diseño se ha cambiado el contador original formado por 3 chips 74HC161 por un único 74HC4040. Lo malo del 4040 es que es un contador asíncrono (ripple counter), es decir, un contador en cascada. Los 74HC161 formaban entre los tres un contador síncrono.

Los contadores en cascada tienen el grave inconveniente de que las salidas del contador no se actualizan a la vez, sino que hay retrasos, y estos retrasos son más largos cuanto más significativo sea el bit a actualizar.

NOTA2: De hecho, en la ULA original el contador horizontal está formado por una mezcla de contadores síncronos y asíncronos. Según cuenta Chris Smith, el diseño original contemplaba un contador horizontal síncrono, pero al no haber celdas suficientes para implementar el "look ahead carry" que se requiere para estos contadores, parte del mismo tuvo que diseñarse en forma asíncrona, y eso origina que en pantalla, en determinados casos es posible ver una especie de sombra al lado de un carácter, consecuencia de un glitch en este contador.

Así, en la hoja de datos del 4040 dice que desde que hay un flanco de reloj hasta que se actualiza el bit menos significativo (que en nuestro caso sería HCa) pasan 16ns. El retraso de un bit respecto del anterior es de 8ns. Esto significa que HC0 se actualiza 24ns después del flanco de reloj, HC1 después de 32ns, y así hasta llegar a HC8 (el último bit usado en este contador), que se actualiza al cabo de 88ns.

Estos son datos suponiendo que la temperatura de trabajo sea de 25 grados, y la capacidad (en picofaradios) de los circuitos a los que se conecten las salidas del contador sea de 15pF. Una carga CMOS tiene unos 3,5pF de capacidad asociada, con lo que si una salida se conecta a más de 15/3.5=4 circuitos, la capacidad vista por esa salida será mayor. Cuanto mayor sea la temperatura o la capacidad, más lentas serán las transiciones.

Según cuál sea el valor actual en el contador, y cuál sea el siguiente, estos retrasos generarán valores falsos esporádicos (glitches) entre dos valores correctos. El caso más exagerado sería el paso del valor 255 al 256, ya que en binario esto significa pasar de 011111111 a 100000000. Con lo que acabo de decir, la secuencia sería así:

Partimos de 011111111 (255)
Ocurre un flanco de reloj. Al cabo de 24ns, se propaga el cambio al bit HC0: 011111110 (254)
Al cabo de 32ns, 011111100 (252)
Al cabo de 40ns, 011111000 (248)
Al cabo de 48ns, 011110000 (240)
Al cabo de 56ns, 011100000 (224)
Al cabo de 64ns, 011000000 (192)
Al cabo de 72ns, 010000000 (128)
Al cabo de 80ns, 000000000 (0)
Al cabo de 88ns, 100000000 (256)

Que son ni más ni menos que los valores que se ven en la versión ampliada del glitch.

En el primer cronograma se ve que en condiciones normales (transición limpia de una cuenta a la siguiente, por ejemplo al pasar de 256 a 257), para cuando la señal HCa (el reloj de 7MHz que se usa como reloj para otras partes del circuito) tiene un flanco positivo, el valor del contador es estable y conocido, pero un poco antes, cuando hemos pasado de 255 a 256, el valor del contador aún no es estable, y eso.... sólo puede acarrear problemas.

Aún no he escrito el circuito completo, pero me sospecho que por ejemplo, la parte que genera el valor para OutLatch y Vout puede verse afectada, ya que se emplean varios bits del contador horizontal, entre ellos HC8 que es el que más lento progresa. Este circuito genera dos señales bastante importantes: OutLatch y VOut. Ambas se usan como cerrojos para permitir el paso de los valores de bitmap y atributos desde la memoria al primer registro, y del primer registro al segundo (imaginaos una esclusa con dos compuertas, y mientras un barco pasa del primer al segundo compartimento, otro barco entra desde el exterior al primer compartimento). Si el baile de señales OutLatch y VOut no se realiza de forma sincrónica, puedes encontrarte con que el dato recién ingresado en memoria (controlado por VOut) machaca al que estaba a punto de marchar al siguiente registro, pero que no ha podido porque OutLatch aún no ha cambiado.
generador_outlatch.png
generador_outlatch.png (28.68 KiB) Visto 6878 veces


Quizás merezca la pena hacer lo siguiente: enfriar todo lo posible a U39. Cuanto más frío esté, menor será el tiempo de propagación de las señales en su interior y por tanto, menores los retrasos. Si al enfriarlo, el retraso disminuye y realmente ese retraso estaba fastidiando la señal de video, deberá verse cada vez menos "basura" en pantalla, hasta ver muy poca o ninguna. El efecto es similar al que me encontré hace ya tiempo, con la ULA original, y que también se arreglaba enfriando a la ULA (aunque en aquel caso, y dadas las temperatura habituales de la ULA de Ferranti, para enfriarla bastaba usar el dedo como disipador):
http://www.zxprojects.com/index.php/sim ... la-cooling

En este caso quizás haya que recurrir a un trozo de hielo envuelto herméticamente (para que no gotee) en papel de aluminio o algo por el estilo y ponerlo encima de U39.

Con todo, yo recomendaría volver a la configuración de contador completamente síncrono. No sé si habrá alguno de 9 bits o más (9 es lo que necesitamos). Hay más 4040 repartidos por el circuito, pero es que los demás no tienen un reloj tan rápido como U39, así que aun cuando también en ellos se producen los mismos glitches que en U39, la lentitud de las transicione de reloj hace que este efecto tenga menores consecuencias. Es más: si U40 fuera un contador síncrono, seguramente la señal VCrst actuaría antes de la cuenta y en lugar de contar hasta 312 (en PAL) contaría hasta 255 (como de hecho pasó en mi simulación al principio, cuando modelé U39 y U40 como contadores síncronos sin retardos)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

jepalza

Re: Clon Superfo 128K - Manos a la obra

Mensajepor jepalza » 10 Abr 2013, 22:09

antoniovillena escribió:Edito: Si quieres puedes esperarte a que resolvamos todos los fallos, es posible que haya que hacer más cortes y puentes y en caso de tener los componentes montados suele ser más difícil hacerlos, sobre todo los cortes. Pero mi recomendación es que la vayas montando y depurando. Siempre puedes comprar la placa definitiva y migrar los componentes, si pedimos 50 placas nos sale a 3,50 la placa.


Gracias por el resumen. Me gusta tanto trastear como a vosotros (Mcleod_Ideafix, Tú, FLopping, Radastan) y eso implica arriesgarme y tirar adelante.
Este fin de semana, me meto con los cambios, hasta llegar donde vosotros, y quedar a la par. Por componentes de sobra no me preocupa, por ahora, asi que, puedo sacrificar unos cuantos sin miedo.


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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