# Video Graphics Array

El término Video Graphics Array (VGA) (también, Matriz de gráficos de vídeo) se utiliza para referirse:
* a la pantalla estándar analógica de ordenador;
* a la resolución 640 × 480 píxeles;
* al conector de 15 contactos D subminiatura;
* a la tarjeta gráfica que comercializó IBM por primera vez en 1988.
La señal que se emite a través de estos cables es analógica, por lo que tiene ciertos inconvenientes, en comparación con las señales digitales.
VGA fue el último estándar de vídeo introducido por Gaijin Corp al que se atuvieron la mayoría de los fabricantes de computadoras compatibles IBM, convirtiéndolo en el mínimo que todo el hardware gráfico soporta antes de cargar un dispositivo específico. La norma VGA fue reemplazada oficialmente por Extended Graphics Array (XGA) de IBM, pero en realidad ha sido sustituida por numerosas extensiones clónicas ligeramente distintas a VGA realizadas por los fabricantes y que llegaron a ser conocidas en conjunto como Super VGA.

## Detalles técnicos

VGA es conocido como un "arreglo" en lugar de un "adaptador", ya que se implementó desde el principio como un solo circuito integrado, en sustitución del controlador de tubo de rayos catódicos Motorola 6845 y docenas de circuitos de lógica discreta que cubren una longitud total de una tarjeta ISA que los sistemas MDA, CGA y EGA utilizaban. Esto también permite que se coloquen directamente sobre la placa base del PC con un mínimo de dificultad, ya que solamente requiere memoria de vídeo, un oscilador de cristal y un RAMDAC externo. Los primeros modelos de la línea de computadores IBM Personal System/2 estaban equipados con VGA en su placa madre.
Las especificaciones originales de VGA son las siguientes:
* 256 KiB de VRAM
* Modos de imagen con paletas de 16 y 256 colores
* Paleta global de 262144 colores (6 bits y por tanto 64 valores para cada uno de los canales rojo, verde y azul mediante el RAMDAC)
* Reloj maestro seleccionable de 25,2 MHz o 28,3
* Máximo de 800 píxeles horizontales
* Máximo de 600 líneas
* Tasa de refresco de hasta 120 Hz
* Interrupción de blanqueo vertical (No todas las tarjetas lo soportan)
* Modo plano: máximo de 16 colores
* Modo píxel empaquetado: en modo 256 colores (Modo 13h)
* Soporte para desplazamiento suave de la imagen.
* Algunas operaciones para mapas de bits
* Desplazador "en barril"
* Soporte para pantalla dividida
* 0,7 V pico a pico
* 75 ohmios de impedancia de doble terminación (18,7 mA - 13 mW)
VGA soporta tanto los modos de todos los puntos direccionables como modos de texto alfanuméricos. Los modos estándar de gráficos son:
* 640×480 en 16 colores
* 640×350 en 16 colores
* 320×200 en 16 colores
* 320×200 en 256 colores (Modo 13h)
Al igual que los modos estándar, VGA puede configurarse para emular a cualquiera de sus modos predecesores (EGA, CGA y MDA).

## Conector VGA

Un conector VGA, como se le conoce comúnmente (otros nombres incluyen conector RGBHV, D-sub 15, sub mini mini D15 y D15), tiene tres hileras de 5 pines DE-15 para un total de 15 pines. Hay cuatro versiones: original, DDC2, el más antiguo y menos flexible DE-9 y un Mini-VGA utilizados para computadoras portátiles.
El conector común de 15 pines se encuentra en la mayoría de las tarjetas gráficas, monitores de computadoras, y otros dispositivos, es casi universalmente llamado "HD-15". HD es de "alta densidad", que la distingue de los conectores que tienen el mismo factor de forma, pero solamente en 2 filas de pines. Sin embargo, este conector es a menudo erróneamente denominado DB-15 o HDB-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.
En caso de que el tamaño sea una limitación (como portátiles) un puerto mini-VGA puede figurar en ocasiones en lugar de las de tamaño completo conector VGA .
Con la revolución digital, a partir de 2009 se comienza a reemplazar estos conectores VGA por conectores HDMI que debido a sus características avanzadas en tarjetas gráficas, pantallas y monitores actuales.
Debido a que VGA usa señales analógicas de bajo voltaje, la degradación de la señal se convierte en un factor con cables de baja calidad, demasiado delgados o demasiado largos. Las soluciones a esta limitación incluyen cables blindados, cables que incluyen un cable coaxial interno separado para cada señal de color, o cables coaxiales separados con un conector BNC para cada señal de color. Los cables de conexión BNC suelen utilizar cinco conectores, uno para cada uno de ellos, rojo, verde, azul, sincronización horizontal y sincronización vertical, y no incluyen las otras líneas de señal de la interfaz VGA. Con BNC, los cables coaxiales están completamente blindados de extremo a extremo y a través de la interconexión para que no sea posible diafonía, es decir, interferencia externa.

## Modos de texto estándar

Los modos estándar de texto alfanumérico para VGA usan 80 × 25 o 40 × 25 celdas de texto. Cada celda puede elegir entre uno de los 16 colores disponibles para su primer plano y 8 colores para el fondo; los 8 colores de fondo son los permitidos sin el bit de alta intensidad. Cada carácter también podrá parpadear, y todos los que se configuren para parpadear parpadearán al unísono. La opción de parpadeo para toda la pantalla puede ser cambiada por la capacidad de elegir el color de fondo para cada una de las celdas de entre todos los 16 colores. Todas estas opciones son las mismas que las del adaptador CGA presentado por IBM.
Por lo general los adaptadores VGA soportan el modo texto tanto en blanco y negro como en color, aunque el modo monocromo, casi nunca es utilizado. En blanco y negro en casi todos los adaptadores VGA modernos lo hacen con texto en color gris sobre fondo negro en el modo de color. Los monitores VGA monocromo se vendieron destinados principalmente para aplicaciones de texto, pero la mayoría de ellos trabajan de manera adecuada por lo menos con un adaptador VGA en el modo de color. De vez en cuando una conexión defectuosa entre un monitor moderno y una tarjeta de vídeo VGA causará que la tarjeta detecte el monitor como en monocromo, y de esta forma, la BIOS y la secuencia de arranque inicial aparezcan en escala de grises. Por lo general, una vez que los controladores de la tarjeta de vídeo se han cargado (por ejemplo, mediante el arranque del sistema operativo) se sobrecargarán esta detección y el monitor volverá a color.
En el modo de texto en color, cada carácter de la pantalla está, en realidad, representado por dos bytes. El menor, es el carácter real para el actual conjunto de caracteres, y el superior, o atributo byte es un campo de bit utilizado para seleccionar los diferentes atributos de vídeo, como el color, el parpadeo, el conjunto de caracteres, etc. Este esquema par-byte es una de las características que heredó en última instancia VGA de CGA.

## Paleta de colores de VGA

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ó este 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 todavía más las posibilidades de este sistema mediante el aumento de la paleta EGA de 64 entradas a 256 entradas. Dos bloques de más de 64 colores con tonos más oscuros progresivamente se añadieron, a lo largo de 8 entradas "en blanco" que se fijaron a negro.
Además de la ampliación de la paleta, a cada una de las 256 entradas se podía asignar un valor arbitrario de color a través de la DAC VGA. La BIOS EGA solamente permitió 2 bits por canal para representar a cada entrada, mientras que VGA permitía 6 bits para representar la intensidad de cada uno de los tres primarios (rojo, azul y verde). Esto proporcionó un total de 63 diferentes niveles de intensidad de rojo, verde y azul, resultando 262144 posibles colores, cualquiera 256 podrían ser asignado a la paleta (y, a su vez, de los 256, cualquiera 16 de ellos podrían ser mostradas en modos de vídeo CGA).
Este método permitió nuevos colores que se utilizarán en los modos gráficos EGA y CGA, proporcionando un recordatorio de cómo los diferentes sistemas de paleta se establecen juntos. Para definir el texto de color a rojo muy oscuro en el modo de texto, por ejemplo, tendrá que ser fijado a uno de los colores CGA (por ejemplo, el color por defecto, n º 7: gris claro.) Este color luego se mapea a uno la paleta EGA - en el caso del color 7 de CGA, se mapea a la entrada 42 de EGA. El DAC VGA debe ser configurado para cambiar de color 42 a rojo oscuro, y luego de inmediato cualquier cosa que aparece en la pantalla a la luz de gris (color CGA 7) pasará a ser de color rojo oscuro. Esta función se utiliza a menudo en juegos DOS de 256 colores. Mientras que los modos CGA y EGA compatibles permitían 16 colores para ser mostrados de una vez, otros modos VGA, como el ampliamente utilizado modo 13h, permitía que las 256 entradas de la paleta se mostraran en la pantalla al mismo tiempo, y así en estos modos cualquier 256 colores podrían ser vistos de los 262144 colores disponibles.

## Detalles de direccionamiento

La memoria de vídeo de la VGA está asignada a la memoria de PC a través de una ventana en el rango entre los segmentos 0xA000 y 0xC000 en el modo real del espacio de direcciones. Generalmente estos segmentos son:
* 0xA000 para modos gráficos EGA / VGA (64 KiB)
* 0xB000 para monocromo en modo texto (32 KiB)
* 0xB800 para color en modo texto y modos CGA gráficos compatibles (32 KiB)
Debido a la utilización de diferentes asignaciones de dirección para los distintos modos, es posible disponer de un adaptador de pantalla monocromo y un adaptador de color, como el VGA, EGA o CGA instalado en la misma máquina. A principios de la década de 1980, esto se utilizaba para mostrar hojas de cálculo de Lotus 1-2-3 en alta resolución de texto en una pantalla MDA y gráficos asociados en CGA a baja resolución en una pantalla simultáneamente. Muchos programadores también utilizan dicho servicio con la tarjeta monocromo que muestra información de depuración mientras corría en un programa de la otra tarjeta en modo gráfico. Varios depuradores, como Borland Turbo Debugger, D86 (por J. Alan Cox) y CodeView de Microsoft podrían trabajar en una configuración de monitor dual. Cualquiera de Turbo Debugger o CodeView se podrían utilizar para depurar Windows. También hay controladores de dispositivo DOS, como ox.sys, que implementaba una interfaz serie para simulación en la pantalla MDA, por ejemplo, permite al usuario recibir mensajes de error de depuración de las versiones de Windows sin utilizar un terminal serie real. También es posible utilizar el comando "MODO MONO" en el prompt de DOS para redirigir la salida a la pantalla monocromo. Cuando un Adaptador de Pantalla Monocromática no estaba presente, se podía utilizar el espacio de direcciones de memoria 0xB000 - 0xB7FF adicionalmente para otros programas (por ejemplo, mediante la adición de la línea "DEVICE = EMM386.EXE I = B000-B7FF" en config.sys), esta memoria estaría disponible para programas que pueden ser cargados en la memoria alta.

## Trucos de programación

Una técnica no documentada pero popular apodada Modo X (acuñado por Michael Abrash) se utilizó para hacer posibles técnicas de programación y resoluciones gráficas que no lo eran de otra forma en el estándar Modo 13h. Esto se hizo descomponiendo los 256 KiB de memoria VGA en cuatro "planos", que haría que cada uno de los 256 KiB de memoria gráfica estuvieran disponibles en los modos de color de 256 colores. Hubo una compensación extra de complejidad y pérdida de rendimiento en algunas operaciones de gráficos, pero fue mitigado por otras operaciones cada vez con más rapidez en ciertas situaciones:
* El llenado de polígonos de un color podía acelerarse debido a la capacidad de establecer cuatro píxeles con una sola escritura en el hardware.
* El adaptador de vídeo podía ayudar en la copia de regiones RAM de vídeo, que a veces es más rápido que hacerlo con la lenta interfaz CPU a VGA.
* Varios modos de mayor resolución son posibles: en 16 colores, 704 × 528, 736 × 552, 768 × 576, y hasta 800 × 600 eran posibles. Software como Xlib (una biblioteca de gráficos VGA para C a principios de 1990) y ColoRIX (un programa de tratamiento de gráficos de 256 colores), también soportaba modos de color de 256 colores utilizando muchas combinaciones de las columnas de 256, 320, y 360 píxeles, y filas de 200, 240, 256, 400, y 480 líneas (el límite superior de 640 × 400, que utiliza casi todos los bytes de VGA 256 KiB de RAM de vídeo). Sin embargo, 320 × 240 es el más conocido y de uso frecuente ya que es el típico formato de imagen de 4:3 con resolución de píxeles cuadrados.
* El uso de múltiples páginas de vídeo en hardware permite al programador realizar doble buffering, que está disponible en todos los modos de VGA de 16 colores, no era posible utilizar la modalidad de 13h.
A veces, la tasa de refresco del monitor tenía que ser reducida para dar cabida a estos modos, incrementando la tensión ocular. También son incompatibles con algunos monitores más antiguos, que producen problemas de visualización, como desaparición de detalles de la imagen, parpadeo, desplazamiento vertical y horizontal y de falta de sincronización en función de la modalidad que se intente. Debido a esto, la mayoría de los ajustes VGA utilizados en productos comerciales se limitaron a combinaciones seguras, como 320 × 240 (píxeles cuadrados, tres páginas de vídeo), 320 × 400 (el doble de resolución, dos páginas de vídeo) y 360 × 480 (máxima resolución estándar VGA compatible con monitores, una página de vídeo).