Доповідь - Робота відеоконтролерів EGA та VGA у графічних режимах
Химия

Доповідь — Робота відеоконтролерів EGA та VGA у графічних режимах


Завантажити доповідь: Робота відеоконтролерів EGA та VGA у графічних режимах

Графічні режими контролерів EGA, VGA та SVGA можна розділити на 2 основні групи: режими з 16 кольорами та режими з 256 кольорами. Ці дві групи сильно відрізняються один від одного щодо організації відеопам’яті.

Відеорежими з 16 кольорами

Контролер EGA працює в режимах з роздільною здатністю 640х200 і 640х350 пікселів, контролер VGA має додатковий режим 640х480 пікселів, а контролери SVGA часто можуть також реалізовувати режими 800х600 і 1024х768 пікселів. На жаль, відеопам’ять у цих режимах має дуже незручну та морально застарілу організацію, що дуже сповільнює виведення графіки. В даний час ці відеорежими використовуються тільки для створення простих статичних зображень (креслень та діаграм).

У режимах з 16 кольорами пам’ять розділена на 4 відеоплощини: по одній на кожен із основних кольорів і одна площина служить для кодування яскравості. Байт даних у відеоплощині кодує інформацію для восьми розташованих поряд по горизонталі точок (пікселів).

Спрощена схема проходження даних через графічні контролери EGA і VGA в графічних режимах з 16 кольорами (ланцюги установки/скидання не показані):

                                          Битовая
------¬ маска
----------------->¦ ¦ -¬ ----------¬
¦ -¬ ¦ АЛУ +--->¦¦ ¦Плоскость¦
¦-->¦+--------T-->¦ ¦ ¦¦ ¦ 3 ¦
¦¦ L-Защелка ¦ L------ ¦+------>¦ ¦
¦¦ ¦ ¦¦ ¦ ¦
¦¦ L------------->¦¦ ¦ ¦
¦¦ L- ¦ ¦
Сдвигающий¦L------------------------------------+ ¦
регистр ¦ ------¬ ¦ ¦ --¬ +---------------->¦ ¦ -¬ -+--------¬¦
¦ ¦ ¦ -¬ ¦ АЛУ +--->¦¦ ¦Плоскость+-
Байты ¦ ¦ ¦-->¦+--------T-->¦ ¦ ¦¦ ¦ 2 ¦
данных от ¦ ¦ ¦¦ L-Защелка ¦ L------ ¦+----->¦ ¦
процессора ¦ ¦ ¦¦ ¦ ¦¦ ¦ ¦
==========>¦ +--+¦ L------------->¦¦ ¦ ¦
¦ ¦ ¦¦ L- ¦ ¦
¦ ¦ ¦L-----------------------------------+ ¦
¦ ¦ ¦ ------¬ ¦ ¦
L-- +---------------->¦ ¦-¬ -+--------¬¦
¦ -¬ ¦ АЛУ +--->¦¦ ¦Плоскость+-
¦-->¦+--------T-->¦ ¦ ¦¦ ¦ 1 ¦
¦¦ L-Защелка ¦ L------ ¦+---->¦ ¦
¦¦ ¦ ¦¦ ¦ ¦
¦¦ L------------->¦¦ ¦ ¦
¦¦ L- ¦ ¦
¦L----------------------------------+ ¦
¦ ------¬ ¦ ¦
L---------------->¦ ¦ -¬ -+--------¬¦
-¬ ¦ АЛУ +--->¦¦ ¦Плоскость+-
-->¦+--------T-->¦ ¦ ¦¦ ¦ 0 ¦
¦ L-Защелка ¦ L------ ¦+--->¦ ¦
¦ ¦ ¦¦ ¦ ¦
¦ L------------->¦¦ ¦ ¦
¦ L- ¦ ¦
L---------------------------------+ ¦
¦ ¦
L----------

Зсувний регістр служить в основному як буфер для зберігання байта даних, що надійшов від процесора. Операція зсуву даних використовується вкрай рідко, оскільки значно зручніше виконувати в процесорі.

Регістри-засувки служать для тимчасового зберігання старого вмісту 4-х байтів з однаковими адресами з 4-х відеоплощин: часто необхідно змінювати лише деякі з 8 точок, що описуються цими байтами даних, а решта інформації повинна залишатися незмінною. Щоб у засувках збереглося старе значення даних, перед операцією запису відео пам’ять має бути виконана операція читання з відеопам’яті за тією ж адресою.

Для визначення того, які точки мають бути змінені, а які збережені, використовується регістр бітової маски. Біт регістру бітової маски визначає, чи буде записана у відповідний біт відеопам’яті інформація з АЛУ або регістра-клапанця:

                    ---------¬       ----------¬
¦ Бит из ¦ ¦ Бит из ¦
¦ АЛУ ¦ ¦ защелки ¦
L----T---- L----T-----
¦ ¦
-----------¬ ¦ 1 0 ¦
¦ Бит из ¦ L------- -------
¦ регистра +-------------->
¦ битовой ¦ ¦
¦ маски ¦ ¦
L----------- ¦
V
Видеопамять

Арифметико-логічний пристрій дозволяє виконувати операції І (AND), АБО (OR) і ВИКЛЮЧАЮЧЕ АБО (XOR) над вмістом регістра-заскочки і байтом, що надійшли від процесора. Це дозволяло створювати примітивні анімаційні ефекти, проте нині такі прийоми мало застосовуються.

Недоліком графічних 16-колірних режимів є необхідність інтенсивної роботи з великою кількістю рагістрів під час виведення у відеопам’ять текстів та графіки. На одну операцію виведення у відеопам’ять припадає одна операція читання з відеопам’яті та одна-дві операції запису в регістри, що уповільнює роботу з відеопам’яттю в десятки разів (через конструктивні особливості контролерів EGA та VGA звернення до регістру виконується у кілька разів повільніше, ніж звернення до відеопам’яті).

Розглянемо найчастіше використовувані регістри:


«Перший регістр вхідного стану» (Input Status Register One) розташований за адресою 3DAh. Біт 3 у цьому регістрі встановлюється 1 протягом зворотного ходу променя по кадру. При виконанні різних відеоефектів типу прокручування зображення або перезавантаження палітри використовуваних кольорів, а також при створенні зображень, що рухаються, стан цього регістру доводиться постійно контролювати, так як в деякі регістри контролера дозволяється записувати дані тільки протягом зворотного ходу променя.

«Регістр адреси покажчика послідовності» (Sequenser Address Register), розташований за адресою 3C4h, визначає, який із 5 регістрів, асоційованих з портом 3C5h, буде доступний для операцій введення-виведення.

Щоб отримати доступ до Регістру маскування растру (Map Mask Register), необхідно записати на адресу 3C4h число. Кожному з 4 молодших бітів регістра маскування растру поставлена ​​у відповідність одна бітова матриця — запис 1 у будь-якій з цих бітів робить відповідну матрицю недоступною. Старші 4 біти не використовуються. Регістр маскування растру дозволяє копіювати складні графічні зображення з ОЗУ ЕОМ у відеопам’ять по черзі для кожної відеоплощини, що дозволяє виводити на екран заздалегідь створені та записані на диск картинки-слайди.

Регістр 3D4h визначає, який із регістрів контролера електронно-променевої трубки буде доступним для читання-запису інформації через регістр 3D5h.

Так, для доступу через порт 3D5h до 2″Регістру початкової старшої адреси» (Start Address High Register) необхідно записати в порт 3D4h число 0Ch, а для доступу до «Регістру початкової молодшої адреси» (Start Address Low Register) — число 0Dh. У ці регістри записується адреса комірки пам’яті першого монітора або пікселя, що відображається на екрані монітора. Обидва регістри доступні для читання та запису та використовуються для плавної вертикальної та грубої горизонтальної «прокрутки» зображення на екрані та для перемикання відеосторінок.

Для доступу до регістру «Зміщення» (Offset Register), який визначає обсяг відеопам’яті, виділеної для зберігання одного рядка відео, необхідно завантажити в регістр 3D4h код 13h.

Цей регістр призначений для підтримки режиму плавного прокручування зображення на екрані — довжина рядка, завдяки цьому регістру, може бути значно більше частини, що висвічується.

Регістр «Адреса графіки» розташований за адресою 3CFh і визначає, який з наступних регістрів підключений до порту 3CEh.

Регістр «Установка/скидання» з індексом 0 може бути використаний для вибору бітових матриць у режимі постійного скидання або встановлення. Для визначення бітової матриці як «встановленої» відповідний біт записується 1. Якщо біт встановлений в 0, то відповідна матриця знаходиться в режимі скидання. (Вміст цього регістру має значення лише у режимі запису 0).

Регістр 2 «Роздільна здатність установки/скидання» (індекс) дозволяє (при 1 у відповідному біті) або забороняє (при) режим установки/скидання для кожної з 4 бітових матриць.

Регістр «Циклічний зсув даних» з індексом 3 забезпечує зсув даних на задану кількість позицій вправо перед записом їх в комірку пам’яті, а також дозволяє здійснювати, замість простого запису інформації в пам’ять, операції І, АБО, і виключає АБО над вмістом комірки пам’яті та передаються з процесора даними.

Регістр «Вибір матриці, що зчитується» з індексом 4 визначає номер зчитуваної бітової площини в режимі читання 0. Номер бітової площини кодується в молодших двох бітах реєстру, а старші 6 біт не використовуються.

Регістр «Режим» має індекс 5.

Біти 0 та 1 цього регістру визначають режим запису:

— в режимі 0 дані, що вміщуються в пам’ять адаптера, записуються в кожну дозволену матрицю;

— в режимі 1 в пам’ять заноситься без зміни вміст регістрів-клацань (цей режим призначений для копіювання інформації з одного місця відеопам’яті до іншого);

— у режимі 2 регістр бітової маски застосовується для заборони або дозволу встановлення окремих пікселів у заданий колір;

— у режимі 3 виконується операція І над вмістом регістру установки/скидання та бітовою маскою, а результат заноситься у відеопам’ять.

Біт 3 визначає режим зчитування даних із відеопам’яті. При 0 в цьому біті процесор прочитає байт з відеоплощини, номер якої заданий в регістрі «вибір матриці, що зчитується». При 1 у цьому біті в ліченому процесором байт в 1 будуть встановлені тільки ті біти, для яких колір пікселів відповідає значенню, вказаному в регістрі «Порівняння кольору».

Регістр «Змішані дані» з індексом 6 керує типом режиму: текстовий або графічний», а також визначає початкову адресу відеопам’яті. Регістр «Колір байдужий» з індексом 7 дозволяє ігнорувати встановлені в регістрі «Порівняння кольорів» значення для заданих відеоплощин. з індексом 8 дозволяє (при 1 у відповідному біті) або забороняє (при 0) модифікацію певних бітів у байті відеопам’яті, до якого звертається процесор.

Порт 3C0h використовує інший спосіб економії простору адрес. Перед зверненням до цього порту необхідно виконати операцію зчитування з порту 3DAh. Потім у порт 3C0h заноситься індекс необхідного порту, а при наступному зверненні до порту 3C0h буде зроблено запис у вибраний регістр. Так, для звернення до регістру «Горизонтальне поелементне панарамування» необхідно спочатку задати індекс 13h. Регістр поелементного панарамування використовується для плавного прокручування зображення по горизонталі в 16-колірних графічних режимах, коли кожному байту бітової площини відповідає 8 пікселів на екрані (і зміна одних тільки регістрів початкової адреси призводила б до стрибка відразу на 8 пікселів).

© Реферат плюс



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *