Растровый (телевизионный) принцип формирования изображения заключается в разложении изображения на горизонтальные строки, состоящие из отдельных элементов. Вывод такого изображения осуществляется независимо от процесса построения с одинаковой скоростью последовательным сканированием по строкам в направлении сверху-вниз от 25 до 80 раз в секунду. В отличие от векторных дисплеев, в силу отделения процесса формирования картины от процесса ее вывода, сложность немерцающего изображения не ограничена.
Хотя телевидение (аналоговое) появилось еще в 30-е годы, использование телевизионного построчного представления изображений в компьтерной графике стало реально возможным с появлением дешевой полупроводниковой памяти для хранения растрового представления и прогрессом в технологии мониторов.
Растровые дисплеи имеют наиболее широкое распространение, что связано со следующими основными свойствами устройств этого класса:
· обеспечивается наивысшее качество при меньшей стоимости,
· полные цветовые возможности и легкость представления
закрашенных поверхностей,
· возможность совместимости с телевидением позволяет
смешивать синтезированные и естественные изображения и
поддерживать новые технологии в телекоммуникациях (видеотекст,
системы Multimedia),
· интерактивная компьтерная графика и обработка изображений могут выполняться в рамках одной системы,
· сложность немерцающего изображения практически неограничена,
· телевизор хорошо знаком каждому как привычный предмет обихода.
Основные компоненты растрового дисплея показаны на рис. 0.9.1. Подсистема создания изображения формирует растровое представление сцены из описания, переданного от компьютера. Это поточечное представление в виде отдельных пикселов (от словосочетания picture element, иногда используется "pel" - "пэл") заносится видеопамять (кадровый буфер, буфер регенерации, битовая карта). Видеопамять непрерывно и независимо от процесса занесения построчно сканируется видеоконтроллером, формирующим сигналы для монитора, выдающего картинку.
Сравнивая с векторными дисплеями (см. рис. 0.8.1, 0.8.5 - ), видим что перечисленные компоненты соответствуют позиции дисплейного генератора. Назначение и архитектура других компонент графической системы, занимающихся геометрическими преобразованиями (если они есть), конечно, подобна, но эти компоненты не являются принципиальными при рассмотрении растрового дисплея.
Видеоконтроллер формирует изображение на экране монитора путем его построчного вывода. При этом точно соблюдает время развертки строки, либо соответствующее телевизионным нормам, либо предопределенным параметрам (ширина полосы, частота строк и кадров и т.д.). Некоторые мониторы для сокращения полосы пропускания используют т.н. чересстрочную развертку (Interlacing), при которой две картинки имеют половинное вертикальное разрешение и выдаются на экран по двум вложенным в друг друга гребенкам строк (рис. 0.9.2). Вначале выдаются строки 1-го полукадра, затем 2-го. Таким образом, при частоте кадров 50 Гц полная смена изображения на экране выполняется с частотой 25 Гц. Такой способ используется в телевещании. Для синтезированных изображений он мало пригоден (при частоте кадров 50 Гц), так как одиночные горизонтальные линии, занимающие ровно одну строку, неприятно и очень утомляюще мерцают.
Время, требуемое для вывода картинки на монитор, определяется частотой строк и кадров, а также временами обратного хода строчной и кадровой разверток (рис. 0.9.3). Например, для телевизионного стандарта в 625 строк длительность строки составляет 64 мкс, из которых 12 мкс (почти 20%) - время обратного хода строчной развертки. Из времени картинки должно забираться время на обратный ход кадровой развертки. В этом случае длительностью в 25 строк.
Важнейшим параметром не только для монитора, но и для растровой системы в целом является время, требуемое на обработку одного пиксела. Время, требуемое на обработку строки аппаратурой дисплея, составляет:
|
Причем для чересстрочной развертки обратный ход кадровой развертки за полную прорисовку картинки выполняется, естественно, дважды.
Так как часть времени строчной развертки тратится на перемещение луча к началу следующей строки (обратный ход строчной развертки, horizontal retrace), то время на обработку одного пиксела составит:
|
В таблице 0.9.1. приведены времена для некоторых мониторов.
f | t полн. | t обр. | t обр. | Черес- | tп на | |
Разрешение | кадр. | строки | строки | кадров | строч- | пиксел |
X×Y | Гц | мкс | мкс | мкс | ность | нс |
512×512 | 30 | 60.4 | 10.9 | 1203 | да | 96.7 |
768×576 | 50 | 64 | 12 | 1612 | да | 70.3 |
1024×768 | 60 | 20.92 | 4 | 600 | нет | 16.52 |
1024×1024 | 60 | 15.69 | 4 | 600 | нет | 11.42 |
1280×1024 | 60 | 15.69 | 4 | 600 | нет | 9.13 |
В мониторах используются кинескопы с прямоугольной областью отображения с соотношением сторон обычно 4:3, что соответствует особенностям зрения человека. Если же для дисплея отношение числа пикселов в строке к числу строк отличается от 4:3, например, 512:512, то для занятия под изображение всей поверхности экрана потребуется сформировать не квадратные, а прямоугольные пикселы. Чтобы картинка выглядела на экране правильно (круг как круг и т.д.) ее потребуется предварительно искажать. Поэтому все современные дисплеи либо имеют соотношение 4:3 (640:480, 768:576, 1280:960 и т.д.), либо занимают под изображение не всю поверхность экрана.
После этих замечаний относительно представления растровых изображений легко сформулировать назначение видеоконтроллера:
· адресация и чтение данных из видеопамяти;
· формирование синхроимпульсов разверток по горизонтали и вертикали, соответствующих формату изображения. Эти синхроимпульсы используются монитором для формирования отклоняющих напряжений;
· управление монитором для задания требуемых цветов и
интенсивностей, цифро-аналоговое преобразование.
Кроме этого, из таблицы 0.9.1. видно, что времена на обработку пиксела существенно меньше, чем времена доступа к динамической полупроводниковой памяти, составляющие 100 нс и более, поэтому видеопамять обычно организована специальным образом, так что из нее читается сразу не один пиксел.
Дополнительно заметим, что пикселы строки отображаются на экран строго последовательно. Поэтому обычным техническим решением является перепись пикселов в быстрый сдвиговый регистр с целью параллельно-последовательного преобразования и формирования сигналов управления цветами и интенсивностями по данным из этого регистра.
Таким образом блок-схема простого видеоконтроллера имеет вид:
Мы, по сути дела, рассмотрели однобитовый растровый дисплей (дисплей с одной битовой плоскостью, одним битовым планом). Увеличивая количество плоскостей мы, естественно, увеличиваем количество отображаемых цветов. Можно выделить два класса цветных растровых дисплеев:
· полноцветные дисплеи, в которых для каждого пиксела сразу хранятся значения R, G, B. Обычно полноцветные дисплеи имеют по 1 байту на цвет. Т.е. объем видеопамяти составит почти 4 Мбайта при полной картинке 1280×1024 специально организованной, быстрой памяти. В таком дисплее на экране одновременно формально может присутствовать до 224яцветов (более 16 миллионов);
· дисплеи с таблицей цветности (ТЦ) (Look up table - LUT),
в которых значение считанного пиксела не сразу передается на
цифро-аналоговое преобразование, а используется как адрес в
таблице цветности. По этому адресу выбираются значения яркостей
по R, G, B и уже они определяют цвет точки. Таким образом, имея
видеопамять в 1 байт на пиксел и таблицу цветности с тремя
байтами на элемент, мы можем одновременно отобразить 256 оттенков
из 224. Основное свойство этого дисплея, однако, состоит не в
том, что экономится память, а в том, что изменяя всего 1-3 байта
в таблице цветности, можно одновременно изменить цвет у всех
точек изображения с одинаковым кодом пиксела, не изменяя
содержимого видеопамяти. С помощью таблицы цветности реализуются
не только различные динамические визуальные эффекты, но
может быть реализована произвольная фильтрация, получены любые
битовые срезы, выполнены преобразования гистограммы без изменения
данных в видеопамяти, а также гамма-коррекция
(см. п. 0.7.5)
Использование таблицы цветности поясняется на рис. 0.9.5.
В дисплее в N битами на пиксел можно запомнить N черно-белых, бинарных или же N/3 RGB картин. Каждая такая картина может отображаться с помощью соответствующей загрузки ТЦ. Если требуется, то их можно даже переключать с тактовой частотой! В случае черно-белого бинарного изображения ТЦ требуется загружать таким образом, чтобы ее элемент, соответствующий 1, содержал значения, дающее либо белый, либо черный оттенок.
Пусть, например, имеем дисплей с шестью битами на пиксел, с нумерацией плоскостей от нуля до пяти. Таблица цветности тогда должна иметь 64 элемента. Предположим, что надо включить изображение с зеленым цветом для плоскости номер ноль, а все остальные выключить. А затем включить красным цветом изображение в битовой плоскости номер один. Соответствующие этому раскраски таблицы цветности будут иметь вид:
Раскраска ТЦ для включения | Раскраска ТЦ для включения | |||||
зеленым цветом изображения | красным цветом изображения | |||||
в плоскости номер 0 | в плоскости номер 1 | |||||
Код пиксела | Значение | Код пиксела | Значение | |||
дес. | двоичный | элемента ТЦ | дес. | двоичный | элемента ТЦ | |
0 | 000000 | 0 0 0 | 0 | 000000 | 0 0 0 | |
1 | 000001 | 0 G 0 | 1 | 000001 | 0 0 0 | |
2 | 000010 | 0 0 0 | 2 | 000010 | R 0 0 | |
3 | 000011 | 0 G 0 | 3 | 000011 | R 0 0 | |
4 | 000100 | 0 0 0 | 4 | 000100 | 0 0 0 | |
. . . | . . . | . . . | . . . | |||
62 | 111110 | 0 0 0 | 62 | 111110 | R 0 0 | |
63 | 111111 | 0 G 0 | 63 | 111111 | R 0 0 |
Во многих приложениях требуются изображения, объекты которых хотя и размещены в пространстве, но не имеют глубины. В этом случае не требуется решение общих задач пересечения поверхностей и удаления невидимых граней. Достаточно просто упорядочить объекты по глубине. К этому классу относятся, например, изображения слоев печатной платы, изображения слоев чертежа, окна системы управления окнами и т.д. Это упорядочение или приоритет может быть реализовано с использованием битовых плоскостей, закрашенных требуемым образом. Так как это не полное решение 3D задачи, то часто говорят об 2.5D изображениях. Если хотим получить эффект перекрытия отдельных прозрачных изображений, то заданному приоритету следует сопоставить соответствующий смешанный цвет в таблице цветности.
Для простоты рассмотрим трехбитовый дисплей. В старшей битовой плоскости разместим изображение А с наибольшим приоритетом, в младшей битовой плоскости - изображение В с наименьшим приоритетом. Возможные значения раскраски таблицы цветности в зависимости от значений пикселов для слоев, перекрывающихся в соответствии с приоритетом и для случая прозрачных слоев приведены ниже:
Значение | Содержимое таблицы | Содержимое таблицы | |
пиксела | цветности при | цветности при | |
перекрытии слоев | прозрачных слоях | ||
0 0 0 | Цвет фона | черный | |
0 0 1 | Цвет картинки В | синий | |
0 1 0 | Цвет картинки Б | зеленый | |
0 1 1 | Цвет картинки Б | изумрудный | |
1 0 0 | Цвет картинки A | красный | |
1 0 1 | Цвет картинки A | пурпурный | |
1 1 0 | Цвет картинки A | коричневый | |
1 1 1 | Цвет картинки A | белый | |
Картинка: | А Б В | Приоритет А > Б > В | Прозрачные слои |
Динамическое изменение соотношений между кодами пикселов и соответствующих им цветам с помощью таблицы цветности позволяет моделировать эффекты движения, причем выполняемые очень быстро, в темпе разверток, а не в темпе генерации примитивов. Например, построим кривую с распределенными вдоль нее значениями кодов пикселов. Меняя элементы ТЦ, соответствующие этим кодам мы можем создавать эффекты ее постепенного построения, движения вдоль нее, рассыпания и т.д.
Другой способ - построим несколько раз кривую. Каждую реализацию своим кодом пикселов. Меняя содержимое таблицы цветности, может создать впечатление перемещения кривой по экрану, в том числе и с оставляемым ею следом.
На уровне видеовывода, кроме цветовых преобразований, могут быть реализованы несложные геометрические преобразования в реальном времени причем также без изменения данных в видеопамяти.
При этом жесткое соответствие 1:1 между адресами пикселов в видеопамяти и их координатами на экране утрачивается и выполняется преобразование окно просмотра в видеопамяти - окно видимости на экране (Widow - Viewport transformation). Обычно это преобразование включает в себя масштабирование, сдвиг и иногда поворот. Масштабирование обычно выполняется в целое число раз (Zoom) и заключается в соответствующем дублировании пикселов в X и Y направлении.
Для реализации сдвига нужны регистр координат и быстрые компараторы, которые сравнивают текущую позицию луча с желаемой новой позицией объекта и управляют адресацией для видеопамяти. Аналогичным образом может выполняться отсечение и вращение на 90.
Иное техническое решение для выполнения плавного масштабирования, перемещения, переворотов и даже произвольных перестановок строк изображения относительно горизонтальной оси и зеркального отображения относительно вертикальной оси предложено и реализовано В.Г. Сизыхом в станциях Гамма-4 и Гамма-Т [10]. Идея состоит в использовании программно загружаемой таблицы, устанавливающей соответствие между строками изображения и адресами видеопамяти, - т.н. таблицы адресов (ТА). Для каждой строки экрана имеется один элемент таблицы, задающий, в частности, адрес видеопамяти, с которого надо начать отображение, и масштаб по Х. Увеличение по оси Y формируется повторением в очередной строке ТА предыдущего адреса видеопамяти. Уменьшение - пропуском очередного адреса. На рис. 0.9.6 приведен пример ТА для видеопамяти 1024×1024 при экранном разрешении 768×576 и выводе нижних 576 строк видеопамяти "вверх ногами" со смещением на 10 пикселов по оси X и единичными масштабами по осям. Начало видеопамяти - левый верхний угол.
Плавное, не целочисленное масштабирование выполняется путем выбрасывания/дублирования не всех, а части пикселов в строке и строк.
Также В.Г. Сизыхом предложен и реализован метод однотонной заливки многоугольников в темпе видеовывода, позволяющий повысить скорость раскраски по максимуму в 768 раз. Для обычных синтезированных сцен повышение скорости более чем в 100 раз. Идея состоит в том, что при выполнении видеовывода строки отличные от нуля коды пикселов "защелкиваются" на регистре и передаются на вывод до тех пока не прийдет код, отличный от установленного. Последовательность закраски следующая:
· кадровый буфер очищается (все пикселы получают значение 0);
· у однотонно закрашенных многоугольников кодом с требуемым
цветом строятся только левые ребра;
· крайние правые ребра прорисовываются кодом отличным от 0, но цвет, соответствующий данному коду, должен совпадать с цветом фона.
На рис. 0.9.7 показано применение данного метода для закраски на белом фоне многоугольника ADCD красным цветом, ADEF - зеленым и EDCG - синим.
Записать элементы ТЦ Построить отрезки
Но- Байты ТЦ AB кодом 2
мер R G B Пояснение BC кодом 1
0 255 255 255 белый CD кодом 4
1 255 255 255 белый DA кодом 2
2 255 000 000 красный DE кодом 4
3 000 255 000 зеленый EF кодом 3
4 000 000 255 синий FA кодом 3
CG кодом 1
GE кодом 1
Модуль генерации изображений растрового дисплея (см. рис. 0.9.1), часто называемый в литературе "image creation system" (ICS), имеет то же назначение что и дисплейный генератор для векторного дисплея. Важнейшее отличие от генератора изображений для векторного дисплея состоит в том, что в растровом дисплее генератор изображения в произвольное время заносит его представление в видеопамять (т.н. функционально-растровое преобразование).
Вывод изображения на экран осуществляется независимо работающей подсистемой отображения, которая синхронно с разверткой читает строки пикселов и выдает их на экран.
В результате такого разделения сложность изображения на растровом дисплее в принципе не ограничена. Фактическое же ограничение - количество пикселов на экране составляет для обычных дисплеев сотни тысяч элементов по сравнению с первыми тысячами для векторных дисплеев.
С этим несомненным достоинством связаны два основных недостатка растровых дисплеев по сравнению с векторными:
· непосредственное взаимодействие с изображением затруднено, так как временного соответствия между "указанием" объекта на экране и его генерацией не существует, поэтому в растровых системах используется программное моделирование сцены для определения совпадения координат объекта и положения того или иного устройства указания;
· динамическое представление "не дергающихся" перемещений
требует, чтобы скорости генерации и воспроизведения совпадали.
Это в общем случае возможно только на векторных дисплеях.
Прогресс в области вычислительных технологий, по-видимому, позволит найти приемлемое решение этих проблем, например с использованием рассмотренного ниже растрирования в реальном времени.
Набор команд для растровых дисплеев, соответственно дополнительным возможностям, шире. Он включает команды задания яркостей или цвета, определения закрашенных поверхностей, команды копирования блоков пикселов, известные как Bitblt (Bit Boundary Block Transfer) или RasterOp (растровые операции) и выполнения логических операций над кодами пикселов.
В общем, команда пересылки блока пикселов имеет вид:
приемник:= источник ОП приемник,
где ОП - арифметическая или логическая операция над кодами
пикселов.
Практически используются следующие операции:
Очистка | приемник:= константа |
Узор | приемник:= постоянный узор |
Копирование | приемник:= источник |
Инвертирование | приемник:= NOT приемник |
Логическое И | приемник:= источник AND приемник |
Логическое ИЛИ | приемник:= источник OR приемник |
Исключающее ИЛИ | приемник:= источник XOR приемник |
Особенный интерес представляет операция XOR (Exclusive OR),
позволяющая после двойного ее применения с одним и тем же источником
восстановить исходное значение пиксела. В частности, эта операция
может использоваться для генерации курсоров графического ввода:
(Приемник XOR Источник) XOR Источник =
Приемник XOR (Источник XOR Источник) =
Приемник XOR 0 = Приемник
До сих пор рассматривались растровые дисплеи, у которых один пиксел
соответствует одному элементу видеопамяти (т.н. Bit-Map дисплеи).
Очевидно, что при этом требуются большие размеры видеопамяти, так для
изображения 1024×1024 пикселов при одном байте на пиксел
требуется видеопамять в 1 Мбайт. Во многих случаях отличие двух
соседних пикселов в строке и двух соседних строк мало, что в принципе
позволяет сэкономить память. Мы здесь рассмотрим два наиболее простых
способа кодирования - кодирование длин серий, заключающееся учете
повторения кодов пикселов вдоль строки и клеточное кодирование,
представляющее изображение разбитым на отдельные фрагменты.
К одному из простейших методов кодирования относится кодирование длин серий (run length encoding), заключающееся в том, что группа повторяющихся значений пикселов кодируется в виде пар из значения пиксела и числа его повторений.
С помощью такого кодирования достигается сокращение занимаемого объема в 10 и более раз. Так в задачах численного моделирования (см. п. *) средняя степень сжатия составляла 29 раз. Но для некоторых случаев возможно и увеличение объема, например, если изображение имеет вид шахматного поля из отдельных пикселов.
Ясно, что при таком способе кодирования утрачивается соответствие между координатой пиксела на экране и адресом в памяти изображения. Доступ к строкам возможен путем их последовательного просмотра. Для сокращения времени доступа можно использовать списочную структуру, как это показано на рис. 0.9.8.
Легко видеть, что у метода кодирования длинами серий, особенно при интерактивной работе, имеются следующие недостатки:
· объем занимаемой памяти сильно зависит от изображения и
резко возрастает при сокращении длины повторения;
· изменение изображения требует исключения и создания элементов списка;
· определение длины серии требует просмотра. Для каждой строки
нужно все описание картины для определения возможного вклада.
В целом, этот метод кодирования используется не для интерактивной работы, а для хранения изображения на диске или для передачи. В частности, кодирование длин серий используется в описании изображения для растровых дисплеев фирмы Tektronix, и в графическом редакторе Paintbrusch на IBM PC для оперативного хранения изображения.
Понятно, что искажение значения кодового слова при кодировании длин серий может привести к распространению искажения до конца строки или даже картины. Для защиты от этого в реально используемых схемах кодирования применяется периодическая вставка т.н. абсолютных кодов - незакодированных значений пикселов.
В таком дисплее экран разбит на прямоугольные ячейки (знакоместа). Содержимое ячейки кодируется и размещается в видеопамяти по адресу знакоместа. Сокращение занимаемого объема памяти достигается за счет меньшей длины кодового слова, по сравнению с количеством пикселов в ячейке. Этот метод пригоден для алфавитно-цифровых дисплеев и примитивной графики. Так, например, при размере ячейки 8×8 и 8-ми битовом кодовом слове для дисплея со знакоместами достигается восьмикратная экономия памяти по сравнению с Bit-Map дисплеем. Наряду с символами и знаками в таком дисплее можно представлять и элементарные вектора. Функционально-растровое преобразование для векторов в таком дисплее выполняется подбором подходящей комбинации знакомест.
Такое представление используется в настоящее время только для алфавитно-цифровых режимов, так как в одном знакоместе может быть представлен либо один знак, либо отрезок и так как цвет и другие параметры отображения задаются сразу для всех пикселов знакоместа.
Использование знакомест для простого текстового дисплея разрешением
512×512 точек при размере знакоместа 8×8 и размере
матрицы символа 5×7 показано на рис. 0.9.9.
Такая матрица символов позволяет представить три вида шрифта:
· большие + маленькие символы латиницы,
· большие + маленькие символы кириллицы,
· большие символы латиницы + кириллицы.
Кроме аппаратного использования для алфавитно-цифровых режимов, этот метод кодирования используется и в программной реализации для сокращения объема изображения при передаче или запоминании на диске. В частности, клеточное представление изображения используется в растровых дисплеях фирмы Tektronix и графических стандартах GKS (Graphical Kernel System) и CGI (Computer Graphics Interface).
Одним из возможных методов повышения быстродействия системы визуализации является растрирование в реальном времени, при котором, как и в векторных дисплеях, промежуточное хранение изображения в видеопамяти отсутствует. В этом случае для каждого пиксела экрана требуется просканировать описание всего изображения, чтобы определить вклад различных объектов картины. Насколько трудна эта задача видно из таблицы 0.9.1, когда для дисплеев с разрешением 1024×768 это надо проделать за 16.5 нс! При введении буфера строки на обработку описания сцены требуется уже 20.9 мкс, что все равно слишком мало.
В какой-то мере решить эту задачу можно распараллеливанием. Можно усмотреть два способа распараллеливания:
· "процессор на геометрический элемент" -
распараллеливание на уровне объектов, когда каждому примитиву
описания изображения соответствует свой генератор (генераторы для
векторов, кривых, поверхностей и т.д.),
· "процессор на пиксел" - распараллеливание на уровне
пикселов, когда описание сцены "пропускается" сквозь пикселы и
они решают что и как видимо.
В высококлассных, дорогостоящих графических системах в определенной мере используются оба способа, причем "процессор на пиксел" использовался только в экспериментальных дисплеях. Обычно же специализированный растровый процессор обслуживает полосу пикселов.
На рис. 0.9.10 приведен сравнительный анализ методов распараллеливания.
Объекты : Параллельно Последовательно
Пикселы : Последовательно Параллельно
Больше объектов : Больше процессоров Ускорение процессоров
Больше пикселов : Ускорение процессоров Больше процессоров
Пример : Системы реального Системы с Z-буфером.
времени
При использовании мультипроцессоров главная проблема возникает не при преобразовании и разложении картины и не при вычислении пикселов, а при формировании полной картины из пикселов, которые сформированы из отдельных частей картины. Она должна решаться таким же образом, как и проблема перекрытия фрагментов, возникающая при реалистичном представлении трехмерных сцен.
В ныне существующих растровых дисплеях одной из важнейших компонент, обеспечивающих взаимодействие подсистем генерации и отображения, является видеопамять. Каждая из подсистем должна иметь свой доступ к видеопамяти и большой ширины. Причем доступ от подсистемы отображения для обеспечения немерцающего изображения жестко синхронизован с развертками монитора. А доступ со стороны подсистемы генерации для достижения высокой интерактивности и больших скоростей перемещения объектов желательно исполнять в произвольный момент времени.
Важность специального внимания к разработке видеопамяти проиллюстрируем несложным примером. Очевидно, что при попытке одновременного доступа к видеопамяти со стороны подсистемы генерации изображения и со стороны видеоконтроллера возникает конфликт. В ранних дисплеях, таких как, например, система Pericolor 2000, конфликт разрешался простейшим образом: цикл памяти отдавался генератору изображения, так как если отдать его видеоконтроллеру, то информация в память не будет занесена и картинка исказится. При этом, естественно, некоторые точки изображения видеоконтроллером пропускались, так как развертка идет непрерывно. Это приводило к характерным помехам в виде "снега" на экране. После завершения записи в память снег, конечно, пропадал. Один из простых способов решения этой проблемы - разрешение доступа генератору изображений во времена обратного хода разверток, когда изображение на экране не формируется. Это резко снижало быстродействие системы.
Видеопамять, как правило, строится на микросхемах динамической памяти с произвольным доступом (DRAM - Dinamic Random Access Memory), обладающих большим объемом и обычно имеющих организацию N×1 разряд (однобитовая память). В дальнейшем изложении для упрощения анализа и почти без уменьшения общности, если иное не будет оговорено специально, будем рассматривать видеопамять наиболее распространенной, т.н. послойной архитектуры. В этом случае видеопамять организована в виде индивидуально управляемых битовых слоев с 1 битом на пиксел. Увеличение числа бит на пиксел достигается аппаратным комплексированием отдельных слоев. Для некоторых областей приложений, таких как, например, обработка изображений, более естественна архитектура "в глубину", когда видеопамять организована с требуемым числом байт на пиксел.
Обычные микросхемы памяти имеют время цикла порядка первых сотен наносекунд. Из сравнения с таблицей 0.9.1 видно, что это заметно превышает время на пиксел, требуемое разверткой. В этой связи память организуется таким образом, чтобы за один доступ одновременно считывается многобитное слово памяти (16, 32, 64 бита). Следует отметить, что число микросхем памяти, требуемое для организации широкого доступа, обычно дает суммарный объем памяти больший, чем требуется из соображений разрешения. Рассмотрим, например, память для дисплея 1024×768 пикселов в суммарным объемом в 786 432 бит. Требуемое время доступа к пикселу составляет 16.52 нс (см. таблицу 0.9.1). Используя микросхемы памяти организации 64К×1 бит с временем доступа 340 нс, получаем, что для достижения требуемого времени доступа надо одновременно запустить не менее 21 микросхемы. Суммарный объем памяти составит 21×64×1024 = 1 376 256 бит, что почти в два раза больше чем надо. На самом деле еще хуже, так как обычно ширину доступа выбирают их ряда 8, 16, 24 и т.д. Тогда получим суммарный объем памяти 24×64×1024 = 1 572 864 бита, что ровно в 2 раза больше.
На рис. 0.9.11 показан простой вариант для дисплея 512×512×1 бит с 16 корпусами 16К×1 400 нс динамической памяти с произвольным доступом (см. таблицу 0.9.1). Под управлением тактового генератора все микросхемы одновременно читаются и со скоростью » 10.3 мегапикселов/с загружают данные в 16-ти разрядный сдвиговый регистр. Видно что память двухпортовая, т.е. шины данных, адреса и управления подключаются и от видеоконтроллера и от генератора изображений.
При одновременном доступе ко всем 16 микросхемам выдаются 16 пикселов, чем обеспечивается время отображения порядка 1600 нс. Так как цикл памяти в 400 нс, то видеоконтроллеру требуется только около 25% от имеющегося в наличии суммарного времени доступа. Остаток, включая и время обратного хода, может быть использован подсистемой генерации изображения для записи в видеопамять.
Замена этих 16 микросхем памяти на 4 микросхемы 64К×1 не улучшит, а ухудшит показатели системы. Ширина доступа станет 4 пиксела, т.е. обеспечится время отображения в 400 нс, а время цикла памяти остается порядка 400 нс, так что на доступ от генератора изображений останется только время обратного хода.
Таким образом, задачу увеличения разрешения дисплея применением микросхем большего объема решить нельзя. Будет требоваться все увеличивающаяся ширина доступа, так как цикл динамической памяти становится много большим времени отображения пиксела (см. таблицу 0.9.1). С другой стороны, как было ранее показано в примере для дисплея 1024×768, объем памяти, определяемый шириной доступа становится все больше объема, требуемого разрешением.
Требуются иные технические решения.
A. Использование статической памяти. Радикальное и дорогостоящее решение. Времена доступа к статической памяти в 3-7 раз меньше, чем у динамической, энергопотребление в 1.3-5.5 раз больше, корпуса б\'ольших размеров, стоимость выше. Не требуется регенерации памяти. При некоторых эксплуатационных требованиях, например, повышенной радиационной стойкости, это единственное решение. Для иллюстрации в таблице 0.9.2 приведены некоторые параметры нескольких микросхем памяти одинакового объема.
Тип | Объем | Время | Мощн. | Кор- | Цена | |
бит | нс | мвт | пус | |||
К565РУ5 | Динамич. | 64Кх1 | 240-450 | 360/30 | 16 | |
К132РУ10А | Статич. | 64Кх1 | 75 | 460/165 | 22 | |
К537РУ17 | Статич. | 8Кх8 | 200 | 470/22 | 18 |
Б. Использование двойной буферизации. Также недешевое, технически сложное решение. Используется два комплекта видеопамяти. В то время как идет отображение из одного буфера, второй буфер целиком отдается генератору изображений. Во время обратного хода кадровой развертки буфера меняются местами.
В. Использование микросхем иной организации памяти. Взамен микросхем побитовой организации nKx1, используются микросхемы nKxt, например, 16Кx4, 32Кx8. Эти микросхемы можно использовать двояко:
1. В одном слове микросхемы размещаются t пикселов. Очевидно, что сокращение времени доступа для видеовывода пропорционально длине слова. Недостаток - отдельная точка не может адресоваться индивидуально. Запись точки будет заключаться в вычислении адреса слова памяти, в которой она содержится; в определении позиции точки в слове; чтении слова; модификации требуемых разрядов; записи слова.
2. Одно слово микросхемы отводится под 1 пиксел, соответствующей глубины. До сих пор рассматривали дисплеи "послойной" организации, в которых для получения требуемой глубины пиксела набирается требуемое число слоев. Этот же поход - построение видеопамяти "в глубину". Рассмотрим реализацию видеопамяти 1024×1024×4. Для такого объема требуется 64 микросхемы 64К×1. Полагая, что из соотношения между длительностью обработки пиксела и временем цикла микросхемы следует одновременно запускать 16 микросхем получим, что при использовании микросхем 64К×1 за один доступ к памяти запрашивается 16 пикселов по 4 бита каждый, в то время как при использовании микросхем 16К×4 того же самого объема в 64 Кбит будет запрошено уже 64 пиксела по 4 бита. Таким образом будет достигнуто лучшее соотношение между временами доступа видеоконтроллера и генератора изображений. Относительным недостатком такого подхода можно считать невозможность индивидуальной адресации отдельной битовой плоскости. Но такая возможность и не нужна для многих приложений. Для тех же приложений где это требуется отдельные слои могут защищаться с помощью программно загружаемой маски, как это, например, было сделано в дисплеях Гамма-4 и Гамма-Т [10]. Если разряды, разрешенные к модификации в регистре маски отмечаются 1, то его использование можно представить следующим образом:
V:= | ((V OR M) XOR M) | OR | (N AND M) |
| | | | | | ||
Зачистка разрядов в | Вырезание по | ||
пикселе видеопамяти | маске разрядов в | ||
заносимом пикселе |
где V - значение пиксела в видеопамяти, N - заносимый пиксел,
M - регистр маски.
Г. Использование VRAM. VRAM (Video Random Access Memory) [15] была разработана для решения проблемы конкуренции за циклы памяти между видеорегенерацией и модификацией изображения при их одновременном выполнении.
VRAM представляет собой двухпортовую динамическую память, имеющую с
своем составе:
· собственно массив памяти 256×256×1 (64К×1)
или 256×256×4;
· 256 или 1024-битовый сдвиговый регистр.
Каждая из этих двух частей имеет собственные сигналы ввода/вывода и управления. Сдвиговый регистр загружается строкой из массива памяти за один цикл. После загрузки сдвиговый регистр независим от массива памяти и может тактироваться с максимальной частотой до 25 МГц. После требования всего одного цикла для записи 256 или 1024 бит VRAM готова одновременно и для видеорегенерации и для обновления изображения. Время на доступ для отображения составляет менее 1.5% времени доступа. В системах же базирующихся на DRAM эти затраты достигают до 60%.
На рис. 0.9.13 представлена структура VRAM микросхемы TMS4161 фирмы Texas Instruments.
Понятие же "физического вакуума" в релятивистской квантовой теории поля подразумевает, что во-первых, он не имеет физической природы, в нем лишь виртуальные частицы у которых нет физической системы отсчета, это "фантомы", во-вторых, "физический вакуум" - это наинизшее состояние поля, "нуль-точка", что противоречит реальным фактам, так как, на самом деле, вся энергия материи содержится в эфире и нет иной энергии и иного носителя полей и вещества кроме самого эфира.
В отличие от лукавого понятия "физический вакуум", как бы совместимого с релятивизмом, понятие "эфир" подразумевает наличие базового уровня всей физической материи, имеющего как собственную систему отсчета (обнаруживаемую экспериментально, например, через фоновое космичекое излучение, - тепловое излучение самого эфира), так и являющимся носителем 100% энергии вселенной, а не "нуль-точкой" или "остаточными", "нулевыми колебаниями пространства". Подробнее читайте в FAQ по эфирной физике.
|
![]() |