Компоненты и технологии, № 8'2003
Графический контроллер Jasmine MB87P2020 -
выбор российского рынка
Этот материал является продолжением статьи, опубликованной в «КиТ» № 5'2003 о графических контроллерах фирмы РщИви. В статье был рассмотрен весь модельный ряд контроллеров, изучены их базовые характеристики и оценены перспективы применения встраиваемых графических контроллеров РщИви в нашей стране.
В данной статье будет рассмотрен вопрос выбора наиболее перспективных моделей контроллеров, на которые хочется обратить внимание отечественных разработчиков электронной аппаратуры. Мы коснемся их архитектуры, исследуем механизмы и особенности реализации функций обработки графики и видео, изучим методы управления, конфигурирования и программирования.
Апександр Скуснов
Что же выбрать?
Современные условия конкуренции все чаще заставляют разработчиков встраивать в свою аппаратуру дисплеи, чтобы обеспечить удобный и наглядный вывод пользовательской информации. Эпоха «слепых» устройств с цифровой клавиатурой и несколькими семисегментными индикаторами уходит в прошлое. Залог успеха современного оборудования — это, по возможности, цветной дисплей (чаще всего жидкокристаллический) и удобный пользовательский интерфейс.
Многие современные дисплеи оснащены встроенными графическими контроллерами. К сожалению, возможности этих контроллеров весьма скромны и позволяют реализовать лишь примитивный интерфейс. Даже реализация простейшей двухмерной «экранной заставки», рекламирующей производителя устройства, потребует значительной загрузки центрального процессора. Выходом из положения может стать использование графической подсистемы на базе отдельного контроллера, например, производства Fujitsu.
Каждое семейство графических контроллеров ориентировано на конкретное применение в зависимости от функциональных возможностей и производительности. Тактовые частоты работы чипов контроллеров — от 64 до 166 МГц. Модели могут
Таблица 1. Сравнительные характеристики графических контроллеров Scarlet и Jasmine
быть оборудованы как встроенной, так и внешней памятью (до 32 Мбайт). Кроме того, присутствуют различные аналоговые и цифровые интерфейсы для вывода изображения на различные типы дисплеев и интерфейсы для подключения внешних источников сигналов (видеокамер, DVD).
Попробуем выбрать графический контроллер, наиболее подходящий для российского рынка. Будем действовать методом исключения. Очевидно, что на сегодняшний момент не требуется создавать универсальные устройства, которые позволят, например, помимо выполнения своих основных функций играть в трехмерные игры, требующие больших объемов памяти для хранения текстур и высокой производительности графического ядра. Поэтому имеет смысл исключить из рассмотрения самое скоростное и, как следствие, самое дорогое семейство — Coral. Чтобы уменьшить габариты устройства и упростить топологию платы контроллера, отбросим графические чипы с внешней памятью — Cremson, Orchid и Lavender. Далее, объема памяти в 1 Мбайт и даже меньше вполне достаточно для решения таких задач, как вывод видео и организация удобного пользовательского интерфейса. В результате остается только два вероятных претендента — Scarlet и Jasmine. Их основные отличительные характеристики приведены в таблице 1.
Название Частота, МГц 2D 3D Число слоев Alpha blending Цифр. RGB Аналог. RGB Видеовход 3 и If Дополнит. интерфейсы Видеопамять Геометр. процессор Интерфейс процессора Корпус
Jasmine 64 + - 4 - + + + YUV/RGB - Встроенная (1 Мбайт) - FR QFP20B
Scarlet 100 + + 4 4 бит/слой + + + YUV I2C Встроенная (2 Мбайт) + FR, SH3/4, VB50 QFP20B
Компоненты и технологии, № 8'2003
Графический контроллер Scarlet поддерживает работу с 2D и 3D-графикой и стыкуется без дополнительной связующей логики с несколькими типами микропроцессоров: Fujitsu FR, Hitachi SH3/SH4, NEC V83X. Контроллер Jasmine — более простой, он ориентирован на обработку только двухмерной графики. Этот чип стыкуется без дополнительной логики только с семейством микроконтроллеров Fujitsu FR. К его достоинствам можно отнести конвертер форматов YUV в RGB, совместимость с большим количеством видеодекодеров, более низкую (как у любой младшей модели) цену и меньшее энергопотребление.
Оба графических контроллера, естественно, могут быть состыкованы и с другими типами микропроцессоров. Однако это потребует введения в схему дополнительной согласующей логики, что может быть реализовано, например, на ПЛМ типа Altera или Xilinx.
Если задачи, которые вы собираетесь возложить на графическую подсистему, не требуют обработки данных трехмерной графики, то наиболее простым, удобным и экономически выгодным выбором является графический контроллер Jasmine.
Модель Jasmine (MB87P2020) входит в семейство графических контроллеров Lavender. Второй представитель семейства модель — Lavender (MB87J2120). Поскольку графические контроллеры, входящие в одно семейство, имеют очень похожую архитектуру и совместимый программный код, то есть смысл рассмотреть все семейство Lavender сразу.
Таблица 2. Функциональные возможности
Функциональные возможности
Чтобы получить наглядное представление о возможностях графических контроллеров Lavender и Jasmine, обратимся к таблице 2.
Архитектура
Архитектура графических контроллеров семейства Lavender приведена на рис. 1.
Рассмотрим основные модули, входящие в состав графического контроллера.
Clock Unit (CU) — модуль, формирующий все необходимые импульсы синхронизации для графического контроллера и внешнего хост-микроконтроллера. Этот модуль также управляет переводом в режимы пониженного энергопотребления всех составных частей контроллера и формирует сигнал RESET.
Pixel Processor (PP) — процессор пикселей предназначен для выполнения всех функций по рисованию. Исходными данными для обработки в РР являются координаты пикселей (х, у) и номер слоя, в котором выводится изображение. Всего в графическом контроллере поддерживается 16 аппаратных слоев. Из них только четыре могут быть видимыми одновременно. В слоях хранятся данные любых типов, например, графика или видео с различной глубиной цвета. Процессор пикселей состоит из трех основных модулей:
• Pixel Engine (PE) — блок обработки пикселей. Среди процедур, выполняемых блоком, можно отметить работу с текстурами,
Характеристика MB87J2120 (Lavender) MB87P2020-A (Jasmine)
Тип и объем памяти 2 Мx32 внутренней SDRAM (64 Мбит) 256 ^32 внутренней SDRAM (B Мбит)
Корпус BGA-256P-M01 FPT-20BP-M06
Параллельное подключение Возможно подключение до четырех графических контроллеров параллельно с общим «сигналом выборки».
Вид сброса Синхронный Reset | Асинхронный Reset
Функции обработки пикселей
Функции 2Р и обработки битмапов - Рисование линий, полигонов, прямоугольных областей. - Вывод несжатых и сжатых битмапов (метод 1^Е).
Функции доступа к пикселям в видеопамяти - занести пиксель; - задать цвет пикселя; - пакетная передача пикселей; - поменять пиксели; - прочитать пиксель.
Копирование данных Копирование прямоугольных областей из одного слоя в другой
ДАР Фильтрация за счет увеличения разрешения изображения вдвое по горизонтали и вдвое по вертикали (2x2 super sampling) 2x2 super sampling, 4x4 super sampling (учетверение разрешающей способности по каждой оси)
Вывод изображения
Поддержка дисплеев - дисплеи с пассивной LCD-матрицей (single/dual scan); - дисплеи с активной матрицей (TFT); - электролюминесцентные дисплеи; - дисплеи с эмиссией полем (Field Emission Display); - дисплеи с совместимым TV-входом; - дисплеи с электронно-лучевой трубкой (CRT). Специальный режим «Twin Display Mode» — вывод изображения одновременно на цифровой и аналоговый дисплеи (только у Jasmine).
Характеристики видеовыхода - цифровой выход RGB 24 бит; - частота видео-ЦАП (Video DAC) 50 МГц (число точек, выводимое в секунду); - поддержка разрешений дисплеев до 16383x16383 точек; - возможность смешивания нескольких слоев с глубиной цвета 1, 2, 4, 8, 16 и 24 бит/пиксел в одно изображение; - конвертер форматов YUV в RGB (только у Jasmine); - гамма коррекция (только у Jasmine).
Процессорный интерфейс - поддержка микроконтроллеров семейства MB91xxxx с 8/16/32-разрядным доступом; - поддержка DMA; - поддержка прерываний.
Пониженное энергопотребление Режимы пониженного потребления включаются отдельно для различных модулей графического контроллера.
Примечания:
Битмап (Bitmap) — способ кодирования изображения пиксель за пикселем.
RLE (Run Length Encoding) — метод сжатия изображения без потери качества, при котором последовательные пиксели одного цвета заменяются двумя числами: цвет пикселя и число его повторений.
Формат YUV (Y — яркость, U — цветность синего, V — цветность красного) — формат цветоразностного представления данных цветного видеоизображения. Цветоразностные сигналы, ии V, в сочетании с сигналом Y позволяют восстановить исходные RGB-цвета по простым формулам.
Рис. 1. Архитектура семейства Lavender
Компоненты и технологии, № 8'2003
рисование графических примитивов (линий, ломаных, прямоугольников). РЕ поддерживает множество специальных режимов работы, например, есть режим «зеркального» дублирования данных.
• Memory Access Unit (MAU) — блок предназначен для чтения и записи пикселей в памяти. Поддерживаются режимы одиночной, блочной и пакетной передачи данных.
• Memory Copy (MCP) — блок, предназначенный для «быстрого» обмена графическими данными между слоями с одинаковой глубиной цвета. Например, для дублирования блока данных достаточно указать их объем, источник (слой, с которого копируют) и приемник (слой, на который копируют).
Все функции по обработке изображений,
применяемые в процессоре пикселей для улучшения качества изображения, могут использовать аппаратный анти-алиасинг, реализованный модулем Antialiasing Filter (AAF).
Direct/Indirect Physical Access (DIPA) — модуль прямого/косвенного физического доступа к памяти. В режиме прямого доступа модуль работает в 8-, 16- и 32-разрядном режиме. В этом случае для доступа к памяти необходимо задать только адрес. В режиме косвенного доступа для достижения высокой производительности запросы к памяти буферизуются и используются команды GetPA и PutPA, поддерживающие пакетную передачу данных.
SDRAM Controller (SDC) — контроллер видеопамяти. Предназначен для арбитража запросов и доступа к SDRAM-памяти.
Graphic Processing Unit (GPU) — модуль обработки графики и наиболее сложная часть графического контроллера. Модуль считывает из видеопамяти графическую или видеоинформацию всех четырех видимых слоев и конвертирует ее в выходной поток данных в зависимости от типа подключенного дисплея. GPU состоит из следующих блоков:
• Data Fetch Unit (DFU) — выборки данных;
• Colour Conversion Unit (CCU) — конвертирования цветов;
• Line Segment Accumulator (LSA) — наложения слоев;
• Bitstream Formatter (BSF) — форматирования выходного потока данных.
Последний необходим для гибкого преобразования выходного видеопотока, ввода различных временных задержек и дополнительных сигналов синхронизации, что позволяет подключать контроллер к цифровым (в первую очередь жидкокристаллическим) дисплеям практически любых типов. Дополнительно встроенный модуль video DAC обеспечивает возможность подключения мониторов с аналоговым входом. Специально для дисплеев, подсвечиваемых лампами с холодным катодом, у графического контроллера Lavender предусмотрен дополнительный модуль Cold Cathode Fluorescence Lamp (CCFL).
Таблица 3. Поддерживаемые дисплеи
Производитель Тип Разрешение Цветной/монохр. Частота кадров, Гц
Дисплеи с пассивной LCD-матрицей (single/dual scan)
Optrex DMF-50970NC 160x113 цветной1 | нет данных
Sharp LM64P89 640x480 монохромный «о 2 9p «о
LM64C142 320x240 цветной 5 чэ 2 о
DG24320C5PC 640x480 цветной 1 73
Дисплеи с активной матрицей (TFT)
FPD LDE052T-52 320x240 цветной (24 бита) 5 6 5 5
Sharp LQ5AW116 320x234 цветной (24 бита) 5 6 5 5
Hosiden HLD0909 640x480 монохромный 50... 70
NEC NL6448AC33-18 640x480 цветной 58... 62
Sanyo ALP401RDD 320x240 цветной (24 бита) 51. 71
1 Электролюминесцентные дисплеи
Sharp LJ32H028 320x240 монохромный 6 Р 2 О
Planar El160.80.50 160x80 монохромный до 240
Planar EL320.240.36 320x240 монохромный до 120
Planar EL640.400-CEx 640x400 монохромный до 160
Planar EL640.480-M1 640x480 цветной до 80
1 Дисплеи с эмиссией полем (Field Emission Display)
Motorola D07SPD310 128x160 цветной 60. 75
PixTech FE532S-M1 320x240 монохромный 50. 350
1 — термин «цветной» обозначает дисплеи с числом цветов менее 16,7 млн (24 бит).
Видеоинтерфейс (VIC)
Модуль видеоинтерфейса предназначен для приема видеоданных с внешних устройств и записи их в видеопамять. VIC — это цифровой видеовход, поэтому для приема
видеоконтроллером аналогового сигнала необходим внешний декодер.
К основным функциям видеоинтерфейса можно отнести:
• 8-разрядный (порт А) или 16-разрядный (порты А и В) порт данных;
• поддержку огромного числа различных цифровых видеоформатов: RGB555, RGB565, RGB888, YUV444, YUV655 (только Jasmine), YUV555 (только Jasmine), YUV422;
• программируемую полярность управляющих сигналов;
• прогрессивную и чересстрочную развертку и т. д.
Serial Peripheral Bus (SPB) — последовательный интерфейс, недоступный пользователю (введен Fujitsu для собственных целей).
С точки зрения разработчика наиболее важным элементом графического контроллера является его интерфейс. Интерфейс Lavender и Jasmine реализован с помощью шины User Logic Bus (ULB). ULB — это пользовательская шина управления для подключения внешнего хост-микроконтроллера (далее будем называть его просто микроконтроллером)
Пользовательская шина ULB
Управление графическим контроллером осуществляет внешний микроконтроллер. Обмен данными между графическим контроллером и микроконтроллером происходит через общие регистры. Это означает, что все управляющие регистры Lavender и Jasmine располагаются в адресном пространстве внешнего хост-чипа, который получает к ним доступ через шину ULB.
Модуль ULB, в зависимости от адреса, позволяет микроконтроллеру получить доступ для чтения или записи к различным компонентам графического контроллера. При чтении модуль мультиплексирует потоки данных от различных компонентов и контролирует количество циклов ожидания, используя контакт ULB_RDY (готовность шины). Компонент ULB обеспечивает интерфейс передачи команд и данных в так называемые «исполнительные устройства» Pixel Processor (PP)
и Indirect Memory Access Unit (IPA). Все передаваемые через него данные для повышения производительности буферизуются. Для еще большего повышения производительности в ULB реализована поддержка DMA.
Контроллер ULB содержит набор специальных регистров для управления графическим контроллером и контроля его состояния. Это регистры:
• флагов;
• управления прерываниями;
• управления прямым доступом к памяти
(DMA);
• установки параметров доступа к памяти
SDRAM и другие.
При включении питания графический контроллер может быть определенным образом сконфигурирован с помощью внешних контактов выбора режима MODE[3:0].
Контакты MODE[1,0] используются при параллельном подключении к общей пользовательской шине нескольких (до 4) графических контроллеров. В этом случае с помощью MODE[1,0] каждому из них задается индивидуальный номер. Это необходимо для того, чтобы контроллер ULB мог корректно декодировать адреса в зависимости от номера устройства.
Графический контроллер с точки зрения внешнего микроконтроллера может функционировать не только как 32-, но и как 16-разрядное устройство. В этом случае модуль ULB конвертирует 16-разрядные данные, полученные из микроконтроллера, в 32-разрядные для дальнейшей внутренней обработки. И наоборот, при передаче данных наружу, в микроконтроллер, внутреннее 32-разрядное слово конвертируется в два полуслова по 16 разрядов. Данным режимом управляет контакт MODE[2].
Для гибкой интеграции графического контроллера во встраиваемую систему и упрощения топологии печатной платы некоторые выходные сигналы контроллера могут инвертироваться или переводиться в третье состояние (вместо логической «1») внутри графического контроллера. Например, для инвертирования сигнала ULB_RDY в Jasmine необходимо использовать контакт MODE[3].
Компоненты и технологии, № 8'2003
Jasmine default configuration Lavender default configuration
Register Space (
Configurable SDRAM Space!
Register Space for GDCO
Register Space for GDC
not configured
Video Memory
Register Space for GDCO
Register Space for other GDC
Video Memory window
not configured
Ok
-64k 0x00010000
-256k 0x00040000
768k OxOOOCOOOO
1M 0x00100000
_2M 0x001 FFFFF
Рис. 2. Адресное пространство Jasmine и Lavender
Таблица 4. Режимы обмена данными
Lavender Jasmine
32-разрядный 16-разрядный 32-разрядный 16-разрядный
Входные буферы word word word word
Выходные буферы word word word word
Регистры word, halfword, byte word, halfword, byte word, halfword, byte word, halfword, byte
SDRAM word word word, halfword, byte word, halfword, byte
Поддерживаемые дисплеи
Уже отмечалось, что графические контроллеры Fujitsu поддерживают огромное количество дисплеев различных типов. В таблице 3 приведен примерный перечень дисплеев от различных производителей, совместимых с графическими контроллерами Lavender и Jasmine. Это, безусловно, не полный список.
Конфигурирование
Конфигурирование графического контроллера осуществляет внешний микроконтроллер с помощью регистров конфигурирования, доступ к которым осуществляется через шину ULB. Все регистры графического контроллера находятся в нижней части адресного пространства (рис. 2). Под регистровое пространство одного графического контроллера отводится 64 кбайт, однако к шине ULB может быть подключено одновременно до 4 графических контроллеров, поэтому под все регистровое пространство отведено 256 кбайт (4x64). Остальная часть адресного пространства может конфигурироваться пользователем.
Микроконтроллеры MB91xxxx поддерживают 3 способа обращения к данным в графическом контроллере: 32-разрядный (Word), 16-разрядный (Halfword) и 8-разрядный (Byte). В свою очередь, графический контроллер поддерживает только 16- и 32-разрядный режимы обмена данными. Различные адресные области графического контроллера также совместимы с различными режимами обмена (табл. 4).
Конфигурирование внутренних регистров графического контроллера не представляет большой сложности. Большая часть этих регистров схожа по назначению с регистрами
конфигурирования обычного микроконтроллера. Например, для конфигурирования модуля Clock Unit имеются два регистра: ClkConR (Clock Configuration Register) и ClkPdR (Clock Power Down Register). Первый позволяет задать один из четырех источников сигнала синхронизации: внешний резонатор, частоту вывода пикселей на дисплей (Display clock), частоту шины внешнего микроконтроллера (MCU Bus clock), резервный вход синхронизации (reserved clock input), а также выбрать предумножители системной частоты ядра и дисплея. Второй — разрешать или запрещать подачу тактовых частот на различные модули графического контроллера, проводить общий сброс контроллера, записью состояния 1 в бит 15 регистра.
Таблица 5. Команды графического контроллера
Обратим внимание на некоторые интересные и нестандартные моменты, связанные с программированием.
Программирование
Рассмотрим, как графический контроллер выполняет команды.
Каждая команда при выполнении заносится в 32-разрядный регистр команд. В зависимости от выполняемой команды в работу включается тот или иной модуль графического контроллера. Например, команда рисования прямоугольника (DwRect) обрабатывается модулем Pixel Engine, а команда записи пикселя в видеопамять (PutPixel) модулем Memory Access Unit.
Перед каждой передачей микроконтроллером новой команды в графический контроллер приложение пользователя должно предварительно проверить специальный флаг FLNOM_CWEN — флаг занятости графического контроллера. Обычно флаг опрашивают в цикле следующим образом:
while (FLNOM_CWEN!=1);
Только после смены состояния флага из 0—— 1 в графический контроллер можно заносить новую команду.
Если же флаг FLNOM_CWEN не анализировать, командный конвейер переполнится, и графический контроллер может даже зависнуть. Выход из такого зависания возможен только с помощью аппаратного сброса. В то же время, если по какой-то причине переполнение командного конвейера все же произошло и возник сбой, приложение пользователя может выявить такую ситуацию, анализируя флаг FLNOM_EOV.
Команды
Получить представление о некоторых наиболее интересных командах графического контроллера и их мнемонике можно с помощью таблицы 5. Команды разбиты по функциональным группам.
Мнемоника Код Функции Исполнительный модуль
| Команды работы с битмапами и текстурами |
PutBM 01h Сохранить битмап в видеопамяти Pixel Processor
PutCP 02h Сохранить сжатый RLE битмап в видеопамяти
1 Команды рисования (2D) |
DwLine 03h Рисование линии
DwPoly 0Fh Рисование полигонов Pixel Processor
DwRect 04h Рисование прямоугольной области
1 Команды работы с пикселями |
PutPixel 07h Записать пиксель в видеопамять
PutPxFC 09h Задать цвет пикселя в видеопамяти
GetPixel 0Ah Прочитать пиксель из видеопамяти Pixel Processor
XChPixel 0Bh Прочитать старый пиксель из выходного буфера и записать новый пиксель из входного буфера в видеопамять
1 Команды работы с видеопамятью |
1 MemCopy 0Сh | Копирование прямоугольной области памяти из одного слоя на другой | Pixel Processor |
| Команды физического доступа к памяти |
PutPA 0Dh Сохранить данные в видеопамяти по физическому адресу (с автоинкрементом) DIPA
GetPA 0Eh Чтение данных по физическому адресу в видеопамяти
1 Системные команды |
SwReset 00h Останавливает выполнение текущей команды, сбрасывает командный счетчик и обнуляет буферы ULB, IPA, PP
NoOp FFh Пустая операция ULB
Компоненты и технологии, № 8'2OO3
Буферы
Большинство команд графического контроллера для пересылки данных используют входной и выходной буферы графического контроллера. Объемы буферов у моделей Lavender и Jasmine различны и приведены в таблице 6.
Таблица 6. Объем буферов графических контроллеров
Объем буфера Lavender Jasmine
Входной буфер данных 128 words (512 байт) 64 words (256 байт)
Выходной буфер данных 128 words (512 байт) 64 words (256 байт)
Рис. 3. Слева — изображение без применения анти-алиасинга. В центре — виртуальный образ изображения в удвоенном разрешении. Справа — изображение, полученное из виртуального образа.
Основное правило при работе с входным буфером следующее: перед тем как приложение пользователя запишет данные в буфер, оно должно убедиться, что свободная часть буфера превышает объем записываемых данных.
Главное же правило при работе с выходным буфером — перед чтением данных убедиться в их наличии в буфере.
Контроль состояния обоих буферов происходит с помощью регистров 1БиЬ и ОБиЬ.
Еще один вариант передачи информации— использование режима прямого доступа к памяти БМЛ. В этом случае данные также передаются через буферы, однако пользовательской программе не нужно контролировать состояния буферов. Контроль осуществляется аппаратно. Единственным требованием к программе является необходимость подготовить все данные в памяти заранее, а не выдавать их «на лету».
Флаги
Для того чтобы пользовательская программа могла контролировать процесс выполнения команд, модуль ИЬБ имеет набор флагов (флаговых регистров). Важнейший из них — FLNOM_CWEN уже был рассмотрен. Другой, не менее важный флаг — FLNOM_ECODE — устанавливается, если графический контроллер получил некорректную команду и вместо нее принудительно выполнил пустую операцию №Ор. Флаг FLNOM_EDATA контролирует состояние входного буфера. Он устанавливается, если какой-нибудь модуль графического контроллера пытается читать из пустого буфера. Существует множество различных флагов. Большинство из них, как и регистры конфигурации, очень напоминают флаги обычных микроконтроллеров: также умеют вызывать прерывания и не вызовут сложностей при программировании.
Включаем анти-алиасинг
Одной из главных черт, отличающих графические контроллеры от обычных микропроцессоров, является аппаратная реализация различных функций обработки графики. Одна из самых примечательных — анти-алиасинг. Напомним, анти-алиасинг — способ интерполяции пикселей для получения более
четких краев изображения. Рассмотрим особенности реализации и применения этого варианта фильтрации в Lavender и Jasmine.
Анти-алиасинг в общем случае обозначает лишь результат применения некоего алгоритма фильтрации к изображению. В графических контроллерах Fujitsu он реализован с помощью алгоритма суперсэмплинга (super sampling). Практически это означает, что каждое изображение, которое вы хотите вывести на экран, имеет свой виртуальный образ. Виртуальный образ рисуется в более высоком разрешении. Например, в удвоенном (2x2 super sampling) или учетверенном (4x4 super sampling). Виртуальный образ затем конвертируется в нормальное разрешение. При этом каждый пиксель нового изображения получается смешением и наложением 4 или 16 пикселей виртуального образа. Применение суперсэмплинга наглядно проиллюстрировано на рис. 3.
Использование анти-алиасинга позволяет значительно повысить качество изображения. Однако его применение сопряжено с определенными трудностями. Во-первых, задача удвоения или учетверения разрешения ложится на плечи пользовательской программы. Режима автоматического увеличения разрешения нет. Выбор режима суперсэмплинга 2x2 или 4x4 осуществляется установкой бита BX4 в регистре AAOE: BX4 = 0 (2x2 установлено по умолчанию) и BX4 = 1 (4x4). Второй оборотной стороной фильтрации является необходимость проведения большого числа операций «чтение-модификация-за-пись», что однозначно не в лучшую сторону скажется на скорости работы графического контроллера. Здесь, в свою очередь, может помочь включение специального режима оптимизации операций записи с помощью установки бита OPTI_EN = 1.
Анти-алиасинг можно использовать практически со всеми командами Pixel Processor. Исключение составляет команда PutPxWd.
Принимаем видео
Для успешного приема внешнего видеосигнала разработчику необходимо произвести минимальное число настроек VIC. Во-первых, указать слой (в регистре VICC-TRL), на который модуль видеоинтерфейса будет сохранять данные. Во-вторых, выбрать метод синхронизации фреймов, на котором стоит остановиться подробнее.
Очевидно, что скорость вывода кадров графическим котроллером на дисплей может не совпадать со скоростью кадров от внешнего видеосигнала. При этом, если записывать видеоданные и выводить их одновременно с одного и того же слоя, периодически будет возникать ситуация, когда на дисплей выведена картинка, часть которой — это старый кадр, а другая часть — новый. На дисплее это проявляется в виде постоянно «ползущих» полос. Для решения проблемы синхронизации существуют двухслойный (2-layer mode) и трехслойный (3-layer mode) режимы вывода изображения, которые выбираются установкой бита 15 в регистре VICFSYNC[15] = 0 и 1 соответственно.
При двухслойном режиме данные на один слой пишутся, а с другого слоя читаются. Двухслойный режим более экономно использует видеопамять, однако применять его имеет смысл, только если заранее известно, что быстрее: частота развертки контроллера или частота входного видеосигнала. Это соотношение задается битом VICFSYNC[16]: 0 — VIC медленнее, 1 — VIC быстрее. Если эти соотношения неизвестны, используют трехслойный режим.
Режимы эксплуатации
Графические контроллеры Lavender и Jasmine используют два напряжения питания: VDDI = 2,5 В (для внутренних модулей) и VDDE = 3,3 В (для внешних портов ввода-
Таблица 7. Режимы эксплуатации графических контроллеров Lavender и Jasmine
Требования Единицы
Мин. Тип. Макс. измерения
Питание портов ввода-вывода VDDE 3,0 3,3 3,6 В
Питание внутренних модулей VDDI 2,3 2,5 2,7 В
Питание выходных ЦАП DAC_VDDA 2,3 2,5 2,7 В
Входные напряжения 3,3 VIH 2,0 - VDDE+0,3 В
высокого уровня 5* 2,0 - 5,5
Входные напряжения 3,3 VIL -0,3 - 0,8 В
низкого уровня 5* -0,3 - 0,8
| Диапазон рабочих температур Та -40 - +85 С
* — напряжения высокого уровня сигналов в интерфейсе ULB.
Компоненты и технологии, № 8'2003
вывода). Fujitsu рекомендует следующий порядок подачи напряжений при включении графического контроллера: сначала VDDI, затем VDDE. Выключение рекомендуется проводить в обратном порядке. Допустимые режимы эксплуатации графических контроллеров приведены в таблице 7.
Потребление графического контроллера в наибольшей степени определяется потреблением ядра устройства, а точнее рабочей частотой. Чем выше частота, тем выше потребление. Значения максимального потребления ядра контроллера Jasmine в зависимости от частоты приведено в таблице 8. Следует иметь в виду, что если схемотехническая реализация устройства на базе Jasmine подразумевает нагруженность (по току) портов ввода-вывода, то потребление графического контроллера возрастет.
Таблица 8. Максимальное потребление
ядра Jasmine
Рабочая частота, МГц Потребление, Вт
16 0,36
20 0,421
36 0,652
48 0,811
64 1
Быстрый старт
В завершение несколько слов о том, как можно ускорить разработку графической подсистемы на базе контроллеров Lavender и Jasmine. На сайтах фирм КТЦ МК (www.cec-mc.ru) или Fujitsu (www.fme.gsdc.de) можно скачать файлы спецификаций обоих графических контроллеров, а также, для ускорения разработки, воспользоваться готовой схемой подключения графического контроллера Lavender к микроконтроллеру MB91F361 (Jasmine подключается аналогично).
Однако и здесь есть нюанс. Дело в том, что в семействе микроконтроллеров MB91F361 в свое время были обнаружены ошибки, которые могут приводить к некорректному выполнению программы. В настоящее время их выпуск прекращен. Для новых разработок Fujitsu рекомендует использовать в качестве замены микроконтроллер MB91F362GA, который повыводно совместим с MB91F361.
Выводы
Очевидно, что графическая подсистема, реализованная в связке графического контрол-
лера Jasmine с мощным 32-разрядным RISC-микроконтроллеором MB91F362GA, обеспечит не только отличную производительность в двухмерной графике, возможность подключения широкого круга дисплеев и обработку видео с внешних источников. Данное сочетание оставляет простор для чрезвычайно гибкой интеграции графической подсистемы в самую различную аппаратуру, благодаря широким интерфейсным возможностям микроконтроллера MB91F362GA (3 канала CAN 2.0B, 3 канала UART, 5 каналов DMA).
В случае же разработки новой вычислительной системы сравнительно невысокой степени сложности (например, автомобильного бортового компьютера) целесообразно вовсе отказаться от использования дополнительных микропроцессоров и возложить все задачи по управлению впрыском двигателя и контролем работы оборудования на MB91F362GA. Большой объем памяти микроконтроллера MB91F362GA (512 кбайт Flash, 16 кбайт ОЗУ), встроенные 10-разрядные АЦП (16 каналов) и ЦАП (2 канала), а также множество дополнительных функций прекрасно позволят ему, помимо управления графическим контроллером, решать целый комплекс задач.