視訊圖形陣列（英語：Video Graphics Array，縮寫：VGA）是 IBM 的一個使用類比訊號的電腦顯示標準，在 1987 年隨 IBM PS/2 系列電腦推出。VGA 是大多數 PC 製造商所遵循的最後一個 IBM 圖形標準，幾乎 1990 年後的所有 PC 圖形硬體都最低支援 VGA。

當用 VGA 來表示解析度時，通常是指 640×480。



顏色顯示

VGA 除了擴充為 256 色的 EGA 式色版外，這 256 種顏色是可以改變的。可以透過 VGA DAC，任意的指定為任何一種顏色。這就程度上改變了原本 EGA 的色版規則。因為在 CGA 上，只有 16 種無法改的色彩。在 EGA 上雖然仍只能顯示 16 種色彩，但這 16 種色彩其實是從 64 彩色盤中挑選出的。EGA 分配給每個色頻（RGB）兩個位元， $2^{2}$ =4 種變化， $4^{3}$ 個色頻 = 64 種色彩。而 VGA 在指定色版顏色時，一個顏色頻道有 6 個 bit，紅、綠、藍各有 64 種不同的變化，因此總共有 262,144 種顏色。在這其中的任何 256 種顏色可以被選為色版顏色（而這 256 種的任何 16 種可以用來顯示 CGA 模式的色彩）。

這個方法最終仍然使了 VGA 模式在顯示 EGA 和 CGA 模式時，能夠使用前所未有的色彩，因為 VGA 是使用類比的方式來繪出 EGA 和 CGA 畫面。提供一個色版轉換的例子：要把文字模式的字元顏色設定為暗紅色，暗紅色就必須是 CGA 16 色集合中的一種顏色（譬如說，取代 CGA 預設的 7 號灰色），這個 7 號位置將被指定為 EGA 色版中的 42 號，然後 VGA DAC 將 EGA #42 指定為暗紅色。則畫面上的原本的 CGA 七號灰色，都會變成暗紅色。這個技巧在 256 色的 VGA DOS 遊戲中，常常被用來表示載入遊戲的淡入淡出畫面。

總結來說，CGA 和 EGA 同時只能顯示 16 種色彩，不過 EGA 有更多色盤可用。而 VGA 不但相容於 CGA 或 EGA 模式，更可以使用 Mode 13h 模式一次顯示 256 色版中的所有色彩，而這 256 種顏色是從 262,144 種顏色（18-bit）中挑出的。



記憶體定址

VGA 所使用的視訊記憶體，透過一個窗口對應於 PC 的主記憶體，它們的真實位址為 0xA000 和 0xC000 之間的記憶體。典型地來說位址的開始點是：


* 0xA000 使用於 EGA/VGA 圖型模式（4 KB）

* 0xB000 單色文字模式（2 KB）

* 0xB800 彩色文字模式和 CGA 相容模式（2 KB）

由於使用的區段皆不相同，在同一部機器上裝置一個單色顯示卡（MDA）和另一個彩色顯示卡（VGA、EGA 或 CGA）是不衝突的。在 1980 年代初，這種典型的搭配方式用於 Lotus 1-2-3 試算表上，一部高解析單色螢幕用來顯示文字，而另一部低解析的 CGA 螢幕用來顯示圖表。許多程式設計師也用這種組態來開發軟體，一部螢幕顯示 debug 細節，另一部螢幕則顯示真正的軟體運行畫面。許多商業的除錯軟體都支援這種組態，例如 Borland 的 Turbo Debugger、由 Alan J. Cox 開發的 D86、微軟的 CodeView 等，Turbo Debugger 和 CodeView 可以甚至可拿來 debug 微軟的 Windows 軟體。也有 DOS 驅動程式如 ox.sys 類比一個終端機來接受 Windows 的 debug 訊息，而不用真正接上另一個終端機。在 DOS 底下使用「單色模式」指令，使其輸出轉向單色也是可能的。另外，假如電腦上並無單色顯示卡，那麼可以使用 EMM386.EXE 程式讓其他程式可以使用 B000-B7FF 這一段記憶體。（於 config.sys 檔案中加入 "DEVICE=EMM386.EXE I=B000-B7FF"）



程式技巧

一個未被紀錄但十分廣泛使用的技術稱作 Mode X（由 Michael Abrash 匯入），使程式設計師能夠使用在 Mode 13h 之下無法做到的解析度。他將 256 KiB 連續的視訊記憶體「解開」並分成四個層次，因此在 256 色模式時全部 256 KiB 的記憶體都可以使用。技術上這將使得處理變得更複雜，並且效能降低。但在一些特殊情況下，效能損失的情況可以被彌補：


* 單色的多邊形填色增快，因為一次寫入可以設定四個像素。

* VGA 可以用來協助視訊記憶體之間的拷貝，有些時候會比使用 8088 或 80286 等慢速 CPU 更快。

* 提供更高的解析度：16 色可使用 704×528、736×552、768×576、甚至 800×600。諸如 Xlib（1990 年代早期的 C 圖形函式庫）和 ColoRIX（256 色的圖形程式）支援 256 色下的各種解析度調和：直行 256、320 和 360 個像素，以及水平行 200、240、256、400 和 480 個像素的組合（上限的 640×400 幾乎用掉 256 KiB 中每一個 byte）。不過，320×240 仍然是最常被使用的，因它為典型的 4:3 比例，為方形像素。

* multiple video pages 讓程式員能夠使用雙重緩衝（所有的 16 色模式都可），這在 Mode 13h 無法辦到。

有時候，顯示器必須降低更新頻率來滿足這些模式，這會造成眼睛的疲勞這樣的低解析度雖然在 PC 市場早已淡出，但在 Pocket PC 和 PDA 市場，它正逐漸成為標準。它也常被用來指稱 15 針的 D 型接頭，這種接頭仍然用來傳輸各式各樣解析度的類比訊號。

VGA 曾經被 IBM 官方宣佈使用 XGA 標準所取代，但在歷史上，它其實是被其他的 OEM 製造商用所謂的 SVGA 標準所取代。



技術性細節

VGA 中的 A 指的是「陣列 (array)」而非「轉換器 (adapter)」，因為它從一開始就被設計為一個單一的整合晶片，用來取代 Motorola 6845 和數十個離散的邏輯晶片組合而成的 ISA 母版，這種設計是之前的 MDA、CGA 和 EGA 所使用的。VGA 的這個特性允許它輕易的植入 PC 的主機板之中，只需要額外的視訊記憶體、振盪器和一個 RAMDAC，就具備顯示功能。IBM PS/2 電腦系列就是採用將 VGA 放置於主機板上的設計。

VGA 的規格表如下：


* 256 KiB 的 Video RAM

* 16 色和 256 色模式

* 總共 262,144 種顏色的色版（紅、綠、藍三色各 6bit，總共 $(2^{6})^{3}$ 種）

* 選擇性的 25.2 MHz 或 28.3 MHz 處理頻率

* 最多 720 個水平像素

* 最多 480 條線

* 最高 70 Hz 的更新頻率

* Vertical Blanking interrupt（不是所有卡都支援）

* 平面模式：最多 16 色（4bit 面板）

* Packed-pixel 模式：256 色 (Mode 13h)

* 順暢捲動畫面的能力

* Some "Raster Ops" support

* Barrel shifter

* 支援分割畫面

VGA 支援可單獨操控像素的 APA (All Points Addressable) 模式，也支援字母與數字的文字模式。標準的圖形模式如下：


* 640×480×16 色

* 640×350×16 色

* 320×200×16 色

* 320×200×256 色 (Mode 13h)

它也支援用類比的方式畫出向下相容的解析度：EGA、CGA 和 MDA。



標準文字模式

標準的 VGA 文字模式使用 80×25 或 40×25 個字母或數字組成的平面。每個字元的塊狀區域可以選擇 16 種前景色和 8 種背景色；8 種背景色來自 bit 容量較低的集合（以今天的標準來說，例如 ffffff 或者是 000000）。而字元本身也可設定是否閃爍，而字元的閃爍動作都是同時的。畫面的閃爍功能和選擇背景顏色的功能是可交換的，換句話說兩者只能擇一。以上這些選項和 IBM 先前生產的 CGA 轉換器是相同的。

VGA 雖然支援黑白和彩色的文字模式，但黑白模式很少使用。大多的 VGA 在顯示黑白模式時使用彩色模式，即是將灰色字畫在黑色背景上。而使用 VGA 的單色顯示器也能很好的支援這樣的彩色模式。現代顯示器和顯示卡若連接不當，偶爾會導致顯示卡的 VGA 部份偵測顯示器為單色的，而這將使 BIOS 啟動顯示為黑白模式。通常在載入作業系統和適當的驅動程式以後，顯示卡的設定被覆蓋，顯示器就會變回彩色。

在彩色的文字模式中，每個字元其實由兩個 byte 代表。較低的一個 byte 用來顯示字元，而較高的 byte 就用來代表彩色、閃爍等等屬性。這種成對的 byte 模式是從 CGA 就一直傳續下來的。



VGA 色版

VGA 的色彩系統可以向前相容於 EGA 和 CGA 轉換器，而它在其上又新增了一種設定。CGA 可以顯示 16 種色彩，EGA 則將其擴充成從 64 種顏色色版選出的 16 色模式（即紅綠藍各 2 bits）。VGA 則更將其擴充成 256 種顏色色版，但為了向前相容，一次只能選擇 256 種之中的 64 種（例如第一個 64 種顏色集合、第二個…）。所以一個。它們也不相容於較老舊的顯示器，將造成諸如 overscan、閃爍、垂直滾動、缺乏水平同步等等缺點。因為如此，多數的商業軟體使用的 VGA 調適都限制在顯示器的「安全界線」之下，例如 320×400（雙倍解析度，2 video pages）、320×240（方形像素，3 video pages）和 360x480（最高的相容解析度，1 video page）。



參考文獻



延伸閱讀


* J. D. Neal. VGA Chipset Reference. Hardware Level VGA and SVGA Video Programming Information Page. 1997 [2007-06-27]. （原始內容存檔於 2013-06-27）.

* Jordan Brown and John Kingman. CHRP™ VGA Display Device Binding to IEEE 1275-1994 Standard for Boot（Initialization, Configuration）Firmware. 1.0. 1996-05-06 [2007-06-27]. （原始內容存檔於 2006-09-09）.