Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Foro dedicado a la programación en todo tipo de sistemas clásicos.
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: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor mcleod_ideafix » 20 Dic 2012, 13:53

Opencores actualizada con la descripción del clon en el repositorio, y algunas fotos en la sección principal :)
http://opencores.org/project,zx_ula
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

jepalza

Re: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor jepalza » 20 Dic 2012, 18:23

¡guay!

Te he enviado el último archivo, con los pines corregidos y un dibujo mas chulo, para que sustituyas.
Ahora, voy a jugar con el hard, cambiando el teclado y el vídeo (y probando algun juego 16k).


Edito: he mirado lo de OpenCores, y recordarte que cambies el dibujo de los pines, que ese ya no vale. ;-)
Y otra cosa: ¿cómo es que no subiste el Jupiter Ace a opencores? O soy un ciego y no lo veo. (es mera curiosidad)

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: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor mcleod_ideafix » 20 Dic 2012, 19:54

jepalza escribió:¿cómo es que no subiste el Jupiter Ace a opencores? O soy un ciego y no lo veo. Estaba buscando tambien tu Verilog PS2Spectrum, a ver si lo encuentro.

El proyecto del Jupiter ACE necesita un lavado de cara total... y otro proyecto distinto en OpenCores, ya que el que abrí es para la ULA del Spectrum. Fue la primera cosa que hice, y todo el código es un puñetero lío. Para empezar, el core de Z80 que usé es una versión antigua del T80 y tiene algunos fallos. El mecanismo de contención funciona... por casualidad :D Al ser la primera cosa que hice, no está nada estructurado, y cosas que son propias del OLS están mezcladas con cosas que deberían ser independientes de la tecnología. Si tienes mucho interés, te lo paso tal como está (y no me hago responsable de que fría tu OLS :P )

Sobre lo que me preguntas del teclado: la parte del teclado está en cualquiera de los últimos clones que subí a OpenCores (por ejemplo, el que usa ULAPlus). Necesitas tres ficheros que están ahí:
- teclado_ps2.v (el módulo principal)
- ps2controller.v (la máquina de estados que lee el teclado PS/2)
- mapa_es.inc (el mapa de teclado para un teclado español)

El módulo principal se llama ps2kbd. Esta es su definición:

Código: Seleccionar todo

module ps2kbd (
    input clk,
    input reset,
    input clkps2,
    input dataps2,
    output ledextended,
    output ledreleased,
    output ledmayus,
    output [7:0] scancode,
    input [7:0] semifila,
    output [4:0] columna
    );


El reloj es de 14MHz. El reset es activo a nivel alto. Si no lo usas, pon un 0 en esta entrada.
clkps2 y dataps2 son las entradas provenientes del conector de teclado PS/2. Tienes que usar dos pines de la FPGA directos (no valen los del conector lateral). Para proteger los pines de la FPGA, pon resistencias de 270 ohmios en serie en cada conexión.

En el fichero UCF, estos dos pines son así:

Código: Seleccionar todo

# Keyboard connections
NET "clkps2" LOC = "posicion de este pin" | IOSTANDARD = LVTTL | PULLUP;
NET "dataps2" LOC = "posicion de este pin" | IOSTANDARD = LVTTL | PULLUP;


Las salidas led...loquesea puedes ignorarlas. Son para depuración de este módulo. No conectes nada a ellas. Lo mismo con la salida scancode. Esta salida y las de los leds tienen sentido en el entrenador que uso, que tiene leds para diagnóstico y un display de 7 segmentos y cuatro cifras. El OLS no lleva nada de eso, así que no pongas nada en ellas.

La entrada "semifila" conéctala directamente a los bits 8 a 15 del bus de direcciones de la CPU. La salida "columna" irá a la entrada de teclado de la ULA. En caso de dudas, consulta el fichero que haga de TLD del diseño. Ahí verás cómo se conecta el teclado.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

jepalza

Re: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor jepalza » 20 Dic 2012, 20:46

Jeje, ya me he respondido yo. Ya lo he implementado. Una vez que le coges la carrerilla, esto va solo. He cogido los módulos que tenías en uno de los Spectrum48kSpartan grandes y los he llevado sin absolutamente ningun problema al OLS. Me he currado un conector PS2 chapucerillo quitando uno de una placa de pc vieja, y ya está, un OLS con un spectrum 16K y teclado PS2, cortesía de Mcleod_Ideafix. :mrgreen:

Y funciona que te cagas. Lo único, es que el Spectrum de 16k, en realidad tiene unos 200bytes de ram disponibles, y en cuanto escribes cuatro líneas, casca y se resetea.... :-({|=

Me acaba de asaltar una duda: ¿se alimenta a +5 o a +3.3? Yo lo tengo a +5 que funciona bien.

mcleod_ideafix escribió:Si tienes mucho interés, te lo paso tal como está (y no me hago responsable de que fría tu OLS :P )

No es necesario, simplemente, me ha llamado la atención no verlo publicado. (tampoco me vendría mal tenerlo en el archivo de colecciones, o sea, que si me lo mandas, lo guardo, o lo limpio con tiempo y te lo reenvío)
Adjuntos
ps2_en_ols.JPG
ps2_en_ols.JPG (74.8 KiB) Visto 10176 veces

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: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor mcleod_ideafix » 20 Dic 2012, 21:32

jepalza escribió:Me acaba de asaltar una duda: ¿se alimenta a +5 o a +3.3? Yo lo tengo a +5 que funciona bien.

El teclado PS/2 se alimenta a 5V, y las dos señales que vienen de él deben conectarse a la FPGA mediante resistencias de 270 ohmios para no sobrecargar los buffers de entrada de la FPGA. Algunos teclados permiten ser alimentados con 3,3V. No he probado nunca a hacer esto.
Tampoco estoy seguro de que con este módulo funcionen teclados duales (USB/PS2), ya que no se envía el comando de reset al teclado, que es lo que hace que conmuten de modo USB a modo PS/2.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

jepalza

Re: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor jepalza » 20 Dic 2012, 21:55

mcleod_ideafix escribió:las dos señales que vienen de él deben conectarse a la FPGA mediante resistencias de 270 ohmios para no sobrecargar los buffers de entrada de la FPGA.


Por eso se me cuelga algunas veces. Sobre todo, al pulsar "delete" seguido, llega un momento que se cuelga. Lo he probado con 3.3v. y funciona. Es un teclado "slim", que se ve que consume muy poco.

Tio, es una pasada escribir en un Spectrum con un teclado PS2 :shock: (te mereces un 10 en el exámen)
!lo estoy flipando!

Ya te pasaré este código, por si lo quieres. Este es mejor no publicar en la red, por que puede ser peligroso, a parte de engorroso, para uno que no sepa mucho de electrónica. El otro, el tradicional es mejor para dejar en público.

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: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor radastan » 21 Dic 2012, 01:14

jepalza escribió:Tio, es una pasada escribir en un Spectrum con un teclado PS2 :shock:


Yo me pillé la interfaz PS/2 basada en el trabajo de Mc Leod y vale su peso en oro, una gozada de las buenas.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
flopping
Amiga 1200
Amiga 1200
Mensajes: 1141
Registrado: 20 Jul 2010, 01:26
Ubicación: Valencia
Contactar:

Re: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor flopping » 21 Dic 2012, 19:24

mcleod_ideafix escribió:Opencores actualizada con la descripción del clon en el repositorio, y algunas fotos en la sección principal :)
http://opencores.org/project,zx_ula


No me puedo bajar el archivo, me pide que me registre, creia que todos los enlaces que se ponían en ZdP eran de libre acceso, o por lo menos eso es lo que me ha hecho ver todo el mundo que me ha criticado, ¿acaso hay excepciones?, ¿nadie se ha dado cuenta hasta ahora? y sobre todo ¿nadie se ha quejado?, que raro que algunas cosas se ven enseguida y otras se dejan pasar, y no digo esto con acritud, simplemente que me ha sorprendido ver que hay puestos enlaces a foros que necesitan registro y no son de libre acceso y no pasa nada, no se, pero eso me da que pensar, ¿no?, mas que nada por si ha sido un error o un descuido, salu2.
Expulsado por violación reiterada de las normas.

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor antoniovillena » 21 Dic 2012, 20:13

flopping el enlace es externo. Seguramente McLeod no se ha dado cuenta que hacía falta una cuenta en opencores para acceder al archivo. Supongo que no habría mayor problema en subir el archivo a zxprojects y cambiar el enlace.

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: Intentando un ZX81 en la FPGA OLS (o un Spectrum 16k)

Mensajepor mcleod_ideafix » 21 Dic 2012, 20:39

flopping escribió:creia que todos los enlaces que se ponían en ZdP eran de libre acceso, o por lo menos eso es lo que me ha hecho ver todo el mundo que me ha criticado, ¿acaso hay excepciones?

El contenido del enlace (texto y fotografías) es público. Si no lo fuera, por supuesto que lo habría replicado en este hilo o en otro. Ese es el contenido que se critica: texto y fotos. El código del repositorio no lo incluyo por las siguientes razones prácticas:
- Pesa unos 18MB. No pienso replicar 18MB en el servidor de ZDP.
- La más importante: El contenido del repositorio cambia. Cada X tiempo se añaden cosas al repositorio, se corrigen otras, etc, de forma que el contenido del mismo está siempre actualizado. Si copiara el repositorio a un archivo y lo dejara como enlace en este hilo tendrías una copia puntual del repositorio en un momento dado. Si mañana jepalza hace más cambios y los vuelvo a subir al repositorio, ¿tengo que postear una nueva copia del mismo actualizada? Por supuesto que no. Para eso están precisamente los repositorios. Tu copia puntual quedaría en poco tiempo obsoleta.
- Si te interesa algo relacionado con las FPGA's, antes o después tendrás que abrirte cuenta en OpenCores, ya que es el almacén de código abierto de referencia en lo que se refiere a diseños hardware.

Si aún así quieres una copia del repositorio en su estado actual, con mucho gusto te la hago llegar por e-mail, o la posteo en un hilo en RW, o lo que sea. Eso sí: si jepalza o yo mismo seguimos actualizándolo, no pienso hacerte más copias. :P
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Programación”

¿Quién está conectado?

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