Графический видеобуфер
Графический видеобуфер содержит значения величин цвета пикселей изображения для отображения VGA контроллером на мониторе. Как показано на рис. 3.17, видеобуфер обеспечивает разрешение 320*240 пикселей. Каждый пиксель имеет координаты Х и У. Причем, координата (0,0) соответствует левому верхнему углу изображения. Так как VGA контроллер поддерживает разрешение экрана 640*480, каждый пиксель из видеобуфера дублируется в двух направлениях, когда эти пиксели отображаются на VGA мониторе.
Рис. 3.17 – Координаты графического буфера
Рис. 3.18 показывает формат задания цвета пикселей. Так, цвет каждого пикселя задается 16 – битным полусловом с 5 битами для задания голубого и красных компонентов и 6 битами для зелёного цвета.
Рис. 3.18 – Кодирование пикселей
Как показано на рис. 3.19, пиксели адресуются в памяти посредством использования комбинации базового адреса и смещения X,Y.
Рис. 3.19 – Адресация в графическом буфере
В процессорной системе «DE2-70 Media Computer» базовый адрес 0х08000000 графического буфера соответствует начальному адресу статической памяти, установленной на плате. В соответствии с этой схемой, пиксель с координатами (0,0) имеет адрес 0х08000000, пиксель (1,0) имеет адрес базовый +00000000_00000001_0=0х08000002, пиксель (0,1) имеет адрес базовый + 00000001_000000000_0=0х08000400 и пиксель с координатами (319,239) имеет адрес базовый + 11101111_100111111_0= 0х0803BE7E.
Графический буфер включает программный интерфейс в форме набора регистров. Эти регистры представлены на рис 3.20.
Рис. 3.20 – Регистры видеопорта
Регистр с именем Buffer доступен только для чтения. Он содержит базовый адрес первого пикселя видеокадра, отображаемого в текущий момент времени. Регистр BackBufferпозволяет менять начальный адрес отображаемого кадра под программным управлением. Он доступен для записи и чтения. Чтобы изменить отображаемый на экране кадр, вначале необходимо записать его адрес в BackBuffer. Затем выполнить операцию записи в регистр Buffer. Записываемое значение не используется контроллером. Вместо этого контроллер интерпретирует операцию записи в регистр Buffer как требование поменять содержимое регистров Buffer и BackBuffer. Переключение не выполняется немедленно. Переключение будет выполнено после того, как контроллер DMA выполнит вывод последнего пикселя текущего кадра. Пока контроллер не сделает этого, бит S в регистре Statusбудет установлен в единицу, и лишь после завершения вывода текущего кадра произойдет переключение кадров и бит S сбросится в ноль. Регистр Resolutionявляется только читаемым. Он содержит в разрядах 15-0 разрешение экрана по оси Х, и в разрядах 31-16 разрешение по оси У, соответственно. Регистр Status доступен только для чтения. Он отражает информацию о состоянии контроллера DMA. Поля, содержащиеся в этом регистре, представлены на рис. 3.21.
Рис. 3.21 – Поля регистра Status видеопорта
Дата добавления: 2015-05-30; просмотров: 889;