RU
Алекс Екб
Алекс Екб
78 подписчиков

VGA и HDMI для ZX Spectrum.

Есть несколько вариантов подключить ZX Spectrum к современным телевизорам и мониторам. Непосредственное подключение, без использования дополнительных переходников, не всегда возможно. Поэтому надо использовать активный переходник.
Готовые переходники захватывают аналоговый сигнал, а я хотел работать с цифровым, непосредственно с платы спектрума.
Так как у спектрума 4-битный цвет, то нам надо найти на плате цифровые сигналы, соответствующие красному(RED), зелёному(GREEN), синему(BLUE) и биту повышенной яркости (BRT). В моделях с ULA или БМК из этих чипов как раз и выходят одноимённные сигналы. В моделях на отдельных микросхемах тоже не возникает проблем с поиском этих сигналов. Общая логика поиска - от выхода ко входу. Если выход RGB, то надо просто найти место, где цифровые сигналы RGB смешиваются с битом повышенной яркости.
В качестве примера приведу часть схемы компьютера "Ленинград-48". С эмиттеров транзисторов выходят аналоговые сигналы, а на микросхеме DD36 присутствуют их цифровые прототипы.
рис.1
Вот часть схемы ZX Spectrum+2, где сигналы цветовых компонентов берутся с микросхемы ULA.
рис.2
Но только цифровых сигналов цветов мало для полного захвата изображения. Необходимы сигналы кадровой и строчной синхронизации. Так как компьютеры ZX Specrtum предназначались для подключения к телевизорам, то более традиционным способом синхронизации является синхросмесь. Объединённые сигналы кадровой и строчной синхронизации кодируются разной длиной импульса. Кадровый синхроимпульс длинее. На схеме  рис. 2 NSNC сигнал(43 нога ULA) обозначает именно синхросмесь.
Для упрощения захвата и уменьшения объёма данных для обработки неплохо было бы найти ещё один синхросигнал - сигнал синхронизации пикселей(P_CLK). В компьютерах типа ZX Specrtum пикселы рисуются синхронно с тактами процессора по 2 пиксела за такт. Следовательно можно использовать сигнал CLK с процессора Z80(6 нога). Захват надо делать и по фронту и по спаду этого сигнала, чтобы обеспечить необходимую скорость в 2 пиксела/такт. Так как такой синхронный захват может попасть на момент переключения состояния цветовых сигналов в схеме,то чтобы исключить влияние переходных процессов, следует момент захвата чуть смещать относительно синхросигнала.
Первые мои эксперименты по захвату сигналов и формирование стандартного VGA сигнала я проводил на контроллере ESP32. Для меня было важно, чтобы контроллер был недорогой.
Сейчас я переключился на контроллер RP2040 в форме платок Raspberry Pi Pico. При одинаковой цене с ESP32(~3$) у Пико есть возможность формировать изображение в виде сигнала DVI, что расширяет возможности по подключению к современным мониторам.
Я разработал универсальную плату переходника, которая позволяет выбирать видеовыход сменой прошивки и запайки нужного гнезда и замены номиналов резисторов.
Гербер файлы для этой платы.
gerber_VGA_HDMI_MINI.zip99.85 KbСкачать
Схема с номиналами резисторов для HDMI гнезда.
При запайке VGA гнезда R1-R8 должны быть 100,100,390,820,390,820,390,820 Ом соотвественно. Для получения более светлых цветов можно пары 390,820 заменить на 300, 1000 Ом. Перемычки JP1-JP3 для VGA должны быть замкнуты.
ПО, написанное на языке С пока разделено по веткам VGA, HDMI.
src.zip51.42 KbСкачать
При компиляции есть возможность выбрать задержку захвата, различные способы синхронизации(смешанная синхра, раздельная) и источник P_CLK. При определённом FREQ_CAP пиксельклок выбранной частоты формируется самим микроконтроллером. При этом задержка захвата настраивается SH_DELAY_CAP. Если FREQ_CAP не определена, то захват происходит внешним синхросигналом по фронту и спаду.Это, обычно, сигнал с 6 ноги процессора Z80. Задержка при этом определяется по фронту и спаду в константах RISE_CAP_DELAY,FALL_CAP_DELAY. Настройки подбираются эмпирическим путём. Несколько скомпилированных прошивок ниже.
firmware.zip169.51 KbСкачать
группа телеграм для обсуждений https://t.me/rgb2vga_hdmi
avatar
Только пришла плата pico, соберу на коленке. Очень классные идеи. Круто! На ESP32 уже использую.
avatar
What are the signal for F, SSI and KSI ? Thanks!
avatar
Привет, есть вопрос по сигналам: SSI, KSI и F
Не мог бы автор объяснить детально что это за сигналы?
avatar
Yevheniy Tyukayev, Я не автор, но предположу, что SSI - строчный синхроимпульс, KSI - кадровый синхроимпульс, F - пиксельклок (6 нога Z80)

Уровни подписки

Нет уровней подписки
Наверх