Proyecto: implementación hardware ULAPlus

Si por algo se caracteriza el Spectrum es por su gran variedad de periféricos (clásicos y modernos)

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Proyecto: implementación hardware ULAPlus

Mensaje por mcleod_ideafix » Sab Ago 25, 2012 4:26 pm

O cómo hacer un recambio plug-n-play (bueno, casi) para la ULA del Spectrum.
Llevo dándole vueltas al tema desde hace un par de meses, y ya que la cosa está en marcha, la doy a conocer.

Se trata de una plaquita con los 40 pines que van al zócalo de la ULA del Spectrum (la versión de 16K/48K/Plus). En la plaquita hay una FPGA de 100.000 puertas lógicas, un oscilador de 50MHz, una pequeña "platform flash" que guarda la configuración de la FPGA, y opcionalmente, un AD724 para generar video compuesto.

Esta es la pinta de la placa. Si cogeis y la imprimis a tamaño original (la imagen está a 300ppp) tendreis una idea exacta de cómo será de grande en la realidad:
Imagen

Digo que es "casi" plug-n-play por una razón. La única señal que no genero tal y como lo hace la ULA original son las señales de video por componentes. En su lugar genero RGB analógico, que puede usarse tal cual, o bien enviarse a un codificador PAL integrado en la plaquita, que es quien genera el video compuesto que en último término es lo que espera el modulador.

Así que en el mejor de los casos, esta plaquita necesitará por parte del usuario soldar un cablecillo desde el pad marcado como CVBS hasta la entrada del modulador (cortando o desoldando previamente el cable original de video que viene desde la placa del Spectrum).

En el "no-mejor" de los casos, es decir, que se desee salida RGB y soporte de ULAPlus, habrá que soldar cablecillos en los pads marcados como R,G,B y CSYNC para la imagen (e ingeniárselas para sacar esas señales por algún tipo de conector) y aparte, soldar un par de cablecillos desde los pines marcados como IORQ y A7 a sendos pines en el Z80. Esto último no hay más remedio que hacerlo para la ULAPlus.

Este proyecto "acojona" un poco (edito: un poco no, bastante) porque por primera vez voy a iniciarme en algunas tecnologías que hasta ahora sólo había usado en "ambientes controlados" en mi universidad (traducido: nosotros diseñamos la placa, pero la hacen y la montan otros). Aquí, la placa la mandaré hacer, sí, pero el montaje y testeo tendrá que ir de mi cuenta. Y no es por tener que soldar un chip de 100 pines (la ULA del +3 tiene más pines y ya he soldado más de una), sino por la cantidad de pequeños componentes SMD de tamaño 0603 (1.6mm x 0.8mm) que tendré que soldar de forma manual.

De hecho, y previendo que necesitaré muchos componentes de un mismo tipo (particularmente resistencias de 270 ohmios y condensadores de 100nF) he comprado 500 unidades de cada cosa. Son tan pequeños que, por ejemplo, los condensadores caben todos ellos en una cajita pequeña:

Imagen

Para el resto he comprado un "libro de componentes". Es una especie de archivador, que parece enteramente un portafotos para fotos de 10x15...

Imagen

... pero que en su interior hay más de 5000 componentes, entre resistencias y condensadores de todos los valores habidos y por haber :O

Imagen

También me inquieta el que Eagle (no termino de hallarme con Protel) no tiene opción para controlar la impedancia de una pista (y si la tiene, no la he encontrado), y es que resulta que según Xilinx, "conviene" que la pista que lleva la señal de reloj de configuración de la FPGA sea de una cierta impedancia. Dado que las distancias son pequeñas, espero que no se fastidie la cosa.

Por último, otra cosa que "veremos a ver si sale" es que la FPGA en principio no acepta señales de 5V, que en este caso vendrían de parte de la CPU y de la RAM baja. Como mucho, acepta señales de 3,3V. Xilinx especifica que para hacer a esta FPGA tolerante a 5V pueden usarse resistencias de 270 ohmios (de ahí que haya comprado tantas) ya que los diodos de clamping que hay en los pines de la FPGA "absorben" el exceso de tensión redirigiéndolo a masa o a VccIO (3,3V), pero sólo si la corriente que pasa por ellos no excede de cierto valor (que no recuerdo ahora mismo). Las resistencias asegurarían que no se excede ese valor.

Aunque es un método "aprobado" por Xilinx, no deja de ser un poco tramposo, entre otras cosas porque estoy derivando tensión a la toma de 3,3V y eso no sé cómo afectará al funcionamiento del propio dispositivo, o de los que haya alrededor que también funcionan con 3,3V, como el oscilador y la ROM de configuración. Sé que debería haber puesto "level shifters" pero son más caros y ocupan más placa (encareciendo por tanto el coste de la propia placa)

Hablando de caro: ¿por qué una FPGA y no una CPLD que se supone que son más baratas? Pues para mi sorpresa, resulta que el precio de una CPLD (como la que enseñaré en un momento en este mismo post) es como 1,5 veces más cara que la FPGA que voy a usar. A eso añádele que para poder tener ULAPlus necesito memoria que albergue la paleta y eso con una CPLD no es posible porque no tiene apenas memoria interna, así que habría que añadir dicha memoria. La CPLD es además más grande que la FPGA, y aquí en esta placa, el tamaño importa :roll: Por otra parte, con la CPLD me hubiera ahorrado la ROM de configuración y las resistencias (la CPLD sí que es tolerante a 5V). Mi idea es que el precio PVP de este chisme no supere los 40 euros (pero en este momento no puedo dar garantías de que lo consiga).

Una FPGA con tantas puertas como ésta (y es de las pequeñas) por otra parte da para MUCHO JUEGO (en todos los sentidos). La ULAPlus se puede implementar, pero no sólo eso:
Puede implementarse el sistema de color que ha ideado Paul Farrow en el Spectra. Puede añadirse el modo de hicolor del Timex (32x192 atributos de color) y el modo hires (512x192).
Puede incluso añadirse un procesador auxiliar, estilo "Amiga cooper" que permita hacer split screen sin que la CPU se cosque (por ejemplo, modo Timex hicolor para los dos primeros tercios de pantalla para mostrar un gráfico a todo color (con o sin paletas de ULAPlus), y modo hires en el último tercio, para el texto y ordenes en una aventura conversacional. Quien dice un "cooper" dice también un módulo de sprites hardware, o un sistema de scroll por hardware (cosas que mola tener aunque seguramente sólo las usen los 4 gatos que viven conmigo en casa).
Soporte para un teclado PS/2 en la propia ULA (no con tantas características, macros, etc como la actual interface PS/2, pero igualmente funcional). De hecho, previendo que pudieran añadirse más funcionalidades al sistema (y para corregir cualquier error que salga), he dejado unos cuántos pads disponibles para poner ahí más señales (como CLK y DATA del teclado PS/2).
Una cosa que seguramente será bienvenida por muchos es un AY-3-8912. Creo que cabe en la FPGA y el sonido podría ir por el mismo pin que el sonido "beeper". Hay muchos juegos que funcionan en 48K y usan sonido AY.

En una versión anterior de la plaquita he probado a poner los dos componentes principales, la FPGA y la ROM de configuración, para ver que sus huellas "casan" bien con los componentes.

Imagen

Hace un par de días ya di el diseño por bueno (que sea lo que Dios quiera) y lo envié a fabricar. Los de ITEADStudio no me han escrito, señal de que no han encontrado nada "raro" en la placa (si lo encuentran te escriben. Si no, nada de nada). La plaquita la he encargado hacer de la mitad del grosor habitual (0,8mm en lugar de 1,6mm que es lo estándar) por dos motivos: reducir un poco más la altura del clon y evitar en lo posible que "choque" contra la carcasa superior del Spectrum, y para facilitar un método de soldadura que he visto en un video en Youtube.

El video en cuestión plantea usar una plancha de asar estándar como "hot plate" para la soldadura de componentes SMD. La idea me ha parecido genial, y menos "contaminante" que el meter la placa en el horno convencional. Aquí puedo poner la plancha bajo la campana extractora y llevarme cualquier humo "sospechoso" que salga del proceso de soldadura.

Pues bien, he querido probar con una CPLD de 144 pines que tengo por aquí y una plaquita "breakout" que sirve para tener acceso a todos los pines de la CPLD de forma cómoda para hacer prototipado y cosas así.

He puesto la placa encima de papel de horno y éste encima de la plancha, en una zona por la que se observa que debe pasar una de las resistencias.

Imagen

Con la jeringa que trae, he aplicado un poco de "pasta de soldadura" recorriendo los 144 pines de la plaquita donde irá alojada la CPLD. Esta pasta que tengo, er.... teóricamente caducó en 2003, y durante bastante tiempo (más del que debería) se ha guardado a temperatura ambiente, en lugar de estar refrigerado. Aún así, me he atrevido con ella. Total, en el peor de los casos, si el experimento resulta un fiasco, se desuelda la CPLD y "aquí no ha pasado nada".

Imagen

Con la plancha aún fría, me dedico a colocar bien la CPLD en su sitio (esto es lo más delicadito del proceso). Se supone que durante el proceso de soldadura, la tensión superficial del estaño licuado pondrá al componente "en su sitio". No sé si con éste tan gordito habrá tensión suficiente para eso...

Imagen

Mi plancha tiene un control de potencia de 0 a 10, así que no sé en realidad cuánto calor le estoy dando a la plaquita. He intentado simular las condiciones de una "hot plate" de verdad, haciendo un precalentamiento a 3, luego subiendo a 6, y por último a 10. Al empezar a derretirse el estaño de la pasta, se va "caminando" a los pines formando soldaduras. Está claro que en algunos sitios he puesto más pasta que en otros, y se forman bolas

Imagen

Imagen

Con todo, el proceso es rápido y el resultado no es malo (excepto donde hay puentes, claro).

Imagen

Esto de los puentes me lo imaginaba. Quizás deba poner menos pasta de soldar, o quizás esto es la consecuencia de usar una pasta caducada. No lo sé. Sí sé que se puede arreglar fácilmente con malla para desoldar.

Este mismo método aplicado a los componentes 0603 debe dar mejores resultados: no hay peligro de puentes entre pines, y al ser los componentes mucho más pequeños, la tensión superficial generada sí que será suficiente para ponerlos "en su sitio". Espero que queden mejor que la FPGA :D
Web: ZX Projects | Twitter: @zxprojects

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por sromero » Sab Ago 25, 2012 5:11 pm

¿ Esto es (será) un reemplazo de la ULA con soporte ula+ usable directamente en spectrums reales quitando la ULA original?

¿Podría conseguir cosas como por ejemplo dotar de salida de vídeo mejor (hdmi???) a un speccy y verlo perfecto en tvs actuales?
NoP / Compiler

Avatar de Usuario
flopping
Nonamed
Mensajes: 1093
Registrado: Vie Jul 16, 2010 9:54 am

Re: Proyecto: implementación hardware ULAPlus

Mensaje por flopping » Sab Ago 25, 2012 5:24 pm

Muy buen trabajo, si señor, veo ademas que no lo mencionas, pero que la plaquita tambien tiene salida de S-Video (luma y croma) y has dejado mas señales como IO0, IO1, IO2 y IO3, que no se muy bien para que son, ¿quiza la programacion de la FPGA? o futuras ampliaciones.

Apuntame una plaquita de esas para mi, cuando las tengas disponibles, asi tambien hago de betatester y le damos caña a ver como resulta, ya que si le puedes meter todo lo que comentas, tendriamos un spectrum muy completito, ¿quiza seria posible implementarlo tambien en un 128K?, ya que la ULA tambien va en zocalo, aunque es algo mas grande que las del 48K, pues tiene mas de 40 pines, pero creo que se podria adaptar ¿no?.

La verdad es que creo que vas a ser (y has sido), el primero que ha implementado una ULA+ en un soporte fisico, ya que desde que salieron las deficiniones de la ULA+ en un clon de spectrum llamado Spectrum SE, hace mas de 2 años, no he visto nada tangible sobre la ULA+, bueno si, las pruebas de concepto que hiciste hace unos pocos meses, pero vamos que esto si que seria una bomba, nunca mejor dicho.

Luego ya veremos si sale mas gente diciendo que si esto ya lo tenian, que si tal y que si cual, pero lo unico que se ha visto hasta ahora de la ULA+ materializado en hard, son tus diseños, tambien es de esperar que una vez que se abre la caja de los truenos, la gente empiece a diseñar cosas e implementar tus avances en sus propios proyectos o eso es lo que suele ocurrir, lo cual no es malo, pues quiza se den ideas y se hagan aportaciones para mejorar el diseño, tal como ocurrio con el clon harlequin.

Pues nada, lo dicho, si te planteas hacer las placas, que creo que si, pues ya has mandado las placas a fabricar, me reservas una para experimentar, (una plaquita con todos los componentes montados, claro), que ya le tengo yo ganas a eso de la ULA+.

Nada mas, solo decirte que sigas asi, que creo que vas por muy buen camino, salu2.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, debido a la esquizofrenia paranoide que tengo.
(C) 1982-2016, 34 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente"

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por mcleod_ideafix » Sab Ago 25, 2012 6:49 pm

sromero escribió:¿ Esto es (será) un reemplazo de la ULA con soporte ula+ usable directamente en spectrums reales quitando la ULA original?

Esa es la idea...
mcleod_ideafix escribió:O cómo hacer un recambio plug-n-play (bueno, casi) para la ULA del Spectrum.
Llevo dándole vueltas al tema desde hace un par de meses, y ya que la cosa está en marcha, la doy a conocer.
Se trata de una plaquita con los 40 pines que van al zócalo de la ULA del Spectrum (la versión de 16K/48K/Plus)


sromero escribió:¿Podría conseguir cosas como por ejemplo dotar de salida de vídeo mejor (hdmi???) a un speccy y verlo perfecto en tvs actuales?

mcleod_ideafix escribió:En su lugar genero RGB analógico, que puede usarse tal cual, o bien enviarse a un codificador PAL integrado en la plaquita, que es quien genera el video compuesto que en último término es lo que espera el modulador.

Aclaro: generar HDMI en este caso no mejora practicamente nada la calidad de imagen (el Spectrum no genera una señal 1080p ni nada de eso). Con el RGB debería ser más que suficiente para cualquier tele moderna que lleve un euroconector.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por mcleod_ideafix » Sab Ago 25, 2012 6:51 pm

flopping escribió:Muy buen trabajo, si señor, veo ademas que no lo mencionas, pero que la plaquita tambien tiene salida de S-Video (luma y croma) y has dejado mas señales como IO0, IO1, IO2 y IO3, que no se muy bien para que son, ¿quiza la programacion de la FPGA? o futuras ampliaciones.

mcleod_ideafix escribió:Soporte para un teclado PS/2 en la propia ULA (no con tantas características, macros, etc como la actual interface PS/2, pero igualmente funcional). De hecho, previendo que pudieran añadirse más funcionalidades al sistema (y para corregir cualquier error que salga), he dejado unos cuántos pads disponibles para poner ahí más señales (como CLK y DATA del teclado PS/2).

Aclaro: vamos, que lo del teclado PS/2 es un ejemplo de cómo podría reusar dos de esas señales "extra" que he dejado "para lo que se necesite".
Web: ZX Projects | Twitter: @zxprojects

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por sromero » Sab Ago 25, 2012 6:57 pm

mcleod_ideafix escribió:Con el RGB debería ser más que suficiente para cualquier tele moderna que lleve un euroconector.


No sé... empiezan a venir ya las samsung sin componentes ni vga y con un sólo euroconector... no sé lo que falta hasta que dejen de llevarlo y sea todo hdmi...
NoP / Compiler

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por mcleod_ideafix » Sab Ago 25, 2012 7:00 pm

sromero escribió:
mcleod_ideafix escribió:Con el RGB debería ser más que suficiente para cualquier tele moderna que lleve un euroconector.


No sé... empiezan a venir ya las samsung sin componentes ni vga y con un sólo euroconector... no sé lo que falta hasta que dejen de llevarlo y sea todo hdmi...


Pues siempre puedes añadirle a tu tele algo como esto:
http://www.ebay.com/itm/Scales-SCART-si ... 3cbd3eb408
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: Proyecto: implementación hardware ULAPlus

Mensaje por Scooter » Sab Ago 25, 2012 8:28 pm

¡Eso es valor! Yo ya veo menos que Rompetechos; me he tenido que comprar una flexo-lupa incluso para lo "normal".
Pues mucho ánimo y suerte, espero que todo salga bien, sin ninguna cagadilla.
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por mcleod_ideafix » Sab Ago 25, 2012 9:02 pm

sromero escribió:¿Podría conseguir cosas como por ejemplo dotar de salida de vídeo mejor (hdmi???) a un speccy y verlo perfecto en tvs actuales?


Acabo de leer que Winston (Dylan Smith) ha comentado algo de este estilo en WOS, e incluso había estado mirando módulos HDMI. Piensa que con esos módulos, una salida HDMI es viable, pero el tipo de rutado de pistas difiere un poco de lo que estamos acostumbrados a hacer, ya que estamos hablando de diseño digital de alta velocidad (los 14MHz del Spectrum es diseño digital velocidad tortuga comparado con esto)

http://www.worldofspectrum.org/forums/s ... stcount=45
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Proyecto: implementación hardware ULAPlus

Mensaje por antoniovillena » Sab Ago 25, 2012 9:20 pm

Menuda currada de proyecto. Me compro uno en cuanto salga. Eso sí, si la placa viene con los chips SMD ya soldados. Si no me equivoco se trata del segundo chip de la famila Sinclair que ha sido clonado (el primero fue la ULA del ZX81).

Enhorabuena.
Imagen

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por mcleod_ideafix » Sab Ago 25, 2012 9:28 pm

Scooter escribió:¡Eso es valor! Yo ya veo menos que Rompetechos; me he tenido que comprar una flexo-lupa incluso para lo "normal".
Pues mucho ánimo y suerte, espero que todo salga bien, sin ninguna cagadilla.


Calla, calla... que precisamente para no dejarme las corneas soldando esto, he comprado unas gafas con lupa. Cuando me las pongo me parezco a este tipo:
http://www.youtube.com/watch?v=Zjiq_Uao ... age#t=969s
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por mcleod_ideafix » Sab Ago 25, 2012 9:30 pm

antoniovillena escribió:Menuda currada de proyecto. Me compro uno en cuanto salga. Eso sí, si la placa viene con los chips SMD ya soldados.


Hombre... si pusiera a la venta la plaquita sin nada, no la querría nadie. Esto, en su forma actual o en la forma en la que pueda mejorarse, saldrá como cacharro listo para poner, teniendo en cuenta eso sí, que alguna que otra soldadura tendrá que caer, según he descrito.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
oblo
Sabreman
Mensajes: 327
Registrado: Lun Feb 07, 2011 9:53 am

Re: Proyecto: implementación hardware ULAPlus

Mensaje por oblo » Sab Ago 25, 2012 10:47 pm

Sin palabras me dejas :shock: Espero que todo el trabajo que lleves hecho llegue a buen puerto y desde luego yo estaría interesado en uno o dos :)

salu2

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Proyecto: implementación hardware ULAPlus

Mensaje por antoniovillena » Sab Ago 25, 2012 10:58 pm

No conocía ITead Studio. Googleando he encontrado esta comparativa:
http://www.youritronics.com/seeed-studi ... -osh-park/

Por lo visto las placas son muy parecidas a las de Seeedstudio (la que usé para mi clon Jupiter Ace) tanto en precio como en calidad, y la que sale ganando es la otra (OSH Park).
Imagen

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Proyecto: implementación hardware ULAPlus

Mensaje por mcleod_ideafix » Dom Ago 26, 2012 12:38 am

Síiiii. He hecho una simulación de cómo quedaría una placa hecha con la gente de OSH Park (sale el triple de caro que con ITEAD o Seeed) pero quedan muy chulas :)

Imagen Imagen
Web: ZX Projects | Twitter: @zxprojects

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot], Google [Bot] y 9 invitados