ВИДЕОКОНТРОЛЛЕР
На рис. 2.25 показана характерная структура растровой системы. Фиксированная область памяти системы занята буфером кадра, а видеоконтроллер имеет непосредственный доступ к этой области буфера кадра.
Рис. 2.24. Структура простой растровой графической системы
Рис. 2.25. Структура растровой системы с фиксированной долей памяти системы, предназначенной для буфера кадра Местоположения буферов кадра, а также соответствующие положения на экране записываются в декартовых координатах. В программе-приложении используются команды из графического программного пакета, которые определяют координаты изображаемых объектов относительно начала отсчета декартовой системы координат. Часто при выполнении команд программного пакета в качестве начала координат берется левый нижний угол экрана, хотя обычно мы можем поместить начало координат в любую удобную нам для данного приложения точку. После этого поверхность экрана представляют в виде первого квадранта двухмерной системы координат, где положительные значения х увеличиваются слева направо, а положительные значения у увеличиваются в направлении снизу вверх. Затем положениям пикселей присваиваются целые значения х в диапазоне от 0 до жтах по всему экрану в направлении слева направо и целые значения у, которые изменяются от 0 до угпах в направлении снизу вверх. Однако при таких процессах, как обновление экрана, которые выполняются самими аппаратными средствами, а также некоторыми программными продуктами, положения пикселей отсчитываются от верхнего левого угла экрана.
Рис. 2.26. Декартова система координат с началом отсчета в нижнем левом углу монитора
Рис. 2.27. Основные операции обновления, за которые отвечает видеоконтроллер
На рис. 2.27 схематически изображены основные операции обновления, за которые отвечает видеоконтроллер. Для записи значений координат пикселей на экране используется два регистра. Изначально регистру х присваивается значение 0, а регистру у - значение верхней строки развертки. Затем для этого положения пикселя извлекается содержимое буфера кадра и используется для задания интенсивности луча ЭЛТ. После этого значение в регистре х увеличивается на 1, и весь процесс повторяется для следующего пикселя в верхней строке развертки. Эта процедура продолжается для всех пикселей в верхней строке. После того как будет обработан последний пиксель, регистру х снова присваивается значение 0, а регистру у - значение следующей строки развертки, которая находится ниже верхнего края экрана. Затем по очереди обрабатываются пиксели в этой строке, и эта процедура повторяется для каждой последующей строки развертки. После прохождения всех пикселей в нижней строке развертки видеоконтроллер возвращает регистры к положению первого пикселя в верхней строке развертки, и процесс обновления начинается сначала.
Поскольку экран должен обновляться со скоростью не меньше, чем 60 кадров в секунду, простая процедура, показанная на рис. 2.27, может оказаться невыполнимой для обычных микросхем оперативной памяти, если время выполнения цикла будет слишком большим. Для ускорения обработки пикселей видеоконтроллеры при каждом прохождении могут извлекать из буфера кадра значения нескольких пикселей. Затем интенсивности для нескольких пикселей записываются в отдельный регистр и используются для управления интенсивностью луча ЭЛТ для группы соседних пикселей. После обработки этой группы из буфера кадра извлекается следующий блок значений пикселей.