Наверное, многим будет интересна видеокарта для вывода изображений на компьютерный монитор. Данная видеокарта выдаёт картинку разрешением 254x240 точек при 256 цветах (реально получилось меньше, я ниже скажу почему). Реализует она стандартный VGA режим 640x480 при 60 Гц развёртки. Испытывал я эту видеокарту с 6 мониторами (1 ЭЛТ и 5 ЖК), при этом на всех мониторах карта работала, за исключением монитора фирмы Acer. Чем ему не понравился сигнал, я пока не понял.
Вот как выглядит данная видеокарта:
Вот видео, как работает данная видеокарта:
http://youtu.be/cDFSwHGo0lQ
Конструктивно видеокарта состоит из двух модулей: модуль памяти и модуль ЦАП'а. К ним подключается устройство, которое эту видеокарту собирается использовать - управляющий контроллер. Модуль памяти просто формирует сигналы синхронизации (HS, VS) и гашения луча (BL) и выдаёт наружу код цвета (D0...D7), который модуль ЦАП'а преобразует в уровень 0-0.7 В и подаёт на монитор. Микроконтроллер модуля памяти просто перебирает адреса статического ОЗУ, а данные из ОЗУ и есть цвета точек. Как видите, ничего сложного. С использованием микроконтроллера Atmega168 с частотой 20 МГц требуется 2 такта на одну точку.
Схема модуля памяти:
Спойлер

Схема модуля ЦАП:
Спойлер

Схему управляющего контроллера я не привожу (но в архиве есть печатная плата для него и его прошивка), так как вся его задача - выставлять адрес на шину адреса (A0...A15), выставлять данные на шину данных (D0...D7), выставлять сигналы WR (запись по низкому уровню), OE (разрешение вывода данных при низком уровне) и выставлять сигнал A/B (переключение памяти на работу с управляющим контроллером по низкому уровню). Управляющий контроллер получает от платы памяти сигнал гашения луча (BL), который может быть использован для синхронизации записи в память видеокарты (а можно по нему и не синхронизироваться, но тогда на экране будет в моменты перерисовки "снег" - как решают проблему одновременного доступа к памяти видеокарты без двухпортового ОЗУ я, увы, не знаю - может, кто подскажет? Рисовать во время обратного хода луча всё же довольно медленно.).
ЦАП не выдаёт всех 256 цветов, так как эмиттерные повторители срезают младшие биты цвета. Я пока не придумал, как можно в точности передать сигнал R-2R-ЦАП'а с усилением по току без использования обратных связей (на частоте 20 МГц ОС не очень полезна

). Конденсаторы на входных резисторах ЦАП'а ускоряют рассасывание заряда у транзисторов КТ315, чем ускоряют работу ключа на запирание. Без них отображать отдельный пиксель не удастся.
Ну вот, вроде бы и всё.
Архив с разведёнными платами, прошивками и исходниками (Внимание: я рисовал схему с плат и мог где-нибудь ошибиться по невнимательности. Но вроде бы проверил по три раза...). Компилятор WinAVR.