Construyendo un MSX. Parte 1: los componentes

Page 1/2
| 2

By Palver

Resident (33)

Palver's picture

15-11-2019, 18:27

Vaya por delante que este post habla de FPGA’s. El mundo del MSX es un entorno estupendo para empezar con este tipo de dispositivos, porque todo lo necesario ya está disponible en internet, sólo hay que buscar los trozos y unirlos. Para los que no conozcan, simplemente decir que las FPGA’s son elementos programables que, en vez de con código, se programan con puertas lógicas. Si colocamos en una FPGA el esquema de un Z80, lo que tenemos no es una emulación, sino un Z80 casi de verdad. Y esa es la ventaja de usar este tipo de componentes.

Así que la idea es construir un MSX casi de verdad, utilizando módulos ya diseñados y que estén disponibles para todo el mundo.

Los componentes utilizados son:

Multicomputer by Grant Searle

VHDL implementation of the 8255 PIO

TMS9918A

Conversor VGA-HDMI

A simulation model of YM2149

El componente más importante es el multiordenador de Grant Searle. Es un diseño completo y modular, pensado para intercambiar periféricos e incluso el microprocesador. Incluye una versión modificada del Microsoft Basic 4.7 que ocupa 8 Kb y que utiliza el puerto serie como entrada/salida. ¿Qué tiene que ver esto con un MSX? Que utiliza un Basic parecido, y poco más. Pero se puede utilizar este diseño como punto de partida sobre el que añadir los circuitos que forman un MSX. Además, al tener un Basic, podemos comprobar que todo funciona usando instrucciones inp, out, peek y poke.
La configuración mínima del multiordenador está formada por un Z80, la ROM de 8Kb, una memoria RAM de 4Kb y un puerto serie que hace las veces de teclado y monitor:

https://drive.google.com/open?id=1pP8uy6IZP2PfB8GOtXA9gyy8rw...

Este es el mensaje de presentación al arrancar:

https://drive.google.com/open?id=1BBBV67boD06SwqW7cfNL8JMJqX...

Al diseño original se le añade el PPI, y con él la lógica de los slots de memoria.

https://drive.google.com/open?id=1P95MSbNfgCSEfwdM3IhQ3JmmMZ...

Probando que los slots funcionan:

https://drive.google.com/open?id=1wdfoCTnIxsX2TfoQvtDHlS87-u...

Después se conectan el TMS9918A y el YM2149.

https://drive.google.com/open?id=1l95Gzp1pihPOxxV0W4kq9wm9Ug...

https://drive.google.com/open?id=1es1TdDrmm_XC8TNzdjxcMa-ue5...

Y por último, se cambia la ROM del Basic 4.7 y se sustituye por la de mi querido SVI-728.

https://drive.google.com/open?id=1QEzoY0UTq89BaC6Ija00NduCoy...

Y este es el resultado:

https://drive.google.com/open?id=1bT6wK9r7CS_3y2JnncwYwG_hr1...

Las características de este ordenador son:
• Microprocesador T80 a 3.6 MHz
• 32 KB ROM SVI-728 en español, Slot 0
• 64 KB RAM, Slot 3
• PPI I82C55
• VDP TMS9918A con salidas VGA y HDMI, 640x480x60 Hz
• PSG YM2149
• Puerto serie
• Entrada de cassette

Además de esto se añade un ciclo de espera en los accesos a memoria, para que la CPU tenga la misma velocidad que el original. Hablando de velocidades, como ventaja añadida, el hecho de que la salida del VDP sea de 60 Hz permite ver y oír los juegos japoneses como fueron diseñados.

Lo que no tenemos por ahora es un teclado. Y claro, ¿dónde se ha visto un MSX sin teclado? La solución, en el próximo capítulo.

Login or register to post comments

By aranya

Rookie (21)

aranya's picture

24-11-2019, 13:25

Ostras que pasada. Imagino que para hacer todo esto se necesitan conocimientos de soldar/electrónica avanzados. ¿Cuanto precio de coste te sale este MSX FPGA?.

Gracias!.

By Palver

Resident (33)

Palver's picture

24-11-2019, 22:24

aranya wrote:

Ostras que pasada. Imagino que para hacer todo esto se necesitan conocimientos de soldar/electrónica avanzados. ¿Cuanto precio de coste te sale este MSX FPGA?.

Gracias!.

Gracias aranya!

Ahora este MSX está formado por un FPGA de 180 € y una raspberry pi de 35€ para el teclado. En cuanto a conocimientos, como se funciona por esquemas, hay que saber algo de electrónica digital. Sí que echo en falta algo más de información sobre el mundo de las FPGA's. Al menos con las de marca xilinx, la documentación es bastante regular. Pero cuando se consigue tener algo funcionando la cosa mejora.

Lo bueno es que no hace falta soldar nada. Todo se hace a nivel de programa. Donde en analógico se hace esto:

https://www.msx.org/wiki/images/f/f2/TMS9928A_01.jpg

en fpga se hace esto:

https://drive.google.com/open?id=1FZrHOs3I0C4PAxqi6-Ku-OtOjS376LD9

Empecé con el MSX para aprender y la verdad es que me lo estoy pasando muy bien.

By emi2

Supporter (10)

emi2's picture

06-01-2020, 22:52

Palver, muchas gracias por esta información tan interesante.
Creo que es una buena forma para empezar a entender el FPGA. Voy a intentar seguirte.
He visto que el Multicomputer me sale por unos 15€ en Ali más 5€ por la SRAM que también creo que tengo que comprar.
Con eso, intentaré seguirte. Ya os contaré.
De momento he instalado el software Quartus II Web, y me quedo a la espera del pedido de Ali.
Cuando llegue, te preguntaré un poco más sobre cómo implementar el PPI con la SRAM.

Un saludo.

Por cierto si lo consigo, lo meteré dentro de un Sanyo MPC-64 que me cargué de chaval haciendo un corto en el bus del cartucho.

By Palver

Resident (33)

Palver's picture

08-01-2020, 22:49

Hola emi2,
el código del multicomputer es muy didáctico, espero que te sirva. Para hacer un PPI creo que no es necesaria la SRAM. Una pregunta, si lo que está roto en el MPC-64 es el PPI, por qué no compras el original? Todavía lo tienes en ebay

By emi2

Supporter (10)

emi2's picture

10-01-2020, 11:58

Muchas gracias Palver.
No sé si será el PPI, pero por lo que vale puedo sustituirlo. Siempre pensé que al hacer el corto en el bus lo que me cargué era el Z80, y como ahora los que venden son más rápidos, pues no he intentado sustituirlo.

Estoy deseando que me lleguen las piezas para entender el funcionamiento, ya que el siguiente paso es montar un uMSX que he visto en va-de-retro.

Sobre el PPI en el proyecto, entiendo que va programado en el FPGA, con lo que no tendría suficiente memoria (creo) y habría que añadirla físicamente, o estoy en un error y hay que añadir el PPI físicamente.

By emi2

Supporter (10)

emi2's picture

11-01-2020, 14:33

Bueno pues he buscado mi antiguo MSX:
20200111-122738

Lo he abierto y me he encontrado con esto:
20200111-122541

No recordaba, que al final quité la placa.
En fin, no hay problema, usaré este proyecto para llenarlo por dentro.
Intentaré utilizar el teclado siguiendo lo que dicen en este foro: http://www.zxuno.com/forum/viewtopic.php?t=1604
y metiendo una ROM, si se puede de MSX Alemana para el teclado.
Quedaría la posibilidad de sacar los dos conectores de juegos y los dos conectores de cartucho.
Con la alimentación no tengo problema, ya que funciona perfectamente.

By Palver

Resident (33)

Palver's picture

14-01-2020, 22:56

En la cyclone2 del multicomputer caben sin problemas el z80 y el ppi. El que no entra es el vdp, porque utilizaba bastante memoria interna de la fpga. En cualquier caso, esa cyclone da para muchas horas de aprendizaje y diversión.

Ese MPC tiene buena pinta. Estando hueco por dentro, también se puede llenar con una raspberry+retropie Smile

By emi2

Supporter (10)

emi2's picture

16-01-2020, 20:50

Sí, puede ser una buena idea. Pero las Raspis las tengo ocupadas.
De momento estoy a la espera de que me lleguen las piezas, y enterarme mejor de las opciones.

By emi2

Supporter (10)

emi2's picture

24-01-2020, 11:46

Ya me han llegado las piezas para jugar.

Palver, estoy intentando meter el código del Multicomputer y me dice que no hay suficiente RAM.
Estoy metiendo el Z80 con la memoria interna. El esquema sencillo con ps2 y un rca.
¿Podrías darme una pista, o el código que le has metido?
Seguiré investigando a ver si encuentro el fallo.

Edito: Configurando la RAM a 2k en vez de 4k funciona. Que pasada... Voy a seguir tirando del ovillo.

De todas formas ya me dirás cómo le cambias la ROM para que sea un MSX.

By Palver

Resident (33)

Palver's picture

25-01-2020, 17:31

Me alegro de que lo hayas hecho andar, a mí me costó bastante.

Sobre cómo hacer el MSX no me he explicado bien. Este MSX está basado en el multicomputer, pero en la parte de software. Para meter un MSX completo (CPU, PPI, PSG, VDP, RAM y ROM) hace falta una fpga más grande. En este caso, yo he usado una Arty Z7-20. La placa del multicomputer (Altera) sirve para entrar en el mundillo de las fpga's y para emular chips sencillos, pero si quieres un ordenador completo se queda corta, por capacidad de puertas y sobre todo por tema de memoria interna.

En el mundillo de los 8 bits ahora la placa que lo peta es la Terasic DE10 Nano, hay hasta una versión de la MIST para ella:

En definitiva, la placa que tienes da bastante juego, y si el tema te motiva, tarde o temprano pasarás por una Arty o Terasic.

Page 1/2
| 2