Процесс вывода на экран
Что бы связать воедино все, что было сказано выше, распишу процесс вывода на экран, происходящий внутри ПЛМ.
Упрощенная блок-схема видео-контроллера:
Тактовый генератор задает частоту 42MHz. Первым делом эта частота делится на 3, а затем на 2, получая 14 и 7 MHz для вывода пикселей. 14MHz в режиме 640 точек и 7MHz в режиме 320 точек. 7MHz делится еще раз на 8 получая номер точки в квадратике. Затем получившаяся частота делится на 56. Этот делитель является и счетчиком знакомест, номер которого подается как часть адреса режима экрана. Полученная после деления на 56 частота является частотой синхронизации строк. Она делится на 8 вертикальным счетчиком строк знакоместа. Далее деление частоты продолжается и для получения 312 или 320 линий на кадр используется управляемый счетчик – он же счетчик знакомест по вертикали и часть адреса режима экрана. И последний счетчик делит полученную частоту кадров на 32 что бы получить сигнал FLASH.
Данные счетчиков знакомест по горизонтали и вертикали подаются как часть адреса на видео-ОЗУ. Остальная часть адреса соответствует тому положению, где находятся данные видео-режима. И, таким образом, из видео-ОЗУ считываются данные режима, а именно 4 байта Modei. Эти байты определяют в каком режиме выводить данные на экран и из какого места их брать. В соответствии со считанными байтами Modei из видео-ОЗУ производится следующая выборка, а именно выборка байта знакогенератора и атрибута для текстового режима или выборка байта цвета для графического. Из этих байтов (а в случае необходимости и из сигнала FLASH) формируется необходимый адрес цвета в палитре и производится следующий цикл считывания из памяти, при котором данные сразу же записываются в цветовые регистры с ЦАП-ами, которые и формируют сигнал цвета для монитора.
Еще раз распишу немного подробнее, по тактам.
Тактовая частота – 42MHz. Период одного пикселя – 6 однотактовых циклов. Циклы распределяются следующим образом:
TAKT 1 – выборка байта пикселей текстового режима в графическом режиме – холостой ход; TAKT 2 – выборка текстового атрибутa, он же выборка байта пикселя для GRAF-Modes; TAKT 3 – выборка 3-х байтов палитры для режимов 640 точек, в 320 - холостой ход;
TAKT 4 – выборка слова режима экрана выборка производится один раз в четыре периода; TAKT 5 – цикл записи от процессора, данные пишутся только когда нужно;
TAKT 6 – выборка 3-х байт палитры с записью в RGB регистры.
Все начинается с такта 4. Адрес для режима определяется счетчиком вертикали и горизонтали. Считаются по 8 точек 320-го режима по вертикали и по 8 строк по горизонтали. Считанные данные помещаются в регистры режима Modei, описанные выше.
С пятым тактом все ясно. За исключением того, что для графического и текстового режимов изменяется адресация ОЗУ Изменение задается номером страницы Страницы 50..5F считаются графическим ОЗУ. Следует отметить, что понятие графического и текстового режима адресации не совсем верно отражает суть. Вывод данных в экранное ОЗУ может осуществляться в обоих режимах независимо от действительного режима экрана.
6-й такт. Чтение палитры. В текстовом режиме адрес палитры составляет 10 бит. 8 бит – байт атрибута. 1 бит – пиксель. 1 бит – FLASH. Этот бит фактически переключает две палитры с частотой FLASH. Если палитры для данного атрибута совпадают то FLASH не наблюдается.
В графическом режиме адрес палитры составляет 8 бит байта пикселя и 2 бита номера палитры, считан- ного в 4-м такте, но задержанного на 1 период для синхронного изменения режима и палитры в знакоместе. Еще один бит адреса используется для разделения палитр текстового и графического режимов. Остав- шиеся адреса ОЗУ устанавливаются в "1"и вся палитра оказывается на концах 1024-х байтовых линий графического режима.
Такт 1. Здесь начинает действовать новый режим, считанный в такте 4. Адрес ОЗУ является адресом
байта пикселей текстового режима. Байт пикселей записывается в сдвиговый регистр и первый выдвинутый бит начинает действовать в 6-м такте.
Такт 2. Выбирается байт атрибута. Адрес отличается от адреса байта пикселей по известному Спек- трумовскому закону. Если перед этим в 4-м такте был считан графический режим, то Адрес атрибута становится другим и соответствует байту пикселя графического режима. Регистр атрибута в графическом режиме является регистром байта пикселя.
Такт 3. Чтение палитры для режима 640 точек. Следует заметить что в графическом режим 640 точек, 4 старших бита регистра пикселя маскируются нулями и в этом такте в младших битах адреса оказываются те четыре бита, которые были замаскированы в 6-м такте. Так организуется 16 цветов на точку.