Soviet Union ZX Spectrum CommunityЧетверг, 28.03.2024, 15:30
Вы вошли как Гость | Группа "Гости" | RSS
 [ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 5 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
Soviet Union ZX Spectrum Community » ZX-строительство » Железо » Разработка схемы видео-адаптера для ZX-Spectrum
Разработка схемы видео-адаптера для ZX-Spectrum
HazarДата: Четверг, 24.11.2016, 23:19 | Сообщение # 81
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline


Можно режим редакции включить на все последние сообщения
Прикрепления: 6421135.gif (41.8 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Четверг, 24.11.2016, 23:21
 
HazarДата: Воскресенье, 11.12.2016, 22:12 | Сообщение # 82
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Знакогенератор часть4

Эта переменчивая “CHARS” или как определить текстовой режим.

Как уже упоминалось в теме переменная “CHARS” используется для указания
Программным процедурам выполняющих печать на экран где искать набор символов.

В ZX Spectrum 48 она находится по адресам 23606, 23607

В ячейку 23607 программа инициализации заносит старший разряд (16 bit числа)
hex 3C / dec 60 . А в 23606 младшая часть содержит 0 ,так как Hex 3C00 = Dec 15360.

адрес 15360 +256 соответствует стандартному положению набора символов
который расположен в ПЗУ ZX Specrum 48. Однако Пользователь может в любой
момент изменить содержимое ячеек системной переменной CHARS и указать
другое расположение таблицы изображений символов, при этом если на месте
новой таблицы окажется посторонняя информация не имеющая отношения к
символам, то на экране будет отображаться неизвестно что.

Некоторые сложные прикладные программы могут формировать сразу несколько символьных таблиц и оперативно
менять шрифт в соответствии с требуемыми условиями. Поэтому требуется более сложное устройство
(чем было предложено ранее) для отслеживания местоположения таблицы символов. Что мы и попробуем сделать.

Схема определения переменной Chars состоит из набора логики, 2 параллельных регистров и сумматора ,развернутая схема
сумматора не приводится из за большого количества элементов .



Создать любой требуемый сумматор можно с помощью встроенного в Квартус мастера “ Mega Wizard Plug In “

Прикрепления: 1083388.gif (21.6 Kb) · 6339411.gif (26.3 Kb)


Spectrum жив в нашей душе навсегда
 
HazarДата: Пятница, 16.12.2016, 16:36 | Сообщение # 83
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Знакогенератор файлы для Fpga
Прикрепления: _Rom_file.zip (46.8 Kb)


Spectrum жив в нашей душе навсегда
 
HazarДата: Суббота, 17.12.2016, 21:01 | Сообщение # 84
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Обновление схемы формирователя Border
По сравнению с прошлой схемой добавлен блок синхронизации процессора (элементы: триггер inst28, счетчик inst4 /асинхронный сброс/, вспомогательная логика) .

Увеличена рабочая частота формирователя до 100 Hz с целью увеличить количество совпадений (при операции сравнения строк и колонок) .
А также добавлен узел “подстройки” длительности бордерной линии (элементы: inst10, inst33, логика).

Установлен дополнительный 6 разрядный компаратор для синхронизации выводимых колонок (относительно сигнала INT_CPU 50Hz).
Прикрепления: _Border_02.zip (42.9 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Понедельник, 19.12.2016, 18:53
 
Black_CatДата: Воскресенье, 18.12.2016, 16:10 | Сообщение # 85
Координатор
Группа: Координаторы
Сообщений: 701
Статус: Offline
Цитата Hazar ()
Символьная Графика пользователя (UDG) .

В верхних областях памяти компьютера, начиная с адреса 65368 и по адрес 65535 находится область UDG-графики (графики пользователя). Она занимает 168 байт, каждый символ занимает 8 байтов, таким образом можно задать только 21 символ.

На клавиатуре компьютера эти символы "привязаны" к клавишам от A до U в алфавитном порядке и выдаются на экран когда компьютер находится в графическом режиме, Этот режим обычно применяют когда нужно печатать на экране не стандартные символы или используют для добавления национальных
шрифтов.

Обращение процессора к этой области можно интерпретировать с некоторыми оговорками как символьный режим для печати текста на экране.

И соответственно сформировать управляющий сигнал для манипуляций
С символьными данными с которыми в текущий момент времени работает процессор.


Имхо, спорный способ включения аппаратного текстового режима или знакогенератора. Область UDG является таковой только для BASIC, а игры и пользовательские программы могут использовать её как хотят. То же можно сказать и о CHARS.

Касательно текстовых режимов для Спектрума, то я этот вопрос изучал. Текстовые видеорежимы 32х24, 64х24 реализуются на клонах Спектрума сравнительно просто. Например на Фениксе, не считая дешифратора и управляющего триггера, требуется всего пару микрух для реализации 32х24 http://zx.clan.su/forum/8-66-867-16-1399210558 . 80ти колоночный текстовый режим, я считаю правильнее реализовывать на внешней видеокарте в адресном пространстве #2000-#3FFF, при этом знакогенератор будет располагаться в стандартных адресах ПЗУ Спектрума.

Что касательно размещения знакогенератора в FPGA, то моё мнение - это довольно расточительно.


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
HazarДата: Воскресенье, 18.12.2016, 20:23 | Сообщение # 86
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Цитата Black_Cat ()
Имхо, спорный способ включения аппаратного текстового режима или знакогенератора. Область UDG является таковой только для BASIC, а игры и пользовательские программы могут использовать её как хотят. То же можно сказать и о CHARS.


Да конечно вопрос сложный, пока к сожалению других идей нет. Ну а насчет игр если они не используют стандартные методы вывода , то просто
символьный режим не определится и символ будет выведен как графика.

Цитата Black_Cat ()
Текстовые видеорежимы 32х24, 64х24 реализуются на клонах Спектрума сравнительно просто. Например на Фениксе, не считая дешифратора и управляющего триггера, требуется всего пару микрух для реализации 32х24 http://zx.clan.su/forum/8-66-867-16-1399210558 . 80ти колоночный текстовый режим, я считаю правильнее реализовывать на внешней видеокарте в адресном пространстве #2000-#3FFF, при этом знакогенератор будет располагаться в стандартных адресах ПЗУ Спектрума.


Я бы не сказал что просто нужна реальная схема идентификации символьного режима (хотя бы для бейсика )

Знакогенератор 32x24 не вместится в стандартное ПЗУ там всего 768 байт отведено (только для символов 8х8)


Spectrum жив в нашей душе навсегда
 
Black_CatДата: Воскресенье, 18.12.2016, 20:48 | Сообщение # 87
Координатор
Группа: Координаторы
Сообщений: 701
Статус: Offline
Текстовому режиму не нужно привязываться к BASIC, как и любой другой видеорежим он может быть включен через свой порт.

Цитата Hazar ()
Знакогенератор 32x24 не вместится в стандартное ПЗУ там всего 768 байт отведено (только для символов 8х8)

А что мешает разместить 2кб знакогенератор? :)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
HazarДата: Понедельник, 19.12.2016, 19:10 | Сообщение # 88
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Цитата Black_Cat ()
Текстовому режиму не нужно привязываться к BASIC, как и любой другой видеорежим он может быть включен через свой порт.


Basic он сам по себе работает вполне самодостаточная система , порты при этом нужны только для общего управления (например изменить
размер символов, добавить (убрать) дополнительные колонки строки для знакоместа).

Цитата Black_Cat ()
А что мешает разместить 2кб знакогенератор? :)


Стандартная адресация системного ПЗУ и фиксированное положение набора символов 15616 dec
*************************************************************************************

Знакогенератор часть 5

Идентификация текстового режима методом определения обращений CPU
К стандартным процедурам печати .

В системном ПЗУ ZX Spectrum 48 содержится несколько подпрограмм которые
Производят печать символов на экран монитора или управляют выводом символов на принтер. Процедуры являются общими для экрана и принтера,
поэтому перед вызовом процедуры пользователь должен установить канал ввода (вывода), для правильной передачи информации по назначению.

Стандартные каналы ZX Spectrum 48.

Стандартными каналами для ввода вывода информации являются:

"К" - Канал (I/O) обслуживает клавиатуру, нижние две строки экрана (системное окно)
"S" - Канал вывода, основная часть экрана .
"P" - стандартный "ZX-принтер".
"R" - используется для записи байта в рабочую область памяти, адресуемую переменной, последний канал недоступен из среды “zx бейсика”.

Для надежного определения текстового режима требуется динамически определять
Состояние каналов "К" и "S" . Что возможно если проверить состояние системного
Флага находящегося по адресу 23611 (5СЗВ hex) флаг модифицируется по мере необходимости системными процедурами .

Первый бит системной переменной FLAGS (5C3B). Должен быть выключен для каналов "S" и "К", и включен для канала "P" (ZX-принтер).

Список стандартных процедур печати:

09F4 - 0A10 - PRINTOUT - выполняет функции диспетчера.

0A09 - 0ADB PRINTABLE CHARACTER CODES - выполняет печать (ASCII) символов.

0B24 - 0B7E PRINT ANY CHARACTERS - печать символов, токенов, псевдо-графика и UDG.

0B7F - 0BDA PRINT ALL CHARACTERS – печать всех символов (основная процедура печати)

0C0A - 0C3A MESSAGE PRINTING -печать токенов ключевых слов и системных сообщений.

0D6B - 0DFD CLS COMMAND - выполняет очистку экрана.

2DE3 - 2F9A PRINT_FP . Печать преобр. чисел в 10-й системе с плавающей тчк. (5 Bytes) .
Прикрепления: Proc-Print_All.zip (80.7 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Среда, 21.12.2016, 00:21
 
HazarДата: Пятница, 23.12.2016, 23:11 | Сообщение # 89
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Исправление и доработка схемы детектора обращений к стандартному Знакогенератору

В выложенной прошлой схеме дешифрация адресного пространства
Производилась в завышенном диапазоне >768

Добавлено (23.12.2016, 23:11)
---------------------------------------------
Знакогенератор часть 5

203С PR-STRING Программа печати символов в виде строки
Эта процедура при своей работе использует обращения к RST 16, как к подпрограмме .

Поэтому нет нужды делать отдельный детектор (hex 203C) достаточно с детектировать
Выполнение кода команды RST 16 (код D7 HEX)



Кодировка символов ASCII ( American Standard)

Процессоры не умеют работать напрямую с символами поэтому каждому символу был назначен свой
Уникальный числовой код для символов используются кода с 32 по 127. Коды с 0 по 31 используются компьютером в качестве
управляющих при операциях ввода/вывода например для перемещения курсора и других вспомогательных операциях
В ZX Spectrum как и во всех компьютерах есть процедуры для работы с ASCII кодами.

Например программа расположенная по адресу.

15EF-15F1 OUT-CODE переводит целые числа от 0 до 9 в значение кода ASCII.

Эта процедура в виде подпрограммы обычно входит в состав программ которые производят вывод символов на экран или принтер.
Прикрепления: 9190176.zip (139.9 Kb) · 3362645.gif (4.5 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Пятница, 23.12.2016, 23:43
 
HazarДата: Вторник, 27.12.2016, 17:44 | Сообщение # 90
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Динамический цветовой секвенсор (устройство расширения цвета).
Данное устройство является чисто любительской доработкой
(разработано в честь предст. праздника нового года ).

Секвенсоры это устройства которые применяются в музыкальных синтезаторах. При сочинении музыки часто бывает нужда записать понравившийся
фрагмент мелодии или ритма в виде электронной записи (последовательности нот) И в дальнейшем при необходимости можно воспроизвести
записанный фрагмент в любом месте композиции. В отличии от музыканта нам не надо сочинять цветовую последовательность
Так как пользуемся уже готовыми игровыми программами, в качестве последовательности используются коды операций которые периодически переключают цветовую гамму по мере выполнения машинного кода, в качестве дополнительных данных для расширения цветовой палитры используются адресные линии процессора.

Для того чтобы получить более-менее осмысленную раскраску объектов используется подпрограммы (коды операций CALL .RET ) которые производят вывод информации на экран (при активном сигнале детектора экрана). Таким образом для каждой подпрограммы цветовой
Секвенсор будет воспроизводить неповторимую последовательность цветов которая будет выводится по разному, для каждой вновь запущенной программы.
Пример последовательности команд:

CALL 35000 – (1000 1000 1011 1000) активация 1 палитры -- RET запрет
CALL 35228 – (1000 1001 1001 1100) активация 2 палитры -- RET и.т.д.

Полученная цветовая палитра временно сохраняется в регистрах секвенсора и выводится через выходной буфер при использовании PLIS (эл. “LCELL” “TRI” ) и далее на вход Ц.А.П. (R8,G8,B8) или упрощенный вариант (R6,G5,B5) , Подробности по буферным элементам можно почитать в теме “ Буфер шины данных”.

Прикрепления: 1632566.gif (30.3 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Среда, 28.12.2016, 13:02
 
HazarДата: Вторник, 03.01.2017, 19:30 | Сообщение # 91
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Знакогенератор часть 6

Символы псевдографики и текстуры при использовании результатов вычислений.

Псевдографику часто использовали для оформления текстовых доков ,
При этом рисунок делали исходя из приблизительной оценки ур. яркости
cимволов кода ASCII.

интенсивность ____ код ASCII

0 - 0 __________32
1 - 10 _________ 176
11 - 20 _________ 177
21 - 31 _________ 178
32 - 32 _________ 219

С тех прошло довольно много времени, но несмотря ни на что псевдо-графику применяют и сейчас. Впоследствии увлечение рисованием псевдографикой переросла в целое направление, поддерживаемое приверженцами художественного увлечения, или просто людьми, которые любят дизайн и красоту.



Используя современные средства проектирования можно значительно расширить
возможности псевдографики при использовании математических приемов,
например расширить кол-во и разнообразие символов до 65535 и более.
При этом не потребуется большой объем ROM для хранения образов символов.
****************************************************************
В основах математики разные виды чисел образуют разные подмножества систем счисления. Числа описывающие совершенные квадраты (1, 4, 9, 16…) являются подмножеством целых чисел (1, 2, 3, 4…), которые, в свою очередь, являются подмножеством вещественных чисел.

Другими словами вещественные числа обладают большой информационной “емкостью”
Например при делении чисел с высокой точностью можно получить повторяющиеся
Массивы чисел как с малым так и с большим периодом повторения (что сильно напоминает обычные электрические сигналы с разной частотой повторов или различных наборов импульсов).

Обратите внимание результат математической операции можно использовать
как управляющую последовательность (ну например для счетчика или мультиплексора).

Также часто при делении возникают бесконечные последовательности чисел.

0.987654321 / 8 = 0.12345679012345679… = 10 / 9^2
1 / 27 = 0,037037037037037037…;
1 / 37 = 0,027027027027027027…;

(полученный ряд можно применить в качестве графических текстур при моделировании различных поверхностей . А также при наложении цветовых градиентов с изменением яркости цвета.)

А вот примеры выражения с очень сложным «порядком» следования
(чередованием) чисел:

987654321000 / 123456789 = 8000,0000729000006633900060368491,
1 / 89 = 0,011235955056179775280898876404494

Чем не генератор случайных чисел? Который можно использовать при выводе
случайных пейзажей (например при построении береговой линии и др) .
Прикрепления: 7973114.gif (43.1 Kb) · 4444.zip (145.4 Kb) · 55555.zip (244.4 Kb) · 7777.zip (117.1 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Вторник, 03.01.2017, 19:57
 
HazarДата: Вторник, 03.01.2017, 20:47 | Сообщение # 92
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Знакогенератор часть 6

Символы псевдографики полученные при вычислении



Составной символ 16Х16
Прикрепления: 5757834.gif (73.1 Kb) · 6572795.gif (23.8 Kb) · 4447727.zip (63.7 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Четверг, 05.01.2017, 11:32
 
HazarДата: Воскресенье, 12.02.2017, 19:23 | Сообщение # 93
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Применение сигнала RFSH для расширения возможностей видео-адаптера.

В обычных стандартных схемах ZX-Spectrum, Сигнал RFSH (CPU Z80). используется для регенерации динамической памяти, производится эта операция в конце машинного цикла после
декодирования и выполнения извлеченной команды внутри процессора при этом активизируется также сигнал /MREQ, адрес регенерации памяти выдается на шину A0-A6. Сам процесс регенерации производится процессором методом перебора 128 адресов.
Как только заканчивается чтение памяти в очередном цикле на A0-A6 выдается содержимое счетчика регистра регенерации ® (CPU Z80) , этот адрес остается на шине до окончания последнего такта T4. Поскольку регенерация является операцией доступа к памяти сигнал /MREQ переводится в состояние низкого уровня, а сигнал /RD устанавливается в состояние высокого уровня.


Формирование сигнала RAS (Row Access Strobe -Выборка строки DRAM).
С помощью сигналов процессора RFSH и MREQ формируется сигнал RAS. Таким образом, при каждом выполнении цикла M1 производится регенерация одной строки. После выполнения каждой команды производится увеличение регистра ® процессора на единицу.
********************************************************************************
Когда микропроцессор Z80 создавался, 7-разрядный адрес регенерации всех устраивал, поскольку самыми распространёнными микросхемами DRAM были кристаллы ёмкостью 128×128 разрядов (16 Кбит), для регенерации которых требовались 7-разрядные адреса. Позднее появились кристаллы с организацией 256×256 разрядов (64 Кбита); для их регенерации требовались уже 8-разрядные адреса (и более).
********************************************************************************
В связи с появлением самостоятельных методов регенерации больших объемов памяти (независимых от процессора), а также удешевлением микросхем SRAM . Появляется
возможность применения сигнала RFSH для других целей (например для организации
дополнительного доступа к видео-памяти и др.) При каждом появлении сигнала RFSH
адресную шину процессора и шину данных, можно без каких либо особых проблем использовать для нужд видео-вывода, например для расширения цвета или даже для объединения области атрибутов и пикселов в один массив.



Также в оригинальном Спектруме регенерация видео-памяти производилась отдельно от процессора благодаря непрерывным обращениям микросхемы “ULA” для поддержания и постоянного обновления видеосигнала.
Прикрепления: 4188151.gif (23.2 Kb) · 1063660.gif (36.4 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Воскресенье, 12.02.2017, 19:25
 
HazarДата: Суббота, 21.04.2018, 12:24 | Сообщение # 94
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Графические преобразования при масштабировании изображений.

При проведении графических преобразований существуют разные возможности.
Одним из методов масштабирования основан на математических вычислениях
(при использовании процессоров) для оптимизации скорости вычислений
Берется минимальный графический объект например [4x4]



При более меньшем Размере затруднительно провести идентификацию объекта, а при большем размере
неограниченно возрастает количество этих самых объектов что приводит К невозможности обработать все
нужные объекты за требуемый промежуток времени.
При размере объекта [4x4] и обработке экрана 256x192, наибольшее расчетное
количество объектов равно 384.
Преобразование объекта [4x4] до [8x8] можно выполнить простым умножением
исходного числа , но в связи с низкой скоростью подобных операций лучше использовать
операции простого копирования исходных чисел со сдвигом в лево и вставкой дополнительных байтов (см. рис) .
При этом операции сдвига производятся не с отдельными битами а сразу с байтами.



*******************************************


Добавлено (07.11.2017, 11:56)
---------------------------------------------
Схемотехника - описание графического интерполятора для вывода ч/б изображений

В настоящее время после пересмотра идей изложенных в теме до (22.2.2017),  перехожу к разработке другой версии видеоадаптера
с более "гибким" методом вывода графики основанным на применении идей используемых в векторном методах построения изображений.

При векторном методе видео-вывода каждому пикселу назначается свой числовой адрес при этом графические данные отсутствуют
(либо конвертируются в числа из данных). Теперь так как вся графика представлена в виде чисел ,  а с числами можно делать любые
математические и логические операции,  получаем большие возможности обработки графики.

Схема синхронизации XGA режима уже содержит в своем составе адресные счетчики
которые формируют (1024*7680) =786432 адресов (pixel)
При видео выводе текущий отображаемый адрес сравнивается с адресом детектора экрана (который хранится в регистрах)
При совпадении адресов дается разрешение на вывод точки , и далее через
смеситель видео сигналов поток данных поступает на монитор

При этом видео память не участвует в формировании черно-белого изображения , а используется только для хранения цвета

В связи с появлением новых идей структурная схема частично была
дополнена  в частности модуль CPU  был заменен на модуль интерполяторов

Добавлено (06.11.2017, 13:11)
---------------------------------------------
Старая схема детектора пикселов была переработана (добавилось несколько
регистров со схемой адресации и выборкой регистров данных в зависимости
от текущих условий)

Блок интерполяторов состоит из нескольких модулей:

1 Линейный интерполятор (8х2 )---(16х4)    16*32=512 точек в строке
2 Интерполятор квадрата (2х2 )--- (3х3)  360х480   15х32=480 точек в строке
3 Интерполятор квадрата (3х3 )--- (5х5) 480х640  20х32=640 точек
4 Интерполятор "шахматки" (4х2)---(8х4) 512х384  16х32=512

Все интерполяторы работают в режиме XGA (1024х768) 60 Гц.  Используется общая тактовая частота 65 мГц
и асинхронный метод работы  что нужно для более равномерного заполнения экрана .
(аналогия 4 сетки наложенные со смешением во времени).

Описание 1 Линейного интерполятора

Линейный интерполятор предназначен для более плотного заполнения пикселами всего рабочего пространства экрана.
Это самый простой интерполятор построен на основе работы логики 2ANDx8  (3 линейки элементов AND) каждая линейка
выдает на выходе 8 дополнительных бит . В случае если пара соседних пикселов установлены в "1" получаем 16 точек
на знакоместо. что дает честные 512 точек в строке (16х32).

Для полноценной работы уст-ва требуется 9 входных бит, дополнительный 9 бит берется из соседнего регистра (детектор пикселов)

Адресация регистров хранения производится дешифратором (2--4) который работает совместно с детектором пикселов.
Для дешифрации используются адресные выводы процессора A0, A1. Полученные сигналы заводятся на регистры по порядку (1,2,3,4)
При этом сигнал CPU WR используется преимущественно для сохранения
фрагмента строки (горизонталь)  А доработанный сигнал RFSH и RD
для сохранения фрагмента колонок (вертикаль) . (Для использования сигнала RFSH требуется доработка компьютера)

Поскольку интерполятор выдает только 512 точек вместо 1024. При видео-выводе приходится понижать тактовую частоту до 32 мГц либо
подмешивать "0"  к полученным 16 битам,  пример (10101010).  Полученное пустое место заполняется по мере работы модулями (2,3,4)
Если в рассматриваемом интерполяторе заменить логику 2ANDx8  на 2XORx8  то тогда уст-во будет выдавать дополнительные пикселы
в местах "перехода" перепада яркости  (10---1) либо (01---1) полученные пикселы можно использовать для создания легкого зфекта
"глубины" на изображении если подмешивать полученный видео-ряд через резистор к общему видео-сигналу.

Линейный интерполятор работает только в пределах фрагмента 2 строк и не умеет полноценно восстанавливать информацию между
строк растра (192 строки).  В то-же время данное уст-во использует векторный
механизм работы и имеет в своем составе свой счетчик строк
который работает асинхронно по отношению к XGA развертки это значит что фрагмент
строки может выводится в любом месте (между строк)
дискретность деления зависит от количества разрядов используемого счетчика.

Добавлено (07.11.2017, 12:23)
---------------------------------------------
Подбор строчной частоты для линейного интерполятора.

Выбор строчной частоты зависит от скорости обновления данных в регистрах (детектор пиксельной области)
что в свою очередь зависит от скорости работы процессора стандартное время (цикл записи ) в память у
ZX Spectrum составляет ~ 3,35 мКс за это время XGA развертка успевает вывести ~214 пикселов / Если поделить
214 /32= 6,68  то получим что развертка работает быстрее процессора ~6 раз .  Для компенсации низкой скорости
приходится применять большое количество регистров хранения   (6 ,,,8 регистров).

Время вывода всей строки у XGA развертки составляет 15,75 мКс  без учета сигналов синхронизации за это время
выводится 1024 точек , отсюда получаем оптимальную строчную частоту для интерполятора 65 мГц / 1024 = 63476,5 Гц

Интерполятор не умеет определять в какой момент времени будет происходить обновление данных в регистрах.
Поэтому есть смысл увеличить строчную частоту, с другой стороны что-бы уменьшить "мертвую зону"
рассогласование устройств частота должна быть кратной к рабочему циклу процессора. Ко всем требованиям
подходит - (3,353/8)  близкую частоту к этому отношению можно получить если 65 мГц / 27 = 2,407 мГц

Итогом всех рассуждений получили что нужно использовать 2 рабочие частоты одна частота для видео-вывода 63476 Гц
а вторая для сканирования строк (XGA) 2,407 мГц.   Переключать частоты можно обычным мультиплексором (2--1)
На управляющий вход которого заводится сигнал с компаратора в случаи когда адреса развертки не совпадают
используется частота 2,4 мГц.

Добавлено (21.04.2018, 11:59)
---------------------------------------------
2 Интерполятор квадрата (2х2 )--- (3х3)  360х480   15х32=480 точек в строке

Интерполятор (2х2 )--- (3х3)  Предназначен для потокового вывода и восстановления входной информации 2pix * 2pix  до
квадрата три на три точки. Устройство можно легко реализовать на специализированном дешифраторе (VHDL)
имеющем 2 уровня преобразования информации. В первый момент времени производится идентификация графической
фигуры (это может быть: вертикальные и горизонтальные короткие линии. четыре уголка с каждой стороны квадрата. а
также одиночные точки для которых формируется пере-масштабируемое пустое пространство.)  Вторая часть уст-ва
является исполнительной которая воспроизводит заранее записанные биты (в нужный момент времени) в соответствии
с входной информацией.

Интерполятор (2х2 ) полезен для разгрузки более сложных интерполяторов , а его недостатком
является -тот факт  что входной информации в 4 бита недостаточно что-бы достоверно определить наклонную линию
{так как возникает логическая неопределенность какая линия? белые пикселы( / )или черные( \ ) }   Другим недостаком
является низкое разрешение по сравнению с интерполятором   (3х3 )--- (5х5)

Добавлено (21.04.2018, 12:19)
---------------------------------------------
3 Интерполятор квадрата (3х3 )--- (5х5)

Устройство предназначено для уменьшения видимого эффекта "ступенька" и для восстановления более сложных
входных графических фигур, и  наклонных линий 45 град.

Входная информационная емкость уст-ва составляет 9 бит что позволяет достоверно определить
многие графические примитивы "похожие" на символы букв: это T , Y , U , I , O , Г , D , H , J , K , L .
X . C . V . N.  А также треугольники и их зеркальные аналоги .
---------------------------------------------
Недостатком Интерполятора  (3х3 )---(5х5)  является тот факт что невозможно правильно определить наклонные линии
отличные от 45 градусов. Например линии могут быть 15, 20 , 25 , 30  Градусов
---------------------------------------------

4 Интерполятор "шахматки" (4х2)---(8х4)

Пиксельную "шахматку" часто использовали в старых программах для имитации текстуры поверхности
когда нужно было вывести серую поверхность.
Реализовать данный интерполятор можно на обычной логике или специальным мультиплексором .
Прикрепления: 0293078.gif (24.8 Kb) · 4129695.gif (35.8 Kb) · 4172055.gif (20.1 Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Воскресенье, 22.04.2018, 11:47
 
Soviet Union ZX Spectrum Community » ZX-строительство » Железо » Разработка схемы видео-адаптера для ZX-Spectrum
  • Страница 5 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
Поиск:

Copyright MyCorp © 2006Сайт управляется системой uCoz