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

BBC, Dragon, Sam Coupé, Oric ...
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 » 09 Oct 2012, 14:40

radastan escribió:
PabloMarmol escribió:En ebay aparecen vendedores de Hong Kong con el z80 de 20 MHz por unos 2 euros (busca por "z84c0020")


A Hong Kong no pido nada, los de Correos pueden meterme fácilmente 30 o 40 euros por "gastos de aduana", no compensa en absoluto.


Esta otra suabsta es de EEUU, aunque imagino que el caso con las aduanas es el mismo...
http://www.ebay.com/itm/Z84C0020VEC-Z80 ... 2ebe74e5f2

En DigiKey las tienen (aunque en este momento aparece como "agotado"). Lo que pasa con DigiKey es que si compras por ellos, SEGURO que te meten aduanas. Comprando desde China no es tan seguro.

-- 09 Oct 2012, 14:44 --

Por cierto, ¿has visto esta subasta? :shock:
http://www.ebay.com/itm/Design-your-own ... 1c2bdb61f9
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

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 » 09 Oct 2012, 15:05

Aj aj aj han estado leyendo estr hilo :D

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 » 09 Oct 2012, 15:53

mcleod_ideafix escribió:Por cierto, ¿has visto esta subasta? :shock:
http://www.ebay.com/itm/Design-your-own ... 1c2bdb61f9


Si, la he visto, pero vete tu a saber a que precio termina... al final me he tirado al río y he pedido 3 micros a Hong-Kong, si me viene susto de aduanas al menos los puedo mandar al carajo perdiendo poco dinero.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

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 » 09 Oct 2012, 16:33

radastan escribió:Si, la he visto, pero vete tu a saber a que precio termina... al final me he tirado al río y he pedido 3 micros a Hong-Kong, si me viene susto de aduanas al menos los puedo mandar al carajo perdiendo poco dinero.

Por mi experiencia (toco madera), lo más probable es que no pase nada :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

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 » 09 Oct 2012, 16:42

Mientras tanto voy a pedir el resto de componentes en España, sobre todo los contadores (usaré los del Jupiter ACE mientras tanto).

Usaré uno de los Z80A que tengo, alguna de las memorias SRAM (tengo hasta de 128K y 70ns), etc... eso si, como frecuencia de CPU tendré que usar una más baja por razones obvias.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
MetalSonic
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 540
Registrado: 20 Mar 2009, 23:19
Sistema Favorito: Spectrum +2
primer_sistema: Spectrum +2
consola_favorita: Nintendo SNES
Primera consola: Sega Master System

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

Mensajepor MetalSonic » 09 Oct 2012, 18:00

Una preguntilla...que no he logrado ver en los anteriores posts (que ya son unos cuantos...), si ya lo habéis comentado os pido disculpas por volverlo a preguntar.

Tenéis intención de que sea compatible con el software existente para algunos de los sistemas de 8 bits, ya sea spectrum o amstrad o el que sea?
Posiblemente acabe de decir una barbaridad... :oops:

Saludos

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 » 09 Oct 2012, 18:50

MetalSonic escribió:Tenéis intención de que sea compatible con el software existente para algunos de los sistemas de 8 bits, ya sea spectrum o amstrad o el que sea?

Esto es cosa de que te conteste Radastan, pero entiendo que no, que no es esa la intención. Otra cosa es que por la CPU, disposición de la pantalla, resolución, etc, algunas rutinas que haya escritas para Spectrum o Amstrad puedan ser portadas a este "engendro" :D sin mayores problemas. Por ejemplo, la rutina de scroll lateral que se muestra en el video es la misma misma que uso en Spectrum. Las rutinas de scroll vertical, sin embargo, no (menos mal que la disposición de la pantalla hace que esas rutinas sean mucho más cortas de escribir).

-- 09 Oct 2012, 20:41 --

Ya tengo implementado el modo de 2 bits, con 4 niveles de grises. La codificación que estoy empleando es la trivial: 00 = negro, 01 = gris oscuro (33% de luminancia), 10 = gris claro (66% de luminancia), 11 = blanco.

Para no quemar la Spartan con según qué fotos (ehem ehem! :D ) he optado por usar la foto de este gatito tan mono :)
gatito2bpp_1.png
gatito2bpp_1.png (172.6 KiB) Visto 9128 veces


Que después de escalarse a 256x192 y aplicarle una paleta con los 4 tonos de gris mencionados, queda así:
gatito2bpp_2.png
gatito2bpp_2.png (8.77 KiB) Visto 9128 veces


Este bitmap es el que he codificado de la forma indicada, y lo he metido "a saco" en la VRAM. Como en el caso anterior, al principio, tengo parada a la CPU mientras hago estas primeras pruebas. Al sintetizar el nuevo circuito de video, ha salido esto:
gatito2bpp_3.jpg
gatito2bpp_3.jpg (49.41 KiB) Visto 9128 veces


Un zoom de parte de la imagen (es de un monitor 1084) donde se pueden ver los cuatro matices de gris disponibles (y el efecto de las scanlines producidos por ser video progresivo)
gatito2bpp_4.jpg
gatito2bpp_4.jpg (92.84 KiB) Visto 9128 veces


A la hora de implementar este circuito en lógica discreta tienes que tener en cuenta una cosa: la fase final del circuito de video, donde el grupo de píxeles leídos de memoria ha de serializarse para obtener un stream de píxeles (la señal de video propiamente dicha), usa habitualmente un registro de desplazamiento. Estos existen en forma de circuito 74XX para desplazar un bit, pero no sé si hay alguna versión que permita desplazar 2 bits o un número arbitrario de bits, en un solo ciclo de reloj.
El problema es que este modo de video de 2bpp, si se implementa de la forma en que he descrito, esto es, usando dos bits contiguos del mismo byte para representar el valor de un pixel (lo que llaman el modo "chunky") necesitará de un circuito que sea capaz de desplazar en un solo ciclo de reloj dos píxeles, y además que sea capaz de ofrecer a su salida dos bits en lugar de uno.

Una solución que se me ocurre para esto es usar dos registros de desplazamiento de 8 bits. Uno de ellos se cargará, a su debido momento, con los bits 7,5,3, y 1 de los 8 bits leídos de memoria (4 píxeles), es decir, los 4 bits más significativos del contenido del registro de desplazamiento serán esos bits que he dicho. Los otros 4 bits no habrá que cargarlos (no llegarán a verse). El otro registro de desplazamiento se cargará en sus 4 bits más significativos con el valor de los bits 6.4.2 y 0 de lo leído desde memoria. La señal de reloj se aplicará a ambos registros a la vez, y la salida de estos dos registros conformarán la señal de video de dos bits que se convertirá después a analógico y se mezclará con la señal de sincronismo.

Estos registros de desplazamiento se cargarán con nueva información leída de memoria cada 4 ciclos de reloj de pixel, en lugar de cada 8, como se hace en el Jupiter ACE y en el Spectrum.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
jltursan
Amiga 2500
Amiga 2500
Mensajes: 4028
Registrado: 13 Oct 2006, 19:45
Sistema Favorito: MSX
primer_sistema: Dragon
Ubicación: Serracines, Madrid, España
Gracias dadas: 57 veces
Gracias recibidas: 157 veces
Contactar:

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

Mensajepor jltursan » 09 Oct 2012, 20:41

radastan escribió:
PabloMarmol escribió:En ebay aparecen vendedores de Hong Kong con el z80 de 20 MHz por unos 2 euros (busca por "z84c0020")


A Hong Kong no pido nada, los de Correos pueden meterme fácilmente 30 o 40 euros por "gastos de aduana", no compensa en absoluto.


Precisamente acabo de recoger de Correos unos integrados procedentes de China. Les he comprado de todo, Z80s, HD6309, etc. y en general los componentes han funcionado, han salido más o menos económicos y NUNCA me han cobrado aduanas. En general si el paquete no pasa de los 40-50€ y es pequeño, te libras hasta pidiendo a USA.

antoniovillena escribió:No hacía falta que lo implementaras, si yo te lo decía por decir.

De todas formas si quieres hacer experimentos te propongo lo siguiente:
ROM: $0000-$37ff
Bitplane 0: $3800-$4fff
Bitplane 1: $5000-$67ff
Bitplane 2: $6800-$7fff
Resto de RAM: $8000-$ffff

Tendríamos de esta forma 3 bitplanes diferenciados y 3 modos de video "ficticios" de 2, 4 y 8 colores (algo parecido a un Amstrad CPC). La diferencia es que esto es mucho más sencillo, si sólo queremos 2 colores sólo tocamos un bitplane y la velocidad para mover gráficos de esta forma es 3 veces más rápida que en el caso de 8 colores. La pega de esto es que para pintar un pixel hay que escribir en 2 y 3 zonas distintas para 4 y 8 colores respectivamente.

Los 8 colores yo los sacaría de dos formas distintas:
1. Escala de grises lineal, por video compuesto.
2. 8 colores paletizados y configurables, por RGB.

Lo bueno es que no necesitamos meterle un caro AD724 al circuito. Lo malo es que las salidas son distintas, y los juegos diseñados en color se verían mal en B/N (lo contrario no pasa porque la paleta se puede configurar a escala de grises).


Jeje, clavadito al Camputers. Sin escala de grises y sin la posibilidad de paletizar, claro. Al pobre le pesa un montón la gestión de pantalla cuando se trata de manipular los bancos con los bitplanes.

Perdón por la disgresión, podéis continuar... ;)

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 » 09 Oct 2012, 22:01

mcleod_ideafix escribió:Una solución que se me ocurre para esto es usar dos registros de desplazamiento de 8 bits. Uno de ellos se cargará, a su debido momento, con los bits 7,5,3, y 1 de los 8 bits leídos de memoria (4 píxeles), es decir, los 4 bits más significativos del contenido del registro de desplazamiento serán esos bits que he dicho. Los otros 4 bits no habrá que cargarlos (no llegarán a verse). El otro registro de desplazamiento se cargará en sus 4 bits más significativos con el valor de los bits 6.4.2 y 0 de lo leído desde memoria. La señal de reloj se aplicará a ambos registros a la vez, y la salida de estos dos registros conformarán la señal de video de dos bits que se convertirá después a analógico y se mezclará con la señal de sincronismo.

Estos registros de desplazamiento se cargarán con nueva información leída de memoria cada 4 ciclos de reloj de pixel, en lugar de cada 8, como se hace en el Jupiter ACE y en el Spectrum.


Yo había pensado en un contador, que según el modo de vídeo se resetea y lee de memoria cada 4 u 8 estados. Es muy simple, basta unas puertecitas y un contador de 4 bits.

A la hora de presentar los pixels en pantalla yo no usaría la paleta como la has usado, yo usaría el primer bit como 0 negro y 1 blanco, y el segundo bit para indicar gama de grises y que el bit anterior indicase cual. De esta forma el mismo circuito te sirve para presentar ambos modos, sólo hay que usar el segundo bit o no, independientemente del desplazamiento que uses (de bit en bit o de dos bit en dos bit). Para seleccionar los bit a leer puedes usar otro contador, pero fuerzas el bit de menor peso si estás en el modo de dos bits por pixel (así saltas de dos en dos).

Te lo he dicho de cabeza, cuando lo dibuje lo mismo cambio de opinión si veo que se puede optimizar.

Por cierto, para mis pruebas usaré algo más curradete:

anime.png
anime.png (4.25 KiB) Visto 9116 veces


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

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 » 09 Oct 2012, 23:11

radastan escribió:Yo había pensado en un contador, que según el modo de vídeo se resetea y lee de memoria cada 4 u 8 estados. Es muy simple, basta unas puertecitas y un contador de 4 bits.

No te hace falta un contador nuevo. Ya tienes uno, el contador de píxeles. Usa sus tres bits menos significativos y tendrás un contador que cuenta de 0 a 7. Usa sus dos bits menos significativos y tendrás un contador de 0 a 3.

radastan escribió:A la hora de presentar los pixels en pantalla yo no usaría la paleta como la has usado, yo usaría el primer bit como 0 negro y 1 blanco, y el segundo bit para indicar gama de grises y que el bit anterior indicase cual.

Es lo de menos... reordenas después los dos bits como quieras, o los pasas por un circuito combinacional que use una tabla de verdad como la que pongo a continuación. Yo lo he hecho así para que la conversión de valor de bit a valor de tensión (para el conversor D/A) sea directa, pero vamos, que con tu asignación es sencillamente hacer la tabla de verdad como ésta:

Código: Seleccionar todo

Radas  McLeod
0 0      0 0
1 0      1 1
0 1      0 1
1 1      1 0


radastan escribió:De esta forma el mismo circuito te sirve para presentar ambos modos, sólo hay que usar el segundo bit o no, independientemente del desplazamiento que uses (de bit en bit o de dos bit en dos bit). Para seleccionar los bit a leer puedes usar otro contador, pero fuerzas el bit de menor peso si estás en el modo de dos bits por pixel (así saltas de dos en dos).

No acabo de verlo... Si los dos bits del pixel están en el mismo byte (el modo chunky) y tú decides usar sólo monocromo, entonces el segundo bit que has leído no lo puedes descartar, sino que tendrás que presentarlo en el siguiente ciclo de reloj. Si decides usar el modo de dos bits por pixel, el segundo bit leído lo tendrás que presentar en el mismo ciclo de reloj junto con el otro, para formar un pixel de 2 bits.

Cuando lo tengas diseñado supongo que lo veré mejor :)

radastan escribió:Por cierto, para mis pruebas usaré algo más curradete...

Yo no dibujo, ni sé dibujar. De hecho te iba a pedir si tenías algún dibujo para probar el modo de 2bpp, pero como no sé si tendrías alguno a mano "ya", decidí usar algo que pudiera convertir por mi cuenta. Este que has puesto es muy chulo. Te lo cojo para las pruebas :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Otros microordenadores”

¿Quién está conectado?

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