Proyecto ZDP-80 - Nuestro microordenador desde cero [#01]

BBC, Dragon, Sam Coupé, Oric ...
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: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor radastan » 03 Oct 2012, 00:13

mcleod_ideafix escribió:Aunque a nivel de hacerlo lo más fácil de soldar del mundo mundial, lo más sencillo es poner un conector de 40 pines para que se pinche ahí un conversor CF-IDE. De otra forma, el zócalo para la CF echará para atrás a todos los que le tienen pavor a la soldadura SMD.


Es que ESA era mi idea, poner un conector de 40 pines y que cada cual pusiera el adaptador que más rabia le diera (o un HD IDE, ya puestos). La única condición es que soporte FAT 16 (FAT32 descartado) y a partir de ahí que cada cual elija su medio de almacenamiento.

-- 02 Oct 2012, 23:19 --

Toniman escribió:Me encanta esta idea para hacer un ordenador nuevo chicos, eso si, me gustan todas las especificaciones aunque echo de menos el color, 16 colores lo menos no? por favor, no me pongais 2 colores negros como en el Spectrum, no me malgasteis un color ;)

me apunto si hace falta hacer graficos para los nuevos juegos de esta maquina, aqui teneis un servidor.


Tony, descartamos el color de momento y lo dejamos para otro proyecto más grande cuando hayamos trasteado lo suficiente este.

Las cosas hay que hacerlas de menos a más, y tratar de crear algo tipo Amiga me parece muy pretencioso para comenzar. No es la idea hacer un sistema definitivo de videojuegos de 8 bits.

Tras este proyecto ya se verá.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
princemegahit
Amiga 1200
Amiga 1200
Mensajes: 1693
Registrado: 19 Jul 2012, 12:01
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Atari 2600
Primera consola: Atari 2600
Ubicación: C:\JUEGOS
Gracias dadas: 177 veces
Gracias recibidas: 101 veces

Re: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor princemegahit » 03 Oct 2012, 00:29

Tengo que pararme a leer todo lo que habeis escrito con detenimiento, pero habeis nombrado algo sobre utilizar el TMS9929A. Lo tiene un vendedor de Hong Kong a unos 8€ cada uno. Y dice que tiene más de 10, no sé, a lo mejor tiene 100. O 1000 :D

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

Re: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor mcleod_ideafix » 03 Oct 2012, 00:59

princemegahit escribió:Tengo que pararme a leer todo lo que habeis escrito con detenimiento, pero habeis nombrado algo sobre utilizar el TMS9929A. Lo tiene un vendedor de Hong Kong a unos 8€ cada uno. Y dice que tiene más de 10, no sé, a lo mejor tiene 100. O 1000 :D


Y yo en su día compré a un chino un puñado de chips V9958. ¡casi ná! Iban a ser la versión 2.0 de mi interface de video Spectrum-MSX :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Toniman
MSX Turbo R
MSX Turbo R
Mensajes: 263
Registrado: 12 Jul 2011, 19:32

Re: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor Toniman » 03 Oct 2012, 01:20

radastan escribió:
mcleod_ideafix escribió:Aunque a nivel de hacerlo lo más fácil de soldar del mundo mundial, lo más sencillo es poner un conector de 40 pines para que se pinche ahí un conversor CF-IDE. De otra forma, el zócalo para la CF echará para atrás a todos los que le tienen pavor a la soldadura SMD.


Es que ESA era mi idea, poner un conector de 40 pines y que cada cual pusiera el adaptador que más rabia le diera (o un HD IDE, ya puestos). La única condición es que soporte FAT 16 (FAT32 descartado) y a partir de ahí que cada cual elija su medio de almacenamiento.

-- 02 Oct 2012, 23:19 --

Toniman escribió:Me encanta esta idea para hacer un ordenador nuevo chicos, eso si, me gustan todas las especificaciones aunque echo de menos el color, 16 colores lo menos no? por favor, no me pongais 2 colores negros como en el Spectrum, no me malgasteis un color ;)

me apunto si hace falta hacer graficos para los nuevos juegos de esta maquina, aqui teneis un servidor.


Tony, descartamos el color de momento y lo dejamos para otro proyecto más grande cuando hayamos trasteado lo suficiente este.

Las cosas hay que hacerlas de menos a más, y tratar de crear algo tipo Amiga me parece muy pretencioso para comenzar. No es la idea hacer un sistema definitivo de videojuegos de 8 bits.

Tras este proyecto ya se verá.


Aunque sea en monocromo, no hay problema, contad conmigo para ese nuevo software y con mi nuevo juego arcade de naves que estoy preparando para Spectrum 48k, que podra ser versionado en esta maquina al ser muy parecida.
Y el ninja purpura sigue buscando nuevas aventuras.

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

Mensajepor mcleod_ideafix » 03 Oct 2012, 02:45

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
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
cpld_y_zocalo.jpg (69.63 KiB) Visto 9202 veces


zocalo_soldado.jpg
zocalo_soldado.jpg (75.86 KiB) Visto 9202 veces


chip_cpld.jpg
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
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.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

jepalza

Re: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor jepalza » 03 Oct 2012, 05:54

weirdocollector escribió:Estoy trabajando en un projecto similar.
Este fin de semana he terminado de ensamblar mi mini ordenador.
He puesto unos videos en youtube:
http://www.youtube.com/user/weirdocollector/videos?flow=grid&view=0

El ordenador tiene CPU Z80 de 4MHz, 16k ROM, 48k RAM, puerto serie, teclado PS/2, interfaz IDE con tarjeta Compact Flash.
Voy a añadir en una placa separada el chip de sonido Y-3-8910, el chip video TMS9918 y un SID.
Espero que os interese.


Justo de lo que se habla aquí, vamos, que estamos inventando la rueda. Pero lo divertido es hacerlo uno mismo, no copiarlo, sino, al igual que has hecho tú, hacerlo por ti mismo, y poner las cosas a tu gusto.
Pero tu invento me parece ideal, con todo lo que se busca de un sistema Z80 modernizado.

Hay que mirar el tuyo con detenimiento, a ver que tenemos.

Por cierto, bienvenido, weirdocollector pasa por presentaciones, que te conozcamos un poco mejor. No sea que seas un robot que ha escrito el MSG "por que yo lo valgo" ;-)

-- 03 Oct 2012, 04:59 --

mcleod_ideafix escribió: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...)


Yo, con tal de que no se use CPLD en un circuito "viejo", soy capaz de cualquier cosa :twisted: osea, que si hay que pasar de CPLD a 74LS, como si me dejo la piel en ello, pero lo hago "encantado" ("cagüen" los CPLD junto a un Z80... :roll: )

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: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor radastan » 03 Oct 2012, 07:59

¡Déjanos ir poco a poco McLeod!

Lo correcto es empezar por decir lo que buscamos, explicando una señal de TV en monocromo e implementando pasito a pasito la lógica necesaria. Eso, o al menos enseñar el esquema y luego pasarlo a PLD.

Estoy de acuerdo en lo de meter los 16K en la parte final del mapa de memoria para compatibilizar con CP/M, pero en ese caso hay que tener muy presente que lo primero que debe hacer el sistema operativo es posicionar la pila de la CPU por debajo de esos 16K o la contienda nos va a fastidiar en todas las operaciones de salto. Igualmente sería bueno poder cambiar el color del borde entre negro o blanco según nos interese, digo yo, porque dejar el borde negro puede ser feo si usamos un fondo blanco.

También me parece correcto usar el Z80 a 7 MHz, es absurdo hoy día limitarnos con este tema y nos permitirá hacer cosas increíbles aunque la pantalla sea en monocromo.

mcleod_ideafix escribió:PD: ¡diantres! Me quedé sin pines para la señal INT


Quita la salida de reloj a 3.5MHz para la CPU, como te digo no la vamos a usar.

Me alegra saber que tenemos a alguien como McLeod detrás, pero si esto es para aprender lo suyo es que empecemos desde abajo y no dando directamente la solución. ¿Puedes poner el esquema que has usado en lógica discreta?

Iba a abrir otro hilo para el tema de la gráfica, pero ya que has empezado a escribir por aquí seguimos así y ya lo ordenaré todo después en una ficha como es debido, o en un documento PDF.

LA SEÑAL DE VIDEO COMPUESTO

Bien, vamos a ver como es una señal de vídeo compuesto en monocromo (la más sencilla) y así entenderemos el objetivo final.

Para empezar hay que saber como se crea una imagen completa: en un primer barrido se envían las líneas impares y en un segundo barrido las líneas pares. Se hace así para evitar parpadeos (50 FPS mediante dos imágenes de 25 FPS entrelazadas).

En monocromo una línea de pantalla es así:

señal_pal.png
señal_pal.png (14.74 KiB) Visto 9393 veces


Para empezar debemos sincronizar la línea en pantalla de alguna forma, y para eso debemos enviar un tono "ultranegro". En la señal el valor de negro es 0.3V y el de blanco 1V, el valor de "ultranegro" se fija para 0V (si, en la imagen pone otra cosa). Con esa señal de sincronización informamos que vamos a enviar una línea a continuación. El motivo para que el valor de sincronización sea un negro lo más oscuro posible es que no se vea en pantalla como se realiza el retrazo del haz de electrones a la siguiente línea (hablamos de televisores de tubo).

La línea completa debe durar 64 microsegundos, de los cuales 12 microsegundos corresponden a la señal de sincronismo y 52 microsegundos a la información de los pixels de la línea en si. Con esta duración podemos obtener un total de 625 líneas, con una resolución por línea que nos la va a fijar el número de pixels que metamos en los 52 microsegundos.

De igual forma hay que indicar de alguna manera que vamos a comenzar una nueva imagen completa, a eso le llamamos sincronismo vertical:

sincronismo_vertical.png
sincronismo_vertical.png (30.72 KiB) Visto 9393 veces


Esta señal está formada por 5 impulsos de 27.3 µs, separados por espacios de 4.7 µs. En total ocupa 2.5 líneas de imagen.

Aunque la señal PAL tiene 625 líneas por convenio se reservan 50, por lo que sólo debemos usar 575 como máximo.

Creo que con esto ya podemos empezar a implementar la lógica discreta y se entenderá un poco el porqué se generan distintas frecuencias en el circuito:

- portadora
- sincronismo vertical
- sincronismo horizontal
- reloj de pixel

Pasemos a lo divertido...
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

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

Re: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor scooter » 03 Oct 2012, 08:48

Si vas a partir de cero yo también lo limitaría a 64k, si quieres pasar de ahí buscaría un micro que lo admita nativamente.
¿Y mapear el video como e/s?

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: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor radastan » 03 Oct 2012, 08:54

scooter escribió:Si vas a partir de cero yo también lo limitaría a 64k, si quieres pasar de ahí buscaría un micro que lo admita nativamente.
¿Y mapear el video como e/s?


Emmm... si te fijas en el mapa de memoria usamos 64K en total:

- 16 K de ROM
- 32K de RAM de usuario
- 16K de memoria de vídeo y memoria de sistema operativo

Total: 64K

Y ni de coña puedes mapear el vídeo como e/s, el Z80 direcciona 256 puertos de e/s, lo que en total te da 256 bytes para direccionar. Ni en modo carácter se podría direccionar por e/s toda la pantalla.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
Toniman
MSX Turbo R
MSX Turbo R
Mensajes: 263
Registrado: 12 Jul 2011, 19:32

Re: Proyecto ZDP-80 - Nuestro microordenador desde cero [#01

Mensajepor Toniman » 03 Oct 2012, 09:25

¿Pero el modo grafico tiene caracteres que puedan ser cambiados por un byte? eso acelera el movimiento de graficos grandes, que aunque se muevan de 8 en 8, vale la pena.
Y el ninja purpura sigue buscando nuevas aventuras.


Volver a “Otros microordenadores”

¿Quién está conectado?

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