Принцип работы видеоадаптера
Введение
Прежде, чем стать изображением на мониторе, двоичные цифровые данные обрабатываются центральным процессором, затем через шину данных направляются в видеоадаптер, где они обрабатываются и преобразуются в аналоговые данные и уже после этого направляются в монитор и формируют изображение. Сначала данные в цифровом виде из шины попадают в видеопроцессор, где они начинают обрабатываться. После этого обработанные цифровые данные направляются в видеопамять, где создается образ изображения, которое должно быть выведено на дисплее. Затем, все еще в цифровом формате, данные, образующие образ, передаются в RAMDAC, где они конвертируются в аналоговый вид, после чего передаются в монитор, на котором выводится требуемое изображение.
Таким образом, почти на всем пути следования цифровых данных над ними производятся различные операции преобразования, сжатия и хранения. Оптимизируя эти операции, можно добиться повышения производительности всей видеоподсистемы. Лишь последний отрезок пути, от RAMDAC до монитора, когда данные имеют аналоговый вид, нельзя оптимизировать.
Рассмотрим подробнее этапы следования данных от центрального процессора системы до монитора.
1. Скорость обмен данными между CPU и графическим процессором напрямую зависит от частоты, на которой работает шина, через которую передаются данные. Рабочая частота шины зависит от чипсета материнской платы. Для видеоадаптеров оптимальными по скорости являются шина PCI и AGP. При существующих версиях чипсетов шина PCI может иметь рабочие частоты от 25Mhz до 66MHz, иногда до 83Mhz (обычно 33MHz) , а шина AGP работает на частотах 66MHz и 133MHz.
Чем выше рабочая частота шины, тем быстрее данные от центрального процессора системы дойдут до графического процессора видеоадаптера.
2. Ключевой момент, влияющий на производительность видеоподсистемы, вне зависимости от специфических функций различных графических процессоров, это передача цифровых данных, обработанных графическим процессором, в видеопамять, а оттуда в RAMDAC. Самое узкое место любой видеокарты - это видеопамять, которая непрерывно обслуживает два главных устройства видеоадаптера, графический процессор и RAMDAC, которые вечно перегружены работой. В любой момент, когда на экране монитора происходят изменения (иногда они происходят в непрерывном режиме, например движение указателя мыши, мигание курсора в редакторе и т.д.) , графический процессор обращается к видеопамяти. В то же время, RAMDAC должен непрерывно считывать данные из видеопамяти, чтобы изображение не пропадало с экрана монитора. Поэтому, чтобы увеличить производительность видеопамяти, производители применяют различные технические решения. Например, используют различные типы памяти, с улучшенными свойствами и продвинутыми возможностями, например VRAM, WRAM, MDRAM, SGRAM, или увеличивают ширину шины данных, по которой графический процессор или RAMDAC обмениваются информацией с видеопамять, используя 32 разрядную, 64 разрядную или 128 разрядную видеошину.
Чем более высокое разрешение экрана используется и чем больше глубина представления цвета, тем больше данных требуется передать из графического процессора в видеопамять и тем быстрее данные должны считываться RAMDAC для передачи аналогового сигнала в монитор. Нетрудно заметить, что для нормальной работы видеопамять должна быть постоянно доступна для графического процессора и RAMDAC, которые должны постоянно осуществлять чтение и запись.
В нормальных условиях доступ RAMDAC к видеопамяти на максимальной частоте возможен лишь после того, как графический процессор завершит обращение к памяти (операцию чтения или записи) , т.е. RAMDAC вынужден дожидаться, когда наступит его очередь обратиться с запросом к видеопамяти для чтения и наоборот.
Архитектура простейших видеоадаптеров
АРХИТЕКТУРА ВИДЕОАДАПТЕРА CGA
Видеоадаптер построен на основе микросхемы Motorola 6845 или ее аналога. Микросхема содержит контроллер ЭЛТ, управляющий форматом экрана, курсором, световым пером и цветовыми характеристиками изображения. Адаптер CGA имеет 16Кбайт видеопамяти, память доступна процессору c адреса B800:0000h. В некоторых режимах память разделена на несколько страниц.
В ТЕКСТОВОМ режиме, отображаемая информация записывается в виде двухбайтовых слов. Младшее слово содержит ASCII код символа, старшее - атрибуты:
· бит 7 - мигание символа или интенсивность фона,
· 6..4 - цвет фона,
· 3 - интенсивность символа,
· 2..0 - цвет символа.
Каждому слову соответствует определенная позиция на экране. При формировании изображения содержимое видеопамяти считывается и преобразуется знакогенератором в двумерный графический эквивалент символа. Таблицы знакогенератора недоступны процессору.
В ГРАФИЧЕСКОМ режиме в видеопамяти хранится информация о каждом пикселе изображения. Информация и содержимом строк с четными и нечетными номерами хранится в разных областях памяти (четные строки с адреса B800:0000h, нечетные - B800:2000h).
В режимах 4 и 5 (320*200) на одну точку отводится два бита. В режиме 6 (640*200) - один; левому верхнему углу соответствуют старшие биты младшего байта области видеопамяти.
В адаптере "HERCULES" видеопамять, в графическом режиме 720*348, поделена на четыре части. Строки изображения последовательно чередуясь выбираются из областей памяти: B800:0000h, B800:2000h, B800:4000h, B800:6000h.
АРХИТЕКТУРА ВИДЕОАДАПТЕРОВ EGA И VGA.
Условно в структуре видеоадпреров можно выделить шесть блоков:
1 Видеопамять. Размер видеопамяти может достигать 256Кбайт и больше. Физически память состоит из четырех блоков, называемых СЛОЯМИ. Слои памяти с точки зрения процессора располагаются в одном и том же адресном пространстве.
2 Графический контроллер. Обеспечивает связь процессора со слоями видеопамяти. Может выполнять над поступившими данными операции И, ИЛИ, ИСКЛ.ИЛИ, ЦИКЛ.СДВИГ. Операция выполняется над поступившим байтом и регистрами-защелками, хранящими результат последнего обращения к буферу.
3 Последовательный преобразователь. Формирует поток битов для отображения на экране ЭЛТ.
4 Контроллер ЭЛТ. Генерирует сигналы управления ЭЛТ, формирует курсор, обслуживает световое перо и осуществляет вертикальную свертку (скроллинг) содержимого экрана.
5 Контроллер атрибутов. Управляет цветом. Значениям цветовых атрибутов ставится в соответствие определенный цвет при помощи таблицы цветовой палитры (Color Lock-up Table). В адаптере VGA по значению цвета далее выбирается один из регистров цифроаналогового преобразователя, который и формирует аналоговый RGB сигнал.
6 Синхронизатор. Осуществляет синхронизацию работы устройств видеоадаптера и управляет непосредственной записью информации в цветовые слои.
Структура видеопамяти
В ТЕКСТОВОМ режиме для кодирования символа используются два байта. ASCII код символа располагается в нулевом цветовом слое, его атрибуты - в первом. Таблица знакогенератора хранится во втором цветовом слое. При непосредственном доступе к памяти байты нулевого и первого цветовых слоев чередуются в адресном пространстве, что обеспечивает совместимости с CGA.
Размер второго цветового слоя позволяет загрузить сразу несколько таблиц знакогенератора. Активными могут быть одновременно две таблицы, что позволяет отображать 512 различных символа. Текущая таблица определяется одним из битов атрибутов символа. Для описания одного символа отводится 32 байта таблицы знакогенератора.
Формат байта атрибутов символа, в целом, совпадает с форматом, принятым для CGA, но бит 3 может использоваться для указания одной из двух активных таблиц знакогенератора.
В ГРАФИЧЕСКОМ режиме использование слоев зависит от установленной разрешающей способности.
РЕГИСТРЫ ВИДЕОАДАПТЕРОВ EGA И VGA
Программировани
Современные адаптеры эмулируют регистры адаптеров более низкого уровня.
Доступ к большинству регистров осуществляется в два этапа: вначале через один порт указывается номер выбираемого регистра; затем через другой порт выполняется обмен. Такое решение позволяет сократить число портов. Многие регистры доступны только по записи, что приводит к неудобствам в мультизадачных системах. При работе с конкретным видеоадаптером необходимо ознакомиться с соответствующей документацией.
ПРИМЕЧАНИЕ: Далее приведено назначение некоторых регистров адаптеров EGA и VGA.
Внешние регистры
Управляют работой видеоадаптера в целом. Адресуются непосредственно по адресам своих портов.
MOR (Miscellaneous Output Register) - Регистр определения режима работы.
7 - полярность сигнала вертикальной синхронизации (0+, 1-);
6 - полярность сигнала горизонтальной синхронизации (0+, 1-);
5 - используется для перекомпоновки слоев в различные адреса памяти (для текстового режима =1);
4 - =1 дисплей управляется дополнительным устройством;
3..2 - управление тактовой частотой:
00 - 640 или 320 столбцов, 10 - внешний генератор,
01 - 720 столбцов, 11 - резерв.
1 - =0 доступ к видеопамяти запрещен;
0 - выбор диапазона адресов регистров FCR, ISR1 и контроллера ЭЛТ: =0 3Bxh, =1 3Dxh.
FCR (Feature Control Register) - Регистр управления дополнительным устройством. Биты D1, D0 регистра передаются на разъем дополнительного устройства FC1, FC0. Бит D3 =0.
ISR0 (Input Status Register 0) - Регистр состояния 0.
7 - обратный ход кадровой развертки (генерируется прерывание IRQ2);
6..5 - значение выходных линий FEAT1, FEAT0 дополнительного устройства;
4 - значение бита переключателя на плате EGA, номер бита соответствует значениям битов 3..2 регистра MOR. Для VGA бит определяет какой дисплей используется (монохромный или цветной);
3..0 - не используются.
ISR1 (Input Status Register 1) - Регистр состояния 1.
7..6 - не используются;
5..4 - диагностические (соответствуют двум выходным сигналам);
3 - обратный вертикальный ход луча;
2 - состояние переключателя светового пера;
1 - значение триггера светового пера;
0 - =1 когда адаптер читает данные из видеобуфера.
Регистры контроллера ЭЛТ
Эти регистры управляют сигналами синхронизации, необходимыми для формирования растра, определяют формат данных на экране и форму курсора. Изменение настройки большинства регистров приводит к потере работоспособности адаптера. Доступ к регистрам осуществляется через индексный порт и порт данных.
HTR (Horizontal Total Register) - Общая длина горизонтальной развертки. Длина указывается в знакоместах с учетом времени, необходимого на обратный ход луча.
HDER (Horizontal Display Enable Register) - Число отображаемых в строке знакомест, уменьшенное на единицу.
SHBR (Start Horizontal Blank Register) - Начало импульса гашения лучагоризонтальной развертки.
EHBR (End Horizontal Blank Register) - Конец импульса гашения луча горизонтальной развертки.
7 - =0 для EGA и =1 для VGA;
6..5 - смещение между началом выборки символов и их отображением:
00 - нет, 01 - 1, 10 - 2, 11 - 3 символа; 4..0 - собственно конец импульса.
SHRR (Start Horizontal Retrace Regicter) - рачало импульса горизонтального обраного хода луча.
EHRR (End Horizontal Retrace Register) - Конец импульса горизонтального обратного хода луча.
7 - для EGA управление горизонтальной сверткой,
для VGA пятый бит регистра гашения луча;
6..5 - смещение импульса относительно отображаемого участка развертки: 00 - нет, 01 - 1, 10 - 2, 11 - 3 символа; 4..5 - младшие пять битов конца импульса горизонтальной развертки.
(1) - Общая длительность цикла горизонтальной развертки;
(2) - Отображаемая строка символов;
(3) - формирование "рамки";
(4) - выключение луча;
(5) - начало выбора символов из видеобуфера;
(6) - обратный ход луча.
Регистры синхронизатора
Доступ осуществляется через индексный порт и порт данных. Регистры доступны по записи.
CPWE (Color Plane Write Enable) - Регистр разрешения записи цветового слоя.
7..4 - не используются; 3..0 - =1 разрешено записывать в соответствующий слой.
CGSR (Character Generator Select Register) - Регистрвыборазнакогенератора.
7..6 - не используется;
5..4 - старшие биты номера таблиц;
3..2 - номер таблицы при D3 атрибута = 1;
1..0 - номер таблицы при D3 атрибута = 0;
Доступ осуществляется через индексный порт и порт данных. Использование регистров довольно не опасно. В общем виде графический контроллер работает следующим образом:
1. Байт, записываемый в видеопамять поступает в графический контроллер;
2. В соответствии со значением регистра сдвига и выбора функции происходит циклический сдвиг полученного байта;
3. Затем результат сдвига обрабатывается по функции ИЛИ, И или ИСКЛ.ИЛИ с содержимым регистров-защелок;
4. На основе значений регистров разрешения установки/сброса и регистра установки/сброса данные дополнительно модифицируются;
5. В зависимости от значения регистра битовой маски в слои помешается информация из регистров-защелок или результаты преобразования.
SRR (Set/Reset Register) - Регистр установки/сброса.
7..4 - резерв;
3..0 - записываемое значение в слой при установленном бите регистра разрешения установки/сброса.
SRER (Set/Reset Enable Register) - Регистр разрешения установки/сброса.
7..4 - резерв;
3..0 - =0 - данные для соответствующего слоя берутся от процессора, =1 - данные формируются размножением соответствующего бита регистра установки/сброса.
DRFS (Data Rotate & Function Select) - Регистр циклического сдвига и выбора функции.
7..5 - не используются;
4..3 - функция:
00 - нет операции,
01 - И,
10 - ИЛИ,
11 - ИСКЛ. ИЛИ;
2..0 - величина сдвига (вправо).
BMR (Bit Mask Register) - Регистр битовой маски. Если его бит =0, то соответствующий бит будет записываться из регистра-защелки; иначе бит поступает от процессора.
Регистры контроллера атрибутов
Управляет цветовыми характеристиками изображений. Доступ осуществляется через один порт. Переключение индекс-данные осуществляется при каждой записи в порт. Установку в исходное состояние можно осуществить, прочитав содержимое ISR1.
CPR (Color Palette Register's) - Регистры цветовой палитры (0..15). Формат регистров различен для различных дисплеев.
SBCR (Screen Border Color Register) - Регистрцветарамкиэкрана. Формат эквивалентен формату регистров цветовой палитры.
Регистры цифро-аналогового преобразователя VGA
LTRIR (Look-up Table Read Index Register) - Указывается индекс читаемого регистра палитры.
LTWIR (Look-up Table Write Index Register) - Указывается индекс записываемого регистра палитры.
LTDR (Look-up Table Data Register) - Регистрданныхтаблицыцветов. После установки адреса необходимо выполнить три операции чтения (записи) с интервалом не менее 240нс.
7..6 - не используется;
5..0 - код уровня сигнала