Hala, pues aquí tengo algunos datos sobre el prototipo de chip gráfico. Lo estoy haciendo en la CPLD más pequeña (y barata) que tiene Xilinx, también con la idea de que se pueda versionar en lógica discreta (si hay algún valiente...)
Después de la síntesis, he obtenido estos resultados:

- video_chip_recursos_cpld.png (11.7 KiB) Visto 9202 veces
Esto de arriba significa que:
El nuevo chip usa 34 pines (lo máximo en el encapsulado PLCC44 para esta CPLD). Estos pines son los siguientes:
- Reloj maestro, a 7MHz
- Bus de direcciones para la RAM de video (14 bits, 16K)
- Señal de habilitación de lectura de la RAM (a conectar a OE)
- Señal de habilitación de escritura de la RAM (a conectar a WE)
- Bus de datos del chip gráfico (8 pines)
- Entrada de dirección A15 de la CPU
- Entrada de dirección A14 de la CPU
- Entrada de control MREQ de la CPU (esta señal y las dos anteriores es para que el chip gráfico sepa cuándo la CPU quiere acceder a la VRAM)
- Salida de señal WAIT a la CPU
- Salida de reloj a 3.5MHz para la CPU
- Salida decodificada de acceso a ROM (ROMCS)
- Salida decodificada de acceso a RAM (los 32K altos, RAMCS)
- Salida de video monocromo (píxeles blancos sobre fondo negro)
- Salida de sincronismo compuesto
La VRAM sería una SRAM de 16K (o una 62256 con el pin A14 puesto a 0 permanentemente para funcionar como memoria de 16K) y se conectaría de la siguiente forma:
- Su bus de datos (D0 a D7), directo al bus de datos de la CPLD. Mediante resistencias de 330 ohmios, se conectaría también al bus de datos de la CPU
- Su bus de direcciones, desde A0 hasta A13, iría conectado directamente al bus de direcciones de la CPLD. Mediante resistencias de 330 ohmios se conectaría también a las señales A0 hasta A13 del bus de direcciones de la CPU.
- El pin CE, directamente a masa.
- Los pines OE y WE, directamente a los pines correspondientes en la CPLD. Mediante resistencia de 330 ohmios, el pin WE se conectaría a la señal WR de la CPU
La salida de video que da es en blanco y negro, con el fondo negro y los píxeles activos en blanco. La disposición y tamaño de la pantalla, borde incluido, es muy similar a la del Spectrum (no en vano usan el mismo reloj de 7MHz).
La CPLD da una señal de reloj de 3.5MHz ininterrumpida a la CPU. No obstante, voto por usar una versión CMOS del Z80 y ponerlo a 7MHz.
La VRAM está decodificada para que funcione en el rango 16384-32767. Sin embargo, si se pretende que en un futuro esta máquina pudiera correr CP/M, el tener la VRAM en estas posiciones resulta problemático. Propongo que la memoria de pantalla se mude a los últimos 8K de la RAM, es decir, que empiece en 57344 y de ahí en adelante. La RAM no contenida sería por tanto toda la que hay desde 16384 hasta 49151. Los últimos 16K de RAM, donde se encuentra la memoria de video, sería la memoria contenida.
La CPLD, fisicamente hablando, tiene esta pinta. Puede usarse con zócalo, como se muestra en la foto. El zócalo se puede soldar sin problemas, no es SMD ni nada de eso. En este mismo encapsulado puede usarse una XC9572XL, que nos daría aún más "juego" para implementar características avanzadas (como un mecanismo de acceso a memoria sin contienda, por ejemplo). Curiosamente, al mirar precios veo que la 9572 (doble de recursos que la 9536 que he usado) puedo encontrarla a un precio un poco menor que la 9536.

- cpld_y_zocalo.jpg (69.63 KiB) Visto 9202 veces

- zocalo_soldado.jpg (75.86 KiB) Visto 9202 veces

- chip_cpld.jpg (53.31 KiB) Visto 9202 veces
Pero si aún hay reticencias a usarlo de esta forma, siempre se puede comprar en forma de módulo DIP de 40 pines, como éste, al más puro estilo "ULA replacement":
http://www.ebay.com/itm/XILINX-XC9572XL ... 53eca95f58-- 03 Oct 2012, 03:51 --
Y esto sería un diagrama de bloques del microordenador, usando a la CPLD como "glue logic", pero sin meter ni teclado ni sonido ni el almacenamiento:

- esquema_bloques_micro_radastan.png (50.82 KiB) Visto 9201 veces
PD: ¡diantres! Me quedé sin pines para la señal INT

Habrá que mover los decodificadores que generan ROMCS y RAMCS fuera de la CPLD para liberar algún pin que pueda usar.