Оглавление:

Разработка простого контроллера VGA на VHDL и Verilog: 5 шагов
Разработка простого контроллера VGA на VHDL и Verilog: 5 шагов

Видео: Разработка простого контроллера VGA на VHDL и Verilog: 5 шагов

Видео: Разработка простого контроллера VGA на VHDL и Verilog: 5 шагов
Видео: Verilog. Интерфейс VGA 2024, Ноябрь
Anonim
Дизайн простого контроллера VGA на VHDL и Verilog
Дизайн простого контроллера VGA на VHDL и Verilog

В этом руководстве мы собираемся разработать простой контроллер 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
Интеграция контроллера 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.

Рекомендуемые: