Видеоадаптеры EGA, VGA
 
ВВЕДЕНИЕ
Изначально персональные компьютеры IBM PC комплектовались видеоадаптером MDA с монохромным дисплеем. Этот адаптер имел небольшую разрешающую способность, не мог отражать графическую информацию и был монохромным. Через некоторое время небольшая фирма Hercules Computer Technology выпустила монохромный видеоадаптер Hercules, который имел возможность вывода графики и имел большую разрешающую способностью CGA стал первым цветным видеоадаптером фирмы IBM. Он уже обеспечивал возможность отображать цветную графическую и текстовую информацию, но имел слишком маленькую разрешающую способность. Затем IBM выпустила два, наиболее распространенных в настоящее время видеоадаптера EGA и VGA. Они созданы на другой элементной базе и имеют лучшую, чем у CGA, разрешающую способность при большем числе отображаемых цветов. 
В последнее время различные фирмы — производители видеоадаптеров выпустили большое количество плат, превосходящим по своим возможностям VGA. Эти платы, которые можно объединить под общим названием Super VGA, не имеют пока единого стандарта. 
Фирма IBM начала выпуск нового видеоадаптера XGA, который, как предполагается, станет новым стандартом для компьютеров на базе процессоров Intel 386/486... Видеоадаптер содержит встроенный графический процессор, значительно увеличивающий его возможности и скорость работы. XGA аппаратно поддерживает перерисовку изображений в окнах экрана. При обмене данными между видеопамятью и основной памятью сам XGA вместо центрального процессора реализует управление шиной данных, что позволяет быстро передавать изображение на экран. 
Следует также отметить, что предусмотрена совместимость видеоадаптеров VGA и XGA на уровне регистров. Базовая конфигурация XGA содержит 512 Кбайт видеопамяти, что обеспечивает разрешение 1024*768 пикселов при 16 цветах. Увеличение объема видеопамяти до 1Мбайта при той же разрешающей способности позволяет получить 256 цветов. 
АРХИТЕКТУРА ВИДЕОАДАПТЕРОВ EGA И VGA
Видеоадаптеры EGA и VGA условно делятся на шесть логических блоков, описание которых приведены ниже: 
1. Видеопамять. В видеопамяти размещаются данные, отображаемые адаптером на экране дисплея. Для EGA и VGA видеопамять обычно имеет объем 256 Кбайт, на некоторых моделях SVGA и XGA объем видеопамяти может быть увеличен до 2Мбайт. Видеопамять находится в адресном пространстве процессора и программы могут непосредственно производить с ней обмен данными. Физически видеопамять разделена на четыре банка, или цветовых слоя, использующих совместное адресное пространство. 
2. Графический контроллер. Посредством его происходит обмен данными между центральным процессором и видеопамятью. Аппаратура графического контроллера позволяет производить над данными, поступающими в видеопамять и расположенными в регистрах-защелках простейшие логические операции. 
3. Последовательный преобразователь. Выбирает из видеопамяти один или несколько байт, преобразует их в поток битов, затем передает их контроллеру атрибутов. 
4. Контроллер ЭЛТ. Контроллер генерирует временные синхросигналы, управляющие ЭЛТ. 
5. Контроллер атрибутов. Преобразует информацию о цветах из формата, в котором она хранится в видеопамяти, в формат, необходимый для ЭЛТ. 
6. Синхронизатор. Управляет всеми временными параметрами видеоадаптера. Синхронизатор также управляет доступом процессора к цветовым слоям видеоадаптера. 
Видеопамять адаптеров EGA и VGA разделена на четыре банка, или на четыре цветовых слоя. Эти банки размещаются в одном адресном пространстве таким образом, что по каждому адресу расположено четыре байта (по одному байту в каждом банке) . Какой из банков памяти используется для записи или чтения данных процессором, определяется при помощи установки нескольких регистров адаптера. 
Так как все четыре банка находятся в одном адресном пространстве, то процессор может производить запись во все четыре банка за один цикл записи. Благодаря этому некоторые операции, например заполнение экрана, происходят с большей скоростью. В том случае, когда запись во все четыре банка не требуется, можно разрешать или запрещать запись во все четыре банка при помощи регистра разрешения записи цветового слоя. 
Для операции чтения в каждый момент времени может быть разрешен с помощью регистра выбора читаемого цветового слоя только один цветовой слой. 
В большинстве режимов видеоадаптера видеопамять разделена на несколько страниц. При этом одна из них является активной и отображается на экране. При помощи функций BIOS или программирования регистров видеоадаптера можно переключать активные страницы видеопамяти. Вывод информации может производиться как в активную, так и в неактивные страницы видеопамяти. 
Текстовый режим. 
В текстовых режимах на экране могут отображаться только текстовые символы. Стандартные текстовые режимы позволяют выводить на экран 25 строк по 40 или 80 символов. Для кодирования каждого знакоместа экрана используется два байта: первый из них содержит ASCII код отображаемого символа, второй -атрибуты символа. ASCII коды символов экрана располагаются в нулевом цветовом слое, а их атрибуты — в первом цветовом слое. Атрибуты определяют цвет символа и цвет фона. Благодаря такому режиму хранения информации достигается значительная экономия памяти. При отображении символа на экране происходит преобразование его из формата ASCII в двумерный массив пикселов, выводимых на экран. Для этого преобразования используется таблица трансляции символов (таблица знакогенератора) . Таблица знакогенератора хранится во втором слое видеопамяти. При непосредственном доступе к видеопамяти нулевой и первый цветовые слои отображаются на общее адресное пространство с чередованием байтов из слоев. Коды символов имеют четные адреса, а их атрибуты — нечетные. 
При установке текстовых режимов работы видеоадаптеров EGA и VGA BIOS загружает таблицы знакогенератора из ПЗУ во второй цветовой слой видеопамяти. Впоследствии таблицы используются при отображении символов на экране. Благодаря этому можно легко заменить стандартную таблицу знакогенератора своей собственной. Это широко применяется при русификации компьютеров. 
EGA и VGA обеспечивают возможность одновременной загрузки соответственно четырех и восьми таблиц знакогенераторов в память. Каждая таблица содержит описание 256 символов. Одновременно активными могут быть одна или две таблицы знакогенератора. Это дает возможность одновременно отображать на экране до 512 символов. При этом один бит из байта атрибутов указывает, какая из активных таблиц знакогенератора используется при отображении данного символа. Номера активных таблиц знакогенератора определяются регистром выбора знакогенератора. 
EGA поддерживает два размера для матриц символов: 8х8 и 8х14 пикселов. Один из этих наборов символов автоматически загружается BIOS в видеопамять при выборе текстового режима. Так как VGA имеет большую разрешающую способность, то его матрица символа имеет размеры 9х16. На каждый символ отводится 32 байта. Первая таблица имеет в видеопамяти адреса: 0000h—1FFFh, вторая: 2000h—3FFFh,..., восьмая: E000h—FFFFh. 
Каждый символ, отображаемый на экране в текстовом режиме, определяется не только своим ASCII кодом, но и байтом атрибутов. Атрибуты задают цвет символа, цвет фона, а также некоторые другие параметры. Биты D0—D2 байта атрибутов задают цвет символа, D4—D6 цвет фона. Если активной является одна таблица знакогенератора, то D3 используется для управления интенсивностью цвета символа, что позволяет увеличить количество воспроизводимых цветов до 16. Если одновременно определены две таблицы знакогенератора, то D3 задает таблицу знакогенератора, которая будет использована для отображения данного символа. Бит D7 выполняет две различные функции в зависимости от состояния регистра режима контроллера атрибутов. Данный бит либо управляет интенсивностью цвета фона, увеличивая количество отображаемых цветов до 16, либо разрешением гашения символа, в результате чего символ на экране будет мигать. По умолчанию данный бит управляет разрешением гашения символа. 
Видеопамять в графических режимах: Распределение видеопамяти в графических режимах работы адаптеров отличается от распределения видеопамяти в текстовых режимах. Ниже рассмотрена структура распределения видеопамяти отдельно для каждого графического режима. 
Режимы 4 и 5. 
Это режимы низкого разрешения (320х200) , используются 4 цвета. Поддерживаются видеоадаптерами CGA, EGA и VGA. У EGA и VGA видеоданные расположены в нулевом цветовом слое, остальные слои не используются. Для совместимости с CGA отображение видеопамяти на экране не является непрерывным: первая половина видеопамяти (начальный адрес В800: 0000) содержит данные относительно всех нечетных линий экрана, а вторая (начальный адрес В800: 2000) — относительно всех четных линий. Каждому пикселу соответствует два бита видеопамяти. За верхний левый пиксел экрана отвечают биты D7 и D6 нулевого байта видеопамяти. В режимах 4 и 5 имеются два набора цветов: стандартный и альтернативный: 00 - черный; 01 - светло-синий (зеленый) ; 10 - малиновый (красный) ; 11 - ярко-белый (коричневый) . 
Режим 6. 
Режим 6 является режимом наибольшего разрешения для CGA (640х200) . Видеоадаптеры EGA и VGA используют для хранения информации только нулевой слой. Как и в режимах 4 и 5 первая половина видеопамяти отвечает за нечетные линии экрана, а вторая половина — за четные. В данном режиме на один пиксел отводится один бит видеопамяти. Если значение бита равно 0, то пиксел имеет черный цвет, а если единице — то белый. 
Режимы 0Dh и 0Еh. 
Разрешающая способность в режиме 0Dh составляет 320х200, а в режиме 0Eh 640х200 пикселов. Данный режим поддерживается только видеоадаптерами EGA и VGA. Для хранения видеоданных используются все четыре цветовых слоя. Адресу видеопамяти соответствуют четыре байта, которые вместе определяют восемь пикселов. Каждому пикселу соответствуют четыре бита — по одному из каждого цветового слоя. Четыре бита на пиксел, используемые в данных режимах, позволяют отображать 16 различных цветов. Запись в каждый из этих цветовых слоев можно разрешить или запретить при помощи разрешения записи цветового слоя. Управление доступом к цветовым плоскостям осуществляется при помощи регистров: Адресный регистр графического контроллера, порт вывода для этого регистра 3CEh; биты 0—3 содержат адрес регистра, остальные не используются. Регистр цвета: для доступа к этому регистру значение адресного регистра должно быть 00h, адрес порта вывода для этого регистра 3CFh; биты 0—3 определяют значение для соответствующей плоскости, остальные не используются. Регистр разрешения цвета: для доступа к этому регистру значение адресного регистра должно быть 01h, адрес порта вывода для этого регистра 3CFh; биты 0—3 означают разрешение соответствующего слоя, а остальные не используются. Регистр выбора плоскости для чтения: для доступа к этому регистру значение адресного регистра должно быть 04h, адрес порта вывода для этого регистра 3CFh; биты 0—2 содержат номер плоскости для чтения, а остальные не используются. 
Графический контроллер осуществляет обмен данными между видеопамятью и процессором. Он может выполнять над данными, поступающими в видеопамять, простейшие логические операции: И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, циклический сдвиг. Таким образом, видеоадаптер может выполнять часть работы по обработке видеоданных. Хотя процессор может читать данные только из одного цветового слоя, запись данных в регистры-защелки происходит из всех цветовых слоев. Эту особенность можно использовать для быстрого копирования областей экрана. 
Во время цикла чтения данных из видеопамяти, графический контроллер может выполнять операцию сравнения цветов. В отличие от обычной операции чтения. когда читается только один цветовой слой, при операции сравнения цветов графический контроллер имеет доступ ко всем четырем слоям одновременно. В случае совпадения вырабатывается определенный сигнал. 
Последовательный преобразователь. 
Это устройство запоминает данные, читаемые из видеопамяти в течении цикла регенерации, преобразует их в последовательный поток бит, а затем передает их контроллеру атрибутов. 
Контроллер атрибутов. 
Контроллер атрибутов в графических режимах управляет цветами. Значениям цветовых атрибутов ставится в соответствие определенный цвет при помощи таблицы цветовой палитры. Эта таблица ставит в соответствие четырем битам из видеопамяти шесть битов цветовой информации. Для ЕGA эта информация поступает непосредственно на дисплей, а для VGA — преобразуется в соответствии с таблицей цветов тремя ЦАП в RGB-сигнал и передается на дисплей. 
Контроллер ЭЛТ выполняет следующие функции: вырабатывает сигналы управления работой ЭЛТ, определяет формат экрана и символов текста, определяет форму курсора, управляет световым пером, управляет скроллингом содержимого экрана. 
Синхронизатор управляет всеми временными параметрами видеоадаптера.