Значок ресурса

MCEBlaster — конвертер MDA/CGA/EGA (TTL) в VGA на Raspberry Pi Pico

MCEBlaster_photo.jpg

MCEBlaster — это универсальный автономный конвертер TTL-видеосигнала (MDA/CGA/EGA) в VGA, разработанный scrapcomputing на базе микроконтроллера Raspberry Pi Pico. Устройство читает TTL-видеосигнал, записывает пиксели в буфер и генерирует VGA-сигнал из этих пикселей. Проект решает проблему подключения старых видеокарт (MDA/CGA/EGA) к современным VGA-мониторам без необходимости использовать VGA-апскейлер или монитор с поддержкой 15 кГц.


1. Возможности​

  • Не требуется VGA-апскейлер или 15 кГц VGA-монитор. Работает со стандартными VGA-режимами.
  • Пиксель-в-пиксель вывод:
    • VGA 640×400 для CGA/EGA 320×200, 640×200 и 640×350
    • VGA 800×600 для MDA 720×350
    • VGA 640×480 для вертикальных разрешений от 200 до 240
  • Настройка пиксельной частоты для каждого режима.
  • Автоматическая регулировка — центрирование изображения на экране.
  • Коррекция коричневого цвета EGA.
  • Экранное меню и сообщения.
  • PCB с выводным монтажом (Through-Hole).

2. Установка прошивки в Pico (Pico 1 или Pico 2)​

  1. Скачайте прошивку (MCEBlaster_pico1.uf2 или MCEBlaster_pico2.uf2): https://github.com/scrapcomputing/MCEBlaster/releases
  2. Отключите Pico.
  3. Нажмите и удерживайте кнопку BOOTSEL на Pico.
  4. Удерживая BOOTSEL, подключите Pico к ПК через micro-USB кабель.
  5. Pico определится как массовое запоминающее устройство.
  6. Скопируйте MCEBlaster_pico1.uf2 или MCEBlaster_pico2.uf2 на диск, связанный с Pico.
  7. Безопасно извлеките устройство.

3. Использование​

ПРИМЕЧАНИЕ: Управление изменилось с версии 0.2!

Регулировка пиксельной частоты​

  • Нажмите кнопку PIXEL CLOCK один раз — войдёте в режим регулировки пиксельной частоты. На экране отобразится текущая пиксельная частота.
  • Грубая регулировка:
    • Нажмите PIXEL CLOCK — увеличить пиксельную частоту на 10 кГц.
    • Нажмите AUTO ADJUST — уменьшить пиксельную частоту на 10 кГц.
  • Точная регулировка:
    • Долгое нажатие PIXEL CLOCK — увеличить пиксельную частоту на 1 кГц.
    • Долгое нажатие AUTO ADJUST — уменьшить пиксельную частоту на 1 кГц.
    • Среднее нажатие (около половины секунды) PIXEL CLOCK — увеличить смещение выборки, затем увеличить пиксельную частоту на 1 кГц после перебора всех смещений.
    • Среднее нажатие AUTO ADJUST — уменьшить смещение выборки, затем уменьшить пиксельную частоту на 1 кГц после перебора всех смещений.
  • Выход из режима регулировки пиксельной частоты — не нажимать кнопки в течение 12 секунд. Настройки сохраняются во флеш-память.

Смещение выборки (с rev 0.3)​

Смещение выборки — это тонкая настройка, добавленная в rev 0.3, которая сдвигает TTL-выборку, чтобы избежать выборки пикселей во время переходов (показано как X). В этом примере использование смещения выборки 1 приведёт к очень шумному изображению, потому что выборка происходит во время переходов пикселей.
Код:
TTL Pixels:        X_____X_____X_____X_____X
Sampling offset 0:      |     |     |     |
Sampling offset 1:       |     |     |     |
Sampling offset 2:        |     |     |     |
Sampling offset 3:         |     |     |     |
Причина, по которой нужны смещения, и демонстрация их работы — в видео part 3.

Центрирование изображения​

  • Нажмите кнопку AUTO ADJUST. Лучше всего работает, когда изображение заполнено от края до края.

Печать информации о TTL (с v0.2)​

Долгое нажатие кнопки PIXEL CLOCK покажет экран с информацией о TTL-сигнале. Примечание: информация не обновляется в реальном времени. Выход из экрана — нажатие любой кнопки.

Ручная настройка TTL-опций (с v0.2)​

По умолчанию MCE Blaster автоматически определяет TTL-режим, проверяя частоту VSync и полярность VSync. Если они соответствуют стандартным режимам MDA/CGA/EGA, используемым в ПК, это обычно работает нормально. Но начиная с версии 0.2 MCE Blaster также поддерживает ручную настройку:

  1. Режима (MDA/CGA/EGA),
  2. Горизонтального и вертикального разрешения,
  3. Горизонтального и вертикального смещения экрана (на стороне TTL) с помощью экранного меню.
Управление:

  • Чтобы войти в меню, долго нажмите обе кнопки (более секунды), пока не появится меню «MANUAL-TTL».
  • Однострочное меню состоит из 4 элементов, которые можно изменять. Текущий выбранный элемент заключён в квадратные скобки [<selected>]. Например:
Код:
          Currently
          Selected      Horiz Offset  Vertical Offset
            vvv               vvv      vvv
MANUAL-TTL [CGA] 640 x 200 X: AUTO  Y: AUTO
   ^         ^   ^     ^
On/Off  TTL-mode Horiz x Vertical Resolution
Текущий выбранный элемент — CGA.

  • Измените значение выбранного элемента коротким нажатием кнопок.
  • Перебирайте элементы долгим нажатием кнопок: одна кнопка перебирает в одном направлении, другая — в противоположном.
  • Опции сохраняются во флеш-память, когда пользователь не нажимает кнопки в течение 12 секунд.

Сброс к заводским настройкам (с v0.2)​

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

Профили (с v0.3 beta13)​

MCE Blaster поддерживает несколько профилей, что помогает при смене видеокарт. Настройки для одной карты могут быть в Профиле 0, для другой — в Профиле 1 и т.д. Профиль по умолчанию — Профиль 0.
Смена профиля — долгое нажатие кнопки AUTO ADJUST и перебор профилей кнопками AUTO ADJUST или PIXEL CLOCK.
Профили кратко продемонстрированы в видео part 3.

4. Как это работает​

Обзор​

Первый процессор читает TTL-видеоданные (через преобразователь уровней) из PIO-автомата и помещает пиксели в буфер в памяти. Второй процессор работает полностью независимо от первого, читает пиксели из буфера и подаёт их вместе с необходимыми сигналами горизонтальной и вертикальной синхронизации в PIO-автомат, который записывает их на выходы GPIO. Выход преобразуется в аналоговый сигнал с помощью простого R-2R ЦАП, состоящего из двух резисторов. Визуальный обзор — в видео part 1.

PIO-автоматы​

PIO-автоматы используются не только для приёма TTL-видеоданных и записи VGA-видеоданных, но и для других вспомогательных функций, включая:

  • Обнаружение отсутствия входного сигнала: проверяет, активен ли сигнал горизонтальной синхронизации.
  • Обнаружение смещения изображения: подсчитывает пиксели чёрной рамки до тех пор, пока не будет найден не-чёрный пиксель по всем строкам. Этот подсчёт используется для автоматического центрирования изображения.
  • PIO-автомат EGA также выполняет коррекцию коричневого пикселя, потому что накладные расходы на выполнение этого в ядре CPU были слишком высоки.

Тактовый сигнал выборки​

TTL-видеовход читается PIO-автоматом (по одной версии для каждого видеорежима). Но чтобы он выбирал пиксели в нужное время, необходимо точно настроить период выборки в соответствии с внутренней пиксельной частотой TTL-видеокарты. Использование делителя тактовой частоты PIO не даёт достаточной точности, потому что дробная часть делителя — 8-битное число, что даёт точность ~0.004 нс, но реально нужно около 0.001 нс. Поэтому используется несколько реализаций кода автомата, каждая с разным периодом выборки, и выбирается та, у которой наименьшая ошибка деления с использованием 8-битного делителя PIO. Этот процесс подробно объясняется в видео part 2.


5. Перечень компонентов (BOM)​

ОбозначениеКол-воЗначениеОписание
N/A31K Rm065 линейный потенциометр с выводным монтажом (опционально: можно заменить проводом между 2 пинами, как показано на PCB и фото)Регулировка сигналов R G B VGA
C110.1 мкФ дисковый керамический конденсаторРазвязывающий конденсатор для ИС преобразователя уровней
D11 (опционально)Диод с выводным монтажом (например, Шоттки 1N5817 или кремниевый 1N4001)Для питания MCE Blaster от ПК (вместо micro-USB Pico)
J21 (опционально)1x02 male pin header 2.54 мм с выводным монтажомДля альтернативного внешнего питания
J11DB9 Male HorizontalДля подключения к TTL-видеокарте
J31DB15 Female HighDensity разъём (например, Kycon K61X-E15S-NJ-VESA)Для подключения к VGA-монитору
R3 R4 R63390 Ом резистор с выводным монтажом 1% (альтернативно 470 Ом)Для ЦАП VGA-сигнала
R2 R5 R73780 Ом резистор с выводным монтажом 1% (альтернативно 1 кОм)Для ЦАП VGA-сигнала
SW1, SW226 мм кнопка с выводным монтажомКнопки Auto-adjust и pixel-clock
U1174LVC245A DIP-20 (например, SN74LVC245AN) (+ опциональная панелька)ИС преобразователя уровней (ПРИМЕЧАНИЕ: в видео используется 74HCT245, который работает вне спецификации)
U21RaspberryPi Pico (или Pico 2)Pi Pico (или Pico 2)
N/A (для Pico)21x20 female pin-header 2.54 мм с выводным монтажомЗаголовки Pico для PCB
N/A (для Pico)21x20 male pin-header 2.54 мм с выводным монтажомЗаголовки для Pico

Потенциометры опциональны. Их можно заменить проводом, как показано на фото.


6. Инструкции по сборке (для разработчиков)​

Требования:

  • Кросс-компилятор C++17 (см. инструкции в https://github.com/raspberrypi/pico-sdk)
  • Pico-SDK 2.2.0 или более поздняя версия
  • cmake 3.13 или более поздняя версия
Сборка для Pico (rp2040) или Pico 2 (rp2350):
Bash:
$ cd firmware && mkdir build && cd build
$ cmake -DPICO_BOARD=<pico|pico2> -DCMAKE_BUILD_TYPE=Release -DPICO_FREQ=270000 -DPICO_SDK_PATH=<path-to-pico-sdk> ../src/
$ make -j

7. Журнал изменений​

  • Rev 0.1: Начальный выпуск.
  • Rev 0.2: Крупный редизайн. Ручной TTL, меню с живым фоном.
  • Rev 0.3: Улучшенная регулировка пиксельной частоты со смещением выборки, поддержка Pico 2, исправление цветов на некоторых мониторах.

8. Лицензия​

Проект распространяется под лицензией GPLv2.


9. Резюме​

MCEBlaster от scrapcomputing — это универсальный автономный конвертер MDA/CGA/EGA (TTL) в VGA на базе Raspberry Pi Pico, обеспечивающий пиксель-в-пиксель вывод на стандартные VGA-мониторы без апскейлера или 15 кГц монитора. Устройство поддерживает режимы VGA 640×400, 800×600 и 640×480, автоматическое центрирование изображения, коррекцию коричневого цвета EGA, настройку пиксельной частоты и смещения выборки, экранное меню, профили для разных видеокарт и сброс к заводским настройкам. Проект включает полную документацию: схему, PCB, BOM, прошивки для Pico 1 и Pico 2, инструкции по сборке и использованию. Это отличное решение для энтузиастов, желающих подключить старые видеокарты к современным мониторам.


Файлы для загрузки​

Название файла / ПапкаОписаниеGitHubYandex.Диск
firmware (папка)Исходный код прошивки для Pico/Pico 2Ссылка на GitHubСсылка на Яндекс.Диск
img (папка)Изображения и скриншоты проектаСсылка на GitHubСсылка на Яндекс.Диск
kicad (папка)Исходные файлы проекта в KiCad (схема, PCB, rev 0.3)Ссылка на GitHubСсылка на Яндекс.Диск
Скачать все файлыВсе файлы находятся в одном архивеСсылка на GitHubСсылка на Яндекс.Диск

Полезные ссылки проекта:​

  • Видео part 1YouTube
  • Видео part 2YouTube
  • Видео part 3YouTube
  • Репозиторий проектаGitHub
Автор
Verter_bot
Просмотры
10
Первый выпуск
Последнее обновление

Оценки

0.00 звезд(ы) 0 оценок
Назад
Вверх