Gameduino (o como meter un ZX Spectrum con ULAplus en...)

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

Re: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor mcleod_ideafix » 30 Oct 2012, 16:33

Toma los esquemáticos en PDF. Son de la versión que tiene la huella para SRAM y SDRAM, pero que no tiene soldados ninguna de las dos memorias (o sea, la que usa Superfo y la que yo he comprado en eBay). Tengo los ficheros Eagle, pero aún no los he visto.
Adjuntos
MOD-VGA_Rev_B_sch.zip
(67.99 KiB) Descargado 306 veces
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: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor antoniovillena » 30 Oct 2012, 22:00

Muchas gracias.

Acabo de echarle un vistazo y los wings están muy vacíos. Por lo visto los pocos pines disponibles por la FPGA están pillados por la RAM y el DAC. Lo que veo que se puede hacer es meterle una SD por el puerto SPI disponible a través de un wing digital. No hace falta desoldar el conector VGA, tenemos los mismos pines disponibles en una tira de pines, que en realidad son sólo 5 señales (3 analógicas y 2 digitales). Se puede sacar un pin para el EAR si en lugar de enviar las 2 señales de sincronismo (HSYNC y VSYNC) enviamos sólo el XNOR de ambas (el AD724 permite hacer eso). El joystick se podría sacar del puerto JTAG aunque falta una una señal (sólo hay 4 en el JTAG).

No sé, pensaba que era más ampliable. La placa OLS tiene más pines libres para trastear, pero claro no tiene jack stereo ni puerto PS/2 ni posibilidad de añadirle RAM. Pero vamos la placa me parece perfecta para meterle un 128K. Tiene 36K de block RAM, de los cuales 32K se pueden emplear en la memoria contenida (páginas 5 y 7) y los 4K restantes para hacer un bootloader que cargue las 4 ROMs del +3e en RAM desde la tarjeta SD, utilizando 128K-32K+64K= 160K de la SRAM.

Avatar de Usuario
scooter
Amiga 1200
Amiga 1200
Mensajes: 1031
Registrado: 17 Jul 2012, 09:25
primer_sistema: C64
Ubicación: Alicante

Re: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor scooter » 31 Oct 2012, 00:04

No se si resultaría muy confuso pero mirar joystics y teclados por un puerto SPI sería sencillo. De hecho podría ser un SPI de solo lectura con solo tres líneas.
No se si es facilmente remapeable esta señal a un "registro" IO dentro de la FPGA si lo es, entonces solo habría que añadir afuera un registro de desplazamiento por joystick y nada si no se ponen. Es añadir mas hardware, pero si se añade un DB9 tampoco pica mucho poner un IC al lado de cada conector.
La FPGA puede leer continuamente esos registros y copiar su valor para que el Z80 los vea en la dirección que toca.

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

Re: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor antoniovillena » 31 Oct 2012, 13:39

Pues queda todo justito, al menos eso creo, por lo que no hace falta SPI a menos que se quiera añadir algo más.

Los añadidos a la placa accesoria serían:
-AD724 conectado vía tira de pines (no conector VGA) con una salida RCA y opcionalmente una SVIDEO.
-Puerto EAR con circuitería que amplifique y recorte la señal vía una entrada RCA o jack mono/stereo.
-Tarjeta SD empleando el puerto SPI.
-Conector Joystick Kempston, por defecto norma Atari pero configurable en SJS vía jumpers.

Las entradas del AD724 serían 5: HSYNC, VSYNC, R, G y B. VSYNC lo pondríamos a 1 lógico y recibiríamos CSYNC por la entrada HSYNC. R, G y B los obtenemos de los DACs. Aprovechamos la línea VSYNC de la FPGA para meter ahí el puerto EAR. La tarjeta SD la conectamos al puerto SPI que se obtiene de un wing (segundo puerto digital, de D8 a D13). Por último nos queda el joystick que necesita 5 señales de entrada. Cuatro de ellas la obtenemos del JTAG (TCK, TDO, TMS, TDI) y la última de la señal INT en otro wing (primer puerto digital, de D0 a D7, concretamente D2).

Eso sería sin hacer ninguna modificación el la placa original. Si se necesitan más líneas (y sin recurrir a multiplexar con un puerto SPI) se pueden obtener los siguientes lugares:
-Huella SRAM. Es una RAM de 16 bits, podemos aprovechar sólo la mitad de la RAM y emplear los 8 bits altos (XD8-XD15) para lo que queramos.
-FLASH SPI. En teoría estas 4 líneas sólo se usan durante la configuración de la FPGA, así que podemos usarlas para lo que queramos.
-Bit que sobra del DAC. El ULA+ sólo emplea 8 de los 9 bits del DAC, creo que el que sobra es B1 pero no estoy seguro. Si desoldamos la resistencia R22 podemos emplear B1 para lo que queramos.

Si no me equivoco nos salen 8+4+1= 13 líneas más. Aunque como he dicho antes no soy partidario de usar estas líneas.

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

Re: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor antoniovillena » 31 Oct 2012, 23:09

Me he comprado la susodicha tarjeta por ebay. Ahora necesito meterle memoria. ¿Alguien puede decirme si esta memoria es compatible?

http://www.ebay.com/itm/HM62V16256CLTT- ... 19d16f2dd9

Según el datasheet habría que soldar el pin 28 a VCC (3.3V), pero no estoy seguro.

Edito: Y ya puestos, ¿alguien me recomienda un programador JTAG bueno, bonito y barato? (USB y con drivers para Windows 64 bits)

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: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor mcleod_ideafix » 01 Nov 2012, 02:09

En un post anterior he puesto un enlace a una memoria compatible.

JTAG para Xilinx lo hay USB de los chinos de eBay, por unos 40€. Busca "xilinx jtag usb"
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: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor antoniovillena » 01 Nov 2012, 11:01

mcleod_ideafix escribió:En un post anterior he puesto un enlace a una memoria compatible.

JTAG para Xilinx lo hay USB de los chinos de eBay, por unos 40€. Busca "xilinx jtag usb"


Sí, vi tu post. Lo comentaba porque esa era más barata si pedías más de una unidad, si se pedían diez salían por la mitad de precio. Pero el tener que soldar el pin NC me echa para atrás así que al final he comprado la que indicabas antes.

Por cierto he comprado el JTAG y como no tienen cable compatible con el conector de la MOD-VGA he comprado esto:

http://www.ebay.com/itm/170931542324?ss ... 1497.l2649

No sé si cabe en el hueco, pero si me funciona puedo enviaros los que me sobren, que serán 9. De todas formas no es imprescindible, se puede puentear el conector JTAG a uno de los wings libres como hizo Don.

Lo único malo de este clon es que va a ser muy difícil sacar el conector de expansión. La mayor parte de las señales son el bus de direcciones A0..A15 y el bus de datos D0..D7 y se pueden sacar de los pines que van a la RAM. Eso sí, habría que modificar el código fuente de la FPGA para que todas las lecturas/escrituras a memoria baja, ROM o a puertos activen estas líneas (sólo las que vayan realmente a esa memoria activarían el pin CS). Aún así hay 15 ó 16 señales más que podemos generar si prescindimos del joystick (aunque se podría obtener por lógica discreta con un buffer), pero tendríamos que hacer muchos puentes en la placa MOD-VGA. Como las wings están casi vacías lo más cómodo sería sacar todas las señales que necesitemos limpiamente a través de estos conectores. En resumen, hay que hacer muchos cambios en la placa original y en el código fuente de la FPGA si queremos tener bus de expansión, quizás sea viable pero no es muy práctico.

Veamos a ver cómo evoluciona este clon, me conformo con que funcione en modo 48K con ULA normal.

jepalza

Re: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor jepalza » 01 Nov 2012, 13:54

Igual me pongo a mirar de meterle RAM a la placa del analizador lógico (que lleva la Spartan 3E 250k) y a ver si de ese modo se puede meter el Spectrum ahí. En lugar de comprar esta mod-vga, tratar de aprovechar lo que ya tengo.

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: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor mcleod_ideafix » 01 Nov 2012, 16:52

jepalza escribió:Igual me pongo a mirar de meterle RAM a la placa del analizador lógico (que lleva la Spartan 3E 250k) y a ver si de ese modo se puede meter el Spectrum ahí. En lugar de comprar esta mod-vga, tratar de aprovechar lo que ya tengo.


Métele una SDRAM, que usará menos patillas que la SRAM, y por supuesto, que funcione a 3,3V :) Una SDRAM que sea de, pongamos, 1MByte, necesita:
- 10 líneas para fila/columna (20 bits de direcciones en total)
- 8 líneas de datos
- 1 de reloj
- 2 para RAS y CAS
-1 para la señal de escritura

Total, 22 líneas que deben venir de la FPGA. ¿En la OLS hay suficientes líneas?
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: Gameduino (o como meter un ZX Spectrum con ULAplus en...

Mensajepor antoniovillena » 01 Nov 2012, 17:17

mcleod_ideafix escribió:Total, 22 líneas que deben venir de la FPGA. ¿En la OLS hay suficientes líneas?


En teoría tiene las mismas líneas porque el encapsulado de la FPGA es el mismo (VQ100). Otra cosa es que estas líneas sean más fáciles de conseguir. Fácilmente accesibles tienes 20 (16 líneas de la wing y otras 4 del conector JTAG). Aparte tienes otras 16 líneas de las entradas del analizador, que son sólo entrada pero si quitas el transceiver y haces un corto puedes transformarlas en entrada/salida. El problema es que aparte necesitas una entrada de teclado (2 líneas), una salida de video (5 líneas en ULA normal y 9 en ULA+) y 2 ó 3 líneas más para el audio/entrada de cassette.

En la MOD-VGA tienes resuelto y con conector lo siguiente: entrada PS/2 de teclado, salida jack audio estéreo y memoria RAM. También tienes el DAC para generar el video, tanto en ULA como en ULA+, sólo te faltaría el conector si quieres sacar RGB o el AD724 si prefieres video compuesto.

Vamos que a priori el MOD-VGA tiene muchos más pros que contras.

Pros:
-Precio, cuesta sólo 26 euros (aunque si no lo tienes y tienes un OLS como jepalza es un contra).
-Modificaciones mínimas para hacer el clon.
-Más cantidad de RAM interna (36K frente a 27K de la OLS).

Contras:
-Menos puertas (200K frente a 250K).
-Necesita un programador JTAG que si no lo tienes cuesta 40 euros. Aparte el conector JTAG es especial aunque se puede puentear a una wing como ha hecho Don.
-No lo puedes usar como analizador lógico, y si quieres amortizarlo como para lo que fue pensado tendrías que comprarte una placa Arduino.


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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