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 для передачі аналогових відеосигналів при різних дозволах.


1. Архітектура відеоадаптера 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].


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 мав ряд регістрів "тільки для запису" (наприклад, палітра).

3. Текстові режими

У стандартних текстових режимах символи формуються в комірці 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].


4. Графічні режими

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

4.1. Стандартні графічні режими

  • 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].

4.2. Нестандартні графічні режими (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). Статичний - www.webcitation.org/61CfAwfqL з першоджерела 25 серпня 2011.
  3. Neal, JD VGA Sequencer Operation - osdever.net / FreeVGA / vga / vgaseq.htm (Англ.) . FreeVGA Project (1998). Статичний - www.webcitation.org/61CfBRNTX з першоджерела 25 серпня 2011.
  4. 1 2 3 Scott, Michael comp.sys.ibm.pc.hardware.video FAQ - www.faqs.org/faqs/pc-hardware-faq/video/part1/ (Англ.) (1997).
  5. Фролов, Олександр; Фролов, Григорій Архітектура відеоадаптерів EGA і VGA - www.frolov-lib.ru/books/bsp/v03/ch5.htm. Програмування відеоадаптерів CGA, EGA і VGA (1992). Статичний - www.webcitation.org/ 61CfCJarD з першоджерела 25 серпня 2011.
  6. Neal, JD VGA Text Mode Operation - osdever.net / FreeVGA / vga / vgatext.htm (Англ.) . FreeVGA Project (1998). Статичний - www.webcitation.org/61CfDI9LP з першоджерела 25 серпня 2011.
  7. Фролов, Олександр; Фролов, Григорій Програми - www.frolov-lib.ru/books/bsp/v03/prilog.htm. Програмування відеоадаптерів CGA, EGA і VGA (1992). Статичний - www.webcitation.org/61CfDiXRo з першоджерела 25 серпня 2011 року.
  8. Dnes, Walter Nicer Console textmodes - www.waltdnes.org / tips_and_tricks / textmodes.html (Англ.) (Недоступна посилання - історія - web.archive.org / web / * / http://www.waltdnes.org/tips_and_tricks/textmodes.html) .
  9. Rollins, Dan INT 10H 11H: EGA / VGA Character Generator Functions - webpages.charter.net/danrollins/techhelp/0151.HTM (Англ.) . Tech Help! (1997). Статичний - www.webcitation.org/61CfEbKS4 з першоджерела 25 серпня 2011.
  10. Abrash, Michael Mode X: 256-Color VGA Magic - www.byte.com/abrash/chapters/gpbb47.pdf (Англ.) . Graphics Programming Black Book (Недоступна посилання - історія - web.archive.org / web / * / http://www.byte.com/abrash/chapters/gpbb47.pdf) (2001).

DVI (роз'єм)