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

BBC, Dragon, Sam Coupé, Oric ...
Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

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

Mensajepor antoniovillena » 08 Oct 2012, 11:19

¿Has probado a 20Mhz?

Código: Seleccionar todo

7000000/15625= 448    (ciclos de video de un scanline)
256/448= 0,57         (porción del scanline que se pinta)
20000000/15625= 1280  (ciclos de video de un scanline)
768/1280= 0,60        (porción del scanline que se pinta)


Se pueden usar 20Mhz sólo que la lógica para detectar si estoy en el área visible es un poco más compleja. En un spectrum el bit más alto del contador horizontal (H8) es el que me dice si la cuenta es <= 255 (área visible) o => 256 (área no visible: bordes y retrazo horizontal).

Al usar 20Mhz hay que emplear 3 bits para esta lógica (H8, H9, H10). Generamos la señal Ven de la siguiente forma:
Ven= H10 OR (H9 AND H8).
Podéis comprobar que Ven=1 para valores menores a 768 y Ven=0 para mayores o iguales.

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 » 08 Oct 2012, 11:41

Por mi no hay problema en meter 20 MHz, pero creo que no hace falta apurar tanto y que 14 MHz supone una velocidad considerable respecto a un 8 bits normal (aparte de necesitar menos lógica discreta como bien mencionas).

Además, lo bueno de usar 14 MHz en una CPU que está preparada para 20 MHz es que disipa bastante menos calor, ¿no?

Vamos a lo sencillo, por favor, ya habrá tiempo para una segunda versión más burra con 256 colores por pixel o varios Z80 si hace falta.
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 » 08 Oct 2012, 11:54

¿Habeis hablado de el tamaño del borde de la pantalla? yo recomiendo hacer algo mas ajustado, un borde pequeño, alejado del gran borde que tiene el Spectrum.
Y el ninja purpura sigue buscando nuevas aventuras.

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 » 08 Oct 2012, 11:59

Toniman escribió:¿Habeis hablado de el tamaño del borde de la pantalla? yo recomiendo hacer algo mas ajustado, un borde pequeño, alejado del gran borde que tiene el Spectrum.


Eso no es tan sencillo, ya que tenemos que ajustarnos a los pixels de pantalla. Si ponemos un número de pixels que sea desajustado con el de la pantalla habrá pixels más grandes que otros, aparte que un monitor LCD se vería bastante mal. No se puede escoger un tamaño arbitrario.
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 » 08 Oct 2012, 12:13

Es verdad, para eso esta el MSX que no tiene borde lateral, 256 pixeles de ancho, todos iguales, lo mismo le pasa a la NES, creo.
Y el ninja purpura sigue buscando nuevas aventuras.

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 » 08 Oct 2012, 12:16

Toniman escribió:Es verdad, para eso esta el MSX que no tiene borde lateral, 256 pixeles de ancho, todos iguales, lo mismo le pasa a la NES, creo.


Es que va justito, si usamos cuatro pixels de pantalla para cada pixel del ordenador casi no hay borde.

Eso tiene ventajas e inconvenientes: aprovechamos la pantalla pero vemos pixels como puños... habrá que probar ambos casos.
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 » 08 Oct 2012, 12:29

Toniman escribió:¿Habeis hablado de el tamaño del borde de la pantalla? yo recomiendo hacer algo mas ajustado, un borde pequeño, alejado del gran borde que tiene el Spectrum.


El tamaño del borde está relacionado con el resto de parámetros. Fíjate en las fórmulas que puse hace algunos posts, en donde de hecho se deduce el tamaño del borde en función del resto de parámetros. Para un reloj de pixel de 7MHz, 256 puntos direccionables por línea de pantalla, y sistema PAL, el tamaño del borde es "el que es".
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
commodoro
Amiga 1200
Amiga 1200
Mensajes: 1280
Registrado: 17 Abr 2010, 17:32

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

Mensajepor commodoro » 08 Oct 2012, 12:39

Un proyecto interesante, aunque escaso.

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 » 08 Oct 2012, 12:42

radastan escribió:Es que va justito, si usamos cuatro pixels de pantalla para cada pixel del ordenador casi no hay borde.
Eso tiene ventajas e inconvenientes: aprovechamos la pantalla pero vemos pixels como puños... habrá que probar ambos casos.


Para eso entonces tienes que usar una frecuencia diferente para el reloj de pixel. Si, por ejemplo, usas 10MHz como reloj de pixel, escoges tener una línea de pantalla con 256 píxeles activos, y usas dos ciclos de reloj por pixel (esto es, como si tuvieras una línea de 512 píxeles en donde cada pixel está repetido dos veces), tienes lo siguiente:

mcleod_ideafix escribió:De hecho, una vez que se elige la frecuencia de pixel (llamémosla Fp), el número de cuentas de píxeles total (Npt) que hay que hacer en el contador de píxeles para llegar a 64uS viene determinado por: Npt = 64 * Fp
Este valor, Npt, tienes que descomponerlo en la suma de los siguientes valores (que tendrás que calcular o elegir, en su caso):
- Np : el número de píxeles por línea de pantalla (lo tienes que elegir)
- Nb : el número de píxeles que habrá en total entre ambos bordes derecho e izquierdo (se calcula en base a los demás)
- Nfp : el número de cuentas que dura el front porch de la señal de video (el front porch dura 5.8uS, así que Nfp = 5.8 * Fp . Como saldrá un número con decimales, se coge el entero más próximo)
- Nbp : el número de cuentas que dura el back porch (el back porch dura 1.5uS, así que Nbp = 1.5 * Fp . Como saldrá un número con decimales, se coge el entero más próximo)
- Nhs : el número de cuentas que dura el pulso de sincronismo horizontal (dura 4.7uS, así que tenemos Nhs = 4.7 * Fp. Mismas consideraciones que con las señales anteriores)

Debe cumplirse, por tanto que: Npt = Np + Nb + Nfp + Nbp + Nhs

La suma de los valores Nbp + Nhs + Nfp nos da el número de cuentas del intervalo de blanking horizontal. Detectar este intervalo es importante porque la señal de video debe valer 0 durante este período. Si no, pasará como pasó con el ZX80 y los primeros modelos de ZX81, que ponían la señal de video a blanco antes de tiempo.
Este tiempo debe sumar 5.8 + 1.5 + 4.7 = 12uS (de ahí viene que la señal activa de video dure 64 - 12 = 52uS) ana sí que los valores de Nfp, Nhs y Nbp deberán ajustarse en +/-1 unidad de forma que la suma de los tres sea lo más parecida posible al valor Fp * 12

Por último, se calcula el valor Nb despejándolo: Nbp = Npt - (Np + Nfp + Nbp + Nhs). Conviene que sea un valor par, para que al dividirlo entre el tiempo de borde izquierdo y borde derecho, salgan bordes simétricos (aunque un pixel de diferencia en la anchura no se va a notar demasiado)


Npt = 64*10 = 640
Np = 512 (son 256 píxeles repetidos dos veces cada uno)
Nfp = 5.8*10 = 58
Nbp = 1.5*10 = 15
Nhs = 4.7*10 = 47

Despejando: Nbp = Npt - (Np + Nfp + Nbp + Nhs) = 640 - (512+58+15+47) = 8

Lo que nos da una anchura de borde izquierdo y derecho de 4 píxeles cada uno.

Vamos, ni más ni menos que lo que hace el QL, y que ya expliqué en su momento ;) :
http://foro.speccy.org/viewtopic.php?f=15&t=2750
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 » 08 Oct 2012, 13:01

mcleod_ideafix escribió:Vamos, ni más ni menos que lo que hace el QL, y que ya expliqué en su momento ;) :
http://foro.speccy.org/viewtopic.php?f=15&t=2750


Y que a modo de resumen viene a decir que si vemos el ordenador en un televisor normal vamos a perder pixels (no se van a ver porque se los come el borde del televisor) y sólo se verían todos los pixels en un monitor.

Es decir, que lo suyo, para no calentarnos la cabeza, es dejar el borde y punto pelota.

-- 08 Oct 2012, 12:06 --

commodoro escribió:Un proyecto interesante, aunque escaso.


¿Escaso? si llevamos sólo una semana discutiendo, es normal que haya poca chicha de momento, pero creo que sólo por la discusión de la parte gráfica ya merece (y mucho) la pena. En un mismo hilos estamos viendo todos los pros y contras de usar un modo de vídeo u otro, lo que implica la señal de reloj, etc.

Pero tranquilo que el objetivo es dejar la parte gráfica zanjada esta misma semana.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝


Volver a “Otros microordenadores”

¿Quién está conectado?

Usuarios navegando por este Foro: Alan_Smithee y 2 invitados