VHDL Pong


En algunas ocasiones cuando uno no tiene nada que hacer se le ocurre cada cosa, como por ejemplo construir tu propia consola de videojuegos.

Tiempo: 1 hora

Costo: $30 – $150 US Dlls

Dificultad: Fácil






El primer paso es crear un pequeño juego en VHDL, así podemos entender (o aparentar que entendemos) las entradas de usuario, la lógica del juego y enviar los datos a un monitor VGA.

Básicamente el pipeline de lo que haremos será el siguiente:





En un post anterior explique como es la lógica del pong, y es la misma que implemento en VHDL.

Aquí lo más complejo es poder utilizar el puerto VGA, para esto necesitamos preocuparnos por los 5 pines, uno para cada componente de color en formato RGB, una para saber la posición vertical y horizontal en la que estamos trabajando.

Si ya hasta trabajado con Pixel Shaders la teoría te resultara familiar, prácticamente cada ciclo vamos a recorrer un pixel en la pantalla comenzando por la parte superior izquierda, en este punto especifico podemos modificar el color, si es un pixel shader!!!

Entonces para lograr esto debemos de sincronizarnos con el monitor, para esto vamos a lanzar nuestros primeros 640 colores para la primera línea con los pines para la sincronía horizontal y vertical con valor de 1, entonces vamos a avisarle al señor don monitor que baje una línea simplemente mandando un valor de 0 al pin de sincronización horizontal, y así nos la llevamos con cada línea hasta que tengamos que hacer lo propio con las 480 líneas verticales, entonces le aplicamos la misma al pin vertical y habremos concluido de dibujar nuestra pantalla así que comenzamos de nuevo. (Y es obvio que debemos de hacer lo mismo ya que el monitor no guarda ningún dato)

Una vez dicho esto creo que podemos pasar al código. :)





Al final el resultado debe de ser el del siguiente screenshot.



6 comentarios:

yedenisse dijo...

ya tengo miedo... de la fpga, es mi principal competencia jajaja

Anónimo dijo...

Gracias si funciona!!!!

Anónimo dijo...

muchas gracias, funciona de mil maravillas

Georgecore dijo...

men eres lo maximo.... grax por el aporte..... por ahi tengo varios proyectos en la fpga... cuando quieras puedes contactarme

Emmanuel dijo...

Cuales son los pines de FPGA que utilizas VGA_B[0], VGA_R[0], VGA_G[0]???

joha dijo...

hola tu podrias porfa ayudarme con un proyecto cualquiera.
gracias

Publicar un comentario

About Me

Mi foto
carlos
Guadalajara, Jalisco, Mexico
Ver mi perfil completo

Twitter

Carlos Rivera's Facebook profile