generacion de una señal vga

3
1 Resumen-- El desarrollo de hardware para el procesamiento de datos constituye un importante campo aun no explotado que presenta varias ventajas frente a las implementaciones en software. Como ventajas se ha de entender velocidad, escala y costo; junto con estas caractersticas y en algunos casos la combinacin con elementos de software se obtienen sistemas robustos para aplicaciones en telecomunicaciones. En este trabajo se abordara el principio de una transmisin de datos a travØs de un modulo de hardware implementado en una FPGA, cuya funcin es trabajar como la tarjeta de video de un computador permitiendo que datos de un equipo sean enviados a una pantalla sin necesidad de otro PC para la comunicacin. Los datos son obtenidos en un programa que en desarrollos posteriores serÆ reemplazado por otro modulo hardware brindando las caractersticas antes mencionadas en un solo dispositivo. I. INTRODUCCIN n este documento, la generacin de una seæal VGA con FPGA, es propuesta. VGA (Video Graphics Array) es una norma de visualizacin, de grÆficos para computadores creada en 1987 por IBM. VGA emplea una resolucin de 640x480 y utiliza seæales de sincronismo vertical y horizontal, para la conformacin de campos; un campo es una imagen conformada por 480 lneas, cada una usualmente con 640 pxeles. Se utiliz el puerto VGA de una FPGA Spartan 3, para enviar seæales a un monitor. Estas seæales contienen informacin de sincronismo horizontal y vertical y las caractersticas de color de la imagen en blanco y negro. II. GENERACIN DE SEAL EN VGA A. Seæales de color en VGA. Hay tres seæales (rojo, verde y azul) que definen la informacin de color en un monitor VGA. Cada una de las tres seæales controla la pistola de electrones, y esta coloca un punto de color primario en la pantalla del monitor. Los niveles anÆlogos, se encuentran entre 0 (completamente oscuro) y 0.7v (mÆximo brillo), las seæales le indican al monitor que intensidad existe por los tres colores primarios, que combinados forman un punto de color llamado pxel. B. Sincronizacin de la seæal en VGA Un œnico punto de color, sobre un monitor de video no genera mucha informacin. Una lnea horizontal de pxeles, trae un poco mÆs de informacin. Pero un campo, el cual esta compuesto de muchas lneas, puede presentar una imagen sobre la pantalla de un monitor. Un campo de video VGA, comœnmente estÆ compuesto de 480 lneas y cada lnea usualmente contiene 640 pxeles. Para crear un campo, la pistola de electrones, emite electrones de izquierda a derecha y de arriba abajo, a travØs de la pantalla; para lograr esto se requieren dos seæales de sincronizacin, una que indique, que una lnea de pxeles, ha sido colocada en la pantalla y otra que indique, que se ha formado un campo. Las seæales de sincronizacin para VGA, son mostradas en la Figura 1. Figura 1: Seæales de sincronismo para VGA. Generacin de una seæal VGA con FPGA, para el envo de una imagen en blanco y negro. Ing. Pedraza C. Estudiantes: Daz A, Prieto D. E

Upload: nikolayey

Post on 02-Jan-2016

58 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Generacion De Una Señal Vga

1

Resumen-- El desarrollo de hardware para el procesamiento de datos constituye un importante campo aun no explotado que presenta varias ventajas frente a las implementaciones en software. Como ventajas se ha de entender velocidad, escala y costo; junto con estas características y en algunos casos la combinación con elementos de software se obtienen sistemas robustos para aplicaciones en telecomunicaciones. En este trabajo se abordara el principio de una transmisión de datos a través de un modulo de hardware implementado en una FPGA, cuya función es trabajar como la tarjeta de video de un computador permitiendo que datos de un equipo sean enviados a una pantalla sin necesidad de otro PC para la comunicación. Los datos son obtenidos en un programa que en desarrollos posteriores será reemplazado por otro modulo hardware brindando las características antes mencionadas en un solo dispositivo.

I. INTRODUCCIÓN

n este documento, la generación de una señal VGA con FPGA, es propuesta. VGA (Video Graphics Array) es una

norma de visualización, de gráficos para computadores creada en 1987 por IBM. VGA emplea una resolución de 640x480 y utiliza señales de sincronismo vertical y horizontal, para la conformación de campos; un campo es una imagen conformada por 480 líneas, cada una usualmente con 640 píxeles.

Se utilizó el puerto VGA de una FPGA Spartan 3, para enviar señales a un monitor. Estas señales contienen información de sincronismo horizontal y vertical y las características de color de la imagen en blanco y negro.

II. GENERACIÓN DE SEÑAL EN VGA

A. Señales de color en VGA. Hay tres señales (rojo, verde y azul) que definen la

información de color en un monitor VGA. Cada una de las tres señales controla la �pistola� de electrones, y esta coloca un punto de color primario en la pantalla del monitor. Los

niveles análogos, se encuentran entre 0 (completamente oscuro) y 0.7v (máximo brillo), las señales le indican al monitor que intensidad existe por los tres colores primarios, que combinados forman un punto de color llamado píxel.

B. Sincronización de la señal en VGA Un único punto de color, sobre un monitor de video no

genera mucha información. Una línea horizontal de píxeles, trae un poco más de información. Pero un campo, el cual esta compuesto de muchas líneas, puede presentar una imagen sobre la pantalla de un monitor. Un campo de video VGA, comúnmente está compuesto de 480 líneas y cada línea usualmente contiene 640 píxeles.

Para crear un campo, la �pistola� de electrones, emite

electrones de izquierda a derecha y de arriba abajo, a través de la pantalla; para lograr esto se requieren dos señales de sincronización, una que indique, que una línea de píxeles, ha sido colocada en la pantalla y otra que indique, que se ha formado un campo. Las señales de sincronización para VGA, son mostradas en la Figura 1.

Figura 1: Señales de sincronismo para VGA.

Generación de una señal VGA con FPGA, para el envío de una imagen en blanco y negro.

Ing. Pedraza C. Estudiantes: Díaz A, Prieto D.

E

Page 2: Generacion De Una Señal Vga

2

Los pulsos negativos en el sincronismo horizontal marcan

el inicio y fin de una línea y aseguran que los píxeles sean mostrados en el monitor entre el área de la pantalla visible. Los píxeles son enviados al monitor en una ventana de 25.17 µs. Una nueva línea de píxeles puede empezar en un tiempo mínimo de 1.89 µs después de que el sincronismo horizontal termine. Una sola línea ocupa 25.17 µs de un intervalo de 31.77 µs. Los otros 6.6 µs de cada línea realizan el intervalo de blanking horizontal durante el cual la pantalla esta oscura.

De forma análoga, los pulsos negativos sobre una señal de

sincronismo vertical marcan el inicio y fin de un campo de líneas de video y aseguran que el monitor despliegue las líneas entre la parte superior e inferior del área visible de la pantalla. Todas las líneas son enviadas al monitor en una ventana de 15.25ms. La primera señal del siguiente campo, puede empezar en un tiempo mínimo de 1.02 ms después de que el pulso de sincronismo vertical termine. Un solo campo ocupa 15.25ms de un intervalo de 16.784ms. Los otros 1.534ms del intervalo de campo son para el intervalo de blanking vertical durante el cual la pantalla está oscura.

III. DISEÑO

Al conocer las especificaciones para trabajar con VGA, se puede proceder al desarrollo de la aplicación, la imagen creada en un computador ha de ser transmitida a un monitor sin el uso de otro PC para el procesamiento de los datos, es aquí donde es necesario el uso de la FPGA la cual cumplirá las funciones de tarjeta de video del monitor destino. La imagen es un simple mapa de bits, JPEG o cualquier otro formato obtenido del PC transmisor, para esta aplicación se utilizara una imagen de formato bmp en blanco y negro, esto significa que el valor de cada píxel ha de ser 0 o 1, además permite que la imagen sea guardada en una sola memoria brindando espacio para la futura implementación de rojo, verde y azul para los cuales se requieren 3 memorias diferentes. Para poder cumplir la función secundaria se creo un programa en matlab que permite obtener los bits que componen la imagen y organizarlos para ingresarlos a la memoria de la FPGA. Para poder mostrar los datos, estos tienen que ser leídos de una memoria para poder ser enviados por la interfaz VGA del monitor, esta memoria se incluye dentro de la FPGA siendo descrita en un archivo VHDL, para esta aplicación se escogió una memoria de 16Kx1 con un bus de direcciones de 14 bits, con esta memoria se pueden direccionar 16K datos, si se toman que cada bit equivale a un píxel (realmente es así), se puede obtener una imagen de 16384 píxeles lo que significa que se podrá mostrar una imagen de 128*128 píxeles.

La siguiente tarea es llenar esta memoria con los datos de

la imagen que se desea transmitir, para la obtención de los datos se utiliza un programa en matlab cuya función es tomar la imagen, guardar sus datos binarios en una matriz. Posteriormente esta matriz de 128*128 datos ha de ser guardada en la FPGA, el problema es que esta matriz no se encuentra ni en el formato ni en el orden que se necesita para ser guardada en la memoria por lo tanto el programa matlab toma estos datos, los organiza en un vector que posteriormente es convertido a valores enteros decimales de 0 a 255 para luego ser convertidos a hexadecimal y poder ser guardados en la memoria para su lectura. el proceso de creación de un archivo con el formato de la memoria el cual es de derecha a izquierda con un nibble por cada posición es obtenido por medio de instrucciones fopen, la cual creara la identificación y el nombre del archivo donde se escribirá, la fprintf que me permite escribir en ese archivo con un formato especifico y finalmente estos datos son enviados a la memoria en su orden especifico cerrando por ultimo el archivo utilizado para escribir en el formato deseado.

Ahora se determina como ha de ser la transmisión para la

interfaz VGA, es decir se deben crear las señales de sincronismo horizontal para determinar el final de línea y la señal de sincronismo vertical para conocer el final de cada cuadro, para esto se crean dos señales V y H que estarán en 1 lógico o en 0 lógico, brindando los estados que han de tener las señales de sincronismo que se explicaron anteriormente.

También se crean dos señales de valores enteros que

permitirán hacer comparaciones para conocer el punto en la pantalla en el que se esta posicionado, estas señales reciben el nombre de contaH y contaV, también se crean otras dos señales llamadas contaHst y ContaVst las cuales permitirán direccionar la memoria para leer cada dato y enviarlo por la interfaz VGA de la FPGA. Estos datos leídos de la memoria son almacenados en una señal llamada color la cual es de tres bits(rojo, verde y azul) sin embargo como solo se maneja blanco y negro esta señal solo guardara valores binarios leídos de la memoria, esta señal color será la que pondrá los datos en los pines rojo, verde y azul de la interfaz VGA. Finalmente se define un reloj de sistema que permitirá que los contadores aumenten con cada flanco avanzando así en la muestra de datos en a pantalla.

El desarrollo del código se hace en tres procesos que se

ejecutaran de forma paralela de la siguiente manera: Sincronismo horizontal. Sincronismo vertical. Lectura de la memoria. La organización de estos procesos dentro del controlador se

puede ver en la figura 2.

Page 3: Generacion De Una Señal Vga

3

Para poder borrar el proceso en el momento que se desee se incluye un reset cuya función es poner a cero los dos contadores contaH y contaV, para iniciar nuevamente desde el inicio de la línea además se define el estado de las señales de sincronismo H y V. Para el caso de H si el contador contaH esta en 799 es decir el máximo de la resolución la señal de contaH se resetea y la sincronización continua en 1. para producir el pulso de fin de línea se establece una condición de 100 píxeles que van desde el 657 hasta el 756 aquí el contador se aumenta en 1 y si este caso no se cumple también el contador se aumenta en 1, reiniciándose cada vez cambia el reloj o el reset al final la señal de sincronismo H se guarda en otra señal llamada Hsignal.

Figura2. Diagrama bloques controlador VGA.

Para el otro proceso se hacen las mismas consideraciones pero para el contador vertical, el cual si esta en 524 se ha de poner nuevamente a 0 indicando el final de cuadro y si se encuentra entre el valor 491 y 493 se produce el pulso de sincronismo vertical finalizando también al guardar la señal V en otra señal llamada Vsignal.

Después, en el mismo proceso se realiza la comparación

para definir la parte de video activo, la cual es una resolución de 634*480 píxeles, si se cumple que algún contador esta por fuera de este rango el valor de una señal que indica la presencia de color ha de ser 0 es decir no hay color, si de lo contrario los contadores aun están en el rango permitido el valor de esta señal es 1 permitiendo el paso de un bit en su valor original.

La señal anteriormente utilizada se llama negro y permite

la existencia de los tres colores, alguno de ellos o ninguno para permitir que la señal negro aísle o deje pasar el color que se debe hacer es una and entre estos dos valores. Los tres valores finalmente son guardados en la señal color que aunque esta definida para manejar tres colores en esta aplicación solo existirán valores blancos o negros. Ahora se crea el ultimo proceso en el cual se determina cuando enviar las señales a la interfaz VGA de la FPGA para transmitir al

monitor destino. Existió un problema para poder direccionar la memoria de manera sincronizada por que existían dos posibles soluciones: crear una señal que direccione la memoria independientemente de los contadores o que exista una señal que direccione la memoria teniendo en cuenta los contadores. Por problemas de falta de sincronismo se escogió la ultima opción aunque esto implique convertir las señales contaV y contaH a señales binarias de 7 bits cada una .esto permite direccionar la memoria de manera sincronizada, finalmente los datos direccionados por este addr sincronizado serán guardados en la señal color y enviados si se cumple la condición de estar en el rango de 128 * 128, sino existe el cumplimiento de la condición en color se guarda un dato aleatorio que en este caso corresponde al color azul.

IV. CONCLUSIONES

Aunque la norma de VGA sea anticuada, debido a que no es usada actualmente, se pueden desarrollar estudios que involucren imágenes, no solo en blanco y negro, sino a color; con el fin crear aplicaciones que involucren señales de entrada y su respectiva visualización en pantalla

El desarrollo de elementos de hardware que realicen tareas

específicas en las cuales el uso de un PC o un software sea demasiado excesivo proporciona soluciones baratas y más eficientes, sin embargo para aplicaciones robustas siempre existirá la relación software / hardware

. El campo de la implementación de sistemas en FPGA, aun

ofrece alta disponibilidad y necesidades por suplir lo que se traduce en una gran oportunidad de trabajo en aplicaciones basadas en estos dispositivos.

La versatilidad de las FPGA permite una gran capacidad y

versatilidad para el desarrollo de aplicaciones de velocidad y bajo costo debido a su procesamiento paralelo y a su relativa sencillez frente a otros sistemas programables.

V. REFERENCIAS

[1] XESS, Corp. VGA Signal Generation with the XS Board