Skip to content

juanmard/screen-pacman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Screen-pacman.

El proyecto "screen-pacman" trata de sintetizar el clásico juego Pac-Man en una FPGA mediante herramientas libres.

Objetivo del proyecto.

El objetivo del proyecto es realizar una copia funcional del juego clásico sin necesidad de implementar un microprocesador en la FPGA, únicamente mediante bloques lógicos y aprovechando el paralelismo intrínseco de los circuitos sintetizados.

Herramientas utilizadas.

El diseño del proyecto se realiza mediante la herramienta visual icestudio y la inclusión en el mismo de diseños en texto con lenguaje Verilog de los bloques más complejos o con entidad propia.

foto de captura

Se toma como partida el ejemplo "SpriteGame101.ice" de la colección iPxs-Collection de Sergio Cuenca. Se han reescrito parte de los bloques del ejemplo para intentar separar la representación gráfica del comportamiento dinámico del juego y hacerlo un poco más general. Así mismo se han modificado ciertos bloques de RAM y ROM para dar más capacidad de gráficos.

Estado actual del proyecto.

Actualmente (Julio de 2018) el proyecto se encuentra en fase de experimentación, tiene pequeños "glitch" en la reperesentación de los gráficos y problemas de sincronización de escritura en la memoria del mapa. Se está trabajando en el control mediante un puerto serie conectado al PC para las pruebas. En estas pruebas se está trabajando en el FSM para un editor del mapa, con la idea de volcarlo en el puerto serie, capturarlo en el PC y resintetizarlo, en un futuro se pretende grabar este mapa directamente en la flash del dispositivo. Los bloques empleados para la comunicación serie son los bloques de la colección de Obijuan, se han modificado algunos valores para adecuarlos a los 16Mhz de reloj de la TinyFPGA.

foto de la pantalla

Nuevo esquema (Agosto de 2018).

Se ha cambiado por completo el esquema de funcionamiento interno del proyecto. En lugar de una única máquina de estados (FSM) para todo el juego, se ha dividido el comportamiento de cada uno de los actores con sus FSM correspondientes y se ha dado paso a actualizar su estado en el mapa del juego (map.v y map.ice). El "stream" VGA sólo atraviesa el mapa y esto permite independizar completamente el comportamiento de los actores de su visualización en el monitor. El esquema principal del juego ahora tiene este aspecto:

foto del nuevo esquema

En él se actualizan los valores de los distintos actores al mismo tiempo, en forma paralela, se cambian sus "sprites" en la BRAM del mapa de forma ordenada siendo seleccionados por un simple contador.

Dispositivo empleado.

Las pruebas iniciales se realizaron en una TinyFPGA-B2 con la versión 0.3.3-rc de icestudio, posteriormente se realizaron en una tarjeta TinyFPGA-BX, este dispositivo no se encuentra en estos momentos (Julio de 2018) integrado en dicha versión de icestudio, por lo que se realiza una exportación del código Verilog al fichero "screen-pacman.v" y se genera el fichero "top.v" como puente para sintetizar mediante las herramientas básicas de icestorm y apio (versión 0.4.0b3).

foto del dispositivo

Cómo sintetizar el proyecto.

Para TinyFPGA-B2.

Para utilizar el proyecto en icestudio con una TinyFPGA-B2 simplemente necesitas el fichero "screen-pacman.ice" y todos los ficheros asociados de Verilog (*.v y *.vh), también dispones del resto de ficheros de los bloques de icestudio (*.ice), por si quisieras modificar algún bloque interno (Recuerda que si modificas un bloque deberás volver a "Agregar como bloque" y grabar y repetir con todos los ficheros que componen el resto del árbol de dependencias).

Para TinyFPGA-BX.

Para utilizar el proyecto con una TinyFPGA-BX deberás realizar un "apio build" seguido de un "apio upload", apio tomará todos los ficheros (incluido el extra "top.v") para sintetizar y programar la tarjeta. Si necesitas hacer una modificación no olvides exportar en Verilog desde icestudio y modificar el fichero "top.v" si modificas las entradas y salidas del fichero.

About

Clon game of Pac-Man with free tools on a FPGA.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published