Video Graphics Array (VGA) is a graphics standard for video display controller first introduced with the IBM PS/2 line of computers in 1987 <ref>Template:Cite web</ref><ref>Template:Cite news</ref>, following CGA and EGA introduced in earlier IBM personal computers. Through widespread adoption, the term has also come to mean either an analog computer display standard, the 15-pin D-subminiature VGA connector, or the 640×480 resolution characteristic of the VGA hardware.
VGA was the last IBM graphics standard to which the majority of PC clone manufacturers conformed, making it the lowest common denominator that virtually all post-1990 PC graphics hardware can be expected to implement. It was officially followed by IBM's Extended Graphics Array (XGA) standard, but was effectively superseded by numerous slightly different extensions to VGA made by clone manufacturers, collectively known as Super VGA.
Today, the VGA analog interface is used for high-definition video, including resolutions of 1080p and higher. While the transmission bandwidth of VGA is high enough to support even higher resolution playback, there can be picture quality degradation depending on cable quality and length. How discernible this degradation is depends on the individual's eyesight and the display, though it is more noticeable when switching to and from digital inputs like HDMI or DVI.
The original VGA specifications are as follows (supporting e.g. no hardware sprites):
- 256 KB Video RAM (The very first cards could be ordered with 64 KB or 128 KB of RAM, at the cost of losing some or all high-resolution 16-color modes.)
- 16-color and 256-color paletted display modes.
- 262,144-color global palette (6 bits, and therefore 64 possible levels, for each of the red, green, and blue channels via the RAMDAC)
- Selectable 25.175 MHz<ref>Template:Cite web</ref> or 28.322 MHz master pixel clock
- Usual line rate fixed at 31.46875 kHz
- Maximum of 800 horizontal pixels<ref name="ps2_refman1992">PS/2 Video Subsystem Technical Reference Manual 1992</ref>
- Maximum of 600 lines<ref name="ps2_refman1992"/>
- Refresh rates at up to 70 Hz<ref>Template:Cite web</ref>
- Vertical blank interrupt (Not all clone cards support this.)
- Planar mode: up to 16 colors (4 bit planes)
- Packed-pixel mode: 256 colors (Mode 13h)
- Hardware smooth scrolling support
- No Blitter, but supports very fast data transfers via "VGA latch" registers
- Some "Raster Ops" support
- Barrel shifter
- Split screen support
- 0.7 V peak-to-peak<ref>Template:Cite web</ref>
- 75 ohm double-terminated impedance (18.7 mA, 13 mW)
As well as the standard modes, VGA can be configured to emulate many of the modes of its predecessors (EGA, CGA, and MDA), including their reduced global color palettes (with particular pre-set colors chosen from the VGA palette for text and 4- or 16-color, 200-line modes) and coarser text font grids. Compatibility is almost full at BIOS level, but even at register level, a very high value of compatibility is reached. VGA is not directly compatible with the special IBM PCjr or HGC video modes, despite having sufficient resolution, color, refresh rate and memory capabilities; any emulation of these modes has to be performed in software instead.
The intended standard value for the horizontal frequency of VGA is exactly double the value used in the NTSC-M video system, as this made it much easier to offer optional TV-out solutions or external VGA-to-TV converter boxes at the time of VGA's development, a technique proposed by Zia Shlaimoun; it is also at least nominally twice that of CGA, which itself used broadcast-frequency monitors, essentially tunerless televisions with more direct signal inputs. The formula for the VGA horizontal frequency is thus (60 ÷ 1001) × 525 kHz = 4500 ÷ 143 kHz ≈ 31.4685 kHz, obtained in practice by the method common to all raster-based computer graphics of using a particular crystal oscillator or PLL frequency for the pixel clock and deriving all other horizontal and vertical frequencies by integer division. In this case, a 25.175MHz or 28.322MHz pixel clock, counting 800 or 900 pixels per line, arriving at 31.46875 or 31.46889kHz (and from there, 525 or 449 lines to arrive at 59.94Hz or 70.09Hz); the tiny mismatch (7 to 12ppm) is easily accounted for by, and is well within the limits of the retrace synchronisation system. In fact, CGA itself was further adrift (as it could only scan 262 lines per progressive frame, instead of 262.5 to match NTSC's interlaced nature), and the limited precision of quartz oscillators - and their tendency to drift slightly with temperature and supply voltage - means real cards will have slightly higher or lower frequencies whose variance vs the nominal figures can easily exceed the inherent mismatch.
All derived VGA timings (i.e. those which still use the master 25.175 and 28.322 MHz crystals and, to a lesser extent, the nominal 31.469 kHz line rate) can be varied widely by software that bypasses the VGA firmware interface and communicates directly with the VGA hardware, as many MS-DOS based games did. However, only the standard modes, or modes that at least use almost exactly the same H-sync and V-sync timings as one of the standard modes, can be expected to work with the original late-1980s and early-1990s VGA monitors. The use of other timings may in fact damage such monitors and thus was usually avoided by software publishers. Third-party "multisync" CRT monitors were usually much more flexible, and in combination with "super EGA", VGA, and later SVGA graphics cards using extended modes, could display a much wider range of resolutions and refresh rates at wholly arbitrary sync frequencies and pixel clock rates (within a particular lower/upper range, depending on model, typically encompassing a range spanning CGA's 15.7kHz to SVGA and XGA's 36kHz at a minimum, and including the 18.4, 21.8, 24.8 and 31.5kHz of MDA/Hercules, EGA, "25kHz medium resolution" (a standard popularised by several Japanese domestic-market computers) and VGA along the way), commonly reaching 640x400 thru 720x480 (at 56 thru 72Hz), 752x410, 800x560 and 800x600 as standard or near-standard settings.
For the most common VGA mode (640×480 "60 Hz" non-interlaced), the horizontal timings are:<ref name="Javier Valcarce timings list">Template:Cite web</ref><ref>HP D1194A Super VGA Display & HP D1195A Erognomic Super VGA Display Installation Guide, Hewlett Packard</ref>
|Pixel clock frequency||25.175||MHz<ref>Article "Re: VGA specifications ,where ?" posted 19 November 1997 to sci.electronics.design newsgroup by Jeroen Stessen</ref>|
|Horizontal sync polarity||Negative|
|Total time for each line||31.778||µs|
|Front porch (A)||0.636||µs|
|Sync pulse length (B)||3.813||µs|
|Back porch (C)||1.907||µs|
|Active video (D)||25.422||µs|
(Total horizontal sync and blanking time = 6.356 µs; equivalent to pixel widths of A = 16, B = 96, C = 48, D = 640 and each complete line = 800) Template:Wide image NB. The same general layout applies, merely at a lower frequency, for the vertical timings.
These timings are the same in the higher frequency mode, but all pixel counts are correspondingly multiplied by 9/8thsTemplate:Sndthus, 720 active pixels, 900 total per line, and a 54 pixel back porch.
The vertical timings are:
|Vertical sync polarity||Negative|
|Total time for each frame||16.683||ms|
|Front porch (A)||0.318||ms|
|Sync pulse length (B)||0.064||ms|
|Back porch (C)||1.048||ms|
|Active video (D)||15.253||ms|
(Total vertical sync and blanking time 1.43 ms; equivalent to line periods of A = 10, B = 2, C = 33, D = 480 and each complete frame = 525)
These timings are somewhat altered in "70Hz" mode, as although it uses the same line rate, its frame rate is not quite exactly 7/6ths that of "60 Hz", despite 525 dividing cleanly into 7Template:Sndand, of course, 480/400 is itself a larger 6:5 ratio. Instead, it compromises on a 449-line frame (instead of the expected 450), with the back porch extended to 34 lines, and the front porch to 13, with an unaltered 2-line sync pulseTemplate:Sndand the active image taking up 89% of the total scan period rather than 91%. The monitor is triggered into synchronising at the higher frame scan rate (and, with digital displays such as LCDs, the higher horizontal pixel density) by use of a positive-polarity VSync pulse, versus the negative pulse of 60 Hz mode.
Depending on manufacturer, the exact details of active period and front/back porch widths, particularly in the horizontal domain, may vary slightly. This does not usually cause a problem as the porches are merely intended to act as blanked-video buffers offering a little overscan space between the active area and the sync pulse (which triggers, in traditional CRT monitors, the phosphor beam deflection "flyback" to the upper or left hand side of the tube) and thus can be safely overrun into by a certain amount when everything else is operating correctly. The relationship between the front and back porches can also be altered within certain limits, which makes possible special features such as software-based image alignment with certain graphics cards (centering the image within the monitor frame by adjusting the location of the active screen area between the horizontal and vertical porches, rather than relying wholly upon the adjustment range offered by the monitor's own controls which can sometimes be less than satisfactory).
This buffer zone is typically what is exploited to achieve higher active resolutions in the various custom screen modes, by deliberately reducing porch widths and using the freed-up scan time for active pixels instead. This technique can achieve an absolute maximum of 704 pixels horizontally in 25 MHz mode and 792 at 28 MHz without altering the actual sync width (in real-world cases, e.g. with 800 pixel wide mode, the sync pulse would be shortened and a small porch area left in place to prevent obvious visual artefacting), and as much as 523 or 447 lines at the standard 60 and 70 Hz refresh rates (again, it is usually necessary to leave SOME porch lines intact, hence the usual maximum of 410 or 512 lines at these rates, and the 50 Hz maximum being 600 lines rather than 626). Conveniently, the practical limits of these techniques are not quite high enough to overflow the available memory capacity of typical 256 KB cards (800×600 consuming 235 KB, and even the theoretical 832×624 requiring "only" 254 KB), so the only concerns remain those of monitor compatibility.