Clon ZX Spectum 128 (ULA+)

Proyectos de hardware con sus esquemáticos y si llevan software en fuente

Moderadores: cacharreo, Fundadores

Reglas del Foro
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente

Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3373
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 28 times
Been thanked: 145 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Kyp »

Lleva una memoria flash de 128K para poder poner dos juegos de ROMs tipo +3. Ahora mismo tengo puestas las ROMs del +3 estándar y las del +3e.
Por cierto, acabo de probar el +3e con el interfaz de CF que hizo BCH y funciona perfectamente :D

De todas formas esta placa no es definitiva, la 'buena' será del tamaño adecuado para que encaje en una caja de 48K/plus y si todo sale bien, divmmc incluido :|

Ahora mismo, con la implementación completa del 128K, sin ULA+, queda libre más de la mitad de la CPLD. El divmmc ocupará más o menos un cuarto de CPLD... No creo que haba problema en cuanto a capacidad de la CPLD :|
BCH
Demonio tercer orden
Demonio tercer orden
Mensajes: 973
Registrado: 06 Sep 2014, 12:10
Ubicación: Barcelona
Been thanked: 4 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por BCH »

Bueno, yo ayer he logrado (finalmente) ponerme y comenzar el diseño de la placa :)

Imagen
Kyp escribió: 21 May 2019, 00:03 Ahora mismo, con la implementación completa del 128K, sin ULA+, queda libre más de la mitad de la CPLD. El divmmc ocupará más o menos un cuarto de CPLD... No creo que haba problema en cuanto a capacidad de la CPLD :|
Para el Divmmc necesitaríamos entonces incluir el chip de RAM y la flash, verdad?
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3373
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 28 times
Been thanked: 145 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Kyp »

BCH escribió: 02 Jun 2019, 11:10 Para el Divmmc necesitaríamos entonces incluir el chip de RAM y la flash, verdad?
Bueno, eso depende de como queramos que esté de integrado el DivMMC en el equipo :|

El interfaz original lleva los chips independientes porque es un interfaz externo, pero si lo hacemos integrado en el propio equipo se podría usar el mismo chip de ROM (necesita al menos 8K más), e igualmente se podría usar uno de los dos chips de RAM más grande (al menos 128K más) compartidos con los del Spectrum.

ROM: 64K para el Spectrum más 8K para el DivMMC. Tendría que ser un chip de 128K como el que ya tenemos y si queremos una ROM dual, pues uno de 256K. Yo pondría directamente un 29F040 :))

RAM: Un chip de 64K para la RAM compartida con la ULA, otro chip de 64K para el resto, y otro de al menos 128K para el DivMMC (el esxdos solo usa 128k). Para la RAM hay que poner dos chips, no vale el mismo para todo si queremos hacer un Spectrum (bueno, se podría hacer pero complicando bastante el diseño). Yo pondría uno de 64K compartido con la ULA y otro de 512K para el resto de RAM y el DivMMC.

El otro chip de RAM se usa solo para la paleta del ULA+ pero tengo que ver si cabe en la CPLD y nos lo ahorraríamos.

Otra cosa que me parece importante es conectar todos los pines del bus de direcciones a la CPLD. Habría que ver si tenemos suficientes pines para todo.
BCH
Demonio tercer orden
Demonio tercer orden
Mensajes: 973
Registrado: 06 Sep 2014, 12:10
Ubicación: Barcelona
Been thanked: 4 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por BCH »

Kyp escribió: 02 Jun 2019, 15:45 Bueno, eso depende de como queramos que esté de integrado el DivMMC en el equipo :|

El interfaz original lleva los chips independientes porque es un interfaz externo, pero si lo hacemos integrado en el propio equipo se podría usar el mismo chip de ROM (necesita al menos 8K más), e igualmente se podría usar uno de los dos chips de RAM más grande (al menos 128K más) compartidos con los del Spectrum.

ROM: 64K para el Spectrum más 8K para el DivMMC. Tendría que ser un chip de 128K como el que ya tenemos y si queremos una ROM dual, pues uno de 256K. Yo pondría directamente un 29F040 :))

RAM: Un chip de 64K para la RAM compartida con la ULA, otro chip de 64K para el resto, y otro de al menos 128K para el DivMMC (el esxdos solo usa 128k). Para la RAM hay que poner dos chips, no vale el mismo para todo si queremos hacer un Spectrum (bueno, se podría hacer pero complicando bastante el diseño). Yo pondría uno de 64K compartido con la ULA y otro de 512K para el resto de RAM y el DivMMC.

El otro chip de RAM se usa solo para la paleta del ULA+ pero tengo que ver si cabe en la CPLD y nos lo ahorraríamos.

Otra cosa que me parece importante es conectar todos los pines del bus de direcciones a la CPLD. Habría que ver si tenemos suficientes pines para todo.
Guai :) , yo de momento ire haciendo la placa basándome en el esquemático del primer post, con los cambios que hemos comentado en el telegram. A medida que vayas agregando o remplazando pines y/o componentes, me lo vas diciendo.

Pondre la 29F040, ya lo había pensado para disponer de mas ROMs, y si sirve para implementar el divmmc en un futuro pues mejor aun.

Lo que yo haría de momento es una primera placa con las funcionalidades básicas: 128k, sonido AY y ULA+ y una vez que tengamos esto funcionando ok, agregar el divmmc, etc. En la placa básica se podría meter la CF para usar con el +3e, que es muy fácil de hacer.
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8152
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 46 times
Been thanked: 101 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por wilco2009 »

Me parece leer que se usa una xc95288xl, ¿es así?. Si decís que va medio vacío, ¿porqué se ha escogido ese modelo?, por lo que vi en su día es bastante complicado de encontrar.

Según he podido ver, el modelo más equilibrado capacidad/precio es el xc95144xl-tq100.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 46 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Spirax »

cuando decis interface kepmston os referis al joystick verdad?
alguna posibilidad de implementar el raton kepmtom?

os sigo leyendo :mrgreen:
BCH
Demonio tercer orden
Demonio tercer orden
Mensajes: 973
Registrado: 06 Sep 2014, 12:10
Ubicación: Barcelona
Been thanked: 4 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por BCH »

wilco2009 escribió: 03 Jun 2019, 16:49 Me parece leer que se usa una xc95288xl, ¿es así?. Si decís que va medio vacío, ¿porqué se ha escogido ese modelo?, por lo que vi en su día es bastante complicado de encontrar.

Según he podido ver, el modelo más equilibrado capacidad/precio es el xc95144xl-tq100.
Por lo que ha dicho Kyp, creo que a la que metamos ULA+ y divmmc seguramente tendremos la CPLD al 70-80% de recursos. A parte de esto con este encapsulado tenemos pines de sobra. No me ha costado encontrar estos chips en aliexpress y tampoco estaban idos de precio (unos 2,50€ la unidad).
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3373
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 28 times
Been thanked: 145 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Kyp »

BCH escribió: 03 Jun 2019, 16:27 Guai :) , yo de momento ire haciendo la placa basándome en el esquemático del primer post, con los cambios que hemos comentado en el telegram. A medida que vayas agregando o remplazando pines y/o componentes, me lo vas diciendo.
Seguro que hay que hacer alguno más. De momento un DAC para la salida RGB :| Y el fix del audio como el del Humble 48.
BCH escribió: 03 Jun 2019, 16:27 Pondre la 29F040, ya lo había pensado para disponer de mas ROMs, y si sirve para implementar el divmmc en un futuro pues mejor aun.
Con la 010 que hay ya tenemos suficiente capacidad para ROM+DivMMC, pero si queremos poner dos ROMs para tener por ejemplo la ROM normal y +3e hay que poner una 020 o ya puestos una 040 que es más común.
BCH escribió: 03 Jun 2019, 16:27 Lo que yo haría de momento es una primera placa con las funcionalidades básicas: 128k, sonido AY y ULA+ y una vez que tengamos esto funcionando ok, agregar el divmmc, etc. En la placa básica se podría meter la CF para usar con el +3e, que es muy fácil de hacer.
Ya te pediré que me pongas unos pines para conectar una placa SD de las de Arduino que no cuesta nada ;) para ir probando :))
Spirax escribió: 03 Jun 2019, 16:59 cuando decis interface kepmston os referis al joystick verdad?
alguna posibilidad de implementar el raton kepmtom?
Si, joystick. El ratón implica traducir de PS/2 a cuadratura y eso requiere más bien un micro aunque, bueno, si hay sitio...

Lo que falta para la ULA+ es poca cosa, cuatro registros y un poco de lógica, no creo que ocupe mucho. El DivMMC ocupa el 80% de una 9572xl más o menos. Una 144 va a ir un poco justa, y siendo incluso barata la 288... :|
Avatar de Usuario
jjsaenz1969
Demonio segundo orden
Demonio segundo orden
Mensajes: 1200
Registrado: 22 Mar 2015, 00:41
Ubicación: Vitoria
Has thanked: 104 times
Been thanked: 98 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por jjsaenz1969 »

Esto ya va tomando forma, voy a poner el estañador a calentar ............................... :))
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3373
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 28 times
Been thanked: 145 times

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Kyp »

Kyp escribió: 03 Jun 2019, 20:40 Lo que falta para la ULA+ es poca cosa, cuatro registros y un poco de lógica, no creo que ocupe mucho. El DivMMC ocupa el 80% de una 9572xl más o menos. Una 144 va a ir un poco justa, y siendo incluso barata la 288... :|
Me auto-corrijo, se me olvidaba la parte de los registros y sobre todo el multiplexor para la salida de video normal o plus, eso si que se llevará un montón de celdas de la CPLD.

Estoy probando el código en la FPGA que es más cómodo y ya tengo funcionando la ULA+ a medias, leyendo el color de los píxeles de la memoria de la paleta. Me falta el borde, que funciona de forma diferente, los registros de control y alguna cosa más. Hay mucha información de como funciona pero más desde el punto de vista de un emulador que del de el hardware real. La temporización va muy, muy justa. Una vez que la ULA ha leído el byte de atributos hay que leer dos bytes de la memoria de la paleta. En condiciones normales solo hay un ciclo de reloj de la ULA para hacerlo y no da tiempo. Para que si de tiempo hay que cambiar el orden en el que la ULA lee la memoria de pantalla. Normalmente lee primero el byte del bitmap y luego el de atributos, pero si se cambia el orden y se lee primero el byte de atributos entonces si que tenemos dos ciclos de reloj para leer los dos bytes de la paleta, y eso gracias a que la memoria de la paleta es muy rápida (20ns, 10 veces más rápida que la RAM del Spectrum) y así se puede leer un byte en cada ciclo usando un reloj de 14 MHz. Y además hay que usar algún hueco que queda entre acceso y acceso para leer el color del borde (se usa el byte 0 de los 64 bytes de paleta) y otro hueco para cuando la CPU quiere grabar en la memoria los colores. Un encaje de bolillos :P :)) :|
Responder

Volver a “Proyectos de hardware abiertos”