Оглавление:
- Шаг 1: Интерфейс контроллера VGA
- Шаг 2. Интеграция контроллера VGA с дисплеем VGA
- Шаг 3: Дизайн буфера кадра
- Шаг 4: Примечания
- Шаг 5: прикрепленные файлы
Видео: Разработка простого контроллера VGA на VHDL и Verilog: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В этом руководстве мы собираемся разработать простой контроллер VGA в RTL. Контроллер VGA - это цифровая схема, предназначенная для управления дисплеями VGA. Он считывает из буфера кадра (память VGA), который представляет кадр, который должен отображаться, и генерирует необходимые данные и сигналы синхронизации для отображения.
Если вы ищете код Verilog / System verilog: посетите мой блог Контроллер VGA и видеосистема в Verilog
Шаг 1: Интерфейс контроллера VGA
Ниже приведены основные сигналы интерфейса в контроллере VGA.
- Pixel Clock или VGA Clock
- Сигналы HSYNC и VSYNC
Для выбранного дисплея VGA вы должны сначала рассчитать частоту Pixel Clock, необходимую для его управления. Это зависит от 3 параметров: общее количество пикселей по горизонтали, общее количество пикселей по вертикали, частота обновления экрана.
Обычно F = THP * TVP * частота обновления.
Найдите документацию по пиксельным часам, необходимую для различных дисплеев VGA, в прилагаемом RAR.
Сигналы HSYNC и VSYNC генерируются из часов пикселей. Синхронизация сигналов HSYNC и VSYNC зависит от ряда параметров: горизонтальный и вертикальный передний канал, горизонтальный и вертикальный задний канал, горизонтальные и вертикальные пиксели дисплея, ширина и полярность импульсов горизонтальной и вертикальной синхронизации.
Эти параметры стандартизированы для выбранного дисплея VGA. Найдите эти документы в прилагаемом RAR.
Эти параметры являются настраиваемыми параметрами в нашем IP-адресе контроллера VGA.
Шаг 2. Интеграция контроллера VGA с дисплеем VGA
На рисунке показано, как интегрировать контроллер VGA с дисплеем VGA. Для завершения системы вам понадобятся еще два компонента:
- Буфер кадра: память, в которой хранится отображаемый кадр.
- Видео ЦАП: ЦАП, который преобразует цифровые данные RGB и управляет дисплеем VGA с аналоговыми сигналами RGB с соответствующим уровнем напряжения.
Один из самых простых и популярных видео-ЦАП - ADV7125. Это 8-битный ЦАП, который преобразует цифровые слова RGB в аналоговые сигналы 0-0,7 В и управляет дисплеем VGA.
Шаг 3: Дизайн буфера кадра
Это память, в которой «хранится» изображение для отображения. Обычно это RAM или иногда ROM. Мы обсудим, как создать буфер кадра для представления изображения. Буфер кадра передает эту цифровую информацию на видео ЦАП по команде от контроллера VGA.
Сначала мы должны определить необходимую глубину пикселей. От него зависит качество изображения, разнообразие цветов, которые может представлять пиксель. Для 8-битного ЦАП нам необходимо представить компоненты основного цвета пикселя: R, G и B в 8 битах каждый. Значит, пиксель 24-битный.
Каждый пиксель непрерывно хранится в ячейках памяти кадрового буфера.
Предположим, что отображаемое изображение имеет размер 800x600 пикселей.
Следовательно, необходим кадровый буфер 800x600 = 480000 x 24-битная память.
Общий размер памяти 800x600x24 = 1400 кБ примерно.
Для черно-белого изображения 800x600x1 = 60 кБ прибл.
Блочные ОЗУ могут использоваться для представления буфера кадра в ПЛИС Xilinx.
Шаг 4: Примечания
- В зависимости от выбранного ЦАП необходимы дополнительные сигналы на контроллере VGA. Я использовал ADV7125.
- Добавьте задержки цикла с помощью триггеров на VSYNC и HSYNC перед включением дисплея VGA. Это из-за задержек ЦАП и памяти. Сигналы пикселей должны быть синхронизированы с HSYNC и VSYNC. В моем случае это была задержка на 2 цикла.
- Если буфер кадра заданного размера не может быть разработан на FPGA из-за ограничения размера оперативной памяти блока, используйте меньшую память для представления изображения и просто отредактируйте код, чтобы пролистать адрес на границе доступной памяти, а не на границе полного кадра. Это будет повторять одно и то же изображение снова и снова по всему экрану. Другой метод - это масштабирование пикселей, при котором каждый пиксель реплицируется для отображения всего изображения в полноэкранном режиме с меньшим разрешением. Это можно сделать, настроив логику увеличения адреса в коде.
- IP полностью переносится на все ПЛИС и проверяется по времени до 100 МГц на ПЛИС Virtex-4.
Шаг 5: прикрепленные файлы
RAR содержит:
- Код контроллера VGA
- PDF-файлы стандартов VGA.
Рекомендуемые:
Создание простого робота из вещей, которые вы можете найти в своем доме (версия с колесиком): 5 шагов
Создание простого робота из вещей, которые вы можете найти в своем доме (версия с горячим колесом): это руководство покажет вам, как сделать самоуправляемое колесо, работающее от батареек типа «двойное А». Вам нужно будет использовать только те вещи, которые, скорее всего, найдете в вашем доме. Обратите внимание, что этот робот, вероятно, не пойдет точно по прямой, а
2 Raspberry Pis для простого и дешевого удаленного RAID: 19 шагов
2 Raspberry Pis для простого и дешевого удаленного RAID: цель В случае инцидента дома я хочу иметь возможность восстановить свои основные цифровые документы (фотографии, документы, удостоверяющие личность и т. Д.) И, при желании, поделиться ими. Я хочу поделиться этим решением с кем-нибудь еще (с кем-то, кому я доверяю, родителями или другом)
Разработка простого четырехкомпонентного ассоциативного контроллера кэширования на VHDL: 4 шага
Проектирование простого четырехстороннего ассоциативного контроллера кэширования на VHDL. В моем предыдущем руководстве мы увидели, как разработать простой контроллер кэш-памяти с прямым отображением. На этот раз мы идем на шаг впереди. Мы будем проектировать простой четырехсторонний ассоциативный контроллер кеш-памяти. Преимущество ? Меньше промахов, но за счет перфорации
Разработка программируемого контроллера прерываний на VHDL: 4 шага
Дизайн программируемого контроллера прерываний на VHDL: я поражен тем, какие ответы я получаю в этом блоге. Спасибо, ребята, что посетили мой блог и побудили меня поделиться с вами своими знаниями. На этот раз я собираюсь представить дизайн еще одного интересного модуля, который мы видим во всех SOC - Interrupt C
Разработка простого контроллера кеша на VHDL: 4 шага
Проектирование простого контроллера кеша на VHDL: я пишу это руководство, потому что мне было немного сложно получить некоторый эталонный код VHDL для изучения и начала проектирования контроллера кеша. Поэтому я сам разработал контроллер кеш-памяти с нуля и успешно протестировал его на ПЛИС. У меня п