Устройства графического вывода
Контроллеры с такой цветовой глубиной обычно предоставляют по одному байту для кодирования каждой из трех цветовых составляющих цветного изображения. Устройства с меньшими цветовыми глубинами часто реализуют более сложную схему кодирования цвета, называемую отображением цветов (color mapping). Значение пиксела при этом представляет собой индекс в специальной таблице, палитре. Элементы палитры – это значения компонентов пиксела.
Рис. 9.29. Битовые плоскости
Большинство контроллеров включают в себя также более или менее сложную логику управления содержимым видеобуфера со стороны центрального процессора. Простейшим случаем такого управления является отображение видеобуфера на адресное пространство системной шины. Это, привлекательное во многих отношениях, решение не всегда применимо, например, если адресное пространство процессора слишком мало или плотно занято, либо устройство не подключается непосредственно ни к системной, ни к периферийной шине (например, контроллеры жидкокристаллических дисплеев, предназначенных для использования во встраиваемых приложениях, используют для общения с микропроцессором шину PC или нестандартные протоколы последовательных портов).
При простой нехватке адресного пространства нередко видеобуфер отображают на адресное пространство не целиком, а частями, банками. При этом контроллер должен иметь специальный регистр – селектор банка.
Более радикальное решение, применимое даже при подключении через последовательный порт, состоит в том, чтобы предоставить процессору два регистра – адрес в видеопамяти и регистр данных, соответствующий ячейке видеопамяти по этому адресу. Это решение можно считать вырожденным случаем банков видеопамяти, когда банк имеет размер один байт. При этом требуется всего два регистра в адресном пространстве ввода-вывода (этот метод редко применяется с видеобуферами объемом более 64 Кбайт), и доступ к видеобуферу замедляется минимум вдвое. При использовании последовательных шин и портов адрес и данные передаются последовательно. Многие графические контроллеры с такой организацией предоставляют различные способы доступа с автоинкрементом, позволяющие передать в буфер последовательность байтов без явного доступа к регистру адреса.
Контроллеры с битовыми плоскостями часто предоставляют групповые операции над байтами, кодирующими биты смежных пикселов.
Контроллеры, применяемые в современных персональных компьютерах и рабочих станциях, содержат более или менее сложные видеопроцессоры, способные без участия ЦПУ рисовать в видеобуфере различные графические примитивы, начиная от прямых линий и окружностей, и заканчивая проекциями и/или фотореалистичными изображениями трехмерных объектов, описываемых языком OpenGL.
Видеоконтроллеры представляют собой довольно сложные устройства. Подробные описания современных видеоконтроллеров можно найти во многих доступных книгах, например в [Гук 2000]. В документе [www.microchip.com PICMicrol описывается встроенный контроллер жидкокристаллического дисплея микроконтроллера PIC.