Лекции по ПУ2 (780326), страница 5
Текст из файла (страница 5)
Интенсивность каждого пиксела на ЭЛТ управляется содержимым соответствующих пикселов в каждой из N битовых плоскостей. В соответствующую позицию регистра загружается двоичная величина из каждой плоскости. Двоичное число, получившееся в результате, интерпретируется как уровень интенсивности между 0 и 2 5N 0-1. Всего можно получить 2 5N 0 уровней интенсивности за счет увеличения необходимого объема памяти буфера кадра в N раз.
Число доступных уровней интенсивности можно увеличить, незначительно расширив требуемую для этого память и воспользовавшись таблицей цветов.
После считывания из буфера кадра битовых плоскостей получившееся число используется как индекс в таблице цветов. В этой таблице содержится 2 5N 0 элементов. Каждый ее элемент может содержать W бит, причем W>N, т.е. можно получить 2 5W 0 значений интенсивности, но одновременно будут доступны только 5 02 5N 0 из них. Для получения дополнительных интенсивностей таблицу цветов следует изменить (перезагрузить).
Поскольку существует три основных цвета, можно реализовать простой цветной буфер кадра с тремя битовыми плоскостями, по одной для каждого из основных цветов. Каждая битовая плоскость будет управлять индивидуальной электронной пушкой для каждого из трех основных цветов, используемых в видеотехнике (красный, зеленый, синий).
Три основных цвета, комбинируясь на ЭЛТ, дают 8 цветов:
Для каждой из трех цветовых пушек могут использоваться дополнительные битовые плоскости. Если используется по 8 плоскостей на каждый цвет (буфер с 24 битовыми плоскостями), то каждая такая группа может генерировать 256 оттенков красного, зеленого или синего цвета, и в общей сложности можно получить 16777216 = 2 524 цветов.
ВИДЕОСИСТЕМЫ КОМПЬЮТЕРОВ СЕРИИ IBM AT
Из-за большого количества пикселов в растровых графических устройствах трудно достичь производительности, необходимой для работы в реальном времени, а также приемлемой скорости регенерации (смены кадра). Например, если среднее время доступа к каждому индивидуальному пикселу равно 200 нс, то для доступа ко всем пикселам кадра размером 512 Х 512 потребуется 0,0524 с. Это эквивалентно скорости регенерации 19 кадров в секунду, что значительно ниже минимально необходимой скорости 30 кадров в секунду. В буфере кадра размером 1024 Х 1024 более 1 млн. пикселов, и при среднем времени доступа 200 нс требуется 0,21 с для доступа ко всем пикселам. Это составляет 5 кадров в секунду.
Буфер кадра 4096 Х 4096 содержит свыше 16 млн. пикселов. Для достижения скорости регенерации 30 кадров в секунду при таком растре требуется средняя эффективная скорость доступа 2 нс/пиксел.
Работа в реальном времени с растровыми графическими устройствами осуществляется путем одновременного доступа к группам по 16, 32, 64 и более пикселов. В случае цветного буфера кадра пиксел может содержать до 32 бит, при этом все битовые плоскости для каждого пиксела доступны одновременно.
Хотя производительности, необходимой для работы в реальном масштабе времени с приемлемыми скоростями регенерации, на растровых устройствах достичь труднее, чем на векторных дисплеях с регенерацией, на них легче изображать сплошные фигуры с плавными переходами цветов.
ВИДЕОКОНТРОЛЛЕРЫ EGA, VGA И SVGA
Видеоконтроллеры IBM AT и совместимых с ними машин могут работать в двух режимах - текстовом и графическом. В связи с тем, что стандартные процедуры BIOS, предназначенные для вывода на экран текста и графики, выполняются медленно (вследствие допущенных на начальном этапе разработки операционной системы MS DOS ошибок и просчетов), на практике применяются только процедуры переключения видеорежимов и процедуры управления цветовой палитрой. Все остальные операции выполняются путем прямого взаимодействия с аппаратурой видеоадаптеров. Реализовать переключение видеорежима напрямую через регистры очень трудно, так как в этой операции участвуют некоторые регитры, для которых нет универсального общего стандарта (т.е. для контроллеров разных фирм требуется загрузка в эти регистры различных значений).
Программирование видеоадаптеров усложняется тем, что при их разработке широко использовались методы "экономии адресного пространства": один и тот же регистр может выполнять различные функции в зависимости от состояния управляющих регистров адаптера, и выполняемой над регистром операции (запись или считывание информации).
При работе в текстовых режимах контроллеры EGA, VGA И SVGA мониторов отображают на видеопамять область адресного пространства B8000h-BFFFFh. Начало этой области соответствует левому верхнему углу экрана. Каждому символу соответствует два байта памяти: младший байт кодирует вид символа, а старший байт - цвет символа и цвет фона, на котором будет отображен символ.
РАБОТА ВИДЕОКОНТРОЛЛЕРОВ EGA И VGA В ГРАФИЧЕСКИХ РЕЖИМАХ
Графические режимы контроллеров EGA, VGA и SVGA можно разделить на 2 основные группы: режимы с 16 цветами и режимы с 256 цветами. Эти две группы сильно отличаются друг от друга по организации видеопамяти.
Видеорежимы с 16 цветами
Контроллер EGA работает в режимах с разрешением 640х200 и 640х350 точек, контроллер VGA имеет дополнительный режим 640х480 точек, а контроллеры SVGA часто могут также реализовывать режимы 800х600 и 1024х768 точек. К сожалению, видеопамять в этих режимах имеет очень неудобную и морально устаревшую организацию, что очень сильно замедляет вывод графики. В настоящее время эти видеорежимы используются только для создания простых статических изображений (чертежей и диаграмм).
В режимах с 16 цветами память разделена на 4 видеоплоскости: по одной на каждый из основных цветов и одна плоскость служит для кодирования яркости. Байт данных в видеоплоскости кодирует информацию для восьми расположенных рядом по горизонтали точек (пикселов).
Сдвигающий регистр служит в основном в качестве буфера для хранения байта данных, поступившего от процессора. Операция сдвига данных используется крайне редко, так как значительно удобнее выполнять ее в процессоре.
Регистры-защелки служат для временного хранения старого содержимого 4-х байтов с одинаковыми адресами из 4-х видеоплоскостей: часто необходимо изменять только некоторые из 8 точек, описываемых этими байтами данных, а остальная информация должна оставаться неизменной. Чтобы в защелках сохранилось старое значение данных, перед операцией записи в видеопамять должна быть выполнена операция чтения из видеопамяти по тому же адресу.
Для определения того, какие точки должны быть изменены, а какие - сохранены, используется №2регистр битовой маски№0. Бит регистра битовой маски определяет, будет ли записана в соответствующий бит видеопамяти информация из АЛУ или регистра-защелки:
Видеопамять
Арифметико-логическое устройство позволяет выполнять операции И (AND), ИЛИ (OR) и ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) над содержимым регистра-защелки и поступившим от процессора байтом. Это прозволяло создавать примитивные анимационные эффекты, однако в настоящее время такие приемы практически не применяются.
Недостатком графических 16-цветных режимов является необходимость интенсивной работы с большим числом рагистров при выводе в видеопамять текстов и графики. На одну операцию вывода в видеопамять приходится одна операция чтения из видеопамяти и одна-две операции записи в регистры, что замедляет работу с видеопамятью в десятки раз (из-за конструктивных особенностей контроллеров EGA и VGA обращение к регистру выполняется в несколько раз медленнее, чем обращение к видеопамяти).
Рассмотрим наиболее часто используемые регистры:
"Первый регистр входного состояния" (Input Status Register One) расположен по адресу 3DAh. Бит 3 в этом регистре устанавливается в 1 в течение обратного хода луча по кадру. При выполнении различных видеоэффектов типа прокрутки изображения или перезагрузки палитры используемых цветов, а также при создании движущихся изображений состояние этого регистра приходится постоянно контролировать, так как в некоторые регистры контроллера разрешается записывать данные только в течение обратного хода луча.
"Регистр адреса указателя последовательности" (Sequenser Address Register), расположенный по адресу 3C4h, определяет, какой из 5 регистров, ассоциированных с портом 3C5h, будет доступен для операций ввода-вывода.
Чтобы получить доступ к Регистру маскирования растра (Map Mask Register), необходимо записать по адресу 3C4h число 2. Каждому из 4 младших битов регистра маскирования растра поставлена в соответствие одна битовая матрица - запись 1 в любой из этих битов делает соответствующую матрицу недоступной. Старшие 4 бита не используются. Регистр маскирования растра позволяет копировать сложные графические изображения из ОЗУ ЭВМ в видеопамять поочередно для каждой видеоплоскости, что позволяет выводить на экран заранее созданные и записанные на диск картинки-слайды.
Регистр 3D4h определяет, какой из регистров контроллера электронно-лучевой трубки будет доступен для чтения-записи информации через регистр 3D5h.
Так, для доступа через порт 3D5h к "Регистру начального старшего адреса" (Start Address High Register) необходимо записать в порт 3D4h число 0Ch, а для доступа к"Регистру начального младшего адреса" (Start Address Low Register) - число 0Dh. В эти регистры записывается адрес ячейки памяти первого отображаемого на экране монитора символа или пикселя. Оба регистра доступны для чтения и записи и используются для плавной вертикальной и грубой горизонтальной "прокрутки" изображения на экране и для переключения видеостраниц.
Для доступа к регистру "Смещение" (Offset Register), который определяет объем видеопамяти, выделенной для хранения одной строки видеоизображения, необходимо загрузить в регистр 3D4h код 13h. Этот регистр предназначен для поддержки режима плавной прокрутки изображения на экране - длина строки, благодаря этому регистру, может быть значительно больше высвечиваемой ее части.
Регистр "Адрес графики" расположен по адресу 3CFh и определяет, какой из следующих регистров подключен к порту 3CEh.
Регистр "Установка/сброс" с индексом 0 может быть использован для выбора битовых матриц в режиме постоянного сброса или установки. Для определении битовой матрицы как "установленной" в соответствующий бит записывается 1. Если бит установлен в 0, то соответствующая матрица находится в режиме сброса. (Содержимое этого регистра имеет значение только в режиме записи 0).
Регистр "Разрешение установки/сброса" (индекс 1) разрешает (при 1 в соответствующем бите) или запрещает (при 0) режим установки/сброса для каждой из 4 битовых матриц.
Регистр "Циклический сдвиг данных" с индексом 3 обеспечивает сдвиг данных на заданное число позиций вправо перед записью их в ячейку памяти, а также позволяет осуществлять, вместо простой записи информации в память, операции И, ИЛИ, и исключающее ИЛИ над содержимым ячейки памяти и передаваемыми из процессора данными.
Регистр "Выбор считываемой матрицы" с индексом 4 определяет номер считываемой битовой плоскости в режиме чтения 0. Номер битовой плоскости кодируется в младших двух битах регитра, а старшие 6 бит не используются.
Регистр "Режим" имеет индекс 5. Биты 0 и 1 этого регистра определяют режим записи:
- в режиме 0 данные, помещаемые в память адаптера, записываются в каждую разрешенную матрицу;
- в режиме 1 в память заносится без изменения содержимое регистров-защелок (этот режим предназначен для копирования информации с одного места видеопамяти в другое);
- в режиме 2 регистр битовой маски применяется для запрещения или разрешения установки отдельных пикселей в заданный цвет;
- в режиме 3 выполняется операция И над содержимым регистра установки/сброса и битовой маской, а результат заносится в видеопамять.
Бит 3 определяет режим считывания данных из видеопамяти. При 0 в этом бите процессор прочитает байт из видеплоскости, номер которой задан в регистре "выбор считываемой матрицы". При 1 в этом бите в считанном процессором байте в 1 будут установлены только те биты, для которых цвет пикселей соответствует значению, указанному в регистре "Сравнение цвета".
Регистр "Смешанные данные" с индексом 6 управляет типом режима: текстовый или графический", а также определяет начальный адрес видеопамяти. Регистр "Цвет безразличен" с индексом 7 позволяет игнорировать установленные в регистре "Сравнение цветов" значения для заданных видеоплоскостей. Регистр "Битовой маски" с индексом 8 разрешает (при 1 в соответствующем бите) или запрещает (при 0) модификацию определенных битов в байте видеопамяти, к которому обращается процессор.
Порт 3C0h использует иной метод экономии пространства адресов. Перед обращением к этому порту неоходимо выполнить операцию считывания из порта 3DAh. Затем в порт 3C0h заносится индекс требуемого порта, а при следующем обращении к порту 3C0h будет произведена запись в выбранный регистр. Так, для обращения к регистру "Горизонтальное поэлементное панарамирование" необходимо вначале задать индекс 13h. Регистр поэлементного панарамирования используется для плавной прокрутки изображения по горизонтали в 16-цветных графических режимай, когда каждому байту битовой плоскости соответствует 8 пикселов на экране (и изменение одних только регистров начального адреса приводило бы к скачку сразу на 8 пикселей).