Подключение Arduino к дешевой видеокарте для вывода VGA

Я понимаю, что Arduino, как правило, недостаточно быстрая и мощная для генерации подходящего сигнала VGA/HDMI с более высоким разрешением.

Однако я заметил, что существуют недорогие видеокарты для ПК, которые могут легко поддерживать стабильное изображение на мониторе.


В эпоху DOS было относительно просто написать короткую программу, которая могла бы выводить текст на карты CGA/EGA/VGA, используя вызовы BIOS и несколько инструкций по сборке. Сам BIOS, конечно, не был слишком сложным или большим.


Поэтому моя идея состоит в том, чтобы взять Arduino, использовать сдвиговые регистры, такие как 74HC595, чтобы создать достаточно длинную шину, и подключить ее к дешевому устаревшему графическому процессору (например, карте NVIDIA от выброшенного ПК) вместе с обычным монитором. . Затем я бы написал код Arduino для эмуляции вызова BIOS, например 10h, который сместил бы «статус шины» на другой уровень. на 74HC595, отправьте сигнал на графический процессор и продолжайте этот процесс, пока символы не будут переданы на графический процессор.

Графический процессор может легко генерировать сигналы VGA/HDMI и работать с любым современным монитором. Он также имеет достаточно памяти для поддержки таких разрешений экрана, как 80x25, 80x50 или даже 132x60 для текстовых дисплеев. Фактически, возможно, даже можно будет работать с полным графическим разрешением, например 640x480 или даже 2560x1440, при этом Arduino будет медленно отправлять графические примитивы на отображение.

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


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

(Или мне следует опубликовать это где-нибудь еще? Где?)

, 👍1

Обсуждение

Были gameduinos, vgaduinos и тому подобные, но я не думаю, что они пользовались такой популярностью. Сейчас у меня даже нет монитора с VGA. Rapsberry Pi с HDMI намного лучше. Но, конечно, вы можете попробовать какую-нибудь старую шину, но им могут понадобиться все напряжения, которые вы больше никогда не увидите (-5, -12)., @KIIV

Я думаю, вам будет *очень* трудно реализовать функциональную шину PCI(e) с точки зрения электричества и синхронизации на Arduino., @StarCat

Это тот проект, в котором все будет сложно сделать, а результат вряд ли стоит затраченных усилий. Но даже если вы полностью потерпите неудачу, вы многому научитесь в процессе. Поэтому я говорю: сделайте это, если у вас есть время., @Delta_G

@StarCat Я видел несколько проектов, в которых процессоры вроде 6502 работали от внешней тактовой частоты настолько медленно, что Arduino мог эмулировать для них RAM/ROM. (В основном процессор останавливался до тех пор, пока не были сгенерированы новые данные). Поэтому я надеялся, что некоторые видеокарты также смогут работать в таком медленном/статическом режиме. Но я не смог найти нижние пределы (насколько медленно он может работать) - все, что я нашел, это верхние пределы, насколько быстро он может работать., @gilhad

Возможно, вам больше повезет с [подключением старой карты ISA VGA к Arduino/AVR](https://www.vogons.org/viewtopic.php?t=76311), но я бы не стал использовать эмуляцию x86, как описано в этот проект и просто запрограммируйте регистры VGA напрямую., @StarCat

Ого, спасибо, я искал что-то подобное, но безуспешно. (И да, моя идея заключалась в том, чтобы установить его прямо из моего кода, если это возможно), @gilhad


1 ответ


1

Это не ответ на ваш вопрос о дешевой видеокарте, но см. https://forum.arduino.cc/t/toorums-quest-ii-atmega328p-based-retro-video-game-with-256-color-graphics/192920 где Петри Хаккинен создал аркадную игру с Atmega328 и чипом AD725 для генерации сигнала VGA.

,