Pong en Vhdl

July 11, 2017 | Author: Marco Antonio H K | Category: Vhdl, Design, Computer Engineering, Technology, Computing
Share Embed Donate


Short Description

Juego de Ping Pong...

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 muy especial.

II

Resumen “PONG”, un video juego sencillo, es la representación del deporte de TENIS, que 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. Por ultimo mostraremos como el monitor brinda el campo de juego y 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 Figura 3: Recursos de descripció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 Figura13: Tarjeta XILINX Spartan-3AN Figura 14: Monitor TRC 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 1 : Combinación a 3 bits, RGB Tabla 2: Modulo de Sincronia en VHDL Tabla 3: Modulo Generador de pixeles, 3 objetos cuadrados. Tabla 4: Modulo Prueba 1. Tabla 5: Generador de Pixeles, con animación Tabla 6: Modulo Final, videojuego PONG en VHDL

V

INDICE GENERAL Resumen/Abstract

III

Lista de Figuras

IV

Lita de Tablas

V

Capitulo 1: ANTECEDENTES Y PROPOSITOS 1.1 Introducción

1

1.2. Objetivos

2 1.2.1 Objetivo principal 1.2.2 Objetivos secundarios

Capitulo 2: MARCO TEORICO 2.1. Antecedentes: Descripción de Hardware

3

2.1.1. Lenguajes Precursores: CDL, DDL, AHPL, ISPS, TI-HDL 2.1.2. Lenguajes Actuales: VERILOG, 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ásico

2.3 VGA.

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 Capitulo 3: DESARROLLO DEL PROYECTO 3.1 Hardware empleado:

17

XILINX Spartan 3an, Monitor VGA 3.2 Descripción del Sistema: Ping Pong

19

3.2.1 Diagrama de Flujo 3.3 Elaboración y Ejecución del Videojuego “PONG”

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 Programa Principal: JUEGO_PONG

36

Capitulo 4: CONCLUSIONES Y MEJORAS 4.1 Conclusiones

38

4. 2 Mejoras

39

5. BIBLIOGRAFÍA

39

6. ANEXOS

40

VII

Capitulo 1 ANTECEDENTES Y PROPOSITOS

1.1 INTRODUCCION Pong fue el primer juego desarrollado por Atari Inc. Originalmente la placa de “Pong” utilizaba transistores, condensadores, resistencias, etc. ocupando un espacio de unos 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 juego propuesto.

1

1.2. OBJETIVOS Con el presente trabajo se trata de enfocar los siguientes objetivos: 1.3.1 Objetivo Principal 

Mediante lenguaje de descripción de hardware, implementar el video juego PONG en la tarjeta fpga XILINX.

1.3.2 Objetivos Secundarios 

Conocer y definir un circuito controlador básico de sincronismo.



Conocer y definir un circuito generador de pixeles. A base de contadores.



Utilizar el monitor VGA, y dar pautas para futuros diseños.

Figura 2: Videojuego original pong. Museo Vienna-1998

2

Capitulo 2 MARCO 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 ANTECEDENTES: DESCRIPCIÓN DE HARDWARE 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 del diseño mediante simulación. 2.1.1 Lenguajes Precursores: CDL, DDL, AHPL, ISPS, TI-HDL

CDL (Computer Design Language) 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. Se utilizó en universidades y en la industria del radar y aeronáutica.

3

DDL (Digital systems Design Language) 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.

AHPL (A Hardware Programming Language) Fue propuesto por F.J. Hill y G.R. Peterson unos meses más tarde que el CDL 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 conjunto simple de reglas. En opinión de uno de sus autores, F.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.

ISPS (Instruction Set Processor Specifications) 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-HDL (Texas Instruments-HDL) 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/I (Unified Design Language for Integrated circuits) Es un lenguaje de descripción hardware que se viene desarrollando desde 1989 por la Japan Electronic Industry Development Association, dependiente de importantes 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ódulo.

VHDL (VHSIC Hardware Description Language) Se aborda en el siguiente subtitulo. 5

2.2 VHDL Very High Speed Integrated Circuit Hardware Description Language (VHSIC HDL). 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 simulació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, 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 niveles de abstracción (Fig.3), y en definitiva la posibilidad de poder reutilizar en diferentes módulos en cualquier aplicación futura.

Figura 3: Recursos de descripción VHDL

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 Entidad y Arquitectura 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 Arquitectura. 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.

Figura 4: Analogía de entidad y arquitectura

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 se define el nombre del dispositivo y sus puertos; en el Cuerpo de Arquitectura su funcionamiento, en la fig.5 el uso mediante una sentencia que utiliza un operador lógico AND de 2 entradas.

Figura 5: Compuerta and de 2 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. Modelo de Diseño Básico A continuación se describirá un programa básico en vhdl.

Figura 6: Ejemplo de descripción en VHDL

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).

Figura 7: Modelo Esquemático

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.

Figura 8: Diagrama conceptual de un monitor TRC

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.

Figura 9: Trazado del Haz de electrones, en un monitor TRC

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 1: Combinación a 3 bits, RGB

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_sync, y un circuito de generación de píxel.

Figura 10: Diagrama de bloques de un simple controlador VGA

2.3.1. Señales de Sincronizació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. SEÑAL DE SINCRONIA HORIZONTAL: HSYNC

Figura 11: Diagrama de tiempos de un barrido horizontal

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 frontporch, que son el borde izquierdo y derecho respectivamente.

13



Display: Región en que los pixeles son observables. Longitud de 640 pix.



Retrace: 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.



Right Border: Borde derecho. La señal de video desactivada. Longitud de 48px



Left Border: Borde izquierdo. La señal de video desactivada. Longitud de 96 px.

La señal de Hsync se puede obtener con un contador modulo 800. El backporch y el frontporch pueden variar entre marcas de monitores. SEÑAL DE SINCRONIA VERTICAL: VSYNC

Figura12: Diagrama de tiempos de un 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 en la que son observables las líneas horizontales. Longitud de 480pix.

14



Retrace: Región en la que los haces de electrones regresan a la parte superior de la pantalla. La señal de video debe de estar desactivada. Longitud 2 pix.



Bottom Border: Borde inferior. La señal de video desactivada. Longitud de 10px



Top Border: Borde Superior. La señal de video desactivada. Longitud de 33 px.

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 Sincronización VGA 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.

pixels line

p  800

L: El número de líneas de trazado de una pantalla

L  525

lines screen

s: El número de pantallas (imágenes) por segundo. Tasa de refresco.

s  60

screens seconds

El parámetro “s” especifica la rapidez con la pantalla debe ser restaurada. Para un ojo 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  25M

15

pixels second

2.3.3. Generador de Pixeles El circuito de generación de de píxeles genera la señal RGB de 3 bits para el puerto VGA. Es necesario especificar el contenido de la pantalla a través de los pixel_x y pixel_y. Las señales de sincronización

VGA (vga_sync), nos proporcionar las coordenadas

actuales de cada pixel. Existen tres grandes grupos en los que podemos dividir los generadores de pixeles: 

Esquemas de mapa de bits: Se traza gráficos desde una memoria, pixel a pixel. Esto consume mucha memoria, ya que cada grafico debe de estar guardado en mapa de bits



Esquema modular: Se agrupan conjunto de bits para formar un mosaico, y utilizar varios de estos para formar imágenes.



Esquema trazador de objetos: Se crea elementos (figuras), por separado siguiendo 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 familia Spartan® 3A/3AN de XILINX.

Figura13: Tarjeta XILINX Spartan-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

1 Osciladores de 50-MHz.

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

Figura 14: Monitor TRC

18

Fig.15: Conexión VGA, con salidas del FPGA

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 mando (control 1 player), que manejara la paleta donde botara la pelota del juego, además todo esto se observara en un monitor (vga). 3.2.1 Diagrama de Flujo Inicio

Enviar

Reset Movimiento balon

Boton Arriba

Mueve Paddle Arriba

Mueve paddle Abajo

Actualiza Datos VGA

Figura16: Flujo grama, Videojuego PONG

19

3.3 ELABORACION Y EJECUCION DEL VIDEOJUEGO 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 de sincronismo: VGA SYNC 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 del modulo 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.std_logic_1164.all; use ieee.numeric_std.all; entity vga_sync is port( clk,reset: in std_logic; hsync,vsync: out std_logic; video_on, p_tick: out std_logic; pixel_x,pixel_y: out std_logic_vector(9 downto 0) );

20

--señales de syncronismo --contador de pixels 800x525

16 17 18 19 20 21 22 23 24 25 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 78 79

end vga_sync; architecture rtl of vga_sync is --vga 640 por 480, parametros de sirncronia constant HD: integer:=640; --trazado horizontal constant HR:integer:=96; --recarga horizontal constant HF:integer:=16; --margen derecho constant HB:integer:=48; --margen izquierdo constant VD:integer:=480; --trazado vertical constant VR:integer:=2; --recarga vertical constant VF:integer:=10; --margen inferior constant VB:integer:=33; --margen superior --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 signal v_sync_reg, v_sync_next: std_logic; signal h_sync_reg, h_sync_next: std_logic; --señales de estados signal h_end, v_end, pixel_tick: std_logic; begin --registros process(clk,reset) begin if(reset='1') then mod2_reg
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF