Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Лекция 4 Понятие видеосистемы компмьютера





 

 

Видеокарты EGA, VGA и SVGA

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

Из рассмотрения BGI видно, что видеокарты EGA и VGA могут работать в разных режимах. Режим обозначается номером и определяется разрешением экрана и количеством цветов.

 

Номер режима Разрешение Кол-во цветов
0Dh 320*200  
0Eh 640*200  
0Fh 640*350  
10h 640*350  
11h (VGA) 640*480  
12h (VGA) 640*480  
13h (VGA) 320*200  

 

Каждая видеоплата содержит собственный BIOS для работы с ней и поддержки основных своих функций. Через BIOS можно определить тип адаптера - EGA или VGA, установить нужный режим, системный шрифт заданного размера (8,14 или 16 пикселов высоты), палитру (аналог setrgbpalette). Для 16-цветных режимов под каждый пиксел отводится 4 бита (2**4=16). Однако эти биты располагаются не последовательно в одном байте, а разнесены по 4 блокам (битовым или цветовым плоскостям) видеопамяти. Вся видеопамять (например, 256 К) делится на 4 равные части. Каждому пикселу соответствует по 1 биту каждой плоскости, причем эти биты расположены одинаково относительно начала плоскости (параллельно). Когда процессор выполняет операции чтения/записи видеобуфера по некоторому адресу, этот адрес относится не к одному, а к 4 байтам, каждый из которых размещается в своей битовой плоскости. При выполнении операции чтения из видеобуфера (например, командами MOV reg,mem; LODS; CMP reg,mem и др.) из него извлекается не 1, а 4 байта. Но данные пересылаются не в процессор, а в четыре 8-битовых регистра-защелки (latch - задвижка, щеколда). Каждый из этих регистров соответствует своей битовой

плоскости. При выполнении операций записи в видеопамять производится параллельная модификация всех 4 битовых плоскостей. Таким образом, за один раз обрабатывается информация о 8 пикселах. Если к видеобуферу обратиться при помощи команд, оперирующих словами, а не байтами, результаты могут быть ошибочными, т.к. алгоритм выполнения операций процессора и видеокарты разный, и результат одной части операции перезаписывается другой ее частью.

Регистры видеокарты делятся на группы. Каждой группе соответствует пара последовательных портов (порт адреса и порт значения). Для записи в регистр значения надо записать сначала номер регистра в порт адреса, затем значение в следующий порт. Добраться до регистров видеокарты можно с помощью ассемблера или функций языка С inportb (чтение байта из аппаратного порта), outportb (запись в аппаратный порт). Прототипы функций - в <dos.h>.

Передачей данных между процессором, регистрами-защелками и видеобуфером управляет графический контроллер. В адаптере EGA это 2 микросхемы или отдельная СБИС, в адаптере VGA он входит в СБИС видеографической матрицы.

Графический контроллер имеет 9 регистров, адресуемых через порт 3CE. Значения регистров задаются через порт 3CF. Содержимое регистров графического контроллера управляет обработкой данных регистров-защелок при чтении/записи. Часть операций в качестве операндов используют байт, т.е. воздействуют отдельно на каждый регистр. Операндом других операций является пиксел, т.е. содержимое регистров-защелок рассматривается как набор из 8 пикселов. Такие операции воздействуют на каждый пиксел в отдельности.

Т.к. разрядность процессора не более 32, требуется специальное формирование значения для пересылки в процессор. Оно осуществляется с помощью масок и зависит от режима чтения/записи. Режим задается в специальном регистре графического контроллера. Этот регистр имеет номер 5. Имеется 2 режима чтения и 3 режима записи для EGA. Для VGA имеется еще один режим записи. Бит 3 регистра определяет режим чтения (0 или 1), биты 1 и 0 - режим записи. Остальные биты этого регистра обычно нулевые.

В режиме чтения 0 в процессор передается значение одного из 4 регистров-защелок. Указателем номера регистра-защелки служит специальный регистр считываемого банка (еще одно название битовой плоскости). Этот регистр имеет номер 4. Такое последовательное чтение битовых плоскостей применяется, например, при записи изображения на диск.

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

Режим записи 0 является наиболее сложным, но дает большие возможности. Операция записи процессора инициирует комбинацию байтных и пиксельных операций. Байт данных от процессора можно использовать для модификации содержимого любых или всех битовых плоскостей и одновременно некоторое заданное значение пиксела можно использовать для модификации всех или любых пикселов. Значение пиксела - его цвет. В операции задействованы 4 служебных регистра графического адаптера, вместе с байтом данных от процессора воздействующих на регистры-защелки. Например, регистр битовой маски (номер 8) позволяет выделить нужный пиксел, чтобы сопоставить ему определенный цвет. Регистр маски плоскости (относится к группе регистров, адресуемых через порт 3С4, порт данных - 3С5) защищает от изменения определенные плоскости. Для формирования значений используются также сдвиговые операции.

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

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

Режим записи 3 поддерживается только адаптером VGA. В [ 3,4 ] излагается способ формирования данных для записи в битовые плоскости.

Работа VGA в 256-цветном режиме с разрешением 320*200 имеет особенности. Для одновременного отображения такого количества цветов под каждый пиксел отводится 8 бит. Эти биты идут последовательно, образуя 1 байт. Плоскости не используются, видеопамять начинается с адреса 0хА000:0. Точке с координатами (x,y) соответствует байт памяти по адресу 320*y+x. Это стандартный режим с номером (mode)13.

Существуют также нестандартные режимы адаптера VGA при работе с 256 цветами. Они программируются на ассемблере и позволяют установить повышенное разрешение (320*240 или 360*480). Здесь используются битовые плоскости, в которых в определенном порядке хранятся пикселы. В одной битовой плоскости хранятся пикселы 0,4,8 и т.д., в другой - 1,5,9 и т.д. Здесь также задействованы все служебные регистры, но меняется интерпретация находящихся в видеопамяти значений.

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

В 256-цветном режиме в адаптерах SVGA под каждый пиксел отводится 1 байт, вся видеопамять разбивается на банки одинакового размера (обычно по 64 К). Область адресного пространства 0хА000:0 - 0хА000:0хFFF соответствует выбранному банку. Ряд карт позволяет работать сразу с двумя банками.

Практически все различия между картами заключаются в установке режима с заданным разрешением и установке банка с заданным номером. Можно построить библиотеку, распознающую наличие основных SVGA карт и обеспечивающую работу с ними. Связь - через порты 0х3С4 и 0х3СЕ, работать можно на Си с привлечением ассемблера.

Ассоциацией стандартов в области видеоэлектроники VESA (Video Electronic Standarts Association) сделана попытка стандартизации работы с различными SVGA-платами путем добавления в BIOS платы (у видеоадаптеров - свой BIOS) некоторого стандартного набора функций, обеспечивающего получение необходимой информации о карте, установку заданного режима и банка памяти. При этом вводится стандартный набор расширенных режимов. Номер режима - 16-битовое число, биты с 9 по 15 зарезервированы и должны быть равны 0, бит 8 для VESA-режимов = 1, для «родных» режимов карты = 0.

Таблица основных VESA-режимов:

 

Номер Разрешение Бит на пиксел К-во цветов Номер Разрешение Бит на пиксел К-во цветов
100h 640 * 400     111h 640 * 480   64 К
101h 640 * 400     112h 640 * 480   16 М
102h 800 * 600     113h 800 * 600   32 К
103h 800 * 600     114h 800 * 600   64 К
104h 1024 * 768     115h 800 * 600   16 М
105h 1024 * 768     116h 1024 * 768   32 К
106h 1280 * 1024     117h 1024 * 768   64 К
107h 1280 * 1024     118h 1024 * 768   16 М
10Dh 320 * 200   32 К 119h 1280 * 1024   32 К
10Eh 320 * 200   64 К 11Ah 1280 * 1024   64 К
10Fh 320 * 200   16 М 11Bh 1280 * 1024   16 М
110h 640 * 480   32 К        

 

В [ 1 ] приведены файлы, содержащие структуры и функции для работы с VESA-совместимыми адаптерами. Здесь же приведена программа, выдающая информацию по всем доступным VESA-режимам.

Современные SVGA-карты поддерживают т.н. непалитровые режимы. Здесь для каждого пиксела вместо индекса в палитре непосредственно задается его RGB-значение. Обычно такими режимами являются HiColor (15 или 16 бит на пиксел) и TrueColor (24 бита на пиксел). Видеопамять этих режимов устроена аналогично 256-цветным SVGA: под каждый пиксел отводится 2 байта для HiColor и 3 байта для TrueColor, байты расположены подряд и сгруппированы в банки. Наиболее проста организация TrueColor (16 млн. цветов) - 1 байт под каждую из компонент цвета. Для HiColor под каждый пиксел отводится 2 байта. Здесь возможны варианты:

· каждая компонента занимает по 5 бит, последний бит не используется. Это дает всего 32 000 цветов;

· красная и синяя компоненты занимают по 5 бит, зеленая - 6 бит. Это дает всего 64 000 цветов.

 







Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.