VGA
VGA (англ. Video Graphics Array) — стандарт мониторов и видеоадаптеров. Выпущен IBM в 1987 году для компьютеров PS/2 Model 50 и более старших[1]. VGA являлся последним стандартом, которому следовало большинство производителей видеоадаптеров.
Видеоадаптер VGA, в отличие от предыдущих видеоадаптеров IBM (MDA, CGA, EGA), использует аналоговый сигнал для передачи цветовой информации. Переход на аналоговый сигнал был обусловлен необходимостью сокращения числа проводов в кабеле. Также аналоговый сигнал давал возможность использовать VGA-мониторы с последующими видеоадаптерами, которые могут выводить большее количество цветов[2].
Официальным последователем VGA стал стандарт IBM XGA, фактически же он был замещен различными расширениями к VGA, известными как «Super VGA» (SVGA).
Термин VGA также часто используется для обозначения разрешения 640×480 независимо от аппаратного обеспечения для вывода изображения, хотя это не совсем верно (так, режим 640×480 с 16-, 24- и 32-битной глубиной цвета не поддерживаются адаптерами VGA, но могут быть сформированы на мониторе, предназначенном для работы с адаптером VGA, при помощи SVGA-адаптеров). Также этот термин используется для обозначения 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].
См. также [править]
Примечания [править]
- ↑ 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
- ↑ 1 2 3 4 Thompson, Stephen VGA-sign choices for a new video subsystem (англ.). IBM Systems Journal (1988). Архивировано из первоисточника 25 августа 2011. Проверено 15 декабря 2006.
- ↑ Neal, J. D. VGA Sequencer Operation (англ.). FreeVGA Project (1998). Архивировано из первоисточника 25 августа 2011. Проверено 23 февраля 2007.
- ↑ 1 2 3 Scott, Michael comp.sys.ibm.pc.hardware.video FAQ (англ.) (1997). Проверено 23 февраля 2007.
- ↑ Фролов, Александр; Фролов, Григорий Архитектура видеоадаптеров EGA и VGA. Программирование видеоадаптеров CGA, EGA и VGA (1992). Архивировано из первоисточника 25 августа 2011. Проверено 23 февраля 2007.
- ↑ Neal, J. D. VGA Text Mode Operation (англ.). FreeVGA Project (1998). Архивировано из первоисточника 25 августа 2011. Проверено 15 декабря 2006.
- ↑ Фролов, Александр; Фролов, Григорий Приложения. Программирование видеоадаптеров CGA, EGA и VGA (1992). Архивировано из первоисточника 25 августа 2011. Проверено 23 февраля 2007.
- ↑ Dnes, Walter Nicer console textmodes (англ.)(недоступная ссылка — история). Проверено 11 января 2007.
- ↑ Rollins, Dan INT 10H 11H: EGA/VGA Character Generator Functions (англ.). Tech Help! (1997). Архивировано из первоисточника 25 августа 2011. Проверено 11 января 2007.
- ↑ Abrash, Michael Mode X: 256-Color VGA Magic (англ.). Graphics Programming Black Book(недоступная ссылка — история) (2001). Проверено 30 марта 2007.
DVI (разъем)
Ссылки [править]
| Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её. Это примечание по возможности следует заменить более точным. |
|
|
||
|---|---|---|
| Видеоадаптеры | MDA | Tandy | HGC | CGA | EGA | PGC | VGA | MCGA | 8514 | XGA | |
| Разрешение экрана | QVGA | VGA | SVGA | XGA | XGA+ | SXGA | SXGA+ | UXGA | QXGA | QSXGA | QUXGA | HXGA | HSXGA | HUXGA | |
| Широкоэкранные варианты | WVGA | WXGA | WSXGA/WXGA+ | WSXGA+ | WUXGA | WQXGA | WQSXGA | WHXGA | WHSXGA | WHUXGA | WQUXGA | |

