ZXNet эхоконференция «hardware.zx»


тема: [FWD] Fw: Конвертер ZX-VGA



от: Wladimir Bulchukey
кому: All
дата: 05 Feb 2004
От Максима Тимонина:

=== Cut ===
Теперь вот о деле: я тут с Чуниным Романом (владелец
Спринтера) делаем RGB2SVGA конвертер. Мы подготовили текст, в
котором описываются принципы будущей платы. HЕ мог бы ты кинуть
ее в фидо, чтобы народ посмотрел и пообсуждал. Может глюки какие
найдут?
=== Cut ===

=== Cut ===
1. Конвертер ZX-VGA
1.1. Hемного о сигналах.
Телевизионное изображение:
768х576 интерлейсная (черезстрочная) развертка изображения.
25Гц (50Гц для полукадров).
VGA изображение:
800х600 прогрессивная (построчная) развертка изображения.
60,72,75,85,100Гц.
При постройке изображения в ZX не используются полукадры,
т.е. картинка строится полностью в каждом полукадре (этим и
ограничено количество точек 768х288, а если убрать все невидимые
части то и 702х256). Также используется сложенная синхронизация,
т.е. кадровая (вертикальная) и строчная (горизонтальная)
синхронизация подается на один вход.
Hа VGA используются разные входы для горизонтальной и
вертикальной синхронизации. Причем существует разные режимы
(определены стандартом VESA) при которых полярность этих
сигналов может быть разной.
Hапример, рассмотрим режим 800х600 60Гц:
? пиксельная частота 40МГц;
? горизонтальный передний зазор (после окончания
горизонтального синхроимпульса и началом видимой части строки)
40 пикселей;
? горизонтальный синхроимпульс 128 пикселей и положительной
полярности;
? горизонтальный задний зазор (после окончанием видимой части
и началом горизонтального синхроимпульса) 88 пикселей;
? вертикальный передний зазор (после окончания вертикального
синхроимпульса и началом видимых строк изображения) 1 строка;
? вертикальный синхроимпульс 4 строки и положительной
полярности;
? вертикальный задний зазор (после окончания видимых строк
изображения и началом вертикального синхроимпульса) 23 строки;
Очевидно, что пиксельная частота (частота с которой меняется
информация о минимальной части изображения) различается в разы.
В случае, если мы хотим минимальной переделки (а возможно и без
переделки) на канале вывода ZX компьютера и желательно с
сохранением возможностей (вывод на ТВ совместимый монитор), то
самым разумным выбором будет устройство получившее название
'фрейм-буфер'.
1.2. Что такое 'фрейм-буфер'.
Под этим подразумевается устройство, имеющее память для
сохранения одного кадра (причем в формате выводящего этот кадр
компьютера, т.е. ZX), затем после соответствующих преобразований
в формат приемного устройства (VGA).
Плюсы такого подхода:
? отсутствие необходимости переделки канала вывода ZX и
соответственно сохранение всех возможностей;
? возможность одновременной работы, как на ТВ мониторе, так и
на VGA;
? сохранение 'эффектов бордюрной графики';
? отсутствие дополнительных цифроаналоговых преобразований;
Минусы такого подхода:
? при раздельных генераторах частоты - невозможно добиться
плавности отображения быстро движущихся частей изображения (для
этого нужно использовать один генератор опорной частоты, как у
компьютера так и у конвертера, и рассчитать тракт соответственно
для этой частоты);
? эффект больших (квадратных) пикселей, т.е. в связи с разной
разрешающей способностью придется использовать дублирование
строк и дублирование пикселей в строке, чтобы получать
соразмерное изображение.
Так как изначально компьютер затачивался под ТВ, то
соответственно идеальным будет изображение только на нем.
Возможно, появиться скоро модель, заточенная под VGA, но это
будет совсем другой компьютер, и тайминги у него будут совсем
другие, а соответственно многое программное обеспечение,
использующее эти особенности, придется или переписать или
выкинуть.
Задачи достижения максимально возможного качества в нашем
случае не стоит. Стоит задача достичь возможности отображать на
VGA с минимальными переделками (и ценой). Поэтому, я считаю, что
такой метод даст наилучший результат.
1.3. Функциональная схема

[ следует в UUE далее ]

Вышеприведенная схема представляет собой упрощенную схему
классического 'фрейм буфера'.
Сначала поясню базовые понятия, а потом рассмотрим схему по
блокам:
? RGB цифровой сигнал - это сигнал который преобразуется в
аналоговый для отображения. Hапример, у Пентагона 128 это сигнал
снимается с двух микросхем КП12, формирующих сигнал R,G,B и
Y(яркость);
? Пиксельная синхронизация - сигнал, по который информирует о
смене пикселя;
? Горизонтальная (строчная) синхронизация - сигнал, который
информирует о смене строки;
? Вертикальная (кадровая) синхронизация - сигнал, который
информирует о смене кадра.
Все эти сигналы доступны на клонах ZX, так как собраны они на
обычных логических элементах, надо только внимательно покопаться
в схеме. К сожалению, если используются микросхемы высокой
интеграции или программируемые матрицы, то какие-то сигналы
могут отсутствовать. В этом случае, придется добавить
дополнительные анализирующие блоки в схему. Так как в России
особого распространения фирменные модели не получили, то данный
вопрос рассматриваться не будет.
Теперь вкратце рассмотрим работу устройства:
? Входной регистр - служит для запоминания последнего
состояния цифровых сигналов RGB ZX. Защелкивает информацию по
сигналу пиксельной синхронизации от ZX. Его разрядность зависит
от организации выходного канала конкретного клона ZX (для
Пентагона 4 бита, для АТМ 6 бит), но, как правило, восьми битов
хватает для всех клонов (кроме Спринтера, ему необходимо 24
разряда, так как он поддерживает TRUECOLOR).
? Счетчик адреса ТВ - для каждого пикселя отображаемой
поверхности отводится одна ячейка в буферной памяти. Адрес
считается от начала кадра (т.е. по сути, вертикальная
синхронизация является сигналом сброса для счетчика) и для
каждого пикселя. Сразу замечу, что информация бордюра, тоже
считывается попиксельно (это надо для сохранения эффектов
бордюрной графики). Во многих клонах используются несколько
режимов экрана, когда на строку отображения приходится разное
количество пикселов (например, CP/M экран Profi и обычный ZX
экран), для этого пригодится сигнал строчной синхронизации,
который будет отсчитывать ширину отображаемой области
(достаточно защелкнуть значение адреса на первой строке - это и
будет ширина экрана). Hо вопрос пока открытый, логичнее
использовать независимую пиксельную синхронизацию, построенную
от частотозадающей цепи компьютера, тогда независимо от
логической ширины экрана количество пикселов будет одинаково.
? Счетчик адреса VGA - этот счетчик работает от независимого
опорного генератора частоты для VGA. Опорный генератор частоты
выбирается исходя из пиксельной частоты VGA (например, для
800х600 60Гц - 40МГц). Hа базе значений этого счетчика строятся
сигналы синхронизации для VGA. Также для видимой области
отображения значения счетчика используются для получения адреса
пикселя в буферной памяти.
? Генератор управляющих сигналов - формирует все сигналы для
управления блоками, кроме входного регистра и счетчика адреса
ТВ. Этот блок отвечает за общее управление схемой. Управляет
мультиплексором адреса, сигналами записи/чтения информации в
буферной памяти, управляет выходным регистром. Сигналы строятся
на базе сигнала опорного генератора частоты.
? Мультиплексор адреса - при цикле записи в память подключает
адрес со счетчика адреса ТВ, а при цикле чтения из памяти
подключает адрес со счетчика адреса VGA.
? Буферная память - емкость вычисляется довольно таки легко:
ширина экрана ТВ (768) * количество строк ТВ в полукадре
(288).
Хотя более точные значения я хотел бы узнать от знатоков. Hо
в любом случае достаточно 256 Кбайт памяти. К сожалению если
решать 'в лоб




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Новости - новости от Ковровских спектрумистов.
Каракули мозга - Межлокальная контрабанда. Лечебные заговоры (от пьянства, похмелья, запоя).
Друзьям - самый лучший друг группы ZER0 GUYS - группа NORТH SТАR.
Размышления - конкурс на лучшую графику, музыку и DEMO 1998 года. О наездах и сделанных программах за последнее время. Журналы сейчас размножаются,как китайцы.
Проходилка - Paradise Lost (demo).

В этот день...   25 апреля