Генерация видео со сдвиговым регистром

Я собираю доморощенный 8-битный компьютер и испытываю некоторые проблемы с видеовыходом.

Я хочу знать, возможно ли генерировать высокое разрешение, скажем, 640x480, монохромный видеовыход, PAL или NTSC, используя микроконтроллер, скажем, atmega328, работающий на частоте 20 МГц, 8-битный сдвиговый регистр PISO и внешний кадровый буфер DRAM, можно управлять адресной шиной. другим сдвиговым регистром SIPO.

Могу ли я создать монохромный вывод 640x480 с помощью atmega? Есть ли способ лучше?

Я никогда не слышал, чтобы кто-то подключал AVR к DRAM... Я могу ошибаться, но мне это кажется работой для FPGA. При этом определенно возможно генерировать сигналы NTSC с помощью AVE, но вам, вероятно, придется писать ассемблер, чтобы получить достаточно точное время.
Это похоже на то, что вы хотите сделать: lucidscience.com/pro-vga%20video%20generator-1.aspx
@vicatcu Да, я думал о FPGA (или даже CPLD), но они здесь довольно дорогие. Любая альтернатива очень помогла бы. У меня нет особых проблем со сборкой AVR, но большинство проектов работает только с низкими разрешениями из-за проблем со скоростью.
Uzebox использует ATmega644, разогнанный до 28 МГц, для генерации до 720 пикселей на строку чисто программно .
@Janka Этот проект действительно интересен и может мне очень помочь! Atmega644 легко найти.
зачем возвращаться на 10 поколений назад в производительности видео? dqydj.com/… но если нужно. Телевизионные приставки на 4 ГБ с поддержкой 1080p стоят всего 50 долларов.
@TonyStewart.EEsince'75 Я не хочу использовать черный ящик для создания видео, это основная проблема 8-битного домашнего компьютера, сделай сам. Я могу просто подключить Raspberry Pi через GPIO и получить разрешение Full HD;)

Ответы (2)

В NTSC активная часть горизонтальной линии составляет 52,6 мкс. Чтобы упаковать туда 640 пикселей, потребуется тактовая частота сдвига 12,17 МГц и скорость загрузки 1,52 МГц. Я не думаю, что AVR может сгенерировать адрес чтения, прочитать данные, передать их в сдвиговый регистр PISO и достаточно быстро вычислить следующий адрес ОЗУ.

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

Ага. Ты прав. Я избегаю CPLD или FPGA из-за цены, на самом деле они здесь очень дорогие. Я думал. Если я буду хранить ASCII во флэш-памяти AVR и эмулировать VT100 вместо использования внешнего буфера кадра, будет намного быстрее собирать данные и загружать сдвиговый регистр (есть некоторые вычисления, но чтение из внутренней флэш-памяти должно быть быстрее). Я занимался математикой, и если я не ошибаюсь, между загрузкой сдвига и другой (с использованием 8-битного регистра сдвига) ~ 104 цикла. Что-то около 50 инструкций в архитектуре AVR.

Корпорация Datapoint, которая определила архитектуру Intel 4004 (от создания которой Intel отказалась), использовала все сдвиговые регистры PMOS в своих ранних терминалах. Основателями (первоначально в Computer Terminal Corporation) были Фил Рэй и Гас Роуч, которые усовершенствовали свое понимание компьютеров, будучи менеджерами программ для наземного терминального оборудования НАСА для телеметрического оборудования Gemini. В определении своих «терминалов» они включили полную программируемость, зная, что на самом деле продают компьютеры. Со всей памятью, являющейся регистрами сдвига.

Analogsystemsrf - Отличный кусочек истории.