Архитектура видеоадаптеров EGA и VGA — КиберПедия 

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Архитектура видеоадаптеров EGA и VGA

2022-10-29 42
Архитектура видеоадаптеров EGA и VGA 0.00 из 5.00 0 оценок
Заказать работу

Архитектура видеоадаптеров EGA и VGA

В этой главе мы расскажем об архитектуре видеоадаптеров EGA и VGA. Видеоадаптеры EGA и VGA можно условно разделить на шесть логических блоков:

     Видеопамять

В видеопамяти размещаются данные, отображаемые адаптером на экране монитора. Для видеоадаптеров EGA и VGA видеопамять, как правило, имеет объем 256 Кбайт. Видеоадаптеры SVGA оснащаются значительно большим объемом видеопамяти. В них может быть установлено больше 4 Мбайт памяти. Видеопамять находится в адресном пространстве процессора. Программы могут непосредственно производить с ней обмен данными.

     Графический контроллер

Используется при обмене данными между центральным процессором компьютера и видеопамятью. Аппаратура графического контроллера позволяет выполнять над данными, поступающими в видеопамять, простейшие логические операции (И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, циклический сдвиг).

     Последовательный преобразователь

Выбирает из видеопамяти один или несколько байт, преобразует их в последовательный поток битов и передает контроллеру атрибутов.

     Контроллер ЭЛТ

Генерирует временные синхросигналы, управляющие ЭЛТ.

     Контроллер атрибутов

Преобразует информацию о цвете из формата, в котором она хранится в видеопамяти, в формат, необходимый для ЭЛТ. Преобразование цветов осуществляется в соответствии с таблицей цветовой палитры (Color Look-up Table). Модифицируя таблицу цветовой палитры, можно выбрать 16 цветов, поддерживаемых видеоадаптером EGA из 64 цветов, которые может отображать цветной улучшенный монитор.

     Синхронизатор

Определяет все временные параметры видеоадаптера. Синхронизатор также управляет доступом процессора к цветовым слоям видеопамяти

 

На рисунке 3.1 представлена блок схема видеоадаптеров EGA и VGA, в которой отображены связи между их основными логическими блоками.

PICTURE._FIG_19.PCX;6";4.308";PCX

Рисунок 3.1 Блок схема видеоадаптеров EGA/VGA

Все сказанное нами остается верно и для видеоадаптеров SVGA. Однако устройство видеоадаптеров SVGA значительно сложнее. Большинство видеоадаптеров SVGA содержат специальный графический сопроцессор, который может выполнять различные функции, например, он может использоваться для рисования различных геометрических фигур, масштабирования участков изображения и т. д.

Монитор

В большинстве мониторов устройство отображения представляет собой электронно-лучевую трубку, газоразрядную или жидкокристаллическую панель. Для стационарных компьютеров обычно используются мониторы с ЭЛТ. Газоразрядные и жидкокристаллические панели применяют в переносных и блокнотных компьютерах.

ЭЛТ состоит из электронной пушки (или из трех пушек для цветного монитора), отклоняющей системы и экрана, покрытого слоем люминофора. Все эти устройства помещены в вакуумный баллон. Электронная пушка служит источником электронов, направляемых при помощи отклоняющей системы в нужную часть экрана, где электроны взаимодействуют с покрытием экрана. В результате взаимодействия испускается видимый свет.

Изображение формируется за счет пробега луча электронов слева направо по горизонтальным линиям экрана (строкам развертки). Чтобы глаз не замечал смены кадров, пробег луча по всему экрану происходит с частотой, большей чем 25 Гц.

Луч электронов начинает пробегать по экрану с верхнего левого угла до правого верхнего угла. Когда луч доходит до правой стороны, он гасится и перемещается на следующую горизонтальную линию, находящуюся под предыдущей линией. После того как луч пробежит по всему экрану, он гасится и перемещается в верхний левый угол. Затем процесс повторяется снова. След от луча на экране образует растр (рис. 3.2).

PICTURE._FIG_20.PCX;6";4.308";PCX

Рисунок 3.2 Экран электронно-лучевой трубки

Изменяя силу тока в луче электронов при формировании им растра, можно менять интенсивность свечения отдельных элементов экрана - пикселов. Данные в видеопамяти как раз и определяют, как модулируется луч электронов во время сканирования экрана.

Для решения задач управления лучом электронов служит большинство регистров контроллера электронно-лучевой трубки (контроллера ЭЛТ).

Видеопамять

Видеоадаптеры EGA и VGA содержат на своей плате до 256 Кбайт оперативной памяти, разделенной на четыре банка или, другими словами, на четыре цветовых слоя. Эти слои памяти размещаются в одном адресном пространстве. Таким образом, что по каждому адресу расположено четыре байта (по байту в каждом слое памяти). Какой из слоев памяти используется для записи или чтения данных процессором, определяется с помощью установки нескольких регистров адаптера.

Так как все четыре слоя памяти находятся в одном адресном пространстве, то процессор может выполнять запись во все четыре слоя за один цикл записи. Благодаря этому некоторые операции, например заполнение экрана, происходят с большой скоростью. В том случае, когда запись во все четыре слоя памяти нежелательна, можно запретить или разрешить запись в отдельные слои памяти, соответствующим образом программируя регистр разрешения записи цветового слоя.

Для операции чтения в каждый момент времени может быть разрешен только один цветовой слой. Читаемый слой определяется регистром выбора читаемого цветового слоя.

В большинстве режимов видеоадаптеров видеопамять состоит из нескольких страниц. При этом одна из них является активной и отображается на экране. Переключать активные страницы видеопамяти можно при помощи функций BIOS или путем непосредственного программирования регистров видеоадаптера.

Информацию можно записывать как в активную, так и в неактивные страницы памяти. Таким образом, можно заранее подготовить несколько страниц памяти (несколько экранов), а затем быстро сменять их на экране монитора.

Видеоадаптер SVGA обычно содержит значительно больше памяти и ее структура может быть сложнее, чем у адаптеров EGA и VGA. Однако при работе видеоадаптера в стандартных режимах можно считать что архитектура видеопамяти SVGA полностью соответствует VGA.

Организация видеопамяти адаптеров SVGA, для режимов с высоким разрешением и большим количеством одновременно отображаемых цветов значительно отличается от организации видеопамяти адаптеров EGA и VGA в стандартных режимах работы. Мы посвятили видеоадаптерам SVGA, в том числе организации видеопамяти, отдельную главу "Видеоадаптеры SVGA".

Текстовый режим

В текстовых режимах на экране могут отображаться только текстовые символы, а также символы псевдографики. Текстовые режимы работы видеоадаптеров рекомендуется использовать всегда, когда приложению не нужно выводить на экран графическую информацию.

Стандартные текстовые режимы работы видеоадаптеров позволяют вывести на экран 25 строк по 40 или 80 символов. Если перепрограммировать некоторые регистры видеоадаптера, то можно увеличить число отображаемых строк для адаптера EGA до 43, а для VGA до 50. Если в компьютере установлен видеоадаптер SVGA, вам могут быть доступны другие текстовые режимы - 80x60, 132x25, 132x43, 132x50, 132x60 символов.

Для кодирования каждого знакоместа экрана (символа) используются два байта. Первый из них содержит ASCII-код отображаемого символа, а второй - атрибуты символа (рис. 3.3). Атрибуты символа определяют его цвет и цвет фона.

PICTURE._FIG_21.PCX;6";4.308";PCX

Рисунок 3.3 Структура видеопамяти в текстовых режимах

ASCII-коды символов экрана располагаются в нулевом цветовом слое, а их атрибуты - в первом цветовом слое. Благодаря такому режиму хранения информации достигается значительная экономия памяти. При отображении символа на экране происходит преобразование его из формата ASCII в двумерный массив пикселов, выводимых на экран. Для этого преобразования используется таблица трансляции символов (таблица знакогенератора). Таблица знакогенератора хранится во втором слое видеопамяти (рис. 3.4).

PICTURE._FIG_06.PCX;6";4.308";PCX

Рисунок 3.4 Преобразование кода ASCII в образ символа на экране

При непосредственном доступе к видеопамяти нулевой и первый цветовые слои отображаются на общее адресное пространство. При этом происходит чередование байтов из нулевого и первого слоев. Коды символов имеют четные адреса, а их атрибуты - нечетные (рис. 3.5).

PICTURE._FIG_22.PCX;6";4.308";PCX

Рисунок 3.5 Отображение цветовых слоев

Ниже приведен дамп видеопамяти в текстовом режиме с разрешением 80х25 символов:

Адрес      0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
-----------------------------------------------------------------------------
B800:0000 91 07 E2 07 E0 07 AE 07-AA 07 A0 07 20 07 AD 07 С.т.р.о.к.а..н.
B800:0010 AE 07 AC 07 A5 07 E0 07-20 07 30 07 20 07 20 07 о.м.е.р..0...
B800:0020 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0030 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0040 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0050 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0060 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0070 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0080 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0090 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........

B800:00A0 91 07 E2 07 E0 07 AE 07-AA 07 A0 07 20 07 AD 07 С.т.р.о.к.а..н.
B800:00B0 AE 07 AC 07 A5 07 E0 07-20 07 31 07 20 07 20 07 о.м.е.р..1...
B800:00C0 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:00D0 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:00E0 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:00F0 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0100 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0110 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0120 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........
B800:0130 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07........

Байты кодов символов из нулевого цветового слоя видеопамяти чередуются с байтами атрибутов символов из первого цветового слоя. Байты кодов символов расположены по четным адресам, а байты атрибутов, которые для данного участка видеопамяти имеют значение 07h - по нечетным.

Знакогенератор

При установке текстовых режимов работы видеоадаптеров BIOS загружает таблицы знакогенератора из ПЗУ во второй цветовой слой видеопамяти. Впоследствии эти таблицы используются для отображения символов на экране монитора.

Благодаря этому, можно легко заменить стандартную таблицу знакогенератора своей собственной. Эта особенность, широко применяется при русификации компьютеров. У видеоадаптера CGA таблицы знакогенератора расположены в ПЗУ, поэтому изменить образы символов текстового режима нельзя.

Видеоадаптеры обеспечивают возможность одновременной загрузки в видеопамять нескольких различных таблиц знакогенератора. Видеоадаптер EGA позволяет загрузить четыре таблицы, а видеоадаптеры VGA и SVGA - восемь.

Каждая такая таблица знакогенератора содержит описание 256 символов. Активными могут быть одна или две таблицы знакогенератора. Это дает возможность одновременно отображать на экране до 512 различных символов.

Один бит из байта атрибутов указывает, какая из двух активных таблиц знакогенератора используется при отображении данного символа. Номера активных таблиц знакогенератора определяются регистром выбора знакогенератора. Этот регистр будет описан ниже.

Рисунок 3.6 иллюстрирует использование двух таблиц знакогенератора. В верхней части рисунка символ, имеющий код ASCII 31h, отображается на экране при помощи первой таблицы знакогенератора. В нижней части рисунка символ с тем же кодом ASCII отображается при помощи третей таблицы знакогенератора, и имеет другую форму.

PICTURE._FIG_23.PCX;6";4.308";PCX

Рисунок 3.6 Активные таблицы знакогенераторов

Видеоадаптер EGA поддерживает два размера для матриц символов - стандартный и улучшенный. Стандартный размер составляет 8 пикселов в ширину и 8 пикселов в высоту, а улучшенный - 8 пикселов в ширину и 14 пикселов в высоту. Один из этих наборов символов автоматически загружается BIOS в видеопамять при выборе текстового режима. Так как адаптеры VGA и SVGA имеют большую разрешающую способность, то их набор символов имеет в ширину 9 пикселов, а в высоту - 16.

Адреса таблиц знакогенератора для видеоадаптеров EGA, VGA и SVGA приведены в следующей таблице:

 

Первая таблица знакогенератора Вторая таблица знакогенератора
Символ ASCII 0  0000h-001Fh Символ ASCII 0 2000h-201Fh
Символ ASCII 1  0020h-003Fh Символ ASCII 1 2020h-203Fh
Символ ASCII 2     0040h-005Fh Символ ASCII 2 2040h-205Fh
...      ...        ...     ...       
Символ ASCII 255 1FE0h-1FFFh Символ ASCII 255 3FE0h-3FFFh
Третья таблица знакогенератора Четвертая таблица знакогенератора
Символ ASCII 0  4000h-401Fh Символ ASCII 0 6000h-601Fh
Символ ASCII 1  4020h-403Fh Символ ASCII 1 6020h-603Fh
Символ ASCII 2  4040h-405Fh Символ ASCII 2 6040h-605Fh
...      ...        ...     ...       
Символ ASCII 255 5FE0h-1FFFh Символ ASCII 255 7FE0h-7FFFh
Пятая таблица знакогенератора (только VGA) Шестая таблица знакогенератора (только VGA)
Символ ASCII 0  8000h-801Fh Символ ASCII 0 A000h-A01Fh
Символ ASCII 1  8020h-803Fh Символ ASCII 1 A020h-A03Fh
Символ ASCII 2  8040h-805Fh Символ ASCII 2 A040h-A05Fh
...      ...        ...     ...       
Символ ASCII 255 9FE0h-9FFFh Символ ASCII 255 BFE0h-BFFFh
Седьмая таблица знакогенератора (только VGA) Восьмая таблица знакогенератора (только VGA)
Символ ASCII 0  C000h-C01Fh Символ ASCII 0 E000h-E01Fh
Символ ASCII 1  C020h-C03Fh Символ ASCII 1 E020h-E03Fh
Символ ASCII 2  C040h-C05Fh Символ ASCII 2 E040h-E05Fh
...      ...        ...     ...       
Символ ASCII 255 DFE0h-DFFFh Символ ASCII 255 FFE0h-FFFFh

 

Как видно из этой таблицы, на каждый символ отводится 32 байта. Самый простой способ загрузки собственных таблиц знакогенератора во второй слой видеопамяти заключается в использовании функций BIOS. Мы продемонстрируем его позже в главе "Русификация видеоадаптера".

Атрибуты символов

Внешний вид символа, отображаемого на экране в текстовом режиме, определяется не только его кодом ASCII, но и байтом атрибутов. Атрибуты задают цвет символа, цвет фона, а также некоторые другие параметры:

 

Биты байта атрибутов Назначение
D2-D0 Цвет символа
D3 Интенсивность символа и выбор таблицы знакогенератора
D6-D4 Цвет фона символа
D7 Мигание символа или интенсивность фона символа

 

Биты D0-D2 байта атрибутов определяют цвет символа, а биты D4-D6 цвет фона, на котором отображается символ. Таким образом, можно независимо задавать до 23 = 8 различных цветов для текста и фона.

Бит D3 играет различную роль в зависимости от числа активных таблиц знакогенератора. Если активной является одна таблица, бит D3 используется для управления интенсивностью цвета символа, что позволяет увеличить количество воспроизводимых цветов от 8 до 16.

Если одновременно определены две таблицы знакогенератора, то бит D3 также задает таблицу знакогенератора, которая будет использована при отображении данного символа.

Бит D7 выполняет две различные функции в зависимости от состояния регистра режима контроллера атрибутов. Данный бит управляет либо интенсивностью цвета фона, увеличивая количество одновременно отображаемых цветов до 16, либо разрешением гашения символа, в результате чего символ на экране монитора будет мигать. По умолчанию D7 бит управляет разрешением гашения символа (миганием).

В следующей таблице представлено соответствие цвета символа и цвета фона значению поля цвета символа байта атрибутов:

 

Код цвета в байте атрибутов Стандартный цвет Цвет с повышенной интенсивностью
000 Черный Серый
001 Синий Светло-синий
010 Зеленый Светло-зеленый
011 Морской волны Голубой
100 Красный Светло-красный
101 Фиолетовый Малиновый
110 Коричневый Желтый
111 Белый Ярко-белый

Режимы 4 и 5

Это режимы низкого разрешения - 320х200 пикселов. Используются 4 цвета. Режимы поддерживаются видеоадаптерами CGA, EGA, VGA и SVGA. У адаптеров EGA, VGA и SVGA видеоданные расположены в нулевом цветовом слое. Остальные три слоя не используются.

Для совместимости с видеоадаптером CGA, отображение видеопамяти на экран не является непрерывным. Первая половина видеопамяти (начальный адрес B800:0000h) содержит данные обо всех нечетных линиях экрана, а вторая половина (начальный адрес B800:2000h) - относительно всех четных линий. Каждому пикселу изображения соответствуют два бита видеопамяти. За верхний левый пиксел экрана отвечают биты D7 и D6 нулевого байта видеопамяти. На рисунке 3.7 изображено соответствие видеопамяти пикселам экрана.

PICTURE._FIG_57.PCX;6";4.308";PCX

Рисунок 3.7 Структура видеопамяти для режимов 4 и 5

Если вы желаете выводить информацию на экран монитора непосредственно через видеопамять, то вам необходимо уметь определять биты, которые управляют каждым пикселом изображения. В общем случае по координатам пиксела нужно вычислить адрес байта видеопамяти и номера битов в нем, управляющие данным пикселом.

Следующие формулы позволяют определить смещение байта от начала станицы видеопамяти и номера битов в нем, управляющие пикселом с координатами (x,y):

Если y четное число, то смещение байта = 50h*(y/2)+(x/4)
Если y нечетное число, то смещение байта = 2000h+50h*((y-1)/2)+(x/4)

Номер первого бита = 7-mod(x/4)*2

В режимах 4 и 5 доступны два набора цветов - стандартный и альтернативный. Для выбора набора цветов можно воспользоваться функцией 0Bh прерывания INT 10h. Ниже представлена таблица соответствия значений битов, определяющих пиксел, его цвету:

 

Значение битов пиксела Стандартный цвет Альтернативный цвет
00 Черный Черный
01 Светло-синий Зеленый
10 Малиновый Красный
11 Ярко-белый Коричневый

Режим 6

Режим 6 (640х200) является режимом наибольшего разрешения для видеоадаптера CGA. В этом режиме видеоадаптеры EGA, VGA и SVGA используют для хранения информации только нулевой слой памяти.

На рисунке 3.8 представлено соответствие видеопамяти и пикселов экрана. Как и в режимах 4 и 5, первая половина видеопамяти содержит данные обо всех нечетных линиях экрана, а вторая половина - обо всех четных линиях.

В режиме 6 на один пиксел отводится один бит видеопамяти. Таким образом, каждый байт видеопамяти управляет восьмью пикселами. Если значение бита видеопамяти, отвечающего за данный пиксел, равно нулю, то пиксел имеет черный цвет, если единице - белый. За верхний левый пиксел экрана отвечает бит D7 в нулевом байте видеопамяти, то есть самый старший его бит.

PICTURE._FIG_58.PCX;6";4.308";PCX

Рисунок 3.8 Структура видеопамяти в режиме 6

При непосредственном доступе к видеопамяти вы можете воспользоваться следующими формулами:

Если y четное число, то смещение байта = 50h*(y/2)+(x/8)
Если y нечетное число, то смещение байта = 2000h+50h*((y-1)/2)+(x/8)

Номер бита = 7-mod(x/8)

Эти формулы позволяют определить для пиксела, имеющего координаты (x,y), смещение от начала станицы видеопамяти байта и номер бита в нем, управляющего данным пикселом.

Режимы 0Dh и 0Eh

Разрешающая способность в режиме 0Dh составляет 320 пикселов по горизонтали и 200 пикселов по вертикали, а в режиме 0Eh соответственно 640 и 200 пикселов.

Режимы 0Dh и 0Eh поддерживают только видеоадаптеры EGA и VGA. На рисунке 3.9 представлена структура видеопамяти для этого режима.

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

Каждому пикселу соответствует четыре бита - по одному биту из каждого цветового слоя. Четыре бита на пиксел, используемые в данных режимах, позволяют одновременно отображать пикселы 16 различных цветов.

PICTURE._FIG_10.PCX;6";4.308";PCX

Рисунок 3.9 Структура видеопамяти в режимах 0Dh и 0Eh

Следующие формулы позволяют определить смещение байта от начала станицы видеопамяти и номер бита в нем, управляющего пикселом с координатами (x,y):

Смещение байта = 50h*y+x/8

Номер бита = 7-mod(x/8)

Запись в каждый из четырех слоев видеопамяти можно разрешить или запретить при помощи регистра разрешения записи цветового слоя. Смотри раздел "Регистры видеоадаптеров EGA, VGA и SVGA".

Режим 0Fh

Графический монохромный режим с разрешением 640х350 пикселов. Данный режим поддерживают только видеоадаптеры EGA, VGA и SVGA.

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

На рисунке 3.10 представлена структура видеопамяти для режима 0Fh.

ICTURE._FIG_43.PCX;6";4.308";PCX

Рисунок 3.10 Структура видеопамяти режима 0Fh

Следующие формулы позволяют определить смещение байта от начала станицы видеопамяти и номер бита в нем, управляющего пикселом с координатами (x,y):

Смещение байта = 50h*y+x/8

Номер бита = 7-mod(x/8)

Режим 10h

Графический цветной режим с разрешением 640х350 пикселов. Данный режим поддерживают только видеоадаптеры EGA, VGA и SVGA.

Для хранения видеоданных используются четыре цветовых слоя. Каждому пикселу соответствует по одному биту из каждого цветового слоя. Четыре бита на пиксел позволяют отображать 16 различных цветов. Запись в каждый из этих четырех слоев можно разрешить или запретить при помощи регистра разрешения записи цветового слоя.

На рисунке 3.11 представлена структура видеопамяти для режима 10h.

PICTURE._FIG_10.PCX;6";4.308";PCX

Рисунок 3.11 Структура видеопамяти режима 10h

Если вы желаете выводить информацию на экран монитора непосредственно через видеопамять, необходимо уметь определять биты, которые управляют каждым пикселом изображения. Следующие формулы позволяют определить смещение байта от начала станицы видеопамяти и номер бита в нем, управляющего пикселом с координатами (x,y):

Смещение байта = 50h*y+x/8

Номер бита = 7-mod(x/8)

Режим 11h

Графический цветной режим с разрешением 640х480 пикселов. Данный режим поддерживают только видеоадаптеры VGA и SVGA.

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

На рисунке 3.12 представлена структура видеопамяти для режима 11h.

PICTURE._FIG_11.PCX;6";4.308";PCX

Рисунок 3.12 Структура видеопамяти режима 11h

При непосредственном доступе к видеопамяти вы можете воспользоваться следующими формулами:

Смещение байта = 50h*y+x/8

Номер бита = 7-mod(x/8)

Формулы позволяют определить для пиксела, имеющего координаты (x,y), смещение от начала станицы видеопамяти байта и номер бита в нем, управляющего данным пикселом.

Режим 12h

Режим 12h похож на режим 10h, за исключением того, что он имеет большую разрешающую способность - 640х480 пикселов. В видеопамяти задействованы все четыре цветовых слоя. Структура видеопамяти показана на рисунке 3.13.

PICTURE._FIG_10.PCX;6";4.308";PCX

Рисунок 3.13 Структура видеопамяти режима 12h

Формулы, используемые для вычисления битов, управляющих данным пикселом экрана, соответствуют формулам режима 10h.

Режим 13h

Этот режим, как и режим 12h, поддерживается только видеоадаптерами VGA и SVGA. Он обеспечивает отображение 256 различных цветов при разрешающей способности 320х200 пикселов.

Структура видеопамяти приведена на рисунке 3.14. Как видно из рисунка, в этом режиме видеопамять организована линейно. Каждый пиксел определяется одним байтом.

PICTURE._FIG_12.PCX;6";4.308";PCX

Рисунок 3.14   Структура видеопамяти в режиме 13h

Следующая формула позволяет определить смещение от начала видеопамяти байта, управляющего пикселом с координатами (x,y):

Смещение байта = 140h*y+x

 

 

Видеоадаптеры SVGA

Сразу после появления видеоадаптера VGA многие фирмы начали выпуск новых моделей видеоадаптеров, обеспечивающих отображение большего количества цветов и большую разрешающую способность. Такие видеоадаптеры получили общее название Super VGA или SVGA.

Подавляющее большинство видеоадаптеров SVGA обеспечивают полную совместимость с VGA на уровне регистров. Поэтому все программное обеспечение, разработанное для видеоадаптера VGA, работает с видеоадаптерами SVGA без дополнительных изменений.

Естественно, чтобы расширить возможности видеоадаптера VGA, пришлось дополнить его новыми регистрами. Видеоадаптеры SVGA имеют значительно больше регистров, чем простые видеоадаптеры VGA. Чтобы видеоадаптер SVGA смог проявить все свои возможности, необходимо, чтобы программное обеспечение правильно использовало все регистры видеоадаптера.

К сожалению, SVGA не является стандартом, наподобие EGA или VGA. Различные модели видеоадаптера SVGA обладают различным набором регистров, расположенных по разным адресам и выполняющих различные функции. Это значительно затрудняет создание программ, использующих все возможности SVGA, так как такая программа должна правильно определить тип вашего видеоадаптера и работать с ним соответствующим образом.

Ассоциация VESA разработала стандарт на функции BIOS, позволяющие управлять видеоадаптерами SVGA. Текущая версия стандарта VESA не позволяет реализовать все возможности современных видеоадаптеров, например, отображать геометрические фигуры с использованием аппаратных возможностей акселераторов. Мы опишем стандарт VESA и приведем несколько примеров программирования видеоадаптеров SVGA при помощи функций BIOS.

Самые широкие возможности для использования видеоадаптеров SVGA предоставляет операционная система Windows. В ней используются специальные драйверы, выполняющие всю работу по программированию видеоадаптеров на аппаратном уровне. Обычно драйверы разрабатываются самой фирмой создавшей видеоадаптер. Поэтому кропотливая работа с регистрами адаптера скрыта от программистов, разрабатывающих программы Windows. Они имеют дело с хорошо документированными высокоуровневыми функциями графического интерфейса.

Видеопамять SVGA

Видеоадаптеры SVGA превосходят VGA по разрешению экрана и количеству одновременно отображаемых цветов.

 

Лучшие режимы VGA Типичные режимы SVGA
640 x 480; 16 цветов 800 x 600; 256, 64 К, 16,7 М цветов
320 x 200; 256 цветов 1024 x 768; 256, 64 К, 16,7 М цветов
  1280 x 1024; 256, 64 К, 16,7 М цветов

 

Чтобы иметь возможность отображать большое количество цветов при большой разрешающей способности, видеоадаптер SVGA должен иметь значительно больше видеопамяти, чем адаптер VGA. Например, для реализации режима с разрешением 1024 x 768 пикселов и возможностью одновременного отображения 64 К цветов необходима видеопамять объемом 1,6 Мбайт.

Для доступа центрального процессора к видеопамяти обычно резервируется адресное пространство размером всего 64 Кбайт. Как же процессор получает доступ к видеопамяти, объем которой для некоторых режимов достигает 4 Мбайт? Существует несколько различных подходов к решению этой проблемы, которые могут комбинироваться.

Слоеный пирог

В большинстве стандартных режимов адаптеров EGA и VGA видеопамять организована из четырех слоев. По каждому адресу расположены сразу четыре байта. Благодаря специальным схемам видеоадаптер может получить доступ к отдельным слоям памяти.

Простейший путь втиснуть в адресное пространство объемом 64 Кбайт больше памяти лежит в увеличении количества слоев видеопамяти. Действительно у некоторых моделей видеоадаптера SVGA видеопамять организована в 8 и даже в 16 слоев. Каждый байт видеопамяти определяет 8 пикселов. Восемь слоев памяти позволяют закодировать 256 возможных цветов для пиксела, а шестнадцать слоев - 65536 различных цветов.

Однако увеличение числа слоев влечет за собой усложнение аппаратуры видеоадаптера и ее удаление от стандарта адаптера VGA, регистры которого рассчитаны только на четыре слоя памяти.

Больше цветов больше бит

Многие режимы видеоадаптера SVGA позволяют одновременно отображать на экране больше чем 256 различных цветов. Естественно что для этого каждый пиксел должен быть представлен большим количеством бит.

 

Количество различных цветов Количество бит для кодировки пиксела
256 8
32768 15
65536 16
16777216 24
4294967296 32

 

Рассмотрим 256-цветный режим видеоадаптера VGA. Каждый пиксел экрана представлен 8 битами данных видеопамяти. Видеоадаптер VGA содержит таблицу цветов (набор из 256 регистров ЦАП), которые согласно значениям, записанным в ней преобразует 8 битные данные видеопамяти в три 6-битных сигнала. Эти три сигнала поступают на три ЦАП и вырабатывающие красную, зеленую и синюю компоненты, определяющие цвет пиксела. Благодаря применению таблицы цветов вы можете выбрать для одновременного отображения на экране монитора любые 256 цветов из 262144 возможных.

Видеоадаптеры SVGA для каждого пиксела используют больше чем 8 бит. Обычно пиксел определяется 15, 16 или 24 битами. Естественно, что в этом случае использование таблицы цветов адаптера VGA затруднено. Например, для режима 65536 цветов (16 бит на пиксел) требуется увеличить размер таблицы цветов до 65536 18-битных регистров. Если адаптер SVGA кодирует пиксел 24 битами, то придется увеличивать размерность таблицы цветов с 18 до 24 или выше.

Поэтому в большинстве режимов SVGA реализована схема прямого кодирования цвета (Direct Color Mode). Биты, определяющие пиксел, группируются на три основные группы, непосредственно определяющие красную, зеленую и синюю компоненты цвета. Данные из этих трех групп передаются на три ЦАП и формируют видеосигнал. Таблица цветов не используется.

В некоторых режимах SVGA существует дополнительная, четвертая группа бит, также соответствующая каждому пикселу. Как правило, четвертая группа бит не используется. Некоторые модели видеоадаптеров могут использовать ее по своему усмотрению.

Например, на видеоадаптере Diamond Stealth 64, в режиме 110h, соответствующему спецификации VESA, для кодирования одного пиксела отводится два байта (рис. 7.1). Они разделены на четыре группы. Три из них имеют размер 5 бит и отвечают за красный, зеленый и синий компоненты цвета пиксела. Четвертая группа, резервная, состоит из одного бита. На рисунке 7.1 резервная группа отмечена символом 'X'.

Рисунок 7.1 Формат видеопамяти, 15 бит на пиксел

Таким образом, в режиме 110h видеоадаптер может отображать пикселы 25+5+5 = 32768-и различных цветов.

В режиме 111h на каждый пиксел также как и в режиме 110h отводится 2 байта, однако они имеют другой формат (рис. 7.2). Резервное поле отсутствует. За счет этого увеличен размер поля, управляющего зеленым компонентом цвета пиксела. Поэтому, в данном режиме видеоадаптер может отображать пикселы 25+6+5 = 65536-и различных цветов.

Рисунок 7.2 Формат видеопамяти, 16 бит на пиксел и резервное поле

Чтобы видеоадаптер мог одновременно отображать на экране 16777216 различных цветов, необходимо, чтобы для кодирования каждого пиксела отводилось 24 бита. Обычно видеоадаптеры используют для этого два различных формата кодирования пиксела (рис. 7.3 и 7.4)

Рисунок 7.3 Формат видеопамяти, 24 бит на пиксел

В режимах 112h, 115 и 118h на один пиксел отводится 4 байта (рис. 7.4). Они разделены на четыре группы по 8 бит в каждой. Три группы отвечают за красный, зеленый и синий компоненты цвета пиксела. Четвертая группа резервная. Такой формат позволяет одновременно отображать на экране монитора пикселы 28+8+8 = 16777216 различных цветов.

Рисунок 7.4 Формат видеопамяти, 24 бит на пиксел и резервное поле

Интересно отметить, что даже в режиме 118h, имеющем разрешение 1024x768 пикселов, на экране отображается 786432 пиксела. То есть меньше, чем количество цветов, которое видеоадаптер может одновременно отобразить на экране монитора.

Стандарт VESA

Стандарт VESA описывает расширение прерывания BIOS номер 10h (VESA BIOS Extention - VBE), отвечающего за управление видеоадаптерами. Поддержка VBE обычно включается производителями видеоадаптеров в ПЗУ самого адаптера или поставляется в виде отдельной резидентной программы. Во втором случае перед использованием функций VBE необходимо загрузить данную резидентную программу в оперативную память компьютера. Ниже мы полностью опишем функции VBE версии 1.2 и опишем некоторые функции VBE версии 2.0.

Перед вызовом функций VBE следует записать в регистр AH значение 4Fh. Если ваша реализация VBE поддерживает данную функцию, то в регистре AL возвращается значение 4Fh. Если функция не реализована, тогда в регистре AL возвращается значение, отличное от 4Fh.

Результат выполнения функции записывается в регистр AH. В случае успешного завершения функции в регистре AH возвращается нулевое значение. Если в регистре AH записано значение 1h, значит функция завершилась с ошибкой. И, наконец, если в регистре AH возвращается значение 2h, значит аппаратура видеоадаптера не поддерживает данную функцию.

Возможна ситуация, когда VBE может выполнить запрашиваемую функцию, а аппаратура видеоадаптера - нет. В этом случае после завершения функции регистр AH содержит значение 4Fh, а регистр AH - 2h.

Получить информацию о реализации VBE и видеоадаптере

Функция позволяет получить различную информацию о возможностях VBE и видеоадаптера. Вы должны использовать данную функцию, чтобы определить, наличие VBE и его версию. Формат вызова функции отличается для VBE версии 2.0 и VBE более ранних версий.

В следующей таблице представлен формат вызова функции для VBE версии 1.2 и более ранних версий:

 

На входе: AH 4Fh
  AL 00h
  ES:DI Указатель на буфер размером 256 байт (формат буфера см. ниже). В этот буфер записывается различная информация о видеоадаптере SVGA и реализации VBE
На выходе: AL 4Fh
  AH 0, в случае успешного завершения, 1 в случае ошибки
Примечание:   Значения остальных регистров сохраняются

 

Теперь приведем расширенный формат этой же функции соответствующий VBE версии 2.0:

 

На входе: AH 4Fh
  AL 00h
  ES:DI Указатель на буфер размером 512 байт (формат буфера см. ниже). Первые четыре байта буфера должны содержать строку "VBE2". В буфер записывается различная информация о видеоадаптере SVGA и реализации VBE
На выходе: AL 4Fh
  AH 0, в случае успешного завершения, 1 в случае ошибки
Примечание:   Значения остальных регистров сохраняются

 

В следующей таблице представлен формат буфера, содержащего информацию об адаптере SVGA и реализации VBE. В таблице <


Поделиться с друзьями:

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.13 с.