Простая самодельная VGA видеокарта

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Насколько мне известно, довольно многим интересно подключить микроконтроллер к обычному монитору и попробовать что-либо вывести на экран. В этой статье пойдёт речь о создании простейшей VGA-видеокарты на базе микроконтроллера atmega168-20.

Вообще говоря, этому проекту сто лет в обед. Но когда-то я обещал рассказать про эту видеокарту и здесь, но всё было лень. Теперь пришло время исполнить обещанное.
Данная видеокарта выдаёт картинку разрешением 254x240 точек при 256 цветах. Работает вся эта штука в стандартном VGA режиме 640x480 при 60 Гц развёртки. Испытывал я эту видеокарту с 6 мониторами (1 ЭЛТ и 5 ЖК), при этом на всех мониторах карта работала, за исключением монитора фирмы Acer. Чем ему не понравился сигнал, я так и не понял.

В макетном исполнении видеокарта выглядит вот так:


Видеокарта состоит из двух модулей: модуля памяти и модуля ЦАП'а.
Модуль памяти просто формирует сигналы синхронизации (HS, VS) и гашения луча (BL) и выдаёт наружу код цвета (D0...D7), который модуль ЦАП'а преобразует в уровень 0-0.7 В и подаёт на монитор. Микроконтроллер модуля памяти просто перебирает адреса статического ОЗУ, а данные из ОЗУ и есть цвета точек. С использованием микроконтроллера Atmega168 с частотой 20 МГц требуется 2 такта на одну точку, поэтому эта часть программы написана на ассемблере и развёрнута в повторяющийся фрагмент для каждой точки строки. Я позволю себе не описывать развёртку VGA-сигнала во времени, тем более, что в интернете полно информации на этот счёт (хоть и часто не совпадающей друг с другом), а я за давностью лет уже порядком подзабыл, какую временную диаграмму я реализовал в этой видеокарте.


Схема модуля памяти (открыв в новом окне можно увеличить).

Модуль ЦАП'а состоит из трёх обычных R-2R ЦАП'ов с ключами и выходным эмиттерным повторителем (из-за которого несколько «зарезается» диапазон цветов). Если кто придумает, как дёшево и сердито исправить это «зарезание» — милости прошу в комментарии. На радиокоте мне посоветовали заменить эмиттерный повторитель на истоковый, но я этот совет так и не проверил. Как видно из схемы, я отвёл 3 бита на красный, 3 бита на зелёный и 2 бита на синий цвет. Транзисторы я взял КТ-315. :)


Схема ЦАП'а.

Что именно будет отображать видеокарта определяет управляющий контроллер. Его задача — выставлять адрес на шину адреса (A0...A15), выставлять данные на шину данных (D0...D7), выставлять сигналы WR (запись по низкому уровню), OE (разрешение вывода данных при низком уровне) и выставлять сигнал A/B (переключение памяти на работу с управляющим контроллером по низкому уровню). Управляющий контроллер получает от платы памяти сигнал гашения луча (BL), который может быть использован для синхронизации записи в память видеокарты.

Работает такая видеокарта вот так:


Печатные платы и прошивки с их исходниками.

Удачи в развитии проекта!
Источник: https://habr.com/ru/post/495542/


Интересные статьи

Интересные статьи

Всем привет. Когда я искал информацию о журналировании (аудите событий) в Bitrix, на Хабре не было ни чего, в остальном рунете кое что было, но кто же там найдёт? Для пополнения базы знаний...
Как всё начиналось Всех приветствую. Я Максим и хочу поделиться информацией о том, как собирал радиоуправляемую подводную лодку без каких-либо знаний об электронике в начале своего пути. ...
Ранее в одном из наших КП добавление задач обрабатывалось бизнес-процессами, сейчас задач стало столько, что бизнес-процессы стали неуместны, и понадобился инструмент для массовой заливки задач на КП.
Однажды, в понедельник, мне пришла в голову мысль — "а покопаюсь ка я в новом ядре" (новым относительно, но об этом позже). Мысль не появилась на ровном месте, а предпосылками для нее стали: ...
В интернет-магазинах, в том числе сделанных на готовых решениях 1C-Битрикс, часто неправильно реализован функционал быстрого заказа «Купить в 1 клик».