Pong en VHDL
July 3, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Pong en VHDL...
Description
UNIVERSIDAD MAYOR DE SAN ANDRES FACULTAD DE INGENIERIA CARRERA INGENIERIA ELECTRONICA
VIDEOJUEGO PONG EN VHDL UTILIZANDO TARJETA XILINX SPARTAN-3AN MATERIA : PROYECTO II
DOCENTE: ING. ROBERTO OROPEZA CRESPO
ESTUDIANTE: Américo Álvarez Surci
GESTION 2011 LA PAZ - BOLIVIA
A mis Padres que nunca dejaron de apoyarme y Ana una persona m muy uy especial.
II
Resumen
“P ON ONG G”, un vide video o jueg juego o sencillo, es la repr representación esentación del d deport eporte e de TE TENIS NIS,, qu que e consiste en hacer botar el balón en una paleta a otra sin equivocarse. En el presente proyecto describimos el movimiento del balón y de la paleta en un campo diseñado para tal cometido. Analizamos el monitor VGA para poder describir un controlador del mismo, utilizando la descripcion de hardware que nos brinda el VHDL. P or ultim ultimo o mostrarem mostraremos os como el monitor brinda el camp campo o de juego y también también hara de interfas entre el juego y el jugador.
Abstract
"PONG", a simple video game, is the representation of the sport of tennis, which consists of bouncing the ball on a pallet to another without making a mistake. In this project, we describe the movement of the ball and paddle in a field designed for that purpose. We analyze the VGA monitor to describe the same controller, using the hardware description that gives us the VHDL. Finally we show how the monitor provides the playing field and will make the interface between the game and the player.
III
LISTA DE FIGURAS
Figura 1: Consola ATARI-PONG Figura 2: Videojuego original pong. Museo Vienna-1998 Figur igura a 3: R Recursos ecursos de descrip descripción ción VHDL Figura 4: Analogía de entidad y arquitectura Figura 5: Compuerta and de 2 entradas Figura 6: Ejemplo de descripción en VHDL Figura 7: Modelo Esquemático Figura 8: Diagrama conceptual de un monitor TRC Figura 9: Trazado del Haz de electrones, en un monitor TRC Figura 10: Diagrama de bloques de un simple controlador VGA Figura 11: Diagrama de tiempos de un barrido horizontal Figura12: Diagrama de tiempos de un barrido vertical Figur igura13: a13: Tarjet Tarjeta a XI XILI LINX NX Spar parta tan-3AN n-3AN Figur igura a 14: Monit Monitor or TR TRC C Figura 15: Conexión VGA, con salidas del FPGA Figura 16: Flujo grama, Videojuego PONG Figura 17: diagrama de bloques conceptual, de un trazador de objetos Figura 18: Elementos primitivos del videojuego PONG Figura 19: Mapeo de bits de un Redondo IV
Figura 20: Movimiento del balón en Rebotes de Esquina LISTA DE TABLAS
Tabla Tab la 1 : Com Comb binac inaciión a 3 bits, its, RGB Tabla Tab la 2: Mo Mod dulo de Sin Sincr cro onia en VHD VHDLL Tabla Tab la 3: Mo Mod dulo Gen Gener erad ador or de pixeles eles,, 3 obje jettos cua cuadrad ados. os. Tabla Tab la 4: Mo Mod dulo Pru Prueb eba a 1. Tabla Tab la 5: Gen Gener erad ador or de P ix ixel eles es,, con an anim imac aciión Tabla Tab la 6: Mo Mod dulo Fin Final al,, video ideojjuego PONG e en n VHD VHDLL
V
INDICE GENERAL
Resumen/Abstract
III
Lista Lis ta de F igu iguras ras
IV
Lita de Tablas
V
Capit Cap itul ulo o1 1:: AN ANTE TECE CED DENTE ENTES S Y P ROP ROPOSITOS OSITOS 1.1 Introducción
1
1.2. Objetiv Objetivos os
2 1.2.1 Objetivo principal 1.2.2 Objetiv Objetivos os secund secundarios arios
Capittulo Capi ulo 2: MARCO T TEO EORIC RICO O 2.1. Antecedentes: Des Descripción cripción de Hardware
3
2.1.1. 2.1 .1. Leng Lengua uajes jes P rec recur ursore sores: s: CDL, DDL, AHPL AHPL,, ISP IS P S , TI-HDL 2.1.2. 2.1 .2. Leng Lengua uajes jes Act Actual uales: es: VE VERIL RILOG, OG, UDL/I, VHDL 2.2 VHDL
6 2.2.1. Entidad y Arquitectura 2.2.2 Unidad de Diseño y Librerías 2.2.3. Modelo de Diseño Bás Básico ico
2.3 VG VGA. A.
10 2.3.1 Señales de Sincronización. Hsync y Vsync 2.3.2 Timing de Señales de Sincronización VGA VI
2.3.3 Generador de Pixeles Capit Cap itul ulo o3 3:: D DES ESARROLL ARROLLO O DEL P ROY ROYEC ECTO TO 3.1 Hardware empleado:
17
XILINX Spartan 3an, Monitor VGA 3.2 Descripción del S istem istema: a: P ing P ong
19
3.2.1 Diagram Diagrama ad de e Flujo 3.3 E laboración y E jecución del Videojuego “P ONG ONG””
20
3.3.1 Señales de sincronismo: VGA SYNC 3.3.2 Generador de pixeles: PONG_GRAPH Objetos Rectangulares
3.3.3 Objetos no Rectangulares 3.3.4 Animacion: PONG_GRAPH_ANIMADO 3.4 P ro rogr gram ama a P rin rincip cipal: al: J UE UEGO_ GO_P P ONG
36
Capit Cap itul ulo o4 4:: CONCLUSIONES Y MEJ ORAS 4.1 Conclusiones
38
4. 2 Mejoras
39
5. BIBLIOGR BIBLIOGRAFÍA AFÍA
39
6. ANE ANEXOS XOS
40
VII
Capitulo 1 ANTECEDENTES Y PROPOSITOS
1. 1.1 1 INTRODUCC INTRODUCCION ION Pong fue el primer juego desarrollado por Atari Inc. Originalmente la placa de “Pong” uti utilizaba lizaba transistores, conde condensadores, nsadores, res resistencias, istencias, etc. ocupan ocupando do un espacio de u unos nos cuantos metros cuadrados. Aunque ya existía el primer microprocesador, hecho por Intel en 1970, no fue utilizado aún, por su reciente lanzamiento al mercado, alto coste y ausencia de documentación. Atari Pong fue una consola creada por Atari en 1975, es la segunda videoconsola de la historia. No llevaba cartuchos, sino que tenía sólo un juego, el PONG.
Figura1: Consola ATARI-PONG
El jugador controla en el juego una paleta que tiene un movimiento rectilíneo, haciendo las veces de paleta para que la pelota rebote en esta y en las paredes del espacio de juego. El jugador pierde en cuanto más falle en hacer botar el balón en la paleta. Se utilizara un lenguaje de descripción de hardware para el cometido de reproducir el ju jueg ego o prop opu uesto. sto. 1
1.2 .2.. OBJETIVOS OBJ ETIVOS Con el presente trabajo se trata de enfocar los siguientes objetivos: 1.3.1 Objetivo P rincipal
Mediante lenguaje de descripción de hardware, implementar el video
jueg ju ego o P ONG en la tarj arjet eta a fpga XILIN XILINX. X. 1.3.2 Objetivos Secundari ecundarios os
Conocer y definir un circuit circuito o controlador básico de ssincronism incronismo. o.
Conocer y definir un circuito generador de pixeles. A base de
contadores.
Utilizar el monitor VGA, y dar pautas para futuros diseños.
F ig igura ura 2: Videojuego Videojuego original po pong ng.. Museo Mus eo Vienna-1998 Vienna-1998
2
Capitulo 2 MARCO TEORICO TEORICO
Con la creciente complejidad de los diseños digitales ha aparecido una necesidad de describir un circuito de la forma más eficiente y práctica posible. Un lenguaje de programación ofrece la posibilidad de un alto nivel de abstracción y es la solución adecuada para dicha tarea.
2.1 A ANTECE NTECEDENTES: DENTES: DESC DESCRIPC RIPCIÓN IÓN D DE E HARDW HARDWARE ARE Los lenguajes de descripción hardware son lenguajes de alto nivel con una sintaxis similar a los de programación (C, ADA, Pascal, Modula, etc.) y una semántica que permite el modelado y simulación de los dispositivos hardware a diferentes niveles de abstracción. Los primeros lenguajes de este tipo sólo pretendían servir de vehículo de comunicación del diseño. Los actuales lenguajes han adquirido un alto grado de estandarización y han adoptado los nuevos conceptos de la ingeniería de software, permitiendo la verificación de la especificación especificación del diseño mediant ediante e simul simulación. ación. 2.1.1 Lenguajes Precursores: CDL, DDL, AHPL, ISPS, TI-HDL C DL (C om ompu putter Desig n La Langua nguagg e)
Fue desarrollado por Yaohan Chu a comienzo de los años 60 bajo el principio de separación de la componente lógica y electrónica de un computador digital. CDL refleja directamente el hardware y sus operaciones, es decir, existe una correspondencia uno-auno entre los objetos y operaciones hardware (registros, RAMs, relojes, suma, cuenta, etc.) y las construcciones del lenguaje. La primera versión del simulador CDL para IBM 7090 estuvo disponible en 1968, y la versión tercera para Univac pocos años más tarde. S e utilizó en universidades y en la industria del radar y aeronáutica. aeronáutica.
3
DD L (D ig igit ital al sys tem emss D esig esign n La Langua nguagg e)
Se desarrolló a mediados de los 60 en la Universidad de Wisconsin con varios objetivos: precisión y concisión para facilitar la especificación de los diseños, potencia suficiente para modelar sistemas complejos, independencia respecto a cualquier tecnología o procedimiento de diseño, capacidad de especificación a diferentes niveles de abstracción y, finalmente, una sintaxis y una semántica que permitieran la documentación jerárquica del diseño. AHP A HP L (A H ard ardwa ware re P rogram rogramm ming Language)
Fue pr propu opuesto esto p por or F. F.JJ . Hill y G.R G.R.. P Pet eterson erson u unos nos m meses eses más tar tarde de qu que e el C CDL DL y DDL, y apareció publicado por primera vez en 1973 en la edición original de Digital Systems: Hardware Organization and Design. Los autores concibieron AHPL como un lenguaje de
síntesis: todo dispositivo síncrono que pudiese ser implementado en hardware debía ser expresable en AHPL de manera tal que se pudiese traducir a una realización física siguiendo un un conjun conjunto to sim simple ple de regl reglas. as. E En n opin opinión ión de uno de sus autores, FF.J.J . Hill, que participó como miembro del grupo de trabajo que formuló las especificaciones originales para VHDL, la existencia de AHPL favoreció la incorporación de mecanismos para permitir el proceso de síntesis en VHDL. IS P S (I(Inst nstru ruct ctio ion n S et P ro rocessor cessor S pecif ecifica icattions) ions)
Con este lenguaje se dio un paso importante hacia la formalización del proceso de diseño a niveles de comportamiento. Además de la simulación y la síntesis, ISPS se utilizó en la generación de software, la verificación de programas y la evaluación de arquitecturas. ISPS favoreció los aspectos de comportamiento sobre los estructurales pero sin eliminarlos completamente. TI-H DL ((Texas Texas Instr Instrum umen entts-H s-HDL DL))
Es un lenguaje de descripción jerárquica del diseño, estructurado en bloques y basado en texto, que se ha utilizado principalmente en el diseño de circuitos integrados. Procede de 4
antiguos lenguajes usados allá por 1968, concretamente el TIBSD (TI Boolean System Description), desarrollado como lenguaje de entrada de datos para un sistema CAD de circuitos impresos, y Fusim (Functional Simulator), utilizado para describir modelos de alto nivel de microprocesadores y para generar prototipos de patrones de tests. 2.1.2 Lenguajes Actuales: VERILOG, UDL/I, VHDL Verilog
Es un lenguaje de descripción hardware diseñado por la compañía Cadence Design Systems Inc., que se ha venido utilizando como lenguaje del simulador digital Cadence. El uso de Verilog está promovido por la Open Verilog International (OVI), que publicó en octubre del 91 la primera versión del Hardware Description Language Reference Manual. En Verilog la unidad de diseño fundamental es el módulo, que describe un componente hardware con su interfaz y contenido. Desde un punto de vista funcional, un módulo Verilog contiene la información de una entidad y su correspondiente arquitectura VHDL. Verilog no proporciona compilación independiente de módulos: todos los módulos relacionados con el mismo diseño y simulación deben estar en el mismo archivo. UDL/ UD L/II (Unified Des Desig ign n Lan Langg ua uagg e for Int Integ egra ratted circ circuit uits) s)
Es un lenguaje de descripción hardware que se viene desarrollando desde 1989 por la J ap apan an Elec Electtron onic ic Ind Industr stry De Dev velop elopm ment Asso Associ ciat atiion on,, dep epen end die ien nte de im imp por orttantes compañías japonesas tales como NTT. Una de las características de UDL/I es que pretende ser específico para modelar circuitos integrados. La única unidad de diseño existente en UDL/I es la descripción de diseño, que comprende varias sub-entidades denominadas descripciones de módulos. Una descripción de diseño contiene el modelo de un circuito integrado que consta de varias subunidades o módulos, cada uno de los cuales está especificado por una descripción de m módulo. ódulo. V HD HDL L (V HS IC Hard Hardw war are e Descript Descriptio ion n La Langua nguage) ge)
S e aborda en el siguient siguiente e ssubt ubtitul itulo. o. 5
2.2 VHDL V ery Hig High h S pe peed ed Int Integ egra ratted Circuit Hard Hardwa ware re Des Descrip cripttion ion Lan Language guage ((V V HS IC HD HDL). L).
Desarrollado por el Departamento de Defensa de los Estados Unidos a finales de la década de los 70's. El propósito era hacer un estándar para diseñar, modelar, y documentar circuitos complejos de manera que un diseño desarrollado por una empresa pudiera ser entendido por otra, además, que pudiera ser procesado por software para propósitos de simul simulación. ación. En diciembre de 1987 VHDL se estableció como el estándar IEEE-1076. En 1993 el estándar IEEE-1076 se actualizó y un estándar adicional, el IEEE-1164 IEEE-1164,, fue adoptado. En 1996, el estándar IEEE-1076.3 se convirtió en un estándar de VHDL para síntesis siendo este el que se utiliza en el diseño de sistemas digitales. Lo que ha hecho que VHDL sea en un tiempo tan corto el lenguaje de descripción de hardware más utilizado por la industria electrónica, es su independencia con la metodología de diseño utilizada por cada programador, su capacidad de descripción a diferentes diferent es niveles de abs abstracción tracción (F (Fig.3), ig.3), y en definitiv definitiva a la posibilidad de poder reutil reutilizar izar e en n diferentes módulos en cualquier aplicación futura.
F igura 3: R ecursos ecursos de de descripció scripción n VHDL VH DL
6
Si queremos definir cualquier elemento digital tenemos que enfocarnos en 2 bloques de descripción: 1. Entidad, 2 Arquitectura; que conforman una unidad mínima de diseño. Además tenemos la posibilidad de utilizar librerías definidas por usuario.
2.2.1 Ent ntidad idad y Arquit Arquitec ecttura La realización del modelo hardware de un dispositivo en VHDL consiste en la elaboración de dos unidades de código VHDL: una Declaración de Entidad y un Cuerpo de A Arquit rquitect ectura. ura.
La Declaración de Entidad es la unidad de diseño VHDL que sirve para especificar el interfaz de los dispositivos. Cumple, por tanto, funciones equivalentes a las de los símbolos en las representaciones gráficas.
F ig igura ura 4: Analog Analog ía de entidad entidad y arquite arquitectura ctura
El Cuerpo de Arquitectura es la unidad de diseño VHDL que sirve para especificar el funcionamiento de un dispositivo identificado por una determinada Declaración de Entidad, por lo que se puede considerar el equivalente a las tablas de verdad o a los cronogramas.
7
En la Declaración de Entidad Entidad se se define el nombre del dispositivo y sus puertos; en el Cuerpo de Arquitectura Arquitectura su su funcionamiento, funcionamiento, en la fig.5 el u uso so mediante una sentencia que utiliza un operador lógico AND de 2 entradas.
F ig igura ura 5: C ompuert ompuerta a and de de 2 entradas entradas
La construcción del modelo de un dispositivo en un entorno VHDL finaliza, en principio, en el momento en que las unidades VHDL que lo describen quedan almacenadas en una librería VHDL. Para ello hay que editar las unidades y compilarlas. En el proceso de compilación se comprueba que no se incumplen una serie de reglas sintácticas y semánticas.
2.2.2 Unidades de Diseño y librerías Un modelo VHDL se compone de un conjunto de unidades de diseño. Una unidad de diseño es la mínima sección de código compilable separadamente. Las unidades de diseño VHDL se construyen combinando construcciones del lenguaje (sentencias, declaraciones, etc.). Estas unidades son descritas con la declaración Entidad y el cuerpo de Arquitectura (descritos en el anterior apartado). Las librerías de vhdl, representa la unión de varias unidades de diseño mínimas, para describir un sistema más complejo. Cuando se utilizan varias unidades de diseño se 8
deberá tener un modulo principal que haga el llamado a cualquier modulo según sea el caso. Hay que mencionar además que hay que incluir las librerías, en la declaración de paquetes a utilizar en nuestra descripción en VHDL.
2.2.3. Model Modelo o de Diseño Bás Básico ico A cont continuación inuación se des describirá cribirá un progr programa ama básico en vhd vhdl.l.
F igura 6: E jempl jemplo o de de des des cripción cripción en V HD L
En la fig. 6 observamos la descripción de un pequeño programa vhdl, que describe el circuito de la fig. 7, para este descripción se utilizo una entidad, una arquitectura, además de una librería creada por usuario. Cabe mencionar que los componentes de “milibreria” 9
no se los aprecia, pero son descripciones básicas de una compuerta and de 3 entradas y una or de n entradas (utilizados en líneas 24,27-30 respectivamente).
F igura ig ura 7: Model Modelo o E s qu quem emát ático ico
2.3 VGA El término Video Graphics Array (VGA) Sistema gráfico de pantallas para PC que se comercializó por primera vez en 1988 por IBM.
F ig igura ura 8: Diagr D iagram ama a conceptua conceptuall de un un monit monitor or TR C
En un monitor monocromo (Fig.8), el generador de electrones (cátodo), genera un haz de electrones enfocado que atraviesa un tubo al vacio, y finalmente llega a una pantalla 10
fluorescente. La pantalla se ilumina en el instante en que el rayo de electrones incide con los puntos de fosforo que tiene la pantalla. Una bobina de deflexión vertical y otra vertical, generan campos magnéticos variables que controlan la dirección del haz de electrones, y así poder realizar el trazado de toda la pantalla. Ósea que siguen un patrón fijo de izquierda a derecha de arriba abajo como se muestra en la Fig.9.
F ig igura ura 9: Trazad Tr azado o del del Haz de electrones, electrones, en un monit monitor or TR C
Osciladores internos del monitor generan formas de onda diente de sierra para controlar las dos bobinas de deflexión. Por ejemplo, si el haz de electrones se mueve desde el borde izquierdo al borde derecho, la tensión aplicada a la bobina de deflexión horizontal se incrementa gradualmente. Después de alcanzar el borde derecho, el haz vuelve rápidamente a la orilla izquierda. El funcionamiento básico de un monitor RGB (a color) es muy similar al visto, exceptuando que tiene 3 haces de electrones que inciden en los puntos de fósforo rojo, verde y azul en la pantalla. Los tres puntos se combinan para formar un píxel. Podemos ajustar los niveles de tensión de la entrada de video de tres señales para obtener el color del pixel deseado. 11
Tabla Tabl a 1: C ombin ombinació ación n a 3 bits bits , R G B
El puerto VGA tiene cinco señales activas: señales de sincronización horizontal y vertical (hsync y vsync), y tres señales de vídeo para el rojo, verde y azul. Un controlador de vídeo genera todas estas señales. Un diagrama de bloques simplificado de un controlador de VGA se muestra en la Fig.10. Contiene un circuito de la sincronización, con el nombre vga_syn vga_s ync, c, y un circuit circuito o de generación de píxel.
F ig igura ura 10: D iagram iagr ama a de de bloq bloques ues de un simple simple controla controlador dor VG A
2.3.1. Señales de Sincron incronización: ización: Hsync y Vsync El circuito de la sincronización de vídeo genera la señal hsync, que especifica el tiempo necesario para el recorrido (exploración) una fila, y la señal vsync, que especifica el 12
tiempo necesario para el recorrido transversal (scan) toda la pantalla. Las discusiones posteriores se basan en una pantalla VGA 640 por 480, con una tasa de píxel de 25 MHz, lo que significa que 25 millones de píxeles son procesadas en un segundo. S E ÑA ÑALL DE S IN INC C R ON ONIA IA HO HORR IZO IZONT NTAL AL:: HS Y NC
F ig igura ura 11: D iagrama iag rama de tiemp tiempos os de un barrido barrido horizonta horizontall
En la figura anterior se observa que se trabaja con 800 pixeles, esto se debe a que usualmente los monitores CRT tienen un borde negro, conocidos como Backporch y fronttporch fron porch, que son el borde izquierdo y derecho respectivamente.
13
Región en que los pixeles son observables. Longitud de 640 pix. Display: Región
etrace race: : Región R et Región en la que los haces de electrones regresan a la izquierda. La
señal de video debe de estar desactivada. Longitud 96 pix. Border: er: Borde Borde derecho. La señal señal de vid video eo desactivad desactivada. a. Longitu Longitud d de 48 48px px R ight Bord
Borde izquierdo. La señal de video desactivada. Longitud de 96 px. Left Border: Borde
La señal de Hsync se puede obtener con un contador modulo 800. El backporch y el frontporch pueden variar entre marcas de monitores. S E ÑA ÑALL DE S IN INC C R ON ONIA IA V E R TI TIC C AL: AL : VS Y NC
F ig igura12: ura12: D iagrama iag rama de tiemp tiempos os de un barrido barrido vertical
Durante la exploración vertical, el haz de electrones se mueven gradualmente de arriba hacia abajo y luego vuelve arriba. Esto traza toda la pantalla fila a fila. Hay mucho parecido a la señal HSYNC. La unidad de tiempo del movimiento está representada en términos
de
líneas
de
exploración
horizontal.
Un
período
de
de la señal vsync es de 525 pixeles. Display: Región Región en la que son observables las líneas horizontales. Longitud de
480pix. 14
etrace race: : Región Región en la que los haces de electrones regresan a la parte superior R et
de la pantalla. La señal de video debe de estar desactivada. Longitud 2 pix. Bottom Border: Borde inferior. inferior. La señal de video d desa esactiv ctivada. ada. Longit ongitud ud de
10px order: er: Borde Borde Superior. La señal de video desactivada. Longitud de 33 px. Top B ord
La señal de Vsync se puede obtener con un contador modulo 525. El Bottom y top border puede variar entre marcas de monitores. 2.3.2. Timing de Señales de Sincron incronizac ización ión VG VGA A Como se mencionó anteriormente, se supone que la tasa de píxel es de 25 MHz. Está determinada por tres parámetros: p: El número de píxeles de una línea de exploración horizontal. p 800
pixels
line
L: El número de líneas de trazado de una pantalla L 525
lines screen
s s:: El número de pantallas (imágenes) por segundo. Tasa de refresco. s 60
screens seconds
s ” especifica la rapidez con la pantalla debe ser restaurada. Para un ojo El parámetro “ s
humano, la frecuencia de actualización debe ser al menos 30 pantallas por segundo para un movimiento continuo debe de ser 60 pantallas por segundo. El cálculo del timing para las señales de sincronización se lo realiza de la siguiente manera: pixel _ rate p L s 25 M
pixels second
15
2.3.3. Genera enerador dor de Pixeles El circuito de generación de de píxeles genera la señal RGB de 3 bits para el puerto VGA. E s necesario es especificar pecificar el cont contenido enido d de e la pa pant ntalla alla a ttravés ravés de los pix pixel_x el_x y p pixel_y. ixel_y. Las señales d de e sincronización
VG VGA A (vga_s (vga_syn ync), c), n nos os proporcionar proporcionar las coord coordenadas enadas
actuales de cada pixel. Existen tres grandes grupos en los que podemos dividir los generadores de pixeles:
quemas as de map mapa ad dee bits: Se traza gráficos desde una memoria, pixel a pixel. Esto E s quem
consume mucha memoria, ya que cada grafico debe de estar guardado en mapa de bits
modul dular: ar: Se agrupan conjunto de bits para formar un mosaico, y utilizar E s quema mo
varios de estos para form formar ar imág imágenes. enes.
quema a tra trazado zadorr de objet objetos os:: Se crea elementos (figuras), por separado siguiendo E s quem
un régimen para mostrar objeto a objeto utilizando un multiplexor para este cometido. Este sistema es el que utilizaremos de aquí en adelante para describir el video juego planteado.
16
Capitulo 3 DESARROLLO DEL PROYECTO 3.1 HARDWARE EMPLEADO: XILINX SPARTAN-3AN Se emplea como elemento base un kit de desarrollo FPGA comercial referencia UG334 UG 334 fam familia ilia Spartan® 3A/3AN de 3A/3AN de XILINX.
F igura13: Tarjeta Tarjeta XILI NX S pa part rtan an-3AN -3AN
Este kit de desarrollo posee: o
1 FPGA XC3S700A de la familia Spartan3 de XILINX.
o
Puerto USB para programar FPGA
o
4-Mbyte SRAM
o
64-Mbyte ddr2 SDRAM.
o
8-Mbyte Flash memory
o
4 MByte Flash paralelo
o
4 pushbutton, posicionados a manera de arriba, abajo, derecha, izquierda. 17
o
4 switches deslizables
o
8 salidas en LEDs verdes
o
1 pantalla Lcd de 16x2
o
Osciladores ores de 50-MHz. 1 Oscilad
o
1 SMA para oscilador externo o 1 puerto VGA. o
10/100 controlador de red con su conector
o
USB Host/Slave Controller.
o
Conector I/O para audio externo.
o
2 puertos de 9 pines para comunicación RS-232
o
Connector PS/2 mouse/keyboard
o
1 core microblaze
o
4 salidas de DAC o 2 entradas a ADC o
2 expansiones de salidas de 40 pines
Además se utilizo el software para la utilización de esta tarjeta de estudio el software empleado fue el ISE WEB PACK de Xilinx.
Monitor VGA
F igura 14: Monit Monitor or TR C 18
F ig.15: ig. 15: Con C onexió exión n VG A, con salid salidas as del del F PG A
3.2 DESCRIPCIÓN DEL SISTEMA: PING PONG El sistema emulara el juego de pong para un jugador, los push-button de la tarjeta a manera de m mando ando (control 1 player), que m manejara anejara la paleta donde botara la p pelota elota del ju jueg ego, o, ad adem emás ás todo est esto se obse obserrvara ara en un mon oniitor (vg (vga). a). 3.2.1 Diagram Diagrama a de Flujo Inicio
Enviar
Reset
Movimiento balon
Boton Arriba
Mueve Pa Pad ddl dle e Arri ba
Mueve paddle Abajo
Actualiza Datos VGA
Figura16: Flujo grama, Videojuego PONG 19
3.3 ELABORACION ELABORACION Y EJ EC ECUCION UCION DEL VI VIDEOJ DEOJUEGO UEGO PONG Por lo descrito anteriormente se procederá a elaborar el controlador del vga, modulo a modulo, siguiendo el esquema de la Figura 10. Luego se procederá a la mejora del código y posteriormente a la animación. 3.3.1.. Señales d 3.3.1 de e sin sincron cronism ismo: o: VGA SY SYNC NC El circuito de sincronía VGA descrito en la sección 2.3.1. Trabaja con una frecuencia de 25Mhz. El circuito esta implementado con 2 contadores: uno de modulo 800 para el escaneo horizontal, y otro de modulo 525 para el escaneo vertical. La tarjeta Xilinx Spartar-3an tiene un oscilador interno de 50Mhz. Por lo que se procederá a generar una oscilación de 25Mhz, utilizando un contador modulo 2 (signal: mod2); se definen además 2 contadores para el mapeo horizontal y vertical (signal: h_count y v_count); además incluimos 2 señales de finalización h_end y v_end que indican la finalización de cada etapa. Los valores constantes de cada región mostrada en las figuras 11 y 12 (márgenes, display, top, bottom, etc) son indicados y pueden ser cambiados fácilmente si se requiere. Para evitar fallas potenciales, se incluye buffers a la salida de las señales hsync y vsync, esto nos llevara a un retraso de ciclo de reloj, que se corregirá posteriormente añadiendo otro buffer a la salida vga, que observaremos en el generador de pixeles más adelante. VHDL VH DL del m modulo odulo de sincronización: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
------------------------------------------------------------------ Modulo_ señales de sincronía monitor VGA -- Américo Alvarez Surci ----------------------------------------------------------------library ieee; use ieee ieee.std_l .std_logic_ ogic_116 1164.all; use ieee.numeric_ ic_std.al std.alll; entity vga_sync is port( clk,re clk,r eset: in std_logic; hsync,vsync: out std_logi std_logic; c; video_on, p_tick: out std_logic;
--señales señales desyncronismo syncronismo
pixe pixel_x,pix x,pixe el_y: out std_l std_logic_ ogic_ve vector( ctor(9 9 downto 0) );
--contador depixel pixels s 800x52 800x525 5
20
16 end vga_sync; 17 18 arch archit ite ecture rtl of vga_sync is 19 20 --vga 640 por 480, parametros de sirncronia 21 constant consta nt HD HD:: inte integer:=64 ger:=640; 0; 22 constant consta nt HR HR:int :intege eger:=96; 23 constant consta nt HF :int :inte eger:=16 ger:=16;; 24 constant consta nt HB:int B:inte eger:=48; 5 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
--tr traza azado do hori horizontal zontal --recargahorizontal horizontal --margen derech cho o --margen iz izquierdo quierdo
constant VD:int constant VD :intege ege r:=2; 480; 480; --tr traza do ve verrti VR:int VR :inte e ger:=2; ger:= reazado carga tica cal constant consta nt VF :int :inte eger ger:=10; --margen infer nferior constant consta nt VB:inte B:integer:=33; ger:=33; --margen supe superior ri or --Contador modulo 2 signal mod2_reg, mod2_next:std_logic; --señal de contadores para la sincronia vertical y horizontal signal v_count_reg, v_count_next: unsigned(9 downto 0); signal h_count_reg, h_count_next: unsigned(9 downto 0); --salidas buffer signall v_sync_reg, v_sync_ signa v_sync_next: next: std_logi std_logic; c; signall h_sync_r signa h_sync_re eg, h_ h_syn sync_next: c_next: std_logic; std_l ogic; --señales de estados signal h_end, v_end, pixel_tick: std_logic; begin --registros process(clk,reset) begin if(res f(reset='1') et='1') tthe hen n mod2_reg
View more...
Comments