Con la tarjeta Spartan-3 se pueden controlar varios dispositivos externos, en esta ocasión se conectará una pantalla en el puerto VGA y se hará uso de algunos de los conocimientos adquiridos a lo largo del semestre para poder realizar un juego de video.
Un conector VGA como se le conoce comúnmente (otros nombres incluyen conector RGBHV, D-sub 15, sub mini mini D15 y D15), de tres hileras de 15 pines El conector común de 15 pines se encuentra en la mayoría de las tarjetas de vídeo, monitores de computadoras, y otros dispositivos, es casi universalmente llamado "HD-15". Los conectores VGA y su correspondiente cableado casi siempre son utilizados exclusivamente para transportar componentes analógicos RGBHV (rojo - verde - azul sincronización horizontal - sincronización vertical), junto con señales de vídeo DDC2 reloj digital y datos.
El sistema de color VGA es compatible con los adaptadores EGA y CGA, y añade otro nivel de configuración en la parte superior. CGA fue capaz de mostrar hasta 16 colores, y EGA amplió éste permitiendo cada uno de los 16 colores que se elijan de una paleta de colores de 64 (estos 64 colores se componen de dos bits para el rojo, verde y azul: dos bits × tres canales = seis bits = 64 valores diferentes). VGA extiende aún más las posibilidades de este sistema mediante el aumento de la paleta EGA de 64 entradas a 256 entradas.
Se implementó un código el cual llevará algunas variables en el entity, tres son las que sacan el color de la pantalla (red, green, blue), también existen dos que son las que realizan el refrescamiento (hs y vs), la última de entrada es el reloj integrado a la tarjeta (clk50).
Se declara la variable clk que es el reloj, que será el que va a hacer que se vaya llevando la secuencia de los movimientos y que el cambio de la pelotita se realice en un tiempo determinado (esto se puede variar, puede ser más lento o rápido).
El código esta divido en 3 bloques o procesos principales: el que pinta los datos y los manda a la pantalla, la lógica de los movimientos de los jugadores/barras y finalmente la lógica de la bolita para que se mueva en X y Y.
Las variables más importantes son los límites superiores, inferiores y en el caso de la bolita también los límites de izquierda y derecha. Estos son inicializados en el centro de la pantalla y conforme el juego avanza van cambiando (Figura 1). En el caso de las barras que los jugadores controlaran, sólo se manejan las variables de los límites de izquierda (Lbarrita, L de left) y los de la derecha (Rbarrita, R de right). Se manejan como variables pues al momento de presionar los botones de derecha e izquierda esos valores se van incrementando y decrementando respectivamente. Hay que delimitar estas operaciones a los límites de la pantalla para que las barras no puedan moverse más allá de los mismos.
El siguiente proceso es el que maneja el movimiento de la pelota además de verificar si hubo colisión de la misma con la barra. Para ello hicimos uso de una variable de un bit llamada dBolitaY con la que controlamos la dirección en Y de la pelota.”0” significa que sube mientras que “1” que baja.