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 » 04 Oct 2012, 23:47

radastan escribió:Que sepas que se te va a joder el monitor.

:lol: :lol: :lol:


Ya notaba yo un humillo en la Spartan.... ¡susto, mare!

radastan escribió:Por cierto, si no es mucha molestia simula después el modo con dos tonos de gris extra (sería dos bits por pixel) para ver cual es la merma de velocidad. Lo gracioso es que ese modo sería gráficamente como la primera Gameboy pero con mucha más resolución (que es otra idea posible, bajar la resolución en ese modo a 160x144 pixels).


¿Merma de velocidad? Hasta que el Z80 no esté funcionando no podré saberlo (porque la parte del video va a ir a la misma velocidad con 1 o 2 bits por pixel). De momento te puedo decir que con la primera opción de contención (WAIT hasta el final de un scan) la merma de velocidad será la misma en ambos casos. Otra cosa es que consiga scrollear en el mismo tiempo o menos una línea de píxeles si hay que desplazarlos 2 píxeles en lugar de uno.
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 » 05 Oct 2012, 07:28

mcleod_ideafix escribió:¿Merma de velocidad? Hasta que el Z80 no esté funcionando no podré saberlo (porque la parte del video va a ir a la misma velocidad con 1 o 2 bits por pixel). De momento te puedo decir que con la primera opción de contención (WAIT hasta el final de un scan) la merma de velocidad será la misma en ambos casos. Otra cosa es que consiga scrollear en el mismo tiempo o menos una línea de píxeles si hay que desplazarlos 2 píxeles en lugar de uno.


Ya se que no habrá merma de velocidad en la parte de vídeo, pero en el caso de usar 2 bits por pixels (blanco y negro más dos tonos de gris) entonces si hay un buen impacto en la CPU (es el doble de información, pasamos de 6K a 12K aproximadamente). Por eso te he dicho que cuando realices pruebas, me refería con el Z80, midieras ese impacto para saber las posibilidades de dicho modo.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

micro430
Acorn Atom
Acorn Atom
Mensajes: 1
Registrado: 05 Oct 2012, 17:44
Sistema Favorito: Atari ST
primer_sistema: Atari ST
consola_favorita: Nintendo DS/3DS
Primera consola: Atari 2600

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

Mensajepor micro430 » 05 Oct 2012, 17:57

:shock: que chido lo del proyecto , la verdad desde cuando yo queria hacer algo parecido pero por falta de tiempo y de informacion no habia hecho
que bueno que existe gente en la web con estas ganas de crear algo asi, pues yo les doy animos para que sigan asi y para que vean
que si hay gente en la web que le interese su proyecto , cualquier cosa haber si yo puedo apoyar . :lol: . saludos y muchas felicidades por el proyecto =D> .

Avatar de Usuario
El_Dan
Amstrad CPC 464
Amstrad CPC 464
Mensajes: 62
Registrado: 05 Oct 2012, 22:31
Sistema Favorito: PC
primer_sistema: PC
consola_favorita: Sony PlayStation 1
Primera consola: Nintendo NES/Clónica
Ubicación: Caracas, Venezuela

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

Mensajepor El_Dan » 05 Oct 2012, 22:55

Me registro para felicitarlos por este proyecto =D> , la verdad es que una cosa es realizar el clon de un ordenador (Jupiter Ace, Sinclair ZX Spectrum) y otra muy distinta desarrollar uno desde cero, tomando las decisiones para el desarrollo del computador(vídeo, memoria, etc.), felicidades por el proyecto y que pronto lo tengan funcionando :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 » 07 Oct 2012, 23:35

Primeras pruebas "en vivo" y ya con el sistema montado.

Bueno, no completo. Este prototipo no tiene ni teclado, ni sonido, ni sistema de almacenamiento. Tan solo podemos ver lo que hace, pero no interactuar con él. Es una prueba para testear diferentes alternativas para la producción de video y compartir la memoria con la CPU.

En todos los casos se ha usado una resolución de 256x192 puntos, blanco y negro (1 bit por pixel).

Sirva este video como prueba de concepto sobre lo que se puede llegar a obtener cuando después se implemente el sistema bien en lógica discreta, o con CPLD's o como sea. Lo que ves, lo puedes llegar a obtener ;) No son trucos de emulación :)

Para poder leer el texto que lo acompaña, creo que es mejor verlo a pantalla completa y a la máxima resolución (se ha grabado en HD 720)

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, 00:59

En pocas palabras, que usando un Z80 a 7 MHz, memoria de 16K a 14 MHz (para evitar contienda), y un bit por pixel esto se mueve como una Neo-Geo en monocromo... mola, pero ahora es el momento de comprobar si poniendo dos bits por pixel la cosa pierde mucho.

Lo que no acabo de entender es lo de poner el Z80 a 14 MHz, una pasada si, pero eso significaría que hay que poner la memoria a 28 MHz. ¿No?

Por mi encantado de poner la CPU a 14 MHz, pero se nos olvida que alcanzar esa velocidad supone también limitaciones varias de diseño:

- Efecto de las pistas a un determinado tamaño (a más MHz las impedancias son fundamentales)
- Tiempos de acceso de los componentes discretos
- Ruido que se meta al bus por cada componente

14 MHz son palabras mayores.
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, 01:35

radastan escribió:Lo que no acabo de entender es lo de poner el Z80 a 14 MHz, una pasada si, pero eso significaría que hay que poner la memoria a 28 MHz. ¿No?

La memoria es asíncrona. No se pone a ninguna velocidad en concreto. Lo único que tienes que preocuparte de que su tiempo de acceso sea menor de 70ns (para una CPU a 14MHz). En la FPGA, cuya memoria sí es síncrona, sí que está puseta para que funcione a 28MHz. En tu diseño no habrá ninguna señal más rápida que 14MHz.

radastan escribió:Por mi encantado de poner la CPU a 14 MHz, pero se nos olvida que alcanzar esa velocidad supone también limitaciones varias de diseño:

El clon Harlequin usa un reloj de 14MHz y funciona. Además, las limitaciones de diseño son las mismas que usarías para 7MHz. 14MHz es una frecuencia moderadamente baja. De hecho, esos 14MHz sólo irían a la CPU. La sección de video seguiría usando 7MHz.

radastan escribió:- Efecto de las pistas a un determinado tamaño (a más MHz las impedancias son fundamentales)

Usa una impedancia característica de 50 ohmios para la pista de 14MHz, y evita usar muchas vías en esa pista. Para calcular la impedancia característica necesitas saber:
- La anchura de la pista
- El grosor de la pista (el fabricante lo suele medir en onzas: una onza son 35 micrómetros)
- El grosor del dieléctrico (la placa). Lo habitual son 1.6mm
- La constante dieléctrica de la placa. Lo habitual (y lo más barato que te ofrecen) es FR-4, que tiene una constante dieléctrica de 4.7 (para una frecuencia de unos 20MHz)
Pues con esos datos, resulta que necesitas que tu pista tenga un grosor de 2.8mm para que su impedancia característica sea de 50 ohmios. Coge cualquier equipo en el que se usen relojes de 20MHz o más (algún Amiga, por ejemplo, o placas madre de PC's) y mide a ver si la pista que lleva la señal de reloj cumple eso. Lo más probable es que no.
Más info aquí. Lo que te interesa está a partir de la página 12 del documento (página 3 según el índice):
http://es.scribd.com/doc/12867771/Tesis ... enez-Lopez

Por ejemplo, puede leerse:
Rodrigo Jiménez López escribió: Los circuitos de sincronía o de reloj, tienen una alta razón de repetición y son generalmente la primera fuente de ruido, ya que su señal se radia en todas direcciones. Una de las recomendaciones para evitar este ruido, es colocar el generador de reloj en el centro del sistema y hacer una distribución radial de la señal, con el fin de cancelar corrientes y reducir losretardos de propagación.

Así que ya sabes ;)

radastan escribió:- Tiempos de acceso de los componentes discretos

A esa velocidad no tendrás problemas con los chips HCT o HC.

radastan escribió:- Ruido que se meta al bus por cada componente

Esto también lo tienes a frecuencias menores. El ruido no es por la frecuencia, es por la velocidad de conmutación, que depende a su vez de la velocidad del propio circuito. Por ejemplo, un chip 74F producirá más ruido que se equivalente 74HC. Nada que no puedan solucionar condensadores cerámicos para desacoplar la línea de alimentación.

radastan escribió:14 MHz son palabras mayores.

Para nada :) La interfaz QLSD que hice usa un reloj, creo recordar de 40MHz, y no se me ocurrió hacer ninguna medida de impedancia ni rutado especial. La ULAplus que estoy haciendo usa un reloj de 50MHz y otro programable para la configuración. Xilinx establece que la pista que lleva la señal del reloj de configuración debe ser de 50 ohmios, pero no eché cuenta de eso, y cuando ya con la placa fabricada se me ocurrió calcular la impedancia característica que tenía, me salían más de 100 ohmios. Aun así, el chisme funciona :)

Lo único que has de tener en cuenta son las precauciones típicas de cuando se diseña una PCB para un circuito con lógica digital, esto es:
- Para hacer cambiar una pista de dirección, hazlo siempre en intervalos de 45 grados. Nunca directamente a 90 grados.
- Si una pista continúa en la otra cara mediante una vía, la continuación debe formar un ángulo igual o menor de 45 grados con la pista precedente.
- Para diseños con placa a doble cara, poner siempre un plano de masa. Asegurarse de que las pistas que llevan señales rápidas tengan "por debajo" el plano de masa. Esto hará que la impedancia característica de esa pista sea menor.
- No generar bucles de corriente: llevar la alimentación a los integrados usando dos pistas (alimentación y masa) que vayan paralelas. Un ejemplo de mal diseño es aquel en el que se alimentan integrados usando una pista de potencia en el lado de arriba de la placa, la pista de masa en el lado opuesto, y tirando pistas en vertical hacia los pines 7 y 14 desde cada punto. Esto crea un bucle de corriente por cada integrado que alimentes así.

Por experiencia propia, incluso aunque no tengas en cuenta estas cosas, es muy probable que tu circuito funcione. De hecho, los únicos circuitos puñeteros en los que hemos tenido problemas de ruidos son aquellos en los que hemos mezclado componentes que van a una frecuencia media (menos de 100MHz) con módulos que van a frecuencias que superan el gigaherzio. En esos casos, el ruido generado por los componentes "lentos" han hecho que los componentes "rápidos" no funcionen bien (el módulo en cuestión es un receptor GPS, que no cogía señal por culpa del ruido que generaba el resto del circuito. Ruido que no pudimos comprobar hasta que nos hicimos con un osciloscopio de 10GHz con medida de FFT en tiempo real)

Por otra parte, llevar la CPU a 7MHz o 14MHz no cambia el diseño. La única diferencia entre el clon funcionando a 7 y a 14, es que el Z80 toma la señal de reloj de 7 o 14MHz. El resto (circuitería de video) sigue funcionando a 7MHz. Vamos, que puedes hacer un diseño pensando en poner a la CPU a 7MHz, y una vez que veas que funciona, coges el pin 6 de entrada de reloj de la CPU y lo llevas a la señal de 14MHz en lugar de a la de 7MHz, y ya lo tienes (eso es ni más ni menos que lo que he hecho yo). Claro que dependerá de cómo diseñes la parte de video. He seguido un esquema simplificado del algoritmo que te puse hace unos posts. La diferencia de la versión sin contienda respecto a la que tiene contienda es que la primera usa un latch octal más, que guarda los siguientes 8 píxeles a pintar. Por otra parte, un contador de 13 bits va llevando la cuenta de la próxima dirección de memoria de video que se ha de leer. El sistema de video aprovecha los "huecos" de tiempo que la CPU deja en los que no accede a memoria, y lee con antelación el próximo grupo de 8 píxeles a pintar.

He probado incluso a poner a la CPU a 28MHz (esto con un Z80 CMOS no podrías hacerlo) y sigue funcionando, pero ya el sistema de video no tiene tiempo de cargar píxeles en el hueco temporal que le deja la CPU (que ahora es la mitad de tiempo), así que se ve un scroll la leche de rápido, pero con un montón de nieve en la pantalla (un efecto parecido a la "ULA snow" del Spectrum)
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, 07:17

McLeod, este hilo va a ser objeto de futuros estudios por mucha gente incluyéndome a mi, madre mía de la de cosas que se entera uno contigo.

Pues otra cosa más anotada: 14 MHz para la CPU y memorias con tiempo de acceso menor a 70 ns.

El modo de vídeo de 2 bit por pixel (con tonos de gris) tiene que moverse la mar de lijerito a 14 MHz.
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, 08:27

radastan escribió:El modo de vídeo de 2 bit por pixel (con tonos de gris) tiene que moverse la mar de lijerito a 14 MHz.

Hombre... ya te adelanto que la pequeña demo del scroll se moverá el doble de lento con una pantalla de 2 bits por pixel respecto a la de 1 bit por pixel (que tenga la misma resolución, o sea 256x192). O sea, que el scroll lateral de la primera parte del video se moverá, a 14MHz, con la misma velocidad que se mueve la versión de 7MHz.

En el caso de 1bpp, el scroll es más rápido porque el Z80 tiene una instrucción para rotar 1 bit. Pero no tiene instrucción para rotar 2 bits, así que hay que repetir la operación dos veces para que la rotación final sea de 1 pixel.
Curiosamente, si la pantalla fuera de 4bpp se rotaría más rápidamente que en el caso 2bpp. Esto es porque el Z80 sí que dispone de una operación para rotar un nibble: la instrucción RLD. Sí puedo hacer una rutina que rote 2 píxeles de 2bpp, ya que en ese caso estaré rotando 4 bits. El resultado es que el scroll se verá practicamente igual de rápido que la versión de 1bpp, pero no tan suave.

Otras operaciones, como por ejemplo escribir un caracter de 8x8 píxeles, también tardarán el doble (escribir 16 bits por fila de carácter en lugar de 8 bits)

Además, ten en cuenta que para que el mecanismo que evita la contienda siga funcionando, habrá que subir el reloj de video a 14MHz en lugar de 7, ya que ahora hay que leer un byte de pantalla cada 4 ciclos de reloj, en vez de cada 8 ciclos, como hacemos con el caso de 1bpp. Si la pantalla es de la mitad de resolución, 128x192, entonces eso no cambia.

Antes de abrazar este modo de pantalla, piensa también que hay muchas utilidades que te permiten dibujar a 1bpp, no sólo pantallas, sino sprites y cosas así, pero pocas habrá que te permitan dibujar a 2bpp.

Seguramente mañana pueda encontrar un hueco para implementarlo. :) Eso sí: no tengo rutinas hechas para hacer scroll de 2 píxeles. Habrá que escribirlas también.
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, 09:22

Comprendo que ese modo de dos bits no sea perfecto, pero nos permite unos gráficos la mar de majos por si queremos hacer alguna chorrada. Fíjate la primera Gameboy con ese modo y casi la mitad de resolución lo que hace:

Imagen

Puede que no sea la panacea de la velocidad, pero de todas formas va a ir más rápido que un ZX Spectrum.
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: No hay usuarios registrados visitando el Foro y 2 invitados