Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Si por algo se caracteriza el Spectrum es por su gran variedad de periféricos (clásicos y modernos)

Moderador: Sir Cilve Sinclair

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por mcleod_ideafix » Mar May 17, 2011 3:32 am

Ni soy el primero que lo ha conseguido, ni mi implementación es la más molona de todas, pero al menos puedo decir que se me ha ocurrido a mi solito :) Eso sí, el libro de Chris Smith, impagable.

Todo el tema viene de unos experimentos que inicié aquí hace unas semanas...
viewtopic.php?f=8&t=2271

Y luego proseguí aquí durante la semana pasada, cuando me llegó mi última plaquita entrenadora...
viewtopic.php?f=8&t=2306&start=9

Lo último que había conseguido era poder arrancar el sistema, pero a costa de anular la contención y por tanto soportar un ruido fortísimo en pantalla (sólo desaparecía mientras se dejaba pulsado el botón de reset, claro...)

Pues bien: escribí una mini-ROM que se dedicaba a escribir y leer continuamente de la RAM baja, y pude tracear las señales. Una de las cosas que tiene trabajar con FPGA es que, a diferencia de la lógica discreta, aquí tienes un completo analizador lógico que te muestra la señal o señales que te dé la gana, y su evolución en el tiempo.
Imagen
(clic para ampliar)

Había un problema de temporización con la máquina de estados que gobierna el acceso a la VRAM desde la CPU: se necesitaba un estado más. Arreglado esto, volví a arrancar...
Imagen

Lo próximo fue añadir un teclado. Usé el mismo código que he usado para implementar un teclado en el Jupiter ACE en FPGA, y para ello he aprovechado el teclado de un +2A. Gracias a él, he podido escribir este programa en mi clon :)
Imagen

Y probarlo...
Imagen

Aquí lo único que falta (o que sobra más bien) es una cosa: el brillo: no hay dos niveles de brillo sino uno (siempre ON). Culpa de la salida VGA, que sólo ofrece 1 bit por color primario. Me da un poco igual de momento, ya que lo que planeo es llevarme el diseño a la otra FPGA, donde uso un monitor RGB en lugar de la VGA, y ahí sí que tengo el bit de brillo disponible.

Un detalle de la placa entrenadora. El Spectrum en realidad está todo él metido en ese cuadradito negro que se ve en la placa, adonde apunta la lanza del soldado espartano.
Imagen

Por último, algunas estadísticas que genera la herramienta de síntesis sobre porcentaje de ocupación de los distintos recursos. Cabe destacar que estoy usando alrededor del 15% de los recursos del chip. El diseño por tanto debería caber holgado en una FPGA más pequeña, como la del OLS, si bien haría falta memoria externa para poder llegar a 48K de RAM.
Imagen
Web: ZX Projects | Twitter: @zxprojects

Hernan
Manic Miner
Mensajes: 295
Registrado: Mar May 08, 2007 4:34 pm
Ubicación: Buenos Aires, Argentina
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por Hernan » Mar May 17, 2011 3:52 am

Genial como siempre mcleod!

Estamos más cerca del One-Chip Spectrum? :wink:

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por mcleod_ideafix » Mar May 17, 2011 4:09 am

Hernan escribió:Genial como siempre mcleod!

Estamos más cerca del One-Chip Spectrum? :wink:


Depende de a qué te refieras con "One Chip Spectrum". Como concepto existe desde hace años. Como realidad, como algo parecido al 1ChipMSX, pues no, a no ser que alguien quiera hacerlo. Bien es cierto que se puede coger y meter este diseño en un 1ChipMSX.

Seguramente merezca más la pena elegir una arquitectura de FPGA lo suficientemente extendida y popular (¿la placa FPGAArcade quizás?) y portar este y otros diseños a ella. Lo que pasa es que a día de hoy, no existe tal placa en venta. Muchas podrían servir: la Minimig, la OLS (con memoria externa), la placa de FPGA Arcade, el 1ChipMSX, o incluso la placa que están vendiendo en eBay como un "3 en 1" con un Commodore 64, un Atari 2600, y no se qué otra cosa más. Si la plaquita del OLS hubiera memoria añadida sería perfecta para implementar pequeños micros...
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por mcleod_ideafix » Mar May 17, 2011 4:22 am

Y añadiendo estas líneas...

Código: Seleccionar todo

   //Memoria alta, 32KB
   assign sa = {3'b000,a[14:0]};
   assign sramce2 = 1'b1;
   assign sramwe = wr;
   assign sramce1 = mreq || !a[15];
   assign sd = (!sramce1 && !wr)? dout : 8'bzzzzzzzz;
   assign sramub = 1'b1;
   assign sramlb = 1'b0;


Ya tengo los 32KB de memoria alta, en total, un Spectrum de 48K. El chip de memoria que tiene la placa entrenadora es de 512KB, así que meter un Spectrum 128K es bastante sencillo...

Mañana ya le añado el altavoz y el EAR, a ver si puedo cargar juegos y probarlos.
Web: ZX Projects | Twitter: @zxprojects

Mobutu16
Herbert
Mensajes: 65
Registrado: Mar Mar 15, 2011 4:53 pm

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por Mobutu16 » Mar May 17, 2011 10:20 am

Una pasado, incleible. Gracias por enseñarnos día a día.!!!

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por antoniovillena » Mar May 17, 2011 11:38 am

Si la plaquita del OLS hubiera memoria añadida sería perfecta para implementar pequeños micros...


Me da la sensación de que la OLS es la candidata perfecta, por varios motivos:
1. Tiene disponibles 27K de RAM extra, y la ROM puede servirla el PIC.
2. El hardware adicional sería mínimo: cortar un cable VGA y otro PS/2 y soldarlo a tiras de pines (4 ó 5 soldaduras para el teclado y unas 10 para el puerto VGA)
3. Disponemos de un PIC con el que se pueden emular muchos periféricos, la idea es usarlo a modo de SouthBridge: teclado, joystick, RS232, FDC765, lector de tarjetas SD, generador de onda a partir de un TZX, etc...
4. Hay espacio de sobra en la ROM que programa la FPGA, que puede tener múltiples usos, aunque el más lógico sería una pequeña colección de juegos incluídos.

Edito: También se puede rotar el contenido de esta ROM y disponer de 3 máquinas totalmente distintas. Lo haría el usuario usando el pulsador a modo de selector de máquina.
Última edición por antoniovillena el Mar May 17, 2011 11:59 am, editado 1 vez en total.
Imagen

utopian
Manic Miner
Mensajes: 219
Registrado: Jue May 10, 2007 2:28 pm

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por utopian » Mar May 17, 2011 11:40 am

¡¡Wow!! Ahora hay que buscar la mejor forma de hacerlo disponible a la gente... Porque las placas de entrenamiento (yo tuve la Altera y terminé vendiéndola) no son la mejor opción, y algo así merece la pena que se distribuya bien.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por mcleod_ideafix » Mar May 17, 2011 12:22 pm

antoniovillena escribió:Me da la sensación de que la OLS es la candidata perfecta, por varios motivos:...

Estoy repasando el esquemático del OLS...

antoniovillena escribió:1. Tiene disponibles 27K de RAM extra, y la ROM puede servirla el PIC.

No hay suficientes pines. El PIC como mucho puede ser usado, como mucho, como interfaz SPI para enviar datos seriales a la FPGA. Aquí la mejor opción sería ponerle al PIC un zócalo SD/MMC y que fuera desde aquí desde donde se cargaran datos (ROM's, snapshots, etc) a la FPGA. Esto requeriría RAM adicional conectada a la FPGA.

antoniovillena escribió:3. Disponemos de un PIC con el que se pueden emular muchos periféricos, la idea es usarlo a modo de SouthBridge: teclado, joystick, RS232, FDC765, lector de tarjetas SD, generador de onda a partir de un TZX, etc...

Mucho le pides tú al PIC... RS232 quizás, lector de tarjetas SD seguro (pero hay que hacerle el software en el lado del Spectrum), FDC765... no lo creo. De todas formas, estas cositas, sobre todo el lector SD, se pueden integrar en la FPGA.

Por otra parte, vuelvo a repetir: la FPGA del OLS es pequeña: una cuarta parte de la que estoy usando ahora. Un Spectrum creo que puede caber, pero un Spectrum 128K con su AY-8912, habría que verlo. Máquinas más complejas como un Commodore 64, MSX o cualquiera que tenga más de un chip custom, lo veo difícil que quepa.

El OLS es una buena opción para máquinas muy sencillas, tales como:
- ZX80
- ZX81
- Jupiter ACE
- Spectrum 16K
- Atari 2600

Si quieres algo con lo que poder sintetizar cualquier máquina de 8 bits, tienes que irte a una FPGA de 400K puertas, o mayor. Ten en cuenta que el core del Z80 se lleva la mayor parte de los recursos de la FPGA.

Una opción sería también integrar un Z80 "de verdad" junto a la OLS y un poco de memoria. Esto es, usar la OLS como "todo lo demás que no sea el Z80 y la memoria". Entonces sí que te cabe un Spectrum, Amstrad, MSX...

De todas formas, me da a mi que no hay mucho interés por parte del personal en que exista un 1ChipSpectrum, ya que diseños de Spectrum basados en FGPA los conozco desde hace años (el ZXGate es de los más antiguos que recuerdo), y nadie ha mostrado interés en hacer una placa que lo implemente. Los rusos, con su Speccy2010, son los únicos que han hecho algo al respecto, pero la placa resulta cara.

Y es que... a ver quién sacrifica tiempo (mucho tiempo) y dinero en un proyecto semejante en los tiempos que corren...
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
Kripton
Herbert
Mensajes: 85
Registrado: Vie Feb 01, 2008 1:49 pm
Ubicación: Valencia
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por Kripton » Mar May 17, 2011 2:29 pm

La FPGA Arcade es un proyecto libre ¿Se podría hacer tiradas de esa placa, previa suscripción?
Me parece un proyecto interesante, para quien no quiera meterse en entrenadores, y así tb. nosotros lo apoyamos.

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por radastan » Mar May 17, 2011 3:16 pm

McLeod, sacas una placa FPGA que emule un +3 con soporte de:

- Teclado
- Ratón
- Gamepad por USB (emulando sinclair o kempston)
- Carga desde SD de DSK
- Salida VGA
- Salida de sonido estéreo

Y creo que definitivamente vamos buscando un artista que te haga una estatua y la plante en el centro de Sevilla.

PD: ¿Cómo va el driver del QLSD?
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por antoniovillena » Mar May 17, 2011 4:47 pm

Por otra parte, vuelvo a repetir: la FPGA del OLS es pequeña: una cuarta parte de la que estoy usando ahora. Un Spectrum creo que puede caber, pero un Spectrum 128K con su AY-8912, habría que verlo. Máquinas más complejas como un Commodore 64, MSX o cualquiera que tenga más de un chip custom, lo veo difícil que quepa.

El OLS es una buena opción para máquinas muy sencillas, tales como:
- ZX80
- ZX81
- Jupiter ACE
- Spectrum 16K
- Atari 2600

Si quieres algo con lo que poder sintetizar cualquier máquina de 8 bits, tienes que irte a una FPGA de 400K puertas, o mayor. Ten en cuenta que el core del Z80 se lleva la mayor parte de los recursos de la FPGA.

Una opción sería también integrar un Z80 "de verdad" junto a la OLS y un poco de memoria. Esto es, usar la OLS como "todo lo demás que no sea el Z80 y la memoria". Entonces sí que te cabe un Spectrum, Amstrad, MSX...

De todas formas, me da a mi que no hay mucho interés por parte del personal en que exista un 1ChipSpectrum, ya que diseños de Spectrum basados en FGPA los conozco desde hace años (el ZXGate es de los más antiguos que recuerdo), y nadie ha mostrado interés en hacer una placa que lo implemente. Los rusos, con su Speccy2010, son los únicos que han hecho algo al respecto, pero la placa resulta cara.

Y es que... a ver quién sacrifica tiempo (mucho tiempo) y dinero en un proyecto semejante en los tiempos que corren...


De acuerdo en que la gente no muestra interés por 1ChipSpectrum, pero no hablo desde un punto de vista comercial. Creo que la mayoría lo hace por que lo ve interesante, para aprender o como reto técnico. Luego este trabajo puede servir a otros: unos pueden aprender estudiándolo, o incluso mejorar el diseño; pero está claro que la mayoría lo usará con fines lúdicos.

Yo de momento estoy interesado en meterme en el mundo de la emulación por hardware. Y si hago algo que vea que pueda interesar lo publicaré. Me imagino todo el tiempo y el esfuerzo que te ha costado el proyecto, y estoy seguro que no tendrá la repercusión que merece (espero equivocarme), como pasó con el ZXGate o Badaloc. El principal problema que le veo a la emulación hardware es que la gente es rehacia a comprar una placa, soldarla, meterle firmware, etc... cuando existen emuladores software que hacen lo mismo a coste cero.

El poder meter un spectrum 48K en el OLS no supone nada técnicamente más complejo que un 16K, pero por la cantidad de juegos accesibles puede animar a más gente a desembolsar los 35 euros que cuesta. También está la http://www.fpgaarcade.com/ que me imagino que costará unos 200 euros. Creo que este bicho se pueden emular todas las máquinas de 8 bits y alguna que otra de 16bit, aparte de ofrecer multitud de conectores para que no tengas que soldar nada.

Gracias por tus consejos. Ya te contaré cuando me llegue la placa. Por ahora no voy a soldar ningún chip extra (Z80 o memoria dinámica) pero no descarto hacerlo en el futuro. Me estoy "empollando" cosas sobre HTML5 audio y sobre el chip AY-8912 para el jbacteria, así que si tienes alguna duda cuenta conmigo. El AY-8912 es el siguiente paso lógico de tu clon.

-Gamepad por USB (emulando sinclair o kempston)
- Carga desde SD de DSK


Radastán, estas dos cosas en cuestión las veo muy muy complejas. El USB es un estandar muy pesado, ¿no te valdría un joystick norma atari?. Lo segundo son 3 cosas en uno: interfaz SD, sistema de ficheros y emulación FDC 765. Lo primero es sencillo si usas norma MMC y lo haces por SPI. Para lo segundo tendrías que hacer FAT32 con nombres largos para que la SD fuese usable en un PC moderno; esto cae fuera de la FPGA (sería código Z80 en la ROM emulada) pero no deja de ser un impedimento. Por último el FDC, no es muy difícil de implementar, pero sí complicado de depurar. He buscado recientemente info sobre este chip (para el emulador de cpc) y hay muy poca cosa por internet.

Edito: ¿es posible implementar el Z80 usando la ROM de microprograma? ¿en caso de ser posible, supondría esto usar menos recursos de la FPGA? ¿alguien ha extraído dicha ROM?
Última edición por antoniovillena el Mar May 17, 2011 5:01 pm, editado 1 vez en total.
Imagen

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por mcleod_ideafix » Mar May 17, 2011 4:55 pm

radastan escribió:McLeod, sacas una placa FPGA...

No niego que es un proyecto atrayente, pero ahora no puedo. No tengo tiempo, ni recursos monetarios que echarle al asunto. Para dentro de un año quizás.

radastan escribió:PD: ¿Cómo va el driver del QLSD?

Parado. Terminó la temporada de vacaciones de primavera en Sevilla (semana santa y feria) y no volveré a tener tiempo suficiente libre al menos hasta que terminemos el curso en Junio. Si no fuera por esos 15 días de vacaciones, ¿cómo crees que pude adelantar tanto en el QLSD? ;)

Si estoy haciendo cosas como esto del Spectrum en la FPGA en estos momentos es por dos razones:
- Aunque estoy haciendo electrónica, no estoy soldando un un solo cable: desarrollo más rápido.
- Lo que estoy haciendo ahora me sirve para mi tesis, en la que uso el paradigma del "Network on a Chip" que basicamente viene a ser que en lugar de trabajar con un cluster de supercomputación formado por 10-20 PC's, todos en mi despacho haciendo una torre, metiendo ruido y consumiendo electricidad como locos, trabajo con una FPGA "gorda" en la cual puedo meter 30 o 40 pequeños nodos de red, con su red local y todo lo demás. Espero poder adelantar trabajo de esta forma, y de paso despejar la mesa de mi despacho de trastos.

La única novedad a reportar a este respecto es que hoy me han llegado los chips que serán en el futuro la flash de la QLSD: más de 50 chips flash EEPROM de 1MB. Es mucho más de lo que realmente necesito como ROM del QLSD (16KB es lo máximo que se puede direccionar en el slot de ROM) pero es que no las he encontrado de menor capacidad y que encima sean baratas. Estas, siendo flash EEPROM y de 1MB, son mucho más baratas por unidad, que una EPROM de ventanita convencional de 16K.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
Kripton
Herbert
Mensajes: 85
Registrado: Vie Feb 01, 2008 1:49 pm
Ubicación: Valencia
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por Kripton » Mar May 17, 2011 5:23 pm

¿Dónde se puede comprar la OLS Fpga?

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por mcleod_ideafix » Mar May 17, 2011 7:00 pm

Kripton escribió:¿Dónde se puede comprar la OLS Fpga?

http://dangerousprototypes.com/open-logic-sniffer/
Web: ZX Projects | Twitter: @zxprojects

utopian
Manic Miner
Mensajes: 219
Registrado: Jue May 10, 2007 2:28 pm

Re: Ea, pos ya lo tengo: un Spectrum en una FPGA :)

Mensaje por utopian » Mar May 17, 2011 10:48 pm

mcleod_ideafix escribió:
radastan escribió:McLeod, sacas una placa FPGA...

No niego que es un proyecto atrayente, pero ahora no puedo. No tengo tiempo, ni recursos monetarios que echarle al asunto. Para dentro de un año quizás.


En cuanto a los recursos financieros, si te pones a ello cuenta con mi hacha :mrgreen:. Vamos, que estoy dispuesto a adelantar pasta por tener a semejante criaturita en mi casa.

Responder

¿Quién está conectado?

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