VGA

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

VGA (англ. Video Graphics Array) — компонентный видеоинтерфейс, используемый в мониторах и видеоадаптерах. Выпущен IBM в 1987 году для компьютеров PS/2 Model 50 и более старших[1].

Видеоадаптер VGA, в отличие от предыдущих видеоадаптеров IBM (MDA, CGA, EGA), использует аналоговый сигнал для передачи цветовой информации. Переход на аналоговый сигнал был обусловлен необходимостью сокращения числа проводов в кабеле. Также аналоговый сигнал давал возможность использовать VGA-мониторы с последующими видеоадаптерами, которые могут выводить большее количество цветов[2].

Официальным последователем VGA стал стандарт IBM XGA, фактически же он был замещен различными расширениями к VGA, известными как «Super VGA» (SVGA).

Термин VGA также используется для обозначения 15-контактного разъёма VGA для передачи аналоговых видеосигналов при различных разрешениях.

Архитектура видеоадаптера VGA[править | править вики-текст]

VGA (так же, как и EGA) состоит из следующих основных подсистем (в народе словом "секвенсер" называли набор регистров управления доступом к плоскостям видеопамяти):

  • Графический контроллер (Graphics Controller), посредством которого происходит обмен данными между центральным процессором и видеопамятью. Имеет возможность выполнять битовые операции над передаваемыми данными.
  • Видеопамять (Display Memory), в которой размещаются данные, отображаемые на экране монитора. 256 кБ DRAM разделены на четыре цветовых слоя по 64 кБ.
  • Последовательный преобразователь (Serializer или Sequencer) — преобразует данные из видеопамяти в поток битов, передаваемый контроллеру атрибутов[3].
  • Контроллер атрибутов (Attribute Controller) — с помощью палитры преобразует входные данные в цветовые значения.
  • Синхронизатор (Sequencer) — управляет временны́ми параметрами видеоадаптера и переключением цветовых слоёв.
  • Контроллер ЭЛТ (CRT Controller) — генерирует сигналы синхронизации для ЭЛТ[4][5].

В отличие от CGA и EGA, основные подсистемы располагаются в одной микросхеме, что позволяет уменьшить размер видеоадаптера (EGA тоже был реализован в одном чипе, по крайней мере его тайванские неоригинальные клоны). В компьютерах PS/2 видеоадаптер VGA интегрирован в материнскую плату [2].

Отличия от EGA[править | править вики-текст]

VGA полностью аналогичен EGA (включая плоскостную видеопамять в 16цветных режимах и секвенсор для доступа процессора к ней), за исключением нижеследующего:

  • иной разъем и кабель к монитору (и иные мониторы), аналоговый, а не 2 бита на цвет. Этот разъем и кабель не менялись около 15 лет (до появления цифровых пакетно-ориентированных технологий DVI, HDMI и DisplayPort, пришедших из мира бытовой видеотехники) и использовались далее в куда более высоких разрешениях. Даже стандартные VGA мониторы сплошь и рядом были способны показывать режим 800x600 при использовании с более современной видеокартой (все зависело от качества блоков развертки монитора и их способности не сорвать генерацию на таких повышенных частотах). В настоящее время (все современные видеокарты совместимы с VGA сверху вниз) слово "VGA" в обиходе oзначает именно этот тип подключения монитора, ныне устаревший, но все еще актуальный.
  • 18-битные цвета в палитре вместо 6-битных, такой богатый набор позволял, например, реализовать ночь, плохую погоду, «заколдованные» режимы и мерцающие цвета в играх одной лишь палитрой (как в игре «Ultima VII»)
  • наличие 256-цветных режимов, стандартный - 320×200, недокументированными (на деле документированными в документациях на аппаратуру VGA, но не включенными в BIOS и его документацию) ухищрениями можно было получить 320×240 (квадратные пиксели, т.н. «режим VGA-X») и выше
  • максимальный 16-цветный режим - 640×480 (квадратные пиксели)
  • во всех 200-строчных графических режимах скан-линия повторялась 2 раза, что давало 400 физических строк развертки монитора, что сильно улучшало качество картинки даже в младших режимах (отсутствие щелей между строк развертки).
  • высота ячейки знакогенератора - 16 скан-линий, а не 14, как у EGA, что давало те же 400 строк развертки во всех текстовых режимах (кроме режимов совместимости со знакогенератором EGA). Таким образом, VGA всегда использовал 400 строк развертки, кроме двух старших 16-цветных режимов, где их было 480 и 350. Режим VGA-X также использовал 480 строк.
  • все регистры (палитры, секвенсера и т.д.) доступны на чтение, EGA имел ряд регистров «только для записи» (например, палитра).

Текстовые режимы[править | править вики-текст]

В стандартных текстовых режимах символы формируются в ячейке 9×16 пикселов, возможно использование шрифтов других размеров: 8–9 пикселов в ширину и 1–32 пиксела в высоту. Размеры самих символов, как правило, меньше, так как часть пространства уходит на создание зазора между символами. Функция для выбора размера шрифта в BIOS отделена от функции выбора видеорежима, что позволяет использовать различные комбинации режимов и шрифтов. Имеется возможность загрузки восьми и одновременного вывода на экран двух различных шрифтов[2][6].

В VGA BIOS хранятся следующие виды шрифтов и функции для их загрузки и активации:

  • 8×16 пикселей(стандартный шрифт VGA),
  • 8×14 (для совместимости с EGA),
  • 8×8 (для совместимости с CGA).

Как правило, эти шрифты соответствуют кодовой странице CP437. Также поддерживается программная загрузка шрифтов, которую можно использовать, например, для русификации[7].

Доступны следующие стандартные режимы:

  • 40×25 символов, 16 цветов, разрешение 360×400 пикселов.
  • 80×25 символов, 16 цветов, разрешение 720×400 пикселов.
  • 80×25 символов, монохромный, разрешение 720×400 пикселов[4].

Хотя в текстовых режимах VGA одно знакоместо имеет ширину 9 пикселей, в данных знакогенератора определяются только 8 из них (8 бит одного байта на строку); пиксели правой колонки символьной матрицы определяется автоматически: пустыми (для символов в диапазоне 0x00–0xAF и 0xE0–0xFF) или такими же, как пикселы 8-й колонки (для символов псевдографики в диапазоне 0xB0-0xDF).

Используя шрифты меньших размеров, чем стандартный 8×16, можно увеличить количество строк в текстовом режиме. Например, если включить шрифт 8×14, то будет доступно 28 строк. Включение шрифта 8×8 увеличивает количество строк до 50 (аналогично режиму EGA 80×43)[8][9].

В текстовых режимах для каждой ячейки с символом можно указать атрибут, задающий способ отображения символа. Существует два отдельных набора атрибутов — для цветных режимов и для монохромных. Атрибуты цветных текстовых режимов позволяют выбрать один из 16 цветов символа, один из 8 цветов фона и включить или отключить мерцание (возможность выбора мерцания можно заменить на возможность выбора одного из 16 цветов фона), что совпадает с возможностями CGA. Атрибуты монохромных режимов совпадают с атрибутами, доступными у MDA, и позволяют включать повышенную яркость символа, подчёркивание, мерцание, инверсию и некоторые их комбинации[2].

Графические режимы[править | править вики-текст]

В отличие от своих предшественников (CGA и EGA) видеоадаптер VGA имел видеорежим с квадратными пикселами (то есть, на экране с соотношением сторон 4:3 соотношение горизонтального и вертикального разрешений было также 4:3). У адаптеров CGA и EGA пикселы были вытянуты по вертикали.

Стандартные графические режимы[править | править вики-текст]

  • 320×200 пикселов, 4 цвета.
  • 320×200 пикселов, 16 цветов.
  • 320×200 пикселов, 256 цветов (новый для VGA).
  • 640×200 пикселов, 2 цвета.
  • 640×200 пикселов, 16 цветов.
  • 640×350 пикселов, монохромный.
  • 640×350 пикселов, 16 цветов.
  • 640×480 пикселов, 2 цвета. При разрешении 640×480 пиксел имеет пропорции 1:1 (новый для VGA).
  • 640×480 пикселов, 16 цветов (новый для VGA)[4].

Нестандартные графические режимы (X-режимы)[править | править вики-текст]

Перепрограммирование VGA позволяло достичь более высоких разрешений по сравнению со стандартными режимами VGA. Наиболее распространённые режимы таковы:

  • 320×200, 256 цветов, 4 страницы. Ничем внешне не отличающийся от режима 13h (320×200, 256 цветов), этот режим имел четыре видеостраницы объёмом чуть менее 64 кБ каждая. Это позволяло реализовать двойную и даже тройную буферизацию.
  • 320×240, 256 цветов, 2 страницы. В этом режиме страниц меньше, зато пиксели имеют пропорции 1:1 (квадратные).
  • 360×480, 256 цветов, 1 страница. Наибольшее разрешение на 256 цветах, которое позволяет VGA.

Во всех этих режимах используется плоскостная организация видеопамяти, концептуально похожая на используемую в 16-цветных режимах, но использующая для формирования цвета по 2 бита из каждой плоскости, а не по 1 - т.е. биты 0–1 байта 0 в плоскости 0 давали биты 0–1 цвета пиксела 0, те же биты в плоскости 1 - биты 2–3 цвета, и т.д. Следующие биты того же байта давали цвета следующих пикселов, т.е. 4 расположенные «один параллельно другому» по одному адресу байта в 4 плоскостях задавали цвет 4 пикселов.

Такая организация видеопамяти позволяла использовать всю видеопамять карты, а не только плоскость 0 в 64К, для формирования 256-цветного изображения, что давало возможность использования высоких разрешений или многих видеостраниц.

Для работы с такой памятью использовался тот же секвенсер, что и в 16-цветных режимах.

Зато из-за особенностей контроллера видеопамяти копирование данных в видеопамять происходит вчетверо быстрее, чем в режиме 13h (это сильно зависит от конкретного машинного кода, исполняющего копирование, и конкретного сценария рисования, а именно заливки сплошным цветом, в общем случае плоскостная видеопамять куда медленнее обычной, и именно потому в SVGA от нее отказались полностью).

Термин «X-режим» (англ. Mode X) был придуман Майклом Абрашем в 1991 году для обозначения нестандартного режима 320×240 с 256 цветами. Этот режим был открыт (путем изучения IBM-овской документации на аппаратуру VGA, которая в те времена была защищена на правовом уровне и не ходила в виде файлов в публичном доступе, опубликованы были только вызовы VGA BIOS, которые не умели включать эти режимы) различными программистами независимо друг от друга, но стал известным благодаря статьям Майкла Абраша в журнале «Dr. Dobb’s Journal»[10].

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Wilton, Richard IBM Video Hardware and Firmware // Programmer's Guide to PC and Ps/2 Video Systems. — Microsoft Press, 1987. — С. 544. — ISBN 1-55615-103-9.
  2. 1 2 3 4 Thompson, Stephen VGA-sign choices for a new video subsystem (англ.). IBM Systems Journal (1988). Проверено 15 декабря 2006. Архивировано из первоисточника 25 августа 2011.
  3. Neal, J. D. VGA Sequencer Operation (англ.). FreeVGA Project (1998). Проверено 23 февраля 2007. Архивировано из первоисточника 25 августа 2011.
  4. 1 2 3 Scott, Michael comp.sys.ibm.pc.hardware.video FAQ (англ.) (1997). Проверено 23 февраля 2007.
  5. Фролов, Александр; Фролов, Григорий. Архитектура видеоадаптеров EGA и VGA. Программирование видеоадаптеров CGA, EGA и VGA (1992). Проверено 23 февраля 2007. Архивировано из первоисточника 25 августа 2011.
  6. Neal, J. D. VGA Text Mode Operation (англ.). FreeVGA Project (1998). Проверено 15 декабря 2006. Архивировано из первоисточника 25 августа 2011.
  7. Фролов, Александр; Фролов, Григорий. Приложения. Программирование видеоадаптеров CGA, EGA и VGA (1992). Проверено 23 февраля 2007. Архивировано из первоисточника 25 августа 2011.
  8. Dnes, Walter Nicer console textmodes (англ.)(недоступная ссылка — история). Проверено 11 января 2007. Архивировано из первоисточника 7 декабря 2003.
  9. Rollins, Dan INT 10H 11H: EGA/VGA Character Generator Functions (англ.). Tech Help! (1997). Проверено 11 января 2007. Архивировано из первоисточника 25 августа 2011.
  10. Abrash, Michael Mode X: 256-Color VGA Magic (англ.). Graphics Programming Black Book(недоступная ссылка — история) (2001). Проверено 30 марта 2007. Архивировано из первоисточника 30 сентября 2007.

Ссылки[править | править вики-текст]