zx-rgbi-to-vga-hdmi_gotek-osd — это проект на базе Raspberry Pi Pico (и совместимых плат, таких как WaveShare RP2040-Zero), объединяющий:
- Конвертер аналогового RGB в цифровой RGBI (на основе проекта RGBtoHDMI) с выводом на VGA и HDMI
- Эмулятор дисковода GOTEK с прошивкой FlashFloppy и I2C OSD интерфейсом 40×4
- Интерфейс PS/2 клавиатуры для управления ZX Spectrum (58-клавишная расширенная клавиатура) и навигации по меню OSD
Файлы для загрузки
| Название файла / Папка | Описание | GitHub | Yandex.Диск |
|---|---|---|---|
| hardware (папка) | Аппаратная часть — схемы и файлы печатных плат | Ссылка на GitHub | Ссылка на Яндекс.Диск |
| ZX_RGBI_TO_VGA_HDMI (папка) | Прошивка и исходные коды для Raspberry Pi Pico (C/C++) | Ссылка на GitHub | Ссылка на Яндекс.Диск |
| docs (папка) | Документация (включая описание VGA таймингов) | Ссылка на GitHub | Ссылка на Яндекс.Диск |
| images (папка) | Фотографии (OSD, плат) | Ссылка на GitHub | Ссылка на Яндекс.Диск |
| Скачать все файлы | Все файлы находятся в одном архиве | Ссылка на GitHub | Ссылка на Яндекс.Диск |
Новые возможности и изменения
Программное обеспечение
- Видеовыход:
- Добавлены новые разрешения VGA: 800×600, 1024×768, 1280×1024
- Внедрён эффект "scanline" на более высоких разрешениях
- Настройка через последовательный терминал:
- Текстовые меню
- Предустановки частот для самосинхронизирующегося режима захвата (поддержка таймингов ZX Spectrum 48K/128K)
- Регулировка в реальном времени задержки захвата, положения изображения, эффектов scanline и режимов буферизации
- Оптимизация делителя тактовой частоты PIO — повышенная точность в режиме самосинхронизирующегося захвата
- Тестовый/Приветственный экран — стилизован под ZX Spectrum 128K
- Управление GOTEK — навигация по меню FlashFloppy с помощью PS/2 клавиатуры
- Преобразование аналогового в цифровое: Преобразует аналоговый RGB в цифровой RGBI (на основе проекта RGBtoHDMI)
- GOTEK OSD: Прошивка FlashFloppy с I2C OSD 40×4, поддержка VGA и HDMI
- PS/2 клавиатура: Интерфейс для ZX Spectrum 58-клавишной расширенной клавиатуры с аналоговым коммутатором CH446Q в последовательном режиме
Удалённые функции
- Внешний источник тактового сигнала Z80 CLK
GOTEK — I2C OSD интерфейс
Кратко: Подключите контакты GOTEK SDA и SCL к контактам Pico GP16/GP17 (GP26/GP27 для RP2040-Zero). Линии SDA и SCL должны быть подтянуты к 3.3В резисторами 4.7–10 кОм. Также поддерживается PS/2 клавиатура для управления OSD.Реализовано на основе flashfloppy-osd 1.9 от Keir Fraser.
I2C коммуникация с хостом:
- Эмуляция контроллера HD44780 через I2C расширитель PCF8574. Поддерживаемый размер экрана: 20×4 символов.
- Поддержка расширенного протокола FF OSD с двунаправленной связью, до 40×4 символов.
Компиляция
Используйте Visual Studio Code с расширением "Arduino Community Edition". Не используйте Arduino IDE — она использует другие SDK/библиотеки, что вызывает проблемы с синхронизацией захвата.- При компиляции для WaveShare RP2040-Zero добавьте #define WAVESHARE_RP2040_ZERO в g_config.h.
- Выполните: Terminal/Run Task.../Build
Настройка RP Pico
- Подключите компьютер к USB Raspberry Pi Pico (отключите линию +5V от ZX)
- Используйте Putty / Minicom для подключения к COM-порту RP Pico (скорость 9600 бод)
- Нажмите h для справки по меню
Подключение GOTEK/FlashFloppy OSD
- Проводка I2C OSD: 2 провода: SDA и SCL
- Подключите выводы GOTEK SDA и SCL к пинам Pico GP16/GP17
- Линии SDA и SCL должны быть подтянуты к VCC (3.3В) резисторами 4.7–10 кОм на стороне GOTEK или RGBI2VGA
Настройка GOTEK/FlashFloppy
FF.CFG:- Для протокола FF OSD с поддержкой двух дисплеев (OLED+LCD):
display-type=auto или display-type=oled-128x64 с osd-display-order=3,0, osd-columns=40 и display-off-secs=0-255 (по умолчанию 60) - Для протокола PCF8574 20×4 LCD:
display-type=lcd-20x04 с display-order=3,0,2,1 и display-off-secs=0-255
GOTEK/FlashFloppy OSD горячие клавиши
| Комбинация | Функция |
|---|---|
| CTRL+RIGHT | Вправо |
| CTRL+LEFT | Влево |
| CTRL+UP | Вверх по директории |
| CTRL+DOWN | Выбрать элемент |
Специальные клавиши (PS/2)
| Клавиша | Функция |
|---|---|
| F10 | PAUSE (Z80 BUSRQ/) — триггер |
| F11 | MAGIC (Z80 NMI/) |
| F12 | RESET (Z80 RST/) |
Проводка специальных клавиш:
- Вход CH446Q: контакт 5 — общий/GND
- Выход CH446Q: контакт 15 — MAGIC, контакт 13 — RESET, контакт 11 — PAUSE
Ветки с дополнительными функциями
- Поддержка SetupGUI и доработки от Дмитрия Стародубцева (@cinsler78) — отдельная ветка
- Выбираемые во время работы палитры HDMI — отдельная ветка (сохранение настроек не реализовано)
Полезные ссылки проекта:
- Исходный проект ZX_RGBI2VGA-HDMI — ссылка в репозитории
- GALasm (компилятор для GAL) — https://github.com/daveho/GALasm
- FlashFloppy Wiki (аппаратные моды LCD) — https://github.com/keirf/flashfloppy/wiki/Hardware-Mods#lcd-display
- FlashFloppy Wiki (конфигурация FF.CFG) — https://github.com/keirf/flashfloppy/wiki/FF.CFG-Configuration-File
- Ветка с поддержкой SetupGUI (cinsler78) — ссылка в репозитории
- Ветка с выбором палитр HDMI — ссылка в репозитории
- Репозиторий проекта — GitHub